Built motion from commit 67b9c98b.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 9 Sep 2021 10:52:42 +0000 (12:52 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 9 Sep 2021 10:52:42 +0000 (12:52 +0200)
1254 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/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.94283b9e.js [moved from public/scripts/app.17add46f.js with 52% similarity]
public/styles/app.0b303223.css [moved from public/styles/app.c9d1b314.css with 68% similarity]
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 [deleted file]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [deleted file]
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 [deleted file]
server/api/userVoicePrefix/userVoicePrefix.model.js [deleted file]
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 [deleted file]
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 17583b9..fb458d5 100644 (file)
@@ -2441,6 +2441,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}/messages",
     "title": "Creates new messages",
@@ -2518,24 +2536,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}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "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:",
@@ -10900,15 +10900,15 @@ 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"
   },
   {
-    "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:",
@@ -10918,7 +10918,7 @@ 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"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "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": "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"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "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 POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -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/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "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 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/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "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/accounts/{id}/status -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",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/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/fax/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/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/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/mail/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/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/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/openchannel/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/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,30 +26312,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "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",
+    "url": "/api/whatsapp/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/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26325,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/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/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/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,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/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/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/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26379,7 +26361,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/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31407,42 +31389,6 @@ 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": [
@@ -33365,37 +33311,37 @@ define({ "api": [
     "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"
   },
   {
-    "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"
index 5c8c36e..726d908 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": "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": "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": "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": "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": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "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 POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -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/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "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 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/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "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/accounts/{id}/status -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",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/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/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/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/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/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/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/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/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/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "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",
+    "url": "/api/whatsapp/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/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/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/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/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/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/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/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/mailQueue/index.js",
+    "filename": "server/api/chatQueue/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": "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"
   },
   {
-    "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"
index b71af60..ceb0bb7 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "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-09T10:16:04.134Z",
+    "time": "2021-09-09T10:45:38.707Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 28355eb..cbd9c8c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "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-09T10:16:04.134Z",
+    "time": "2021-09-09T10:45:38.707Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index f27c89c..225e85b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index 5c4734e..53a27fb 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
+    "TITLE": "Ihr 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 Passwortes wurde an Ihre Adresse gesendet.",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
-      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
+      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
     }
   }
 }
index bced170..c090dfa 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Bitte mit Ihrem Konto anmelden",
+    "TITLE": "Melden Sie sich bei Ihrem Konto an",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Anmeldedaten merken",
+    "REMEMBER_ME": "Erinnere Dich an Mich",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "ANMELDEN",
+    "LOG_IN": "LOG IN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Anmeldung mit Google",
-    "WITH_FACEBOOK": "Anmeldung mit Facebook",
+    "WITH_GOOGLE": "Melden Sie sich mit Google",
+    "WITH_FACEBOOK": "Mit Facebook anmelden",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Konto erstellen",
+    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Abbrechen",
-    "SELECT": "Auswählen",
+    "CANCEL": "Stornieren",
+    "SELECT": "Wählen",
     "TELEPHONES": "Telefone"
   }
 }
index e6b577a..e60162b 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Sortieren nach",
+    "ORDER_BY": "Bestellung von",
     "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": "Extrahierte Berichte löschen",
+    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 02f4f10..4bc9896 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzahl von Malen pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
+    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Key",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
-    "NONE": "Nichts",
+    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
+    "NONE": "Keine",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Webseiten-Skript",
+    "WEBSITESCRIPT": "Website-Script",
     "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": "Kunde kann schreiben, bevor Chat akzeptiert wird",
+    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "CLOSINGMESSAGE": "Nachricht schließen",
+    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
+    "TRUEPRIORITY": "Echte Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "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}} ",
+      "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",
       "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": "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",
+      "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",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
-      "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}} ",
+      "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",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "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": "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "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",
+    "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",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Mouse-Over",
+    "MOUSEOVER": "Maus über",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Wählschalter",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Nach Oben",
-    "DOWN": "Nach Unten",
-    "COLLAPSE": "Einklappen",
-    "PROACTIVEACTIONS": "Proaktive Anfragen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "UP": "Bis",
+    "DOWN": "Unten",
+    "COLLAPSE": "Zusammenklappen",
+    "PROACTIVEACTIONS": "Proaktive Aktionen",
+    "DISPOSITIONS": "Dispositionen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Aussehen",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Buttonfarbe",
+    "BUTTONCOLOR": "Tastenfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "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",
+    "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",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
+    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung überspringen",
+    "RATING_SEND": "Bewertung Senden Tasten-Text",
+    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "PROACTIVE": "Proaktive",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbetten",
+    "EMBEDDING": "Einbettung",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
+      "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",
       "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": "Liste für die Zuordnung aus dem Kontaktmanager",
+      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "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",
+      "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",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Repräsentiert die 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": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "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"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Dispositionen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
+    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
+    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
+    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Rundes Design",
-    "SQUARED": "Eckiges Design",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ROUNDED": "Abgerundet",
+    "SQUARED": "Quadratisch",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "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": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alles",
-    "SELECT_STATUS": "Status auswählen",
+    "ALL": "Alle",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Ausgewählte Webseite",
+    "SELECTED_WEBSITE": "Wählen Sie eine Website",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Webseite auswählen",
+    "SELECT_WEBSITE": "Wählen Sie eine Website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "WAITINGTITLE": "Wartetitel",
+    "WAITINGMESSAGE": "Wartende Nachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Pausiert",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "WRITING": "am Schreiben",
+    "WAITING": "Warten",
+    "WRITING": "Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Sprache",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spion",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage schließen",
     "WEBSCRIPT": "Webskript",
-    "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",
+    "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",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Ton",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
-    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
+    "HIDEWHENOFFLINE": "Ausblenden",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot-Name",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "TEAMS_ASSOCIATION": "Teams Verband",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ENABLESENDBUTTON": "Sendetaste aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Key",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Betreff",
+    "SUBJECT": "Gegenstand",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "NOTE": "Notiz",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "NOTE": "Hinweis",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index 3c27f23..da8b00a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
-    "CAMPAIGNID": "Kampagnen-ID",
-    "STATE": "Status",
+    "VOICEQUEUEID": "Sprachwarteschlange ID",
+    "CAMPAIGNID": "Kampagne ID",
+    "STATE": "Zustand",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper Geschichte",
     "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 Einträge verfügbar",
+    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
+      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositionen",
+    "VOICEDISPOSITIONS": "Sprachdispositionen",
+    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine 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": "Alles Löschen",
+    "DELETE_ALL": "Alle Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Beenden",
-    "SUCCESS": "Erfolg",
+    "FINISH": "Fertig",
+    "SUCCESS": "Erfolgreich",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "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",
+    "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",
     "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 Informationen",
-    "NONE": "Nichts",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NONE": "Keine",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "auf Duplikate prüfen",
+    "CHECK_DUPLICATES": "Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV-Datei",
+    "UPLOAD_CSV": "Hochladen von CSV",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Liste auswählen",
-    "SELECT_COMPANY": "Unternehmen auswählen",
-    "SELECT_TAGS": "Tags auswählen",
+    "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",
     "HELP": {
-      "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"
+      "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"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler-Log exportieren",
+    "EXPORT_ERRORS": "Fehler exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei auswählen",
+    "SELECT_FILE": "Datei aussuchen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
-    "SELECT_TAG": "Tag auswählen",
+    "CUSTOMER_JOURNEY": "Kundenreise",
+    "SELECT_TAG": "Wählen Sie Tags aus",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftag",
+    "EXPIREDAY": "Ablauftage",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
-    "RECALLME": "Rückruf anfordern",
+    "VATNUMBER_CF": "Codice Fiscale / VAT",
+    "RECALLME": "Ruf mich zurück",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Klicken für Aktion"
+    "CLICKTOACTION": "Zur Aktion klicken"
   }
 }
index dbfb7c7..df9fabe 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Startseite",
+    "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-Mail",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "OS_NAME": "Name des Betriebssystems",
+    "OS_VERSION": "Version des Betriebssystems",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
+    "RECALLME": "Ruf mich zurück",
+    "DROP_RATE": "Abgebrochene Anrufrate",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "RECORDINGS": "Aufnahmen",
+    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Qualifizieren",
+    "DISPOSE": "Entsorgen",
     "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": "Nichts",
+    "NONE": "Keine",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Speziell",
+    "SPECIAL": "Spezielle",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "RESCHEDULE": "Verschieben",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobilnummer",
+    "MOBILE": "Mobile",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Sprache",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
-    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
+    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
+    "WAITING": "Anrufe in der Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen eingehend",
-    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
-    "ABANDONED": "Abgebrochen",
-    "TOTAL_OFFERED": "Gesamt angeboten",
+    "INBOUND_ANSWERED": "Angenommen",
+    "OUTBOUND_ANSWERED": "Angenommen",
+    "ABANDONED": "Verlassen",
+    "TOTAL_OFFERED": "Insgesamt",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
-    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
-    "ABANDON_RATE": "Abbruchrate",
-    "UNMANAGED": "Nicht bearbeitet",
-    "TOTAL": "Gesamt",
+    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "ABANDON_RATE": "Verlassene Anrufrate",
+    "UNMANAGED": "Nicht verwaltete",
+    "TOTAL": "Insgesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "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"
+      "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"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "WELCOME_TO_MOTION": "Willkommen bei Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Kontaktmanager",
+    "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu Laden",
+    "RELOAD": "Neu laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "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) ",
+    "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 ",
     "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": "Text eingeben und ENTER drücken zum Senden",
+    "OF": "Von",
+    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
-    "DISPOSITIONS": "Qualifizierungen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
-    "ACCEPT": "Annehmen",
+    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
+    "DISPOSITIONS": "Dispositionen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
+    "ACCEPT": "Akzeptieren",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Information",
+    "INFO": "Info",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
+    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
     "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": "Webseite auswählen",
-    "ALL": "Alles",
+    "SELECT_WEBSITE": "Wählen Sie die Webseite",
+    "ALL": "Alle",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Begonnen am",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Anzeigen",
+    "SHOW": "Zeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Benutzer auswählen",
+    "SELECT_USER": "Wählen Sie einen Benutzer",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Beendet am",
+    "END_AT": "Ende 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": "Keine Textbausteine gefunden",
-    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
+    "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_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": "Anrufwarteschlangen filtern",
-    "LOADING_INTERACTION": "Interaktion wird geladen",
+    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
+    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
     "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": "Anrufen",
+    "CALL_NUMBER": "Anruf",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf erfolgreich gespeichert",
-    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CALL_SAVED": "Anruf richtig gespeichert",
+    "CALL_DISPOSED": "Anruf richtig entsorgt",
+    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Agenten auswählen",
+    "SELECT_AGENT": "Wählen Sie den Agenten aus",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
+    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
-    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
+    "ABANDONAT": "Verlassen",
+    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Warteschlange auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
+    "CUSTOMER_JOURNEY": "Kundenreise",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "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",
+    "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",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "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",
+    "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",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Antwortrate",
+    "VOICE_ANSWER_RATE": "Angenommene Rate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive 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_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_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Persönlich",
+    "PRIVATE": "Privat",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
+    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
     "VISIBILITY": "Sichtbarkeit",
-    "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",
+    "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",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "ID",
+    "ID": "Id",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Abbrechen",
-    "DRAFT": "Entwurf speichern",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
+    "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?",
     "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": "Abrechnungsdokumente",
+    "ACCOUNTINGDOC": "Buchhaltung",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle",
+    "ALL_STATUS": "Alle",
+    "ALL_STEP": "Alle",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "SALDO",
+    "BALANCE": "BALANCE",
     "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": "Gesamt",
+    "INVOICETOTAL": "Insgesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Gesamt",
+    "QUOTATIONTOTAL": "Insgesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Gesamt",
+    "QUOTATIONTOTALS": "Insgesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Arbeitsablauf wählen",
+    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
     "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 innerhalb",
-    "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 unter",
+    "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": "Auswählen",
+    "CHOOSE": "Wählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Warteschlange auswählen",
+    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
+    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition 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 Internetverbindung prüfen.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
-    "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen"
+    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
+    "AGENT_PRESENCE": "Agentenpräsenz",
+    "SELECT_TEAM": "Team auswählen",
+    "AVAILABLE": "Erhältlich"
   }
 }
index fd1c6a8..4b2f44e 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "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",
+      "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",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "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}}",
+      "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",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "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": "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_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 Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Signatur",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Port",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "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",
+    "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",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "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",
+      "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",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "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"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GoToIf",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "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": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "WAITING": "Warten",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Mithören",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "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",
+    "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",
     "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": "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",
+    "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",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 97c6fe2..235afae 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 495ea1e..3bd5ad2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index 054564e..f150ff2 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 56d6276..a85d3cb 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 0202268..bf299e5 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index b934012..be3860b 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. 4 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index bbf8e7b..edbcd90 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. 4 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index d5a9a13..c3cb181 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 043d58e..1170227 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index 86fb87a..c4fbe7e 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 212fdff..68e0c53 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 190c600..3fd4f57 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index a3774d1..29c0869 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index aad4d13..154c0b7 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 0ab1946..361f77e 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index 0fbd637..d49bd20 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index 2bda13c..d694357 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index e93ddba..ac5383c 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 534d51d..39efe9f 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 4085544..171327a 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 0c17adc..4646459 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index ac2f84c..18246b8 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 98dc201..2956f0d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index d002733..0ef1225 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "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",
+      "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",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "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}}",
+      "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",
       "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 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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_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": "Wert muss kleiner oder gleich sein als",
+      "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_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": "Wert muss kleiner oder gleich sein als",
+      "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_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenteb bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
-    "PENALTY": "Verzögerung",
+    "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",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "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.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "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",
+      "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",
       "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": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "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"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "INFO": "Information",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "VOICE": "Anrufe",
+    "WAITING": "Warten",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Mithören",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Weiterleitung Agent",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "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",
+    "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",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Botname",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index ee88755..b5e8a7a 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller 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": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent 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": "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",
+      "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",
       "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 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern",
+    "CHANGE_AVATAR": "Avatar ändern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Intern",
-    "TRANSPORT": "Transport",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
     "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 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",
+      "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",
       "SIPPORT": "Standardeinstellung: 5160",
-      "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",
+      "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",
       "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 Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "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)",
+      "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)",
       "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 Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Agent",
-    "CHANGEPASSWORD_USER": "Nutzer",
-    "CHANGEPASSWORD_TELEPHONE": "Telefon",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort ändern",
+    "CHANGEPASSWORD_USER": "Passwort ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Listen-In",
+    "CHANSPY": "ChanSpy",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Kapazität Chats",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMSW",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Auto-Antwort",
+    "AUTOANSWER": "\"Autom. Antwort\"",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "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",
+    "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",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Ablaufdatum",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
+    "PENALTY": "Strafe",
     "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": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefonnummern",
-    "CALLERID": "Anrufer-ID",
-    "ENABLERECORDING": "Aufzeichnung aktiv",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "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": "In Warteschlange beitreten",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "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",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenanruf",
+    "CALLGROUP": "Gruppenruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "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",
+    "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",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "WebControl anzeigen",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Nicht stören",
-    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
-    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "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",
+    "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",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "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 Fax-Warteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "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 Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "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": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-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": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "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": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Unterstützt Video",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "Erneut generieren",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent 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": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen"
   }
 }
index d62768d..6207bf0 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "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",
+      "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",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "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",
+      "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",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "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"
+      "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"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "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 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.",
+      "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.",
       "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.",
-      "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.",
+      "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.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "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.",
+      "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).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "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)",
+      "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)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "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": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "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 verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "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."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anrufer-ID",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "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",
+    "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",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CANNEDANSWER": "Testvorlage löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Abschließen",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Weitere Felder",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "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",
+    "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",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "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": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Hell",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen Sie",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
-    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
-    "CRON": "CrOn",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "Um",
+    "AT": "An",
     "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": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Voice-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 Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "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",
+    "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",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorherigen Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "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"
+    "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"
   }
 }
index 254759d..91d5165 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
-    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 3f3b98d..5fe900e 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 ea7f1fe..67570a2 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 bd7bae8..c698d09 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
+    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Anruf-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "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",
+    "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",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
+    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
     "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": "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",
+      "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",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
+      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Bitte erneut versuchen",
-    "WRAPUPTIME": "Nacharbeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
-    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
+    "RETRY": "Versuchen Sie es erneut",
+    "WRAPUPTIME": "-Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
+    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
     "HELP": {
-      "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. ",
+      "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)",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
+      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
       "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, 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"
+      "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."
     },
-    "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",
+    "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,",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Verzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring in Verwendung",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout starten",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Interface-Variablen",
-    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
-    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
+    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
+    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
+    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
+    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern",
-    "RECORDING": "Aufzeichnung",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Die Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Route löschen",
+    "DELETE_INTERNALROUTE": "Interne Routen löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "VOICEMAILS": "Von Voicemails",
+    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Anhängen",
+    "ATTACH": "Befestigen Sie",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "Max. Sekunden",
+    "MAXSECONDS": "In Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "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",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Fügen Sie ChanSpy",
+    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
+    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
+    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Wählen",
+    "DIAL": "Kurzwahl",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interner Anruf",
-    "EXTERNALDIAL": "Externer Anruf",
-    "RINGGROUP": "Rufgruppe",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring-Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Set",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
+    "CUSTOM": "Benutzerdefinierte",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "App bearbeiten.",
+    "EDIT_APP": "Anwendung bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "App löschen",
+    "DELETE_APP": "Anwendung löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Nebenstelle",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ablehnungsgrund",
-    "OUTBOUNDDIAL": "Extern wählen",
-    "CALLER_ID": "Anrufer-ID",
+    "HANGUP_CAUSE": "Ursache auflegen",
+    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
+    "CALLER_ID": "Die Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "Chan Spies",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
-    "DELETE_MOHSOUND": "Musik bei Halten löschen",
+    "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",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "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_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_VOICEMAIL": "Neue Voicemail",
-    "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",
+    "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.",
     "EDIT_AGI": "AGI bearbeiten",
-    "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",
+    "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",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Eingegangen am",
+    "RECEIVED_AT": "Empfangen am",
     "YES": "Ja",
-    "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)",
+    "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)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
-    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Nach Oben",
-    "INFO": "Information",
-    "TRUNKS": "Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Wartezustand",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "WAITING": "Warten",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht bearbeitet",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "AVG_DURATION": "Durchschnittliche Dauer",
-    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
-    "SOURCE": "Ursprung",
+    "UNMANAGED": "Nicht verwaltete",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard PAUSE",
     "PAUSE": "Pause",
-    "UNPAUSE": "Fortsetzen",
-    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
-    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
-    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
+    "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",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
-    "NEW_MOHSOUND": "Neue Wartemusik",
-    "DOWNLOAD_MESSAGE": "Herunterladen",
+    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
+    "NEW_MOHSOUND": "Neue Musik auf Halten",
+    "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Gesamt",
+    "TOTAL_OFFERED": "Insgesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "ALL_TEAMS": "Alle Mannschaften",
     "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": "Wählverhalten ausgehend bearbeiten",
-    "ACCOUNTNAME": "Kontoname",
+    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
+    "ACCOUNTNAME": "Konto Name",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "DISPOSITION": "Qualifizierung",
+    "OF": "Von",
+    "DISPOSITION": "Disposition",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Teilweise Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "ACTIVE": "Aktiv",
-    "CLEAR": "Leeren",
+    "CLEAR": "klar",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Startdatum",
-    "ENDEDAT": "Enddatum",
-    "TAG": "Tag",
-    "DETAILS": "Details",
+    "STARTEDAT": "Fing an bei",
+    "ENDEDAT": "Beendet bei",
+    "TAG": "Etikett",
+    "DETAILS": "Einzelheiten",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet am",
-    "NOTE": "Notiz",
+    "ANSWEREDAT": "Beantwortet bei",
+    "NOTE": "Hinweis",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Startdatum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "SELECT_DATE": "Wählen Sie Startdatum",
+    "SELECT_TYPE": "Art auswählen",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
+    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
+    "VOICEPREFIXES": "Vorgegebene Präfixe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehend",
+    "INBOUND": "Eingehende",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "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",
+    "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",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
-    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
-    "SENTIMENT": "Sentiment",
-    "SENTIMENTANALYSIS": "Sentiment-Analyse",
+    "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",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
+    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
-    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "ALIAS": "Alias"
   }
 }
index a06798a..0e070f7 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 b29a2d3..90b1016 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 b52a7e9..bd75c5e 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 4c8f69b..64fd7ba 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
-    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index 664bc29..f1874d1 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
-    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index 51099a3..ca6418d 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 61c740b..2da30a3 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
-    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 905e9aa..2fbd46a 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
-    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index eef7ebe..1fecba7 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 527d7c5..3b739d4 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 d2accf3..c7d5d57 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
-    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index 9e4a917..bc9ce6e 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
-    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 65172e6..1a07f3d 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 499925d..3e683d8 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 a1ad47d..103a753 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 f979e88..729522a 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 9974a58..3988cbe 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 95abd15..5113530 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 3c55740..a46bf2f 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 022d0b1..672f53d 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
-    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 6a741b4..83c6c54 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 51a4ca4..6dd9d26 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 3abaa1b..2415dcc 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
-    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index c78fea9..294b15a 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
-    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 6f42238..03bcbeb 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول",
+    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index e361766..07beea8 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen",
+    "LOGGED_IN": "Přihlášen (připojeno SIP)",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 00e305d..67fc111 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind",
+    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index f01cf37..80b51fd 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "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_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_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": "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",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "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": "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",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "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",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Liste für die Zuordnung von Kontakten",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "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, welche bei einer neuen Interaktion gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-ID",
+    "ACCOUNTSID": "Konto-SID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschrittene",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTTRANSFER": "Transfer Agent",
-    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
-    "AGENT_TIMEOUT": "Timeout Agent",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
+    "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",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Erstellt am",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "CREATED_AT": "Hergestellt in",
+    "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": "Textvorlage löschen",
-    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "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",
+    "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",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
-    "EDIT_GOTOP": "GoTop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
+    "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": "Textvorlage bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
-    "FALSEPRIORITY": "Priorität falsch",
-    "GENERAL": "Allgemein",
+    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GENERAL": "Allgemeines",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
-    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
-    "ID": "ID",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
+    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
+    "ID": "Ich würde",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "LexRegion",
-    "LIST": "Liste",
-    "LOGGED_IN": "Eingeloggt",
+    "LEXREGION": "Region",
+    "LIST": "Aufführen",
+    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy",
+    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Anmerkung",
+    "NOTE": "Hinweis",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klang",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "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_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_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Transfer an Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL für Erhalt",
+    "RECEIVEURL": "URL erhalten",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Remote",
+    "REMOTE": "Fernbedienung",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "Speichern",
+    "SAVE": "sparen",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Wählen Sie Alle",
+    "SELECT_NONE": "Nichts ausgewählt",
     "SEND": "Senden",
-    "SETTINGS": "Einstellungen",
-    "SPYINTERACTION": "Mitlesen",
-    "STARTEDAT": "Startdatum",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "SETTINGS": "die Einstellungen",
+    "SPYINTERACTION": "Spionage-Interaktion",
+    "STARTEDAT": "Fing an bei",
+    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
+    "TAG": "Etikett",
+    "TAGS": "Stichworte",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Mannschaftsverband",
     "TEXT": "Text",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Auszeit",
     "TIMER": "Timer",
-    "TIMES": "Zeiten",
-    "TO": "an",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "TRANSFER": "Weiterleiten",
+    "TIMES": "Mal",
+    "TO": "Zu",
+    "TOKEN": "Zeichen",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TRANSFER": "Transfer",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Typ",
+    "TYPE": "Art",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
-    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 8ac07bf..0920067 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In",
+    "LOGGED_IN": "Logged In (SIP Connected)",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index a7cb714..03aafb4 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index c40e5bd..5ff75f9 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud",
+    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 76a3444..2bfad68 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم",
+    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 52f4f20..647eabf 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut",
+    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index 919bb35..b2e331a 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté",
+    "LOGGED_IN": "Connecté (SIP connecté)",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index a6c765d..00d0fa4 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר",
+    "LOGGED_IN": "מחובר (SIP מחובר)",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 0550a1a..819f531 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन",
+    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index 246085c..b2e703c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk",
+    "LOGGED_IN": "Masuk (SIP Terhubung)",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index d23db62..0350e8d 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み",
+    "LOGGED_IN": "ログイン済み(SIP接続済み)",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index 53a3344..d6c34e1 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨",
+    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index a074057..282dd81 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs",
+    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index fb7beca..2389947 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies",
+    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 5eed559..85a42ac 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd",
+    "LOGGED_IN": "Ingelogd (SIP verbonden)",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index efdafa2..b8c8675 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn",
+    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index 510b8e5..da5dad6 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano",
+    "LOGGED_IN": "Zalogowano (połączenie SIP)",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 5131899..87a083a 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован",
+    "LOGGED_IN": "Авторизован (SIP подключен)",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index ae13a80..f4f2b7e 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad",
+    "LOGGED_IN": "Inloggad (SIP ansluten)",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index da1b4f9..e867462 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı",
+    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index 4804111..b81f80a 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录",
+    "LOGGED_IN": "已登录(已连接SIP)",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index 6d85da7..cb5a2ee 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄",
+    "LOGGED_IN": "已登錄(已連接SIP)",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index fd8ccd9..3162f7a 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Server Anwendung",
-    "USER_STATS": "Benutzer Statistiken",
-    "EVENTS": "Ereignisse",
-    "NOTES": "Notizen",
-    "QUICK_SETTINGS": "Schnelleinstellungen",
+    "APP_SERVERS": "Anwendungsserver",
+    "USER_STATS": "Benutzer Stats",
+    "EVENTS": "Veranstaltungen",
+    "NOTES": "Hinweise",
+    "QUICK_SETTINGS": "Schnelle Einstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Neuste",
+    "RETRO_THRUSTERS": "Retro Triebwerke",
+    "RECENT": "Die jüngsten",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
+    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neuer Token",
-    "OLD_TOKEN": "Alter Token",
+    "NEW_TOKEN": "Neue Token",
+    "OLD_TOKEN": "Alte Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "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",
+    "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",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
-    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
-    "SAVE": "Speichern",
-    "INFO": "Information",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
+    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
+    "SAVE": "sparen",
+    "INFO": "Info",
     "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. 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",
+    "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!",
     "WARNING": "Warnung"
   }
 }
index 6eb58fc..1d7248b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Passwort zurücksetzen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
-    "PASSWORD": "Passwort",
-    "PASSWORD_CONFIRM": "Passwort bestätigen",
-    "UPDATE_PASSWORD": "Passwort zurücksetzen",
+    "TITLE": "Ihr Kennwort zurücksetzen",
+    "EMAIL_ADRESS": "E-mail Adresse",
+    "PASSWORD": "Kennwort",
+    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
+    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "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",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
-      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "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.",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index b6abdf2..a399ee6 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation umschalten",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
+    "TOGGLE_NAVIGATION": "Navigation wechseln",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Nutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
+    "USER_SETTINGS": "Benutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnisch",
+    "FINNISH": "Finnische",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
+    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Fortsetzen",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
-    "LATVIAN": "Lettisch",
+    "RESUME": "Lebenslauf",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
+    "LATVIAN": "Lettische",
     "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 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
-      "PASSWORD_OLDPASSWORD_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"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Lizenz ungültig",
+    "INVALID_LICENSE": "Ungültige Lizenz",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Anforderungen",
+    "REQUIREMENTS": "Bedarf",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Registriert",
+    "REGISTERED": "Eingetragen",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Warmer Transfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Lautsprecher",
-    "RINGING": "Klingeln",
+    "SPEAKER": "Redner",
+    "RINGING": "Klingelton",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienste",
+    "SERVICES": "Dienstleistungen",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingeln auf Gerät",
-    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
-    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
+    "RINGINGDEVICE": "Klingelgerät",
+    "SPEAKERDEVICE": "Lautsprechergerät",
+    "MICROPHONEDEVICE": "Mikrofon Gerät",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "die Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "Estnisch",
+    "ESTONIAN": "estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianisch",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
-    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
+    "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).",
     "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 ca49c57..150cc35 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.c9d1b314.css">
+  <link rel="stylesheet" href="styles/app.0b303223.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.17add46f.js"></script>
+  <script src="scripts/app.94283b9e.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.17add46f.js
rename to public/scripts/app.94283b9e.js
index 42cfd54..089f979 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){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,_.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.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().$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/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().$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().$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/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().$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().$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/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":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/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,_.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=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,_.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,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,_.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&&"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,_.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&&"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,_.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&&"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(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,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,_.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" 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">\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              \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 == \'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" 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 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
+!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","$window",function(e,n,t,a){var i=t.getCurrentUser();return a.localStorage.setItem("motion.user:"+i.id,JSON.stringify({authenticationType:"google"})),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,s,r,l,d){var c;return{getToken:e,getCurrentUser:m,getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return n(e)})},hasModulePermissions:function(i){return o(function(a,n){h()?a(!0):l.userProfileSection.get({userProfileId:c.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={};h()?(s.forEach(function(e){i[e]=!0}),a(i)):l.userProfileSection.get({userProfileId:c.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!!c&&c.role===e},hasPermission:n,hasResourcePermission:function(e,s){return o(function(a,i){return l.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=d.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():l.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 A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!h())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:v,isAdmin:h,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===c.role},isUser:f,login:function(e){return o(function(n,t){l.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),l.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(v()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(r.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 v()&&0!==c.showWebBar?u(e):h()||f()?p(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(g(),e()):o.resolve().then(function(){return v()&&0!==c.showWebBar?o(function(e,n){l.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):h()||f()?p(!1):void 0}).then(function(){g(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return h()?{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:u,reloadPermissions:A,removeCookies:g,retrieveUser:function(){return o(function(n,t){l.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){var e=m(),n=s.localStorage.getItem("motion.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&E("SSO_LOGIN");return"/api/auth/"+e}};function e(){return i.get("motion.token")}function m(){return c}function u(e){return o(function(n,t){l.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};l.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){i.remove("motion.token"),c&&(s.localStorage.removeItem("motion.user:"+c.id),c=null)}function v(){return"agent"===c.role}function h(){return"admin"===c.role}function f(){return"user"===c.role}function n(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),l.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 A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){var n=m(),t={authenticationType:e};s.localStorage.setItem("motion.user:"+n.id,JSON.stringify(t))}}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.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().$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/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().$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().$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/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().$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().$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/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":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/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").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,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,_.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&&"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,_.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&&"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,_.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&&"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(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" 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" 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/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" 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="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" 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.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" 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="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" 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="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 == \'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="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" 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
similarity index 68%
rename from public/styles/app.c9d1b314.css
rename to public/styles/app.0b303223.css
index 1709943..9363192 100644 (file)
@@ -1 +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}@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:1537px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:500px!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: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{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:1537px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:500px!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:1537px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:500px!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:1537px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:500px!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:1537px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:500px!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:1537px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:500px!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:1537px) and (max-width:1919px){#voice-internal-route .actionAppData{width:500px!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:1537px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:500px!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:1537px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:500px!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
+[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{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}#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 dd25f4a..eb85693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6931=['Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','exports','VIRTUAL','getDataValue','action','STRING','contactManager','motionbar','jscripty','urlForward','browser','bot'];(function(_0x41b65e,_0x125a07){var _0x5dba01=function(_0x5e673f){while(--_0x5e673f){_0x41b65e['push'](_0x41b65e['shift']());}};_0x5dba01(++_0x125a07);}(_0x6931,0x1a9));var _0x1693=function(_0x4ab7fa,_0x4a7162){_0x4ab7fa=_0x4ab7fa-0x0;var _0x2087a4=_0x6931[_0x4ab7fa];return _0x2087a4;};'use strict';var Sequelize=require(_0x1693('0x0'));module[_0x1693('0x1')]={'name':{'type':Sequelize[_0x1693('0x2')],'get':function(_0x773026){return this[_0x1693('0x3')](_0x1693('0x4'));}},'action':{'type':Sequelize[_0x1693('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0x1693('0x6'),'integration',_0x1693('0x7'),_0x1693('0x8'),_0x1693('0x9'),_0x1693('0xa'),_0x1693('0xb'),'script']],'msg':_0x1693('0xc')}},'comment':_0x1693('0xc')},'data1':{'type':Sequelize[_0x1693('0x5')](0x1000),'comment':'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)]'},'data2':{'type':Sequelize[_0x1693('0x5')](0x1000),'comment':_0x1693('0xd')},'data3':{'type':Sequelize[_0x1693('0x5')](0x1000),'comment':_0x1693('0xe')},'data4':{'type':Sequelize[_0x1693('0x5')](0x1000),'comments':_0x1693('0xf')},'data5':{'type':Sequelize[_0x1693('0x5')](0x1000),'comments':_0x1693('0x10')},'data6':{'type':Sequelize[_0x1693('0x5')],'comments':_0x1693('0x11')},'data7':{'type':Sequelize[_0x1693('0x12')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x7c09=['contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','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)]'];(function(_0x349f6d,_0x5bd6c5){var _0x1c7582=function(_0x128a92){while(--_0x128a92){_0x349f6d['push'](_0x349f6d['shift']());}};_0x1c7582(++_0x5bd6c5);}(_0x7c09,0x102));var _0x97c0=function(_0x5e0dbb,_0x3442c3){_0x5e0dbb=_0x5e0dbb-0x0;var _0x3396f4=_0x7c09[_0x5e0dbb];return _0x3396f4;};'use strict';var Sequelize=require('sequelize');module[_0x97c0('0x0')]={'name':{'type':Sequelize[_0x97c0('0x1')],'get':function(_0x53ad71){return this[_0x97c0('0x2')](_0x97c0('0x3'));}},'action':{'type':Sequelize[_0x97c0('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x97c0('0x5'),_0x97c0('0x6'),_0x97c0('0x7'),_0x97c0('0x8'),'urlForward','browser','bot',_0x97c0('0x9')]],'msg':_0x97c0('0xa')}},'comment':_0x97c0('0xa')},'data1':{'type':Sequelize[_0x97c0('0x4')](0x1000),'comment':_0x97c0('0xb')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x97c0('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x97c0('0xd')},'data4':{'type':Sequelize[_0x97c0('0x4')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x97c0('0xe')},'data6':{'type':Sequelize[_0x97c0('0x4')],'comments':_0x97c0('0xf')},'data7':{'type':Sequelize[_0x97c0('0x10')],'comments':_0x97c0('0x11')}};
\ No newline at end of file
index 8f6d4da..1e73f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d2=['params','catch','Action','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','body','find'];(function(_0x537e41,_0x765146){var _0x3e8c67=function(_0x4fd137){while(--_0x4fd137){_0x537e41['push'](_0x537e41['shift']());}};_0x3e8c67(++_0x765146);}(_0x76d2,0x1b3));var _0x276d=function(_0x7ddf5a,_0x3e0253){_0x7ddf5a=_0x7ddf5a-0x0;var _0x2c8abd=_0x76d2[_0x7ddf5a];return _0x2c8abd;};'use strict';var emlformat=require(_0x276d('0x0'));var rimraf=require(_0x276d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x276d('0x2'));var rp=require('request-promise');var moment=require(_0x276d('0x3'));var BPromise=require(_0x276d('0x4'));var Mustache=require(_0x276d('0x5'));var util=require('util');var path=require(_0x276d('0x6'));var sox=require('sox');var csv=require(_0x276d('0x7'));var ejs=require(_0x276d('0x8'));var fs=require('fs');var fs_extra=require(_0x276d('0x9'));var _=require(_0x276d('0xa'));var squel=require(_0x276d('0xb'));var crypto=require(_0x276d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x276d('0xd'));var toCsv=require('to-csv');var querystring=require(_0x276d('0xe'));var Papa=require(_0x276d('0xf'));var Redis=require(_0x276d('0x10'));var authService=require(_0x276d('0x11'));var qs=require(_0x276d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x276d('0x13'));var logger=require(_0x276d('0x14'))(_0x276d('0x15'));var utils=require(_0x276d('0x16'));var config=require(_0x276d('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x137514,_0x1269d6){_0x1269d6=_0x1269d6||0xcc;return function(_0x13e3df){if(_0x13e3df){return _0x137514[_0x276d('0x18')](_0x1269d6);}return _0x137514[_0x276d('0x19')](_0x1269d6)[_0x276d('0x1a')]();};}function respondWithResult(_0x30c754,_0x3bdfaf){_0x3bdfaf=_0x3bdfaf||0xc8;return function(_0x2802db){if(_0x2802db){return _0x30c754[_0x276d('0x19')](_0x3bdfaf)['json'](_0x2802db);}};}function respondWithFilteredResult(_0x115f62,_0x8c5098){return function(_0x5924a0){if(_0x5924a0){var _0x5207a7=typeof _0x8c5098['offset']===_0x276d('0x1b')&&typeof _0x8c5098['limit']==='undefined';var _0x59032b=_0x5924a0[_0x276d('0x1c')];var _0x5a1afc=_0x5207a7?0x0:_0x8c5098[_0x276d('0x1d')];var _0x28b0ee=_0x5207a7?_0x5924a0[_0x276d('0x1c')]:_0x8c5098[_0x276d('0x1d')]+_0x8c5098[_0x276d('0x1e')];var _0x231745;if(_0x28b0ee>=_0x59032b){_0x28b0ee=_0x59032b;_0x231745=0xc8;}else{_0x231745=0xce;}_0x115f62[_0x276d('0x19')](_0x231745);return _0x115f62[_0x276d('0x1f')](_0x276d('0x20'),_0x5a1afc+'-'+_0x28b0ee+'/'+_0x59032b)[_0x276d('0x21')](_0x5924a0);}return null;};}function patchUpdates(_0xe20143){return function(_0xfdc166){try{jsonpatch[_0x276d('0x22')](_0xfdc166,_0xe20143,!![]);}catch(_0x4d0504){return BPromise[_0x276d('0x23')](_0x4d0504);}return _0xfdc166[_0x276d('0x24')]();};}function saveUpdates(_0x273cf7,_0x2da0ed){return function(_0x15786d){if(_0x15786d){return _0x15786d[_0x276d('0x25')](_0x273cf7)[_0x276d('0x26')](function(_0x30fa1b){return _0x30fa1b;});}return null;};}function removeEntity(_0x1a0863,_0x51dbb1){return function(_0x30d354){if(_0x30d354){return _0x30d354[_0x276d('0x27')]()[_0x276d('0x26')](function(){_0x1a0863[_0x276d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x577173,_0xc327f){return function(_0x579b21){if(!_0x579b21){_0x577173[_0x276d('0x18')](0x194);}return _0x579b21;};}function handleError(_0x71c0fb,_0x3eff40){_0x3eff40=_0x3eff40||0x1f4;return function(_0x3e55d8){logger[_0x276d('0x28')](_0x3e55d8['stack']);if(_0x3e55d8['name']){delete _0x3e55d8[_0x276d('0x29')];}_0x71c0fb['status'](_0x3eff40)[_0x276d('0x2a')](_0x3e55d8);};}exports[_0x276d('0x25')]=function(_0x26cb1e,_0x423e3){if(_0x26cb1e[_0x276d('0x2b')]['id']){delete _0x26cb1e['body']['id'];}return db['Action'][_0x276d('0x2c')]({'where':{'id':_0x26cb1e[_0x276d('0x2d')]['id']}})[_0x276d('0x26')](handleEntityNotFound(_0x423e3,null))['then'](saveUpdates(_0x26cb1e[_0x276d('0x2b')],null))['then'](respondWithResult(_0x423e3,null))[_0x276d('0x2e')](handleError(_0x423e3,null));};exports[_0x276d('0x27')]=function(_0x3368ee,_0x55aade){return db[_0x276d('0x2f')][_0x276d('0x2c')]({'where':{'id':_0x3368ee['params']['id']}})[_0x276d('0x26')](handleEntityNotFound(_0x55aade,null))['then'](removeEntity(_0x55aade,null))[_0x276d('0x2e')](handleError(_0x55aade,null));};
\ No newline at end of file
+var _0x5893=['apply','reject','save','then','end','stack','name','send','body','Action','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','papaparse','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','set'];(function(_0x17b680,_0x46e290){var _0x5caa7c=function(_0x274ee3){while(--_0x274ee3){_0x17b680['push'](_0x17b680['shift']());}};_0x5caa7c(++_0x46e290);}(_0x5893,0x1e5));var _0x3589=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x5893[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0x3589('0x0'));var rimraf=require(_0x3589('0x1'));var zipdir=require(_0x3589('0x2'));var jsonpatch=require(_0x3589('0x3'));var rp=require(_0x3589('0x4'));var moment=require(_0x3589('0x5'));var BPromise=require(_0x3589('0x6'));var Mustache=require(_0x3589('0x7'));var util=require('util');var path=require(_0x3589('0x8'));var sox=require(_0x3589('0x9'));var csv=require(_0x3589('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3589('0xb'));var squel=require(_0x3589('0xc'));var crypto=require('crypto');var jsforce=require(_0x3589('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3589('0xe'));var Redis=require(_0x3589('0xf'));var authService=require(_0x3589('0x10'));var qs=require(_0x3589('0x11'));var as=require(_0x3589('0x12'));var hardwareService=require(_0x3589('0x13'));var logger=require(_0x3589('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x3589('0x15'));var licenseUtil=require(_0x3589('0x16'));var db=require(_0x3589('0x17'))['db'];function respondWithStatusCode(_0x248a83,_0x5db655){_0x5db655=_0x5db655||0xcc;return function(_0x25c7d3){if(_0x25c7d3){return _0x248a83[_0x3589('0x18')](_0x5db655);}return _0x248a83[_0x3589('0x19')](_0x5db655)['end']();};}function respondWithResult(_0x3e3348,_0x31acf8){_0x31acf8=_0x31acf8||0xc8;return function(_0x22d43d){if(_0x22d43d){return _0x3e3348[_0x3589('0x19')](_0x31acf8)[_0x3589('0x1a')](_0x22d43d);}};}function respondWithFilteredResult(_0x271d7a,_0xbcc7e1){return function(_0x3bddc9){if(_0x3bddc9){var _0xbe818b=typeof _0xbcc7e1[_0x3589('0x1b')]===_0x3589('0x1c')&&typeof _0xbcc7e1[_0x3589('0x1d')]===_0x3589('0x1c');var _0x1b3a5d=_0x3bddc9['count'];var _0x1d7b56=_0xbe818b?0x0:_0xbcc7e1[_0x3589('0x1b')];var _0x55da7a=_0xbe818b?_0x3bddc9['count']:_0xbcc7e1[_0x3589('0x1b')]+_0xbcc7e1[_0x3589('0x1d')];var _0xb70888;if(_0x55da7a>=_0x1b3a5d){_0x55da7a=_0x1b3a5d;_0xb70888=0xc8;}else{_0xb70888=0xce;}_0x271d7a['status'](_0xb70888);return _0x271d7a[_0x3589('0x1e')]('Content-Range',_0x1d7b56+'-'+_0x55da7a+'/'+_0x1b3a5d)['json'](_0x3bddc9);}return null;};}function patchUpdates(_0x3dcba5){return function(_0x22719e){try{jsonpatch[_0x3589('0x1f')](_0x22719e,_0x3dcba5,!![]);}catch(_0x579ab0){return BPromise[_0x3589('0x20')](_0x579ab0);}return _0x22719e[_0x3589('0x21')]();};}function saveUpdates(_0x5b975a,_0x15fac5){return function(_0x3c55bc){if(_0x3c55bc){return _0x3c55bc['update'](_0x5b975a)[_0x3589('0x22')](function(_0x381741){return _0x381741;});}return null;};}function removeEntity(_0x45cf11,_0x36cb1d){return function(_0x15bc3e){if(_0x15bc3e){return _0x15bc3e['destroy']()['then'](function(){_0x45cf11[_0x3589('0x19')](0xcc)[_0x3589('0x23')]();});}};}function handleEntityNotFound(_0xd472f,_0x33cbbc){return function(_0x678071){if(!_0x678071){_0xd472f[_0x3589('0x18')](0x194);}return _0x678071;};}function handleError(_0x4f2fb7,_0x1656e8){_0x1656e8=_0x1656e8||0x1f4;return function(_0x3b5575){logger['error'](_0x3b5575[_0x3589('0x24')]);if(_0x3b5575[_0x3589('0x25')]){delete _0x3b5575['name'];}_0x4f2fb7[_0x3589('0x19')](_0x1656e8)[_0x3589('0x26')](_0x3b5575);};}exports['update']=function(_0x43f0e6,_0x56b294){if(_0x43f0e6[_0x3589('0x27')]['id']){delete _0x43f0e6['body']['id'];}return db[_0x3589('0x28')]['find']({'where':{'id':_0x43f0e6[_0x3589('0x29')]['id']}})[_0x3589('0x22')](handleEntityNotFound(_0x56b294,null))['then'](saveUpdates(_0x43f0e6[_0x3589('0x27')],null))[_0x3589('0x22')](respondWithResult(_0x56b294,null))[_0x3589('0x2a')](handleError(_0x56b294,null));};exports['destroy']=function(_0x210855,_0x4133c7){return db[_0x3589('0x28')]['find']({'where':{'id':_0x210855[_0x3589('0x29')]['id']}})[_0x3589('0x22')](handleEntityNotFound(_0x4133c7,null))['then'](removeEntity(_0x4133c7,null))[_0x3589('0x2a')](handleError(_0x4133c7,null));};
\ No newline at end of file
index 3030e8d..c09d636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62cb=['request-promise','path','rimraf','exports','define','tools_actions','../../config/logger','api','moment','bluebird'];(function(_0x208d39,_0x5de94f){var _0x3f96cb=function(_0x23d510){while(--_0x23d510){_0x208d39['push'](_0x208d39['shift']());}};_0x3f96cb(++_0x5de94f);}(_0x62cb,0x196));var _0xb62c=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x62cb[_0x1da527];return _0x40fc7c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb62c('0x0'))(_0xb62c('0x1'));var moment=require(_0xb62c('0x2'));var BPromise=require(_0xb62c('0x3'));var rp=require(_0xb62c('0x4'));var fs=require('fs');var path=require(_0xb62c('0x5'));var rimraf=require(_0xb62c('0x6'));var config=require('../../config/environment');var attributes=require('./action.attributes');module[_0xb62c('0x7')]=function(_0x2601e,_0x42718c){return _0x2601e[_0xb62c('0x8')]('Action',attributes,{'tableName':_0xb62c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3fb=['./action.attributes','exports','define','Action','tools_actions','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3be63d,_0x457353){var _0x5151ed=function(_0x5b78f9){while(--_0x5b78f9){_0x3be63d['push'](_0x3be63d['shift']());}};_0x5151ed(++_0x457353);}(_0xb3fb,0x6d));var _0xbb3f=function(_0x483e4a,_0x32aa45){_0x483e4a=_0x483e4a-0x0;var _0x31fba5=_0xb3fb[_0x483e4a];return _0x31fba5;};'use strict';var _=require(_0xbb3f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xbb3f('0x1'));var moment=require(_0xbb3f('0x2'));var BPromise=require(_0xbb3f('0x3'));var rp=require(_0xbb3f('0x4'));var fs=require('fs');var path=require(_0xbb3f('0x5'));var rimraf=require(_0xbb3f('0x6'));var config=require(_0xbb3f('0x7'));var attributes=require(_0xbb3f('0x8'));module[_0xbb3f('0x9')]=function(_0x209adc,_0x591224){return _0x209adc[_0xbb3f('0xa')](_0xbb3f('0xb'),attributes,{'tableName':_0xbb3f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3eaed23..120dde0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','Action,\x20%s,\x20%s','Action,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x1cf4f8,_0x1c169b){var _0x5b091e=function(_0x2f0ba){while(--_0x2f0ba){_0x1cf4f8['push'](_0x1cf4f8['shift']());}};_0x5b091e(++_0x1c169b);}(_0xe14b,0x93));var _0xbe14=function(_0x559376,_0x5d0e5e){_0x559376=_0x559376-0x0;var _0x56fc65=_0xe14b[_0x559376];return _0x56fc65;};'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 _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x1cb9,0x14e));var _0x91cb=function(_0x12b94f,_0x3f5f92){_0x12b94f=_0x12b94f-0x0;var _0x188c30=_0x1cb9[_0x12b94f];return _0x188c30;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Action,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
index f08b1a7..8577b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ac=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07ac,0x1c9));var _0xc07a=function(_0x214a25,_0x15071d){_0x214a25=_0x214a25-0x0;var _0x405988=_0x07ac[_0x214a25];return _0x405988;};'use strict';var multer=require(_0xc07a('0x0'));var util=require(_0xc07a('0x1'));var path=require(_0xc07a('0x2'));var timeout=require(_0xc07a('0x3'));var express=require('express');var router=express[_0xc07a('0x4')]();var fs_extra=require(_0xc07a('0x5'));var auth=require(_0xc07a('0x6'));var interaction=require(_0xc07a('0x7'));var config=require(_0xc07a('0x8'));var controller=require(_0xc07a('0x9'));router['put']('/:id',auth[_0xc07a('0xa')](),controller['update']);router['delete']('/:id',auth[_0xc07a('0xa')](),controller['destroy']);module[_0xc07a('0xb')]=router;
\ No newline at end of file
+var _0x855b=['isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','put'];(function(_0x3130de,_0x53fc4e){var _0x511aef=function(_0x45900b){while(--_0x45900b){_0x3130de['push'](_0x3130de['shift']());}};_0x511aef(++_0x53fc4e);}(_0x855b,0x1e6));var _0xb855=function(_0x214278,_0x5bde35){_0x214278=_0x214278-0x0;var _0x2bf8bb=_0x855b[_0x214278];return _0x2bf8bb;};'use strict';var multer=require(_0xb855('0x0'));var util=require(_0xb855('0x1'));var path=require('path');var timeout=require(_0xb855('0x2'));var express=require('express');var router=express[_0xb855('0x3')]();var fs_extra=require(_0xb855('0x4'));var auth=require(_0xb855('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb855('0x6'));var controller=require('./action.controller');router[_0xb855('0x7')]('/:id',auth[_0xb855('0x8')](),controller[_0xb855('0x9')]);router[_0xb855('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xb855('0xb')]);module[_0xb855('0xc')]=router;
\ No newline at end of file
index 3d38d51..50075f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['STRING','TEXT','sequelize'];(function(_0x1c35cc,_0x1229c4){var _0x760006=function(_0x51cc6a){while(--_0x51cc6a){_0x1c35cc['push'](_0x1c35cc['shift']());}};_0x760006(++_0x1229c4);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x24013a,_0x4b5d3f){_0x24013a=_0x24013a-0x0;var _0x3818d9=_0x3eea[_0x24013a];return _0x3818d9;};'use strict';var Sequelize=require(_0xa3ee('0x0'));module['exports']={'name':{'type':Sequelize[_0xa3ee('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa3ee('0x1')]},'parent':{'type':Sequelize[_0xa3ee('0x1')]},'table':{'type':Sequelize[_0xa3ee('0x1')]},'conditions':{'type':Sequelize[_0xa3ee('0x2')]},'joins':{'type':Sequelize[_0xa3ee('0x2')]}};
\ No newline at end of file
+var _0x425d=['sequelize','STRING','TEXT'];(function(_0x152499,_0x390d3c){var _0x148ef7=function(_0x5f13df){while(--_0x5f13df){_0x152499['push'](_0x152499['shift']());}};_0x148ef7(++_0x390d3c);}(_0x425d,0x1e0));var _0xd425=function(_0x25a52e,_0x260b10){_0x25a52e=_0x25a52e-0x0;var _0x2ea938=_0x425d[_0x25a52e];return _0x2ea938;};'use strict';var Sequelize=require(_0xd425('0x0'));module['exports']={'name':{'type':Sequelize[_0xd425('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xd425('0x1')]},'parent':{'type':Sequelize[_0xd425('0x1')]},'table':{'type':Sequelize[_0xd425('0x1')]},'conditions':{'type':Sequelize[_0xd425('0x2')]},'joins':{'type':Sequelize[_0xd425('0x2')]}};
\ No newline at end of file
index 830fd03..285c4cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1892=['../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','error','name','send','map','AnalyticCustomReport','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Reports','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','MetricId','field','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','COUNT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','value','select','table','output','web','fullPath','%s-%s.%s','randomstring','generate','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','COUNT(*)','run','runReport','GROUP_CONCAT(%s)','Sequelize','metric','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x1892,0x8d));var _0x2189=function(_0x19ecc1,_0x1e42cb){_0x19ecc1=_0x19ecc1-0x0;var _0x46c6db=_0x1892[_0x19ecc1];return _0x46c6db;};'use strict';var emlformat=require(_0x2189('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2189('0x1'));var jsonpatch=require(_0x2189('0x2'));var rp=require('request-promise');var moment=require(_0x2189('0x3'));var BPromise=require(_0x2189('0x4'));var Mustache=require('mustache');var util=require(_0x2189('0x5'));var path=require(_0x2189('0x6'));var sox=require(_0x2189('0x7'));var csv=require(_0x2189('0x8'));var ejs=require(_0x2189('0x9'));var fs=require('fs');var fs_extra=require(_0x2189('0xa'));var _=require(_0x2189('0xb'));var squel=require(_0x2189('0xc'));var crypto=require(_0x2189('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2189('0xe'));var toCsv=require(_0x2189('0x8'));var querystring=require(_0x2189('0xf'));var Papa=require(_0x2189('0x10'));var Redis=require(_0x2189('0x11'));var authService=require(_0x2189('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2189('0x13'));var hardwareService=require(_0x2189('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x2189('0x15'));var config=require(_0x2189('0x16'));var licenseUtil=require(_0x2189('0x17'));var db=require(_0x2189('0x18'))['db'];var dbH=require(_0x2189('0x18'))[_0x2189('0x19')];function respondWithStatusCode(_0xb032c7,_0x105c44){_0x105c44=_0x105c44||0xcc;return function(_0x261b1b){if(_0x261b1b){return _0xb032c7[_0x2189('0x1a')](_0x105c44);}return _0xb032c7[_0x2189('0x1b')](_0x105c44)[_0x2189('0x1c')]();};}function respondWithResult(_0x1c4c86,_0x376293){_0x376293=_0x376293||0xc8;return function(_0x54684f){if(_0x54684f){return _0x1c4c86[_0x2189('0x1b')](_0x376293)[_0x2189('0x1d')](_0x54684f);}};}function respondWithFilteredResult(_0x4af0aa,_0x21ebc5){return function(_0x17bebf){if(_0x17bebf){var _0x3566e9=typeof _0x21ebc5[_0x2189('0x1e')]===_0x2189('0x1f')&&typeof _0x21ebc5[_0x2189('0x20')]===_0x2189('0x1f');var _0x1c38ab=_0x17bebf[_0x2189('0x21')];var _0x185c9f=_0x3566e9?0x0:_0x21ebc5[_0x2189('0x1e')];var _0x2d145e=_0x3566e9?_0x17bebf[_0x2189('0x21')]:_0x21ebc5[_0x2189('0x1e')]+_0x21ebc5[_0x2189('0x20')];var _0x251ab5;if(_0x2d145e>=_0x1c38ab){_0x2d145e=_0x1c38ab;_0x251ab5=0xc8;}else{_0x251ab5=0xce;}_0x4af0aa[_0x2189('0x1b')](_0x251ab5);return _0x4af0aa[_0x2189('0x22')](_0x2189('0x23'),_0x185c9f+'-'+_0x2d145e+'/'+_0x1c38ab)[_0x2189('0x1d')](_0x17bebf);}return null;};}function patchUpdates(_0x597b28){return function(_0x37dd6f){try{jsonpatch[_0x2189('0x24')](_0x37dd6f,_0x597b28,!![]);}catch(_0x3025e5){return BPromise[_0x2189('0x25')](_0x3025e5);}return _0x37dd6f[_0x2189('0x26')]();};}function saveUpdates(_0x96c2b5,_0x9d1688){return function(_0x4a9cec){if(_0x4a9cec){return _0x4a9cec[_0x2189('0x27')](_0x96c2b5)[_0x2189('0x28')](function(_0x1a57e8){return _0x1a57e8;});}return null;};}function removeEntity(_0x1de423,_0x3351ab){return function(_0x5e00cf){if(_0x5e00cf){return _0x5e00cf[_0x2189('0x29')]()['then'](function(){var _0x4de612=_0x5e00cf[_0x2189('0x2a')]({'plain':!![]});var _0x1338d3=_0x2189('0x2b');return db['UserProfileResource'][_0x2189('0x29')]({'where':{'type':_0x1338d3,'resourceId':_0x4de612['id']}})[_0x2189('0x28')](function(){return _0x5e00cf;});})[_0x2189('0x28')](function(){_0x1de423[_0x2189('0x1b')](0xcc)[_0x2189('0x1c')]();});}};}function handleEntityNotFound(_0x39f02c,_0x41538a){return function(_0x18df64){if(!_0x18df64){_0x39f02c[_0x2189('0x1a')](0x194);}return _0x18df64;};}function handleError(_0x6b7e23,_0x1c22f9){_0x1c22f9=_0x1c22f9||0x1f4;return function(_0x43aa58){logger[_0x2189('0x2c')](_0x43aa58['stack']);if(_0x43aa58[_0x2189('0x2d')]){delete _0x43aa58[_0x2189('0x2d')];}_0x6b7e23['status'](_0x1c22f9)[_0x2189('0x2e')](_0x43aa58);};}exports['index']=function(_0x47fa55,_0x26a70c){var _0xb65578={},_0x31cfff={},_0x4dad6b={'count':0x0,'rows':[]};var _0x540963=_[_0x2189('0x2f')](db[_0x2189('0x30')]['rawAttributes'],function(_0x352338){return{'name':_0x352338[_0x2189('0x31')],'type':_0x352338[_0x2189('0x32')][_0x2189('0x33')]};});_0x31cfff[_0x2189('0x34')]=_[_0x2189('0x2f')](_0x540963,_0x2189('0x2d'));_0x31cfff['query']=_[_0x2189('0x35')](_0x47fa55[_0x2189('0x36')]);_0x31cfff[_0x2189('0x37')]=_[_0x2189('0x38')](_0x31cfff['model'],_0x31cfff[_0x2189('0x36')]);_0xb65578[_0x2189('0x39')]=_[_0x2189('0x38')](_0x31cfff[_0x2189('0x34')],qs[_0x2189('0x3a')](_0x47fa55[_0x2189('0x36')][_0x2189('0x3a')]));_0xb65578[_0x2189('0x39')]=_0xb65578['attributes'][_0x2189('0x3b')]?_0xb65578[_0x2189('0x39')]:_0x31cfff[_0x2189('0x34')];if(!_0x47fa55['query']['hasOwnProperty']('nolimit')){_0xb65578[_0x2189('0x20')]=qs[_0x2189('0x20')](_0x47fa55[_0x2189('0x36')][_0x2189('0x20')]);_0xb65578['offset']=qs[_0x2189('0x1e')](_0x47fa55[_0x2189('0x36')]['offset']);}_0xb65578[_0x2189('0x3c')]=qs[_0x2189('0x3d')](_0x47fa55['query'][_0x2189('0x3d')]);_0xb65578[_0x2189('0x3e')]=qs['filters'](_['pick'](_0x47fa55[_0x2189('0x36')],_0x31cfff[_0x2189('0x37')]),_0x540963);if(_0x47fa55['query'][_0x2189('0x3f')]){_0xb65578[_0x2189('0x3e')]=_[_0x2189('0x40')](_0xb65578['where'],{'$or':_[_0x2189('0x2f')](_0x540963,function(_0x3cbc5a){if(_0x3cbc5a[_0x2189('0x32')]!==_0x2189('0x41')){var _0x302134={};_0x302134[_0x3cbc5a['name']]={'$like':'%'+_0x47fa55['query'][_0x2189('0x3f')]+'%'};return _0x302134;}})});}_0xb65578=_[_0x2189('0x40')]({},_0xb65578,_0x47fa55[_0x2189('0x42')]);var _0x5ccddd={'where':_0xb65578[_0x2189('0x3e')]};return db[_0x2189('0x30')][_0x2189('0x21')](_0x5ccddd)[_0x2189('0x28')](function(_0x376dcf){_0x4dad6b[_0x2189('0x21')]=_0x376dcf;if(_0x47fa55[_0x2189('0x36')][_0x2189('0x43')]){_0xb65578['include']=[{'all':!![]}];}return db[_0x2189('0x30')][_0x2189('0x44')](_0xb65578);})[_0x2189('0x28')](function(_0x13f0e9){_0x4dad6b[_0x2189('0x45')]=_0x13f0e9;return _0x4dad6b;})[_0x2189('0x28')](respondWithFilteredResult(_0x26a70c,_0xb65578))[_0x2189('0x46')](handleError(_0x26a70c,null));};exports[_0x2189('0x47')]=function(_0x21d95a,_0x5ad001){var _0x3446b1={'raw':![],'where':{'id':_0x21d95a[_0x2189('0x48')]['id']}},_0x4056d4={};_0x4056d4[_0x2189('0x34')]=_[_0x2189('0x35')](db[_0x2189('0x30')][_0x2189('0x49')]);_0x4056d4[_0x2189('0x36')]=_[_0x2189('0x35')](_0x21d95a['query']);_0x4056d4[_0x2189('0x37')]=_[_0x2189('0x38')](_0x4056d4[_0x2189('0x34')],_0x4056d4['query']);_0x3446b1[_0x2189('0x39')]=_[_0x2189('0x38')](_0x4056d4[_0x2189('0x34')],qs['fields'](_0x21d95a['query'][_0x2189('0x3a')]));_0x3446b1[_0x2189('0x39')]=_0x3446b1[_0x2189('0x39')][_0x2189('0x3b')]?_0x3446b1[_0x2189('0x39')]:_0x4056d4[_0x2189('0x34')];if(_0x21d95a[_0x2189('0x36')][_0x2189('0x43')]){_0x3446b1[_0x2189('0x4a')]=[{'all':!![]}];}_0x3446b1=_['merge']({},_0x3446b1,_0x21d95a[_0x2189('0x42')]);return db[_0x2189('0x30')][_0x2189('0x4b')](_0x3446b1)['then'](handleEntityNotFound(_0x5ad001,null))[_0x2189('0x28')](respondWithResult(_0x5ad001,null))['catch'](handleError(_0x5ad001,null));};exports[_0x2189('0x4c')]=function(_0x39f670,_0x278f9a){return db['AnalyticCustomReport']['create'](_0x39f670[_0x2189('0x4d')],{})[_0x2189('0x28')](function(_0x39210e){var _0x260bbf=_0x39f670['user']['get']({'plain':!![]});if(!_0x260bbf)throw new Error(_0x2189('0x4e'));if(_0x260bbf['role']===_0x2189('0x4f')){var _0x420577=_0x39210e[_0x2189('0x2a')]({'plain':!![]});var _0x1c578e=_0x2189('0x50');return db[_0x2189('0x51')][_0x2189('0x4b')]({'where':{'name':_0x1c578e,'userProfileId':_0x260bbf[_0x2189('0x52')]},'raw':!![]})['then'](function(_0x446197){if(_0x446197&&_0x446197[_0x2189('0x53')]===0x0){return db[_0x2189('0x54')][_0x2189('0x4c')]({'name':_0x420577[_0x2189('0x2d')],'resourceId':_0x420577['id'],'type':_0x2189('0x2b'),'sectionId':_0x446197['id']},{})[_0x2189('0x28')](function(){return _0x39210e;});}else{return _0x39210e;}})['catch'](function(_0x42f400){logger[_0x2189('0x2c')](_0x2189('0x55'),_0x42f400);throw _0x42f400;});}return _0x39210e;})['then'](respondWithResult(_0x278f9a,0xc9))[_0x2189('0x46')](handleError(_0x278f9a,null));};exports[_0x2189('0x27')]=function(_0x3b4b62,_0x7e647f){if(_0x3b4b62[_0x2189('0x4d')]['id']){delete _0x3b4b62[_0x2189('0x4d')]['id'];}return db[_0x2189('0x30')]['find']({'where':{'id':_0x3b4b62[_0x2189('0x48')]['id']}})[_0x2189('0x28')](handleEntityNotFound(_0x7e647f,null))[_0x2189('0x28')](saveUpdates(_0x3b4b62[_0x2189('0x4d')],null))['then'](respondWithResult(_0x7e647f,null))[_0x2189('0x46')](handleError(_0x7e647f,null));};exports[_0x2189('0x29')]=function(_0x7ba387,_0x3ede7d){return db[_0x2189('0x30')][_0x2189('0x4b')]({'where':{'id':_0x7ba387[_0x2189('0x48')]['id']}})[_0x2189('0x28')](handleEntityNotFound(_0x3ede7d,null))[_0x2189('0x28')](removeEntity(_0x3ede7d,null))['catch'](handleError(_0x3ede7d,null));};exports[_0x2189('0x56')]=function(_0x5d50ad,_0x5b821f){var _0x16112f=0xa;var _0x952d5d=[_0x2189('0x57'),_0x2189('0x58'),_0x2189('0x59'),_0x2189('0x5a')];var _0x1e1db9={'SUM':_0x2189('0x5b'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x2189('0x5c'),'MAX':_0x2189('0x5d'),'MIN':_0x2189('0x5e'),'AVG':_0x2189('0x5f'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x2189('0x60')};var _0xf72b14={'SEC_TO_TIME':_0x2189('0x61'),'DATE':'DATE(%s)','HOUR':_0x2189('0x62'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x3abc00=function(_0x35bb0e){return!_[_0x2189('0x63')]([_0x2189('0x64'),_0x2189('0x65'),_0x2189('0x66'),_0x2189('0x67')],_0x35bb0e);};var _0x3f59e2=function(_0x2a3313){if(!_0x2a3313||!_0x2a3313[_0x2189('0x68')][_0x2189('0x3b')]){return'';}for(var _0x29f534='(',_0x5c89e3=0x0;_0x5c89e3<_0x2a3313['rules'][_0x2189('0x3b')];_0x5c89e3+=0x1){_0x5c89e3>0x0&&(_0x29f534+='\x20'+_0x2a3313[_0x2189('0x69')]+'\x20');_0x29f534+=_0x2a3313['rules'][_0x5c89e3][_0x2189('0x6a')]?_0x3f59e2(_0x2a3313['rules'][_0x5c89e3][_0x2189('0x6a')]):_0x2a3313[_0x2189('0x68')][_0x5c89e3]['field']+'\x20'+_0x2a3313['rules'][_0x5c89e3][_0x2189('0x6b')]+(_0x3abc00(_0x2a3313['rules'][_0x5c89e3]['condition'])?'\x20'+_0x2a3313[_0x2189('0x68')][_0x5c89e3]['value']:'');}return _0x29f534+')';};var _0x172eb3={'where':{'id':_0x5d50ad[_0x2189('0x48')]['id']}},_0x508767,_0x27996c,_0x16a74c,_0x548107,_0x13e07a;_0x172eb3=_[_0x2189('0x40')]({},_0x172eb3,_0x5d50ad[_0x2189('0x42')]);return db[_0x2189('0x30')][_0x2189('0x4b')](_0x172eb3)[_0x2189('0x28')](function(_0x2924d7){if(_0x2924d7){_0x508767=_0x2924d7;return _0x2924d7[_0x2189('0x6c')]();}return null;})['then'](function(_0x30e97c){if(_0x30e97c){if(!_0x30e97c[_0x2189('0x3b')]){throw new db['Sequelize'][(_0x2189('0x6d'))](_0x2189('0x6e'),0x193);}_0x27996c=_0x30e97c;return db[_0x2189('0x6f')][_0x2189('0x44')]({'raw':!![]});}return null;})['then'](function(_0x2e4b17){if(_0x2e4b17){_0x16a74c=_[_0x2189('0x70')](_0x2e4b17,'id');var _0x346be4;var _0x20401d=squel['select']();_0x20401d[_0x2189('0x71')](_0x508767['table']);for(var _0x5d4417=0x0;_0x5d4417<_0x27996c[_0x2189('0x3b')];_0x5d4417+=0x1){_0x346be4=_0x27996c[_0x5d4417][_0x2189('0x72')]?_0x16a74c[_0x27996c[_0x5d4417][_0x2189('0x72')]]['metric']:_0x27996c[_0x5d4417][_0x2189('0x73')];_0x346be4=_0x27996c[_0x5d4417][_0x2189('0x74')]?_[_0x2189('0x75')](_0x1e1db9[_0x27996c[_0x5d4417][_0x2189('0x74')]],'%s',_0x346be4):_0x346be4;_0x346be4=_0x27996c[_0x5d4417][_0x2189('0x76')]?_['replace'](_0xf72b14[_0x27996c[_0x5d4417][_0x2189('0x76')]],'%s',_0x346be4):_0x346be4;if(_0x27996c[_0x5d4417][_0x2189('0x77')]){_0x20401d[_0x2189('0x6a')](_0x346be4);}_0x27996c[_0x5d4417][_0x2189('0x78')]&&_0x20401d[_0x2189('0x3c')](_0x346be4,_0x27996c[_0x5d4417]['orderBy']===_0x2189('0x79')?![]:!![]);_0x20401d['field'](_0x346be4,_0x27996c[_0x5d4417][_0x2189('0x7a')]||_0x346be4);}if(_0x508767[_0x2189('0x7b')]){_0x508767[_0x2189('0x7b')]=JSON[_0x2189('0x7c')](_0x508767['joins']);for(var _0x5a9b52=0x0;_0x5a9b52<_0x508767[_0x2189('0x7b')][_0x2189('0x3b')];_0x5a9b52+=0x1){if(_0x508767[_0x2189('0x7b')][_0x5a9b52]['type']&&_[_0x2189('0x63')](_0x952d5d,_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x32')])&&_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x7d')]&&_0x508767[_0x2189('0x7b')][_0x5a9b52]['foreignTable']&&_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x7e')]){_0x20401d[_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x32')]](_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x7f')],null,util[_0x2189('0x76')](_0x2189('0x80'),_0x508767['table'],_0x508767['joins'][_0x5a9b52][_0x2189('0x7d')],_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x7f')],_0x508767[_0x2189('0x7b')][_0x5a9b52][_0x2189('0x7e')]));}}}if(_0x508767[_0x2189('0x81')]){_0x508767[_0x2189('0x81')]=JSON[_0x2189('0x7c')](_0x508767[_0x2189('0x81')]);_0x20401d[_0x2189('0x3e')](_0x3f59e2(_0x508767[_0x2189('0x81')][_0x2189('0x6a')]));}_0x13e07a=_0x20401d['clone']();_0x20401d['limit'](_0x16112f);_0x20401d['offset'](0x0);logger[_0x2189('0x82')](_0x2189('0x83'),_0x20401d['toString']());return dbH[_0x2189('0x84')][_0x2189('0x36')](_0x20401d[_0x2189('0x85')](),{'type':dbH[_0x2189('0x84')][_0x2189('0x86')][_0x2189('0x87')]});}})[_0x2189('0x28')](respondWithResult(_0x5b821f,null))[_0x2189('0x46')](handleError(_0x5b821f,null));};function runReport(_0x972916,_0x36afd9,_0xf3363a){var _0x40d929=_0x36afd9[_0x2189('0x2d')];var _0x38336d=0xa;var _0x4f1c7a=[_0x2189('0x57'),'left_join',_0x2189('0x59'),_0x2189('0x5a')];var _0x4141dc={'SUM':'SUM(%s)','COUNT':_0x2189('0x88'),'COUNT DISTINCT':_0x2189('0x5c'),'MAX':'MAX(%s)','MIN':_0x2189('0x5e'),'AVG':_0x2189('0x5f'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x2189('0x89'),'GROUP_CONCAT DESC':_0x2189('0x60')};var _0x5012c7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x2189('0x8a'),'HOUR':_0x2189('0x62'),'ROUND':_0x2189('0x8b'),'UNIX_TIMESTAMP':_0x2189('0x8c')};var _0x2ae061=function(_0x177dec){return!_[_0x2189('0x63')]([_0x2189('0x64'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x2189('0x67')],_0x177dec);};var _0x2765cf=function(_0x3ea3cf){if(!_0x3ea3cf||!_0x3ea3cf[_0x2189('0x68')]['length']){return'';}for(var _0x5e55d0='(',_0x350e9e=0x0;_0x350e9e<_0x3ea3cf[_0x2189('0x68')]['length'];_0x350e9e+=0x1){_0x350e9e>0x0&&(_0x5e55d0+='\x20'+_0x3ea3cf[_0x2189('0x69')]+'\x20');_0x5e55d0+=_0x3ea3cf['rules'][_0x350e9e]['group']?_0x2765cf(_0x3ea3cf[_0x2189('0x68')][_0x350e9e][_0x2189('0x6a')]):_0x3ea3cf['rules'][_0x350e9e][_0x2189('0x73')]+'\x20'+_0x3ea3cf[_0x2189('0x68')][_0x350e9e]['condition']+(_0x2ae061(_0x3ea3cf['rules'][_0x350e9e][_0x2189('0x6b')])?'\x20'+_0x3ea3cf['rules'][_0x350e9e][_0x2189('0x8d')]:'');}return _0x5e55d0+')';};var _0x13bc2d={'where':{'id':_0x972916['id']}},_0x4c5084,_0x166c42,_0x1385bc,_0x41e09b,_0x2e18fb;_0x13bc2d=_[_0x2189('0x40')]({},_0x13bc2d,_0xf3363a);return db[_0x2189('0x30')][_0x2189('0x4b')](_0x13bc2d)[_0x2189('0x28')](function(_0x32ae4d){if(_0x32ae4d){_0x4c5084=_0x32ae4d;return _0x32ae4d[_0x2189('0x6c')]();}return null;})['then'](function(_0x472831){if(_0x472831){if(!_0x472831[_0x2189('0x3b')]){throw new db['Sequelize'][(_0x2189('0x6d'))](_0x2189('0x6e'),0x193);}_0x166c42=_0x472831;return db[_0x2189('0x6f')][_0x2189('0x44')]({'raw':!![]});}return null;})[_0x2189('0x28')](function(_0x5891b3){if(_0x5891b3){_0x1385bc=_[_0x2189('0x70')](_0x5891b3,'id');var _0x155904;var _0x5ef2bd=squel[_0x2189('0x8e')]();_0x5ef2bd[_0x2189('0x71')](_0x4c5084[_0x2189('0x8f')]);for(var _0x118d1c=0x0;_0x118d1c<_0x166c42[_0x2189('0x3b')];_0x118d1c+=0x1){_0x155904=_0x166c42[_0x118d1c][_0x2189('0x72')]?_0x1385bc[_0x166c42[_0x118d1c][_0x2189('0x72')]]['metric']:_0x166c42[_0x118d1c][_0x2189('0x73')];_0x155904=_0x166c42[_0x118d1c]['function']?_[_0x2189('0x75')](_0x4141dc[_0x166c42[_0x118d1c]['function']],'%s',_0x155904):_0x155904;_0x155904=_0x166c42[_0x118d1c]['format']?_[_0x2189('0x75')](_0x5012c7[_0x166c42[_0x118d1c][_0x2189('0x76')]],'%s',_0x155904):_0x155904;if(_0x166c42[_0x118d1c]['groupBy']){_0x5ef2bd['group'](_0x155904);}_0x166c42[_0x118d1c][_0x2189('0x78')]&&_0x5ef2bd[_0x2189('0x3c')](_0x155904,_0x166c42[_0x118d1c]['orderBy']==='DESC'?![]:!![]);_0x5ef2bd['field'](_0x155904,_0x166c42[_0x118d1c][_0x2189('0x7a')]||_0x155904);}if(_0x4c5084[_0x2189('0x7b')]){_0x4c5084['joins']=JSON['parse'](_0x4c5084[_0x2189('0x7b')]);for(var _0x362b57=0x0;_0x362b57<_0x4c5084['joins']['length'];_0x362b57+=0x1){if(_0x4c5084[_0x2189('0x7b')][_0x362b57][_0x2189('0x32')]&&_[_0x2189('0x63')](_0x4f1c7a,_0x4c5084[_0x2189('0x7b')][_0x362b57][_0x2189('0x32')])&&_0x4c5084[_0x2189('0x7b')][_0x362b57][_0x2189('0x7d')]&&_0x4c5084['joins'][_0x362b57][_0x2189('0x7f')]&&_0x4c5084[_0x2189('0x7b')][_0x362b57][_0x2189('0x7e')]){_0x5ef2bd[_0x4c5084[_0x2189('0x7b')][_0x362b57][_0x2189('0x32')]](_0x4c5084[_0x2189('0x7b')][_0x362b57]['foreignTable'],null,util['format']('%s.%s\x20=\x20%s.%s',_0x4c5084[_0x2189('0x8f')],_0x4c5084['joins'][_0x362b57]['parentKey'],_0x4c5084[_0x2189('0x7b')][_0x362b57]['foreignTable'],_0x4c5084[_0x2189('0x7b')][_0x362b57][_0x2189('0x7e')]));}}}if(_0x4c5084['conditions']){_0x4c5084[_0x2189('0x81')]=JSON[_0x2189('0x7c')](_0x4c5084[_0x2189('0x81')]);_0x5ef2bd[_0x2189('0x3e')](_0x2765cf(_0x4c5084[_0x2189('0x81')][_0x2189('0x6a')]));}_0x2e18fb=_0x5ef2bd['clone']();_0x5ef2bd[_0x2189('0x20')](_0x38336d);_0x5ef2bd['offset'](0x0);return;}})[_0x2189('0x28')](function(){if(_0x36afd9[_0x2189('0x90')]===_0x2189('0x91')){return null;}var _0x3dee81=_['merge'](_0x36afd9,{'name':_0x36afd9[_0x2189('0x92')]||_0x36afd9[_0x2189('0x2d')]||_0x4c5084[_0x2189('0x2d')],'basename':_0x40d929,'savename':util[_0x2189('0x76')](_0x2189('0x93'),_0x36afd9['name']||_0x4c5084['name'],require(_0x2189('0x94'))[_0x2189('0x95')](0x4),_0x36afd9[_0x2189('0x90')]||'csv'),'reportId':_0x4c5084['id'],'reportType':'custom'});return db[_0x2189('0x96')][_0x2189('0x4c')](_0x3dee81,{'raw':!![]});})[_0x2189('0x28')](function(_0x223333){if(_0x4c5084['table']==='cdr'){_0x2e18fb[_0x2189('0x3e')](_0x4c5084[_0x2189('0x8f')]+_0x2189('0x97'),_0x36afd9[_0x2189('0x98')],_0x36afd9[_0x2189('0x99')]);}else{_0x2e18fb[_0x2189('0x3e')](_0x4c5084[_0x2189('0x8f')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x36afd9[_0x2189('0x98')],_0x36afd9[_0x2189('0x99')]);}if(_0x223333){logger[_0x2189('0x9a')](_0x2189('0x9b'),_0x2e18fb[_0x2189('0x85')]());require(_0x2189('0x9c'))['fork'](path[_0x2189('0x57')](__dirname,_0x2189('0x9d'),_0x223333[_0x2189('0x90')]),[_0x223333['id'],_0x2e18fb['toString'](),path['join'](__dirname,_0x2189('0x9e'),_0x223333['savename']),_0x40d929]);return _0x223333;}else{var _0x4d6db9=squel['select']();_0x4d6db9[_0x2189('0x71')]('('+_0x2e18fb['toString']()+')','countTable');_0x4d6db9[_0x2189('0x73')](_0x2189('0x9f'),_0x2189('0x21'));_0x2e18fb[_0x2189('0x20')](_0x36afd9['limit']||_0x38336d);_0x2e18fb['offset'](_0x36afd9[_0x2189('0x1e')]||0x0);return dbH[_0x2189('0x84')][_0x2189('0x36')](_0x4d6db9['toString'](),{'type':dbH[_0x2189('0x84')][_0x2189('0x86')][_0x2189('0x87')]})[_0x2189('0x28')](function(_0x32e52c){if(!_0x32e52c[_0x2189('0x3b')]){_0x41e09b=0x0;}else{_0x41e09b=_0x32e52c[0x0][_0x2189('0x21')]||0x0;}return dbH[_0x2189('0x84')][_0x2189('0x36')](_0x2e18fb[_0x2189('0x85')](),{'type':dbH[_0x2189('0x84')][_0x2189('0x86')][_0x2189('0x87')]});})['then'](function(_0x33f8cb){return{'rows':_0x33f8cb||[],'count':_0x41e09b};});}});}exports[_0x2189('0xa0')]=function(_0x15fbcc,_0x1ef66e){return runReport(_0x15fbcc[_0x2189('0x48')],_0x15fbcc['query'],_0x15fbcc[_0x2189('0x42')])[_0x2189('0x28')](respondWithResult(_0x1ef66e,null))[_0x2189('0x46')](handleError(_0x1ef66e,null));};exports[_0x2189('0xa1')]=runReport;exports[_0x2189('0x36')]=function(_0x3b24be,_0x3bac60){var _0x1a43e2=0xa;var _0x50f0a9=[_0x2189('0x57'),'left_join','right_join',_0x2189('0x5a')];var _0x4a541e={'SUM':_0x2189('0x5b'),'COUNT':_0x2189('0x88'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x2189('0x5d'),'MIN':_0x2189('0x5e'),'AVG':_0x2189('0x5f'),'GROUP_CONCAT':_0x2189('0xa2'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x2189('0x60')};var _0x304055={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x2189('0x8a'),'HOUR':_0x2189('0x62'),'ROUND':_0x2189('0x8b'),'UNIX_TIMESTAMP':_0x2189('0x8c')};var _0x110ee8=function(_0x36056f){return!_[_0x2189('0x63')](['IS\x20NULL',_0x2189('0x65'),'IS\x20EMPTY',_0x2189('0x67')],_0x36056f);};var _0x14b928=function(_0x405b46){if(!_0x405b46||!_0x405b46[_0x2189('0x68')][_0x2189('0x3b')]){return'';}for(var _0xf80b47='(',_0xe89d6c=0x0;_0xe89d6c<_0x405b46[_0x2189('0x68')][_0x2189('0x3b')];_0xe89d6c+=0x1){_0xe89d6c>0x0&&(_0xf80b47+='\x20'+_0x405b46[_0x2189('0x69')]+'\x20');_0xf80b47+=_0x405b46[_0x2189('0x68')][_0xe89d6c]['group']?_0x14b928(_0x405b46['rules'][_0xe89d6c]['group']):_0x405b46[_0x2189('0x68')][_0xe89d6c]['field']+'\x20'+_0x405b46['rules'][_0xe89d6c][_0x2189('0x6b')]+(_0x110ee8(_0x405b46[_0x2189('0x68')][_0xe89d6c][_0x2189('0x6b')])?'\x20'+_0x405b46[_0x2189('0x68')][_0xe89d6c][_0x2189('0x8d')]:'');}return _0xf80b47+')';};var _0x89795b={'where':{'id':_0x3b24be[_0x2189('0x48')]['id']}},_0x164842,_0x3221f8,_0x263cf1,_0xfa0e5d,_0x340b66;_0x89795b=_['merge']({},_0x89795b,_0x3b24be[_0x2189('0x42')]);return db[_0x2189('0x30')][_0x2189('0x4b')](_0x89795b)[_0x2189('0x28')](function(_0x576d95){if(_0x576d95){_0x164842=_0x576d95;return _0x576d95[_0x2189('0x6c')]();}return null;})['then'](function(_0xb90b00){if(_0xb90b00){if(!_0xb90b00['length']){throw new db[(_0x2189('0xa3'))][(_0x2189('0x6d'))](_0x2189('0x6e'),0x193);}_0x3221f8=_0xb90b00;return db[_0x2189('0x6f')][_0x2189('0x44')]({'raw':!![]});}return null;})[_0x2189('0x28')](function(_0x36a910){if(_0x36a910){_0x263cf1=_['keyBy'](_0x36a910,'id');var _0x38a6f3;var _0xa1e2d9=squel[_0x2189('0x8e')]();_0xa1e2d9['from'](_0x164842[_0x2189('0x8f')]);for(var _0x35cac9=0x0;_0x35cac9<_0x3221f8[_0x2189('0x3b')];_0x35cac9+=0x1){_0x38a6f3=_0x3221f8[_0x35cac9][_0x2189('0x72')]?_0x263cf1[_0x3221f8[_0x35cac9][_0x2189('0x72')]][_0x2189('0xa4')]:_0x3221f8[_0x35cac9][_0x2189('0x73')];_0x38a6f3=_0x3221f8[_0x35cac9][_0x2189('0x74')]?_[_0x2189('0x75')](_0x4a541e[_0x3221f8[_0x35cac9][_0x2189('0x74')]],'%s',_0x38a6f3):_0x38a6f3;_0x38a6f3=_0x3221f8[_0x35cac9][_0x2189('0x76')]?_[_0x2189('0x75')](_0x304055[_0x3221f8[_0x35cac9][_0x2189('0x76')]],'%s',_0x38a6f3):_0x38a6f3;if(_0x3221f8[_0x35cac9][_0x2189('0x77')]){_0xa1e2d9['group'](_0x38a6f3);}_0x3221f8[_0x35cac9][_0x2189('0x78')]&&_0xa1e2d9[_0x2189('0x3c')](_0x38a6f3,_0x3221f8[_0x35cac9][_0x2189('0x78')]===_0x2189('0x79')?![]:!![]);_0xa1e2d9[_0x2189('0x73')](_0x38a6f3,_0x3221f8[_0x35cac9][_0x2189('0x7a')]||_0x38a6f3);}if(_0x164842[_0x2189('0x7b')]){_0x164842[_0x2189('0x7b')]=JSON[_0x2189('0x7c')](_0x164842[_0x2189('0x7b')]);for(var _0x1cc20c=0x0;_0x1cc20c<_0x164842[_0x2189('0x7b')][_0x2189('0x3b')];_0x1cc20c+=0x1){if(_0x164842[_0x2189('0x7b')][_0x1cc20c][_0x2189('0x32')]&&_['includes'](_0x50f0a9,_0x164842[_0x2189('0x7b')][_0x1cc20c]['type'])&&_0x164842[_0x2189('0x7b')][_0x1cc20c][_0x2189('0x7d')]&&_0x164842[_0x2189('0x7b')][_0x1cc20c][_0x2189('0x7f')]&&_0x164842['joins'][_0x1cc20c][_0x2189('0x7e')]){_0xa1e2d9[_0x164842[_0x2189('0x7b')][_0x1cc20c][_0x2189('0x32')]](_0x164842[_0x2189('0x7b')][_0x1cc20c][_0x2189('0x7f')],null,util['format'](_0x2189('0x80'),_0x164842[_0x2189('0x8f')],_0x164842['joins'][_0x1cc20c][_0x2189('0x7d')],_0x164842[_0x2189('0x7b')][_0x1cc20c]['foreignTable'],_0x164842[_0x2189('0x7b')][_0x1cc20c]['foreignKey']));}}}if(_0x164842[_0x2189('0x81')]){_0x164842['conditions']=JSON[_0x2189('0x7c')](_0x164842['conditions']);_0xa1e2d9[_0x2189('0x3e')](_0x14b928(_0x164842['conditions'][_0x2189('0x6a')]));}_0x340b66=_0xa1e2d9['clone']();_0xa1e2d9[_0x2189('0x20')](_0x1a43e2);_0xa1e2d9['offset'](0x0);logger['debug'](_0x2189('0x83'),_0xa1e2d9[_0x2189('0x85')]());return dbH[_0x2189('0x84')][_0x2189('0x36')](_0xa1e2d9[_0x2189('0x85')](),{'type':dbH[_0x2189('0x84')]['QueryTypes'][_0x2189('0x87')]});}})[_0x2189('0x28')](function(){return{'sql':_0x340b66[_0x2189('0x85')]()};})[_0x2189('0x28')](respondWithResult(_0x3bac60,null))[_0x2189('0x46')](handleError(_0x3bac60,null));};
\ No newline at end of file
+var _0x1159=['dbH','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','get','UserProfileResource','end','stack','name','send','map','AnalyticCustomReport','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','catch','show','params','intersection','length','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','replace','function','format','orderBy','alias','joins','parse','foreignTable','%s.%s\x20=\x20%s.%s','parentKey','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','join','cross_join','COUNT(DISTINCT\x20%s)','AVG(%s)','GROUP_CONCAT(%s)','SEC_TO_TIME(%s)','ROUND(%s)','operator','groupBy','DESC','output','web','fullPath','%s-%s.%s','randomstring','csv','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','child_process','fork','savename','countTable','COUNT(*)','SELECT','run','runReport','right_join','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../mysqldb'];(function(_0x321469,_0x52e274){var _0x1de895=function(_0x208771){while(--_0x208771){_0x321469['push'](_0x321469['shift']());}};_0x1de895(++_0x52e274);}(_0x1159,0x1d4));var _0x9115=function(_0x390039,_0x15f202){_0x390039=_0x390039-0x0;var _0x39ffad=_0x1159[_0x390039];return _0x39ffad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9115('0x0'));var zipdir=require(_0x9115('0x1'));var jsonpatch=require(_0x9115('0x2'));var rp=require(_0x9115('0x3'));var moment=require('moment');var BPromise=require(_0x9115('0x4'));var Mustache=require(_0x9115('0x5'));var util=require(_0x9115('0x6'));var path=require(_0x9115('0x7'));var sox=require(_0x9115('0x8'));var csv=require('to-csv');var ejs=require(_0x9115('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9115('0xa'));var squel=require(_0x9115('0xb'));var crypto=require(_0x9115('0xc'));var jsforce=require(_0x9115('0xd'));var deskjs=require(_0x9115('0xe'));var toCsv=require(_0x9115('0xf'));var querystring=require(_0x9115('0x10'));var Papa=require(_0x9115('0x11'));var Redis=require(_0x9115('0x12'));var authService=require(_0x9115('0x13'));var qs=require(_0x9115('0x14'));var as=require(_0x9115('0x15'));var hardwareService=require(_0x9115('0x16'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9115('0x17'))['db'];var dbH=require(_0x9115('0x17'))[_0x9115('0x18')];function respondWithStatusCode(_0x2423d6,_0x33102d){_0x33102d=_0x33102d||0xcc;return function(_0x31f9aa){if(_0x31f9aa){return _0x2423d6[_0x9115('0x19')](_0x33102d);}return _0x2423d6[_0x9115('0x1a')](_0x33102d)['end']();};}function respondWithResult(_0x2dfad2,_0x3aafcd){_0x3aafcd=_0x3aafcd||0xc8;return function(_0x328e83){if(_0x328e83){return _0x2dfad2[_0x9115('0x1a')](_0x3aafcd)['json'](_0x328e83);}};}function respondWithFilteredResult(_0x205122,_0x6cb827){return function(_0x2127e){if(_0x2127e){var _0x20bac4=typeof _0x6cb827[_0x9115('0x1b')]===_0x9115('0x1c')&&typeof _0x6cb827[_0x9115('0x1d')]===_0x9115('0x1c');var _0x5d59d7=_0x2127e[_0x9115('0x1e')];var _0x508cdb=_0x20bac4?0x0:_0x6cb827['offset'];var _0x3c8c50=_0x20bac4?_0x2127e[_0x9115('0x1e')]:_0x6cb827[_0x9115('0x1b')]+_0x6cb827[_0x9115('0x1d')];var _0x4c3046;if(_0x3c8c50>=_0x5d59d7){_0x3c8c50=_0x5d59d7;_0x4c3046=0xc8;}else{_0x4c3046=0xce;}_0x205122[_0x9115('0x1a')](_0x4c3046);return _0x205122[_0x9115('0x1f')](_0x9115('0x20'),_0x508cdb+'-'+_0x3c8c50+'/'+_0x5d59d7)[_0x9115('0x21')](_0x2127e);}return null;};}function patchUpdates(_0x35297e){return function(_0x2dc870){try{jsonpatch[_0x9115('0x22')](_0x2dc870,_0x35297e,!![]);}catch(_0x49b6fd){return BPromise[_0x9115('0x23')](_0x49b6fd);}return _0x2dc870[_0x9115('0x24')]();};}function saveUpdates(_0x22412d,_0x22f0d0){return function(_0x3ebcc4){if(_0x3ebcc4){return _0x3ebcc4[_0x9115('0x25')](_0x22412d)['then'](function(_0x26d84c){return _0x26d84c;});}return null;};}function removeEntity(_0x37e65d,_0x1a7671){return function(_0x535309){if(_0x535309){return _0x535309[_0x9115('0x26')]()[_0x9115('0x27')](function(){var _0x102570=_0x535309[_0x9115('0x28')]({'plain':!![]});var _0x4c3720='CustomReports';return db[_0x9115('0x29')][_0x9115('0x26')]({'where':{'type':_0x4c3720,'resourceId':_0x102570['id']}})['then'](function(){return _0x535309;});})[_0x9115('0x27')](function(){_0x37e65d[_0x9115('0x1a')](0xcc)[_0x9115('0x2a')]();});}};}function handleEntityNotFound(_0x5bd53f,_0x5f22d6){return function(_0x5eeed3){if(!_0x5eeed3){_0x5bd53f[_0x9115('0x19')](0x194);}return _0x5eeed3;};}function handleError(_0x4ebcbb,_0x4b26f2){_0x4b26f2=_0x4b26f2||0x1f4;return function(_0x447339){logger['error'](_0x447339[_0x9115('0x2b')]);if(_0x447339[_0x9115('0x2c')]){delete _0x447339[_0x9115('0x2c')];}_0x4ebcbb[_0x9115('0x1a')](_0x4b26f2)[_0x9115('0x2d')](_0x447339);};}exports['index']=function(_0x292997,_0x214770){var _0x3b0d1d={},_0x2e739b={},_0x3c8007={'count':0x0,'rows':[]};var _0x45ace3=_[_0x9115('0x2e')](db[_0x9115('0x2f')]['rawAttributes'],function(_0x392dad){return{'name':_0x392dad[_0x9115('0x30')],'type':_0x392dad[_0x9115('0x31')][_0x9115('0x32')]};});_0x2e739b[_0x9115('0x33')]=_[_0x9115('0x2e')](_0x45ace3,_0x9115('0x2c'));_0x2e739b[_0x9115('0x34')]=_[_0x9115('0x35')](_0x292997[_0x9115('0x34')]);_0x2e739b[_0x9115('0x36')]=_['intersection'](_0x2e739b[_0x9115('0x33')],_0x2e739b['query']);_0x3b0d1d[_0x9115('0x37')]=_['intersection'](_0x2e739b['model'],qs[_0x9115('0x38')](_0x292997['query'][_0x9115('0x38')]));_0x3b0d1d[_0x9115('0x37')]=_0x3b0d1d[_0x9115('0x37')]['length']?_0x3b0d1d[_0x9115('0x37')]:_0x2e739b[_0x9115('0x33')];if(!_0x292997['query'][_0x9115('0x39')](_0x9115('0x3a'))){_0x3b0d1d['limit']=qs[_0x9115('0x1d')](_0x292997[_0x9115('0x34')]['limit']);_0x3b0d1d[_0x9115('0x1b')]=qs['offset'](_0x292997[_0x9115('0x34')][_0x9115('0x1b')]);}_0x3b0d1d[_0x9115('0x3b')]=qs[_0x9115('0x3c')](_0x292997[_0x9115('0x34')][_0x9115('0x3c')]);_0x3b0d1d['where']=qs['filters'](_[_0x9115('0x3d')](_0x292997[_0x9115('0x34')],_0x2e739b[_0x9115('0x36')]),_0x45ace3);if(_0x292997[_0x9115('0x34')][_0x9115('0x3e')]){_0x3b0d1d['where']=_[_0x9115('0x3f')](_0x3b0d1d[_0x9115('0x40')],{'$or':_[_0x9115('0x2e')](_0x45ace3,function(_0xea7a7f){if(_0xea7a7f[_0x9115('0x31')]!==_0x9115('0x41')){var _0x3b8b1f={};_0x3b8b1f[_0xea7a7f[_0x9115('0x2c')]]={'$like':'%'+_0x292997[_0x9115('0x34')][_0x9115('0x3e')]+'%'};return _0x3b8b1f;}})});}_0x3b0d1d=_[_0x9115('0x3f')]({},_0x3b0d1d,_0x292997[_0x9115('0x42')]);var _0x1f397a={'where':_0x3b0d1d[_0x9115('0x40')]};return db[_0x9115('0x2f')]['count'](_0x1f397a)['then'](function(_0x17c369){_0x3c8007[_0x9115('0x1e')]=_0x17c369;if(_0x292997[_0x9115('0x34')]['includeAll']){_0x3b0d1d[_0x9115('0x43')]=[{'all':!![]}];}return db[_0x9115('0x2f')][_0x9115('0x44')](_0x3b0d1d);})[_0x9115('0x27')](function(_0x359c63){_0x3c8007['rows']=_0x359c63;return _0x3c8007;})['then'](respondWithFilteredResult(_0x214770,_0x3b0d1d))[_0x9115('0x45')](handleError(_0x214770,null));};exports[_0x9115('0x46')]=function(_0x1d31d3,_0x18c687){var _0x2c83dd={'raw':![],'where':{'id':_0x1d31d3[_0x9115('0x47')]['id']}},_0x182174={};_0x182174[_0x9115('0x33')]=_[_0x9115('0x35')](db[_0x9115('0x2f')]['rawAttributes']);_0x182174[_0x9115('0x34')]=_[_0x9115('0x35')](_0x1d31d3[_0x9115('0x34')]);_0x182174[_0x9115('0x36')]=_[_0x9115('0x48')](_0x182174[_0x9115('0x33')],_0x182174[_0x9115('0x34')]);_0x2c83dd[_0x9115('0x37')]=_[_0x9115('0x48')](_0x182174[_0x9115('0x33')],qs['fields'](_0x1d31d3[_0x9115('0x34')][_0x9115('0x38')]));_0x2c83dd[_0x9115('0x37')]=_0x2c83dd[_0x9115('0x37')][_0x9115('0x49')]?_0x2c83dd[_0x9115('0x37')]:_0x182174[_0x9115('0x33')];if(_0x1d31d3['query'][_0x9115('0x4a')]){_0x2c83dd[_0x9115('0x43')]=[{'all':!![]}];}_0x2c83dd=_[_0x9115('0x3f')]({},_0x2c83dd,_0x1d31d3[_0x9115('0x42')]);return db[_0x9115('0x2f')]['find'](_0x2c83dd)[_0x9115('0x27')](handleEntityNotFound(_0x18c687,null))[_0x9115('0x27')](respondWithResult(_0x18c687,null))['catch'](handleError(_0x18c687,null));};exports[_0x9115('0x4b')]=function(_0x5a1794,_0x3104a0){return db[_0x9115('0x2f')][_0x9115('0x4b')](_0x5a1794['body'],{})[_0x9115('0x27')](function(_0x4fed60){var _0x3019cb=_0x5a1794[_0x9115('0x4c')][_0x9115('0x28')]({'plain':!![]});if(!_0x3019cb)throw new Error(_0x9115('0x4d'));if(_0x3019cb['role']==='user'){var _0x447d53=_0x4fed60['get']({'plain':!![]});var _0x4406b4='Reports';return db[_0x9115('0x4e')][_0x9115('0x4f')]({'where':{'name':_0x4406b4,'userProfileId':_0x3019cb[_0x9115('0x50')]},'raw':!![]})['then'](function(_0x568bcf){if(_0x568bcf&&_0x568bcf[_0x9115('0x51')]===0x0){return db['UserProfileResource'][_0x9115('0x4b')]({'name':_0x447d53['name'],'resourceId':_0x447d53['id'],'type':'CustomReports','sectionId':_0x568bcf['id']},{})[_0x9115('0x27')](function(){return _0x4fed60;});}else{return _0x4fed60;}})['catch'](function(_0x89b626){logger[_0x9115('0x52')](_0x9115('0x53'),_0x89b626);throw _0x89b626;});}return _0x4fed60;})['then'](respondWithResult(_0x3104a0,0xc9))[_0x9115('0x45')](handleError(_0x3104a0,null));};exports[_0x9115('0x25')]=function(_0x1f96ed,_0x386c6b){if(_0x1f96ed[_0x9115('0x54')]['id']){delete _0x1f96ed[_0x9115('0x54')]['id'];}return db['AnalyticCustomReport'][_0x9115('0x4f')]({'where':{'id':_0x1f96ed[_0x9115('0x47')]['id']}})[_0x9115('0x27')](handleEntityNotFound(_0x386c6b,null))[_0x9115('0x27')](saveUpdates(_0x1f96ed[_0x9115('0x54')],null))[_0x9115('0x27')](respondWithResult(_0x386c6b,null))[_0x9115('0x45')](handleError(_0x386c6b,null));};exports[_0x9115('0x26')]=function(_0x4c8dc5,_0x2409a8){return db[_0x9115('0x2f')][_0x9115('0x4f')]({'where':{'id':_0x4c8dc5['params']['id']}})[_0x9115('0x27')](handleEntityNotFound(_0x2409a8,null))[_0x9115('0x27')](removeEntity(_0x2409a8,null))[_0x9115('0x45')](handleError(_0x2409a8,null));};exports[_0x9115('0x55')]=function(_0x4d7870,_0xab0275){var _0x164498=0xa;var _0x56ed6a=['join','left_join','right_join','cross_join'];var _0x275da5={'SUM':_0x9115('0x56'),'COUNT':_0x9115('0x57'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9115('0x58'),'MIN':_0x9115('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9115('0x5a'),'GROUP_CONCAT DESC':_0x9115('0x5b')};var _0x2cb0ee={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9115('0x5c'),'HOUR':_0x9115('0x5d'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9115('0x5e')};var _0x1868cb=function(_0x2155e4){return!_[_0x9115('0x5f')]([_0x9115('0x60'),_0x9115('0x61'),_0x9115('0x62'),_0x9115('0x63')],_0x2155e4);};var _0x2af4ae=function(_0xe5370d){if(!_0xe5370d||!_0xe5370d[_0x9115('0x64')][_0x9115('0x49')]){return'';}for(var _0x2d74e4='(',_0x2433ca=0x0;_0x2433ca<_0xe5370d[_0x9115('0x64')]['length'];_0x2433ca+=0x1){_0x2433ca>0x0&&(_0x2d74e4+='\x20'+_0xe5370d['operator']+'\x20');_0x2d74e4+=_0xe5370d['rules'][_0x2433ca][_0x9115('0x65')]?_0x2af4ae(_0xe5370d['rules'][_0x2433ca][_0x9115('0x65')]):_0xe5370d['rules'][_0x2433ca][_0x9115('0x66')]+'\x20'+_0xe5370d[_0x9115('0x64')][_0x2433ca][_0x9115('0x67')]+(_0x1868cb(_0xe5370d[_0x9115('0x64')][_0x2433ca]['condition'])?'\x20'+_0xe5370d[_0x9115('0x64')][_0x2433ca][_0x9115('0x68')]:'');}return _0x2d74e4+')';};var _0x2190e8={'where':{'id':_0x4d7870['params']['id']}},_0x48d3a4,_0x1a7847,_0x64e441,_0x4bbd03,_0x80d455;_0x2190e8=_['merge']({},_0x2190e8,_0x4d7870[_0x9115('0x42')]);return db['AnalyticCustomReport'][_0x9115('0x4f')](_0x2190e8)[_0x9115('0x27')](function(_0x145fce){if(_0x145fce){_0x48d3a4=_0x145fce;return _0x145fce[_0x9115('0x69')]();}return null;})[_0x9115('0x27')](function(_0x132a35){if(_0x132a35){if(!_0x132a35[_0x9115('0x49')]){throw new db[(_0x9115('0x6a'))][(_0x9115('0x6b'))](_0x9115('0x6c'),0x193);}_0x1a7847=_0x132a35;return db[_0x9115('0x6d')][_0x9115('0x44')]({'raw':!![]});}return null;})[_0x9115('0x27')](function(_0x51594a){if(_0x51594a){_0x64e441=_[_0x9115('0x6e')](_0x51594a,'id');var _0x543cf9;var _0x21a2fe=squel[_0x9115('0x6f')]();_0x21a2fe[_0x9115('0x70')](_0x48d3a4[_0x9115('0x71')]);for(var _0x5c4400=0x0;_0x5c4400<_0x1a7847['length'];_0x5c4400+=0x1){_0x543cf9=_0x1a7847[_0x5c4400]['MetricId']?_0x64e441[_0x1a7847[_0x5c4400][_0x9115('0x72')]][_0x9115('0x73')]:_0x1a7847[_0x5c4400]['field'];_0x543cf9=_0x1a7847[_0x5c4400]['function']?_[_0x9115('0x74')](_0x275da5[_0x1a7847[_0x5c4400][_0x9115('0x75')]],'%s',_0x543cf9):_0x543cf9;_0x543cf9=_0x1a7847[_0x5c4400]['format']?_[_0x9115('0x74')](_0x2cb0ee[_0x1a7847[_0x5c4400][_0x9115('0x76')]],'%s',_0x543cf9):_0x543cf9;if(_0x1a7847[_0x5c4400]['groupBy']){_0x21a2fe['group'](_0x543cf9);}_0x1a7847[_0x5c4400][_0x9115('0x77')]&&_0x21a2fe[_0x9115('0x3b')](_0x543cf9,_0x1a7847[_0x5c4400]['orderBy']==='DESC'?![]:!![]);_0x21a2fe[_0x9115('0x66')](_0x543cf9,_0x1a7847[_0x5c4400][_0x9115('0x78')]||_0x543cf9);}if(_0x48d3a4[_0x9115('0x79')]){_0x48d3a4[_0x9115('0x79')]=JSON[_0x9115('0x7a')](_0x48d3a4[_0x9115('0x79')]);for(var _0x4a4d72=0x0;_0x4a4d72<_0x48d3a4[_0x9115('0x79')][_0x9115('0x49')];_0x4a4d72+=0x1){if(_0x48d3a4[_0x9115('0x79')][_0x4a4d72][_0x9115('0x31')]&&_[_0x9115('0x5f')](_0x56ed6a,_0x48d3a4[_0x9115('0x79')][_0x4a4d72][_0x9115('0x31')])&&_0x48d3a4[_0x9115('0x79')][_0x4a4d72]['parentKey']&&_0x48d3a4[_0x9115('0x79')][_0x4a4d72][_0x9115('0x7b')]&&_0x48d3a4['joins'][_0x4a4d72]['foreignKey']){_0x21a2fe[_0x48d3a4[_0x9115('0x79')][_0x4a4d72]['type']](_0x48d3a4['joins'][_0x4a4d72]['foreignTable'],null,util[_0x9115('0x76')](_0x9115('0x7c'),_0x48d3a4['table'],_0x48d3a4[_0x9115('0x79')][_0x4a4d72][_0x9115('0x7d')],_0x48d3a4[_0x9115('0x79')][_0x4a4d72]['foreignTable'],_0x48d3a4[_0x9115('0x79')][_0x4a4d72][_0x9115('0x7e')]));}}}if(_0x48d3a4[_0x9115('0x7f')]){_0x48d3a4[_0x9115('0x7f')]=JSON[_0x9115('0x7a')](_0x48d3a4['conditions']);_0x21a2fe[_0x9115('0x40')](_0x2af4ae(_0x48d3a4['conditions']['group']));}_0x80d455=_0x21a2fe[_0x9115('0x80')]();_0x21a2fe['limit'](_0x164498);_0x21a2fe[_0x9115('0x1b')](0x0);logger[_0x9115('0x81')](_0x9115('0x82'),_0x21a2fe[_0x9115('0x83')]());return dbH[_0x9115('0x84')][_0x9115('0x34')](_0x21a2fe['toString'](),{'type':dbH[_0x9115('0x84')][_0x9115('0x85')]['SELECT']});}})['then'](respondWithResult(_0xab0275,null))['catch'](handleError(_0xab0275,null));};function runReport(_0x58f827,_0x5baa94,_0x29da70){var _0x1ddd1f=_0x5baa94[_0x9115('0x2c')];var _0xe39c94=0xa;var _0x4dd5cb=[_0x9115('0x86'),'left_join','right_join',_0x9115('0x87')];var _0x222712={'SUM':_0x9115('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x9115('0x88'),'MAX':_0x9115('0x58'),'MIN':'MIN(%s)','AVG':_0x9115('0x89'),'GROUP_CONCAT':_0x9115('0x8a'),'GROUP_CONCAT ASC':_0x9115('0x5a'),'GROUP_CONCAT DESC':_0x9115('0x5b')};var _0x2a5f63={'SEC_TO_TIME':_0x9115('0x8b'),'DATE':_0x9115('0x5c'),'HOUR':'HOUR(%s)','ROUND':_0x9115('0x8c'),'UNIX_TIMESTAMP':_0x9115('0x5e')};var _0x2c5fe2=function(_0xe4a2c5){return!_['includes']([_0x9115('0x60'),_0x9115('0x61'),'IS\x20EMPTY',_0x9115('0x63')],_0xe4a2c5);};var _0x31a435=function(_0x511cb0){if(!_0x511cb0||!_0x511cb0['rules'][_0x9115('0x49')]){return'';}for(var _0x5ba76f='(',_0x27874a=0x0;_0x27874a<_0x511cb0['rules'][_0x9115('0x49')];_0x27874a+=0x1){_0x27874a>0x0&&(_0x5ba76f+='\x20'+_0x511cb0[_0x9115('0x8d')]+'\x20');_0x5ba76f+=_0x511cb0[_0x9115('0x64')][_0x27874a]['group']?_0x31a435(_0x511cb0['rules'][_0x27874a][_0x9115('0x65')]):_0x511cb0['rules'][_0x27874a]['field']+'\x20'+_0x511cb0[_0x9115('0x64')][_0x27874a]['condition']+(_0x2c5fe2(_0x511cb0['rules'][_0x27874a][_0x9115('0x67')])?'\x20'+_0x511cb0['rules'][_0x27874a][_0x9115('0x68')]:'');}return _0x5ba76f+')';};var _0x1877d1={'where':{'id':_0x58f827['id']}},_0x51bef5,_0x48cf26,_0x145c02,_0x36dd72,_0x327898;_0x1877d1=_[_0x9115('0x3f')]({},_0x1877d1,_0x29da70);return db[_0x9115('0x2f')][_0x9115('0x4f')](_0x1877d1)['then'](function(_0x9c3bdd){if(_0x9c3bdd){_0x51bef5=_0x9c3bdd;return _0x9c3bdd['getFields']();}return null;})['then'](function(_0x3137f8){if(_0x3137f8){if(!_0x3137f8[_0x9115('0x49')]){throw new db[(_0x9115('0x6a'))][(_0x9115('0x6b'))](_0x9115('0x6c'),0x193);}_0x48cf26=_0x3137f8;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})['then'](function(_0x10ffa1){if(_0x10ffa1){_0x145c02=_[_0x9115('0x6e')](_0x10ffa1,'id');var _0x81bedd;var _0x506b30=squel[_0x9115('0x6f')]();_0x506b30[_0x9115('0x70')](_0x51bef5[_0x9115('0x71')]);for(var _0x24fdc1=0x0;_0x24fdc1<_0x48cf26[_0x9115('0x49')];_0x24fdc1+=0x1){_0x81bedd=_0x48cf26[_0x24fdc1][_0x9115('0x72')]?_0x145c02[_0x48cf26[_0x24fdc1]['MetricId']][_0x9115('0x73')]:_0x48cf26[_0x24fdc1]['field'];_0x81bedd=_0x48cf26[_0x24fdc1][_0x9115('0x75')]?_[_0x9115('0x74')](_0x222712[_0x48cf26[_0x24fdc1][_0x9115('0x75')]],'%s',_0x81bedd):_0x81bedd;_0x81bedd=_0x48cf26[_0x24fdc1][_0x9115('0x76')]?_[_0x9115('0x74')](_0x2a5f63[_0x48cf26[_0x24fdc1][_0x9115('0x76')]],'%s',_0x81bedd):_0x81bedd;if(_0x48cf26[_0x24fdc1][_0x9115('0x8e')]){_0x506b30[_0x9115('0x65')](_0x81bedd);}_0x48cf26[_0x24fdc1]['orderBy']&&_0x506b30[_0x9115('0x3b')](_0x81bedd,_0x48cf26[_0x24fdc1][_0x9115('0x77')]===_0x9115('0x8f')?![]:!![]);_0x506b30['field'](_0x81bedd,_0x48cf26[_0x24fdc1]['alias']||_0x81bedd);}if(_0x51bef5[_0x9115('0x79')]){_0x51bef5[_0x9115('0x79')]=JSON[_0x9115('0x7a')](_0x51bef5['joins']);for(var _0x486e57=0x0;_0x486e57<_0x51bef5[_0x9115('0x79')]['length'];_0x486e57+=0x1){if(_0x51bef5['joins'][_0x486e57]['type']&&_[_0x9115('0x5f')](_0x4dd5cb,_0x51bef5[_0x9115('0x79')][_0x486e57][_0x9115('0x31')])&&_0x51bef5[_0x9115('0x79')][_0x486e57]['parentKey']&&_0x51bef5['joins'][_0x486e57][_0x9115('0x7b')]&&_0x51bef5[_0x9115('0x79')][_0x486e57][_0x9115('0x7e')]){_0x506b30[_0x51bef5['joins'][_0x486e57][_0x9115('0x31')]](_0x51bef5['joins'][_0x486e57]['foreignTable'],null,util[_0x9115('0x76')](_0x9115('0x7c'),_0x51bef5[_0x9115('0x71')],_0x51bef5[_0x9115('0x79')][_0x486e57][_0x9115('0x7d')],_0x51bef5[_0x9115('0x79')][_0x486e57][_0x9115('0x7b')],_0x51bef5[_0x9115('0x79')][_0x486e57]['foreignKey']));}}}if(_0x51bef5['conditions']){_0x51bef5[_0x9115('0x7f')]=JSON[_0x9115('0x7a')](_0x51bef5[_0x9115('0x7f')]);_0x506b30[_0x9115('0x40')](_0x31a435(_0x51bef5[_0x9115('0x7f')][_0x9115('0x65')]));}_0x327898=_0x506b30[_0x9115('0x80')]();_0x506b30['limit'](_0xe39c94);_0x506b30['offset'](0x0);return;}})[_0x9115('0x27')](function(){if(_0x5baa94[_0x9115('0x90')]===_0x9115('0x91')){return null;}var _0x46f2e1=_[_0x9115('0x3f')](_0x5baa94,{'name':_0x5baa94[_0x9115('0x92')]||_0x5baa94['name']||_0x51bef5[_0x9115('0x2c')],'basename':_0x1ddd1f,'savename':util[_0x9115('0x76')](_0x9115('0x93'),_0x5baa94[_0x9115('0x2c')]||_0x51bef5[_0x9115('0x2c')],require(_0x9115('0x94'))['generate'](0x4),_0x5baa94[_0x9115('0x90')]||_0x9115('0x95')),'reportId':_0x51bef5['id'],'reportType':'custom'});return db['AnalyticExtractedReport']['create'](_0x46f2e1,{'raw':!![]});})[_0x9115('0x27')](function(_0x4c1f1b){if(_0x51bef5[_0x9115('0x71')]===_0x9115('0x96')){_0x327898[_0x9115('0x40')](_0x51bef5['table']+_0x9115('0x97'),_0x5baa94[_0x9115('0x98')],_0x5baa94[_0x9115('0x99')]);}else{_0x327898['where'](_0x51bef5[_0x9115('0x71')]+_0x9115('0x9a'),_0x5baa94['startDate'],_0x5baa94[_0x9115('0x99')]);}if(_0x4c1f1b){logger['info']('Run\x20Query:',_0x327898[_0x9115('0x83')]());require(_0x9115('0x9b'))[_0x9115('0x9c')](path[_0x9115('0x86')](__dirname,'../../components/export/',_0x4c1f1b[_0x9115('0x90')]),[_0x4c1f1b['id'],_0x327898[_0x9115('0x83')](),path['join'](__dirname,'../../files/reports',_0x4c1f1b[_0x9115('0x9d')]),_0x1ddd1f]);return _0x4c1f1b;}else{var _0x2a7dd9=squel[_0x9115('0x6f')]();_0x2a7dd9[_0x9115('0x70')]('('+_0x327898[_0x9115('0x83')]()+')',_0x9115('0x9e'));_0x2a7dd9[_0x9115('0x66')](_0x9115('0x9f'),_0x9115('0x1e'));_0x327898['limit'](_0x5baa94[_0x9115('0x1d')]||_0xe39c94);_0x327898[_0x9115('0x1b')](_0x5baa94[_0x9115('0x1b')]||0x0);return dbH[_0x9115('0x84')]['query'](_0x2a7dd9[_0x9115('0x83')](),{'type':dbH[_0x9115('0x84')][_0x9115('0x85')][_0x9115('0xa0')]})[_0x9115('0x27')](function(_0xc91b11){if(!_0xc91b11[_0x9115('0x49')]){_0x36dd72=0x0;}else{_0x36dd72=_0xc91b11[0x0][_0x9115('0x1e')]||0x0;}return dbH[_0x9115('0x84')][_0x9115('0x34')](_0x327898[_0x9115('0x83')](),{'type':dbH[_0x9115('0x84')][_0x9115('0x85')]['SELECT']});})[_0x9115('0x27')](function(_0xd1551){return{'rows':_0xd1551||[],'count':_0x36dd72};});}});}exports[_0x9115('0xa1')]=function(_0x428b90,_0x2a752e){return runReport(_0x428b90[_0x9115('0x47')],_0x428b90['query'],_0x428b90[_0x9115('0x42')])[_0x9115('0x27')](respondWithResult(_0x2a752e,null))[_0x9115('0x45')](handleError(_0x2a752e,null));};exports[_0x9115('0xa2')]=runReport;exports['query']=function(_0x9c006,_0x2506a8){var _0x2162ba=0xa;var _0x45261f=[_0x9115('0x86'),'left_join',_0x9115('0xa3'),_0x9115('0x87')];var _0x198db1={'SUM':_0x9115('0x56'),'COUNT':_0x9115('0x57'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9115('0x58'),'MIN':_0x9115('0x59'),'AVG':_0x9115('0x89'),'GROUP_CONCAT':_0x9115('0x8a'),'GROUP_CONCAT ASC':_0x9115('0x5a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x48c464={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9115('0x5c'),'HOUR':_0x9115('0x5d'),'ROUND':_0x9115('0x8c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x309f22=function(_0x4cb859){return!_['includes'](['IS\x20NULL',_0x9115('0x61'),_0x9115('0x62'),_0x9115('0x63')],_0x4cb859);};var _0x175074=function(_0x2a6f11){if(!_0x2a6f11||!_0x2a6f11[_0x9115('0x64')][_0x9115('0x49')]){return'';}for(var _0x1c4262='(',_0x49c0bd=0x0;_0x49c0bd<_0x2a6f11[_0x9115('0x64')]['length'];_0x49c0bd+=0x1){_0x49c0bd>0x0&&(_0x1c4262+='\x20'+_0x2a6f11['operator']+'\x20');_0x1c4262+=_0x2a6f11[_0x9115('0x64')][_0x49c0bd]['group']?_0x175074(_0x2a6f11[_0x9115('0x64')][_0x49c0bd][_0x9115('0x65')]):_0x2a6f11[_0x9115('0x64')][_0x49c0bd][_0x9115('0x66')]+'\x20'+_0x2a6f11[_0x9115('0x64')][_0x49c0bd][_0x9115('0x67')]+(_0x309f22(_0x2a6f11[_0x9115('0x64')][_0x49c0bd][_0x9115('0x67')])?'\x20'+_0x2a6f11[_0x9115('0x64')][_0x49c0bd][_0x9115('0x68')]:'');}return _0x1c4262+')';};var _0x2d1d52={'where':{'id':_0x9c006[_0x9115('0x47')]['id']}},_0x471828,_0x1f39f9,_0xabc11b,_0x362d1a,_0x446b24;_0x2d1d52=_['merge']({},_0x2d1d52,_0x9c006[_0x9115('0x42')]);return db[_0x9115('0x2f')]['find'](_0x2d1d52)[_0x9115('0x27')](function(_0x387793){if(_0x387793){_0x471828=_0x387793;return _0x387793[_0x9115('0x69')]();}return null;})[_0x9115('0x27')](function(_0x3c003f){if(_0x3c003f){if(!_0x3c003f[_0x9115('0x49')]){throw new db[(_0x9115('0x6a'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1f39f9=_0x3c003f;return db['AnalyticMetric'][_0x9115('0x44')]({'raw':!![]});}return null;})[_0x9115('0x27')](function(_0xc5fbb2){if(_0xc5fbb2){_0xabc11b=_[_0x9115('0x6e')](_0xc5fbb2,'id');var _0x3ed57d;var _0x9c0b3d=squel[_0x9115('0x6f')]();_0x9c0b3d[_0x9115('0x70')](_0x471828['table']);for(var _0x399930=0x0;_0x399930<_0x1f39f9[_0x9115('0x49')];_0x399930+=0x1){_0x3ed57d=_0x1f39f9[_0x399930][_0x9115('0x72')]?_0xabc11b[_0x1f39f9[_0x399930][_0x9115('0x72')]][_0x9115('0x73')]:_0x1f39f9[_0x399930]['field'];_0x3ed57d=_0x1f39f9[_0x399930][_0x9115('0x75')]?_['replace'](_0x198db1[_0x1f39f9[_0x399930][_0x9115('0x75')]],'%s',_0x3ed57d):_0x3ed57d;_0x3ed57d=_0x1f39f9[_0x399930]['format']?_[_0x9115('0x74')](_0x48c464[_0x1f39f9[_0x399930]['format']],'%s',_0x3ed57d):_0x3ed57d;if(_0x1f39f9[_0x399930][_0x9115('0x8e')]){_0x9c0b3d['group'](_0x3ed57d);}_0x1f39f9[_0x399930][_0x9115('0x77')]&&_0x9c0b3d[_0x9115('0x3b')](_0x3ed57d,_0x1f39f9[_0x399930][_0x9115('0x77')]===_0x9115('0x8f')?![]:!![]);_0x9c0b3d[_0x9115('0x66')](_0x3ed57d,_0x1f39f9[_0x399930][_0x9115('0x78')]||_0x3ed57d);}if(_0x471828[_0x9115('0x79')]){_0x471828['joins']=JSON[_0x9115('0x7a')](_0x471828['joins']);for(var _0x363711=0x0;_0x363711<_0x471828[_0x9115('0x79')][_0x9115('0x49')];_0x363711+=0x1){if(_0x471828[_0x9115('0x79')][_0x363711][_0x9115('0x31')]&&_[_0x9115('0x5f')](_0x45261f,_0x471828[_0x9115('0x79')][_0x363711]['type'])&&_0x471828[_0x9115('0x79')][_0x363711]['parentKey']&&_0x471828[_0x9115('0x79')][_0x363711]['foreignTable']&&_0x471828[_0x9115('0x79')][_0x363711]['foreignKey']){_0x9c0b3d[_0x471828['joins'][_0x363711][_0x9115('0x31')]](_0x471828[_0x9115('0x79')][_0x363711]['foreignTable'],null,util[_0x9115('0x76')](_0x9115('0x7c'),_0x471828['table'],_0x471828[_0x9115('0x79')][_0x363711][_0x9115('0x7d')],_0x471828[_0x9115('0x79')][_0x363711][_0x9115('0x7b')],_0x471828['joins'][_0x363711][_0x9115('0x7e')]));}}}if(_0x471828[_0x9115('0x7f')]){_0x471828['conditions']=JSON['parse'](_0x471828[_0x9115('0x7f')]);_0x9c0b3d[_0x9115('0x40')](_0x175074(_0x471828[_0x9115('0x7f')][_0x9115('0x65')]));}_0x446b24=_0x9c0b3d[_0x9115('0x80')]();_0x9c0b3d[_0x9115('0x1d')](_0x2162ba);_0x9c0b3d[_0x9115('0x1b')](0x0);logger[_0x9115('0x81')]('Limited\x20Query:',_0x9c0b3d['toString']());return dbH['sequelize'][_0x9115('0x34')](_0x9c0b3d[_0x9115('0x83')](),{'type':dbH[_0x9115('0x84')][_0x9115('0x85')][_0x9115('0xa0')]});}})[_0x9115('0x27')](function(){return{'sql':_0x446b24[_0x9115('0x83')]()};})[_0x9115('0x27')](respondWithResult(_0x2506a8,null))[_0x9115('0x45')](handleError(_0x2506a8,null));};
\ No newline at end of file
index a86f98b..b9e24f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe81d=['path','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','lodash','util','moment','request-promise'];(function(_0x4b9dc9,_0x14b3a2){var _0x57b302=function(_0x4f99ff){while(--_0x4f99ff){_0x4b9dc9['push'](_0x4b9dc9['shift']());}};_0x57b302(++_0x14b3a2);}(_0xe81d,0x7e));var _0xde81=function(_0x5d16ba,_0x334fc4){_0x5d16ba=_0x5d16ba-0x0;var _0x1bdb52=_0xe81d[_0x5d16ba];return _0x1bdb52;};'use strict';var _=require(_0xde81('0x0'));var util=require(_0xde81('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xde81('0x2'));var BPromise=require('bluebird');var rp=require(_0xde81('0x3'));var fs=require('fs');var path=require(_0xde81('0x4'));var rimraf=require(_0xde81('0x5'));var config=require(_0xde81('0x6'));var attributes=require(_0xde81('0x7'));module['exports']=function(_0x431432,_0xe74b0c){return _0x431432[_0xde81('0x8')](_0xde81('0x9'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e1a=['../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0xee3bff,_0xae451c){var _0x37003b=function(_0x1974a5){while(--_0x1974a5){_0xee3bff['push'](_0xee3bff['shift']());}};_0x37003b(++_0xae451c);}(_0x9e1a,0xf4));var _0xa9e1=function(_0x3490c3,_0x43b04d){_0x3490c3=_0x3490c3-0x0;var _0x443db1=_0x9e1a[_0x3490c3];return _0x443db1;};'use strict';var _=require(_0xa9e1('0x0'));var util=require(_0xa9e1('0x1'));var logger=require(_0xa9e1('0x2'))(_0xa9e1('0x3'));var moment=require(_0xa9e1('0x4'));var BPromise=require(_0xa9e1('0x5'));var rp=require(_0xa9e1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa9e1('0x7'));var config=require(_0xa9e1('0x8'));var attributes=require(_0xa9e1('0x9'));module[_0xa9e1('0xa')]=function(_0x33760e,_0x18b643){return _0x33760e[_0xa9e1('0xb')](_0xa9e1('0xc'),attributes,{'tableName':_0xa9e1('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f090420..5bb86d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff6e=['AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2e06e5,_0x584cc1){var _0x809a37=function(_0x20ccd2){while(--_0x20ccd2){_0x2e06e5['push'](_0x2e06e5['shift']());}};_0x809a37(++_0x584cc1);}(_0xff6e,0x9a));var _0xeff6=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0xff6e[_0xdefbc3];return _0x367798;};'use strict';var _=require(_0xeff6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xeff6('0x1'));var fs=require('fs');var Redis=require(_0xeff6('0x2'));var db=require(_0xeff6('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xeff6('0x4'));var config=require(_0xeff6('0x5'));var jayson=require(_0xeff6('0x6'));var client=jayson[_0xeff6('0x7')][_0xeff6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x380531,_0x28562c,_0x27e904){return new BPromise(function(_0x41bb36,_0xd60c5){return client[_0xeff6('0x9')](_0x380531,_0x27e904)[_0xeff6('0xa')](function(_0x1f1f07){logger['info'](_0xeff6('0xb'),_0x28562c,_0xeff6('0xc'));logger[_0xeff6('0xd')](_0xeff6('0xe'),_0x28562c,'request\x20sent',JSON['stringify'](_0x1f1f07));if(_0x1f1f07[_0xeff6('0xf')]){if(_0x1f1f07[_0xeff6('0xf')][_0xeff6('0x10')]===0x1f4){logger[_0xeff6('0xf')](_0xeff6('0xb'),_0x28562c,_0x1f1f07[_0xeff6('0xf')]['message']);return _0xd60c5(_0x1f1f07[_0xeff6('0xf')][_0xeff6('0x11')]);}logger['error'](_0xeff6('0xb'),_0x28562c,_0x1f1f07[_0xeff6('0xf')]['message']);return _0x41bb36(_0x1f1f07[_0xeff6('0xf')][_0xeff6('0x11')]);}else{logger[_0xeff6('0x12')](_0xeff6('0xb'),_0x28562c,'request\x20sent');_0x41bb36(_0x1f1f07[_0xeff6('0x13')]['message']);}})[_0xeff6('0x14')](function(_0x571c95){logger['error'](_0xeff6('0xb'),_0x28562c,_0x571c95);_0xd60c5(_0x571c95);});});}
\ No newline at end of file
+var _0xe1cb=['stringify','error','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s'];(function(_0xe05513,_0xcbdaad){var _0x220f5d=function(_0x3a65d9){while(--_0x3a65d9){_0xe05513['push'](_0xe05513['shift']());}};_0x220f5d(++_0xcbdaad);}(_0xe1cb,0x18f));var _0xbe1c=function(_0x15bfaa,_0x4a4269){_0x15bfaa=_0x15bfaa-0x0;var _0x47b8e6=_0xe1cb[_0x15bfaa];return _0x47b8e6;};'use strict';var _=require('lodash');var util=require(_0xbe1c('0x0'));var moment=require(_0xbe1c('0x1'));var BPromise=require(_0xbe1c('0x2'));var rs=require(_0xbe1c('0x3'));var fs=require('fs');var Redis=require(_0xbe1c('0x4'));var db=require(_0xbe1c('0x5'))['db'];var utils=require(_0xbe1c('0x6'));var logger=require(_0xbe1c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbe1c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14b10a,_0x1966e7,_0x7b8c70){return new BPromise(function(_0x392d2c,_0xe73056){return client['request'](_0x14b10a,_0x7b8c70)[_0xbe1c('0x9')](function(_0x581fd4){logger[_0xbe1c('0xa')](_0xbe1c('0xb'),_0x1966e7,_0xbe1c('0xc'));logger[_0xbe1c('0xd')](_0xbe1c('0xe'),_0x1966e7,'request\x20sent',JSON[_0xbe1c('0xf')](_0x581fd4));if(_0x581fd4[_0xbe1c('0x10')]){if(_0x581fd4['error']['code']===0x1f4){logger['error'](_0xbe1c('0xb'),_0x1966e7,_0x581fd4[_0xbe1c('0x10')]['message']);return _0xe73056(_0x581fd4[_0xbe1c('0x10')]['message']);}logger['error']('AnalyticCustomReport,\x20%s,\x20%s',_0x1966e7,_0x581fd4[_0xbe1c('0x10')]['message']);return _0x392d2c(_0x581fd4['error']['message']);}else{logger[_0xbe1c('0xa')]('AnalyticCustomReport,\x20%s,\x20%s',_0x1966e7,'request\x20sent');_0x392d2c(_0x581fd4[_0xbe1c('0x11')]['message']);}})['catch'](function(_0x40a23d){logger[_0xbe1c('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x1966e7,_0x40a23d);_0xe73056(_0x40a23d);});});}
\ No newline at end of file
index a05f73c..858600e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c9=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','create','put','update','delete','destroy','exports','multer','util','path','express'];(function(_0xfb3b3,_0x10db7a){var _0x36cae7=function(_0x183814){while(--_0x183814){_0xfb3b3['push'](_0xfb3b3['shift']());}};_0x36cae7(++_0x10db7a);}(_0xd2c9,0x141));var _0x9d2c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2c9[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x9d2c('0x0'));var util=require(_0x9d2c('0x1'));var path=require(_0x9d2c('0x2'));var timeout=require('connect-timeout');var express=require(_0x9d2c('0x3'));var router=express[_0x9d2c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9d2c('0x5'));var interaction=require(_0x9d2c('0x6'));var config=require(_0x9d2c('0x7'));var controller=require(_0x9d2c('0x8'));router[_0x9d2c('0x9')]('/',auth[_0x9d2c('0xa')](),controller[_0x9d2c('0xb')]);router['get'](_0x9d2c('0xc'),auth[_0x9d2c('0xa')](),controller[_0x9d2c('0xd')]);router[_0x9d2c('0x9')](_0x9d2c('0xe'),auth[_0x9d2c('0xa')](),controller[_0x9d2c('0xf')]);router[_0x9d2c('0x9')](_0x9d2c('0x10'),auth[_0x9d2c('0xa')](),controller['run']);router['get'](_0x9d2c('0x11'),auth['isAuthenticated'](),controller[_0x9d2c('0x12')]);router['post']('/',auth[_0x9d2c('0xa')](),controller[_0x9d2c('0x13')]);router[_0x9d2c('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x9d2c('0x15')]);router[_0x9d2c('0x16')](_0x9d2c('0xc'),auth[_0x9d2c('0xa')](),controller[_0x9d2c('0x17')]);module[_0x9d2c('0x18')]=router;
\ No newline at end of file
+var _0xd795=['../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','create','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2205b2,_0x4d4ecb){var _0x18b63d=function(_0x133808){while(--_0x133808){_0x2205b2['push'](_0x2205b2['shift']());}};_0x18b63d(++_0x4d4ecb);}(_0xd795,0xcc));var _0x5d79=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xd795[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5d79('0x0'));var timeout=require(_0x5d79('0x1'));var express=require(_0x5d79('0x2'));var router=express[_0x5d79('0x3')]();var fs_extra=require(_0x5d79('0x4'));var auth=require(_0x5d79('0x5'));var interaction=require(_0x5d79('0x6'));var config=require(_0x5d79('0x7'));var controller=require(_0x5d79('0x8'));router[_0x5d79('0x9')]('/',auth[_0x5d79('0xa')](),controller['index']);router[_0x5d79('0x9')](_0x5d79('0xb'),auth[_0x5d79('0xa')](),controller[_0x5d79('0xc')]);router[_0x5d79('0x9')](_0x5d79('0xd'),auth['isAuthenticated'](),controller[_0x5d79('0xe')]);router['get'](_0x5d79('0xf'),auth[_0x5d79('0xa')](),controller['run']);router[_0x5d79('0x9')](_0x5d79('0x10'),auth[_0x5d79('0xa')](),controller[_0x5d79('0x11')]);router['post']('/',auth[_0x5d79('0xa')](),controller[_0x5d79('0x12')]);router['put'](_0x5d79('0xb'),auth[_0x5d79('0xa')](),controller['update']);router['delete'](_0x5d79('0xb'),auth[_0x5d79('0xa')](),controller[_0x5d79('0x13')]);module[_0x5d79('0x14')]=router;
\ No newline at end of file
index 974983e..b96c25e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['STRING','TEXT','sequelize','exports'];(function(_0x5b944c,_0x22ae19){var _0x54862c=function(_0x1d7ef6){while(--_0x1d7ef6){_0x5b944c['push'](_0x5b944c['shift']());}};_0x54862c(++_0x22ae19);}(_0xeff8,0x186));var _0x8eff=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0xeff8[_0x24259d];return _0x5a701;};'use strict';var Sequelize=require(_0x8eff('0x0'));module[_0x8eff('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x8eff('0x2')]},'parent':{'type':Sequelize[_0x8eff('0x2')]},'table':{'type':Sequelize[_0x8eff('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x8eff('0x3')]}};
\ No newline at end of file
+var _0xfdbd=['sequelize','exports','STRING','TEXT'];(function(_0x256b67,_0x14e47b){var _0x3e2d99=function(_0x4a4c5f){while(--_0x4a4c5f){_0x256b67['push'](_0x256b67['shift']());}};_0x3e2d99(++_0x14e47b);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x57fa7e,_0xd0b5ce){_0x57fa7e=_0x57fa7e-0x0;var _0x320671=_0xfdbd[_0x57fa7e];return _0x320671;};'use strict';var Sequelize=require(_0xdfdb('0x0'));module[_0xdfdb('0x1')]={'name':{'type':Sequelize[_0xdfdb('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xdfdb('0x2')]},'parent':{'type':Sequelize[_0xdfdb('0x2')]},'table':{'type':Sequelize[_0xdfdb('0x2')]},'conditions':{'type':Sequelize[_0xdfdb('0x3')]},'joins':{'type':Sequelize[_0xdfdb('0x3')]}};
\ No newline at end of file
index 26bf2b1..a61e541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['SEC_TO_TIME(%s)','value','AnalyticMetric','select','DESC','output','fullPath','%s-%s.%s','randomstring','csv','default','AnalyticExtractedReport','cdr','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../files/reports','savename','countTable','COUNT(*)','sequelize','runReport','left_join','COUNT(%s)','MIN(%s)','AVG(%s)','Limited\x20Query:','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../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','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','Reports','UserProfileSection','userProfileId','autoAssociation','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','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','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','order','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','QueryTypes','SELECT'];(function(_0x32351e,_0x25d53a){var _0xcc55=function(_0x1ce0dd){while(--_0x1ce0dd){_0x32351e['push'](_0x32351e['shift']());}};_0xcc55(++_0x25d53a);}(_0x46ed,0x168));var _0xd46e=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x46ed[_0x49b207];return _0x2dc8fa;};'use strict';var emlformat=require(_0xd46e('0x0'));var rimraf=require(_0xd46e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd46e('0x2'));var rp=require(_0xd46e('0x3'));var moment=require(_0xd46e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd46e('0x5'));var util=require(_0xd46e('0x6'));var path=require('path');var sox=require(_0xd46e('0x7'));var csv=require(_0xd46e('0x8'));var ejs=require(_0xd46e('0x9'));var fs=require('fs');var fs_extra=require(_0xd46e('0xa'));var _=require(_0xd46e('0xb'));var squel=require(_0xd46e('0xc'));var crypto=require(_0xd46e('0xd'));var jsforce=require(_0xd46e('0xe'));var deskjs=require(_0xd46e('0xf'));var toCsv=require(_0xd46e('0x8'));var querystring=require(_0xd46e('0x10'));var Papa=require('papaparse');var Redis=require(_0xd46e('0x11'));var authService=require(_0xd46e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd46e('0x13'));var hardwareService=require(_0xd46e('0x14'));var logger=require(_0xd46e('0x15'))(_0xd46e('0x16'));var utils=require(_0xd46e('0x17'));var config=require(_0xd46e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd46e('0x19'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0xf3048c,_0x27dbfb){_0x27dbfb=_0x27dbfb||0xcc;return function(_0x53b309){if(_0x53b309){return _0xf3048c['sendStatus'](_0x27dbfb);}return _0xf3048c[_0xd46e('0x1a')](_0x27dbfb)[_0xd46e('0x1b')]();};}function respondWithResult(_0x1e9aae,_0x3fdf88){_0x3fdf88=_0x3fdf88||0xc8;return function(_0x50c7c3){if(_0x50c7c3){return _0x1e9aae[_0xd46e('0x1a')](_0x3fdf88)[_0xd46e('0x1c')](_0x50c7c3);}};}function respondWithFilteredResult(_0x417402,_0x3d72ce){return function(_0x36a317){if(_0x36a317){var _0x47fa8f=typeof _0x3d72ce[_0xd46e('0x1d')]===_0xd46e('0x1e')&&typeof _0x3d72ce[_0xd46e('0x1f')]==='undefined';var _0x5ddd04=_0x36a317[_0xd46e('0x20')];var _0x1bd574=_0x47fa8f?0x0:_0x3d72ce['offset'];var _0x4fd1f2=_0x47fa8f?_0x36a317[_0xd46e('0x20')]:_0x3d72ce[_0xd46e('0x1d')]+_0x3d72ce[_0xd46e('0x1f')];var _0x2273c5;if(_0x4fd1f2>=_0x5ddd04){_0x4fd1f2=_0x5ddd04;_0x2273c5=0xc8;}else{_0x2273c5=0xce;}_0x417402[_0xd46e('0x1a')](_0x2273c5);return _0x417402[_0xd46e('0x21')](_0xd46e('0x22'),_0x1bd574+'-'+_0x4fd1f2+'/'+_0x5ddd04)[_0xd46e('0x1c')](_0x36a317);}return null;};}function patchUpdates(_0xb4940){return function(_0x3c7e91){try{jsonpatch[_0xd46e('0x23')](_0x3c7e91,_0xb4940,!![]);}catch(_0x5ba94d){return BPromise[_0xd46e('0x24')](_0x5ba94d);}return _0x3c7e91[_0xd46e('0x25')]();};}function saveUpdates(_0x79aa51,_0x45ce0b){return function(_0x128246){if(_0x128246){return _0x128246[_0xd46e('0x26')](_0x79aa51)[_0xd46e('0x27')](function(_0x8a1be){return _0x8a1be;});}return null;};}function removeEntity(_0x62dea5,_0x4cf899){return function(_0x314570){if(_0x314570){return _0x314570['destroy']()['then'](function(){var _0x371054=_0x314570[_0xd46e('0x28')]({'plain':!![]});var _0x21135f=_0xd46e('0x29');return db[_0xd46e('0x2a')][_0xd46e('0x2b')]({'where':{'type':_0x21135f,'resourceId':_0x371054['id']}})[_0xd46e('0x27')](function(){return _0x314570;});})['then'](function(){_0x62dea5[_0xd46e('0x1a')](0xcc)[_0xd46e('0x1b')]();});}};}function handleEntityNotFound(_0xddbce9,_0x17db79){return function(_0x96f15c){if(!_0x96f15c){_0xddbce9[_0xd46e('0x2c')](0x194);}return _0x96f15c;};}function handleError(_0x58aeef,_0x465d54){_0x465d54=_0x465d54||0x1f4;return function(_0x3a1ced){logger[_0xd46e('0x2d')](_0x3a1ced[_0xd46e('0x2e')]);if(_0x3a1ced[_0xd46e('0x2f')]){delete _0x3a1ced[_0xd46e('0x2f')];}_0x58aeef[_0xd46e('0x1a')](_0x465d54)[_0xd46e('0x30')](_0x3a1ced);};}exports[_0xd46e('0x31')]=function(_0x45ea47,_0x2ff785){var _0x504324={},_0x2f4a1b={},_0x5ed8dc={'count':0x0,'rows':[]};var _0x1248ce=_[_0xd46e('0x32')](db[_0xd46e('0x33')][_0xd46e('0x34')],function(_0x5ef248){return{'name':_0x5ef248[_0xd46e('0x35')],'type':_0x5ef248[_0xd46e('0x36')]['key']};});_0x2f4a1b[_0xd46e('0x37')]=_[_0xd46e('0x32')](_0x1248ce,'name');_0x2f4a1b[_0xd46e('0x38')]=_[_0xd46e('0x39')](_0x45ea47[_0xd46e('0x38')]);_0x2f4a1b['filters']=_['intersection'](_0x2f4a1b[_0xd46e('0x37')],_0x2f4a1b[_0xd46e('0x38')]);_0x504324[_0xd46e('0x3a')]=_[_0xd46e('0x3b')](_0x2f4a1b[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x504324['attributes']=_0x504324[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x504324[_0xd46e('0x3a')]:_0x2f4a1b[_0xd46e('0x37')];if(!_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3e')](_0xd46e('0x3f'))){_0x504324['limit']=qs[_0xd46e('0x1f')](_0x45ea47[_0xd46e('0x38')]['limit']);_0x504324[_0xd46e('0x1d')]=qs[_0xd46e('0x1d')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x1d')]);}_0x504324['order']=qs[_0xd46e('0x40')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x40')]);_0x504324[_0xd46e('0x41')]=qs[_0xd46e('0x42')](_[_0xd46e('0x43')](_0x45ea47[_0xd46e('0x38')],_0x2f4a1b[_0xd46e('0x42')]),_0x1248ce);if(_0x45ea47['query'][_0xd46e('0x44')]){_0x504324[_0xd46e('0x41')]=_[_0xd46e('0x45')](_0x504324[_0xd46e('0x41')],{'$or':_[_0xd46e('0x32')](_0x1248ce,function(_0x56f99c){if(_0x56f99c[_0xd46e('0x36')]!=='VIRTUAL'){var _0x55230d={};_0x55230d[_0x56f99c['name']]={'$like':'%'+_0x45ea47['query'][_0xd46e('0x44')]+'%'};return _0x55230d;}})});}_0x504324=_['merge']({},_0x504324,_0x45ea47[_0xd46e('0x46')]);var _0x40720e={'where':_0x504324['where']};return db[_0xd46e('0x33')][_0xd46e('0x20')](_0x40720e)[_0xd46e('0x27')](function(_0x31ba12){_0x5ed8dc[_0xd46e('0x20')]=_0x31ba12;if(_0x45ea47[_0xd46e('0x38')][_0xd46e('0x47')]){_0x504324[_0xd46e('0x48')]=[{'all':!![]}];}return db[_0xd46e('0x33')][_0xd46e('0x49')](_0x504324);})[_0xd46e('0x27')](function(_0x5ea048){_0x5ed8dc['rows']=_0x5ea048;return _0x5ed8dc;})['then'](respondWithFilteredResult(_0x2ff785,_0x504324))[_0xd46e('0x4a')](handleError(_0x2ff785,null));};exports['show']=function(_0x168d35,_0x272f5f){var _0x3fdf67={'raw':!![],'where':{'id':_0x168d35[_0xd46e('0x4b')]['id']}},_0x416505={};_0x416505[_0xd46e('0x37')]=_[_0xd46e('0x39')](db[_0xd46e('0x33')]['rawAttributes']);_0x416505[_0xd46e('0x38')]=_['keys'](_0x168d35[_0xd46e('0x38')]);_0x416505[_0xd46e('0x42')]=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],_0x416505[_0xd46e('0x38')]);_0x3fdf67['attributes']=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x168d35[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x3fdf67['attributes']=_0x3fdf67[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x3fdf67[_0xd46e('0x3a')]:_0x416505[_0xd46e('0x37')];if(_0x168d35[_0xd46e('0x38')]['includeAll']){_0x3fdf67[_0xd46e('0x48')]=[{'all':!![]}];}_0x3fdf67=_[_0xd46e('0x45')]({},_0x3fdf67,_0x168d35[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fdf67)[_0xd46e('0x27')](handleEntityNotFound(_0x272f5f,null))[_0xd46e('0x27')](respondWithResult(_0x272f5f,null))[_0xd46e('0x4a')](handleError(_0x272f5f,null));};exports['create']=function(_0xf9dab,_0x71a8dc){return db[_0xd46e('0x33')][_0xd46e('0x4d')](_0xf9dab[_0xd46e('0x4e')],{})['then'](function(_0x4ae314){var _0x3a94cf=_0xf9dab[_0xd46e('0x4f')][_0xd46e('0x28')]({'plain':!![]});if(!_0x3a94cf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a94cf['role']===_0xd46e('0x4f')){var _0x9d8638=_0x4ae314['get']({'plain':!![]});var _0x2eee92=_0xd46e('0x50');return db[_0xd46e('0x51')][_0xd46e('0x4c')]({'where':{'name':_0x2eee92,'userProfileId':_0x3a94cf[_0xd46e('0x52')]},'raw':!![]})[_0xd46e('0x27')](function(_0x80ed51){if(_0x80ed51&&_0x80ed51[_0xd46e('0x53')]===0x0){return db['UserProfileResource'][_0xd46e('0x4d')]({'name':_0x9d8638[_0xd46e('0x2f')],'resourceId':_0x9d8638['id'],'type':_0xd46e('0x29'),'sectionId':_0x80ed51['id']},{})[_0xd46e('0x27')](function(){return _0x4ae314;});}else{return _0x4ae314;}})['catch'](function(_0x56dd9a){logger[_0xd46e('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56dd9a);throw _0x56dd9a;});}return _0x4ae314;})[_0xd46e('0x27')](respondWithResult(_0x71a8dc,0xc9))[_0xd46e('0x4a')](handleError(_0x71a8dc,null));};exports[_0xd46e('0x26')]=function(_0x31f7eb,_0x5a7870){if(_0x31f7eb[_0xd46e('0x4e')]['id']){delete _0x31f7eb['body']['id'];}return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x31f7eb[_0xd46e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a7870,null))[_0xd46e('0x27')](saveUpdates(_0x31f7eb[_0xd46e('0x4e')],null))[_0xd46e('0x27')](respondWithResult(_0x5a7870,null))[_0xd46e('0x4a')](handleError(_0x5a7870,null));};exports[_0xd46e('0x2b')]=function(_0x2cc676,_0x2760ef){return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x2cc676[_0xd46e('0x4b')]['id']}})[_0xd46e('0x27')](handleEntityNotFound(_0x2760ef,null))[_0xd46e('0x27')](removeEntity(_0x2760ef,null))[_0xd46e('0x4a')](handleError(_0x2760ef,null));};exports[_0xd46e('0x54')]=function(_0x47a86c,_0x3ec709){var _0x37a22f=0xa;var _0xe0cd61=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0xaf9641={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x481dce={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x2dacb4=function(_0x2f9fcb){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x2f9fcb);};var _0x1aaa99=function(_0x272514){if(!_0x272514||!_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x476f09='(',_0x5067b7=0x0;_0x5067b7<_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')];_0x5067b7+=0x1){_0x5067b7>0x0&&(_0x476f09+='\x20'+_0x272514[_0xd46e('0x68')]+'\x20');_0x476f09+=_0x272514['rules'][_0x5067b7][_0xd46e('0x69')]?_0x1aaa99(_0x272514[_0xd46e('0x67')][_0x5067b7]['group']):_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6a')]+'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['condition']+(_0x2dacb4(_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6b')])?'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['value']:'');}return _0x476f09+')';};var _0xe5f8cd={'where':{'id':_0x47a86c[_0xd46e('0x4b')]['id']}},_0x516e7d,_0x32eed0,_0x148187,_0x35db1b,_0x4f3ba0;_0xe5f8cd=_[_0xd46e('0x45')]({},_0xe5f8cd,_0x47a86c[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0xe5f8cd)[_0xd46e('0x27')](function(_0x16f906){if(_0x16f906){_0x516e7d=_0x16f906;return _0x16f906[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0x3e55a3){if(_0x3e55a3){if(!_0x3e55a3[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))](_0xd46e('0x6f'),0x193);}_0x32eed0=_0x3e55a3;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3e0ed5){if(_0x3e0ed5){_0x148187=_[_0xd46e('0x70')](_0x3e0ed5,'id');var _0x2fff69;var _0x249938=squel['select']();_0x249938[_0xd46e('0x71')](_0x516e7d[_0xd46e('0x72')]);for(var _0xfb4073=0x0;_0xfb4073<_0x32eed0[_0xd46e('0x3d')];_0xfb4073+=0x1){_0x2fff69=_0x32eed0[_0xfb4073]['MetricId']?_0x148187[_0x32eed0[_0xfb4073][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x32eed0[_0xfb4073]['field'];_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0xaf9641[_0x32eed0[_0xfb4073]['function']],'%s',_0x2fff69):_0x2fff69;_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x481dce[_0x32eed0[_0xfb4073]['format']],'%s',_0x2fff69):_0x2fff69;if(_0x32eed0[_0xfb4073][_0xd46e('0x78')]){_0x249938['group'](_0x2fff69);}_0x32eed0[_0xfb4073][_0xd46e('0x79')]&&_0x249938[_0xd46e('0x7a')](_0x2fff69,_0x32eed0[_0xfb4073]['orderBy']==='DESC'?![]:!![]);_0x249938[_0xd46e('0x6a')](_0x2fff69,_0x32eed0[_0xfb4073][_0xd46e('0x7b')]||_0x2fff69);}if(_0x516e7d[_0xd46e('0x7c')]){_0x516e7d[_0xd46e('0x7c')]=JSON['parse'](_0x516e7d[_0xd46e('0x7c')]);for(var _0x372509=0x0;_0x372509<_0x516e7d['joins'][_0xd46e('0x3d')];_0x372509+=0x1){if(_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0xe0cd61,_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')])&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7d')]&&_0x516e7d[_0xd46e('0x7c')][_0x372509]['foreignTable']&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7e')]){_0x249938[_0x516e7d['joins'][_0x372509][_0xd46e('0x36')]](_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0x516e7d[_0xd46e('0x72')],_0x516e7d['joins'][_0x372509]['parentKey'],_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],_0x516e7d['joins'][_0x372509]['foreignKey']));}}}if(_0x516e7d['conditions']){_0x516e7d[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x516e7d[_0xd46e('0x81')]);_0x249938['where'](_0x1aaa99(_0x516e7d[_0xd46e('0x81')][_0xd46e('0x69')]));}_0x4f3ba0=_0x249938[_0xd46e('0x83')]();_0x249938['limit'](_0x37a22f);_0x249938['offset'](0x0);logger['debug']('Limited\x20Query:',_0x249938[_0xd46e('0x84')]());return dbH['sequelize'][_0xd46e('0x38')](_0x249938['toString'](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](respondWithResult(_0x3ec709,null))[_0xd46e('0x4a')](handleError(_0x3ec709,null));};function runReport(_0xf16d87,_0x99872a,_0x57a7cc){var _0x586024=_0x99872a[_0xd46e('0x2f')];var _0x383919=0xa;var _0x114f2c=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0x4ca21f={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x5ef4cc={'SEC_TO_TIME':_0xd46e('0x87'),'DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x88460a=function(_0x3a3744){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x3a3744);};var _0x3c476d=function(_0x1b2a6d){if(!_0x1b2a6d||!_0x1b2a6d[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x441f73='(',_0x1d2738=0x0;_0x1d2738<_0x1b2a6d['rules'][_0xd46e('0x3d')];_0x1d2738+=0x1){_0x1d2738>0x0&&(_0x441f73+='\x20'+_0x1b2a6d['operator']+'\x20');_0x441f73+=_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x69')]?_0x3c476d(_0x1b2a6d['rules'][_0x1d2738][_0xd46e('0x69')]):_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6a')]+'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')]+(_0x88460a(_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')])?'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x88')]:'');}return _0x441f73+')';};var _0x3fa34d={'where':{'id':_0xf16d87['id']}},_0xc098c9,_0x5f5ba7,_0x493df5,_0x18e140,_0x459a0c;_0x3fa34d=_[_0xd46e('0x45')]({},_0x3fa34d,_0x57a7cc);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fa34d)[_0xd46e('0x27')](function(_0x5b554e){if(_0x5b554e){_0xc098c9=_0x5b554e;return _0x5b554e[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0xa254f5){if(_0xa254f5){if(!_0xa254f5[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5f5ba7=_0xa254f5;return db[_0xd46e('0x89')][_0xd46e('0x49')]({'raw':!![]});}return null;})['then'](function(_0x3c8d68){if(_0x3c8d68){_0x493df5=_[_0xd46e('0x70')](_0x3c8d68,'id');var _0x9e222d;var _0x3da17e=squel[_0xd46e('0x8a')]();_0x3da17e[_0xd46e('0x71')](_0xc098c9[_0xd46e('0x72')]);for(var _0x282f71=0x0;_0x282f71<_0x5f5ba7[_0xd46e('0x3d')];_0x282f71+=0x1){_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x73')]?_0x493df5[_0x5f5ba7[_0x282f71][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x5f5ba7[_0x282f71][_0xd46e('0x6a')];_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x75')]?_['replace'](_0x4ca21f[_0x5f5ba7[_0x282f71]['function']],'%s',_0x9e222d):_0x9e222d;_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x5ef4cc[_0x5f5ba7[_0x282f71][_0xd46e('0x77')]],'%s',_0x9e222d):_0x9e222d;if(_0x5f5ba7[_0x282f71][_0xd46e('0x78')]){_0x3da17e[_0xd46e('0x69')](_0x9e222d);}_0x5f5ba7[_0x282f71][_0xd46e('0x79')]&&_0x3da17e['order'](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x3da17e[_0xd46e('0x6a')](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x7b')]||_0x9e222d);}if(_0xc098c9['joins']){_0xc098c9[_0xd46e('0x7c')]=JSON[_0xd46e('0x82')](_0xc098c9['joins']);for(var _0xdf967c=0x0;_0xdf967c<_0xc098c9['joins']['length'];_0xdf967c+=0x1){if(_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x114f2c,_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['type'])&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7d')]&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7f')]&&_0xc098c9['joins'][_0xdf967c]['foreignKey']){_0x3da17e[_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]](_0xc098c9['joins'][_0xdf967c]['foreignTable'],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0xc098c9[_0xd46e('0x72')],_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['parentKey'],_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x7f')],_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7e')]));}}}if(_0xc098c9[_0xd46e('0x81')]){_0xc098c9[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0xc098c9[_0xd46e('0x81')]);_0x3da17e[_0xd46e('0x41')](_0x3c476d(_0xc098c9['conditions'][_0xd46e('0x69')]));}_0x459a0c=_0x3da17e[_0xd46e('0x83')]();_0x3da17e['limit'](_0x383919);_0x3da17e['offset'](0x0);return;}})[_0xd46e('0x27')](function(){if(_0x99872a[_0xd46e('0x8c')]==='web'){return null;}var _0x5e637d=_[_0xd46e('0x45')](_0x99872a,{'name':_0x99872a[_0xd46e('0x8d')]||_0x99872a['name']||_0xc098c9[_0xd46e('0x2f')],'basename':_0x586024,'savename':util[_0xd46e('0x77')](_0xd46e('0x8e'),_0x99872a[_0xd46e('0x2f')]||_0xc098c9[_0xd46e('0x2f')],require(_0xd46e('0x8f'))['generate'](0x4),_0x99872a[_0xd46e('0x8c')]||_0xd46e('0x90')),'reportId':_0xc098c9['id'],'reportType':_0xd46e('0x91')});return db[_0xd46e('0x92')][_0xd46e('0x4d')](_0x5e637d,{'raw':!![]});})[_0xd46e('0x27')](function(_0x3311a6){if(_0xc098c9[_0xd46e('0x72')]===_0xd46e('0x93')){_0x459a0c[_0xd46e('0x41')](_0xc098c9[_0xd46e('0x72')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x99872a[_0xd46e('0x94')],_0x99872a['endDate']);}else{_0x459a0c['where'](_0xc098c9[_0xd46e('0x72')]+_0xd46e('0x95'),_0x99872a[_0xd46e('0x94')],_0x99872a[_0xd46e('0x96')]);}if(_0x3311a6){logger[_0xd46e('0x97')](_0xd46e('0x98'),_0x459a0c[_0xd46e('0x84')]());require(_0xd46e('0x99'))['fork'](path[_0xd46e('0x55')](__dirname,'../../components/export/',_0x3311a6[_0xd46e('0x8c')]),[_0x3311a6['id'],_0x459a0c[_0xd46e('0x84')](),path[_0xd46e('0x55')](__dirname,_0xd46e('0x9a'),_0x3311a6[_0xd46e('0x9b')]),_0x586024]);return _0x3311a6;}else{var _0x399918=squel[_0xd46e('0x8a')]();_0x399918[_0xd46e('0x71')]('('+_0x459a0c['toString']()+')',_0xd46e('0x9c'));_0x399918[_0xd46e('0x6a')](_0xd46e('0x9d'),'count');_0x459a0c[_0xd46e('0x1f')](_0x99872a[_0xd46e('0x1f')]||_0x383919);_0x459a0c[_0xd46e('0x1d')](_0x99872a['offset']||0x0);return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x399918[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]})['then'](function(_0x4967ff){if(!_0x4967ff[_0xd46e('0x3d')]){_0x18e140=0x0;}else{_0x18e140=_0x4967ff[0x0][_0xd46e('0x20')]||0x0;}return dbH['sequelize'][_0xd46e('0x38')](_0x459a0c[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]});})[_0xd46e('0x27')](function(_0x4bb76b){return{'rows':_0x4bb76b||[],'count':_0x18e140};});}});}exports['run']=function(_0x204a9f,_0x52ca5a){return runReport(_0x204a9f[_0xd46e('0x4b')],_0x204a9f[_0xd46e('0x38')],_0x204a9f['options'])[_0xd46e('0x27')](respondWithResult(_0x52ca5a,null))[_0xd46e('0x4a')](handleError(_0x52ca5a,null));};exports[_0xd46e('0x9f')]=runReport;exports[_0xd46e('0x38')]=function(_0x786ae,_0x537c73){var _0x1610bd=0xa;var _0x20cc4c=[_0xd46e('0x55'),_0xd46e('0xa0'),_0xd46e('0x56'),_0xd46e('0x57')];var _0x368742={'SUM':_0xd46e('0x58'),'COUNT':_0xd46e('0xa1'),'COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':_0xd46e('0xa2'),'AVG':_0xd46e('0xa3'),'GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x285cf8={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xc87da2=function(_0x195f02){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),'IS\x20NOT\x20NULL',_0xd46e('0x65'),_0xd46e('0x66')],_0x195f02);};var _0x44322f=function(_0x49959f){if(!_0x49959f||!_0x49959f['rules'][_0xd46e('0x3d')]){return'';}for(var _0x2094e5='(',_0x85aac1=0x0;_0x85aac1<_0x49959f[_0xd46e('0x67')][_0xd46e('0x3d')];_0x85aac1+=0x1){_0x85aac1>0x0&&(_0x2094e5+='\x20'+_0x49959f[_0xd46e('0x68')]+'\x20');_0x2094e5+=_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]?_0x44322f(_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]):_0x49959f['rules'][_0x85aac1][_0xd46e('0x6a')]+'\x20'+_0x49959f['rules'][_0x85aac1]['condition']+(_0xc87da2(_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x6b')])?'\x20'+_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x88')]:'');}return _0x2094e5+')';};var _0x101a29={'where':{'id':_0x786ae[_0xd46e('0x4b')]['id']}},_0x3a44da,_0x417068,_0x52e73e,_0x206077,_0xe729b6;_0x101a29=_[_0xd46e('0x45')]({},_0x101a29,_0x786ae[_0xd46e('0x46')]);return db['AnalyticDefaultReport'][_0xd46e('0x4c')](_0x101a29)[_0xd46e('0x27')](function(_0x1d08bb){if(_0x1d08bb){_0x3a44da=_0x1d08bb;return _0x1d08bb['getFields']();}return null;})[_0xd46e('0x27')](function(_0x8c6ed1){if(_0x8c6ed1){if(!_0x8c6ed1['length']){throw new db['Sequelize']['ValidationErrorItem'](_0xd46e('0x6f'),0x193);}_0x417068=_0x8c6ed1;return db[_0xd46e('0x89')]['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3a13f8){if(_0x3a13f8){_0x52e73e=_['keyBy'](_0x3a13f8,'id');var _0x5a8661;var _0x157fb0=squel[_0xd46e('0x8a')]();_0x157fb0[_0xd46e('0x71')](_0x3a44da[_0xd46e('0x72')]);for(var _0x50750f=0x0;_0x50750f<_0x417068['length'];_0x50750f+=0x1){_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x73')]?_0x52e73e[_0x417068[_0x50750f][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x417068[_0x50750f][_0xd46e('0x6a')];_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0x368742[_0x417068[_0x50750f][_0xd46e('0x75')]],'%s',_0x5a8661):_0x5a8661;_0x5a8661=_0x417068[_0x50750f]['format']?_[_0xd46e('0x76')](_0x285cf8[_0x417068[_0x50750f][_0xd46e('0x77')]],'%s',_0x5a8661):_0x5a8661;if(_0x417068[_0x50750f]['groupBy']){_0x157fb0[_0xd46e('0x69')](_0x5a8661);}_0x417068[_0x50750f][_0xd46e('0x79')]&&_0x157fb0[_0xd46e('0x7a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x157fb0[_0xd46e('0x6a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x7b')]||_0x5a8661);}if(_0x3a44da[_0xd46e('0x7c')]){_0x3a44da['joins']=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x7c')]);for(var _0x3c819b=0x0;_0x3c819b<_0x3a44da[_0xd46e('0x7c')][_0xd46e('0x3d')];_0x3c819b+=0x1){if(_0x3a44da['joins'][_0x3c819b][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x20cc4c,_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')])&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7d')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']){_0x157fb0[_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')]](_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3a44da[_0xd46e('0x72')],_0x3a44da['joins'][_0x3c819b][_0xd46e('0x7d')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']));}}}if(_0x3a44da[_0xd46e('0x81')]){_0x3a44da[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x81')]);_0x157fb0[_0xd46e('0x41')](_0x44322f(_0x3a44da[_0xd46e('0x81')][_0xd46e('0x69')]));}_0xe729b6=_0x157fb0[_0xd46e('0x83')]();_0x157fb0[_0xd46e('0x1f')](_0x1610bd);_0x157fb0['offset'](0x0);logger['debug'](_0xd46e('0xa4'),_0x157fb0['toString']());return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x157fb0[_0xd46e('0x84')](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](function(){return{'sql':_0xe729b6['toString']()};})['then'](respondWithResult(_0x537c73,null))[_0xd46e('0x4a')](handleError(_0x537c73,null));};
\ No newline at end of file
+var _0x4975=['set','Content-Range','save','update','then','destroy','get','DefaultReports','UserProfileResource','error','stack','name','index','AnalyticDefaultReport','rawAttributes','type','key','map','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','body','role','user','Reports','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','SUM(%s)','COUNT(%s)','MAX(%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)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','format','groupBy','orderBy','DESC','joins','includes','parentKey','foreignKey','foreignTable','conditions','parse','debug','Limited\x20Query:','sequelize','QueryTypes','SELECT','left_join','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','HOUR(%s)','operator','Please\x20insert\x20at\x20least\x20one\x20field','alias','%s.%s\x20=\x20%s.%s','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','toString','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','cross_join','getFields','replace','clone','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x536c1e,_0x16911b){var _0x260927=function(_0x559f77){while(--_0x559f77){_0x536c1e['push'](_0x536c1e['shift']());}};_0x260927(++_0x16911b);}(_0x4975,0x86));var _0x5497=function(_0x2e7ae4,_0x181873){_0x2e7ae4=_0x2e7ae4-0x0;var _0x2f06a5=_0x4975[_0x2e7ae4];return _0x2f06a5;};'use strict';var emlformat=require(_0x5497('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5497('0x1'));var jsonpatch=require(_0x5497('0x2'));var rp=require(_0x5497('0x3'));var moment=require(_0x5497('0x4'));var BPromise=require(_0x5497('0x5'));var Mustache=require(_0x5497('0x6'));var util=require(_0x5497('0x7'));var path=require(_0x5497('0x8'));var sox=require(_0x5497('0x9'));var csv=require(_0x5497('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5497('0xb'));var _=require('lodash');var squel=require(_0x5497('0xc'));var crypto=require(_0x5497('0xd'));var jsforce=require(_0x5497('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5497('0xa'));var querystring=require('querystring');var Papa=require(_0x5497('0xf'));var Redis=require(_0x5497('0x10'));var authService=require(_0x5497('0x11'));var qs=require(_0x5497('0x12'));var as=require(_0x5497('0x13'));var hardwareService=require(_0x5497('0x14'));var logger=require(_0x5497('0x15'))(_0x5497('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5497('0x17'))['db'];var dbH=require(_0x5497('0x17'))[_0x5497('0x18')];function respondWithStatusCode(_0x984990,_0x747dc7){_0x747dc7=_0x747dc7||0xcc;return function(_0x365144){if(_0x365144){return _0x984990[_0x5497('0x19')](_0x747dc7);}return _0x984990[_0x5497('0x1a')](_0x747dc7)[_0x5497('0x1b')]();};}function respondWithResult(_0x1a4c74,_0x55f590){_0x55f590=_0x55f590||0xc8;return function(_0x11b0a9){if(_0x11b0a9){return _0x1a4c74['status'](_0x55f590)[_0x5497('0x1c')](_0x11b0a9);}};}function respondWithFilteredResult(_0x2bfd8a,_0x19e5f3){return function(_0x3ce50b){if(_0x3ce50b){var _0x37c18e=typeof _0x19e5f3[_0x5497('0x1d')]===_0x5497('0x1e')&&typeof _0x19e5f3['limit']==='undefined';var _0x3f4d20=_0x3ce50b[_0x5497('0x1f')];var _0x3a47fd=_0x37c18e?0x0:_0x19e5f3['offset'];var _0xbf1ba7=_0x37c18e?_0x3ce50b[_0x5497('0x1f')]:_0x19e5f3[_0x5497('0x1d')]+_0x19e5f3[_0x5497('0x20')];var _0x1b1b43;if(_0xbf1ba7>=_0x3f4d20){_0xbf1ba7=_0x3f4d20;_0x1b1b43=0xc8;}else{_0x1b1b43=0xce;}_0x2bfd8a[_0x5497('0x1a')](_0x1b1b43);return _0x2bfd8a[_0x5497('0x21')](_0x5497('0x22'),_0x3a47fd+'-'+_0xbf1ba7+'/'+_0x3f4d20)[_0x5497('0x1c')](_0x3ce50b);}return null;};}function patchUpdates(_0x3f54ef){return function(_0x186065){try{jsonpatch['apply'](_0x186065,_0x3f54ef,!![]);}catch(_0x720767){return BPromise['reject'](_0x720767);}return _0x186065[_0x5497('0x23')]();};}function saveUpdates(_0xd0868d,_0x44265c){return function(_0x2f587d){if(_0x2f587d){return _0x2f587d[_0x5497('0x24')](_0xd0868d)[_0x5497('0x25')](function(_0x5018fa){return _0x5018fa;});}return null;};}function removeEntity(_0x54043a,_0x1eefce){return function(_0x34b97f){if(_0x34b97f){return _0x34b97f[_0x5497('0x26')]()[_0x5497('0x25')](function(){var _0x5223b5=_0x34b97f[_0x5497('0x27')]({'plain':!![]});var _0x57268c=_0x5497('0x28');return db[_0x5497('0x29')][_0x5497('0x26')]({'where':{'type':_0x57268c,'resourceId':_0x5223b5['id']}})[_0x5497('0x25')](function(){return _0x34b97f;});})[_0x5497('0x25')](function(){_0x54043a[_0x5497('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4af5f4,_0x5406e2){return function(_0x583d06){if(!_0x583d06){_0x4af5f4['sendStatus'](0x194);}return _0x583d06;};}function handleError(_0x39a2b7,_0x48d146){_0x48d146=_0x48d146||0x1f4;return function(_0x5e9356){logger[_0x5497('0x2a')](_0x5e9356[_0x5497('0x2b')]);if(_0x5e9356[_0x5497('0x2c')]){delete _0x5e9356['name'];}_0x39a2b7['status'](_0x48d146)['send'](_0x5e9356);};}exports[_0x5497('0x2d')]=function(_0x471e0b,_0xf4c117){var _0x5b8f79={},_0x489f71={},_0x594866={'count':0x0,'rows':[]};var _0xa28dd8=_['map'](db[_0x5497('0x2e')][_0x5497('0x2f')],function(_0x77c575){return{'name':_0x77c575['fieldName'],'type':_0x77c575[_0x5497('0x30')][_0x5497('0x31')]};});_0x489f71['model']=_[_0x5497('0x32')](_0xa28dd8,_0x5497('0x2c'));_0x489f71[_0x5497('0x33')]=_['keys'](_0x471e0b[_0x5497('0x33')]);_0x489f71[_0x5497('0x34')]=_[_0x5497('0x35')](_0x489f71[_0x5497('0x36')],_0x489f71[_0x5497('0x33')]);_0x5b8f79['attributes']=_[_0x5497('0x35')](_0x489f71[_0x5497('0x36')],qs['fields'](_0x471e0b[_0x5497('0x33')][_0x5497('0x37')]));_0x5b8f79[_0x5497('0x38')]=_0x5b8f79[_0x5497('0x38')][_0x5497('0x39')]?_0x5b8f79[_0x5497('0x38')]:_0x489f71['model'];if(!_0x471e0b[_0x5497('0x33')]['hasOwnProperty'](_0x5497('0x3a'))){_0x5b8f79[_0x5497('0x20')]=qs[_0x5497('0x20')](_0x471e0b['query']['limit']);_0x5b8f79[_0x5497('0x1d')]=qs[_0x5497('0x1d')](_0x471e0b[_0x5497('0x33')][_0x5497('0x1d')]);}_0x5b8f79[_0x5497('0x3b')]=qs[_0x5497('0x3c')](_0x471e0b['query'][_0x5497('0x3c')]);_0x5b8f79[_0x5497('0x3d')]=qs[_0x5497('0x34')](_[_0x5497('0x3e')](_0x471e0b[_0x5497('0x33')],_0x489f71[_0x5497('0x34')]),_0xa28dd8);if(_0x471e0b[_0x5497('0x33')][_0x5497('0x3f')]){_0x5b8f79[_0x5497('0x3d')]=_['merge'](_0x5b8f79[_0x5497('0x3d')],{'$or':_[_0x5497('0x32')](_0xa28dd8,function(_0x1e9616){if(_0x1e9616[_0x5497('0x30')]!==_0x5497('0x40')){var _0xa5ebe6={};_0xa5ebe6[_0x1e9616[_0x5497('0x2c')]]={'$like':'%'+_0x471e0b['query'][_0x5497('0x3f')]+'%'};return _0xa5ebe6;}})});}_0x5b8f79=_[_0x5497('0x41')]({},_0x5b8f79,_0x471e0b[_0x5497('0x42')]);var _0x35993c={'where':_0x5b8f79[_0x5497('0x3d')]};return db[_0x5497('0x2e')][_0x5497('0x1f')](_0x35993c)['then'](function(_0x2137bd){_0x594866[_0x5497('0x1f')]=_0x2137bd;if(_0x471e0b[_0x5497('0x33')][_0x5497('0x43')]){_0x5b8f79[_0x5497('0x44')]=[{'all':!![]}];}return db[_0x5497('0x2e')][_0x5497('0x45')](_0x5b8f79);})[_0x5497('0x25')](function(_0x2021ae){_0x594866[_0x5497('0x46')]=_0x2021ae;return _0x594866;})['then'](respondWithFilteredResult(_0xf4c117,_0x5b8f79))[_0x5497('0x47')](handleError(_0xf4c117,null));};exports['show']=function(_0x40822a,_0x9fc24){var _0x26ef01={'raw':!![],'where':{'id':_0x40822a[_0x5497('0x48')]['id']}},_0x3602ec={};_0x3602ec['model']=_[_0x5497('0x49')](db[_0x5497('0x2e')]['rawAttributes']);_0x3602ec[_0x5497('0x33')]=_['keys'](_0x40822a[_0x5497('0x33')]);_0x3602ec['filters']=_[_0x5497('0x35')](_0x3602ec[_0x5497('0x36')],_0x3602ec[_0x5497('0x33')]);_0x26ef01[_0x5497('0x38')]=_[_0x5497('0x35')](_0x3602ec['model'],qs['fields'](_0x40822a['query']['fields']));_0x26ef01[_0x5497('0x38')]=_0x26ef01[_0x5497('0x38')][_0x5497('0x39')]?_0x26ef01[_0x5497('0x38')]:_0x3602ec[_0x5497('0x36')];if(_0x40822a[_0x5497('0x33')][_0x5497('0x43')]){_0x26ef01[_0x5497('0x44')]=[{'all':!![]}];}_0x26ef01=_[_0x5497('0x41')]({},_0x26ef01,_0x40822a['options']);return db[_0x5497('0x2e')][_0x5497('0x4a')](_0x26ef01)[_0x5497('0x25')](handleEntityNotFound(_0x9fc24,null))['then'](respondWithResult(_0x9fc24,null))[_0x5497('0x47')](handleError(_0x9fc24,null));};exports['create']=function(_0x12ffbc,_0x31f1ba){return db[_0x5497('0x2e')]['create'](_0x12ffbc[_0x5497('0x4b')],{})[_0x5497('0x25')](function(_0x515c3e){var _0x3abc92=_0x12ffbc['user'][_0x5497('0x27')]({'plain':!![]});if(!_0x3abc92)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3abc92[_0x5497('0x4c')]===_0x5497('0x4d')){var _0x26fd9f=_0x515c3e[_0x5497('0x27')]({'plain':!![]});var _0x25e80c=_0x5497('0x4e');return db[_0x5497('0x4f')][_0x5497('0x4a')]({'where':{'name':_0x25e80c,'userProfileId':_0x3abc92['userProfileId']},'raw':!![]})[_0x5497('0x25')](function(_0x5b2c22){if(_0x5b2c22&&_0x5b2c22['autoAssociation']===0x0){return db[_0x5497('0x29')][_0x5497('0x50')]({'name':_0x26fd9f['name'],'resourceId':_0x26fd9f['id'],'type':_0x5497('0x28'),'sectionId':_0x5b2c22['id']},{})[_0x5497('0x25')](function(){return _0x515c3e;});}else{return _0x515c3e;}})[_0x5497('0x47')](function(_0x3094c7){logger['error'](_0x5497('0x51'),_0x3094c7);throw _0x3094c7;});}return _0x515c3e;})['then'](respondWithResult(_0x31f1ba,0xc9))['catch'](handleError(_0x31f1ba,null));};exports[_0x5497('0x24')]=function(_0x33dd07,_0x2f7ec8){if(_0x33dd07['body']['id']){delete _0x33dd07['body']['id'];}return db[_0x5497('0x2e')]['find']({'where':{'id':_0x33dd07[_0x5497('0x48')]['id']}})['then'](handleEntityNotFound(_0x2f7ec8,null))[_0x5497('0x25')](saveUpdates(_0x33dd07['body'],null))[_0x5497('0x25')](respondWithResult(_0x2f7ec8,null))[_0x5497('0x47')](handleError(_0x2f7ec8,null));};exports['destroy']=function(_0x418f17,_0x5dccfb){return db['AnalyticDefaultReport'][_0x5497('0x4a')]({'where':{'id':_0x418f17[_0x5497('0x48')]['id']}})['then'](handleEntityNotFound(_0x5dccfb,null))[_0x5497('0x25')](removeEntity(_0x5dccfb,null))[_0x5497('0x47')](handleError(_0x5dccfb,null));};exports[_0x5497('0x52')]=function(_0x28b2a3,_0x3fca40){var _0x25c75e=0xa;var _0x590be7=[_0x5497('0x53'),'left_join','right_join','cross_join'];var _0x1f3965={'SUM':_0x5497('0x54'),'COUNT':_0x5497('0x55'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x5497('0x56'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x5497('0x57'),'GROUP_CONCAT ASC':_0x5497('0x58'),'GROUP_CONCAT DESC':_0x5497('0x59')};var _0x25f349={'SEC_TO_TIME':_0x5497('0x5a'),'DATE':_0x5497('0x5b'),'HOUR':'HOUR(%s)','ROUND':_0x5497('0x5c'),'UNIX_TIMESTAMP':_0x5497('0x5d')};var _0x425995=function(_0xc783ce){return!_['includes']([_0x5497('0x5e'),_0x5497('0x5f'),_0x5497('0x60'),_0x5497('0x61')],_0xc783ce);};var _0x5823f6=function(_0x31271c){if(!_0x31271c||!_0x31271c[_0x5497('0x62')][_0x5497('0x39')]){return'';}for(var _0x542bcf='(',_0x1ab48f=0x0;_0x1ab48f<_0x31271c['rules']['length'];_0x1ab48f+=0x1){_0x1ab48f>0x0&&(_0x542bcf+='\x20'+_0x31271c['operator']+'\x20');_0x542bcf+=_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x63')]?_0x5823f6(_0x31271c[_0x5497('0x62')][_0x1ab48f]['group']):_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x64')]+'\x20'+_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x65')]+(_0x425995(_0x31271c['rules'][_0x1ab48f][_0x5497('0x65')])?'\x20'+_0x31271c[_0x5497('0x62')][_0x1ab48f][_0x5497('0x66')]:'');}return _0x542bcf+')';};var _0x49617c={'where':{'id':_0x28b2a3[_0x5497('0x48')]['id']}},_0x164de1,_0x465bed,_0xb3eec2,_0x4368e3,_0x1467c4;_0x49617c=_[_0x5497('0x41')]({},_0x49617c,_0x28b2a3['options']);return db[_0x5497('0x2e')][_0x5497('0x4a')](_0x49617c)[_0x5497('0x25')](function(_0x20efea){if(_0x20efea){_0x164de1=_0x20efea;return _0x20efea['getFields']();}return null;})['then'](function(_0x4a7360){if(_0x4a7360){if(!_0x4a7360[_0x5497('0x39')]){throw new db[(_0x5497('0x67'))][(_0x5497('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x465bed=_0x4a7360;return db[_0x5497('0x69')][_0x5497('0x45')]({'raw':!![]});}return null;})[_0x5497('0x25')](function(_0x464df3){if(_0x464df3){_0xb3eec2=_[_0x5497('0x6a')](_0x464df3,'id');var _0x4338d4;var _0x3f38bf=squel[_0x5497('0x6b')]();_0x3f38bf[_0x5497('0x6c')](_0x164de1[_0x5497('0x6d')]);for(var _0x1fc6ad=0x0;_0x1fc6ad<_0x465bed['length'];_0x1fc6ad+=0x1){_0x4338d4=_0x465bed[_0x1fc6ad][_0x5497('0x6e')]?_0xb3eec2[_0x465bed[_0x1fc6ad][_0x5497('0x6e')]][_0x5497('0x6f')]:_0x465bed[_0x1fc6ad]['field'];_0x4338d4=_0x465bed[_0x1fc6ad][_0x5497('0x70')]?_['replace'](_0x1f3965[_0x465bed[_0x1fc6ad][_0x5497('0x70')]],'%s',_0x4338d4):_0x4338d4;_0x4338d4=_0x465bed[_0x1fc6ad][_0x5497('0x71')]?_['replace'](_0x25f349[_0x465bed[_0x1fc6ad][_0x5497('0x71')]],'%s',_0x4338d4):_0x4338d4;if(_0x465bed[_0x1fc6ad][_0x5497('0x72')]){_0x3f38bf[_0x5497('0x63')](_0x4338d4);}_0x465bed[_0x1fc6ad][_0x5497('0x73')]&&_0x3f38bf['order'](_0x4338d4,_0x465bed[_0x1fc6ad][_0x5497('0x73')]===_0x5497('0x74')?![]:!![]);_0x3f38bf[_0x5497('0x64')](_0x4338d4,_0x465bed[_0x1fc6ad]['alias']||_0x4338d4);}if(_0x164de1[_0x5497('0x75')]){_0x164de1[_0x5497('0x75')]=JSON['parse'](_0x164de1[_0x5497('0x75')]);for(var _0xebe694=0x0;_0xebe694<_0x164de1[_0x5497('0x75')]['length'];_0xebe694+=0x1){if(_0x164de1['joins'][_0xebe694][_0x5497('0x30')]&&_[_0x5497('0x76')](_0x590be7,_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x30')])&&_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x77')]&&_0x164de1[_0x5497('0x75')][_0xebe694]['foreignTable']&&_0x164de1['joins'][_0xebe694][_0x5497('0x78')]){_0x3f38bf[_0x164de1[_0x5497('0x75')][_0xebe694]['type']](_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x79')],null,util[_0x5497('0x71')]('%s.%s\x20=\x20%s.%s',_0x164de1[_0x5497('0x6d')],_0x164de1[_0x5497('0x75')][_0xebe694]['parentKey'],_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x79')],_0x164de1[_0x5497('0x75')][_0xebe694][_0x5497('0x78')]));}}}if(_0x164de1[_0x5497('0x7a')]){_0x164de1['conditions']=JSON[_0x5497('0x7b')](_0x164de1[_0x5497('0x7a')]);_0x3f38bf[_0x5497('0x3d')](_0x5823f6(_0x164de1[_0x5497('0x7a')][_0x5497('0x63')]));}_0x1467c4=_0x3f38bf['clone']();_0x3f38bf[_0x5497('0x20')](_0x25c75e);_0x3f38bf[_0x5497('0x1d')](0x0);logger[_0x5497('0x7c')](_0x5497('0x7d'),_0x3f38bf['toString']());return dbH[_0x5497('0x7e')][_0x5497('0x33')](_0x3f38bf['toString'](),{'type':dbH[_0x5497('0x7e')][_0x5497('0x7f')][_0x5497('0x80')]});}})[_0x5497('0x25')](respondWithResult(_0x3fca40,null))['catch'](handleError(_0x3fca40,null));};function runReport(_0x547de7,_0x4ff64f,_0x5343d5){var _0x594761=_0x4ff64f[_0x5497('0x2c')];var _0x2375cc=0xa;var _0x15d0da=[_0x5497('0x53'),_0x5497('0x81'),'right_join','cross_join'];var _0x392987={'SUM':_0x5497('0x54'),'COUNT':_0x5497('0x55'),'COUNT DISTINCT':_0x5497('0x82'),'MAX':_0x5497('0x56'),'MIN':_0x5497('0x83'),'AVG':_0x5497('0x84'),'GROUP_CONCAT':_0x5497('0x57'),'GROUP_CONCAT ASC':_0x5497('0x58'),'GROUP_CONCAT DESC':_0x5497('0x59')};var _0x4c41c4={'SEC_TO_TIME':_0x5497('0x5a'),'DATE':_0x5497('0x5b'),'HOUR':_0x5497('0x85'),'ROUND':_0x5497('0x5c'),'UNIX_TIMESTAMP':_0x5497('0x5d')};var _0x22b019=function(_0x4aa4ba){return!_[_0x5497('0x76')](['IS\x20NULL',_0x5497('0x5f'),_0x5497('0x60'),_0x5497('0x61')],_0x4aa4ba);};var _0x5b0f9d=function(_0x59960b){if(!_0x59960b||!_0x59960b[_0x5497('0x62')][_0x5497('0x39')]){return'';}for(var _0x953b31='(',_0xeb52c9=0x0;_0xeb52c9<_0x59960b[_0x5497('0x62')][_0x5497('0x39')];_0xeb52c9+=0x1){_0xeb52c9>0x0&&(_0x953b31+='\x20'+_0x59960b[_0x5497('0x86')]+'\x20');_0x953b31+=_0x59960b[_0x5497('0x62')][_0xeb52c9]['group']?_0x5b0f9d(_0x59960b['rules'][_0xeb52c9]['group']):_0x59960b[_0x5497('0x62')][_0xeb52c9][_0x5497('0x64')]+'\x20'+_0x59960b[_0x5497('0x62')][_0xeb52c9][_0x5497('0x65')]+(_0x22b019(_0x59960b['rules'][_0xeb52c9]['condition'])?'\x20'+_0x59960b[_0x5497('0x62')][_0xeb52c9][_0x5497('0x66')]:'');}return _0x953b31+')';};var _0x5dd9bc={'where':{'id':_0x547de7['id']}},_0x83b240,_0x2fc11a,_0x3ce2ee,_0x36c09f,_0x51e9fb;_0x5dd9bc=_['merge']({},_0x5dd9bc,_0x5343d5);return db['AnalyticDefaultReport']['find'](_0x5dd9bc)['then'](function(_0x497295){if(_0x497295){_0x83b240=_0x497295;return _0x497295['getFields']();}return null;})[_0x5497('0x25')](function(_0x5aa5e1){if(_0x5aa5e1){if(!_0x5aa5e1[_0x5497('0x39')]){throw new db[(_0x5497('0x67'))][(_0x5497('0x68'))](_0x5497('0x87'),0x193);}_0x2fc11a=_0x5aa5e1;return db[_0x5497('0x69')][_0x5497('0x45')]({'raw':!![]});}return null;})['then'](function(_0x77d52c){if(_0x77d52c){_0x3ce2ee=_['keyBy'](_0x77d52c,'id');var _0x15a67d;var _0x2721b2=squel[_0x5497('0x6b')]();_0x2721b2[_0x5497('0x6c')](_0x83b240[_0x5497('0x6d')]);for(var _0x38fa59=0x0;_0x38fa59<_0x2fc11a[_0x5497('0x39')];_0x38fa59+=0x1){_0x15a67d=_0x2fc11a[_0x38fa59][_0x5497('0x6e')]?_0x3ce2ee[_0x2fc11a[_0x38fa59][_0x5497('0x6e')]][_0x5497('0x6f')]:_0x2fc11a[_0x38fa59]['field'];_0x15a67d=_0x2fc11a[_0x38fa59][_0x5497('0x70')]?_['replace'](_0x392987[_0x2fc11a[_0x38fa59][_0x5497('0x70')]],'%s',_0x15a67d):_0x15a67d;_0x15a67d=_0x2fc11a[_0x38fa59][_0x5497('0x71')]?_['replace'](_0x4c41c4[_0x2fc11a[_0x38fa59][_0x5497('0x71')]],'%s',_0x15a67d):_0x15a67d;if(_0x2fc11a[_0x38fa59][_0x5497('0x72')]){_0x2721b2[_0x5497('0x63')](_0x15a67d);}_0x2fc11a[_0x38fa59][_0x5497('0x73')]&&_0x2721b2[_0x5497('0x3b')](_0x15a67d,_0x2fc11a[_0x38fa59][_0x5497('0x73')]===_0x5497('0x74')?![]:!![]);_0x2721b2[_0x5497('0x64')](_0x15a67d,_0x2fc11a[_0x38fa59][_0x5497('0x88')]||_0x15a67d);}if(_0x83b240[_0x5497('0x75')]){_0x83b240[_0x5497('0x75')]=JSON[_0x5497('0x7b')](_0x83b240[_0x5497('0x75')]);for(var _0x22426e=0x0;_0x22426e<_0x83b240['joins'][_0x5497('0x39')];_0x22426e+=0x1){if(_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x30')]&&_[_0x5497('0x76')](_0x15d0da,_0x83b240[_0x5497('0x75')][_0x22426e]['type'])&&_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x77')]&&_0x83b240['joins'][_0x22426e]['foreignTable']&&_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x78')]){_0x2721b2[_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x30')]](_0x83b240[_0x5497('0x75')][_0x22426e]['foreignTable'],null,util['format'](_0x5497('0x89'),_0x83b240['table'],_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x77')],_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x79')],_0x83b240[_0x5497('0x75')][_0x22426e][_0x5497('0x78')]));}}}if(_0x83b240['conditions']){_0x83b240['conditions']=JSON[_0x5497('0x7b')](_0x83b240[_0x5497('0x7a')]);_0x2721b2[_0x5497('0x3d')](_0x5b0f9d(_0x83b240['conditions'][_0x5497('0x63')]));}_0x51e9fb=_0x2721b2['clone']();_0x2721b2[_0x5497('0x20')](_0x2375cc);_0x2721b2['offset'](0x0);return;}})['then'](function(){if(_0x4ff64f[_0x5497('0x8a')]===_0x5497('0x8b')){return null;}var _0x4ce768=_[_0x5497('0x41')](_0x4ff64f,{'name':_0x4ff64f[_0x5497('0x8c')]||_0x4ff64f[_0x5497('0x2c')]||_0x83b240[_0x5497('0x2c')],'basename':_0x594761,'savename':util['format'](_0x5497('0x8d'),_0x4ff64f[_0x5497('0x2c')]||_0x83b240[_0x5497('0x2c')],require(_0x5497('0x8e'))[_0x5497('0x8f')](0x4),_0x4ff64f['output']||_0x5497('0x90')),'reportId':_0x83b240['id'],'reportType':'default'});return db[_0x5497('0x91')][_0x5497('0x50')](_0x4ce768,{'raw':!![]});})[_0x5497('0x25')](function(_0x314db4){if(_0x83b240[_0x5497('0x6d')]===_0x5497('0x92')){_0x51e9fb[_0x5497('0x3d')](_0x83b240[_0x5497('0x6d')]+_0x5497('0x93'),_0x4ff64f[_0x5497('0x94')],_0x4ff64f[_0x5497('0x95')]);}else{_0x51e9fb['where'](_0x83b240[_0x5497('0x6d')]+_0x5497('0x96'),_0x4ff64f[_0x5497('0x94')],_0x4ff64f[_0x5497('0x95')]);}if(_0x314db4){logger[_0x5497('0x97')](_0x5497('0x98'),_0x51e9fb[_0x5497('0x99')]());require(_0x5497('0x9a'))[_0x5497('0x9b')](path[_0x5497('0x53')](__dirname,_0x5497('0x9c'),_0x314db4['output']),[_0x314db4['id'],_0x51e9fb[_0x5497('0x99')](),path[_0x5497('0x53')](__dirname,_0x5497('0x9d'),_0x314db4[_0x5497('0x9e')]),_0x594761]);return _0x314db4;}else{var _0x46be08=squel[_0x5497('0x6b')]();_0x46be08[_0x5497('0x6c')]('('+_0x51e9fb[_0x5497('0x99')]()+')',_0x5497('0x9f'));_0x46be08[_0x5497('0x64')](_0x5497('0xa0'),_0x5497('0x1f'));_0x51e9fb[_0x5497('0x20')](_0x4ff64f[_0x5497('0x20')]||_0x2375cc);_0x51e9fb['offset'](_0x4ff64f['offset']||0x0);return dbH[_0x5497('0x7e')][_0x5497('0x33')](_0x46be08[_0x5497('0x99')](),{'type':dbH['sequelize'][_0x5497('0x7f')][_0x5497('0x80')]})[_0x5497('0x25')](function(_0x2bd48c){if(!_0x2bd48c[_0x5497('0x39')]){_0x36c09f=0x0;}else{_0x36c09f=_0x2bd48c[0x0][_0x5497('0x1f')]||0x0;}return dbH[_0x5497('0x7e')][_0x5497('0x33')](_0x51e9fb['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x5497('0x80')]});})[_0x5497('0x25')](function(_0x4dab6a){return{'rows':_0x4dab6a||[],'count':_0x36c09f};});}});}exports[_0x5497('0xa1')]=function(_0x27f42b,_0x1bef85){return runReport(_0x27f42b['params'],_0x27f42b[_0x5497('0x33')],_0x27f42b['options'])[_0x5497('0x25')](respondWithResult(_0x1bef85,null))[_0x5497('0x47')](handleError(_0x1bef85,null));};exports[_0x5497('0xa2')]=runReport;exports['query']=function(_0x1c3dad,_0xfba062){var _0x494cc3=0xa;var _0x401f04=[_0x5497('0x53'),_0x5497('0x81'),'right_join',_0x5497('0xa3')];var _0x1a5c32={'SUM':_0x5497('0x54'),'COUNT':_0x5497('0x55'),'COUNT DISTINCT':_0x5497('0x82'),'MAX':_0x5497('0x56'),'MIN':_0x5497('0x83'),'AVG':_0x5497('0x84'),'GROUP_CONCAT':_0x5497('0x57'),'GROUP_CONCAT ASC':_0x5497('0x58'),'GROUP_CONCAT DESC':_0x5497('0x59')};var _0x1dfb76={'SEC_TO_TIME':_0x5497('0x5a'),'DATE':_0x5497('0x5b'),'HOUR':_0x5497('0x85'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5497('0x5d')};var _0x5c2517=function(_0x367929){return!_[_0x5497('0x76')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x5497('0x60'),_0x5497('0x61')],_0x367929);};var _0x2fd2e3=function(_0x2fe770){if(!_0x2fe770||!_0x2fe770['rules'][_0x5497('0x39')]){return'';}for(var _0x1299cd='(',_0x4c2b14=0x0;_0x4c2b14<_0x2fe770['rules'][_0x5497('0x39')];_0x4c2b14+=0x1){_0x4c2b14>0x0&&(_0x1299cd+='\x20'+_0x2fe770[_0x5497('0x86')]+'\x20');_0x1299cd+=_0x2fe770[_0x5497('0x62')][_0x4c2b14][_0x5497('0x63')]?_0x2fd2e3(_0x2fe770[_0x5497('0x62')][_0x4c2b14]['group']):_0x2fe770['rules'][_0x4c2b14][_0x5497('0x64')]+'\x20'+_0x2fe770[_0x5497('0x62')][_0x4c2b14]['condition']+(_0x5c2517(_0x2fe770[_0x5497('0x62')][_0x4c2b14][_0x5497('0x65')])?'\x20'+_0x2fe770[_0x5497('0x62')][_0x4c2b14][_0x5497('0x66')]:'');}return _0x1299cd+')';};var _0x358ec5={'where':{'id':_0x1c3dad['params']['id']}},_0x5cddbc,_0x188d21,_0xf92129,_0x2d5cc1,_0x4f9228;_0x358ec5=_[_0x5497('0x41')]({},_0x358ec5,_0x1c3dad[_0x5497('0x42')]);return db[_0x5497('0x2e')]['find'](_0x358ec5)[_0x5497('0x25')](function(_0x30a248){if(_0x30a248){_0x5cddbc=_0x30a248;return _0x30a248[_0x5497('0xa4')]();}return null;})['then'](function(_0x1d4c76){if(_0x1d4c76){if(!_0x1d4c76[_0x5497('0x39')]){throw new db['Sequelize']['ValidationErrorItem'](_0x5497('0x87'),0x193);}_0x188d21=_0x1d4c76;return db[_0x5497('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5497('0x25')](function(_0x5001d5){if(_0x5001d5){_0xf92129=_[_0x5497('0x6a')](_0x5001d5,'id');var _0x2c58e6;var _0x300f3e=squel[_0x5497('0x6b')]();_0x300f3e[_0x5497('0x6c')](_0x5cddbc[_0x5497('0x6d')]);for(var _0x23732d=0x0;_0x23732d<_0x188d21['length'];_0x23732d+=0x1){_0x2c58e6=_0x188d21[_0x23732d]['MetricId']?_0xf92129[_0x188d21[_0x23732d][_0x5497('0x6e')]][_0x5497('0x6f')]:_0x188d21[_0x23732d]['field'];_0x2c58e6=_0x188d21[_0x23732d]['function']?_[_0x5497('0xa5')](_0x1a5c32[_0x188d21[_0x23732d][_0x5497('0x70')]],'%s',_0x2c58e6):_0x2c58e6;_0x2c58e6=_0x188d21[_0x23732d][_0x5497('0x71')]?_[_0x5497('0xa5')](_0x1dfb76[_0x188d21[_0x23732d][_0x5497('0x71')]],'%s',_0x2c58e6):_0x2c58e6;if(_0x188d21[_0x23732d][_0x5497('0x72')]){_0x300f3e['group'](_0x2c58e6);}_0x188d21[_0x23732d][_0x5497('0x73')]&&_0x300f3e[_0x5497('0x3b')](_0x2c58e6,_0x188d21[_0x23732d][_0x5497('0x73')]===_0x5497('0x74')?![]:!![]);_0x300f3e[_0x5497('0x64')](_0x2c58e6,_0x188d21[_0x23732d][_0x5497('0x88')]||_0x2c58e6);}if(_0x5cddbc['joins']){_0x5cddbc[_0x5497('0x75')]=JSON['parse'](_0x5cddbc[_0x5497('0x75')]);for(var _0x261804=0x0;_0x261804<_0x5cddbc[_0x5497('0x75')]['length'];_0x261804+=0x1){if(_0x5cddbc[_0x5497('0x75')][_0x261804]['type']&&_['includes'](_0x401f04,_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x30')])&&_0x5cddbc['joins'][_0x261804][_0x5497('0x77')]&&_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x79')]&&_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x78')]){_0x300f3e[_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x30')]](_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x79')],null,util['format'](_0x5497('0x89'),_0x5cddbc[_0x5497('0x6d')],_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x77')],_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x79')],_0x5cddbc[_0x5497('0x75')][_0x261804][_0x5497('0x78')]));}}}if(_0x5cddbc[_0x5497('0x7a')]){_0x5cddbc[_0x5497('0x7a')]=JSON[_0x5497('0x7b')](_0x5cddbc[_0x5497('0x7a')]);_0x300f3e[_0x5497('0x3d')](_0x2fd2e3(_0x5cddbc[_0x5497('0x7a')][_0x5497('0x63')]));}_0x4f9228=_0x300f3e[_0x5497('0xa6')]();_0x300f3e[_0x5497('0x20')](_0x494cc3);_0x300f3e[_0x5497('0x1d')](0x0);logger[_0x5497('0x7c')]('Limited\x20Query:',_0x300f3e[_0x5497('0x99')]());return dbH[_0x5497('0x7e')]['query'](_0x300f3e['toString'](),{'type':dbH[_0x5497('0x7e')]['QueryTypes'][_0x5497('0x80')]});}})[_0x5497('0x25')](function(){return{'sql':_0x4f9228[_0x5497('0x99')]()};})[_0x5497('0x25')](respondWithResult(_0xfba062,null))[_0x5497('0x47')](handleError(_0xfba062,null));};
\ No newline at end of file
index 6f38e27..f9fae0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ba=['api','bluebird','path','rimraf','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','analytics_default_reports','util'];(function(_0x277107,_0x3420dc){var _0x1da046=function(_0x47122d){while(--_0x47122d){_0x277107['push'](_0x277107['shift']());}};_0x1da046(++_0x3420dc);}(_0xc9ba,0x1c1));var _0xac9b=function(_0x1853e5,_0x2193d4){_0x1853e5=_0x1853e5-0x0;var _0x26baad=_0xc9ba[_0x1853e5];return _0x26baad;};'use strict';var _=require('lodash');var util=require(_0xac9b('0x0'));var logger=require('../../config/logger')(_0xac9b('0x1'));var moment=require('moment');var BPromise=require(_0xac9b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xac9b('0x3'));var rimraf=require(_0xac9b('0x4'));var config=require('../../config/environment');var attributes=require(_0xac9b('0x5'));module[_0xac9b('0x6')]=function(_0x5181c3,_0x4e5570){return _0x5181c3['define'](_0xac9b('0x7'),attributes,{'tableName':_0xac9b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8613=['api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger'];(function(_0x4bb484,_0x138bc4){var _0x416a0e=function(_0x3ae3f4){while(--_0x3ae3f4){_0x4bb484['push'](_0x4bb484['shift']());}};_0x416a0e(++_0x138bc4);}(_0x8613,0x15c));var _0x3861=function(_0x3fc5d8,_0x3eb153){_0x3fc5d8=_0x3fc5d8-0x0;var _0x25307a=_0x8613[_0x3fc5d8];return _0x25307a;};'use strict';var _=require(_0x3861('0x0'));var util=require(_0x3861('0x1'));var logger=require(_0x3861('0x2'))(_0x3861('0x3'));var moment=require('moment');var BPromise=require(_0x3861('0x4'));var rp=require(_0x3861('0x5'));var fs=require('fs');var path=require(_0x3861('0x6'));var rimraf=require(_0x3861('0x7'));var config=require(_0x3861('0x8'));var attributes=require(_0x3861('0x9'));module[_0x3861('0xa')]=function(_0x1607c1,_0xdc37ff){return _0x1607c1['define'](_0x3861('0xb'),attributes,{'tableName':_0x3861('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8bbac6..90e9e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['then','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x5c6994,_0x19ad9a){var _0x1d5c84=function(_0x4a385a){while(--_0x4a385a){_0x5c6994['push'](_0x5c6994['shift']());}};_0x1d5c84(++_0x19ad9a);}(_0xe1e3,0x94));var _0x3e1e=function(_0x343ae,_0x48bfe5){_0x343ae=_0x343ae-0x0;var _0x47c739=_0xe1e3[_0x343ae];return _0x47c739;};'use strict';var _=require(_0x3e1e('0x0'));var util=require('util');var moment=require(_0x3e1e('0x1'));var BPromise=require('bluebird');var rs=require(_0x3e1e('0x2'));var fs=require('fs');var Redis=require(_0x3e1e('0x3'));var db=require(_0x3e1e('0x4'))['db'];var utils=require(_0x3e1e('0x5'));var logger=require('../../config/logger')(_0x3e1e('0x6'));var config=require(_0x3e1e('0x7'));var jayson=require(_0x3e1e('0x8'));var client=jayson[_0x3e1e('0x9')][_0x3e1e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb75122,_0x55e0bd,_0x2a0c11){return new BPromise(function(_0xc0bfdd,_0x4bf33b){return client[_0x3e1e('0xb')](_0xb75122,_0x2a0c11)[_0x3e1e('0xc')](function(_0x11bc5f){logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x55e0bd,'request\x20sent');logger['debug'](_0x3e1e('0xd'),_0x55e0bd,'request\x20sent',JSON[_0x3e1e('0xe')](_0x11bc5f));if(_0x11bc5f[_0x3e1e('0xf')]){if(_0x11bc5f[_0x3e1e('0xf')]['code']===0x1f4){logger[_0x3e1e('0xf')](_0x3e1e('0x10'),_0x55e0bd,_0x11bc5f['error']['message']);return _0x4bf33b(_0x11bc5f[_0x3e1e('0xf')]['message']);}logger[_0x3e1e('0xf')](_0x3e1e('0x10'),_0x55e0bd,_0x11bc5f[_0x3e1e('0xf')]['message']);return _0xc0bfdd(_0x11bc5f[_0x3e1e('0xf')]['message']);}else{logger['info'](_0x3e1e('0x10'),_0x55e0bd,_0x3e1e('0x11'));_0xc0bfdd(_0x11bc5f['result'][_0x3e1e('0x12')]);}})[_0x3e1e('0x13')](function(_0xe25d16){logger['error'](_0x3e1e('0x10'),_0x55e0bd,_0xe25d16);_0x4bf33b(_0xe25d16);});});}
\ No newline at end of file
+var _0x9143=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x44b533,_0x221c8d){var _0x42325b=function(_0x309350){while(--_0x309350){_0x44b533['push'](_0x44b533['shift']());}};_0x42325b(++_0x221c8d);}(_0x9143,0x1a2));var _0x3914=function(_0x5773ca,_0x1f28fd){_0x5773ca=_0x5773ca-0x0;var _0x2e98e5=_0x9143[_0x5773ca];return _0x2e98e5;};'use strict';var _=require('lodash');var util=require(_0x3914('0x0'));var moment=require(_0x3914('0x1'));var BPromise=require(_0x3914('0x2'));var rs=require(_0x3914('0x3'));var fs=require('fs');var Redis=require(_0x3914('0x4'));var db=require(_0x3914('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3914('0x6'));var config=require(_0x3914('0x7'));var jayson=require(_0x3914('0x8'));var client=jayson[_0x3914('0x9')][_0x3914('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b0c9c,_0x2b2d84,_0x25565f){return new BPromise(function(_0x57d80f,_0x3c950d){return client[_0x3914('0xb')](_0x3b0c9c,_0x25565f)[_0x3914('0xc')](function(_0x33d2e3){logger[_0x3914('0xd')](_0x3914('0xe'),_0x2b2d84,_0x3914('0xf'));logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x2b2d84,_0x3914('0xf'),JSON[_0x3914('0x10')](_0x33d2e3));if(_0x33d2e3['error']){if(_0x33d2e3[_0x3914('0x11')][_0x3914('0x12')]===0x1f4){logger['error'](_0x3914('0xe'),_0x2b2d84,_0x33d2e3[_0x3914('0x11')][_0x3914('0x13')]);return _0x3c950d(_0x33d2e3[_0x3914('0x11')]['message']);}logger[_0x3914('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2b2d84,_0x33d2e3[_0x3914('0x11')]['message']);return _0x57d80f(_0x33d2e3[_0x3914('0x11')]['message']);}else{logger[_0x3914('0xd')](_0x3914('0xe'),_0x2b2d84,_0x3914('0xf'));_0x57d80f(_0x33d2e3[_0x3914('0x14')][_0x3914('0x13')]);}})[_0x3914('0x15')](function(_0x851076){logger[_0x3914('0x11')](_0x3914('0xe'),_0x2b2d84,_0x851076);_0x3c950d(_0x851076);});});}
\ No newline at end of file
index 84254e6..7054c9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa84c=['get','isAuthenticated','index','/:id','/:id/preview','preview','/:id/run','run','/:id/query','post','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller'];(function(_0x2312f5,_0x1aee2a){var _0x214672=function(_0x2a5972){while(--_0x2a5972){_0x2312f5['push'](_0x2312f5['shift']());}};_0x214672(++_0x1aee2a);}(_0xa84c,0xf3));var _0xca84=function(_0x3d9176,_0x399d6f){_0x3d9176=_0x3d9176-0x0;var _0x12adc5=_0xa84c[_0x3d9176];return _0x12adc5;};'use strict';var multer=require(_0xca84('0x0'));var util=require(_0xca84('0x1'));var path=require(_0xca84('0x2'));var timeout=require('connect-timeout');var express=require(_0xca84('0x3'));var router=express[_0xca84('0x4')]();var fs_extra=require(_0xca84('0x5'));var auth=require(_0xca84('0x6'));var interaction=require(_0xca84('0x7'));var config=require(_0xca84('0x8'));var controller=require(_0xca84('0x9'));router[_0xca84('0xa')]('/',auth[_0xca84('0xb')](),controller[_0xca84('0xc')]);router[_0xca84('0xa')](_0xca84('0xd'),auth[_0xca84('0xb')](),controller['show']);router[_0xca84('0xa')](_0xca84('0xe'),auth[_0xca84('0xb')](),controller[_0xca84('0xf')]);router[_0xca84('0xa')](_0xca84('0x10'),auth[_0xca84('0xb')](),controller[_0xca84('0x11')]);router[_0xca84('0xa')](_0xca84('0x12'),auth[_0xca84('0xb')](),controller['query']);router[_0xca84('0x13')]('/',auth[_0xca84('0xb')](),controller['create']);router[_0xca84('0x14')](_0xca84('0xd'),auth[_0xca84('0xb')](),controller['update']);router['delete'](_0xca84('0xd'),auth[_0xca84('0xb')](),controller[_0xca84('0x15')]);module[_0xca84('0x16')]=router;
\ No newline at end of file
+var _0xe683=['/:id/run','run','/:id/query','query','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','/:id/preview'];(function(_0x20b21f,_0x1985e2){var _0x3abd26=function(_0x56fe71){while(--_0x56fe71){_0x20b21f['push'](_0x20b21f['shift']());}};_0x3abd26(++_0x1985e2);}(_0xe683,0x1d7));var _0x3e68=function(_0x765325,_0x79bdea){_0x765325=_0x765325-0x0;var _0x2e8f5e=_0xe683[_0x765325];return _0x2e8f5e;};'use strict';var multer=require(_0x3e68('0x0'));var util=require(_0x3e68('0x1'));var path=require(_0x3e68('0x2'));var timeout=require(_0x3e68('0x3'));var express=require(_0x3e68('0x4'));var router=express[_0x3e68('0x5')]();var fs_extra=require(_0x3e68('0x6'));var auth=require(_0x3e68('0x7'));var interaction=require(_0x3e68('0x8'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router[_0x3e68('0x9')]('/',auth[_0x3e68('0xa')](),controller['index']);router[_0x3e68('0x9')](_0x3e68('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x3e68('0x9')](_0x3e68('0xc'),auth['isAuthenticated'](),controller['preview']);router[_0x3e68('0x9')](_0x3e68('0xd'),auth['isAuthenticated'](),controller[_0x3e68('0xe')]);router[_0x3e68('0x9')](_0x3e68('0xf'),auth[_0x3e68('0xa')](),controller[_0x3e68('0x10')]);router[_0x3e68('0x11')]('/',auth[_0x3e68('0xa')](),controller['create']);router[_0x3e68('0x12')](_0x3e68('0xb'),auth[_0x3e68('0xa')](),controller['update']);router[_0x3e68('0x13')](_0x3e68('0xb'),auth['isAuthenticated'](),controller[_0x3e68('0x14')]);module[_0x3e68('0x15')]=router;
\ No newline at end of file
index 690f914..d81986b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x462f=['csv','pdf','DATE','Loading','ENUM','manual','scheduled','INTEGER','sequelize','moment','STRING'];(function(_0x2468ef,_0x544050){var _0x3c135e=function(_0x53190d){while(--_0x53190d){_0x2468ef['push'](_0x2468ef['shift']());}};_0x3c135e(++_0x544050);}(_0x462f,0x1ec));var _0xf462=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0x462f[_0x54d4a8];return _0x3b321b;};'use strict';var Sequelize=require(_0xf462('0x0'));var moment=require(_0xf462('0x1'));module['exports']={'name':{'type':Sequelize[_0xf462('0x2')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0xf462('0x3'),_0xf462('0x4'),'xlsx'),'allowNull':![],'defaultValue':_0xf462('0x3')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0xf462('0x5')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0xf462('0x6')},'type':{'type':Sequelize[_0xf462('0x7')](_0xf462('0x8'),_0xf462('0x9')),'allowNull':![],'defaultValue':_0xf462('0x8')},'reportId':{'type':Sequelize[_0xf462('0xa')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0xf462('0x2')]}};
\ No newline at end of file
+var _0x5fcc=['sequelize','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','scheduled'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x5fcc,0x84));var _0xc5fc=function(_0x3f3cb0,_0x4b28a8){_0x3f3cb0=_0x3f3cb0-0x0;var _0x890e43=_0x5fcc[_0x3f3cb0];return _0x890e43;};'use strict';var Sequelize=require(_0xc5fc('0x0'));var moment=require(_0xc5fc('0x1'));module[_0xc5fc('0x2')]={'name':{'type':Sequelize[_0xc5fc('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0xc5fc('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0xc5fc('0x4')](_0xc5fc('0x5'),_0xc5fc('0x6'),_0xc5fc('0x7')),'allowNull':![],'defaultValue':_0xc5fc('0x5')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0xc5fc('0x8')]},'endDate':{'type':Sequelize[_0xc5fc('0x8')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0xc5fc('0x9')},'type':{'type':Sequelize[_0xc5fc('0x4')]('manual',_0xc5fc('0xa')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0xc5fc('0x3')]}};
\ No newline at end of file
index fb137ed..945c5f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7862=['fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','AnalyticExtractedReport','includeAll','include','findAll','rows','catch','show','params','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','UserProfileResource','update','download','savename','output','existsSync','join','root','server/files/reports','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','basename','toLowerCase','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','get','ExtractedReports','destroy','error','name','index','map','fieldName','type','key','keys','query','filters','model','attributes','intersection'];(function(_0x498363,_0x3edd7c){var _0x29ad35=function(_0x548ab6){while(--_0x548ab6){_0x498363['push'](_0x498363['shift']());}};_0x29ad35(++_0x3edd7c);}(_0x7862,0x14f));var _0x2786=function(_0x353694,_0x41fa39){_0x353694=_0x353694-0x0;var _0x3819e1=_0x7862[_0x353694];return _0x3819e1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2786('0x0'));var zipdir=require(_0x2786('0x1'));var jsonpatch=require(_0x2786('0x2'));var rp=require('request-promise');var moment=require(_0x2786('0x3'));var BPromise=require(_0x2786('0x4'));var Mustache=require(_0x2786('0x5'));var util=require(_0x2786('0x6'));var path=require(_0x2786('0x7'));var sox=require(_0x2786('0x8'));var csv=require(_0x2786('0x9'));var ejs=require(_0x2786('0xa'));var fs=require('fs');var fs_extra=require(_0x2786('0xb'));var _=require('lodash');var squel=require(_0x2786('0xc'));var crypto=require(_0x2786('0xd'));var jsforce=require(_0x2786('0xe'));var deskjs=require(_0x2786('0xf'));var toCsv=require(_0x2786('0x9'));var querystring=require(_0x2786('0x10'));var Papa=require(_0x2786('0x11'));var Redis=require(_0x2786('0x12'));var authService=require(_0x2786('0x13'));var qs=require(_0x2786('0x14'));var as=require(_0x2786('0x15'));var hardwareService=require(_0x2786('0x16'));var logger=require(_0x2786('0x17'))('api');var utils=require(_0x2786('0x18'));var config=require(_0x2786('0x19'));var licenseUtil=require(_0x2786('0x1a'));var db=require(_0x2786('0x1b'))['db'];function respondWithStatusCode(_0x23d7ee,_0x17d727){_0x17d727=_0x17d727||0xcc;return function(_0x3d4b12){if(_0x3d4b12){return _0x23d7ee[_0x2786('0x1c')](_0x17d727);}return _0x23d7ee['status'](_0x17d727)[_0x2786('0x1d')]();};}function respondWithResult(_0x1eb73a,_0x445ee1){_0x445ee1=_0x445ee1||0xc8;return function(_0x1fbbd1){if(_0x1fbbd1){return _0x1eb73a[_0x2786('0x1e')](_0x445ee1)[_0x2786('0x1f')](_0x1fbbd1);}};}function respondWithFilteredResult(_0x154e40,_0x4eebec){return function(_0x2f844b){if(_0x2f844b){var _0x86ff32=typeof _0x4eebec[_0x2786('0x20')]===_0x2786('0x21')&&typeof _0x4eebec['limit']===_0x2786('0x21');var _0x13afea=_0x2f844b[_0x2786('0x22')];var _0x4bb9fe=_0x86ff32?0x0:_0x4eebec['offset'];var _0x5c429b=_0x86ff32?_0x2f844b[_0x2786('0x22')]:_0x4eebec['offset']+_0x4eebec[_0x2786('0x23')];var _0x192bb2;if(_0x5c429b>=_0x13afea){_0x5c429b=_0x13afea;_0x192bb2=0xc8;}else{_0x192bb2=0xce;}_0x154e40[_0x2786('0x1e')](_0x192bb2);return _0x154e40[_0x2786('0x24')](_0x2786('0x25'),_0x4bb9fe+'-'+_0x5c429b+'/'+_0x13afea)[_0x2786('0x1f')](_0x2f844b);}return null;};}function patchUpdates(_0x5ed58d){return function(_0x348342){try{jsonpatch[_0x2786('0x26')](_0x348342,_0x5ed58d,!![]);}catch(_0x2cf2ba){return BPromise[_0x2786('0x27')](_0x2cf2ba);}return _0x348342['save']();};}function saveUpdates(_0x397029,_0x48f889){return function(_0x2ad417){if(_0x2ad417){return _0x2ad417['update'](_0x397029)[_0x2786('0x28')](function(_0x399c38){return _0x399c38;});}return null;};}function removeEntity(_0x48768e,_0x33ec78){return function(_0x394161){if(_0x394161){return _0x394161['destroy']()[_0x2786('0x28')](function(){var _0x54b1e9=_0x394161[_0x2786('0x29')]({'plain':!![]});var _0x10690a=_0x2786('0x2a');return db['UserProfileResource'][_0x2786('0x2b')]({'where':{'type':_0x10690a,'resourceId':_0x54b1e9['id']}})['then'](function(){return _0x394161;});})[_0x2786('0x28')](function(){_0x48768e[_0x2786('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30bcf1,_0x46b4d2){return function(_0x1054a9){if(!_0x1054a9){_0x30bcf1[_0x2786('0x1c')](0x194);}return _0x1054a9;};}function handleError(_0x949870,_0x407f82){_0x407f82=_0x407f82||0x1f4;return function(_0x4ae9b4){logger[_0x2786('0x2c')](_0x4ae9b4['stack']);if(_0x4ae9b4[_0x2786('0x2d')]){delete _0x4ae9b4[_0x2786('0x2d')];}_0x949870['status'](_0x407f82)['send'](_0x4ae9b4);};}exports[_0x2786('0x2e')]=function(_0x433a99,_0x305f95){var _0x1e2030={},_0x82b037={},_0x44262e={'count':0x0,'rows':[]};var _0x10c60c=_[_0x2786('0x2f')](db['AnalyticExtractedReport']['rawAttributes'],function(_0x3665ec){return{'name':_0x3665ec[_0x2786('0x30')],'type':_0x3665ec[_0x2786('0x31')][_0x2786('0x32')]};});_0x82b037['model']=_[_0x2786('0x2f')](_0x10c60c,_0x2786('0x2d'));_0x82b037['query']=_[_0x2786('0x33')](_0x433a99[_0x2786('0x34')]);_0x82b037[_0x2786('0x35')]=_['intersection'](_0x82b037[_0x2786('0x36')],_0x82b037['query']);_0x1e2030[_0x2786('0x37')]=_[_0x2786('0x38')](_0x82b037[_0x2786('0x36')],qs[_0x2786('0x39')](_0x433a99[_0x2786('0x34')][_0x2786('0x39')]));_0x1e2030[_0x2786('0x37')]=_0x1e2030[_0x2786('0x37')]['length']?_0x1e2030['attributes']:_0x82b037['model'];if(!_0x433a99[_0x2786('0x34')][_0x2786('0x3a')](_0x2786('0x3b'))){_0x1e2030[_0x2786('0x23')]=qs['limit'](_0x433a99[_0x2786('0x34')]['limit']);_0x1e2030[_0x2786('0x20')]=qs[_0x2786('0x20')](_0x433a99[_0x2786('0x34')][_0x2786('0x20')]);}_0x1e2030[_0x2786('0x3c')]=qs[_0x2786('0x3d')](_0x433a99['query'][_0x2786('0x3d')]);_0x1e2030[_0x2786('0x3e')]=qs[_0x2786('0x35')](_['pick'](_0x433a99['query'],_0x82b037[_0x2786('0x35')]),_0x10c60c);if(_0x433a99['query'][_0x2786('0x3f')]){_0x1e2030['where']=_[_0x2786('0x40')](_0x1e2030[_0x2786('0x3e')],{'$or':_[_0x2786('0x2f')](_0x10c60c,function(_0x3bb30a){if(_0x3bb30a['type']!==_0x2786('0x41')){var _0xc1f3bd={};_0xc1f3bd[_0x3bb30a[_0x2786('0x2d')]]={'$like':'%'+_0x433a99[_0x2786('0x34')][_0x2786('0x3f')]+'%'};return _0xc1f3bd;}})});}_0x1e2030=_[_0x2786('0x40')]({},_0x1e2030,_0x433a99[_0x2786('0x42')]);var _0x4f5d67={'where':_0x1e2030['where']};return db[_0x2786('0x43')][_0x2786('0x22')](_0x4f5d67)[_0x2786('0x28')](function(_0x2db10c){_0x44262e['count']=_0x2db10c;if(_0x433a99[_0x2786('0x34')][_0x2786('0x44')]){_0x1e2030[_0x2786('0x45')]=[{'all':!![]}];}return db[_0x2786('0x43')][_0x2786('0x46')](_0x1e2030);})[_0x2786('0x28')](function(_0x4d57cc){_0x44262e[_0x2786('0x47')]=_0x4d57cc;return _0x44262e;})[_0x2786('0x28')](respondWithFilteredResult(_0x305f95,_0x1e2030))[_0x2786('0x48')](handleError(_0x305f95,null));};exports[_0x2786('0x49')]=function(_0x595479,_0x5da39b){var _0x15dd6f={'raw':!![],'where':{'id':_0x595479[_0x2786('0x4a')]['id']}},_0x5233af={};_0x5233af['model']=_[_0x2786('0x33')](db[_0x2786('0x43')]['rawAttributes']);_0x5233af[_0x2786('0x34')]=_[_0x2786('0x33')](_0x595479[_0x2786('0x34')]);_0x5233af[_0x2786('0x35')]=_[_0x2786('0x38')](_0x5233af[_0x2786('0x36')],_0x5233af[_0x2786('0x34')]);_0x15dd6f[_0x2786('0x37')]=_['intersection'](_0x5233af[_0x2786('0x36')],qs[_0x2786('0x39')](_0x595479['query'][_0x2786('0x39')]));_0x15dd6f[_0x2786('0x37')]=_0x15dd6f[_0x2786('0x37')][_0x2786('0x4b')]?_0x15dd6f[_0x2786('0x37')]:_0x5233af[_0x2786('0x36')];if(_0x595479['query'][_0x2786('0x44')]){_0x15dd6f[_0x2786('0x45')]=[{'all':!![]}];}_0x15dd6f=_[_0x2786('0x40')]({},_0x15dd6f,_0x595479['options']);return db[_0x2786('0x43')]['find'](_0x15dd6f)[_0x2786('0x28')](handleEntityNotFound(_0x5da39b,null))[_0x2786('0x28')](respondWithResult(_0x5da39b,null))['catch'](handleError(_0x5da39b,null));};exports['create']=function(_0x4f882a,_0xd9c269){return db[_0x2786('0x43')][_0x2786('0x4c')](_0x4f882a[_0x2786('0x4d')],{})[_0x2786('0x28')](function(_0x2bc997){var _0x1eab84=_0x4f882a[_0x2786('0x4e')][_0x2786('0x29')]({'plain':!![]});if(!_0x1eab84)throw new Error(_0x2786('0x4f'));if(_0x1eab84[_0x2786('0x50')]==='user'){var _0x317a6d=_0x2bc997[_0x2786('0x29')]({'plain':!![]});var _0x527f07='ExtractedReports';return db[_0x2786('0x51')][_0x2786('0x52')]({'where':{'name':_0x527f07,'userProfileId':_0x1eab84['userProfileId']},'raw':!![]})[_0x2786('0x28')](function(_0x9f7f4b){if(_0x9f7f4b&&_0x9f7f4b['autoAssociation']===0x0){return db[_0x2786('0x53')]['create']({'name':_0x317a6d[_0x2786('0x2d')],'resourceId':_0x317a6d['id'],'type':_0x9f7f4b['name'],'sectionId':_0x9f7f4b['id']},{})[_0x2786('0x28')](function(){return _0x2bc997;});}else{return _0x2bc997;}})['catch'](function(_0x59ed95){logger[_0x2786('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x59ed95);throw _0x59ed95;});}return _0x2bc997;})[_0x2786('0x28')](respondWithResult(_0xd9c269,0xc9))[_0x2786('0x48')](handleError(_0xd9c269,null));};exports[_0x2786('0x54')]=function(_0xad057e,_0x2f0659){if(_0xad057e[_0x2786('0x4d')]['id']){delete _0xad057e[_0x2786('0x4d')]['id'];}return db[_0x2786('0x43')]['find']({'where':{'id':_0xad057e[_0x2786('0x4a')]['id']}})[_0x2786('0x28')](handleEntityNotFound(_0x2f0659,null))[_0x2786('0x28')](saveUpdates(_0xad057e[_0x2786('0x4d')],null))[_0x2786('0x28')](respondWithResult(_0x2f0659,null))[_0x2786('0x48')](handleError(_0x2f0659,null));};exports[_0x2786('0x2b')]=function(_0x3a860d,_0x535259){return db[_0x2786('0x43')]['find']({'where':{'id':_0x3a860d[_0x2786('0x4a')]['id']}})['then'](handleEntityNotFound(_0x535259,null))[_0x2786('0x28')](removeEntity(_0x535259,null))[_0x2786('0x48')](handleError(_0x535259,null));};exports[_0x2786('0x55')]=function(_0x4b0b44,_0x1c09cc,_0x5e04d6){return db[_0x2786('0x43')]['find']({'where':{'id':_0x4b0b44[_0x2786('0x4a')]['id']},'attributes':[_0x2786('0x2d'),'basename',_0x2786('0x56'),_0x2786('0x57')],'raw':!![]})[_0x2786('0x28')](handleEntityNotFound(_0x1c09cc,null))['then'](function(_0x24a3f8){if(_0x24a3f8){if(!fs[_0x2786('0x58')](path[_0x2786('0x59')](config[_0x2786('0x5a')],_0x2786('0x5b'),_0x24a3f8['savename']))){throw new db['Sequelize']['ValidationError'](_0x2786('0x5c'));}if(_0x4b0b44[_0x2786('0x34')][_0x2786('0x5d')]){return _0x1c09cc['sendStatus'](0xc8);}return _0x1c09cc[_0x2786('0x55')](path['join'](config[_0x2786('0x5a')],'server/files/reports',_0x24a3f8[_0x2786('0x56')]),util[_0x2786('0x5e')](_0x2786('0x5f'),_0x24a3f8[_0x2786('0x60')]||_0x24a3f8[_0x2786('0x2d')],_0x24a3f8[_0x2786('0x57')][_0x2786('0x61')]()));}})['catch'](handleError(_0x1c09cc,null));};
\ No newline at end of file
+var _0x2201=['type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','filter','where','VIRTUAL','merge','include','AnalyticExtractedReport','findAll','catch','show','params','length','includeAll','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','download','basename','savename','existsSync','root','server/files/reports','Sequelize','Report\x20not\x20found\x20or\x20empty','exists','format','output','toLowerCase','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','name','send','index','map','rawAttributes'];(function(_0x47bf73,_0x300241){var _0x407b68=function(_0x3a9408){while(--_0x3a9408){_0x47bf73['push'](_0x47bf73['shift']());}};_0x407b68(++_0x300241);}(_0x2201,0x1f4));var _0x1220=function(_0x5a3bb6,_0x387b23){_0x5a3bb6=_0x5a3bb6-0x0;var _0x1c8183=_0x2201[_0x5a3bb6];return _0x1c8183;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1220('0x0'));var jsonpatch=require(_0x1220('0x1'));var rp=require('request-promise');var moment=require(_0x1220('0x2'));var BPromise=require(_0x1220('0x3'));var Mustache=require(_0x1220('0x4'));var util=require('util');var path=require(_0x1220('0x5'));var sox=require(_0x1220('0x6'));var csv=require(_0x1220('0x7'));var ejs=require(_0x1220('0x8'));var fs=require('fs');var fs_extra=require(_0x1220('0x9'));var _=require(_0x1220('0xa'));var squel=require(_0x1220('0xb'));var crypto=require('crypto');var jsforce=require(_0x1220('0xc'));var deskjs=require(_0x1220('0xd'));var toCsv=require(_0x1220('0x7'));var querystring=require('querystring');var Papa=require(_0x1220('0xe'));var Redis=require('ioredis');var authService=require(_0x1220('0xf'));var qs=require(_0x1220('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1220('0x11'))(_0x1220('0x12'));var utils=require(_0x1220('0x13'));var config=require(_0x1220('0x14'));var licenseUtil=require(_0x1220('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x139397,_0x1923d2){_0x1923d2=_0x1923d2||0xcc;return function(_0x5e27a1){if(_0x5e27a1){return _0x139397[_0x1220('0x16')](_0x1923d2);}return _0x139397['status'](_0x1923d2)[_0x1220('0x17')]();};}function respondWithResult(_0xb40307,_0x34a6ec){_0x34a6ec=_0x34a6ec||0xc8;return function(_0x50ba48){if(_0x50ba48){return _0xb40307['status'](_0x34a6ec)[_0x1220('0x18')](_0x50ba48);}};}function respondWithFilteredResult(_0x5787ef,_0xfc61ba){return function(_0x3430ce){if(_0x3430ce){var _0x1b7a7d=typeof _0xfc61ba[_0x1220('0x19')]===_0x1220('0x1a')&&typeof _0xfc61ba[_0x1220('0x1b')]===_0x1220('0x1a');var _0x570f70=_0x3430ce['count'];var _0x2311b9=_0x1b7a7d?0x0:_0xfc61ba['offset'];var _0x15f6d6=_0x1b7a7d?_0x3430ce[_0x1220('0x1c')]:_0xfc61ba[_0x1220('0x19')]+_0xfc61ba[_0x1220('0x1b')];var _0x356f59;if(_0x15f6d6>=_0x570f70){_0x15f6d6=_0x570f70;_0x356f59=0xc8;}else{_0x356f59=0xce;}_0x5787ef[_0x1220('0x1d')](_0x356f59);return _0x5787ef[_0x1220('0x1e')](_0x1220('0x1f'),_0x2311b9+'-'+_0x15f6d6+'/'+_0x570f70)[_0x1220('0x18')](_0x3430ce);}return null;};}function patchUpdates(_0x4b163d){return function(_0x6e9197){try{jsonpatch['apply'](_0x6e9197,_0x4b163d,!![]);}catch(_0x2ed166){return BPromise[_0x1220('0x20')](_0x2ed166);}return _0x6e9197[_0x1220('0x21')]();};}function saveUpdates(_0x282a11,_0x433f67){return function(_0x23367f){if(_0x23367f){return _0x23367f[_0x1220('0x22')](_0x282a11)[_0x1220('0x23')](function(_0x46d383){return _0x46d383;});}return null;};}function removeEntity(_0x441694,_0x195745){return function(_0x3adef9){if(_0x3adef9){return _0x3adef9[_0x1220('0x24')]()[_0x1220('0x23')](function(){var _0x8592d3=_0x3adef9[_0x1220('0x25')]({'plain':!![]});var _0x2538fc=_0x1220('0x26');return db[_0x1220('0x27')][_0x1220('0x24')]({'where':{'type':_0x2538fc,'resourceId':_0x8592d3['id']}})[_0x1220('0x23')](function(){return _0x3adef9;});})['then'](function(){_0x441694['status'](0xcc)[_0x1220('0x17')]();});}};}function handleEntityNotFound(_0x253354,_0x30de2e){return function(_0x4a2ff4){if(!_0x4a2ff4){_0x253354[_0x1220('0x16')](0x194);}return _0x4a2ff4;};}function handleError(_0x19f7d1,_0x28fbcc){_0x28fbcc=_0x28fbcc||0x1f4;return function(_0x4c3a8d){logger[_0x1220('0x28')](_0x4c3a8d['stack']);if(_0x4c3a8d[_0x1220('0x29')]){delete _0x4c3a8d['name'];}_0x19f7d1[_0x1220('0x1d')](_0x28fbcc)[_0x1220('0x2a')](_0x4c3a8d);};}exports[_0x1220('0x2b')]=function(_0x4899c0,_0x1e1a26){var _0x1e7218={},_0x5f0b1f={},_0x32573f={'count':0x0,'rows':[]};var _0x167d9b=_[_0x1220('0x2c')](db['AnalyticExtractedReport'][_0x1220('0x2d')],function(_0x37a26d){return{'name':_0x37a26d['fieldName'],'type':_0x37a26d[_0x1220('0x2e')][_0x1220('0x2f')]};});_0x5f0b1f[_0x1220('0x30')]=_[_0x1220('0x2c')](_0x167d9b,_0x1220('0x29'));_0x5f0b1f[_0x1220('0x31')]=_[_0x1220('0x32')](_0x4899c0['query']);_0x5f0b1f[_0x1220('0x33')]=_[_0x1220('0x34')](_0x5f0b1f[_0x1220('0x30')],_0x5f0b1f[_0x1220('0x31')]);_0x1e7218[_0x1220('0x35')]=_[_0x1220('0x34')](_0x5f0b1f[_0x1220('0x30')],qs[_0x1220('0x36')](_0x4899c0[_0x1220('0x31')][_0x1220('0x36')]));_0x1e7218[_0x1220('0x35')]=_0x1e7218[_0x1220('0x35')]['length']?_0x1e7218[_0x1220('0x35')]:_0x5f0b1f[_0x1220('0x30')];if(!_0x4899c0[_0x1220('0x31')][_0x1220('0x37')]('nolimit')){_0x1e7218[_0x1220('0x1b')]=qs['limit'](_0x4899c0['query'][_0x1220('0x1b')]);_0x1e7218[_0x1220('0x19')]=qs['offset'](_0x4899c0[_0x1220('0x31')][_0x1220('0x19')]);}_0x1e7218[_0x1220('0x38')]=qs[_0x1220('0x39')](_0x4899c0['query'][_0x1220('0x39')]);_0x1e7218['where']=qs[_0x1220('0x33')](_['pick'](_0x4899c0[_0x1220('0x31')],_0x5f0b1f[_0x1220('0x33')]),_0x167d9b);if(_0x4899c0[_0x1220('0x31')][_0x1220('0x3a')]){_0x1e7218[_0x1220('0x3b')]=_['merge'](_0x1e7218['where'],{'$or':_['map'](_0x167d9b,function(_0x78ed08){if(_0x78ed08[_0x1220('0x2e')]!==_0x1220('0x3c')){var _0x33d192={};_0x33d192[_0x78ed08[_0x1220('0x29')]]={'$like':'%'+_0x4899c0['query']['filter']+'%'};return _0x33d192;}})});}_0x1e7218=_[_0x1220('0x3d')]({},_0x1e7218,_0x4899c0['options']);var _0x59e33e={'where':_0x1e7218[_0x1220('0x3b')]};return db['AnalyticExtractedReport'][_0x1220('0x1c')](_0x59e33e)['then'](function(_0x3dec74){_0x32573f[_0x1220('0x1c')]=_0x3dec74;if(_0x4899c0['query']['includeAll']){_0x1e7218[_0x1220('0x3e')]=[{'all':!![]}];}return db[_0x1220('0x3f')][_0x1220('0x40')](_0x1e7218);})['then'](function(_0x42dd88){_0x32573f['rows']=_0x42dd88;return _0x32573f;})[_0x1220('0x23')](respondWithFilteredResult(_0x1e1a26,_0x1e7218))[_0x1220('0x41')](handleError(_0x1e1a26,null));};exports[_0x1220('0x42')]=function(_0x1e6c41,_0x573aba){var _0x31f65e={'raw':!![],'where':{'id':_0x1e6c41[_0x1220('0x43')]['id']}},_0x407672={};_0x407672[_0x1220('0x30')]=_[_0x1220('0x32')](db[_0x1220('0x3f')][_0x1220('0x2d')]);_0x407672[_0x1220('0x31')]=_[_0x1220('0x32')](_0x1e6c41[_0x1220('0x31')]);_0x407672['filters']=_[_0x1220('0x34')](_0x407672[_0x1220('0x30')],_0x407672[_0x1220('0x31')]);_0x31f65e[_0x1220('0x35')]=_['intersection'](_0x407672[_0x1220('0x30')],qs[_0x1220('0x36')](_0x1e6c41[_0x1220('0x31')][_0x1220('0x36')]));_0x31f65e[_0x1220('0x35')]=_0x31f65e['attributes'][_0x1220('0x44')]?_0x31f65e[_0x1220('0x35')]:_0x407672['model'];if(_0x1e6c41[_0x1220('0x31')][_0x1220('0x45')]){_0x31f65e[_0x1220('0x3e')]=[{'all':!![]}];}_0x31f65e=_[_0x1220('0x3d')]({},_0x31f65e,_0x1e6c41[_0x1220('0x46')]);return db['AnalyticExtractedReport']['find'](_0x31f65e)[_0x1220('0x23')](handleEntityNotFound(_0x573aba,null))['then'](respondWithResult(_0x573aba,null))[_0x1220('0x41')](handleError(_0x573aba,null));};exports[_0x1220('0x47')]=function(_0x43a86a,_0x5efc0d){return db[_0x1220('0x3f')][_0x1220('0x47')](_0x43a86a[_0x1220('0x48')],{})[_0x1220('0x23')](function(_0x5c7e80){var _0x2c32dc=_0x43a86a[_0x1220('0x49')][_0x1220('0x25')]({'plain':!![]});if(!_0x2c32dc)throw new Error(_0x1220('0x4a'));if(_0x2c32dc['role']===_0x1220('0x49')){var _0x565a8d=_0x5c7e80['get']({'plain':!![]});var _0x27505a='ExtractedReports';return db[_0x1220('0x4b')][_0x1220('0x4c')]({'where':{'name':_0x27505a,'userProfileId':_0x2c32dc[_0x1220('0x4d')]},'raw':!![]})[_0x1220('0x23')](function(_0x5a941d){if(_0x5a941d&&_0x5a941d[_0x1220('0x4e')]===0x0){return db['UserProfileResource'][_0x1220('0x47')]({'name':_0x565a8d[_0x1220('0x29')],'resourceId':_0x565a8d['id'],'type':_0x5a941d[_0x1220('0x29')],'sectionId':_0x5a941d['id']},{})[_0x1220('0x23')](function(){return _0x5c7e80;});}else{return _0x5c7e80;}})[_0x1220('0x41')](function(_0xbd8ff4){logger[_0x1220('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xbd8ff4);throw _0xbd8ff4;});}return _0x5c7e80;})[_0x1220('0x23')](respondWithResult(_0x5efc0d,0xc9))['catch'](handleError(_0x5efc0d,null));};exports[_0x1220('0x22')]=function(_0xe2a666,_0x2fd79f){if(_0xe2a666[_0x1220('0x48')]['id']){delete _0xe2a666[_0x1220('0x48')]['id'];}return db[_0x1220('0x3f')][_0x1220('0x4c')]({'where':{'id':_0xe2a666[_0x1220('0x43')]['id']}})['then'](handleEntityNotFound(_0x2fd79f,null))['then'](saveUpdates(_0xe2a666[_0x1220('0x48')],null))[_0x1220('0x23')](respondWithResult(_0x2fd79f,null))[_0x1220('0x41')](handleError(_0x2fd79f,null));};exports[_0x1220('0x24')]=function(_0x4ab96a,_0x31704a){return db[_0x1220('0x3f')][_0x1220('0x4c')]({'where':{'id':_0x4ab96a[_0x1220('0x43')]['id']}})[_0x1220('0x23')](handleEntityNotFound(_0x31704a,null))[_0x1220('0x23')](removeEntity(_0x31704a,null))[_0x1220('0x41')](handleError(_0x31704a,null));};exports[_0x1220('0x4f')]=function(_0x8502e3,_0x32297c,_0x28ffb3){return db[_0x1220('0x3f')][_0x1220('0x4c')]({'where':{'id':_0x8502e3[_0x1220('0x43')]['id']},'attributes':[_0x1220('0x29'),_0x1220('0x50'),_0x1220('0x51'),'output'],'raw':!![]})[_0x1220('0x23')](handleEntityNotFound(_0x32297c,null))[_0x1220('0x23')](function(_0x202bc0){if(_0x202bc0){if(!fs[_0x1220('0x52')](path['join'](config[_0x1220('0x53')],_0x1220('0x54'),_0x202bc0[_0x1220('0x51')]))){throw new db[(_0x1220('0x55'))]['ValidationError'](_0x1220('0x56'));}if(_0x8502e3[_0x1220('0x31')][_0x1220('0x57')]){return _0x32297c[_0x1220('0x16')](0xc8);}return _0x32297c['download'](path['join'](config['root'],_0x1220('0x54'),_0x202bc0[_0x1220('0x51')]),util[_0x1220('0x58')]('%s.%s',_0x202bc0[_0x1220('0x50')]||_0x202bc0[_0x1220('0x29')],_0x202bc0[_0x1220('0x59')][_0x1220('0x5a')]()));}})['catch'](handleError(_0x32297c,null));};
\ No newline at end of file
index 0c1bd7b..5bb8979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03fe=['analytics_extracted_reports','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','AnalyticExtractedReport'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x03fe,0x1c9));var _0xe03f=function(_0x335854,_0x371d24){_0x335854=_0x335854-0x0;var _0xfe1fee=_0x03fe[_0x335854];return _0xfe1fee;};'use strict';var _=require('lodash');var util=require(_0xe03f('0x0'));var logger=require(_0xe03f('0x1'))('api');var moment=require(_0xe03f('0x2'));var BPromise=require(_0xe03f('0x3'));var rp=require(_0xe03f('0x4'));var fs=require('fs');var path=require(_0xe03f('0x5'));var rimraf=require(_0xe03f('0x6'));var config=require(_0xe03f('0x7'));var attributes=require(_0xe03f('0x8'));module[_0xe03f('0x9')]=function(_0x3a1208,_0x187ed3){return _0x3a1208['define'](_0xe03f('0xa'),attributes,{'tableName':_0xe03f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f05=['path','exports','define','AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','bluebird','request-promise'];(function(_0x29e6c0,_0x10b570){var _0x3c4884=function(_0x5c8375){while(--_0x5c8375){_0x29e6c0['push'](_0x29e6c0['shift']());}};_0x3c4884(++_0x10b570);}(_0x0f05,0x19f));var _0x50f0=function(_0x59784f,_0x307aac){_0x59784f=_0x59784f-0x0;var _0xaf073c=_0x0f05[_0x59784f];return _0xaf073c;};'use strict';var _=require('lodash');var util=require(_0x50f0('0x0'));var logger=require(_0x50f0('0x1'))(_0x50f0('0x2'));var moment=require('moment');var BPromise=require(_0x50f0('0x3'));var rp=require(_0x50f0('0x4'));var fs=require('fs');var path=require(_0x50f0('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./analyticExtractedReport.attributes');module[_0x50f0('0x6')]=function(_0x5dbc56,_0x58d7a5){return _0x5dbc56[_0x50f0('0x7')](_0x50f0('0x8'),attributes,{'tableName':_0x50f0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d42013c..1bbf39e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x225f=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x3fbaab,_0x15bbf4){var _0x239b05=function(_0x45a903){while(--_0x45a903){_0x3fbaab['push'](_0x3fbaab['shift']());}};_0x239b05(++_0x15bbf4);}(_0x225f,0x94));var _0xf225=function(_0x1d0d3c,_0x272647){_0x1d0d3c=_0x1d0d3c-0x0;var _0x4919bf=_0x225f[_0x1d0d3c];return _0x4919bf;};'use strict';var _=require(_0xf225('0x0'));var util=require(_0xf225('0x1'));var moment=require(_0xf225('0x2'));var BPromise=require(_0xf225('0x3'));var rs=require(_0xf225('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf225('0x5'))['db'];var utils=require(_0xf225('0x6'));var logger=require(_0xf225('0x7'))(_0xf225('0x8'));var config=require('../../config/environment');var jayson=require(_0xf225('0x9'));var client=jayson[_0xf225('0xa')][_0xf225('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x30343d,_0x5ceb2c,_0x4f423a){return new BPromise(function(_0x5ecb95,_0x35332f){return client['request'](_0x30343d,_0x4f423a)[_0xf225('0xc')](function(_0x50fbc9){logger['info'](_0xf225('0xd'),_0x5ceb2c,_0xf225('0xe'));logger[_0xf225('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x5ceb2c,_0xf225('0xe'),JSON[_0xf225('0x10')](_0x50fbc9));if(_0x50fbc9[_0xf225('0x11')]){if(_0x50fbc9[_0xf225('0x11')][_0xf225('0x12')]===0x1f4){logger['error'](_0xf225('0xd'),_0x5ceb2c,_0x50fbc9[_0xf225('0x11')][_0xf225('0x13')]);return _0x35332f(_0x50fbc9['error'][_0xf225('0x13')]);}logger[_0xf225('0x11')](_0xf225('0xd'),_0x5ceb2c,_0x50fbc9[_0xf225('0x11')][_0xf225('0x13')]);return _0x5ecb95(_0x50fbc9['error']['message']);}else{logger[_0xf225('0x14')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x5ceb2c,'request\x20sent');_0x5ecb95(_0x50fbc9['result'][_0xf225('0x13')]);}})[_0xf225('0x15')](function(_0x40c699){logger[_0xf225('0x11')](_0xf225('0xd'),_0x5ceb2c,_0x40c699);_0x35332f(_0x40c699);});});}
\ No newline at end of file
+var _0x7f5e=['AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','AnalyticExtractedReport,\x20%s,\x20%s'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x7f5e,0x1a8));var _0xe7f5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7f5e[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xe7f5('0x0'));var util=require(_0xe7f5('0x1'));var moment=require(_0xe7f5('0x2'));var BPromise=require(_0xe7f5('0x3'));var rs=require(_0xe7f5('0x4'));var fs=require('fs');var Redis=require(_0xe7f5('0x5'));var db=require(_0xe7f5('0x6'))['db'];var utils=require(_0xe7f5('0x7'));var logger=require(_0xe7f5('0x8'))(_0xe7f5('0x9'));var config=require(_0xe7f5('0xa'));var jayson=require(_0xe7f5('0xb'));var client=jayson[_0xe7f5('0xc')][_0xe7f5('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4e3199,_0x28112d,_0x5c49c8){return new BPromise(function(_0x435ad4,_0x5c515f){return client['request'](_0x4e3199,_0x5c49c8)['then'](function(_0x27526d){logger[_0xe7f5('0xe')](_0xe7f5('0xf'),_0x28112d,'request\x20sent');logger['debug'](_0xe7f5('0x10'),_0x28112d,'request\x20sent',JSON[_0xe7f5('0x11')](_0x27526d));if(_0x27526d[_0xe7f5('0x12')]){if(_0x27526d[_0xe7f5('0x12')]['code']===0x1f4){logger[_0xe7f5('0x12')](_0xe7f5('0xf'),_0x28112d,_0x27526d[_0xe7f5('0x12')]['message']);return _0x5c515f(_0x27526d[_0xe7f5('0x12')][_0xe7f5('0x13')]);}logger['error'](_0xe7f5('0xf'),_0x28112d,_0x27526d[_0xe7f5('0x12')][_0xe7f5('0x13')]);return _0x435ad4(_0x27526d[_0xe7f5('0x12')][_0xe7f5('0x13')]);}else{logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x28112d,_0xe7f5('0x14'));_0x435ad4(_0x27526d['result'][_0xe7f5('0x13')]);}})[_0xe7f5('0x15')](function(_0xb94ac4){logger[_0xe7f5('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x28112d,_0xb94ac4);_0x5c515f(_0xb94ac4);});});}
\ No newline at end of file
index 688e8a7..66586ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eb8=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','index','/:id','/:id/download','post','isAuthenticated','update','delete','exports','multer','util','path'];(function(_0x120cbe,_0x4a0981){var _0x1d2864=function(_0x56671b){while(--_0x56671b){_0x120cbe['push'](_0x120cbe['shift']());}};_0x1d2864(++_0x4a0981);}(_0x9eb8,0x179));var _0x89eb=function(_0x44c2a1,_0x4420a1){_0x44c2a1=_0x44c2a1-0x0;var _0x58f2e8=_0x9eb8[_0x44c2a1];return _0x58f2e8;};'use strict';var multer=require(_0x89eb('0x0'));var util=require(_0x89eb('0x1'));var path=require(_0x89eb('0x2'));var timeout=require(_0x89eb('0x3'));var express=require(_0x89eb('0x4'));var router=express[_0x89eb('0x5')]();var fs_extra=require(_0x89eb('0x6'));var auth=require(_0x89eb('0x7'));var interaction=require(_0x89eb('0x8'));var config=require(_0x89eb('0x9'));var controller=require(_0x89eb('0xa'));router[_0x89eb('0xb')]('/',auth['isAuthenticated'](),controller[_0x89eb('0xc')]);router['get'](_0x89eb('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x89eb('0xe'),auth['isAuthenticated'](),controller['download']);router[_0x89eb('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x89eb('0xd'),auth[_0x89eb('0x10')](),controller[_0x89eb('0x11')]);router[_0x89eb('0x12')](_0x89eb('0xd'),auth[_0x89eb('0x10')](),controller['destroy']);module[_0x89eb('0x13')]=router;
\ No newline at end of file
+var _0xc4a6=['../../components/auth/service','get','/:id','isAuthenticated','show','/:id/download','download','post','put','update','delete','exports','multer','util','path','connect-timeout','Router'];(function(_0x10d613,_0x2f50a5){var _0x286f9c=function(_0x1a9fe5){while(--_0x1a9fe5){_0x10d613['push'](_0x10d613['shift']());}};_0x286f9c(++_0x2f50a5);}(_0xc4a6,0xa5));var _0x6c4a=function(_0x4b3d13,_0x1993d5){_0x4b3d13=_0x4b3d13-0x0;var _0xf64dd8=_0xc4a6[_0x4b3d13];return _0xf64dd8;};'use strict';var multer=require(_0x6c4a('0x0'));var util=require(_0x6c4a('0x1'));var path=require(_0x6c4a('0x2'));var timeout=require(_0x6c4a('0x3'));var express=require('express');var router=express[_0x6c4a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6c4a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./analyticExtractedReport.controller');router[_0x6c4a('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6c4a('0x6')](_0x6c4a('0x7'),auth[_0x6c4a('0x8')](),controller[_0x6c4a('0x9')]);router[_0x6c4a('0x6')](_0x6c4a('0xa'),auth[_0x6c4a('0x8')](),controller[_0x6c4a('0xb')]);router[_0x6c4a('0xc')]('/',auth[_0x6c4a('0x8')](),controller['create']);router[_0x6c4a('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x6c4a('0xe')]);router[_0x6c4a('0xf')](_0x6c4a('0x7'),auth['isAuthenticated'](),controller['destroy']);module[_0x6c4a('0x10')]=router;
\ No newline at end of file
index b7529ca..641a671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc317=['STRING','BOOLEAN','sequelize','TEXT'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xc317,0x15e));var _0x7c31=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc317[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7c31('0x0'));module['exports']={'field':{'type':Sequelize[_0x7c31('0x1')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x7c31('0x2')]},'format':{'type':Sequelize[_0x7c31('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x7c31('0x2')]},'custom':{'type':Sequelize[_0x7c31('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc46a=['exports','STRING','BOOLEAN','sequelize'];(function(_0xa2fd6,_0x4e5f7f){var _0x5fa614=function(_0x28f304){while(--_0x28f304){_0xa2fd6['push'](_0xa2fd6['shift']());}};_0x5fa614(++_0x4e5f7f);}(_0xc46a,0x1c7));var _0xac46=function(_0x178b3d,_0x40dc46){_0x178b3d=_0x178b3d-0x0;var _0x1c05c1=_0xc46a[_0x178b3d];return _0x1c05c1;};'use strict';var Sequelize=require(_0xac46('0x0'));module[_0xac46('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0xac46('0x2')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0xac46('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xac46('0x2')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 62da170..8665b92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4369=['merge','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','find','create','body','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','transaction','CustomReportId','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter'];(function(_0x372783,_0x43b657){var _0xe9af12=function(_0x27e672){while(--_0x27e672){_0x372783['push'](_0x372783['shift']());}};_0xe9af12(++_0x43b657);}(_0x4369,0x160));var _0x9436=function(_0x5d225a,_0x2debe9){_0x5d225a=_0x5d225a-0x0;var _0x1e7761=_0x4369[_0x5d225a];return _0x1e7761;};'use strict';var emlformat=require(_0x9436('0x0'));var rimraf=require(_0x9436('0x1'));var zipdir=require(_0x9436('0x2'));var jsonpatch=require(_0x9436('0x3'));var rp=require('request-promise');var moment=require(_0x9436('0x4'));var BPromise=require(_0x9436('0x5'));var Mustache=require('mustache');var util=require(_0x9436('0x6'));var path=require(_0x9436('0x7'));var sox=require(_0x9436('0x8'));var csv=require('to-csv');var ejs=require(_0x9436('0x9'));var fs=require('fs');var fs_extra=require(_0x9436('0xa'));var _=require(_0x9436('0xb'));var squel=require('squel');var crypto=require(_0x9436('0xc'));var jsforce=require(_0x9436('0xd'));var deskjs=require(_0x9436('0xe'));var toCsv=require(_0x9436('0xf'));var querystring=require(_0x9436('0x10'));var Papa=require(_0x9436('0x11'));var Redis=require(_0x9436('0x12'));var authService=require(_0x9436('0x13'));var qs=require(_0x9436('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9436('0x15'));var utils=require(_0x9436('0x16'));var config=require(_0x9436('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3976e0,_0x53ff31){_0x53ff31=_0x53ff31||0xcc;return function(_0x3ed2f9){if(_0x3ed2f9){return _0x3976e0[_0x9436('0x18')](_0x53ff31);}return _0x3976e0['status'](_0x53ff31)[_0x9436('0x19')]();};}function respondWithResult(_0x2a408e,_0x58e4c2){_0x58e4c2=_0x58e4c2||0xc8;return function(_0x2afbdb){if(_0x2afbdb){return _0x2a408e[_0x9436('0x1a')](_0x58e4c2)[_0x9436('0x1b')](_0x2afbdb);}};}function respondWithFilteredResult(_0x10513a,_0x4e6589){return function(_0x587670){if(_0x587670){var _0x380059=typeof _0x4e6589[_0x9436('0x1c')]===_0x9436('0x1d')&&typeof _0x4e6589[_0x9436('0x1e')]==='undefined';var _0x59cdbf=_0x587670[_0x9436('0x1f')];var _0x25f2e6=_0x380059?0x0:_0x4e6589['offset'];var _0x450910=_0x380059?_0x587670[_0x9436('0x1f')]:_0x4e6589[_0x9436('0x1c')]+_0x4e6589[_0x9436('0x1e')];var _0x1d44fd;if(_0x450910>=_0x59cdbf){_0x450910=_0x59cdbf;_0x1d44fd=0xc8;}else{_0x1d44fd=0xce;}_0x10513a[_0x9436('0x1a')](_0x1d44fd);return _0x10513a[_0x9436('0x20')](_0x9436('0x21'),_0x25f2e6+'-'+_0x450910+'/'+_0x59cdbf)[_0x9436('0x1b')](_0x587670);}return null;};}function patchUpdates(_0x2d004e){return function(_0x4238b2){try{jsonpatch[_0x9436('0x22')](_0x4238b2,_0x2d004e,!![]);}catch(_0xc30de0){return BPromise[_0x9436('0x23')](_0xc30de0);}return _0x4238b2[_0x9436('0x24')]();};}function saveUpdates(_0x33b287,_0x2280fd){return function(_0xa1d408){if(_0xa1d408){return _0xa1d408[_0x9436('0x25')](_0x33b287)[_0x9436('0x26')](function(_0x5f1de0){return _0x5f1de0;});}return null;};}function removeEntity(_0x44684f,_0x4f76ac){return function(_0x42864b){if(_0x42864b){return _0x42864b[_0x9436('0x27')]()[_0x9436('0x26')](function(){_0x44684f['status'](0xcc)[_0x9436('0x19')]();});}};}function handleEntityNotFound(_0x13ddae,_0x4f525c){return function(_0x1bf134){if(!_0x1bf134){_0x13ddae['sendStatus'](0x194);}return _0x1bf134;};}function handleError(_0x996f60,_0xbc6d2f){_0xbc6d2f=_0xbc6d2f||0x1f4;return function(_0x41b8a1){logger['error'](_0x41b8a1[_0x9436('0x28')]);if(_0x41b8a1[_0x9436('0x29')]){delete _0x41b8a1[_0x9436('0x29')];}_0x996f60['status'](_0xbc6d2f)['send'](_0x41b8a1);};}exports[_0x9436('0x2a')]=function(_0x5ba01a,_0x4c81cf){var _0x20c19b={},_0x241077={},_0x1e274c={'count':0x0,'rows':[]};var _0x2da229=_[_0x9436('0x2b')](db[_0x9436('0x2c')][_0x9436('0x2d')],function(_0x1d741c){return{'name':_0x1d741c[_0x9436('0x2e')],'type':_0x1d741c[_0x9436('0x2f')][_0x9436('0x30')]};});_0x241077[_0x9436('0x31')]=_[_0x9436('0x2b')](_0x2da229,_0x9436('0x29'));_0x241077[_0x9436('0x32')]=_[_0x9436('0x33')](_0x5ba01a[_0x9436('0x32')]);_0x241077['filters']=_[_0x9436('0x34')](_0x241077[_0x9436('0x31')],_0x241077['query']);_0x20c19b['attributes']=_[_0x9436('0x34')](_0x241077[_0x9436('0x31')],qs[_0x9436('0x35')](_0x5ba01a[_0x9436('0x32')]['fields']));_0x20c19b['attributes']=_0x20c19b[_0x9436('0x36')]['length']?_0x20c19b[_0x9436('0x36')]:_0x241077[_0x9436('0x31')];if(!_0x5ba01a[_0x9436('0x32')][_0x9436('0x37')](_0x9436('0x38'))){_0x20c19b[_0x9436('0x1e')]=qs[_0x9436('0x1e')](_0x5ba01a['query'][_0x9436('0x1e')]);_0x20c19b[_0x9436('0x1c')]=qs[_0x9436('0x1c')](_0x5ba01a[_0x9436('0x32')][_0x9436('0x1c')]);}_0x20c19b[_0x9436('0x39')]=qs[_0x9436('0x3a')](_0x5ba01a[_0x9436('0x32')]['sort']);_0x20c19b[_0x9436('0x3b')]=qs[_0x9436('0x3c')](_[_0x9436('0x3d')](_0x5ba01a[_0x9436('0x32')],_0x241077[_0x9436('0x3c')]),_0x2da229);if(_0x5ba01a['query'][_0x9436('0x3e')]){_0x20c19b['where']=_[_0x9436('0x3f')](_0x20c19b[_0x9436('0x3b')],{'$or':_[_0x9436('0x2b')](_0x2da229,function(_0x2a2dd8){if(_0x2a2dd8['type']!==_0x9436('0x40')){var _0x3389fc={};_0x3389fc[_0x2a2dd8[_0x9436('0x29')]]={'$like':'%'+_0x5ba01a['query'][_0x9436('0x3e')]+'%'};return _0x3389fc;}})});}_0x20c19b=_['merge']({},_0x20c19b,_0x5ba01a[_0x9436('0x41')]);var _0x2e07ca={'where':_0x20c19b['where']};return db[_0x9436('0x2c')][_0x9436('0x1f')](_0x2e07ca)[_0x9436('0x26')](function(_0x315667){_0x1e274c['count']=_0x315667;if(_0x5ba01a[_0x9436('0x32')]['includeAll']){_0x20c19b[_0x9436('0x42')]=[{'all':!![]}];}return db[_0x9436('0x2c')][_0x9436('0x43')](_0x20c19b);})['then'](function(_0x16c61b){_0x1e274c[_0x9436('0x44')]=_0x16c61b;return _0x1e274c;})['then'](respondWithFilteredResult(_0x4c81cf,_0x20c19b))[_0x9436('0x45')](handleError(_0x4c81cf,null));};exports['show']=function(_0x15add5,_0xa9c77d){var _0x2f7734={'raw':![],'where':{'id':_0x15add5[_0x9436('0x46')]['id']}},_0x1a26b1={};_0x1a26b1['model']=_[_0x9436('0x33')](db[_0x9436('0x2c')][_0x9436('0x2d')]);_0x1a26b1[_0x9436('0x32')]=_[_0x9436('0x33')](_0x15add5['query']);_0x1a26b1[_0x9436('0x3c')]=_[_0x9436('0x34')](_0x1a26b1['model'],_0x1a26b1[_0x9436('0x32')]);_0x2f7734[_0x9436('0x36')]=_[_0x9436('0x34')](_0x1a26b1[_0x9436('0x31')],qs['fields'](_0x15add5[_0x9436('0x32')]['fields']));_0x2f7734[_0x9436('0x36')]=_0x2f7734[_0x9436('0x36')]['length']?_0x2f7734[_0x9436('0x36')]:_0x1a26b1[_0x9436('0x31')];if(_0x15add5[_0x9436('0x32')][_0x9436('0x47')]){_0x2f7734[_0x9436('0x42')]=[{'all':!![]}];}_0x2f7734=_[_0x9436('0x3f')]({},_0x2f7734,_0x15add5[_0x9436('0x41')]);return db[_0x9436('0x2c')][_0x9436('0x48')](_0x2f7734)[_0x9436('0x26')](handleEntityNotFound(_0xa9c77d,null))[_0x9436('0x26')](respondWithResult(_0xa9c77d,null))['catch'](handleError(_0xa9c77d,null));};exports[_0x9436('0x49')]=function(_0x2b491f,_0x51c2af){return db[_0x9436('0x2c')][_0x9436('0x49')](_0x2b491f[_0x9436('0x4a')],{})['then'](respondWithResult(_0x51c2af,0xc9))[_0x9436('0x45')](handleError(_0x51c2af,null));};exports['bulkCreate']=function(_0x9cc55d,_0x211f5b){return db['AnalyticFieldReport']['bulkCreate'](_0x9cc55d['body'],{'raw':![],'individualHooks':!![]})[_0x9436('0x26')](respondWithResult(_0x211f5b,0xc9))[_0x9436('0x45')](handleError(_0x211f5b,null));};exports[_0x9436('0x25')]=function(_0x13a0b6,_0xf7a6d5){if(_0x13a0b6['body']['id']){delete _0x13a0b6['body']['id'];}return db['AnalyticFieldReport'][_0x9436('0x48')]({'where':{'id':_0x13a0b6[_0x9436('0x46')]['id']}})[_0x9436('0x26')](handleEntityNotFound(_0xf7a6d5,null))['then'](saveUpdates(_0x13a0b6['body'],null))['then'](respondWithResult(_0xf7a6d5,null))[_0x9436('0x45')](handleError(_0xf7a6d5,null));};exports[_0x9436('0x27')]=function(_0x595fcf,_0x83515f){return db[_0x9436('0x2c')]['find']({'where':{'id':_0x595fcf['params']['id']}})[_0x9436('0x26')](handleEntityNotFound(_0x83515f,null))[_0x9436('0x26')](removeEntity(_0x83515f,null))[_0x9436('0x45')](handleError(_0x83515f,null));};exports[_0x9436('0x4b')]=function(_0x3eb6bb,_0x7ad43f){return db[_0x9436('0x2c')]['destroy']({'where':{'id':_0x3eb6bb['query'][_0x9436('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0x9436('0x26')](respondWithResult(_0x7ad43f,0xcc))[_0x9436('0x45')](handleError(_0x7ad43f,null));};exports[_0x9436('0x4d')]=function(_0x251192,_0x422077,_0x1e354a){return db[_0x9436('0x4e')][_0x9436('0x4f')]({'where':{'id':_0x251192[_0x9436('0x46')]['id']}})[_0x9436('0x26')](handleEntityNotFound(_0x422077,null))[_0x9436('0x26')](function(_0x1d79ae){if(_0x1d79ae){return db['sequelize'][_0x9436('0x50')](function(_0x58acc6){return db[_0x9436('0x2c')][_0x9436('0x27')]({'where':{'CustomReportId':_0x251192[_0x9436('0x46')]['id']},'transaction':_0x58acc6})[_0x9436('0x26')](function(_0x3076e2){var _0x1f3d0e=_[_0x9436('0x2b')](_0x251192[_0x9436('0x4a')],function(_0x351135){delete _0x351135['id'];_0x351135[_0x9436('0x51')]=_0x251192[_0x9436('0x46')]['id'];return _0x351135;});return db[_0x9436('0x2c')][_0x9436('0x52')](_0x1f3d0e,{'transaction':_0x58acc6});});})[_0x9436('0x26')](function(){return db[_0x9436('0x2c')][_0x9436('0x43')]({'where':{'CustomReportId':_0x251192[_0x9436('0x46')]['id']}});});}})[_0x9436('0x26')](respondWithResult(_0x422077,null))[_0x9436('0x45')](handleError(_0x422077,null));};
\ No newline at end of file
+var _0xe9ff=['../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','name','send','index','AnalyticFieldReport','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','bulkCreate','body','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger'];(function(_0x356127,_0x4873ac){var _0x5d4c75=function(_0x4fe60c){while(--_0x4fe60c){_0x356127['push'](_0x356127['shift']());}};_0x5d4c75(++_0x4873ac);}(_0xe9ff,0x8a));var _0xfe9f=function(_0x26cd48,_0x137591){_0x26cd48=_0x26cd48-0x0;var _0x3f9de9=_0xe9ff[_0x26cd48];return _0x3f9de9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfe9f('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe9f('0x1'));var moment=require(_0xfe9f('0x2'));var BPromise=require(_0xfe9f('0x3'));var Mustache=require('mustache');var util=require(_0xfe9f('0x4'));var path=require(_0xfe9f('0x5'));var sox=require(_0xfe9f('0x6'));var csv=require('to-csv');var ejs=require(_0xfe9f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe9f('0x8'));var crypto=require(_0xfe9f('0x9'));var jsforce=require(_0xfe9f('0xa'));var deskjs=require(_0xfe9f('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfe9f('0xc'));var Papa=require(_0xfe9f('0xd'));var Redis=require(_0xfe9f('0xe'));var authService=require(_0xfe9f('0xf'));var qs=require(_0xfe9f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfe9f('0x11'))('api');var utils=require(_0xfe9f('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xfe9f('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c58de,_0x5256ac){_0x5256ac=_0x5256ac||0xcc;return function(_0x19ccbf){if(_0x19ccbf){return _0x2c58de[_0xfe9f('0x14')](_0x5256ac);}return _0x2c58de[_0xfe9f('0x15')](_0x5256ac)[_0xfe9f('0x16')]();};}function respondWithResult(_0x6bcf73,_0x2cbe2f){_0x2cbe2f=_0x2cbe2f||0xc8;return function(_0xe439d9){if(_0xe439d9){return _0x6bcf73[_0xfe9f('0x15')](_0x2cbe2f)['json'](_0xe439d9);}};}function respondWithFilteredResult(_0x1a339d,_0x4e1aaa){return function(_0x4568de){if(_0x4568de){var _0x14895b=typeof _0x4e1aaa[_0xfe9f('0x17')]===_0xfe9f('0x18')&&typeof _0x4e1aaa[_0xfe9f('0x19')]===_0xfe9f('0x18');var _0x152a4a=_0x4568de['count'];var _0x1b4cbf=_0x14895b?0x0:_0x4e1aaa['offset'];var _0x451aff=_0x14895b?_0x4568de[_0xfe9f('0x1a')]:_0x4e1aaa[_0xfe9f('0x17')]+_0x4e1aaa['limit'];var _0x390afa;if(_0x451aff>=_0x152a4a){_0x451aff=_0x152a4a;_0x390afa=0xc8;}else{_0x390afa=0xce;}_0x1a339d[_0xfe9f('0x15')](_0x390afa);return _0x1a339d[_0xfe9f('0x1b')]('Content-Range',_0x1b4cbf+'-'+_0x451aff+'/'+_0x152a4a)[_0xfe9f('0x1c')](_0x4568de);}return null;};}function patchUpdates(_0x398ee6){return function(_0x4b52b2){try{jsonpatch[_0xfe9f('0x1d')](_0x4b52b2,_0x398ee6,!![]);}catch(_0x3231ff){return BPromise[_0xfe9f('0x1e')](_0x3231ff);}return _0x4b52b2[_0xfe9f('0x1f')]();};}function saveUpdates(_0x4d01d9,_0x5b8daf){return function(_0x54a5be){if(_0x54a5be){return _0x54a5be[_0xfe9f('0x20')](_0x4d01d9)[_0xfe9f('0x21')](function(_0x51efdc){return _0x51efdc;});}return null;};}function removeEntity(_0x46338c,_0x55df29){return function(_0x4113fc){if(_0x4113fc){return _0x4113fc[_0xfe9f('0x22')]()[_0xfe9f('0x21')](function(){_0x46338c[_0xfe9f('0x15')](0xcc)[_0xfe9f('0x16')]();});}};}function handleEntityNotFound(_0xbfe3a4,_0x14e614){return function(_0x54d712){if(!_0x54d712){_0xbfe3a4[_0xfe9f('0x14')](0x194);}return _0x54d712;};}function handleError(_0x47bb39,_0x6d6b8d){_0x6d6b8d=_0x6d6b8d||0x1f4;return function(_0x4f9e93){logger[_0xfe9f('0x23')](_0x4f9e93['stack']);if(_0x4f9e93[_0xfe9f('0x24')]){delete _0x4f9e93[_0xfe9f('0x24')];}_0x47bb39[_0xfe9f('0x15')](_0x6d6b8d)[_0xfe9f('0x25')](_0x4f9e93);};}exports[_0xfe9f('0x26')]=function(_0x3f1fdc,_0x2288df){var _0x1f0584={},_0x1bfe85={},_0xea2212={'count':0x0,'rows':[]};var _0x303c0e=_['map'](db[_0xfe9f('0x27')][_0xfe9f('0x28')],function(_0x143f6b){return{'name':_0x143f6b['fieldName'],'type':_0x143f6b[_0xfe9f('0x29')][_0xfe9f('0x2a')]};});_0x1bfe85['model']=_['map'](_0x303c0e,_0xfe9f('0x24'));_0x1bfe85[_0xfe9f('0x2b')]=_[_0xfe9f('0x2c')](_0x3f1fdc[_0xfe9f('0x2b')]);_0x1bfe85[_0xfe9f('0x2d')]=_[_0xfe9f('0x2e')](_0x1bfe85[_0xfe9f('0x2f')],_0x1bfe85[_0xfe9f('0x2b')]);_0x1f0584[_0xfe9f('0x30')]=_[_0xfe9f('0x2e')](_0x1bfe85[_0xfe9f('0x2f')],qs['fields'](_0x3f1fdc[_0xfe9f('0x2b')][_0xfe9f('0x31')]));_0x1f0584[_0xfe9f('0x30')]=_0x1f0584['attributes'][_0xfe9f('0x32')]?_0x1f0584[_0xfe9f('0x30')]:_0x1bfe85[_0xfe9f('0x2f')];if(!_0x3f1fdc[_0xfe9f('0x2b')][_0xfe9f('0x33')](_0xfe9f('0x34'))){_0x1f0584[_0xfe9f('0x19')]=qs[_0xfe9f('0x19')](_0x3f1fdc[_0xfe9f('0x2b')][_0xfe9f('0x19')]);_0x1f0584[_0xfe9f('0x17')]=qs['offset'](_0x3f1fdc['query'][_0xfe9f('0x17')]);}_0x1f0584['order']=qs[_0xfe9f('0x35')](_0x3f1fdc[_0xfe9f('0x2b')][_0xfe9f('0x35')]);_0x1f0584[_0xfe9f('0x36')]=qs['filters'](_[_0xfe9f('0x37')](_0x3f1fdc[_0xfe9f('0x2b')],_0x1bfe85[_0xfe9f('0x2d')]),_0x303c0e);if(_0x3f1fdc[_0xfe9f('0x2b')][_0xfe9f('0x38')]){_0x1f0584[_0xfe9f('0x36')]=_[_0xfe9f('0x39')](_0x1f0584[_0xfe9f('0x36')],{'$or':_[_0xfe9f('0x3a')](_0x303c0e,function(_0x24bff0){if(_0x24bff0[_0xfe9f('0x29')]!==_0xfe9f('0x3b')){var _0x14aaa4={};_0x14aaa4[_0x24bff0[_0xfe9f('0x24')]]={'$like':'%'+_0x3f1fdc['query'][_0xfe9f('0x38')]+'%'};return _0x14aaa4;}})});}_0x1f0584=_[_0xfe9f('0x39')]({},_0x1f0584,_0x3f1fdc[_0xfe9f('0x3c')]);var _0x3595b7={'where':_0x1f0584[_0xfe9f('0x36')]};return db[_0xfe9f('0x27')][_0xfe9f('0x1a')](_0x3595b7)[_0xfe9f('0x21')](function(_0x38a5bf){_0xea2212['count']=_0x38a5bf;if(_0x3f1fdc[_0xfe9f('0x2b')][_0xfe9f('0x3d')]){_0x1f0584[_0xfe9f('0x3e')]=[{'all':!![]}];}return db[_0xfe9f('0x27')][_0xfe9f('0x3f')](_0x1f0584);})['then'](function(_0x3289aa){_0xea2212[_0xfe9f('0x40')]=_0x3289aa;return _0xea2212;})[_0xfe9f('0x21')](respondWithFilteredResult(_0x2288df,_0x1f0584))[_0xfe9f('0x41')](handleError(_0x2288df,null));};exports['show']=function(_0x5f1085,_0x3eb147){var _0x29cf8a={'raw':![],'where':{'id':_0x5f1085[_0xfe9f('0x42')]['id']}},_0x4c92a6={};_0x4c92a6[_0xfe9f('0x2f')]=_[_0xfe9f('0x2c')](db[_0xfe9f('0x27')][_0xfe9f('0x28')]);_0x4c92a6[_0xfe9f('0x2b')]=_['keys'](_0x5f1085[_0xfe9f('0x2b')]);_0x4c92a6[_0xfe9f('0x2d')]=_[_0xfe9f('0x2e')](_0x4c92a6[_0xfe9f('0x2f')],_0x4c92a6[_0xfe9f('0x2b')]);_0x29cf8a[_0xfe9f('0x30')]=_['intersection'](_0x4c92a6[_0xfe9f('0x2f')],qs[_0xfe9f('0x31')](_0x5f1085['query'][_0xfe9f('0x31')]));_0x29cf8a[_0xfe9f('0x30')]=_0x29cf8a['attributes'][_0xfe9f('0x32')]?_0x29cf8a['attributes']:_0x4c92a6[_0xfe9f('0x2f')];if(_0x5f1085[_0xfe9f('0x2b')][_0xfe9f('0x3d')]){_0x29cf8a['include']=[{'all':!![]}];}_0x29cf8a=_['merge']({},_0x29cf8a,_0x5f1085[_0xfe9f('0x3c')]);return db[_0xfe9f('0x27')][_0xfe9f('0x43')](_0x29cf8a)[_0xfe9f('0x21')](handleEntityNotFound(_0x3eb147,null))[_0xfe9f('0x21')](respondWithResult(_0x3eb147,null))[_0xfe9f('0x41')](handleError(_0x3eb147,null));};exports[_0xfe9f('0x44')]=function(_0x3e6f58,_0x8d01f0){return db[_0xfe9f('0x27')][_0xfe9f('0x44')](_0x3e6f58['body'],{})[_0xfe9f('0x21')](respondWithResult(_0x8d01f0,0xc9))['catch'](handleError(_0x8d01f0,null));};exports[_0xfe9f('0x45')]=function(_0xbae3bd,_0xe3322){return db[_0xfe9f('0x27')][_0xfe9f('0x45')](_0xbae3bd[_0xfe9f('0x46')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0xe3322,0xc9))[_0xfe9f('0x41')](handleError(_0xe3322,null));};exports[_0xfe9f('0x20')]=function(_0x1a0505,_0x3e6591){if(_0x1a0505[_0xfe9f('0x46')]['id']){delete _0x1a0505['body']['id'];}return db[_0xfe9f('0x27')][_0xfe9f('0x43')]({'where':{'id':_0x1a0505[_0xfe9f('0x42')]['id']}})[_0xfe9f('0x21')](handleEntityNotFound(_0x3e6591,null))[_0xfe9f('0x21')](saveUpdates(_0x1a0505['body'],null))['then'](respondWithResult(_0x3e6591,null))['catch'](handleError(_0x3e6591,null));};exports[_0xfe9f('0x22')]=function(_0x3fecb6,_0x1e4329){return db[_0xfe9f('0x27')]['find']({'where':{'id':_0x3fecb6[_0xfe9f('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e4329,null))['then'](removeEntity(_0x1e4329,null))['catch'](handleError(_0x1e4329,null));};exports[_0xfe9f('0x47')]=function(_0x1a8834,_0x2fa744){return db['AnalyticFieldReport'][_0xfe9f('0x22')]({'where':{'id':_0x1a8834[_0xfe9f('0x2b')][_0xfe9f('0x48')]||[]},'raw':![],'individualHooks':!![]})[_0xfe9f('0x21')](respondWithResult(_0x2fa744,0xcc))[_0xfe9f('0x41')](handleError(_0x2fa744,null));};exports[_0xfe9f('0x49')]=function(_0x4ce992,_0x2d95d7,_0xbdda2b){return db[_0xfe9f('0x4a')][_0xfe9f('0x4b')]({'where':{'id':_0x4ce992[_0xfe9f('0x42')]['id']}})[_0xfe9f('0x21')](handleEntityNotFound(_0x2d95d7,null))[_0xfe9f('0x21')](function(_0x3b2d40){if(_0x3b2d40){return db[_0xfe9f('0x4c')][_0xfe9f('0x4d')](function(_0x54e1ef){return db[_0xfe9f('0x27')][_0xfe9f('0x22')]({'where':{'CustomReportId':_0x4ce992[_0xfe9f('0x42')]['id']},'transaction':_0x54e1ef})[_0xfe9f('0x21')](function(_0x3ce743){var _0x18c61b=_['map'](_0x4ce992['body'],function(_0x36ebd7){delete _0x36ebd7['id'];_0x36ebd7['CustomReportId']=_0x4ce992[_0xfe9f('0x42')]['id'];return _0x36ebd7;});return db[_0xfe9f('0x27')][_0xfe9f('0x45')](_0x18c61b,{'transaction':_0x54e1ef});});})[_0xfe9f('0x21')](function(){return db[_0xfe9f('0x27')][_0xfe9f('0x3f')]({'where':{'CustomReportId':_0x4ce992['params']['id']}});});}})[_0xfe9f('0x21')](respondWithResult(_0x2d95d7,null))[_0xfe9f('0x41')](handleError(_0x2d95d7,null));};
\ No newline at end of file
index 3397caa..b61d1eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bd1=['define','AnalyticFieldReport','api','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports'];(function(_0x149c79,_0x378717){var _0x2cda54=function(_0x33ae45){while(--_0x33ae45){_0x149c79['push'](_0x149c79['shift']());}};_0x2cda54(++_0x378717);}(_0x0bd1,0x14a));var _0x10bd=function(_0x1aefea,_0x39e5fa){_0x1aefea=_0x1aefea-0x0;var _0x33a7a1=_0x0bd1[_0x1aefea];return _0x33a7a1;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x10bd('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x10bd('0x1'));var fs=require('fs');var path=require(_0x10bd('0x2'));var rimraf=require('rimraf');var config=require(_0x10bd('0x3'));var attributes=require(_0x10bd('0x4'));module[_0x10bd('0x5')]=function(_0x56eefa,_0x1dfa92){return _0x56eefa[_0x10bd('0x6')](_0x10bd('0x7'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4925=['rimraf','./analyticFieldReport.attributes','exports','AnalyticFieldReport','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x4c1a13,_0x3bf6e7){var _0x529282=function(_0x538a5a){while(--_0x538a5a){_0x4c1a13['push'](_0x4c1a13['shift']());}};_0x529282(++_0x3bf6e7);}(_0x4925,0x11c));var _0x5492=function(_0x3a9635,_0x1ab817){_0x3a9635=_0x3a9635-0x0;var _0x10d08c=_0x4925[_0x3a9635];return _0x10d08c;};'use strict';var _=require('lodash');var util=require(_0x5492('0x0'));var logger=require(_0x5492('0x1'))('api');var moment=require(_0x5492('0x2'));var BPromise=require(_0x5492('0x3'));var rp=require(_0x5492('0x4'));var fs=require('fs');var path=require(_0x5492('0x5'));var rimraf=require(_0x5492('0x6'));var config=require('../../config/environment');var attributes=require(_0x5492('0x7'));module[_0x5492('0x8')]=function(_0x234f01,_0x117cd6){return _0x234f01['define'](_0x5492('0x9'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7cef172..0d00f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce1a=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird'];(function(_0xbdf877,_0x8306ad){var _0x2a4dfd=function(_0x4091fb){while(--_0x4091fb){_0xbdf877['push'](_0xbdf877['shift']());}};_0x2a4dfd(++_0x8306ad);}(_0xce1a,0x66));var _0xace1=function(_0x203507,_0x544d3c){_0x203507=_0x203507-0x0;var _0x11abdc=_0xce1a[_0x203507];return _0x11abdc;};'use strict';var _=require('lodash');var util=require(_0xace1('0x0'));var moment=require(_0xace1('0x1'));var BPromise=require(_0xace1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xace1('0x3'));var db=require(_0xace1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xace1('0x5'))(_0xace1('0x6'));var config=require(_0xace1('0x7'));var jayson=require(_0xace1('0x8'));var client=jayson[_0xace1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c7869,_0x1ba86f,_0x2fe705){return new BPromise(function(_0x26fde0,_0x56e010){return client['request'](_0x4c7869,_0x2fe705)['then'](function(_0x33aba2){logger[_0xace1('0xa')](_0xace1('0xb'),_0x1ba86f,_0xace1('0xc'));logger[_0xace1('0xd')](_0xace1('0xe'),_0x1ba86f,_0xace1('0xc'),JSON[_0xace1('0xf')](_0x33aba2));if(_0x33aba2[_0xace1('0x10')]){if(_0x33aba2[_0xace1('0x10')][_0xace1('0x11')]===0x1f4){logger['error'](_0xace1('0xb'),_0x1ba86f,_0x33aba2[_0xace1('0x10')][_0xace1('0x12')]);return _0x56e010(_0x33aba2[_0xace1('0x10')][_0xace1('0x12')]);}logger[_0xace1('0x10')](_0xace1('0xb'),_0x1ba86f,_0x33aba2[_0xace1('0x10')][_0xace1('0x12')]);return _0x26fde0(_0x33aba2[_0xace1('0x10')]['message']);}else{logger['info'](_0xace1('0xb'),_0x1ba86f,'request\x20sent');_0x26fde0(_0x33aba2[_0xace1('0x13')][_0xace1('0x12')]);}})[_0xace1('0x14')](function(_0x21d981){logger[_0xace1('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x1ba86f,_0x21d981);_0x56e010(_0x21d981);});});}
\ No newline at end of file
+var _0x21e4=['code','message','AnalyticFieldReport,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','info','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x47d8bb,_0x306f78){var _0x1edb65=function(_0x4c7ab8){while(--_0x4c7ab8){_0x47d8bb['push'](_0x47d8bb['shift']());}};_0x1edb65(++_0x306f78);}(_0x21e4,0x1a3));var _0x421e=function(_0x27998c,_0x20a812){_0x27998c=_0x27998c-0x0;var _0x1cd2d5=_0x21e4[_0x27998c];return _0x1cd2d5;};'use strict';var _=require(_0x421e('0x0'));var util=require(_0x421e('0x1'));var moment=require(_0x421e('0x2'));var BPromise=require('bluebird');var rs=require(_0x421e('0x3'));var fs=require('fs');var Redis=require(_0x421e('0x4'));var db=require(_0x421e('0x5'))['db'];var utils=require(_0x421e('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x348f6b,_0xc31485,_0x5b3ba4){return new BPromise(function(_0x3a16bc,_0x5dd0e2){return client['request'](_0x348f6b,_0x5b3ba4)['then'](function(_0x5aa9ed){logger[_0x421e('0x7')]('AnalyticFieldReport,\x20%s,\x20%s',_0xc31485,_0x421e('0x8'));logger[_0x421e('0x9')](_0x421e('0xa'),_0xc31485,_0x421e('0x8'),JSON[_0x421e('0xb')](_0x5aa9ed));if(_0x5aa9ed[_0x421e('0xc')]){if(_0x5aa9ed['error'][_0x421e('0xd')]===0x1f4){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0xc31485,_0x5aa9ed['error'][_0x421e('0xe')]);return _0x5dd0e2(_0x5aa9ed[_0x421e('0xc')]['message']);}logger[_0x421e('0xc')](_0x421e('0xf'),_0xc31485,_0x5aa9ed[_0x421e('0xc')][_0x421e('0xe')]);return _0x3a16bc(_0x5aa9ed[_0x421e('0xc')][_0x421e('0xe')]);}else{logger[_0x421e('0x7')](_0x421e('0xf'),_0xc31485,_0x421e('0x8'));_0x3a16bc(_0x5aa9ed[_0x421e('0x10')][_0x421e('0xe')]);}})[_0x421e('0x11')](function(_0x2c27a6){logger[_0x421e('0xc')](_0x421e('0xf'),_0xc31485,_0x2c27a6);_0x5dd0e2(_0x2c27a6);});});}
\ No newline at end of file
index 0b911b2..c091b71 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(_0x5db569,_0x25707b){var _0x247b44=function(_0x4b7dfd){while(--_0x4b7dfd){_0x5db569['push'](_0x5db569['shift']());}};_0x247b44(++_0x25707b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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(_0x1eb83c,_0xb74566){var _0x4adb7e=function(_0x579a31){while(--_0x579a31){_0x1eb83c['push'](_0x1eb83c['shift']());}};_0x4adb7e(++_0xb74566);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'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 32fb31c..989275a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b9=['TEXT','sequelize','STRING','name'];(function(_0x448f36,_0x2de412){var _0x2da584=function(_0x44125b){while(--_0x44125b){_0x448f36['push'](_0x448f36['shift']());}};_0x2da584(++_0x2de412);}(_0xa1b9,0x71));var _0x9a1b=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa1b9[_0x34bf97];return _0x292719;};'use strict';var Sequelize=require(_0x9a1b('0x0'));module['exports']={'name':{'type':Sequelize[_0x9a1b('0x1')],'allowNull':![],'unique':_0x9a1b('0x2')},'table':{'type':Sequelize[_0x9a1b('0x1')]},'metric':{'type':Sequelize[_0x9a1b('0x3')]},'description':{'type':Sequelize[_0x9a1b('0x1')]}};
\ No newline at end of file
+var _0xc041=['sequelize','exports','name','TEXT','STRING'];(function(_0x4dbba7,_0x34d6d1){var _0x43ef83=function(_0x27acf1){while(--_0x27acf1){_0x4dbba7['push'](_0x4dbba7['shift']());}};_0x43ef83(++_0x34d6d1);}(_0xc041,0x1ea));var _0x1c04=function(_0x454629,_0x486c3f){_0x454629=_0x454629-0x0;var _0xb6121c=_0xc041[_0x454629];return _0xb6121c;};'use strict';var Sequelize=require(_0x1c04('0x0'));module[_0x1c04('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1c04('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x1c04('0x3')]},'description':{'type':Sequelize[_0x1c04('0x4')]}};
\ No newline at end of file
index 829bdf2..62c2855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','get','Metrics','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','AnalyticMetric','findAll','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x2e37be,_0x5afbff){var _0x5bab01=function(_0x552d8b){while(--_0x552d8b){_0x2e37be['push'](_0x2e37be['shift']());}};_0x5bab01(++_0x5afbff);}(_0x55ca,0x126));var _0xa55c=function(_0x1bc445,_0x2d6fe0){_0x1bc445=_0x1bc445-0x0;var _0x589e6b=_0x55ca[_0x1bc445];return _0x589e6b;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){var _0x54b038=_0x5ba836[_0xa55c('0x21')]({'plain':!![]});var _0x190757=_0xa55c('0x22');return db[_0xa55c('0x23')][_0xa55c('0x24')]({'where':{'type':_0x190757,'resourceId':_0x54b038['id']}})[_0xa55c('0x20')](function(){return _0x5ba836;});})[_0xa55c('0x20')](function(){_0x1fc828[_0xa55c('0x18')](0xcc)[_0xa55c('0x25')]();});}};}function handleEntityNotFound(_0x3cd152,_0x1273d7){return function(_0x57f271){if(!_0x57f271){_0x3cd152[_0xa55c('0x26')](0x194);}return _0x57f271;};}function handleError(_0x28814f,_0x1c9f6b){_0x1c9f6b=_0x1c9f6b||0x1f4;return function(_0x906caa){logger['error'](_0x906caa[_0xa55c('0x27')]);if(_0x906caa[_0xa55c('0x28')]){delete _0x906caa[_0xa55c('0x28')];}_0x28814f[_0xa55c('0x18')](_0x1c9f6b)[_0xa55c('0x29')](_0x906caa);};}exports[_0xa55c('0x2a')]=function(_0x52d37f,_0x23e698){var _0x490b7d={},_0x35c9c2={},_0x1d730b={'count':0x0,'rows':[]};var _0x1cc53e=_[_0xa55c('0x2b')](db['AnalyticMetric'][_0xa55c('0x2c')],function(_0x2096ae){return{'name':_0x2096ae[_0xa55c('0x2d')],'type':_0x2096ae[_0xa55c('0x2e')][_0xa55c('0x2f')]};});_0x35c9c2[_0xa55c('0x30')]=_[_0xa55c('0x2b')](_0x1cc53e,_0xa55c('0x28'));_0x35c9c2[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x52d37f[_0xa55c('0x31')]);_0x35c9c2['filters']=_['intersection'](_0x35c9c2[_0xa55c('0x30')],_0x35c9c2[_0xa55c('0x31')]);_0x490b7d['attributes']=_[_0xa55c('0x33')](_0x35c9c2[_0xa55c('0x30')],qs[_0xa55c('0x34')](_0x52d37f[_0xa55c('0x31')][_0xa55c('0x34')]));_0x490b7d[_0xa55c('0x35')]=_0x490b7d[_0xa55c('0x35')][_0xa55c('0x36')]?_0x490b7d[_0xa55c('0x35')]:_0x35c9c2['model'];if(!_0x52d37f['query']['hasOwnProperty'](_0xa55c('0x37'))){_0x490b7d[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x52d37f['query'][_0xa55c('0x1c')]);_0x490b7d['offset']=qs[_0xa55c('0x1a')](_0x52d37f['query'][_0xa55c('0x1a')]);}_0x490b7d[_0xa55c('0x38')]=qs[_0xa55c('0x39')](_0x52d37f['query'][_0xa55c('0x39')]);_0x490b7d[_0xa55c('0x3a')]=qs['filters'](_[_0xa55c('0x3b')](_0x52d37f[_0xa55c('0x31')],_0x35c9c2['filters']),_0x1cc53e);if(_0x52d37f['query'][_0xa55c('0x3c')]){_0x490b7d['where']=_[_0xa55c('0x3d')](_0x490b7d[_0xa55c('0x3a')],{'$or':_['map'](_0x1cc53e,function(_0x542d76){if(_0x542d76['type']!=='VIRTUAL'){var _0x3b3308={};_0x3b3308[_0x542d76[_0xa55c('0x28')]]={'$like':'%'+_0x52d37f[_0xa55c('0x31')][_0xa55c('0x3c')]+'%'};return _0x3b3308;}})});}_0x490b7d=_[_0xa55c('0x3d')]({},_0x490b7d,_0x52d37f['options']);var _0x3d52d8={'where':_0x490b7d[_0xa55c('0x3a')]};return db[_0xa55c('0x3e')][_0xa55c('0x1d')](_0x3d52d8)[_0xa55c('0x20')](function(_0x23cef5){_0x1d730b['count']=_0x23cef5;if(_0x52d37f[_0xa55c('0x31')]['includeAll']){_0x490b7d['include']=[{'all':!![]}];}return db[_0xa55c('0x3e')][_0xa55c('0x3f')](_0x490b7d);})['then'](function(_0x2bd98b){_0x1d730b['rows']=_0x2bd98b;return _0x1d730b;})['then'](respondWithFilteredResult(_0x23e698,_0x490b7d))[_0xa55c('0x40')](handleError(_0x23e698,null));};exports[_0xa55c('0x41')]=function(_0x1630ac,_0x540337){var _0x1b2708={'raw':!![],'where':{'id':_0x1630ac['params']['id']}},_0xd5a006={};_0xd5a006[_0xa55c('0x30')]=_['keys'](db[_0xa55c('0x3e')][_0xa55c('0x2c')]);_0xd5a006['query']=_[_0xa55c('0x32')](_0x1630ac[_0xa55c('0x31')]);_0xd5a006['filters']=_[_0xa55c('0x33')](_0xd5a006[_0xa55c('0x30')],_0xd5a006[_0xa55c('0x31')]);_0x1b2708['attributes']=_[_0xa55c('0x33')](_0xd5a006['model'],qs[_0xa55c('0x34')](_0x1630ac[_0xa55c('0x31')][_0xa55c('0x34')]));_0x1b2708['attributes']=_0x1b2708[_0xa55c('0x35')][_0xa55c('0x36')]?_0x1b2708['attributes']:_0xd5a006[_0xa55c('0x30')];if(_0x1630ac[_0xa55c('0x31')]['includeAll']){_0x1b2708[_0xa55c('0x42')]=[{'all':!![]}];}_0x1b2708=_[_0xa55c('0x3d')]({},_0x1b2708,_0x1630ac['options']);return db[_0xa55c('0x3e')][_0xa55c('0x43')](_0x1b2708)[_0xa55c('0x20')](handleEntityNotFound(_0x540337,null))[_0xa55c('0x20')](respondWithResult(_0x540337,null))['catch'](handleError(_0x540337,null));};exports[_0xa55c('0x44')]=function(_0x58a7ea,_0x2157d6){return db[_0xa55c('0x3e')][_0xa55c('0x44')](_0x58a7ea['body'],{})[_0xa55c('0x20')](function(_0x250b00){var _0x574fe9=_0x58a7ea[_0xa55c('0x45')][_0xa55c('0x21')]({'plain':!![]});if(!_0x574fe9)throw new Error(_0xa55c('0x46'));if(_0x574fe9[_0xa55c('0x47')]===_0xa55c('0x45')){var _0x1c84d9=_0x250b00[_0xa55c('0x21')]({'plain':!![]});var _0x129626=_0xa55c('0x22');return db[_0xa55c('0x48')]['find']({'where':{'name':_0x129626,'userProfileId':_0x574fe9[_0xa55c('0x49')]},'raw':!![]})[_0xa55c('0x20')](function(_0x216de8){if(_0x216de8&&_0x216de8['autoAssociation']===0x0){return db[_0xa55c('0x23')][_0xa55c('0x44')]({'name':_0x1c84d9['name'],'resourceId':_0x1c84d9['id'],'type':_0x216de8[_0xa55c('0x28')],'sectionId':_0x216de8['id']},{})['then'](function(){return _0x250b00;});}else{return _0x250b00;}})[_0xa55c('0x40')](function(_0x228df4){logger[_0xa55c('0x4a')](_0xa55c('0x4b'),_0x228df4);throw _0x228df4;});}return _0x250b00;})[_0xa55c('0x20')](respondWithResult(_0x2157d6,0xc9))['catch'](handleError(_0x2157d6,null));};exports[_0xa55c('0x1f')]=function(_0x4607ca,_0x4b85cc){if(_0x4607ca[_0xa55c('0x4c')]['id']){delete _0x4607ca[_0xa55c('0x4c')]['id'];}return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x4607ca['params']['id']}})['then'](handleEntityNotFound(_0x4b85cc,null))[_0xa55c('0x20')](saveUpdates(_0x4607ca[_0xa55c('0x4c')],null))[_0xa55c('0x20')](respondWithResult(_0x4b85cc,null))[_0xa55c('0x40')](handleError(_0x4b85cc,null));};exports['destroy']=function(_0x30c0c9,_0x5ce463){return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x30c0c9[_0xa55c('0x4d')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x5ce463,null))[_0xa55c('0x20')](removeEntity(_0x5ce463,null))['catch'](handleError(_0x5ce463,null));};
\ No newline at end of file
+var _0x3e74=['status','set','Content-Range','apply','save','update','then','destroy','get','Metrics','sendStatus','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','params','rawAttributes','length','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','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'];(function(_0x18a3de,_0x7fd988){var _0x165b7f=function(_0x5802d9){while(--_0x5802d9){_0x18a3de['push'](_0x18a3de['shift']());}};_0x165b7f(++_0x7fd988);}(_0x3e74,0x175));var _0x43e7=function(_0x2aee46,_0x571c40){_0x2aee46=_0x2aee46-0x0;var _0x1aff94=_0x3e74[_0x2aee46];return _0x1aff94;};'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(){var _0x4b2b9f=_0x4c9df3[_0x43e7('0x23')]({'plain':!![]});var _0x4ca5cf=_0x43e7('0x24');return db['UserProfileResource'][_0x43e7('0x22')]({'where':{'type':_0x4ca5cf,'resourceId':_0x4b2b9f['id']}})[_0x43e7('0x21')](function(){return _0x4c9df3;});})[_0x43e7('0x21')](function(){_0x454359[_0x43e7('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b7b3,_0x805b54){return function(_0x501551){if(!_0x501551){_0x52b7b3[_0x43e7('0x25')](0x194);}return _0x501551;};}function handleError(_0x40dc8f,_0x3565cf){_0x3565cf=_0x3565cf||0x1f4;return function(_0xb1fc63){logger['error'](_0xb1fc63[_0x43e7('0x26')]);if(_0xb1fc63[_0x43e7('0x27')]){delete _0xb1fc63[_0x43e7('0x27')];}_0x40dc8f[_0x43e7('0x1b')](_0x3565cf)[_0x43e7('0x28')](_0xb1fc63);};}exports[_0x43e7('0x29')]=function(_0x2b85a5,_0x31b2a6){var _0x3bf475={},_0x35dbcd={},_0x17df44={'count':0x0,'rows':[]};var _0x19725a=_[_0x43e7('0x2a')](db[_0x43e7('0x2b')]['rawAttributes'],function(_0x238321){return{'name':_0x238321[_0x43e7('0x2c')],'type':_0x238321[_0x43e7('0x2d')][_0x43e7('0x2e')]};});_0x35dbcd[_0x43e7('0x2f')]=_['map'](_0x19725a,_0x43e7('0x27'));_0x35dbcd[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x2b85a5[_0x43e7('0x30')]);_0x35dbcd['filters']=_['intersection'](_0x35dbcd['model'],_0x35dbcd[_0x43e7('0x30')]);_0x3bf475[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0x35dbcd[_0x43e7('0x2f')],qs[_0x43e7('0x34')](_0x2b85a5[_0x43e7('0x30')]['fields']));_0x3bf475['attributes']=_0x3bf475['attributes']['length']?_0x3bf475['attributes']:_0x35dbcd['model'];if(!_0x2b85a5['query'][_0x43e7('0x35')]('nolimit')){_0x3bf475[_0x43e7('0x18')]=qs[_0x43e7('0x18')](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x18')]);_0x3bf475[_0x43e7('0x19')]=qs[_0x43e7('0x19')](_0x2b85a5[_0x43e7('0x30')]['offset']);}_0x3bf475['order']=qs['sort'](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x36')]);_0x3bf475[_0x43e7('0x37')]=qs[_0x43e7('0x38')](_[_0x43e7('0x39')](_0x2b85a5[_0x43e7('0x30')],_0x35dbcd[_0x43e7('0x38')]),_0x19725a);if(_0x2b85a5[_0x43e7('0x30')]['filter']){_0x3bf475[_0x43e7('0x37')]=_[_0x43e7('0x3a')](_0x3bf475['where'],{'$or':_[_0x43e7('0x2a')](_0x19725a,function(_0x4c0c7a){if(_0x4c0c7a[_0x43e7('0x2d')]!==_0x43e7('0x3b')){var _0x1c6f45={};_0x1c6f45[_0x4c0c7a[_0x43e7('0x27')]]={'$like':'%'+_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x3c')]+'%'};return _0x1c6f45;}})});}_0x3bf475=_['merge']({},_0x3bf475,_0x2b85a5['options']);var _0x30dfa9={'where':_0x3bf475[_0x43e7('0x37')]};return db[_0x43e7('0x2b')][_0x43e7('0x1a')](_0x30dfa9)[_0x43e7('0x21')](function(_0x4a4a85){_0x17df44[_0x43e7('0x1a')]=_0x4a4a85;if(_0x2b85a5[_0x43e7('0x30')]['includeAll']){_0x3bf475[_0x43e7('0x3d')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x43e7('0x3e')](_0x3bf475);})['then'](function(_0x3d81ae){_0x17df44[_0x43e7('0x3f')]=_0x3d81ae;return _0x17df44;})[_0x43e7('0x21')](respondWithFilteredResult(_0x31b2a6,_0x3bf475))[_0x43e7('0x40')](handleError(_0x31b2a6,null));};exports['show']=function(_0x47d6a1,_0x103393){var _0x40c509={'raw':!![],'where':{'id':_0x47d6a1[_0x43e7('0x41')]['id']}},_0xe979b5={};_0xe979b5['model']=_['keys'](db['AnalyticMetric'][_0x43e7('0x42')]);_0xe979b5['query']=_[_0x43e7('0x31')](_0x47d6a1['query']);_0xe979b5['filters']=_[_0x43e7('0x33')](_0xe979b5['model'],_0xe979b5[_0x43e7('0x30')]);_0x40c509[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0xe979b5[_0x43e7('0x2f')],qs['fields'](_0x47d6a1[_0x43e7('0x30')][_0x43e7('0x34')]));_0x40c509[_0x43e7('0x32')]=_0x40c509[_0x43e7('0x32')][_0x43e7('0x43')]?_0x40c509[_0x43e7('0x32')]:_0xe979b5['model'];if(_0x47d6a1['query'][_0x43e7('0x44')]){_0x40c509[_0x43e7('0x3d')]=[{'all':!![]}];}_0x40c509=_[_0x43e7('0x3a')]({},_0x40c509,_0x47d6a1['options']);return db['AnalyticMetric']['find'](_0x40c509)[_0x43e7('0x21')](handleEntityNotFound(_0x103393,null))[_0x43e7('0x21')](respondWithResult(_0x103393,null))['catch'](handleError(_0x103393,null));};exports[_0x43e7('0x45')]=function(_0x47686e,_0x3c96fe){return db['AnalyticMetric']['create'](_0x47686e['body'],{})['then'](function(_0x214e7e){var _0xe955fc=_0x47686e['user'][_0x43e7('0x23')]({'plain':!![]});if(!_0xe955fc)throw new Error(_0x43e7('0x46'));if(_0xe955fc[_0x43e7('0x47')]===_0x43e7('0x48')){var _0x4a0ce5=_0x214e7e[_0x43e7('0x23')]({'plain':!![]});var _0x483f20='Metrics';return db[_0x43e7('0x49')][_0x43e7('0x4a')]({'where':{'name':_0x483f20,'userProfileId':_0xe955fc[_0x43e7('0x4b')]},'raw':!![]})[_0x43e7('0x21')](function(_0x13503c){if(_0x13503c&&_0x13503c[_0x43e7('0x4c')]===0x0){return db[_0x43e7('0x4d')][_0x43e7('0x45')]({'name':_0x4a0ce5[_0x43e7('0x27')],'resourceId':_0x4a0ce5['id'],'type':_0x13503c[_0x43e7('0x27')],'sectionId':_0x13503c['id']},{})['then'](function(){return _0x214e7e;});}else{return _0x214e7e;}})[_0x43e7('0x40')](function(_0x46c910){logger['error'](_0x43e7('0x4e'),_0x46c910);throw _0x46c910;});}return _0x214e7e;})['then'](respondWithResult(_0x3c96fe,0xc9))[_0x43e7('0x40')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x20')]=function(_0x34e2ec,_0x1f561f){if(_0x34e2ec[_0x43e7('0x4f')]['id']){delete _0x34e2ec['body']['id'];}return db['AnalyticMetric'][_0x43e7('0x4a')]({'where':{'id':_0x34e2ec[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x1f561f,null))[_0x43e7('0x21')](saveUpdates(_0x34e2ec[_0x43e7('0x4f')],null))[_0x43e7('0x21')](respondWithResult(_0x1f561f,null))[_0x43e7('0x40')](handleError(_0x1f561f,null));};exports[_0x43e7('0x22')]=function(_0x26d86c,_0x24e758){return db[_0x43e7('0x2b')]['find']({'where':{'id':_0x26d86c[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x24e758,null))['then'](removeEntity(_0x24e758,null))[_0x43e7('0x40')](handleError(_0x24e758,null));};
\ No newline at end of file
index bd0aac6..9a8d889 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f2=['bluebird','request-promise','path','rimraf','./analyticMetric.attributes','exports','define','AnalyticMetric','lodash','util','../../config/logger','api','moment'];(function(_0xc3b08e,_0x427235){var _0x4c5e08=function(_0x501784){while(--_0x501784){_0xc3b08e['push'](_0xc3b08e['shift']());}};_0x4c5e08(++_0x427235);}(_0x63f2,0x19b));var _0x263f=function(_0x3347fd,_0x86550d){_0x3347fd=_0x3347fd-0x0;var _0x45ff23=_0x63f2[_0x3347fd];return _0x45ff23;};'use strict';var _=require(_0x263f('0x0'));var util=require(_0x263f('0x1'));var logger=require(_0x263f('0x2'))(_0x263f('0x3'));var moment=require(_0x263f('0x4'));var BPromise=require(_0x263f('0x5'));var rp=require(_0x263f('0x6'));var fs=require('fs');var path=require(_0x263f('0x7'));var rimraf=require(_0x263f('0x8'));var config=require('../../config/environment');var attributes=require(_0x263f('0x9'));module[_0x263f('0xa')]=function(_0x4c13d7,_0x4551c2){return _0x4c13d7[_0x263f('0xb')](_0x263f('0xc'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2178=['lodash','../../config/logger','api','moment','request-promise','path','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics'];(function(_0x1339a5,_0xc3c830){var _0x4281b2=function(_0x49169c){while(--_0x49169c){_0x1339a5['push'](_0x1339a5['shift']());}};_0x4281b2(++_0xc3c830);}(_0x2178,0x1b0));var _0x8217=function(_0x2f8be8,_0x46cff7){_0x2f8be8=_0x2f8be8-0x0;var _0x58b0d7=_0x2178[_0x2f8be8];return _0x58b0d7;};'use strict';var _=require(_0x8217('0x0'));var util=require('util');var logger=require(_0x8217('0x1'))(_0x8217('0x2'));var moment=require(_0x8217('0x3'));var BPromise=require('bluebird');var rp=require(_0x8217('0x4'));var fs=require('fs');var path=require(_0x8217('0x5'));var rimraf=require('rimraf');var config=require(_0x8217('0x6'));var attributes=require(_0x8217('0x7'));module[_0x8217('0x8')]=function(_0x16da6e,_0x18f4bd){return _0x16da6e[_0x8217('0x9')](_0x8217('0xa'),attributes,{'tableName':_0x8217('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 902a7fa..3f5f28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe904=['info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x541e76,_0x3f6eb7){var _0xeec71=function(_0x5dbdde){while(--_0x5dbdde){_0x541e76['push'](_0x541e76['shift']());}};_0xeec71(++_0x3f6eb7);}(_0xe904,0x190));var _0x4e90=function(_0x2599d9,_0x50df3b){_0x2599d9=_0x2599d9-0x0;var _0x27ac90=_0xe904[_0x2599d9];return _0x27ac90;};'use strict';var _=require(_0x4e90('0x0'));var util=require(_0x4e90('0x1'));var moment=require(_0x4e90('0x2'));var BPromise=require(_0x4e90('0x3'));var rs=require(_0x4e90('0x4'));var fs=require('fs');var Redis=require(_0x4e90('0x5'));var db=require(_0x4e90('0x6'))['db'];var utils=require(_0x4e90('0x7'));var logger=require(_0x4e90('0x8'))(_0x4e90('0x9'));var config=require(_0x4e90('0xa'));var jayson=require(_0x4e90('0xb'));var client=jayson[_0x4e90('0xc')][_0x4e90('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x33fc67,_0x48e247,_0x3ee1f5){return new BPromise(function(_0x4bfb34,_0x17cd9d){return client[_0x4e90('0xe')](_0x33fc67,_0x3ee1f5)[_0x4e90('0xf')](function(_0x28afc5){logger[_0x4e90('0x10')](_0x4e90('0x11'),_0x48e247,_0x4e90('0x12'));logger[_0x4e90('0x13')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x48e247,_0x4e90('0x12'),JSON[_0x4e90('0x14')](_0x28afc5));if(_0x28afc5[_0x4e90('0x15')]){if(_0x28afc5[_0x4e90('0x15')][_0x4e90('0x16')]===0x1f4){logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x48e247,_0x28afc5['error'][_0x4e90('0x17')]);return _0x17cd9d(_0x28afc5[_0x4e90('0x15')][_0x4e90('0x17')]);}logger[_0x4e90('0x15')](_0x4e90('0x11'),_0x48e247,_0x28afc5[_0x4e90('0x15')]['message']);return _0x4bfb34(_0x28afc5[_0x4e90('0x15')][_0x4e90('0x17')]);}else{logger[_0x4e90('0x10')](_0x4e90('0x11'),_0x48e247,_0x4e90('0x12'));_0x4bfb34(_0x28afc5[_0x4e90('0x18')]['message']);}})[_0x4e90('0x19')](function(_0x54fe4e){logger['error'](_0x4e90('0x11'),_0x48e247,_0x54fe4e);_0x17cd9d(_0x54fe4e);});});}
\ No newline at end of file
+var _0xc79d=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0xc79d,0x70));var _0xdc79=function(_0x175c5c,_0x1ce983){_0x175c5c=_0x175c5c-0x0;var _0x233b0a=_0xc79d[_0x175c5c];return _0x233b0a;};'use strict';var _=require(_0xdc79('0x0'));var util=require(_0xdc79('0x1'));var moment=require(_0xdc79('0x2'));var BPromise=require(_0xdc79('0x3'));var rs=require(_0xdc79('0x4'));var fs=require('fs');var Redis=require(_0xdc79('0x5'));var db=require(_0xdc79('0x6'))['db'];var utils=require(_0xdc79('0x7'));var logger=require(_0xdc79('0x8'))(_0xdc79('0x9'));var config=require(_0xdc79('0xa'));var jayson=require(_0xdc79('0xb'));var client=jayson['client'][_0xdc79('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x502ebf,_0x7e69ab,_0x237967){return new BPromise(function(_0x1e19d1,_0x18c18c){return client[_0xdc79('0xd')](_0x502ebf,_0x237967)[_0xdc79('0xe')](function(_0x17be9c){logger[_0xdc79('0xf')](_0xdc79('0x10'),_0x7e69ab,_0xdc79('0x11'));logger[_0xdc79('0x12')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x7e69ab,'request\x20sent',JSON[_0xdc79('0x13')](_0x17be9c));if(_0x17be9c[_0xdc79('0x14')]){if(_0x17be9c[_0xdc79('0x14')]['code']===0x1f4){logger['error'](_0xdc79('0x10'),_0x7e69ab,_0x17be9c['error'][_0xdc79('0x15')]);return _0x18c18c(_0x17be9c['error'][_0xdc79('0x15')]);}logger[_0xdc79('0x14')](_0xdc79('0x10'),_0x7e69ab,_0x17be9c['error']['message']);return _0x1e19d1(_0x17be9c[_0xdc79('0x14')][_0xdc79('0x15')]);}else{logger[_0xdc79('0xf')](_0xdc79('0x10'),_0x7e69ab,_0xdc79('0x11'));_0x1e19d1(_0x17be9c[_0xdc79('0x16')]['message']);}})[_0xdc79('0x17')](function(_0x11d057){logger[_0xdc79('0x14')]('AnalyticMetric,\x20%s,\x20%s',_0x7e69ab,_0x11d057);_0x18c18c(_0x11d057);});});}
\ No newline at end of file
index e7d14ac..fde9676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa93e=['connect-timeout','Router','../../components/auth/service','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','path'];(function(_0x49fdb7,_0xa6efaa){var _0x563060=function(_0x3ac058){while(--_0x3ac058){_0x49fdb7['push'](_0x49fdb7['shift']());}};_0x563060(++_0xa6efaa);}(_0xa93e,0x1df));var _0xea93=function(_0x3284c6,_0x115d00){_0x3284c6=_0x3284c6-0x0;var _0x46ff80=_0xa93e[_0x3284c6];return _0x46ff80;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xea93('0x0'));var timeout=require(_0xea93('0x1'));var express=require('express');var router=express[_0xea93('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xea93('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xea93('0x4'));router[_0xea93('0x5')]('/',auth[_0xea93('0x6')](),controller[_0xea93('0x7')]);router[_0xea93('0x5')](_0xea93('0x8'),auth['isAuthenticated'](),controller[_0xea93('0x9')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xea93('0xa')](_0xea93('0x8'),auth['isAuthenticated'](),controller[_0xea93('0xb')]);router[_0xea93('0xc')]('/:id',auth[_0xea93('0x6')](),controller[_0xea93('0xd')]);module[_0xea93('0xe')]=router;
\ No newline at end of file
+var _0x43fd=['../../components/auth/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','show','create','update','delete','destroy','exports','util','express','Router'];(function(_0x3d5f7d,_0x1782e1){var _0x50de07=function(_0x1057fe){while(--_0x1057fe){_0x3d5f7d['push'](_0x3d5f7d['shift']());}};_0x50de07(++_0x1782e1);}(_0x43fd,0x1ec));var _0xd43f=function(_0x1fcbcc,_0x56a37d){_0x1fcbcc=_0x1fcbcc-0x0;var _0x50fa06=_0x43fd[_0x1fcbcc];return _0x50fa06;};'use strict';var multer=require('multer');var util=require(_0xd43f('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd43f('0x1'));var router=express[_0xd43f('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xd43f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xd43f('0x4'));var controller=require(_0xd43f('0x5'));router[_0xd43f('0x6')]('/',auth[_0xd43f('0x7')](),controller['index']);router[_0xd43f('0x6')](_0xd43f('0x8'),auth[_0xd43f('0x7')](),controller[_0xd43f('0x9')]);router['post']('/',auth[_0xd43f('0x7')](),controller[_0xd43f('0xa')]);router['put'](_0xd43f('0x8'),auth[_0xd43f('0x7')](),controller[_0xd43f('0xb')]);router[_0xd43f('0xc')](_0xd43f('0x8'),auth['isAuthenticated'](),controller[_0xd43f('0xd')]);module[_0xd43f('0xe')]=router;
\ No newline at end of file
index 3845a73..2b63587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c5e=['TEXT'];(function(_0x7ff564,_0x3c3a4e){var _0x369364=function(_0x3a7f44){while(--_0x3a7f44){_0x7ff564['push'](_0x7ff564['shift']());}};_0x369364(++_0x3c3a4e);}(_0x4c5e,0x93));var _0xe4c5=function(_0x2de426,_0x161d7a){_0x2de426=_0x2de426-0x0;var _0x61504e=_0x4c5e[_0x2de426];return _0x61504e;};'use strict';var Sequelize=require('sequelize');module['exports']={'tree':{'type':Sequelize[_0xe4c5('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0xcc6d=['sequelize','TEXT'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0xcc6d,0xd0));var _0xdcc6=function(_0x5ecbb3,_0x76438a){_0x5ecbb3=_0x5ecbb3-0x0;var _0x5d0caf=_0xcc6d[_0x5ecbb3];return _0x5d0caf;};'use strict';var Sequelize=require(_0xdcc6('0x0'));module['exports']={'tree':{'type':Sequelize[_0xdcc6('0x1')],'allowNull':![]}};
\ No newline at end of file
index 45f5141..09e1c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8abd=['create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','error','stack','name','map','AnalyticTreeReport','fieldName','key','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','options','include','findAll','rows','params','model','rawAttributes','includeAll','merge','find','catch'];(function(_0x560b56,_0x2004b9){var _0x173c4e=function(_0x216f0d){while(--_0x216f0d){_0x560b56['push'](_0x560b56['shift']());}};_0x173c4e(++_0x2004b9);}(_0x8abd,0x16f));var _0xd8ab=function(_0x2c8d63,_0x26dcf5){_0x2c8d63=_0x2c8d63-0x0;var _0x1d85f2=_0x8abd[_0x2c8d63];return _0x1d85f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd8ab('0x0'));var zipdir=require(_0xd8ab('0x1'));var jsonpatch=require(_0xd8ab('0x2'));var rp=require(_0xd8ab('0x3'));var moment=require(_0xd8ab('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd8ab('0x5'));var util=require(_0xd8ab('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xd8ab('0x7'));var ejs=require(_0xd8ab('0x8'));var fs=require('fs');var fs_extra=require(_0xd8ab('0x9'));var _=require(_0xd8ab('0xa'));var squel=require(_0xd8ab('0xb'));var crypto=require('crypto');var jsforce=require(_0xd8ab('0xc'));var deskjs=require(_0xd8ab('0xd'));var toCsv=require(_0xd8ab('0x7'));var querystring=require(_0xd8ab('0xe'));var Papa=require(_0xd8ab('0xf'));var Redis=require(_0xd8ab('0x10'));var authService=require(_0xd8ab('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd8ab('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd8ab('0x13'))(_0xd8ab('0x14'));var utils=require('../../config/utils');var config=require(_0xd8ab('0x15'));var licenseUtil=require(_0xd8ab('0x16'));var db=require(_0xd8ab('0x17'))['db'];function respondWithStatusCode(_0x4d4575,_0x39942f){_0x39942f=_0x39942f||0xcc;return function(_0x3fe66b){if(_0x3fe66b){return _0x4d4575[_0xd8ab('0x18')](_0x39942f);}return _0x4d4575[_0xd8ab('0x19')](_0x39942f)[_0xd8ab('0x1a')]();};}function respondWithResult(_0xdcfc81,_0x7fa80c){_0x7fa80c=_0x7fa80c||0xc8;return function(_0x9b4d99){if(_0x9b4d99){return _0xdcfc81['status'](_0x7fa80c)['json'](_0x9b4d99);}};}function respondWithFilteredResult(_0x71fd71,_0x27278d){return function(_0x5b5435){if(_0x5b5435){var _0x21db98=typeof _0x27278d[_0xd8ab('0x1b')]===_0xd8ab('0x1c')&&typeof _0x27278d[_0xd8ab('0x1d')]===_0xd8ab('0x1c');var _0xbaf2a1=_0x5b5435[_0xd8ab('0x1e')];var _0x164780=_0x21db98?0x0:_0x27278d[_0xd8ab('0x1b')];var _0x45c77e=_0x21db98?_0x5b5435[_0xd8ab('0x1e')]:_0x27278d['offset']+_0x27278d[_0xd8ab('0x1d')];var _0x3d5347;if(_0x45c77e>=_0xbaf2a1){_0x45c77e=_0xbaf2a1;_0x3d5347=0xc8;}else{_0x3d5347=0xce;}_0x71fd71['status'](_0x3d5347);return _0x71fd71[_0xd8ab('0x1f')](_0xd8ab('0x20'),_0x164780+'-'+_0x45c77e+'/'+_0xbaf2a1)[_0xd8ab('0x21')](_0x5b5435);}return null;};}function patchUpdates(_0x439c98){return function(_0x497f2c){try{jsonpatch['apply'](_0x497f2c,_0x439c98,!![]);}catch(_0x11692a){return BPromise[_0xd8ab('0x22')](_0x11692a);}return _0x497f2c['save']();};}function saveUpdates(_0x149127,_0x50f6aa){return function(_0x531213){if(_0x531213){return _0x531213[_0xd8ab('0x23')](_0x149127)[_0xd8ab('0x24')](function(_0xb06c3a){return _0xb06c3a;});}return null;};}function removeEntity(_0x3a8b0b,_0x8508f4){return function(_0x2acf68){if(_0x2acf68){return _0x2acf68[_0xd8ab('0x25')]()[_0xd8ab('0x24')](function(){_0x3a8b0b[_0xd8ab('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4efed3,_0x592545){return function(_0x58ba0a){if(!_0x58ba0a){_0x4efed3[_0xd8ab('0x18')](0x194);}return _0x58ba0a;};}function handleError(_0x12ba6a,_0x24bf87){_0x24bf87=_0x24bf87||0x1f4;return function(_0x314e13){logger[_0xd8ab('0x26')](_0x314e13[_0xd8ab('0x27')]);if(_0x314e13[_0xd8ab('0x28')]){delete _0x314e13['name'];}_0x12ba6a[_0xd8ab('0x19')](_0x24bf87)['send'](_0x314e13);};}exports['index']=function(_0x633b85,_0x5a96d3){var _0xfc2908={},_0xfa5907={},_0x4c3d5f={'count':0x0,'rows':[]};var _0x200bf0=_[_0xd8ab('0x29')](db[_0xd8ab('0x2a')]['rawAttributes'],function(_0x39063c){return{'name':_0x39063c[_0xd8ab('0x2b')],'type':_0x39063c['type'][_0xd8ab('0x2c')]};});_0xfa5907['model']=_[_0xd8ab('0x29')](_0x200bf0,'name');_0xfa5907[_0xd8ab('0x2d')]=_[_0xd8ab('0x2e')](_0x633b85[_0xd8ab('0x2d')]);_0xfa5907[_0xd8ab('0x2f')]=_[_0xd8ab('0x30')](_0xfa5907['model'],_0xfa5907[_0xd8ab('0x2d')]);_0xfc2908[_0xd8ab('0x31')]=_[_0xd8ab('0x30')](_0xfa5907['model'],qs[_0xd8ab('0x32')](_0x633b85['query']['fields']));_0xfc2908['attributes']=_0xfc2908[_0xd8ab('0x31')][_0xd8ab('0x33')]?_0xfc2908[_0xd8ab('0x31')]:_0xfa5907['model'];if(!_0x633b85[_0xd8ab('0x2d')][_0xd8ab('0x34')](_0xd8ab('0x35'))){_0xfc2908[_0xd8ab('0x1d')]=qs[_0xd8ab('0x1d')](_0x633b85[_0xd8ab('0x2d')][_0xd8ab('0x1d')]);_0xfc2908['offset']=qs[_0xd8ab('0x1b')](_0x633b85['query'][_0xd8ab('0x1b')]);}_0xfc2908['order']=qs[_0xd8ab('0x36')](_0x633b85[_0xd8ab('0x2d')][_0xd8ab('0x36')]);_0xfc2908[_0xd8ab('0x37')]=qs['filters'](_[_0xd8ab('0x38')](_0x633b85[_0xd8ab('0x2d')],_0xfa5907['filters']),_0x200bf0);if(_0x633b85[_0xd8ab('0x2d')][_0xd8ab('0x39')]){_0xfc2908[_0xd8ab('0x37')]=_['merge'](_0xfc2908['where'],{'$or':_[_0xd8ab('0x29')](_0x200bf0,function(_0x52df2d){if(_0x52df2d[_0xd8ab('0x3a')]!==_0xd8ab('0x3b')){var _0x59ef17={};_0x59ef17[_0x52df2d[_0xd8ab('0x28')]]={'$like':'%'+_0x633b85[_0xd8ab('0x2d')][_0xd8ab('0x39')]+'%'};return _0x59ef17;}})});}_0xfc2908=_['merge']({},_0xfc2908,_0x633b85[_0xd8ab('0x3c')]);var _0x5cb49a={'where':_0xfc2908[_0xd8ab('0x37')]};return db[_0xd8ab('0x2a')][_0xd8ab('0x1e')](_0x5cb49a)[_0xd8ab('0x24')](function(_0x163e1a){_0x4c3d5f[_0xd8ab('0x1e')]=_0x163e1a;if(_0x633b85[_0xd8ab('0x2d')]['includeAll']){_0xfc2908[_0xd8ab('0x3d')]=[{'all':!![]}];}return db[_0xd8ab('0x2a')][_0xd8ab('0x3e')](_0xfc2908);})['then'](function(_0x827de){_0x4c3d5f[_0xd8ab('0x3f')]=_0x827de;return _0x4c3d5f;})[_0xd8ab('0x24')](respondWithFilteredResult(_0x5a96d3,_0xfc2908))['catch'](handleError(_0x5a96d3,null));};exports['show']=function(_0x5b9e55,_0x1d271d){var _0xdb5d71={'raw':!![],'where':{'id':_0x5b9e55[_0xd8ab('0x40')]['id']}},_0x273817={};_0x273817[_0xd8ab('0x41')]=_['keys'](db['AnalyticTreeReport'][_0xd8ab('0x42')]);_0x273817[_0xd8ab('0x2d')]=_[_0xd8ab('0x2e')](_0x5b9e55['query']);_0x273817['filters']=_['intersection'](_0x273817[_0xd8ab('0x41')],_0x273817[_0xd8ab('0x2d')]);_0xdb5d71[_0xd8ab('0x31')]=_[_0xd8ab('0x30')](_0x273817[_0xd8ab('0x41')],qs['fields'](_0x5b9e55['query']['fields']));_0xdb5d71['attributes']=_0xdb5d71['attributes']['length']?_0xdb5d71[_0xd8ab('0x31')]:_0x273817[_0xd8ab('0x41')];if(_0x5b9e55[_0xd8ab('0x2d')][_0xd8ab('0x43')]){_0xdb5d71[_0xd8ab('0x3d')]=[{'all':!![]}];}_0xdb5d71=_[_0xd8ab('0x44')]({},_0xdb5d71,_0x5b9e55[_0xd8ab('0x3c')]);return db[_0xd8ab('0x2a')][_0xd8ab('0x45')](_0xdb5d71)[_0xd8ab('0x24')](handleEntityNotFound(_0x1d271d,null))[_0xd8ab('0x24')](respondWithResult(_0x1d271d,null))[_0xd8ab('0x46')](handleError(_0x1d271d,null));};exports[_0xd8ab('0x47')]=function(_0x31484f,_0xafb64){return db[_0xd8ab('0x2a')][_0xd8ab('0x47')](_0x31484f['body'],{})[_0xd8ab('0x24')](respondWithResult(_0xafb64,0xc9))['catch'](handleError(_0xafb64,null));};exports['update']=function(_0x198f51,_0x15143a){if(_0x198f51[_0xd8ab('0x48')]['id']){delete _0x198f51[_0xd8ab('0x48')]['id'];}return db['AnalyticTreeReport']['find']({'where':{'id':_0x198f51['params']['id']}})[_0xd8ab('0x24')](handleEntityNotFound(_0x15143a,null))['then'](saveUpdates(_0x198f51['body'],null))[_0xd8ab('0x24')](respondWithResult(_0x15143a,null))['catch'](handleError(_0x15143a,null));};exports[_0xd8ab('0x25')]=function(_0xb6d20e,_0x172398){return db[_0xd8ab('0x2a')][_0xd8ab('0x45')]({'where':{'id':_0xb6d20e[_0xd8ab('0x40')]['id']}})[_0xd8ab('0x24')](handleEntityNotFound(_0x172398,null))[_0xd8ab('0x24')](removeEntity(_0x172398,null))[_0xd8ab('0x46')](handleError(_0x172398,null));};
\ No newline at end of file
+var _0x905f=['apply','reject','save','update','error','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','then','includeAll','AnalyticTreeReport','rows','catch','show','include','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range'];(function(_0x46aab8,_0x116b35){var _0x33006f=function(_0x471d48){while(--_0x471d48){_0x46aab8['push'](_0x46aab8['shift']());}};_0x33006f(++_0x116b35);}(_0x905f,0x18e));var _0xf905=function(_0x3c08ec,_0x360de7){_0x3c08ec=_0x3c08ec-0x0;var _0x1fe698=_0x905f[_0x3c08ec];return _0x1fe698;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf905('0x0'));var zipdir=require(_0xf905('0x1'));var jsonpatch=require(_0xf905('0x2'));var rp=require('request-promise');var moment=require(_0xf905('0x3'));var BPromise=require(_0xf905('0x4'));var Mustache=require(_0xf905('0x5'));var util=require('util');var path=require(_0xf905('0x6'));var sox=require(_0xf905('0x7'));var csv=require('to-csv');var ejs=require(_0xf905('0x8'));var fs=require('fs');var fs_extra=require(_0xf905('0x9'));var _=require(_0xf905('0xa'));var squel=require(_0xf905('0xb'));var crypto=require(_0xf905('0xc'));var jsforce=require(_0xf905('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf905('0xe'));var Redis=require(_0xf905('0xf'));var authService=require(_0xf905('0x10'));var qs=require(_0xf905('0x11'));var as=require(_0xf905('0x12'));var hardwareService=require(_0xf905('0x13'));var logger=require(_0xf905('0x14'))(_0xf905('0x15'));var utils=require('../../config/utils');var config=require(_0xf905('0x16'));var licenseUtil=require(_0xf905('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd77100,_0x10bbb5){_0x10bbb5=_0x10bbb5||0xcc;return function(_0x231555){if(_0x231555){return _0xd77100[_0xf905('0x18')](_0x10bbb5);}return _0xd77100[_0xf905('0x19')](_0x10bbb5)[_0xf905('0x1a')]();};}function respondWithResult(_0x1b75e4,_0x143128){_0x143128=_0x143128||0xc8;return function(_0x4b6064){if(_0x4b6064){return _0x1b75e4[_0xf905('0x19')](_0x143128)[_0xf905('0x1b')](_0x4b6064);}};}function respondWithFilteredResult(_0x31d2d9,_0x40fab1){return function(_0x5610e3){if(_0x5610e3){var _0x4b6963=typeof _0x40fab1['offset']===_0xf905('0x1c')&&typeof _0x40fab1[_0xf905('0x1d')]===_0xf905('0x1c');var _0x38a45e=_0x5610e3[_0xf905('0x1e')];var _0x3401e2=_0x4b6963?0x0:_0x40fab1[_0xf905('0x1f')];var _0x24d9be=_0x4b6963?_0x5610e3[_0xf905('0x1e')]:_0x40fab1['offset']+_0x40fab1[_0xf905('0x1d')];var _0x1d47ee;if(_0x24d9be>=_0x38a45e){_0x24d9be=_0x38a45e;_0x1d47ee=0xc8;}else{_0x1d47ee=0xce;}_0x31d2d9[_0xf905('0x19')](_0x1d47ee);return _0x31d2d9[_0xf905('0x20')](_0xf905('0x21'),_0x3401e2+'-'+_0x24d9be+'/'+_0x38a45e)[_0xf905('0x1b')](_0x5610e3);}return null;};}function patchUpdates(_0x414887){return function(_0x5c7649){try{jsonpatch[_0xf905('0x22')](_0x5c7649,_0x414887,!![]);}catch(_0x12c8fb){return BPromise[_0xf905('0x23')](_0x12c8fb);}return _0x5c7649[_0xf905('0x24')]();};}function saveUpdates(_0x40d4bf,_0x4d8af1){return function(_0x2ad11d){if(_0x2ad11d){return _0x2ad11d[_0xf905('0x25')](_0x40d4bf)['then'](function(_0x270e81){return _0x270e81;});}return null;};}function removeEntity(_0x4b8a95,_0x132639){return function(_0xa3545a){if(_0xa3545a){return _0xa3545a['destroy']()['then'](function(){_0x4b8a95[_0xf905('0x19')](0xcc)[_0xf905('0x1a')]();});}};}function handleEntityNotFound(_0x2366a5,_0x3f2a7e){return function(_0x44bb59){if(!_0x44bb59){_0x2366a5[_0xf905('0x18')](0x194);}return _0x44bb59;};}function handleError(_0x578803,_0x23e17a){_0x23e17a=_0x23e17a||0x1f4;return function(_0x9a29f){logger[_0xf905('0x26')](_0x9a29f['stack']);if(_0x9a29f[_0xf905('0x27')]){delete _0x9a29f[_0xf905('0x27')];}_0x578803[_0xf905('0x19')](_0x23e17a)['send'](_0x9a29f);};}exports[_0xf905('0x28')]=function(_0x26132a,_0x407e04){var _0x5eff16={},_0x50b573={},_0x30edf2={'count':0x0,'rows':[]};var _0x3b27cf=_[_0xf905('0x29')](db['AnalyticTreeReport'][_0xf905('0x2a')],function(_0x27b127){return{'name':_0x27b127[_0xf905('0x2b')],'type':_0x27b127['type'][_0xf905('0x2c')]};});_0x50b573[_0xf905('0x2d')]=_['map'](_0x3b27cf,'name');_0x50b573[_0xf905('0x2e')]=_[_0xf905('0x2f')](_0x26132a['query']);_0x50b573[_0xf905('0x30')]=_[_0xf905('0x31')](_0x50b573[_0xf905('0x2d')],_0x50b573[_0xf905('0x2e')]);_0x5eff16[_0xf905('0x32')]=_['intersection'](_0x50b573[_0xf905('0x2d')],qs['fields'](_0x26132a[_0xf905('0x2e')][_0xf905('0x33')]));_0x5eff16[_0xf905('0x32')]=_0x5eff16['attributes']['length']?_0x5eff16[_0xf905('0x32')]:_0x50b573[_0xf905('0x2d')];if(!_0x26132a[_0xf905('0x2e')]['hasOwnProperty'](_0xf905('0x34'))){_0x5eff16['limit']=qs[_0xf905('0x1d')](_0x26132a[_0xf905('0x2e')][_0xf905('0x1d')]);_0x5eff16[_0xf905('0x1f')]=qs[_0xf905('0x1f')](_0x26132a[_0xf905('0x2e')]['offset']);}_0x5eff16[_0xf905('0x35')]=qs[_0xf905('0x36')](_0x26132a[_0xf905('0x2e')]['sort']);_0x5eff16[_0xf905('0x37')]=qs[_0xf905('0x30')](_[_0xf905('0x38')](_0x26132a[_0xf905('0x2e')],_0x50b573[_0xf905('0x30')]),_0x3b27cf);if(_0x26132a['query']['filter']){_0x5eff16['where']=_[_0xf905('0x39')](_0x5eff16[_0xf905('0x37')],{'$or':_[_0xf905('0x29')](_0x3b27cf,function(_0x3689e2){if(_0x3689e2[_0xf905('0x3a')]!==_0xf905('0x3b')){var _0x3f4dc6={};_0x3f4dc6[_0x3689e2[_0xf905('0x27')]]={'$like':'%'+_0x26132a[_0xf905('0x2e')][_0xf905('0x3c')]+'%'};return _0x3f4dc6;}})});}_0x5eff16=_[_0xf905('0x39')]({},_0x5eff16,_0x26132a['options']);var _0x19f134={'where':_0x5eff16[_0xf905('0x37')]};return db['AnalyticTreeReport']['count'](_0x19f134)[_0xf905('0x3d')](function(_0x5b31c4){_0x30edf2['count']=_0x5b31c4;if(_0x26132a['query'][_0xf905('0x3e')]){_0x5eff16['include']=[{'all':!![]}];}return db[_0xf905('0x3f')]['findAll'](_0x5eff16);})['then'](function(_0x3a0f40){_0x30edf2[_0xf905('0x40')]=_0x3a0f40;return _0x30edf2;})[_0xf905('0x3d')](respondWithFilteredResult(_0x407e04,_0x5eff16))[_0xf905('0x41')](handleError(_0x407e04,null));};exports[_0xf905('0x42')]=function(_0x1acc5e,_0x14da9a){var _0x191267={'raw':!![],'where':{'id':_0x1acc5e['params']['id']}},_0x4393f2={};_0x4393f2[_0xf905('0x2d')]=_[_0xf905('0x2f')](db[_0xf905('0x3f')][_0xf905('0x2a')]);_0x4393f2[_0xf905('0x2e')]=_[_0xf905('0x2f')](_0x1acc5e[_0xf905('0x2e')]);_0x4393f2[_0xf905('0x30')]=_[_0xf905('0x31')](_0x4393f2[_0xf905('0x2d')],_0x4393f2[_0xf905('0x2e')]);_0x191267[_0xf905('0x32')]=_['intersection'](_0x4393f2['model'],qs[_0xf905('0x33')](_0x1acc5e[_0xf905('0x2e')][_0xf905('0x33')]));_0x191267['attributes']=_0x191267['attributes']['length']?_0x191267[_0xf905('0x32')]:_0x4393f2[_0xf905('0x2d')];if(_0x1acc5e['query'][_0xf905('0x3e')]){_0x191267[_0xf905('0x43')]=[{'all':!![]}];}_0x191267=_[_0xf905('0x39')]({},_0x191267,_0x1acc5e['options']);return db['AnalyticTreeReport'][_0xf905('0x44')](_0x191267)[_0xf905('0x3d')](handleEntityNotFound(_0x14da9a,null))[_0xf905('0x3d')](respondWithResult(_0x14da9a,null))[_0xf905('0x41')](handleError(_0x14da9a,null));};exports[_0xf905('0x45')]=function(_0xf70a29,_0x15c695){return db[_0xf905('0x3f')][_0xf905('0x45')](_0xf70a29[_0xf905('0x46')],{})[_0xf905('0x3d')](respondWithResult(_0x15c695,0xc9))[_0xf905('0x41')](handleError(_0x15c695,null));};exports[_0xf905('0x25')]=function(_0x164b15,_0x2a12f4){if(_0x164b15[_0xf905('0x46')]['id']){delete _0x164b15[_0xf905('0x46')]['id'];}return db[_0xf905('0x3f')]['find']({'where':{'id':_0x164b15['params']['id']}})[_0xf905('0x3d')](handleEntityNotFound(_0x2a12f4,null))['then'](saveUpdates(_0x164b15['body'],null))['then'](respondWithResult(_0x2a12f4,null))['catch'](handleError(_0x2a12f4,null));};exports[_0xf905('0x47')]=function(_0x28c096,_0x41c31c){return db[_0xf905('0x3f')][_0xf905('0x44')]({'where':{'id':_0x28c096['params']['id']}})[_0xf905('0x3d')](handleEntityNotFound(_0x41c31c,null))[_0xf905('0x3d')](removeEntity(_0x41c31c,null))[_0xf905('0x41')](handleError(_0x41c31c,null));};
\ No newline at end of file
index c362fbb..494c5f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d3a=['define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x3aeaeb,_0x3c884c){var _0x541d84=function(_0x4a7a4c){while(--_0x4a7a4c){_0x3aeaeb['push'](_0x3aeaeb['shift']());}};_0x541d84(++_0x3c884c);}(_0x7d3a,0x196));var _0xa7d3=function(_0x1ff0b4,_0x22de17){_0x1ff0b4=_0x1ff0b4-0x0;var _0xce1012=_0x7d3a[_0x1ff0b4];return _0xce1012;};'use strict';var _=require(_0xa7d3('0x0'));var util=require(_0xa7d3('0x1'));var logger=require(_0xa7d3('0x2'))(_0xa7d3('0x3'));var moment=require(_0xa7d3('0x4'));var BPromise=require(_0xa7d3('0x5'));var rp=require(_0xa7d3('0x6'));var fs=require('fs');var path=require(_0xa7d3('0x7'));var rimraf=require(_0xa7d3('0x8'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0xa7d3('0x9')]=function(_0x1f4458,_0x4428b6){return _0x1f4458[_0xa7d3('0xa')](_0xa7d3('0xb'),attributes,{'tableName':_0xa7d3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e7d=['analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7e7d,0x1bb));var _0xd7e7=function(_0x183551,_0x1dc778){_0x183551=_0x183551-0x0;var _0x13667f=_0x7e7d[_0x183551];return _0x13667f;};'use strict';var _=require(_0xd7e7('0x0'));var util=require(_0xd7e7('0x1'));var logger=require(_0xd7e7('0x2'))(_0xd7e7('0x3'));var moment=require(_0xd7e7('0x4'));var BPromise=require(_0xd7e7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd7e7('0x6'));var config=require(_0xd7e7('0x7'));var attributes=require(_0xd7e7('0x8'));module[_0xd7e7('0x9')]=function(_0x616187,_0x43dcca){return _0x616187[_0xd7e7('0xa')](_0xd7e7('0xb'),attributes,{'tableName':_0xd7e7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4f885e..cf85622 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','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x23c698,_0xd1b961){var _0x2df0fc=function(_0x26a823){while(--_0x26a823){_0x23c698['push'](_0x23c698['shift']());}};_0x2df0fc(++_0xd1b961);}(_0xadb5,0xad));var _0x5adb=function(_0x1a0924,_0x1c4b5d){_0x1a0924=_0x1a0924-0x0;var _0x440503=_0xadb5[_0x1a0924];return _0x440503;};'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
+var _0x7a54=['info','AnalyticTreeReport,\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(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0x9a2dba,_0x3f54ec){_0x9a2dba=_0x9a2dba-0x0;var _0x3ba249=_0x7a54[_0x9a2dba];return _0x3ba249;};'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')]('AnalyticTreeReport,\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 d15fdb2..d69a514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b08=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get','/:id','isAuthenticated','show','create','put','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x4b08,0x13e));var _0x84b0=function(_0x29e55a,_0x144cdf){_0x29e55a=_0x29e55a-0x0;var _0x5095c5=_0x4b08[_0x29e55a];return _0x5095c5;};'use strict';var multer=require(_0x84b0('0x0'));var util=require(_0x84b0('0x1'));var path=require(_0x84b0('0x2'));var timeout=require(_0x84b0('0x3'));var express=require(_0x84b0('0x4'));var router=express[_0x84b0('0x5')]();var fs_extra=require(_0x84b0('0x6'));var auth=require(_0x84b0('0x7'));var interaction=require(_0x84b0('0x8'));var config=require('../../config/environment');var controller=require(_0x84b0('0x9'));router[_0x84b0('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84b0('0xa')](_0x84b0('0xb'),auth[_0x84b0('0xc')](),controller[_0x84b0('0xd')]);router['post']('/',auth[_0x84b0('0xc')](),controller[_0x84b0('0xe')]);router[_0x84b0('0xf')](_0x84b0('0xb'),auth[_0x84b0('0xc')](),controller[_0x84b0('0x10')]);router[_0x84b0('0x11')](_0x84b0('0xb'),auth['isAuthenticated'](),controller[_0x84b0('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa763=['update','destroy','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','index','get','isAuthenticated','create','put','/:id'];(function(_0xfb5622,_0x5e1f14){var _0xe18490=function(_0xaa8242){while(--_0xaa8242){_0xfb5622['push'](_0xfb5622['shift']());}};_0xe18490(++_0x5e1f14);}(_0xa763,0x152));var _0x3a76=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xa763[_0x4f9b18];return _0x29f20c;};'use strict';var multer=require(_0x3a76('0x0'));var util=require('util');var path=require(_0x3a76('0x1'));var timeout=require(_0x3a76('0x2'));var express=require(_0x3a76('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3a76('0x4'));var interaction=require(_0x3a76('0x5'));var config=require(_0x3a76('0x6'));var controller=require(_0x3a76('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x3a76('0x8')]);router[_0x3a76('0x9')]('/:id',auth[_0x3a76('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3a76('0xb')]);router[_0x3a76('0xc')](_0x3a76('0xd'),auth[_0x3a76('0xa')](),controller[_0x3a76('0xe')]);router['delete'](_0x3a76('0xd'),auth[_0x3a76('0xa')](),controller[_0x3a76('0xf')]);module['exports']=router;
\ No newline at end of file
index 519f491..2aaa8c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94b1=['exports','STRING'];(function(_0x4dd215,_0x522d69){var _0x55b3d1=function(_0x2ac489){while(--_0x2ac489){_0x4dd215['push'](_0x4dd215['shift']());}};_0x55b3d1(++_0x522d69);}(_0x94b1,0x102));var _0x194b=function(_0x279a4d,_0x345707){_0x279a4d=_0x279a4d-0x0;var _0x1a0cc5=_0x94b1[_0x279a4d];return _0x1a0cc5;};'use strict';var Sequelize=require('sequelize');module[_0x194b('0x0')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x194b('0x1')]},'type':{'type':Sequelize[_0x194b('0x1')]}};
\ No newline at end of file
+var _0xd1d4=['exports','STRING','sequelize'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xd1d4,0xfb));var _0x4d1d=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xd1d4[_0xac151d];return _0x111dba;};'use strict';var Sequelize=require(_0x4d1d('0x0'));module[_0x4d1d('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x4d1d('0x2')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2dffa1d..613cd2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17e9=['squel','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','offset','count','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','index','map','Attachment','rawAttributes','fieldName','type','key','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','merge','options','includeAll','include','rows','show','params','keys','length','find','catch','get','omit','updatedAt','create','body','file','originalname','basename','filename','mimetype','download','ChatOfflineMessageId','root','join','offline-chat/','rimraf','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x17e9,0x1dc));var _0x917e=function(_0x57599d,_0x50eec4){_0x57599d=_0x57599d-0x0;var _0x586cdb=_0x17e9[_0x57599d];return _0x586cdb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x917e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x917e('0x1'));var rp=require(_0x917e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x917e('0x3'));var util=require(_0x917e('0x4'));var path=require('path');var sox=require(_0x917e('0x5'));var csv=require(_0x917e('0x6'));var ejs=require(_0x917e('0x7'));var fs=require('fs');var fs_extra=require(_0x917e('0x8'));var _=require(_0x917e('0x9'));var squel=require(_0x917e('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x917e('0xb'));var toCsv=require(_0x917e('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x917e('0xc'));var authService=require(_0x917e('0xd'));var qs=require(_0x917e('0xe'));var as=require(_0x917e('0xf'));var hardwareService=require(_0x917e('0x10'));var logger=require(_0x917e('0x11'))('api');var utils=require(_0x917e('0x12'));var config=require(_0x917e('0x13'));var licenseUtil=require(_0x917e('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35c50f,_0x440492){_0x440492=_0x440492||0xcc;return function(_0x3abc3a){if(_0x3abc3a){return _0x35c50f['sendStatus'](_0x440492);}return _0x35c50f[_0x917e('0x15')](_0x440492)[_0x917e('0x16')]();};}function respondWithResult(_0xcf28d6,_0x20cd93){_0x20cd93=_0x20cd93||0xc8;return function(_0x17bd91){if(_0x17bd91){return _0xcf28d6['status'](_0x20cd93)[_0x917e('0x17')](_0x17bd91);}};}function respondWithFilteredResult(_0x9cdd6d,_0x34da4a){return function(_0x38707f){if(_0x38707f){var _0x41608d=typeof _0x34da4a['offset']===_0x917e('0x18')&&typeof _0x34da4a[_0x917e('0x19')]==='undefined';var _0x21f05d=_0x38707f['count'];var _0x41340b=_0x41608d?0x0:_0x34da4a[_0x917e('0x1a')];var _0x4c1882=_0x41608d?_0x38707f[_0x917e('0x1b')]:_0x34da4a[_0x917e('0x1a')]+_0x34da4a[_0x917e('0x19')];var _0x19bdc7;if(_0x4c1882>=_0x21f05d){_0x4c1882=_0x21f05d;_0x19bdc7=0xc8;}else{_0x19bdc7=0xce;}_0x9cdd6d[_0x917e('0x15')](_0x19bdc7);return _0x9cdd6d[_0x917e('0x1c')]('Content-Range',_0x41340b+'-'+_0x4c1882+'/'+_0x21f05d)[_0x917e('0x17')](_0x38707f);}return null;};}function patchUpdates(_0x5eacae){return function(_0x46f962){try{jsonpatch[_0x917e('0x1d')](_0x46f962,_0x5eacae,!![]);}catch(_0x330c91){return BPromise[_0x917e('0x1e')](_0x330c91);}return _0x46f962['save']();};}function saveUpdates(_0x125481,_0x395d63){return function(_0x43f67a){if(_0x43f67a){return _0x43f67a[_0x917e('0x1f')](_0x125481)[_0x917e('0x20')](function(_0x5911a1){return _0x5911a1;});}return null;};}function removeEntity(_0x154c02,_0x2e80c4){return function(_0x1b4a37){if(_0x1b4a37){return _0x1b4a37[_0x917e('0x21')]()['then'](function(){_0x154c02[_0x917e('0x15')](0xcc)[_0x917e('0x16')]();});}};}function handleEntityNotFound(_0x39a8b9,_0x49f318){return function(_0xe47968){if(!_0xe47968){_0x39a8b9[_0x917e('0x22')](0x194);}return _0xe47968;};}function handleError(_0x5a3a50,_0x351451){_0x351451=_0x351451||0x1f4;return function(_0x274f47){logger[_0x917e('0x23')](_0x274f47[_0x917e('0x24')]);if(_0x274f47['name']){delete _0x274f47[_0x917e('0x25')];}_0x5a3a50[_0x917e('0x15')](_0x351451)['send'](_0x274f47);};}exports[_0x917e('0x26')]=function(_0x459d5b,_0x3da3c1){var _0x236d99={},_0x4fb535={},_0x2314d7={'count':0x0,'rows':[]};var _0x3473a8=_[_0x917e('0x27')](db[_0x917e('0x28')][_0x917e('0x29')],function(_0xd1434a){return{'name':_0xd1434a[_0x917e('0x2a')],'type':_0xd1434a[_0x917e('0x2b')][_0x917e('0x2c')]};});_0x4fb535['model']=_[_0x917e('0x27')](_0x3473a8,_0x917e('0x25'));_0x4fb535[_0x917e('0x2d')]=_['keys'](_0x459d5b[_0x917e('0x2d')]);_0x4fb535['filters']=_[_0x917e('0x2e')](_0x4fb535[_0x917e('0x2f')],_0x4fb535['query']);_0x236d99['attributes']=_[_0x917e('0x2e')](_0x4fb535['model'],qs[_0x917e('0x30')](_0x459d5b[_0x917e('0x2d')][_0x917e('0x30')]));_0x236d99[_0x917e('0x31')]=_0x236d99[_0x917e('0x31')]['length']?_0x236d99[_0x917e('0x31')]:_0x4fb535[_0x917e('0x2f')];if(!_0x459d5b[_0x917e('0x2d')][_0x917e('0x32')](_0x917e('0x33'))){_0x236d99[_0x917e('0x19')]=qs[_0x917e('0x19')](_0x459d5b['query'][_0x917e('0x19')]);_0x236d99['offset']=qs[_0x917e('0x1a')](_0x459d5b[_0x917e('0x2d')][_0x917e('0x1a')]);}_0x236d99['order']=qs[_0x917e('0x34')](_0x459d5b[_0x917e('0x2d')]['sort']);_0x236d99[_0x917e('0x35')]=qs[_0x917e('0x36')](_['pick'](_0x459d5b[_0x917e('0x2d')],_0x4fb535[_0x917e('0x36')]),_0x3473a8);if(_0x459d5b['query']['filter']){_0x236d99[_0x917e('0x35')]=_[_0x917e('0x37')](_0x236d99['where'],{'$or':_[_0x917e('0x27')](_0x3473a8,function(_0x41755a){if(_0x41755a[_0x917e('0x2b')]!=='VIRTUAL'){var _0x56f028={};_0x56f028[_0x41755a[_0x917e('0x25')]]={'$like':'%'+_0x459d5b['query']['filter']+'%'};return _0x56f028;}})});}_0x236d99=_[_0x917e('0x37')]({},_0x236d99,_0x459d5b[_0x917e('0x38')]);var _0x942ac6={'where':_0x236d99[_0x917e('0x35')]};return db[_0x917e('0x28')][_0x917e('0x1b')](_0x942ac6)['then'](function(_0x4a6762){_0x2314d7[_0x917e('0x1b')]=_0x4a6762;if(_0x459d5b[_0x917e('0x2d')][_0x917e('0x39')]){_0x236d99[_0x917e('0x3a')]=[{'all':!![]}];}return db[_0x917e('0x28')]['findAll'](_0x236d99);})['then'](function(_0x226182){_0x2314d7[_0x917e('0x3b')]=_0x226182;return _0x2314d7;})[_0x917e('0x20')](respondWithFilteredResult(_0x3da3c1,_0x236d99))['catch'](handleError(_0x3da3c1,null));};exports[_0x917e('0x3c')]=function(_0x8c091b,_0x4a3213){var _0x2b6dc9={'raw':!![],'where':{'id':_0x8c091b[_0x917e('0x3d')]['id']}},_0x380f0c={};_0x380f0c[_0x917e('0x2f')]=_[_0x917e('0x3e')](db[_0x917e('0x28')][_0x917e('0x29')]);_0x380f0c[_0x917e('0x2d')]=_[_0x917e('0x3e')](_0x8c091b[_0x917e('0x2d')]);_0x380f0c[_0x917e('0x36')]=_[_0x917e('0x2e')](_0x380f0c[_0x917e('0x2f')],_0x380f0c[_0x917e('0x2d')]);_0x2b6dc9[_0x917e('0x31')]=_[_0x917e('0x2e')](_0x380f0c['model'],qs['fields'](_0x8c091b[_0x917e('0x2d')]['fields']));_0x2b6dc9['attributes']=_0x2b6dc9[_0x917e('0x31')][_0x917e('0x3f')]?_0x2b6dc9['attributes']:_0x380f0c[_0x917e('0x2f')];if(_0x8c091b['query'][_0x917e('0x39')]){_0x2b6dc9[_0x917e('0x3a')]=[{'all':!![]}];}_0x2b6dc9=_[_0x917e('0x37')]({},_0x2b6dc9,_0x8c091b[_0x917e('0x38')]);return db['Attachment'][_0x917e('0x40')](_0x2b6dc9)[_0x917e('0x20')](handleEntityNotFound(_0x4a3213,null))[_0x917e('0x20')](respondWithResult(_0x4a3213,null))[_0x917e('0x41')](handleError(_0x4a3213,null));};exports['clone']=function(_0x2fe2f1,_0x31c8c8){var _0x3fef75={'where':{'id':_0x2fe2f1[_0x917e('0x3d')]['id']}},_0x3443da={};_0x3443da[_0x917e('0x2f')]=_[_0x917e('0x3e')](db[_0x917e('0x28')]['rawAttributes']);_0x3fef75[_0x917e('0x31')]=_['intersection'](_0x3443da[_0x917e('0x2f')],qs[_0x917e('0x30')](_0x2fe2f1['query']['fields']));_0x3fef75['attributes']=_0x3fef75[_0x917e('0x31')][_0x917e('0x3f')]?_0x3fef75[_0x917e('0x31')]:_0x3443da[_0x917e('0x2f')];if(_0x2fe2f1[_0x917e('0x2d')]['includeAll']){_0x3fef75[_0x917e('0x3a')]=[{'all':!![]}];}_0x3fef75=_[_0x917e('0x37')]({},_0x3fef75,_0x2fe2f1['options']);return db[_0x917e('0x28')][_0x917e('0x40')](_0x3fef75)[_0x917e('0x20')](handleEntityNotFound(_0x31c8c8,null))['then'](function(_0x1dca3d){if(_0x1dca3d){var _0x596854=_0x1dca3d[_0x917e('0x42')]({'plain':!![]});_0x596854=qs[_0x917e('0x43')](_0x596854,['id','createdAt',_0x917e('0x44')]);_0x2fe2f1['body']=_['omit'](_0x2fe2f1['body'],['id','createdAt',_0x917e('0x44')]);return db[_0x917e('0x28')][_0x917e('0x45')](_[_0x917e('0x37')](_0x596854,_0x2fe2f1[_0x917e('0x46')]),{'include':_0x2fe2f1[_0x917e('0x2d')][_0x917e('0x39')]?[{'all':!![]}]:undefined});}})[_0x917e('0x20')](respondWithResult(_0x31c8c8,0xc9))[_0x917e('0x41')](handleError(_0x31c8c8,null));};exports['update']=function(_0x5c87b4,_0x444530){if(_0x5c87b4[_0x917e('0x46')]['id']){delete _0x5c87b4[_0x917e('0x46')]['id'];}return db[_0x917e('0x28')][_0x917e('0x40')]({'where':{'id':_0x5c87b4['params']['id']}})[_0x917e('0x20')](handleEntityNotFound(_0x444530,null))[_0x917e('0x20')](saveUpdates(_0x5c87b4['body'],null))['then'](respondWithResult(_0x444530,null))[_0x917e('0x41')](handleError(_0x444530,null));};exports[_0x917e('0x21')]=function(_0x35f2b1,_0x1b72f0){return db['Attachment'][_0x917e('0x40')]({'where':{'id':_0x35f2b1[_0x917e('0x3d')]['id']}})[_0x917e('0x20')](handleEntityNotFound(_0x1b72f0,null))[_0x917e('0x20')](removeEntity(_0x1b72f0,null))[_0x917e('0x41')](handleError(_0x1b72f0,null));};exports[_0x917e('0x45')]=function(_0x3ac716,_0x9d38c0,_0x26a0c0){_0x3ac716[_0x917e('0x46')][_0x917e('0x25')]=_0x3ac716[_0x917e('0x47')][_0x917e('0x48')];_0x3ac716[_0x917e('0x46')][_0x917e('0x49')]=_0x3ac716[_0x917e('0x47')][_0x917e('0x4a')];_0x3ac716['body']['type']=_0x3ac716[_0x917e('0x47')][_0x917e('0x4b')];return db[_0x917e('0x28')]['create'](_0x3ac716['body'])[_0x917e('0x20')](respondWithResult(_0x9d38c0,0xc9))[_0x917e('0x41')](handleError(_0x9d38c0,null));};exports[_0x917e('0x4c')]=function(_0x4e8f5c,_0x29bdc8,_0x36b8a9){return db[_0x917e('0x28')]['findOne']({'where':{'id':_0x4e8f5c[_0x917e('0x3d')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x29bdc8,null))['then'](function(_0xc44eec){if(_0xc44eec){var _0x5596c0=_0xc44eec[_0x917e('0x4d')]!==null;var _0x218bae=path['join'](config[_0x917e('0x4e')],'server/files/attachments/');if(_0x5596c0){_0x218bae=path[_0x917e('0x4f')](_0x218bae,_0x917e('0x50'));}var _0x99267c=path[_0x917e('0x4f')](_0x218bae,_0xc44eec[_0x917e('0x49')]);return _0x29bdc8[_0x917e('0x4c')](_0x99267c);}})[_0x917e('0x41')](handleError(_0x29bdc8,null));};
\ No newline at end of file
+var _0x2c8e=['../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','reject','save','update','then','end','error','stack','name','send','Attachment','rawAttributes','fieldName','type','key','model','map','filters','query','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','findAll','catch','show','params','keys','include','find','intersection','includeAll','omit','updatedAt','body','createdAt','create','destroy','file','basename','download','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment'];(function(_0x386456,_0x4f9303){var _0x5e299d=function(_0x474595){while(--_0x474595){_0x386456['push'](_0x386456['shift']());}};_0x5e299d(++_0x4f9303);}(_0x2c8e,0x13d));var _0xe2c8=function(_0x4806c0,_0x3234f6){_0x4806c0=_0x4806c0-0x0;var _0x3c76be=_0x2c8e[_0x4806c0];return _0x3c76be;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe2c8('0x0'));var zipdir=require(_0xe2c8('0x1'));var jsonpatch=require(_0xe2c8('0x2'));var rp=require(_0xe2c8('0x3'));var moment=require('moment');var BPromise=require(_0xe2c8('0x4'));var Mustache=require(_0xe2c8('0x5'));var util=require(_0xe2c8('0x6'));var path=require(_0xe2c8('0x7'));var sox=require(_0xe2c8('0x8'));var csv=require(_0xe2c8('0x9'));var ejs=require(_0xe2c8('0xa'));var fs=require('fs');var fs_extra=require(_0xe2c8('0xb'));var _=require(_0xe2c8('0xc'));var squel=require('squel');var crypto=require(_0xe2c8('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe2c8('0xe'));var toCsv=require(_0xe2c8('0x9'));var querystring=require(_0xe2c8('0xf'));var Papa=require('papaparse');var Redis=require(_0xe2c8('0x10'));var authService=require(_0xe2c8('0x11'));var qs=require(_0xe2c8('0x12'));var as=require(_0xe2c8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe2c8('0x14'))(_0xe2c8('0x15'));var utils=require('../../config/utils');var config=require(_0xe2c8('0x16'));var licenseUtil=require(_0xe2c8('0x17'));var db=require(_0xe2c8('0x18'))['db'];function respondWithStatusCode(_0x3a8a50,_0x1d3331){_0x1d3331=_0x1d3331||0xcc;return function(_0x523611){if(_0x523611){return _0x3a8a50[_0xe2c8('0x19')](_0x1d3331);}return _0x3a8a50['status'](_0x1d3331)['end']();};}function respondWithResult(_0x555b8b,_0x3a3cda){_0x3a3cda=_0x3a3cda||0xc8;return function(_0x6e63a4){if(_0x6e63a4){return _0x555b8b[_0xe2c8('0x1a')](_0x3a3cda)[_0xe2c8('0x1b')](_0x6e63a4);}};}function respondWithFilteredResult(_0x4450f2,_0x4dee48){return function(_0x26c720){if(_0x26c720){var _0x316c5b=typeof _0x4dee48[_0xe2c8('0x1c')]==='undefined'&&typeof _0x4dee48[_0xe2c8('0x1d')]===_0xe2c8('0x1e');var _0xad4804=_0x26c720[_0xe2c8('0x1f')];var _0x54d658=_0x316c5b?0x0:_0x4dee48[_0xe2c8('0x1c')];var _0x3ee495=_0x316c5b?_0x26c720[_0xe2c8('0x1f')]:_0x4dee48[_0xe2c8('0x1c')]+_0x4dee48[_0xe2c8('0x1d')];var _0x3afbb1;if(_0x3ee495>=_0xad4804){_0x3ee495=_0xad4804;_0x3afbb1=0xc8;}else{_0x3afbb1=0xce;}_0x4450f2[_0xe2c8('0x1a')](_0x3afbb1);return _0x4450f2[_0xe2c8('0x20')]('Content-Range',_0x54d658+'-'+_0x3ee495+'/'+_0xad4804)['json'](_0x26c720);}return null;};}function patchUpdates(_0x534068){return function(_0x5afc63){try{jsonpatch['apply'](_0x5afc63,_0x534068,!![]);}catch(_0x1ca657){return BPromise[_0xe2c8('0x21')](_0x1ca657);}return _0x5afc63[_0xe2c8('0x22')]();};}function saveUpdates(_0x52b775,_0x276fbc){return function(_0x155be7){if(_0x155be7){return _0x155be7[_0xe2c8('0x23')](_0x52b775)[_0xe2c8('0x24')](function(_0x429081){return _0x429081;});}return null;};}function removeEntity(_0x1c6282,_0xb6d382){return function(_0x3c1c44){if(_0x3c1c44){return _0x3c1c44['destroy']()[_0xe2c8('0x24')](function(){_0x1c6282['status'](0xcc)[_0xe2c8('0x25')]();});}};}function handleEntityNotFound(_0x306897,_0x431a44){return function(_0x27facd){if(!_0x27facd){_0x306897[_0xe2c8('0x19')](0x194);}return _0x27facd;};}function handleError(_0x4432a7,_0x234edb){_0x234edb=_0x234edb||0x1f4;return function(_0x3e7432){logger[_0xe2c8('0x26')](_0x3e7432[_0xe2c8('0x27')]);if(_0x3e7432[_0xe2c8('0x28')]){delete _0x3e7432[_0xe2c8('0x28')];}_0x4432a7[_0xe2c8('0x1a')](_0x234edb)[_0xe2c8('0x29')](_0x3e7432);};}exports['index']=function(_0xed2d4e,_0x46d4b1){var _0x24256b={},_0x14ef7e={},_0x5579ca={'count':0x0,'rows':[]};var _0x1e2845=_['map'](db[_0xe2c8('0x2a')][_0xe2c8('0x2b')],function(_0x1c55ff){return{'name':_0x1c55ff[_0xe2c8('0x2c')],'type':_0x1c55ff[_0xe2c8('0x2d')][_0xe2c8('0x2e')]};});_0x14ef7e[_0xe2c8('0x2f')]=_[_0xe2c8('0x30')](_0x1e2845,_0xe2c8('0x28'));_0x14ef7e['query']=_['keys'](_0xed2d4e['query']);_0x14ef7e[_0xe2c8('0x31')]=_['intersection'](_0x14ef7e['model'],_0x14ef7e[_0xe2c8('0x32')]);_0x24256b['attributes']=_['intersection'](_0x14ef7e[_0xe2c8('0x2f')],qs[_0xe2c8('0x33')](_0xed2d4e['query'][_0xe2c8('0x33')]));_0x24256b['attributes']=_0x24256b[_0xe2c8('0x34')][_0xe2c8('0x35')]?_0x24256b[_0xe2c8('0x34')]:_0x14ef7e[_0xe2c8('0x2f')];if(!_0xed2d4e[_0xe2c8('0x32')][_0xe2c8('0x36')](_0xe2c8('0x37'))){_0x24256b[_0xe2c8('0x1d')]=qs['limit'](_0xed2d4e[_0xe2c8('0x32')][_0xe2c8('0x1d')]);_0x24256b['offset']=qs[_0xe2c8('0x1c')](_0xed2d4e[_0xe2c8('0x32')][_0xe2c8('0x1c')]);}_0x24256b['order']=qs[_0xe2c8('0x38')](_0xed2d4e[_0xe2c8('0x32')][_0xe2c8('0x38')]);_0x24256b[_0xe2c8('0x39')]=qs[_0xe2c8('0x31')](_[_0xe2c8('0x3a')](_0xed2d4e['query'],_0x14ef7e['filters']),_0x1e2845);if(_0xed2d4e[_0xe2c8('0x32')][_0xe2c8('0x3b')]){_0x24256b['where']=_['merge'](_0x24256b[_0xe2c8('0x39')],{'$or':_['map'](_0x1e2845,function(_0x4bf945){if(_0x4bf945[_0xe2c8('0x2d')]!=='VIRTUAL'){var _0x3c8387={};_0x3c8387[_0x4bf945['name']]={'$like':'%'+_0xed2d4e[_0xe2c8('0x32')]['filter']+'%'};return _0x3c8387;}})});}_0x24256b=_[_0xe2c8('0x3c')]({},_0x24256b,_0xed2d4e[_0xe2c8('0x3d')]);var _0x395e0d={'where':_0x24256b[_0xe2c8('0x39')]};return db['Attachment'][_0xe2c8('0x1f')](_0x395e0d)[_0xe2c8('0x24')](function(_0x808a8b){_0x5579ca[_0xe2c8('0x1f')]=_0x808a8b;if(_0xed2d4e[_0xe2c8('0x32')]['includeAll']){_0x24256b['include']=[{'all':!![]}];}return db[_0xe2c8('0x2a')][_0xe2c8('0x3e')](_0x24256b);})[_0xe2c8('0x24')](function(_0x1c2b16){_0x5579ca['rows']=_0x1c2b16;return _0x5579ca;})[_0xe2c8('0x24')](respondWithFilteredResult(_0x46d4b1,_0x24256b))[_0xe2c8('0x3f')](handleError(_0x46d4b1,null));};exports[_0xe2c8('0x40')]=function(_0x2f8bad,_0x13a238){var _0x1a28d4={'raw':!![],'where':{'id':_0x2f8bad[_0xe2c8('0x41')]['id']}},_0x4218d9={};_0x4218d9[_0xe2c8('0x2f')]=_[_0xe2c8('0x42')](db[_0xe2c8('0x2a')][_0xe2c8('0x2b')]);_0x4218d9[_0xe2c8('0x32')]=_[_0xe2c8('0x42')](_0x2f8bad[_0xe2c8('0x32')]);_0x4218d9[_0xe2c8('0x31')]=_['intersection'](_0x4218d9[_0xe2c8('0x2f')],_0x4218d9[_0xe2c8('0x32')]);_0x1a28d4[_0xe2c8('0x34')]=_['intersection'](_0x4218d9[_0xe2c8('0x2f')],qs[_0xe2c8('0x33')](_0x2f8bad[_0xe2c8('0x32')][_0xe2c8('0x33')]));_0x1a28d4[_0xe2c8('0x34')]=_0x1a28d4[_0xe2c8('0x34')]['length']?_0x1a28d4[_0xe2c8('0x34')]:_0x4218d9[_0xe2c8('0x2f')];if(_0x2f8bad[_0xe2c8('0x32')]['includeAll']){_0x1a28d4[_0xe2c8('0x43')]=[{'all':!![]}];}_0x1a28d4=_[_0xe2c8('0x3c')]({},_0x1a28d4,_0x2f8bad['options']);return db[_0xe2c8('0x2a')][_0xe2c8('0x44')](_0x1a28d4)[_0xe2c8('0x24')](handleEntityNotFound(_0x13a238,null))[_0xe2c8('0x24')](respondWithResult(_0x13a238,null))[_0xe2c8('0x3f')](handleError(_0x13a238,null));};exports['clone']=function(_0x5972e9,_0x27cd37){var _0x14acf1={'where':{'id':_0x5972e9[_0xe2c8('0x41')]['id']}},_0x2c154f={};_0x2c154f['model']=_[_0xe2c8('0x42')](db[_0xe2c8('0x2a')][_0xe2c8('0x2b')]);_0x14acf1['attributes']=_[_0xe2c8('0x45')](_0x2c154f[_0xe2c8('0x2f')],qs[_0xe2c8('0x33')](_0x5972e9[_0xe2c8('0x32')][_0xe2c8('0x33')]));_0x14acf1[_0xe2c8('0x34')]=_0x14acf1[_0xe2c8('0x34')]['length']?_0x14acf1[_0xe2c8('0x34')]:_0x2c154f[_0xe2c8('0x2f')];if(_0x5972e9[_0xe2c8('0x32')][_0xe2c8('0x46')]){_0x14acf1[_0xe2c8('0x43')]=[{'all':!![]}];}_0x14acf1=_[_0xe2c8('0x3c')]({},_0x14acf1,_0x5972e9[_0xe2c8('0x3d')]);return db[_0xe2c8('0x2a')]['find'](_0x14acf1)[_0xe2c8('0x24')](handleEntityNotFound(_0x27cd37,null))['then'](function(_0x31bd6f){if(_0x31bd6f){var _0x50d826=_0x31bd6f['get']({'plain':!![]});_0x50d826=qs[_0xe2c8('0x47')](_0x50d826,['id','createdAt',_0xe2c8('0x48')]);_0x5972e9[_0xe2c8('0x49')]=_[_0xe2c8('0x47')](_0x5972e9[_0xe2c8('0x49')],['id',_0xe2c8('0x4a'),_0xe2c8('0x48')]);return db[_0xe2c8('0x2a')][_0xe2c8('0x4b')](_[_0xe2c8('0x3c')](_0x50d826,_0x5972e9[_0xe2c8('0x49')]),{'include':_0x5972e9['query']['includeAll']?[{'all':!![]}]:undefined});}})[_0xe2c8('0x24')](respondWithResult(_0x27cd37,0xc9))[_0xe2c8('0x3f')](handleError(_0x27cd37,null));};exports['update']=function(_0x474c0f,_0x13fcd0){if(_0x474c0f[_0xe2c8('0x49')]['id']){delete _0x474c0f[_0xe2c8('0x49')]['id'];}return db[_0xe2c8('0x2a')][_0xe2c8('0x44')]({'where':{'id':_0x474c0f['params']['id']}})[_0xe2c8('0x24')](handleEntityNotFound(_0x13fcd0,null))['then'](saveUpdates(_0x474c0f[_0xe2c8('0x49')],null))[_0xe2c8('0x24')](respondWithResult(_0x13fcd0,null))[_0xe2c8('0x3f')](handleError(_0x13fcd0,null));};exports[_0xe2c8('0x4c')]=function(_0xa6cc65,_0x2c9fae){return db['Attachment'][_0xe2c8('0x44')]({'where':{'id':_0xa6cc65['params']['id']}})[_0xe2c8('0x24')](handleEntityNotFound(_0x2c9fae,null))[_0xe2c8('0x24')](removeEntity(_0x2c9fae,null))[_0xe2c8('0x3f')](handleError(_0x2c9fae,null));};exports[_0xe2c8('0x4b')]=function(_0x62ccce,_0x382272,_0x26f8d6){_0x62ccce[_0xe2c8('0x49')][_0xe2c8('0x28')]=_0x62ccce[_0xe2c8('0x4d')]['originalname'];_0x62ccce[_0xe2c8('0x49')][_0xe2c8('0x4e')]=_0x62ccce['file']['filename'];_0x62ccce[_0xe2c8('0x49')]['type']=_0x62ccce['file']['mimetype'];return db[_0xe2c8('0x2a')][_0xe2c8('0x4b')](_0x62ccce[_0xe2c8('0x49')])['then'](respondWithResult(_0x382272,0xc9))[_0xe2c8('0x3f')](handleError(_0x382272,null));};exports[_0xe2c8('0x4f')]=function(_0x45520b,_0x19eec3,_0x407fc0){return db[_0xe2c8('0x2a')]['findOne']({'where':{'id':_0x45520b[_0xe2c8('0x41')]['id']},'raw':!![]})[_0xe2c8('0x24')](handleEntityNotFound(_0x19eec3,null))[_0xe2c8('0x24')](function(_0x2325e1){if(_0x2325e1){var _0x4c9d30=_0x2325e1[_0xe2c8('0x50')]!==null;var _0x11b322=path['join'](config[_0xe2c8('0x51')],_0xe2c8('0x52'));if(_0x4c9d30){_0x11b322=path[_0xe2c8('0x53')](_0x11b322,_0xe2c8('0x54'));}var _0x34f335=path[_0xe2c8('0x53')](_0x11b322,_0x2325e1[_0xe2c8('0x4e')]);return _0x19eec3[_0xe2c8('0x4f')](_0x34f335);}})[_0xe2c8('0x3f')](handleError(_0x19eec3,null));};
\ No newline at end of file
index a7e46d1..07138c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b78=['rimraf','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5aeaf3,_0x286f70){var _0x4edd72=function(_0x514dfe){while(--_0x514dfe){_0x5aeaf3['push'](_0x5aeaf3['shift']());}};_0x4edd72(++_0x286f70);}(_0x2b78,0x14b));var _0x82b7=function(_0x2d98f1,_0x254499){_0x2d98f1=_0x2d98f1-0x0;var _0x5cbe38=_0x2b78[_0x2d98f1];return _0x5cbe38;};'use strict';var _=require(_0x82b7('0x0'));var util=require(_0x82b7('0x1'));var logger=require(_0x82b7('0x2'))(_0x82b7('0x3'));var moment=require(_0x82b7('0x4'));var BPromise=require(_0x82b7('0x5'));var rp=require(_0x82b7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x82b7('0x7'));var config=require('../../config/environment');var attributes=require(_0x82b7('0x8'));module[_0x82b7('0x9')]=function(_0x10048c,_0x5ca475){return _0x10048c[_0x82b7('0xa')](_0x82b7('0xb'),attributes,{'tableName':_0x82b7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b0d=['rimraf','../../config/environment','./attachment.attributes','define','attachments','util','../../config/logger','api','moment','path'];(function(_0x19b90d,_0x7a8864){var _0x5c4a21=function(_0x2e4248){while(--_0x2e4248){_0x19b90d['push'](_0x19b90d['shift']());}};_0x5c4a21(++_0x7a8864);}(_0x1b0d,0x9b));var _0xd1b0=function(_0x6cb943,_0x50b9b1){_0x6cb943=_0x6cb943-0x0;var _0xb7c51c=_0x1b0d[_0x6cb943];return _0xb7c51c;};'use strict';var _=require('lodash');var util=require(_0xd1b0('0x0'));var logger=require(_0xd1b0('0x1'))(_0xd1b0('0x2'));var moment=require(_0xd1b0('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd1b0('0x4'));var rimraf=require(_0xd1b0('0x5'));var config=require(_0xd1b0('0x6'));var attributes=require(_0xd1b0('0x7'));module['exports']=function(_0x22b40a,_0x246501){return _0x22b40a[_0xd1b0('0x8')]('Attachment',attributes,{'tableName':_0xd1b0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39c53b5..4782ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['code','Attachment,\x20%s,\x20%s','message','result','catch','CreateAttachment','Attachment','create','body','options','then','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','info','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x76dc,0x1f2));var _0xc76d=function(_0x5ef379,_0x46da32){_0x5ef379=_0x5ef379-0x0;var _0x56f5c8=_0x76dc[_0x5ef379];return _0x56f5c8;};'use strict';var _=require(_0xc76d('0x0'));var util=require(_0xc76d('0x1'));var moment=require(_0xc76d('0x2'));var BPromise=require(_0xc76d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc76d('0x4'));var db=require(_0xc76d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc76d('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc76d('0x7'));var client=jayson[_0xc76d('0x8')][_0xc76d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4832bd,_0x4ce0bd,_0x119f38){return new BPromise(function(_0x114572,_0x18574f){return client['request'](_0x4832bd,_0x119f38)['then'](function(_0x1dc996){logger[_0xc76d('0xa')]('Attachment,\x20%s,\x20%s',_0x4ce0bd,_0xc76d('0xb'));logger['debug'](_0xc76d('0xc'),_0x4ce0bd,_0xc76d('0xb'),JSON[_0xc76d('0xd')](_0x1dc996));if(_0x1dc996[_0xc76d('0xe')]){if(_0x1dc996[_0xc76d('0xe')][_0xc76d('0xf')]===0x1f4){logger[_0xc76d('0xe')](_0xc76d('0x10'),_0x4ce0bd,_0x1dc996[_0xc76d('0xe')][_0xc76d('0x11')]);return _0x18574f(_0x1dc996[_0xc76d('0xe')][_0xc76d('0x11')]);}logger[_0xc76d('0xe')](_0xc76d('0x10'),_0x4ce0bd,_0x1dc996['error'][_0xc76d('0x11')]);return _0x114572(_0x1dc996[_0xc76d('0xe')]['message']);}else{logger[_0xc76d('0xa')](_0xc76d('0x10'),_0x4ce0bd,_0xc76d('0xb'));_0x114572(_0x1dc996[_0xc76d('0x12')]['message']);}})[_0xc76d('0x13')](function(_0x5d881c){logger['error'](_0xc76d('0x10'),_0x4ce0bd,_0x5d881c);_0x18574f(_0x5d881c);});});}exports[_0xc76d('0x14')]=function(_0x339623){var _0x23f3ca=this;return new Promise(function(_0xd1d16f,_0x4b0402){return db[_0xc76d('0x15')][_0xc76d('0x16')](_0x339623[_0xc76d('0x17')],{'raw':_0x339623[_0xc76d('0x18')]?_0x339623[_0xc76d('0x18')]['raw']===undefined?!![]:![]:!![]})[_0xc76d('0x19')](function(_0x324db7){logger['info'](_0xc76d('0x14'),_0x339623);logger[_0xc76d('0x1a')](_0xc76d('0x14'),_0x339623,JSON[_0xc76d('0xd')](_0x324db7));_0xd1d16f(_0x324db7);})[_0xc76d('0x13')](function(_0x3d357b){logger[_0xc76d('0xe')](_0xc76d('0x14'),_0x3d357b[_0xc76d('0x11')],_0x339623);_0x4b0402(_0x23f3ca[_0xc76d('0xe')](0x1f4,_0x3d357b[_0xc76d('0x11')]));});});};
\ No newline at end of file
+var _0xc73e=['rpc','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','Attachment,\x20%s,\x20%s','message','info','result','catch','CreateAttachment','Attachment','body','options','raw','lodash','util','bluebird','randomstring','../../config/logger'];(function(_0x59b2a1,_0x1f631f){var _0x4908d1=function(_0x14c9b8){while(--_0x14c9b8){_0x59b2a1['push'](_0x59b2a1['shift']());}};_0x4908d1(++_0x1f631f);}(_0xc73e,0x1e9));var _0xec73=function(_0x24ff05,_0x312f08){_0x24ff05=_0x24ff05-0x0;var _0x3d8b7a=_0xc73e[_0x24ff05];return _0x3d8b7a;};'use strict';var _=require(_0xec73('0x0'));var util=require(_0xec73('0x1'));var moment=require('moment');var BPromise=require(_0xec73('0x2'));var rs=require(_0xec73('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xec73('0x4'))(_0xec73('0x5'));var config=require('../../config/environment');var jayson=require(_0xec73('0x6'));var client=jayson[_0xec73('0x7')][_0xec73('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x28d95d,_0x4948f0,_0x278b3b){return new BPromise(function(_0x5bab16,_0x3c3160){return client[_0xec73('0x9')](_0x28d95d,_0x278b3b)[_0xec73('0xa')](function(_0x1421b5){logger['info']('Attachment,\x20%s,\x20%s',_0x4948f0,_0xec73('0xb'));logger[_0xec73('0xc')]('Attachment,\x20%s,\x20%s,\x20%s',_0x4948f0,'request\x20sent',JSON[_0xec73('0xd')](_0x1421b5));if(_0x1421b5[_0xec73('0xe')]){if(_0x1421b5[_0xec73('0xe')][_0xec73('0xf')]===0x1f4){logger[_0xec73('0xe')](_0xec73('0x10'),_0x4948f0,_0x1421b5[_0xec73('0xe')]['message']);return _0x3c3160(_0x1421b5[_0xec73('0xe')]['message']);}logger[_0xec73('0xe')]('Attachment,\x20%s,\x20%s',_0x4948f0,_0x1421b5[_0xec73('0xe')][_0xec73('0x11')]);return _0x5bab16(_0x1421b5[_0xec73('0xe')][_0xec73('0x11')]);}else{logger[_0xec73('0x12')](_0xec73('0x10'),_0x4948f0,_0xec73('0xb'));_0x5bab16(_0x1421b5[_0xec73('0x13')]['message']);}})[_0xec73('0x14')](function(_0x418770){logger[_0xec73('0xe')](_0xec73('0x10'),_0x4948f0,_0x418770);_0x3c3160(_0x418770);});});}exports[_0xec73('0x15')]=function(_0x2d646e){var _0x4d28c3=this;return new Promise(function(_0x1bacbf,_0x360d58){return db[_0xec73('0x16')]['create'](_0x2d646e[_0xec73('0x17')],{'raw':_0x2d646e[_0xec73('0x18')]?_0x2d646e[_0xec73('0x18')][_0xec73('0x19')]===undefined?!![]:![]:!![]})[_0xec73('0xa')](function(_0x1169c4){logger['info']('CreateAttachment',_0x2d646e);logger[_0xec73('0xc')](_0xec73('0x15'),_0x2d646e,JSON[_0xec73('0xd')](_0x1169c4));_0x1bacbf(_0x1169c4);})[_0xec73('0x14')](function(_0x451715){logger['error'](_0xec73('0x15'),_0x451715['message'],_0x2d646e);_0x360d58(_0x4d28c3[_0xec73('0xe')](0x1f4,_0x451715['message']));});});};
\ No newline at end of file
index e512700..62ddbc4 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(_0x541f83,_0x5d700d){var _0x386253=function(_0x578a41){while(--_0x578a41){_0x541f83['push'](_0x541f83['shift']());}};_0x386253(++_0x5d700d);}(_0x2032,0xd9));var _0x2203=function(_0x34dec4,_0x23e5b6){_0x34dec4=_0x34dec4-0x0;var _0xc1c134=_0x2032[_0x34dec4];return _0xc1c134;};'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 _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4b784d,_0x5efb2f){_0x4b784d=_0x4b784d-0x0;var _0x2cdeaf=_0x0b0e[_0x4b784d];return _0x2cdeaf;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
index db9addc..4428ef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa62c=['../../config/utils','login','authenticate','google','/login','profile','email','callback','use','secret','callbackURL','Setting','findOne','allowedLoginAttempts','then','User','find','map','emails','admin','user','disabled','blockedAt','add','blockDuration','minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','getLicense','catch','lodash','passport-google-oauth20','Strategy','../../config/environment','../../components/auth/service','signToken'];(function(_0x2f4c2e,_0xc033ec){var _0x4ff789=function(_0x42bc67){while(--_0x42bc67){_0x2f4c2e['push'](_0x2f4c2e['shift']());}};_0x4ff789(++_0xc033ec);}(_0xa62c,0x186));var _0xca62=function(_0x416cdc,_0x213b87){_0x416cdc=_0x416cdc-0x0;var _0x1931ce=_0xa62c[_0x416cdc];return _0x1931ce;};'use strict';var _=require(_0xca62('0x0'));var passport=require('passport');var GoogleStrategy=require(_0xca62('0x1'))[_0xca62('0x2')];var moment=require('moment');var db=require('../../mysqldb')['db'];var config=require(_0xca62('0x3'));var signToken=require(_0xca62('0x4'))[_0xca62('0x5')];var utils=require(_0xca62('0x6'));exports[_0xca62('0x7')]=passport[_0xca62('0x8')](_0xca62('0x9'),{'failureRedirect':_0xca62('0xa'),'scope':[_0xca62('0xb'),_0xca62('0xc')],'session':![]});exports[_0xca62('0xd')]=passport[_0xca62('0x8')](_0xca62('0x9'),{'failureRedirect':_0xca62('0xa'),'session':![]});passport[_0xca62('0xe')](new GoogleStrategy({'clientID':config[_0xca62('0x9')]?config[_0xca62('0x9')]['clientID']:'id','clientSecret':config[_0xca62('0x9')]?config['google']['clientSecret']:_0xca62('0xf'),'callbackURL':config[_0xca62('0x9')]?config[_0xca62('0x9')][_0xca62('0x10')]:''},function(_0x481c43,_0x2c4084,_0x3b1270,_0x55f097){var _0x2b9155,_0x3ad881;return db[_0xca62('0x11')][_0xca62('0x12')]({'where':{'id':0x1},'attributes':[_0xca62('0x13'),'blockDuration'],'raw':!![]})[_0xca62('0x14')](function(_0x7ac3ed){_0x2b9155=_0x7ac3ed;return db[_0xca62('0x15')][_0xca62('0x16')]({'where':{'email':_[_0xca62('0x17')](_0x3b1270[_0xca62('0x18')],'value'),'role':{'$or':[_0xca62('0x19'),_0xca62('0x1a'),'agent']}}});})['then'](function(_0x1fa7b9){_0x3ad881=_0x1fa7b9;if(_0x3ad881){if(_0x3ad881[_0xca62('0x1b')]){return _0x55f097('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x2b9155['blockDuration']>0x0){if(_0x3ad881['blocked']){if(moment(_0x3ad881[_0xca62('0x1c')])[_0xca62('0x1d')](_0x2b9155[_0xca62('0x1e')],_0xca62('0x1f'))>moment()){return _0x55f097(_0xca62('0x20'));}else{return utils[_0xca62('0x21')](_0x3ad881,0x0,![],null)[_0xca62('0x14')](function(){return utils[_0xca62('0x22')](_0x3ad881);})[_0xca62('0x14')](function(){return _0x55f097(null,_0x3ad881);});}}else{return utils[_0xca62('0x22')](_0x3ad881)['then'](function(){return _0x55f097(null,_0x3ad881);});}}else{return utils[_0xca62('0x22')](_0x3ad881)[_0xca62('0x14')](function(){return _0x55f097(null,_0x3ad881);});}}return _0x55f097(_0xca62('0x20'));})[_0xca62('0x23')](function(_0x4e5a0d){_0x55f097(_0x4e5a0d);});}));
\ No newline at end of file
+var _0x335b=['admin','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','clearBlockUser','getLicense','catch','passport','passport-google-oauth20','Strategy','moment','../../config/environment','../../components/auth/service','signToken','login','authenticate','google','/login','profile','callback','clientID','secret','Setting','findOne','then','User','find','map','value'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x335b,0x1ca));var _0xb335=function(_0x2b6198,_0x14891e){_0x2b6198=_0x2b6198-0x0;var _0x247c12=_0x335b[_0x2b6198];return _0x247c12;};'use strict';var _=require('lodash');var passport=require(_0xb335('0x0'));var GoogleStrategy=require(_0xb335('0x1'))[_0xb335('0x2')];var moment=require(_0xb335('0x3'));var db=require('../../mysqldb')['db'];var config=require(_0xb335('0x4'));var signToken=require(_0xb335('0x5'))[_0xb335('0x6')];var utils=require('../../config/utils');exports[_0xb335('0x7')]=passport[_0xb335('0x8')](_0xb335('0x9'),{'failureRedirect':_0xb335('0xa'),'scope':[_0xb335('0xb'),'email'],'session':![]});exports[_0xb335('0xc')]=passport[_0xb335('0x8')](_0xb335('0x9'),{'failureRedirect':_0xb335('0xa'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config[_0xb335('0x9')]?config[_0xb335('0x9')][_0xb335('0xd')]:'id','clientSecret':config[_0xb335('0x9')]?config['google']['clientSecret']:_0xb335('0xe'),'callbackURL':config[_0xb335('0x9')]?config[_0xb335('0x9')]['callbackURL']:''},function(_0x55976e,_0x2984c3,_0x5e2d91,_0x143e5d){var _0x321c2d,_0x15a7a6;return db[_0xb335('0xf')][_0xb335('0x10')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0xb335('0x11')](function(_0x7e3e87){_0x321c2d=_0x7e3e87;return db[_0xb335('0x12')][_0xb335('0x13')]({'where':{'email':_[_0xb335('0x14')](_0x5e2d91['emails'],_0xb335('0x15')),'role':{'$or':[_0xb335('0x16'),'user',_0xb335('0x17')]}}});})[_0xb335('0x11')](function(_0x1ea5c7){_0x15a7a6=_0x1ea5c7;if(_0x15a7a6){if(_0x15a7a6[_0xb335('0x18')]){return _0x143e5d(_0xb335('0x19'));}else if(_0x321c2d[_0xb335('0x1a')]>0x0){if(_0x15a7a6[_0xb335('0x1b')]){if(moment(_0x15a7a6[_0xb335('0x1c')])['add'](_0x321c2d[_0xb335('0x1a')],'minutes')>moment()){return _0x143e5d(_0xb335('0x19'));}else{return utils[_0xb335('0x1d')](_0x15a7a6,0x0,![],null)[_0xb335('0x11')](function(){return utils[_0xb335('0x1e')](_0x15a7a6);})[_0xb335('0x11')](function(){return _0x143e5d(null,_0x15a7a6);});}}else{return utils[_0xb335('0x1e')](_0x15a7a6)[_0xb335('0x11')](function(){return _0x143e5d(null,_0x15a7a6);});}}else{return utils['getLicense'](_0x15a7a6)[_0xb335('0x11')](function(){return _0x143e5d(null,_0x15a7a6);});}}return _0x143e5d(_0xb335('0x19'));})[_0xb335('0x1f')](function(_0x35bf11){_0x143e5d(_0x35bf11);});}));
\ No newline at end of file
index c36b22c..6675f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a3=['../../components/auth/service','get','login','callback','isMiddleware','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js'];(function(_0x27c7a2,_0x324aa0){var _0x51323d=function(_0x5e4a20){while(--_0x5e4a20){_0x27c7a2['push'](_0x27c7a2['shift']());}};_0x51323d(++_0x324aa0);}(_0xc4a3,0x7f));var _0x3c4a=function(_0x170436,_0x90563c){_0x170436=_0x170436-0x0;var _0x4794d8=_0xc4a3[_0x170436];return _0x4794d8;};'use strict';var express=require(_0x3c4a('0x0'));var passport=require(_0x3c4a('0x1'));var router=express[_0x3c4a('0x2')]();var controller=require(_0x3c4a('0x3'));var userController=require(_0x3c4a('0x4'));var authService=require(_0x3c4a('0x5'));router[_0x3c4a('0x6')]('/',controller[_0x3c4a('0x7')]);router[_0x3c4a('0x6')]('/callback',controller[_0x3c4a('0x8')],authService[_0x3c4a('0x9')],userController[_0x3c4a('0x7')],authService[_0x3c4a('0xa')]);module[_0x3c4a('0xb')]=router;
\ No newline at end of file
+var _0xe1b1=['get','login','/callback','callback','setTokenCookie','exports','passport','Router','../../components/auth/service'];(function(_0x5c3f3c,_0x17bba6){var _0x2dcf7e=function(_0x5261b7){while(--_0x5261b7){_0x5c3f3c['push'](_0x5c3f3c['shift']());}};_0x2dcf7e(++_0x17bba6);}(_0xe1b1,0x138));var _0x1e1b=function(_0x4b3657,_0x179b11){_0x4b3657=_0x4b3657-0x0;var _0x4e353e=_0xe1b1[_0x4b3657];return _0x4e353e;};'use strict';var express=require('express');var passport=require(_0x1e1b('0x0'));var router=express[_0x1e1b('0x1')]();var controller=require('./authGoogle.controller');var userController=require('../user/user.controller.js');var authService=require(_0x1e1b('0x2'));router[_0x1e1b('0x3')]('/',controller[_0x1e1b('0x4')]);router[_0x1e1b('0x3')](_0x1e1b('0x5'),controller[_0x1e1b('0x6')],authService['isMiddleware'],userController[_0x1e1b('0x4')],authService[_0x1e1b('0x7')]);module[_0x1e1b('0x8')]=router;
\ No newline at end of file
index 77a94dd..2638e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde0f=['validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordExpires','save','send','Password\x20reset!','util','Strategy','lodash','randomstring','moment','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','role','blocked','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','add','minutes','clearBlockUser','getLicense','catch','find','email','MailServerOut','Smtp','service','host','secure','authentication','auth','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','status','message','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','body','Email\x20parameter\x20is\x20missing','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','xCally\x20Motion\x20Password\x20Reset','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','User','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xde0f,0x1ab));var _0xfde0=function(_0x3cc5b2,_0x13b7e2){_0x3cc5b2=_0x3cc5b2-0x0;var _0x27a6ad=_0xde0f[_0x3cc5b2];return _0x27a6ad;};'use strict';var util=require(_0xfde0('0x0'));var passport=require('passport');var LocalStrategy=require('passport-local')[_0xfde0('0x1')];var jayson=require('jayson/promise');var _=require(_0xfde0('0x2'));var rs=require(_0xfde0('0x3'));var moment=require(_0xfde0('0x4'));var db=require('../../mysqldb')['db'];var authService=require(_0xfde0('0x5'));var utils=require(_0xfde0('0x6'));var client=jayson[_0xfde0('0x7')][_0xfde0('0x8')]({'port':0x232b});function localAuthenticate(_0x26549d,_0x25eeec,_0x385a86,_0x383429){var _0x3b3859,_0x3f3414;return db[_0xfde0('0x9')][_0xfde0('0xa')]({'where':{'id':0x1},'attributes':[_0xfde0('0xb'),_0xfde0('0xc')],'raw':!![]})[_0xfde0('0xd')](function(_0x1bf06f){_0x3b3859=_0x1bf06f;return _0x26549d[_0xfde0('0xa')]({'attributes':['id',_0xfde0('0xe'),_0xfde0('0xf'),'salt',_0xfde0('0x10'),'disabled',_0xfde0('0x11'),_0xfde0('0x12'),_0xfde0('0x13')],'where':{'name':_0x25eeec,'role':{'$or':[_0xfde0('0x14'),_0xfde0('0x15'),_0xfde0('0x16')]}}});})[_0xfde0('0xd')](function(_0x4a59e0){if(!_0x4a59e0||_0x4a59e0&&_0x4a59e0[_0xfde0('0xe')]!==_0x25eeec){throw new Error(_0xfde0('0x17'));}else{_0x3f3414=_0x4a59e0;return _0x3f3414;}})[_0xfde0('0xd')](function(){_0x3f3414[_0xfde0('0x18')](_0x385a86,function(_0x4fd867,_0x3e3b17){var _0x45661f=_0x3f3414[_0xfde0('0x13')]+0x1;if(_0x4fd867){return _0x383429(_0x4fd867);}else if(!_0x3e3b17){if(_0x3f3414[_0xfde0('0x19')]){return _0x383429(null,![],{'message':_0xfde0('0x17')});}else if(_0x3b3859[_0xfde0('0xb')]>0x0){if(_0x3f3414[_0xfde0('0x11')]){if(_0x3b3859[_0xfde0('0xc')]>0x0){if(moment(_0x3f3414[_0xfde0('0x12')])[_0xfde0('0x1a')](_0x3b3859[_0xfde0('0xc')],_0xfde0('0x1b'))>moment()){return _0x383429(null,![],{'message':_0xfde0('0x17')});}else{return utils['clearBlockUser'](_0x3f3414,_0x45661f,![],null)[_0xfde0('0xd')](function(){return _0x383429(null,![],{'message':_0xfde0('0x17')});});}}else{return _0x383429(null,![],{'message':_0xfde0('0x17')});}}else{if(_0x45661f>=_0x3b3859['allowedLoginAttempts']){return utils[_0xfde0('0x1c')](_0x3f3414,0x0,!![],moment())[_0xfde0('0xd')](function(){return _0x383429(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xfde0('0x1c')](_0x3f3414,_0x45661f,![],null)[_0xfde0('0xd')](function(){return _0x383429(null,![],{'message':_0xfde0('0x17')});});}}}else{return _0x383429(null,![],{'message':_0xfde0('0x17')});}}else{if(_0x3f3414[_0xfde0('0x19')]){return _0x383429(null,![],{'message':_0xfde0('0x17')});}else if(_0x3b3859[_0xfde0('0xb')]>0x0){if(_0x3f3414['blocked']){if(_0x3b3859[_0xfde0('0xc')]>0x0){if(moment(_0x3f3414[_0xfde0('0x12')])[_0xfde0('0x1a')](_0x3b3859[_0xfde0('0xc')],_0xfde0('0x1b'))>moment()){return _0x383429(null,![],{'message':_0xfde0('0x17')});}else{return utils['clearBlockUser'](_0x3f3414,0x0,![],null)[_0xfde0('0xd')](function(){return utils[_0xfde0('0x1d')](_0x3f3414);})[_0xfde0('0xd')](function(){return _0x383429(null,_0x3f3414);});}}else{return _0x383429(null,![],{'message':_0xfde0('0x17')});}}else{return utils[_0xfde0('0x1c')](_0x3f3414,0x0,![],null)[_0xfde0('0xd')](function(){return utils[_0xfde0('0x1d')](_0x3f3414);})[_0xfde0('0xd')](function(){return _0x383429(null,_0x3f3414);})[_0xfde0('0x1e')](function(_0x40fdf5){return _0x383429(null,![],_0x40fdf5);});}}else{if(_0x3f3414['blocked']){return _0x383429(null,![],{'message':_0xfde0('0x17')});}else{return utils['getLicense'](_0x3f3414)[_0xfde0('0xd')](function(){return _0x383429(null,_0x3f3414);});}}}});})[_0xfde0('0x1e')](function(_0x113c7a){return _0x383429(null,![],_0x113c7a);});}function sendServiceMail(_0x1d2e32){return db['MailAccount'][_0xfde0('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xfde0('0xe'),_0xfde0('0x20')],'include':[{'model':db[_0xfde0('0x21')],'as':_0xfde0('0x22')}]})[_0xfde0('0xd')](function(_0x285933){if(!_0x285933){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x1df6f5={'tls':{'rejectUnauthorized':![]}};if(_0x285933[_0xfde0('0x22')][_0xfde0('0x23')]){_0x1df6f5[_0xfde0('0x23')]=_0x285933[_0xfde0('0x22')]['service'];}else{_0x1df6f5[_0xfde0('0x24')]=_0x285933[_0xfde0('0x22')][_0xfde0('0x24')];_0x1df6f5['port']=_0x285933['Smtp']['port'];_0x1df6f5[_0xfde0('0x25')]=_0x285933[_0xfde0('0x22')]['secure'];}if(_0x285933[_0xfde0('0x22')][_0xfde0('0x26')]){_0x1df6f5[_0xfde0('0x27')]={'user':_0x285933[_0xfde0('0x22')]['user'],'pass':_0x285933[_0xfde0('0x22')]['pass']};}var _0x5e5d56={'account':_0x1df6f5,'message':_[_0xfde0('0x28')]({'from':util[_0xfde0('0x29')](_0xfde0('0x2a'),_0x285933[_0xfde0('0xe')],_0x285933['email']||_0x285933['Smtp']['user'])},_0x1d2e32)};return client[_0xfde0('0x2b')](_0xfde0('0x2c'),_0x5e5d56);})[_0xfde0('0xd')](function(_0x1f7dce){if(_0x1f7dce[_0xfde0('0x2d')]){throw new Error(util[_0xfde0('0x29')](_0xfde0('0x2e'),_0x1f7dce['error']['message']||JSON['stringify'](_0x1f7dce[_0xfde0('0x2d')])));}return!![];});}function handleError(_0x346f37,_0x5a3e9f,_0x33ef98){return _0x346f37[_0xfde0('0x2f')](_0x5a3e9f||0x1f4)['send']({'message':_0x33ef98?_0x33ef98[_0xfde0('0x30')]||_0x33ef98:''});}exports[_0xfde0('0x31')]=function(_0x56fd19,_0x40705e,_0x381429){passport['authenticate'](_0xfde0('0x32'),function(_0x4f0916,_0x2de3d8,_0xa4f835){var _0x2e09ac=_0x4f0916||_0xa4f835;if(_0x2e09ac){return handleError(_0x40705e,0x191,_0x2e09ac);}if(!_0x2de3d8){return handleError(_0x40705e,0x194,{'message':_0xfde0('0x33')});}else{var _0x4677bf={'payload':{'id':_0x2de3d8['id'],'role':_0x2de3d8[_0xfde0('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0xfde0('0x34')](_0x4677bf)[_0xfde0('0xd')](function(_0x5b35ee){_0x40705e[_0xfde0('0x35')]({'id':_0x2de3d8['id'],'token':_0x5b35ee,'statusCall':'','isAlreadyLogged':_0x2de3d8[_0xfde0('0x36')]});});}})(_0x56fd19,_0x40705e,_0x381429);};exports['forgot']=function(_0x872b8,_0x32bf92,_0x11db71){if(!_0x872b8[_0xfde0('0x37')][_0xfde0('0x20')]){return handleError(_0x32bf92,0x1f4,{'message':_0xfde0('0x38')});}var _0x5c6c7b=rs['generate']();_0x872b8[_0xfde0('0x37')]['email']=_0x872b8['body'][_0xfde0('0x20')][_0xfde0('0x39')]()[_0xfde0('0x3a')]();var _0x2f0afe;return db[_0xfde0('0x9')][_0xfde0('0xa')]({'where':{'id':0x1},'attributes':[_0xfde0('0xb'),_0xfde0('0xc')],'raw':!![]})[_0xfde0('0xd')](function(_0x36bdc8){_0x2f0afe=_0x36bdc8;return db['User']['find']({'where':{'email':_0x872b8[_0xfde0('0x37')][_0xfde0('0x20')]}});})[_0xfde0('0xd')](function(_0xc69c8a){if(!_0xc69c8a){throw new Error(_0xfde0('0x3b'));}if(_0xc69c8a[_0xfde0('0x19')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0xc69c8a[_0xfde0('0x11')]){if(moment(_0xc69c8a[_0xfde0('0x12')])[_0xfde0('0x1a')](_0x2f0afe[_0xfde0('0xc')],_0xfde0('0x1b'))>moment()){throw new Error(_0xfde0('0x3c'));}else{_0xc69c8a[_0xfde0('0x11')]=![];_0xc69c8a[_0xfde0('0x12')]=null;}}_0xc69c8a[_0xfde0('0x3d')]=_0x5c6c7b;_0xc69c8a['resetPasswordExpires']=Date['now']()+0x36ee80;return _0xc69c8a['save']();})['then'](function(){return sendServiceMail({'to':_0x872b8['body'][_0xfde0('0x20')],'subject':_0xfde0('0x3e'),'text':'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'+_0xfde0('0x3f')+_0x872b8[_0xfde0('0x40')][_0xfde0('0x24')]+_0xfde0('0x41')+_0x5c6c7b+'\x0a\x0a'+_0xfde0('0x42')});})['then'](function(){_0x32bf92[_0xfde0('0x2f')](0xc8)['send']({'message':_0xfde0('0x43')});})[_0xfde0('0x1e')](function(_0x28e2b3){return handleError(_0x32bf92,0x1f4,_0x28e2b3);});};exports[_0xfde0('0x44')]=function(_0x3c3168,_0x3f7a31,_0x1e671c){return db[_0xfde0('0x45')][_0xfde0('0x1f')]({'where':{'resetPasswordToken':_0x3c3168[_0xfde0('0x46')][_0xfde0('0x47')],'resetPasswordExpires':{'$gt':Date[_0xfde0('0x48')]()}}})[_0xfde0('0xd')](function(_0x13e5c3){if(!_0x13e5c3){throw new Error(_0xfde0('0x49'));}return db[_0xfde0('0x9')][_0xfde0('0xa')]({'attributes':['id',_0xfde0('0x4a'),_0xfde0('0x4b'),_0xfde0('0x4c')]})[_0xfde0('0xd')](function(_0xef843c){if(_0xef843c[_0xfde0('0x4a')])authService[_0xfde0('0x4d')](_0x3c3168[_0xfde0('0x37')][_0xfde0('0xf')]);if(!_0xef843c['enforcePasswordHistory']||!_0x13e5c3[_0xfde0('0x4e')])return _0x13e5c3;authService[_0xfde0('0x4f')](_0x3c3168['body'][_0xfde0('0xf')],_0x13e5c3[_0xfde0('0x4e')],_0xef843c['passwordHistoryLimit']);return _0x13e5c3;})[_0xfde0('0xd')](function(){_0x13e5c3[_0xfde0('0xf')]=_0x3c3168[_0xfde0('0x37')][_0xfde0('0xf')];_0x13e5c3[_0xfde0('0x3d')]=null;_0x13e5c3[_0xfde0('0x50')]=null;return _0x13e5c3[_0xfde0('0x51')]();});})[_0xfde0('0xd')](function(){_0x3f7a31[_0xfde0('0x2f')](0xc8)[_0xfde0('0x52')]({'message':_0xfde0('0x53')});})[_0xfde0('0x1e')](function(_0x28e3e1){return handleError(_0x3f7a31,0x1f4,_0x28e3e1);});};passport['use'](new LocalStrategy({'usernameField':_0xfde0('0xe'),'passwordField':_0xfde0('0xf')},function(_0x2da49a,_0x39f056,_0x367a2c){return localAuthenticate(db['User'],_0x2da49a,_0x39f056,_0x367a2c);}));
\ No newline at end of file
+var _0x1689=['SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','send','message','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','find','This\x20email\x20is\x20not\x20registered.','blockedAt','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','headers','host','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','User','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','previousPasswords','resetPasswordToken','Password\x20reset!','passport-local','Strategy','jayson/promise','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','then','findOne','name','password','salt','role','disabled','blocked','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','blockDuration','minutes','clearBlockUser','allowedLoginAttempts','add','getLicense','catch','MailAccount','email','MailServerOut','Smtp','service','authentication','auth','pass','request','error'];(function(_0x5f1b74,_0x498562){var _0x1fb5a0=function(_0x51341c){while(--_0x51341c){_0x5f1b74['push'](_0x5f1b74['shift']());}};_0x1fb5a0(++_0x498562);}(_0x1689,0x19a));var _0x9168=function(_0xe12b37,_0x41db12){_0xe12b37=_0xe12b37-0x0;var _0x5bee7b=_0x1689[_0xe12b37];return _0x5bee7b;};'use strict';var util=require('util');var passport=require('passport');var LocalStrategy=require(_0x9168('0x0'))[_0x9168('0x1')];var jayson=require(_0x9168('0x2'));var _=require('lodash');var rs=require('randomstring');var moment=require('moment');var db=require(_0x9168('0x3'))['db'];var authService=require(_0x9168('0x4'));var utils=require(_0x9168('0x5'));var client=jayson[_0x9168('0x6')][_0x9168('0x7')]({'port':0x232b});function localAuthenticate(_0x5ed682,_0x4880a7,_0x2c1ffc,_0x1bcd5){var _0x4c6b38,_0xa9a56a;return db[_0x9168('0x8')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0x9168('0x9')](function(_0xb4b6b0){_0x4c6b38=_0xb4b6b0;return _0x5ed682[_0x9168('0xa')]({'attributes':['id',_0x9168('0xb'),_0x9168('0xc'),_0x9168('0xd'),_0x9168('0xe'),_0x9168('0xf'),_0x9168('0x10'),'blockedAt',_0x9168('0x11')],'where':{'name':_0x4880a7,'role':{'$or':[_0x9168('0x12'),_0x9168('0x13'),_0x9168('0x14')]}}});})[_0x9168('0x9')](function(_0x215f1b){if(!_0x215f1b||_0x215f1b&&_0x215f1b[_0x9168('0xb')]!==_0x4880a7){throw new Error(_0x9168('0x15'));}else{_0xa9a56a=_0x215f1b;return _0xa9a56a;}})[_0x9168('0x9')](function(){_0xa9a56a[_0x9168('0x16')](_0x2c1ffc,function(_0x231529,_0x2bf469){var _0x1d15df=_0xa9a56a[_0x9168('0x11')]+0x1;if(_0x231529){return _0x1bcd5(_0x231529);}else if(!_0x2bf469){if(_0xa9a56a['disabled']){return _0x1bcd5(null,![],{'message':_0x9168('0x15')});}else if(_0x4c6b38['allowedLoginAttempts']>0x0){if(_0xa9a56a['blocked']){if(_0x4c6b38[_0x9168('0x17')]>0x0){if(moment(_0xa9a56a['blockedAt'])['add'](_0x4c6b38['blockDuration'],_0x9168('0x18'))>moment()){return _0x1bcd5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x9168('0x19')](_0xa9a56a,_0x1d15df,![],null)[_0x9168('0x9')](function(){return _0x1bcd5(null,![],{'message':_0x9168('0x15')});});}}else{return _0x1bcd5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x1d15df>=_0x4c6b38['allowedLoginAttempts']){return utils['clearBlockUser'](_0xa9a56a,0x0,!![],moment())['then'](function(){return _0x1bcd5(null,![],{'message':_0x9168('0x15')});});}else{return utils['clearBlockUser'](_0xa9a56a,_0x1d15df,![],null)['then'](function(){return _0x1bcd5(null,![],{'message':_0x9168('0x15')});});}}}else{return _0x1bcd5(null,![],{'message':_0x9168('0x15')});}}else{if(_0xa9a56a['disabled']){return _0x1bcd5(null,![],{'message':_0x9168('0x15')});}else if(_0x4c6b38[_0x9168('0x1a')]>0x0){if(_0xa9a56a[_0x9168('0x10')]){if(_0x4c6b38[_0x9168('0x17')]>0x0){if(moment(_0xa9a56a['blockedAt'])[_0x9168('0x1b')](_0x4c6b38[_0x9168('0x17')],_0x9168('0x18'))>moment()){return _0x1bcd5(null,![],{'message':_0x9168('0x15')});}else{return utils['clearBlockUser'](_0xa9a56a,0x0,![],null)[_0x9168('0x9')](function(){return utils['getLicense'](_0xa9a56a);})[_0x9168('0x9')](function(){return _0x1bcd5(null,_0xa9a56a);});}}else{return _0x1bcd5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x9168('0x19')](_0xa9a56a,0x0,![],null)['then'](function(){return utils[_0x9168('0x1c')](_0xa9a56a);})[_0x9168('0x9')](function(){return _0x1bcd5(null,_0xa9a56a);})[_0x9168('0x1d')](function(_0x219c95){return _0x1bcd5(null,![],_0x219c95);});}}else{if(_0xa9a56a[_0x9168('0x10')]){return _0x1bcd5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x9168('0x1c')](_0xa9a56a)[_0x9168('0x9')](function(){return _0x1bcd5(null,_0xa9a56a);});}}}});})['catch'](function(_0x4406ec){return _0x1bcd5(null,![],_0x4406ec);});}function sendServiceMail(_0x4555fa){return db[_0x9168('0x1e')]['find']({'where':{'service':!![]},'attributes':['id',_0x9168('0xb'),_0x9168('0x1f')],'include':[{'model':db[_0x9168('0x20')],'as':'Smtp'}]})[_0x9168('0x9')](function(_0x1a8478){if(!_0x1a8478){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x5dd029={'tls':{'rejectUnauthorized':![]}};if(_0x1a8478[_0x9168('0x21')]['service']){_0x5dd029['service']=_0x1a8478['Smtp'][_0x9168('0x22')];}else{_0x5dd029['host']=_0x1a8478[_0x9168('0x21')]['host'];_0x5dd029['port']=_0x1a8478[_0x9168('0x21')]['port'];_0x5dd029['secure']=_0x1a8478[_0x9168('0x21')]['secure'];}if(_0x1a8478[_0x9168('0x21')][_0x9168('0x23')]){_0x5dd029[_0x9168('0x24')]={'user':_0x1a8478[_0x9168('0x21')][_0x9168('0x13')],'pass':_0x1a8478[_0x9168('0x21')][_0x9168('0x25')]};}var _0x459a9e={'account':_0x5dd029,'message':_['merge']({'from':util['format']('\x22%s\x22\x20<%s>',_0x1a8478[_0x9168('0xb')],_0x1a8478[_0x9168('0x1f')]||_0x1a8478[_0x9168('0x21')][_0x9168('0x13')])},_0x4555fa)};return client[_0x9168('0x26')]('SendMail',_0x459a9e);})['then'](function(_0x144364){if(_0x144364[_0x9168('0x27')]){throw new Error(util['format'](_0x9168('0x28'),_0x144364[_0x9168('0x27')]['message']||JSON['stringify'](_0x144364[_0x9168('0x27')])));}return!![];});}function handleError(_0x35b4e1,_0x43a154,_0x570588){return _0x35b4e1['status'](_0x43a154||0x1f4)[_0x9168('0x29')]({'message':_0x570588?_0x570588[_0x9168('0x2a')]||_0x570588:''});}exports['login']=function(_0x2fbcbe,_0x40b413,_0x323f25){passport['authenticate']('local',function(_0x2daf41,_0x202b6b,_0x4b432a){var _0x3bd612=_0x2daf41||_0x4b432a;if(_0x3bd612){return handleError(_0x40b413,0x191,_0x3bd612);}if(!_0x202b6b){return handleError(_0x40b413,0x194,{'message':_0x9168('0x2b')});}else{var _0x20abcf={'payload':{'id':_0x202b6b['id'],'role':_0x202b6b[_0x9168('0xe')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x20abcf)[_0x9168('0x9')](function(_0x15c758){_0x40b413[_0x9168('0x2c')]({'id':_0x202b6b['id'],'token':_0x15c758,'statusCall':'','isAlreadyLogged':_0x202b6b[_0x9168('0x2d')]});});}})(_0x2fbcbe,_0x40b413,_0x323f25);};exports[_0x9168('0x2e')]=function(_0xf6eaf8,_0xabeeea,_0xf1496e){if(!_0xf6eaf8[_0x9168('0x2f')][_0x9168('0x1f')]){return handleError(_0xabeeea,0x1f4,{'message':_0x9168('0x30')});}var _0x48252b=rs[_0x9168('0x31')]();_0xf6eaf8[_0x9168('0x2f')][_0x9168('0x1f')]=_0xf6eaf8[_0x9168('0x2f')][_0x9168('0x1f')][_0x9168('0x32')]()['toLowerCase']();var _0x14933f;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0x9168('0x1a'),_0x9168('0x17')],'raw':!![]})[_0x9168('0x9')](function(_0x25d1dd){_0x14933f=_0x25d1dd;return db['User'][_0x9168('0x33')]({'where':{'email':_0xf6eaf8['body'][_0x9168('0x1f')]}});})['then'](function(_0x452e13){if(!_0x452e13){throw new Error(_0x9168('0x34'));}if(_0x452e13[_0x9168('0xf')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x452e13[_0x9168('0x10')]){if(moment(_0x452e13[_0x9168('0x35')])[_0x9168('0x1b')](_0x14933f[_0x9168('0x17')],'minutes')>moment()){throw new Error(_0x9168('0x36'));}else{_0x452e13[_0x9168('0x10')]=![];_0x452e13[_0x9168('0x35')]=null;}}_0x452e13['resetPasswordToken']=_0x48252b;_0x452e13[_0x9168('0x37')]=Date['now']()+0x36ee80;return _0x452e13['save']();})[_0x9168('0x9')](function(){return sendServiceMail({'to':_0xf6eaf8['body'][_0x9168('0x1f')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0x9168('0x38')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x9168('0x39')+_0xf6eaf8[_0x9168('0x3a')][_0x9168('0x3b')]+'/reset/'+_0x48252b+'\x0a\x0a'+_0x9168('0x3c')});})[_0x9168('0x9')](function(){_0xabeeea['status'](0xc8)[_0x9168('0x29')]({'message':_0x9168('0x3d')});})[_0x9168('0x1d')](function(_0x4c83f1){return handleError(_0xabeeea,0x1f4,_0x4c83f1);});};exports[_0x9168('0x3e')]=function(_0x3c91a4,_0x55b548,_0x250488){return db[_0x9168('0x3f')][_0x9168('0x33')]({'where':{'resetPasswordToken':_0x3c91a4['params'][_0x9168('0x40')],'resetPasswordExpires':{'$gt':Date[_0x9168('0x41')]()}}})['then'](function(_0x3cfa8a){if(!_0x3cfa8a){throw new Error(_0x9168('0x42'));}return db[_0x9168('0x8')][_0x9168('0xa')]({'attributes':['id',_0x9168('0x43'),_0x9168('0x44'),_0x9168('0x45')]})[_0x9168('0x9')](function(_0x1c9e8a){if(_0x1c9e8a[_0x9168('0x43')])authService[_0x9168('0x46')](_0x3c91a4[_0x9168('0x2f')][_0x9168('0xc')]);if(!_0x1c9e8a['enforcePasswordHistory']||!_0x3cfa8a['previousPasswords'])return _0x3cfa8a;authService[_0x9168('0x47')](_0x3c91a4['body'][_0x9168('0xc')],_0x3cfa8a[_0x9168('0x48')],_0x1c9e8a[_0x9168('0x45')]);return _0x3cfa8a;})[_0x9168('0x9')](function(){_0x3cfa8a[_0x9168('0xc')]=_0x3c91a4[_0x9168('0x2f')][_0x9168('0xc')];_0x3cfa8a[_0x9168('0x49')]=null;_0x3cfa8a[_0x9168('0x37')]=null;return _0x3cfa8a['save']();});})[_0x9168('0x9')](function(){_0x55b548['status'](0xc8)[_0x9168('0x29')]({'message':_0x9168('0x4a')});})[_0x9168('0x1d')](function(_0x4965a3){return handleError(_0x55b548,0x1f4,_0x4965a3);});};passport['use'](new LocalStrategy({'usernameField':_0x9168('0xb'),'passwordField':_0x9168('0xc')},function(_0x178418,_0x1d6af2,_0x23002b){return localAuthenticate(db[_0x9168('0x3f')],_0x178418,_0x1d6af2,_0x23002b);}));
\ No newline at end of file
index b9eb655..0c23c1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09d8=['/reset/:token','reset','exports','express','Router','post','/forgot','forgot'];(function(_0x4ac60a,_0x503a99){var _0x4b22e8=function(_0x145c47){while(--_0x145c47){_0x4ac60a['push'](_0x4ac60a['shift']());}};_0x4b22e8(++_0x503a99);}(_0x09d8,0xd3));var _0x809d=function(_0x9c1f48,_0x25da55){_0x9c1f48=_0x9c1f48-0x0;var _0x52ecd4=_0x09d8[_0x9c1f48];return _0x52ecd4;};'use strict';var express=require(_0x809d('0x0'));var router=express[_0x809d('0x1')]();var controller=require('./authLocal.controller');router[_0x809d('0x2')]('/',controller['login']);router[_0x809d('0x2')](_0x809d('0x3'),controller[_0x809d('0x4')]);router[_0x809d('0x2')](_0x809d('0x5'),controller[_0x809d('0x6')]);module[_0x809d('0x7')]=router;
\ No newline at end of file
+var _0xddf0=['post','forgot','reset','exports','express','login'];(function(_0x125078,_0x100f95){var _0x287f8f=function(_0x92f0e7){while(--_0x92f0e7){_0x125078['push'](_0x125078['shift']());}};_0x287f8f(++_0x100f95);}(_0xddf0,0x1b4));var _0x0ddf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xddf0[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x0ddf('0x0'));var router=express['Router']();var controller=require('./authLocal.controller');router['post']('/',controller[_0x0ddf('0x1')]);router[_0x0ddf('0x2')]('/forgot',controller[_0x0ddf('0x3')]);router['post']('/reset/:token',controller[_0x0ddf('0x4')]);module[_0x0ddf('0x5')]=router;
\ No newline at end of file
index c04eb39..ceca1a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d7=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x173113,_0x316a7c){var _0x3bea89=function(_0xd33ac1){while(--_0xd33ac1){_0x173113['push'](_0x173113['shift']());}};_0x3bea89(++_0x316a7c);}(_0x69d7,0x1d7));var _0x769d=function(_0xa0b384,_0x4752ff){_0xa0b384=_0xa0b384-0x0;var _0x1707ec=_0x69d7[_0xa0b384];return _0x1707ec;};'use strict';var Sequelize=require(_0x769d('0x0'));module[_0x769d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0x769d('0x2')]},'description':{'type':Sequelize[_0x769d('0x2')]},'status':{'type':Sequelize[_0x769d('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x769d('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x8661=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x34f373,_0x1e061a){var _0x2f707b=function(_0x1ad8a8){while(--_0x1ad8a8){_0x34f373['push'](_0x34f373['shift']());}};_0x2f707b(++_0x1e061a);}(_0x8661,0x75));var _0x1866=function(_0x1f7224,_0xe9b955){_0x1f7224=_0x1f7224-0x0;var _0x1ee373=_0x8661[_0x1f7224];return _0x1ee373;};'use strict';var Sequelize=require(_0x1866('0x0'));module[_0x1866('0x1')]={'name':{'type':Sequelize[_0x1866('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x1866('0x2')]},'description':{'type':Sequelize[_0x1866('0x2')]},'status':{'type':Sequelize[_0x1866('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1866('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 51c4a4a..445b86a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd814=['destroy','error','stack','name','send','index','map','Automation','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','addConditions','Condition','length','order','options','getConditions','Action','addActions','ids','getActions','findOne','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then'];(function(_0x158e3b,_0x4534b){var _0x551a1d=function(_0x629c21){while(--_0x629c21){_0x158e3b['push'](_0x158e3b['shift']());}};_0x551a1d(++_0x4534b);}(_0xd814,0x84));var _0x4d81=function(_0x312e1d,_0x5922d6){_0x312e1d=_0x312e1d-0x0;var _0x59cf15=_0xd814[_0x312e1d];return _0x59cf15;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4d81('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d81('0x1'));var rp=require(_0x4d81('0x2'));var moment=require(_0x4d81('0x3'));var BPromise=require(_0x4d81('0x4'));var Mustache=require(_0x4d81('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4d81('0x6'));var ejs=require(_0x4d81('0x7'));var fs=require('fs');var fs_extra=require(_0x4d81('0x8'));var _=require(_0x4d81('0x9'));var squel=require('squel');var crypto=require(_0x4d81('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4d81('0xb'));var toCsv=require(_0x4d81('0x6'));var querystring=require('querystring');var Papa=require(_0x4d81('0xc'));var Redis=require(_0x4d81('0xd'));var authService=require(_0x4d81('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d81('0xf'));var logger=require(_0x4d81('0x10'))(_0x4d81('0x11'));var utils=require(_0x4d81('0x12'));var config=require(_0x4d81('0x13'));var licenseUtil=require(_0x4d81('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c38a9,_0x4a6fa1){_0x4a6fa1=_0x4a6fa1||0xcc;return function(_0x530590){if(_0x530590){return _0x4c38a9[_0x4d81('0x15')](_0x4a6fa1);}return _0x4c38a9[_0x4d81('0x16')](_0x4a6fa1)[_0x4d81('0x17')]();};}function respondWithResult(_0x158799,_0x50002f){_0x50002f=_0x50002f||0xc8;return function(_0x44a902){if(_0x44a902){return _0x158799[_0x4d81('0x16')](_0x50002f)[_0x4d81('0x18')](_0x44a902);}};}function respondWithFilteredResult(_0x21176d,_0x570020){return function(_0x1f2e81){if(_0x1f2e81){var _0x1094fc=typeof _0x570020['offset']===_0x4d81('0x19')&&typeof _0x570020[_0x4d81('0x1a')]===_0x4d81('0x19');var _0x5a9bbe=_0x1f2e81[_0x4d81('0x1b')];var _0x36106a=_0x1094fc?0x0:_0x570020[_0x4d81('0x1c')];var _0x323949=_0x1094fc?_0x1f2e81['count']:_0x570020['offset']+_0x570020[_0x4d81('0x1a')];var _0x3f2f4e;if(_0x323949>=_0x5a9bbe){_0x323949=_0x5a9bbe;_0x3f2f4e=0xc8;}else{_0x3f2f4e=0xce;}_0x21176d['status'](_0x3f2f4e);return _0x21176d[_0x4d81('0x1d')](_0x4d81('0x1e'),_0x36106a+'-'+_0x323949+'/'+_0x5a9bbe)['json'](_0x1f2e81);}return null;};}function patchUpdates(_0xde01bd){return function(_0x200081){try{jsonpatch[_0x4d81('0x1f')](_0x200081,_0xde01bd,!![]);}catch(_0x43a6a7){return BPromise[_0x4d81('0x20')](_0x43a6a7);}return _0x200081[_0x4d81('0x21')]();};}function saveUpdates(_0x3d665e,_0x486e46){return function(_0x18ba33){if(_0x18ba33){return _0x18ba33[_0x4d81('0x22')](_0x3d665e)[_0x4d81('0x23')](function(_0x324a47){return _0x324a47;});}return null;};}function removeEntity(_0x4805d3,_0x5b30a0){return function(_0x2c04e3){if(_0x2c04e3){return _0x2c04e3[_0x4d81('0x24')]()['then'](function(){_0x4805d3['status'](0xcc)[_0x4d81('0x17')]();});}};}function handleEntityNotFound(_0x12248d,_0x2c8640){return function(_0x5df5d9){if(!_0x5df5d9){_0x12248d[_0x4d81('0x15')](0x194);}return _0x5df5d9;};}function handleError(_0x1f043d,_0x3be0dd){_0x3be0dd=_0x3be0dd||0x1f4;return function(_0xc237c2){logger[_0x4d81('0x25')](_0xc237c2[_0x4d81('0x26')]);if(_0xc237c2['name']){delete _0xc237c2[_0x4d81('0x27')];}_0x1f043d['status'](_0x3be0dd)[_0x4d81('0x28')](_0xc237c2);};}exports[_0x4d81('0x29')]=function(_0x4dfa2d,_0x41bc6b){var _0x505294={},_0x2f28fa={},_0x33d947={'count':0x0,'rows':[]};var _0x4c966e=_[_0x4d81('0x2a')](db[_0x4d81('0x2b')][_0x4d81('0x2c')],function(_0x54453c){return{'name':_0x54453c[_0x4d81('0x2d')],'type':_0x54453c[_0x4d81('0x2e')][_0x4d81('0x2f')]};});_0x2f28fa[_0x4d81('0x30')]=_['map'](_0x4c966e,'name');_0x2f28fa['query']=_['keys'](_0x4dfa2d[_0x4d81('0x31')]);_0x2f28fa[_0x4d81('0x32')]=_[_0x4d81('0x33')](_0x2f28fa['model'],_0x2f28fa['query']);_0x505294[_0x4d81('0x34')]=_['intersection'](_0x2f28fa[_0x4d81('0x30')],qs[_0x4d81('0x35')](_0x4dfa2d[_0x4d81('0x31')][_0x4d81('0x35')]));_0x505294[_0x4d81('0x34')]=_0x505294[_0x4d81('0x34')]['length']?_0x505294[_0x4d81('0x34')]:_0x2f28fa[_0x4d81('0x30')];if(!_0x4dfa2d[_0x4d81('0x31')][_0x4d81('0x36')](_0x4d81('0x37'))){_0x505294[_0x4d81('0x1a')]=qs[_0x4d81('0x1a')](_0x4dfa2d['query'][_0x4d81('0x1a')]);_0x505294[_0x4d81('0x1c')]=qs[_0x4d81('0x1c')](_0x4dfa2d[_0x4d81('0x31')]['offset']);}_0x505294['order']=qs[_0x4d81('0x38')](_0x4dfa2d[_0x4d81('0x31')][_0x4d81('0x38')]);_0x505294[_0x4d81('0x39')]=qs[_0x4d81('0x32')](_[_0x4d81('0x3a')](_0x4dfa2d['query'],_0x2f28fa[_0x4d81('0x32')]),_0x4c966e);if(_0x4dfa2d[_0x4d81('0x31')][_0x4d81('0x3b')]){_0x505294[_0x4d81('0x39')]=_[_0x4d81('0x3c')](_0x505294[_0x4d81('0x39')],{'$or':_[_0x4d81('0x2a')](_0x4c966e,function(_0x5162af){if(_0x5162af[_0x4d81('0x2e')]!==_0x4d81('0x3d')){var _0xc3acf4={};_0xc3acf4[_0x5162af[_0x4d81('0x27')]]={'$like':'%'+_0x4dfa2d[_0x4d81('0x31')][_0x4d81('0x3b')]+'%'};return _0xc3acf4;}})});}_0x505294=_[_0x4d81('0x3c')]({},_0x505294,_0x4dfa2d['options']);var _0x42aa60={'where':_0x505294[_0x4d81('0x39')]};return db[_0x4d81('0x2b')]['count'](_0x42aa60)[_0x4d81('0x23')](function(_0x5b9025){_0x33d947[_0x4d81('0x1b')]=_0x5b9025;if(_0x4dfa2d['query'][_0x4d81('0x3e')]){_0x505294[_0x4d81('0x3f')]=[{'all':!![]}];}return db['Automation'][_0x4d81('0x40')](_0x505294);})[_0x4d81('0x23')](function(_0xa31145){_0x33d947[_0x4d81('0x41')]=_0xa31145;return _0x33d947;})['then'](respondWithFilteredResult(_0x41bc6b,_0x505294))[_0x4d81('0x42')](handleError(_0x41bc6b,null));};exports[_0x4d81('0x43')]=function(_0x1a8ce6,_0x2a29ef){var _0x1af17d={'raw':![],'where':{'id':_0x1a8ce6[_0x4d81('0x44')]['id']}},_0xcb0e50={};_0xcb0e50[_0x4d81('0x30')]=_[_0x4d81('0x45')](db[_0x4d81('0x2b')]['rawAttributes']);_0xcb0e50[_0x4d81('0x31')]=_['keys'](_0x1a8ce6[_0x4d81('0x31')]);_0xcb0e50[_0x4d81('0x32')]=_[_0x4d81('0x33')](_0xcb0e50['model'],_0xcb0e50['query']);_0x1af17d['attributes']=_[_0x4d81('0x33')](_0xcb0e50['model'],qs[_0x4d81('0x35')](_0x1a8ce6[_0x4d81('0x31')][_0x4d81('0x35')]));_0x1af17d[_0x4d81('0x34')]=_0x1af17d['attributes']['length']?_0x1af17d[_0x4d81('0x34')]:_0xcb0e50[_0x4d81('0x30')];if(_0x1a8ce6[_0x4d81('0x31')][_0x4d81('0x3e')]){_0x1af17d[_0x4d81('0x3f')]=[{'all':!![]}];}_0x1af17d=_[_0x4d81('0x3c')]({},_0x1af17d,_0x1a8ce6['options']);return db[_0x4d81('0x2b')][_0x4d81('0x46')](_0x1af17d)['then'](handleEntityNotFound(_0x2a29ef,null))[_0x4d81('0x23')](respondWithResult(_0x2a29ef,null))[_0x4d81('0x42')](handleError(_0x2a29ef,null));};exports[_0x4d81('0x47')]=function(_0x1980ad,_0x5e08cd){return db[_0x4d81('0x2b')][_0x4d81('0x47')](_0x1980ad[_0x4d81('0x48')],{})['then'](respondWithResult(_0x5e08cd,0xc9))['catch'](handleError(_0x5e08cd,null));};exports[_0x4d81('0x22')]=function(_0x3a9318,_0x29c00e){if(_0x3a9318['body']['id']){delete _0x3a9318[_0x4d81('0x48')]['id'];}return db[_0x4d81('0x2b')]['find']({'where':{'id':_0x3a9318[_0x4d81('0x44')]['id']}})[_0x4d81('0x23')](handleEntityNotFound(_0x29c00e,null))['then'](saveUpdates(_0x3a9318['body'],null))[_0x4d81('0x23')](respondWithResult(_0x29c00e,null))['catch'](handleError(_0x29c00e,null));};exports[_0x4d81('0x24')]=function(_0x4f78dd,_0x10871e){return db[_0x4d81('0x2b')]['find']({'where':{'id':_0x4f78dd[_0x4d81('0x44')]['id']}})[_0x4d81('0x23')](handleEntityNotFound(_0x10871e,null))[_0x4d81('0x23')](removeEntity(_0x10871e,null))[_0x4d81('0x42')](handleError(_0x10871e,null));};exports[_0x4d81('0x49')]=function(_0x5b3de3,_0x2faaf5,_0x1a4d8f){return db[_0x4d81('0x4a')]['find']({'where':{'id':_0x5b3de3[_0x4d81('0x44')]['id']}})['then'](handleEntityNotFound(_0x2faaf5,null))[_0x4d81('0x23')](function(_0x8bb792){if(_0x8bb792){return _0x8bb792['addConditions'](_0x5b3de3[_0x4d81('0x48')]['ids'],_['omit'](_0x5b3de3[_0x4d81('0x48')],['ids','id'])||{});}})[_0x4d81('0x23')](respondWithResult(_0x2faaf5,null))[_0x4d81('0x42')](handleError(_0x2faaf5,null));};exports['getConditions']=function(_0x3d9d03,_0x5ec0a6,_0x2acba1){var _0x3c5b5b={};var _0x425bec={};var _0x5abb20;var _0x4877ef;return db[_0x4d81('0x2b')]['findOne']({'where':{'id':_0x3d9d03[_0x4d81('0x44')]['id']}})[_0x4d81('0x23')](handleEntityNotFound(_0x5ec0a6,null))[_0x4d81('0x23')](function(_0x2e1143){if(_0x2e1143){_0x5abb20=_0x2e1143;_0x425bec['model']=_[_0x4d81('0x45')](db[_0x4d81('0x4a')][_0x4d81('0x2c')]);_0x425bec[_0x4d81('0x31')]=_['keys'](_0x3d9d03[_0x4d81('0x31')]);_0x425bec[_0x4d81('0x32')]=_['intersection'](_0x425bec[_0x4d81('0x30')],_0x425bec[_0x4d81('0x31')]);_0x3c5b5b['attributes']=_[_0x4d81('0x33')](_0x425bec[_0x4d81('0x30')],qs[_0x4d81('0x35')](_0x3d9d03['query'][_0x4d81('0x35')]));_0x3c5b5b[_0x4d81('0x34')]=_0x3c5b5b[_0x4d81('0x34')][_0x4d81('0x4b')]?_0x3c5b5b[_0x4d81('0x34')]:_0x425bec[_0x4d81('0x30')];_0x3c5b5b[_0x4d81('0x4c')]=qs[_0x4d81('0x38')](_0x3d9d03[_0x4d81('0x31')][_0x4d81('0x38')]);_0x3c5b5b[_0x4d81('0x39')]=qs[_0x4d81('0x32')](_[_0x4d81('0x3a')](_0x3d9d03['query'],_0x425bec[_0x4d81('0x32')]));if(_0x3d9d03['query'][_0x4d81('0x3b')]){_0x3c5b5b[_0x4d81('0x39')]=_[_0x4d81('0x3c')](_0x3c5b5b[_0x4d81('0x39')],{'$or':_[_0x4d81('0x2a')](_0x3c5b5b['attributes'],function(_0x895169){var _0x40e3bd={};_0x40e3bd[_0x895169]={'$like':'%'+_0x3d9d03[_0x4d81('0x31')][_0x4d81('0x3b')]+'%'};return _0x40e3bd;})});}_0x3c5b5b=_[_0x4d81('0x3c')]({},_0x3c5b5b,_0x3d9d03[_0x4d81('0x4d')]);return _0x5abb20[_0x4d81('0x4e')](_0x3c5b5b);}})[_0x4d81('0x23')](function(_0x197224){if(_0x197224){_0x4877ef=_0x197224[_0x4d81('0x4b')];if(!_0x3d9d03[_0x4d81('0x31')][_0x4d81('0x36')](_0x4d81('0x37'))){_0x3c5b5b[_0x4d81('0x1a')]=qs[_0x4d81('0x1a')](_0x3d9d03[_0x4d81('0x31')]['limit']);_0x3c5b5b[_0x4d81('0x1c')]=qs[_0x4d81('0x1c')](_0x3d9d03['query']['offset']);}return _0x5abb20[_0x4d81('0x4e')](_0x3c5b5b);}})[_0x4d81('0x23')](function(_0x526480){if(_0x526480){return _0x526480?{'count':_0x4877ef,'rows':_0x526480}:null;}})['then'](respondWithResult(_0x5ec0a6,null))[_0x4d81('0x42')](handleError(_0x5ec0a6,null));};exports['addActions']=function(_0x48005a,_0x18d294,_0x5b7391){return db[_0x4d81('0x4f')][_0x4d81('0x46')]({'where':{'id':_0x48005a[_0x4d81('0x44')]['id']}})['then'](handleEntityNotFound(_0x18d294,null))[_0x4d81('0x23')](function(_0x22b5cb){if(_0x22b5cb){return _0x22b5cb[_0x4d81('0x50')](_0x48005a[_0x4d81('0x48')]['ids'],_['omit'](_0x48005a[_0x4d81('0x48')],[_0x4d81('0x51'),'id'])||{});}})[_0x4d81('0x23')](respondWithResult(_0x18d294,null))[_0x4d81('0x42')](handleError(_0x18d294,null));};exports[_0x4d81('0x52')]=function(_0x14de9a,_0x24a21f,_0x54ef3d){var _0x5a39b1={};var _0x21f139={};var _0x17a356;var _0x2df05f;return db[_0x4d81('0x2b')][_0x4d81('0x53')]({'where':{'id':_0x14de9a[_0x4d81('0x44')]['id']}})[_0x4d81('0x23')](handleEntityNotFound(_0x24a21f,null))[_0x4d81('0x23')](function(_0x1b9e1d){if(_0x1b9e1d){_0x17a356=_0x1b9e1d;_0x21f139['model']=_[_0x4d81('0x45')](db[_0x4d81('0x4f')][_0x4d81('0x2c')]);_0x21f139[_0x4d81('0x31')]=_[_0x4d81('0x45')](_0x14de9a[_0x4d81('0x31')]);_0x21f139[_0x4d81('0x32')]=_[_0x4d81('0x33')](_0x21f139[_0x4d81('0x30')],_0x21f139[_0x4d81('0x31')]);_0x5a39b1[_0x4d81('0x34')]=_['intersection'](_0x21f139['model'],qs['fields'](_0x14de9a[_0x4d81('0x31')]['fields']));_0x5a39b1[_0x4d81('0x34')]=_0x5a39b1[_0x4d81('0x34')][_0x4d81('0x4b')]?_0x5a39b1[_0x4d81('0x34')]:_0x21f139['model'];_0x5a39b1[_0x4d81('0x4c')]=qs['sort'](_0x14de9a[_0x4d81('0x31')]['sort']);_0x5a39b1[_0x4d81('0x39')]=qs[_0x4d81('0x32')](_[_0x4d81('0x3a')](_0x14de9a['query'],_0x21f139[_0x4d81('0x32')]));if(_0x14de9a[_0x4d81('0x31')][_0x4d81('0x3b')]){_0x5a39b1[_0x4d81('0x39')]=_[_0x4d81('0x3c')](_0x5a39b1[_0x4d81('0x39')],{'$or':_[_0x4d81('0x2a')](_0x5a39b1['attributes'],function(_0x1e4e56){var _0x5af5c4={};_0x5af5c4[_0x1e4e56]={'$like':'%'+_0x14de9a['query'][_0x4d81('0x3b')]+'%'};return _0x5af5c4;})});}_0x5a39b1=_[_0x4d81('0x3c')]({},_0x5a39b1,_0x14de9a[_0x4d81('0x4d')]);return _0x17a356['getActions'](_0x5a39b1);}})['then'](function(_0x55436e){if(_0x55436e){_0x2df05f=_0x55436e[_0x4d81('0x4b')];if(!_0x14de9a[_0x4d81('0x31')][_0x4d81('0x36')](_0x4d81('0x37'))){_0x5a39b1['limit']=qs[_0x4d81('0x1a')](_0x14de9a['query'][_0x4d81('0x1a')]);_0x5a39b1[_0x4d81('0x1c')]=qs[_0x4d81('0x1c')](_0x14de9a[_0x4d81('0x31')][_0x4d81('0x1c')]);}return _0x17a356[_0x4d81('0x52')](_0x5a39b1);}})[_0x4d81('0x23')](function(_0x454d8c){if(_0x454d8c){return _0x454d8c?{'count':_0x2df05f,'rows':_0x454d8c}:null;}})[_0x4d81('0x23')](respondWithResult(_0x24a21f,null))[_0x4d81('0x42')](handleError(_0x24a21f,null));};
\ No newline at end of file
+var _0x6b39=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','destroy','then','sendStatus','error','stack','name','send','index','map','Automation','type','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','create','update','body','find','params','addConditions','Condition','omit','ids','getConditions','findOne','length','sort','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x448a63,_0xa13e0b){var _0x29d226=function(_0x4eb8c8){while(--_0x4eb8c8){_0x448a63['push'](_0x448a63['shift']());}};_0x29d226(++_0xa13e0b);}(_0x6b39,0x1a4));var _0x96b3=function(_0x58ab93,_0xdf0e53){_0x58ab93=_0x58ab93-0x0;var _0x8e8faa=_0x6b39[_0x58ab93];return _0x8e8faa;};'use strict';var emlformat=require(_0x96b3('0x0'));var rimraf=require(_0x96b3('0x1'));var zipdir=require(_0x96b3('0x2'));var jsonpatch=require(_0x96b3('0x3'));var rp=require(_0x96b3('0x4'));var moment=require(_0x96b3('0x5'));var BPromise=require(_0x96b3('0x6'));var Mustache=require(_0x96b3('0x7'));var util=require(_0x96b3('0x8'));var path=require('path');var sox=require(_0x96b3('0x9'));var csv=require('to-csv');var ejs=require(_0x96b3('0xa'));var fs=require('fs');var fs_extra=require(_0x96b3('0xb'));var _=require(_0x96b3('0xc'));var squel=require(_0x96b3('0xd'));var crypto=require(_0x96b3('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x96b3('0xf'));var toCsv=require(_0x96b3('0x10'));var querystring=require(_0x96b3('0x11'));var Papa=require(_0x96b3('0x12'));var Redis=require(_0x96b3('0x13'));var authService=require(_0x96b3('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x96b3('0x15'));var hardwareService=require(_0x96b3('0x16'));var logger=require('../../config/logger')(_0x96b3('0x17'));var utils=require(_0x96b3('0x18'));var config=require(_0x96b3('0x19'));var licenseUtil=require(_0x96b3('0x1a'));var db=require(_0x96b3('0x1b'))['db'];function respondWithStatusCode(_0x235ff4,_0x39d295){_0x39d295=_0x39d295||0xcc;return function(_0x9794ab){if(_0x9794ab){return _0x235ff4['sendStatus'](_0x39d295);}return _0x235ff4[_0x96b3('0x1c')](_0x39d295)[_0x96b3('0x1d')]();};}function respondWithResult(_0x81911f,_0x2ce411){_0x2ce411=_0x2ce411||0xc8;return function(_0x24ad62){if(_0x24ad62){return _0x81911f[_0x96b3('0x1c')](_0x2ce411)[_0x96b3('0x1e')](_0x24ad62);}};}function respondWithFilteredResult(_0x28f873,_0x4c8bcc){return function(_0x2311dd){if(_0x2311dd){var _0x4f65aa=typeof _0x4c8bcc['offset']==='undefined'&&typeof _0x4c8bcc[_0x96b3('0x1f')]===_0x96b3('0x20');var _0x32404b=_0x2311dd[_0x96b3('0x21')];var _0x21cc65=_0x4f65aa?0x0:_0x4c8bcc[_0x96b3('0x22')];var _0x5da99e=_0x4f65aa?_0x2311dd[_0x96b3('0x21')]:_0x4c8bcc[_0x96b3('0x22')]+_0x4c8bcc[_0x96b3('0x1f')];var _0x92d94c;if(_0x5da99e>=_0x32404b){_0x5da99e=_0x32404b;_0x92d94c=0xc8;}else{_0x92d94c=0xce;}_0x28f873[_0x96b3('0x1c')](_0x92d94c);return _0x28f873[_0x96b3('0x23')](_0x96b3('0x24'),_0x21cc65+'-'+_0x5da99e+'/'+_0x32404b)[_0x96b3('0x1e')](_0x2311dd);}return null;};}function patchUpdates(_0x4bc8d6){return function(_0x38150d){try{jsonpatch[_0x96b3('0x25')](_0x38150d,_0x4bc8d6,!![]);}catch(_0x1487c){return BPromise[_0x96b3('0x26')](_0x1487c);}return _0x38150d[_0x96b3('0x27')]();};}function saveUpdates(_0x30c4bb,_0x2e4f83){return function(_0x3c2c93){if(_0x3c2c93){return _0x3c2c93['update'](_0x30c4bb)['then'](function(_0x40e75c){return _0x40e75c;});}return null;};}function removeEntity(_0x4e2a72,_0x52f305){return function(_0x5d5e90){if(_0x5d5e90){return _0x5d5e90[_0x96b3('0x28')]()[_0x96b3('0x29')](function(){_0x4e2a72['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x23fc6c,_0x41502a){return function(_0x192912){if(!_0x192912){_0x23fc6c[_0x96b3('0x2a')](0x194);}return _0x192912;};}function handleError(_0x312272,_0x5c09da){_0x5c09da=_0x5c09da||0x1f4;return function(_0x4a0755){logger[_0x96b3('0x2b')](_0x4a0755[_0x96b3('0x2c')]);if(_0x4a0755[_0x96b3('0x2d')]){delete _0x4a0755[_0x96b3('0x2d')];}_0x312272[_0x96b3('0x1c')](_0x5c09da)[_0x96b3('0x2e')](_0x4a0755);};}exports[_0x96b3('0x2f')]=function(_0x551ad0,_0x5b9ca7){var _0x389aa4={},_0x24d5ff={},_0x1df963={'count':0x0,'rows':[]};var _0x3a0b13=_[_0x96b3('0x30')](db[_0x96b3('0x31')]['rawAttributes'],function(_0x59c242){return{'name':_0x59c242['fieldName'],'type':_0x59c242[_0x96b3('0x32')]['key']};});_0x24d5ff['model']=_[_0x96b3('0x30')](_0x3a0b13,_0x96b3('0x2d'));_0x24d5ff['query']=_[_0x96b3('0x33')](_0x551ad0[_0x96b3('0x34')]);_0x24d5ff['filters']=_[_0x96b3('0x35')](_0x24d5ff[_0x96b3('0x36')],_0x24d5ff['query']);_0x389aa4[_0x96b3('0x37')]=_[_0x96b3('0x35')](_0x24d5ff[_0x96b3('0x36')],qs[_0x96b3('0x38')](_0x551ad0[_0x96b3('0x34')][_0x96b3('0x38')]));_0x389aa4['attributes']=_0x389aa4[_0x96b3('0x37')]['length']?_0x389aa4['attributes']:_0x24d5ff[_0x96b3('0x36')];if(!_0x551ad0[_0x96b3('0x34')][_0x96b3('0x39')](_0x96b3('0x3a'))){_0x389aa4[_0x96b3('0x1f')]=qs[_0x96b3('0x1f')](_0x551ad0[_0x96b3('0x34')][_0x96b3('0x1f')]);_0x389aa4[_0x96b3('0x22')]=qs[_0x96b3('0x22')](_0x551ad0[_0x96b3('0x34')][_0x96b3('0x22')]);}_0x389aa4[_0x96b3('0x3b')]=qs['sort'](_0x551ad0[_0x96b3('0x34')]['sort']);_0x389aa4['where']=qs[_0x96b3('0x3c')](_[_0x96b3('0x3d')](_0x551ad0[_0x96b3('0x34')],_0x24d5ff['filters']),_0x3a0b13);if(_0x551ad0[_0x96b3('0x34')][_0x96b3('0x3e')]){_0x389aa4[_0x96b3('0x3f')]=_[_0x96b3('0x40')](_0x389aa4[_0x96b3('0x3f')],{'$or':_[_0x96b3('0x30')](_0x3a0b13,function(_0x303f06){if(_0x303f06['type']!==_0x96b3('0x41')){var _0x3e7399={};_0x3e7399[_0x303f06[_0x96b3('0x2d')]]={'$like':'%'+_0x551ad0[_0x96b3('0x34')][_0x96b3('0x3e')]+'%'};return _0x3e7399;}})});}_0x389aa4=_[_0x96b3('0x40')]({},_0x389aa4,_0x551ad0[_0x96b3('0x42')]);var _0x3831ad={'where':_0x389aa4[_0x96b3('0x3f')]};return db[_0x96b3('0x31')]['count'](_0x3831ad)[_0x96b3('0x29')](function(_0x2d24a9){_0x1df963[_0x96b3('0x21')]=_0x2d24a9;if(_0x551ad0[_0x96b3('0x34')][_0x96b3('0x43')]){_0x389aa4[_0x96b3('0x44')]=[{'all':!![]}];}return db[_0x96b3('0x31')][_0x96b3('0x45')](_0x389aa4);})[_0x96b3('0x29')](function(_0x236e7c){_0x1df963[_0x96b3('0x46')]=_0x236e7c;return _0x1df963;})[_0x96b3('0x29')](respondWithFilteredResult(_0x5b9ca7,_0x389aa4))[_0x96b3('0x47')](handleError(_0x5b9ca7,null));};exports['show']=function(_0x4a220c,_0xa9aa){var _0x7ee1ff={'raw':![],'where':{'id':_0x4a220c['params']['id']}},_0x1a1148={};_0x1a1148['model']=_['keys'](db[_0x96b3('0x31')][_0x96b3('0x48')]);_0x1a1148[_0x96b3('0x34')]=_[_0x96b3('0x33')](_0x4a220c['query']);_0x1a1148[_0x96b3('0x3c')]=_[_0x96b3('0x35')](_0x1a1148[_0x96b3('0x36')],_0x1a1148[_0x96b3('0x34')]);_0x7ee1ff['attributes']=_['intersection'](_0x1a1148[_0x96b3('0x36')],qs['fields'](_0x4a220c[_0x96b3('0x34')][_0x96b3('0x38')]));_0x7ee1ff[_0x96b3('0x37')]=_0x7ee1ff[_0x96b3('0x37')]['length']?_0x7ee1ff['attributes']:_0x1a1148['model'];if(_0x4a220c[_0x96b3('0x34')][_0x96b3('0x43')]){_0x7ee1ff[_0x96b3('0x44')]=[{'all':!![]}];}_0x7ee1ff=_[_0x96b3('0x40')]({},_0x7ee1ff,_0x4a220c[_0x96b3('0x42')]);return db[_0x96b3('0x31')]['find'](_0x7ee1ff)[_0x96b3('0x29')](handleEntityNotFound(_0xa9aa,null))[_0x96b3('0x29')](respondWithResult(_0xa9aa,null))[_0x96b3('0x47')](handleError(_0xa9aa,null));};exports[_0x96b3('0x49')]=function(_0x39d730,_0x1c1283){return db[_0x96b3('0x31')][_0x96b3('0x49')](_0x39d730['body'],{})[_0x96b3('0x29')](respondWithResult(_0x1c1283,0xc9))[_0x96b3('0x47')](handleError(_0x1c1283,null));};exports[_0x96b3('0x4a')]=function(_0x5d6ec1,_0x3e8ad6){if(_0x5d6ec1[_0x96b3('0x4b')]['id']){delete _0x5d6ec1['body']['id'];}return db[_0x96b3('0x31')][_0x96b3('0x4c')]({'where':{'id':_0x5d6ec1[_0x96b3('0x4d')]['id']}})[_0x96b3('0x29')](handleEntityNotFound(_0x3e8ad6,null))['then'](saveUpdates(_0x5d6ec1[_0x96b3('0x4b')],null))[_0x96b3('0x29')](respondWithResult(_0x3e8ad6,null))[_0x96b3('0x47')](handleError(_0x3e8ad6,null));};exports[_0x96b3('0x28')]=function(_0x5cdb7d,_0x276d3d){return db[_0x96b3('0x31')][_0x96b3('0x4c')]({'where':{'id':_0x5cdb7d[_0x96b3('0x4d')]['id']}})[_0x96b3('0x29')](handleEntityNotFound(_0x276d3d,null))[_0x96b3('0x29')](removeEntity(_0x276d3d,null))['catch'](handleError(_0x276d3d,null));};exports[_0x96b3('0x4e')]=function(_0x5b6b98,_0x789b02,_0x43525a){return db[_0x96b3('0x4f')][_0x96b3('0x4c')]({'where':{'id':_0x5b6b98[_0x96b3('0x4d')]['id']}})[_0x96b3('0x29')](handleEntityNotFound(_0x789b02,null))[_0x96b3('0x29')](function(_0xbc37ee){if(_0xbc37ee){return _0xbc37ee[_0x96b3('0x4e')](_0x5b6b98[_0x96b3('0x4b')]['ids'],_[_0x96b3('0x50')](_0x5b6b98['body'],[_0x96b3('0x51'),'id'])||{});}})['then'](respondWithResult(_0x789b02,null))[_0x96b3('0x47')](handleError(_0x789b02,null));};exports[_0x96b3('0x52')]=function(_0x2195a8,_0x304143,_0x1d6a6d){var _0x47e01a={};var _0x30c03a={};var _0x52e492;var _0x855cc7;return db['Automation'][_0x96b3('0x53')]({'where':{'id':_0x2195a8[_0x96b3('0x4d')]['id']}})[_0x96b3('0x29')](handleEntityNotFound(_0x304143,null))['then'](function(_0x4d5896){if(_0x4d5896){_0x52e492=_0x4d5896;_0x30c03a['model']=_[_0x96b3('0x33')](db[_0x96b3('0x4f')][_0x96b3('0x48')]);_0x30c03a[_0x96b3('0x34')]=_[_0x96b3('0x33')](_0x2195a8['query']);_0x30c03a[_0x96b3('0x3c')]=_[_0x96b3('0x35')](_0x30c03a[_0x96b3('0x36')],_0x30c03a[_0x96b3('0x34')]);_0x47e01a[_0x96b3('0x37')]=_[_0x96b3('0x35')](_0x30c03a[_0x96b3('0x36')],qs[_0x96b3('0x38')](_0x2195a8[_0x96b3('0x34')]['fields']));_0x47e01a['attributes']=_0x47e01a['attributes'][_0x96b3('0x54')]?_0x47e01a['attributes']:_0x30c03a[_0x96b3('0x36')];_0x47e01a[_0x96b3('0x3b')]=qs[_0x96b3('0x55')](_0x2195a8['query']['sort']);_0x47e01a[_0x96b3('0x3f')]=qs[_0x96b3('0x3c')](_[_0x96b3('0x3d')](_0x2195a8[_0x96b3('0x34')],_0x30c03a['filters']));if(_0x2195a8[_0x96b3('0x34')][_0x96b3('0x3e')]){_0x47e01a[_0x96b3('0x3f')]=_['merge'](_0x47e01a['where'],{'$or':_[_0x96b3('0x30')](_0x47e01a[_0x96b3('0x37')],function(_0x4a5639){var _0x4ee945={};_0x4ee945[_0x4a5639]={'$like':'%'+_0x2195a8['query']['filter']+'%'};return _0x4ee945;})});}_0x47e01a=_[_0x96b3('0x40')]({},_0x47e01a,_0x2195a8[_0x96b3('0x42')]);return _0x52e492[_0x96b3('0x52')](_0x47e01a);}})['then'](function(_0x3bb5c3){if(_0x3bb5c3){_0x855cc7=_0x3bb5c3[_0x96b3('0x54')];if(!_0x2195a8['query'][_0x96b3('0x39')](_0x96b3('0x3a'))){_0x47e01a[_0x96b3('0x1f')]=qs['limit'](_0x2195a8[_0x96b3('0x34')][_0x96b3('0x1f')]);_0x47e01a[_0x96b3('0x22')]=qs['offset'](_0x2195a8[_0x96b3('0x34')][_0x96b3('0x22')]);}return _0x52e492['getConditions'](_0x47e01a);}})[_0x96b3('0x29')](function(_0x56d740){if(_0x56d740){return _0x56d740?{'count':_0x855cc7,'rows':_0x56d740}:null;}})[_0x96b3('0x29')](respondWithResult(_0x304143,null))['catch'](handleError(_0x304143,null));};exports[_0x96b3('0x56')]=function(_0xecb3b2,_0x404272,_0x4e1615){return db[_0x96b3('0x57')]['find']({'where':{'id':_0xecb3b2['params']['id']}})[_0x96b3('0x29')](handleEntityNotFound(_0x404272,null))[_0x96b3('0x29')](function(_0x4ac092){if(_0x4ac092){return _0x4ac092[_0x96b3('0x56')](_0xecb3b2['body'][_0x96b3('0x51')],_[_0x96b3('0x50')](_0xecb3b2[_0x96b3('0x4b')],[_0x96b3('0x51'),'id'])||{});}})[_0x96b3('0x29')](respondWithResult(_0x404272,null))[_0x96b3('0x47')](handleError(_0x404272,null));};exports[_0x96b3('0x58')]=function(_0x5604e6,_0xa25c62,_0x24341d){var _0x379778={};var _0x4fbc40={};var _0x3477c6;var _0x2b2311;return db[_0x96b3('0x31')][_0x96b3('0x53')]({'where':{'id':_0x5604e6[_0x96b3('0x4d')]['id']}})['then'](handleEntityNotFound(_0xa25c62,null))[_0x96b3('0x29')](function(_0x346ad4){if(_0x346ad4){_0x3477c6=_0x346ad4;_0x4fbc40[_0x96b3('0x36')]=_[_0x96b3('0x33')](db[_0x96b3('0x57')][_0x96b3('0x48')]);_0x4fbc40[_0x96b3('0x34')]=_[_0x96b3('0x33')](_0x5604e6['query']);_0x4fbc40[_0x96b3('0x3c')]=_['intersection'](_0x4fbc40[_0x96b3('0x36')],_0x4fbc40['query']);_0x379778[_0x96b3('0x37')]=_[_0x96b3('0x35')](_0x4fbc40[_0x96b3('0x36')],qs[_0x96b3('0x38')](_0x5604e6[_0x96b3('0x34')]['fields']));_0x379778['attributes']=_0x379778[_0x96b3('0x37')][_0x96b3('0x54')]?_0x379778[_0x96b3('0x37')]:_0x4fbc40['model'];_0x379778[_0x96b3('0x3b')]=qs['sort'](_0x5604e6['query']['sort']);_0x379778['where']=qs[_0x96b3('0x3c')](_[_0x96b3('0x3d')](_0x5604e6[_0x96b3('0x34')],_0x4fbc40[_0x96b3('0x3c')]));if(_0x5604e6[_0x96b3('0x34')]['filter']){_0x379778[_0x96b3('0x3f')]=_[_0x96b3('0x40')](_0x379778[_0x96b3('0x3f')],{'$or':_[_0x96b3('0x30')](_0x379778[_0x96b3('0x37')],function(_0x311ab1){var _0x228b93={};_0x228b93[_0x311ab1]={'$like':'%'+_0x5604e6['query'][_0x96b3('0x3e')]+'%'};return _0x228b93;})});}_0x379778=_[_0x96b3('0x40')]({},_0x379778,_0x5604e6[_0x96b3('0x42')]);return _0x3477c6[_0x96b3('0x58')](_0x379778);}})[_0x96b3('0x29')](function(_0x1a7614){if(_0x1a7614){_0x2b2311=_0x1a7614[_0x96b3('0x54')];if(!_0x5604e6[_0x96b3('0x34')][_0x96b3('0x39')]('nolimit')){_0x379778['limit']=qs[_0x96b3('0x1f')](_0x5604e6[_0x96b3('0x34')][_0x96b3('0x1f')]);_0x379778[_0x96b3('0x22')]=qs[_0x96b3('0x22')](_0x5604e6[_0x96b3('0x34')]['offset']);}return _0x3477c6[_0x96b3('0x58')](_0x379778);}})['then'](function(_0x20e7f9){if(_0x20e7f9){return _0x20e7f9?{'count':_0x2b2311,'rows':_0x20e7f9}:null;}})['then'](respondWithResult(_0xa25c62,null))[_0x96b3('0x47')](handleError(_0xa25c62,null));};
\ No newline at end of file
index fb685b1..86457aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dbb=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Automation','tools_automations','lodash'];(function(_0x32d3e0,_0x9d3c9b){var _0x472d4e=function(_0x10ed37){while(--_0x10ed37){_0x32d3e0['push'](_0x32d3e0['shift']());}};_0x472d4e(++_0x9d3c9b);}(_0x2dbb,0x1db));var _0xb2db=function(_0x468974,_0xeb7e3c){_0x468974=_0x468974-0x0;var _0x2dfecf=_0x2dbb[_0x468974];return _0x2dfecf;};'use strict';var _=require(_0xb2db('0x0'));var util=require(_0xb2db('0x1'));var logger=require(_0xb2db('0x2'))(_0xb2db('0x3'));var moment=require(_0xb2db('0x4'));var BPromise=require(_0xb2db('0x5'));var rp=require(_0xb2db('0x6'));var fs=require('fs');var path=require(_0xb2db('0x7'));var rimraf=require(_0xb2db('0x8'));var config=require(_0xb2db('0x9'));var attributes=require('./automation.attributes');module[_0xb2db('0xa')]=function(_0x2551e7,_0x224386){return _0x2551e7[_0xb2db('0xb')](_0xb2db('0xc'),attributes,{'tableName':_0xb2db('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4461=['api','bluebird','path','./automation.attributes','define','Automation','lodash','util','../../config/logger'];(function(_0x2dd68f,_0xd4ae13){var _0x5d66e0=function(_0x455170){while(--_0x455170){_0x2dd68f['push'](_0x2dd68f['shift']());}};_0x5d66e0(++_0xd4ae13);}(_0x4461,0x189));var _0x1446=function(_0x53cdf6,_0x28ec5c){_0x53cdf6=_0x53cdf6-0x0;var _0x2181a2=_0x4461[_0x53cdf6];return _0x2181a2;};'use strict';var _=require(_0x1446('0x0'));var util=require(_0x1446('0x1'));var logger=require(_0x1446('0x2'))(_0x1446('0x3'));var moment=require('moment');var BPromise=require(_0x1446('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1446('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1446('0x6'));module['exports']=function(_0xed5bd1,_0x560259){return _0xed5bd1[_0x1446('0x7')](_0x1446('0x8'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6edd8a0..03b5836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa908=['http','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','Automation,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xa908,0x1c3));var _0x8a90=function(_0x1e06c0,_0x3c8d32){_0x1e06c0=_0x1e06c0-0x0;var _0x20a073=_0xa908[_0x1e06c0];return _0x20a073;};'use strict';var _=require(_0x8a90('0x0'));var util=require('util');var moment=require(_0x8a90('0x1'));var BPromise=require('bluebird');var rs=require(_0x8a90('0x2'));var fs=require('fs');var Redis=require(_0x8a90('0x3'));var db=require(_0x8a90('0x4'))['db'];var utils=require(_0x8a90('0x5'));var logger=require(_0x8a90('0x6'))('rpc');var config=require(_0x8a90('0x7'));var jayson=require(_0x8a90('0x8'));var client=jayson['client'][_0x8a90('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1dc8f9,_0x12d376,_0x3faf88){return new BPromise(function(_0x20f8bf,_0x200f95){return client['request'](_0x1dc8f9,_0x3faf88)[_0x8a90('0xa')](function(_0x485401){logger[_0x8a90('0xb')]('Automation,\x20%s,\x20%s',_0x12d376,_0x8a90('0xc'));logger[_0x8a90('0xd')](_0x8a90('0xe'),_0x12d376,_0x8a90('0xc'),JSON[_0x8a90('0xf')](_0x485401));if(_0x485401[_0x8a90('0x10')]){if(_0x485401[_0x8a90('0x10')]['code']===0x1f4){logger['error'](_0x8a90('0x11'),_0x12d376,_0x485401[_0x8a90('0x10')][_0x8a90('0x12')]);return _0x200f95(_0x485401['error'][_0x8a90('0x12')]);}logger[_0x8a90('0x10')](_0x8a90('0x11'),_0x12d376,_0x485401['error'][_0x8a90('0x12')]);return _0x20f8bf(_0x485401[_0x8a90('0x10')]['message']);}else{logger[_0x8a90('0xb')](_0x8a90('0x11'),_0x12d376,_0x8a90('0xc'));_0x20f8bf(_0x485401[_0x8a90('0x13')]['message']);}})['catch'](function(_0x14db82){logger[_0x8a90('0x10')](_0x8a90('0x11'),_0x12d376,_0x14db82);_0x200f95(_0x14db82);});});}
\ No newline at end of file
+var _0x75dc=['debug','Automation,\x20%s,\x20%s,\x20%s','error','code','Automation,\x20%s,\x20%s','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','request\x20sent'];(function(_0x2b51c2,_0x401991){var _0x234ecd=function(_0x352b0a){while(--_0x352b0a){_0x2b51c2['push'](_0x2b51c2['shift']());}};_0x234ecd(++_0x401991);}(_0x75dc,0x1d7));var _0xc75d=function(_0x5d4818,_0x3ccae2){_0x5d4818=_0x5d4818-0x0;var _0x578a9c=_0x75dc[_0x5d4818];return _0x578a9c;};'use strict';var _=require(_0xc75d('0x0'));var util=require(_0xc75d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc75d('0x2'));var db=require(_0xc75d('0x3'))['db'];var utils=require(_0xc75d('0x4'));var logger=require(_0xc75d('0x5'))(_0xc75d('0x6'));var config=require(_0xc75d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc75d('0x8')][_0xc75d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x928edc,_0x5d75a9,_0x1ed94f){return new BPromise(function(_0x182591,_0x645b48){return client[_0xc75d('0xa')](_0x928edc,_0x1ed94f)['then'](function(_0x264fcb){logger['info']('Automation,\x20%s,\x20%s',_0x5d75a9,_0xc75d('0xb'));logger[_0xc75d('0xc')](_0xc75d('0xd'),_0x5d75a9,_0xc75d('0xb'),JSON['stringify'](_0x264fcb));if(_0x264fcb[_0xc75d('0xe')]){if(_0x264fcb[_0xc75d('0xe')][_0xc75d('0xf')]===0x1f4){logger[_0xc75d('0xe')](_0xc75d('0x10'),_0x5d75a9,_0x264fcb[_0xc75d('0xe')][_0xc75d('0x11')]);return _0x645b48(_0x264fcb['error'][_0xc75d('0x11')]);}logger[_0xc75d('0xe')](_0xc75d('0x10'),_0x5d75a9,_0x264fcb[_0xc75d('0xe')]['message']);return _0x182591(_0x264fcb['error'][_0xc75d('0x11')]);}else{logger[_0xc75d('0x12')](_0xc75d('0x10'),_0x5d75a9,_0xc75d('0xb'));_0x182591(_0x264fcb[_0xc75d('0x13')][_0xc75d('0x11')]);}})[_0xc75d('0x14')](function(_0x4b8552){logger[_0xc75d('0xe')](_0xc75d('0x10'),_0x5d75a9,_0x4b8552);_0x645b48(_0x4b8552);});});}
\ No newline at end of file
index 32df361..8e72141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3e=['index','show','/:id/conditions','getConditions','getActions','post','addConditions','put','/:id','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./automation.controller','get','isAuthenticated'];(function(_0x5e62ed,_0x2bb791){var _0x392803=function(_0x1a4dac){while(--_0x1a4dac){_0x5e62ed['push'](_0x5e62ed['shift']());}};_0x392803(++_0x2bb791);}(_0x2b3e,0x83));var _0xe2b3=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x2b3e[_0x1e7b16];return _0x37fadc;};'use strict';var multer=require('multer');var util=require(_0xe2b3('0x0'));var path=require('path');var timeout=require(_0xe2b3('0x1'));var express=require(_0xe2b3('0x2'));var router=express[_0xe2b3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe2b3('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe2b3('0x5'));var controller=require(_0xe2b3('0x6'));router[_0xe2b3('0x7')]('/',auth[_0xe2b3('0x8')](),controller[_0xe2b3('0x9')]);router['get']('/:id',auth[_0xe2b3('0x8')](),controller[_0xe2b3('0xa')]);router[_0xe2b3('0x7')](_0xe2b3('0xb'),auth[_0xe2b3('0x8')](),controller[_0xe2b3('0xc')]);router['get']('/:id/actions',auth[_0xe2b3('0x8')](),controller[_0xe2b3('0xd')]);router[_0xe2b3('0xe')]('/',auth[_0xe2b3('0x8')](),controller['create']);router[_0xe2b3('0xe')](_0xe2b3('0xb'),auth[_0xe2b3('0x8')](),controller[_0xe2b3('0xf')]);router['post']('/:id/actions',auth[_0xe2b3('0x8')](),controller['addActions']);router[_0xe2b3('0x10')](_0xe2b3('0x11'),auth[_0xe2b3('0x8')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe2b3('0x12')]);module[_0xe2b3('0x13')]=router;
\ No newline at end of file
+var _0xcacd=['/:id/actions','addActions','put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','get','isAuthenticated','/:id','/:id/conditions','getConditions','create','post','addConditions'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0xcacd,0x1bf));var _0xdcac=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xcacd[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0xdcac('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdcac('0x1'));var router=express[_0xdcac('0x2')]();var fs_extra=require(_0xdcac('0x3'));var auth=require(_0xdcac('0x4'));var interaction=require(_0xdcac('0x5'));var config=require('../../config/environment');var controller=require(_0xdcac('0x6'));router[_0xdcac('0x7')]('/',auth[_0xdcac('0x8')](),controller['index']);router[_0xdcac('0x7')](_0xdcac('0x9'),auth[_0xdcac('0x8')](),controller['show']);router[_0xdcac('0x7')](_0xdcac('0xa'),auth['isAuthenticated'](),controller[_0xdcac('0xb')]);router[_0xdcac('0x7')]('/:id/actions',auth['isAuthenticated'](),controller['getActions']);router['post']('/',auth[_0xdcac('0x8')](),controller[_0xdcac('0xc')]);router[_0xdcac('0xd')](_0xdcac('0xa'),auth[_0xdcac('0x8')](),controller[_0xdcac('0xe')]);router[_0xdcac('0xd')](_0xdcac('0xf'),auth['isAuthenticated'](),controller[_0xdcac('0x10')]);router[_0xdcac('0x11')](_0xdcac('0x9'),auth['isAuthenticated'](),controller[_0xdcac('0x12')]);router[_0xdcac('0x13')](_0xdcac('0x9'),auth[_0xdcac('0x8')](),controller[_0xdcac('0x14')]);module[_0xdcac('0x15')]=router;
\ No newline at end of file
index c958a81..47d006a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90a=['Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','UNSIGNED','#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,*,*,*','ENUM','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','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\x20(min:1,\x20max:999)','sequelize','exports','name','Active/Disactive\x20Campaign','INTEGER','STRING'];(function(_0x45d524,_0x5e1efc){var _0x144a10=function(_0x50b930){while(--_0x50b930){_0x45d524['push'](_0x45d524['shift']());}};_0x144a10(++_0x5e1efc);}(_0xb90a,0x12a));var _0xab90=function(_0x386fa6,_0x4d4a37){_0x386fa6=_0x386fa6-0x0;var _0x450d3a=_0xb90a[_0x386fa6];return _0x450d3a;};'use strict';var Sequelize=require(_0xab90('0x0'));module[_0xab90('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xab90('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xab90('0x3')},'limitCalls':{'type':Sequelize[_0xab90('0x4')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0xab90('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xab90('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xab90('0x4')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0x6')},'dialCongestionMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0x8')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0x9')},'dialBusyMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0xa')},'dialBusyRetryFrequency':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xab90('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xab90('0xe')},'dialTimezone':{'type':Sequelize[_0xab90('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xab90('0x5')],'defaultValue':_0xab90('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0xab90('0x10')](_0xab90('0x11'),_0xab90('0x12'),'onlyIfOpen'),'defaultValue':_0xab90('0x11')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xab90('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0xab90('0x4')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xab90('0x14')},'dialAMDGreeting':{'type':Sequelize[_0xab90('0x4')](0x9)[_0xab90('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xab90('0x4')](0x9)[_0xab90('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xab90('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xab90('0x4')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xab90('0x16')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xab90('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xab90('0x4')](0x9)[_0xab90('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xab90('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xab90('0x4')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xab90('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xab90('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xab90('0x4')](0x9)[_0xab90('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xab90('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0xab90('0x10')](_0xab90('0x1b'),_0xab90('0x1c')),'defaultValue':_0xab90('0x1b')},'dialPrefix':{'type':Sequelize[_0xab90('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xab90('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0x1f')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xab90('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0x20')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0x22')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0x23')},'dialMachineMaxRetry':{'type':Sequelize[_0xab90('0x4')](0x3)[_0xab90('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab90('0x24')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xab90('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab90('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xab90('0x4')](0x5)[_0xab90('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
+var _0xfcfb=['#AMD\x20After\x20Greeting\x20Silence','#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','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','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\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','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#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)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting'];(function(_0xdbf14f,_0x4bfcc4){var _0x3e58a2=function(_0x389184){while(--_0x389184){_0xdbf14f['push'](_0xdbf14f['shift']());}};_0x3e58a2(++_0x4bfcc4);}(_0xfcfb,0x1d4));var _0xbfcf=function(_0x16a7d8,_0x326d5c){_0x16a7d8=_0x16a7d8-0x0;var _0xa4b589=_0xfcfb[_0x16a7d8];return _0xa4b589;};'use strict';var Sequelize=require(_0xbfcf('0x0'));module[_0xbfcf('0x1')]={'name':{'type':Sequelize[_0xbfcf('0x2')],'unique':_0xbfcf('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xbfcf('0x4')](_0xbfcf('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0xbfcf('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xbfcf('0x6')},'limitCalls':{'type':Sequelize[_0xbfcf('0x7')](0x4)[_0xbfcf('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xbfcf('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0xbfcf('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xbfcf('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbfcf('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbfcf('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0xc')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbfcf('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xbfcf('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xbfcf('0xf')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0x10')},'dialGlobalMaxRetry':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xbfcf('0x11')},'dialTimezone':{'type':Sequelize[_0xbfcf('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xbfcf('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xbfcf('0x4')](_0xbfcf('0x12'),_0xbfcf('0x13'),_0xbfcf('0x14')),'defaultValue':_0xbfcf('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xbfcf('0x15')},'dialAMDInitialSilence':{'type':Sequelize[_0xbfcf('0x7')](0x9)[_0xbfcf('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xbfcf('0x16')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xbfcf('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xbfcf('0x17')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xbfcf('0x7')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xbfcf('0x18')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xbfcf('0x7')](0x9)[_0xbfcf('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xbfcf('0x7')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xbfcf('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xbfcf('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xbfcf('0x1a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xbfcf('0x7')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xbfcf('0x1b')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xbfcf('0x1c')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xbfcf('0x7')](0x9)[_0xbfcf('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbfcf('0x1d')},'dialOrderByScheduledAt':{'type':Sequelize[_0xbfcf('0x4')](_0xbfcf('0x1e'),_0xbfcf('0x1f')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xbfcf('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xbfcf('0x20')},'dialCutDigit':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xbfcf('0x21')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0x22')},'dialDropMaxRetry':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbfcf('0x23')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0x24')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xbfcf('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0x25')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xbfcf('0x7')](0x3)[_0xbfcf('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbfcf('0x27')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xbfcf('0x7')](0x5)[_0xbfcf('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbfcf('0x28')}};
\ No newline at end of file
index e92ca40..769d5b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb937=['UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','findAll','rows','show','keys','options','Campaign','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','IvrCampaigns','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','role','getHoppers','findOne','CmHopper','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','order','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ListId','select','field','phone','NOW()','ContactId','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','COALESCE(phone,\x27\x27)','ListId\x20=\x20?','push','sequelize','removeLists','getBlackLists','addBlackLists','all','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get'];(function(_0x4d7116,_0xdb8175){var _0x4593dc=function(_0x51d44e){while(--_0x51d44e){_0x4d7116['push'](_0x4d7116['shift']());}};_0x4593dc(++_0xdb8175);}(_0xb937,0xee));var _0x7b93=function(_0x44d87a,_0x411bb2){_0x44d87a=_0x44d87a-0x0;var _0x120601=_0xb937[_0x44d87a];return _0x120601;};'use strict';var emlformat=require(_0x7b93('0x0'));var rimraf=require(_0x7b93('0x1'));var zipdir=require(_0x7b93('0x2'));var jsonpatch=require(_0x7b93('0x3'));var rp=require('request-promise');var moment=require(_0x7b93('0x4'));var BPromise=require(_0x7b93('0x5'));var Mustache=require(_0x7b93('0x6'));var util=require(_0x7b93('0x7'));var path=require(_0x7b93('0x8'));var sox=require('sox');var csv=require(_0x7b93('0x9'));var ejs=require(_0x7b93('0xa'));var fs=require('fs');var fs_extra=require(_0x7b93('0xb'));var _=require(_0x7b93('0xc'));var squel=require(_0x7b93('0xd'));var crypto=require(_0x7b93('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7b93('0xf'));var toCsv=require(_0x7b93('0x9'));var querystring=require(_0x7b93('0x10'));var Papa=require('papaparse');var Redis=require(_0x7b93('0x11'));var authService=require(_0x7b93('0x12'));var qs=require(_0x7b93('0x13'));var as=require(_0x7b93('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7b93('0x15'))(_0x7b93('0x16'));var utils=require(_0x7b93('0x17'));var config=require(_0x7b93('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x119ff0,_0x50889a){_0x50889a=_0x50889a||0xcc;return function(_0x4da74b){if(_0x4da74b){return _0x119ff0['sendStatus'](_0x50889a);}return _0x119ff0[_0x7b93('0x19')](_0x50889a)[_0x7b93('0x1a')]();};}function respondWithResult(_0x56a238,_0x1bb963){_0x1bb963=_0x1bb963||0xc8;return function(_0x49608e){if(_0x49608e){return _0x56a238[_0x7b93('0x19')](_0x1bb963)[_0x7b93('0x1b')](_0x49608e);}};}function respondWithFilteredResult(_0x541212,_0x5e36ea){return function(_0x95e447){if(_0x95e447){var _0xdded65=typeof _0x5e36ea[_0x7b93('0x1c')]===_0x7b93('0x1d')&&typeof _0x5e36ea[_0x7b93('0x1e')]==='undefined';var _0x1dd8e3=_0x95e447[_0x7b93('0x1f')];var _0x2541eb=_0xdded65?0x0:_0x5e36ea['offset'];var _0x14eafe=_0xdded65?_0x95e447['count']:_0x5e36ea[_0x7b93('0x1c')]+_0x5e36ea['limit'];var _0x143ebc;if(_0x14eafe>=_0x1dd8e3){_0x14eafe=_0x1dd8e3;_0x143ebc=0xc8;}else{_0x143ebc=0xce;}_0x541212[_0x7b93('0x19')](_0x143ebc);return _0x541212[_0x7b93('0x20')](_0x7b93('0x21'),_0x2541eb+'-'+_0x14eafe+'/'+_0x1dd8e3)[_0x7b93('0x1b')](_0x95e447);}return null;};}function patchUpdates(_0x7aec95){return function(_0x142935){try{jsonpatch['apply'](_0x142935,_0x7aec95,!![]);}catch(_0x3ab55a){return BPromise[_0x7b93('0x22')](_0x3ab55a);}return _0x142935[_0x7b93('0x23')]();};}function saveUpdates(_0x5533f1,_0x20f0fb){return function(_0x5e7906){if(_0x5e7906){return _0x5e7906[_0x7b93('0x24')](_0x5533f1)['then'](function(_0x454d52){return _0x454d52;});}return null;};}function removeEntity(_0x34ff81,_0x4e58d5){return function(_0xdd26f){if(_0xdd26f){return _0xdd26f[_0x7b93('0x25')]()[_0x7b93('0x26')](function(){var _0x2f9e8c=_0xdd26f[_0x7b93('0x27')]({'plain':!![]});var _0x330e6a='IvrCampaigns';return db[_0x7b93('0x28')]['destroy']({'where':{'type':_0x330e6a,'resourceId':_0x2f9e8c['id']}})[_0x7b93('0x26')](function(){return _0xdd26f;});})[_0x7b93('0x26')](function(){_0x34ff81[_0x7b93('0x19')](0xcc)[_0x7b93('0x1a')]();});}};}function handleEntityNotFound(_0x5323bb,_0xdd879b){return function(_0x4ccb7b){if(!_0x4ccb7b){_0x5323bb['sendStatus'](0x194);}return _0x4ccb7b;};}function handleError(_0x3fa36,_0x4ea6f9){_0x4ea6f9=_0x4ea6f9||0x1f4;return function(_0x33c4fb){logger[_0x7b93('0x29')](_0x33c4fb['stack']);if(_0x33c4fb['name']){delete _0x33c4fb[_0x7b93('0x2a')];}_0x3fa36[_0x7b93('0x19')](_0x4ea6f9)[_0x7b93('0x2b')](_0x33c4fb);};}exports[_0x7b93('0x2c')]=function(_0x8a9912,_0x320107){var _0x5c2286={},_0x342b37={},_0x48e5dd={'count':0x0,'rows':[]};var _0x2e3d56=_[_0x7b93('0x2d')](db['Campaign'][_0x7b93('0x2e')],function(_0x4c4b67){return{'name':_0x4c4b67[_0x7b93('0x2f')],'type':_0x4c4b67[_0x7b93('0x30')][_0x7b93('0x31')]};});_0x342b37[_0x7b93('0x32')]=_[_0x7b93('0x2d')](_0x2e3d56,_0x7b93('0x2a'));_0x342b37[_0x7b93('0x33')]=_['keys'](_0x8a9912['query']);_0x342b37[_0x7b93('0x34')]=_[_0x7b93('0x35')](_0x342b37[_0x7b93('0x32')],_0x342b37[_0x7b93('0x33')]);_0x5c2286[_0x7b93('0x36')]=_[_0x7b93('0x35')](_0x342b37[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0x8a9912[_0x7b93('0x33')]['fields']));_0x5c2286[_0x7b93('0x36')]=_0x5c2286[_0x7b93('0x36')][_0x7b93('0x38')]?_0x5c2286['attributes']:_0x342b37[_0x7b93('0x32')];if(!_0x8a9912[_0x7b93('0x33')][_0x7b93('0x39')](_0x7b93('0x3a'))){_0x5c2286[_0x7b93('0x1e')]=qs[_0x7b93('0x1e')](_0x8a9912[_0x7b93('0x33')][_0x7b93('0x1e')]);_0x5c2286[_0x7b93('0x1c')]=qs['offset'](_0x8a9912[_0x7b93('0x33')][_0x7b93('0x1c')]);}_0x5c2286['order']=qs[_0x7b93('0x3b')](_0x8a9912[_0x7b93('0x33')][_0x7b93('0x3b')]);_0x5c2286[_0x7b93('0x3c')]=qs[_0x7b93('0x34')](_[_0x7b93('0x3d')](_0x8a9912[_0x7b93('0x33')],_0x342b37[_0x7b93('0x34')]),_0x2e3d56);if(_0x8a9912[_0x7b93('0x33')]['filter']){_0x5c2286['where']=_['merge'](_0x5c2286[_0x7b93('0x3c')],{'$or':_['map'](_0x2e3d56,function(_0x37e87e){if(_0x37e87e[_0x7b93('0x30')]!==_0x7b93('0x3e')){var _0x36cd05={};_0x36cd05[_0x37e87e[_0x7b93('0x2a')]]={'$like':'%'+_0x8a9912[_0x7b93('0x33')][_0x7b93('0x3f')]+'%'};return _0x36cd05;}})});}_0x5c2286=_[_0x7b93('0x40')]({},_0x5c2286,_0x8a9912['options']);var _0x29ed0b={'where':_0x5c2286['where']};return db['Campaign']['count'](_0x29ed0b)[_0x7b93('0x26')](function(_0x46fedf){_0x48e5dd[_0x7b93('0x1f')]=_0x46fedf;if(_0x8a9912[_0x7b93('0x33')][_0x7b93('0x41')]){_0x5c2286[_0x7b93('0x42')]=[{'all':!![]}];}return db['Campaign'][_0x7b93('0x43')](_0x5c2286);})[_0x7b93('0x26')](function(_0x26724d){_0x48e5dd[_0x7b93('0x44')]=_0x26724d;return _0x48e5dd;})[_0x7b93('0x26')](respondWithFilteredResult(_0x320107,_0x5c2286))['catch'](handleError(_0x320107,null));};exports[_0x7b93('0x45')]=function(_0x2e9b99,_0x1f279f){var _0x34408c={'raw':![],'where':{'id':_0x2e9b99['params']['id']}},_0x46a36d={};_0x46a36d[_0x7b93('0x32')]=_['keys'](db['Campaign'][_0x7b93('0x2e')]);_0x46a36d[_0x7b93('0x33')]=_[_0x7b93('0x46')](_0x2e9b99[_0x7b93('0x33')]);_0x46a36d[_0x7b93('0x34')]=_[_0x7b93('0x35')](_0x46a36d[_0x7b93('0x32')],_0x46a36d[_0x7b93('0x33')]);_0x34408c[_0x7b93('0x36')]=_[_0x7b93('0x35')](_0x46a36d[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0x2e9b99[_0x7b93('0x33')][_0x7b93('0x37')]));_0x34408c[_0x7b93('0x36')]=_0x34408c[_0x7b93('0x36')]['length']?_0x34408c[_0x7b93('0x36')]:_0x46a36d[_0x7b93('0x32')];if(_0x2e9b99[_0x7b93('0x33')][_0x7b93('0x41')]){_0x34408c[_0x7b93('0x42')]=[{'all':!![]}];}_0x34408c=_[_0x7b93('0x40')]({},_0x34408c,_0x2e9b99[_0x7b93('0x47')]);return db[_0x7b93('0x48')][_0x7b93('0x49')](_0x34408c)['then'](handleEntityNotFound(_0x1f279f,null))[_0x7b93('0x26')](respondWithResult(_0x1f279f,null))['catch'](handleError(_0x1f279f,null));};exports[_0x7b93('0x4a')]=function(_0xf94c79,_0x5cebdc){return db[_0x7b93('0x48')][_0x7b93('0x4a')](_0xf94c79[_0x7b93('0x4b')],{})[_0x7b93('0x26')](function(_0x46387a){var _0x52b76f=_0xf94c79[_0x7b93('0x4c')][_0x7b93('0x27')]({'plain':!![]});if(!_0x52b76f)throw new Error(_0x7b93('0x4d'));if(_0x52b76f['role']===_0x7b93('0x4c')){var _0x3c6fa3=_0x46387a[_0x7b93('0x27')]({'plain':!![]});var _0x1165d9=_0x7b93('0x4e');return db[_0x7b93('0x4f')]['find']({'where':{'name':_0x1165d9,'userProfileId':_0x52b76f[_0x7b93('0x50')]},'raw':!![]})['then'](function(_0x22a16c){if(_0x22a16c&&_0x22a16c[_0x7b93('0x51')]===0x0){return db['UserProfileResource'][_0x7b93('0x4a')]({'name':_0x3c6fa3[_0x7b93('0x2a')],'resourceId':_0x3c6fa3['id'],'type':_0x22a16c[_0x7b93('0x2a')],'sectionId':_0x22a16c['id']},{})[_0x7b93('0x26')](function(){return _0x46387a;});}else{return _0x46387a;}})[_0x7b93('0x52')](function(_0x374838){logger['error'](_0x7b93('0x53'),_0x374838);throw _0x374838;});}return _0x46387a;})[_0x7b93('0x26')](respondWithResult(_0x5cebdc,0xc9))[_0x7b93('0x52')](handleError(_0x5cebdc,null));};exports[_0x7b93('0x54')]=function(_0x206c0d,_0x535370){var _0x318e29={'where':{'id':_0x206c0d[_0x7b93('0x55')]['id']}},_0x32e19e={};_0x32e19e[_0x7b93('0x32')]=_[_0x7b93('0x46')](db[_0x7b93('0x48')]['rawAttributes']);_0x318e29[_0x7b93('0x36')]=_[_0x7b93('0x35')](_0x32e19e[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0x206c0d['query'][_0x7b93('0x37')]));_0x318e29[_0x7b93('0x36')]=_0x318e29[_0x7b93('0x36')][_0x7b93('0x38')]?_0x318e29['attributes']:_0x32e19e[_0x7b93('0x32')];if(_0x206c0d[_0x7b93('0x33')][_0x7b93('0x41')]){_0x318e29['include']=[{'all':!![]}];}_0x318e29=_[_0x7b93('0x40')]({},_0x318e29,_0x206c0d[_0x7b93('0x47')]);return db[_0x7b93('0x48')][_0x7b93('0x49')](_0x318e29)[_0x7b93('0x26')](handleEntityNotFound(_0x535370,null))[_0x7b93('0x26')](function(_0x1b2604){if(_0x1b2604){var _0x251c1f=_0x1b2604[_0x7b93('0x27')]({'plain':!![]});_0x251c1f=qs[_0x7b93('0x56')](_0x251c1f,['id',_0x7b93('0x57'),_0x7b93('0x58')]);_0x206c0d[_0x7b93('0x4b')]=_[_0x7b93('0x56')](_0x206c0d[_0x7b93('0x4b')],['id',_0x7b93('0x57'),'updatedAt']);return db['Campaign'][_0x7b93('0x4a')](_[_0x7b93('0x40')](_0x251c1f,_0x206c0d['body']),{'include':_0x206c0d['query'][_0x7b93('0x41')]?[{'all':!![]}]:undefined})['then'](function(_0x13f151){var _0x46a18c=_0x206c0d['user'][_0x7b93('0x27')]({'plain':!![]});if(!_0x46a18c)throw new Error(_0x7b93('0x4d'));if(_0x46a18c[_0x7b93('0x59')]===_0x7b93('0x4c')){var _0x1e69e5=_0x13f151['get']({'plain':!![]});var _0x2e5e3b=_0x7b93('0x4e');return db['UserProfileSection']['find']({'where':{'name':_0x2e5e3b,'userProfileId':_0x46a18c[_0x7b93('0x50')]},'raw':!![]})['then'](function(_0x85472f){if(_0x85472f&&_0x85472f[_0x7b93('0x51')]===0x0){return db[_0x7b93('0x28')][_0x7b93('0x4a')]({'name':_0x1e69e5[_0x7b93('0x2a')],'resourceId':_0x1e69e5['id'],'type':_0x85472f[_0x7b93('0x2a')],'sectionId':_0x85472f['id']},{})['then'](function(){return _0x13f151;});}else{return _0x13f151;}})['catch'](function(_0x527ec7){logger[_0x7b93('0x29')](_0x7b93('0x53'),_0x527ec7);throw _0x527ec7;});}return _0x13f151;});}})[_0x7b93('0x26')](respondWithResult(_0x535370,0xc9))['catch'](handleError(_0x535370,null));};exports['update']=function(_0x27ed13,_0x4b305e){if(_0x27ed13[_0x7b93('0x4b')]['id']){delete _0x27ed13[_0x7b93('0x4b')]['id'];}return db['Campaign'][_0x7b93('0x49')]({'where':{'id':_0x27ed13['params']['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x4b305e,null))[_0x7b93('0x26')](saveUpdates(_0x27ed13[_0x7b93('0x4b')],null))[_0x7b93('0x26')](respondWithResult(_0x4b305e,null))[_0x7b93('0x52')](handleError(_0x4b305e,null));};exports['destroy']=function(_0x3b523d,_0x212318){return db['Campaign']['find']({'where':{'id':_0x3b523d[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x212318,null))[_0x7b93('0x26')](removeEntity(_0x212318,null))[_0x7b93('0x52')](handleError(_0x212318,null));};exports[_0x7b93('0x5a')]=function(_0x38bb59,_0xf5bbca,_0x201a35){var _0x4198b5={'raw':!![],'where':{}};var _0x17bf75={};var _0x15b141={'count':0x0,'rows':[]};return db[_0x7b93('0x48')][_0x7b93('0x5b')]({'where':{'id':_0x38bb59[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0xf5bbca,null))['then'](function(_0x32ea93){if(_0x32ea93){_0x17bf75[_0x7b93('0x32')]=_[_0x7b93('0x46')](db[_0x7b93('0x5c')][_0x7b93('0x2e')]);_0x17bf75[_0x7b93('0x33')]=_['keys'](_0x38bb59[_0x7b93('0x33')]);_0x17bf75[_0x7b93('0x34')]=_[_0x7b93('0x35')](_0x17bf75[_0x7b93('0x32')],_0x17bf75['query']);_0x4198b5['attributes']=_[_0x7b93('0x35')](_0x17bf75[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0x38bb59[_0x7b93('0x33')][_0x7b93('0x37')]));_0x4198b5[_0x7b93('0x36')]=_0x4198b5[_0x7b93('0x36')][_0x7b93('0x38')]?_0x4198b5[_0x7b93('0x36')]:_0x17bf75[_0x7b93('0x32')];if(!_0x38bb59[_0x7b93('0x33')][_0x7b93('0x39')](_0x7b93('0x3a'))){_0x4198b5[_0x7b93('0x1e')]=qs[_0x7b93('0x1e')](_0x38bb59['query'][_0x7b93('0x1e')]);_0x4198b5[_0x7b93('0x1c')]=qs['offset'](_0x38bb59[_0x7b93('0x33')]['offset']);}_0x4198b5['order']=qs[_0x7b93('0x3b')](_0x38bb59[_0x7b93('0x33')][_0x7b93('0x3b')]);_0x4198b5[_0x7b93('0x3c')]=qs[_0x7b93('0x34')](_[_0x7b93('0x3d')](_0x38bb59['query'],_0x17bf75[_0x7b93('0x34')]));_0x4198b5[_0x7b93('0x3c')][_0x7b93('0x5d')]=_0x32ea93['id'];if(_0x38bb59[_0x7b93('0x33')][_0x7b93('0x3f')]){_0x4198b5[_0x7b93('0x3c')]=_[_0x7b93('0x40')](_0x4198b5[_0x7b93('0x3c')],{'$or':_[_0x7b93('0x2d')](_0x4198b5[_0x7b93('0x36')],function(_0x46600e){var _0x4a345b={};_0x4a345b[_0x46600e]={'$like':'%'+_0x38bb59[_0x7b93('0x33')][_0x7b93('0x3f')]+'%'};return _0x4a345b;})});}_0x4198b5=_[_0x7b93('0x40')]({},_0x4198b5,_0x38bb59[_0x7b93('0x47')]);return db[_0x7b93('0x5c')][_0x7b93('0x1f')]({'where':_0x4198b5['where']})[_0x7b93('0x26')](function(_0x4197cc){_0x15b141['count']=_0x4197cc;if(_0x38bb59[_0x7b93('0x33')][_0x7b93('0x41')]){_0x4198b5[_0x7b93('0x42')]=[{'all':!![]}];}return db[_0x7b93('0x5c')][_0x7b93('0x43')](_0x4198b5);})['then'](function(_0x1a9188){_0x15b141[_0x7b93('0x44')]=_0x1a9188;return _0x15b141;});}})[_0x7b93('0x26')](respondWithFilteredResult(_0xf5bbca,_0x4198b5))[_0x7b93('0x52')](handleError(_0xf5bbca,null));};exports[_0x7b93('0x5e')]=function(_0x37bf21,_0x48471e,_0x76f0cb){var _0xbfa81a={'raw':!![],'where':{}};var _0x4be220={};var _0xa23a1b={'count':0x0,'rows':[]};return db[_0x7b93('0x48')]['findOne']({'where':{'id':_0x37bf21[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x48471e,null))[_0x7b93('0x26')](function(_0x5def75){if(_0x5def75){_0x4be220[_0x7b93('0x32')]=_[_0x7b93('0x46')](db[_0x7b93('0x5f')][_0x7b93('0x2e')]);_0x4be220[_0x7b93('0x33')]=_['keys'](_0x37bf21[_0x7b93('0x33')]);_0x4be220[_0x7b93('0x34')]=_[_0x7b93('0x35')](_0x4be220[_0x7b93('0x32')],_0x4be220[_0x7b93('0x33')]);_0xbfa81a[_0x7b93('0x36')]=_['intersection'](_0x4be220[_0x7b93('0x32')],qs['fields'](_0x37bf21[_0x7b93('0x33')][_0x7b93('0x37')]));_0xbfa81a[_0x7b93('0x36')]=_0xbfa81a['attributes'][_0x7b93('0x38')]?_0xbfa81a[_0x7b93('0x36')]:_0x4be220['model'];if(!_0x37bf21[_0x7b93('0x33')][_0x7b93('0x39')](_0x7b93('0x3a'))){_0xbfa81a[_0x7b93('0x1e')]=qs[_0x7b93('0x1e')](_0x37bf21[_0x7b93('0x33')]['limit']);_0xbfa81a[_0x7b93('0x1c')]=qs[_0x7b93('0x1c')](_0x37bf21['query'][_0x7b93('0x1c')]);}_0xbfa81a['order']=qs[_0x7b93('0x3b')](_0x37bf21['query'][_0x7b93('0x3b')]);_0xbfa81a['where']=qs[_0x7b93('0x34')](_[_0x7b93('0x3d')](_0x37bf21['query'],_0x4be220[_0x7b93('0x34')]));_0xbfa81a[_0x7b93('0x3c')][_0x7b93('0x5d')]=_0x5def75['id'];if(_0x37bf21[_0x7b93('0x33')][_0x7b93('0x3f')]){_0xbfa81a['where']=_[_0x7b93('0x40')](_0xbfa81a[_0x7b93('0x3c')],{'$or':_['map'](_0xbfa81a[_0x7b93('0x36')],function(_0x35c7e3){var _0x38497a={};_0x38497a[_0x35c7e3]={'$like':'%'+_0x37bf21['query'][_0x7b93('0x3f')]+'%'};return _0x38497a;})});}_0xbfa81a=_['merge']({},_0xbfa81a,_0x37bf21[_0x7b93('0x47')]);return db[_0x7b93('0x5f')]['count']({'where':_0xbfa81a['where']})['then'](function(_0x2c7bdd){_0xa23a1b['count']=_0x2c7bdd;if(_0x37bf21[_0x7b93('0x33')][_0x7b93('0x41')]){_0xbfa81a['include']=[{'all':!![]}];}return db[_0x7b93('0x5f')][_0x7b93('0x43')](_0xbfa81a);})[_0x7b93('0x26')](function(_0x3ab715){_0xa23a1b['rows']=_0x3ab715;return _0xa23a1b;});}})['then'](respondWithFilteredResult(_0x48471e,_0xbfa81a))['catch'](handleError(_0x48471e,null));};exports[_0x7b93('0x60')]=function(_0xfed1c7,_0x41a309,_0x3a4e05){var _0x2188d2={'raw':!![],'where':{}};var _0x5e202f={};var _0x211f2e={'count':0x0,'rows':[]};return db[_0x7b93('0x48')]['findOne']({'where':{'id':_0xfed1c7[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x41a309,null))[_0x7b93('0x26')](function(_0x5a04ad){if(_0x5a04ad){_0x5e202f['model']=_['keys'](db['CmHopperFinal'][_0x7b93('0x2e')]);_0x5e202f[_0x7b93('0x33')]=_[_0x7b93('0x46')](_0xfed1c7[_0x7b93('0x33')]);_0x5e202f[_0x7b93('0x34')]=_[_0x7b93('0x35')](_0x5e202f[_0x7b93('0x32')],_0x5e202f[_0x7b93('0x33')]);_0x2188d2[_0x7b93('0x36')]=_[_0x7b93('0x35')](_0x5e202f[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0xfed1c7[_0x7b93('0x33')]['fields']));_0x2188d2[_0x7b93('0x36')]=_0x2188d2[_0x7b93('0x36')][_0x7b93('0x38')]?_0x2188d2['attributes']:_0x5e202f['model'];if(!_0xfed1c7[_0x7b93('0x33')][_0x7b93('0x39')](_0x7b93('0x3a'))){_0x2188d2[_0x7b93('0x1e')]=qs[_0x7b93('0x1e')](_0xfed1c7[_0x7b93('0x33')][_0x7b93('0x1e')]);_0x2188d2['offset']=qs['offset'](_0xfed1c7[_0x7b93('0x33')][_0x7b93('0x1c')]);}_0x2188d2[_0x7b93('0x61')]=qs[_0x7b93('0x3b')](_0xfed1c7[_0x7b93('0x33')][_0x7b93('0x3b')]);_0x2188d2[_0x7b93('0x3c')]=qs[_0x7b93('0x34')](_[_0x7b93('0x3d')](_0xfed1c7['query'],_0x5e202f[_0x7b93('0x34')]));_0x2188d2[_0x7b93('0x3c')][_0x7b93('0x5d')]=_0x5a04ad['id'];if(_0xfed1c7[_0x7b93('0x33')]['filter']){_0x2188d2[_0x7b93('0x3c')]=_['merge'](_0x2188d2['where'],{'$or':_['map'](_0x2188d2[_0x7b93('0x36')],function(_0x59585a){var _0x4f9ae7={};_0x4f9ae7[_0x59585a]={'$like':'%'+_0xfed1c7['query'][_0x7b93('0x3f')]+'%'};return _0x4f9ae7;})});}_0x2188d2=_[_0x7b93('0x40')]({},_0x2188d2,_0xfed1c7[_0x7b93('0x47')]);return db['CmHopperFinal'][_0x7b93('0x1f')]({'where':_0x2188d2['where']})['then'](function(_0x57f396){_0x211f2e[_0x7b93('0x1f')]=_0x57f396;if(_0xfed1c7['query'][_0x7b93('0x41')]){_0x2188d2[_0x7b93('0x42')]=[{'all':!![]}];}return db[_0x7b93('0x62')][_0x7b93('0x43')](_0x2188d2);})[_0x7b93('0x26')](function(_0x22ffb9){_0x211f2e[_0x7b93('0x44')]=_0x22ffb9;return _0x211f2e;});}})[_0x7b93('0x26')](respondWithFilteredResult(_0x41a309,_0x2188d2))[_0x7b93('0x52')](handleError(_0x41a309,null));};exports[_0x7b93('0x63')]=function(_0x2cf687,_0x3fb144,_0x402f74){var _0x2a3386={'raw':!![],'where':{}};var _0x1a8fe0={};var _0x497824={'count':0x0,'rows':[]};return db[_0x7b93('0x48')][_0x7b93('0x5b')]({'where':{'id':_0x2cf687[_0x7b93('0x55')]['id']}})['then'](handleEntityNotFound(_0x3fb144,null))[_0x7b93('0x26')](function(_0x4ad231){if(_0x4ad231){_0x1a8fe0[_0x7b93('0x32')]=_[_0x7b93('0x46')](db[_0x7b93('0x64')]['rawAttributes']);_0x1a8fe0[_0x7b93('0x33')]=_[_0x7b93('0x46')](_0x2cf687[_0x7b93('0x33')]);_0x1a8fe0['filters']=_['intersection'](_0x1a8fe0[_0x7b93('0x32')],_0x1a8fe0[_0x7b93('0x33')]);_0x2a3386[_0x7b93('0x36')]=_[_0x7b93('0x35')](_0x1a8fe0[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0x2cf687['query'][_0x7b93('0x37')]));_0x2a3386[_0x7b93('0x36')]=_0x2a3386[_0x7b93('0x36')][_0x7b93('0x38')]?_0x2a3386[_0x7b93('0x36')]:_0x1a8fe0['model'];if(!_0x2cf687[_0x7b93('0x33')][_0x7b93('0x39')](_0x7b93('0x3a'))){_0x2a3386[_0x7b93('0x1e')]=qs[_0x7b93('0x1e')](_0x2cf687[_0x7b93('0x33')][_0x7b93('0x1e')]);_0x2a3386[_0x7b93('0x1c')]=qs[_0x7b93('0x1c')](_0x2cf687[_0x7b93('0x33')][_0x7b93('0x1c')]);}_0x2a3386[_0x7b93('0x61')]=qs[_0x7b93('0x3b')](_0x2cf687[_0x7b93('0x33')][_0x7b93('0x3b')]);_0x2a3386[_0x7b93('0x3c')]=qs[_0x7b93('0x34')](_[_0x7b93('0x3d')](_0x2cf687[_0x7b93('0x33')],_0x1a8fe0[_0x7b93('0x34')]));_0x2a3386[_0x7b93('0x3c')][_0x7b93('0x5d')]=_0x4ad231['id'];if(_0x2cf687['query'][_0x7b93('0x3f')]){_0x2a3386[_0x7b93('0x3c')]=_[_0x7b93('0x40')](_0x2a3386[_0x7b93('0x3c')],{'$or':_[_0x7b93('0x2d')](_0x2a3386[_0x7b93('0x36')],function(_0x561681){var _0xe2ff83={};_0xe2ff83[_0x561681]={'$like':'%'+_0x2cf687['query'][_0x7b93('0x3f')]+'%'};return _0xe2ff83;})});}_0x2a3386=_['merge']({},_0x2a3386,_0x2cf687['options']);return db[_0x7b93('0x64')][_0x7b93('0x1f')]({'where':_0x2a3386[_0x7b93('0x3c')]})[_0x7b93('0x26')](function(_0x7a64d){_0x497824[_0x7b93('0x1f')]=_0x7a64d;if(_0x2cf687[_0x7b93('0x33')]['includeAll']){_0x2a3386[_0x7b93('0x42')]=[{'all':!![]}];}return db[_0x7b93('0x64')]['findAll'](_0x2a3386);})[_0x7b93('0x26')](function(_0x43e320){_0x497824[_0x7b93('0x44')]=_0x43e320;return _0x497824;});}})['then'](respondWithFilteredResult(_0x3fb144,_0x2a3386))[_0x7b93('0x52')](handleError(_0x3fb144,null));};exports[_0x7b93('0x65')]=function(_0x4d77ac,_0x1d0f29,_0xc49d43){var _0xc34255={};var _0x58fb89={};var _0x3a9d3c;var _0x1d7efb;return db['Campaign'][_0x7b93('0x5b')]({'where':{'id':_0x4d77ac[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x1d0f29,null))[_0x7b93('0x26')](function(_0x1d0d9c){if(_0x1d0d9c){_0x3a9d3c=_0x1d0d9c;_0x58fb89[_0x7b93('0x32')]=_[_0x7b93('0x46')](db[_0x7b93('0x66')][_0x7b93('0x2e')]);_0x58fb89[_0x7b93('0x33')]=_[_0x7b93('0x46')](_0x4d77ac[_0x7b93('0x33')]);_0x58fb89['filters']=_[_0x7b93('0x35')](_0x58fb89[_0x7b93('0x32')],_0x58fb89[_0x7b93('0x33')]);_0xc34255['attributes']=_[_0x7b93('0x35')](_0x58fb89['model'],qs[_0x7b93('0x37')](_0x4d77ac[_0x7b93('0x33')][_0x7b93('0x37')]));_0xc34255[_0x7b93('0x36')]=_0xc34255['attributes'][_0x7b93('0x38')]?_0xc34255['attributes']:_0x58fb89[_0x7b93('0x32')];_0xc34255[_0x7b93('0x61')]=qs[_0x7b93('0x3b')](_0x4d77ac[_0x7b93('0x33')][_0x7b93('0x3b')]);_0xc34255[_0x7b93('0x3c')]=qs[_0x7b93('0x34')](_[_0x7b93('0x3d')](_0x4d77ac[_0x7b93('0x33')],_0x58fb89['filters']));if(_0x4d77ac[_0x7b93('0x33')][_0x7b93('0x3f')]){_0xc34255[_0x7b93('0x3c')]=_['merge'](_0xc34255[_0x7b93('0x3c')],{'$or':_[_0x7b93('0x2d')](_0xc34255['attributes'],function(_0x2053e6){var _0x47f044={};_0x47f044[_0x2053e6]={'$like':'%'+_0x4d77ac[_0x7b93('0x33')]['filter']+'%'};return _0x47f044;})});}_0xc34255=_[_0x7b93('0x40')]({},_0xc34255,_0x4d77ac[_0x7b93('0x47')]);return _0x3a9d3c['getLists'](_0xc34255);}})[_0x7b93('0x26')](function(_0x42a325){if(_0x42a325){_0x1d7efb=_0x42a325[_0x7b93('0x38')];if(!_0x4d77ac[_0x7b93('0x33')][_0x7b93('0x39')](_0x7b93('0x3a'))){_0xc34255[_0x7b93('0x1e')]=qs['limit'](_0x4d77ac[_0x7b93('0x33')]['limit']);_0xc34255[_0x7b93('0x1c')]=qs[_0x7b93('0x1c')](_0x4d77ac[_0x7b93('0x33')][_0x7b93('0x1c')]);}return _0x3a9d3c['getLists'](_0xc34255);}})[_0x7b93('0x26')](function(_0x3def95){if(_0x3def95){return _0x3def95?{'count':_0x1d7efb,'rows':_0x3def95}:null;}})[_0x7b93('0x26')](respondWithResult(_0x1d0f29,null))['catch'](handleError(_0x1d0f29,null));};exports[_0x7b93('0x67')]=function(_0x55a81a,_0x12e5b2,_0x16550e){var _0x11bdf7,_0x3d4fa8;return db[_0x7b93('0x48')][_0x7b93('0x49')]({'where':{'id':_0x55a81a['params']['id']}})['then'](handleEntityNotFound(_0x12e5b2,null))['then'](function(_0x2306b8){if(_0x2306b8){_0x3d4fa8=_0x2306b8;return _0x2306b8['addLists'](_0x55a81a[_0x7b93('0x4b')][_0x7b93('0x68')],_[_0x7b93('0x56')](_0x55a81a[_0x7b93('0x4b')],[_0x7b93('0x68'),'id'])||{});}return null;})[_0x7b93('0x69')](function(_0x31654f){var _0x427edd;_0x11bdf7=_0x31654f||[];var _0xbbe260=[];if(_0x31654f){for(var _0x5a9d84=0x0;_0x5a9d84<_0x31654f[_0x7b93('0x38')];_0x5a9d84+=0x1){var _0x2b4daf=_0x31654f[_0x5a9d84][_0x7b93('0x27')]({'plain':!![]});_0x3d4fa8[_0x7b93('0x6a')]=_0x55a81a['body'][_0x7b93('0x6a')]?_0x55a81a[_0x7b93('0x4b')][_0x7b93('0x6a')]:_0x3d4fa8[_0x7b93('0x6a')];switch(_0x3d4fa8[_0x7b93('0x6a')]){case _0x7b93('0x6b'):_0x427edd=squel[_0x7b93('0x6c')]()[_0x7b93('0x6d')](_0x7b93('0x6e'))[_0x7b93('0x6f')](['phone',_0x7b93('0x70'),'ContactId',_0x7b93('0x71'),_0x7b93('0x5d'),_0x7b93('0x57'),_0x7b93('0x58')],squel[_0x7b93('0x72')]()[_0x7b93('0x73')](_0x7b93('0x74'),_0x7b93('0x74'))[_0x7b93('0x73')](_0x7b93('0x75'),'scheduledAt')[_0x7b93('0x73')]('id',_0x7b93('0x76'))['field'](_0x2b4daf[_0x7b93('0x77')][_0x7b93('0x78')](),_0x7b93('0x71'))[_0x7b93('0x73')](_0x55a81a['params']['id']['toString'](),'CampaignId')['field'](_0x7b93('0x75'),_0x7b93('0x57'))[_0x7b93('0x73')](_0x7b93('0x75'),_0x7b93('0x58'))['from'](_0x7b93('0x79'))[_0x7b93('0x3c')](_0x7b93('0x7a'))['where']('ListId\x20=\x20?',_0x2b4daf[_0x7b93('0x77')][_0x7b93('0x78')]())['where'](_0x7b93('0x7b'))[_0x7b93('0x3c')](_0x7b93('0x7c'),squel[_0x7b93('0x72')]()[_0x7b93('0x73')](_0x7b93('0x7d'))[_0x7b93('0x7e')](_0x7b93('0x7f'))[_0x7b93('0x3c')](_0x7b93('0x80'),_0x55a81a['params']['id'][_0x7b93('0x78')]()))[_0x7b93('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x7b93('0x72')]()[_0x7b93('0x73')]('COALESCE(phone,\x27\x27)')[_0x7b93('0x7e')](_0x7b93('0x6e'))[_0x7b93('0x3c')]('CampaignId\x20=\x20?',_0x55a81a[_0x7b93('0x55')]['id']['toString']())))['toString']();break;case _0x7b93('0x81'):_0x427edd=squel[_0x7b93('0x6c')]()[_0x7b93('0x6d')](_0x7b93('0x6e'))[_0x7b93('0x6f')]([_0x7b93('0x74'),_0x7b93('0x70'),_0x7b93('0x76'),'ListId',_0x7b93('0x5d'),_0x7b93('0x57'),'updatedAt'],squel[_0x7b93('0x72')]()[_0x7b93('0x73')]('phone',_0x7b93('0x74'))[_0x7b93('0x73')]('NOW()','scheduledAt')[_0x7b93('0x73')]('id','ContactId')[_0x7b93('0x73')](_0x2b4daf[_0x7b93('0x77')][_0x7b93('0x78')](),_0x7b93('0x71'))['field'](_0x55a81a['params']['id']['toString'](),_0x7b93('0x5d'))[_0x7b93('0x73')](_0x7b93('0x75'),'createdAt')[_0x7b93('0x73')](_0x7b93('0x75'),_0x7b93('0x58'))[_0x7b93('0x7e')](_0x7b93('0x79'))[_0x7b93('0x3c')](_0x7b93('0x7a'))[_0x7b93('0x3c')]('ListId\x20=\x20?',_0x2b4daf[_0x7b93('0x77')][_0x7b93('0x78')]())[_0x7b93('0x3c')](_0x7b93('0x7b'))['where'](_0x7b93('0x7c'),squel[_0x7b93('0x72')]()[_0x7b93('0x73')](_0x7b93('0x82'))[_0x7b93('0x7e')](_0x7b93('0x6e'))[_0x7b93('0x3c')](_0x7b93('0x80'),_0x55a81a[_0x7b93('0x55')]['id']['toString']())))[_0x7b93('0x78')]();break;default:_0x427edd=squel[_0x7b93('0x6c')]()[_0x7b93('0x6d')](_0x7b93('0x6e'))[_0x7b93('0x6f')]([_0x7b93('0x74'),'scheduledAt','ContactId','ListId',_0x7b93('0x5d'),_0x7b93('0x57'),'updatedAt'],squel[_0x7b93('0x72')]()[_0x7b93('0x73')](_0x7b93('0x74'),_0x7b93('0x74'))[_0x7b93('0x73')](_0x7b93('0x75'),_0x7b93('0x70'))[_0x7b93('0x73')]('id','ContactId')[_0x7b93('0x73')](_0x2b4daf[_0x7b93('0x77')][_0x7b93('0x78')](),_0x7b93('0x71'))[_0x7b93('0x73')](_0x55a81a[_0x7b93('0x55')]['id'][_0x7b93('0x78')](),_0x7b93('0x5d'))[_0x7b93('0x73')](_0x7b93('0x75'),'createdAt')[_0x7b93('0x73')](_0x7b93('0x75'),_0x7b93('0x58'))[_0x7b93('0x7e')](_0x7b93('0x79'))[_0x7b93('0x3c')]('deletedAt\x20IS\x20NULL')[_0x7b93('0x3c')](_0x7b93('0x83'),_0x2b4daf[_0x7b93('0x77')][_0x7b93('0x78')]())[_0x7b93('0x3c')](_0x7b93('0x7b')))[_0x7b93('0x78')]();}_0xbbe260[_0x7b93('0x84')](db[_0x7b93('0x85')][_0x7b93('0x33')](_0x427edd));}return BPromise['all'](_0xbbe260);}})[_0x7b93('0x26')](function(){return _0x11bdf7;})[_0x7b93('0x26')](respondWithResult(_0x12e5b2,null))[_0x7b93('0x52')](handleError(_0x12e5b2,null));};exports[_0x7b93('0x86')]=function(_0x112d34,_0x47af2a,_0x3e096b){return db[_0x7b93('0x48')][_0x7b93('0x49')]({'where':{'id':_0x112d34[_0x7b93('0x55')]['id']}})['then'](handleEntityNotFound(_0x47af2a,null))[_0x7b93('0x26')](function(_0x48ced9){if(_0x48ced9){return _0x48ced9['removeLists'](_0x112d34[_0x7b93('0x33')][_0x7b93('0x68')]);}})[_0x7b93('0x26')](function(_0x4aeaa9){if(_0x4aeaa9){return db[_0x7b93('0x5c')]['destroy']({'where':{'ListId':_0x112d34['query'][_0x7b93('0x68')],'CampaignId':_0x112d34[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](function(){return _0x4aeaa9;});}})[_0x7b93('0x26')](respondWithStatusCode(_0x47af2a,null))[_0x7b93('0x52')](handleError(_0x47af2a,null));};exports[_0x7b93('0x87')]=function(_0x52d6d0,_0x1d5fd5,_0x5884ca){var _0x39a826={};var _0x127359={};var _0x138b21;var _0xdf114a;return db[_0x7b93('0x48')][_0x7b93('0x5b')]({'where':{'id':_0x52d6d0['params']['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x1d5fd5,null))[_0x7b93('0x26')](function(_0x5302a7){if(_0x5302a7){_0x138b21=_0x5302a7;_0x127359['model']=_[_0x7b93('0x46')](db['CmList']['rawAttributes']);_0x127359[_0x7b93('0x33')]=_['keys'](_0x52d6d0[_0x7b93('0x33')]);_0x127359['filters']=_['intersection'](_0x127359[_0x7b93('0x32')],_0x127359['query']);_0x39a826[_0x7b93('0x36')]=_['intersection'](_0x127359[_0x7b93('0x32')],qs[_0x7b93('0x37')](_0x52d6d0[_0x7b93('0x33')][_0x7b93('0x37')]));_0x39a826[_0x7b93('0x36')]=_0x39a826[_0x7b93('0x36')][_0x7b93('0x38')]?_0x39a826['attributes']:_0x127359[_0x7b93('0x32')];_0x39a826[_0x7b93('0x61')]=qs[_0x7b93('0x3b')](_0x52d6d0['query'][_0x7b93('0x3b')]);_0x39a826['where']=qs['filters'](_[_0x7b93('0x3d')](_0x52d6d0[_0x7b93('0x33')],_0x127359[_0x7b93('0x34')]));if(_0x52d6d0[_0x7b93('0x33')][_0x7b93('0x3f')]){_0x39a826['where']=_[_0x7b93('0x40')](_0x39a826[_0x7b93('0x3c')],{'$or':_[_0x7b93('0x2d')](_0x39a826[_0x7b93('0x36')],function(_0x34c4e6){var _0x30632b={};_0x30632b[_0x34c4e6]={'$like':'%'+_0x52d6d0[_0x7b93('0x33')][_0x7b93('0x3f')]+'%'};return _0x30632b;})});}_0x39a826=_['merge']({},_0x39a826,_0x52d6d0[_0x7b93('0x47')]);return _0x138b21[_0x7b93('0x87')](_0x39a826);}})[_0x7b93('0x26')](function(_0x5f3de7){if(_0x5f3de7){_0xdf114a=_0x5f3de7[_0x7b93('0x38')];if(!_0x52d6d0[_0x7b93('0x33')][_0x7b93('0x39')]('nolimit')){_0x39a826['limit']=qs[_0x7b93('0x1e')](_0x52d6d0['query'][_0x7b93('0x1e')]);_0x39a826['offset']=qs[_0x7b93('0x1c')](_0x52d6d0[_0x7b93('0x33')][_0x7b93('0x1c')]);}return _0x138b21['getBlackLists'](_0x39a826);}})['then'](function(_0x52887a){if(_0x52887a){return _0x52887a?{'count':_0xdf114a,'rows':_0x52887a}:null;}})[_0x7b93('0x26')](respondWithResult(_0x1d5fd5,null))['catch'](handleError(_0x1d5fd5,null));};exports[_0x7b93('0x88')]=function(_0x18ab1d,_0x28c2f3,_0x592c41){var _0x379aaf,_0x4aa173;return db[_0x7b93('0x48')][_0x7b93('0x49')]({'where':{'id':_0x18ab1d[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0x28c2f3,null))['then'](function(_0x5b017c){if(_0x5b017c){_0x4aa173=_0x5b017c;return _0x5b017c[_0x7b93('0x88')](_0x18ab1d['body'][_0x7b93('0x68')],_[_0x7b93('0x56')](_0x18ab1d[_0x7b93('0x4b')],[_0x7b93('0x68'),'id'])||{});}return null;})[_0x7b93('0x69')](function(_0xe9df27){var _0x192444;_0x379aaf=_0xe9df27||[];var _0x2b7c76=[];if(_0xe9df27){for(var _0x1d79a8=0x0;_0x1d79a8<_0xe9df27[_0x7b93('0x38')];_0x1d79a8+=0x1){var _0xa09dd1=_0xe9df27[_0x1d79a8][_0x7b93('0x27')]({'plain':!![]});_0x192444=squel[_0x7b93('0x6c')]()[_0x7b93('0x6d')]('cm_hopper_black')['fromQuery']([_0x7b93('0x74'),_0x7b93('0x76'),_0x7b93('0x71'),_0x7b93('0x5d'),_0x7b93('0x57'),'updatedAt'],squel[_0x7b93('0x72')]()[_0x7b93('0x73')](_0x7b93('0x74'),_0x7b93('0x74'))[_0x7b93('0x73')]('id',_0x7b93('0x76'))[_0x7b93('0x73')](_0xa09dd1['CmListId'][_0x7b93('0x78')](),_0x7b93('0x71'))[_0x7b93('0x73')](_0x18ab1d[_0x7b93('0x55')]['id'][_0x7b93('0x78')](),'CampaignId')[_0x7b93('0x73')](_0x7b93('0x75'),_0x7b93('0x57'))['field'](_0x7b93('0x75'),'updatedAt')[_0x7b93('0x7e')](_0x7b93('0x79'))[_0x7b93('0x3c')](_0x7b93('0x7a'))['where'](_0x7b93('0x83'),_0xa09dd1[_0x7b93('0x77')][_0x7b93('0x78')]())[_0x7b93('0x3c')](_0x7b93('0x7b')))[_0x7b93('0x78')]();_0x2b7c76[_0x7b93('0x84')](db[_0x7b93('0x85')][_0x7b93('0x33')](_0x192444));}return BPromise[_0x7b93('0x89')](_0x2b7c76);}})[_0x7b93('0x26')](function(){return _0x379aaf;})[_0x7b93('0x26')](respondWithResult(_0x28c2f3,null))[_0x7b93('0x52')](handleError(_0x28c2f3,null));};exports[_0x7b93('0x8a')]=function(_0xf0f38e,_0xb2cd04,_0x27ff56){return db[_0x7b93('0x48')]['find']({'where':{'id':_0xf0f38e['params']['id']}})[_0x7b93('0x26')](handleEntityNotFound(_0xb2cd04,null))[_0x7b93('0x26')](function(_0x2928db){if(_0x2928db){return _0x2928db['removeBlackLists'](_0xf0f38e[_0x7b93('0x33')][_0x7b93('0x68')]);}})[_0x7b93('0x26')](function(_0x16000f){if(_0x16000f){return db[_0x7b93('0x64')][_0x7b93('0x25')]({'where':{'ListId':_0xf0f38e['query'][_0x7b93('0x68')],'CampaignId':_0xf0f38e[_0x7b93('0x55')]['id']}})[_0x7b93('0x26')](function(){return _0x16000f;});}})[_0x7b93('0x26')](respondWithStatusCode(_0xb2cd04,null))['catch'](handleError(_0xb2cd04,null));};
\ No newline at end of file
+var _0x2402=['ListId','select','field','toString','NOW()','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?','insert','push','sequelize','all','removeLists','destroy','CmList','getBlackLists','addBlackLists','cm_hopper_black','ListId\x20=\x20?','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','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','sendStatus','end','json','offset','undefined','count','status','apply','reject','save','update','then','get','IvrCampaigns','UserProfileResource','error','name','send','index','map','Campaign','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','limit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','params','length','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','userProfileId','autoAssociation','getHoppers','findOne','CmHopper','hasOwnProperty','nolimit','CampaignId','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId'];(function(_0x40d728,_0x190ef2){var _0x207740=function(_0x116913){while(--_0x116913){_0x40d728['push'](_0x40d728['shift']());}};_0x207740(++_0x190ef2);}(_0x2402,0x132));var _0x2240=function(_0x1e35c8,_0x3a54bc){_0x1e35c8=_0x1e35c8-0x0;var _0x4446f5=_0x2402[_0x1e35c8];return _0x4446f5;};'use strict';var emlformat=require(_0x2240('0x0'));var rimraf=require(_0x2240('0x1'));var zipdir=require(_0x2240('0x2'));var jsonpatch=require(_0x2240('0x3'));var rp=require(_0x2240('0x4'));var moment=require(_0x2240('0x5'));var BPromise=require(_0x2240('0x6'));var Mustache=require(_0x2240('0x7'));var util=require(_0x2240('0x8'));var path=require(_0x2240('0x9'));var sox=require(_0x2240('0xa'));var csv=require('to-csv');var ejs=require(_0x2240('0xb'));var fs=require('fs');var fs_extra=require(_0x2240('0xc'));var _=require(_0x2240('0xd'));var squel=require(_0x2240('0xe'));var crypto=require(_0x2240('0xf'));var jsforce=require(_0x2240('0x10'));var deskjs=require(_0x2240('0x11'));var toCsv=require(_0x2240('0x12'));var querystring=require('querystring');var Papa=require(_0x2240('0x13'));var Redis=require(_0x2240('0x14'));var authService=require(_0x2240('0x15'));var qs=require(_0x2240('0x16'));var as=require(_0x2240('0x17'));var hardwareService=require(_0x2240('0x18'));var logger=require(_0x2240('0x19'))(_0x2240('0x1a'));var utils=require(_0x2240('0x1b'));var config=require(_0x2240('0x1c'));var licenseUtil=require(_0x2240('0x1d'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x158b5e,_0x5cbac6){_0x5cbac6=_0x5cbac6||0xcc;return function(_0x198c5a){if(_0x198c5a){return _0x158b5e[_0x2240('0x1e')](_0x5cbac6);}return _0x158b5e['status'](_0x5cbac6)[_0x2240('0x1f')]();};}function respondWithResult(_0x2c78c0,_0x24a7af){_0x24a7af=_0x24a7af||0xc8;return function(_0xc93b8){if(_0xc93b8){return _0x2c78c0['status'](_0x24a7af)[_0x2240('0x20')](_0xc93b8);}};}function respondWithFilteredResult(_0x1ce257,_0x2d12c2){return function(_0x4bd634){if(_0x4bd634){var _0x57b064=typeof _0x2d12c2[_0x2240('0x21')]==='undefined'&&typeof _0x2d12c2['limit']===_0x2240('0x22');var _0x55e7a2=_0x4bd634[_0x2240('0x23')];var _0x4f40aa=_0x57b064?0x0:_0x2d12c2[_0x2240('0x21')];var _0x495c2d=_0x57b064?_0x4bd634['count']:_0x2d12c2[_0x2240('0x21')]+_0x2d12c2['limit'];var _0x173c5d;if(_0x495c2d>=_0x55e7a2){_0x495c2d=_0x55e7a2;_0x173c5d=0xc8;}else{_0x173c5d=0xce;}_0x1ce257[_0x2240('0x24')](_0x173c5d);return _0x1ce257['set']('Content-Range',_0x4f40aa+'-'+_0x495c2d+'/'+_0x55e7a2)['json'](_0x4bd634);}return null;};}function patchUpdates(_0x49ba95){return function(_0x5de888){try{jsonpatch[_0x2240('0x25')](_0x5de888,_0x49ba95,!![]);}catch(_0x17753c){return BPromise[_0x2240('0x26')](_0x17753c);}return _0x5de888[_0x2240('0x27')]();};}function saveUpdates(_0x233ade,_0xfcf1e){return function(_0x5a5f6e){if(_0x5a5f6e){return _0x5a5f6e[_0x2240('0x28')](_0x233ade)['then'](function(_0x1a889c){return _0x1a889c;});}return null;};}function removeEntity(_0x1002c7,_0x84275){return function(_0x1329ad){if(_0x1329ad){return _0x1329ad['destroy']()[_0x2240('0x29')](function(){var _0xd6e999=_0x1329ad[_0x2240('0x2a')]({'plain':!![]});var _0x1c2c43=_0x2240('0x2b');return db[_0x2240('0x2c')]['destroy']({'where':{'type':_0x1c2c43,'resourceId':_0xd6e999['id']}})[_0x2240('0x29')](function(){return _0x1329ad;});})[_0x2240('0x29')](function(){_0x1002c7[_0x2240('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f0da6,_0x3828c1){return function(_0x53c337){if(!_0x53c337){_0x2f0da6['sendStatus'](0x194);}return _0x53c337;};}function handleError(_0x5dbb18,_0x42260c){_0x42260c=_0x42260c||0x1f4;return function(_0x4e9ad0){logger[_0x2240('0x2d')](_0x4e9ad0['stack']);if(_0x4e9ad0[_0x2240('0x2e')]){delete _0x4e9ad0[_0x2240('0x2e')];}_0x5dbb18['status'](_0x42260c)[_0x2240('0x2f')](_0x4e9ad0);};}exports[_0x2240('0x30')]=function(_0x55b1e1,_0x33e6c7){var _0x281214={},_0xeed78d={},_0x1bb61d={'count':0x0,'rows':[]};var _0x4255a2=_[_0x2240('0x31')](db[_0x2240('0x32')][_0x2240('0x33')],function(_0x1b6ea6){return{'name':_0x1b6ea6['fieldName'],'type':_0x1b6ea6[_0x2240('0x34')][_0x2240('0x35')]};});_0xeed78d[_0x2240('0x36')]=_[_0x2240('0x31')](_0x4255a2,'name');_0xeed78d[_0x2240('0x37')]=_[_0x2240('0x38')](_0x55b1e1[_0x2240('0x37')]);_0xeed78d['filters']=_[_0x2240('0x39')](_0xeed78d['model'],_0xeed78d[_0x2240('0x37')]);_0x281214[_0x2240('0x3a')]=_[_0x2240('0x39')](_0xeed78d['model'],qs[_0x2240('0x3b')](_0x55b1e1[_0x2240('0x37')][_0x2240('0x3b')]));_0x281214[_0x2240('0x3a')]=_0x281214['attributes']['length']?_0x281214[_0x2240('0x3a')]:_0xeed78d[_0x2240('0x36')];if(!_0x55b1e1[_0x2240('0x37')]['hasOwnProperty']('nolimit')){_0x281214[_0x2240('0x3c')]=qs['limit'](_0x55b1e1[_0x2240('0x37')][_0x2240('0x3c')]);_0x281214[_0x2240('0x21')]=qs['offset'](_0x55b1e1['query']['offset']);}_0x281214[_0x2240('0x3d')]=qs['sort'](_0x55b1e1['query'][_0x2240('0x3e')]);_0x281214['where']=qs[_0x2240('0x3f')](_[_0x2240('0x40')](_0x55b1e1[_0x2240('0x37')],_0xeed78d[_0x2240('0x3f')]),_0x4255a2);if(_0x55b1e1[_0x2240('0x37')][_0x2240('0x41')]){_0x281214[_0x2240('0x42')]=_[_0x2240('0x43')](_0x281214[_0x2240('0x42')],{'$or':_[_0x2240('0x31')](_0x4255a2,function(_0x1875d8){if(_0x1875d8[_0x2240('0x34')]!==_0x2240('0x44')){var _0xd0cc94={};_0xd0cc94[_0x1875d8[_0x2240('0x2e')]]={'$like':'%'+_0x55b1e1[_0x2240('0x37')][_0x2240('0x41')]+'%'};return _0xd0cc94;}})});}_0x281214=_[_0x2240('0x43')]({},_0x281214,_0x55b1e1[_0x2240('0x45')]);var _0x194c41={'where':_0x281214[_0x2240('0x42')]};return db[_0x2240('0x32')][_0x2240('0x23')](_0x194c41)[_0x2240('0x29')](function(_0x539f0f){_0x1bb61d[_0x2240('0x23')]=_0x539f0f;if(_0x55b1e1[_0x2240('0x37')][_0x2240('0x46')]){_0x281214[_0x2240('0x47')]=[{'all':!![]}];}return db[_0x2240('0x32')][_0x2240('0x48')](_0x281214);})[_0x2240('0x29')](function(_0x572d4d){_0x1bb61d['rows']=_0x572d4d;return _0x1bb61d;})[_0x2240('0x29')](respondWithFilteredResult(_0x33e6c7,_0x281214))['catch'](handleError(_0x33e6c7,null));};exports['show']=function(_0x4a4aad,_0x1f09a0){var _0x383925={'raw':![],'where':{'id':_0x4a4aad[_0x2240('0x49')]['id']}},_0x15f826={};_0x15f826[_0x2240('0x36')]=_[_0x2240('0x38')](db[_0x2240('0x32')][_0x2240('0x33')]);_0x15f826['query']=_[_0x2240('0x38')](_0x4a4aad['query']);_0x15f826[_0x2240('0x3f')]=_[_0x2240('0x39')](_0x15f826[_0x2240('0x36')],_0x15f826[_0x2240('0x37')]);_0x383925[_0x2240('0x3a')]=_[_0x2240('0x39')](_0x15f826[_0x2240('0x36')],qs[_0x2240('0x3b')](_0x4a4aad[_0x2240('0x37')]['fields']));_0x383925[_0x2240('0x3a')]=_0x383925[_0x2240('0x3a')][_0x2240('0x4a')]?_0x383925[_0x2240('0x3a')]:_0x15f826[_0x2240('0x36')];if(_0x4a4aad[_0x2240('0x37')][_0x2240('0x46')]){_0x383925[_0x2240('0x47')]=[{'all':!![]}];}_0x383925=_[_0x2240('0x43')]({},_0x383925,_0x4a4aad[_0x2240('0x45')]);return db[_0x2240('0x32')][_0x2240('0x4b')](_0x383925)['then'](handleEntityNotFound(_0x1f09a0,null))[_0x2240('0x29')](respondWithResult(_0x1f09a0,null))[_0x2240('0x4c')](handleError(_0x1f09a0,null));};exports[_0x2240('0x4d')]=function(_0x5e80f6,_0x264a35){return db[_0x2240('0x32')][_0x2240('0x4d')](_0x5e80f6[_0x2240('0x4e')],{})[_0x2240('0x29')](function(_0x36dfbd){var _0x546686=_0x5e80f6['user'][_0x2240('0x2a')]({'plain':!![]});if(!_0x546686)throw new Error(_0x2240('0x4f'));if(_0x546686[_0x2240('0x50')]===_0x2240('0x51')){var _0x43c9dd=_0x36dfbd[_0x2240('0x2a')]({'plain':!![]});var _0x3421d0='IvrCampaigns';return db[_0x2240('0x52')]['find']({'where':{'name':_0x3421d0,'userProfileId':_0x546686['userProfileId']},'raw':!![]})[_0x2240('0x29')](function(_0x5b58da){if(_0x5b58da&&_0x5b58da['autoAssociation']===0x0){return db['UserProfileResource'][_0x2240('0x4d')]({'name':_0x43c9dd[_0x2240('0x2e')],'resourceId':_0x43c9dd['id'],'type':_0x5b58da[_0x2240('0x2e')],'sectionId':_0x5b58da['id']},{})[_0x2240('0x29')](function(){return _0x36dfbd;});}else{return _0x36dfbd;}})['catch'](function(_0x4290e4){logger['error'](_0x2240('0x53'),_0x4290e4);throw _0x4290e4;});}return _0x36dfbd;})['then'](respondWithResult(_0x264a35,0xc9))[_0x2240('0x4c')](handleError(_0x264a35,null));};exports['clone']=function(_0x397c93,_0x20ea8a){var _0x25d655={'where':{'id':_0x397c93[_0x2240('0x49')]['id']}},_0xc86e88={};_0xc86e88[_0x2240('0x36')]=_['keys'](db[_0x2240('0x32')][_0x2240('0x33')]);_0x25d655[_0x2240('0x3a')]=_[_0x2240('0x39')](_0xc86e88[_0x2240('0x36')],qs[_0x2240('0x3b')](_0x397c93[_0x2240('0x37')]['fields']));_0x25d655['attributes']=_0x25d655[_0x2240('0x3a')]['length']?_0x25d655['attributes']:_0xc86e88[_0x2240('0x36')];if(_0x397c93[_0x2240('0x37')][_0x2240('0x46')]){_0x25d655['include']=[{'all':!![]}];}_0x25d655=_['merge']({},_0x25d655,_0x397c93['options']);return db['Campaign']['find'](_0x25d655)[_0x2240('0x29')](handleEntityNotFound(_0x20ea8a,null))[_0x2240('0x29')](function(_0x471d0c){if(_0x471d0c){var _0x5df75f=_0x471d0c[_0x2240('0x2a')]({'plain':!![]});_0x5df75f=qs[_0x2240('0x54')](_0x5df75f,['id',_0x2240('0x55'),_0x2240('0x56')]);_0x397c93['body']=_[_0x2240('0x54')](_0x397c93['body'],['id','createdAt','updatedAt']);return db[_0x2240('0x32')][_0x2240('0x4d')](_[_0x2240('0x43')](_0x5df75f,_0x397c93[_0x2240('0x4e')]),{'include':_0x397c93[_0x2240('0x37')]['includeAll']?[{'all':!![]}]:undefined})[_0x2240('0x29')](function(_0x13a5c2){var _0x58bf12=_0x397c93[_0x2240('0x51')][_0x2240('0x2a')]({'plain':!![]});if(!_0x58bf12)throw new Error(_0x2240('0x4f'));if(_0x58bf12['role']===_0x2240('0x51')){var _0x183f33=_0x13a5c2[_0x2240('0x2a')]({'plain':!![]});var _0x4d599b='IvrCampaigns';return db[_0x2240('0x52')][_0x2240('0x4b')]({'where':{'name':_0x4d599b,'userProfileId':_0x58bf12[_0x2240('0x57')]},'raw':!![]})[_0x2240('0x29')](function(_0x597077){if(_0x597077&&_0x597077[_0x2240('0x58')]===0x0){return db['UserProfileResource'][_0x2240('0x4d')]({'name':_0x183f33['name'],'resourceId':_0x183f33['id'],'type':_0x597077[_0x2240('0x2e')],'sectionId':_0x597077['id']},{})['then'](function(){return _0x13a5c2;});}else{return _0x13a5c2;}})[_0x2240('0x4c')](function(_0xaa7024){logger[_0x2240('0x2d')](_0x2240('0x53'),_0xaa7024);throw _0xaa7024;});}return _0x13a5c2;});}})[_0x2240('0x29')](respondWithResult(_0x20ea8a,0xc9))[_0x2240('0x4c')](handleError(_0x20ea8a,null));};exports[_0x2240('0x28')]=function(_0x1730e3,_0x5b0e21){if(_0x1730e3['body']['id']){delete _0x1730e3[_0x2240('0x4e')]['id'];}return db[_0x2240('0x32')][_0x2240('0x4b')]({'where':{'id':_0x1730e3[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x5b0e21,null))['then'](saveUpdates(_0x1730e3[_0x2240('0x4e')],null))[_0x2240('0x29')](respondWithResult(_0x5b0e21,null))[_0x2240('0x4c')](handleError(_0x5b0e21,null));};exports['destroy']=function(_0x4e98aa,_0x281f92){return db[_0x2240('0x32')]['find']({'where':{'id':_0x4e98aa[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x281f92,null))[_0x2240('0x29')](removeEntity(_0x281f92,null))[_0x2240('0x4c')](handleError(_0x281f92,null));};exports[_0x2240('0x59')]=function(_0x15766d,_0x450a6d,_0x3b4f76){var _0x2f85a3={'raw':!![],'where':{}};var _0x14b8f3={};var _0x42de6d={'count':0x0,'rows':[]};return db[_0x2240('0x32')][_0x2240('0x5a')]({'where':{'id':_0x15766d[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x450a6d,null))[_0x2240('0x29')](function(_0x31edcd){if(_0x31edcd){_0x14b8f3['model']=_[_0x2240('0x38')](db[_0x2240('0x5b')]['rawAttributes']);_0x14b8f3[_0x2240('0x37')]=_[_0x2240('0x38')](_0x15766d[_0x2240('0x37')]);_0x14b8f3['filters']=_[_0x2240('0x39')](_0x14b8f3[_0x2240('0x36')],_0x14b8f3[_0x2240('0x37')]);_0x2f85a3[_0x2240('0x3a')]=_[_0x2240('0x39')](_0x14b8f3[_0x2240('0x36')],qs['fields'](_0x15766d[_0x2240('0x37')]['fields']));_0x2f85a3['attributes']=_0x2f85a3['attributes'][_0x2240('0x4a')]?_0x2f85a3['attributes']:_0x14b8f3[_0x2240('0x36')];if(!_0x15766d[_0x2240('0x37')][_0x2240('0x5c')](_0x2240('0x5d'))){_0x2f85a3['limit']=qs[_0x2240('0x3c')](_0x15766d['query']['limit']);_0x2f85a3[_0x2240('0x21')]=qs[_0x2240('0x21')](_0x15766d[_0x2240('0x37')][_0x2240('0x21')]);}_0x2f85a3[_0x2240('0x3d')]=qs[_0x2240('0x3e')](_0x15766d['query'][_0x2240('0x3e')]);_0x2f85a3[_0x2240('0x42')]=qs[_0x2240('0x3f')](_[_0x2240('0x40')](_0x15766d[_0x2240('0x37')],_0x14b8f3[_0x2240('0x3f')]));_0x2f85a3[_0x2240('0x42')][_0x2240('0x5e')]=_0x31edcd['id'];if(_0x15766d['query'][_0x2240('0x41')]){_0x2f85a3[_0x2240('0x42')]=_['merge'](_0x2f85a3[_0x2240('0x42')],{'$or':_[_0x2240('0x31')](_0x2f85a3[_0x2240('0x3a')],function(_0x171591){var _0x336736={};_0x336736[_0x171591]={'$like':'%'+_0x15766d[_0x2240('0x37')][_0x2240('0x41')]+'%'};return _0x336736;})});}_0x2f85a3=_[_0x2240('0x43')]({},_0x2f85a3,_0x15766d[_0x2240('0x45')]);return db[_0x2240('0x5b')]['count']({'where':_0x2f85a3[_0x2240('0x42')]})[_0x2240('0x29')](function(_0xcf2369){_0x42de6d['count']=_0xcf2369;if(_0x15766d['query'][_0x2240('0x46')]){_0x2f85a3[_0x2240('0x47')]=[{'all':!![]}];}return db[_0x2240('0x5b')][_0x2240('0x48')](_0x2f85a3);})[_0x2240('0x29')](function(_0x17020e){_0x42de6d[_0x2240('0x5f')]=_0x17020e;return _0x42de6d;});}})[_0x2240('0x29')](respondWithFilteredResult(_0x450a6d,_0x2f85a3))['catch'](handleError(_0x450a6d,null));};exports[_0x2240('0x60')]=function(_0x2cbebc,_0x998c6,_0x524abc){var _0x1e8f58={'raw':!![],'where':{}};var _0x2807ee={};var _0x19dbf8={'count':0x0,'rows':[]};return db[_0x2240('0x32')][_0x2240('0x5a')]({'where':{'id':_0x2cbebc[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x998c6,null))['then'](function(_0x43ddc8){if(_0x43ddc8){_0x2807ee[_0x2240('0x36')]=_[_0x2240('0x38')](db['CmHopperHistory'][_0x2240('0x33')]);_0x2807ee[_0x2240('0x37')]=_['keys'](_0x2cbebc[_0x2240('0x37')]);_0x2807ee['filters']=_[_0x2240('0x39')](_0x2807ee['model'],_0x2807ee[_0x2240('0x37')]);_0x1e8f58['attributes']=_[_0x2240('0x39')](_0x2807ee[_0x2240('0x36')],qs['fields'](_0x2cbebc[_0x2240('0x37')][_0x2240('0x3b')]));_0x1e8f58[_0x2240('0x3a')]=_0x1e8f58[_0x2240('0x3a')][_0x2240('0x4a')]?_0x1e8f58[_0x2240('0x3a')]:_0x2807ee[_0x2240('0x36')];if(!_0x2cbebc[_0x2240('0x37')][_0x2240('0x5c')](_0x2240('0x5d'))){_0x1e8f58[_0x2240('0x3c')]=qs[_0x2240('0x3c')](_0x2cbebc['query']['limit']);_0x1e8f58[_0x2240('0x21')]=qs[_0x2240('0x21')](_0x2cbebc[_0x2240('0x37')][_0x2240('0x21')]);}_0x1e8f58[_0x2240('0x3d')]=qs['sort'](_0x2cbebc['query']['sort']);_0x1e8f58[_0x2240('0x42')]=qs['filters'](_[_0x2240('0x40')](_0x2cbebc['query'],_0x2807ee[_0x2240('0x3f')]));_0x1e8f58['where'][_0x2240('0x5e')]=_0x43ddc8['id'];if(_0x2cbebc['query'][_0x2240('0x41')]){_0x1e8f58[_0x2240('0x42')]=_['merge'](_0x1e8f58[_0x2240('0x42')],{'$or':_[_0x2240('0x31')](_0x1e8f58[_0x2240('0x3a')],function(_0x200f93){var _0x4126ef={};_0x4126ef[_0x200f93]={'$like':'%'+_0x2cbebc['query'][_0x2240('0x41')]+'%'};return _0x4126ef;})});}_0x1e8f58=_[_0x2240('0x43')]({},_0x1e8f58,_0x2cbebc[_0x2240('0x45')]);return db[_0x2240('0x61')][_0x2240('0x23')]({'where':_0x1e8f58[_0x2240('0x42')]})[_0x2240('0x29')](function(_0x29642a){_0x19dbf8['count']=_0x29642a;if(_0x2cbebc[_0x2240('0x37')][_0x2240('0x46')]){_0x1e8f58[_0x2240('0x47')]=[{'all':!![]}];}return db[_0x2240('0x61')][_0x2240('0x48')](_0x1e8f58);})[_0x2240('0x29')](function(_0x584c9f){_0x19dbf8[_0x2240('0x5f')]=_0x584c9f;return _0x19dbf8;});}})[_0x2240('0x29')](respondWithFilteredResult(_0x998c6,_0x1e8f58))[_0x2240('0x4c')](handleError(_0x998c6,null));};exports[_0x2240('0x62')]=function(_0xce93f1,_0x10dbdc,_0x1934eb){var _0x281acf={'raw':!![],'where':{}};var _0x3ca500={};var _0x131999={'count':0x0,'rows':[]};return db[_0x2240('0x32')]['findOne']({'where':{'id':_0xce93f1[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x10dbdc,null))[_0x2240('0x29')](function(_0x4b347d){if(_0x4b347d){_0x3ca500['model']=_[_0x2240('0x38')](db[_0x2240('0x63')][_0x2240('0x33')]);_0x3ca500[_0x2240('0x37')]=_[_0x2240('0x38')](_0xce93f1['query']);_0x3ca500[_0x2240('0x3f')]=_[_0x2240('0x39')](_0x3ca500[_0x2240('0x36')],_0x3ca500[_0x2240('0x37')]);_0x281acf['attributes']=_[_0x2240('0x39')](_0x3ca500[_0x2240('0x36')],qs['fields'](_0xce93f1['query'][_0x2240('0x3b')]));_0x281acf['attributes']=_0x281acf[_0x2240('0x3a')][_0x2240('0x4a')]?_0x281acf['attributes']:_0x3ca500['model'];if(!_0xce93f1[_0x2240('0x37')][_0x2240('0x5c')](_0x2240('0x5d'))){_0x281acf[_0x2240('0x3c')]=qs[_0x2240('0x3c')](_0xce93f1[_0x2240('0x37')]['limit']);_0x281acf['offset']=qs['offset'](_0xce93f1[_0x2240('0x37')][_0x2240('0x21')]);}_0x281acf[_0x2240('0x3d')]=qs[_0x2240('0x3e')](_0xce93f1[_0x2240('0x37')][_0x2240('0x3e')]);_0x281acf[_0x2240('0x42')]=qs[_0x2240('0x3f')](_['pick'](_0xce93f1[_0x2240('0x37')],_0x3ca500[_0x2240('0x3f')]));_0x281acf[_0x2240('0x42')]['CampaignId']=_0x4b347d['id'];if(_0xce93f1[_0x2240('0x37')][_0x2240('0x41')]){_0x281acf[_0x2240('0x42')]=_['merge'](_0x281acf[_0x2240('0x42')],{'$or':_[_0x2240('0x31')](_0x281acf[_0x2240('0x3a')],function(_0x180352){var _0x3df8ab={};_0x3df8ab[_0x180352]={'$like':'%'+_0xce93f1['query']['filter']+'%'};return _0x3df8ab;})});}_0x281acf=_[_0x2240('0x43')]({},_0x281acf,_0xce93f1[_0x2240('0x45')]);return db['CmHopperFinal']['count']({'where':_0x281acf[_0x2240('0x42')]})[_0x2240('0x29')](function(_0x555675){_0x131999[_0x2240('0x23')]=_0x555675;if(_0xce93f1[_0x2240('0x37')][_0x2240('0x46')]){_0x281acf[_0x2240('0x47')]=[{'all':!![]}];}return db[_0x2240('0x63')][_0x2240('0x48')](_0x281acf);})[_0x2240('0x29')](function(_0xb12c92){_0x131999['rows']=_0xb12c92;return _0x131999;});}})[_0x2240('0x29')](respondWithFilteredResult(_0x10dbdc,_0x281acf))[_0x2240('0x4c')](handleError(_0x10dbdc,null));};exports[_0x2240('0x64')]=function(_0x4e7e5c,_0x22742a,_0x9ab7bb){var _0x176973={'raw':!![],'where':{}};var _0x4cae95={};var _0x564bad={'count':0x0,'rows':[]};return db[_0x2240('0x32')][_0x2240('0x5a')]({'where':{'id':_0x4e7e5c[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x22742a,null))['then'](function(_0x4c30f3){if(_0x4c30f3){_0x4cae95[_0x2240('0x36')]=_[_0x2240('0x38')](db[_0x2240('0x65')][_0x2240('0x33')]);_0x4cae95[_0x2240('0x37')]=_[_0x2240('0x38')](_0x4e7e5c[_0x2240('0x37')]);_0x4cae95[_0x2240('0x3f')]=_['intersection'](_0x4cae95[_0x2240('0x36')],_0x4cae95[_0x2240('0x37')]);_0x176973['attributes']=_[_0x2240('0x39')](_0x4cae95[_0x2240('0x36')],qs[_0x2240('0x3b')](_0x4e7e5c[_0x2240('0x37')][_0x2240('0x3b')]));_0x176973['attributes']=_0x176973['attributes'][_0x2240('0x4a')]?_0x176973[_0x2240('0x3a')]:_0x4cae95[_0x2240('0x36')];if(!_0x4e7e5c[_0x2240('0x37')][_0x2240('0x5c')](_0x2240('0x5d'))){_0x176973['limit']=qs['limit'](_0x4e7e5c[_0x2240('0x37')][_0x2240('0x3c')]);_0x176973['offset']=qs[_0x2240('0x21')](_0x4e7e5c['query'][_0x2240('0x21')]);}_0x176973[_0x2240('0x3d')]=qs[_0x2240('0x3e')](_0x4e7e5c[_0x2240('0x37')]['sort']);_0x176973[_0x2240('0x42')]=qs['filters'](_[_0x2240('0x40')](_0x4e7e5c['query'],_0x4cae95[_0x2240('0x3f')]));_0x176973['where'][_0x2240('0x5e')]=_0x4c30f3['id'];if(_0x4e7e5c[_0x2240('0x37')][_0x2240('0x41')]){_0x176973[_0x2240('0x42')]=_['merge'](_0x176973['where'],{'$or':_[_0x2240('0x31')](_0x176973[_0x2240('0x3a')],function(_0x27b54a){var _0x28bebf={};_0x28bebf[_0x27b54a]={'$like':'%'+_0x4e7e5c[_0x2240('0x37')]['filter']+'%'};return _0x28bebf;})});}_0x176973=_[_0x2240('0x43')]({},_0x176973,_0x4e7e5c[_0x2240('0x45')]);return db[_0x2240('0x65')]['count']({'where':_0x176973[_0x2240('0x42')]})[_0x2240('0x29')](function(_0x40c1ec){_0x564bad[_0x2240('0x23')]=_0x40c1ec;if(_0x4e7e5c[_0x2240('0x37')]['includeAll']){_0x176973[_0x2240('0x47')]=[{'all':!![]}];}return db[_0x2240('0x65')][_0x2240('0x48')](_0x176973);})[_0x2240('0x29')](function(_0x1bc1e4){_0x564bad[_0x2240('0x5f')]=_0x1bc1e4;return _0x564bad;});}})[_0x2240('0x29')](respondWithFilteredResult(_0x22742a,_0x176973))[_0x2240('0x4c')](handleError(_0x22742a,null));};exports[_0x2240('0x66')]=function(_0x570ad0,_0x4069b8,_0x3c79bc){var _0x1266c2={};var _0x16099e={};var _0x107bf4;var _0xb47f87;return db[_0x2240('0x32')][_0x2240('0x5a')]({'where':{'id':_0x570ad0[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x4069b8,null))[_0x2240('0x29')](function(_0x5ee3d2){if(_0x5ee3d2){_0x107bf4=_0x5ee3d2;_0x16099e['model']=_['keys'](db['CmList']['rawAttributes']);_0x16099e['query']=_[_0x2240('0x38')](_0x570ad0[_0x2240('0x37')]);_0x16099e[_0x2240('0x3f')]=_[_0x2240('0x39')](_0x16099e[_0x2240('0x36')],_0x16099e[_0x2240('0x37')]);_0x1266c2[_0x2240('0x3a')]=_[_0x2240('0x39')](_0x16099e[_0x2240('0x36')],qs[_0x2240('0x3b')](_0x570ad0[_0x2240('0x37')][_0x2240('0x3b')]));_0x1266c2[_0x2240('0x3a')]=_0x1266c2['attributes']['length']?_0x1266c2['attributes']:_0x16099e[_0x2240('0x36')];_0x1266c2[_0x2240('0x3d')]=qs[_0x2240('0x3e')](_0x570ad0['query'][_0x2240('0x3e')]);_0x1266c2['where']=qs[_0x2240('0x3f')](_[_0x2240('0x40')](_0x570ad0[_0x2240('0x37')],_0x16099e[_0x2240('0x3f')]));if(_0x570ad0['query'][_0x2240('0x41')]){_0x1266c2[_0x2240('0x42')]=_[_0x2240('0x43')](_0x1266c2[_0x2240('0x42')],{'$or':_[_0x2240('0x31')](_0x1266c2['attributes'],function(_0x4617f2){var _0x3dcd57={};_0x3dcd57[_0x4617f2]={'$like':'%'+_0x570ad0[_0x2240('0x37')][_0x2240('0x41')]+'%'};return _0x3dcd57;})});}_0x1266c2=_[_0x2240('0x43')]({},_0x1266c2,_0x570ad0[_0x2240('0x45')]);return _0x107bf4[_0x2240('0x66')](_0x1266c2);}})[_0x2240('0x29')](function(_0x239ad7){if(_0x239ad7){_0xb47f87=_0x239ad7[_0x2240('0x4a')];if(!_0x570ad0[_0x2240('0x37')][_0x2240('0x5c')]('nolimit')){_0x1266c2[_0x2240('0x3c')]=qs[_0x2240('0x3c')](_0x570ad0[_0x2240('0x37')]['limit']);_0x1266c2[_0x2240('0x21')]=qs[_0x2240('0x21')](_0x570ad0['query'][_0x2240('0x21')]);}return _0x107bf4['getLists'](_0x1266c2);}})[_0x2240('0x29')](function(_0x14a754){if(_0x14a754){return _0x14a754?{'count':_0xb47f87,'rows':_0x14a754}:null;}})['then'](respondWithResult(_0x4069b8,null))['catch'](handleError(_0x4069b8,null));};exports[_0x2240('0x67')]=function(_0x314414,_0x8023df,_0x221b6a){var _0x470f91,_0x7e97db;return db['Campaign'][_0x2240('0x4b')]({'where':{'id':_0x314414[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x8023df,null))[_0x2240('0x29')](function(_0x13aaad){if(_0x13aaad){_0x7e97db=_0x13aaad;return _0x13aaad[_0x2240('0x67')](_0x314414[_0x2240('0x4e')][_0x2240('0x68')],_[_0x2240('0x54')](_0x314414[_0x2240('0x4e')],[_0x2240('0x68'),'id'])||{});}return null;})[_0x2240('0x69')](function(_0x33dd68){var _0x27fbe3;_0x470f91=_0x33dd68||[];var _0x4b1dc2=[];if(_0x33dd68){for(var _0x1d86ad=0x0;_0x1d86ad<_0x33dd68[_0x2240('0x4a')];_0x1d86ad+=0x1){var _0x4cd273=_0x33dd68[_0x1d86ad][_0x2240('0x2a')]({'plain':!![]});_0x7e97db[_0x2240('0x6a')]=_0x314414[_0x2240('0x4e')]['dialCheckDuplicateType']?_0x314414[_0x2240('0x4e')][_0x2240('0x6a')]:_0x7e97db[_0x2240('0x6a')];switch(_0x7e97db[_0x2240('0x6a')]){case _0x2240('0x6b'):_0x27fbe3=squel['insert']()[_0x2240('0x6c')](_0x2240('0x6d'))[_0x2240('0x6e')]([_0x2240('0x6f'),_0x2240('0x70'),_0x2240('0x71'),_0x2240('0x72'),_0x2240('0x5e'),_0x2240('0x55'),_0x2240('0x56')],squel[_0x2240('0x73')]()[_0x2240('0x74')](_0x2240('0x6f'),_0x2240('0x6f'))[_0x2240('0x74')]('NOW()','scheduledAt')[_0x2240('0x74')]('id',_0x2240('0x71'))[_0x2240('0x74')](_0x4cd273['CmListId'][_0x2240('0x75')](),_0x2240('0x72'))[_0x2240('0x74')](_0x314414[_0x2240('0x49')]['id']['toString'](),_0x2240('0x5e'))[_0x2240('0x74')](_0x2240('0x76'),_0x2240('0x55'))[_0x2240('0x74')]('NOW()',_0x2240('0x56'))[_0x2240('0x77')](_0x2240('0x78'))[_0x2240('0x42')](_0x2240('0x79'))['where']('ListId\x20=\x20?',_0x4cd273[_0x2240('0x7a')][_0x2240('0x75')]())['where'](_0x2240('0x7b'))['where'](_0x2240('0x7c'),squel['select']()[_0x2240('0x74')](_0x2240('0x7d'))[_0x2240('0x77')](_0x2240('0x7e'))['where'](_0x2240('0x7f'),_0x314414[_0x2240('0x49')]['id']['toString']()))[_0x2240('0x42')](_0x2240('0x7c'),squel['select']()[_0x2240('0x74')]('COALESCE(phone,\x27\x27)')[_0x2240('0x77')]('cm_hopper')[_0x2240('0x42')](_0x2240('0x7f'),_0x314414['params']['id']['toString']())))['toString']();break;case'onlyIfOpen':_0x27fbe3=squel['insert']()['into'](_0x2240('0x6d'))[_0x2240('0x6e')]([_0x2240('0x6f'),_0x2240('0x70'),_0x2240('0x71'),'ListId','CampaignId',_0x2240('0x55'),_0x2240('0x56')],squel[_0x2240('0x73')]()[_0x2240('0x74')](_0x2240('0x6f'),_0x2240('0x6f'))['field'](_0x2240('0x76'),_0x2240('0x70'))['field']('id',_0x2240('0x71'))[_0x2240('0x74')](_0x4cd273[_0x2240('0x7a')][_0x2240('0x75')](),'ListId')[_0x2240('0x74')](_0x314414[_0x2240('0x49')]['id'][_0x2240('0x75')](),_0x2240('0x5e'))['field'](_0x2240('0x76'),_0x2240('0x55'))['field'](_0x2240('0x76'),'updatedAt')[_0x2240('0x77')]('cm_contacts')['where'](_0x2240('0x79'))[_0x2240('0x42')]('ListId\x20=\x20?',_0x4cd273[_0x2240('0x7a')][_0x2240('0x75')]())[_0x2240('0x42')](_0x2240('0x7b'))[_0x2240('0x42')](_0x2240('0x7c'),squel[_0x2240('0x73')]()[_0x2240('0x74')]('COALESCE(phone,\x27\x27)')[_0x2240('0x77')](_0x2240('0x6d'))['where'](_0x2240('0x7f'),_0x314414[_0x2240('0x49')]['id'][_0x2240('0x75')]())))[_0x2240('0x75')]();break;default:_0x27fbe3=squel[_0x2240('0x80')]()[_0x2240('0x6c')](_0x2240('0x6d'))[_0x2240('0x6e')]([_0x2240('0x6f'),_0x2240('0x70'),_0x2240('0x71'),_0x2240('0x72'),_0x2240('0x5e'),_0x2240('0x55'),_0x2240('0x56')],squel[_0x2240('0x73')]()[_0x2240('0x74')]('phone','phone')[_0x2240('0x74')](_0x2240('0x76'),_0x2240('0x70'))['field']('id',_0x2240('0x71'))[_0x2240('0x74')](_0x4cd273[_0x2240('0x7a')]['toString'](),_0x2240('0x72'))['field'](_0x314414[_0x2240('0x49')]['id']['toString'](),_0x2240('0x5e'))[_0x2240('0x74')](_0x2240('0x76'),_0x2240('0x55'))[_0x2240('0x74')](_0x2240('0x76'),'updatedAt')['from']('cm_contacts')[_0x2240('0x42')](_0x2240('0x79'))[_0x2240('0x42')]('ListId\x20=\x20?',_0x4cd273['CmListId'][_0x2240('0x75')]())[_0x2240('0x42')](_0x2240('0x7b')))['toString']();}_0x4b1dc2[_0x2240('0x81')](db[_0x2240('0x82')][_0x2240('0x37')](_0x27fbe3));}return BPromise[_0x2240('0x83')](_0x4b1dc2);}})[_0x2240('0x29')](function(){return _0x470f91;})[_0x2240('0x29')](respondWithResult(_0x8023df,null))[_0x2240('0x4c')](handleError(_0x8023df,null));};exports[_0x2240('0x84')]=function(_0x50ea5b,_0x23e8a4,_0x218bf4){return db['Campaign'][_0x2240('0x4b')]({'where':{'id':_0x50ea5b[_0x2240('0x49')]['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x23e8a4,null))[_0x2240('0x29')](function(_0x3a0256){if(_0x3a0256){return _0x3a0256[_0x2240('0x84')](_0x50ea5b[_0x2240('0x37')][_0x2240('0x68')]);}})[_0x2240('0x29')](function(_0x3fbeac){if(_0x3fbeac){return db['CmHopper'][_0x2240('0x85')]({'where':{'ListId':_0x50ea5b[_0x2240('0x37')][_0x2240('0x68')],'CampaignId':_0x50ea5b[_0x2240('0x49')]['id']}})['then'](function(){return _0x3fbeac;});}})['then'](respondWithStatusCode(_0x23e8a4,null))[_0x2240('0x4c')](handleError(_0x23e8a4,null));};exports['getBlackLists']=function(_0x247565,_0x5469ca,_0x57c14f){var _0x58739a={};var _0x573472={};var _0x4aec1d;var _0x3522fe;return db[_0x2240('0x32')][_0x2240('0x5a')]({'where':{'id':_0x247565['params']['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x5469ca,null))[_0x2240('0x29')](function(_0x28a906){if(_0x28a906){_0x4aec1d=_0x28a906;_0x573472[_0x2240('0x36')]=_['keys'](db[_0x2240('0x86')][_0x2240('0x33')]);_0x573472[_0x2240('0x37')]=_['keys'](_0x247565[_0x2240('0x37')]);_0x573472[_0x2240('0x3f')]=_[_0x2240('0x39')](_0x573472[_0x2240('0x36')],_0x573472['query']);_0x58739a[_0x2240('0x3a')]=_[_0x2240('0x39')](_0x573472[_0x2240('0x36')],qs['fields'](_0x247565[_0x2240('0x37')][_0x2240('0x3b')]));_0x58739a['attributes']=_0x58739a[_0x2240('0x3a')][_0x2240('0x4a')]?_0x58739a[_0x2240('0x3a')]:_0x573472['model'];_0x58739a['order']=qs[_0x2240('0x3e')](_0x247565['query'][_0x2240('0x3e')]);_0x58739a[_0x2240('0x42')]=qs[_0x2240('0x3f')](_[_0x2240('0x40')](_0x247565[_0x2240('0x37')],_0x573472['filters']));if(_0x247565[_0x2240('0x37')][_0x2240('0x41')]){_0x58739a['where']=_[_0x2240('0x43')](_0x58739a['where'],{'$or':_[_0x2240('0x31')](_0x58739a['attributes'],function(_0x5fda5b){var _0x2ecbcd={};_0x2ecbcd[_0x5fda5b]={'$like':'%'+_0x247565[_0x2240('0x37')][_0x2240('0x41')]+'%'};return _0x2ecbcd;})});}_0x58739a=_[_0x2240('0x43')]({},_0x58739a,_0x247565[_0x2240('0x45')]);return _0x4aec1d[_0x2240('0x87')](_0x58739a);}})['then'](function(_0xf1fe33){if(_0xf1fe33){_0x3522fe=_0xf1fe33[_0x2240('0x4a')];if(!_0x247565['query'][_0x2240('0x5c')]('nolimit')){_0x58739a[_0x2240('0x3c')]=qs[_0x2240('0x3c')](_0x247565['query'][_0x2240('0x3c')]);_0x58739a[_0x2240('0x21')]=qs[_0x2240('0x21')](_0x247565['query']['offset']);}return _0x4aec1d['getBlackLists'](_0x58739a);}})[_0x2240('0x29')](function(_0x162498){if(_0x162498){return _0x162498?{'count':_0x3522fe,'rows':_0x162498}:null;}})[_0x2240('0x29')](respondWithResult(_0x5469ca,null))[_0x2240('0x4c')](handleError(_0x5469ca,null));};exports[_0x2240('0x88')]=function(_0x3966ea,_0x2a42aa,_0x26c8a5){var _0x539487,_0x15af95;return db['Campaign']['find']({'where':{'id':_0x3966ea['params']['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x2a42aa,null))[_0x2240('0x29')](function(_0x1030da){if(_0x1030da){_0x15af95=_0x1030da;return _0x1030da[_0x2240('0x88')](_0x3966ea[_0x2240('0x4e')][_0x2240('0x68')],_['omit'](_0x3966ea[_0x2240('0x4e')],[_0x2240('0x68'),'id'])||{});}return null;})[_0x2240('0x69')](function(_0x52a412){var _0xbcb276;_0x539487=_0x52a412||[];var _0x4c8be4=[];if(_0x52a412){for(var _0x1779cb=0x0;_0x1779cb<_0x52a412[_0x2240('0x4a')];_0x1779cb+=0x1){var _0x1a8ace=_0x52a412[_0x1779cb]['get']({'plain':!![]});_0xbcb276=squel[_0x2240('0x80')]()[_0x2240('0x6c')](_0x2240('0x89'))[_0x2240('0x6e')]([_0x2240('0x6f'),_0x2240('0x71'),_0x2240('0x72'),'CampaignId',_0x2240('0x55'),'updatedAt'],squel[_0x2240('0x73')]()[_0x2240('0x74')](_0x2240('0x6f'),_0x2240('0x6f'))[_0x2240('0x74')]('id',_0x2240('0x71'))[_0x2240('0x74')](_0x1a8ace[_0x2240('0x7a')][_0x2240('0x75')](),_0x2240('0x72'))['field'](_0x3966ea['params']['id'][_0x2240('0x75')](),_0x2240('0x5e'))[_0x2240('0x74')]('NOW()',_0x2240('0x55'))[_0x2240('0x74')](_0x2240('0x76'),_0x2240('0x56'))[_0x2240('0x77')](_0x2240('0x78'))[_0x2240('0x42')](_0x2240('0x79'))[_0x2240('0x42')](_0x2240('0x8a'),_0x1a8ace[_0x2240('0x7a')][_0x2240('0x75')]())[_0x2240('0x42')](_0x2240('0x7b')))[_0x2240('0x75')]();_0x4c8be4[_0x2240('0x81')](db[_0x2240('0x82')][_0x2240('0x37')](_0xbcb276));}return BPromise[_0x2240('0x83')](_0x4c8be4);}})[_0x2240('0x29')](function(){return _0x539487;})[_0x2240('0x29')](respondWithResult(_0x2a42aa,null))[_0x2240('0x4c')](handleError(_0x2a42aa,null));};exports[_0x2240('0x8b')]=function(_0x14d596,_0x158d3a,_0x39a6e7){return db[_0x2240('0x32')]['find']({'where':{'id':_0x14d596['params']['id']}})[_0x2240('0x29')](handleEntityNotFound(_0x158d3a,null))['then'](function(_0x240602){if(_0x240602){return _0x240602[_0x2240('0x8b')](_0x14d596[_0x2240('0x37')][_0x2240('0x68')]);}})[_0x2240('0x29')](function(_0x5dd81d){if(_0x5dd81d){return db[_0x2240('0x65')][_0x2240('0x85')]({'where':{'ListId':_0x14d596[_0x2240('0x37')]['ids'],'CampaignId':_0x14d596[_0x2240('0x49')]['id']}})['then'](function(){return _0x5dd81d;});}})[_0x2240('0x29')](respondWithStatusCode(_0x158d3a,null))['catch'](handleError(_0x158d3a,null));};
\ No newline at end of file
index 4f7a1c7..cd289a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x17a1e3,_0x31c5ac){var _0x4b5e0c=function(_0x558dc1){while(--_0x558dc1){_0x17a1e3['push'](_0x17a1e3['shift']());}};_0x4b5e0c(++_0x31c5ac);}(_0x7a54,0x106));var _0x47a5=function(_0x13201e,_0x33b2fc){_0x13201e=_0x13201e-0x0;var _0x1b9e19=_0x7a54[_0x13201e];return _0x1b9e19;};'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
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x529587,_0x7b9e47){var _0x4ea039=function(_0x51cf40){while(--_0x51cf40){_0x529587['push'](_0x529587['shift']());}};_0x4ea039(++_0x7b9e47);}(_0x7a54,0x106));var _0x47a5=function(_0x38d186,_0x38d005){_0x38d186=_0x38d186-0x0;var _0x550e3d=_0x7a54[_0x38d186];return _0x550e3d;};'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 e616b9e..f4ff5c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3164=['attributes','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCampaign','options','raw','limit','include','map','model'];(function(_0x5cb2b1,_0x52c15b){var _0x2fa891=function(_0x525949){while(--_0x525949){_0x5cb2b1['push'](_0x5cb2b1['shift']());}};_0x2fa891(++_0x52c15b);}(_0x3164,0x182));var _0x4316=function(_0x5c7b94,_0x571d6b){_0x5c7b94=_0x5c7b94-0x0;var _0x3d21c2=_0x3164[_0x5c7b94];return _0x3d21c2;};'use strict';var _=require(_0x4316('0x0'));var util=require(_0x4316('0x1'));var moment=require(_0x4316('0x2'));var BPromise=require(_0x4316('0x3'));var rs=require(_0x4316('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4316('0x5'))['db'];var utils=require(_0x4316('0x6'));var logger=require(_0x4316('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4316('0x8'));var client=jayson[_0x4316('0x9')][_0x4316('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c3c1,_0x25be1f,_0x473cd2){return new BPromise(function(_0x1bcd38,_0x2b1420){return client[_0x4316('0xb')](_0x29c3c1,_0x473cd2)[_0x4316('0xc')](function(_0x2ad6dc){logger[_0x4316('0xd')](_0x4316('0xe'),_0x25be1f,_0x4316('0xf'));logger['debug'](_0x4316('0x10'),_0x25be1f,_0x4316('0xf'),JSON[_0x4316('0x11')](_0x2ad6dc));if(_0x2ad6dc[_0x4316('0x12')]){if(_0x2ad6dc['error'][_0x4316('0x13')]===0x1f4){logger[_0x4316('0x12')](_0x4316('0xe'),_0x25be1f,_0x2ad6dc[_0x4316('0x12')]['message']);return _0x2b1420(_0x2ad6dc[_0x4316('0x12')]['message']);}logger['error']('Campaign,\x20%s,\x20%s',_0x25be1f,_0x2ad6dc[_0x4316('0x12')][_0x4316('0x14')]);return _0x1bcd38(_0x2ad6dc['error'][_0x4316('0x14')]);}else{logger['info'](_0x4316('0xe'),_0x25be1f,_0x4316('0xf'));_0x1bcd38(_0x2ad6dc[_0x4316('0x15')][_0x4316('0x14')]);}})[_0x4316('0x16')](function(_0x2d579f){logger[_0x4316('0x12')](_0x4316('0xe'),_0x25be1f,_0x2d579f);_0x2b1420(_0x2d579f);});});}exports[_0x4316('0x17')]=function(_0x3bf044){var _0x5a414f=this;return new Promise(function(_0x43069f,_0x34c667){return db['Campaign']['findAll']({'raw':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')][_0x4316('0x19')]===undefined?!![]:![]:!![],'where':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')]['where']||null:null,'attributes':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')]['attributes']||null:null,'limit':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')][_0x4316('0x1a')]||null:null,'include':_0x3bf044['options']?_0x3bf044[_0x4316('0x18')][_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x3bf044['options'][_0x4316('0x1b')],function(_0x3388ae){return{'model':db[_0x3388ae[_0x4316('0x1d')]],'as':_0x3388ae['as'],'attributes':_0x3388ae[_0x4316('0x1e')],'include':_0x3388ae[_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x3388ae[_0x4316('0x1b')],function(_0x46bd61){return{'model':db[_0x46bd61[_0x4316('0x1d')]],'as':_0x46bd61['as'],'attributes':_0x46bd61[_0x4316('0x1e')],'include':_0x46bd61[_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x46bd61[_0x4316('0x1b')],function(_0x1f7391){return{'model':db[_0x1f7391[_0x4316('0x1d')]],'as':_0x1f7391['as'],'attributes':_0x1f7391[_0x4316('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4316('0xc')](function(_0x4cdb10){logger['info'](_0x4316('0x17'),_0x3bf044);logger[_0x4316('0x1f')](_0x4316('0x17'),_0x3bf044,JSON[_0x4316('0x11')](_0x4cdb10));_0x43069f(_0x4cdb10);})[_0x4316('0x16')](function(_0x55cfb2){logger[_0x4316('0x12')]('GetCampaign',_0x55cfb2[_0x4316('0x14')],_0x3bf044);_0x34c667(_0x5a414f['error'](0x1f4,_0x55cfb2[_0x4316('0x14')]));});});};
\ No newline at end of file
+var _0x65b3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetCampaign','findAll','options','raw','where','attributes','limit','include','map','model','then'];(function(_0x4f568c,_0x3c777e){var _0x44ad76=function(_0x7749ca){while(--_0x7749ca){_0x4f568c['push'](_0x4f568c['shift']());}};_0x44ad76(++_0x3c777e);}(_0x65b3,0xc6));var _0x365b=function(_0x35f7f5,_0x4e2ee1){_0x35f7f5=_0x35f7f5-0x0;var _0x5567a4=_0x65b3[_0x35f7f5];return _0x5567a4;};'use strict';var _=require(_0x365b('0x0'));var util=require(_0x365b('0x1'));var moment=require(_0x365b('0x2'));var BPromise=require(_0x365b('0x3'));var rs=require(_0x365b('0x4'));var fs=require('fs');var Redis=require(_0x365b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x365b('0x6'));var logger=require(_0x365b('0x7'))(_0x365b('0x8'));var config=require('../../config/environment');var jayson=require(_0x365b('0x9'));var client=jayson[_0x365b('0xa')][_0x365b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b7869,_0x160565,_0xe6670a){return new BPromise(function(_0x2ed50a,_0x3f95c1){return client[_0x365b('0xc')](_0x5b7869,_0xe6670a)['then'](function(_0x36afc2){logger[_0x365b('0xd')](_0x365b('0xe'),_0x160565,_0x365b('0xf'));logger[_0x365b('0x10')]('Campaign,\x20%s,\x20%s,\x20%s',_0x160565,_0x365b('0xf'),JSON[_0x365b('0x11')](_0x36afc2));if(_0x36afc2[_0x365b('0x12')]){if(_0x36afc2[_0x365b('0x12')]['code']===0x1f4){logger['error'](_0x365b('0xe'),_0x160565,_0x36afc2[_0x365b('0x12')][_0x365b('0x13')]);return _0x3f95c1(_0x36afc2['error'][_0x365b('0x13')]);}logger['error'](_0x365b('0xe'),_0x160565,_0x36afc2[_0x365b('0x12')][_0x365b('0x13')]);return _0x2ed50a(_0x36afc2[_0x365b('0x12')][_0x365b('0x13')]);}else{logger[_0x365b('0xd')](_0x365b('0xe'),_0x160565,_0x365b('0xf'));_0x2ed50a(_0x36afc2[_0x365b('0x14')][_0x365b('0x13')]);}})[_0x365b('0x15')](function(_0x13403b){logger[_0x365b('0x12')](_0x365b('0xe'),_0x160565,_0x13403b);_0x3f95c1(_0x13403b);});});}exports[_0x365b('0x16')]=function(_0x1cf7a3){var _0xafd00e=this;return new Promise(function(_0x2ac7ba,_0x1de77b){return db['Campaign'][_0x365b('0x17')]({'raw':_0x1cf7a3['options']?_0x1cf7a3[_0x365b('0x18')][_0x365b('0x19')]===undefined?!![]:![]:!![],'where':_0x1cf7a3[_0x365b('0x18')]?_0x1cf7a3[_0x365b('0x18')][_0x365b('0x1a')]||null:null,'attributes':_0x1cf7a3[_0x365b('0x18')]?_0x1cf7a3[_0x365b('0x18')][_0x365b('0x1b')]||null:null,'limit':_0x1cf7a3[_0x365b('0x18')]?_0x1cf7a3[_0x365b('0x18')][_0x365b('0x1c')]||null:null,'include':_0x1cf7a3[_0x365b('0x18')]?_0x1cf7a3[_0x365b('0x18')][_0x365b('0x1d')]?_[_0x365b('0x1e')](_0x1cf7a3[_0x365b('0x18')]['include'],function(_0x3b1e18){return{'model':db[_0x3b1e18[_0x365b('0x1f')]],'as':_0x3b1e18['as'],'attributes':_0x3b1e18[_0x365b('0x1b')],'include':_0x3b1e18[_0x365b('0x1d')]?_[_0x365b('0x1e')](_0x3b1e18['include'],function(_0x31cea5){return{'model':db[_0x31cea5[_0x365b('0x1f')]],'as':_0x31cea5['as'],'attributes':_0x31cea5[_0x365b('0x1b')],'include':_0x31cea5['include']?_[_0x365b('0x1e')](_0x31cea5[_0x365b('0x1d')],function(_0x24e599){return{'model':db[_0x24e599[_0x365b('0x1f')]],'as':_0x24e599['as'],'attributes':_0x24e599[_0x365b('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x365b('0x20')](function(_0xdb347c){logger[_0x365b('0xd')](_0x365b('0x16'),_0x1cf7a3);logger['debug'](_0x365b('0x16'),_0x1cf7a3,JSON['stringify'](_0xdb347c));_0x2ac7ba(_0xdb347c);})[_0x365b('0x15')](function(_0x3df8fc){logger['error'](_0x365b('0x16'),_0x3df8fc[_0x365b('0x13')],_0x1cf7a3);_0x1de77b(_0xafd00e[_0x365b('0x12')](0x1f4,_0x3df8fc['message']));});});};
\ No newline at end of file
index 9e5abde..706f36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab05=['/:id/clone','/:id/blacklists','addBlackLists','put','destroy','delete','removeLists','removeBlackLists','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','post'];(function(_0x185bfc,_0xebf078){var _0x512831=function(_0x377585){while(--_0x377585){_0x185bfc['push'](_0x185bfc['shift']());}};_0x512831(++_0xebf078);}(_0xab05,0x1b6));var _0x5ab0=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xab05[_0x550d12];return _0x12103d;};'use strict';var multer=require(_0x5ab0('0x0'));var util=require('util');var path=require(_0x5ab0('0x1'));var timeout=require(_0x5ab0('0x2'));var express=require(_0x5ab0('0x3'));var router=express[_0x5ab0('0x4')]();var fs_extra=require(_0x5ab0('0x5'));var auth=require(_0x5ab0('0x6'));var interaction=require(_0x5ab0('0x7'));var config=require(_0x5ab0('0x8'));var controller=require(_0x5ab0('0x9'));router[_0x5ab0('0xa')]('/',auth[_0x5ab0('0xb')](),controller[_0x5ab0('0xc')]);router[_0x5ab0('0xa')](_0x5ab0('0xd'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0xe')]);router[_0x5ab0('0xa')](_0x5ab0('0xf'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0x10')]);router['get'](_0x5ab0('0x11'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0x12')]);router[_0x5ab0('0xa')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x5ab0('0x13'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0x14')]);router[_0x5ab0('0xa')](_0x5ab0('0x15'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0x16')]);router['get']('/:id/blacklists',auth[_0x5ab0('0xb')](),controller['getBlackLists']);router[_0x5ab0('0x17')]('/',auth[_0x5ab0('0xb')](),controller['create']);router[_0x5ab0('0x17')](_0x5ab0('0x18'),auth[_0x5ab0('0xb')](),controller['clone']);router[_0x5ab0('0x17')](_0x5ab0('0x15'),auth['isAuthenticated'](),controller['addLists']);router['post'](_0x5ab0('0x19'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0x1a')]);router[_0x5ab0('0x1b')](_0x5ab0('0xd'),auth[_0x5ab0('0xb')](),controller['update']);router['delete'](_0x5ab0('0xd'),auth['isAuthenticated'](),controller[_0x5ab0('0x1c')]);router[_0x5ab0('0x1d')](_0x5ab0('0x15'),auth['isAuthenticated'](),controller[_0x5ab0('0x1e')]);router[_0x5ab0('0x1d')](_0x5ab0('0x19'),auth[_0x5ab0('0xb')](),controller[_0x5ab0('0x1f')]);module[_0x5ab0('0x20')]=router;
\ No newline at end of file
+var _0xb30f=['destroy','removeBlackLists','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getLists','/:id/blacklists','getBlackLists','post','create','clone','/:id/lists','addBlackLists','put','update','delete'];(function(_0x3ec1da,_0x1e36f5){var _0x472358=function(_0x1d41b1){while(--_0x1d41b1){_0x3ec1da['push'](_0x3ec1da['shift']());}};_0x472358(++_0x1e36f5);}(_0xb30f,0x163));var _0xfb30=function(_0x29a474,_0xbe9edf){_0x29a474=_0x29a474-0x0;var _0x8a8073=_0xb30f[_0x29a474];return _0x8a8073;};'use strict';var multer=require(_0xfb30('0x0'));var util=require(_0xfb30('0x1'));var path=require(_0xfb30('0x2'));var timeout=require('connect-timeout');var express=require(_0xfb30('0x3'));var router=express['Router']();var fs_extra=require(_0xfb30('0x4'));var auth=require(_0xfb30('0x5'));var interaction=require(_0xfb30('0x6'));var config=require(_0xfb30('0x7'));var controller=require(_0xfb30('0x8'));router[_0xfb30('0x9')]('/',auth[_0xfb30('0xa')](),controller[_0xfb30('0xb')]);router[_0xfb30('0x9')](_0xfb30('0xc'),auth['isAuthenticated'](),controller[_0xfb30('0xd')]);router[_0xfb30('0x9')](_0xfb30('0xe'),auth[_0xfb30('0xa')](),controller[_0xfb30('0xf')]);router[_0xfb30('0x9')]('/:id/hopper_histories',auth['isAuthenticated'](),controller[_0xfb30('0x10')]);router['get'](_0xfb30('0x11'),auth[_0xfb30('0xa')](),controller['getHopperFinals']);router[_0xfb30('0x9')]('/:id/hopper_black',auth[_0xfb30('0xa')](),controller['getHopperBlacks']);router['get']('/:id/lists',auth[_0xfb30('0xa')](),controller[_0xfb30('0x12')]);router['get'](_0xfb30('0x13'),auth['isAuthenticated'](),controller[_0xfb30('0x14')]);router[_0xfb30('0x15')]('/',auth['isAuthenticated'](),controller[_0xfb30('0x16')]);router[_0xfb30('0x15')]('/:id/clone',auth['isAuthenticated'](),controller[_0xfb30('0x17')]);router[_0xfb30('0x15')](_0xfb30('0x18'),auth[_0xfb30('0xa')](),controller['addLists']);router[_0xfb30('0x15')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0xfb30('0x19')]);router[_0xfb30('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0xfb30('0x1b')]);router[_0xfb30('0x1c')]('/:id',auth[_0xfb30('0xa')](),controller[_0xfb30('0x1d')]);router[_0xfb30('0x1c')](_0xfb30('0x18'),auth[_0xfb30('0xa')](),controller['removeLists']);router[_0xfb30('0x1c')](_0xfb30('0x13'),auth[_0xfb30('0xa')](),controller[_0xfb30('0x1e')]);module[_0xfb30('0x1f')]=router;
\ No newline at end of file
index 9cb9bac..efc6a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d8=['exports','STRING','VIRTUAL','getDataValue','key','sequelize'];(function(_0x47ded9,_0x4f5404){var _0x481cbc=function(_0x5c2a30){while(--_0x5c2a30){_0x47ded9['push'](_0x47ded9['shift']());}};_0x481cbc(++_0x4f5404);}(_0x10d8,0x1c1));var _0x810d=function(_0x4b0018,_0x31bd99){_0x4b0018=_0x4b0018-0x0;var _0x3937a3=_0x10d8[_0x4b0018];return _0x3937a3;};'use strict';var Sequelize=require(_0x810d('0x0'));module[_0x810d('0x1')]={'key':{'type':Sequelize[_0x810d('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x810d('0x2')]},'name':{'type':Sequelize[_0x810d('0x3')],'get':function(){return this[_0x810d('0x4')](_0x810d('0x5'));}}};
\ No newline at end of file
+var _0xc55a=['VIRTUAL','getDataValue','key','exports','STRING'];(function(_0x488341,_0x4cd621){var _0x5e7976=function(_0x4c6d31){while(--_0x4c6d31){_0x488341['push'](_0x488341['shift']());}};_0x5e7976(++_0x4cd621);}(_0xc55a,0x10c));var _0xac55=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0xc55a[_0x5a9c0c];return _0x53c77d;};'use strict';var Sequelize=require('sequelize');module[_0xac55('0x0')]={'key':{'type':Sequelize[_0xac55('0x1')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0xac55('0x1')]},'name':{'type':Sequelize[_0xac55('0x2')],'get':function(){return this[_0xac55('0x3')](_0xac55('0x4'));}}};
\ No newline at end of file
index c25821a..90d0e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bef=['filters','filter','where','merge','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch','update','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','end','status','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','get','CannedAnswers','UserProfileResource','sendStatus','error','stack','name','map','CannedAnswer','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x4d65e3,_0x17b04e){var _0x1fe5fd=function(_0x4c0823){while(--_0x4c0823){_0x4d65e3['push'](_0x4d65e3['shift']());}};_0x1fe5fd(++_0x17b04e);}(_0x1bef,0x71));var _0xf1be=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1bef[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xf1be('0x0'));var rimraf=require(_0xf1be('0x1'));var zipdir=require(_0xf1be('0x2'));var jsonpatch=require(_0xf1be('0x3'));var rp=require(_0xf1be('0x4'));var moment=require(_0xf1be('0x5'));var BPromise=require(_0xf1be('0x6'));var Mustache=require(_0xf1be('0x7'));var util=require('util');var path=require(_0xf1be('0x8'));var sox=require('sox');var csv=require(_0xf1be('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf1be('0xa'));var _=require(_0xf1be('0xb'));var squel=require('squel');var crypto=require(_0xf1be('0xc'));var jsforce=require(_0xf1be('0xd'));var deskjs=require(_0xf1be('0xe'));var toCsv=require(_0xf1be('0x9'));var querystring=require(_0xf1be('0xf'));var Papa=require('papaparse');var Redis=require(_0xf1be('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf1be('0x11'));var as=require(_0xf1be('0x12'));var hardwareService=require(_0xf1be('0x13'));var logger=require(_0xf1be('0x14'))(_0xf1be('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf1be('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43e3de,_0x5e6405){_0x5e6405=_0x5e6405||0xcc;return function(_0x934d13){if(_0x934d13){return _0x43e3de['sendStatus'](_0x5e6405);}return _0x43e3de['status'](_0x5e6405)[_0xf1be('0x17')]();};}function respondWithResult(_0x599631,_0x2b41dd){_0x2b41dd=_0x2b41dd||0xc8;return function(_0x24fccf){if(_0x24fccf){return _0x599631[_0xf1be('0x18')](_0x2b41dd)['json'](_0x24fccf);}};}function respondWithFilteredResult(_0x42820c,_0x4c83c2){return function(_0x4d7a94){if(_0x4d7a94){var _0x261fbc=typeof _0x4c83c2[_0xf1be('0x19')]===_0xf1be('0x1a')&&typeof _0x4c83c2[_0xf1be('0x1b')]===_0xf1be('0x1a');var _0x2b9b35=_0x4d7a94[_0xf1be('0x1c')];var _0x4d29e9=_0x261fbc?0x0:_0x4c83c2['offset'];var _0x32e669=_0x261fbc?_0x4d7a94[_0xf1be('0x1c')]:_0x4c83c2[_0xf1be('0x19')]+_0x4c83c2[_0xf1be('0x1b')];var _0x3136c3;if(_0x32e669>=_0x2b9b35){_0x32e669=_0x2b9b35;_0x3136c3=0xc8;}else{_0x3136c3=0xce;}_0x42820c[_0xf1be('0x18')](_0x3136c3);return _0x42820c['set'](_0xf1be('0x1d'),_0x4d29e9+'-'+_0x32e669+'/'+_0x2b9b35)['json'](_0x4d7a94);}return null;};}function patchUpdates(_0x10af42){return function(_0x4525e4){try{jsonpatch[_0xf1be('0x1e')](_0x4525e4,_0x10af42,!![]);}catch(_0x4cbda3){return BPromise[_0xf1be('0x1f')](_0x4cbda3);}return _0x4525e4['save']();};}function saveUpdates(_0x2113ca,_0x11f720){return function(_0x3cd558){if(_0x3cd558){return _0x3cd558['update'](_0x2113ca)[_0xf1be('0x20')](function(_0x167b24){return _0x167b24;});}return null;};}function removeEntity(_0x116982,_0x44ab6b){return function(_0x29ce07){if(_0x29ce07){return _0x29ce07[_0xf1be('0x21')]()['then'](function(){var _0x2f1566=_0x29ce07[_0xf1be('0x22')]({'plain':!![]});var _0x2b49ce=_0xf1be('0x23');return db[_0xf1be('0x24')]['destroy']({'where':{'type':_0x2b49ce,'resourceId':_0x2f1566['id']}})[_0xf1be('0x20')](function(){return _0x29ce07;});})[_0xf1be('0x20')](function(){_0x116982['status'](0xcc)[_0xf1be('0x17')]();});}};}function handleEntityNotFound(_0x22d154,_0x17662f){return function(_0x4f9c62){if(!_0x4f9c62){_0x22d154[_0xf1be('0x25')](0x194);}return _0x4f9c62;};}function handleError(_0xbae16a,_0x23b0d8){_0x23b0d8=_0x23b0d8||0x1f4;return function(_0x443742){logger[_0xf1be('0x26')](_0x443742[_0xf1be('0x27')]);if(_0x443742['name']){delete _0x443742[_0xf1be('0x28')];}_0xbae16a[_0xf1be('0x18')](_0x23b0d8)['send'](_0x443742);};}exports['index']=function(_0x207cbc,_0x18cbcf){var _0x4494d9={},_0x58a235={},_0x5b4d24={'count':0x0,'rows':[]};var _0x4c383b=_[_0xf1be('0x29')](db[_0xf1be('0x2a')]['rawAttributes'],function(_0x103701){return{'name':_0x103701[_0xf1be('0x2b')],'type':_0x103701[_0xf1be('0x2c')]['key']};});_0x58a235[_0xf1be('0x2d')]=_[_0xf1be('0x29')](_0x4c383b,_0xf1be('0x28'));_0x58a235['query']=_[_0xf1be('0x2e')](_0x207cbc[_0xf1be('0x2f')]);_0x58a235['filters']=_[_0xf1be('0x30')](_0x58a235['model'],_0x58a235[_0xf1be('0x2f')]);_0x4494d9[_0xf1be('0x31')]=_['intersection'](_0x58a235['model'],qs[_0xf1be('0x32')](_0x207cbc[_0xf1be('0x2f')]['fields']));_0x4494d9['attributes']=_0x4494d9[_0xf1be('0x31')][_0xf1be('0x33')]?_0x4494d9[_0xf1be('0x31')]:_0x58a235['model'];if(!_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x34')]('nolimit')){_0x4494d9[_0xf1be('0x1b')]=qs[_0xf1be('0x1b')](_0x207cbc[_0xf1be('0x2f')]['limit']);_0x4494d9[_0xf1be('0x19')]=qs['offset'](_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x19')]);}_0x4494d9[_0xf1be('0x35')]=qs[_0xf1be('0x36')](_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x36')]);_0x4494d9['where']=qs['filters'](_['pick'](_0x207cbc['query'],_0x58a235[_0xf1be('0x37')]),_0x4c383b);if(_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x38')]){_0x4494d9[_0xf1be('0x39')]=_[_0xf1be('0x3a')](_0x4494d9[_0xf1be('0x39')],{'$or':[{'key':{'$like':'%'+_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x38')]+'%'}},{'value':{'$like':'%'+_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x38')]+'%'}}]});}_0x4494d9=_[_0xf1be('0x3a')]({},_0x4494d9,_0x207cbc[_0xf1be('0x3b')]);var _0x246f55={'where':_0x4494d9['where']};return db[_0xf1be('0x2a')][_0xf1be('0x1c')](_0x246f55)[_0xf1be('0x20')](function(_0x2176f8){_0x5b4d24[_0xf1be('0x1c')]=_0x2176f8;if(_0x207cbc[_0xf1be('0x2f')][_0xf1be('0x3c')]){_0x4494d9[_0xf1be('0x3d')]=[{'all':!![]}];}return db['CannedAnswer'][_0xf1be('0x3e')](_0x4494d9);})[_0xf1be('0x20')](function(_0x1a776b){_0x5b4d24[_0xf1be('0x3f')]=_0x1a776b;return _0x5b4d24;})[_0xf1be('0x20')](respondWithFilteredResult(_0x18cbcf,_0x4494d9))['catch'](handleError(_0x18cbcf,null));};exports[_0xf1be('0x40')]=function(_0x519acd,_0xa8bc5e){var _0x242992={'raw':!![],'where':{'id':_0x519acd['params']['id']}},_0x156c5e={};_0x156c5e[_0xf1be('0x2d')]=_[_0xf1be('0x2e')](db['CannedAnswer'][_0xf1be('0x41')]);_0x156c5e[_0xf1be('0x2f')]=_[_0xf1be('0x2e')](_0x519acd[_0xf1be('0x2f')]);_0x156c5e[_0xf1be('0x37')]=_['intersection'](_0x156c5e[_0xf1be('0x2d')],_0x156c5e[_0xf1be('0x2f')]);_0x242992[_0xf1be('0x31')]=_[_0xf1be('0x30')](_0x156c5e[_0xf1be('0x2d')],qs['fields'](_0x519acd[_0xf1be('0x2f')]['fields']));_0x242992[_0xf1be('0x31')]=_0x242992[_0xf1be('0x31')][_0xf1be('0x33')]?_0x242992['attributes']:_0x156c5e['model'];if(_0x519acd[_0xf1be('0x2f')][_0xf1be('0x3c')]){_0x242992['include']=[{'all':!![]}];}_0x242992=_[_0xf1be('0x3a')]({},_0x242992,_0x519acd[_0xf1be('0x3b')]);return db['CannedAnswer'][_0xf1be('0x42')](_0x242992)[_0xf1be('0x20')](handleEntityNotFound(_0xa8bc5e,null))[_0xf1be('0x20')](respondWithResult(_0xa8bc5e,null))[_0xf1be('0x43')](handleError(_0xa8bc5e,null));};exports[_0xf1be('0x44')]=function(_0x3e33cc,_0x47c013){if(_0x3e33cc[_0xf1be('0x45')]['id']){delete _0x3e33cc['body']['id'];}return db[_0xf1be('0x2a')][_0xf1be('0x42')]({'where':{'id':_0x3e33cc['params']['id']}})[_0xf1be('0x20')](handleEntityNotFound(_0x47c013,null))[_0xf1be('0x20')](saveUpdates(_0x3e33cc['body'],null))[_0xf1be('0x20')](respondWithResult(_0x47c013,null))['catch'](handleError(_0x47c013,null));};exports['destroy']=function(_0x22ecf0,_0x266dfa){return db['CannedAnswer'][_0xf1be('0x42')]({'where':{'id':_0x22ecf0['params']['id']}})['then'](handleEntityNotFound(_0x266dfa,null))['then'](removeEntity(_0x266dfa,null))[_0xf1be('0x43')](handleError(_0x266dfa,null));};exports[_0xf1be('0x46')]=function(_0x9e59da,_0x26f2ab){var _0x200827={'key':_0x9e59da[_0xf1be('0x45')]['key']};if(_0x9e59da[_0xf1be('0x45')][_0xf1be('0x47')]){_0x200827[_0xf1be('0x47')]=_0x9e59da[_0xf1be('0x45')][_0xf1be('0x47')];}else if(_0x9e59da['body'][_0xf1be('0x48')]){_0x200827['SmsAccountId']=_0x9e59da['body']['SmsAccountId'];}else if(_0x9e59da[_0xf1be('0x45')]['OpenchannelAccountId']){_0x200827['OpenchannelAccountId']=_0x9e59da['body'][_0xf1be('0x49')];}else if(_0x9e59da[_0xf1be('0x45')][_0xf1be('0x4a')]){_0x200827[_0xf1be('0x4a')]=_0x9e59da['body'][_0xf1be('0x4a')];}return db['CannedAnswer']['find']({'where':_0x200827})[_0xf1be('0x20')](function(_0x3a26f6){if(_0x3a26f6){throw new db[(_0xf1be('0x4b'))][(_0xf1be('0x4c'))](_0xf1be('0x4d'));}return db[_0xf1be('0x2a')][_0xf1be('0x46')](_0x9e59da['body']);})[_0xf1be('0x20')](function(_0x563d27){var _0x4e9d79=_0x9e59da[_0xf1be('0x4e')][_0xf1be('0x22')]({'plain':!![]});if(!_0x4e9d79)throw new Error(_0xf1be('0x4f'));if(_0x4e9d79[_0xf1be('0x50')]===_0xf1be('0x4e')){var _0x48acaf=_0x563d27[_0xf1be('0x22')]({'plain':!![]});return db[_0xf1be('0x51')][_0xf1be('0x42')]({'where':{'name':_0xf1be('0x23'),'userProfileId':_0x4e9d79[_0xf1be('0x52')]},'raw':!![]})[_0xf1be('0x20')](function(_0x4e460b){if(_0x4e460b&&_0x4e460b[_0xf1be('0x53')]===0x0){return db[_0xf1be('0x24')][_0xf1be('0x46')]({'name':_0x48acaf['name'],'resourceId':_0x48acaf['id'],'type':_0x4e460b[_0xf1be('0x28')],'sectionId':_0x4e460b['id']},{})['then'](function(){return _0x563d27;});}else{return _0x563d27;}})[_0xf1be('0x43')](function(_0x1d79e4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d79e4);throw _0x1d79e4;});}return _0x563d27;})['then'](respondWithResult(_0x26f2ab,0xc9))[_0xf1be('0x43')](handleError(_0x26f2ab,null));};
\ No newline at end of file
+var _0x39f0=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','get','CannedAnswers','UserProfileResource','destroy','error','stack','name','send','map','CannedAnswer','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','includeAll','include','findAll','catch','show','options','update','body','find','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x39f0,0x9d));var _0x039f=function(_0x53b1d1,_0xc2046e){_0x53b1d1=_0x53b1d1-0x0;var _0x10a63a=_0x39f0[_0x53b1d1];return _0x10a63a;};'use strict';var emlformat=require(_0x039f('0x0'));var rimraf=require(_0x039f('0x1'));var zipdir=require(_0x039f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x039f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x039f('0x4'));var util=require(_0x039f('0x5'));var path=require(_0x039f('0x6'));var sox=require(_0x039f('0x7'));var csv=require(_0x039f('0x8'));var ejs=require(_0x039f('0x9'));var fs=require('fs');var fs_extra=require(_0x039f('0xa'));var _=require(_0x039f('0xb'));var squel=require(_0x039f('0xc'));var crypto=require('crypto');var jsforce=require(_0x039f('0xd'));var deskjs=require(_0x039f('0xe'));var toCsv=require(_0x039f('0x8'));var querystring=require(_0x039f('0xf'));var Papa=require(_0x039f('0x10'));var Redis=require(_0x039f('0x11'));var authService=require(_0x039f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x039f('0x13'));var logger=require(_0x039f('0x14'))('api');var utils=require(_0x039f('0x15'));var config=require(_0x039f('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfa039d,_0x1b4bed){_0x1b4bed=_0x1b4bed||0xcc;return function(_0x17854b){if(_0x17854b){return _0xfa039d[_0x039f('0x17')](_0x1b4bed);}return _0xfa039d[_0x039f('0x18')](_0x1b4bed)[_0x039f('0x19')]();};}function respondWithResult(_0x16e5fb,_0x3d4d76){_0x3d4d76=_0x3d4d76||0xc8;return function(_0x4ca474){if(_0x4ca474){return _0x16e5fb['status'](_0x3d4d76)[_0x039f('0x1a')](_0x4ca474);}};}function respondWithFilteredResult(_0x10ba49,_0x2918f0){return function(_0x3c81fd){if(_0x3c81fd){var _0x542c25=typeof _0x2918f0[_0x039f('0x1b')]===_0x039f('0x1c')&&typeof _0x2918f0[_0x039f('0x1d')]===_0x039f('0x1c');var _0x492957=_0x3c81fd['count'];var _0x5c41a9=_0x542c25?0x0:_0x2918f0[_0x039f('0x1b')];var _0x148edd=_0x542c25?_0x3c81fd[_0x039f('0x1e')]:_0x2918f0['offset']+_0x2918f0[_0x039f('0x1d')];var _0x2a898b;if(_0x148edd>=_0x492957){_0x148edd=_0x492957;_0x2a898b=0xc8;}else{_0x2a898b=0xce;}_0x10ba49['status'](_0x2a898b);return _0x10ba49[_0x039f('0x1f')]('Content-Range',_0x5c41a9+'-'+_0x148edd+'/'+_0x492957)[_0x039f('0x1a')](_0x3c81fd);}return null;};}function patchUpdates(_0x3241b9){return function(_0x16ce59){try{jsonpatch[_0x039f('0x20')](_0x16ce59,_0x3241b9,!![]);}catch(_0x1f1690){return BPromise['reject'](_0x1f1690);}return _0x16ce59[_0x039f('0x21')]();};}function saveUpdates(_0x54a873,_0xf3e8c3){return function(_0x5b5081){if(_0x5b5081){return _0x5b5081['update'](_0x54a873)[_0x039f('0x22')](function(_0x4ab588){return _0x4ab588;});}return null;};}function removeEntity(_0x18bb92,_0x163e3c){return function(_0x21f3aa){if(_0x21f3aa){return _0x21f3aa['destroy']()[_0x039f('0x22')](function(){var _0x3b14d5=_0x21f3aa[_0x039f('0x23')]({'plain':!![]});var _0x5e6fef=_0x039f('0x24');return db[_0x039f('0x25')][_0x039f('0x26')]({'where':{'type':_0x5e6fef,'resourceId':_0x3b14d5['id']}})[_0x039f('0x22')](function(){return _0x21f3aa;});})[_0x039f('0x22')](function(){_0x18bb92[_0x039f('0x18')](0xcc)[_0x039f('0x19')]();});}};}function handleEntityNotFound(_0x132225,_0x4f340e){return function(_0x40ff6d){if(!_0x40ff6d){_0x132225['sendStatus'](0x194);}return _0x40ff6d;};}function handleError(_0x215393,_0x235d55){_0x235d55=_0x235d55||0x1f4;return function(_0xcc6db){logger[_0x039f('0x27')](_0xcc6db[_0x039f('0x28')]);if(_0xcc6db[_0x039f('0x29')]){delete _0xcc6db[_0x039f('0x29')];}_0x215393[_0x039f('0x18')](_0x235d55)[_0x039f('0x2a')](_0xcc6db);};}exports['index']=function(_0x93504f,_0x13082e){var _0x4afe4c={},_0x3e67e5={},_0x15747c={'count':0x0,'rows':[]};var _0x1d3de4=_[_0x039f('0x2b')](db[_0x039f('0x2c')][_0x039f('0x2d')],function(_0x5346e5){return{'name':_0x5346e5[_0x039f('0x2e')],'type':_0x5346e5['type'][_0x039f('0x2f')]};});_0x3e67e5[_0x039f('0x30')]=_['map'](_0x1d3de4,'name');_0x3e67e5[_0x039f('0x31')]=_[_0x039f('0x32')](_0x93504f[_0x039f('0x31')]);_0x3e67e5['filters']=_[_0x039f('0x33')](_0x3e67e5['model'],_0x3e67e5['query']);_0x4afe4c[_0x039f('0x34')]=_[_0x039f('0x33')](_0x3e67e5[_0x039f('0x30')],qs[_0x039f('0x35')](_0x93504f[_0x039f('0x31')][_0x039f('0x35')]));_0x4afe4c[_0x039f('0x34')]=_0x4afe4c[_0x039f('0x34')][_0x039f('0x36')]?_0x4afe4c[_0x039f('0x34')]:_0x3e67e5[_0x039f('0x30')];if(!_0x93504f['query'][_0x039f('0x37')](_0x039f('0x38'))){_0x4afe4c[_0x039f('0x1d')]=qs[_0x039f('0x1d')](_0x93504f[_0x039f('0x31')][_0x039f('0x1d')]);_0x4afe4c[_0x039f('0x1b')]=qs[_0x039f('0x1b')](_0x93504f['query']['offset']);}_0x4afe4c['order']=qs[_0x039f('0x39')](_0x93504f['query'][_0x039f('0x39')]);_0x4afe4c[_0x039f('0x3a')]=qs['filters'](_[_0x039f('0x3b')](_0x93504f[_0x039f('0x31')],_0x3e67e5[_0x039f('0x3c')]),_0x1d3de4);if(_0x93504f[_0x039f('0x31')][_0x039f('0x3d')]){_0x4afe4c[_0x039f('0x3a')]=_[_0x039f('0x3e')](_0x4afe4c[_0x039f('0x3a')],{'$or':[{'key':{'$like':'%'+_0x93504f[_0x039f('0x31')][_0x039f('0x3d')]+'%'}},{'value':{'$like':'%'+_0x93504f[_0x039f('0x31')][_0x039f('0x3d')]+'%'}}]});}_0x4afe4c=_['merge']({},_0x4afe4c,_0x93504f['options']);var _0x438eec={'where':_0x4afe4c[_0x039f('0x3a')]};return db[_0x039f('0x2c')][_0x039f('0x1e')](_0x438eec)[_0x039f('0x22')](function(_0x28d305){_0x15747c['count']=_0x28d305;if(_0x93504f['query'][_0x039f('0x3f')]){_0x4afe4c[_0x039f('0x40')]=[{'all':!![]}];}return db[_0x039f('0x2c')][_0x039f('0x41')](_0x4afe4c);})[_0x039f('0x22')](function(_0x2526d7){_0x15747c['rows']=_0x2526d7;return _0x15747c;})[_0x039f('0x22')](respondWithFilteredResult(_0x13082e,_0x4afe4c))[_0x039f('0x42')](handleError(_0x13082e,null));};exports[_0x039f('0x43')]=function(_0x450d10,_0x588e7a){var _0x4fe492={'raw':!![],'where':{'id':_0x450d10['params']['id']}},_0x49d4fc={};_0x49d4fc['model']=_[_0x039f('0x32')](db[_0x039f('0x2c')][_0x039f('0x2d')]);_0x49d4fc['query']=_['keys'](_0x450d10[_0x039f('0x31')]);_0x49d4fc[_0x039f('0x3c')]=_[_0x039f('0x33')](_0x49d4fc[_0x039f('0x30')],_0x49d4fc[_0x039f('0x31')]);_0x4fe492['attributes']=_[_0x039f('0x33')](_0x49d4fc[_0x039f('0x30')],qs[_0x039f('0x35')](_0x450d10[_0x039f('0x31')][_0x039f('0x35')]));_0x4fe492[_0x039f('0x34')]=_0x4fe492[_0x039f('0x34')][_0x039f('0x36')]?_0x4fe492['attributes']:_0x49d4fc[_0x039f('0x30')];if(_0x450d10[_0x039f('0x31')][_0x039f('0x3f')]){_0x4fe492[_0x039f('0x40')]=[{'all':!![]}];}_0x4fe492=_[_0x039f('0x3e')]({},_0x4fe492,_0x450d10[_0x039f('0x44')]);return db[_0x039f('0x2c')]['find'](_0x4fe492)[_0x039f('0x22')](handleEntityNotFound(_0x588e7a,null))[_0x039f('0x22')](respondWithResult(_0x588e7a,null))['catch'](handleError(_0x588e7a,null));};exports[_0x039f('0x45')]=function(_0x4d095d,_0x817617){if(_0x4d095d[_0x039f('0x46')]['id']){delete _0x4d095d[_0x039f('0x46')]['id'];}return db['CannedAnswer']['find']({'where':{'id':_0x4d095d['params']['id']}})['then'](handleEntityNotFound(_0x817617,null))[_0x039f('0x22')](saveUpdates(_0x4d095d[_0x039f('0x46')],null))[_0x039f('0x22')](respondWithResult(_0x817617,null))['catch'](handleError(_0x817617,null));};exports['destroy']=function(_0x46bd92,_0x442535){return db[_0x039f('0x2c')][_0x039f('0x47')]({'where':{'id':_0x46bd92[_0x039f('0x48')]['id']}})['then'](handleEntityNotFound(_0x442535,null))[_0x039f('0x22')](removeEntity(_0x442535,null))[_0x039f('0x42')](handleError(_0x442535,null));};exports[_0x039f('0x49')]=function(_0x32c88b,_0x529adc){var _0x208754={'key':_0x32c88b['body'][_0x039f('0x2f')]};if(_0x32c88b['body'][_0x039f('0x4a')]){_0x208754[_0x039f('0x4a')]=_0x32c88b[_0x039f('0x46')]['MailAccountId'];}else if(_0x32c88b[_0x039f('0x46')][_0x039f('0x4b')]){_0x208754[_0x039f('0x4b')]=_0x32c88b[_0x039f('0x46')][_0x039f('0x4b')];}else if(_0x32c88b[_0x039f('0x46')][_0x039f('0x4c')]){_0x208754[_0x039f('0x4c')]=_0x32c88b[_0x039f('0x46')][_0x039f('0x4c')];}else if(_0x32c88b['body'][_0x039f('0x4d')]){_0x208754['ChatWebsiteId']=_0x32c88b[_0x039f('0x46')][_0x039f('0x4d')];}return db[_0x039f('0x2c')][_0x039f('0x47')]({'where':_0x208754})[_0x039f('0x22')](function(_0xed6f19){if(_0xed6f19){throw new db['Sequelize'][(_0x039f('0x4e'))](_0x039f('0x4f'));}return db[_0x039f('0x2c')]['create'](_0x32c88b[_0x039f('0x46')]);})[_0x039f('0x22')](function(_0x3c6204){var _0x2a010a=_0x32c88b[_0x039f('0x50')]['get']({'plain':!![]});if(!_0x2a010a)throw new Error(_0x039f('0x51'));if(_0x2a010a[_0x039f('0x52')]===_0x039f('0x50')){var _0x17dbd4=_0x3c6204[_0x039f('0x23')]({'plain':!![]});return db[_0x039f('0x53')][_0x039f('0x47')]({'where':{'name':_0x039f('0x24'),'userProfileId':_0x2a010a['userProfileId']},'raw':!![]})[_0x039f('0x22')](function(_0x21674e){if(_0x21674e&&_0x21674e[_0x039f('0x54')]===0x0){return db[_0x039f('0x25')][_0x039f('0x49')]({'name':_0x17dbd4[_0x039f('0x29')],'resourceId':_0x17dbd4['id'],'type':_0x21674e[_0x039f('0x29')],'sectionId':_0x21674e['id']},{})[_0x039f('0x22')](function(){return _0x3c6204;});}else{return _0x3c6204;}})['catch'](function(_0x55f5c3){logger[_0x039f('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55f5c3);throw _0x55f5c3;});}return _0x3c6204;})[_0x039f('0x22')](respondWithResult(_0x529adc,0xc9))[_0x039f('0x42')](handleError(_0x529adc,null));};
\ No newline at end of file
index c6a6388..b1b0f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351d=['utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','CannedAnswer','tools_canned_answers'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x351d,0x90));var _0xd351=function(_0x3a1dfd,_0x3dadbb){_0x3a1dfd=_0x3a1dfd-0x0;var _0x4de36c=_0x351d[_0x3a1dfd];return _0x4de36c;};'use strict';var _=require(_0xd351('0x0'));var util=require('util');var logger=require(_0xd351('0x1'))(_0xd351('0x2'));var moment=require(_0xd351('0x3'));var BPromise=require('bluebird');var rp=require(_0xd351('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd351('0x5'));var config=require(_0xd351('0x6'));var attributes=require('./cannedAnswer.attributes');module[_0xd351('0x7')]=function(_0x45e9e5,_0x88bd2b){return _0x45e9e5['define'](_0xd351('0x8'),attributes,{'tableName':_0xd351('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xd351('0xa')});};
\ No newline at end of file
+var _0x1e4f=['moment','bluebird','path','rimraf','./cannedAnswer.attributes','define','CannedAnswer','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x2345a9,_0x361227){var _0x15fdee=function(_0x2b5229){while(--_0x2b5229){_0x2345a9['push'](_0x2345a9['shift']());}};_0x15fdee(++_0x361227);}(_0x1e4f,0x1a0));var _0xf1e4=function(_0x1ea170,_0x28d157){_0x1ea170=_0x1ea170-0x0;var _0x32487e=_0x1e4f[_0x1ea170];return _0x32487e;};'use strict';var _=require(_0xf1e4('0x0'));var util=require('util');var logger=require(_0xf1e4('0x1'))('api');var moment=require(_0xf1e4('0x2'));var BPromise=require(_0xf1e4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf1e4('0x4'));var rimraf=require(_0xf1e4('0x5'));var config=require('../../config/environment');var attributes=require(_0xf1e4('0x6'));module['exports']=function(_0x56c559,_0x25770a){return _0x56c559[_0xf1e4('0x7')](_0xf1e4('0x8'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf1e4('0x9'),'collate':_0xf1e4('0xa')});};
\ No newline at end of file
index 1aef663..6473a57 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(_0x5dcc77,_0x2dd400){var _0x2626e9=function(_0x2c4040){while(--_0x2c4040){_0x5dcc77['push'](_0x5dcc77['shift']());}};_0x2626e9(++_0x2dd400);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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(_0x56d3be,_0x392750){var _0x3a2b43=function(_0x2d9dc0){while(--_0x2d9dc0){_0x56d3be['push'](_0x56d3be['shift']());}};_0x3a2b43(++_0x392750);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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 ca0c340..fb86786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x199e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','/:id','show','create','delete','exports','multer','util','path','express','fs-extra'];(function(_0x3e8384,_0x1a7869){var _0xddc3eb=function(_0x5e4355){while(--_0x5e4355){_0x3e8384['push'](_0x3e8384['shift']());}};_0xddc3eb(++_0x1a7869);}(_0x199e,0xd8));var _0xe199=function(_0x2aee2f,_0xad9887){_0x2aee2f=_0x2aee2f-0x0;var _0x19337f=_0x199e[_0x2aee2f];return _0x19337f;};'use strict';var multer=require(_0xe199('0x0'));var util=require(_0xe199('0x1'));var path=require(_0xe199('0x2'));var timeout=require('connect-timeout');var express=require(_0xe199('0x3'));var router=express['Router']();var fs_extra=require(_0xe199('0x4'));var auth=require(_0xe199('0x5'));var interaction=require(_0xe199('0x6'));var config=require(_0xe199('0x7'));var controller=require(_0xe199('0x8'));router[_0xe199('0x9')]('/',auth[_0xe199('0xa')](),controller[_0xe199('0xb')]);router[_0xe199('0x9')](_0xe199('0xc'),auth[_0xe199('0xa')](),controller[_0xe199('0xd')]);router['post']('/',auth[_0xe199('0xa')](),controller[_0xe199('0xe')]);router['put'](_0xe199('0xc'),auth[_0xe199('0xa')](),controller['update']);router[_0xe199('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe199('0x10')]=router;
\ No newline at end of file
+var _0xd7df=['../../config/environment','./cannedAnswer.controller','get','isAuthenticated','show','post','put','update','delete','destroy','multer','util','path','connect-timeout','../../components/auth/service'];(function(_0x53f0f6,_0x359084){var _0xbce5c7=function(_0x4c8f7e){while(--_0x4c8f7e){_0x53f0f6['push'](_0x53f0f6['shift']());}};_0xbce5c7(++_0x359084);}(_0xd7df,0xfa));var _0xfd7d=function(_0x3d8255,_0x1f238d){_0x3d8255=_0x3d8255-0x0;var _0x18f3ed=_0xd7df[_0x3d8255];return _0x18f3ed;};'use strict';var multer=require(_0xfd7d('0x0'));var util=require(_0xfd7d('0x1'));var path=require(_0xfd7d('0x2'));var timeout=require(_0xfd7d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfd7d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xfd7d('0x5'));var controller=require(_0xfd7d('0x6'));router[_0xfd7d('0x7')]('/',auth[_0xfd7d('0x8')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xfd7d('0x9')]);router[_0xfd7d('0xa')]('/',auth[_0xfd7d('0x8')](),controller['create']);router[_0xfd7d('0xb')]('/:id',auth[_0xfd7d('0x8')](),controller[_0xfd7d('0xc')]);router[_0xfd7d('0xd')]('/:id',auth[_0xfd7d('0x8')](),controller[_0xfd7d('0xe')]);module['exports']=router;
\ No newline at end of file
index 5ccdf46..bb70265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3294=['INTEGER','1970-01-01\x2000:00:01','STRING'];(function(_0x52f2a4,_0x43f5ae){var _0x301f94=function(_0x70f6d4){while(--_0x70f6d4){_0x52f2a4['push'](_0x52f2a4['shift']());}};_0x301f94(++_0x43f5ae);}(_0x3294,0x1db));var _0x4329=function(_0x141884,_0x59a4e1){_0x141884=_0x141884-0x0;var _0x243a25=_0x3294[_0x141884];return _0x243a25;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x4329('0x0')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0x4329('0x1')]},'dst':{'type':Sequelize[_0x4329('0x1')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x4329('0x1')]},'dstchannel':{'type':Sequelize[_0x4329('0x1')]},'lastapp':{'type':Sequelize[_0x4329('0x1')]},'lastdata':{'type':Sequelize[_0x4329('0x1')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x4329('0x2')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x4329('0x1')]},'uniqueid':{'type':Sequelize[_0x4329('0x1')]},'linkedid':{'type':Sequelize[_0x4329('0x1')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x4329('0x1')]}};
\ No newline at end of file
+var _0x0b96=['STRING','INTEGER','DATE','1970-01-01\x2000:00:01'];(function(_0x2601b4,_0x315e78){var _0x3e3661=function(_0x13b45b){while(--_0x13b45b){_0x2601b4['push'](_0x2601b4['shift']());}};_0x3e3661(++_0x315e78);}(_0x0b96,0xc2));var _0x60b9=function(_0x506172,_0xbc3a3){_0x506172=_0x506172-0x0;var _0x2723c0=_0x0b96[_0x506172];return _0x2723c0;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0x60b9('0x0')],'allowNull':![],'defaultValue':_0x60b9('0x1')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0x60b9('0x2')]},'dst':{'type':Sequelize[_0x60b9('0x2')]},'dcontext':{'type':Sequelize[_0x60b9('0x2')]},'channel':{'type':Sequelize[_0x60b9('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x60b9('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x60b9('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x60b9('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x60b9('0x2')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x60b9('0x2')]},'linkedid':{'type':Sequelize[_0x60b9('0x2')]},'sequence':{'type':Sequelize[_0x60b9('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x60b9('0x2')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2cb4bdb..beba940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','filter','merge','VIRTUAL','Cdr','includeAll','findAll','catch','show','params','keys','include','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x24ca,0x1bc));var _0xa24c=function(_0x51ec61,_0xf9d1e3){_0x51ec61=_0x51ec61-0x0;var _0x223200=_0x24ca[_0x51ec61];return _0x223200;};'use strict';var emlformat=require(_0xa24c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa24c('0x1'));var jsonpatch=require(_0xa24c('0x2'));var rp=require(_0xa24c('0x3'));var moment=require('moment');var BPromise=require(_0xa24c('0x4'));var Mustache=require(_0xa24c('0x5'));var util=require(_0xa24c('0x6'));var path=require(_0xa24c('0x7'));var sox=require(_0xa24c('0x8'));var csv=require(_0xa24c('0x9'));var ejs=require(_0xa24c('0xa'));var fs=require('fs');var fs_extra=require(_0xa24c('0xb'));var _=require(_0xa24c('0xc'));var squel=require(_0xa24c('0xd'));var crypto=require(_0xa24c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa24c('0xf'));var toCsv=require(_0xa24c('0x9'));var querystring=require(_0xa24c('0x10'));var Papa=require('papaparse');var Redis=require(_0xa24c('0x11'));var authService=require(_0xa24c('0x12'));var qs=require(_0xa24c('0x13'));var as=require(_0xa24c('0x14'));var hardwareService=require(_0xa24c('0x15'));var logger=require(_0xa24c('0x16'))(_0xa24c('0x17'));var utils=require(_0xa24c('0x18'));var config=require(_0xa24c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xa24c('0x1a'))['db'];function respondWithStatusCode(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xcc;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['sendStatus'](_0xcee4fe);}return _0x11090c[_0xa24c('0x1b')](_0xcee4fe)[_0xa24c('0x1c')]();};}function respondWithResult(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0xc8;return function(_0x1cb08e){if(_0x1cb08e){return _0x26ff28[_0xa24c('0x1b')](_0x2fcd8b)[_0xa24c('0x1d')](_0x1cb08e);}};}function respondWithFilteredResult(_0x5d4727,_0x47a063){return function(_0xb80781){if(_0xb80781){var _0x87aa90=typeof _0x47a063['offset']==='undefined'&&typeof _0x47a063[_0xa24c('0x1e')]===_0xa24c('0x1f');var _0x5c479e=_0xb80781[_0xa24c('0x20')];var _0x5de3e6=_0x87aa90?0x0:_0x47a063[_0xa24c('0x21')];var _0x2a610a=_0x87aa90?_0xb80781[_0xa24c('0x20')]:_0x47a063[_0xa24c('0x21')]+_0x47a063['limit'];var _0x16d363;if(_0x2a610a>=_0x5c479e){_0x2a610a=_0x5c479e;_0x16d363=0xc8;}else{_0x16d363=0xce;}_0x5d4727[_0xa24c('0x1b')](_0x16d363);return _0x5d4727[_0xa24c('0x22')]('Content-Range',_0x5de3e6+'-'+_0x2a610a+'/'+_0x5c479e)['json'](_0xb80781);}return null;};}function patchUpdates(_0x506424){return function(_0x4cd77e){try{jsonpatch[_0xa24c('0x23')](_0x4cd77e,_0x506424,!![]);}catch(_0x174b69){return BPromise[_0xa24c('0x24')](_0x174b69);}return _0x4cd77e[_0xa24c('0x25')]();};}function saveUpdates(_0x51a275,_0x30ec21){return function(_0x5f299e){if(_0x5f299e){return _0x5f299e[_0xa24c('0x26')](_0x51a275)[_0xa24c('0x27')](function(_0x4a1cda){return _0x4a1cda;});}return null;};}function removeEntity(_0x346ee8,_0x363d52){return function(_0x43a0c0){if(_0x43a0c0){return _0x43a0c0[_0xa24c('0x28')]()[_0xa24c('0x27')](function(){_0x346ee8['status'](0xcc)[_0xa24c('0x1c')]();});}};}function handleEntityNotFound(_0x5cc9cb,_0x2365f9){return function(_0x3951ae){if(!_0x3951ae){_0x5cc9cb[_0xa24c('0x29')](0x194);}return _0x3951ae;};}function handleError(_0x51dc3f,_0x1beb55){_0x1beb55=_0x1beb55||0x1f4;return function(_0x31c4d9){logger[_0xa24c('0x2a')](_0x31c4d9[_0xa24c('0x2b')]);if(_0x31c4d9[_0xa24c('0x2c')]){delete _0x31c4d9[_0xa24c('0x2c')];}_0x51dc3f[_0xa24c('0x1b')](_0x1beb55)['send'](_0x31c4d9);};}exports[_0xa24c('0x2d')]=function(_0x28675f,_0x152120){var _0x12dbdc={},_0x5e491e={},_0x21d2a8={'count':0x0,'rows':[]};var _0xc96ce7=_[_0xa24c('0x2e')](db['Cdr'][_0xa24c('0x2f')],function(_0x3dcb1b){return{'name':_0x3dcb1b[_0xa24c('0x30')],'type':_0x3dcb1b['type'][_0xa24c('0x31')]};});_0x5e491e['model']=_[_0xa24c('0x2e')](_0xc96ce7,_0xa24c('0x2c'));_0x5e491e[_0xa24c('0x32')]=_['keys'](_0x28675f[_0xa24c('0x32')]);_0x5e491e[_0xa24c('0x33')]=_[_0xa24c('0x34')](_0x5e491e['model'],_0x5e491e[_0xa24c('0x32')]);_0x12dbdc['attributes']=_[_0xa24c('0x34')](_0x5e491e[_0xa24c('0x35')],qs['fields'](_0x28675f['query'][_0xa24c('0x36')]));_0x12dbdc[_0xa24c('0x37')]=_0x12dbdc[_0xa24c('0x37')][_0xa24c('0x38')]?_0x12dbdc[_0xa24c('0x37')]:_0x5e491e[_0xa24c('0x35')];if(!_0x28675f[_0xa24c('0x32')]['hasOwnProperty'](_0xa24c('0x39'))){_0x12dbdc[_0xa24c('0x1e')]=qs[_0xa24c('0x1e')](_0x28675f[_0xa24c('0x32')][_0xa24c('0x1e')]);_0x12dbdc[_0xa24c('0x21')]=qs[_0xa24c('0x21')](_0x28675f[_0xa24c('0x32')][_0xa24c('0x21')]);}_0x12dbdc[_0xa24c('0x3a')]=qs['sort'](_0x28675f[_0xa24c('0x32')][_0xa24c('0x3b')]);_0x12dbdc[_0xa24c('0x3c')]=qs[_0xa24c('0x33')](_['pick'](_0x28675f['query'],_0x5e491e[_0xa24c('0x33')]),_0xc96ce7);if(_0x28675f['query'][_0xa24c('0x3d')]){_0x12dbdc[_0xa24c('0x3c')]=_[_0xa24c('0x3e')](_0x12dbdc[_0xa24c('0x3c')],{'$or':_[_0xa24c('0x2e')](_0xc96ce7,function(_0x4c0fb9){if(_0x4c0fb9['type']!==_0xa24c('0x3f')){var _0xc661c7={};_0xc661c7[_0x4c0fb9[_0xa24c('0x2c')]]={'$like':'%'+_0x28675f[_0xa24c('0x32')][_0xa24c('0x3d')]+'%'};return _0xc661c7;}})});}_0x12dbdc=_[_0xa24c('0x3e')]({},_0x12dbdc,_0x28675f['options']);var _0x56f392={'where':_0x12dbdc[_0xa24c('0x3c')]};return db[_0xa24c('0x40')][_0xa24c('0x20')](_0x56f392)[_0xa24c('0x27')](function(_0x43beff){_0x21d2a8['count']=_0x43beff;if(_0x28675f[_0xa24c('0x32')][_0xa24c('0x41')]){_0x12dbdc['include']=[{'all':!![]}];}return db['Cdr'][_0xa24c('0x42')](_0x12dbdc);})[_0xa24c('0x27')](function(_0x231eea){_0x21d2a8['rows']=_0x231eea;return _0x21d2a8;})['then'](respondWithFilteredResult(_0x152120,_0x12dbdc))[_0xa24c('0x43')](handleError(_0x152120,null));};exports[_0xa24c('0x44')]=function(_0x31048c,_0x3ccc37){var _0x3f640e={'raw':!![],'where':{'id':_0x31048c[_0xa24c('0x45')]['id']}},_0x1b7faf={};_0x1b7faf[_0xa24c('0x35')]=_['keys'](db['Cdr'][_0xa24c('0x2f')]);_0x1b7faf[_0xa24c('0x32')]=_[_0xa24c('0x46')](_0x31048c['query']);_0x1b7faf[_0xa24c('0x33')]=_[_0xa24c('0x34')](_0x1b7faf[_0xa24c('0x35')],_0x1b7faf[_0xa24c('0x32')]);_0x3f640e[_0xa24c('0x37')]=_[_0xa24c('0x34')](_0x1b7faf[_0xa24c('0x35')],qs[_0xa24c('0x36')](_0x31048c[_0xa24c('0x32')][_0xa24c('0x36')]));_0x3f640e['attributes']=_0x3f640e[_0xa24c('0x37')][_0xa24c('0x38')]?_0x3f640e[_0xa24c('0x37')]:_0x1b7faf['model'];if(_0x31048c[_0xa24c('0x32')][_0xa24c('0x41')]){_0x3f640e[_0xa24c('0x47')]=[{'all':!![]}];}_0x3f640e=_[_0xa24c('0x3e')]({},_0x3f640e,_0x31048c[_0xa24c('0x48')]);return db[_0xa24c('0x40')][_0xa24c('0x49')](_0x3f640e)[_0xa24c('0x27')](handleEntityNotFound(_0x3ccc37,null))[_0xa24c('0x27')](respondWithResult(_0x3ccc37,null))[_0xa24c('0x43')](handleError(_0x3ccc37,null));};exports[_0xa24c('0x4a')]=function(_0x54dc72,_0x29a84d){return db[_0xa24c('0x40')][_0xa24c('0x4a')](_0x54dc72[_0xa24c('0x4b')],{})[_0xa24c('0x27')](respondWithResult(_0x29a84d,0xc9))[_0xa24c('0x43')](handleError(_0x29a84d,null));};exports[_0xa24c('0x26')]=function(_0x2250b9,_0x184179){if(_0x2250b9['body']['id']){delete _0x2250b9['body']['id'];}return db[_0xa24c('0x40')]['find']({'where':{'id':_0x2250b9[_0xa24c('0x45')]['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x184179,null))['then'](saveUpdates(_0x2250b9[_0xa24c('0x4b')],null))[_0xa24c('0x27')](respondWithResult(_0x184179,null))[_0xa24c('0x43')](handleError(_0x184179,null));};exports['destroy']=function(_0x55978e,_0x87347c){return db['Cdr'][_0xa24c('0x49')]({'where':{'id':_0x55978e[_0xa24c('0x45')]['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x87347c,null))[_0xa24c('0x27')](removeEntity(_0x87347c,null))[_0xa24c('0x43')](handleError(_0x87347c,null));};exports[_0xa24c('0x4c')]=function(_0x3f3ce6,_0x286d57){return db[_0xa24c('0x40')][_0xa24c('0x4c')]()['then'](respondWithResult(_0x286d57,null))[_0xa24c('0x43')](handleError(_0x286d57,null));};
\ No newline at end of file
+var _0x126e=['../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','Cdr','rawAttributes','type','model','map','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','show','params','intersection','find','catch','create','body','describe','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'];(function(_0x48224d,_0x1452b9){var _0x47edc0=function(_0x4f0431){while(--_0x4f0431){_0x48224d['push'](_0x48224d['shift']());}};_0x47edc0(++_0x1452b9);}(_0x126e,0x108));var _0xe126=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x126e[_0x55f8b4];return _0x2475f9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe126('0x0'));var zipdir=require(_0xe126('0x1'));var jsonpatch=require(_0xe126('0x2'));var rp=require(_0xe126('0x3'));var moment=require(_0xe126('0x4'));var BPromise=require(_0xe126('0x5'));var Mustache=require('mustache');var util=require(_0xe126('0x6'));var path=require(_0xe126('0x7'));var sox=require(_0xe126('0x8'));var csv=require(_0xe126('0x9'));var ejs=require(_0xe126('0xa'));var fs=require('fs');var fs_extra=require(_0xe126('0xb'));var _=require(_0xe126('0xc'));var squel=require('squel');var crypto=require(_0xe126('0xd'));var jsforce=require(_0xe126('0xe'));var deskjs=require(_0xe126('0xf'));var toCsv=require(_0xe126('0x9'));var querystring=require(_0xe126('0x10'));var Papa=require('papaparse');var Redis=require(_0xe126('0x11'));var authService=require(_0xe126('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe126('0x13'));var hardwareService=require(_0xe126('0x14'));var logger=require('../../config/logger')(_0xe126('0x15'));var utils=require('../../config/utils');var config=require(_0xe126('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe126('0x17'))['db'];function respondWithStatusCode(_0x34ae06,_0x23ff02){_0x23ff02=_0x23ff02||0xcc;return function(_0x38b8c3){if(_0x38b8c3){return _0x34ae06[_0xe126('0x18')](_0x23ff02);}return _0x34ae06[_0xe126('0x19')](_0x23ff02)[_0xe126('0x1a')]();};}function respondWithResult(_0x55f10a,_0xd55baf){_0xd55baf=_0xd55baf||0xc8;return function(_0x1c02c9){if(_0x1c02c9){return _0x55f10a['status'](_0xd55baf)[_0xe126('0x1b')](_0x1c02c9);}};}function respondWithFilteredResult(_0x28d7dd,_0x10bc24){return function(_0x38b0c0){if(_0x38b0c0){var _0x5e52d1=typeof _0x10bc24[_0xe126('0x1c')]===_0xe126('0x1d')&&typeof _0x10bc24[_0xe126('0x1e')]==='undefined';var _0x2b0baa=_0x38b0c0['count'];var _0x46c98a=_0x5e52d1?0x0:_0x10bc24[_0xe126('0x1c')];var _0x19b0a3=_0x5e52d1?_0x38b0c0[_0xe126('0x1f')]:_0x10bc24[_0xe126('0x1c')]+_0x10bc24[_0xe126('0x1e')];var _0x20874b;if(_0x19b0a3>=_0x2b0baa){_0x19b0a3=_0x2b0baa;_0x20874b=0xc8;}else{_0x20874b=0xce;}_0x28d7dd[_0xe126('0x19')](_0x20874b);return _0x28d7dd['set'](_0xe126('0x20'),_0x46c98a+'-'+_0x19b0a3+'/'+_0x2b0baa)[_0xe126('0x1b')](_0x38b0c0);}return null;};}function patchUpdates(_0x35ab64){return function(_0x2e5617){try{jsonpatch[_0xe126('0x21')](_0x2e5617,_0x35ab64,!![]);}catch(_0x24076e){return BPromise[_0xe126('0x22')](_0x24076e);}return _0x2e5617[_0xe126('0x23')]();};}function saveUpdates(_0x5257bc,_0x4a1a97){return function(_0xdb6544){if(_0xdb6544){return _0xdb6544[_0xe126('0x24')](_0x5257bc)[_0xe126('0x25')](function(_0x5f1ce1){return _0x5f1ce1;});}return null;};}function removeEntity(_0x5381e1,_0x47f179){return function(_0x4807d3){if(_0x4807d3){return _0x4807d3[_0xe126('0x26')]()['then'](function(){_0x5381e1[_0xe126('0x19')](0xcc)[_0xe126('0x1a')]();});}};}function handleEntityNotFound(_0x4157ed,_0x1674c9){return function(_0x532409){if(!_0x532409){_0x4157ed['sendStatus'](0x194);}return _0x532409;};}function handleError(_0x26482f,_0x4facea){_0x4facea=_0x4facea||0x1f4;return function(_0x3f5de5){logger[_0xe126('0x27')](_0x3f5de5[_0xe126('0x28')]);if(_0x3f5de5['name']){delete _0x3f5de5[_0xe126('0x29')];}_0x26482f[_0xe126('0x19')](_0x4facea)['send'](_0x3f5de5);};}exports[_0xe126('0x2a')]=function(_0x259059,_0x5a8b2a){var _0x9d9e28={},_0x1fb354={},_0x29dec4={'count':0x0,'rows':[]};var _0x181ccc=_['map'](db[_0xe126('0x2b')][_0xe126('0x2c')],function(_0x5e7bab){return{'name':_0x5e7bab['fieldName'],'type':_0x5e7bab[_0xe126('0x2d')]['key']};});_0x1fb354[_0xe126('0x2e')]=_[_0xe126('0x2f')](_0x181ccc,_0xe126('0x29'));_0x1fb354['query']=_[_0xe126('0x30')](_0x259059[_0xe126('0x31')]);_0x1fb354[_0xe126('0x32')]=_['intersection'](_0x1fb354[_0xe126('0x2e')],_0x1fb354[_0xe126('0x31')]);_0x9d9e28['attributes']=_['intersection'](_0x1fb354[_0xe126('0x2e')],qs[_0xe126('0x33')](_0x259059[_0xe126('0x31')][_0xe126('0x33')]));_0x9d9e28[_0xe126('0x34')]=_0x9d9e28[_0xe126('0x34')][_0xe126('0x35')]?_0x9d9e28[_0xe126('0x34')]:_0x1fb354['model'];if(!_0x259059[_0xe126('0x31')][_0xe126('0x36')](_0xe126('0x37'))){_0x9d9e28[_0xe126('0x1e')]=qs[_0xe126('0x1e')](_0x259059[_0xe126('0x31')]['limit']);_0x9d9e28[_0xe126('0x1c')]=qs[_0xe126('0x1c')](_0x259059[_0xe126('0x31')][_0xe126('0x1c')]);}_0x9d9e28[_0xe126('0x38')]=qs['sort'](_0x259059[_0xe126('0x31')][_0xe126('0x39')]);_0x9d9e28[_0xe126('0x3a')]=qs[_0xe126('0x32')](_['pick'](_0x259059[_0xe126('0x31')],_0x1fb354[_0xe126('0x32')]),_0x181ccc);if(_0x259059[_0xe126('0x31')][_0xe126('0x3b')]){_0x9d9e28[_0xe126('0x3a')]=_[_0xe126('0x3c')](_0x9d9e28['where'],{'$or':_[_0xe126('0x2f')](_0x181ccc,function(_0x1a8edf){if(_0x1a8edf[_0xe126('0x2d')]!=='VIRTUAL'){var _0x5073bc={};_0x5073bc[_0x1a8edf[_0xe126('0x29')]]={'$like':'%'+_0x259059[_0xe126('0x31')][_0xe126('0x3b')]+'%'};return _0x5073bc;}})});}_0x9d9e28=_[_0xe126('0x3c')]({},_0x9d9e28,_0x259059[_0xe126('0x3d')]);var _0x1c128d={'where':_0x9d9e28['where']};return db[_0xe126('0x2b')][_0xe126('0x1f')](_0x1c128d)['then'](function(_0x4eb3d7){_0x29dec4[_0xe126('0x1f')]=_0x4eb3d7;if(_0x259059[_0xe126('0x31')]['includeAll']){_0x9d9e28[_0xe126('0x3e')]=[{'all':!![]}];}return db[_0xe126('0x2b')]['findAll'](_0x9d9e28);})[_0xe126('0x25')](function(_0x366754){_0x29dec4['rows']=_0x366754;return _0x29dec4;})[_0xe126('0x25')](respondWithFilteredResult(_0x5a8b2a,_0x9d9e28))['catch'](handleError(_0x5a8b2a,null));};exports[_0xe126('0x3f')]=function(_0x23d1d8,_0x5d5111){var _0x3613de={'raw':!![],'where':{'id':_0x23d1d8[_0xe126('0x40')]['id']}},_0x149b84={};_0x149b84['model']=_[_0xe126('0x30')](db['Cdr'][_0xe126('0x2c')]);_0x149b84[_0xe126('0x31')]=_[_0xe126('0x30')](_0x23d1d8[_0xe126('0x31')]);_0x149b84[_0xe126('0x32')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],_0x149b84[_0xe126('0x31')]);_0x3613de[_0xe126('0x34')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],qs['fields'](_0x23d1d8['query'][_0xe126('0x33')]));_0x3613de[_0xe126('0x34')]=_0x3613de['attributes'][_0xe126('0x35')]?_0x3613de[_0xe126('0x34')]:_0x149b84[_0xe126('0x2e')];if(_0x23d1d8[_0xe126('0x31')]['includeAll']){_0x3613de[_0xe126('0x3e')]=[{'all':!![]}];}_0x3613de=_[_0xe126('0x3c')]({},_0x3613de,_0x23d1d8[_0xe126('0x3d')]);return db[_0xe126('0x2b')][_0xe126('0x42')](_0x3613de)[_0xe126('0x25')](handleEntityNotFound(_0x5d5111,null))[_0xe126('0x25')](respondWithResult(_0x5d5111,null))[_0xe126('0x43')](handleError(_0x5d5111,null));};exports[_0xe126('0x44')]=function(_0xccc25d,_0x23007d){return db[_0xe126('0x2b')][_0xe126('0x44')](_0xccc25d['body'],{})['then'](respondWithResult(_0x23007d,0xc9))['catch'](handleError(_0x23007d,null));};exports['update']=function(_0xe642ae,_0x8d5abd){if(_0xe642ae[_0xe126('0x45')]['id']){delete _0xe642ae[_0xe126('0x45')]['id'];}return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0xe642ae[_0xe126('0x40')]['id']}})['then'](handleEntityNotFound(_0x8d5abd,null))['then'](saveUpdates(_0xe642ae[_0xe126('0x45')],null))[_0xe126('0x25')](respondWithResult(_0x8d5abd,null))['catch'](handleError(_0x8d5abd,null));};exports[_0xe126('0x26')]=function(_0x209002,_0x518e43){return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0x209002['params']['id']}})['then'](handleEntityNotFound(_0x518e43,null))[_0xe126('0x25')](removeEntity(_0x518e43,null))[_0xe126('0x43')](handleError(_0x518e43,null));};exports[_0xe126('0x46')]=function(_0x48fbed,_0x31e193){return db['Cdr'][_0xe126('0x46')]()[_0xe126('0x25')](respondWithResult(_0x31e193,null))['catch'](handleError(_0x31e193,null));};
\ No newline at end of file
index 9899d9f..5e849e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x1daa1b,_0x33fc43){var _0x53d573=function(_0x3d1e2d){while(--_0x3d1e2d){_0x1daa1b['push'](_0x1daa1b['shift']());}};_0x53d573(++_0x33fc43);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x463368,_0x378fc0){var _0x1e1f1b=function(_0x58e7dd){while(--_0x58e7dd){_0x463368['push'](_0x463368['shift']());}};_0x1e1f1b(++_0x378fc0);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index d9841e5..fb9b282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd2=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','Cdr,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x624ffa,_0x30537d){var _0x5c1cc4=function(_0x36048e){while(--_0x36048e){_0x624ffa['push'](_0x624ffa['shift']());}};_0x5c1cc4(++_0x30537d);}(_0x8dd2,0x66));var _0x28dd=function(_0x23a79e,_0x235f89){_0x23a79e=_0x23a79e-0x0;var _0x3dab57=_0x8dd2[_0x23a79e];return _0x3dab57;};'use strict';var _=require(_0x28dd('0x0'));var util=require(_0x28dd('0x1'));var moment=require(_0x28dd('0x2'));var BPromise=require(_0x28dd('0x3'));var rs=require(_0x28dd('0x4'));var fs=require('fs');var Redis=require(_0x28dd('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x28dd('0x6'));var logger=require('../../config/logger')(_0x28dd('0x7'));var config=require(_0x28dd('0x8'));var jayson=require(_0x28dd('0x9'));var client=jayson[_0x28dd('0xa')][_0x28dd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9e214e,_0x3d962c,_0x282e08){return new BPromise(function(_0x58e450,_0x2d6430){return client['request'](_0x9e214e,_0x282e08)['then'](function(_0x5e513b){logger[_0x28dd('0xc')](_0x28dd('0xd'),_0x3d962c,_0x28dd('0xe'));logger['debug']('Cdr,\x20%s,\x20%s,\x20%s',_0x3d962c,_0x28dd('0xe'),JSON[_0x28dd('0xf')](_0x5e513b));if(_0x5e513b[_0x28dd('0x10')]){if(_0x5e513b[_0x28dd('0x10')]['code']===0x1f4){logger['error'](_0x28dd('0xd'),_0x3d962c,_0x5e513b['error'][_0x28dd('0x11')]);return _0x2d6430(_0x5e513b[_0x28dd('0x10')][_0x28dd('0x11')]);}logger['error'](_0x28dd('0xd'),_0x3d962c,_0x5e513b[_0x28dd('0x10')][_0x28dd('0x11')]);return _0x58e450(_0x5e513b[_0x28dd('0x10')]['message']);}else{logger[_0x28dd('0xc')](_0x28dd('0xd'),_0x3d962c,_0x28dd('0xe'));_0x58e450(_0x5e513b[_0x28dd('0x12')][_0x28dd('0x11')]);}})[_0x28dd('0x13')](function(_0x4ec09e){logger[_0x28dd('0x10')](_0x28dd('0xd'),_0x3d962c,_0x4ec09e);_0x2d6430(_0x4ec09e);});});}
\ No newline at end of file
+var _0xe9af=['Cdr,\x20%s,\x20%s','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','../../config/utils','rpc','client','http','request','then','info'];(function(_0x5bf888,_0x1051db){var _0x6250f5=function(_0x3f2ff2){while(--_0x3f2ff2){_0x5bf888['push'](_0x5bf888['shift']());}};_0x6250f5(++_0x1051db);}(_0xe9af,0x129));var _0xfe9a=function(_0x12b958,_0x119ff7){_0x12b958=_0x12b958-0x0;var _0xbcedf7=_0xe9af[_0x12b958];return _0xbcedf7;};'use strict';var _=require(_0xfe9a('0x0'));var util=require(_0xfe9a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfe9a('0x2'));var logger=require('../../config/logger')(_0xfe9a('0x3'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfe9a('0x4')][_0xfe9a('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x4cf85e,_0x5cd872,_0x275b20){return new BPromise(function(_0x2b8935,_0x461bcd){return client[_0xfe9a('0x6')](_0x4cf85e,_0x275b20)[_0xfe9a('0x7')](function(_0x45eca7){logger[_0xfe9a('0x8')](_0xfe9a('0x9'),_0x5cd872,'request\x20sent');logger['debug'](_0xfe9a('0xa'),_0x5cd872,_0xfe9a('0xb'),JSON[_0xfe9a('0xc')](_0x45eca7));if(_0x45eca7[_0xfe9a('0xd')]){if(_0x45eca7[_0xfe9a('0xd')][_0xfe9a('0xe')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x5cd872,_0x45eca7[_0xfe9a('0xd')]['message']);return _0x461bcd(_0x45eca7[_0xfe9a('0xd')]['message']);}logger[_0xfe9a('0xd')](_0xfe9a('0x9'),_0x5cd872,_0x45eca7[_0xfe9a('0xd')][_0xfe9a('0xf')]);return _0x2b8935(_0x45eca7[_0xfe9a('0xd')]['message']);}else{logger[_0xfe9a('0x8')]('Cdr,\x20%s,\x20%s',_0x5cd872,_0xfe9a('0xb'));_0x2b8935(_0x45eca7[_0xfe9a('0x10')][_0xfe9a('0xf')]);}})['catch'](function(_0x4feced){logger[_0xfe9a('0xd')]('Cdr,\x20%s,\x20%s',_0x5cd872,_0x4feced);_0x461bcd(_0x4feced);});});}
\ No newline at end of file
index 98500d0..aa4533a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x10dc64,_0x11bb29){var _0x9cf98d=function(_0x558d71){while(--_0x558d71){_0x10dc64['push'](_0x10dc64['shift']());}};_0x9cf98d(++_0x11bb29);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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
+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(_0x2b0834,_0x127ebe){var _0x16dc89=function(_0x34bd49){while(--_0x34bd49){_0x2b0834['push'](_0x2b0834['shift']());}};_0x16dc89(++_0x127ebe);}(_0xb10b,0x12a));var _0xbb10=function(_0x582ccd,_0xa9ab43){_0x582ccd=_0x582ccd-0x0;var _0x11545d=_0xb10b[_0x582ccd];return _0x11545d;};'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 1858af3..61d4a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6f=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x13e9dd,_0x3e13a2){var _0x34db14=function(_0x1c8a65){while(--_0x1c8a65){_0x13e9dd['push'](_0x13e9dd['shift']());}};_0x34db14(++_0x3e13a2);}(_0xfd6f,0x1be));var _0xffd6=function(_0x2eb20d,_0x4db297){_0x2eb20d=_0x2eb20d-0x0;var _0x1e73a6=_0xfd6f[_0x2eb20d];return _0x1e73a6;};'use strict';var Sequelize=require(_0xffd6('0x0'));module[_0xffd6('0x1')]={'priority':{'type':Sequelize[_0xffd6('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xffd6('0x3')],'allowNull':![],'defaultValue':_0xffd6('0x4')},'appdata':{'type':Sequelize[_0xffd6('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xffd6('0x3')],'defaultValue':_0xffd6('0x6')}};
\ No newline at end of file
+var _0x53c7=['STRING','noop','TEXT','sequelize','exports','INTEGER'];(function(_0x3a229f,_0x1f09ca){var _0x2a095e=function(_0x26dadc){while(--_0x26dadc){_0x3a229f['push'](_0x3a229f['shift']());}};_0x2a095e(++_0x1f09ca);}(_0x53c7,0x1e9));var _0x753c=function(_0x2c014a,_0x28aa81){_0x2c014a=_0x2c014a-0x0;var _0x2f7d7f=_0x53c7[_0x2c014a];return _0x2f7d7f;};'use strict';var Sequelize=require(_0x753c('0x0'));module[_0x753c('0x1')]={'priority':{'type':Sequelize[_0x753c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x753c('0x3')],'allowNull':![],'defaultValue':_0x753c('0x4')},'appdata':{'type':Sequelize[_0x753c('0x5')]()},'description':{'type':Sequelize[_0x753c('0x3')]},'interval':{'type':Sequelize[_0x753c('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 268bee3..f14ba58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3402=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','update','then','error','stack','name','send','show','params','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','catch','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x1b0164,_0x45c365){var _0x2fa84a=function(_0x5a6a7b){while(--_0x5a6a7b){_0x1b0164['push'](_0x1b0164['shift']());}};_0x2fa84a(++_0x45c365);}(_0x3402,0x1f0));var _0x2340=function(_0x55afca,_0x22e7fa){_0x55afca=_0x55afca-0x0;var _0x25e0a5=_0x3402[_0x55afca];return _0x25e0a5;};'use strict';var emlformat=require(_0x2340('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2340('0x1'));var jsonpatch=require(_0x2340('0x2'));var rp=require(_0x2340('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2340('0x4'));var util=require(_0x2340('0x5'));var path=require(_0x2340('0x6'));var sox=require(_0x2340('0x7'));var csv=require(_0x2340('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2340('0x9'));var squel=require(_0x2340('0xa'));var crypto=require(_0x2340('0xb'));var jsforce=require(_0x2340('0xc'));var deskjs=require(_0x2340('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2340('0xe'));var Papa=require(_0x2340('0xf'));var Redis=require(_0x2340('0x10'));var authService=require(_0x2340('0x11'));var qs=require(_0x2340('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2340('0x13'));var logger=require(_0x2340('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x2340('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2340('0x16'))['db'];function respondWithStatusCode(_0x5cc478,_0x35baa8){_0x35baa8=_0x35baa8||0xcc;return function(_0x42c154){if(_0x42c154){return _0x5cc478[_0x2340('0x17')](_0x35baa8);}return _0x5cc478[_0x2340('0x18')](_0x35baa8)[_0x2340('0x19')]();};}function respondWithResult(_0x7e51a5,_0xcab834){_0xcab834=_0xcab834||0xc8;return function(_0x491814){if(_0x491814){return _0x7e51a5[_0x2340('0x18')](_0xcab834)[_0x2340('0x1a')](_0x491814);}};}function respondWithFilteredResult(_0x3642e0,_0x5aff27){return function(_0x173678){if(_0x173678){var _0x119a05=typeof _0x5aff27[_0x2340('0x1b')]===_0x2340('0x1c')&&typeof _0x5aff27['limit']===_0x2340('0x1c');var _0x3ce1fa=_0x173678[_0x2340('0x1d')];var _0x9723dd=_0x119a05?0x0:_0x5aff27[_0x2340('0x1b')];var _0x51524b=_0x119a05?_0x173678['count']:_0x5aff27[_0x2340('0x1b')]+_0x5aff27[_0x2340('0x1e')];var _0x434a59;if(_0x51524b>=_0x3ce1fa){_0x51524b=_0x3ce1fa;_0x434a59=0xc8;}else{_0x434a59=0xce;}_0x3642e0['status'](_0x434a59);return _0x3642e0['set'](_0x2340('0x1f'),_0x9723dd+'-'+_0x51524b+'/'+_0x3ce1fa)[_0x2340('0x1a')](_0x173678);}return null;};}function patchUpdates(_0x1b3822){return function(_0xb2b57a){try{jsonpatch['apply'](_0xb2b57a,_0x1b3822,!![]);}catch(_0x567de5){return BPromise[_0x2340('0x20')](_0x567de5);}return _0xb2b57a['save']();};}function saveUpdates(_0x3f9f54,_0x44622a){return function(_0x28a812){if(_0x28a812){return _0x28a812[_0x2340('0x21')](_0x3f9f54)[_0x2340('0x22')](function(_0x32e08b){return _0x32e08b;});}return null;};}function removeEntity(_0x8f1d89,_0x130944){return function(_0x49c77e){if(_0x49c77e){return _0x49c77e['destroy']()[_0x2340('0x22')](function(){_0x8f1d89[_0x2340('0x18')](0xcc)[_0x2340('0x19')]();});}};}function handleEntityNotFound(_0x44680e,_0x320c1b){return function(_0x27e903){if(!_0x27e903){_0x44680e[_0x2340('0x17')](0x194);}return _0x27e903;};}function handleError(_0x5b61a7,_0x3fe07f){_0x3fe07f=_0x3fe07f||0x1f4;return function(_0x46d5cb){logger[_0x2340('0x23')](_0x46d5cb[_0x2340('0x24')]);if(_0x46d5cb[_0x2340('0x25')]){delete _0x46d5cb[_0x2340('0x25')];}_0x5b61a7[_0x2340('0x18')](_0x3fe07f)[_0x2340('0x26')](_0x46d5cb);};}exports[_0x2340('0x27')]=function(_0x229a00,_0x360d59){var _0x5e697b={'raw':!![],'where':{'id':_0x229a00[_0x2340('0x28')]['id']}},_0x336ffe={};_0x336ffe['model']=_[_0x2340('0x29')](db[_0x2340('0x2a')][_0x2340('0x2b')]);_0x336ffe[_0x2340('0x2c')]=_[_0x2340('0x29')](_0x229a00['query']);_0x336ffe[_0x2340('0x2d')]=_[_0x2340('0x2e')](_0x336ffe[_0x2340('0x2f')],_0x336ffe[_0x2340('0x2c')]);_0x5e697b[_0x2340('0x30')]=_['intersection'](_0x336ffe[_0x2340('0x2f')],qs[_0x2340('0x31')](_0x229a00[_0x2340('0x2c')]['fields']));_0x5e697b[_0x2340('0x30')]=_0x5e697b[_0x2340('0x30')]['length']?_0x5e697b[_0x2340('0x30')]:_0x336ffe[_0x2340('0x2f')];if(_0x229a00['query'][_0x2340('0x32')]){_0x5e697b[_0x2340('0x33')]=[{'all':!![]}];}_0x5e697b=_[_0x2340('0x34')]({},_0x5e697b,_0x229a00[_0x2340('0x35')]);return db[_0x2340('0x2a')][_0x2340('0x36')](_0x5e697b)['then'](handleEntityNotFound(_0x360d59,null))[_0x2340('0x22')](respondWithResult(_0x360d59,null))[_0x2340('0x37')](handleError(_0x360d59,null));};exports[_0x2340('0x21')]=function(_0x48b7dc,_0x1c8ea9){if(_0x48b7dc[_0x2340('0x38')]['id']){delete _0x48b7dc[_0x2340('0x38')]['id'];}return db[_0x2340('0x2a')][_0x2340('0x36')]({'where':{'id':_0x48b7dc[_0x2340('0x28')]['id']}})[_0x2340('0x22')](handleEntityNotFound(_0x1c8ea9,null))[_0x2340('0x22')](saveUpdates(_0x48b7dc[_0x2340('0x38')],null))[_0x2340('0x22')](respondWithResult(_0x1c8ea9,null))[_0x2340('0x37')](handleError(_0x1c8ea9,null));};exports['destroy']=function(_0x14da4a,_0x5b4f71){return db['ChatApplication'][_0x2340('0x36')]({'where':{'id':_0x14da4a['params']['id']}})[_0x2340('0x22')](handleEntityNotFound(_0x5b4f71,null))[_0x2340('0x22')](removeEntity(_0x5b4f71,null))['catch'](handleError(_0x5b4f71,null));};
\ No newline at end of file
+var _0x4a3c=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','show','params','model','keys','rawAttributes','query','intersection','fields','attributes','length','includeAll','include','merge','options','ChatApplication','catch','update','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','querystring'];(function(_0x424b00,_0x481be4){var _0x1206b0=function(_0x478e63){while(--_0x478e63){_0x424b00['push'](_0x424b00['shift']());}};_0x1206b0(++_0x481be4);}(_0x4a3c,0x13c));var _0xc4a3=function(_0x5b3f3a,_0x43a815){_0x5b3f3a=_0x5b3f3a-0x0;var _0x2ca22b=_0x4a3c[_0x5b3f3a];return _0x2ca22b;};'use strict';var emlformat=require(_0xc4a3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc4a3('0x1'));var jsonpatch=require(_0xc4a3('0x2'));var rp=require(_0xc4a3('0x3'));var moment=require(_0xc4a3('0x4'));var BPromise=require(_0xc4a3('0x5'));var Mustache=require(_0xc4a3('0x6'));var util=require(_0xc4a3('0x7'));var path=require('path');var sox=require(_0xc4a3('0x8'));var csv=require(_0xc4a3('0x9'));var ejs=require(_0xc4a3('0xa'));var fs=require('fs');var fs_extra=require(_0xc4a3('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc4a3('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc4a3('0x9'));var querystring=require(_0xc4a3('0xd'));var Papa=require(_0xc4a3('0xe'));var Redis=require(_0xc4a3('0xf'));var authService=require(_0xc4a3('0x10'));var qs=require(_0xc4a3('0x11'));var as=require(_0xc4a3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3cce7a,_0x15e13f){_0x15e13f=_0x15e13f||0xcc;return function(_0x27a41f){if(_0x27a41f){return _0x3cce7a[_0xc4a3('0x13')](_0x15e13f);}return _0x3cce7a['status'](_0x15e13f)[_0xc4a3('0x14')]();};}function respondWithResult(_0x3aa37e,_0x54f14b){_0x54f14b=_0x54f14b||0xc8;return function(_0x466e1f){if(_0x466e1f){return _0x3aa37e[_0xc4a3('0x15')](_0x54f14b)[_0xc4a3('0x16')](_0x466e1f);}};}function respondWithFilteredResult(_0x40be6b,_0x747bfb){return function(_0x31c331){if(_0x31c331){var _0x2b2db2=typeof _0x747bfb[_0xc4a3('0x17')]===_0xc4a3('0x18')&&typeof _0x747bfb['limit']===_0xc4a3('0x18');var _0x396b1f=_0x31c331[_0xc4a3('0x19')];var _0x1e8fdd=_0x2b2db2?0x0:_0x747bfb['offset'];var _0x1dd4b6=_0x2b2db2?_0x31c331[_0xc4a3('0x19')]:_0x747bfb[_0xc4a3('0x17')]+_0x747bfb['limit'];var _0x138f62;if(_0x1dd4b6>=_0x396b1f){_0x1dd4b6=_0x396b1f;_0x138f62=0xc8;}else{_0x138f62=0xce;}_0x40be6b[_0xc4a3('0x15')](_0x138f62);return _0x40be6b[_0xc4a3('0x1a')](_0xc4a3('0x1b'),_0x1e8fdd+'-'+_0x1dd4b6+'/'+_0x396b1f)[_0xc4a3('0x16')](_0x31c331);}return null;};}function patchUpdates(_0x4026d4){return function(_0x30cdf5){try{jsonpatch['apply'](_0x30cdf5,_0x4026d4,!![]);}catch(_0x2f63a4){return BPromise[_0xc4a3('0x1c')](_0x2f63a4);}return _0x30cdf5[_0xc4a3('0x1d')]();};}function saveUpdates(_0x2028c2,_0x525191){return function(_0x3691b3){if(_0x3691b3){return _0x3691b3['update'](_0x2028c2)[_0xc4a3('0x1e')](function(_0x349729){return _0x349729;});}return null;};}function removeEntity(_0x195bb3,_0x3a3f7e){return function(_0x1ca707){if(_0x1ca707){return _0x1ca707[_0xc4a3('0x1f')]()[_0xc4a3('0x1e')](function(){_0x195bb3['status'](0xcc)[_0xc4a3('0x14')]();});}};}function handleEntityNotFound(_0x30f223,_0x446a24){return function(_0x3d659b){if(!_0x3d659b){_0x30f223[_0xc4a3('0x13')](0x194);}return _0x3d659b;};}function handleError(_0x21e054,_0xc223b0){_0xc223b0=_0xc223b0||0x1f4;return function(_0x1dd70a){logger[_0xc4a3('0x20')](_0x1dd70a[_0xc4a3('0x21')]);if(_0x1dd70a[_0xc4a3('0x22')]){delete _0x1dd70a[_0xc4a3('0x22')];}_0x21e054[_0xc4a3('0x15')](_0xc223b0)[_0xc4a3('0x23')](_0x1dd70a);};}exports[_0xc4a3('0x24')]=function(_0x2cdbc9,_0x58d302){var _0x1ad1b7={'raw':!![],'where':{'id':_0x2cdbc9[_0xc4a3('0x25')]['id']}},_0x56bdd3={};_0x56bdd3[_0xc4a3('0x26')]=_[_0xc4a3('0x27')](db['ChatApplication'][_0xc4a3('0x28')]);_0x56bdd3[_0xc4a3('0x29')]=_[_0xc4a3('0x27')](_0x2cdbc9[_0xc4a3('0x29')]);_0x56bdd3['filters']=_['intersection'](_0x56bdd3[_0xc4a3('0x26')],_0x56bdd3[_0xc4a3('0x29')]);_0x1ad1b7['attributes']=_[_0xc4a3('0x2a')](_0x56bdd3[_0xc4a3('0x26')],qs['fields'](_0x2cdbc9[_0xc4a3('0x29')][_0xc4a3('0x2b')]));_0x1ad1b7[_0xc4a3('0x2c')]=_0x1ad1b7[_0xc4a3('0x2c')][_0xc4a3('0x2d')]?_0x1ad1b7[_0xc4a3('0x2c')]:_0x56bdd3[_0xc4a3('0x26')];if(_0x2cdbc9['query'][_0xc4a3('0x2e')]){_0x1ad1b7[_0xc4a3('0x2f')]=[{'all':!![]}];}_0x1ad1b7=_[_0xc4a3('0x30')]({},_0x1ad1b7,_0x2cdbc9[_0xc4a3('0x31')]);return db[_0xc4a3('0x32')]['find'](_0x1ad1b7)[_0xc4a3('0x1e')](handleEntityNotFound(_0x58d302,null))[_0xc4a3('0x1e')](respondWithResult(_0x58d302,null))[_0xc4a3('0x33')](handleError(_0x58d302,null));};exports[_0xc4a3('0x34')]=function(_0x2b3adf,_0x130393){if(_0x2b3adf[_0xc4a3('0x35')]['id']){delete _0x2b3adf['body']['id'];}return db[_0xc4a3('0x32')][_0xc4a3('0x36')]({'where':{'id':_0x2b3adf[_0xc4a3('0x25')]['id']}})[_0xc4a3('0x1e')](handleEntityNotFound(_0x130393,null))[_0xc4a3('0x1e')](saveUpdates(_0x2b3adf['body'],null))[_0xc4a3('0x1e')](respondWithResult(_0x130393,null))[_0xc4a3('0x33')](handleError(_0x130393,null));};exports[_0xc4a3('0x1f')]=function(_0x5c9ebc,_0x3bab95){return db['ChatApplication'][_0xc4a3('0x36')]({'where':{'id':_0x5c9ebc[_0xc4a3('0x25')]['id']}})[_0xc4a3('0x1e')](handleEntityNotFound(_0x3bab95,null))['then'](removeEntity(_0x3bab95,null))[_0xc4a3('0x33')](handleError(_0x3bab95,null));};
\ No newline at end of file
index cb49657..6462ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3c=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','ChatApplication','utf8mb4'];(function(_0x15f6a0,_0x5b34fc){var _0x10f8c7=function(_0x5b7d95){while(--_0x5b7d95){_0x15f6a0['push'](_0x15f6a0['shift']());}};_0x10f8c7(++_0x5b34fc);}(_0xbd3c,0x6f));var _0xcbd3=function(_0xd620e8,_0x440552){_0xd620e8=_0xd620e8-0x0;var _0x4c5e1f=_0xbd3c[_0xd620e8];return _0x4c5e1f;};'use strict';var _=require(_0xcbd3('0x0'));var util=require(_0xcbd3('0x1'));var logger=require(_0xcbd3('0x2'))('api');var moment=require(_0xcbd3('0x3'));var BPromise=require(_0xcbd3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcbd3('0x5'));var config=require(_0xcbd3('0x6'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x1687c5,_0x164037){return _0x1687c5['define'](_0xcbd3('0x7'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcbd3('0x8'),'collate':_0xcbd3('0x9')});};
\ No newline at end of file
+var _0x28d0=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','chat_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x17ed2b,_0x53440e){var _0x5d0f5f=function(_0x2738d1){while(--_0x2738d1){_0x17ed2b['push'](_0x17ed2b['shift']());}};_0x5d0f5f(++_0x53440e);}(_0x28d0,0x138));var _0x028d=function(_0x467738,_0x35042e){_0x467738=_0x467738-0x0;var _0x114cec=_0x28d0[_0x467738];return _0x114cec;};'use strict';var _=require(_0x028d('0x0'));var util=require(_0x028d('0x1'));var logger=require(_0x028d('0x2'))(_0x028d('0x3'));var moment=require(_0x028d('0x4'));var BPromise=require(_0x028d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x028d('0x6'));var rimraf=require(_0x028d('0x7'));var config=require(_0x028d('0x8'));var attributes=require('./chatApplication.attributes');module[_0x028d('0x9')]=function(_0x377f82,_0x1fe28f){return _0x377f82['define']('ChatApplication',attributes,{'tableName':_0x028d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x028d('0xb'),'collate':_0x028d('0xc')});};
\ No newline at end of file
index d8350e0..3620ca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb6c=['../../config/environment','jayson/promise','http','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x587c67,_0x1ad267){var _0x2d4b0f=function(_0x543b66){while(--_0x543b66){_0x587c67['push'](_0x587c67['shift']());}};_0x2d4b0f(++_0x1ad267);}(_0xdb6c,0x1e8));var _0xcdb6=function(_0x5cd9c3,_0x528ffb){_0x5cd9c3=_0x5cd9c3-0x0;var _0x259ae9=_0xdb6c[_0x5cd9c3];return _0x259ae9;};'use strict';var _=require(_0xcdb6('0x0'));var util=require(_0xcdb6('0x1'));var moment=require(_0xcdb6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcdb6('0x3'))['db'];var utils=require(_0xcdb6('0x4'));var logger=require(_0xcdb6('0x5'))('rpc');var config=require(_0xcdb6('0x6'));var jayson=require(_0xcdb6('0x7'));var client=jayson['client'][_0xcdb6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4b4ca9,_0x55c0a8,_0x26f140){return new BPromise(function(_0x1d03aa,_0x17caae){return client['request'](_0x4b4ca9,_0x26f140)[_0xcdb6('0x9')](function(_0x75fd00){logger[_0xcdb6('0xa')](_0xcdb6('0xb'),_0x55c0a8,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x55c0a8,_0xcdb6('0xc'),JSON[_0xcdb6('0xd')](_0x75fd00));if(_0x75fd00[_0xcdb6('0xe')]){if(_0x75fd00[_0xcdb6('0xe')][_0xcdb6('0xf')]===0x1f4){logger[_0xcdb6('0xe')](_0xcdb6('0xb'),_0x55c0a8,_0x75fd00[_0xcdb6('0xe')]['message']);return _0x17caae(_0x75fd00['error'][_0xcdb6('0x10')]);}logger[_0xcdb6('0xe')](_0xcdb6('0xb'),_0x55c0a8,_0x75fd00[_0xcdb6('0xe')][_0xcdb6('0x10')]);return _0x1d03aa(_0x75fd00[_0xcdb6('0xe')][_0xcdb6('0x10')]);}else{logger[_0xcdb6('0xa')](_0xcdb6('0xb'),_0x55c0a8,'request\x20sent');_0x1d03aa(_0x75fd00[_0xcdb6('0x11')][_0xcdb6('0x10')]);}})[_0xcdb6('0x12')](function(_0x30efc7){logger[_0xcdb6('0xe')]('ChatApplication,\x20%s,\x20%s',_0x55c0a8,_0x30efc7);_0x17caae(_0x30efc7);});});}
\ No newline at end of file
+var _0xad9c=['request\x20sent','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','ChatApplication,\x20%s,\x20%s'];(function(_0x5b40c3,_0x309100){var _0x9f7a97=function(_0x277266){while(--_0x277266){_0x5b40c3['push'](_0x5b40c3['shift']());}};_0x9f7a97(++_0x309100);}(_0xad9c,0x1d4));var _0xcad9=function(_0x16422f,_0x395b1b){_0x16422f=_0x16422f-0x0;var _0x4e65d2=_0xad9c[_0x16422f];return _0x4e65d2;};'use strict';var _=require(_0xcad9('0x0'));var util=require('util');var moment=require(_0xcad9('0x1'));var BPromise=require(_0xcad9('0x2'));var rs=require(_0xcad9('0x3'));var fs=require('fs');var Redis=require(_0xcad9('0x4'));var db=require(_0xcad9('0x5'))['db'];var utils=require(_0xcad9('0x6'));var logger=require(_0xcad9('0x7'))(_0xcad9('0x8'));var config=require(_0xcad9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xcad9('0xa')][_0xcad9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x192553,_0x1c2072,_0x29f94c){return new BPromise(function(_0x51bb36,_0x168eea){return client[_0xcad9('0xc')](_0x192553,_0x29f94c)[_0xcad9('0xd')](function(_0x5be43c){logger['info'](_0xcad9('0xe'),_0x1c2072,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x1c2072,_0xcad9('0xf'),JSON[_0xcad9('0x10')](_0x5be43c));if(_0x5be43c[_0xcad9('0x11')]){if(_0x5be43c[_0xcad9('0x11')][_0xcad9('0x12')]===0x1f4){logger[_0xcad9('0x11')](_0xcad9('0xe'),_0x1c2072,_0x5be43c[_0xcad9('0x11')][_0xcad9('0x13')]);return _0x168eea(_0x5be43c['error'][_0xcad9('0x13')]);}logger[_0xcad9('0x11')](_0xcad9('0xe'),_0x1c2072,_0x5be43c[_0xcad9('0x11')][_0xcad9('0x13')]);return _0x51bb36(_0x5be43c[_0xcad9('0x11')][_0xcad9('0x13')]);}else{logger[_0xcad9('0x14')](_0xcad9('0xe'),_0x1c2072,'request\x20sent');_0x51bb36(_0x5be43c[_0xcad9('0x15')][_0xcad9('0x13')]);}})[_0xcad9('0x16')](function(_0x5a9a81){logger['error']('ChatApplication,\x20%s,\x20%s',_0x1c2072,_0x5a9a81);_0x168eea(_0x5a9a81);});});}
\ No newline at end of file
index a7a35ac..9465c54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8991=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','show','put','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x2dc60c,_0x1af7d4){var _0x20d2a0=function(_0x2cfe98){while(--_0x2cfe98){_0x2dc60c['push'](_0x2dc60c['shift']());}};_0x20d2a0(++_0x1af7d4);}(_0x8991,0xdf));var _0x1899=function(_0x4979ad,_0x36df48){_0x4979ad=_0x4979ad-0x0;var _0x3e8c8e=_0x8991[_0x4979ad];return _0x3e8c8e;};'use strict';var multer=require(_0x1899('0x0'));var util=require(_0x1899('0x1'));var path=require(_0x1899('0x2'));var timeout=require(_0x1899('0x3'));var express=require(_0x1899('0x4'));var router=express['Router']();var fs_extra=require(_0x1899('0x5'));var auth=require(_0x1899('0x6'));var interaction=require(_0x1899('0x7'));var config=require(_0x1899('0x8'));var controller=require(_0x1899('0x9'));router[_0x1899('0xa')](_0x1899('0xb'),auth['isAuthenticated'](),controller[_0x1899('0xc')]);router[_0x1899('0xd')](_0x1899('0xb'),auth[_0x1899('0xe')](),controller[_0x1899('0xf')]);router[_0x1899('0x10')](_0x1899('0xb'),auth['isAuthenticated'](),controller[_0x1899('0x11')]);module[_0x1899('0x12')]=router;
\ No newline at end of file
+var _0x5cc7=['../../components/interaction/service','./chatApplication.controller','/:id','isAuthenticated','show','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x5cc7,0x199));var _0x75cc=function(_0x2a1bcb,_0x12867f){_0x2a1bcb=_0x2a1bcb-0x0;var _0x59d66a=_0x5cc7[_0x2a1bcb];return _0x59d66a;};'use strict';var multer=require(_0x75cc('0x0'));var util=require('util');var path=require(_0x75cc('0x1'));var timeout=require(_0x75cc('0x2'));var express=require(_0x75cc('0x3'));var router=express[_0x75cc('0x4')]();var fs_extra=require(_0x75cc('0x5'));var auth=require(_0x75cc('0x6'));var interaction=require(_0x75cc('0x7'));var config=require('../../config/environment');var controller=require(_0x75cc('0x8'));router['get'](_0x75cc('0x9'),auth[_0x75cc('0xa')](),controller[_0x75cc('0xb')]);router[_0x75cc('0xc')](_0x75cc('0x9'),auth[_0x75cc('0xa')](),controller[_0x75cc('0xd')]);router[_0x75cc('0xe')](_0x75cc('0x9'),auth[_0x75cc('0xa')](),controller[_0x75cc('0xf')]);module['exports']=router;
\ No newline at end of file
index 4702805..3011504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb19a=['sequelize','exports','STRING','BOOLEAN'];(function(_0x3dd64e,_0x584d2a){var _0x32500e=function(_0xa68545){while(--_0xa68545){_0x3dd64e['push'](_0x3dd64e['shift']());}};_0x32500e(++_0x584d2a);}(_0xb19a,0x12c));var _0xab19=function(_0x47d625,_0x175df2){_0x47d625=_0x47d625-0x0;var _0x2ddc37=_0xb19a[_0x47d625];return _0x2ddc37;};'use strict';var Sequelize=require(_0xab19('0x0'));module[_0xab19('0x1')]={'name':{'type':Sequelize[_0xab19('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xab19('0x2')]},'write':{'type':Sequelize[_0xab19('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1751=['STRING','sequelize','exports'];(function(_0x349f58,_0x43c6ef){var _0x2555c3=function(_0x59ef75){while(--_0x59ef75){_0x349f58['push'](_0x349f58['shift']());}};_0x2555c3(++_0x43c6ef);}(_0x1751,0x76));var _0x1175=function(_0x3c9e83,_0x37dbf9){_0x3c9e83=_0x3c9e83-0x0;var _0x28dae2=_0x1751[_0x3c9e83];return _0x28dae2;};'use strict';var Sequelize=require(_0x1175('0x0'));module[_0x1175('0x1')]={'name':{'type':Sequelize[_0x1175('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1175('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index d7d973c..dc60dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x506c=['to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','findAll','rows','catch','show','params','include','options','find','create','update','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','User','length','order','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','format','eml-format','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x4add5,_0x2b95d4){var _0x25d093=function(_0x4620a0){while(--_0x4620a0){_0x4add5['push'](_0x4add5['shift']());}};_0x25d093(++_0x2b95d4);}(_0x506c,0x1d9));var _0xc506=function(_0x38f979,_0x309cd){_0x38f979=_0x38f979-0x0;var _0x6d9c38=_0x506c[_0x38f979];return _0x6d9c38;};'use strict';var emlformat=require(_0xc506('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc506('0x1'));var rp=require(_0xc506('0x2'));var moment=require(_0xc506('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc506('0x4'));var util=require(_0xc506('0x5'));var path=require(_0xc506('0x6'));var sox=require('sox');var csv=require(_0xc506('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc506('0x8'));var squel=require(_0xc506('0x9'));var crypto=require('crypto');var jsforce=require(_0xc506('0xa'));var deskjs=require(_0xc506('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc506('0xc'));var Papa=require(_0xc506('0xd'));var Redis=require(_0xc506('0xe'));var authService=require(_0xc506('0xf'));var qs=require(_0xc506('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc506('0x11'));var logger=require(_0xc506('0x12'))('api');var utils=require(_0xc506('0x13'));var config=require(_0xc506('0x14'));var licenseUtil=require(_0xc506('0x15'));var db=require(_0xc506('0x16'))['db'];config['redis']=_[_0xc506('0x17')](config[_0xc506('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xc506('0x19'))(new Redis(config[_0xc506('0x18')]));require('./chatGroup.socket')['register'](socket);function respondWithStatusCode(_0x143f0f,_0x2e9bde){_0x2e9bde=_0x2e9bde||0xcc;return function(_0x151327){if(_0x151327){return _0x143f0f[_0xc506('0x1a')](_0x2e9bde);}return _0x143f0f[_0xc506('0x1b')](_0x2e9bde)[_0xc506('0x1c')]();};}function respondWithResult(_0x43d0bd,_0xaf76af){_0xaf76af=_0xaf76af||0xc8;return function(_0x4ce6b3){if(_0x4ce6b3){return _0x43d0bd['status'](_0xaf76af)[_0xc506('0x1d')](_0x4ce6b3);}};}function respondWithFilteredResult(_0x3e4063,_0x453a18){return function(_0x3a03d7){if(_0x3a03d7){var _0x17871c=typeof _0x453a18[_0xc506('0x1e')]===_0xc506('0x1f')&&typeof _0x453a18[_0xc506('0x20')]===_0xc506('0x1f');var _0x19c307=_0x3a03d7['count'];var _0x30a804=_0x17871c?0x0:_0x453a18[_0xc506('0x1e')];var _0x45574b=_0x17871c?_0x3a03d7[_0xc506('0x21')]:_0x453a18['offset']+_0x453a18[_0xc506('0x20')];var _0x470993;if(_0x45574b>=_0x19c307){_0x45574b=_0x19c307;_0x470993=0xc8;}else{_0x470993=0xce;}_0x3e4063[_0xc506('0x1b')](_0x470993);return _0x3e4063[_0xc506('0x22')]('Content-Range',_0x30a804+'-'+_0x45574b+'/'+_0x19c307)[_0xc506('0x1d')](_0x3a03d7);}return null;};}function patchUpdates(_0x47731a){return function(_0x4eea45){try{jsonpatch[_0xc506('0x23')](_0x4eea45,_0x47731a,!![]);}catch(_0x1f20fc){return BPromise[_0xc506('0x24')](_0x1f20fc);}return _0x4eea45[_0xc506('0x25')]();};}function saveUpdates(_0x38c731,_0x38318f){return function(_0x56cbd3){if(_0x56cbd3){return _0x56cbd3['update'](_0x38c731)[_0xc506('0x26')](function(_0x39d2ed){return _0x39d2ed;});}return null;};}function removeEntity(_0x1e355b,_0x4a7dfd){return function(_0x1e9ec4){if(_0x1e9ec4){return _0x1e9ec4[_0xc506('0x27')]()[_0xc506('0x26')](function(){_0x1e355b['status'](0xcc)[_0xc506('0x1c')]();});}};}function handleEntityNotFound(_0x5aef11,_0x2fdab0){return function(_0x5056a0){if(!_0x5056a0){_0x5aef11[_0xc506('0x1a')](0x194);}return _0x5056a0;};}function handleError(_0x17b16f,_0x238151){_0x238151=_0x238151||0x1f4;return function(_0x585da3){logger[_0xc506('0x28')](_0x585da3[_0xc506('0x29')]);if(_0x585da3[_0xc506('0x2a')]){delete _0x585da3['name'];}_0x17b16f[_0xc506('0x1b')](_0x238151)[_0xc506('0x2b')](_0x585da3);};}exports[_0xc506('0x2c')]=function(_0x469667,_0x3e9c52){var _0x5e8773={},_0x2e6f49={},_0x41436f={'count':0x0,'rows':[]};var _0x5d038a=_[_0xc506('0x2d')](db[_0xc506('0x2e')][_0xc506('0x2f')],function(_0x337ada){return{'name':_0x337ada[_0xc506('0x30')],'type':_0x337ada[_0xc506('0x31')][_0xc506('0x32')]};});_0x2e6f49[_0xc506('0x33')]=_[_0xc506('0x2d')](_0x5d038a,'name');_0x2e6f49[_0xc506('0x34')]=_[_0xc506('0x35')](_0x469667['query']);_0x2e6f49[_0xc506('0x36')]=_[_0xc506('0x37')](_0x2e6f49[_0xc506('0x33')],_0x2e6f49['query']);_0x5e8773[_0xc506('0x38')]=_[_0xc506('0x37')](_0x2e6f49[_0xc506('0x33')],qs[_0xc506('0x39')](_0x469667[_0xc506('0x34')][_0xc506('0x39')]));_0x5e8773[_0xc506('0x38')]=_0x5e8773[_0xc506('0x38')]['length']?_0x5e8773[_0xc506('0x38')]:_0x2e6f49[_0xc506('0x33')];if(!_0x469667[_0xc506('0x34')][_0xc506('0x3a')](_0xc506('0x3b'))){_0x5e8773[_0xc506('0x20')]=qs[_0xc506('0x20')](_0x469667['query'][_0xc506('0x20')]);_0x5e8773[_0xc506('0x1e')]=qs[_0xc506('0x1e')](_0x469667[_0xc506('0x34')]['offset']);}_0x5e8773['order']=qs[_0xc506('0x3c')](_0x469667[_0xc506('0x34')][_0xc506('0x3c')]);_0x5e8773[_0xc506('0x3d')]=qs['filters'](_[_0xc506('0x3e')](_0x469667[_0xc506('0x34')],_0x2e6f49[_0xc506('0x36')]),_0x5d038a);if(_0x469667[_0xc506('0x34')]['filter']){_0x5e8773[_0xc506('0x3d')]=_[_0xc506('0x3f')](_0x5e8773[_0xc506('0x3d')],{'$or':_[_0xc506('0x2d')](_0x5d038a,function(_0x3d5b6c){if(_0x3d5b6c[_0xc506('0x31')]!=='VIRTUAL'){var _0x3ca016={};_0x3ca016[_0x3d5b6c[_0xc506('0x2a')]]={'$like':'%'+_0x469667[_0xc506('0x34')][_0xc506('0x40')]+'%'};return _0x3ca016;}})});}_0x5e8773=_['merge']({},_0x5e8773,_0x469667['options']);var _0x31dc57={'where':_0x5e8773[_0xc506('0x3d')]};return db[_0xc506('0x2e')][_0xc506('0x21')](_0x31dc57)['then'](function(_0x5bafe7){_0x41436f['count']=_0x5bafe7;if(_0x469667[_0xc506('0x34')][_0xc506('0x41')]){_0x5e8773['include']=[{'all':!![]}];}return db['ChatGroup'][_0xc506('0x42')](_0x5e8773);})['then'](function(_0x4acb6a){_0x41436f[_0xc506('0x43')]=_0x4acb6a;return _0x41436f;})[_0xc506('0x26')](respondWithFilteredResult(_0x3e9c52,_0x5e8773))[_0xc506('0x44')](handleError(_0x3e9c52,null));};exports[_0xc506('0x45')]=function(_0x297362,_0x5bc01a){var _0x227d09={'raw':!![],'where':{'id':_0x297362[_0xc506('0x46')]['id']}},_0x11eacc={};_0x11eacc['model']=_['keys'](db[_0xc506('0x2e')]['rawAttributes']);_0x11eacc['query']=_[_0xc506('0x35')](_0x297362[_0xc506('0x34')]);_0x11eacc[_0xc506('0x36')]=_[_0xc506('0x37')](_0x11eacc[_0xc506('0x33')],_0x11eacc[_0xc506('0x34')]);_0x227d09[_0xc506('0x38')]=_[_0xc506('0x37')](_0x11eacc['model'],qs[_0xc506('0x39')](_0x297362[_0xc506('0x34')]['fields']));_0x227d09['attributes']=_0x227d09[_0xc506('0x38')]['length']?_0x227d09['attributes']:_0x11eacc[_0xc506('0x33')];if(_0x297362[_0xc506('0x34')][_0xc506('0x41')]){_0x227d09[_0xc506('0x47')]=[{'all':!![]}];}_0x227d09=_[_0xc506('0x3f')]({},_0x227d09,_0x297362[_0xc506('0x48')]);return db['ChatGroup'][_0xc506('0x49')](_0x227d09)[_0xc506('0x26')](handleEntityNotFound(_0x5bc01a,null))[_0xc506('0x26')](respondWithResult(_0x5bc01a,null))['catch'](handleError(_0x5bc01a,null));};exports[_0xc506('0x4a')]=function(_0x1f7887,_0x5df10b){return db[_0xc506('0x2e')][_0xc506('0x4a')](_0x1f7887['body'],{})['then'](respondWithResult(_0x5df10b,0xc9))[_0xc506('0x44')](handleError(_0x5df10b,null));};exports[_0xc506('0x4b')]=function(_0x12fbe9,_0x5cafa6){if(_0x12fbe9[_0xc506('0x4c')]['id']){delete _0x12fbe9[_0xc506('0x4c')]['id'];}return db[_0xc506('0x2e')][_0xc506('0x49')]({'where':{'id':_0x12fbe9[_0xc506('0x46')]['id']}})['then'](handleEntityNotFound(_0x5cafa6,null))[_0xc506('0x26')](saveUpdates(_0x12fbe9[_0xc506('0x4c')],null))[_0xc506('0x26')](respondWithResult(_0x5cafa6,null))['catch'](handleError(_0x5cafa6,null));};exports[_0xc506('0x27')]=function(_0x4698d7,_0x2ef524){return db[_0xc506('0x2e')][_0xc506('0x49')]({'where':{'id':_0x4698d7[_0xc506('0x46')]['id']}})[_0xc506('0x26')](handleEntityNotFound(_0x2ef524,null))[_0xc506('0x26')](removeEntity(_0x2ef524,null))[_0xc506('0x44')](handleError(_0x2ef524,null));};exports[_0xc506('0x4d')]=function(_0x382f6d,_0x448951){return db[_0xc506('0x2e')][_0xc506('0x4d')]()[_0xc506('0x26')](respondWithResult(_0x448951,null))[_0xc506('0x44')](handleError(_0x448951,null));};exports[_0xc506('0x4e')]=function(_0x32371a,_0x4fa230,_0x2c22dc){return db[_0xc506('0x4f')][_0xc506('0x21')]({'where':{'ChatGroupId':_0x32371a[_0xc506('0x46')]['id'],'ToId':_0x32371a[_0xc506('0x50')]['id'],'read':![]}})[_0xc506('0x26')](function(_0x383e9c){return{'id':_[_0xc506('0x51')](_0x32371a[_0xc506('0x46')]['id']),'count':_0x383e9c};})[_0xc506('0x26')](respondWithResult(_0x4fa230,null))[_0xc506('0x44')](handleError(_0x4fa230,null));};exports['addMembers']=function(_0x8ec360,_0xfe6ae,_0x49dc5c){return db[_0xc506('0x2e')][_0xc506('0x49')]({'where':{'id':_0x8ec360['params']['id']}})['then'](handleEntityNotFound(_0xfe6ae,null))[_0xc506('0x26')](function(_0x5bf48f){if(_0x5bf48f){return _0x5bf48f[_0xc506('0x52')](_0x8ec360[_0xc506('0x4c')]['ids'],_[_0xc506('0x53')](_0x8ec360[_0xc506('0x4c')],[_0xc506('0x54'),'id'])||{});}})['then'](respondWithResult(_0xfe6ae,null))[_0xc506('0x44')](handleError(_0xfe6ae,null));};exports[_0xc506('0x55')]=function(_0x1d03c9,_0x484b63,_0x2669a5){var _0xe35cf6={};var _0x33a245={};var _0x1168df;var _0x1ece91;return db['ChatGroup']['findOne']({'where':{'id':_0x1d03c9[_0xc506('0x46')]['id']}})[_0xc506('0x26')](handleEntityNotFound(_0x484b63,null))[_0xc506('0x26')](function(_0x363a61){if(_0x363a61){_0x1168df=_0x363a61;_0x33a245['model']=_[_0xc506('0x35')](db[_0xc506('0x56')][_0xc506('0x2f')]);_0x33a245[_0xc506('0x34')]=_[_0xc506('0x35')](_0x1d03c9[_0xc506('0x34')]);_0x33a245[_0xc506('0x36')]=_[_0xc506('0x37')](_0x33a245[_0xc506('0x33')],_0x33a245[_0xc506('0x34')]);_0xe35cf6['attributes']=_[_0xc506('0x37')](_0x33a245['model'],qs['fields'](_0x1d03c9[_0xc506('0x34')][_0xc506('0x39')]));_0xe35cf6['attributes']=_0xe35cf6[_0xc506('0x38')][_0xc506('0x57')]?_0xe35cf6[_0xc506('0x38')]:_0x33a245[_0xc506('0x33')];_0xe35cf6[_0xc506('0x58')]=qs[_0xc506('0x3c')](_0x1d03c9[_0xc506('0x34')]['sort']);_0xe35cf6[_0xc506('0x3d')]=qs[_0xc506('0x36')](_[_0xc506('0x3e')](_0x1d03c9[_0xc506('0x34')],_0x33a245['filters']));if(_0x1d03c9[_0xc506('0x34')][_0xc506('0x40')]){_0xe35cf6[_0xc506('0x3d')]=_[_0xc506('0x3f')](_0xe35cf6[_0xc506('0x3d')],{'$or':_['map'](_0xe35cf6[_0xc506('0x38')],function(_0x5e6fd6){var _0x5c54e8={};_0x5c54e8[_0x5e6fd6]={'$like':'%'+_0x1d03c9[_0xc506('0x34')]['filter']+'%'};return _0x5c54e8;})});}_0xe35cf6=_['merge']({},_0xe35cf6,_0x1d03c9['options']);return _0x1168df[_0xc506('0x55')](_0xe35cf6);}})[_0xc506('0x26')](function(_0x459fb5){if(_0x459fb5){_0x1ece91=_0x459fb5[_0xc506('0x57')];if(!_0x1d03c9['query']['hasOwnProperty'](_0xc506('0x3b'))){_0xe35cf6[_0xc506('0x20')]=qs['limit'](_0x1d03c9[_0xc506('0x34')]['limit']);_0xe35cf6[_0xc506('0x1e')]=qs[_0xc506('0x1e')](_0x1d03c9['query']['offset']);}return _0x1168df[_0xc506('0x55')](_0xe35cf6);}})[_0xc506('0x26')](function(_0x23282d){if(_0x23282d){return _0x23282d?{'count':_0x1ece91,'rows':_0x23282d}:null;}})[_0xc506('0x26')](respondWithResult(_0x484b63,null))['catch'](handleError(_0x484b63,null));};exports[_0xc506('0x59')]=function(_0x1a4866,_0x56d657,_0x3ec839){return db[_0xc506('0x2e')][_0xc506('0x49')]({'where':{'id':_0x1a4866[_0xc506('0x46')]['id']}})['then'](handleEntityNotFound(_0x56d657,null))[_0xc506('0x26')](function(_0x48b9f0){if(_0x48b9f0){return _0x48b9f0['removeMembers'](_0x1a4866[_0xc506('0x34')][_0xc506('0x54')]);}})[_0xc506('0x26')](respondWithStatusCode(_0x56d657,null))[_0xc506('0x44')](handleError(_0x56d657,null));};exports[_0xc506('0x5a')]=function(_0x1b73e4,_0x2881f3,_0x254edd){if(_0x1b73e4['body']['id']){delete _0x1b73e4[_0xc506('0x4c')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0x1b73e4[_0xc506('0x46')]['id']}})[_0xc506('0x26')](handleEntityNotFound(_0x2881f3,null))[_0xc506('0x26')](function(_0x40ae04){if(_0x40ae04){_0x1b73e4['body'][_0xc506('0x5b')]=_0x40ae04['id'];return db[_0xc506('0x4f')][_0xc506('0x4a')](_0x1b73e4[_0xc506('0x4c')]);}})['then'](respondWithResult(_0x2881f3,null))[_0xc506('0x44')](handleError(_0x2881f3,null));};exports[_0xc506('0x5c')]=function(_0xda26a,_0x21b223,_0x1b48bb){var _0x3467c8={};var _0x5ce3b5={};var _0x50b4b3;var _0x26258d;return db[_0xc506('0x2e')]['findOne']({'where':{'id':_0xda26a[_0xc506('0x46')]['id']}})[_0xc506('0x26')](handleEntityNotFound(_0x21b223,null))[_0xc506('0x26')](function(_0x3739c4){if(_0x3739c4){_0x50b4b3=_0x3739c4;_0x5ce3b5[_0xc506('0x33')]=_['keys'](db['ChatInternalMessage'][_0xc506('0x2f')]);_0x5ce3b5[_0xc506('0x34')]=_[_0xc506('0x35')](_0xda26a[_0xc506('0x34')]);_0x5ce3b5[_0xc506('0x36')]=_[_0xc506('0x37')](_0x5ce3b5[_0xc506('0x33')],_0x5ce3b5[_0xc506('0x34')]);_0x3467c8[_0xc506('0x38')]=_[_0xc506('0x37')](_0x5ce3b5[_0xc506('0x33')],qs[_0xc506('0x39')](_0xda26a[_0xc506('0x34')][_0xc506('0x39')]));_0x3467c8[_0xc506('0x38')]=_0x3467c8[_0xc506('0x38')][_0xc506('0x57')]?_0x3467c8[_0xc506('0x38')]:_0x5ce3b5[_0xc506('0x33')];_0x3467c8['order']=qs[_0xc506('0x3c')](_0xda26a[_0xc506('0x34')]['sort']);_0x3467c8[_0xc506('0x3d')]=qs[_0xc506('0x36')](_[_0xc506('0x3e')](_0xda26a['query'],_0x5ce3b5['filters']));if(_0xda26a[_0xc506('0x34')]['filter']){_0x3467c8[_0xc506('0x3d')]=_['merge'](_0x3467c8[_0xc506('0x3d')],{'$or':_[_0xc506('0x2d')](_0x3467c8[_0xc506('0x38')],function(_0x5269a1){var _0x343fca={};_0x343fca[_0x5269a1]={'$like':'%'+_0xda26a['query'][_0xc506('0x40')]+'%'};return _0x343fca;})});}if(_0xda26a[_0xc506('0x34')][_0xc506('0x5d')]){var _0x9c0c73=_0xda26a[_0xc506('0x34')]['$gte'][_0xc506('0x5e')](',');var _0x38191d={};_0x38191d[_0x9c0c73[0x0]]={'$gte':moment(_0x9c0c73[0x1])[_0xc506('0x5f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3467c8[_0xc506('0x3d')]=_[_0xc506('0x3f')](_0x3467c8['where'],_0x38191d);}_0x3467c8=_[_0xc506('0x3f')]({},_0x3467c8,_0xda26a[_0xc506('0x48')]);return _0x50b4b3['getMessages'](_0x3467c8);}})[_0xc506('0x26')](function(_0x55736f){if(_0x55736f){_0x26258d=_0x55736f[_0xc506('0x57')];if(!_0xda26a['query'][_0xc506('0x3a')](_0xc506('0x3b'))){_0x3467c8[_0xc506('0x20')]=qs[_0xc506('0x20')](_0xda26a['query'][_0xc506('0x20')]);_0x3467c8['offset']=qs[_0xc506('0x1e')](_0xda26a[_0xc506('0x34')]['offset']);}return _0x50b4b3[_0xc506('0x5c')](_0x3467c8);}})[_0xc506('0x26')](function(_0x5d8a67){if(_0x5d8a67){return _0x5d8a67?{'count':_0x26258d,'rows':_0x5d8a67}:null;}})['then'](respondWithResult(_0x21b223,null))[_0xc506('0x44')](handleError(_0x21b223,null));};
\ No newline at end of file
+var _0x40f7=['VIRTUAL','options','includeAll','include','rows','catch','show','find','create','body','params','describe','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','hasOwnProperty','addMessage','ChatGroupId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','index','map','ChatGroup','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge'];(function(_0x1679a8,_0x1c777c){var _0x148a96=function(_0x3f48c2){while(--_0x3f48c2){_0x1679a8['push'](_0x1679a8['shift']());}};_0x148a96(++_0x1c777c);}(_0x40f7,0x13f));var _0x740f=function(_0x1b3f7c,_0x5821ae){_0x1b3f7c=_0x1b3f7c-0x0;var _0x29da31=_0x40f7[_0x1b3f7c];return _0x29da31;};'use strict';var emlformat=require(_0x740f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x740f('0x1'));var jsonpatch=require(_0x740f('0x2'));var rp=require(_0x740f('0x3'));var moment=require(_0x740f('0x4'));var BPromise=require(_0x740f('0x5'));var Mustache=require(_0x740f('0x6'));var util=require(_0x740f('0x7'));var path=require(_0x740f('0x8'));var sox=require(_0x740f('0x9'));var csv=require('to-csv');var ejs=require(_0x740f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x740f('0xb'));var squel=require(_0x740f('0xc'));var crypto=require(_0x740f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x740f('0xe'));var toCsv=require(_0x740f('0xf'));var querystring=require(_0x740f('0x10'));var Papa=require(_0x740f('0x11'));var Redis=require(_0x740f('0x12'));var authService=require(_0x740f('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x740f('0x14'));var hardwareService=require(_0x740f('0x15'));var logger=require(_0x740f('0x16'))(_0x740f('0x17'));var utils=require('../../config/utils');var config=require(_0x740f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x740f('0x19'))['db'];config[_0x740f('0x1a')]=_[_0x740f('0x1b')](config[_0x740f('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x740f('0x1c'))(new Redis(config[_0x740f('0x1a')]));require('./chatGroup.socket')[_0x740f('0x1d')](socket);function respondWithStatusCode(_0x18e180,_0x370349){_0x370349=_0x370349||0xcc;return function(_0x5ac936){if(_0x5ac936){return _0x18e180[_0x740f('0x1e')](_0x370349);}return _0x18e180['status'](_0x370349)['end']();};}function respondWithResult(_0x23bfed,_0x5dee76){_0x5dee76=_0x5dee76||0xc8;return function(_0x10877b){if(_0x10877b){return _0x23bfed[_0x740f('0x1f')](_0x5dee76)[_0x740f('0x20')](_0x10877b);}};}function respondWithFilteredResult(_0x53e5d3,_0x100272){return function(_0x5be0e8){if(_0x5be0e8){var _0x5a37b5=typeof _0x100272[_0x740f('0x21')]===_0x740f('0x22')&&typeof _0x100272[_0x740f('0x23')]===_0x740f('0x22');var _0x1ba4b2=_0x5be0e8[_0x740f('0x24')];var _0x2b0d7f=_0x5a37b5?0x0:_0x100272[_0x740f('0x21')];var _0x40ddec=_0x5a37b5?_0x5be0e8[_0x740f('0x24')]:_0x100272['offset']+_0x100272['limit'];var _0x4440b6;if(_0x40ddec>=_0x1ba4b2){_0x40ddec=_0x1ba4b2;_0x4440b6=0xc8;}else{_0x4440b6=0xce;}_0x53e5d3[_0x740f('0x1f')](_0x4440b6);return _0x53e5d3['set'](_0x740f('0x25'),_0x2b0d7f+'-'+_0x40ddec+'/'+_0x1ba4b2)['json'](_0x5be0e8);}return null;};}function patchUpdates(_0x4d7049){return function(_0x5eb7c7){try{jsonpatch[_0x740f('0x26')](_0x5eb7c7,_0x4d7049,!![]);}catch(_0x3b6b29){return BPromise[_0x740f('0x27')](_0x3b6b29);}return _0x5eb7c7[_0x740f('0x28')]();};}function saveUpdates(_0x384b10,_0x57c515){return function(_0x59a708){if(_0x59a708){return _0x59a708[_0x740f('0x29')](_0x384b10)[_0x740f('0x2a')](function(_0x56867e){return _0x56867e;});}return null;};}function removeEntity(_0x206079,_0x7f4277){return function(_0x58a27a){if(_0x58a27a){return _0x58a27a[_0x740f('0x2b')]()[_0x740f('0x2a')](function(){_0x206079[_0x740f('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x137e90,_0x14802d){return function(_0x2e73dc){if(!_0x2e73dc){_0x137e90[_0x740f('0x1e')](0x194);}return _0x2e73dc;};}function handleError(_0x4ba7d9,_0x2d7e38){_0x2d7e38=_0x2d7e38||0x1f4;return function(_0x366910){logger[_0x740f('0x2c')](_0x366910[_0x740f('0x2d')]);if(_0x366910['name']){delete _0x366910['name'];}_0x4ba7d9[_0x740f('0x1f')](_0x2d7e38)['send'](_0x366910);};}exports[_0x740f('0x2e')]=function(_0x39b1df,_0x8c4d49){var _0x5baf2a={},_0x26384a={},_0x3b1c43={'count':0x0,'rows':[]};var _0x456abe=_[_0x740f('0x2f')](db[_0x740f('0x30')][_0x740f('0x31')],function(_0x91645a){return{'name':_0x91645a[_0x740f('0x32')],'type':_0x91645a[_0x740f('0x33')][_0x740f('0x34')]};});_0x26384a[_0x740f('0x35')]=_[_0x740f('0x2f')](_0x456abe,_0x740f('0x36'));_0x26384a[_0x740f('0x37')]=_[_0x740f('0x38')](_0x39b1df[_0x740f('0x37')]);_0x26384a['filters']=_[_0x740f('0x39')](_0x26384a[_0x740f('0x35')],_0x26384a[_0x740f('0x37')]);_0x5baf2a['attributes']=_[_0x740f('0x39')](_0x26384a['model'],qs[_0x740f('0x3a')](_0x39b1df[_0x740f('0x37')][_0x740f('0x3a')]));_0x5baf2a['attributes']=_0x5baf2a[_0x740f('0x3b')][_0x740f('0x3c')]?_0x5baf2a[_0x740f('0x3b')]:_0x26384a[_0x740f('0x35')];if(!_0x39b1df[_0x740f('0x37')]['hasOwnProperty'](_0x740f('0x3d'))){_0x5baf2a[_0x740f('0x23')]=qs[_0x740f('0x23')](_0x39b1df['query'][_0x740f('0x23')]);_0x5baf2a[_0x740f('0x21')]=qs[_0x740f('0x21')](_0x39b1df[_0x740f('0x37')][_0x740f('0x21')]);}_0x5baf2a[_0x740f('0x3e')]=qs[_0x740f('0x3f')](_0x39b1df['query'][_0x740f('0x3f')]);_0x5baf2a[_0x740f('0x40')]=qs[_0x740f('0x41')](_[_0x740f('0x42')](_0x39b1df[_0x740f('0x37')],_0x26384a[_0x740f('0x41')]),_0x456abe);if(_0x39b1df[_0x740f('0x37')][_0x740f('0x43')]){_0x5baf2a[_0x740f('0x40')]=_[_0x740f('0x44')](_0x5baf2a[_0x740f('0x40')],{'$or':_[_0x740f('0x2f')](_0x456abe,function(_0x422bcf){if(_0x422bcf[_0x740f('0x33')]!==_0x740f('0x45')){var _0x365ecc={};_0x365ecc[_0x422bcf[_0x740f('0x36')]]={'$like':'%'+_0x39b1df[_0x740f('0x37')][_0x740f('0x43')]+'%'};return _0x365ecc;}})});}_0x5baf2a=_[_0x740f('0x44')]({},_0x5baf2a,_0x39b1df[_0x740f('0x46')]);var _0x47ff34={'where':_0x5baf2a[_0x740f('0x40')]};return db[_0x740f('0x30')][_0x740f('0x24')](_0x47ff34)[_0x740f('0x2a')](function(_0x41fb54){_0x3b1c43[_0x740f('0x24')]=_0x41fb54;if(_0x39b1df[_0x740f('0x37')][_0x740f('0x47')]){_0x5baf2a[_0x740f('0x48')]=[{'all':!![]}];}return db[_0x740f('0x30')]['findAll'](_0x5baf2a);})[_0x740f('0x2a')](function(_0x3c2dce){_0x3b1c43[_0x740f('0x49')]=_0x3c2dce;return _0x3b1c43;})[_0x740f('0x2a')](respondWithFilteredResult(_0x8c4d49,_0x5baf2a))[_0x740f('0x4a')](handleError(_0x8c4d49,null));};exports[_0x740f('0x4b')]=function(_0x641afb,_0x260097){var _0x509d0e={'raw':!![],'where':{'id':_0x641afb['params']['id']}},_0x333395={};_0x333395[_0x740f('0x35')]=_[_0x740f('0x38')](db['ChatGroup']['rawAttributes']);_0x333395[_0x740f('0x37')]=_['keys'](_0x641afb['query']);_0x333395[_0x740f('0x41')]=_['intersection'](_0x333395['model'],_0x333395[_0x740f('0x37')]);_0x509d0e[_0x740f('0x3b')]=_['intersection'](_0x333395[_0x740f('0x35')],qs['fields'](_0x641afb[_0x740f('0x37')][_0x740f('0x3a')]));_0x509d0e[_0x740f('0x3b')]=_0x509d0e[_0x740f('0x3b')][_0x740f('0x3c')]?_0x509d0e['attributes']:_0x333395[_0x740f('0x35')];if(_0x641afb[_0x740f('0x37')][_0x740f('0x47')]){_0x509d0e[_0x740f('0x48')]=[{'all':!![]}];}_0x509d0e=_[_0x740f('0x44')]({},_0x509d0e,_0x641afb['options']);return db[_0x740f('0x30')][_0x740f('0x4c')](_0x509d0e)[_0x740f('0x2a')](handleEntityNotFound(_0x260097,null))[_0x740f('0x2a')](respondWithResult(_0x260097,null))[_0x740f('0x4a')](handleError(_0x260097,null));};exports[_0x740f('0x4d')]=function(_0x16bc19,_0x1a4b63){return db['ChatGroup'][_0x740f('0x4d')](_0x16bc19[_0x740f('0x4e')],{})[_0x740f('0x2a')](respondWithResult(_0x1a4b63,0xc9))[_0x740f('0x4a')](handleError(_0x1a4b63,null));};exports[_0x740f('0x29')]=function(_0x4a55b9,_0x4354dd){if(_0x4a55b9[_0x740f('0x4e')]['id']){delete _0x4a55b9[_0x740f('0x4e')]['id'];}return db[_0x740f('0x30')][_0x740f('0x4c')]({'where':{'id':_0x4a55b9[_0x740f('0x4f')]['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0x4354dd,null))['then'](saveUpdates(_0x4a55b9[_0x740f('0x4e')],null))[_0x740f('0x2a')](respondWithResult(_0x4354dd,null))[_0x740f('0x4a')](handleError(_0x4354dd,null));};exports[_0x740f('0x2b')]=function(_0x424703,_0x5c0723){return db['ChatGroup']['find']({'where':{'id':_0x424703[_0x740f('0x4f')]['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0x5c0723,null))[_0x740f('0x2a')](removeEntity(_0x5c0723,null))[_0x740f('0x4a')](handleError(_0x5c0723,null));};exports[_0x740f('0x50')]=function(_0x42af02,_0x3e248c){return db[_0x740f('0x30')][_0x740f('0x50')]()[_0x740f('0x2a')](respondWithResult(_0x3e248c,null))[_0x740f('0x4a')](handleError(_0x3e248c,null));};exports['getUnread']=function(_0x4d77af,_0x1dff60,_0x1a0ce4){return db[_0x740f('0x51')][_0x740f('0x24')]({'where':{'ChatGroupId':_0x4d77af[_0x740f('0x4f')]['id'],'ToId':_0x4d77af[_0x740f('0x52')]['id'],'read':![]}})[_0x740f('0x2a')](function(_0x1b9483){return{'id':_[_0x740f('0x53')](_0x4d77af[_0x740f('0x4f')]['id']),'count':_0x1b9483};})[_0x740f('0x2a')](respondWithResult(_0x1dff60,null))['catch'](handleError(_0x1dff60,null));};exports[_0x740f('0x54')]=function(_0x3de966,_0x9d62b4,_0x241dae){return db[_0x740f('0x30')]['find']({'where':{'id':_0x3de966['params']['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0x9d62b4,null))['then'](function(_0x3ead10){if(_0x3ead10){return _0x3ead10[_0x740f('0x54')](_0x3de966[_0x740f('0x4e')]['ids'],_[_0x740f('0x55')](_0x3de966['body'],[_0x740f('0x56'),'id'])||{});}})[_0x740f('0x2a')](respondWithResult(_0x9d62b4,null))[_0x740f('0x4a')](handleError(_0x9d62b4,null));};exports[_0x740f('0x57')]=function(_0x5aa5b2,_0x5cd8f7,_0x3752b0){var _0xa0c84c={};var _0x58ee64={};var _0x383462;var _0x4e4721;return db[_0x740f('0x30')][_0x740f('0x58')]({'where':{'id':_0x5aa5b2[_0x740f('0x4f')]['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0x5cd8f7,null))['then'](function(_0x3e90e9){if(_0x3e90e9){_0x383462=_0x3e90e9;_0x58ee64[_0x740f('0x35')]=_[_0x740f('0x38')](db[_0x740f('0x59')]['rawAttributes']);_0x58ee64[_0x740f('0x37')]=_[_0x740f('0x38')](_0x5aa5b2[_0x740f('0x37')]);_0x58ee64[_0x740f('0x41')]=_[_0x740f('0x39')](_0x58ee64[_0x740f('0x35')],_0x58ee64[_0x740f('0x37')]);_0xa0c84c[_0x740f('0x3b')]=_[_0x740f('0x39')](_0x58ee64[_0x740f('0x35')],qs[_0x740f('0x3a')](_0x5aa5b2[_0x740f('0x37')][_0x740f('0x3a')]));_0xa0c84c[_0x740f('0x3b')]=_0xa0c84c[_0x740f('0x3b')][_0x740f('0x3c')]?_0xa0c84c[_0x740f('0x3b')]:_0x58ee64[_0x740f('0x35')];_0xa0c84c[_0x740f('0x3e')]=qs[_0x740f('0x3f')](_0x5aa5b2[_0x740f('0x37')][_0x740f('0x3f')]);_0xa0c84c[_0x740f('0x40')]=qs['filters'](_[_0x740f('0x42')](_0x5aa5b2[_0x740f('0x37')],_0x58ee64[_0x740f('0x41')]));if(_0x5aa5b2[_0x740f('0x37')]['filter']){_0xa0c84c['where']=_[_0x740f('0x44')](_0xa0c84c[_0x740f('0x40')],{'$or':_[_0x740f('0x2f')](_0xa0c84c[_0x740f('0x3b')],function(_0x4e8410){var _0x5056b8={};_0x5056b8[_0x4e8410]={'$like':'%'+_0x5aa5b2[_0x740f('0x37')]['filter']+'%'};return _0x5056b8;})});}_0xa0c84c=_[_0x740f('0x44')]({},_0xa0c84c,_0x5aa5b2['options']);return _0x383462[_0x740f('0x57')](_0xa0c84c);}})[_0x740f('0x2a')](function(_0x11af91){if(_0x11af91){_0x4e4721=_0x11af91[_0x740f('0x3c')];if(!_0x5aa5b2['query'][_0x740f('0x5a')](_0x740f('0x3d'))){_0xa0c84c[_0x740f('0x23')]=qs['limit'](_0x5aa5b2[_0x740f('0x37')][_0x740f('0x23')]);_0xa0c84c['offset']=qs[_0x740f('0x21')](_0x5aa5b2[_0x740f('0x37')][_0x740f('0x21')]);}return _0x383462[_0x740f('0x57')](_0xa0c84c);}})[_0x740f('0x2a')](function(_0x3ea95f){if(_0x3ea95f){return _0x3ea95f?{'count':_0x4e4721,'rows':_0x3ea95f}:null;}})[_0x740f('0x2a')](respondWithResult(_0x5cd8f7,null))[_0x740f('0x4a')](handleError(_0x5cd8f7,null));};exports['removeMembers']=function(_0x59a4bd,_0x401221,_0x44d46a){return db[_0x740f('0x30')][_0x740f('0x4c')]({'where':{'id':_0x59a4bd[_0x740f('0x4f')]['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0x401221,null))[_0x740f('0x2a')](function(_0x37017a){if(_0x37017a){return _0x37017a['removeMembers'](_0x59a4bd[_0x740f('0x37')][_0x740f('0x56')]);}})[_0x740f('0x2a')](respondWithStatusCode(_0x401221,null))[_0x740f('0x4a')](handleError(_0x401221,null));};exports[_0x740f('0x5b')]=function(_0x139f06,_0x225079,_0x1b3b64){if(_0x139f06[_0x740f('0x4e')]['id']){delete _0x139f06['body']['id'];}return db[_0x740f('0x30')][_0x740f('0x4c')]({'where':{'id':_0x139f06[_0x740f('0x4f')]['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0x225079,null))[_0x740f('0x2a')](function(_0x53630f){if(_0x53630f){_0x139f06[_0x740f('0x4e')][_0x740f('0x5c')]=_0x53630f['id'];return db[_0x740f('0x51')][_0x740f('0x4d')](_0x139f06['body']);}})['then'](respondWithResult(_0x225079,null))['catch'](handleError(_0x225079,null));};exports['getMessages']=function(_0x10d161,_0xf87a28,_0x2086f2){var _0x4e1afe={};var _0x4e7b5a={};var _0x57cd58;var _0x19bf45;return db['ChatGroup'][_0x740f('0x58')]({'where':{'id':_0x10d161[_0x740f('0x4f')]['id']}})[_0x740f('0x2a')](handleEntityNotFound(_0xf87a28,null))[_0x740f('0x2a')](function(_0x1620fc){if(_0x1620fc){_0x57cd58=_0x1620fc;_0x4e7b5a[_0x740f('0x35')]=_[_0x740f('0x38')](db[_0x740f('0x51')][_0x740f('0x31')]);_0x4e7b5a[_0x740f('0x37')]=_['keys'](_0x10d161['query']);_0x4e7b5a[_0x740f('0x41')]=_['intersection'](_0x4e7b5a[_0x740f('0x35')],_0x4e7b5a[_0x740f('0x37')]);_0x4e1afe['attributes']=_['intersection'](_0x4e7b5a['model'],qs[_0x740f('0x3a')](_0x10d161[_0x740f('0x37')][_0x740f('0x3a')]));_0x4e1afe[_0x740f('0x3b')]=_0x4e1afe[_0x740f('0x3b')][_0x740f('0x3c')]?_0x4e1afe[_0x740f('0x3b')]:_0x4e7b5a['model'];_0x4e1afe[_0x740f('0x3e')]=qs['sort'](_0x10d161[_0x740f('0x37')]['sort']);_0x4e1afe['where']=qs[_0x740f('0x41')](_[_0x740f('0x42')](_0x10d161[_0x740f('0x37')],_0x4e7b5a[_0x740f('0x41')]));if(_0x10d161['query']['filter']){_0x4e1afe['where']=_['merge'](_0x4e1afe[_0x740f('0x40')],{'$or':_[_0x740f('0x2f')](_0x4e1afe['attributes'],function(_0xc2a0e5){var _0x43bdb6={};_0x43bdb6[_0xc2a0e5]={'$like':'%'+_0x10d161['query'][_0x740f('0x43')]+'%'};return _0x43bdb6;})});}if(_0x10d161[_0x740f('0x37')][_0x740f('0x5d')]){var _0x6c46c2=_0x10d161[_0x740f('0x37')]['$gte']['split'](',');var _0x4ec037={};_0x4ec037[_0x6c46c2[0x0]]={'$gte':moment(_0x6c46c2[0x1])[_0x740f('0x5e')](_0x740f('0x5f'))};_0x4e1afe[_0x740f('0x40')]=_[_0x740f('0x44')](_0x4e1afe[_0x740f('0x40')],_0x4ec037);}_0x4e1afe=_[_0x740f('0x44')]({},_0x4e1afe,_0x10d161[_0x740f('0x46')]);return _0x57cd58['getMessages'](_0x4e1afe);}})[_0x740f('0x2a')](function(_0x4f1a74){if(_0x4f1a74){_0x19bf45=_0x4f1a74[_0x740f('0x3c')];if(!_0x10d161[_0x740f('0x37')]['hasOwnProperty'](_0x740f('0x3d'))){_0x4e1afe[_0x740f('0x23')]=qs[_0x740f('0x23')](_0x10d161[_0x740f('0x37')]['limit']);_0x4e1afe[_0x740f('0x21')]=qs[_0x740f('0x21')](_0x10d161[_0x740f('0x37')][_0x740f('0x21')]);}return _0x57cd58[_0x740f('0x60')](_0x4e1afe);}})['then'](function(_0x3b842b){if(_0x3b842b){return _0x3b842b?{'count':_0x19bf45,'rows':_0x3b842b}:null;}})[_0x740f('0x2a')](respondWithResult(_0xf87a28,null))[_0x740f('0x4a')](handleError(_0xf87a28,null));};
\ No newline at end of file
index 3c34188..a939a3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a4=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatGroup','setMaxListeners'];(function(_0x5ed973,_0x42389f){var _0x2b41c9=function(_0xa2b346){while(--_0xa2b346){_0x5ed973['push'](_0x5ed973['shift']());}};_0x2b41c9(++_0x42389f);}(_0x15a4,0x178));var _0x415a=function(_0x38fb9b,_0x5eafda){_0x38fb9b=_0x38fb9b-0x0;var _0xae1fa2=_0x15a4[_0x38fb9b];return _0xae1fa2;};'use strict';var EventEmitter=require(_0x415a('0x0'));var ChatGroup=require(_0x415a('0x1'))['db'][_0x415a('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x415a('0x3')](0x0);var events={'afterCreate':_0x415a('0x4'),'afterUpdate':'update','afterDestroy':_0x415a('0x5')};function emitEvent(_0x155bd8){return function(_0x267487,_0x213835,_0x1172af){ChatGroupEvents[_0x415a('0x6')](_0x155bd8+':'+_0x267487['id'],_0x267487);ChatGroupEvents[_0x415a('0x6')](_0x155bd8,_0x267487);_0x1172af(null);};}for(var e in events){if(events[_0x415a('0x7')](e)){var event=events[e];ChatGroup[_0x415a('0x8')](e,emitEvent(event));}}module[_0x415a('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0x7a2f=['exports','events','../../mysqldb','setMaxListeners','save','update','emit','hook'];(function(_0x5628ca,_0x4d489c){var _0x53ec19=function(_0x311bb8){while(--_0x311bb8){_0x5628ca['push'](_0x5628ca['shift']());}};_0x53ec19(++_0x4d489c);}(_0x7a2f,0x99));var _0xf7a2=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x7a2f[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require(_0xf7a2('0x0'));var ChatGroup=require(_0xf7a2('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xf7a2('0x2')](0x0);var events={'afterCreate':_0xf7a2('0x3'),'afterUpdate':_0xf7a2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x8a77d8){return function(_0xc47429,_0x25b3e0,_0x25e177){ChatGroupEvents[_0xf7a2('0x5')](_0x8a77d8+':'+_0xc47429['id'],_0xc47429);ChatGroupEvents[_0xf7a2('0x5')](_0x8a77d8,_0xc47429);_0x25e177(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0xf7a2('0x6')](e,emitEvent(event));}}module[_0xf7a2('0x7')]=ChatGroupEvents;
\ No newline at end of file
index 5725928..cb2cdc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc39f=['path','rimraf','../../config/environment','./chatGroup.attributes','ChatGroup','chat_groups','lodash','../../config/logger','api','request-promise'];(function(_0x33d540,_0x1e5225){var _0x190394=function(_0x164caf){while(--_0x164caf){_0x33d540['push'](_0x33d540['shift']());}};_0x190394(++_0x1e5225);}(_0xc39f,0x146));var _0xfc39=function(_0x4cce2d,_0x388dc6){_0x4cce2d=_0x4cce2d-0x0;var _0x18fb5e=_0xc39f[_0x4cce2d];return _0x18fb5e;};'use strict';var _=require(_0xfc39('0x0'));var util=require('util');var logger=require(_0xfc39('0x1'))(_0xfc39('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfc39('0x3'));var fs=require('fs');var path=require(_0xfc39('0x4'));var rimraf=require(_0xfc39('0x5'));var config=require(_0xfc39('0x6'));var attributes=require(_0xfc39('0x7'));module['exports']=function(_0xec138b,_0x2a4222){return _0xec138b['define'](_0xfc39('0x8'),attributes,{'tableName':_0xfc39('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c98=['./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash','util','moment','bluebird','path','../../config/environment'];(function(_0x528442,_0x3f7aed){var _0x4c42cd=function(_0x304a36){while(--_0x304a36){_0x528442['push'](_0x528442['shift']());}};_0x4c42cd(++_0x3f7aed);}(_0x9c98,0xd6));var _0x89c9=function(_0x460555,_0x4e45a0){_0x460555=_0x460555-0x0;var _0x155a34=_0x9c98[_0x460555];return _0x155a34;};'use strict';var _=require(_0x89c9('0x0'));var util=require(_0x89c9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x89c9('0x2'));var BPromise=require(_0x89c9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x89c9('0x4'));var rimraf=require('rimraf');var config=require(_0x89c9('0x5'));var attributes=require(_0x89c9('0x6'));module[_0x89c9('0x7')]=function(_0x4c9ce5,_0x1100e7){return _0x4c9ce5[_0x89c9('0x8')](_0x89c9('0x9'),attributes,{'tableName':_0x89c9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43b0f62..d6a5a29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16cc=['localhost','socket.io-emitter','register','request','then','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis'];(function(_0x5756f8,_0x22b6d5){var _0x3bb749=function(_0x332204){while(--_0x332204){_0x5756f8['push'](_0x5756f8['shift']());}};_0x3bb749(++_0x22b6d5);}(_0x16cc,0x120));var _0xc16c=function(_0x41eed5,_0x16bbeb){_0x41eed5=_0x41eed5-0x0;var _0x7f0b5f=_0x16cc[_0x41eed5];return _0x7f0b5f;};'use strict';var _=require('lodash');var util=require(_0xc16c('0x0'));var moment=require(_0xc16c('0x1'));var BPromise=require(_0xc16c('0x2'));var rs=require(_0xc16c('0x3'));var fs=require('fs');var Redis=require(_0xc16c('0x4'));var db=require(_0xc16c('0x5'))['db'];var utils=require(_0xc16c('0x6'));var logger=require('../../config/logger')(_0xc16c('0x7'));var config=require(_0xc16c('0x8'));var jayson=require(_0xc16c('0x9'));var client=jayson[_0xc16c('0xa')]['http']({'port':0x232a});config[_0xc16c('0xb')]=_['defaults'](config[_0xc16c('0xb')],{'host':_0xc16c('0xc'),'port':0x18eb});var socket=require(_0xc16c('0xd'))(new Redis(config[_0xc16c('0xb')]));require('./chatGroup.socket')[_0xc16c('0xe')](socket);function respondWithRpcPromise(_0x286c40,_0x3f3ff4,_0x462dcf){return new BPromise(function(_0x510afb,_0x2ccba4){return client[_0xc16c('0xf')](_0x286c40,_0x462dcf)[_0xc16c('0x10')](function(_0x4cb366){logger['info'](_0xc16c('0x11'),_0x3f3ff4,_0xc16c('0x12'));logger[_0xc16c('0x13')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x3f3ff4,'request\x20sent',JSON['stringify'](_0x4cb366));if(_0x4cb366[_0xc16c('0x14')]){if(_0x4cb366[_0xc16c('0x14')][_0xc16c('0x15')]===0x1f4){logger[_0xc16c('0x14')](_0xc16c('0x11'),_0x3f3ff4,_0x4cb366[_0xc16c('0x14')][_0xc16c('0x16')]);return _0x2ccba4(_0x4cb366[_0xc16c('0x14')][_0xc16c('0x16')]);}logger[_0xc16c('0x14')](_0xc16c('0x11'),_0x3f3ff4,_0x4cb366[_0xc16c('0x14')][_0xc16c('0x16')]);return _0x510afb(_0x4cb366[_0xc16c('0x14')][_0xc16c('0x16')]);}else{logger['info']('ChatGroup,\x20%s,\x20%s',_0x3f3ff4,_0xc16c('0x12'));_0x510afb(_0x4cb366[_0xc16c('0x17')][_0xc16c('0x16')]);}})[_0xc16c('0x18')](function(_0x432a0a){logger[_0xc16c('0x14')](_0xc16c('0x11'),_0x3f3ff4,_0x432a0a);_0x2ccba4(_0x432a0a);});});}
\ No newline at end of file
+var _0x3dc1=['then','info','request\x20sent','debug','error','code','ChatGroup,\x20%s,\x20%s','message','result','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','localhost','socket.io-emitter','./chatGroup.socket','register'];(function(_0x299784,_0xb0918f){var _0x5ab008=function(_0x49c1f5){while(--_0x49c1f5){_0x299784['push'](_0x299784['shift']());}};_0x5ab008(++_0xb0918f);}(_0x3dc1,0x127));var _0x13dc=function(_0x2e4e07,_0x26b254){_0x2e4e07=_0x2e4e07-0x0;var _0x55bc17=_0x3dc1[_0x2e4e07];return _0x55bc17;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x13dc('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13dc('0x1'));var db=require(_0x13dc('0x2'))['db'];var utils=require(_0x13dc('0x3'));var logger=require(_0x13dc('0x4'))(_0x13dc('0x5'));var config=require('../../config/environment');var jayson=require(_0x13dc('0x6'));var client=jayson[_0x13dc('0x7')]['http']({'port':0x232a});config['redis']=_[_0x13dc('0x8')](config['redis'],{'host':_0x13dc('0x9'),'port':0x18eb});var socket=require(_0x13dc('0xa'))(new Redis(config['redis']));require(_0x13dc('0xb'))[_0x13dc('0xc')](socket);function respondWithRpcPromise(_0x386e43,_0x7b132c,_0x5c1b24){return new BPromise(function(_0x1533de,_0x46d4f){return client['request'](_0x386e43,_0x5c1b24)[_0x13dc('0xd')](function(_0x835a16){logger[_0x13dc('0xe')]('ChatGroup,\x20%s,\x20%s',_0x7b132c,_0x13dc('0xf'));logger[_0x13dc('0x10')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x7b132c,_0x13dc('0xf'),JSON['stringify'](_0x835a16));if(_0x835a16[_0x13dc('0x11')]){if(_0x835a16[_0x13dc('0x11')][_0x13dc('0x12')]===0x1f4){logger[_0x13dc('0x11')](_0x13dc('0x13'),_0x7b132c,_0x835a16['error'][_0x13dc('0x14')]);return _0x46d4f(_0x835a16[_0x13dc('0x11')][_0x13dc('0x14')]);}logger[_0x13dc('0x11')](_0x13dc('0x13'),_0x7b132c,_0x835a16[_0x13dc('0x11')][_0x13dc('0x14')]);return _0x1533de(_0x835a16[_0x13dc('0x11')][_0x13dc('0x14')]);}else{logger[_0x13dc('0xe')](_0x13dc('0x13'),_0x7b132c,_0x13dc('0xf'));_0x1533de(_0x835a16[_0x13dc('0x15')]['message']);}})['catch'](function(_0x4c495e){logger[_0x13dc('0x11')]('ChatGroup,\x20%s,\x20%s',_0x7b132c,_0x4c495e);_0x46d4f(_0x4c495e);});});}
\ No newline at end of file
index c4bd2fb..821267f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe943=['length','chatGroup:','./chatGroup.events','save','remove','update','emit','removeListener'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0xe943,0x92));var _0x3e94=function(_0x2ca2d0,_0x3ea8e4){_0x2ca2d0=_0x2ca2d0-0x0;var _0x521c23=_0xe943[_0x2ca2d0];return _0x521c23;};'use strict';var ChatGroupEvents=require(_0x3e94('0x0'));var events=[_0x3e94('0x1'),_0x3e94('0x2'),_0x3e94('0x3')];function createListener(_0x4a5ded,_0x3b5874){return function(_0x6d5cbd){_0x3b5874[_0x3e94('0x4')](_0x4a5ded,_0x6d5cbd);};}function removeListener(_0x363516,_0x15e554){return function(){ChatGroupEvents[_0x3e94('0x5')](_0x363516,_0x15e554);};}exports['register']=function(_0x1fa7c8){for(var _0x29c0c8=0x0,_0x49b1f6=events[_0x3e94('0x6')];_0x29c0c8<_0x49b1f6;_0x29c0c8++){var _0x190ccb=events[_0x29c0c8];var _0x49486f=createListener(_0x3e94('0x7')+_0x190ccb,_0x1fa7c8);ChatGroupEvents['on'](_0x190ccb,_0x49486f);}};
\ No newline at end of file
+var _0x16c7=['chatGroup:','./chatGroup.events','remove','update','emit','removeListener','length'];(function(_0x6fb6f5,_0x7d4172){var _0x5c8ecf=function(_0x35b082){while(--_0x35b082){_0x6fb6f5['push'](_0x6fb6f5['shift']());}};_0x5c8ecf(++_0x7d4172);}(_0x16c7,0x16d));var _0x716c=function(_0xe62a7c,_0x3e5fca){_0xe62a7c=_0xe62a7c-0x0;var _0x47e7c8=_0x16c7[_0xe62a7c];return _0x47e7c8;};'use strict';var ChatGroupEvents=require(_0x716c('0x0'));var events=['save',_0x716c('0x1'),_0x716c('0x2')];function createListener(_0x5c41a1,_0x1bac7b){return function(_0x492e19){_0x1bac7b[_0x716c('0x3')](_0x5c41a1,_0x492e19);};}function removeListener(_0x157c72,_0x5d354b){return function(){ChatGroupEvents[_0x716c('0x4')](_0x157c72,_0x5d354b);};}exports['register']=function(_0x1eba24){for(var _0x4d6d76=0x0,_0x30f14e=events[_0x716c('0x5')];_0x4d6d76<_0x30f14e;_0x4d6d76++){var _0x39c604=events[_0x4d6d76];var _0x4c8381=createListener(_0x716c('0x6')+_0x39c604,_0x1eba24);ChatGroupEvents['on'](_0x39c604,_0x4c8381);}};
\ No newline at end of file
index 303ba43..fa577c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x280f=['isAuthenticated','index','get','/describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','update','delete','destroy','removeMembers','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatGroup.controller'];(function(_0xd1788c,_0x4830a2){var _0x9ce47f=function(_0x150888){while(--_0x150888){_0xd1788c['push'](_0xd1788c['shift']());}};_0x9ce47f(++_0x4830a2);}(_0x280f,0x171));var _0xf280=function(_0x4d934b,_0x52f8e9){_0x4d934b=_0x4d934b-0x0;var _0xc0338b=_0x280f[_0x4d934b];return _0xc0338b;};'use strict';var multer=require(_0xf280('0x0'));var util=require(_0xf280('0x1'));var path=require('path');var timeout=require(_0xf280('0x2'));var express=require('express');var router=express[_0xf280('0x3')]();var fs_extra=require(_0xf280('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf280('0x5'));var config=require(_0xf280('0x6'));var controller=require(_0xf280('0x7'));router['get']('/',auth[_0xf280('0x8')](),controller[_0xf280('0x9')]);router[_0xf280('0xa')](_0xf280('0xb'),auth[_0xf280('0x8')](),controller['describe']);router['get'](_0xf280('0xc'),auth[_0xf280('0x8')](),controller[_0xf280('0xd')]);router['get'](_0xf280('0xe'),auth[_0xf280('0x8')](),controller[_0xf280('0xf')]);router['get'](_0xf280('0x10'),auth[_0xf280('0x8')](),controller[_0xf280('0x11')]);router[_0xf280('0xa')](_0xf280('0x12'),auth[_0xf280('0x8')](),controller[_0xf280('0x13')]);router[_0xf280('0x14')]('/',auth['isAuthenticated'](),controller[_0xf280('0x15')]);router['post'](_0xf280('0x10'),auth[_0xf280('0x8')](),controller[_0xf280('0x16')]);router['post'](_0xf280('0x12'),auth[_0xf280('0x8')](),controller[_0xf280('0x17')]);router['put'](_0xf280('0xc'),auth[_0xf280('0x8')](),controller[_0xf280('0x18')]);router[_0xf280('0x19')](_0xf280('0xc'),auth[_0xf280('0x8')](),controller[_0xf280('0x1a')]);router[_0xf280('0x19')](_0xf280('0x10'),auth[_0xf280('0x8')](),controller[_0xf280('0x1b')]);module[_0xf280('0x1c')]=router;
\ No newline at end of file
+var _0x81ca=['/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','show'];(function(_0x26a2bd,_0x26eba2){var _0x40410e=function(_0x49d342){while(--_0x49d342){_0x26a2bd['push'](_0x26a2bd['shift']());}};_0x40410e(++_0x26eba2);}(_0x81ca,0x96));var _0xa81c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x81ca[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xa81c('0x0'));var util=require(_0xa81c('0x1'));var path=require('path');var timeout=require(_0xa81c('0x2'));var express=require(_0xa81c('0x3'));var router=express[_0xa81c('0x4')]();var fs_extra=require(_0xa81c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa81c('0x6'));var config=require('../../config/environment');var controller=require('./chatGroup.controller');router[_0xa81c('0x7')]('/',auth[_0xa81c('0x8')](),controller[_0xa81c('0x9')]);router['get'](_0xa81c('0xa'),auth[_0xa81c('0x8')](),controller['describe']);router['get']('/:id',auth[_0xa81c('0x8')](),controller[_0xa81c('0xb')]);router[_0xa81c('0x7')](_0xa81c('0xc'),auth[_0xa81c('0x8')](),controller[_0xa81c('0xd')]);router['get'](_0xa81c('0xe'),auth[_0xa81c('0x8')](),controller[_0xa81c('0xf')]);router[_0xa81c('0x7')](_0xa81c('0x10'),auth[_0xa81c('0x8')](),controller[_0xa81c('0x11')]);router[_0xa81c('0x12')]('/',auth[_0xa81c('0x8')](),controller[_0xa81c('0x13')]);router[_0xa81c('0x12')](_0xa81c('0xe'),auth['isAuthenticated'](),controller[_0xa81c('0x14')]);router[_0xa81c('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0xa81c('0x15')]);router[_0xa81c('0x16')](_0xa81c('0x17'),auth['isAuthenticated'](),controller[_0xa81c('0x18')]);router[_0xa81c('0x19')](_0xa81c('0x17'),auth[_0xa81c('0x8')](),controller[_0xa81c('0x1a')]);router[_0xa81c('0x19')](_0xa81c('0xe'),auth['isAuthenticated'](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
index 960bdfd..b07267d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a40=['STRING','DATE','sequelize','exports','BOOLEAN','ENUM','star','thumb','TEXT'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x7a40,0x197));var _0x07a4=function(_0xb2c304,_0x15c1cc){_0xb2c304=_0xb2c304-0x0;var _0x33a7d3=_0x7a40[_0xb2c304];return _0x33a7d3;};'use strict';var Sequelize=require(_0x07a4('0x0'));module[_0x07a4('0x1')]={'closed':{'type':Sequelize[_0x07a4('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x07a4('0x3')](_0x07a4('0x4'),_0x07a4('0x5')),'defaultValue':_0x07a4('0x4')},'ratingMessage':{'type':Sequelize[_0x07a4('0x6')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x07a4('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x07a4('0x8')]},'disposition':{'type':Sequelize[_0x07a4('0x7')]},'secondDisposition':{'type':Sequelize[_0x07a4('0x7')]},'thirdDisposition':{'type':Sequelize[_0x07a4('0x7')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x07a4('0x7')]},'browserVersion':{'type':Sequelize[_0x07a4('0x7')]},'osName':{'type':Sequelize[_0x07a4('0x7')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0x07a4('0x7')]},'deviceType':{'type':Sequelize[_0x07a4('0x7')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x07a4('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x07a4('0x8')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x07a4('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x07a4('0x7')]},'customerPort':{'type':Sequelize[_0x07a4('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x07a4('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x07a4('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xfef3=['out','sequelize','BOOLEAN','ENUM','star','TEXT','STRING','DATE','long'];(function(_0x56e1b3,_0xca670d){var _0xaccef4=function(_0x10e37a){while(--_0x10e37a){_0x56e1b3['push'](_0x56e1b3['shift']());}};_0xaccef4(++_0xca670d);}(_0xfef3,0x118));var _0x3fef=function(_0x360585,_0x2284ce){_0x360585=_0x360585-0x0;var _0x5371e4=_0xfef3[_0x360585];return _0x5371e4;};'use strict';var Sequelize=require(_0x3fef('0x0'));module['exports']={'closed':{'type':Sequelize[_0x3fef('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x3fef('0x2')](_0x3fef('0x3'),'thumb'),'defaultValue':_0x3fef('0x3')},'ratingMessage':{'type':Sequelize[_0x3fef('0x4')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x3fef('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x3fef('0x6')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x3fef('0x5')]},'thirdDisposition':{'type':Sequelize[_0x3fef('0x5')]},'note':{'type':Sequelize[_0x3fef('0x5')]},'browserName':{'type':Sequelize[_0x3fef('0x5')]},'browserVersion':{'type':Sequelize[_0x3fef('0x5')]},'osName':{'type':Sequelize[_0x3fef('0x5')]},'osVersion':{'type':Sequelize[_0x3fef('0x5')]},'deviceModel':{'type':Sequelize[_0x3fef('0x5')]},'deviceVendor':{'type':Sequelize[_0x3fef('0x5')]},'deviceType':{'type':Sequelize[_0x3fef('0x5')]},'referer':{'type':Sequelize[_0x3fef('0x4')]},'customerIp':{'type':Sequelize[_0x3fef('0x5')]},'formData':{'type':Sequelize[_0x3fef('0x4')](_0x3fef('0x7'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x3fef('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x3fef('0x2')]('in',_0x3fef('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x3fef('0x5')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x3fef('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 1880169..3b3ec0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['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?','getFullTextValue','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','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','sequelize','toString','keyBy','merge','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','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','rows','show','params','includeAll','include','options','create','describe','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','user','fullname','email','account','POST','https://api-vidaoo.xcally.com/api/v1/meetings','follow','isNull','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','originalname','basename','file','filename','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','join','root','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','Messages','CmContact','%s%d','agentAlias','agentIdentifier','website_alias','System','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','direction','secret','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','Mail\x20Transcript','addMessage','ids','getMessages','pick','YYYY-MM-DD\x20HH:mm:ss','findAll','getMyMessages','includeAgent','addTags','omit','spread','color','emit','chatInteractionTags:save','removeTags','unix','server','files','transcript-%d-%s.zip','firstName','lastName','attachments','Account','Owner','mkdirSync','Chat','N.A.','closedAt','referer','customerIp','customerPort','tail','existsSync','renderFile','.pdf','log','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','render','body','interaction','map','TagIds','Tags','forEach','catch','index','ChatInteraction','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','select','field','from','tools_tags','u.fullname','ui.ChatInteractionId','left_join','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','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','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','type','text','start','Tag','union','User','UserId','some','compact','isEmpty','ChatWebsiteId','concat','createdAt','parse','$gte'];(function(_0x1ecae9,_0x3d5fb9){var _0x5518e1=function(_0x1fcef5){while(--_0x1fcef5){_0x1ecae9['push'](_0x1ecae9['shift']());}};_0x5518e1(++_0x3d5fb9);}(_0x5eb8,0xb0));var _0x85eb=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5eb8[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x85eb('0x0'));var jsonpatch=require(_0x85eb('0x1'));var rp=require(_0x85eb('0x2'));var moment=require(_0x85eb('0x3'));var BPromise=require(_0x85eb('0x4'));var Mustache=require(_0x85eb('0x5'));var util=require(_0x85eb('0x6'));var path=require(_0x85eb('0x7'));var sox=require(_0x85eb('0x8'));var csv=require(_0x85eb('0x9'));var ejs=require(_0x85eb('0xa'));var fs=require('fs');var fs_extra=require(_0x85eb('0xb'));var _=require('lodash');var squel=require(_0x85eb('0xc'));var crypto=require(_0x85eb('0xd'));var jsforce=require(_0x85eb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x85eb('0x9'));var querystring=require('querystring');var Papa=require(_0x85eb('0xf'));var Redis=require(_0x85eb('0x10'));var authService=require(_0x85eb('0x11'));var qs=require(_0x85eb('0x12'));var as=require(_0x85eb('0x13'));var pdf=require(_0x85eb('0x14'));var hardwareService=require(_0x85eb('0x15'));var logger=require('../../config/logger')(_0x85eb('0x16'));var utils=require(_0x85eb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x85eb('0x18'));var db=require(_0x85eb('0x19'))['db'];config[_0x85eb('0x1a')]=_[_0x85eb('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x85eb('0x1c'))(new Redis(config['redis']));require(_0x85eb('0x1d'))[_0x85eb('0x1e')](socket);var jayson=require(_0x85eb('0x1f'));var client=jayson[_0x85eb('0x20')][_0x85eb('0x21')]({'port':0x232b});var client9004=jayson['client'][_0x85eb('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x59237b,_0x17140b,_0x10c2c9,_0x3e23e8){return new BPromise(function(_0x5deab1,_0x5dbeda){var _0x5c5cbb=_0x3e23e8||client;return _0x5c5cbb['request'](_0x59237b,_0x10c2c9)[_0x85eb('0x22')](function(_0x39ca96){logger[_0x85eb('0x23')](_0x85eb('0x24'),_0x17140b,_0x85eb('0x25'));logger[_0x85eb('0x26')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x17140b,_0x85eb('0x25'),JSON[_0x85eb('0x27')](_0x39ca96));if(_0x39ca96[_0x85eb('0x28')]){if(_0x39ca96['error']['code']===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x17140b,_0x39ca96[_0x85eb('0x28')][_0x85eb('0x29')]);return _0x5dbeda(_0x39ca96[_0x85eb('0x28')][_0x85eb('0x29')]);}logger[_0x85eb('0x28')](_0x85eb('0x24'),_0x17140b,_0x39ca96['error']['message']);return _0x5deab1(_0x39ca96['error'][_0x85eb('0x29')]);}else{logger[_0x85eb('0x23')](_0x85eb('0x24'),_0x17140b,_0x85eb('0x25'));_0x5deab1(_0x39ca96[_0x85eb('0x2a')][_0x85eb('0x29')]);}})['catch'](function(_0x39d3fe){logger[_0x85eb('0x28')](_0x85eb('0x24'),_0x17140b,_0x39d3fe);_0x5dbeda(_0x39d3fe);});});}function respondWithStatusCode(_0x30e766,_0x3e2326){_0x3e2326=_0x3e2326||0xcc;return function(_0x57a03c){if(_0x57a03c){return _0x30e766[_0x85eb('0x2b')](_0x3e2326);}return _0x30e766[_0x85eb('0x2c')](_0x3e2326)[_0x85eb('0x2d')]();};}function respondWithResult(_0x3e7eb9,_0x40f13e){_0x40f13e=_0x40f13e||0xc8;return function(_0x29d262){if(_0x29d262){return _0x3e7eb9['status'](_0x40f13e)['json'](_0x29d262);}};}function respondWithFilteredResult(_0x37515c,_0x585f2a){return function(_0xa9b14f){if(_0xa9b14f){var _0x5255eb=typeof _0x585f2a[_0x85eb('0x2e')]===_0x85eb('0x2f')&&typeof _0x585f2a[_0x85eb('0x30')]===_0x85eb('0x2f');var _0xa67e1c=_0xa9b14f[_0x85eb('0x31')];var _0x41ed76=_0x5255eb?0x0:_0x585f2a['offset'];var _0x237f19=_0x5255eb?_0xa9b14f[_0x85eb('0x31')]:_0x585f2a['offset']+_0x585f2a[_0x85eb('0x30')];var _0x5af2de;if(_0x237f19>=_0xa67e1c){_0x237f19=_0xa67e1c;_0x5af2de=0xc8;}else{_0x5af2de=0xce;}_0x37515c['status'](_0x5af2de);return _0x37515c[_0x85eb('0x32')](_0x85eb('0x33'),_0x41ed76+'-'+_0x237f19+'/'+_0xa67e1c)[_0x85eb('0x34')](_0xa9b14f);}return null;};}function patchUpdates(_0x246dda){return function(_0x33c05f){try{jsonpatch[_0x85eb('0x35')](_0x33c05f,_0x246dda,!![]);}catch(_0x39b574){return BPromise[_0x85eb('0x36')](_0x39b574);}return _0x33c05f[_0x85eb('0x37')]();};}function saveUpdates(_0x1008bf,_0x4cbee0){return function(_0x14fe58){if(_0x14fe58){return _0x14fe58[_0x85eb('0x38')](_0x1008bf)['then'](function(_0x505321){return _0x505321;});}return null;};}function removeEntity(_0x340745,_0x13f245){return function(_0x38b96e){if(_0x38b96e){return _0x38b96e[_0x85eb('0x39')]()[_0x85eb('0x22')](function(){_0x340745[_0x85eb('0x2c')](0xcc)[_0x85eb('0x2d')]();});}};}function handleEntityNotFound(_0x35f092,_0x272a99){return function(_0x373e5f){if(!_0x373e5f){_0x35f092[_0x85eb('0x2b')](0x194);}return _0x373e5f;};}function handleError(_0x317d19,_0x317d86){_0x317d86=_0x317d86||0x1f4;return function(_0x33605a){logger['error'](_0x33605a[_0x85eb('0x3a')]);if(_0x33605a[_0x85eb('0x3b')]){delete _0x33605a['name'];}_0x317d19['status'](_0x317d86)[_0x85eb('0x3c')](_0x33605a);};}function getMustacheRender(_0xe22d16,_0x5389d8){return Mustache[_0x85eb('0x3d')](_0xe22d16,_['merge'](_0x5389d8[_0x85eb('0x3e')],{'contact':_0x5389d8['contact'],'message':_0x5389d8[_0x85eb('0x29')],'agent':_0x5389d8['agent'],'interaction':_0x5389d8[_0x85eb('0x3f')],'account':_0x5389d8['account']}))||'';}function getInteractionUsers(_0x38ab0f,_0x16202e){return new BPromise(function(_0x4de24e,_0x313989){try{if(_0x16202e[_0x38ab0f['id']]){_0x38ab0f['Users']=_[_0x85eb('0x40')](_0x16202e[_0x38ab0f['id']],function(_0x331260){return{'id':_0x331260['id'],'fullname':_0x331260['fullname']};});}}catch(_0x241488){_0x313989(_0x241488);}_0x4de24e(_0x38ab0f);});}function getInteractionTags(_0x4c25ed,_0x5495cf){return new BPromise(function(_0x1b8a71,_0x4edb2d){try{if(_0x4c25ed[_0x85eb('0x41')]){_0x4c25ed[_0x85eb('0x42')]=[];_0x4c25ed['TagIds']['split'](',')[_0x85eb('0x43')](function(_0x422ec3){_0x4c25ed['Tags']['push'](_0x5495cf[_0x422ec3]);});}delete _0x4c25ed[_0x85eb('0x41')];}catch(_0x2d1b32){_0x4edb2d(_0x2d1b32);}_0x1b8a71(_0x4c25ed);});}function updateChatInteraction(_0x2211f9,_0x202681,_0x3be961){return new BPromise(function(_0x5b7411,_0x5ccf8a){return getInteractionUsers(_0x2211f9,_0x3be961)[_0x85eb('0x22')](function(_0x208c27){return getInteractionTags(_0x208c27,_0x202681);})[_0x85eb('0x22')](function(_0x2ed39d){_0x5b7411(_0x2ed39d);})[_0x85eb('0x44')](function(_0x40e2a2){_0x5ccf8a(_0x40e2a2);});});}exports[_0x85eb('0x45')]=function(_0x469639,_0x540c7a){var _0x3a06af={},_0x1cabcb={},_0x5d90cc={'count':0x0,'rows':[]};var _0x1b77b3=_[_0x85eb('0x40')](db[_0x85eb('0x46')][_0x85eb('0x47')],function(_0x1b1559){return{'name':_0x1b1559[_0x85eb('0x48')],'type':_0x1b1559['type'][_0x85eb('0x49')]};});_0x1cabcb[_0x85eb('0x4a')]=_[_0x85eb('0x40')](_0x1b77b3,_0x85eb('0x3b'));_0x1cabcb[_0x85eb('0x4b')]=_[_0x85eb('0x4c')](_0x469639[_0x85eb('0x4b')]);_0x1cabcb[_0x85eb('0x4d')]=_['intersection'](_0x1cabcb[_0x85eb('0x4a')],_0x1cabcb[_0x85eb('0x4b')]);_0x3a06af[_0x85eb('0x4e')]=_[_0x85eb('0x4f')](_0x1cabcb[_0x85eb('0x4a')],qs[_0x85eb('0x50')](_0x469639[_0x85eb('0x4b')][_0x85eb('0x50')]));_0x3a06af[_0x85eb('0x4e')]=_0x3a06af[_0x85eb('0x4e')][_0x85eb('0x51')]?_0x3a06af[_0x85eb('0x4e')]:_0x1cabcb['model'];if(!_0x469639[_0x85eb('0x4b')][_0x85eb('0x52')](_0x85eb('0x53'))){_0x3a06af['limit']=qs[_0x85eb('0x30')](_0x469639[_0x85eb('0x4b')][_0x85eb('0x30')]);_0x3a06af[_0x85eb('0x2e')]=qs[_0x85eb('0x2e')](_0x469639['query'][_0x85eb('0x2e')]);}_0x3a06af[_0x85eb('0x54')]=qs[_0x85eb('0x55')](_0x469639['query'][_0x85eb('0x55')]);_0x3a06af[_0x85eb('0x56')]=qs[_0x85eb('0x4d')](_['pick'](_0x469639['query'],_0x1cabcb[_0x85eb('0x4d')]),_0x1b77b3);var _0x52996f=[];var _0x5ed98a=squel[_0x85eb('0x57')]()['field']('id')[_0x85eb('0x58')](_0x85eb('0x3b'))['field']('color')[_0x85eb('0x59')](_0x85eb('0x5a'));var _0x178d76=squel[_0x85eb('0x57')]()[_0x85eb('0x58')]('u.id')[_0x85eb('0x58')](_0x85eb('0x5b'))[_0x85eb('0x58')](_0x85eb('0x5c'))[_0x85eb('0x59')]('user_has_chat_interactions','ui')[_0x85eb('0x5d')]('users','u',_0x85eb('0x5e'));var _0x40d846=squel['select']()[_0x85eb('0x59')](_0x85eb('0x5f'),'i')[_0x85eb('0x5d')](_0x85eb('0x60'),'c',_0x85eb('0x61'))[_0x85eb('0x5d')]('users','o',_0x85eb('0x62'))['left_join'](_0x85eb('0x63'),'a',_0x85eb('0x64'))['left_join'](_0x85eb('0x65'),'me',_0x85eb('0x66'))['left_join'](_0x85eb('0x67'),'it','it.ChatInteractionId\x20=\x20i.id')[_0x85eb('0x5d')](_0x85eb('0x5a'),'t',_0x85eb('0x68'));var _0x13c0b3=squel[_0x85eb('0x69')]();var _0x15d4a7=[];var _0x5a729e=squel[_0x85eb('0x69')]();var _0x76a9c6;if(_0x469639[_0x85eb('0x4b')][_0x85eb('0x6a')]){_0x76a9c6=as[_0x85eb('0x6b')](_0x469639[_0x85eb('0x4b')][_0x85eb('0x6a')]);var _0x1cb659=_0x76a9c6[_0x85eb('0x6c')];for(var _0x13cc2a=0x0;_0x13cc2a<_0x76a9c6[_0x85eb('0x6d')]['length'];_0x13cc2a++){var _0x271842=_0x76a9c6[_0x85eb('0x6d')][_0x13cc2a];var _0x46e5d3='i';var _0xdaf2fe=_[_0x85eb('0x6e')](_0x1b77b3,[_0x85eb('0x3b'),_0x271842['field']]);if(!_0xdaf2fe){switch(_0x271842[_0x85eb('0x58')]){case'unreadMessages':if(_0x271842[_0x85eb('0x6f')]==0x1){_0x40d846[_0x85eb('0x70')]('`'+_0x271842[_0x85eb('0x58')]+_0x85eb('0x71'));}else{_0x40d846[_0x85eb('0x70')]('`'+_0x271842['field']+_0x85eb('0x72'));}break;case _0x85eb('0x73'):if(_0x271842[_0x85eb('0x74')]===_0x85eb('0x75')){if(_0x271842[_0x85eb('0x6f')][_0x85eb('0x76')]('\x20')[_0x85eb('0x51')]>0x1){_0x13c0b3[_0x1cb659](_0x85eb('0x77'),qs['getFullTextValue'](_0x271842[_0x85eb('0x6f')]),null);}else{var _0x4d27bd='%'+_0x271842[_0x85eb('0x6f')]+'%';_0x13c0b3[_0x1cb659](_0x85eb('0x78'),_0x4d27bd,_0x4d27bd,_0x4d27bd);}}else{_0xdaf2fe=_[_0x85eb('0x6e')](_0x1b77b3,[_0x85eb('0x3b'),_0x85eb('0x79')]);_0x271842['field']=_0x85eb('0x79');_0x3ba160=as[_0x85eb('0x7a')](_0x46e5d3,_0xdaf2fe[_0x85eb('0x7b')],_0x271842);_0x13c0b3[_0x1cb659](_0x3ba160[_0x85eb('0x7c')],_0x3ba160[_0x85eb('0x6f')][_0x85eb('0x7d')],_0x3ba160['value']['end']);}break;case _0x85eb('0x7e'):var _0x572560=_0x271842[_0x85eb('0x6f')][_0x85eb('0x76')](',')[_0x85eb('0x40')](function(_0x23f24a){return Number(_0x23f24a);});_0x572560[_0x85eb('0x43')](function(_0x2b7258){_0x5a729e['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2b7258+',%');});_0x15d4a7=_[_0x85eb('0x7f')](_0x15d4a7,_0x572560);break;case _0x85eb('0x80'):if(_0x271842[_0x85eb('0x74')]===_0x85eb('0x75')){_0x13c0b3[_0x1cb659]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x271842[_0x85eb('0x6f')]+'%',null);}else{_0xdaf2fe=_[_0x85eb('0x6e')](_0x1b77b3,[_0x85eb('0x3b'),_0x85eb('0x81')]);_0x271842['field']=_0x85eb('0x81');_0x3ba160=as[_0x85eb('0x7a')](_0x46e5d3,_0xdaf2fe[_0x85eb('0x7b')],_0x271842);_0x13c0b3[_0x1cb659](_0x3ba160[_0x85eb('0x7c')],_0x3ba160[_0x85eb('0x6f')][_0x85eb('0x7d')],_0x3ba160[_0x85eb('0x6f')][_0x85eb('0x2d')]);}break;case _0x85eb('0x3e'):_0x3ba160=as[_0x85eb('0x7a')]('me',null,_0x271842);_0x13c0b3[_0x1cb659](_0x3ba160[_0x85eb('0x7c')],_0x3ba160[_0x85eb('0x6f')][_0x85eb('0x7d')],_0x3ba160[_0x85eb('0x6f')][_0x85eb('0x2d')]);break;}}else{var _0x3ba160=as[_0x85eb('0x7a')](_0x46e5d3,_0xdaf2fe[_0x85eb('0x7b')],_0x271842);_0x13c0b3[_0x1cb659](_0x3ba160[_0x85eb('0x7c')],_0x3ba160['value'][_0x85eb('0x7d')],_0x3ba160['value'][_0x85eb('0x2d')]);}}}else{var _0x2346b1=_(_0x469639[_0x85eb('0x4b')])[_0x85eb('0x4c')]()[_0x85eb('0x40')](function(_0x3de724){return _[_0x85eb('0x82')](_0x1b77b3,[_0x85eb('0x3b'),_0x3de724])?_0x3de724:undefined;})[_0x85eb('0x83')]()['value']();if(!_[_0x85eb('0x84')](_0x2346b1)){_0x2346b1[_0x85eb('0x43')](function(_0x2d795b){if(_0x2d795b===_0x85eb('0x85')){_0x40d846[_0x85eb('0x56')]('i.ChatWebsiteId\x20IN\x20?',[][_0x85eb('0x86')](_0x469639['query'][_0x2d795b]));}else if(_0x2d795b===_0x85eb('0x87')){var _0x330c2b=JSON[_0x85eb('0x88')](_0x469639['query'][_0x2d795b])[_0x85eb('0x89')];var _0x2e358d=JSON[_0x85eb('0x88')](_0x469639['query'][_0x2d795b])['$lte'];_0x40d846[_0x85eb('0x56')](_0x85eb('0x8a'),_0x330c2b,_0x2e358d);}else{if(_0x469639[_0x85eb('0x4b')][_0x2d795b]===_0x85eb('0x8b')){_0x40d846['where']('i.'+_0x2d795b+_0x85eb('0x8c'));}else{_0x40d846['where']('i.'+_0x2d795b+_0x85eb('0x8d'),_0x469639[_0x85eb('0x4b')][_0x2d795b]);}}});}if(_0x469639[_0x85eb('0x4b')][_0x85eb('0x8e')]){if(_0x469639[_0x85eb('0x4b')][_0x85eb('0x8e')]==0x1){_0x40d846['having'](_0x85eb('0x8f'));}else{_0x40d846['having'](_0x85eb('0x90'));}}if(_0x469639[_0x85eb('0x4b')][_0x85eb('0x91')]){_0x15d4a7=_[_0x85eb('0x92')](_0x469639[_0x85eb('0x4b')][_0x85eb('0x91')])?_0x469639[_0x85eb('0x4b')][_0x85eb('0x91')]:new Array(_0x469639[_0x85eb('0x4b')]['tag']);_0x15d4a7[_0x85eb('0x43')](function(_0xd0c1d4){_0x5a729e['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xd0c1d4+',%');});}if(_0x469639['query'][_0x85eb('0x93')]){var _0x4a5e00=_0x469639[_0x85eb('0x4b')]['filter'][_0x85eb('0x94')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x85eb('0x95')](_0x4a5e00)){_0x13c0b3['or'](_0x85eb('0x96'),_0x4a5e00+'%');}else{_0x13c0b3['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x85eb('0x97')](_0x4a5e00))['or'](_0x85eb('0x98'),_0x4a5e00+'%');}}}_0x40d846['where'](_0x13c0b3);_0x40d846[_0x85eb('0x99')](_0x85eb('0x9a'));var _0xf076af={'type':db[_0x85eb('0x9b')]['QueryTypes'][_0x85eb('0x9c')],'raw':!![]};var _0x53ccc5=_0x40d846[_0x85eb('0x9d')]();_0x53ccc5[_0x85eb('0x58')](_0x85eb('0x9a'));_0x53ccc5['field'](_0x85eb('0x9e'),_0x85eb('0x9f'));if(_0x3a06af[_0x85eb('0x54')]){_0x3a06af['order'][_0x85eb('0x43')](function(_0x5eb629){var _0x26cc46=_0x5eb629[0x0]===_0x85eb('0xa0')?_0x5eb629[0x0]:'i.'+_0x5eb629[0x0];_0x40d846[_0x85eb('0x54')](_0x26cc46,_0x5eb629[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x15d4a7)){_0x40d846['having'](_0x5a729e);_0x53ccc5[_0x85eb('0x56')](_0x85eb('0xa1'),_0x15d4a7);}BPromise[_0x85eb('0xa2')]()['then'](function(){if(!_0x76a9c6){if(_0x469639[_0x85eb('0x4b')][_0x85eb('0x85')])return;_0x53ccc5[_0x85eb('0x56')](_0x85eb('0xa3'));_0x40d846[_0x85eb('0x56')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x469639['user'][_0x85eb('0xa4')]!==_0x85eb('0xa5'))return;return _0x469639['user'][_0x85eb('0xa6')]({'attributes':['id'],'raw':!![]})[_0x85eb('0x22')](function(_0x3bc357){if(_[_0x85eb('0x84')](_0x3bc357)){_0x53ccc5[_0x85eb('0x56')](_0x85eb('0xa7'));_0x40d846[_0x85eb('0x56')](_0x85eb('0xa7'));}else{_0x53ccc5[_0x85eb('0x56')](_0x85eb('0xa8'),_[_0x85eb('0x40')](_0x3bc357,'id'));_0x40d846[_0x85eb('0x56')](_0x85eb('0xa8'),_[_0x85eb('0x40')](_0x3bc357,'id'));}});})[_0x85eb('0x22')](function(){if(_0x469639['user'][_0x85eb('0xa4')]===_0x85eb('0xa5')&&!_0x76a9c6&&!_0x469639[_0x85eb('0x4b')][_0x85eb('0x85')])return[];return db[_0x85eb('0xa9')][_0x85eb('0x4b')](_0x53ccc5[_0x85eb('0xaa')](),_0xf076af);})[_0x85eb('0x22')](function(_0x2c0ab5){_0x5d90cc[_0x85eb('0x31')]=_0x2c0ab5['length'];if(_0x5d90cc[_0x85eb('0x31')]===0x0)return[];return db[_0x85eb('0xa9')][_0x85eb('0x4b')](_0x5ed98a[_0x85eb('0xaa')](),_0xf076af)['then'](function(_0x2caf89){_0x52996f=_[_0x85eb('0xab')](_0x2caf89,'id');_0xf076af=_[_0x85eb('0xac')](_0xf076af,{'model':db[_0x85eb('0x46')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x469639[_0x85eb('0x4b')][_0x85eb('0x50')]){_0x3a06af['attributes'][_0x85eb('0x43')](function(_0x36dbb1){_0x40d846[_0x85eb('0x58')]('i.'+_0x36dbb1);});}else{_0x40d846['field'](_0x85eb('0x9e'),_0x85eb('0x9f'));_0x40d846[_0x85eb('0x58')](_0x85eb('0xad'),_0x85eb('0xae'));_0x40d846[_0x85eb('0x58')](_0x85eb('0xaf'),_0x85eb('0xb0'));_0x40d846['field'](_0x85eb('0xb1'),_0x85eb('0xa0'));_0x40d846['field']('i.*');_0x40d846[_0x85eb('0x58')]('c.firstName',_0x85eb('0xb2'));_0x40d846[_0x85eb('0x58')](_0x85eb('0xb3'),_0x85eb('0xb4'));_0x40d846['field']('c.email',_0x85eb('0xb5'));_0x40d846['field'](_0x85eb('0xb6'),_0x85eb('0xb7'));_0x40d846[_0x85eb('0x58')](_0x85eb('0xb8'),'Contact.mobile');_0x40d846['field'](_0x85eb('0xb9'),_0x85eb('0xba'));_0x40d846[_0x85eb('0x58')]('o.fullname','Owner.fullname');_0x40d846[_0x85eb('0x58')](_0x85eb('0xbb'),_0x85eb('0xbc'));_0x40d846[_0x85eb('0x58')](_0x85eb('0xbd'),_0x85eb('0x41'));}if(_0x3a06af[_0x85eb('0x30')])_0x40d846[_0x85eb('0x30')](_0x3a06af[_0x85eb('0x30')]);if(_0x3a06af[_0x85eb('0x2e')])_0x40d846[_0x85eb('0x2e')](_0x3a06af['offset']);return db[_0x85eb('0xa9')][_0x85eb('0x4b')](_0x40d846['toString'](),_0xf076af);})[_0x85eb('0x22')](function(_0x3c8e3e){if(_0x3c8e3e[_0x85eb('0x51')]>0x0)_0x178d76[_0x85eb('0x56')](_0x85eb('0xbe'),_[_0x85eb('0x40')](_0x3c8e3e,'id'));return db['sequelize']['query'](_0x178d76[_0x85eb('0xaa')](),_0xf076af)['then'](function(_0x2f1ff1){var _0x5596c1=_[_0x85eb('0xbf')](_0x2f1ff1,_0x85eb('0xc0'));var _0x5e8478=[];_0x3c8e3e['forEach'](function(_0x119f69){_0x5e8478[_0x85eb('0xc1')](updateChatInteraction(_0x119f69,_0x52996f,_0x5596c1));});return BPromise['all'](_0x5e8478);});});})[_0x85eb('0x22')](function(_0x2e44b5){_0x5d90cc[_0x85eb('0xc2')]=_0x2e44b5;return _0x5d90cc;})['then'](respondWithFilteredResult(_0x540c7a,_0x3a06af))['catch'](handleError(_0x540c7a,null));};exports[_0x85eb('0xc3')]=function(_0x3a8d0d,_0x189733){var _0x422d33={'raw':![],'where':{'id':_0x3a8d0d[_0x85eb('0xc4')]['id']}},_0x1d695c={};_0x1d695c[_0x85eb('0x4a')]=_[_0x85eb('0x4c')](db[_0x85eb('0x46')][_0x85eb('0x47')]);_0x1d695c['query']=_[_0x85eb('0x4c')](_0x3a8d0d['query']);_0x1d695c[_0x85eb('0x4d')]=_[_0x85eb('0x4f')](_0x1d695c[_0x85eb('0x4a')],_0x1d695c[_0x85eb('0x4b')]);_0x422d33[_0x85eb('0x4e')]=_['intersection'](_0x1d695c[_0x85eb('0x4a')],qs[_0x85eb('0x50')](_0x3a8d0d[_0x85eb('0x4b')]['fields']));_0x422d33[_0x85eb('0x4e')]=_0x422d33[_0x85eb('0x4e')][_0x85eb('0x51')]?_0x422d33[_0x85eb('0x4e')]:_0x1d695c[_0x85eb('0x4a')];if(_0x3a8d0d[_0x85eb('0x4b')][_0x85eb('0xc5')]){_0x422d33[_0x85eb('0xc6')]=[{'all':!![]}];}_0x422d33=_[_0x85eb('0xac')]({},_0x422d33,_0x3a8d0d[_0x85eb('0xc7')]);return db[_0x85eb('0x46')][_0x85eb('0x6e')](_0x422d33)[_0x85eb('0x22')](handleEntityNotFound(_0x189733,null))[_0x85eb('0x22')](respondWithResult(_0x189733,null))[_0x85eb('0x44')](handleError(_0x189733,null));};exports[_0x85eb('0xc8')]=function(_0x576bc0,_0x364f29){return db[_0x85eb('0x46')][_0x85eb('0xc8')](_0x576bc0[_0x85eb('0x3e')],{})[_0x85eb('0x22')](respondWithResult(_0x364f29,0xc9))[_0x85eb('0x44')](handleError(_0x364f29,null));};exports[_0x85eb('0x38')]=function(_0x55255d,_0x419f52){if(_0x55255d[_0x85eb('0x3e')]['id']){delete _0x55255d['body']['id'];}return db[_0x85eb('0x46')]['find']({'where':{'id':_0x55255d[_0x85eb('0xc4')]['id']}})[_0x85eb('0x22')](handleEntityNotFound(_0x419f52,null))[_0x85eb('0x22')](saveUpdates(_0x55255d[_0x85eb('0x3e')],null))[_0x85eb('0x22')](respondWithResult(_0x419f52,null))[_0x85eb('0x44')](handleError(_0x419f52,null));};exports[_0x85eb('0x39')]=function(_0x1233be,_0x5906d2){return db['ChatInteraction'][_0x85eb('0x6e')]({'where':{'id':_0x1233be[_0x85eb('0xc4')]['id']}})[_0x85eb('0x22')](handleEntityNotFound(_0x5906d2,null))[_0x85eb('0x22')](removeEntity(_0x5906d2,null))['catch'](handleError(_0x5906d2,null));};exports[_0x85eb('0xc9')]=function(_0x2e2af5,_0x3d2e7d){return db['ChatInteraction'][_0x85eb('0xc9')]()[_0x85eb('0x22')](respondWithResult(_0x3d2e7d,null))[_0x85eb('0x44')](handleError(_0x3d2e7d,null));};exports['createVidaooSession']=function(_0x1fa8f6,_0x38f314){var _0x2a355b=_0x1fa8f6['params']['id'];var _0x18404c;var _0x466d54;var _0x404fef;return db[_0x85eb('0x46')][_0x85eb('0xca')]({'where':{'id':_0x2a355b}})[_0x85eb('0x22')](function(_0x3bb3e5){_0x18404c=_0x3bb3e5;return db[_0x85eb('0xcb')][_0x85eb('0xca')]({'where':{'id':_0x3bb3e5['ChatWebsiteId']},'attributes':['id',_0x85eb('0xcc'),_0x85eb('0xcd'),_0x85eb('0xce'),_0x85eb('0xcf'),_0x85eb('0xd0')],'raw':!![]});})[_0x85eb('0x22')](function(_0x5c80b1){if(_0x5c80b1&&_0x5c80b1['vidaooApiKey']&&_0x5c80b1[_0x85eb('0xcd')]){_0x466d54=_0x5c80b1;var _0x3b0878={'interaction':{'id':_0x2a355b},'agent':{'id':_0x1fa8f6[_0x85eb('0xd1')]['id'],'name':_0x1fa8f6[_0x85eb('0xd1')][_0x85eb('0x3b')],'fullname':_0x1fa8f6[_0x85eb('0xd1')][_0x85eb('0xd2')],'email':_0x1fa8f6['user'][_0x85eb('0xd3')]},'contact':_0x1fa8f6[_0x85eb('0x3e')]['contact'],'account':_0x1fa8f6[_0x85eb('0x3e')][_0x85eb('0xd4')]};var _0x1a5c26={'rejectUnauthorized':![],'method':_0x85eb('0xd5'),'url':_0x85eb('0xd6'),'headers':{'X-APIKEY':_0x5c80b1[_0x85eb('0xcc')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x1fa8f6[_0x85eb('0xd1')][_0x85eb('0xd3')]],'buttons':null,'topic':_0x466d54[_0x85eb('0xce')],'note':_['isNull'](_0x466d54['vidaooNote'])?null:getMustacheRender(_0x466d54['vidaooNote'],_0x3b0878),'metadata':null},'redirect':_0x85eb('0xd7'),'json':!![]};try{if(!_[_0x85eb('0xd8')](_0x466d54[_0x85eb('0xd0')])){var _0x413509=getMustacheRender(_0x466d54[_0x85eb('0xd0')],_0x3b0878);var _0x368f63=JSON[_0x85eb('0x88')](_0x413509);_0x1a5c26[_0x85eb('0x3e')][_0x85eb('0xd9')]=_0x368f63;}}catch(_0x2305a9){throw new db['Sequelize'][(_0x85eb('0xda'))](_0x85eb('0xdb'));}return rp(_0x1a5c26);}else{throw new db[(_0x85eb('0x9b'))][(_0x85eb('0xda'))](_0x85eb('0xdc'));}})[_0x85eb('0x22')](function(_0x495b8f){_0x404fef=_0x495b8f;if(_0x404fef['id']){var _0x1bbe41={'body':_0x404fef['join_url'],'ChatWebsiteId':_0x466d54['id'],'ChatInteractionId':_0x18404c['id'],'direction':_0x85eb('0xdd'),'UserId':_0x1fa8f6['user']['id']};return db[_0x85eb('0xde')][_0x85eb('0xc8')](_0x1bbe41,{});}else{throw new db[(_0x85eb('0x9b'))][(_0x85eb('0xda'))](_0x85eb('0xdf'));}})[_0x85eb('0x22')](function(){return _0x18404c[_0x85eb('0xe0')]({'vidaooSessionId':_0x404fef['id']});})[_0x85eb('0x22')](respondWithResult(_0x38f314,null))['catch'](handleError(_0x38f314,null));};exports['customUpdate']=function(_0x1c0550,_0x19261b){if(_0x1c0550[_0x85eb('0x3e')]['id']){delete _0x1c0550[_0x85eb('0x3e')]['id'];}return db[_0x85eb('0x46')]['find']({'where':{'id':_0x1c0550[_0x85eb('0xc4')]['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0x85eb('0x22')](handleEntityNotFound(_0x19261b,null))[_0x85eb('0x22')](saveUpdates(_0x1c0550['body'],null))[_0x85eb('0x22')](respondWithResult(_0x19261b,null))[_0x85eb('0x44')](handleError(_0x19261b,null));};exports[_0x85eb('0xe1')]=function(_0x643bd3,_0x22cdc1,_0x490d17){if(_0x643bd3[_0x85eb('0x3e')]['id']){delete _0x643bd3[_0x85eb('0x3e')]['id'];}return db[_0x85eb('0x46')][_0x85eb('0x6e')]({'where':{'id':_0x643bd3[_0x85eb('0xc4')]['id']}})[_0x85eb('0x22')](function(_0x452460){if(!_0x452460){logger[_0x85eb('0x28')](_0x85eb('0xe2'),_0x85eb('0xe1'),0x194,'entity\x20not\x20found');_0x22cdc1['sendStatus'](0x194);}else{if(_0x452460['UserId']){throw new db[(_0x85eb('0x9b'))][(_0x85eb('0xda'))](_0x85eb('0xe3'));}}return _0x452460;})['then'](function(_0x2d3772){if(_0x2d3772){return _0x2d3772[_0x85eb('0x38')]({'closed':_0x643bd3['body'][_0x85eb('0xe4')],'disposition':_0x643bd3[_0x85eb('0x3e')][_0x85eb('0xe5')]})[_0x85eb('0x22')](function(_0x521580){return _0x521580;});}})[_0x85eb('0x22')](function(_0x38fd1b){return respondWithRpcPromise(_0x85eb('0xe6'),_0x85eb('0xe1'),_0x643bd3[_0x85eb('0x3e')],client9004);})[_0x85eb('0x22')](respondWithResult(_0x22cdc1,null))[_0x85eb('0x44')](handleError(_0x22cdc1,null));};exports[_0x85eb('0xe7')]=function(_0x518eda,_0x299d7b,_0x120553){_0x518eda['body'][_0x85eb('0x3b')]=_0x518eda['file'][_0x85eb('0xe8')];_0x518eda[_0x85eb('0x3e')][_0x85eb('0xe9')]=_0x518eda[_0x85eb('0xea')][_0x85eb('0xeb')];_0x518eda['body'][_0x85eb('0x7b')]=_0x518eda['file']['mimetype'];return db[_0x85eb('0xec')][_0x85eb('0xc8')](_0x518eda['body'])[_0x85eb('0x22')](respondWithResult(_0x299d7b,0xc9))['catch'](handleError(_0x299d7b,null));};exports[_0x85eb('0xed')]=function(_0x36a522,_0x437908,_0xd0d358){return db[_0x85eb('0x46')][_0x85eb('0xca')]({'where':{'id':_0x36a522[_0x85eb('0xc4')]['id']},'raw':!![]})[_0x85eb('0x22')](handleEntityNotFound(_0x437908,null))['then'](function(_0x5122fc){if(_0x5122fc){if(_0x5122fc[_0x85eb('0xe4')]){return _0x437908[_0x85eb('0x2c')](0x193)[_0x85eb('0x34')]({'status':0x193,'message':_0x85eb('0xee')});}return db[_0x85eb('0xec')][_0x85eb('0xca')]({'where':{'id':_0x36a522[_0x85eb('0x4b')][_0x85eb('0xef')]},'raw':!![]})[_0x85eb('0x22')](handleEntityNotFound(_0x437908,null));}})[_0x85eb('0x22')](function(_0x2785e5){if(_0x2785e5){var _0x31422d=_0x2785e5[_0x85eb('0xf0')]!==null;var _0x4fd2c5=path[_0x85eb('0xf1')](config[_0x85eb('0xf2')],'server/files/attachments/');if(_0x31422d){_0x4fd2c5=path['join'](_0x4fd2c5,'offline-chat/');}var _0x1f8971=path[_0x85eb('0xf1')](_0x4fd2c5,_0x2785e5[_0x85eb('0xe9')]);return _0x437908[_0x85eb('0xf3')](_0x1f8971);}})['catch'](handleError(_0x437908,null));};exports[_0x85eb('0xf4')]=function(_0x8e8898,_0x2fb509){var _0x39bd74=null;var _0x3818db=null;var _0x529048=null;var _0x242488=null;if(_0x8e8898[_0x85eb('0x3e')]['id']){delete _0x8e8898['body']['id'];}if(_0x8e8898[_0x85eb('0x3e')][_0x85eb('0xf5')]){_0x242488=path[_0x85eb('0xf1')](config[_0x85eb('0xf2')],_0x85eb('0xf6'),util[_0x85eb('0xf7')](_0x85eb('0xf8'),Date[_0x85eb('0xf9')]()));_0x8e8898['body']['pathTranscript']=_0x242488;}return db['ChatInteraction'][_0x85eb('0x6e')]({'where':{'id':_0x8e8898['params']['id']},'include':[{'model':db[_0x85eb('0xde')],'as':_0x85eb('0xfa'),'include':[{'model':db[_0x85eb('0x80')],'as':_0x85eb('0x80')}]}]})[_0x85eb('0x22')](handleEntityNotFound(_0x2fb509,null))[_0x85eb('0x22')](saveUpdates(_0x8e8898['body'],null))[_0x85eb('0x22')](function(_0x3a276c){if(_0x3a276c){_0x39bd74=_0x3a276c;return db[_0x85eb('0xcb')][_0x85eb('0x6e')]({'where':{'id':_0x39bd74[_0x85eb('0x85')]}});}})[_0x85eb('0x22')](function(_0x6c7095){if(_0x6c7095){_0x529048=_0x6c7095;return db[_0x85eb('0xfb')][_0x85eb('0x6e')]({'where':{'id':_0x39bd74['ContactId']}});}})[_0x85eb('0x22')](function(_0x3aec49){if(_0x3aec49){_0x3818db=_0x3aec49;if(_0x242488){var _0x4c8ad6=null;for(var _0x20cbea=0x1;_0x20cbea<_0x39bd74[_0x85eb('0xfa')][_0x85eb('0x51')];++_0x20cbea){_0x4c8ad6=_0x39bd74[_0x85eb('0xfa')][_0x20cbea];var _0x401936=_0x4c8ad6[_0x85eb('0x81')]?util['format'](_0x85eb('0xfc'),_0x529048[_0x85eb('0xfd')],_0x4c8ad6['UserId']):'System';var _0x4660b6=_0x8e8898[_0x85eb('0x3e')]['customer']||util[_0x85eb('0xf7')](_0x85eb('0xfc'),'Visitor',_0x4c8ad6[_0x85eb('0x79')]);switch(_0x529048[_0x85eb('0xfe')]){case _0x85eb('0xff'):_0x401936=_0x4c8ad6[_0x85eb('0x81')]?util[_0x85eb('0xf7')]('%s%d',_0x529048['agentAlias'],_0x4c8ad6[_0x85eb('0x81')]):_0x85eb('0x100');break;case _0x85eb('0x101'):_0x401936=_0x4c8ad6[_0x85eb('0x81')]?_0x4c8ad6[_0x85eb('0x80')][_0x85eb('0x102')]||_0x4c8ad6[_0x85eb('0x80')]['fullname']:_0x85eb('0x100');break;case _0x85eb('0x103'):_0x401936=_0x4c8ad6[_0x85eb('0x81')]?_0x4c8ad6[_0x85eb('0x80')][_0x85eb('0xd2')]:_0x85eb('0x100');break;default:_0x401936=_0x4c8ad6[_0x85eb('0x81')]?util[_0x85eb('0xf7')](_0x85eb('0xfc'),_0x529048[_0x85eb('0xfd')],_0x4c8ad6['UserId']):_0x85eb('0x100');}var _0x2e7563=util[_0x85eb('0xf7')](_0x85eb('0x104'),moment(_0x4c8ad6[_0x85eb('0x87')])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x4c8ad6[_0x85eb('0x105')]==='in'?_0x4660b6:_0x401936,_0x4c8ad6[_0x85eb('0x3e')]);if(!_0x4c8ad6[_0x85eb('0x106')]){fs[_0x85eb('0x107')](_0x242488,_0x2e7563);}}return db[_0x85eb('0x108')][_0x85eb('0xca')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x85eb('0x109'),'raw':!![]}]});}}})[_0x85eb('0x22')](function(_0x113c06){if(_0x113c06&&_0x113c06['Smtp']&&_0x8e8898[_0x85eb('0x3e')]){var _0x54e411={'tls':{'rejectUnauthorized':![]}};if(_0x113c06[_0x85eb('0x109')]['service']){_0x54e411[_0x85eb('0x10a')]=_0x113c06[_0x85eb('0x109')][_0x85eb('0x10a')];}else{_0x54e411['host']=_0x113c06[_0x85eb('0x109')][_0x85eb('0x10b')];_0x54e411[_0x85eb('0x10c')]=_0x113c06[_0x85eb('0x109')]['port'];_0x54e411[_0x85eb('0x10d')]=_0x113c06[_0x85eb('0x109')]['secure'];}if(_0x113c06[_0x85eb('0x109')][_0x85eb('0x10e')]){_0x54e411[_0x85eb('0x10f')]={'user':_0x113c06['Smtp']['user'],'pass':_0x113c06[_0x85eb('0x109')][_0x85eb('0x110')]};}return respondWithRpcPromise(_0x85eb('0x111'),_0x85eb('0x112'),{'account':_0x54e411,'message':{'from':util[_0x85eb('0xf7')]('\x22%s\x22\x20<%s>',_0x113c06[_0x85eb('0x3b')],_0x113c06[_0x85eb('0xd3')]||_0x113c06['Smtp'][_0x85eb('0xd1')]),'to':_0x8e8898[_0x85eb('0x3e')][_0x85eb('0xf5')],'subject':_0x85eb('0x113'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x8e8898[_0x85eb('0x3e')][_0x85eb('0xf5')]),'attachments':[{'path':_0x242488}]}})['then'](function(){return _0x39bd74;})['catch'](function(_0x3c794c){console[_0x85eb('0x28')](_0x3c794c);});}else{return _0x39bd74;}})[_0x85eb('0x22')](respondWithStatusCode(_0x2fb509,0xc8))['catch'](handleError(_0x2fb509,null));};exports[_0x85eb('0x114')]=function(_0x1bdbc5,_0x4edc7d,_0x32222c){return db[_0x85eb('0xde')][_0x85eb('0x6e')]({'where':{'id':_0x1bdbc5[_0x85eb('0xc4')]['id']}})[_0x85eb('0x22')](handleEntityNotFound(_0x4edc7d,null))[_0x85eb('0x22')](function(_0x52c186){if(_0x52c186){return _0x52c186[_0x85eb('0x114')](_0x1bdbc5[_0x85eb('0x3e')][_0x85eb('0x115')],_['omit'](_0x1bdbc5['body'],['ids','id'])||{});}})[_0x85eb('0x22')](respondWithResult(_0x4edc7d,null))['catch'](handleError(_0x4edc7d,null));};exports[_0x85eb('0x116')]=function(_0x46a2c4,_0x1b5db9,_0x386c1a){var _0x3ed32c={'raw':![],'where':{}};var _0x3d04e7={};var _0x1e2b79={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x85eb('0xca')]({'where':{'id':_0x46a2c4[_0x85eb('0xc4')]['id']}})[_0x85eb('0x22')](handleEntityNotFound(_0x1b5db9,null))[_0x85eb('0x22')](function(_0x4307f4){if(_0x4307f4){_0x3d04e7[_0x85eb('0x4a')]=_[_0x85eb('0x4c')](db[_0x85eb('0xde')][_0x85eb('0x47')]);_0x3d04e7[_0x85eb('0x4b')]=_[_0x85eb('0x4c')](_0x46a2c4[_0x85eb('0x4b')]);_0x3d04e7[_0x85eb('0x4d')]=_[_0x85eb('0x4f')](_0x3d04e7[_0x85eb('0x4a')],_0x3d04e7['query']);_0x3ed32c[_0x85eb('0x4e')]=_[_0x85eb('0x4f')](_0x3d04e7[_0x85eb('0x4a')],qs[_0x85eb('0x50')](_0x46a2c4['query'][_0x85eb('0x50')]));_0x3ed32c[_0x85eb('0x4e')]=_0x3ed32c[_0x85eb('0x4e')][_0x85eb('0x51')]?_0x3ed32c[_0x85eb('0x4e')]:_0x3d04e7[_0x85eb('0x4a')];if(!_0x46a2c4['query']['hasOwnProperty']('nolimit')){_0x3ed32c[_0x85eb('0x30')]=qs[_0x85eb('0x30')](_0x46a2c4[_0x85eb('0x4b')]['limit']);_0x3ed32c[_0x85eb('0x2e')]=qs[_0x85eb('0x2e')](_0x46a2c4['query'][_0x85eb('0x2e')]);}_0x3ed32c[_0x85eb('0x54')]=qs[_0x85eb('0x55')](_0x46a2c4[_0x85eb('0x4b')][_0x85eb('0x55')]);_0x3ed32c[_0x85eb('0x56')]=qs[_0x85eb('0x4d')](_[_0x85eb('0x117')](_0x46a2c4[_0x85eb('0x4b')],_0x3d04e7[_0x85eb('0x4d')]));_0x3ed32c[_0x85eb('0x56')][_0x85eb('0xc0')]=_0x4307f4['id'];if(_0x46a2c4['query'][_0x85eb('0x93')]){_0x3ed32c[_0x85eb('0x56')]=_['merge'](_0x3ed32c[_0x85eb('0x56')],{'$or':_['map'](_0x3ed32c[_0x85eb('0x4e')],function(_0x2037ef){var _0x200c28={};_0x200c28[_0x2037ef]={'$like':'%'+_0x46a2c4[_0x85eb('0x4b')][_0x85eb('0x93')]+'%'};return _0x200c28;})});}if(_0x46a2c4[_0x85eb('0x4b')][_0x85eb('0x89')]){var _0xe74bd5=_0x46a2c4['query']['$gte'][_0x85eb('0x76')](',');var _0x6b9b57={};_0x6b9b57[_0xe74bd5[0x0]]={'$gte':moment(_0xe74bd5[0x1])['format'](_0x85eb('0x118'))};_0x3ed32c[_0x85eb('0x56')]=_['merge'](_0x3ed32c[_0x85eb('0x56')],_0x6b9b57);}_0x3ed32c=_[_0x85eb('0xac')]({},_0x3ed32c,_0x46a2c4[_0x85eb('0xc7')]);return db['ChatMessage'][_0x85eb('0x31')]({'where':_0x3ed32c['where']})[_0x85eb('0x22')](function(_0x5badd){_0x1e2b79[_0x85eb('0x31')]=_0x5badd;if(_0x46a2c4[_0x85eb('0x4b')]['includeAll']){_0x3ed32c[_0x85eb('0xc6')]=[{'all':!![]}];}return db[_0x85eb('0xde')][_0x85eb('0x119')](_0x3ed32c);})[_0x85eb('0x22')](function(_0x4d7d3b){_0x1e2b79[_0x85eb('0xc2')]=_0x4d7d3b;return _0x1e2b79;});}})[_0x85eb('0x22')](respondWithFilteredResult(_0x1b5db9,_0x3ed32c))[_0x85eb('0x44')](handleError(_0x1b5db9,null));};exports[_0x85eb('0x11a')]=function(_0x1bdeea,_0x37ef17,_0x54e0a2){var _0x3b205e={'where':{}},_0x37bcff={},_0x5d4a73={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x85eb('0xca')]({'where':{'id':_0x1bdeea[_0x85eb('0xc4')]['id']}})[_0x85eb('0x22')](handleEntityNotFound(_0x37ef17,null))[_0x85eb('0x22')](function(_0x17d94e){if(_0x17d94e){_0x37bcff[_0x85eb('0x4a')]=_[_0x85eb('0x4c')](db[_0x85eb('0xde')][_0x85eb('0x47')]);_0x37bcff['query']=_[_0x85eb('0x4c')](_0x1bdeea[_0x85eb('0x4b')]);_0x37bcff[_0x85eb('0x4d')]=_[_0x85eb('0x4f')](_0x37bcff[_0x85eb('0x4a')],_0x37bcff[_0x85eb('0x4b')]);_0x3b205e[_0x85eb('0x4e')]=_['intersection'](_0x37bcff[_0x85eb('0x4a')],qs[_0x85eb('0x50')](_0x1bdeea['query']['fields']));_0x3b205e[_0x85eb('0x4e')]=_0x3b205e[_0x85eb('0x4e')][_0x85eb('0x51')]?_0x3b205e[_0x85eb('0x4e')]:_0x37bcff['model'];if(!_0x1bdeea['query'][_0x85eb('0x52')]('nolimit')){_0x3b205e[_0x85eb('0x30')]=qs[_0x85eb('0x30')](_0x1bdeea[_0x85eb('0x4b')]['limit']);_0x3b205e['offset']=qs[_0x85eb('0x2e')](_0x1bdeea[_0x85eb('0x4b')][_0x85eb('0x2e')]);}_0x3b205e[_0x85eb('0x54')]=qs['sort'](_0x1bdeea[_0x85eb('0x4b')][_0x85eb('0x55')]);_0x3b205e[_0x85eb('0x56')]=qs['filters'](_[_0x85eb('0x117')](_0x1bdeea['query'],_0x37bcff['filters']));_0x3b205e[_0x85eb('0x56')][_0x85eb('0xc0')]=_0x17d94e['id'];if(_0x1bdeea[_0x85eb('0x4b')][_0x85eb('0x93')]){_0x3b205e['where']=_[_0x85eb('0xac')](_0x3b205e[_0x85eb('0x56')],{'$or':_[_0x85eb('0x40')](_0x3b205e[_0x85eb('0x4e')],function(_0x32cf84){var _0x3f7ede={};_0x3f7ede[_0x32cf84]={'$like':'%'+_0x1bdeea[_0x85eb('0x4b')]['filter']+'%'};return _0x3f7ede;})});}_0x3b205e[_0x85eb('0x56')][_0x85eb('0x106')]=![];if(_0x1bdeea[_0x85eb('0x4b')]['id']){_0x3b205e[_0x85eb('0x56')]['id']={'$gt':_0x1bdeea[_0x85eb('0x4b')]['id']};}_0x3b205e=_['merge']({},_0x3b205e,_0x1bdeea[_0x85eb('0xc7')]);return db[_0x85eb('0xde')][_0x85eb('0x31')]({'where':_0x3b205e[_0x85eb('0x56')]})['then'](function(_0x761ba8){_0x5d4a73[_0x85eb('0x31')]=_0x761ba8;_0x3b205e[_0x85eb('0xc6')]=[];if(_0x1bdeea['query'][_0x85eb('0x11b')]){_0x3b205e[_0x85eb('0xc6')][_0x85eb('0xc1')]({'model':db[_0x85eb('0x80')],'as':_0x85eb('0x80'),'attributes':['id','fullname',_0x85eb('0x102')]});}if(_0x1bdeea['query'][_0x85eb('0xc5')]){_0x3b205e['include']=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x3b205e);})['then'](function(_0x30eeb7){_0x5d4a73[_0x85eb('0xc2')]=_0x30eeb7;return _0x5d4a73;});}})['then'](respondWithFilteredResult(_0x37ef17,_0x3b205e))['catch'](handleError(_0x37ef17,null));};exports[_0x85eb('0x11c')]=function(_0x532769,_0x590d0d,_0x59fd91){return db[_0x85eb('0x46')][_0x85eb('0x6e')]({'where':{'id':_0x532769['params']['id']}})['then'](handleEntityNotFound(_0x590d0d,null))[_0x85eb('0x22')](function(_0x3971f5){if(_0x3971f5){return _0x3971f5['setTags'](_0x532769[_0x85eb('0x3e')][_0x85eb('0x115')],_[_0x85eb('0x11d')](_0x532769[_0x85eb('0x3e')],[_0x85eb('0x115'),'id'])||{})[_0x85eb('0x11e')](function(){return db[_0x85eb('0x7e')][_0x85eb('0x119')]({'attributes':['id',_0x85eb('0x3b'),_0x85eb('0x11f')],'where':{'id':_0x532769[_0x85eb('0x3e')][_0x85eb('0x115')]}});})['then'](function(_0x36ea41){socket[_0x85eb('0x120')](_0x85eb('0x121'),{'id':Number(_0x532769[_0x85eb('0xc4')]['id']),'tags':_0x36ea41||[]});return{'id':Number(_0x532769[_0x85eb('0xc4')]['id']),'tags':_0x36ea41||[]};});}})[_0x85eb('0x22')](respondWithResult(_0x590d0d,null))[_0x85eb('0x44')](handleError(_0x590d0d,null));};exports[_0x85eb('0x122')]=function(_0x1be39a,_0x2461f9,_0x356d32){return db[_0x85eb('0x46')][_0x85eb('0x6e')]({'where':{'id':_0x1be39a['params']['id']}})['then'](handleEntityNotFound(_0x2461f9,null))[_0x85eb('0x22')](function(_0x8c6dc0){if(_0x8c6dc0){return _0x8c6dc0[_0x85eb('0x122')](_0x1be39a[_0x85eb('0x4b')]['ids']);}})[_0x85eb('0x22')](respondWithStatusCode(_0x2461f9,null))[_0x85eb('0x44')](handleError(_0x2461f9,null));};exports['download']=function(_0x1f4e87,_0x1c3ed4){var _0x411f08=moment()[_0x85eb('0x123')]()['toString']();var _0x24b1f3=path[_0x85eb('0xf1')](config[_0x85eb('0xf2')],_0x85eb('0x124'),_0x85eb('0x125'),'tmp');var _0x163a17=path[_0x85eb('0xf1')](config[_0x85eb('0xf2')],_0x85eb('0x124'),_0x85eb('0x125'),'attachments');var _0x27ea02=path[_0x85eb('0xf1')](_0x24b1f3,_0x411f08);var _0x5a3a94=util[_0x85eb('0xf7')](_0x85eb('0x126'),_0x1f4e87[_0x85eb('0xc4')]['id'],_0x411f08);var _0x4675d1=path[_0x85eb('0xf1')](_0x24b1f3,_0x5a3a94);var _0x5f72cd=[];_0x5f72cd['push']({'model':db[_0x85eb('0x80')],'as':_0x85eb('0x80'),'attributes':['id',_0x85eb('0xd2')],'raw':!![]});_0x5f72cd[_0x85eb('0xc1')]({'model':db[_0x85eb('0xfb')],'as':_0x85eb('0x73'),'attributes':['id',_0x85eb('0x127'),_0x85eb('0x128')],'raw':!![]});if(_0x1f4e87['query'][_0x85eb('0x129')]){_0x5f72cd['push']({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x4d8940=[{'model':db[_0x85eb('0xde')],'as':_0x85eb('0xfa'),'attributes':['id',_0x85eb('0x3e'),_0x85eb('0x87'),'direction',_0x85eb('0x106'),_0x85eb('0x8e')],'include':_0x5f72cd}];_0x4d8940[_0x85eb('0xc1')]({'model':db[_0x85eb('0xcb')],'as':_0x85eb('0x12a'),'attributes':['id',_0x85eb('0x3b')]});_0x4d8940[_0x85eb('0xc1')]({'model':db[_0x85eb('0x80')],'as':_0x85eb('0x12b'),'attributes':['id',_0x85eb('0xd2')]});return db[_0x85eb('0x46')][_0x85eb('0x6e')]({'where':{'id':_0x1f4e87['params']['id']},'include':_0x4d8940})[_0x85eb('0x22')](handleEntityNotFound(_0x1c3ed4,null))[_0x85eb('0x22')](function(_0x38217f){if(_0x38217f){var _0x49146a=_0x38217f['get']({'plain':!![]});fs[_0x85eb('0x12c')](_0x27ea02);var _0xa82740={'channel':_0x85eb('0x12d'),'account':_0x49146a[_0x85eb('0x12a')]['name'],'agent':_0x49146a['Owner']?_0x49146a[_0x85eb('0x12b')][_0x85eb('0xd2')]:_0x85eb('0x12e'),'createdAt':moment(_0x49146a[_0x85eb('0x87')])[_0x85eb('0xf7')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x49146a[_0x85eb('0xe4')]?moment(_0x49146a[_0x85eb('0x12f')])[_0x85eb('0xf7')](_0x85eb('0x118'))[_0x85eb('0xaa')]():'','disposition':_0x49146a[_0x85eb('0xe5')],'chatInfo':{'browser':_0x49146a['browserName'],'os':_0x49146a['osName'],'referer':_0x49146a[_0x85eb('0x130')],'customerIp':_0x49146a[_0x85eb('0x131')],'customerPort':_0x49146a[_0x85eb('0x132')]?_0x49146a[_0x85eb('0x132')]:'N.A.'},'messages':_(_0x49146a['Messages'])[_0x85eb('0x133')]()['filter']({'secret':![]})[_0x85eb('0x40')](function(_0x2d1a82){if(_0x2d1a82[_0x85eb('0xec')]){var _0x188ace=path[_0x85eb('0xf1')](_0x163a17,_0x2d1a82[_0x85eb('0xec')][_0x85eb('0xe9')]);if(fs[_0x85eb('0x134')](_0x188ace)){fs['createReadStream'](_0x188ace)['pipe'](fs['createWriteStream'](path['join'](_0x27ea02,_0x2d1a82[_0x85eb('0xec')][_0x85eb('0xe9')])));}}return{'date':moment(_0x2d1a82[_0x85eb('0x87')])[_0x85eb('0xf7')](_0x85eb('0x118'))[_0x85eb('0xaa')](),'sender':_0x2d1a82[_0x85eb('0x105')]===_0x85eb('0xdd')?_0x2d1a82[_0x85eb('0x80')]?_0x2d1a82['User'][_0x85eb('0xd2')]:_0x85eb('0x100'):_0x2d1a82[_0x85eb('0x73')]['firstName']+(_0x2d1a82['Contact'][_0x85eb('0x128')]?'\x20'+_0x2d1a82['Contact']['lastName']:''),'body':_0x2d1a82[_0x85eb('0xec')]?_0x2d1a82[_0x85eb('0xec')]['basename']:_0x2d1a82['body'],'direction':_0x2d1a82[_0x85eb('0x105')]===_0x85eb('0xdd')?'A':'C','secret':_0x2d1a82[_0x85eb('0x106')],'read':_0x2d1a82['read'],'attachment':_0x2d1a82[_0x85eb('0xec')]};})[_0x85eb('0x6f')]()};return ejs[_0x85eb('0x135')](path[_0x85eb('0xf1')](config[_0x85eb('0xf2')],_0x85eb('0x124'),'views','downloadInteraction.ejs'),{'interaction':_0xa82740})[_0x85eb('0x22')](function(_0x226fbf){var _0x5f38af=path['join'](_0x27ea02,'transcript-'+_0x49146a['id']+'-'+_0x411f08+_0x85eb('0x136'));var _0x16b750={'path':_0x5f38af,'channel':_0x85eb('0x12d'),'interactionId':_0x49146a['id']};return pdf['createPdfFromHTML'](_0x226fbf,_0x16b750);})[_0x85eb('0x22')](function(){return new BPromise(function(_0x28229e,_0x46330e){zipdir(_0x27ea02,{'saveTo':_0x4675d1},function(_0x5ab7ab,_0x9be3b4){if(_0x5ab7ab)return _0x46330e(_0x5ab7ab);return _0x28229e(_0x9be3b4);});})[_0x85eb('0x22')](function(){return new BPromise(function(_0x4ee6d3,_0x42c865){rimraf(_0x27ea02,function(_0x329ba3){if(_0x329ba3)_0x42c865(_0x329ba3);return _0x4ee6d3();});});})[_0x85eb('0x22')](function(){return _0x1c3ed4['download'](_0x4675d1,_0x5a3a94,function(_0x3dc0d5){if(_0x3dc0d5){console[_0x85eb('0x137')](_0x85eb('0x138'),_0x3dc0d5);}else{fs[_0x85eb('0x139')](_0x4675d1);}});});});}else{return _0x1c3ed4[_0x85eb('0x2b')](0xc8);}})[_0x85eb('0x44')](handleError(_0x1c3ed4,null));};
\ No newline at end of file
+var _0x896e=['group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','isEmpty','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','Account.key','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','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','show','params','rawAttributes','include','options','create','update','destroy','describe','createVidaooSession','findOne','ChatWebsite','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','vidaooEscalation','email','https://api-vidaoo.xcally.com/api/v1/meetings','follow','metadata','ValidationError','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','closed','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','Unauthorized','ChatOfflineMessageId','join','root','offline-chat/','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','%s%d','System','Visitor','website_alias','agentAlias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','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','omit','ids','getMessages','hasOwnProperty','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','secret','includeAgent','includeAll','findAll','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','download','server','files','attachments','transcript-%d-%s.zip','firstName','Account','Owner','get','mkdirSync','Chat','closedAt','disposition','osName','referer','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','createWriteStream','out','lastName','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','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','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./chatInteraction.socket','register','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','name','render','merge','body','contact','account','fullname','TagIds','Tags','split','forEach','push','catch','map','ChatInteraction','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','field','color','from','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','conditions','find','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)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','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','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?'];(function(_0x4c7d38,_0xbcbd7c){var _0x48a317=function(_0x13c7c4){while(--_0x13c7c4){_0x4c7d38['push'](_0x4c7d38['shift']());}};_0x48a317(++_0xbcbd7c);}(_0x896e,0x1e9));var _0xe896=function(_0x10648d,_0x307800){_0x10648d=_0x10648d-0x0;var _0x545761=_0x896e[_0x10648d];return _0x545761;};'use strict';var emlformat=require(_0xe896('0x0'));var rimraf=require(_0xe896('0x1'));var zipdir=require(_0xe896('0x2'));var jsonpatch=require(_0xe896('0x3'));var rp=require(_0xe896('0x4'));var moment=require(_0xe896('0x5'));var BPromise=require(_0xe896('0x6'));var Mustache=require(_0xe896('0x7'));var util=require(_0xe896('0x8'));var path=require(_0xe896('0x9'));var sox=require(_0xe896('0xa'));var csv=require(_0xe896('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe896('0xc'));var _=require(_0xe896('0xd'));var squel=require(_0xe896('0xe'));var crypto=require(_0xe896('0xf'));var jsforce=require(_0xe896('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xe896('0xb'));var querystring=require(_0xe896('0x11'));var Papa=require(_0xe896('0x12'));var Redis=require('ioredis');var authService=require(_0xe896('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe896('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xe896('0x15'));var logger=require(_0xe896('0x16'))(_0xe896('0x17'));var utils=require('../../config/utils');var config=require(_0xe896('0x18'));var licenseUtil=require(_0xe896('0x19'));var db=require(_0xe896('0x1a'))['db'];config['redis']=_[_0xe896('0x1b')](config[_0xe896('0x1c')],{'host':_0xe896('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe896('0x1c')]));require(_0xe896('0x1e'))[_0xe896('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xe896('0x20')]({'port':0x232b});var client9004=jayson[_0xe896('0x21')]['http']({'port':0x232c});function respondWithRpcPromise(_0x5e78d6,_0x11f41c,_0x16e272,_0x57f04b){return new BPromise(function(_0x50d224,_0x4e062a){var _0x41cbd7=_0x57f04b||client;return _0x41cbd7[_0xe896('0x22')](_0x5e78d6,_0x16e272)[_0xe896('0x23')](function(_0x5dc89d){logger[_0xe896('0x24')](_0xe896('0x25'),_0x11f41c,_0xe896('0x26'));logger[_0xe896('0x27')](_0xe896('0x28'),_0x11f41c,_0xe896('0x26'),JSON[_0xe896('0x29')](_0x5dc89d));if(_0x5dc89d[_0xe896('0x2a')]){if(_0x5dc89d['error'][_0xe896('0x2b')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x11f41c,_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);return _0x4e062a(_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);}logger['error'](_0xe896('0x25'),_0x11f41c,_0x5dc89d['error']['message']);return _0x50d224(_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);}else{logger[_0xe896('0x24')](_0xe896('0x25'),_0x11f41c,_0xe896('0x26'));_0x50d224(_0x5dc89d[_0xe896('0x2d')][_0xe896('0x2c')]);}})['catch'](function(_0x390128){logger[_0xe896('0x2a')](_0xe896('0x25'),_0x11f41c,_0x390128);_0x4e062a(_0x390128);});});}function respondWithStatusCode(_0x569d5f,_0x26635e){_0x26635e=_0x26635e||0xcc;return function(_0xd50fe2){if(_0xd50fe2){return _0x569d5f[_0xe896('0x2e')](_0x26635e);}return _0x569d5f[_0xe896('0x2f')](_0x26635e)[_0xe896('0x30')]();};}function respondWithResult(_0x3f8ceb,_0x498341){_0x498341=_0x498341||0xc8;return function(_0x10adad){if(_0x10adad){return _0x3f8ceb[_0xe896('0x2f')](_0x498341)[_0xe896('0x31')](_0x10adad);}};}function respondWithFilteredResult(_0xbfb15b,_0xace03f){return function(_0x5e0d9b){if(_0x5e0d9b){var _0x47c268=typeof _0xace03f['offset']==='undefined'&&typeof _0xace03f['limit']===_0xe896('0x32');var _0x29a18e=_0x5e0d9b[_0xe896('0x33')];var _0x76c781=_0x47c268?0x0:_0xace03f[_0xe896('0x34')];var _0x1a6090=_0x47c268?_0x5e0d9b[_0xe896('0x33')]:_0xace03f[_0xe896('0x34')]+_0xace03f['limit'];var _0x4ce052;if(_0x1a6090>=_0x29a18e){_0x1a6090=_0x29a18e;_0x4ce052=0xc8;}else{_0x4ce052=0xce;}_0xbfb15b[_0xe896('0x2f')](_0x4ce052);return _0xbfb15b[_0xe896('0x35')](_0xe896('0x36'),_0x76c781+'-'+_0x1a6090+'/'+_0x29a18e)[_0xe896('0x31')](_0x5e0d9b);}return null;};}function patchUpdates(_0x4ddeb6){return function(_0x14ad7a){try{jsonpatch['apply'](_0x14ad7a,_0x4ddeb6,!![]);}catch(_0x57c6e8){return BPromise[_0xe896('0x37')](_0x57c6e8);}return _0x14ad7a[_0xe896('0x38')]();};}function saveUpdates(_0x266c0e,_0x4a1115){return function(_0x4d8092){if(_0x4d8092){return _0x4d8092['update'](_0x266c0e)[_0xe896('0x23')](function(_0x1493b8){return _0x1493b8;});}return null;};}function removeEntity(_0x10fa64,_0x13e8fa){return function(_0x36d2d7){if(_0x36d2d7){return _0x36d2d7['destroy']()[_0xe896('0x23')](function(){_0x10fa64[_0xe896('0x2f')](0xcc)[_0xe896('0x30')]();});}};}function handleEntityNotFound(_0x28e09c,_0x1366d0){return function(_0x2cce09){if(!_0x2cce09){_0x28e09c[_0xe896('0x2e')](0x194);}return _0x2cce09;};}function handleError(_0x3e28f0,_0x5ea3ce){_0x5ea3ce=_0x5ea3ce||0x1f4;return function(_0x42f3fb){logger[_0xe896('0x2a')](_0x42f3fb['stack']);if(_0x42f3fb[_0xe896('0x39')]){delete _0x42f3fb['name'];}_0x3e28f0[_0xe896('0x2f')](_0x5ea3ce)['send'](_0x42f3fb);};}function getMustacheRender(_0x42f445,_0x5ba71e){return Mustache[_0xe896('0x3a')](_0x42f445,_[_0xe896('0x3b')](_0x5ba71e[_0xe896('0x3c')],{'contact':_0x5ba71e[_0xe896('0x3d')],'message':_0x5ba71e[_0xe896('0x2c')],'agent':_0x5ba71e['agent'],'interaction':_0x5ba71e['interaction'],'account':_0x5ba71e[_0xe896('0x3e')]}))||'';}function getInteractionUsers(_0x2ea387,_0x387cc6){return new BPromise(function(_0x15b6c5,_0x2ff489){try{if(_0x387cc6[_0x2ea387['id']]){_0x2ea387['Users']=_['map'](_0x387cc6[_0x2ea387['id']],function(_0x127a6f){return{'id':_0x127a6f['id'],'fullname':_0x127a6f[_0xe896('0x3f')]};});}}catch(_0x5890b1){_0x2ff489(_0x5890b1);}_0x15b6c5(_0x2ea387);});}function getInteractionTags(_0x57e194,_0x19d2fd){return new BPromise(function(_0x3b1de8,_0x911adb){try{if(_0x57e194[_0xe896('0x40')]){_0x57e194[_0xe896('0x41')]=[];_0x57e194[_0xe896('0x40')][_0xe896('0x42')](',')[_0xe896('0x43')](function(_0x372c71){_0x57e194[_0xe896('0x41')][_0xe896('0x44')](_0x19d2fd[_0x372c71]);});}delete _0x57e194[_0xe896('0x40')];}catch(_0x5c00c6){_0x911adb(_0x5c00c6);}_0x3b1de8(_0x57e194);});}function updateChatInteraction(_0x1e5434,_0x143ad4,_0x59b97f){return new BPromise(function(_0x57366b,_0x5cd5a3){return getInteractionUsers(_0x1e5434,_0x59b97f)[_0xe896('0x23')](function(_0x2a354f){return getInteractionTags(_0x2a354f,_0x143ad4);})[_0xe896('0x23')](function(_0x5d1a19){_0x57366b(_0x5d1a19);})[_0xe896('0x45')](function(_0x22189c){_0x5cd5a3(_0x22189c);});});}exports['index']=function(_0x4c05ce,_0x489254){var _0x22c628={},_0x2b0273={},_0x16927a={'count':0x0,'rows':[]};var _0x402aef=_[_0xe896('0x46')](db[_0xe896('0x47')]['rawAttributes'],function(_0x125fbc){return{'name':_0x125fbc[_0xe896('0x48')],'type':_0x125fbc['type'][_0xe896('0x49')]};});_0x2b0273[_0xe896('0x4a')]=_[_0xe896('0x46')](_0x402aef,_0xe896('0x39'));_0x2b0273['query']=_[_0xe896('0x4b')](_0x4c05ce[_0xe896('0x4c')]);_0x2b0273[_0xe896('0x4d')]=_[_0xe896('0x4e')](_0x2b0273[_0xe896('0x4a')],_0x2b0273[_0xe896('0x4c')]);_0x22c628['attributes']=_[_0xe896('0x4e')](_0x2b0273['model'],qs[_0xe896('0x4f')](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x4f')]));_0x22c628[_0xe896('0x50')]=_0x22c628[_0xe896('0x50')][_0xe896('0x51')]?_0x22c628['attributes']:_0x2b0273[_0xe896('0x4a')];if(!_0x4c05ce[_0xe896('0x4c')]['hasOwnProperty'](_0xe896('0x52'))){_0x22c628[_0xe896('0x53')]=qs['limit'](_0x4c05ce[_0xe896('0x4c')]['limit']);_0x22c628[_0xe896('0x34')]=qs[_0xe896('0x34')](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x34')]);}_0x22c628[_0xe896('0x54')]=qs['sort'](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x55')]);_0x22c628[_0xe896('0x56')]=qs['filters'](_[_0xe896('0x57')](_0x4c05ce['query'],_0x2b0273['filters']),_0x402aef);var _0x388375=[];var _0x20fe4f=squel['select']()[_0xe896('0x58')]('id')[_0xe896('0x58')]('name')['field'](_0xe896('0x59'))[_0xe896('0x5a')]('tools_tags');var _0x1d18f6=squel[_0xe896('0x5b')]()[_0xe896('0x58')](_0xe896('0x5c'))[_0xe896('0x58')](_0xe896('0x5d'))[_0xe896('0x58')](_0xe896('0x5e'))[_0xe896('0x5a')](_0xe896('0x5f'),'ui')[_0xe896('0x60')]('users','u',_0xe896('0x61'));var _0x2a23a2=squel[_0xe896('0x5b')]()[_0xe896('0x5a')](_0xe896('0x62'),'i')[_0xe896('0x60')](_0xe896('0x63'),'c',_0xe896('0x64'))[_0xe896('0x60')](_0xe896('0x65'),'o',_0xe896('0x66'))[_0xe896('0x60')]('chat_websites','a',_0xe896('0x67'))[_0xe896('0x60')](_0xe896('0x68'),'me','me.ChatInteractionId\x20=\x20i.id')['left_join']('chat_interaction_has_tags','it',_0xe896('0x69'))[_0xe896('0x60')](_0xe896('0x6a'),'t',_0xe896('0x6b'));var _0x50c910=squel[_0xe896('0x6c')]();var _0x28396c=[];var _0x57ed84=squel[_0xe896('0x6c')]();var _0x5d6c1c;if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x6d')]){_0x5d6c1c=as['parseSearch'](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x6d')]);var _0x568d89=_0x5d6c1c['sqlOperator'];for(var _0x2a5e68=0x0;_0x2a5e68<_0x5d6c1c[_0xe896('0x6e')][_0xe896('0x51')];_0x2a5e68++){var _0x11291a=_0x5d6c1c[_0xe896('0x6e')][_0x2a5e68];var _0x4e4092='i';var _0xdadb92=_[_0xe896('0x6f')](_0x402aef,[_0xe896('0x39'),_0x11291a[_0xe896('0x58')]]);if(!_0xdadb92){switch(_0x11291a['field']){case'unreadMessages':if(_0x11291a[_0xe896('0x70')]==0x1){_0x2a23a2[_0xe896('0x71')]('`'+_0x11291a['field']+_0xe896('0x72'));}else{_0x2a23a2['having']('`'+_0x11291a[_0xe896('0x58')]+_0xe896('0x73'));}break;case _0xe896('0x74'):if(_0x11291a[_0xe896('0x75')]===_0xe896('0x76')){if(_0x11291a[_0xe896('0x70')][_0xe896('0x42')]('\x20')[_0xe896('0x51')]>0x1){_0x50c910[_0x568d89](_0xe896('0x77'),qs[_0xe896('0x78')](_0x11291a[_0xe896('0x70')]),null);}else{var _0x3248e6='%'+_0x11291a[_0xe896('0x70')]+'%';_0x50c910[_0x568d89](_0xe896('0x79'),_0x3248e6,_0x3248e6,_0x3248e6);}}else{_0xdadb92=_[_0xe896('0x6f')](_0x402aef,[_0xe896('0x39'),_0xe896('0x7a')]);_0x11291a[_0xe896('0x58')]=_0xe896('0x7a');_0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92[_0xe896('0x7c')],_0x11291a);_0x50c910[_0x568d89](_0x1c118e[_0xe896('0x7d')],_0x1c118e['value']['start'],_0x1c118e[_0xe896('0x70')][_0xe896('0x30')]);}break;case'Tag':var _0x1165ad=_0x11291a[_0xe896('0x70')][_0xe896('0x42')](',')[_0xe896('0x46')](function(_0x19781b){return Number(_0x19781b);});_0x1165ad[_0xe896('0x43')](function(_0x475459){_0x57ed84['or'](_0xe896('0x7e'),'%,'+_0x475459+',%');});_0x28396c=_[_0xe896('0x7f')](_0x28396c,_0x1165ad);break;case _0xe896('0x80'):if(_0x11291a[_0xe896('0x75')]==='$substring'){_0x50c910[_0x568d89](_0xe896('0x81'),'%'+_0x11291a[_0xe896('0x70')]+'%',null);}else{_0xdadb92=_['find'](_0x402aef,[_0xe896('0x39'),'UserId']);_0x11291a['field']=_0xe896('0x82');_0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92['type'],_0x11291a);_0x50c910[_0x568d89](_0x1c118e['text'],_0x1c118e[_0xe896('0x70')]['start'],_0x1c118e['value'][_0xe896('0x30')]);}break;case _0xe896('0x3c'):_0x1c118e=as[_0xe896('0x7b')]('me',null,_0x11291a);_0x50c910[_0x568d89](_0x1c118e['text'],_0x1c118e[_0xe896('0x70')][_0xe896('0x83')],_0x1c118e[_0xe896('0x70')]['end']);break;}}else{var _0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92[_0xe896('0x7c')],_0x11291a);_0x50c910[_0x568d89](_0x1c118e[_0xe896('0x7d')],_0x1c118e['value'][_0xe896('0x83')],_0x1c118e[_0xe896('0x70')][_0xe896('0x30')]);}}}else{var _0x4fcd37=_(_0x4c05ce['query'])[_0xe896('0x4b')]()[_0xe896('0x46')](function(_0x4c5091){return _[_0xe896('0x84')](_0x402aef,[_0xe896('0x39'),_0x4c5091])?_0x4c5091:undefined;})[_0xe896('0x85')]()[_0xe896('0x70')]();if(!_['isEmpty'](_0x4fcd37)){_0x4fcd37[_0xe896('0x43')](function(_0x234a3a){if(_0x234a3a===_0xe896('0x86')){_0x2a23a2[_0xe896('0x56')](_0xe896('0x87'),[][_0xe896('0x88')](_0x4c05ce['query'][_0x234a3a]));}else if(_0x234a3a==='createdAt'){var _0x48b523=JSON[_0xe896('0x89')](_0x4c05ce[_0xe896('0x4c')][_0x234a3a])[_0xe896('0x8a')];var _0x270121=JSON[_0xe896('0x89')](_0x4c05ce[_0xe896('0x4c')][_0x234a3a])[_0xe896('0x8b')];_0x2a23a2['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x48b523,_0x270121);}else{if(_0x4c05ce[_0xe896('0x4c')][_0x234a3a]==='null'){_0x2a23a2[_0xe896('0x56')]('i.'+_0x234a3a+'\x20IS\x20NULL');}else{_0x2a23a2[_0xe896('0x56')]('i.'+_0x234a3a+'\x20=\x20?',_0x4c05ce[_0xe896('0x4c')][_0x234a3a]);}}});}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8c')]){if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8c')]==0x1){_0x2a23a2['having'](_0xe896('0x8d'));}else{_0x2a23a2[_0xe896('0x71')](_0xe896('0x8e'));}}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8f')]){_0x28396c=_[_0xe896('0x90')](_0x4c05ce[_0xe896('0x4c')]['tag'])?_0x4c05ce[_0xe896('0x4c')]['tag']:new Array(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8f')]);_0x28396c[_0xe896('0x43')](function(_0x503131){_0x57ed84['or'](_0xe896('0x7e'),'%,'+_0x503131+',%');});}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x91')]){var _0x1913b2=_0x4c05ce[_0xe896('0x4c')][_0xe896('0x91')][_0xe896('0x92')]('\x5c','\x5c\x5c')[_0xe896('0x92')](/'/g,'\x27\x27');if(qs[_0xe896('0x93')](_0x1913b2)){_0x50c910['or'](_0xe896('0x94'),_0x1913b2+'%');}else{_0x50c910['or'](_0xe896('0x95'),qs['getFullTextValue'](_0x1913b2))['or'](_0xe896('0x96'),_0x1913b2+'%');}}}_0x2a23a2[_0xe896('0x56')](_0x50c910);_0x2a23a2[_0xe896('0x97')](_0xe896('0x98'));var _0x48885e={'type':db[_0xe896('0x99')][_0xe896('0x9a')][_0xe896('0x9b')],'raw':!![]};var _0x779db6=_0x2a23a2[_0xe896('0x9c')]();_0x779db6[_0xe896('0x58')](_0xe896('0x98'));_0x779db6[_0xe896('0x58')](_0xe896('0x9d'),_0xe896('0x9e'));if(_0x22c628[_0xe896('0x54')]){_0x22c628[_0xe896('0x54')]['forEach'](function(_0x2bd061){var _0x1d1364=_0x2bd061[0x0]===_0xe896('0x9f')?_0x2bd061[0x0]:'i.'+_0x2bd061[0x0];_0x2a23a2['order'](_0x1d1364,_0x2bd061[0x1]===_0xe896('0xa0')?![]:!![]);});}if(!_['isEmpty'](_0x28396c)){_0x2a23a2['having'](_0x57ed84);_0x779db6[_0xe896('0x56')](_0xe896('0xa1'),_0x28396c);}BPromise[_0xe896('0xa2')]()['then'](function(){if(!_0x5d6c1c){if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x86')])return;_0x779db6['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x2a23a2[_0xe896('0x56')](_0xe896('0xa3'));return;}if(_0x4c05ce[_0xe896('0xa4')][_0xe896('0xa5')]!==_0xe896('0xa6'))return;return _0x4c05ce[_0xe896('0xa4')][_0xe896('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x544d2d){if(_[_0xe896('0xa8')](_0x544d2d)){_0x779db6['where']('i.ChatWebsiteId\x20IS\x20NULL');_0x2a23a2[_0xe896('0x56')](_0xe896('0xa9'));}else{_0x779db6[_0xe896('0x56')](_0xe896('0x87'),_['map'](_0x544d2d,'id'));_0x2a23a2[_0xe896('0x56')](_0xe896('0x87'),_['map'](_0x544d2d,'id'));}});})[_0xe896('0x23')](function(){if(_0x4c05ce[_0xe896('0xa4')][_0xe896('0xa5')]===_0xe896('0xa6')&&!_0x5d6c1c&&!_0x4c05ce[_0xe896('0x4c')][_0xe896('0x86')])return[];return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x779db6[_0xe896('0xab')](),_0x48885e);})[_0xe896('0x23')](function(_0x16ff5e){_0x16927a[_0xe896('0x33')]=_0x16ff5e[_0xe896('0x51')];if(_0x16927a['count']===0x0)return[];return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x20fe4f[_0xe896('0xab')](),_0x48885e)[_0xe896('0x23')](function(_0x229150){_0x388375=_[_0xe896('0xac')](_0x229150,'id');_0x48885e=_[_0xe896('0x3b')](_0x48885e,{'model':db[_0xe896('0x47')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x4f')]){_0x22c628['attributes']['forEach'](function(_0x41e6c4){_0x2a23a2[_0xe896('0x58')]('i.'+_0x41e6c4);});}else{_0x2a23a2[_0xe896('0x58')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xe896('0x9e'));_0x2a23a2[_0xe896('0x58')]('a.key',_0xe896('0xad'));_0x2a23a2[_0xe896('0x58')]('a.mandatoryDisposition',_0xe896('0xae'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xaf'),_0xe896('0x9f'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb0'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb1'),'Contact.firstName');_0x2a23a2[_0xe896('0x58')](_0xe896('0xb2'),_0xe896('0xb3'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb4'),'Contact.email');_0x2a23a2[_0xe896('0x58')](_0xe896('0xb5'),_0xe896('0xb6'));_0x2a23a2['field'](_0xe896('0xb7'),_0xe896('0xb8'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb9'),_0xe896('0xba'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xbb'),_0xe896('0xbc'));_0x2a23a2[_0xe896('0x58')]('o.internal',_0xe896('0xbd'));_0x2a23a2['field'](_0xe896('0xbe'),_0xe896('0x40'));}if(_0x22c628[_0xe896('0x53')])_0x2a23a2[_0xe896('0x53')](_0x22c628['limit']);if(_0x22c628[_0xe896('0x34')])_0x2a23a2[_0xe896('0x34')](_0x22c628['offset']);return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x2a23a2[_0xe896('0xab')](),_0x48885e);})['then'](function(_0xadc81f){if(_0xadc81f['length']>0x0)_0x1d18f6['where'](_0xe896('0xbf'),_[_0xe896('0x46')](_0xadc81f,'id'));return db['sequelize'][_0xe896('0x4c')](_0x1d18f6[_0xe896('0xab')](),_0x48885e)['then'](function(_0x529df2){var _0x5b4e01=_['groupBy'](_0x529df2,_0xe896('0xc0'));var _0x237cae=[];_0xadc81f[_0xe896('0x43')](function(_0xc0fa84){_0x237cae[_0xe896('0x44')](updateChatInteraction(_0xc0fa84,_0x388375,_0x5b4e01));});return BPromise[_0xe896('0xc1')](_0x237cae);});});})[_0xe896('0x23')](function(_0x2dbfd3){_0x16927a['rows']=_0x2dbfd3;return _0x16927a;})[_0xe896('0x23')](respondWithFilteredResult(_0x489254,_0x22c628))[_0xe896('0x45')](handleError(_0x489254,null));};exports[_0xe896('0xc2')]=function(_0x2a1d41,_0x5a254b){var _0x4f4d26={'raw':![],'where':{'id':_0x2a1d41[_0xe896('0xc3')]['id']}},_0x2f30a9={};_0x2f30a9['model']=_['keys'](db[_0xe896('0x47')][_0xe896('0xc4')]);_0x2f30a9[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0x2a1d41[_0xe896('0x4c')]);_0x2f30a9['filters']=_[_0xe896('0x4e')](_0x2f30a9[_0xe896('0x4a')],_0x2f30a9[_0xe896('0x4c')]);_0x4f4d26['attributes']=_[_0xe896('0x4e')](_0x2f30a9[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0x2a1d41[_0xe896('0x4c')][_0xe896('0x4f')]));_0x4f4d26['attributes']=_0x4f4d26[_0xe896('0x50')][_0xe896('0x51')]?_0x4f4d26[_0xe896('0x50')]:_0x2f30a9['model'];if(_0x2a1d41[_0xe896('0x4c')]['includeAll']){_0x4f4d26[_0xe896('0xc5')]=[{'all':!![]}];}_0x4f4d26=_[_0xe896('0x3b')]({},_0x4f4d26,_0x2a1d41[_0xe896('0xc6')]);return db[_0xe896('0x47')][_0xe896('0x6f')](_0x4f4d26)[_0xe896('0x23')](handleEntityNotFound(_0x5a254b,null))['then'](respondWithResult(_0x5a254b,null))['catch'](handleError(_0x5a254b,null));};exports[_0xe896('0xc7')]=function(_0x54c61f,_0x15af0e){return db[_0xe896('0x47')]['create'](_0x54c61f[_0xe896('0x3c')],{})[_0xe896('0x23')](respondWithResult(_0x15af0e,0xc9))['catch'](handleError(_0x15af0e,null));};exports[_0xe896('0xc8')]=function(_0x4bcd8c,_0x326c67){if(_0x4bcd8c[_0xe896('0x3c')]['id']){delete _0x4bcd8c[_0xe896('0x3c')]['id'];}return db[_0xe896('0x47')]['find']({'where':{'id':_0x4bcd8c[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x326c67,null))[_0xe896('0x23')](saveUpdates(_0x4bcd8c[_0xe896('0x3c')],null))[_0xe896('0x23')](respondWithResult(_0x326c67,null))[_0xe896('0x45')](handleError(_0x326c67,null));};exports[_0xe896('0xc9')]=function(_0x3c8951,_0x41b162){return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x3c8951[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x41b162,null))[_0xe896('0x23')](removeEntity(_0x41b162,null))[_0xe896('0x45')](handleError(_0x41b162,null));};exports[_0xe896('0xca')]=function(_0x16b398,_0x4edeaf){return db[_0xe896('0x47')][_0xe896('0xca')]()['then'](respondWithResult(_0x4edeaf,null))['catch'](handleError(_0x4edeaf,null));};exports[_0xe896('0xcb')]=function(_0xdd4767,_0x3df01d){var _0xf6563d=_0xdd4767[_0xe896('0xc3')]['id'];var _0x21e7a2;var _0x43b9e0;var _0x46a4f0;return db['ChatInteraction'][_0xe896('0xcc')]({'where':{'id':_0xf6563d}})[_0xe896('0x23')](function(_0x2ee264){_0x21e7a2=_0x2ee264;return db[_0xe896('0xcd')]['findOne']({'where':{'id':_0x2ee264[_0xe896('0x86')]},'attributes':['id','vidaooApiKey','vidaooEscalation',_0xe896('0xce'),_0xe896('0xcf'),_0xe896('0xd0')],'raw':!![]});})[_0xe896('0x23')](function(_0x3e55b7){if(_0x3e55b7&&_0x3e55b7[_0xe896('0xd1')]&&_0x3e55b7[_0xe896('0xd2')]){_0x43b9e0=_0x3e55b7;var _0x49293e={'interaction':{'id':_0xf6563d},'agent':{'id':_0xdd4767[_0xe896('0xa4')]['id'],'name':_0xdd4767[_0xe896('0xa4')][_0xe896('0x39')],'fullname':_0xdd4767[_0xe896('0xa4')][_0xe896('0x3f')],'email':_0xdd4767[_0xe896('0xa4')][_0xe896('0xd3')]},'contact':_0xdd4767[_0xe896('0x3c')][_0xe896('0x3d')],'account':_0xdd4767['body'][_0xe896('0x3e')]};var _0x13c2fb={'rejectUnauthorized':![],'method':'POST','url':_0xe896('0xd4'),'headers':{'X-APIKEY':_0x3e55b7['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0xdd4767['user'][_0xe896('0xd3')]],'buttons':null,'topic':_0x43b9e0['vidaooTopic'],'note':_['isNull'](_0x43b9e0[_0xe896('0xcf')])?null:getMustacheRender(_0x43b9e0[_0xe896('0xcf')],_0x49293e),'metadata':null},'redirect':_0xe896('0xd5'),'json':!![]};try{if(!_['isNull'](_0x43b9e0[_0xe896('0xd0')])){var _0x55be9b=getMustacheRender(_0x43b9e0[_0xe896('0xd0')],_0x49293e);var _0x1406c2=JSON['parse'](_0x55be9b);_0x13c2fb[_0xe896('0x3c')][_0xe896('0xd6')]=_0x1406c2;}}catch(_0x53cebb){throw new db[(_0xe896('0x99'))]['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x13c2fb);}else{throw new db['Sequelize'][(_0xe896('0xd7'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0xe896('0x23')](function(_0x30c8f4){_0x46a4f0=_0x30c8f4;if(_0x46a4f0['id']){var _0x386f5a={'body':_0x46a4f0[_0xe896('0xd8')],'ChatWebsiteId':_0x43b9e0['id'],'ChatInteractionId':_0x21e7a2['id'],'direction':'out','UserId':_0xdd4767[_0xe896('0xa4')]['id']};return db[_0xe896('0xd9')][_0xe896('0xc7')](_0x386f5a,{});}else{throw new db[(_0xe896('0x99'))]['ValidationError'](_0xe896('0xda'));}})['then'](function(){return _0x21e7a2[_0xe896('0xdb')]({'vidaooSessionId':_0x46a4f0['id']});})[_0xe896('0x23')](respondWithResult(_0x3df01d,null))[_0xe896('0x45')](handleError(_0x3df01d,null));};exports[_0xe896('0xdc')]=function(_0x5a5336,_0x42ab19){if(_0x5a5336['body']['id']){delete _0x5a5336[_0xe896('0x3c')]['id'];}return db['ChatInteraction'][_0xe896('0x6f')]({'where':{'id':_0x5a5336[_0xe896('0xc3')]['id']},'include':[{'model':db[_0xe896('0xdd')],'as':'Contact'}]})[_0xe896('0x23')](handleEntityNotFound(_0x42ab19,null))['then'](saveUpdates(_0x5a5336[_0xe896('0x3c')],null))[_0xe896('0x23')](respondWithResult(_0x42ab19,null))['catch'](handleError(_0x42ab19,null));};exports[_0xe896('0xde')]=function(_0x384116,_0x5949f1,_0x432775){if(_0x384116[_0xe896('0x3c')]['id']){delete _0x384116[_0xe896('0x3c')]['id'];}return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x384116[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](function(_0x5da1fa){if(!_0x5da1fa){logger[_0xe896('0x2a')]('abandonInteraction,\x20%s,\x20%s,\x20%s','abandon',0x194,_0xe896('0xdf'));_0x5949f1[_0xe896('0x2e')](0x194);}else{if(_0x5da1fa['UserId']){throw new db[(_0xe896('0x99'))][(_0xe896('0xd7'))]('Interaction\x20already\x20assigned');}}return _0x5da1fa;})['then'](function(_0x24c6bc){if(_0x24c6bc){return _0x24c6bc[_0xe896('0xc8')]({'closed':_0x384116['body'][_0xe896('0xe0')],'disposition':_0x384116[_0xe896('0x3c')]['disposition']})[_0xe896('0x23')](function(_0x54219c){return _0x54219c;});}})[_0xe896('0x23')](function(_0x577d5a){return respondWithRpcPromise(_0xe896('0xe1'),_0xe896('0xde'),_0x384116['body'],client9004);})[_0xe896('0x23')](respondWithResult(_0x5949f1,null))[_0xe896('0x45')](handleError(_0x5949f1,null));};exports[_0xe896('0xe2')]=function(_0x32f30e,_0x265206,_0x90a856){_0x32f30e[_0xe896('0x3c')][_0xe896('0x39')]=_0x32f30e[_0xe896('0xe3')][_0xe896('0xe4')];_0x32f30e[_0xe896('0x3c')][_0xe896('0xe5')]=_0x32f30e[_0xe896('0xe3')][_0xe896('0xe6')];_0x32f30e['body'][_0xe896('0x7c')]=_0x32f30e['file'][_0xe896('0xe7')];return db[_0xe896('0xe8')]['create'](_0x32f30e[_0xe896('0x3c')])[_0xe896('0x23')](respondWithResult(_0x265206,0xc9))[_0xe896('0x45')](handleError(_0x265206,null));};exports['attachmentDownload']=function(_0x28deef,_0x3f32f7,_0x2b1427){return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0x28deef[_0xe896('0xc3')]['id']},'raw':!![]})[_0xe896('0x23')](handleEntityNotFound(_0x3f32f7,null))[_0xe896('0x23')](function(_0xdd5dbf){if(_0xdd5dbf){if(_0xdd5dbf['closed']){return _0x3f32f7['status'](0x193)['json']({'status':0x193,'message':_0xe896('0xe9')});}return db['Attachment']['findOne']({'where':{'id':_0x28deef[_0xe896('0x4c')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x3f32f7,null));}})['then'](function(_0x348cd5){if(_0x348cd5){var _0x4a5f7f=_0x348cd5[_0xe896('0xea')]!==null;var _0x222029=path[_0xe896('0xeb')](config[_0xe896('0xec')],'server/files/attachments/');if(_0x4a5f7f){_0x222029=path[_0xe896('0xeb')](_0x222029,_0xe896('0xed'));}var _0x36c394=path[_0xe896('0xeb')](_0x222029,_0x348cd5[_0xe896('0xe5')]);return _0x3f32f7['download'](_0x36c394);}})['catch'](handleError(_0x3f32f7,null));};exports[_0xe896('0xee')]=function(_0x1a5056,_0x57aa1b){var _0x21b078=null;var _0x17edcd=null;var _0x71d912=null;var _0x22a63d=null;if(_0x1a5056[_0xe896('0x3c')]['id']){delete _0x1a5056[_0xe896('0x3c')]['id'];}if(_0x1a5056[_0xe896('0x3c')][_0xe896('0xef')]){_0x22a63d=path[_0xe896('0xeb')](config[_0xe896('0xec')],_0xe896('0xf0'),util[_0xe896('0xf1')](_0xe896('0xf2'),Date['now']()));_0x1a5056[_0xe896('0x3c')][_0xe896('0xf3')]=_0x22a63d;}return db['ChatInteraction'][_0xe896('0x6f')]({'where':{'id':_0x1a5056[_0xe896('0xc3')]['id']},'include':[{'model':db[_0xe896('0xd9')],'as':_0xe896('0xf4'),'include':[{'model':db[_0xe896('0x80')],'as':_0xe896('0x80')}]}]})[_0xe896('0x23')](handleEntityNotFound(_0x57aa1b,null))[_0xe896('0x23')](saveUpdates(_0x1a5056[_0xe896('0x3c')],null))[_0xe896('0x23')](function(_0x5487f0){if(_0x5487f0){_0x21b078=_0x5487f0;return db[_0xe896('0xcd')]['find']({'where':{'id':_0x21b078[_0xe896('0x86')]}});}})[_0xe896('0x23')](function(_0xb528ff){if(_0xb528ff){_0x71d912=_0xb528ff;return db[_0xe896('0xdd')][_0xe896('0x6f')]({'where':{'id':_0x21b078[_0xe896('0x7a')]}});}})[_0xe896('0x23')](function(_0x6e53ae){if(_0x6e53ae){_0x17edcd=_0x6e53ae;if(_0x22a63d){var _0x52337e=null;for(var _0x1d6003=0x1;_0x1d6003<_0x21b078[_0xe896('0xf4')][_0xe896('0x51')];++_0x1d6003){_0x52337e=_0x21b078[_0xe896('0xf4')][_0x1d6003];var _0x882a0e=_0x52337e[_0xe896('0x82')]?util[_0xe896('0xf1')](_0xe896('0xf5'),_0x71d912['agentAlias'],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');var _0x27743a=_0x1a5056['body']['customer']||util[_0xe896('0xf1')](_0xe896('0xf5'),_0xe896('0xf7'),_0x52337e['ContactId']);switch(_0x71d912['agentIdentifier']){case _0xe896('0xf8'):_0x882a0e=_0x52337e[_0xe896('0x82')]?util['format'](_0xe896('0xf5'),_0x71d912[_0xe896('0xf9')],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');break;case _0xe896('0xfa'):_0x882a0e=_0x52337e[_0xe896('0x82')]?_0x52337e['User'][_0xe896('0xfb')]||_0x52337e[_0xe896('0x80')]['fullname']:_0xe896('0xf6');break;case _0xe896('0xfc'):_0x882a0e=_0x52337e['UserId']?_0x52337e['User']['fullname']:'System';break;default:_0x882a0e=_0x52337e[_0xe896('0x82')]?util[_0xe896('0xf1')](_0xe896('0xf5'),_0x71d912[_0xe896('0xf9')],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');}var _0x58fcf9=util[_0xe896('0xf1')]('[%s]\x20%s:\x20%s\x0a',moment(_0x52337e[_0xe896('0xfd')])['format'](_0xe896('0xfe')),_0x52337e[_0xe896('0xff')]==='in'?_0x27743a:_0x882a0e,_0x52337e['body']);if(!_0x52337e['secret']){fs[_0xe896('0x100')](_0x22a63d,_0x58fcf9);}}return db[_0xe896('0x101')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xe896('0x102'),'raw':!![]}]});}}})[_0xe896('0x23')](function(_0xbee8fa){if(_0xbee8fa&&_0xbee8fa[_0xe896('0x102')]&&_0x1a5056[_0xe896('0x3c')]){var _0x1a50c3={'tls':{'rejectUnauthorized':![]}};if(_0xbee8fa[_0xe896('0x102')][_0xe896('0x103')]){_0x1a50c3[_0xe896('0x103')]=_0xbee8fa[_0xe896('0x102')][_0xe896('0x103')];}else{_0x1a50c3[_0xe896('0x104')]=_0xbee8fa[_0xe896('0x102')]['host'];_0x1a50c3['port']=_0xbee8fa[_0xe896('0x102')][_0xe896('0x105')];_0x1a50c3[_0xe896('0x106')]=_0xbee8fa[_0xe896('0x102')][_0xe896('0x106')];}if(_0xbee8fa[_0xe896('0x102')][_0xe896('0x107')]){_0x1a50c3[_0xe896('0x108')]={'user':_0xbee8fa[_0xe896('0x102')][_0xe896('0xa4')],'pass':_0xbee8fa[_0xe896('0x102')][_0xe896('0x109')]};}return respondWithRpcPromise(_0xe896('0x10a'),_0xe896('0x10b'),{'account':_0x1a50c3,'message':{'from':util[_0xe896('0xf1')](_0xe896('0x10c'),_0xbee8fa['name'],_0xbee8fa['email']||_0xbee8fa['Smtp'][_0xe896('0xa4')]),'to':_0x1a5056[_0xe896('0x3c')][_0xe896('0xef')],'subject':_0xe896('0x10d'),'text':util[_0xe896('0xf1')](_0xe896('0x10e'),_0x1a5056[_0xe896('0x3c')]['mailTranscript']),'attachments':[{'path':_0x22a63d}]}})['then'](function(){return _0x21b078;})[_0xe896('0x45')](function(_0x550c55){console['error'](_0x550c55);});}else{return _0x21b078;}})['then'](respondWithStatusCode(_0x57aa1b,0xc8))[_0xe896('0x45')](handleError(_0x57aa1b,null));};exports[_0xe896('0x10f')]=function(_0x14da55,_0x5656d0,_0x31ca0b){return db[_0xe896('0xd9')][_0xe896('0x6f')]({'where':{'id':_0x14da55[_0xe896('0xc3')]['id']}})['then'](handleEntityNotFound(_0x5656d0,null))['then'](function(_0x518847){if(_0x518847){return _0x518847[_0xe896('0x10f')](_0x14da55[_0xe896('0x3c')]['ids'],_[_0xe896('0x110')](_0x14da55[_0xe896('0x3c')],[_0xe896('0x111'),'id'])||{});}})[_0xe896('0x23')](respondWithResult(_0x5656d0,null))['catch'](handleError(_0x5656d0,null));};exports[_0xe896('0x112')]=function(_0xf78ce2,_0x3f8ea0,_0x254420){var _0x1196d4={'raw':![],'where':{}};var _0x1ee26e={};var _0x1bd649={'count':0x0,'rows':[]};return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0xf78ce2[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x3f8ea0,null))[_0xe896('0x23')](function(_0x2e5c38){if(_0x2e5c38){_0x1ee26e[_0xe896('0x4a')]=_['keys'](db[_0xe896('0xd9')]['rawAttributes']);_0x1ee26e[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0xf78ce2['query']);_0x1ee26e['filters']=_[_0xe896('0x4e')](_0x1ee26e[_0xe896('0x4a')],_0x1ee26e[_0xe896('0x4c')]);_0x1196d4['attributes']=_[_0xe896('0x4e')](_0x1ee26e[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0xf78ce2['query'][_0xe896('0x4f')]));_0x1196d4[_0xe896('0x50')]=_0x1196d4[_0xe896('0x50')]['length']?_0x1196d4['attributes']:_0x1ee26e[_0xe896('0x4a')];if(!_0xf78ce2['query'][_0xe896('0x113')](_0xe896('0x52'))){_0x1196d4[_0xe896('0x53')]=qs[_0xe896('0x53')](_0xf78ce2[_0xe896('0x4c')][_0xe896('0x53')]);_0x1196d4[_0xe896('0x34')]=qs['offset'](_0xf78ce2['query'][_0xe896('0x34')]);}_0x1196d4[_0xe896('0x54')]=qs['sort'](_0xf78ce2[_0xe896('0x4c')][_0xe896('0x55')]);_0x1196d4['where']=qs['filters'](_['pick'](_0xf78ce2['query'],_0x1ee26e['filters']));_0x1196d4['where'][_0xe896('0xc0')]=_0x2e5c38['id'];if(_0xf78ce2['query'][_0xe896('0x91')]){_0x1196d4[_0xe896('0x56')]=_[_0xe896('0x3b')](_0x1196d4[_0xe896('0x56')],{'$or':_['map'](_0x1196d4[_0xe896('0x50')],function(_0x646354){var _0x3d751c={};_0x3d751c[_0x646354]={'$like':'%'+_0xf78ce2['query'][_0xe896('0x91')]+'%'};return _0x3d751c;})});}if(_0xf78ce2[_0xe896('0x4c')][_0xe896('0x8a')]){var _0x42bf84=_0xf78ce2[_0xe896('0x4c')][_0xe896('0x8a')][_0xe896('0x42')](',');var _0x115450={};_0x115450[_0x42bf84[0x0]]={'$gte':moment(_0x42bf84[0x1])[_0xe896('0xf1')](_0xe896('0x114'))};_0x1196d4['where']=_[_0xe896('0x3b')](_0x1196d4[_0xe896('0x56')],_0x115450);}_0x1196d4=_[_0xe896('0x3b')]({},_0x1196d4,_0xf78ce2[_0xe896('0xc6')]);return db['ChatMessage'][_0xe896('0x33')]({'where':_0x1196d4[_0xe896('0x56')]})[_0xe896('0x23')](function(_0x3bee56){_0x1bd649[_0xe896('0x33')]=_0x3bee56;if(_0xf78ce2[_0xe896('0x4c')]['includeAll']){_0x1196d4['include']=[{'all':!![]}];}return db[_0xe896('0xd9')]['findAll'](_0x1196d4);})['then'](function(_0x1d3083){_0x1bd649[_0xe896('0x115')]=_0x1d3083;return _0x1bd649;});}})[_0xe896('0x23')](respondWithFilteredResult(_0x3f8ea0,_0x1196d4))['catch'](handleError(_0x3f8ea0,null));};exports[_0xe896('0x116')]=function(_0x4ddfde,_0xc1bdcf,_0xdea91f){var _0x5c2af6={'where':{}},_0x306757={},_0x31f4e1={'count':0x0,'rows':[]};return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0x4ddfde['params']['id']}})[_0xe896('0x23')](handleEntityNotFound(_0xc1bdcf,null))['then'](function(_0x186b58){if(_0x186b58){_0x306757[_0xe896('0x4a')]=_[_0xe896('0x4b')](db['ChatMessage']['rawAttributes']);_0x306757[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0x4ddfde[_0xe896('0x4c')]);_0x306757[_0xe896('0x4d')]=_[_0xe896('0x4e')](_0x306757[_0xe896('0x4a')],_0x306757[_0xe896('0x4c')]);_0x5c2af6[_0xe896('0x50')]=_['intersection'](_0x306757[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0x4ddfde['query'][_0xe896('0x4f')]));_0x5c2af6['attributes']=_0x5c2af6['attributes'][_0xe896('0x51')]?_0x5c2af6[_0xe896('0x50')]:_0x306757[_0xe896('0x4a')];if(!_0x4ddfde[_0xe896('0x4c')][_0xe896('0x113')]('nolimit')){_0x5c2af6[_0xe896('0x53')]=qs[_0xe896('0x53')](_0x4ddfde[_0xe896('0x4c')][_0xe896('0x53')]);_0x5c2af6[_0xe896('0x34')]=qs['offset'](_0x4ddfde[_0xe896('0x4c')][_0xe896('0x34')]);}_0x5c2af6[_0xe896('0x54')]=qs[_0xe896('0x55')](_0x4ddfde['query'][_0xe896('0x55')]);_0x5c2af6[_0xe896('0x56')]=qs[_0xe896('0x4d')](_[_0xe896('0x57')](_0x4ddfde['query'],_0x306757[_0xe896('0x4d')]));_0x5c2af6[_0xe896('0x56')][_0xe896('0xc0')]=_0x186b58['id'];if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x91')]){_0x5c2af6['where']=_[_0xe896('0x3b')](_0x5c2af6[_0xe896('0x56')],{'$or':_['map'](_0x5c2af6['attributes'],function(_0x42490d){var _0x2dba2f={};_0x2dba2f[_0x42490d]={'$like':'%'+_0x4ddfde[_0xe896('0x4c')][_0xe896('0x91')]+'%'};return _0x2dba2f;})});}_0x5c2af6['where'][_0xe896('0x117')]=![];if(_0x4ddfde[_0xe896('0x4c')]['id']){_0x5c2af6[_0xe896('0x56')]['id']={'$gt':_0x4ddfde[_0xe896('0x4c')]['id']};}_0x5c2af6=_['merge']({},_0x5c2af6,_0x4ddfde['options']);return db['ChatMessage'][_0xe896('0x33')]({'where':_0x5c2af6[_0xe896('0x56')]})[_0xe896('0x23')](function(_0xabf68b){_0x31f4e1[_0xe896('0x33')]=_0xabf68b;_0x5c2af6['include']=[];if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x118')]){_0x5c2af6['include'][_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x80'),'attributes':['id','fullname',_0xe896('0xfb')]});}if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x119')]){_0x5c2af6[_0xe896('0xc5')]=[{'all':!![]}];}return db[_0xe896('0xd9')][_0xe896('0x11a')](_0x5c2af6);})['then'](function(_0xbf5fec){_0x31f4e1[_0xe896('0x115')]=_0xbf5fec;return _0x31f4e1;});}})['then'](respondWithFilteredResult(_0xc1bdcf,_0x5c2af6))[_0xe896('0x45')](handleError(_0xc1bdcf,null));};exports[_0xe896('0x11b')]=function(_0x50e9f6,_0x3f7f9b,_0x45fbfd){return db['ChatInteraction']['find']({'where':{'id':_0x50e9f6[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x3f7f9b,null))['then'](function(_0xd7222b){if(_0xd7222b){return _0xd7222b[_0xe896('0x11c')](_0x50e9f6['body'][_0xe896('0x111')],_[_0xe896('0x110')](_0x50e9f6[_0xe896('0x3c')],[_0xe896('0x111'),'id'])||{})[_0xe896('0x11d')](function(){return db[_0xe896('0x11e')][_0xe896('0x11a')]({'attributes':['id',_0xe896('0x39'),_0xe896('0x59')],'where':{'id':_0x50e9f6[_0xe896('0x3c')]['ids']}});})[_0xe896('0x23')](function(_0x4b7dda){socket['emit'](_0xe896('0x11f'),{'id':Number(_0x50e9f6[_0xe896('0xc3')]['id']),'tags':_0x4b7dda||[]});return{'id':Number(_0x50e9f6['params']['id']),'tags':_0x4b7dda||[]};});}})['then'](respondWithResult(_0x3f7f9b,null))[_0xe896('0x45')](handleError(_0x3f7f9b,null));};exports[_0xe896('0x120')]=function(_0x40efd6,_0x513fbe,_0x17b841){return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x40efd6[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x513fbe,null))['then'](function(_0x704996){if(_0x704996){return _0x704996[_0xe896('0x120')](_0x40efd6[_0xe896('0x4c')]['ids']);}})[_0xe896('0x23')](respondWithStatusCode(_0x513fbe,null))[_0xe896('0x45')](handleError(_0x513fbe,null));};exports[_0xe896('0x121')]=function(_0x99a090,_0x15c4f9){var _0x4b1785=moment()['unix']()[_0xe896('0xab')]();var _0x5bc230=path[_0xe896('0xeb')](config[_0xe896('0xec')],_0xe896('0x122'),_0xe896('0x123'),'tmp');var _0x2d2654=path[_0xe896('0xeb')](config[_0xe896('0xec')],'server',_0xe896('0x123'),_0xe896('0x124'));var _0x5bbc65=path[_0xe896('0xeb')](_0x5bc230,_0x4b1785);var _0x194003=util[_0xe896('0xf1')](_0xe896('0x125'),_0x99a090[_0xe896('0xc3')]['id'],_0x4b1785);var _0x2a3489=path[_0xe896('0xeb')](_0x5bc230,_0x194003);var _0x54df80=[];_0x54df80[_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x80'),'attributes':['id',_0xe896('0x3f')],'raw':!![]});_0x54df80[_0xe896('0x44')]({'model':db[_0xe896('0xdd')],'as':_0xe896('0x74'),'attributes':['id',_0xe896('0x126'),'lastName'],'raw':!![]});if(_0x99a090[_0xe896('0x4c')][_0xe896('0x124')]){_0x54df80[_0xe896('0x44')]({'model':db['Attachment'],'as':_0xe896('0xe8'),'raw':!![]});}var _0x2279c9=[{'model':db[_0xe896('0xd9')],'as':_0xe896('0xf4'),'attributes':['id','body',_0xe896('0xfd'),_0xe896('0xff'),_0xe896('0x117'),_0xe896('0x8c')],'include':_0x54df80}];_0x2279c9[_0xe896('0x44')]({'model':db[_0xe896('0xcd')],'as':_0xe896('0x127'),'attributes':['id',_0xe896('0x39')]});_0x2279c9[_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x128'),'attributes':['id',_0xe896('0x3f')]});return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x99a090[_0xe896('0xc3')]['id']},'include':_0x2279c9})['then'](handleEntityNotFound(_0x15c4f9,null))['then'](function(_0x5cd4ff){if(_0x5cd4ff){var _0x81d8be=_0x5cd4ff[_0xe896('0x129')]({'plain':!![]});fs[_0xe896('0x12a')](_0x5bbc65);var _0x132625={'channel':_0xe896('0x12b'),'account':_0x81d8be[_0xe896('0x127')][_0xe896('0x39')],'agent':_0x81d8be[_0xe896('0x128')]?_0x81d8be[_0xe896('0x128')][_0xe896('0x3f')]:'N.A.','createdAt':moment(_0x81d8be[_0xe896('0xfd')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xe896('0xab')](),'closedAt':_0x81d8be[_0xe896('0xe0')]?moment(_0x81d8be[_0xe896('0x12c')])[_0xe896('0xf1')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe896('0xab')]():'','disposition':_0x81d8be[_0xe896('0x12d')],'chatInfo':{'browser':_0x81d8be['browserName'],'os':_0x81d8be[_0xe896('0x12e')],'referer':_0x81d8be[_0xe896('0x12f')],'customerIp':_0x81d8be[_0xe896('0x130')],'customerPort':_0x81d8be[_0xe896('0x131')]?_0x81d8be['customerPort']:_0xe896('0x132')},'messages':_(_0x81d8be['Messages'])[_0xe896('0x133')]()[_0xe896('0x91')]({'secret':![]})[_0xe896('0x46')](function(_0x374e2f){if(_0x374e2f[_0xe896('0xe8')]){var _0x328e2b=path['join'](_0x2d2654,_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')]);if(fs[_0xe896('0x134')](_0x328e2b)){fs[_0xe896('0x135')](_0x328e2b)['pipe'](fs[_0xe896('0x136')](path[_0xe896('0xeb')](_0x5bbc65,_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')])));}}return{'date':moment(_0x374e2f['createdAt'])[_0xe896('0xf1')](_0xe896('0x114'))[_0xe896('0xab')](),'sender':_0x374e2f[_0xe896('0xff')]===_0xe896('0x137')?_0x374e2f[_0xe896('0x80')]?_0x374e2f[_0xe896('0x80')][_0xe896('0x3f')]:'System':_0x374e2f['Contact'][_0xe896('0x126')]+(_0x374e2f[_0xe896('0x74')][_0xe896('0x138')]?'\x20'+_0x374e2f[_0xe896('0x74')]['lastName']:''),'body':_0x374e2f[_0xe896('0xe8')]?_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')]:_0x374e2f[_0xe896('0x3c')],'direction':_0x374e2f[_0xe896('0xff')]===_0xe896('0x137')?'A':'C','secret':_0x374e2f[_0xe896('0x117')],'read':_0x374e2f['read'],'attachment':_0x374e2f[_0xe896('0xe8')]};})[_0xe896('0x70')]()};return ejs[_0xe896('0x139')](path[_0xe896('0xeb')](config[_0xe896('0xec')],'server',_0xe896('0x13a'),'downloadInteraction.ejs'),{'interaction':_0x132625})[_0xe896('0x23')](function(_0x50d56b){var _0x5d05a4=path[_0xe896('0xeb')](_0x5bbc65,_0xe896('0x13b')+_0x81d8be['id']+'-'+_0x4b1785+_0xe896('0x13c'));var _0x9223f={'path':_0x5d05a4,'channel':_0xe896('0x12b'),'interactionId':_0x81d8be['id']};return pdf[_0xe896('0x13d')](_0x50d56b,_0x9223f);})[_0xe896('0x23')](function(){return new BPromise(function(_0x399827,_0x2a2fa5){zipdir(_0x5bbc65,{'saveTo':_0x2a3489},function(_0x21d235,_0x3d7f5f){if(_0x21d235)return _0x2a2fa5(_0x21d235);return _0x399827(_0x3d7f5f);});})[_0xe896('0x23')](function(){return new BPromise(function(_0x313eb0,_0x54a741){rimraf(_0x5bbc65,function(_0x3edee9){if(_0x3edee9)_0x54a741(_0x3edee9);return _0x313eb0();});});})[_0xe896('0x23')](function(){return _0x15c4f9['download'](_0x2a3489,_0x194003,function(_0x42163c){if(_0x42163c){console[_0xe896('0x13e')]('err',_0x42163c);}else{fs[_0xe896('0x13f')](_0x2a3489);}});});});}else{return _0x15c4f9[_0xe896('0x2e')](0xc8);}})[_0xe896('0x45')](handleError(_0x15c4f9,null));};
\ No newline at end of file
index 9ae1aa4..c56a686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb75c=['../../mysqldb','ChatMessage','setMaxListeners','update','setDataValue','Users','findAll','then','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x313f66,_0x2e0a30){var _0x2c12a1=function(_0x3766a3){while(--_0x3766a3){_0x313f66['push'](_0x313f66['shift']());}};_0x2c12a1(++_0x2e0a30);}(_0xb75c,0x12b));var _0xcb75=function(_0x2d2e12,_0x361ad5){_0x2d2e12=_0x2d2e12-0x0;var _0x4af1c7=_0xb75c[_0x2d2e12];return _0x4af1c7;};'use strict';var EventEmitter=require(_0xcb75('0x0'));var ChatInteraction=require(_0xcb75('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xcb75('0x1'))['db'][_0xcb75('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xcb75('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xcb75('0x4'),'afterDestroy':'remove'};function emitEvent(_0x41f984){return function(_0x435911,_0x16f654,_0x117e05){_0x435911['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x2219e0){_0x435911[_0xcb75('0x5')](_0xcb75('0x6'),_0x2219e0['map'](function(_0xb0f204){return{'id':_0xb0f204['id']};}));return ChatMessage[_0xcb75('0x7')]({'where':{'ChatInteractionId':_0x435911['id'],'direction':'in','read':![]},'raw':!![]});})[_0xcb75('0x8')](function(_0x2319ab){_0x435911[_0xcb75('0x5')](_0xcb75('0x9'),_0x2319ab['length']);ChatInteractionEvents[_0xcb75('0xa')](_0x41f984+':'+_0x435911['id'],_0x435911);ChatInteractionEvents[_0xcb75('0xa')](_0x41f984,_0x435911);_0x117e05(null);})[_0xcb75('0xb')](_0x117e05(null));};}for(var e in events){if(events[_0xcb75('0xc')](e)){var event=events[e];ChatInteraction[_0xcb75('0xd')](e,emitEvent(event));}}module[_0xcb75('0xe')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xf10f=['events','../../mysqldb','setMaxListeners','update','then','Users','findAll','setDataValue','unreadMessages','emit','catch','hasOwnProperty','hook'];(function(_0x3e4d10,_0x4cc959){var _0x38aae0=function(_0x5933b3){while(--_0x5933b3){_0x3e4d10['push'](_0x3e4d10['shift']());}};_0x38aae0(++_0x4cc959);}(_0xf10f,0x179));var _0xff10=function(_0xdd69ef,_0x9ee2f3){_0xdd69ef=_0xdd69ef-0x0;var _0x24def1=_0xf10f[_0xdd69ef];return _0x24def1;};'use strict';var EventEmitter=require(_0xff10('0x0'));var ChatInteraction=require(_0xff10('0x1'))['db']['ChatInteraction'];var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xff10('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xff10('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1d0ddd){return function(_0x5ccca2,_0x2d7e47,_0x3512f6){_0x5ccca2['getUsers']({'attributes':['id'],'raw':!![]})[_0xff10('0x4')](function(_0x138abc){_0x5ccca2['setDataValue'](_0xff10('0x5'),_0x138abc['map'](function(_0x14faf3){return{'id':_0x14faf3['id']};}));return ChatMessage[_0xff10('0x6')]({'where':{'ChatInteractionId':_0x5ccca2['id'],'direction':'in','read':![]},'raw':!![]});})[_0xff10('0x4')](function(_0x153a51){_0x5ccca2[_0xff10('0x7')](_0xff10('0x8'),_0x153a51['length']);ChatInteractionEvents[_0xff10('0x9')](_0x1d0ddd+':'+_0x5ccca2['id'],_0x5ccca2);ChatInteractionEvents[_0xff10('0x9')](_0x1d0ddd,_0x5ccca2);_0x3512f6(null);})[_0xff10('0xa')](_0x3512f6(null));};}for(var e in events){if(events[_0xff10('0xb')](e)){var event=events[e];ChatInteraction[_0xff10('0xc')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index 9eadb1a..88a1c02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bea=['format','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','define','chat_interactions'];(function(_0x59c282,_0x30fda4){var _0x1dfec5=function(_0x4c168f){while(--_0x4c168f){_0x59c282['push'](_0x59c282['shift']());}};_0x1dfec5(++_0x30fda4);}(_0x1bea,0x9d));var _0xa1be=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0x1bea[_0x4b73a2];return _0x383c66;};'use strict';var _=require(_0xa1be('0x0'));var util=require(_0xa1be('0x1'));var logger=require(_0xa1be('0x2'))('api');var moment=require(_0xa1be('0x3'));var BPromise=require(_0xa1be('0x4'));var rp=require(_0xa1be('0x5'));var fs=require('fs');var path=require(_0xa1be('0x6'));var rimraf=require('rimraf');var config=require(_0xa1be('0x7'));var attributes=require(_0xa1be('0x8'));module['exports']=function(_0x257178,_0x25ebbc){return _0x257178[_0xa1be('0x9')]('ChatInteraction',attributes,{'tableName':_0xa1be('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x8f5665,_0x32c169,_0x3be7fa){if(_0x8f5665['changed']('closed')){_0x8f5665['closedAt']=moment()[_0xa1be('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3be7fa(null,_0x8f5665);}},'charset':_0xa1be('0xc'),'collate':_0xa1be('0xd')});};
\ No newline at end of file
+var _0x431b=['moment','bluebird','request-promise','rimraf','../../config/environment','./chatInteraction.attributes','define','chat_interactions','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x431b,0x10c));var _0xb431=function(_0x31bd8b,_0x56fa02){_0x31bd8b=_0x31bd8b-0x0;var _0x1506e4=_0x431b[_0x31bd8b];return _0x1506e4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb431('0x0'))(_0xb431('0x1'));var moment=require(_0xb431('0x2'));var BPromise=require(_0xb431('0x3'));var rp=require(_0xb431('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb431('0x5'));var config=require(_0xb431('0x6'));var attributes=require(_0xb431('0x7'));module['exports']=function(_0x2dea6c,_0x4c2d1d){return _0x2dea6c[_0xb431('0x8')]('ChatInteraction',attributes,{'tableName':_0xb431('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x478d19,_0x3cde06,_0x470601){if(_0x478d19['changed'](_0xb431('0xa'))){_0x478d19['closedAt']=moment()[_0xb431('0xb')](_0xb431('0xc'));}_0x470601(null,_0x478d19);}},'charset':_0xb431('0xd'),'collate':_0xb431('0xe')});};
\ No newline at end of file
index 2e5a30c..336dfc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f1=['addTags','omit','ids','AddTags','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','UpdateChatInteraction','ChatInteraction','body','options','raw','where','limit','then','AddTagsToChatInteraction','find'];(function(_0x1c190c,_0x48125d){var _0x4fda82=function(_0x41179c){while(--_0x41179c){_0x1c190c['push'](_0x1c190c['shift']());}};_0x4fda82(++_0x48125d);}(_0xa5f1,0xfb));var _0x1a5f=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa5f1[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x1a5f('0x0'));var util=require(_0x1a5f('0x1'));var moment=require(_0x1a5f('0x2'));var BPromise=require(_0x1a5f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a5f('0x4'));var db=require(_0x1a5f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1a5f('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1a5f('0x7'));var client=jayson[_0x1a5f('0x8')][_0x1a5f('0x9')]({'port':0x232a});config[_0x1a5f('0xa')]=_[_0x1a5f('0xb')](config[_0x1a5f('0xa')],{'host':_0x1a5f('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1a5f('0xa')]));require(_0x1a5f('0xd'))[_0x1a5f('0xe')](socket);function respondWithRpcPromise(_0x536b73,_0x453148,_0x5830a3){return new BPromise(function(_0x140fe7,_0x534b0d){return client[_0x1a5f('0xf')](_0x536b73,_0x5830a3)['then'](function(_0x2e1c0f){logger[_0x1a5f('0x10')](_0x1a5f('0x11'),_0x453148,'request\x20sent');logger[_0x1a5f('0x12')](_0x1a5f('0x13'),_0x453148,_0x1a5f('0x14'),JSON[_0x1a5f('0x15')](_0x2e1c0f));if(_0x2e1c0f[_0x1a5f('0x16')]){if(_0x2e1c0f[_0x1a5f('0x16')][_0x1a5f('0x17')]===0x1f4){logger[_0x1a5f('0x16')](_0x1a5f('0x11'),_0x453148,_0x2e1c0f[_0x1a5f('0x16')]['message']);return _0x534b0d(_0x2e1c0f['error'][_0x1a5f('0x18')]);}logger[_0x1a5f('0x16')](_0x1a5f('0x11'),_0x453148,_0x2e1c0f['error'][_0x1a5f('0x18')]);return _0x140fe7(_0x2e1c0f[_0x1a5f('0x16')][_0x1a5f('0x18')]);}else{logger[_0x1a5f('0x10')]('ChatInteraction,\x20%s,\x20%s',_0x453148,_0x1a5f('0x14'));_0x140fe7(_0x2e1c0f[_0x1a5f('0x19')][_0x1a5f('0x18')]);}})['catch'](function(_0x342160){logger[_0x1a5f('0x16')](_0x1a5f('0x11'),_0x453148,_0x342160);_0x534b0d(_0x342160);});});}exports[_0x1a5f('0x1a')]=function(_0x5d1cc6){var _0x5ea802=this;return new Promise(function(_0x1aa344,_0x286ca6){return db[_0x1a5f('0x1b')]['update'](_0x5d1cc6[_0x1a5f('0x1c')],{'raw':_0x5d1cc6['options']?_0x5d1cc6[_0x1a5f('0x1d')][_0x1a5f('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d1cc6[_0x1a5f('0x1d')]?_0x5d1cc6[_0x1a5f('0x1d')][_0x1a5f('0x1f')]||null:null,'attributes':_0x5d1cc6[_0x1a5f('0x1d')]?_0x5d1cc6['options']['attributes']||null:null,'limit':_0x5d1cc6[_0x1a5f('0x1d')]?_0x5d1cc6[_0x1a5f('0x1d')][_0x1a5f('0x20')]||null:null})[_0x1a5f('0x21')](function(_0x33f164){logger[_0x1a5f('0x10')](_0x1a5f('0x1a'),_0x5d1cc6);logger[_0x1a5f('0x12')](_0x1a5f('0x1a'),_0x5d1cc6,JSON[_0x1a5f('0x15')](_0x33f164));_0x1aa344(_0x33f164);})['catch'](function(_0x54e162){logger[_0x1a5f('0x16')]('UpdateChatInteraction',_0x54e162[_0x1a5f('0x18')],_0x5d1cc6);_0x286ca6(_0x5ea802[_0x1a5f('0x16')](0x1f4,_0x54e162[_0x1a5f('0x18')]));});});};exports[_0x1a5f('0x22')]=function(_0x2a0062){return new Promise(function(_0xf2f71b,_0x27dd5e){return db[_0x1a5f('0x1b')][_0x1a5f('0x23')]({'where':_0x2a0062['options']?_0x2a0062['options'][_0x1a5f('0x1f')]||null:null})[_0x1a5f('0x21')](function(_0x3ca7e7){if(_0x3ca7e7){return _0x3ca7e7[_0x1a5f('0x24')](_0x2a0062['body']['ids'],_[_0x1a5f('0x25')](_0x2a0062['body'],[_0x1a5f('0x26'),'id'])||{});}})['spread'](function(_0x406edc){logger[_0x1a5f('0x10')](_0x1a5f('0x27'),_0x2a0062);logger[_0x1a5f('0x12')]('AddTags',_0x2a0062,JSON[_0x1a5f('0x15')](_0x406edc));_0xf2f71b(_0x406edc);})[_0x1a5f('0x28')](function(_0x2f37db){logger[_0x1a5f('0x16')](_0x1a5f('0x27'),_0x2f37db[_0x1a5f('0x18')],_0x2a0062);_0x27dd5e(_this[_0x1a5f('0x16')](0x1f4,_0x2f37db[_0x1a5f('0x18')]));});});};
\ No newline at end of file
+var _0xf1e6=['update','body','options','where','limit','AddTagsToChatInteraction','ChatInteraction','find','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateChatInteraction'];(function(_0x337b30,_0x5b6ab5){var _0x194ae2=function(_0x164da0){while(--_0x164da0){_0x337b30['push'](_0x337b30['shift']());}};_0x194ae2(++_0x5b6ab5);}(_0xf1e6,0x17d));var _0x6f1e=function(_0x215b9f,_0x484ce3){_0x215b9f=_0x215b9f-0x0;var _0x4ad616=_0xf1e6[_0x215b9f];return _0x4ad616;};'use strict';var _=require('lodash');var util=require(_0x6f1e('0x0'));var moment=require(_0x6f1e('0x1'));var BPromise=require(_0x6f1e('0x2'));var rs=require(_0x6f1e('0x3'));var fs=require('fs');var Redis=require(_0x6f1e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6f1e('0x5'));var logger=require(_0x6f1e('0x6'))(_0x6f1e('0x7'));var config=require(_0x6f1e('0x8'));var jayson=require(_0x6f1e('0x9'));var client=jayson[_0x6f1e('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x6f1e('0xb')],{'host':_0x6f1e('0xc'),'port':0x18eb});var socket=require(_0x6f1e('0xd'))(new Redis(config[_0x6f1e('0xb')]));require(_0x6f1e('0xe'))[_0x6f1e('0xf')](socket);function respondWithRpcPromise(_0x2e2789,_0x456bbf,_0x508aa4){return new BPromise(function(_0x37d96f,_0x253383){return client[_0x6f1e('0x10')](_0x2e2789,_0x508aa4)[_0x6f1e('0x11')](function(_0xc0b260){logger[_0x6f1e('0x12')](_0x6f1e('0x13'),_0x456bbf,_0x6f1e('0x14'));logger[_0x6f1e('0x15')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x456bbf,_0x6f1e('0x14'),JSON[_0x6f1e('0x16')](_0xc0b260));if(_0xc0b260[_0x6f1e('0x17')]){if(_0xc0b260[_0x6f1e('0x17')][_0x6f1e('0x18')]===0x1f4){logger[_0x6f1e('0x17')](_0x6f1e('0x13'),_0x456bbf,_0xc0b260[_0x6f1e('0x17')][_0x6f1e('0x19')]);return _0x253383(_0xc0b260[_0x6f1e('0x17')][_0x6f1e('0x19')]);}logger[_0x6f1e('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x456bbf,_0xc0b260[_0x6f1e('0x17')][_0x6f1e('0x19')]);return _0x37d96f(_0xc0b260[_0x6f1e('0x17')]['message']);}else{logger['info'](_0x6f1e('0x13'),_0x456bbf,_0x6f1e('0x14'));_0x37d96f(_0xc0b260[_0x6f1e('0x1a')]['message']);}})[_0x6f1e('0x1b')](function(_0x23d25b){logger[_0x6f1e('0x17')](_0x6f1e('0x13'),_0x456bbf,_0x23d25b);_0x253383(_0x23d25b);});});}exports[_0x6f1e('0x1c')]=function(_0x529b23){var _0x80513f=this;return new Promise(function(_0x41459a,_0x312a87){return db['ChatInteraction'][_0x6f1e('0x1d')](_0x529b23[_0x6f1e('0x1e')],{'raw':_0x529b23[_0x6f1e('0x1f')]?_0x529b23[_0x6f1e('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529b23[_0x6f1e('0x1f')]?_0x529b23['options'][_0x6f1e('0x20')]||null:null,'attributes':_0x529b23[_0x6f1e('0x1f')]?_0x529b23[_0x6f1e('0x1f')]['attributes']||null:null,'limit':_0x529b23[_0x6f1e('0x1f')]?_0x529b23[_0x6f1e('0x1f')][_0x6f1e('0x21')]||null:null})[_0x6f1e('0x11')](function(_0x1580b8){logger[_0x6f1e('0x12')](_0x6f1e('0x1c'),_0x529b23);logger[_0x6f1e('0x15')]('UpdateChatInteraction',_0x529b23,JSON[_0x6f1e('0x16')](_0x1580b8));_0x41459a(_0x1580b8);})[_0x6f1e('0x1b')](function(_0x15b59a){logger[_0x6f1e('0x17')]('UpdateChatInteraction',_0x15b59a[_0x6f1e('0x19')],_0x529b23);_0x312a87(_0x80513f['error'](0x1f4,_0x15b59a[_0x6f1e('0x19')]));});});};exports[_0x6f1e('0x22')]=function(_0x4572d4){return new Promise(function(_0x5f2bbc,_0x1c5759){return db[_0x6f1e('0x23')][_0x6f1e('0x24')]({'where':_0x4572d4['options']?_0x4572d4[_0x6f1e('0x1f')]['where']||null:null})[_0x6f1e('0x11')](function(_0x446aa4){if(_0x446aa4){return _0x446aa4['addTags'](_0x4572d4[_0x6f1e('0x1e')][_0x6f1e('0x25')],_[_0x6f1e('0x26')](_0x4572d4['body'],[_0x6f1e('0x25'),'id'])||{});}})[_0x6f1e('0x27')](function(_0x4a54fe){logger['info'](_0x6f1e('0x28'),_0x4572d4);logger[_0x6f1e('0x15')]('AddTags',_0x4572d4,JSON[_0x6f1e('0x16')](_0x4a54fe));_0x5f2bbc(_0x4a54fe);})[_0x6f1e('0x1b')](function(_0x236b5b){logger[_0x6f1e('0x17')](_0x6f1e('0x28'),_0x236b5b[_0x6f1e('0x19')],_0x4572d4);_0x1c5759(_this[_0x6f1e('0x17')](0x1f4,_0x236b5b[_0x6f1e('0x19')]));});});};
\ No newline at end of file
index ac65ee5..bdf0d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d26=['chatInteraction:','./chatInteraction.events','save','remove','emit','removeListener','register','length'];(function(_0x503185,_0x20d261){var _0xb29eff=function(_0x15e65e){while(--_0x15e65e){_0x503185['push'](_0x503185['shift']());}};_0xb29eff(++_0x20d261);}(_0x6d26,0x1e1));var _0x66d2=function(_0x51ecb2,_0x5d8020){_0x51ecb2=_0x51ecb2-0x0;var _0x5c97ef=_0x6d26[_0x51ecb2];return _0x5c97ef;};'use strict';var ChatInteractionEvents=require(_0x66d2('0x0'));var events=[_0x66d2('0x1'),_0x66d2('0x2'),'update'];function createListener(_0x243157,_0x453441){return function(_0x198bb7){_0x453441[_0x66d2('0x3')](_0x243157,_0x198bb7);};}function removeListener(_0x4ecef1,_0x5392c7){return function(){ChatInteractionEvents[_0x66d2('0x4')](_0x4ecef1,_0x5392c7);};}exports[_0x66d2('0x5')]=function(_0x57c150){for(var _0x410099=0x0,_0x33c705=events[_0x66d2('0x6')];_0x410099<_0x33c705;_0x410099++){var _0x49e688=events[_0x410099];var _0x5f3cea=createListener(_0x66d2('0x7')+_0x49e688,_0x57c150);ChatInteractionEvents['on'](_0x49e688,_0x5f3cea);}};
\ No newline at end of file
+var _0xdb6f=['chatInteraction:','./chatInteraction.events','save','remove','update','emit','removeListener','register','length'];(function(_0x53a5b8,_0x38ddc0){var _0x158341=function(_0x1d3ee7){while(--_0x1d3ee7){_0x53a5b8['push'](_0x53a5b8['shift']());}};_0x158341(++_0x38ddc0);}(_0xdb6f,0x64));var _0xfdb6=function(_0x622035,_0x1a4b91){_0x622035=_0x622035-0x0;var _0x326cf2=_0xdb6f[_0x622035];return _0x326cf2;};'use strict';var ChatInteractionEvents=require(_0xfdb6('0x0'));var events=[_0xfdb6('0x1'),_0xfdb6('0x2'),_0xfdb6('0x3')];function createListener(_0x1d81e1,_0x1bc5b9){return function(_0x392322){_0x1bc5b9[_0xfdb6('0x4')](_0x1d81e1,_0x392322);};}function removeListener(_0x1aff6b,_0x56dca0){return function(){ChatInteractionEvents[_0xfdb6('0x5')](_0x1aff6b,_0x56dca0);};}exports[_0xfdb6('0x6')]=function(_0x39f342){for(var _0x4d6f7a=0x0,_0x6519a=events[_0xfdb6('0x7')];_0x4d6f7a<_0x6519a;_0x4d6f7a++){var _0x41dc42=events[_0x4d6f7a];var _0x5a7086=createListener(_0xfdb6('0x8')+_0x41dc42,_0x39f342);ChatInteractionEvents['on'](_0x41dc42,_0x5a7086);}};
\ No newline at end of file
index dbe3282..2100e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x135f=['/:id/vidaoo','createVidaooSession','join','root','server/files/attachments/','now','originalname','replace','/:id/attachment_upload','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','customUpdate','/:id/abandon','abandon','close','delete','chatinteraction:destroy','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/messages','getMessages','/:id/my_messages','getMyMessages','create','post'];(function(_0x268e12,_0x195b13){var _0x309269=function(_0x846253){while(--_0x846253){_0x268e12['push'](_0x268e12['shift']());}};_0x309269(++_0x195b13);}(_0x135f,0x110));var _0xf135=function(_0x430c2b,_0x1a5fac){_0x430c2b=_0x430c2b-0x0;var _0x430682=_0x135f[_0x430c2b];return _0x430682;};'use strict';var multer=require(_0xf135('0x0'));var util=require(_0xf135('0x1'));var path=require(_0xf135('0x2'));var timeout=require('connect-timeout');var express=require(_0xf135('0x3'));var router=express[_0xf135('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf135('0x5'));var interaction=require(_0xf135('0x6'));var config=require(_0xf135('0x7'));var controller=require(_0xf135('0x8'));router[_0xf135('0x9')]('/',auth[_0xf135('0xa')](),controller[_0xf135('0xb')]);router['get'](_0xf135('0xc'),auth[_0xf135('0xa')](),controller['describe']);router['get'](_0xf135('0xd'),auth[_0xf135('0xe')](),controller[_0xf135('0xf')]);router[_0xf135('0x9')]('/:id/attachment_download',auth[_0xf135('0xe')](),controller['attachmentDownload']);router['get'](_0xf135('0x10'),auth[_0xf135('0xa')](),controller[_0xf135('0x11')]);router[_0xf135('0x9')](_0xf135('0x12'),auth['isChatInteractionAuthorized'](),controller[_0xf135('0x13')]);router[_0xf135('0x9')]('/:id/download',auth[_0xf135('0xa')](),controller['download']);router['post']('/',auth[_0xf135('0xa')](),controller[_0xf135('0x14')]);router[_0xf135('0x15')](_0xf135('0x16'),auth[_0xf135('0xa')](),controller[_0xf135('0x17')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x353434,_0x56ac25,_0x270d4f){_0x270d4f(null,path[_0xf135('0x18')](config[_0xf135('0x19')],_0xf135('0x1a')));},'filename':function(_0x3c2e75,_0x45e664,_0x40792c){_0x40792c(null,util['format']('%s-%s',Date[_0xf135('0x1b')](),_0x45e664[_0xf135('0x1c')][_0xf135('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf135('0x15')](_0xf135('0x1e'),upload['single'](_0xf135('0x1f')),controller[_0xf135('0x20')]);router[_0xf135('0x15')](_0xf135('0x10'),auth[_0xf135('0xe')](),controller[_0xf135('0x21')]);router[_0xf135('0x15')](_0xf135('0x22'),auth[_0xf135('0xa')](),interaction[_0xf135('0x23')](_0xf135('0x24'),_0xf135('0x25')),controller[_0xf135('0x26')]);router[_0xf135('0x27')](_0xf135('0xd'),auth[_0xf135('0xa')](),interaction[_0xf135('0x23')](_0xf135('0x24'),_0xf135('0x28')),controller['update']);router[_0xf135('0x27')]('/:id/custom_update',controller[_0xf135('0x29')]);router['put'](_0xf135('0x2a'),auth[_0xf135('0xe')](),controller[_0xf135('0x2b')]);router[_0xf135('0x27')]('/:id/close',controller[_0xf135('0x2c')]);router[_0xf135('0x2d')]('/:id',auth[_0xf135('0xa')](),interaction[_0xf135('0x23')]('chat',_0xf135('0x2e')),controller[_0xf135('0x2f')]);router['delete']('/:id/tags',auth[_0xf135('0xa')](),controller['removeTags']);module[_0xf135('0x30')]=router;
\ No newline at end of file
+var _0x6b8e=['update','/:id/custom_update','/:id/abandon','abandon','/:id/close','close','delete','tracked','chatinteraction:destroy','destroy','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./chatInteraction.controller','get','index','/describe','isAuthenticated','describe','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','getMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/messages','/:id/tags','chat','put','/:id','chatinteraction:update'];(function(_0x4b7c3c,_0xfcc823){var _0x27d645=function(_0x269280){while(--_0x269280){_0x4b7c3c['push'](_0x4b7c3c['shift']());}};_0x27d645(++_0xfcc823);}(_0x6b8e,0x105));var _0xe6b8=function(_0x1c7e42,_0x17d603){_0x1c7e42=_0x1c7e42-0x0;var _0x1142d9=_0x6b8e[_0x1c7e42];return _0x1142d9;};'use strict';var multer=require(_0xe6b8('0x0'));var util=require(_0xe6b8('0x1'));var path=require(_0xe6b8('0x2'));var timeout=require(_0xe6b8('0x3'));var express=require(_0xe6b8('0x4'));var router=express[_0xe6b8('0x5')]();var fs_extra=require(_0xe6b8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe6b8('0x7'));var config=require('../../config/environment');var controller=require(_0xe6b8('0x8'));router[_0xe6b8('0x9')]('/',auth['isAuthenticated'](),controller[_0xe6b8('0xa')]);router[_0xe6b8('0x9')](_0xe6b8('0xb'),auth[_0xe6b8('0xc')](),controller[_0xe6b8('0xd')]);router[_0xe6b8('0x9')]('/:id',auth[_0xe6b8('0xe')](),controller['show']);router[_0xe6b8('0x9')](_0xe6b8('0xf'),auth[_0xe6b8('0xe')](),controller[_0xe6b8('0x10')]);router[_0xe6b8('0x9')]('/:id/messages',auth[_0xe6b8('0xc')](),controller[_0xe6b8('0x11')]);router['get']('/:id/my_messages',auth[_0xe6b8('0xe')](),controller['getMyMessages']);router['get'](_0xe6b8('0x12'),auth[_0xe6b8('0xc')](),controller[_0xe6b8('0x13')]);router[_0xe6b8('0x14')]('/',auth['isAuthenticated'](),controller[_0xe6b8('0x15')]);router[_0xe6b8('0x14')](_0xe6b8('0x16'),auth[_0xe6b8('0xc')](),controller[_0xe6b8('0x17')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5da4e8,_0x30d27a,_0x505454){_0x505454(null,path['join'](config['root'],_0xe6b8('0x18')));},'filename':function(_0x452944,_0x56b433,_0x3b05a7){_0x3b05a7(null,util[_0xe6b8('0x19')](_0xe6b8('0x1a'),Date[_0xe6b8('0x1b')](),_0x56b433['originalname'][_0xe6b8('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xe6b8('0x1d'),upload[_0xe6b8('0x1e')](_0xe6b8('0x1f')),controller[_0xe6b8('0x20')]);router[_0xe6b8('0x14')](_0xe6b8('0x21'),auth[_0xe6b8('0xe')](),controller['addMessage']);router[_0xe6b8('0x14')](_0xe6b8('0x22'),auth[_0xe6b8('0xc')](),interaction['tracked'](_0xe6b8('0x23'),'chatinteraction:addtags'),controller['addTags']);router[_0xe6b8('0x24')](_0xe6b8('0x25'),auth[_0xe6b8('0xc')](),interaction['tracked'](_0xe6b8('0x23'),_0xe6b8('0x26')),controller[_0xe6b8('0x27')]);router[_0xe6b8('0x24')](_0xe6b8('0x28'),controller['customUpdate']);router['put'](_0xe6b8('0x29'),auth['isChatInteractionAuthorized'](),controller[_0xe6b8('0x2a')]);router[_0xe6b8('0x24')](_0xe6b8('0x2b'),controller[_0xe6b8('0x2c')]);router[_0xe6b8('0x2d')](_0xe6b8('0x25'),auth['isAuthenticated'](),interaction[_0xe6b8('0x2e')](_0xe6b8('0x23'),_0xe6b8('0x2f')),controller[_0xe6b8('0x30')]);router[_0xe6b8('0x2d')](_0xe6b8('0x22'),auth[_0xe6b8('0xc')](),controller[_0xe6b8('0x31')]);module['exports']=router;
\ No newline at end of file
index 13cf671..1b2e444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x630c=['exports','TEXT','BOOLEAN','sequelize'];(function(_0x398b3d,_0x2f497e){var _0x20b1cf=function(_0x23a3ea){while(--_0x23a3ea){_0x398b3d['push'](_0x398b3d['shift']());}};_0x20b1cf(++_0x2f497e);}(_0x630c,0x1bb));var _0xc630=function(_0x241bf9,_0x130c42){_0x241bf9=_0x241bf9-0x0;var _0x26ebb7=_0x630c[_0x241bf9];return _0x26ebb7;};'use strict';var Sequelize=require(_0xc630('0x0'));module[_0xc630('0x1')]={'body':{'type':Sequelize[_0xc630('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xc630('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x68b9=['medium','BOOLEAN','exports','TEXT'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x68b9,0x122));var _0x968b=function(_0x57da0a,_0x284aed){_0x57da0a=_0x57da0a-0x0;var _0x3145d5=_0x68b9[_0x57da0a];return _0x3145d5;};'use strict';var Sequelize=require('sequelize');module[_0x968b('0x0')]={'body':{'type':Sequelize[_0x968b('0x1')](_0x968b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x968b('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 31af248..ce046c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d70=['describe','get','lastMessageAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','fullname','internal','online','lastLoginAt','showWebBar','-online','VoiceQueues','user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','findAll','isEmpty','role','resourceId','push','messages','FromId','ToId','-createdAt','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','name','send','ChatInternalMessage','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','include','rows','catch','params','find','create','body'];(function(_0x230078,_0x40e1b4){var _0x379ab7=function(_0x39675e){while(--_0x39675e){_0x230078['push'](_0x230078['shift']());}};_0x379ab7(++_0x40e1b4);}(_0x2d70,0x1d3));var _0x02d7=function(_0x208505,_0x241a77){_0x208505=_0x208505-0x0;var _0x1a985f=_0x2d70[_0x208505];return _0x1a985f;};'use strict';var emlformat=require(_0x02d7('0x0'));var rimraf=require(_0x02d7('0x1'));var zipdir=require(_0x02d7('0x2'));var jsonpatch=require(_0x02d7('0x3'));var rp=require(_0x02d7('0x4'));var moment=require(_0x02d7('0x5'));var BPromise=require(_0x02d7('0x6'));var Mustache=require(_0x02d7('0x7'));var util=require(_0x02d7('0x8'));var path=require(_0x02d7('0x9'));var sox=require(_0x02d7('0xa'));var csv=require('to-csv');var ejs=require(_0x02d7('0xb'));var fs=require('fs');var fs_extra=require(_0x02d7('0xc'));var _=require('lodash');var squel=require(_0x02d7('0xd'));var crypto=require(_0x02d7('0xe'));var jsforce=require(_0x02d7('0xf'));var deskjs=require(_0x02d7('0x10'));var toCsv=require(_0x02d7('0x11'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x02d7('0x12'));var authService=require(_0x02d7('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x02d7('0x14'));var hardwareService=require(_0x02d7('0x15'));var logger=require(_0x02d7('0x16'))(_0x02d7('0x17'));var utils=require('../../config/utils');var config=require(_0x02d7('0x18'));var licenseUtil=require(_0x02d7('0x19'));var db=require(_0x02d7('0x1a'))['db'];config[_0x02d7('0x1b')]=_[_0x02d7('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x02d7('0x1d'))(new Redis(config[_0x02d7('0x1b')]));require(_0x02d7('0x1e'))[_0x02d7('0x1f')](socket);function respondWithStatusCode(_0x5a6f07,_0x3a4195){_0x3a4195=_0x3a4195||0xcc;return function(_0x38aa92){if(_0x38aa92){return _0x5a6f07['sendStatus'](_0x3a4195);}return _0x5a6f07[_0x02d7('0x20')](_0x3a4195)['end']();};}function respondWithResult(_0x53a4bd,_0x59d643){_0x59d643=_0x59d643||0xc8;return function(_0xd988a1){if(_0xd988a1){return _0x53a4bd[_0x02d7('0x20')](_0x59d643)[_0x02d7('0x21')](_0xd988a1);}};}function respondWithFilteredResult(_0x738dce,_0x253e0b){return function(_0x505520){if(_0x505520){var _0x2911fa=typeof _0x253e0b[_0x02d7('0x22')]===_0x02d7('0x23')&&typeof _0x253e0b['limit']===_0x02d7('0x23');var _0xab5132=_0x505520[_0x02d7('0x24')];var _0x499ee3=_0x2911fa?0x0:_0x253e0b['offset'];var _0x47fe60=_0x2911fa?_0x505520[_0x02d7('0x24')]:_0x253e0b[_0x02d7('0x22')]+_0x253e0b[_0x02d7('0x25')];var _0x421e5b;if(_0x47fe60>=_0xab5132){_0x47fe60=_0xab5132;_0x421e5b=0xc8;}else{_0x421e5b=0xce;}_0x738dce[_0x02d7('0x20')](_0x421e5b);return _0x738dce['set'](_0x02d7('0x26'),_0x499ee3+'-'+_0x47fe60+'/'+_0xab5132)['json'](_0x505520);}return null;};}function patchUpdates(_0x1688f7){return function(_0xe99da3){try{jsonpatch[_0x02d7('0x27')](_0xe99da3,_0x1688f7,!![]);}catch(_0x45773d){return BPromise[_0x02d7('0x28')](_0x45773d);}return _0xe99da3[_0x02d7('0x29')]();};}function saveUpdates(_0x111a1b,_0x53173c){return function(_0x275f92){if(_0x275f92){return _0x275f92[_0x02d7('0x2a')](_0x111a1b)[_0x02d7('0x2b')](function(_0x1c82f8){return _0x1c82f8;});}return null;};}function removeEntity(_0x17e25f,_0x51fc46){return function(_0x5aa5b2){if(_0x5aa5b2){return _0x5aa5b2[_0x02d7('0x2c')]()[_0x02d7('0x2b')](function(){_0x17e25f['status'](0xcc)[_0x02d7('0x2d')]();});}};}function handleEntityNotFound(_0x27fae7,_0x1a6454){return function(_0x22e53e){if(!_0x22e53e){_0x27fae7[_0x02d7('0x2e')](0x194);}return _0x22e53e;};}function handleError(_0x4b686f,_0x348368){_0x348368=_0x348368||0x1f4;return function(_0x4fc208){logger['error'](_0x4fc208['stack']);if(_0x4fc208['name']){delete _0x4fc208[_0x02d7('0x2f')];}_0x4b686f['status'](_0x348368)[_0x02d7('0x30')](_0x4fc208);};}exports['index']=function(_0x123874,_0x17c5db){var _0x5499d4={},_0x4e5489={},_0x45797e={'count':0x0,'rows':[]};var _0x4aecb0=_['map'](db[_0x02d7('0x31')]['rawAttributes'],function(_0x252c07){return{'name':_0x252c07['fieldName'],'type':_0x252c07[_0x02d7('0x32')][_0x02d7('0x33')]};});_0x4e5489[_0x02d7('0x34')]=_['map'](_0x4aecb0,'name');_0x4e5489[_0x02d7('0x35')]=_[_0x02d7('0x36')](_0x123874[_0x02d7('0x35')]);_0x4e5489[_0x02d7('0x37')]=_[_0x02d7('0x38')](_0x4e5489[_0x02d7('0x34')],_0x4e5489['query']);_0x5499d4[_0x02d7('0x39')]=_[_0x02d7('0x38')](_0x4e5489['model'],qs['fields'](_0x123874['query'][_0x02d7('0x3a')]));_0x5499d4[_0x02d7('0x39')]=_0x5499d4[_0x02d7('0x39')][_0x02d7('0x3b')]?_0x5499d4[_0x02d7('0x39')]:_0x4e5489[_0x02d7('0x34')];if(!_0x123874['query'][_0x02d7('0x3c')](_0x02d7('0x3d'))){_0x5499d4[_0x02d7('0x25')]=qs['limit'](_0x123874['query']['limit']);_0x5499d4[_0x02d7('0x22')]=qs['offset'](_0x123874['query']['offset']);}_0x5499d4[_0x02d7('0x3e')]=qs[_0x02d7('0x3f')](_0x123874[_0x02d7('0x35')]['sort']);_0x5499d4[_0x02d7('0x40')]=qs['filters'](_[_0x02d7('0x41')](_0x123874[_0x02d7('0x35')],_0x4e5489[_0x02d7('0x37')]),_0x4aecb0);if(_0x123874['query'][_0x02d7('0x42')]){_0x5499d4[_0x02d7('0x40')]=_[_0x02d7('0x43')](_0x5499d4[_0x02d7('0x40')],{'$or':_[_0x02d7('0x44')](_0x4aecb0,function(_0xa7720a){if(_0xa7720a['type']!==_0x02d7('0x45')){var _0x58c506={};_0x58c506[_0xa7720a[_0x02d7('0x2f')]]={'$like':'%'+_0x123874[_0x02d7('0x35')][_0x02d7('0x42')]+'%'};return _0x58c506;}})});}_0x5499d4=_['merge']({},_0x5499d4,_0x123874['options']);var _0x164b2b={'where':_0x5499d4[_0x02d7('0x40')]};return db[_0x02d7('0x31')][_0x02d7('0x24')](_0x164b2b)[_0x02d7('0x2b')](function(_0x524689){_0x45797e[_0x02d7('0x24')]=_0x524689;if(_0x123874[_0x02d7('0x35')][_0x02d7('0x46')]){_0x5499d4[_0x02d7('0x47')]=[{'all':!![]}];}return db[_0x02d7('0x31')]['findAll'](_0x5499d4);})[_0x02d7('0x2b')](function(_0x597971){_0x45797e[_0x02d7('0x48')]=_0x597971;return _0x45797e;})[_0x02d7('0x2b')](respondWithFilteredResult(_0x17c5db,_0x5499d4))[_0x02d7('0x49')](handleError(_0x17c5db,null));};exports['show']=function(_0x55e746,_0x431cdf){var _0x3924fe={'raw':!![],'where':{'id':_0x55e746[_0x02d7('0x4a')]['id']}},_0x4968cf={};_0x4968cf['model']=_[_0x02d7('0x36')](db[_0x02d7('0x31')]['rawAttributes']);_0x4968cf[_0x02d7('0x35')]=_[_0x02d7('0x36')](_0x55e746[_0x02d7('0x35')]);_0x4968cf['filters']=_[_0x02d7('0x38')](_0x4968cf[_0x02d7('0x34')],_0x4968cf[_0x02d7('0x35')]);_0x3924fe[_0x02d7('0x39')]=_['intersection'](_0x4968cf[_0x02d7('0x34')],qs['fields'](_0x55e746[_0x02d7('0x35')][_0x02d7('0x3a')]));_0x3924fe[_0x02d7('0x39')]=_0x3924fe[_0x02d7('0x39')][_0x02d7('0x3b')]?_0x3924fe['attributes']:_0x4968cf[_0x02d7('0x34')];if(_0x55e746[_0x02d7('0x35')]['includeAll']){_0x3924fe[_0x02d7('0x47')]=[{'all':!![]}];}_0x3924fe=_[_0x02d7('0x43')]({},_0x3924fe,_0x55e746['options']);return db[_0x02d7('0x31')][_0x02d7('0x4b')](_0x3924fe)[_0x02d7('0x2b')](handleEntityNotFound(_0x431cdf,null))[_0x02d7('0x2b')](respondWithResult(_0x431cdf,null))[_0x02d7('0x49')](handleError(_0x431cdf,null));};exports['create']=function(_0x4b9573,_0x51afcf){return db['ChatInternalMessage'][_0x02d7('0x4c')](_0x4b9573['body'],{})[_0x02d7('0x2b')](respondWithResult(_0x51afcf,0xc9))[_0x02d7('0x49')](handleError(_0x51afcf,null));};exports[_0x02d7('0x2a')]=function(_0x2026f2,_0x1699fb){if(_0x2026f2[_0x02d7('0x4d')]['id']){delete _0x2026f2['body']['id'];}return db['ChatInternalMessage'][_0x02d7('0x4b')]({'where':{'id':_0x2026f2[_0x02d7('0x4a')]['id']}})[_0x02d7('0x2b')](handleEntityNotFound(_0x1699fb,null))['then'](saveUpdates(_0x2026f2[_0x02d7('0x4d')],null))[_0x02d7('0x2b')](respondWithResult(_0x1699fb,null))[_0x02d7('0x49')](handleError(_0x1699fb,null));};exports[_0x02d7('0x2c')]=function(_0x175d35,_0x534097){return db[_0x02d7('0x31')][_0x02d7('0x4b')]({'where':{'id':_0x175d35[_0x02d7('0x4a')]['id']}})[_0x02d7('0x2b')](handleEntityNotFound(_0x534097,null))[_0x02d7('0x2b')](removeEntity(_0x534097,null))['catch'](handleError(_0x534097,null));};exports[_0x02d7('0x4e')]=function(_0x58526e,_0x25cfb5){return db[_0x02d7('0x31')][_0x02d7('0x4e')]()[_0x02d7('0x2b')](respondWithResult(_0x25cfb5,null))[_0x02d7('0x49')](handleError(_0x25cfb5,null));};function wrapUser(_0x5e315d){return function(_0x1b936b){var _0x408bde=_0x5e315d[_0x02d7('0x4f')]({'plain':!![]});_0x408bde['messages']=[];if(_0x1b936b){_0x408bde[_0x02d7('0x50')]=_0x1b936b['createdAt'];_0x408bde[_0x02d7('0x51')]=_0x1b936b;}else{_0x408bde[_0x02d7('0x50')]=moment(0x0)['format'](_0x02d7('0x52'));_0x408bde['lastMessage']={};}return _0x408bde;};}exports[_0x02d7('0x53')]=function(_0x405829,_0xaad82d,_0x5e6a5a){var _0x14bb82=[];return db[_0x02d7('0x54')]['findAll']({'where':{'role':[_0x02d7('0x55'),_0x02d7('0x56'),'user']},'attributes':['id',_0x02d7('0x57'),_0x02d7('0x2f'),'role','userpic',_0x02d7('0x58'),_0x02d7('0x59'),_0x02d7('0x5a'),'allowmessenger',_0x02d7('0x5b')],'order':qs[_0x02d7('0x3f')](_0x02d7('0x5c')),'include':[{'model':db['VoiceQueue'],'as':_0x02d7('0x5d'),'attributes':['id','name',_0x02d7('0x32')],'through':{'attributes':[]}}]})[_0x02d7('0x2b')](function(_0x795d96){if(_0x795d96){var _0x112f27=_0x405829['user'][_0x02d7('0x4f')]({'plain':!![]});if(!_0x112f27)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x112f27['role']===_0x02d7('0x5e')){return db[_0x02d7('0x5f')][_0x02d7('0x4b')]({'where':{'name':_0x02d7('0x60'),'userProfileId':_0x112f27[_0x02d7('0x61')]},'raw':!![]})['then'](function(_0x91e479){if(_0x91e479){if(_0x91e479[_0x02d7('0x62')]===0x0){return db[_0x02d7('0x63')][_0x02d7('0x64')]({'where':{'sectionId':_0x91e479['id']},'raw':!![]})[_0x02d7('0x2b')](function(_0x557da1){var _0x2ca204=[];if(_[_0x02d7('0x65')](_0x557da1)){_0x2ca204=_[_0x02d7('0x42')](_0x795d96,function(_0x3c6de3){if(_0x3c6de3[_0x02d7('0x66')]!==_0x02d7('0x55')){return _0x3c6de3;}});return _0x2ca204;}else{for(var _0xb58404=0x0;_0xb58404<_0x795d96[_0x02d7('0x3b')];_0xb58404++){var _0x1f43aa=_0x795d96[_0xb58404];if(_0x1f43aa[_0x02d7('0x66')]===_0x02d7('0x55')){var _0x2f3197=_[_0x02d7('0x4b')](_0x557da1,function(_0x1f5e54){return _0x1f5e54[_0x02d7('0x67')]===_0x1f43aa['id'];});if(_0x2f3197)_0x2ca204['push'](_0x1f43aa);}else{_0x2ca204[_0x02d7('0x68')](_0x1f43aa);}}return _0x2ca204;}});}else{return _0x795d96;}}else{var _0x121a28=_[_0x02d7('0x42')](_0x795d96,function(_0x15698c){if(_0x15698c['role']!==_0x02d7('0x55')){return _0x15698c;}});return _0x121a28;}});}else{return _0x795d96;}}})[_0x02d7('0x2b')](function(_0x563c53){var _0x4b8318=[];if(_0x563c53){_0x14bb82=_0x563c53;for(var _0x5bc9d9=0x0;_0x5bc9d9<_0x563c53['length'];_0x5bc9d9+=0x1){_0x14bb82[_0x5bc9d9][_0x02d7('0x69')]=[];_0x4b8318[_0x02d7('0x68')](db[_0x02d7('0x31')]['find']({'where':{'FromId':[_0x405829[_0x02d7('0x5e')]['id'],_0x563c53[_0x5bc9d9]['id']],'ToId':[_0x405829[_0x02d7('0x5e')]['id'],_0x563c53[_0x5bc9d9]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x02d7('0x6a'),_0x02d7('0x6b'),'read',_0x02d7('0x4d')],'order':qs[_0x02d7('0x3f')](_0x02d7('0x6c')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x563c53[_0x5bc9d9])));}return BPromise['all'](_0x4b8318);}return[];})['then'](function(_0x26a3df){return{'rows':_0x26a3df,'count':_0x26a3df[_0x02d7('0x3b')]};})['then'](respondWithResult(_0xaad82d,null))[_0x02d7('0x49')](handleError(_0xaad82d,null));};
\ No newline at end of file
+var _0x2527=['undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','map','ChatInternalMessage','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','describe','get','messages','lastMessageAt','lastMessage','format','User','user','role','internal','online','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','createdAt','FromId','ToId','all','zip-dir','request-promise','bluebird','mustache','path','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','offset'];(function(_0x223a73,_0x3ee526){var _0x67e0d0=function(_0x46c4e1){while(--_0x46c4e1){_0x223a73['push'](_0x223a73['shift']());}};_0x67e0d0(++_0x3ee526);}(_0x2527,0x121));var _0x7252=function(_0x194188,_0x1951ef){_0x194188=_0x194188-0x0;var _0x5d57ea=_0x2527[_0x194188];return _0x5d57ea;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7252('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7252('0x1'));var moment=require('moment');var BPromise=require(_0x7252('0x2'));var Mustache=require(_0x7252('0x3'));var util=require('util');var path=require(_0x7252('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7252('0x5'));var fs=require('fs');var fs_extra=require(_0x7252('0x6'));var _=require('lodash');var squel=require(_0x7252('0x7'));var crypto=require('crypto');var jsforce=require(_0x7252('0x8'));var deskjs=require(_0x7252('0x9'));var toCsv=require(_0x7252('0xa'));var querystring=require(_0x7252('0xb'));var Papa=require(_0x7252('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7252('0xd'));var as=require(_0x7252('0xe'));var hardwareService=require(_0x7252('0xf'));var logger=require(_0x7252('0x10'))(_0x7252('0x11'));var utils=require('../../config/utils');var config=require(_0x7252('0x12'));var licenseUtil=require(_0x7252('0x13'));var db=require(_0x7252('0x14'))['db'];config[_0x7252('0x15')]=_[_0x7252('0x16')](config[_0x7252('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x7252('0x17'))(new Redis(config['redis']));require(_0x7252('0x18'))[_0x7252('0x19')](socket);function respondWithStatusCode(_0x40f973,_0x3b842c){_0x3b842c=_0x3b842c||0xcc;return function(_0x58cb28){if(_0x58cb28){return _0x40f973[_0x7252('0x1a')](_0x3b842c);}return _0x40f973[_0x7252('0x1b')](_0x3b842c)['end']();};}function respondWithResult(_0x277e54,_0x398ead){_0x398ead=_0x398ead||0xc8;return function(_0x3d0ac5){if(_0x3d0ac5){return _0x277e54['status'](_0x398ead)['json'](_0x3d0ac5);}};}function respondWithFilteredResult(_0x46c692,_0x3d3eaa){return function(_0x487bd3){if(_0x487bd3){var _0x358179=typeof _0x3d3eaa[_0x7252('0x1c')]===_0x7252('0x1d')&&typeof _0x3d3eaa['limit']===_0x7252('0x1d');var _0x3592ce=_0x487bd3[_0x7252('0x1e')];var _0x1658fe=_0x358179?0x0:_0x3d3eaa[_0x7252('0x1c')];var _0x2cb501=_0x358179?_0x487bd3[_0x7252('0x1e')]:_0x3d3eaa[_0x7252('0x1c')]+_0x3d3eaa['limit'];var _0x280a04;if(_0x2cb501>=_0x3592ce){_0x2cb501=_0x3592ce;_0x280a04=0xc8;}else{_0x280a04=0xce;}_0x46c692[_0x7252('0x1b')](_0x280a04);return _0x46c692[_0x7252('0x1f')](_0x7252('0x20'),_0x1658fe+'-'+_0x2cb501+'/'+_0x3592ce)[_0x7252('0x21')](_0x487bd3);}return null;};}function patchUpdates(_0x47268a){return function(_0x4cf957){try{jsonpatch[_0x7252('0x22')](_0x4cf957,_0x47268a,!![]);}catch(_0x169c00){return BPromise[_0x7252('0x23')](_0x169c00);}return _0x4cf957[_0x7252('0x24')]();};}function saveUpdates(_0x568a72,_0x4f70a9){return function(_0x52853c){if(_0x52853c){return _0x52853c[_0x7252('0x25')](_0x568a72)[_0x7252('0x26')](function(_0x464a33){return _0x464a33;});}return null;};}function removeEntity(_0x2a60d1,_0x4d8e90){return function(_0x2ac2ba){if(_0x2ac2ba){return _0x2ac2ba[_0x7252('0x27')]()[_0x7252('0x26')](function(){_0x2a60d1[_0x7252('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x564d9f,_0xf2518d){return function(_0xbc8821){if(!_0xbc8821){_0x564d9f[_0x7252('0x1a')](0x194);}return _0xbc8821;};}function handleError(_0x26969c,_0x5c61eb){_0x5c61eb=_0x5c61eb||0x1f4;return function(_0x23769e){logger['error'](_0x23769e[_0x7252('0x28')]);if(_0x23769e[_0x7252('0x29')]){delete _0x23769e[_0x7252('0x29')];}_0x26969c[_0x7252('0x1b')](_0x5c61eb)[_0x7252('0x2a')](_0x23769e);};}exports['index']=function(_0x253a15,_0x1c8fa9){var _0x5133d2={},_0x5bfd02={},_0x2ba538={'count':0x0,'rows':[]};var _0x497ba2=_[_0x7252('0x2b')](db[_0x7252('0x2c')][_0x7252('0x2d')],function(_0x10f7bf){return{'name':_0x10f7bf['fieldName'],'type':_0x10f7bf[_0x7252('0x2e')][_0x7252('0x2f')]};});_0x5bfd02[_0x7252('0x30')]=_[_0x7252('0x2b')](_0x497ba2,_0x7252('0x29'));_0x5bfd02['query']=_[_0x7252('0x31')](_0x253a15[_0x7252('0x32')]);_0x5bfd02[_0x7252('0x33')]=_[_0x7252('0x34')](_0x5bfd02[_0x7252('0x30')],_0x5bfd02[_0x7252('0x32')]);_0x5133d2[_0x7252('0x35')]=_[_0x7252('0x34')](_0x5bfd02[_0x7252('0x30')],qs[_0x7252('0x36')](_0x253a15[_0x7252('0x32')]['fields']));_0x5133d2[_0x7252('0x35')]=_0x5133d2[_0x7252('0x35')]['length']?_0x5133d2[_0x7252('0x35')]:_0x5bfd02[_0x7252('0x30')];if(!_0x253a15[_0x7252('0x32')][_0x7252('0x37')](_0x7252('0x38'))){_0x5133d2['limit']=qs[_0x7252('0x39')](_0x253a15[_0x7252('0x32')]['limit']);_0x5133d2['offset']=qs[_0x7252('0x1c')](_0x253a15[_0x7252('0x32')][_0x7252('0x1c')]);}_0x5133d2['order']=qs[_0x7252('0x3a')](_0x253a15[_0x7252('0x32')][_0x7252('0x3a')]);_0x5133d2[_0x7252('0x3b')]=qs[_0x7252('0x33')](_[_0x7252('0x3c')](_0x253a15[_0x7252('0x32')],_0x5bfd02[_0x7252('0x33')]),_0x497ba2);if(_0x253a15[_0x7252('0x32')][_0x7252('0x3d')]){_0x5133d2[_0x7252('0x3b')]=_[_0x7252('0x3e')](_0x5133d2[_0x7252('0x3b')],{'$or':_[_0x7252('0x2b')](_0x497ba2,function(_0x528438){if(_0x528438[_0x7252('0x2e')]!==_0x7252('0x3f')){var _0x5a6bb4={};_0x5a6bb4[_0x528438[_0x7252('0x29')]]={'$like':'%'+_0x253a15[_0x7252('0x32')]['filter']+'%'};return _0x5a6bb4;}})});}_0x5133d2=_[_0x7252('0x3e')]({},_0x5133d2,_0x253a15[_0x7252('0x40')]);var _0x4576a3={'where':_0x5133d2[_0x7252('0x3b')]};return db[_0x7252('0x2c')][_0x7252('0x1e')](_0x4576a3)['then'](function(_0x2aac78){_0x2ba538[_0x7252('0x1e')]=_0x2aac78;if(_0x253a15['query'][_0x7252('0x41')]){_0x5133d2['include']=[{'all':!![]}];}return db[_0x7252('0x2c')][_0x7252('0x42')](_0x5133d2);})['then'](function(_0x89157c){_0x2ba538[_0x7252('0x43')]=_0x89157c;return _0x2ba538;})[_0x7252('0x26')](respondWithFilteredResult(_0x1c8fa9,_0x5133d2))[_0x7252('0x44')](handleError(_0x1c8fa9,null));};exports[_0x7252('0x45')]=function(_0x6d0a43,_0x49a002){var _0x377b02={'raw':!![],'where':{'id':_0x6d0a43[_0x7252('0x46')]['id']}},_0x324a0e={};_0x324a0e['model']=_['keys'](db[_0x7252('0x2c')][_0x7252('0x2d')]);_0x324a0e['query']=_[_0x7252('0x31')](_0x6d0a43[_0x7252('0x32')]);_0x324a0e[_0x7252('0x33')]=_[_0x7252('0x34')](_0x324a0e[_0x7252('0x30')],_0x324a0e[_0x7252('0x32')]);_0x377b02[_0x7252('0x35')]=_[_0x7252('0x34')](_0x324a0e[_0x7252('0x30')],qs[_0x7252('0x36')](_0x6d0a43[_0x7252('0x32')][_0x7252('0x36')]));_0x377b02[_0x7252('0x35')]=_0x377b02[_0x7252('0x35')][_0x7252('0x47')]?_0x377b02[_0x7252('0x35')]:_0x324a0e['model'];if(_0x6d0a43[_0x7252('0x32')][_0x7252('0x41')]){_0x377b02[_0x7252('0x48')]=[{'all':!![]}];}_0x377b02=_[_0x7252('0x3e')]({},_0x377b02,_0x6d0a43['options']);return db[_0x7252('0x2c')][_0x7252('0x49')](_0x377b02)[_0x7252('0x26')](handleEntityNotFound(_0x49a002,null))[_0x7252('0x26')](respondWithResult(_0x49a002,null))['catch'](handleError(_0x49a002,null));};exports[_0x7252('0x4a')]=function(_0x4ff727,_0x229e62){return db[_0x7252('0x2c')][_0x7252('0x4a')](_0x4ff727['body'],{})[_0x7252('0x26')](respondWithResult(_0x229e62,0xc9))[_0x7252('0x44')](handleError(_0x229e62,null));};exports['update']=function(_0x20326b,_0x2c4c9c){if(_0x20326b[_0x7252('0x4b')]['id']){delete _0x20326b['body']['id'];}return db[_0x7252('0x2c')][_0x7252('0x49')]({'where':{'id':_0x20326b[_0x7252('0x46')]['id']}})[_0x7252('0x26')](handleEntityNotFound(_0x2c4c9c,null))[_0x7252('0x26')](saveUpdates(_0x20326b[_0x7252('0x4b')],null))[_0x7252('0x26')](respondWithResult(_0x2c4c9c,null))['catch'](handleError(_0x2c4c9c,null));};exports['destroy']=function(_0x24c156,_0xf37f15){return db[_0x7252('0x2c')][_0x7252('0x49')]({'where':{'id':_0x24c156[_0x7252('0x46')]['id']}})[_0x7252('0x26')](handleEntityNotFound(_0xf37f15,null))[_0x7252('0x26')](removeEntity(_0xf37f15,null))[_0x7252('0x44')](handleError(_0xf37f15,null));};exports['describe']=function(_0x33c582,_0x464516){return db[_0x7252('0x2c')][_0x7252('0x4c')]()['then'](respondWithResult(_0x464516,null))[_0x7252('0x44')](handleError(_0x464516,null));};function wrapUser(_0x270d75){return function(_0x5c06c9){var _0x2cfcd5=_0x270d75[_0x7252('0x4d')]({'plain':!![]});_0x2cfcd5[_0x7252('0x4e')]=[];if(_0x5c06c9){_0x2cfcd5[_0x7252('0x4f')]=_0x5c06c9['createdAt'];_0x2cfcd5[_0x7252('0x50')]=_0x5c06c9;}else{_0x2cfcd5[_0x7252('0x4f')]=moment(0x0)[_0x7252('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x2cfcd5[_0x7252('0x50')]={};}return _0x2cfcd5;};}exports['getUsers']=function(_0x158d9b,_0xa9df7e,_0x391411){var _0x403a9b=[];return db[_0x7252('0x52')][_0x7252('0x42')]({'where':{'role':['agent','admin',_0x7252('0x53')]},'attributes':['id','fullname',_0x7252('0x29'),_0x7252('0x54'),'userpic',_0x7252('0x55'),_0x7252('0x56'),_0x7252('0x57'),_0x7252('0x58'),_0x7252('0x59')],'order':qs[_0x7252('0x3a')]('-online'),'include':[{'model':db[_0x7252('0x5a')],'as':_0x7252('0x5b'),'attributes':['id',_0x7252('0x29'),_0x7252('0x2e')],'through':{'attributes':[]}}]})[_0x7252('0x26')](function(_0x49fe24){if(_0x49fe24){var _0x3f60b6=_0x158d9b['user'][_0x7252('0x4d')]({'plain':!![]});if(!_0x3f60b6)throw new Error(_0x7252('0x5c'));if(_0x3f60b6['role']===_0x7252('0x53')){return db[_0x7252('0x5d')][_0x7252('0x49')]({'where':{'name':_0x7252('0x5e'),'userProfileId':_0x3f60b6[_0x7252('0x5f')]},'raw':!![]})[_0x7252('0x26')](function(_0x4bf656){if(_0x4bf656){if(_0x4bf656[_0x7252('0x60')]===0x0){return db[_0x7252('0x61')][_0x7252('0x42')]({'where':{'sectionId':_0x4bf656['id']},'raw':!![]})[_0x7252('0x26')](function(_0x16d3d5){var _0x43ea5f=[];if(_[_0x7252('0x62')](_0x16d3d5)){_0x43ea5f=_[_0x7252('0x3d')](_0x49fe24,function(_0x5b84ad){if(_0x5b84ad[_0x7252('0x54')]!==_0x7252('0x63')){return _0x5b84ad;}});return _0x43ea5f;}else{for(var _0x1e7ddb=0x0;_0x1e7ddb<_0x49fe24[_0x7252('0x47')];_0x1e7ddb++){var _0x1974f1=_0x49fe24[_0x1e7ddb];if(_0x1974f1[_0x7252('0x54')]==='agent'){var _0x1b3624=_[_0x7252('0x49')](_0x16d3d5,function(_0x4cd3ff){return _0x4cd3ff[_0x7252('0x64')]===_0x1974f1['id'];});if(_0x1b3624)_0x43ea5f['push'](_0x1974f1);}else{_0x43ea5f[_0x7252('0x65')](_0x1974f1);}}return _0x43ea5f;}});}else{return _0x49fe24;}}else{var _0x366a7c=_[_0x7252('0x3d')](_0x49fe24,function(_0x222237){if(_0x222237[_0x7252('0x54')]!==_0x7252('0x63')){return _0x222237;}});return _0x366a7c;}});}else{return _0x49fe24;}}})[_0x7252('0x26')](function(_0x563ea7){var _0x1dee90=[];if(_0x563ea7){_0x403a9b=_0x563ea7;for(var _0x112d1b=0x0;_0x112d1b<_0x563ea7[_0x7252('0x47')];_0x112d1b+=0x1){_0x403a9b[_0x112d1b]['messages']=[];_0x1dee90[_0x7252('0x65')](db[_0x7252('0x2c')][_0x7252('0x49')]({'where':{'FromId':[_0x158d9b[_0x7252('0x53')]['id'],_0x563ea7[_0x112d1b]['id']],'ToId':[_0x158d9b[_0x7252('0x53')]['id'],_0x563ea7[_0x112d1b]['id']],'ChatGroupId':null},'attributes':['id',_0x7252('0x66'),_0x7252('0x67'),_0x7252('0x68'),'read',_0x7252('0x4b')],'order':qs[_0x7252('0x3a')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x7252('0x26')](wrapUser(_0x563ea7[_0x112d1b])));}return BPromise[_0x7252('0x69')](_0x1dee90);}return[];})[_0x7252('0x26')](function(_0x328291){return{'rows':_0x328291,'count':_0x328291[_0x7252('0x47')]};})['then'](respondWithResult(_0xa9df7e,null))[_0x7252('0x44')](handleError(_0xa9df7e,null));};
\ No newline at end of file
index 4e4f7f6..d9959b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c10=['hook','exports','events','../../mysqldb','ChatInternalMessage','save','update','remove','emit','hasOwnProperty'];(function(_0x4c6cf0,_0x826f70){var _0x108145=function(_0x299f69){while(--_0x299f69){_0x4c6cf0['push'](_0x4c6cf0['shift']());}};_0x108145(++_0x826f70);}(_0x7c10,0x142));var _0x07c1=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x7c10[_0x199572];return _0x13cfa3;};'use strict';var EventEmitter=require(_0x07c1('0x0'));var ChatInternalMessage=require(_0x07c1('0x1'))['db'][_0x07c1('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x07c1('0x3'),'afterUpdate':_0x07c1('0x4'),'afterDestroy':_0x07c1('0x5')};function emitEvent(_0x433e21){return function(_0x491db4,_0x163fda,_0x2917fd){ChatInternalMessageEvents['emit'](_0x433e21+':'+_0x491db4['id'],_0x491db4);ChatInternalMessageEvents[_0x07c1('0x6')](_0x433e21,_0x491db4);_0x2917fd(null);};}for(var e in events){if(events[_0x07c1('0x7')](e)){var event=events[e];ChatInternalMessage[_0x07c1('0x8')](e,emitEvent(event));}}module[_0x07c1('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x7644=['remove','emit','hasOwnProperty','hook','../../mysqldb','ChatInternalMessage','update'];(function(_0x2d63ff,_0x5c4c81){var _0x22f604=function(_0xea7dd3){while(--_0xea7dd3){_0x2d63ff['push'](_0x2d63ff['shift']());}};_0x22f604(++_0x5c4c81);}(_0x7644,0x1d9));var _0x4764=function(_0x5c88a1,_0x317499){_0x5c88a1=_0x5c88a1-0x0;var _0x1599ed=_0x7644[_0x5c88a1];return _0x1599ed;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x4764('0x0'))['db'][_0x4764('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4764('0x2'),'afterDestroy':_0x4764('0x3')};function emitEvent(_0x4c0a05){return function(_0xb10373,_0x4d200e,_0x53b095){ChatInternalMessageEvents[_0x4764('0x4')](_0x4c0a05+':'+_0xb10373['id'],_0xb10373);ChatInternalMessageEvents[_0x4764('0x4')](_0x4c0a05,_0xb10373);_0x53b095(null);};}for(var e in events){if(events[_0x4764('0x5')](e)){var event=events[e];ChatInternalMessage[_0x4764('0x6')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
index 40ad967..69ea975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4de=['chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define','ChatInternalMessage'];(function(_0x321d93,_0x296288){var _0x353706=function(_0x2f17e2){while(--_0x2f17e2){_0x321d93['push'](_0x321d93['shift']());}};_0x353706(++_0x296288);}(_0xf4de,0x1b0));var _0xef4d=function(_0x31454c,_0x28155e){_0x31454c=_0x31454c-0x0;var _0x53a8ac=_0xf4de[_0x31454c];return _0x53a8ac;};'use strict';var _=require('lodash');var util=require(_0xef4d('0x0'));var logger=require(_0xef4d('0x1'))('api');var moment=require(_0xef4d('0x2'));var BPromise=require(_0xef4d('0x3'));var rp=require(_0xef4d('0x4'));var fs=require('fs');var path=require(_0xef4d('0x5'));var rimraf=require('rimraf');var config=require(_0xef4d('0x6'));var attributes=require('./chatInternalMessage.attributes');module[_0xef4d('0x7')]=function(_0x1c68db,_0x10b2ad){return _0x1c68db[_0xef4d('0x8')](_0xef4d('0x9'),attributes,{'tableName':_0xef4d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xef4d('0xb'),'collate':_0xef4d('0xc')});};
\ No newline at end of file
+var _0x6e9e=['../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x32bea3,_0x3ed963){var _0x2eecca=function(_0x4b5cbc){while(--_0x4b5cbc){_0x32bea3['push'](_0x32bea3['shift']());}};_0x2eecca(++_0x3ed963);}(_0x6e9e,0x1bb));var _0xe6e9=function(_0x1acc2d,_0x597696){_0x1acc2d=_0x1acc2d-0x0;var _0xabfa6d=_0x6e9e[_0x1acc2d];return _0xabfa6d;};'use strict';var _=require(_0xe6e9('0x0'));var util=require('util');var logger=require(_0xe6e9('0x1'))(_0xe6e9('0x2'));var moment=require(_0xe6e9('0x3'));var BPromise=require(_0xe6e9('0x4'));var rp=require(_0xe6e9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe6e9('0x6'));var config=require(_0xe6e9('0x7'));var attributes=require(_0xe6e9('0x8'));module[_0xe6e9('0x9')]=function(_0x14867f,_0x3f258e){return _0x14867f[_0xe6e9('0xa')](_0xe6e9('0xb'),attributes,{'tableName':_0xe6e9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe6e9('0xd'),'collate':_0xe6e9('0xe')});};
\ No newline at end of file
index 7fbb502..3f58ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a5=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','register','request','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result'];(function(_0x5d76cc,_0x195736){var _0x4acce4=function(_0x3b889d){while(--_0x3b889d){_0x5d76cc['push'](_0x5d76cc['shift']());}};_0x4acce4(++_0x195736);}(_0x20a5,0x7e));var _0x520a=function(_0x3f1dd3,_0x548c79){_0x3f1dd3=_0x3f1dd3-0x0;var _0x53cbf4=_0x20a5[_0x3f1dd3];return _0x53cbf4;};'use strict';var _=require(_0x520a('0x0'));var util=require(_0x520a('0x1'));var moment=require(_0x520a('0x2'));var BPromise=require(_0x520a('0x3'));var rs=require(_0x520a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x520a('0x5'))['db'];var utils=require(_0x520a('0x6'));var logger=require(_0x520a('0x7'))('rpc');var config=require(_0x520a('0x8'));var jayson=require(_0x520a('0x9'));var client=jayson['client'][_0x520a('0xa')]({'port':0x232a});config[_0x520a('0xb')]=_[_0x520a('0xc')](config[_0x520a('0xb')],{'host':_0x520a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatInternalMessage.socket')[_0x520a('0xe')](socket);function respondWithRpcPromise(_0x2c584f,_0xddae48,_0x52636c){return new BPromise(function(_0x7b4185,_0x37a032){return client[_0x520a('0xf')](_0x2c584f,_0x52636c)['then'](function(_0x2ac55f){logger['info'](_0x520a('0x10'),_0xddae48,_0x520a('0x11'));logger['debug'](_0x520a('0x12'),_0xddae48,_0x520a('0x11'),JSON[_0x520a('0x13')](_0x2ac55f));if(_0x2ac55f[_0x520a('0x14')]){if(_0x2ac55f['error']['code']===0x1f4){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0xddae48,_0x2ac55f['error'][_0x520a('0x15')]);return _0x37a032(_0x2ac55f[_0x520a('0x14')]['message']);}logger[_0x520a('0x14')]('ChatInternalMessage,\x20%s,\x20%s',_0xddae48,_0x2ac55f[_0x520a('0x14')][_0x520a('0x15')]);return _0x7b4185(_0x2ac55f[_0x520a('0x14')][_0x520a('0x15')]);}else{logger[_0x520a('0x16')](_0x520a('0x10'),_0xddae48,_0x520a('0x11'));_0x7b4185(_0x2ac55f[_0x520a('0x17')][_0x520a('0x15')]);}})[_0x520a('0x18')](function(_0x20d35f){logger[_0x520a('0x14')](_0x520a('0x10'),_0xddae48,_0x20d35f);_0x37a032(_0x20d35f);});});}
\ No newline at end of file
+var _0x947f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x2f3ea8,_0x254bcc){var _0x5ba79c=function(_0xa1ced9){while(--_0xa1ced9){_0x2f3ea8['push'](_0x2f3ea8['shift']());}};_0x5ba79c(++_0x254bcc);}(_0x947f,0x150));var _0xf947=function(_0x322522,_0x4db288){_0x322522=_0x322522-0x0;var _0x293bcf=_0x947f[_0x322522];return _0x293bcf;};'use strict';var _=require(_0xf947('0x0'));var util=require(_0xf947('0x1'));var moment=require(_0xf947('0x2'));var BPromise=require(_0xf947('0x3'));var rs=require(_0xf947('0x4'));var fs=require('fs');var Redis=require(_0xf947('0x5'));var db=require(_0xf947('0x6'))['db'];var utils=require(_0xf947('0x7'));var logger=require(_0xf947('0x8'))(_0xf947('0x9'));var config=require('../../config/environment');var jayson=require(_0xf947('0xa'));var client=jayson[_0xf947('0xb')][_0xf947('0xc')]({'port':0x232a});config[_0xf947('0xd')]=_[_0xf947('0xe')](config[_0xf947('0xd')],{'host':_0xf947('0xf'),'port':0x18eb});var socket=require(_0xf947('0x10'))(new Redis(config[_0xf947('0xd')]));require(_0xf947('0x11'))[_0xf947('0x12')](socket);function respondWithRpcPromise(_0x2a8039,_0x2fcfd2,_0x5f1b55){return new BPromise(function(_0x4d75df,_0x3e3938){return client[_0xf947('0x13')](_0x2a8039,_0x5f1b55)[_0xf947('0x14')](function(_0x39380a){logger[_0xf947('0x15')]('ChatInternalMessage,\x20%s,\x20%s',_0x2fcfd2,_0xf947('0x16'));logger[_0xf947('0x17')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x2fcfd2,_0xf947('0x16'),JSON[_0xf947('0x18')](_0x39380a));if(_0x39380a[_0xf947('0x19')]){if(_0x39380a[_0xf947('0x19')][_0xf947('0x1a')]===0x1f4){logger[_0xf947('0x19')](_0xf947('0x1b'),_0x2fcfd2,_0x39380a['error'][_0xf947('0x1c')]);return _0x3e3938(_0x39380a['error'][_0xf947('0x1c')]);}logger[_0xf947('0x19')](_0xf947('0x1b'),_0x2fcfd2,_0x39380a[_0xf947('0x19')][_0xf947('0x1c')]);return _0x4d75df(_0x39380a[_0xf947('0x19')][_0xf947('0x1c')]);}else{logger[_0xf947('0x15')](_0xf947('0x1b'),_0x2fcfd2,_0xf947('0x16'));_0x4d75df(_0x39380a[_0xf947('0x1d')]['message']);}})[_0xf947('0x1e')](function(_0x575fdc){logger[_0xf947('0x19')](_0xf947('0x1b'),_0x2fcfd2,_0x575fdc);_0x3e3938(_0x575fdc);});});}
\ No newline at end of file
index 07bbf9c..80cdb83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab7a=['removeListener','register','chatInternalMessage:','save','remove','update','emit'];(function(_0x3c68bb,_0x3ee29d){var _0x5e1fde=function(_0x20920e){while(--_0x20920e){_0x3c68bb['push'](_0x3c68bb['shift']());}};_0x5e1fde(++_0x3ee29d);}(_0xab7a,0xff));var _0xaab7=function(_0x1e5db8,_0x44ef41){_0x1e5db8=_0x1e5db8-0x0;var _0x219a51=_0xab7a[_0x1e5db8];return _0x219a51;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0xaab7('0x0'),_0xaab7('0x1'),_0xaab7('0x2')];function createListener(_0x375e09,_0x58800b){return function(_0x2db103){_0x58800b[_0xaab7('0x3')](_0x375e09,_0x2db103);};}function removeListener(_0x11d4a0,_0x5e7ef3){return function(){ChatInternalMessageEvents[_0xaab7('0x4')](_0x11d4a0,_0x5e7ef3);};}exports[_0xaab7('0x5')]=function(_0x5e4dd9){for(var _0x4e48c7=0x0,_0x2ae139=events['length'];_0x4e48c7<_0x2ae139;_0x4e48c7++){var _0x34fe02=events[_0x4e48c7];var _0x126db2=createListener(_0xaab7('0x6')+_0x34fe02,_0x5e4dd9);ChatInternalMessageEvents['on'](_0x34fe02,_0x126db2);}};
\ No newline at end of file
+var _0x0af5=['emit','removeListener','register','chatInternalMessage:'];(function(_0x2dece9,_0x5a816f){var _0x2d623a=function(_0x47b1ee){while(--_0x47b1ee){_0x2dece9['push'](_0x2dece9['shift']());}};_0x2d623a(++_0x5a816f);}(_0x0af5,0xbc));var _0x50af=function(_0x229a40,_0x10c7ca){_0x229a40=_0x229a40-0x0;var _0x2c2e04=_0x0af5[_0x229a40];return _0x2c2e04;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save','remove','update'];function createListener(_0x5d0231,_0x36f1ff){return function(_0x3456e1){_0x36f1ff[_0x50af('0x0')](_0x5d0231,_0x3456e1);};}function removeListener(_0x4acdf6,_0x3ea32f){return function(){ChatInternalMessageEvents[_0x50af('0x1')](_0x4acdf6,_0x3ea32f);};}exports[_0x50af('0x2')]=function(_0x437e3a){for(var _0x58036d=0x0,_0x40562d=events['length'];_0x58036d<_0x40562d;_0x58036d++){var _0x1102db=events[_0x58036d];var _0x12b868=createListener(_0x50af('0x3')+_0x1102db,_0x437e3a);ChatInternalMessageEvents['on'](_0x1102db,_0x12b868);}};
\ No newline at end of file
index 6f57b1e..d14374c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3c8=['post','create','/:id','update','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index','isAuthenticated','describe','/users','getUsers'];(function(_0x2d7836,_0x5a5412){var _0x491179=function(_0xaafd3){while(--_0xaafd3){_0x2d7836['push'](_0x2d7836['shift']());}};_0x491179(++_0x5a5412);}(_0xd3c8,0x98));var _0x8d3c=function(_0x34a4c4,_0x820d78){_0x34a4c4=_0x34a4c4-0x0;var _0x375b76=_0xd3c8[_0x34a4c4];return _0x375b76;};'use strict';var multer=require('multer');var util=require(_0x8d3c('0x0'));var path=require(_0x8d3c('0x1'));var timeout=require(_0x8d3c('0x2'));var express=require(_0x8d3c('0x3'));var router=express[_0x8d3c('0x4')]();var fs_extra=require(_0x8d3c('0x5'));var auth=require(_0x8d3c('0x6'));var interaction=require(_0x8d3c('0x7'));var config=require(_0x8d3c('0x8'));var controller=require(_0x8d3c('0x9'));router[_0x8d3c('0xa')]('/',auth['isAuthenticated'](),controller[_0x8d3c('0xb')]);router[_0x8d3c('0xa')]('/describe',auth[_0x8d3c('0xc')](),controller[_0x8d3c('0xd')]);router['get'](_0x8d3c('0xe'),auth[_0x8d3c('0xc')](),controller[_0x8d3c('0xf')]);router['get']('/:id',auth[_0x8d3c('0xc')](),controller['show']);router[_0x8d3c('0x10')]('/',auth['isAuthenticated'](),controller[_0x8d3c('0x11')]);router['put'](_0x8d3c('0x12'),controller[_0x8d3c('0x13')]);router['delete'](_0x8d3c('0x12'),auth[_0x8d3c('0xc')](),controller[_0x8d3c('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x5858=['isAuthenticated','getUsers','post','put','update','delete','destroy','exports','path','express','../../components/interaction/service','./chatInternalMessage.controller','get','index','describe','/users'];(function(_0x4474ea,_0x1b0a64){var _0x1d8e57=function(_0x57eee5){while(--_0x57eee5){_0x4474ea['push'](_0x4474ea['shift']());}};_0x1d8e57(++_0x1b0a64);}(_0x5858,0x98));var _0x8585=function(_0x33a481,_0x5e4f23){_0x33a481=_0x33a481-0x0;var _0x2fa5a6=_0x5858[_0x33a481];return _0x2fa5a6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8585('0x0'));var timeout=require('connect-timeout');var express=require(_0x8585('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8585('0x2'));var config=require('../../config/environment');var controller=require(_0x8585('0x3'));router[_0x8585('0x4')]('/',auth['isAuthenticated'](),controller[_0x8585('0x5')]);router[_0x8585('0x4')]('/describe',auth['isAuthenticated'](),controller[_0x8585('0x6')]);router[_0x8585('0x4')](_0x8585('0x7'),auth[_0x8585('0x8')](),controller[_0x8585('0x9')]);router[_0x8585('0x4')]('/:id',auth[_0x8585('0x8')](),controller['show']);router[_0x8585('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8585('0xb')]('/:id',controller[_0x8585('0xc')]);router[_0x8585('0xd')]('/:id',auth[_0x8585('0x8')](),controller[_0x8585('0xe')]);module[_0x8585('0xf')]=router;
\ No newline at end of file
index 512ced6..f32202c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e6=['BOOLEAN','out','DATE','TEXT','sequelize','medium'];(function(_0x5ddff0,_0x2be304){var _0x2f696a=function(_0x310242){while(--_0x310242){_0x5ddff0['push'](_0x5ddff0['shift']());}};_0x2f696a(++_0x2be304);}(_0x93e6,0x11e));var _0x693e=function(_0x57182a,_0x1f0016){_0x57182a=_0x57182a-0x0;var _0x4fddc6=_0x93e6[_0x57182a];return _0x4fddc6;};'use strict';var Sequelize=require(_0x693e('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x693e('0x1')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x693e('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x693e('0x3')),'defaultValue':_0x693e('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x693e('0x4')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x693e('0x5')]}};
\ No newline at end of file
+var _0xe5b5=['DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x310e02,_0x472a9d){var _0x5c9ef2=function(_0x393a18){while(--_0x393a18){_0x310e02['push'](_0x310e02['shift']());}};_0x5c9ef2(++_0x472a9d);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x47f7ec,_0x369f9d){_0x47f7ec=_0x47f7ec-0x0;var _0x415101=_0xe5b5[_0x47f7ec];return _0x415101;};'use strict';var Sequelize=require(_0x5e5b('0x0'));module[_0x5e5b('0x1')]={'body':{'type':Sequelize[_0x5e5b('0x2')](_0x5e5b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x5e5b('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x5e5b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5e5b('0x5')]('in',_0x5e5b('0x6')),'defaultValue':_0x5e5b('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x5e5b('0x7')]},'providerName':{'type':Sequelize[_0x5e5b('0x8')]},'providerResponse':{'type':Sequelize[_0x5e5b('0x2')]}};
\ No newline at end of file
index 2713400..44808eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3620=['desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save','update','destroy','stack','name','send','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','filter','where','merge','options','includeAll','findAll','show','params','ChatMessage','include','find','create','body','catch','describe','chat-interactions','accept','chat','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','parse','formData','ChatInteractionId','role','RejectMessage','rejectMessage','SELECT','User','event','rejectmessage','eml-format','rimraf','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x4bbb13,_0x47cf62){var _0x5bfa64=function(_0xd02024){while(--_0xd02024){_0x4bbb13['push'](_0x4bbb13['shift']());}};_0x5bfa64(++_0x47cf62);}(_0x3620,0xf5));var _0x0362=function(_0x1ddf80,_0x57f5fc){_0x1ddf80=_0x1ddf80-0x0;var _0x223a52=_0x3620[_0x1ddf80];return _0x223a52;};'use strict';var emlformat=require(_0x0362('0x0'));var rimraf=require(_0x0362('0x1'));var zipdir=require(_0x0362('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0362('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0362('0x4'));var util=require(_0x0362('0x5'));var path=require(_0x0362('0x6'));var sox=require('sox');var csv=require(_0x0362('0x7'));var ejs=require(_0x0362('0x8'));var fs=require('fs');var fs_extra=require(_0x0362('0x9'));var _=require(_0x0362('0xa'));var squel=require(_0x0362('0xb'));var crypto=require(_0x0362('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x0362('0xd'));var toCsv=require(_0x0362('0x7'));var querystring=require('querystring');var Papa=require(_0x0362('0xe'));var Redis=require(_0x0362('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0362('0x10'));var as=require(_0x0362('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0362('0x12'))(_0x0362('0x13'));var utils=require(_0x0362('0x14'));var config=require(_0x0362('0x15'));var licenseUtil=require(_0x0362('0x16'));var db=require(_0x0362('0x17'))['db'];config[_0x0362('0x18')]=_[_0x0362('0x19')](config['redis'],{'host':_0x0362('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0362('0x18')]));require(_0x0362('0x1b'))[_0x0362('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x0362('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0x0362('0x1d')][_0x0362('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x6ce759,_0x233366,_0x24af67,_0x4a54f6){return new BPromise(function(_0x1ec744,_0x2c2fa1){var _0x32ffbf=_0x4a54f6||client;return _0x32ffbf[_0x0362('0x1f')](_0x6ce759,_0x24af67)[_0x0362('0x20')](function(_0x3b1929){logger[_0x0362('0x21')](_0x0362('0x22'),_0x233366,_0x0362('0x23'));logger['debug'](_0x0362('0x24'),_0x233366,'request\x20sent',JSON[_0x0362('0x25')](_0x3b1929));if(_0x3b1929[_0x0362('0x26')]){if(_0x3b1929['error'][_0x0362('0x27')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x233366,_0x3b1929[_0x0362('0x26')][_0x0362('0x28')]);return _0x2c2fa1(_0x3b1929[_0x0362('0x26')][_0x0362('0x28')]);}logger[_0x0362('0x26')](_0x0362('0x22'),_0x233366,_0x3b1929[_0x0362('0x26')][_0x0362('0x28')]);return _0x1ec744(_0x3b1929[_0x0362('0x26')][_0x0362('0x28')]);}else{logger['info'](_0x0362('0x22'),_0x233366,'request\x20sent');_0x1ec744(_0x3b1929[_0x0362('0x29')][_0x0362('0x28')]);}})['catch'](function(_0xf87835){logger['error'](_0x0362('0x22'),_0x233366,_0xf87835);_0x2c2fa1(_0xf87835);});});}function respondWithStatusCode(_0x575289,_0x3105d3){_0x3105d3=_0x3105d3||0xcc;return function(_0x3a84af){if(_0x3a84af){return _0x575289[_0x0362('0x2a')](_0x3105d3);}return _0x575289['status'](_0x3105d3)[_0x0362('0x2b')]();};}function respondWithResult(_0x1509ca,_0x449f49){_0x449f49=_0x449f49||0xc8;return function(_0x2580f5){if(_0x2580f5){return _0x1509ca[_0x0362('0x2c')](_0x449f49)[_0x0362('0x2d')](_0x2580f5);}};}function respondWithFilteredResult(_0x161f46,_0x148dd1){return function(_0x556b45){if(_0x556b45){var _0x22611a=typeof _0x148dd1[_0x0362('0x2e')]===_0x0362('0x2f')&&typeof _0x148dd1[_0x0362('0x30')]==='undefined';var _0x17a63d=_0x556b45[_0x0362('0x31')];var _0x33069d=_0x22611a?0x0:_0x148dd1[_0x0362('0x2e')];var _0x155c47=_0x22611a?_0x556b45[_0x0362('0x31')]:_0x148dd1[_0x0362('0x2e')]+_0x148dd1[_0x0362('0x30')];var _0x1953dd;if(_0x155c47>=_0x17a63d){_0x155c47=_0x17a63d;_0x1953dd=0xc8;}else{_0x1953dd=0xce;}_0x161f46['status'](_0x1953dd);return _0x161f46[_0x0362('0x32')]('Content-Range',_0x33069d+'-'+_0x155c47+'/'+_0x17a63d)['json'](_0x556b45);}return null;};}function patchUpdates(_0x567d20){return function(_0x393336){try{jsonpatch['apply'](_0x393336,_0x567d20,!![]);}catch(_0x28df51){return BPromise[_0x0362('0x33')](_0x28df51);}return _0x393336[_0x0362('0x34')]();};}function saveUpdates(_0x368e4d,_0x2cd0cb){return function(_0x40012b){if(_0x40012b){return _0x40012b[_0x0362('0x35')](_0x368e4d)[_0x0362('0x20')](function(_0x9b3c6a){return _0x9b3c6a;});}return null;};}function removeEntity(_0x5d7a59,_0x2829b6){return function(_0x2ad6e1){if(_0x2ad6e1){return _0x2ad6e1[_0x0362('0x36')]()[_0x0362('0x20')](function(){_0x5d7a59[_0x0362('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4516e4,_0x5a17c7){return function(_0x1b437e){if(!_0x1b437e){_0x4516e4[_0x0362('0x2a')](0x194);}return _0x1b437e;};}function handleError(_0x4fe3ce,_0x3aa3b2){_0x3aa3b2=_0x3aa3b2||0x1f4;return function(_0x29f91d){logger[_0x0362('0x26')](_0x29f91d[_0x0362('0x37')]);if(_0x29f91d[_0x0362('0x38')]){delete _0x29f91d[_0x0362('0x38')];}_0x4fe3ce['status'](_0x3aa3b2)[_0x0362('0x39')](_0x29f91d);};}exports['index']=function(_0xa54328,_0x2bae16){var _0x322eac={},_0x5ac78c={},_0x46dfe3={'count':0x0,'rows':[]};var _0x5823d3=_[_0x0362('0x3a')](db['ChatMessage'][_0x0362('0x3b')],function(_0x2251ec){return{'name':_0x2251ec[_0x0362('0x3c')],'type':_0x2251ec[_0x0362('0x3d')]['key']};});_0x5ac78c[_0x0362('0x3e')]=_[_0x0362('0x3a')](_0x5823d3,_0x0362('0x38'));_0x5ac78c['query']=_[_0x0362('0x3f')](_0xa54328[_0x0362('0x40')]);_0x5ac78c[_0x0362('0x41')]=_[_0x0362('0x42')](_0x5ac78c[_0x0362('0x3e')],_0x5ac78c[_0x0362('0x40')]);_0x322eac[_0x0362('0x43')]=_[_0x0362('0x42')](_0x5ac78c[_0x0362('0x3e')],qs[_0x0362('0x44')](_0xa54328[_0x0362('0x40')]['fields']));_0x322eac[_0x0362('0x43')]=_0x322eac[_0x0362('0x43')][_0x0362('0x45')]?_0x322eac[_0x0362('0x43')]:_0x5ac78c[_0x0362('0x3e')];if(!_0xa54328[_0x0362('0x40')][_0x0362('0x46')](_0x0362('0x47'))){_0x322eac['limit']=qs[_0x0362('0x30')](_0xa54328['query'][_0x0362('0x30')]);_0x322eac[_0x0362('0x2e')]=qs[_0x0362('0x2e')](_0xa54328[_0x0362('0x40')]['offset']);}_0x322eac[_0x0362('0x48')]=qs['sort'](_0xa54328['query']['sort']);_0x322eac['where']=qs['filters'](_['pick'](_0xa54328['query'],_0x5ac78c[_0x0362('0x41')]),_0x5823d3);if(_0xa54328['query'][_0x0362('0x49')]){_0x322eac[_0x0362('0x4a')]=_[_0x0362('0x4b')](_0x322eac[_0x0362('0x4a')],{'$or':_['map'](_0x5823d3,function(_0x22f6ac){if(_0x22f6ac[_0x0362('0x3d')]!=='VIRTUAL'){var _0x5e070c={};_0x5e070c[_0x22f6ac[_0x0362('0x38')]]={'$like':'%'+_0xa54328['query'][_0x0362('0x49')]+'%'};return _0x5e070c;}})});}_0x322eac=_['merge']({},_0x322eac,_0xa54328[_0x0362('0x4c')]);var _0x6173ae={'where':_0x322eac[_0x0362('0x4a')]};return db['ChatMessage'][_0x0362('0x31')](_0x6173ae)[_0x0362('0x20')](function(_0x43c497){_0x46dfe3[_0x0362('0x31')]=_0x43c497;if(_0xa54328[_0x0362('0x40')][_0x0362('0x4d')]){_0x322eac['include']=[{'all':!![]}];}return db['ChatMessage'][_0x0362('0x4e')](_0x322eac);})[_0x0362('0x20')](function(_0x25a88a){_0x46dfe3['rows']=_0x25a88a;return _0x46dfe3;})[_0x0362('0x20')](respondWithFilteredResult(_0x2bae16,_0x322eac))['catch'](handleError(_0x2bae16,null));};exports[_0x0362('0x4f')]=function(_0x6bdd55,_0x138af5){var _0x1a929d={'raw':!![],'where':{'id':_0x6bdd55[_0x0362('0x50')]['id']}},_0x107085={};_0x107085[_0x0362('0x3e')]=_[_0x0362('0x3f')](db[_0x0362('0x51')][_0x0362('0x3b')]);_0x107085[_0x0362('0x40')]=_[_0x0362('0x3f')](_0x6bdd55[_0x0362('0x40')]);_0x107085['filters']=_[_0x0362('0x42')](_0x107085[_0x0362('0x3e')],_0x107085['query']);_0x1a929d[_0x0362('0x43')]=_['intersection'](_0x107085[_0x0362('0x3e')],qs['fields'](_0x6bdd55[_0x0362('0x40')]['fields']));_0x1a929d[_0x0362('0x43')]=_0x1a929d[_0x0362('0x43')][_0x0362('0x45')]?_0x1a929d[_0x0362('0x43')]:_0x107085[_0x0362('0x3e')];if(_0x6bdd55[_0x0362('0x40')][_0x0362('0x4d')]){_0x1a929d[_0x0362('0x52')]=[{'all':!![]}];}_0x1a929d=_[_0x0362('0x4b')]({},_0x1a929d,_0x6bdd55['options']);return db['ChatMessage'][_0x0362('0x53')](_0x1a929d)['then'](handleEntityNotFound(_0x138af5,null))[_0x0362('0x20')](respondWithResult(_0x138af5,null))['catch'](handleError(_0x138af5,null));};exports[_0x0362('0x54')]=function(_0x31b82e,_0x3a524e){return db[_0x0362('0x51')][_0x0362('0x54')](_0x31b82e[_0x0362('0x55')],{})[_0x0362('0x20')](respondWithResult(_0x3a524e,0xc9))[_0x0362('0x56')](handleError(_0x3a524e,null));};exports[_0x0362('0x35')]=function(_0x345cd5,_0x4923ea){if(_0x345cd5[_0x0362('0x55')]['id']){delete _0x345cd5[_0x0362('0x55')]['id'];}return db[_0x0362('0x51')][_0x0362('0x53')]({'where':{'id':_0x345cd5['params']['id']}})[_0x0362('0x20')](handleEntityNotFound(_0x4923ea,null))[_0x0362('0x20')](saveUpdates(_0x345cd5['body'],null))['then'](respondWithResult(_0x4923ea,null))[_0x0362('0x56')](handleError(_0x4923ea,null));};exports[_0x0362('0x36')]=function(_0x55990d,_0x58e390){return db['ChatMessage'][_0x0362('0x53')]({'where':{'id':_0x55990d['params']['id']}})[_0x0362('0x20')](handleEntityNotFound(_0x58e390,null))['then'](removeEntity(_0x58e390,null))['catch'](handleError(_0x58e390,null));};exports[_0x0362('0x57')]=function(_0x464115,_0x1b8c82){return db['ChatMessage'][_0x0362('0x57')]()[_0x0362('0x20')](respondWithResult(_0x1b8c82,null))[_0x0362('0x56')](handleError(_0x1b8c82,null));};var interaction_log=require(_0x0362('0x12'))(_0x0362('0x58'));exports[_0x0362('0x59')]=function(_0x5a097e,_0x38fc03,_0x5284b2){var _0x2ac62e={'agent':{},'channel':_0x0362('0x5a')};if(_0x5a097e[_0x0362('0x55')]['id']){delete _0x5a097e[_0x0362('0x55')]['id'];}_0x5a097e[_0x0362('0x55')]['read']=!![];_0x5a097e[_0x0362('0x55')][_0x0362('0x5b')]=moment()[_0x0362('0x5c')](_0x0362('0x5d'));_0x5a097e[_0x0362('0x55')]['UserId']=_0x5a097e['body'][_0x0362('0x5e')]||_0x5a097e['user']['id'];_0x2ac62e[_0x0362('0x5f')]['id']=_0x5a097e['body']['UserId'];return db[_0x0362('0x51')][_0x0362('0x53')]({'where':{'id':_0x5a097e[_0x0362('0x50')]['id'],'UserId':null}})[_0x0362('0x20')](handleEntityNotFound(_0x38fc03,null))['then'](saveUpdates(_0x5a097e[_0x0362('0x55')],null))[_0x0362('0x20')](function(_0x5ebe7d){if(_0x5ebe7d){_0x2ac62e['message']=_0x5ebe7d[_0x0362('0x60')]({'plain':!![]});return db[_0x0362('0x61')][_0x0362('0x53')]({'where':{'id':_0x5ebe7d['ChatInteractionId']}});}return null;})[_0x0362('0x20')](handleEntityNotFound(_0x38fc03,null))[_0x0362('0x20')](function(_0x5e17ea){if(_0x5e17ea){return _0x5e17ea[_0x0362('0x35')]({'UserId':_0x5a097e[_0x0362('0x55')][_0x0362('0x5e')],'read1stAt':_[_0x0362('0x62')](_0x5e17ea[_0x0362('0x63')])?moment()[_0x0362('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x4427e7){if(_0x4427e7){_0x2ac62e[_0x0362('0x64')]=_0x4427e7[_0x0362('0x60')]({'plain':!![]});interaction_log['info'](_0x0362('0x65'),_0x5a097e[_0x0362('0x66')]['id'],_0x5a097e[_0x0362('0x66')]['name'],_0x5a097e['user']['role'],_0x2ac62e[_0x0362('0x64')]['id'],_0x5a097e['body']?JSON['stringify'](_0x5a097e[_0x0362('0x55')]):_0x0362('0x67'));return respondWithRpcPromise(_0x0362('0x68'),_0x0362('0x69'),_0x2ac62e);}return null;})[_0x0362('0x20')](function(_0x5b1862){var _0xdc86c3=_0x0362('0x6a')+_0x5b1862[_0x0362('0x28')][_0x0362('0x6b')];return db[_0x0362('0x6c')]['query'](_0xdc86c3,{'type':db['Sequelize'][_0x0362('0x6d')]['SELECT'],'raw':!![]})[_0x0362('0x20')](function(_0x1625c0){return _0x1625c0;});})[_0x0362('0x20')](function(_0x2ced9e){if(_0x2ced9e){_0x2ac62e[_0x0362('0x28')][_0x0362('0x6e')]=_0x2ced9e[0x0];if(!_0x5a097e['body'][_0x0362('0x5e')])return;return db['User'][_0x0362('0x53')]({'where':{'id':_0x5a097e[_0x0362('0x55')][_0x0362('0x5e')],'role':_0x0362('0x5f')},'attributes':['id',_0x0362('0x38'),_0x0362('0x6f'),'email',_0x0362('0x70')],'raw':!![]});}return null;})[_0x0362('0x20')](function(_0x4dbae7){if(!_0x4dbae7)return null;_0x2ac62e[_0x0362('0x28')]['agent']=_0x4dbae7;return _0x2ac62e;})[_0x0362('0x20')](function(_0x58d6bf){if(_0x58d6bf){if(_0x5a097e['body'][_0x0362('0x71')]){_0x2ac62e[_0x0362('0x28')][_0x0362('0x72')]=util[_0x0362('0x5c')](_0x0362('0x73'),_0x5a097e['user'][_0x0362('0x38')]);_0x2ac62e[_0x0362('0x28')][_0x0362('0x74')]=_0x2ac62e[_0x0362('0x74')];_0x2ac62e[_0x0362('0x28')][_0x0362('0x75')]=_0x2ac62e[_0x0362('0x74')];_0x2ac62e[_0x0362('0x28')]['event']=_0x0362('0x59');return respondWithRpcPromise(_0x0362('0x76'),_0x0362('0x76'),{'event':'acceptmessage','message':_['merge'](_0x2ac62e[_0x0362('0x28')],JSON[_0x0362('0x77')](_0x2ac62e[_0x0362('0x64')][_0x0362('0x78')]))},client9002)[_0x0362('0x20')](function(){return _0x2ac62e;});}return _0x2ac62e;}return null;})[_0x0362('0x20')](respondWithResult(_0x38fc03,null))['catch'](handleError(_0x38fc03,null));};var interaction_log=require(_0x0362('0x12'))('chat-interactions');exports['reject']=function(_0x23b096,_0x676906,_0x26f2dd){var _0x50f51f={'agent':{},'channel':_0x0362('0x5a')};if(_0x23b096[_0x0362('0x55')]['id']){delete _0x23b096[_0x0362('0x55')]['id'];}_0x23b096[_0x0362('0x55')][_0x0362('0x5e')]=_0x23b096['body'][_0x0362('0x5e')]||_0x23b096['user']['id'];_0x50f51f['agent']['id']=_0x23b096[_0x0362('0x55')][_0x0362('0x5e')];return db[_0x0362('0x51')][_0x0362('0x53')]({'where':{'id':_0x23b096[_0x0362('0x50')]['id'],'UserId':null}})[_0x0362('0x20')](handleEntityNotFound(_0x676906,null))[_0x0362('0x20')](function(_0x3236f8){if(_0x3236f8){_0x50f51f[_0x0362('0x28')]=_0x3236f8[_0x0362('0x60')]({'plain':!![]});return db[_0x0362('0x61')][_0x0362('0x53')]({'where':{'id':_0x3236f8[_0x0362('0x79')]}});}return null;})[_0x0362('0x20')](handleEntityNotFound(_0x676906,null))[_0x0362('0x20')](function(_0x4c944d){if(_0x4c944d){_0x50f51f[_0x0362('0x64')]=_0x4c944d[_0x0362('0x60')]({'plain':!![]});interaction_log[_0x0362('0x21')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x23b096['user']['id'],_0x23b096['user'][_0x0362('0x38')],_0x23b096[_0x0362('0x66')][_0x0362('0x7a')],_0x50f51f[_0x0362('0x64')]['id'],_0x23b096[_0x0362('0x55')]?JSON[_0x0362('0x25')](_0x23b096[_0x0362('0x55')]):'null');return respondWithRpcPromise(_0x0362('0x7b'),_0x0362('0x7c'),_0x50f51f);}return null;})[_0x0362('0x20')](function(_0x1077bc){var _0x39ff1c=_0x0362('0x6a')+_0x1077bc['message']['ContactId'];return db[_0x0362('0x6c')][_0x0362('0x40')](_0x39ff1c,{'type':db['Sequelize']['QueryTypes'][_0x0362('0x7d')],'raw':!![]})[_0x0362('0x20')](function(_0x1d9f37){return _0x1d9f37;});})[_0x0362('0x20')](function(_0x19c108){if(_0x19c108){_0x50f51f[_0x0362('0x28')]['contact']=_0x19c108[0x0];if(!_0x23b096[_0x0362('0x55')]['UserId'])return;return db[_0x0362('0x7e')]['find']({'where':{'id':_0x23b096[_0x0362('0x55')]['UserId'],'role':_0x0362('0x5f')},'attributes':['id',_0x0362('0x38'),_0x0362('0x6f'),'email',_0x0362('0x70')],'raw':!![]});}return null;})[_0x0362('0x20')](function(_0xe72699){if(!_0xe72699)return null;_0x50f51f[_0x0362('0x28')]['agent']=_0xe72699;return _0x50f51f;})['then'](function(_0x4ed489){if(_0x4ed489){_0x4ed489['message'][_0x0362('0x72')]=util[_0x0362('0x5c')](_0x0362('0x73'),_0x23b096['user'][_0x0362('0x38')]);_0x4ed489[_0x0362('0x28')][_0x0362('0x74')]=_0x50f51f[_0x0362('0x74')];_0x4ed489[_0x0362('0x28')][_0x0362('0x75')]=_0x50f51f[_0x0362('0x74')];_0x4ed489[_0x0362('0x28')][_0x0362('0x7f')]=_0x0362('0x33');respondWithRpcPromise(_0x0362('0x76'),_0x0362('0x76'),{'event':_0x0362('0x80'),'message':_[_0x0362('0x4b')](_0x50f51f[_0x0362('0x28')],JSON[_0x0362('0x77')](_0x50f51f['interaction'][_0x0362('0x78')]))},client9002);return _0x50f51f;}return null;})['then'](respondWithResult(_0x676906,null))[_0x0362('0x56')](handleError(_0x676906,null));};
\ No newline at end of file
+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(_0x637c7f,_0x1c528){var _0x3efde9=function(_0x54086e){while(--_0x54086e){_0x637c7f['push'](_0x637c7f['shift']());}};_0x3efde9(++_0x1c528);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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
index 071e750..8c4283b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd188=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0x4d2aed,_0x4a022d){var _0xeda3c7=function(_0x1b5b96){while(--_0x1b5b96){_0x4d2aed['push'](_0x4d2aed['shift']());}};_0xeda3c7(++_0x4a022d);}(_0xd188,0x1d3));var _0x8d18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd188[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x8d18('0x0'));var ChatMessage=require(_0x8d18('0x1'))['db'][_0x8d18('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x8d18('0x3')](0x0);var events={'afterCreate':_0x8d18('0x4'),'afterUpdate':'update','afterDestroy':_0x8d18('0x5')};function emitEvent(_0x17001a){return function(_0x530aba,_0x2928b5,_0x3653a7){ChatMessageEvents[_0x8d18('0x6')](_0x17001a+':'+_0x530aba['id'],_0x530aba);ChatMessageEvents['emit'](_0x17001a,_0x530aba);_0x3653a7(null);};}for(var e in events){if(events[_0x8d18('0x7')](e)){var event=events[e];ChatMessage[_0x8d18('0x8')](e,emitEvent(event));}}module[_0x8d18('0x9')]=ChatMessageEvents;
\ No newline at end of file
+var _0xd9dc=['exports','events','ChatMessage','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x1517f4,_0x179ed4){var _0x357da0=function(_0x5ae086){while(--_0x5ae086){_0x1517f4['push'](_0x1517f4['shift']());}};_0x357da0(++_0x179ed4);}(_0xd9dc,0xa1));var _0xcd9d=function(_0x3d6137,_0x13d351){_0x3d6137=_0x3d6137-0x0;var _0x5daf34=_0xd9dc[_0x3d6137];return _0x5daf34;};'use strict';var EventEmitter=require(_0xcd9d('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0xcd9d('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xcd9d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xcd9d('0x3'),'afterDestroy':_0xcd9d('0x4')};function emitEvent(_0xae4764){return function(_0x12b4ea,_0xdc274e,_0x373a7d){ChatMessageEvents[_0xcd9d('0x5')](_0xae4764+':'+_0x12b4ea['id'],_0x12b4ea);ChatMessageEvents[_0xcd9d('0x5')](_0xae4764,_0x12b4ea);_0x373a7d(null);};}for(var e in events){if(events[_0xcd9d('0x6')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0xcd9d('0x7')]=ChatMessageEvents;
\ No newline at end of file
index e16ce90..659a50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb258=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','define','ChatMessage','fti_chat_messages','body','get','direction','toLowerCase','out','secret','UserId','ChatInteraction','findOne','ChatInteractionId','createdAt','catch','error'];(function(_0x480954,_0x4abf06){var _0x50235c=function(_0x24439a){while(--_0x24439a){_0x480954['push'](_0x480954['shift']());}};_0x50235c(++_0x4abf06);}(_0xb258,0x12b));var _0x8b25=function(_0x464bd0,_0x243f21){_0x464bd0=_0x464bd0-0x0;var _0x4222b9=_0xb258[_0x464bd0];return _0x4222b9;};'use strict';var _=require(_0x8b25('0x0'));var util=require('util');var logger=require(_0x8b25('0x1'))(_0x8b25('0x2'));var moment=require('moment');var BPromise=require(_0x8b25('0x3'));var rp=require(_0x8b25('0x4'));var fs=require('fs');var path=require(_0x8b25('0x5'));var rimraf=require(_0x8b25('0x6'));var config=require(_0x8b25('0x7'));var attributes=require(_0x8b25('0x8'));module['exports']=function(_0x40d293,_0x3e10a5){return _0x40d293[_0x8b25('0x9')](_0x8b25('0xa'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0x8b25('0xb'),'fields':[_0x8b25('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x188ebc,_0x370a5f,_0x14687a){var _0x127008=_0x40d293['models'];var _0x31eb92=_0x188ebc[_0x8b25('0xd')]({'plain':!![]});if(_0x31eb92[_0x8b25('0xe')][_0x8b25('0xf')]()==='in'||_0x31eb92['direction'][_0x8b25('0xf')]()===_0x8b25('0x10')&&!_0x31eb92[_0x8b25('0x11')]&&!_['isNil'](_0x31eb92[_0x8b25('0x12')])){_0x127008[_0x8b25('0x13')][_0x8b25('0x14')]({'where':{'id':_0x31eb92[_0x8b25('0x15')]}})['then'](function(_0xf042af){if(_0xf042af){_0xf042af['update']({'lastMsgAt':_0x31eb92[_0x8b25('0x16')],'lastMsgDirection':_0x31eb92[_0x8b25('0xe')][_0x8b25('0xf')]()});}})[_0x8b25('0x17')](function(_0x1908a3){console[_0x8b25('0x18')](_0x1908a3);});}_0x14687a();}},'charset':_0x8b25('0x19'),'collate':_0x8b25('0x1a')});};
\ No newline at end of file
+var _0x350a=['isNil','UserId','ChatInteraction','ChatInteractionId','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','chat_messages','fti_chat_messages','FULLTEXT','models','get','direction','toLowerCase','out'];(function(_0x33e418,_0x2a7daa){var _0xf3193c=function(_0x1da704){while(--_0x1da704){_0x33e418['push'](_0x33e418['shift']());}};_0xf3193c(++_0x2a7daa);}(_0x350a,0xb1));var _0xa350=function(_0x5093e9,_0x5154d0){_0x5093e9=_0x5093e9-0x0;var _0x4c9a22=_0x350a[_0x5093e9];return _0x4c9a22;};'use strict';var _=require(_0xa350('0x0'));var util=require(_0xa350('0x1'));var logger=require(_0xa350('0x2'))('api');var moment=require(_0xa350('0x3'));var BPromise=require(_0xa350('0x4'));var rp=require(_0xa350('0x5'));var fs=require('fs');var path=require(_0xa350('0x6'));var rimraf=require(_0xa350('0x7'));var config=require(_0xa350('0x8'));var attributes=require('./chatMessage.attributes');module[_0xa350('0x9')]=function(_0x2f3106,_0x38b68b){return _0x2f3106[_0xa350('0xa')]('ChatMessage',attributes,{'tableName':_0xa350('0xb'),'paranoid':![],'indexes':[{'name':_0xa350('0xc'),'fields':['body'],'type':_0xa350('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x332318,_0xce8765,_0x484a07){var _0x454b57=_0x2f3106[_0xa350('0xe')];var _0x1f543a=_0x332318[_0xa350('0xf')]({'plain':!![]});if(_0x1f543a[_0xa350('0x10')][_0xa350('0x11')]()==='in'||_0x1f543a[_0xa350('0x10')][_0xa350('0x11')]()===_0xa350('0x12')&&!_0x1f543a['secret']&&!_[_0xa350('0x13')](_0x1f543a[_0xa350('0x14')])){_0x454b57[_0xa350('0x15')]['findOne']({'where':{'id':_0x1f543a[_0xa350('0x16')]}})['then'](function(_0x2fc159){if(_0x2fc159){_0x2fc159[_0xa350('0x17')]({'lastMsgAt':_0x1f543a[_0xa350('0x18')],'lastMsgDirection':_0x1f543a[_0xa350('0x10')]['toLowerCase']()});}})['catch'](function(_0x4b6e68){console[_0xa350('0x19')](_0x4b6e68);});}_0x484a07();}},'charset':_0xa350('0x1a'),'collate':_0xa350('0x1b')});};
\ No newline at end of file
index f27c2ad..fb0e7eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d30=['./chatMessage.socket','register','request','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','ChatMessage','create','options','raw','then','CreateChatMessage','moment','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost'];(function(_0x295ea9,_0x19d658){var _0x59a3fe=function(_0x35be54){while(--_0x35be54){_0x295ea9['push'](_0x295ea9['shift']());}};_0x59a3fe(++_0x19d658);}(_0x3d30,0x6a));var _0x03d3=function(_0x4311ff,_0x45f7a9){_0x4311ff=_0x4311ff-0x0;var _0x93273c=_0x3d30[_0x4311ff];return _0x93273c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x03d3('0x0'));var BPromise=require('bluebird');var rs=require(_0x03d3('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x03d3('0x2'));var logger=require('../../config/logger')(_0x03d3('0x3'));var config=require(_0x03d3('0x4'));var jayson=require(_0x03d3('0x5'));var client=jayson[_0x03d3('0x6')][_0x03d3('0x7')]({'port':0x232a});config[_0x03d3('0x8')]=_['defaults'](config[_0x03d3('0x8')],{'host':_0x03d3('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x03d3('0x8')]));require(_0x03d3('0xa'))[_0x03d3('0xb')](socket);function respondWithRpcPromise(_0x3b5148,_0x31c272,_0x11f4a3){return new BPromise(function(_0x3679a5,_0x18fb9b){return client[_0x03d3('0xc')](_0x3b5148,_0x11f4a3)['then'](function(_0x47c708){logger['info'](_0x03d3('0xd'),_0x31c272,_0x03d3('0xe'));logger[_0x03d3('0xf')](_0x03d3('0x10'),_0x31c272,_0x03d3('0xe'),JSON[_0x03d3('0x11')](_0x47c708));if(_0x47c708['error']){if(_0x47c708[_0x03d3('0x12')][_0x03d3('0x13')]===0x1f4){logger[_0x03d3('0x12')](_0x03d3('0xd'),_0x31c272,_0x47c708['error'][_0x03d3('0x14')]);return _0x18fb9b(_0x47c708[_0x03d3('0x12')]['message']);}logger[_0x03d3('0x12')](_0x03d3('0xd'),_0x31c272,_0x47c708[_0x03d3('0x12')][_0x03d3('0x14')]);return _0x3679a5(_0x47c708['error'][_0x03d3('0x14')]);}else{logger[_0x03d3('0x15')](_0x03d3('0xd'),_0x31c272,_0x03d3('0xe'));_0x3679a5(_0x47c708['result'][_0x03d3('0x14')]);}})[_0x03d3('0x16')](function(_0x4bed38){logger[_0x03d3('0x12')](_0x03d3('0xd'),_0x31c272,_0x4bed38);_0x18fb9b(_0x4bed38);});});}exports['CreateChatMessage']=function(_0x57e294){var _0x313b5c=this;return new Promise(function(_0x157632,_0x1f1cb9){return db[_0x03d3('0x17')][_0x03d3('0x18')](_0x57e294['body'],{'raw':_0x57e294[_0x03d3('0x19')]?_0x57e294[_0x03d3('0x19')][_0x03d3('0x1a')]===undefined?!![]:![]:!![]})[_0x03d3('0x1b')](function(_0x421660){logger[_0x03d3('0x15')](_0x03d3('0x1c'),_0x57e294);logger[_0x03d3('0xf')](_0x03d3('0x1c'),_0x57e294,JSON[_0x03d3('0x11')](_0x421660));_0x157632(_0x421660);})[_0x03d3('0x16')](function(_0x4c95a1){logger[_0x03d3('0x12')](_0x03d3('0x1c'),_0x4c95a1[_0x03d3('0x14')],_0x57e294);_0x1f1cb9(_0x313b5c[_0x03d3('0x12')](0x1f4,_0x4c95a1[_0x03d3('0x14')]));});});};
\ No newline at end of file
+var _0xb752=['register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','ChatMessage','create','raw','CreateChatMessage','debug','catch','lodash','util','moment','bluebird','ioredis','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket'];(function(_0x401f47,_0x22f61d){var _0x30e56a=function(_0x41eede){while(--_0x41eede){_0x401f47['push'](_0x401f47['shift']());}};_0x30e56a(++_0x22f61d);}(_0xb752,0x129));var _0x2b75=function(_0x1d11cc,_0x3d0a68){_0x1d11cc=_0x1d11cc-0x0;var _0x2fd7ad=_0xb752[_0x1d11cc];return _0x2fd7ad;};'use strict';var _=require(_0x2b75('0x0'));var util=require(_0x2b75('0x1'));var moment=require(_0x2b75('0x2'));var BPromise=require(_0x2b75('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2b75('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2b75('0x5'));var config=require('../../config/environment');var jayson=require(_0x2b75('0x6'));var client=jayson[_0x2b75('0x7')]['http']({'port':0x232a});config[_0x2b75('0x8')]=_[_0x2b75('0x9')](config['redis'],{'host':_0x2b75('0xa'),'port':0x18eb});var socket=require(_0x2b75('0xb'))(new Redis(config[_0x2b75('0x8')]));require(_0x2b75('0xc'))[_0x2b75('0xd')](socket);function respondWithRpcPromise(_0x6eefa5,_0x3ba157,_0xec3795){return new BPromise(function(_0x46b043,_0x229448){return client[_0x2b75('0xe')](_0x6eefa5,_0xec3795)[_0x2b75('0xf')](function(_0x3bb510){logger[_0x2b75('0x10')](_0x2b75('0x11'),_0x3ba157,_0x2b75('0x12'));logger['debug'](_0x2b75('0x13'),_0x3ba157,'request\x20sent',JSON[_0x2b75('0x14')](_0x3bb510));if(_0x3bb510['error']){if(_0x3bb510['error'][_0x2b75('0x15')]===0x1f4){logger[_0x2b75('0x16')](_0x2b75('0x11'),_0x3ba157,_0x3bb510[_0x2b75('0x16')][_0x2b75('0x17')]);return _0x229448(_0x3bb510[_0x2b75('0x16')][_0x2b75('0x17')]);}logger[_0x2b75('0x16')](_0x2b75('0x11'),_0x3ba157,_0x3bb510['error'][_0x2b75('0x17')]);return _0x46b043(_0x3bb510[_0x2b75('0x16')][_0x2b75('0x17')]);}else{logger[_0x2b75('0x10')](_0x2b75('0x11'),_0x3ba157,'request\x20sent');_0x46b043(_0x3bb510[_0x2b75('0x18')]['message']);}})['catch'](function(_0x4d0fa4){logger[_0x2b75('0x16')](_0x2b75('0x11'),_0x3ba157,_0x4d0fa4);_0x229448(_0x4d0fa4);});});}exports['CreateChatMessage']=function(_0x2dccd2){var _0xe455bd=this;return new Promise(function(_0x2675c4,_0xfb8355){return db[_0x2b75('0x19')][_0x2b75('0x1a')](_0x2dccd2['body'],{'raw':_0x2dccd2['options']?_0x2dccd2['options'][_0x2b75('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x4940c7){logger[_0x2b75('0x10')](_0x2b75('0x1c'),_0x2dccd2);logger[_0x2b75('0x1d')](_0x2b75('0x1c'),_0x2dccd2,JSON[_0x2b75('0x14')](_0x4940c7));_0x2675c4(_0x4940c7);})[_0x2b75('0x1e')](function(_0x36f75f){logger[_0x2b75('0x16')](_0x2b75('0x1c'),_0x36f75f[_0x2b75('0x17')],_0x2dccd2);_0xfb8355(_0xe455bd[_0x2b75('0x16')](0x1f4,_0x36f75f['message']));});});};
\ No newline at end of file
index cbad012..45cc92d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['emit','removeListener','register','length','chatMessage:','remove','update'];(function(_0xbbf9a6,_0x1c79ee){var _0x4ddefd=function(_0x139658){while(--_0x139658){_0xbbf9a6['push'](_0xbbf9a6['shift']());}};_0x4ddefd(++_0x1c79ee);}(_0x55d2,0x9f));var _0x255d=function(_0x51d4ee,_0xdead36){_0x51d4ee=_0x51d4ee-0x0;var _0x2939b0=_0x55d2[_0x51d4ee];return _0x2939b0;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=['save',_0x255d('0x0'),_0x255d('0x1')];function createListener(_0xb754b6,_0x2bac55){return function(_0x28c41e){_0x2bac55[_0x255d('0x2')](_0xb754b6,_0x28c41e);};}function removeListener(_0x57cbc1,_0x44e16c){return function(){ChatMessageEvents[_0x255d('0x3')](_0x57cbc1,_0x44e16c);};}exports[_0x255d('0x4')]=function(_0x38017a){for(var _0x58dae4=0x0,_0x4f93b4=events[_0x255d('0x5')];_0x58dae4<_0x4f93b4;_0x58dae4++){var _0xcf66a2=events[_0x58dae4];var _0x253ac9=createListener(_0x255d('0x6')+_0xcf66a2,_0x38017a);ChatMessageEvents['on'](_0xcf66a2,_0x253ac9);}};
\ No newline at end of file
+var _0xf3be=['chatMessage:','./chatMessage.events','save','remove','update','removeListener','register','length'];(function(_0x57e00e,_0x36e79a){var _0x415e60=function(_0x5cd7fa){while(--_0x5cd7fa){_0x57e00e['push'](_0x57e00e['shift']());}};_0x415e60(++_0x36e79a);}(_0xf3be,0x1e1));var _0xef3b=function(_0x2ae3eb,_0x51d2c9){_0x2ae3eb=_0x2ae3eb-0x0;var _0x6137cf=_0xf3be[_0x2ae3eb];return _0x6137cf;};'use strict';var ChatMessageEvents=require(_0xef3b('0x0'));var events=[_0xef3b('0x1'),_0xef3b('0x2'),_0xef3b('0x3')];function createListener(_0x4d8b04,_0x373397){return function(_0x4ea3cf){_0x373397['emit'](_0x4d8b04,_0x4ea3cf);};}function removeListener(_0x55f249,_0x4bfc98){return function(){ChatMessageEvents[_0xef3b('0x4')](_0x55f249,_0x4bfc98);};}exports[_0xef3b('0x5')]=function(_0x48f499){for(var _0x3dfcc2=0x0,_0x3f7873=events[_0xef3b('0x6')];_0x3dfcc2<_0x3f7873;_0x3dfcc2++){var _0x19191a=events[_0x3dfcc2];var _0x47069a=createListener(_0xef3b('0x7')+_0x19191a,_0x48f499);ChatMessageEvents['on'](_0x19191a,_0x47069a);}};
\ No newline at end of file
index 83ebc07..fff3d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e9a=['reject','delete','destroy','exports','multer','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','put','/:id/accept','accept'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5e9a,0x1c6));var _0xa5e9=function(_0x240290,_0x53f8bb){_0x240290=_0x240290-0x0;var _0x17c8cf=_0x5e9a[_0x240290];return _0x17c8cf;};'use strict';var multer=require(_0xa5e9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa5e9('0x1'));var express=require('express');var router=express[_0xa5e9('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa5e9('0x3'));var interaction=require(_0xa5e9('0x4'));var config=require(_0xa5e9('0x5'));var controller=require(_0xa5e9('0x6'));router[_0xa5e9('0x7')]('/',auth[_0xa5e9('0x8')](),controller[_0xa5e9('0x9')]);router[_0xa5e9('0x7')](_0xa5e9('0xa'),auth[_0xa5e9('0x8')](),controller[_0xa5e9('0xb')]);router[_0xa5e9('0x7')](_0xa5e9('0xc'),auth[_0xa5e9('0x8')](),controller[_0xa5e9('0xd')]);router[_0xa5e9('0xe')]('/',auth[_0xa5e9('0x8')](),interaction[_0xa5e9('0xf')](_0xa5e9('0x10'),_0xa5e9('0x11')),controller['create']);router[_0xa5e9('0x12')](_0xa5e9('0xc'),controller['update']);router['put'](_0xa5e9('0x13'),auth[_0xa5e9('0x8')](),controller[_0xa5e9('0x14')]);router[_0xa5e9('0x12')]('/:id/reject',auth[_0xa5e9('0x8')](),controller[_0xa5e9('0x15')]);router[_0xa5e9('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xa5e9('0x17')]);module[_0xa5e9('0x18')]=router;
\ No newline at end of file
+var _0x3ceb=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','put','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util'];(function(_0x464bdc,_0xb0a019){var _0x1b1f84=function(_0x394495){while(--_0x394495){_0x464bdc['push'](_0x464bdc['shift']());}};_0x1b1f84(++_0xb0a019);}(_0x3ceb,0xf1));var _0xb3ce=function(_0x51bd88,_0x1c3c96){_0x51bd88=_0x51bd88-0x0;var _0x1f4679=_0x3ceb[_0x51bd88];return _0x1f4679;};'use strict';var multer=require(_0xb3ce('0x0'));var util=require(_0xb3ce('0x1'));var path=require(_0xb3ce('0x2'));var timeout=require(_0xb3ce('0x3'));var express=require(_0xb3ce('0x4'));var router=express[_0xb3ce('0x5')]();var fs_extra=require(_0xb3ce('0x6'));var auth=require(_0xb3ce('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb3ce('0x8'));var controller=require('./chatMessage.controller');router[_0xb3ce('0x9')]('/',auth[_0xb3ce('0xa')](),controller[_0xb3ce('0xb')]);router['get'](_0xb3ce('0xc'),auth[_0xb3ce('0xa')](),controller[_0xb3ce('0xd')]);router[_0xb3ce('0x9')](_0xb3ce('0xe'),auth[_0xb3ce('0xa')](),controller[_0xb3ce('0xf')]);router[_0xb3ce('0x10')]('/',auth[_0xb3ce('0xa')](),interaction[_0xb3ce('0x11')](_0xb3ce('0x12'),_0xb3ce('0x13')),controller['create']);router['put'](_0xb3ce('0xe'),controller['update']);router[_0xb3ce('0x14')](_0xb3ce('0x15'),auth[_0xb3ce('0xa')](),controller[_0xb3ce('0x16')]);router[_0xb3ce('0x14')](_0xb3ce('0x17'),auth[_0xb3ce('0xa')](),controller['reject']);router[_0xb3ce('0x18')](_0xb3ce('0xe'),auth[_0xb3ce('0xa')](),controller[_0xb3ce('0x19')]);module[_0xb3ce('0x1a')]=router;
\ No newline at end of file
index 281589c..7701363 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a16=['medium','sequelize','TEXT'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x8a16,0x154));var _0x68a1=function(_0x4571f8,_0x53beea){_0x4571f8=_0x4571f8-0x0;var _0x3063dc=_0x8a16[_0x4571f8];return _0x3063dc;};'use strict';var Sequelize=require(_0x68a1('0x0'));module['exports']={'body':{'type':Sequelize[_0x68a1('0x1')](_0x68a1('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0xf741=['sequelize','exports','TEXT'];(function(_0x132c45,_0x4463ed){var _0x5b2756=function(_0x571832){while(--_0x571832){_0x132c45['push'](_0x132c45['shift']());}};_0x5b2756(++_0x4463ed);}(_0xf741,0x78));var _0x1f74=function(_0x4bf9c1,_0x1053c3){_0x4bf9c1=_0x4bf9c1-0x0;var _0x18ae65=_0xf741[_0x4bf9c1];return _0x18ae65;};'use strict';var Sequelize=require(_0x1f74('0x0'));module[_0x1f74('0x1')]={'body':{'type':Sequelize[_0x1f74('0x2')]('medium'),'allowNull':![]}};
\ No newline at end of file
index 9248116..a63ff6a 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(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0x7a54,0x106));var _0x47a5=function(_0x2c4ffe,_0x12d555){_0x2c4ffe=_0x2c4ffe-0x0;var _0x5b7ac4=_0x7a54[_0x2c4ffe];return _0x5b7ac4;};'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(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x7a54,0x106));var _0x47a5=function(_0x5f2c4e,_0x4b9b1d){_0x5f2c4e=_0x5f2c4e-0x0;var _0x2e43a8=_0x7a54[_0x5f2c4e];return _0x2e43a8;};'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 4816874..bd261fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfc9=['request-promise','path','rimraf','./chatOfflineMessage.attributes','exports','lodash','util','../../config/logger','api','bluebird'];(function(_0x403b7c,_0x5d1d4d){var _0x34e519=function(_0x96866b){while(--_0x96866b){_0x403b7c['push'](_0x403b7c['shift']());}};_0x34e519(++_0x5d1d4d);}(_0xbfc9,0x145));var _0x9bfc=function(_0x3b57d7,_0x4646f0){_0x3b57d7=_0x3b57d7-0x0;var _0x3e9f94=_0xbfc9[_0x3b57d7];return _0x3e9f94;};'use strict';var _=require(_0x9bfc('0x0'));var util=require(_0x9bfc('0x1'));var logger=require(_0x9bfc('0x2'))(_0x9bfc('0x3'));var moment=require('moment');var BPromise=require(_0x9bfc('0x4'));var rp=require(_0x9bfc('0x5'));var fs=require('fs');var path=require(_0x9bfc('0x6'));var rimraf=require(_0x9bfc('0x7'));var config=require('../../config/environment');var attributes=require(_0x9bfc('0x8'));module[_0x9bfc('0x9')]=function(_0x2f43da,_0x5827d3){return _0x2f43da['define']('ChatOfflineMessage',attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbda9=['exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','../../config/logger','api','bluebird','request-promise','../../config/environment'];(function(_0x51a6e8,_0x3e754a){var _0xda6ca=function(_0x2bc0e4){while(--_0x2bc0e4){_0x51a6e8['push'](_0x51a6e8['shift']());}};_0xda6ca(++_0x3e754a);}(_0xbda9,0x159));var _0x9bda=function(_0x34ffe5,_0x1450cd){_0x34ffe5=_0x34ffe5-0x0;var _0x52298d=_0xbda9[_0x34ffe5];return _0x52298d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9bda('0x0'))(_0x9bda('0x1'));var moment=require('moment');var BPromise=require(_0x9bda('0x2'));var rp=require(_0x9bda('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9bda('0x4'));var attributes=require('./chatOfflineMessage.attributes');module[_0x9bda('0x5')]=function(_0x2652d2,_0x113208){return _0x2652d2[_0x9bda('0x6')](_0x9bda('0x7'),attributes,{'tableName':_0x9bda('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9bda('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 02dc601..44b508a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a3=['info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x4d6cda,_0x521846){var _0x2e5278=function(_0x22d2d2){while(--_0x22d2d2){_0x4d6cda['push'](_0x4d6cda['shift']());}};_0x2e5278(++_0x521846);}(_0xe0a3,0xba));var _0x3e0a=function(_0x44606e,_0x2bf244){_0x44606e=_0x44606e-0x0;var _0xe68388=_0xe0a3[_0x44606e];return _0xe68388;};'use strict';var _=require(_0x3e0a('0x0'));var util=require(_0x3e0a('0x1'));var moment=require(_0x3e0a('0x2'));var BPromise=require(_0x3e0a('0x3'));var rs=require(_0x3e0a('0x4'));var fs=require('fs');var Redis=require(_0x3e0a('0x5'));var db=require(_0x3e0a('0x6'))['db'];var utils=require(_0x3e0a('0x7'));var logger=require('../../config/logger')(_0x3e0a('0x8'));var config=require(_0x3e0a('0x9'));var jayson=require(_0x3e0a('0xa'));var client=jayson[_0x3e0a('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a144,_0x2676e0,_0x11a868){return new BPromise(function(_0x47d1ba,_0x2dc1dd){return client[_0x3e0a('0xc')](_0x41a144,_0x11a868)[_0x3e0a('0xd')](function(_0xc2ea86){logger[_0x3e0a('0xe')](_0x3e0a('0xf'),_0x2676e0,_0x3e0a('0x10'));logger[_0x3e0a('0x11')](_0x3e0a('0x12'),_0x2676e0,_0x3e0a('0x10'),JSON[_0x3e0a('0x13')](_0xc2ea86));if(_0xc2ea86[_0x3e0a('0x14')]){if(_0xc2ea86[_0x3e0a('0x14')][_0x3e0a('0x15')]===0x1f4){logger[_0x3e0a('0x14')](_0x3e0a('0xf'),_0x2676e0,_0xc2ea86[_0x3e0a('0x14')]['message']);return _0x2dc1dd(_0xc2ea86[_0x3e0a('0x14')][_0x3e0a('0x16')]);}logger['error'](_0x3e0a('0xf'),_0x2676e0,_0xc2ea86['error'][_0x3e0a('0x16')]);return _0x47d1ba(_0xc2ea86[_0x3e0a('0x14')][_0x3e0a('0x16')]);}else{logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x2676e0,_0x3e0a('0x10'));_0x47d1ba(_0xc2ea86[_0x3e0a('0x17')][_0x3e0a('0x16')]);}})[_0x3e0a('0x18')](function(_0x212407){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x2676e0,_0x212407);_0x2dc1dd(_0x212407);});});}
\ No newline at end of file
+var _0x4745=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x4745,0xf3));var _0x5474=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x4745[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var moment=require(_0x5474('0x2'));var BPromise=require(_0x5474('0x3'));var rs=require(_0x5474('0x4'));var fs=require('fs');var Redis=require(_0x5474('0x5'));var db=require(_0x5474('0x6'))['db'];var utils=require(_0x5474('0x7'));var logger=require(_0x5474('0x8'))('rpc');var config=require(_0x5474('0x9'));var jayson=require(_0x5474('0xa'));var client=jayson['client'][_0x5474('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x353482,_0x5de614,_0xf690b){return new BPromise(function(_0x46cc4b,_0x5487c6){return client[_0x5474('0xc')](_0x353482,_0xf690b)[_0x5474('0xd')](function(_0x3a20a0){logger[_0x5474('0xe')](_0x5474('0xf'),_0x5de614,_0x5474('0x10'));logger[_0x5474('0x11')](_0x5474('0x12'),_0x5de614,_0x5474('0x10'),JSON[_0x5474('0x13')](_0x3a20a0));if(_0x3a20a0['error']){if(_0x3a20a0['error'][_0x5474('0x14')]===0x1f4){logger[_0x5474('0x15')](_0x5474('0xf'),_0x5de614,_0x3a20a0[_0x5474('0x15')]['message']);return _0x5487c6(_0x3a20a0['error'][_0x5474('0x16')]);}logger['error'](_0x5474('0xf'),_0x5de614,_0x3a20a0[_0x5474('0x15')]['message']);return _0x46cc4b(_0x3a20a0[_0x5474('0x15')][_0x5474('0x16')]);}else{logger['info'](_0x5474('0xf'),_0x5de614,_0x5474('0x10'));_0x46cc4b(_0x3a20a0[_0x5474('0x17')][_0x5474('0x16')]);}})[_0x5474('0x18')](function(_0xf5b7b0){logger[_0x5474('0x15')](_0x5474('0xf'),_0x5de614,_0xf5b7b0);_0x5487c6(_0xf5b7b0);});});}
\ No newline at end of file
index 7a53367..2633b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726f=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','isAuthenticated','get','/describe','describe','show','post','create','put','/:id'];(function(_0x30b94b,_0x53d9ae){var _0x51e806=function(_0x48b399){while(--_0x48b399){_0x30b94b['push'](_0x30b94b['shift']());}};_0x51e806(++_0x53d9ae);}(_0x726f,0x166));var _0xf726=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x726f[_0x465a0c];return _0x1e202e;};'use strict';var multer=require(_0xf726('0x0'));var util=require(_0xf726('0x1'));var path=require(_0xf726('0x2'));var timeout=require(_0xf726('0x3'));var express=require(_0xf726('0x4'));var router=express[_0xf726('0x5')]();var fs_extra=require(_0xf726('0x6'));var auth=require(_0xf726('0x7'));var interaction=require(_0xf726('0x8'));var config=require(_0xf726('0x9'));var controller=require(_0xf726('0xa'));router['get']('/',auth[_0xf726('0xb')](),controller['index']);router[_0xf726('0xc')](_0xf726('0xd'),auth['isAuthenticated'](),controller[_0xf726('0xe')]);router[_0xf726('0xc')]('/:id',auth[_0xf726('0xb')](),controller[_0xf726('0xf')]);router[_0xf726('0x10')]('/',auth['isAuthenticated'](),controller[_0xf726('0x11')]);router[_0xf726('0x12')](_0xf726('0x13'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xf726('0x13'),auth['isAuthenticated'](),controller[_0xf726('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x03cc=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','create','put','update'];(function(_0x546a62,_0x444420){var _0x3b1925=function(_0x37c54b){while(--_0x37c54b){_0x546a62['push'](_0x546a62['shift']());}};_0x3b1925(++_0x444420);}(_0x03cc,0x18d));var _0xc03c=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x03cc[_0x17b6e3];return _0x3906f3;};'use strict';var multer=require(_0xc03c('0x0'));var util=require(_0xc03c('0x1'));var path=require(_0xc03c('0x2'));var timeout=require(_0xc03c('0x3'));var express=require('express');var router=express[_0xc03c('0x4')]();var fs_extra=require(_0xc03c('0x5'));var auth=require(_0xc03c('0x6'));var interaction=require(_0xc03c('0x7'));var config=require(_0xc03c('0x8'));var controller=require('./chatOfflineMessage.controller');router['get']('/',auth[_0xc03c('0x9')](),controller[_0xc03c('0xa')]);router[_0xc03c('0xb')]('/describe',auth[_0xc03c('0x9')](),controller[_0xc03c('0xc')]);router[_0xc03c('0xb')](_0xc03c('0xd'),auth[_0xc03c('0x9')](),controller['show']);router['post']('/',auth[_0xc03c('0x9')](),controller[_0xc03c('0xe')]);router[_0xc03c('0xf')](_0xc03c('0xd'),auth[_0xc03c('0x9')](),controller[_0xc03c('0x10')]);router['delete'](_0xc03c('0xd'),auth[_0xc03c('0x9')](),controller['destroy']);module[_0xc03c('0x11')]=router;
\ No newline at end of file
index 9c5dc96..7c21fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4336=['timeout','mouseOver','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4336,0x1a7));var _0x6433=function(_0x1ab806,_0x1f60d1){_0x1ab806=_0x1ab806-0x0;var _0x187740=_0x4336[_0x1ab806];return _0x187740;};'use strict';var Sequelize=require(_0x6433('0x0'));module[_0x6433('0x1')]={'name':{'type':Sequelize[_0x6433('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x6433('0x3')]('mouseOver',_0x6433('0x4')),'defaultValue':_0x6433('0x5')},'selector':{'type':Sequelize[_0x6433('0x2')]},'timeout':{'type':Sequelize[_0x6433('0x6')]}};
\ No newline at end of file
+var _0x02ec=['timeout','mouseOver','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x02ec,0x1c2));var _0xc02e=function(_0x2bb8af,_0x370740){_0x2bb8af=_0x2bb8af-0x0;var _0x1066e5=_0x02ec[_0x2bb8af];return _0x1066e5;};'use strict';var Sequelize=require(_0xc02e('0x0'));module[_0xc02e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('mouseOver',_0xc02e('0x2')),'defaultValue':_0xc02e('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index d58b43a..7799e12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51f=['length','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','name','send','show','params','ChatProactiveAction','query','keys','filters','intersection','attributes','model','fields'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd51f,0xf0));var _0xfd51=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xd51f[_0x5d6456];return _0x4d66c1;};'use strict';var emlformat=require(_0xfd51('0x0'));var rimraf=require(_0xfd51('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfd51('0x2'));var rp=require(_0xfd51('0x3'));var moment=require('moment');var BPromise=require(_0xfd51('0x4'));var Mustache=require(_0xfd51('0x5'));var util=require('util');var path=require(_0xfd51('0x6'));var sox=require(_0xfd51('0x7'));var csv=require('to-csv');var ejs=require(_0xfd51('0x8'));var fs=require('fs');var fs_extra=require(_0xfd51('0x9'));var _=require('lodash');var squel=require(_0xfd51('0xa'));var crypto=require(_0xfd51('0xb'));var jsforce=require(_0xfd51('0xc'));var deskjs=require(_0xfd51('0xd'));var toCsv=require(_0xfd51('0xe'));var querystring=require('querystring');var Papa=require(_0xfd51('0xf'));var Redis=require(_0xfd51('0x10'));var authService=require(_0xfd51('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xfd51('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xfd51('0x13'));var utils=require(_0xfd51('0x14'));var config=require(_0xfd51('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5af174,_0x14eff9){_0x14eff9=_0x14eff9||0xcc;return function(_0x13c995){if(_0x13c995){return _0x5af174[_0xfd51('0x16')](_0x14eff9);}return _0x5af174[_0xfd51('0x17')](_0x14eff9)[_0xfd51('0x18')]();};}function respondWithResult(_0x10f0f5,_0x2c56f5){_0x2c56f5=_0x2c56f5||0xc8;return function(_0x5d3888){if(_0x5d3888){return _0x10f0f5[_0xfd51('0x17')](_0x2c56f5)[_0xfd51('0x19')](_0x5d3888);}};}function respondWithFilteredResult(_0x28ee51,_0x28c148){return function(_0x448d5b){if(_0x448d5b){var _0x2d1b79=typeof _0x28c148[_0xfd51('0x1a')]===_0xfd51('0x1b')&&typeof _0x28c148['limit']===_0xfd51('0x1b');var _0x55e9bf=_0x448d5b[_0xfd51('0x1c')];var _0x28fbbf=_0x2d1b79?0x0:_0x28c148[_0xfd51('0x1a')];var _0x32ad55=_0x2d1b79?_0x448d5b[_0xfd51('0x1c')]:_0x28c148[_0xfd51('0x1a')]+_0x28c148[_0xfd51('0x1d')];var _0x440352;if(_0x32ad55>=_0x55e9bf){_0x32ad55=_0x55e9bf;_0x440352=0xc8;}else{_0x440352=0xce;}_0x28ee51['status'](_0x440352);return _0x28ee51[_0xfd51('0x1e')](_0xfd51('0x1f'),_0x28fbbf+'-'+_0x32ad55+'/'+_0x55e9bf)[_0xfd51('0x19')](_0x448d5b);}return null;};}function patchUpdates(_0x4918e3){return function(_0x1ca7bf){try{jsonpatch['apply'](_0x1ca7bf,_0x4918e3,!![]);}catch(_0x6f6672){return BPromise[_0xfd51('0x20')](_0x6f6672);}return _0x1ca7bf[_0xfd51('0x21')]();};}function saveUpdates(_0x443941,_0x5797fc){return function(_0x34eca6){if(_0x34eca6){return _0x34eca6[_0xfd51('0x22')](_0x443941)[_0xfd51('0x23')](function(_0x420fba){return _0x420fba;});}return null;};}function removeEntity(_0x3efad3,_0x49e887){return function(_0x127672){if(_0x127672){return _0x127672[_0xfd51('0x24')]()['then'](function(){_0x3efad3[_0xfd51('0x17')](0xcc)[_0xfd51('0x18')]();});}};}function handleEntityNotFound(_0x32339d,_0x4dc9ee){return function(_0x56428f){if(!_0x56428f){_0x32339d[_0xfd51('0x16')](0x194);}return _0x56428f;};}function handleError(_0x3d0de7,_0x4d6d82){_0x4d6d82=_0x4d6d82||0x1f4;return function(_0x3d639e){logger[_0xfd51('0x25')](_0x3d639e['stack']);if(_0x3d639e[_0xfd51('0x26')]){delete _0x3d639e[_0xfd51('0x26')];}_0x3d0de7[_0xfd51('0x17')](_0x4d6d82)[_0xfd51('0x27')](_0x3d639e);};}exports[_0xfd51('0x28')]=function(_0x1a355b,_0x565ea5){var _0x5d1601={'raw':!![],'where':{'id':_0x1a355b[_0xfd51('0x29')]['id']}},_0x2e6547={};_0x2e6547['model']=_['keys'](db[_0xfd51('0x2a')]['rawAttributes']);_0x2e6547[_0xfd51('0x2b')]=_[_0xfd51('0x2c')](_0x1a355b[_0xfd51('0x2b')]);_0x2e6547[_0xfd51('0x2d')]=_[_0xfd51('0x2e')](_0x2e6547['model'],_0x2e6547[_0xfd51('0x2b')]);_0x5d1601[_0xfd51('0x2f')]=_[_0xfd51('0x2e')](_0x2e6547[_0xfd51('0x30')],qs[_0xfd51('0x31')](_0x1a355b[_0xfd51('0x2b')][_0xfd51('0x31')]));_0x5d1601[_0xfd51('0x2f')]=_0x5d1601[_0xfd51('0x2f')][_0xfd51('0x32')]?_0x5d1601[_0xfd51('0x2f')]:_0x2e6547[_0xfd51('0x30')];if(_0x1a355b[_0xfd51('0x2b')][_0xfd51('0x33')]){_0x5d1601[_0xfd51('0x34')]=[{'all':!![]}];}_0x5d1601=_[_0xfd51('0x35')]({},_0x5d1601,_0x1a355b[_0xfd51('0x36')]);return db[_0xfd51('0x2a')][_0xfd51('0x37')](_0x5d1601)[_0xfd51('0x23')](handleEntityNotFound(_0x565ea5,null))['then'](respondWithResult(_0x565ea5,null))[_0xfd51('0x38')](handleError(_0x565ea5,null));};exports['create']=function(_0x41948c,_0x658c00){return db[_0xfd51('0x2a')]['create'](_0x41948c['body'],{})['then'](respondWithResult(_0x658c00,0xc9))[_0xfd51('0x38')](handleError(_0x658c00,null));};exports[_0xfd51('0x22')]=function(_0x3a6504,_0x382e8b){if(_0x3a6504[_0xfd51('0x39')]['id']){delete _0x3a6504[_0xfd51('0x39')]['id'];}return db[_0xfd51('0x2a')][_0xfd51('0x37')]({'where':{'id':_0x3a6504['params']['id']}})[_0xfd51('0x23')](handleEntityNotFound(_0x382e8b,null))['then'](saveUpdates(_0x3a6504[_0xfd51('0x39')],null))[_0xfd51('0x23')](respondWithResult(_0x382e8b,null))[_0xfd51('0x38')](handleError(_0x382e8b,null));};exports['destroy']=function(_0x5ce8e3,_0x9b30a4){return db['ChatProactiveAction']['find']({'where':{'id':_0x5ce8e3['params']['id']}})[_0xfd51('0x23')](handleEntityNotFound(_0x9b30a4,null))['then'](removeEntity(_0x9b30a4,null))[_0xfd51('0x38')](handleError(_0x9b30a4,null));};
\ No newline at end of file
+var _0x2cd0=['ChatProactiveAction','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','options','find','then','catch','create','body','eml-format','rimraf','request-promise','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/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','params','model','keys'];(function(_0x3be475,_0x347c13){var _0x5f2682=function(_0x11c53e){while(--_0x11c53e){_0x3be475['push'](_0x3be475['shift']());}};_0x5f2682(++_0x347c13);}(_0x2cd0,0x8a));var _0x02cd=function(_0x3d6137,_0x13d351){_0x3d6137=_0x3d6137-0x0;var _0x5daf34=_0x2cd0[_0x3d6137];return _0x5daf34;};'use strict';var emlformat=require(_0x02cd('0x0'));var rimraf=require(_0x02cd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x02cd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x02cd('0x3'));var util=require(_0x02cd('0x4'));var path=require(_0x02cd('0x5'));var sox=require(_0x02cd('0x6'));var csv=require(_0x02cd('0x7'));var ejs=require(_0x02cd('0x8'));var fs=require('fs');var fs_extra=require(_0x02cd('0x9'));var _=require(_0x02cd('0xa'));var squel=require(_0x02cd('0xb'));var crypto=require(_0x02cd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x02cd('0xd'));var toCsv=require(_0x02cd('0x7'));var querystring=require(_0x02cd('0xe'));var Papa=require(_0x02cd('0xf'));var Redis=require(_0x02cd('0x10'));var authService=require(_0x02cd('0x11'));var qs=require(_0x02cd('0x12'));var as=require(_0x02cd('0x13'));var hardwareService=require(_0x02cd('0x14'));var logger=require(_0x02cd('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x02cd('0x16'));var licenseUtil=require(_0x02cd('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53159e,_0x8fe526){_0x8fe526=_0x8fe526||0xcc;return function(_0x5b844c){if(_0x5b844c){return _0x53159e[_0x02cd('0x18')](_0x8fe526);}return _0x53159e[_0x02cd('0x19')](_0x8fe526)[_0x02cd('0x1a')]();};}function respondWithResult(_0x41c848,_0x22d6b2){_0x22d6b2=_0x22d6b2||0xc8;return function(_0x3b7a7d){if(_0x3b7a7d){return _0x41c848['status'](_0x22d6b2)['json'](_0x3b7a7d);}};}function respondWithFilteredResult(_0x2c2269,_0x29878d){return function(_0x1adf4c){if(_0x1adf4c){var _0x37fbf2=typeof _0x29878d[_0x02cd('0x1b')]==='undefined'&&typeof _0x29878d[_0x02cd('0x1c')]==='undefined';var _0x58a391=_0x1adf4c[_0x02cd('0x1d')];var _0xcb4166=_0x37fbf2?0x0:_0x29878d[_0x02cd('0x1b')];var _0x1077d5=_0x37fbf2?_0x1adf4c['count']:_0x29878d[_0x02cd('0x1b')]+_0x29878d['limit'];var _0x1f8fd3;if(_0x1077d5>=_0x58a391){_0x1077d5=_0x58a391;_0x1f8fd3=0xc8;}else{_0x1f8fd3=0xce;}_0x2c2269[_0x02cd('0x19')](_0x1f8fd3);return _0x2c2269[_0x02cd('0x1e')](_0x02cd('0x1f'),_0xcb4166+'-'+_0x1077d5+'/'+_0x58a391)[_0x02cd('0x20')](_0x1adf4c);}return null;};}function patchUpdates(_0x1f51b1){return function(_0x664d32){try{jsonpatch[_0x02cd('0x21')](_0x664d32,_0x1f51b1,!![]);}catch(_0x3fd1c9){return BPromise[_0x02cd('0x22')](_0x3fd1c9);}return _0x664d32[_0x02cd('0x23')]();};}function saveUpdates(_0x303f4f,_0x40b59c){return function(_0x52cd0c){if(_0x52cd0c){return _0x52cd0c[_0x02cd('0x24')](_0x303f4f)['then'](function(_0x46deed){return _0x46deed;});}return null;};}function removeEntity(_0x16692e,_0x55c388){return function(_0x178b84){if(_0x178b84){return _0x178b84[_0x02cd('0x25')]()['then'](function(){_0x16692e[_0x02cd('0x19')](0xcc)[_0x02cd('0x1a')]();});}};}function handleEntityNotFound(_0x31d42a,_0x2350a7){return function(_0x5d2fc1){if(!_0x5d2fc1){_0x31d42a[_0x02cd('0x18')](0x194);}return _0x5d2fc1;};}function handleError(_0x472b4e,_0x1adbc1){_0x1adbc1=_0x1adbc1||0x1f4;return function(_0x3b4274){logger[_0x02cd('0x26')](_0x3b4274[_0x02cd('0x27')]);if(_0x3b4274[_0x02cd('0x28')]){delete _0x3b4274[_0x02cd('0x28')];}_0x472b4e[_0x02cd('0x19')](_0x1adbc1)[_0x02cd('0x29')](_0x3b4274);};}exports['show']=function(_0x139d7f,_0x894994){var _0x457c61={'raw':!![],'where':{'id':_0x139d7f[_0x02cd('0x2a')]['id']}},_0xd9f5a6={};_0xd9f5a6[_0x02cd('0x2b')]=_[_0x02cd('0x2c')](db[_0x02cd('0x2d')][_0x02cd('0x2e')]);_0xd9f5a6['query']=_[_0x02cd('0x2c')](_0x139d7f[_0x02cd('0x2f')]);_0xd9f5a6[_0x02cd('0x30')]=_[_0x02cd('0x31')](_0xd9f5a6[_0x02cd('0x2b')],_0xd9f5a6[_0x02cd('0x2f')]);_0x457c61['attributes']=_[_0x02cd('0x31')](_0xd9f5a6[_0x02cd('0x2b')],qs['fields'](_0x139d7f[_0x02cd('0x2f')][_0x02cd('0x32')]));_0x457c61[_0x02cd('0x33')]=_0x457c61['attributes'][_0x02cd('0x34')]?_0x457c61[_0x02cd('0x33')]:_0xd9f5a6['model'];if(_0x139d7f[_0x02cd('0x2f')][_0x02cd('0x35')]){_0x457c61[_0x02cd('0x36')]=[{'all':!![]}];}_0x457c61=_['merge']({},_0x457c61,_0x139d7f[_0x02cd('0x37')]);return db[_0x02cd('0x2d')][_0x02cd('0x38')](_0x457c61)[_0x02cd('0x39')](handleEntityNotFound(_0x894994,null))['then'](respondWithResult(_0x894994,null))[_0x02cd('0x3a')](handleError(_0x894994,null));};exports[_0x02cd('0x3b')]=function(_0x46568f,_0x251766){return db[_0x02cd('0x2d')][_0x02cd('0x3b')](_0x46568f['body'],{})['then'](respondWithResult(_0x251766,0xc9))[_0x02cd('0x3a')](handleError(_0x251766,null));};exports[_0x02cd('0x24')]=function(_0x16f53,_0x2c57c8){if(_0x16f53['body']['id']){delete _0x16f53[_0x02cd('0x3c')]['id'];}return db[_0x02cd('0x2d')][_0x02cd('0x38')]({'where':{'id':_0x16f53[_0x02cd('0x2a')]['id']}})[_0x02cd('0x39')](handleEntityNotFound(_0x2c57c8,null))[_0x02cd('0x39')](saveUpdates(_0x16f53[_0x02cd('0x3c')],null))[_0x02cd('0x39')](respondWithResult(_0x2c57c8,null))[_0x02cd('0x3a')](handleError(_0x2c57c8,null));};exports[_0x02cd('0x25')]=function(_0x38d5f1,_0x33bc0f){return db[_0x02cd('0x2d')][_0x02cd('0x38')]({'where':{'id':_0x38d5f1[_0x02cd('0x2a')]['id']}})[_0x02cd('0x39')](handleEntityNotFound(_0x33bc0f,null))[_0x02cd('0x39')](removeEntity(_0x33bc0f,null))['catch'](handleError(_0x33bc0f,null));};
\ No newline at end of file
index 1f16711..d28c1ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc4a=['request-promise','path','rimraf','../../config/environment','exports','define','chat_proactive_actions','../../config/logger','api','moment','bluebird'];(function(_0x53c2a0,_0x440508){var _0x3105ba=function(_0x56fb54){while(--_0x56fb54){_0x53c2a0['push'](_0x53c2a0['shift']());}};_0x3105ba(++_0x440508);}(_0xbc4a,0x10f));var _0xabc4=function(_0x500d17,_0x1f217b){_0x500d17=_0x500d17-0x0;var _0x28670a=_0xbc4a[_0x500d17];return _0x28670a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xabc4('0x0'))(_0xabc4('0x1'));var moment=require(_0xabc4('0x2'));var BPromise=require(_0xabc4('0x3'));var rp=require(_0xabc4('0x4'));var fs=require('fs');var path=require(_0xabc4('0x5'));var rimraf=require(_0xabc4('0x6'));var config=require(_0xabc4('0x7'));var attributes=require('./chatProactiveAction.attributes');module[_0xabc4('0x8')]=function(_0x5cf27e,_0x31da8c){return _0x5cf27e[_0xabc4('0x9')]('ChatProactiveAction',attributes,{'tableName':_0xabc4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf02d=['lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','define','ChatProactiveAction','chat_proactive_actions'];(function(_0x5e3f94,_0x104676){var _0x1976c2=function(_0x5e542d){while(--_0x5e542d){_0x5e3f94['push'](_0x5e3f94['shift']());}};_0x1976c2(++_0x104676);}(_0xf02d,0x84));var _0xdf02=function(_0x220cdc,_0x8e91c5){_0x220cdc=_0x220cdc-0x0;var _0x1842b1=_0xf02d[_0x220cdc];return _0x1842b1;};'use strict';var _=require(_0xdf02('0x0'));var util=require(_0xdf02('0x1'));var logger=require(_0xdf02('0x2'))(_0xdf02('0x3'));var moment=require(_0xdf02('0x4'));var BPromise=require('bluebird');var rp=require(_0xdf02('0x5'));var fs=require('fs');var path=require(_0xdf02('0x6'));var rimraf=require('rimraf');var config=require(_0xdf02('0x7'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x52d378,_0xe25f30){return _0x52d378[_0xdf02('0x8')](_0xdf02('0x9'),attributes,{'tableName':_0xdf02('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 45887da..5067a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4e=['../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x48abe1,_0x36c598){var _0xf0091=function(_0x713da5){while(--_0x713da5){_0x48abe1['push'](_0x48abe1['shift']());}};_0xf0091(++_0x36c598);}(_0x9f4e,0xce));var _0xe9f4=function(_0x3a3b9e,_0xc59037){_0x3a3b9e=_0x3a3b9e-0x0;var _0x148103=_0x9f4e[_0x3a3b9e];return _0x148103;};'use strict';var _=require(_0xe9f4('0x0'));var util=require(_0xe9f4('0x1'));var moment=require(_0xe9f4('0x2'));var BPromise=require(_0xe9f4('0x3'));var rs=require(_0xe9f4('0x4'));var fs=require('fs');var Redis=require(_0xe9f4('0x5'));var db=require(_0xe9f4('0x6'))['db'];var utils=require(_0xe9f4('0x7'));var logger=require(_0xe9f4('0x8'))(_0xe9f4('0x9'));var config=require(_0xe9f4('0xa'));var jayson=require(_0xe9f4('0xb'));var client=jayson[_0xe9f4('0xc')][_0xe9f4('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3be353,_0x12dbb7,_0x1c6fbd){return new BPromise(function(_0x3cd3e5,_0x922994){return client[_0xe9f4('0xe')](_0x3be353,_0x1c6fbd)[_0xe9f4('0xf')](function(_0x303c2a){logger[_0xe9f4('0x10')](_0xe9f4('0x11'),_0x12dbb7,_0xe9f4('0x12'));logger['debug'](_0xe9f4('0x13'),_0x12dbb7,_0xe9f4('0x12'),JSON[_0xe9f4('0x14')](_0x303c2a));if(_0x303c2a['error']){if(_0x303c2a[_0xe9f4('0x15')][_0xe9f4('0x16')]===0x1f4){logger[_0xe9f4('0x15')](_0xe9f4('0x11'),_0x12dbb7,_0x303c2a[_0xe9f4('0x15')][_0xe9f4('0x17')]);return _0x922994(_0x303c2a[_0xe9f4('0x15')][_0xe9f4('0x17')]);}logger['error'](_0xe9f4('0x11'),_0x12dbb7,_0x303c2a[_0xe9f4('0x15')][_0xe9f4('0x17')]);return _0x3cd3e5(_0x303c2a['error'][_0xe9f4('0x17')]);}else{logger[_0xe9f4('0x10')]('ChatProactiveAction,\x20%s,\x20%s',_0x12dbb7,_0xe9f4('0x12'));_0x3cd3e5(_0x303c2a['result']['message']);}})['catch'](function(_0x2da249){logger[_0xe9f4('0x15')](_0xe9f4('0x11'),_0x12dbb7,_0x2da249);_0x922994(_0x2da249);});});}
\ No newline at end of file
+var _0x7618=['error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','jayson/promise','http','then','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x19c64f,_0x2ae7d2){var _0x47bac7=function(_0x5a3fad){while(--_0x5a3fad){_0x19c64f['push'](_0x19c64f['shift']());}};_0x47bac7(++_0x2ae7d2);}(_0x7618,0x1c7));var _0x8761=function(_0x205c14,_0x22f7d6){_0x205c14=_0x205c14-0x0;var _0x4e8a88=_0x7618[_0x205c14];return _0x4e8a88;};'use strict';var _=require(_0x8761('0x0'));var util=require(_0x8761('0x1'));var moment=require(_0x8761('0x2'));var BPromise=require(_0x8761('0x3'));var rs=require(_0x8761('0x4'));var fs=require('fs');var Redis=require(_0x8761('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8761('0x6'));var client=jayson['client'][_0x8761('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4025fe,_0x1b5a3d,_0x4f162e){return new BPromise(function(_0x3e415f,_0x355476){return client['request'](_0x4025fe,_0x4f162e)[_0x8761('0x8')](function(_0x2d1cb6){logger['info'](_0x8761('0x9'),_0x1b5a3d,_0x8761('0xa'));logger[_0x8761('0xb')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x1b5a3d,_0x8761('0xa'),JSON[_0x8761('0xc')](_0x2d1cb6));if(_0x2d1cb6[_0x8761('0xd')]){if(_0x2d1cb6[_0x8761('0xd')][_0x8761('0xe')]===0x1f4){logger[_0x8761('0xd')](_0x8761('0x9'),_0x1b5a3d,_0x2d1cb6['error']['message']);return _0x355476(_0x2d1cb6[_0x8761('0xd')]['message']);}logger[_0x8761('0xd')](_0x8761('0x9'),_0x1b5a3d,_0x2d1cb6[_0x8761('0xd')][_0x8761('0xf')]);return _0x3e415f(_0x2d1cb6['error'][_0x8761('0xf')]);}else{logger[_0x8761('0x10')](_0x8761('0x9'),_0x1b5a3d,_0x8761('0xa'));_0x3e415f(_0x2d1cb6[_0x8761('0x11')][_0x8761('0xf')]);}})['catch'](function(_0x2ee50b){logger[_0x8761('0xd')](_0x8761('0x9'),_0x1b5a3d,_0x2ee50b);_0x355476(_0x2ee50b);});});}
\ No newline at end of file
index 8cb104b..072d5f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['isAuthenticated','show','post','create','put','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xeff8,0x186));var _0x8eff=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0xeff8[_0x2a55f8];return _0x245efd;};'use strict';var multer=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var path=require('path');var timeout=require(_0x8eff('0x2'));var express=require(_0x8eff('0x3'));var router=express[_0x8eff('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8eff('0x5'));var interaction=require(_0x8eff('0x6'));var config=require(_0x8eff('0x7'));var controller=require(_0x8eff('0x8'));router['get'](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller[_0x8eff('0xb')]);router[_0x8eff('0xc')]('/',auth['isAuthenticated'](),controller[_0x8eff('0xd')]);router[_0x8eff('0xe')](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller['update']);router['delete'](_0x8eff('0x9'),auth[_0x8eff('0xa')](),controller[_0x8eff('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x33c5=['fs-extra','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','util','path','express','Router'];(function(_0x18d249,_0x25a6c8){var _0x208a7e=function(_0x1f0408){while(--_0x1f0408){_0x18d249['push'](_0x18d249['shift']());}};_0x208a7e(++_0x25a6c8);}(_0x33c5,0xe6));var _0x533c=function(_0x32b8a9,_0x59d62b){_0x32b8a9=_0x32b8a9-0x0;var _0x40105c=_0x33c5[_0x32b8a9];return _0x40105c;};'use strict';var multer=require('multer');var util=require(_0x533c('0x0'));var path=require(_0x533c('0x1'));var timeout=require('connect-timeout');var express=require(_0x533c('0x2'));var router=express[_0x533c('0x3')]();var fs_extra=require(_0x533c('0x4'));var auth=require(_0x533c('0x5'));var interaction=require(_0x533c('0x6'));var config=require('../../config/environment');var controller=require(_0x533c('0x7'));router[_0x533c('0x8')](_0x533c('0x9'),auth[_0x533c('0xa')](),controller[_0x533c('0xb')]);router[_0x533c('0xc')]('/',auth[_0x533c('0xa')](),controller[_0x533c('0xd')]);router[_0x533c('0xe')](_0x533c('0x9'),auth[_0x533c('0xa')](),controller[_0x533c('0xf')]);router[_0x533c('0x10')](_0x533c('0x9'),auth[_0x533c('0xa')](),controller[_0x533c('0x11')]);module['exports']=router;
\ No newline at end of file
index b03858c..d9beab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6504=['INTEGER','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x939ed,_0x5f545a){var _0x443429=function(_0x6fca53){while(--_0x6fca53){_0x939ed['push'](_0x939ed['shift']());}};_0x443429(++_0x5f545a);}(_0x6504,0xa4));var _0x4650=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6504[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x4650('0x0'));module[_0x4650('0x1')]={'name':{'type':Sequelize[_0x4650('0x2')],'unique':_0x4650('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x4650('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x4650('0x5'),_0x4650('0x6'),_0x4650('0x7'))}};
\ No newline at end of file
+var _0x6863=['name','rrmemory','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x369970,_0x47f7b2){var _0x43a77e=function(_0x3ffd90){while(--_0x3ffd90){_0x369970['push'](_0x369970['shift']());}};_0x43a77e(++_0x47f7b2);}(_0x6863,0xac));var _0x3686=function(_0x494b84,_0x5c89c0){_0x494b84=_0x494b84-0x0;var _0x437725=_0x6863[_0x494b84];return _0x437725;};'use strict';var Sequelize=require(_0x3686('0x0'));module[_0x3686('0x1')]={'name':{'type':Sequelize[_0x3686('0x2')],'unique':_0x3686('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3686('0x4'),_0x3686('0x5'),_0x3686('0x6'))}};
\ No newline at end of file
index 7c40e19..dd29e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261c=['result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','map','ChatQueue','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserChatQueue','rawAttributes','nolimit','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','rows','SIP','getTeams','Team','addTeams','ids','online','voicePause','interface','Agents','sequelize','transaction','each','forEach','removeTeams','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','union','isEmpty','removeAgents','addAgents','spread','emit','userChatQueue:save','isArray','userChatQueue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message'];(function(_0x2e7d32,_0x430d60){var _0x5a0173=function(_0x21ab13){while(--_0x21ab13){_0x2e7d32['push'](_0x2e7d32['shift']());}};_0x5a0173(++_0x430d60);}(_0x261c,0x101));var _0xc261=function(_0x4b8fc7,_0x5022fc){_0x4b8fc7=_0x4b8fc7-0x0;var _0x249f4a=_0x261c[_0x4b8fc7];return _0x249f4a;};'use strict';var emlformat=require(_0xc261('0x0'));var rimraf=require(_0xc261('0x1'));var zipdir=require(_0xc261('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc261('0x3'));var moment=require(_0xc261('0x4'));var BPromise=require(_0xc261('0x5'));var Mustache=require(_0xc261('0x6'));var util=require(_0xc261('0x7'));var path=require(_0xc261('0x8'));var sox=require(_0xc261('0x9'));var csv=require('to-csv');var ejs=require(_0xc261('0xa'));var fs=require('fs');var fs_extra=require(_0xc261('0xb'));var _=require(_0xc261('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc261('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc261('0xe'));var querystring=require(_0xc261('0xf'));var Papa=require('papaparse');var Redis=require(_0xc261('0x10'));var authService=require(_0xc261('0x11'));var qs=require(_0xc261('0x12'));var as=require(_0xc261('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc261('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xc261('0x15'));var licenseUtil=require(_0xc261('0x16'));var db=require(_0xc261('0x17'))['db'];config[_0xc261('0x18')]=_[_0xc261('0x19')](config[_0xc261('0x18')],{'host':_0xc261('0x1a'),'port':0x18eb});var socket=require(_0xc261('0x1b'))(new Redis(config[_0xc261('0x18')]));require(_0xc261('0x1c'))['register'](socket);var jayson=require(_0xc261('0x1d'));var client=jayson[_0xc261('0x1e')][_0xc261('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0xb9c714,_0x3f2563,_0x4a9c6f,_0xf46187){return new BPromise(function(_0x4013c6,_0x239c36){var _0x477735=_0xf46187||client;return _0x477735[_0xc261('0x20')](_0xb9c714,_0x4a9c6f)[_0xc261('0x21')](function(_0x14503c){logger[_0xc261('0x22')](_0xc261('0x23'),_0x3f2563,_0xc261('0x24'));logger[_0xc261('0x25')](_0xc261('0x26'),_0x3f2563,_0xc261('0x24'),JSON[_0xc261('0x27')](_0x14503c));if(_0x14503c['error']){if(_0x14503c['error'][_0xc261('0x28')]===0x1f4){logger[_0xc261('0x29')](_0xc261('0x23'),_0x3f2563,_0x14503c['error'][_0xc261('0x2a')]);return _0x239c36(_0x14503c[_0xc261('0x29')][_0xc261('0x2a')]);}logger[_0xc261('0x29')](_0xc261('0x23'),_0x3f2563,_0x14503c[_0xc261('0x29')][_0xc261('0x2a')]);return _0x4013c6(_0x14503c[_0xc261('0x29')][_0xc261('0x2a')]);}else{logger[_0xc261('0x22')]('ChatQueue,\x20%s,\x20%s',_0x3f2563,_0xc261('0x24'));_0x4013c6(_0x14503c[_0xc261('0x2b')][_0xc261('0x2a')]);}})[_0xc261('0x2c')](function(_0xb052f4){logger[_0xc261('0x29')](_0xc261('0x23'),_0x3f2563,_0xb052f4);_0x239c36(_0xb052f4);});});}function respondWithStatusCode(_0x2239ae,_0x2d908d){_0x2d908d=_0x2d908d||0xcc;return function(_0x4cf0d){if(_0x4cf0d){return _0x2239ae[_0xc261('0x2d')](_0x2d908d);}return _0x2239ae[_0xc261('0x2e')](_0x2d908d)[_0xc261('0x2f')]();};}function respondWithResult(_0x3d1e11,_0x369b54){_0x369b54=_0x369b54||0xc8;return function(_0x402675){if(_0x402675){return _0x3d1e11[_0xc261('0x2e')](_0x369b54)[_0xc261('0x30')](_0x402675);}};}function respondWithFilteredResult(_0x5c8854,_0x59866f){return function(_0x3322df){if(_0x3322df){var _0x5c09e7=typeof _0x59866f[_0xc261('0x31')]==='undefined'&&typeof _0x59866f['limit']===_0xc261('0x32');var _0x17adf6=_0x3322df[_0xc261('0x33')];var _0x37238a=_0x5c09e7?0x0:_0x59866f[_0xc261('0x31')];var _0x27c2e6=_0x5c09e7?_0x3322df['count']:_0x59866f[_0xc261('0x31')]+_0x59866f[_0xc261('0x34')];var _0xe4f26;if(_0x27c2e6>=_0x17adf6){_0x27c2e6=_0x17adf6;_0xe4f26=0xc8;}else{_0xe4f26=0xce;}_0x5c8854['status'](_0xe4f26);return _0x5c8854[_0xc261('0x35')](_0xc261('0x36'),_0x37238a+'-'+_0x27c2e6+'/'+_0x17adf6)[_0xc261('0x30')](_0x3322df);}return null;};}function patchUpdates(_0x3cc583){return function(_0x2f8e00){try{jsonpatch[_0xc261('0x37')](_0x2f8e00,_0x3cc583,!![]);}catch(_0x2009ee){return BPromise[_0xc261('0x38')](_0x2009ee);}return _0x2f8e00[_0xc261('0x39')]();};}function saveUpdates(_0x29caa8,_0x1015c7){return function(_0x3269a7){if(_0x3269a7){return _0x3269a7[_0xc261('0x3a')](_0x29caa8)[_0xc261('0x21')](function(_0x262746){return _0x262746;});}return null;};}function removeEntity(_0x5a9ae2,_0x3484f4){return function(_0x1a8aae){if(_0x1a8aae){return _0x1a8aae[_0xc261('0x3b')]()[_0xc261('0x21')](function(){var _0x82184=_0x1a8aae[_0xc261('0x3c')]({'plain':!![]});var _0x3beaf1='ChatQueues';return db[_0xc261('0x3d')][_0xc261('0x3b')]({'where':{'type':_0x3beaf1,'resourceId':_0x82184['id']}})['then'](function(){return _0x1a8aae;});})['then'](function(){_0x5a9ae2[_0xc261('0x2e')](0xcc)[_0xc261('0x2f')]();});}};}function handleEntityNotFound(_0x46d4fa,_0x532711){return function(_0xa8abb0){if(!_0xa8abb0){_0x46d4fa['sendStatus'](0x194);}return _0xa8abb0;};}function handleError(_0x11fdd5,_0x2af771){_0x2af771=_0x2af771||0x1f4;return function(_0x17037b){logger['error'](_0x17037b[_0xc261('0x3e')]);if(_0x17037b[_0xc261('0x3f')]){delete _0x17037b[_0xc261('0x3f')];}_0x11fdd5['status'](_0x2af771)[_0xc261('0x40')](_0x17037b);};}exports['index']=function(_0x214c38,_0x493209){var _0x521169={},_0x5d5378={},_0x2f4763={'count':0x0,'rows':[]};var _0x1fb43d=_[_0xc261('0x41')](db[_0xc261('0x42')]['rawAttributes'],function(_0x181423){return{'name':_0x181423[_0xc261('0x43')],'type':_0x181423[_0xc261('0x44')][_0xc261('0x45')]};});_0x5d5378[_0xc261('0x46')]=_[_0xc261('0x41')](_0x1fb43d,_0xc261('0x3f'));_0x5d5378['query']=_['keys'](_0x214c38['query']);_0x5d5378[_0xc261('0x47')]=_[_0xc261('0x48')](_0x5d5378['model'],_0x5d5378[_0xc261('0x49')]);_0x521169[_0xc261('0x4a')]=_[_0xc261('0x48')](_0x5d5378[_0xc261('0x46')],qs[_0xc261('0x4b')](_0x214c38[_0xc261('0x49')][_0xc261('0x4b')]));_0x521169[_0xc261('0x4a')]=_0x521169['attributes'][_0xc261('0x4c')]?_0x521169[_0xc261('0x4a')]:_0x5d5378[_0xc261('0x46')];if(!_0x214c38[_0xc261('0x49')][_0xc261('0x4d')]('nolimit')){_0x521169[_0xc261('0x34')]=qs[_0xc261('0x34')](_0x214c38[_0xc261('0x49')][_0xc261('0x34')]);_0x521169[_0xc261('0x31')]=qs[_0xc261('0x31')](_0x214c38[_0xc261('0x49')][_0xc261('0x31')]);}_0x521169[_0xc261('0x4e')]=qs[_0xc261('0x4f')](_0x214c38[_0xc261('0x49')][_0xc261('0x4f')]);_0x521169[_0xc261('0x50')]=qs['filters'](_[_0xc261('0x51')](_0x214c38['query'],_0x5d5378['filters']),_0x1fb43d);if(_0x214c38['query'][_0xc261('0x52')]){_0x521169[_0xc261('0x50')]=_[_0xc261('0x53')](_0x521169[_0xc261('0x50')],{'$or':_[_0xc261('0x41')](_0x1fb43d,function(_0x58fd82){if(_0x58fd82[_0xc261('0x44')]!=='VIRTUAL'){var _0x540141={};_0x540141[_0x58fd82[_0xc261('0x3f')]]={'$like':'%'+_0x214c38[_0xc261('0x49')][_0xc261('0x52')]+'%'};return _0x540141;}})});}_0x521169=_[_0xc261('0x53')]({},_0x521169,_0x214c38[_0xc261('0x54')]);var _0x3f4f17={'where':_0x521169[_0xc261('0x50')]};return db[_0xc261('0x42')][_0xc261('0x33')](_0x3f4f17)[_0xc261('0x21')](function(_0x4a3480){_0x2f4763['count']=_0x4a3480;if(_0x214c38[_0xc261('0x49')][_0xc261('0x55')]){_0x521169[_0xc261('0x56')]=[{'all':!![]}];}return db[_0xc261('0x42')][_0xc261('0x57')](_0x521169);})[_0xc261('0x21')](function(_0x52a62d){_0x2f4763['rows']=_0x52a62d;return _0x2f4763;})['then'](respondWithFilteredResult(_0x493209,_0x521169))['catch'](handleError(_0x493209,null));};exports[_0xc261('0x58')]=function(_0x2e4b8d,_0x4ed9da){var _0x301ee8={'raw':!![],'where':{'id':_0x2e4b8d['params']['id']}},_0x11319d={};_0x11319d[_0xc261('0x46')]=_['keys'](db[_0xc261('0x42')]['rawAttributes']);_0x11319d[_0xc261('0x49')]=_[_0xc261('0x59')](_0x2e4b8d[_0xc261('0x49')]);_0x11319d[_0xc261('0x47')]=_['intersection'](_0x11319d[_0xc261('0x46')],_0x11319d['query']);_0x301ee8[_0xc261('0x4a')]=_[_0xc261('0x48')](_0x11319d[_0xc261('0x46')],qs[_0xc261('0x4b')](_0x2e4b8d[_0xc261('0x49')][_0xc261('0x4b')]));_0x301ee8[_0xc261('0x4a')]=_0x301ee8[_0xc261('0x4a')]['length']?_0x301ee8[_0xc261('0x4a')]:_0x11319d[_0xc261('0x46')];if(_0x2e4b8d[_0xc261('0x49')][_0xc261('0x55')]){_0x301ee8[_0xc261('0x56')]=[{'all':!![]}];}_0x301ee8=_[_0xc261('0x53')]({},_0x301ee8,_0x2e4b8d[_0xc261('0x54')]);return db['ChatQueue'][_0xc261('0x5a')](_0x301ee8)[_0xc261('0x21')](handleEntityNotFound(_0x4ed9da,null))[_0xc261('0x21')](respondWithResult(_0x4ed9da,null))[_0xc261('0x2c')](handleError(_0x4ed9da,null));};exports['create']=function(_0x177807,_0x3d80f0){return db[_0xc261('0x42')][_0xc261('0x5b')](_0x177807[_0xc261('0x5c')],{})['then'](function(_0x5ee537){var _0xc83cc4=_0x177807[_0xc261('0x5d')][_0xc261('0x3c')]({'plain':!![]});if(!_0xc83cc4)throw new Error(_0xc261('0x5e'));if(_0xc83cc4[_0xc261('0x5f')]==='user'){var _0x292226=_0x5ee537[_0xc261('0x3c')]({'plain':!![]});var _0x110256=_0xc261('0x60');return db['UserProfileSection'][_0xc261('0x5a')]({'where':{'name':_0x110256,'userProfileId':_0xc83cc4[_0xc261('0x61')]},'raw':!![]})[_0xc261('0x21')](function(_0x516c82){if(_0x516c82&&_0x516c82[_0xc261('0x62')]===0x0){return db['UserProfileResource'][_0xc261('0x5b')]({'name':_0x292226[_0xc261('0x3f')],'resourceId':_0x292226['id'],'type':_0x516c82[_0xc261('0x3f')],'sectionId':_0x516c82['id']},{})['then'](function(){return _0x5ee537;});}else{return _0x5ee537;}})[_0xc261('0x2c')](function(_0x569f84){logger[_0xc261('0x29')](_0xc261('0x63'),_0x569f84);throw _0x569f84;});}return _0x5ee537;})[_0xc261('0x21')](respondWithResult(_0x3d80f0,0xc9))[_0xc261('0x2c')](handleError(_0x3d80f0,null));};exports[_0xc261('0x3a')]=function(_0x5ae8cb,_0x15fb7d){if(_0x5ae8cb[_0xc261('0x5c')]['id']){delete _0x5ae8cb[_0xc261('0x5c')]['id'];}return db[_0xc261('0x42')][_0xc261('0x5a')]({'where':{'id':_0x5ae8cb[_0xc261('0x64')]['id']}})[_0xc261('0x21')](handleEntityNotFound(_0x15fb7d,null))['then'](saveUpdates(_0x5ae8cb['body'],null))[_0xc261('0x21')](respondWithResult(_0x15fb7d,null))['catch'](handleError(_0x15fb7d,null));};exports[_0xc261('0x3b')]=function(_0x30c97e,_0x3cbc97){return db[_0xc261('0x42')][_0xc261('0x5a')]({'where':{'id':_0x30c97e[_0xc261('0x64')]['id']}})[_0xc261('0x21')](handleEntityNotFound(_0x3cbc97,null))['then'](removeEntity(_0x3cbc97,null))[_0xc261('0x2c')](handleError(_0x3cbc97,null));};exports[_0xc261('0x65')]=function(_0x5f2ac7,_0x4539b2){return db[_0xc261('0x42')][_0xc261('0x65')]()[_0xc261('0x21')](respondWithResult(_0x4539b2,null))[_0xc261('0x2c')](handleError(_0x4539b2,null));};exports[_0xc261('0x66')]=function(_0x38a178,_0x219f70,_0x3e220d){var _0x2e9940={'raw':!![],'where':{}},_0x3803b2={},_0x1bc65f;return db[_0xc261('0x42')][_0xc261('0x67')]({'where':{'id':_0x38a178[_0xc261('0x64')]['id']}})[_0xc261('0x21')](handleEntityNotFound(_0x219f70,null))[_0xc261('0x21')](function(_0x2a2b1f){if(_0x2a2b1f){_0x1bc65f=_0x2a2b1f['get']({'plain':!![]});_0x3803b2[_0xc261('0x46')]=_['keys'](db[_0xc261('0x68')][_0xc261('0x69')]);_0x3803b2[_0xc261('0x49')]=_[_0xc261('0x59')](_0x38a178[_0xc261('0x49')]);_0x3803b2[_0xc261('0x47')]=_[_0xc261('0x48')](_0x3803b2[_0xc261('0x46')],_0x3803b2[_0xc261('0x49')]);_0x2e9940['attributes']=_['intersection'](_0x3803b2['model'],qs[_0xc261('0x4b')](_0x38a178['query'][_0xc261('0x4b')]));_0x2e9940[_0xc261('0x4a')]=_0x2e9940[_0xc261('0x4a')][_0xc261('0x4c')]?_0x2e9940[_0xc261('0x4a')]:_0x3803b2['model'];if(!_0x38a178['query'][_0xc261('0x4d')](_0xc261('0x6a'))){_0x2e9940['limit']=qs[_0xc261('0x34')](_0x38a178[_0xc261('0x49')]['limit']);_0x2e9940[_0xc261('0x31')]=qs[_0xc261('0x31')](_0x38a178['query'][_0xc261('0x31')]);}_0x2e9940[_0xc261('0x4e')]=qs[_0xc261('0x4f')](_0x38a178['query'][_0xc261('0x4f')]);_0x2e9940[_0xc261('0x50')]=qs[_0xc261('0x47')](_['pick'](_0x38a178[_0xc261('0x49')],_0x3803b2[_0xc261('0x47')]));_0x2e9940['where'][_0xc261('0x6b')]=_0x2a2b1f['id'];if(_0x38a178[_0xc261('0x49')]['filter']){_0x2e9940[_0xc261('0x50')]=_['merge'](_0x2e9940['where'],{'$or':_['map'](_0x2e9940['attributes'],function(_0x22632c){var _0x40da36={};_0x40da36[_0x22632c]={'$like':'%'+_0x38a178['query'][_0xc261('0x52')]+'%'};return _0x40da36;})});}_0x2e9940=_[_0xc261('0x53')]({},_0x2e9940,_0x38a178['options']);return db['UserChatQueue'][_0xc261('0x57')](_0x2e9940);}})[_0xc261('0x21')](function(_0x42654b){if(_0x42654b){return db[_0xc261('0x6c')][_0xc261('0x6d')]({'where':{'id':_['map'](_0x42654b,_0xc261('0x6e')),'role':_0xc261('0x6f')},'attributes':['id',_0xc261('0x3f'),_0xc261('0x70'),_0xc261('0x71'),_0xc261('0x72')]});}})[_0xc261('0x21')](function(_0x5abdc5){if(_0x5abdc5){return{'count':_0x5abdc5[_0xc261('0x33')],'rows':_[_0xc261('0x41')](_0x5abdc5[_0xc261('0x73')],function(_0x99d59d){return{'membername':_0x99d59d[_0xc261('0x3f')],'UserId':_0x99d59d['id'],'queue_name':_0x1bc65f[_0xc261('0x3f')],'ChatQueueId':_0x1bc65f['id'],'interface':util['format']('%s/%s',_0xc261('0x74'),_0x99d59d[_0xc261('0x3f')]),'penalty':0x0,'paused':_0x99d59d[_0xc261('0x70')],'createdAt':_0x99d59d['createdAt'],'updatedAt':_0x99d59d[_0xc261('0x71')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x219f70,_0x2e9940))['catch'](handleError(_0x219f70,null));};exports[_0xc261('0x75')]=function(_0xc44f93,_0x591778,_0x37a5c3){var _0x45ed3f={};var _0x425ee5={};var _0x8701cf;var _0xfd8a4e;return db[_0xc261('0x42')][_0xc261('0x67')]({'where':{'id':_0xc44f93['params']['id']}})[_0xc261('0x21')](handleEntityNotFound(_0x591778,null))[_0xc261('0x21')](function(_0x3e898b){if(_0x3e898b){_0x8701cf=_0x3e898b;_0x425ee5['model']=_['keys'](db[_0xc261('0x76')]['rawAttributes']);_0x425ee5['query']=_['keys'](_0xc44f93['query']);_0x425ee5[_0xc261('0x47')]=_[_0xc261('0x48')](_0x425ee5['model'],_0x425ee5['query']);_0x45ed3f['attributes']=_[_0xc261('0x48')](_0x425ee5[_0xc261('0x46')],qs[_0xc261('0x4b')](_0xc44f93['query'][_0xc261('0x4b')]));_0x45ed3f[_0xc261('0x4a')]=_0x45ed3f['attributes'][_0xc261('0x4c')]?_0x45ed3f[_0xc261('0x4a')]:_0x425ee5[_0xc261('0x46')];_0x45ed3f[_0xc261('0x4e')]=qs[_0xc261('0x4f')](_0xc44f93[_0xc261('0x49')]['sort']);_0x45ed3f[_0xc261('0x50')]=qs[_0xc261('0x47')](_[_0xc261('0x51')](_0xc44f93[_0xc261('0x49')],_0x425ee5[_0xc261('0x47')]));if(_0xc44f93['query'][_0xc261('0x52')]){_0x45ed3f[_0xc261('0x50')]=_[_0xc261('0x53')](_0x45ed3f['where'],{'$or':_[_0xc261('0x41')](_0x45ed3f['attributes'],function(_0x17decd){var _0x5493ea={};_0x5493ea[_0x17decd]={'$like':'%'+_0xc44f93[_0xc261('0x49')][_0xc261('0x52')]+'%'};return _0x5493ea;})});}_0x45ed3f=_[_0xc261('0x53')]({},_0x45ed3f,_0xc44f93[_0xc261('0x54')]);return _0x8701cf[_0xc261('0x75')](_0x45ed3f);}})[_0xc261('0x21')](function(_0x8ddfb7){if(_0x8ddfb7){_0xfd8a4e=_0x8ddfb7[_0xc261('0x4c')];if(!_0xc44f93[_0xc261('0x49')][_0xc261('0x4d')]('nolimit')){_0x45ed3f[_0xc261('0x34')]=qs[_0xc261('0x34')](_0xc44f93[_0xc261('0x49')][_0xc261('0x34')]);_0x45ed3f[_0xc261('0x31')]=qs[_0xc261('0x31')](_0xc44f93[_0xc261('0x49')][_0xc261('0x31')]);}return _0x8701cf[_0xc261('0x75')](_0x45ed3f);}})[_0xc261('0x21')](function(_0x1493ec){if(_0x1493ec){return _0x1493ec?{'count':_0xfd8a4e,'rows':_0x1493ec}:null;}})[_0xc261('0x21')](respondWithResult(_0x591778,null))[_0xc261('0x2c')](handleError(_0x591778,null));};exports[_0xc261('0x77')]=function(_0x31c9bf,_0x2f2abf,_0x5b4303){var _0x452658=_0x31c9bf[_0xc261('0x5c')][_0xc261('0x78')];return db[_0xc261('0x76')][_0xc261('0x57')]({'where':{'id':_0x452658},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0xc261('0x79'),_0xc261('0x7a'),_0xc261('0x7b')],'raw':!![]}]})[_0xc261('0x21')](function(_0x1d3da6){if(_0x1d3da6){var _0x5a9d77=_['flatMap'](_0x1d3da6,function(_0x24556e){var _0x3204a7=_0x24556e[_0xc261('0x3c')]({'plain':!![]});return _0x3204a7[_0xc261('0x7c')];});return db['ChatQueue'][_0xc261('0x5a')]({'where':{'id':_0x31c9bf[_0xc261('0x64')]['id']}})[_0xc261('0x21')](function(_0x42aeae){return db[_0xc261('0x7d')][_0xc261('0x7e')](function(_0x2b15ae){return _0x42aeae['addTeams'](_0x452658,{'transaction':_0x2b15ae})[_0xc261('0x21')](function(){return BPromise[_0xc261('0x7f')](_0x5a9d77,function(_0x757a9a){return db[_0xc261('0x68')]['findOrCreate']({'where':{'UserId':_0x757a9a['id'],'ChatQueueId':_0x31c9bf[_0xc261('0x64')]['id']},'transaction':_0x2b15ae});});})[_0xc261('0x21')](function(){_0x5a9d77[_0xc261('0x80')](function(_0x32397a){socket['emit']('userChatQueue:save',{'UserId':_0x32397a['id'],'ChatQueueId':_0x42aeae['id']});});});});});}})[_0xc261('0x21')](respondWithStatusCode(_0x2f2abf,null))[_0xc261('0x2c')](handleError(_0x2f2abf,null));};exports[_0xc261('0x81')]=function(_0x5613eb,_0x53dded,_0x4a966d){return db[_0xc261('0x76')][_0xc261('0x57')]({'where':{'id':_0x5613eb['query'][_0xc261('0x78')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc261('0x7c'),'attributes':['id'],'raw':!![]}]})[_0xc261('0x21')](handleEntityNotFound(_0x53dded,null))[_0xc261('0x21')](function(_0x10b488){var _0x47c014=_[_0xc261('0x41')](_0x10b488,'id');var _0x1aeba3=[];var _0x15e7c8=[];var _0x22d92b=squel['select']();_0x22d92b[_0xc261('0x82')](_0xc261('0x83'))[_0xc261('0x84')]('team_has_chat_queues','tq')[_0xc261('0x85')]('user_has_teams','ut',_0xc261('0x86'))[_0xc261('0x50')](_0xc261('0x87'),_0x5613eb[_0xc261('0x64')]['id']);for(var _0x509517=0x0;_0x509517<_0x10b488[_0xc261('0x4c')];_0x509517+=0x1){let _0x49a0ae=_0x10b488[_0x509517];for(var _0x4993ba=0x0;_0x4993ba<_0x49a0ae[_0xc261('0x7c')][_0xc261('0x4c')];_0x4993ba+=0x1){let _0x2c5f84=_0x49a0ae[_0xc261('0x7c')][_0x4993ba];var _0x4080e0=_0x22d92b['clone']();_0x4080e0[_0xc261('0x50')](_0xc261('0x88'),_0x2c5f84['id']);_0x15e7c8['push'](db[_0xc261('0x7d')][_0xc261('0x49')](_0x4080e0[_0xc261('0x89')](),{'type':db[_0xc261('0x7d')][_0xc261('0x8a')]['SELECT']})[_0xc261('0x21')](function(_0x4dee70){if(_0x4dee70[_0xc261('0x4c')]===0x1){return _0x2c5f84['id'];}else{var _0x38e8d4=_['every'](_['map'](_0x4dee70,_0xc261('0x8b')),function(_0x2100a4){return _['includes'](_0x47c014,_0x2100a4);});if(_0x38e8d4){return _0x2c5f84['id'];}}}));}}return BPromise['all'](_0x15e7c8)[_0xc261('0x21')](function(_0x3fa24a){_0x1aeba3=_(_0x1aeba3)[_0xc261('0x8c')](_0x3fa24a)['compact']()['value']();return db[_0xc261('0x42')]['find']({'where':{'id':_0x5613eb[_0xc261('0x64')]['id']}})[_0xc261('0x21')](function(_0x30a332){return db[_0xc261('0x7d')][_0xc261('0x7e')](function(_0x594fc7){return _0x30a332[_0xc261('0x81')](_0x5613eb[_0xc261('0x49')]['ids'],{'transaction':_0x594fc7})['then'](function(){if(!_[_0xc261('0x8d')](_0x1aeba3)){return _0x30a332[_0xc261('0x8e')](_0x1aeba3,{'transaction':_0x594fc7});}})[_0xc261('0x21')](function(){_0x1aeba3[_0xc261('0x80')](function(_0x243dd9){socket['emit']('userChatQueue:remove',{'UserId':_0x243dd9,'ChatQueueId':_0x30a332['id']});});});});});});})[_0xc261('0x21')](respondWithStatusCode(_0x53dded,null))['catch'](handleError(_0x53dded,null));};exports['addAgents']=function(_0x465e39,_0x16eaa5,_0x2fd4da){return db['ChatQueue'][_0xc261('0x5a')]({'where':{'id':_0x465e39[_0xc261('0x64')]['id']}})['then'](handleEntityNotFound(_0x16eaa5,null))['then'](function(_0x4b92a0){if(_0x4b92a0){return _0x4b92a0[_0xc261('0x8f')](_0x465e39[_0xc261('0x5c')][_0xc261('0x78')],_['omit'](_0x465e39['body'],['ids','id'])||{})[_0xc261('0x90')](function(_0x3372cf){for(var _0x4de66c=0x0;_0x4de66c<_0x465e39[_0xc261('0x5c')][_0xc261('0x78')][_0xc261('0x4c')];_0x4de66c+=0x1){socket[_0xc261('0x91')](_0xc261('0x92'),{'UserId':Number(_0x465e39['body'][_0xc261('0x78')][_0x4de66c]),'ChatQueueId':Number(_0x465e39[_0xc261('0x64')]['id'])});}return _0x3372cf;});}})[_0xc261('0x21')](respondWithResult(_0x16eaa5,null))[_0xc261('0x2c')](handleError(_0x16eaa5,null));};exports['removeAgents']=function(_0x144564,_0x3dffd5,_0x4fcc94){return db[_0xc261('0x42')][_0xc261('0x5a')]({'where':{'id':_0x144564[_0xc261('0x64')]['id']}})[_0xc261('0x21')](handleEntityNotFound(_0x3dffd5,null))[_0xc261('0x21')](function(_0x5045af){if(_0x5045af){return _0x5045af[_0xc261('0x8e')](_0x144564['query'][_0xc261('0x78')])[_0xc261('0x21')](function(){if(_[_0xc261('0x93')](_0x144564[_0xc261('0x49')][_0xc261('0x78')])){for(var _0x38a0e1=0x0;_0x38a0e1<_0x144564['query'][_0xc261('0x78')][_0xc261('0x4c')];_0x38a0e1+=0x1){socket['emit'](_0xc261('0x94'),{'UserId':Number(_0x144564['query'][_0xc261('0x78')][_0x38a0e1]),'ChatQueueId':Number(_0x144564[_0xc261('0x64')]['id'])});}}else{socket[_0xc261('0x91')](_0xc261('0x94'),{'UserId':Number(_0x144564['query']['ids']),'ChatQueueId':Number(_0x144564[_0xc261('0x64')]['id'])});}});}})[_0xc261('0x21')](respondWithStatusCode(_0x3dffd5,null))[_0xc261('0x2c')](handleError(_0x3dffd5,null));};exports[_0xc261('0x95')]=function(_0x2abb88,_0x1a4d8b,_0x3c4764){var _0x299005={};var _0x1903c0={};var _0x562609;var _0x77deb1;return db[_0xc261('0x42')][_0xc261('0x67')]({'where':{'id':_0x2abb88[_0xc261('0x64')]['id']}})['then'](handleEntityNotFound(_0x1a4d8b,null))['then'](function(_0x1c71ff){if(_0x1c71ff){_0x562609=_0x1c71ff;_0x1903c0[_0xc261('0x46')]=_[_0xc261('0x59')](db['User']['rawAttributes']);_0x1903c0[_0xc261('0x49')]=_[_0xc261('0x59')](_0x2abb88[_0xc261('0x49')]);_0x1903c0[_0xc261('0x47')]=_[_0xc261('0x48')](_0x1903c0[_0xc261('0x46')],_0x1903c0[_0xc261('0x49')]);_0x299005['attributes']=_[_0xc261('0x48')](_0x1903c0[_0xc261('0x46')],qs[_0xc261('0x4b')](_0x2abb88['query'][_0xc261('0x4b')]));_0x299005[_0xc261('0x4a')]=_0x299005[_0xc261('0x4a')]['length']?_0x299005[_0xc261('0x4a')]:_0x1903c0[_0xc261('0x46')];_0x299005[_0xc261('0x4e')]=qs[_0xc261('0x4f')](_0x2abb88[_0xc261('0x49')][_0xc261('0x4f')]);_0x299005[_0xc261('0x50')]=qs['filters'](_[_0xc261('0x51')](_0x2abb88[_0xc261('0x49')],_0x1903c0[_0xc261('0x47')]));if(_0x2abb88[_0xc261('0x49')]['filter']){_0x299005[_0xc261('0x50')]=_[_0xc261('0x53')](_0x299005[_0xc261('0x50')],{'$or':_[_0xc261('0x41')](_0x299005[_0xc261('0x4a')],function(_0x7d54d){var _0x271714={};_0x271714[_0x7d54d]={'$like':'%'+_0x2abb88[_0xc261('0x49')][_0xc261('0x52')]+'%'};return _0x271714;})});}_0x299005=_[_0xc261('0x53')]({},_0x299005,_0x2abb88[_0xc261('0x54')]);return _0x562609[_0xc261('0x95')](_0x299005);}})[_0xc261('0x21')](function(_0x1b2f57){if(_0x1b2f57){_0x77deb1=_0x1b2f57[_0xc261('0x4c')];if(!_0x2abb88[_0xc261('0x49')][_0xc261('0x4d')](_0xc261('0x6a'))){_0x299005['limit']=qs[_0xc261('0x34')](_0x2abb88['query']['limit']);_0x299005[_0xc261('0x31')]=qs[_0xc261('0x31')](_0x2abb88[_0xc261('0x49')][_0xc261('0x31')]);}return _0x562609['getAgents'](_0x299005);}})['then'](function(_0x4f606b){if(_0x4f606b){return _0x4f606b?{'count':_0x77deb1,'rows':_0x4f606b}:null;}})['then'](respondWithResult(_0x1a4d8b,null))[_0xc261('0x2c')](handleError(_0x1a4d8b,null));};
\ No newline at end of file
+var _0xe5b2=['ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','stack','name','send','index','ChatQueue','fieldName','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','merge','options','includeAll','findAll','catch','show','params','keys','include','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChatQueues','UserProfileSection','find','userProfileId','autoAssociation','body','describe','getMembers','findOne','nolimit','ChatQueueId','UserChatQueue','User','UserId','agent','chatPause','createdAt','rows','format','SIP','getTeams','Team','rawAttributes','addTeams','ids','Agents','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','field','tq.TeamId','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','SELECT','TeamId','union','compact','value','isEmpty','addAgents','removeAgents','isArray','userChatQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','lodash','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','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','info','ChatQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x196fbe,_0x1a095e){var _0x3736d6=function(_0x195ce8){while(--_0x195ce8){_0x196fbe['push'](_0x196fbe['shift']());}};_0x3736d6(++_0x1a095e);}(_0xe5b2,0x6f));var _0x2e5b=function(_0x3c60ae,_0x4fbf8e){_0x3c60ae=_0x3c60ae-0x0;var _0xdaf38d=_0xe5b2[_0x3c60ae];return _0xdaf38d;};'use strict';var emlformat=require(_0x2e5b('0x0'));var rimraf=require(_0x2e5b('0x1'));var zipdir=require(_0x2e5b('0x2'));var jsonpatch=require(_0x2e5b('0x3'));var rp=require(_0x2e5b('0x4'));var moment=require(_0x2e5b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2e5b('0x6'));var util=require(_0x2e5b('0x7'));var path=require(_0x2e5b('0x8'));var sox=require(_0x2e5b('0x9'));var csv=require('to-csv');var ejs=require(_0x2e5b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2e5b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2e5b('0xc'));var toCsv=require(_0x2e5b('0xd'));var querystring=require('querystring');var Papa=require(_0x2e5b('0xe'));var Redis=require(_0x2e5b('0xf'));var authService=require(_0x2e5b('0x10'));var qs=require(_0x2e5b('0x11'));var as=require(_0x2e5b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2e5b('0x13'))(_0x2e5b('0x14'));var utils=require(_0x2e5b('0x15'));var config=require(_0x2e5b('0x16'));var licenseUtil=require(_0x2e5b('0x17'));var db=require(_0x2e5b('0x18'))['db'];config[_0x2e5b('0x19')]=_[_0x2e5b('0x1a')](config[_0x2e5b('0x19')],{'host':_0x2e5b('0x1b'),'port':0x18eb});var socket=require(_0x2e5b('0x1c'))(new Redis(config[_0x2e5b('0x19')]));require(_0x2e5b('0x1d'))[_0x2e5b('0x1e')](socket);var jayson=require(_0x2e5b('0x1f'));var client=jayson[_0x2e5b('0x20')][_0x2e5b('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x5c52f6,_0x5e9a4b,_0x1da5ab,_0x64774d){return new BPromise(function(_0x585258,_0x28e28e){var _0x70a468=_0x64774d||client;return _0x70a468['request'](_0x5c52f6,_0x1da5ab)['then'](function(_0x9d2069){logger[_0x2e5b('0x22')](_0x2e5b('0x23'),_0x5e9a4b,_0x2e5b('0x24'));logger['debug'](_0x2e5b('0x25'),_0x5e9a4b,_0x2e5b('0x24'),JSON[_0x2e5b('0x26')](_0x9d2069));if(_0x9d2069[_0x2e5b('0x27')]){if(_0x9d2069[_0x2e5b('0x27')][_0x2e5b('0x28')]===0x1f4){logger[_0x2e5b('0x27')](_0x2e5b('0x23'),_0x5e9a4b,_0x9d2069[_0x2e5b('0x27')][_0x2e5b('0x29')]);return _0x28e28e(_0x9d2069[_0x2e5b('0x27')]['message']);}logger['error'](_0x2e5b('0x23'),_0x5e9a4b,_0x9d2069[_0x2e5b('0x27')][_0x2e5b('0x29')]);return _0x585258(_0x9d2069[_0x2e5b('0x27')][_0x2e5b('0x29')]);}else{logger['info'](_0x2e5b('0x23'),_0x5e9a4b,_0x2e5b('0x24'));_0x585258(_0x9d2069[_0x2e5b('0x2a')][_0x2e5b('0x29')]);}})['catch'](function(_0x1fff8e){logger[_0x2e5b('0x27')](_0x2e5b('0x23'),_0x5e9a4b,_0x1fff8e);_0x28e28e(_0x1fff8e);});});}function respondWithStatusCode(_0x5cbf8c,_0x119a78){_0x119a78=_0x119a78||0xcc;return function(_0x5dc6dd){if(_0x5dc6dd){return _0x5cbf8c['sendStatus'](_0x119a78);}return _0x5cbf8c['status'](_0x119a78)[_0x2e5b('0x2b')]();};}function respondWithResult(_0x57451c,_0x5a2dc6){_0x5a2dc6=_0x5a2dc6||0xc8;return function(_0x33ecd5){if(_0x33ecd5){return _0x57451c[_0x2e5b('0x2c')](_0x5a2dc6)[_0x2e5b('0x2d')](_0x33ecd5);}};}function respondWithFilteredResult(_0x48b284,_0x4da7ab){return function(_0x57d220){if(_0x57d220){var _0x12c782=typeof _0x4da7ab[_0x2e5b('0x2e')]===_0x2e5b('0x2f')&&typeof _0x4da7ab[_0x2e5b('0x30')]==='undefined';var _0x398800=_0x57d220[_0x2e5b('0x31')];var _0x791afb=_0x12c782?0x0:_0x4da7ab[_0x2e5b('0x2e')];var _0x46a96c=_0x12c782?_0x57d220[_0x2e5b('0x31')]:_0x4da7ab[_0x2e5b('0x2e')]+_0x4da7ab[_0x2e5b('0x30')];var _0x18373d;if(_0x46a96c>=_0x398800){_0x46a96c=_0x398800;_0x18373d=0xc8;}else{_0x18373d=0xce;}_0x48b284['status'](_0x18373d);return _0x48b284[_0x2e5b('0x32')](_0x2e5b('0x33'),_0x791afb+'-'+_0x46a96c+'/'+_0x398800)[_0x2e5b('0x2d')](_0x57d220);}return null;};}function patchUpdates(_0x1de1a1){return function(_0x3b9f31){try{jsonpatch['apply'](_0x3b9f31,_0x1de1a1,!![]);}catch(_0x15b609){return BPromise[_0x2e5b('0x34')](_0x15b609);}return _0x3b9f31[_0x2e5b('0x35')]();};}function saveUpdates(_0x3271d8,_0x50a491){return function(_0x54be77){if(_0x54be77){return _0x54be77[_0x2e5b('0x36')](_0x3271d8)[_0x2e5b('0x37')](function(_0x5b5cf3){return _0x5b5cf3;});}return null;};}function removeEntity(_0x7bac49,_0x4e137e){return function(_0x5325c8){if(_0x5325c8){return _0x5325c8[_0x2e5b('0x38')]()[_0x2e5b('0x37')](function(){var _0x422a79=_0x5325c8[_0x2e5b('0x39')]({'plain':!![]});var _0xf59889='ChatQueues';return db[_0x2e5b('0x3a')][_0x2e5b('0x38')]({'where':{'type':_0xf59889,'resourceId':_0x422a79['id']}})['then'](function(){return _0x5325c8;});})[_0x2e5b('0x37')](function(){_0x7bac49[_0x2e5b('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54a950,_0xd456b8){return function(_0xe0c144){if(!_0xe0c144){_0x54a950[_0x2e5b('0x3b')](0x194);}return _0xe0c144;};}function handleError(_0x12cf2b,_0x5adb94){_0x5adb94=_0x5adb94||0x1f4;return function(_0x5d20fa){logger['error'](_0x5d20fa[_0x2e5b('0x3c')]);if(_0x5d20fa[_0x2e5b('0x3d')]){delete _0x5d20fa[_0x2e5b('0x3d')];}_0x12cf2b[_0x2e5b('0x2c')](_0x5adb94)[_0x2e5b('0x3e')](_0x5d20fa);};}exports[_0x2e5b('0x3f')]=function(_0x10733f,_0x5abafa){var _0x26e4d9={},_0x18dc53={},_0x45921e={'count':0x0,'rows':[]};var _0x4870dc=_['map'](db[_0x2e5b('0x40')]['rawAttributes'],function(_0x3addb6){return{'name':_0x3addb6[_0x2e5b('0x41')],'type':_0x3addb6['type']['key']};});_0x18dc53[_0x2e5b('0x42')]=_[_0x2e5b('0x43')](_0x4870dc,_0x2e5b('0x3d'));_0x18dc53[_0x2e5b('0x44')]=_['keys'](_0x10733f[_0x2e5b('0x44')]);_0x18dc53[_0x2e5b('0x45')]=_[_0x2e5b('0x46')](_0x18dc53['model'],_0x18dc53[_0x2e5b('0x44')]);_0x26e4d9[_0x2e5b('0x47')]=_[_0x2e5b('0x46')](_0x18dc53[_0x2e5b('0x42')],qs[_0x2e5b('0x48')](_0x10733f[_0x2e5b('0x44')][_0x2e5b('0x48')]));_0x26e4d9[_0x2e5b('0x47')]=_0x26e4d9[_0x2e5b('0x47')][_0x2e5b('0x49')]?_0x26e4d9[_0x2e5b('0x47')]:_0x18dc53[_0x2e5b('0x42')];if(!_0x10733f['query'][_0x2e5b('0x4a')]('nolimit')){_0x26e4d9[_0x2e5b('0x30')]=qs[_0x2e5b('0x30')](_0x10733f[_0x2e5b('0x44')][_0x2e5b('0x30')]);_0x26e4d9['offset']=qs[_0x2e5b('0x2e')](_0x10733f[_0x2e5b('0x44')][_0x2e5b('0x2e')]);}_0x26e4d9[_0x2e5b('0x4b')]=qs[_0x2e5b('0x4c')](_0x10733f['query'][_0x2e5b('0x4c')]);_0x26e4d9[_0x2e5b('0x4d')]=qs[_0x2e5b('0x45')](_[_0x2e5b('0x4e')](_0x10733f['query'],_0x18dc53[_0x2e5b('0x45')]),_0x4870dc);if(_0x10733f[_0x2e5b('0x44')][_0x2e5b('0x4f')]){_0x26e4d9[_0x2e5b('0x4d')]=_['merge'](_0x26e4d9['where'],{'$or':_[_0x2e5b('0x43')](_0x4870dc,function(_0x2ed5cb){if(_0x2ed5cb[_0x2e5b('0x50')]!=='VIRTUAL'){var _0x28853c={};_0x28853c[_0x2ed5cb[_0x2e5b('0x3d')]]={'$like':'%'+_0x10733f[_0x2e5b('0x44')]['filter']+'%'};return _0x28853c;}})});}_0x26e4d9=_[_0x2e5b('0x51')]({},_0x26e4d9,_0x10733f[_0x2e5b('0x52')]);var _0x2a97c4={'where':_0x26e4d9[_0x2e5b('0x4d')]};return db['ChatQueue'][_0x2e5b('0x31')](_0x2a97c4)[_0x2e5b('0x37')](function(_0x111fc0){_0x45921e[_0x2e5b('0x31')]=_0x111fc0;if(_0x10733f[_0x2e5b('0x44')][_0x2e5b('0x53')]){_0x26e4d9['include']=[{'all':!![]}];}return db[_0x2e5b('0x40')][_0x2e5b('0x54')](_0x26e4d9);})[_0x2e5b('0x37')](function(_0x2651fe){_0x45921e['rows']=_0x2651fe;return _0x45921e;})['then'](respondWithFilteredResult(_0x5abafa,_0x26e4d9))[_0x2e5b('0x55')](handleError(_0x5abafa,null));};exports[_0x2e5b('0x56')]=function(_0x3ed65b,_0xf4783f){var _0x4f4232={'raw':!![],'where':{'id':_0x3ed65b[_0x2e5b('0x57')]['id']}},_0x2b1353={};_0x2b1353[_0x2e5b('0x42')]=_['keys'](db[_0x2e5b('0x40')]['rawAttributes']);_0x2b1353[_0x2e5b('0x44')]=_[_0x2e5b('0x58')](_0x3ed65b[_0x2e5b('0x44')]);_0x2b1353[_0x2e5b('0x45')]=_[_0x2e5b('0x46')](_0x2b1353[_0x2e5b('0x42')],_0x2b1353[_0x2e5b('0x44')]);_0x4f4232['attributes']=_[_0x2e5b('0x46')](_0x2b1353[_0x2e5b('0x42')],qs[_0x2e5b('0x48')](_0x3ed65b['query'][_0x2e5b('0x48')]));_0x4f4232['attributes']=_0x4f4232[_0x2e5b('0x47')][_0x2e5b('0x49')]?_0x4f4232[_0x2e5b('0x47')]:_0x2b1353[_0x2e5b('0x42')];if(_0x3ed65b[_0x2e5b('0x44')][_0x2e5b('0x53')]){_0x4f4232[_0x2e5b('0x59')]=[{'all':!![]}];}_0x4f4232=_[_0x2e5b('0x51')]({},_0x4f4232,_0x3ed65b['options']);return db[_0x2e5b('0x40')]['find'](_0x4f4232)[_0x2e5b('0x37')](handleEntityNotFound(_0xf4783f,null))['then'](respondWithResult(_0xf4783f,null))[_0x2e5b('0x55')](handleError(_0xf4783f,null));};exports[_0x2e5b('0x5a')]=function(_0x30b104,_0x3eb5ca){return db[_0x2e5b('0x40')]['create'](_0x30b104['body'],{})[_0x2e5b('0x37')](function(_0x35a84f){var _0xa233ba=_0x30b104[_0x2e5b('0x5b')]['get']({'plain':!![]});if(!_0xa233ba)throw new Error(_0x2e5b('0x5c'));if(_0xa233ba['role']===_0x2e5b('0x5b')){var _0x396b40=_0x35a84f[_0x2e5b('0x39')]({'plain':!![]});var _0x3e3513=_0x2e5b('0x5d');return db[_0x2e5b('0x5e')][_0x2e5b('0x5f')]({'where':{'name':_0x3e3513,'userProfileId':_0xa233ba[_0x2e5b('0x60')]},'raw':!![]})[_0x2e5b('0x37')](function(_0x5bdb02){if(_0x5bdb02&&_0x5bdb02[_0x2e5b('0x61')]===0x0){return db[_0x2e5b('0x3a')]['create']({'name':_0x396b40['name'],'resourceId':_0x396b40['id'],'type':_0x5bdb02['name'],'sectionId':_0x5bdb02['id']},{})['then'](function(){return _0x35a84f;});}else{return _0x35a84f;}})[_0x2e5b('0x55')](function(_0x3b31a0){logger[_0x2e5b('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b31a0);throw _0x3b31a0;});}return _0x35a84f;})[_0x2e5b('0x37')](respondWithResult(_0x3eb5ca,0xc9))[_0x2e5b('0x55')](handleError(_0x3eb5ca,null));};exports['update']=function(_0x3e12d8,_0x41473f){if(_0x3e12d8[_0x2e5b('0x62')]['id']){delete _0x3e12d8[_0x2e5b('0x62')]['id'];}return db[_0x2e5b('0x40')][_0x2e5b('0x5f')]({'where':{'id':_0x3e12d8[_0x2e5b('0x57')]['id']}})[_0x2e5b('0x37')](handleEntityNotFound(_0x41473f,null))[_0x2e5b('0x37')](saveUpdates(_0x3e12d8[_0x2e5b('0x62')],null))[_0x2e5b('0x37')](respondWithResult(_0x41473f,null))[_0x2e5b('0x55')](handleError(_0x41473f,null));};exports[_0x2e5b('0x38')]=function(_0x1801fc,_0x53d37e){return db[_0x2e5b('0x40')][_0x2e5b('0x5f')]({'where':{'id':_0x1801fc[_0x2e5b('0x57')]['id']}})[_0x2e5b('0x37')](handleEntityNotFound(_0x53d37e,null))[_0x2e5b('0x37')](removeEntity(_0x53d37e,null))[_0x2e5b('0x55')](handleError(_0x53d37e,null));};exports[_0x2e5b('0x63')]=function(_0x272de8,_0x475075){return db[_0x2e5b('0x40')][_0x2e5b('0x63')]()[_0x2e5b('0x37')](respondWithResult(_0x475075,null))[_0x2e5b('0x55')](handleError(_0x475075,null));};exports[_0x2e5b('0x64')]=function(_0x531e70,_0xb999c4,_0xc339d2){var _0x2740a5={'raw':!![],'where':{}},_0x255179={},_0x5e08e8;return db[_0x2e5b('0x40')][_0x2e5b('0x65')]({'where':{'id':_0x531e70['params']['id']}})[_0x2e5b('0x37')](handleEntityNotFound(_0xb999c4,null))[_0x2e5b('0x37')](function(_0x54a84b){if(_0x54a84b){_0x5e08e8=_0x54a84b[_0x2e5b('0x39')]({'plain':!![]});_0x255179[_0x2e5b('0x42')]=_['keys'](db['UserChatQueue']['rawAttributes']);_0x255179['query']=_[_0x2e5b('0x58')](_0x531e70[_0x2e5b('0x44')]);_0x255179['filters']=_[_0x2e5b('0x46')](_0x255179[_0x2e5b('0x42')],_0x255179[_0x2e5b('0x44')]);_0x2740a5[_0x2e5b('0x47')]=_[_0x2e5b('0x46')](_0x255179['model'],qs['fields'](_0x531e70[_0x2e5b('0x44')][_0x2e5b('0x48')]));_0x2740a5[_0x2e5b('0x47')]=_0x2740a5[_0x2e5b('0x47')][_0x2e5b('0x49')]?_0x2740a5['attributes']:_0x255179[_0x2e5b('0x42')];if(!_0x531e70['query'][_0x2e5b('0x4a')](_0x2e5b('0x66'))){_0x2740a5[_0x2e5b('0x30')]=qs['limit'](_0x531e70[_0x2e5b('0x44')][_0x2e5b('0x30')]);_0x2740a5[_0x2e5b('0x2e')]=qs[_0x2e5b('0x2e')](_0x531e70[_0x2e5b('0x44')]['offset']);}_0x2740a5['order']=qs[_0x2e5b('0x4c')](_0x531e70[_0x2e5b('0x44')][_0x2e5b('0x4c')]);_0x2740a5[_0x2e5b('0x4d')]=qs[_0x2e5b('0x45')](_[_0x2e5b('0x4e')](_0x531e70[_0x2e5b('0x44')],_0x255179['filters']));_0x2740a5['where'][_0x2e5b('0x67')]=_0x54a84b['id'];if(_0x531e70['query'][_0x2e5b('0x4f')]){_0x2740a5[_0x2e5b('0x4d')]=_[_0x2e5b('0x51')](_0x2740a5['where'],{'$or':_['map'](_0x2740a5[_0x2e5b('0x47')],function(_0x6f2d08){var _0x5862c9={};_0x5862c9[_0x6f2d08]={'$like':'%'+_0x531e70[_0x2e5b('0x44')]['filter']+'%'};return _0x5862c9;})});}_0x2740a5=_['merge']({},_0x2740a5,_0x531e70[_0x2e5b('0x52')]);return db[_0x2e5b('0x68')][_0x2e5b('0x54')](_0x2740a5);}})['then'](function(_0x3236bb){if(_0x3236bb){return db[_0x2e5b('0x69')]['findAndCountAll']({'where':{'id':_[_0x2e5b('0x43')](_0x3236bb,_0x2e5b('0x6a')),'role':_0x2e5b('0x6b')},'attributes':['id',_0x2e5b('0x3d'),_0x2e5b('0x6c'),'updatedAt',_0x2e5b('0x6d')]});}})[_0x2e5b('0x37')](function(_0x54d8b9){if(_0x54d8b9){return{'count':_0x54d8b9[_0x2e5b('0x31')],'rows':_[_0x2e5b('0x43')](_0x54d8b9[_0x2e5b('0x6e')],function(_0x410e26){return{'membername':_0x410e26['name'],'UserId':_0x410e26['id'],'queue_name':_0x5e08e8['name'],'ChatQueueId':_0x5e08e8['id'],'interface':util[_0x2e5b('0x6f')]('%s/%s',_0x2e5b('0x70'),_0x410e26[_0x2e5b('0x3d')]),'penalty':0x0,'paused':_0x410e26[_0x2e5b('0x6c')],'createdAt':_0x410e26[_0x2e5b('0x6d')],'updatedAt':_0x410e26['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x2e5b('0x37')](respondWithFilteredResult(_0xb999c4,_0x2740a5))[_0x2e5b('0x55')](handleError(_0xb999c4,null));};exports[_0x2e5b('0x71')]=function(_0x412b15,_0x18f1a3,_0x4ea44b){var _0x1e81a8={};var _0x12951e={};var _0x8b7ee0;var _0x4340f8;return db[_0x2e5b('0x40')][_0x2e5b('0x65')]({'where':{'id':_0x412b15[_0x2e5b('0x57')]['id']}})[_0x2e5b('0x37')](handleEntityNotFound(_0x18f1a3,null))['then'](function(_0x17375c){if(_0x17375c){_0x8b7ee0=_0x17375c;_0x12951e['model']=_[_0x2e5b('0x58')](db[_0x2e5b('0x72')][_0x2e5b('0x73')]);_0x12951e[_0x2e5b('0x44')]=_['keys'](_0x412b15['query']);_0x12951e['filters']=_[_0x2e5b('0x46')](_0x12951e[_0x2e5b('0x42')],_0x12951e['query']);_0x1e81a8[_0x2e5b('0x47')]=_[_0x2e5b('0x46')](_0x12951e[_0x2e5b('0x42')],qs['fields'](_0x412b15[_0x2e5b('0x44')]['fields']));_0x1e81a8[_0x2e5b('0x47')]=_0x1e81a8[_0x2e5b('0x47')]['length']?_0x1e81a8[_0x2e5b('0x47')]:_0x12951e[_0x2e5b('0x42')];_0x1e81a8[_0x2e5b('0x4b')]=qs[_0x2e5b('0x4c')](_0x412b15[_0x2e5b('0x44')][_0x2e5b('0x4c')]);_0x1e81a8[_0x2e5b('0x4d')]=qs[_0x2e5b('0x45')](_[_0x2e5b('0x4e')](_0x412b15[_0x2e5b('0x44')],_0x12951e['filters']));if(_0x412b15[_0x2e5b('0x44')]['filter']){_0x1e81a8['where']=_[_0x2e5b('0x51')](_0x1e81a8[_0x2e5b('0x4d')],{'$or':_['map'](_0x1e81a8[_0x2e5b('0x47')],function(_0x60179){var _0x1721b3={};_0x1721b3[_0x60179]={'$like':'%'+_0x412b15['query'][_0x2e5b('0x4f')]+'%'};return _0x1721b3;})});}_0x1e81a8=_[_0x2e5b('0x51')]({},_0x1e81a8,_0x412b15[_0x2e5b('0x52')]);return _0x8b7ee0[_0x2e5b('0x71')](_0x1e81a8);}})[_0x2e5b('0x37')](function(_0x5be57f){if(_0x5be57f){_0x4340f8=_0x5be57f[_0x2e5b('0x49')];if(!_0x412b15['query'][_0x2e5b('0x4a')](_0x2e5b('0x66'))){_0x1e81a8[_0x2e5b('0x30')]=qs[_0x2e5b('0x30')](_0x412b15[_0x2e5b('0x44')]['limit']);_0x1e81a8[_0x2e5b('0x2e')]=qs[_0x2e5b('0x2e')](_0x412b15['query'][_0x2e5b('0x2e')]);}return _0x8b7ee0[_0x2e5b('0x71')](_0x1e81a8);}})[_0x2e5b('0x37')](function(_0x7ad594){if(_0x7ad594){return _0x7ad594?{'count':_0x4340f8,'rows':_0x7ad594}:null;}})[_0x2e5b('0x37')](respondWithResult(_0x18f1a3,null))[_0x2e5b('0x55')](handleError(_0x18f1a3,null));};exports[_0x2e5b('0x74')]=function(_0x5c3de2,_0x2de9b2,_0x2261f0){var _0x240518=_0x5c3de2[_0x2e5b('0x62')][_0x2e5b('0x75')];return db[_0x2e5b('0x72')][_0x2e5b('0x54')]({'where':{'id':_0x240518},'attributes':['id'],'include':[{'model':db[_0x2e5b('0x69')],'as':_0x2e5b('0x76'),'attributes':['id','name','online','voicePause',_0x2e5b('0x77')],'raw':!![]}]})[_0x2e5b('0x37')](function(_0x24c44f){if(_0x24c44f){var _0x2d97f4=_[_0x2e5b('0x78')](_0x24c44f,function(_0xd8b92d){var _0x40c299=_0xd8b92d[_0x2e5b('0x39')]({'plain':!![]});return _0x40c299[_0x2e5b('0x76')];});return db[_0x2e5b('0x40')][_0x2e5b('0x5f')]({'where':{'id':_0x5c3de2['params']['id']}})[_0x2e5b('0x37')](function(_0x13aa36){return db[_0x2e5b('0x79')][_0x2e5b('0x7a')](function(_0x5a568a){return _0x13aa36[_0x2e5b('0x74')](_0x240518,{'transaction':_0x5a568a})[_0x2e5b('0x37')](function(){return BPromise['each'](_0x2d97f4,function(_0x3ebc3b){return db[_0x2e5b('0x68')][_0x2e5b('0x7b')]({'where':{'UserId':_0x3ebc3b['id'],'ChatQueueId':_0x5c3de2[_0x2e5b('0x57')]['id']},'transaction':_0x5a568a});});})[_0x2e5b('0x37')](function(){_0x2d97f4[_0x2e5b('0x7c')](function(_0x5583a7){socket[_0x2e5b('0x7d')](_0x2e5b('0x7e'),{'UserId':_0x5583a7['id'],'ChatQueueId':_0x13aa36['id']});});});});});}})[_0x2e5b('0x37')](respondWithStatusCode(_0x2de9b2,null))['catch'](handleError(_0x2de9b2,null));};exports[_0x2e5b('0x7f')]=function(_0x4dd5fb,_0x1970ce,_0x6c5488){return db[_0x2e5b('0x72')]['findAll']({'where':{'id':_0x4dd5fb['query'][_0x2e5b('0x75')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x2e5b('0x76'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1970ce,null))[_0x2e5b('0x37')](function(_0x56f3f9){var _0x59323b=_['map'](_0x56f3f9,'id');var _0x1f2ccd=[];var _0x4dcb65=[];var _0x52d90f=squel['select']();_0x52d90f[_0x2e5b('0x80')](_0x2e5b('0x81'))['from'](_0x2e5b('0x82'),'tq')[_0x2e5b('0x83')](_0x2e5b('0x84'),'ut',_0x2e5b('0x85'))['where']('ChatQueueId\x20=\x20?',_0x4dd5fb[_0x2e5b('0x57')]['id']);for(var _0x3605a9=0x0;_0x3605a9<_0x56f3f9[_0x2e5b('0x49')];_0x3605a9+=0x1){let _0x2fa61d=_0x56f3f9[_0x3605a9];for(var _0x1e3073=0x0;_0x1e3073<_0x2fa61d[_0x2e5b('0x76')][_0x2e5b('0x49')];_0x1e3073+=0x1){let _0x30d15f=_0x2fa61d[_0x2e5b('0x76')][_0x1e3073];var _0x1bb350=_0x52d90f['clone']();_0x1bb350['where'](_0x2e5b('0x86'),_0x30d15f['id']);_0x4dcb65[_0x2e5b('0x87')](db[_0x2e5b('0x79')]['query'](_0x1bb350[_0x2e5b('0x88')](),{'type':db[_0x2e5b('0x79')]['QueryTypes'][_0x2e5b('0x89')]})[_0x2e5b('0x37')](function(_0x670826){if(_0x670826[_0x2e5b('0x49')]===0x1){return _0x30d15f['id'];}else{var _0xdeb084=_['every'](_[_0x2e5b('0x43')](_0x670826,_0x2e5b('0x8a')),function(_0x42f623){return _['includes'](_0x59323b,_0x42f623);});if(_0xdeb084){return _0x30d15f['id'];}}}));}}return BPromise['all'](_0x4dcb65)[_0x2e5b('0x37')](function(_0x14a0bb){_0x1f2ccd=_(_0x1f2ccd)[_0x2e5b('0x8b')](_0x14a0bb)[_0x2e5b('0x8c')]()[_0x2e5b('0x8d')]();return db[_0x2e5b('0x40')][_0x2e5b('0x5f')]({'where':{'id':_0x4dd5fb['params']['id']}})[_0x2e5b('0x37')](function(_0x5dff73){return db[_0x2e5b('0x79')][_0x2e5b('0x7a')](function(_0xfb157d){return _0x5dff73[_0x2e5b('0x7f')](_0x4dd5fb[_0x2e5b('0x44')]['ids'],{'transaction':_0xfb157d})[_0x2e5b('0x37')](function(){if(!_[_0x2e5b('0x8e')](_0x1f2ccd)){return _0x5dff73['removeAgents'](_0x1f2ccd,{'transaction':_0xfb157d});}})['then'](function(){_0x1f2ccd[_0x2e5b('0x7c')](function(_0xae609f){socket[_0x2e5b('0x7d')]('userChatQueue:remove',{'UserId':_0xae609f,'ChatQueueId':_0x5dff73['id']});});});});});});})[_0x2e5b('0x37')](respondWithStatusCode(_0x1970ce,null))[_0x2e5b('0x55')](handleError(_0x1970ce,null));};exports['addAgents']=function(_0x1eba5c,_0x5497b6,_0x5b8cd0){return db[_0x2e5b('0x40')]['find']({'where':{'id':_0x1eba5c[_0x2e5b('0x57')]['id']}})[_0x2e5b('0x37')](handleEntityNotFound(_0x5497b6,null))[_0x2e5b('0x37')](function(_0x45175c){if(_0x45175c){return _0x45175c[_0x2e5b('0x8f')](_0x1eba5c[_0x2e5b('0x62')][_0x2e5b('0x75')],_['omit'](_0x1eba5c[_0x2e5b('0x62')],[_0x2e5b('0x75'),'id'])||{})['spread'](function(_0x3ea7ae){for(var _0x2ba6d9=0x0;_0x2ba6d9<_0x1eba5c[_0x2e5b('0x62')][_0x2e5b('0x75')][_0x2e5b('0x49')];_0x2ba6d9+=0x1){socket[_0x2e5b('0x7d')](_0x2e5b('0x7e'),{'UserId':Number(_0x1eba5c[_0x2e5b('0x62')][_0x2e5b('0x75')][_0x2ba6d9]),'ChatQueueId':Number(_0x1eba5c[_0x2e5b('0x57')]['id'])});}return _0x3ea7ae;});}})[_0x2e5b('0x37')](respondWithResult(_0x5497b6,null))[_0x2e5b('0x55')](handleError(_0x5497b6,null));};exports[_0x2e5b('0x90')]=function(_0x1f3e7e,_0x2c8f9f,_0x5e6e82){return db['ChatQueue']['find']({'where':{'id':_0x1f3e7e['params']['id']}})[_0x2e5b('0x37')](handleEntityNotFound(_0x2c8f9f,null))[_0x2e5b('0x37')](function(_0x5df393){if(_0x5df393){return _0x5df393[_0x2e5b('0x90')](_0x1f3e7e[_0x2e5b('0x44')][_0x2e5b('0x75')])[_0x2e5b('0x37')](function(){if(_[_0x2e5b('0x91')](_0x1f3e7e[_0x2e5b('0x44')][_0x2e5b('0x75')])){for(var _0x2ce7b2=0x0;_0x2ce7b2<_0x1f3e7e[_0x2e5b('0x44')][_0x2e5b('0x75')]['length'];_0x2ce7b2+=0x1){socket['emit'](_0x2e5b('0x92'),{'UserId':Number(_0x1f3e7e[_0x2e5b('0x44')][_0x2e5b('0x75')][_0x2ce7b2]),'ChatQueueId':Number(_0x1f3e7e['params']['id'])});}}else{socket[_0x2e5b('0x7d')](_0x2e5b('0x92'),{'UserId':Number(_0x1f3e7e[_0x2e5b('0x44')][_0x2e5b('0x75')]),'ChatQueueId':Number(_0x1f3e7e[_0x2e5b('0x57')]['id'])});}});}})[_0x2e5b('0x37')](respondWithStatusCode(_0x2c8f9f,null))[_0x2e5b('0x55')](handleError(_0x2c8f9f,null));};exports[_0x2e5b('0x93')]=function(_0x1fc68c,_0x3f98c0,_0x21d911){var _0x262175={};var _0x360195={};var _0x56f7e0;var _0x35aa54;return db['ChatQueue']['findOne']({'where':{'id':_0x1fc68c['params']['id']}})['then'](handleEntityNotFound(_0x3f98c0,null))[_0x2e5b('0x37')](function(_0x5940b8){if(_0x5940b8){_0x56f7e0=_0x5940b8;_0x360195['model']=_[_0x2e5b('0x58')](db[_0x2e5b('0x69')][_0x2e5b('0x73')]);_0x360195[_0x2e5b('0x44')]=_['keys'](_0x1fc68c[_0x2e5b('0x44')]);_0x360195[_0x2e5b('0x45')]=_[_0x2e5b('0x46')](_0x360195['model'],_0x360195[_0x2e5b('0x44')]);_0x262175[_0x2e5b('0x47')]=_[_0x2e5b('0x46')](_0x360195['model'],qs[_0x2e5b('0x48')](_0x1fc68c[_0x2e5b('0x44')][_0x2e5b('0x48')]));_0x262175[_0x2e5b('0x47')]=_0x262175[_0x2e5b('0x47')]['length']?_0x262175[_0x2e5b('0x47')]:_0x360195[_0x2e5b('0x42')];_0x262175['order']=qs[_0x2e5b('0x4c')](_0x1fc68c[_0x2e5b('0x44')][_0x2e5b('0x4c')]);_0x262175[_0x2e5b('0x4d')]=qs[_0x2e5b('0x45')](_[_0x2e5b('0x4e')](_0x1fc68c[_0x2e5b('0x44')],_0x360195[_0x2e5b('0x45')]));if(_0x1fc68c[_0x2e5b('0x44')][_0x2e5b('0x4f')]){_0x262175[_0x2e5b('0x4d')]=_[_0x2e5b('0x51')](_0x262175[_0x2e5b('0x4d')],{'$or':_[_0x2e5b('0x43')](_0x262175[_0x2e5b('0x47')],function(_0x458868){var _0x2dbf84={};_0x2dbf84[_0x458868]={'$like':'%'+_0x1fc68c[_0x2e5b('0x44')][_0x2e5b('0x4f')]+'%'};return _0x2dbf84;})});}_0x262175=_[_0x2e5b('0x51')]({},_0x262175,_0x1fc68c[_0x2e5b('0x52')]);return _0x56f7e0['getAgents'](_0x262175);}})[_0x2e5b('0x37')](function(_0x4933cc){if(_0x4933cc){_0x35aa54=_0x4933cc[_0x2e5b('0x49')];if(!_0x1fc68c[_0x2e5b('0x44')][_0x2e5b('0x4a')](_0x2e5b('0x66'))){_0x262175[_0x2e5b('0x30')]=qs[_0x2e5b('0x30')](_0x1fc68c[_0x2e5b('0x44')][_0x2e5b('0x30')]);_0x262175[_0x2e5b('0x2e')]=qs[_0x2e5b('0x2e')](_0x1fc68c['query'][_0x2e5b('0x2e')]);}return _0x56f7e0[_0x2e5b('0x93')](_0x262175);}})[_0x2e5b('0x37')](function(_0x645fe3){if(_0x645fe3){return _0x645fe3?{'count':_0x35aa54,'rows':_0x645fe3}:null;}})[_0x2e5b('0x37')](respondWithResult(_0x3f98c0,null))[_0x2e5b('0x55')](handleError(_0x3f98c0,null));};
\ No newline at end of file
index 21431b2..1ec1a87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac5c=['ChatQueue','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x1007d9,_0xc04b54){var _0x388b46=function(_0x5bb542){while(--_0x5bb542){_0x1007d9['push'](_0x1007d9['shift']());}};_0x388b46(++_0xc04b54);}(_0xac5c,0xce));var _0xcac5=function(_0x17e8f2,_0x67a6a9){_0x17e8f2=_0x17e8f2-0x0;var _0x357bcf=_0xac5c[_0x17e8f2];return _0x357bcf;};'use strict';var EventEmitter=require(_0xcac5('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xcac5('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcac5('0x2'),'afterUpdate':_0xcac5('0x3'),'afterDestroy':_0xcac5('0x4')};function emitEvent(_0x1e39ce){return function(_0x2e91d6,_0x887f23,_0x3bf9c6){ChatQueueEvents[_0xcac5('0x5')](_0x1e39ce+':'+_0x2e91d6['id'],_0x2e91d6);ChatQueueEvents[_0xcac5('0x5')](_0x1e39ce,_0x2e91d6);_0x3bf9c6(null);};}for(var e in events){if(events[_0xcac5('0x6')](e)){var event=events[e];ChatQueue[_0xcac5('0x7')](e,emitEvent(event));}}module[_0xcac5('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0xf109=['ChatQueue','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x24ca6d,_0xa97f7c){var _0x5c23d1=function(_0xbc31b2){while(--_0xbc31b2){_0x24ca6d['push'](_0x24ca6d['shift']());}};_0x5c23d1(++_0xa97f7c);}(_0xf109,0x1de));var _0x9f10=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xf109[_0x1a72f3];return _0x57ef47;};'use strict';var EventEmitter=require(_0x9f10('0x0'));var ChatQueue=require(_0x9f10('0x1'))['db'][_0x9f10('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9f10('0x3'),'afterUpdate':_0x9f10('0x4'),'afterDestroy':_0x9f10('0x5')};function emitEvent(_0x4a20ed){return function(_0x4d57aa,_0x550c4c,_0x50698d){ChatQueueEvents[_0x9f10('0x6')](_0x4a20ed+':'+_0x4d57aa['id'],_0x4d57aa);ChatQueueEvents['emit'](_0x4a20ed,_0x4d57aa);_0x50698d(null);};}for(var e in events){if(events[_0x9f10('0x7')](e)){var event=events[e];ChatQueue[_0x9f10('0x8')](e,emitEvent(event));}}module[_0x9f10('0x9')]=ChatQueueEvents;
\ No newline at end of file
index 0bf2ad8..d51e74b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc32=['request-promise','../../config/environment','./chatQueue.attributes','define','util','../../config/logger','api'];(function(_0x3f8762,_0x4b7050){var _0x154494=function(_0x23d796){while(--_0x23d796){_0x3f8762['push'](_0x3f8762['shift']());}};_0x154494(++_0x4b7050);}(_0xcc32,0xba));var _0x2cc3=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xcc32[_0x8c43de];return _0xa6591b;};'use strict';var _=require('lodash');var util=require(_0x2cc3('0x0'));var logger=require(_0x2cc3('0x1'))(_0x2cc3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2cc3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2cc3('0x4'));var attributes=require(_0x2cc3('0x5'));module['exports']=function(_0x254591,_0x268840){return _0x254591[_0x2cc3('0x6')]('ChatQueue',attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe382=['bluebird','request-promise','path','exports','ChatQueue','chat_queues','lodash','util','../../config/logger','api','moment'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xe382,0xe2));var _0x2e38=function(_0xc8a11,_0x347a33){_0xc8a11=_0xc8a11-0x0;var _0x55a500=_0xe382[_0xc8a11];return _0x55a500;};'use strict';var _=require(_0x2e38('0x0'));var util=require(_0x2e38('0x1'));var logger=require(_0x2e38('0x2'))(_0x2e38('0x3'));var moment=require(_0x2e38('0x4'));var BPromise=require(_0x2e38('0x5'));var rp=require(_0x2e38('0x6'));var fs=require('fs');var path=require(_0x2e38('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatQueue.attributes');module[_0x2e38('0x8')]=function(_0x21d6db,_0x439291){return _0x21d6db['define'](_0x2e38('0x9'),attributes,{'tableName':_0x2e38('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ca5b0d..750aaac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x585e=['defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','findAll','options','where','attributes','limit','include','map','model','then','debug','ShowChatQueue','find','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis'];(function(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0x585e,0x1c2));var _0xe585=function(_0x48d767,_0x1e9b6c){_0x48d767=_0x48d767-0x0;var _0x21ea5c=_0x585e[_0x48d767];return _0x21ea5c;};'use strict';var _=require(_0xe585('0x0'));var util=require(_0xe585('0x1'));var moment=require(_0xe585('0x2'));var BPromise=require(_0xe585('0x3'));var rs=require(_0xe585('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe585('0x5'));var logger=require(_0xe585('0x6'))('rpc');var config=require(_0xe585('0x7'));var jayson=require(_0xe585('0x8'));var client=jayson[_0xe585('0x9')][_0xe585('0xa')]({'port':0x232a});config[_0xe585('0xb')]=_[_0xe585('0xc')](config[_0xe585('0xb')],{'host':_0xe585('0xd'),'port':0x18eb});var socket=require(_0xe585('0xe'))(new Redis(config[_0xe585('0xb')]));require(_0xe585('0xf'))[_0xe585('0x10')](socket);function respondWithRpcPromise(_0x45005a,_0x564305,_0x14cb96){return new BPromise(function(_0x2d7f88,_0x492a06){return client[_0xe585('0x11')](_0x45005a,_0x14cb96)['then'](function(_0x162f58){logger[_0xe585('0x12')](_0xe585('0x13'),_0x564305,_0xe585('0x14'));logger['debug'](_0xe585('0x15'),_0x564305,_0xe585('0x14'),JSON[_0xe585('0x16')](_0x162f58));if(_0x162f58['error']){if(_0x162f58[_0xe585('0x17')][_0xe585('0x18')]===0x1f4){logger[_0xe585('0x17')](_0xe585('0x13'),_0x564305,_0x162f58[_0xe585('0x17')]['message']);return _0x492a06(_0x162f58[_0xe585('0x17')]['message']);}logger['error'](_0xe585('0x13'),_0x564305,_0x162f58[_0xe585('0x17')]['message']);return _0x2d7f88(_0x162f58[_0xe585('0x17')][_0xe585('0x19')]);}else{logger['info'](_0xe585('0x13'),_0x564305,_0xe585('0x14'));_0x2d7f88(_0x162f58[_0xe585('0x1a')][_0xe585('0x19')]);}})[_0xe585('0x1b')](function(_0x1ce736){logger['error'](_0xe585('0x13'),_0x564305,_0x1ce736);_0x492a06(_0x1ce736);});});}exports[_0xe585('0x1c')]=function(_0x57ddee){var _0x22ca2e=this;return new Promise(function(_0xa8b0a4,_0x1994b9){return db['ChatQueue'][_0xe585('0x1d')]({'raw':_0x57ddee['options']?_0x57ddee['options']['raw']===undefined?!![]:![]:!![],'where':_0x57ddee[_0xe585('0x1e')]?_0x57ddee['options'][_0xe585('0x1f')]||null:null,'attributes':_0x57ddee[_0xe585('0x1e')]?_0x57ddee[_0xe585('0x1e')][_0xe585('0x20')]||null:null,'limit':_0x57ddee[_0xe585('0x1e')]?_0x57ddee[_0xe585('0x1e')][_0xe585('0x21')]||null:null,'include':_0x57ddee[_0xe585('0x1e')]?_0x57ddee[_0xe585('0x1e')][_0xe585('0x22')]?_[_0xe585('0x23')](_0x57ddee[_0xe585('0x1e')][_0xe585('0x22')],function(_0x556fd5){return{'model':db[_0x556fd5[_0xe585('0x24')]],'as':_0x556fd5['as'],'attributes':_0x556fd5[_0xe585('0x20')],'include':_0x556fd5[_0xe585('0x22')]?_[_0xe585('0x23')](_0x556fd5[_0xe585('0x22')],function(_0x4fb923){return{'model':db[_0x4fb923[_0xe585('0x24')]],'as':_0x4fb923['as'],'attributes':_0x4fb923[_0xe585('0x20')],'include':_0x4fb923['include']?_[_0xe585('0x23')](_0x4fb923[_0xe585('0x22')],function(_0x30862c){return{'model':db[_0x30862c[_0xe585('0x24')]],'as':_0x30862c['as'],'attributes':_0x30862c[_0xe585('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe585('0x25')](function(_0x2a0456){logger[_0xe585('0x12')](_0xe585('0x1c'),_0x57ddee);logger[_0xe585('0x26')](_0xe585('0x1c'),_0x57ddee,JSON['stringify'](_0x2a0456));_0xa8b0a4(_0x2a0456);})[_0xe585('0x1b')](function(_0x90c92c){logger[_0xe585('0x17')](_0xe585('0x1c'),_0x90c92c['message'],_0x57ddee);_0x1994b9(_0x22ca2e[_0xe585('0x17')](0x1f4,_0x90c92c[_0xe585('0x19')]));});});};exports[_0xe585('0x27')]=function(_0x24347f){var _0x205f5a=this;return new Promise(function(_0x3a95f2,_0x5d21f3){return db['ChatQueue'][_0xe585('0x28')]({'raw':_0x24347f['options']?_0x24347f[_0xe585('0x1e')][_0xe585('0x29')]===undefined?!![]:![]:!![],'where':_0x24347f['options']?_0x24347f[_0xe585('0x1e')][_0xe585('0x1f')]||null:null,'attributes':_0x24347f['options']?_0x24347f[_0xe585('0x1e')][_0xe585('0x20')]||null:null,'include':_0x24347f[_0xe585('0x1e')]?_0x24347f[_0xe585('0x1e')][_0xe585('0x22')]?_[_0xe585('0x23')](_0x24347f[_0xe585('0x1e')]['include'],function(_0x34b0e5){return{'model':db[_0x34b0e5[_0xe585('0x24')]],'as':_0x34b0e5['as'],'attributes':_0x34b0e5[_0xe585('0x20')],'include':_0x34b0e5[_0xe585('0x22')]?_[_0xe585('0x23')](_0x34b0e5[_0xe585('0x22')],function(_0x8012b7){return{'model':db[_0x8012b7[_0xe585('0x24')]],'as':_0x8012b7['as'],'attributes':_0x8012b7[_0xe585('0x20')],'include':_0x8012b7[_0xe585('0x22')]?_['map'](_0x8012b7[_0xe585('0x22')],function(_0x12fe2a){return{'model':db[_0x12fe2a[_0xe585('0x24')]],'as':_0x12fe2a['as'],'attributes':_0x12fe2a[_0xe585('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe585('0x25')](function(_0x78201c){logger[_0xe585('0x12')](_0xe585('0x27'),_0x24347f);logger[_0xe585('0x26')](_0xe585('0x27'),_0x24347f,JSON[_0xe585('0x16')](_0x78201c));_0x3a95f2(_0x78201c);})['catch'](function(_0x582197){logger['error'](_0xe585('0x27'),_0x582197['message'],_0x24347f);_0x5d21f3(_0x205f5a['error'](0x1f4,_0x582197['message']));});});};
\ No newline at end of file
+var _0xc924=['request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','limit','include','map','model','attributes','then','ShowChatQueue','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./chatQueue.socket','request','info','ChatQueue,\x20%s,\x20%s'];(function(_0x2341c6,_0x3af092){var _0x54c34d=function(_0x3091f9){while(--_0x3091f9){_0x2341c6['push'](_0x2341c6['shift']());}};_0x54c34d(++_0x3af092);}(_0xc924,0x136));var _0x4c92=function(_0x1915b5,_0x488d52){_0x1915b5=_0x1915b5-0x0;var _0x3cfc87=_0xc924[_0x1915b5];return _0x3cfc87;};'use strict';var _=require(_0x4c92('0x0'));var util=require(_0x4c92('0x1'));var moment=require(_0x4c92('0x2'));var BPromise=require(_0x4c92('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4c92('0x4'))['db'];var utils=require(_0x4c92('0x5'));var logger=require(_0x4c92('0x6'))(_0x4c92('0x7'));var config=require(_0x4c92('0x8'));var jayson=require(_0x4c92('0x9'));var client=jayson[_0x4c92('0xa')]['http']({'port':0x232a});config[_0x4c92('0xb')]=_['defaults'](config[_0x4c92('0xb')],{'host':_0x4c92('0xc'),'port':0x18eb});var socket=require(_0x4c92('0xd'))(new Redis(config['redis']));require(_0x4c92('0xe'))['register'](socket);function respondWithRpcPromise(_0x11cb24,_0x497ace,_0x56f4bd){return new BPromise(function(_0xadf6bd,_0x1e3a9e){return client[_0x4c92('0xf')](_0x11cb24,_0x56f4bd)['then'](function(_0x3b956e){logger[_0x4c92('0x10')](_0x4c92('0x11'),_0x497ace,_0x4c92('0x12'));logger[_0x4c92('0x13')](_0x4c92('0x14'),_0x497ace,_0x4c92('0x12'),JSON[_0x4c92('0x15')](_0x3b956e));if(_0x3b956e[_0x4c92('0x16')]){if(_0x3b956e[_0x4c92('0x16')][_0x4c92('0x17')]===0x1f4){logger['error'](_0x4c92('0x11'),_0x497ace,_0x3b956e[_0x4c92('0x16')]['message']);return _0x1e3a9e(_0x3b956e[_0x4c92('0x16')][_0x4c92('0x18')]);}logger[_0x4c92('0x16')](_0x4c92('0x11'),_0x497ace,_0x3b956e['error'][_0x4c92('0x18')]);return _0xadf6bd(_0x3b956e[_0x4c92('0x16')][_0x4c92('0x18')]);}else{logger[_0x4c92('0x10')](_0x4c92('0x11'),_0x497ace,'request\x20sent');_0xadf6bd(_0x3b956e[_0x4c92('0x19')][_0x4c92('0x18')]);}})[_0x4c92('0x1a')](function(_0x29a99d){logger[_0x4c92('0x16')](_0x4c92('0x11'),_0x497ace,_0x29a99d);_0x1e3a9e(_0x29a99d);});});}exports[_0x4c92('0x1b')]=function(_0xb35bce){var _0x3f79f2=this;return new Promise(function(_0x485560,_0x450cee){return db[_0x4c92('0x1c')][_0x4c92('0x1d')]({'raw':_0xb35bce[_0x4c92('0x1e')]?_0xb35bce[_0x4c92('0x1e')][_0x4c92('0x1f')]===undefined?!![]:![]:!![],'where':_0xb35bce['options']?_0xb35bce[_0x4c92('0x1e')][_0x4c92('0x20')]||null:null,'attributes':_0xb35bce[_0x4c92('0x1e')]?_0xb35bce['options']['attributes']||null:null,'limit':_0xb35bce[_0x4c92('0x1e')]?_0xb35bce[_0x4c92('0x1e')][_0x4c92('0x21')]||null:null,'include':_0xb35bce['options']?_0xb35bce['options'][_0x4c92('0x22')]?_[_0x4c92('0x23')](_0xb35bce[_0x4c92('0x1e')][_0x4c92('0x22')],function(_0x2fea5b){return{'model':db[_0x2fea5b[_0x4c92('0x24')]],'as':_0x2fea5b['as'],'attributes':_0x2fea5b[_0x4c92('0x25')],'include':_0x2fea5b[_0x4c92('0x22')]?_[_0x4c92('0x23')](_0x2fea5b['include'],function(_0xc3fd07){return{'model':db[_0xc3fd07[_0x4c92('0x24')]],'as':_0xc3fd07['as'],'attributes':_0xc3fd07[_0x4c92('0x25')],'include':_0xc3fd07[_0x4c92('0x22')]?_[_0x4c92('0x23')](_0xc3fd07[_0x4c92('0x22')],function(_0x472e73){return{'model':db[_0x472e73[_0x4c92('0x24')]],'as':_0x472e73['as'],'attributes':_0x472e73[_0x4c92('0x25')]};}):[]};}):[]};}):[]:[]})[_0x4c92('0x26')](function(_0x1e73e1){logger['info'](_0x4c92('0x1b'),_0xb35bce);logger[_0x4c92('0x13')]('GetChatQueue',_0xb35bce,JSON[_0x4c92('0x15')](_0x1e73e1));_0x485560(_0x1e73e1);})[_0x4c92('0x1a')](function(_0x13ad65){logger[_0x4c92('0x16')](_0x4c92('0x1b'),_0x13ad65[_0x4c92('0x18')],_0xb35bce);_0x450cee(_0x3f79f2[_0x4c92('0x16')](0x1f4,_0x13ad65[_0x4c92('0x18')]));});});};exports[_0x4c92('0x27')]=function(_0x1de982){var _0x3a892e=this;return new Promise(function(_0x54f891,_0x238cf3){return db[_0x4c92('0x1c')][_0x4c92('0x28')]({'raw':_0x1de982['options']?_0x1de982[_0x4c92('0x1e')][_0x4c92('0x1f')]===undefined?!![]:![]:!![],'where':_0x1de982[_0x4c92('0x1e')]?_0x1de982['options']['where']||null:null,'attributes':_0x1de982['options']?_0x1de982[_0x4c92('0x1e')]['attributes']||null:null,'include':_0x1de982[_0x4c92('0x1e')]?_0x1de982[_0x4c92('0x1e')][_0x4c92('0x22')]?_[_0x4c92('0x23')](_0x1de982['options'][_0x4c92('0x22')],function(_0x1646f1){return{'model':db[_0x1646f1[_0x4c92('0x24')]],'as':_0x1646f1['as'],'attributes':_0x1646f1[_0x4c92('0x25')],'include':_0x1646f1['include']?_[_0x4c92('0x23')](_0x1646f1[_0x4c92('0x22')],function(_0x4ceaa6){return{'model':db[_0x4ceaa6['model']],'as':_0x4ceaa6['as'],'attributes':_0x4ceaa6[_0x4c92('0x25')],'include':_0x4ceaa6[_0x4c92('0x22')]?_['map'](_0x4ceaa6[_0x4c92('0x22')],function(_0x5b6d75){return{'model':db[_0x5b6d75[_0x4c92('0x24')]],'as':_0x5b6d75['as'],'attributes':_0x5b6d75[_0x4c92('0x25')]};}):[]};}):[]};}):[]:[]})[_0x4c92('0x26')](function(_0x18eedb){logger['info'](_0x4c92('0x27'),_0x1de982);logger[_0x4c92('0x13')](_0x4c92('0x27'),_0x1de982,JSON[_0x4c92('0x15')](_0x18eedb));_0x54f891(_0x18eedb);})[_0x4c92('0x1a')](function(_0x158a0f){logger[_0x4c92('0x16')](_0x4c92('0x27'),_0x158a0f['message'],_0x1de982);_0x238cf3(_0x3a892e[_0x4c92('0x16')](0x1f4,_0x158a0f[_0x4c92('0x18')]));});});};
\ No newline at end of file
index 4b7bbb7..934d708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b5=['length','remove','update','emit','register'];(function(_0x4072f1,_0x1e6c52){var _0x2807f8=function(_0x14dfc7){while(--_0x14dfc7){_0x4072f1['push'](_0x4072f1['shift']());}};_0x2807f8(++_0x1e6c52);}(_0xc3b5,0x6f));var _0x5c3b=function(_0x54d722,_0x82f2fb){_0x54d722=_0x54d722-0x0;var _0x1cfcc0=_0xc3b5[_0x54d722];return _0x1cfcc0;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save',_0x5c3b('0x0'),_0x5c3b('0x1')];function createListener(_0xbe95d4,_0x3acf12){return function(_0x2f9a72){_0x3acf12[_0x5c3b('0x2')](_0xbe95d4,_0x2f9a72);};}function removeListener(_0x237a61,_0x48f8a1){return function(){ChatQueueEvents['removeListener'](_0x237a61,_0x48f8a1);};}exports[_0x5c3b('0x3')]=function(_0x6b8a1e){for(var _0x56345e=0x0,_0x568a28=events[_0x5c3b('0x4')];_0x56345e<_0x568a28;_0x56345e++){var _0x420839=events[_0x56345e];var _0x3892ad=createListener('chatQueue:'+_0x420839,_0x6b8a1e);ChatQueueEvents['on'](_0x420839,_0x3892ad);}};
\ No newline at end of file
+var _0xb7c8=['chatQueue:','save','remove','update','emit','removeListener','register','length'];(function(_0x2cf2c6,_0x1ea7ca){var _0x27135c=function(_0xcc7131){while(--_0xcc7131){_0x2cf2c6['push'](_0x2cf2c6['shift']());}};_0x27135c(++_0x1ea7ca);}(_0xb7c8,0x119));var _0x8b7c=function(_0x307bea,_0x21b671){_0x307bea=_0x307bea-0x0;var _0xbc103f=_0xb7c8[_0x307bea];return _0xbc103f;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x8b7c('0x0'),_0x8b7c('0x1'),_0x8b7c('0x2')];function createListener(_0x3a84fc,_0x1dceff){return function(_0x31ad24){_0x1dceff[_0x8b7c('0x3')](_0x3a84fc,_0x31ad24);};}function removeListener(_0x50113e,_0x38672b){return function(){ChatQueueEvents[_0x8b7c('0x4')](_0x50113e,_0x38672b);};}exports[_0x8b7c('0x5')]=function(_0x440900){for(var _0x107428=0x0,_0x12665c=events[_0x8b7c('0x6')];_0x107428<_0x12665c;_0x107428++){var _0x3c8fd6=events[_0x107428];var _0x6afb55=createListener(_0x8b7c('0x7')+_0x3c8fd6,_0x440900);ChatQueueEvents['on'](_0x3c8fd6,_0x6afb55);}};
\ No newline at end of file
index e2272ba..89cac4c 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','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x30f87a,_0x2cce5a){var _0x3a8efc=function(_0x225d6b){while(--_0x225d6b){_0x30f87a['push'](_0x30f87a['shift']());}};_0x3a8efc(++_0x2cce5a);}(_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',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x3e7801,_0x5ce2d4){var _0x58aa12=function(_0x482cc6){while(--_0x482cc6){_0x3e7801['push'](_0x3e7801['shift']());}};_0x58aa12(++_0x5ce2d4);}(_0x7217,0x19e));var _0x7721=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x7217[_0x49ca18];return _0x145d54;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getAgents']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['post'](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);router[_0x7721('0x17')](_0x7721('0xd'),auth['isAuthenticated'](),controller[_0x7721('0x18')]);router['delete'](_0x7721('0x11'),auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x17')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1a')]);module[_0x7721('0x1b')]=router;
\ No newline at end of file
index 3f76838..5d980be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64c4=['DATE','sequelize','exports','STRING'];(function(_0x3eb671,_0x1f2c1d){var _0x41eac5=function(_0x39eb80){while(--_0x39eb80){_0x3eb671['push'](_0x3eb671['shift']());}};_0x41eac5(++_0x1f2c1d);}(_0x64c4,0xa5));var _0x464c=function(_0x220ca4,_0x52f05a){_0x220ca4=_0x220ca4-0x0;var _0x26c4d3=_0x64c4[_0x220ca4];return _0x26c4d3;};'use strict';var moment=require('moment');var Sequelize=require(_0x464c('0x0'));module[_0x464c('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x464c('0x2')]},'joinAt':{'type':Sequelize[_0x464c('0x3')]},'leaveAt':{'type':Sequelize[_0x464c('0x3')]},'acceptAt':{'type':Sequelize[_0x464c('0x3')]},'exitAt':{'type':Sequelize[_0x464c('0x3')]},'reason':{'type':Sequelize[_0x464c('0x2')]}};
\ No newline at end of file
+var _0xbd48=['STRING','DATE','moment','sequelize','exports'];(function(_0x5ab27f,_0x21a462){var _0x23826c=function(_0x4292ac){while(--_0x4292ac){_0x5ab27f['push'](_0x5ab27f['shift']());}};_0x23826c(++_0x21a462);}(_0xbd48,0x124));var _0x8bd4=function(_0x4e2fbb,_0x1deef4){_0x4e2fbb=_0x4e2fbb-0x0;var _0xb003e5=_0xbd48[_0x4e2fbb];return _0xb003e5;};'use strict';var moment=require(_0x8bd4('0x0'));var Sequelize=require(_0x8bd4('0x1'));module[_0x8bd4('0x2')]={'uniqueid':{'type':Sequelize[_0x8bd4('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x8bd4('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x8bd4('0x4')]},'acceptAt':{'type':Sequelize[_0x8bd4('0x4')]},'exitAt':{'type':Sequelize[_0x8bd4('0x4')]},'reason':{'type':Sequelize[_0x8bd4('0x3')]}};
\ No newline at end of file
index 81e1f5f..ed440d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../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','undefined','limit','count','apply','reject','error','stack','name','send','index','ChatQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','map','VIRTUAL','then','includeAll','include','rows','catch','show','params','create','body','update','destroy','find','describe','eml-format'];(function(_0x34642c,_0x41d103){var _0x3e28b9=function(_0x41a740){while(--_0x41a740){_0x34642c['push'](_0x34642c['shift']());}};_0x3e28b9(++_0x41d103);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xf2e3[_0x263a74];return _0x2aa86c;};'use strict';var emlformat=require(_0x3f2e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3f2e('0x1'));var jsonpatch=require(_0x3f2e('0x2'));var rp=require(_0x3f2e('0x3'));var moment=require(_0x3f2e('0x4'));var BPromise=require(_0x3f2e('0x5'));var Mustache=require(_0x3f2e('0x6'));var util=require(_0x3f2e('0x7'));var path=require(_0x3f2e('0x8'));var sox=require(_0x3f2e('0x9'));var csv=require('to-csv');var ejs=require(_0x3f2e('0xa'));var fs=require('fs');var fs_extra=require(_0x3f2e('0xb'));var _=require(_0x3f2e('0xc'));var squel=require(_0x3f2e('0xd'));var crypto=require(_0x3f2e('0xe'));var jsforce=require(_0x3f2e('0xf'));var deskjs=require(_0x3f2e('0x10'));var toCsv=require(_0x3f2e('0x11'));var querystring=require(_0x3f2e('0x12'));var Papa=require(_0x3f2e('0x13'));var Redis=require(_0x3f2e('0x14'));var authService=require(_0x3f2e('0x15'));var qs=require(_0x3f2e('0x16'));var as=require(_0x3f2e('0x17'));var hardwareService=require(_0x3f2e('0x18'));var logger=require(_0x3f2e('0x19'))(_0x3f2e('0x1a'));var utils=require(_0x3f2e('0x1b'));var config=require(_0x3f2e('0x1c'));var licenseUtil=require('../../config/license/util');var db=require(_0x3f2e('0x1d'))['db'];function respondWithStatusCode(_0xaa6ef5,_0x5471f9){_0x5471f9=_0x5471f9||0xcc;return function(_0xe83663){if(_0xe83663){return _0xaa6ef5[_0x3f2e('0x1e')](_0x5471f9);}return _0xaa6ef5[_0x3f2e('0x1f')](_0x5471f9)[_0x3f2e('0x20')]();};}function respondWithResult(_0x3d20d1,_0x57cba7){_0x57cba7=_0x57cba7||0xc8;return function(_0x298080){if(_0x298080){return _0x3d20d1[_0x3f2e('0x1f')](_0x57cba7)[_0x3f2e('0x21')](_0x298080);}};}function respondWithFilteredResult(_0x4f2e38,_0x43f69e){return function(_0x218b44){if(_0x218b44){var _0x17ef58=typeof _0x43f69e[_0x3f2e('0x22')]===_0x3f2e('0x23')&&typeof _0x43f69e[_0x3f2e('0x24')]===_0x3f2e('0x23');var _0x155411=_0x218b44[_0x3f2e('0x25')];var _0xc00add=_0x17ef58?0x0:_0x43f69e[_0x3f2e('0x22')];var _0x5b9989=_0x17ef58?_0x218b44[_0x3f2e('0x25')]:_0x43f69e[_0x3f2e('0x22')]+_0x43f69e[_0x3f2e('0x24')];var _0xbe899c;if(_0x5b9989>=_0x155411){_0x5b9989=_0x155411;_0xbe899c=0xc8;}else{_0xbe899c=0xce;}_0x4f2e38[_0x3f2e('0x1f')](_0xbe899c);return _0x4f2e38['set']('Content-Range',_0xc00add+'-'+_0x5b9989+'/'+_0x155411)[_0x3f2e('0x21')](_0x218b44);}return null;};}function patchUpdates(_0x11f84c){return function(_0x38bbae){try{jsonpatch[_0x3f2e('0x26')](_0x38bbae,_0x11f84c,!![]);}catch(_0x4381e5){return BPromise[_0x3f2e('0x27')](_0x4381e5);}return _0x38bbae['save']();};}function saveUpdates(_0x5a7047,_0xf81165){return function(_0x37dab2){if(_0x37dab2){return _0x37dab2['update'](_0x5a7047)['then'](function(_0x46bb1c){return _0x46bb1c;});}return null;};}function removeEntity(_0x5646f5,_0x1b8c67){return function(_0x401ed9){if(_0x401ed9){return _0x401ed9['destroy']()['then'](function(){_0x5646f5['status'](0xcc)[_0x3f2e('0x20')]();});}};}function handleEntityNotFound(_0x3d7631,_0x4c61d9){return function(_0x11a7cc){if(!_0x11a7cc){_0x3d7631['sendStatus'](0x194);}return _0x11a7cc;};}function handleError(_0x1ad875,_0x598541){_0x598541=_0x598541||0x1f4;return function(_0x2806d0){logger[_0x3f2e('0x28')](_0x2806d0[_0x3f2e('0x29')]);if(_0x2806d0[_0x3f2e('0x2a')]){delete _0x2806d0[_0x3f2e('0x2a')];}_0x1ad875['status'](_0x598541)[_0x3f2e('0x2b')](_0x2806d0);};}exports[_0x3f2e('0x2c')]=function(_0x5eab38,_0x528063){var _0x2b9fda={},_0x1e5db4={},_0x35f421={'count':0x0,'rows':[]};var _0x22e6ad=_['map'](db[_0x3f2e('0x2d')][_0x3f2e('0x2e')],function(_0x37ddfe){return{'name':_0x37ddfe['fieldName'],'type':_0x37ddfe[_0x3f2e('0x2f')][_0x3f2e('0x30')]};});_0x1e5db4[_0x3f2e('0x31')]=_['map'](_0x22e6ad,_0x3f2e('0x2a'));_0x1e5db4[_0x3f2e('0x32')]=_[_0x3f2e('0x33')](_0x5eab38[_0x3f2e('0x32')]);_0x1e5db4[_0x3f2e('0x34')]=_[_0x3f2e('0x35')](_0x1e5db4['model'],_0x1e5db4[_0x3f2e('0x32')]);_0x2b9fda[_0x3f2e('0x36')]=_[_0x3f2e('0x35')](_0x1e5db4[_0x3f2e('0x31')],qs[_0x3f2e('0x37')](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x37')]));_0x2b9fda['attributes']=_0x2b9fda[_0x3f2e('0x36')][_0x3f2e('0x38')]?_0x2b9fda[_0x3f2e('0x36')]:_0x1e5db4[_0x3f2e('0x31')];if(!_0x5eab38['query']['hasOwnProperty'](_0x3f2e('0x39'))){_0x2b9fda[_0x3f2e('0x24')]=qs[_0x3f2e('0x24')](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x24')]);_0x2b9fda[_0x3f2e('0x22')]=qs[_0x3f2e('0x22')](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x22')]);}_0x2b9fda[_0x3f2e('0x3a')]=qs['sort'](_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x3b')]);_0x2b9fda[_0x3f2e('0x3c')]=qs[_0x3f2e('0x34')](_['pick'](_0x5eab38[_0x3f2e('0x32')],_0x1e5db4[_0x3f2e('0x34')]),_0x22e6ad);if(_0x5eab38[_0x3f2e('0x32')][_0x3f2e('0x3d')]){_0x2b9fda[_0x3f2e('0x3c')]=_[_0x3f2e('0x3e')](_0x2b9fda[_0x3f2e('0x3c')],{'$or':_[_0x3f2e('0x3f')](_0x22e6ad,function(_0x4c5ac2){if(_0x4c5ac2[_0x3f2e('0x2f')]!==_0x3f2e('0x40')){var _0x238b6b={};_0x238b6b[_0x4c5ac2[_0x3f2e('0x2a')]]={'$like':'%'+_0x5eab38['query'][_0x3f2e('0x3d')]+'%'};return _0x238b6b;}})});}_0x2b9fda=_[_0x3f2e('0x3e')]({},_0x2b9fda,_0x5eab38['options']);var _0x3fc694={'where':_0x2b9fda[_0x3f2e('0x3c')]};return db['ChatQueueReport'][_0x3f2e('0x25')](_0x3fc694)[_0x3f2e('0x41')](function(_0x849236){_0x35f421[_0x3f2e('0x25')]=_0x849236;if(_0x5eab38['query'][_0x3f2e('0x42')]){_0x2b9fda[_0x3f2e('0x43')]=[{'all':!![]}];}return db['ChatQueueReport']['findAll'](_0x2b9fda);})[_0x3f2e('0x41')](function(_0x23de01){_0x35f421[_0x3f2e('0x44')]=_0x23de01;return _0x35f421;})['then'](respondWithFilteredResult(_0x528063,_0x2b9fda))[_0x3f2e('0x45')](handleError(_0x528063,null));};exports[_0x3f2e('0x46')]=function(_0x43b35a,_0xe9000a){var _0x24df56={'raw':!![],'where':{'id':_0x43b35a[_0x3f2e('0x47')]['id']}},_0x3668dc={};_0x3668dc[_0x3f2e('0x31')]=_[_0x3f2e('0x33')](db[_0x3f2e('0x2d')]['rawAttributes']);_0x3668dc['query']=_[_0x3f2e('0x33')](_0x43b35a[_0x3f2e('0x32')]);_0x3668dc['filters']=_['intersection'](_0x3668dc[_0x3f2e('0x31')],_0x3668dc[_0x3f2e('0x32')]);_0x24df56[_0x3f2e('0x36')]=_['intersection'](_0x3668dc[_0x3f2e('0x31')],qs[_0x3f2e('0x37')](_0x43b35a[_0x3f2e('0x32')]['fields']));_0x24df56[_0x3f2e('0x36')]=_0x24df56[_0x3f2e('0x36')][_0x3f2e('0x38')]?_0x24df56['attributes']:_0x3668dc[_0x3f2e('0x31')];if(_0x43b35a[_0x3f2e('0x32')][_0x3f2e('0x42')]){_0x24df56['include']=[{'all':!![]}];}_0x24df56=_[_0x3f2e('0x3e')]({},_0x24df56,_0x43b35a['options']);return db[_0x3f2e('0x2d')]['find'](_0x24df56)['then'](handleEntityNotFound(_0xe9000a,null))[_0x3f2e('0x41')](respondWithResult(_0xe9000a,null))[_0x3f2e('0x45')](handleError(_0xe9000a,null));};exports[_0x3f2e('0x48')]=function(_0x3d6fd2,_0x3e7fac){return db['ChatQueueReport']['create'](_0x3d6fd2[_0x3f2e('0x49')],{})[_0x3f2e('0x41')](respondWithResult(_0x3e7fac,0xc9))[_0x3f2e('0x45')](handleError(_0x3e7fac,null));};exports[_0x3f2e('0x4a')]=function(_0x39dbd1,_0xb891b2){if(_0x39dbd1[_0x3f2e('0x49')]['id']){delete _0x39dbd1[_0x3f2e('0x49')]['id'];}return db[_0x3f2e('0x2d')]['find']({'where':{'id':_0x39dbd1['params']['id']}})[_0x3f2e('0x41')](handleEntityNotFound(_0xb891b2,null))['then'](saveUpdates(_0x39dbd1[_0x3f2e('0x49')],null))[_0x3f2e('0x41')](respondWithResult(_0xb891b2,null))[_0x3f2e('0x45')](handleError(_0xb891b2,null));};exports[_0x3f2e('0x4b')]=function(_0x4b6950,_0xd871da){return db['ChatQueueReport'][_0x3f2e('0x4c')]({'where':{'id':_0x4b6950[_0x3f2e('0x47')]['id']}})['then'](handleEntityNotFound(_0xd871da,null))[_0x3f2e('0x41')](removeEntity(_0xd871da,null))['catch'](handleError(_0xd871da,null));};exports[_0x3f2e('0x4d')]=function(_0x336003,_0x9ccf3b){return db['ChatQueueReport'][_0x3f2e('0x4d')]()[_0x3f2e('0x41')](respondWithResult(_0x9ccf3b,null))[_0x3f2e('0x45')](handleError(_0x9ccf3b,null));};
\ No newline at end of file
+var _0x1623=['filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','options','ChatQueueReport','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x1623,0xab));var _0x3162=function(_0x2e3919,_0x3a703a){_0x2e3919=_0x2e3919-0x0;var _0x227b9b=_0x1623[_0x2e3919];return _0x227b9b;};'use strict';var emlformat=require(_0x3162('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3162('0x1'));var rp=require(_0x3162('0x2'));var moment=require(_0x3162('0x3'));var BPromise=require(_0x3162('0x4'));var Mustache=require(_0x3162('0x5'));var util=require('util');var path=require('path');var sox=require(_0x3162('0x6'));var csv=require('to-csv');var ejs=require(_0x3162('0x7'));var fs=require('fs');var fs_extra=require(_0x3162('0x8'));var _=require('lodash');var squel=require(_0x3162('0x9'));var crypto=require(_0x3162('0xa'));var jsforce=require(_0x3162('0xb'));var deskjs=require(_0x3162('0xc'));var toCsv=require(_0x3162('0xd'));var querystring=require(_0x3162('0xe'));var Papa=require(_0x3162('0xf'));var Redis=require(_0x3162('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3162('0x11'));var hardwareService=require(_0x3162('0x12'));var logger=require(_0x3162('0x13'))(_0x3162('0x14'));var utils=require(_0x3162('0x15'));var config=require(_0x3162('0x16'));var licenseUtil=require(_0x3162('0x17'));var db=require(_0x3162('0x18'))['db'];function respondWithStatusCode(_0x157ab8,_0x4c3625){_0x4c3625=_0x4c3625||0xcc;return function(_0x2d11c5){if(_0x2d11c5){return _0x157ab8['sendStatus'](_0x4c3625);}return _0x157ab8[_0x3162('0x19')](_0x4c3625)[_0x3162('0x1a')]();};}function respondWithResult(_0x49d1ad,_0x4a393a){_0x4a393a=_0x4a393a||0xc8;return function(_0x198764){if(_0x198764){return _0x49d1ad[_0x3162('0x19')](_0x4a393a)[_0x3162('0x1b')](_0x198764);}};}function respondWithFilteredResult(_0x4b8a3b,_0x15e348){return function(_0x3d0bea){if(_0x3d0bea){var _0x2705d1=typeof _0x15e348['offset']===_0x3162('0x1c')&&typeof _0x15e348[_0x3162('0x1d')]===_0x3162('0x1c');var _0xc3ee06=_0x3d0bea[_0x3162('0x1e')];var _0x1eed46=_0x2705d1?0x0:_0x15e348[_0x3162('0x1f')];var _0x4b2bf3=_0x2705d1?_0x3d0bea[_0x3162('0x1e')]:_0x15e348[_0x3162('0x1f')]+_0x15e348[_0x3162('0x1d')];var _0x36ca97;if(_0x4b2bf3>=_0xc3ee06){_0x4b2bf3=_0xc3ee06;_0x36ca97=0xc8;}else{_0x36ca97=0xce;}_0x4b8a3b['status'](_0x36ca97);return _0x4b8a3b[_0x3162('0x20')]('Content-Range',_0x1eed46+'-'+_0x4b2bf3+'/'+_0xc3ee06)['json'](_0x3d0bea);}return null;};}function patchUpdates(_0xa5c62b){return function(_0x3e4d23){try{jsonpatch[_0x3162('0x21')](_0x3e4d23,_0xa5c62b,!![]);}catch(_0x523fab){return BPromise['reject'](_0x523fab);}return _0x3e4d23[_0x3162('0x22')]();};}function saveUpdates(_0x396372,_0x32c051){return function(_0x26c90d){if(_0x26c90d){return _0x26c90d[_0x3162('0x23')](_0x396372)[_0x3162('0x24')](function(_0x52ae25){return _0x52ae25;});}return null;};}function removeEntity(_0x1b2713,_0x5a4994){return function(_0xd283d6){if(_0xd283d6){return _0xd283d6[_0x3162('0x25')]()[_0x3162('0x24')](function(){_0x1b2713[_0x3162('0x19')](0xcc)[_0x3162('0x1a')]();});}};}function handleEntityNotFound(_0x3c543e,_0x30552f){return function(_0x5f8f7){if(!_0x5f8f7){_0x3c543e[_0x3162('0x26')](0x194);}return _0x5f8f7;};}function handleError(_0x356c5d,_0x8fa09f){_0x8fa09f=_0x8fa09f||0x1f4;return function(_0x2f62d7){logger[_0x3162('0x27')](_0x2f62d7['stack']);if(_0x2f62d7[_0x3162('0x28')]){delete _0x2f62d7['name'];}_0x356c5d[_0x3162('0x19')](_0x8fa09f)[_0x3162('0x29')](_0x2f62d7);};}exports[_0x3162('0x2a')]=function(_0x57f567,_0x4903e7){var _0xda0389={},_0xaa1f35={},_0x14df16={'count':0x0,'rows':[]};var _0x399148=_[_0x3162('0x2b')](db['ChatQueueReport'][_0x3162('0x2c')],function(_0x4e3cc2){return{'name':_0x4e3cc2[_0x3162('0x2d')],'type':_0x4e3cc2[_0x3162('0x2e')][_0x3162('0x2f')]};});_0xaa1f35[_0x3162('0x30')]=_[_0x3162('0x2b')](_0x399148,_0x3162('0x28'));_0xaa1f35[_0x3162('0x31')]=_[_0x3162('0x32')](_0x57f567['query']);_0xaa1f35[_0x3162('0x33')]=_[_0x3162('0x34')](_0xaa1f35['model'],_0xaa1f35[_0x3162('0x31')]);_0xda0389[_0x3162('0x35')]=_['intersection'](_0xaa1f35['model'],qs[_0x3162('0x36')](_0x57f567['query'][_0x3162('0x36')]));_0xda0389[_0x3162('0x35')]=_0xda0389[_0x3162('0x35')]['length']?_0xda0389['attributes']:_0xaa1f35[_0x3162('0x30')];if(!_0x57f567[_0x3162('0x31')]['hasOwnProperty'](_0x3162('0x37'))){_0xda0389['limit']=qs[_0x3162('0x1d')](_0x57f567[_0x3162('0x31')][_0x3162('0x1d')]);_0xda0389[_0x3162('0x1f')]=qs[_0x3162('0x1f')](_0x57f567[_0x3162('0x31')][_0x3162('0x1f')]);}_0xda0389[_0x3162('0x38')]=qs[_0x3162('0x39')](_0x57f567[_0x3162('0x31')][_0x3162('0x39')]);_0xda0389['where']=qs[_0x3162('0x33')](_[_0x3162('0x3a')](_0x57f567[_0x3162('0x31')],_0xaa1f35['filters']),_0x399148);if(_0x57f567['query'][_0x3162('0x3b')]){_0xda0389[_0x3162('0x3c')]=_[_0x3162('0x3d')](_0xda0389[_0x3162('0x3c')],{'$or':_['map'](_0x399148,function(_0x4186b6){if(_0x4186b6['type']!=='VIRTUAL'){var _0x5dee49={};_0x5dee49[_0x4186b6[_0x3162('0x28')]]={'$like':'%'+_0x57f567[_0x3162('0x31')][_0x3162('0x3b')]+'%'};return _0x5dee49;}})});}_0xda0389=_['merge']({},_0xda0389,_0x57f567[_0x3162('0x3e')]);var _0x2ce9c6={'where':_0xda0389[_0x3162('0x3c')]};return db[_0x3162('0x3f')][_0x3162('0x1e')](_0x2ce9c6)['then'](function(_0x5447d6){_0x14df16[_0x3162('0x1e')]=_0x5447d6;if(_0x57f567[_0x3162('0x31')]['includeAll']){_0xda0389['include']=[{'all':!![]}];}return db[_0x3162('0x3f')][_0x3162('0x40')](_0xda0389);})[_0x3162('0x24')](function(_0x4883ac){_0x14df16[_0x3162('0x41')]=_0x4883ac;return _0x14df16;})[_0x3162('0x24')](respondWithFilteredResult(_0x4903e7,_0xda0389))[_0x3162('0x42')](handleError(_0x4903e7,null));};exports[_0x3162('0x43')]=function(_0x534708,_0x2617d3){var _0x282e3e={'raw':!![],'where':{'id':_0x534708[_0x3162('0x44')]['id']}},_0x522cce={};_0x522cce[_0x3162('0x30')]=_['keys'](db[_0x3162('0x3f')][_0x3162('0x2c')]);_0x522cce['query']=_[_0x3162('0x32')](_0x534708['query']);_0x522cce[_0x3162('0x33')]=_[_0x3162('0x34')](_0x522cce[_0x3162('0x30')],_0x522cce[_0x3162('0x31')]);_0x282e3e[_0x3162('0x35')]=_[_0x3162('0x34')](_0x522cce['model'],qs[_0x3162('0x36')](_0x534708[_0x3162('0x31')][_0x3162('0x36')]));_0x282e3e['attributes']=_0x282e3e[_0x3162('0x35')][_0x3162('0x45')]?_0x282e3e['attributes']:_0x522cce[_0x3162('0x30')];if(_0x534708['query']['includeAll']){_0x282e3e['include']=[{'all':!![]}];}_0x282e3e=_[_0x3162('0x3d')]({},_0x282e3e,_0x534708[_0x3162('0x3e')]);return db[_0x3162('0x3f')][_0x3162('0x46')](_0x282e3e)[_0x3162('0x24')](handleEntityNotFound(_0x2617d3,null))[_0x3162('0x24')](respondWithResult(_0x2617d3,null))[_0x3162('0x42')](handleError(_0x2617d3,null));};exports[_0x3162('0x47')]=function(_0x3d2958,_0x28865c){return db[_0x3162('0x3f')][_0x3162('0x47')](_0x3d2958[_0x3162('0x48')],{})['then'](respondWithResult(_0x28865c,0xc9))[_0x3162('0x42')](handleError(_0x28865c,null));};exports['update']=function(_0x4f1dde,_0x12d791){if(_0x4f1dde[_0x3162('0x48')]['id']){delete _0x4f1dde[_0x3162('0x48')]['id'];}return db[_0x3162('0x3f')]['find']({'where':{'id':_0x4f1dde[_0x3162('0x44')]['id']}})['then'](handleEntityNotFound(_0x12d791,null))[_0x3162('0x24')](saveUpdates(_0x4f1dde[_0x3162('0x48')],null))['then'](respondWithResult(_0x12d791,null))[_0x3162('0x42')](handleError(_0x12d791,null));};exports['destroy']=function(_0x516599,_0x13e7c4){return db[_0x3162('0x3f')][_0x3162('0x46')]({'where':{'id':_0x516599[_0x3162('0x44')]['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x13e7c4,null))[_0x3162('0x24')](removeEntity(_0x13e7c4,null))[_0x3162('0x42')](handleError(_0x13e7c4,null));};exports[_0x3162('0x49')]=function(_0x554a03,_0x48b81d){return db['ChatQueueReport'][_0x3162('0x49')]()[_0x3162('0x24')](respondWithResult(_0x48b81d,null))[_0x3162('0x42')](handleError(_0x48b81d,null));};
\ No newline at end of file
index fb0533d..4bd4acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_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
+var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x3ff417,_0x1217d8){var _0x208cee=function(_0x165a04){while(--_0x165a04){_0x3ff417['push'](_0x3ff417['shift']());}};_0x208cee(++_0x1217d8);}(_0xb10b,0x12a));var _0xbb10=function(_0x2f454b,_0x4f0132){_0x2f454b=_0x2f454b-0x0;var _0x3077ab=_0xb10b[_0x2f454b];return _0x3077ab;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b4d046a..8bf64f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2e=['ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','stringify','catch','UpdateChatQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xda2e,0x1cb));var _0xeda2=function(_0x9664b9,_0x51d10e){_0x9664b9=_0x9664b9-0x0;var _0x420c36=_0xda2e[_0x9664b9];return _0x420c36;};'use strict';var _=require('lodash');var util=require(_0xeda2('0x0'));var moment=require(_0xeda2('0x1'));var BPromise=require(_0xeda2('0x2'));var rs=require(_0xeda2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xeda2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xeda2('0x5'))(_0xeda2('0x6'));var config=require(_0xeda2('0x7'));var jayson=require(_0xeda2('0x8'));var client=jayson[_0xeda2('0x9')][_0xeda2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2072ab,_0x5e2fd2,_0x50fa93){return new BPromise(function(_0xa91d12,_0x5e6d19){return client[_0xeda2('0xb')](_0x2072ab,_0x50fa93)[_0xeda2('0xc')](function(_0x5cfc1c){logger[_0xeda2('0xd')](_0xeda2('0xe'),_0x5e2fd2,_0xeda2('0xf'));logger[_0xeda2('0x10')](_0xeda2('0x11'),_0x5e2fd2,_0xeda2('0xf'),JSON['stringify'](_0x5cfc1c));if(_0x5cfc1c[_0xeda2('0x12')]){if(_0x5cfc1c['error'][_0xeda2('0x13')]===0x1f4){logger[_0xeda2('0x12')](_0xeda2('0xe'),_0x5e2fd2,_0x5cfc1c[_0xeda2('0x12')]['message']);return _0x5e6d19(_0x5cfc1c[_0xeda2('0x12')][_0xeda2('0x14')]);}logger[_0xeda2('0x12')](_0xeda2('0xe'),_0x5e2fd2,_0x5cfc1c[_0xeda2('0x12')][_0xeda2('0x14')]);return _0xa91d12(_0x5cfc1c[_0xeda2('0x12')][_0xeda2('0x14')]);}else{logger['info'](_0xeda2('0xe'),_0x5e2fd2,'request\x20sent');_0xa91d12(_0x5cfc1c['result']['message']);}})['catch'](function(_0x57baab){logger['error'](_0xeda2('0xe'),_0x5e2fd2,_0x57baab);_0x5e6d19(_0x57baab);});});}exports[_0xeda2('0x15')]=function(_0x3d3f2b){var _0x545cba=this;return new Promise(function(_0x162c3a,_0xb8ac76){return db[_0xeda2('0x16')][_0xeda2('0x17')](_0x3d3f2b[_0xeda2('0x18')],{'raw':_0x3d3f2b['options']?_0x3d3f2b[_0xeda2('0x19')][_0xeda2('0x1a')]===undefined?!![]:![]:!![]})[_0xeda2('0xc')](function(_0x444db6){logger[_0xeda2('0xd')](_0xeda2('0x15'),_0x3d3f2b);logger[_0xeda2('0x10')](_0xeda2('0x15'),_0x3d3f2b,JSON[_0xeda2('0x1b')](_0x444db6));_0x162c3a(_0x444db6);})[_0xeda2('0x1c')](function(_0x5a75f6){logger[_0xeda2('0x12')](_0xeda2('0x15'),_0x5a75f6['message'],_0x3d3f2b);_0xb8ac76(_0x545cba[_0xeda2('0x12')](0x1f4,_0x5a75f6['message']));});});};exports[_0xeda2('0x1d')]=function(_0x27d05b){var _0x3fa0e4=this;return new Promise(function(_0x397d6b,_0x107172){return db[_0xeda2('0x16')][_0xeda2('0x1e')](_0x27d05b[_0xeda2('0x18')],{'raw':_0x27d05b[_0xeda2('0x19')]?_0x27d05b[_0xeda2('0x19')][_0xeda2('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27d05b['options']?_0x27d05b[_0xeda2('0x19')][_0xeda2('0x1f')]||null:null,'attributes':_0x27d05b[_0xeda2('0x19')]?_0x27d05b[_0xeda2('0x19')][_0xeda2('0x20')]||null:null,'limit':_0x27d05b['options']?_0x27d05b['options'][_0xeda2('0x21')]||null:null})[_0xeda2('0xc')](function(_0x5acf2f){logger['info'](_0xeda2('0x1d'),_0x27d05b);logger[_0xeda2('0x10')](_0xeda2('0x1d'),_0x27d05b,JSON[_0xeda2('0x1b')](_0x5acf2f));_0x397d6b(_0x5acf2f);})[_0xeda2('0x1c')](function(_0x37b9d6){logger['error'](_0xeda2('0x1d'),_0x37b9d6[_0xeda2('0x14')],_0x27d05b);_0x107172(_0x3fa0e4[_0xeda2('0x12')](0x1f4,_0x37b9d6['message']));});});};
\ No newline at end of file
+var _0x5505=['create','body','options','raw','CreateChatQueueReport','where','attributes','limit','UpdateChatQueueReport','lodash','util','moment','ioredis','../../config/logger','../../config/environment','client','http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ChatQueueReport'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x5505,0xdb));var _0x5550=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x5505[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x5550('0x0'));var util=require(_0x5550('0x1'));var moment=require(_0x5550('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5550('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5550('0x4'))('rpc');var config=require(_0x5550('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x5550('0x6')][_0x5550('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4ee144,_0x3cb2d3,_0x267036){return new BPromise(function(_0x44bb86,_0x2b09a3){return client['request'](_0x4ee144,_0x267036)[_0x5550('0x8')](function(_0x1efc77){logger[_0x5550('0x9')](_0x5550('0xa'),_0x3cb2d3,_0x5550('0xb'));logger[_0x5550('0xc')](_0x5550('0xd'),_0x3cb2d3,_0x5550('0xb'),JSON[_0x5550('0xe')](_0x1efc77));if(_0x1efc77[_0x5550('0xf')]){if(_0x1efc77['error'][_0x5550('0x10')]===0x1f4){logger[_0x5550('0xf')]('ChatQueueReport,\x20%s,\x20%s',_0x3cb2d3,_0x1efc77[_0x5550('0xf')][_0x5550('0x11')]);return _0x2b09a3(_0x1efc77[_0x5550('0xf')][_0x5550('0x11')]);}logger[_0x5550('0xf')]('ChatQueueReport,\x20%s,\x20%s',_0x3cb2d3,_0x1efc77[_0x5550('0xf')][_0x5550('0x11')]);return _0x44bb86(_0x1efc77[_0x5550('0xf')][_0x5550('0x11')]);}else{logger[_0x5550('0x9')](_0x5550('0xa'),_0x3cb2d3,_0x5550('0xb'));_0x44bb86(_0x1efc77[_0x5550('0x12')][_0x5550('0x11')]);}})[_0x5550('0x13')](function(_0x4653b0){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x3cb2d3,_0x4653b0);_0x2b09a3(_0x4653b0);});});}exports['CreateChatQueueReport']=function(_0x454dc5){var _0xa1b339=this;return new Promise(function(_0x1cd5c4,_0x2435f7){return db[_0x5550('0x14')][_0x5550('0x15')](_0x454dc5[_0x5550('0x16')],{'raw':_0x454dc5[_0x5550('0x17')]?_0x454dc5[_0x5550('0x17')][_0x5550('0x18')]===undefined?!![]:![]:!![]})[_0x5550('0x8')](function(_0x4f8c5f){logger[_0x5550('0x9')](_0x5550('0x19'),_0x454dc5);logger[_0x5550('0xc')](_0x5550('0x19'),_0x454dc5,JSON[_0x5550('0xe')](_0x4f8c5f));_0x1cd5c4(_0x4f8c5f);})[_0x5550('0x13')](function(_0x235148){logger[_0x5550('0xf')](_0x5550('0x19'),_0x235148[_0x5550('0x11')],_0x454dc5);_0x2435f7(_0xa1b339[_0x5550('0xf')](0x1f4,_0x235148[_0x5550('0x11')]));});});};exports['UpdateChatQueueReport']=function(_0x2a4796){var _0x33c9f8=this;return new Promise(function(_0x40627c,_0x3afc23){return db[_0x5550('0x14')]['update'](_0x2a4796[_0x5550('0x16')],{'raw':_0x2a4796[_0x5550('0x17')]?_0x2a4796['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a4796['options']?_0x2a4796[_0x5550('0x17')][_0x5550('0x1a')]||null:null,'attributes':_0x2a4796['options']?_0x2a4796[_0x5550('0x17')][_0x5550('0x1b')]||null:null,'limit':_0x2a4796[_0x5550('0x17')]?_0x2a4796[_0x5550('0x17')][_0x5550('0x1c')]||null:null})[_0x5550('0x8')](function(_0x8967ed){logger[_0x5550('0x9')](_0x5550('0x1d'),_0x2a4796);logger['debug'](_0x5550('0x1d'),_0x2a4796,JSON[_0x5550('0xe')](_0x8967ed));_0x40627c(_0x8967ed);})[_0x5550('0x13')](function(_0x2ca3e4){logger['error'](_0x5550('0x1d'),_0x2ca3e4[_0x5550('0x11')],_0x2a4796);_0x3afc23(_0x33c9f8[_0x5550('0xf')](0x1f4,_0x2ca3e4[_0x5550('0x11')]));});});};
\ No newline at end of file
index 2607e51..add2213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf9=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','connect-timeout'];(function(_0x52b2c3,_0x5d4152){var _0x2bc924=function(_0x4ce369){while(--_0x4ce369){_0x52b2c3['push'](_0x52b2c3['shift']());}};_0x2bc924(++_0x5d4152);}(_0x8bf9,0x1ca));var _0x98bf=function(_0x2b70f8,_0x361789){_0x2b70f8=_0x2b70f8-0x0;var _0x2f741e=_0x8bf9[_0x2b70f8];return _0x2f741e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x98bf('0x0'));var express=require('express');var router=express[_0x98bf('0x1')]();var fs_extra=require(_0x98bf('0x2'));var auth=require(_0x98bf('0x3'));var interaction=require(_0x98bf('0x4'));var config=require('../../config/environment');var controller=require(_0x98bf('0x5'));router[_0x98bf('0x6')]('/',auth[_0x98bf('0x7')](),controller[_0x98bf('0x8')]);router['get']('/describe',auth[_0x98bf('0x7')](),controller['describe']);router[_0x98bf('0x6')](_0x98bf('0x9'),auth[_0x98bf('0x7')](),controller[_0x98bf('0xa')]);router[_0x98bf('0xb')]('/',auth[_0x98bf('0x7')](),controller[_0x98bf('0xc')]);router[_0x98bf('0xd')](_0x98bf('0x9'),auth[_0x98bf('0x7')](),controller[_0x98bf('0xe')]);router[_0x98bf('0xf')](_0x98bf('0x9'),auth['isAuthenticated'](),controller[_0x98bf('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x644b=['update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x644b,0x1a3));var _0xb644=function(_0x6c6d75,_0xef7deb){_0x6c6d75=_0x6c6d75-0x0;var _0x48a161=_0x644b[_0x6c6d75];return _0x48a161;};'use strict';var multer=require(_0xb644('0x0'));var util=require(_0xb644('0x1'));var path=require(_0xb644('0x2'));var timeout=require(_0xb644('0x3'));var express=require(_0xb644('0x4'));var router=express[_0xb644('0x5')]();var fs_extra=require(_0xb644('0x6'));var auth=require(_0xb644('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb644('0x8'));var controller=require(_0xb644('0x9'));router['get']('/',auth[_0xb644('0xa')](),controller['index']);router[_0xb644('0xb')](_0xb644('0xc'),auth[_0xb644('0xa')](),controller[_0xb644('0xd')]);router[_0xb644('0xb')](_0xb644('0xe'),auth[_0xb644('0xa')](),controller[_0xb644('0xf')]);router[_0xb644('0x10')]('/',auth[_0xb644('0xa')](),controller[_0xb644('0x11')]);router['put'](_0xb644('0xe'),auth[_0xb644('0xa')](),controller[_0xb644('0x12')]);router['delete'](_0xb644('0xe'),auth[_0xb644('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 868a71b..75df766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5280f4,_0x3c36d0){var _0xba93e7=function(_0x14d63a){while(--_0x14d63a){_0x5280f4['push'](_0x5280f4['shift']());}};_0xba93e7(++_0x3c36d0);}(_0x9bde,0xe1));var _0xe9bd=function(_0x448454,_0x54baf0){_0x448454=_0x448454-0x0;var _0x51d2b3=_0x9bde[_0x448454];return _0x51d2b3;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x16a637,_0x5eb627){var _0x25126d=function(_0x54e016){while(--_0x54e016){_0x16a637['push'](_0x16a637['shift']());}};_0x25126d(++_0x5eb627);}(_0xb43b,0x1b2));var _0xbb43=function(_0x26fa13,_0x2a22b1){_0x26fa13=_0x26fa13-0x0;var _0x45f1f0=_0xb43b[_0x26fa13];return _0x45f1f0;};'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 19bb2da..633f3d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89e6=['fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','ChatTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','params','rawAttributes','find','catch','create','body','describe','eml-format','fast-json-patch','moment','mustache','path','to-csv','ejs'];(function(_0x30f285,_0x11ac8){var _0xe5b99e=function(_0x41404c){while(--_0x41404c){_0x30f285['push'](_0x30f285['shift']());}};_0xe5b99e(++_0x11ac8);}(_0x89e6,0x1a9));var _0x689e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x89e6[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x689e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x689e('0x1'));var rp=require('request-promise');var moment=require(_0x689e('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x689e('0x3'));var util=require('util');var path=require(_0x689e('0x4'));var sox=require('sox');var csv=require(_0x689e('0x5'));var ejs=require(_0x689e('0x6'));var fs=require('fs');var fs_extra=require(_0x689e('0x7'));var _=require(_0x689e('0x8'));var squel=require(_0x689e('0x9'));var crypto=require(_0x689e('0xa'));var jsforce=require(_0x689e('0xb'));var deskjs=require(_0x689e('0xc'));var toCsv=require('to-csv');var querystring=require(_0x689e('0xd'));var Papa=require(_0x689e('0xe'));var Redis=require('ioredis');var authService=require(_0x689e('0xf'));var qs=require(_0x689e('0x10'));var as=require(_0x689e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x689e('0x12'))('api');var utils=require(_0x689e('0x13'));var config=require(_0x689e('0x14'));var licenseUtil=require(_0x689e('0x15'));var db=require(_0x689e('0x16'))['db'];function respondWithStatusCode(_0x2d1bc5,_0xd4d166){_0xd4d166=_0xd4d166||0xcc;return function(_0x4d6fdd){if(_0x4d6fdd){return _0x2d1bc5[_0x689e('0x17')](_0xd4d166);}return _0x2d1bc5[_0x689e('0x18')](_0xd4d166)[_0x689e('0x19')]();};}function respondWithResult(_0xe4bb8,_0x17b39f){_0x17b39f=_0x17b39f||0xc8;return function(_0xa310c2){if(_0xa310c2){return _0xe4bb8[_0x689e('0x18')](_0x17b39f)[_0x689e('0x1a')](_0xa310c2);}};}function respondWithFilteredResult(_0x500679,_0x22261f){return function(_0x53e5f8){if(_0x53e5f8){var _0x31ba19=typeof _0x22261f[_0x689e('0x1b')]==='undefined'&&typeof _0x22261f[_0x689e('0x1c')]==='undefined';var _0x386ee6=_0x53e5f8[_0x689e('0x1d')];var _0x5d1d28=_0x31ba19?0x0:_0x22261f[_0x689e('0x1b')];var _0x4ffb80=_0x31ba19?_0x53e5f8['count']:_0x22261f['offset']+_0x22261f['limit'];var _0x3de9f3;if(_0x4ffb80>=_0x386ee6){_0x4ffb80=_0x386ee6;_0x3de9f3=0xc8;}else{_0x3de9f3=0xce;}_0x500679[_0x689e('0x18')](_0x3de9f3);return _0x500679[_0x689e('0x1e')]('Content-Range',_0x5d1d28+'-'+_0x4ffb80+'/'+_0x386ee6)[_0x689e('0x1a')](_0x53e5f8);}return null;};}function patchUpdates(_0x1bec26){return function(_0x7bb5d7){try{jsonpatch[_0x689e('0x1f')](_0x7bb5d7,_0x1bec26,!![]);}catch(_0x19ca1c){return BPromise[_0x689e('0x20')](_0x19ca1c);}return _0x7bb5d7[_0x689e('0x21')]();};}function saveUpdates(_0x156511,_0x38ae3b){return function(_0x5927af){if(_0x5927af){return _0x5927af[_0x689e('0x22')](_0x156511)[_0x689e('0x23')](function(_0x232392){return _0x232392;});}return null;};}function removeEntity(_0x123e2b,_0x5bbb7c){return function(_0x1a3d90){if(_0x1a3d90){return _0x1a3d90[_0x689e('0x24')]()[_0x689e('0x23')](function(){_0x123e2b[_0x689e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe284d7,_0x335ed3){return function(_0x1c5ced){if(!_0x1c5ced){_0xe284d7[_0x689e('0x17')](0x194);}return _0x1c5ced;};}function handleError(_0x3f80d3,_0x5679ba){_0x5679ba=_0x5679ba||0x1f4;return function(_0x350fa3){logger[_0x689e('0x25')](_0x350fa3[_0x689e('0x26')]);if(_0x350fa3[_0x689e('0x27')]){delete _0x350fa3[_0x689e('0x27')];}_0x3f80d3[_0x689e('0x18')](_0x5679ba)[_0x689e('0x28')](_0x350fa3);};}exports['index']=function(_0x5ffcbe,_0x506999){var _0x34979b={},_0x6fe80b={},_0x129f46={'count':0x0,'rows':[]};var _0x27b620=_[_0x689e('0x29')](db[_0x689e('0x2a')]['rawAttributes'],function(_0x4f7a75){return{'name':_0x4f7a75[_0x689e('0x2b')],'type':_0x4f7a75[_0x689e('0x2c')][_0x689e('0x2d')]};});_0x6fe80b[_0x689e('0x2e')]=_[_0x689e('0x29')](_0x27b620,'name');_0x6fe80b[_0x689e('0x2f')]=_[_0x689e('0x30')](_0x5ffcbe['query']);_0x6fe80b[_0x689e('0x31')]=_[_0x689e('0x32')](_0x6fe80b[_0x689e('0x2e')],_0x6fe80b[_0x689e('0x2f')]);_0x34979b[_0x689e('0x33')]=_['intersection'](_0x6fe80b[_0x689e('0x2e')],qs['fields'](_0x5ffcbe[_0x689e('0x2f')][_0x689e('0x34')]));_0x34979b[_0x689e('0x33')]=_0x34979b[_0x689e('0x33')]['length']?_0x34979b['attributes']:_0x6fe80b[_0x689e('0x2e')];if(!_0x5ffcbe[_0x689e('0x2f')][_0x689e('0x35')](_0x689e('0x36'))){_0x34979b[_0x689e('0x1c')]=qs[_0x689e('0x1c')](_0x5ffcbe[_0x689e('0x2f')][_0x689e('0x1c')]);_0x34979b['offset']=qs[_0x689e('0x1b')](_0x5ffcbe[_0x689e('0x2f')]['offset']);}_0x34979b[_0x689e('0x37')]=qs[_0x689e('0x38')](_0x5ffcbe[_0x689e('0x2f')]['sort']);_0x34979b[_0x689e('0x39')]=qs[_0x689e('0x31')](_['pick'](_0x5ffcbe['query'],_0x6fe80b[_0x689e('0x31')]),_0x27b620);if(_0x5ffcbe['query'][_0x689e('0x3a')]){_0x34979b['where']=_[_0x689e('0x3b')](_0x34979b[_0x689e('0x39')],{'$or':_['map'](_0x27b620,function(_0x59f25e){if(_0x59f25e[_0x689e('0x2c')]!==_0x689e('0x3c')){var _0x275d8d={};_0x275d8d[_0x59f25e[_0x689e('0x27')]]={'$like':'%'+_0x5ffcbe[_0x689e('0x2f')][_0x689e('0x3a')]+'%'};return _0x275d8d;}})});}_0x34979b=_['merge']({},_0x34979b,_0x5ffcbe[_0x689e('0x3d')]);var _0x36172b={'where':_0x34979b[_0x689e('0x39')]};return db['ChatTransferReport']['count'](_0x36172b)[_0x689e('0x23')](function(_0x418fe9){_0x129f46[_0x689e('0x1d')]=_0x418fe9;if(_0x5ffcbe['query'][_0x689e('0x3e')]){_0x34979b['include']=[{'all':!![]}];}return db[_0x689e('0x2a')][_0x689e('0x3f')](_0x34979b);})[_0x689e('0x23')](function(_0x3a8b34){_0x129f46[_0x689e('0x40')]=_0x3a8b34;return _0x129f46;})[_0x689e('0x23')](respondWithFilteredResult(_0x506999,_0x34979b))['catch'](handleError(_0x506999,null));};exports['show']=function(_0x2e0af2,_0x1f9503){var _0x5c10b9={'raw':!![],'where':{'id':_0x2e0af2[_0x689e('0x41')]['id']}},_0x5cdbbc={};_0x5cdbbc[_0x689e('0x2e')]=_[_0x689e('0x30')](db['ChatTransferReport'][_0x689e('0x42')]);_0x5cdbbc[_0x689e('0x2f')]=_[_0x689e('0x30')](_0x2e0af2['query']);_0x5cdbbc[_0x689e('0x31')]=_['intersection'](_0x5cdbbc['model'],_0x5cdbbc[_0x689e('0x2f')]);_0x5c10b9[_0x689e('0x33')]=_[_0x689e('0x32')](_0x5cdbbc[_0x689e('0x2e')],qs[_0x689e('0x34')](_0x2e0af2[_0x689e('0x2f')]['fields']));_0x5c10b9[_0x689e('0x33')]=_0x5c10b9[_0x689e('0x33')]['length']?_0x5c10b9[_0x689e('0x33')]:_0x5cdbbc[_0x689e('0x2e')];if(_0x2e0af2[_0x689e('0x2f')][_0x689e('0x3e')]){_0x5c10b9['include']=[{'all':!![]}];}_0x5c10b9=_['merge']({},_0x5c10b9,_0x2e0af2['options']);return db['ChatTransferReport'][_0x689e('0x43')](_0x5c10b9)['then'](handleEntityNotFound(_0x1f9503,null))[_0x689e('0x23')](respondWithResult(_0x1f9503,null))[_0x689e('0x44')](handleError(_0x1f9503,null));};exports[_0x689e('0x45')]=function(_0x3dc5cb,_0x2acfb6){return db[_0x689e('0x2a')][_0x689e('0x45')](_0x3dc5cb[_0x689e('0x46')],{})[_0x689e('0x23')](respondWithResult(_0x2acfb6,0xc9))[_0x689e('0x44')](handleError(_0x2acfb6,null));};exports[_0x689e('0x22')]=function(_0x4c0519,_0x544707){if(_0x4c0519['body']['id']){delete _0x4c0519['body']['id'];}return db[_0x689e('0x2a')][_0x689e('0x43')]({'where':{'id':_0x4c0519[_0x689e('0x41')]['id']}})[_0x689e('0x23')](handleEntityNotFound(_0x544707,null))[_0x689e('0x23')](saveUpdates(_0x4c0519['body'],null))[_0x689e('0x23')](respondWithResult(_0x544707,null))['catch'](handleError(_0x544707,null));};exports[_0x689e('0x24')]=function(_0x3ef2a0,_0x4596ae){return db[_0x689e('0x2a')][_0x689e('0x43')]({'where':{'id':_0x3ef2a0['params']['id']}})[_0x689e('0x23')](handleEntityNotFound(_0x4596ae,null))[_0x689e('0x23')](removeEntity(_0x4596ae,null))['catch'](handleError(_0x4596ae,null));};exports[_0x689e('0x47')]=function(_0x1e3492,_0x21edd8){return db[_0x689e('0x2a')]['describe']()[_0x689e('0x23')](respondWithResult(_0x21edd8,null))[_0x689e('0x44')](handleError(_0x21edd8,null));};
\ No newline at end of file
+var _0xd212=['query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','keys','find','catch','create','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','ChatTransferReport','fieldName','type','model'];(function(_0x5681f1,_0x45951e){var _0xd129aa=function(_0x5903b1){while(--_0x5903b1){_0x5681f1['push'](_0x5681f1['shift']());}};_0xd129aa(++_0x45951e);}(_0xd212,0x14b));var _0x2d21=function(_0x5b45da,_0x52bb87){_0x5b45da=_0x5b45da-0x0;var _0x2327f7=_0xd212[_0x5b45da];return _0x2327f7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2d21('0x0'));var zipdir=require(_0x2d21('0x1'));var jsonpatch=require(_0x2d21('0x2'));var rp=require('request-promise');var moment=require(_0x2d21('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2d21('0x4'));var util=require(_0x2d21('0x5'));var path=require(_0x2d21('0x6'));var sox=require(_0x2d21('0x7'));var csv=require(_0x2d21('0x8'));var ejs=require(_0x2d21('0x9'));var fs=require('fs');var fs_extra=require(_0x2d21('0xa'));var _=require(_0x2d21('0xb'));var squel=require(_0x2d21('0xc'));var crypto=require('crypto');var jsforce=require(_0x2d21('0xd'));var deskjs=require(_0x2d21('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2d21('0xf'));var Papa=require(_0x2d21('0x10'));var Redis=require(_0x2d21('0x11'));var authService=require(_0x2d21('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2d21('0x13'));var hardwareService=require(_0x2d21('0x14'));var logger=require(_0x2d21('0x15'))(_0x2d21('0x16'));var utils=require(_0x2d21('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2d21('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38eaa7,_0x5b5830){_0x5b5830=_0x5b5830||0xcc;return function(_0x3e78f3){if(_0x3e78f3){return _0x38eaa7[_0x2d21('0x19')](_0x5b5830);}return _0x38eaa7[_0x2d21('0x1a')](_0x5b5830)[_0x2d21('0x1b')]();};}function respondWithResult(_0x100aa5,_0x3f334c){_0x3f334c=_0x3f334c||0xc8;return function(_0x56280a){if(_0x56280a){return _0x100aa5[_0x2d21('0x1a')](_0x3f334c)[_0x2d21('0x1c')](_0x56280a);}};}function respondWithFilteredResult(_0x3598ac,_0x1d98a2){return function(_0xd007ed){if(_0xd007ed){var _0x2f1419=typeof _0x1d98a2['offset']===_0x2d21('0x1d')&&typeof _0x1d98a2['limit']===_0x2d21('0x1d');var _0x450a5f=_0xd007ed[_0x2d21('0x1e')];var _0x444595=_0x2f1419?0x0:_0x1d98a2[_0x2d21('0x1f')];var _0x16795d=_0x2f1419?_0xd007ed[_0x2d21('0x1e')]:_0x1d98a2[_0x2d21('0x1f')]+_0x1d98a2[_0x2d21('0x20')];var _0x513874;if(_0x16795d>=_0x450a5f){_0x16795d=_0x450a5f;_0x513874=0xc8;}else{_0x513874=0xce;}_0x3598ac[_0x2d21('0x1a')](_0x513874);return _0x3598ac[_0x2d21('0x21')](_0x2d21('0x22'),_0x444595+'-'+_0x16795d+'/'+_0x450a5f)[_0x2d21('0x1c')](_0xd007ed);}return null;};}function patchUpdates(_0x50a25c){return function(_0x3d04ae){try{jsonpatch['apply'](_0x3d04ae,_0x50a25c,!![]);}catch(_0x30e7e2){return BPromise[_0x2d21('0x23')](_0x30e7e2);}return _0x3d04ae[_0x2d21('0x24')]();};}function saveUpdates(_0x4e753e,_0x4d60e0){return function(_0x4eb578){if(_0x4eb578){return _0x4eb578['update'](_0x4e753e)[_0x2d21('0x25')](function(_0x714a19){return _0x714a19;});}return null;};}function removeEntity(_0x2a64ee,_0x48df3d){return function(_0x4766b2){if(_0x4766b2){return _0x4766b2[_0x2d21('0x26')]()['then'](function(){_0x2a64ee[_0x2d21('0x1a')](0xcc)[_0x2d21('0x1b')]();});}};}function handleEntityNotFound(_0x56c5ec,_0x55d92e){return function(_0x4dff94){if(!_0x4dff94){_0x56c5ec[_0x2d21('0x19')](0x194);}return _0x4dff94;};}function handleError(_0x497583,_0x20d75f){_0x20d75f=_0x20d75f||0x1f4;return function(_0x4f1103){logger[_0x2d21('0x27')](_0x4f1103[_0x2d21('0x28')]);if(_0x4f1103['name']){delete _0x4f1103[_0x2d21('0x29')];}_0x497583[_0x2d21('0x1a')](_0x20d75f)[_0x2d21('0x2a')](_0x4f1103);};}exports[_0x2d21('0x2b')]=function(_0xb8c99d,_0x2f1ffb){var _0x2b1e1c={},_0x3ef96a={},_0x168e90={'count':0x0,'rows':[]};var _0x1227f1=_[_0x2d21('0x2c')](db[_0x2d21('0x2d')]['rawAttributes'],function(_0x4e2fbc){return{'name':_0x4e2fbc[_0x2d21('0x2e')],'type':_0x4e2fbc[_0x2d21('0x2f')]['key']};});_0x3ef96a[_0x2d21('0x30')]=_[_0x2d21('0x2c')](_0x1227f1,_0x2d21('0x29'));_0x3ef96a[_0x2d21('0x31')]=_['keys'](_0xb8c99d['query']);_0x3ef96a['filters']=_[_0x2d21('0x32')](_0x3ef96a[_0x2d21('0x30')],_0x3ef96a[_0x2d21('0x31')]);_0x2b1e1c[_0x2d21('0x33')]=_[_0x2d21('0x32')](_0x3ef96a[_0x2d21('0x30')],qs['fields'](_0xb8c99d[_0x2d21('0x31')][_0x2d21('0x34')]));_0x2b1e1c[_0x2d21('0x33')]=_0x2b1e1c[_0x2d21('0x33')][_0x2d21('0x35')]?_0x2b1e1c[_0x2d21('0x33')]:_0x3ef96a[_0x2d21('0x30')];if(!_0xb8c99d[_0x2d21('0x31')][_0x2d21('0x36')](_0x2d21('0x37'))){_0x2b1e1c[_0x2d21('0x20')]=qs[_0x2d21('0x20')](_0xb8c99d[_0x2d21('0x31')][_0x2d21('0x20')]);_0x2b1e1c['offset']=qs[_0x2d21('0x1f')](_0xb8c99d[_0x2d21('0x31')][_0x2d21('0x1f')]);}_0x2b1e1c[_0x2d21('0x38')]=qs[_0x2d21('0x39')](_0xb8c99d[_0x2d21('0x31')]['sort']);_0x2b1e1c[_0x2d21('0x3a')]=qs[_0x2d21('0x3b')](_[_0x2d21('0x3c')](_0xb8c99d[_0x2d21('0x31')],_0x3ef96a['filters']),_0x1227f1);if(_0xb8c99d[_0x2d21('0x31')]['filter']){_0x2b1e1c[_0x2d21('0x3a')]=_[_0x2d21('0x3d')](_0x2b1e1c[_0x2d21('0x3a')],{'$or':_[_0x2d21('0x2c')](_0x1227f1,function(_0x1080e9){if(_0x1080e9['type']!==_0x2d21('0x3e')){var _0x33dbf6={};_0x33dbf6[_0x1080e9[_0x2d21('0x29')]]={'$like':'%'+_0xb8c99d[_0x2d21('0x31')][_0x2d21('0x3f')]+'%'};return _0x33dbf6;}})});}_0x2b1e1c=_['merge']({},_0x2b1e1c,_0xb8c99d[_0x2d21('0x40')]);var _0x9e74ed={'where':_0x2b1e1c[_0x2d21('0x3a')]};return db[_0x2d21('0x2d')][_0x2d21('0x1e')](_0x9e74ed)[_0x2d21('0x25')](function(_0x3252f9){_0x168e90[_0x2d21('0x1e')]=_0x3252f9;if(_0xb8c99d['query'][_0x2d21('0x41')]){_0x2b1e1c[_0x2d21('0x42')]=[{'all':!![]}];}return db[_0x2d21('0x2d')][_0x2d21('0x43')](_0x2b1e1c);})[_0x2d21('0x25')](function(_0x3d0d59){_0x168e90['rows']=_0x3d0d59;return _0x168e90;})[_0x2d21('0x25')](respondWithFilteredResult(_0x2f1ffb,_0x2b1e1c))['catch'](handleError(_0x2f1ffb,null));};exports[_0x2d21('0x44')]=function(_0x2fb3b8,_0x41d540){var _0x7a09b7={'raw':!![],'where':{'id':_0x2fb3b8['params']['id']}},_0x5df05c={};_0x5df05c[_0x2d21('0x30')]=_[_0x2d21('0x45')](db['ChatTransferReport']['rawAttributes']);_0x5df05c[_0x2d21('0x31')]=_['keys'](_0x2fb3b8[_0x2d21('0x31')]);_0x5df05c['filters']=_['intersection'](_0x5df05c[_0x2d21('0x30')],_0x5df05c[_0x2d21('0x31')]);_0x7a09b7[_0x2d21('0x33')]=_['intersection'](_0x5df05c[_0x2d21('0x30')],qs[_0x2d21('0x34')](_0x2fb3b8[_0x2d21('0x31')][_0x2d21('0x34')]));_0x7a09b7[_0x2d21('0x33')]=_0x7a09b7[_0x2d21('0x33')]['length']?_0x7a09b7['attributes']:_0x5df05c[_0x2d21('0x30')];if(_0x2fb3b8[_0x2d21('0x31')]['includeAll']){_0x7a09b7[_0x2d21('0x42')]=[{'all':!![]}];}_0x7a09b7=_[_0x2d21('0x3d')]({},_0x7a09b7,_0x2fb3b8[_0x2d21('0x40')]);return db[_0x2d21('0x2d')][_0x2d21('0x46')](_0x7a09b7)[_0x2d21('0x25')](handleEntityNotFound(_0x41d540,null))[_0x2d21('0x25')](respondWithResult(_0x41d540,null))[_0x2d21('0x47')](handleError(_0x41d540,null));};exports[_0x2d21('0x48')]=function(_0x3fdb11,_0x49a102){return db[_0x2d21('0x2d')]['create'](_0x3fdb11[_0x2d21('0x49')],{})['then'](respondWithResult(_0x49a102,0xc9))[_0x2d21('0x47')](handleError(_0x49a102,null));};exports['update']=function(_0x23c412,_0x51da2e){if(_0x23c412[_0x2d21('0x49')]['id']){delete _0x23c412[_0x2d21('0x49')]['id'];}return db['ChatTransferReport'][_0x2d21('0x46')]({'where':{'id':_0x23c412[_0x2d21('0x4a')]['id']}})[_0x2d21('0x25')](handleEntityNotFound(_0x51da2e,null))['then'](saveUpdates(_0x23c412['body'],null))[_0x2d21('0x25')](respondWithResult(_0x51da2e,null))['catch'](handleError(_0x51da2e,null));};exports[_0x2d21('0x26')]=function(_0x338642,_0x342d66){return db[_0x2d21('0x2d')]['find']({'where':{'id':_0x338642['params']['id']}})[_0x2d21('0x25')](handleEntityNotFound(_0x342d66,null))[_0x2d21('0x25')](removeEntity(_0x342d66,null))[_0x2d21('0x47')](handleError(_0x342d66,null));};exports['describe']=function(_0x37a371,_0x1df73b){return db[_0x2d21('0x2d')][_0x2d21('0x4b')]()['then'](respondWithResult(_0x1df73b,null))[_0x2d21('0x47')](handleError(_0x1df73b,null));};
\ No newline at end of file
index 574a451..8170768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37d1=['request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','define','ChatTransferReport','report_chat_transfer','util','../../config/logger','moment'];(function(_0x46622b,_0x39c3ef){var _0x3835eb=function(_0x674c88){while(--_0x674c88){_0x46622b['push'](_0x46622b['shift']());}};_0x3835eb(++_0x39c3ef);}(_0x37d1,0xa2));var _0x137d=function(_0x56fea5,_0x4048bf){_0x56fea5=_0x56fea5-0x0;var _0x4dd1bf=_0x37d1[_0x56fea5];return _0x4dd1bf;};'use strict';var _=require('lodash');var util=require(_0x137d('0x0'));var logger=require(_0x137d('0x1'))('api');var moment=require(_0x137d('0x2'));var BPromise=require('bluebird');var rp=require(_0x137d('0x3'));var fs=require('fs');var path=require(_0x137d('0x4'));var rimraf=require(_0x137d('0x5'));var config=require(_0x137d('0x6'));var attributes=require(_0x137d('0x7'));module['exports']=function(_0x3b3bcc,_0x5264bc){return _0x3b3bcc[_0x137d('0x8')](_0x137d('0x9'),attributes,{'tableName':_0x137d('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fa9=['define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','moment','bluebird','request-promise','path'];(function(_0xec93c1,_0x1a8a81){var _0x3a5575=function(_0x17f69f){while(--_0x17f69f){_0xec93c1['push'](_0xec93c1['shift']());}};_0x3a5575(++_0x1a8a81);}(_0x4fa9,0xc2));var _0x94fa=function(_0x11b9a2,_0x3c132a){_0x11b9a2=_0x11b9a2-0x0;var _0x4c7671=_0x4fa9[_0x11b9a2];return _0x4c7671;};'use strict';var _=require(_0x94fa('0x0'));var util=require(_0x94fa('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x94fa('0x2'));var BPromise=require(_0x94fa('0x3'));var rp=require(_0x94fa('0x4'));var fs=require('fs');var path=require(_0x94fa('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module['exports']=function(_0x51f000,_0x344be8){return _0x51f000[_0x94fa('0x6')](_0x94fa('0x7'),attributes,{'tableName':_0x94fa('0x8'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x94fa('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 1d7285f..741fe80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf293=['catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0xf293,0x115));var _0x3f29=function(_0x2a9323,_0x463045){_0x2a9323=_0x2a9323-0x0;var _0xc79256=_0xf293[_0x2a9323];return _0xc79256;};'use strict';var _=require(_0x3f29('0x0'));var util=require(_0x3f29('0x1'));var moment=require(_0x3f29('0x2'));var BPromise=require('bluebird');var rs=require(_0x3f29('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3f29('0x4'))['db'];var utils=require(_0x3f29('0x5'));var logger=require(_0x3f29('0x6'))(_0x3f29('0x7'));var config=require(_0x3f29('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3f29('0x9')][_0x3f29('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e452c,_0x7b6b9c,_0x11aa6d){return new BPromise(function(_0x2ac88d,_0xd7b4ed){return client[_0x3f29('0xb')](_0x5e452c,_0x11aa6d)[_0x3f29('0xc')](function(_0x59324c){logger[_0x3f29('0xd')](_0x3f29('0xe'),_0x7b6b9c,_0x3f29('0xf'));logger[_0x3f29('0x10')](_0x3f29('0x11'),_0x7b6b9c,_0x3f29('0xf'),JSON[_0x3f29('0x12')](_0x59324c));if(_0x59324c[_0x3f29('0x13')]){if(_0x59324c['error'][_0x3f29('0x14')]===0x1f4){logger[_0x3f29('0x13')]('ChatTransferReport,\x20%s,\x20%s',_0x7b6b9c,_0x59324c[_0x3f29('0x13')]['message']);return _0xd7b4ed(_0x59324c[_0x3f29('0x13')]['message']);}logger[_0x3f29('0x13')](_0x3f29('0xe'),_0x7b6b9c,_0x59324c['error'][_0x3f29('0x15')]);return _0x2ac88d(_0x59324c['error']['message']);}else{logger[_0x3f29('0xd')](_0x3f29('0xe'),_0x7b6b9c,'request\x20sent');_0x2ac88d(_0x59324c['result'][_0x3f29('0x15')]);}})[_0x3f29('0x16')](function(_0x512b86){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x7b6b9c,_0x512b86);_0xd7b4ed(_0x512b86);});});}
\ No newline at end of file
+var _0xc9f0=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatTransferReport,\x20%s,\x20%s','result','catch','bluebird','randomstring','ioredis'];(function(_0x22a293,_0x113f99){var _0x48327d=function(_0x5e8fd0){while(--_0x5e8fd0){_0x22a293['push'](_0x22a293['shift']());}};_0x48327d(++_0x113f99);}(_0xc9f0,0x138));var _0x0c9f=function(_0xac244d,_0x241553){_0xac244d=_0xac244d-0x0;var _0x39011b=_0xc9f0[_0xac244d];return _0x39011b;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0c9f('0x0'));var rs=require(_0x0c9f('0x1'));var fs=require('fs');var Redis=require(_0x0c9f('0x2'));var db=require(_0x0c9f('0x3'))['db'];var utils=require(_0x0c9f('0x4'));var logger=require(_0x0c9f('0x5'))(_0x0c9f('0x6'));var config=require(_0x0c9f('0x7'));var jayson=require(_0x0c9f('0x8'));var client=jayson[_0x0c9f('0x9')][_0x0c9f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56e6d0,_0x5b1aec,_0x4d3cae){return new BPromise(function(_0x3d1d6c,_0x33964f){return client['request'](_0x56e6d0,_0x4d3cae)['then'](function(_0x2d687a){logger[_0x0c9f('0xb')]('ChatTransferReport,\x20%s,\x20%s',_0x5b1aec,_0x0c9f('0xc'));logger['debug'](_0x0c9f('0xd'),_0x5b1aec,_0x0c9f('0xc'),JSON[_0x0c9f('0xe')](_0x2d687a));if(_0x2d687a[_0x0c9f('0xf')]){if(_0x2d687a[_0x0c9f('0xf')][_0x0c9f('0x10')]===0x1f4){logger[_0x0c9f('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0x5b1aec,_0x2d687a[_0x0c9f('0xf')][_0x0c9f('0x11')]);return _0x33964f(_0x2d687a['error'][_0x0c9f('0x11')]);}logger[_0x0c9f('0xf')](_0x0c9f('0x12'),_0x5b1aec,_0x2d687a['error'][_0x0c9f('0x11')]);return _0x3d1d6c(_0x2d687a['error'][_0x0c9f('0x11')]);}else{logger['info'](_0x0c9f('0x12'),_0x5b1aec,_0x0c9f('0xc'));_0x3d1d6c(_0x2d687a[_0x0c9f('0x13')]['message']);}})[_0x0c9f('0x14')](function(_0x38a21c){logger[_0x0c9f('0xf')](_0x0c9f('0x12'),_0x5b1aec,_0x38a21c);_0x33964f(_0x38a21c);});});}
\ No newline at end of file
index 0a4f38b..77fce58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4f=['../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xee4f,0x184));var _0xfee4=function(_0x383ef6,_0x36d43e){_0x383ef6=_0x383ef6-0x0;var _0x3dd3a9=_0xee4f[_0x383ef6];return _0x3dd3a9;};'use strict';var multer=require('multer');var util=require(_0xfee4('0x0'));var path=require(_0xfee4('0x1'));var timeout=require(_0xfee4('0x2'));var express=require(_0xfee4('0x3'));var router=express[_0xfee4('0x4')]();var fs_extra=require(_0xfee4('0x5'));var auth=require(_0xfee4('0x6'));var interaction=require(_0xfee4('0x7'));var config=require(_0xfee4('0x8'));var controller=require(_0xfee4('0x9'));router['get']('/',auth[_0xfee4('0xa')](),controller[_0xfee4('0xb')]);router[_0xfee4('0xc')](_0xfee4('0xd'),auth[_0xfee4('0xa')](),controller[_0xfee4('0xe')]);router[_0xfee4('0xc')](_0xfee4('0xf'),auth['isAuthenticated'](),controller[_0xfee4('0x10')]);router[_0xfee4('0x11')]('/',auth[_0xfee4('0xa')](),controller[_0xfee4('0x12')]);router[_0xfee4('0x13')](_0xfee4('0xf'),auth[_0xfee4('0xa')](),controller['update']);router[_0xfee4('0x14')](_0xfee4('0xf'),auth['isAuthenticated'](),controller[_0xfee4('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x7dde=['path','express','Router','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','describe','/:id','show','create','put','destroy','exports','multer'];(function(_0x318840,_0x561b1e){var _0x223da4=function(_0x510071){while(--_0x510071){_0x318840['push'](_0x318840['shift']());}};_0x223da4(++_0x561b1e);}(_0x7dde,0x1df));var _0xe7dd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7dde[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xe7dd('0x0'));var util=require('util');var path=require(_0xe7dd('0x1'));var timeout=require('connect-timeout');var express=require(_0xe7dd('0x2'));var router=express[_0xe7dd('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe7dd('0x4'));var config=require('../../config/environment');var controller=require(_0xe7dd('0x5'));router[_0xe7dd('0x6')]('/',auth[_0xe7dd('0x7')](),controller['index']);router[_0xe7dd('0x6')]('/describe',auth[_0xe7dd('0x7')](),controller[_0xe7dd('0x8')]);router['get'](_0xe7dd('0x9'),auth[_0xe7dd('0x7')](),controller[_0xe7dd('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe7dd('0xb')]);router[_0xe7dd('0xc')](_0xe7dd('0x9'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7dd('0x9'),auth['isAuthenticated'](),controller[_0xe7dd('0xd')]);module[_0xe7dd('0xe')]=router;
\ No newline at end of file
index af822c6..0388540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c1=['System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','sequelize','STRING','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','star','stringify','input','name','text','email','getDataValue','parse','onlineForm','setDataValue','Comments','Leave\x20your\x20comments','offlineForm','generate','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa'];(function(_0x541197,_0x223d43){var _0xaeaa56=function(_0x468c2c){while(--_0x468c2c){_0x541197['push'](_0x541197['shift']());}};_0xaeaa56(++_0x223d43);}(_0x60c1,0x1da));var _0x160c=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x60c1[_0x178e48];return _0x440d7e;};'use strict';var Sequelize=require(_0x160c('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x160c('0x1')],'allowNull':![]},'address':{'type':Sequelize[_0x160c('0x1')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'email'},'key':{'type':Sequelize[_0x160c('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x160c('0x1')],'allowNull':![],'defaultValue':_0x160c('0x2'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x160c('0x3'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x160c('0x4')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x160c('0x1')]},'animation':{'type':Sequelize[_0x160c('0x5')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x160c('0x6')](_0x160c('0x7'),_0x160c('0x8')),'defaultValue':_0x160c('0x7')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0x9')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0xa')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0xb')},'download_transcript':{'type':Sequelize[_0x160c('0x5')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0xc')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x160c('0xd')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0xe')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0xf')},'formSubmitFailureMessage':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x10')},'noteTitle':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x11')},'placeholderMessage':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x12')},'closingMessage':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x13')},'closingMessageButton':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x14')},'skipMessageButton':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x160c('0x6')]('star','thumb'),'defaultValue':_0x160c('0x15')},'ratingStarsNumber':{'type':Sequelize[_0x160c('0x4')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x160c('0xd')],'defaultValue':function(){return JSON[_0x160c('0x16')]({'items':[{'type':_0x160c('0x17'),'variable':null,'config':{'placeholder':_0x160c('0x18'),'type':_0x160c('0x19'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x160c('0x17'),'props':{'title':_0x160c('0x1a'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x160c('0x1b')]('onlineForm')?JSON[_0x160c('0x1c')](this[_0x160c('0x1b')](_0x160c('0x1d'))):{};},'set':function(_0x5d99c2){return this[_0x160c('0x1e')](_0x160c('0x1d'),JSON[_0x160c('0x16')](_0x5d99c2));}},'offlineForm':{'type':Sequelize[_0x160c('0xd')],'defaultValue':function(){return JSON[_0x160c('0x16')]({'items':[{'type':_0x160c('0x17'),'props':{'title':_0x160c('0x1a'),'helpText':''},'config':{'required':!![],'placeholder':_0x160c('0x1a'),'type':'email'},'variable':null},{'type':'textarea','config':{'placeholder':_0x160c('0x1f')},'props':{'title':_0x160c('0x1f'),'helpText':_0x160c('0x20')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x160c('0x21'))?JSON[_0x160c('0x1c')](this[_0x160c('0x1b')](_0x160c('0x21'))):{};},'set':function(_0x4500f2){return this['setDataValue']('offlineForm',JSON[_0x160c('0x16')](_0x4500f2));}},'token':{'type':Sequelize[_0x160c('0x1')],'defaultValue':function(){return rs[_0x160c('0x22')]();}},'autoclose':{'type':Sequelize[_0x160c('0x5')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x160c('0x1')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0x23')},'offlineMessageBody':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x24')},'skipUnmanaged':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x25')},'sendUnmanaged':{'type':Sequelize[_0x160c('0x1')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x160c('0xd')]},'showAgentAvatar':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x160c('0x1')]},'notificationTemplate':{'type':Sequelize[_0x160c('0xd')],'defaultValue':function(){return _0x160c('0x26');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0x160c('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x160c('0x28')},'verticalAlignment':{'type':Sequelize[_0x160c('0x4')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x29')},'defaultTitle':{'type':Sequelize[_0x160c('0x1')]},'customerAvatar':{'type':Sequelize[_0x160c('0xd')]},'showCustomerAvatar':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x160c('0x1')],'allowNull':![],'defaultValue':_0x160c('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x160c('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x160c('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x160c('0x1')],'defaultValue':_0x160c('0x2b')},'systemAvatar':{'type':Sequelize[_0x160c('0xd')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x160c('0x4')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![],'comment':_0x160c('0x2c'),'set':function(_0xb8b52f){if(!_0xb8b52f)this['setDataValue'](_0x160c('0x2d'),null);this[_0x160c('0x1e')]('mandatoryDisposition',_0xb8b52f);}},'vidaooEscalation':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x160c('0x1')]},'vidaooTopic':{'type':Sequelize[_0x160c('0x1')],'allowNull':![],'defaultValue':_0x160c('0x2e')},'vidaooNote':{'type':Sequelize[_0x160c('0x1')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x160c('0x5')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x02ee=['STRING','address','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','rounded','squared','Chat','Send','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Thanks\x20you\x20for\x20your\x20time!','Skip','ENUM','star','stringify','input','name','text','email','getDataValue','onlineForm','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','parse','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:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','exports'];(function(_0x208d75,_0x92d742){var _0x382d27=function(_0x3aaba3){while(--_0x3aaba3){_0x208d75['push'](_0x208d75['shift']());}};_0x382d27(++_0x92d742);}(_0x02ee,0x1ad));var _0xe02e=function(_0xe1918e,_0x58409f){_0xe1918e=_0xe1918e-0x0;var _0x26cb43=_0x02ee[_0xe1918e];return _0x26cb43;};'use strict';var Sequelize=require(_0xe02e('0x0'));var rs=require(_0xe02e('0x1'));module[_0xe02e('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0xe02e('0x3')],'allowNull':![],'unique':_0xe02e('0x4')},'description':{'type':Sequelize[_0xe02e('0x3')]},'mapKey':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'email'},'key':{'type':Sequelize[_0xe02e('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x5')},'customerAlias':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xe02e('0x3')],'allowNull':![],'defaultValue':_0xe02e('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xe02e('0x3')],'allowNull':![],'defaultValue':_0xe02e('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xe02e('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xe02e('0x3')]},'animation':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0xe02e('0xa'),_0xe02e('0xb')),'defaultValue':_0xe02e('0xa')},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0xc')},'offline_chat_button':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0xd')},'header_offline':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xe02e('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0xe')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xe02e('0xf')]},'closingQuestion':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x11')},'formSubmitFailureMessage':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x12')},'noteTitle':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xe02e('0x13')},'closingMessageButton':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xe02e('0x14')},'conditionAgreement':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0xe02e('0x15')](_0xe02e('0x16'),'thumb'),'defaultValue':_0xe02e('0x16')},'ratingStarsNumber':{'type':Sequelize[_0xe02e('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xe02e('0x17')]({'items':[{'type':_0xe02e('0x18'),'variable':null,'config':{'placeholder':_0xe02e('0x19'),'type':_0xe02e('0x1a'),'required':!![]},'props':{'title':_0xe02e('0x19'),'helpText':''}},{'type':_0xe02e('0x18'),'props':{'title':_0xe02e('0x1b'),'helpText':''},'config':{'required':!![],'placeholder':_0xe02e('0x1b'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xe02e('0x1c')](_0xe02e('0x1d'))?JSON['parse'](this[_0xe02e('0x1c')](_0xe02e('0x1d'))):{};},'set':function(_0xfec76d){return this[_0xe02e('0x1e')](_0xe02e('0x1d'),JSON[_0xe02e('0x17')](_0xfec76d));}},'offlineForm':{'type':Sequelize[_0xe02e('0xf')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','props':{'title':_0xe02e('0x1b'),'helpText':''},'config':{'required':!![],'placeholder':_0xe02e('0x1b'),'type':_0xe02e('0x1b')},'variable':null},{'type':_0xe02e('0x1f'),'config':{'placeholder':_0xe02e('0x20')},'props':{'title':_0xe02e('0x20'),'helpText':_0xe02e('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0xe02e('0x1c')](_0xe02e('0x22'))?JSON[_0xe02e('0x23')](this[_0xe02e('0x1c')](_0xe02e('0x22'))):{};},'set':function(_0x2c98ac){return this[_0xe02e('0x1e')](_0xe02e('0x22'),JSON[_0xe02e('0x17')](_0x2c98ac));}},'token':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xe02e('0x3')]},'forwardOffline':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xe02e('0x3')]},'waitingTitle':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x24')},'waitingMessage':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xe02e('0x26')},'offlineMessageBody':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x27')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xe02e('0x14')},'sendUnmanaged':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xe02e('0x3')]},'notificationTemplate':{'type':Sequelize[_0xe02e('0xf')],'defaultValue':function(){return _0xe02e('0x28');}},'notificationSound':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0xe02e('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xe02e('0x3')],'defaultValue':_0xe02e('0x2a')},'verticalAlignment':{'type':Sequelize[_0xe02e('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xe02e('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xe02e('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xe02e('0x3')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe02e('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe02e('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0xe02e('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe02e('0x8')],'comment':_0xe02e('0x2b')},'mandatoryDisposition':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![],'comment':_0xe02e('0x2c'),'set':function(_0x15bdab){if(!_0x15bdab)this[_0xe02e('0x1e')](_0xe02e('0x2d'),null);this[_0xe02e('0x1e')](_0xe02e('0x2e'),_0x15bdab);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xe02e('0x3')]},'vidaooTopic':{'type':Sequelize[_0xe02e('0x3')],'allowNull':![],'defaultValue':_0xe02e('0x2f')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xe02e('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 397b4e6..cafcd2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8a6=['path','sox','to-csv','lodash','crypto','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./chatWebsite.socket','client','http','then','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','index','mandatoryDispositionPause','ChatWebsite','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','include','rows','show','params','Pause','keys','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','rawAttributes','order','findAll','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','file','addCustomerAvatar','systemAvatar','filename','getLogo','join','sitepic','getLicense','isNil','existsSync','root','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','customerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent','getResult','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','List','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','asc','Contacts','defaults','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','browser','version','format','%s\x20%s','vendor','%s\x20%s\x20%s','device','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','autoclose','close','*,*,*,*','ChatMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','CmContact','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','openNewInteraction','sequelize','Attachment','bulkCreate','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','pass','SendMail','sendMail','email','offlineMessageSubject','subjectOffline','mapValues','Chat','NotifyMailAccount','notifyMail','files','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','Owner','internal','Tag','Tags','color','tag','Command','interval','indexOf','true','ONLINE','OFFLINE','timezone','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','getSnippet','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','push','all','some','remote','connection','remoteAddress','referer','replace','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','transaction','findAndCountAll','getApplications','chatProactiveAction','addProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','Contact','Attachments','addAgents','omit','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x9fc5a2,_0x46c38f){var _0x10a4a8=function(_0x2aeef2){while(--_0x2aeef2){_0x9fc5a2['push'](_0x9fc5a2['shift']());}};_0x10a4a8(++_0x46c38f);}(_0xb8a6,0x12a));var _0x6b8a=function(_0x58eb3f,_0x21a42c){_0x58eb3f=_0x58eb3f-0x0;var _0x283b8b=_0xb8a6[_0x58eb3f];return _0x283b8b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6b8a('0x0'));var jsonpatch=require(_0x6b8a('0x1'));var rp=require('request-promise');var moment=require(_0x6b8a('0x2'));var BPromise=require(_0x6b8a('0x3'));var Mustache=require(_0x6b8a('0x4'));var util=require(_0x6b8a('0x5'));var path=require(_0x6b8a('0x6'));var sox=require(_0x6b8a('0x7'));var csv=require(_0x6b8a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b8a('0x9'));var squel=require('squel');var crypto=require(_0x6b8a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x6b8a('0xb'));var toCsv=require(_0x6b8a('0x8'));var querystring=require(_0x6b8a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6b8a('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b8a('0xe'));var logger=require(_0x6b8a('0xf'))(_0x6b8a('0x10'));var utils=require(_0x6b8a('0x11'));var config=require(_0x6b8a('0x12'));var licenseUtil=require(_0x6b8a('0x13'));var db=require('../../mysqldb')['db'];config[_0x6b8a('0x14')]=_['defaults'](config[_0x6b8a('0x14')],{'host':_0x6b8a('0x15'),'port':0x18eb});var socket=require(_0x6b8a('0x16'))(new Redis(config[_0x6b8a('0x14')]));require(_0x6b8a('0x17'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x6b8a('0x18')][_0x6b8a('0x19')]({'port':0x232c});var client9002=jayson[_0x6b8a('0x18')][_0x6b8a('0x19')]({'port':0x232a});var client9003=jayson[_0x6b8a('0x18')][_0x6b8a('0x19')]({'port':0x232b});var client9001=jayson[_0x6b8a('0x18')][_0x6b8a('0x19')]({'port':0x2329});function respondWithRpcPromise(_0x3867f4,_0x1321a3,_0x30bee8,_0x52cedb){return new BPromise(function(_0x463e66,_0x519f28){var _0x5e434d=_0x52cedb||client;return _0x5e434d['request'](_0x3867f4,_0x30bee8)[_0x6b8a('0x1a')](function(_0x46a426){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x1321a3,_0x6b8a('0x1b'));logger[_0x6b8a('0x1c')](_0x6b8a('0x1d'),_0x1321a3,_0x6b8a('0x1b'),JSON[_0x6b8a('0x1e')](_0x46a426));if(_0x46a426[_0x6b8a('0x1f')]){if(_0x46a426['error'][_0x6b8a('0x20')]===0x1f4){logger[_0x6b8a('0x1f')](_0x6b8a('0x21'),_0x1321a3,_0x46a426[_0x6b8a('0x1f')][_0x6b8a('0x22')]);return _0x519f28(_0x46a426[_0x6b8a('0x1f')][_0x6b8a('0x22')]);}logger[_0x6b8a('0x1f')]('ChatWebsite,\x20%s,\x20%s',_0x1321a3,_0x46a426[_0x6b8a('0x1f')][_0x6b8a('0x22')]);return _0x463e66(_0x46a426[_0x6b8a('0x1f')]['message']);}else{logger[_0x6b8a('0x23')](_0x6b8a('0x21'),_0x1321a3,'request\x20sent');_0x463e66(_0x46a426[_0x6b8a('0x24')][_0x6b8a('0x22')]);}})[_0x6b8a('0x25')](function(_0x21bbf7){logger[_0x6b8a('0x1f')](_0x6b8a('0x21'),_0x1321a3,_0x21bbf7);_0x519f28(_0x21bbf7);});});}function respondWithStatusCode(_0x2d69b4,_0x4a7bea){_0x4a7bea=_0x4a7bea||0xcc;return function(_0x1e97cc){if(_0x1e97cc){return _0x2d69b4[_0x6b8a('0x26')](_0x4a7bea);}return _0x2d69b4['status'](_0x4a7bea)[_0x6b8a('0x27')]();};}function respondWithResult(_0x3dd1e7,_0x1d6fdf){_0x1d6fdf=_0x1d6fdf||0xc8;return function(_0x24b73b){if(_0x24b73b){return _0x3dd1e7[_0x6b8a('0x28')](_0x1d6fdf)[_0x6b8a('0x29')](_0x24b73b);}};}function respondWithFilteredResult(_0x1a730a,_0x27a4a2){return function(_0x2d6243){if(_0x2d6243){var _0x4a7162=typeof _0x27a4a2[_0x6b8a('0x2a')]===_0x6b8a('0x2b')&&typeof _0x27a4a2[_0x6b8a('0x2c')]==='undefined';var _0x487c5b=_0x2d6243[_0x6b8a('0x2d')];var _0x52873b=_0x4a7162?0x0:_0x27a4a2[_0x6b8a('0x2a')];var _0x10c866=_0x4a7162?_0x2d6243['count']:_0x27a4a2['offset']+_0x27a4a2['limit'];var _0x24932e;if(_0x10c866>=_0x487c5b){_0x10c866=_0x487c5b;_0x24932e=0xc8;}else{_0x24932e=0xce;}_0x1a730a[_0x6b8a('0x28')](_0x24932e);return _0x1a730a[_0x6b8a('0x2e')](_0x6b8a('0x2f'),_0x52873b+'-'+_0x10c866+'/'+_0x487c5b)['json'](_0x2d6243);}return null;};}function patchUpdates(_0x189ec0){return function(_0x5b2262){try{jsonpatch[_0x6b8a('0x30')](_0x5b2262,_0x189ec0,!![]);}catch(_0xa59c17){return BPromise[_0x6b8a('0x31')](_0xa59c17);}return _0x5b2262[_0x6b8a('0x32')]();};}function saveUpdates(_0x2cee03,_0x9daf1){return function(_0xcb0a01){if(_0xcb0a01){return _0xcb0a01['update'](_0x2cee03)['then'](function(_0x1e1039){return _0x1e1039;});}return null;};}function removeEntity(_0x110b9e,_0xb9c3ba){return function(_0x5cf990){if(_0x5cf990){return _0x5cf990[_0x6b8a('0x33')]()[_0x6b8a('0x1a')](function(){var _0x5a083d=_0x5cf990[_0x6b8a('0x34')]({'plain':!![]});var _0x41f1d5=_0x6b8a('0x35');return db[_0x6b8a('0x36')][_0x6b8a('0x33')]({'where':{'type':_0x41f1d5,'resourceId':_0x5a083d['id']}})[_0x6b8a('0x1a')](function(){return _0x5cf990;});})[_0x6b8a('0x1a')](function(){_0x110b9e[_0x6b8a('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a910f,_0x2d92f8){return function(_0x2297e3){if(!_0x2297e3){_0x5a910f[_0x6b8a('0x26')](0x194);}return _0x2297e3;};}function handleError(_0x16b2cd,_0x66dd5d){_0x66dd5d=_0x66dd5d||0x1f4;return function(_0x5b89bf){logger[_0x6b8a('0x1f')](_0x5b89bf[_0x6b8a('0x37')]);if(_0x5b89bf[_0x6b8a('0x38')]){delete _0x5b89bf['name'];}_0x16b2cd[_0x6b8a('0x28')](_0x66dd5d)[_0x6b8a('0x39')](_0x5b89bf);};}exports[_0x6b8a('0x3a')]=function(_0x3e22c9,_0xa1548b){var _0x4e25a4={'include':[{'model':db['Pause'],'as':_0x6b8a('0x3b')}]},_0x11dbbf={},_0xbc1186={'count':0x0,'rows':[]};var _0x39937c=_['map'](db[_0x6b8a('0x3c')]['rawAttributes'],function(_0x1c3bd3){return{'name':_0x1c3bd3[_0x6b8a('0x3d')],'type':_0x1c3bd3[_0x6b8a('0x3e')][_0x6b8a('0x3f')]};});_0x11dbbf['model']=_[_0x6b8a('0x40')](_0x39937c,_0x6b8a('0x38'));_0x11dbbf[_0x6b8a('0x41')]=_['keys'](_0x3e22c9[_0x6b8a('0x41')]);_0x11dbbf[_0x6b8a('0x42')]=_[_0x6b8a('0x43')](_0x11dbbf[_0x6b8a('0x44')],_0x11dbbf['query']);_0x4e25a4[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x11dbbf[_0x6b8a('0x44')],qs[_0x6b8a('0x46')](_0x3e22c9[_0x6b8a('0x41')][_0x6b8a('0x46')]));_0x4e25a4['attributes']=_0x4e25a4['attributes'][_0x6b8a('0x47')]?_0x4e25a4[_0x6b8a('0x45')]:_0x11dbbf[_0x6b8a('0x44')];if(!_0x3e22c9[_0x6b8a('0x41')][_0x6b8a('0x48')](_0x6b8a('0x49'))){_0x4e25a4[_0x6b8a('0x2c')]=qs[_0x6b8a('0x2c')](_0x3e22c9[_0x6b8a('0x41')][_0x6b8a('0x2c')]);_0x4e25a4['offset']=qs[_0x6b8a('0x2a')](_0x3e22c9[_0x6b8a('0x41')][_0x6b8a('0x2a')]);}_0x4e25a4['order']=qs[_0x6b8a('0x4a')](_0x3e22c9[_0x6b8a('0x41')][_0x6b8a('0x4a')]);_0x4e25a4['where']=qs[_0x6b8a('0x42')](_[_0x6b8a('0x4b')](_0x3e22c9['query'],_0x11dbbf[_0x6b8a('0x42')]),_0x39937c);if(_0x3e22c9['query'][_0x6b8a('0x4c')]){_0x4e25a4[_0x6b8a('0x4d')]=_['merge'](_0x4e25a4[_0x6b8a('0x4d')],{'$or':_[_0x6b8a('0x40')](_0x39937c,function(_0x2a6e0a){if(_0x2a6e0a[_0x6b8a('0x3e')]!==_0x6b8a('0x4e')){var _0x2899ef={};_0x2899ef[_0x2a6e0a['name']]={'$like':'%'+_0x3e22c9[_0x6b8a('0x41')]['filter']+'%'};return _0x2899ef;}})});}_0x4e25a4=_[_0x6b8a('0x4f')]({},_0x4e25a4,_0x3e22c9[_0x6b8a('0x50')]);var _0x3c59ce={'where':_0x4e25a4[_0x6b8a('0x4d')]};return db[_0x6b8a('0x3c')]['count'](_0x3c59ce)[_0x6b8a('0x1a')](function(_0x14d6c2){_0xbc1186[_0x6b8a('0x2d')]=_0x14d6c2;if(_0x3e22c9[_0x6b8a('0x41')]['includeAll']){_0x4e25a4[_0x6b8a('0x51')]=[{'all':!![]}];}return db[_0x6b8a('0x3c')]['findAll'](_0x4e25a4);})[_0x6b8a('0x1a')](function(_0x126990){_0xbc1186[_0x6b8a('0x52')]=_0x126990;return _0xbc1186;})[_0x6b8a('0x1a')](respondWithFilteredResult(_0xa1548b,_0x4e25a4))[_0x6b8a('0x25')](handleError(_0xa1548b,null));};exports[_0x6b8a('0x53')]=function(_0xcad843,_0x50979b){var _0x46ebff={'raw':![],'where':{'id':_0xcad843[_0x6b8a('0x54')]['id']},'include':[{'model':db[_0x6b8a('0x55')],'as':_0x6b8a('0x3b')}]},_0x44e087={};_0x44e087[_0x6b8a('0x44')]=_[_0x6b8a('0x56')](db[_0x6b8a('0x3c')]['rawAttributes']);_0x44e087[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0xcad843[_0x6b8a('0x41')]);_0x44e087['filters']=_[_0x6b8a('0x43')](_0x44e087['model'],_0x44e087[_0x6b8a('0x41')]);_0x46ebff[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x44e087['model'],qs['fields'](_0xcad843[_0x6b8a('0x41')][_0x6b8a('0x46')]));_0x46ebff[_0x6b8a('0x45')]=_0x46ebff['attributes'][_0x6b8a('0x47')]?_0x46ebff['attributes']:_0x44e087[_0x6b8a('0x44')];if(_0xcad843[_0x6b8a('0x41')][_0x6b8a('0x57')]){_0x46ebff[_0x6b8a('0x51')]=[{'all':!![]}];}_0x46ebff=_['merge']({},_0x46ebff,_0xcad843[_0x6b8a('0x50')]);return db[_0x6b8a('0x3c')][_0x6b8a('0x58')](_0x46ebff)[_0x6b8a('0x1a')](handleEntityNotFound(_0x50979b,null))[_0x6b8a('0x1a')](respondWithResult(_0x50979b,null))['catch'](handleError(_0x50979b,null));};exports['create']=function(_0x488bc4,_0xe4bebf){return db[_0x6b8a('0x3c')][_0x6b8a('0x59')](_0x488bc4['body'],{})[_0x6b8a('0x1a')](function(_0x20c5d6){var _0x12344d=_0x488bc4[_0x6b8a('0x5a')][_0x6b8a('0x34')]({'plain':!![]});if(!_0x12344d)throw new Error(_0x6b8a('0x5b'));if(_0x12344d[_0x6b8a('0x5c')]===_0x6b8a('0x5a')){var _0x85e4aa=_0x20c5d6[_0x6b8a('0x34')]({'plain':!![]});var _0x1acbe3=_0x6b8a('0x35');return db[_0x6b8a('0x5d')][_0x6b8a('0x58')]({'where':{'name':_0x1acbe3,'userProfileId':_0x12344d[_0x6b8a('0x5e')]},'raw':!![]})[_0x6b8a('0x1a')](function(_0x4a3d22){if(_0x4a3d22&&_0x4a3d22[_0x6b8a('0x5f')]===0x0){return db[_0x6b8a('0x36')][_0x6b8a('0x59')]({'name':_0x85e4aa[_0x6b8a('0x38')],'resourceId':_0x85e4aa['id'],'type':_0x4a3d22['name'],'sectionId':_0x4a3d22['id']},{})[_0x6b8a('0x1a')](function(){return _0x20c5d6;});}else{return _0x20c5d6;}})['catch'](function(_0x221581){logger[_0x6b8a('0x1f')](_0x6b8a('0x60'),_0x221581);throw _0x221581;});}return _0x20c5d6;})[_0x6b8a('0x1a')](respondWithResult(_0xe4bebf,0xc9))[_0x6b8a('0x25')](handleError(_0xe4bebf,null));};exports[_0x6b8a('0x61')]=function(_0x155e1b,_0x30c568){if(_0x155e1b[_0x6b8a('0x62')]['id']){delete _0x155e1b[_0x6b8a('0x62')]['id'];}return db[_0x6b8a('0x3c')]['find']({'where':{'id':_0x155e1b[_0x6b8a('0x54')]['id']},'include':[{'model':db[_0x6b8a('0x55')],'as':_0x6b8a('0x3b')}]})[_0x6b8a('0x1a')](handleEntityNotFound(_0x30c568,null))['then'](saveUpdates(_0x155e1b[_0x6b8a('0x62')],null))['then'](respondWithResult(_0x30c568,null))[_0x6b8a('0x25')](handleError(_0x30c568,null));};exports[_0x6b8a('0x33')]=function(_0x4a3077,_0x4a1b02){return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x4a3077['params']['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x4a1b02,null))[_0x6b8a('0x1a')](removeEntity(_0x4a1b02,null))['catch'](handleError(_0x4a1b02,null));};exports[_0x6b8a('0x63')]=function(_0x53a75e,_0x30c168){return db['ChatWebsite']['describe']()[_0x6b8a('0x1a')](respondWithResult(_0x30c168,null))[_0x6b8a('0x25')](handleError(_0x30c168,null));};exports[_0x6b8a('0x64')]=function(_0x7113dc,_0x521ef9,_0x156798){if(_0x7113dc['body']['id']){delete _0x7113dc[_0x6b8a('0x62')]['id'];}return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x7113dc['params']['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x521ef9,null))[_0x6b8a('0x1a')](function(_0x113a03){if(_0x113a03){_0x7113dc[_0x6b8a('0x62')][_0x6b8a('0x65')]=_0x113a03['id'];return db[_0x6b8a('0x66')][_0x6b8a('0x59')](_0x7113dc[_0x6b8a('0x62')]);}})['then'](respondWithResult(_0x521ef9,null))['catch'](handleError(_0x521ef9,null));};exports[_0x6b8a('0x67')]=function(_0x4ccd48,_0x292e31,_0x325e25){var _0x4a27a5={'raw':![],'where':{}};var _0x59a9c3={};var _0x569d00={'count':0x0,'rows':[]};return db[_0x6b8a('0x3c')][_0x6b8a('0x68')]({'where':{'id':_0x4ccd48[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x292e31,null))[_0x6b8a('0x1a')](function(_0x340621){if(_0x340621){_0x59a9c3['model']=_[_0x6b8a('0x56')](db[_0x6b8a('0x66')][_0x6b8a('0x69')]);_0x59a9c3[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0x4ccd48[_0x6b8a('0x41')]);_0x59a9c3[_0x6b8a('0x42')]=_['intersection'](_0x59a9c3[_0x6b8a('0x44')],_0x59a9c3[_0x6b8a('0x41')]);_0x4a27a5[_0x6b8a('0x45')]=_['intersection'](_0x59a9c3[_0x6b8a('0x44')],qs['fields'](_0x4ccd48['query'][_0x6b8a('0x46')]));_0x4a27a5[_0x6b8a('0x45')]=_0x4a27a5[_0x6b8a('0x45')]['length']?_0x4a27a5[_0x6b8a('0x45')]:_0x59a9c3[_0x6b8a('0x44')];if(!_0x4ccd48[_0x6b8a('0x41')][_0x6b8a('0x48')](_0x6b8a('0x49'))){_0x4a27a5['limit']=qs[_0x6b8a('0x2c')](_0x4ccd48[_0x6b8a('0x41')][_0x6b8a('0x2c')]);_0x4a27a5['offset']=qs[_0x6b8a('0x2a')](_0x4ccd48[_0x6b8a('0x41')]['offset']);}_0x4a27a5[_0x6b8a('0x6a')]=qs[_0x6b8a('0x4a')](_0x4ccd48[_0x6b8a('0x41')][_0x6b8a('0x4a')]);_0x4a27a5[_0x6b8a('0x4d')]=qs['filters'](_['pick'](_0x4ccd48[_0x6b8a('0x41')],_0x59a9c3[_0x6b8a('0x42')]));_0x4a27a5[_0x6b8a('0x4d')]['ChatWebsiteId']=_0x340621['id'];if(_0x4ccd48[_0x6b8a('0x41')][_0x6b8a('0x4c')]){_0x4a27a5[_0x6b8a('0x4d')]=_[_0x6b8a('0x4f')](_0x4a27a5[_0x6b8a('0x4d')],{'$or':_[_0x6b8a('0x40')](_0x4a27a5[_0x6b8a('0x45')],function(_0x5522ed){var _0x508852={};_0x508852[_0x5522ed]={'$like':'%'+_0x4ccd48[_0x6b8a('0x41')][_0x6b8a('0x4c')]+'%'};return _0x508852;})});}_0x4a27a5=_[_0x6b8a('0x4f')]({},_0x4a27a5,_0x4ccd48['options']);return db['Disposition'][_0x6b8a('0x2d')]({'where':_0x4a27a5[_0x6b8a('0x4d')]})[_0x6b8a('0x1a')](function(_0x5adb51){_0x569d00['count']=_0x5adb51;if(_0x4ccd48['query'][_0x6b8a('0x57')]){_0x4a27a5[_0x6b8a('0x51')]=[{'all':!![]}];}return db[_0x6b8a('0x66')][_0x6b8a('0x6b')](_0x4a27a5);})['then'](function(_0x33a02e){_0x569d00[_0x6b8a('0x52')]=_0x33a02e;return _0x569d00;});}})[_0x6b8a('0x1a')](respondWithFilteredResult(_0x292e31,_0x4a27a5))['catch'](handleError(_0x292e31,null));};exports[_0x6b8a('0x6c')]=function(_0x5c90a5,_0x36e926,_0x13fbff){return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x5c90a5[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x36e926,null))[_0x6b8a('0x1a')](function(_0x54c906){if(_0x54c906){return _0x54c906[_0x6b8a('0x6c')](_0x5c90a5[_0x6b8a('0x41')][_0x6b8a('0x6d')]);}})[_0x6b8a('0x1a')](respondWithStatusCode(_0x36e926,null))[_0x6b8a('0x25')](handleError(_0x36e926,null));};exports[_0x6b8a('0x6e')]=function(_0x93a079,_0x588398,_0x1ef750){if(_0x93a079[_0x6b8a('0x62')]['id']){delete _0x93a079[_0x6b8a('0x62')]['id'];}return db['ChatWebsite'][_0x6b8a('0x58')]({'where':{'id':_0x93a079[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x588398,null))[_0x6b8a('0x1a')](function(_0x1e6902){if(_0x1e6902){_0x93a079[_0x6b8a('0x62')][_0x6b8a('0x65')]=_0x1e6902['id'];return db[_0x6b8a('0x6f')][_0x6b8a('0x59')](_0x93a079[_0x6b8a('0x62')]);}})['then'](respondWithResult(_0x588398,null))[_0x6b8a('0x25')](handleError(_0x588398,null));};exports['getAnswers']=function(_0x23a105,_0x4a38b5,_0xa96dd6){var _0x5b9946={'raw':![],'where':{}};var _0x2ce567={};var _0x27e9af={'count':0x0,'rows':[]};return db[_0x6b8a('0x3c')]['findOne']({'where':{'id':_0x23a105[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x4a38b5,null))['then'](function(_0x30b7b8){if(_0x30b7b8){_0x2ce567[_0x6b8a('0x44')]=_['keys'](db[_0x6b8a('0x6f')][_0x6b8a('0x69')]);_0x2ce567[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0x23a105[_0x6b8a('0x41')]);_0x2ce567['filters']=_[_0x6b8a('0x43')](_0x2ce567[_0x6b8a('0x44')],_0x2ce567[_0x6b8a('0x41')]);_0x5b9946[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x2ce567[_0x6b8a('0x44')],qs['fields'](_0x23a105['query']['fields']));_0x5b9946[_0x6b8a('0x45')]=_0x5b9946[_0x6b8a('0x45')][_0x6b8a('0x47')]?_0x5b9946[_0x6b8a('0x45')]:_0x2ce567[_0x6b8a('0x44')];if(!_0x23a105[_0x6b8a('0x41')][_0x6b8a('0x48')](_0x6b8a('0x49'))){_0x5b9946[_0x6b8a('0x2c')]=qs['limit'](_0x23a105[_0x6b8a('0x41')][_0x6b8a('0x2c')]);_0x5b9946[_0x6b8a('0x2a')]=qs[_0x6b8a('0x2a')](_0x23a105[_0x6b8a('0x41')]['offset']);}_0x5b9946[_0x6b8a('0x6a')]=qs[_0x6b8a('0x4a')](_0x23a105[_0x6b8a('0x41')][_0x6b8a('0x4a')]);_0x5b9946[_0x6b8a('0x4d')]=qs[_0x6b8a('0x42')](_['pick'](_0x23a105['query'],_0x2ce567['filters']));_0x5b9946['where'][_0x6b8a('0x65')]=_0x30b7b8['id'];if(_0x23a105[_0x6b8a('0x41')]['filter']){_0x5b9946[_0x6b8a('0x4d')]=_[_0x6b8a('0x4f')](_0x5b9946['where'],{'$or':_[_0x6b8a('0x40')](_0x5b9946[_0x6b8a('0x45')],function(_0x4836e3){var _0x50107d={};_0x50107d[_0x4836e3]={'$like':'%'+_0x23a105[_0x6b8a('0x41')][_0x6b8a('0x4c')]+'%'};return _0x50107d;})});}_0x5b9946=_[_0x6b8a('0x4f')]({},_0x5b9946,_0x23a105[_0x6b8a('0x50')]);return db[_0x6b8a('0x6f')][_0x6b8a('0x2d')]({'where':_0x5b9946[_0x6b8a('0x4d')]})[_0x6b8a('0x1a')](function(_0x568bc7){_0x27e9af[_0x6b8a('0x2d')]=_0x568bc7;if(_0x23a105[_0x6b8a('0x41')][_0x6b8a('0x57')]){_0x5b9946['include']=[{'all':!![]}];}return db[_0x6b8a('0x6f')][_0x6b8a('0x6b')](_0x5b9946);})['then'](function(_0x73c484){_0x27e9af[_0x6b8a('0x52')]=_0x73c484;return _0x27e9af;});}})[_0x6b8a('0x1a')](respondWithFilteredResult(_0x4a38b5,_0x5b9946))['catch'](handleError(_0x4a38b5,null));};exports[_0x6b8a('0x70')]=function(_0x1a9c9a,_0x53d3f2,_0x3aff9d){return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x1a9c9a[_0x6b8a('0x54')]['id']}})['then'](handleEntityNotFound(_0x53d3f2,null))['then'](function(_0x149c44){if(_0x149c44){return _0x149c44[_0x6b8a('0x70')](_0x1a9c9a[_0x6b8a('0x41')][_0x6b8a('0x6d')]);}})[_0x6b8a('0x1a')](respondWithStatusCode(_0x53d3f2,null))['catch'](handleError(_0x53d3f2,null));};exports['addLogo']=function(_0x4deba0,_0x7b8717,_0x474d0f){_0x4deba0[_0x6b8a('0x62')]['sitepic']=_0x4deba0[_0x6b8a('0x71')]['filename'];return db[_0x6b8a('0x3c')]['find']({'where':{'id':_0x4deba0['params']['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x7b8717,null))[_0x6b8a('0x1a')](saveUpdates(_0x4deba0[_0x6b8a('0x62')],null))[_0x6b8a('0x1a')](respondWithResult(_0x7b8717,null))['catch'](handleError(_0x7b8717,null));};exports['addAvatar']=function(_0xe2cc20,_0x3ff786,_0x5ce4a3){_0xe2cc20[_0x6b8a('0x62')]['agentAvatar']=_0xe2cc20['file']['filename'];return db[_0x6b8a('0x3c')]['find']({'where':{'id':_0xe2cc20[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x3ff786,null))['then'](saveUpdates(_0xe2cc20[_0x6b8a('0x62')],null))[_0x6b8a('0x1a')](respondWithResult(_0x3ff786,null))[_0x6b8a('0x25')](handleError(_0x3ff786,null));};exports[_0x6b8a('0x72')]=function(_0x1a7ed4,_0x3cde9e,_0x1b532d){_0x1a7ed4[_0x6b8a('0x62')]['customerAvatar']=_0x1a7ed4[_0x6b8a('0x71')]['filename'];return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x1a7ed4[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x3cde9e,null))['then'](saveUpdates(_0x1a7ed4[_0x6b8a('0x62')],null))[_0x6b8a('0x1a')](respondWithResult(_0x3cde9e,null))[_0x6b8a('0x25')](handleError(_0x3cde9e,null));};exports['addSystemAvatar']=function(_0x134631,_0x219ef7,_0x510ea8){_0x134631['body'][_0x6b8a('0x73')]=_0x134631['file'][_0x6b8a('0x74')];return db[_0x6b8a('0x3c')]['find']({'where':{'id':_0x134631[_0x6b8a('0x54')]['id']}})['then'](handleEntityNotFound(_0x219ef7,null))[_0x6b8a('0x1a')](saveUpdates(_0x134631[_0x6b8a('0x62')],null))[_0x6b8a('0x1a')](respondWithResult(_0x219ef7,null))[_0x6b8a('0x25')](handleError(_0x219ef7,null));};exports[_0x6b8a('0x75')]=function(_0x1299f8,_0x39d18c,_0x262020){var _0x20bf00=path[_0x6b8a('0x76')](config['root'],'server/files/images/logos/default_logo.svg');var _0x24880a={'where':{'id':_0x1299f8[_0x6b8a('0x54')]['id']},'attributes':['id',_0x6b8a('0x77')],'raw':!![]};var _0xc2e2da=![];return require(_0x6b8a('0x13'))[_0x6b8a('0x78')]()[_0x6b8a('0x1a')](function(_0x2b2c1f){if(_0x2b2c1f){_0xc2e2da=_0x2b2c1f['custom'];}})[_0x6b8a('0x1a')](function(){return db[_0x6b8a('0x3c')]['find'](_0x24880a);})['then'](handleEntityNotFound(_0x39d18c,null))[_0x6b8a('0x1a')](function(_0x29e2d9){if(_0x29e2d9){if(!_[_0x6b8a('0x79')](_0x29e2d9[_0x6b8a('0x77')])){if(fs[_0x6b8a('0x7a')](path['join'](config[_0x6b8a('0x7b')],_0x6b8a('0x7c'),_0x29e2d9['sitepic']))&&_0xc2e2da){_0x20bf00=path[_0x6b8a('0x76')](config['root'],'server/files/images/logos/',_0x29e2d9[_0x6b8a('0x77')]);}}return _0x39d18c[_0x6b8a('0x7d')](_0x20bf00);}})[_0x6b8a('0x25')](handleError(_0x39d18c,null));};exports[_0x6b8a('0x7e')]=function(_0x1b8437,_0x4d97a1,_0x4ebb10){var _0x441313=path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],_0x6b8a('0x7f'));var _0x21be59={'where':{'id':_0x1b8437[_0x6b8a('0x54')]['id']},'attributes':['id',_0x6b8a('0x80')],'raw':!![]};return db[_0x6b8a('0x3c')][_0x6b8a('0x58')](_0x21be59)[_0x6b8a('0x1a')](handleEntityNotFound(_0x4d97a1,null))[_0x6b8a('0x1a')](function(_0x4bc604){if(_0x4bc604){if(!_[_0x6b8a('0x79')](_0x4bc604[_0x6b8a('0x80')])){if(fs[_0x6b8a('0x7a')](path[_0x6b8a('0x76')](config['root'],'server/files/images/avatars/',_0x4bc604['agentAvatar']))){_0x441313=path[_0x6b8a('0x76')](config['root'],_0x6b8a('0x81'),_0x4bc604[_0x6b8a('0x80')]);}}return _0x4d97a1[_0x6b8a('0x7d')](_0x441313);}})[_0x6b8a('0x25')](handleError(_0x4d97a1,null));};exports[_0x6b8a('0x82')]=function(_0x4090fc,_0x5a7047,_0x26a63b){var _0x475a02=path['join'](config[_0x6b8a('0x7b')],_0x6b8a('0x83'));var _0x32b964={'where':{'id':_0x4090fc[_0x6b8a('0x54')]['id']},'attributes':['id',_0x6b8a('0x84'),_0x6b8a('0x85')],'raw':!![]};return db[_0x6b8a('0x3c')][_0x6b8a('0x58')](_0x32b964)[_0x6b8a('0x1a')](handleEntityNotFound(_0x5a7047,null))[_0x6b8a('0x1a')](function(_0x19644b){if(_0x19644b){if(!_[_0x6b8a('0x79')](_0x19644b[_0x6b8a('0x84')])){if(fs[_0x6b8a('0x7a')](path[_0x6b8a('0x76')](config['root'],_0x6b8a('0x81'),_0x19644b[_0x6b8a('0x84')]))&&_0x19644b[_0x6b8a('0x85')]){_0x475a02=path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],'server/files/images/avatars/',_0x19644b['customerAvatar']);}}return _0x5a7047[_0x6b8a('0x7d')](_0x475a02);}})['catch'](handleError(_0x5a7047,null));};exports[_0x6b8a('0x86')]=function(_0x429668,_0x452968,_0x30d9d4){var _0x5091bf=path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],_0x6b8a('0x87'));var _0x31b1cb={'where':{'id':_0x429668[_0x6b8a('0x54')]['id']},'attributes':['id',_0x6b8a('0x73')],'raw':!![]};return db[_0x6b8a('0x3c')][_0x6b8a('0x58')](_0x31b1cb)[_0x6b8a('0x1a')](handleEntityNotFound(_0x452968,null))[_0x6b8a('0x1a')](function(_0x3e8c68){if(_0x3e8c68){if(!_[_0x6b8a('0x79')](_0x3e8c68[_0x6b8a('0x73')])){if(fs[_0x6b8a('0x7a')](path[_0x6b8a('0x76')](config['root'],'server/files/images/avatars/',_0x3e8c68[_0x6b8a('0x73')]))){_0x5091bf=path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],'server/files/images/avatars/',_0x3e8c68[_0x6b8a('0x73')]);}}return _0x452968[_0x6b8a('0x7d')](_0x5091bf);}})['catch'](handleError(_0x452968,null));};exports[_0x6b8a('0x88')]=function(_0x6f5901,_0x4a7ad4,_0x102b75){var _0x48566a=require('user-agent-parser');var _0x3395d0=new _0x48566a();var _0x1eb209=_0x3395d0['setUA'](_0x6f5901['headers'][_0x6b8a('0x89')])[_0x6b8a('0x8a')]();var _0x32a317={'body':_0x6f5901['body'],'channel':'chat'};var _0x1d9ea8=[];var _0x4d480b=[];var _0x2199b8={};var _0x330404=![];return db['CmContact'][_0x6b8a('0x63')]()['then'](function(_0x580cc1){if(!_0x580cc1){throw new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))](_0x6b8a('0x8d'));}_0x1d9ea8=_['difference'](_[_0x6b8a('0x56')](_0x580cc1),[_0x6b8a('0x8e'),_0x6b8a('0x8f')]);_0x4d480b=_[_0x6b8a('0x90')](_[_0x6b8a('0x56')](_0x580cc1),[_0x6b8a('0x8e'),_0x6b8a('0x8f'),_0x6b8a('0x91'),_0x6b8a('0x92')]);if(_0x6f5901[_0x6b8a('0x62')]['id']){delete _0x6f5901['body']['id'];}if(_[_0x6b8a('0x79')](_0x6f5901['body'][_0x6b8a('0x93')])){throw new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))](_0x6b8a('0x94'));}if(_['isNil'](_0x6f5901['body'][_0x6b8a('0x62')])||_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0x62')]===''){throw new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x6b8a('0x79')](_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0x95')])){throw new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))](_0x6b8a('0x96')+_0x4d480b);}if(!_[_0x6b8a('0x97')](_0x4d480b,_0x6f5901['body'][_0x6b8a('0x95')])){throw new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4d480b);}_0x2199b8[_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0x95')]]=_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0x93')];})[_0x6b8a('0x1a')](function(){return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x6f5901[_0x6b8a('0x54')]['id']},'include':[{'model':db[_0x6b8a('0x98')],'as':_0x6b8a('0x99'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x2199b8,'limit':0x1,'order':[[_0x6b8a('0x8f'),_0x6b8a('0x9a')]]}]},{'model':db[_0x6b8a('0x9b')],'as':_0x6b8a('0x9c')}]});})[_0x6b8a('0x1a')](handleEntityNotFound(_0x4a7ad4,null))[_0x6b8a('0x1a')](function(_0x2ac010){if(_0x2ac010&&_0x2ac010[_0x6b8a('0x99')]){_0x32a317[_0x6b8a('0x9d')]=_0x2ac010;_0x32a317[_0x6b8a('0x9e')]=_0x2ac010['Applications'];_0x32a317[_0x6b8a('0x9f')]=_0x2ac010[_0x6b8a('0x99')];_0x32a317['applications']=_[_0x6b8a('0xa0')](_0x32a317[_0x6b8a('0x9e')],[_0x6b8a('0xa1')],[_0x6b8a('0xa2')]);if(_0x32a317[_0x6b8a('0x9d')][_0x6b8a('0x9c')]){delete _0x32a317[_0x6b8a('0x9d')][_0x6b8a('0x9c')];}if(_0x32a317[_0x6b8a('0x9d')]['List']&&_0x32a317[_0x6b8a('0x9d')]['List'][_0x6b8a('0xa3')][_0x6b8a('0x47')]){return _0x32a317[_0x6b8a('0x9d')][_0x6b8a('0x99')][_0x6b8a('0xa3')][0x0];}var _0x93eb3d=_[_0x6b8a('0xa4')](_0x6f5901[_0x6b8a('0x62')],{'firstName':_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0x93')],'ListId':_0x2ac010[_0x6b8a('0x92')]});_0x93eb3d[_0x6f5901[_0x6b8a('0x62')]['mapKey']]=_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0x93')];return db['CmContact'][_0x6b8a('0x59')](_0x93eb3d,{'fields':_0x1d9ea8,'raw':!![]});}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x4a7ad4,null))[_0x6b8a('0x1a')](function(_0x262883){_0x32a317[_0x6b8a('0xa5')]=_0x262883;var _0xa0155e=_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xa6')];if(_0x6f5901[_0x6b8a('0xa7')]['cf-connecting-ip']){_0xa0155e=_0x6f5901[_0x6b8a('0xa7')][_0x6b8a('0xa8')];}else if(_0x6f5901[_0x6b8a('0xa7')][_0x6b8a('0xa9')]){_0xa0155e=_['first'](_0x6f5901[_0x6b8a('0xa7')][_0x6b8a('0xa9')][_0x6b8a('0xaa')](','));}if(_0x262883){var _0x5e06ef={'ContactId':_0x262883['id'],'ChatWebsiteId':_0x6f5901[_0x6b8a('0x54')]['id'],'from':(_0x262883[_0x6b8a('0xab')]||'')+'\x20'+(_0x262883[_0x6b8a('0xac')]||''),'customerIp':_0xa0155e,'customerPort':_0x6f5901[_0x6b8a('0xa7')][_0x6b8a('0xad')]?_0x6f5901[_0x6b8a('0xa7')][_0x6b8a('0xad')]:null,'referer':_0x6f5901[_0x6b8a('0x62')]['referer'],'browserName':_0x1eb209['browser'][_0x6b8a('0x38')]&&_0x1eb209[_0x6b8a('0xae')][_0x6b8a('0xaf')]?util[_0x6b8a('0xb0')](_0x6b8a('0xb1'),_0x1eb209['browser'][_0x6b8a('0x38')],_0x1eb209[_0x6b8a('0xae')][_0x6b8a('0xaf')]):'unknown','browserVersion':_0x1eb209[_0x6b8a('0xae')][_0x6b8a('0xaf')]||'unknown','osName':util['format'](_0x6b8a('0xb1'),_0x1eb209['os']['name'],_0x1eb209['os'][_0x6b8a('0xaf')]),'osVersion':_0x1eb209['os'][_0x6b8a('0xaf')],'deviceModel':_0x1eb209['device'][_0x6b8a('0x44')]&&_0x1eb209['device'][_0x6b8a('0xb2')]?util[_0x6b8a('0xb0')](_0x6b8a('0xb3'),_0x1eb209[_0x6b8a('0xb4')][_0x6b8a('0x44')],_0x1eb209[_0x6b8a('0xb4')][_0x6b8a('0xb2')],_0x1eb209[_0x6b8a('0xb4')]['type']):null,'deviceVendor':_0x1eb209[_0x6b8a('0xb4')][_0x6b8a('0xb2')],'deviceType':_0x1eb209[_0x6b8a('0xb4')][_0x6b8a('0x3e')],'formData':JSON[_0x6b8a('0x1e')](_0x6f5901[_0x6b8a('0x62')])};var _0x5f1eaf={'ChatWebsiteId':_0x6f5901[_0x6b8a('0x54')]['id'],'closed':![]};if(_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb5')]){_0x5f1eaf[_0x6b8a('0xb5')]=_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb5')];return db[_0x6b8a('0xb6')][_0x6b8a('0x58')]({'where':_0x5f1eaf})[_0x6b8a('0x1a')](function(_0x293fb8){if(_0x293fb8){return[_0x293fb8,![]];}_0x5e06ef[_0x6b8a('0xb5')]=_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb5')];_0x5e06ef[_0x6b8a('0xb7')]=_0x6f5901['body'][_0x6b8a('0xb7')];return db[_0x6b8a('0xb6')]['create'](_0x5e06ef)[_0x6b8a('0x1a')](function(_0x5c376e){return[_0x5c376e,!![]];});});}_0x5f1eaf[_0x6b8a('0xb8')]=_0x262883['id'];if(_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb9')]&&_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb9')]['id']){_0x5f1eaf['id']=_0x6f5901['body']['interaction']['id'];return db['ChatInteraction']['find']({'where':_0x5f1eaf})[_0x6b8a('0x1a')](function(_0x207bf3){if(_0x207bf3){return[_0x207bf3,![]];}return db[_0x6b8a('0xb6')]['create'](_0x5e06ef)[_0x6b8a('0x1a')](function(_0x2a1473){return[_0x2a1473,!![]];});});}return db[_0x6b8a('0xb6')][_0x6b8a('0x59')](_0x5e06ef)[_0x6b8a('0x1a')](function(_0x87f50e){return[_0x87f50e,!![]];});}})[_0x6b8a('0xba')](function(_0x290faa,_0x3548ae){if(_0x290faa){_0x330404=_0x3548ae;if(!_0x3548ae){var _0x4f6d2c={'from':(_0x32a317[_0x6b8a('0xa5')][_0x6b8a('0xab')]||'')+'\x20'+(_0x32a317[_0x6b8a('0xa5')][_0x6b8a('0xac')]||'')};if(_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb5')]&&_0x6f5901[_0x6b8a('0x62')]['messageId']&&_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xb5')]!=_0x6f5901[_0x6b8a('0x62')][_0x6b8a('0xbb')]){_0x4f6d2c[_0x6b8a('0xb5')]=_0x6f5901[_0x6b8a('0x62')]['messageId'];}return _0x290faa[_0x6b8a('0x61')](_0x4f6d2c);}else{return _0x290faa;}}})[_0x6b8a('0x1a')](function(_0x23266b){_0x32a317[_0x6b8a('0xb9')]=_0x23266b[_0x6b8a('0x34')]({'plain':!![]});_0x32a317[_0x6b8a('0xb9')][_0x6b8a('0xbc')]=_0x330404;if(_0x32a317['interaction'][_0x6b8a('0xbc')]){if(_0x32a317[_0x6b8a('0x9d')][_0x6b8a('0xbd')]){_0x32a317[_0x6b8a('0x9e')]['push']({'id':0x0,'priority':_0x32a317[_0x6b8a('0x9e')]['length']+0x1,'app':_0x6b8a('0xbe'),'appdata':'unmanaged','interval':_0x6b8a('0xbf')});}}return db[_0x6b8a('0xc0')][_0x6b8a('0x59')]({'body':_0x6f5901['body']['body'],'ChatWebsiteId':_0x6f5901[_0x6b8a('0x54')]['id'],'ChatInteractionId':_0x23266b['id'],'direction':'in','ContactId':_0x32a317[_0x6b8a('0xa5')]['id'],'AttachmentId':_0x6f5901[_0x6b8a('0x62')]['AttachmentId']});})[_0x6b8a('0x1a')](function(_0xc9ea0d){_0x32a317[_0x6b8a('0x22')]=_0xc9ea0d;if(_0x32a317[_0x6b8a('0xb9')][_0x6b8a('0xc1')]){return db[_0x6b8a('0xc2')][_0x6b8a('0x58')]({'attributes':['id',_0x6b8a('0x38')],'where':{'id':_0x32a317[_0x6b8a('0xb9')][_0x6b8a('0xc1')]}})[_0x6b8a('0x1a')](function(_0x24208a){if(_0x24208a){_0x32a317[_0x6b8a('0x9e')][_0x6b8a('0xc3')]({'id':0x0,'priority':0x0,'app':_0x6b8a('0xc4'),'appdata':_0x24208a['name']+','+(_0x32a317[_0x6b8a('0x9d')][_0x6b8a('0xc5')]||0xa),'interval':_0x6b8a('0xbf')});_0x32a317[_0x6b8a('0xc6')]=!![];}return respondWithRpcPromise(_0x6b8a('0xc7'),'startRouting',_0x32a317);});}return respondWithRpcPromise('Start',_0x6b8a('0xc8'),_0x32a317);})[_0x6b8a('0x1a')](function(_0x87e8ac){respondWithRpcPromise('EventManager',_0x6b8a('0xc9'),{'event':_0x6b8a('0x88'),'message':_0x87e8ac},client9002);return _0x87e8ac;})[_0x6b8a('0x1a')](respondWithResult(_0x4a7ad4,null))[_0x6b8a('0x25')](handleError(_0x4a7ad4,null));};exports['offline']=function(_0x456e4a,_0xb0857a,_0x480b0b){var _0x32e807,_0x2547b9,_0x2b5e00;var _0x2af12a=[];var _0x369684=[];var _0x80bd9c={};var _0x5e92c1=_0x456e4a['files']||[];var _0x4f81ba=[];var _0x1b8f14;return db[_0x6b8a('0xca')]['describe']()[_0x6b8a('0x1a')](function(_0x5aa9ec){if(!_0x5aa9ec){throw new db['Sequelize'][(_0x6b8a('0x8c'))](_0x6b8a('0x8d'));}_0x369684=_[_0x6b8a('0x90')](_['keys'](_0x5aa9ec),['createdAt',_0x6b8a('0x8f')]);_0x2af12a=_['difference'](_['keys'](_0x5aa9ec),[_0x6b8a('0x8e'),_0x6b8a('0x8f'),_0x6b8a('0x91'),'ListId']);if(_0x456e4a[_0x6b8a('0x62')]['id']){delete _0x456e4a[_0x6b8a('0x62')]['id'];}if(_['isNil'](_0x456e4a['body'][_0x6b8a('0x93')])){throw _0xb0857a[_0x6b8a('0x28')](0x1f4)[_0x6b8a('0x39')](new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))](_0x6b8a('0x94')));}if(_[_0x6b8a('0x79')](_0x456e4a['body'][_0x6b8a('0x62')])||_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0x62')]===''){throw _0xb0857a[_0x6b8a('0x28')](0x1f4)[_0x6b8a('0x39')](new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x6b8a('0x79')](_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0xcb')])){throw _0xb0857a[_0x6b8a('0x28')](0x1f4)[_0x6b8a('0x39')](new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))](_0x6b8a('0xcc')+_0x2af12a));}if(!_[_0x6b8a('0x97')](_0x2af12a,_0x456e4a['body'][_0x6b8a('0xcb')])){throw _0xb0857a[_0x6b8a('0x28')](0x1f4)['send'](new db[(_0x6b8a('0x8b'))][(_0x6b8a('0x8c'))](_0x6b8a('0xcd')+_0x2af12a));}_0x80bd9c[_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0xcb')]]=_0x456e4a['body'][_0x6b8a('0x93')];})[_0x6b8a('0x1a')](function(){return db['ChatWebsite'][_0x6b8a('0x58')]({'where':{'id':_0x456e4a['params']['id']},'include':[{'model':db[_0x6b8a('0x98')],'as':_0x6b8a('0x99')},{'model':db[_0x6b8a('0xce')],'as':_0x6b8a('0xce')}]});})[_0x6b8a('0x1a')](handleEntityNotFound(_0xb0857a,null))['then'](function(_0xa93b56){if(_0xa93b56&&_0xa93b56[_0x6b8a('0x99')]){_0x2547b9=_0xa93b56;var _0x1e1a24=_[_0x6b8a('0xa4')](_0x456e4a[_0x6b8a('0x62')],{'firstName':_0x456e4a['body'][_0x6b8a('0x93')],'phone':_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0x93')],'ListId':_0xa93b56[_0x6b8a('0x92')]});_0x1e1a24[_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0xcb')]]=_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0x93')];return db[_0x6b8a('0xca')][_0x6b8a('0xcf')]({'where':_0x80bd9c,'defaults':_0x1e1a24});}})[_0x6b8a('0xba')](function(_0xb762b7){if(_0xb762b7){_0x2b5e00=_0xb762b7;var _0x8f9bf2=fs[_0x6b8a('0xd0')](path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],_0x6b8a('0xd1')),_0x6b8a('0xd2'));var _0x2ab15a=ejs[_0x6b8a('0xd3')](_0x8f9bf2,{'body':_[_0x6b8a('0xd4')](_0x456e4a[_0x6b8a('0x62')][_0x6b8a('0x62')]),'bodyTitle':_0x2547b9[_0x6b8a('0xd5')]});return db[_0x6b8a('0xd6')]['create']({'body':_0x2ab15a,'ContactId':_0xb762b7['id'],'ChatWebsiteId':_0x2547b9['id']});}})[_0x6b8a('0x1a')](function(_0x5bacf9){_0x1b8f14=_0x5bacf9;if(_0x5e92c1['length']){var _0x427bd7=_0x5e92c1[_0x6b8a('0x40')](function(_0x177871){return{'name':_0x177871[_0x6b8a('0xd7')],'basename':_0x177871[_0x6b8a('0x74')],'type':_0x177871[_0x6b8a('0xd8')],'ChatOfflineMessageId':_0x5bacf9['id']};});_0x4f81ba=_0x427bd7[_0x6b8a('0x40')](_0x137847=>{var _0x4a533f={'filename':_0x137847[_0x6b8a('0x38')],'path':path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],_0x6b8a('0xd9'),'files',_0x6b8a('0xda'),_0x6b8a('0xdb'),_0x137847['basename'])};return _0x4a533f;});if(!_0x2547b9[_0x6b8a('0xdc')]){return db[_0x6b8a('0xdd')]['transaction'](function(_0x585a95){return db[_0x6b8a('0xde')][_0x6b8a('0xdf')](_0x427bd7,{'transaction':_0x585a95});});}}})[_0x6b8a('0x1a')](function(){if(_0x1b8f14){_0x32e807=_0x1b8f14;return db[_0x6b8a('0xce')][_0x6b8a('0x68')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0x6b8a('0xe0'),'raw':!![]}]});}})[_0x6b8a('0x1a')](function(_0x31a3a0){if(_0x31a3a0&&_0x31a3a0[_0x6b8a('0xe0')]&&_0x2547b9[_0x6b8a('0xe1')]&&_0x2547b9[_0x6b8a('0xe2')]){var _0x56f873={'tls':{'rejectUnauthorized':![]}};if(_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0xe3')]){_0x56f873[_0x6b8a('0xe3')]=_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0xe3')];}else{_0x56f873[_0x6b8a('0xe4')]=_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0xe4')];_0x56f873[_0x6b8a('0xe5')]=_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0xe5')];_0x56f873['secure']=_0x31a3a0['Smtp'][_0x6b8a('0xe6')];}if(_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0xe7')]){_0x56f873['auth']={'user':_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0x5a')],'pass':_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0xe8')]};}return respondWithRpcPromise(_0x6b8a('0xe9'),_0x6b8a('0xea'),{'account':_0x56f873,'message':{'from':util[_0x6b8a('0xb0')]('\x22%s\x22\x20<%s>',_0x31a3a0[_0x6b8a('0x38')],_0x31a3a0[_0x6b8a('0xeb')]||_0x31a3a0[_0x6b8a('0xe0')][_0x6b8a('0x5a')]),'to':_0x2547b9[_0x6b8a('0xe2')],'subject':_0x2547b9[_0x6b8a('0xec')],'html':_0x32e807[_0x6b8a('0x62')],'attachments':_0x4f81ba}},client9003)[_0x6b8a('0x1a')](function(){return _0x32e807;})[_0x6b8a('0x25')](function(_0x16e682){console[_0x6b8a('0x1f')](_0x16e682);});}})[_0x6b8a('0x1a')](function(){if(_0x2547b9&&_0x2547b9['openNewInteraction']&&_0x2547b9['MailAccountId']){var _0x54fc40=[];if(_0x5e92c1[_0x6b8a('0x47')]){_0x54fc40=_0x5e92c1['map'](function(_0xf8b391){return{'name':_0xf8b391[_0x6b8a('0xd7')],'basename':_0xf8b391['filename'],'type':_0xf8b391['mimetype'],'ChatOfflineMessageId':_0x1b8f14['id']};});}var _0x421b3a;if(!_[_0x6b8a('0x79')](_0x2547b9[_0x6b8a('0xed')])){var _0x287360=_['map'](_0x456e4a[_0x6b8a('0x62')],function(_0x34d309){return _0x34d309;});var _0x219c9e=_['toPairsIn'](_0x287360)[0x0];var _0x370a23=_[_0x6b8a('0xee')](_0x219c9e,function(_0x9ff33){return _0x9ff33;});_0x421b3a=_0x370a23[0x1][_0x2547b9[_0x6b8a('0xed')]];}var _0x6df28={'from':_0x2b5e00[_0x6b8a('0xeb')],'firstName':_0x2b5e00[_0x6b8a('0xab')],'lastName':_0x2b5e00[_0x6b8a('0xac')],'mapKey':_0x6b8a('0xeb'),'message':{'from':_0x2b5e00[_0x6b8a('0xeb')],'to':_0x2547b9['MailAccount']['email'],'cc':'','subject':_[_0x6b8a('0x79')](_0x421b3a)?_0x2547b9[_0x6b8a('0xec')]:_0x421b3a,'messageId':'','sentAt':new Date(),'attach':_0x54fc40[_0x6b8a('0x47')],'attachments':_0x54fc40,'originChannel':_0x6b8a('0xef'),'ChatWebsiteId':_0x2547b9['id'],'ChatOfflineMessageId':_0x32e807['id'],'originTo':_0x2547b9['MailAccount'][_0x6b8a('0xeb')]},'body':_0x32e807[_0x6b8a('0x62')]};var _0x1f2832={'account':{'id':_0x2547b9['MailAccountId']},'body':_0x6df28,'log':_0x6b8a('0xf0')};return respondWithRpcPromise(_0x6b8a('0xf0'),_0x6b8a('0xf1'),_0x1f2832,client9001)['then'](function(){return _0x32e807;})[_0x6b8a('0x25')](function(_0x4df0e0){console[_0x6b8a('0x1f')](_0x4df0e0);});}return;})[_0x6b8a('0x1a')](function(){if(_0x32e807){return _0x32e807;}})[_0x6b8a('0x1a')](respondWithResult(_0xb0857a,null))[_0x6b8a('0x25')](function(_0x5120d7){console['error'](_0x6b8a('0x25'),_0x5120d7);for(var _0x48b67c of _0x5e92c1){var _0x5dc2e9=path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],_0x6b8a('0xd9'),_0x6b8a('0xf2'),_0x6b8a('0xda'),'offline-chat',_0x48b67c[_0x6b8a('0x74')]);fs_extra['remove'](_0x5dc2e9)[_0x6b8a('0x25')](function(_0x49cca4){console[_0x6b8a('0x1f')](_0x6b8a('0xf3'),_0x5dc2e9,_0x49cca4);});}});};exports['addInteraction']=function(_0x5c57d0,_0x535b58,_0x204cf9){return db[_0x6b8a('0xb6')][_0x6b8a('0x58')]({'where':{'id':_0x5c57d0[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x535b58,null))[_0x6b8a('0x1a')](function(_0x13e40c){if(_0x13e40c){return _0x13e40c[_0x6b8a('0xf4')](_0x5c57d0[_0x6b8a('0x62')]['ids'],_['omit'](_0x5c57d0[_0x6b8a('0x62')],[_0x6b8a('0x6d'),'id'])||{});}})[_0x6b8a('0x1a')](respondWithResult(_0x535b58,null))['catch'](handleError(_0x535b58,null));};exports[_0x6b8a('0xf5')]=function(_0x3434e6,_0x39b7b3,_0x1825dc){var _0xbd0faf={'raw':![],'where':{}};var _0x443b67={};var _0x5d93e5={'count':0x0,'rows':[]};return db[_0x6b8a('0x3c')][_0x6b8a('0x68')]({'where':{'id':_0x3434e6['params']['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x39b7b3,null))[_0x6b8a('0x1a')](function(_0x315b13){if(_0x315b13){_0x443b67[_0x6b8a('0x44')]=_['keys'](db[_0x6b8a('0xb6')]['rawAttributes']);_0x443b67[_0x6b8a('0x41')]=_['keys'](_0x3434e6['query']);_0x443b67['filters']=_['intersection'](_0x443b67[_0x6b8a('0x44')],_0x443b67[_0x6b8a('0x41')]);_0xbd0faf[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x443b67['model'],qs[_0x6b8a('0x46')](_0x3434e6['query'][_0x6b8a('0x46')]));_0xbd0faf[_0x6b8a('0x45')]=_0xbd0faf[_0x6b8a('0x45')][_0x6b8a('0x47')]?_0xbd0faf[_0x6b8a('0x45')]:_0x443b67['model'];if(!_0x3434e6[_0x6b8a('0x41')][_0x6b8a('0x48')](_0x6b8a('0x49'))){_0xbd0faf['limit']=qs[_0x6b8a('0x2c')](_0x3434e6['query']['limit']);_0xbd0faf[_0x6b8a('0x2a')]=qs['offset'](_0x3434e6[_0x6b8a('0x41')][_0x6b8a('0x2a')]);}_0xbd0faf[_0x6b8a('0x6a')]=qs[_0x6b8a('0x4a')](_0x3434e6['query'][_0x6b8a('0x4a')]);_0xbd0faf[_0x6b8a('0x4d')]=qs[_0x6b8a('0x42')](_[_0x6b8a('0x4b')](_0x3434e6[_0x6b8a('0x41')],_0x443b67[_0x6b8a('0x42')]));_0xbd0faf[_0x6b8a('0x4d')][_0x6b8a('0x65')]=_0x315b13['id'];if(_0x3434e6['query']['filter']){_0xbd0faf[_0x6b8a('0x4d')]=_[_0x6b8a('0x4f')](_0xbd0faf[_0x6b8a('0x4d')],{'$or':_[_0x6b8a('0x40')](_0xbd0faf[_0x6b8a('0x45')],function(_0x5e7619){var _0x5cbba2={};_0x5cbba2[_0x5e7619]={'$like':'%'+_0x3434e6[_0x6b8a('0x41')][_0x6b8a('0x4c')]+'%'};return _0x5cbba2;})});}_0xbd0faf=_['merge']({},_0xbd0faf,_0x3434e6[_0x6b8a('0x50')]);return db[_0x6b8a('0xb6')][_0x6b8a('0x2d')]({'where':_0xbd0faf['where']})[_0x6b8a('0x1a')](function(_0x3e3f1a){_0x5d93e5[_0x6b8a('0x2d')]=_0x3e3f1a;if(_0x3434e6[_0x6b8a('0x41')][_0x6b8a('0x57')]){_0xbd0faf[_0x6b8a('0x51')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db['User'],'as':_0x6b8a('0xf6'),'attributes':[_0x6b8a('0x38'),'fullname',_0x6b8a('0xf7')],'required':![]},{'model':db[_0x6b8a('0xf8')],'as':_0x6b8a('0xf9'),'attributes':['id',_0x6b8a('0x38'),_0x6b8a('0xfa')],'where':_0x3434e6[_0x6b8a('0x41')]['tag']?{'id':_0x3434e6[_0x6b8a('0x41')][_0x6b8a('0xfb')]}:undefined,'required':_0x3434e6[_0x6b8a('0x41')][_0x6b8a('0xfb')]?!![]:![]}];}return db['ChatInteraction']['findAll'](_0xbd0faf);})[_0x6b8a('0x1a')](function(_0x482b19){_0x5d93e5[_0x6b8a('0x52')]=_0x482b19;return _0x5d93e5;});}})[_0x6b8a('0x1a')](respondWithFilteredResult(_0x39b7b3,_0xbd0faf))[_0x6b8a('0x25')](handleError(_0x39b7b3,null));};function iftimePromise(_0x3d65cc,_0x343139){return respondWithRpcPromise(_0x6b8a('0xfc'),'getSnippet',{'command':_0x343139['timezone']?util[_0x6b8a('0xb0')]('iftime\x20%s,%s',_0x3d65cc['interval'],_0x343139['timezone']):util[_0x6b8a('0xb0')]('iftime\x20%s',_0x3d65cc[_0x6b8a('0xfd')])},client9002)['then'](function(_0x21c327){var _0x25bea8=_0x21c327&&_0x21c327[_0x6b8a('0xfe')](_0x6b8a('0xff'))>=0x0?!![]:![];logger[_0x6b8a('0x23')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x343139['id'],_0x3d65cc['id'],_0x3d65cc[_0x6b8a('0xfd')],_0x25bea8?_0x6b8a('0x100'):_0x6b8a('0x101'),_0x343139[_0x6b8a('0x102')]?_0x343139['timezone']:_0x6b8a('0x103'));return _0x25bea8;})[_0x6b8a('0x25')](function(_0x1edb46){logger[_0x6b8a('0x1f')](_0x6b8a('0x104'),_0x343139['id'],_0x3d65cc['id'],_0x3d65cc[_0x6b8a('0xfd')],util[_0x6b8a('0x105')](_0x1edb46,{'showHidden':![],'depth':null}),_0x343139[_0x6b8a('0x102')]?_0x343139[_0x6b8a('0x102')]:_0x6b8a('0x103'));return![];});}exports[_0x6b8a('0x106')]=function(_0x2544c8,_0x46dac9,_0x328f07){var _0x4fda36=0x0;var _0x420ec3=0x0;var _0x181c5c=![];var _0x45b07f;var _0x151bae;return db['ChatWebsite'][_0x6b8a('0x58')]({'where':{'id':_0x2544c8[_0x6b8a('0x54')]['id']},'include':[{'model':db['Interval'],'as':_0x6b8a('0x107'),'include':[{'model':db['Interval'],'as':_0x6b8a('0x108'),'attributes':['id',_0x6b8a('0xfd')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x46dac9,null))['then'](function(_0x138da6){if(_0x138da6){_0x45b07f=_0x138da6;return _0x138da6[_0x6b8a('0x109')]({'raw':!![]});}})[_0x6b8a('0x1a')](function(_0x1fa7b5){if(_0x45b07f){if(_0x1fa7b5){_0x151bae=_0x1fa7b5;}}return require(_0x6b8a('0x13'))['getLicense']();})[_0x6b8a('0x1a')](function(_0x47498c){if(_0x47498c){_0x420ec3=_0x47498c[_0x6b8a('0x10a')];_0x181c5c=_0x47498c['custom'];}})[_0x6b8a('0x1a')](function(){return db['ChatInteraction'][_0x6b8a('0x2d')]({'where':{'closed':![]}});})[_0x6b8a('0x1a')](function(_0x54272d){_0x4fda36=_0x54272d;if(_0x420ec3&&_0x54272d>_0x420ec3){return db['License'][_0x6b8a('0x68')]({'where':{'id':0x1}})[_0x6b8a('0x1a')](function(_0x1c53cf){if(_0x1c53cf){_0x1c53cf[_0x6b8a('0x10b')](_0x6b8a('0x10c'));}});}})['then'](function(){if(_0x45b07f['Interval']&&_0x45b07f[_0x6b8a('0x107')]['Intervals']){var _0x5686fb=[];for(var _0x326481=0x0;_0x326481<_0x45b07f[_0x6b8a('0x107')]['Intervals'][_0x6b8a('0x47')];_0x326481++){var _0x2e9444=_0x45b07f[_0x6b8a('0x107')][_0x6b8a('0x108')][_0x326481]['get']({'plain':!![]});_0x5686fb[_0x6b8a('0x10d')](iftimePromise(_0x2e9444,_0x45b07f));}return BPromise[_0x6b8a('0x10e')](_0x5686fb)[_0x6b8a('0x1a')](function(_0x623b5d){return _[_0x6b8a('0x10f')](_0x623b5d);});}else{return!![];}})[_0x6b8a('0x1a')](function(_0x66357c){var _0x553cb6=fs[_0x6b8a('0xd0')](path[_0x6b8a('0x76')](config[_0x6b8a('0x7b')],'server/files/chat/iframe.ejs'),_0x6b8a('0xd2'));var _0x6db4ef={'remote':_0x45b07f[_0x6b8a('0x110')],'query':querystring[_0x6b8a('0x1e')](_[_0x6b8a('0x4f')](_0x45b07f['get']({'plain':!![]}),{'customerIp':_0x2544c8[_0x6b8a('0xa7')]['x-forwarded-for']||_0x2544c8[_0x6b8a('0xa7')]['x-real-ip']||_0x2544c8[_0x6b8a('0x111')][_0x6b8a('0x112')]||_0x2544c8['ip'],'referer':_0x2544c8[_0x6b8a('0xa7')][_0x6b8a('0x113')],'openedInteractions':_0x4fda36,'maxInteractions':_0x420ec3,'virtual':_0x181c5c[_0x6b8a('0x10a')],'online':_0x66357c,'custom':_0x181c5c}))[_0x6b8a('0x114')](/'/g,'\x5c\x27')};_0x46dac9[_0x6b8a('0x39')](ejs['render'](Mustache[_0x6b8a('0xd3')](_0x553cb6,_0x6db4ef),{'proactiveActions':_0x151bae,'alignment':_0x45b07f[_0x6b8a('0x115')],'verticalAlignment':_0x45b07f[_0x6b8a('0x116')],'div_color':_0x45b07f[_0x6b8a('0xfa')],'text_color':_0x45b07f[_0x6b8a('0x117')],'button_color':_0x45b07f[_0x6b8a('0x118')],'background_color':_0x45b07f[_0x6b8a('0x119')]}));})['catch'](handleError(_0x46dac9,null));};exports[_0x6b8a('0x11a')]=function(_0x1adb92,_0x323d8c,_0x5ba657){return db[_0x6b8a('0x3c')][_0x6b8a('0x68')]({'where':{'id':_0x1adb92[_0x6b8a('0x54')]['id']}})['then'](handleEntityNotFound(_0x323d8c,null))[_0x6b8a('0x1a')](function(_0x26a679){if(_0x26a679){return db[_0x6b8a('0xdd')][_0x6b8a('0x11b')](function(_0xb951fd){return db[_0x6b8a('0x9b')]['destroy']({'where':{'ChatWebsiteId':_0x1adb92[_0x6b8a('0x54')]['id']},'transaction':_0xb951fd})[_0x6b8a('0x1a')](function(_0x786e20){var _0x44e2e0=_[_0x6b8a('0x40')](_0x1adb92[_0x6b8a('0x62')],function(_0x4a0cc7){_0x4a0cc7[_0x6b8a('0x65')]=_0x1adb92['params']['id'];return _0x4a0cc7;});return db[_0x6b8a('0x9b')][_0x6b8a('0xdf')](_0x44e2e0,{'transaction':_0xb951fd});});})['then'](function(){return db['ChatApplication'][_0x6b8a('0x11c')]({'where':{'ChatWebsiteId':_0x1adb92[_0x6b8a('0x54')]['id']},'order':_0x6b8a('0xa1')});});}})[_0x6b8a('0x1a')](respondWithResult(_0x323d8c,null))[_0x6b8a('0x25')](handleError(_0x323d8c,null));};exports[_0x6b8a('0x11d')]=function(_0x2545b4,_0x52ad03,_0x1982cc){var _0x2701ef={};var _0x376167={};var _0x1f45b3;var _0x351e5d;return db[_0x6b8a('0x3c')][_0x6b8a('0x68')]({'where':{'id':_0x2545b4['params']['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x52ad03,null))[_0x6b8a('0x1a')](function(_0x37202f){if(_0x37202f){_0x1f45b3=_0x37202f;_0x376167[_0x6b8a('0x44')]=_['keys'](db[_0x6b8a('0x9b')][_0x6b8a('0x69')]);_0x376167[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0x2545b4['query']);_0x376167['filters']=_['intersection'](_0x376167[_0x6b8a('0x44')],_0x376167['query']);_0x2701ef[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x376167['model'],qs['fields'](_0x2545b4[_0x6b8a('0x41')][_0x6b8a('0x46')]));_0x2701ef[_0x6b8a('0x45')]=_0x2701ef['attributes']['length']?_0x2701ef[_0x6b8a('0x45')]:_0x376167[_0x6b8a('0x44')];_0x2701ef[_0x6b8a('0x6a')]=qs[_0x6b8a('0x4a')](_0x2545b4['query']['sort']);_0x2701ef[_0x6b8a('0x4d')]=qs['filters'](_[_0x6b8a('0x4b')](_0x2545b4[_0x6b8a('0x41')],_0x376167[_0x6b8a('0x42')]));if(_0x2545b4[_0x6b8a('0x41')][_0x6b8a('0x4c')]){_0x2701ef[_0x6b8a('0x4d')]=_['merge'](_0x2701ef['where'],{'$or':_[_0x6b8a('0x40')](_0x2701ef[_0x6b8a('0x45')],function(_0x204972){var _0x26e81a={};_0x26e81a[_0x204972]={'$like':'%'+_0x2545b4[_0x6b8a('0x41')][_0x6b8a('0x4c')]+'%'};return _0x26e81a;})});}_0x2701ef=_[_0x6b8a('0x4f')]({},_0x2701ef,_0x2545b4[_0x6b8a('0x50')]);return _0x1f45b3[_0x6b8a('0x11d')](_0x2701ef);}})[_0x6b8a('0x1a')](function(_0x684928){if(_0x684928){_0x351e5d=_0x684928[_0x6b8a('0x47')];if(!_0x2545b4[_0x6b8a('0x41')][_0x6b8a('0x48')]('nolimit')){_0x2701ef[_0x6b8a('0x2c')]=qs[_0x6b8a('0x2c')](_0x2545b4[_0x6b8a('0x41')][_0x6b8a('0x2c')]);_0x2701ef['offset']=qs[_0x6b8a('0x2a')](_0x2545b4['query'][_0x6b8a('0x2a')]);}return _0x1f45b3[_0x6b8a('0x11d')](_0x2701ef);}})[_0x6b8a('0x1a')](function(_0x296298){if(_0x296298){return _0x296298?{'count':_0x351e5d,'rows':_0x296298}:null;}})[_0x6b8a('0x1a')](respondWithResult(_0x52ad03,null))[_0x6b8a('0x25')](handleError(_0x52ad03,null));};exports['addProactiveActions']=function(_0x4d9884,_0x149a6b,_0x1b8fb5){return db[_0x6b8a('0x11e')][_0x6b8a('0x58')]({'where':{'id':_0x4d9884['params']['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x149a6b,null))['then'](function(_0x3231a1){if(_0x3231a1){return _0x3231a1[_0x6b8a('0x11f')](_0x4d9884[_0x6b8a('0x62')][_0x6b8a('0x6d')],_['omit'](_0x4d9884['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x149a6b,null))[_0x6b8a('0x25')](handleError(_0x149a6b,null));};exports[_0x6b8a('0x109')]=function(_0xba4bb3,_0x265001,_0x37906e){var _0x5b1ae2={};var _0x8948ea={};var _0x4c8d9a;var _0x5e105f;return db['ChatWebsite'][_0x6b8a('0x68')]({'where':{'id':_0xba4bb3['params']['id']}})['then'](handleEntityNotFound(_0x265001,null))[_0x6b8a('0x1a')](function(_0x1e781c){if(_0x1e781c){_0x4c8d9a=_0x1e781c;_0x8948ea[_0x6b8a('0x44')]=_['keys'](db[_0x6b8a('0x120')]['rawAttributes']);_0x8948ea[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0xba4bb3[_0x6b8a('0x41')]);_0x8948ea['filters']=_[_0x6b8a('0x43')](_0x8948ea[_0x6b8a('0x44')],_0x8948ea['query']);_0x5b1ae2[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x8948ea[_0x6b8a('0x44')],qs[_0x6b8a('0x46')](_0xba4bb3[_0x6b8a('0x41')]['fields']));_0x5b1ae2[_0x6b8a('0x45')]=_0x5b1ae2[_0x6b8a('0x45')][_0x6b8a('0x47')]?_0x5b1ae2[_0x6b8a('0x45')]:_0x8948ea[_0x6b8a('0x44')];_0x5b1ae2['order']=qs[_0x6b8a('0x4a')](_0xba4bb3[_0x6b8a('0x41')][_0x6b8a('0x4a')]);_0x5b1ae2[_0x6b8a('0x4d')]=qs[_0x6b8a('0x42')](_['pick'](_0xba4bb3[_0x6b8a('0x41')],_0x8948ea[_0x6b8a('0x42')]));if(_0xba4bb3['query'][_0x6b8a('0x4c')]){_0x5b1ae2[_0x6b8a('0x4d')]=_['merge'](_0x5b1ae2['where'],{'$or':_['map'](_0x5b1ae2[_0x6b8a('0x45')],function(_0x18104e){var _0x27cb93={};_0x27cb93[_0x18104e]={'$like':'%'+_0xba4bb3['query'][_0x6b8a('0x4c')]+'%'};return _0x27cb93;})});}_0x5b1ae2=_['merge']({},_0x5b1ae2,_0xba4bb3[_0x6b8a('0x50')]);return _0x4c8d9a[_0x6b8a('0x109')](_0x5b1ae2);}})[_0x6b8a('0x1a')](function(_0x148ffa){if(_0x148ffa){_0x5e105f=_0x148ffa['length'];if(!_0xba4bb3['query'][_0x6b8a('0x48')](_0x6b8a('0x49'))){_0x5b1ae2[_0x6b8a('0x2c')]=qs[_0x6b8a('0x2c')](_0xba4bb3[_0x6b8a('0x41')][_0x6b8a('0x2c')]);_0x5b1ae2['offset']=qs['offset'](_0xba4bb3[_0x6b8a('0x41')][_0x6b8a('0x2a')]);}return _0x4c8d9a[_0x6b8a('0x109')](_0x5b1ae2);}})[_0x6b8a('0x1a')](function(_0x2921f8){if(_0x2921f8){return _0x2921f8?{'count':_0x5e105f,'rows':_0x2921f8}:null;}})[_0x6b8a('0x1a')](respondWithResult(_0x265001,null))[_0x6b8a('0x25')](handleError(_0x265001,null));};exports[_0x6b8a('0x121')]=function(_0x3bec60,_0x4cd78b,_0x223e57){var _0x479dba=_0x3bec60['query'][_0x6b8a('0x122')]===_0x6b8a('0x123')?_0x6b8a('0x124'):_0x6b8a('0x125');return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'attributes':['id',_0x479dba],'where':{'id':_0x3bec60[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x4cd78b,null))[_0x6b8a('0x1a')](function(_0xc36c0f){if(_0xc36c0f){var _0x3e72db=_0xc36c0f[_0x479dba];var _0x21a0f6=_0x3e72db&&_0x3e72db['items']?_0x3e72db[_0x6b8a('0x126')]:[];_0x4cd78b['send']({'fromKey':_[_0x6b8a('0x79')](_0x3e72db['fromKey'])?undefined:_0x3e72db['fromKey'],'count':_0x21a0f6[_0x6b8a('0x47')],'rows':_0x21a0f6});}})[_0x6b8a('0x25')](handleError(_0x4cd78b,null));};exports['getOfflineMessages']=function(_0x36143a,_0x4429ce,_0x342b0c){var _0x45bbbf={'raw':![],'where':{}};var _0x47a094={};var _0x24192d={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x36143a[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x4429ce,null))['then'](function(_0x537861){if(_0x537861){_0x47a094[_0x6b8a('0x44')]=_[_0x6b8a('0x56')](db[_0x6b8a('0xd6')][_0x6b8a('0x69')]);_0x47a094[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0x36143a['query']);_0x47a094['filters']=_[_0x6b8a('0x43')](_0x47a094['model'],_0x47a094[_0x6b8a('0x41')]);_0x45bbbf['attributes']=_[_0x6b8a('0x43')](_0x47a094[_0x6b8a('0x44')],qs[_0x6b8a('0x46')](_0x36143a[_0x6b8a('0x41')][_0x6b8a('0x46')]));_0x45bbbf[_0x6b8a('0x45')]=_0x45bbbf[_0x6b8a('0x45')][_0x6b8a('0x47')]?_0x45bbbf['attributes']:_0x47a094['model'];if(!_0x36143a[_0x6b8a('0x41')]['hasOwnProperty']('nolimit')){_0x45bbbf['limit']=qs[_0x6b8a('0x2c')](_0x36143a[_0x6b8a('0x41')][_0x6b8a('0x2c')]);_0x45bbbf[_0x6b8a('0x2a')]=qs['offset'](_0x36143a[_0x6b8a('0x41')][_0x6b8a('0x2a')]);}_0x45bbbf['order']=qs[_0x6b8a('0x4a')](_0x36143a[_0x6b8a('0x41')][_0x6b8a('0x4a')]);_0x45bbbf[_0x6b8a('0x4d')]=qs['filters'](_[_0x6b8a('0x4b')](_0x36143a[_0x6b8a('0x41')],_0x47a094[_0x6b8a('0x42')]));_0x45bbbf[_0x6b8a('0x4d')][_0x6b8a('0x65')]=_0x537861['id'];if(_0x36143a[_0x6b8a('0x41')][_0x6b8a('0x4c')]){_0x45bbbf[_0x6b8a('0x4d')]=_[_0x6b8a('0x4f')](_0x45bbbf[_0x6b8a('0x4d')],{'$or':_['map'](_0x45bbbf[_0x6b8a('0x45')],function(_0x493fda){var _0x51c9fa={};_0x51c9fa[_0x493fda]={'$like':'%'+_0x36143a['query']['filter']+'%'};return _0x51c9fa;})});}_0x45bbbf=_[_0x6b8a('0x4f')]({},_0x45bbbf,_0x36143a[_0x6b8a('0x50')]);return db[_0x6b8a('0xd6')]['count']({'where':_0x45bbbf[_0x6b8a('0x4d')]})[_0x6b8a('0x1a')](function(_0x9fa10){_0x24192d[_0x6b8a('0x2d')]=_0x9fa10;if(_0x36143a[_0x6b8a('0x41')]['includeAll']){_0x45bbbf[_0x6b8a('0x51')]=[{'all':!![]}];}else{_0x45bbbf[_0x6b8a('0x51')]=[{'model':db[_0x6b8a('0xca')],'as':_0x6b8a('0x127'),'required':![]},{'model':db['Attachment'],'as':_0x6b8a('0x128'),'required':![]}];}return db[_0x6b8a('0xd6')][_0x6b8a('0x6b')](_0x45bbbf);})[_0x6b8a('0x1a')](function(_0x1ddd6a){_0x24192d['rows']=_0x1ddd6a;return _0x24192d;});}})[_0x6b8a('0x1a')](respondWithFilteredResult(_0x4429ce,_0x45bbbf))[_0x6b8a('0x25')](handleError(_0x4429ce,null));};exports[_0x6b8a('0x129')]=function(_0x11d90d,_0x236f09,_0x312e61){return db['ChatWebsite'][_0x6b8a('0x58')]({'where':{'id':_0x11d90d[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x236f09,null))['then'](function(_0x4302de){if(_0x4302de){return _0x4302de[_0x6b8a('0x129')](_0x11d90d[_0x6b8a('0x62')][_0x6b8a('0x6d')],_[_0x6b8a('0x12a')](_0x11d90d[_0x6b8a('0x62')],[_0x6b8a('0x6d'),'id'])||{})[_0x6b8a('0xba')](function(_0xe4e9d8){for(var _0x59b7d2=0x0;_0x59b7d2<_0x11d90d[_0x6b8a('0x62')][_0x6b8a('0x6d')][_0x6b8a('0x47')];_0x59b7d2+=0x1){socket[_0x6b8a('0x12b')]('userChatWebsite:save',{'UserId':Number(_0x11d90d[_0x6b8a('0x62')][_0x6b8a('0x6d')][_0x59b7d2]),'ChatWebsiteId':Number(_0x11d90d[_0x6b8a('0x54')]['id'])});}return _0xe4e9d8;});}})['then'](respondWithResult(_0x236f09,null))[_0x6b8a('0x25')](handleError(_0x236f09,null));};exports[_0x6b8a('0x12c')]=function(_0x4ced90,_0x1679d6,_0xb7641){return db[_0x6b8a('0x3c')][_0x6b8a('0x58')]({'where':{'id':_0x4ced90[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0x1679d6,null))[_0x6b8a('0x1a')](function(_0xb2533d){if(_0xb2533d){return _0xb2533d[_0x6b8a('0x12c')](_0x4ced90['query'][_0x6b8a('0x6d')])['then'](function(){if(_[_0x6b8a('0x12d')](_0x4ced90['query'][_0x6b8a('0x6d')])){for(var _0x5c3ffc=0x0;_0x5c3ffc<_0x4ced90[_0x6b8a('0x41')]['ids']['length'];_0x5c3ffc+=0x1){socket['emit'](_0x6b8a('0x12e'),{'UserId':Number(_0x4ced90[_0x6b8a('0x41')][_0x6b8a('0x6d')][_0x5c3ffc]),'ChatWebsiteId':Number(_0x4ced90[_0x6b8a('0x54')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x4ced90[_0x6b8a('0x41')][_0x6b8a('0x6d')]),'ChatWebsiteId':Number(_0x4ced90[_0x6b8a('0x54')]['id'])});}});}})[_0x6b8a('0x1a')](respondWithStatusCode(_0x1679d6,null))['catch'](handleError(_0x1679d6,null));};exports[_0x6b8a('0x12f')]=function(_0x4be019,_0xc5fc73,_0x9e1755){var _0x3adae8={};var _0x2514d5={};var _0x1455a6;var _0xe10a68;return db[_0x6b8a('0x3c')][_0x6b8a('0x68')]({'where':{'id':_0x4be019[_0x6b8a('0x54')]['id']}})[_0x6b8a('0x1a')](handleEntityNotFound(_0xc5fc73,null))[_0x6b8a('0x1a')](function(_0x59276a){if(_0x59276a){_0x1455a6=_0x59276a;_0x2514d5[_0x6b8a('0x44')]=_['keys'](db['User'][_0x6b8a('0x69')]);_0x2514d5[_0x6b8a('0x41')]=_[_0x6b8a('0x56')](_0x4be019[_0x6b8a('0x41')]);_0x2514d5[_0x6b8a('0x42')]=_['intersection'](_0x2514d5[_0x6b8a('0x44')],_0x2514d5[_0x6b8a('0x41')]);_0x3adae8[_0x6b8a('0x45')]=_[_0x6b8a('0x43')](_0x2514d5[_0x6b8a('0x44')],qs['fields'](_0x4be019[_0x6b8a('0x41')][_0x6b8a('0x46')]));_0x3adae8[_0x6b8a('0x45')]=_0x3adae8[_0x6b8a('0x45')][_0x6b8a('0x47')]?_0x3adae8[_0x6b8a('0x45')]:_0x2514d5[_0x6b8a('0x44')];_0x3adae8[_0x6b8a('0x6a')]=qs[_0x6b8a('0x4a')](_0x4be019[_0x6b8a('0x41')][_0x6b8a('0x4a')]);_0x3adae8[_0x6b8a('0x4d')]=qs[_0x6b8a('0x42')](_[_0x6b8a('0x4b')](_0x4be019['query'],_0x2514d5[_0x6b8a('0x42')]));if(_0x4be019[_0x6b8a('0x41')][_0x6b8a('0x4c')]){_0x3adae8['where']=_[_0x6b8a('0x4f')](_0x3adae8['where'],{'$or':_[_0x6b8a('0x40')](_0x3adae8[_0x6b8a('0x45')],function(_0xc374e2){var _0x538b48={};_0x538b48[_0xc374e2]={'$like':'%'+_0x4be019['query'][_0x6b8a('0x4c')]+'%'};return _0x538b48;})});}_0x3adae8=_[_0x6b8a('0x4f')]({},_0x3adae8,_0x4be019['options']);return _0x1455a6[_0x6b8a('0x12f')](_0x3adae8);}})[_0x6b8a('0x1a')](function(_0x1c2eb8){if(_0x1c2eb8){_0xe10a68=_0x1c2eb8[_0x6b8a('0x47')];if(!_0x4be019[_0x6b8a('0x41')][_0x6b8a('0x48')]('nolimit')){_0x3adae8[_0x6b8a('0x2c')]=qs['limit'](_0x4be019[_0x6b8a('0x41')]['limit']);_0x3adae8[_0x6b8a('0x2a')]=qs[_0x6b8a('0x2a')](_0x4be019[_0x6b8a('0x41')][_0x6b8a('0x2a')]);}return _0x1455a6[_0x6b8a('0x12f')](_0x3adae8);}})[_0x6b8a('0x1a')](function(_0x3f19eb){if(_0x3f19eb){return _0x3f19eb?{'count':_0xe10a68,'rows':_0x3f19eb}:null;}})[_0x6b8a('0x1a')](respondWithResult(_0xc5fc73,null))[_0x6b8a('0x25')](handleError(_0xc5fc73,null));};
\ No newline at end of file
+var _0x8bf3=['CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','difference','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','defaults','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','firstName','lastName','x-real-port','referer','browser','format','version','unknown','%s\x20%s','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','autoclose','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','EventManager','offline','files','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','server/files/templates/chatOfflineMessage.ejs','utf8','render','ChatOfflineMessage','originalname','attachments','offline-chat','basename','openNewInteraction','sequelize','Attachment','service','Smtp','host','port','secure','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','offlineMessageSubject','MailAccountId','mimetype','toPairsIn','mapValues','subjectOffline','Chat','NotifyMailAccount','notifyMail','server','remove','addInteraction','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','interval','indexOf','OFFLINE','No\x20timezone','Interval','Intervals','getProactiveActions','virtual','License','chatLicenseExceeded','push','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','color_button','backgroundColor','findAndCountAll','getApplications','chatProactiveAction','addProactiveActions','omit','ChatProactiveAction','getFields','online','false','onlineForm','items','fromKey','removeAgents','emit','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','redis','./chatWebsite.socket','register','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','destroy','get','ChatWebsites','stack','send','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','ChatWebsite','includeAll','include','findAll','rows','params','length','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','describe','addDisposition','getDispositions','order','ChatWebsiteId','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','existsSync','server/files/images/logos/','download','isNil','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat'];(function(_0x231a08,_0x492576){var _0x29a974=function(_0x3bd0c8){while(--_0x3bd0c8){_0x231a08['push'](_0x231a08['shift']());}};_0x29a974(++_0x492576);}(_0x8bf3,0x1c2));var _0x38bf=function(_0x531991,_0x3b6f62){_0x531991=_0x531991-0x0;var _0x5a4759=_0x8bf3[_0x531991];return _0x5a4759;};'use strict';var emlformat=require(_0x38bf('0x0'));var rimraf=require(_0x38bf('0x1'));var zipdir=require(_0x38bf('0x2'));var jsonpatch=require(_0x38bf('0x3'));var rp=require(_0x38bf('0x4'));var moment=require('moment');var BPromise=require(_0x38bf('0x5'));var Mustache=require(_0x38bf('0x6'));var util=require(_0x38bf('0x7'));var path=require('path');var sox=require(_0x38bf('0x8'));var csv=require(_0x38bf('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x38bf('0xa'));var _=require(_0x38bf('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x38bf('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x38bf('0x9'));var querystring=require('querystring');var Papa=require(_0x38bf('0xd'));var Redis=require(_0x38bf('0xe'));var authService=require(_0x38bf('0xf'));var qs=require(_0x38bf('0x10'));var as=require(_0x38bf('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38bf('0x12'))('api');var utils=require(_0x38bf('0x13'));var config=require(_0x38bf('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x38bf('0x15')]=_['defaults'](config[_0x38bf('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x38bf('0x15')]));require(_0x38bf('0x16'))[_0x38bf('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0x38bf('0x18')][_0x38bf('0x19')]({'port':0x232c});var client9002=jayson[_0x38bf('0x18')][_0x38bf('0x19')]({'port':0x232a});var client9003=jayson[_0x38bf('0x18')][_0x38bf('0x19')]({'port':0x232b});var client9001=jayson['client']['http']({'port':0x2329});function respondWithRpcPromise(_0x20b006,_0x4e878b,_0x32989b,_0x340316){return new BPromise(function(_0x318392,_0x4fdea0){var _0x2665cf=_0x340316||client;return _0x2665cf[_0x38bf('0x1a')](_0x20b006,_0x32989b)[_0x38bf('0x1b')](function(_0x6a3a96){logger[_0x38bf('0x1c')](_0x38bf('0x1d'),_0x4e878b,_0x38bf('0x1e'));logger[_0x38bf('0x1f')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x4e878b,_0x38bf('0x1e'),JSON[_0x38bf('0x20')](_0x6a3a96));if(_0x6a3a96[_0x38bf('0x21')]){if(_0x6a3a96['error'][_0x38bf('0x22')]===0x1f4){logger[_0x38bf('0x21')](_0x38bf('0x1d'),_0x4e878b,_0x6a3a96[_0x38bf('0x21')]['message']);return _0x4fdea0(_0x6a3a96[_0x38bf('0x21')][_0x38bf('0x23')]);}logger['error'](_0x38bf('0x1d'),_0x4e878b,_0x6a3a96['error'][_0x38bf('0x23')]);return _0x318392(_0x6a3a96[_0x38bf('0x21')][_0x38bf('0x23')]);}else{logger['info'](_0x38bf('0x1d'),_0x4e878b,_0x38bf('0x1e'));_0x318392(_0x6a3a96[_0x38bf('0x24')]['message']);}})[_0x38bf('0x25')](function(_0x13dd57){logger[_0x38bf('0x21')]('ChatWebsite,\x20%s,\x20%s',_0x4e878b,_0x13dd57);_0x4fdea0(_0x13dd57);});});}function respondWithStatusCode(_0x25d29d,_0x4490f2){_0x4490f2=_0x4490f2||0xcc;return function(_0x4d56eb){if(_0x4d56eb){return _0x25d29d[_0x38bf('0x26')](_0x4490f2);}return _0x25d29d[_0x38bf('0x27')](_0x4490f2)[_0x38bf('0x28')]();};}function respondWithResult(_0x3ae57d,_0xa5e7d0){_0xa5e7d0=_0xa5e7d0||0xc8;return function(_0x64fd4d){if(_0x64fd4d){return _0x3ae57d[_0x38bf('0x27')](_0xa5e7d0)[_0x38bf('0x29')](_0x64fd4d);}};}function respondWithFilteredResult(_0x5d1f67,_0x4a20a6){return function(_0x5a0c93){if(_0x5a0c93){var _0x44386f=typeof _0x4a20a6[_0x38bf('0x2a')]===_0x38bf('0x2b')&&typeof _0x4a20a6[_0x38bf('0x2c')]===_0x38bf('0x2b');var _0x438d44=_0x5a0c93['count'];var _0x332006=_0x44386f?0x0:_0x4a20a6[_0x38bf('0x2a')];var _0x549975=_0x44386f?_0x5a0c93[_0x38bf('0x2d')]:_0x4a20a6[_0x38bf('0x2a')]+_0x4a20a6[_0x38bf('0x2c')];var _0x4e8e18;if(_0x549975>=_0x438d44){_0x549975=_0x438d44;_0x4e8e18=0xc8;}else{_0x4e8e18=0xce;}_0x5d1f67[_0x38bf('0x27')](_0x4e8e18);return _0x5d1f67['set'](_0x38bf('0x2e'),_0x332006+'-'+_0x549975+'/'+_0x438d44)[_0x38bf('0x29')](_0x5a0c93);}return null;};}function patchUpdates(_0x3aec94){return function(_0x551d58){try{jsonpatch[_0x38bf('0x2f')](_0x551d58,_0x3aec94,!![]);}catch(_0x30b161){return BPromise[_0x38bf('0x30')](_0x30b161);}return _0x551d58['save']();};}function saveUpdates(_0x299945,_0x151fa8){return function(_0x64ba55){if(_0x64ba55){return _0x64ba55['update'](_0x299945)[_0x38bf('0x1b')](function(_0xd73b0d){return _0xd73b0d;});}return null;};}function removeEntity(_0x5ce30c,_0x1b996a){return function(_0x3d567e){if(_0x3d567e){return _0x3d567e[_0x38bf('0x31')]()[_0x38bf('0x1b')](function(){var _0x27b2c2=_0x3d567e[_0x38bf('0x32')]({'plain':!![]});var _0x4b4bf6=_0x38bf('0x33');return db['UserProfileResource']['destroy']({'where':{'type':_0x4b4bf6,'resourceId':_0x27b2c2['id']}})[_0x38bf('0x1b')](function(){return _0x3d567e;});})['then'](function(){_0x5ce30c[_0x38bf('0x27')](0xcc)[_0x38bf('0x28')]();});}};}function handleEntityNotFound(_0x2a3dd7,_0x5831e1){return function(_0x114111){if(!_0x114111){_0x2a3dd7[_0x38bf('0x26')](0x194);}return _0x114111;};}function handleError(_0x1f997b,_0x5b1e14){_0x5b1e14=_0x5b1e14||0x1f4;return function(_0x188e4c){logger[_0x38bf('0x21')](_0x188e4c[_0x38bf('0x34')]);if(_0x188e4c['name']){delete _0x188e4c['name'];}_0x1f997b[_0x38bf('0x27')](_0x5b1e14)[_0x38bf('0x35')](_0x188e4c);};}exports[_0x38bf('0x36')]=function(_0x286f0d,_0x5ca72){var _0x21058d={'include':[{'model':db[_0x38bf('0x37')],'as':_0x38bf('0x38')}]},_0x286ab0={},_0x36b481={'count':0x0,'rows':[]};var _0x3deb3f=_[_0x38bf('0x39')](db['ChatWebsite'][_0x38bf('0x3a')],function(_0x338510){return{'name':_0x338510[_0x38bf('0x3b')],'type':_0x338510[_0x38bf('0x3c')][_0x38bf('0x3d')]};});_0x286ab0[_0x38bf('0x3e')]=_[_0x38bf('0x39')](_0x3deb3f,_0x38bf('0x3f'));_0x286ab0[_0x38bf('0x40')]=_[_0x38bf('0x41')](_0x286f0d[_0x38bf('0x40')]);_0x286ab0[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x286ab0[_0x38bf('0x3e')],_0x286ab0[_0x38bf('0x40')]);_0x21058d[_0x38bf('0x44')]=_['intersection'](_0x286ab0[_0x38bf('0x3e')],qs['fields'](_0x286f0d[_0x38bf('0x40')][_0x38bf('0x45')]));_0x21058d['attributes']=_0x21058d['attributes']['length']?_0x21058d[_0x38bf('0x44')]:_0x286ab0['model'];if(!_0x286f0d[_0x38bf('0x40')][_0x38bf('0x46')](_0x38bf('0x47'))){_0x21058d[_0x38bf('0x2c')]=qs[_0x38bf('0x2c')](_0x286f0d[_0x38bf('0x40')][_0x38bf('0x2c')]);_0x21058d[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0x286f0d[_0x38bf('0x40')][_0x38bf('0x2a')]);}_0x21058d['order']=qs[_0x38bf('0x48')](_0x286f0d[_0x38bf('0x40')]['sort']);_0x21058d[_0x38bf('0x49')]=qs[_0x38bf('0x42')](_[_0x38bf('0x4a')](_0x286f0d[_0x38bf('0x40')],_0x286ab0[_0x38bf('0x42')]),_0x3deb3f);if(_0x286f0d[_0x38bf('0x40')]['filter']){_0x21058d[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x21058d[_0x38bf('0x49')],{'$or':_['map'](_0x3deb3f,function(_0x4dc238){if(_0x4dc238[_0x38bf('0x3c')]!==_0x38bf('0x4c')){var _0x3dd8e8={};_0x3dd8e8[_0x4dc238[_0x38bf('0x3f')]]={'$like':'%'+_0x286f0d['query'][_0x38bf('0x4d')]+'%'};return _0x3dd8e8;}})});}_0x21058d=_[_0x38bf('0x4b')]({},_0x21058d,_0x286f0d['options']);var _0x51ac3b={'where':_0x21058d[_0x38bf('0x49')]};return db[_0x38bf('0x4e')][_0x38bf('0x2d')](_0x51ac3b)[_0x38bf('0x1b')](function(_0xd13873){_0x36b481[_0x38bf('0x2d')]=_0xd13873;if(_0x286f0d['query'][_0x38bf('0x4f')]){_0x21058d[_0x38bf('0x50')]=[{'all':!![]}];}return db[_0x38bf('0x4e')][_0x38bf('0x51')](_0x21058d);})[_0x38bf('0x1b')](function(_0x4f00dd){_0x36b481[_0x38bf('0x52')]=_0x4f00dd;return _0x36b481;})[_0x38bf('0x1b')](respondWithFilteredResult(_0x5ca72,_0x21058d))[_0x38bf('0x25')](handleError(_0x5ca72,null));};exports['show']=function(_0x31ebbc,_0x1face4){var _0x517f61={'raw':![],'where':{'id':_0x31ebbc[_0x38bf('0x53')]['id']},'include':[{'model':db[_0x38bf('0x37')],'as':_0x38bf('0x38')}]},_0x229b46={};_0x229b46[_0x38bf('0x3e')]=_[_0x38bf('0x41')](db['ChatWebsite'][_0x38bf('0x3a')]);_0x229b46[_0x38bf('0x40')]=_['keys'](_0x31ebbc[_0x38bf('0x40')]);_0x229b46[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x229b46[_0x38bf('0x3e')],_0x229b46['query']);_0x517f61[_0x38bf('0x44')]=_[_0x38bf('0x43')](_0x229b46['model'],qs[_0x38bf('0x45')](_0x31ebbc[_0x38bf('0x40')][_0x38bf('0x45')]));_0x517f61[_0x38bf('0x44')]=_0x517f61[_0x38bf('0x44')][_0x38bf('0x54')]?_0x517f61[_0x38bf('0x44')]:_0x229b46['model'];if(_0x31ebbc[_0x38bf('0x40')]['includeAll']){_0x517f61[_0x38bf('0x50')]=[{'all':!![]}];}_0x517f61=_[_0x38bf('0x4b')]({},_0x517f61,_0x31ebbc[_0x38bf('0x55')]);return db['ChatWebsite']['find'](_0x517f61)[_0x38bf('0x1b')](handleEntityNotFound(_0x1face4,null))['then'](respondWithResult(_0x1face4,null))[_0x38bf('0x25')](handleError(_0x1face4,null));};exports[_0x38bf('0x56')]=function(_0x381ea6,_0x5b0a5f){return db['ChatWebsite'][_0x38bf('0x56')](_0x381ea6[_0x38bf('0x57')],{})[_0x38bf('0x1b')](function(_0x3f3798){var _0x68921c=_0x381ea6['user'][_0x38bf('0x32')]({'plain':!![]});if(!_0x68921c)throw new Error(_0x38bf('0x58'));if(_0x68921c['role']===_0x38bf('0x59')){var _0x216eec=_0x3f3798[_0x38bf('0x32')]({'plain':!![]});var _0x2ed526=_0x38bf('0x33');return db[_0x38bf('0x5a')]['find']({'where':{'name':_0x2ed526,'userProfileId':_0x68921c[_0x38bf('0x5b')]},'raw':!![]})[_0x38bf('0x1b')](function(_0xf96d2e){if(_0xf96d2e&&_0xf96d2e[_0x38bf('0x5c')]===0x0){return db[_0x38bf('0x5d')][_0x38bf('0x56')]({'name':_0x216eec[_0x38bf('0x3f')],'resourceId':_0x216eec['id'],'type':_0xf96d2e[_0x38bf('0x3f')],'sectionId':_0xf96d2e['id']},{})['then'](function(){return _0x3f3798;});}else{return _0x3f3798;}})['catch'](function(_0x2c93b2){logger[_0x38bf('0x21')](_0x38bf('0x5e'),_0x2c93b2);throw _0x2c93b2;});}return _0x3f3798;})[_0x38bf('0x1b')](respondWithResult(_0x5b0a5f,0xc9))['catch'](handleError(_0x5b0a5f,null));};exports[_0x38bf('0x5f')]=function(_0x5853d6,_0x1b1443){if(_0x5853d6[_0x38bf('0x57')]['id']){delete _0x5853d6[_0x38bf('0x57')]['id'];}return db[_0x38bf('0x4e')]['find']({'where':{'id':_0x5853d6[_0x38bf('0x53')]['id']},'include':[{'model':db['Pause'],'as':_0x38bf('0x38')}]})[_0x38bf('0x1b')](handleEntityNotFound(_0x1b1443,null))[_0x38bf('0x1b')](saveUpdates(_0x5853d6['body'],null))['then'](respondWithResult(_0x1b1443,null))[_0x38bf('0x25')](handleError(_0x1b1443,null));};exports[_0x38bf('0x31')]=function(_0x4c7921,_0x1b2b4a){return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x4c7921['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x1b2b4a,null))[_0x38bf('0x1b')](removeEntity(_0x1b2b4a,null))['catch'](handleError(_0x1b2b4a,null));};exports[_0x38bf('0x61')]=function(_0x4e590e,_0x69c721){return db[_0x38bf('0x4e')]['describe']()[_0x38bf('0x1b')](respondWithResult(_0x69c721,null))[_0x38bf('0x25')](handleError(_0x69c721,null));};exports[_0x38bf('0x62')]=function(_0x30babd,_0x5b7c96,_0x13127b){if(_0x30babd[_0x38bf('0x57')]['id']){delete _0x30babd[_0x38bf('0x57')]['id'];}return db[_0x38bf('0x4e')][_0x38bf('0x60')]({'where':{'id':_0x30babd[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x5b7c96,null))['then'](function(_0x59cdb2){if(_0x59cdb2){_0x30babd[_0x38bf('0x57')]['ChatWebsiteId']=_0x59cdb2['id'];return db['Disposition']['create'](_0x30babd['body']);}})[_0x38bf('0x1b')](respondWithResult(_0x5b7c96,null))[_0x38bf('0x25')](handleError(_0x5b7c96,null));};exports[_0x38bf('0x63')]=function(_0x3ae304,_0x47abfd,_0x5642dc){var _0x2ffc42={'raw':![],'where':{}};var _0x568d7b={};var _0x10ac87={'count':0x0,'rows':[]};return db[_0x38bf('0x4e')]['findOne']({'where':{'id':_0x3ae304[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x47abfd,null))[_0x38bf('0x1b')](function(_0x1dbf5b){if(_0x1dbf5b){_0x568d7b[_0x38bf('0x3e')]=_['keys'](db['Disposition'][_0x38bf('0x3a')]);_0x568d7b['query']=_[_0x38bf('0x41')](_0x3ae304['query']);_0x568d7b[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x568d7b[_0x38bf('0x3e')],_0x568d7b[_0x38bf('0x40')]);_0x2ffc42[_0x38bf('0x44')]=_[_0x38bf('0x43')](_0x568d7b[_0x38bf('0x3e')],qs[_0x38bf('0x45')](_0x3ae304[_0x38bf('0x40')][_0x38bf('0x45')]));_0x2ffc42[_0x38bf('0x44')]=_0x2ffc42[_0x38bf('0x44')][_0x38bf('0x54')]?_0x2ffc42[_0x38bf('0x44')]:_0x568d7b[_0x38bf('0x3e')];if(!_0x3ae304[_0x38bf('0x40')][_0x38bf('0x46')](_0x38bf('0x47'))){_0x2ffc42[_0x38bf('0x2c')]=qs['limit'](_0x3ae304[_0x38bf('0x40')][_0x38bf('0x2c')]);_0x2ffc42['offset']=qs['offset'](_0x3ae304[_0x38bf('0x40')][_0x38bf('0x2a')]);}_0x2ffc42[_0x38bf('0x64')]=qs['sort'](_0x3ae304['query']['sort']);_0x2ffc42[_0x38bf('0x49')]=qs['filters'](_[_0x38bf('0x4a')](_0x3ae304['query'],_0x568d7b[_0x38bf('0x42')]));_0x2ffc42[_0x38bf('0x49')][_0x38bf('0x65')]=_0x1dbf5b['id'];if(_0x3ae304[_0x38bf('0x40')][_0x38bf('0x4d')]){_0x2ffc42[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x2ffc42[_0x38bf('0x49')],{'$or':_['map'](_0x2ffc42[_0x38bf('0x44')],function(_0x2f22ce){var _0x2f17c3={};_0x2f17c3[_0x2f22ce]={'$like':'%'+_0x3ae304[_0x38bf('0x40')][_0x38bf('0x4d')]+'%'};return _0x2f17c3;})});}_0x2ffc42=_[_0x38bf('0x4b')]({},_0x2ffc42,_0x3ae304[_0x38bf('0x55')]);return db['Disposition']['count']({'where':_0x2ffc42[_0x38bf('0x49')]})[_0x38bf('0x1b')](function(_0x2cfeca){_0x10ac87['count']=_0x2cfeca;if(_0x3ae304[_0x38bf('0x40')][_0x38bf('0x4f')]){_0x2ffc42['include']=[{'all':!![]}];}return db[_0x38bf('0x66')][_0x38bf('0x51')](_0x2ffc42);})[_0x38bf('0x1b')](function(_0x5e9378){_0x10ac87[_0x38bf('0x52')]=_0x5e9378;return _0x10ac87;});}})[_0x38bf('0x1b')](respondWithFilteredResult(_0x47abfd,_0x2ffc42))[_0x38bf('0x25')](handleError(_0x47abfd,null));};exports[_0x38bf('0x67')]=function(_0x4022ea,_0x1914a2,_0x3531f1){return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x4022ea[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x1914a2,null))[_0x38bf('0x1b')](function(_0x178d1d){if(_0x178d1d){return _0x178d1d[_0x38bf('0x67')](_0x4022ea[_0x38bf('0x40')][_0x38bf('0x68')]);}})[_0x38bf('0x1b')](respondWithStatusCode(_0x1914a2,null))['catch'](handleError(_0x1914a2,null));};exports[_0x38bf('0x69')]=function(_0x3e7d6a,_0x2a6a74,_0x3f8987){if(_0x3e7d6a['body']['id']){delete _0x3e7d6a[_0x38bf('0x57')]['id'];}return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x3e7d6a['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x2a6a74,null))[_0x38bf('0x1b')](function(_0x496c76){if(_0x496c76){_0x3e7d6a[_0x38bf('0x57')][_0x38bf('0x65')]=_0x496c76['id'];return db[_0x38bf('0x6a')][_0x38bf('0x56')](_0x3e7d6a[_0x38bf('0x57')]);}})['then'](respondWithResult(_0x2a6a74,null))[_0x38bf('0x25')](handleError(_0x2a6a74,null));};exports[_0x38bf('0x6b')]=function(_0x1add4a,_0xc1437a,_0x5c5436){var _0x27db9f={'raw':![],'where':{}};var _0x5ab73e={};var _0x329827={'count':0x0,'rows':[]};return db[_0x38bf('0x4e')][_0x38bf('0x6c')]({'where':{'id':_0x1add4a['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0xc1437a,null))[_0x38bf('0x1b')](function(_0x486316){if(_0x486316){_0x5ab73e['model']=_[_0x38bf('0x41')](db[_0x38bf('0x6a')][_0x38bf('0x3a')]);_0x5ab73e[_0x38bf('0x40')]=_[_0x38bf('0x41')](_0x1add4a[_0x38bf('0x40')]);_0x5ab73e[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x5ab73e[_0x38bf('0x3e')],_0x5ab73e[_0x38bf('0x40')]);_0x27db9f[_0x38bf('0x44')]=_[_0x38bf('0x43')](_0x5ab73e['model'],qs[_0x38bf('0x45')](_0x1add4a[_0x38bf('0x40')][_0x38bf('0x45')]));_0x27db9f[_0x38bf('0x44')]=_0x27db9f['attributes'][_0x38bf('0x54')]?_0x27db9f[_0x38bf('0x44')]:_0x5ab73e['model'];if(!_0x1add4a['query'][_0x38bf('0x46')](_0x38bf('0x47'))){_0x27db9f[_0x38bf('0x2c')]=qs['limit'](_0x1add4a[_0x38bf('0x40')][_0x38bf('0x2c')]);_0x27db9f[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0x1add4a['query']['offset']);}_0x27db9f[_0x38bf('0x64')]=qs[_0x38bf('0x48')](_0x1add4a['query'][_0x38bf('0x48')]);_0x27db9f[_0x38bf('0x49')]=qs[_0x38bf('0x42')](_[_0x38bf('0x4a')](_0x1add4a[_0x38bf('0x40')],_0x5ab73e['filters']));_0x27db9f[_0x38bf('0x49')][_0x38bf('0x65')]=_0x486316['id'];if(_0x1add4a[_0x38bf('0x40')][_0x38bf('0x4d')]){_0x27db9f[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x27db9f[_0x38bf('0x49')],{'$or':_[_0x38bf('0x39')](_0x27db9f[_0x38bf('0x44')],function(_0x51c81b){var _0x11bcc1={};_0x11bcc1[_0x51c81b]={'$like':'%'+_0x1add4a['query']['filter']+'%'};return _0x11bcc1;})});}_0x27db9f=_[_0x38bf('0x4b')]({},_0x27db9f,_0x1add4a[_0x38bf('0x55')]);return db[_0x38bf('0x6a')]['count']({'where':_0x27db9f[_0x38bf('0x49')]})['then'](function(_0x2780e7){_0x329827[_0x38bf('0x2d')]=_0x2780e7;if(_0x1add4a['query']['includeAll']){_0x27db9f[_0x38bf('0x50')]=[{'all':!![]}];}return db[_0x38bf('0x6a')][_0x38bf('0x51')](_0x27db9f);})[_0x38bf('0x1b')](function(_0x485138){_0x329827['rows']=_0x485138;return _0x329827;});}})[_0x38bf('0x1b')](respondWithFilteredResult(_0xc1437a,_0x27db9f))[_0x38bf('0x25')](handleError(_0xc1437a,null));};exports[_0x38bf('0x6d')]=function(_0x4e8b4d,_0x3fb19b,_0x2e1537){return db[_0x38bf('0x4e')]['find']({'where':{'id':_0x4e8b4d[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x3fb19b,null))[_0x38bf('0x1b')](function(_0x322602){if(_0x322602){return _0x322602[_0x38bf('0x6d')](_0x4e8b4d[_0x38bf('0x40')][_0x38bf('0x68')]);}})[_0x38bf('0x1b')](respondWithStatusCode(_0x3fb19b,null))[_0x38bf('0x25')](handleError(_0x3fb19b,null));};exports[_0x38bf('0x6e')]=function(_0x14da61,_0x368ee6,_0x253d41){_0x14da61[_0x38bf('0x57')][_0x38bf('0x6f')]=_0x14da61[_0x38bf('0x70')][_0x38bf('0x71')];return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x14da61[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x368ee6,null))[_0x38bf('0x1b')](saveUpdates(_0x14da61[_0x38bf('0x57')],null))[_0x38bf('0x1b')](respondWithResult(_0x368ee6,null))['catch'](handleError(_0x368ee6,null));};exports[_0x38bf('0x72')]=function(_0x2ad270,_0x471e7b,_0x24af1d){_0x2ad270[_0x38bf('0x57')][_0x38bf('0x73')]=_0x2ad270[_0x38bf('0x70')][_0x38bf('0x71')];return db[_0x38bf('0x4e')][_0x38bf('0x60')]({'where':{'id':_0x2ad270[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x471e7b,null))[_0x38bf('0x1b')](saveUpdates(_0x2ad270[_0x38bf('0x57')],null))[_0x38bf('0x1b')](respondWithResult(_0x471e7b,null))[_0x38bf('0x25')](handleError(_0x471e7b,null));};exports[_0x38bf('0x74')]=function(_0xd4b029,_0x23f94e,_0x435c31){_0xd4b029[_0x38bf('0x57')][_0x38bf('0x75')]=_0xd4b029[_0x38bf('0x70')][_0x38bf('0x71')];return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0xd4b029['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x23f94e,null))[_0x38bf('0x1b')](saveUpdates(_0xd4b029['body'],null))[_0x38bf('0x1b')](respondWithResult(_0x23f94e,null))[_0x38bf('0x25')](handleError(_0x23f94e,null));};exports[_0x38bf('0x76')]=function(_0x222a79,_0x37caeb,_0x22d874){_0x222a79['body'][_0x38bf('0x77')]=_0x222a79[_0x38bf('0x70')][_0x38bf('0x71')];return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x222a79['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x37caeb,null))[_0x38bf('0x1b')](saveUpdates(_0x222a79[_0x38bf('0x57')],null))[_0x38bf('0x1b')](respondWithResult(_0x37caeb,null))['catch'](handleError(_0x37caeb,null));};exports[_0x38bf('0x78')]=function(_0x536592,_0x5d91b3,_0x1fd675){var _0x5ef95a=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0x7b'));var _0x1c0b2a={'where':{'id':_0x536592[_0x38bf('0x53')]['id']},'attributes':['id',_0x38bf('0x6f')],'raw':!![]};var _0x36df98=![];return require(_0x38bf('0x7c'))[_0x38bf('0x7d')]()['then'](function(_0x1b3505){if(_0x1b3505){_0x36df98=_0x1b3505[_0x38bf('0x7e')];}})[_0x38bf('0x1b')](function(){return db['ChatWebsite']['find'](_0x1c0b2a);})[_0x38bf('0x1b')](handleEntityNotFound(_0x5d91b3,null))[_0x38bf('0x1b')](function(_0x1b1160){if(_0x1b1160){if(!_['isNil'](_0x1b1160[_0x38bf('0x6f')])){if(fs[_0x38bf('0x7f')](path[_0x38bf('0x79')](config['root'],_0x38bf('0x80'),_0x1b1160[_0x38bf('0x6f')]))&&_0x36df98){_0x5ef95a=path[_0x38bf('0x79')](config['root'],_0x38bf('0x80'),_0x1b1160[_0x38bf('0x6f')]);}}return _0x5d91b3[_0x38bf('0x81')](_0x5ef95a);}})[_0x38bf('0x25')](handleError(_0x5d91b3,null));};exports['getAvatar']=function(_0xe428cc,_0xa11a0c,_0x498cdd){var _0x3c7e53=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],'server/files/images/avatars/default_avatar.png');var _0x456834={'where':{'id':_0xe428cc[_0x38bf('0x53')]['id']},'attributes':['id',_0x38bf('0x73')],'raw':!![]};return db[_0x38bf('0x4e')][_0x38bf('0x60')](_0x456834)[_0x38bf('0x1b')](handleEntityNotFound(_0xa11a0c,null))[_0x38bf('0x1b')](function(_0x3c941d){if(_0x3c941d){if(!_[_0x38bf('0x82')](_0x3c941d['agentAvatar'])){if(fs[_0x38bf('0x7f')](path[_0x38bf('0x79')](config[_0x38bf('0x7a')],'server/files/images/avatars/',_0x3c941d[_0x38bf('0x73')]))){_0x3c7e53=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0x83'),_0x3c941d[_0x38bf('0x73')]);}}return _0xa11a0c[_0x38bf('0x81')](_0x3c7e53);}})[_0x38bf('0x25')](handleError(_0xa11a0c,null));};exports[_0x38bf('0x84')]=function(_0x2694e5,_0x4ee75f,_0x409283){var _0x3c0005=path['join'](config[_0x38bf('0x7a')],'server/files/images/avatars/customer_avatar.png');var _0x1ea6e8={'where':{'id':_0x2694e5[_0x38bf('0x53')]['id']},'attributes':['id',_0x38bf('0x75'),_0x38bf('0x85')],'raw':!![]};return db[_0x38bf('0x4e')]['find'](_0x1ea6e8)[_0x38bf('0x1b')](handleEntityNotFound(_0x4ee75f,null))[_0x38bf('0x1b')](function(_0x3c5193){if(_0x3c5193){if(!_[_0x38bf('0x82')](_0x3c5193['customerAvatar'])){if(fs[_0x38bf('0x7f')](path['join'](config['root'],'server/files/images/avatars/',_0x3c5193['customerAvatar']))&&_0x3c5193[_0x38bf('0x85')]){_0x3c0005=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0x83'),_0x3c5193[_0x38bf('0x75')]);}}return _0x4ee75f['download'](_0x3c0005);}})['catch'](handleError(_0x4ee75f,null));};exports['getSystemAvatar']=function(_0x8899f2,_0xc1cc8b,_0x3a42a7){var _0x1561ac=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0x86'));var _0x2df6e2={'where':{'id':_0x8899f2[_0x38bf('0x53')]['id']},'attributes':['id',_0x38bf('0x77')],'raw':!![]};return db[_0x38bf('0x4e')][_0x38bf('0x60')](_0x2df6e2)[_0x38bf('0x1b')](handleEntityNotFound(_0xc1cc8b,null))['then'](function(_0x4852f9){if(_0x4852f9){if(!_[_0x38bf('0x82')](_0x4852f9[_0x38bf('0x77')])){if(fs[_0x38bf('0x7f')](path['join'](config[_0x38bf('0x7a')],_0x38bf('0x83'),_0x4852f9[_0x38bf('0x77')]))){_0x1561ac=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0x83'),_0x4852f9[_0x38bf('0x77')]);}}return _0xc1cc8b[_0x38bf('0x81')](_0x1561ac);}})[_0x38bf('0x25')](handleError(_0xc1cc8b,null));};exports[_0x38bf('0x87')]=function(_0x3d2e1b,_0x2bfdeb,_0x546830){var _0x1171dd=require(_0x38bf('0x88'));var _0x30fb88=new _0x1171dd();var _0x449757=_0x30fb88[_0x38bf('0x89')](_0x3d2e1b[_0x38bf('0x8a')][_0x38bf('0x8b')])[_0x38bf('0x8c')]();var _0x4328e8={'body':_0x3d2e1b[_0x38bf('0x57')],'channel':_0x38bf('0x8d')};var _0xb494f9=[];var _0x3c00a3=[];var _0x543a02={};var _0x183256=![];return db[_0x38bf('0x8e')]['describe']()[_0x38bf('0x1b')](function(_0xd8739e){if(!_0xd8739e){throw new db[(_0x38bf('0x8f'))][(_0x38bf('0x90'))](_0x38bf('0x91'));}_0xb494f9=_['difference'](_['keys'](_0xd8739e),[_0x38bf('0x92'),'updatedAt']);_0x3c00a3=_[_0x38bf('0x93')](_['keys'](_0xd8739e),[_0x38bf('0x92'),_0x38bf('0x94'),_0x38bf('0x95'),_0x38bf('0x96')]);if(_0x3d2e1b[_0x38bf('0x57')]['id']){delete _0x3d2e1b[_0x38bf('0x57')]['id'];}if(_[_0x38bf('0x82')](_0x3d2e1b['body'][_0x38bf('0x97')])){throw new db['Sequelize'][(_0x38bf('0x90'))](_0x38bf('0x98'));}if(_[_0x38bf('0x82')](_0x3d2e1b[_0x38bf('0x57')]['body'])||_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0x57')]===''){throw new db[(_0x38bf('0x8f'))][(_0x38bf('0x90'))](_0x38bf('0x99'));}if(_[_0x38bf('0x82')](_0x3d2e1b[_0x38bf('0x57')]['mapKey'])){throw new db[(_0x38bf('0x8f'))][(_0x38bf('0x90'))](_0x38bf('0x9a')+_0x3c00a3);}if(!_[_0x38bf('0x9b')](_0x3c00a3,_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0x9c')])){throw new db['Sequelize'][(_0x38bf('0x90'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3c00a3);}_0x543a02[_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0x9c')]]=_0x3d2e1b[_0x38bf('0x57')]['from'];})[_0x38bf('0x1b')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x3d2e1b[_0x38bf('0x53')]['id']},'include':[{'model':db[_0x38bf('0x9d')],'as':_0x38bf('0x9e'),'include':[{'model':db[_0x38bf('0x8e')],'as':_0x38bf('0x9f'),'where':_0x543a02,'limit':0x1,'order':[[_0x38bf('0x94'),_0x38bf('0xa0')]]}]},{'model':db[_0x38bf('0xa1')],'as':_0x38bf('0xa2')}]});})['then'](handleEntityNotFound(_0x2bfdeb,null))[_0x38bf('0x1b')](function(_0xa194e){if(_0xa194e&&_0xa194e[_0x38bf('0x9e')]){_0x4328e8[_0x38bf('0xa3')]=_0xa194e;_0x4328e8[_0x38bf('0xa4')]=_0xa194e[_0x38bf('0xa2')];_0x4328e8[_0x38bf('0xa5')]=_0xa194e[_0x38bf('0x9e')];_0x4328e8['applications']=_[_0x38bf('0xa6')](_0x4328e8[_0x38bf('0xa4')],['priority'],['asc']);if(_0x4328e8['account'][_0x38bf('0xa2')]){delete _0x4328e8[_0x38bf('0xa3')][_0x38bf('0xa2')];}if(_0x4328e8[_0x38bf('0xa3')][_0x38bf('0x9e')]&&_0x4328e8[_0x38bf('0xa3')]['List']['Contacts'][_0x38bf('0x54')]){return _0x4328e8[_0x38bf('0xa3')]['List'][_0x38bf('0x9f')][0x0];}var _0x1f6e49=_[_0x38bf('0xa7')](_0x3d2e1b[_0x38bf('0x57')],{'firstName':_0x3d2e1b['body']['from'],'ListId':_0xa194e['ListId']});_0x1f6e49[_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0x9c')]]=_0x3d2e1b['body'][_0x38bf('0x97')];return db[_0x38bf('0x8e')][_0x38bf('0x56')](_0x1f6e49,{'fields':_0xb494f9,'raw':!![]});}})[_0x38bf('0x1b')](handleEntityNotFound(_0x2bfdeb,null))[_0x38bf('0x1b')](function(_0x5d3a27){_0x4328e8[_0x38bf('0xa8')]=_0x5d3a27;var _0x11fa9d=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xa9')];if(_0x3d2e1b[_0x38bf('0x8a')][_0x38bf('0xaa')]){_0x11fa9d=_0x3d2e1b[_0x38bf('0x8a')][_0x38bf('0xaa')];}else if(_0x3d2e1b[_0x38bf('0x8a')][_0x38bf('0xab')]){_0x11fa9d=_[_0x38bf('0xac')](_0x3d2e1b[_0x38bf('0x8a')][_0x38bf('0xab')]['split'](','));}if(_0x5d3a27){var _0x4e69aa={'ContactId':_0x5d3a27['id'],'ChatWebsiteId':_0x3d2e1b['params']['id'],'from':(_0x5d3a27[_0x38bf('0xad')]||'')+'\x20'+(_0x5d3a27[_0x38bf('0xae')]||''),'customerIp':_0x11fa9d,'customerPort':_0x3d2e1b['headers']['x-real-port']?_0x3d2e1b['headers'][_0x38bf('0xaf')]:null,'referer':_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xb0')],'browserName':_0x449757[_0x38bf('0xb1')][_0x38bf('0x3f')]&&_0x449757['browser']['version']?util[_0x38bf('0xb2')]('%s\x20%s',_0x449757['browser']['name'],_0x449757['browser']['version']):'unknown','browserVersion':_0x449757[_0x38bf('0xb1')][_0x38bf('0xb3')]||_0x38bf('0xb4'),'osName':util['format'](_0x38bf('0xb5'),_0x449757['os'][_0x38bf('0x3f')],_0x449757['os'][_0x38bf('0xb3')]),'osVersion':_0x449757['os']['version'],'deviceModel':_0x449757[_0x38bf('0xb6')][_0x38bf('0x3e')]&&_0x449757['device']['vendor']?util[_0x38bf('0xb2')](_0x38bf('0xb7'),_0x449757[_0x38bf('0xb6')][_0x38bf('0x3e')],_0x449757[_0x38bf('0xb6')]['vendor'],_0x449757[_0x38bf('0xb6')][_0x38bf('0x3c')]):null,'deviceVendor':_0x449757[_0x38bf('0xb6')][_0x38bf('0xb8')],'deviceType':_0x449757[_0x38bf('0xb6')][_0x38bf('0x3c')],'formData':JSON[_0x38bf('0x20')](_0x3d2e1b[_0x38bf('0x57')])};var _0x2e47d1={'ChatWebsiteId':_0x3d2e1b['params']['id'],'closed':![]};if(_0x3d2e1b[_0x38bf('0x57')]['threadId']){_0x2e47d1[_0x38bf('0xb9')]=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xb9')];return db[_0x38bf('0xba')][_0x38bf('0x60')]({'where':_0x2e47d1})['then'](function(_0x4e24b4){if(_0x4e24b4){return[_0x4e24b4,![]];}_0x4e69aa[_0x38bf('0xb9')]=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xb9')];_0x4e69aa[_0x38bf('0xbb')]=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xbb')];return db['ChatInteraction'][_0x38bf('0x56')](_0x4e69aa)[_0x38bf('0x1b')](function(_0xceef66){return[_0xceef66,!![]];});});}_0x2e47d1[_0x38bf('0xbc')]=_0x5d3a27['id'];if(_0x3d2e1b['body']['interaction']&&_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xbd')]['id']){_0x2e47d1['id']=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xbd')]['id'];return db[_0x38bf('0xba')][_0x38bf('0x60')]({'where':_0x2e47d1})[_0x38bf('0x1b')](function(_0x4711c7){if(_0x4711c7){return[_0x4711c7,![]];}return db[_0x38bf('0xba')][_0x38bf('0x56')](_0x4e69aa)['then'](function(_0x2e3806){return[_0x2e3806,!![]];});});}return db[_0x38bf('0xba')][_0x38bf('0x56')](_0x4e69aa)['then'](function(_0x150883){return[_0x150883,!![]];});}})[_0x38bf('0xbe')](function(_0x1a1ba4,_0xd5033e){if(_0x1a1ba4){_0x183256=_0xd5033e;if(!_0xd5033e){var _0x1e071b={'from':(_0x4328e8[_0x38bf('0xa8')][_0x38bf('0xad')]||'')+'\x20'+(_0x4328e8[_0x38bf('0xa8')]['lastName']||'')};if(_0x3d2e1b['body'][_0x38bf('0xb9')]&&_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xbf')]&&_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xb9')]!=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xbf')]){_0x1e071b['threadId']=_0x3d2e1b[_0x38bf('0x57')][_0x38bf('0xbf')];}return _0x1a1ba4[_0x38bf('0x5f')](_0x1e071b);}else{return _0x1a1ba4;}}})[_0x38bf('0x1b')](function(_0x50399a){_0x4328e8[_0x38bf('0xbd')]=_0x50399a[_0x38bf('0x32')]({'plain':!![]});_0x4328e8['interaction']['created']=_0x183256;if(_0x4328e8[_0x38bf('0xbd')]['created']){if(_0x4328e8[_0x38bf('0xa3')][_0x38bf('0xc0')]){_0x4328e8[_0x38bf('0xa4')]['push']({'id':0x0,'priority':_0x4328e8[_0x38bf('0xa4')]['length']+0x1,'app':_0x38bf('0xc1'),'appdata':_0x38bf('0xc2'),'interval':_0x38bf('0xc3')});}}return db[_0x38bf('0xc4')][_0x38bf('0x56')]({'body':_0x3d2e1b['body'][_0x38bf('0x57')],'ChatWebsiteId':_0x3d2e1b[_0x38bf('0x53')]['id'],'ChatInteractionId':_0x50399a['id'],'direction':'in','ContactId':_0x4328e8['contact']['id'],'AttachmentId':_0x3d2e1b['body'][_0x38bf('0xc5')]});})[_0x38bf('0x1b')](function(_0x1f60b6){_0x4328e8[_0x38bf('0x23')]=_0x1f60b6;if(_0x4328e8[_0x38bf('0xbd')]['UserId']){return db[_0x38bf('0xc6')][_0x38bf('0x60')]({'attributes':['id',_0x38bf('0x3f')],'where':{'id':_0x4328e8[_0x38bf('0xbd')][_0x38bf('0xc7')]}})[_0x38bf('0x1b')](function(_0x5b9f1a){if(_0x5b9f1a){_0x4328e8[_0x38bf('0xa4')][_0x38bf('0xc8')]({'id':0x0,'priority':0x0,'app':_0x38bf('0xc9'),'appdata':_0x5b9f1a[_0x38bf('0x3f')]+','+(_0x4328e8[_0x38bf('0xa3')][_0x38bf('0xca')]||0xa),'interval':_0x38bf('0xc3')});_0x4328e8[_0x38bf('0xcb')]=!![];}return respondWithRpcPromise('Start','startRouting',_0x4328e8);});}return respondWithRpcPromise(_0x38bf('0xcc'),'startRouting',_0x4328e8);})[_0x38bf('0x1b')](function(_0x5b43c8){respondWithRpcPromise('EventManager',_0x38bf('0xcd'),{'event':'notify','message':_0x5b43c8},client9002);return _0x5b43c8;})['then'](respondWithResult(_0x2bfdeb,null))[_0x38bf('0x25')](handleError(_0x2bfdeb,null));};exports[_0x38bf('0xce')]=function(_0x1bd92b,_0x1c46f8,_0x1b4b17){var _0x10ff55,_0x52c196,_0x50a557;var _0x488d51=[];var _0x491cfd=[];var _0x436f85={};var _0x805232=_0x1bd92b[_0x38bf('0xcf')]||[];var _0x408651=[];var _0x848f03;return db['CmContact'][_0x38bf('0x61')]()[_0x38bf('0x1b')](function(_0x339858){if(!_0x339858){throw new db[(_0x38bf('0x8f'))][(_0x38bf('0x90'))]('no\x20available\x20attributes');}_0x491cfd=_['difference'](_[_0x38bf('0x41')](_0x339858),[_0x38bf('0x92'),_0x38bf('0x94')]);_0x488d51=_[_0x38bf('0x93')](_[_0x38bf('0x41')](_0x339858),[_0x38bf('0x92'),_0x38bf('0x94'),_0x38bf('0x95'),_0x38bf('0x96')]);if(_0x1bd92b[_0x38bf('0x57')]['id']){delete _0x1bd92b[_0x38bf('0x57')]['id'];}if(_[_0x38bf('0x82')](_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x97')])){throw _0x1c46f8[_0x38bf('0x27')](0x1f4)['send'](new db[(_0x38bf('0x8f'))][(_0x38bf('0x90'))](_0x38bf('0x98')));}if(_[_0x38bf('0x82')](_0x1bd92b[_0x38bf('0x57')]['body'])||_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x57')]===''){throw _0x1c46f8[_0x38bf('0x27')](0x1f4)[_0x38bf('0x35')](new db[(_0x38bf('0x8f'))][(_0x38bf('0x90'))](_0x38bf('0x99')));}if(_[_0x38bf('0x82')](_0x1bd92b[_0x38bf('0x57')][_0x38bf('0xd0')])){throw _0x1c46f8[_0x38bf('0x27')](0x1f4)['send'](new db['Sequelize'][(_0x38bf('0x90'))](_0x38bf('0xd1')+_0x488d51));}if(!_['includes'](_0x488d51,_0x1bd92b['body']['mapKeyOffline'])){throw _0x1c46f8['status'](0x1f4)['send'](new db['Sequelize'][(_0x38bf('0x90'))](_0x38bf('0xd2')+_0x488d51));}_0x436f85[_0x1bd92b[_0x38bf('0x57')][_0x38bf('0xd0')]]=_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x97')];})['then'](function(){return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x1bd92b[_0x38bf('0x53')]['id']},'include':[{'model':db['CmList'],'as':_0x38bf('0x9e')},{'model':db[_0x38bf('0xd3')],'as':'MailAccount'}]});})[_0x38bf('0x1b')](handleEntityNotFound(_0x1c46f8,null))[_0x38bf('0x1b')](function(_0x397cec){if(_0x397cec&&_0x397cec[_0x38bf('0x9e')]){_0x52c196=_0x397cec;var _0x40378e=_['defaults'](_0x1bd92b[_0x38bf('0x57')],{'firstName':_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x97')],'phone':_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x97')],'ListId':_0x397cec['ListId']});_0x40378e[_0x1bd92b['body']['mapKeyOffline']]=_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x97')];return db[_0x38bf('0x8e')]['findOrCreate']({'where':_0x436f85,'defaults':_0x40378e});}})[_0x38bf('0xbe')](function(_0x2925f4){if(_0x2925f4){_0x50a557=_0x2925f4;var _0xba032d=fs['readFileSync'](path[_0x38bf('0x79')](config['root'],_0x38bf('0xd4')),_0x38bf('0xd5'));var _0x1dab15=ejs[_0x38bf('0xd6')](_0xba032d,{'body':_['toPairs'](_0x1bd92b[_0x38bf('0x57')][_0x38bf('0x57')]),'bodyTitle':_0x52c196['offlineMessageBody']});return db[_0x38bf('0xd7')][_0x38bf('0x56')]({'body':_0x1dab15,'ContactId':_0x2925f4['id'],'ChatWebsiteId':_0x52c196['id']});}})[_0x38bf('0x1b')](function(_0xa73936){_0x848f03=_0xa73936;if(_0x805232[_0x38bf('0x54')]){var _0x1b6ddb=_0x805232[_0x38bf('0x39')](function(_0x27ec57){return{'name':_0x27ec57[_0x38bf('0xd8')],'basename':_0x27ec57[_0x38bf('0x71')],'type':_0x27ec57['mimetype'],'ChatOfflineMessageId':_0xa73936['id']};});_0x408651=_0x1b6ddb[_0x38bf('0x39')](_0x1df49c=>{var _0x5be77c={'filename':_0x1df49c[_0x38bf('0x3f')],'path':path[_0x38bf('0x79')](config['root'],'server',_0x38bf('0xcf'),_0x38bf('0xd9'),_0x38bf('0xda'),_0x1df49c[_0x38bf('0xdb')])};return _0x5be77c;});if(!_0x52c196[_0x38bf('0xdc')]){return db[_0x38bf('0xdd')]['transaction'](function(_0x1a889c){return db[_0x38bf('0xde')]['bulkCreate'](_0x1b6ddb,{'transaction':_0x1a889c});});}}})[_0x38bf('0x1b')](function(){if(_0x848f03){_0x10ff55=_0x848f03;return db['MailAccount'][_0x38bf('0x6c')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]});}})[_0x38bf('0x1b')](function(_0x21a535){if(_0x21a535&&_0x21a535['Smtp']&&_0x52c196['forwardOffline']&&_0x52c196['forwardOfflineAddress']){var _0x18550b={'tls':{'rejectUnauthorized':![]}};if(_0x21a535['Smtp'][_0x38bf('0xdf')]){_0x18550b[_0x38bf('0xdf')]=_0x21a535[_0x38bf('0xe0')][_0x38bf('0xdf')];}else{_0x18550b[_0x38bf('0xe1')]=_0x21a535['Smtp'][_0x38bf('0xe1')];_0x18550b[_0x38bf('0xe2')]=_0x21a535[_0x38bf('0xe0')][_0x38bf('0xe2')];_0x18550b[_0x38bf('0xe3')]=_0x21a535[_0x38bf('0xe0')][_0x38bf('0xe3')];}if(_0x21a535[_0x38bf('0xe0')]['authentication']){_0x18550b[_0x38bf('0xe4')]={'user':_0x21a535['Smtp'][_0x38bf('0x59')],'pass':_0x21a535['Smtp'][_0x38bf('0xe5')]};}return respondWithRpcPromise(_0x38bf('0xe6'),_0x38bf('0xe7'),{'account':_0x18550b,'message':{'from':util['format'](_0x38bf('0xe8'),_0x21a535[_0x38bf('0x3f')],_0x21a535[_0x38bf('0xe9')]||_0x21a535[_0x38bf('0xe0')][_0x38bf('0x59')]),'to':_0x52c196[_0x38bf('0xea')],'subject':_0x52c196[_0x38bf('0xeb')],'html':_0x10ff55[_0x38bf('0x57')],'attachments':_0x408651}},client9003)[_0x38bf('0x1b')](function(){return _0x10ff55;})['catch'](function(_0x3fbae4){console[_0x38bf('0x21')](_0x3fbae4);});}})[_0x38bf('0x1b')](function(){if(_0x52c196&&_0x52c196[_0x38bf('0xdc')]&&_0x52c196[_0x38bf('0xec')]){var _0x50ffc5=[];if(_0x805232[_0x38bf('0x54')]){_0x50ffc5=_0x805232['map'](function(_0x3d9c99){return{'name':_0x3d9c99[_0x38bf('0xd8')],'basename':_0x3d9c99[_0x38bf('0x71')],'type':_0x3d9c99[_0x38bf('0xed')],'ChatOfflineMessageId':_0x848f03['id']};});}var _0x571237;if(!_[_0x38bf('0x82')](_0x52c196['subjectOffline'])){var _0x34a826=_['map'](_0x1bd92b[_0x38bf('0x57')],function(_0x32e6fd){return _0x32e6fd;});var _0x5d7b91=_[_0x38bf('0xee')](_0x34a826)[0x0];var _0xd41f15=_[_0x38bf('0xef')](_0x5d7b91,function(_0x2145c9){return _0x2145c9;});_0x571237=_0xd41f15[0x1][_0x52c196[_0x38bf('0xf0')]];}var _0x295056={'from':_0x50a557['email'],'firstName':_0x50a557['firstName'],'lastName':_0x50a557[_0x38bf('0xae')],'mapKey':'email','message':{'from':_0x50a557[_0x38bf('0xe9')],'to':_0x52c196[_0x38bf('0xd3')][_0x38bf('0xe9')],'cc':'','subject':_[_0x38bf('0x82')](_0x571237)?_0x52c196[_0x38bf('0xeb')]:_0x571237,'messageId':'','sentAt':new Date(),'attach':_0x50ffc5['length'],'attachments':_0x50ffc5,'originChannel':_0x38bf('0xf1'),'ChatWebsiteId':_0x52c196['id'],'ChatOfflineMessageId':_0x10ff55['id'],'originTo':_0x52c196[_0x38bf('0xd3')]['email']},'body':_0x10ff55[_0x38bf('0x57')]};var _0x230969={'account':{'id':_0x52c196[_0x38bf('0xec')]},'body':_0x295056,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x38bf('0xf2'),_0x38bf('0xf3'),_0x230969,client9001)[_0x38bf('0x1b')](function(){return _0x10ff55;})[_0x38bf('0x25')](function(_0x274895){console[_0x38bf('0x21')](_0x274895);});}return;})[_0x38bf('0x1b')](function(){if(_0x10ff55){return _0x10ff55;}})[_0x38bf('0x1b')](respondWithResult(_0x1c46f8,null))['catch'](function(_0x1e1898){console[_0x38bf('0x21')](_0x38bf('0x25'),_0x1e1898);for(var _0x111560 of _0x805232){var _0xc39bde=path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0xf4'),_0x38bf('0xcf'),_0x38bf('0xd9'),'offline-chat',_0x111560[_0x38bf('0x71')]);fs_extra[_0x38bf('0xf5')](_0xc39bde)[_0x38bf('0x25')](function(_0x166ea1){console[_0x38bf('0x21')]('Could\x20not\x20remove\x20attachment\x20file',_0xc39bde,_0x166ea1);});}});};exports[_0x38bf('0xf6')]=function(_0x6a2426,_0x38688b,_0x29a6d2){return db['ChatInteraction'][_0x38bf('0x60')]({'where':{'id':_0x6a2426[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x38688b,null))[_0x38bf('0x1b')](function(_0x538dd7){if(_0x538dd7){return _0x538dd7['addInteraction'](_0x6a2426['body'][_0x38bf('0x68')],_['omit'](_0x6a2426[_0x38bf('0x57')],[_0x38bf('0x68'),'id'])||{});}})[_0x38bf('0x1b')](respondWithResult(_0x38688b,null))[_0x38bf('0x25')](handleError(_0x38688b,null));};exports['getInteractions']=function(_0x329945,_0xa28628,_0x277507){var _0x1ae86b={'raw':![],'where':{}};var _0x2fcd21={};var _0x4e42f2={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x329945['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0xa28628,null))['then'](function(_0x3fc6d1){if(_0x3fc6d1){_0x2fcd21[_0x38bf('0x3e')]=_[_0x38bf('0x41')](db[_0x38bf('0xba')]['rawAttributes']);_0x2fcd21[_0x38bf('0x40')]=_[_0x38bf('0x41')](_0x329945[_0x38bf('0x40')]);_0x2fcd21[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x2fcd21[_0x38bf('0x3e')],_0x2fcd21[_0x38bf('0x40')]);_0x1ae86b[_0x38bf('0x44')]=_['intersection'](_0x2fcd21['model'],qs[_0x38bf('0x45')](_0x329945[_0x38bf('0x40')][_0x38bf('0x45')]));_0x1ae86b['attributes']=_0x1ae86b['attributes'][_0x38bf('0x54')]?_0x1ae86b[_0x38bf('0x44')]:_0x2fcd21[_0x38bf('0x3e')];if(!_0x329945[_0x38bf('0x40')][_0x38bf('0x46')](_0x38bf('0x47'))){_0x1ae86b['limit']=qs[_0x38bf('0x2c')](_0x329945[_0x38bf('0x40')][_0x38bf('0x2c')]);_0x1ae86b[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0x329945[_0x38bf('0x40')][_0x38bf('0x2a')]);}_0x1ae86b['order']=qs[_0x38bf('0x48')](_0x329945['query'][_0x38bf('0x48')]);_0x1ae86b['where']=qs[_0x38bf('0x42')](_[_0x38bf('0x4a')](_0x329945['query'],_0x2fcd21[_0x38bf('0x42')]));_0x1ae86b[_0x38bf('0x49')][_0x38bf('0x65')]=_0x3fc6d1['id'];if(_0x329945[_0x38bf('0x40')][_0x38bf('0x4d')]){_0x1ae86b[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x1ae86b[_0x38bf('0x49')],{'$or':_[_0x38bf('0x39')](_0x1ae86b[_0x38bf('0x44')],function(_0x109c5a){var _0x23fe06={};_0x23fe06[_0x109c5a]={'$like':'%'+_0x329945[_0x38bf('0x40')][_0x38bf('0x4d')]+'%'};return _0x23fe06;})});}_0x1ae86b=_[_0x38bf('0x4b')]({},_0x1ae86b,_0x329945[_0x38bf('0x55')]);return db[_0x38bf('0xba')][_0x38bf('0x2d')]({'where':_0x1ae86b['where']})['then'](function(_0x53a310){_0x4e42f2[_0x38bf('0x2d')]=_0x53a310;if(_0x329945[_0x38bf('0x40')]['includeAll']){_0x1ae86b[_0x38bf('0x50')]=[{'model':db[_0x38bf('0x8e')],'as':'Contact','required':![]},{'model':db[_0x38bf('0xc6')],'as':_0x38bf('0xf7'),'attributes':['name',_0x38bf('0xf8'),_0x38bf('0xf9')],'required':![]},{'model':db[_0x38bf('0xfa')],'as':_0x38bf('0xfb'),'attributes':['id','name',_0x38bf('0xfc')],'where':_0x329945[_0x38bf('0x40')]['tag']?{'id':_0x329945[_0x38bf('0x40')][_0x38bf('0xfd')]}:undefined,'required':_0x329945[_0x38bf('0x40')][_0x38bf('0xfd')]?!![]:![]}];}return db[_0x38bf('0xba')][_0x38bf('0x51')](_0x1ae86b);})[_0x38bf('0x1b')](function(_0x33cbfc){_0x4e42f2[_0x38bf('0x52')]=_0x33cbfc;return _0x4e42f2;});}})[_0x38bf('0x1b')](respondWithFilteredResult(_0xa28628,_0x1ae86b))['catch'](handleError(_0xa28628,null));};function iftimePromise(_0x37fc0d,_0x31c34a){return respondWithRpcPromise(_0x38bf('0xfe'),_0x38bf('0xff'),{'command':_0x31c34a[_0x38bf('0x100')]?util[_0x38bf('0xb2')]('iftime\x20%s,%s',_0x37fc0d['interval'],_0x31c34a[_0x38bf('0x100')]):util[_0x38bf('0xb2')]('iftime\x20%s',_0x37fc0d[_0x38bf('0x101')])},client9002)[_0x38bf('0x1b')](function(_0x43ecb2){var _0x486bdf=_0x43ecb2&&_0x43ecb2[_0x38bf('0x102')]('true')>=0x0?!![]:![];logger['info']('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x31c34a['id'],_0x37fc0d['id'],_0x37fc0d[_0x38bf('0x101')],_0x486bdf?'ONLINE':_0x38bf('0x103'),_0x31c34a[_0x38bf('0x100')]?_0x31c34a['timezone']:'No\x20timezone');return _0x486bdf;})[_0x38bf('0x25')](function(_0x12b77c){logger[_0x38bf('0x21')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x31c34a['id'],_0x37fc0d['id'],_0x37fc0d['interval'],util['inspect'](_0x12b77c,{'showHidden':![],'depth':null}),_0x31c34a['timezone']?_0x31c34a[_0x38bf('0x100')]:_0x38bf('0x104'));return![];});}exports['getSnippet']=function(_0x351f32,_0x266391,_0xb2ff64){var _0x2cd835=0x0;var _0x3ecde2=0x0;var _0x37fe8d=![];var _0x478aa5;var _0x1c6ad1;return db[_0x38bf('0x4e')][_0x38bf('0x60')]({'where':{'id':_0x351f32[_0x38bf('0x53')]['id']},'include':[{'model':db['Interval'],'as':_0x38bf('0x105'),'include':[{'model':db['Interval'],'as':_0x38bf('0x106'),'attributes':['id',_0x38bf('0x101')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x266391,null))[_0x38bf('0x1b')](function(_0x9755f){if(_0x9755f){_0x478aa5=_0x9755f;return _0x9755f[_0x38bf('0x107')]({'raw':!![]});}})['then'](function(_0x62f7eb){if(_0x478aa5){if(_0x62f7eb){_0x1c6ad1=_0x62f7eb;}}return require(_0x38bf('0x7c'))['getLicense']();})[_0x38bf('0x1b')](function(_0x55e39d){if(_0x55e39d){_0x3ecde2=_0x55e39d[_0x38bf('0x108')];_0x37fe8d=_0x55e39d[_0x38bf('0x7e')];}})[_0x38bf('0x1b')](function(){return db['ChatInteraction'][_0x38bf('0x2d')]({'where':{'closed':![]}});})['then'](function(_0xad7e0a){_0x2cd835=_0xad7e0a;if(_0x3ecde2&&_0xad7e0a>_0x3ecde2){return db[_0x38bf('0x109')][_0x38bf('0x6c')]({'where':{'id':0x1}})['then'](function(_0xaf4bbd){if(_0xaf4bbd){_0xaf4bbd['increment'](_0x38bf('0x10a'));}});}})[_0x38bf('0x1b')](function(){if(_0x478aa5[_0x38bf('0x105')]&&_0x478aa5['Interval'][_0x38bf('0x106')]){var _0x2ec5a7=[];for(var _0x30581a=0x0;_0x30581a<_0x478aa5[_0x38bf('0x105')][_0x38bf('0x106')][_0x38bf('0x54')];_0x30581a++){var _0x3e012a=_0x478aa5['Interval'][_0x38bf('0x106')][_0x30581a]['get']({'plain':!![]});_0x2ec5a7[_0x38bf('0x10b')](iftimePromise(_0x3e012a,_0x478aa5));}return BPromise['all'](_0x2ec5a7)[_0x38bf('0x1b')](function(_0x4a5a5d){return _[_0x38bf('0x10c')](_0x4a5a5d);});}else{return!![];}})['then'](function(_0x1f17bd){var _0x240cc0=fs['readFileSync'](path[_0x38bf('0x79')](config[_0x38bf('0x7a')],_0x38bf('0x10d')),_0x38bf('0xd5'));var _0x441602={'remote':_0x478aa5[_0x38bf('0x10e')],'query':querystring[_0x38bf('0x20')](_[_0x38bf('0x4b')](_0x478aa5[_0x38bf('0x32')]({'plain':!![]}),{'customerIp':_0x351f32[_0x38bf('0x8a')]['x-forwarded-for']||_0x351f32[_0x38bf('0x8a')][_0x38bf('0x10f')]||_0x351f32[_0x38bf('0x110')][_0x38bf('0x111')]||_0x351f32['ip'],'referer':_0x351f32[_0x38bf('0x8a')]['referer'],'openedInteractions':_0x2cd835,'maxInteractions':_0x3ecde2,'virtual':_0x37fe8d[_0x38bf('0x108')],'online':_0x1f17bd,'custom':_0x37fe8d}))[_0x38bf('0x112')](/'/g,'\x5c\x27')};_0x266391[_0x38bf('0x35')](ejs[_0x38bf('0xd6')](Mustache['render'](_0x240cc0,_0x441602),{'proactiveActions':_0x1c6ad1,'alignment':_0x478aa5[_0x38bf('0x113')],'verticalAlignment':_0x478aa5[_0x38bf('0x114')],'div_color':_0x478aa5['color'],'text_color':_0x478aa5[_0x38bf('0x115')],'button_color':_0x478aa5[_0x38bf('0x116')],'background_color':_0x478aa5[_0x38bf('0x117')]}));})[_0x38bf('0x25')](handleError(_0x266391,null));};exports['addApplications']=function(_0x12faae,_0x32f16b,_0x514ba5){return db[_0x38bf('0x4e')][_0x38bf('0x6c')]({'where':{'id':_0x12faae['params']['id']}})['then'](handleEntityNotFound(_0x32f16b,null))[_0x38bf('0x1b')](function(_0xb84da2){if(_0xb84da2){return db['sequelize']['transaction'](function(_0xb14445){return db[_0x38bf('0xa1')]['destroy']({'where':{'ChatWebsiteId':_0x12faae[_0x38bf('0x53')]['id']},'transaction':_0xb14445})['then'](function(_0x4b4820){var _0x197e7a=_['map'](_0x12faae[_0x38bf('0x57')],function(_0x784fd7){_0x784fd7[_0x38bf('0x65')]=_0x12faae[_0x38bf('0x53')]['id'];return _0x784fd7;});return db[_0x38bf('0xa1')]['bulkCreate'](_0x197e7a,{'transaction':_0xb14445});});})['then'](function(){return db[_0x38bf('0xa1')][_0x38bf('0x118')]({'where':{'ChatWebsiteId':_0x12faae[_0x38bf('0x53')]['id']},'order':'priority'});});}})[_0x38bf('0x1b')](respondWithResult(_0x32f16b,null))[_0x38bf('0x25')](handleError(_0x32f16b,null));};exports[_0x38bf('0x119')]=function(_0x5463cb,_0x475309,_0x382815){var _0x1b324b={};var _0x4474c7={};var _0x5c22b4;var _0x3ca3a6;return db['ChatWebsite']['findOne']({'where':{'id':_0x5463cb['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x475309,null))['then'](function(_0x5a12a6){if(_0x5a12a6){_0x5c22b4=_0x5a12a6;_0x4474c7['model']=_[_0x38bf('0x41')](db['ChatApplication']['rawAttributes']);_0x4474c7['query']=_['keys'](_0x5463cb[_0x38bf('0x40')]);_0x4474c7['filters']=_[_0x38bf('0x43')](_0x4474c7['model'],_0x4474c7[_0x38bf('0x40')]);_0x1b324b[_0x38bf('0x44')]=_[_0x38bf('0x43')](_0x4474c7[_0x38bf('0x3e')],qs[_0x38bf('0x45')](_0x5463cb[_0x38bf('0x40')][_0x38bf('0x45')]));_0x1b324b[_0x38bf('0x44')]=_0x1b324b[_0x38bf('0x44')][_0x38bf('0x54')]?_0x1b324b[_0x38bf('0x44')]:_0x4474c7[_0x38bf('0x3e')];_0x1b324b[_0x38bf('0x64')]=qs[_0x38bf('0x48')](_0x5463cb[_0x38bf('0x40')][_0x38bf('0x48')]);_0x1b324b['where']=qs[_0x38bf('0x42')](_[_0x38bf('0x4a')](_0x5463cb[_0x38bf('0x40')],_0x4474c7[_0x38bf('0x42')]));if(_0x5463cb[_0x38bf('0x40')][_0x38bf('0x4d')]){_0x1b324b[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x1b324b[_0x38bf('0x49')],{'$or':_['map'](_0x1b324b[_0x38bf('0x44')],function(_0x4669f0){var _0x230945={};_0x230945[_0x4669f0]={'$like':'%'+_0x5463cb[_0x38bf('0x40')][_0x38bf('0x4d')]+'%'};return _0x230945;})});}_0x1b324b=_[_0x38bf('0x4b')]({},_0x1b324b,_0x5463cb['options']);return _0x5c22b4[_0x38bf('0x119')](_0x1b324b);}})[_0x38bf('0x1b')](function(_0x51a4ef){if(_0x51a4ef){_0x3ca3a6=_0x51a4ef[_0x38bf('0x54')];if(!_0x5463cb['query'][_0x38bf('0x46')](_0x38bf('0x47'))){_0x1b324b[_0x38bf('0x2c')]=qs[_0x38bf('0x2c')](_0x5463cb[_0x38bf('0x40')][_0x38bf('0x2c')]);_0x1b324b[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0x5463cb[_0x38bf('0x40')][_0x38bf('0x2a')]);}return _0x5c22b4['getApplications'](_0x1b324b);}})[_0x38bf('0x1b')](function(_0x54c900){if(_0x54c900){return _0x54c900?{'count':_0x3ca3a6,'rows':_0x54c900}:null;}})[_0x38bf('0x1b')](respondWithResult(_0x475309,null))[_0x38bf('0x25')](handleError(_0x475309,null));};exports['addProactiveActions']=function(_0x4e9c07,_0x531a1c,_0x161b57){return db[_0x38bf('0x11a')][_0x38bf('0x60')]({'where':{'id':_0x4e9c07[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x531a1c,null))[_0x38bf('0x1b')](function(_0x13f54d){if(_0x13f54d){return _0x13f54d[_0x38bf('0x11b')](_0x4e9c07[_0x38bf('0x57')][_0x38bf('0x68')],_[_0x38bf('0x11c')](_0x4e9c07['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x531a1c,null))[_0x38bf('0x25')](handleError(_0x531a1c,null));};exports[_0x38bf('0x107')]=function(_0x338968,_0x55c86f,_0x3da6ed){var _0x300f0b={};var _0x36cb8a={};var _0x46acf8;var _0x4e8d5f;return db[_0x38bf('0x4e')][_0x38bf('0x6c')]({'where':{'id':_0x338968[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x55c86f,null))[_0x38bf('0x1b')](function(_0x3fa72d){if(_0x3fa72d){_0x46acf8=_0x3fa72d;_0x36cb8a['model']=_[_0x38bf('0x41')](db[_0x38bf('0x11d')][_0x38bf('0x3a')]);_0x36cb8a[_0x38bf('0x40')]=_[_0x38bf('0x41')](_0x338968[_0x38bf('0x40')]);_0x36cb8a[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x36cb8a[_0x38bf('0x3e')],_0x36cb8a[_0x38bf('0x40')]);_0x300f0b[_0x38bf('0x44')]=_['intersection'](_0x36cb8a[_0x38bf('0x3e')],qs['fields'](_0x338968[_0x38bf('0x40')][_0x38bf('0x45')]));_0x300f0b[_0x38bf('0x44')]=_0x300f0b['attributes'][_0x38bf('0x54')]?_0x300f0b[_0x38bf('0x44')]:_0x36cb8a[_0x38bf('0x3e')];_0x300f0b[_0x38bf('0x64')]=qs[_0x38bf('0x48')](_0x338968[_0x38bf('0x40')][_0x38bf('0x48')]);_0x300f0b[_0x38bf('0x49')]=qs[_0x38bf('0x42')](_['pick'](_0x338968[_0x38bf('0x40')],_0x36cb8a[_0x38bf('0x42')]));if(_0x338968[_0x38bf('0x40')][_0x38bf('0x4d')]){_0x300f0b[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x300f0b[_0x38bf('0x49')],{'$or':_['map'](_0x300f0b['attributes'],function(_0xf33dd0){var _0x13ffb9={};_0x13ffb9[_0xf33dd0]={'$like':'%'+_0x338968[_0x38bf('0x40')][_0x38bf('0x4d')]+'%'};return _0x13ffb9;})});}_0x300f0b=_['merge']({},_0x300f0b,_0x338968[_0x38bf('0x55')]);return _0x46acf8[_0x38bf('0x107')](_0x300f0b);}})['then'](function(_0x504f0a){if(_0x504f0a){_0x4e8d5f=_0x504f0a[_0x38bf('0x54')];if(!_0x338968[_0x38bf('0x40')][_0x38bf('0x46')]('nolimit')){_0x300f0b[_0x38bf('0x2c')]=qs['limit'](_0x338968[_0x38bf('0x40')][_0x38bf('0x2c')]);_0x300f0b[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0x338968[_0x38bf('0x40')][_0x38bf('0x2a')]);}return _0x46acf8['getProactiveActions'](_0x300f0b);}})['then'](function(_0x236381){if(_0x236381){return _0x236381?{'count':_0x4e8d5f,'rows':_0x236381}:null;}})[_0x38bf('0x1b')](respondWithResult(_0x55c86f,null))['catch'](handleError(_0x55c86f,null));};exports[_0x38bf('0x11e')]=function(_0x2d2f1f,_0x49bbba,_0x2c1a33){var _0x4ac475=_0x2d2f1f[_0x38bf('0x40')][_0x38bf('0x11f')]===_0x38bf('0x120')?'offlineForm':_0x38bf('0x121');return db[_0x38bf('0x4e')]['find']({'attributes':['id',_0x4ac475],'where':{'id':_0x2d2f1f['params']['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x49bbba,null))[_0x38bf('0x1b')](function(_0x234324){if(_0x234324){var _0x475c0f=_0x234324[_0x4ac475];var _0x22d86d=_0x475c0f&&_0x475c0f[_0x38bf('0x122')]?_0x475c0f[_0x38bf('0x122')]:[];_0x49bbba[_0x38bf('0x35')]({'fromKey':_['isNil'](_0x475c0f[_0x38bf('0x123')])?undefined:_0x475c0f['fromKey'],'count':_0x22d86d[_0x38bf('0x54')],'rows':_0x22d86d});}})[_0x38bf('0x25')](handleError(_0x49bbba,null));};exports['getOfflineMessages']=function(_0x4f554e,_0xc6c4fd,_0x41e734){var _0x17f694={'raw':![],'where':{}};var _0x1cb781={};var _0x28ac15={'count':0x0,'rows':[]};return db[_0x38bf('0x4e')][_0x38bf('0x6c')]({'where':{'id':_0x4f554e[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0xc6c4fd,null))[_0x38bf('0x1b')](function(_0x495581){if(_0x495581){_0x1cb781[_0x38bf('0x3e')]=_[_0x38bf('0x41')](db[_0x38bf('0xd7')][_0x38bf('0x3a')]);_0x1cb781[_0x38bf('0x40')]=_['keys'](_0x4f554e['query']);_0x1cb781[_0x38bf('0x42')]=_[_0x38bf('0x43')](_0x1cb781[_0x38bf('0x3e')],_0x1cb781[_0x38bf('0x40')]);_0x17f694['attributes']=_[_0x38bf('0x43')](_0x1cb781[_0x38bf('0x3e')],qs[_0x38bf('0x45')](_0x4f554e[_0x38bf('0x40')][_0x38bf('0x45')]));_0x17f694[_0x38bf('0x44')]=_0x17f694[_0x38bf('0x44')]['length']?_0x17f694[_0x38bf('0x44')]:_0x1cb781[_0x38bf('0x3e')];if(!_0x4f554e[_0x38bf('0x40')][_0x38bf('0x46')](_0x38bf('0x47'))){_0x17f694[_0x38bf('0x2c')]=qs['limit'](_0x4f554e['query']['limit']);_0x17f694[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0x4f554e[_0x38bf('0x40')][_0x38bf('0x2a')]);}_0x17f694[_0x38bf('0x64')]=qs[_0x38bf('0x48')](_0x4f554e[_0x38bf('0x40')]['sort']);_0x17f694['where']=qs[_0x38bf('0x42')](_[_0x38bf('0x4a')](_0x4f554e[_0x38bf('0x40')],_0x1cb781[_0x38bf('0x42')]));_0x17f694['where'][_0x38bf('0x65')]=_0x495581['id'];if(_0x4f554e[_0x38bf('0x40')][_0x38bf('0x4d')]){_0x17f694[_0x38bf('0x49')]=_['merge'](_0x17f694[_0x38bf('0x49')],{'$or':_[_0x38bf('0x39')](_0x17f694[_0x38bf('0x44')],function(_0x22d6c0){var _0x109d5c={};_0x109d5c[_0x22d6c0]={'$like':'%'+_0x4f554e[_0x38bf('0x40')][_0x38bf('0x4d')]+'%'};return _0x109d5c;})});}_0x17f694=_[_0x38bf('0x4b')]({},_0x17f694,_0x4f554e[_0x38bf('0x55')]);return db[_0x38bf('0xd7')][_0x38bf('0x2d')]({'where':_0x17f694['where']})[_0x38bf('0x1b')](function(_0x5774b8){_0x28ac15[_0x38bf('0x2d')]=_0x5774b8;if(_0x4f554e[_0x38bf('0x40')][_0x38bf('0x4f')]){_0x17f694[_0x38bf('0x50')]=[{'all':!![]}];}else{_0x17f694[_0x38bf('0x50')]=[{'model':db[_0x38bf('0x8e')],'as':'Contact','required':![]},{'model':db[_0x38bf('0xde')],'as':'Attachments','required':![]}];}return db[_0x38bf('0xd7')][_0x38bf('0x51')](_0x17f694);})[_0x38bf('0x1b')](function(_0x4ec90e){_0x28ac15['rows']=_0x4ec90e;return _0x28ac15;});}})['then'](respondWithFilteredResult(_0xc6c4fd,_0x17f694))[_0x38bf('0x25')](handleError(_0xc6c4fd,null));};exports['addAgents']=function(_0x38a138,_0x667142,_0x38e2bf){return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x38a138[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x667142,null))['then'](function(_0xb28db){if(_0xb28db){return _0xb28db['addAgents'](_0x38a138[_0x38bf('0x57')][_0x38bf('0x68')],_[_0x38bf('0x11c')](_0x38a138['body'],[_0x38bf('0x68'),'id'])||{})['spread'](function(_0x596df3){for(var _0x142976=0x0;_0x142976<_0x38a138[_0x38bf('0x57')][_0x38bf('0x68')][_0x38bf('0x54')];_0x142976+=0x1){socket['emit']('userChatWebsite:save',{'UserId':Number(_0x38a138[_0x38bf('0x57')][_0x38bf('0x68')][_0x142976]),'ChatWebsiteId':Number(_0x38a138[_0x38bf('0x53')]['id'])});}return _0x596df3;});}})[_0x38bf('0x1b')](respondWithResult(_0x667142,null))[_0x38bf('0x25')](handleError(_0x667142,null));};exports[_0x38bf('0x124')]=function(_0x1d1c98,_0x372a51,_0x48f929){return db['ChatWebsite'][_0x38bf('0x60')]({'where':{'id':_0x1d1c98[_0x38bf('0x53')]['id']}})['then'](handleEntityNotFound(_0x372a51,null))['then'](function(_0x5ebeda){if(_0x5ebeda){return _0x5ebeda['removeAgents'](_0x1d1c98['query'][_0x38bf('0x68')])['then'](function(){if(_['isArray'](_0x1d1c98[_0x38bf('0x40')][_0x38bf('0x68')])){for(var _0xcb2633=0x0;_0xcb2633<_0x1d1c98[_0x38bf('0x40')][_0x38bf('0x68')]['length'];_0xcb2633+=0x1){socket[_0x38bf('0x125')](_0x38bf('0x126'),{'UserId':Number(_0x1d1c98[_0x38bf('0x40')][_0x38bf('0x68')][_0xcb2633]),'ChatWebsiteId':Number(_0x1d1c98['params']['id'])});}}else{socket[_0x38bf('0x125')](_0x38bf('0x126'),{'UserId':Number(_0x1d1c98[_0x38bf('0x40')]['ids']),'ChatWebsiteId':Number(_0x1d1c98[_0x38bf('0x53')]['id'])});}});}})[_0x38bf('0x1b')](respondWithStatusCode(_0x372a51,null))[_0x38bf('0x25')](handleError(_0x372a51,null));};exports[_0x38bf('0x127')]=function(_0xa5e0ae,_0x2d30e3,_0x418815){var _0x2dfca2={};var _0x14247e={};var _0x2b86df;var _0x35ec67;return db[_0x38bf('0x4e')][_0x38bf('0x6c')]({'where':{'id':_0xa5e0ae[_0x38bf('0x53')]['id']}})[_0x38bf('0x1b')](handleEntityNotFound(_0x2d30e3,null))['then'](function(_0x58914a){if(_0x58914a){_0x2b86df=_0x58914a;_0x14247e[_0x38bf('0x3e')]=_['keys'](db[_0x38bf('0xc6')][_0x38bf('0x3a')]);_0x14247e['query']=_['keys'](_0xa5e0ae[_0x38bf('0x40')]);_0x14247e[_0x38bf('0x42')]=_['intersection'](_0x14247e[_0x38bf('0x3e')],_0x14247e[_0x38bf('0x40')]);_0x2dfca2[_0x38bf('0x44')]=_[_0x38bf('0x43')](_0x14247e[_0x38bf('0x3e')],qs[_0x38bf('0x45')](_0xa5e0ae[_0x38bf('0x40')][_0x38bf('0x45')]));_0x2dfca2[_0x38bf('0x44')]=_0x2dfca2[_0x38bf('0x44')]['length']?_0x2dfca2[_0x38bf('0x44')]:_0x14247e[_0x38bf('0x3e')];_0x2dfca2[_0x38bf('0x64')]=qs[_0x38bf('0x48')](_0xa5e0ae[_0x38bf('0x40')][_0x38bf('0x48')]);_0x2dfca2['where']=qs['filters'](_['pick'](_0xa5e0ae[_0x38bf('0x40')],_0x14247e[_0x38bf('0x42')]));if(_0xa5e0ae['query'][_0x38bf('0x4d')]){_0x2dfca2[_0x38bf('0x49')]=_[_0x38bf('0x4b')](_0x2dfca2[_0x38bf('0x49')],{'$or':_[_0x38bf('0x39')](_0x2dfca2[_0x38bf('0x44')],function(_0x18ab88){var _0x10b641={};_0x10b641[_0x18ab88]={'$like':'%'+_0xa5e0ae[_0x38bf('0x40')][_0x38bf('0x4d')]+'%'};return _0x10b641;})});}_0x2dfca2=_[_0x38bf('0x4b')]({},_0x2dfca2,_0xa5e0ae[_0x38bf('0x55')]);return _0x2b86df['getAgents'](_0x2dfca2);}})[_0x38bf('0x1b')](function(_0x15d24d){if(_0x15d24d){_0x35ec67=_0x15d24d[_0x38bf('0x54')];if(!_0xa5e0ae[_0x38bf('0x40')]['hasOwnProperty'](_0x38bf('0x47'))){_0x2dfca2[_0x38bf('0x2c')]=qs[_0x38bf('0x2c')](_0xa5e0ae['query'][_0x38bf('0x2c')]);_0x2dfca2[_0x38bf('0x2a')]=qs[_0x38bf('0x2a')](_0xa5e0ae[_0x38bf('0x40')]['offset']);}return _0x2b86df['getAgents'](_0x2dfca2);}})[_0x38bf('0x1b')](function(_0x40afb4){if(_0x40afb4){return _0x40afb4?{'count':_0x35ec67,'rows':_0x40afb4}:null;}})['then'](respondWithResult(_0x2d30e3,null))[_0x38bf('0x25')](handleError(_0x2d30e3,null));};
\ No newline at end of file
index 1225a48..6236661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d6=['remove','emit','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners','save'];(function(_0x45828,_0x3fd1d2){var _0x55f238=function(_0x35a0e9){while(--_0x35a0e9){_0x45828['push'](_0x45828['shift']());}};_0x55f238(++_0x3fd1d2);}(_0x20d6,0x9d));var _0x620d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x20d6[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x620d('0x0'));var ChatWebsite=require(_0x620d('0x1'))['db'][_0x620d('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x620d('0x3')](0x0);var events={'afterCreate':_0x620d('0x4'),'afterUpdate':'update','afterDestroy':_0x620d('0x5')};function emitEvent(_0x98061e){return function(_0x11883f,_0x39dbb4,_0x5383dc){ChatWebsiteEvents[_0x620d('0x6')](_0x98061e+':'+_0x11883f['id'],_0x11883f);ChatWebsiteEvents[_0x620d('0x6')](_0x98061e,_0x11883f);_0x5383dc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x620d('0x7')](e,emitEvent(event));}}module[_0x620d('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x32ef=['../../mysqldb','ChatWebsite','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x2d8d90,_0x545d20){var _0x18db54=function(_0x4bd9c9){while(--_0x4bd9c9){_0x2d8d90['push'](_0x2d8d90['shift']());}};_0x18db54(++_0x545d20);}(_0x32ef,0xf9));var _0xf32e=function(_0x5d1eca,_0x3c3fc6){_0x5d1eca=_0x5d1eca-0x0;var _0xdd9217=_0x32ef[_0x5d1eca];return _0xdd9217;};'use strict';var EventEmitter=require(_0xf32e('0x0'));var ChatWebsite=require(_0xf32e('0x1'))['db'][_0xf32e('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xf32e('0x3')](0x0);var events={'afterCreate':_0xf32e('0x4'),'afterUpdate':_0xf32e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x232ead){return function(_0x1ff6ab,_0x4ef070,_0xa35268){ChatWebsiteEvents[_0xf32e('0x6')](_0x232ead+':'+_0x1ff6ab['id'],_0x1ff6ab);ChatWebsiteEvents[_0xf32e('0x6')](_0x232ead,_0x1ff6ab);_0xa35268(null);};}for(var e in events){if(events[_0xf32e('0x7')](e)){var event=events[e];ChatWebsite[_0xf32e('0x8')](e,emitEvent(event));}}module[_0xf32e('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
index f5c8c5a..943aa55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb71=['util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','lodash'];(function(_0x559463,_0x5f4160){var _0x1c7366=function(_0x544d8d){while(--_0x544d8d){_0x559463['push'](_0x559463['shift']());}};_0x1c7366(++_0x5f4160);}(_0xbb71,0x1a1));var _0x1bb7=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xbb71[_0x22b68a];return _0x1ac67a;};'use strict';var _=require(_0x1bb7('0x0'));var util=require(_0x1bb7('0x1'));var logger=require(_0x1bb7('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1bb7('0x3'));var fs=require('fs');var path=require(_0x1bb7('0x4'));var rimraf=require(_0x1bb7('0x5'));var config=require(_0x1bb7('0x6'));var attributes=require(_0x1bb7('0x7'));module[_0x1bb7('0x8')]=function(_0x30821a,_0x1573e8){return _0x30821a[_0x1bb7('0x9')](_0x1bb7('0xa'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xadfe=['ChatWebsite','chat_websites','util','../../config/logger','api','bluebird','request-promise','path','rimraf','define'];(function(_0x5b13c3,_0x378e0a){var _0x3d6780=function(_0x6327a6){while(--_0x6327a6){_0x5b13c3['push'](_0x5b13c3['shift']());}};_0x3d6780(++_0x378e0a);}(_0xadfe,0x84));var _0xeadf=function(_0x35d8a3,_0xb6cf3){_0x35d8a3=_0x35d8a3-0x0;var _0x2265e3=_0xadfe[_0x35d8a3];return _0x2265e3;};'use strict';var _=require('lodash');var util=require(_0xeadf('0x0'));var logger=require(_0xeadf('0x1'))(_0xeadf('0x2'));var moment=require('moment');var BPromise=require(_0xeadf('0x3'));var rp=require(_0xeadf('0x4'));var fs=require('fs');var path=require(_0xeadf('0x5'));var rimraf=require(_0xeadf('0x6'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module['exports']=function(_0xbbb686,_0x149503){return _0xbbb686[_0xeadf('0x7')](_0xeadf('0x8'),attributes,{'tableName':_0xeadf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb763c9..f14aa34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed2=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','then','info','ChatWebsite,\x20%s,\x20%s','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x434337,_0x4a7695){var _0x1afd41=function(_0x5f2203){while(--_0x5f2203){_0x434337['push'](_0x434337['shift']());}};_0x1afd41(++_0x4a7695);}(_0xbed2,0x13e));var _0x2bed=function(_0x10852d,_0x4cdcc6){_0x10852d=_0x10852d-0x0;var _0x13a8d6=_0xbed2[_0x10852d];return _0x13a8d6;};'use strict';var _=require(_0x2bed('0x0'));var util=require(_0x2bed('0x1'));var moment=require(_0x2bed('0x2'));var BPromise=require(_0x2bed('0x3'));var rs=require(_0x2bed('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2bed('0x5'));var logger=require(_0x2bed('0x6'))('rpc');var config=require(_0x2bed('0x7'));var jayson=require(_0x2bed('0x8'));var client=jayson[_0x2bed('0x9')][_0x2bed('0xa')]({'port':0x232a});config[_0x2bed('0xb')]=_[_0x2bed('0xc')](config[_0x2bed('0xb')],{'host':_0x2bed('0xd'),'port':0x18eb});var socket=require(_0x2bed('0xe'))(new Redis(config['redis']));require(_0x2bed('0xf'))['register'](socket);function respondWithRpcPromise(_0x1564fe,_0x3050b5,_0x2cdbfc){return new BPromise(function(_0x4ab2a4,_0x1e8eb3){return client['request'](_0x1564fe,_0x2cdbfc)[_0x2bed('0x10')](function(_0x5daa8d){logger[_0x2bed('0x11')](_0x2bed('0x12'),_0x3050b5,'request\x20sent');logger['debug'](_0x2bed('0x13'),_0x3050b5,_0x2bed('0x14'),JSON[_0x2bed('0x15')](_0x5daa8d));if(_0x5daa8d[_0x2bed('0x16')]){if(_0x5daa8d[_0x2bed('0x16')][_0x2bed('0x17')]===0x1f4){logger[_0x2bed('0x16')](_0x2bed('0x12'),_0x3050b5,_0x5daa8d[_0x2bed('0x16')][_0x2bed('0x18')]);return _0x1e8eb3(_0x5daa8d[_0x2bed('0x16')][_0x2bed('0x18')]);}logger[_0x2bed('0x16')](_0x2bed('0x12'),_0x3050b5,_0x5daa8d[_0x2bed('0x16')]['message']);return _0x4ab2a4(_0x5daa8d['error'][_0x2bed('0x18')]);}else{logger[_0x2bed('0x11')](_0x2bed('0x12'),_0x3050b5,_0x2bed('0x14'));_0x4ab2a4(_0x5daa8d[_0x2bed('0x19')][_0x2bed('0x18')]);}})[_0x2bed('0x1a')](function(_0x5a0cab){logger['error'](_0x2bed('0x12'),_0x3050b5,_0x5a0cab);_0x1e8eb3(_0x5a0cab);});});}
\ No newline at end of file
+var _0xa5f1=['client','http','redis','localhost','socket.io-emitter','register','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x31a7ff,_0x5320e5){var _0x13cadd=function(_0x10b975){while(--_0x10b975){_0x31a7ff['push'](_0x31a7ff['shift']());}};_0x13cadd(++_0x5320e5);}(_0xa5f1,0x97));var _0x1a5f=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa5f1[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x1a5f('0x0'));var util=require(_0x1a5f('0x1'));var moment=require(_0x1a5f('0x2'));var BPromise=require(_0x1a5f('0x3'));var rs=require(_0x1a5f('0x4'));var fs=require('fs');var Redis=require(_0x1a5f('0x5'));var db=require(_0x1a5f('0x6'))['db'];var utils=require(_0x1a5f('0x7'));var logger=require(_0x1a5f('0x8'))(_0x1a5f('0x9'));var config=require(_0x1a5f('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x1a5f('0xb')][_0x1a5f('0xc')]({'port':0x232a});config[_0x1a5f('0xd')]=_['defaults'](config[_0x1a5f('0xd')],{'host':_0x1a5f('0xe'),'port':0x18eb});var socket=require(_0x1a5f('0xf'))(new Redis(config[_0x1a5f('0xd')]));require('./chatWebsite.socket')[_0x1a5f('0x10')](socket);function respondWithRpcPromise(_0x4db7b7,_0x16b37d,_0x42870c){return new BPromise(function(_0x174731,_0x161db7){return client[_0x1a5f('0x11')](_0x4db7b7,_0x42870c)[_0x1a5f('0x12')](function(_0x30f55c){logger['info'](_0x1a5f('0x13'),_0x16b37d,_0x1a5f('0x14'));logger[_0x1a5f('0x15')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x16b37d,_0x1a5f('0x14'),JSON['stringify'](_0x30f55c));if(_0x30f55c[_0x1a5f('0x16')]){if(_0x30f55c[_0x1a5f('0x16')][_0x1a5f('0x17')]===0x1f4){logger[_0x1a5f('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x16b37d,_0x30f55c[_0x1a5f('0x16')][_0x1a5f('0x18')]);return _0x161db7(_0x30f55c['error'][_0x1a5f('0x18')]);}logger[_0x1a5f('0x16')](_0x1a5f('0x13'),_0x16b37d,_0x30f55c[_0x1a5f('0x16')][_0x1a5f('0x18')]);return _0x174731(_0x30f55c[_0x1a5f('0x16')][_0x1a5f('0x18')]);}else{logger[_0x1a5f('0x19')](_0x1a5f('0x13'),_0x16b37d,'request\x20sent');_0x174731(_0x30f55c[_0x1a5f('0x1a')][_0x1a5f('0x18')]);}})['catch'](function(_0x57749a){logger[_0x1a5f('0x16')](_0x1a5f('0x13'),_0x16b37d,_0x57749a);_0x161db7(_0x57749a);});});}
\ No newline at end of file
index ef84b6d..8b0136a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46f4=['save','update','removeListener','length','./chatWebsite.events'];(function(_0x1f4e09,_0x1fc591){var _0x10deec=function(_0x5c1fb9){while(--_0x5c1fb9){_0x1f4e09['push'](_0x1f4e09['shift']());}};_0x10deec(++_0x1fc591);}(_0x46f4,0x1ad));var _0x446f=function(_0x58e7cd,_0x1c3f05){_0x58e7cd=_0x58e7cd-0x0;var _0x162a75=_0x46f4[_0x58e7cd];return _0x162a75;};'use strict';var ChatWebsiteEvents=require(_0x446f('0x0'));var events=[_0x446f('0x1'),'remove',_0x446f('0x2')];function createListener(_0x341c96,_0x46cd03){return function(_0x1bb040){_0x46cd03['emit'](_0x341c96,_0x1bb040);};}function removeListener(_0xbcfd3d,_0xe7d85c){return function(){ChatWebsiteEvents[_0x446f('0x3')](_0xbcfd3d,_0xe7d85c);};}exports['register']=function(_0x4d9f34){for(var _0x205fac=0x0,_0x314dff=events[_0x446f('0x4')];_0x205fac<_0x314dff;_0x205fac++){var _0x231730=events[_0x205fac];var _0x52fb68=createListener('chatWebsite:'+_0x231730,_0x4d9f34);ChatWebsiteEvents['on'](_0x231730,_0x52fb68);}};
\ No newline at end of file
+var _0xb3b3=['update','emit','removeListener','register','./chatWebsite.events','save','remove'];(function(_0x5db0fc,_0x1702bf){var _0x1cdcf1=function(_0x57f69d){while(--_0x57f69d){_0x5db0fc['push'](_0x5db0fc['shift']());}};_0x1cdcf1(++_0x1702bf);}(_0xb3b3,0x10e));var _0x3b3b=function(_0x4760b5,_0x5d08c2){_0x4760b5=_0x4760b5-0x0;var _0x52440b=_0xb3b3[_0x4760b5];return _0x52440b;};'use strict';var ChatWebsiteEvents=require(_0x3b3b('0x0'));var events=[_0x3b3b('0x1'),_0x3b3b('0x2'),_0x3b3b('0x3')];function createListener(_0x56d89e,_0x1d97e5){return function(_0x504726){_0x1d97e5[_0x3b3b('0x4')](_0x56d89e,_0x504726);};}function removeListener(_0x1bf4c4,_0x49d4ef){return function(){ChatWebsiteEvents[_0x3b3b('0x5')](_0x1bf4c4,_0x49d4ef);};}exports[_0x3b3b('0x6')]=function(_0xbff5c5){for(var _0x30278d=0x0,_0x413cb8=events['length'];_0x30278d<_0x413cb8;_0x30278d++){var _0x4222a3=events[_0x30278d];var _0x23dfb2=createListener('chatWebsite:'+_0x4222a3,_0xbff5c5);ChatWebsiteEvents['on'](_0x4222a3,_0x23dfb2);}};
\ No newline at end of file
index b08230f..12b6df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2270=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id/dispositions','getDispositions','/:id/canned_answers','getLogo','getAvatar','getSystemAvatar','/:id/interactions','/:id/applications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','/:id/users','getAgents','create','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','/:id/logo','single','file','addLogo','server/files/images/avatars/','/:id/avatar','addAvatar','addCustomerAvatar','/:id/system_avatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','replace','extname','/:id/offline','any','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x2270,0x8a));var _0x0227=function(_0x158f98,_0x5ed9e4){_0x158f98=_0x158f98-0x0;var _0x7fcdb0=_0x2270[_0x158f98];return _0x7fcdb0;};'use strict';var multer=require('multer');var util=require(_0x0227('0x0'));var path=require(_0x0227('0x1'));var timeout=require(_0x0227('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0227('0x3'));var auth=require(_0x0227('0x4'));var interaction=require(_0x0227('0x5'));var config=require(_0x0227('0x6'));var controller=require('./chatWebsite.controller');router[_0x0227('0x7')]('/',auth[_0x0227('0x8')](),controller[_0x0227('0x9')]);router['get'](_0x0227('0xa'),auth[_0x0227('0x8')](),controller[_0x0227('0xb')]);router[_0x0227('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x0227('0x7')](_0x0227('0xc'),auth[_0x0227('0x8')](),controller[_0x0227('0xd')]);router['get'](_0x0227('0xe'),auth[_0x0227('0x8')](),controller['getAnswers']);router[_0x0227('0x7')]('/:id/logo',controller[_0x0227('0xf')]);router[_0x0227('0x7')]('/:id/avatar',controller[_0x0227('0x10')]);router[_0x0227('0x7')]('/:id/customer_avatar',controller['getCustomerAvatar']);router[_0x0227('0x7')]('/:id/system_avatar',controller[_0x0227('0x11')]);router[_0x0227('0x7')](_0x0227('0x12'),auth[_0x0227('0x8')](),controller['getInteractions']);router[_0x0227('0x7')]('/:id/snippet',controller['getSnippet']);router['get'](_0x0227('0x13'),auth[_0x0227('0x8')](),controller['getApplications']);router['get'](_0x0227('0x14'),auth[_0x0227('0x8')](),controller[_0x0227('0x15')]);router[_0x0227('0x7')]('/:id/fields',controller[_0x0227('0x16')]);router[_0x0227('0x7')](_0x0227('0x17'),auth[_0x0227('0x8')](),controller['getOfflineMessages']);router['get'](_0x0227('0x18'),auth[_0x0227('0x8')](),controller[_0x0227('0x19')]);router['post']('/',auth[_0x0227('0x8')](),controller[_0x0227('0x1a')]);router[_0x0227('0x1b')](_0x0227('0xc'),auth[_0x0227('0x8')](),controller[_0x0227('0x1c')]);router[_0x0227('0x1b')](_0x0227('0xe'),auth['isAuthenticated'](),controller[_0x0227('0x1d')]);var upload=multer({'storage':multer[_0x0227('0x1e')]({'destination':function(_0x5726f1,_0x158031,_0x3e31b1){_0x3e31b1(null,path[_0x0227('0x1f')](config[_0x0227('0x20')],_0x0227('0x21')));},'filename':function(_0x43351e,_0x1808bd,_0x4c3f89){_0x4c3f89(null,util[_0x0227('0x22')](_0x0227('0x23'),Date[_0x0227('0x24')](),_0x1808bd[_0x0227('0x25')]));}})});router[_0x0227('0x1b')](_0x0227('0x26'),upload[_0x0227('0x27')](_0x0227('0x28')),controller[_0x0227('0x29')]);var upload=multer({'storage':multer[_0x0227('0x1e')]({'destination':function(_0x2a7d35,_0x25ef28,_0x384a1a){_0x384a1a(null,path[_0x0227('0x1f')](config[_0x0227('0x20')],_0x0227('0x2a')));},'filename':function(_0x207c41,_0x1c1305,_0x249f31){_0x249f31(null,util[_0x0227('0x22')](_0x0227('0x23'),Date['now'](),_0x1c1305[_0x0227('0x25')]));}})});router[_0x0227('0x1b')](_0x0227('0x2b'),upload[_0x0227('0x27')](_0x0227('0x28')),controller[_0x0227('0x2c')]);var upload=multer({'storage':multer[_0x0227('0x1e')]({'destination':function(_0x2f3f34,_0x5a1709,_0x4bae62){_0x4bae62(null,path[_0x0227('0x1f')](config[_0x0227('0x20')],_0x0227('0x2a')));},'filename':function(_0x32a51e,_0x114b5f,_0x1f87c1){_0x1f87c1(null,util[_0x0227('0x22')](_0x0227('0x23'),Date['now'](),_0x114b5f[_0x0227('0x25')]));}})});router[_0x0227('0x1b')]('/:id/customer_avatar',upload[_0x0227('0x27')](_0x0227('0x28')),controller[_0x0227('0x2d')]);var upload=multer({'storage':multer[_0x0227('0x1e')]({'destination':function(_0x151495,_0x48ebca,_0x8b7ecb){_0x8b7ecb(null,path[_0x0227('0x1f')](config[_0x0227('0x20')],'server/files/images/avatars/'));},'filename':function(_0x37ea73,_0x15da11,_0x30ebf5){_0x30ebf5(null,util['format'](_0x0227('0x23'),Date['now'](),_0x15da11[_0x0227('0x25')]));}})});router[_0x0227('0x1b')](_0x0227('0x2e'),upload[_0x0227('0x27')](_0x0227('0x28')),controller[_0x0227('0x2f')]);router[_0x0227('0x1b')](_0x0227('0x30'),controller[_0x0227('0x31')]);const offlineUploadMulter=multer({'storage':multer[_0x0227('0x1e')]({'destination':function(_0x305b57,_0x190bf4,_0x1a4b1c){const _0x4858f6=path[_0x0227('0x1f')](config[_0x0227('0x20')],_0x0227('0x32'),_0x0227('0x33'),_0x0227('0x34'));fs_extra['ensureDir'](_0x4858f6,function(){_0x1a4b1c(null,_0x4858f6);});},'filename':function(_0xdfce43,_0x182ddf,_0x27ed7f){const _0x3b4d4d=_0x182ddf[_0x0227('0x25')][_0x0227('0x35')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x3b60aa=path[_0x0227('0x36')](_0x3b4d4d);const _0x1d9852=Date['now']()+'-'+_0x3b4d4d[_0x0227('0x35')](_0x3b60aa,'')+_0x3b60aa;_0x27ed7f(null,_0x1d9852);}})});router['post'](_0x0227('0x37'),offlineUploadMulter[_0x0227('0x38')](),controller[_0x0227('0x39')]);router[_0x0227('0x1b')](_0x0227('0x12'),auth[_0x0227('0x8')](),controller[_0x0227('0x3a')]);router[_0x0227('0x1b')](_0x0227('0x13'),auth[_0x0227('0x8')](),controller[_0x0227('0x3b')]);router[_0x0227('0x1b')]('/:id/proactive_actions',auth[_0x0227('0x8')](),controller[_0x0227('0x3c')]);router['post']('/:id/users',auth[_0x0227('0x8')](),controller[_0x0227('0x3d')]);router[_0x0227('0x3e')](_0x0227('0x3f'),auth[_0x0227('0x8')](),controller['update']);router[_0x0227('0x40')]('/:id',auth[_0x0227('0x8')](),controller[_0x0227('0x41')]);router[_0x0227('0x40')](_0x0227('0xc'),auth[_0x0227('0x8')](),controller[_0x0227('0x42')]);router[_0x0227('0x40')](_0x0227('0xe'),auth['isAuthenticated'](),controller[_0x0227('0x43')]);router[_0x0227('0x40')](_0x0227('0x18'),auth[_0x0227('0x8')](),controller[_0x0227('0x44')]);module[_0x0227('0x45')]=router;
\ No newline at end of file
+var _0x2530=['/:id','/:id/dispositions','getDispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','getApplications','/:id/proactive_actions','getProactiveActions','getFields','getOfflineMessages','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','server/files/images/avatars/','single','file','addAvatar','/:id/notify','notify','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','any','/:id/applications','addProactiveActions','/:id/users','addAgents','update','delete','destroy','removeDispositions','/:id/canned_answers','removeAnswers','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','/describe','isAuthenticated','describe'];(function(_0x31991b,_0xaf75d2){var _0x307304=function(_0x2f36c5){while(--_0x2f36c5){_0x31991b['push'](_0x31991b['shift']());}};_0x307304(++_0xaf75d2);}(_0x2530,0x107));var _0x0253=function(_0xe9fb5d,_0x1d8a8b){_0xe9fb5d=_0xe9fb5d-0x0;var _0x3a30b7=_0x2530[_0xe9fb5d];return _0x3a30b7;};'use strict';var multer=require(_0x0253('0x0'));var util=require(_0x0253('0x1'));var path=require(_0x0253('0x2'));var timeout=require(_0x0253('0x3'));var express=require(_0x0253('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0253('0x5'));var config=require(_0x0253('0x6'));var controller=require(_0x0253('0x7'));router[_0x0253('0x8')]('/',auth['isAuthenticated'](),controller[_0x0253('0x9')]);router[_0x0253('0x8')](_0x0253('0xa'),auth[_0x0253('0xb')](),controller[_0x0253('0xc')]);router['get'](_0x0253('0xd'),auth[_0x0253('0xb')](),controller['show']);router[_0x0253('0x8')](_0x0253('0xe'),auth[_0x0253('0xb')](),controller[_0x0253('0xf')]);router[_0x0253('0x8')]('/:id/canned_answers',auth[_0x0253('0xb')](),controller[_0x0253('0x10')]);router[_0x0253('0x8')](_0x0253('0x11'),controller[_0x0253('0x12')]);router[_0x0253('0x8')](_0x0253('0x13'),controller[_0x0253('0x14')]);router[_0x0253('0x8')](_0x0253('0x15'),controller['getCustomerAvatar']);router[_0x0253('0x8')](_0x0253('0x16'),controller[_0x0253('0x17')]);router[_0x0253('0x8')](_0x0253('0x18'),auth[_0x0253('0xb')](),controller[_0x0253('0x19')]);router[_0x0253('0x8')](_0x0253('0x1a'),controller[_0x0253('0x1b')]);router[_0x0253('0x8')]('/:id/applications',auth[_0x0253('0xb')](),controller[_0x0253('0x1c')]);router[_0x0253('0x8')](_0x0253('0x1d'),auth[_0x0253('0xb')](),controller[_0x0253('0x1e')]);router[_0x0253('0x8')]('/:id/fields',controller[_0x0253('0x1f')]);router[_0x0253('0x8')]('/:id/offline_messages',auth[_0x0253('0xb')](),controller[_0x0253('0x20')]);router['get']('/:id/users',auth[_0x0253('0xb')](),controller[_0x0253('0x21')]);router[_0x0253('0x22')]('/',auth['isAuthenticated'](),controller[_0x0253('0x23')]);router[_0x0253('0x22')]('/:id/dispositions',auth[_0x0253('0xb')](),controller[_0x0253('0x24')]);router[_0x0253('0x22')]('/:id/canned_answers',auth[_0x0253('0xb')](),controller[_0x0253('0x25')]);var upload=multer({'storage':multer[_0x0253('0x26')]({'destination':function(_0x457514,_0x2cbd97,_0x5b808e){_0x5b808e(null,path[_0x0253('0x27')](config[_0x0253('0x28')],'server/files/images/logos/'));},'filename':function(_0x22cc6d,_0x16a447,_0x450d5a){_0x450d5a(null,util[_0x0253('0x29')](_0x0253('0x2a'),Date[_0x0253('0x2b')](),_0x16a447[_0x0253('0x2c')]));}})});router[_0x0253('0x22')]('/:id/logo',upload['single']('file'),controller['addLogo']);var upload=multer({'storage':multer[_0x0253('0x26')]({'destination':function(_0x57e1f4,_0x2ad6da,_0x107981){_0x107981(null,path[_0x0253('0x27')](config[_0x0253('0x28')],_0x0253('0x2d')));},'filename':function(_0x5640e8,_0x3fbb99,_0x44fbe9){_0x44fbe9(null,util['format'](_0x0253('0x2a'),Date[_0x0253('0x2b')](),_0x3fbb99[_0x0253('0x2c')]));}})});router[_0x0253('0x22')]('/:id/avatar',upload[_0x0253('0x2e')](_0x0253('0x2f')),controller[_0x0253('0x30')]);var upload=multer({'storage':multer[_0x0253('0x26')]({'destination':function(_0xa536ec,_0x51dbeb,_0x412c3e){_0x412c3e(null,path[_0x0253('0x27')](config[_0x0253('0x28')],'server/files/images/avatars/'));},'filename':function(_0x3ea478,_0x249c0c,_0x3a46d4){_0x3a46d4(null,util['format']('%s-%s',Date['now'](),_0x249c0c[_0x0253('0x2c')]));}})});router[_0x0253('0x22')](_0x0253('0x15'),upload['single']('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3f24a1,_0x12c68a,_0x1cf91e){_0x1cf91e(null,path[_0x0253('0x27')](config[_0x0253('0x28')],'server/files/images/avatars/'));},'filename':function(_0x378d40,_0x14d0b9,_0x4d9dac){_0x4d9dac(null,util[_0x0253('0x29')](_0x0253('0x2a'),Date['now'](),_0x14d0b9['originalname']));}})});router[_0x0253('0x22')](_0x0253('0x16'),upload[_0x0253('0x2e')](_0x0253('0x2f')),controller['addSystemAvatar']);router[_0x0253('0x22')](_0x0253('0x31'),controller[_0x0253('0x32')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x543526,_0x10e44b,_0x39d52c){const _0x30736b=path[_0x0253('0x27')](config['root'],'server/files',_0x0253('0x33'),_0x0253('0x34'));fs_extra[_0x0253('0x35')](_0x30736b,function(){_0x39d52c(null,_0x30736b);});},'filename':function(_0x439ae2,_0x24902a,_0x19ebb9){const _0x22539f=_0x24902a['originalname'][_0x0253('0x36')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x36792a=path[_0x0253('0x37')](_0x22539f);const _0x6b1331=Date[_0x0253('0x2b')]()+'-'+_0x22539f[_0x0253('0x36')](_0x36792a,'')+_0x36792a;_0x19ebb9(null,_0x6b1331);}})});router[_0x0253('0x22')](_0x0253('0x38'),offlineUploadMulter[_0x0253('0x39')](),controller['offline']);router['post'](_0x0253('0x18'),auth[_0x0253('0xb')](),controller['addInteraction']);router[_0x0253('0x22')](_0x0253('0x3a'),auth[_0x0253('0xb')](),controller['addApplications']);router[_0x0253('0x22')](_0x0253('0x1d'),auth[_0x0253('0xb')](),controller[_0x0253('0x3b')]);router[_0x0253('0x22')](_0x0253('0x3c'),auth[_0x0253('0xb')](),controller[_0x0253('0x3d')]);router['put'](_0x0253('0xd'),auth[_0x0253('0xb')](),controller[_0x0253('0x3e')]);router[_0x0253('0x3f')](_0x0253('0xd'),auth[_0x0253('0xb')](),controller[_0x0253('0x40')]);router[_0x0253('0x3f')](_0x0253('0xe'),auth[_0x0253('0xb')](),controller[_0x0253('0x41')]);router[_0x0253('0x3f')](_0x0253('0x42'),auth[_0x0253('0xb')](),controller[_0x0253('0x43')]);router[_0x0253('0x3f')](_0x0253('0x3c'),auth[_0x0253('0xb')](),controller['removeAgents']);module[_0x0253('0x44')]=router;
\ No newline at end of file
index 8779d6c..458da28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2a=['exports','STRING','ENUM','sequelize'];(function(_0x53f125,_0x4ba12e){var _0x209b38=function(_0x67892c){while(--_0x67892c){_0x53f125['push'](_0x53f125['shift']());}};_0x209b38(++_0x4ba12e);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0xe16f71,_0x130c01){_0xe16f71=_0xe16f71-0x0;var _0x515f2b=_0x5a2a[_0xe16f71];return _0x515f2b;};'use strict';var Sequelize=require(_0xa5a2('0x0'));module[_0xa5a2('0x1')]={'name':{'type':Sequelize[_0xa5a2('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xa5a2('0x3')]('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xa5a2('0x2')]}};
\ No newline at end of file
+var _0xb76d=['AmazonAWS','sequelize','STRING','ENUM'];(function(_0x46ea01,_0x44af2b){var _0x135929=function(_0x1f1278){while(--_0x1f1278){_0x46ea01['push'](_0x46ea01['shift']());}};_0x135929(++_0x44af2b);}(_0xb76d,0x119));var _0xdb76=function(_0x40467d,_0x5bef51){_0x40467d=_0x40467d-0x0;var _0x26701d=_0xb76d[_0x40467d];return _0x26701d;};'use strict';var Sequelize=require(_0xdb76('0x0'));module['exports']={'name':{'type':Sequelize[_0xdb76('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xdb76('0x2')](_0xdb76('0x3'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xdb76('0x1')]},'data2':{'type':Sequelize[_0xdb76('0x1')]}};
\ No newline at end of file
index 7475486..6a2f3a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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','CloudProvider','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(_0x45dac1,_0x3d96bd){var _0x3cfafb=function(_0x48abc5){while(--_0x48abc5){_0x45dac1['push'](_0x45dac1['shift']());}};_0x3cfafb(++_0x3d96bd);}(_0x2ef3,0xba));var _0x32ef=function(_0x3e6fb2,_0x3e29d9){_0x3e6fb2=_0x3e6fb2-0x0;var _0x222942=_0x2ef3[_0x3e6fb2];return _0x222942;};'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['CloudProvider'][_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['CloudProvider'][_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['CloudProvider']['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
+var _0xadb5=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CloudProvider','fieldName','type','key'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xadb5,0xad));var _0x5adb=function(_0x391ce8,_0x342069){_0x391ce8=_0x391ce8-0x0;var _0x575665=_0xadb5[_0x391ce8];return _0x575665;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CloudProvider']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};
\ No newline at end of file
index 5fc8a03..d320f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bd5=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','util'];(function(_0x2626b9,_0x12ff16){var _0x4af658=function(_0x394f65){while(--_0x394f65){_0x2626b9['push'](_0x2626b9['shift']());}};_0x4af658(++_0x12ff16);}(_0x6bd5,0x1b7));var _0x56bd=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x6bd5[_0x819464];return _0x49dcc0;};'use strict';var _=require('lodash');var util=require(_0x56bd('0x0'));var logger=require(_0x56bd('0x1'))(_0x56bd('0x2'));var moment=require(_0x56bd('0x3'));var BPromise=require(_0x56bd('0x4'));var rp=require(_0x56bd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x56bd('0x6'));var attributes=require(_0x56bd('0x7'));module['exports']=function(_0x5561c3,_0x2c24df){return _0x5561c3[_0x56bd('0x8')](_0x56bd('0x9'),attributes,{'tableName':_0x56bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x557b=['CloudProvider','util','api','request-promise','rimraf','./cloudProvider.attributes','exports'];(function(_0x172133,_0x10246b){var _0x2460e5=function(_0x3c4918){while(--_0x3c4918){_0x172133['push'](_0x172133['shift']());}};_0x2460e5(++_0x10246b);}(_0x557b,0xd3));var _0xb557=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x557b[_0x1fc122];return _0xa2cb13;};'use strict';var _=require('lodash');var util=require(_0xb557('0x0'));var logger=require('../../config/logger')(_0xb557('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb557('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb557('0x3'));var config=require('../../config/environment');var attributes=require(_0xb557('0x4'));module[_0xb557('0x5')]=function(_0x3b72d9,_0x2a2da6){return _0x3b72d9['define'](_0xb557('0x6'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20234d9..573f7a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x119c=['rpc','jayson/promise','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x36cf64,_0x32e2b2){var _0x1a2ab1=function(_0x5ec5f7){while(--_0x5ec5f7){_0x36cf64['push'](_0x36cf64['shift']());}};_0x1a2ab1(++_0x32e2b2);}(_0x119c,0xea));var _0xc119=function(_0x28f32c,_0x4cc342){_0x28f32c=_0x28f32c-0x0;var _0x355402=_0x119c[_0x28f32c];return _0x355402;};'use strict';var _=require('lodash');var util=require(_0xc119('0x0'));var moment=require('moment');var BPromise=require(_0xc119('0x1'));var rs=require(_0xc119('0x2'));var fs=require('fs');var Redis=require(_0xc119('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc119('0x4'));var logger=require(_0xc119('0x5'))(_0xc119('0x6'));var config=require('../../config/environment');var jayson=require(_0xc119('0x7'));var client=jayson['client'][_0xc119('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57bc8a,_0x16b3d2,_0x3dbd20){return new BPromise(function(_0x900301,_0x312f19){return client[_0xc119('0x9')](_0x57bc8a,_0x3dbd20)[_0xc119('0xa')](function(_0x367745){logger[_0xc119('0xb')](_0xc119('0xc'),_0x16b3d2,_0xc119('0xd'));logger[_0xc119('0xe')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x16b3d2,_0xc119('0xd'),JSON['stringify'](_0x367745));if(_0x367745[_0xc119('0xf')]){if(_0x367745[_0xc119('0xf')][_0xc119('0x10')]===0x1f4){logger[_0xc119('0xf')](_0xc119('0xc'),_0x16b3d2,_0x367745[_0xc119('0xf')]['message']);return _0x312f19(_0x367745['error'][_0xc119('0x11')]);}logger[_0xc119('0xf')](_0xc119('0xc'),_0x16b3d2,_0x367745[_0xc119('0xf')][_0xc119('0x11')]);return _0x900301(_0x367745['error'][_0xc119('0x11')]);}else{logger['info'](_0xc119('0xc'),_0x16b3d2,_0xc119('0xd'));_0x900301(_0x367745[_0xc119('0x12')][_0xc119('0x11')]);}})[_0xc119('0x13')](function(_0x3645e9){logger[_0xc119('0xf')](_0xc119('0xc'),_0x16b3d2,_0x3645e9);_0x312f19(_0x3645e9);});});}
\ No newline at end of file
+var _0xf4f4=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','bluebird','randomstring'];(function(_0x304eb3,_0x34406d){var _0x3d2f6f=function(_0x2b4bef){while(--_0x2b4bef){_0x304eb3['push'](_0x304eb3['shift']());}};_0x3d2f6f(++_0x34406d);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x1afcb1,_0x1395ac){_0x1afcb1=_0x1afcb1-0x0;var _0x277bd6=_0xf4f4[_0x1afcb1];return _0x277bd6;};'use strict';var _=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var moment=require('moment');var BPromise=require(_0x4f4f('0x2'));var rs=require(_0x4f4f('0x3'));var fs=require('fs');var Redis=require(_0x4f4f('0x4'));var db=require(_0x4f4f('0x5'))['db'];var utils=require(_0x4f4f('0x6'));var logger=require('../../config/logger')(_0x4f4f('0x7'));var config=require('../../config/environment');var jayson=require(_0x4f4f('0x8'));var client=jayson[_0x4f4f('0x9')][_0x4f4f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ff75a,_0x3c4877,_0x249f8a){return new BPromise(function(_0x2faba9,_0x3768d7){return client['request'](_0x1ff75a,_0x249f8a)[_0x4f4f('0xb')](function(_0x38d110){logger[_0x4f4f('0xc')](_0x4f4f('0xd'),_0x3c4877,_0x4f4f('0xe'));logger[_0x4f4f('0xf')](_0x4f4f('0x10'),_0x3c4877,_0x4f4f('0xe'),JSON['stringify'](_0x38d110));if(_0x38d110['error']){if(_0x38d110[_0x4f4f('0x11')][_0x4f4f('0x12')]===0x1f4){logger[_0x4f4f('0x11')](_0x4f4f('0xd'),_0x3c4877,_0x38d110[_0x4f4f('0x11')][_0x4f4f('0x13')]);return _0x3768d7(_0x38d110['error'][_0x4f4f('0x13')]);}logger['error'](_0x4f4f('0xd'),_0x3c4877,_0x38d110[_0x4f4f('0x11')][_0x4f4f('0x13')]);return _0x2faba9(_0x38d110[_0x4f4f('0x11')]['message']);}else{logger[_0x4f4f('0xc')]('CloudProvider,\x20%s,\x20%s',_0x3c4877,'request\x20sent');_0x2faba9(_0x38d110['result'][_0x4f4f('0x13')]);}})[_0x4f4f('0x14')](function(_0x2d21ed){logger[_0x4f4f('0x11')](_0x4f4f('0xd'),_0x3c4877,_0x2d21ed);_0x3768d7(_0x2d21ed);});});}
\ No newline at end of file
index 38029ad..3e3db3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e94=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','create','put','update','delete','exports','multer','util','connect-timeout','express','Router'];(function(_0x929c7e,_0x38c4cc){var _0x5de099=function(_0xc4e8d8){while(--_0xc4e8d8){_0x929c7e['push'](_0x929c7e['shift']());}};_0x5de099(++_0x38c4cc);}(_0x3e94,0x67));var _0x43e9=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x3e94[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x43e9('0x0'));var util=require(_0x43e9('0x1'));var path=require('path');var timeout=require(_0x43e9('0x2'));var express=require(_0x43e9('0x3'));var router=express[_0x43e9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x43e9('0x5'));var interaction=require(_0x43e9('0x6'));var config=require(_0x43e9('0x7'));var controller=require('./cloudProvider.controller');router[_0x43e9('0x8')]('/',auth['isAuthenticated'](),controller[_0x43e9('0x9')]);router['get'](_0x43e9('0xa'),auth[_0x43e9('0xb')](),controller[_0x43e9('0xc')]);router['post']('/',auth[_0x43e9('0xb')](),controller[_0x43e9('0xd')]);router[_0x43e9('0xe')](_0x43e9('0xa'),auth[_0x43e9('0xb')](),controller[_0x43e9('0xf')]);router[_0x43e9('0x10')](_0x43e9('0xa'),auth[_0x43e9('0xb')](),controller['destroy']);module[_0x43e9('0x11')]=router;
\ No newline at end of file
+var _0x3174=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','update','delete','multer','path','Router','fs-extra','../../components/auth/service'];(function(_0x586690,_0x2af85b){var _0x4521dd=function(_0x5e4cb1){while(--_0x5e4cb1){_0x586690['push'](_0x586690['shift']());}};_0x4521dd(++_0x2af85b);}(_0x3174,0x154));var _0x4317=function(_0x1cf0af,_0x438faf){_0x1cf0af=_0x1cf0af-0x0;var _0x2929b3=_0x3174[_0x1cf0af];return _0x2929b3;};'use strict';var multer=require(_0x4317('0x0'));var util=require('util');var path=require(_0x4317('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4317('0x2')]();var fs_extra=require(_0x4317('0x3'));var auth=require(_0x4317('0x4'));var interaction=require(_0x4317('0x5'));var config=require(_0x4317('0x6'));var controller=require('./cloudProvider.controller');router[_0x4317('0x7')]('/',auth[_0x4317('0x8')](),controller[_0x4317('0x9')]);router[_0x4317('0x7')](_0x4317('0xa'),auth[_0x4317('0x8')](),controller['show']);router[_0x4317('0xb')]('/',auth[_0x4317('0x8')](),controller[_0x4317('0xc')]);router['put'](_0x4317('0xa'),auth[_0x4317('0x8')](),controller[_0x4317('0xd')]);router[_0x4317('0xe')](_0x4317('0xa'),auth[_0x4317('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8d84426..0a7ed85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5292=['exports','name','STRING','sequelize'];(function(_0x4c0d4f,_0x2c8163){var _0x5b4647=function(_0xed6abd){while(--_0xed6abd){_0x4c0d4f['push'](_0x4c0d4f['shift']());}};_0x5b4647(++_0x2c8163);}(_0x5292,0xf7));var _0x2529=function(_0x5ba35a,_0x5e5113){_0x5ba35a=_0x5ba35a-0x0;var _0x5900dc=_0x5292[_0x5ba35a];return _0x5900dc;};'use strict';var Sequelize=require(_0x2529('0x0'));module[_0x2529('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x2529('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x2529('0x3')]},'website':{'type':Sequelize[_0x2529('0x3')]},'phone':{'type':Sequelize[_0x2529('0x3')]},'fax':{'type':Sequelize[_0x2529('0x3')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x2529('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x2529('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x2529('0x3')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x2529('0x3')]},'sCountry':{'type':Sequelize[_0x2529('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xce6e=['sequelize','STRING'];(function(_0x3ea7f7,_0x58d463){var _0x36831a=function(_0x7dad2){while(--_0x7dad2){_0x3ea7f7['push'](_0x3ea7f7['shift']());}};_0x36831a(++_0x58d463);}(_0xce6e,0x7e));var _0xece6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce6e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xece6('0x0'));module['exports']={'name':{'type':Sequelize[_0xece6('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xece6('0x1')]},'companyId':{'type':Sequelize[_0xece6('0x1')]},'website':{'type':Sequelize[_0xece6('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xece6('0x1')]},'type':{'type':Sequelize[_0xece6('0x1')]},'street':{'type':Sequelize[_0xece6('0x1')]},'postalCode':{'type':Sequelize[_0xece6('0x1')]},'city':{'type':Sequelize[_0xece6('0x1')]},'country':{'type':Sequelize[_0xece6('0x1')]},'email':{'type':Sequelize[_0xece6('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xece6('0x1')]},'sStreet':{'type':Sequelize[_0xece6('0x1')]},'sPostalCode':{'type':Sequelize[_0xece6('0x1')]},'sCity':{'type':Sequelize[_0xece6('0x1')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xece6('0x1')]}};
\ No newline at end of file
index be30ec7..42f90d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1491=['CmContact','ids','omit','getContacts','findOne','order','pick','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../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','reject','save','update','then','destroy','get','Companies','UserProfileResource','error','name','CmCompany','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','map','filter','merge','options','includeAll','include','findAll','catch','params','rawAttributes','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts'];(function(_0x118900,_0x33ea03){var _0x1a308d=function(_0xef657){while(--_0xef657){_0x118900['push'](_0x118900['shift']());}};_0x1a308d(++_0x33ea03);}(_0x1491,0x1a1));var _0x1149=function(_0x16c033,_0x47c180){_0x16c033=_0x16c033-0x0;var _0x113421=_0x1491[_0x16c033];return _0x113421;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1149('0x0'));var jsonpatch=require(_0x1149('0x1'));var rp=require(_0x1149('0x2'));var moment=require(_0x1149('0x3'));var BPromise=require(_0x1149('0x4'));var Mustache=require(_0x1149('0x5'));var util=require(_0x1149('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x1149('0x7'));var ejs=require(_0x1149('0x8'));var fs=require('fs');var fs_extra=require(_0x1149('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1149('0xa'));var jsforce=require(_0x1149('0xb'));var deskjs=require(_0x1149('0xc'));var toCsv=require(_0x1149('0x7'));var querystring=require('querystring');var Papa=require(_0x1149('0xd'));var Redis=require(_0x1149('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1149('0xf'));var hardwareService=require(_0x1149('0x10'));var logger=require(_0x1149('0x11'))('api');var utils=require(_0x1149('0x12'));var config=require(_0x1149('0x13'));var licenseUtil=require(_0x1149('0x14'));var db=require(_0x1149('0x15'))['db'];function respondWithStatusCode(_0x3992cf,_0x1f568e){_0x1f568e=_0x1f568e||0xcc;return function(_0x6cf2b){if(_0x6cf2b){return _0x3992cf[_0x1149('0x16')](_0x1f568e);}return _0x3992cf[_0x1149('0x17')](_0x1f568e)[_0x1149('0x18')]();};}function respondWithResult(_0x16cfb3,_0x1f7a77){_0x1f7a77=_0x1f7a77||0xc8;return function(_0x1c75e9){if(_0x1c75e9){return _0x16cfb3[_0x1149('0x17')](_0x1f7a77)[_0x1149('0x19')](_0x1c75e9);}};}function respondWithFilteredResult(_0x22ef8c,_0x2d3f9f){return function(_0x2d3c8c){if(_0x2d3c8c){var _0x42f765=typeof _0x2d3f9f['offset']===_0x1149('0x1a')&&typeof _0x2d3f9f[_0x1149('0x1b')]===_0x1149('0x1a');var _0xc6b052=_0x2d3c8c[_0x1149('0x1c')];var _0x469326=_0x42f765?0x0:_0x2d3f9f[_0x1149('0x1d')];var _0x15652d=_0x42f765?_0x2d3c8c[_0x1149('0x1c')]:_0x2d3f9f[_0x1149('0x1d')]+_0x2d3f9f[_0x1149('0x1b')];var _0x5d7496;if(_0x15652d>=_0xc6b052){_0x15652d=_0xc6b052;_0x5d7496=0xc8;}else{_0x5d7496=0xce;}_0x22ef8c[_0x1149('0x17')](_0x5d7496);return _0x22ef8c[_0x1149('0x1e')](_0x1149('0x1f'),_0x469326+'-'+_0x15652d+'/'+_0xc6b052)[_0x1149('0x19')](_0x2d3c8c);}return null;};}function patchUpdates(_0x251035){return function(_0x7cc34c){try{jsonpatch['apply'](_0x7cc34c,_0x251035,!![]);}catch(_0x1b005e){return BPromise[_0x1149('0x20')](_0x1b005e);}return _0x7cc34c[_0x1149('0x21')]();};}function saveUpdates(_0xc35a42,_0x16924e){return function(_0x14bb7b){if(_0x14bb7b){return _0x14bb7b[_0x1149('0x22')](_0xc35a42)[_0x1149('0x23')](function(_0xfaf3a1){return _0xfaf3a1;});}return null;};}function removeEntity(_0x5891b7,_0x1c927a){return function(_0x166ac5){if(_0x166ac5){return _0x166ac5[_0x1149('0x24')]()[_0x1149('0x23')](function(){var _0x2facea=_0x166ac5[_0x1149('0x25')]({'plain':!![]});var _0x1d69b7=_0x1149('0x26');return db[_0x1149('0x27')][_0x1149('0x24')]({'where':{'type':_0x1d69b7,'resourceId':_0x2facea['id']}})['then'](function(){return _0x166ac5;});})[_0x1149('0x23')](function(){_0x5891b7[_0x1149('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51805e,_0x15fada){return function(_0x31e4db){if(!_0x31e4db){_0x51805e['sendStatus'](0x194);}return _0x31e4db;};}function handleError(_0x5fd887,_0x1d75e2){_0x1d75e2=_0x1d75e2||0x1f4;return function(_0xbcbc7){logger[_0x1149('0x28')](_0xbcbc7['stack']);if(_0xbcbc7[_0x1149('0x29')]){delete _0xbcbc7[_0x1149('0x29')];}_0x5fd887[_0x1149('0x17')](_0x1d75e2)['send'](_0xbcbc7);};}exports['index']=function(_0x3ca6ce,_0x107b7e){var _0x54cc28={},_0x85faa6={},_0x32ff1f={'count':0x0,'rows':[]};return db[_0x1149('0x2a')]['describe']()['then'](function(_0x24b73e){_0x85faa6[_0x1149('0x2b')]=_['keys'](_0x24b73e);_0x85faa6[_0x1149('0x2c')]=_['keys'](_0x3ca6ce[_0x1149('0x2c')]);_0x85faa6[_0x1149('0x2d')]=_[_0x1149('0x2e')](_0x85faa6[_0x1149('0x2b')],_0x85faa6[_0x1149('0x2c')]);_0x54cc28[_0x1149('0x2f')]=_['intersection'](_0x85faa6[_0x1149('0x2b')],qs[_0x1149('0x30')](_0x3ca6ce[_0x1149('0x2c')][_0x1149('0x30')]));_0x54cc28[_0x1149('0x2f')]=_0x54cc28['attributes'][_0x1149('0x31')]?_0x54cc28[_0x1149('0x2f')]:_0x85faa6['model'];if(!_0x3ca6ce[_0x1149('0x2c')][_0x1149('0x32')](_0x1149('0x33'))){_0x54cc28[_0x1149('0x1b')]=qs[_0x1149('0x1b')](_0x3ca6ce[_0x1149('0x2c')][_0x1149('0x1b')]);_0x54cc28[_0x1149('0x1d')]=qs[_0x1149('0x1d')](_0x3ca6ce[_0x1149('0x2c')]['offset']);}_0x54cc28['order']=qs[_0x1149('0x34')](_0x3ca6ce[_0x1149('0x2c')][_0x1149('0x34')]);_0x54cc28[_0x1149('0x35')]=qs[_0x1149('0x2d')](_['pick'](_0x3ca6ce[_0x1149('0x2c')],_0x85faa6['filters']),_0x24b73e);if(_0x3ca6ce[_0x1149('0x2c')]['filter']){_0x54cc28[_0x1149('0x35')]=_['merge'](_0x54cc28[_0x1149('0x35')],{'$or':_[_0x1149('0x36')](_0x54cc28[_0x1149('0x2f')],function(_0x23ef36){var _0x141556={};_0x141556[_0x23ef36]={'$like':'%'+_0x3ca6ce['query'][_0x1149('0x37')]+'%'};return _0x141556;})});}_0x54cc28=_[_0x1149('0x38')]({},_0x54cc28,_0x3ca6ce[_0x1149('0x39')]);var _0xb337da={'where':_0x54cc28[_0x1149('0x35')]};return db['CmCompany'][_0x1149('0x1c')](_0xb337da)[_0x1149('0x23')](function(_0x6ad30b){_0x32ff1f[_0x1149('0x1c')]=_0x6ad30b;if(_0x3ca6ce[_0x1149('0x2c')][_0x1149('0x3a')]){_0x54cc28[_0x1149('0x3b')]=[{'all':!![]}];}return db[_0x1149('0x2a')][_0x1149('0x3c')](_0x54cc28);})['then'](function(_0x3d1365){_0x32ff1f['rows']=_0x3d1365;return _0x32ff1f;})[_0x1149('0x23')](respondWithFilteredResult(_0x107b7e,_0x54cc28))[_0x1149('0x3d')](handleError(_0x107b7e,null));})[_0x1149('0x3d')](handleError(_0x107b7e,null));};exports['show']=function(_0x4c3eb6,_0x1b4dfc){var _0xa49f00={'raw':![],'where':{'id':_0x4c3eb6[_0x1149('0x3e')]['id']}},_0x4e7ca6={};_0x4e7ca6[_0x1149('0x2b')]=_['keys'](db[_0x1149('0x2a')][_0x1149('0x3f')]);_0x4e7ca6[_0x1149('0x2c')]=_[_0x1149('0x40')](_0x4c3eb6[_0x1149('0x2c')]);_0x4e7ca6[_0x1149('0x2d')]=_[_0x1149('0x2e')](_0x4e7ca6[_0x1149('0x2b')],_0x4e7ca6[_0x1149('0x2c')]);_0xa49f00['attributes']=_[_0x1149('0x2e')](_0x4e7ca6[_0x1149('0x2b')],qs['fields'](_0x4c3eb6[_0x1149('0x2c')][_0x1149('0x30')]));_0xa49f00['attributes']=_0xa49f00[_0x1149('0x2f')][_0x1149('0x31')]?_0xa49f00[_0x1149('0x2f')]:_0x4e7ca6[_0x1149('0x2b')];if(_0x4c3eb6[_0x1149('0x2c')]['includeAll']){_0xa49f00[_0x1149('0x3b')]=[{'all':!![]}];}_0xa49f00=_['merge']({},_0xa49f00,_0x4c3eb6['options']);return db['CmCompany'][_0x1149('0x41')](_0xa49f00)[_0x1149('0x23')](handleEntityNotFound(_0x1b4dfc,null))['then'](respondWithResult(_0x1b4dfc,null))[_0x1149('0x3d')](handleError(_0x1b4dfc,null));};exports[_0x1149('0x42')]=function(_0x5e65af,_0x4222cb){return db['CmCompany'][_0x1149('0x42')](_0x5e65af[_0x1149('0x43')],{})[_0x1149('0x23')](function(_0x21ca33){var _0xb2ecd2=_0x5e65af[_0x1149('0x44')]['get']({'plain':!![]});if(!_0xb2ecd2)throw new Error(_0x1149('0x45'));if(_0xb2ecd2[_0x1149('0x46')]===_0x1149('0x44')){var _0x175f5f=_0x21ca33[_0x1149('0x25')]({'plain':!![]});var _0x2ee05f='Companies';return db[_0x1149('0x47')][_0x1149('0x41')]({'where':{'name':_0x2ee05f,'userProfileId':_0xb2ecd2['userProfileId']},'raw':!![]})['then'](function(_0x3642a6){if(_0x3642a6&&_0x3642a6[_0x1149('0x48')]===0x0){return db[_0x1149('0x27')][_0x1149('0x42')]({'name':_0x175f5f[_0x1149('0x29')],'resourceId':_0x175f5f['id'],'type':_0x3642a6[_0x1149('0x29')],'sectionId':_0x3642a6['id']},{})['then'](function(){return _0x21ca33;});}else{return _0x21ca33;}})[_0x1149('0x3d')](function(_0xa47183){logger['error'](_0x1149('0x49'),_0xa47183);throw _0xa47183;});}return _0x21ca33;})[_0x1149('0x23')](respondWithResult(_0x4222cb,0xc9))[_0x1149('0x3d')](handleError(_0x4222cb,null));};exports[_0x1149('0x22')]=function(_0x37370a,_0x2fed72){if(_0x37370a['body']['id']){delete _0x37370a[_0x1149('0x43')]['id'];}return db[_0x1149('0x2a')][_0x1149('0x41')]({'where':{'id':_0x37370a[_0x1149('0x3e')]['id']}})['then'](handleEntityNotFound(_0x2fed72,null))[_0x1149('0x23')](saveUpdates(_0x37370a[_0x1149('0x43')],null))[_0x1149('0x23')](respondWithResult(_0x2fed72,null))[_0x1149('0x3d')](handleError(_0x2fed72,null));};exports[_0x1149('0x24')]=function(_0x49d4f6,_0x796a1d){return db[_0x1149('0x2a')][_0x1149('0x41')]({'where':{'id':_0x49d4f6[_0x1149('0x3e')]['id']}})['then'](handleEntityNotFound(_0x796a1d,null))[_0x1149('0x23')](removeEntity(_0x796a1d,null))[_0x1149('0x3d')](handleError(_0x796a1d,null));};exports['describe']=function(_0xfd8d5c,_0x3c12ab){return db[_0x1149('0x2a')]['describe']()['then'](respondWithResult(_0x3c12ab,null))[_0x1149('0x3d')](handleError(_0x3c12ab,null));};exports[_0x1149('0x4a')]=function(_0x252075,_0x50388f,_0x19b739){return db[_0x1149('0x4b')]['find']({'where':{'id':_0x252075[_0x1149('0x3e')]['id']}})[_0x1149('0x23')](handleEntityNotFound(_0x50388f,null))[_0x1149('0x23')](function(_0x2eca5e){if(_0x2eca5e){return _0x2eca5e[_0x1149('0x4a')](_0x252075[_0x1149('0x43')][_0x1149('0x4c')],_[_0x1149('0x4d')](_0x252075[_0x1149('0x43')],[_0x1149('0x4c'),'id'])||{});}})[_0x1149('0x23')](respondWithResult(_0x50388f,null))['catch'](handleError(_0x50388f,null));};exports[_0x1149('0x4e')]=function(_0x256aae,_0x4e2d11,_0x2f84f0){var _0x6adb4e={};var _0x3c1ca1={};var _0x490672;var _0x119cc1;return db[_0x1149('0x2a')][_0x1149('0x4f')]({'where':{'id':_0x256aae[_0x1149('0x3e')]['id']}})[_0x1149('0x23')](handleEntityNotFound(_0x4e2d11,null))[_0x1149('0x23')](function(_0x4ac357){if(_0x4ac357){_0x490672=_0x4ac357;_0x3c1ca1[_0x1149('0x2b')]=_[_0x1149('0x40')](db[_0x1149('0x4b')]['rawAttributes']);_0x3c1ca1[_0x1149('0x2c')]=_[_0x1149('0x40')](_0x256aae['query']);_0x3c1ca1['filters']=_[_0x1149('0x2e')](_0x3c1ca1[_0x1149('0x2b')],_0x3c1ca1[_0x1149('0x2c')]);_0x6adb4e['attributes']=_[_0x1149('0x2e')](_0x3c1ca1[_0x1149('0x2b')],qs[_0x1149('0x30')](_0x256aae[_0x1149('0x2c')]['fields']));_0x6adb4e[_0x1149('0x2f')]=_0x6adb4e[_0x1149('0x2f')][_0x1149('0x31')]?_0x6adb4e[_0x1149('0x2f')]:_0x3c1ca1['model'];_0x6adb4e[_0x1149('0x50')]=qs[_0x1149('0x34')](_0x256aae[_0x1149('0x2c')][_0x1149('0x34')]);_0x6adb4e[_0x1149('0x35')]=qs[_0x1149('0x2d')](_[_0x1149('0x51')](_0x256aae[_0x1149('0x2c')],_0x3c1ca1[_0x1149('0x2d')]));if(_0x256aae[_0x1149('0x2c')]['filter']){_0x6adb4e[_0x1149('0x35')]=_[_0x1149('0x38')](_0x6adb4e[_0x1149('0x35')],{'$or':_[_0x1149('0x36')](_0x6adb4e[_0x1149('0x2f')],function(_0x5c37cc){var _0x49dc1a={};_0x49dc1a[_0x5c37cc]={'$like':'%'+_0x256aae[_0x1149('0x2c')][_0x1149('0x37')]+'%'};return _0x49dc1a;})});}_0x6adb4e=_[_0x1149('0x38')]({},_0x6adb4e,_0x256aae['options']);return _0x490672[_0x1149('0x4e')](_0x6adb4e);}})[_0x1149('0x23')](function(_0x5cf4b2){if(_0x5cf4b2){_0x119cc1=_0x5cf4b2['length'];if(!_0x256aae[_0x1149('0x2c')][_0x1149('0x32')]('nolimit')){_0x6adb4e[_0x1149('0x1b')]=qs['limit'](_0x256aae[_0x1149('0x2c')][_0x1149('0x1b')]);_0x6adb4e[_0x1149('0x1d')]=qs[_0x1149('0x1d')](_0x256aae[_0x1149('0x2c')]['offset']);}return _0x490672[_0x1149('0x4e')](_0x6adb4e);}})[_0x1149('0x23')](function(_0x1abac5){if(_0x1abac5){return _0x1abac5?{'count':_0x119cc1,'rows':_0x1abac5}:null;}})[_0x1149('0x23')](respondWithResult(_0x4e2d11,null))['catch'](handleError(_0x4e2d11,null));};
\ No newline at end of file
+var _0x3ba2=['error','stack','name','send','CmCompany','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','map','options','includeAll','include','rows','catch','show','params','rawAttributes','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','create','describe','addContacts','CmContact','ids','omit','findOne','getContacts','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','save','update','then','get','Companies','UserProfileResource','destroy','end'];(function(_0x3cb73f,_0x1e6ef5){var _0x4988b8=function(_0x501408){while(--_0x501408){_0x3cb73f['push'](_0x3cb73f['shift']());}};_0x4988b8(++_0x1e6ef5);}(_0x3ba2,0x80));var _0x23ba=function(_0x103b59,_0x19eab0){_0x103b59=_0x103b59-0x0;var _0x4cca06=_0x3ba2[_0x103b59];return _0x4cca06;};'use strict';var emlformat=require(_0x23ba('0x0'));var rimraf=require(_0x23ba('0x1'));var zipdir=require(_0x23ba('0x2'));var jsonpatch=require(_0x23ba('0x3'));var rp=require(_0x23ba('0x4'));var moment=require('moment');var BPromise=require(_0x23ba('0x5'));var Mustache=require(_0x23ba('0x6'));var util=require('util');var path=require('path');var sox=require(_0x23ba('0x7'));var csv=require(_0x23ba('0x8'));var ejs=require(_0x23ba('0x9'));var fs=require('fs');var fs_extra=require(_0x23ba('0xa'));var _=require(_0x23ba('0xb'));var squel=require('squel');var crypto=require(_0x23ba('0xc'));var jsforce=require(_0x23ba('0xd'));var deskjs=require(_0x23ba('0xe'));var toCsv=require(_0x23ba('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x23ba('0xf'));var authService=require(_0x23ba('0x10'));var qs=require(_0x23ba('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x23ba('0x12'));var logger=require(_0x23ba('0x13'))(_0x23ba('0x14'));var utils=require('../../config/utils');var config=require(_0x23ba('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x23ba('0x16'))['db'];function respondWithStatusCode(_0x2cfe07,_0x130ddf){_0x130ddf=_0x130ddf||0xcc;return function(_0x462106){if(_0x462106){return _0x2cfe07[_0x23ba('0x17')](_0x130ddf);}return _0x2cfe07[_0x23ba('0x18')](_0x130ddf)['end']();};}function respondWithResult(_0x352744,_0x36b094){_0x36b094=_0x36b094||0xc8;return function(_0x22f403){if(_0x22f403){return _0x352744[_0x23ba('0x18')](_0x36b094)[_0x23ba('0x19')](_0x22f403);}};}function respondWithFilteredResult(_0x535bf2,_0x262e21){return function(_0xc9574a){if(_0xc9574a){var _0x1a709f=typeof _0x262e21[_0x23ba('0x1a')]==='undefined'&&typeof _0x262e21[_0x23ba('0x1b')]===_0x23ba('0x1c');var _0x5ac058=_0xc9574a[_0x23ba('0x1d')];var _0x1e6912=_0x1a709f?0x0:_0x262e21[_0x23ba('0x1a')];var _0x2fce46=_0x1a709f?_0xc9574a[_0x23ba('0x1d')]:_0x262e21[_0x23ba('0x1a')]+_0x262e21[_0x23ba('0x1b')];var _0x461324;if(_0x2fce46>=_0x5ac058){_0x2fce46=_0x5ac058;_0x461324=0xc8;}else{_0x461324=0xce;}_0x535bf2['status'](_0x461324);return _0x535bf2[_0x23ba('0x1e')](_0x23ba('0x1f'),_0x1e6912+'-'+_0x2fce46+'/'+_0x5ac058)[_0x23ba('0x19')](_0xc9574a);}return null;};}function patchUpdates(_0x5a63e6){return function(_0x2feb98){try{jsonpatch['apply'](_0x2feb98,_0x5a63e6,!![]);}catch(_0x15b854){return BPromise['reject'](_0x15b854);}return _0x2feb98[_0x23ba('0x20')]();};}function saveUpdates(_0x11315b,_0x5c1fd4){return function(_0x475edc){if(_0x475edc){return _0x475edc[_0x23ba('0x21')](_0x11315b)['then'](function(_0x1acd0a){return _0x1acd0a;});}return null;};}function removeEntity(_0x362170,_0x23b982){return function(_0x22ffed){if(_0x22ffed){return _0x22ffed['destroy']()[_0x23ba('0x22')](function(){var _0x19f78a=_0x22ffed[_0x23ba('0x23')]({'plain':!![]});var _0x93db8f=_0x23ba('0x24');return db[_0x23ba('0x25')][_0x23ba('0x26')]({'where':{'type':_0x93db8f,'resourceId':_0x19f78a['id']}})[_0x23ba('0x22')](function(){return _0x22ffed;});})['then'](function(){_0x362170[_0x23ba('0x18')](0xcc)[_0x23ba('0x27')]();});}};}function handleEntityNotFound(_0x215905,_0x435040){return function(_0xabd932){if(!_0xabd932){_0x215905[_0x23ba('0x17')](0x194);}return _0xabd932;};}function handleError(_0x1cd1a5,_0x280996){_0x280996=_0x280996||0x1f4;return function(_0x51fa3e){logger[_0x23ba('0x28')](_0x51fa3e[_0x23ba('0x29')]);if(_0x51fa3e[_0x23ba('0x2a')]){delete _0x51fa3e[_0x23ba('0x2a')];}_0x1cd1a5[_0x23ba('0x18')](_0x280996)[_0x23ba('0x2b')](_0x51fa3e);};}exports['index']=function(_0x444cf7,_0x439e97){var _0x7ce0b={},_0x6e9681={},_0x464f4b={'count':0x0,'rows':[]};return db[_0x23ba('0x2c')]['describe']()[_0x23ba('0x22')](function(_0x32c055){_0x6e9681[_0x23ba('0x2d')]=_[_0x23ba('0x2e')](_0x32c055);_0x6e9681[_0x23ba('0x2f')]=_['keys'](_0x444cf7[_0x23ba('0x2f')]);_0x6e9681[_0x23ba('0x30')]=_[_0x23ba('0x31')](_0x6e9681[_0x23ba('0x2d')],_0x6e9681['query']);_0x7ce0b['attributes']=_[_0x23ba('0x31')](_0x6e9681['model'],qs[_0x23ba('0x32')](_0x444cf7[_0x23ba('0x2f')][_0x23ba('0x32')]));_0x7ce0b[_0x23ba('0x33')]=_0x7ce0b['attributes'][_0x23ba('0x34')]?_0x7ce0b[_0x23ba('0x33')]:_0x6e9681[_0x23ba('0x2d')];if(!_0x444cf7[_0x23ba('0x2f')][_0x23ba('0x35')](_0x23ba('0x36'))){_0x7ce0b['limit']=qs[_0x23ba('0x1b')](_0x444cf7[_0x23ba('0x2f')][_0x23ba('0x1b')]);_0x7ce0b[_0x23ba('0x1a')]=qs['offset'](_0x444cf7['query'][_0x23ba('0x1a')]);}_0x7ce0b[_0x23ba('0x37')]=qs[_0x23ba('0x38')](_0x444cf7['query'][_0x23ba('0x38')]);_0x7ce0b['where']=qs[_0x23ba('0x30')](_[_0x23ba('0x39')](_0x444cf7[_0x23ba('0x2f')],_0x6e9681[_0x23ba('0x30')]),_0x32c055);if(_0x444cf7[_0x23ba('0x2f')][_0x23ba('0x3a')]){_0x7ce0b['where']=_[_0x23ba('0x3b')](_0x7ce0b[_0x23ba('0x3c')],{'$or':_[_0x23ba('0x3d')](_0x7ce0b[_0x23ba('0x33')],function(_0xdabe9){var _0x1b3ce8={};_0x1b3ce8[_0xdabe9]={'$like':'%'+_0x444cf7['query'][_0x23ba('0x3a')]+'%'};return _0x1b3ce8;})});}_0x7ce0b=_[_0x23ba('0x3b')]({},_0x7ce0b,_0x444cf7[_0x23ba('0x3e')]);var _0x22792d={'where':_0x7ce0b['where']};return db[_0x23ba('0x2c')]['count'](_0x22792d)[_0x23ba('0x22')](function(_0x7ebcd){_0x464f4b[_0x23ba('0x1d')]=_0x7ebcd;if(_0x444cf7[_0x23ba('0x2f')][_0x23ba('0x3f')]){_0x7ce0b[_0x23ba('0x40')]=[{'all':!![]}];}return db[_0x23ba('0x2c')]['findAll'](_0x7ce0b);})['then'](function(_0x2fa669){_0x464f4b[_0x23ba('0x41')]=_0x2fa669;return _0x464f4b;})[_0x23ba('0x22')](respondWithFilteredResult(_0x439e97,_0x7ce0b))[_0x23ba('0x42')](handleError(_0x439e97,null));})['catch'](handleError(_0x439e97,null));};exports[_0x23ba('0x43')]=function(_0x109021,_0x454c87){var _0x2a3fe8={'raw':![],'where':{'id':_0x109021[_0x23ba('0x44')]['id']}},_0x592d0a={};_0x592d0a['model']=_[_0x23ba('0x2e')](db[_0x23ba('0x2c')][_0x23ba('0x45')]);_0x592d0a[_0x23ba('0x2f')]=_[_0x23ba('0x2e')](_0x109021['query']);_0x592d0a[_0x23ba('0x30')]=_[_0x23ba('0x31')](_0x592d0a['model'],_0x592d0a[_0x23ba('0x2f')]);_0x2a3fe8[_0x23ba('0x33')]=_[_0x23ba('0x31')](_0x592d0a[_0x23ba('0x2d')],qs[_0x23ba('0x32')](_0x109021[_0x23ba('0x2f')]['fields']));_0x2a3fe8['attributes']=_0x2a3fe8[_0x23ba('0x33')]['length']?_0x2a3fe8[_0x23ba('0x33')]:_0x592d0a['model'];if(_0x109021[_0x23ba('0x2f')][_0x23ba('0x3f')]){_0x2a3fe8['include']=[{'all':!![]}];}_0x2a3fe8=_[_0x23ba('0x3b')]({},_0x2a3fe8,_0x109021[_0x23ba('0x3e')]);return db[_0x23ba('0x2c')][_0x23ba('0x46')](_0x2a3fe8)['then'](handleEntityNotFound(_0x454c87,null))[_0x23ba('0x22')](respondWithResult(_0x454c87,null))['catch'](handleError(_0x454c87,null));};exports['create']=function(_0x4227cf,_0x1ba588){return db[_0x23ba('0x2c')]['create'](_0x4227cf[_0x23ba('0x47')],{})[_0x23ba('0x22')](function(_0x2436ef){var _0x2a55f1=_0x4227cf['user']['get']({'plain':!![]});if(!_0x2a55f1)throw new Error(_0x23ba('0x48'));if(_0x2a55f1['role']===_0x23ba('0x49')){var _0x720d0c=_0x2436ef[_0x23ba('0x23')]({'plain':!![]});var _0x259e9f=_0x23ba('0x24');return db[_0x23ba('0x4a')][_0x23ba('0x46')]({'where':{'name':_0x259e9f,'userProfileId':_0x2a55f1[_0x23ba('0x4b')]},'raw':!![]})['then'](function(_0x364cf1){if(_0x364cf1&&_0x364cf1['autoAssociation']===0x0){return db[_0x23ba('0x25')][_0x23ba('0x4c')]({'name':_0x720d0c[_0x23ba('0x2a')],'resourceId':_0x720d0c['id'],'type':_0x364cf1['name'],'sectionId':_0x364cf1['id']},{})[_0x23ba('0x22')](function(){return _0x2436ef;});}else{return _0x2436ef;}})[_0x23ba('0x42')](function(_0x20deb6){logger[_0x23ba('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x20deb6);throw _0x20deb6;});}return _0x2436ef;})['then'](respondWithResult(_0x1ba588,0xc9))[_0x23ba('0x42')](handleError(_0x1ba588,null));};exports['update']=function(_0x30bb57,_0x31dd1f){if(_0x30bb57[_0x23ba('0x47')]['id']){delete _0x30bb57[_0x23ba('0x47')]['id'];}return db[_0x23ba('0x2c')][_0x23ba('0x46')]({'where':{'id':_0x30bb57[_0x23ba('0x44')]['id']}})[_0x23ba('0x22')](handleEntityNotFound(_0x31dd1f,null))[_0x23ba('0x22')](saveUpdates(_0x30bb57[_0x23ba('0x47')],null))[_0x23ba('0x22')](respondWithResult(_0x31dd1f,null))['catch'](handleError(_0x31dd1f,null));};exports[_0x23ba('0x26')]=function(_0x424ebf,_0x29275e){return db[_0x23ba('0x2c')][_0x23ba('0x46')]({'where':{'id':_0x424ebf[_0x23ba('0x44')]['id']}})[_0x23ba('0x22')](handleEntityNotFound(_0x29275e,null))[_0x23ba('0x22')](removeEntity(_0x29275e,null))['catch'](handleError(_0x29275e,null));};exports[_0x23ba('0x4d')]=function(_0x101aef,_0x429d71){return db[_0x23ba('0x2c')][_0x23ba('0x4d')]()[_0x23ba('0x22')](respondWithResult(_0x429d71,null))[_0x23ba('0x42')](handleError(_0x429d71,null));};exports[_0x23ba('0x4e')]=function(_0x1a7d49,_0xa9767d,_0x3f46a5){return db[_0x23ba('0x4f')][_0x23ba('0x46')]({'where':{'id':_0x1a7d49[_0x23ba('0x44')]['id']}})['then'](handleEntityNotFound(_0xa9767d,null))[_0x23ba('0x22')](function(_0x2de616){if(_0x2de616){return _0x2de616[_0x23ba('0x4e')](_0x1a7d49['body'][_0x23ba('0x50')],_[_0x23ba('0x51')](_0x1a7d49[_0x23ba('0x47')],[_0x23ba('0x50'),'id'])||{});}})[_0x23ba('0x22')](respondWithResult(_0xa9767d,null))[_0x23ba('0x42')](handleError(_0xa9767d,null));};exports['getContacts']=function(_0x1401ac,_0x3c6239,_0x28cdb0){var _0x82412a={};var _0x2330f7={};var _0x47c979;var _0x3ccd57;return db[_0x23ba('0x2c')][_0x23ba('0x52')]({'where':{'id':_0x1401ac[_0x23ba('0x44')]['id']}})[_0x23ba('0x22')](handleEntityNotFound(_0x3c6239,null))[_0x23ba('0x22')](function(_0x426c7d){if(_0x426c7d){_0x47c979=_0x426c7d;_0x2330f7[_0x23ba('0x2d')]=_[_0x23ba('0x2e')](db['CmContact'][_0x23ba('0x45')]);_0x2330f7[_0x23ba('0x2f')]=_[_0x23ba('0x2e')](_0x1401ac[_0x23ba('0x2f')]);_0x2330f7[_0x23ba('0x30')]=_[_0x23ba('0x31')](_0x2330f7[_0x23ba('0x2d')],_0x2330f7[_0x23ba('0x2f')]);_0x82412a[_0x23ba('0x33')]=_[_0x23ba('0x31')](_0x2330f7[_0x23ba('0x2d')],qs[_0x23ba('0x32')](_0x1401ac[_0x23ba('0x2f')][_0x23ba('0x32')]));_0x82412a[_0x23ba('0x33')]=_0x82412a['attributes']['length']?_0x82412a['attributes']:_0x2330f7[_0x23ba('0x2d')];_0x82412a['order']=qs[_0x23ba('0x38')](_0x1401ac[_0x23ba('0x2f')][_0x23ba('0x38')]);_0x82412a[_0x23ba('0x3c')]=qs[_0x23ba('0x30')](_[_0x23ba('0x39')](_0x1401ac[_0x23ba('0x2f')],_0x2330f7[_0x23ba('0x30')]));if(_0x1401ac['query'][_0x23ba('0x3a')]){_0x82412a[_0x23ba('0x3c')]=_['merge'](_0x82412a['where'],{'$or':_[_0x23ba('0x3d')](_0x82412a['attributes'],function(_0x51bdca){var _0x59ca4e={};_0x59ca4e[_0x51bdca]={'$like':'%'+_0x1401ac[_0x23ba('0x2f')]['filter']+'%'};return _0x59ca4e;})});}_0x82412a=_[_0x23ba('0x3b')]({},_0x82412a,_0x1401ac[_0x23ba('0x3e')]);return _0x47c979[_0x23ba('0x53')](_0x82412a);}})[_0x23ba('0x22')](function(_0x4823c0){if(_0x4823c0){_0x3ccd57=_0x4823c0[_0x23ba('0x34')];if(!_0x1401ac[_0x23ba('0x2f')][_0x23ba('0x35')](_0x23ba('0x36'))){_0x82412a[_0x23ba('0x1b')]=qs['limit'](_0x1401ac[_0x23ba('0x2f')][_0x23ba('0x1b')]);_0x82412a[_0x23ba('0x1a')]=qs[_0x23ba('0x1a')](_0x1401ac[_0x23ba('0x2f')]['offset']);}return _0x47c979[_0x23ba('0x53')](_0x82412a);}})[_0x23ba('0x22')](function(_0x351227){if(_0x351227){return _0x351227?{'count':_0x3ccd57,'rows':_0x351227}:null;}})[_0x23ba('0x22')](respondWithResult(_0x3c6239,null))['catch'](handleError(_0x3c6239,null));};
\ No newline at end of file
index 206a8e3..8e6e6c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f5a=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','CmCompany','cm_companies','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7f5a,0x1b9));var _0xa7f5=function(_0x138d06,_0x33edf2){_0x138d06=_0x138d06-0x0;var _0x1a01eb=_0x7f5a[_0x138d06];return _0x1a01eb;};'use strict';var _=require(_0xa7f5('0x0'));var util=require(_0xa7f5('0x1'));var logger=require(_0xa7f5('0x2'))(_0xa7f5('0x3'));var moment=require(_0xa7f5('0x4'));var BPromise=require(_0xa7f5('0x5'));var rp=require(_0xa7f5('0x6'));var fs=require('fs');var path=require(_0xa7f5('0x7'));var rimraf=require(_0xa7f5('0x8'));var config=require(_0xa7f5('0x9'));var attributes=require('./cmCompany.attributes');module[_0xa7f5('0xa')]=function(_0x955a73,_0x512ca7){return _0x955a73['define'](_0xa7f5('0xb'),attributes,{'tableName':_0xa7f5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b72=['CmCompany','util','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x4e030e,_0x1437a4){var _0x11f72a=function(_0x58717c){while(--_0x58717c){_0x4e030e['push'](_0x4e030e['shift']());}};_0x11f72a(++_0x1437a4);}(_0x2b72,0x1eb));var _0x22b7=function(_0x469218,_0x440d05){_0x469218=_0x469218-0x0;var _0x187b4a=_0x2b72[_0x469218];return _0x187b4a;};'use strict';var _=require('lodash');var util=require(_0x22b7('0x0'));var logger=require('../../config/logger')(_0x22b7('0x1'));var moment=require('moment');var BPromise=require(_0x22b7('0x2'));var rp=require(_0x22b7('0x3'));var fs=require('fs');var path=require(_0x22b7('0x4'));var rimraf=require(_0x22b7('0x5'));var config=require(_0x22b7('0x6'));var attributes=require('./cmCompany.attributes');module[_0x22b7('0x7')]=function(_0x56590c,_0x196964){return _0x56590c[_0x22b7('0x8')](_0x22b7('0x9'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6420ced..2cbc622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfddf=['http','request','then','info','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','CmCompany,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2bcef8,_0x396f4f){var _0x504547=function(_0x3d1e90){while(--_0x3d1e90){_0x2bcef8['push'](_0x2bcef8['shift']());}};_0x504547(++_0x396f4f);}(_0xfddf,0xe4));var _0xffdd=function(_0x4f6ba7,_0x62acd1){_0x4f6ba7=_0x4f6ba7-0x0;var _0x141916=_0xfddf[_0x4f6ba7];return _0x141916;};'use strict';var _=require(_0xffdd('0x0'));var util=require('util');var moment=require(_0xffdd('0x1'));var BPromise=require(_0xffdd('0x2'));var rs=require(_0xffdd('0x3'));var fs=require('fs');var Redis=require(_0xffdd('0x4'));var db=require(_0xffdd('0x5'))['db'];var utils=require(_0xffdd('0x6'));var logger=require(_0xffdd('0x7'))(_0xffdd('0x8'));var config=require(_0xffdd('0x9'));var jayson=require(_0xffdd('0xa'));var client=jayson[_0xffdd('0xb')][_0xffdd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x230bbd,_0x3b4485,_0x5c1615){return new BPromise(function(_0x37141b,_0x39667e){return client[_0xffdd('0xd')](_0x230bbd,_0x5c1615)[_0xffdd('0xe')](function(_0x1ea7ef){logger[_0xffdd('0xf')]('CmCompany,\x20%s,\x20%s',_0x3b4485,_0xffdd('0x10'));logger[_0xffdd('0x11')](_0xffdd('0x12'),_0x3b4485,_0xffdd('0x10'),JSON[_0xffdd('0x13')](_0x1ea7ef));if(_0x1ea7ef[_0xffdd('0x14')]){if(_0x1ea7ef[_0xffdd('0x14')]['code']===0x1f4){logger[_0xffdd('0x14')](_0xffdd('0x15'),_0x3b4485,_0x1ea7ef['error'][_0xffdd('0x16')]);return _0x39667e(_0x1ea7ef['error'][_0xffdd('0x16')]);}logger[_0xffdd('0x14')]('CmCompany,\x20%s,\x20%s',_0x3b4485,_0x1ea7ef['error']['message']);return _0x37141b(_0x1ea7ef[_0xffdd('0x14')][_0xffdd('0x16')]);}else{logger[_0xffdd('0xf')](_0xffdd('0x15'),_0x3b4485,_0xffdd('0x10'));_0x37141b(_0x1ea7ef[_0xffdd('0x17')][_0xffdd('0x16')]);}})['catch'](function(_0x17fa61){logger[_0xffdd('0x14')](_0xffdd('0x15'),_0x3b4485,_0x17fa61);_0x39667e(_0x17fa61);});});}
\ No newline at end of file
+var _0xef75=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x4d6bfd,_0x8d79ff){var _0x243a46=function(_0x3883b1){while(--_0x3883b1){_0x4d6bfd['push'](_0x4d6bfd['shift']());}};_0x243a46(++_0x8d79ff);}(_0xef75,0x1b1));var _0x5ef7=function(_0x4f79f6,_0x377a46){_0x4f79f6=_0x4f79f6-0x0;var _0x2afaec=_0xef75[_0x4f79f6];return _0x2afaec;};'use strict';var _=require('lodash');var util=require(_0x5ef7('0x0'));var moment=require(_0x5ef7('0x1'));var BPromise=require(_0x5ef7('0x2'));var rs=require(_0x5ef7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ef7('0x4'))['db'];var utils=require(_0x5ef7('0x5'));var logger=require(_0x5ef7('0x6'))('rpc');var config=require(_0x5ef7('0x7'));var jayson=require(_0x5ef7('0x8'));var client=jayson[_0x5ef7('0x9')][_0x5ef7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36979f,_0x10bbfe,_0x351e3d){return new BPromise(function(_0x222086,_0x1b1996){return client[_0x5ef7('0xb')](_0x36979f,_0x351e3d)['then'](function(_0x335a83){logger[_0x5ef7('0xc')](_0x5ef7('0xd'),_0x10bbfe,_0x5ef7('0xe'));logger[_0x5ef7('0xf')](_0x5ef7('0x10'),_0x10bbfe,_0x5ef7('0xe'),JSON[_0x5ef7('0x11')](_0x335a83));if(_0x335a83[_0x5ef7('0x12')]){if(_0x335a83['error'][_0x5ef7('0x13')]===0x1f4){logger[_0x5ef7('0x12')](_0x5ef7('0xd'),_0x10bbfe,_0x335a83[_0x5ef7('0x12')][_0x5ef7('0x14')]);return _0x1b1996(_0x335a83[_0x5ef7('0x12')][_0x5ef7('0x14')]);}logger[_0x5ef7('0x12')]('CmCompany,\x20%s,\x20%s',_0x10bbfe,_0x335a83[_0x5ef7('0x12')][_0x5ef7('0x14')]);return _0x222086(_0x335a83[_0x5ef7('0x12')]['message']);}else{logger[_0x5ef7('0xc')](_0x5ef7('0xd'),_0x10bbfe,_0x5ef7('0xe'));_0x222086(_0x335a83[_0x5ef7('0x15')][_0x5ef7('0x14')]);}})[_0x5ef7('0x16')](function(_0x46657a){logger['error'](_0x5ef7('0xd'),_0x10bbfe,_0x46657a);_0x1b1996(_0x46657a);});});}
\ No newline at end of file
index de40068..859b8d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42fe=['getContacts','create','post','addContacts','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','/:id','show','/:id/contacts'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x42fe,0xed));var _0xe42f=function(_0x3d7de8,_0x2a2ec4){_0x3d7de8=_0x3d7de8-0x0;var _0x5e9a0c=_0x42fe[_0x3d7de8];return _0x5e9a0c;};'use strict';var multer=require(_0xe42f('0x0'));var util=require(_0xe42f('0x1'));var path=require(_0xe42f('0x2'));var timeout=require(_0xe42f('0x3'));var express=require(_0xe42f('0x4'));var router=express[_0xe42f('0x5')]();var fs_extra=require(_0xe42f('0x6'));var auth=require(_0xe42f('0x7'));var interaction=require(_0xe42f('0x8'));var config=require(_0xe42f('0x9'));var controller=require('./cmCompany.controller');router[_0xe42f('0xa')]('/',auth['isAuthenticated'](),controller[_0xe42f('0xb')]);router[_0xe42f('0xa')]('/describe',auth[_0xe42f('0xc')](),controller['describe']);router[_0xe42f('0xa')](_0xe42f('0xd'),auth[_0xe42f('0xc')](),controller[_0xe42f('0xe')]);router['get'](_0xe42f('0xf'),auth[_0xe42f('0xc')](),controller[_0xe42f('0x10')]);router['post']('/',auth[_0xe42f('0xc')](),controller[_0xe42f('0x11')]);router[_0xe42f('0x12')](_0xe42f('0xf'),auth[_0xe42f('0xc')](),controller[_0xe42f('0x13')]);router['put'](_0xe42f('0xd'),auth[_0xe42f('0xc')](),controller[_0xe42f('0x14')]);router[_0xe42f('0x15')](_0xe42f('0xd'),auth[_0xe42f('0xc')](),controller['destroy']);module[_0xe42f('0x16')]=router;
\ No newline at end of file
+var _0xa3eb=['describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','update','delete','destroy','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','index','/describe','isAuthenticated'];(function(_0xb56a21,_0x3093c7){var _0x121573=function(_0x4bb965){while(--_0x4bb965){_0xb56a21['push'](_0xb56a21['shift']());}};_0x121573(++_0x3093c7);}(_0xa3eb,0x1aa));var _0xba3e=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xa3eb[_0x3b380d];return _0x54502b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xba3e('0x0'));var timeout=require('connect-timeout');var express=require(_0xba3e('0x1'));var router=express[_0xba3e('0x2')]();var fs_extra=require(_0xba3e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xba3e('0x4'));var config=require(_0xba3e('0x5'));var controller=require(_0xba3e('0x6'));router[_0xba3e('0x7')]('/',auth['isAuthenticated'](),controller[_0xba3e('0x8')]);router[_0xba3e('0x7')](_0xba3e('0x9'),auth[_0xba3e('0xa')](),controller[_0xba3e('0xb')]);router[_0xba3e('0x7')](_0xba3e('0xc'),auth[_0xba3e('0xa')](),controller[_0xba3e('0xd')]);router['get'](_0xba3e('0xe'),auth[_0xba3e('0xa')](),controller[_0xba3e('0xf')]);router[_0xba3e('0x10')]('/',auth[_0xba3e('0xa')](),controller[_0xba3e('0x11')]);router[_0xba3e('0x10')](_0xba3e('0xe'),auth[_0xba3e('0xa')](),controller[_0xba3e('0x12')]);router[_0xba3e('0x13')]('/:id',auth[_0xba3e('0xa')](),controller[_0xba3e('0x14')]);router[_0xba3e('0x15')](_0xba3e('0xc'),auth[_0xba3e('0xa')](),controller[_0xba3e('0x16')]);module['exports']=router;
\ No newline at end of file
index 8ae296c..0b0d2c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbae=['UNSIGNED','NOW','lodash','exports','STRING'];(function(_0x474fd6,_0x449c9a){var _0x36732b=function(_0x45e09d){while(--_0x45e09d){_0x474fd6['push'](_0x474fd6['shift']());}};_0x36732b(++_0x449c9a);}(_0xbbae,0x89));var _0xebba=function(_0x13405d,_0xe260e2){_0x13405d=_0x13405d-0x0;var _0x486569=_0xbbae[_0x13405d];return _0x486569;};'use strict';var _=require(_0xebba('0x0'));var Sequelize=require('sequelize');module[_0xebba('0x1')]={'firstName':{'type':Sequelize[_0xebba('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xebba('0x2')]},'street':{'type':Sequelize[_0xebba('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xebba('0x2')]},'country':{'type':Sequelize[_0xebba('0x2')]},'dateOfBirth':{'type':Sequelize[_0xebba('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xebba('0x2')]},'mobile':{'type':Sequelize[_0xebba('0x2')]},'fax':{'type':Sequelize[_0xebba('0x2')]},'email':{'type':Sequelize[_0xebba('0x2')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0xebba('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xebba('0x2')]},'viber':{'type':Sequelize[_0xebba('0x2')]},'line':{'type':Sequelize[_0xebba('0x2')]},'wechat':{'type':Sequelize[_0xebba('0x2')]},'telegram':{'type':Sequelize[_0xebba('0x2')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xebba('0x3')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xebba('0x4')]}};
\ No newline at end of file
+var _0xfe01=['UNSIGNED','DATE','NOW','lodash','sequelize','exports','STRING','TEXT','INTEGER'];(function(_0x2d61cb,_0x2ca11a){var _0x2997fc=function(_0x30eb13){while(--_0x30eb13){_0x2d61cb['push'](_0x2d61cb['shift']());}};_0x2997fc(++_0x2ca11a);}(_0xfe01,0x11a));var _0x1fe0=function(_0x4680d6,_0x311213){_0x4680d6=_0x4680d6-0x0;var _0x5c16b8=_0xfe01[_0x4680d6];return _0x5c16b8;};'use strict';var _=require(_0x1fe0('0x0'));var Sequelize=require(_0x1fe0('0x1'));module[_0x1fe0('0x2')]={'firstName':{'type':Sequelize[_0x1fe0('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x1fe0('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x1fe0('0x3')]},'city':{'type':Sequelize[_0x1fe0('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0x1fe0('0x3')]},'description':{'type':Sequelize[_0x1fe0('0x4')]},'phone':{'type':Sequelize[_0x1fe0('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x1fe0('0x3')]},'email':{'type':Sequelize[_0x1fe0('0x3')]},'url':{'type':Sequelize[_0x1fe0('0x3')]},'facebook':{'type':Sequelize[_0x1fe0('0x3')]},'fb_data':{'type':Sequelize[_0x1fe0('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x1fe0('0x3')]},'teams':{'type':Sequelize[_0x1fe0('0x3')]},'viber':{'type':Sequelize[_0x1fe0('0x3')]},'line':{'type':Sequelize[_0x1fe0('0x3')]},'wechat':{'type':Sequelize[_0x1fe0('0x3')]},'telegram':{'type':Sequelize[_0x1fe0('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0x1fe0('0x5')](0x2)[_0x1fe0('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x1fe0('0x7')],'defaultValue':Sequelize[_0x1fe0('0x8')]}};
\ No newline at end of file
index 7ed06cd..82a21a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d0=['bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','limit','count','offset','Content-Range','reject','save','update','then','error','stack','name','send','CmContact','keys','length','startsWith','cf_','push','CmCustomField','findOne','all','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','field','from','tools_tags','select','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','where','expr','search','sqlOperator','conditions','find','Tag','value','map','forEach','union','User','uc.UserId\x20=\x20?','dateOfBirth','fieldType','datetime','text','isNil','Contact','isEmpty','ListId','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','split','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','Sequelize','QueryTypes','c.id','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','merge','c.firstName','c.lastName','c.phone','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','rows','catch','destroy','describe','tags','columnName','displayName','alias','custom','body','findAll','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','ReportAgentPreview','ChatQueueReport','FaxQueueReport','MailQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','create','join','bulkCreate','each','duplicates','findOrCreate','omit','format','cf_%d','params','$and','pickBy','table','cm_contacts','setFields','id\x20=\x20?','toParam','values','phone','getTags','rawAttributes','pick','setTags','ids','ContactId','options','include','includeAll','CmHopperFinal','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','file','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','binding_values','pid','upload','createReadStream','path','parse','import','binding','socket_timestamp','../../components/import/cm/csv2','stringify','message','exit','error\x20child\x20process','getJourney','mail','sms','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','callerid','starttime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','fullname','VoiceCallReport','findAndCountAll','startCase','chat','Website','Account','closed','closedAt','secondDisposition','key','color','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','substatus','threadId','Interaction','Owner','flatten','sortBy','reverse','slice','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x574c14,_0x1b444f){var _0x2bfaae=function(_0x4eedac){while(--_0x4eedac){_0x574c14['push'](_0x574c14['shift']());}};_0x2bfaae(++_0x1b444f);}(_0x61d0,0x11d));var _0x061d=function(_0x3b53b0,_0x23dc58){_0x3b53b0=_0x3b53b0-0x0;var _0x4eddc6=_0x61d0[_0x3b53b0];return _0x4eddc6;};'use strict';var emlformat=require(_0x061d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x061d('0x1'));var jsonpatch=require(_0x061d('0x2'));var rp=require(_0x061d('0x3'));var moment=require(_0x061d('0x4'));var BPromise=require(_0x061d('0x5'));var Mustache=require(_0x061d('0x6'));var util=require(_0x061d('0x7'));var path=require('path');var sox=require(_0x061d('0x8'));var csv=require(_0x061d('0x9'));var ejs=require(_0x061d('0xa'));var fs=require('fs');var fs_extra=require(_0x061d('0xb'));var _=require(_0x061d('0xc'));var squel=require(_0x061d('0xd'));var crypto=require(_0x061d('0xe'));var jsforce=require(_0x061d('0xf'));var deskjs=require(_0x061d('0x10'));var toCsv=require(_0x061d('0x9'));var querystring=require(_0x061d('0x11'));var Papa=require(_0x061d('0x12'));var Redis=require(_0x061d('0x13'));var authService=require(_0x061d('0x14'));var qs=require(_0x061d('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x061d('0x16'));var logger=require('../../config/logger')(_0x061d('0x17'));var utils=require(_0x061d('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x061d('0x19'));var db=require(_0x061d('0x1a'))['db'];config[_0x061d('0x1b')]=_[_0x061d('0x1c')](config[_0x061d('0x1b')],{'host':_0x061d('0x1d'),'port':0x18eb});var socket=require(_0x061d('0x1e'))(new Redis(config[_0x061d('0x1b')]));require(_0x061d('0x1f'))['register'](socket);function respondWithStatusCode(_0x3d9cdd,_0x820b1){_0x820b1=_0x820b1||0xcc;return function(_0x5c5fd7){if(_0x5c5fd7){return _0x3d9cdd[_0x061d('0x20')](_0x820b1);}return _0x3d9cdd[_0x061d('0x21')](_0x820b1)[_0x061d('0x22')]();};}function respondWithResult(_0x186b54,_0xf5493a){_0xf5493a=_0xf5493a||0xc8;return function(_0x491f0a){if(_0x491f0a){return _0x186b54[_0x061d('0x21')](_0xf5493a)[_0x061d('0x23')](_0x491f0a);}};}function respondWithFilteredResult(_0x26655e,_0x1cc7f0){return function(_0x2db215){if(_0x2db215){var _0x795252=typeof _0x1cc7f0['offset']==='undefined'&&typeof _0x1cc7f0[_0x061d('0x24')]==='undefined';var _0x380ff0=_0x2db215[_0x061d('0x25')];var _0x330653=_0x795252?0x0:_0x1cc7f0[_0x061d('0x26')];var _0x4603e5=_0x795252?_0x2db215[_0x061d('0x25')]:_0x1cc7f0[_0x061d('0x26')]+_0x1cc7f0[_0x061d('0x24')];var _0x5e16df;if(_0x4603e5>=_0x380ff0){_0x4603e5=_0x380ff0;_0x5e16df=0xc8;}else{_0x5e16df=0xce;}_0x26655e['status'](_0x5e16df);return _0x26655e['set'](_0x061d('0x27'),_0x330653+'-'+_0x4603e5+'/'+_0x380ff0)[_0x061d('0x23')](_0x2db215);}return null;};}function patchUpdates(_0x5f4f5b){return function(_0x56457c){try{jsonpatch['apply'](_0x56457c,_0x5f4f5b,!![]);}catch(_0x26570a){return BPromise[_0x061d('0x28')](_0x26570a);}return _0x56457c[_0x061d('0x29')]();};}function saveUpdates(_0x46df18,_0xebfa5f){return function(_0x4429cd){if(_0x4429cd){return _0x4429cd[_0x061d('0x2a')](_0x46df18)['then'](function(_0x13451d){return _0x13451d;});}return null;};}function removeEntity(_0x64d04f,_0x91fc75){return function(_0x1f5426){if(_0x1f5426){return _0x1f5426['destroy']()[_0x061d('0x2b')](function(){_0x64d04f[_0x061d('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d2e79,_0x164f0c){return function(_0x459243){if(!_0x459243){_0x4d2e79[_0x061d('0x20')](0x194);}return _0x459243;};}function handleError(_0x12a994,_0x183b11){_0x183b11=_0x183b11||0x1f4;return function(_0x1c17e0){logger[_0x061d('0x2c')](_0x1c17e0[_0x061d('0x2d')]);if(_0x1c17e0[_0x061d('0x2e')]){delete _0x1c17e0[_0x061d('0x2e')];}_0x12a994[_0x061d('0x21')](_0x183b11)[_0x061d('0x2f')](_0x1c17e0);};}exports['index']=function(_0x7118fd,_0x4eced3){var _0x576202={},_0x51dd49={},_0xbebd2a={'count':0x0,'rows':[]};return db[_0x061d('0x30')]['describe']()[_0x061d('0x2b')](function(_0x326d72){var _0x8725a6=[];for(var _0x5b771b=0x0;_0x5b771b<Object[_0x061d('0x31')](_0x326d72)[_0x061d('0x32')];_0x5b771b++){var _0x14b02b=Object[_0x061d('0x31')](_0x326d72)[_0x5b771b];if(_[_0x061d('0x33')](_0x14b02b,_0x061d('0x34'))){_0x8725a6[_0x061d('0x35')](db[_0x061d('0x36')][_0x061d('0x37')]({'where':{'id':_['trimStart'](_0x14b02b,_0x061d('0x34'))},'raw':!![]}));}}return BPromise[_0x061d('0x38')](_0x8725a6)['then'](function(_0xfbb078){for(var _0x2ae0c5=0x0;_0x2ae0c5<_0xfbb078[_0x061d('0x32')];_0x2ae0c5++){if(_0xfbb078[_0x2ae0c5]){var _0x106a0d='cf_'+_0xfbb078[_0x2ae0c5]['id'];var _0x5e7b3f=_0x326d72[_0x106a0d];_0x5e7b3f['fieldType']=_0xfbb078[_0x2ae0c5][_0x061d('0x39')];}}return _0x326d72;});})[_0x061d('0x2b')](function(_0x1abb0b){_0x51dd49[_0x061d('0x3a')]=_[_0x061d('0x31')](_0x1abb0b);_0x51dd49['query']=_[_0x061d('0x31')](_0x7118fd[_0x061d('0x3b')]);_0x51dd49[_0x061d('0x3c')]=_['intersection'](_0x51dd49['model'],_0x51dd49[_0x061d('0x3b')]);_0x576202[_0x061d('0x3d')]=_[_0x061d('0x3e')](_0x51dd49[_0x061d('0x3a')],qs[_0x061d('0x3f')](_0x7118fd[_0x061d('0x3b')][_0x061d('0x3f')]));_0x576202[_0x061d('0x3d')]=_0x576202[_0x061d('0x3d')]['length']?_0x576202[_0x061d('0x3d')]:_0x51dd49[_0x061d('0x3a')];if(!_0x7118fd[_0x061d('0x3b')][_0x061d('0x40')](_0x061d('0x41'))){_0x576202['limit']=qs['limit'](_0x7118fd[_0x061d('0x3b')][_0x061d('0x24')]);_0x576202['offset']=qs[_0x061d('0x26')](_0x7118fd[_0x061d('0x3b')][_0x061d('0x26')]);}_0x576202[_0x061d('0x42')]=qs[_0x061d('0x43')](_0x7118fd[_0x061d('0x3b')][_0x061d('0x43')]);_0x576202['where']=qs[_0x061d('0x3c')](_['pick'](_0x7118fd[_0x061d('0x3b')],_0x51dd49[_0x061d('0x3c')]),_0x1abb0b);var _0x20581a=[];var _0x36d235=squel['select']()[_0x061d('0x44')]('id')[_0x061d('0x44')](_0x061d('0x2e'))[_0x061d('0x44')]('color')[_0x061d('0x45')](_0x061d('0x46'));var _0x45efa5=squel[_0x061d('0x47')]()[_0x061d('0x45')]('cm_contacts','c')[_0x061d('0x48')](_0x061d('0x49'),'uc',_0x061d('0x4a'))['left_join'](_0x061d('0x4b'),'ct',_0x061d('0x4c'))['left_join']('tools_tags','t',_0x061d('0x4d'))[_0x061d('0x4e')]('c.deletedAt\x20IS\x20NULL');var _0xc890e2=squel[_0x061d('0x4f')]();var _0x3a994a=[];var _0x206462=squel[_0x061d('0x4f')]();var _0x23fee5;if(_0x7118fd[_0x061d('0x3b')]['search']){_0x23fee5=as['parseSearch'](_0x7118fd['query'][_0x061d('0x50')]);var _0xc6bc77=_0x23fee5[_0x061d('0x51')];for(var _0x3aa262=0x0;_0x3aa262<_0x23fee5[_0x061d('0x52')][_0x061d('0x32')];_0x3aa262++){var _0x71e8f1=_0x23fee5[_0x061d('0x52')][_0x3aa262];var _0x5bc10a='c';var _0xaa749b=_(_0x1abb0b)[_0x061d('0x31')]()[_0x061d('0x53')](function(_0x43ea2b){return _0x43ea2b===_0x71e8f1['field'];});if(_0xaa749b)_0xaa749b=_0x1abb0b[_0x71e8f1[_0x061d('0x44')]];if(!_0xaa749b){if(_0x71e8f1[_0x061d('0x44')]===_0x061d('0x54')){var _0x350c8b=_0x71e8f1[_0x061d('0x55')]['split'](',')[_0x061d('0x56')](function(_0x50c3a7){return Number(_0x50c3a7);});_0x350c8b[_0x061d('0x57')](function(_0x201d3c){_0x206462['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x201d3c+',%');});_0x3a994a=_[_0x061d('0x58')](_0x3a994a,_0x350c8b);}else if(_0x71e8f1[_0x061d('0x44')]===_0x061d('0x59')){_0xc890e2['and'](_0x061d('0x5a'),_0x71e8f1[_0x061d('0x55')]);}}else{if(_0x71e8f1['field']===_0x061d('0x5b')||_0xaa749b[_0x061d('0x5c')]===_0x061d('0x5d'))_0x71e8f1['castTo']='DATE';var _0x2d8a94=as['buildExpression'](_0x5bc10a,_0xaa749b[_0x061d('0x39')],_0x71e8f1);_0xc890e2[_0xc6bc77](_0x2d8a94[_0x061d('0x5e')],_0x2d8a94[_0x061d('0x55')]['start'],_0x2d8a94[_0x061d('0x55')][_0x061d('0x22')]);}}}else{var _0x5d6de6=_(Object[_0x061d('0x31')](_0x7118fd[_0x061d('0x3b')]))[_0x061d('0x56')](function(_0x11e00d){return _0x1abb0b['hasOwnProperty'](_0x11e00d)?_0x11e00d:undefined;})['filter'](function(_0x312ce3){return!_[_0x061d('0x5f')](_0x312ce3);})['value']();if(_0x7118fd[_0x061d('0x3b')][_0x061d('0x60')])_0x5d6de6[_0x061d('0x35')](_0x061d('0x60'));if(!_[_0x061d('0x61')](_0x5d6de6)){_0x5d6de6[_0x061d('0x57')](function(_0x544efc){if(_0x544efc===_0x061d('0x62')){_0x45efa5[_0x061d('0x4e')]('c.ListId\x20IN\x20?',[]['concat'](_0x7118fd['query'][_0x544efc]));}else if(_0x544efc===_0x061d('0x60')){var _0x23ab21='%'+_0x7118fd[_0x061d('0x3b')][_0x544efc]+'%';_0x45efa5[_0x061d('0x4e')](_0x061d('0x63'),_0x23ab21);}else{_0x45efa5['where']('c.'+_0x544efc+'\x20=\x20?',_0x7118fd[_0x061d('0x3b')][_0x544efc]);}});}if(_0x7118fd[_0x061d('0x3b')][_0x061d('0x64')]){_0x3a994a=_[_0x061d('0x65')](_0x7118fd['query']['tag'])?_0x7118fd[_0x061d('0x3b')][_0x061d('0x64')]:new Array(_0x7118fd[_0x061d('0x3b')]['tag']);_0x3a994a['forEach'](function(_0x22c19e){_0x206462['or'](_0x061d('0x66'),'%,'+_0x22c19e+',%');});}if(_0x7118fd[_0x061d('0x3b')]['filter']){var _0x16c51c=_0x7118fd['query'][_0x061d('0x67')]['replace']('\x5c','\x5c\x5c')[_0x061d('0x68')](/'/g,'\x27\x27');if(_0x16c51c[_0x061d('0x69')]('\x20')[_0x061d('0x32')]>0x1){_0xc890e2['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x16c51c),null);}else{if(qs[_0x061d('0x6a')](_0x16c51c)){_0xc890e2['or'](_0x061d('0x6b'),_0x16c51c+'%');_0xc890e2['or']('c.phone\x20LIKE\x20?',_0x16c51c+'%');_0xc890e2['or'](_0x061d('0x6c'),_0x16c51c+'%');_0xc890e2['or']('c.fax\x20LIKE\x20?',_0x16c51c+'%');}else if(qs['isEmail'](_0x16c51c)){_0xc890e2['or']('c.email\x20LIKE\x20?',_0x16c51c+'%');}else{_0xc890e2['or']('c.firstName\x20LIKE\x20?','%'+_0x16c51c+'%');_0xc890e2['or'](_0x061d('0x6d'),'%'+_0x16c51c+'%');_0xc890e2['or']('c.email\x20LIKE\x20?','%'+_0x16c51c+'%');}}}}_0x45efa5['where'](_0xc890e2);_0x45efa5[_0x061d('0x6e')]('c.id');var _0x1939ec={'type':db[_0x061d('0x6f')][_0x061d('0x70')]['SELECT'],'raw':!![]};var _0x3c3995=_0x45efa5['clone']()[_0x061d('0x44')](_0x061d('0x71'));if(_0x576202['order']){_0x576202[_0x061d('0x42')][_0x061d('0x57')](function(_0x53c502){_0x45efa5[_0x061d('0x42')]('c.'+_0x53c502[0x0],_0x53c502[0x1]===_0x061d('0x72')?![]:!![]);});}if(!_[_0x061d('0x61')](_0x3a994a)){_0x45efa5[_0x061d('0x73')](_0x206462);_0x3c3995['where'](_0x061d('0x74'),_0x3a994a);}BPromise[_0x061d('0x75')]()['then'](function(){if(!_0x23fee5)return;if(_0x7118fd[_0x061d('0x76')][_0x061d('0x77')]!==_0x061d('0x78'))return;if(!_[_0x061d('0x79')](_0x23fee5['conditions'],['field','User'])){return _0x7118fd['user']['getLists']({'attributes':['id'],'raw':!![]})[_0x061d('0x2b')](function(_0x42d1d4){if(_[_0x061d('0x61')](_0x42d1d4)){_0x3c3995[_0x061d('0x4e')](_0x061d('0x7a'));_0x45efa5[_0x061d('0x4e')](_0x061d('0x7a'));}else{_0x3c3995['where']('c.ListId\x20IN\x20?',_[_0x061d('0x56')](_0x42d1d4,'id'));_0x45efa5[_0x061d('0x4e')](_0x061d('0x7b'),_[_0x061d('0x56')](_0x42d1d4,'id'));}});}})[_0x061d('0x2b')](function(){if(_0x7118fd[_0x061d('0x76')][_0x061d('0x77')]==='agent'&&!_0x23fee5&&!_0x7118fd[_0x061d('0x3b')][_0x061d('0x62')])return[];return db[_0x061d('0x7c')]['query'](_0x3c3995[_0x061d('0x7d')](),_0x1939ec);})[_0x061d('0x2b')](function(_0x4f49ed){_0xbebd2a[_0x061d('0x25')]=_0x4f49ed['length'];if(_0xbebd2a[_0x061d('0x25')]===0x0)return[];return db[_0x061d('0x7c')]['query'](_0x36d235[_0x061d('0x7d')](),_0x1939ec)[_0x061d('0x2b')](function(_0x14a64c){_0x20581a=_['keyBy'](_0x14a64c,'id');_0x1939ec=_[_0x061d('0x7e')](_0x1939ec,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x7118fd[_0x061d('0x3b')][_0x061d('0x3f')]){_0x576202[_0x061d('0x3d')]['forEach'](function(_0x4acafd){_0x45efa5['field']('c.'+_0x4acafd);});}else{_0x45efa5['field'](_0x061d('0x71'));_0x45efa5[_0x061d('0x44')](_0x061d('0x7f'));_0x45efa5[_0x061d('0x44')](_0x061d('0x80'));_0x45efa5[_0x061d('0x44')](_0x061d('0x81'));_0x45efa5[_0x061d('0x44')]('c.mobile');_0x45efa5['field']('c.fax');_0x45efa5['field'](_0x061d('0x82'));_0x45efa5[_0x061d('0x44')](_0x061d('0x83'));_0x45efa5['field'](_0x061d('0x84'));_0x45efa5['field'](_0x061d('0x85'));_0x45efa5['field'](_0x061d('0x86'));_0x45efa5['field'](_0x061d('0x87'),_0x061d('0x88'));}if(_0x576202[_0x061d('0x24')])_0x45efa5['limit'](_0x576202[_0x061d('0x24')]);if(_0x576202[_0x061d('0x26')])_0x45efa5[_0x061d('0x26')](_0x576202[_0x061d('0x26')]);return db[_0x061d('0x7c')][_0x061d('0x3b')](_0x45efa5['toString'](),_0x1939ec);});})['then'](function(_0x4219f3){_0x4219f3[_0x061d('0x57')](function(_0xc0a9d4){if(_0xc0a9d4[_0x061d('0x88')]){_0xc0a9d4['Tags']=[];_0xc0a9d4['TagIds']['split'](',')[_0x061d('0x57')](function(_0x5bccd5){_0xc0a9d4['Tags'][_0x061d('0x35')](_0x20581a[_0x5bccd5]);});}delete _0xc0a9d4[_0x061d('0x88')];});_0xbebd2a[_0x061d('0x89')]=_0x4219f3;return _0xbebd2a;})[_0x061d('0x2b')](respondWithFilteredResult(_0x4eced3,_0x576202));})[_0x061d('0x8a')](handleError(_0x4eced3,null));};exports[_0x061d('0x8b')]=function(_0x54a66f,_0x22f565){return db[_0x061d('0x30')][_0x061d('0x53')]({'where':{'id':_0x54a66f['params']['id']}})[_0x061d('0x2b')](handleEntityNotFound(_0x22f565,null))[_0x061d('0x2b')](removeEntity(_0x22f565,null))[_0x061d('0x8a')](handleError(_0x22f565,null));};exports[_0x061d('0x8c')]=function(_0x449d08,_0x181a21){return db['CmContact'][_0x061d('0x8c')]()[_0x061d('0x2b')](function(_0x464569){delete _0x464569[_0x061d('0x8d')];for(var _0x3ac34a=0x0;_0x3ac34a<Object[_0x061d('0x31')](_0x464569)[_0x061d('0x32')];_0x3ac34a++){var _0x63226a=Object[_0x061d('0x31')](_0x464569)[_0x3ac34a];if(!_[_0x061d('0x33')](_0x63226a,_0x061d('0x34'))){_0x464569[_0x63226a][_0x061d('0x8e')]=_0x63226a;_0x464569[_0x63226a][_0x061d('0x8f')]=_0x63226a;}}return _0x464569;})[_0x061d('0x2b')](function(_0x21fd87){var _0x9e15d7={'where':{'$or':[{'ListId':_0x449d08[_0x061d('0x3b')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x061d('0x36')]['findAll'](_0x9e15d7)[_0x061d('0x2b')](function(_0x3b3985){for(var _0x25c09a=0x0;_0x25c09a<_0x3b3985['length'];_0x25c09a++){var _0x3c548a=_0x061d('0x34')+_0x3b3985[_0x25c09a]['id'];_0x21fd87[_0x3c548a]['columnName']=_0x3c548a;_0x21fd87[_0x3c548a][_0x061d('0x8f')]=_0x3b3985[_0x25c09a][_0x061d('0x90')];_0x21fd87[_0x3c548a][_0x061d('0x91')]={'type':_0x3b3985[_0x25c09a][_0x061d('0x39')],'values':_0x3b3985[_0x25c09a]['values']};}Object[_0x061d('0x31')](_0x21fd87)[_0x061d('0x57')](function(_0x859c09){if(!_0x21fd87[_0x859c09][_0x061d('0x40')](_0x061d('0x8e'))){delete _0x21fd87[_0x859c09];}});return _0x21fd87;});})['then'](respondWithResult(_0x181a21,null))['catch'](handleError(_0x181a21,null));};exports[_0x061d('0x7e')]=function(_0x3ec64d,_0x3f142c){var _0x542c21;var _0x4b4ec3;var _0x549e45;if(_0x3ec64d[_0x061d('0x92')]['id']){delete _0x3ec64d[_0x061d('0x92')]['id'];}return db[_0x061d('0x30')][_0x061d('0x93')]({'where':{'id':[_0x3ec64d[_0x061d('0x92')]['to'],_0x3ec64d['body']['from']]}})[_0x061d('0x2b')](function(_0x1e12e9){if(_0x1e12e9){if(_0x1e12e9[_0x061d('0x32')]!==0x2){return null;}_0x1e12e9[0x0]=_0x1e12e9[0x0][_0x061d('0x94')]({'plain':!![]});_0x1e12e9[0x1]=_0x1e12e9[0x1][_0x061d('0x94')]({'plain':!![]});delete _0x1e12e9[0x0]['id'];delete _0x1e12e9[0x1]['id'];return _[_0x061d('0x95')](_0x1e12e9[0x0],_0x1e12e9[0x1],function(_0x364c6a,_0x173b42){if(Array[_0x061d('0x65')](_0x173b42)&&!_0x173b42[_0x061d('0x32')]){return _0x364c6a;}else if(!_0x173b42){return _0x364c6a;}});}})[_0x061d('0x2b')](handleEntityNotFound(_0x3f142c,null))[_0x061d('0x2b')](function(_0x2b62bf){if(_0x2b62bf){if(_0x2b62bf[_0x061d('0x8d')]&&_[_0x061d('0x65')](_0x2b62bf[_0x061d('0x8d')])){_0x2b62bf[_0x061d('0x8d')]=_0x2b62bf['tags']['join']();}logger[_0x061d('0x96')](_0x061d('0x97'),_0x3ec64d['body']['to'],_0x3ec64d[_0x061d('0x92')][_0x061d('0x45')]);return db[_0x061d('0x98')][_0x061d('0x8b')]({'where':{'ContactId':[_0x3ec64d['body']['to'],_0x3ec64d[_0x061d('0x92')][_0x061d('0x45')]]}})[_0x061d('0x2b')](function(_0x4eee51){logger[_0x061d('0x96')](_0x061d('0x99'),_0x4eee51);return db['CmHopperBlack'][_0x061d('0x8b')]({'where':{'ContactId':[_0x3ec64d['body']['to'],_0x3ec64d[_0x061d('0x92')][_0x061d('0x45')]]}})['then'](function(_0x5ab26f){logger[_0x061d('0x96')](_0x061d('0x9a'),_0x5ab26f);return db['CmContact']['create'](_0x2b62bf);});});}})['then'](function(_0x3ed05a){if(_0x3ed05a){_0x542c21=_0x3ed05a;_0x4b4ec3={'ContactId':_0x542c21['id']};_0x549e45={'where':{'ContactId':[_0x3ec64d['body']['to'],_0x3ec64d[_0x061d('0x92')][_0x061d('0x45')]]}};return db[_0x061d('0x9b')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db['ChatMessage']['update'](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0x9c')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0x9d')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db['MailMessage'][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0x9d')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})['then'](function(){if(_0x542c21){return db[_0x061d('0x9e')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0x9f')]['update'](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa0')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa1')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa2')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa3')]['update'](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa4')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db['CmHopperFinal'][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa5')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa6')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})['then'](function(){if(_0x542c21){return db['VoiceCallReport']['update'](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa7')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa8')]['update'](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xa9')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})['then'](function(){if(_0x542c21){return db['OpenchannelQueueReport'][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xaa')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})['then'](function(){if(_0x542c21){return db[_0x061d('0xab')]['update'](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xac')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0xad')][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})['then'](function(){if(_0x542c21){return db['WhatsappQueueReport'][_0x061d('0x2a')](_0x4b4ec3,_0x549e45);}})[_0x061d('0x2b')](function(){if(_0x542c21){return db[_0x061d('0x30')][_0x061d('0x8b')]({'where':{'id':[_0x3ec64d[_0x061d('0x92')]['to'],_0x3ec64d[_0x061d('0x92')][_0x061d('0x45')]]}});}})[_0x061d('0x2b')](function(){if(_0x542c21){return _0x542c21;}})[_0x061d('0x2b')](respondWithResult(_0x3f142c,null))[_0x061d('0x8a')](handleError(_0x3f142c,null));};exports[_0x061d('0xae')]=function(_0x47f6d1,_0x2e71c5){return db[_0x061d('0x30')][_0x061d('0x8c')]()[_0x061d('0x2b')](function(_0x508d7c){if(_0x47f6d1[_0x061d('0x92')]['tags']&&_[_0x061d('0x65')](_0x47f6d1['body'][_0x061d('0x8d')])){if(_0x47f6d1[_0x061d('0x92')]['tags'][_0x061d('0x32')]){_0x47f6d1['body'][_0x061d('0x8d')]=_0x47f6d1[_0x061d('0x92')]['tags'][_0x061d('0xaf')](';')+';';}else{_0x47f6d1[_0x061d('0x92')][_0x061d('0x8d')]=null;}}else{_0x47f6d1[_0x061d('0x92')][_0x061d('0x8d')]=null;}return db['CmContact'][_0x061d('0xae')](_0x47f6d1['body'],{'fields':_[_0x061d('0x31')](_0x508d7c),'raw':!![]});})['then'](respondWithResult(_0x2e71c5,0xc9))[_0x061d('0x8a')](handleError(_0x2e71c5,null));};exports[_0x061d('0xb0')]=function(_0x5cf3f1,_0x5313e8){var _0x2207b8=[];var _0x268184=0x0;var _0x5127b7=0x0;var _0x48a4ff=0x0;return db[_0x061d('0x30')][_0x061d('0x8c')]()[_0x061d('0x2b')](function(_0x2a1904){return BPromise[_0x061d('0xb1')](_0x5cf3f1[_0x061d('0x92')],function(_0x2930ec){var _0x36a6dc={'where':{'$or':[]},'defaults':_0x2930ec,'fields':_[_0x061d('0x31')](_0x2a1904),'raw':!![]};if(_0x2930ec['duplicates']){for(var _0x248e3f=0x0;_0x248e3f<_0x2930ec[_0x061d('0xb2')][_0x061d('0x32')];_0x248e3f++){var _0x159459={};_0x159459[_0x2930ec[_0x061d('0xb2')][_0x248e3f]]=_0x2930ec[_0x2930ec[_0x061d('0xb2')][_0x248e3f]];_0x36a6dc[_0x061d('0x4e')]['$or'][_0x061d('0x35')](_0x159459);}_0x36a6dc[_0x061d('0x4e')][_0x061d('0x62')]=_0x2930ec[_0x061d('0x62')];}return db[_0x061d('0x30')][_0x061d('0xb3')](_0x36a6dc)['spread'](function(_0x4fe5cc,_0x48e782){if(_0x48e782){_0x268184++;}else{_0x48a4ff++;}})[_0x061d('0x8a')](function(_0x5548f0){console[_0x061d('0x2c')](_0x5548f0);_0x5127b7++;});});})[_0x061d('0x2b')](function(_0x15556e){if(_0x15556e){return{'success':_0x268184,'failure':_0x5127b7,'duplicates':_0x48a4ff};}})[_0x061d('0x2b')](respondWithResult(_0x5313e8,0xc9))['catch'](handleError(_0x5313e8,null));};exports['show']=function(_0x589b08,_0x1c24ea,_0x246c88){var _0x4d25b8;return db['CmContact'][_0x061d('0x8c')]()['then'](function(_0x426195){return db['CmContact'][_0x061d('0x53')]({'where':{'id':_0x589b08['params']['id']},'include':[{'model':db[_0x061d('0x54')],'as':'Tags','attributes':['id',_0x061d('0x2e'),'color'],'required':_0x589b08['query']['tag']?!![]:![]}],'attributes':_['keys'](_0x426195)});})[_0x061d('0x2b')](function(_0x252676){_0x4d25b8=_0x252676['get']({'plain':!![]});var _0x156d50={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x252676&&_0x252676['ListId']){if(_0x252676[_0x061d('0x62')]){_0x156d50[_0x061d('0x4e')]['$and'][_0x061d('0x35')]({'ListId':{'$ne':_0x252676[_0x061d('0x62')]}});}}return db['CmCustomField'][_0x061d('0x93')](_0x156d50);})[_0x061d('0x2b')](function(_0x5d43e8){return _[_0x061d('0xb4')](_0x4d25b8,_['map'](_0x5d43e8,function(_0x146e10){return util[_0x061d('0xb5')](_0x061d('0xb6'),_0x146e10['id']);}));})[_0x061d('0x2b')](handleEntityNotFound(_0x1c24ea,null))[_0x061d('0x2b')](respondWithResult(_0x1c24ea,null))['catch'](handleError(_0x1c24ea,null));};exports[_0x061d('0x2a')]=function(_0x1a3474,_0x560348){var _0x5e47eb;if(_0x1a3474['body']['id']){delete _0x1a3474[_0x061d('0x92')]['id'];}return db[_0x061d('0x30')][_0x061d('0x53')]({'where':{'id':_0x1a3474[_0x061d('0xb7')]['id']}})[_0x061d('0x2b')](handleEntityNotFound(_0x560348,null))[_0x061d('0x2b')](saveUpdates(_0x1a3474[_0x061d('0x92')],null))[_0x061d('0x2b')](function(_0x1b1b55){_0x5e47eb=_0x1b1b55;var _0x537a62={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1b1b55&&_0x1b1b55['ListId']){if(_0x1b1b55['ListId']){_0x537a62[_0x061d('0x4e')][_0x061d('0xb8')][_0x061d('0x35')]({'ListId':{'$ne':_0x1b1b55[_0x061d('0x62')]}});}}return db[_0x061d('0x36')][_0x061d('0x93')](_0x537a62);})[_0x061d('0x2b')](function(_0x56d7c1){if(_0x56d7c1){return _[_0x061d('0xb4')](_[_0x061d('0xb9')](_0x1a3474[_0x061d('0x92')],function(_0x1f7cc6,_0x12dda3){return _['startsWith'](_0x12dda3,_0x061d('0x34'));}),_[_0x061d('0x56')](_0x56d7c1,function(_0x150639){return util[_0x061d('0xb5')](_0x061d('0xb6'),_0x150639['id']);}));}})[_0x061d('0x2b')](function(_0xce99af){if(_0xce99af&&!_['isEmpty'](_0xce99af)){var _0x413a62=squel['update']()[_0x061d('0xba')](_0x061d('0xbb'))[_0x061d('0xbc')](_0xce99af)['where'](_0x061d('0xbd'),_0x1a3474[_0x061d('0xb7')]['id'])[_0x061d('0xbe')]();return db[_0x061d('0x7c')]['query'](_0x413a62[_0x061d('0x5e')],{'replacements':_0x413a62[_0x061d('0xbf')]});}})[_0x061d('0x2b')](function(){if(_0x1a3474[_0x061d('0x92')][_0x061d('0xc0')]&&_0x5e47eb){return db[_0x061d('0x98')][_0x061d('0x2a')]({'phone':_0x1a3474[_0x061d('0x92')][_0x061d('0xc0')]},{'where':{'ContactId':_0x5e47eb['id']}});}})[_0x061d('0x2b')](function(){return _0x5e47eb;})[_0x061d('0x2b')](respondWithResult(_0x560348,null))['catch'](handleError(_0x560348,null));};exports[_0x061d('0xc1')]=function(_0x2168d2,_0x4fd7b0,_0x2a967a){var _0x5e01ec={};var _0x3e497c={};var _0x2d6e57;var _0x25f74c;return db[_0x061d('0x30')][_0x061d('0x37')]({'where':{'id':_0x2168d2[_0x061d('0xb7')]['id']}})[_0x061d('0x2b')](handleEntityNotFound(_0x4fd7b0,null))[_0x061d('0x2b')](function(_0x226a87){if(_0x226a87){_0x2d6e57=_0x226a87;_0x3e497c['model']=_[_0x061d('0x31')](db[_0x061d('0x54')][_0x061d('0xc2')]);_0x3e497c[_0x061d('0x3b')]=_[_0x061d('0x31')](_0x2168d2[_0x061d('0x3b')]);_0x3e497c['filters']=_['intersection'](_0x3e497c['model'],_0x3e497c['query']);_0x5e01ec[_0x061d('0x3d')]=_[_0x061d('0x3e')](_0x3e497c[_0x061d('0x3a')],qs[_0x061d('0x3f')](_0x2168d2['query'][_0x061d('0x3f')]));_0x5e01ec[_0x061d('0x3d')]=_0x5e01ec[_0x061d('0x3d')][_0x061d('0x32')]?_0x5e01ec[_0x061d('0x3d')]:_0x3e497c[_0x061d('0x3a')];_0x5e01ec[_0x061d('0x42')]=qs[_0x061d('0x43')](_0x2168d2[_0x061d('0x3b')]['sort']);_0x5e01ec[_0x061d('0x4e')]=qs[_0x061d('0x3c')](_[_0x061d('0xc3')](_0x2168d2['query'],_0x3e497c['filters']));if(_0x2168d2[_0x061d('0x3b')]['filter']){_0x5e01ec[_0x061d('0x4e')]=_[_0x061d('0x7e')](_0x5e01ec[_0x061d('0x4e')],{'$or':_[_0x061d('0x56')](_0x5e01ec[_0x061d('0x3d')],function(_0x448a83){var _0x7307ab={};_0x7307ab[_0x448a83]={'$like':'%'+_0x2168d2[_0x061d('0x3b')][_0x061d('0x67')]+'%'};return _0x7307ab;})});}_0x5e01ec=_[_0x061d('0x7e')]({},_0x5e01ec,_0x2168d2['options']);return _0x2d6e57[_0x061d('0xc1')](_0x5e01ec);}})[_0x061d('0x2b')](function(_0x59d53f){if(_0x59d53f){_0x25f74c=_0x59d53f['length'];if(!_0x2168d2['query'][_0x061d('0x40')]('nolimit')){_0x5e01ec[_0x061d('0x24')]=qs[_0x061d('0x24')](_0x2168d2['query'][_0x061d('0x24')]);_0x5e01ec[_0x061d('0x26')]=qs[_0x061d('0x26')](_0x2168d2['query']['offset']);}return _0x2d6e57[_0x061d('0xc1')](_0x5e01ec);}})[_0x061d('0x2b')](function(_0x1e3738){if(_0x1e3738){return _0x1e3738?{'count':_0x25f74c,'rows':_0x1e3738}:null;}})[_0x061d('0x2b')](respondWithResult(_0x4fd7b0,null))['catch'](handleError(_0x4fd7b0,null));};exports[_0x061d('0xc4')]=function(_0x49eb4b,_0x8ae490,_0xda70eb){if(_0x49eb4b[_0x061d('0x92')]['id']){delete _0x49eb4b[_0x061d('0x92')]['id'];}return db[_0x061d('0x30')][_0x061d('0x37')]({'where':{'id':_0x49eb4b['params']['id']}})['then'](handleEntityNotFound(_0x8ae490,null))['then'](function(_0x1f30b2){if(_0x1f30b2){return _0x1f30b2[_0x061d('0xc4')](_0x49eb4b[_0x061d('0x92')][_0x061d('0xc5')]||[]);}return null;})['then'](respondWithResult(_0x8ae490,null))['catch'](handleError(_0x8ae490,null));};exports['getHoppers']=function(_0xf7d31c,_0x3ba12f,_0x224c38){var _0x365ebe={'raw':![],'where':{}};var _0x12ec59={};var _0x47d08d={'count':0x0,'rows':[]};return db[_0x061d('0x30')]['findOne']({'where':{'id':_0xf7d31c[_0x061d('0xb7')]['id']}})[_0x061d('0x2b')](handleEntityNotFound(_0x3ba12f,null))[_0x061d('0x2b')](function(_0x5dc4d4){if(_0x5dc4d4){_0x12ec59[_0x061d('0x3a')]=_[_0x061d('0x31')](db[_0x061d('0x98')][_0x061d('0xc2')]);_0x12ec59[_0x061d('0x3b')]=_[_0x061d('0x31')](_0xf7d31c[_0x061d('0x3b')]);_0x12ec59[_0x061d('0x3c')]=_['intersection'](_0x12ec59[_0x061d('0x3a')],_0x12ec59[_0x061d('0x3b')]);_0x365ebe[_0x061d('0x3d')]=_[_0x061d('0x3e')](_0x12ec59[_0x061d('0x3a')],qs['fields'](_0xf7d31c[_0x061d('0x3b')]['fields']));_0x365ebe[_0x061d('0x3d')]=_0x365ebe[_0x061d('0x3d')][_0x061d('0x32')]?_0x365ebe['attributes']:_0x12ec59[_0x061d('0x3a')];if(!_0xf7d31c[_0x061d('0x3b')][_0x061d('0x40')](_0x061d('0x41'))){_0x365ebe['limit']=qs[_0x061d('0x24')](_0xf7d31c['query'][_0x061d('0x24')]);_0x365ebe[_0x061d('0x26')]=qs[_0x061d('0x26')](_0xf7d31c[_0x061d('0x3b')]['offset']);}_0x365ebe[_0x061d('0x42')]=qs[_0x061d('0x43')](_0xf7d31c['query']['sort']);_0x365ebe[_0x061d('0x4e')]=qs[_0x061d('0x3c')](_[_0x061d('0xc3')](_0xf7d31c[_0x061d('0x3b')],_0x12ec59[_0x061d('0x3c')]));_0x365ebe[_0x061d('0x4e')][_0x061d('0xc6')]=_0x5dc4d4['id'];if(_0xf7d31c[_0x061d('0x3b')][_0x061d('0x67')]){_0x365ebe[_0x061d('0x4e')]=_['merge'](_0x365ebe[_0x061d('0x4e')],{'$or':_[_0x061d('0x56')](_0x365ebe[_0x061d('0x3d')],function(_0x56e5d2){var _0x3b3986={};_0x3b3986[_0x56e5d2]={'$like':'%'+_0xf7d31c[_0x061d('0x3b')][_0x061d('0x67')]+'%'};return _0x3b3986;})});}_0x365ebe=_[_0x061d('0x7e')]({},_0x365ebe,_0xf7d31c[_0x061d('0xc7')]);return db[_0x061d('0x98')][_0x061d('0x25')]({'where':_0x365ebe[_0x061d('0x4e')]})['then'](function(_0xa01b25){_0x47d08d[_0x061d('0x25')]=_0xa01b25;if(_0xf7d31c[_0x061d('0x3b')]['includeAll']){_0x365ebe[_0x061d('0xc8')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x365ebe);})[_0x061d('0x2b')](function(_0x2bd91c){_0x47d08d[_0x061d('0x89')]=_0x2bd91c;return _0x47d08d;});}})['then'](respondWithFilteredResult(_0x3ba12f,_0x365ebe))['catch'](handleError(_0x3ba12f,null));};exports['getHopperHistories']=function(_0x424cbd,_0x1ffa77,_0x17b387){var _0x8c95cf={'raw':!![],'where':{}};var _0x260ded={};var _0xb8880e={'count':0x0,'rows':[]};return db[_0x061d('0x30')]['findOne']({'where':{'id':_0x424cbd[_0x061d('0xb7')]['id']}})[_0x061d('0x2b')](handleEntityNotFound(_0x1ffa77,null))['then'](function(_0x54b952){if(_0x54b952){_0x260ded[_0x061d('0x3a')]=_['keys'](db[_0x061d('0xa5')][_0x061d('0xc2')]);_0x260ded[_0x061d('0x3b')]=_[_0x061d('0x31')](_0x424cbd[_0x061d('0x3b')]);_0x260ded['filters']=_[_0x061d('0x3e')](_0x260ded[_0x061d('0x3a')],_0x260ded['query']);_0x8c95cf[_0x061d('0x3d')]=_['intersection'](_0x260ded[_0x061d('0x3a')],qs['fields'](_0x424cbd[_0x061d('0x3b')][_0x061d('0x3f')]));_0x8c95cf[_0x061d('0x3d')]=_0x8c95cf[_0x061d('0x3d')][_0x061d('0x32')]?_0x8c95cf[_0x061d('0x3d')]:_0x260ded[_0x061d('0x3a')];if(!_0x424cbd[_0x061d('0x3b')][_0x061d('0x40')](_0x061d('0x41'))){_0x8c95cf[_0x061d('0x24')]=qs[_0x061d('0x24')](_0x424cbd[_0x061d('0x3b')][_0x061d('0x24')]);_0x8c95cf[_0x061d('0x26')]=qs[_0x061d('0x26')](_0x424cbd['query'][_0x061d('0x26')]);}_0x8c95cf['order']=qs['sort'](_0x424cbd[_0x061d('0x3b')][_0x061d('0x43')]);_0x8c95cf['where']=qs[_0x061d('0x3c')](_['pick'](_0x424cbd['query'],_0x260ded['filters']));_0x8c95cf[_0x061d('0x4e')]['ContactId']=_0x54b952['id'];if(_0x424cbd[_0x061d('0x3b')]['filter']){_0x8c95cf[_0x061d('0x4e')]=_[_0x061d('0x7e')](_0x8c95cf[_0x061d('0x4e')],{'$or':_[_0x061d('0x56')](_0x8c95cf['attributes'],function(_0x1d2a75){var _0x346169={};_0x346169[_0x1d2a75]={'$like':'%'+_0x424cbd[_0x061d('0x3b')][_0x061d('0x67')]+'%'};return _0x346169;})});}_0x8c95cf=_[_0x061d('0x7e')]({},_0x8c95cf,_0x424cbd['options']);return db[_0x061d('0xa5')][_0x061d('0x25')]({'where':_0x8c95cf['where']})[_0x061d('0x2b')](function(_0x3aa050){_0xb8880e[_0x061d('0x25')]=_0x3aa050;if(_0x424cbd['query'][_0x061d('0xc9')]){_0x8c95cf['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x061d('0x93')](_0x8c95cf);})[_0x061d('0x2b')](function(_0x6771aa){_0xb8880e[_0x061d('0x89')]=_0x6771aa;return _0xb8880e;});}})[_0x061d('0x2b')](respondWithFilteredResult(_0x1ffa77,_0x8c95cf))[_0x061d('0x8a')](handleError(_0x1ffa77,null));};exports['getHopperFinals']=function(_0x18c313,_0x491f74,_0x57af2f){var _0x4c1ddf={'raw':!![],'where':{}};var _0x2aea8b={};var _0x27b6e8={'count':0x0,'rows':[]};return db[_0x061d('0x30')]['findOne']({'where':{'id':_0x18c313[_0x061d('0xb7')]['id']}})[_0x061d('0x2b')](handleEntityNotFound(_0x491f74,null))[_0x061d('0x2b')](function(_0x4a1032){if(_0x4a1032){_0x2aea8b[_0x061d('0x3a')]=_['keys'](db['CmHopperFinal'][_0x061d('0xc2')]);_0x2aea8b[_0x061d('0x3b')]=_['keys'](_0x18c313['query']);_0x2aea8b[_0x061d('0x3c')]=_['intersection'](_0x2aea8b[_0x061d('0x3a')],_0x2aea8b['query']);_0x4c1ddf['attributes']=_[_0x061d('0x3e')](_0x2aea8b['model'],qs['fields'](_0x18c313['query']['fields']));_0x4c1ddf[_0x061d('0x3d')]=_0x4c1ddf[_0x061d('0x3d')]['length']?_0x4c1ddf[_0x061d('0x3d')]:_0x2aea8b[_0x061d('0x3a')];if(!_0x18c313[_0x061d('0x3b')][_0x061d('0x40')](_0x061d('0x41'))){_0x4c1ddf['limit']=qs['limit'](_0x18c313[_0x061d('0x3b')][_0x061d('0x24')]);_0x4c1ddf[_0x061d('0x26')]=qs[_0x061d('0x26')](_0x18c313[_0x061d('0x3b')][_0x061d('0x26')]);}_0x4c1ddf[_0x061d('0x42')]=qs[_0x061d('0x43')](_0x18c313['query']['sort']);_0x4c1ddf[_0x061d('0x4e')]=qs['filters'](_[_0x061d('0xc3')](_0x18c313[_0x061d('0x3b')],_0x2aea8b[_0x061d('0x3c')]));_0x4c1ddf['where'][_0x061d('0xc6')]=_0x4a1032['id'];if(_0x18c313[_0x061d('0x3b')][_0x061d('0x67')]){_0x4c1ddf['where']=_[_0x061d('0x7e')](_0x4c1ddf[_0x061d('0x4e')],{'$or':_[_0x061d('0x56')](_0x4c1ddf[_0x061d('0x3d')],function(_0x64ef38){var _0x454b6c={};_0x454b6c[_0x64ef38]={'$like':'%'+_0x18c313[_0x061d('0x3b')][_0x061d('0x67')]+'%'};return _0x454b6c;})});}_0x4c1ddf=_['merge']({},_0x4c1ddf,_0x18c313[_0x061d('0xc7')]);return db[_0x061d('0xca')][_0x061d('0x25')]({'where':_0x4c1ddf[_0x061d('0x4e')]})[_0x061d('0x2b')](function(_0x5c9afb){_0x27b6e8[_0x061d('0x25')]=_0x5c9afb;if(_0x18c313[_0x061d('0x3b')][_0x061d('0xc9')]){_0x4c1ddf[_0x061d('0xc8')]=[{'all':!![]}];}return db[_0x061d('0xca')][_0x061d('0x93')](_0x4c1ddf);})[_0x061d('0x2b')](function(_0x2b47a9){_0x27b6e8[_0x061d('0x89')]=_0x2b47a9;return _0x27b6e8;});}})['then'](respondWithFilteredResult(_0x491f74,_0x4c1ddf))[_0x061d('0x8a')](handleError(_0x491f74,null));};exports[_0x061d('0xcb')]=function(_0x532b48,_0x4094fe,_0x274f9d){var _0x37d445={'raw':!![],'where':{}};var _0x11efb7={};var _0x2db07b={'count':0x0,'rows':[]};return db[_0x061d('0x30')][_0x061d('0x37')]({'where':{'id':_0x532b48[_0x061d('0xb7')]['id']}})['then'](handleEntityNotFound(_0x4094fe,null))[_0x061d('0x2b')](function(_0x203930){if(_0x203930){_0x11efb7[_0x061d('0x3a')]=_['keys'](db[_0x061d('0xab')][_0x061d('0xc2')]);_0x11efb7[_0x061d('0x3b')]=_[_0x061d('0x31')](_0x532b48[_0x061d('0x3b')]);_0x11efb7[_0x061d('0x3c')]=_['intersection'](_0x11efb7[_0x061d('0x3a')],_0x11efb7['query']);_0x37d445['attributes']=_['intersection'](_0x11efb7[_0x061d('0x3a')],qs[_0x061d('0x3f')](_0x532b48[_0x061d('0x3b')][_0x061d('0x3f')]));_0x37d445[_0x061d('0x3d')]=_0x37d445[_0x061d('0x3d')][_0x061d('0x32')]?_0x37d445['attributes']:_0x11efb7[_0x061d('0x3a')];if(!_0x532b48['query'][_0x061d('0x40')](_0x061d('0x41'))){_0x37d445[_0x061d('0x24')]=qs['limit'](_0x532b48['query']['limit']);_0x37d445[_0x061d('0x26')]=qs[_0x061d('0x26')](_0x532b48['query'][_0x061d('0x26')]);}_0x37d445[_0x061d('0x42')]=qs['sort'](_0x532b48[_0x061d('0x3b')][_0x061d('0x43')]);_0x37d445[_0x061d('0x4e')]=qs[_0x061d('0x3c')](_['pick'](_0x532b48[_0x061d('0x3b')],_0x11efb7[_0x061d('0x3c')]));_0x37d445[_0x061d('0x4e')][_0x061d('0xc6')]=_0x203930['id'];if(_0x532b48[_0x061d('0x3b')][_0x061d('0x67')]){_0x37d445[_0x061d('0x4e')]=_['merge'](_0x37d445[_0x061d('0x4e')],{'$or':_['map'](_0x37d445[_0x061d('0x3d')],function(_0x1e85e4){var _0x1ec62f={};_0x1ec62f[_0x1e85e4]={'$like':'%'+_0x532b48[_0x061d('0x3b')][_0x061d('0x67')]+'%'};return _0x1ec62f;})});}_0x37d445=_['merge']({},_0x37d445,_0x532b48[_0x061d('0xc7')]);return db[_0x061d('0xab')]['count']({'where':_0x37d445[_0x061d('0x4e')]})[_0x061d('0x2b')](function(_0x8983b1){_0x2db07b['count']=_0x8983b1;if(_0x532b48[_0x061d('0x3b')][_0x061d('0xc9')]){_0x37d445[_0x061d('0xc8')]=[{'all':!![]}];}return db[_0x061d('0xab')][_0x061d('0x93')](_0x37d445);})[_0x061d('0x2b')](function(_0x4a2a9e){_0x2db07b['rows']=_0x4a2a9e;return _0x2db07b;});}})[_0x061d('0x2b')](respondWithFilteredResult(_0x4094fe,_0x37d445))[_0x061d('0x8a')](handleError(_0x4094fe,null));};exports[_0x061d('0xcc')]=function(_0x2887cf,_0x1a4662,_0x5e3f12){try{if(!_0x2887cf['body'][_0x061d('0x62')]){throw new Error(_0x061d('0xcd'));}if(!_0x2887cf[_0x061d('0x92')][_0x061d('0xce')]){throw new Error(_0x061d('0xcf'));}if(!_0x2887cf[_0x061d('0x92')]['binding_values']){throw new Error(_0x061d('0xd0'));}if(!_0x2887cf[_0x061d('0x92')]['socket_timestamp']){throw new Error(_0x061d('0xd1'));}var _0x1f1677=_0x2887cf['body']['binding_keys']['split'](',');var _0x37f25e=_0x2887cf[_0x061d('0x92')]['binding_values']['split'](',');if(!_0x1f1677['length']||!_0x37f25e[_0x061d('0x32')]||_0x1f1677[_0x061d('0x32')]!==_0x37f25e[_0x061d('0x32')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x2887cf['body'][_0x061d('0x3f')]=_['zipObject'](_0x1f1677,_0x37f25e);if(!_0x2887cf[_0x061d('0x92')][_0x061d('0x3f')]['phone']){throw new Error(_0x061d('0xd2'));}if(!_0x2887cf['body'][_0x061d('0x3f')][_0x061d('0xd3')]){throw new Error(_0x061d('0xd4'));}var _0x3abec4=path['join'](config['root'],'server/files/tmp',_0x2887cf[_0x061d('0xd5')][_0x061d('0xd6')]);fs[_0x061d('0xd7')](_0x3abec4,parseInt(_0x061d('0xd8'),0x8));var _0x32ceaa=require(_0x061d('0xd9'))[_0x061d('0xda')](path[_0x061d('0xaf')](__dirname,_0x061d('0xdb')),[_0x3abec4,_0x2887cf['body'][_0x061d('0xce')],_0x2887cf[_0x061d('0x92')][_0x061d('0xdc')],_0x2887cf[_0x061d('0x92')]['ListId'],_0x2887cf['body']['CompanyId'],_0x2887cf[_0x061d('0x92')][_0x061d('0xb2')],_0x2887cf[_0x061d('0x92')]['socket_timestamp']]);return _0x1a4662[_0x061d('0x21')](0xc8)[_0x061d('0x23')]({'message':'File\x20uploaded\x20correctly!','pid':_0x32ceaa[_0x061d('0xdd')]});}catch(_0x474576){return _0x1a4662[_0x061d('0x21')](0x1f4)['send'](_0x474576);}};exports[_0x061d('0xde')]=function(_0xb83d93,_0x4936af,_0x3595e7){var _0xaa7c7c=fs[_0x061d('0xdf')](_0xb83d93[_0x061d('0xd5')][_0x061d('0xe0')]);Papa[_0x061d('0xe1')](_0xaa7c7c,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x19aeaa){return _0x4936af[_0x061d('0x21')](0xc8)[_0x061d('0x23')]({'file':_0xb83d93[_0x061d('0xd5')],'fields':_0x19aeaa['meta'][_0x061d('0x3f')]});}});};exports[_0x061d('0xe2')]=function(_0x3a45c2,_0xc0ab9,_0x488452){return db['User']['findAll']({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0x061d('0x2b')](function(_0x5bb3df){var _0x59ad56=![];if(!_0x3a45c2[_0x061d('0x92')][_0x061d('0x62')]){throw new Error('No\x20ListId\x20specified');}if(!_0x3a45c2[_0x061d('0x92')][_0x061d('0xe3')][_0x061d('0xc0')]){throw new Error(_0x061d('0xd2'));}if(!_0x3a45c2[_0x061d('0x92')][_0x061d('0xe3')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x3a45c2[_0x061d('0x92')][_0x061d('0xe4')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x1facde=require('child_process')['fork'](path[_0x061d('0xaf')](__dirname,_0x061d('0xe5')),[_0x3a45c2[_0x061d('0xb7')]['id'],JSON[_0x061d('0xe6')](_0x3a45c2['body']),JSON[_0x061d('0xe6')](_0x5bb3df)]);_0x1facde['on'](_0x061d('0xe7'),function(_0x42ec04){_0x59ad56=!![];return _0xc0ab9[_0x061d('0x21')](0xc8)[_0x061d('0x23')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x1facde[_0x061d('0xdd')]});});_0x1facde['on'](_0x061d('0xe8'),function(_0x515338){if(_0x515338&&!_0x59ad56){return _0xc0ab9[_0x061d('0x21')](0x1f4)[_0x061d('0x23')]({'message':_0x061d('0xe9'),'pid':_0x1facde[_0x061d('0xdd')]});}});})[_0x061d('0x8a')](handleError(_0xc0ab9,null));};exports[_0x061d('0xea')]=function(_0x1eac3a,_0x358bdd){var _0x55b0b3=[_0x061d('0xeb'),'chat',_0x061d('0xec'),_0x061d('0xed'),_0x061d('0xee'),_0x061d('0xef'),_0x061d('0xf0')];var _0x5a94ae={'offset':0x0,'order':qs['sort'](_0x061d('0xf1'))},_0x5223e3={'count':0x0,'rows':[]};Promise[_0x061d('0x75')]()[_0x061d('0x2b')](function(){if(_0x1eac3a[_0x061d('0x3b')][_0x061d('0xf2')]){if(!_[_0x061d('0xf3')](_0x55b0b3,_0x1eac3a[_0x061d('0x3b')][_0x061d('0xf2')]['toLowerCase']())){throw new Error(_0x061d('0xf4'));}_0x55b0b3=[_0x1eac3a['query'][_0x061d('0xf2')][_0x061d('0xf5')]()];}if(_0x1eac3a[_0x061d('0x3b')][_0x061d('0xf6')]){try{var _0x3bddee=JSON[_0x061d('0xe1')](_0x1eac3a['query'][_0x061d('0xf6')]);if(!moment(_0x3bddee[_0x061d('0x45')])[_0x061d('0xf7')]()){throw new Error(_0x061d('0xf8'));}if(!moment(_0x3bddee['to'])[_0x061d('0xf7')]()){throw new Error(_0x061d('0xf9'));}}catch(_0xad1f3d){throw new Error(_0x061d('0xfa'));}}if(!_0x1eac3a['query']['hasOwnProperty']('nolimit')){_0x5a94ae['limit']=qs[_0x061d('0x24')](_0x1eac3a['query'][_0x061d('0x24')]||0xa);_0x5a94ae[_0x061d('0x26')]=qs[_0x061d('0x26')](_0x1eac3a[_0x061d('0x3b')][_0x061d('0x26')]);}var _0x431b5e=_0x55b0b3['map'](function(_0x50cf8b){if(_0x50cf8b===_0x061d('0xf0')){var _0x198908={'attributes':['id',_0x061d('0xfb'),_0x061d('0x39'),_0x061d('0xfc'),_0x061d('0xfd'),_0x061d('0xfe'),_0x061d('0xff'),'endtime',_0x061d('0x100'),_0x061d('0x101'),_0x061d('0x102'),_0x061d('0x103'),_0x061d('0x104'),_0x061d('0x105'),'UserId'],'where':{'ContactId':_0x1eac3a['params']['id']},'include':[{'model':db[_0x061d('0x59')],'as':_0x061d('0x59'),'attributes':['id','name',_0x061d('0x106'),_0x061d('0x90')]}],'order':[[_0x061d('0x102'),_0x061d('0x72')]]};if(_0x1eac3a['query']['range']){_0x198908[_0x061d('0x4e')][_0x061d('0x102')]={'$gte':_0x3bddee['from'],'$lte':_0x3bddee['to']};}return db[_0x061d('0x107')][_0x061d('0x108')](_0x198908)['then'](function(_0x370881){_0x5223e3[_0x061d('0x25')]+=_0x370881[_0x061d('0x25')];return _['map'](_0x370881[_0x061d('0x89')],function(_0x327351){var _0xbd15c0=_0x327351[_0x061d('0x94')]({'plain':!![]});_0xbd15c0[_0x061d('0xf2')]=_0x50cf8b;if(_0xbd15c0['User']){_0xbd15c0[_0x061d('0x59')]={'id':_0xbd15c0['User']['id'],'name':_0xbd15c0[_0x061d('0x59')][_0x061d('0x2e')],'fullname':_0xbd15c0[_0x061d('0x59')][_0x061d('0x106')],'alias':_0xbd15c0[_0x061d('0x59')][_0x061d('0x90')]};}return _0xbd15c0;});});}else{var _0x9dd736=_[_0x061d('0x109')](_0x50cf8b)+(_0x50cf8b===_0x061d('0x10a')?_0x061d('0x10b'):_0x061d('0x10c'));var _0x1033ed={'attributes':['id',_0x061d('0x10d'),_0x061d('0x10e'),'createdAt',_0x061d('0x101'),'disposition',_0x061d('0x10f'),'thirdDisposition','UserId',_0x9dd736+'Id'],'where':{'ContactId':_0x1eac3a[_0x061d('0xb7')]['id']},'include':[{'model':db[_0x9dd736],'as':'Account','attributes':['id',_0x061d('0x2e'),_0x061d('0x110')]},{'model':db[_0x061d('0x59')],'as':'Owner','attributes':['id',_0x061d('0x2e'),_0x061d('0x106')]},{'model':db[_0x061d('0x54')],'as':'Tags','attributes':['id',_0x061d('0x2e'),_0x061d('0x111')],'through':{'attributes':[]}}],'order':[[_0x061d('0x102'),_0x061d('0x72')]]};if(_0x1eac3a[_0x061d('0x3b')]['range']){_0x1033ed[_0x061d('0x4e')][_0x061d('0x102')]={'$gte':_0x3bddee[_0x061d('0x45')],'$lte':_0x3bddee['to']};}switch(_0x50cf8b){case _0x061d('0x10a'):_0x1033ed[_0x061d('0x3d')][_0x061d('0x35')](_0x061d('0x112'),_0x061d('0x113'),_0x061d('0x114'),_0x061d('0x115'),_0x061d('0x116'),_0x061d('0x117'),_0x061d('0x118'),_0x061d('0x119'),'referer');break;case'mail':_0x1033ed[_0x061d('0x3d')][_0x061d('0x35')]('subject',_0x061d('0x11a'));break;case'openchannel':_0x1033ed[_0x061d('0x3d')]['push']('externalUrl',_0x061d('0x11b'));break;}return db[_[_0x061d('0x109')](_0x50cf8b)+_0x061d('0x11c')][_0x061d('0x108')](_0x1033ed)[_0x061d('0x2b')](function(_0x1dde2a){_0x5223e3[_0x061d('0x25')]+=_0x1dde2a[_0x061d('0x25')];return _['map'](_0x1dde2a[_0x061d('0x89')],function(_0x3e5a15){var _0x53edbc=_0x3e5a15[_0x061d('0x94')]({'plain':!![]});_0x53edbc[_0x061d('0xf2')]=_0x50cf8b;if(_0x53edbc[_0x061d('0x11d')]){_0x53edbc['Owner']={'id':_0x53edbc[_0x061d('0x11d')]['id'],'name':_0x53edbc[_0x061d('0x11d')][_0x061d('0x2e')],'fullname':_0x53edbc[_0x061d('0x11d')][_0x061d('0x106')]};}return _0x53edbc;});});}});return Promise[_0x061d('0x38')](_0x431b5e);})[_0x061d('0x2b')](function(_0x24f45a){return _(_0x24f45a)[_0x061d('0x11e')]()[_0x061d('0x11f')](_0x061d('0x102'))[_0x061d('0x120')]()[_0x061d('0x55')]();})[_0x061d('0x2b')](function(_0x5024c8){_0x5223e3[_0x061d('0x89')]=_0x5a94ae[_0x061d('0x24')]?_0x5024c8[_0x061d('0x121')](_0x5a94ae['offset'],_0x5a94ae[_0x061d('0x26')]+_0x5a94ae['limit']):_0x5024c8;return _0x5223e3;})[_0x061d('0x2b')](respondWithFilteredResult(_0x358bdd,_0x5a94ae))['catch'](handleError(_0x358bdd,null));};
\ No newline at end of file
+var _0x5f4f=['JscriptySessionReport','bulkCreate','each','duplicates','$or','findOrCreate','spread','params','omit','format','cf_%d','$and','pickBy','table','id\x20=\x20?','phone','getTags','setTags','ids','getHoppers','CmHopper','rawAttributes','ContactId','options','include','getHopperHistories','includeAll','getHopperFinals','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','server/files/tmp','file','filename','chmodSync','child_process','../../components/import/cm/csv','upload','parse','meta','import','binding','fork','../../components/import/cm/csv2','stringify','message','exit','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','voice','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','starttime','endtime','duration','note','createdAt','userSecondDisposition','userThirdDisposition','UserId','fullname','DESC','findAndCountAll','startCase','Website','Account','closedAt','secondDisposition','key','Owner','browserName','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','substatus','externalUrl','Interaction','flatten','reverse','slice','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','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./cmContact.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','error','stack','name','send','index','CmContact','describe','keys','length','startsWith','cf_','push','CmCustomField','findOne','all','fieldType','type','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','select','field','color','from','tools_tags','cm_contacts','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','left_join','t.id\x20=\x20ct.TagId','where','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','sqlOperator','conditions','Tag','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','value','datetime','DATE','buildExpression','text','filter','isNil','Contact','ListId','concat','\x20=\x20?','isArray','tag','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.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','c.id','isEmpty','having','t.id\x20IN\x20?','resolve','role','agent','some','user','c.ListId\x20IN\x20?','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.email','c.createdAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','destroy','find','columnName','findAll','displayName','alias','custom','values','body','get','mergeWith','tags','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','info','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport'];(function(_0x44a59b,_0x18f8a5){var _0x5382c5=function(_0x453223){while(--_0x453223){_0x44a59b['push'](_0x44a59b['shift']());}};_0x5382c5(++_0x18f8a5);}(_0x5f4f,0x6b));var _0xf5f4=function(_0x35e92e,_0x21581b){_0x35e92e=_0x35e92e-0x0;var _0x1205a8=_0x5f4f[_0x35e92e];return _0x1205a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf5f4('0x0'));var zipdir=require(_0xf5f4('0x1'));var jsonpatch=require(_0xf5f4('0x2'));var rp=require(_0xf5f4('0x3'));var moment=require(_0xf5f4('0x4'));var BPromise=require(_0xf5f4('0x5'));var Mustache=require(_0xf5f4('0x6'));var util=require('util');var path=require(_0xf5f4('0x7'));var sox=require(_0xf5f4('0x8'));var csv=require(_0xf5f4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf5f4('0xa'));var _=require(_0xf5f4('0xb'));var squel=require(_0xf5f4('0xc'));var crypto=require(_0xf5f4('0xd'));var jsforce=require(_0xf5f4('0xe'));var deskjs=require(_0xf5f4('0xf'));var toCsv=require(_0xf5f4('0x9'));var querystring=require(_0xf5f4('0x10'));var Papa=require(_0xf5f4('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf5f4('0x12'));var hardwareService=require(_0xf5f4('0x13'));var logger=require(_0xf5f4('0x14'))(_0xf5f4('0x15'));var utils=require(_0xf5f4('0x16'));var config=require(_0xf5f4('0x17'));var licenseUtil=require(_0xf5f4('0x18'));var db=require(_0xf5f4('0x19'))['db'];config[_0xf5f4('0x1a')]=_[_0xf5f4('0x1b')](config[_0xf5f4('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xf5f4('0x1c'))(new Redis(config['redis']));require(_0xf5f4('0x1d'))[_0xf5f4('0x1e')](socket);function respondWithStatusCode(_0xf1973,_0x1d7023){_0x1d7023=_0x1d7023||0xcc;return function(_0x7ed20c){if(_0x7ed20c){return _0xf1973[_0xf5f4('0x1f')](_0x1d7023);}return _0xf1973[_0xf5f4('0x20')](_0x1d7023)['end']();};}function respondWithResult(_0x2d31a6,_0x49fd12){_0x49fd12=_0x49fd12||0xc8;return function(_0x33873b){if(_0x33873b){return _0x2d31a6[_0xf5f4('0x20')](_0x49fd12)['json'](_0x33873b);}};}function respondWithFilteredResult(_0x23b1c2,_0x26e124){return function(_0x5d4b49){if(_0x5d4b49){var _0x1e4486=typeof _0x26e124[_0xf5f4('0x21')]===_0xf5f4('0x22')&&typeof _0x26e124[_0xf5f4('0x23')]===_0xf5f4('0x22');var _0x1e64fb=_0x5d4b49[_0xf5f4('0x24')];var _0x15c202=_0x1e4486?0x0:_0x26e124[_0xf5f4('0x21')];var _0x1b44e4=_0x1e4486?_0x5d4b49[_0xf5f4('0x24')]:_0x26e124['offset']+_0x26e124[_0xf5f4('0x23')];var _0x2eb223;if(_0x1b44e4>=_0x1e64fb){_0x1b44e4=_0x1e64fb;_0x2eb223=0xc8;}else{_0x2eb223=0xce;}_0x23b1c2[_0xf5f4('0x20')](_0x2eb223);return _0x23b1c2[_0xf5f4('0x25')](_0xf5f4('0x26'),_0x15c202+'-'+_0x1b44e4+'/'+_0x1e64fb)[_0xf5f4('0x27')](_0x5d4b49);}return null;};}function patchUpdates(_0x277cdd){return function(_0x6a33d7){try{jsonpatch[_0xf5f4('0x28')](_0x6a33d7,_0x277cdd,!![]);}catch(_0x2159d3){return BPromise[_0xf5f4('0x29')](_0x2159d3);}return _0x6a33d7['save']();};}function saveUpdates(_0x30fcc6,_0x10b5d1){return function(_0x4964d4){if(_0x4964d4){return _0x4964d4[_0xf5f4('0x2a')](_0x30fcc6)[_0xf5f4('0x2b')](function(_0x4640a9){return _0x4640a9;});}return null;};}function removeEntity(_0x2383ba,_0x2a8974){return function(_0x10782e){if(_0x10782e){return _0x10782e['destroy']()[_0xf5f4('0x2b')](function(){_0x2383ba[_0xf5f4('0x20')](0xcc)[_0xf5f4('0x2c')]();});}};}function handleEntityNotFound(_0x23eefb,_0x105eee){return function(_0x420204){if(!_0x420204){_0x23eefb['sendStatus'](0x194);}return _0x420204;};}function handleError(_0x8003dd,_0x479fe4){_0x479fe4=_0x479fe4||0x1f4;return function(_0x207f07){logger[_0xf5f4('0x2d')](_0x207f07[_0xf5f4('0x2e')]);if(_0x207f07[_0xf5f4('0x2f')]){delete _0x207f07[_0xf5f4('0x2f')];}_0x8003dd[_0xf5f4('0x20')](_0x479fe4)[_0xf5f4('0x30')](_0x207f07);};}exports[_0xf5f4('0x31')]=function(_0x55fb24,_0x4cdbcd){var _0x136ada={},_0x288a93={},_0x5e2b7c={'count':0x0,'rows':[]};return db[_0xf5f4('0x32')][_0xf5f4('0x33')]()['then'](function(_0x13bea5){var _0x322261=[];for(var _0x4e9c91=0x0;_0x4e9c91<Object[_0xf5f4('0x34')](_0x13bea5)[_0xf5f4('0x35')];_0x4e9c91++){var _0x3f436c=Object[_0xf5f4('0x34')](_0x13bea5)[_0x4e9c91];if(_[_0xf5f4('0x36')](_0x3f436c,_0xf5f4('0x37'))){_0x322261[_0xf5f4('0x38')](db[_0xf5f4('0x39')][_0xf5f4('0x3a')]({'where':{'id':_['trimStart'](_0x3f436c,'cf_')},'raw':!![]}));}}return BPromise[_0xf5f4('0x3b')](_0x322261)['then'](function(_0x584767){for(var _0x241e57=0x0;_0x241e57<_0x584767['length'];_0x241e57++){if(_0x584767[_0x241e57]){var _0x19cadf='cf_'+_0x584767[_0x241e57]['id'];var _0xead4c3=_0x13bea5[_0x19cadf];_0xead4c3[_0xf5f4('0x3c')]=_0x584767[_0x241e57][_0xf5f4('0x3d')];}}return _0x13bea5;});})[_0xf5f4('0x2b')](function(_0x5ad309){_0x288a93[_0xf5f4('0x3e')]=_['keys'](_0x5ad309);_0x288a93['query']=_['keys'](_0x55fb24[_0xf5f4('0x3f')]);_0x288a93[_0xf5f4('0x40')]=_[_0xf5f4('0x41')](_0x288a93[_0xf5f4('0x3e')],_0x288a93['query']);_0x136ada['attributes']=_[_0xf5f4('0x41')](_0x288a93[_0xf5f4('0x3e')],qs[_0xf5f4('0x42')](_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x42')]));_0x136ada[_0xf5f4('0x43')]=_0x136ada[_0xf5f4('0x43')][_0xf5f4('0x35')]?_0x136ada[_0xf5f4('0x43')]:_0x288a93[_0xf5f4('0x3e')];if(!_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x44')](_0xf5f4('0x45'))){_0x136ada[_0xf5f4('0x23')]=qs[_0xf5f4('0x23')](_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x23')]);_0x136ada[_0xf5f4('0x21')]=qs[_0xf5f4('0x21')](_0x55fb24[_0xf5f4('0x3f')]['offset']);}_0x136ada[_0xf5f4('0x46')]=qs[_0xf5f4('0x47')](_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x47')]);_0x136ada['where']=qs[_0xf5f4('0x40')](_[_0xf5f4('0x48')](_0x55fb24[_0xf5f4('0x3f')],_0x288a93['filters']),_0x5ad309);var _0x4c723d=[];var _0x2d1c66=squel[_0xf5f4('0x49')]()[_0xf5f4('0x4a')]('id')['field'](_0xf5f4('0x2f'))[_0xf5f4('0x4a')](_0xf5f4('0x4b'))[_0xf5f4('0x4c')](_0xf5f4('0x4d'));var _0x3b4068=squel['select']()[_0xf5f4('0x4c')](_0xf5f4('0x4e'),'c')['left_join'](_0xf5f4('0x4f'),'uc',_0xf5f4('0x50'))['left_join'](_0xf5f4('0x51'),'ct',_0xf5f4('0x52'))[_0xf5f4('0x53')](_0xf5f4('0x4d'),'t',_0xf5f4('0x54'))[_0xf5f4('0x55')](_0xf5f4('0x56'));var _0x6265c3=squel[_0xf5f4('0x57')]();var _0x4cf117=[];var _0x5be1ba=squel['expr']();var _0xff2350;if(_0x55fb24[_0xf5f4('0x3f')]['search']){_0xff2350=as[_0xf5f4('0x58')](_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x59')]);var _0x5275ed=_0xff2350[_0xf5f4('0x5a')];for(var _0xd26be7=0x0;_0xd26be7<_0xff2350[_0xf5f4('0x5b')][_0xf5f4('0x35')];_0xd26be7++){var _0x12c889=_0xff2350[_0xf5f4('0x5b')][_0xd26be7];var _0x5757ca='c';var _0x4aa8ce=_(_0x5ad309)[_0xf5f4('0x34')]()['find'](function(_0x43d592){return _0x43d592===_0x12c889['field'];});if(_0x4aa8ce)_0x4aa8ce=_0x5ad309[_0x12c889['field']];if(!_0x4aa8ce){if(_0x12c889[_0xf5f4('0x4a')]===_0xf5f4('0x5c')){var _0x13494c=_0x12c889['value']['split'](',')[_0xf5f4('0x5d')](function(_0x5b2e2b){return Number(_0x5b2e2b);});_0x13494c[_0xf5f4('0x5e')](function(_0x3f23e1){_0x5be1ba['or'](_0xf5f4('0x5f'),'%,'+_0x3f23e1+',%');});_0x4cf117=_[_0xf5f4('0x60')](_0x4cf117,_0x13494c);}else if(_0x12c889[_0xf5f4('0x4a')]===_0xf5f4('0x61')){_0x6265c3[_0xf5f4('0x62')](_0xf5f4('0x63'),_0x12c889[_0xf5f4('0x64')]);}}else{if(_0x12c889[_0xf5f4('0x4a')]==='dateOfBirth'||_0x4aa8ce[_0xf5f4('0x3c')]===_0xf5f4('0x65'))_0x12c889['castTo']=_0xf5f4('0x66');var _0x3ef5f3=as[_0xf5f4('0x67')](_0x5757ca,_0x4aa8ce[_0xf5f4('0x3d')],_0x12c889);_0x6265c3[_0x5275ed](_0x3ef5f3[_0xf5f4('0x68')],_0x3ef5f3[_0xf5f4('0x64')]['start'],_0x3ef5f3[_0xf5f4('0x64')][_0xf5f4('0x2c')]);}}}else{var _0x9cd49d=_(Object[_0xf5f4('0x34')](_0x55fb24[_0xf5f4('0x3f')]))[_0xf5f4('0x5d')](function(_0x2ca5de){return _0x5ad309[_0xf5f4('0x44')](_0x2ca5de)?_0x2ca5de:undefined;})[_0xf5f4('0x69')](function(_0x32c67c){return!_[_0xf5f4('0x6a')](_0x32c67c);})[_0xf5f4('0x64')]();if(_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x6b')])_0x9cd49d[_0xf5f4('0x38')](_0xf5f4('0x6b'));if(!_['isEmpty'](_0x9cd49d)){_0x9cd49d[_0xf5f4('0x5e')](function(_0x16827a){if(_0x16827a===_0xf5f4('0x6c')){_0x3b4068[_0xf5f4('0x55')]('c.ListId\x20IN\x20?',[][_0xf5f4('0x6d')](_0x55fb24[_0xf5f4('0x3f')][_0x16827a]));}else if(_0x16827a===_0xf5f4('0x6b')){var _0x11fa84='%'+_0x55fb24['query'][_0x16827a]+'%';_0x3b4068[_0xf5f4('0x55')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x11fa84);}else{_0x3b4068['where']('c.'+_0x16827a+_0xf5f4('0x6e'),_0x55fb24[_0xf5f4('0x3f')][_0x16827a]);}});}if(_0x55fb24[_0xf5f4('0x3f')]['tag']){_0x4cf117=_[_0xf5f4('0x6f')](_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x70')])?_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x70')]:new Array(_0x55fb24['query'][_0xf5f4('0x70')]);_0x4cf117['forEach'](function(_0x197044){_0x5be1ba['or'](_0xf5f4('0x5f'),'%,'+_0x197044+',%');});}if(_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x69')]){var _0x5290a7=_0x55fb24[_0xf5f4('0x3f')][_0xf5f4('0x69')][_0xf5f4('0x71')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x5290a7['split']('\x20')[_0xf5f4('0x35')]>0x1){_0x6265c3['or'](_0xf5f4('0x72'),qs['getFullTextValue'](_0x5290a7),null);}else{if(qs[_0xf5f4('0x73')](_0x5290a7)){_0x6265c3['or'](_0xf5f4('0x74'),_0x5290a7+'%');_0x6265c3['or'](_0xf5f4('0x75'),_0x5290a7+'%');_0x6265c3['or'](_0xf5f4('0x76'),_0x5290a7+'%');_0x6265c3['or'](_0xf5f4('0x77'),_0x5290a7+'%');}else if(qs['isEmail'](_0x5290a7)){_0x6265c3['or'](_0xf5f4('0x78'),_0x5290a7+'%');}else{_0x6265c3['or'](_0xf5f4('0x79'),'%'+_0x5290a7+'%');_0x6265c3['or']('c.lastName\x20LIKE\x20?','%'+_0x5290a7+'%');_0x6265c3['or']('c.email\x20LIKE\x20?','%'+_0x5290a7+'%');}}}}_0x3b4068[_0xf5f4('0x55')](_0x6265c3);_0x3b4068[_0xf5f4('0x7a')]('c.id');var _0x37306c={'type':db[_0xf5f4('0x7b')][_0xf5f4('0x7c')][_0xf5f4('0x7d')],'raw':!![]};var _0x1fe248=_0x3b4068['clone']()[_0xf5f4('0x4a')](_0xf5f4('0x7e'));if(_0x136ada['order']){_0x136ada['order'][_0xf5f4('0x5e')](function(_0x301a67){_0x3b4068[_0xf5f4('0x46')]('c.'+_0x301a67[0x0],_0x301a67[0x1]==='DESC'?![]:!![]);});}if(!_[_0xf5f4('0x7f')](_0x4cf117)){_0x3b4068[_0xf5f4('0x80')](_0x5be1ba);_0x1fe248['where'](_0xf5f4('0x81'),_0x4cf117);}BPromise[_0xf5f4('0x82')]()[_0xf5f4('0x2b')](function(){if(!_0xff2350)return;if(_0x55fb24['user'][_0xf5f4('0x83')]!==_0xf5f4('0x84'))return;if(!_[_0xf5f4('0x85')](_0xff2350[_0xf5f4('0x5b')],[_0xf5f4('0x4a'),'User'])){return _0x55fb24[_0xf5f4('0x86')]['getLists']({'attributes':['id'],'raw':!![]})[_0xf5f4('0x2b')](function(_0xe7cac6){if(_[_0xf5f4('0x7f')](_0xe7cac6)){_0x1fe248[_0xf5f4('0x55')]('c.ListId\x20IS\x20NULL');_0x3b4068[_0xf5f4('0x55')]('c.ListId\x20IS\x20NULL');}else{_0x1fe248[_0xf5f4('0x55')](_0xf5f4('0x87'),_['map'](_0xe7cac6,'id'));_0x3b4068['where'](_0xf5f4('0x87'),_[_0xf5f4('0x5d')](_0xe7cac6,'id'));}});}})[_0xf5f4('0x2b')](function(){if(_0x55fb24[_0xf5f4('0x86')][_0xf5f4('0x83')]==='agent'&&!_0xff2350&&!_0x55fb24['query']['ListId'])return[];return db[_0xf5f4('0x88')][_0xf5f4('0x3f')](_0x1fe248[_0xf5f4('0x89')](),_0x37306c);})[_0xf5f4('0x2b')](function(_0x23f2c8){_0x5e2b7c[_0xf5f4('0x24')]=_0x23f2c8[_0xf5f4('0x35')];if(_0x5e2b7c[_0xf5f4('0x24')]===0x0)return[];return db[_0xf5f4('0x88')][_0xf5f4('0x3f')](_0x2d1c66[_0xf5f4('0x89')](),_0x37306c)[_0xf5f4('0x2b')](function(_0x21493f){_0x4c723d=_[_0xf5f4('0x8a')](_0x21493f,'id');_0x37306c=_[_0xf5f4('0x8b')](_0x37306c,{'model':db[_0xf5f4('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x55fb24['query']['fields']){_0x136ada[_0xf5f4('0x43')]['forEach'](function(_0x11d42e){_0x3b4068[_0xf5f4('0x4a')]('c.'+_0x11d42e);});}else{_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x7e'));_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x8c'));_0x3b4068['field'](_0xf5f4('0x8d'));_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x8e'));_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x8f'));_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x90'));_0x3b4068['field'](_0xf5f4('0x91'));_0x3b4068['field']('c.ListId');_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x92'));_0x3b4068[_0xf5f4('0x4a')]('c.deletedAt');_0x3b4068[_0xf5f4('0x4a')]('c.CompanyId');_0x3b4068[_0xf5f4('0x4a')](_0xf5f4('0x93'),_0xf5f4('0x94'));}if(_0x136ada[_0xf5f4('0x23')])_0x3b4068[_0xf5f4('0x23')](_0x136ada[_0xf5f4('0x23')]);if(_0x136ada[_0xf5f4('0x21')])_0x3b4068[_0xf5f4('0x21')](_0x136ada['offset']);return db[_0xf5f4('0x88')][_0xf5f4('0x3f')](_0x3b4068['toString'](),_0x37306c);});})['then'](function(_0x1b71ee){_0x1b71ee[_0xf5f4('0x5e')](function(_0x126e4a){if(_0x126e4a[_0xf5f4('0x94')]){_0x126e4a[_0xf5f4('0x95')]=[];_0x126e4a[_0xf5f4('0x94')]['split'](',')[_0xf5f4('0x5e')](function(_0x3506a8){_0x126e4a[_0xf5f4('0x95')][_0xf5f4('0x38')](_0x4c723d[_0x3506a8]);});}delete _0x126e4a['TagIds'];});_0x5e2b7c[_0xf5f4('0x96')]=_0x1b71ee;return _0x5e2b7c;})[_0xf5f4('0x2b')](respondWithFilteredResult(_0x4cdbcd,_0x136ada));})[_0xf5f4('0x97')](handleError(_0x4cdbcd,null));};exports[_0xf5f4('0x98')]=function(_0x38188b,_0x2acd04){return db[_0xf5f4('0x32')][_0xf5f4('0x99')]({'where':{'id':_0x38188b['params']['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x2acd04,null))[_0xf5f4('0x2b')](removeEntity(_0x2acd04,null))[_0xf5f4('0x97')](handleError(_0x2acd04,null));};exports[_0xf5f4('0x33')]=function(_0x25604f,_0x21f5fd){return db[_0xf5f4('0x32')][_0xf5f4('0x33')]()[_0xf5f4('0x2b')](function(_0x576ec8){delete _0x576ec8['tags'];for(var _0x3be6cb=0x0;_0x3be6cb<Object[_0xf5f4('0x34')](_0x576ec8)[_0xf5f4('0x35')];_0x3be6cb++){var _0x54a3ed=Object[_0xf5f4('0x34')](_0x576ec8)[_0x3be6cb];if(!_[_0xf5f4('0x36')](_0x54a3ed,_0xf5f4('0x37'))){_0x576ec8[_0x54a3ed][_0xf5f4('0x9a')]=_0x54a3ed;_0x576ec8[_0x54a3ed]['displayName']=_0x54a3ed;}}return _0x576ec8;})[_0xf5f4('0x2b')](function(_0x306772){var _0x7077ce={'where':{'$or':[{'ListId':_0x25604f[_0xf5f4('0x3f')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xf5f4('0x39')][_0xf5f4('0x9b')](_0x7077ce)['then'](function(_0xb90218){for(var _0x13719=0x0;_0x13719<_0xb90218[_0xf5f4('0x35')];_0x13719++){var _0x5defb9='cf_'+_0xb90218[_0x13719]['id'];_0x306772[_0x5defb9][_0xf5f4('0x9a')]=_0x5defb9;_0x306772[_0x5defb9][_0xf5f4('0x9c')]=_0xb90218[_0x13719][_0xf5f4('0x9d')];_0x306772[_0x5defb9][_0xf5f4('0x9e')]={'type':_0xb90218[_0x13719]['type'],'values':_0xb90218[_0x13719][_0xf5f4('0x9f')]};}Object[_0xf5f4('0x34')](_0x306772)[_0xf5f4('0x5e')](function(_0x1cc111){if(!_0x306772[_0x1cc111][_0xf5f4('0x44')](_0xf5f4('0x9a'))){delete _0x306772[_0x1cc111];}});return _0x306772;});})[_0xf5f4('0x2b')](respondWithResult(_0x21f5fd,null))['catch'](handleError(_0x21f5fd,null));};exports['merge']=function(_0x59f608,_0x86c199){var _0x251b80;var _0x378da5;var _0x113625;if(_0x59f608[_0xf5f4('0xa0')]['id']){delete _0x59f608['body']['id'];}return db['CmContact'][_0xf5f4('0x9b')]({'where':{'id':[_0x59f608[_0xf5f4('0xa0')]['to'],_0x59f608[_0xf5f4('0xa0')][_0xf5f4('0x4c')]]}})['then'](function(_0x475aa5){if(_0x475aa5){if(_0x475aa5[_0xf5f4('0x35')]!==0x2){return null;}_0x475aa5[0x0]=_0x475aa5[0x0]['get']({'plain':!![]});_0x475aa5[0x1]=_0x475aa5[0x1][_0xf5f4('0xa1')]({'plain':!![]});delete _0x475aa5[0x0]['id'];delete _0x475aa5[0x1]['id'];return _[_0xf5f4('0xa2')](_0x475aa5[0x0],_0x475aa5[0x1],function(_0x334096,_0x415bb7){if(Array[_0xf5f4('0x6f')](_0x415bb7)&&!_0x415bb7[_0xf5f4('0x35')]){return _0x334096;}else if(!_0x415bb7){return _0x334096;}});}})['then'](handleEntityNotFound(_0x86c199,null))[_0xf5f4('0x2b')](function(_0x3ddc6d){if(_0x3ddc6d){if(_0x3ddc6d['tags']&&_['isArray'](_0x3ddc6d['tags'])){_0x3ddc6d[_0xf5f4('0xa3')]=_0x3ddc6d['tags'][_0xf5f4('0xa4')]();}logger['info'](_0xf5f4('0xa5'),_0x59f608['body']['to'],_0x59f608[_0xf5f4('0xa0')]['from']);return db['CmHopper']['destroy']({'where':{'ContactId':[_0x59f608[_0xf5f4('0xa0')]['to'],_0x59f608[_0xf5f4('0xa0')][_0xf5f4('0x4c')]]}})[_0xf5f4('0x2b')](function(_0x44b5bd){logger[_0xf5f4('0xa6')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x44b5bd);return db[_0xf5f4('0xa7')][_0xf5f4('0x98')]({'where':{'ContactId':[_0x59f608[_0xf5f4('0xa0')]['to'],_0x59f608[_0xf5f4('0xa0')][_0xf5f4('0x4c')]]}})[_0xf5f4('0x2b')](function(_0x5c5130){logger[_0xf5f4('0xa6')](_0xf5f4('0xa8'),_0x5c5130);return db[_0xf5f4('0x32')][_0xf5f4('0xa9')](_0x3ddc6d);});});}})[_0xf5f4('0x2b')](function(_0x3023fc){if(_0x3023fc){_0x251b80=_0x3023fc;_0x378da5={'ContactId':_0x251b80['id']};_0x113625={'where':{'ContactId':[_0x59f608[_0xf5f4('0xa0')]['to'],_0x59f608['body'][_0xf5f4('0x4c')]]}};return db['ChatInteraction'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xaa')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xab')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})['then'](function(){if(_0x251b80){return db[_0xf5f4('0xac')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xad')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xac')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})['then'](function(){if(_0x251b80){return db[_0xf5f4('0xad')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xae')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xaf')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})['then'](function(){if(_0x251b80){return db[_0xf5f4('0xb0')]['update'](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db['FaxMessage'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db['OpenchannelInteraction'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb1')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb2')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb3')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb4')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb5')]['update'](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb6')]['update'](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db['FaxQueueReport'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb7')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb8')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db['SmsQueueReport'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db[_0xf5f4('0xb9')][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})['then'](function(){if(_0x251b80){return db['WhatsappInteraction'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db['WhatsappMessage']['update'](_0x378da5,_0x113625);}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return db['WhatsappQueueReport'][_0xf5f4('0x2a')](_0x378da5,_0x113625);}})['then'](function(){if(_0x251b80){return db[_0xf5f4('0x32')][_0xf5f4('0x98')]({'where':{'id':[_0x59f608[_0xf5f4('0xa0')]['to'],_0x59f608[_0xf5f4('0xa0')]['from']]}});}})[_0xf5f4('0x2b')](function(){if(_0x251b80){return _0x251b80;}})[_0xf5f4('0x2b')](respondWithResult(_0x86c199,null))[_0xf5f4('0x97')](handleError(_0x86c199,null));};exports['create']=function(_0x1aba7e,_0x6dcf9d){return db[_0xf5f4('0x32')][_0xf5f4('0x33')]()[_0xf5f4('0x2b')](function(_0x5dd6c0){if(_0x1aba7e[_0xf5f4('0xa0')][_0xf5f4('0xa3')]&&_[_0xf5f4('0x6f')](_0x1aba7e[_0xf5f4('0xa0')][_0xf5f4('0xa3')])){if(_0x1aba7e['body']['tags']['length']){_0x1aba7e[_0xf5f4('0xa0')][_0xf5f4('0xa3')]=_0x1aba7e[_0xf5f4('0xa0')][_0xf5f4('0xa3')]['join'](';')+';';}else{_0x1aba7e[_0xf5f4('0xa0')][_0xf5f4('0xa3')]=null;}}else{_0x1aba7e[_0xf5f4('0xa0')][_0xf5f4('0xa3')]=null;}return db['CmContact'][_0xf5f4('0xa9')](_0x1aba7e[_0xf5f4('0xa0')],{'fields':_[_0xf5f4('0x34')](_0x5dd6c0),'raw':!![]});})[_0xf5f4('0x2b')](respondWithResult(_0x6dcf9d,0xc9))['catch'](handleError(_0x6dcf9d,null));};exports[_0xf5f4('0xba')]=function(_0x46a321,_0x54f778){var _0x20d049=[];var _0x560174=0x0;var _0x19548a=0x0;var _0x3a0d2b=0x0;return db[_0xf5f4('0x32')][_0xf5f4('0x33')]()[_0xf5f4('0x2b')](function(_0x5364ba){return BPromise[_0xf5f4('0xbb')](_0x46a321['body'],function(_0x339bdf){var _0x590603={'where':{'$or':[]},'defaults':_0x339bdf,'fields':_[_0xf5f4('0x34')](_0x5364ba),'raw':!![]};if(_0x339bdf['duplicates']){for(var _0x375b61=0x0;_0x375b61<_0x339bdf[_0xf5f4('0xbc')]['length'];_0x375b61++){var _0xe6d824={};_0xe6d824[_0x339bdf['duplicates'][_0x375b61]]=_0x339bdf[_0x339bdf[_0xf5f4('0xbc')][_0x375b61]];_0x590603[_0xf5f4('0x55')][_0xf5f4('0xbd')][_0xf5f4('0x38')](_0xe6d824);}_0x590603[_0xf5f4('0x55')][_0xf5f4('0x6c')]=_0x339bdf['ListId'];}return db[_0xf5f4('0x32')][_0xf5f4('0xbe')](_0x590603)[_0xf5f4('0xbf')](function(_0x4d002e,_0x537875){if(_0x537875){_0x560174++;}else{_0x3a0d2b++;}})[_0xf5f4('0x97')](function(_0x197e23){console[_0xf5f4('0x2d')](_0x197e23);_0x19548a++;});});})[_0xf5f4('0x2b')](function(_0x44a894){if(_0x44a894){return{'success':_0x560174,'failure':_0x19548a,'duplicates':_0x3a0d2b};}})[_0xf5f4('0x2b')](respondWithResult(_0x54f778,0xc9))[_0xf5f4('0x97')](handleError(_0x54f778,null));};exports['show']=function(_0xb3c6b4,_0x5bc7a1,_0x1b27b1){var _0xda0761;return db[_0xf5f4('0x32')][_0xf5f4('0x33')]()['then'](function(_0x25980f){return db['CmContact'][_0xf5f4('0x99')]({'where':{'id':_0xb3c6b4[_0xf5f4('0xc0')]['id']},'include':[{'model':db[_0xf5f4('0x5c')],'as':'Tags','attributes':['id',_0xf5f4('0x2f'),_0xf5f4('0x4b')],'required':_0xb3c6b4[_0xf5f4('0x3f')][_0xf5f4('0x70')]?!![]:![]}],'attributes':_[_0xf5f4('0x34')](_0x25980f)});})[_0xf5f4('0x2b')](function(_0x1405f1){_0xda0761=_0x1405f1[_0xf5f4('0xa1')]({'plain':!![]});var _0x36b65a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1405f1&&_0x1405f1[_0xf5f4('0x6c')]){if(_0x1405f1[_0xf5f4('0x6c')]){_0x36b65a[_0xf5f4('0x55')]['$and'][_0xf5f4('0x38')]({'ListId':{'$ne':_0x1405f1[_0xf5f4('0x6c')]}});}}return db['CmCustomField']['findAll'](_0x36b65a);})[_0xf5f4('0x2b')](function(_0xe44b0f){return _[_0xf5f4('0xc1')](_0xda0761,_[_0xf5f4('0x5d')](_0xe44b0f,function(_0x1f6972){return util[_0xf5f4('0xc2')](_0xf5f4('0xc3'),_0x1f6972['id']);}));})[_0xf5f4('0x2b')](handleEntityNotFound(_0x5bc7a1,null))[_0xf5f4('0x2b')](respondWithResult(_0x5bc7a1,null))['catch'](handleError(_0x5bc7a1,null));};exports['update']=function(_0x566838,_0x2fa8d6){var _0x28369f;if(_0x566838[_0xf5f4('0xa0')]['id']){delete _0x566838[_0xf5f4('0xa0')]['id'];}return db['CmContact'][_0xf5f4('0x99')]({'where':{'id':_0x566838[_0xf5f4('0xc0')]['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x2fa8d6,null))['then'](saveUpdates(_0x566838['body'],null))[_0xf5f4('0x2b')](function(_0x2624f7){_0x28369f=_0x2624f7;var _0x52a87b={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2624f7&&_0x2624f7[_0xf5f4('0x6c')]){if(_0x2624f7['ListId']){_0x52a87b[_0xf5f4('0x55')][_0xf5f4('0xc4')]['push']({'ListId':{'$ne':_0x2624f7[_0xf5f4('0x6c')]}});}}return db['CmCustomField'][_0xf5f4('0x9b')](_0x52a87b);})[_0xf5f4('0x2b')](function(_0x99782){if(_0x99782){return _[_0xf5f4('0xc1')](_[_0xf5f4('0xc5')](_0x566838[_0xf5f4('0xa0')],function(_0xf73149,_0x25317d){return _[_0xf5f4('0x36')](_0x25317d,_0xf5f4('0x37'));}),_['map'](_0x99782,function(_0xdd7966){return util[_0xf5f4('0xc2')]('cf_%d',_0xdd7966['id']);}));}})[_0xf5f4('0x2b')](function(_0x18bb53){if(_0x18bb53&&!_[_0xf5f4('0x7f')](_0x18bb53)){var _0x2e04f2=squel[_0xf5f4('0x2a')]()[_0xf5f4('0xc6')](_0xf5f4('0x4e'))['setFields'](_0x18bb53)[_0xf5f4('0x55')](_0xf5f4('0xc7'),_0x566838[_0xf5f4('0xc0')]['id'])['toParam']();return db['sequelize']['query'](_0x2e04f2['text'],{'replacements':_0x2e04f2['values']});}})[_0xf5f4('0x2b')](function(){if(_0x566838[_0xf5f4('0xa0')]['phone']&&_0x28369f){return db['CmHopper'][_0xf5f4('0x2a')]({'phone':_0x566838[_0xf5f4('0xa0')][_0xf5f4('0xc8')]},{'where':{'ContactId':_0x28369f['id']}});}})[_0xf5f4('0x2b')](function(){return _0x28369f;})[_0xf5f4('0x2b')](respondWithResult(_0x2fa8d6,null))[_0xf5f4('0x97')](handleError(_0x2fa8d6,null));};exports[_0xf5f4('0xc9')]=function(_0x285a89,_0x323748,_0x2d4739){var _0x538b0d={};var _0xd83d72={};var _0x81bf42;var _0x3527bd;return db[_0xf5f4('0x32')][_0xf5f4('0x3a')]({'where':{'id':_0x285a89[_0xf5f4('0xc0')]['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x323748,null))[_0xf5f4('0x2b')](function(_0x538169){if(_0x538169){_0x81bf42=_0x538169;_0xd83d72[_0xf5f4('0x3e')]=_[_0xf5f4('0x34')](db[_0xf5f4('0x5c')]['rawAttributes']);_0xd83d72[_0xf5f4('0x3f')]=_[_0xf5f4('0x34')](_0x285a89[_0xf5f4('0x3f')]);_0xd83d72[_0xf5f4('0x40')]=_[_0xf5f4('0x41')](_0xd83d72[_0xf5f4('0x3e')],_0xd83d72[_0xf5f4('0x3f')]);_0x538b0d[_0xf5f4('0x43')]=_[_0xf5f4('0x41')](_0xd83d72['model'],qs[_0xf5f4('0x42')](_0x285a89['query'][_0xf5f4('0x42')]));_0x538b0d[_0xf5f4('0x43')]=_0x538b0d[_0xf5f4('0x43')][_0xf5f4('0x35')]?_0x538b0d[_0xf5f4('0x43')]:_0xd83d72[_0xf5f4('0x3e')];_0x538b0d[_0xf5f4('0x46')]=qs['sort'](_0x285a89[_0xf5f4('0x3f')]['sort']);_0x538b0d[_0xf5f4('0x55')]=qs[_0xf5f4('0x40')](_[_0xf5f4('0x48')](_0x285a89[_0xf5f4('0x3f')],_0xd83d72[_0xf5f4('0x40')]));if(_0x285a89['query'][_0xf5f4('0x69')]){_0x538b0d['where']=_[_0xf5f4('0x8b')](_0x538b0d[_0xf5f4('0x55')],{'$or':_['map'](_0x538b0d[_0xf5f4('0x43')],function(_0x428f91){var _0x518e3d={};_0x518e3d[_0x428f91]={'$like':'%'+_0x285a89[_0xf5f4('0x3f')]['filter']+'%'};return _0x518e3d;})});}_0x538b0d=_['merge']({},_0x538b0d,_0x285a89['options']);return _0x81bf42[_0xf5f4('0xc9')](_0x538b0d);}})[_0xf5f4('0x2b')](function(_0x53ef67){if(_0x53ef67){_0x3527bd=_0x53ef67[_0xf5f4('0x35')];if(!_0x285a89[_0xf5f4('0x3f')][_0xf5f4('0x44')](_0xf5f4('0x45'))){_0x538b0d['limit']=qs[_0xf5f4('0x23')](_0x285a89[_0xf5f4('0x3f')]['limit']);_0x538b0d[_0xf5f4('0x21')]=qs['offset'](_0x285a89['query'][_0xf5f4('0x21')]);}return _0x81bf42[_0xf5f4('0xc9')](_0x538b0d);}})['then'](function(_0x1ae7f8){if(_0x1ae7f8){return _0x1ae7f8?{'count':_0x3527bd,'rows':_0x1ae7f8}:null;}})[_0xf5f4('0x2b')](respondWithResult(_0x323748,null))[_0xf5f4('0x97')](handleError(_0x323748,null));};exports['setTags']=function(_0x363d61,_0x20c469,_0x5b1fe5){if(_0x363d61[_0xf5f4('0xa0')]['id']){delete _0x363d61['body']['id'];}return db[_0xf5f4('0x32')][_0xf5f4('0x3a')]({'where':{'id':_0x363d61[_0xf5f4('0xc0')]['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x20c469,null))['then'](function(_0x2ca6e7){if(_0x2ca6e7){return _0x2ca6e7[_0xf5f4('0xca')](_0x363d61[_0xf5f4('0xa0')][_0xf5f4('0xcb')]||[]);}return null;})[_0xf5f4('0x2b')](respondWithResult(_0x20c469,null))['catch'](handleError(_0x20c469,null));};exports[_0xf5f4('0xcc')]=function(_0x5c72fd,_0x4f8f87,_0x3c0e40){var _0x19bc68={'raw':![],'where':{}};var _0x44e956={};var _0x39619a={'count':0x0,'rows':[]};return db[_0xf5f4('0x32')][_0xf5f4('0x3a')]({'where':{'id':_0x5c72fd[_0xf5f4('0xc0')]['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x4f8f87,null))[_0xf5f4('0x2b')](function(_0x53c4bc){if(_0x53c4bc){_0x44e956[_0xf5f4('0x3e')]=_[_0xf5f4('0x34')](db[_0xf5f4('0xcd')][_0xf5f4('0xce')]);_0x44e956['query']=_[_0xf5f4('0x34')](_0x5c72fd['query']);_0x44e956[_0xf5f4('0x40')]=_[_0xf5f4('0x41')](_0x44e956[_0xf5f4('0x3e')],_0x44e956['query']);_0x19bc68['attributes']=_[_0xf5f4('0x41')](_0x44e956['model'],qs[_0xf5f4('0x42')](_0x5c72fd[_0xf5f4('0x3f')][_0xf5f4('0x42')]));_0x19bc68[_0xf5f4('0x43')]=_0x19bc68[_0xf5f4('0x43')]['length']?_0x19bc68[_0xf5f4('0x43')]:_0x44e956['model'];if(!_0x5c72fd['query'][_0xf5f4('0x44')]('nolimit')){_0x19bc68[_0xf5f4('0x23')]=qs[_0xf5f4('0x23')](_0x5c72fd[_0xf5f4('0x3f')][_0xf5f4('0x23')]);_0x19bc68[_0xf5f4('0x21')]=qs[_0xf5f4('0x21')](_0x5c72fd[_0xf5f4('0x3f')][_0xf5f4('0x21')]);}_0x19bc68['order']=qs['sort'](_0x5c72fd[_0xf5f4('0x3f')][_0xf5f4('0x47')]);_0x19bc68[_0xf5f4('0x55')]=qs[_0xf5f4('0x40')](_['pick'](_0x5c72fd[_0xf5f4('0x3f')],_0x44e956['filters']));_0x19bc68[_0xf5f4('0x55')][_0xf5f4('0xcf')]=_0x53c4bc['id'];if(_0x5c72fd[_0xf5f4('0x3f')][_0xf5f4('0x69')]){_0x19bc68[_0xf5f4('0x55')]=_[_0xf5f4('0x8b')](_0x19bc68[_0xf5f4('0x55')],{'$or':_[_0xf5f4('0x5d')](_0x19bc68[_0xf5f4('0x43')],function(_0x10af70){var _0x5480dc={};_0x5480dc[_0x10af70]={'$like':'%'+_0x5c72fd[_0xf5f4('0x3f')][_0xf5f4('0x69')]+'%'};return _0x5480dc;})});}_0x19bc68=_[_0xf5f4('0x8b')]({},_0x19bc68,_0x5c72fd[_0xf5f4('0xd0')]);return db[_0xf5f4('0xcd')][_0xf5f4('0x24')]({'where':_0x19bc68[_0xf5f4('0x55')]})[_0xf5f4('0x2b')](function(_0x5abd58){_0x39619a[_0xf5f4('0x24')]=_0x5abd58;if(_0x5c72fd['query']['includeAll']){_0x19bc68[_0xf5f4('0xd1')]=[{'all':!![]}];}return db[_0xf5f4('0xcd')]['findAll'](_0x19bc68);})[_0xf5f4('0x2b')](function(_0x267002){_0x39619a[_0xf5f4('0x96')]=_0x267002;return _0x39619a;});}})['then'](respondWithFilteredResult(_0x4f8f87,_0x19bc68))[_0xf5f4('0x97')](handleError(_0x4f8f87,null));};exports[_0xf5f4('0xd2')]=function(_0x44b1dc,_0x1d8186,_0x4066b5){var _0x19f467={'raw':!![],'where':{}};var _0x1bc54b={};var _0x115352={'count':0x0,'rows':[]};return db[_0xf5f4('0x32')][_0xf5f4('0x3a')]({'where':{'id':_0x44b1dc[_0xf5f4('0xc0')]['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x1d8186,null))[_0xf5f4('0x2b')](function(_0x314994){if(_0x314994){_0x1bc54b['model']=_['keys'](db[_0xf5f4('0xb3')][_0xf5f4('0xce')]);_0x1bc54b[_0xf5f4('0x3f')]=_['keys'](_0x44b1dc[_0xf5f4('0x3f')]);_0x1bc54b['filters']=_[_0xf5f4('0x41')](_0x1bc54b[_0xf5f4('0x3e')],_0x1bc54b[_0xf5f4('0x3f')]);_0x19f467[_0xf5f4('0x43')]=_[_0xf5f4('0x41')](_0x1bc54b[_0xf5f4('0x3e')],qs[_0xf5f4('0x42')](_0x44b1dc['query'][_0xf5f4('0x42')]));_0x19f467[_0xf5f4('0x43')]=_0x19f467[_0xf5f4('0x43')][_0xf5f4('0x35')]?_0x19f467[_0xf5f4('0x43')]:_0x1bc54b['model'];if(!_0x44b1dc[_0xf5f4('0x3f')]['hasOwnProperty']('nolimit')){_0x19f467['limit']=qs[_0xf5f4('0x23')](_0x44b1dc['query']['limit']);_0x19f467[_0xf5f4('0x21')]=qs[_0xf5f4('0x21')](_0x44b1dc[_0xf5f4('0x3f')][_0xf5f4('0x21')]);}_0x19f467[_0xf5f4('0x46')]=qs['sort'](_0x44b1dc[_0xf5f4('0x3f')]['sort']);_0x19f467[_0xf5f4('0x55')]=qs[_0xf5f4('0x40')](_[_0xf5f4('0x48')](_0x44b1dc[_0xf5f4('0x3f')],_0x1bc54b[_0xf5f4('0x40')]));_0x19f467[_0xf5f4('0x55')]['ContactId']=_0x314994['id'];if(_0x44b1dc[_0xf5f4('0x3f')]['filter']){_0x19f467[_0xf5f4('0x55')]=_[_0xf5f4('0x8b')](_0x19f467[_0xf5f4('0x55')],{'$or':_[_0xf5f4('0x5d')](_0x19f467[_0xf5f4('0x43')],function(_0xc43c14){var _0x474ab0={};_0x474ab0[_0xc43c14]={'$like':'%'+_0x44b1dc[_0xf5f4('0x3f')][_0xf5f4('0x69')]+'%'};return _0x474ab0;})});}_0x19f467=_[_0xf5f4('0x8b')]({},_0x19f467,_0x44b1dc['options']);return db[_0xf5f4('0xb3')][_0xf5f4('0x24')]({'where':_0x19f467[_0xf5f4('0x55')]})[_0xf5f4('0x2b')](function(_0x14ae92){_0x115352[_0xf5f4('0x24')]=_0x14ae92;if(_0x44b1dc[_0xf5f4('0x3f')][_0xf5f4('0xd3')]){_0x19f467[_0xf5f4('0xd1')]=[{'all':!![]}];}return db[_0xf5f4('0xb3')]['findAll'](_0x19f467);})[_0xf5f4('0x2b')](function(_0x1f38f2){_0x115352[_0xf5f4('0x96')]=_0x1f38f2;return _0x115352;});}})[_0xf5f4('0x2b')](respondWithFilteredResult(_0x1d8186,_0x19f467))[_0xf5f4('0x97')](handleError(_0x1d8186,null));};exports[_0xf5f4('0xd4')]=function(_0xdfdbb7,_0x2a9015,_0x484e34){var _0x3d6a81={'raw':!![],'where':{}};var _0x29c33f={};var _0x553993={'count':0x0,'rows':[]};return db[_0xf5f4('0x32')][_0xf5f4('0x3a')]({'where':{'id':_0xdfdbb7['params']['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x2a9015,null))[_0xf5f4('0x2b')](function(_0x2af07b){if(_0x2af07b){_0x29c33f[_0xf5f4('0x3e')]=_[_0xf5f4('0x34')](db[_0xf5f4('0xb2')][_0xf5f4('0xce')]);_0x29c33f['query']=_[_0xf5f4('0x34')](_0xdfdbb7[_0xf5f4('0x3f')]);_0x29c33f[_0xf5f4('0x40')]=_[_0xf5f4('0x41')](_0x29c33f[_0xf5f4('0x3e')],_0x29c33f[_0xf5f4('0x3f')]);_0x3d6a81[_0xf5f4('0x43')]=_[_0xf5f4('0x41')](_0x29c33f[_0xf5f4('0x3e')],qs['fields'](_0xdfdbb7[_0xf5f4('0x3f')][_0xf5f4('0x42')]));_0x3d6a81[_0xf5f4('0x43')]=_0x3d6a81['attributes'][_0xf5f4('0x35')]?_0x3d6a81[_0xf5f4('0x43')]:_0x29c33f[_0xf5f4('0x3e')];if(!_0xdfdbb7[_0xf5f4('0x3f')][_0xf5f4('0x44')]('nolimit')){_0x3d6a81['limit']=qs['limit'](_0xdfdbb7['query']['limit']);_0x3d6a81[_0xf5f4('0x21')]=qs[_0xf5f4('0x21')](_0xdfdbb7[_0xf5f4('0x3f')][_0xf5f4('0x21')]);}_0x3d6a81['order']=qs[_0xf5f4('0x47')](_0xdfdbb7[_0xf5f4('0x3f')][_0xf5f4('0x47')]);_0x3d6a81[_0xf5f4('0x55')]=qs[_0xf5f4('0x40')](_[_0xf5f4('0x48')](_0xdfdbb7[_0xf5f4('0x3f')],_0x29c33f[_0xf5f4('0x40')]));_0x3d6a81[_0xf5f4('0x55')][_0xf5f4('0xcf')]=_0x2af07b['id'];if(_0xdfdbb7[_0xf5f4('0x3f')]['filter']){_0x3d6a81[_0xf5f4('0x55')]=_[_0xf5f4('0x8b')](_0x3d6a81[_0xf5f4('0x55')],{'$or':_[_0xf5f4('0x5d')](_0x3d6a81[_0xf5f4('0x43')],function(_0x188dcc){var _0x865ba8={};_0x865ba8[_0x188dcc]={'$like':'%'+_0xdfdbb7[_0xf5f4('0x3f')][_0xf5f4('0x69')]+'%'};return _0x865ba8;})});}_0x3d6a81=_['merge']({},_0x3d6a81,_0xdfdbb7[_0xf5f4('0xd0')]);return db[_0xf5f4('0xb2')]['count']({'where':_0x3d6a81[_0xf5f4('0x55')]})[_0xf5f4('0x2b')](function(_0x50bc3b){_0x553993[_0xf5f4('0x24')]=_0x50bc3b;if(_0xdfdbb7[_0xf5f4('0x3f')][_0xf5f4('0xd3')]){_0x3d6a81[_0xf5f4('0xd1')]=[{'all':!![]}];}return db[_0xf5f4('0xb2')]['findAll'](_0x3d6a81);})[_0xf5f4('0x2b')](function(_0x4753c4){_0x553993[_0xf5f4('0x96')]=_0x4753c4;return _0x553993;});}})['then'](respondWithFilteredResult(_0x2a9015,_0x3d6a81))[_0xf5f4('0x97')](handleError(_0x2a9015,null));};exports['getJscriptySessions']=function(_0xba2247,_0x3a53d4,_0xfccd09){var _0x6c3bd2={'raw':!![],'where':{}};var _0x2fd992={};var _0x36664a={'count':0x0,'rows':[]};return db[_0xf5f4('0x32')][_0xf5f4('0x3a')]({'where':{'id':_0xba2247['params']['id']}})[_0xf5f4('0x2b')](handleEntityNotFound(_0x3a53d4,null))[_0xf5f4('0x2b')](function(_0x2673cc){if(_0x2673cc){_0x2fd992[_0xf5f4('0x3e')]=_[_0xf5f4('0x34')](db['JscriptySessionReport'][_0xf5f4('0xce')]);_0x2fd992[_0xf5f4('0x3f')]=_[_0xf5f4('0x34')](_0xba2247['query']);_0x2fd992[_0xf5f4('0x40')]=_[_0xf5f4('0x41')](_0x2fd992[_0xf5f4('0x3e')],_0x2fd992[_0xf5f4('0x3f')]);_0x6c3bd2[_0xf5f4('0x43')]=_['intersection'](_0x2fd992[_0xf5f4('0x3e')],qs['fields'](_0xba2247[_0xf5f4('0x3f')][_0xf5f4('0x42')]));_0x6c3bd2[_0xf5f4('0x43')]=_0x6c3bd2[_0xf5f4('0x43')]['length']?_0x6c3bd2[_0xf5f4('0x43')]:_0x2fd992['model'];if(!_0xba2247['query'][_0xf5f4('0x44')]('nolimit')){_0x6c3bd2[_0xf5f4('0x23')]=qs['limit'](_0xba2247[_0xf5f4('0x3f')][_0xf5f4('0x23')]);_0x6c3bd2[_0xf5f4('0x21')]=qs[_0xf5f4('0x21')](_0xba2247[_0xf5f4('0x3f')][_0xf5f4('0x21')]);}_0x6c3bd2[_0xf5f4('0x46')]=qs[_0xf5f4('0x47')](_0xba2247[_0xf5f4('0x3f')]['sort']);_0x6c3bd2[_0xf5f4('0x55')]=qs[_0xf5f4('0x40')](_[_0xf5f4('0x48')](_0xba2247[_0xf5f4('0x3f')],_0x2fd992['filters']));_0x6c3bd2[_0xf5f4('0x55')][_0xf5f4('0xcf')]=_0x2673cc['id'];if(_0xba2247[_0xf5f4('0x3f')][_0xf5f4('0x69')]){_0x6c3bd2[_0xf5f4('0x55')]=_['merge'](_0x6c3bd2[_0xf5f4('0x55')],{'$or':_['map'](_0x6c3bd2[_0xf5f4('0x43')],function(_0x2a43c4){var _0x312f25={};_0x312f25[_0x2a43c4]={'$like':'%'+_0xba2247['query'][_0xf5f4('0x69')]+'%'};return _0x312f25;})});}_0x6c3bd2=_[_0xf5f4('0x8b')]({},_0x6c3bd2,_0xba2247[_0xf5f4('0xd0')]);return db[_0xf5f4('0xb9')][_0xf5f4('0x24')]({'where':_0x6c3bd2[_0xf5f4('0x55')]})[_0xf5f4('0x2b')](function(_0x6bdab9){_0x36664a['count']=_0x6bdab9;if(_0xba2247[_0xf5f4('0x3f')][_0xf5f4('0xd3')]){_0x6c3bd2['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0xf5f4('0x9b')](_0x6c3bd2);})['then'](function(_0x19ebd0){_0x36664a['rows']=_0x19ebd0;return _0x36664a;});}})[_0xf5f4('0x2b')](respondWithFilteredResult(_0x3a53d4,_0x6c3bd2))[_0xf5f4('0x97')](handleError(_0x3a53d4,null));};exports[_0xf5f4('0xd5')]=function(_0x5f3312,_0x541c7d,_0x28b27d){try{if(!_0x5f3312['body'][_0xf5f4('0x6c')]){throw new Error(_0xf5f4('0xd6'));}if(!_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0xd7')]){throw new Error(_0xf5f4('0xd8'));}if(!_0x5f3312['body'][_0xf5f4('0xd9')]){throw new Error(_0xf5f4('0xda'));}if(!_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0xdb')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x35baef=_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0xd7')]['split'](',');var _0x4b1de3=_0x5f3312['body'][_0xf5f4('0xd9')][_0xf5f4('0xdc')](',');if(!_0x35baef[_0xf5f4('0x35')]||!_0x4b1de3[_0xf5f4('0x35')]||_0x35baef[_0xf5f4('0x35')]!==_0x4b1de3[_0xf5f4('0x35')]){throw new Error(_0xf5f4('0xdd'));}_0x5f3312['body'][_0xf5f4('0x42')]=_[_0xf5f4('0xde')](_0x35baef,_0x4b1de3);if(!_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0x42')][_0xf5f4('0xc8')]){throw new Error(_0xf5f4('0xdf'));}if(!_0x5f3312['body'][_0xf5f4('0x42')][_0xf5f4('0xe0')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x94ac44=path[_0xf5f4('0xa4')](config['root'],_0xf5f4('0xe1'),_0x5f3312[_0xf5f4('0xe2')][_0xf5f4('0xe3')]);fs[_0xf5f4('0xe4')](_0x94ac44,parseInt('0777',0x8));var _0x127bd8=require(_0xf5f4('0xe5'))['fork'](path[_0xf5f4('0xa4')](__dirname,_0xf5f4('0xe6')),[_0x94ac44,_0x5f3312['body'][_0xf5f4('0xd7')],_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0xd9')],_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0x6c')],_0x5f3312[_0xf5f4('0xa0')]['CompanyId'],_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0xbc')],_0x5f3312[_0xf5f4('0xa0')][_0xf5f4('0xdb')]]);return _0x541c7d[_0xf5f4('0x20')](0xc8)[_0xf5f4('0x27')]({'message':'File\x20uploaded\x20correctly!','pid':_0x127bd8['pid']});}catch(_0x5b7df6){return _0x541c7d[_0xf5f4('0x20')](0x1f4)['send'](_0x5b7df6);}};exports[_0xf5f4('0xe7')]=function(_0x3b455f,_0x45b7d6,_0x474db8){var _0x502dc1=fs['createReadStream'](_0x3b455f[_0xf5f4('0xe2')][_0xf5f4('0x7')]);Papa[_0xf5f4('0xe8')](_0x502dc1,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x20cb55){return _0x45b7d6[_0xf5f4('0x20')](0xc8)[_0xf5f4('0x27')]({'file':_0x3b455f['file'],'fields':_0x20cb55[_0xf5f4('0xe9')]['fields']});}});};exports[_0xf5f4('0xea')]=function(_0x2f1c5a,_0x53d5e7,_0x5adf43){return db['User'][_0xf5f4('0x9b')]({'raw':!![],'attributes':['id'],'where':{'role':_0xf5f4('0x84')}})[_0xf5f4('0x2b')](function(_0x29836c){var _0x2361f7=![];if(!_0x2f1c5a[_0xf5f4('0xa0')][_0xf5f4('0x6c')]){throw new Error(_0xf5f4('0xd6'));}if(!_0x2f1c5a[_0xf5f4('0xa0')][_0xf5f4('0xeb')][_0xf5f4('0xc8')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x2f1c5a[_0xf5f4('0xa0')][_0xf5f4('0xeb')][_0xf5f4('0xe0')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x2f1c5a[_0xf5f4('0xa0')][_0xf5f4('0xdb')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x479bfb=require('child_process')[_0xf5f4('0xec')](path[_0xf5f4('0xa4')](__dirname,_0xf5f4('0xed')),[_0x2f1c5a[_0xf5f4('0xc0')]['id'],JSON[_0xf5f4('0xee')](_0x2f1c5a[_0xf5f4('0xa0')]),JSON[_0xf5f4('0xee')](_0x29836c)]);_0x479bfb['on'](_0xf5f4('0xef'),function(_0x103c67){_0x2361f7=!![];return _0x53d5e7['status'](0xc8)[_0xf5f4('0x27')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x479bfb['pid']});});_0x479bfb['on'](_0xf5f4('0xf0'),function(_0x660526){if(_0x660526&&!_0x2361f7){return _0x53d5e7[_0xf5f4('0x20')](0x1f4)['json']({'message':_0xf5f4('0xf1'),'pid':_0x479bfb['pid']});}});})[_0xf5f4('0x97')](handleError(_0x53d5e7,null));};exports[_0xf5f4('0xf2')]=function(_0x265576,_0x1a2ec5){var _0x32ee36=[_0xf5f4('0xf3'),_0xf5f4('0xf4'),_0xf5f4('0xf5'),_0xf5f4('0xf6'),'fax','whatsapp',_0xf5f4('0xf7')];var _0x4ecf3b={'offset':0x0,'order':qs[_0xf5f4('0x47')]('-createdAt')},_0x45673a={'count':0x0,'rows':[]};Promise[_0xf5f4('0x82')]()[_0xf5f4('0x2b')](function(){if(_0x265576[_0xf5f4('0x3f')][_0xf5f4('0xf8')]){if(!_[_0xf5f4('0xf9')](_0x32ee36,_0x265576[_0xf5f4('0x3f')][_0xf5f4('0xf8')][_0xf5f4('0xfa')]())){throw new Error(_0xf5f4('0xfb'));}_0x32ee36=[_0x265576[_0xf5f4('0x3f')]['channel']['toLowerCase']()];}if(_0x265576[_0xf5f4('0x3f')]['range']){try{var _0x286dbd=JSON[_0xf5f4('0xe8')](_0x265576['query'][_0xf5f4('0xfc')]);if(!moment(_0x286dbd['from'])[_0xf5f4('0xfd')]()){throw new Error(_0xf5f4('0xfe'));}if(!moment(_0x286dbd['to'])['isValid']()){throw new Error(_0xf5f4('0xff'));}}catch(_0x346c2c){throw new Error(_0xf5f4('0x100'));}}if(!_0x265576[_0xf5f4('0x3f')]['hasOwnProperty']('nolimit')){_0x4ecf3b['limit']=qs[_0xf5f4('0x23')](_0x265576[_0xf5f4('0x3f')][_0xf5f4('0x23')]||0xa);_0x4ecf3b['offset']=qs['offset'](_0x265576[_0xf5f4('0x3f')][_0xf5f4('0x21')]);}var _0xe6250c=_0x32ee36[_0xf5f4('0x5d')](function(_0x48bebe){if(_0x48bebe===_0xf5f4('0xf7')){var _0x1a5a2e={'attributes':['id',_0xf5f4('0x101'),_0xf5f4('0x3d'),_0xf5f4('0x102'),_0xf5f4('0x103'),'callerid',_0xf5f4('0x104'),_0xf5f4('0x105'),_0xf5f4('0x106'),_0xf5f4('0x107'),_0xf5f4('0x108'),'userDisposition',_0xf5f4('0x109'),_0xf5f4('0x10a'),_0xf5f4('0x10b')],'where':{'ContactId':_0x265576[_0xf5f4('0xc0')]['id']},'include':[{'model':db[_0xf5f4('0x61')],'as':_0xf5f4('0x61'),'attributes':['id',_0xf5f4('0x2f'),_0xf5f4('0x10c'),_0xf5f4('0x9d')]}],'order':[[_0xf5f4('0x108'),_0xf5f4('0x10d')]]};if(_0x265576[_0xf5f4('0x3f')][_0xf5f4('0xfc')]){_0x1a5a2e[_0xf5f4('0x55')][_0xf5f4('0x108')]={'$gte':_0x286dbd['from'],'$lte':_0x286dbd['to']};}return db[_0xf5f4('0xb5')][_0xf5f4('0x10e')](_0x1a5a2e)['then'](function(_0x32576d){_0x45673a[_0xf5f4('0x24')]+=_0x32576d[_0xf5f4('0x24')];return _['map'](_0x32576d[_0xf5f4('0x96')],function(_0x3899da){var _0x2b8421=_0x3899da[_0xf5f4('0xa1')]({'plain':!![]});_0x2b8421[_0xf5f4('0xf8')]=_0x48bebe;if(_0x2b8421[_0xf5f4('0x61')]){_0x2b8421[_0xf5f4('0x61')]={'id':_0x2b8421['User']['id'],'name':_0x2b8421[_0xf5f4('0x61')][_0xf5f4('0x2f')],'fullname':_0x2b8421[_0xf5f4('0x61')][_0xf5f4('0x10c')],'alias':_0x2b8421['User']['alias']};}return _0x2b8421;});});}else{var _0x452e38=_[_0xf5f4('0x10f')](_0x48bebe)+(_0x48bebe===_0xf5f4('0xf4')?_0xf5f4('0x110'):_0xf5f4('0x111'));var _0x96572a={'attributes':['id','closed',_0xf5f4('0x112'),_0xf5f4('0x108'),_0xf5f4('0x107'),'disposition',_0xf5f4('0x113'),'thirdDisposition','UserId',_0x452e38+'Id'],'where':{'ContactId':_0x265576['params']['id']},'include':[{'model':db[_0x452e38],'as':_0xf5f4('0x111'),'attributes':['id',_0xf5f4('0x2f'),_0xf5f4('0x114')]},{'model':db['User'],'as':_0xf5f4('0x115'),'attributes':['id',_0xf5f4('0x2f'),_0xf5f4('0x10c')]},{'model':db[_0xf5f4('0x5c')],'as':_0xf5f4('0x95'),'attributes':['id',_0xf5f4('0x2f'),_0xf5f4('0x4b')],'through':{'attributes':[]}}],'order':[[_0xf5f4('0x108'),_0xf5f4('0x10d')]]};if(_0x265576[_0xf5f4('0x3f')]['range']){_0x96572a[_0xf5f4('0x55')][_0xf5f4('0x108')]={'$gte':_0x286dbd[_0xf5f4('0x4c')],'$lte':_0x286dbd['to']};}switch(_0x48bebe){case'chat':_0x96572a[_0xf5f4('0x43')][_0xf5f4('0x38')](_0xf5f4('0x116'),'customerIp',_0xf5f4('0x117'),_0xf5f4('0x118'),_0xf5f4('0x119'),_0xf5f4('0x11a'),_0xf5f4('0x11b'),_0xf5f4('0x11c'),'referer');break;case _0xf5f4('0xf3'):_0x96572a[_0xf5f4('0x43')][_0xf5f4('0x38')](_0xf5f4('0x11d'),_0xf5f4('0x11e'));break;case _0xf5f4('0xf6'):_0x96572a[_0xf5f4('0x43')]['push'](_0xf5f4('0x11f'),'threadId');break;}return db[_[_0xf5f4('0x10f')](_0x48bebe)+_0xf5f4('0x120')][_0xf5f4('0x10e')](_0x96572a)['then'](function(_0x1e0ca2){_0x45673a['count']+=_0x1e0ca2['count'];return _[_0xf5f4('0x5d')](_0x1e0ca2[_0xf5f4('0x96')],function(_0x464933){var _0x1e460b=_0x464933[_0xf5f4('0xa1')]({'plain':!![]});_0x1e460b[_0xf5f4('0xf8')]=_0x48bebe;if(_0x1e460b[_0xf5f4('0x115')]){_0x1e460b['Owner']={'id':_0x1e460b[_0xf5f4('0x115')]['id'],'name':_0x1e460b['Owner'][_0xf5f4('0x2f')],'fullname':_0x1e460b[_0xf5f4('0x115')][_0xf5f4('0x10c')]};}return _0x1e460b;});});}});return Promise[_0xf5f4('0x3b')](_0xe6250c);})[_0xf5f4('0x2b')](function(_0x38006f){return _(_0x38006f)[_0xf5f4('0x121')]()['sortBy'](_0xf5f4('0x108'))[_0xf5f4('0x122')]()['value']();})[_0xf5f4('0x2b')](function(_0xf59996){_0x45673a[_0xf5f4('0x96')]=_0x4ecf3b['limit']?_0xf59996[_0xf5f4('0x123')](_0x4ecf3b[_0xf5f4('0x21')],_0x4ecf3b[_0xf5f4('0x21')]+_0x4ecf3b['limit']):_0xf59996;return _0x45673a;})[_0xf5f4('0x2b')](respondWithFilteredResult(_0x1a2ec5,_0x4ecf3b))[_0xf5f4('0x97')](handleError(_0x1a2ec5,null));};
\ No newline at end of file
index f928dee..d671284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28d=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xe28d,0x192));var _0xde28=function(_0x323591,_0x518650){_0x323591=_0x323591-0x0;var _0x423982=_0xe28d[_0x323591];return _0x423982;};'use strict';var EventEmitter=require(_0xde28('0x0'));var CmContact=require(_0xde28('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xde28('0x2')](0x0);var events={'afterCreate':_0xde28('0x3'),'afterUpdate':'update','afterDestroy':_0xde28('0x4')};function emitEvent(_0xede93a){return function(_0x580c0f,_0x562ff5,_0x178257){CmContactEvents[_0xde28('0x5')](_0xede93a+':'+_0x580c0f['id'],_0x580c0f);CmContactEvents[_0xde28('0x5')](_0xede93a,_0x580c0f);_0x178257(null);};}for(var e in events){if(events[_0xde28('0x6')](e)){var event=events[e];CmContact[_0xde28('0x7')](e,emitEvent(event));}}module[_0xde28('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x4363=['emit','hasOwnProperty','events','../../mysqldb','CmContact','setMaxListeners','save','update','remove'];(function(_0x4c4a8b,_0x402020){var _0x20fa14=function(_0xbe8c84){while(--_0xbe8c84){_0x4c4a8b['push'](_0x4c4a8b['shift']());}};_0x20fa14(++_0x402020);}(_0x4363,0x89));var _0x3436=function(_0x96c15f,_0x538403){_0x96c15f=_0x96c15f-0x0;var _0x202a78=_0x4363[_0x96c15f];return _0x202a78;};'use strict';var EventEmitter=require(_0x3436('0x0'));var CmContact=require(_0x3436('0x1'))['db'][_0x3436('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x3436('0x3')](0x0);var events={'afterCreate':_0x3436('0x4'),'afterUpdate':_0x3436('0x5'),'afterDestroy':_0x3436('0x6')};function emitEvent(_0x1bc58e){return function(_0x14a34a,_0x2642e7,_0x3e81be){CmContactEvents[_0x3436('0x7')](_0x1bc58e+':'+_0x14a34a['id'],_0x14a34a);CmContactEvents['emit'](_0x1bc58e,_0x14a34a);_0x3e81be(null);};}for(var e in events){if(events[_0x3436('0x8')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
index 90d1bfc..8efe453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81b8=['create','ListId','priority','scheduledat','format','callbackUniqueid','YYYY-MM-DD\x20HH:mm:ss','catch','findOne','isNil','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','CmList','Lists','length','dialCheckDuplicateType','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','always','Campaign','models','destroy','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment','exports','define','CmContact','phone','firstName','lastName','fax','email','FULLTEXT','utf8mb4','get','error','cmContact','afterCreate','inspect','CmHopper','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'];(function(_0x121795,_0x428d9c){var _0x3b888d=function(_0xb57e8f){while(--_0xb57e8f){_0x121795['push'](_0x121795['shift']());}};_0x3b888d(++_0x428d9c);}(_0x81b8,0x1ce));var _0x881b=function(_0x44ac7a,_0x2e1807){_0x44ac7a=_0x44ac7a-0x0;var _0x240426=_0x81b8[_0x44ac7a];return _0x240426;};'use strict';var _=require(_0x881b('0x0'));var util=require(_0x881b('0x1'));var logger=require(_0x881b('0x2'))(_0x881b('0x3'));var moment=require(_0x881b('0x4'));var BPromise=require(_0x881b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x881b('0x6'));var attributes=require('./cmContact.attributes');module[_0x881b('0x7')]=function(_0x203c33,_0xfc215d){return _0x203c33[_0x881b('0x8')](_0x881b('0x9'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x881b('0xa'),'fields':[_0x881b('0xa')]},{'name':'fti_cm_contacts','fields':[_0x881b('0xb'),_0x881b('0xc'),_0x881b('0xa'),'mobile',_0x881b('0xd'),_0x881b('0xe')],'type':_0x881b('0xf')}],'timestamps':!![],'charset':_0x881b('0x10'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x234aa4,_0xf8220a,_0x597174){var _0x30d79d=_0x203c33['models'];var _0x2fab7b=_0x234aa4[_0x881b('0x11')]({'plain':!![]});function _0x747e1(){return function(_0x3081af){logger[_0x881b('0x12')](_0x881b('0x13'),_0x881b('0x14'),util[_0x881b('0x15')](_0x3081af,{'showHidden':![],'depth':null}));};}var _0x16c222=function(_0xe88894){return new BPromise(function(_0x2c9e62,_0x284e66){_0x30d79d[_0x881b('0x16')]['findOne']({'where':{'phone':_0x2fab7b['phone'],'VoiceQueueId':_0xe88894['id']}})[_0x881b('0x17')](function(_0x4c45f4){if(!_['isNil'](_0x4c45f4)){throw new Error(_0x881b('0x18')+_0x2fab7b[_0x881b('0xa')]+_0x881b('0x19')+_0xe88894['id']);}return _0x30d79d[_0x881b('0x16')][_0x881b('0x1a')]({'phone':_0x2fab7b[_0x881b('0xa')],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'priority':_0x2fab7b['priority']?_0x2fab7b[_0x881b('0x1c')]:0x2,'scheduledat':_0x2fab7b['scheduledat']?_0x2fab7b[_0x881b('0x1d')]:moment()[_0x881b('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2fab7b[_0x881b('0x1f')]?!![]:![],'callbackuniqueid':_0x2fab7b[_0x881b('0x1f')]?_0x2fab7b[_0x881b('0x1f')]:undefined,'callbackat':_0x2fab7b[_0x881b('0x1f')]?moment()['format'](_0x881b('0x20')):undefined,'VoiceQueueId':_0xe88894['id']});})[_0x881b('0x21')](function(_0x4e2e5c){_0x284e66(_0x4e2e5c);});});};var _0x57ce47=function(_0x563d2b){return new BPromise(function(_0x1a2e4c,_0x279838){_0x30d79d[_0x881b('0x16')][_0x881b('0x22')]({'where':{'phone':_0x2fab7b[_0x881b('0xa')],'VoiceQueueId':_0x563d2b['id']}})['then'](function(_0x365dae){if(!_[_0x881b('0x23')](_0x365dae)){throw new Error(_0x881b('0x18')+_0x2fab7b[_0x881b('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x563d2b['id']);}return _0x30d79d[_0x881b('0x24')][_0x881b('0x22')]({'where':{'calleridnum':_0x2fab7b[_0x881b('0xa')],'VoiceQueueId':_0x563d2b['id']}});})['then'](function(_0x53dc6c){if(!_[_0x881b('0x23')](_0x53dc6c)){throw new Error(_0x881b('0x25')+_0x2fab7b['phone']+_0x881b('0x26')+_0x563d2b['id']);}return _0x30d79d[_0x881b('0x16')][_0x881b('0x1a')]({'phone':_0x2fab7b['phone'],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'priority':_0x2fab7b[_0x881b('0x1c')]?_0x2fab7b[_0x881b('0x1c')]:0x2,'scheduledat':_0x2fab7b[_0x881b('0x1d')]?_0x2fab7b[_0x881b('0x1d')]:moment()[_0x881b('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2fab7b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2fab7b[_0x881b('0x1f')]?_0x2fab7b['callbackUniqueid']:undefined,'callbackat':_0x2fab7b[_0x881b('0x1f')]?moment()[_0x881b('0x1e')](_0x881b('0x20')):undefined,'VoiceQueueId':_0x563d2b['id']});})[_0x881b('0x21')](function(_0x4dc842){_0x279838(_0x4dc842);});});};function _0x1ad174(){return function(_0x5cfe53){logger[_0x881b('0x12')](_0x881b('0x13'),'afterCreate',util[_0x881b('0x15')](_0x5cfe53,{'showHidden':![],'depth':null}));};}var _0x263484=function(_0x3bbf6e){return new BPromise(function(_0x4b046c,_0x4a65c9){_0x30d79d[_0x881b('0x16')][_0x881b('0x22')]({'where':{'phone':_0x2fab7b['phone'],'CampaignId':_0x3bbf6e['id']}})['then'](function(_0x1faace){if(!_[_0x881b('0x23')](_0x1faace)){throw new Error(_0x881b('0x18')+_0x2fab7b[_0x881b('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x3bbf6e['id']);}return _0x30d79d['CmHopper']['create']({'phone':_0x2fab7b[_0x881b('0xa')],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'priority':_0x2fab7b['priority']?_0x2fab7b[_0x881b('0x1c')]:0x2,'scheduledat':_0x2fab7b['scheduledat']?_0x2fab7b[_0x881b('0x1d')]:moment()[_0x881b('0x1e')](_0x881b('0x20')),'callback':_0x2fab7b[_0x881b('0x1f')]?!![]:![],'callbackuniqueid':_0x2fab7b['callbackUniqueid']?_0x2fab7b['callbackUniqueid']:undefined,'callbackat':_0x2fab7b[_0x881b('0x1f')]?moment()[_0x881b('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x3bbf6e['id']});})[_0x881b('0x21')](function(_0x368748){_0x4a65c9(_0x368748);});});};var _0x42c097=function(_0xdb6be2){return new BPromise(function(_0x2554ea,_0x1e6c2d){_0x30d79d['CmHopper'][_0x881b('0x22')]({'where':{'phone':_0x2fab7b[_0x881b('0xa')],'CampaignId':_0xdb6be2['id']}})[_0x881b('0x17')](function(_0x48ca78){if(!_[_0x881b('0x23')](_0x48ca78)){throw new Error(_0x881b('0x18')+_0x2fab7b['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0xdb6be2['id']);}return _0x30d79d[_0x881b('0x24')][_0x881b('0x22')]({'where':{'calleridnum':_0x2fab7b['phone'],'CampaignId':_0xdb6be2['id']}});})['then'](function(_0x2fbefd){if(!_['isNil'](_0x2fbefd)){throw new Error(_0x881b('0x25')+_0x2fab7b[_0x881b('0xa')]+_0x881b('0x27')+_0xdb6be2['id']);}return _0x30d79d[_0x881b('0x16')][_0x881b('0x1a')]({'phone':_0x2fab7b[_0x881b('0xa')],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'priority':_0x2fab7b[_0x881b('0x1c')]?_0x2fab7b[_0x881b('0x1c')]:0x2,'scheduledat':_0x2fab7b[_0x881b('0x1d')]?_0x2fab7b[_0x881b('0x1d')]:moment()['format'](_0x881b('0x20')),'callback':_0x2fab7b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2fab7b[_0x881b('0x1f')]?_0x2fab7b[_0x881b('0x1f')]:undefined,'callbackat':_0x2fab7b[_0x881b('0x1f')]?moment()[_0x881b('0x1e')](_0x881b('0x20')):undefined,'CampaignId':_0xdb6be2['id']});})['catch'](function(_0x22112a){_0x1e6c2d(_0x22112a);});});};if(_0x2fab7b[_0x881b('0x1b')]){_0x30d79d[_0x881b('0x28')][_0x881b('0x29')]({'where':{'type':_0x881b('0x2a')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x30d79d[_0x881b('0x2b')],'as':_0x881b('0x2c'),'where':{'id':_0x2fab7b[_0x881b('0x1b')]}}]})[_0x881b('0x17')](function(_0x398ac1){if(_0x398ac1){var _0x545619=[];for(var _0x328844=0x0,_0x329186;_0x328844<_0x398ac1[_0x881b('0x2d')];_0x328844+=0x1){_0x329186=_0x398ac1[_0x328844]['get']({'plain':!![]});switch(_0x329186[_0x881b('0x2e')]){case'always':_0x57ce47(_0x329186)['catch'](_0x747e1());break;case'onlyIfOpen':_0x16c222(_0x329186)['catch'](_0x747e1());break;default:_0x30d79d[_0x881b('0x16')][_0x881b('0x1a')]({'phone':_0x2fab7b[_0x881b('0xa')],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'scheduledat':_0x2fab7b[_0x881b('0x1d')]?_0x2fab7b[_0x881b('0x1d')]:moment()[_0x881b('0x1e')](_0x881b('0x20')),'priority':_0x2fab7b['priority']?_0x2fab7b[_0x881b('0x1c')]:0x2,'callback':_0x2fab7b[_0x881b('0x1f')]?!![]:![],'callbackuniqueid':_0x2fab7b[_0x881b('0x1f')]?_0x2fab7b['callbackUniqueid']:undefined,'callbackat':_0x2fab7b['callbackUniqueid']?moment()[_0x881b('0x1e')](_0x881b('0x20')):undefined,'VoiceQueueId':_0x329186['id']})[_0x881b('0x21')](_0x747e1());}}}})[_0x881b('0x17')](function(){return _0x30d79d['VoiceQueue'][_0x881b('0x29')]({'where':{'type':_0x881b('0x2a')},'attributes':['id'],'include':[{'model':_0x30d79d[_0x881b('0x2b')],'as':_0x881b('0x2f'),'where':{'id':_0x2fab7b[_0x881b('0x1b')]}}]})[_0x881b('0x17')](function(_0x4d62ce){if(_0x4d62ce){var _0x44d683=[];for(var _0x358d6e=0x0,_0x1c8a55;_0x358d6e<_0x4d62ce['length'];_0x358d6e+=0x1){_0x1c8a55=_0x4d62ce[_0x358d6e]['get']({'plain':!![]});_0x30d79d[_0x881b('0x30')][_0x881b('0x1a')]({'phone':_0x2fab7b[_0x881b('0xa')],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'VoiceQueueId':_0x1c8a55['id']})[_0x881b('0x21')](function(_0x50355a){logger[_0x881b('0x12')](_0x881b('0x31'),'afterCreate',_0x50355a[_0x881b('0x32')]);});}}});})[_0x881b('0x17')](function(){return _0x30d79d['Campaign'][_0x881b('0x29')]({'attributes':['id',_0x881b('0x2e')],'include':[{'model':_0x30d79d[_0x881b('0x2b')],'as':_0x881b('0x2c'),'where':{'id':_0x2fab7b[_0x881b('0x1b')]}}]})['then'](function(_0x2dc4a0){if(_0x2dc4a0){var _0x168010=[];for(var _0x22dc07=0x0,_0x5be4ab;_0x22dc07<_0x2dc4a0[_0x881b('0x2d')];_0x22dc07+=0x1){_0x5be4ab=_0x2dc4a0[_0x22dc07][_0x881b('0x11')]({'plain':!![]});switch(_0x5be4ab[_0x881b('0x2e')]){case _0x881b('0x33'):_0x42c097(_0x5be4ab)[_0x881b('0x21')](_0x1ad174());break;case'onlyIfOpen':_0x263484(_0x5be4ab)[_0x881b('0x21')](_0x1ad174());break;default:_0x30d79d[_0x881b('0x16')][_0x881b('0x1a')]({'phone':_0x2fab7b['phone'],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b['ListId'],'scheduledat':_0x2fab7b[_0x881b('0x1d')]?_0x2fab7b[_0x881b('0x1d')]:moment()[_0x881b('0x1e')](_0x881b('0x20')),'priority':_0x2fab7b[_0x881b('0x1c')]?_0x2fab7b[_0x881b('0x1c')]:0x2,'callback':_0x2fab7b[_0x881b('0x1f')]?!![]:![],'callbackuniqueid':_0x2fab7b[_0x881b('0x1f')]?_0x2fab7b['callbackUniqueid']:undefined,'callbackat':_0x2fab7b[_0x881b('0x1f')]?moment()[_0x881b('0x1e')](_0x881b('0x20')):undefined,'CampaignId':_0x5be4ab['id']})[_0x881b('0x21')](_0x1ad174());}}}});})['then'](function(){return _0x30d79d[_0x881b('0x34')][_0x881b('0x29')]({'attributes':['id'],'include':[{'model':_0x30d79d[_0x881b('0x2b')],'as':_0x881b('0x2f'),'where':{'id':_0x2fab7b[_0x881b('0x1b')]}}]})[_0x881b('0x17')](function(_0x4c6523){if(_0x4c6523){var _0x2e0dfe=[];for(var _0x48e3e9=0x0,_0x3a596b;_0x48e3e9<_0x4c6523['length'];_0x48e3e9+=0x1){_0x3a596b=_0x4c6523[_0x48e3e9][_0x881b('0x11')]({'plain':!![]});_0x30d79d[_0x881b('0x30')]['create']({'phone':_0x2fab7b[_0x881b('0xa')],'ContactId':_0x2fab7b['id'],'ListId':_0x2fab7b[_0x881b('0x1b')],'CampaignId':_0x3a596b['id']})[_0x881b('0x21')](function(_0x262b0c){logger['error'](_0x881b('0x31'),_0x881b('0x14'),_0x262b0c['message']);});}}});})['then'](function(){_0x597174();})[_0x881b('0x21')](function(_0x4cebe5){logger['error'](_0x881b('0x31'),_0x881b('0x14'),_0x4cebe5[_0x881b('0x32')]);_0x597174(_0x4cebe5);});}else{_0x597174(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0xaf1a3d,_0x5bda2d,_0x364615){var _0x569d68=_0x203c33[_0x881b('0x35')];var _0x4b0c01=_0xaf1a3d['get']({'plain':!![]});return _0x569d68[_0x881b('0x16')]['findAll']({'raw':!![],'where':{'ListId':_0x4b0c01[_0x881b('0x1b')],'ContactId':_0x4b0c01['id']}})[_0x881b('0x17')](function(_0x38767d){if(!_['isEmpty'](_0x38767d)){var _0x54d329=[];for(var _0x4b81db=0x0;_0x4b81db<_0x38767d[_0x881b('0x2d')];_0x4b81db+=0x1){var _0x3324e7=_0x569d68[_0x881b('0x16')][_0x881b('0x36')]({'where':{'ListId':_0x38767d[_0x4b81db][_0x881b('0x1b')],'ContactId':_0x38767d[_0x4b81db]['ContactId'],'VoiceQueueId':_0x38767d[_0x4b81db][_0x881b('0x37')],'CampaignId':_0x38767d[_0x4b81db][_0x881b('0x38')]}});_0x54d329[_0x881b('0x39')](_0x3324e7);}return BPromise['all'](_0x54d329);}})[_0x881b('0x17')](function(_0x1f0ec3){logger[_0x881b('0x3a')](_0x881b('0x3b'),util[_0x881b('0x15')](_0x1f0ec3,{'showHidden':![],'depth':null}));_0x364615();})['catch'](function(_0x390315){logger[_0x881b('0x12')](_0x881b('0x3c'),util['inspect'](_0x390315,{'showHidden':![],'depth':null}));_0x364615(_0x390315);});}}});};
\ No newline at end of file
+var _0xa36b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','lastName','mobile','fax','email','utf8mb4','utf8mb4_unicode_ci','models','get','cmContact','afterCreate','inspect','CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','create','priority','scheduledat','format','callbackUniqueid','YYYY-MM-DD\x20HH:mm:ss','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','error','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','ListId','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','outbound','dialCheckDuplicateType','CmList','always','onlyIfOpen','VoiceQueue','findAll','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','Lists','destroy','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util'];(function(_0x5b611b,_0x1b0043){var _0x610f59=function(_0x29ff8b){while(--_0x29ff8b){_0x5b611b['push'](_0x5b611b['shift']());}};_0x610f59(++_0x1b0043);}(_0xa36b,0x107));var _0xba36=function(_0x4ea38b,_0x1f9191){_0x4ea38b=_0x4ea38b-0x0;var _0x3efa46=_0xa36b[_0x4ea38b];return _0x3efa46;};'use strict';var _=require('lodash');var util=require(_0xba36('0x0'));var logger=require(_0xba36('0x1'))(_0xba36('0x2'));var moment=require(_0xba36('0x3'));var BPromise=require('bluebird');var rp=require(_0xba36('0x4'));var fs=require('fs');var path=require(_0xba36('0x5'));var rimraf=require(_0xba36('0x6'));var config=require(_0xba36('0x7'));var attributes=require(_0xba36('0x8'));module[_0xba36('0x9')]=function(_0x42ccb1,_0x29cc14){return _0x42ccb1[_0xba36('0xa')](_0xba36('0xb'),attributes,{'tableName':_0xba36('0xc'),'paranoid':!![],'indexes':[{'name':_0xba36('0xd'),'fields':[_0xba36('0xd')]},{'name':'fti_cm_contacts','fields':['firstName',_0xba36('0xe'),_0xba36('0xd'),_0xba36('0xf'),_0xba36('0x10'),_0xba36('0x11')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0xba36('0x12'),'collate':_0xba36('0x13'),'hooks':{'afterCreate':function(_0x3ac1b3,_0x3bf986,_0x3ed020){var _0x4eee54=_0x42ccb1[_0xba36('0x14')];var _0x1718a1=_0x3ac1b3[_0xba36('0x15')]({'plain':!![]});function _0xf4e89e(){return function(_0x271a57){logger['error'](_0xba36('0x16'),_0xba36('0x17'),util[_0xba36('0x18')](_0x271a57,{'showHidden':![],'depth':null}));};}var _0x30b3d2=function(_0x42e01f){return new BPromise(function(_0x184812,_0x2b258a){_0x4eee54[_0xba36('0x19')][_0xba36('0x1a')]({'where':{'phone':_0x1718a1[_0xba36('0xd')],'VoiceQueueId':_0x42e01f['id']}})[_0xba36('0x1b')](function(_0x2722e0){if(!_[_0xba36('0x1c')](_0x2722e0)){throw new Error(_0xba36('0x1d')+_0x1718a1['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x42e01f['id']);}return _0x4eee54[_0xba36('0x19')][_0xba36('0x1e')]({'phone':_0x1718a1['phone'],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'priority':_0x1718a1[_0xba36('0x1f')]?_0x1718a1[_0xba36('0x1f')]:0x2,'scheduledat':_0x1718a1[_0xba36('0x20')]?_0x1718a1[_0xba36('0x20')]:moment()[_0xba36('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x1718a1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1718a1[_0xba36('0x22')]?_0x1718a1[_0xba36('0x22')]:undefined,'callbackat':_0x1718a1[_0xba36('0x22')]?moment()[_0xba36('0x21')](_0xba36('0x23')):undefined,'VoiceQueueId':_0x42e01f['id']});})['catch'](function(_0x1a63d9){_0x2b258a(_0x1a63d9);});});};var _0x26e113=function(_0x20d4c1){return new BPromise(function(_0x221389,_0x5ac070){_0x4eee54[_0xba36('0x19')][_0xba36('0x1a')]({'where':{'phone':_0x1718a1['phone'],'VoiceQueueId':_0x20d4c1['id']}})[_0xba36('0x1b')](function(_0x3c107d){if(!_[_0xba36('0x1c')](_0x3c107d)){throw new Error(_0xba36('0x1d')+_0x1718a1[_0xba36('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x20d4c1['id']);}return _0x4eee54['CmHopperFinal'][_0xba36('0x1a')]({'where':{'calleridnum':_0x1718a1[_0xba36('0xd')],'VoiceQueueId':_0x20d4c1['id']}});})[_0xba36('0x1b')](function(_0x1d7a50){if(!_[_0xba36('0x1c')](_0x1d7a50)){throw new Error(_0xba36('0x24')+_0x1718a1[_0xba36('0xd')]+_0xba36('0x25')+_0x20d4c1['id']);}return _0x4eee54[_0xba36('0x19')]['create']({'phone':_0x1718a1['phone'],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'priority':_0x1718a1['priority']?_0x1718a1[_0xba36('0x1f')]:0x2,'scheduledat':_0x1718a1[_0xba36('0x20')]?_0x1718a1[_0xba36('0x20')]:moment()[_0xba36('0x21')](_0xba36('0x23')),'callback':_0x1718a1[_0xba36('0x22')]?!![]:![],'callbackuniqueid':_0x1718a1[_0xba36('0x22')]?_0x1718a1[_0xba36('0x22')]:undefined,'callbackat':_0x1718a1[_0xba36('0x22')]?moment()[_0xba36('0x21')](_0xba36('0x23')):undefined,'VoiceQueueId':_0x20d4c1['id']});})[_0xba36('0x26')](function(_0xcf4d0c){_0x5ac070(_0xcf4d0c);});});};function _0x2c83f7(){return function(_0x1e39d3){logger[_0xba36('0x27')]('cmContact',_0xba36('0x17'),util[_0xba36('0x18')](_0x1e39d3,{'showHidden':![],'depth':null}));};}var _0x202e2c=function(_0x4d05bf){return new BPromise(function(_0x75e3b0,_0x11599a){_0x4eee54['CmHopper'][_0xba36('0x1a')]({'where':{'phone':_0x1718a1[_0xba36('0xd')],'CampaignId':_0x4d05bf['id']}})['then'](function(_0xc53ba6){if(!_[_0xba36('0x1c')](_0xc53ba6)){throw new Error(_0xba36('0x1d')+_0x1718a1[_0xba36('0xd')]+_0xba36('0x28')+_0x4d05bf['id']);}return _0x4eee54[_0xba36('0x19')]['create']({'phone':_0x1718a1[_0xba36('0xd')],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1[_0xba36('0x29')],'priority':_0x1718a1[_0xba36('0x1f')]?_0x1718a1['priority']:0x2,'scheduledat':_0x1718a1[_0xba36('0x20')]?_0x1718a1[_0xba36('0x20')]:moment()['format'](_0xba36('0x23')),'callback':_0x1718a1[_0xba36('0x22')]?!![]:![],'callbackuniqueid':_0x1718a1[_0xba36('0x22')]?_0x1718a1[_0xba36('0x22')]:undefined,'callbackat':_0x1718a1[_0xba36('0x22')]?moment()[_0xba36('0x21')](_0xba36('0x23')):undefined,'CampaignId':_0x4d05bf['id']});})[_0xba36('0x26')](function(_0x560d0e){_0x11599a(_0x560d0e);});});};var _0x35dadd=function(_0x466614){return new BPromise(function(_0x8e4487,_0x49e121){_0x4eee54['CmHopper'][_0xba36('0x1a')]({'where':{'phone':_0x1718a1['phone'],'CampaignId':_0x466614['id']}})['then'](function(_0x2fea3c){if(!_[_0xba36('0x1c')](_0x2fea3c)){throw new Error('cmContact,\x20afterCreate\x20'+_0x1718a1[_0xba36('0xd')]+_0xba36('0x2a')+_0x466614['id']);}return _0x4eee54[_0xba36('0x2b')][_0xba36('0x1a')]({'where':{'calleridnum':_0x1718a1[_0xba36('0xd')],'CampaignId':_0x466614['id']}});})[_0xba36('0x1b')](function(_0x1030bd){if(!_[_0xba36('0x1c')](_0x1030bd)){throw new Error(_0xba36('0x24')+_0x1718a1['phone']+_0xba36('0x2c')+_0x466614['id']);}return _0x4eee54[_0xba36('0x19')][_0xba36('0x1e')]({'phone':_0x1718a1['phone'],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'priority':_0x1718a1[_0xba36('0x1f')]?_0x1718a1[_0xba36('0x1f')]:0x2,'scheduledat':_0x1718a1[_0xba36('0x20')]?_0x1718a1[_0xba36('0x20')]:moment()[_0xba36('0x21')](_0xba36('0x23')),'callback':_0x1718a1[_0xba36('0x22')]?!![]:![],'callbackuniqueid':_0x1718a1[_0xba36('0x22')]?_0x1718a1[_0xba36('0x22')]:undefined,'callbackat':_0x1718a1['callbackUniqueid']?moment()[_0xba36('0x21')](_0xba36('0x23')):undefined,'CampaignId':_0x466614['id']});})[_0xba36('0x26')](function(_0x275a17){_0x49e121(_0x275a17);});});};if(_0x1718a1['ListId']){_0x4eee54['VoiceQueue']['findAll']({'where':{'type':_0xba36('0x2d')},'attributes':['id',_0xba36('0x2e')],'include':[{'model':_0x4eee54[_0xba36('0x2f')],'as':'Lists','where':{'id':_0x1718a1['ListId']}}]})[_0xba36('0x1b')](function(_0x312124){if(_0x312124){var _0x4fa734=[];for(var _0x269c34=0x0,_0x307608;_0x269c34<_0x312124['length'];_0x269c34+=0x1){_0x307608=_0x312124[_0x269c34]['get']({'plain':!![]});switch(_0x307608['dialCheckDuplicateType']){case _0xba36('0x30'):_0x26e113(_0x307608)['catch'](_0xf4e89e());break;case _0xba36('0x31'):_0x30b3d2(_0x307608)[_0xba36('0x26')](_0xf4e89e());break;default:_0x4eee54['CmHopper'][_0xba36('0x1e')]({'phone':_0x1718a1['phone'],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'scheduledat':_0x1718a1[_0xba36('0x20')]?_0x1718a1[_0xba36('0x20')]:moment()['format'](_0xba36('0x23')),'priority':_0x1718a1[_0xba36('0x1f')]?_0x1718a1[_0xba36('0x1f')]:0x2,'callback':_0x1718a1[_0xba36('0x22')]?!![]:![],'callbackuniqueid':_0x1718a1['callbackUniqueid']?_0x1718a1[_0xba36('0x22')]:undefined,'callbackat':_0x1718a1[_0xba36('0x22')]?moment()[_0xba36('0x21')](_0xba36('0x23')):undefined,'VoiceQueueId':_0x307608['id']})['catch'](_0xf4e89e());}}}})[_0xba36('0x1b')](function(){return _0x4eee54[_0xba36('0x32')][_0xba36('0x33')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x4eee54[_0xba36('0x2f')],'as':_0xba36('0x34'),'where':{'id':_0x1718a1['ListId']}}]})['then'](function(_0x5b5b18){if(_0x5b5b18){var _0x13b940=[];for(var _0x5ee027=0x0,_0x483e2f;_0x5ee027<_0x5b5b18[_0xba36('0x35')];_0x5ee027+=0x1){_0x483e2f=_0x5b5b18[_0x5ee027]['get']({'plain':!![]});_0x4eee54[_0xba36('0x36')]['create']({'phone':_0x1718a1['phone'],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'VoiceQueueId':_0x483e2f['id']})[_0xba36('0x26')](function(_0x21648f){logger[_0xba36('0x27')](_0xba36('0x37'),'afterCreate',_0x21648f[_0xba36('0x38')]);});}}});})['then'](function(){return _0x4eee54[_0xba36('0x39')]['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x4eee54[_0xba36('0x2f')],'as':_0xba36('0x3a'),'where':{'id':_0x1718a1[_0xba36('0x29')]}}]})['then'](function(_0x1f6ff4){if(_0x1f6ff4){var _0x19d1f9=[];for(var _0x47c390=0x0,_0x1f08b5;_0x47c390<_0x1f6ff4[_0xba36('0x35')];_0x47c390+=0x1){_0x1f08b5=_0x1f6ff4[_0x47c390][_0xba36('0x15')]({'plain':!![]});switch(_0x1f08b5['dialCheckDuplicateType']){case'always':_0x35dadd(_0x1f08b5)[_0xba36('0x26')](_0x2c83f7());break;case _0xba36('0x31'):_0x202e2c(_0x1f08b5)[_0xba36('0x26')](_0x2c83f7());break;default:_0x4eee54[_0xba36('0x19')][_0xba36('0x1e')]({'phone':_0x1718a1['phone'],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'scheduledat':_0x1718a1[_0xba36('0x20')]?_0x1718a1[_0xba36('0x20')]:moment()[_0xba36('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x1718a1[_0xba36('0x1f')]?_0x1718a1['priority']:0x2,'callback':_0x1718a1[_0xba36('0x22')]?!![]:![],'callbackuniqueid':_0x1718a1['callbackUniqueid']?_0x1718a1[_0xba36('0x22')]:undefined,'callbackat':_0x1718a1[_0xba36('0x22')]?moment()[_0xba36('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x1f08b5['id']})[_0xba36('0x26')](_0x2c83f7());}}}});})[_0xba36('0x1b')](function(){return _0x4eee54[_0xba36('0x39')][_0xba36('0x33')]({'attributes':['id'],'include':[{'model':_0x4eee54[_0xba36('0x2f')],'as':'BlackLists','where':{'id':_0x1718a1[_0xba36('0x29')]}}]})['then'](function(_0x53d671){if(_0x53d671){var _0x81bf9e=[];for(var _0x167a9d=0x0,_0x2b5416;_0x167a9d<_0x53d671['length'];_0x167a9d+=0x1){_0x2b5416=_0x53d671[_0x167a9d][_0xba36('0x15')]({'plain':!![]});_0x4eee54[_0xba36('0x36')]['create']({'phone':_0x1718a1[_0xba36('0xd')],'ContactId':_0x1718a1['id'],'ListId':_0x1718a1['ListId'],'CampaignId':_0x2b5416['id']})[_0xba36('0x26')](function(_0x56fb75){logger['error'](_0xba36('0x37'),_0xba36('0x17'),_0x56fb75['message']);});}}});})['then'](function(){_0x3ed020();})['catch'](function(_0x5c717f){logger[_0xba36('0x27')](_0xba36('0x37'),_0xba36('0x17'),_0x5c717f[_0xba36('0x38')]);_0x3ed020(_0x5c717f);});}else{_0x3ed020(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x3a4306,_0x5d73ca,_0x121c4c){var _0x589135=_0x42ccb1[_0xba36('0x14')];var _0x2fc706=_0x3a4306[_0xba36('0x15')]({'plain':!![]});return _0x589135[_0xba36('0x19')]['findAll']({'raw':!![],'where':{'ListId':_0x2fc706[_0xba36('0x29')],'ContactId':_0x2fc706['id']}})['then'](function(_0x56f94b){if(!_['isEmpty'](_0x56f94b)){var _0x5b15a4=[];for(var _0x4b8b31=0x0;_0x4b8b31<_0x56f94b['length'];_0x4b8b31+=0x1){var _0xaac2eb=_0x589135[_0xba36('0x19')][_0xba36('0x3b')]({'where':{'ListId':_0x56f94b[_0x4b8b31][_0xba36('0x29')],'ContactId':_0x56f94b[_0x4b8b31]['ContactId'],'VoiceQueueId':_0x56f94b[_0x4b8b31]['VoiceQueueId'],'CampaignId':_0x56f94b[_0x4b8b31][_0xba36('0x3c')]}});_0x5b15a4[_0xba36('0x3d')](_0xaac2eb);}return BPromise[_0xba36('0x3e')](_0x5b15a4);}})[_0xba36('0x1b')](function(_0x339175){logger[_0xba36('0x3f')](_0xba36('0x40'),util[_0xba36('0x18')](_0x339175,{'showHidden':![],'depth':null}));_0x121c4c();})[_0xba36('0x26')](function(_0xf6f171){logger['error'](_0xba36('0x41'),util['inspect'](_0xf6f171,{'showHidden':![],'depth':null}));_0x121c4c(_0xf6f171);});}}});};
\ No newline at end of file
index 297777a..9315663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4054=['include','model','GetCmContact','catch','CreateCmContact','create','body','length','keys','cf_','table','cm_contacts','set','id\x20=\x20?','toString','sequelize','info','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','socket.io-emitter','./cmContact.socket','register','request','then','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','CmContact,\x20%s,\x20%s','message','CmContact','findAll','options','raw','where','attributes','map'];(function(_0x488ca1,_0xf6858e){var _0x4dd0a4=function(_0x40fb65){while(--_0x40fb65){_0x488ca1['push'](_0x488ca1['shift']());}};_0x4dd0a4(++_0xf6858e);}(_0x4054,0x101));var _0x4405=function(_0x166504,_0x398ac8){_0x166504=_0x166504-0x0;var _0x9088b9=_0x4054[_0x166504];return _0x9088b9;};'use strict';var _=require(_0x4405('0x0'));var util=require(_0x4405('0x1'));var moment=require(_0x4405('0x2'));var BPromise=require('bluebird');var rs=require(_0x4405('0x3'));var fs=require('fs');var Redis=require(_0x4405('0x4'));var squel=require('squel');var db=require('../../mysqldb')['db'];var utils=require(_0x4405('0x5'));var logger=require('../../config/logger')(_0x4405('0x6'));var config=require('../../config/environment');var jayson=require(_0x4405('0x7'));var client=jayson[_0x4405('0x8')][_0x4405('0x9')]({'port':0x232a});config['redis']=_[_0x4405('0xa')](config[_0x4405('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x4405('0xc'))(new Redis(config[_0x4405('0xb')]));require(_0x4405('0xd'))[_0x4405('0xe')](socket);function respondWithRpcPromise(_0x3ea3f2,_0x750bc5,_0x537ea1){return new BPromise(function(_0x41f43e,_0x42b6fe){return client[_0x4405('0xf')](_0x3ea3f2,_0x537ea1)[_0x4405('0x10')](function(_0x4e9573){logger['info']('CmContact,\x20%s,\x20%s',_0x750bc5,_0x4405('0x11'));logger[_0x4405('0x12')](_0x4405('0x13'),_0x750bc5,_0x4405('0x11'),JSON[_0x4405('0x14')](_0x4e9573));if(_0x4e9573[_0x4405('0x15')]){if(_0x4e9573[_0x4405('0x15')]['code']===0x1f4){logger[_0x4405('0x15')](_0x4405('0x16'),_0x750bc5,_0x4e9573['error'][_0x4405('0x17')]);return _0x42b6fe(_0x4e9573[_0x4405('0x15')][_0x4405('0x17')]);}logger[_0x4405('0x15')]('CmContact,\x20%s,\x20%s',_0x750bc5,_0x4e9573['error'][_0x4405('0x17')]);return _0x41f43e(_0x4e9573['error'][_0x4405('0x17')]);}else{logger['info'](_0x4405('0x16'),_0x750bc5,'request\x20sent');_0x41f43e(_0x4e9573['result']['message']);}})['catch'](function(_0x5ab0fc){logger[_0x4405('0x15')](_0x4405('0x16'),_0x750bc5,_0x5ab0fc);_0x42b6fe(_0x5ab0fc);});});}exports['GetCmContact']=function(_0x47a211){var _0x1af326=this;return new Promise(function(_0x4b5e95,_0x1beeb5){return db[_0x4405('0x18')][_0x4405('0x19')]({'raw':_0x47a211[_0x4405('0x1a')]?_0x47a211[_0x4405('0x1a')][_0x4405('0x1b')]===undefined?!![]:![]:!![],'where':_0x47a211['options']?_0x47a211[_0x4405('0x1a')][_0x4405('0x1c')]||null:null,'attributes':_0x47a211['options']?_0x47a211[_0x4405('0x1a')][_0x4405('0x1d')]||null:null,'limit':_0x47a211[_0x4405('0x1a')]?_0x47a211[_0x4405('0x1a')]['limit']||null:null,'include':_0x47a211[_0x4405('0x1a')]?_0x47a211[_0x4405('0x1a')]['include']?_[_0x4405('0x1e')](_0x47a211[_0x4405('0x1a')]['include'],function(_0xb98d75){return{'model':db[_0xb98d75['model']],'as':_0xb98d75['as'],'attributes':_0xb98d75[_0x4405('0x1d')],'include':_0xb98d75[_0x4405('0x1f')]?_['map'](_0xb98d75[_0x4405('0x1f')],function(_0x52b4ff){return{'model':db[_0x52b4ff[_0x4405('0x20')]],'as':_0x52b4ff['as'],'attributes':_0x52b4ff[_0x4405('0x1d')],'include':_0x52b4ff[_0x4405('0x1f')]?_[_0x4405('0x1e')](_0x52b4ff[_0x4405('0x1f')],function(_0x402d7f){return{'model':db[_0x402d7f[_0x4405('0x20')]],'as':_0x402d7f['as'],'attributes':_0x402d7f[_0x4405('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x406085){logger['info'](_0x4405('0x21'),_0x47a211);logger[_0x4405('0x12')](_0x4405('0x21'),_0x47a211,JSON[_0x4405('0x14')](_0x406085));_0x4b5e95(_0x406085);})[_0x4405('0x22')](function(_0x10be78){logger['error'](_0x4405('0x21'),_0x10be78[_0x4405('0x17')],_0x47a211);_0x1beeb5(_0x1af326[_0x4405('0x15')](0x1f4,_0x10be78[_0x4405('0x17')]));});});};exports[_0x4405('0x23')]=function(_0x2977c5){var _0x2ca68a=this;return new Promise(function(_0x4d3ef4,_0x13e668){return db['CmContact'][_0x4405('0x24')](_0x2977c5[_0x4405('0x25')],{'raw':_0x2977c5[_0x4405('0x1a')]?_0x2977c5[_0x4405('0x1a')][_0x4405('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x381c29){var _0x4c4324;for(var _0x456894=0x0;_0x456894<Object['keys'](_0x2977c5[_0x4405('0x25')])[_0x4405('0x26')];_0x456894++){var _0x33c3dd=Object[_0x4405('0x27')](_0x2977c5[_0x4405('0x25')])[_0x456894];if(_0x33c3dd['startsWith'](_0x4405('0x28'))){_0x4c4324=squel['update']()[_0x4405('0x29')](_0x4405('0x2a'))[_0x4405('0x2b')](_0x33c3dd,_0x2977c5[_0x4405('0x25')][_0x33c3dd])[_0x4405('0x1c')](_0x4405('0x2c'),_0x381c29['id'])[_0x4405('0x2d')]();break;}}if(!_0x4c4324)return _0x381c29;return db[_0x4405('0x2e')]['query'](_0x4c4324)[_0x4405('0x10')](function(){return _0x381c29;});})['then'](function(_0x4f7c1a){logger[_0x4405('0x2f')]('CreateCmContact',_0x2977c5);logger[_0x4405('0x12')]('CreateCmContact',_0x2977c5,JSON[_0x4405('0x14')](_0x4f7c1a));_0x4d3ef4(_0x4f7c1a);})['catch'](function(_0xcde159){logger[_0x4405('0x15')](_0x4405('0x23'),_0xcde159['message'],_0x2977c5);_0x13e668(_0x2ca68a[_0x4405('0x15')](0x1f4,_0xcde159[_0x4405('0x17')]));});});};
\ No newline at end of file
+var _0x5e7d=['code','message','result','GetCmContact','CmContact','findAll','options','where','attributes','include','model','debug','catch','create','body','raw','keys','length','startsWith','table','cm_contacts','set','toString','sequelize','query','CreateCmContact','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4ecbe7,_0x164a6c){var _0xefc2fd=function(_0x4463a4){while(--_0x4463a4){_0x4ecbe7['push'](_0x4ecbe7['shift']());}};_0xefc2fd(++_0x164a6c);}(_0x5e7d,0x10f));var _0xd5e7=function(_0x377382,_0x170eb6){_0x377382=_0x377382-0x0;var _0x3c081c=_0x5e7d[_0x377382];return _0x3c081c;};'use strict';var _=require(_0xd5e7('0x0'));var util=require(_0xd5e7('0x1'));var moment=require(_0xd5e7('0x2'));var BPromise=require(_0xd5e7('0x3'));var rs=require(_0xd5e7('0x4'));var fs=require('fs');var Redis=require('ioredis');var squel=require('squel');var db=require(_0xd5e7('0x5'))['db'];var utils=require(_0xd5e7('0x6'));var logger=require(_0xd5e7('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd5e7('0x8'));var client=jayson[_0xd5e7('0x9')][_0xd5e7('0xa')]({'port':0x232a});config[_0xd5e7('0xb')]=_[_0xd5e7('0xc')](config[_0xd5e7('0xb')],{'host':_0xd5e7('0xd'),'port':0x18eb});var socket=require(_0xd5e7('0xe'))(new Redis(config[_0xd5e7('0xb')]));require('./cmContact.socket')[_0xd5e7('0xf')](socket);function respondWithRpcPromise(_0x562cb3,_0x190de5,_0x23edf9){return new BPromise(function(_0x3bef81,_0x26b813){return client[_0xd5e7('0x10')](_0x562cb3,_0x23edf9)[_0xd5e7('0x11')](function(_0x2628f6){logger[_0xd5e7('0x12')](_0xd5e7('0x13'),_0x190de5,'request\x20sent');logger['debug']('CmContact,\x20%s,\x20%s,\x20%s',_0x190de5,_0xd5e7('0x14'),JSON[_0xd5e7('0x15')](_0x2628f6));if(_0x2628f6[_0xd5e7('0x16')]){if(_0x2628f6[_0xd5e7('0x16')][_0xd5e7('0x17')]===0x1f4){logger[_0xd5e7('0x16')](_0xd5e7('0x13'),_0x190de5,_0x2628f6[_0xd5e7('0x16')][_0xd5e7('0x18')]);return _0x26b813(_0x2628f6['error']['message']);}logger['error'](_0xd5e7('0x13'),_0x190de5,_0x2628f6[_0xd5e7('0x16')]['message']);return _0x3bef81(_0x2628f6['error'][_0xd5e7('0x18')]);}else{logger[_0xd5e7('0x12')](_0xd5e7('0x13'),_0x190de5,'request\x20sent');_0x3bef81(_0x2628f6[_0xd5e7('0x19')]['message']);}})['catch'](function(_0x4a5858){logger[_0xd5e7('0x16')](_0xd5e7('0x13'),_0x190de5,_0x4a5858);_0x26b813(_0x4a5858);});});}exports[_0xd5e7('0x1a')]=function(_0xe8a7db){var _0x477fd0=this;return new Promise(function(_0x27f892,_0x3ae8bb){return db[_0xd5e7('0x1b')][_0xd5e7('0x1c')]({'raw':_0xe8a7db['options']?_0xe8a7db[_0xd5e7('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xe8a7db[_0xd5e7('0x1d')]?_0xe8a7db['options'][_0xd5e7('0x1e')]||null:null,'attributes':_0xe8a7db[_0xd5e7('0x1d')]?_0xe8a7db[_0xd5e7('0x1d')][_0xd5e7('0x1f')]||null:null,'limit':_0xe8a7db['options']?_0xe8a7db[_0xd5e7('0x1d')]['limit']||null:null,'include':_0xe8a7db[_0xd5e7('0x1d')]?_0xe8a7db[_0xd5e7('0x1d')][_0xd5e7('0x20')]?_['map'](_0xe8a7db[_0xd5e7('0x1d')][_0xd5e7('0x20')],function(_0xb682ac){return{'model':db[_0xb682ac[_0xd5e7('0x21')]],'as':_0xb682ac['as'],'attributes':_0xb682ac[_0xd5e7('0x1f')],'include':_0xb682ac[_0xd5e7('0x20')]?_['map'](_0xb682ac[_0xd5e7('0x20')],function(_0x4d85a7){return{'model':db[_0x4d85a7[_0xd5e7('0x21')]],'as':_0x4d85a7['as'],'attributes':_0x4d85a7[_0xd5e7('0x1f')],'include':_0x4d85a7['include']?_['map'](_0x4d85a7[_0xd5e7('0x20')],function(_0x54e6a4){return{'model':db[_0x54e6a4[_0xd5e7('0x21')]],'as':_0x54e6a4['as'],'attributes':_0x54e6a4[_0xd5e7('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd5e7('0x11')](function(_0x35c836){logger[_0xd5e7('0x12')](_0xd5e7('0x1a'),_0xe8a7db);logger[_0xd5e7('0x22')](_0xd5e7('0x1a'),_0xe8a7db,JSON[_0xd5e7('0x15')](_0x35c836));_0x27f892(_0x35c836);})[_0xd5e7('0x23')](function(_0x6b90eb){logger[_0xd5e7('0x16')]('GetCmContact',_0x6b90eb[_0xd5e7('0x18')],_0xe8a7db);_0x3ae8bb(_0x477fd0['error'](0x1f4,_0x6b90eb[_0xd5e7('0x18')]));});});};exports['CreateCmContact']=function(_0x5562ea){var _0x19ec5d=this;return new Promise(function(_0x36d690,_0xa67e6c){return db[_0xd5e7('0x1b')][_0xd5e7('0x24')](_0x5562ea[_0xd5e7('0x25')],{'raw':_0x5562ea[_0xd5e7('0x1d')]?_0x5562ea[_0xd5e7('0x1d')][_0xd5e7('0x26')]===undefined?!![]:![]:!![]})[_0xd5e7('0x11')](function(_0x58eeeb){var _0x3c166a;for(var _0x337a37=0x0;_0x337a37<Object[_0xd5e7('0x27')](_0x5562ea[_0xd5e7('0x25')])[_0xd5e7('0x28')];_0x337a37++){var _0x4fe089=Object[_0xd5e7('0x27')](_0x5562ea[_0xd5e7('0x25')])[_0x337a37];if(_0x4fe089[_0xd5e7('0x29')]('cf_')){_0x3c166a=squel['update']()[_0xd5e7('0x2a')](_0xd5e7('0x2b'))[_0xd5e7('0x2c')](_0x4fe089,_0x5562ea[_0xd5e7('0x25')][_0x4fe089])[_0xd5e7('0x1e')]('id\x20=\x20?',_0x58eeeb['id'])[_0xd5e7('0x2d')]();break;}}if(!_0x3c166a)return _0x58eeeb;return db[_0xd5e7('0x2e')][_0xd5e7('0x2f')](_0x3c166a)[_0xd5e7('0x11')](function(){return _0x58eeeb;});})[_0xd5e7('0x11')](function(_0x415b84){logger[_0xd5e7('0x12')](_0xd5e7('0x30'),_0x5562ea);logger[_0xd5e7('0x22')]('CreateCmContact',_0x5562ea,JSON[_0xd5e7('0x15')](_0x415b84));_0x36d690(_0x415b84);})['catch'](function(_0x3035f7){logger['error'](_0xd5e7('0x30'),_0x3035f7['message'],_0x5562ea);_0xa67e6c(_0x19ec5d[_0xd5e7('0x16')](0x1f4,_0x3035f7[_0xd5e7('0x18')]));});});};
\ No newline at end of file
index 206efb8..1bc066c 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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 9608b01..812c3e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e86=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','/create_many','bulkCreate','setTags','diskStorage','join','root','originalname','replace','format','%s-%s%s','basename','extname','now','/csv','single','file','uploadCsv','server/files/tmp','/upload','upload','import','update','destroy','exports','path','connect-timeout'];(function(_0x3c7cd1,_0x4644f5){var _0x5e2444=function(_0x58445a){while(--_0x58445a){_0x3c7cd1['push'](_0x3c7cd1['shift']());}};_0x5e2444(++_0x4644f5);}(_0x1e86,0x171));var _0x61e8=function(_0x59f7d1,_0x2116a2){_0x59f7d1=_0x59f7d1-0x0;var _0x48f49f=_0x1e86[_0x59f7d1];return _0x48f49f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x61e8('0x0'));var timeout=require(_0x61e8('0x1'));var express=require(_0x61e8('0x2'));var router=express[_0x61e8('0x3')]();var fs_extra=require(_0x61e8('0x4'));var auth=require(_0x61e8('0x5'));var interaction=require(_0x61e8('0x6'));var config=require('../../config/environment');var controller=require(_0x61e8('0x7'));router['get']('/',auth[_0x61e8('0x8')](),controller[_0x61e8('0x9')]);router[_0x61e8('0xa')](_0x61e8('0xb'),auth[_0x61e8('0x8')](),controller[_0x61e8('0xc')]);router[_0x61e8('0xa')](_0x61e8('0xd'),auth[_0x61e8('0x8')](),controller[_0x61e8('0xe')]);router[_0x61e8('0xa')](_0x61e8('0xf'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x10')]);router['get'](_0x61e8('0x11'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x12')]);router[_0x61e8('0xa')]('/:id/hopper_histories',auth[_0x61e8('0x8')](),controller[_0x61e8('0x13')]);router[_0x61e8('0xa')](_0x61e8('0x14'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x15')]);router[_0x61e8('0xa')](_0x61e8('0x16'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x17')]);router[_0x61e8('0xa')](_0x61e8('0x18'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x19')]);router[_0x61e8('0x1a')](_0x61e8('0x1b'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x1c')]);router[_0x61e8('0x1a')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x61e8('0x1d'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x1e')]);router['post'](_0x61e8('0xf'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x1f')]);var upload=multer({'storage':multer[_0x61e8('0x20')]({'destination':function(_0x5a8b11,_0x40fe9c,_0x19e047){_0x19e047(null,path[_0x61e8('0x21')](config[_0x61e8('0x22')],'server/files/tmp'));},'filename':function(_0x275283,_0x5034a7,_0x5f5401){_0x5034a7['originalname']=_0x5034a7[_0x61e8('0x23')][_0x61e8('0x24')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5f5401(null,util[_0x61e8('0x25')](_0x61e8('0x26'),path[_0x61e8('0x27')](_0x5034a7[_0x61e8('0x23')],path[_0x61e8('0x28')](_0x5034a7['originalname'])),Date[_0x61e8('0x29')](),path['extname'](_0x5034a7[_0x61e8('0x23')])));}})});router[_0x61e8('0x1a')](_0x61e8('0x2a'),upload[_0x61e8('0x2b')](_0x61e8('0x2c')),controller[_0x61e8('0x2d')]);var upload=multer({'storage':multer[_0x61e8('0x20')]({'destination':function(_0x49b8a8,_0x403ea0,_0x13f723){_0x13f723(null,path[_0x61e8('0x21')](config[_0x61e8('0x22')],_0x61e8('0x2e')));},'filename':function(_0x568848,_0x19f356,_0x4867c7){_0x19f356['originalname']=_0x19f356['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4867c7(null,util[_0x61e8('0x25')](_0x61e8('0x26'),path['basename'](_0x19f356[_0x61e8('0x23')],path[_0x61e8('0x28')](_0x19f356[_0x61e8('0x23')])),Date[_0x61e8('0x29')](),path['extname'](_0x19f356[_0x61e8('0x23')])));}})});router[_0x61e8('0x1a')](_0x61e8('0x2f'),upload[_0x61e8('0x2b')]('file'),controller[_0x61e8('0x30')]);router[_0x61e8('0x1a')]('/upload/:id',auth[_0x61e8('0x8')](),controller[_0x61e8('0x31')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x61e8('0x32')]);router['delete'](_0x61e8('0xd'),auth[_0x61e8('0x8')](),controller[_0x61e8('0x33')]);module[_0x61e8('0x34')]=router;
\ No newline at end of file
+var _0x3124=['format','%s-%s%s','extname','/csv','single','file','server/files/tmp','replace','now','/upload','upload','/upload/:id','import','update','/:id','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','isAuthenticated','index','get','/describe','describe','show','/:id/tags','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','create','/create_many','bulkCreate','setTags','diskStorage','join','root','originalname'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3124,0x184));var _0x4312=function(_0x1add1e,_0x4b47fc){_0x1add1e=_0x1add1e-0x0;var _0x512d71=_0x3124[_0x1add1e];return _0x512d71;};'use strict';var multer=require(_0x4312('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4312('0x1'));var express=require(_0x4312('0x2'));var router=express[_0x4312('0x3')]();var fs_extra=require(_0x4312('0x4'));var auth=require(_0x4312('0x5'));var interaction=require(_0x4312('0x6'));var config=require(_0x4312('0x7'));var controller=require(_0x4312('0x8'));router['get']('/',auth[_0x4312('0x9')](),controller[_0x4312('0xa')]);router[_0x4312('0xb')](_0x4312('0xc'),auth['isAuthenticated'](),controller[_0x4312('0xd')]);router[_0x4312('0xb')]('/:id',auth[_0x4312('0x9')](),controller[_0x4312('0xe')]);router[_0x4312('0xb')](_0x4312('0xf'),auth['isAuthenticated'](),controller[_0x4312('0x10')]);router['get'](_0x4312('0x11'),auth['isAuthenticated'](),controller['getHoppers']);router['get'](_0x4312('0x12'),auth[_0x4312('0x9')](),controller[_0x4312('0x13')]);router[_0x4312('0xb')](_0x4312('0x14'),auth[_0x4312('0x9')](),controller[_0x4312('0x15')]);router[_0x4312('0xb')](_0x4312('0x16'),auth[_0x4312('0x9')](),controller[_0x4312('0x17')]);router[_0x4312('0xb')](_0x4312('0x18'),auth['isAuthenticated'](),controller[_0x4312('0x19')]);router[_0x4312('0x1a')](_0x4312('0x1b'),auth[_0x4312('0x9')](),controller['merge']);router[_0x4312('0x1a')]('/',auth[_0x4312('0x9')](),controller[_0x4312('0x1c')]);router[_0x4312('0x1a')](_0x4312('0x1d'),auth['isAuthenticated'](),controller[_0x4312('0x1e')]);router[_0x4312('0x1a')](_0x4312('0xf'),auth[_0x4312('0x9')](),controller[_0x4312('0x1f')]);var upload=multer({'storage':multer[_0x4312('0x20')]({'destination':function(_0xb049b9,_0x142c88,_0x3f9b3c){_0x3f9b3c(null,path[_0x4312('0x21')](config[_0x4312('0x22')],'server/files/tmp'));},'filename':function(_0x1bcc4e,_0x54e1e8,_0xa72de){_0x54e1e8[_0x4312('0x23')]=_0x54e1e8[_0x4312('0x23')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xa72de(null,util[_0x4312('0x24')](_0x4312('0x25'),path['basename'](_0x54e1e8[_0x4312('0x23')],path[_0x4312('0x26')](_0x54e1e8[_0x4312('0x23')])),Date['now'](),path[_0x4312('0x26')](_0x54e1e8[_0x4312('0x23')])));}})});router[_0x4312('0x1a')](_0x4312('0x27'),upload[_0x4312('0x28')](_0x4312('0x29')),controller['uploadCsv']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x18e2bb,_0x588e56,_0x51a244){_0x51a244(null,path[_0x4312('0x21')](config[_0x4312('0x22')],_0x4312('0x2a')));},'filename':function(_0x3e2bbb,_0x44c493,_0xcfae41){_0x44c493[_0x4312('0x23')]=_0x44c493['originalname'][_0x4312('0x2b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xcfae41(null,util[_0x4312('0x24')]('%s-%s%s',path['basename'](_0x44c493[_0x4312('0x23')],path[_0x4312('0x26')](_0x44c493[_0x4312('0x23')])),Date[_0x4312('0x2c')](),path['extname'](_0x44c493['originalname'])));}})});router[_0x4312('0x1a')](_0x4312('0x2d'),upload[_0x4312('0x28')]('file'),controller[_0x4312('0x2e')]);router[_0x4312('0x1a')](_0x4312('0x2f'),auth[_0x4312('0x9')](),controller[_0x4312('0x30')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4312('0x31')]);router['delete'](_0x4312('0x32'),auth[_0x4312('0x9')](),controller[_0x4312('0x33')]);module[_0x4312('0x34')]=router;
\ No newline at end of file
index 55aa6bf..4349074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ee=['BOOLEAN','ENUM','voice','lodash','exports','VIRTUAL','getDataValue','STRING','alias','name','TEXT','long','select','parse','values','isArray','setDataValue','stringify'];(function(_0x24e69e,_0x5d211c){var _0x1990b6=function(_0x5b38aa){while(--_0x5b38aa){_0x24e69e['push'](_0x24e69e['shift']());}};_0x1990b6(++_0x5d211c);}(_0xd5ee,0x1c5));var _0xed5e=function(_0x2c69a1,_0x201903){_0x2c69a1=_0x2c69a1-0x0;var _0x24bb91=_0xd5ee[_0x2c69a1];return _0x24bb91;};'use strict';var Sequelize=require('sequelize');var _=require(_0xed5e('0x0'));module[_0xed5e('0x1')]={'name':{'type':Sequelize[_0xed5e('0x2')],'get':function(_0x582662){return this[_0xed5e('0x3')]('alias');}},'alias':{'type':Sequelize[_0xed5e('0x4')],'allowNull':![],'set':function(_0x98d785){this['setDataValue'](_0xed5e('0x5'),_0x98d785?_0x98d785:this[_0xed5e('0x3')](_0xed5e('0x6')));}},'type':{'type':Sequelize[_0xed5e('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xed5e('0x7')](_0xed5e('0x8')),'get':function(){if(this['getDataValue']('type')===_0xed5e('0x9')){return JSON[_0xed5e('0xa')](this['getDataValue'](_0xed5e('0xb')));}else{return this['getDataValue'](_0xed5e('0xb'));}},'set':function(_0x2cd54a){if(Array[_0xed5e('0xc')](_0x2cd54a)){this[_0xed5e('0xd')](_0xed5e('0xb'),JSON[_0xed5e('0xe')](_0x2cd54a));}else{this[_0xed5e('0xd')](_0xed5e('0xb'),_0x2cd54a);}}},'required':{'type':Sequelize[_0xed5e('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xed5e('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xed5e('0x10')](_0xed5e('0x11'))}};
\ No newline at end of file
+var _0x3047=['isArray','values','stringify','BOOLEAN','ENUM','voice','sequelize','VIRTUAL','getDataValue','alias','STRING','setDataValue','name','TEXT','type','select','parse'];(function(_0x5c7a85,_0x41dd19){var _0x35290f=function(_0x26215b){while(--_0x26215b){_0x5c7a85['push'](_0x5c7a85['shift']());}};_0x35290f(++_0x41dd19);}(_0x3047,0x9f));var _0x7304=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3047[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x7304('0x0'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x7304('0x1')],'get':function(_0x4cfc39){return this[_0x7304('0x2')](_0x7304('0x3'));}},'alias':{'type':Sequelize[_0x7304('0x4')],'allowNull':![],'set':function(_0xfebdd5){this[_0x7304('0x5')](_0x7304('0x3'),_0xfebdd5?_0xfebdd5:this[_0x7304('0x2')](_0x7304('0x6')));}},'type':{'type':Sequelize[_0x7304('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x7304('0x7')]('long'),'get':function(){if(this['getDataValue'](_0x7304('0x8'))===_0x7304('0x9')){return JSON[_0x7304('0xa')](this[_0x7304('0x2')]('values'));}else{return this[_0x7304('0x2')]('values');}},'set':function(_0x48528b){if(Array[_0x7304('0xb')](_0x48528b)){this[_0x7304('0x5')](_0x7304('0xc'),JSON[_0x7304('0xd')](_0x48528b));}else{this[_0x7304('0x5')](_0x7304('0xc'),_0x48528b);}}},'required':{'type':Sequelize[_0x7304('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x7304('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x7304('0xf')](_0x7304('0x10'))}};
\ No newline at end of file
index 5895405..23ba890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d55=['find','body','params','sequelize','transaction','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','queryInterface','addColumn','format','cf_%d','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','reject','save','update','destroy','then','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','model','differenceBy','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','findAll','rows','catch','show','keys'];(function(_0x182ccb,_0x2c0bba){var _0x51b581=function(_0x2db152){while(--_0x2db152){_0x182ccb['push'](_0x182ccb['shift']());}};_0x51b581(++_0x2c0bba);}(_0x9d55,0xb2));var _0x59d5=function(_0x275b9f,_0x5624a6){_0x275b9f=_0x275b9f-0x0;var _0x1fb11f=_0x9d55[_0x275b9f];return _0x1fb11f;};'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(_0x59d5('0x0'));var moment=require(_0x59d5('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x59d5('0x2'));var util=require('util');var path=require(_0x59d5('0x3'));var sox=require(_0x59d5('0x4'));var csv=require(_0x59d5('0x5'));var ejs=require(_0x59d5('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x59d5('0x7'));var squel=require('squel');var crypto=require(_0x59d5('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x59d5('0x9'));var toCsv=require(_0x59d5('0x5'));var querystring=require(_0x59d5('0xa'));var Papa=require(_0x59d5('0xb'));var Redis=require(_0x59d5('0xc'));var authService=require(_0x59d5('0xd'));var qs=require(_0x59d5('0xe'));var as=require(_0x59d5('0xf'));var hardwareService=require(_0x59d5('0x10'));var logger=require(_0x59d5('0x11'))(_0x59d5('0x12'));var utils=require(_0x59d5('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x59d5('0x14'))['db'];function respondWithStatusCode(_0x47d730,_0xa8d6e1){_0xa8d6e1=_0xa8d6e1||0xcc;return function(_0x381039){if(_0x381039){return _0x47d730[_0x59d5('0x15')](_0xa8d6e1);}return _0x47d730['status'](_0xa8d6e1)['end']();};}function respondWithResult(_0x4c2a61,_0x39f1eb){_0x39f1eb=_0x39f1eb||0xc8;return function(_0x4cec79){if(_0x4cec79){return _0x4c2a61[_0x59d5('0x16')](_0x39f1eb)[_0x59d5('0x17')](_0x4cec79);}};}function respondWithFilteredResult(_0x528279,_0x424a99){return function(_0x256d73){if(_0x256d73){var _0x250472=typeof _0x424a99[_0x59d5('0x18')]==='undefined'&&typeof _0x424a99['limit']===_0x59d5('0x19');var _0x39dc67=_0x256d73[_0x59d5('0x1a')];var _0xdc5353=_0x250472?0x0:_0x424a99[_0x59d5('0x18')];var _0x4c93b0=_0x250472?_0x256d73['count']:_0x424a99['offset']+_0x424a99[_0x59d5('0x1b')];var _0x469701;if(_0x4c93b0>=_0x39dc67){_0x4c93b0=_0x39dc67;_0x469701=0xc8;}else{_0x469701=0xce;}_0x528279[_0x59d5('0x16')](_0x469701);return _0x528279[_0x59d5('0x1c')]('Content-Range',_0xdc5353+'-'+_0x4c93b0+'/'+_0x39dc67)['json'](_0x256d73);}return null;};}function patchUpdates(_0x337c07){return function(_0x556c32){try{jsonpatch['apply'](_0x556c32,_0x337c07,!![]);}catch(_0x49bd57){return BPromise[_0x59d5('0x1d')](_0x49bd57);}return _0x556c32[_0x59d5('0x1e')]();};}function saveUpdates(_0x29beb4,_0x4c7350){return function(_0x4cf7aa){if(_0x4cf7aa){return _0x4cf7aa[_0x59d5('0x1f')](_0x29beb4)['then'](function(_0x2ce780){return _0x2ce780;});}return null;};}function removeEntity(_0x19cb8b,_0x3c31f1){return function(_0x1c343d){if(_0x1c343d){return _0x1c343d[_0x59d5('0x20')]()[_0x59d5('0x21')](function(){_0x19cb8b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a8017,_0x5e4eeb){return function(_0x114a17){if(!_0x114a17){_0x5a8017[_0x59d5('0x15')](0x194);}return _0x114a17;};}function handleError(_0x5ab43b,_0x385e91){_0x385e91=_0x385e91||0x1f4;return function(_0x25a8df){logger[_0x59d5('0x22')](_0x25a8df[_0x59d5('0x23')]);if(_0x25a8df[_0x59d5('0x24')]){delete _0x25a8df[_0x59d5('0x24')];}_0x5ab43b['status'](_0x385e91)[_0x59d5('0x25')](_0x25a8df);};}exports[_0x59d5('0x26')]=function(_0x126c0e,_0x3a09ea){var _0x269f48={},_0x203fd7={},_0x2bc4af={'count':0x0,'rows':[]};var _0xdea05a=_[_0x59d5('0x27')](db[_0x59d5('0x28')][_0x59d5('0x29')],function(_0x5ad3a5){return{'name':_0x5ad3a5[_0x59d5('0x2a')],'type':_0x5ad3a5[_0x59d5('0x2b')]['key']};});_0x203fd7[_0x59d5('0x2c')]=_[_0x59d5('0x2d')](_[_0x59d5('0x27')](_0xdea05a,_0x59d5('0x24')),[_0x59d5('0x24')]);_0x203fd7[_0x59d5('0x2e')]=_['keys'](_0x126c0e['query']);_0x203fd7[_0x59d5('0x2f')]=_[_0x59d5('0x30')](_0x203fd7[_0x59d5('0x2c')],_0x203fd7[_0x59d5('0x2e')]);_0x269f48['attributes']=_[_0x59d5('0x30')](_0x203fd7[_0x59d5('0x2c')],qs[_0x59d5('0x31')](_0x126c0e[_0x59d5('0x2e')]['fields']));_0x269f48[_0x59d5('0x32')]=_0x269f48[_0x59d5('0x32')][_0x59d5('0x33')]?_0x269f48[_0x59d5('0x32')]:_0x203fd7[_0x59d5('0x2c')];if(!_0x126c0e[_0x59d5('0x2e')][_0x59d5('0x34')](_0x59d5('0x35'))){_0x269f48[_0x59d5('0x1b')]=qs[_0x59d5('0x1b')](_0x126c0e[_0x59d5('0x2e')][_0x59d5('0x1b')]);_0x269f48['offset']=qs['offset'](_0x126c0e[_0x59d5('0x2e')]['offset']);}_0x269f48[_0x59d5('0x36')]=qs[_0x59d5('0x37')](_0x126c0e[_0x59d5('0x2e')]['sort']);_0x269f48[_0x59d5('0x38')]=qs[_0x59d5('0x2f')](_[_0x59d5('0x39')](_0x126c0e[_0x59d5('0x2e')],_0x203fd7[_0x59d5('0x2f')]),_0xdea05a);if(_0x126c0e[_0x59d5('0x2e')]['filter']){_0x269f48[_0x59d5('0x38')]=_[_0x59d5('0x3a')](_0x269f48[_0x59d5('0x38')],{'$or':_[_0x59d5('0x27')](_0xdea05a,function(_0x585e86){if(_0x585e86[_0x59d5('0x2b')]!=='VIRTUAL'){var _0x57009b={};_0x57009b[_0x585e86['name']]={'$like':'%'+_0x126c0e[_0x59d5('0x2e')]['filter']+'%'};return _0x57009b;}})});}_0x269f48=_[_0x59d5('0x3a')]({},_0x269f48,_0x126c0e[_0x59d5('0x3b')]);var _0x1c1a03={'where':_0x269f48[_0x59d5('0x38')]};return db[_0x59d5('0x28')][_0x59d5('0x1a')](_0x1c1a03)['then'](function(_0xc5796){_0x2bc4af[_0x59d5('0x1a')]=_0xc5796;if(_0x126c0e[_0x59d5('0x2e')]['includeAll']){_0x269f48['include']=[{'all':!![]}];}return db[_0x59d5('0x28')][_0x59d5('0x3c')](_0x269f48);})[_0x59d5('0x21')](function(_0x559214){_0x2bc4af[_0x59d5('0x3d')]=_0x559214;return _0x2bc4af;})[_0x59d5('0x21')](respondWithFilteredResult(_0x3a09ea,_0x269f48))[_0x59d5('0x3e')](handleError(_0x3a09ea,null));};exports[_0x59d5('0x3f')]=function(_0x553cea,_0x2a99b3){var _0x59078d={'raw':!![],'where':{'id':_0x553cea['params']['id']}},_0x18ddad={};_0x18ddad[_0x59d5('0x2c')]=_[_0x59d5('0x40')](db[_0x59d5('0x28')][_0x59d5('0x29')]);_0x18ddad['query']=_[_0x59d5('0x40')](_0x553cea['query']);_0x18ddad[_0x59d5('0x2f')]=_[_0x59d5('0x30')](_0x18ddad[_0x59d5('0x2c')],_0x18ddad['query']);_0x59078d[_0x59d5('0x32')]=_[_0x59d5('0x30')](_0x18ddad['model'],qs[_0x59d5('0x31')](_0x553cea[_0x59d5('0x2e')]['fields']));_0x59078d[_0x59d5('0x32')]=_0x59078d['attributes'][_0x59d5('0x33')]?_0x59078d[_0x59d5('0x32')]:_0x18ddad[_0x59d5('0x2c')];if(_0x553cea[_0x59d5('0x2e')]['includeAll']){_0x59078d['include']=[{'all':!![]}];}_0x59078d=_[_0x59d5('0x3a')]({},_0x59078d,_0x553cea[_0x59d5('0x3b')]);return db['CmCustomField'][_0x59d5('0x41')](_0x59078d)[_0x59d5('0x21')](handleEntityNotFound(_0x2a99b3,null))[_0x59d5('0x21')](respondWithResult(_0x2a99b3,null))[_0x59d5('0x3e')](handleError(_0x2a99b3,null));};exports['update']=function(_0x23b6a9,_0x589c68){if(_0x23b6a9[_0x59d5('0x42')]['id']){delete _0x23b6a9[_0x59d5('0x42')]['id'];}return db[_0x59d5('0x28')][_0x59d5('0x41')]({'where':{'id':_0x23b6a9['params']['id']}})[_0x59d5('0x21')](handleEntityNotFound(_0x589c68,null))[_0x59d5('0x21')](saveUpdates(_0x23b6a9[_0x59d5('0x42')],null))[_0x59d5('0x21')](respondWithResult(_0x589c68,null))['catch'](handleError(_0x589c68,null));};exports[_0x59d5('0x20')]=function(_0x596919,_0x25768b){return db[_0x59d5('0x28')][_0x59d5('0x41')]({'where':{'id':_0x596919[_0x59d5('0x43')]['id']}})[_0x59d5('0x21')](handleEntityNotFound(_0x25768b,null))[_0x59d5('0x21')](removeEntity(_0x25768b,null))[_0x59d5('0x3e')](handleError(_0x25768b,null));};exports['create']=function(_0x20c1e9,_0x5a102b){var _0x534492;return db[_0x59d5('0x44')][_0x59d5('0x45')](function(_0x1e3b76){return db['CmCustomField']['create'](_0x20c1e9[_0x59d5('0x42')],{'transaction':_0x1e3b76})[_0x59d5('0x21')](function(_0x31f127){_0x534492=_0x31f127;var _0x17296e={'type':db[_0x59d5('0x46')][_0x59d5('0x47')],'transaction':_0x1e3b76};switch(_0x20c1e9[_0x59d5('0x42')]['type']){case _0x59d5('0x48'):_0x17296e['type']=db[_0x59d5('0x46')]['TEXT'];break;case _0x59d5('0x49'):_0x17296e['type']=db[_0x59d5('0x46')]['INTEGER'];break;case _0x59d5('0x4a'):_0x17296e[_0x59d5('0x2b')]=db['Sequelize'][_0x59d5('0x4b')];_0x17296e[_0x59d5('0x4c')]=![];break;default:}return db[_0x59d5('0x44')][_0x59d5('0x4d')][_0x59d5('0x4e')]('cm_contacts',util[_0x59d5('0x4f')](_0x59d5('0x50'),_0x534492['id']),_0x17296e);})[_0x59d5('0x21')](function(){return _0x534492;});})[_0x59d5('0x21')](respondWithResult(_0x5a102b,0xc9))[_0x59d5('0x3e')](handleError(_0x5a102b,null));};
\ No newline at end of file
+var _0xea12=['Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','key','model','differenceBy','query','filters','intersection','attributes','fields','order','sort','filter','type','VIRTUAL','options','where','includeAll','include','findAll','rows','catch','show','params','keys','length','merge','body','find','create','Sequelize','TEXT','text','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','querystring','ioredis','../../components/auth/service','../../config/logger','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xea12,0x1c5));var _0x2ea1=function(_0x24fdc7,_0x13b25d){_0x24fdc7=_0x24fdc7-0x0;var _0x321a1f=_0xea12[_0x24fdc7];return _0x321a1f;};'use strict';var emlformat=require(_0x2ea1('0x0'));var rimraf=require(_0x2ea1('0x1'));var zipdir=require(_0x2ea1('0x2'));var jsonpatch=require(_0x2ea1('0x3'));var rp=require('request-promise');var moment=require(_0x2ea1('0x4'));var BPromise=require(_0x2ea1('0x5'));var Mustache=require('mustache');var util=require(_0x2ea1('0x6'));var path=require(_0x2ea1('0x7'));var sox=require(_0x2ea1('0x8'));var csv=require(_0x2ea1('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2ea1('0xa'));var _=require(_0x2ea1('0xb'));var squel=require('squel');var crypto=require(_0x2ea1('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2ea1('0x9'));var querystring=require(_0x2ea1('0xd'));var Papa=require('papaparse');var Redis=require(_0x2ea1('0xe'));var authService=require(_0x2ea1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2ea1('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2ea1('0x11'));var db=require(_0x2ea1('0x12'))['db'];function respondWithStatusCode(_0x1afcf5,_0x13908b){_0x13908b=_0x13908b||0xcc;return function(_0x4ffdd9){if(_0x4ffdd9){return _0x1afcf5['sendStatus'](_0x13908b);}return _0x1afcf5[_0x2ea1('0x13')](_0x13908b)[_0x2ea1('0x14')]();};}function respondWithResult(_0x3ceffd,_0x1c20cb){_0x1c20cb=_0x1c20cb||0xc8;return function(_0x57de47){if(_0x57de47){return _0x3ceffd['status'](_0x1c20cb)[_0x2ea1('0x15')](_0x57de47);}};}function respondWithFilteredResult(_0x16ee6d,_0x14bfe7){return function(_0x360268){if(_0x360268){var _0x406f46=typeof _0x14bfe7[_0x2ea1('0x16')]===_0x2ea1('0x17')&&typeof _0x14bfe7[_0x2ea1('0x18')]===_0x2ea1('0x17');var _0x492362=_0x360268[_0x2ea1('0x19')];var _0x537f52=_0x406f46?0x0:_0x14bfe7[_0x2ea1('0x16')];var _0x2bc034=_0x406f46?_0x360268[_0x2ea1('0x19')]:_0x14bfe7[_0x2ea1('0x16')]+_0x14bfe7[_0x2ea1('0x18')];var _0x1279e4;if(_0x2bc034>=_0x492362){_0x2bc034=_0x492362;_0x1279e4=0xc8;}else{_0x1279e4=0xce;}_0x16ee6d[_0x2ea1('0x13')](_0x1279e4);return _0x16ee6d[_0x2ea1('0x1a')](_0x2ea1('0x1b'),_0x537f52+'-'+_0x2bc034+'/'+_0x492362)[_0x2ea1('0x15')](_0x360268);}return null;};}function patchUpdates(_0x59c1eb){return function(_0xd6e2f6){try{jsonpatch[_0x2ea1('0x1c')](_0xd6e2f6,_0x59c1eb,!![]);}catch(_0x29410b){return BPromise['reject'](_0x29410b);}return _0xd6e2f6[_0x2ea1('0x1d')]();};}function saveUpdates(_0x1d0c01,_0x1e55ec){return function(_0x1ac7ab){if(_0x1ac7ab){return _0x1ac7ab[_0x2ea1('0x1e')](_0x1d0c01)[_0x2ea1('0x1f')](function(_0x1a2c99){return _0x1a2c99;});}return null;};}function removeEntity(_0xf38bf4,_0x55d5fb){return function(_0x387fe6){if(_0x387fe6){return _0x387fe6[_0x2ea1('0x20')]()[_0x2ea1('0x1f')](function(){_0xf38bf4[_0x2ea1('0x13')](0xcc)[_0x2ea1('0x14')]();});}};}function handleEntityNotFound(_0x11710e,_0x2da44d){return function(_0x514182){if(!_0x514182){_0x11710e[_0x2ea1('0x21')](0x194);}return _0x514182;};}function handleError(_0x36aa9b,_0x149014){_0x149014=_0x149014||0x1f4;return function(_0x219b28){logger['error'](_0x219b28[_0x2ea1('0x22')]);if(_0x219b28[_0x2ea1('0x23')]){delete _0x219b28['name'];}_0x36aa9b[_0x2ea1('0x13')](_0x149014)[_0x2ea1('0x24')](_0x219b28);};}exports[_0x2ea1('0x25')]=function(_0x518faa,_0x29aa0c){var _0x350214={},_0x4e21b6={},_0x28470f={'count':0x0,'rows':[]};var _0x4bfa63=_[_0x2ea1('0x26')](db[_0x2ea1('0x27')][_0x2ea1('0x28')],function(_0x52616f){return{'name':_0x52616f[_0x2ea1('0x29')],'type':_0x52616f['type'][_0x2ea1('0x2a')]};});_0x4e21b6[_0x2ea1('0x2b')]=_[_0x2ea1('0x2c')](_[_0x2ea1('0x26')](_0x4bfa63,_0x2ea1('0x23')),[_0x2ea1('0x23')]);_0x4e21b6[_0x2ea1('0x2d')]=_['keys'](_0x518faa[_0x2ea1('0x2d')]);_0x4e21b6[_0x2ea1('0x2e')]=_[_0x2ea1('0x2f')](_0x4e21b6[_0x2ea1('0x2b')],_0x4e21b6[_0x2ea1('0x2d')]);_0x350214[_0x2ea1('0x30')]=_['intersection'](_0x4e21b6['model'],qs[_0x2ea1('0x31')](_0x518faa['query'][_0x2ea1('0x31')]));_0x350214[_0x2ea1('0x30')]=_0x350214[_0x2ea1('0x30')]['length']?_0x350214[_0x2ea1('0x30')]:_0x4e21b6['model'];if(!_0x518faa[_0x2ea1('0x2d')]['hasOwnProperty']('nolimit')){_0x350214['limit']=qs['limit'](_0x518faa[_0x2ea1('0x2d')]['limit']);_0x350214[_0x2ea1('0x16')]=qs[_0x2ea1('0x16')](_0x518faa['query'][_0x2ea1('0x16')]);}_0x350214[_0x2ea1('0x32')]=qs[_0x2ea1('0x33')](_0x518faa['query'][_0x2ea1('0x33')]);_0x350214['where']=qs[_0x2ea1('0x2e')](_['pick'](_0x518faa[_0x2ea1('0x2d')],_0x4e21b6[_0x2ea1('0x2e')]),_0x4bfa63);if(_0x518faa['query'][_0x2ea1('0x34')]){_0x350214['where']=_['merge'](_0x350214['where'],{'$or':_[_0x2ea1('0x26')](_0x4bfa63,function(_0x457948){if(_0x457948[_0x2ea1('0x35')]!==_0x2ea1('0x36')){var _0x50e159={};_0x50e159[_0x457948[_0x2ea1('0x23')]]={'$like':'%'+_0x518faa[_0x2ea1('0x2d')]['filter']+'%'};return _0x50e159;}})});}_0x350214=_['merge']({},_0x350214,_0x518faa[_0x2ea1('0x37')]);var _0x13a18d={'where':_0x350214[_0x2ea1('0x38')]};return db[_0x2ea1('0x27')][_0x2ea1('0x19')](_0x13a18d)[_0x2ea1('0x1f')](function(_0x5a9071){_0x28470f[_0x2ea1('0x19')]=_0x5a9071;if(_0x518faa[_0x2ea1('0x2d')][_0x2ea1('0x39')]){_0x350214[_0x2ea1('0x3a')]=[{'all':!![]}];}return db[_0x2ea1('0x27')][_0x2ea1('0x3b')](_0x350214);})[_0x2ea1('0x1f')](function(_0x5ed68f){_0x28470f[_0x2ea1('0x3c')]=_0x5ed68f;return _0x28470f;})['then'](respondWithFilteredResult(_0x29aa0c,_0x350214))[_0x2ea1('0x3d')](handleError(_0x29aa0c,null));};exports[_0x2ea1('0x3e')]=function(_0xca473e,_0x5b193f){var _0x44f152={'raw':!![],'where':{'id':_0xca473e[_0x2ea1('0x3f')]['id']}},_0x33ba97={};_0x33ba97['model']=_[_0x2ea1('0x40')](db['CmCustomField']['rawAttributes']);_0x33ba97['query']=_[_0x2ea1('0x40')](_0xca473e['query']);_0x33ba97[_0x2ea1('0x2e')]=_[_0x2ea1('0x2f')](_0x33ba97[_0x2ea1('0x2b')],_0x33ba97[_0x2ea1('0x2d')]);_0x44f152[_0x2ea1('0x30')]=_['intersection'](_0x33ba97['model'],qs['fields'](_0xca473e[_0x2ea1('0x2d')][_0x2ea1('0x31')]));_0x44f152['attributes']=_0x44f152['attributes'][_0x2ea1('0x41')]?_0x44f152[_0x2ea1('0x30')]:_0x33ba97[_0x2ea1('0x2b')];if(_0xca473e[_0x2ea1('0x2d')][_0x2ea1('0x39')]){_0x44f152[_0x2ea1('0x3a')]=[{'all':!![]}];}_0x44f152=_[_0x2ea1('0x42')]({},_0x44f152,_0xca473e[_0x2ea1('0x37')]);return db['CmCustomField']['find'](_0x44f152)[_0x2ea1('0x1f')](handleEntityNotFound(_0x5b193f,null))[_0x2ea1('0x1f')](respondWithResult(_0x5b193f,null))[_0x2ea1('0x3d')](handleError(_0x5b193f,null));};exports[_0x2ea1('0x1e')]=function(_0x23720a,_0x3b97c1){if(_0x23720a[_0x2ea1('0x43')]['id']){delete _0x23720a['body']['id'];}return db['CmCustomField'][_0x2ea1('0x44')]({'where':{'id':_0x23720a[_0x2ea1('0x3f')]['id']}})[_0x2ea1('0x1f')](handleEntityNotFound(_0x3b97c1,null))['then'](saveUpdates(_0x23720a['body'],null))[_0x2ea1('0x1f')](respondWithResult(_0x3b97c1,null))[_0x2ea1('0x3d')](handleError(_0x3b97c1,null));};exports[_0x2ea1('0x20')]=function(_0xbdf03d,_0x115fe1){return db[_0x2ea1('0x27')][_0x2ea1('0x44')]({'where':{'id':_0xbdf03d[_0x2ea1('0x3f')]['id']}})[_0x2ea1('0x1f')](handleEntityNotFound(_0x115fe1,null))['then'](removeEntity(_0x115fe1,null))[_0x2ea1('0x3d')](handleError(_0x115fe1,null));};exports[_0x2ea1('0x45')]=function(_0x425d01,_0x403846){var _0x51b1c8;return db['sequelize']['transaction'](function(_0xbdbfad){return db[_0x2ea1('0x27')]['create'](_0x425d01[_0x2ea1('0x43')],{'transaction':_0xbdbfad})[_0x2ea1('0x1f')](function(_0x1b007c){_0x51b1c8=_0x1b007c;var _0x3319fb={'type':db[_0x2ea1('0x46')][_0x2ea1('0x47')],'transaction':_0xbdbfad};switch(_0x425d01[_0x2ea1('0x43')][_0x2ea1('0x35')]){case _0x2ea1('0x48'):_0x3319fb['type']=db[_0x2ea1('0x46')][_0x2ea1('0x47')];break;case'number':_0x3319fb[_0x2ea1('0x35')]=db[_0x2ea1('0x46')][_0x2ea1('0x49')];break;case _0x2ea1('0x4a'):_0x3319fb[_0x2ea1('0x35')]=db[_0x2ea1('0x46')][_0x2ea1('0x4b')];_0x3319fb[_0x2ea1('0x4c')]=![];break;default:}return db['sequelize'][_0x2ea1('0x4d')]['addColumn']('cm_contacts',util[_0x2ea1('0x4e')](_0x2ea1('0x4f'),_0x51b1c8['id']),_0x3319fb);})[_0x2ea1('0x1f')](function(){return _0x51b1c8;});})[_0x2ea1('0x1f')](respondWithResult(_0x403846,0xc9))['catch'](handleError(_0x403846,null));};
\ No newline at end of file
index 7d43869..7c54834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eb8=['moment','bluebird','path','rimraf','../../config/environment','./cmCustomField.attributes','define','CmCustomField','lodash','util','api'];(function(_0x5ba233,_0x3f823e){var _0x513696=function(_0x40e261){while(--_0x40e261){_0x5ba233['push'](_0x5ba233['shift']());}};_0x513696(++_0x3f823e);}(_0x0eb8,0x1e1));var _0x80eb=function(_0x106a3d,_0x5ef167){_0x106a3d=_0x106a3d-0x0;var _0x13ff7c=_0x0eb8[_0x106a3d];return _0x13ff7c;};'use strict';var _=require(_0x80eb('0x0'));var util=require(_0x80eb('0x1'));var logger=require('../../config/logger')(_0x80eb('0x2'));var moment=require(_0x80eb('0x3'));var BPromise=require(_0x80eb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x80eb('0x5'));var rimraf=require(_0x80eb('0x6'));var config=require(_0x80eb('0x7'));var attributes=require(_0x80eb('0x8'));module['exports']=function(_0x23c5f8,_0x3ac385){return _0x23c5f8[_0x80eb('0x9')](_0x80eb('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81f1=['api','moment','bluebird','./cmCustomField.attributes','exports','define','lodash','../../config/logger'];(function(_0x3ed447,_0x4fd691){var _0x505155=function(_0x430861){while(--_0x430861){_0x3ed447['push'](_0x3ed447['shift']());}};_0x505155(++_0x4fd691);}(_0x81f1,0x1b6));var _0x181f=function(_0x2cd916,_0xfc52d4){_0x2cd916=_0x2cd916-0x0;var _0xe91b0b=_0x81f1[_0x2cd916];return _0xe91b0b;};'use strict';var _=require(_0x181f('0x0'));var util=require('util');var logger=require(_0x181f('0x1'))(_0x181f('0x2'));var moment=require(_0x181f('0x3'));var BPromise=require(_0x181f('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(_0x181f('0x5'));module[_0x181f('0x6')]=function(_0x40fdf6,_0x58b5a1){return _0x40fdf6[_0x181f('0x7')]('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2bb68d6..539ffb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d5f=['debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','info','CmCustomField,\x20%s,\x20%s'];(function(_0x28b7e3,_0x59444a){var _0x383b99=function(_0x1dc404){while(--_0x1dc404){_0x28b7e3['push'](_0x28b7e3['shift']());}};_0x383b99(++_0x59444a);}(_0x2d5f,0x1aa));var _0xf2d5=function(_0x438e18,_0x52e2c5){_0x438e18=_0x438e18-0x0;var _0x50c6ea=_0x2d5f[_0x438e18];return _0x50c6ea;};'use strict';var _=require(_0xf2d5('0x0'));var util=require(_0xf2d5('0x1'));var moment=require(_0xf2d5('0x2'));var BPromise=require(_0xf2d5('0x3'));var rs=require(_0xf2d5('0x4'));var fs=require('fs');var Redis=require(_0xf2d5('0x5'));var db=require(_0xf2d5('0x6'))['db'];var utils=require(_0xf2d5('0x7'));var logger=require(_0xf2d5('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf2d5('0x9'));var client=jayson['client'][_0xf2d5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x270095,_0x30909f,_0x5e7160){return new BPromise(function(_0x3e919c,_0x30ee5e){return client['request'](_0x270095,_0x5e7160)[_0xf2d5('0xb')](function(_0x1fbb45){logger[_0xf2d5('0xc')](_0xf2d5('0xd'),_0x30909f,'request\x20sent');logger[_0xf2d5('0xe')](_0xf2d5('0xf'),_0x30909f,_0xf2d5('0x10'),JSON['stringify'](_0x1fbb45));if(_0x1fbb45['error']){if(_0x1fbb45['error']['code']===0x1f4){logger[_0xf2d5('0x11')](_0xf2d5('0xd'),_0x30909f,_0x1fbb45[_0xf2d5('0x11')]['message']);return _0x30ee5e(_0x1fbb45[_0xf2d5('0x11')][_0xf2d5('0x12')]);}logger[_0xf2d5('0x11')](_0xf2d5('0xd'),_0x30909f,_0x1fbb45[_0xf2d5('0x11')][_0xf2d5('0x12')]);return _0x3e919c(_0x1fbb45['error'][_0xf2d5('0x12')]);}else{logger[_0xf2d5('0xc')](_0xf2d5('0xd'),_0x30909f,_0xf2d5('0x10'));_0x3e919c(_0x1fbb45[_0xf2d5('0x13')][_0xf2d5('0x12')]);}})['catch'](function(_0x40d924){logger[_0xf2d5('0x11')](_0xf2d5('0xd'),_0x30909f,_0x40d924);_0x30ee5e(_0x40d924);});});}
\ No newline at end of file
+var _0x39f8=['message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x3bb557,_0x2d4e15){var _0x5eebcb=function(_0x309c44){while(--_0x309c44){_0x3bb557['push'](_0x3bb557['shift']());}};_0x5eebcb(++_0x2d4e15);}(_0x39f8,0xb3));var _0x839f=function(_0x255467,_0x2f65c1){_0x255467=_0x255467-0x0;var _0x4ff14b=_0x39f8[_0x255467];return _0x4ff14b;};'use strict';var _=require(_0x839f('0x0'));var util=require('util');var moment=require(_0x839f('0x1'));var BPromise=require(_0x839f('0x2'));var rs=require(_0x839f('0x3'));var fs=require('fs');var Redis=require(_0x839f('0x4'));var db=require(_0x839f('0x5'))['db'];var utils=require(_0x839f('0x6'));var logger=require(_0x839f('0x7'))('rpc');var config=require(_0x839f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x839f('0x9')][_0x839f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f41c5,_0x1a5123,_0x4d4f39){return new BPromise(function(_0x977ce3,_0x11d812){return client[_0x839f('0xb')](_0x5f41c5,_0x4d4f39)[_0x839f('0xc')](function(_0xdef23f){logger[_0x839f('0xd')](_0x839f('0xe'),_0x1a5123,_0x839f('0xf'));logger[_0x839f('0x10')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x1a5123,'request\x20sent',JSON[_0x839f('0x11')](_0xdef23f));if(_0xdef23f[_0x839f('0x12')]){if(_0xdef23f[_0x839f('0x12')]['code']===0x1f4){logger[_0x839f('0x12')]('CmCustomField,\x20%s,\x20%s',_0x1a5123,_0xdef23f[_0x839f('0x12')][_0x839f('0x13')]);return _0x11d812(_0xdef23f[_0x839f('0x12')][_0x839f('0x13')]);}logger[_0x839f('0x12')](_0x839f('0xe'),_0x1a5123,_0xdef23f[_0x839f('0x12')]['message']);return _0x977ce3(_0xdef23f[_0x839f('0x12')][_0x839f('0x13')]);}else{logger[_0x839f('0xd')](_0x839f('0xe'),_0x1a5123,'request\x20sent');_0x977ce3(_0xdef23f[_0x839f('0x14')][_0x839f('0x13')]);}})[_0x839f('0x15')](function(_0x43e662){logger['error'](_0x839f('0xe'),_0x1a5123,_0x43e662);_0x11d812(_0x43e662);});});}
\ No newline at end of file
index f58a2a6..3e033d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d61=['create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCustomField.controller','get','isAuthenticated','index','/:id','post'];(function(_0x55a1cc,_0x2d72ec){var _0x44b08e=function(_0x3a1f66){while(--_0x3a1f66){_0x55a1cc['push'](_0x55a1cc['shift']());}};_0x44b08e(++_0x2d72ec);}(_0x4d61,0x147));var _0x14d6=function(_0x1585e2,_0x2b6b4d){_0x1585e2=_0x1585e2-0x0;var _0x57c15f=_0x4d61[_0x1585e2];return _0x57c15f;};'use strict';var multer=require(_0x14d6('0x0'));var util=require(_0x14d6('0x1'));var path=require(_0x14d6('0x2'));var timeout=require(_0x14d6('0x3'));var express=require(_0x14d6('0x4'));var router=express[_0x14d6('0x5')]();var fs_extra=require(_0x14d6('0x6'));var auth=require(_0x14d6('0x7'));var interaction=require(_0x14d6('0x8'));var config=require('../../config/environment');var controller=require(_0x14d6('0x9'));router[_0x14d6('0xa')]('/',auth[_0x14d6('0xb')](),controller[_0x14d6('0xc')]);router[_0x14d6('0xa')](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller['show']);router[_0x14d6('0xe')]('/',auth['isAuthenticated'](),controller[_0x14d6('0xf')]);router['put'](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller['update']);router[_0x14d6('0x10')](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x11')]);module[_0x14d6('0x12')]=router;
\ No newline at end of file
+var _0xbdfd=['delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x32f26d,_0x2c0b5d){var _0x5d9ddc=function(_0x1f0e26){while(--_0x1f0e26){_0x32f26d['push'](_0x32f26d['shift']());}};_0x5d9ddc(++_0x2c0b5d);}(_0xbdfd,0x135));var _0xdbdf=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbdfd[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xdbdf('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdbdf('0x1'));var express=require(_0xdbdf('0x2'));var router=express[_0xdbdf('0x3')]();var fs_extra=require(_0xdbdf('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdbdf('0x5'));var config=require(_0xdbdf('0x6'));var controller=require('./cmCustomField.controller');router[_0xdbdf('0x7')]('/',auth[_0xdbdf('0x8')](),controller['index']);router[_0xdbdf('0x7')](_0xdbdf('0x9'),auth[_0xdbdf('0x8')](),controller[_0xdbdf('0xa')]);router[_0xdbdf('0xb')]('/',auth['isAuthenticated'](),controller[_0xdbdf('0xc')]);router[_0xdbdf('0xd')](_0xdbdf('0x9'),auth[_0xdbdf('0x8')](),controller[_0xdbdf('0xe')]);router[_0xdbdf('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xdbdf('0x10')]);module[_0xdbdf('0x11')]=router;
\ No newline at end of file
index 2dc456c..8891fdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8042=['contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','format','INTEGER','UNSIGNED'];(function(_0x39f84e,_0x1964fa){var _0x5f10dd=function(_0x300129){while(--_0x300129){_0x39f84e['push'](_0x39f84e['shift']());}};_0x5f10dd(++_0x1964fa);}(_0x8042,0xbe));var _0x2804=function(_0x10c814,_0x2c5349){_0x10c814=_0x10c814-0x0;var _0x3620e8=_0x8042[_0x10c814];return _0x3620e8;};'use strict';var moment=require(_0x2804('0x0'));var Sequelize=require(_0x2804('0x1'));module[_0x2804('0x2')]={'phone':{'type':Sequelize[_0x2804('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x2804('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x2804('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2804('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x2804('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2804('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x2804('0x6')](0x2)[_0x2804('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x2804('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x2804('0x6')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x2804('0x6')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x2804('0x6')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x2804('0x8')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x2804('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2804('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2804('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2804('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2804('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaed7=['exports','STRING','BOOLEAN','DATE','INTEGER','UNSIGNED','contactListQueue','moment'];(function(_0x34f85e,_0x1104d3){var _0x471ff1=function(_0x52cc71){while(--_0x52cc71){_0x34f85e['push'](_0x34f85e['shift']());}};_0x471ff1(++_0x1104d3);}(_0xaed7,0x67));var _0x7aed=function(_0x5abf17,_0x4579c3){_0x5abf17=_0x5abf17-0x0;var _0xd7f784=_0xaed7[_0x5abf17];return _0xd7f784;};'use strict';var moment=require(_0x7aed('0x0'));var Sequelize=require('sequelize');module[_0x7aed('0x1')]={'phone':{'type':Sequelize[_0x7aed('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x7aed('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x7aed('0x4')],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7aed('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x7aed('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7aed('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7aed('0x4')]},'priority':{'type':Sequelize[_0x7aed('0x5')](0x2)[_0x7aed('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x7aed('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x7aed('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x7aed('0x5')],'unique':'contactListQueue'},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x7aed('0x5')],'unique':_0x7aed('0x7')},'CampaignId':{'type':Sequelize[_0x7aed('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x7aed('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index db6a6b0..9346a66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6a4=['calleridnum','phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','CmContact','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','user','prev','isEmpty','body','hopperIds','priority','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','UPDATE','Contact','CmCompany','Company','CmList','List','VoiceQueue','Queue','dialActive','getOpenContacts','isNumber','entity\x20not\x20found','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','undefined','limit','count','offset','status','Content-Range','json','reject','update','destroy','then','end','error','stack','name','send','CmHopper','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','concat','$and','$or','$gt','$gte','$lt','$not','$between','$notBetween','$in','$notIn','$notLike','$notILike','$like','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','find','create','describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','campaign','membername','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x37a82f,_0x4b124c){var _0xd23a3=function(_0x3b2307){while(--_0x3b2307){_0x37a82f['push'](_0x37a82f['shift']());}};_0xd23a3(++_0x4b124c);}(_0xd6a4,0xbe));var _0x4d6a=function(_0x7d1f85,_0xd3a7dc){_0x7d1f85=_0x7d1f85-0x0;var _0x564d2b=_0xd6a4[_0x7d1f85];return _0x564d2b;};'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('request-promise');var moment=require(_0x4d6a('0x0'));var BPromise=require(_0x4d6a('0x1'));var Mustache=require(_0x4d6a('0x2'));var util=require(_0x4d6a('0x3'));var path=require(_0x4d6a('0x4'));var sox=require('sox');var csv=require(_0x4d6a('0x5'));var ejs=require(_0x4d6a('0x6'));var fs=require('fs');var fs_extra=require(_0x4d6a('0x7'));var _=require(_0x4d6a('0x8'));var squel=require(_0x4d6a('0x9'));var crypto=require(_0x4d6a('0xa'));var jsforce=require(_0x4d6a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4d6a('0xc'));var Redis=require(_0x4d6a('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4d6a('0xe'));var hardwareService=require(_0x4d6a('0xf'));var logger=require(_0x4d6a('0x10'))(_0x4d6a('0x11'));var utils=require(_0x4d6a('0x12'));var config=require(_0x4d6a('0x13'));var licenseUtil=require(_0x4d6a('0x14'));var db=require(_0x4d6a('0x15'))['db'];function respondWithStatusCode(_0x3af01b,_0x326547){_0x326547=_0x326547||0xcc;return function(_0x597c79){if(_0x597c79){return _0x3af01b[_0x4d6a('0x16')](_0x326547);}return _0x3af01b['status'](_0x326547)['end']();};}function respondWithResult(_0x756a7d,_0x3d991e){_0x3d991e=_0x3d991e||0xc8;return function(_0x8a926){if(_0x8a926){return _0x756a7d['status'](_0x3d991e)['json'](_0x8a926);}};}function respondWithFilteredResult(_0x51a768,_0x3762f7){return function(_0x5ddddb){if(_0x5ddddb){var _0x3e8f28=typeof _0x3762f7['offset']===_0x4d6a('0x17')&&typeof _0x3762f7[_0x4d6a('0x18')]==='undefined';var _0x49c79f=_0x5ddddb[_0x4d6a('0x19')];var _0x1700e2=_0x3e8f28?0x0:_0x3762f7[_0x4d6a('0x1a')];var _0x499419=_0x3e8f28?_0x5ddddb['count']:_0x3762f7['offset']+_0x3762f7[_0x4d6a('0x18')];var _0x251c8a;if(_0x499419>=_0x49c79f){_0x499419=_0x49c79f;_0x251c8a=0xc8;}else{_0x251c8a=0xce;}_0x51a768[_0x4d6a('0x1b')](_0x251c8a);return _0x51a768['set'](_0x4d6a('0x1c'),_0x1700e2+'-'+_0x499419+'/'+_0x49c79f)[_0x4d6a('0x1d')](_0x5ddddb);}return null;};}function patchUpdates(_0x256dc9){return function(_0x352d88){try{jsonpatch['apply'](_0x352d88,_0x256dc9,!![]);}catch(_0x19c090){return BPromise[_0x4d6a('0x1e')](_0x19c090);}return _0x352d88['save']();};}function saveUpdates(_0x52339b,_0x27a9de){return function(_0x21785f){if(_0x21785f){return _0x21785f[_0x4d6a('0x1f')](_0x52339b)['then'](function(_0x129041){return _0x129041;});}return null;};}function removeEntity(_0x4e65b7,_0x1ebb52){return function(_0x2bed1d){if(_0x2bed1d){return _0x2bed1d[_0x4d6a('0x20')]()[_0x4d6a('0x21')](function(){_0x4e65b7[_0x4d6a('0x1b')](0xcc)[_0x4d6a('0x22')]();});}};}function handleEntityNotFound(_0x1326bc,_0x398aff){return function(_0x6bfa4c){if(!_0x6bfa4c){_0x1326bc[_0x4d6a('0x16')](0x194);}return _0x6bfa4c;};}function handleError(_0x5181de,_0x5dc7b3){_0x5dc7b3=_0x5dc7b3||0x1f4;return function(_0x3e391c){logger[_0x4d6a('0x23')](_0x3e391c[_0x4d6a('0x24')]);if(_0x3e391c[_0x4d6a('0x25')]){delete _0x3e391c[_0x4d6a('0x25')];}_0x5181de['status'](_0x5dc7b3)[_0x4d6a('0x26')](_0x3e391c);};}exports['index']=function(_0x14f435,_0x15db82){var _0x3bdf58={},_0x236539={},_0x462d21={'count':0x0,'rows':[]};var _0x43c7d9=_['map'](db[_0x4d6a('0x27')][_0x4d6a('0x28')],function(_0x4bcf7d){return{'name':_0x4bcf7d[_0x4d6a('0x29')],'type':_0x4bcf7d[_0x4d6a('0x2a')][_0x4d6a('0x2b')]};});_0x236539['model']=_[_0x4d6a('0x2c')](_0x43c7d9,'name');_0x236539['query']=_[_0x4d6a('0x2d')](_0x14f435[_0x4d6a('0x2e')]);_0x236539[_0x4d6a('0x2f')]=_[_0x4d6a('0x30')](_0x236539[_0x4d6a('0x31')],_0x236539['query']);_0x236539[_0x4d6a('0x2f')]=_[_0x4d6a('0x32')](_0x236539[_0x4d6a('0x2f')],[_0x4d6a('0x33'),_0x4d6a('0x34'),_0x4d6a('0x35'),_0x4d6a('0x36'),_0x4d6a('0x37'),'$lte','$ne','$eq',_0x4d6a('0x38'),_0x4d6a('0x39'),_0x4d6a('0x3a'),_0x4d6a('0x3b'),_0x4d6a('0x3c'),'$like',_0x4d6a('0x3d'),'$iLike',_0x4d6a('0x3e'),_0x4d6a('0x3f'),'$overlap',_0x4d6a('0x40'),_0x4d6a('0x41'),_0x4d6a('0x42')]);_0x3bdf58[_0x4d6a('0x43')]=_[_0x4d6a('0x30')](_0x236539[_0x4d6a('0x31')],qs[_0x4d6a('0x44')](_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x44')]));_0x3bdf58[_0x4d6a('0x43')]=_0x3bdf58[_0x4d6a('0x43')][_0x4d6a('0x45')]?_0x3bdf58['attributes']:_0x236539['model'];if(!_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x46')]('nolimit')){_0x3bdf58[_0x4d6a('0x18')]=qs['limit'](_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x18')]);_0x3bdf58[_0x4d6a('0x1a')]=qs[_0x4d6a('0x1a')](_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x1a')]);}_0x3bdf58[_0x4d6a('0x47')]=qs['sort'](_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x48')]);_0x3bdf58[_0x4d6a('0x49')]=qs[_0x4d6a('0x2f')](_[_0x4d6a('0x4a')](_0x14f435[_0x4d6a('0x2e')],_0x236539[_0x4d6a('0x2f')]),_0x43c7d9);if(_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x4b')]){_0x3bdf58[_0x4d6a('0x49')]=_[_0x4d6a('0x4c')](_0x3bdf58['where'],{'$or':_[_0x4d6a('0x2c')](_0x43c7d9,function(_0x5812c0){if(_0x5812c0[_0x4d6a('0x2a')]!=='VIRTUAL'){var _0x1efa95={};_0x1efa95[_0x5812c0['name']]={'$like':'%'+_0x14f435[_0x4d6a('0x2e')]['filter']+'%'};return _0x1efa95;}})});}_0x3bdf58=_['merge']({},_0x3bdf58,_0x14f435[_0x4d6a('0x4d')]);var _0x1eb580={'where':_0x3bdf58[_0x4d6a('0x49')]};return db[_0x4d6a('0x27')][_0x4d6a('0x19')](_0x1eb580)[_0x4d6a('0x21')](function(_0x3abf67){_0x462d21[_0x4d6a('0x19')]=_0x3abf67;if(_0x14f435[_0x4d6a('0x2e')][_0x4d6a('0x4e')]){_0x3bdf58[_0x4d6a('0x4f')]=[{'all':!![]}];}return db[_0x4d6a('0x27')]['findAll'](_0x3bdf58);})[_0x4d6a('0x21')](function(_0x1ed207){_0x462d21[_0x4d6a('0x50')]=_0x1ed207;return _0x462d21;})[_0x4d6a('0x21')](respondWithFilteredResult(_0x15db82,_0x3bdf58))[_0x4d6a('0x51')](handleError(_0x15db82,null));};exports[_0x4d6a('0x52')]=function(_0x31a7f6,_0x42084b){var _0x36ca22={'raw':!![],'where':{'id':_0x31a7f6[_0x4d6a('0x53')]['id']}},_0xf7fdd4={};_0xf7fdd4[_0x4d6a('0x31')]=_[_0x4d6a('0x2d')](db[_0x4d6a('0x27')]['rawAttributes']);_0xf7fdd4[_0x4d6a('0x2e')]=_[_0x4d6a('0x2d')](_0x31a7f6[_0x4d6a('0x2e')]);_0xf7fdd4[_0x4d6a('0x2f')]=_[_0x4d6a('0x30')](_0xf7fdd4[_0x4d6a('0x31')],_0xf7fdd4['query']);_0x36ca22[_0x4d6a('0x43')]=_[_0x4d6a('0x30')](_0xf7fdd4['model'],qs[_0x4d6a('0x44')](_0x31a7f6[_0x4d6a('0x2e')][_0x4d6a('0x44')]));_0x36ca22[_0x4d6a('0x43')]=_0x36ca22[_0x4d6a('0x43')][_0x4d6a('0x45')]?_0x36ca22[_0x4d6a('0x43')]:_0xf7fdd4['model'];if(_0x31a7f6['query']['includeAll']){_0x36ca22[_0x4d6a('0x4f')]=[{'all':!![]}];}_0x36ca22=_[_0x4d6a('0x4c')]({},_0x36ca22,_0x31a7f6[_0x4d6a('0x4d')]);return db[_0x4d6a('0x27')][_0x4d6a('0x54')](_0x36ca22)[_0x4d6a('0x21')](handleEntityNotFound(_0x42084b,null))['then'](respondWithResult(_0x42084b,null))[_0x4d6a('0x51')](handleError(_0x42084b,null));};exports[_0x4d6a('0x55')]=function(_0x506dc8,_0x2a96aa){return db[_0x4d6a('0x27')][_0x4d6a('0x55')](_0x506dc8['body'],{})[_0x4d6a('0x21')](respondWithResult(_0x2a96aa,0xc9))[_0x4d6a('0x51')](handleError(_0x2a96aa,null));};exports[_0x4d6a('0x1f')]=function(_0x4d966b,_0x18a232){if(_0x4d966b['body']['id']){delete _0x4d966b['body']['id'];}return db['CmHopper'][_0x4d6a('0x54')]({'where':{'id':_0x4d966b[_0x4d6a('0x53')]['id']}})[_0x4d6a('0x21')](handleEntityNotFound(_0x18a232,null))[_0x4d6a('0x21')](saveUpdates(_0x4d966b['body'],null))[_0x4d6a('0x21')](respondWithResult(_0x18a232,null))[_0x4d6a('0x51')](handleError(_0x18a232,null));};exports[_0x4d6a('0x56')]=function(_0x170f10,_0x3e14d7){return db[_0x4d6a('0x27')]['describe']()[_0x4d6a('0x21')](respondWithResult(_0x3e14d7,null))[_0x4d6a('0x51')](handleError(_0x3e14d7,null));};exports[_0x4d6a('0x20')]=function(_0xeecd7e,_0x4c4133){var _0x15cd14;return db[_0x4d6a('0x27')][_0x4d6a('0x54')]({'where':{'id':_0xeecd7e['params']['id']}})[_0x4d6a('0x21')](handleEntityNotFound(_0x4c4133,null))[_0x4d6a('0x21')](function(_0x5d74ef){if(_0x5d74ef){return _0x5d74ef[_0x4d6a('0x20')]()[_0x4d6a('0x21')](function(_0x5de0ef){return _0x5de0ef;});}})[_0x4d6a('0x21')](function(_0x27f004){_0x15cd14=_0x27f004;if(_0x27f004){if(_0x27f004[_0x4d6a('0x57')]||_0x27f004[_0x4d6a('0x58')]){return db[_0x27f004[_0x4d6a('0x57')]?'VoiceQueue':_0x4d6a('0x59')]['find']({'where':{'id':_0x27f004['VoiceQueueId']?_0x27f004[_0x4d6a('0x57')]:_0x27f004['CampaignId']},'attributes':['id',_0x4d6a('0x25')],'raw':!![]});}}})[_0x4d6a('0x21')](function(_0x440083){var _0xb28459={};if(_0x440083){_[_0x4d6a('0x4c')](_0xb28459,_[_0x4d6a('0x5a')](_0x15cd14[_0x4d6a('0x5b')],[_0x4d6a('0x5c'),'updatedAt','id']));_0xb28459[_0x4d6a('0x5d')]=0x15;_0xb28459[_0x4d6a('0x5e')]=_0x4d6a('0x5f');_0xb28459[_0x4d6a('0x60')]=_0x440083[_0x4d6a('0x25')];_0xb28459[_0x4d6a('0x61')]=_0xeecd7e['user'][_0x4d6a('0x25')];_0xb28459[_0x4d6a('0x62')]=_0xeecd7e['user']['id'];_0xb28459[_0x4d6a('0x5f')]=!![];_0xb28459[_0x4d6a('0x63')]=moment()[_0x4d6a('0x64')](_0x4d6a('0x65'));_0xb28459[_0x4d6a('0x66')]=_0x15cd14[_0x4d6a('0x67')];_0xb28459[_0x4d6a('0x68')]=_0x15cd14[_0x4d6a('0x57')]?_0x4d6a('0x69'):_0x4d6a('0x6a');return db['CmContact'][_0x4d6a('0x54')]({'where':{'id':_0xb28459[_0x4d6a('0x6b')]},'attributes':[_0x4d6a('0x6c'),_0x4d6a('0x6d')]})[_0x4d6a('0x21')](function(_0x11e5e8){if(!_[_0x4d6a('0x6e')](_0x4c4133)&&!_['isNil'](_0x11e5e8[_0x4d6a('0x6c')])){_0xb28459[_0x4d6a('0x6f')]=_0x11e5e8[_0x4d6a('0x6c')];if(!_[_0x4d6a('0x6e')](_0x11e5e8[_0x4d6a('0x6d')])){_0xb28459[_0x4d6a('0x6f')]+='\x20'+_0x11e5e8['lastName'];}}})[_0x4d6a('0x70')](function(){return db[_0x4d6a('0x71')][_0x4d6a('0x55')](_0xb28459);});}})[_0x4d6a('0x21')](function(){return _0x4c4133['status'](0xcc)[_0x4d6a('0x22')]();})[_0x4d6a('0x51')](handleError(_0x4c4133,null));};exports[_0x4d6a('0x72')]=function(_0x5101ee,_0x28c375,_0x31e042){var _0x13b57a=[];return db[_0x4d6a('0x73')][_0x4d6a('0x56')]()['then'](function(_0x308fba){_0x13b57a=_['keys'](_0x308fba);return _0x5101ee['user'][_0x4d6a('0x74')]({'where':{'type':_0x4d6a('0x75'),'dialActive':!![],'dialMethod':_0x4d6a('0x76')},'attributes':['id',_0x4d6a('0x77')],'raw':!![]});})[_0x4d6a('0x21')](function(_0x4b66c7){if(_0x4b66c7&&_0x4b66c7[_0x4d6a('0x45')]){return db[_0x4d6a('0x78')][_0x4d6a('0x79')](function(_0x5b49f5){var _0x18ad85={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x4d6a('0x65'))},'VoiceQueueId':{'$in':_[_0x4d6a('0x2c')](_0x4b66c7,'id')},'$or':[{'UserId':null},{'UserId':_0x5101ee[_0x4d6a('0x7a')]['id']}]};var _0x9a3ca3=[];if(_0x5101ee['body']['direction']&&_0x5101ee['body']['direction']===_0x4d6a('0x7b')){if(!_[_0x4d6a('0x7c')](_0x5101ee[_0x4d6a('0x7d')]['hopperIds'])){_0x18ad85['id']={'$in':_0x5101ee['body'][_0x4d6a('0x7e')]};}_0x9a3ca3=[[_0x4d6a('0x7f'),'ASC'],[_0x4d6a('0x80'),_0x4b66c7[0x0][_0x4d6a('0x77')]==='ASC'?_0x4d6a('0x81'):'ASC'],db[_0x4d6a('0x78')][_0x4d6a('0x82')](_0x4d6a('0x83')),['id',_0x4d6a('0x81')]];}else{if(!_['isEmpty'](_0x5101ee['body']['hopperIds'])){_0x18ad85['id']={'$notIn':_0x5101ee[_0x4d6a('0x7d')][_0x4d6a('0x7e')]};}_0x9a3ca3=[['priority',_0x4d6a('0x81')],['scheduledAt',_0x4b66c7[0x0][_0x4d6a('0x77')]],db[_0x4d6a('0x78')]['literal'](_0x4d6a('0x84')),['id','ASC']];}return db['CmHopper'][_0x4d6a('0x85')]({'attributes':['id','scheduledat'],'where':_0x18ad85,'order':_0x9a3ca3,'transaction':_0x5b49f5,'lock':_0x5b49f5['LOCK'][_0x4d6a('0x86')],'include':[{'model':db[_0x4d6a('0x73')],'as':_0x4d6a('0x87'),'attributes':_0x13b57a,'include':[{'model':db[_0x4d6a('0x88')],'as':_0x4d6a('0x89'),'attributes':['id',_0x4d6a('0x25')]}]},{'model':db[_0x4d6a('0x8a')],'as':_0x4d6a('0x8b'),'attributes':['id',_0x4d6a('0x25')]},{'model':db[_0x4d6a('0x8c')],'as':_0x4d6a('0x8d'),'attributes':['id',_0x4d6a('0x25'),_0x4d6a('0x8e')]}]})[_0x4d6a('0x21')](function(_0x271e8b){if(_0x271e8b){return _0x271e8b['update']({'UserId':_0x5101ee[_0x4d6a('0x7a')]['id']},{'transaction':_0x5b49f5});}});});}})[_0x4d6a('0x21')](handleEntityNotFound(_0x28c375,null))[_0x4d6a('0x21')](respondWithResult(_0x28c375,null))[_0x4d6a('0x51')](handleError(_0x28c375,null));};exports[_0x4d6a('0x8f')]=function(_0x29b279,_0x3744ec,_0x3288fa){return _0x29b279[_0x4d6a('0x7a')][_0x4d6a('0x74')]({'where':{'type':_0x4d6a('0x75'),'dialActive':!![],'dialMethod':_0x4d6a('0x76')},'attributes':['id'],'raw':!![]})[_0x4d6a('0x21')](function(_0xdbdf1e){if(_0xdbdf1e&&_0xdbdf1e[_0x4d6a('0x45')]){return db[_0x4d6a('0x27')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x4d6a('0x64')](_0x4d6a('0x65'))},'VoiceQueueId':{'$in':_[_0x4d6a('0x2c')](_0xdbdf1e,'id')},'$or':[{'UserId':null},{'UserId':_0x29b279['user']['id']}]}});}return 0x0;})[_0x4d6a('0x21')](function(_0x390f3c){if(!_[_0x4d6a('0x6e')](_0x390f3c)&&_[_0x4d6a('0x90')](_0x390f3c)){return _0x3744ec[_0x4d6a('0x1b')](0xc8)[_0x4d6a('0x1d')]({'contacts':_0x390f3c});}else{logger[_0x4d6a('0x23')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x4d6a('0x8f'),0x194,_0x4d6a('0x91'));_0x3744ec['sendStatus'](0x194);}})[_0x4d6a('0x51')](handleError(_0x3744ec,null));};
\ No newline at end of file
+var _0xa346=['updatedAt','statedesc','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getVoiceQueues','preview','dialOrderByScheduledAt','transaction','direction','prev','isEmpty','priority','ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','hopperIds','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','List','VoiceQueue','Queue','dialActive','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','util','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/environment','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','destroy','then','sendStatus','name','index','CmHopper','fieldName','type','key','query','keys','filters','intersection','concat','$and','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$contains','$contained','$any','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','merge','map','VIRTUAL','options','where','include','rows','catch','show','params','rawAttributes','includeAll','create','body','find','describe','VoiceQueueId','Campaign','omit'];(function(_0x223f21,_0x3218ab){var _0x42c96c=function(_0xf8fdc5){while(--_0xf8fdc5){_0x223f21['push'](_0x223f21['shift']());}};_0x42c96c(++_0x3218ab);}(_0xa346,0xc1));var _0x6a34=function(_0x503306,_0x356f2f){_0x503306=_0x503306-0x0;var _0x44a99d=_0xa346[_0x503306];return _0x44a99d;};'use strict';var emlformat=require(_0x6a34('0x0'));var rimraf=require(_0x6a34('0x1'));var zipdir=require(_0x6a34('0x2'));var jsonpatch=require(_0x6a34('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6a34('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x6a34('0x5'));var ejs=require(_0x6a34('0x6'));var fs=require('fs');var fs_extra=require(_0x6a34('0x7'));var _=require(_0x6a34('0x8'));var squel=require(_0x6a34('0x9'));var crypto=require(_0x6a34('0xa'));var jsforce=require(_0x6a34('0xb'));var deskjs=require(_0x6a34('0xc'));var toCsv=require(_0x6a34('0x5'));var querystring=require('querystring');var Papa=require(_0x6a34('0xd'));var Redis=require(_0x6a34('0xe'));var authService=require(_0x6a34('0xf'));var qs=require(_0x6a34('0x10'));var as=require(_0x6a34('0x11'));var hardwareService=require(_0x6a34('0x12'));var logger=require(_0x6a34('0x13'))(_0x6a34('0x14'));var utils=require(_0x6a34('0x15'));var config=require(_0x6a34('0x16'));var licenseUtil=require(_0x6a34('0x17'));var db=require(_0x6a34('0x18'))['db'];function respondWithStatusCode(_0x2b3f2c,_0x4319f8){_0x4319f8=_0x4319f8||0xcc;return function(_0x231710){if(_0x231710){return _0x2b3f2c['sendStatus'](_0x4319f8);}return _0x2b3f2c['status'](_0x4319f8)[_0x6a34('0x19')]();};}function respondWithResult(_0x5269d2,_0x1444fb){_0x1444fb=_0x1444fb||0xc8;return function(_0x8e7262){if(_0x8e7262){return _0x5269d2[_0x6a34('0x1a')](_0x1444fb)[_0x6a34('0x1b')](_0x8e7262);}};}function respondWithFilteredResult(_0x4c658f,_0x165646){return function(_0x143e32){if(_0x143e32){var _0x12f942=typeof _0x165646[_0x6a34('0x1c')]==='undefined'&&typeof _0x165646[_0x6a34('0x1d')]===_0x6a34('0x1e');var _0x9e618e=_0x143e32[_0x6a34('0x1f')];var _0xe3d890=_0x12f942?0x0:_0x165646['offset'];var _0x503537=_0x12f942?_0x143e32[_0x6a34('0x1f')]:_0x165646[_0x6a34('0x1c')]+_0x165646['limit'];var _0x4c872c;if(_0x503537>=_0x9e618e){_0x503537=_0x9e618e;_0x4c872c=0xc8;}else{_0x4c872c=0xce;}_0x4c658f[_0x6a34('0x1a')](_0x4c872c);return _0x4c658f['set'](_0x6a34('0x20'),_0xe3d890+'-'+_0x503537+'/'+_0x9e618e)[_0x6a34('0x1b')](_0x143e32);}return null;};}function patchUpdates(_0x59419c){return function(_0x48d71f){try{jsonpatch['apply'](_0x48d71f,_0x59419c,!![]);}catch(_0x21e5ce){return BPromise[_0x6a34('0x21')](_0x21e5ce);}return _0x48d71f[_0x6a34('0x22')]();};}function saveUpdates(_0x2aa2e1,_0x5d6ccb){return function(_0xfd5526){if(_0xfd5526){return _0xfd5526[_0x6a34('0x23')](_0x2aa2e1)['then'](function(_0xf5e360){return _0xf5e360;});}return null;};}function removeEntity(_0x37590b,_0x45f0ad){return function(_0x1d78bc){if(_0x1d78bc){return _0x1d78bc[_0x6a34('0x24')]()[_0x6a34('0x25')](function(){_0x37590b['status'](0xcc)[_0x6a34('0x19')]();});}};}function handleEntityNotFound(_0x43790a,_0x113f67){return function(_0x39c7f7){if(!_0x39c7f7){_0x43790a[_0x6a34('0x26')](0x194);}return _0x39c7f7;};}function handleError(_0x454e4a,_0x31e297){_0x31e297=_0x31e297||0x1f4;return function(_0x1a2cc5){logger['error'](_0x1a2cc5['stack']);if(_0x1a2cc5[_0x6a34('0x27')]){delete _0x1a2cc5[_0x6a34('0x27')];}_0x454e4a['status'](_0x31e297)['send'](_0x1a2cc5);};}exports[_0x6a34('0x28')]=function(_0x46223f,_0x1e3731){var _0x254b01={},_0x356443={},_0x4524f3={'count':0x0,'rows':[]};var _0x477cda=_['map'](db[_0x6a34('0x29')]['rawAttributes'],function(_0x56e678){return{'name':_0x56e678[_0x6a34('0x2a')],'type':_0x56e678[_0x6a34('0x2b')][_0x6a34('0x2c')]};});_0x356443['model']=_['map'](_0x477cda,_0x6a34('0x27'));_0x356443[_0x6a34('0x2d')]=_[_0x6a34('0x2e')](_0x46223f[_0x6a34('0x2d')]);_0x356443[_0x6a34('0x2f')]=_[_0x6a34('0x30')](_0x356443['model'],_0x356443[_0x6a34('0x2d')]);_0x356443['filters']=_[_0x6a34('0x31')](_0x356443[_0x6a34('0x2f')],[_0x6a34('0x32'),'$or',_0x6a34('0x33'),_0x6a34('0x34'),_0x6a34('0x35'),_0x6a34('0x36'),_0x6a34('0x37'),_0x6a34('0x38'),_0x6a34('0x39'),_0x6a34('0x3a'),'$notBetween',_0x6a34('0x3b'),_0x6a34('0x3c'),_0x6a34('0x3d'),_0x6a34('0x3e'),_0x6a34('0x3f'),'$notILike',_0x6a34('0x3d'),'$overlap',_0x6a34('0x40'),_0x6a34('0x41'),_0x6a34('0x42')]);_0x254b01['attributes']=_[_0x6a34('0x30')](_0x356443[_0x6a34('0x43')],qs[_0x6a34('0x44')](_0x46223f['query'][_0x6a34('0x44')]));_0x254b01['attributes']=_0x254b01[_0x6a34('0x45')][_0x6a34('0x46')]?_0x254b01[_0x6a34('0x45')]:_0x356443[_0x6a34('0x43')];if(!_0x46223f[_0x6a34('0x2d')][_0x6a34('0x47')]('nolimit')){_0x254b01[_0x6a34('0x1d')]=qs[_0x6a34('0x1d')](_0x46223f['query'][_0x6a34('0x1d')]);_0x254b01[_0x6a34('0x1c')]=qs['offset'](_0x46223f['query'][_0x6a34('0x1c')]);}_0x254b01[_0x6a34('0x48')]=qs['sort'](_0x46223f[_0x6a34('0x2d')][_0x6a34('0x49')]);_0x254b01['where']=qs[_0x6a34('0x2f')](_[_0x6a34('0x4a')](_0x46223f[_0x6a34('0x2d')],_0x356443[_0x6a34('0x2f')]),_0x477cda);if(_0x46223f[_0x6a34('0x2d')][_0x6a34('0x4b')]){_0x254b01['where']=_[_0x6a34('0x4c')](_0x254b01['where'],{'$or':_[_0x6a34('0x4d')](_0x477cda,function(_0x191dc0){if(_0x191dc0['type']!==_0x6a34('0x4e')){var _0x208c7c={};_0x208c7c[_0x191dc0[_0x6a34('0x27')]]={'$like':'%'+_0x46223f[_0x6a34('0x2d')][_0x6a34('0x4b')]+'%'};return _0x208c7c;}})});}_0x254b01=_['merge']({},_0x254b01,_0x46223f[_0x6a34('0x4f')]);var _0x55e2de={'where':_0x254b01[_0x6a34('0x50')]};return db[_0x6a34('0x29')][_0x6a34('0x1f')](_0x55e2de)[_0x6a34('0x25')](function(_0x1e128a){_0x4524f3[_0x6a34('0x1f')]=_0x1e128a;if(_0x46223f['query']['includeAll']){_0x254b01[_0x6a34('0x51')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x254b01);})['then'](function(_0xdbfd2f){_0x4524f3[_0x6a34('0x52')]=_0xdbfd2f;return _0x4524f3;})['then'](respondWithFilteredResult(_0x1e3731,_0x254b01))[_0x6a34('0x53')](handleError(_0x1e3731,null));};exports[_0x6a34('0x54')]=function(_0x5d04e8,_0x302707){var _0x3e9869={'raw':!![],'where':{'id':_0x5d04e8[_0x6a34('0x55')]['id']}},_0x5dda47={};_0x5dda47['model']=_['keys'](db['CmHopper'][_0x6a34('0x56')]);_0x5dda47[_0x6a34('0x2d')]=_[_0x6a34('0x2e')](_0x5d04e8[_0x6a34('0x2d')]);_0x5dda47[_0x6a34('0x2f')]=_[_0x6a34('0x30')](_0x5dda47[_0x6a34('0x43')],_0x5dda47[_0x6a34('0x2d')]);_0x3e9869[_0x6a34('0x45')]=_['intersection'](_0x5dda47[_0x6a34('0x43')],qs[_0x6a34('0x44')](_0x5d04e8[_0x6a34('0x2d')]['fields']));_0x3e9869[_0x6a34('0x45')]=_0x3e9869['attributes'][_0x6a34('0x46')]?_0x3e9869[_0x6a34('0x45')]:_0x5dda47['model'];if(_0x5d04e8[_0x6a34('0x2d')][_0x6a34('0x57')]){_0x3e9869[_0x6a34('0x51')]=[{'all':!![]}];}_0x3e9869=_[_0x6a34('0x4c')]({},_0x3e9869,_0x5d04e8[_0x6a34('0x4f')]);return db[_0x6a34('0x29')]['find'](_0x3e9869)[_0x6a34('0x25')](handleEntityNotFound(_0x302707,null))['then'](respondWithResult(_0x302707,null))[_0x6a34('0x53')](handleError(_0x302707,null));};exports[_0x6a34('0x58')]=function(_0x7d4a78,_0x4710cf){return db[_0x6a34('0x29')][_0x6a34('0x58')](_0x7d4a78[_0x6a34('0x59')],{})[_0x6a34('0x25')](respondWithResult(_0x4710cf,0xc9))[_0x6a34('0x53')](handleError(_0x4710cf,null));};exports['update']=function(_0x4be1d7,_0x34b02b){if(_0x4be1d7[_0x6a34('0x59')]['id']){delete _0x4be1d7[_0x6a34('0x59')]['id'];}return db[_0x6a34('0x29')][_0x6a34('0x5a')]({'where':{'id':_0x4be1d7[_0x6a34('0x55')]['id']}})[_0x6a34('0x25')](handleEntityNotFound(_0x34b02b,null))[_0x6a34('0x25')](saveUpdates(_0x4be1d7[_0x6a34('0x59')],null))[_0x6a34('0x25')](respondWithResult(_0x34b02b,null))[_0x6a34('0x53')](handleError(_0x34b02b,null));};exports[_0x6a34('0x5b')]=function(_0x59be2e,_0x4e04fe){return db['CmHopper']['describe']()[_0x6a34('0x25')](respondWithResult(_0x4e04fe,null))[_0x6a34('0x53')](handleError(_0x4e04fe,null));};exports[_0x6a34('0x24')]=function(_0x372a23,_0x584f9f){var _0x2faf63;return db[_0x6a34('0x29')][_0x6a34('0x5a')]({'where':{'id':_0x372a23[_0x6a34('0x55')]['id']}})[_0x6a34('0x25')](handleEntityNotFound(_0x584f9f,null))[_0x6a34('0x25')](function(_0x19ff86){if(_0x19ff86){return _0x19ff86['destroy']()[_0x6a34('0x25')](function(_0x169f7a){return _0x169f7a;});}})[_0x6a34('0x25')](function(_0x30b82c){_0x2faf63=_0x30b82c;if(_0x30b82c){if(_0x30b82c['VoiceQueueId']||_0x30b82c['CampaignId']){return db[_0x30b82c[_0x6a34('0x5c')]?'VoiceQueue':_0x6a34('0x5d')][_0x6a34('0x5a')]({'where':{'id':_0x30b82c[_0x6a34('0x5c')]?_0x30b82c[_0x6a34('0x5c')]:_0x30b82c['CampaignId']},'attributes':['id',_0x6a34('0x27')],'raw':!![]});}}})['then'](function(_0x505c5e){var _0x3c6bef={};if(_0x505c5e){_[_0x6a34('0x4c')](_0x3c6bef,_[_0x6a34('0x5e')](_0x2faf63['dataValues'],['createdAt',_0x6a34('0x5f'),'id']));_0x3c6bef['state']=0x15;_0x3c6bef[_0x6a34('0x60')]=_0x6a34('0x61');_0x3c6bef[_0x6a34('0x62')]=_0x505c5e['name'];_0x3c6bef[_0x6a34('0x63')]=_0x372a23[_0x6a34('0x64')]['name'];_0x3c6bef['UserId']=_0x372a23[_0x6a34('0x64')]['id'];_0x3c6bef[_0x6a34('0x61')]=!![];_0x3c6bef[_0x6a34('0x65')]=moment()[_0x6a34('0x66')](_0x6a34('0x67'));_0x3c6bef[_0x6a34('0x68')]=_0x2faf63[_0x6a34('0x69')];_0x3c6bef['campaigntype']=_0x2faf63['VoiceQueueId']?_0x6a34('0x6a'):_0x6a34('0x6b');return db[_0x6a34('0x6c')]['find']({'where':{'id':_0x3c6bef[_0x6a34('0x6d')]},'attributes':[_0x6a34('0x6e'),_0x6a34('0x6f')]})[_0x6a34('0x25')](function(_0x2536c0){if(!_['isNil'](_0x584f9f)&&!_[_0x6a34('0x70')](_0x2536c0[_0x6a34('0x6e')])){_0x3c6bef[_0x6a34('0x71')]=_0x2536c0[_0x6a34('0x6e')];if(!_['isNil'](_0x2536c0[_0x6a34('0x6f')])){_0x3c6bef['calleridname']+='\x20'+_0x2536c0['lastName'];}}})[_0x6a34('0x72')](function(){return db[_0x6a34('0x73')][_0x6a34('0x58')](_0x3c6bef);});}})[_0x6a34('0x25')](function(){return _0x584f9f['status'](0xcc)[_0x6a34('0x19')]();})[_0x6a34('0x53')](handleError(_0x584f9f,null));};exports['getPreview']=function(_0x1d8c7b,_0xbc7ac,_0x114b59){var _0x4e702b=[];return db[_0x6a34('0x6c')][_0x6a34('0x5b')]()[_0x6a34('0x25')](function(_0x3ce037){_0x4e702b=_[_0x6a34('0x2e')](_0x3ce037);return _0x1d8c7b['user'][_0x6a34('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x6a34('0x75')},'attributes':['id',_0x6a34('0x76')],'raw':!![]});})[_0x6a34('0x25')](function(_0x1d773d){if(_0x1d773d&&_0x1d773d[_0x6a34('0x46')]){return db['sequelize'][_0x6a34('0x77')](function(_0x1095ea){var _0x157b60={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6a34('0x66')](_0x6a34('0x67'))},'VoiceQueueId':{'$in':_[_0x6a34('0x4d')](_0x1d773d,'id')},'$or':[{'UserId':null},{'UserId':_0x1d8c7b['user']['id']}]};var _0x2684be=[];if(_0x1d8c7b[_0x6a34('0x59')][_0x6a34('0x78')]&&_0x1d8c7b['body'][_0x6a34('0x78')]===_0x6a34('0x79')){if(!_[_0x6a34('0x7a')](_0x1d8c7b[_0x6a34('0x59')]['hopperIds'])){_0x157b60['id']={'$in':_0x1d8c7b[_0x6a34('0x59')]['hopperIds']};}_0x2684be=[[_0x6a34('0x7b'),_0x6a34('0x7c')],['scheduledAt',_0x1d773d[0x0][_0x6a34('0x76')]==='ASC'?'DESC':'ASC'],db['sequelize'][_0x6a34('0x7d')](_0x6a34('0x7e')),['id',_0x6a34('0x7f')]];}else{if(!_['isEmpty'](_0x1d8c7b['body'][_0x6a34('0x80')])){_0x157b60['id']={'$notIn':_0x1d8c7b[_0x6a34('0x59')]['hopperIds']};}_0x2684be=[[_0x6a34('0x7b'),_0x6a34('0x7f')],['scheduledAt',_0x1d773d[0x0]['dialOrderByScheduledAt']],db['sequelize'][_0x6a34('0x7d')](_0x6a34('0x81')),['id',_0x6a34('0x7c')]];}return db[_0x6a34('0x29')][_0x6a34('0x82')]({'attributes':['id',_0x6a34('0x83')],'where':_0x157b60,'order':_0x2684be,'transaction':_0x1095ea,'lock':_0x1095ea[_0x6a34('0x84')][_0x6a34('0x85')],'include':[{'model':db[_0x6a34('0x6c')],'as':_0x6a34('0x86'),'attributes':_0x4e702b,'include':[{'model':db['CmCompany'],'as':_0x6a34('0x87'),'attributes':['id',_0x6a34('0x27')]}]},{'model':db['CmList'],'as':_0x6a34('0x88'),'attributes':['id',_0x6a34('0x27')]},{'model':db[_0x6a34('0x89')],'as':_0x6a34('0x8a'),'attributes':['id',_0x6a34('0x27'),_0x6a34('0x8b')]}]})['then'](function(_0x1062c2){if(_0x1062c2){return _0x1062c2[_0x6a34('0x23')]({'UserId':_0x1d8c7b[_0x6a34('0x64')]['id']},{'transaction':_0x1095ea});}});});}})[_0x6a34('0x25')](handleEntityNotFound(_0xbc7ac,null))[_0x6a34('0x25')](respondWithResult(_0xbc7ac,null))['catch'](handleError(_0xbc7ac,null));};exports['getOpenContacts']=function(_0x2e2024,_0x41cf43,_0x89c3c4){return _0x2e2024[_0x6a34('0x64')][_0x6a34('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x6a34('0x75')},'attributes':['id'],'raw':!![]})[_0x6a34('0x25')](function(_0x5831a7){if(_0x5831a7&&_0x5831a7[_0x6a34('0x46')]){return db[_0x6a34('0x29')][_0x6a34('0x1f')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6a34('0x66')](_0x6a34('0x67'))},'VoiceQueueId':{'$in':_[_0x6a34('0x4d')](_0x5831a7,'id')},'$or':[{'UserId':null},{'UserId':_0x2e2024['user']['id']}]}});}return 0x0;})[_0x6a34('0x25')](function(_0x83f60d){if(!_[_0x6a34('0x70')](_0x83f60d)&&_[_0x6a34('0x8c')](_0x83f60d)){return _0x41cf43[_0x6a34('0x1a')](0xc8)[_0x6a34('0x1b')]({'contacts':_0x83f60d});}else{logger['error'](_0x6a34('0x8d'),_0x6a34('0x8e'),0x194,_0x6a34('0x8f'));_0x41cf43[_0x6a34('0x26')](0x194);}})['catch'](handleError(_0x41cf43,null));};
\ No newline at end of file
index cbe22d9..1844cb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['priority','lodash','../../config/logger','moment','bluebird','request-promise','path','exports','define','CmHopper','cm_hopper','scheduledat','phone'];(function(_0x47388b,_0x493a4d){var _0xf6182d=function(_0x273b91){while(--_0x273b91){_0x47388b['push'](_0x47388b['shift']());}};_0xf6182d(++_0x493a4d);}(_0xafc4,0x69));var _0x4afc=function(_0x207b59,_0x5121b1){_0x207b59=_0x207b59-0x0;var _0x1ead42=_0xafc4[_0x207b59];return _0x1ead42;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var logger=require(_0x4afc('0x1'))('api');var moment=require(_0x4afc('0x2'));var BPromise=require(_0x4afc('0x3'));var rp=require(_0x4afc('0x4'));var fs=require('fs');var path=require(_0x4afc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module[_0x4afc('0x6')]=function(_0x471d45,_0x16953b){return _0x471d45[_0x4afc('0x7')](_0x4afc('0x8'),attributes,{'tableName':_0x4afc('0x9'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x4afc('0xa')]},{'name':_0x4afc('0xb'),'fields':[_0x4afc('0xb')]},{'name':_0x4afc('0xc'),'fields':[_0x4afc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfdbd=['path','rimraf','./cmHopper.attributes','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1a52ce,_0x3aa269){var _0x194416=function(_0x5de050){while(--_0x5de050){_0x1a52ce['push'](_0x1a52ce['shift']());}};_0x194416(++_0x3aa269);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x4e7abc,_0x2aeca1){_0x4e7abc=_0x4e7abc-0x0;var _0x428796=_0xfdbd[_0x4e7abc];return _0x428796;};'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'));module['exports']=function(_0x453ef6,_0x41bd5e){return _0x453ef6['define']('CmHopper',attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xdfdb('0xa'),'fields':[_0xdfdb('0xa')]},{'name':'phone','fields':[_0xdfdb('0xb')]},{'name':_0xdfdb('0xc'),'fields':[_0xdfdb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 52be494..b5af973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb985=['UpdateCmHopper','update','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','LOCK','UPDATE','Contact','Agent','name','length','UserId','push','includes','all','MoveContactManagedDialer','transaction','CmHopperFinal','create','CountReScheduled','literal','`scheduledat`\x20>=\x20','\x22%s\x22','format','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','order','GetCmHopperPreview','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','catch','ShowCmHopper','CreateCmHopper'];(function(_0x410ffe,_0xb72f82){var _0x56ee05=function(_0x404930){while(--_0x404930){_0x410ffe['push'](_0x410ffe['shift']());}};_0x56ee05(++_0xb72f82);}(_0xb985,0xa8));var _0x5b98=function(_0x424357,_0x9ebe3e){_0x424357=_0x424357-0x0;var _0x29c68e=_0xb985[_0x424357];return _0x29c68e;};'use strict';var _=require(_0x5b98('0x0'));var util=require(_0x5b98('0x1'));var moment=require(_0x5b98('0x2'));var BPromise=require('bluebird');var rs=require(_0x5b98('0x3'));var fs=require('fs');var Redis=require(_0x5b98('0x4'));var db=require(_0x5b98('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5b98('0x6'));var config=require(_0x5b98('0x7'));var jayson=require(_0x5b98('0x8'));var client=jayson['client'][_0x5b98('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c4524,_0x4b00a7,_0x7ec0b1){return new BPromise(function(_0x2f95c5,_0x5aa06d){return client[_0x5b98('0xa')](_0x4c4524,_0x7ec0b1)['then'](function(_0x1bc159){logger[_0x5b98('0xb')](_0x5b98('0xc'),_0x4b00a7,_0x5b98('0xd'));logger[_0x5b98('0xe')](_0x5b98('0xf'),_0x4b00a7,'request\x20sent',JSON[_0x5b98('0x10')](_0x1bc159));if(_0x1bc159['error']){if(_0x1bc159[_0x5b98('0x11')][_0x5b98('0x12')]===0x1f4){logger[_0x5b98('0x11')](_0x5b98('0xc'),_0x4b00a7,_0x1bc159['error'][_0x5b98('0x13')]);return _0x5aa06d(_0x1bc159[_0x5b98('0x11')][_0x5b98('0x13')]);}logger[_0x5b98('0x11')](_0x5b98('0xc'),_0x4b00a7,_0x1bc159[_0x5b98('0x11')][_0x5b98('0x13')]);return _0x2f95c5(_0x1bc159[_0x5b98('0x11')]['message']);}else{logger[_0x5b98('0xb')](_0x5b98('0xc'),_0x4b00a7,_0x5b98('0xd'));_0x2f95c5(_0x1bc159[_0x5b98('0x14')][_0x5b98('0x13')]);}})['catch'](function(_0x23f0b0){logger[_0x5b98('0x11')](_0x5b98('0xc'),_0x4b00a7,_0x23f0b0);_0x5aa06d(_0x23f0b0);});});}exports[_0x5b98('0x15')]=function(_0x171f4b){var _0x2348dd=this;return new Promise(function(_0x1fcb2d,_0x10740a){return db[_0x5b98('0x16')][_0x5b98('0x17')]({'raw':_0x171f4b[_0x5b98('0x18')]?_0x171f4b[_0x5b98('0x18')][_0x5b98('0x19')]===undefined?!![]:![]:!![],'where':_0x171f4b['options']?_0x171f4b[_0x5b98('0x18')][_0x5b98('0x1a')]||null:null,'attributes':_0x171f4b[_0x5b98('0x18')]?_0x171f4b[_0x5b98('0x18')][_0x5b98('0x1b')]||null:null,'limit':_0x171f4b[_0x5b98('0x18')]?_0x171f4b['options'][_0x5b98('0x1c')]||null:null,'include':_0x171f4b[_0x5b98('0x18')]?_0x171f4b[_0x5b98('0x18')][_0x5b98('0x1d')]?_[_0x5b98('0x1e')](_0x171f4b[_0x5b98('0x18')][_0x5b98('0x1d')],function(_0x558151){return{'model':db[_0x558151['model']],'as':_0x558151['as'],'attributes':_0x558151[_0x5b98('0x1b')],'include':_0x558151[_0x5b98('0x1d')]?_[_0x5b98('0x1e')](_0x558151['include'],function(_0x634887){return{'model':db[_0x634887['model']],'as':_0x634887['as'],'attributes':_0x634887['attributes'],'include':_0x634887[_0x5b98('0x1d')]?_[_0x5b98('0x1e')](_0x634887[_0x5b98('0x1d')],function(_0x21e039){return{'model':db[_0x21e039[_0x5b98('0x1f')]],'as':_0x21e039['as'],'attributes':_0x21e039['attributes']};}):[]};}):[]};}):[]:[]})[_0x5b98('0x20')](function(_0xad7749){logger['info']('GetCmHopper',_0x171f4b);logger[_0x5b98('0xe')](_0x5b98('0x15'),_0x171f4b,JSON['stringify'](_0xad7749));_0x1fcb2d(_0xad7749);})[_0x5b98('0x21')](function(_0x4b527c){logger[_0x5b98('0x11')](_0x5b98('0x15'),_0x4b527c[_0x5b98('0x13')],_0x171f4b);_0x10740a(_0x2348dd['error'](0x1f4,_0x4b527c[_0x5b98('0x13')]));});});};exports['ShowCmHopper']=function(_0x1779c4){var _0x40e154=this;return new Promise(function(_0x4a575d,_0x2e1d2e){return db[_0x5b98('0x16')]['find']({'raw':_0x1779c4[_0x5b98('0x18')]?_0x1779c4[_0x5b98('0x18')][_0x5b98('0x19')]===undefined?!![]:![]:!![],'where':_0x1779c4[_0x5b98('0x18')]?_0x1779c4['options'][_0x5b98('0x1a')]||null:null,'attributes':_0x1779c4['options']?_0x1779c4[_0x5b98('0x18')][_0x5b98('0x1b')]||null:null,'include':_0x1779c4[_0x5b98('0x18')]?_0x1779c4[_0x5b98('0x18')][_0x5b98('0x1d')]?_[_0x5b98('0x1e')](_0x1779c4[_0x5b98('0x18')][_0x5b98('0x1d')],function(_0x3abf73){return{'model':db[_0x3abf73[_0x5b98('0x1f')]],'as':_0x3abf73['as'],'attributes':_0x3abf73['attributes'],'include':_0x3abf73[_0x5b98('0x1d')]?_['map'](_0x3abf73[_0x5b98('0x1d')],function(_0x467cc6){return{'model':db[_0x467cc6[_0x5b98('0x1f')]],'as':_0x467cc6['as'],'attributes':_0x467cc6[_0x5b98('0x1b')],'include':_0x467cc6['include']?_[_0x5b98('0x1e')](_0x467cc6[_0x5b98('0x1d')],function(_0x1214bf){return{'model':db[_0x1214bf[_0x5b98('0x1f')]],'as':_0x1214bf['as'],'attributes':_0x1214bf[_0x5b98('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x5b98('0x20')](function(_0x1cdd9f){logger[_0x5b98('0xb')](_0x5b98('0x22'),_0x1779c4);logger[_0x5b98('0xe')](_0x5b98('0x22'),_0x1779c4,JSON['stringify'](_0x1cdd9f));_0x4a575d(_0x1cdd9f);})['catch'](function(_0x50cea4){logger[_0x5b98('0x11')]('ShowCmHopper',_0x50cea4[_0x5b98('0x13')],_0x1779c4);_0x2e1d2e(_0x40e154[_0x5b98('0x11')](0x1f4,_0x50cea4['message']));});});};exports[_0x5b98('0x23')]=function(_0x2ad6e2){var _0x484443=this;return new Promise(function(_0x5529c7,_0x985c5b){return db[_0x5b98('0x16')]['create'](_0x2ad6e2['body'],{'raw':_0x2ad6e2[_0x5b98('0x18')]?_0x2ad6e2[_0x5b98('0x18')][_0x5b98('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x3536bb){logger['info'](_0x5b98('0x23'),_0x2ad6e2);logger['debug'](_0x5b98('0x23'),_0x2ad6e2,JSON[_0x5b98('0x10')](_0x3536bb));_0x5529c7(_0x3536bb);})[_0x5b98('0x21')](function(_0x4ee1e2){logger[_0x5b98('0x11')]('CreateCmHopper',_0x4ee1e2['message'],_0x2ad6e2);_0x985c5b(_0x484443[_0x5b98('0x11')](0x1f4,_0x4ee1e2['message']));});});};exports[_0x5b98('0x24')]=function(_0x2967ca){var _0x4bbd6f=this;return new Promise(function(_0x499243,_0x4f6276){return db[_0x5b98('0x16')][_0x5b98('0x25')](_0x2967ca['body'],{'raw':_0x2967ca[_0x5b98('0x18')]?_0x2967ca[_0x5b98('0x18')][_0x5b98('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2967ca[_0x5b98('0x18')]?_0x2967ca[_0x5b98('0x18')]['where']||null:null,'attributes':_0x2967ca[_0x5b98('0x18')]?_0x2967ca[_0x5b98('0x18')][_0x5b98('0x1b')]||null:null,'limit':_0x2967ca[_0x5b98('0x18')]?_0x2967ca[_0x5b98('0x18')][_0x5b98('0x1c')]||null:null})[_0x5b98('0x20')](function(_0x3dc07e){logger['info'](_0x5b98('0x24'),_0x2967ca);logger[_0x5b98('0xe')]('UpdateCmHopper',_0x2967ca,JSON['stringify'](_0x3dc07e));_0x499243(_0x3dc07e);})[_0x5b98('0x21')](function(_0x5b98d2){logger[_0x5b98('0x11')](_0x5b98('0x24'),_0x5b98d2['message'],_0x2967ca);_0x4f6276(_0x4bbd6f['error'](0x1f4,_0x5b98d2[_0x5b98('0x13')]));});});};exports[_0x5b98('0x26')]=function(_0x1b9078){var _0x178a41=this;return new Promise(function(_0x405bfe,_0x47e118){return db['CmHopper'][_0x5b98('0x27')]({'where':_0x1b9078[_0x5b98('0x18')]?_0x1b9078[_0x5b98('0x18')][_0x5b98('0x1a')]||null:null})['then'](function(_0x5123ef){logger[_0x5b98('0xb')](_0x5b98('0x26'),_0x1b9078);logger['debug'](_0x5b98('0x26'),_0x1b9078,JSON['stringify'](_0x5123ef));_0x405bfe(_0x5123ef);})[_0x5b98('0x21')](function(_0x5c3e6d){logger[_0x5b98('0x11')](_0x5b98('0x26'),_0x5c3e6d[_0x5b98('0x13')],_0x1b9078);_0x47e118(_0x178a41[_0x5b98('0x11')](0x1f4,_0x5c3e6d[_0x5b98('0x13')]));});});};exports[_0x5b98('0x28')]=function(_0x52df7b){var _0x381dd1=this;return new Promise(function(_0x29c12b,_0xea3601){return db[_0x5b98('0x29')][_0x5b98('0x2a')]()['then'](function(_0x29f68c){return db[_0x5b98('0x2b')]['transaction'](function(_0x1d898f){return db[_0x5b98('0x16')][_0x5b98('0x17')]({'where':_0x52df7b[_0x5b98('0x18')]?_0x52df7b[_0x5b98('0x18')]['where']||null:null,'attributes':_0x52df7b['options']?_0x52df7b['options'][_0x5b98('0x1b')]||null:null,'limit':_0x52df7b[_0x5b98('0x18')]?_0x52df7b[_0x5b98('0x18')][_0x5b98('0x1c')]||null:null,'order':_0x52df7b[_0x5b98('0x18')]?_0x52df7b['options']['order']||null:null,'transaction':_0x1d898f,'lock':_0x1d898f[_0x5b98('0x2c')][_0x5b98('0x2d')],'include':[{'model':db[_0x5b98('0x29')],'as':_0x5b98('0x2e'),'attributes':_['keys'](_0x29f68c)},{'model':db['User'],'as':_0x5b98('0x2f'),'attributes':['id',_0x5b98('0x30'),'voicePause']}]})['then'](function(_0x437172){var _0x8383e1=[];var _0x31709d=[];for(var _0x5b0e4f=0x0;_0x5b0e4f<_0x437172[_0x5b98('0x31')];_0x5b0e4f+=0x1){var _0x32a148=_0x437172[_0x5b0e4f][_0x5b98('0x32')];if(_0x32a148===null){_0x8383e1[_0x5b98('0x33')](_0x437172[_0x5b0e4f][_0x5b98('0x25')](_0x52df7b['body'],{'transaction':_0x1d898f}));}else if(!_0x31709d[_0x5b98('0x34')](_0x32a148)){_0x31709d[_0x5b98('0x33')](_0x32a148);_0x8383e1['push'](_0x437172[_0x5b0e4f][_0x5b98('0x25')](_0x52df7b['body'],{'transaction':_0x1d898f}));}}return BPromise[_0x5b98('0x35')](_0x8383e1);});})['then'](function(_0x1e19b6){logger[_0x5b98('0xb')](_0x5b98('0x28'),_0x52df7b);logger[_0x5b98('0xe')](_0x5b98('0x28'),_0x52df7b,JSON[_0x5b98('0x10')](_0x1e19b6));_0x29c12b(_0x1e19b6);})['catch'](function(_0x450ba7){logger[_0x5b98('0x11')](_0x5b98('0x28'),_0x450ba7[_0x5b98('0x13')],_0x52df7b);_0xea3601(_0x381dd1[_0x5b98('0x11')](0x1f4,_0x450ba7['message']));});});});};exports[_0x5b98('0x36')]=function(_0x26e602){var _0x5cddfa=this;return new Promise(function(_0x4e9b53,_0x55d292){return db[_0x5b98('0x2b')][_0x5b98('0x37')](function(_0x2c7bda){return db[_0x5b98('0x38')][_0x5b98('0x39')](_0x26e602['body'],{'raw':_0x26e602['options']?_0x26e602[_0x5b98('0x18')][_0x5b98('0x19')]===undefined?!![]:![]:!![],'transaction':_0x2c7bda})[_0x5b98('0x20')](function(){return db['CmHopper'][_0x5b98('0x27')]({'where':_0x26e602[_0x5b98('0x18')]?_0x26e602['options']['where']||null:null,'transaction':_0x2c7bda});});})['then'](function(_0x17801e){logger[_0x5b98('0xb')]('MoveContactManagedDialer',_0x26e602);logger[_0x5b98('0xe')](_0x5b98('0x36'),_0x26e602,JSON[_0x5b98('0x10')](_0x17801e));_0x4e9b53(_0x17801e);})[_0x5b98('0x21')](function(_0xa21831){logger[_0x5b98('0x11')](_0x5b98('0x36'),_0xa21831['message'],_0x26e602);_0x55d292(_0x5cddfa[_0x5b98('0x11')](0x1f4,_0xa21831[_0x5b98('0x13')]));});});};exports[_0x5b98('0x3a')]=function(_0x3a28b7){var _0x5ef0ec=this;return new Promise(function(_0x1205ea,_0x58f806){return db[_0x5b98('0x16')][_0x5b98('0x17')]({'raw':_0x3a28b7['options']?_0x3a28b7['options'][_0x5b98('0x19')]===undefined?!![]:![]:!![],'where':_0x3a28b7['options']?_0x3a28b7[_0x5b98('0x18')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x5b98('0x3b')](_0x5b98('0x3c')+util['format'](_0x5b98('0x3d'),moment()[_0x5b98('0x3e')]('YYYY-MM-DD\x20HH:mm:ss'))+_0x5b98('0x3f')))),_0x5b98('0x40')]]})[_0x5b98('0x20')](function(_0x59f4e5){logger['info']('CountReScheduled',_0x3a28b7);logger[_0x5b98('0xe')](_0x5b98('0x3a'),_0x3a28b7,JSON[_0x5b98('0x10')](_0x59f4e5));_0x1205ea(_0x59f4e5);})[_0x5b98('0x21')](function(_0x468dcd){logger['error'](_0x5b98('0x3a'),_0x468dcd[_0x5b98('0x13')],_0x3a28b7);_0x58f806(_0x5ef0ec[_0x5b98('0x11')](0x1f4,_0x468dcd[_0x5b98('0x13')]));});});};exports[_0x5b98('0x41')]=function(_0x4159e9){var _0x3ff0c5=this;return new Promise(function(_0x14e821,_0x2325f5){return db['CmContact'][_0x5b98('0x2a')]()['then'](function(_0x57c705){return db['sequelize'][_0x5b98('0x37')](function(_0x2a4c1d){return db[_0x5b98('0x16')][_0x5b98('0x17')]({'where':_0x4159e9[_0x5b98('0x18')]?_0x4159e9[_0x5b98('0x18')]['where']||null:null,'attributes':_0x4159e9['options']?_0x4159e9[_0x5b98('0x18')][_0x5b98('0x1b')]||null:null,'limit':0x1,'order':_0x4159e9[_0x5b98('0x18')]?_0x4159e9[_0x5b98('0x18')][_0x5b98('0x42')]||null:null,'group':db['CmHopper'][_0x5b98('0x32')],'transaction':_0x2a4c1d,'lock':_0x2a4c1d['LOCK'][_0x5b98('0x2d')],'include':_0x4159e9[_0x5b98('0x18')]?_0x4159e9[_0x5b98('0x18')]['include']?_[_0x5b98('0x1e')](_0x4159e9[_0x5b98('0x18')][_0x5b98('0x1d')],function(_0x20ea01){return{'model':db[_0x20ea01[_0x5b98('0x1f')]],'as':_0x20ea01['as'],'attributes':_0x20ea01['attributes'],'include':_0x20ea01[_0x5b98('0x1d')]?_['map'](_0x20ea01[_0x5b98('0x1d')],function(_0x392f5c){return{'model':db[_0x392f5c[_0x5b98('0x1f')]],'as':_0x392f5c['as'],'attributes':_0x392f5c[_0x5b98('0x1b')],'include':_0x392f5c[_0x5b98('0x1d')]?_[_0x5b98('0x1e')](_0x392f5c['include'],function(_0x2fb6b7){return{'model':db[_0x2fb6b7[_0x5b98('0x1f')]],'as':_0x2fb6b7['as'],'attributes':_0x2fb6b7['attributes']};}):[]};}):[]};}):[]:[]})[_0x5b98('0x20')](function(_0x473684){var _0x383907=[];for(var _0x816b51=0x0;_0x816b51<_0x473684[_0x5b98('0x31')];_0x816b51+=0x1){_0x383907[_0x5b98('0x33')](_0x473684[_0x816b51]['update'](_0x4159e9['body'],{'transaction':_0x2a4c1d}));}return BPromise[_0x5b98('0x35')](_0x383907);});})[_0x5b98('0x20')](function(_0x1443c1){logger['info']('GetContactRecallMe',_0x4159e9);logger[_0x5b98('0xe')](_0x5b98('0x41'),_0x4159e9,JSON[_0x5b98('0x10')](_0x1443c1));_0x14e821(_0x1443c1);})[_0x5b98('0x21')](function(_0x3873fb){logger[_0x5b98('0x11')](_0x5b98('0x41'),_0x3873fb[_0x5b98('0x13')],_0x4159e9);_0x2325f5(_0x3ff0c5['error'](0x1f4,_0x3873fb[_0x5b98('0x13')]));});});});};exports[_0x5b98('0x43')]=function(_0x2e22fc){var _0x48def1=this;return new Promise(function(_0x15ea60,_0x3abe28){db[_0x5b98('0x29')][_0x5b98('0x2a')]()[_0x5b98('0x20')](function(_0x33bfe5){return db[_0x5b98('0x16')][_0x5b98('0x17')]({'raw':_0x2e22fc[_0x5b98('0x18')]?_0x2e22fc['options'][_0x5b98('0x19')]===undefined?!![]:![]:!![],'where':_0x2e22fc[_0x5b98('0x18')]?_0x2e22fc[_0x5b98('0x18')][_0x5b98('0x1a')]||null:null,'attributes':_0x2e22fc['options']?_0x2e22fc[_0x5b98('0x18')]['attributes']||null:null,'limit':_0x2e22fc[_0x5b98('0x18')]?_0x2e22fc['options']['limit']||null:null,'include':_0x2e22fc[_0x5b98('0x18')]?_0x2e22fc[_0x5b98('0x18')][_0x5b98('0x1d')]?_[_0x5b98('0x1e')](_0x2e22fc[_0x5b98('0x18')][_0x5b98('0x1d')],function(_0x123dd3){return{'model':db[_0x123dd3[_0x5b98('0x1f')]],'as':_0x123dd3['as'],'attributes':_0x123dd3['as']===_0x5b98('0x2e')?_['keys'](_0x33bfe5):_0x123dd3[_0x5b98('0x1b')],'include':_0x123dd3['include']?_['map'](_0x123dd3[_0x5b98('0x1d')],function(_0x55413e){return{'model':db[_0x55413e['model']],'as':_0x55413e['as'],'attributes':_0x55413e[_0x5b98('0x1b')],'include':_0x55413e['include']?_[_0x5b98('0x1e')](_0x55413e[_0x5b98('0x1d')],function(_0x280bf1){return{'model':db[_0x280bf1[_0x5b98('0x1f')]],'as':_0x280bf1['as'],'attributes':_0x280bf1[_0x5b98('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x286388){logger[_0x5b98('0xb')](_0x5b98('0x15'),_0x2e22fc);logger[_0x5b98('0xe')](_0x5b98('0x15'),_0x2e22fc,JSON[_0x5b98('0x10')](_0x286388));_0x15ea60(_0x286388);})[_0x5b98('0x21')](function(_0x2eee18){logger['error'](_0x5b98('0x15'),_0x2eee18[_0x5b98('0x13')],_0x2e22fc);_0x3abe28(_0x48def1[_0x5b98('0x11')](0x1f4,_0x2eee18[_0x5b98('0x13')]));});});});};
\ No newline at end of file
+var _0x6a99=['includes','all','MoveContactManagedDialer','findAll','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','CountReScheduled','GetContactRecallMe','GetCmHopperPreview','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','options','where','map','include','attributes','model','GetCmHopper','ShowCmHopper','CmHopper','find','raw','CreateCmHopper','create','body','UpdateCmHopper','update','limit','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize','transaction','order','LOCK','UPDATE','CmContact','Contact','keys','Agent','name','voicePause','UserId','push'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x6a99,0xd8));var _0x96a9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6a99[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x96a9('0x0'));var moment=require(_0x96a9('0x1'));var BPromise=require(_0x96a9('0x2'));var rs=require(_0x96a9('0x3'));var fs=require('fs');var Redis=require(_0x96a9('0x4'));var db=require(_0x96a9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x96a9('0x6'))(_0x96a9('0x7'));var config=require(_0x96a9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x96a9('0x9')][_0x96a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1dc18c,_0x41a662,_0x5a5b24){return new BPromise(function(_0x578588,_0x5c896b){return client[_0x96a9('0xb')](_0x1dc18c,_0x5a5b24)[_0x96a9('0xc')](function(_0x28dcc1){logger[_0x96a9('0xd')](_0x96a9('0xe'),_0x41a662,_0x96a9('0xf'));logger[_0x96a9('0x10')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x41a662,_0x96a9('0xf'),JSON[_0x96a9('0x11')](_0x28dcc1));if(_0x28dcc1['error']){if(_0x28dcc1[_0x96a9('0x12')][_0x96a9('0x13')]===0x1f4){logger[_0x96a9('0x12')](_0x96a9('0xe'),_0x41a662,_0x28dcc1[_0x96a9('0x12')][_0x96a9('0x14')]);return _0x5c896b(_0x28dcc1[_0x96a9('0x12')][_0x96a9('0x14')]);}logger[_0x96a9('0x12')](_0x96a9('0xe'),_0x41a662,_0x28dcc1[_0x96a9('0x12')]['message']);return _0x578588(_0x28dcc1[_0x96a9('0x12')][_0x96a9('0x14')]);}else{logger['info']('CmHopper,\x20%s,\x20%s',_0x41a662,_0x96a9('0xf'));_0x578588(_0x28dcc1['result'][_0x96a9('0x14')]);}})[_0x96a9('0x15')](function(_0x5ee0e4){logger['error']('CmHopper,\x20%s,\x20%s',_0x41a662,_0x5ee0e4);_0x5c896b(_0x5ee0e4);});});}exports['GetCmHopper']=function(_0x3f5b60){var _0x10453a=this;return new Promise(function(_0x5eef05,_0x277bf2){return db['CmHopper']['findAll']({'raw':_0x3f5b60[_0x96a9('0x16')]?_0x3f5b60[_0x96a9('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x3f5b60[_0x96a9('0x16')]?_0x3f5b60[_0x96a9('0x16')][_0x96a9('0x17')]||null:null,'attributes':_0x3f5b60['options']?_0x3f5b60['options']['attributes']||null:null,'limit':_0x3f5b60['options']?_0x3f5b60[_0x96a9('0x16')]['limit']||null:null,'include':_0x3f5b60['options']?_0x3f5b60['options']['include']?_[_0x96a9('0x18')](_0x3f5b60[_0x96a9('0x16')][_0x96a9('0x19')],function(_0x487c03){return{'model':db[_0x487c03['model']],'as':_0x487c03['as'],'attributes':_0x487c03[_0x96a9('0x1a')],'include':_0x487c03['include']?_[_0x96a9('0x18')](_0x487c03['include'],function(_0x3d41d7){return{'model':db[_0x3d41d7[_0x96a9('0x1b')]],'as':_0x3d41d7['as'],'attributes':_0x3d41d7[_0x96a9('0x1a')],'include':_0x3d41d7[_0x96a9('0x19')]?_[_0x96a9('0x18')](_0x3d41d7[_0x96a9('0x19')],function(_0x3bc7b6){return{'model':db[_0x3bc7b6[_0x96a9('0x1b')]],'as':_0x3bc7b6['as'],'attributes':_0x3bc7b6[_0x96a9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x96a9('0xc')](function(_0x489d28){logger['info']('GetCmHopper',_0x3f5b60);logger[_0x96a9('0x10')]('GetCmHopper',_0x3f5b60,JSON['stringify'](_0x489d28));_0x5eef05(_0x489d28);})[_0x96a9('0x15')](function(_0x5ef7af){logger[_0x96a9('0x12')](_0x96a9('0x1c'),_0x5ef7af[_0x96a9('0x14')],_0x3f5b60);_0x277bf2(_0x10453a[_0x96a9('0x12')](0x1f4,_0x5ef7af[_0x96a9('0x14')]));});});};exports[_0x96a9('0x1d')]=function(_0x52ce68){var _0x3abd89=this;return new Promise(function(_0x640c1d,_0x384042){return db[_0x96a9('0x1e')][_0x96a9('0x1f')]({'raw':_0x52ce68['options']?_0x52ce68[_0x96a9('0x16')][_0x96a9('0x20')]===undefined?!![]:![]:!![],'where':_0x52ce68['options']?_0x52ce68['options'][_0x96a9('0x17')]||null:null,'attributes':_0x52ce68['options']?_0x52ce68[_0x96a9('0x16')]['attributes']||null:null,'include':_0x52ce68[_0x96a9('0x16')]?_0x52ce68[_0x96a9('0x16')]['include']?_[_0x96a9('0x18')](_0x52ce68[_0x96a9('0x16')]['include'],function(_0x565a76){return{'model':db[_0x565a76[_0x96a9('0x1b')]],'as':_0x565a76['as'],'attributes':_0x565a76['attributes'],'include':_0x565a76[_0x96a9('0x19')]?_[_0x96a9('0x18')](_0x565a76['include'],function(_0x444bb1){return{'model':db[_0x444bb1['model']],'as':_0x444bb1['as'],'attributes':_0x444bb1[_0x96a9('0x1a')],'include':_0x444bb1[_0x96a9('0x19')]?_[_0x96a9('0x18')](_0x444bb1['include'],function(_0x4bcfcb){return{'model':db[_0x4bcfcb[_0x96a9('0x1b')]],'as':_0x4bcfcb['as'],'attributes':_0x4bcfcb['attributes']};}):[]};}):[]};}):[]:[]})[_0x96a9('0xc')](function(_0x5aae23){logger[_0x96a9('0xd')](_0x96a9('0x1d'),_0x52ce68);logger[_0x96a9('0x10')](_0x96a9('0x1d'),_0x52ce68,JSON[_0x96a9('0x11')](_0x5aae23));_0x640c1d(_0x5aae23);})[_0x96a9('0x15')](function(_0x2f9c9f){logger['error']('ShowCmHopper',_0x2f9c9f[_0x96a9('0x14')],_0x52ce68);_0x384042(_0x3abd89[_0x96a9('0x12')](0x1f4,_0x2f9c9f['message']));});});};exports[_0x96a9('0x21')]=function(_0x2df1c4){var _0x411dea=this;return new Promise(function(_0x54d693,_0x26af39){return db['CmHopper'][_0x96a9('0x22')](_0x2df1c4[_0x96a9('0x23')],{'raw':_0x2df1c4[_0x96a9('0x16')]?_0x2df1c4[_0x96a9('0x16')][_0x96a9('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2ac150){logger[_0x96a9('0xd')](_0x96a9('0x21'),_0x2df1c4);logger['debug'](_0x96a9('0x21'),_0x2df1c4,JSON[_0x96a9('0x11')](_0x2ac150));_0x54d693(_0x2ac150);})['catch'](function(_0x29eb3f){logger[_0x96a9('0x12')](_0x96a9('0x21'),_0x29eb3f[_0x96a9('0x14')],_0x2df1c4);_0x26af39(_0x411dea[_0x96a9('0x12')](0x1f4,_0x29eb3f[_0x96a9('0x14')]));});});};exports[_0x96a9('0x24')]=function(_0x557e8e){var _0x3500be=this;return new Promise(function(_0x1e14f2,_0x2c9bcc){return db[_0x96a9('0x1e')][_0x96a9('0x25')](_0x557e8e['body'],{'raw':_0x557e8e[_0x96a9('0x16')]?_0x557e8e[_0x96a9('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x557e8e['options']?_0x557e8e[_0x96a9('0x16')][_0x96a9('0x17')]||null:null,'attributes':_0x557e8e[_0x96a9('0x16')]?_0x557e8e['options'][_0x96a9('0x1a')]||null:null,'limit':_0x557e8e[_0x96a9('0x16')]?_0x557e8e[_0x96a9('0x16')][_0x96a9('0x26')]||null:null})[_0x96a9('0xc')](function(_0x1dcd3e){logger['info'](_0x96a9('0x24'),_0x557e8e);logger['debug'](_0x96a9('0x24'),_0x557e8e,JSON[_0x96a9('0x11')](_0x1dcd3e));_0x1e14f2(_0x1dcd3e);})[_0x96a9('0x15')](function(_0x31e417){logger[_0x96a9('0x12')]('UpdateCmHopper',_0x31e417[_0x96a9('0x14')],_0x557e8e);_0x2c9bcc(_0x3500be['error'](0x1f4,_0x31e417['message']));});});};exports[_0x96a9('0x27')]=function(_0x440803){var _0x54744b=this;return new Promise(function(_0x9dc986,_0x3e6ab9){return db['CmHopper'][_0x96a9('0x28')]({'where':_0x440803['options']?_0x440803[_0x96a9('0x16')][_0x96a9('0x17')]||null:null})['then'](function(_0x338461){logger[_0x96a9('0xd')](_0x96a9('0x27'),_0x440803);logger['debug'](_0x96a9('0x27'),_0x440803,JSON[_0x96a9('0x11')](_0x338461));_0x9dc986(_0x338461);})[_0x96a9('0x15')](function(_0x4d2c42){logger['error'](_0x96a9('0x27'),_0x4d2c42[_0x96a9('0x14')],_0x440803);_0x3e6ab9(_0x54744b['error'](0x1f4,_0x4d2c42['message']));});});};exports[_0x96a9('0x29')]=function(_0x25425e){var _0x34c22c=this;return new Promise(function(_0x279203,_0x415c8b){return db['CmContact'][_0x96a9('0x2a')]()[_0x96a9('0xc')](function(_0x27a243){return db[_0x96a9('0x2b')][_0x96a9('0x2c')](function(_0xd3339f){return db[_0x96a9('0x1e')]['findAll']({'where':_0x25425e['options']?_0x25425e[_0x96a9('0x16')][_0x96a9('0x17')]||null:null,'attributes':_0x25425e[_0x96a9('0x16')]?_0x25425e['options']['attributes']||null:null,'limit':_0x25425e[_0x96a9('0x16')]?_0x25425e['options'][_0x96a9('0x26')]||null:null,'order':_0x25425e[_0x96a9('0x16')]?_0x25425e[_0x96a9('0x16')][_0x96a9('0x2d')]||null:null,'transaction':_0xd3339f,'lock':_0xd3339f[_0x96a9('0x2e')][_0x96a9('0x2f')],'include':[{'model':db[_0x96a9('0x30')],'as':_0x96a9('0x31'),'attributes':_[_0x96a9('0x32')](_0x27a243)},{'model':db['User'],'as':_0x96a9('0x33'),'attributes':['id',_0x96a9('0x34'),_0x96a9('0x35')]}]})[_0x96a9('0xc')](function(_0x35f76c){var _0x438863=[];var _0x14689a=[];for(var _0x165790=0x0;_0x165790<_0x35f76c['length'];_0x165790+=0x1){var _0x4ba99b=_0x35f76c[_0x165790][_0x96a9('0x36')];if(_0x4ba99b===null){_0x438863[_0x96a9('0x37')](_0x35f76c[_0x165790][_0x96a9('0x25')](_0x25425e['body'],{'transaction':_0xd3339f}));}else if(!_0x14689a[_0x96a9('0x38')](_0x4ba99b)){_0x14689a[_0x96a9('0x37')](_0x4ba99b);_0x438863[_0x96a9('0x37')](_0x35f76c[_0x165790][_0x96a9('0x25')](_0x25425e['body'],{'transaction':_0xd3339f}));}}return BPromise[_0x96a9('0x39')](_0x438863);});})['then'](function(_0x57a681){logger[_0x96a9('0xd')](_0x96a9('0x29'),_0x25425e);logger[_0x96a9('0x10')](_0x96a9('0x29'),_0x25425e,JSON[_0x96a9('0x11')](_0x57a681));_0x279203(_0x57a681);})[_0x96a9('0x15')](function(_0x5cd5af){logger[_0x96a9('0x12')](_0x96a9('0x29'),_0x5cd5af[_0x96a9('0x14')],_0x25425e);_0x415c8b(_0x34c22c[_0x96a9('0x12')](0x1f4,_0x5cd5af[_0x96a9('0x14')]));});});});};exports[_0x96a9('0x3a')]=function(_0xd05d9e){var _0x46a8b8=this;return new Promise(function(_0x1bb27f,_0x19ac39){return db[_0x96a9('0x2b')]['transaction'](function(_0x308490){return db['CmHopperFinal'][_0x96a9('0x22')](_0xd05d9e[_0x96a9('0x23')],{'raw':_0xd05d9e[_0x96a9('0x16')]?_0xd05d9e['options'][_0x96a9('0x20')]===undefined?!![]:![]:!![],'transaction':_0x308490})[_0x96a9('0xc')](function(){return db[_0x96a9('0x1e')]['destroy']({'where':_0xd05d9e[_0x96a9('0x16')]?_0xd05d9e[_0x96a9('0x16')][_0x96a9('0x17')]||null:null,'transaction':_0x308490});});})[_0x96a9('0xc')](function(_0x5b3a48){logger[_0x96a9('0xd')](_0x96a9('0x3a'),_0xd05d9e);logger[_0x96a9('0x10')](_0x96a9('0x3a'),_0xd05d9e,JSON[_0x96a9('0x11')](_0x5b3a48));_0x1bb27f(_0x5b3a48);})[_0x96a9('0x15')](function(_0x2c34de){logger[_0x96a9('0x12')]('MoveContactManagedDialer',_0x2c34de[_0x96a9('0x14')],_0xd05d9e);_0x19ac39(_0x46a8b8[_0x96a9('0x12')](0x1f4,_0x2c34de[_0x96a9('0x14')]));});});};exports['CountReScheduled']=function(_0x33045f){var _0x2e70af=this;return new Promise(function(_0x4c2a4b,_0x539f01){return db['CmHopper'][_0x96a9('0x3b')]({'raw':_0x33045f[_0x96a9('0x16')]?_0x33045f[_0x96a9('0x16')][_0x96a9('0x20')]===undefined?!![]:![]:!![],'where':_0x33045f['options']?_0x33045f['options']['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x96a9('0x2b')]['fn']('IF',db[_0x96a9('0x2b')][_0x96a9('0x3c')]('`scheduledat`\x20>=\x20'+util[_0x96a9('0x3d')](_0x96a9('0x3e'),moment()['format'](_0x96a9('0x3f')))+'\x20,\x201,\x20null'))),_0x96a9('0x40')]]})[_0x96a9('0xc')](function(_0x170499){logger[_0x96a9('0xd')](_0x96a9('0x41'),_0x33045f);logger[_0x96a9('0x10')]('CountReScheduled',_0x33045f,JSON['stringify'](_0x170499));_0x4c2a4b(_0x170499);})[_0x96a9('0x15')](function(_0x37a1a0){logger[_0x96a9('0x12')](_0x96a9('0x41'),_0x37a1a0[_0x96a9('0x14')],_0x33045f);_0x539f01(_0x2e70af[_0x96a9('0x12')](0x1f4,_0x37a1a0[_0x96a9('0x14')]));});});};exports[_0x96a9('0x42')]=function(_0x35804c){var _0x1b8543=this;return new Promise(function(_0x1b7307,_0x31a805){return db[_0x96a9('0x30')][_0x96a9('0x2a')]()[_0x96a9('0xc')](function(_0x1d8008){return db['sequelize'][_0x96a9('0x2c')](function(_0x46c069){return db[_0x96a9('0x1e')][_0x96a9('0x3b')]({'where':_0x35804c[_0x96a9('0x16')]?_0x35804c[_0x96a9('0x16')][_0x96a9('0x17')]||null:null,'attributes':_0x35804c[_0x96a9('0x16')]?_0x35804c[_0x96a9('0x16')]['attributes']||null:null,'limit':0x1,'order':_0x35804c[_0x96a9('0x16')]?_0x35804c[_0x96a9('0x16')]['order']||null:null,'group':db['CmHopper'][_0x96a9('0x36')],'transaction':_0x46c069,'lock':_0x46c069['LOCK']['UPDATE'],'include':_0x35804c['options']?_0x35804c[_0x96a9('0x16')][_0x96a9('0x19')]?_[_0x96a9('0x18')](_0x35804c[_0x96a9('0x16')][_0x96a9('0x19')],function(_0x3251e9){return{'model':db[_0x3251e9[_0x96a9('0x1b')]],'as':_0x3251e9['as'],'attributes':_0x3251e9[_0x96a9('0x1a')],'include':_0x3251e9['include']?_[_0x96a9('0x18')](_0x3251e9[_0x96a9('0x19')],function(_0x59744b){return{'model':db[_0x59744b['model']],'as':_0x59744b['as'],'attributes':_0x59744b[_0x96a9('0x1a')],'include':_0x59744b['include']?_['map'](_0x59744b[_0x96a9('0x19')],function(_0x28077c){return{'model':db[_0x28077c[_0x96a9('0x1b')]],'as':_0x28077c['as'],'attributes':_0x28077c[_0x96a9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x96a9('0xc')](function(_0x39cfb4){var _0x43eb24=[];for(var _0x4b59b7=0x0;_0x4b59b7<_0x39cfb4['length'];_0x4b59b7+=0x1){_0x43eb24[_0x96a9('0x37')](_0x39cfb4[_0x4b59b7][_0x96a9('0x25')](_0x35804c['body'],{'transaction':_0x46c069}));}return BPromise[_0x96a9('0x39')](_0x43eb24);});})[_0x96a9('0xc')](function(_0x318995){logger[_0x96a9('0xd')](_0x96a9('0x42'),_0x35804c);logger['debug']('GetContactRecallMe',_0x35804c,JSON['stringify'](_0x318995));_0x1b7307(_0x318995);})[_0x96a9('0x15')](function(_0x18b9f3){logger['error'](_0x96a9('0x42'),_0x18b9f3[_0x96a9('0x14')],_0x35804c);_0x31a805(_0x1b8543[_0x96a9('0x12')](0x1f4,_0x18b9f3[_0x96a9('0x14')]));});});});};exports[_0x96a9('0x43')]=function(_0x1e787e){var _0x3a2830=this;return new Promise(function(_0xbac1d6,_0x181e9b){db['CmContact'][_0x96a9('0x2a')]()[_0x96a9('0xc')](function(_0x1400e7){return db[_0x96a9('0x1e')][_0x96a9('0x3b')]({'raw':_0x1e787e[_0x96a9('0x16')]?_0x1e787e[_0x96a9('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1e787e[_0x96a9('0x16')]?_0x1e787e[_0x96a9('0x16')][_0x96a9('0x17')]||null:null,'attributes':_0x1e787e['options']?_0x1e787e[_0x96a9('0x16')][_0x96a9('0x1a')]||null:null,'limit':_0x1e787e[_0x96a9('0x16')]?_0x1e787e[_0x96a9('0x16')][_0x96a9('0x26')]||null:null,'include':_0x1e787e[_0x96a9('0x16')]?_0x1e787e[_0x96a9('0x16')]['include']?_[_0x96a9('0x18')](_0x1e787e[_0x96a9('0x16')][_0x96a9('0x19')],function(_0x81cbc6){return{'model':db[_0x81cbc6[_0x96a9('0x1b')]],'as':_0x81cbc6['as'],'attributes':_0x81cbc6['as']===_0x96a9('0x31')?_['keys'](_0x1400e7):_0x81cbc6[_0x96a9('0x1a')],'include':_0x81cbc6[_0x96a9('0x19')]?_[_0x96a9('0x18')](_0x81cbc6['include'],function(_0x4ca0f9){return{'model':db[_0x4ca0f9[_0x96a9('0x1b')]],'as':_0x4ca0f9['as'],'attributes':_0x4ca0f9[_0x96a9('0x1a')],'include':_0x4ca0f9['include']?_[_0x96a9('0x18')](_0x4ca0f9[_0x96a9('0x19')],function(_0x5764e7){return{'model':db[_0x5764e7['model']],'as':_0x5764e7['as'],'attributes':_0x5764e7[_0x96a9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x96a9('0xc')](function(_0x23c799){logger[_0x96a9('0xd')](_0x96a9('0x1c'),_0x1e787e);logger[_0x96a9('0x10')](_0x96a9('0x1c'),_0x1e787e,JSON['stringify'](_0x23c799));_0xbac1d6(_0x23c799);})[_0x96a9('0x15')](function(_0x4498c0){logger[_0x96a9('0x12')](_0x96a9('0x1c'),_0x4498c0[_0x96a9('0x14')],_0x1e787e);_0x181e9b(_0x3a2830['error'](0x1f4,_0x4498c0[_0x96a9('0x14')]));});});});};
\ No newline at end of file
index 7f97895..7afd68c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc87=['/preview','getPreview','/:id','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopper.controller','get','isAuthenticated','describe','/opencontacts','getOpenContacts','show','post'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xfc87,0x117));var _0x7fc8=function(_0x5b25c9,_0xcf8f4e){_0x5b25c9=_0x5b25c9-0x0;var _0x45c39f=_0xfc87[_0x5b25c9];return _0x45c39f;};'use strict';var multer=require('multer');var util=require(_0x7fc8('0x0'));var path=require('path');var timeout=require(_0x7fc8('0x1'));var express=require(_0x7fc8('0x2'));var router=express[_0x7fc8('0x3')]();var fs_extra=require(_0x7fc8('0x4'));var auth=require(_0x7fc8('0x5'));var interaction=require(_0x7fc8('0x6'));var config=require('../../config/environment');var controller=require(_0x7fc8('0x7'));router[_0x7fc8('0x8')]('/',auth[_0x7fc8('0x9')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x7fc8('0xa')]);router['get'](_0x7fc8('0xb'),auth[_0x7fc8('0x9')](),controller[_0x7fc8('0xc')]);router[_0x7fc8('0x8')]('/:id',auth[_0x7fc8('0x9')](),controller[_0x7fc8('0xd')]);router[_0x7fc8('0xe')]('/',auth[_0x7fc8('0x9')](),controller['create']);router['post'](_0x7fc8('0xf'),auth['isAuthenticated'](),controller[_0x7fc8('0x10')]);router['put'](_0x7fc8('0x11'),auth['isAuthenticated'](),controller[_0x7fc8('0x12')]);router[_0x7fc8('0x13')](_0x7fc8('0x11'),auth[_0x7fc8('0x9')](),controller['destroy']);module[_0x7fc8('0x14')]=router;
\ No newline at end of file
+var _0x4454=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','index','/describe','isAuthenticated','describe','/opencontacts','getOpenContacts','/:id','show','post','create','/preview','getPreview','put','update','delete'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4454,0xec));var _0x4445=function(_0x241625,_0xf127a8){_0x241625=_0x241625-0x0;var _0x38598c=_0x4454[_0x241625];return _0x38598c;};'use strict';var multer=require(_0x4445('0x0'));var util=require(_0x4445('0x1'));var path=require(_0x4445('0x2'));var timeout=require(_0x4445('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4445('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4445('0x5'));var config=require(_0x4445('0x6'));var controller=require(_0x4445('0x7'));router[_0x4445('0x8')]('/',auth['isAuthenticated'](),controller[_0x4445('0x9')]);router[_0x4445('0x8')](_0x4445('0xa'),auth[_0x4445('0xb')](),controller[_0x4445('0xc')]);router['get'](_0x4445('0xd'),auth[_0x4445('0xb')](),controller[_0x4445('0xe')]);router[_0x4445('0x8')](_0x4445('0xf'),auth[_0x4445('0xb')](),controller[_0x4445('0x10')]);router[_0x4445('0x11')]('/',auth[_0x4445('0xb')](),controller[_0x4445('0x12')]);router[_0x4445('0x11')](_0x4445('0x13'),auth[_0x4445('0xb')](),controller[_0x4445('0x14')]);router[_0x4445('0x15')](_0x4445('0xf'),auth[_0x4445('0xb')](),controller[_0x4445('0x16')]);router[_0x4445('0x17')](_0x4445('0xf'),auth['isAuthenticated'](),controller[_0x4445('0x18')]);module[_0x4445('0x19')]=router;
\ No newline at end of file
index d47c498..d1e41f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16cc=['STRING','INTEGER','contactListQueue','sequelize','exports'];(function(_0x13782b,_0xd68ea8){var _0x249e4d=function(_0x442223){while(--_0x442223){_0x13782b['push'](_0x13782b['shift']());}};_0x249e4d(++_0xd68ea8);}(_0x16cc,0x120));var _0xc16c=function(_0x3367af,_0x3ad24c){_0x3367af=_0x3367af-0x0;var _0x56007e=_0x16cc[_0x3367af];return _0x56007e;};'use strict';var moment=require('moment');var Sequelize=require(_0xc16c('0x0'));module[_0xc16c('0x1')]={'phone':{'type':Sequelize[_0xc16c('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xc16c('0x3')],'unique':_0xc16c('0x4')},'ListId':{'type':Sequelize[_0xc16c('0x3')],'unique':_0xc16c('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0xc16c('0x4')}};
\ No newline at end of file
+var _0x5359=['sequelize','exports','INTEGER','contactListQueue'];(function(_0x347a6e,_0x11cbed){var _0x36fbd0=function(_0x4183dd){while(--_0x4183dd){_0x347a6e['push'](_0x347a6e['shift']());}};_0x36fbd0(++_0x11cbed);}(_0x5359,0x130));var _0x9535=function(_0x2ba7e3,_0x28cc88){_0x2ba7e3=_0x2ba7e3-0x0;var _0x33945b=_0x5359[_0x2ba7e3];return _0x33945b;};'use strict';var moment=require('moment');var Sequelize=require(_0x9535('0x0'));module[_0x9535('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x9535('0x2')],'unique':_0x9535('0x3')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x9535('0x3')},'VoiceQueueId':{'type':Sequelize[_0x9535('0x2')],'unique':'contactListQueue'}};
\ No newline at end of file
index 0c9f4f6..fba6608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe491=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','update','destroy','error','name','index','map','CmHopperBlack','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','then','includeAll','findAll','catch','show','params','rawAttributes','include','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis'];(function(_0x2211ed,_0x1bca0b){var _0x4d78cc=function(_0x467b59){while(--_0x467b59){_0x2211ed['push'](_0x2211ed['shift']());}};_0x4d78cc(++_0x1bca0b);}(_0xe491,0x156));var _0x1e49=function(_0x1b6ed0,_0x1ffda3){_0x1b6ed0=_0x1b6ed0-0x0;var _0x143cc4=_0xe491[_0x1b6ed0];return _0x143cc4;};'use strict';var emlformat=require(_0x1e49('0x0'));var rimraf=require(_0x1e49('0x1'));var zipdir=require(_0x1e49('0x2'));var jsonpatch=require(_0x1e49('0x3'));var rp=require(_0x1e49('0x4'));var moment=require(_0x1e49('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1e49('0x6'));var util=require(_0x1e49('0x7'));var path=require(_0x1e49('0x8'));var sox=require(_0x1e49('0x9'));var csv=require(_0x1e49('0xa'));var ejs=require(_0x1e49('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1e49('0xc'));var squel=require(_0x1e49('0xd'));var crypto=require('crypto');var jsforce=require(_0x1e49('0xe'));var deskjs=require(_0x1e49('0xf'));var toCsv=require(_0x1e49('0xa'));var querystring=require('querystring');var Papa=require(_0x1e49('0x10'));var Redis=require(_0x1e49('0x11'));var authService=require(_0x1e49('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1e49('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1e49('0x14'))(_0x1e49('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1e49('0x16'));var db=require(_0x1e49('0x17'))['db'];function respondWithStatusCode(_0x15eb81,_0x4184c6){_0x4184c6=_0x4184c6||0xcc;return function(_0x190ff7){if(_0x190ff7){return _0x15eb81[_0x1e49('0x18')](_0x4184c6);}return _0x15eb81['status'](_0x4184c6)[_0x1e49('0x19')]();};}function respondWithResult(_0x28b2b1,_0x99c9df){_0x99c9df=_0x99c9df||0xc8;return function(_0x44f78d){if(_0x44f78d){return _0x28b2b1[_0x1e49('0x1a')](_0x99c9df)[_0x1e49('0x1b')](_0x44f78d);}};}function respondWithFilteredResult(_0x29b0f8,_0x1f1cde){return function(_0x7ae5fb){if(_0x7ae5fb){var _0x3ee9c8=typeof _0x1f1cde[_0x1e49('0x1c')]===_0x1e49('0x1d')&&typeof _0x1f1cde[_0x1e49('0x1e')]===_0x1e49('0x1d');var _0x4ce919=_0x7ae5fb[_0x1e49('0x1f')];var _0x39654a=_0x3ee9c8?0x0:_0x1f1cde[_0x1e49('0x1c')];var _0x2b33ee=_0x3ee9c8?_0x7ae5fb[_0x1e49('0x1f')]:_0x1f1cde[_0x1e49('0x1c')]+_0x1f1cde[_0x1e49('0x1e')];var _0xeede9d;if(_0x2b33ee>=_0x4ce919){_0x2b33ee=_0x4ce919;_0xeede9d=0xc8;}else{_0xeede9d=0xce;}_0x29b0f8[_0x1e49('0x1a')](_0xeede9d);return _0x29b0f8[_0x1e49('0x20')]('Content-Range',_0x39654a+'-'+_0x2b33ee+'/'+_0x4ce919)['json'](_0x7ae5fb);}return null;};}function patchUpdates(_0x48051a){return function(_0x5620a6){try{jsonpatch[_0x1e49('0x21')](_0x5620a6,_0x48051a,!![]);}catch(_0x153861){return BPromise['reject'](_0x153861);}return _0x5620a6[_0x1e49('0x22')]();};}function saveUpdates(_0x93e259,_0x59f822){return function(_0x1af132){if(_0x1af132){return _0x1af132[_0x1e49('0x23')](_0x93e259)['then'](function(_0x9227c3){return _0x9227c3;});}return null;};}function removeEntity(_0x2625a7,_0x2298ff){return function(_0x25196a){if(_0x25196a){return _0x25196a[_0x1e49('0x24')]()['then'](function(){_0x2625a7[_0x1e49('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x398c51,_0x56bd42){return function(_0x3d33d8){if(!_0x3d33d8){_0x398c51[_0x1e49('0x18')](0x194);}return _0x3d33d8;};}function handleError(_0x94efbe,_0x49bc82){_0x49bc82=_0x49bc82||0x1f4;return function(_0x388707){logger[_0x1e49('0x25')](_0x388707['stack']);if(_0x388707[_0x1e49('0x26')]){delete _0x388707['name'];}_0x94efbe[_0x1e49('0x1a')](_0x49bc82)['send'](_0x388707);};}exports[_0x1e49('0x27')]=function(_0x4326e7,_0x270710){var _0x351300={},_0x53f676={},_0x3a6cca={'count':0x0,'rows':[]};var _0x48bf56=_[_0x1e49('0x28')](db[_0x1e49('0x29')]['rawAttributes'],function(_0x398e5d){return{'name':_0x398e5d[_0x1e49('0x2a')],'type':_0x398e5d[_0x1e49('0x2b')][_0x1e49('0x2c')]};});_0x53f676[_0x1e49('0x2d')]=_[_0x1e49('0x28')](_0x48bf56,'name');_0x53f676['query']=_[_0x1e49('0x2e')](_0x4326e7[_0x1e49('0x2f')]);_0x53f676['filters']=_[_0x1e49('0x30')](_0x53f676[_0x1e49('0x2d')],_0x53f676[_0x1e49('0x2f')]);_0x351300[_0x1e49('0x31')]=_[_0x1e49('0x30')](_0x53f676[_0x1e49('0x2d')],qs[_0x1e49('0x32')](_0x4326e7[_0x1e49('0x2f')][_0x1e49('0x32')]));_0x351300[_0x1e49('0x31')]=_0x351300[_0x1e49('0x31')][_0x1e49('0x33')]?_0x351300['attributes']:_0x53f676[_0x1e49('0x2d')];if(!_0x4326e7['query']['hasOwnProperty']('nolimit')){_0x351300[_0x1e49('0x1e')]=qs['limit'](_0x4326e7['query']['limit']);_0x351300[_0x1e49('0x1c')]=qs[_0x1e49('0x1c')](_0x4326e7['query'][_0x1e49('0x1c')]);}_0x351300[_0x1e49('0x34')]=qs[_0x1e49('0x35')](_0x4326e7[_0x1e49('0x2f')][_0x1e49('0x35')]);_0x351300[_0x1e49('0x36')]=qs[_0x1e49('0x37')](_[_0x1e49('0x38')](_0x4326e7[_0x1e49('0x2f')],_0x53f676[_0x1e49('0x37')]),_0x48bf56);if(_0x4326e7[_0x1e49('0x2f')][_0x1e49('0x39')]){_0x351300[_0x1e49('0x36')]=_[_0x1e49('0x3a')](_0x351300[_0x1e49('0x36')],{'$or':_[_0x1e49('0x28')](_0x48bf56,function(_0x3c398f){if(_0x3c398f[_0x1e49('0x2b')]!==_0x1e49('0x3b')){var _0x5e8220={};_0x5e8220[_0x3c398f[_0x1e49('0x26')]]={'$like':'%'+_0x4326e7[_0x1e49('0x2f')]['filter']+'%'};return _0x5e8220;}})});}_0x351300=_[_0x1e49('0x3a')]({},_0x351300,_0x4326e7[_0x1e49('0x3c')]);var _0x432e93={'where':_0x351300[_0x1e49('0x36')]};return db[_0x1e49('0x29')][_0x1e49('0x1f')](_0x432e93)[_0x1e49('0x3d')](function(_0x178e2d){_0x3a6cca['count']=_0x178e2d;if(_0x4326e7[_0x1e49('0x2f')][_0x1e49('0x3e')]){_0x351300['include']=[{'all':!![]}];}return db[_0x1e49('0x29')][_0x1e49('0x3f')](_0x351300);})['then'](function(_0x454e89){_0x3a6cca['rows']=_0x454e89;return _0x3a6cca;})['then'](respondWithFilteredResult(_0x270710,_0x351300))[_0x1e49('0x40')](handleError(_0x270710,null));};exports[_0x1e49('0x41')]=function(_0x5ba034,_0x59279f){var _0x10e9fe={'raw':!![],'where':{'id':_0x5ba034[_0x1e49('0x42')]['id']}},_0x12d88d={};_0x12d88d['model']=_[_0x1e49('0x2e')](db[_0x1e49('0x29')][_0x1e49('0x43')]);_0x12d88d['query']=_[_0x1e49('0x2e')](_0x5ba034[_0x1e49('0x2f')]);_0x12d88d[_0x1e49('0x37')]=_[_0x1e49('0x30')](_0x12d88d['model'],_0x12d88d[_0x1e49('0x2f')]);_0x10e9fe['attributes']=_[_0x1e49('0x30')](_0x12d88d[_0x1e49('0x2d')],qs['fields'](_0x5ba034[_0x1e49('0x2f')]['fields']));_0x10e9fe['attributes']=_0x10e9fe[_0x1e49('0x31')][_0x1e49('0x33')]?_0x10e9fe[_0x1e49('0x31')]:_0x12d88d[_0x1e49('0x2d')];if(_0x5ba034['query']['includeAll']){_0x10e9fe[_0x1e49('0x44')]=[{'all':!![]}];}_0x10e9fe=_['merge']({},_0x10e9fe,_0x5ba034[_0x1e49('0x3c')]);return db[_0x1e49('0x29')]['find'](_0x10e9fe)[_0x1e49('0x3d')](handleEntityNotFound(_0x59279f,null))['then'](respondWithResult(_0x59279f,null))[_0x1e49('0x40')](handleError(_0x59279f,null));};exports[_0x1e49('0x23')]=function(_0xd021c7,_0x2234cb){if(_0xd021c7[_0x1e49('0x45')]['id']){delete _0xd021c7[_0x1e49('0x45')]['id'];}return db[_0x1e49('0x29')][_0x1e49('0x46')]({'where':{'id':_0xd021c7[_0x1e49('0x42')]['id']}})[_0x1e49('0x3d')](handleEntityNotFound(_0x2234cb,null))[_0x1e49('0x3d')](saveUpdates(_0xd021c7[_0x1e49('0x45')],null))[_0x1e49('0x3d')](respondWithResult(_0x2234cb,null))[_0x1e49('0x40')](handleError(_0x2234cb,null));};exports['destroy']=function(_0x2d2815,_0x8ffe2f){return db['CmHopperBlack'][_0x1e49('0x46')]({'where':{'id':_0x2d2815[_0x1e49('0x42')]['id']}})[_0x1e49('0x3d')](handleEntityNotFound(_0x8ffe2f,null))['then'](removeEntity(_0x8ffe2f,null))[_0x1e49('0x40')](handleError(_0x8ffe2f,null));};exports['describe']=function(_0x275a9d,_0x2c84f4){return db[_0x1e49('0x29')][_0x1e49('0x47')]()[_0x1e49('0x3d')](respondWithResult(_0x2c84f4,null))['catch'](handleError(_0x2c84f4,null));};
\ No newline at end of file
+var _0x8558=['length','include','catch','update','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','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','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','destroy','sendStatus','error','name','map','CmHopperBlack','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','findAll','rows','params'];(function(_0x3650f9,_0x35062c){var _0x45b91f=function(_0x5caeda){while(--_0x5caeda){_0x3650f9['push'](_0x3650f9['shift']());}};_0x45b91f(++_0x35062c);}(_0x8558,0x1b1));var _0x8855=function(_0x58fbf8,_0x3db500){_0x58fbf8=_0x58fbf8-0x0;var _0x5ced7b=_0x8558[_0x58fbf8];return _0x5ced7b;};'use strict';var emlformat=require(_0x8855('0x0'));var rimraf=require(_0x8855('0x1'));var zipdir=require(_0x8855('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8855('0x3'));var moment=require(_0x8855('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8855('0x5'));var path=require(_0x8855('0x6'));var sox=require(_0x8855('0x7'));var csv=require(_0x8855('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x8855('0x9'));var jsforce=require(_0x8855('0xa'));var deskjs=require(_0x8855('0xb'));var toCsv=require('to-csv');var querystring=require(_0x8855('0xc'));var Papa=require(_0x8855('0xd'));var Redis=require('ioredis');var authService=require(_0x8855('0xe'));var qs=require(_0x8855('0xf'));var as=require(_0x8855('0x10'));var hardwareService=require(_0x8855('0x11'));var logger=require(_0x8855('0x12'))(_0x8855('0x13'));var utils=require(_0x8855('0x14'));var config=require(_0x8855('0x15'));var licenseUtil=require(_0x8855('0x16'));var db=require(_0x8855('0x17'))['db'];function respondWithStatusCode(_0x36939a,_0xd70156){_0xd70156=_0xd70156||0xcc;return function(_0x4a4fee){if(_0x4a4fee){return _0x36939a['sendStatus'](_0xd70156);}return _0x36939a[_0x8855('0x18')](_0xd70156)[_0x8855('0x19')]();};}function respondWithResult(_0x18244a,_0x26c6d4){_0x26c6d4=_0x26c6d4||0xc8;return function(_0x273cda){if(_0x273cda){return _0x18244a[_0x8855('0x18')](_0x26c6d4)[_0x8855('0x1a')](_0x273cda);}};}function respondWithFilteredResult(_0x57e1bc,_0x1ea2b3){return function(_0x24f72d){if(_0x24f72d){var _0x3a117c=typeof _0x1ea2b3[_0x8855('0x1b')]===_0x8855('0x1c')&&typeof _0x1ea2b3['limit']===_0x8855('0x1c');var _0x3ca762=_0x24f72d[_0x8855('0x1d')];var _0x4893fe=_0x3a117c?0x0:_0x1ea2b3[_0x8855('0x1b')];var _0xaf35e0=_0x3a117c?_0x24f72d['count']:_0x1ea2b3['offset']+_0x1ea2b3[_0x8855('0x1e')];var _0x2dd7ba;if(_0xaf35e0>=_0x3ca762){_0xaf35e0=_0x3ca762;_0x2dd7ba=0xc8;}else{_0x2dd7ba=0xce;}_0x57e1bc[_0x8855('0x18')](_0x2dd7ba);return _0x57e1bc[_0x8855('0x1f')](_0x8855('0x20'),_0x4893fe+'-'+_0xaf35e0+'/'+_0x3ca762)[_0x8855('0x1a')](_0x24f72d);}return null;};}function patchUpdates(_0x3c4d78){return function(_0x5221d3){try{jsonpatch['apply'](_0x5221d3,_0x3c4d78,!![]);}catch(_0x31cbfb){return BPromise[_0x8855('0x21')](_0x31cbfb);}return _0x5221d3[_0x8855('0x22')]();};}function saveUpdates(_0x4574b0,_0x57b04d){return function(_0x54b412){if(_0x54b412){return _0x54b412['update'](_0x4574b0)[_0x8855('0x23')](function(_0x5339d0){return _0x5339d0;});}return null;};}function removeEntity(_0x31b4f9,_0x3f4aeb){return function(_0x134836){if(_0x134836){return _0x134836[_0x8855('0x24')]()[_0x8855('0x23')](function(){_0x31b4f9[_0x8855('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x152aaa,_0x468998){return function(_0x590f89){if(!_0x590f89){_0x152aaa[_0x8855('0x25')](0x194);}return _0x590f89;};}function handleError(_0x1046ab,_0x367be6){_0x367be6=_0x367be6||0x1f4;return function(_0x4bd368){logger[_0x8855('0x26')](_0x4bd368['stack']);if(_0x4bd368[_0x8855('0x27')]){delete _0x4bd368[_0x8855('0x27')];}_0x1046ab[_0x8855('0x18')](_0x367be6)['send'](_0x4bd368);};}exports['index']=function(_0x25e671,_0x360a4e){var _0x118852={},_0x48963d={},_0x3cde4c={'count':0x0,'rows':[]};var _0x5d3e52=_[_0x8855('0x28')](db[_0x8855('0x29')][_0x8855('0x2a')],function(_0x2c9898){return{'name':_0x2c9898['fieldName'],'type':_0x2c9898[_0x8855('0x2b')][_0x8855('0x2c')]};});_0x48963d[_0x8855('0x2d')]=_[_0x8855('0x28')](_0x5d3e52,_0x8855('0x27'));_0x48963d['query']=_[_0x8855('0x2e')](_0x25e671[_0x8855('0x2f')]);_0x48963d[_0x8855('0x30')]=_[_0x8855('0x31')](_0x48963d[_0x8855('0x2d')],_0x48963d[_0x8855('0x2f')]);_0x118852[_0x8855('0x32')]=_['intersection'](_0x48963d['model'],qs['fields'](_0x25e671[_0x8855('0x2f')][_0x8855('0x33')]));_0x118852[_0x8855('0x32')]=_0x118852[_0x8855('0x32')]['length']?_0x118852[_0x8855('0x32')]:_0x48963d[_0x8855('0x2d')];if(!_0x25e671[_0x8855('0x2f')][_0x8855('0x34')](_0x8855('0x35'))){_0x118852[_0x8855('0x1e')]=qs['limit'](_0x25e671[_0x8855('0x2f')]['limit']);_0x118852[_0x8855('0x1b')]=qs['offset'](_0x25e671[_0x8855('0x2f')]['offset']);}_0x118852[_0x8855('0x36')]=qs[_0x8855('0x37')](_0x25e671[_0x8855('0x2f')][_0x8855('0x37')]);_0x118852['where']=qs[_0x8855('0x30')](_['pick'](_0x25e671[_0x8855('0x2f')],_0x48963d[_0x8855('0x30')]),_0x5d3e52);if(_0x25e671['query'][_0x8855('0x38')]){_0x118852[_0x8855('0x39')]=_[_0x8855('0x3a')](_0x118852['where'],{'$or':_[_0x8855('0x28')](_0x5d3e52,function(_0x4e9810){if(_0x4e9810[_0x8855('0x2b')]!==_0x8855('0x3b')){var _0x4914bb={};_0x4914bb[_0x4e9810[_0x8855('0x27')]]={'$like':'%'+_0x25e671[_0x8855('0x2f')][_0x8855('0x38')]+'%'};return _0x4914bb;}})});}_0x118852=_[_0x8855('0x3a')]({},_0x118852,_0x25e671['options']);var _0x3200d5={'where':_0x118852[_0x8855('0x39')]};return db[_0x8855('0x29')]['count'](_0x3200d5)[_0x8855('0x23')](function(_0x2e91b7){_0x3cde4c['count']=_0x2e91b7;if(_0x25e671['query'][_0x8855('0x3c')]){_0x118852['include']=[{'all':!![]}];}return db[_0x8855('0x29')][_0x8855('0x3d')](_0x118852);})[_0x8855('0x23')](function(_0x78d9a8){_0x3cde4c[_0x8855('0x3e')]=_0x78d9a8;return _0x3cde4c;})[_0x8855('0x23')](respondWithFilteredResult(_0x360a4e,_0x118852))['catch'](handleError(_0x360a4e,null));};exports['show']=function(_0x49b87f,_0x58e124){var _0x9dd518={'raw':!![],'where':{'id':_0x49b87f[_0x8855('0x3f')]['id']}},_0x5af077={};_0x5af077[_0x8855('0x2d')]=_[_0x8855('0x2e')](db['CmHopperBlack']['rawAttributes']);_0x5af077['query']=_['keys'](_0x49b87f[_0x8855('0x2f')]);_0x5af077[_0x8855('0x30')]=_['intersection'](_0x5af077[_0x8855('0x2d')],_0x5af077[_0x8855('0x2f')]);_0x9dd518[_0x8855('0x32')]=_['intersection'](_0x5af077[_0x8855('0x2d')],qs['fields'](_0x49b87f[_0x8855('0x2f')][_0x8855('0x33')]));_0x9dd518[_0x8855('0x32')]=_0x9dd518['attributes'][_0x8855('0x40')]?_0x9dd518[_0x8855('0x32')]:_0x5af077[_0x8855('0x2d')];if(_0x49b87f[_0x8855('0x2f')][_0x8855('0x3c')]){_0x9dd518[_0x8855('0x41')]=[{'all':!![]}];}_0x9dd518=_[_0x8855('0x3a')]({},_0x9dd518,_0x49b87f['options']);return db[_0x8855('0x29')]['find'](_0x9dd518)[_0x8855('0x23')](handleEntityNotFound(_0x58e124,null))['then'](respondWithResult(_0x58e124,null))[_0x8855('0x42')](handleError(_0x58e124,null));};exports[_0x8855('0x43')]=function(_0x1beb83,_0x44dea0){if(_0x1beb83[_0x8855('0x44')]['id']){delete _0x1beb83[_0x8855('0x44')]['id'];}return db['CmHopperBlack'][_0x8855('0x45')]({'where':{'id':_0x1beb83[_0x8855('0x3f')]['id']}})[_0x8855('0x23')](handleEntityNotFound(_0x44dea0,null))[_0x8855('0x23')](saveUpdates(_0x1beb83['body'],null))[_0x8855('0x23')](respondWithResult(_0x44dea0,null))[_0x8855('0x42')](handleError(_0x44dea0,null));};exports[_0x8855('0x24')]=function(_0x13f4c9,_0x2adb93){return db[_0x8855('0x29')][_0x8855('0x45')]({'where':{'id':_0x13f4c9['params']['id']}})[_0x8855('0x23')](handleEntityNotFound(_0x2adb93,null))[_0x8855('0x23')](removeEntity(_0x2adb93,null))[_0x8855('0x42')](handleError(_0x2adb93,null));};exports[_0x8855('0x46')]=function(_0x2e3c37,_0x56007d){return db[_0x8855('0x29')][_0x8855('0x46')]()['then'](respondWithResult(_0x56007d,null))['catch'](handleError(_0x56007d,null));};
\ No newline at end of file
index 89e72a0..4a0ceff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb65d=['cm_hopper_black','lodash','../../config/logger','api','moment','path','rimraf','./cmHopperBlack.attributes','CmHopperBlack'];(function(_0x6afeb6,_0x5ba48b){var _0x1c71f4=function(_0x10d6d9){while(--_0x10d6d9){_0x6afeb6['push'](_0x6afeb6['shift']());}};_0x1c71f4(++_0x5ba48b);}(_0xb65d,0xf4));var _0xdb65=function(_0x3504ca,_0x1c4685){_0x3504ca=_0x3504ca-0x0;var _0x50db3a=_0xb65d[_0x3504ca];return _0x50db3a;};'use strict';var _=require(_0xdb65('0x0'));var util=require('util');var logger=require(_0xdb65('0x1'))(_0xdb65('0x2'));var moment=require(_0xdb65('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xdb65('0x4'));var rimraf=require(_0xdb65('0x5'));var config=require('../../config/environment');var attributes=require(_0xdb65('0x6'));module['exports']=function(_0x3c74c1,_0x31aa6d){return _0x3c74c1['define'](_0xdb65('0x7'),attributes,{'tableName':_0xdb65('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x95f3=['rimraf','./cmHopperBlack.attributes','define','CmHopperBlack','cm_hopper_black','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x95f3,0xf5));var _0x395f=function(_0x675503,_0x5e8359){_0x675503=_0x675503-0x0;var _0x3400d2=_0x95f3[_0x675503];return _0x3400d2;};'use strict';var _=require(_0x395f('0x0'));var util=require(_0x395f('0x1'));var logger=require('../../config/logger')(_0x395f('0x2'));var moment=require(_0x395f('0x3'));var BPromise=require(_0x395f('0x4'));var rp=require(_0x395f('0x5'));var fs=require('fs');var path=require(_0x395f('0x6'));var rimraf=require(_0x395f('0x7'));var config=require('../../config/environment');var attributes=require(_0x395f('0x8'));module['exports']=function(_0x2faeb9,_0x1c0784){return _0x2faeb9[_0x395f('0x9')](_0x395f('0xa'),attributes,{'tableName':_0x395f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 567eb7d..4da033a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528b=['findAll','options','attributes','include','model','map','then','UpdateCmHopperBlack','update','body','where','DestroyCmHopperBlack','destroy','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmHopperBlack,\x20%s,\x20%s','GetCmHopperBlack','CmHopperBlack'];(function(_0x4cf524,_0x23c614){var _0x43cc04=function(_0x566564){while(--_0x566564){_0x4cf524['push'](_0x4cf524['shift']());}};_0x43cc04(++_0x23c614);}(_0x528b,0x102));var _0xb528=function(_0x16eb2f,_0x19e835){_0x16eb2f=_0x16eb2f-0x0;var _0x563ddb=_0x528b[_0x16eb2f];return _0x563ddb;};'use strict';var _=require(_0xb528('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb528('0x1'));var fs=require('fs');var Redis=require(_0xb528('0x2'));var db=require(_0xb528('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb528('0x4'))(_0xb528('0x5'));var config=require(_0xb528('0x6'));var jayson=require(_0xb528('0x7'));var client=jayson[_0xb528('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x504685,_0x37ab66,_0x20a6d7){return new BPromise(function(_0x438b7e,_0x846051){return client['request'](_0x504685,_0x20a6d7)['then'](function(_0x161675){logger[_0xb528('0x9')]('CmHopperBlack,\x20%s,\x20%s',_0x37ab66,_0xb528('0xa'));logger[_0xb528('0xb')](_0xb528('0xc'),_0x37ab66,_0xb528('0xa'),JSON[_0xb528('0xd')](_0x161675));if(_0x161675[_0xb528('0xe')]){if(_0x161675[_0xb528('0xe')][_0xb528('0xf')]===0x1f4){logger[_0xb528('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x37ab66,_0x161675['error'][_0xb528('0x10')]);return _0x846051(_0x161675[_0xb528('0xe')][_0xb528('0x10')]);}logger[_0xb528('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x37ab66,_0x161675[_0xb528('0xe')][_0xb528('0x10')]);return _0x438b7e(_0x161675['error'][_0xb528('0x10')]);}else{logger[_0xb528('0x9')]('CmHopperBlack,\x20%s,\x20%s',_0x37ab66,'request\x20sent');_0x438b7e(_0x161675[_0xb528('0x11')]['message']);}})[_0xb528('0x12')](function(_0x9386f4){logger[_0xb528('0xe')](_0xb528('0x13'),_0x37ab66,_0x9386f4);_0x846051(_0x9386f4);});});}exports[_0xb528('0x14')]=function(_0x200602){var _0x2b4e0e=this;return new Promise(function(_0xe39eb3,_0x58f1b7){return db[_0xb528('0x15')][_0xb528('0x16')]({'raw':_0x200602[_0xb528('0x17')]?_0x200602[_0xb528('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x200602['options']?_0x200602[_0xb528('0x17')]['where']||null:null,'attributes':_0x200602[_0xb528('0x17')]?_0x200602[_0xb528('0x17')][_0xb528('0x18')]||null:null,'limit':_0x200602['options']?_0x200602[_0xb528('0x17')]['limit']||null:null,'include':_0x200602[_0xb528('0x17')]?_0x200602['options']['include']?_['map'](_0x200602[_0xb528('0x17')][_0xb528('0x19')],function(_0x26eab4){return{'model':db[_0x26eab4[_0xb528('0x1a')]],'as':_0x26eab4['as'],'attributes':_0x26eab4['attributes'],'include':_0x26eab4[_0xb528('0x19')]?_[_0xb528('0x1b')](_0x26eab4[_0xb528('0x19')],function(_0x205d2c){return{'model':db[_0x205d2c['model']],'as':_0x205d2c['as'],'attributes':_0x205d2c[_0xb528('0x18')],'include':_0x205d2c['include']?_['map'](_0x205d2c[_0xb528('0x19')],function(_0x48875c){return{'model':db[_0x48875c['model']],'as':_0x48875c['as'],'attributes':_0x48875c[_0xb528('0x18')]};}):[]};}):[]};}):[]:[]})[_0xb528('0x1c')](function(_0x41b644){logger[_0xb528('0x9')](_0xb528('0x14'),_0x200602);logger[_0xb528('0xb')](_0xb528('0x14'),_0x200602,JSON['stringify'](_0x41b644));_0xe39eb3(_0x41b644);})[_0xb528('0x12')](function(_0x25a316){logger['error']('GetCmHopperBlack',_0x25a316[_0xb528('0x10')],_0x200602);_0x58f1b7(_0x2b4e0e['error'](0x1f4,_0x25a316['message']));});});};exports[_0xb528('0x1d')]=function(_0x4dce2a){var _0x6ca918=this;return new Promise(function(_0x4fa08e,_0x246c8d){return db[_0xb528('0x15')][_0xb528('0x1e')](_0x4dce2a[_0xb528('0x1f')],{'raw':_0x4dce2a[_0xb528('0x17')]?_0x4dce2a[_0xb528('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4dce2a['options']?_0x4dce2a[_0xb528('0x17')][_0xb528('0x20')]||null:null,'attributes':_0x4dce2a['options']?_0x4dce2a[_0xb528('0x17')]['attributes']||null:null,'limit':_0x4dce2a[_0xb528('0x17')]?_0x4dce2a[_0xb528('0x17')]['limit']||null:null})[_0xb528('0x1c')](function(_0x302dff){logger[_0xb528('0x9')]('UpdateCmHopperBlack',_0x4dce2a);logger[_0xb528('0xb')](_0xb528('0x1d'),_0x4dce2a,JSON['stringify'](_0x302dff));_0x4fa08e(_0x302dff);})[_0xb528('0x12')](function(_0x3e8865){logger[_0xb528('0xe')]('UpdateCmHopperBlack',_0x3e8865[_0xb528('0x10')],_0x4dce2a);_0x246c8d(_0x6ca918[_0xb528('0xe')](0x1f4,_0x3e8865[_0xb528('0x10')]));});});};exports[_0xb528('0x21')]=function(_0x1d89d4){var _0x14112e=this;return new Promise(function(_0xbf713e,_0x377123){return db[_0xb528('0x15')][_0xb528('0x22')]({'where':_0x1d89d4[_0xb528('0x17')]?_0x1d89d4[_0xb528('0x17')]['where']||null:null})['then'](function(_0x2e33de){logger[_0xb528('0x9')](_0xb528('0x21'),_0x1d89d4);logger[_0xb528('0xb')](_0xb528('0x21'),_0x1d89d4,JSON[_0xb528('0xd')](_0x2e33de));_0xbf713e(_0x2e33de);})[_0xb528('0x12')](function(_0x2caa34){logger[_0xb528('0xe')]('DestroyCmHopperBlack',_0x2caa34[_0xb528('0x10')],_0x1d89d4);_0x377123(_0x14112e[_0xb528('0xe')](0x1f4,_0x2caa34[_0xb528('0x10')]));});});};
\ No newline at end of file
+var _0xd6b7=['body','limit','destroy','DestroyCmHopperBlack','debug','stringify','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CmHopperBlack','options','raw','where','attributes','include','map','model','GetCmHopperBlack','UpdateCmHopperBlack','update'];(function(_0x42cd6e,_0x376db4){var _0x1843eb=function(_0x3b415c){while(--_0x3b415c){_0x42cd6e['push'](_0x42cd6e['shift']());}};_0x1843eb(++_0x376db4);}(_0xd6b7,0xea));var _0x7d6b=function(_0x4c6cf0,_0x826f70){_0x4c6cf0=_0x4c6cf0-0x0;var _0x108145=_0xd6b7[_0x4c6cf0];return _0x108145;};'use strict';var _=require(_0x7d6b('0x0'));var util=require(_0x7d6b('0x1'));var moment=require(_0x7d6b('0x2'));var BPromise=require(_0x7d6b('0x3'));var rs=require(_0x7d6b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7d6b('0x5'));var logger=require(_0x7d6b('0x6'))(_0x7d6b('0x7'));var config=require(_0x7d6b('0x8'));var jayson=require(_0x7d6b('0x9'));var client=jayson['client'][_0x7d6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f9d2c,_0x22dff6,_0x4a3750){return new BPromise(function(_0x5e89a5,_0x534eeb){return client[_0x7d6b('0xb')](_0x1f9d2c,_0x4a3750)[_0x7d6b('0xc')](function(_0x3a0571){logger[_0x7d6b('0xd')](_0x7d6b('0xe'),_0x22dff6,_0x7d6b('0xf'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x22dff6,_0x7d6b('0xf'),JSON['stringify'](_0x3a0571));if(_0x3a0571[_0x7d6b('0x10')]){if(_0x3a0571[_0x7d6b('0x10')][_0x7d6b('0x11')]===0x1f4){logger[_0x7d6b('0x10')](_0x7d6b('0xe'),_0x22dff6,_0x3a0571['error'][_0x7d6b('0x12')]);return _0x534eeb(_0x3a0571['error'][_0x7d6b('0x12')]);}logger[_0x7d6b('0x10')](_0x7d6b('0xe'),_0x22dff6,_0x3a0571['error'][_0x7d6b('0x12')]);return _0x5e89a5(_0x3a0571[_0x7d6b('0x10')]['message']);}else{logger['info'](_0x7d6b('0xe'),_0x22dff6,_0x7d6b('0xf'));_0x5e89a5(_0x3a0571[_0x7d6b('0x13')][_0x7d6b('0x12')]);}})[_0x7d6b('0x14')](function(_0x17e787){logger['error'](_0x7d6b('0xe'),_0x22dff6,_0x17e787);_0x534eeb(_0x17e787);});});}exports['GetCmHopperBlack']=function(_0x176dd3){var _0x4c4b39=this;return new Promise(function(_0x264606,_0x3b91e2){return db[_0x7d6b('0x15')]['findAll']({'raw':_0x176dd3[_0x7d6b('0x16')]?_0x176dd3[_0x7d6b('0x16')][_0x7d6b('0x17')]===undefined?!![]:![]:!![],'where':_0x176dd3['options']?_0x176dd3[_0x7d6b('0x16')][_0x7d6b('0x18')]||null:null,'attributes':_0x176dd3['options']?_0x176dd3[_0x7d6b('0x16')][_0x7d6b('0x19')]||null:null,'limit':_0x176dd3[_0x7d6b('0x16')]?_0x176dd3[_0x7d6b('0x16')]['limit']||null:null,'include':_0x176dd3[_0x7d6b('0x16')]?_0x176dd3[_0x7d6b('0x16')][_0x7d6b('0x1a')]?_[_0x7d6b('0x1b')](_0x176dd3[_0x7d6b('0x16')][_0x7d6b('0x1a')],function(_0x4d153a){return{'model':db[_0x4d153a['model']],'as':_0x4d153a['as'],'attributes':_0x4d153a[_0x7d6b('0x19')],'include':_0x4d153a[_0x7d6b('0x1a')]?_['map'](_0x4d153a[_0x7d6b('0x1a')],function(_0x222a2e){return{'model':db[_0x222a2e['model']],'as':_0x222a2e['as'],'attributes':_0x222a2e[_0x7d6b('0x19')],'include':_0x222a2e[_0x7d6b('0x1a')]?_[_0x7d6b('0x1b')](_0x222a2e[_0x7d6b('0x1a')],function(_0x3f7b4f){return{'model':db[_0x3f7b4f[_0x7d6b('0x1c')]],'as':_0x3f7b4f['as'],'attributes':_0x3f7b4f[_0x7d6b('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x24e93f){logger[_0x7d6b('0xd')](_0x7d6b('0x1d'),_0x176dd3);logger['debug']('GetCmHopperBlack',_0x176dd3,JSON['stringify'](_0x24e93f));_0x264606(_0x24e93f);})[_0x7d6b('0x14')](function(_0x3a9be6){logger[_0x7d6b('0x10')](_0x7d6b('0x1d'),_0x3a9be6[_0x7d6b('0x12')],_0x176dd3);_0x3b91e2(_0x4c4b39[_0x7d6b('0x10')](0x1f4,_0x3a9be6[_0x7d6b('0x12')]));});});};exports[_0x7d6b('0x1e')]=function(_0x4f5f42){var _0x2041aa=this;return new Promise(function(_0xf4d48f,_0x2cc41e){return db['CmHopperBlack'][_0x7d6b('0x1f')](_0x4f5f42[_0x7d6b('0x20')],{'raw':_0x4f5f42[_0x7d6b('0x16')]?_0x4f5f42[_0x7d6b('0x16')][_0x7d6b('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f5f42[_0x7d6b('0x16')]?_0x4f5f42[_0x7d6b('0x16')][_0x7d6b('0x18')]||null:null,'attributes':_0x4f5f42[_0x7d6b('0x16')]?_0x4f5f42[_0x7d6b('0x16')]['attributes']||null:null,'limit':_0x4f5f42[_0x7d6b('0x16')]?_0x4f5f42[_0x7d6b('0x16')][_0x7d6b('0x21')]||null:null})['then'](function(_0xdddc26){logger[_0x7d6b('0xd')]('UpdateCmHopperBlack',_0x4f5f42);logger['debug'](_0x7d6b('0x1e'),_0x4f5f42,JSON['stringify'](_0xdddc26));_0xf4d48f(_0xdddc26);})[_0x7d6b('0x14')](function(_0x342601){logger[_0x7d6b('0x10')](_0x7d6b('0x1e'),_0x342601[_0x7d6b('0x12')],_0x4f5f42);_0x2cc41e(_0x2041aa[_0x7d6b('0x10')](0x1f4,_0x342601[_0x7d6b('0x12')]));});});};exports['DestroyCmHopperBlack']=function(_0x4bbd98){var _0x5d678c=this;return new Promise(function(_0x39a808,_0x151d69){return db['CmHopperBlack'][_0x7d6b('0x22')]({'where':_0x4bbd98[_0x7d6b('0x16')]?_0x4bbd98[_0x7d6b('0x16')]['where']||null:null})['then'](function(_0x270e21){logger[_0x7d6b('0xd')](_0x7d6b('0x23'),_0x4bbd98);logger[_0x7d6b('0x24')](_0x7d6b('0x23'),_0x4bbd98,JSON[_0x7d6b('0x25')](_0x270e21));_0x39a808(_0x270e21);})[_0x7d6b('0x14')](function(_0x37f97b){logger[_0x7d6b('0x10')]('DestroyCmHopperBlack',_0x37f97b['message'],_0x4bbd98);_0x151d69(_0x5d678c[_0x7d6b('0x10')](0x1f4,_0x37f97b[_0x7d6b('0x12')]));});});};
\ No newline at end of file
index eb4a9bb..2a488cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['show','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','describe','/:id'];(function(_0x5233ef,_0x49aa7b){var _0x2ee7c9=function(_0x1c03ae){while(--_0x1c03ae){_0x5233ef['push'](_0x5233ef['shift']());}};_0x2ee7c9(++_0x49aa7b);}(_0x3d04,0xbe));var _0x43d0=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3d04[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var path=require(_0x43d0('0x2'));var timeout=require(_0x43d0('0x3'));var express=require(_0x43d0('0x4'));var router=express[_0x43d0('0x5')]();var fs_extra=require(_0x43d0('0x6'));var auth=require(_0x43d0('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x43d0('0x8'));var controller=require(_0x43d0('0x9'));router[_0x43d0('0xa')]('/',auth[_0x43d0('0xb')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x43d0('0xc')]);router[_0x43d0('0xa')](_0x43d0('0xd'),auth[_0x43d0('0xb')](),controller[_0x43d0('0xe')]);router['put']('/:id',auth[_0x43d0('0xb')](),controller['update']);router['delete'](_0x43d0('0xd'),auth[_0x43d0('0xb')](),controller[_0x43d0('0xf')]);module[_0x43d0('0x10')]=router;
\ No newline at end of file
+var _0x5496=['../../config/environment','./cmHopperBlack.controller','index','get','isAuthenticated','describe','show','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service'];(function(_0xc0bc15,_0x507723){var _0xe858a=function(_0x34243f){while(--_0x34243f){_0xc0bc15['push'](_0xc0bc15['shift']());}};_0xe858a(++_0x507723);}(_0x5496,0x175));var _0x6549=function(_0x261e4d,_0x424c26){_0x261e4d=_0x261e4d-0x0;var _0x379953=_0x5496[_0x261e4d];return _0x379953;};'use strict';var multer=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var path=require(_0x6549('0x2'));var timeout=require(_0x6549('0x3'));var express=require(_0x6549('0x4'));var router=express['Router']();var fs_extra=require(_0x6549('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6549('0x6'));var config=require(_0x6549('0x7'));var controller=require(_0x6549('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x6549('0x9')]);router[_0x6549('0xa')]('/describe',auth[_0x6549('0xb')](),controller[_0x6549('0xc')]);router[_0x6549('0xa')]('/:id',auth[_0x6549('0xb')](),controller[_0x6549('0xd')]);router[_0x6549('0xe')](_0x6549('0xf'),auth[_0x6549('0xb')](),controller[_0x6549('0x10')]);router['delete']('/:id',auth[_0x6549('0xb')](),controller[_0x6549('0x11')]);module[_0x6549('0x12')]=router;
\ No newline at end of file
index d8d8583..9846c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a2=['getDataValue','endtime','setDataValue','followuptime','BOOLEAN','sequelize','moment','INTEGER','STRING','DATE'];(function(_0x52cf86,_0x1c145a){var _0xec053=function(_0x313aaa){while(--_0x313aaa){_0x52cf86['push'](_0x52cf86['shift']());}};_0xec053(++_0x1c145a);}(_0xd5a2,0x113));var _0x2d5a=function(_0x26d3ad,_0x3babb4){_0x26d3ad=_0x26d3ad-0x0;var _0x36c278=_0xd5a2[_0x26d3ad];return _0x36c278;};'use strict';var Sequelize=require(_0x2d5a('0x0'));var moment=require(_0x2d5a('0x1'));module['exports']={'state':{'type':Sequelize[_0x2d5a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x2d5a('0x3')]},'scheduledat':{'type':Sequelize[_0x2d5a('0x4')]},'countbusyretry':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x2d5a('0x3')]},'calleridnum':{'type':Sequelize[_0x2d5a('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x2d5a('0x4')]},'responsetime':{'type':Sequelize[_0x2d5a('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x2d5a('0x4')]},'endtime':{'type':Sequelize[_0x2d5a('0x4')]},'ringtime':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x2d5a('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x2d5a('0x3')]},'membername':{'type':Sequelize[_0x2d5a('0x3')]},'reason':{'type':Sequelize[_0x2d5a('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2d5a('0x3')]},'thirdDisposition':{'type':Sequelize[_0x2d5a('0x3')]},'dispositionat':{'type':Sequelize[_0x2d5a('0x4')],'set':function(_0xe9bf2e){var _0x3d976b=this[_0x2d5a('0x5')](_0x2d5a('0x6'));if(_0x3d976b&&_0xe9bf2e){this[_0x2d5a('0x7')](_0x2d5a('0x8'),moment(_0xe9bf2e)['diff'](moment(_0x3d976b),'seconds'));}return this[_0x2d5a('0x7')]('dispositionat',_0xe9bf2e);}},'amd':{'type':Sequelize[_0x2d5a('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0x2d5a('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x2d5a('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x2d5a('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x2d5a('0x4')]},'callback':{'type':Sequelize[_0x2d5a('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2d5a('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x2d5a('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x2d5a('0x4')]},'recallme':{'type':Sequelize[_0x2d5a('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x2d5a('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2d5a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x684a=['STRING','DATE','getDataValue','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER'];(function(_0x5189d6,_0x557268){var _0xb04855=function(_0x49d867){while(--_0x49d867){_0x5189d6['push'](_0x5189d6['shift']());}};_0xb04855(++_0x557268);}(_0x684a,0x127));var _0xa684=function(_0x4b26d0,_0x24859b){_0x4b26d0=_0x4b26d0-0x0;var _0x359139=_0x684a[_0x4b26d0];return _0x359139;};'use strict';var Sequelize=require(_0xa684('0x0'));var moment=require(_0xa684('0x1'));module[_0xa684('0x2')]={'state':{'type':Sequelize[_0xa684('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xa684('0x4')]},'scheduledat':{'type':Sequelize[_0xa684('0x5')]},'countbusyretry':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xa684('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xa684('0x5')]},'responsetime':{'type':Sequelize[_0xa684('0x5')]},'answertime':{'type':Sequelize[_0xa684('0x5')]},'droptime':{'type':Sequelize[_0xa684('0x5')]},'endtime':{'type':Sequelize[_0xa684('0x5')]},'ringtime':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xa684('0x4')]},'campaign':{'type':Sequelize[_0xa684('0x4')]},'campaigntype':{'type':Sequelize[_0xa684('0x4')]},'membername':{'type':Sequelize[_0xa684('0x4')]},'reason':{'type':Sequelize[_0xa684('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xa684('0x4')]},'dispositionat':{'type':Sequelize[_0xa684('0x5')],'set':function(_0x577278){var _0x20f444=this[_0xa684('0x6')]('endtime');if(_0x20f444&&_0x577278){this[_0xa684('0x7')](_0xa684('0x8'),moment(_0x577278)[_0xa684('0x9')](moment(_0x20f444),_0xa684('0xa')));}return this[_0xa684('0x7')](_0xa684('0xb'),_0x577278);}},'amd':{'type':Sequelize[_0xa684('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0xa684('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xa684('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xa684('0x5')]},'callback':{'type':Sequelize[_0xa684('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa684('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa684('0x5')]},'deleted':{'type':Sequelize[_0xa684('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xa684('0x5')]},'recallme':{'type':Sequelize[_0xa684('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xa684('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xa684('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 7eb4e63..b5c65a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['reject','update','then','destroy','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','intersection','length','includeAll','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','select','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','NOW()','CampaignId\x20=\x20?','checkContactHopper','CmHopper','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x1e89dd,_0x517f65){var _0x135a28=function(_0x386d05){while(--_0x386d05){_0x1e89dd['push'](_0x1e89dd['shift']());}};_0x135a28(++_0x517f65);}(_0xacf4,0xe7));var _0x4acf=function(_0x791142,_0x59443f){_0x791142=_0x791142-0x0;var _0x1273b6=_0xacf4[_0x791142];return _0x1273b6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4acf('0x0'));var jsonpatch=require(_0x4acf('0x1'));var rp=require(_0x4acf('0x2'));var moment=require(_0x4acf('0x3'));var BPromise=require(_0x4acf('0x4'));var Mustache=require(_0x4acf('0x5'));var util=require(_0x4acf('0x6'));var path=require('path');var sox=require(_0x4acf('0x7'));var csv=require(_0x4acf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4acf('0x9'));var _=require(_0x4acf('0xa'));var squel=require(_0x4acf('0xb'));var crypto=require(_0x4acf('0xc'));var jsforce=require(_0x4acf('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4acf('0xe'));var Papa=require('papaparse');var Redis=require(_0x4acf('0xf'));var authService=require(_0x4acf('0x10'));var qs=require(_0x4acf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4acf('0x12'));var logger=require(_0x4acf('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x4acf('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1783d2,_0x979f49){_0x979f49=_0x979f49||0xcc;return function(_0x3734e1){if(_0x3734e1){return _0x1783d2[_0x4acf('0x15')](_0x979f49);}return _0x1783d2[_0x4acf('0x16')](_0x979f49)[_0x4acf('0x17')]();};}function respondWithResult(_0x7ab3ea,_0x15386a){_0x15386a=_0x15386a||0xc8;return function(_0x2025ca){if(_0x2025ca){return _0x7ab3ea[_0x4acf('0x16')](_0x15386a)[_0x4acf('0x18')](_0x2025ca);}};}function respondWithFilteredResult(_0x5f0260,_0x1b584a){return function(_0x57d8e0){if(_0x57d8e0){var _0x34cec1=typeof _0x1b584a[_0x4acf('0x19')]===_0x4acf('0x1a')&&typeof _0x1b584a['limit']==='undefined';var _0x13d10e=_0x57d8e0[_0x4acf('0x1b')];var _0x240c00=_0x34cec1?0x0:_0x1b584a['offset'];var _0x2a678b=_0x34cec1?_0x57d8e0[_0x4acf('0x1b')]:_0x1b584a[_0x4acf('0x19')]+_0x1b584a[_0x4acf('0x1c')];var _0x2f0cec;if(_0x2a678b>=_0x13d10e){_0x2a678b=_0x13d10e;_0x2f0cec=0xc8;}else{_0x2f0cec=0xce;}_0x5f0260[_0x4acf('0x16')](_0x2f0cec);return _0x5f0260[_0x4acf('0x1d')](_0x4acf('0x1e'),_0x240c00+'-'+_0x2a678b+'/'+_0x13d10e)[_0x4acf('0x18')](_0x57d8e0);}return null;};}function patchUpdates(_0x2feb89){return function(_0x1a3118){try{jsonpatch['apply'](_0x1a3118,_0x2feb89,!![]);}catch(_0x28d698){return BPromise[_0x4acf('0x1f')](_0x28d698);}return _0x1a3118['save']();};}function saveUpdates(_0x41e5d2,_0x17775f){return function(_0x569d9e){if(_0x569d9e){return _0x569d9e[_0x4acf('0x20')](_0x41e5d2)[_0x4acf('0x21')](function(_0x433b7a){return _0x433b7a;});}return null;};}function removeEntity(_0x454555,_0x53885f){return function(_0x1a2286){if(_0x1a2286){return _0x1a2286[_0x4acf('0x22')]()['then'](function(){_0x454555[_0x4acf('0x16')](0xcc)[_0x4acf('0x17')]();});}};}function handleEntityNotFound(_0x52a84a,_0x126522){return function(_0x7ebb){if(!_0x7ebb){_0x52a84a[_0x4acf('0x15')](0x194);}return _0x7ebb;};}function handleError(_0x16458f,_0x571a30){_0x571a30=_0x571a30||0x1f4;return function(_0x50236d){logger[_0x4acf('0x23')](_0x50236d[_0x4acf('0x24')]);if(_0x50236d[_0x4acf('0x25')]){delete _0x50236d[_0x4acf('0x25')];}_0x16458f[_0x4acf('0x16')](_0x571a30)[_0x4acf('0x26')](_0x50236d);};}exports[_0x4acf('0x27')]=function(_0x7a1e79,_0x382c41){var _0x2a3830={},_0x57989e={},_0x3521c2={'count':0x0,'rows':[]};var _0x3f5614=_[_0x4acf('0x28')](db[_0x4acf('0x29')][_0x4acf('0x2a')],function(_0x28570f){return{'name':_0x28570f[_0x4acf('0x2b')],'type':_0x28570f['type'][_0x4acf('0x2c')]};});_0x57989e[_0x4acf('0x2d')]=_[_0x4acf('0x28')](_0x3f5614,'name');_0x57989e[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0x7a1e79[_0x4acf('0x2e')]);_0x57989e[_0x4acf('0x30')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],_0x57989e[_0x4acf('0x2e')]);_0x2a3830[_0x4acf('0x31')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x32')]));_0x2a3830[_0x4acf('0x31')]=_0x2a3830[_0x4acf('0x31')]['length']?_0x2a3830[_0x4acf('0x31')]:_0x57989e[_0x4acf('0x2d')];if(!_0x7a1e79['query'][_0x4acf('0x33')]('nolimit')){_0x2a3830['limit']=qs['limit'](_0x7a1e79['query']['limit']);_0x2a3830['offset']=qs['offset'](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x19')]);}_0x2a3830['order']=qs[_0x4acf('0x34')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x34')]);_0x2a3830[_0x4acf('0x35')]=qs[_0x4acf('0x30')](_[_0x4acf('0x36')](_0x7a1e79[_0x4acf('0x2e')],_0x57989e[_0x4acf('0x30')]),_0x3f5614);if(_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x37')]){_0x2a3830['where']=_['merge'](_0x2a3830[_0x4acf('0x35')],{'$or':_[_0x4acf('0x28')](_0x3f5614,function(_0x4859b6){if(_0x4859b6[_0x4acf('0x38')]!==_0x4acf('0x39')){var _0x43a2ea={};_0x43a2ea[_0x4859b6[_0x4acf('0x25')]]={'$like':'%'+_0x7a1e79['query']['filter']+'%'};return _0x43a2ea;}})});}_0x2a3830=_[_0x4acf('0x3a')]({},_0x2a3830,_0x7a1e79[_0x4acf('0x3b')]);var _0x3d5529={'where':_0x2a3830[_0x4acf('0x35')]};return db['CmHopperFinal'][_0x4acf('0x1b')](_0x3d5529)[_0x4acf('0x21')](function(_0x4e9370){_0x3521c2['count']=_0x4e9370;if(_0x7a1e79['query']['includeAll']){_0x2a3830[_0x4acf('0x3c')]=[{'all':!![]}];}return db[_0x4acf('0x29')][_0x4acf('0x3d')](_0x2a3830);})['then'](function(_0x1015e3){_0x3521c2[_0x4acf('0x3e')]=_0x1015e3;return _0x3521c2;})[_0x4acf('0x21')](respondWithFilteredResult(_0x382c41,_0x2a3830))[_0x4acf('0x3f')](handleError(_0x382c41,null));};exports[_0x4acf('0x40')]=function(_0xea75e4,_0x7cf2a){var _0x17d5e9={'raw':!![],'where':{'id':_0xea75e4[_0x4acf('0x41')]['id']}},_0x461547={};_0x461547[_0x4acf('0x2d')]=_['keys'](db[_0x4acf('0x29')][_0x4acf('0x2a')]);_0x461547[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0xea75e4[_0x4acf('0x2e')]);_0x461547['filters']=_['intersection'](_0x461547[_0x4acf('0x2d')],_0x461547[_0x4acf('0x2e')]);_0x17d5e9[_0x4acf('0x31')]=_[_0x4acf('0x42')](_0x461547[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0xea75e4['query'][_0x4acf('0x32')]));_0x17d5e9['attributes']=_0x17d5e9[_0x4acf('0x31')][_0x4acf('0x43')]?_0x17d5e9['attributes']:_0x461547['model'];if(_0xea75e4[_0x4acf('0x2e')][_0x4acf('0x44')]){_0x17d5e9[_0x4acf('0x3c')]=[{'all':!![]}];}_0x17d5e9=_[_0x4acf('0x3a')]({},_0x17d5e9,_0xea75e4['options']);return db[_0x4acf('0x29')][_0x4acf('0x45')](_0x17d5e9)[_0x4acf('0x21')](handleEntityNotFound(_0x7cf2a,null))[_0x4acf('0x21')](respondWithResult(_0x7cf2a,null))[_0x4acf('0x3f')](handleError(_0x7cf2a,null));};exports[_0x4acf('0x46')]=function(_0x1bd7d0,_0x2d946c){return db['CmHopperFinal']['describe']()[_0x4acf('0x21')](respondWithResult(_0x2d946c,null))[_0x4acf('0x3f')](handleError(_0x2d946c,null));};exports[_0x4acf('0x20')]=function(_0x33bc52,_0x287406){if(_0x33bc52[_0x4acf('0x47')][_0x4acf('0x48')]){delete _0x33bc52[_0x4acf('0x47')][_0x4acf('0x48')];}return db[_0x4acf('0x29')][_0x4acf('0x45')]({'where':{'uniqueid':_0x33bc52[_0x4acf('0x41')]['id']}})['then'](handleEntityNotFound(_0x287406,null))[_0x4acf('0x21')](saveUpdates(_0x33bc52[_0x4acf('0x47')],null))[_0x4acf('0x21')](respondWithResult(_0x287406,null))[_0x4acf('0x3f')](handleError(_0x287406,null));};exports[_0x4acf('0x49')]=function(_0x3cf54a,_0x2785b9,_0x2d0561){return db[_0x4acf('0x29')][_0x4acf('0x3d')]({'raw':![],'where':{'VoiceQueueId':_0x3cf54a[_0x4acf('0x41')]['id']},'attributes':[[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x200,\x201,\x20null'))),_0x4acf('0x4d')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x4e')))),_0x4acf('0x4f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x50')))),'busyContacts'],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x51')))),_0x4acf('0x52')],[db['sequelize']['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x4acf('0x53')],[db['sequelize']['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x54')))),_0x4acf('0x55')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x2022,\x201,\x20null'))),_0x4acf('0x56')],[db[_0x4acf('0x4a')]['fn']('COUNT',db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal'](_0x4acf('0x57')))),_0x4acf('0x58')]]})[_0x4acf('0x21')](handleEntityNotFound(_0x2785b9,null))['then'](respondWithResult(_0x2785b9,null))[_0x4acf('0x3f')](handleError(_0x2785b9,null));};exports[_0x4acf('0x59')]=function(_0xb5bd81,_0x452ee6,_0x54b093){return db[_0x4acf('0x29')][_0x4acf('0x3d')]({'raw':![],'where':{'CampaignId':_0xb5bd81[_0x4acf('0x41')]['id']},'attributes':[[db['sequelize']['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x5a')))),_0x4acf('0x4d')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x4e')))),_0x4acf('0x4f')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x50')))),_0x4acf('0x5b')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x4acf('0x52')],[db['sequelize']['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x4acf('0x5c')))),_0x4acf('0x53')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db['sequelize'][_0x4acf('0x4c')](_0x4acf('0x5d')))),_0x4acf('0x56')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db['sequelize'][_0x4acf('0x4c')]('`state`\x20=\x2019,\x201,\x20null'))),_0x4acf('0x58')]]})[_0x4acf('0x21')](handleEntityNotFound(_0x452ee6,null))[_0x4acf('0x21')](respondWithResult(_0x452ee6,null))[_0x4acf('0x3f')](handleError(_0x452ee6,null));};exports[_0x4acf('0x5e')]=function(_0x173655,_0x1f2dbc,_0xc0d942){return db[_0x4acf('0x5f')][_0x4acf('0x45')]({'where':{'id':_0x173655[_0x4acf('0x41')]['id']}})[_0x4acf('0x21')](handleEntityNotFound(_0x1f2dbc,null))['then'](function(_0x11f356){var _0xacca91;if(_0x11f356){_0xacca91=squel[_0x4acf('0x60')]()[_0x4acf('0x61')](_0x4acf('0x62'))[_0x4acf('0x63')]([_0x4acf('0x64'),_0x4acf('0x65'),_0x4acf('0x66'),_0x4acf('0x67'),'VoiceQueueId',_0x4acf('0x68'),_0x4acf('0x69')],squel['select']()[_0x4acf('0x6a')](_0x4acf('0x6b'),'phone')[_0x4acf('0x6a')]('NOW()','scheduledAt')[_0x4acf('0x6a')]('ANY_VALUE(ContactId)',_0x4acf('0x66'))[_0x4acf('0x6a')](_0x4acf('0x6c'),_0x4acf('0x67'))['field'](_0x4acf('0x6d'),_0x4acf('0x6e'))['field']('NOW()','createdAt')[_0x4acf('0x6a')]('NOW()',_0x4acf('0x69'))[_0x4acf('0x6f')](_0x4acf('0x70'))['where'](_0x4acf('0x71'),_0x173655[_0x4acf('0x41')]['id']['toString']())[_0x4acf('0x35')](_0x4acf('0x72'),_0x173655['body'][_0x4acf('0x73')][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x75'))[_0x4acf('0x35')](_0x4acf('0x76'),squel['select']()[_0x4acf('0x6a')]('phone')[_0x4acf('0x6f')](_0x4acf('0x62'))['where']('VoiceQueueId\x20=\x20?',_0x173655['params']['id'][_0x4acf('0x74')]()))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x4acf('0x6a')]('calleridnum')[_0x4acf('0x6f')](_0x4acf('0x70'))[_0x4acf('0x35')](_0x4acf('0x71'),_0x173655[_0x4acf('0x41')]['id']['toString']())['where'](_0x4acf('0x77')))[_0x4acf('0x78')](_0x4acf('0x66')))[_0x4acf('0x74')]();return db[_0x4acf('0x4a')]['query'](_0xacca91);}return[];})[_0x4acf('0x21')](respondWithResult(_0x1f2dbc,null))[_0x4acf('0x3f')](handleError(_0x1f2dbc,null));};exports[_0x4acf('0x79')]=function(_0x453c6d,_0x1a82e7,_0x3d02c7){return db[_0x4acf('0x7a')]['find']({'where':{'id':_0x453c6d[_0x4acf('0x41')]['id']}})['then'](handleEntityNotFound(_0x1a82e7,null))[_0x4acf('0x21')](function(_0x1bbe6d){var _0x2a36e2;if(_0x1bbe6d){_0x2a36e2=squel[_0x4acf('0x60')]()[_0x4acf('0x61')]('cm_hopper')[_0x4acf('0x63')](['phone',_0x4acf('0x65'),_0x4acf('0x66'),'ListId',_0x4acf('0x7b'),_0x4acf('0x68'),_0x4acf('0x69')],squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')]('ANY_VALUE(calleridnum)',_0x4acf('0x64'))['field']('NOW()',_0x4acf('0x65'))[_0x4acf('0x6a')](_0x4acf('0x7d'),_0x4acf('0x66'))['field']('ANY_VALUE(ListId)',_0x4acf('0x67'))[_0x4acf('0x6a')](_0x4acf('0x7e'),_0x4acf('0x7b'))[_0x4acf('0x6a')](_0x4acf('0x7f'),_0x4acf('0x68'))[_0x4acf('0x6a')]('NOW()','updatedAt')[_0x4acf('0x6f')](_0x4acf('0x70'))[_0x4acf('0x35')](_0x4acf('0x80'),_0x453c6d[_0x4acf('0x41')]['id'][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x72'),_0x453c6d[_0x4acf('0x47')]['state'][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x75'))[_0x4acf('0x35')](_0x4acf('0x76'),squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')](_0x4acf('0x64'))[_0x4acf('0x6f')](_0x4acf('0x62'))[_0x4acf('0x35')](_0x4acf('0x80'),_0x453c6d[_0x4acf('0x41')]['id']['toString']()))[_0x4acf('0x35')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')]('calleridnum')[_0x4acf('0x6f')](_0x4acf('0x70'))['where']('CampaignId\x20=\x20?',_0x453c6d[_0x4acf('0x41')]['id'][_0x4acf('0x74')]())['where']('state\x20=\x204'))[_0x4acf('0x78')](_0x4acf('0x66')))[_0x4acf('0x74')]();return db[_0x4acf('0x4a')]['query'](_0x2a36e2);}return[];})[_0x4acf('0x21')](respondWithResult(_0x1a82e7,null))[_0x4acf('0x3f')](handleError(_0x1a82e7,null));};exports[_0x4acf('0x81')]=function(_0x34e1ea,_0x43e9bf,_0x367ad4){return db[_0x4acf('0x82')]['findOne']({'where':{'VoiceQueueId':_0x34e1ea[_0x4acf('0x47')][_0x4acf('0x6e')],'CampaignId':_0x34e1ea[_0x4acf('0x47')]['CampaignId'],'ContactId':_0x34e1ea[_0x4acf('0x47')][_0x4acf('0x66')]}})[_0x4acf('0x21')](handleEntityNotFound(_0x43e9bf,null))[_0x4acf('0x21')](function(_0x37ffab){if(_0x37ffab){return _0x37ffab;}return null;})[_0x4acf('0x21')](respondWithResult(_0x43e9bf,null))[_0x4acf('0x3f')](handleError(_0x43e9bf,null));};
\ No newline at end of file
+var _0x90b1=['uniqueid','countContactsQueueCampaignHopperFinal','findAll','params','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20NOT\x20IN\x20(?)','select','calleridnum','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','into','ListId','ANY_VALUE(CampaignId)','CampaignId','CampaignId\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','CmHopper','findOne','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','type','options','CmHopperFinal','includeAll','rows','include','find','catch','update','body'];(function(_0x508835,_0x80e24b){var _0x5b8e84=function(_0x299554){while(--_0x299554){_0x508835['push'](_0x508835['shift']());}};_0x5b8e84(++_0x80e24b);}(_0x90b1,0x1bb));var _0x190b=function(_0x5dcfd0,_0x19b914){_0x5dcfd0=_0x5dcfd0-0x0;var _0x5e7661=_0x90b1[_0x5dcfd0];return _0x5e7661;};'use strict';var emlformat=require(_0x190b('0x0'));var rimraf=require(_0x190b('0x1'));var zipdir=require(_0x190b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x190b('0x3'));var BPromise=require(_0x190b('0x4'));var Mustache=require(_0x190b('0x5'));var util=require(_0x190b('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(_0x190b('0x7'));var _=require(_0x190b('0x8'));var squel=require(_0x190b('0x9'));var crypto=require(_0x190b('0xa'));var jsforce=require(_0x190b('0xb'));var deskjs=require(_0x190b('0xc'));var toCsv=require(_0x190b('0xd'));var querystring=require('querystring');var Papa=require(_0x190b('0xe'));var Redis=require(_0x190b('0xf'));var authService=require(_0x190b('0x10'));var qs=require(_0x190b('0x11'));var as=require(_0x190b('0x12'));var hardwareService=require(_0x190b('0x13'));var logger=require(_0x190b('0x14'))(_0x190b('0x15'));var utils=require('../../config/utils');var config=require(_0x190b('0x16'));var licenseUtil=require(_0x190b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d63ac,_0x596c48){_0x596c48=_0x596c48||0xcc;return function(_0x286c81){if(_0x286c81){return _0x4d63ac[_0x190b('0x18')](_0x596c48);}return _0x4d63ac[_0x190b('0x19')](_0x596c48)[_0x190b('0x1a')]();};}function respondWithResult(_0x2e12d4,_0x13544c){_0x13544c=_0x13544c||0xc8;return function(_0x1ff180){if(_0x1ff180){return _0x2e12d4[_0x190b('0x19')](_0x13544c)[_0x190b('0x1b')](_0x1ff180);}};}function respondWithFilteredResult(_0x1a046f,_0xab346){return function(_0x3e8781){if(_0x3e8781){var _0x3fbfc3=typeof _0xab346[_0x190b('0x1c')]===_0x190b('0x1d')&&typeof _0xab346['limit']===_0x190b('0x1d');var _0x5efbed=_0x3e8781[_0x190b('0x1e')];var _0x21e458=_0x3fbfc3?0x0:_0xab346[_0x190b('0x1c')];var _0x16c009=_0x3fbfc3?_0x3e8781['count']:_0xab346[_0x190b('0x1c')]+_0xab346[_0x190b('0x1f')];var _0x441a2b;if(_0x16c009>=_0x5efbed){_0x16c009=_0x5efbed;_0x441a2b=0xc8;}else{_0x441a2b=0xce;}_0x1a046f[_0x190b('0x19')](_0x441a2b);return _0x1a046f[_0x190b('0x20')](_0x190b('0x21'),_0x21e458+'-'+_0x16c009+'/'+_0x5efbed)['json'](_0x3e8781);}return null;};}function patchUpdates(_0x3ed24c){return function(_0x14f0a5){try{jsonpatch['apply'](_0x14f0a5,_0x3ed24c,!![]);}catch(_0xb4c32b){return BPromise['reject'](_0xb4c32b);}return _0x14f0a5['save']();};}function saveUpdates(_0xcd15e5,_0x42e7f2){return function(_0x332006){if(_0x332006){return _0x332006['update'](_0xcd15e5)[_0x190b('0x22')](function(_0x2e633e){return _0x2e633e;});}return null;};}function removeEntity(_0x16e989,_0x292ce3){return function(_0x3b8c74){if(_0x3b8c74){return _0x3b8c74[_0x190b('0x23')]()[_0x190b('0x22')](function(){_0x16e989['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x262a63,_0x1a5f86){return function(_0x50605b){if(!_0x50605b){_0x262a63['sendStatus'](0x194);}return _0x50605b;};}function handleError(_0x3260d5,_0x4e2a93){_0x4e2a93=_0x4e2a93||0x1f4;return function(_0x328e5e){logger[_0x190b('0x24')](_0x328e5e['stack']);if(_0x328e5e[_0x190b('0x25')]){delete _0x328e5e[_0x190b('0x25')];}_0x3260d5['status'](_0x4e2a93)[_0x190b('0x26')](_0x328e5e);};}exports[_0x190b('0x27')]=function(_0x359b4a,_0x494f3f){var _0x536d7b={},_0x3730cc={},_0x4d5f3f={'count':0x0,'rows':[]};var _0x14be2c=_[_0x190b('0x28')](db['CmHopperFinal'][_0x190b('0x29')],function(_0x580b92){return{'name':_0x580b92[_0x190b('0x2a')],'type':_0x580b92['type'][_0x190b('0x2b')]};});_0x3730cc['model']=_[_0x190b('0x28')](_0x14be2c,_0x190b('0x25'));_0x3730cc['query']=_[_0x190b('0x2c')](_0x359b4a[_0x190b('0x2d')]);_0x3730cc[_0x190b('0x2e')]=_[_0x190b('0x2f')](_0x3730cc[_0x190b('0x30')],_0x3730cc[_0x190b('0x2d')]);_0x536d7b[_0x190b('0x31')]=_[_0x190b('0x2f')](_0x3730cc['model'],qs['fields'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x32')]));_0x536d7b['attributes']=_0x536d7b[_0x190b('0x31')][_0x190b('0x33')]?_0x536d7b[_0x190b('0x31')]:_0x3730cc[_0x190b('0x30')];if(!_0x359b4a[_0x190b('0x2d')][_0x190b('0x34')](_0x190b('0x35'))){_0x536d7b['limit']=qs['limit'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1f')]);_0x536d7b[_0x190b('0x1c')]=qs['offset'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1c')]);}_0x536d7b[_0x190b('0x36')]=qs['sort'](_0x359b4a[_0x190b('0x2d')]['sort']);_0x536d7b['where']=qs[_0x190b('0x2e')](_[_0x190b('0x37')](_0x359b4a['query'],_0x3730cc[_0x190b('0x2e')]),_0x14be2c);if(_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]){_0x536d7b['where']=_[_0x190b('0x39')](_0x536d7b[_0x190b('0x3a')],{'$or':_['map'](_0x14be2c,function(_0x5d006d){if(_0x5d006d[_0x190b('0x3b')]!=='VIRTUAL'){var _0x46bdba={};_0x46bdba[_0x5d006d[_0x190b('0x25')]]={'$like':'%'+_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]+'%'};return _0x46bdba;}})});}_0x536d7b=_['merge']({},_0x536d7b,_0x359b4a[_0x190b('0x3c')]);var _0x5f118c={'where':_0x536d7b[_0x190b('0x3a')]};return db[_0x190b('0x3d')]['count'](_0x5f118c)[_0x190b('0x22')](function(_0x2a75d2){_0x4d5f3f[_0x190b('0x1e')]=_0x2a75d2;if(_0x359b4a['query'][_0x190b('0x3e')]){_0x536d7b['include']=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x536d7b);})[_0x190b('0x22')](function(_0x3aef1d){_0x4d5f3f[_0x190b('0x3f')]=_0x3aef1d;return _0x4d5f3f;})[_0x190b('0x22')](respondWithFilteredResult(_0x494f3f,_0x536d7b))['catch'](handleError(_0x494f3f,null));};exports['show']=function(_0x4045b7,_0x492240){var _0x110891={'raw':!![],'where':{'id':_0x4045b7['params']['id']}},_0x3d67f0={};_0x3d67f0[_0x190b('0x30')]=_[_0x190b('0x2c')](db[_0x190b('0x3d')]['rawAttributes']);_0x3d67f0[_0x190b('0x2d')]=_[_0x190b('0x2c')](_0x4045b7['query']);_0x3d67f0[_0x190b('0x2e')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],_0x3d67f0[_0x190b('0x2d')]);_0x110891[_0x190b('0x31')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],qs['fields'](_0x4045b7[_0x190b('0x2d')][_0x190b('0x32')]));_0x110891[_0x190b('0x31')]=_0x110891[_0x190b('0x31')][_0x190b('0x33')]?_0x110891[_0x190b('0x31')]:_0x3d67f0[_0x190b('0x30')];if(_0x4045b7['query'][_0x190b('0x3e')]){_0x110891[_0x190b('0x40')]=[{'all':!![]}];}_0x110891=_[_0x190b('0x39')]({},_0x110891,_0x4045b7['options']);return db[_0x190b('0x3d')][_0x190b('0x41')](_0x110891)[_0x190b('0x22')](handleEntityNotFound(_0x492240,null))[_0x190b('0x22')](respondWithResult(_0x492240,null))[_0x190b('0x42')](handleError(_0x492240,null));};exports['describe']=function(_0x1f2262,_0xadc789){return db[_0x190b('0x3d')]['describe']()[_0x190b('0x22')](respondWithResult(_0xadc789,null))[_0x190b('0x42')](handleError(_0xadc789,null));};exports[_0x190b('0x43')]=function(_0x505e52,_0x4cb561){if(_0x505e52[_0x190b('0x44')][_0x190b('0x45')]){delete _0x505e52[_0x190b('0x44')][_0x190b('0x45')];}return db[_0x190b('0x3d')][_0x190b('0x41')]({'where':{'uniqueid':_0x505e52['params']['id']}})[_0x190b('0x22')](handleEntityNotFound(_0x4cb561,null))[_0x190b('0x22')](saveUpdates(_0x505e52[_0x190b('0x44')],null))['then'](respondWithResult(_0x4cb561,null))[_0x190b('0x42')](handleError(_0x4cb561,null));};exports[_0x190b('0x46')]=function(_0x215ab6,_0x503700,_0xbc6757){return db[_0x190b('0x3d')][_0x190b('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x215ab6[_0x190b('0x48')]['id']},'attributes':[[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x4c')))),_0x190b('0x4d')],[db['sequelize']['fn'](_0x190b('0x4a'),db['sequelize']['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')]('`state`\x20=\x203,\x201,\x20null'))),_0x190b('0x4e')],[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x4f')))),_0x190b('0x50')],[db['sequelize']['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')]['literal'](_0x190b('0x51')))),'congestionContacts'],[db['sequelize']['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x52')))),_0x190b('0x53')],[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x54')))),_0x190b('0x55')],[db[_0x190b('0x49')]['fn']('COUNT',db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x56')))),'reCallContacts'],[db['sequelize']['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db['sequelize'][_0x190b('0x4b')]('`state`\x20=\x2019,\x201,\x20null'))),_0x190b('0x57')]]})[_0x190b('0x22')](handleEntityNotFound(_0x503700,null))[_0x190b('0x22')](respondWithResult(_0x503700,null))['catch'](handleError(_0x503700,null));};exports[_0x190b('0x58')]=function(_0x270b59,_0xffe7cb,_0x405e04){return db[_0x190b('0x3d')][_0x190b('0x47')]({'raw':![],'where':{'CampaignId':_0x270b59[_0x190b('0x48')]['id']},'attributes':[[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db['sequelize']['fn']('IF',db['sequelize'][_0x190b('0x4b')](_0x190b('0x4c')))),_0x190b('0x4d')],[db[_0x190b('0x49')]['fn']('COUNT',db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')]['literal'](_0x190b('0x59')))),_0x190b('0x4e')],[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x4f')))),'busyContacts'],[db[_0x190b('0x49')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x51')))),'congestionContacts'],[db['sequelize']['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x52')))),_0x190b('0x53')],[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db['sequelize']['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')](_0x190b('0x54')))),_0x190b('0x55')],[db[_0x190b('0x49')]['fn']('COUNT',db[_0x190b('0x49')]['fn']('IF',db[_0x190b('0x49')][_0x190b('0x4b')]('`state`\x20=\x2022,\x201,\x20null'))),_0x190b('0x5a')],[db[_0x190b('0x49')]['fn'](_0x190b('0x4a'),db[_0x190b('0x49')]['fn']('IF',db['sequelize'][_0x190b('0x4b')](_0x190b('0x5b')))),_0x190b('0x57')]]})[_0x190b('0x22')](handleEntityNotFound(_0xffe7cb,null))['then'](respondWithResult(_0xffe7cb,null))[_0x190b('0x42')](handleError(_0xffe7cb,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x2495c9,_0x348beb,_0x360d39){return db[_0x190b('0x5c')]['find']({'where':{'id':_0x2495c9[_0x190b('0x48')]['id']}})['then'](handleEntityNotFound(_0x348beb,null))[_0x190b('0x22')](function(_0x5073d2){var _0x49b60c;if(_0x5073d2){_0x49b60c=squel[_0x190b('0x5d')]()['into'](_0x190b('0x5e'))[_0x190b('0x5f')]([_0x190b('0x60'),_0x190b('0x61'),_0x190b('0x62'),'ListId',_0x190b('0x63'),_0x190b('0x64'),_0x190b('0x65')],squel['select']()[_0x190b('0x66')](_0x190b('0x67'),'phone')[_0x190b('0x66')](_0x190b('0x68'),_0x190b('0x61'))['field'](_0x190b('0x69'),_0x190b('0x62'))[_0x190b('0x66')](_0x190b('0x6a'),'ListId')[_0x190b('0x66')](_0x190b('0x6b'),_0x190b('0x63'))['field'](_0x190b('0x68'),_0x190b('0x64'))[_0x190b('0x66')]('NOW()',_0x190b('0x65'))[_0x190b('0x6c')](_0x190b('0x6d'))[_0x190b('0x3a')](_0x190b('0x6e'),_0x2495c9['params']['id']['toString']())[_0x190b('0x3a')](_0x190b('0x6f'),_0x2495c9['body'][_0x190b('0x70')][_0x190b('0x71')]())['where']('calleridnum\x20IS\x20NOT\x20NULL')[_0x190b('0x3a')](_0x190b('0x72'),squel['select']()['field'](_0x190b('0x60'))[_0x190b('0x6c')](_0x190b('0x5e'))[_0x190b('0x3a')](_0x190b('0x6e'),_0x2495c9['params']['id']['toString']()))[_0x190b('0x3a')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x190b('0x73')]()[_0x190b('0x66')](_0x190b('0x74'))[_0x190b('0x6c')](_0x190b('0x6d'))[_0x190b('0x3a')](_0x190b('0x6e'),_0x2495c9[_0x190b('0x48')]['id'][_0x190b('0x71')]())[_0x190b('0x3a')](_0x190b('0x75')))['group'](_0x190b('0x62')))[_0x190b('0x71')]();return db[_0x190b('0x49')]['query'](_0x49b60c);}return[];})['then'](respondWithResult(_0x348beb,null))[_0x190b('0x42')](handleError(_0x348beb,null));};exports[_0x190b('0x76')]=function(_0x4b988d,_0x40ac95,_0x18c5f4){return db[_0x190b('0x77')]['find']({'where':{'id':_0x4b988d[_0x190b('0x48')]['id']}})[_0x190b('0x22')](handleEntityNotFound(_0x40ac95,null))['then'](function(_0x23298e){var _0x2ba27b;if(_0x23298e){_0x2ba27b=squel['insert']()[_0x190b('0x78')]('cm_hopper')['fromQuery'](['phone','scheduledAt',_0x190b('0x62'),_0x190b('0x79'),'CampaignId',_0x190b('0x64'),_0x190b('0x65')],squel['select']()[_0x190b('0x66')](_0x190b('0x67'),_0x190b('0x60'))[_0x190b('0x66')](_0x190b('0x68'),_0x190b('0x61'))[_0x190b('0x66')](_0x190b('0x69'),_0x190b('0x62'))['field'](_0x190b('0x6a'),'ListId')['field'](_0x190b('0x7a'),_0x190b('0x7b'))[_0x190b('0x66')](_0x190b('0x68'),_0x190b('0x64'))[_0x190b('0x66')](_0x190b('0x68'),_0x190b('0x65'))[_0x190b('0x6c')](_0x190b('0x6d'))[_0x190b('0x3a')](_0x190b('0x7c'),_0x4b988d['params']['id'][_0x190b('0x71')]())[_0x190b('0x3a')](_0x190b('0x6f'),_0x4b988d[_0x190b('0x44')][_0x190b('0x70')][_0x190b('0x71')]())[_0x190b('0x3a')](_0x190b('0x7d'))[_0x190b('0x3a')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x190b('0x73')]()[_0x190b('0x66')](_0x190b('0x60'))['from'](_0x190b('0x5e'))[_0x190b('0x3a')]('CampaignId\x20=\x20?',_0x4b988d['params']['id'][_0x190b('0x71')]()))[_0x190b('0x3a')](_0x190b('0x72'),squel[_0x190b('0x73')]()[_0x190b('0x66')](_0x190b('0x74'))[_0x190b('0x6c')](_0x190b('0x6d'))[_0x190b('0x3a')](_0x190b('0x7c'),_0x4b988d['params']['id'][_0x190b('0x71')]())[_0x190b('0x3a')](_0x190b('0x75')))['group'](_0x190b('0x62')))[_0x190b('0x71')]();return db[_0x190b('0x49')][_0x190b('0x2d')](_0x2ba27b);}return[];})[_0x190b('0x22')](respondWithResult(_0x40ac95,null))[_0x190b('0x42')](handleError(_0x40ac95,null));};exports['checkContactHopper']=function(_0x476c86,_0x298824,_0x5e7c76){return db[_0x190b('0x7e')][_0x190b('0x7f')]({'where':{'VoiceQueueId':_0x476c86[_0x190b('0x44')][_0x190b('0x63')],'CampaignId':_0x476c86[_0x190b('0x44')][_0x190b('0x7b')],'ContactId':_0x476c86[_0x190b('0x44')][_0x190b('0x62')]}})['then'](handleEntityNotFound(_0x298824,null))[_0x190b('0x22')](function(_0x1b3168){if(_0x1b3168){return _0x1b3168;}return null;})[_0x190b('0x22')](respondWithResult(_0x298824,null))[_0x190b('0x42')](handleError(_0x298824,null));};
\ No newline at end of file
index 9fc5812..48781d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30f=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','cm_hopper_final','calleridnum','uniqueid','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa30f,0x14f));var _0xfa30=function(_0x4411a3,_0x3e330e){_0x4411a3=_0x4411a3-0x0;var _0x14724f=_0xa30f[_0x4411a3];return _0x14724f;};'use strict';var _=require(_0xfa30('0x0'));var util=require('util');var logger=require(_0xfa30('0x1'))(_0xfa30('0x2'));var moment=require(_0xfa30('0x3'));var BPromise=require(_0xfa30('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfa30('0x5'));var rimraf=require(_0xfa30('0x6'));var config=require(_0xfa30('0x7'));var attributes=require(_0xfa30('0x8'));module[_0xfa30('0x9')]=function(_0x56ce79,_0xc852be){return _0x56ce79[_0xfa30('0xa')]('CmHopperFinal',attributes,{'tableName':_0xfa30('0xb'),'paranoid':![],'indexes':[{'name':_0xfa30('0xc'),'fields':[_0xfa30('0xc')]},{'name':_0xfa30('0xd'),'fields':[_0xfa30('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x727d=['util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid'];(function(_0x6fd7dc,_0x38e09f){var _0x505ddd=function(_0x22cbad){while(--_0x22cbad){_0x6fd7dc['push'](_0x6fd7dc['shift']());}};_0x505ddd(++_0x38e09f);}(_0x727d,0x6c));var _0xd727=function(_0x2de41e,_0x12a7dc){_0x2de41e=_0x2de41e-0x0;var _0x2e70d1=_0x727d[_0x2de41e];return _0x2e70d1;};'use strict';var _=require('lodash');var util=require(_0xd727('0x0'));var logger=require(_0xd727('0x1'))('api');var moment=require('moment');var BPromise=require(_0xd727('0x2'));var rp=require(_0xd727('0x3'));var fs=require('fs');var path=require(_0xd727('0x4'));var rimraf=require(_0xd727('0x5'));var config=require(_0xd727('0x6'));var attributes=require('./cmHopperFinal.attributes');module[_0xd727('0x7')]=function(_0x249aad,_0x4a334a){return _0x249aad['define'](_0xd727('0x8'),attributes,{'tableName':_0xd727('0x9'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0xd727('0xa')]},{'name':'uniqueid','fields':[_0xd727('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 44c1388..48be38f 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(_0x3d4755,_0x25df5d){var _0x3dc515=function(_0x132dbf){while(--_0x132dbf){_0x3d4755['push'](_0x3d4755['shift']());}};_0x3dc515(++_0x25df5d);}(_0x7a54,0x106));var _0x47a5=function(_0x4e2b67,_0x14da49){_0x4e2b67=_0x4e2b67-0x0;var _0x3f0a8f=_0x7a54[_0x4e2b67];return _0x3f0a8f;};'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(_0xa8b96c,_0x4c237a){var _0x5768f7=function(_0x50e19c){while(--_0x50e19c){_0xa8b96c['push'](_0xa8b96c['shift']());}};_0x5768f7(++_0x4c237a);}(_0xb10b,0x12a));var _0xbb10=function(_0x11731f,_0x2271b5){_0x11731f=_0x11731f-0x0;var _0x14587c=_0xb10b[_0x11731f];return _0x14587c;};'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 6327a57..19b31b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f8=['moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperFinal.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/campaign/moveContacts/:id'];(function(_0x21e71a,_0xf0b818){var _0x174f46=function(_0x2dd53e){while(--_0x2dd53e){_0x21e71a['push'](_0x21e71a['shift']());}};_0x174f46(++_0xf0b818);}(_0x39f8,0xb3));var _0x839f=function(_0x357574,_0xa77d16){_0x357574=_0x357574-0x0;var _0x242b12=_0x39f8[_0x357574];return _0x242b12;};'use strict';var multer=require(_0x839f('0x0'));var util=require('util');var path=require(_0x839f('0x1'));var timeout=require(_0x839f('0x2'));var express=require(_0x839f('0x3'));var router=express[_0x839f('0x4')]();var fs_extra=require(_0x839f('0x5'));var auth=require(_0x839f('0x6'));var interaction=require(_0x839f('0x7'));var config=require('../../config/environment');var controller=require(_0x839f('0x8'));router['get']('/',auth[_0x839f('0x9')](),controller[_0x839f('0xa')]);router['get'](_0x839f('0xb'),auth['isAuthenticated'](),controller[_0x839f('0xc')]);router[_0x839f('0xd')](_0x839f('0xe'),auth[_0x839f('0x9')](),controller[_0x839f('0xf')]);router[_0x839f('0xd')](_0x839f('0x10'),auth[_0x839f('0x9')](),controller[_0x839f('0x11')]);router['get']('/campaign/countAttributes/:id',auth[_0x839f('0x9')](),controller[_0x839f('0x12')]);router[_0x839f('0x13')]('/voice/queue/moveContacts/:id',auth[_0x839f('0x9')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0x839f('0x13')](_0x839f('0x14'),auth[_0x839f('0x9')](),controller[_0x839f('0x15')]);router[_0x839f('0x13')](_0x839f('0x16'),auth[_0x839f('0x9')](),controller['checkContactHopper']);router[_0x839f('0x17')](_0x839f('0xe'),auth[_0x839f('0x9')](),controller[_0x839f('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xb235=['moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id'];(function(_0x3616bb,_0x86fe00){var _0x1c0994=function(_0x46a1d4){while(--_0x46a1d4){_0x3616bb['push'](_0x3616bb['shift']());}};_0x1c0994(++_0x86fe00);}(_0xb235,0x10d));var _0x5b23=function(_0x12363c,_0x464c7b){_0x12363c=_0x12363c-0x0;var _0x2ab2c2=_0xb235[_0x12363c];return _0x2ab2c2;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x5b23('0x0'));var express=require(_0x5b23('0x1'));var router=express[_0x5b23('0x2')]();var fs_extra=require(_0x5b23('0x3'));var auth=require(_0x5b23('0x4'));var interaction=require(_0x5b23('0x5'));var config=require(_0x5b23('0x6'));var controller=require('./cmHopperFinal.controller');router[_0x5b23('0x7')]('/',auth[_0x5b23('0x8')](),controller[_0x5b23('0x9')]);router['get'](_0x5b23('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x5b23('0x7')](_0x5b23('0xb'),auth['isAuthenticated'](),controller[_0x5b23('0xc')]);router[_0x5b23('0x7')](_0x5b23('0xd'),auth[_0x5b23('0x8')](),controller[_0x5b23('0xe')]);router[_0x5b23('0x7')](_0x5b23('0xf'),auth[_0x5b23('0x8')](),controller[_0x5b23('0x10')]);router[_0x5b23('0x11')](_0x5b23('0x12'),auth['isAuthenticated'](),controller[_0x5b23('0x13')]);router[_0x5b23('0x11')](_0x5b23('0x14'),auth[_0x5b23('0x8')](),controller[_0x5b23('0x15')]);router[_0x5b23('0x11')]('/checkContactHopper',auth[_0x5b23('0x8')](),controller[_0x5b23('0x16')]);router[_0x5b23('0x17')]('/:id',auth[_0x5b23('0x8')](),controller['update']);module['exports']=router;
\ No newline at end of file
index cfc7387..eb3ee40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af9=['exports','INTEGER','DATE','STRING','BOOLEAN','sequelize'];(function(_0xd6da57,_0x3cd8a5){var _0x3509dc=function(_0x42349a){while(--_0x42349a){_0xd6da57['push'](_0xd6da57['shift']());}};_0x3509dc(++_0x3cd8a5);}(_0x7af9,0x1cd));var _0x97af=function(_0x5e04cb,_0x192b73){_0x5e04cb=_0x5e04cb-0x0;var _0x4f6f09=_0x7af9[_0x5e04cb];return _0x4f6f09;};'use strict';var Sequelize=require(_0x97af('0x0'));module[_0x97af('0x1')]={'state':{'type':Sequelize[_0x97af('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x97af('0x3')]},'countbusyretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x97af('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x97af('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x97af('0x3')]},'droptime':{'type':Sequelize[_0x97af('0x3')]},'endtime':{'type':Sequelize[_0x97af('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x97af('0x4')]},'campaign':{'type':Sequelize[_0x97af('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x97af('0x4')]},'reason':{'type':Sequelize[_0x97af('0x4')]},'amd':{'type':Sequelize[_0x97af('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x97af('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x97af('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x97af('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x97af('0x3')]},'recallme':{'type':Sequelize[_0x97af('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x97af('0x3')]},'edited':{'type':Sequelize[_0x97af('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x97af('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x46ee=['exports','INTEGER','STRING','DATE','BOOLEAN'];(function(_0x43df3e,_0x2dba36){var _0x2091fa=function(_0x33cf50){while(--_0x33cf50){_0x43df3e['push'](_0x43df3e['shift']());}};_0x2091fa(++_0x2dba36);}(_0x46ee,0x1cc));var _0xe46e=function(_0x4a9aba,_0x3f54a7){_0x4a9aba=_0x4a9aba-0x0;var _0x5eaac3=_0x46ee[_0x4a9aba];return _0x5eaac3;};'use strict';var Sequelize=require('sequelize');module[_0xe46e('0x0')]={'state':{'type':Sequelize[_0xe46e('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xe46e('0x2')]},'scheduledat':{'type':Sequelize[_0xe46e('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe46e('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xe46e('0x2')]},'originatecalleridname':{'type':Sequelize[_0xe46e('0x2')]},'calleridnum':{'type':Sequelize[_0xe46e('0x2')]},'calleridname':{'type':Sequelize[_0xe46e('0x2')]},'starttime':{'type':Sequelize[_0xe46e('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe46e('0x3')]},'droptime':{'type':Sequelize[_0xe46e('0x3')]},'endtime':{'type':Sequelize[_0xe46e('0x3')]},'ringtime':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe46e('0x2')]},'campaign':{'type':Sequelize[_0xe46e('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xe46e('0x2')]},'reason':{'type':Sequelize[_0xe46e('0x2')]},'amd':{'type':Sequelize[_0xe46e('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe46e('0x4')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe46e('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xe46e('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0xe46e('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xe46e('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 672b5ac..ae3dd51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf499=['key','model','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','uniqueid','eml-format','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','send','index','map','CmHopperHistory','fieldName','type'];(function(_0x77d76e,_0x106ed2){var _0x5620c8=function(_0x481b37){while(--_0x481b37){_0x77d76e['push'](_0x77d76e['shift']());}};_0x5620c8(++_0x106ed2);}(_0xf499,0x19c));var _0x9f49=function(_0x334f76,_0x19a450){_0x334f76=_0x334f76-0x0;var _0x297ee5=_0xf499[_0x334f76];return _0x297ee5;};'use strict';var emlformat=require(_0x9f49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9f49('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9f49('0x2'));var moment=require('moment');var BPromise=require(_0x9f49('0x3'));var Mustache=require(_0x9f49('0x4'));var util=require('util');var path=require(_0x9f49('0x5'));var sox=require(_0x9f49('0x6'));var csv=require(_0x9f49('0x7'));var ejs=require(_0x9f49('0x8'));var fs=require('fs');var fs_extra=require(_0x9f49('0x9'));var _=require(_0x9f49('0xa'));var squel=require('squel');var crypto=require(_0x9f49('0xb'));var jsforce=require(_0x9f49('0xc'));var deskjs=require(_0x9f49('0xd'));var toCsv=require(_0x9f49('0x7'));var querystring=require('querystring');var Papa=require(_0x9f49('0xe'));var Redis=require('ioredis');var authService=require(_0x9f49('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9f49('0x10'))(_0x9f49('0x11'));var utils=require(_0x9f49('0x12'));var config=require(_0x9f49('0x13'));var licenseUtil=require(_0x9f49('0x14'));var db=require(_0x9f49('0x15'))['db'];function respondWithStatusCode(_0x1d8dc8,_0x29d769){_0x29d769=_0x29d769||0xcc;return function(_0x3a3315){if(_0x3a3315){return _0x1d8dc8[_0x9f49('0x16')](_0x29d769);}return _0x1d8dc8['status'](_0x29d769)[_0x9f49('0x17')]();};}function respondWithResult(_0x5c3b22,_0x273453){_0x273453=_0x273453||0xc8;return function(_0x280e08){if(_0x280e08){return _0x5c3b22[_0x9f49('0x18')](_0x273453)[_0x9f49('0x19')](_0x280e08);}};}function respondWithFilteredResult(_0x7fc990,_0xd4904e){return function(_0x30a550){if(_0x30a550){var _0x8091da=typeof _0xd4904e[_0x9f49('0x1a')]===_0x9f49('0x1b')&&typeof _0xd4904e[_0x9f49('0x1c')]===_0x9f49('0x1b');var _0x2d0e6c=_0x30a550[_0x9f49('0x1d')];var _0x3e7076=_0x8091da?0x0:_0xd4904e[_0x9f49('0x1a')];var _0x30ecf3=_0x8091da?_0x30a550[_0x9f49('0x1d')]:_0xd4904e['offset']+_0xd4904e[_0x9f49('0x1c')];var _0x472328;if(_0x30ecf3>=_0x2d0e6c){_0x30ecf3=_0x2d0e6c;_0x472328=0xc8;}else{_0x472328=0xce;}_0x7fc990[_0x9f49('0x18')](_0x472328);return _0x7fc990['set'](_0x9f49('0x1e'),_0x3e7076+'-'+_0x30ecf3+'/'+_0x2d0e6c)[_0x9f49('0x19')](_0x30a550);}return null;};}function patchUpdates(_0x43fa4b){return function(_0x2e9362){try{jsonpatch[_0x9f49('0x1f')](_0x2e9362,_0x43fa4b,!![]);}catch(_0x4d3f2f){return BPromise[_0x9f49('0x20')](_0x4d3f2f);}return _0x2e9362[_0x9f49('0x21')]();};}function saveUpdates(_0x222998,_0x5f060d){return function(_0x43ea73){if(_0x43ea73){return _0x43ea73[_0x9f49('0x22')](_0x222998)[_0x9f49('0x23')](function(_0x1327d2){return _0x1327d2;});}return null;};}function removeEntity(_0x229863,_0x5861b6){return function(_0x545c92){if(_0x545c92){return _0x545c92['destroy']()['then'](function(){_0x229863[_0x9f49('0x18')](0xcc)[_0x9f49('0x17')]();});}};}function handleEntityNotFound(_0x315833,_0x1068fd){return function(_0x535ef1){if(!_0x535ef1){_0x315833[_0x9f49('0x16')](0x194);}return _0x535ef1;};}function handleError(_0x356ec1,_0x232ad6){_0x232ad6=_0x232ad6||0x1f4;return function(_0x586692){logger[_0x9f49('0x24')](_0x586692[_0x9f49('0x25')]);if(_0x586692['name']){delete _0x586692['name'];}_0x356ec1[_0x9f49('0x18')](_0x232ad6)[_0x9f49('0x26')](_0x586692);};}exports[_0x9f49('0x27')]=function(_0x441d29,_0x3c2a75){var _0x3bc1e2={},_0x4682af={},_0x4920ea={'count':0x0,'rows':[]};var _0x4e0da4=_[_0x9f49('0x28')](db[_0x9f49('0x29')]['rawAttributes'],function(_0x64850e){return{'name':_0x64850e[_0x9f49('0x2a')],'type':_0x64850e[_0x9f49('0x2b')][_0x9f49('0x2c')]};});_0x4682af[_0x9f49('0x2d')]=_['map'](_0x4e0da4,_0x9f49('0x2e'));_0x4682af[_0x9f49('0x2f')]=_[_0x9f49('0x30')](_0x441d29[_0x9f49('0x2f')]);_0x4682af['filters']=_[_0x9f49('0x31')](_0x4682af[_0x9f49('0x2d')],_0x4682af[_0x9f49('0x2f')]);_0x3bc1e2[_0x9f49('0x32')]=_[_0x9f49('0x31')](_0x4682af[_0x9f49('0x2d')],qs['fields'](_0x441d29[_0x9f49('0x2f')][_0x9f49('0x33')]));_0x3bc1e2[_0x9f49('0x32')]=_0x3bc1e2[_0x9f49('0x32')][_0x9f49('0x34')]?_0x3bc1e2[_0x9f49('0x32')]:_0x4682af[_0x9f49('0x2d')];if(!_0x441d29[_0x9f49('0x2f')][_0x9f49('0x35')](_0x9f49('0x36'))){_0x3bc1e2[_0x9f49('0x1c')]=qs[_0x9f49('0x1c')](_0x441d29[_0x9f49('0x2f')]['limit']);_0x3bc1e2['offset']=qs['offset'](_0x441d29['query'][_0x9f49('0x1a')]);}_0x3bc1e2[_0x9f49('0x37')]=qs[_0x9f49('0x38')](_0x441d29['query'][_0x9f49('0x38')]);_0x3bc1e2[_0x9f49('0x39')]=qs[_0x9f49('0x3a')](_[_0x9f49('0x3b')](_0x441d29[_0x9f49('0x2f')],_0x4682af[_0x9f49('0x3a')]),_0x4e0da4);if(_0x441d29[_0x9f49('0x2f')][_0x9f49('0x3c')]){_0x3bc1e2['where']=_[_0x9f49('0x3d')](_0x3bc1e2['where'],{'$or':_[_0x9f49('0x28')](_0x4e0da4,function(_0x462815){if(_0x462815[_0x9f49('0x2b')]!==_0x9f49('0x3e')){var _0x48a903={};_0x48a903[_0x462815['name']]={'$like':'%'+_0x441d29[_0x9f49('0x2f')][_0x9f49('0x3c')]+'%'};return _0x48a903;}})});}_0x3bc1e2=_[_0x9f49('0x3d')]({},_0x3bc1e2,_0x441d29[_0x9f49('0x3f')]);var _0x358a26={'where':_0x3bc1e2[_0x9f49('0x39')]};return db['CmHopperHistory'][_0x9f49('0x1d')](_0x358a26)[_0x9f49('0x23')](function(_0x3d9494){_0x4920ea[_0x9f49('0x1d')]=_0x3d9494;if(_0x441d29[_0x9f49('0x2f')][_0x9f49('0x40')]){_0x3bc1e2['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x9f49('0x41')](_0x3bc1e2);})[_0x9f49('0x23')](function(_0x1650fa){_0x4920ea[_0x9f49('0x42')]=_0x1650fa;return _0x4920ea;})[_0x9f49('0x23')](respondWithFilteredResult(_0x3c2a75,_0x3bc1e2))[_0x9f49('0x43')](handleError(_0x3c2a75,null));};exports[_0x9f49('0x44')]=function(_0x1f0b87,_0x346232){var _0xf39965={'raw':!![],'where':{'id':_0x1f0b87[_0x9f49('0x45')]['id']}},_0x1fd073={};_0x1fd073[_0x9f49('0x2d')]=_[_0x9f49('0x30')](db[_0x9f49('0x29')][_0x9f49('0x46')]);_0x1fd073['query']=_[_0x9f49('0x30')](_0x1f0b87[_0x9f49('0x2f')]);_0x1fd073[_0x9f49('0x3a')]=_[_0x9f49('0x31')](_0x1fd073[_0x9f49('0x2d')],_0x1fd073[_0x9f49('0x2f')]);_0xf39965['attributes']=_[_0x9f49('0x31')](_0x1fd073['model'],qs[_0x9f49('0x33')](_0x1f0b87[_0x9f49('0x2f')][_0x9f49('0x33')]));_0xf39965['attributes']=_0xf39965[_0x9f49('0x32')]['length']?_0xf39965['attributes']:_0x1fd073[_0x9f49('0x2d')];if(_0x1f0b87[_0x9f49('0x2f')][_0x9f49('0x40')]){_0xf39965['include']=[{'all':!![]}];}_0xf39965=_[_0x9f49('0x3d')]({},_0xf39965,_0x1f0b87[_0x9f49('0x3f')]);return db[_0x9f49('0x29')][_0x9f49('0x47')](_0xf39965)[_0x9f49('0x23')](handleEntityNotFound(_0x346232,null))['then'](respondWithResult(_0x346232,null))[_0x9f49('0x43')](handleError(_0x346232,null));};exports[_0x9f49('0x48')]=function(_0x4cb856,_0x3de919){return db[_0x9f49('0x29')][_0x9f49('0x48')](_0x4cb856[_0x9f49('0x49')],{})[_0x9f49('0x23')](respondWithResult(_0x3de919,0xc9))[_0x9f49('0x43')](handleError(_0x3de919,null));};exports[_0x9f49('0x4a')]=function(_0x1af622,_0x49fbd7){return db['CmHopperHistory'][_0x9f49('0x4a')]()[_0x9f49('0x23')](respondWithResult(_0x49fbd7,null))['catch'](handleError(_0x49fbd7,null));};exports[_0x9f49('0x22')]=function(_0x3ec50c,_0x27e58a){if(_0x3ec50c['body']['uniqueid']){delete _0x3ec50c[_0x9f49('0x49')][_0x9f49('0x4b')];}return db[_0x9f49('0x29')][_0x9f49('0x47')]({'where':{'uniqueid':_0x3ec50c['params']['id']}})[_0x9f49('0x23')](handleEntityNotFound(_0x27e58a,null))[_0x9f49('0x23')](saveUpdates(_0x3ec50c[_0x9f49('0x49')],null))['then'](respondWithResult(_0x27e58a,null))['catch'](handleError(_0x27e58a,null));};
\ No newline at end of file
+var _0x24ea=['params','length','include','find','create','body','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','moment','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','api','../../config/utils','../../config/environment','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','map','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','CmHopperHistory','includeAll','findAll','rows','catch','show'];(function(_0x1bd1de,_0x5342ef){var _0x3d9edb=function(_0x502b7b){while(--_0x502b7b){_0x1bd1de['push'](_0x1bd1de['shift']());}};_0x3d9edb(++_0x5342ef);}(_0x24ea,0x1e8));var _0xa24e=function(_0x5a67bb,_0x516504){_0x5a67bb=_0x5a67bb-0x0;var _0x48c706=_0x24ea[_0x5a67bb];return _0x48c706;};'use strict';var emlformat=require(_0xa24e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa24e('0x1'));var jsonpatch=require(_0xa24e('0x2'));var rp=require(_0xa24e('0x3'));var moment=require(_0xa24e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa24e('0x5'));var sox=require(_0xa24e('0x6'));var csv=require(_0xa24e('0x7'));var ejs=require(_0xa24e('0x8'));var fs=require('fs');var fs_extra=require(_0xa24e('0x9'));var _=require(_0xa24e('0xa'));var squel=require(_0xa24e('0xb'));var crypto=require(_0xa24e('0xc'));var jsforce=require(_0xa24e('0xd'));var deskjs=require(_0xa24e('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa24e('0xf'));var Papa=require(_0xa24e('0x10'));var Redis=require(_0xa24e('0x11'));var authService=require(_0xa24e('0x12'));var qs=require(_0xa24e('0x13'));var as=require(_0xa24e('0x14'));var hardwareService=require(_0xa24e('0x15'));var logger=require('../../config/logger')(_0xa24e('0x16'));var utils=require(_0xa24e('0x17'));var config=require(_0xa24e('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1beeb2,_0x2fd23a){_0x2fd23a=_0x2fd23a||0xcc;return function(_0x3caeb5){if(_0x3caeb5){return _0x1beeb2['sendStatus'](_0x2fd23a);}return _0x1beeb2['status'](_0x2fd23a)[_0xa24e('0x19')]();};}function respondWithResult(_0x421151,_0x1f5c2e){_0x1f5c2e=_0x1f5c2e||0xc8;return function(_0x28aca9){if(_0x28aca9){return _0x421151[_0xa24e('0x1a')](_0x1f5c2e)[_0xa24e('0x1b')](_0x28aca9);}};}function respondWithFilteredResult(_0x3881a1,_0x24ecb8){return function(_0x1eda98){if(_0x1eda98){var _0x403432=typeof _0x24ecb8[_0xa24e('0x1c')]===_0xa24e('0x1d')&&typeof _0x24ecb8[_0xa24e('0x1e')]===_0xa24e('0x1d');var _0x3f3ef6=_0x1eda98[_0xa24e('0x1f')];var _0x4f72f7=_0x403432?0x0:_0x24ecb8[_0xa24e('0x1c')];var _0x34c9bd=_0x403432?_0x1eda98[_0xa24e('0x1f')]:_0x24ecb8[_0xa24e('0x1c')]+_0x24ecb8[_0xa24e('0x1e')];var _0x33d0e6;if(_0x34c9bd>=_0x3f3ef6){_0x34c9bd=_0x3f3ef6;_0x33d0e6=0xc8;}else{_0x33d0e6=0xce;}_0x3881a1[_0xa24e('0x1a')](_0x33d0e6);return _0x3881a1[_0xa24e('0x20')](_0xa24e('0x21'),_0x4f72f7+'-'+_0x34c9bd+'/'+_0x3f3ef6)[_0xa24e('0x1b')](_0x1eda98);}return null;};}function patchUpdates(_0x22418c){return function(_0x33b8f4){try{jsonpatch[_0xa24e('0x22')](_0x33b8f4,_0x22418c,!![]);}catch(_0x273444){return BPromise[_0xa24e('0x23')](_0x273444);}return _0x33b8f4[_0xa24e('0x24')]();};}function saveUpdates(_0x45fe5d,_0x2e59b7){return function(_0x345627){if(_0x345627){return _0x345627[_0xa24e('0x25')](_0x45fe5d)[_0xa24e('0x26')](function(_0x112481){return _0x112481;});}return null;};}function removeEntity(_0x35967a,_0x304cf8){return function(_0x18a2d9){if(_0x18a2d9){return _0x18a2d9[_0xa24e('0x27')]()[_0xa24e('0x26')](function(){_0x35967a[_0xa24e('0x1a')](0xcc)[_0xa24e('0x19')]();});}};}function handleEntityNotFound(_0x28690f,_0x51e12d){return function(_0x566263){if(!_0x566263){_0x28690f['sendStatus'](0x194);}return _0x566263;};}function handleError(_0x1b29cb,_0xde77ba){_0xde77ba=_0xde77ba||0x1f4;return function(_0x4aa8f1){logger[_0xa24e('0x28')](_0x4aa8f1[_0xa24e('0x29')]);if(_0x4aa8f1[_0xa24e('0x2a')]){delete _0x4aa8f1['name'];}_0x1b29cb[_0xa24e('0x1a')](_0xde77ba)[_0xa24e('0x2b')](_0x4aa8f1);};}exports[_0xa24e('0x2c')]=function(_0x50e0b6,_0x15d406){var _0x2527eb={},_0x3b31ef={},_0x25b677={'count':0x0,'rows':[]};var _0x12277b=_['map'](db['CmHopperHistory'][_0xa24e('0x2d')],function(_0x31f8d6){return{'name':_0x31f8d6[_0xa24e('0x2e')],'type':_0x31f8d6[_0xa24e('0x2f')]['key']};});_0x3b31ef['model']=_[_0xa24e('0x30')](_0x12277b,_0xa24e('0x2a'));_0x3b31ef[_0xa24e('0x31')]=_[_0xa24e('0x32')](_0x50e0b6[_0xa24e('0x31')]);_0x3b31ef['filters']=_[_0xa24e('0x33')](_0x3b31ef[_0xa24e('0x34')],_0x3b31ef['query']);_0x2527eb[_0xa24e('0x35')]=_[_0xa24e('0x33')](_0x3b31ef['model'],qs[_0xa24e('0x36')](_0x50e0b6['query'][_0xa24e('0x36')]));_0x2527eb[_0xa24e('0x35')]=_0x2527eb[_0xa24e('0x35')]['length']?_0x2527eb['attributes']:_0x3b31ef['model'];if(!_0x50e0b6[_0xa24e('0x31')][_0xa24e('0x37')](_0xa24e('0x38'))){_0x2527eb[_0xa24e('0x1e')]=qs[_0xa24e('0x1e')](_0x50e0b6['query']['limit']);_0x2527eb[_0xa24e('0x1c')]=qs[_0xa24e('0x1c')](_0x50e0b6[_0xa24e('0x31')][_0xa24e('0x1c')]);}_0x2527eb[_0xa24e('0x39')]=qs['sort'](_0x50e0b6[_0xa24e('0x31')][_0xa24e('0x3a')]);_0x2527eb[_0xa24e('0x3b')]=qs[_0xa24e('0x3c')](_[_0xa24e('0x3d')](_0x50e0b6[_0xa24e('0x31')],_0x3b31ef[_0xa24e('0x3c')]),_0x12277b);if(_0x50e0b6['query'][_0xa24e('0x3e')]){_0x2527eb[_0xa24e('0x3b')]=_['merge'](_0x2527eb[_0xa24e('0x3b')],{'$or':_[_0xa24e('0x30')](_0x12277b,function(_0xc9e89e){if(_0xc9e89e[_0xa24e('0x2f')]!==_0xa24e('0x3f')){var _0x1c19f3={};_0x1c19f3[_0xc9e89e[_0xa24e('0x2a')]]={'$like':'%'+_0x50e0b6[_0xa24e('0x31')]['filter']+'%'};return _0x1c19f3;}})});}_0x2527eb=_[_0xa24e('0x40')]({},_0x2527eb,_0x50e0b6[_0xa24e('0x41')]);var _0x764ea6={'where':_0x2527eb[_0xa24e('0x3b')]};return db[_0xa24e('0x42')]['count'](_0x764ea6)[_0xa24e('0x26')](function(_0x349f1b){_0x25b677[_0xa24e('0x1f')]=_0x349f1b;if(_0x50e0b6['query'][_0xa24e('0x43')]){_0x2527eb['include']=[{'all':!![]}];}return db[_0xa24e('0x42')][_0xa24e('0x44')](_0x2527eb);})['then'](function(_0x390b3e){_0x25b677[_0xa24e('0x45')]=_0x390b3e;return _0x25b677;})[_0xa24e('0x26')](respondWithFilteredResult(_0x15d406,_0x2527eb))[_0xa24e('0x46')](handleError(_0x15d406,null));};exports[_0xa24e('0x47')]=function(_0x323ab5,_0xc5cc5){var _0x17a2d2={'raw':!![],'where':{'id':_0x323ab5[_0xa24e('0x48')]['id']}},_0x481f47={};_0x481f47['model']=_[_0xa24e('0x32')](db[_0xa24e('0x42')]['rawAttributes']);_0x481f47['query']=_[_0xa24e('0x32')](_0x323ab5['query']);_0x481f47[_0xa24e('0x3c')]=_[_0xa24e('0x33')](_0x481f47['model'],_0x481f47['query']);_0x17a2d2[_0xa24e('0x35')]=_[_0xa24e('0x33')](_0x481f47[_0xa24e('0x34')],qs[_0xa24e('0x36')](_0x323ab5[_0xa24e('0x31')][_0xa24e('0x36')]));_0x17a2d2['attributes']=_0x17a2d2[_0xa24e('0x35')][_0xa24e('0x49')]?_0x17a2d2[_0xa24e('0x35')]:_0x481f47['model'];if(_0x323ab5[_0xa24e('0x31')][_0xa24e('0x43')]){_0x17a2d2[_0xa24e('0x4a')]=[{'all':!![]}];}_0x17a2d2=_[_0xa24e('0x40')]({},_0x17a2d2,_0x323ab5[_0xa24e('0x41')]);return db[_0xa24e('0x42')][_0xa24e('0x4b')](_0x17a2d2)[_0xa24e('0x26')](handleEntityNotFound(_0xc5cc5,null))[_0xa24e('0x26')](respondWithResult(_0xc5cc5,null))[_0xa24e('0x46')](handleError(_0xc5cc5,null));};exports['create']=function(_0x1978a9,_0x43a592){return db[_0xa24e('0x42')][_0xa24e('0x4c')](_0x1978a9[_0xa24e('0x4d')],{})[_0xa24e('0x26')](respondWithResult(_0x43a592,0xc9))[_0xa24e('0x46')](handleError(_0x43a592,null));};exports[_0xa24e('0x4e')]=function(_0x42b50e,_0x3dfe79){return db[_0xa24e('0x42')][_0xa24e('0x4e')]()[_0xa24e('0x26')](respondWithResult(_0x3dfe79,null))['catch'](handleError(_0x3dfe79,null));};exports[_0xa24e('0x25')]=function(_0x133b40,_0x3ef1f3){if(_0x133b40['body'][_0xa24e('0x4f')]){delete _0x133b40[_0xa24e('0x4d')][_0xa24e('0x4f')];}return db[_0xa24e('0x42')][_0xa24e('0x4b')]({'where':{'uniqueid':_0x133b40['params']['id']}})['then'](handleEntityNotFound(_0x3ef1f3,null))['then'](saveUpdates(_0x133b40[_0xa24e('0x4d')],null))[_0xa24e('0x26')](respondWithResult(_0x3ef1f3,null))[_0xa24e('0x46')](handleError(_0x3ef1f3,null));};
\ No newline at end of file
index 3537768..ce29d18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c85=['../../config/logger','api','request-promise','path','rimraf','./cmHopperHistory.attributes','exports','endtime','uniqueid','lodash','util'];(function(_0x1d4923,_0x4e222f){var _0x14ea9a=function(_0x54e138){while(--_0x54e138){_0x1d4923['push'](_0x1d4923['shift']());}};_0x14ea9a(++_0x4e222f);}(_0x3c85,0x1a0));var _0x53c8=function(_0x3649a6,_0x4d13f2){_0x3649a6=_0x3649a6-0x0;var _0x5c9e86=_0x3c85[_0x3649a6];return _0x5c9e86;};'use strict';var _=require(_0x53c8('0x0'));var util=require(_0x53c8('0x1'));var logger=require(_0x53c8('0x2'))(_0x53c8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x53c8('0x4'));var fs=require('fs');var path=require(_0x53c8('0x5'));var rimraf=require(_0x53c8('0x6'));var config=require('../../config/environment');var attributes=require(_0x53c8('0x7'));module[_0x53c8('0x8')]=function(_0x4758fd,_0x4c2e1b){return _0x4758fd['define']('CmHopperHistory',attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x53c8('0x9'),'fields':['endtime']},{'name':'uniqueid','fields':[_0x53c8('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6ac=['bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0xd36572,_0x58edec){var _0x2d12af=function(_0x510bf5){while(--_0x510bf5){_0xd36572['push'](_0xd36572['shift']());}};_0x2d12af(++_0x58edec);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x4f8bfd,_0x33aee1){_0x4f8bfd=_0x4f8bfd-0x0;var _0x35a01d=_0xc6ac[_0x4f8bfd];return _0x35a01d;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var logger=require(_0xcc6a('0x2'))(_0xcc6a('0x3'));var moment=require(_0xcc6a('0x4'));var BPromise=require(_0xcc6a('0x5'));var rp=require(_0xcc6a('0x6'));var fs=require('fs');var path=require(_0xcc6a('0x7'));var rimraf=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var attributes=require(_0xcc6a('0xa'));module[_0xcc6a('0xb')]=function(_0x12330e,_0x197bd7){return _0x12330e['define'](_0xcc6a('0xc'),attributes,{'tableName':_0xcc6a('0xd'),'paranoid':![],'indexes':[{'name':_0xcc6a('0xe'),'fields':['endtime']},{'name':_0xcc6a('0xf'),'fields':[_0xcc6a('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index e7a67c6..8b343b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66a5=['predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','debug','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundReCallsDay','where','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateCmHopperHistory','CmHopperHistory','body','options','raw','then','AvgHandleTime','findAll','sequelize','col','predictiveIntervalTotalCalls','COUNT','`state`\x20=\x204,\x201,\x20null','literal','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null'];(function(_0x2b9120,_0x4cba82){var _0x459db0=function(_0x5753b5){while(--_0x5753b5){_0x2b9120['push'](_0x2b9120['shift']());}};_0x459db0(++_0x4cba82);}(_0x66a5,0x1be));var _0x566a=function(_0x20c47c,_0x443272){_0x20c47c=_0x20c47c-0x0;var _0x1cfcd7=_0x66a5[_0x20c47c];return _0x1cfcd7;};'use strict';var _=require(_0x566a('0x0'));var util=require('util');var moment=require(_0x566a('0x1'));var BPromise=require(_0x566a('0x2'));var rs=require(_0x566a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x566a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x566a('0x5'));var config=require(_0x566a('0x6'));var jayson=require(_0x566a('0x7'));var client=jayson[_0x566a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x465797,_0x307c8a,_0x52b7e0){return new BPromise(function(_0x572900,_0x3c75b5){return client[_0x566a('0x9')](_0x465797,_0x52b7e0)['then'](function(_0x169680){logger[_0x566a('0xa')](_0x566a('0xb'),_0x307c8a,_0x566a('0xc'));logger['debug'](_0x566a('0xd'),_0x307c8a,_0x566a('0xc'),JSON[_0x566a('0xe')](_0x169680));if(_0x169680[_0x566a('0xf')]){if(_0x169680[_0x566a('0xf')]['code']===0x1f4){logger[_0x566a('0xf')](_0x566a('0xb'),_0x307c8a,_0x169680[_0x566a('0xf')][_0x566a('0x10')]);return _0x3c75b5(_0x169680['error']['message']);}logger[_0x566a('0xf')](_0x566a('0xb'),_0x307c8a,_0x169680[_0x566a('0xf')][_0x566a('0x10')]);return _0x572900(_0x169680['error']['message']);}else{logger[_0x566a('0xa')]('CmHopperHistory,\x20%s,\x20%s',_0x307c8a,_0x566a('0xc'));_0x572900(_0x169680['result']['message']);}})[_0x566a('0x11')](function(_0x34b686){logger[_0x566a('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x307c8a,_0x34b686);_0x3c75b5(_0x34b686);});});}exports[_0x566a('0x12')]=function(_0x32a8c3){var _0x2319a5=this;return new Promise(function(_0x936e2d,_0x9367c9){return db[_0x566a('0x13')]['create'](_0x32a8c3[_0x566a('0x14')],{'raw':_0x32a8c3[_0x566a('0x15')]?_0x32a8c3['options'][_0x566a('0x16')]===undefined?!![]:![]:!![]})[_0x566a('0x17')](function(_0x1c6da4){logger['info'](_0x566a('0x12'),_0x32a8c3);logger['debug'](_0x566a('0x12'),_0x32a8c3,JSON[_0x566a('0xe')](_0x1c6da4));_0x936e2d(_0x1c6da4);})[_0x566a('0x11')](function(_0x27d75a){logger['error'](_0x566a('0x12'),_0x27d75a['message'],_0x32a8c3);_0x9367c9(_0x2319a5[_0x566a('0xf')](0x1f4,_0x27d75a[_0x566a('0x10')]));});});};exports[_0x566a('0x18')]=function(_0x516ef5){var _0x237da3=this;return new Promise(function(_0x1f96dc,_0x1a88b2){return db[_0x566a('0x13')][_0x566a('0x19')]({'raw':_0x516ef5['options']?_0x516ef5[_0x566a('0x15')][_0x566a('0x16')]===undefined?!![]:![]:!![],'where':_0x516ef5[_0x566a('0x15')]?_0x516ef5[_0x566a('0x15')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x566a('0x1a')][_0x566a('0x1b')]('id')),_0x566a('0x1c')],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db['sequelize']['fn']('IF',db[_0x566a('0x1a')]['literal'](_0x566a('0x1e')))),'predictiveIntervalAnsweredCalls'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x2010,\x201,\x20null'))),_0x566a('0x20')],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')]['literal'](_0x566a('0x21')))),_0x566a('0x22')],[db['sequelize']['fn'](_0x566a('0x23'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')](_0x566a('0x24')))),_0x566a('0x25')],[db['sequelize']['fn'](_0x566a('0x23'),db['sequelize']['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0x566a('0x26')]]})['then'](function(_0x48b84c){logger[_0x566a('0xa')](_0x566a('0x18'),_0x516ef5);logger[_0x566a('0x27')]('AvgHandleTime',_0x516ef5,JSON[_0x566a('0xe')](_0x48b84c));_0x1f96dc(_0x48b84c);})[_0x566a('0x11')](function(_0x336eb4){logger[_0x566a('0xf')](_0x566a('0x18'),_0x336eb4[_0x566a('0x10')],_0x516ef5);_0x1a88b2(_0x237da3[_0x566a('0xf')](0x1f4,_0x336eb4[_0x566a('0x10')]));});});};exports[_0x566a('0x28')]=function(_0x2b1f99){var _0x785760=this;return new Promise(function(_0x256b41,_0x21ba12){return db['CmHopperHistory'][_0x566a('0x19')]({'raw':_0x2b1f99[_0x566a('0x15')]?_0x2b1f99['options'][_0x566a('0x16')]===undefined?!![]:![]:!![],'where':_0x2b1f99['options']?_0x2b1f99[_0x566a('0x15')]['where']||null:null,'attributes':[[_0x566a('0x29'),_0x566a('0x2a')],[db['sequelize']['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')](_0x566a('0x2b')))),'outboundNoSuchCallsDay'],[db[_0x566a('0x1a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')](_0x566a('0x2c')))),'outboundNoAnswerCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')]['literal']('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')]['literal'](_0x566a('0x2d')))),'outboundBusyCallsDay'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db['sequelize']['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x208,\x201,\x20null'))),_0x566a('0x2e')],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')]['literal'](_0x566a('0x2f')))),_0x566a('0x30')],[db[_0x566a('0x1a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x566a('0x1a')]['literal'](_0x566a('0x31')))),_0x566a('0x32')],[db[_0x566a('0x1a')]['fn']('COUNT',db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),_0x566a('0x33')],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x2013,\x201,\x20null'))),'outboundBlacklistCallsDay'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')](_0x566a('0x34')))),_0x566a('0x35')],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')](_0x566a('0x36')))),'outboundAnswerAgiCallsDay'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x2020,\x201,\x20null'))),'outboundRejectCallsDay'],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0x566a('0x37')]],'group':[_0x566a('0x29')]})[_0x566a('0x17')](function(_0x5a2686){logger[_0x566a('0xa')](_0x566a('0x28'),_0x2b1f99);logger['debug']('GetVoiceQueueHopperHistory',_0x2b1f99,JSON[_0x566a('0xe')](_0x5a2686));_0x256b41(_0x5a2686);})['catch'](function(_0x53f4ee){logger[_0x566a('0xf')]('GetVoiceQueueHopperHistory',_0x53f4ee[_0x566a('0x10')],_0x2b1f99);_0x21ba12(_0x785760[_0x566a('0xf')](0x1f4,_0x53f4ee[_0x566a('0x10')]));});});};exports['GetCampaignHopperHistory']=function(_0x40f100){var _0x2c43cb=this;return new Promise(function(_0x4c3140,_0x5e4721){return db[_0x566a('0x13')][_0x566a('0x19')]({'raw':_0x40f100[_0x566a('0x15')]?_0x40f100[_0x566a('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x40f100['options']?_0x40f100[_0x566a('0x15')][_0x566a('0x38')]||null:null,'attributes':[[_0x566a('0x29'),_0x566a('0x2a')],[db[_0x566a('0x1a')]['fn'](_0x566a('0x1d'),db[_0x566a('0x1a')][_0x566a('0x1b')]('id')),_0x566a('0x39')],[db['sequelize']['fn']('COUNT',db[_0x566a('0x1a')]['fn']('IF',db[_0x566a('0x1a')][_0x566a('0x1f')](_0x566a('0x1e')))),_0x566a('0x3a')]],'group':['campaign']})[_0x566a('0x17')](function(_0x2c191e){logger[_0x566a('0xa')]('GetCampaignHopperHistory',_0x40f100);logger[_0x566a('0x27')](_0x566a('0x3b'),_0x40f100,JSON[_0x566a('0xe')](_0x2c191e));_0x4c3140(_0x2c191e);})['catch'](function(_0x1c5037){logger[_0x566a('0xf')]('GetCampaignHopperHistory',_0x1c5037[_0x566a('0x10')],_0x40f100);_0x5e4721(_0x2c43cb[_0x566a('0xf')](0x1f4,_0x1c5037[_0x566a('0x10')]));});});};
\ No newline at end of file
+var _0xa1bf=['ivrAnswerCallsDay','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmHopperHistory,\x20%s,\x20%s','result','CreateCmHopperHistory','CmHopperHistory','create','options','then','AvgHandleTime','findAll','raw','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','catch','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','where'];(function(_0x1110db,_0xc82f49){var _0x5c9357=function(_0x137660){while(--_0x137660){_0x1110db['push'](_0x1110db['shift']());}};_0x5c9357(++_0xc82f49);}(_0xa1bf,0x91));var _0xfa1b=function(_0xa4b8e1,_0x49d30b){_0xa4b8e1=_0xa4b8e1-0x0;var _0x507e42=_0xa1bf[_0xa4b8e1];return _0x507e42;};'use strict';var _=require('lodash');var util=require(_0xfa1b('0x0'));var moment=require(_0xfa1b('0x1'));var BPromise=require('bluebird');var rs=require(_0xfa1b('0x2'));var fs=require('fs');var Redis=require(_0xfa1b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfa1b('0x4'));var logger=require(_0xfa1b('0x5'))(_0xfa1b('0x6'));var config=require('../../config/environment');var jayson=require(_0xfa1b('0x7'));var client=jayson['client'][_0xfa1b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3a2d1f,_0xf297fc,_0x2d430c){return new BPromise(function(_0x398d41,_0x4ce604){return client['request'](_0x3a2d1f,_0x2d430c)['then'](function(_0x1f7719){logger[_0xfa1b('0x9')]('CmHopperHistory,\x20%s,\x20%s',_0xf297fc,'request\x20sent');logger[_0xfa1b('0xa')](_0xfa1b('0xb'),_0xf297fc,'request\x20sent',JSON[_0xfa1b('0xc')](_0x1f7719));if(_0x1f7719[_0xfa1b('0xd')]){if(_0x1f7719['error'][_0xfa1b('0xe')]===0x1f4){logger[_0xfa1b('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0xf297fc,_0x1f7719[_0xfa1b('0xd')]['message']);return _0x4ce604(_0x1f7719[_0xfa1b('0xd')][_0xfa1b('0xf')]);}logger[_0xfa1b('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0xf297fc,_0x1f7719[_0xfa1b('0xd')][_0xfa1b('0xf')]);return _0x398d41(_0x1f7719[_0xfa1b('0xd')][_0xfa1b('0xf')]);}else{logger[_0xfa1b('0x9')](_0xfa1b('0x10'),_0xf297fc,'request\x20sent');_0x398d41(_0x1f7719[_0xfa1b('0x11')]['message']);}})['catch'](function(_0x57fffa){logger[_0xfa1b('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0xf297fc,_0x57fffa);_0x4ce604(_0x57fffa);});});}exports[_0xfa1b('0x12')]=function(_0x477f6d){var _0x5c26db=this;return new Promise(function(_0xe79c2f,_0x5204b3){return db[_0xfa1b('0x13')][_0xfa1b('0x14')](_0x477f6d['body'],{'raw':_0x477f6d[_0xfa1b('0x15')]?_0x477f6d[_0xfa1b('0x15')]['raw']===undefined?!![]:![]:!![]})[_0xfa1b('0x16')](function(_0x555a06){logger['info'](_0xfa1b('0x12'),_0x477f6d);logger[_0xfa1b('0xa')]('CreateCmHopperHistory',_0x477f6d,JSON[_0xfa1b('0xc')](_0x555a06));_0xe79c2f(_0x555a06);})['catch'](function(_0x57783c){logger['error']('CreateCmHopperHistory',_0x57783c[_0xfa1b('0xf')],_0x477f6d);_0x5204b3(_0x5c26db['error'](0x1f4,_0x57783c[_0xfa1b('0xf')]));});});};exports[_0xfa1b('0x17')]=function(_0x124eaf){var _0x3a85f8=this;return new Promise(function(_0x2ee168,_0x4a4560){return db[_0xfa1b('0x13')][_0xfa1b('0x18')]({'raw':_0x124eaf[_0xfa1b('0x15')]?_0x124eaf['options'][_0xfa1b('0x19')]===undefined?!![]:![]:!![],'where':_0x124eaf['options']?_0x124eaf[_0xfa1b('0x15')]['where']||null:null,'attributes':[[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')][_0xfa1b('0x1c')]('id')),_0xfa1b('0x1d')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db['sequelize']['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x1f')))),_0xfa1b('0x20')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x21')))),_0xfa1b('0x22')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x23')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x24'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')]['literal'](_0xfa1b('0x25')))),'predictiveIntervalAvgHoldtime'],[db['sequelize']['fn'](_0xfa1b('0x24'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x26')))),_0xfa1b('0x27')]]})[_0xfa1b('0x16')](function(_0xfa7f75){logger[_0xfa1b('0x9')](_0xfa1b('0x17'),_0x124eaf);logger[_0xfa1b('0xa')]('AvgHandleTime',_0x124eaf,JSON[_0xfa1b('0xc')](_0xfa7f75));_0x2ee168(_0xfa7f75);})[_0xfa1b('0x28')](function(_0x493a7e){logger[_0xfa1b('0xd')](_0xfa1b('0x17'),_0x493a7e[_0xfa1b('0xf')],_0x124eaf);_0x4a4560(_0x3a85f8[_0xfa1b('0xd')](0x1f4,_0x493a7e[_0xfa1b('0xf')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x3f1156){var _0x340e3b=this;return new Promise(function(_0x3fceb4,_0x3f73b1){return db[_0xfa1b('0x13')][_0xfa1b('0x18')]({'raw':_0x3f1156[_0xfa1b('0x15')]?_0x3f1156[_0xfa1b('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3f1156[_0xfa1b('0x15')]?_0x3f1156[_0xfa1b('0x15')]['where']||null:null,'attributes':[[_0xfa1b('0x29'),_0xfa1b('0x2a')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db['sequelize']['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x2b')))),_0xfa1b('0x2c')],[db[_0xfa1b('0x1a')]['fn']('COUNT',db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x2d')))),_0xfa1b('0x2e')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')]['literal'](_0xfa1b('0x1f')))),_0xfa1b('0x2f')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')]['literal'](_0xfa1b('0x30')))),_0xfa1b('0x31')],[db[_0xfa1b('0x1a')]['fn']('COUNT',db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x32')))),_0xfa1b('0x33')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xfa1b('0x34')))),_0xfa1b('0x35')],[db[_0xfa1b('0x1a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x36')))),_0xfa1b('0x37')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db['sequelize']['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x38')))),_0xfa1b('0x39')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db['sequelize'][_0xfa1b('0x1e')](_0xfa1b('0x3a')))),_0xfa1b('0x3b')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x3c')))),'outboundOriginateFailureCallsDay'],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x3d')))),_0xfa1b('0x3e')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db['sequelize']['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x3f')))),_0xfa1b('0x40')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x41')))),_0xfa1b('0x3e')],[db['sequelize']['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db['sequelize']['literal'](_0xfa1b('0x42')))),_0xfa1b('0x43')]],'group':[_0xfa1b('0x29')]})['then'](function(_0x4c2862){logger[_0xfa1b('0x9')](_0xfa1b('0x44'),_0x3f1156);logger[_0xfa1b('0xa')]('GetVoiceQueueHopperHistory',_0x3f1156,JSON[_0xfa1b('0xc')](_0x4c2862));_0x3fceb4(_0x4c2862);})[_0xfa1b('0x28')](function(_0x4912d8){logger[_0xfa1b('0xd')]('GetVoiceQueueHopperHistory',_0x4912d8[_0xfa1b('0xf')],_0x3f1156);_0x3f73b1(_0x340e3b['error'](0x1f4,_0x4912d8[_0xfa1b('0xf')]));});});};exports[_0xfa1b('0x45')]=function(_0x49d8be){var _0x32886f=this;return new Promise(function(_0x54975c,_0x5010ca){return db['CmHopperHistory'][_0xfa1b('0x18')]({'raw':_0x49d8be[_0xfa1b('0x15')]?_0x49d8be['options']['raw']===undefined?!![]:![]:!![],'where':_0x49d8be[_0xfa1b('0x15')]?_0x49d8be[_0xfa1b('0x15')][_0xfa1b('0x46')]||null:null,'attributes':[[_0xfa1b('0x29'),_0xfa1b('0x2a')],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')][_0xfa1b('0x1c')]('id')),'ivrTotalCallsDays'],[db[_0xfa1b('0x1a')]['fn'](_0xfa1b('0x1b'),db[_0xfa1b('0x1a')]['fn']('IF',db[_0xfa1b('0x1a')][_0xfa1b('0x1e')](_0xfa1b('0x1f')))),_0xfa1b('0x47')]],'group':['campaign']})[_0xfa1b('0x16')](function(_0x46cad5){logger['info'](_0xfa1b('0x45'),_0x49d8be);logger[_0xfa1b('0xa')](_0xfa1b('0x45'),_0x49d8be,JSON[_0xfa1b('0xc')](_0x46cad5));_0x54975c(_0x46cad5);})['catch'](function(_0x5a9a24){logger['error']('GetCampaignHopperHistory',_0x5a9a24[_0xfa1b('0xf')],_0x49d8be);_0x5010ca(_0x32886f[_0xfa1b('0xd')](0x1f4,_0x5a9a24['message']));});});};
\ No newline at end of file
index 61ccb99..67aef1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2716=['isAuthenticated','describe','/:id','show','create','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x2716,0x6c));var _0x6271=function(_0xfb3b3,_0x10db7a){_0xfb3b3=_0xfb3b3-0x0;var _0x36cae7=_0x2716[_0xfb3b3];return _0x36cae7;};'use strict';var multer=require(_0x6271('0x0'));var util=require(_0x6271('0x1'));var path=require(_0x6271('0x2'));var timeout=require('connect-timeout');var express=require(_0x6271('0x3'));var router=express[_0x6271('0x4')]();var fs_extra=require(_0x6271('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6271('0x6'));var config=require(_0x6271('0x7'));var controller=require(_0x6271('0x8'));router[_0x6271('0x9')]('/',auth['isAuthenticated'](),controller[_0x6271('0xa')]);router[_0x6271('0x9')](_0x6271('0xb'),auth[_0x6271('0xc')](),controller[_0x6271('0xd')]);router[_0x6271('0x9')](_0x6271('0xe'),auth[_0x6271('0xc')](),controller[_0x6271('0xf')]);router['post']('/',auth[_0x6271('0xc')](),controller[_0x6271('0x10')]);router[_0x6271('0x11')](_0x6271('0xe'),auth[_0x6271('0xc')](),controller[_0x6271('0x12')]);module[_0x6271('0x13')]=router;
\ No newline at end of file
+var _0xc7fa=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','show','post','/:id','exports','multer','util','path'];(function(_0x3b5281,_0x1ad76d){var _0x55e65b=function(_0x4bff10){while(--_0x4bff10){_0x3b5281['push'](_0x3b5281['shift']());}};_0x55e65b(++_0x1ad76d);}(_0xc7fa,0x189));var _0xac7f=function(_0x5303f3,_0x5db424){_0x5303f3=_0x5303f3-0x0;var _0x3c5b4d=_0xc7fa[_0x5303f3];return _0x3c5b4d;};'use strict';var multer=require(_0xac7f('0x0'));var util=require(_0xac7f('0x1'));var path=require(_0xac7f('0x2'));var timeout=require(_0xac7f('0x3'));var express=require(_0xac7f('0x4'));var router=express[_0xac7f('0x5')]();var fs_extra=require(_0xac7f('0x6'));var auth=require(_0xac7f('0x7'));var interaction=require(_0xac7f('0x8'));var config=require(_0xac7f('0x9'));var controller=require(_0xac7f('0xa'));router[_0xac7f('0xb')]('/',auth[_0xac7f('0xc')](),controller[_0xac7f('0xd')]);router[_0xac7f('0xb')]('/describe',auth[_0xac7f('0xc')](),controller['describe']);router[_0xac7f('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xac7f('0xe')]);router[_0xac7f('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xac7f('0x10'),auth[_0xac7f('0xc')](),controller['update']);module[_0xac7f('0x11')]=router;
\ No newline at end of file
index 4571405..44a63e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6898=['name','sequelize','STRING'];(function(_0x1b6c80,_0x954a93){var _0x34cfa9=function(_0x1a051f){while(--_0x1a051f){_0x1b6c80['push'](_0x1b6c80['shift']());}};_0x34cfa9(++_0x954a93);}(_0x6898,0x11b));var _0x8689=function(_0x434505,_0x2db011){_0x434505=_0x434505-0x0;var _0x4d1144=_0x6898[_0x434505];return _0x4d1144;};'use strict';var Sequelize=require(_0x8689('0x0'));module['exports']={'name':{'type':Sequelize[_0x8689('0x1')],'unique':_0x8689('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8689('0x1')]},'dialPrefix':{'type':Sequelize[_0x8689('0x1')]}};
\ No newline at end of file
+var _0xafa5=['STRING','name','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xafa5,0x1af));var _0x5afa=function(_0x2c8acd,_0x5c0aa2){_0x2c8acd=_0x2c8acd-0x0;var _0x1f441a=_0xafa5[_0x2c8acd];return _0x1f441a;};'use strict';var Sequelize=require('sequelize');module[_0x5afa('0x0')]={'name':{'type':Sequelize[_0x5afa('0x1')],'unique':_0x5afa('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5afa('0x1')]},'dialPrefix':{'type':Sequelize[_0x5afa('0x1')]}};
\ No newline at end of file
index 0684150..9d033a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd14=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','limit','offset','set','Content-Range','json','apply','reject','update','then','destroy','get','Lists','UserProfileResource','end','error','name','send','index','CmList','rawAttributes','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','count','includeAll','include','catch','show','params','length','find','create','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','Disposition','getDispositions','ListId','findAll','rows','removeDispositions','CmContact','tags','isArray','join','each','omit','ids','success','push','dataValues','errors','Malformed\x20request\x20syntax','getContacts','concat','CustomFields','format','cf_%d','raw','CmCustomField','isEmpty','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','findOne','sequelize','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','User','eml-format','rimraf','fast-json-patch','request-promise','mustache','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x5e1690,_0x56d36f){var _0x3a71c8=function(_0xd0da6){while(--_0xd0da6){_0x5e1690['push'](_0x5e1690['shift']());}};_0x3a71c8(++_0x56d36f);}(_0xdd14,0x19c));var _0x4dd1=function(_0x54767c,_0x24dab5){_0x54767c=_0x54767c-0x0;var _0x10dd2a=_0xdd14[_0x54767c];return _0x10dd2a;};'use strict';var emlformat=require(_0x4dd1('0x0'));var rimraf=require(_0x4dd1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4dd1('0x2'));var rp=require(_0x4dd1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4dd1('0x4'));var util=require('util');var path=require('path');var sox=require(_0x4dd1('0x5'));var csv=require('to-csv');var ejs=require(_0x4dd1('0x6'));var fs=require('fs');var fs_extra=require(_0x4dd1('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4dd1('0x8'));var jsforce=require(_0x4dd1('0x9'));var deskjs=require(_0x4dd1('0xa'));var toCsv=require(_0x4dd1('0xb'));var querystring=require(_0x4dd1('0xc'));var Papa=require(_0x4dd1('0xd'));var Redis=require(_0x4dd1('0xe'));var authService=require(_0x4dd1('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4dd1('0x10'));var hardwareService=require(_0x4dd1('0x11'));var logger=require(_0x4dd1('0x12'))('api');var utils=require(_0x4dd1('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4dd1('0x14'));var db=require(_0x4dd1('0x15'))['db'];config[_0x4dd1('0x16')]=_[_0x4dd1('0x17')](config[_0x4dd1('0x16')],{'host':_0x4dd1('0x18'),'port':0x18eb});var socket=require(_0x4dd1('0x19'))(new Redis(config[_0x4dd1('0x16')]));require(_0x4dd1('0x1a'))[_0x4dd1('0x1b')](socket);function respondWithStatusCode(_0x5acd2e,_0x1e1342){_0x1e1342=_0x1e1342||0xcc;return function(_0x2a2801){if(_0x2a2801){return _0x5acd2e[_0x4dd1('0x1c')](_0x1e1342);}return _0x5acd2e[_0x4dd1('0x1d')](_0x1e1342)['end']();};}function respondWithResult(_0x1a6eb0,_0xd72e74){_0xd72e74=_0xd72e74||0xc8;return function(_0x470e68){if(_0x470e68){return _0x1a6eb0[_0x4dd1('0x1d')](_0xd72e74)['json'](_0x470e68);}};}function respondWithFilteredResult(_0x3f554e,_0x232a28){return function(_0x52d00f){if(_0x52d00f){var _0x312ba0=typeof _0x232a28['offset']==='undefined'&&typeof _0x232a28[_0x4dd1('0x1e')]==='undefined';var _0xa9f53d=_0x52d00f['count'];var _0x356142=_0x312ba0?0x0:_0x232a28[_0x4dd1('0x1f')];var _0x307531=_0x312ba0?_0x52d00f['count']:_0x232a28[_0x4dd1('0x1f')]+_0x232a28[_0x4dd1('0x1e')];var _0x418cf8;if(_0x307531>=_0xa9f53d){_0x307531=_0xa9f53d;_0x418cf8=0xc8;}else{_0x418cf8=0xce;}_0x3f554e[_0x4dd1('0x1d')](_0x418cf8);return _0x3f554e[_0x4dd1('0x20')](_0x4dd1('0x21'),_0x356142+'-'+_0x307531+'/'+_0xa9f53d)[_0x4dd1('0x22')](_0x52d00f);}return null;};}function patchUpdates(_0x20852a){return function(_0x484c9a){try{jsonpatch[_0x4dd1('0x23')](_0x484c9a,_0x20852a,!![]);}catch(_0x571356){return BPromise[_0x4dd1('0x24')](_0x571356);}return _0x484c9a['save']();};}function saveUpdates(_0x4054d3,_0x3dd0cd){return function(_0x1d25f0){if(_0x1d25f0){return _0x1d25f0[_0x4dd1('0x25')](_0x4054d3)[_0x4dd1('0x26')](function(_0x2d140e){return _0x2d140e;});}return null;};}function removeEntity(_0x256294,_0x5932ee){return function(_0x1d0c15){if(_0x1d0c15){return _0x1d0c15[_0x4dd1('0x27')]()['then'](function(){var _0x1d4f74=_0x1d0c15[_0x4dd1('0x28')]({'plain':!![]});var _0x2e6f07=_0x4dd1('0x29');return db[_0x4dd1('0x2a')][_0x4dd1('0x27')]({'where':{'type':_0x2e6f07,'resourceId':_0x1d4f74['id']}})[_0x4dd1('0x26')](function(){return _0x1d0c15;});})[_0x4dd1('0x26')](function(){_0x256294[_0x4dd1('0x1d')](0xcc)[_0x4dd1('0x2b')]();});}};}function handleEntityNotFound(_0x2dbd56,_0x46b00f){return function(_0x371f0d){if(!_0x371f0d){_0x2dbd56[_0x4dd1('0x1c')](0x194);}return _0x371f0d;};}function handleError(_0x45a85e,_0x1e5bf4){_0x1e5bf4=_0x1e5bf4||0x1f4;return function(_0x4fdde6){logger[_0x4dd1('0x2c')](_0x4fdde6['stack']);if(_0x4fdde6[_0x4dd1('0x2d')]){delete _0x4fdde6[_0x4dd1('0x2d')];}_0x45a85e[_0x4dd1('0x1d')](_0x1e5bf4)[_0x4dd1('0x2e')](_0x4fdde6);};}exports[_0x4dd1('0x2f')]=function(_0x1ae267,_0x55fe83){var _0xbee739={},_0x4e15c8={},_0x376356={'count':0x0,'rows':[]};var _0x960311=_['map'](db[_0x4dd1('0x30')][_0x4dd1('0x31')],function(_0x259507){return{'name':_0x259507['fieldName'],'type':_0x259507[_0x4dd1('0x32')][_0x4dd1('0x33')]};});_0x4e15c8[_0x4dd1('0x34')]=_[_0x4dd1('0x35')](_0x960311,_0x4dd1('0x2d'));_0x4e15c8[_0x4dd1('0x36')]=_[_0x4dd1('0x37')](_0x1ae267[_0x4dd1('0x36')]);_0x4e15c8['filters']=_[_0x4dd1('0x38')](_0x4e15c8[_0x4dd1('0x34')],_0x4e15c8[_0x4dd1('0x36')]);_0xbee739[_0x4dd1('0x39')]=_[_0x4dd1('0x38')](_0x4e15c8[_0x4dd1('0x34')],qs[_0x4dd1('0x3a')](_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x3a')]));_0xbee739[_0x4dd1('0x39')]=_0xbee739[_0x4dd1('0x39')]['length']?_0xbee739['attributes']:_0x4e15c8[_0x4dd1('0x34')];if(!_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x3b')](_0x4dd1('0x3c'))){_0xbee739[_0x4dd1('0x1e')]=qs[_0x4dd1('0x1e')](_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x1e')]);_0xbee739['offset']=qs['offset'](_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x1f')]);}_0xbee739[_0x4dd1('0x3d')]=qs[_0x4dd1('0x3e')](_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x3e')]);_0xbee739[_0x4dd1('0x3f')]=qs['filters'](_[_0x4dd1('0x40')](_0x1ae267[_0x4dd1('0x36')],_0x4e15c8[_0x4dd1('0x41')]),_0x960311);if(_0x1ae267['query'][_0x4dd1('0x42')]){_0xbee739[_0x4dd1('0x3f')]=_[_0x4dd1('0x43')](_0xbee739['where'],{'$or':_['map'](_0x960311,function(_0x294e26){if(_0x294e26[_0x4dd1('0x32')]!=='VIRTUAL'){var _0x392474={};_0x392474[_0x294e26[_0x4dd1('0x2d')]]={'$like':'%'+_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x42')]+'%'};return _0x392474;}})});}_0xbee739=_[_0x4dd1('0x43')]({},_0xbee739,_0x1ae267[_0x4dd1('0x44')]);var _0x57901d={'where':_0xbee739['where']};return db[_0x4dd1('0x30')][_0x4dd1('0x45')](_0x57901d)[_0x4dd1('0x26')](function(_0x5e30c1){_0x376356[_0x4dd1('0x45')]=_0x5e30c1;if(_0x1ae267[_0x4dd1('0x36')][_0x4dd1('0x46')]){_0xbee739[_0x4dd1('0x47')]=[{'all':!![]}];}return db[_0x4dd1('0x30')]['findAll'](_0xbee739);})[_0x4dd1('0x26')](function(_0x3611db){_0x376356['rows']=_0x3611db;return _0x376356;})[_0x4dd1('0x26')](respondWithFilteredResult(_0x55fe83,_0xbee739))[_0x4dd1('0x48')](handleError(_0x55fe83,null));};exports[_0x4dd1('0x49')]=function(_0x50dc8b,_0x28803d){var _0x45de9c={'raw':![],'where':{'id':_0x50dc8b[_0x4dd1('0x4a')]['id']}},_0x2055e5={};_0x2055e5[_0x4dd1('0x34')]=_[_0x4dd1('0x37')](db[_0x4dd1('0x30')]['rawAttributes']);_0x2055e5[_0x4dd1('0x36')]=_[_0x4dd1('0x37')](_0x50dc8b['query']);_0x2055e5[_0x4dd1('0x41')]=_[_0x4dd1('0x38')](_0x2055e5[_0x4dd1('0x34')],_0x2055e5[_0x4dd1('0x36')]);_0x45de9c[_0x4dd1('0x39')]=_[_0x4dd1('0x38')](_0x2055e5[_0x4dd1('0x34')],qs[_0x4dd1('0x3a')](_0x50dc8b[_0x4dd1('0x36')]['fields']));_0x45de9c[_0x4dd1('0x39')]=_0x45de9c[_0x4dd1('0x39')][_0x4dd1('0x4b')]?_0x45de9c[_0x4dd1('0x39')]:_0x2055e5[_0x4dd1('0x34')];if(_0x50dc8b[_0x4dd1('0x36')][_0x4dd1('0x46')]){_0x45de9c[_0x4dd1('0x47')]=[{'all':!![]}];}_0x45de9c=_[_0x4dd1('0x43')]({},_0x45de9c,_0x50dc8b[_0x4dd1('0x44')]);return db[_0x4dd1('0x30')][_0x4dd1('0x4c')](_0x45de9c)[_0x4dd1('0x26')](handleEntityNotFound(_0x28803d,null))[_0x4dd1('0x26')](respondWithResult(_0x28803d,null))[_0x4dd1('0x48')](handleError(_0x28803d,null));};exports['create']=function(_0x5c82ba,_0xaf189d){return db[_0x4dd1('0x30')][_0x4dd1('0x4d')](_0x5c82ba['body'],{})[_0x4dd1('0x26')](function(_0xdecfa9){var _0x4d8b22=_0x5c82ba['user'][_0x4dd1('0x28')]({'plain':!![]});if(!_0x4d8b22)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d8b22[_0x4dd1('0x4e')]===_0x4dd1('0x4f')){var _0x1b0819=_0xdecfa9[_0x4dd1('0x28')]({'plain':!![]});var _0x5a31ed=_0x4dd1('0x29');return db['UserProfileSection'][_0x4dd1('0x4c')]({'where':{'name':_0x5a31ed,'userProfileId':_0x4d8b22[_0x4dd1('0x50')]},'raw':!![]})['then'](function(_0x58185e){if(_0x58185e&&_0x58185e[_0x4dd1('0x51')]===0x0){return db[_0x4dd1('0x2a')][_0x4dd1('0x4d')]({'name':_0x1b0819[_0x4dd1('0x2d')],'resourceId':_0x1b0819['id'],'type':_0x58185e[_0x4dd1('0x2d')],'sectionId':_0x58185e['id']},{})['then'](function(){return _0xdecfa9;});}else{return _0xdecfa9;}})[_0x4dd1('0x48')](function(_0x586cb9){logger[_0x4dd1('0x2c')](_0x4dd1('0x52'),_0x586cb9);throw _0x586cb9;});}return _0xdecfa9;})[_0x4dd1('0x26')](respondWithResult(_0xaf189d,0xc9))[_0x4dd1('0x48')](handleError(_0xaf189d,null));};exports['update']=function(_0x1987ea,_0x23f124){if(_0x1987ea[_0x4dd1('0x53')]['id']){delete _0x1987ea[_0x4dd1('0x53')]['id'];}return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0x1987ea[_0x4dd1('0x4a')]['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x23f124,null))[_0x4dd1('0x26')](saveUpdates(_0x1987ea['body'],null))['then'](respondWithResult(_0x23f124,null))[_0x4dd1('0x48')](handleError(_0x23f124,null));};exports[_0x4dd1('0x27')]=function(_0xe28f8b,_0x5c5fc2){return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0xe28f8b[_0x4dd1('0x4a')]['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x5c5fc2,null))[_0x4dd1('0x26')](removeEntity(_0x5c5fc2,null))[_0x4dd1('0x48')](handleError(_0x5c5fc2,null));};exports[_0x4dd1('0x54')]=function(_0xd049cd,_0x22f4c4){return db[_0x4dd1('0x30')]['describe']()['then'](respondWithResult(_0x22f4c4,null))[_0x4dd1('0x48')](handleError(_0x22f4c4,null));};exports[_0x4dd1('0x55')]=function(_0x22fc76,_0x1e1aa2,_0xa44020){if(_0x22fc76[_0x4dd1('0x53')]['id']){delete _0x22fc76[_0x4dd1('0x53')]['id'];}return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0x22fc76['params']['id']}})['then'](handleEntityNotFound(_0x1e1aa2,null))[_0x4dd1('0x26')](function(_0x3afb4a){if(_0x3afb4a){_0x22fc76['body']['ListId']=_0x3afb4a['id'];return db[_0x4dd1('0x56')][_0x4dd1('0x4d')](_0x22fc76['body']);}})[_0x4dd1('0x26')](respondWithResult(_0x1e1aa2,null))[_0x4dd1('0x48')](handleError(_0x1e1aa2,null));};exports[_0x4dd1('0x57')]=function(_0x46ab35,_0x4badc7,_0x58c878){var _0x3a4360={'raw':![],'where':{}};var _0x5b5c6f={};var _0x3c0355={'count':0x0,'rows':[]};return db['CmList']['findOne']({'where':{'id':_0x46ab35[_0x4dd1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4badc7,null))[_0x4dd1('0x26')](function(_0x2c1039){if(_0x2c1039){_0x5b5c6f[_0x4dd1('0x34')]=_['keys'](db[_0x4dd1('0x56')]['rawAttributes']);_0x5b5c6f['query']=_['keys'](_0x46ab35[_0x4dd1('0x36')]);_0x5b5c6f[_0x4dd1('0x41')]=_[_0x4dd1('0x38')](_0x5b5c6f['model'],_0x5b5c6f[_0x4dd1('0x36')]);_0x3a4360[_0x4dd1('0x39')]=_['intersection'](_0x5b5c6f[_0x4dd1('0x34')],qs['fields'](_0x46ab35['query'][_0x4dd1('0x3a')]));_0x3a4360[_0x4dd1('0x39')]=_0x3a4360['attributes']['length']?_0x3a4360['attributes']:_0x5b5c6f[_0x4dd1('0x34')];if(!_0x46ab35['query'][_0x4dd1('0x3b')](_0x4dd1('0x3c'))){_0x3a4360[_0x4dd1('0x1e')]=qs[_0x4dd1('0x1e')](_0x46ab35['query'][_0x4dd1('0x1e')]);_0x3a4360[_0x4dd1('0x1f')]=qs[_0x4dd1('0x1f')](_0x46ab35['query'][_0x4dd1('0x1f')]);}_0x3a4360['order']=qs[_0x4dd1('0x3e')](_0x46ab35['query'][_0x4dd1('0x3e')]);_0x3a4360[_0x4dd1('0x3f')]=qs[_0x4dd1('0x41')](_[_0x4dd1('0x40')](_0x46ab35[_0x4dd1('0x36')],_0x5b5c6f[_0x4dd1('0x41')]));_0x3a4360[_0x4dd1('0x3f')][_0x4dd1('0x58')]=_0x2c1039['id'];if(_0x46ab35['query'][_0x4dd1('0x42')]){_0x3a4360[_0x4dd1('0x3f')]=_[_0x4dd1('0x43')](_0x3a4360[_0x4dd1('0x3f')],{'$or':_[_0x4dd1('0x35')](_0x3a4360[_0x4dd1('0x39')],function(_0x415224){var _0x3b1a76={};_0x3b1a76[_0x415224]={'$like':'%'+_0x46ab35['query'][_0x4dd1('0x42')]+'%'};return _0x3b1a76;})});}_0x3a4360=_[_0x4dd1('0x43')]({},_0x3a4360,_0x46ab35[_0x4dd1('0x44')]);return db['Disposition'][_0x4dd1('0x45')]({'where':_0x3a4360[_0x4dd1('0x3f')]})[_0x4dd1('0x26')](function(_0x3eb47e){_0x3c0355[_0x4dd1('0x45')]=_0x3eb47e;if(_0x46ab35[_0x4dd1('0x36')]['includeAll']){_0x3a4360[_0x4dd1('0x47')]=[{'all':!![]}];}return db[_0x4dd1('0x56')][_0x4dd1('0x59')](_0x3a4360);})[_0x4dd1('0x26')](function(_0x390e1b){_0x3c0355[_0x4dd1('0x5a')]=_0x390e1b;return _0x3c0355;});}})[_0x4dd1('0x26')](respondWithFilteredResult(_0x4badc7,_0x3a4360))[_0x4dd1('0x48')](handleError(_0x4badc7,null));};exports[_0x4dd1('0x5b')]=function(_0x2d21f0,_0x543e25,_0x280318){return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0x2d21f0[_0x4dd1('0x4a')]['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x543e25,null))[_0x4dd1('0x26')](function(_0x4edbd8){if(_0x4edbd8){return _0x4edbd8[_0x4dd1('0x5b')](_0x2d21f0[_0x4dd1('0x36')]['ids']);}})['then'](respondWithStatusCode(_0x543e25,null))['catch'](handleError(_0x543e25,null));};exports['addContacts']=function(_0x53f4fd,_0x2e2c95,_0x1f4de4){return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0x53f4fd['params']['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x2e2c95,null))[_0x4dd1('0x26')](function(_0x30ff9c){if(_0x30ff9c){var _0x328925=[];var _0x5aafd6={'success':[],'errors':[]};return db[_0x4dd1('0x5c')]['describe']()[_0x4dd1('0x26')](function(_0x22581d){if(_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x5d')]&&_[_0x4dd1('0x5e')](_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x5d')])){if(_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x5d')][_0x4dd1('0x4b')]){_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x5d')]=_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x5d')][_0x4dd1('0x5f')](';')+';';}else{_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x5d')]=null;}}else{_0x53f4fd['body'][_0x4dd1('0x5d')]=null;}if(_0x53f4fd[_0x4dd1('0x53')]&&_[_0x4dd1('0x5e')](_0x53f4fd[_0x4dd1('0x53')])){for(var _0x59e999=0x0;_0x59e999<_0x53f4fd[_0x4dd1('0x53')][_0x4dd1('0x4b')];_0x59e999+=0x1){_0x53f4fd[_0x4dd1('0x53')][_0x59e999][_0x4dd1('0x58')]=_0x53f4fd[_0x4dd1('0x4a')]['id'];_0x328925['push'](_0x53f4fd['body'][_0x59e999]);}return BPromise[_0x4dd1('0x60')](_0x328925,function(_0x1f7c5c){return db[_0x4dd1('0x5c')][_0x4dd1('0x4d')](_[_0x4dd1('0x61')](_0x1f7c5c,[_0x4dd1('0x62'),'id'])||{},{'fields':_[_0x4dd1('0x37')](_0x22581d),'raw':!![]})[_0x4dd1('0x26')](function(_0x55cfa9){_0x5aafd6[_0x4dd1('0x63')][_0x4dd1('0x64')](_0x55cfa9[_0x4dd1('0x65')]);})[_0x4dd1('0x48')](function(_0x1347f5){_0x5aafd6[_0x4dd1('0x66')][_0x4dd1('0x64')]({'data':_0x1f7c5c,'error':_0x1347f5['message']});});})[_0x4dd1('0x26')](function(_0x11130f){return _0x5aafd6;})[_0x4dd1('0x48')](function(_0x565a14){return _0x565a14;});}else{_0x2e2c95['status'](0x190)['json']({'message':_0x4dd1('0x67')});}});}})['then'](respondWithResult(_0x2e2c95,null))[_0x4dd1('0x48')](handleError(_0x2e2c95,null));};exports[_0x4dd1('0x68')]=function(_0x285322,_0x421522,_0x5e3251){var _0x20324d;return db[_0x4dd1('0x30')]['find']({'where':{'id':_0x285322['params']['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})[_0x4dd1('0x26')](handleEntityNotFound(_0x421522,null))[_0x4dd1('0x26')](function(_0x193300){if(_0x193300){_0x20324d=_0x193300;return db[_0x4dd1('0x5c')][_0x4dd1('0x31')];}})[_0x4dd1('0x26')](function(_0x5b4294){if(_0x5b4294){var _0x4ecf19={};var _0x928398={};_0x928398[_0x4dd1('0x34')]=_[_0x4dd1('0x69')](_['keys'](_0x5b4294),_[_0x4dd1('0x35')](_0x20324d[_0x4dd1('0x6a')],function(_0x35f5b0){return util[_0x4dd1('0x6b')](_0x4dd1('0x6c'),_0x35f5b0['id']);}));_0x928398[_0x4dd1('0x36')]=_[_0x4dd1('0x37')](_0x285322['query']);_0x928398[_0x4dd1('0x41')]=_[_0x4dd1('0x38')](_0x928398[_0x4dd1('0x34')],_0x928398[_0x4dd1('0x36')]);_0x4ecf19['attributes']=_[_0x4dd1('0x38')](_0x928398[_0x4dd1('0x34')],qs['fields'](_0x285322[_0x4dd1('0x36')][_0x4dd1('0x3a')]));_0x4ecf19['attributes']=_0x4ecf19['attributes']['length']?_0x4ecf19[_0x4dd1('0x39')]:_0x928398['model'];if(!_0x285322[_0x4dd1('0x36')]['hasOwnProperty']('nolimit')){_0x4ecf19[_0x4dd1('0x1e')]=qs[_0x4dd1('0x1e')](_0x285322['query'][_0x4dd1('0x1e')]);_0x4ecf19[_0x4dd1('0x1f')]=qs['offset'](_0x285322[_0x4dd1('0x36')]['offset']);}_0x4ecf19['order']=qs[_0x4dd1('0x3e')](_0x285322['query'][_0x4dd1('0x3e')]);_0x4ecf19['where']=qs[_0x4dd1('0x41')](_['pick'](_0x285322[_0x4dd1('0x36')],_0x928398[_0x4dd1('0x41')]));_0x4ecf19[_0x4dd1('0x6d')]=!![];if(_0x285322[_0x4dd1('0x36')]['filter']){_0x4ecf19['where']=_[_0x4dd1('0x43')](_0x4ecf19[_0x4dd1('0x3f')],{'$or':_['map'](_0x4ecf19['attributes'],function(_0x5a7b92){var _0x133f73={};_0x133f73[_0x5a7b92]={'$like':'%'+_0x285322[_0x4dd1('0x36')][_0x4dd1('0x42')]+'%'};return _0x133f73;})});}_0x4ecf19=_['merge']({},_0x4ecf19,_0x285322['options']);return _0x20324d[_0x4dd1('0x68')](_0x4ecf19);}})[_0x4dd1('0x26')](respondWithResult(_0x421522,null))[_0x4dd1('0x48')](handleError(_0x421522,null));};exports['getContactsCsv']=function(_0x204734,_0x3fd49f,_0x1296e7){var _0x58e38a;return db['CmList'][_0x4dd1('0x4c')]({'where':{'id':_0x204734[_0x4dd1('0x4a')]['id']},'include':[{'model':db[_0x4dd1('0x6e')],'as':_0x4dd1('0x6a')}]})['then'](handleEntityNotFound(_0x3fd49f,null))[_0x4dd1('0x26')](function(_0x50b6aa){if(_0x50b6aa){_0x58e38a=_0x50b6aa;return db['CmContact'][_0x4dd1('0x31')];}})[_0x4dd1('0x26')](function(_0x114495){if(_0x114495){var _0x10dfa4={};var _0x2bfee1={};_0x2bfee1['model']=_['concat'](_[_0x4dd1('0x37')](_0x114495),_[_0x4dd1('0x35')](_0x58e38a[_0x4dd1('0x6a')],function(_0x16c477){return util[_0x4dd1('0x6b')](_0x4dd1('0x6c'),_0x16c477['id']);}));_0x2bfee1['query']=_[_0x4dd1('0x37')](_0x204734[_0x4dd1('0x36')]);_0x2bfee1[_0x4dd1('0x41')]=_[_0x4dd1('0x38')](_0x2bfee1[_0x4dd1('0x34')],_0x2bfee1[_0x4dd1('0x36')]);_0x10dfa4[_0x4dd1('0x39')]=_[_0x4dd1('0x38')](_0x2bfee1['model'],qs[_0x4dd1('0x3a')](_0x204734['query'][_0x4dd1('0x3a')]));_0x10dfa4[_0x4dd1('0x39')]=_0x10dfa4[_0x4dd1('0x39')]['length']?_0x10dfa4['attributes']:_0x2bfee1[_0x4dd1('0x34')];if(!_0x204734[_0x4dd1('0x36')]['hasOwnProperty'](_0x4dd1('0x3c'))){_0x10dfa4[_0x4dd1('0x1e')]=qs[_0x4dd1('0x1e')](_0x204734[_0x4dd1('0x36')][_0x4dd1('0x1e')]);_0x10dfa4['offset']=qs[_0x4dd1('0x1f')](_0x204734[_0x4dd1('0x36')][_0x4dd1('0x1f')]);}_0x10dfa4[_0x4dd1('0x3d')]=qs[_0x4dd1('0x3e')](_0x204734[_0x4dd1('0x36')][_0x4dd1('0x3e')]);_0x10dfa4['where']=qs[_0x4dd1('0x41')](_['pick'](_0x204734[_0x4dd1('0x36')],_0x2bfee1[_0x4dd1('0x41')]));_0x10dfa4[_0x4dd1('0x6d')]=!![];if(_0x204734[_0x4dd1('0x36')][_0x4dd1('0x42')]){_0x10dfa4[_0x4dd1('0x3f')]=_['merge'](_0x10dfa4[_0x4dd1('0x3f')],{'$or':_[_0x4dd1('0x35')](_0x10dfa4[_0x4dd1('0x39')],function(_0x35e0f5){var _0x455d57={};_0x455d57[_0x35e0f5]={'$like':'%'+_0x204734[_0x4dd1('0x36')]['filter']+'%'};return _0x455d57;})});}_0x10dfa4=_[_0x4dd1('0x43')]({},_0x10dfa4,_0x204734[_0x4dd1('0x44')]);return _0x58e38a[_0x4dd1('0x68')](_0x10dfa4);}})[_0x4dd1('0x26')](function(_0x170799){if(!_[_0x4dd1('0x6f')](_0x170799)){var _0xbba667=toCsv(_0x170799);var _0x6f1cfe=Date['now']();fs[_0x4dd1('0x70')](util[_0x4dd1('0x6b')]('/tmp/list_%d_%s.csv',_0x58e38a['id'],_0x6f1cfe),_0xbba667);_0x3fd49f[_0x4dd1('0x71')](_0x4dd1('0x72'),_0x4dd1('0x73')+util[_0x4dd1('0x6b')](_0x4dd1('0x74'),_0x58e38a['id'],_0x6f1cfe));_0x3fd49f['setHeader'](_0x4dd1('0x75'),_0x4dd1('0x76'));return _0x3fd49f[_0x4dd1('0x77')](util[_0x4dd1('0x6b')]('/tmp/list_%d_%s.csv',_0x58e38a['id'],_0x6f1cfe));}else{return _0x3fd49f[_0x4dd1('0x1c')](0xcc);}})[_0x4dd1('0x48')](handleError(_0x3fd49f,null));};exports[_0x4dd1('0x78')]=function(_0x153913,_0x5523ff,_0x581c83){var _0x5a6bcb;delete _0x153913[_0x4dd1('0x53')]['id'];return db[_0x4dd1('0x30')][_0x4dd1('0x79')]({'where':{'id':_0x153913[_0x4dd1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5523ff,null))['then'](function(_0x35ef92){if(_0x35ef92){return db[_0x4dd1('0x7a')][_0x4dd1('0x7b')](function(_0x24c63e){return db[_0x4dd1('0x6e')]['create'](_0x153913['body'],{'transaction':_0x24c63e})[_0x4dd1('0x26')](function(_0x5413ca){_0x5a6bcb=_0x5413ca;return _0x35ef92[_0x4dd1('0x7c')](_0x5413ca,{'transaction':_0x24c63e});})[_0x4dd1('0x26')](function(){var _0x35b0b0={'type':db[_0x4dd1('0x7d')][_0x4dd1('0x7e')],'transaction':_0x24c63e};switch(_0x153913[_0x4dd1('0x53')][_0x4dd1('0x32')]){case'text':_0x35b0b0[_0x4dd1('0x32')]=db[_0x4dd1('0x7d')][_0x4dd1('0x7e')];break;case _0x4dd1('0x7f'):_0x35b0b0['type']=db[_0x4dd1('0x7d')][_0x4dd1('0x80')];break;case _0x4dd1('0x81'):_0x35b0b0['type']=db['Sequelize'][_0x4dd1('0x82')];_0x35b0b0[_0x4dd1('0x83')]=![];break;default:}return db['sequelize']['queryInterface']['addColumn'](_0x4dd1('0x84'),util[_0x4dd1('0x6b')](_0x4dd1('0x85'),_0x5a6bcb['id']),_0x35b0b0);})['then'](function(){return _0x5a6bcb;});});}})['then'](respondWithResult(_0x5523ff,null))[_0x4dd1('0x48')](handleError(_0x5523ff,null));};exports[_0x4dd1('0x86')]=function(_0x39b4af,_0x11a789,_0x1eb5d3){var _0x3d6dcd={};var _0x22d906={};var _0x56bad2;var _0x45ed01;return db[_0x4dd1('0x30')][_0x4dd1('0x79')]({'where':{'id':_0x39b4af['params']['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x11a789,null))[_0x4dd1('0x26')](function(_0x45ef23){if(_0x45ef23){_0x56bad2=_0x45ef23;_0x22d906[_0x4dd1('0x34')]=_[_0x4dd1('0x37')](db[_0x4dd1('0x6e')]['rawAttributes']);_0x22d906[_0x4dd1('0x36')]=_[_0x4dd1('0x37')](_0x39b4af[_0x4dd1('0x36')]);_0x22d906[_0x4dd1('0x41')]=_[_0x4dd1('0x38')](_0x22d906['model'],_0x22d906[_0x4dd1('0x36')]);_0x3d6dcd[_0x4dd1('0x39')]=_[_0x4dd1('0x38')](_0x22d906[_0x4dd1('0x34')],qs[_0x4dd1('0x3a')](_0x39b4af[_0x4dd1('0x36')]['fields']));_0x3d6dcd[_0x4dd1('0x39')]=_0x3d6dcd[_0x4dd1('0x39')][_0x4dd1('0x4b')]?_0x3d6dcd[_0x4dd1('0x39')]:_0x22d906[_0x4dd1('0x34')];_0x3d6dcd[_0x4dd1('0x3d')]=qs[_0x4dd1('0x3e')](_0x39b4af[_0x4dd1('0x36')][_0x4dd1('0x3e')]);_0x3d6dcd['where']=qs[_0x4dd1('0x41')](_[_0x4dd1('0x40')](_0x39b4af[_0x4dd1('0x36')],_0x22d906[_0x4dd1('0x41')]));_0x3d6dcd[_0x4dd1('0x3f')]=_['merge'](_0x3d6dcd[_0x4dd1('0x3f')],{'$or':[{'ListId':_0x45ef23['id']},{'ListId':null}]});if(_0x39b4af[_0x4dd1('0x36')]['filter']){_0x3d6dcd['where']=_[_0x4dd1('0x43')](_0x3d6dcd[_0x4dd1('0x3f')],{'$or':_[_0x4dd1('0x35')](_0x3d6dcd[_0x4dd1('0x39')],function(_0x373594){var _0xcfc7c2={};_0xcfc7c2[_0x373594]={'$like':'%'+_0x39b4af[_0x4dd1('0x36')]['filter']+'%'};return _0xcfc7c2;})});}_0x3d6dcd=_[_0x4dd1('0x43')]({},_0x3d6dcd,_0x39b4af[_0x4dd1('0x44')]);return db['CmCustomField'][_0x4dd1('0x87')](_0x3d6dcd);}})[_0x4dd1('0x26')](respondWithResult(_0x11a789,null))[_0x4dd1('0x48')](handleError(_0x11a789,null));};exports[_0x4dd1('0x88')]=function(_0x47eb68,_0x989684,_0x165c27){return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0x47eb68[_0x4dd1('0x4a')]['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x989684,null))[_0x4dd1('0x26')](function(_0x34324a){if(_0x34324a){return _0x34324a[_0x4dd1('0x88')](_0x47eb68[_0x4dd1('0x53')][_0x4dd1('0x62')],_['omit'](_0x47eb68[_0x4dd1('0x53')],['ids','id'])||{})[_0x4dd1('0x89')](function(_0x1708af){for(var _0xee602e=0x0;_0xee602e<_0x47eb68[_0x4dd1('0x53')]['ids']['length'];_0xee602e+=0x1){socket[_0x4dd1('0x8a')](_0x4dd1('0x8b'),{'UserId':Number(_0x47eb68['body'][_0x4dd1('0x62')][_0xee602e]),'CmListId':Number(_0x47eb68[_0x4dd1('0x4a')]['id'])});}return _0x1708af;});}})[_0x4dd1('0x26')](respondWithResult(_0x989684,null))[_0x4dd1('0x48')](handleError(_0x989684,null));};exports[_0x4dd1('0x8c')]=function(_0x35dea4,_0x34c80d,_0x1db507){return db[_0x4dd1('0x30')][_0x4dd1('0x4c')]({'where':{'id':_0x35dea4[_0x4dd1('0x4a')]['id']}})[_0x4dd1('0x26')](handleEntityNotFound(_0x34c80d,null))[_0x4dd1('0x26')](function(_0x135f24){if(_0x135f24){return _0x135f24[_0x4dd1('0x8c')](_0x35dea4[_0x4dd1('0x36')][_0x4dd1('0x62')])['then'](function(){if(_['isArray'](_0x35dea4[_0x4dd1('0x36')][_0x4dd1('0x62')])){for(var _0x30eac7=0x0;_0x30eac7<_0x35dea4[_0x4dd1('0x36')][_0x4dd1('0x62')]['length'];_0x30eac7+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x35dea4[_0x4dd1('0x36')][_0x4dd1('0x62')][_0x30eac7]),'CmListId':Number(_0x35dea4[_0x4dd1('0x4a')]['id'])});}}else{socket[_0x4dd1('0x8a')](_0x4dd1('0x8d'),{'UserId':Number(_0x35dea4[_0x4dd1('0x36')][_0x4dd1('0x62')]),'CmListId':Number(_0x35dea4['params']['id'])});}});}})[_0x4dd1('0x26')](respondWithStatusCode(_0x34c80d,null))[_0x4dd1('0x48')](handleError(_0x34c80d,null));};exports['getAgents']=function(_0x5b13b5,_0x1b3eea,_0x2304b5){var _0x1fd452={};var _0x1a0d31={};var _0x3784f0;var _0x1855d3;return db[_0x4dd1('0x30')]['findOne']({'where':{'id':_0x5b13b5[_0x4dd1('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1b3eea,null))[_0x4dd1('0x26')](function(_0x21c36a){if(_0x21c36a){_0x3784f0=_0x21c36a;_0x1a0d31['model']=_[_0x4dd1('0x37')](db[_0x4dd1('0x8e')][_0x4dd1('0x31')]);_0x1a0d31[_0x4dd1('0x36')]=_[_0x4dd1('0x37')](_0x5b13b5[_0x4dd1('0x36')]);_0x1a0d31['filters']=_['intersection'](_0x1a0d31[_0x4dd1('0x34')],_0x1a0d31[_0x4dd1('0x36')]);_0x1fd452[_0x4dd1('0x39')]=_['intersection'](_0x1a0d31[_0x4dd1('0x34')],qs['fields'](_0x5b13b5[_0x4dd1('0x36')][_0x4dd1('0x3a')]));_0x1fd452[_0x4dd1('0x39')]=_0x1fd452[_0x4dd1('0x39')]['length']?_0x1fd452[_0x4dd1('0x39')]:_0x1a0d31['model'];_0x1fd452[_0x4dd1('0x3d')]=qs[_0x4dd1('0x3e')](_0x5b13b5['query'][_0x4dd1('0x3e')]);_0x1fd452[_0x4dd1('0x3f')]=qs[_0x4dd1('0x41')](_[_0x4dd1('0x40')](_0x5b13b5[_0x4dd1('0x36')],_0x1a0d31['filters']));if(_0x5b13b5[_0x4dd1('0x36')][_0x4dd1('0x42')]){_0x1fd452[_0x4dd1('0x3f')]=_[_0x4dd1('0x43')](_0x1fd452[_0x4dd1('0x3f')],{'$or':_['map'](_0x1fd452[_0x4dd1('0x39')],function(_0x56b134){var _0x57cad2={};_0x57cad2[_0x56b134]={'$like':'%'+_0x5b13b5[_0x4dd1('0x36')][_0x4dd1('0x42')]+'%'};return _0x57cad2;})});}_0x1fd452=_[_0x4dd1('0x43')]({},_0x1fd452,_0x5b13b5['options']);return _0x3784f0['getAgents'](_0x1fd452);}})[_0x4dd1('0x26')](function(_0x3eddaa){if(_0x3eddaa){_0x1855d3=_0x3eddaa['length'];if(!_0x5b13b5[_0x4dd1('0x36')]['hasOwnProperty']('nolimit')){_0x1fd452[_0x4dd1('0x1e')]=qs[_0x4dd1('0x1e')](_0x5b13b5[_0x4dd1('0x36')]['limit']);_0x1fd452[_0x4dd1('0x1f')]=qs[_0x4dd1('0x1f')](_0x5b13b5[_0x4dd1('0x36')][_0x4dd1('0x1f')]);}return _0x3784f0['getAgents'](_0x1fd452);}})[_0x4dd1('0x26')](function(_0x11baea){if(_0x11baea){return _0x11baea?{'count':_0x1855d3,'rows':_0x11baea}:null;}})[_0x4dd1('0x26')](respondWithResult(_0x1b3eea,null))[_0x4dd1('0x48')](handleError(_0x1b3eea,null));};
\ No newline at end of file
+var _0x4732=['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','../../config/license/util','../../mysqldb','redis','defaults','./cmList.socket','sendStatus','status','end','json','limit','undefined','count','set','Content-Range','apply','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','CmList','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','offset','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','role','Lists','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','findOne','nolimit','ListId','rows','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','isEmpty','writeFileSync','Content-disposition','setHeader','Content-type','download','/tmp/list_%d_%s.csv','addCustomField','sequelize','addCustomFields','TEXT','text','number','Sequelize','switch','BOOLEAN','queryInterface','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel'];(function(_0x26f866,_0x1900bc){var _0x1abef3=function(_0x3217de){while(--_0x3217de){_0x26f866['push'](_0x26f866['shift']());}};_0x1abef3(++_0x1900bc);}(_0x4732,0x82));var _0x2473=function(_0x1057a3,_0x28d9b7){_0x1057a3=_0x1057a3-0x0;var _0x131cdb=_0x4732[_0x1057a3];return _0x131cdb;};'use strict';var emlformat=require(_0x2473('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2473('0x1'));var jsonpatch=require(_0x2473('0x2'));var rp=require('request-promise');var moment=require(_0x2473('0x3'));var BPromise=require(_0x2473('0x4'));var Mustache=require(_0x2473('0x5'));var util=require(_0x2473('0x6'));var path=require(_0x2473('0x7'));var sox=require(_0x2473('0x8'));var csv=require(_0x2473('0x9'));var ejs=require(_0x2473('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2473('0xb'));var squel=require(_0x2473('0xc'));var crypto=require(_0x2473('0xd'));var jsforce=require(_0x2473('0xe'));var deskjs=require(_0x2473('0xf'));var toCsv=require(_0x2473('0x9'));var querystring=require(_0x2473('0x10'));var Papa=require(_0x2473('0x11'));var Redis=require('ioredis');var authService=require(_0x2473('0x12'));var qs=require(_0x2473('0x13'));var as=require(_0x2473('0x14'));var hardwareService=require(_0x2473('0x15'));var logger=require(_0x2473('0x16'))(_0x2473('0x17'));var utils=require(_0x2473('0x18'));var config=require(_0x2473('0x19'));var licenseUtil=require(_0x2473('0x1a'));var db=require(_0x2473('0x1b'))['db'];config[_0x2473('0x1c')]=_[_0x2473('0x1d')](config[_0x2473('0x1c')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2473('0x1c')]));require(_0x2473('0x1e'))['register'](socket);function respondWithStatusCode(_0x541759,_0x50e44e){_0x50e44e=_0x50e44e||0xcc;return function(_0x282530){if(_0x282530){return _0x541759[_0x2473('0x1f')](_0x50e44e);}return _0x541759[_0x2473('0x20')](_0x50e44e)[_0x2473('0x21')]();};}function respondWithResult(_0x285976,_0xb6a4d0){_0xb6a4d0=_0xb6a4d0||0xc8;return function(_0xa92f74){if(_0xa92f74){return _0x285976[_0x2473('0x20')](_0xb6a4d0)[_0x2473('0x22')](_0xa92f74);}};}function respondWithFilteredResult(_0x106bdd,_0x643724){return function(_0x280a5a){if(_0x280a5a){var _0x74b3b=typeof _0x643724['offset']==='undefined'&&typeof _0x643724[_0x2473('0x23')]===_0x2473('0x24');var _0x4a74ba=_0x280a5a[_0x2473('0x25')];var _0x5dbad2=_0x74b3b?0x0:_0x643724['offset'];var _0x311ed4=_0x74b3b?_0x280a5a[_0x2473('0x25')]:_0x643724['offset']+_0x643724[_0x2473('0x23')];var _0x2a237a;if(_0x311ed4>=_0x4a74ba){_0x311ed4=_0x4a74ba;_0x2a237a=0xc8;}else{_0x2a237a=0xce;}_0x106bdd['status'](_0x2a237a);return _0x106bdd[_0x2473('0x26')](_0x2473('0x27'),_0x5dbad2+'-'+_0x311ed4+'/'+_0x4a74ba)[_0x2473('0x22')](_0x280a5a);}return null;};}function patchUpdates(_0x4f59d4){return function(_0xf549bb){try{jsonpatch[_0x2473('0x28')](_0xf549bb,_0x4f59d4,!![]);}catch(_0x108552){return BPromise['reject'](_0x108552);}return _0xf549bb['save']();};}function saveUpdates(_0x5cd147,_0x3c04bf){return function(_0x930495){if(_0x930495){return _0x930495[_0x2473('0x29')](_0x5cd147)[_0x2473('0x2a')](function(_0x2f39a5){return _0x2f39a5;});}return null;};}function removeEntity(_0x7cd6b8,_0x6a9e3c){return function(_0x1267fe){if(_0x1267fe){return _0x1267fe[_0x2473('0x2b')]()[_0x2473('0x2a')](function(){var _0x2b42a4=_0x1267fe[_0x2473('0x2c')]({'plain':!![]});var _0x192969='Lists';return db[_0x2473('0x2d')][_0x2473('0x2b')]({'where':{'type':_0x192969,'resourceId':_0x2b42a4['id']}})[_0x2473('0x2a')](function(){return _0x1267fe;});})[_0x2473('0x2a')](function(){_0x7cd6b8[_0x2473('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1dc123,_0x39b38e){return function(_0x27c303){if(!_0x27c303){_0x1dc123['sendStatus'](0x194);}return _0x27c303;};}function handleError(_0xb59731,_0x3ae2d8){_0x3ae2d8=_0x3ae2d8||0x1f4;return function(_0x3f65bb){logger[_0x2473('0x2e')](_0x3f65bb[_0x2473('0x2f')]);if(_0x3f65bb['name']){delete _0x3f65bb['name'];}_0xb59731[_0x2473('0x20')](_0x3ae2d8)[_0x2473('0x30')](_0x3f65bb);};}exports[_0x2473('0x31')]=function(_0x205dfc,_0x4a787c){var _0x5a413b={},_0x527438={},_0x3bdd32={'count':0x0,'rows':[]};var _0x3e0393=_[_0x2473('0x32')](db[_0x2473('0x33')][_0x2473('0x34')],function(_0x21d04e){return{'name':_0x21d04e[_0x2473('0x35')],'type':_0x21d04e[_0x2473('0x36')][_0x2473('0x37')]};});_0x527438[_0x2473('0x38')]=_['map'](_0x3e0393,_0x2473('0x39'));_0x527438[_0x2473('0x3a')]=_[_0x2473('0x3b')](_0x205dfc[_0x2473('0x3a')]);_0x527438[_0x2473('0x3c')]=_[_0x2473('0x3d')](_0x527438[_0x2473('0x38')],_0x527438['query']);_0x5a413b[_0x2473('0x3e')]=_[_0x2473('0x3d')](_0x527438[_0x2473('0x38')],qs[_0x2473('0x3f')](_0x205dfc['query']['fields']));_0x5a413b[_0x2473('0x3e')]=_0x5a413b[_0x2473('0x3e')][_0x2473('0x40')]?_0x5a413b[_0x2473('0x3e')]:_0x527438[_0x2473('0x38')];if(!_0x205dfc['query'][_0x2473('0x41')]('nolimit')){_0x5a413b['limit']=qs[_0x2473('0x23')](_0x205dfc[_0x2473('0x3a')][_0x2473('0x23')]);_0x5a413b[_0x2473('0x42')]=qs[_0x2473('0x42')](_0x205dfc[_0x2473('0x3a')]['offset']);}_0x5a413b[_0x2473('0x43')]=qs[_0x2473('0x44')](_0x205dfc[_0x2473('0x3a')][_0x2473('0x44')]);_0x5a413b[_0x2473('0x45')]=qs[_0x2473('0x3c')](_[_0x2473('0x46')](_0x205dfc[_0x2473('0x3a')],_0x527438['filters']),_0x3e0393);if(_0x205dfc[_0x2473('0x3a')][_0x2473('0x47')]){_0x5a413b[_0x2473('0x45')]=_[_0x2473('0x48')](_0x5a413b[_0x2473('0x45')],{'$or':_[_0x2473('0x32')](_0x3e0393,function(_0x4e927f){if(_0x4e927f[_0x2473('0x36')]!=='VIRTUAL'){var _0x3866f5={};_0x3866f5[_0x4e927f[_0x2473('0x39')]]={'$like':'%'+_0x205dfc[_0x2473('0x3a')][_0x2473('0x47')]+'%'};return _0x3866f5;}})});}_0x5a413b=_[_0x2473('0x48')]({},_0x5a413b,_0x205dfc[_0x2473('0x49')]);var _0x1a53a3={'where':_0x5a413b[_0x2473('0x45')]};return db[_0x2473('0x33')][_0x2473('0x25')](_0x1a53a3)[_0x2473('0x2a')](function(_0xbe0b37){_0x3bdd32[_0x2473('0x25')]=_0xbe0b37;if(_0x205dfc[_0x2473('0x3a')][_0x2473('0x4a')]){_0x5a413b[_0x2473('0x4b')]=[{'all':!![]}];}return db[_0x2473('0x33')][_0x2473('0x4c')](_0x5a413b);})[_0x2473('0x2a')](function(_0x166ba0){_0x3bdd32['rows']=_0x166ba0;return _0x3bdd32;})[_0x2473('0x2a')](respondWithFilteredResult(_0x4a787c,_0x5a413b))[_0x2473('0x4d')](handleError(_0x4a787c,null));};exports['show']=function(_0x17e9bb,_0x3db492){var _0x30eac3={'raw':![],'where':{'id':_0x17e9bb[_0x2473('0x4e')]['id']}},_0x10ce3d={};_0x10ce3d[_0x2473('0x38')]=_['keys'](db[_0x2473('0x33')][_0x2473('0x34')]);_0x10ce3d[_0x2473('0x3a')]=_['keys'](_0x17e9bb['query']);_0x10ce3d[_0x2473('0x3c')]=_['intersection'](_0x10ce3d['model'],_0x10ce3d[_0x2473('0x3a')]);_0x30eac3[_0x2473('0x3e')]=_['intersection'](_0x10ce3d[_0x2473('0x38')],qs[_0x2473('0x3f')](_0x17e9bb[_0x2473('0x3a')][_0x2473('0x3f')]));_0x30eac3[_0x2473('0x3e')]=_0x30eac3[_0x2473('0x3e')][_0x2473('0x40')]?_0x30eac3[_0x2473('0x3e')]:_0x10ce3d[_0x2473('0x38')];if(_0x17e9bb[_0x2473('0x3a')][_0x2473('0x4a')]){_0x30eac3[_0x2473('0x4b')]=[{'all':!![]}];}_0x30eac3=_[_0x2473('0x48')]({},_0x30eac3,_0x17e9bb[_0x2473('0x49')]);return db[_0x2473('0x33')][_0x2473('0x4f')](_0x30eac3)[_0x2473('0x2a')](handleEntityNotFound(_0x3db492,null))[_0x2473('0x2a')](respondWithResult(_0x3db492,null))[_0x2473('0x4d')](handleError(_0x3db492,null));};exports[_0x2473('0x50')]=function(_0x10f751,_0x41b81a){return db[_0x2473('0x33')][_0x2473('0x50')](_0x10f751[_0x2473('0x51')],{})['then'](function(_0x200a29){var _0x31ec2d=_0x10f751[_0x2473('0x52')]['get']({'plain':!![]});if(!_0x31ec2d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x31ec2d[_0x2473('0x53')]==='user'){var _0x5750f5=_0x200a29['get']({'plain':!![]});var _0x298d93=_0x2473('0x54');return db[_0x2473('0x55')][_0x2473('0x4f')]({'where':{'name':_0x298d93,'userProfileId':_0x31ec2d[_0x2473('0x56')]},'raw':!![]})['then'](function(_0x3218ef){if(_0x3218ef&&_0x3218ef[_0x2473('0x57')]===0x0){return db[_0x2473('0x2d')]['create']({'name':_0x5750f5[_0x2473('0x39')],'resourceId':_0x5750f5['id'],'type':_0x3218ef[_0x2473('0x39')],'sectionId':_0x3218ef['id']},{})[_0x2473('0x2a')](function(){return _0x200a29;});}else{return _0x200a29;}})[_0x2473('0x4d')](function(_0x3ee443){logger[_0x2473('0x2e')](_0x2473('0x58'),_0x3ee443);throw _0x3ee443;});}return _0x200a29;})[_0x2473('0x2a')](respondWithResult(_0x41b81a,0xc9))['catch'](handleError(_0x41b81a,null));};exports[_0x2473('0x29')]=function(_0x536eb7,_0x21963f){if(_0x536eb7[_0x2473('0x51')]['id']){delete _0x536eb7[_0x2473('0x51')]['id'];}return db[_0x2473('0x33')]['find']({'where':{'id':_0x536eb7[_0x2473('0x4e')]['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x21963f,null))[_0x2473('0x2a')](saveUpdates(_0x536eb7[_0x2473('0x51')],null))[_0x2473('0x2a')](respondWithResult(_0x21963f,null))['catch'](handleError(_0x21963f,null));};exports['destroy']=function(_0x2731d5,_0x95cc01){return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x2731d5[_0x2473('0x4e')]['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x95cc01,null))[_0x2473('0x2a')](removeEntity(_0x95cc01,null))[_0x2473('0x4d')](handleError(_0x95cc01,null));};exports[_0x2473('0x59')]=function(_0x5be383,_0x12cf69){return db[_0x2473('0x33')][_0x2473('0x59')]()[_0x2473('0x2a')](respondWithResult(_0x12cf69,null))[_0x2473('0x4d')](handleError(_0x12cf69,null));};exports[_0x2473('0x5a')]=function(_0x30205f,_0x3272a5,_0x5a6aff){if(_0x30205f['body']['id']){delete _0x30205f[_0x2473('0x51')]['id'];}return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x30205f[_0x2473('0x4e')]['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x3272a5,null))[_0x2473('0x2a')](function(_0x50a2c4){if(_0x50a2c4){_0x30205f[_0x2473('0x51')]['ListId']=_0x50a2c4['id'];return db[_0x2473('0x5b')][_0x2473('0x50')](_0x30205f[_0x2473('0x51')]);}})[_0x2473('0x2a')](respondWithResult(_0x3272a5,null))[_0x2473('0x4d')](handleError(_0x3272a5,null));};exports['getDispositions']=function(_0x3d35e1,_0x304388,_0x574abd){var _0x5a9230={'raw':![],'where':{}};var _0x3c76c3={};var _0x9b1bd5={'count':0x0,'rows':[]};return db[_0x2473('0x33')][_0x2473('0x5c')]({'where':{'id':_0x3d35e1[_0x2473('0x4e')]['id']}})['then'](handleEntityNotFound(_0x304388,null))[_0x2473('0x2a')](function(_0x43f5e2){if(_0x43f5e2){_0x3c76c3['model']=_['keys'](db['Disposition']['rawAttributes']);_0x3c76c3['query']=_[_0x2473('0x3b')](_0x3d35e1[_0x2473('0x3a')]);_0x3c76c3[_0x2473('0x3c')]=_['intersection'](_0x3c76c3[_0x2473('0x38')],_0x3c76c3[_0x2473('0x3a')]);_0x5a9230[_0x2473('0x3e')]=_[_0x2473('0x3d')](_0x3c76c3[_0x2473('0x38')],qs[_0x2473('0x3f')](_0x3d35e1[_0x2473('0x3a')][_0x2473('0x3f')]));_0x5a9230['attributes']=_0x5a9230[_0x2473('0x3e')][_0x2473('0x40')]?_0x5a9230[_0x2473('0x3e')]:_0x3c76c3['model'];if(!_0x3d35e1[_0x2473('0x3a')][_0x2473('0x41')](_0x2473('0x5d'))){_0x5a9230[_0x2473('0x23')]=qs[_0x2473('0x23')](_0x3d35e1[_0x2473('0x3a')][_0x2473('0x23')]);_0x5a9230['offset']=qs[_0x2473('0x42')](_0x3d35e1[_0x2473('0x3a')][_0x2473('0x42')]);}_0x5a9230['order']=qs[_0x2473('0x44')](_0x3d35e1['query'][_0x2473('0x44')]);_0x5a9230[_0x2473('0x45')]=qs[_0x2473('0x3c')](_[_0x2473('0x46')](_0x3d35e1[_0x2473('0x3a')],_0x3c76c3[_0x2473('0x3c')]));_0x5a9230['where'][_0x2473('0x5e')]=_0x43f5e2['id'];if(_0x3d35e1['query'][_0x2473('0x47')]){_0x5a9230['where']=_['merge'](_0x5a9230['where'],{'$or':_[_0x2473('0x32')](_0x5a9230['attributes'],function(_0x3e4fd6){var _0x565f57={};_0x565f57[_0x3e4fd6]={'$like':'%'+_0x3d35e1['query']['filter']+'%'};return _0x565f57;})});}_0x5a9230=_[_0x2473('0x48')]({},_0x5a9230,_0x3d35e1[_0x2473('0x49')]);return db[_0x2473('0x5b')][_0x2473('0x25')]({'where':_0x5a9230[_0x2473('0x45')]})['then'](function(_0x491ec4){_0x9b1bd5[_0x2473('0x25')]=_0x491ec4;if(_0x3d35e1[_0x2473('0x3a')][_0x2473('0x4a')]){_0x5a9230['include']=[{'all':!![]}];}return db[_0x2473('0x5b')][_0x2473('0x4c')](_0x5a9230);})[_0x2473('0x2a')](function(_0x262320){_0x9b1bd5[_0x2473('0x5f')]=_0x262320;return _0x9b1bd5;});}})[_0x2473('0x2a')](respondWithFilteredResult(_0x304388,_0x5a9230))[_0x2473('0x4d')](handleError(_0x304388,null));};exports[_0x2473('0x60')]=function(_0x3df370,_0x5a251c,_0x1055dd){return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x3df370[_0x2473('0x4e')]['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x5a251c,null))['then'](function(_0x23b9c8){if(_0x23b9c8){return _0x23b9c8[_0x2473('0x60')](_0x3df370[_0x2473('0x3a')][_0x2473('0x61')]);}})[_0x2473('0x2a')](respondWithStatusCode(_0x5a251c,null))[_0x2473('0x4d')](handleError(_0x5a251c,null));};exports[_0x2473('0x62')]=function(_0x1333ec,_0x23192a,_0x14b9c6){return db[_0x2473('0x33')]['find']({'where':{'id':_0x1333ec[_0x2473('0x4e')]['id']}})['then'](handleEntityNotFound(_0x23192a,null))['then'](function(_0x35613d){if(_0x35613d){var _0x111ead=[];var _0x22d6b6={'success':[],'errors':[]};return db[_0x2473('0x63')][_0x2473('0x59')]()[_0x2473('0x2a')](function(_0x19061d){if(_0x1333ec[_0x2473('0x51')][_0x2473('0x64')]&&_[_0x2473('0x65')](_0x1333ec[_0x2473('0x51')][_0x2473('0x64')])){if(_0x1333ec[_0x2473('0x51')][_0x2473('0x64')]['length']){_0x1333ec[_0x2473('0x51')][_0x2473('0x64')]=_0x1333ec[_0x2473('0x51')][_0x2473('0x64')][_0x2473('0x66')](';')+';';}else{_0x1333ec[_0x2473('0x51')][_0x2473('0x64')]=null;}}else{_0x1333ec[_0x2473('0x51')][_0x2473('0x64')]=null;}if(_0x1333ec['body']&&_[_0x2473('0x65')](_0x1333ec[_0x2473('0x51')])){for(var _0x2ce501=0x0;_0x2ce501<_0x1333ec[_0x2473('0x51')][_0x2473('0x40')];_0x2ce501+=0x1){_0x1333ec[_0x2473('0x51')][_0x2ce501]['ListId']=_0x1333ec[_0x2473('0x4e')]['id'];_0x111ead[_0x2473('0x67')](_0x1333ec['body'][_0x2ce501]);}return BPromise[_0x2473('0x68')](_0x111ead,function(_0x2df6ca){return db[_0x2473('0x63')][_0x2473('0x50')](_['omit'](_0x2df6ca,['ids','id'])||{},{'fields':_[_0x2473('0x3b')](_0x19061d),'raw':!![]})[_0x2473('0x2a')](function(_0x430127){_0x22d6b6['success'][_0x2473('0x67')](_0x430127[_0x2473('0x69')]);})[_0x2473('0x4d')](function(_0x149a68){_0x22d6b6[_0x2473('0x6a')][_0x2473('0x67')]({'data':_0x2df6ca,'error':_0x149a68[_0x2473('0x6b')]});});})['then'](function(_0x3cfdbc){return _0x22d6b6;})[_0x2473('0x4d')](function(_0x33da52){return _0x33da52;});}else{_0x23192a['status'](0x190)[_0x2473('0x22')]({'message':_0x2473('0x6c')});}});}})['then'](respondWithResult(_0x23192a,null))['catch'](handleError(_0x23192a,null));};exports[_0x2473('0x6d')]=function(_0x2700bd,_0x56effa,_0x2feef3){var _0x5ce558;return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x2700bd[_0x2473('0x4e')]['id']},'include':[{'model':db[_0x2473('0x6e')],'as':_0x2473('0x6f')}]})['then'](handleEntityNotFound(_0x56effa,null))['then'](function(_0x4efe39){if(_0x4efe39){_0x5ce558=_0x4efe39;return db['CmContact'][_0x2473('0x34')];}})[_0x2473('0x2a')](function(_0x441d1c){if(_0x441d1c){var _0x502c60={};var _0x34dabc={};_0x34dabc[_0x2473('0x38')]=_[_0x2473('0x70')](_['keys'](_0x441d1c),_['map'](_0x5ce558[_0x2473('0x6f')],function(_0x5f202c){return util[_0x2473('0x71')]('cf_%d',_0x5f202c['id']);}));_0x34dabc[_0x2473('0x3a')]=_[_0x2473('0x3b')](_0x2700bd['query']);_0x34dabc[_0x2473('0x3c')]=_[_0x2473('0x3d')](_0x34dabc[_0x2473('0x38')],_0x34dabc['query']);_0x502c60[_0x2473('0x3e')]=_['intersection'](_0x34dabc[_0x2473('0x38')],qs['fields'](_0x2700bd[_0x2473('0x3a')]['fields']));_0x502c60[_0x2473('0x3e')]=_0x502c60[_0x2473('0x3e')]['length']?_0x502c60[_0x2473('0x3e')]:_0x34dabc[_0x2473('0x38')];if(!_0x2700bd[_0x2473('0x3a')][_0x2473('0x41')](_0x2473('0x5d'))){_0x502c60[_0x2473('0x23')]=qs[_0x2473('0x23')](_0x2700bd[_0x2473('0x3a')][_0x2473('0x23')]);_0x502c60['offset']=qs[_0x2473('0x42')](_0x2700bd['query'][_0x2473('0x42')]);}_0x502c60['order']=qs['sort'](_0x2700bd['query'][_0x2473('0x44')]);_0x502c60[_0x2473('0x45')]=qs[_0x2473('0x3c')](_[_0x2473('0x46')](_0x2700bd[_0x2473('0x3a')],_0x34dabc[_0x2473('0x3c')]));_0x502c60[_0x2473('0x72')]=!![];if(_0x2700bd[_0x2473('0x3a')][_0x2473('0x47')]){_0x502c60[_0x2473('0x45')]=_[_0x2473('0x48')](_0x502c60['where'],{'$or':_['map'](_0x502c60[_0x2473('0x3e')],function(_0xb123a4){var _0x3984dc={};_0x3984dc[_0xb123a4]={'$like':'%'+_0x2700bd[_0x2473('0x3a')][_0x2473('0x47')]+'%'};return _0x3984dc;})});}_0x502c60=_[_0x2473('0x48')]({},_0x502c60,_0x2700bd[_0x2473('0x49')]);return _0x5ce558[_0x2473('0x6d')](_0x502c60);}})[_0x2473('0x2a')](respondWithResult(_0x56effa,null))['catch'](handleError(_0x56effa,null));};exports[_0x2473('0x73')]=function(_0x1b7f23,_0x115afc,_0x19ba47){var _0x19763;return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x1b7f23[_0x2473('0x4e')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x2473('0x6f')}]})[_0x2473('0x2a')](handleEntityNotFound(_0x115afc,null))[_0x2473('0x2a')](function(_0x4275d3){if(_0x4275d3){_0x19763=_0x4275d3;return db[_0x2473('0x63')][_0x2473('0x34')];}})[_0x2473('0x2a')](function(_0x4eec7a){if(_0x4eec7a){var _0x493ca4={};var _0x4526a6={};_0x4526a6[_0x2473('0x38')]=_[_0x2473('0x70')](_[_0x2473('0x3b')](_0x4eec7a),_[_0x2473('0x32')](_0x19763[_0x2473('0x6f')],function(_0x2ed998){return util['format']('cf_%d',_0x2ed998['id']);}));_0x4526a6[_0x2473('0x3a')]=_['keys'](_0x1b7f23[_0x2473('0x3a')]);_0x4526a6[_0x2473('0x3c')]=_[_0x2473('0x3d')](_0x4526a6[_0x2473('0x38')],_0x4526a6[_0x2473('0x3a')]);_0x493ca4[_0x2473('0x3e')]=_[_0x2473('0x3d')](_0x4526a6[_0x2473('0x38')],qs[_0x2473('0x3f')](_0x1b7f23[_0x2473('0x3a')]['fields']));_0x493ca4[_0x2473('0x3e')]=_0x493ca4[_0x2473('0x3e')][_0x2473('0x40')]?_0x493ca4[_0x2473('0x3e')]:_0x4526a6['model'];if(!_0x1b7f23[_0x2473('0x3a')][_0x2473('0x41')](_0x2473('0x5d'))){_0x493ca4[_0x2473('0x23')]=qs['limit'](_0x1b7f23['query'][_0x2473('0x23')]);_0x493ca4[_0x2473('0x42')]=qs[_0x2473('0x42')](_0x1b7f23[_0x2473('0x3a')][_0x2473('0x42')]);}_0x493ca4['order']=qs['sort'](_0x1b7f23[_0x2473('0x3a')][_0x2473('0x44')]);_0x493ca4[_0x2473('0x45')]=qs[_0x2473('0x3c')](_['pick'](_0x1b7f23['query'],_0x4526a6['filters']));_0x493ca4[_0x2473('0x72')]=!![];if(_0x1b7f23[_0x2473('0x3a')][_0x2473('0x47')]){_0x493ca4[_0x2473('0x45')]=_[_0x2473('0x48')](_0x493ca4[_0x2473('0x45')],{'$or':_[_0x2473('0x32')](_0x493ca4[_0x2473('0x3e')],function(_0x3a5534){var _0x2c7375={};_0x2c7375[_0x3a5534]={'$like':'%'+_0x1b7f23[_0x2473('0x3a')][_0x2473('0x47')]+'%'};return _0x2c7375;})});}_0x493ca4=_[_0x2473('0x48')]({},_0x493ca4,_0x1b7f23['options']);return _0x19763[_0x2473('0x6d')](_0x493ca4);}})['then'](function(_0x18052a){if(!_[_0x2473('0x74')](_0x18052a)){var _0xdaaba6=toCsv(_0x18052a);var _0x76f3cc=Date['now']();fs[_0x2473('0x75')](util[_0x2473('0x71')]('/tmp/list_%d_%s.csv',_0x19763['id'],_0x76f3cc),_0xdaaba6);_0x115afc['setHeader'](_0x2473('0x76'),'attachment;\x20filename='+util[_0x2473('0x71')]('list_%d_%s.csv',_0x19763['id'],_0x76f3cc));_0x115afc[_0x2473('0x77')](_0x2473('0x78'),'text/csv');return _0x115afc[_0x2473('0x79')](util[_0x2473('0x71')](_0x2473('0x7a'),_0x19763['id'],_0x76f3cc));}else{return _0x115afc[_0x2473('0x1f')](0xcc);}})['catch'](handleError(_0x115afc,null));};exports[_0x2473('0x7b')]=function(_0x3b19e2,_0x5b7615,_0x5a2e20){var _0x7e1adf;delete _0x3b19e2['body']['id'];return db[_0x2473('0x33')][_0x2473('0x5c')]({'where':{'id':_0x3b19e2[_0x2473('0x4e')]['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x5b7615,null))[_0x2473('0x2a')](function(_0xb533db){if(_0xb533db){return db[_0x2473('0x7c')]['transaction'](function(_0x4c5ce9){return db[_0x2473('0x6e')][_0x2473('0x50')](_0x3b19e2['body'],{'transaction':_0x4c5ce9})[_0x2473('0x2a')](function(_0x453e89){_0x7e1adf=_0x453e89;return _0xb533db[_0x2473('0x7d')](_0x453e89,{'transaction':_0x4c5ce9});})[_0x2473('0x2a')](function(){var _0x19eac6={'type':db['Sequelize'][_0x2473('0x7e')],'transaction':_0x4c5ce9};switch(_0x3b19e2[_0x2473('0x51')]['type']){case _0x2473('0x7f'):_0x19eac6[_0x2473('0x36')]=db['Sequelize'][_0x2473('0x7e')];break;case _0x2473('0x80'):_0x19eac6[_0x2473('0x36')]=db[_0x2473('0x81')]['INTEGER'];break;case _0x2473('0x82'):_0x19eac6[_0x2473('0x36')]=db['Sequelize'][_0x2473('0x83')];_0x19eac6['defaultValue']=![];break;default:}return db[_0x2473('0x7c')][_0x2473('0x84')]['addColumn']('cm_contacts',util[_0x2473('0x71')]('cf_%s',_0x7e1adf['id']),_0x19eac6);})['then'](function(){return _0x7e1adf;});});}})[_0x2473('0x2a')](respondWithResult(_0x5b7615,null))[_0x2473('0x4d')](handleError(_0x5b7615,null));};exports[_0x2473('0x85')]=function(_0x1acd81,_0x15e5e5,_0x111791){var _0x3085c1={};var _0x5bfa65={};var _0x4fd27f;var _0x428495;return db[_0x2473('0x33')][_0x2473('0x5c')]({'where':{'id':_0x1acd81[_0x2473('0x4e')]['id']}})['then'](handleEntityNotFound(_0x15e5e5,null))['then'](function(_0x279ed2){if(_0x279ed2){_0x4fd27f=_0x279ed2;_0x5bfa65['model']=_[_0x2473('0x3b')](db[_0x2473('0x6e')][_0x2473('0x34')]);_0x5bfa65[_0x2473('0x3a')]=_[_0x2473('0x3b')](_0x1acd81[_0x2473('0x3a')]);_0x5bfa65['filters']=_[_0x2473('0x3d')](_0x5bfa65[_0x2473('0x38')],_0x5bfa65[_0x2473('0x3a')]);_0x3085c1['attributes']=_[_0x2473('0x3d')](_0x5bfa65[_0x2473('0x38')],qs[_0x2473('0x3f')](_0x1acd81[_0x2473('0x3a')]['fields']));_0x3085c1[_0x2473('0x3e')]=_0x3085c1[_0x2473('0x3e')][_0x2473('0x40')]?_0x3085c1[_0x2473('0x3e')]:_0x5bfa65['model'];_0x3085c1[_0x2473('0x43')]=qs['sort'](_0x1acd81[_0x2473('0x3a')][_0x2473('0x44')]);_0x3085c1[_0x2473('0x45')]=qs[_0x2473('0x3c')](_[_0x2473('0x46')](_0x1acd81[_0x2473('0x3a')],_0x5bfa65[_0x2473('0x3c')]));_0x3085c1[_0x2473('0x45')]=_['merge'](_0x3085c1[_0x2473('0x45')],{'$or':[{'ListId':_0x279ed2['id']},{'ListId':null}]});if(_0x1acd81[_0x2473('0x3a')][_0x2473('0x47')]){_0x3085c1[_0x2473('0x45')]=_[_0x2473('0x48')](_0x3085c1[_0x2473('0x45')],{'$or':_[_0x2473('0x32')](_0x3085c1['attributes'],function(_0x3b9a15){var _0x309ba5={};_0x309ba5[_0x3b9a15]={'$like':'%'+_0x1acd81[_0x2473('0x3a')][_0x2473('0x47')]+'%'};return _0x309ba5;})});}_0x3085c1=_[_0x2473('0x48')]({},_0x3085c1,_0x1acd81[_0x2473('0x49')]);return db['CmCustomField'][_0x2473('0x86')](_0x3085c1);}})[_0x2473('0x2a')](respondWithResult(_0x15e5e5,null))['catch'](handleError(_0x15e5e5,null));};exports['addAgents']=function(_0x3f2eb0,_0x50c311,_0x59a93d){return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x3f2eb0['params']['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x50c311,null))['then'](function(_0x28f621){if(_0x28f621){return _0x28f621[_0x2473('0x87')](_0x3f2eb0[_0x2473('0x51')][_0x2473('0x61')],_['omit'](_0x3f2eb0[_0x2473('0x51')],[_0x2473('0x61'),'id'])||{})[_0x2473('0x88')](function(_0x315257){for(var _0x24e859=0x0;_0x24e859<_0x3f2eb0[_0x2473('0x51')][_0x2473('0x61')][_0x2473('0x40')];_0x24e859+=0x1){socket[_0x2473('0x89')](_0x2473('0x8a'),{'UserId':Number(_0x3f2eb0[_0x2473('0x51')]['ids'][_0x24e859]),'CmListId':Number(_0x3f2eb0[_0x2473('0x4e')]['id'])});}return _0x315257;});}})[_0x2473('0x2a')](respondWithResult(_0x50c311,null))[_0x2473('0x4d')](handleError(_0x50c311,null));};exports['removeAgents']=function(_0x48f4fc,_0x46a72c,_0x382118){return db[_0x2473('0x33')][_0x2473('0x4f')]({'where':{'id':_0x48f4fc[_0x2473('0x4e')]['id']}})[_0x2473('0x2a')](handleEntityNotFound(_0x46a72c,null))['then'](function(_0x5dadc1){if(_0x5dadc1){return _0x5dadc1[_0x2473('0x8b')](_0x48f4fc[_0x2473('0x3a')][_0x2473('0x61')])[_0x2473('0x2a')](function(){if(_[_0x2473('0x65')](_0x48f4fc[_0x2473('0x3a')][_0x2473('0x61')])){for(var _0x4c9b1a=0x0;_0x4c9b1a<_0x48f4fc[_0x2473('0x3a')][_0x2473('0x61')][_0x2473('0x40')];_0x4c9b1a+=0x1){socket[_0x2473('0x89')](_0x2473('0x8c'),{'UserId':Number(_0x48f4fc[_0x2473('0x3a')][_0x2473('0x61')][_0x4c9b1a]),'CmListId':Number(_0x48f4fc[_0x2473('0x4e')]['id'])});}}else{socket[_0x2473('0x89')]('userCmList:remove',{'UserId':Number(_0x48f4fc[_0x2473('0x3a')]['ids']),'CmListId':Number(_0x48f4fc['params']['id'])});}});}})[_0x2473('0x2a')](respondWithStatusCode(_0x46a72c,null))[_0x2473('0x4d')](handleError(_0x46a72c,null));};exports[_0x2473('0x8d')]=function(_0x598f3c,_0x220294,_0x345511){var _0x593b36={};var _0xe96472={};var _0x24a4a3;var _0xfa8ee5;return db[_0x2473('0x33')][_0x2473('0x5c')]({'where':{'id':_0x598f3c[_0x2473('0x4e')]['id']}})['then'](handleEntityNotFound(_0x220294,null))[_0x2473('0x2a')](function(_0x46feda){if(_0x46feda){_0x24a4a3=_0x46feda;_0xe96472['model']=_[_0x2473('0x3b')](db[_0x2473('0x8e')][_0x2473('0x34')]);_0xe96472[_0x2473('0x3a')]=_[_0x2473('0x3b')](_0x598f3c['query']);_0xe96472['filters']=_['intersection'](_0xe96472['model'],_0xe96472[_0x2473('0x3a')]);_0x593b36[_0x2473('0x3e')]=_[_0x2473('0x3d')](_0xe96472['model'],qs['fields'](_0x598f3c[_0x2473('0x3a')][_0x2473('0x3f')]));_0x593b36[_0x2473('0x3e')]=_0x593b36['attributes'][_0x2473('0x40')]?_0x593b36[_0x2473('0x3e')]:_0xe96472[_0x2473('0x38')];_0x593b36[_0x2473('0x43')]=qs[_0x2473('0x44')](_0x598f3c[_0x2473('0x3a')][_0x2473('0x44')]);_0x593b36[_0x2473('0x45')]=qs[_0x2473('0x3c')](_[_0x2473('0x46')](_0x598f3c['query'],_0xe96472[_0x2473('0x3c')]));if(_0x598f3c['query'][_0x2473('0x47')]){_0x593b36[_0x2473('0x45')]=_[_0x2473('0x48')](_0x593b36[_0x2473('0x45')],{'$or':_[_0x2473('0x32')](_0x593b36[_0x2473('0x3e')],function(_0x42c24e){var _0x587142={};_0x587142[_0x42c24e]={'$like':'%'+_0x598f3c[_0x2473('0x3a')]['filter']+'%'};return _0x587142;})});}_0x593b36=_['merge']({},_0x593b36,_0x598f3c['options']);return _0x24a4a3[_0x2473('0x8d')](_0x593b36);}})['then'](function(_0x5ec5d8){if(_0x5ec5d8){_0xfa8ee5=_0x5ec5d8[_0x2473('0x40')];if(!_0x598f3c[_0x2473('0x3a')][_0x2473('0x41')](_0x2473('0x5d'))){_0x593b36[_0x2473('0x23')]=qs[_0x2473('0x23')](_0x598f3c['query'][_0x2473('0x23')]);_0x593b36[_0x2473('0x42')]=qs[_0x2473('0x42')](_0x598f3c[_0x2473('0x3a')][_0x2473('0x42')]);}return _0x24a4a3[_0x2473('0x8d')](_0x593b36);}})[_0x2473('0x2a')](function(_0x238ca9){if(_0x238ca9){return _0x238ca9?{'count':_0xfa8ee5,'rows':_0x238ca9}:null;}})[_0x2473('0x2a')](respondWithResult(_0x220294,null))[_0x2473('0x4d')](handleError(_0x220294,null));};
\ No newline at end of file
index cb9bb4b..0fb0ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e74,0x175));var _0x43e7=function(_0x2dd168,_0xe14422){_0x2dd168=_0x2dd168-0x0;var _0x3eca6b=_0x3e74[_0x2dd168];return _0x3eca6b;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4e4519,_0x392ae){var _0x340044=function(_0x11721f){while(--_0x11721f){_0x4e4519['push'](_0x4e4519['shift']());}};_0x340044(++_0x392ae);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4f431d,_0xd51a3b){_0x4f431d=_0x4f431d-0x0;var _0x4f31e1=_0x5fc3[_0x4f431d];return _0x4f31e1;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index 4135bd2..7ff380e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['CmList','cm_lists','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define'];(function(_0x5866a0,_0x451a1f){var _0x2c552=function(_0x13f2bc){while(--_0x13f2bc){_0x5866a0['push'](_0x5866a0['shift']());}};_0x2c552(++_0x451a1f);}(_0xf109,0xce));var _0x9f10=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0xf109[_0x1573ea];return _0x51c0e2;};'use strict';var _=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f10('0x3'));var fs=require('fs');var path=require(_0x9f10('0x4'));var rimraf=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var attributes=require(_0x9f10('0x7'));module[_0x9f10('0x8')]=function(_0x408fe8,_0xd3137b){return _0x408fe8[_0x9f10('0x9')](_0x9f10('0xa'),attributes,{'tableName':_0x9f10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8a8=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','lodash','util'];(function(_0x2652f3,_0x251dc1){var _0x3c45dd=function(_0x51ed90){while(--_0x51ed90){_0x2652f3['push'](_0x2652f3['shift']());}};_0x3c45dd(++_0x251dc1);}(_0xa8a8,0xec));var _0x8a8a=function(_0x581ed1,_0xfca579){_0x581ed1=_0x581ed1-0x0;var _0xa6b21=_0xa8a8[_0x581ed1];return _0xa6b21;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var logger=require(_0x8a8a('0x2'))(_0x8a8a('0x3'));var moment=require('moment');var BPromise=require(_0x8a8a('0x4'));var rp=require(_0x8a8a('0x5'));var fs=require('fs');var path=require(_0x8a8a('0x6'));var rimraf=require(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var attributes=require(_0x8a8a('0x9'));module[_0x8a8a('0xa')]=function(_0x12db82,_0x2e8193){return _0x12db82[_0x8a8a('0xb')](_0x8a8a('0xc'),attributes,{'tableName':_0x8a8a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 81e0b76..956baed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb535=['request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','redis','localhost','socket.io-emitter','./cmList.socket','register','request','info','CmList,\x20%s,\x20%s'];(function(_0x51373b,_0x50152e){var _0x59d258=function(_0x3ceda3){while(--_0x3ceda3){_0x51373b['push'](_0x51373b['shift']());}};_0x59d258(++_0x50152e);}(_0xb535,0xcd));var _0x5b53=function(_0x13cab0,_0x14d825){_0x13cab0=_0x13cab0-0x0;var _0x38804f=_0xb535[_0x13cab0];return _0x38804f;};'use strict';var _=require(_0x5b53('0x0'));var util=require(_0x5b53('0x1'));var moment=require(_0x5b53('0x2'));var BPromise=require(_0x5b53('0x3'));var rs=require(_0x5b53('0x4'));var fs=require('fs');var Redis=require(_0x5b53('0x5'));var db=require(_0x5b53('0x6'))['db'];var utils=require(_0x5b53('0x7'));var logger=require(_0x5b53('0x8'))(_0x5b53('0x9'));var config=require('../../config/environment');var jayson=require(_0x5b53('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x5b53('0xb')]=_['defaults'](config['redis'],{'host':_0x5b53('0xc'),'port':0x18eb});var socket=require(_0x5b53('0xd'))(new Redis(config[_0x5b53('0xb')]));require(_0x5b53('0xe'))[_0x5b53('0xf')](socket);function respondWithRpcPromise(_0x48156b,_0x1741f4,_0x1984b8){return new BPromise(function(_0x5d6101,_0x2cef76){return client[_0x5b53('0x10')](_0x48156b,_0x1984b8)['then'](function(_0xd1a149){logger[_0x5b53('0x11')](_0x5b53('0x12'),_0x1741f4,_0x5b53('0x13'));logger[_0x5b53('0x14')](_0x5b53('0x15'),_0x1741f4,_0x5b53('0x13'),JSON[_0x5b53('0x16')](_0xd1a149));if(_0xd1a149[_0x5b53('0x17')]){if(_0xd1a149[_0x5b53('0x17')][_0x5b53('0x18')]===0x1f4){logger[_0x5b53('0x17')]('CmList,\x20%s,\x20%s',_0x1741f4,_0xd1a149['error'][_0x5b53('0x19')]);return _0x2cef76(_0xd1a149[_0x5b53('0x17')][_0x5b53('0x19')]);}logger[_0x5b53('0x17')]('CmList,\x20%s,\x20%s',_0x1741f4,_0xd1a149[_0x5b53('0x17')][_0x5b53('0x19')]);return _0x5d6101(_0xd1a149[_0x5b53('0x17')][_0x5b53('0x19')]);}else{logger[_0x5b53('0x11')](_0x5b53('0x12'),_0x1741f4,'request\x20sent');_0x5d6101(_0xd1a149[_0x5b53('0x1a')][_0x5b53('0x19')]);}})[_0x5b53('0x1b')](function(_0x382393){logger[_0x5b53('0x17')](_0x5b53('0x12'),_0x1741f4,_0x382393);_0x2cef76(_0x382393);});});}
\ No newline at end of file
+var _0x4b81=['error','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4b81,0x17e));var _0x14b8=function(_0x1d3d1a,_0x2a3dde){_0x1d3d1a=_0x1d3d1a-0x0;var _0x4bc3ad=_0x4b81[_0x1d3d1a];return _0x4bc3ad;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x14b8('0x0'));var BPromise=require(_0x14b8('0x1'));var rs=require(_0x14b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x14b8('0x3'))['db'];var utils=require(_0x14b8('0x4'));var logger=require(_0x14b8('0x5'))(_0x14b8('0x6'));var config=require(_0x14b8('0x7'));var jayson=require(_0x14b8('0x8'));var client=jayson[_0x14b8('0x9')]['http']({'port':0x232a});config[_0x14b8('0xa')]=_['defaults'](config['redis'],{'host':_0x14b8('0xb'),'port':0x18eb});var socket=require(_0x14b8('0xc'))(new Redis(config[_0x14b8('0xa')]));require(_0x14b8('0xd'))[_0x14b8('0xe')](socket);function respondWithRpcPromise(_0xfa79bc,_0xf8a422,_0x256b2f){return new BPromise(function(_0x262d90,_0x3ee7e0){return client[_0x14b8('0xf')](_0xfa79bc,_0x256b2f)[_0x14b8('0x10')](function(_0x41d25b){logger[_0x14b8('0x11')](_0x14b8('0x12'),_0xf8a422,_0x14b8('0x13'));logger[_0x14b8('0x14')](_0x14b8('0x15'),_0xf8a422,_0x14b8('0x13'),JSON[_0x14b8('0x16')](_0x41d25b));if(_0x41d25b[_0x14b8('0x17')]){if(_0x41d25b[_0x14b8('0x17')]['code']===0x1f4){logger[_0x14b8('0x17')](_0x14b8('0x12'),_0xf8a422,_0x41d25b[_0x14b8('0x17')][_0x14b8('0x18')]);return _0x3ee7e0(_0x41d25b[_0x14b8('0x17')][_0x14b8('0x18')]);}logger['error'](_0x14b8('0x12'),_0xf8a422,_0x41d25b['error']['message']);return _0x262d90(_0x41d25b[_0x14b8('0x17')][_0x14b8('0x18')]);}else{logger[_0x14b8('0x11')]('CmList,\x20%s,\x20%s',_0xf8a422,_0x14b8('0x13'));_0x262d90(_0x41d25b[_0x14b8('0x19')][_0x14b8('0x18')]);}})[_0x14b8('0x1a')](function(_0x839f96){logger[_0x14b8('0x17')](_0x14b8('0x12'),_0xf8a422,_0x839f96);_0x3ee7e0(_0x839f96);});});}
\ No newline at end of file
index ae94793..a48bd05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64ab=['remove','update','removeListener','register','length','cmList:','./cmList.events','save'];(function(_0x276015,_0x57eb3d){var _0x385345=function(_0x3c5bb4){while(--_0x3c5bb4){_0x276015['push'](_0x276015['shift']());}};_0x385345(++_0x57eb3d);}(_0x64ab,0x1a6));var _0xb64a=function(_0x3d3d9e,_0x3c4da1){_0x3d3d9e=_0x3d3d9e-0x0;var _0x4f487f=_0x64ab[_0x3d3d9e];return _0x4f487f;};'use strict';var CmListEvents=require(_0xb64a('0x0'));var events=[_0xb64a('0x1'),_0xb64a('0x2'),_0xb64a('0x3')];function createListener(_0x122489,_0x523794){return function(_0x2d5378){_0x523794['emit'](_0x122489,_0x2d5378);};}function removeListener(_0x3d7469,_0x5186b3){return function(){CmListEvents[_0xb64a('0x4')](_0x3d7469,_0x5186b3);};}exports[_0xb64a('0x5')]=function(_0x1c93e9){for(var _0x55c62a=0x0,_0x57fb93=events[_0xb64a('0x6')];_0x55c62a<_0x57fb93;_0x55c62a++){var _0x4a4120=events[_0x55c62a];var _0xc57eb5=createListener(_0xb64a('0x7')+_0x4a4120,_0x1c93e9);CmListEvents['on'](_0x4a4120,_0xc57eb5);}};
\ No newline at end of file
+var _0x604c=['save','emit','removeListener','register','cmList:','./cmList.events'];(function(_0xffc11e,_0x189335){var _0x210bc0=function(_0x5aaa4d){while(--_0x5aaa4d){_0xffc11e['push'](_0xffc11e['shift']());}};_0x210bc0(++_0x189335);}(_0x604c,0x65));var _0xc604=function(_0x2771b5,_0x1cadfa){_0x2771b5=_0x2771b5-0x0;var _0x16e156=_0x604c[_0x2771b5];return _0x16e156;};'use strict';var CmListEvents=require(_0xc604('0x0'));var events=[_0xc604('0x1'),'remove','update'];function createListener(_0xd19d86,_0x494bfb){return function(_0x5dd2fe){_0x494bfb[_0xc604('0x2')](_0xd19d86,_0x5dd2fe);};}function removeListener(_0x144d88,_0x52ac0c){return function(){CmListEvents[_0xc604('0x3')](_0x144d88,_0x52ac0c);};}exports[_0xc604('0x4')]=function(_0x13478b){for(var _0x529df2=0x0,_0x10b232=events['length'];_0x529df2<_0x10b232;_0x529df2++){var _0x4595ed=events[_0x529df2];var _0x225495=createListener(_0xc604('0x5')+_0x4595ed,_0x13478b);CmListEvents['on'](_0x4595ed,_0x225495);}};
\ No newline at end of file
index 6a8348e..cba334e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5178=['update','delete','destroy','removeDispositions','removeAgents','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','/:id/fields','getCustomFields','getAgents','post','create','addDisposition','addCustomField','/:id/users','put'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x5178,0x171));var _0x8517=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5178[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require('multer');var util=require(_0x8517('0x0'));var path=require(_0x8517('0x1'));var timeout=require(_0x8517('0x2'));var express=require(_0x8517('0x3'));var router=express[_0x8517('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8517('0x5'));var config=require(_0x8517('0x6'));var controller=require('./cmList.controller');router[_0x8517('0x7')]('/',auth['isAuthenticated'](),controller[_0x8517('0x8')]);router[_0x8517('0x7')](_0x8517('0x9'),auth[_0x8517('0xa')](),controller[_0x8517('0xb')]);router['get'](_0x8517('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x8517('0x7')](_0x8517('0xd'),auth['isAuthenticated'](),controller[_0x8517('0xe')]);router[_0x8517('0x7')](_0x8517('0xf'),auth[_0x8517('0xa')](),controller[_0x8517('0x10')]);router[_0x8517('0x7')](_0x8517('0x11'),auth[_0x8517('0xa')](),controller['getContactsCsv']);router[_0x8517('0x7')](_0x8517('0x12'),auth[_0x8517('0xa')](),controller[_0x8517('0x13')]);router[_0x8517('0x7')]('/:id/users',auth[_0x8517('0xa')](),controller[_0x8517('0x14')]);router[_0x8517('0x15')]('/',auth[_0x8517('0xa')](),controller[_0x8517('0x16')]);router[_0x8517('0x15')](_0x8517('0xd'),auth[_0x8517('0xa')](),controller[_0x8517('0x17')]);router[_0x8517('0x15')](_0x8517('0xf'),auth[_0x8517('0xa')](),controller['addContacts']);router[_0x8517('0x15')](_0x8517('0x12'),auth[_0x8517('0xa')](),controller[_0x8517('0x18')]);router[_0x8517('0x15')](_0x8517('0x19'),auth[_0x8517('0xa')](),controller['addAgents']);router[_0x8517('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x8517('0x1b')]);router[_0x8517('0x1c')](_0x8517('0xc'),auth[_0x8517('0xa')](),controller[_0x8517('0x1d')]);router[_0x8517('0x1c')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x8517('0x1e')]);router[_0x8517('0x1c')](_0x8517('0x19'),auth[_0x8517('0xa')](),controller[_0x8517('0x1f')]);module[_0x8517('0x20')]=router;
\ No newline at end of file
+var _0x7e1d=['post','create','addDisposition','addContacts','addAgents','put','/:id','update','delete','destroy','removeDispositions','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmList.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','/:id/fields','getCustomFields','/:id/users','getAgents'];(function(_0x3f958f,_0x5dd34d){var _0x219eef=function(_0xa79f22){while(--_0xa79f22){_0x3f958f['push'](_0x3f958f['shift']());}};_0x219eef(++_0x5dd34d);}(_0x7e1d,0x12c));var _0xd7e1=function(_0x328095,_0x59a990){_0x328095=_0x328095-0x0;var _0x3d6d6f=_0x7e1d[_0x328095];return _0x3d6d6f;};'use strict';var multer=require(_0xd7e1('0x0'));var util=require(_0xd7e1('0x1'));var path=require(_0xd7e1('0x2'));var timeout=require(_0xd7e1('0x3'));var express=require('express');var router=express[_0xd7e1('0x4')]();var fs_extra=require(_0xd7e1('0x5'));var auth=require(_0xd7e1('0x6'));var interaction=require(_0xd7e1('0x7'));var config=require('../../config/environment');var controller=require(_0xd7e1('0x8'));router[_0xd7e1('0x9')]('/',auth[_0xd7e1('0xa')](),controller[_0xd7e1('0xb')]);router[_0xd7e1('0x9')](_0xd7e1('0xc'),auth['isAuthenticated'](),controller[_0xd7e1('0xd')]);router[_0xd7e1('0x9')]('/:id',auth[_0xd7e1('0xa')](),controller[_0xd7e1('0xe')]);router[_0xd7e1('0x9')](_0xd7e1('0xf'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x10')]);router[_0xd7e1('0x9')](_0xd7e1('0x11'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x12')]);router[_0xd7e1('0x9')](_0xd7e1('0x13'),auth[_0xd7e1('0xa')](),controller['getContactsCsv']);router[_0xd7e1('0x9')](_0xd7e1('0x14'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x15')]);router[_0xd7e1('0x9')](_0xd7e1('0x16'),auth['isAuthenticated'](),controller[_0xd7e1('0x17')]);router[_0xd7e1('0x18')]('/',auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x19')]);router[_0xd7e1('0x18')](_0xd7e1('0xf'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x1a')]);router[_0xd7e1('0x18')](_0xd7e1('0x11'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x1b')]);router['post'](_0xd7e1('0x14'),auth[_0xd7e1('0xa')](),controller['addCustomField']);router[_0xd7e1('0x18')](_0xd7e1('0x16'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x1c')]);router[_0xd7e1('0x1d')](_0xd7e1('0x1e'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x1f')]);router[_0xd7e1('0x20')](_0xd7e1('0x1e'),auth['isAuthenticated'](),controller[_0xd7e1('0x21')]);router[_0xd7e1('0x20')](_0xd7e1('0xf'),auth[_0xd7e1('0xa')](),controller[_0xd7e1('0x22')]);router[_0xd7e1('0x20')](_0xd7e1('0x16'),auth[_0xd7e1('0xa')](),controller['removeAgents']);module[_0xd7e1('0x23')]=router;
\ No newline at end of file
index f9f124a..1b22f8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ebf=['getDataValue','STRING','sequelize','exports','VIRTUAL'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ebf,0x8e));var _0xf9eb=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9ebf[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0xf9eb('0x0'));module[_0xf9eb('0x1')]={'name':{'type':Sequelize[_0xf9eb('0x2')],'get':function(_0x40ef50){return this[_0xf9eb('0x3')]('field');}},'field':{'type':Sequelize[_0xf9eb('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xf9eb('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x236b=['STRING','sequelize','getDataValue','field'];(function(_0x551569,_0x5dba12){var _0x31a73b=function(_0x528b8f){while(--_0x528b8f){_0x551569['push'](_0x551569['shift']());}};_0x31a73b(++_0x5dba12);}(_0x236b,0x1f1));var _0xb236=function(_0x3f053d,_0x4cbf87){_0x3f053d=_0x3f053d-0x0;var _0x17ec28=_0x236b[_0x3f053d];return _0x17ec28;};'use strict';var Sequelize=require(_0xb236('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x3915f){return this[_0xb236('0x1')](_0xb236('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xb236('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xb236('0x3')],'allowNull':![]}};
\ No newline at end of file
index 114f791..874ca0a 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(_0x4c38c0,_0x1d1d3f){var _0x4fcd6e=function(_0x41ec9c){while(--_0x41ec9c){_0x4c38c0['push'](_0x4c38c0['shift']());}};_0x4fcd6e(++_0x1d1d3f);}(_0x7a54,0x106));var _0x47a5=function(_0x417c4f,_0x3a0927){_0x417c4f=_0x417c4f-0x0;var _0x1cd8b7=_0x7a54[_0x417c4f];return _0x1cd8b7;};'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(_0x27c4e8,_0x355be1){var _0x5c5888=function(_0x879633){while(--_0x879633){_0x27c4e8['push'](_0x27c4e8['shift']());}};_0x5c5888(++_0x355be1);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 84f8548..64db884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8004=['define','Condition','tools_conditions','lodash','../../config/logger','bluebird','request-promise','path','../../config/environment','./condition.attributes'];(function(_0xf85be1,_0x39f9b8){var _0x42f1bd=function(_0x43b512){while(--_0x43b512){_0xf85be1['push'](_0xf85be1['shift']());}};_0x42f1bd(++_0x39f9b8);}(_0x8004,0x14d));var _0x4800=function(_0x32c8f6,_0x21d5f){_0x32c8f6=_0x32c8f6-0x0;var _0x22ebd9=_0x8004[_0x32c8f6];return _0x22ebd9;};'use strict';var _=require(_0x4800('0x0'));var util=require('util');var logger=require(_0x4800('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4800('0x2'));var rp=require(_0x4800('0x3'));var fs=require('fs');var path=require(_0x4800('0x4'));var rimraf=require('rimraf');var config=require(_0x4800('0x5'));var attributes=require(_0x4800('0x6'));module['exports']=function(_0x58afd7,_0x3fa4ec){return _0x58afd7[_0x4800('0x7')](_0x4800('0x8'),attributes,{'tableName':_0x4800('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x54ad=['Condition','tools_conditions','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define'];(function(_0x107c77,_0x3672a7){var _0x23f9f9=function(_0x4aa5b4){while(--_0x4aa5b4){_0x107c77['push'](_0x107c77['shift']());}};_0x23f9f9(++_0x3672a7);}(_0x54ad,0x1ec));var _0xd54a=function(_0x4d8dc9,_0x4dc48d){_0x4d8dc9=_0x4d8dc9-0x0;var _0x4e3587=_0x54ad[_0x4d8dc9];return _0x4e3587;};'use strict';var _=require(_0xd54a('0x0'));var util=require(_0xd54a('0x1'));var logger=require(_0xd54a('0x2'))('api');var moment=require(_0xd54a('0x3'));var BPromise=require(_0xd54a('0x4'));var rp=require(_0xd54a('0x5'));var fs=require('fs');var path=require(_0xd54a('0x6'));var rimraf=require(_0xd54a('0x7'));var config=require(_0xd54a('0x8'));var attributes=require(_0xd54a('0x9'));module[_0xd54a('0xa')]=function(_0x3351d5,_0xe3adec){return _0x3351d5[_0xd54a('0xb')](_0xd54a('0xc'),attributes,{'tableName':_0xd54a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ad20a72..c451f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf33=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Condition,\x20%s,\x20%s','message','result','lodash','util','bluebird'];(function(_0x287e4d,_0x4a68e0){var _0x5ccf1c=function(_0x331ccf){while(--_0x331ccf){_0x287e4d['push'](_0x287e4d['shift']());}};_0x5ccf1c(++_0x4a68e0);}(_0xdf33,0x1e1));var _0x3df3=function(_0x31f730,_0x323c3d){_0x31f730=_0x31f730-0x0;var _0x9790f2=_0xdf33[_0x31f730];return _0x9790f2;};'use strict';var _=require(_0x3df3('0x0'));var util=require(_0x3df3('0x1'));var moment=require('moment');var BPromise=require(_0x3df3('0x2'));var rs=require(_0x3df3('0x3'));var fs=require('fs');var Redis=require(_0x3df3('0x4'));var db=require(_0x3df3('0x5'))['db'];var utils=require(_0x3df3('0x6'));var logger=require(_0x3df3('0x7'))('rpc');var config=require(_0x3df3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3df3('0x9')][_0x3df3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5450c9,_0x449a3a,_0x1983a4){return new BPromise(function(_0x512f11,_0x10debf){return client[_0x3df3('0xb')](_0x5450c9,_0x1983a4)[_0x3df3('0xc')](function(_0xd92894){logger[_0x3df3('0xd')]('Condition,\x20%s,\x20%s',_0x449a3a,'request\x20sent');logger[_0x3df3('0xe')](_0x3df3('0xf'),_0x449a3a,_0x3df3('0x10'),JSON['stringify'](_0xd92894));if(_0xd92894[_0x3df3('0x11')]){if(_0xd92894[_0x3df3('0x11')][_0x3df3('0x12')]===0x1f4){logger[_0x3df3('0x11')](_0x3df3('0x13'),_0x449a3a,_0xd92894[_0x3df3('0x11')][_0x3df3('0x14')]);return _0x10debf(_0xd92894[_0x3df3('0x11')][_0x3df3('0x14')]);}logger[_0x3df3('0x11')](_0x3df3('0x13'),_0x449a3a,_0xd92894[_0x3df3('0x11')]['message']);return _0x512f11(_0xd92894['error'][_0x3df3('0x14')]);}else{logger[_0x3df3('0xd')](_0x3df3('0x13'),_0x449a3a,_0x3df3('0x10'));_0x512f11(_0xd92894[_0x3df3('0x15')][_0x3df3('0x14')]);}})['catch'](function(_0x27981a){logger['error'](_0x3df3('0x13'),_0x449a3a,_0x27981a);_0x10debf(_0x27981a);});});}
\ No newline at end of file
+var _0x6c77=['request\x20sent','debug','stringify','error','code','Condition,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x6c77,0x12e));var _0x76c7=function(_0x26bb15,_0x39b070){_0x26bb15=_0x26bb15-0x0;var _0x7aa58a=_0x6c77[_0x26bb15];return _0x7aa58a;};'use strict';var _=require(_0x76c7('0x0'));var util=require(_0x76c7('0x1'));var moment=require('moment');var BPromise=require(_0x76c7('0x2'));var rs=require(_0x76c7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x76c7('0x4'))['db'];var utils=require(_0x76c7('0x5'));var logger=require(_0x76c7('0x6'))(_0x76c7('0x7'));var config=require(_0x76c7('0x8'));var jayson=require(_0x76c7('0x9'));var client=jayson['client'][_0x76c7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a8df1,_0x1424a6,_0x4eb223){return new BPromise(function(_0x3f9005,_0x1599bd){return client[_0x76c7('0xb')](_0x3a8df1,_0x4eb223)['then'](function(_0x3953e4){logger[_0x76c7('0xc')]('Condition,\x20%s,\x20%s',_0x1424a6,_0x76c7('0xd'));logger[_0x76c7('0xe')]('Condition,\x20%s,\x20%s,\x20%s',_0x1424a6,_0x76c7('0xd'),JSON[_0x76c7('0xf')](_0x3953e4));if(_0x3953e4[_0x76c7('0x10')]){if(_0x3953e4[_0x76c7('0x10')][_0x76c7('0x11')]===0x1f4){logger[_0x76c7('0x10')](_0x76c7('0x12'),_0x1424a6,_0x3953e4[_0x76c7('0x10')][_0x76c7('0x13')]);return _0x1599bd(_0x3953e4[_0x76c7('0x10')]['message']);}logger[_0x76c7('0x10')](_0x76c7('0x12'),_0x1424a6,_0x3953e4['error'][_0x76c7('0x13')]);return _0x3f9005(_0x3953e4[_0x76c7('0x10')][_0x76c7('0x13')]);}else{logger[_0x76c7('0xc')](_0x76c7('0x12'),_0x1424a6,_0x76c7('0xd'));_0x3f9005(_0x3953e4['result']['message']);}})[_0x76c7('0x14')](function(_0x38bc7d){logger[_0x76c7('0x10')](_0x76c7('0x12'),_0x1424a6,_0x38bc7d);_0x1599bd(_0x38bc7d);});});}
\ No newline at end of file
index b4a3583..692dbe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64ec=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports'];(function(_0x1dde8e,_0x2643fc){var _0x3c8731=function(_0x2f5d23){while(--_0x2f5d23){_0x1dde8e['push'](_0x1dde8e['shift']());}};_0x3c8731(++_0x2643fc);}(_0x64ec,0xee));var _0xc64e=function(_0x58af54,_0x4bd063){_0x58af54=_0x58af54-0x0;var _0x38d21d=_0x64ec[_0x58af54];return _0x38d21d;};'use strict';var multer=require(_0xc64e('0x0'));var util=require(_0xc64e('0x1'));var path=require(_0xc64e('0x2'));var timeout=require(_0xc64e('0x3'));var express=require(_0xc64e('0x4'));var router=express[_0xc64e('0x5')]();var fs_extra=require(_0xc64e('0x6'));var auth=require(_0xc64e('0x7'));var interaction=require(_0xc64e('0x8'));var config=require(_0xc64e('0x9'));var controller=require('./condition.controller');router[_0xc64e('0xa')](_0xc64e('0xb'),auth[_0xc64e('0xc')](),controller[_0xc64e('0xd')]);router[_0xc64e('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xc64e('0xf')]);module[_0xc64e('0x10')]=router;
\ No newline at end of file
+var _0x0e80=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./condition.controller','/:id','isAuthenticated','destroy','exports','multer'];(function(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0x0e80,0xc3));var _0x00e8=function(_0x97aee9,_0x2915a4){_0x97aee9=_0x97aee9-0x0;var _0x214337=_0x0e80[_0x97aee9];return _0x214337;};'use strict';var multer=require(_0x00e8('0x0'));var util=require(_0x00e8('0x1'));var path=require(_0x00e8('0x2'));var timeout=require(_0x00e8('0x3'));var express=require(_0x00e8('0x4'));var router=express[_0x00e8('0x5')]();var fs_extra=require(_0x00e8('0x6'));var auth=require(_0x00e8('0x7'));var interaction=require(_0x00e8('0x8'));var config=require('../../config/environment');var controller=require(_0x00e8('0x9'));router['put'](_0x00e8('0xa'),auth[_0x00e8('0xb')](),controller['update']);router['delete']('/:id',auth[_0x00e8('0xb')](),controller[_0x00e8('0xc')]);module[_0x00e8('0xd')]=router;
\ No newline at end of file
index a1e8910..74b54bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['name','exports','STRING'];(function(_0x8a3c12,_0x3b8ea9){var _0xd2c46a=function(_0x29ae8d){while(--_0x29ae8d){_0x8a3c12['push'](_0x8a3c12['shift']());}};_0xd2c46a(++_0x3b8ea9);}(_0x2032,0xd9));var _0x2203=function(_0x3b8d68,_0x373aed){_0x3b8d68=_0x3b8d68-0x0;var _0x3ba509=_0x2032[_0x3b8d68];return _0x3ba509;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x3a4d7f,_0x315481){var _0x5aa998=function(_0xaf013f){while(--_0xaf013f){_0x3a4d7f['push'](_0x3a4d7f['shift']());}};_0x5aa998(++_0x315481);}(_0x2032,0xd9));var _0x2203=function(_0xca2341,_0x1611ca){_0xca2341=_0xca2341-0x0;var _0x2197c7=_0x2032[_0xca2341];return _0x2197c7;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 361a68d..53d6faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7761=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./dashboard.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','CustomDashboards','UserProfileResource','sendStatus','error','stack','name','send','Dashboard','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','sort','where','pick','merge','map','filter','options','includeAll','rows','show','params','keys','length','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','destroy','iframe','attrUrl','attrs','https://','custom','attrPath','value','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardItem','getItems','findOne','order','hasOwnProperty','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','lodash','jsforce','desk.js','to-csv'];(function(_0x2befb6,_0x4bf376){var _0x55abcd=function(_0x3adf21){while(--_0x3adf21){_0x2befb6['push'](_0x2befb6['shift']());}};_0x55abcd(++_0x4bf376);}(_0x7761,0xe0));var _0x1776=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7761[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x1776('0x0'));var rimraf=require(_0x1776('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1776('0x2'));var rp=require('request-promise');var moment=require(_0x1776('0x3'));var BPromise=require(_0x1776('0x4'));var Mustache=require(_0x1776('0x5'));var util=require(_0x1776('0x6'));var path=require('path');var sox=require(_0x1776('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1776('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1776('0x9'));var deskjs=require(_0x1776('0xa'));var toCsv=require(_0x1776('0xb'));var querystring=require(_0x1776('0xc'));var Papa=require(_0x1776('0xd'));var Redis=require(_0x1776('0xe'));var authService=require(_0x1776('0xf'));var qs=require(_0x1776('0x10'));var as=require(_0x1776('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1776('0x12'))(_0x1776('0x13'));var utils=require('../../config/utils');var config=require(_0x1776('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x1776('0x15')]=_['defaults'](config['redis'],{'host':_0x1776('0x16'),'port':0x18eb});var socket=require(_0x1776('0x17'))(new Redis(config[_0x1776('0x15')]));require(_0x1776('0x18'))[_0x1776('0x19')](socket);function respondWithStatusCode(_0x3549a0,_0x5550ce){_0x5550ce=_0x5550ce||0xcc;return function(_0x1a0b6a){if(_0x1a0b6a){return _0x3549a0['sendStatus'](_0x5550ce);}return _0x3549a0[_0x1776('0x1a')](_0x5550ce)[_0x1776('0x1b')]();};}function respondWithResult(_0xc94e5f,_0x407450){_0x407450=_0x407450||0xc8;return function(_0x4a1eef){if(_0x4a1eef){return _0xc94e5f[_0x1776('0x1a')](_0x407450)[_0x1776('0x1c')](_0x4a1eef);}};}function respondWithFilteredResult(_0x1b6add,_0x5b9fb6){return function(_0x4db9be){if(_0x4db9be){var _0x42205a=typeof _0x5b9fb6[_0x1776('0x1d')]===_0x1776('0x1e')&&typeof _0x5b9fb6[_0x1776('0x1f')]===_0x1776('0x1e');var _0x2872da=_0x4db9be[_0x1776('0x20')];var _0x246339=_0x42205a?0x0:_0x5b9fb6[_0x1776('0x1d')];var _0x46bcfc=_0x42205a?_0x4db9be['count']:_0x5b9fb6[_0x1776('0x1d')]+_0x5b9fb6[_0x1776('0x1f')];var _0x13201a;if(_0x46bcfc>=_0x2872da){_0x46bcfc=_0x2872da;_0x13201a=0xc8;}else{_0x13201a=0xce;}_0x1b6add['status'](_0x13201a);return _0x1b6add[_0x1776('0x21')](_0x1776('0x22'),_0x246339+'-'+_0x46bcfc+'/'+_0x2872da)[_0x1776('0x1c')](_0x4db9be);}return null;};}function patchUpdates(_0x5860c1){return function(_0x23d3e6){try{jsonpatch[_0x1776('0x23')](_0x23d3e6,_0x5860c1,!![]);}catch(_0x4ad5d5){return BPromise['reject'](_0x4ad5d5);}return _0x23d3e6[_0x1776('0x24')]();};}function saveUpdates(_0x35cb19,_0xd0c1de){return function(_0xad89db){if(_0xad89db){return _0xad89db[_0x1776('0x25')](_0x35cb19)['then'](function(_0x50a89a){return _0x50a89a;});}return null;};}function removeEntity(_0x416722,_0x15dd48){return function(_0x2566b3){if(_0x2566b3){return _0x2566b3['destroy']()[_0x1776('0x26')](function(){var _0x2fccf6=_0x2566b3[_0x1776('0x27')]({'plain':!![]});var _0x5745a8=_0x1776('0x28');return db[_0x1776('0x29')]['destroy']({'where':{'type':_0x5745a8,'resourceId':_0x2fccf6['id']}})['then'](function(){return _0x2566b3;});})[_0x1776('0x26')](function(){_0x416722[_0x1776('0x1a')](0xcc)[_0x1776('0x1b')]();});}};}function handleEntityNotFound(_0x362400,_0x2b96f0){return function(_0x226d64){if(!_0x226d64){_0x362400[_0x1776('0x2a')](0x194);}return _0x226d64;};}function handleError(_0x448a10,_0x215b79){_0x215b79=_0x215b79||0x1f4;return function(_0x46575c){logger[_0x1776('0x2b')](_0x46575c[_0x1776('0x2c')]);if(_0x46575c[_0x1776('0x2d')]){delete _0x46575c['name'];}_0x448a10[_0x1776('0x1a')](_0x215b79)[_0x1776('0x2e')](_0x46575c);};}exports['index']=function(_0x52f577,_0x1cc79f){var _0x323391={},_0x132c98={},_0x35acb8={'count':0x0,'rows':[]};var _0x1918cb=_['map'](db[_0x1776('0x2f')][_0x1776('0x30')],function(_0x2a896a){return{'name':_0x2a896a['fieldName'],'type':_0x2a896a[_0x1776('0x31')][_0x1776('0x32')]};});_0x132c98['model']=_['map'](_0x1918cb,_0x1776('0x2d'));_0x132c98[_0x1776('0x33')]=_['keys'](_0x52f577['query']);_0x132c98[_0x1776('0x34')]=_[_0x1776('0x35')](_0x132c98[_0x1776('0x36')],_0x132c98[_0x1776('0x33')]);_0x323391[_0x1776('0x37')]=_['intersection'](_0x132c98[_0x1776('0x36')],qs[_0x1776('0x38')](_0x52f577['query']['fields']));_0x323391['attributes']=_0x323391['attributes']['length']?_0x323391[_0x1776('0x37')]:_0x132c98[_0x1776('0x36')];if(!_0x52f577['query']['hasOwnProperty']('nolimit')){_0x323391['limit']=qs['limit'](_0x52f577[_0x1776('0x33')][_0x1776('0x1f')]);_0x323391[_0x1776('0x1d')]=qs[_0x1776('0x1d')](_0x52f577[_0x1776('0x33')]['offset']);}_0x323391['order']=qs[_0x1776('0x39')](_0x52f577['query'][_0x1776('0x39')]);_0x323391[_0x1776('0x3a')]=qs[_0x1776('0x34')](_[_0x1776('0x3b')](_0x52f577[_0x1776('0x33')],_0x132c98[_0x1776('0x34')]),_0x1918cb);if(_0x52f577[_0x1776('0x33')]['filter']){_0x323391[_0x1776('0x3a')]=_[_0x1776('0x3c')](_0x323391[_0x1776('0x3a')],{'$or':_[_0x1776('0x3d')](_0x1918cb,function(_0x1fc6ce){if(_0x1fc6ce[_0x1776('0x31')]!=='VIRTUAL'){var _0x4501d9={};_0x4501d9[_0x1fc6ce['name']]={'$like':'%'+_0x52f577['query'][_0x1776('0x3e')]+'%'};return _0x4501d9;}})});}_0x323391=_[_0x1776('0x3c')]({},_0x323391,_0x52f577[_0x1776('0x3f')]);var _0x4f0f08={'where':_0x323391[_0x1776('0x3a')]};return db[_0x1776('0x2f')][_0x1776('0x20')](_0x4f0f08)[_0x1776('0x26')](function(_0x238142){_0x35acb8[_0x1776('0x20')]=_0x238142;if(_0x52f577[_0x1776('0x33')][_0x1776('0x40')]){_0x323391['include']=[{'all':!![]}];}return db[_0x1776('0x2f')]['findAll'](_0x323391);})['then'](function(_0x25dca0){_0x35acb8[_0x1776('0x41')]=_0x25dca0;return _0x35acb8;})[_0x1776('0x26')](respondWithFilteredResult(_0x1cc79f,_0x323391))['catch'](handleError(_0x1cc79f,null));};exports[_0x1776('0x42')]=function(_0x204378,_0x2f3a73){var _0x203868={'raw':![],'where':{'id':_0x204378[_0x1776('0x43')]['id']}},_0x35be2c={};_0x35be2c[_0x1776('0x36')]=_[_0x1776('0x44')](db[_0x1776('0x2f')][_0x1776('0x30')]);_0x35be2c[_0x1776('0x33')]=_[_0x1776('0x44')](_0x204378[_0x1776('0x33')]);_0x35be2c[_0x1776('0x34')]=_[_0x1776('0x35')](_0x35be2c[_0x1776('0x36')],_0x35be2c[_0x1776('0x33')]);_0x203868['attributes']=_[_0x1776('0x35')](_0x35be2c[_0x1776('0x36')],qs[_0x1776('0x38')](_0x204378[_0x1776('0x33')][_0x1776('0x38')]));_0x203868[_0x1776('0x37')]=_0x203868[_0x1776('0x37')][_0x1776('0x45')]?_0x203868[_0x1776('0x37')]:_0x35be2c[_0x1776('0x36')];if(_0x204378[_0x1776('0x33')][_0x1776('0x40')]){_0x203868[_0x1776('0x46')]=[{'all':!![]}];}_0x203868=_[_0x1776('0x3c')]({},_0x203868,_0x204378[_0x1776('0x3f')]);return db[_0x1776('0x2f')][_0x1776('0x47')](_0x203868)[_0x1776('0x26')](handleEntityNotFound(_0x2f3a73,null))[_0x1776('0x26')](respondWithResult(_0x2f3a73,null))[_0x1776('0x48')](handleError(_0x2f3a73,null));};exports[_0x1776('0x49')]=function(_0x1b21cd,_0x5efae0){return db[_0x1776('0x2f')][_0x1776('0x49')](_0x1b21cd[_0x1776('0x4a')],{})[_0x1776('0x26')](function(_0xda4710){var _0x455c74=_0x1b21cd[_0x1776('0x4b')][_0x1776('0x27')]({'plain':!![]});if(!_0x455c74)throw new Error(_0x1776('0x4c'));if(_0x455c74[_0x1776('0x4d')]==='user'){var _0x3fc195=_0xda4710['get']({'plain':!![]});var _0x5cd762='CustomDashboards';return db[_0x1776('0x4e')][_0x1776('0x47')]({'where':{'name':_0x5cd762,'userProfileId':_0x455c74[_0x1776('0x4f')]},'raw':!![]})[_0x1776('0x26')](function(_0x214625){if(_0x214625&&_0x214625[_0x1776('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x3fc195[_0x1776('0x2d')],'resourceId':_0x3fc195['id'],'type':_0x214625['name'],'sectionId':_0x214625['id']},{})[_0x1776('0x26')](function(){return _0xda4710;});}else{return _0xda4710;}})[_0x1776('0x48')](function(_0x500372){logger[_0x1776('0x2b')](_0x1776('0x51'),_0x500372);throw _0x500372;});}return _0xda4710;})['then'](respondWithResult(_0x5efae0,0xc9))['catch'](handleError(_0x5efae0,null));};exports[_0x1776('0x52')]=function(_0x371928,_0x1a7e29){var _0x43e03e={'where':{'id':_0x371928[_0x1776('0x43')]['id']}},_0x50e6d1={};_0x50e6d1[_0x1776('0x36')]=_[_0x1776('0x44')](db[_0x1776('0x2f')]['rawAttributes']);_0x43e03e[_0x1776('0x37')]=_[_0x1776('0x35')](_0x50e6d1[_0x1776('0x36')],qs[_0x1776('0x38')](_0x371928[_0x1776('0x33')][_0x1776('0x38')]));_0x43e03e[_0x1776('0x37')]=_0x43e03e[_0x1776('0x37')][_0x1776('0x45')]?_0x43e03e[_0x1776('0x37')]:_0x50e6d1[_0x1776('0x36')];if(_0x371928['query'][_0x1776('0x40')]){_0x43e03e[_0x1776('0x46')]=[{'all':!![]}];}_0x43e03e=_[_0x1776('0x3c')]({},_0x43e03e,_0x371928[_0x1776('0x3f')]);return db[_0x1776('0x2f')][_0x1776('0x47')](_0x43e03e)['then'](handleEntityNotFound(_0x1a7e29,null))[_0x1776('0x26')](function(_0x29fd3a){if(_0x29fd3a){var _0x142ea2=_0x29fd3a[_0x1776('0x27')]({'plain':!![]});_0x142ea2=qs[_0x1776('0x53')](_0x142ea2,['id',_0x1776('0x54'),_0x1776('0x55')]);_0x371928['body']=_[_0x1776('0x53')](_0x371928[_0x1776('0x4a')],['id',_0x1776('0x54'),_0x1776('0x55')]);return db[_0x1776('0x2f')]['create'](_['merge'](_0x142ea2,_0x371928[_0x1776('0x4a')]),{'include':_0x371928[_0x1776('0x33')][_0x1776('0x40')]?[{'all':!![]}]:undefined})['then'](function(_0x484947){var _0x5bcadc=_0x371928[_0x1776('0x4b')][_0x1776('0x27')]({'plain':!![]});if(!_0x5bcadc)throw new Error(_0x1776('0x4c'));if(_0x5bcadc[_0x1776('0x4d')]===_0x1776('0x4b')){var _0x33597e=_0x484947['get']({'plain':!![]});var _0x8c8804=_0x1776('0x28');return db[_0x1776('0x4e')][_0x1776('0x47')]({'where':{'name':_0x8c8804,'userProfileId':_0x5bcadc['userProfileId']},'raw':!![]})['then'](function(_0x4e98a9){if(_0x4e98a9&&_0x4e98a9[_0x1776('0x50')]===0x0){return db[_0x1776('0x29')]['create']({'name':_0x33597e[_0x1776('0x2d')],'resourceId':_0x33597e['id'],'type':_0x4e98a9[_0x1776('0x2d')],'sectionId':_0x4e98a9['id']},{})[_0x1776('0x26')](function(){return _0x484947;});}else{return _0x484947;}})['catch'](function(_0x34eeab){logger[_0x1776('0x2b')](_0x1776('0x51'),_0x34eeab);throw _0x34eeab;});}return _0x484947;});}})['then'](respondWithResult(_0x1a7e29,0xc9))[_0x1776('0x48')](handleError(_0x1a7e29,null));};exports[_0x1776('0x25')]=function(_0x255186,_0x3879fd){if(_0x255186[_0x1776('0x4a')]['id']){delete _0x255186[_0x1776('0x4a')]['id'];}return db[_0x1776('0x2f')]['find']({'where':{'id':_0x255186[_0x1776('0x43')]['id']}})[_0x1776('0x26')](handleEntityNotFound(_0x3879fd,null))[_0x1776('0x26')](saveUpdates(_0x255186[_0x1776('0x4a')],null))['then'](respondWithResult(_0x3879fd,null))[_0x1776('0x48')](handleError(_0x3879fd,null));};exports[_0x1776('0x56')]=function(_0x562106,_0x3ed4b1){return db[_0x1776('0x2f')][_0x1776('0x47')]({'where':{'id':_0x562106['params']['id']}})[_0x1776('0x26')](handleEntityNotFound(_0x3ed4b1,null))[_0x1776('0x26')](removeEntity(_0x3ed4b1,null))['catch'](handleError(_0x3ed4b1,null));};function widgetAttributes(_0x2174bf){try{switch(_0x2174bf['type']){case _0x1776('0x57'):return[{'name':_0x1776('0x58'),'value':_0x2174bf[_0x1776('0x58')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x0]?_0x2174bf[_0x1776('0x59')][0x0]['value']:undefined)||_0x1776('0x5a')}];case _0x1776('0x5b'):return[{'name':_0x1776('0x5c'),'value':_0x2174bf[_0x1776('0x5c')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf['attrs'][0x0]?_0x2174bf[_0x1776('0x59')][0x0][_0x1776('0x5d')]:undefined)||''}];case'clock':return[{'name':_0x1776('0x5e'),'value':_0x2174bf['attrHourFormat']||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x0]?_0x2174bf[_0x1776('0x59')][0x0][_0x1776('0x5d')]:undefined)||_0x1776('0x5f')},{'name':'attrTimezone','value':_0x2174bf[_0x1776('0x60')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf['attrs'][0x1]?_0x2174bf[_0x1776('0x59')][0x1][_0x1776('0x5d')]:undefined)||'0.00'},{'name':_0x1776('0x61'),'value':_0x2174bf[_0x1776('0x61')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x2]?_0x2174bf['attrs'][0x2][_0x1776('0x5d')]:undefined)||0xc}];case _0x1776('0x62'):return[{'name':_0x1776('0x63'),'value':_0x2174bf[_0x1776('0x63')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x0]?_0x2174bf[_0x1776('0x59')][0x0][_0x1776('0x5d')]:undefined)||_0x1776('0x64')},{'name':_0x1776('0x65'),'value':_0x2174bf['attrVoiceQueues']||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf['attrs'][0x1]?_0x2174bf[_0x1776('0x59')][0x1][_0x1776('0x5d')]:undefined)||[]},{'name':_0x1776('0x61'),'value':_0x2174bf[_0x1776('0x61')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x2]?_0x2174bf[_0x1776('0x59')][0x2][_0x1776('0x5d')]:undefined)||0x14}];case _0x1776('0x66'):case _0x1776('0x67'):return[{'name':_0x1776('0x68'),'value':_0x2174bf[_0x1776('0x68')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x0]?_0x2174bf[_0x1776('0x59')][0x0]['value']:undefined)||_0x1776('0x64')},{'name':_0x1776('0x69'),'value':_0x2174bf['attrSerie2']||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf['attrs'][0x1]?_0x2174bf[_0x1776('0x59')][0x1][_0x1776('0x5d')]:undefined)||null},{'name':_0x1776('0x6a'),'value':_0x2174bf['attrSerie3']||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x2]?_0x2174bf['attrs'][0x2][_0x1776('0x5d')]:undefined)||null},{'name':_0x1776('0x65'),'value':_0x2174bf[_0x1776('0x65')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x3]?_0x2174bf['attrs'][0x3][_0x1776('0x5d')]:undefined)||[]}];case'web-report':return[{'name':_0x1776('0x6b'),'type':_0x2174bf[_0x1776('0x6c')]||(_0x2174bf['attrs']&&_0x2174bf[_0x1776('0x59')][0x0]?_0x2174bf[_0x1776('0x59')][0x0][_0x1776('0x31')]:undefined)||null,'value':_0x2174bf[_0x1776('0x6b')]||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf[_0x1776('0x59')][0x0]?_0x2174bf[_0x1776('0x59')][0x0]['value']:undefined)||null},{'name':_0x1776('0x6d'),'value':_0x2174bf['attrRefresh']||(_0x2174bf[_0x1776('0x59')]&&_0x2174bf['attrs'][0x1]?_0x2174bf['attrs'][0x1][_0x1776('0x5d')]:undefined)||0x0}];default:return[];}}catch(_0x4d2da8){logger[_0x1776('0x2b')](_0x1776('0x6e'),JSON[_0x1776('0x6f')](_0x4d2da8));return[];}}exports[_0x1776('0x70')]=function(_0x287aa9,_0x105347,_0x3ea381){if(_0x287aa9[_0x1776('0x4a')]['id']){delete _0x287aa9['body']['id'];}return db[_0x1776('0x2f')]['find']({'where':{'id':_0x287aa9[_0x1776('0x43')]['id']}})['then'](handleEntityNotFound(_0x105347,null))['then'](function(_0x303000){if(_0x303000){_0x287aa9['body']['DashboardId']=_0x303000['id'];_0x287aa9[_0x1776('0x4a')]['attrs']=widgetAttributes(_0x287aa9['body']);return db[_0x1776('0x71')][_0x1776('0x49')](_0x287aa9['body']);}})[_0x1776('0x26')](respondWithResult(_0x105347,null))[_0x1776('0x48')](handleError(_0x105347,null));};exports[_0x1776('0x72')]=function(_0x5e7923,_0x5d5701,_0x434c75){var _0xe8c18c={};var _0x1d111d={};var _0x2ecfd4;var _0x2172ad;return db[_0x1776('0x2f')][_0x1776('0x73')]({'where':{'id':_0x5e7923[_0x1776('0x43')]['id']}})[_0x1776('0x26')](handleEntityNotFound(_0x5d5701,null))[_0x1776('0x26')](function(_0xbc415){if(_0xbc415){_0x2ecfd4=_0xbc415;_0x1d111d[_0x1776('0x36')]=_[_0x1776('0x44')](db[_0x1776('0x71')]['rawAttributes']);_0x1d111d[_0x1776('0x33')]=_[_0x1776('0x44')](_0x5e7923[_0x1776('0x33')]);_0x1d111d[_0x1776('0x34')]=_[_0x1776('0x35')](_0x1d111d[_0x1776('0x36')],_0x1d111d[_0x1776('0x33')]);_0xe8c18c['attributes']=_['intersection'](_0x1d111d['model'],qs[_0x1776('0x38')](_0x5e7923[_0x1776('0x33')][_0x1776('0x38')]));_0xe8c18c[_0x1776('0x37')]=_0xe8c18c[_0x1776('0x37')][_0x1776('0x45')]?_0xe8c18c[_0x1776('0x37')]:_0x1d111d['model'];_0xe8c18c[_0x1776('0x74')]=qs[_0x1776('0x39')](_0x5e7923['query']['sort']);_0xe8c18c[_0x1776('0x3a')]=qs[_0x1776('0x34')](_[_0x1776('0x3b')](_0x5e7923[_0x1776('0x33')],_0x1d111d[_0x1776('0x34')]));if(_0x5e7923[_0x1776('0x33')]['filter']){_0xe8c18c['where']=_['merge'](_0xe8c18c['where'],{'$or':_['map'](_0xe8c18c[_0x1776('0x37')],function(_0x294680){var _0x2023b0={};_0x2023b0[_0x294680]={'$like':'%'+_0x5e7923[_0x1776('0x33')]['filter']+'%'};return _0x2023b0;})});}_0xe8c18c=_['merge']({},_0xe8c18c,_0x5e7923[_0x1776('0x3f')]);return _0x2ecfd4[_0x1776('0x72')](_0xe8c18c);}})[_0x1776('0x26')](function(_0x3c03c8){if(_0x3c03c8){_0x2172ad=_0x3c03c8['length'];if(!_0x5e7923[_0x1776('0x33')][_0x1776('0x75')]('nolimit')){_0xe8c18c['limit']=qs[_0x1776('0x1f')](_0x5e7923[_0x1776('0x33')][_0x1776('0x1f')]);_0xe8c18c[_0x1776('0x1d')]=qs[_0x1776('0x1d')](_0x5e7923[_0x1776('0x33')]['offset']);}return _0x2ecfd4['getItems'](_0xe8c18c);}})[_0x1776('0x26')](function(_0x325895){if(_0x325895){return _0x325895?{'count':_0x2172ad,'rows':_0x325895}:null;}})[_0x1776('0x26')](respondWithResult(_0x5d5701,null))[_0x1776('0x48')](handleError(_0x5d5701,null));};
\ No newline at end of file
+var _0x6c8b=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','CustomDashboards','error','stack','name','send','index','Dashboard','fieldName','type','query','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','clone','find','createdAt','updatedAt','omit','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','reportType','attrRefresh','stringify','addItem','DashboardId','DashboardItem','getItems','map','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x2d915e,_0x5cc44b){var _0x5c1c93=function(_0x164e12){while(--_0x164e12){_0x2d915e['push'](_0x2d915e['shift']());}};_0x5c1c93(++_0x5cc44b);}(_0x6c8b,0x1d6));var _0xb6c8=function(_0x8c96a3,_0x45c08d){_0x8c96a3=_0x8c96a3-0x0;var _0x3528b1=_0x6c8b[_0x8c96a3];return _0x3528b1;};'use strict';var emlformat=require(_0xb6c8('0x0'));var rimraf=require(_0xb6c8('0x1'));var zipdir=require(_0xb6c8('0x2'));var jsonpatch=require(_0xb6c8('0x3'));var rp=require(_0xb6c8('0x4'));var moment=require(_0xb6c8('0x5'));var BPromise=require(_0xb6c8('0x6'));var Mustache=require(_0xb6c8('0x7'));var util=require(_0xb6c8('0x8'));var path=require(_0xb6c8('0x9'));var sox=require(_0xb6c8('0xa'));var csv=require('to-csv');var ejs=require(_0xb6c8('0xb'));var fs=require('fs');var fs_extra=require(_0xb6c8('0xc'));var _=require(_0xb6c8('0xd'));var squel=require('squel');var crypto=require(_0xb6c8('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb6c8('0xf'));var toCsv=require(_0xb6c8('0x10'));var querystring=require(_0xb6c8('0x11'));var Papa=require(_0xb6c8('0x12'));var Redis=require(_0xb6c8('0x13'));var authService=require(_0xb6c8('0x14'));var qs=require(_0xb6c8('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb6c8('0x16'));var logger=require('../../config/logger')(_0xb6c8('0x17'));var utils=require(_0xb6c8('0x18'));var config=require(_0xb6c8('0x19'));var licenseUtil=require(_0xb6c8('0x1a'));var db=require('../../mysqldb')['db'];config[_0xb6c8('0x1b')]=_[_0xb6c8('0x1c')](config[_0xb6c8('0x1b')],{'host':_0xb6c8('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb6c8('0x1e'))[_0xb6c8('0x1f')](socket);function respondWithStatusCode(_0x10371e,_0x53e85b){_0x53e85b=_0x53e85b||0xcc;return function(_0x4dd89a){if(_0x4dd89a){return _0x10371e[_0xb6c8('0x20')](_0x53e85b);}return _0x10371e[_0xb6c8('0x21')](_0x53e85b)[_0xb6c8('0x22')]();};}function respondWithResult(_0xb1b542,_0xfdd61b){_0xfdd61b=_0xfdd61b||0xc8;return function(_0x22bb2a){if(_0x22bb2a){return _0xb1b542[_0xb6c8('0x21')](_0xfdd61b)[_0xb6c8('0x23')](_0x22bb2a);}};}function respondWithFilteredResult(_0x2d9afa,_0xa6e974){return function(_0x112ac7){if(_0x112ac7){var _0x1823b2=typeof _0xa6e974[_0xb6c8('0x24')]===_0xb6c8('0x25')&&typeof _0xa6e974[_0xb6c8('0x26')]==='undefined';var _0x5076fd=_0x112ac7[_0xb6c8('0x27')];var _0x307707=_0x1823b2?0x0:_0xa6e974[_0xb6c8('0x24')];var _0x3c5df4=_0x1823b2?_0x112ac7[_0xb6c8('0x27')]:_0xa6e974[_0xb6c8('0x24')]+_0xa6e974[_0xb6c8('0x26')];var _0x4d9777;if(_0x3c5df4>=_0x5076fd){_0x3c5df4=_0x5076fd;_0x4d9777=0xc8;}else{_0x4d9777=0xce;}_0x2d9afa[_0xb6c8('0x21')](_0x4d9777);return _0x2d9afa[_0xb6c8('0x28')](_0xb6c8('0x29'),_0x307707+'-'+_0x3c5df4+'/'+_0x5076fd)[_0xb6c8('0x23')](_0x112ac7);}return null;};}function patchUpdates(_0x6642f8){return function(_0x8abac6){try{jsonpatch[_0xb6c8('0x2a')](_0x8abac6,_0x6642f8,!![]);}catch(_0x28208e){return BPromise[_0xb6c8('0x2b')](_0x28208e);}return _0x8abac6[_0xb6c8('0x2c')]();};}function saveUpdates(_0x1e3d85,_0x57f57e){return function(_0x2a1f4a){if(_0x2a1f4a){return _0x2a1f4a['update'](_0x1e3d85)[_0xb6c8('0x2d')](function(_0x25fc1d){return _0x25fc1d;});}return null;};}function removeEntity(_0x4ee3be,_0x5751df){return function(_0x426e8f){if(_0x426e8f){return _0x426e8f[_0xb6c8('0x2e')]()[_0xb6c8('0x2d')](function(){var _0x3e5a6b=_0x426e8f[_0xb6c8('0x2f')]({'plain':!![]});var _0x42c028=_0xb6c8('0x30');return db['UserProfileResource']['destroy']({'where':{'type':_0x42c028,'resourceId':_0x3e5a6b['id']}})[_0xb6c8('0x2d')](function(){return _0x426e8f;});})[_0xb6c8('0x2d')](function(){_0x4ee3be['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x18dc9a,_0x558071){return function(_0x4f372f){if(!_0x4f372f){_0x18dc9a['sendStatus'](0x194);}return _0x4f372f;};}function handleError(_0xf06cb,_0x42b3d1){_0x42b3d1=_0x42b3d1||0x1f4;return function(_0x146c45){logger[_0xb6c8('0x31')](_0x146c45[_0xb6c8('0x32')]);if(_0x146c45[_0xb6c8('0x33')]){delete _0x146c45[_0xb6c8('0x33')];}_0xf06cb['status'](_0x42b3d1)[_0xb6c8('0x34')](_0x146c45);};}exports[_0xb6c8('0x35')]=function(_0x424c86,_0x459633){var _0x1e060f={},_0x3f982c={},_0x20f8b7={'count':0x0,'rows':[]};var _0x402867=_['map'](db[_0xb6c8('0x36')]['rawAttributes'],function(_0xfb1f15){return{'name':_0xfb1f15[_0xb6c8('0x37')],'type':_0xfb1f15[_0xb6c8('0x38')]['key']};});_0x3f982c['model']=_['map'](_0x402867,_0xb6c8('0x33'));_0x3f982c[_0xb6c8('0x39')]=_['keys'](_0x424c86[_0xb6c8('0x39')]);_0x3f982c['filters']=_[_0xb6c8('0x3a')](_0x3f982c[_0xb6c8('0x3b')],_0x3f982c[_0xb6c8('0x39')]);_0x1e060f[_0xb6c8('0x3c')]=_[_0xb6c8('0x3a')](_0x3f982c[_0xb6c8('0x3b')],qs[_0xb6c8('0x3d')](_0x424c86[_0xb6c8('0x39')]['fields']));_0x1e060f[_0xb6c8('0x3c')]=_0x1e060f[_0xb6c8('0x3c')][_0xb6c8('0x3e')]?_0x1e060f[_0xb6c8('0x3c')]:_0x3f982c[_0xb6c8('0x3b')];if(!_0x424c86['query']['hasOwnProperty'](_0xb6c8('0x3f'))){_0x1e060f[_0xb6c8('0x26')]=qs[_0xb6c8('0x26')](_0x424c86['query']['limit']);_0x1e060f['offset']=qs[_0xb6c8('0x24')](_0x424c86['query'][_0xb6c8('0x24')]);}_0x1e060f[_0xb6c8('0x40')]=qs[_0xb6c8('0x41')](_0x424c86[_0xb6c8('0x39')][_0xb6c8('0x41')]);_0x1e060f[_0xb6c8('0x42')]=qs['filters'](_[_0xb6c8('0x43')](_0x424c86['query'],_0x3f982c[_0xb6c8('0x44')]),_0x402867);if(_0x424c86[_0xb6c8('0x39')]['filter']){_0x1e060f[_0xb6c8('0x42')]=_[_0xb6c8('0x45')](_0x1e060f[_0xb6c8('0x42')],{'$or':_['map'](_0x402867,function(_0x55235b){if(_0x55235b['type']!==_0xb6c8('0x46')){var _0x2140ed={};_0x2140ed[_0x55235b['name']]={'$like':'%'+_0x424c86[_0xb6c8('0x39')][_0xb6c8('0x47')]+'%'};return _0x2140ed;}})});}_0x1e060f=_['merge']({},_0x1e060f,_0x424c86['options']);var _0x4b649b={'where':_0x1e060f[_0xb6c8('0x42')]};return db[_0xb6c8('0x36')][_0xb6c8('0x27')](_0x4b649b)[_0xb6c8('0x2d')](function(_0x1fcbf9){_0x20f8b7[_0xb6c8('0x27')]=_0x1fcbf9;if(_0x424c86[_0xb6c8('0x39')][_0xb6c8('0x48')]){_0x1e060f[_0xb6c8('0x49')]=[{'all':!![]}];}return db[_0xb6c8('0x36')][_0xb6c8('0x4a')](_0x1e060f);})['then'](function(_0x55cc8a){_0x20f8b7[_0xb6c8('0x4b')]=_0x55cc8a;return _0x20f8b7;})[_0xb6c8('0x2d')](respondWithFilteredResult(_0x459633,_0x1e060f))[_0xb6c8('0x4c')](handleError(_0x459633,null));};exports[_0xb6c8('0x4d')]=function(_0x6a9af9,_0x1f9e20){var _0x519ff0={'raw':![],'where':{'id':_0x6a9af9[_0xb6c8('0x4e')]['id']}},_0x23a666={};_0x23a666[_0xb6c8('0x3b')]=_[_0xb6c8('0x4f')](db[_0xb6c8('0x36')][_0xb6c8('0x50')]);_0x23a666[_0xb6c8('0x39')]=_[_0xb6c8('0x4f')](_0x6a9af9[_0xb6c8('0x39')]);_0x23a666['filters']=_[_0xb6c8('0x3a')](_0x23a666[_0xb6c8('0x3b')],_0x23a666[_0xb6c8('0x39')]);_0x519ff0[_0xb6c8('0x3c')]=_[_0xb6c8('0x3a')](_0x23a666[_0xb6c8('0x3b')],qs[_0xb6c8('0x3d')](_0x6a9af9[_0xb6c8('0x39')][_0xb6c8('0x3d')]));_0x519ff0[_0xb6c8('0x3c')]=_0x519ff0['attributes'][_0xb6c8('0x3e')]?_0x519ff0[_0xb6c8('0x3c')]:_0x23a666['model'];if(_0x6a9af9['query'][_0xb6c8('0x48')]){_0x519ff0['include']=[{'all':!![]}];}_0x519ff0=_[_0xb6c8('0x45')]({},_0x519ff0,_0x6a9af9['options']);return db['Dashboard']['find'](_0x519ff0)[_0xb6c8('0x2d')](handleEntityNotFound(_0x1f9e20,null))[_0xb6c8('0x2d')](respondWithResult(_0x1f9e20,null))[_0xb6c8('0x4c')](handleError(_0x1f9e20,null));};exports[_0xb6c8('0x51')]=function(_0x5d240d,_0x46798e){return db[_0xb6c8('0x36')][_0xb6c8('0x51')](_0x5d240d[_0xb6c8('0x52')],{})['then'](function(_0x4e29c5){var _0x476c5d=_0x5d240d[_0xb6c8('0x53')][_0xb6c8('0x2f')]({'plain':!![]});if(!_0x476c5d)throw new Error(_0xb6c8('0x54'));if(_0x476c5d[_0xb6c8('0x55')]===_0xb6c8('0x53')){var _0x7a0fc6=_0x4e29c5['get']({'plain':!![]});var _0x1623f6=_0xb6c8('0x30');return db[_0xb6c8('0x56')]['find']({'where':{'name':_0x1623f6,'userProfileId':_0x476c5d['userProfileId']},'raw':!![]})[_0xb6c8('0x2d')](function(_0x3117e4){if(_0x3117e4&&_0x3117e4[_0xb6c8('0x57')]===0x0){return db[_0xb6c8('0x58')][_0xb6c8('0x51')]({'name':_0x7a0fc6[_0xb6c8('0x33')],'resourceId':_0x7a0fc6['id'],'type':_0x3117e4[_0xb6c8('0x33')],'sectionId':_0x3117e4['id']},{})[_0xb6c8('0x2d')](function(){return _0x4e29c5;});}else{return _0x4e29c5;}})[_0xb6c8('0x4c')](function(_0x34a2f6){logger[_0xb6c8('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x34a2f6);throw _0x34a2f6;});}return _0x4e29c5;})[_0xb6c8('0x2d')](respondWithResult(_0x46798e,0xc9))[_0xb6c8('0x4c')](handleError(_0x46798e,null));};exports[_0xb6c8('0x59')]=function(_0x89827b,_0x5b2307){var _0x4fa9c1={'where':{'id':_0x89827b[_0xb6c8('0x4e')]['id']}},_0x15e6cc={};_0x15e6cc['model']=_[_0xb6c8('0x4f')](db[_0xb6c8('0x36')][_0xb6c8('0x50')]);_0x4fa9c1['attributes']=_[_0xb6c8('0x3a')](_0x15e6cc['model'],qs[_0xb6c8('0x3d')](_0x89827b[_0xb6c8('0x39')]['fields']));_0x4fa9c1[_0xb6c8('0x3c')]=_0x4fa9c1[_0xb6c8('0x3c')]['length']?_0x4fa9c1[_0xb6c8('0x3c')]:_0x15e6cc['model'];if(_0x89827b['query'][_0xb6c8('0x48')]){_0x4fa9c1[_0xb6c8('0x49')]=[{'all':!![]}];}_0x4fa9c1=_[_0xb6c8('0x45')]({},_0x4fa9c1,_0x89827b['options']);return db['Dashboard'][_0xb6c8('0x5a')](_0x4fa9c1)[_0xb6c8('0x2d')](handleEntityNotFound(_0x5b2307,null))[_0xb6c8('0x2d')](function(_0x5476c8){if(_0x5476c8){var _0x292630=_0x5476c8['get']({'plain':!![]});_0x292630=qs['omit'](_0x292630,['id',_0xb6c8('0x5b'),_0xb6c8('0x5c')]);_0x89827b[_0xb6c8('0x52')]=_[_0xb6c8('0x5d')](_0x89827b['body'],['id',_0xb6c8('0x5b'),_0xb6c8('0x5c')]);return db[_0xb6c8('0x36')]['create'](_[_0xb6c8('0x45')](_0x292630,_0x89827b['body']),{'include':_0x89827b[_0xb6c8('0x39')][_0xb6c8('0x48')]?[{'all':!![]}]:undefined})[_0xb6c8('0x2d')](function(_0x2b9402){var _0x24461b=_0x89827b[_0xb6c8('0x53')][_0xb6c8('0x2f')]({'plain':!![]});if(!_0x24461b)throw new Error(_0xb6c8('0x54'));if(_0x24461b['role']===_0xb6c8('0x53')){var _0x5f2fa2=_0x2b9402[_0xb6c8('0x2f')]({'plain':!![]});var _0x28d09a=_0xb6c8('0x30');return db['UserProfileSection'][_0xb6c8('0x5a')]({'where':{'name':_0x28d09a,'userProfileId':_0x24461b[_0xb6c8('0x5e')]},'raw':!![]})['then'](function(_0x1342e4){if(_0x1342e4&&_0x1342e4[_0xb6c8('0x57')]===0x0){return db[_0xb6c8('0x58')][_0xb6c8('0x51')]({'name':_0x5f2fa2[_0xb6c8('0x33')],'resourceId':_0x5f2fa2['id'],'type':_0x1342e4[_0xb6c8('0x33')],'sectionId':_0x1342e4['id']},{})['then'](function(){return _0x2b9402;});}else{return _0x2b9402;}})[_0xb6c8('0x4c')](function(_0x4407c4){logger[_0xb6c8('0x31')](_0xb6c8('0x5f'),_0x4407c4);throw _0x4407c4;});}return _0x2b9402;});}})['then'](respondWithResult(_0x5b2307,0xc9))[_0xb6c8('0x4c')](handleError(_0x5b2307,null));};exports[_0xb6c8('0x60')]=function(_0x37be9a,_0x185bbb){if(_0x37be9a['body']['id']){delete _0x37be9a[_0xb6c8('0x52')]['id'];}return db[_0xb6c8('0x36')][_0xb6c8('0x5a')]({'where':{'id':_0x37be9a[_0xb6c8('0x4e')]['id']}})[_0xb6c8('0x2d')](handleEntityNotFound(_0x185bbb,null))[_0xb6c8('0x2d')](saveUpdates(_0x37be9a[_0xb6c8('0x52')],null))['then'](respondWithResult(_0x185bbb,null))[_0xb6c8('0x4c')](handleError(_0x185bbb,null));};exports['destroy']=function(_0x2c4d84,_0x4fad63){return db[_0xb6c8('0x36')][_0xb6c8('0x5a')]({'where':{'id':_0x2c4d84[_0xb6c8('0x4e')]['id']}})[_0xb6c8('0x2d')](handleEntityNotFound(_0x4fad63,null))[_0xb6c8('0x2d')](removeEntity(_0x4fad63,null))['catch'](handleError(_0x4fad63,null));};function widgetAttributes(_0x190b1b){try{switch(_0x190b1b[_0xb6c8('0x38')]){case'iframe':return[{'name':_0xb6c8('0x61'),'value':_0x190b1b['attrUrl']||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x0]?_0x190b1b[_0xb6c8('0x62')][0x0][_0xb6c8('0x63')]:undefined)||_0xb6c8('0x64')}];case'custom':return[{'name':_0xb6c8('0x65'),'value':_0x190b1b[_0xb6c8('0x65')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x0]?_0x190b1b[_0xb6c8('0x62')][0x0][_0xb6c8('0x63')]:undefined)||''}];case _0xb6c8('0x66'):return[{'name':_0xb6c8('0x67'),'value':_0x190b1b[_0xb6c8('0x67')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x0]?_0x190b1b['attrs'][0x0][_0xb6c8('0x63')]:undefined)||'HH:mm:ss'},{'name':_0xb6c8('0x68'),'value':_0x190b1b[_0xb6c8('0x68')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x1]?_0x190b1b[_0xb6c8('0x62')][0x1][_0xb6c8('0x63')]:undefined)||_0xb6c8('0x69')},{'name':_0xb6c8('0x6a'),'value':_0x190b1b['attrFontSize']||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x2]?_0x190b1b[_0xb6c8('0x62')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0xb6c8('0x6b'),'value':_0x190b1b[_0xb6c8('0x6b')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x0]?_0x190b1b[_0xb6c8('0x62')][0x0][_0xb6c8('0x63')]:undefined)||_0xb6c8('0x6c')},{'name':_0xb6c8('0x6d'),'value':_0x190b1b[_0xb6c8('0x6d')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x1]?_0x190b1b[_0xb6c8('0x62')][0x1][_0xb6c8('0x63')]:undefined)||[]},{'name':_0xb6c8('0x6a'),'value':_0x190b1b[_0xb6c8('0x6a')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x2]?_0x190b1b['attrs'][0x2][_0xb6c8('0x63')]:undefined)||0x14}];case'multibar-chart':case _0xb6c8('0x6e'):return[{'name':_0xb6c8('0x6f'),'value':_0x190b1b['attrSerie1']||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b['attrs'][0x0]?_0x190b1b[_0xb6c8('0x62')][0x0][_0xb6c8('0x63')]:undefined)||_0xb6c8('0x6c')},{'name':_0xb6c8('0x70'),'value':_0x190b1b[_0xb6c8('0x70')]||(_0x190b1b['attrs']&&_0x190b1b[_0xb6c8('0x62')][0x1]?_0x190b1b['attrs'][0x1][_0xb6c8('0x63')]:undefined)||null},{'name':_0xb6c8('0x71'),'value':_0x190b1b[_0xb6c8('0x71')]||(_0x190b1b['attrs']&&_0x190b1b[_0xb6c8('0x62')][0x2]?_0x190b1b[_0xb6c8('0x62')][0x2][_0xb6c8('0x63')]:undefined)||null},{'name':_0xb6c8('0x6d'),'value':_0x190b1b['attrVoiceQueues']||(_0x190b1b['attrs']&&_0x190b1b[_0xb6c8('0x62')][0x3]?_0x190b1b['attrs'][0x3]['value']:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x190b1b[_0xb6c8('0x72')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x0]?_0x190b1b[_0xb6c8('0x62')][0x0][_0xb6c8('0x38')]:undefined)||null,'value':_0x190b1b['attrReport']||(_0x190b1b['attrs']&&_0x190b1b[_0xb6c8('0x62')][0x0]?_0x190b1b[_0xb6c8('0x62')][0x0][_0xb6c8('0x63')]:undefined)||null},{'name':_0xb6c8('0x73'),'value':_0x190b1b[_0xb6c8('0x73')]||(_0x190b1b[_0xb6c8('0x62')]&&_0x190b1b[_0xb6c8('0x62')][0x1]?_0x190b1b['attrs'][0x1][_0xb6c8('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x5882fa){logger[_0xb6c8('0x31')]('widgetAttributes:\x20%s',JSON[_0xb6c8('0x74')](_0x5882fa));return[];}}exports[_0xb6c8('0x75')]=function(_0x56b6a7,_0x5797bf,_0x22e0c6){if(_0x56b6a7[_0xb6c8('0x52')]['id']){delete _0x56b6a7[_0xb6c8('0x52')]['id'];}return db[_0xb6c8('0x36')][_0xb6c8('0x5a')]({'where':{'id':_0x56b6a7[_0xb6c8('0x4e')]['id']}})[_0xb6c8('0x2d')](handleEntityNotFound(_0x5797bf,null))[_0xb6c8('0x2d')](function(_0x50cc05){if(_0x50cc05){_0x56b6a7[_0xb6c8('0x52')][_0xb6c8('0x76')]=_0x50cc05['id'];_0x56b6a7['body'][_0xb6c8('0x62')]=widgetAttributes(_0x56b6a7['body']);return db[_0xb6c8('0x77')][_0xb6c8('0x51')](_0x56b6a7[_0xb6c8('0x52')]);}})[_0xb6c8('0x2d')](respondWithResult(_0x5797bf,null))['catch'](handleError(_0x5797bf,null));};exports[_0xb6c8('0x78')]=function(_0x1df384,_0xaeae46,_0x2afc5f){var _0x4e68e3={};var _0x342e8c={};var _0x53eb8f;var _0x308970;return db[_0xb6c8('0x36')]['findOne']({'where':{'id':_0x1df384[_0xb6c8('0x4e')]['id']}})['then'](handleEntityNotFound(_0xaeae46,null))[_0xb6c8('0x2d')](function(_0x5125f3){if(_0x5125f3){_0x53eb8f=_0x5125f3;_0x342e8c[_0xb6c8('0x3b')]=_['keys'](db[_0xb6c8('0x77')][_0xb6c8('0x50')]);_0x342e8c['query']=_['keys'](_0x1df384['query']);_0x342e8c['filters']=_[_0xb6c8('0x3a')](_0x342e8c['model'],_0x342e8c[_0xb6c8('0x39')]);_0x4e68e3[_0xb6c8('0x3c')]=_['intersection'](_0x342e8c[_0xb6c8('0x3b')],qs[_0xb6c8('0x3d')](_0x1df384['query'][_0xb6c8('0x3d')]));_0x4e68e3[_0xb6c8('0x3c')]=_0x4e68e3[_0xb6c8('0x3c')][_0xb6c8('0x3e')]?_0x4e68e3[_0xb6c8('0x3c')]:_0x342e8c[_0xb6c8('0x3b')];_0x4e68e3[_0xb6c8('0x40')]=qs['sort'](_0x1df384[_0xb6c8('0x39')][_0xb6c8('0x41')]);_0x4e68e3['where']=qs[_0xb6c8('0x44')](_[_0xb6c8('0x43')](_0x1df384[_0xb6c8('0x39')],_0x342e8c['filters']));if(_0x1df384[_0xb6c8('0x39')][_0xb6c8('0x47')]){_0x4e68e3[_0xb6c8('0x42')]=_[_0xb6c8('0x45')](_0x4e68e3[_0xb6c8('0x42')],{'$or':_[_0xb6c8('0x79')](_0x4e68e3[_0xb6c8('0x3c')],function(_0x38f2f9){var _0x29ad03={};_0x29ad03[_0x38f2f9]={'$like':'%'+_0x1df384[_0xb6c8('0x39')][_0xb6c8('0x47')]+'%'};return _0x29ad03;})});}_0x4e68e3=_[_0xb6c8('0x45')]({},_0x4e68e3,_0x1df384['options']);return _0x53eb8f[_0xb6c8('0x78')](_0x4e68e3);}})['then'](function(_0x5d982b){if(_0x5d982b){_0x308970=_0x5d982b['length'];if(!_0x1df384[_0xb6c8('0x39')][_0xb6c8('0x7a')]('nolimit')){_0x4e68e3[_0xb6c8('0x26')]=qs[_0xb6c8('0x26')](_0x1df384['query'][_0xb6c8('0x26')]);_0x4e68e3['offset']=qs[_0xb6c8('0x24')](_0x1df384['query'][_0xb6c8('0x24')]);}return _0x53eb8f[_0xb6c8('0x78')](_0x4e68e3);}})[_0xb6c8('0x2d')](function(_0x17442e){if(_0x17442e){return _0x17442e?{'count':_0x308970,'rows':_0x17442e}:null;}})[_0xb6c8('0x2d')](respondWithResult(_0xaeae46,null))[_0xb6c8('0x4c')](handleError(_0xaeae46,null));};
\ No newline at end of file
index 237850a..5f47a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a15=['Dashboard','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x3c8677,_0x298777){var _0x4bc230=function(_0xa33402){while(--_0xa33402){_0x3c8677['push'](_0x3c8677['shift']());}};_0x4bc230(++_0x298777);}(_0x1a15,0x103));var _0x51a1=function(_0x1412ef,_0x52ce41){_0x1412ef=_0x1412ef-0x0;var _0x2a8796=_0x1a15[_0x1412ef];return _0x2a8796;};'use strict';var EventEmitter=require(_0x51a1('0x0'));var Dashboard=require(_0x51a1('0x1'))['db'][_0x51a1('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x51a1('0x3'),'afterUpdate':_0x51a1('0x4'),'afterDestroy':_0x51a1('0x5')};function emitEvent(_0x35c83b){return function(_0x775972,_0x5302f6,_0x39f555){DashboardEvents[_0x51a1('0x6')](_0x35c83b+':'+_0x775972['id'],_0x775972);DashboardEvents[_0x51a1('0x6')](_0x35c83b,_0x775972);_0x39f555(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x51a1('0x7')](e,emitEvent(event));}}module[_0x51a1('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0xe643=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x5d860f,_0x467498){var _0x236490=function(_0x5e045c){while(--_0x5e045c){_0x5d860f['push'](_0x5d860f['shift']());}};_0x236490(++_0x467498);}(_0xe643,0x84));var _0x3e64=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe643[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x3e64('0x0'));var Dashboard=require(_0x3e64('0x1'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0x3e64('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3e64('0x3'),'afterDestroy':_0x3e64('0x4')};function emitEvent(_0x39eadd){return function(_0x12eb74,_0x13b250,_0x5d4a4e){DashboardEvents[_0x3e64('0x5')](_0x39eadd+':'+_0x12eb74['id'],_0x12eb74);DashboardEvents[_0x3e64('0x5')](_0x39eadd,_0x12eb74);_0x5d4a4e(null);};}for(var e in events){if(events[_0x3e64('0x6')](e)){var event=events[e];Dashboard[_0x3e64('0x7')](e,emitEvent(event));}}module[_0x3e64('0x8')]=DashboardEvents;
\ No newline at end of file
index 8e44b91..b044082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb3=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','define','dashboards','util'];(function(_0x1dd543,_0x3fa808){var _0xf369d5=function(_0x415c1c){while(--_0x415c1c){_0x1dd543['push'](_0x1dd543['shift']());}};_0xf369d5(++_0x3fa808);}(_0x5eb3,0xcb));var _0x35eb=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x5eb3[_0x556bb1];return _0x45455f;};'use strict';var _=require('lodash');var util=require(_0x35eb('0x0'));var logger=require(_0x35eb('0x1'))(_0x35eb('0x2'));var moment=require(_0x35eb('0x3'));var BPromise=require(_0x35eb('0x4'));var rp=require(_0x35eb('0x5'));var fs=require('fs');var path=require(_0x35eb('0x6'));var rimraf=require(_0x35eb('0x7'));var config=require(_0x35eb('0x8'));var attributes=require(_0x35eb('0x9'));module['exports']=function(_0x231951,_0x1e3d2f){return _0x231951[_0x35eb('0xa')]('Dashboard',attributes,{'tableName':_0x35eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5216=['bluebird','rimraf','./dashboard.attributes','exports','Dashboard','util','../../config/logger','api'];(function(_0xb37185,_0x3ec508){var _0x575b45=function(_0x2d9b5a){while(--_0x2d9b5a){_0xb37185['push'](_0xb37185['shift']());}};_0x575b45(++_0x3ec508);}(_0x5216,0x165));var _0x6521=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5216[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require(_0x6521('0x0'));var logger=require(_0x6521('0x1'))(_0x6521('0x2'));var moment=require('moment');var BPromise=require(_0x6521('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6521('0x4'));var config=require('../../config/environment');var attributes=require(_0x6521('0x5'));module[_0x6521('0x6')]=function(_0x52053c,_0x7c46f8){return _0x52053c['define'](_0x6521('0x7'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e042dfd..08d1983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7101=['redis','localhost','register','then','info','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','Dashboard,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x473a86,_0x38c263){var _0x20c3b6=function(_0x5e185d){while(--_0x5e185d){_0x473a86['push'](_0x473a86['shift']());}};_0x20c3b6(++_0x38c263);}(_0x7101,0xcd));var _0x1710=function(_0x51f812,_0x36212c){_0x51f812=_0x51f812-0x0;var _0x1ad290=_0x7101[_0x51f812];return _0x1ad290;};'use strict';var _=require(_0x1710('0x0'));var util=require(_0x1710('0x1'));var moment=require('moment');var BPromise=require(_0x1710('0x2'));var rs=require(_0x1710('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1710('0x4'))['db'];var utils=require(_0x1710('0x5'));var logger=require(_0x1710('0x6'))(_0x1710('0x7'));var config=require(_0x1710('0x8'));var jayson=require(_0x1710('0x9'));var client=jayson['client'][_0x1710('0xa')]({'port':0x232a});config[_0x1710('0xb')]=_['defaults'](config[_0x1710('0xb')],{'host':_0x1710('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1710('0xb')]));require('./dashboard.socket')[_0x1710('0xd')](socket);function respondWithRpcPromise(_0x2176be,_0x213609,_0x1afdd7){return new BPromise(function(_0x4a8a03,_0x2c2d93){return client['request'](_0x2176be,_0x1afdd7)[_0x1710('0xe')](function(_0x4ad090){logger[_0x1710('0xf')]('Dashboard,\x20%s,\x20%s',_0x213609,_0x1710('0x10'));logger[_0x1710('0x11')](_0x1710('0x12'),_0x213609,_0x1710('0x10'),JSON['stringify'](_0x4ad090));if(_0x4ad090[_0x1710('0x13')]){if(_0x4ad090[_0x1710('0x13')][_0x1710('0x14')]===0x1f4){logger[_0x1710('0x13')]('Dashboard,\x20%s,\x20%s',_0x213609,_0x4ad090[_0x1710('0x13')][_0x1710('0x15')]);return _0x2c2d93(_0x4ad090[_0x1710('0x13')][_0x1710('0x15')]);}logger[_0x1710('0x13')](_0x1710('0x16'),_0x213609,_0x4ad090[_0x1710('0x13')][_0x1710('0x15')]);return _0x4a8a03(_0x4ad090[_0x1710('0x13')][_0x1710('0x15')]);}else{logger['info']('Dashboard,\x20%s,\x20%s',_0x213609,_0x1710('0x10'));_0x4a8a03(_0x4ad090['result'][_0x1710('0x15')]);}})[_0x1710('0x17')](function(_0x471eeb){logger['error'](_0x1710('0x16'),_0x213609,_0x471eeb);_0x2c2d93(_0x471eeb);});});}
\ No newline at end of file
+var _0xcb9f=['catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','socket.io-emitter','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x69b830,_0x3c964e){var _0x49329b=function(_0x33495a){while(--_0x33495a){_0x69b830['push'](_0x69b830['shift']());}};_0x49329b(++_0x3c964e);}(_0xcb9f,0x65));var _0xfcb9=function(_0x4af46b,_0x259c5b){_0x4af46b=_0x4af46b-0x0;var _0x5d3c55=_0xcb9f[_0x4af46b];return _0x5d3c55;};'use strict';var _=require(_0xfcb9('0x0'));var util=require(_0xfcb9('0x1'));var moment=require('moment');var BPromise=require(_0xfcb9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcb9('0x3'));var db=require(_0xfcb9('0x4'))['db'];var utils=require(_0xfcb9('0x5'));var logger=require(_0xfcb9('0x6'))(_0xfcb9('0x7'));var config=require(_0xfcb9('0x8'));var jayson=require(_0xfcb9('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xfcb9('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfcb9('0xb'))(new Redis(config['redis']));require(_0xfcb9('0xc'))[_0xfcb9('0xd')](socket);function respondWithRpcPromise(_0x1337dc,_0x16bc05,_0x5f1d3a){return new BPromise(function(_0x367d48,_0x56bf13){return client[_0xfcb9('0xe')](_0x1337dc,_0x5f1d3a)[_0xfcb9('0xf')](function(_0x3bb56a){logger[_0xfcb9('0x10')](_0xfcb9('0x11'),_0x16bc05,_0xfcb9('0x12'));logger[_0xfcb9('0x13')](_0xfcb9('0x14'),_0x16bc05,'request\x20sent',JSON[_0xfcb9('0x15')](_0x3bb56a));if(_0x3bb56a[_0xfcb9('0x16')]){if(_0x3bb56a['error']['code']===0x1f4){logger[_0xfcb9('0x16')](_0xfcb9('0x11'),_0x16bc05,_0x3bb56a[_0xfcb9('0x16')][_0xfcb9('0x17')]);return _0x56bf13(_0x3bb56a['error']['message']);}logger['error'](_0xfcb9('0x11'),_0x16bc05,_0x3bb56a[_0xfcb9('0x16')][_0xfcb9('0x17')]);return _0x367d48(_0x3bb56a['error'][_0xfcb9('0x17')]);}else{logger[_0xfcb9('0x10')](_0xfcb9('0x11'),_0x16bc05,_0xfcb9('0x12'));_0x367d48(_0x3bb56a['result'][_0xfcb9('0x17')]);}})[_0xfcb9('0x18')](function(_0x190550){logger[_0xfcb9('0x16')](_0xfcb9('0x11'),_0x16bc05,_0x190550);_0x56bf13(_0x190550);});});}
\ No newline at end of file
index 9a63b10..fee41ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53b3=['./dashboard.events','remove','emit','removeListener','register','length','dashboard:'];(function(_0x2df259,_0x152612){var _0x3473b2=function(_0x3c4789){while(--_0x3c4789){_0x2df259['push'](_0x2df259['shift']());}};_0x3473b2(++_0x152612);}(_0x53b3,0x103));var _0x353b=function(_0xbb448f,_0x57f0a5){_0xbb448f=_0xbb448f-0x0;var _0x599c18=_0x53b3[_0xbb448f];return _0x599c18;};'use strict';var DashboardEvents=require(_0x353b('0x0'));var events=['save',_0x353b('0x1'),'update'];function createListener(_0x118e86,_0x1b3b8b){return function(_0x4395f5){_0x1b3b8b[_0x353b('0x2')](_0x118e86,_0x4395f5);};}function removeListener(_0x8b1d9b,_0x228765){return function(){DashboardEvents[_0x353b('0x3')](_0x8b1d9b,_0x228765);};}exports[_0x353b('0x4')]=function(_0x1e8ad2){for(var _0x9a3b92=0x0,_0x3be063=events[_0x353b('0x5')];_0x9a3b92<_0x3be063;_0x9a3b92++){var _0x3dc986=events[_0x9a3b92];var _0x2da178=createListener(_0x353b('0x6')+_0x3dc986,_0x1e8ad2);DashboardEvents['on'](_0x3dc986,_0x2da178);}};
\ No newline at end of file
+var _0x45df=['save','update','removeListener','register','length','./dashboard.events'];(function(_0x302ef1,_0x27511c){var _0x47a9d2=function(_0x116bec){while(--_0x116bec){_0x302ef1['push'](_0x302ef1['shift']());}};_0x47a9d2(++_0x27511c);}(_0x45df,0x1c1));var _0xf45d=function(_0x3ab61a,_0x452053){_0x3ab61a=_0x3ab61a-0x0;var _0xb7841c=_0x45df[_0x3ab61a];return _0xb7841c;};'use strict';var DashboardEvents=require(_0xf45d('0x0'));var events=[_0xf45d('0x1'),'remove',_0xf45d('0x2')];function createListener(_0xe265a6,_0x42ef33){return function(_0x267ed1){_0x42ef33['emit'](_0xe265a6,_0x267ed1);};}function removeListener(_0x38037f,_0x2d1b0c){return function(){DashboardEvents[_0xf45d('0x3')](_0x38037f,_0x2d1b0c);};}exports[_0xf45d('0x4')]=function(_0x2e3457){for(var _0x268f7e=0x0,_0x34ac34=events[_0xf45d('0x5')];_0x268f7e<_0x34ac34;_0x268f7e++){var _0x5c42eb=events[_0x268f7e];var _0x18e11a=createListener('dashboard:'+_0x5c42eb,_0x2e3457);DashboardEvents['on'](_0x5c42eb,_0x18e11a);}};
\ No newline at end of file
index 459adc5..1d87158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c34=['post','/:id/clone','clone','addItem','put','delete','destroy','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','./dashboard.controller','isAuthenticated','get','/:id','show','/:id/items','getItems'];(function(_0x3ee46b,_0x385916){var _0x173284=function(_0x3b7502){while(--_0x3b7502){_0x3ee46b['push'](_0x3ee46b['shift']());}};_0x173284(++_0x385916);}(_0x1c34,0xb8));var _0x41c3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1c34[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x41c3('0x0'));var util=require(_0x41c3('0x1'));var path=require(_0x41c3('0x2'));var timeout=require('connect-timeout');var express=require(_0x41c3('0x3'));var router=express[_0x41c3('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x41c3('0x5'));var config=require(_0x41c3('0x6'));var controller=require(_0x41c3('0x7'));router['get']('/',auth[_0x41c3('0x8')](),controller['index']);router[_0x41c3('0x9')](_0x41c3('0xa'),auth[_0x41c3('0x8')](),controller[_0x41c3('0xb')]);router['get'](_0x41c3('0xc'),auth[_0x41c3('0x8')](),controller[_0x41c3('0xd')]);router[_0x41c3('0xe')]('/',auth[_0x41c3('0x8')](),controller['create']);router[_0x41c3('0xe')](_0x41c3('0xf'),auth[_0x41c3('0x8')](),controller[_0x41c3('0x10')]);router['post'](_0x41c3('0xc'),auth[_0x41c3('0x8')](),controller[_0x41c3('0x11')]);router[_0x41c3('0x12')]('/:id',auth[_0x41c3('0x8')](),controller['update']);router[_0x41c3('0x13')](_0x41c3('0xa'),auth[_0x41c3('0x8')](),controller[_0x41c3('0x14')]);module[_0x41c3('0x15')]=router;
\ No newline at end of file
+var _0xb3dc=['destroy','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','getItems','create','post','clone','addItem','put','update','delete'];(function(_0x1bcc75,_0x5e4bac){var _0xb85888=function(_0x5cba62){while(--_0x5cba62){_0x1bcc75['push'](_0x1bcc75['shift']());}};_0xb85888(++_0x5e4bac);}(_0xb3dc,0x109));var _0xcb3d=function(_0x46fc9e,_0x431c65){_0x46fc9e=_0x46fc9e-0x0;var _0x1fbe64=_0xb3dc[_0x46fc9e];return _0x1fbe64;};'use strict';var multer=require(_0xcb3d('0x0'));var util=require('util');var path=require(_0xcb3d('0x1'));var timeout=require(_0xcb3d('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xcb3d('0x3'));var auth=require(_0xcb3d('0x4'));var interaction=require(_0xcb3d('0x5'));var config=require('../../config/environment');var controller=require(_0xcb3d('0x6'));router[_0xcb3d('0x7')]('/',auth[_0xcb3d('0x8')](),controller[_0xcb3d('0x9')]);router['get'](_0xcb3d('0xa'),auth[_0xcb3d('0x8')](),controller[_0xcb3d('0xb')]);router[_0xcb3d('0x7')](_0xcb3d('0xc'),auth[_0xcb3d('0x8')](),controller[_0xcb3d('0xd')]);router['post']('/',auth[_0xcb3d('0x8')](),controller[_0xcb3d('0xe')]);router[_0xcb3d('0xf')]('/:id/clone',auth[_0xcb3d('0x8')](),controller[_0xcb3d('0x10')]);router[_0xcb3d('0xf')](_0xcb3d('0xc'),auth['isAuthenticated'](),controller[_0xcb3d('0x11')]);router[_0xcb3d('0x12')](_0xcb3d('0xa'),auth['isAuthenticated'](),controller[_0xcb3d('0x13')]);router[_0xcb3d('0x14')](_0xcb3d('0xa'),auth[_0xcb3d('0x8')](),controller[_0xcb3d('0x15')]);module['exports']=router;
\ No newline at end of file
index bd37ad9..4d89e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['parse','attrs','setDataValue','stringify','INTEGER','sequelize','STRING','long'];(function(_0x79ce73,_0x3dcea2){var _0x737b6=function(_0x353caf){while(--_0x353caf){_0x79ce73['push'](_0x79ce73['shift']());}};_0x737b6(++_0x3dcea2);}(_0x2675,0x75));var _0x5267=function(_0x55cf86,_0x28972f){_0x55cf86=_0x55cf86-0x0;var _0x1310fe=_0x2675[_0x55cf86];return _0x1310fe;};'use strict';var Sequelize=require(_0x5267('0x0'));var squel=require('squel');var _=require('lodash');module['exports']={'title':{'type':Sequelize[_0x5267('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5267('0x1')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x5267('0x2')),'get':function(){try{return JSON[_0x5267('0x3')](this['getDataValue'](_0x5267('0x4')));}catch(_0xf2b350){return[];}},'set':function(_0x4bd042){try{this[_0x5267('0x5')](_0x5267('0x4'),JSON[_0x5267('0x6')](_0x4bd042));}catch(_0x527c16){this[_0x5267('0x5')](_0x5267('0x4'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x5267('0x7')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5267('0x7')]},'col':{'type':Sequelize[_0x5267('0x7')]},'background':{'type':Sequelize[_0x5267('0x1')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x5267('0x1')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5267('0x1')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x5d17=['#ffffff','sequelize','squel','STRING','TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x4492af,_0x47e25d){var _0x216729=function(_0x4964c8){while(--_0x4964c8){_0x4492af['push'](_0x4492af['shift']());}};_0x216729(++_0x47e25d);}(_0x5d17,0x114));var _0x75d1=function(_0x5ad771,_0x34186f){_0x5ad771=_0x5ad771-0x0;var _0x5b5dce=_0x5d17[_0x5ad771];return _0x5b5dce;};'use strict';var Sequelize=require(_0x75d1('0x0'));var squel=require(_0x75d1('0x1'));var _=require('lodash');module['exports']={'title':{'type':Sequelize[_0x75d1('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x75d1('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x75d1('0x3')]('long'),'get':function(){try{return JSON[_0x75d1('0x4')](this[_0x75d1('0x5')](_0x75d1('0x6')));}catch(_0x32bd45){return[];}},'set':function(_0x56ac0a){try{this[_0x75d1('0x7')](_0x75d1('0x6'),JSON[_0x75d1('0x8')](_0x56ac0a));}catch(_0x1ee61b){this[_0x75d1('0x7')](_0x75d1('0x6'),JSON[_0x75d1('0x8')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x75d1('0x9')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x75d1('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x75d1('0x2')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x75d1('0x2')]},'titleFontSize':{'type':Sequelize[_0x75d1('0x9')],'defaultValue':0xc}};
\ No newline at end of file
index 8623d27..d5a5a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x704f=['type','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','json','offset','limit','undefined','count','apply','reject','save','update','then','error','stack','send','show','params','model','rawAttributes','keys','query','filters','intersection','attributes','length','includeAll','include','merge','DashboardItem','catch','destroy','find'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x704f,0x1df));var _0xf704=function(_0x5bf420,_0x2d068d){_0x5bf420=_0x5bf420-0x0;var _0x1c5255=_0x704f[_0x5bf420];return _0x1c5255;};'use strict';var emlformat=require(_0xf704('0x0'));var rimraf=require(_0xf704('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf704('0x2'));var rp=require(_0xf704('0x3'));var moment=require(_0xf704('0x4'));var BPromise=require(_0xf704('0x5'));var Mustache=require(_0xf704('0x6'));var util=require('util');var path=require(_0xf704('0x7'));var sox=require(_0xf704('0x8'));var csv=require(_0xf704('0x9'));var ejs=require(_0xf704('0xa'));var fs=require('fs');var fs_extra=require(_0xf704('0xb'));var _=require(_0xf704('0xc'));var squel=require('squel');var crypto=require(_0xf704('0xd'));var jsforce=require(_0xf704('0xe'));var deskjs=require(_0xf704('0xf'));var toCsv=require(_0xf704('0x9'));var querystring=require(_0xf704('0x10'));var Papa=require(_0xf704('0x11'));var Redis=require(_0xf704('0x12'));var authService=require(_0xf704('0x13'));var qs=require(_0xf704('0x14'));var as=require(_0xf704('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf704('0x16'));var utils=require(_0xf704('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf704('0x18'));var db=require(_0xf704('0x19'))['db'];config[_0xf704('0x1a')]=_[_0xf704('0x1b')](config[_0xf704('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xf704('0x1c'))(new Redis(config[_0xf704('0x1a')]));require('./dashboardItem.socket')['register'](socket);function respondWithStatusCode(_0x558b15,_0x298ed5){_0x298ed5=_0x298ed5||0xcc;return function(_0x5d1ddc){if(_0x5d1ddc){return _0x558b15[_0xf704('0x1d')](_0x298ed5);}return _0x558b15[_0xf704('0x1e')](_0x298ed5)['end']();};}function respondWithResult(_0x4ddfa1,_0x10fc1c){_0x10fc1c=_0x10fc1c||0xc8;return function(_0xbba3ec){if(_0xbba3ec){return _0x4ddfa1[_0xf704('0x1e')](_0x10fc1c)[_0xf704('0x1f')](_0xbba3ec);}};}function respondWithFilteredResult(_0x57b824,_0xe8db31){return function(_0x3f8875){if(_0x3f8875){var _0x10d07f=typeof _0xe8db31[_0xf704('0x20')]==='undefined'&&typeof _0xe8db31[_0xf704('0x21')]===_0xf704('0x22');var _0xd966ec=_0x3f8875[_0xf704('0x23')];var _0xd1fee2=_0x10d07f?0x0:_0xe8db31[_0xf704('0x20')];var _0x1d0c12=_0x10d07f?_0x3f8875['count']:_0xe8db31['offset']+_0xe8db31[_0xf704('0x21')];var _0x5f3663;if(_0x1d0c12>=_0xd966ec){_0x1d0c12=_0xd966ec;_0x5f3663=0xc8;}else{_0x5f3663=0xce;}_0x57b824[_0xf704('0x1e')](_0x5f3663);return _0x57b824['set']('Content-Range',_0xd1fee2+'-'+_0x1d0c12+'/'+_0xd966ec)[_0xf704('0x1f')](_0x3f8875);}return null;};}function patchUpdates(_0x504873){return function(_0x18a779){try{jsonpatch[_0xf704('0x24')](_0x18a779,_0x504873,!![]);}catch(_0x3ff4be){return BPromise[_0xf704('0x25')](_0x3ff4be);}return _0x18a779[_0xf704('0x26')]();};}function saveUpdates(_0x414cfd,_0x40b908){return function(_0x56d07c){if(_0x56d07c){return _0x56d07c[_0xf704('0x27')](_0x414cfd)[_0xf704('0x28')](function(_0x3066f7){return _0x3066f7;});}return null;};}function removeEntity(_0x1a090c,_0x48282f){return function(_0xa6f1f6){if(_0xa6f1f6){return _0xa6f1f6['destroy']()['then'](function(){_0x1a090c[_0xf704('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39be21,_0x11e89d){return function(_0x3a6c01){if(!_0x3a6c01){_0x39be21[_0xf704('0x1d')](0x194);}return _0x3a6c01;};}function handleError(_0x4161bc,_0x411a62){_0x411a62=_0x411a62||0x1f4;return function(_0x259e70){logger[_0xf704('0x29')](_0x259e70[_0xf704('0x2a')]);if(_0x259e70['name']){delete _0x259e70['name'];}_0x4161bc[_0xf704('0x1e')](_0x411a62)[_0xf704('0x2b')](_0x259e70);};}exports[_0xf704('0x2c')]=function(_0x5102c7,_0xed3ef1){var _0x4e65eb={'raw':![],'where':{'id':_0x5102c7[_0xf704('0x2d')]['id']}},_0x43c4ac={};_0x43c4ac[_0xf704('0x2e')]=_['keys'](db['DashboardItem'][_0xf704('0x2f')]);_0x43c4ac['query']=_[_0xf704('0x30')](_0x5102c7[_0xf704('0x31')]);_0x43c4ac[_0xf704('0x32')]=_[_0xf704('0x33')](_0x43c4ac['model'],_0x43c4ac[_0xf704('0x31')]);_0x4e65eb[_0xf704('0x34')]=_[_0xf704('0x33')](_0x43c4ac[_0xf704('0x2e')],qs['fields'](_0x5102c7[_0xf704('0x31')]['fields']));_0x4e65eb[_0xf704('0x34')]=_0x4e65eb[_0xf704('0x34')][_0xf704('0x35')]?_0x4e65eb['attributes']:_0x43c4ac['model'];if(_0x5102c7[_0xf704('0x31')][_0xf704('0x36')]){_0x4e65eb[_0xf704('0x37')]=[{'all':!![]}];}_0x4e65eb=_[_0xf704('0x38')]({},_0x4e65eb,_0x5102c7['options']);return db[_0xf704('0x39')]['find'](_0x4e65eb)[_0xf704('0x28')](handleEntityNotFound(_0xed3ef1,null))[_0xf704('0x28')](respondWithResult(_0xed3ef1,null))[_0xf704('0x3a')](handleError(_0xed3ef1,null));};exports[_0xf704('0x3b')]=function(_0x1acdc1,_0x38dea8){return db[_0xf704('0x39')][_0xf704('0x3c')]({'where':{'id':_0x1acdc1[_0xf704('0x2d')]['id']}})['then'](handleEntityNotFound(_0x38dea8,null))[_0xf704('0x28')](removeEntity(_0x38dea8,null))[_0xf704('0x3a')](handleError(_0x38dea8,null));};function widgetAttributes(_0x533132){try{switch(_0x533132[_0xf704('0x3d')]){case _0xf704('0x3e'):return[{'name':_0xf704('0x3f'),'value':_0x533132[_0xf704('0x3f')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x41')]:undefined)||'https://'}];case _0xf704('0x42'):return[{'name':'attrPath','value':_0x533132[_0xf704('0x43')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x41')]:undefined)||''}];case _0xf704('0x44'):return[{'name':_0xf704('0x45'),'value':_0x533132[_0xf704('0x45')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x41')]:undefined)||_0xf704('0x46')},{'name':'attrTimezone','value':_0x533132[_0xf704('0x47')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x1]?_0x533132['attrs'][0x1][_0xf704('0x41')]:undefined)||_0xf704('0x48')},{'name':_0xf704('0x49'),'value':_0x533132[_0xf704('0x49')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x2]?_0x533132[_0xf704('0x40')][0x2][_0xf704('0x41')]:undefined)||0xc}];case _0xf704('0x4a'):return[{'name':'attrMetric','value':_0x533132[_0xf704('0x4b')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x41')]:undefined)||_0xf704('0x4c')},{'name':_0xf704('0x4d'),'value':_0x533132[_0xf704('0x4d')]||(_0x533132['attrs']&&_0x533132[_0xf704('0x40')][0x1]?_0x533132[_0xf704('0x40')][0x1][_0xf704('0x41')]:undefined)||[]},{'name':'attrFontSize','value':_0x533132[_0xf704('0x49')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x2]?_0x533132[_0xf704('0x40')][0x2][_0xf704('0x41')]:undefined)||0x14}];case _0xf704('0x4e'):case'pie-chart':return[{'name':_0xf704('0x4f'),'value':_0x533132['attrSerie1']||(_0x533132['attrs']&&_0x533132['attrs'][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x41')]:undefined)||'total'},{'name':_0xf704('0x50'),'value':_0x533132['attrSerie2']||(_0x533132[_0xf704('0x40')]&&_0x533132['attrs'][0x1]?_0x533132['attrs'][0x1][_0xf704('0x41')]:undefined)||null},{'name':_0xf704('0x51'),'value':_0x533132[_0xf704('0x51')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x2]?_0x533132[_0xf704('0x40')][0x2][_0xf704('0x41')]:undefined)||null},{'name':_0xf704('0x4d'),'value':_0x533132[_0xf704('0x4d')]||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x3]?_0x533132[_0xf704('0x40')][0x3][_0xf704('0x41')]:undefined)||[]}];case _0xf704('0x52'):return[{'name':_0xf704('0x53'),'type':_0x533132[_0xf704('0x54')]||(_0x533132['attrs']&&_0x533132[_0xf704('0x40')][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x3d')]:undefined)||null,'value':_0x533132['attrReport']||(_0x533132[_0xf704('0x40')]&&_0x533132[_0xf704('0x40')][0x0]?_0x533132[_0xf704('0x40')][0x0][_0xf704('0x41')]:undefined)||null},{'name':_0xf704('0x55'),'value':_0x533132[_0xf704('0x55')]||(_0x533132['attrs']&&_0x533132[_0xf704('0x40')][0x1]?_0x533132[_0xf704('0x40')][0x1][_0xf704('0x41')]:undefined)||0x0}];default:return[];}}catch(_0x3efcc8){logger['error'](_0xf704('0x56'),JSON[_0xf704('0x57')](_0x3efcc8));return[];}}exports[_0xf704('0x58')]=function(_0xb6a544,_0xb7c13f){if(_0xb6a544['body']){_0xb6a544[_0xf704('0x59')][_0xf704('0x40')]=widgetAttributes(_0xb6a544[_0xf704('0x59')]);}return db[_0xf704('0x39')]['create'](_0xb6a544[_0xf704('0x59')],{})['then'](respondWithResult(_0xb7c13f,0xc9))['catch'](handleError(_0xb7c13f,null));};exports[_0xf704('0x27')]=function(_0x26f3cf,_0x1e5ed6){if(_0x26f3cf[_0xf704('0x59')]['id']){delete _0x26f3cf[_0xf704('0x59')]['id'];}_0x26f3cf['body'][_0xf704('0x40')]=widgetAttributes(_0x26f3cf[_0xf704('0x59')]);return db['DashboardItem'][_0xf704('0x3c')]({'where':{'id':_0x26f3cf[_0xf704('0x2d')]['id']}})[_0xf704('0x28')](handleEntityNotFound(_0x1e5ed6,null))[_0xf704('0x28')](saveUpdates(_0x26f3cf[_0xf704('0x59')],null))[_0xf704('0x28')](respondWithResult(_0x1e5ed6,null))[_0xf704('0x3a')](handleError(_0x1e5ed6,null));};
\ No newline at end of file
+var _0x18ea=['HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','rimraf','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./dashboardItem.socket','end','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','show','params','model','keys','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include','merge','find','catch','DashboardItem','type','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x18ea,0xbe));var _0xa18e=function(_0x2c281f,_0x486424){_0x2c281f=_0x2c281f-0x0;var _0x348b62=_0x18ea[_0x2c281f];return _0x348b62;};'use strict';var emlformat=require(_0xa18e('0x0'));var rimraf=require(_0xa18e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa18e('0x2'));var moment=require(_0xa18e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa18e('0x4'));var util=require('util');var path=require('path');var sox=require(_0xa18e('0x5'));var csv=require('to-csv');var ejs=require(_0xa18e('0x6'));var fs=require('fs');var fs_extra=require(_0xa18e('0x7'));var _=require(_0xa18e('0x8'));var squel=require(_0xa18e('0x9'));var crypto=require(_0xa18e('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa18e('0xb'));var toCsv=require(_0xa18e('0xc'));var querystring=require(_0xa18e('0xd'));var Papa=require('papaparse');var Redis=require(_0xa18e('0xe'));var authService=require(_0xa18e('0xf'));var qs=require(_0xa18e('0x10'));var as=require(_0xa18e('0x11'));var hardwareService=require(_0xa18e('0x12'));var logger=require(_0xa18e('0x13'))('api');var utils=require(_0xa18e('0x14'));var config=require(_0xa18e('0x15'));var licenseUtil=require(_0xa18e('0x16'));var db=require(_0xa18e('0x17'))['db'];config[_0xa18e('0x18')]=_['defaults'](config[_0xa18e('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa18e('0x18')]));require(_0xa18e('0x19'))['register'](socket);function respondWithStatusCode(_0x206f07,_0x2da8db){_0x2da8db=_0x2da8db||0xcc;return function(_0x59d13a){if(_0x59d13a){return _0x206f07['sendStatus'](_0x2da8db);}return _0x206f07['status'](_0x2da8db)[_0xa18e('0x1a')]();};}function respondWithResult(_0x48b024,_0x4d5b32){_0x4d5b32=_0x4d5b32||0xc8;return function(_0x60fc54){if(_0x60fc54){return _0x48b024[_0xa18e('0x1b')](_0x4d5b32)['json'](_0x60fc54);}};}function respondWithFilteredResult(_0x3f620d,_0x248cca){return function(_0x23a61f){if(_0x23a61f){var _0x5d253f=typeof _0x248cca[_0xa18e('0x1c')]===_0xa18e('0x1d')&&typeof _0x248cca['limit']===_0xa18e('0x1d');var _0x4aff22=_0x23a61f[_0xa18e('0x1e')];var _0x1d2cac=_0x5d253f?0x0:_0x248cca[_0xa18e('0x1c')];var _0x325adc=_0x5d253f?_0x23a61f['count']:_0x248cca['offset']+_0x248cca[_0xa18e('0x1f')];var _0x1c9569;if(_0x325adc>=_0x4aff22){_0x325adc=_0x4aff22;_0x1c9569=0xc8;}else{_0x1c9569=0xce;}_0x3f620d[_0xa18e('0x1b')](_0x1c9569);return _0x3f620d[_0xa18e('0x20')](_0xa18e('0x21'),_0x1d2cac+'-'+_0x325adc+'/'+_0x4aff22)['json'](_0x23a61f);}return null;};}function patchUpdates(_0x169b92){return function(_0x1f2a1a){try{jsonpatch[_0xa18e('0x22')](_0x1f2a1a,_0x169b92,!![]);}catch(_0x55c0fb){return BPromise[_0xa18e('0x23')](_0x55c0fb);}return _0x1f2a1a[_0xa18e('0x24')]();};}function saveUpdates(_0x35040a,_0x15fb54){return function(_0x3663c7){if(_0x3663c7){return _0x3663c7['update'](_0x35040a)[_0xa18e('0x25')](function(_0x2a64df){return _0x2a64df;});}return null;};}function removeEntity(_0x79796c,_0xab93dd){return function(_0x27180c){if(_0x27180c){return _0x27180c[_0xa18e('0x26')]()[_0xa18e('0x25')](function(){_0x79796c[_0xa18e('0x1b')](0xcc)[_0xa18e('0x1a')]();});}};}function handleEntityNotFound(_0x2a8234,_0xd77ca4){return function(_0x245fde){if(!_0x245fde){_0x2a8234[_0xa18e('0x27')](0x194);}return _0x245fde;};}function handleError(_0x360d37,_0x261907){_0x261907=_0x261907||0x1f4;return function(_0xabd760){logger[_0xa18e('0x28')](_0xabd760[_0xa18e('0x29')]);if(_0xabd760[_0xa18e('0x2a')]){delete _0xabd760['name'];}_0x360d37['status'](_0x261907)['send'](_0xabd760);};}exports[_0xa18e('0x2b')]=function(_0x3a5d3c,_0x1c4bb7){var _0x30a559={'raw':![],'where':{'id':_0x3a5d3c[_0xa18e('0x2c')]['id']}},_0x50e765={};_0x50e765[_0xa18e('0x2d')]=_[_0xa18e('0x2e')](db['DashboardItem'][_0xa18e('0x2f')]);_0x50e765[_0xa18e('0x30')]=_['keys'](_0x3a5d3c[_0xa18e('0x30')]);_0x50e765[_0xa18e('0x31')]=_[_0xa18e('0x32')](_0x50e765[_0xa18e('0x2d')],_0x50e765[_0xa18e('0x30')]);_0x30a559[_0xa18e('0x33')]=_[_0xa18e('0x32')](_0x50e765[_0xa18e('0x2d')],qs[_0xa18e('0x34')](_0x3a5d3c['query'][_0xa18e('0x34')]));_0x30a559[_0xa18e('0x33')]=_0x30a559[_0xa18e('0x33')]['length']?_0x30a559[_0xa18e('0x33')]:_0x50e765['model'];if(_0x3a5d3c[_0xa18e('0x30')][_0xa18e('0x35')]){_0x30a559[_0xa18e('0x36')]=[{'all':!![]}];}_0x30a559=_[_0xa18e('0x37')]({},_0x30a559,_0x3a5d3c['options']);return db['DashboardItem'][_0xa18e('0x38')](_0x30a559)['then'](handleEntityNotFound(_0x1c4bb7,null))[_0xa18e('0x25')](respondWithResult(_0x1c4bb7,null))[_0xa18e('0x39')](handleError(_0x1c4bb7,null));};exports[_0xa18e('0x26')]=function(_0x5ac867,_0x27af2f){return db[_0xa18e('0x3a')][_0xa18e('0x38')]({'where':{'id':_0x5ac867['params']['id']}})[_0xa18e('0x25')](handleEntityNotFound(_0x27af2f,null))[_0xa18e('0x25')](removeEntity(_0x27af2f,null))['catch'](handleError(_0x27af2f,null));};function widgetAttributes(_0x50215a){try{switch(_0x50215a[_0xa18e('0x3b')]){case _0xa18e('0x3c'):return[{'name':_0xa18e('0x3d'),'value':_0x50215a[_0xa18e('0x3d')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a[_0xa18e('0x3e')][0x0][_0xa18e('0x3f')]:undefined)||'https://'}];case _0xa18e('0x40'):return[{'name':'attrPath','value':_0x50215a[_0xa18e('0x41')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a[_0xa18e('0x3e')][0x0]['value']:undefined)||''}];case _0xa18e('0x42'):return[{'name':_0xa18e('0x43'),'value':_0x50215a[_0xa18e('0x43')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a[_0xa18e('0x3e')][0x0]['value']:undefined)||_0xa18e('0x44')},{'name':_0xa18e('0x45'),'value':_0x50215a[_0xa18e('0x45')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x1]?_0x50215a[_0xa18e('0x3e')][0x1][_0xa18e('0x3f')]:undefined)||_0xa18e('0x46')},{'name':_0xa18e('0x47'),'value':_0x50215a['attrFontSize']||(_0x50215a['attrs']&&_0x50215a[_0xa18e('0x3e')][0x2]?_0x50215a[_0xa18e('0x3e')][0x2][_0xa18e('0x3f')]:undefined)||0xc}];case _0xa18e('0x48'):return[{'name':_0xa18e('0x49'),'value':_0x50215a[_0xa18e('0x49')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a[_0xa18e('0x3e')][0x0][_0xa18e('0x3f')]:undefined)||_0xa18e('0x4a')},{'name':_0xa18e('0x4b'),'value':_0x50215a['attrVoiceQueues']||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x1]?_0x50215a[_0xa18e('0x3e')][0x1][_0xa18e('0x3f')]:undefined)||[]},{'name':_0xa18e('0x47'),'value':_0x50215a[_0xa18e('0x47')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x2]?_0x50215a[_0xa18e('0x3e')][0x2][_0xa18e('0x3f')]:undefined)||0x14}];case _0xa18e('0x4c'):case'pie-chart':return[{'name':'attrSerie1','value':_0x50215a['attrSerie1']||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a[_0xa18e('0x3e')][0x0][_0xa18e('0x3f')]:undefined)||'total'},{'name':_0xa18e('0x4d'),'value':_0x50215a['attrSerie2']||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x1]?_0x50215a['attrs'][0x1][_0xa18e('0x3f')]:undefined)||null},{'name':_0xa18e('0x4e'),'value':_0x50215a[_0xa18e('0x4e')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x2]?_0x50215a[_0xa18e('0x3e')][0x2][_0xa18e('0x3f')]:undefined)||null},{'name':_0xa18e('0x4b'),'value':_0x50215a[_0xa18e('0x4b')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x3]?_0x50215a[_0xa18e('0x3e')][0x3][_0xa18e('0x3f')]:undefined)||[]}];case _0xa18e('0x4f'):return[{'name':_0xa18e('0x50'),'type':_0x50215a[_0xa18e('0x51')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a['attrs'][0x0][_0xa18e('0x3b')]:undefined)||null,'value':_0x50215a[_0xa18e('0x50')]||(_0x50215a[_0xa18e('0x3e')]&&_0x50215a[_0xa18e('0x3e')][0x0]?_0x50215a[_0xa18e('0x3e')][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0x50215a[_0xa18e('0x52')]||(_0x50215a['attrs']&&_0x50215a[_0xa18e('0x3e')][0x1]?_0x50215a['attrs'][0x1][_0xa18e('0x3f')]:undefined)||0x0}];default:return[];}}catch(_0xa74877){logger[_0xa18e('0x28')](_0xa18e('0x53'),JSON['stringify'](_0xa74877));return[];}}exports[_0xa18e('0x54')]=function(_0x1c140b,_0x50ef74){if(_0x1c140b['body']){_0x1c140b['body'][_0xa18e('0x3e')]=widgetAttributes(_0x1c140b['body']);}return db[_0xa18e('0x3a')][_0xa18e('0x54')](_0x1c140b['body'],{})[_0xa18e('0x25')](respondWithResult(_0x50ef74,0xc9))['catch'](handleError(_0x50ef74,null));};exports['update']=function(_0x212d70,_0x541328){if(_0x212d70[_0xa18e('0x55')]['id']){delete _0x212d70[_0xa18e('0x55')]['id'];}_0x212d70['body'][_0xa18e('0x3e')]=widgetAttributes(_0x212d70[_0xa18e('0x55')]);return db[_0xa18e('0x3a')][_0xa18e('0x38')]({'where':{'id':_0x212d70[_0xa18e('0x2c')]['id']}})[_0xa18e('0x25')](handleEntityNotFound(_0x541328,null))[_0xa18e('0x25')](saveUpdates(_0x212d70[_0xa18e('0x55')],null))[_0xa18e('0x25')](respondWithResult(_0x541328,null))[_0xa18e('0x39')](handleError(_0x541328,null));};
\ No newline at end of file
index 79ee1bf..07ab2cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb26=['exports','events','../../mysqldb','DashboardItem','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x4360c4,_0x2f8209){var _0x3168c8=function(_0x309523){while(--_0x309523){_0x4360c4['push'](_0x4360c4['shift']());}};_0x3168c8(++_0x2f8209);}(_0xdb26,0xdd));var _0x6db2=function(_0x35009a,_0x4c647b){_0x35009a=_0x35009a-0x0;var _0x41ae8a=_0xdb26[_0x35009a];return _0x41ae8a;};'use strict';var EventEmitter=require(_0x6db2('0x0'));var DashboardItem=require(_0x6db2('0x1'))['db'][_0x6db2('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6db2('0x3'),'afterUpdate':_0x6db2('0x4'),'afterDestroy':_0x6db2('0x5')};function emitEvent(_0xebfc5f){return function(_0x4a0334,_0x4d300c,_0x5c9af1){DashboardItemEvents[_0x6db2('0x6')](_0xebfc5f+':'+_0x4a0334['id'],_0x4a0334);DashboardItemEvents[_0x6db2('0x6')](_0xebfc5f,_0x4a0334);_0x5c9af1(null);};}for(var e in events){if(events[_0x6db2('0x7')](e)){var event=events[e];DashboardItem[_0x6db2('0x8')](e,emitEvent(event));}}module[_0x6db2('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0xe982=['emit','events','../../mysqldb','setMaxListeners','update','remove'];(function(_0x3c642a,_0x35223b){var _0x9db7d6=function(_0x4d0d8d){while(--_0x4d0d8d){_0x3c642a['push'](_0x3c642a['shift']());}};_0x9db7d6(++_0x35223b);}(_0xe982,0x1b1));var _0x2e98=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xe982[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require(_0x2e98('0x0'));var DashboardItem=require(_0x2e98('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x2e98('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2e98('0x3'),'afterDestroy':_0x2e98('0x4')};function emitEvent(_0x147101){return function(_0xcc1b92,_0x1829d2,_0x201b91){DashboardItemEvents[_0x2e98('0x5')](_0x147101+':'+_0xcc1b92['id'],_0xcc1b92);DashboardItemEvents[_0x2e98('0x5')](_0x147101,_0xcc1b92);_0x201b91(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index 463c803..3f11b85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x023b=['./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x389aff,_0x16144e){var _0x33d2fc=function(_0x292543){while(--_0x292543){_0x389aff['push'](_0x389aff['shift']());}};_0x33d2fc(++_0x16144e);}(_0x023b,0x123));var _0xb023=function(_0xc55db2,_0x528b7a){_0xc55db2=_0xc55db2-0x0;var _0x337f27=_0x023b[_0xc55db2];return _0x337f27;};'use strict';var _=require(_0xb023('0x0'));var util=require('util');var logger=require(_0xb023('0x1'))('api');var moment=require(_0xb023('0x2'));var BPromise=require(_0xb023('0x3'));var rp=require(_0xb023('0x4'));var fs=require('fs');var path=require(_0xb023('0x5'));var rimraf=require(_0xb023('0x6'));var config=require(_0xb023('0x7'));var attributes=require(_0xb023('0x8'));module[_0xb023('0x9')]=function(_0x250af7,_0x489bc8){return _0x250af7[_0xb023('0xa')](_0xb023('0xb'),attributes,{'tableName':_0xb023('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb011=['exports','define','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./dashboardItem.attributes'];(function(_0xdce18a,_0x561e70){var _0x4bd2eb=function(_0x164097){while(--_0x164097){_0xdce18a['push'](_0xdce18a['shift']());}};_0x4bd2eb(++_0x561e70);}(_0xb011,0x19c));var _0x1b01=function(_0x22ea02,_0x2ccfd2){_0x22ea02=_0x22ea02-0x0;var _0x36224a=_0xb011[_0x22ea02];return _0x36224a;};'use strict';var _=require(_0x1b01('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1b01('0x1'));var moment=require(_0x1b01('0x2'));var BPromise=require(_0x1b01('0x3'));var rp=require(_0x1b01('0x4'));var fs=require('fs');var path=require(_0x1b01('0x5'));var rimraf=require('rimraf');var config=require(_0x1b01('0x6'));var attributes=require(_0x1b01('0x7'));module[_0x1b01('0x8')]=function(_0x54b415,_0x521a1b){return _0x54b415[_0x1b01('0x9')]('DashboardItem',attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ce58a4..1b30674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf29=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./dashboardItem.socket','register','then','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x13f6cd,_0x2d851b){var _0xdb30d=function(_0x3817f6){while(--_0x3817f6){_0x13f6cd['push'](_0x13f6cd['shift']());}};_0xdb30d(++_0x2d851b);}(_0xcf29,0x11c));var _0x9cf2=function(_0x2afb44,_0x249a57){_0x2afb44=_0x2afb44-0x0;var _0x15ccc2=_0xcf29[_0x2afb44];return _0x15ccc2;};'use strict';var _=require(_0x9cf2('0x0'));var util=require(_0x9cf2('0x1'));var moment=require(_0x9cf2('0x2'));var BPromise=require(_0x9cf2('0x3'));var rs=require(_0x9cf2('0x4'));var fs=require('fs');var Redis=require(_0x9cf2('0x5'));var db=require(_0x9cf2('0x6'))['db'];var utils=require(_0x9cf2('0x7'));var logger=require(_0x9cf2('0x8'))('rpc');var config=require(_0x9cf2('0x9'));var jayson=require(_0x9cf2('0xa'));var client=jayson[_0x9cf2('0xb')][_0x9cf2('0xc')]({'port':0x232a});config['redis']=_[_0x9cf2('0xd')](config[_0x9cf2('0xe')],{'host':_0x9cf2('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9cf2('0xe')]));require(_0x9cf2('0x10'))[_0x9cf2('0x11')](socket);function respondWithRpcPromise(_0x561e78,_0x3b6cf0,_0x251d42){return new BPromise(function(_0x3f0e2a,_0x198d19){return client['request'](_0x561e78,_0x251d42)[_0x9cf2('0x12')](function(_0x33106a){logger[_0x9cf2('0x13')]('DashboardItem,\x20%s,\x20%s',_0x3b6cf0,'request\x20sent');logger[_0x9cf2('0x14')](_0x9cf2('0x15'),_0x3b6cf0,_0x9cf2('0x16'),JSON[_0x9cf2('0x17')](_0x33106a));if(_0x33106a[_0x9cf2('0x18')]){if(_0x33106a[_0x9cf2('0x18')][_0x9cf2('0x19')]===0x1f4){logger[_0x9cf2('0x18')](_0x9cf2('0x1a'),_0x3b6cf0,_0x33106a[_0x9cf2('0x18')][_0x9cf2('0x1b')]);return _0x198d19(_0x33106a[_0x9cf2('0x18')][_0x9cf2('0x1b')]);}logger[_0x9cf2('0x18')](_0x9cf2('0x1a'),_0x3b6cf0,_0x33106a[_0x9cf2('0x18')][_0x9cf2('0x1b')]);return _0x3f0e2a(_0x33106a[_0x9cf2('0x18')][_0x9cf2('0x1b')]);}else{logger['info'](_0x9cf2('0x1a'),_0x3b6cf0,_0x9cf2('0x16'));_0x3f0e2a(_0x33106a[_0x9cf2('0x1c')][_0x9cf2('0x1b')]);}})['catch'](function(_0x260360){logger[_0x9cf2('0x18')]('DashboardItem,\x20%s,\x20%s',_0x3b6cf0,_0x260360);_0x198d19(_0x260360);});});}
\ No newline at end of file
+var _0x9733=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','./dashboardItem.socket','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','randomstring'];(function(_0x1fb932,_0xfa56d4){var _0x25ce50=function(_0x438690){while(--_0x438690){_0x1fb932['push'](_0x1fb932['shift']());}};_0x25ce50(++_0xfa56d4);}(_0x9733,0x1f1));var _0x3973=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9733[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3973('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3973('0x1'));var rs=require(_0x3973('0x2'));var fs=require('fs');var Redis=require(_0x3973('0x3'));var db=require(_0x3973('0x4'))['db'];var utils=require(_0x3973('0x5'));var logger=require(_0x3973('0x6'))('rpc');var config=require(_0x3973('0x7'));var jayson=require(_0x3973('0x8'));var client=jayson[_0x3973('0x9')][_0x3973('0xa')]({'port':0x232a});config[_0x3973('0xb')]=_[_0x3973('0xc')](config[_0x3973('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3973('0xb')]));require(_0x3973('0xd'))['register'](socket);function respondWithRpcPromise(_0x3e867c,_0x2a448e,_0x134269){return new BPromise(function(_0x511226,_0x11121f){return client['request'](_0x3e867c,_0x134269)[_0x3973('0xe')](function(_0x216099){logger[_0x3973('0xf')](_0x3973('0x10'),_0x2a448e,_0x3973('0x11'));logger['debug'](_0x3973('0x12'),_0x2a448e,_0x3973('0x11'),JSON[_0x3973('0x13')](_0x216099));if(_0x216099['error']){if(_0x216099[_0x3973('0x14')][_0x3973('0x15')]===0x1f4){logger[_0x3973('0x14')](_0x3973('0x10'),_0x2a448e,_0x216099[_0x3973('0x14')][_0x3973('0x16')]);return _0x11121f(_0x216099['error'][_0x3973('0x16')]);}logger[_0x3973('0x14')](_0x3973('0x10'),_0x2a448e,_0x216099[_0x3973('0x14')][_0x3973('0x16')]);return _0x511226(_0x216099[_0x3973('0x14')][_0x3973('0x16')]);}else{logger['info']('DashboardItem,\x20%s,\x20%s',_0x2a448e,_0x3973('0x11'));_0x511226(_0x216099[_0x3973('0x17')][_0x3973('0x16')]);}})[_0x3973('0x18')](function(_0x23dad5){logger[_0x3973('0x14')](_0x3973('0x10'),_0x2a448e,_0x23dad5);_0x11121f(_0x23dad5);});});}
\ No newline at end of file
index 3a5d2d5..0bcc9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0341=['update','emit','removeListener','register','length','dashboardItem:','./dashboardItem.events','remove'];(function(_0x3452a8,_0x4bfaa4){var _0x233814=function(_0x40b537){while(--_0x40b537){_0x3452a8['push'](_0x3452a8['shift']());}};_0x233814(++_0x4bfaa4);}(_0x0341,0x17e));var _0x1034=function(_0x367ebb,_0x45e18e){_0x367ebb=_0x367ebb-0x0;var _0x278f55=_0x0341[_0x367ebb];return _0x278f55;};'use strict';var DashboardItemEvents=require(_0x1034('0x0'));var events=['save',_0x1034('0x1'),_0x1034('0x2')];function createListener(_0x4ff5fc,_0x5082ef){return function(_0xf3dbe7){_0x5082ef[_0x1034('0x3')](_0x4ff5fc,_0xf3dbe7);};}function removeListener(_0x38fbc4,_0x1a6cde){return function(){DashboardItemEvents[_0x1034('0x4')](_0x38fbc4,_0x1a6cde);};}exports[_0x1034('0x5')]=function(_0x166324){for(var _0x424ce8=0x0,_0x21950d=events[_0x1034('0x6')];_0x424ce8<_0x21950d;_0x424ce8++){var _0x378a5e=events[_0x424ce8];var _0x15a120=createListener(_0x1034('0x7')+_0x378a5e,_0x166324);DashboardItemEvents['on'](_0x378a5e,_0x15a120);}};
\ No newline at end of file
+var _0xd0e8=['register','length','dashboardItem:','remove','update','removeListener'];(function(_0x5ecf90,_0x547f47){var _0x4d4257=function(_0x17d9b0){while(--_0x17d9b0){_0x5ecf90['push'](_0x5ecf90['shift']());}};_0x4d4257(++_0x547f47);}(_0xd0e8,0xa5));var _0x8d0e=function(_0x4e1c0b,_0x26f8b7){_0x4e1c0b=_0x4e1c0b-0x0;var _0x4326d9=_0xd0e8[_0x4e1c0b];return _0x4326d9;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=['save',_0x8d0e('0x0'),_0x8d0e('0x1')];function createListener(_0x54ec10,_0x3ac01c){return function(_0x16abab){_0x3ac01c['emit'](_0x54ec10,_0x16abab);};}function removeListener(_0x22990f,_0x591cfc){return function(){DashboardItemEvents[_0x8d0e('0x2')](_0x22990f,_0x591cfc);};}exports[_0x8d0e('0x3')]=function(_0x151634){for(var _0x4ade71=0x0,_0x1bcc5d=events[_0x8d0e('0x4')];_0x4ade71<_0x1bcc5d;_0x4ade71++){var _0x4a13df=events[_0x4ade71];var _0x2ad0d4=createListener(_0x8d0e('0x5')+_0x4a13df,_0x151634);DashboardItemEvents['on'](_0x4a13df,_0x2ad0d4);}};
\ No newline at end of file
index 98f0de9..bc552a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05a0=['../../config/environment','get','/:id','isAuthenticated','show','post','create','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x15e433,_0x510c02){var _0x1cdfb5=function(_0x2ee5fc){while(--_0x2ee5fc){_0x15e433['push'](_0x15e433['shift']());}};_0x1cdfb5(++_0x510c02);}(_0x05a0,0xb3));var _0x005a=function(_0x168248,_0x12d2fc){_0x168248=_0x168248-0x0;var _0x29ca74=_0x05a0[_0x168248];return _0x29ca74;};'use strict';var multer=require(_0x005a('0x0'));var util=require('util');var path=require(_0x005a('0x1'));var timeout=require(_0x005a('0x2'));var express=require(_0x005a('0x3'));var router=express[_0x005a('0x4')]();var fs_extra=require(_0x005a('0x5'));var auth=require(_0x005a('0x6'));var interaction=require(_0x005a('0x7'));var config=require(_0x005a('0x8'));var controller=require('./dashboardItem.controller');router[_0x005a('0x9')](_0x005a('0xa'),auth[_0x005a('0xb')](),controller[_0x005a('0xc')]);router[_0x005a('0xd')]('/',auth[_0x005a('0xb')](),controller[_0x005a('0xe')]);router['put'](_0x005a('0xa'),auth[_0x005a('0xb')](),controller['update']);router[_0x005a('0xf')](_0x005a('0xa'),auth[_0x005a('0xb')](),controller[_0x005a('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xd498=['fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','put','destroy','exports','multer','util','path','connect-timeout'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xd498,0x10c));var _0x8d49=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xd498[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0x8d49('0x0'));var util=require(_0x8d49('0x1'));var path=require(_0x8d49('0x2'));var timeout=require(_0x8d49('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8d49('0x4'));var auth=require(_0x8d49('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8d49('0x6'));var controller=require(_0x8d49('0x7'));router[_0x8d49('0x8')](_0x8d49('0x9'),auth[_0x8d49('0xa')](),controller[_0x8d49('0xb')]);router[_0x8d49('0xc')]('/',auth[_0x8d49('0xa')](),controller['create']);router[_0x8d49('0xd')](_0x8d49('0x9'),auth[_0x8d49('0xa')](),controller['update']);router['delete'](_0x8d49('0x9'),auth[_0x8d49('0xa')](),controller[_0x8d49('0xe')]);module[_0x8d49('0xf')]=router;
\ No newline at end of file
index 7ad627c..8bd643f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf9=['STRING','first','second','third','sequelize','exports'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x4cf9,0xd6));var _0x94cf=function(_0x29f860,_0x3e6f68){_0x29f860=_0x29f860-0x0;var _0x2d53e4=_0x4cf9[_0x29f860];return _0x2d53e4;};'use strict';var Sequelize=require(_0x94cf('0x0'));module[_0x94cf('0x1')]={'name':{'type':Sequelize[_0x94cf('0x2')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x94cf('0x3'),_0x94cf('0x4'),_0x94cf('0x5')),'allowNull':![],'defaultValue':_0x94cf('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xca67=['exports','STRING','first','third','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca67,0xfe));var _0x7ca6=function(_0x510c59,_0x899d24){_0x510c59=_0x510c59-0x0;var _0x5c5371=_0xca67[_0x510c59];return _0x5c5371;};'use strict';var Sequelize=require(_0x7ca6('0x0'));module[_0x7ca6('0x1')]={'name':{'type':Sequelize[_0x7ca6('0x2')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x7ca6('0x3'),'second',_0x7ca6('0x4')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x7ca6('0x2')]}};
\ No newline at end of file
index 597887d..9ff0aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc669=['save','update','then','destroy','get','stack','name','send','map','Disposition','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','catch','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','reject'];(function(_0x55e30a,_0x19cd86){var _0x574985=function(_0x3832b1){while(--_0x3832b1){_0x55e30a['push'](_0x55e30a['shift']());}};_0x574985(++_0x19cd86);}(_0xc669,0xcf));var _0x9c66=function(_0x2a33b0,_0x637620){_0x2a33b0=_0x2a33b0-0x0;var _0xd571e=_0xc669[_0x2a33b0];return _0xd571e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9c66('0x0'));var zipdir=require(_0x9c66('0x1'));var jsonpatch=require(_0x9c66('0x2'));var rp=require(_0x9c66('0x3'));var moment=require(_0x9c66('0x4'));var BPromise=require(_0x9c66('0x5'));var Mustache=require(_0x9c66('0x6'));var util=require(_0x9c66('0x7'));var path=require(_0x9c66('0x8'));var sox=require(_0x9c66('0x9'));var csv=require(_0x9c66('0xa'));var ejs=require(_0x9c66('0xb'));var fs=require('fs');var fs_extra=require(_0x9c66('0xc'));var _=require(_0x9c66('0xd'));var squel=require(_0x9c66('0xe'));var crypto=require(_0x9c66('0xf'));var jsforce=require(_0x9c66('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9c66('0x11'));var Papa=require(_0x9c66('0x12'));var Redis=require(_0x9c66('0x13'));var authService=require(_0x9c66('0x14'));var qs=require(_0x9c66('0x15'));var as=require(_0x9c66('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c66('0x17'))(_0x9c66('0x18'));var utils=require(_0x9c66('0x19'));var config=require(_0x9c66('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x9c66('0x1b'))['db'];function respondWithStatusCode(_0xa21ee7,_0x10a7a4){_0x10a7a4=_0x10a7a4||0xcc;return function(_0x27e144){if(_0x27e144){return _0xa21ee7[_0x9c66('0x1c')](_0x10a7a4);}return _0xa21ee7[_0x9c66('0x1d')](_0x10a7a4)['end']();};}function respondWithResult(_0xbb2619,_0x1791af){_0x1791af=_0x1791af||0xc8;return function(_0x5d6762){if(_0x5d6762){return _0xbb2619['status'](_0x1791af)[_0x9c66('0x1e')](_0x5d6762);}};}function respondWithFilteredResult(_0x199d37,_0x46c2e7){return function(_0x53437e){if(_0x53437e){var _0x2253f2=typeof _0x46c2e7[_0x9c66('0x1f')]===_0x9c66('0x20')&&typeof _0x46c2e7[_0x9c66('0x21')]===_0x9c66('0x20');var _0x18015d=_0x53437e['count'];var _0x562956=_0x2253f2?0x0:_0x46c2e7[_0x9c66('0x1f')];var _0x31e349=_0x2253f2?_0x53437e[_0x9c66('0x22')]:_0x46c2e7[_0x9c66('0x1f')]+_0x46c2e7[_0x9c66('0x21')];var _0x1ca9e1;if(_0x31e349>=_0x18015d){_0x31e349=_0x18015d;_0x1ca9e1=0xc8;}else{_0x1ca9e1=0xce;}_0x199d37[_0x9c66('0x1d')](_0x1ca9e1);return _0x199d37['set']('Content-Range',_0x562956+'-'+_0x31e349+'/'+_0x18015d)[_0x9c66('0x1e')](_0x53437e);}return null;};}function patchUpdates(_0x5193b0){return function(_0x25df23){try{jsonpatch['apply'](_0x25df23,_0x5193b0,!![]);}catch(_0x14d955){return BPromise[_0x9c66('0x23')](_0x14d955);}return _0x25df23[_0x9c66('0x24')]();};}function saveUpdates(_0x330150,_0x175e90){return function(_0x589591){if(_0x589591){return _0x589591[_0x9c66('0x25')](_0x330150)[_0x9c66('0x26')](function(_0x465e59){return _0x465e59;});}return null;};}function removeEntity(_0x12485e,_0x42b215){return function(_0x454504){if(_0x454504){return _0x454504[_0x9c66('0x27')]()[_0x9c66('0x26')](function(){var _0xbd6ab1=_0x454504[_0x9c66('0x28')]({'plain':!![]});var _0x3a43f6='Dispositions';return db['UserProfileResource'][_0x9c66('0x27')]({'where':{'type':_0x3a43f6,'resourceId':_0xbd6ab1['id']}})[_0x9c66('0x26')](function(){return _0x454504;});})[_0x9c66('0x26')](function(){_0x12485e[_0x9c66('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x932f8f,_0x1fdf48){return function(_0x59ea8d){if(!_0x59ea8d){_0x932f8f[_0x9c66('0x1c')](0x194);}return _0x59ea8d;};}function handleError(_0x488195,_0x3fa717){_0x3fa717=_0x3fa717||0x1f4;return function(_0x1a4df5){logger['error'](_0x1a4df5[_0x9c66('0x29')]);if(_0x1a4df5[_0x9c66('0x2a')]){delete _0x1a4df5['name'];}_0x488195['status'](_0x3fa717)[_0x9c66('0x2b')](_0x1a4df5);};}exports['index']=function(_0x1fce66,_0x154b68){var _0x1285a4={},_0xa83b1a={},_0x53919b={'count':0x0,'rows':[]};var _0x2f56d3=_[_0x9c66('0x2c')](db[_0x9c66('0x2d')]['rawAttributes'],function(_0x5cf7d2){return{'name':_0x5cf7d2[_0x9c66('0x2e')],'type':_0x5cf7d2['type']['key']};});_0xa83b1a[_0x9c66('0x2f')]=_[_0x9c66('0x2c')](_0x2f56d3,_0x9c66('0x2a'));_0xa83b1a[_0x9c66('0x30')]=_[_0x9c66('0x31')](_0x1fce66[_0x9c66('0x30')]);_0xa83b1a['filters']=_[_0x9c66('0x32')](_0xa83b1a['model'],_0xa83b1a[_0x9c66('0x30')]);_0x1285a4[_0x9c66('0x33')]=_['intersection'](_0xa83b1a['model'],qs['fields'](_0x1fce66[_0x9c66('0x30')][_0x9c66('0x34')]));_0x1285a4[_0x9c66('0x33')]=_0x1285a4[_0x9c66('0x33')][_0x9c66('0x35')]?_0x1285a4[_0x9c66('0x33')]:_0xa83b1a[_0x9c66('0x2f')];if(!_0x1fce66[_0x9c66('0x30')][_0x9c66('0x36')]('nolimit')){_0x1285a4[_0x9c66('0x21')]=qs['limit'](_0x1fce66['query'][_0x9c66('0x21')]);_0x1285a4[_0x9c66('0x1f')]=qs[_0x9c66('0x1f')](_0x1fce66['query'][_0x9c66('0x1f')]);}_0x1285a4[_0x9c66('0x37')]=qs[_0x9c66('0x38')](_0x1fce66[_0x9c66('0x30')][_0x9c66('0x38')]);_0x1285a4['where']=qs[_0x9c66('0x39')](_[_0x9c66('0x3a')](_0x1fce66[_0x9c66('0x30')],_0xa83b1a[_0x9c66('0x39')]),_0x2f56d3);if(_0x1fce66[_0x9c66('0x30')][_0x9c66('0x3b')]){_0x1285a4[_0x9c66('0x3c')]=_[_0x9c66('0x3d')](_0x1285a4[_0x9c66('0x3c')],{'$or':_[_0x9c66('0x2c')](_0x2f56d3,function(_0x4688bf){if(_0x4688bf[_0x9c66('0x3e')]!==_0x9c66('0x3f')){var _0xfd700c={};_0xfd700c[_0x4688bf[_0x9c66('0x2a')]]={'$like':'%'+_0x1fce66[_0x9c66('0x30')][_0x9c66('0x3b')]+'%'};return _0xfd700c;}})});}_0x1285a4=_[_0x9c66('0x3d')]({},_0x1285a4,_0x1fce66['options']);var _0x7b78b2={'where':_0x1285a4['where']};return db[_0x9c66('0x2d')][_0x9c66('0x22')](_0x7b78b2)[_0x9c66('0x26')](function(_0x5ef82b){_0x53919b[_0x9c66('0x22')]=_0x5ef82b;if(_0x1fce66[_0x9c66('0x30')][_0x9c66('0x40')]){_0x1285a4[_0x9c66('0x41')]=[{'all':!![]}];}return db[_0x9c66('0x2d')][_0x9c66('0x42')](_0x1285a4);})[_0x9c66('0x26')](function(_0x1cce8f){_0x53919b['rows']=_0x1cce8f;return _0x53919b;})[_0x9c66('0x26')](respondWithFilteredResult(_0x154b68,_0x1285a4))[_0x9c66('0x43')](handleError(_0x154b68,null));};exports['show']=function(_0x3feefa,_0xd6ee10){var _0x233368={'raw':!![],'where':{'id':_0x3feefa['params']['id']}},_0xd86d3={};_0xd86d3[_0x9c66('0x2f')]=_['keys'](db[_0x9c66('0x2d')]['rawAttributes']);_0xd86d3['query']=_[_0x9c66('0x31')](_0x3feefa[_0x9c66('0x30')]);_0xd86d3[_0x9c66('0x39')]=_[_0x9c66('0x32')](_0xd86d3['model'],_0xd86d3['query']);_0x233368[_0x9c66('0x33')]=_['intersection'](_0xd86d3[_0x9c66('0x2f')],qs[_0x9c66('0x34')](_0x3feefa['query'][_0x9c66('0x34')]));_0x233368[_0x9c66('0x33')]=_0x233368[_0x9c66('0x33')][_0x9c66('0x35')]?_0x233368['attributes']:_0xd86d3[_0x9c66('0x2f')];if(_0x3feefa[_0x9c66('0x30')][_0x9c66('0x40')]){_0x233368[_0x9c66('0x41')]=[{'all':!![]}];}_0x233368=_[_0x9c66('0x3d')]({},_0x233368,_0x3feefa[_0x9c66('0x44')]);return db[_0x9c66('0x2d')]['find'](_0x233368)[_0x9c66('0x26')](handleEntityNotFound(_0xd6ee10,null))['then'](respondWithResult(_0xd6ee10,null))[_0x9c66('0x43')](handleError(_0xd6ee10,null));};exports[_0x9c66('0x45')]=function(_0x35fe78,_0x1f772e){return db['Disposition'][_0x9c66('0x45')](_0x35fe78[_0x9c66('0x46')],{})['then'](function(_0x2efe08){var _0x4b31d9=_0x35fe78[_0x9c66('0x47')]['get']({'plain':!![]});if(!_0x4b31d9)throw new Error(_0x9c66('0x48'));if(_0x4b31d9[_0x9c66('0x49')]===_0x9c66('0x47')){var _0x46a083=_0x2efe08[_0x9c66('0x28')]({'plain':!![]});var _0x5f034e='Dispositions';return db[_0x9c66('0x4a')][_0x9c66('0x4b')]({'where':{'name':_0x5f034e,'userProfileId':_0x4b31d9[_0x9c66('0x4c')]},'raw':!![]})[_0x9c66('0x26')](function(_0x3a3c58){if(_0x3a3c58&&_0x3a3c58[_0x9c66('0x4d')]===0x0){return db[_0x9c66('0x4e')]['create']({'name':_0x46a083[_0x9c66('0x2a')],'resourceId':_0x46a083['id'],'type':_0x3a3c58['name'],'sectionId':_0x3a3c58['id']},{})[_0x9c66('0x26')](function(){return _0x2efe08;});}else{return _0x2efe08;}})['catch'](function(_0x2f5278){logger['error'](_0x9c66('0x4f'),_0x2f5278);throw _0x2f5278;});}return _0x2efe08;})['then'](respondWithResult(_0x1f772e,0xc9))[_0x9c66('0x43')](handleError(_0x1f772e,null));};exports[_0x9c66('0x25')]=function(_0x179bb9,_0x387c02){if(_0x179bb9[_0x9c66('0x46')]['id']){delete _0x179bb9[_0x9c66('0x46')]['id'];}return db[_0x9c66('0x2d')][_0x9c66('0x4b')]({'where':{'id':_0x179bb9['params']['id']}})[_0x9c66('0x26')](handleEntityNotFound(_0x387c02,null))[_0x9c66('0x26')](saveUpdates(_0x179bb9['body'],null))[_0x9c66('0x26')](respondWithResult(_0x387c02,null))['catch'](handleError(_0x387c02,null));};exports['destroy']=function(_0x428da8,_0x76a82f){return db['Disposition']['find']({'where':{'id':_0x428da8[_0x9c66('0x50')]['id']}})[_0x9c66('0x26')](handleEntityNotFound(_0x76a82f,null))[_0x9c66('0x26')](removeEntity(_0x76a82f,null))['catch'](handleError(_0x76a82f,null));};
\ No newline at end of file
+var _0xd76a=['order','sort','where','filters','filter','type','VIRTUAL','merge','options','Disposition','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','end','json','undefined','count','offset','set','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','name','send','index','map','key','model','query','attributes','intersection','fields','length','hasOwnProperty','limit'];(function(_0x39e84d,_0x11931d){var _0x1991bc=function(_0xc81e32){while(--_0xc81e32){_0x39e84d['push'](_0x39e84d['shift']());}};_0x1991bc(++_0x11931d);}(_0xd76a,0x105));var _0xad76=function(_0x242bab,_0x3adf09){_0x242bab=_0x242bab-0x0;var _0xe278d9=_0xd76a[_0x242bab];return _0xe278d9;};'use strict';var emlformat=require(_0xad76('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xad76('0x1'));var jsonpatch=require(_0xad76('0x2'));var rp=require(_0xad76('0x3'));var moment=require(_0xad76('0x4'));var BPromise=require(_0xad76('0x5'));var Mustache=require('mustache');var util=require(_0xad76('0x6'));var path=require(_0xad76('0x7'));var sox=require(_0xad76('0x8'));var csv=require(_0xad76('0x9'));var ejs=require(_0xad76('0xa'));var fs=require('fs');var fs_extra=require(_0xad76('0xb'));var _=require(_0xad76('0xc'));var squel=require(_0xad76('0xd'));var crypto=require(_0xad76('0xe'));var jsforce=require(_0xad76('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xad76('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xad76('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xad76('0x12'));var hardwareService=require(_0xad76('0x13'));var logger=require('../../config/logger')(_0xad76('0x14'));var utils=require('../../config/utils');var config=require(_0xad76('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xad76('0x16'))['db'];function respondWithStatusCode(_0x5179b5,_0x28b200){_0x28b200=_0x28b200||0xcc;return function(_0x1e699){if(_0x1e699){return _0x5179b5['sendStatus'](_0x28b200);}return _0x5179b5[_0xad76('0x17')](_0x28b200)[_0xad76('0x18')]();};}function respondWithResult(_0x5a7b73,_0x12b9c8){_0x12b9c8=_0x12b9c8||0xc8;return function(_0x3b9f5a){if(_0x3b9f5a){return _0x5a7b73['status'](_0x12b9c8)[_0xad76('0x19')](_0x3b9f5a);}};}function respondWithFilteredResult(_0x57f213,_0x3f6795){return function(_0x451ceb){if(_0x451ceb){var _0x201acb=typeof _0x3f6795['offset']===_0xad76('0x1a')&&typeof _0x3f6795['limit']==='undefined';var _0x4fe63c=_0x451ceb[_0xad76('0x1b')];var _0x1368aa=_0x201acb?0x0:_0x3f6795[_0xad76('0x1c')];var _0x41ffa8=_0x201acb?_0x451ceb['count']:_0x3f6795[_0xad76('0x1c')]+_0x3f6795['limit'];var _0x120ca8;if(_0x41ffa8>=_0x4fe63c){_0x41ffa8=_0x4fe63c;_0x120ca8=0xc8;}else{_0x120ca8=0xce;}_0x57f213[_0xad76('0x17')](_0x120ca8);return _0x57f213[_0xad76('0x1d')](_0xad76('0x1e'),_0x1368aa+'-'+_0x41ffa8+'/'+_0x4fe63c)[_0xad76('0x19')](_0x451ceb);}return null;};}function patchUpdates(_0x3e5c80){return function(_0x5ac0d7){try{jsonpatch[_0xad76('0x1f')](_0x5ac0d7,_0x3e5c80,!![]);}catch(_0x5b4b6f){return BPromise['reject'](_0x5b4b6f);}return _0x5ac0d7[_0xad76('0x20')]();};}function saveUpdates(_0x4b9c75,_0x1f3a9d){return function(_0x1b1de8){if(_0x1b1de8){return _0x1b1de8[_0xad76('0x21')](_0x4b9c75)[_0xad76('0x22')](function(_0x14bf5c){return _0x14bf5c;});}return null;};}function removeEntity(_0x4e8b5c,_0x3696cf){return function(_0x17acf3){if(_0x17acf3){return _0x17acf3[_0xad76('0x23')]()[_0xad76('0x22')](function(){var _0x35b680=_0x17acf3[_0xad76('0x24')]({'plain':!![]});var _0x3af2cd='Dispositions';return db[_0xad76('0x25')]['destroy']({'where':{'type':_0x3af2cd,'resourceId':_0x35b680['id']}})[_0xad76('0x22')](function(){return _0x17acf3;});})[_0xad76('0x22')](function(){_0x4e8b5c['status'](0xcc)[_0xad76('0x18')]();});}};}function handleEntityNotFound(_0x97855f,_0x35febb){return function(_0x373a64){if(!_0x373a64){_0x97855f['sendStatus'](0x194);}return _0x373a64;};}function handleError(_0x185ad0,_0xfe51f7){_0xfe51f7=_0xfe51f7||0x1f4;return function(_0xf61132){logger['error'](_0xf61132['stack']);if(_0xf61132[_0xad76('0x26')]){delete _0xf61132['name'];}_0x185ad0[_0xad76('0x17')](_0xfe51f7)[_0xad76('0x27')](_0xf61132);};}exports[_0xad76('0x28')]=function(_0x261917,_0x459af3){var _0x168fa7={},_0x566264={},_0x17211b={'count':0x0,'rows':[]};var _0x29b5a0=_[_0xad76('0x29')](db['Disposition']['rawAttributes'],function(_0x520668){return{'name':_0x520668['fieldName'],'type':_0x520668['type'][_0xad76('0x2a')]};});_0x566264[_0xad76('0x2b')]=_[_0xad76('0x29')](_0x29b5a0,_0xad76('0x26'));_0x566264[_0xad76('0x2c')]=_['keys'](_0x261917[_0xad76('0x2c')]);_0x566264['filters']=_['intersection'](_0x566264['model'],_0x566264[_0xad76('0x2c')]);_0x168fa7[_0xad76('0x2d')]=_[_0xad76('0x2e')](_0x566264['model'],qs[_0xad76('0x2f')](_0x261917[_0xad76('0x2c')][_0xad76('0x2f')]));_0x168fa7[_0xad76('0x2d')]=_0x168fa7[_0xad76('0x2d')][_0xad76('0x30')]?_0x168fa7[_0xad76('0x2d')]:_0x566264['model'];if(!_0x261917[_0xad76('0x2c')][_0xad76('0x31')]('nolimit')){_0x168fa7[_0xad76('0x32')]=qs[_0xad76('0x32')](_0x261917['query'][_0xad76('0x32')]);_0x168fa7[_0xad76('0x1c')]=qs['offset'](_0x261917[_0xad76('0x2c')][_0xad76('0x1c')]);}_0x168fa7[_0xad76('0x33')]=qs[_0xad76('0x34')](_0x261917[_0xad76('0x2c')][_0xad76('0x34')]);_0x168fa7[_0xad76('0x35')]=qs[_0xad76('0x36')](_['pick'](_0x261917['query'],_0x566264[_0xad76('0x36')]),_0x29b5a0);if(_0x261917[_0xad76('0x2c')][_0xad76('0x37')]){_0x168fa7[_0xad76('0x35')]=_['merge'](_0x168fa7[_0xad76('0x35')],{'$or':_[_0xad76('0x29')](_0x29b5a0,function(_0xc237f7){if(_0xc237f7[_0xad76('0x38')]!==_0xad76('0x39')){var _0x50342d={};_0x50342d[_0xc237f7['name']]={'$like':'%'+_0x261917[_0xad76('0x2c')]['filter']+'%'};return _0x50342d;}})});}_0x168fa7=_[_0xad76('0x3a')]({},_0x168fa7,_0x261917[_0xad76('0x3b')]);var _0x2adeff={'where':_0x168fa7[_0xad76('0x35')]};return db[_0xad76('0x3c')][_0xad76('0x1b')](_0x2adeff)[_0xad76('0x22')](function(_0x5aff44){_0x17211b[_0xad76('0x1b')]=_0x5aff44;if(_0x261917[_0xad76('0x2c')][_0xad76('0x3d')]){_0x168fa7[_0xad76('0x3e')]=[{'all':!![]}];}return db['Disposition'][_0xad76('0x3f')](_0x168fa7);})[_0xad76('0x22')](function(_0x46a664){_0x17211b[_0xad76('0x40')]=_0x46a664;return _0x17211b;})[_0xad76('0x22')](respondWithFilteredResult(_0x459af3,_0x168fa7))[_0xad76('0x41')](handleError(_0x459af3,null));};exports[_0xad76('0x42')]=function(_0x1a8f8a,_0x1e744f){var _0x5ca3e9={'raw':!![],'where':{'id':_0x1a8f8a['params']['id']}},_0x10601b={};_0x10601b[_0xad76('0x2b')]=_[_0xad76('0x43')](db[_0xad76('0x3c')][_0xad76('0x44')]);_0x10601b[_0xad76('0x2c')]=_['keys'](_0x1a8f8a['query']);_0x10601b[_0xad76('0x36')]=_['intersection'](_0x10601b['model'],_0x10601b[_0xad76('0x2c')]);_0x5ca3e9[_0xad76('0x2d')]=_['intersection'](_0x10601b[_0xad76('0x2b')],qs['fields'](_0x1a8f8a[_0xad76('0x2c')][_0xad76('0x2f')]));_0x5ca3e9['attributes']=_0x5ca3e9[_0xad76('0x2d')][_0xad76('0x30')]?_0x5ca3e9[_0xad76('0x2d')]:_0x10601b['model'];if(_0x1a8f8a[_0xad76('0x2c')][_0xad76('0x3d')]){_0x5ca3e9['include']=[{'all':!![]}];}_0x5ca3e9=_[_0xad76('0x3a')]({},_0x5ca3e9,_0x1a8f8a[_0xad76('0x3b')]);return db[_0xad76('0x3c')][_0xad76('0x45')](_0x5ca3e9)[_0xad76('0x22')](handleEntityNotFound(_0x1e744f,null))['then'](respondWithResult(_0x1e744f,null))['catch'](handleError(_0x1e744f,null));};exports[_0xad76('0x46')]=function(_0x265764,_0x519836){return db['Disposition'][_0xad76('0x46')](_0x265764[_0xad76('0x47')],{})[_0xad76('0x22')](function(_0x2570a9){var _0x52f418=_0x265764['user']['get']({'plain':!![]});if(!_0x52f418)throw new Error(_0xad76('0x48'));if(_0x52f418['role']===_0xad76('0x49')){var _0x543f00=_0x2570a9[_0xad76('0x24')]({'plain':!![]});var _0x40ef9d='Dispositions';return db[_0xad76('0x4a')][_0xad76('0x45')]({'where':{'name':_0x40ef9d,'userProfileId':_0x52f418['userProfileId']},'raw':!![]})[_0xad76('0x22')](function(_0x45cb09){if(_0x45cb09&&_0x45cb09['autoAssociation']===0x0){return db[_0xad76('0x25')][_0xad76('0x46')]({'name':_0x543f00[_0xad76('0x26')],'resourceId':_0x543f00['id'],'type':_0x45cb09[_0xad76('0x26')],'sectionId':_0x45cb09['id']},{})[_0xad76('0x22')](function(){return _0x2570a9;});}else{return _0x2570a9;}})[_0xad76('0x41')](function(_0x160e24){logger[_0xad76('0x4b')](_0xad76('0x4c'),_0x160e24);throw _0x160e24;});}return _0x2570a9;})[_0xad76('0x22')](respondWithResult(_0x519836,0xc9))[_0xad76('0x41')](handleError(_0x519836,null));};exports['update']=function(_0x1a7579,_0x41e4c3){if(_0x1a7579[_0xad76('0x47')]['id']){delete _0x1a7579[_0xad76('0x47')]['id'];}return db[_0xad76('0x3c')]['find']({'where':{'id':_0x1a7579['params']['id']}})[_0xad76('0x22')](handleEntityNotFound(_0x41e4c3,null))[_0xad76('0x22')](saveUpdates(_0x1a7579[_0xad76('0x47')],null))[_0xad76('0x22')](respondWithResult(_0x41e4c3,null))[_0xad76('0x41')](handleError(_0x41e4c3,null));};exports[_0xad76('0x23')]=function(_0xb8937e,_0x28c176){return db[_0xad76('0x3c')][_0xad76('0x45')]({'where':{'id':_0xb8937e[_0xad76('0x4d')]['id']}})[_0xad76('0x22')](handleEntityNotFound(_0x28c176,null))[_0xad76('0x22')](removeEntity(_0x28c176,null))[_0xad76('0x41')](handleError(_0x28c176,null));};
\ No newline at end of file
index 1a1ebce..d9bfcc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1a=['bluebird','request-promise','path','../../config/environment','exports','define','name_voice','ListId','name_chat','name','ChatWebsiteId','MailAccountId','name_sms','name_fax','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','util','../../config/logger','api','moment'];(function(_0x401717,_0x5b21cd){var _0xd0e4a5=function(_0x262b7c){while(--_0x262b7c){_0x401717['push'](_0x401717['shift']());}};_0xd0e4a5(++_0x5b21cd);}(_0x2b1a,0x172));var _0xa2b1=function(_0x10723b,_0x526c13){_0x10723b=_0x10723b-0x0;var _0x25b5e2=_0x2b1a[_0x10723b];return _0x25b5e2;};'use strict';var _=require('lodash');var util=require(_0xa2b1('0x0'));var logger=require(_0xa2b1('0x1'))(_0xa2b1('0x2'));var moment=require(_0xa2b1('0x3'));var BPromise=require(_0xa2b1('0x4'));var rp=require(_0xa2b1('0x5'));var fs=require('fs');var path=require(_0xa2b1('0x6'));var rimraf=require('rimraf');var config=require(_0xa2b1('0x7'));var attributes=require('./disposition.attributes');module[_0xa2b1('0x8')]=function(_0xf7be9,_0x3054d0){return _0xf7be9[_0xa2b1('0x9')]('Disposition',attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xa2b1('0xa'),'fields':['name',_0xa2b1('0xb')]},{'unique':!![],'name':_0xa2b1('0xc'),'fields':[_0xa2b1('0xd'),_0xa2b1('0xe')]},{'unique':!![],'name':'name_mail','fields':[_0xa2b1('0xd'),_0xa2b1('0xf')]},{'unique':!![],'name':_0xa2b1('0x10'),'fields':[_0xa2b1('0xd'),'SmsAccountId']},{'unique':!![],'name':_0xa2b1('0x11'),'fields':[_0xa2b1('0xd'),_0xa2b1('0x12')]},{'unique':!![],'name':_0xa2b1('0x13'),'fields':[_0xa2b1('0xd'),'OpenchannelAccountId']},{'unique':!![],'name':_0xa2b1('0x14'),'fields':['name',_0xa2b1('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1573=['name','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name_voice','ListId','name_mail'];(function(_0x16243f,_0x3176cc){var _0x5d842f=function(_0x39230c){while(--_0x39230c){_0x16243f['push'](_0x16243f['shift']());}};_0x5d842f(++_0x3176cc);}(_0x1573,0xb7));var _0x3157=function(_0x3cafb8,_0x32860e){_0x3cafb8=_0x3cafb8-0x0;var _0x4b7f85=_0x1573[_0x3cafb8];return _0x4b7f85;};'use strict';var _=require(_0x3157('0x0'));var util=require(_0x3157('0x1'));var logger=require(_0x3157('0x2'))(_0x3157('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3157('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3157('0x5'));var config=require(_0x3157('0x6'));var attributes=require(_0x3157('0x7'));module[_0x3157('0x8')]=function(_0xd8b72e,_0x5bf416){return _0xd8b72e[_0x3157('0x9')](_0x3157('0xa'),attributes,{'tableName':_0x3157('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x3157('0xc'),'fields':['name',_0x3157('0xd')]},{'unique':!![],'name':'name_chat','fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0x3157('0xe'),'fields':[_0x3157('0xf'),_0x3157('0x10')]},{'unique':!![],'name':_0x3157('0x11'),'fields':[_0x3157('0xf'),_0x3157('0x12')]},{'unique':!![],'name':_0x3157('0x13'),'fields':[_0x3157('0xf'),_0x3157('0x14')]},{'unique':!![],'name':_0x3157('0x15'),'fields':[_0x3157('0xf'),'OpenchannelAccountId']},{'unique':!![],'name':'name_whatsapp','fields':[_0x3157('0xf'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index fb9facf..755c880 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(_0x4e8c7b,_0x456d79){var _0x44808a=function(_0x36c4e9){while(--_0x36c4e9){_0x4e8c7b['push'](_0x4e8c7b['shift']());}};_0x44808a(++_0x456d79);}(_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 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(_0x3afa19,_0x1f55cc){var _0x473fdb=function(_0x5eb5df){while(--_0x5eb5df){_0x3afa19['push'](_0x3afa19['shift']());}};_0x473fdb(++_0x1f55cc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 1f44048..82efed5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91f=['./disposition.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4df6df,_0x4ad3f5){var _0x5a9364=function(_0xe764d0){while(--_0xe764d0){_0x4df6df['push'](_0x4df6df['shift']());}};_0x5a9364(++_0x4ad3f5);}(_0xb91f,0x1ee));var _0xfb91=function(_0xc6ccd9,_0x46288b){_0xc6ccd9=_0xc6ccd9-0x0;var _0x24635a=_0xb91f[_0xc6ccd9];return _0x24635a;};'use strict';var multer=require(_0xfb91('0x0'));var util=require(_0xfb91('0x1'));var path=require(_0xfb91('0x2'));var timeout=require(_0xfb91('0x3'));var express=require(_0xfb91('0x4'));var router=express[_0xfb91('0x5')]();var fs_extra=require(_0xfb91('0x6'));var auth=require(_0xfb91('0x7'));var interaction=require(_0xfb91('0x8'));var config=require(_0xfb91('0x9'));var controller=require(_0xfb91('0xa'));router[_0xfb91('0xb')]('/',auth[_0xfb91('0xc')](),controller[_0xfb91('0xd')]);router[_0xfb91('0xb')](_0xfb91('0xe'),auth[_0xfb91('0xc')](),controller['show']);router[_0xfb91('0xf')]('/',auth['isAuthenticated'](),controller[_0xfb91('0x10')]);router[_0xfb91('0x11')](_0xfb91('0xe'),auth[_0xfb91('0xc')](),controller[_0xfb91('0x12')]);router[_0xfb91('0x13')](_0xfb91('0xe'),auth[_0xfb91('0xc')](),controller[_0xfb91('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x9d40=['show','isAuthenticated','create','put','delete','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','index','/:id'];(function(_0x49071f,_0x4aa61c){var _0x1272a4=function(_0x224c12){while(--_0x224c12){_0x49071f['push'](_0x49071f['shift']());}};_0x1272a4(++_0x4aa61c);}(_0x9d40,0x109));var _0x09d4=function(_0x7d2f0f,_0x3bf630){_0x7d2f0f=_0x7d2f0f-0x0;var _0x266d1b=_0x9d40[_0x7d2f0f];return _0x266d1b;};'use strict';var multer=require('multer');var util=require(_0x09d4('0x0'));var path=require('path');var timeout=require(_0x09d4('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x09d4('0x2'));var interaction=require(_0x09d4('0x3'));var config=require(_0x09d4('0x4'));var controller=require(_0x09d4('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x09d4('0x6')]);router['get'](_0x09d4('0x7'),auth['isAuthenticated'](),controller[_0x09d4('0x8')]);router['post']('/',auth[_0x09d4('0x9')](),controller[_0x09d4('0xa')]);router[_0x09d4('0xb')](_0x09d4('0x7'),auth[_0x09d4('0x9')](),controller['update']);router[_0x09d4('0xc')](_0x09d4('0x7'),auth[_0x09d4('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4ee9d8b..166c0ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d2=['localstationid','2400','7200','9600','12000','14400','4800','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x08d2,0x182));var _0x208d=function(_0x537712,_0x2eab92){_0x537712=_0x537712-0x0;var _0x5a33a5=_0x08d2[_0x537712];return _0x5a33a5;};'use strict';var Sequelize=require(_0x208d('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x208d('0x1')]},'ecm':{'type':Sequelize[_0x208d('0x2')](_0x208d('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x208d('0x1')],'defaultValue':_0x208d('0x4')},'localstationid':{'type':Sequelize['STRING'],'unique':_0x208d('0x5')},'minrate':{'type':Sequelize[_0x208d('0x2')](_0x208d('0x6'),'4800',_0x208d('0x7'),_0x208d('0x8'),_0x208d('0x9'),_0x208d('0xa')),'defaultValue':_0x208d('0xb')},'maxrate':{'type':Sequelize[_0x208d('0x2')](_0x208d('0x6'),_0x208d('0xb'),'7200',_0x208d('0x8'),'12000',_0x208d('0xa')),'defaultValue':'14400'},'modem':{'type':Sequelize['STRING'],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x208d('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x208d('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x208d('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x208d('0x2')](_0x208d('0xd'),_0x208d('0xe'),_0x208d('0xf'),_0x208d('0x10')),'defaultValue':_0x208d('0xd')},'key':{'type':Sequelize[_0x208d('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x208d('0x11')],'defaultValue':function(){return _0x208d('0x12');}},'notificationSound':{'type':Sequelize[_0x208d('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x208d('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x208d('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x208d('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x208d('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x208d('0x14')},'mandatoryDisposition':{'type':Sequelize[_0x208d('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1125bb){if(!_0x1125bb)this[_0x208d('0x15')]('mandatoryDispositionPauseId',null);this[_0x208d('0x15')](_0x208d('0x16'),_0x1125bb);}}};
\ No newline at end of file
+var _0xd00a=['ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','14400','v17,v27,v29','INTEGER','SIP','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING'];(function(_0x370802,_0x953331){var _0x15031a=function(_0x48c2fd){while(--_0x48c2fd){_0x370802['push'](_0x370802['shift']());}};_0x15031a(++_0x953331);}(_0xd00a,0x1dd));var _0xad00=function(_0x5eba01,_0x2c5d8f){_0x5eba01=_0x5eba01-0x0;var _0x57e85d=_0xd00a[_0x5eba01];return _0x57e85d;};'use strict';var Sequelize=require(_0xad00('0x0'));module[_0xad00('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xad00('0x2')]},'ecm':{'type':Sequelize[_0xad00('0x3')]('yes','no'),'defaultValue':_0xad00('0x4')},'headerinfo':{'type':Sequelize[_0xad00('0x2')],'defaultValue':_0xad00('0x5')},'localstationid':{'type':Sequelize['STRING'],'unique':_0xad00('0x6')},'minrate':{'type':Sequelize[_0xad00('0x3')](_0xad00('0x7'),_0xad00('0x8'),_0xad00('0x9'),_0xad00('0xa'),_0xad00('0xb'),_0xad00('0xc')),'defaultValue':_0xad00('0x8')},'maxrate':{'type':Sequelize[_0xad00('0x3')]('2400',_0xad00('0x8'),_0xad00('0x9'),'9600',_0xad00('0xb'),_0xad00('0xc')),'defaultValue':_0xad00('0xc')},'modem':{'type':Sequelize[_0xad00('0x2')],'defaultValue':_0xad00('0xd')},'gateway':{'type':Sequelize[_0xad00('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xad00('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xad00('0xe')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0xad00('0xf'),'IAX',_0xad00('0x10'),'KHOMP'),'defaultValue':_0xad00('0xf')},'key':{'type':Sequelize[_0xad00('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xad00('0x11')],'defaultValue':function(){return _0xad00('0x12');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xad00('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xad00('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xad00('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xad00('0xe')],'allowNull':!![],'defaultValue':null,'comment':_0xad00('0x14')},'mandatoryDisposition':{'type':Sequelize[_0xad00('0x13')],'defaultValue':![],'comment':_0xad00('0x15'),'set':function(_0x3b43e6){if(!_0x3b43e6)this[_0xad00('0x16')](_0xad00('0x17'),null);this[_0xad00('0x16')]('mandatoryDisposition',_0x3b43e6);}}};
\ No newline at end of file
index b366fc7..12db081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3e0=['exten','app','system','Fax\x20Extension','priority','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','localstationid','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','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','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','omit','tech','key','createdAt','updatedAt','TrunkId','ListId','findById','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','attachments','root','server/files/attachments','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','List','Contacts','List\x20not\x20found','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','redis','defaults','./faxAccount.socket','http','client','request','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxAccount,\x20%s,\x20%s','catch','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','FaxAccounts','UserProfileResource','sendStatus','stack','name','send','mandatoryDispositionPause','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','includeAll','include','FaxAccount','rows','show','params','Pause','intersection','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','FaxAccountId','Disposition','findOne','hasOwnProperty','pick','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','color','tag','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','getApplications','context','from-voip-provider'];(function(_0x327ab9,_0xa0c230){var _0x5e8c25=function(_0x3db6d2){while(--_0x3db6d2){_0x327ab9['push'](_0x327ab9['shift']());}};_0x5e8c25(++_0xa0c230);}(_0xa3e0,0x1c2));var _0x0a3e=function(_0x2f2262,_0x25650a){_0x2f2262=_0x2f2262-0x0;var _0x510c95=_0xa3e0[_0x2f2262];return _0x510c95;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a3e('0x0'));var zipdir=require(_0x0a3e('0x1'));var jsonpatch=require(_0x0a3e('0x2'));var rp=require(_0x0a3e('0x3'));var moment=require(_0x0a3e('0x4'));var BPromise=require(_0x0a3e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0a3e('0x6'));var sox=require(_0x0a3e('0x7'));var csv=require('to-csv');var ejs=require(_0x0a3e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0a3e('0x9'));var squel=require('squel');var crypto=require(_0x0a3e('0xa'));var jsforce=require(_0x0a3e('0xb'));var deskjs=require(_0x0a3e('0xc'));var toCsv=require(_0x0a3e('0xd'));var querystring=require(_0x0a3e('0xe'));var Papa=require('papaparse');var Redis=require(_0x0a3e('0xf'));var authService=require(_0x0a3e('0x10'));var qs=require(_0x0a3e('0x11'));var as=require(_0x0a3e('0x12'));var hardwareService=require(_0x0a3e('0x13'));var logger=require(_0x0a3e('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x0a3e('0x15')]=_[_0x0a3e('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a3e('0x15')]));require(_0x0a3e('0x17'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x0a3e('0x18')]({'port':0x232c});var client9002=jayson[_0x0a3e('0x19')][_0x0a3e('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x56f3d9,_0x2f6c81,_0x325809,_0x3dc9aa){return new BPromise(function(_0x50f329,_0x42a01b){var _0x18a17b=_0x3dc9aa||client;return _0x18a17b[_0x0a3e('0x1a')](_0x56f3d9,_0x325809)[_0x0a3e('0x1b')](function(_0x4b1d82){logger[_0x0a3e('0x1c')]('FaxAccount,\x20%s,\x20%s',_0x2f6c81,_0x0a3e('0x1d'));logger[_0x0a3e('0x1e')](_0x0a3e('0x1f'),_0x2f6c81,'request\x20sent',JSON[_0x0a3e('0x20')](_0x4b1d82));if(_0x4b1d82[_0x0a3e('0x21')]){if(_0x4b1d82['error'][_0x0a3e('0x22')]===0x1f4){logger[_0x0a3e('0x21')]('FaxAccount,\x20%s,\x20%s',_0x2f6c81,_0x4b1d82['error'][_0x0a3e('0x23')]);return _0x42a01b(_0x4b1d82[_0x0a3e('0x21')][_0x0a3e('0x23')]);}logger[_0x0a3e('0x21')](_0x0a3e('0x24'),_0x2f6c81,_0x4b1d82['error'][_0x0a3e('0x23')]);return _0x50f329(_0x4b1d82[_0x0a3e('0x21')][_0x0a3e('0x23')]);}else{logger[_0x0a3e('0x1c')](_0x0a3e('0x24'),_0x2f6c81,'request\x20sent');_0x50f329(_0x4b1d82['result'][_0x0a3e('0x23')]);}})[_0x0a3e('0x25')](function(_0x38212a){logger[_0x0a3e('0x21')]('FaxAccount,\x20%s,\x20%s',_0x2f6c81,_0x38212a);_0x42a01b(_0x38212a);});});}function respondWithStatusCode(_0x25561a,_0x269a0d){_0x269a0d=_0x269a0d||0xcc;return function(_0x58f822){if(_0x58f822){return _0x25561a['sendStatus'](_0x269a0d);}return _0x25561a[_0x0a3e('0x26')](_0x269a0d)[_0x0a3e('0x27')]();};}function respondWithResult(_0x362eac,_0x377688){_0x377688=_0x377688||0xc8;return function(_0x3e6122){if(_0x3e6122){return _0x362eac[_0x0a3e('0x26')](_0x377688)[_0x0a3e('0x28')](_0x3e6122);}};}function respondWithFilteredResult(_0x19b5bf,_0x3827d2){return function(_0x305b7f){if(_0x305b7f){var _0x3508f4=typeof _0x3827d2[_0x0a3e('0x29')]==='undefined'&&typeof _0x3827d2[_0x0a3e('0x2a')]===_0x0a3e('0x2b');var _0x567bdb=_0x305b7f[_0x0a3e('0x2c')];var _0x132bff=_0x3508f4?0x0:_0x3827d2['offset'];var _0x385617=_0x3508f4?_0x305b7f[_0x0a3e('0x2c')]:_0x3827d2[_0x0a3e('0x29')]+_0x3827d2[_0x0a3e('0x2a')];var _0xd62d86;if(_0x385617>=_0x567bdb){_0x385617=_0x567bdb;_0xd62d86=0xc8;}else{_0xd62d86=0xce;}_0x19b5bf[_0x0a3e('0x26')](_0xd62d86);return _0x19b5bf[_0x0a3e('0x2d')]('Content-Range',_0x132bff+'-'+_0x385617+'/'+_0x567bdb)[_0x0a3e('0x28')](_0x305b7f);}return null;};}function patchUpdates(_0x13699e){return function(_0x8dfc48){try{jsonpatch[_0x0a3e('0x2e')](_0x8dfc48,_0x13699e,!![]);}catch(_0xc2fbca){return BPromise[_0x0a3e('0x2f')](_0xc2fbca);}return _0x8dfc48[_0x0a3e('0x30')]();};}function saveUpdates(_0x31424c,_0x4725ec){return function(_0xdda273){if(_0xdda273){return _0xdda273[_0x0a3e('0x31')](_0x31424c)['then'](function(_0xcb1deb){return _0xcb1deb;});}return null;};}function removeEntity(_0x3a03ae,_0x736e7e){return function(_0x2cfee3){if(_0x2cfee3){return _0x2cfee3['destroy']()[_0x0a3e('0x1b')](function(){var _0x1dbd4a=_0x2cfee3['get']({'plain':!![]});var _0x1d4e12=_0x0a3e('0x32');return db[_0x0a3e('0x33')]['destroy']({'where':{'type':_0x1d4e12,'resourceId':_0x1dbd4a['id']}})[_0x0a3e('0x1b')](function(){return _0x2cfee3;});})[_0x0a3e('0x1b')](function(){_0x3a03ae[_0x0a3e('0x26')](0xcc)[_0x0a3e('0x27')]();});}};}function handleEntityNotFound(_0x8157fc,_0x2126dd){return function(_0x198403){if(!_0x198403){_0x8157fc[_0x0a3e('0x34')](0x194);}return _0x198403;};}function handleError(_0x512310,_0x1062b8){_0x1062b8=_0x1062b8||0x1f4;return function(_0x273d6d){logger[_0x0a3e('0x21')](_0x273d6d[_0x0a3e('0x35')]);if(_0x273d6d[_0x0a3e('0x36')]){delete _0x273d6d[_0x0a3e('0x36')];}_0x512310['status'](_0x1062b8)[_0x0a3e('0x37')](_0x273d6d);};}exports['index']=function(_0x1b735a,_0x2be3fe){var _0x1105a3={'include':[{'model':db['Pause'],'as':_0x0a3e('0x38')}]},_0x4d1188={},_0x2b15c2={'count':0x0,'rows':[]};var _0x4ff71f=_[_0x0a3e('0x39')](db['FaxAccount'][_0x0a3e('0x3a')],function(_0x2108c1){return{'name':_0x2108c1[_0x0a3e('0x3b')],'type':_0x2108c1[_0x0a3e('0x3c')]['key']};});_0x4d1188[_0x0a3e('0x3d')]=_[_0x0a3e('0x39')](_0x4ff71f,_0x0a3e('0x36'));_0x4d1188[_0x0a3e('0x3e')]=_[_0x0a3e('0x3f')](_0x1b735a[_0x0a3e('0x3e')]);_0x4d1188[_0x0a3e('0x40')]=_['intersection'](_0x4d1188[_0x0a3e('0x3d')],_0x4d1188[_0x0a3e('0x3e')]);_0x1105a3[_0x0a3e('0x41')]=_['intersection'](_0x4d1188[_0x0a3e('0x3d')],qs['fields'](_0x1b735a[_0x0a3e('0x3e')][_0x0a3e('0x42')]));_0x1105a3[_0x0a3e('0x41')]=_0x1105a3[_0x0a3e('0x41')][_0x0a3e('0x43')]?_0x1105a3[_0x0a3e('0x41')]:_0x4d1188[_0x0a3e('0x3d')];if(!_0x1b735a[_0x0a3e('0x3e')]['hasOwnProperty'](_0x0a3e('0x44'))){_0x1105a3[_0x0a3e('0x2a')]=qs[_0x0a3e('0x2a')](_0x1b735a[_0x0a3e('0x3e')][_0x0a3e('0x2a')]);_0x1105a3['offset']=qs[_0x0a3e('0x29')](_0x1b735a['query'][_0x0a3e('0x29')]);}_0x1105a3[_0x0a3e('0x45')]=qs[_0x0a3e('0x46')](_0x1b735a[_0x0a3e('0x3e')][_0x0a3e('0x46')]);_0x1105a3[_0x0a3e('0x47')]=qs[_0x0a3e('0x40')](_['pick'](_0x1b735a[_0x0a3e('0x3e')],_0x4d1188['filters']),_0x4ff71f);if(_0x1b735a[_0x0a3e('0x3e')][_0x0a3e('0x48')]){_0x1105a3[_0x0a3e('0x47')]=_[_0x0a3e('0x49')](_0x1105a3['where'],{'$or':_['map'](_0x4ff71f,function(_0x22e88d){if(_0x22e88d[_0x0a3e('0x3c')]!=='VIRTUAL'){var _0x1dcef0={};_0x1dcef0[_0x22e88d[_0x0a3e('0x36')]]={'$like':'%'+_0x1b735a[_0x0a3e('0x3e')][_0x0a3e('0x48')]+'%'};return _0x1dcef0;}})});}_0x1105a3=_['merge']({},_0x1105a3,_0x1b735a[_0x0a3e('0x4a')]);var _0x44ae22={'where':_0x1105a3[_0x0a3e('0x47')]};return db['FaxAccount'][_0x0a3e('0x2c')](_0x44ae22)[_0x0a3e('0x1b')](function(_0x4c772a){_0x2b15c2[_0x0a3e('0x2c')]=_0x4c772a;if(_0x1b735a[_0x0a3e('0x3e')][_0x0a3e('0x4b')]){_0x1105a3[_0x0a3e('0x4c')]=[{'all':!![]}];}return db[_0x0a3e('0x4d')]['findAll'](_0x1105a3);})[_0x0a3e('0x1b')](function(_0x36171a){_0x2b15c2[_0x0a3e('0x4e')]=_0x36171a;return _0x2b15c2;})['then'](respondWithFilteredResult(_0x2be3fe,_0x1105a3))['catch'](handleError(_0x2be3fe,null));};exports[_0x0a3e('0x4f')]=function(_0x103592,_0x3b4b17){var _0x4675ad={'raw':![],'where':{'id':_0x103592[_0x0a3e('0x50')]['id']},'include':[{'model':db[_0x0a3e('0x51')],'as':'mandatoryDispositionPause'}]},_0x283dbc={};_0x283dbc[_0x0a3e('0x3d')]=_[_0x0a3e('0x3f')](db[_0x0a3e('0x4d')][_0x0a3e('0x3a')]);_0x283dbc['query']=_[_0x0a3e('0x3f')](_0x103592['query']);_0x283dbc['filters']=_['intersection'](_0x283dbc[_0x0a3e('0x3d')],_0x283dbc[_0x0a3e('0x3e')]);_0x4675ad[_0x0a3e('0x41')]=_[_0x0a3e('0x52')](_0x283dbc[_0x0a3e('0x3d')],qs['fields'](_0x103592[_0x0a3e('0x3e')][_0x0a3e('0x42')]));_0x4675ad['attributes']=_0x4675ad[_0x0a3e('0x41')][_0x0a3e('0x43')]?_0x4675ad[_0x0a3e('0x41')]:_0x283dbc[_0x0a3e('0x3d')];if(_0x103592[_0x0a3e('0x3e')][_0x0a3e('0x4b')]){_0x4675ad[_0x0a3e('0x4c')]=[{'all':!![]}];}_0x4675ad=_[_0x0a3e('0x49')]({},_0x4675ad,_0x103592[_0x0a3e('0x4a')]);return db[_0x0a3e('0x4d')][_0x0a3e('0x53')](_0x4675ad)[_0x0a3e('0x1b')](handleEntityNotFound(_0x3b4b17,null))[_0x0a3e('0x1b')](respondWithResult(_0x3b4b17,null))[_0x0a3e('0x25')](handleError(_0x3b4b17,null));};exports['create']=function(_0x3b2e08,_0x43e13d){return db[_0x0a3e('0x4d')][_0x0a3e('0x54')](_0x3b2e08[_0x0a3e('0x55')],{})[_0x0a3e('0x1b')](function(_0x339414){var _0x5e8b18=_0x3b2e08[_0x0a3e('0x56')][_0x0a3e('0x57')]({'plain':!![]});if(!_0x5e8b18)throw new Error(_0x0a3e('0x58'));if(_0x5e8b18['role']===_0x0a3e('0x56')){var _0x33d55b=_0x339414['get']({'plain':!![]});var _0x28370c=_0x0a3e('0x32');return db[_0x0a3e('0x59')]['find']({'where':{'name':_0x28370c,'userProfileId':_0x5e8b18['userProfileId']},'raw':!![]})['then'](function(_0x42af65){if(_0x42af65&&_0x42af65['autoAssociation']===0x0){return db['UserProfileResource'][_0x0a3e('0x54')]({'name':_0x33d55b[_0x0a3e('0x36')],'resourceId':_0x33d55b['id'],'type':_0x42af65[_0x0a3e('0x36')],'sectionId':_0x42af65['id']},{})[_0x0a3e('0x1b')](function(){return _0x339414;});}else{return _0x339414;}})['catch'](function(_0x4f23c8){logger['error'](_0x0a3e('0x5a'),_0x4f23c8);throw _0x4f23c8;});}return _0x339414;})[_0x0a3e('0x1b')](respondWithResult(_0x43e13d,0xc9))['catch'](handleError(_0x43e13d,null));};exports[_0x0a3e('0x31')]=function(_0x3dc3c7,_0x383584){if(_0x3dc3c7[_0x0a3e('0x55')]['id']){delete _0x3dc3c7[_0x0a3e('0x55')]['id'];}return db['FaxAccount'][_0x0a3e('0x53')]({'where':{'id':_0x3dc3c7['params']['id']},'include':[{'model':db[_0x0a3e('0x51')],'as':_0x0a3e('0x38')}]})[_0x0a3e('0x1b')](handleEntityNotFound(_0x383584,null))[_0x0a3e('0x1b')](saveUpdates(_0x3dc3c7[_0x0a3e('0x55')],null))['then'](respondWithResult(_0x383584,null))[_0x0a3e('0x25')](handleError(_0x383584,null));};exports[_0x0a3e('0x5b')]=function(_0x4b3f41,_0xbd88ad){return db['FaxAccount'][_0x0a3e('0x53')]({'where':{'id':_0x4b3f41[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0xbd88ad,null))[_0x0a3e('0x1b')](removeEntity(_0xbd88ad,null))[_0x0a3e('0x25')](handleError(_0xbd88ad,null));};exports[_0x0a3e('0x5c')]=function(_0xb34cdf,_0x97eed4){return db[_0x0a3e('0x4d')][_0x0a3e('0x5c')]()[_0x0a3e('0x1b')](respondWithResult(_0x97eed4,null))[_0x0a3e('0x25')](handleError(_0x97eed4,null));};exports['addDisposition']=function(_0x2b64c5,_0x14f586,_0x4a8057){if(_0x2b64c5[_0x0a3e('0x55')]['id']){delete _0x2b64c5[_0x0a3e('0x55')]['id'];}return db[_0x0a3e('0x4d')][_0x0a3e('0x53')]({'where':{'id':_0x2b64c5[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x14f586,null))['then'](function(_0x32382d){if(_0x32382d){_0x2b64c5[_0x0a3e('0x55')][_0x0a3e('0x5d')]=_0x32382d['id'];return db[_0x0a3e('0x5e')][_0x0a3e('0x54')](_0x2b64c5[_0x0a3e('0x55')]);}})[_0x0a3e('0x1b')](respondWithResult(_0x14f586,null))[_0x0a3e('0x25')](handleError(_0x14f586,null));};exports['getDispositions']=function(_0x419c39,_0x2ce6da,_0x3796f1){var _0xead438={'raw':![],'where':{}};var _0x98a690={};var _0x44ca13={'count':0x0,'rows':[]};return db[_0x0a3e('0x4d')][_0x0a3e('0x5f')]({'where':{'id':_0x419c39[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x2ce6da,null))[_0x0a3e('0x1b')](function(_0x40dc85){if(_0x40dc85){_0x98a690[_0x0a3e('0x3d')]=_[_0x0a3e('0x3f')](db[_0x0a3e('0x5e')][_0x0a3e('0x3a')]);_0x98a690[_0x0a3e('0x3e')]=_[_0x0a3e('0x3f')](_0x419c39[_0x0a3e('0x3e')]);_0x98a690[_0x0a3e('0x40')]=_[_0x0a3e('0x52')](_0x98a690['model'],_0x98a690[_0x0a3e('0x3e')]);_0xead438[_0x0a3e('0x41')]=_[_0x0a3e('0x52')](_0x98a690[_0x0a3e('0x3d')],qs[_0x0a3e('0x42')](_0x419c39['query'][_0x0a3e('0x42')]));_0xead438[_0x0a3e('0x41')]=_0xead438[_0x0a3e('0x41')]['length']?_0xead438[_0x0a3e('0x41')]:_0x98a690[_0x0a3e('0x3d')];if(!_0x419c39[_0x0a3e('0x3e')][_0x0a3e('0x60')](_0x0a3e('0x44'))){_0xead438[_0x0a3e('0x2a')]=qs[_0x0a3e('0x2a')](_0x419c39[_0x0a3e('0x3e')][_0x0a3e('0x2a')]);_0xead438[_0x0a3e('0x29')]=qs[_0x0a3e('0x29')](_0x419c39[_0x0a3e('0x3e')][_0x0a3e('0x29')]);}_0xead438[_0x0a3e('0x45')]=qs[_0x0a3e('0x46')](_0x419c39[_0x0a3e('0x3e')][_0x0a3e('0x46')]);_0xead438[_0x0a3e('0x47')]=qs[_0x0a3e('0x40')](_[_0x0a3e('0x61')](_0x419c39[_0x0a3e('0x3e')],_0x98a690[_0x0a3e('0x40')]));_0xead438[_0x0a3e('0x47')]['FaxAccountId']=_0x40dc85['id'];if(_0x419c39['query']['filter']){_0xead438[_0x0a3e('0x47')]=_[_0x0a3e('0x49')](_0xead438[_0x0a3e('0x47')],{'$or':_['map'](_0xead438[_0x0a3e('0x41')],function(_0x3a229a){var _0x3d38d2={};_0x3d38d2[_0x3a229a]={'$like':'%'+_0x419c39['query']['filter']+'%'};return _0x3d38d2;})});}_0xead438=_[_0x0a3e('0x49')]({},_0xead438,_0x419c39[_0x0a3e('0x4a')]);return db['Disposition']['count']({'where':_0xead438[_0x0a3e('0x47')]})[_0x0a3e('0x1b')](function(_0x1f6dac){_0x44ca13[_0x0a3e('0x2c')]=_0x1f6dac;if(_0x419c39[_0x0a3e('0x3e')][_0x0a3e('0x4b')]){_0xead438[_0x0a3e('0x4c')]=[{'all':!![]}];}return db[_0x0a3e('0x5e')][_0x0a3e('0x62')](_0xead438);})[_0x0a3e('0x1b')](function(_0x2e94d3){_0x44ca13[_0x0a3e('0x4e')]=_0x2e94d3;return _0x44ca13;});}})[_0x0a3e('0x1b')](respondWithFilteredResult(_0x2ce6da,_0xead438))['catch'](handleError(_0x2ce6da,null));};exports[_0x0a3e('0x63')]=function(_0x33cbd4,_0x7c61d6,_0x57d2c5){return db[_0x0a3e('0x4d')]['find']({'where':{'id':_0x33cbd4[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x7c61d6,null))[_0x0a3e('0x1b')](function(_0x1b432a){if(_0x1b432a){return _0x1b432a[_0x0a3e('0x63')](_0x33cbd4['query'][_0x0a3e('0x64')]);}})['then'](respondWithStatusCode(_0x7c61d6,null))[_0x0a3e('0x25')](handleError(_0x7c61d6,null));};exports[_0x0a3e('0x65')]=function(_0x4e0c7f,_0x30e346,_0x48b3ab){if(_0x4e0c7f[_0x0a3e('0x55')]['id']){delete _0x4e0c7f['body']['id'];}return db[_0x0a3e('0x4d')][_0x0a3e('0x53')]({'where':{'id':_0x4e0c7f[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x30e346,null))[_0x0a3e('0x1b')](function(_0x592c0c){if(_0x592c0c){_0x4e0c7f[_0x0a3e('0x55')]['FaxAccountId']=_0x592c0c['id'];return db[_0x0a3e('0x66')][_0x0a3e('0x54')](_0x4e0c7f['body']);}})[_0x0a3e('0x1b')](respondWithResult(_0x30e346,null))['catch'](handleError(_0x30e346,null));};exports[_0x0a3e('0x67')]=function(_0x4f6f2a,_0x46c945,_0x34dda8){var _0x1c3b9a={'raw':![],'where':{}};var _0xd68ec5={};var _0x46d528={'count':0x0,'rows':[]};return db[_0x0a3e('0x4d')][_0x0a3e('0x5f')]({'where':{'id':_0x4f6f2a['params']['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x46c945,null))[_0x0a3e('0x1b')](function(_0x278911){if(_0x278911){_0xd68ec5[_0x0a3e('0x3d')]=_[_0x0a3e('0x3f')](db[_0x0a3e('0x66')][_0x0a3e('0x3a')]);_0xd68ec5['query']=_[_0x0a3e('0x3f')](_0x4f6f2a['query']);_0xd68ec5[_0x0a3e('0x40')]=_[_0x0a3e('0x52')](_0xd68ec5[_0x0a3e('0x3d')],_0xd68ec5[_0x0a3e('0x3e')]);_0x1c3b9a[_0x0a3e('0x41')]=_['intersection'](_0xd68ec5[_0x0a3e('0x3d')],qs[_0x0a3e('0x42')](_0x4f6f2a['query'][_0x0a3e('0x42')]));_0x1c3b9a[_0x0a3e('0x41')]=_0x1c3b9a[_0x0a3e('0x41')][_0x0a3e('0x43')]?_0x1c3b9a[_0x0a3e('0x41')]:_0xd68ec5[_0x0a3e('0x3d')];if(!_0x4f6f2a[_0x0a3e('0x3e')][_0x0a3e('0x60')](_0x0a3e('0x44'))){_0x1c3b9a[_0x0a3e('0x2a')]=qs[_0x0a3e('0x2a')](_0x4f6f2a[_0x0a3e('0x3e')][_0x0a3e('0x2a')]);_0x1c3b9a['offset']=qs[_0x0a3e('0x29')](_0x4f6f2a[_0x0a3e('0x3e')][_0x0a3e('0x29')]);}_0x1c3b9a[_0x0a3e('0x45')]=qs[_0x0a3e('0x46')](_0x4f6f2a[_0x0a3e('0x3e')]['sort']);_0x1c3b9a['where']=qs['filters'](_[_0x0a3e('0x61')](_0x4f6f2a[_0x0a3e('0x3e')],_0xd68ec5['filters']));_0x1c3b9a[_0x0a3e('0x47')][_0x0a3e('0x5d')]=_0x278911['id'];if(_0x4f6f2a[_0x0a3e('0x3e')]['filter']){_0x1c3b9a[_0x0a3e('0x47')]=_['merge'](_0x1c3b9a[_0x0a3e('0x47')],{'$or':_[_0x0a3e('0x39')](_0x1c3b9a[_0x0a3e('0x41')],function(_0x11b56f){var _0x41bb54={};_0x41bb54[_0x11b56f]={'$like':'%'+_0x4f6f2a['query'][_0x0a3e('0x48')]+'%'};return _0x41bb54;})});}_0x1c3b9a=_[_0x0a3e('0x49')]({},_0x1c3b9a,_0x4f6f2a[_0x0a3e('0x4a')]);return db[_0x0a3e('0x66')]['count']({'where':_0x1c3b9a[_0x0a3e('0x47')]})[_0x0a3e('0x1b')](function(_0xeab590){_0x46d528[_0x0a3e('0x2c')]=_0xeab590;if(_0x4f6f2a[_0x0a3e('0x3e')][_0x0a3e('0x4b')]){_0x1c3b9a[_0x0a3e('0x4c')]=[{'all':!![]}];}return db[_0x0a3e('0x66')][_0x0a3e('0x62')](_0x1c3b9a);})[_0x0a3e('0x1b')](function(_0x3cd277){_0x46d528[_0x0a3e('0x4e')]=_0x3cd277;return _0x46d528;});}})['then'](respondWithFilteredResult(_0x46c945,_0x1c3b9a))[_0x0a3e('0x25')](handleError(_0x46c945,null));};exports[_0x0a3e('0x68')]=function(_0x1cdf5a,_0x50de3d,_0xa0670){return db[_0x0a3e('0x4d')][_0x0a3e('0x53')]({'where':{'id':_0x1cdf5a['params']['id']}})['then'](handleEntityNotFound(_0x50de3d,null))[_0x0a3e('0x1b')](function(_0x10d153){if(_0x10d153){return _0x10d153[_0x0a3e('0x68')](_0x1cdf5a[_0x0a3e('0x3e')][_0x0a3e('0x64')]);}})[_0x0a3e('0x1b')](respondWithStatusCode(_0x50de3d,null))[_0x0a3e('0x25')](handleError(_0x50de3d,null));};exports[_0x0a3e('0x69')]=function(_0x50dd82,_0x600ab2,_0x40be11){return db[_0x0a3e('0x6a')][_0x0a3e('0x53')]({'where':{'id':_0x50dd82[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x600ab2,null))['then'](function(_0x13fcc4){if(_0x13fcc4){return _0x13fcc4[_0x0a3e('0x69')](_0x50dd82['body']['ids'],_['omit'](_0x50dd82[_0x0a3e('0x55')],[_0x0a3e('0x64'),'id'])||{});}})[_0x0a3e('0x1b')](respondWithResult(_0x600ab2,null))[_0x0a3e('0x25')](handleError(_0x600ab2,null));};exports[_0x0a3e('0x6b')]=function(_0x2a497b,_0x44cadc,_0x298740){var _0x137c2f={'raw':![],'where':{}};var _0x29258b={};var _0x3bd996={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0a3e('0x5f')]({'where':{'id':_0x2a497b['params']['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x44cadc,null))[_0x0a3e('0x1b')](function(_0x9f92c7){if(_0x9f92c7){_0x29258b[_0x0a3e('0x3d')]=_[_0x0a3e('0x3f')](db[_0x0a3e('0x6a')][_0x0a3e('0x3a')]);_0x29258b[_0x0a3e('0x3e')]=_[_0x0a3e('0x3f')](_0x2a497b[_0x0a3e('0x3e')]);_0x29258b[_0x0a3e('0x40')]=_['intersection'](_0x29258b[_0x0a3e('0x3d')],_0x29258b['query']);_0x137c2f[_0x0a3e('0x41')]=_[_0x0a3e('0x52')](_0x29258b[_0x0a3e('0x3d')],qs[_0x0a3e('0x42')](_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x42')]));_0x137c2f['attributes']=_0x137c2f[_0x0a3e('0x41')][_0x0a3e('0x43')]?_0x137c2f[_0x0a3e('0x41')]:_0x29258b[_0x0a3e('0x3d')];if(!_0x2a497b['query'][_0x0a3e('0x60')](_0x0a3e('0x44'))){_0x137c2f[_0x0a3e('0x2a')]=qs['limit'](_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x2a')]);_0x137c2f[_0x0a3e('0x29')]=qs[_0x0a3e('0x29')](_0x2a497b['query'][_0x0a3e('0x29')]);}_0x137c2f[_0x0a3e('0x45')]=qs[_0x0a3e('0x46')](_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x46')]);_0x137c2f['where']=qs['filters'](_['pick'](_0x2a497b[_0x0a3e('0x3e')],_0x29258b[_0x0a3e('0x40')]));_0x137c2f[_0x0a3e('0x47')][_0x0a3e('0x5d')]=_0x9f92c7['id'];if(_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x48')]){_0x137c2f[_0x0a3e('0x47')]=_[_0x0a3e('0x49')](_0x137c2f['where'],{'$or':_[_0x0a3e('0x39')](_0x137c2f[_0x0a3e('0x41')],function(_0x19eab0){var _0x6ce51c={};_0x6ce51c[_0x19eab0]={'$like':'%'+_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x48')]+'%'};return _0x6ce51c;})});}_0x137c2f=_[_0x0a3e('0x49')]({},_0x137c2f,_0x2a497b[_0x0a3e('0x4a')]);return db[_0x0a3e('0x6a')]['count']({'where':_0x137c2f[_0x0a3e('0x47')]})[_0x0a3e('0x1b')](function(_0x236433){_0x3bd996['count']=_0x236433;if(_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x4b')]){_0x137c2f[_0x0a3e('0x4c')]=[{'model':db[_0x0a3e('0x6c')],'as':_0x0a3e('0x6d'),'required':![]},{'model':db[_0x0a3e('0x6e')],'as':_0x0a3e('0x6f'),'attributes':['name',_0x0a3e('0x70'),_0x0a3e('0x71')],'required':![]},{'model':db[_0x0a3e('0x72')],'as':'Tags','attributes':['id',_0x0a3e('0x36'),_0x0a3e('0x73')],'where':_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x74')]?{'id':_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x74')]}:undefined,'required':_0x2a497b[_0x0a3e('0x3e')][_0x0a3e('0x74')]?!![]:![]}];}return db['FaxInteraction'][_0x0a3e('0x62')](_0x137c2f);})[_0x0a3e('0x1b')](function(_0xf1d65a){_0x3bd996[_0x0a3e('0x4e')]=_0xf1d65a;return _0x3bd996;});}})[_0x0a3e('0x1b')](respondWithFilteredResult(_0x44cadc,_0x137c2f))[_0x0a3e('0x25')](handleError(_0x44cadc,null));};exports[_0x0a3e('0x75')]=function(_0x30cbc0,_0x17e669,_0xebd667){return db['FaxAccount'][_0x0a3e('0x5f')]({'where':{'id':_0x30cbc0['params']['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x17e669,null))[_0x0a3e('0x1b')](function(_0x25778e){if(_0x25778e){return db[_0x0a3e('0x76')][_0x0a3e('0x77')](function(_0x2e690d){return db[_0x0a3e('0x78')]['destroy']({'where':{'FaxAccountId':_0x30cbc0['params']['id']},'transaction':_0x2e690d})[_0x0a3e('0x1b')](function(_0x41d4f5){var _0x2294aa=_['map'](_0x30cbc0[_0x0a3e('0x55')],function(_0x528e9f){_0x528e9f[_0x0a3e('0x5d')]=_0x30cbc0[_0x0a3e('0x50')]['id'];return _0x528e9f;});return db['FaxApplication'][_0x0a3e('0x79')](_0x2294aa,{'transaction':_0x2e690d});});})[_0x0a3e('0x1b')](function(){return db[_0x0a3e('0x78')][_0x0a3e('0x7a')]({'where':{'FaxAccountId':_0x30cbc0[_0x0a3e('0x50')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x17e669,null))[_0x0a3e('0x25')](handleError(_0x17e669,null));};exports['getApplications']=function(_0x57255b,_0x5a88dd,_0x3e6412){var _0x217599={};var _0x11d069={};var _0x24bca5;var _0x293313;return db[_0x0a3e('0x4d')][_0x0a3e('0x5f')]({'where':{'id':_0x57255b[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x5a88dd,null))[_0x0a3e('0x1b')](function(_0x293880){if(_0x293880){_0x24bca5=_0x293880;_0x11d069[_0x0a3e('0x3d')]=_[_0x0a3e('0x3f')](db[_0x0a3e('0x78')]['rawAttributes']);_0x11d069['query']=_[_0x0a3e('0x3f')](_0x57255b[_0x0a3e('0x3e')]);_0x11d069[_0x0a3e('0x40')]=_[_0x0a3e('0x52')](_0x11d069[_0x0a3e('0x3d')],_0x11d069[_0x0a3e('0x3e')]);_0x217599[_0x0a3e('0x41')]=_[_0x0a3e('0x52')](_0x11d069[_0x0a3e('0x3d')],qs[_0x0a3e('0x42')](_0x57255b[_0x0a3e('0x3e')]['fields']));_0x217599[_0x0a3e('0x41')]=_0x217599[_0x0a3e('0x41')][_0x0a3e('0x43')]?_0x217599[_0x0a3e('0x41')]:_0x11d069['model'];_0x217599['order']=qs[_0x0a3e('0x46')](_0x57255b[_0x0a3e('0x3e')][_0x0a3e('0x46')]);_0x217599[_0x0a3e('0x47')]=qs[_0x0a3e('0x40')](_[_0x0a3e('0x61')](_0x57255b['query'],_0x11d069['filters']));if(_0x57255b[_0x0a3e('0x3e')]['filter']){_0x217599[_0x0a3e('0x47')]=_[_0x0a3e('0x49')](_0x217599[_0x0a3e('0x47')],{'$or':_['map'](_0x217599[_0x0a3e('0x41')],function(_0x1d8771){var _0x595631={};_0x595631[_0x1d8771]={'$like':'%'+_0x57255b[_0x0a3e('0x3e')][_0x0a3e('0x48')]+'%'};return _0x595631;})});}_0x217599=_[_0x0a3e('0x49')]({},_0x217599,_0x57255b['options']);return _0x24bca5[_0x0a3e('0x7b')](_0x217599);}})[_0x0a3e('0x1b')](function(_0x2405b1){if(_0x2405b1){_0x293313=_0x2405b1[_0x0a3e('0x43')];if(!_0x57255b[_0x0a3e('0x3e')][_0x0a3e('0x60')]('nolimit')){_0x217599[_0x0a3e('0x2a')]=qs[_0x0a3e('0x2a')](_0x57255b[_0x0a3e('0x3e')][_0x0a3e('0x2a')]);_0x217599[_0x0a3e('0x29')]=qs[_0x0a3e('0x29')](_0x57255b[_0x0a3e('0x3e')]['offset']);}return _0x24bca5[_0x0a3e('0x7b')](_0x217599);}})['then'](function(_0x2d8f5a){if(_0x2d8f5a){return _0x2d8f5a?{'count':_0x293313,'rows':_0x2d8f5a}:null;}})[_0x0a3e('0x1b')](respondWithResult(_0x5a88dd,null))[_0x0a3e('0x25')](handleError(_0x5a88dd,null));};function Extension(_0xe83219,_0x464725,_0x1c2ade,_0x2eb475){this[_0x0a3e('0x7c')]=_0x0a3e('0x7d');this[_0x0a3e('0x7e')]=_0xe83219['localstationid'];this[_0x0a3e('0x7f')]=_0x2eb475;this['type']=_0x0a3e('0x80');this['description']=_0x0a3e('0x81');this[_0x0a3e('0x5d')]=_0xe83219['id'];this[_0x0a3e('0x82')]=_0x464725;this[_0x0a3e('0x83')]=_0x1c2ade;}function createExtensionsReciveFax(_0x125b6d){var _0x3562d2=0x1;var _0x419019=[];_0x419019[_0x0a3e('0x84')](new Extension(_0x125b6d,_0x3562d2,'',_0x0a3e('0x85')));_0x3562d2+=0x1;_0x419019[_0x0a3e('0x84')](new Extension(_0x125b6d,_0x3562d2,_0x0a3e('0x86'),_0x0a3e('0x87')));_0x3562d2+=0x1;for(var _0x17289a in _0x125b6d){if(_0x125b6d[_0x0a3e('0x60')](_0x17289a)&&(_0x17289a===_0x0a3e('0x88')||_0x17289a===_0x0a3e('0x89')||_0x17289a===_0x0a3e('0x8a')||_0x17289a===_0x0a3e('0x8b')||_0x17289a===_0x0a3e('0x8c')||_0x17289a===_0x0a3e('0x8d')||_0x17289a===_0x0a3e('0x8e')||_0x17289a===_0x0a3e('0x8f')||_0x17289a===_0x0a3e('0x90'))){_0x419019['push'](new Extension(_0x125b6d,_0x3562d2,_0x0a3e('0x91')+_0x17289a+')='+_0x125b6d[_0x17289a],_0x0a3e('0x87')));_0x3562d2+=0x1;}}_0x419019['push'](new Extension(_0x125b6d,_0x3562d2,'6',_0x0a3e('0x92')));_0x3562d2+=0x1;_0x419019['push'](new Extension(_0x125b6d,_0x3562d2,_0x0a3e('0x93'),_0x0a3e('0x94')));_0x3562d2=0x0;return _0x419019;}exports[_0x0a3e('0x95')]=function(_0x4e938e,_0x1df873,_0x351845){var _0x4211cf;return db[_0x0a3e('0x76')][_0x0a3e('0x77')](function(_0x3bf0d0){return db[_0x0a3e('0x4d')]['create'](_0x4e938e[_0x0a3e('0x55')],{'transaction':_0x3bf0d0})[_0x0a3e('0x1b')](function(_0x3e1b86){_0x4211cf=_0x3e1b86[_0x0a3e('0x57')]({'plain':!![]});return db[_0x0a3e('0x96')][_0x0a3e('0x79')](createExtensionsReciveFax(_0x4211cf),{'transaction':_0x3bf0d0});});})['then'](function(){return _0x4211cf;})[_0x0a3e('0x1b')](respondWithResult(_0x1df873,null))['catch'](handleError(_0x1df873,null));};exports[_0x0a3e('0x97')]=function(_0x934d8c,_0x4ab467,_0x52be5d){var _0x59f016;return db['sequelize'][_0x0a3e('0x77')](function(_0x3b5e42){return db[_0x0a3e('0x4d')]['update'](_0x934d8c[_0x0a3e('0x55')],{'where':{'id':_0x934d8c['body']['id']},'transaction':_0x3b5e42})[_0x0a3e('0x1b')](function(_0x129664){return db[_0x0a3e('0x96')][_0x0a3e('0x5b')]({'where':{'FaxAccountId':_0x934d8c['body']['id']},'transaction':_0x3b5e42})['then'](function(_0x4bdaf7){return db[_0x0a3e('0x96')][_0x0a3e('0x79')](createExtensionsReciveFax(_[_0x0a3e('0x98')](_0x934d8c[_0x0a3e('0x55')],[_0x0a3e('0x99'),_0x0a3e('0x9a'),_0x0a3e('0x9b'),_0x0a3e('0x9c'),_0x0a3e('0x9d'),_0x0a3e('0x9e')])),{'transaction':_0x3b5e42});});});})[_0x0a3e('0x1b')](function(){return db[_0x0a3e('0x4d')][_0x0a3e('0x9f')](_0x934d8c['body']['id']);})[_0x0a3e('0x1b')](respondWithResult(_0x4ab467,null))[_0x0a3e('0x25')](handleError(_0x4ab467,null));};exports['getMessages']=function(_0x15d68f,_0x3662bd,_0x3f850e){var _0x324cc5={'raw':!![],'where':{}};var _0x1050fc={};var _0x55a7f1={'count':0x0,'rows':[]};return db[_0x0a3e('0x4d')][_0x0a3e('0x5f')]({'where':{'id':_0x15d68f[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x3662bd,null))[_0x0a3e('0x1b')](function(_0x3b0dca){if(_0x3b0dca){_0x1050fc['model']=_['keys'](db['FaxMessage'][_0x0a3e('0x3a')]);_0x1050fc[_0x0a3e('0x3e')]=_[_0x0a3e('0x3f')](_0x15d68f[_0x0a3e('0x3e')]);_0x1050fc[_0x0a3e('0x40')]=_[_0x0a3e('0x52')](_0x1050fc[_0x0a3e('0x3d')],_0x1050fc[_0x0a3e('0x3e')]);_0x324cc5[_0x0a3e('0x41')]=_[_0x0a3e('0x52')](_0x1050fc[_0x0a3e('0x3d')],qs[_0x0a3e('0x42')](_0x15d68f[_0x0a3e('0x3e')]['fields']));_0x324cc5['attributes']=_0x324cc5[_0x0a3e('0x41')][_0x0a3e('0x43')]?_0x324cc5[_0x0a3e('0x41')]:_0x1050fc[_0x0a3e('0x3d')];if(!_0x15d68f[_0x0a3e('0x3e')][_0x0a3e('0x60')](_0x0a3e('0x44'))){_0x324cc5[_0x0a3e('0x2a')]=qs['limit'](_0x15d68f[_0x0a3e('0x3e')][_0x0a3e('0x2a')]);_0x324cc5['offset']=qs['offset'](_0x15d68f[_0x0a3e('0x3e')]['offset']);}_0x324cc5[_0x0a3e('0x45')]=qs[_0x0a3e('0x46')](_0x15d68f[_0x0a3e('0x3e')][_0x0a3e('0x46')]);_0x324cc5[_0x0a3e('0x47')]=qs['filters'](_[_0x0a3e('0x61')](_0x15d68f['query'],_0x1050fc[_0x0a3e('0x40')]));_0x324cc5[_0x0a3e('0x47')][_0x0a3e('0x5d')]=_0x3b0dca['id'];if(_0x15d68f['query'][_0x0a3e('0x48')]){_0x324cc5[_0x0a3e('0x47')]=_[_0x0a3e('0x49')](_0x324cc5[_0x0a3e('0x47')],{'$or':_['map'](_0x324cc5[_0x0a3e('0x41')],function(_0x2fc54b){var _0x5c3114={};_0x5c3114[_0x2fc54b]={'$like':'%'+_0x15d68f[_0x0a3e('0x3e')][_0x0a3e('0x48')]+'%'};return _0x5c3114;})});}if(_0x15d68f[_0x0a3e('0x3e')][_0x0a3e('0xa0')]){var _0x2cb547=_0x15d68f[_0x0a3e('0x3e')]['$gte'][_0x0a3e('0xa1')](',');var _0x401538={};_0x401538[_0x2cb547[0x0]]={'$gte':moment(_0x2cb547[0x1])[_0x0a3e('0xa2')](_0x0a3e('0xa3'))};_0x324cc5['where']=_['merge'](_0x324cc5[_0x0a3e('0x47')],_0x401538);}_0x324cc5=_['merge']({},_0x324cc5,_0x15d68f['options']);return db[_0x0a3e('0xa4')]['count']({'where':_0x324cc5[_0x0a3e('0x47')]})[_0x0a3e('0x1b')](function(_0x1b98b0){_0x55a7f1['count']=_0x1b98b0;if(_0x15d68f[_0x0a3e('0x3e')][_0x0a3e('0x4b')]){_0x324cc5[_0x0a3e('0x4c')]=[{'all':!![]}];}return db[_0x0a3e('0xa4')][_0x0a3e('0x62')](_0x324cc5);})[_0x0a3e('0x1b')](function(_0x3dc592){_0x55a7f1[_0x0a3e('0x4e')]=_0x3dc592;return _0x55a7f1;});}})[_0x0a3e('0x1b')](respondWithFilteredResult(_0x3662bd,_0x324cc5))['catch'](handleError(_0x3662bd,null));};exports[_0x0a3e('0x37')]=function(_0x12278e,_0x49a778,_0x95d39){var _0x447548,_0x4d9f6b={},_0x4e835b;if(_0x12278e[_0x0a3e('0x55')]['to']){_0x4e835b=_0x12278e['body']['to'][0x0];}return db[_0x0a3e('0x4d')][_0x0a3e('0x53')]({'where':{'id':_0x12278e[_0x0a3e('0x50')]['id']},'include':[{'model':db[_0x0a3e('0xa5')],'as':'List','include':[{'model':db[_0x0a3e('0x6c')],'as':'Contacts','where':{'fax':_0x4e835b},'limit':0x1,'order':[[_0x0a3e('0x9c'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x49a778,null))['then'](function(_0x4bbe7d){_0x447548=_0x4bbe7d;if(_0x12278e['body'][_0x0a3e('0xa6')]&&_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')]['length']){for(var _0x3b9380=0x0;_0x3b9380<_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][_0x0a3e('0x43')];_0x3b9380+=0x1){_0x12278e[_0x0a3e('0x55')]['attachments'][_0x3b9380]={'filename':_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][_0x3b9380][_0x0a3e('0x36')],'id':_0x12278e['body']['attachments'][_0x3b9380]['id'],'path':path['join'](config[_0x0a3e('0xa7')],_0x0a3e('0xa8'),_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][_0x3b9380]['basename'])};}}return respondWithRpcPromise(_0x0a3e('0xa9'),_0x0a3e('0xa9'),{'FaxAccountId':_[_0x0a3e('0xaa')](_0x12278e[_0x0a3e('0x50')]['id'])?undefined:_0x12278e['params']['id'],'path':_[_0x0a3e('0xaa')](_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0]['path'])?undefined:_0x12278e[_0x0a3e('0x55')]['attachments'][0x0][_0x0a3e('0x6')],'fax':_[_0x0a3e('0xaa')](_0x12278e['body']['to'][0x0])?undefined:_0x12278e[_0x0a3e('0x55')]['to'][0x0]},client9002);})[_0x0a3e('0x1b')](function(){if(_0x447548){if(_[_0x0a3e('0xaa')](_0x12278e['body']['from'])){_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xab')]=util[_0x0a3e('0xa2')](_0x0a3e('0xac'),_0x447548[_0x0a3e('0x36')],_0x447548['fax']);}if(_0x447548[_0x0a3e('0xad')]){if(_0x447548[_0x0a3e('0xad')][_0x0a3e('0xae')][_0x0a3e('0x43')]){return _0x447548['List']['Contacts'][0x0];}else{return db[_0x0a3e('0x6c')]['create'](_[_0x0a3e('0x16')](_0x12278e[_0x0a3e('0x55')],{'firstName':_0x12278e[_0x0a3e('0x55')]['to'][0x0],'phone':_0x12278e[_0x0a3e('0x55')]['to'][0x0],'fax':_0x12278e['body']['to'][0x0],'ListId':_0x447548[_0x0a3e('0x9e')]}));}}else{throw new Error(_0x0a3e('0xaf'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x0a3e('0x1b')](function(_0x2c7b52){if(_0x2c7b52){return db[_0x0a3e('0x6a')][_0x0a3e('0x53')]({'where':{'ContactId':_0x2c7b52['id'],'closed':![],'FaxAccountId':_0x447548['id']}})[_0x0a3e('0x1b')](function(_0x251e6d){if(_0x251e6d){return[_0x251e6d,![]];}return db['FaxInteraction'][_0x0a3e('0x54')]({'UserId':_0x12278e['user']['id'],'ContactId':_0x2c7b52['id'],'FaxAccountId':_0x447548['id'],'fax':_0x12278e[_0x0a3e('0x55')]['to'][0x0],'firstMsgDirection':_0x0a3e('0xb0'),'Messages':[_[_0x0a3e('0x49')](_0x12278e[_0x0a3e('0x55')],{'read':![],'body':_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0][_0x0a3e('0xb1')],'FaxAccountId':_0x447548['id'],'UserId':_0x12278e[_0x0a3e('0x56')]['id'],'ContactId':_0x2c7b52['id'],'AttachmentId':_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0]['id']})]},{'include':[{'model':db[_0x0a3e('0xa4')],'as':_0x0a3e('0xb2')}]})[_0x0a3e('0x1b')](function(_0x19be7e){return[_0x19be7e,!![]];});});}else{throw new Error(_0x0a3e('0xb3'));}})[_0x0a3e('0xb4')](function(_0x5f1a85,_0x44c50b){if(_0x44c50b){return _0x5f1a85;}return db[_0x0a3e('0xa4')][_0x0a3e('0x54')]({'direction':'out','read':![],'body':_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0][_0x0a3e('0xb1')],'FaxAccountId':_0x447548['id'],'FaxInteractionId':_0x5f1a85['id'],'UserId':_0x12278e[_0x0a3e('0x56')]['id'],'ContactId':_0x5f1a85[_0x0a3e('0xb5')],'AttachmentId':_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0]['id']})[_0x0a3e('0x1b')](function(_0xded711){_0x5f1a85['dataValues'][_0x0a3e('0xb2')]=[];_0x5f1a85[_0x0a3e('0xb6')][_0x0a3e('0xb2')][_0x0a3e('0x84')](_0xded711[_0x0a3e('0xb6')]);return _0x5f1a85;});})[_0x0a3e('0x1b')](function(_0xa4693a){respondWithRpcPromise(_0x0a3e('0xb7'),'SendFax',{'FaxAccountId':_['isNil'](_0x12278e[_0x0a3e('0x50')]['id'])?undefined:_0x12278e[_0x0a3e('0x50')]['id'],'path':_[_0x0a3e('0xaa')](_0x12278e['body'][_0x0a3e('0xa6')][0x0][_0x0a3e('0x6')])?undefined:_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0][_0x0a3e('0x6')],'fax':_[_0x0a3e('0xaa')](_0x12278e['body']['to'][0x0])?undefined:_0x12278e['body']['to'][0x0],'AttachmentId':_0x12278e[_0x0a3e('0x55')][_0x0a3e('0xa6')][0x0]['id']},client9002)[_0x0a3e('0x1b')](function(_0x2975a3){logger[_0x0a3e('0x1c')](_0x0a3e('0xb8'),_0x2975a3);})[_0x0a3e('0x25')](function(_0x3aeb4b){logger['info'](_0x0a3e('0xb8'),_0x3aeb4b);});return _0xa4693a;})[_0x0a3e('0x1b')](respondWithResult(_0x49a778,null))['catch'](handleError(_0x49a778,null));};exports['addAgents']=function(_0x4da451,_0x500c22,_0x40d06c){return db['FaxAccount']['find']({'where':{'id':_0x4da451[_0x0a3e('0x50')]['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x500c22,null))[_0x0a3e('0x1b')](function(_0x52f92d){if(_0x52f92d){return _0x52f92d[_0x0a3e('0xb9')](_0x4da451[_0x0a3e('0x55')][_0x0a3e('0x64')],_[_0x0a3e('0x98')](_0x4da451[_0x0a3e('0x55')],[_0x0a3e('0x64'),'id'])||{})[_0x0a3e('0xb4')](function(_0x25dc0d){for(var _0x393a37=0x0;_0x393a37<_0x4da451['body']['ids'][_0x0a3e('0x43')];_0x393a37+=0x1){socket[_0x0a3e('0xba')](_0x0a3e('0xbb'),{'UserId':Number(_0x4da451[_0x0a3e('0x55')]['ids'][_0x393a37]),'FaxAccountId':Number(_0x4da451[_0x0a3e('0x50')]['id'])});}return _0x25dc0d;});}})[_0x0a3e('0x1b')](respondWithResult(_0x500c22,null))[_0x0a3e('0x25')](handleError(_0x500c22,null));};exports[_0x0a3e('0xbc')]=function(_0x3eeb0a,_0x2fa2ae,_0x212c2d){return db[_0x0a3e('0x4d')]['find']({'where':{'id':_0x3eeb0a['params']['id']}})['then'](handleEntityNotFound(_0x2fa2ae,null))[_0x0a3e('0x1b')](function(_0x55d5ee){if(_0x55d5ee){return _0x55d5ee[_0x0a3e('0xbc')](_0x3eeb0a[_0x0a3e('0x3e')][_0x0a3e('0x64')])[_0x0a3e('0x1b')](function(){if(_[_0x0a3e('0xbd')](_0x3eeb0a[_0x0a3e('0x3e')][_0x0a3e('0x64')])){for(var _0x40b62a=0x0;_0x40b62a<_0x3eeb0a[_0x0a3e('0x3e')]['ids'][_0x0a3e('0x43')];_0x40b62a+=0x1){socket[_0x0a3e('0xba')]('userFaxAccount:remove',{'UserId':Number(_0x3eeb0a[_0x0a3e('0x3e')][_0x0a3e('0x64')][_0x40b62a]),'FaxAccountId':Number(_0x3eeb0a['params']['id'])});}}else{socket['emit'](_0x0a3e('0xbe'),{'UserId':Number(_0x3eeb0a['query']['ids']),'FaxAccountId':Number(_0x3eeb0a[_0x0a3e('0x50')]['id'])});}});}})[_0x0a3e('0x1b')](respondWithStatusCode(_0x2fa2ae,null))[_0x0a3e('0x25')](handleError(_0x2fa2ae,null));};exports[_0x0a3e('0xbf')]=function(_0x1f2d93,_0x5b1d5b,_0x464fb5){var _0x483731={};var _0x559a8c={};var _0x473e18;var _0x12aecf;return db[_0x0a3e('0x4d')][_0x0a3e('0x5f')]({'where':{'id':_0x1f2d93['params']['id']}})[_0x0a3e('0x1b')](handleEntityNotFound(_0x5b1d5b,null))[_0x0a3e('0x1b')](function(_0x4ce8c2){if(_0x4ce8c2){_0x473e18=_0x4ce8c2;_0x559a8c[_0x0a3e('0x3d')]=_[_0x0a3e('0x3f')](db[_0x0a3e('0x6e')][_0x0a3e('0x3a')]);_0x559a8c['query']=_['keys'](_0x1f2d93[_0x0a3e('0x3e')]);_0x559a8c['filters']=_[_0x0a3e('0x52')](_0x559a8c[_0x0a3e('0x3d')],_0x559a8c[_0x0a3e('0x3e')]);_0x483731[_0x0a3e('0x41')]=_[_0x0a3e('0x52')](_0x559a8c[_0x0a3e('0x3d')],qs[_0x0a3e('0x42')](_0x1f2d93['query']['fields']));_0x483731[_0x0a3e('0x41')]=_0x483731['attributes'][_0x0a3e('0x43')]?_0x483731[_0x0a3e('0x41')]:_0x559a8c[_0x0a3e('0x3d')];_0x483731['order']=qs[_0x0a3e('0x46')](_0x1f2d93[_0x0a3e('0x3e')][_0x0a3e('0x46')]);_0x483731[_0x0a3e('0x47')]=qs[_0x0a3e('0x40')](_['pick'](_0x1f2d93[_0x0a3e('0x3e')],_0x559a8c[_0x0a3e('0x40')]));if(_0x1f2d93[_0x0a3e('0x3e')][_0x0a3e('0x48')]){_0x483731[_0x0a3e('0x47')]=_['merge'](_0x483731['where'],{'$or':_[_0x0a3e('0x39')](_0x483731['attributes'],function(_0x108bc3){var _0x503b03={};_0x503b03[_0x108bc3]={'$like':'%'+_0x1f2d93[_0x0a3e('0x3e')]['filter']+'%'};return _0x503b03;})});}_0x483731=_[_0x0a3e('0x49')]({},_0x483731,_0x1f2d93[_0x0a3e('0x4a')]);return _0x473e18['getAgents'](_0x483731);}})[_0x0a3e('0x1b')](function(_0x13341a){if(_0x13341a){_0x12aecf=_0x13341a[_0x0a3e('0x43')];if(!_0x1f2d93[_0x0a3e('0x3e')][_0x0a3e('0x60')](_0x0a3e('0x44'))){_0x483731['limit']=qs[_0x0a3e('0x2a')](_0x1f2d93['query'][_0x0a3e('0x2a')]);_0x483731[_0x0a3e('0x29')]=qs[_0x0a3e('0x29')](_0x1f2d93['query'][_0x0a3e('0x29')]);}return _0x473e18[_0x0a3e('0xbf')](_0x483731);}})[_0x0a3e('0x1b')](function(_0x390d4c){if(_0x390d4c){return _0x390d4c?{'count':_0x12aecf,'rows':_0x390d4c}:null;}})['then'](respondWithResult(_0x5b1d5b,null))[_0x0a3e('0x25')](handleError(_0x5b1d5b,null));};
\ No newline at end of file
+var _0x3b7c=['type','VIRTUAL','filter','options','include','rows','catch','show','params','mandatoryDispositionPause','keys','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','FaxAccountId','includeAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','pick','findAll','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','tag','addApplications','sequelize','transaction','bulkCreate','FaxApplication','getApplications','exten','localstationid','app','system','description','Fax\x20Extension','priority','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','headerinfo','maxrate','minrate','modem','t38timeout','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','updateAccountApplications','VoiceExtension','tech','createdAt','TrunkId','ListId','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','Contacts','DESC','attachments','root','server/files/attachments','CheckAfterSend','isNil','from','fax','List','defaults','List\x20not\x20found','Send\x20Fax\x20failed','out','Messages','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','status','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','FaxAccounts','UserProfileResource','end','stack','name','send','index','Pause','FaxAccount','fieldName','map','intersection','attributes','fields','query','length','model','hasOwnProperty','nolimit','order','sort','where','filters','merge'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x3b7c,0x136));var _0xc3b7=function(_0x4efc87,_0x17a7d1){_0x4efc87=_0x4efc87-0x0;var _0x191fc4=_0x3b7c[_0x4efc87];return _0x191fc4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc3b7('0x0'));var zipdir=require(_0xc3b7('0x1'));var jsonpatch=require(_0xc3b7('0x2'));var rp=require(_0xc3b7('0x3'));var moment=require(_0xc3b7('0x4'));var BPromise=require(_0xc3b7('0x5'));var Mustache=require(_0xc3b7('0x6'));var util=require(_0xc3b7('0x7'));var path=require(_0xc3b7('0x8'));var sox=require(_0xc3b7('0x9'));var csv=require('to-csv');var ejs=require(_0xc3b7('0xa'));var fs=require('fs');var fs_extra=require(_0xc3b7('0xb'));var _=require('lodash');var squel=require(_0xc3b7('0xc'));var crypto=require('crypto');var jsforce=require(_0xc3b7('0xd'));var deskjs=require(_0xc3b7('0xe'));var toCsv=require(_0xc3b7('0xf'));var querystring=require(_0xc3b7('0x10'));var Papa=require(_0xc3b7('0x11'));var Redis=require(_0xc3b7('0x12'));var authService=require(_0xc3b7('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc3b7('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc3b7('0x15'))(_0xc3b7('0x16'));var utils=require(_0xc3b7('0x17'));var config=require(_0xc3b7('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xc3b7('0x19'))['db'];config[_0xc3b7('0x1a')]=_['defaults'](config[_0xc3b7('0x1a')],{'host':_0xc3b7('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc3b7('0x1c'))[_0xc3b7('0x1d')](socket);var jayson=require(_0xc3b7('0x1e'));var client=jayson[_0xc3b7('0x1f')][_0xc3b7('0x20')]({'port':0x232c});var client9002=jayson[_0xc3b7('0x1f')][_0xc3b7('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x18e8a4,_0x13e589,_0x4e55e5,_0x3d1ac6){return new BPromise(function(_0x3dd27c,_0xd5a8d8){var _0x1efe20=_0x3d1ac6||client;return _0x1efe20[_0xc3b7('0x21')](_0x18e8a4,_0x4e55e5)[_0xc3b7('0x22')](function(_0x164867){logger[_0xc3b7('0x23')](_0xc3b7('0x24'),_0x13e589,_0xc3b7('0x25'));logger[_0xc3b7('0x26')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x13e589,_0xc3b7('0x25'),JSON[_0xc3b7('0x27')](_0x164867));if(_0x164867[_0xc3b7('0x28')]){if(_0x164867['error'][_0xc3b7('0x29')]===0x1f4){logger[_0xc3b7('0x28')](_0xc3b7('0x24'),_0x13e589,_0x164867[_0xc3b7('0x28')]['message']);return _0xd5a8d8(_0x164867[_0xc3b7('0x28')][_0xc3b7('0x2a')]);}logger[_0xc3b7('0x28')](_0xc3b7('0x24'),_0x13e589,_0x164867[_0xc3b7('0x28')][_0xc3b7('0x2a')]);return _0x3dd27c(_0x164867[_0xc3b7('0x28')][_0xc3b7('0x2a')]);}else{logger['info'](_0xc3b7('0x24'),_0x13e589,'request\x20sent');_0x3dd27c(_0x164867[_0xc3b7('0x2b')]['message']);}})['catch'](function(_0x22e593){logger[_0xc3b7('0x28')]('FaxAccount,\x20%s,\x20%s',_0x13e589,_0x22e593);_0xd5a8d8(_0x22e593);});});}function respondWithStatusCode(_0x499907,_0x2730d5){_0x2730d5=_0x2730d5||0xcc;return function(_0x350071){if(_0x350071){return _0x499907[_0xc3b7('0x2c')](_0x2730d5);}return _0x499907['status'](_0x2730d5)['end']();};}function respondWithResult(_0x400263,_0x2f1b9b){_0x2f1b9b=_0x2f1b9b||0xc8;return function(_0x55a663){if(_0x55a663){return _0x400263[_0xc3b7('0x2d')](_0x2f1b9b)['json'](_0x55a663);}};}function respondWithFilteredResult(_0x2e1e14,_0x172eb3){return function(_0x333ffa){if(_0x333ffa){var _0xc3681=typeof _0x172eb3[_0xc3b7('0x2e')]===_0xc3b7('0x2f')&&typeof _0x172eb3[_0xc3b7('0x30')]===_0xc3b7('0x2f');var _0x4ac4aa=_0x333ffa[_0xc3b7('0x31')];var _0x3beba3=_0xc3681?0x0:_0x172eb3[_0xc3b7('0x2e')];var _0x7b92b7=_0xc3681?_0x333ffa[_0xc3b7('0x31')]:_0x172eb3[_0xc3b7('0x2e')]+_0x172eb3[_0xc3b7('0x30')];var _0x13ab3f;if(_0x7b92b7>=_0x4ac4aa){_0x7b92b7=_0x4ac4aa;_0x13ab3f=0xc8;}else{_0x13ab3f=0xce;}_0x2e1e14[_0xc3b7('0x2d')](_0x13ab3f);return _0x2e1e14['set'](_0xc3b7('0x32'),_0x3beba3+'-'+_0x7b92b7+'/'+_0x4ac4aa)['json'](_0x333ffa);}return null;};}function patchUpdates(_0x58317c){return function(_0x34d93f){try{jsonpatch[_0xc3b7('0x33')](_0x34d93f,_0x58317c,!![]);}catch(_0x38d817){return BPromise[_0xc3b7('0x34')](_0x38d817);}return _0x34d93f[_0xc3b7('0x35')]();};}function saveUpdates(_0x3f8474,_0x4853b3){return function(_0xe2842){if(_0xe2842){return _0xe2842[_0xc3b7('0x36')](_0x3f8474)[_0xc3b7('0x22')](function(_0x412062){return _0x412062;});}return null;};}function removeEntity(_0x5709c7,_0xb0fc69){return function(_0x110061){if(_0x110061){return _0x110061[_0xc3b7('0x37')]()[_0xc3b7('0x22')](function(){var _0x3a4fc1=_0x110061['get']({'plain':!![]});var _0x40234e=_0xc3b7('0x38');return db[_0xc3b7('0x39')][_0xc3b7('0x37')]({'where':{'type':_0x40234e,'resourceId':_0x3a4fc1['id']}})[_0xc3b7('0x22')](function(){return _0x110061;});})[_0xc3b7('0x22')](function(){_0x5709c7[_0xc3b7('0x2d')](0xcc)[_0xc3b7('0x3a')]();});}};}function handleEntityNotFound(_0x5314c5,_0x439ab5){return function(_0x307e63){if(!_0x307e63){_0x5314c5[_0xc3b7('0x2c')](0x194);}return _0x307e63;};}function handleError(_0x39dd44,_0x4ae770){_0x4ae770=_0x4ae770||0x1f4;return function(_0x16c393){logger[_0xc3b7('0x28')](_0x16c393[_0xc3b7('0x3b')]);if(_0x16c393[_0xc3b7('0x3c')]){delete _0x16c393['name'];}_0x39dd44[_0xc3b7('0x2d')](_0x4ae770)[_0xc3b7('0x3d')](_0x16c393);};}exports[_0xc3b7('0x3e')]=function(_0x3cb928,_0x2c0a13){var _0xc05a3a={'include':[{'model':db[_0xc3b7('0x3f')],'as':'mandatoryDispositionPause'}]},_0x1eee00={},_0x1c5568={'count':0x0,'rows':[]};var _0x2c25d1=_['map'](db[_0xc3b7('0x40')]['rawAttributes'],function(_0x735bc){return{'name':_0x735bc[_0xc3b7('0x41')],'type':_0x735bc['type']['key']};});_0x1eee00['model']=_[_0xc3b7('0x42')](_0x2c25d1,_0xc3b7('0x3c'));_0x1eee00['query']=_['keys'](_0x3cb928['query']);_0x1eee00['filters']=_[_0xc3b7('0x43')](_0x1eee00['model'],_0x1eee00['query']);_0xc05a3a[_0xc3b7('0x44')]=_['intersection'](_0x1eee00['model'],qs[_0xc3b7('0x45')](_0x3cb928[_0xc3b7('0x46')][_0xc3b7('0x45')]));_0xc05a3a['attributes']=_0xc05a3a[_0xc3b7('0x44')][_0xc3b7('0x47')]?_0xc05a3a[_0xc3b7('0x44')]:_0x1eee00[_0xc3b7('0x48')];if(!_0x3cb928[_0xc3b7('0x46')][_0xc3b7('0x49')](_0xc3b7('0x4a'))){_0xc05a3a['limit']=qs[_0xc3b7('0x30')](_0x3cb928[_0xc3b7('0x46')][_0xc3b7('0x30')]);_0xc05a3a[_0xc3b7('0x2e')]=qs['offset'](_0x3cb928['query'][_0xc3b7('0x2e')]);}_0xc05a3a[_0xc3b7('0x4b')]=qs[_0xc3b7('0x4c')](_0x3cb928['query'][_0xc3b7('0x4c')]);_0xc05a3a[_0xc3b7('0x4d')]=qs['filters'](_['pick'](_0x3cb928[_0xc3b7('0x46')],_0x1eee00[_0xc3b7('0x4e')]),_0x2c25d1);if(_0x3cb928[_0xc3b7('0x46')]['filter']){_0xc05a3a[_0xc3b7('0x4d')]=_[_0xc3b7('0x4f')](_0xc05a3a[_0xc3b7('0x4d')],{'$or':_[_0xc3b7('0x42')](_0x2c25d1,function(_0x5b88bc){if(_0x5b88bc[_0xc3b7('0x50')]!==_0xc3b7('0x51')){var _0x322a73={};_0x322a73[_0x5b88bc[_0xc3b7('0x3c')]]={'$like':'%'+_0x3cb928['query'][_0xc3b7('0x52')]+'%'};return _0x322a73;}})});}_0xc05a3a=_[_0xc3b7('0x4f')]({},_0xc05a3a,_0x3cb928[_0xc3b7('0x53')]);var _0x2ed46f={'where':_0xc05a3a['where']};return db[_0xc3b7('0x40')][_0xc3b7('0x31')](_0x2ed46f)['then'](function(_0x32d2f9){_0x1c5568[_0xc3b7('0x31')]=_0x32d2f9;if(_0x3cb928[_0xc3b7('0x46')]['includeAll']){_0xc05a3a[_0xc3b7('0x54')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0xc05a3a);})[_0xc3b7('0x22')](function(_0x3457fd){_0x1c5568[_0xc3b7('0x55')]=_0x3457fd;return _0x1c5568;})[_0xc3b7('0x22')](respondWithFilteredResult(_0x2c0a13,_0xc05a3a))[_0xc3b7('0x56')](handleError(_0x2c0a13,null));};exports[_0xc3b7('0x57')]=function(_0x2a801a,_0x40478d){var _0xe940a3={'raw':![],'where':{'id':_0x2a801a[_0xc3b7('0x58')]['id']},'include':[{'model':db[_0xc3b7('0x3f')],'as':_0xc3b7('0x59')}]},_0x189224={};_0x189224[_0xc3b7('0x48')]=_[_0xc3b7('0x5a')](db[_0xc3b7('0x40')][_0xc3b7('0x5b')]);_0x189224[_0xc3b7('0x46')]=_[_0xc3b7('0x5a')](_0x2a801a[_0xc3b7('0x46')]);_0x189224[_0xc3b7('0x4e')]=_[_0xc3b7('0x43')](_0x189224[_0xc3b7('0x48')],_0x189224[_0xc3b7('0x46')]);_0xe940a3['attributes']=_['intersection'](_0x189224[_0xc3b7('0x48')],qs[_0xc3b7('0x45')](_0x2a801a['query']['fields']));_0xe940a3[_0xc3b7('0x44')]=_0xe940a3[_0xc3b7('0x44')][_0xc3b7('0x47')]?_0xe940a3['attributes']:_0x189224[_0xc3b7('0x48')];if(_0x2a801a[_0xc3b7('0x46')]['includeAll']){_0xe940a3[_0xc3b7('0x54')]=[{'all':!![]}];}_0xe940a3=_[_0xc3b7('0x4f')]({},_0xe940a3,_0x2a801a[_0xc3b7('0x53')]);return db[_0xc3b7('0x40')][_0xc3b7('0x5c')](_0xe940a3)[_0xc3b7('0x22')](handleEntityNotFound(_0x40478d,null))[_0xc3b7('0x22')](respondWithResult(_0x40478d,null))[_0xc3b7('0x56')](handleError(_0x40478d,null));};exports[_0xc3b7('0x5d')]=function(_0x2cfa31,_0x2dcf4e){return db[_0xc3b7('0x40')][_0xc3b7('0x5d')](_0x2cfa31[_0xc3b7('0x5e')],{})[_0xc3b7('0x22')](function(_0x2b4860){var _0x4d6860=_0x2cfa31[_0xc3b7('0x5f')]['get']({'plain':!![]});if(!_0x4d6860)throw new Error(_0xc3b7('0x60'));if(_0x4d6860[_0xc3b7('0x61')]===_0xc3b7('0x5f')){var _0x4131f7=_0x2b4860[_0xc3b7('0x62')]({'plain':!![]});var _0xad2b83=_0xc3b7('0x38');return db['UserProfileSection'][_0xc3b7('0x5c')]({'where':{'name':_0xad2b83,'userProfileId':_0x4d6860[_0xc3b7('0x63')]},'raw':!![]})['then'](function(_0x49753e){if(_0x49753e&&_0x49753e['autoAssociation']===0x0){return db[_0xc3b7('0x39')][_0xc3b7('0x5d')]({'name':_0x4131f7[_0xc3b7('0x3c')],'resourceId':_0x4131f7['id'],'type':_0x49753e[_0xc3b7('0x3c')],'sectionId':_0x49753e['id']},{})[_0xc3b7('0x22')](function(){return _0x2b4860;});}else{return _0x2b4860;}})[_0xc3b7('0x56')](function(_0x39490e){logger['error'](_0xc3b7('0x64'),_0x39490e);throw _0x39490e;});}return _0x2b4860;})[_0xc3b7('0x22')](respondWithResult(_0x2dcf4e,0xc9))[_0xc3b7('0x56')](handleError(_0x2dcf4e,null));};exports[_0xc3b7('0x36')]=function(_0x4a041e,_0x4031a3){if(_0x4a041e[_0xc3b7('0x5e')]['id']){delete _0x4a041e[_0xc3b7('0x5e')]['id'];}return db[_0xc3b7('0x40')][_0xc3b7('0x5c')]({'where':{'id':_0x4a041e[_0xc3b7('0x58')]['id']},'include':[{'model':db['Pause'],'as':_0xc3b7('0x59')}]})[_0xc3b7('0x22')](handleEntityNotFound(_0x4031a3,null))[_0xc3b7('0x22')](saveUpdates(_0x4a041e[_0xc3b7('0x5e')],null))[_0xc3b7('0x22')](respondWithResult(_0x4031a3,null))[_0xc3b7('0x56')](handleError(_0x4031a3,null));};exports['destroy']=function(_0x24ccc4,_0x27f59c){return db[_0xc3b7('0x40')][_0xc3b7('0x5c')]({'where':{'id':_0x24ccc4[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x27f59c,null))[_0xc3b7('0x22')](removeEntity(_0x27f59c,null))[_0xc3b7('0x56')](handleError(_0x27f59c,null));};exports[_0xc3b7('0x65')]=function(_0x2c693b,_0x202d2a){return db[_0xc3b7('0x40')][_0xc3b7('0x65')]()[_0xc3b7('0x22')](respondWithResult(_0x202d2a,null))[_0xc3b7('0x56')](handleError(_0x202d2a,null));};exports[_0xc3b7('0x66')]=function(_0x40af51,_0x42c389,_0x4fbf41){if(_0x40af51[_0xc3b7('0x5e')]['id']){delete _0x40af51[_0xc3b7('0x5e')]['id'];}return db['FaxAccount'][_0xc3b7('0x5c')]({'where':{'id':_0x40af51[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x42c389,null))['then'](function(_0x3d64ca){if(_0x3d64ca){_0x40af51[_0xc3b7('0x5e')]['FaxAccountId']=_0x3d64ca['id'];return db[_0xc3b7('0x67')]['create'](_0x40af51['body']);}})[_0xc3b7('0x22')](respondWithResult(_0x42c389,null))[_0xc3b7('0x56')](handleError(_0x42c389,null));};exports[_0xc3b7('0x68')]=function(_0x11cb62,_0x5772eb,_0x270de0){var _0x5bfc62={'raw':![],'where':{}};var _0x2b19d={};var _0x174404={'count':0x0,'rows':[]};return db[_0xc3b7('0x40')][_0xc3b7('0x69')]({'where':{'id':_0x11cb62[_0xc3b7('0x58')]['id']}})['then'](handleEntityNotFound(_0x5772eb,null))['then'](function(_0x307b4e){if(_0x307b4e){_0x2b19d[_0xc3b7('0x48')]=_[_0xc3b7('0x5a')](db[_0xc3b7('0x67')][_0xc3b7('0x5b')]);_0x2b19d[_0xc3b7('0x46')]=_[_0xc3b7('0x5a')](_0x11cb62['query']);_0x2b19d[_0xc3b7('0x4e')]=_[_0xc3b7('0x43')](_0x2b19d['model'],_0x2b19d['query']);_0x5bfc62['attributes']=_[_0xc3b7('0x43')](_0x2b19d[_0xc3b7('0x48')],qs[_0xc3b7('0x45')](_0x11cb62[_0xc3b7('0x46')][_0xc3b7('0x45')]));_0x5bfc62['attributes']=_0x5bfc62['attributes']['length']?_0x5bfc62['attributes']:_0x2b19d[_0xc3b7('0x48')];if(!_0x11cb62['query'][_0xc3b7('0x49')]('nolimit')){_0x5bfc62[_0xc3b7('0x30')]=qs[_0xc3b7('0x30')](_0x11cb62['query']['limit']);_0x5bfc62[_0xc3b7('0x2e')]=qs[_0xc3b7('0x2e')](_0x11cb62['query'][_0xc3b7('0x2e')]);}_0x5bfc62['order']=qs[_0xc3b7('0x4c')](_0x11cb62[_0xc3b7('0x46')][_0xc3b7('0x4c')]);_0x5bfc62[_0xc3b7('0x4d')]=qs[_0xc3b7('0x4e')](_['pick'](_0x11cb62[_0xc3b7('0x46')],_0x2b19d[_0xc3b7('0x4e')]));_0x5bfc62['where'][_0xc3b7('0x6a')]=_0x307b4e['id'];if(_0x11cb62[_0xc3b7('0x46')][_0xc3b7('0x52')]){_0x5bfc62[_0xc3b7('0x4d')]=_[_0xc3b7('0x4f')](_0x5bfc62[_0xc3b7('0x4d')],{'$or':_[_0xc3b7('0x42')](_0x5bfc62[_0xc3b7('0x44')],function(_0x370c60){var _0x523e45={};_0x523e45[_0x370c60]={'$like':'%'+_0x11cb62[_0xc3b7('0x46')][_0xc3b7('0x52')]+'%'};return _0x523e45;})});}_0x5bfc62=_[_0xc3b7('0x4f')]({},_0x5bfc62,_0x11cb62['options']);return db[_0xc3b7('0x67')][_0xc3b7('0x31')]({'where':_0x5bfc62[_0xc3b7('0x4d')]})[_0xc3b7('0x22')](function(_0x4e6abc){_0x174404['count']=_0x4e6abc;if(_0x11cb62[_0xc3b7('0x46')][_0xc3b7('0x6b')]){_0x5bfc62[_0xc3b7('0x54')]=[{'all':!![]}];}return db[_0xc3b7('0x67')]['findAll'](_0x5bfc62);})[_0xc3b7('0x22')](function(_0x5a4032){_0x174404[_0xc3b7('0x55')]=_0x5a4032;return _0x174404;});}})[_0xc3b7('0x22')](respondWithFilteredResult(_0x5772eb,_0x5bfc62))[_0xc3b7('0x56')](handleError(_0x5772eb,null));};exports[_0xc3b7('0x6c')]=function(_0x5021a4,_0x1190c9,_0x10d182){return db[_0xc3b7('0x40')][_0xc3b7('0x5c')]({'where':{'id':_0x5021a4[_0xc3b7('0x58')]['id']}})['then'](handleEntityNotFound(_0x1190c9,null))['then'](function(_0x544e76){if(_0x544e76){return _0x544e76[_0xc3b7('0x6c')](_0x5021a4[_0xc3b7('0x46')][_0xc3b7('0x6d')]);}})['then'](respondWithStatusCode(_0x1190c9,null))[_0xc3b7('0x56')](handleError(_0x1190c9,null));};exports[_0xc3b7('0x6e')]=function(_0x26f923,_0x2d8a05,_0x1de3c7){if(_0x26f923[_0xc3b7('0x5e')]['id']){delete _0x26f923['body']['id'];}return db['FaxAccount'][_0xc3b7('0x5c')]({'where':{'id':_0x26f923['params']['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x2d8a05,null))[_0xc3b7('0x22')](function(_0x8a9048){if(_0x8a9048){_0x26f923[_0xc3b7('0x5e')][_0xc3b7('0x6a')]=_0x8a9048['id'];return db[_0xc3b7('0x6f')][_0xc3b7('0x5d')](_0x26f923['body']);}})['then'](respondWithResult(_0x2d8a05,null))['catch'](handleError(_0x2d8a05,null));};exports[_0xc3b7('0x70')]=function(_0x374fce,_0x207ad7,_0x1cc9f1){var _0x572127={'raw':![],'where':{}};var _0x2a94b7={};var _0x18dc2c={'count':0x0,'rows':[]};return db[_0xc3b7('0x40')][_0xc3b7('0x69')]({'where':{'id':_0x374fce[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x207ad7,null))['then'](function(_0x2167d2){if(_0x2167d2){_0x2a94b7[_0xc3b7('0x48')]=_[_0xc3b7('0x5a')](db[_0xc3b7('0x6f')][_0xc3b7('0x5b')]);_0x2a94b7['query']=_[_0xc3b7('0x5a')](_0x374fce[_0xc3b7('0x46')]);_0x2a94b7[_0xc3b7('0x4e')]=_[_0xc3b7('0x43')](_0x2a94b7[_0xc3b7('0x48')],_0x2a94b7['query']);_0x572127[_0xc3b7('0x44')]=_[_0xc3b7('0x43')](_0x2a94b7[_0xc3b7('0x48')],qs[_0xc3b7('0x45')](_0x374fce[_0xc3b7('0x46')][_0xc3b7('0x45')]));_0x572127[_0xc3b7('0x44')]=_0x572127[_0xc3b7('0x44')][_0xc3b7('0x47')]?_0x572127[_0xc3b7('0x44')]:_0x2a94b7[_0xc3b7('0x48')];if(!_0x374fce['query'][_0xc3b7('0x49')](_0xc3b7('0x4a'))){_0x572127[_0xc3b7('0x30')]=qs[_0xc3b7('0x30')](_0x374fce[_0xc3b7('0x46')][_0xc3b7('0x30')]);_0x572127['offset']=qs[_0xc3b7('0x2e')](_0x374fce[_0xc3b7('0x46')]['offset']);}_0x572127[_0xc3b7('0x4b')]=qs[_0xc3b7('0x4c')](_0x374fce[_0xc3b7('0x46')][_0xc3b7('0x4c')]);_0x572127[_0xc3b7('0x4d')]=qs[_0xc3b7('0x4e')](_[_0xc3b7('0x71')](_0x374fce[_0xc3b7('0x46')],_0x2a94b7[_0xc3b7('0x4e')]));_0x572127['where'][_0xc3b7('0x6a')]=_0x2167d2['id'];if(_0x374fce['query']['filter']){_0x572127[_0xc3b7('0x4d')]=_[_0xc3b7('0x4f')](_0x572127[_0xc3b7('0x4d')],{'$or':_[_0xc3b7('0x42')](_0x572127[_0xc3b7('0x44')],function(_0x3161b2){var _0x2558db={};_0x2558db[_0x3161b2]={'$like':'%'+_0x374fce[_0xc3b7('0x46')][_0xc3b7('0x52')]+'%'};return _0x2558db;})});}_0x572127=_[_0xc3b7('0x4f')]({},_0x572127,_0x374fce[_0xc3b7('0x53')]);return db[_0xc3b7('0x6f')][_0xc3b7('0x31')]({'where':_0x572127[_0xc3b7('0x4d')]})[_0xc3b7('0x22')](function(_0x351f93){_0x18dc2c[_0xc3b7('0x31')]=_0x351f93;if(_0x374fce['query'][_0xc3b7('0x6b')]){_0x572127[_0xc3b7('0x54')]=[{'all':!![]}];}return db[_0xc3b7('0x6f')][_0xc3b7('0x72')](_0x572127);})[_0xc3b7('0x22')](function(_0xd4d954){_0x18dc2c['rows']=_0xd4d954;return _0x18dc2c;});}})[_0xc3b7('0x22')](respondWithFilteredResult(_0x207ad7,_0x572127))[_0xc3b7('0x56')](handleError(_0x207ad7,null));};exports[_0xc3b7('0x73')]=function(_0x5c501a,_0x1bbadc,_0x59627b){return db[_0xc3b7('0x40')][_0xc3b7('0x5c')]({'where':{'id':_0x5c501a[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x1bbadc,null))[_0xc3b7('0x22')](function(_0x512306){if(_0x512306){return _0x512306[_0xc3b7('0x73')](_0x5c501a[_0xc3b7('0x46')][_0xc3b7('0x6d')]);}})['then'](respondWithStatusCode(_0x1bbadc,null))[_0xc3b7('0x56')](handleError(_0x1bbadc,null));};exports[_0xc3b7('0x74')]=function(_0xc17cf5,_0x2e6044,_0x57ebe8){return db[_0xc3b7('0x75')][_0xc3b7('0x5c')]({'where':{'id':_0xc17cf5['params']['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x2e6044,null))['then'](function(_0x5d22f1){if(_0x5d22f1){return _0x5d22f1[_0xc3b7('0x74')](_0xc17cf5[_0xc3b7('0x5e')]['ids'],_[_0xc3b7('0x76')](_0xc17cf5[_0xc3b7('0x5e')],[_0xc3b7('0x6d'),'id'])||{});}})[_0xc3b7('0x22')](respondWithResult(_0x2e6044,null))['catch'](handleError(_0x2e6044,null));};exports[_0xc3b7('0x77')]=function(_0x3e0c30,_0x595ec1,_0x1654b7){var _0x3bf9fc={'raw':![],'where':{}};var _0xa089f0={};var _0x2f6547={'count':0x0,'rows':[]};return db[_0xc3b7('0x40')][_0xc3b7('0x69')]({'where':{'id':_0x3e0c30[_0xc3b7('0x58')]['id']}})['then'](handleEntityNotFound(_0x595ec1,null))[_0xc3b7('0x22')](function(_0x1e9ebd){if(_0x1e9ebd){_0xa089f0[_0xc3b7('0x48')]=_[_0xc3b7('0x5a')](db[_0xc3b7('0x75')]['rawAttributes']);_0xa089f0[_0xc3b7('0x46')]=_['keys'](_0x3e0c30[_0xc3b7('0x46')]);_0xa089f0[_0xc3b7('0x4e')]=_[_0xc3b7('0x43')](_0xa089f0[_0xc3b7('0x48')],_0xa089f0[_0xc3b7('0x46')]);_0x3bf9fc[_0xc3b7('0x44')]=_['intersection'](_0xa089f0['model'],qs['fields'](_0x3e0c30[_0xc3b7('0x46')]['fields']));_0x3bf9fc[_0xc3b7('0x44')]=_0x3bf9fc[_0xc3b7('0x44')][_0xc3b7('0x47')]?_0x3bf9fc['attributes']:_0xa089f0[_0xc3b7('0x48')];if(!_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x49')](_0xc3b7('0x4a'))){_0x3bf9fc[_0xc3b7('0x30')]=qs[_0xc3b7('0x30')](_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x30')]);_0x3bf9fc[_0xc3b7('0x2e')]=qs[_0xc3b7('0x2e')](_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x2e')]);}_0x3bf9fc[_0xc3b7('0x4b')]=qs[_0xc3b7('0x4c')](_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x4c')]);_0x3bf9fc[_0xc3b7('0x4d')]=qs[_0xc3b7('0x4e')](_[_0xc3b7('0x71')](_0x3e0c30[_0xc3b7('0x46')],_0xa089f0['filters']));_0x3bf9fc[_0xc3b7('0x4d')]['FaxAccountId']=_0x1e9ebd['id'];if(_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x52')]){_0x3bf9fc[_0xc3b7('0x4d')]=_[_0xc3b7('0x4f')](_0x3bf9fc[_0xc3b7('0x4d')],{'$or':_[_0xc3b7('0x42')](_0x3bf9fc[_0xc3b7('0x44')],function(_0x116e8c){var _0x3bf01d={};_0x3bf01d[_0x116e8c]={'$like':'%'+_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x52')]+'%'};return _0x3bf01d;})});}_0x3bf9fc=_[_0xc3b7('0x4f')]({},_0x3bf9fc,_0x3e0c30[_0xc3b7('0x53')]);return db[_0xc3b7('0x75')][_0xc3b7('0x31')]({'where':_0x3bf9fc[_0xc3b7('0x4d')]})['then'](function(_0x12940e){_0x2f6547[_0xc3b7('0x31')]=_0x12940e;if(_0x3e0c30['query'][_0xc3b7('0x6b')]){_0x3bf9fc['include']=[{'model':db[_0xc3b7('0x78')],'as':_0xc3b7('0x79'),'required':![]},{'model':db[_0xc3b7('0x7a')],'as':_0xc3b7('0x7b'),'attributes':['name',_0xc3b7('0x7c'),_0xc3b7('0x7d')],'required':![]},{'model':db[_0xc3b7('0x7e')],'as':_0xc3b7('0x7f'),'attributes':['id','name','color'],'where':_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x80')]?{'id':_0x3e0c30['query'][_0xc3b7('0x80')]}:undefined,'required':_0x3e0c30[_0xc3b7('0x46')][_0xc3b7('0x80')]?!![]:![]}];}return db[_0xc3b7('0x75')][_0xc3b7('0x72')](_0x3bf9fc);})[_0xc3b7('0x22')](function(_0x2941ef){_0x2f6547[_0xc3b7('0x55')]=_0x2941ef;return _0x2f6547;});}})['then'](respondWithFilteredResult(_0x595ec1,_0x3bf9fc))[_0xc3b7('0x56')](handleError(_0x595ec1,null));};exports[_0xc3b7('0x81')]=function(_0xaf5e46,_0xf16d76,_0x46bba4){return db['FaxAccount'][_0xc3b7('0x69')]({'where':{'id':_0xaf5e46[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0xf16d76,null))[_0xc3b7('0x22')](function(_0x5c6a5e){if(_0x5c6a5e){return db[_0xc3b7('0x82')][_0xc3b7('0x83')](function(_0x470309){return db['FaxApplication'][_0xc3b7('0x37')]({'where':{'FaxAccountId':_0xaf5e46[_0xc3b7('0x58')]['id']},'transaction':_0x470309})['then'](function(_0x100c4f){var _0x4d8b6c=_[_0xc3b7('0x42')](_0xaf5e46[_0xc3b7('0x5e')],function(_0x313eb9){_0x313eb9[_0xc3b7('0x6a')]=_0xaf5e46[_0xc3b7('0x58')]['id'];return _0x313eb9;});return db['FaxApplication'][_0xc3b7('0x84')](_0x4d8b6c,{'transaction':_0x470309});});})[_0xc3b7('0x22')](function(){return db[_0xc3b7('0x85')]['findAndCountAll']({'where':{'FaxAccountId':_0xaf5e46[_0xc3b7('0x58')]['id']},'order':'priority'});});}})[_0xc3b7('0x22')](respondWithResult(_0xf16d76,null))['catch'](handleError(_0xf16d76,null));};exports[_0xc3b7('0x86')]=function(_0x41aeab,_0x17f31b,_0x4c196b){var _0x31a028={};var _0x1d8a6e={};var _0x4a3b47;var _0x571e17;return db[_0xc3b7('0x40')][_0xc3b7('0x69')]({'where':{'id':_0x41aeab[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x17f31b,null))[_0xc3b7('0x22')](function(_0x3fe099){if(_0x3fe099){_0x4a3b47=_0x3fe099;_0x1d8a6e[_0xc3b7('0x48')]=_[_0xc3b7('0x5a')](db[_0xc3b7('0x85')][_0xc3b7('0x5b')]);_0x1d8a6e[_0xc3b7('0x46')]=_[_0xc3b7('0x5a')](_0x41aeab['query']);_0x1d8a6e[_0xc3b7('0x4e')]=_[_0xc3b7('0x43')](_0x1d8a6e[_0xc3b7('0x48')],_0x1d8a6e[_0xc3b7('0x46')]);_0x31a028[_0xc3b7('0x44')]=_['intersection'](_0x1d8a6e[_0xc3b7('0x48')],qs['fields'](_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x45')]));_0x31a028[_0xc3b7('0x44')]=_0x31a028['attributes'][_0xc3b7('0x47')]?_0x31a028[_0xc3b7('0x44')]:_0x1d8a6e[_0xc3b7('0x48')];_0x31a028[_0xc3b7('0x4b')]=qs[_0xc3b7('0x4c')](_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x4c')]);_0x31a028[_0xc3b7('0x4d')]=qs[_0xc3b7('0x4e')](_[_0xc3b7('0x71')](_0x41aeab['query'],_0x1d8a6e['filters']));if(_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x52')]){_0x31a028['where']=_['merge'](_0x31a028['where'],{'$or':_[_0xc3b7('0x42')](_0x31a028[_0xc3b7('0x44')],function(_0x48c982){var _0x195ba2={};_0x195ba2[_0x48c982]={'$like':'%'+_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x52')]+'%'};return _0x195ba2;})});}_0x31a028=_[_0xc3b7('0x4f')]({},_0x31a028,_0x41aeab[_0xc3b7('0x53')]);return _0x4a3b47[_0xc3b7('0x86')](_0x31a028);}})['then'](function(_0x2b5e8b){if(_0x2b5e8b){_0x571e17=_0x2b5e8b[_0xc3b7('0x47')];if(!_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x49')](_0xc3b7('0x4a'))){_0x31a028[_0xc3b7('0x30')]=qs[_0xc3b7('0x30')](_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x30')]);_0x31a028[_0xc3b7('0x2e')]=qs[_0xc3b7('0x2e')](_0x41aeab[_0xc3b7('0x46')][_0xc3b7('0x2e')]);}return _0x4a3b47['getApplications'](_0x31a028);}})['then'](function(_0x16e026){if(_0x16e026){return _0x16e026?{'count':_0x571e17,'rows':_0x16e026}:null;}})[_0xc3b7('0x22')](respondWithResult(_0x17f31b,null))['catch'](handleError(_0x17f31b,null));};function Extension(_0x41b60b,_0x1eaeed,_0x168cd4,_0x27938a){this['context']='from-voip-provider';this[_0xc3b7('0x87')]=_0x41b60b[_0xc3b7('0x88')];this[_0xc3b7('0x89')]=_0x27938a;this[_0xc3b7('0x50')]=_0xc3b7('0x8a');this[_0xc3b7('0x8b')]=_0xc3b7('0x8c');this[_0xc3b7('0x6a')]=_0x41b60b['id'];this[_0xc3b7('0x8d')]=_0x1eaeed;this[_0xc3b7('0x8e')]=_0x168cd4;}function createExtensionsReciveFax(_0x480d13){var _0x18e521=0x1;var _0x582901=[];_0x582901[_0xc3b7('0x8f')](new Extension(_0x480d13,_0x18e521,'',_0xc3b7('0x90')));_0x18e521+=0x1;_0x582901[_0xc3b7('0x8f')](new Extension(_0x480d13,_0x18e521,_0xc3b7('0x91'),_0xc3b7('0x92')));_0x18e521+=0x1;for(var _0x332665 in _0x480d13){if(_0x480d13[_0xc3b7('0x49')](_0x332665)&&(_0x332665===_0xc3b7('0x93')||_0x332665===_0xc3b7('0x88')||_0x332665===_0xc3b7('0x94')||_0x332665==='faxdetect'||_0x332665===_0xc3b7('0x95')||_0x332665===_0xc3b7('0x96')||_0x332665===_0xc3b7('0x97')||_0x332665===_0xc3b7('0x98')||_0x332665===_0xc3b7('0x99'))){_0x582901[_0xc3b7('0x8f')](new Extension(_0x480d13,_0x18e521,_0xc3b7('0x9a')+_0x332665+')='+_0x480d13[_0x332665],_0xc3b7('0x92')));_0x18e521+=0x1;}}_0x582901[_0xc3b7('0x8f')](new Extension(_0x480d13,_0x18e521,'6','Wait'));_0x18e521+=0x1;_0x582901[_0xc3b7('0x8f')](new Extension(_0x480d13,_0x18e521,_0xc3b7('0x9b'),'ReceiveFax'));_0x18e521=0x0;return _0x582901;}exports['addAccountApplications']=function(_0x3cf9c3,_0x331fb0,_0x4709da){var _0x1eb89f;return db['sequelize'][_0xc3b7('0x83')](function(_0x20c3e3){return db[_0xc3b7('0x40')][_0xc3b7('0x5d')](_0x3cf9c3['body'],{'transaction':_0x20c3e3})[_0xc3b7('0x22')](function(_0x3cbd44){_0x1eb89f=_0x3cbd44['get']({'plain':!![]});return db['VoiceExtension'][_0xc3b7('0x84')](createExtensionsReciveFax(_0x1eb89f),{'transaction':_0x20c3e3});});})[_0xc3b7('0x22')](function(){return _0x1eb89f;})[_0xc3b7('0x22')](respondWithResult(_0x331fb0,null))[_0xc3b7('0x56')](handleError(_0x331fb0,null));};exports[_0xc3b7('0x9c')]=function(_0x278aee,_0x8a05e7,_0x4cce99){var _0x31a010;return db[_0xc3b7('0x82')]['transaction'](function(_0x3e1b6f){return db[_0xc3b7('0x40')]['update'](_0x278aee['body'],{'where':{'id':_0x278aee[_0xc3b7('0x5e')]['id']},'transaction':_0x3e1b6f})[_0xc3b7('0x22')](function(_0x204ec8){return db[_0xc3b7('0x9d')][_0xc3b7('0x37')]({'where':{'FaxAccountId':_0x278aee[_0xc3b7('0x5e')]['id']},'transaction':_0x3e1b6f})[_0xc3b7('0x22')](function(_0x22827d){return db[_0xc3b7('0x9d')][_0xc3b7('0x84')](createExtensionsReciveFax(_['omit'](_0x278aee[_0xc3b7('0x5e')],[_0xc3b7('0x9e'),'key',_0xc3b7('0x9f'),'updatedAt',_0xc3b7('0xa0'),_0xc3b7('0xa1')])),{'transaction':_0x3e1b6f});});});})[_0xc3b7('0x22')](function(){return db[_0xc3b7('0x40')]['findById'](_0x278aee[_0xc3b7('0x5e')]['id']);})[_0xc3b7('0x22')](respondWithResult(_0x8a05e7,null))['catch'](handleError(_0x8a05e7,null));};exports[_0xc3b7('0xa2')]=function(_0x39c906,_0x218eb2,_0x21297f){var _0x4b5f30={'raw':!![],'where':{}};var _0x3e7ce8={};var _0x3aecfc={'count':0x0,'rows':[]};return db[_0xc3b7('0x40')][_0xc3b7('0x69')]({'where':{'id':_0x39c906[_0xc3b7('0x58')]['id']}})['then'](handleEntityNotFound(_0x218eb2,null))['then'](function(_0x544c95){if(_0x544c95){_0x3e7ce8['model']=_[_0xc3b7('0x5a')](db[_0xc3b7('0xa3')][_0xc3b7('0x5b')]);_0x3e7ce8['query']=_[_0xc3b7('0x5a')](_0x39c906[_0xc3b7('0x46')]);_0x3e7ce8[_0xc3b7('0x4e')]=_['intersection'](_0x3e7ce8[_0xc3b7('0x48')],_0x3e7ce8[_0xc3b7('0x46')]);_0x4b5f30[_0xc3b7('0x44')]=_[_0xc3b7('0x43')](_0x3e7ce8[_0xc3b7('0x48')],qs[_0xc3b7('0x45')](_0x39c906['query']['fields']));_0x4b5f30[_0xc3b7('0x44')]=_0x4b5f30[_0xc3b7('0x44')][_0xc3b7('0x47')]?_0x4b5f30['attributes']:_0x3e7ce8['model'];if(!_0x39c906[_0xc3b7('0x46')][_0xc3b7('0x49')](_0xc3b7('0x4a'))){_0x4b5f30[_0xc3b7('0x30')]=qs[_0xc3b7('0x30')](_0x39c906[_0xc3b7('0x46')][_0xc3b7('0x30')]);_0x4b5f30['offset']=qs['offset'](_0x39c906['query'][_0xc3b7('0x2e')]);}_0x4b5f30[_0xc3b7('0x4b')]=qs[_0xc3b7('0x4c')](_0x39c906[_0xc3b7('0x46')][_0xc3b7('0x4c')]);_0x4b5f30[_0xc3b7('0x4d')]=qs[_0xc3b7('0x4e')](_[_0xc3b7('0x71')](_0x39c906[_0xc3b7('0x46')],_0x3e7ce8[_0xc3b7('0x4e')]));_0x4b5f30['where'][_0xc3b7('0x6a')]=_0x544c95['id'];if(_0x39c906[_0xc3b7('0x46')][_0xc3b7('0x52')]){_0x4b5f30['where']=_[_0xc3b7('0x4f')](_0x4b5f30['where'],{'$or':_[_0xc3b7('0x42')](_0x4b5f30[_0xc3b7('0x44')],function(_0x5f10c3){var _0x53f5bd={};_0x53f5bd[_0x5f10c3]={'$like':'%'+_0x39c906[_0xc3b7('0x46')]['filter']+'%'};return _0x53f5bd;})});}if(_0x39c906['query'][_0xc3b7('0xa4')]){var _0x3ba593=_0x39c906[_0xc3b7('0x46')]['$gte'][_0xc3b7('0xa5')](',');var _0x85bbb9={};_0x85bbb9[_0x3ba593[0x0]]={'$gte':moment(_0x3ba593[0x1])[_0xc3b7('0xa6')](_0xc3b7('0xa7'))};_0x4b5f30[_0xc3b7('0x4d')]=_[_0xc3b7('0x4f')](_0x4b5f30[_0xc3b7('0x4d')],_0x85bbb9);}_0x4b5f30=_['merge']({},_0x4b5f30,_0x39c906[_0xc3b7('0x53')]);return db[_0xc3b7('0xa3')]['count']({'where':_0x4b5f30['where']})['then'](function(_0x5046d7){_0x3aecfc[_0xc3b7('0x31')]=_0x5046d7;if(_0x39c906[_0xc3b7('0x46')][_0xc3b7('0x6b')]){_0x4b5f30[_0xc3b7('0x54')]=[{'all':!![]}];}return db[_0xc3b7('0xa3')]['findAll'](_0x4b5f30);})['then'](function(_0x24fad7){_0x3aecfc[_0xc3b7('0x55')]=_0x24fad7;return _0x3aecfc;});}})[_0xc3b7('0x22')](respondWithFilteredResult(_0x218eb2,_0x4b5f30))[_0xc3b7('0x56')](handleError(_0x218eb2,null));};exports[_0xc3b7('0x3d')]=function(_0x45e926,_0x29eb80,_0x583090){var _0x2f20cd,_0x2e10bc={},_0x43a721;if(_0x45e926[_0xc3b7('0x5e')]['to']){_0x43a721=_0x45e926['body']['to'][0x0];}return db[_0xc3b7('0x40')][_0xc3b7('0x5c')]({'where':{'id':_0x45e926[_0xc3b7('0x58')]['id']},'include':[{'model':db[_0xc3b7('0xa8')],'as':'List','include':[{'model':db[_0xc3b7('0x78')],'as':_0xc3b7('0xa9'),'where':{'fax':_0x43a721},'limit':0x1,'order':[['updatedAt',_0xc3b7('0xaa')]]}]}]})[_0xc3b7('0x22')](handleEntityNotFound(_0x29eb80,null))[_0xc3b7('0x22')](function(_0x4bb4ac){_0x2f20cd=_0x4bb4ac;if(_0x45e926[_0xc3b7('0x5e')]['attachments']&&_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')]['length']){for(var _0x2d90c0=0x0;_0x2d90c0<_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][_0xc3b7('0x47')];_0x2d90c0+=0x1){_0x45e926[_0xc3b7('0x5e')]['attachments'][_0x2d90c0]={'filename':_0x45e926['body']['attachments'][_0x2d90c0]['name'],'id':_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][_0x2d90c0]['id'],'path':path['join'](config[_0xc3b7('0xac')],_0xc3b7('0xad'),_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][_0x2d90c0]['basename'])};}}return respondWithRpcPromise(_0xc3b7('0xae'),_0xc3b7('0xae'),{'FaxAccountId':_['isNil'](_0x45e926['params']['id'])?undefined:_0x45e926[_0xc3b7('0x58')]['id'],'path':_['isNil'](_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][0x0][_0xc3b7('0x8')])?undefined:_0x45e926[_0xc3b7('0x5e')]['attachments'][0x0]['path'],'fax':_['isNil'](_0x45e926[_0xc3b7('0x5e')]['to'][0x0])?undefined:_0x45e926[_0xc3b7('0x5e')]['to'][0x0]},client9002);})['then'](function(){if(_0x2f20cd){if(_[_0xc3b7('0xaf')](_0x45e926['body'][_0xc3b7('0xb0')])){_0x45e926[_0xc3b7('0x5e')]['from']=util[_0xc3b7('0xa6')]('\x22%s\x22\x20<%s>',_0x2f20cd[_0xc3b7('0x3c')],_0x2f20cd[_0xc3b7('0xb1')]);}if(_0x2f20cd['List']){if(_0x2f20cd[_0xc3b7('0xb2')][_0xc3b7('0xa9')][_0xc3b7('0x47')]){return _0x2f20cd[_0xc3b7('0xb2')][_0xc3b7('0xa9')][0x0];}else{return db[_0xc3b7('0x78')][_0xc3b7('0x5d')](_[_0xc3b7('0xb3')](_0x45e926[_0xc3b7('0x5e')],{'firstName':_0x45e926[_0xc3b7('0x5e')]['to'][0x0],'phone':_0x45e926[_0xc3b7('0x5e')]['to'][0x0],'fax':_0x45e926[_0xc3b7('0x5e')]['to'][0x0],'ListId':_0x2f20cd[_0xc3b7('0xa1')]}));}}else{throw new Error(_0xc3b7('0xb4'));}}else{throw new Error(_0xc3b7('0xb5'));}})[_0xc3b7('0x22')](function(_0x435a11){if(_0x435a11){return db[_0xc3b7('0x75')][_0xc3b7('0x5c')]({'where':{'ContactId':_0x435a11['id'],'closed':![],'FaxAccountId':_0x2f20cd['id']}})[_0xc3b7('0x22')](function(_0x555c40){if(_0x555c40){return[_0x555c40,![]];}return db[_0xc3b7('0x75')][_0xc3b7('0x5d')]({'UserId':_0x45e926['user']['id'],'ContactId':_0x435a11['id'],'FaxAccountId':_0x2f20cd['id'],'fax':_0x45e926['body']['to'][0x0],'firstMsgDirection':_0xc3b7('0xb6'),'Messages':[_[_0xc3b7('0x4f')](_0x45e926['body'],{'read':![],'body':_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][0x0]['filename'],'FaxAccountId':_0x2f20cd['id'],'UserId':_0x45e926[_0xc3b7('0x5f')]['id'],'ContactId':_0x435a11['id'],'AttachmentId':_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][0x0]['id']})]},{'include':[{'model':db[_0xc3b7('0xa3')],'as':_0xc3b7('0xb7')}]})['then'](function(_0x3c9744){return[_0x3c9744,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xc3b7('0xb8')](function(_0x1e1fa6,_0x415257){if(_0x415257){return _0x1e1fa6;}return db[_0xc3b7('0xa3')][_0xc3b7('0x5d')]({'direction':_0xc3b7('0xb6'),'read':![],'body':_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][0x0]['filename'],'FaxAccountId':_0x2f20cd['id'],'FaxInteractionId':_0x1e1fa6['id'],'UserId':_0x45e926[_0xc3b7('0x5f')]['id'],'ContactId':_0x1e1fa6[_0xc3b7('0xb9')],'AttachmentId':_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][0x0]['id']})['then'](function(_0x299833){_0x1e1fa6[_0xc3b7('0xba')][_0xc3b7('0xb7')]=[];_0x1e1fa6[_0xc3b7('0xba')][_0xc3b7('0xb7')][_0xc3b7('0x8f')](_0x299833[_0xc3b7('0xba')]);return _0x1e1fa6;});})[_0xc3b7('0x22')](function(_0x42f21f){respondWithRpcPromise(_0xc3b7('0xbb'),_0xc3b7('0xbb'),{'FaxAccountId':_['isNil'](_0x45e926[_0xc3b7('0x58')]['id'])?undefined:_0x45e926[_0xc3b7('0x58')]['id'],'path':_[_0xc3b7('0xaf')](_0x45e926['body'][_0xc3b7('0xab')][0x0][_0xc3b7('0x8')])?undefined:_0x45e926['body'][_0xc3b7('0xab')][0x0][_0xc3b7('0x8')],'fax':_[_0xc3b7('0xaf')](_0x45e926[_0xc3b7('0x5e')]['to'][0x0])?undefined:_0x45e926[_0xc3b7('0x5e')]['to'][0x0],'AttachmentId':_0x45e926[_0xc3b7('0x5e')][_0xc3b7('0xab')][0x0]['id']},client9002)[_0xc3b7('0x22')](function(_0x2e304b){logger[_0xc3b7('0x23')](_0xc3b7('0xbc'),_0x2e304b);})[_0xc3b7('0x56')](function(_0x523d86){logger[_0xc3b7('0x23')](_0xc3b7('0xbc'),_0x523d86);});return _0x42f21f;})[_0xc3b7('0x22')](respondWithResult(_0x29eb80,null))['catch'](handleError(_0x29eb80,null));};exports[_0xc3b7('0xbd')]=function(_0x37da35,_0x434342,_0x352fea){return db['FaxAccount'][_0xc3b7('0x5c')]({'where':{'id':_0x37da35[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x434342,null))[_0xc3b7('0x22')](function(_0x2e32d4){if(_0x2e32d4){return _0x2e32d4['addAgents'](_0x37da35[_0xc3b7('0x5e')][_0xc3b7('0x6d')],_[_0xc3b7('0x76')](_0x37da35[_0xc3b7('0x5e')],[_0xc3b7('0x6d'),'id'])||{})[_0xc3b7('0xb8')](function(_0x12d2da){for(var _0x2a9fba=0x0;_0x2a9fba<_0x37da35['body']['ids'][_0xc3b7('0x47')];_0x2a9fba+=0x1){socket[_0xc3b7('0xbe')](_0xc3b7('0xbf'),{'UserId':Number(_0x37da35[_0xc3b7('0x5e')][_0xc3b7('0x6d')][_0x2a9fba]),'FaxAccountId':Number(_0x37da35[_0xc3b7('0x58')]['id'])});}return _0x12d2da;});}})[_0xc3b7('0x22')](respondWithResult(_0x434342,null))['catch'](handleError(_0x434342,null));};exports[_0xc3b7('0xc0')]=function(_0x1553fb,_0x453c83,_0x2133b4){return db['FaxAccount']['find']({'where':{'id':_0x1553fb[_0xc3b7('0x58')]['id']}})[_0xc3b7('0x22')](handleEntityNotFound(_0x453c83,null))['then'](function(_0x593619){if(_0x593619){return _0x593619['removeAgents'](_0x1553fb[_0xc3b7('0x46')]['ids'])[_0xc3b7('0x22')](function(){if(_['isArray'](_0x1553fb[_0xc3b7('0x46')][_0xc3b7('0x6d')])){for(var _0x247b12=0x0;_0x247b12<_0x1553fb[_0xc3b7('0x46')][_0xc3b7('0x6d')][_0xc3b7('0x47')];_0x247b12+=0x1){socket['emit'](_0xc3b7('0xc1'),{'UserId':Number(_0x1553fb[_0xc3b7('0x46')][_0xc3b7('0x6d')][_0x247b12]),'FaxAccountId':Number(_0x1553fb[_0xc3b7('0x58')]['id'])});}}else{socket['emit'](_0xc3b7('0xc1'),{'UserId':Number(_0x1553fb[_0xc3b7('0x46')][_0xc3b7('0x6d')]),'FaxAccountId':Number(_0x1553fb[_0xc3b7('0x58')]['id'])});}});}})[_0xc3b7('0x22')](respondWithStatusCode(_0x453c83,null))[_0xc3b7('0x56')](handleError(_0x453c83,null));};exports[_0xc3b7('0xc2')]=function(_0x1f9dc2,_0x541151,_0xc17404){var _0x299486={};var _0x5e212c={};var _0x4fc58b;var _0x378ea0;return db[_0xc3b7('0x40')][_0xc3b7('0x69')]({'where':{'id':_0x1f9dc2[_0xc3b7('0x58')]['id']}})['then'](handleEntityNotFound(_0x541151,null))[_0xc3b7('0x22')](function(_0x292c30){if(_0x292c30){_0x4fc58b=_0x292c30;_0x5e212c[_0xc3b7('0x48')]=_['keys'](db[_0xc3b7('0x7a')]['rawAttributes']);_0x5e212c[_0xc3b7('0x46')]=_[_0xc3b7('0x5a')](_0x1f9dc2['query']);_0x5e212c[_0xc3b7('0x4e')]=_[_0xc3b7('0x43')](_0x5e212c[_0xc3b7('0x48')],_0x5e212c[_0xc3b7('0x46')]);_0x299486[_0xc3b7('0x44')]=_[_0xc3b7('0x43')](_0x5e212c[_0xc3b7('0x48')],qs['fields'](_0x1f9dc2['query'][_0xc3b7('0x45')]));_0x299486[_0xc3b7('0x44')]=_0x299486['attributes'][_0xc3b7('0x47')]?_0x299486[_0xc3b7('0x44')]:_0x5e212c[_0xc3b7('0x48')];_0x299486[_0xc3b7('0x4b')]=qs[_0xc3b7('0x4c')](_0x1f9dc2[_0xc3b7('0x46')][_0xc3b7('0x4c')]);_0x299486[_0xc3b7('0x4d')]=qs[_0xc3b7('0x4e')](_['pick'](_0x1f9dc2[_0xc3b7('0x46')],_0x5e212c[_0xc3b7('0x4e')]));if(_0x1f9dc2[_0xc3b7('0x46')][_0xc3b7('0x52')]){_0x299486[_0xc3b7('0x4d')]=_[_0xc3b7('0x4f')](_0x299486[_0xc3b7('0x4d')],{'$or':_[_0xc3b7('0x42')](_0x299486[_0xc3b7('0x44')],function(_0x2050f1){var _0x247b83={};_0x247b83[_0x2050f1]={'$like':'%'+_0x1f9dc2[_0xc3b7('0x46')]['filter']+'%'};return _0x247b83;})});}_0x299486=_[_0xc3b7('0x4f')]({},_0x299486,_0x1f9dc2[_0xc3b7('0x53')]);return _0x4fc58b[_0xc3b7('0xc2')](_0x299486);}})[_0xc3b7('0x22')](function(_0x488d3d){if(_0x488d3d){_0x378ea0=_0x488d3d[_0xc3b7('0x47')];if(!_0x1f9dc2[_0xc3b7('0x46')][_0xc3b7('0x49')](_0xc3b7('0x4a'))){_0x299486['limit']=qs['limit'](_0x1f9dc2['query']['limit']);_0x299486['offset']=qs[_0xc3b7('0x2e')](_0x1f9dc2['query'][_0xc3b7('0x2e')]);}return _0x4fc58b[_0xc3b7('0xc2')](_0x299486);}})['then'](function(_0x66bdf3){if(_0x66bdf3){return _0x66bdf3?{'count':_0x378ea0,'rows':_0x66bdf3}:null;}})[_0xc3b7('0x22')](respondWithResult(_0x541151,null))[_0xc3b7('0x56')](handleError(_0x541151,null));};
\ No newline at end of file
index 678d1ed..476d2fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf108=['exports','events','FaxAccount','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x466a1a,_0x37933b){var _0x577165=function(_0x4c97b9){while(--_0x4c97b9){_0x466a1a['push'](_0x466a1a['shift']());}};_0x577165(++_0x37933b);}(_0xf108,0x1d9));var _0x8f10=function(_0x485731,_0x3edd32){_0x485731=_0x485731-0x0;var _0x198efc=_0xf108[_0x485731];return _0x198efc;};'use strict';var EventEmitter=require(_0x8f10('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x8f10('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x8f10('0x2')](0x0);var events={'afterCreate':_0x8f10('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x53c74b){return function(_0x440ee7,_0x12a726,_0x511ab7){FaxAccountEvents[_0x8f10('0x4')](_0x53c74b+':'+_0x440ee7['id'],_0x440ee7);FaxAccountEvents[_0x8f10('0x4')](_0x53c74b,_0x440ee7);_0x511ab7(null);};}for(var e in events){if(events[_0x8f10('0x5')](e)){var event=events[e];FaxAccount[_0x8f10('0x6')](e,emitEvent(event));}}module[_0x8f10('0x7')]=FaxAccountEvents;
\ No newline at end of file
+var _0x6614=['emit','hasOwnProperty','exports','events','FaxAccount','setMaxListeners','save','update','remove'];(function(_0xe37bd9,_0x3efbbc){var _0x2d8373=function(_0xb17b37){while(--_0xb17b37){_0xe37bd9['push'](_0xe37bd9['shift']());}};_0x2d8373(++_0x3efbbc);}(_0x6614,0x1e0));var _0x4661=function(_0x2f7aa6,_0x2072e5){_0x2f7aa6=_0x2f7aa6-0x0;var _0x18d006=_0x6614[_0x2f7aa6];return _0x18d006;};'use strict';var EventEmitter=require(_0x4661('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x4661('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x4661('0x2')](0x0);var events={'afterCreate':_0x4661('0x3'),'afterUpdate':_0x4661('0x4'),'afterDestroy':_0x4661('0x5')};function emitEvent(_0x181324){return function(_0x2e997c,_0x409fe5,_0x11066e){FaxAccountEvents[_0x4661('0x6')](_0x181324+':'+_0x2e997c['id'],_0x2e997c);FaxAccountEvents[_0x4661('0x6')](_0x181324,_0x2e997c);_0x11066e(null);};}for(var e in events){if(events[_0x4661('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0x4661('0x8')]=FaxAccountEvents;
\ No newline at end of file
index 0b960e3..4971fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4b3=['exports','define','FaxAccount','fax_accounts','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes'];(function(_0x44606e,_0x2bf244){var _0xe68388=function(_0x488a30){while(--_0x488a30){_0x44606e['push'](_0x44606e['shift']());}};_0xe68388(++_0x2bf244);}(_0xe4b3,0x86));var _0x3e4b=function(_0x4bcc96,_0x41f8c5){_0x4bcc96=_0x4bcc96-0x0;var _0x123884=_0xe4b3[_0x4bcc96];return _0x123884;};'use strict';var _=require(_0x3e4b('0x0'));var util=require(_0x3e4b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3e4b('0x2'));var BPromise=require(_0x3e4b('0x3'));var rp=require(_0x3e4b('0x4'));var fs=require('fs');var path=require(_0x3e4b('0x5'));var rimraf=require(_0x3e4b('0x6'));var config=require(_0x3e4b('0x7'));var attributes=require(_0x3e4b('0x8'));module[_0x3e4b('0x9')]=function(_0xadaa8a,_0x70946){return _0xadaa8a[_0x3e4b('0xa')](_0x3e4b('0xb'),attributes,{'tableName':_0x3e4b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfee8=['bluebird','request-promise','rimraf','../../config/environment','exports','define','FaxAccount','util','../../config/logger','api','moment'];(function(_0x90f47f,_0x28a30a){var _0xd3991e=function(_0x564822){while(--_0x564822){_0x90f47f['push'](_0x90f47f['shift']());}};_0xd3991e(++_0x28a30a);}(_0xfee8,0x11a));var _0x8fee=function(_0x502417,_0x3b4a19){_0x502417=_0x502417-0x0;var _0x32e1f8=_0xfee8[_0x502417];return _0x32e1f8;};'use strict';var _=require('lodash');var util=require(_0x8fee('0x0'));var logger=require(_0x8fee('0x1'))(_0x8fee('0x2'));var moment=require(_0x8fee('0x3'));var BPromise=require(_0x8fee('0x4'));var rp=require(_0x8fee('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8fee('0x6'));var config=require(_0x8fee('0x7'));var attributes=require('./faxAccount.attributes');module[_0x8fee('0x8')]=function(_0x465fd8,_0x2404be){return _0x465fd8[_0x8fee('0x9')](_0x8fee('0xa'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 70f17e1..77530e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa988=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','where','limit','map','include','model','then','GetFaxAccount','body','fax','CmContact','Sequelize','difference','keys','updatedAt','createdAt','CompanyId','ListId','isNil','ValidationError','from\x20is\x20mandatory','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','FaxAccount','find','account','CmList','List','Contacts','DESC','FaxApplication','get','applications','list','orderBy','priority','asc','Applications','length','from','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','ContactId','AttachmentId','UserId','User','name','unshift','agent','Start','startRouting','lodash','util','moment','bluebird','randomstring'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xa988,0x15b));var _0x8a98=function(_0x3406cb,_0x38de2b){_0x3406cb=_0x3406cb-0x0;var _0x429186=_0xa988[_0x3406cb];return _0x429186;};'use strict';var _=require(_0x8a98('0x0'));var util=require(_0x8a98('0x1'));var moment=require(_0x8a98('0x2'));var BPromise=require(_0x8a98('0x3'));var rs=require(_0x8a98('0x4'));var fs=require('fs');var Redis=require(_0x8a98('0x5'));var db=require(_0x8a98('0x6'))['db'];var utils=require(_0x8a98('0x7'));var logger=require(_0x8a98('0x8'))(_0x8a98('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8a98('0xa')]['http']({'port':0x232c});config[_0x8a98('0xb')]=_[_0x8a98('0xc')](config[_0x8a98('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8a98('0xb')]));require('./faxAccount.socket')[_0x8a98('0xd')](socket);function respondWithRpcPromise(_0x44708,_0x3f9b3a,_0x4c3d0d){return new BPromise(function(_0xcb3b2a,_0x2fff97){return client[_0x8a98('0xe')](_0x44708,_0x4c3d0d)['then'](function(_0x284528){logger[_0x8a98('0xf')](_0x8a98('0x10'),_0x3f9b3a,_0x8a98('0x11'));logger[_0x8a98('0x12')](_0x8a98('0x13'),_0x3f9b3a,'request\x20sent',JSON[_0x8a98('0x14')](_0x284528));if(_0x284528[_0x8a98('0x15')]){if(_0x284528[_0x8a98('0x15')][_0x8a98('0x16')]===0x1f4){logger[_0x8a98('0x15')](_0x8a98('0x10'),_0x3f9b3a,_0x284528[_0x8a98('0x15')][_0x8a98('0x17')]);return _0x2fff97(_0x284528[_0x8a98('0x15')][_0x8a98('0x17')]);}logger[_0x8a98('0x15')](_0x8a98('0x10'),_0x3f9b3a,_0x284528[_0x8a98('0x15')][_0x8a98('0x17')]);return _0xcb3b2a(_0x284528[_0x8a98('0x15')][_0x8a98('0x17')]);}else{logger['info'](_0x8a98('0x10'),_0x3f9b3a,_0x8a98('0x11'));_0xcb3b2a(_0x284528[_0x8a98('0x18')]['message']);}})[_0x8a98('0x19')](function(_0x1c93eb){logger['error']('FaxAccount,\x20%s,\x20%s',_0x3f9b3a,_0x1c93eb);_0x2fff97(_0x1c93eb);});});}exports['GetFaxAccount']=function(_0x4b07a5){var _0x18f788=this;return new Promise(function(_0x37be23,_0xa6efc){return db['FaxAccount'][_0x8a98('0x1a')]({'raw':_0x4b07a5[_0x8a98('0x1b')]?_0x4b07a5['options']['raw']===undefined?!![]:![]:!![],'where':_0x4b07a5[_0x8a98('0x1b')]?_0x4b07a5[_0x8a98('0x1b')][_0x8a98('0x1c')]||null:null,'attributes':_0x4b07a5[_0x8a98('0x1b')]?_0x4b07a5[_0x8a98('0x1b')]['attributes']||null:null,'limit':_0x4b07a5[_0x8a98('0x1b')]?_0x4b07a5[_0x8a98('0x1b')][_0x8a98('0x1d')]||null:null,'include':_0x4b07a5[_0x8a98('0x1b')]?_0x4b07a5[_0x8a98('0x1b')]['include']?_[_0x8a98('0x1e')](_0x4b07a5[_0x8a98('0x1b')][_0x8a98('0x1f')],function(_0x16b613){return{'model':db[_0x16b613[_0x8a98('0x20')]],'as':_0x16b613['as'],'attributes':_0x16b613['attributes'],'include':_0x16b613['include']?_['map'](_0x16b613[_0x8a98('0x1f')],function(_0xaa0fd6){return{'model':db[_0xaa0fd6['model']],'as':_0xaa0fd6['as'],'attributes':_0xaa0fd6['attributes'],'include':_0xaa0fd6[_0x8a98('0x1f')]?_[_0x8a98('0x1e')](_0xaa0fd6[_0x8a98('0x1f')],function(_0x2cef88){return{'model':db[_0x2cef88[_0x8a98('0x20')]],'as':_0x2cef88['as'],'attributes':_0x2cef88['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a98('0x21')](function(_0xd55c56){logger[_0x8a98('0xf')](_0x8a98('0x22'),_0x4b07a5);logger['debug'](_0x8a98('0x22'),_0x4b07a5,JSON['stringify'](_0xd55c56));_0x37be23(_0xd55c56);})['catch'](function(_0x3e6969){logger[_0x8a98('0x15')]('GetFaxAccount',_0x3e6969[_0x8a98('0x17')],_0x4b07a5);_0xa6efc(_0x18f788[_0x8a98('0x15')](0x1f4,_0x3e6969['message']));});});};exports['NotifyFaxAccount']=function(_0x26c7cc,_0x5628a2,_0x3d7eb2){var _0x1ad746=this;return new Promise(function(_0x118caf,_0x8065b0){var _0x512bfa={'body':_0x26c7cc[_0x8a98('0x23')],'channel':_0x8a98('0x24')};var _0x2a523b=[];var _0x199703=[];var _0x189660={};return db[_0x8a98('0x25')]['describe']()[_0x8a98('0x21')](function(_0x10e918){if(!_0x10e918){throw new db[(_0x8a98('0x26'))]['ValidationError']('no\x20available\x20attributes');}_0x2a523b=_[_0x8a98('0x27')](_[_0x8a98('0x28')](_0x10e918),['createdAt',_0x8a98('0x29')]);_0x199703=_[_0x8a98('0x27')](_[_0x8a98('0x28')](_0x10e918),[_0x8a98('0x2a'),'updatedAt',_0x8a98('0x2b'),_0x8a98('0x2c')]);if(_0x26c7cc['body']['id']){delete _0x26c7cc[_0x8a98('0x23')]['id'];}if(_[_0x8a98('0x2d')](_0x26c7cc[_0x8a98('0x23')]['from'])){throw new db[(_0x8a98('0x26'))][(_0x8a98('0x2e'))](_0x8a98('0x2f'));}if(_['isNil'](_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x23')])||_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x23')]===''){throw new db[(_0x8a98('0x26'))][(_0x8a98('0x2e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8a98('0x2d')](_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x30')])){throw new db[(_0x8a98('0x26'))][(_0x8a98('0x2e'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x199703);}if(!_['includes'](_0x199703,_0x26c7cc['body'][_0x8a98('0x30')])){throw new db[(_0x8a98('0x26'))][(_0x8a98('0x2e'))](_0x8a98('0x31')+_0x199703);}_0x189660[_0x26c7cc[_0x8a98('0x23')]['mapKey']]=_0x26c7cc[_0x8a98('0x23')]['from'];})[_0x8a98('0x21')](function(){return db[_0x8a98('0x32')][_0x8a98('0x33')]({'where':{'id':_0x26c7cc[_0x8a98('0x34')]['id']},'include':[{'model':db[_0x8a98('0x35')],'as':_0x8a98('0x36'),'include':[{'model':db[_0x8a98('0x25')],'as':_0x8a98('0x37'),'where':_0x189660,'limit':0x1,'order':[[_0x8a98('0x29'),_0x8a98('0x38')]]}]},{'model':db[_0x8a98('0x39')],'as':'Applications'}]});})['then'](function(_0x329de1){if(_0x329de1&&_0x329de1[_0x8a98('0x36')]){var _0x134ccd=_0x329de1[_0x8a98('0x3a')]({'plain':!![]});_0x512bfa['account']=_0x134ccd;_0x512bfa[_0x8a98('0x3b')]=_0x134ccd['Applications'];_0x512bfa[_0x8a98('0x3c')]=_0x134ccd[_0x8a98('0x36')];_0x512bfa[_0x8a98('0x3b')]=_[_0x8a98('0x3d')](_0x512bfa[_0x8a98('0x3b')],[_0x8a98('0x3e')],[_0x8a98('0x3f')]);if(_0x512bfa[_0x8a98('0x34')][_0x8a98('0x40')]){delete _0x512bfa[_0x8a98('0x34')][_0x8a98('0x40')];}if(_0x512bfa[_0x8a98('0x34')][_0x8a98('0x36')]&&_0x512bfa[_0x8a98('0x34')][_0x8a98('0x36')]['Contacts'][_0x8a98('0x41')]){return _0x512bfa[_0x8a98('0x34')]['List']['Contacts'][0x0];}var _0x4196d2=_['defaults'](_0x26c7cc[_0x8a98('0x23')],{'firstName':_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x42')],'ListId':_0x134ccd[_0x8a98('0x2c')]});_0x4196d2[_0x26c7cc[_0x8a98('0x23')]['mapKey']]=_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x42')];return db[_0x8a98('0x25')][_0x8a98('0x43')](_0x4196d2,{'fields':_0x2a523b,'raw':!![]});}})[_0x8a98('0x21')](function(_0x1315e6){_0x512bfa[_0x8a98('0x44')]=_0x1315e6;if(_0x1315e6){var _0x4172ff={'ContactId':_0x1315e6['id'],'FaxAccountId':_0x26c7cc[_0x8a98('0x34')]['id'],'fax':_0x1315e6['fax']};return db[_0x8a98('0x45')]['find']({'where':{'ContactId':_0x1315e6['id'],'closed':![],'FaxAccountId':_0x26c7cc['account']['id']}})['then'](function(_0x41c8b0){if(_0x41c8b0){return[_0x41c8b0,![]];}return db[_0x8a98('0x45')][_0x8a98('0x43')](_0x4172ff)[_0x8a98('0x21')](function(_0x287d31){return[_0x287d31,!![]];});});}else{throw new Error(_0x8a98('0x46'));}})[_0x8a98('0x47')](function(_0x56f96e,_0x2af659){var _0x309370=_0x56f96e[_0x8a98('0x3a')]({'plain':!![]});if(_0x2af659){if(_0x512bfa[_0x8a98('0x34')][_0x8a98('0x48')]){_0x512bfa[_0x8a98('0x3b')][_0x8a98('0x49')]({'id':0x0,'priority':_0x512bfa[_0x8a98('0x3b')][_0x8a98('0x41')]+0x1,'app':_0x8a98('0x4a'),'appdata':_0x8a98('0x4b'),'interval':_0x8a98('0x4c')});}_0x309370[_0x8a98('0x4d')]=!![];}else{_0x309370['created']=![];}_0x512bfa[_0x8a98('0x4e')]=_0x309370;return db['FaxMessage'][_0x8a98('0x43')]({'body':_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x23')],'FaxAccountId':_0x26c7cc['account']['id'],'FaxInteractionId':_0x56f96e['id'],'direction':'in','ContactId':_0x56f96e[_0x8a98('0x4f')],'AttachmentId':_0x26c7cc[_0x8a98('0x23')][_0x8a98('0x50')]});})['then'](function(_0x41723e){_0x512bfa[_0x8a98('0x17')]=_0x41723e;if(_0x512bfa[_0x8a98('0x4e')][_0x8a98('0x51')]){return db[_0x8a98('0x52')][_0x8a98('0x33')]({'attributes':['id',_0x8a98('0x53')],'where':{'id':_0x512bfa[_0x8a98('0x4e')]['UserId']}})[_0x8a98('0x21')](function(_0x2732e4){if(_0x2732e4){_0x512bfa[_0x8a98('0x3b')][_0x8a98('0x54')]({'id':0x0,'priority':0x0,'app':_0x8a98('0x55'),'appdata':_0x2732e4[_0x8a98('0x53')]+','+(_0x512bfa[_0x8a98('0x34')]['waitForTheAssignedAgent']||0xa),'interval':_0x8a98('0x4c')});}return respondWithRpcPromise('Start','startRouting',_0x512bfa);});}return respondWithRpcPromise(_0x8a98('0x56'),_0x8a98('0x57'),_0x512bfa);})[_0x8a98('0x21')](function(_0x2c12f1){_0x118caf(_0x2c12f1);})['catch'](function(_0x21528f){_0x8065b0(_0x1ad746[_0x8a98('0x15')](0x1f4,_0x21528f[_0x8a98('0x17')]));});});};
\ No newline at end of file
+var _0x4868=['no\x20available\x20attributes','keys','createdAt','difference','updatedAt','CompanyId','ListId','Sequelize','from\x20is\x20mandatory','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','find','CmList','List','Contacts','FaxApplication','get','account','applications','Applications','list','asc','length','from','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','unmanaged','*,*,*,*','created','FaxMessage','interaction','UserId','User','name','unshift','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','GetFaxAccount','FaxAccount','options','raw','where','attributes','include','map','model','NotifyFaxAccount','body','fax','CmContact','describe','ValidationError'];(function(_0x3b62be,_0x561cdd){var _0x131be9=function(_0x63d2e4){while(--_0x63d2e4){_0x3b62be['push'](_0x3b62be['shift']());}};_0x131be9(++_0x561cdd);}(_0x4868,0x147));var _0x8486=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4868[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x8486('0x0'));var moment=require(_0x8486('0x1'));var BPromise=require(_0x8486('0x2'));var rs=require(_0x8486('0x3'));var fs=require('fs');var Redis=require(_0x8486('0x4'));var db=require(_0x8486('0x5'))['db'];var utils=require(_0x8486('0x6'));var logger=require('../../config/logger')(_0x8486('0x7'));var config=require(_0x8486('0x8'));var jayson=require(_0x8486('0x9'));var client=jayson[_0x8486('0xa')]['http']({'port':0x232c});config[_0x8486('0xb')]=_[_0x8486('0xc')](config[_0x8486('0xb')],{'host':_0x8486('0xd'),'port':0x18eb});var socket=require(_0x8486('0xe'))(new Redis(config['redis']));require(_0x8486('0xf'))[_0x8486('0x10')](socket);function respondWithRpcPromise(_0x4dff1f,_0x3aceb8,_0x29433d){return new BPromise(function(_0x139c38,_0x15211d){return client[_0x8486('0x11')](_0x4dff1f,_0x29433d)[_0x8486('0x12')](function(_0x117a02){logger[_0x8486('0x13')]('FaxAccount,\x20%s,\x20%s',_0x3aceb8,'request\x20sent');logger[_0x8486('0x14')](_0x8486('0x15'),_0x3aceb8,_0x8486('0x16'),JSON[_0x8486('0x17')](_0x117a02));if(_0x117a02[_0x8486('0x18')]){if(_0x117a02[_0x8486('0x18')][_0x8486('0x19')]===0x1f4){logger[_0x8486('0x18')](_0x8486('0x1a'),_0x3aceb8,_0x117a02['error']['message']);return _0x15211d(_0x117a02['error'][_0x8486('0x1b')]);}logger[_0x8486('0x18')](_0x8486('0x1a'),_0x3aceb8,_0x117a02[_0x8486('0x18')][_0x8486('0x1b')]);return _0x139c38(_0x117a02[_0x8486('0x18')]['message']);}else{logger['info'](_0x8486('0x1a'),_0x3aceb8,'request\x20sent');_0x139c38(_0x117a02[_0x8486('0x1c')][_0x8486('0x1b')]);}})[_0x8486('0x1d')](function(_0xe6acf9){logger['error'](_0x8486('0x1a'),_0x3aceb8,_0xe6acf9);_0x15211d(_0xe6acf9);});});}exports[_0x8486('0x1e')]=function(_0x43d719){var _0x4ba27e=this;return new Promise(function(_0x155d59,_0x23fef3){return db[_0x8486('0x1f')]['findAll']({'raw':_0x43d719[_0x8486('0x20')]?_0x43d719['options'][_0x8486('0x21')]===undefined?!![]:![]:!![],'where':_0x43d719[_0x8486('0x20')]?_0x43d719['options'][_0x8486('0x22')]||null:null,'attributes':_0x43d719['options']?_0x43d719['options'][_0x8486('0x23')]||null:null,'limit':_0x43d719['options']?_0x43d719[_0x8486('0x20')]['limit']||null:null,'include':_0x43d719[_0x8486('0x20')]?_0x43d719[_0x8486('0x20')][_0x8486('0x24')]?_['map'](_0x43d719[_0x8486('0x20')][_0x8486('0x24')],function(_0x423fb9){return{'model':db[_0x423fb9['model']],'as':_0x423fb9['as'],'attributes':_0x423fb9[_0x8486('0x23')],'include':_0x423fb9['include']?_[_0x8486('0x25')](_0x423fb9[_0x8486('0x24')],function(_0x308d2f){return{'model':db[_0x308d2f[_0x8486('0x26')]],'as':_0x308d2f['as'],'attributes':_0x308d2f[_0x8486('0x23')],'include':_0x308d2f[_0x8486('0x24')]?_[_0x8486('0x25')](_0x308d2f[_0x8486('0x24')],function(_0x4f29e1){return{'model':db[_0x4f29e1[_0x8486('0x26')]],'as':_0x4f29e1['as'],'attributes':_0x4f29e1[_0x8486('0x23')]};}):[]};}):[]};}):[]:[]})[_0x8486('0x12')](function(_0x2f61e9){logger[_0x8486('0x13')](_0x8486('0x1e'),_0x43d719);logger[_0x8486('0x14')](_0x8486('0x1e'),_0x43d719,JSON['stringify'](_0x2f61e9));_0x155d59(_0x2f61e9);})[_0x8486('0x1d')](function(_0xfe0da2){logger[_0x8486('0x18')]('GetFaxAccount',_0xfe0da2['message'],_0x43d719);_0x23fef3(_0x4ba27e[_0x8486('0x18')](0x1f4,_0xfe0da2['message']));});});};exports[_0x8486('0x27')]=function(_0x4d0ccf,_0x227e54,_0x7531df){var _0x56df1b=this;return new Promise(function(_0x108a2c,_0x47f01e){var _0x4e9ca6={'body':_0x4d0ccf[_0x8486('0x28')],'channel':_0x8486('0x29')};var _0x5eeeb0=[];var _0x896614=[];var _0x26bac2={};return db[_0x8486('0x2a')][_0x8486('0x2b')]()[_0x8486('0x12')](function(_0x5e9e2b){if(!_0x5e9e2b){throw new db['Sequelize'][(_0x8486('0x2c'))](_0x8486('0x2d'));}_0x5eeeb0=_['difference'](_[_0x8486('0x2e')](_0x5e9e2b),[_0x8486('0x2f'),'updatedAt']);_0x896614=_[_0x8486('0x30')](_[_0x8486('0x2e')](_0x5e9e2b),[_0x8486('0x2f'),_0x8486('0x31'),_0x8486('0x32'),_0x8486('0x33')]);if(_0x4d0ccf[_0x8486('0x28')]['id']){delete _0x4d0ccf['body']['id'];}if(_['isNil'](_0x4d0ccf[_0x8486('0x28')]['from'])){throw new db[(_0x8486('0x34'))][(_0x8486('0x2c'))](_0x8486('0x35'));}if(_[_0x8486('0x36')](_0x4d0ccf['body']['body'])||_0x4d0ccf[_0x8486('0x28')]['body']===''){throw new db['Sequelize'][(_0x8486('0x2c'))](_0x8486('0x37'));}if(_[_0x8486('0x36')](_0x4d0ccf[_0x8486('0x28')][_0x8486('0x38')])){throw new db[(_0x8486('0x34'))][(_0x8486('0x2c'))](_0x8486('0x39')+_0x896614);}if(!_[_0x8486('0x3a')](_0x896614,_0x4d0ccf[_0x8486('0x28')][_0x8486('0x38')])){throw new db[(_0x8486('0x34'))][(_0x8486('0x2c'))](_0x8486('0x3b')+_0x896614);}_0x26bac2[_0x4d0ccf[_0x8486('0x28')][_0x8486('0x38')]]=_0x4d0ccf[_0x8486('0x28')]['from'];})[_0x8486('0x12')](function(){return db['FaxAccount'][_0x8486('0x3c')]({'where':{'id':_0x4d0ccf['account']['id']},'include':[{'model':db[_0x8486('0x3d')],'as':_0x8486('0x3e'),'include':[{'model':db[_0x8486('0x2a')],'as':_0x8486('0x3f'),'where':_0x26bac2,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x8486('0x40')],'as':'Applications'}]});})['then'](function(_0x11c1a8){if(_0x11c1a8&&_0x11c1a8[_0x8486('0x3e')]){var _0x64451d=_0x11c1a8[_0x8486('0x41')]({'plain':!![]});_0x4e9ca6[_0x8486('0x42')]=_0x64451d;_0x4e9ca6[_0x8486('0x43')]=_0x64451d[_0x8486('0x44')];_0x4e9ca6[_0x8486('0x45')]=_0x64451d[_0x8486('0x3e')];_0x4e9ca6[_0x8486('0x43')]=_['orderBy'](_0x4e9ca6[_0x8486('0x43')],['priority'],[_0x8486('0x46')]);if(_0x4e9ca6[_0x8486('0x42')]['Applications']){delete _0x4e9ca6['account'][_0x8486('0x44')];}if(_0x4e9ca6[_0x8486('0x42')][_0x8486('0x3e')]&&_0x4e9ca6['account'][_0x8486('0x3e')]['Contacts'][_0x8486('0x47')]){return _0x4e9ca6[_0x8486('0x42')]['List'][_0x8486('0x3f')][0x0];}var _0x470200=_['defaults'](_0x4d0ccf[_0x8486('0x28')],{'firstName':_0x4d0ccf[_0x8486('0x28')][_0x8486('0x48')],'ListId':_0x64451d[_0x8486('0x33')]});_0x470200[_0x4d0ccf[_0x8486('0x28')]['mapKey']]=_0x4d0ccf[_0x8486('0x28')][_0x8486('0x48')];return db[_0x8486('0x2a')][_0x8486('0x49')](_0x470200,{'fields':_0x5eeeb0,'raw':!![]});}})['then'](function(_0x38b2ba){_0x4e9ca6[_0x8486('0x4a')]=_0x38b2ba;if(_0x38b2ba){var _0x591a75={'ContactId':_0x38b2ba['id'],'FaxAccountId':_0x4d0ccf[_0x8486('0x42')]['id'],'fax':_0x38b2ba[_0x8486('0x29')]};return db[_0x8486('0x4b')][_0x8486('0x3c')]({'where':{'ContactId':_0x38b2ba['id'],'closed':![],'FaxAccountId':_0x4d0ccf[_0x8486('0x42')]['id']}})[_0x8486('0x12')](function(_0x158b2b){if(_0x158b2b){return[_0x158b2b,![]];}return db['FaxInteraction'][_0x8486('0x49')](_0x591a75)[_0x8486('0x12')](function(_0x150907){return[_0x150907,!![]];});});}else{throw new Error(_0x8486('0x4c'));}})[_0x8486('0x4d')](function(_0x558b84,_0x3fbc8f){var _0x901464=_0x558b84['get']({'plain':!![]});if(_0x3fbc8f){if(_0x4e9ca6[_0x8486('0x42')][_0x8486('0x4e')]){_0x4e9ca6[_0x8486('0x43')][_0x8486('0x4f')]({'id':0x0,'priority':_0x4e9ca6['applications'][_0x8486('0x47')]+0x1,'app':_0x8486('0x50'),'appdata':_0x8486('0x51'),'interval':_0x8486('0x52')});}_0x901464[_0x8486('0x53')]=!![];}else{_0x901464[_0x8486('0x53')]=![];}_0x4e9ca6['interaction']=_0x901464;return db[_0x8486('0x54')][_0x8486('0x49')]({'body':_0x4d0ccf['body']['body'],'FaxAccountId':_0x4d0ccf[_0x8486('0x42')]['id'],'FaxInteractionId':_0x558b84['id'],'direction':'in','ContactId':_0x558b84['ContactId'],'AttachmentId':_0x4d0ccf[_0x8486('0x28')]['AttachmentId']});})['then'](function(_0x309b2a){_0x4e9ca6[_0x8486('0x1b')]=_0x309b2a;if(_0x4e9ca6[_0x8486('0x55')][_0x8486('0x56')]){return db[_0x8486('0x57')][_0x8486('0x3c')]({'attributes':['id',_0x8486('0x58')],'where':{'id':_0x4e9ca6[_0x8486('0x55')]['UserId']}})['then'](function(_0x359aa6){if(_0x359aa6){_0x4e9ca6[_0x8486('0x43')][_0x8486('0x59')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x359aa6['name']+','+(_0x4e9ca6[_0x8486('0x42')][_0x8486('0x5a')]||0xa),'interval':_0x8486('0x52')});}return respondWithRpcPromise(_0x8486('0x5b'),_0x8486('0x5c'),_0x4e9ca6);});}return respondWithRpcPromise(_0x8486('0x5b'),_0x8486('0x5c'),_0x4e9ca6);})[_0x8486('0x12')](function(_0x1a0663){_0x108a2c(_0x1a0663);})['catch'](function(_0x1c436b){_0x47f01e(_0x56df1b['error'](0x1f4,_0x1c436b['message']));});});};
\ No newline at end of file
index 6075b6c..fb0c0cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb7=['removeListener','register','length','faxAccount:','./faxAccount.events','save','remove','update','emit'];(function(_0x24d0b7,_0x580204){var _0x2206a1=function(_0x1dd7c1){while(--_0x1dd7c1){_0x24d0b7['push'](_0x24d0b7['shift']());}};_0x2206a1(++_0x580204);}(_0x8eb7,0xc1));var _0x78eb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8eb7[_0x3dd15e];return _0x231fd0;};'use strict';var FaxAccountEvents=require(_0x78eb('0x0'));var events=[_0x78eb('0x1'),_0x78eb('0x2'),_0x78eb('0x3')];function createListener(_0x9ae989,_0x9a0db9){return function(_0x356843){_0x9a0db9[_0x78eb('0x4')](_0x9ae989,_0x356843);};}function removeListener(_0x564825,_0x153566){return function(){FaxAccountEvents[_0x78eb('0x5')](_0x564825,_0x153566);};}exports[_0x78eb('0x6')]=function(_0x44fed8){for(var _0x30ffea=0x0,_0x50a2bd=events[_0x78eb('0x7')];_0x30ffea<_0x50a2bd;_0x30ffea++){var _0xd4528=events[_0x30ffea];var _0x479c79=createListener(_0x78eb('0x8')+_0xd4528,_0x44fed8);FaxAccountEvents['on'](_0xd4528,_0x479c79);}};
\ No newline at end of file
+var _0x9e18=['save','remove','update','emit','removeListener','register','faxAccount:','./faxAccount.events'];(function(_0x3353a7,_0x2b0183){var _0x2ccd71=function(_0x32e4be){while(--_0x32e4be){_0x3353a7['push'](_0x3353a7['shift']());}};_0x2ccd71(++_0x2b0183);}(_0x9e18,0x7f));var _0x89e1=function(_0x97cc12,_0x54d583){_0x97cc12=_0x97cc12-0x0;var _0x5a25d7=_0x9e18[_0x97cc12];return _0x5a25d7;};'use strict';var FaxAccountEvents=require(_0x89e1('0x0'));var events=[_0x89e1('0x1'),_0x89e1('0x2'),_0x89e1('0x3')];function createListener(_0x35900b,_0x1ba7e8){return function(_0x29e31e){_0x1ba7e8[_0x89e1('0x4')](_0x35900b,_0x29e31e);};}function removeListener(_0x375468,_0x7c94a5){return function(){FaxAccountEvents[_0x89e1('0x5')](_0x375468,_0x7c94a5);};}exports[_0x89e1('0x6')]=function(_0x44ca7c){for(var _0x4e5128=0x0,_0x1b69f3=events['length'];_0x4e5128<_0x1b69f3;_0x4e5128++){var _0x4c3f0b=events[_0x4e5128];var _0x518587=createListener(_0x89e1('0x7')+_0x4c3f0b,_0x44ca7c);FaxAccountEvents['on'](_0x4c3f0b,_0x518587);}};
\ No newline at end of file
index a3a771b..717c7cb 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(_0x5a7bb6,_0x412e93){var _0x30ab63=function(_0x1f9768){while(--_0x1f9768){_0x5a7bb6['push'](_0x5a7bb6['shift']());}};_0x30ab63(++_0x412e93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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(_0x2809bc,_0x3af5e1){var _0x4c2021=function(_0x481e0b){while(--_0x481e0b){_0x2809bc['push'](_0x2809bc['shift']());}};_0x4c2021(++_0x3af5e1);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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 b8c09ab..81f96a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54c4=['INTEGER','noop','TEXT','STRING','*,*,*,*','exports'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x54c4,0x16d));var _0x454c=function(_0x149ca7,_0x36cabe){_0x149ca7=_0x149ca7-0x0;var _0x5717d1=_0x54c4[_0x149ca7];return _0x5717d1;};'use strict';var Sequelize=require('sequelize');module[_0x454c('0x0')]={'priority':{'type':Sequelize[_0x454c('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x454c('0x2')},'appdata':{'type':Sequelize[_0x454c('0x3')]()},'description':{'type':Sequelize[_0x454c('0x4')]},'interval':{'type':Sequelize[_0x454c('0x4')],'defaultValue':_0x454c('0x5')}};
\ No newline at end of file
+var _0x0185=['STRING','*,*,*,*','sequelize','INTEGER','TEXT'];(function(_0x434249,_0x3d7b77){var _0x1cfcde=function(_0x41fa18){while(--_0x41fa18){_0x434249['push'](_0x434249['shift']());}};_0x1cfcde(++_0x3d7b77);}(_0x0185,0x183));var _0x5018=function(_0x291f8b,_0x3b5591){_0x291f8b=_0x291f8b-0x0;var _0x275171=_0x0185[_0x291f8b];return _0x275171;};'use strict';var Sequelize=require(_0x5018('0x0'));module['exports']={'priority':{'type':Sequelize[_0x5018('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x5018('0x2')]()},'description':{'type':Sequelize[_0x5018('0x3')]},'interval':{'type':Sequelize[_0x5018('0x3')],'defaultValue':_0x5018('0x4')}};
\ No newline at end of file
index 383ba20..08b8d01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdce7=['save','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','keys','FaxApplication','includeAll','include','find','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','ejs','fs-extra','squel','crypto','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/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xdce7,0x75));var _0x7dce=function(_0x881c21,_0x22f1ce){_0x881c21=_0x881c21-0x0;var _0xcf0b84=_0xdce7[_0x881c21];return _0xcf0b84;};'use strict';var emlformat=require(_0x7dce('0x0'));var rimraf=require(_0x7dce('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7dce('0x2'));var rp=require(_0x7dce('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7dce('0x4'));var util=require(_0x7dce('0x5'));var path=require(_0x7dce('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7dce('0x7'));var fs=require('fs');var fs_extra=require(_0x7dce('0x8'));var _=require('lodash');var squel=require(_0x7dce('0x9'));var crypto=require(_0x7dce('0xa'));var jsforce=require(_0x7dce('0xb'));var deskjs=require(_0x7dce('0xc'));var toCsv=require(_0x7dce('0xd'));var querystring=require(_0x7dce('0xe'));var Papa=require('papaparse');var Redis=require(_0x7dce('0xf'));var authService=require(_0x7dce('0x10'));var qs=require(_0x7dce('0x11'));var as=require(_0x7dce('0x12'));var hardwareService=require(_0x7dce('0x13'));var logger=require(_0x7dce('0x14'))(_0x7dce('0x15'));var utils=require(_0x7dce('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7dce('0x17'));var db=require(_0x7dce('0x18'))['db'];function respondWithStatusCode(_0x30402f,_0x2032ba){_0x2032ba=_0x2032ba||0xcc;return function(_0x4847cc){if(_0x4847cc){return _0x30402f[_0x7dce('0x19')](_0x2032ba);}return _0x30402f[_0x7dce('0x1a')](_0x2032ba)['end']();};}function respondWithResult(_0x584832,_0x34acd6){_0x34acd6=_0x34acd6||0xc8;return function(_0x32faa6){if(_0x32faa6){return _0x584832['status'](_0x34acd6)[_0x7dce('0x1b')](_0x32faa6);}};}function respondWithFilteredResult(_0x29917f,_0x42d94d){return function(_0x5c8238){if(_0x5c8238){var _0x1d2bfc=typeof _0x42d94d[_0x7dce('0x1c')]===_0x7dce('0x1d')&&typeof _0x42d94d['limit']===_0x7dce('0x1d');var _0x3d8fe8=_0x5c8238[_0x7dce('0x1e')];var _0x1ba698=_0x1d2bfc?0x0:_0x42d94d[_0x7dce('0x1c')];var _0x3f4429=_0x1d2bfc?_0x5c8238[_0x7dce('0x1e')]:_0x42d94d[_0x7dce('0x1c')]+_0x42d94d[_0x7dce('0x1f')];var _0x48c9e5;if(_0x3f4429>=_0x3d8fe8){_0x3f4429=_0x3d8fe8;_0x48c9e5=0xc8;}else{_0x48c9e5=0xce;}_0x29917f[_0x7dce('0x1a')](_0x48c9e5);return _0x29917f[_0x7dce('0x20')]('Content-Range',_0x1ba698+'-'+_0x3f4429+'/'+_0x3d8fe8)[_0x7dce('0x1b')](_0x5c8238);}return null;};}function patchUpdates(_0x10ed1f){return function(_0x454edf){try{jsonpatch[_0x7dce('0x21')](_0x454edf,_0x10ed1f,!![]);}catch(_0x7d3c33){return BPromise[_0x7dce('0x22')](_0x7d3c33);}return _0x454edf[_0x7dce('0x23')]();};}function saveUpdates(_0x36c34e,_0xa3249a){return function(_0x26bb13){if(_0x26bb13){return _0x26bb13[_0x7dce('0x24')](_0x36c34e)[_0x7dce('0x25')](function(_0x22b392){return _0x22b392;});}return null;};}function removeEntity(_0x17b72e,_0x1ad8ab){return function(_0x1dee7f){if(_0x1dee7f){return _0x1dee7f['destroy']()[_0x7dce('0x25')](function(){_0x17b72e[_0x7dce('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d8210,_0x3aa81b){return function(_0x5ac963){if(!_0x5ac963){_0x4d8210['sendStatus'](0x194);}return _0x5ac963;};}function handleError(_0x350dfb,_0x3e72de){_0x3e72de=_0x3e72de||0x1f4;return function(_0x4e3f95){logger['error'](_0x4e3f95[_0x7dce('0x26')]);if(_0x4e3f95[_0x7dce('0x27')]){delete _0x4e3f95[_0x7dce('0x27')];}_0x350dfb[_0x7dce('0x1a')](_0x3e72de)[_0x7dce('0x28')](_0x4e3f95);};}exports[_0x7dce('0x29')]=function(_0x3ea785,_0x420cf0){var _0x54740b={},_0x260ef4={},_0x236185={'count':0x0,'rows':[]};var _0x206cdf=_[_0x7dce('0x2a')](db['FaxApplication'][_0x7dce('0x2b')],function(_0x17996c){return{'name':_0x17996c[_0x7dce('0x2c')],'type':_0x17996c[_0x7dce('0x2d')]['key']};});_0x260ef4[_0x7dce('0x2e')]=_[_0x7dce('0x2a')](_0x206cdf,_0x7dce('0x27'));_0x260ef4['query']=_['keys'](_0x3ea785[_0x7dce('0x2f')]);_0x260ef4[_0x7dce('0x30')]=_[_0x7dce('0x31')](_0x260ef4[_0x7dce('0x2e')],_0x260ef4[_0x7dce('0x2f')]);_0x54740b[_0x7dce('0x32')]=_['intersection'](_0x260ef4[_0x7dce('0x2e')],qs[_0x7dce('0x33')](_0x3ea785[_0x7dce('0x2f')][_0x7dce('0x33')]));_0x54740b[_0x7dce('0x32')]=_0x54740b[_0x7dce('0x32')][_0x7dce('0x34')]?_0x54740b['attributes']:_0x260ef4[_0x7dce('0x2e')];if(!_0x3ea785[_0x7dce('0x2f')][_0x7dce('0x35')](_0x7dce('0x36'))){_0x54740b[_0x7dce('0x1f')]=qs['limit'](_0x3ea785[_0x7dce('0x2f')]['limit']);_0x54740b['offset']=qs[_0x7dce('0x1c')](_0x3ea785['query'][_0x7dce('0x1c')]);}_0x54740b[_0x7dce('0x37')]=qs['sort'](_0x3ea785[_0x7dce('0x2f')][_0x7dce('0x38')]);_0x54740b[_0x7dce('0x39')]=qs[_0x7dce('0x30')](_[_0x7dce('0x3a')](_0x3ea785['query'],_0x260ef4[_0x7dce('0x30')]),_0x206cdf);if(_0x3ea785['query'][_0x7dce('0x3b')]){_0x54740b[_0x7dce('0x39')]=_[_0x7dce('0x3c')](_0x54740b[_0x7dce('0x39')],{'$or':_[_0x7dce('0x2a')](_0x206cdf,function(_0x1f1acf){if(_0x1f1acf[_0x7dce('0x2d')]!==_0x7dce('0x3d')){var _0x1effaf={};_0x1effaf[_0x1f1acf[_0x7dce('0x27')]]={'$like':'%'+_0x3ea785[_0x7dce('0x2f')][_0x7dce('0x3b')]+'%'};return _0x1effaf;}})});}_0x54740b=_[_0x7dce('0x3c')]({},_0x54740b,_0x3ea785[_0x7dce('0x3e')]);var _0x320d61={'where':_0x54740b[_0x7dce('0x39')]};return db['FaxApplication'][_0x7dce('0x1e')](_0x320d61)[_0x7dce('0x25')](function(_0x21ae84){_0x236185[_0x7dce('0x1e')]=_0x21ae84;if(_0x3ea785['query']['includeAll']){_0x54740b['include']=[{'all':!![]}];}return db['FaxApplication'][_0x7dce('0x3f')](_0x54740b);})[_0x7dce('0x25')](function(_0x3ee046){_0x236185[_0x7dce('0x40')]=_0x3ee046;return _0x236185;})[_0x7dce('0x25')](respondWithFilteredResult(_0x420cf0,_0x54740b))[_0x7dce('0x41')](handleError(_0x420cf0,null));};exports[_0x7dce('0x42')]=function(_0x3cf36d,_0x210251){var _0x27f617={'raw':!![],'where':{'id':_0x3cf36d[_0x7dce('0x43')]['id']}},_0x3c9bed={};_0x3c9bed[_0x7dce('0x2e')]=_[_0x7dce('0x44')](db[_0x7dce('0x45')][_0x7dce('0x2b')]);_0x3c9bed[_0x7dce('0x2f')]=_[_0x7dce('0x44')](_0x3cf36d[_0x7dce('0x2f')]);_0x3c9bed[_0x7dce('0x30')]=_['intersection'](_0x3c9bed['model'],_0x3c9bed[_0x7dce('0x2f')]);_0x27f617['attributes']=_['intersection'](_0x3c9bed['model'],qs['fields'](_0x3cf36d[_0x7dce('0x2f')][_0x7dce('0x33')]));_0x27f617[_0x7dce('0x32')]=_0x27f617[_0x7dce('0x32')][_0x7dce('0x34')]?_0x27f617[_0x7dce('0x32')]:_0x3c9bed[_0x7dce('0x2e')];if(_0x3cf36d[_0x7dce('0x2f')][_0x7dce('0x46')]){_0x27f617[_0x7dce('0x47')]=[{'all':!![]}];}_0x27f617=_[_0x7dce('0x3c')]({},_0x27f617,_0x3cf36d[_0x7dce('0x3e')]);return db[_0x7dce('0x45')][_0x7dce('0x48')](_0x27f617)[_0x7dce('0x25')](handleEntityNotFound(_0x210251,null))['then'](respondWithResult(_0x210251,null))[_0x7dce('0x41')](handleError(_0x210251,null));};exports['create']=function(_0x5aa1e9,_0x3b8b88){return db[_0x7dce('0x45')][_0x7dce('0x49')](_0x5aa1e9[_0x7dce('0x4a')],{})[_0x7dce('0x25')](respondWithResult(_0x3b8b88,0xc9))[_0x7dce('0x41')](handleError(_0x3b8b88,null));};exports['update']=function(_0x316fe8,_0x582cbf){if(_0x316fe8[_0x7dce('0x4a')]['id']){delete _0x316fe8['body']['id'];}return db['FaxApplication'][_0x7dce('0x48')]({'where':{'id':_0x316fe8[_0x7dce('0x43')]['id']}})[_0x7dce('0x25')](handleEntityNotFound(_0x582cbf,null))[_0x7dce('0x25')](saveUpdates(_0x316fe8[_0x7dce('0x4a')],null))[_0x7dce('0x25')](respondWithResult(_0x582cbf,null))[_0x7dce('0x41')](handleError(_0x582cbf,null));};exports[_0x7dce('0x4b')]=function(_0x37d490,_0xba63ed){return db[_0x7dce('0x45')][_0x7dce('0x48')]({'where':{'id':_0x37d490[_0x7dce('0x43')]['id']}})[_0x7dce('0x25')](handleEntityNotFound(_0xba63ed,null))[_0x7dce('0x25')](removeEntity(_0xba63ed,null))[_0x7dce('0x41')](handleError(_0xba63ed,null));};
\ No newline at end of file
+var _0x3407=['fast-json-patch','bluebird','mustache','util','to-csv','ejs','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','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','fieldName','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','FaxApplication','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','options','create','body','find','eml-format','zip-dir'];(function(_0x4c0629,_0xc61b41){var _0xe34b2a=function(_0x3c01ca){while(--_0x3c01ca){_0x4c0629['push'](_0x4c0629['shift']());}};_0xe34b2a(++_0xc61b41);}(_0x3407,0xeb));var _0x7340=function(_0x5639de,_0xdda6f1){_0x5639de=_0x5639de-0x0;var _0xb2c1e8=_0x3407[_0x5639de];return _0xb2c1e8;};'use strict';var emlformat=require(_0x7340('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7340('0x1'));var jsonpatch=require(_0x7340('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7340('0x3'));var Mustache=require(_0x7340('0x4'));var util=require(_0x7340('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x7340('0x6'));var ejs=require(_0x7340('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7340('0x8'));var squel=require(_0x7340('0x9'));var crypto=require('crypto');var jsforce=require(_0x7340('0xa'));var deskjs=require(_0x7340('0xb'));var toCsv=require(_0x7340('0x6'));var querystring=require(_0x7340('0xc'));var Papa=require(_0x7340('0xd'));var Redis=require(_0x7340('0xe'));var authService=require(_0x7340('0xf'));var qs=require(_0x7340('0x10'));var as=require(_0x7340('0x11'));var hardwareService=require(_0x7340('0x12'));var logger=require(_0x7340('0x13'))(_0x7340('0x14'));var utils=require(_0x7340('0x15'));var config=require(_0x7340('0x16'));var licenseUtil=require(_0x7340('0x17'));var db=require(_0x7340('0x18'))['db'];function respondWithStatusCode(_0x40e09f,_0x249ef0){_0x249ef0=_0x249ef0||0xcc;return function(_0x123ec7){if(_0x123ec7){return _0x40e09f[_0x7340('0x19')](_0x249ef0);}return _0x40e09f[_0x7340('0x1a')](_0x249ef0)[_0x7340('0x1b')]();};}function respondWithResult(_0x35439d,_0x3dfac8){_0x3dfac8=_0x3dfac8||0xc8;return function(_0x59a4ad){if(_0x59a4ad){return _0x35439d[_0x7340('0x1a')](_0x3dfac8)[_0x7340('0x1c')](_0x59a4ad);}};}function respondWithFilteredResult(_0x2faa66,_0x4ce2b6){return function(_0x5e0569){if(_0x5e0569){var _0x51d40c=typeof _0x4ce2b6['offset']===_0x7340('0x1d')&&typeof _0x4ce2b6[_0x7340('0x1e')]===_0x7340('0x1d');var _0x1a1795=_0x5e0569[_0x7340('0x1f')];var _0x9fc114=_0x51d40c?0x0:_0x4ce2b6[_0x7340('0x20')];var _0x34961d=_0x51d40c?_0x5e0569['count']:_0x4ce2b6[_0x7340('0x20')]+_0x4ce2b6[_0x7340('0x1e')];var _0x5134c2;if(_0x34961d>=_0x1a1795){_0x34961d=_0x1a1795;_0x5134c2=0xc8;}else{_0x5134c2=0xce;}_0x2faa66[_0x7340('0x1a')](_0x5134c2);return _0x2faa66[_0x7340('0x21')](_0x7340('0x22'),_0x9fc114+'-'+_0x34961d+'/'+_0x1a1795)[_0x7340('0x1c')](_0x5e0569);}return null;};}function patchUpdates(_0x2a671a){return function(_0x14c125){try{jsonpatch[_0x7340('0x23')](_0x14c125,_0x2a671a,!![]);}catch(_0x5d0504){return BPromise[_0x7340('0x24')](_0x5d0504);}return _0x14c125[_0x7340('0x25')]();};}function saveUpdates(_0xdb46f9,_0x2d6f5c){return function(_0x319248){if(_0x319248){return _0x319248[_0x7340('0x26')](_0xdb46f9)['then'](function(_0x2d8933){return _0x2d8933;});}return null;};}function removeEntity(_0x269691,_0x43c6c7){return function(_0x347d73){if(_0x347d73){return _0x347d73[_0x7340('0x27')]()[_0x7340('0x28')](function(){_0x269691['status'](0xcc)[_0x7340('0x1b')]();});}};}function handleEntityNotFound(_0x9ce1ce,_0x4a7173){return function(_0x4788be){if(!_0x4788be){_0x9ce1ce[_0x7340('0x19')](0x194);}return _0x4788be;};}function handleError(_0x1ee3ca,_0x49daf4){_0x49daf4=_0x49daf4||0x1f4;return function(_0x4f9186){logger[_0x7340('0x29')](_0x4f9186[_0x7340('0x2a')]);if(_0x4f9186[_0x7340('0x2b')]){delete _0x4f9186[_0x7340('0x2b')];}_0x1ee3ca[_0x7340('0x1a')](_0x49daf4)[_0x7340('0x2c')](_0x4f9186);};}exports[_0x7340('0x2d')]=function(_0x148407,_0x561e91){var _0x401acb={},_0x3a1f79={},_0x47aa7b={'count':0x0,'rows':[]};var _0x16848e=_['map'](db['FaxApplication']['rawAttributes'],function(_0x444fb3){return{'name':_0x444fb3[_0x7340('0x2e')],'type':_0x444fb3['type'][_0x7340('0x2f')]};});_0x3a1f79[_0x7340('0x30')]=_[_0x7340('0x31')](_0x16848e,_0x7340('0x2b'));_0x3a1f79[_0x7340('0x32')]=_['keys'](_0x148407[_0x7340('0x32')]);_0x3a1f79[_0x7340('0x33')]=_[_0x7340('0x34')](_0x3a1f79['model'],_0x3a1f79[_0x7340('0x32')]);_0x401acb['attributes']=_['intersection'](_0x3a1f79[_0x7340('0x30')],qs[_0x7340('0x35')](_0x148407[_0x7340('0x32')][_0x7340('0x35')]));_0x401acb[_0x7340('0x36')]=_0x401acb[_0x7340('0x36')][_0x7340('0x37')]?_0x401acb['attributes']:_0x3a1f79[_0x7340('0x30')];if(!_0x148407[_0x7340('0x32')][_0x7340('0x38')](_0x7340('0x39'))){_0x401acb[_0x7340('0x1e')]=qs[_0x7340('0x1e')](_0x148407['query'][_0x7340('0x1e')]);_0x401acb[_0x7340('0x20')]=qs['offset'](_0x148407['query'][_0x7340('0x20')]);}_0x401acb[_0x7340('0x3a')]=qs[_0x7340('0x3b')](_0x148407[_0x7340('0x32')]['sort']);_0x401acb[_0x7340('0x3c')]=qs[_0x7340('0x33')](_[_0x7340('0x3d')](_0x148407[_0x7340('0x32')],_0x3a1f79[_0x7340('0x33')]),_0x16848e);if(_0x148407[_0x7340('0x32')][_0x7340('0x3e')]){_0x401acb[_0x7340('0x3c')]=_[_0x7340('0x3f')](_0x401acb[_0x7340('0x3c')],{'$or':_[_0x7340('0x31')](_0x16848e,function(_0x3fbaa4){if(_0x3fbaa4[_0x7340('0x40')]!=='VIRTUAL'){var _0x23f553={};_0x23f553[_0x3fbaa4['name']]={'$like':'%'+_0x148407[_0x7340('0x32')][_0x7340('0x3e')]+'%'};return _0x23f553;}})});}_0x401acb=_[_0x7340('0x3f')]({},_0x401acb,_0x148407['options']);var _0x137eac={'where':_0x401acb['where']};return db[_0x7340('0x41')][_0x7340('0x1f')](_0x137eac)['then'](function(_0x33c4d9){_0x47aa7b['count']=_0x33c4d9;if(_0x148407[_0x7340('0x32')][_0x7340('0x42')]){_0x401acb[_0x7340('0x43')]=[{'all':!![]}];}return db[_0x7340('0x41')][_0x7340('0x44')](_0x401acb);})[_0x7340('0x28')](function(_0x23d611){_0x47aa7b[_0x7340('0x45')]=_0x23d611;return _0x47aa7b;})[_0x7340('0x28')](respondWithFilteredResult(_0x561e91,_0x401acb))[_0x7340('0x46')](handleError(_0x561e91,null));};exports[_0x7340('0x47')]=function(_0x47a2a1,_0x744e73){var _0x2f756d={'raw':!![],'where':{'id':_0x47a2a1[_0x7340('0x48')]['id']}},_0x4bfc34={};_0x4bfc34[_0x7340('0x30')]=_[_0x7340('0x49')](db[_0x7340('0x41')][_0x7340('0x4a')]);_0x4bfc34[_0x7340('0x32')]=_['keys'](_0x47a2a1['query']);_0x4bfc34['filters']=_[_0x7340('0x34')](_0x4bfc34[_0x7340('0x30')],_0x4bfc34[_0x7340('0x32')]);_0x2f756d[_0x7340('0x36')]=_[_0x7340('0x34')](_0x4bfc34[_0x7340('0x30')],qs['fields'](_0x47a2a1[_0x7340('0x32')][_0x7340('0x35')]));_0x2f756d[_0x7340('0x36')]=_0x2f756d['attributes']['length']?_0x2f756d[_0x7340('0x36')]:_0x4bfc34['model'];if(_0x47a2a1[_0x7340('0x32')]['includeAll']){_0x2f756d[_0x7340('0x43')]=[{'all':!![]}];}_0x2f756d=_['merge']({},_0x2f756d,_0x47a2a1[_0x7340('0x4b')]);return db[_0x7340('0x41')]['find'](_0x2f756d)[_0x7340('0x28')](handleEntityNotFound(_0x744e73,null))['then'](respondWithResult(_0x744e73,null))[_0x7340('0x46')](handleError(_0x744e73,null));};exports['create']=function(_0x2b1905,_0x315951){return db['FaxApplication'][_0x7340('0x4c')](_0x2b1905[_0x7340('0x4d')],{})[_0x7340('0x28')](respondWithResult(_0x315951,0xc9))[_0x7340('0x46')](handleError(_0x315951,null));};exports[_0x7340('0x26')]=function(_0x57b315,_0x559a70){if(_0x57b315[_0x7340('0x4d')]['id']){delete _0x57b315[_0x7340('0x4d')]['id'];}return db[_0x7340('0x41')]['find']({'where':{'id':_0x57b315[_0x7340('0x48')]['id']}})[_0x7340('0x28')](handleEntityNotFound(_0x559a70,null))[_0x7340('0x28')](saveUpdates(_0x57b315[_0x7340('0x4d')],null))[_0x7340('0x28')](respondWithResult(_0x559a70,null))[_0x7340('0x46')](handleError(_0x559a70,null));};exports[_0x7340('0x27')]=function(_0x2db6ba,_0x1f04a9){return db[_0x7340('0x41')][_0x7340('0x4e')]({'where':{'id':_0x2db6ba[_0x7340('0x48')]['id']}})[_0x7340('0x28')](handleEntityNotFound(_0x1f04a9,null))['then'](removeEntity(_0x1f04a9,null))[_0x7340('0x46')](handleError(_0x1f04a9,null));};
\ No newline at end of file
index 38e3d70..c1876a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9140=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x271ba9,_0x122dcf){var _0x6a5f9a=function(_0x1bcff8){while(--_0x1bcff8){_0x271ba9['push'](_0x271ba9['shift']());}};_0x6a5f9a(++_0x122dcf);}(_0x9140,0x6f));var _0x0914=function(_0x4bcce3,_0x1b253d){_0x4bcce3=_0x4bcce3-0x0;var _0x36d219=_0x9140[_0x4bcce3];return _0x36d219;};'use strict';var _=require(_0x0914('0x0'));var util=require(_0x0914('0x1'));var logger=require(_0x0914('0x2'))(_0x0914('0x3'));var moment=require(_0x0914('0x4'));var BPromise=require(_0x0914('0x5'));var rp=require(_0x0914('0x6'));var fs=require('fs');var path=require(_0x0914('0x7'));var rimraf=require(_0x0914('0x8'));var config=require(_0x0914('0x9'));var attributes=require(_0x0914('0xa'));module[_0x0914('0xb')]=function(_0x15ae9e,_0x34efa3){return _0x15ae9e['define'](_0x0914('0xc'),attributes,{'tableName':_0x0914('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0914('0xe'),'collate':_0x0914('0xf')});};
\ No newline at end of file
+var _0xdfd2=['../../config/logger','api','moment','path','rimraf','./faxApplication.attributes','exports','define','FaxApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xdfd2,0x16a));var _0x2dfd=function(_0x5d4e3e,_0x278ec4){_0x5d4e3e=_0x5d4e3e-0x0;var _0x1b6dda=_0xdfd2[_0x5d4e3e];return _0x1b6dda;};'use strict';var _=require(_0x2dfd('0x0'));var util=require(_0x2dfd('0x1'));var logger=require(_0x2dfd('0x2'))(_0x2dfd('0x3'));var moment=require(_0x2dfd('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dfd('0x5'));var rimraf=require(_0x2dfd('0x6'));var config=require('../../config/environment');var attributes=require(_0x2dfd('0x7'));module[_0x2dfd('0x8')]=function(_0x181a31,_0x5c0aff){return _0x181a31[_0x2dfd('0x9')](_0x2dfd('0xa'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2dfd('0xb'),'collate':_0x2dfd('0xc')});};
\ No newline at end of file
index 7241ec3..fe290dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c85=['error','message','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','limit','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','request','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3e26e0,_0x25a861){var _0x935214=function(_0x5389db){while(--_0x5389db){_0x3e26e0['push'](_0x3e26e0['shift']());}};_0x935214(++_0x25a861);}(_0x5c85,0xc1));var _0x55c8=function(_0x25a0b0,_0x1c3b92){_0x25a0b0=_0x25a0b0-0x0;var _0x787ce0=_0x5c85[_0x25a0b0];return _0x787ce0;};'use strict';var _=require(_0x55c8('0x0'));var util=require(_0x55c8('0x1'));var moment=require(_0x55c8('0x2'));var BPromise=require(_0x55c8('0x3'));var rs=require(_0x55c8('0x4'));var fs=require('fs');var Redis=require(_0x55c8('0x5'));var db=require(_0x55c8('0x6'))['db'];var utils=require(_0x55c8('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x55c8('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x55c8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x15b7b5,_0xf9f5be,_0x5a3fbc){return new BPromise(function(_0x3805f6,_0x5e9268){return client[_0x55c8('0xa')](_0x15b7b5,_0x5a3fbc)['then'](function(_0x2e8a64){logger[_0x55c8('0xb')](_0x55c8('0xc'),_0xf9f5be,_0x55c8('0xd'));logger[_0x55c8('0xe')](_0x55c8('0xf'),_0xf9f5be,_0x55c8('0xd'),JSON[_0x55c8('0x10')](_0x2e8a64));if(_0x2e8a64[_0x55c8('0x11')]){if(_0x2e8a64['error']['code']===0x1f4){logger['error'](_0x55c8('0xc'),_0xf9f5be,_0x2e8a64[_0x55c8('0x11')][_0x55c8('0x12')]);return _0x5e9268(_0x2e8a64[_0x55c8('0x11')][_0x55c8('0x12')]);}logger[_0x55c8('0x11')]('FaxApplication,\x20%s,\x20%s',_0xf9f5be,_0x2e8a64['error'][_0x55c8('0x12')]);return _0x3805f6(_0x2e8a64[_0x55c8('0x11')][_0x55c8('0x12')]);}else{logger['info'](_0x55c8('0xc'),_0xf9f5be,_0x55c8('0xd'));_0x3805f6(_0x2e8a64['result'][_0x55c8('0x12')]);}})['catch'](function(_0x1e991c){logger[_0x55c8('0x11')](_0x55c8('0xc'),_0xf9f5be,_0x1e991c);_0x5e9268(_0x1e991c);});});}exports[_0x55c8('0x13')]=function(_0x3734ef){var _0x1df136=this;return new Promise(function(_0x4bcf84,_0x300f74){return db[_0x55c8('0x14')][_0x55c8('0x15')](_0x3734ef[_0x55c8('0x16')],{'raw':_0x3734ef[_0x55c8('0x17')]?_0x3734ef[_0x55c8('0x17')][_0x55c8('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3734ef[_0x55c8('0x17')]?_0x3734ef[_0x55c8('0x17')][_0x55c8('0x19')]||null:null,'attributes':_0x3734ef[_0x55c8('0x17')]?_0x3734ef[_0x55c8('0x17')][_0x55c8('0x1a')]||null:null,'limit':_0x3734ef['options']?_0x3734ef[_0x55c8('0x17')][_0x55c8('0x1b')]||null:null})[_0x55c8('0x1c')](function(_0x53ad85){logger['info'](_0x55c8('0x13'),_0x3734ef);logger[_0x55c8('0xe')](_0x55c8('0x13'),_0x3734ef,JSON[_0x55c8('0x10')](_0x53ad85));_0x4bcf84(_0x53ad85);})[_0x55c8('0x1d')](function(_0x58515b){logger[_0x55c8('0x11')](_0x55c8('0x13'),_0x58515b['message'],_0x3734ef);_0x300f74(_0x1df136[_0x55c8('0x11')](0x1f4,_0x58515b[_0x55c8('0x12')]));});});};
\ No newline at end of file
+var _0xe7b3=['FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','FaxApplication','body','options','raw','where','limit','then','UpdateFaxApplication','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','info'];(function(_0x291b5d,_0xe8dfb6){var _0x199608=function(_0x488ae2){while(--_0x488ae2){_0x291b5d['push'](_0x291b5d['shift']());}};_0x199608(++_0xe8dfb6);}(_0xe7b3,0x1b6));var _0x3e7b=function(_0x1f58e9,_0x297d90){_0x1f58e9=_0x1f58e9-0x0;var _0x1194bb=_0xe7b3[_0x1f58e9];return _0x1194bb;};'use strict';var _=require(_0x3e7b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3e7b('0x1'));var rs=require(_0x3e7b('0x2'));var fs=require('fs');var Redis=require(_0x3e7b('0x3'));var db=require(_0x3e7b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3e7b('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3e7b('0x6'));var client=jayson[_0x3e7b('0x7')][_0x3e7b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2c0155,_0x5efee6,_0x4b2295){return new BPromise(function(_0x495cbe,_0x4b11de){return client['request'](_0x2c0155,_0x4b2295)['then'](function(_0x35797e){logger[_0x3e7b('0x9')](_0x3e7b('0xa'),_0x5efee6,_0x3e7b('0xb'));logger[_0x3e7b('0xc')](_0x3e7b('0xd'),_0x5efee6,_0x3e7b('0xb'),JSON['stringify'](_0x35797e));if(_0x35797e[_0x3e7b('0xe')]){if(_0x35797e[_0x3e7b('0xe')][_0x3e7b('0xf')]===0x1f4){logger['error'](_0x3e7b('0xa'),_0x5efee6,_0x35797e[_0x3e7b('0xe')][_0x3e7b('0x10')]);return _0x4b11de(_0x35797e['error']['message']);}logger[_0x3e7b('0xe')]('FaxApplication,\x20%s,\x20%s',_0x5efee6,_0x35797e[_0x3e7b('0xe')]['message']);return _0x495cbe(_0x35797e[_0x3e7b('0xe')][_0x3e7b('0x10')]);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0x5efee6,_0x3e7b('0xb'));_0x495cbe(_0x35797e[_0x3e7b('0x11')]['message']);}})[_0x3e7b('0x12')](function(_0x3ea977){logger[_0x3e7b('0xe')](_0x3e7b('0xa'),_0x5efee6,_0x3ea977);_0x4b11de(_0x3ea977);});});}exports['UpdateFaxApplication']=function(_0x2d7fbb){var _0x5b38f4=this;return new Promise(function(_0x1ccf6c,_0x557f63){return db[_0x3e7b('0x13')]['update'](_0x2d7fbb[_0x3e7b('0x14')],{'raw':_0x2d7fbb[_0x3e7b('0x15')]?_0x2d7fbb[_0x3e7b('0x15')][_0x3e7b('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d7fbb[_0x3e7b('0x15')]?_0x2d7fbb[_0x3e7b('0x15')][_0x3e7b('0x17')]||null:null,'attributes':_0x2d7fbb['options']?_0x2d7fbb['options']['attributes']||null:null,'limit':_0x2d7fbb['options']?_0x2d7fbb[_0x3e7b('0x15')][_0x3e7b('0x18')]||null:null})[_0x3e7b('0x19')](function(_0x515632){logger['info']('UpdateFaxApplication',_0x2d7fbb);logger[_0x3e7b('0xc')](_0x3e7b('0x1a'),_0x2d7fbb,JSON[_0x3e7b('0x1b')](_0x515632));_0x1ccf6c(_0x515632);})['catch'](function(_0x52799f){logger[_0x3e7b('0xe')]('UpdateFaxApplication',_0x52799f[_0x3e7b('0x10')],_0x2d7fbb);_0x557f63(_0x5b38f4[_0x3e7b('0xe')](0x1f4,_0x52799f[_0x3e7b('0x10')]));});});};
\ No newline at end of file
index 2cb2188..fc5b561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eba=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','create','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0xc65834,_0x5df6fb){var _0x5da298=function(_0x30fbc2){while(--_0x30fbc2){_0xc65834['push'](_0xc65834['shift']());}};_0x5da298(++_0x5df6fb);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x5d4f12,_0x11e67c){_0x5d4f12=_0x5d4f12-0x0;var _0x4eb577=_0x1eba[_0x5d4f12];return _0x4eb577;};'use strict';var multer=require(_0xa1eb('0x0'));var util=require(_0xa1eb('0x1'));var path=require(_0xa1eb('0x2'));var timeout=require(_0xa1eb('0x3'));var express=require(_0xa1eb('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa1eb('0x5'));var interaction=require(_0xa1eb('0x6'));var config=require(_0xa1eb('0x7'));var controller=require(_0xa1eb('0x8'));router[_0xa1eb('0x9')]('/',auth[_0xa1eb('0xa')](),controller[_0xa1eb('0xb')]);router[_0xa1eb('0x9')](_0xa1eb('0xc'),auth[_0xa1eb('0xa')](),controller[_0xa1eb('0xd')]);router[_0xa1eb('0xe')]('/',auth['isAuthenticated'](),controller[_0xa1eb('0xf')]);router['put'](_0xa1eb('0xc'),auth['isAuthenticated'](),controller[_0xa1eb('0x10')]);router['delete'](_0xa1eb('0xc'),auth['isAuthenticated'](),controller[_0xa1eb('0x11')]);module[_0xa1eb('0x12')]=router;
\ No newline at end of file
+var _0x13f6=['delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','post','create','put','update'];(function(_0x44e594,_0x4867dd){var _0x4de4e7=function(_0x3f2ef2){while(--_0x3f2ef2){_0x44e594['push'](_0x44e594['shift']());}};_0x4de4e7(++_0x4867dd);}(_0x13f6,0x124));var _0x613f=function(_0x219afb,_0x5e418e){_0x219afb=_0x219afb-0x0;var _0x559fe4=_0x13f6[_0x219afb];return _0x559fe4;};'use strict';var multer=require(_0x613f('0x0'));var util=require(_0x613f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x613f('0x2'));var router=express[_0x613f('0x3')]();var fs_extra=require(_0x613f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x613f('0x5'));var config=require(_0x613f('0x6'));var controller=require(_0x613f('0x7'));router['get']('/',auth[_0x613f('0x8')](),controller[_0x613f('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x613f('0xa')]('/',auth[_0x613f('0x8')](),controller[_0x613f('0xb')]);router[_0x613f('0xc')]('/:id',auth[_0x613f('0x8')](),controller[_0x613f('0xd')]);router[_0x613f('0xe')]('/:id',auth[_0x613f('0x8')](),controller[_0x613f('0xf')]);module[_0x613f('0x10')]=router;
\ No newline at end of file
index 7e81191..3d36abe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cc2=['out','sequelize','BOOLEAN','DATE','STRING','ENUM'];(function(_0x24f862,_0x4b645a){var _0x198aa4=function(_0x131195){while(--_0x131195){_0x24f862['push'](_0x24f862['shift']());}};_0x198aa4(++_0x4b645a);}(_0x8cc2,0x6d));var _0x28cc=function(_0x2edbcd,_0x3f299f){_0x2edbcd=_0x2edbcd-0x0;var _0x23d859=_0x8cc2[_0x2edbcd];return _0x23d859;};'use strict';var Sequelize=require(_0x28cc('0x0'));module['exports']={'closed':{'type':Sequelize[_0x28cc('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x28cc('0x2')]},'disposition':{'type':Sequelize[_0x28cc('0x3')]},'secondDisposition':{'type':Sequelize[_0x28cc('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x28cc('0x3')]},'read1stAt':{'type':Sequelize[_0x28cc('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x28cc('0x4')]('in',_0x28cc('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x28cc('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x28cc('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x11d9=['out','sequelize','exports','BOOLEAN','STRING','ENUM'];(function(_0x555b2f,_0x43b622){var _0x81c0a6=function(_0x4629e6){while(--_0x4629e6){_0x555b2f['push'](_0x555b2f['shift']());}};_0x81c0a6(++_0x43b622);}(_0x11d9,0x1db));var _0x911d=function(_0xe4867b,_0x56744d){_0xe4867b=_0xe4867b-0x0;var _0x2d84a8=_0x11d9[_0xe4867b];return _0x2d84a8;};'use strict';var Sequelize=require(_0x911d('0x0'));module[_0x911d('0x1')]={'closed':{'type':Sequelize[_0x911d('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x911d('0x3')]},'thirdDisposition':{'type':Sequelize[_0x911d('0x3')]},'note':{'type':Sequelize[_0x911d('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x911d('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x911d('0x4')]('in',_0x911d('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x911d('0x4')]('in',_0x911d('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 2c8f236..851e16f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63b1=['json','offset','limit','undefined','set','Content-Range','apply','save','update','then','destroy','end','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','push','index','FaxInteraction','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','tools_tags','from','user_has_fax_interactions','users','u.id\x20=\x20ui.UserId','fax_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','find','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','start','User','UserId','text','body','keys','compact','isEmpty','forEach','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','t.id\x20IN\x20?','resolve','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.FaxAccountId\x20IS\x20NULL','sequelize','count','toString','keyBy','Account.key','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','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','FaxInteractionId','all','rows','catch','show','includeAll','include','create','params','describe','addMessage','FaxMessage','omit','ids','getMessages','findOne','merge','format','YYYY-MM-DD\x20HH:mm:ss','Tag','findAll','emit','faxInteractionTags:save','removeTags','download','join','server','files','tmp','root','attachments','Attachment','Messages','get','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','basename','log','unlinkSync','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','status'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x63b1,0xb7));var _0x163b=function(_0x351257,_0xe91762){_0x351257=_0x351257-0x0;var _0x3dd5d9=_0x63b1[_0x351257];return _0x3dd5d9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x163b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x163b('0x1'));var rp=require(_0x163b('0x2'));var moment=require('moment');var BPromise=require(_0x163b('0x3'));var Mustache=require(_0x163b('0x4'));var util=require('util');var path=require(_0x163b('0x5'));var sox=require('sox');var csv=require(_0x163b('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x163b('0x7'));var squel=require(_0x163b('0x8'));var crypto=require(_0x163b('0x9'));var jsforce=require(_0x163b('0xa'));var deskjs=require(_0x163b('0xb'));var toCsv=require(_0x163b('0x6'));var querystring=require(_0x163b('0xc'));var Papa=require('papaparse');var Redis=require(_0x163b('0xd'));var authService=require(_0x163b('0xe'));var qs=require(_0x163b('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x163b('0x10'));var logger=require(_0x163b('0x11'))(_0x163b('0x12'));var utils=require(_0x163b('0x13'));var config=require(_0x163b('0x14'));var licenseUtil=require(_0x163b('0x15'));var db=require(_0x163b('0x16'))['db'];config[_0x163b('0x17')]=_[_0x163b('0x18')](config[_0x163b('0x17')],{'host':_0x163b('0x19'),'port':0x18eb});var socket=require(_0x163b('0x1a'))(new Redis(config['redis']));require(_0x163b('0x1b'))['register'](socket);function respondWithStatusCode(_0x23a026,_0x49fe07){_0x49fe07=_0x49fe07||0xcc;return function(_0xa3a31a){if(_0xa3a31a){return _0x23a026['sendStatus'](_0x49fe07);}return _0x23a026['status'](_0x49fe07)['end']();};}function respondWithResult(_0x5f1693,_0x2f19aa){_0x2f19aa=_0x2f19aa||0xc8;return function(_0x23dd99){if(_0x23dd99){return _0x5f1693[_0x163b('0x1c')](_0x2f19aa)[_0x163b('0x1d')](_0x23dd99);}};}function respondWithFilteredResult(_0x2d3924,_0x2db0b8){return function(_0x17d1f0){if(_0x17d1f0){var _0x22e71a=typeof _0x2db0b8[_0x163b('0x1e')]==='undefined'&&typeof _0x2db0b8[_0x163b('0x1f')]===_0x163b('0x20');var _0x37aa5b=_0x17d1f0['count'];var _0x2a1a16=_0x22e71a?0x0:_0x2db0b8['offset'];var _0x5c352f=_0x22e71a?_0x17d1f0['count']:_0x2db0b8['offset']+_0x2db0b8[_0x163b('0x1f')];var _0x53b085;if(_0x5c352f>=_0x37aa5b){_0x5c352f=_0x37aa5b;_0x53b085=0xc8;}else{_0x53b085=0xce;}_0x2d3924[_0x163b('0x1c')](_0x53b085);return _0x2d3924[_0x163b('0x21')](_0x163b('0x22'),_0x2a1a16+'-'+_0x5c352f+'/'+_0x37aa5b)[_0x163b('0x1d')](_0x17d1f0);}return null;};}function patchUpdates(_0x5ab952){return function(_0x339965){try{jsonpatch[_0x163b('0x23')](_0x339965,_0x5ab952,!![]);}catch(_0x552226){return BPromise['reject'](_0x552226);}return _0x339965[_0x163b('0x24')]();};}function saveUpdates(_0x1f23b0,_0xd3dc1){return function(_0x29594e){if(_0x29594e){return _0x29594e[_0x163b('0x25')](_0x1f23b0)[_0x163b('0x26')](function(_0x424387){return _0x424387;});}return null;};}function removeEntity(_0x10bd0a,_0x121fe3){return function(_0x1eb585){if(_0x1eb585){return _0x1eb585[_0x163b('0x27')]()[_0x163b('0x26')](function(){_0x10bd0a['status'](0xcc)[_0x163b('0x28')]();});}};}function handleEntityNotFound(_0xa48481,_0x544182){return function(_0x1a8421){if(!_0x1a8421){_0xa48481[_0x163b('0x29')](0x194);}return _0x1a8421;};}function handleError(_0xcc4641,_0x704388){_0x704388=_0x704388||0x1f4;return function(_0x5576bb){logger[_0x163b('0x2a')](_0x5576bb[_0x163b('0x2b')]);if(_0x5576bb['name']){delete _0x5576bb[_0x163b('0x2c')];}_0xcc4641[_0x163b('0x1c')](_0x704388)[_0x163b('0x2d')](_0x5576bb);};}function getInteractionUsers(_0x4a043d,_0x15431e){return new BPromise(function(_0x253b5a,_0x3f5aa0){try{if(_0x15431e[_0x4a043d['id']]){_0x4a043d[_0x163b('0x2e')]=_[_0x163b('0x2f')](_0x15431e[_0x4a043d['id']],function(_0x1ee8b0){return{'id':_0x1ee8b0['id'],'fullname':_0x1ee8b0[_0x163b('0x30')]};});}}catch(_0x3f9fe1){_0x3f5aa0(_0x3f9fe1);}_0x253b5a(_0x4a043d);});}function getInteractionTags(_0x171d98,_0x4bc593){return new BPromise(function(_0x4f3881,_0x11cb1f){try{if(_0x171d98[_0x163b('0x31')]){_0x171d98[_0x163b('0x32')]=[];_0x171d98[_0x163b('0x31')][_0x163b('0x33')](',')['forEach'](function(_0x37635){_0x171d98[_0x163b('0x32')][_0x163b('0x34')](_0x4bc593[_0x37635]);});}delete _0x171d98[_0x163b('0x31')];}catch(_0x591b0e){_0x11cb1f(_0x591b0e);}_0x4f3881(_0x171d98);});}function updateFaxInteraction(_0x197baa,_0x2ed333,_0x415763){return new BPromise(function(_0x38fa17,_0xf90755){return getInteractionUsers(_0x197baa,_0x415763)[_0x163b('0x26')](function(_0x58f753){return getInteractionTags(_0x58f753,_0x2ed333);})[_0x163b('0x26')](function(_0x127661){_0x38fa17(_0x127661);})['catch'](function(_0x1bc961){_0xf90755(_0x1bc961);});});}exports[_0x163b('0x35')]=function(_0x428867,_0x1bde96){var _0x3acfcf={},_0x31effd={},_0x3d96d1={'count':0x0,'rows':[]};var _0x4816ef=_[_0x163b('0x2f')](db[_0x163b('0x36')][_0x163b('0x37')],function(_0x2b75be){return{'name':_0x2b75be[_0x163b('0x38')],'type':_0x2b75be['type'][_0x163b('0x39')]};});_0x31effd[_0x163b('0x3a')]=_[_0x163b('0x2f')](_0x4816ef,'name');_0x31effd[_0x163b('0x3b')]=_['keys'](_0x428867[_0x163b('0x3b')]);_0x31effd[_0x163b('0x3c')]=_[_0x163b('0x3d')](_0x31effd['model'],_0x31effd['query']);_0x3acfcf['attributes']=_['intersection'](_0x31effd[_0x163b('0x3a')],qs[_0x163b('0x3e')](_0x428867[_0x163b('0x3b')][_0x163b('0x3e')]));_0x3acfcf[_0x163b('0x3f')]=_0x3acfcf['attributes'][_0x163b('0x40')]?_0x3acfcf['attributes']:_0x31effd[_0x163b('0x3a')];if(!_0x428867[_0x163b('0x3b')][_0x163b('0x41')](_0x163b('0x42'))){_0x3acfcf['limit']=qs[_0x163b('0x1f')](_0x428867[_0x163b('0x3b')][_0x163b('0x1f')]);_0x3acfcf[_0x163b('0x1e')]=qs[_0x163b('0x1e')](_0x428867[_0x163b('0x3b')][_0x163b('0x1e')]);}_0x3acfcf[_0x163b('0x43')]=qs[_0x163b('0x44')](_0x428867[_0x163b('0x3b')]['sort']);_0x3acfcf[_0x163b('0x45')]=qs[_0x163b('0x3c')](_[_0x163b('0x46')](_0x428867['query'],_0x31effd[_0x163b('0x3c')]),_0x4816ef);var _0x38c42c=[];var _0x555f3b=squel[_0x163b('0x47')]()[_0x163b('0x48')]('id')[_0x163b('0x48')](_0x163b('0x2c'))[_0x163b('0x48')](_0x163b('0x49'))['from'](_0x163b('0x4a'));var _0x3b03eb=squel[_0x163b('0x47')]()[_0x163b('0x48')]('u.id')[_0x163b('0x48')]('u.fullname')[_0x163b('0x48')]('ui.FaxInteractionId')[_0x163b('0x4b')](_0x163b('0x4c'),'ui')['left_join'](_0x163b('0x4d'),'u',_0x163b('0x4e'));var _0x46afac=squel[_0x163b('0x47')]()['from'](_0x163b('0x4f'),'i')[_0x163b('0x50')](_0x163b('0x51'),'c',_0x163b('0x52'))[_0x163b('0x50')](_0x163b('0x4d'),'o','o.id\x20=\x20i.UserId')[_0x163b('0x50')]('fax_accounts','a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x163b('0x53'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x163b('0x50')](_0x163b('0x54'),'it',_0x163b('0x55'))[_0x163b('0x50')]('tools_tags','t',_0x163b('0x56'));var _0x402e62=squel['expr']();var _0xb334b7=[];var _0x329e02=squel[_0x163b('0x57')]();var _0x16a886;if(_0x428867[_0x163b('0x3b')][_0x163b('0x58')]){_0x16a886=as[_0x163b('0x59')](_0x428867['query'][_0x163b('0x58')]);var _0x5e8612=_0x16a886['sqlOperator'];for(var _0x1ea444=0x0;_0x1ea444<_0x16a886['conditions'][_0x163b('0x40')];_0x1ea444++){var _0x5593d7=_0x16a886['conditions'][_0x1ea444];var _0x2cb49e='i';var _0x5377c1=_[_0x163b('0x5a')](_0x4816ef,[_0x163b('0x2c'),_0x5593d7[_0x163b('0x48')]]);if(!_0x5377c1){switch(_0x5593d7['field']){case'unreadMessages':if(_0x5593d7[_0x163b('0x5b')]==0x1){_0x46afac[_0x163b('0x5c')]('`'+_0x5593d7['field']+'`\x20=\x200');}else{_0x46afac[_0x163b('0x5c')]('`'+_0x5593d7[_0x163b('0x48')]+_0x163b('0x5d'));}break;case _0x163b('0x5e'):if(_0x5593d7[_0x163b('0x5f')]===_0x163b('0x60')){if(_0x5593d7['value'][_0x163b('0x33')]('\x20')[_0x163b('0x40')]>0x1){_0x402e62[_0x5e8612](_0x163b('0x61'),qs[_0x163b('0x62')](_0x5593d7[_0x163b('0x5b')]),null);}else{var _0x4852cc='%'+_0x5593d7['value']+'%';_0x402e62[_0x5e8612](_0x163b('0x63'),_0x4852cc,_0x4852cc,_0x4852cc);}}else{_0x5377c1=_[_0x163b('0x5a')](_0x4816ef,[_0x163b('0x2c'),_0x163b('0x64')]);_0x5593d7[_0x163b('0x48')]=_0x163b('0x64');_0x4aed61=as[_0x163b('0x65')](_0x2cb49e,_0x5377c1[_0x163b('0x66')],_0x5593d7);_0x402e62[_0x5e8612](_0x4aed61['text'],_0x4aed61[_0x163b('0x5b')][_0x163b('0x67')],_0x4aed61['value'][_0x163b('0x28')]);}break;case'Tag':var _0x1755ec=_0x5593d7[_0x163b('0x5b')][_0x163b('0x33')](',')[_0x163b('0x2f')](function(_0x242a1a){return Number(_0x242a1a);});_0x1755ec['forEach'](function(_0x345728){_0x329e02['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x345728+',%');});_0xb334b7=_['union'](_0xb334b7,_0x1755ec);break;case _0x163b('0x68'):if(_0x5593d7['operator']===_0x163b('0x60')){_0x402e62[_0x5e8612]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x5593d7[_0x163b('0x5b')]+'%',null);}else{_0x5377c1=_[_0x163b('0x5a')](_0x4816ef,[_0x163b('0x2c'),'UserId']);_0x5593d7['field']=_0x163b('0x69');_0x4aed61=as[_0x163b('0x65')](_0x2cb49e,_0x5377c1[_0x163b('0x66')],_0x5593d7);_0x402e62[_0x5e8612](_0x4aed61[_0x163b('0x6a')],_0x4aed61[_0x163b('0x5b')][_0x163b('0x67')],_0x4aed61[_0x163b('0x5b')]['end']);}break;case _0x163b('0x6b'):_0x4aed61=as[_0x163b('0x65')]('me',null,_0x5593d7);_0x402e62[_0x5e8612](_0x4aed61['text'],_0x4aed61[_0x163b('0x5b')][_0x163b('0x67')],_0x4aed61[_0x163b('0x5b')]['end']);break;}}else{var _0x4aed61=as[_0x163b('0x65')](_0x2cb49e,_0x5377c1[_0x163b('0x66')],_0x5593d7);_0x402e62[_0x5e8612](_0x4aed61[_0x163b('0x6a')],_0x4aed61[_0x163b('0x5b')][_0x163b('0x67')],_0x4aed61['value'][_0x163b('0x28')]);}}}else{var _0x4b2a92=_(_0x428867[_0x163b('0x3b')])[_0x163b('0x6c')]()[_0x163b('0x2f')](function(_0x1f1568){return _['some'](_0x4816ef,[_0x163b('0x2c'),_0x1f1568])?_0x1f1568:undefined;})[_0x163b('0x6d')]()[_0x163b('0x5b')]();if(!_[_0x163b('0x6e')](_0x4b2a92)){_0x4b2a92[_0x163b('0x6f')](function(_0x2c31d4){if(_0x2c31d4==='FaxAccountId'){_0x46afac[_0x163b('0x45')](_0x163b('0x70'),[][_0x163b('0x71')](_0x428867[_0x163b('0x3b')][_0x2c31d4]));}else if(_0x2c31d4===_0x163b('0x72')){var _0x472c52=JSON[_0x163b('0x73')](_0x428867[_0x163b('0x3b')][_0x2c31d4])[_0x163b('0x74')];var _0x11100c=JSON[_0x163b('0x73')](_0x428867[_0x163b('0x3b')][_0x2c31d4])[_0x163b('0x75')];_0x46afac[_0x163b('0x45')](_0x163b('0x76'),_0x472c52,_0x11100c);}else{if(_0x428867[_0x163b('0x3b')][_0x2c31d4]===_0x163b('0x77')){_0x46afac['where']('i.'+_0x2c31d4+_0x163b('0x78'));}else{_0x46afac[_0x163b('0x45')]('i.'+_0x2c31d4+_0x163b('0x79'),_0x428867[_0x163b('0x3b')][_0x2c31d4]);}}});}if(_0x428867[_0x163b('0x3b')]['read']){if(_0x428867[_0x163b('0x3b')][_0x163b('0x7a')]==0x1){_0x46afac[_0x163b('0x5c')]('`unreadMessages`\x20=\x200');}else{_0x46afac[_0x163b('0x5c')](_0x163b('0x7b'));}}if(_0x428867['query'][_0x163b('0x7c')]){_0xb334b7=_[_0x163b('0x7d')](_0x428867[_0x163b('0x3b')][_0x163b('0x7c')])?_0x428867['query']['tag']:new Array(_0x428867[_0x163b('0x3b')][_0x163b('0x7c')]);_0xb334b7[_0x163b('0x6f')](function(_0x160140){_0x329e02['or'](_0x163b('0x7e'),'%,'+_0x160140+',%');});}if(_0x428867['query'][_0x163b('0x7f')]){var _0x22f542=_0x428867[_0x163b('0x3b')][_0x163b('0x7f')][_0x163b('0x80')]('\x5c','\x5c\x5c')[_0x163b('0x80')](/'/g,'\x27\x27');if(qs[_0x163b('0x81')](_0x22f542)){_0x402e62['or'](_0x163b('0x82'),_0x22f542+'%')['or'](_0x163b('0x83'),_0x22f542+'%');}_0x402e62['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x22f542+'%');}}_0x46afac[_0x163b('0x45')](_0x402e62);_0x46afac[_0x163b('0x84')](_0x163b('0x85'));var _0x47ea63={'type':db[_0x163b('0x86')][_0x163b('0x87')][_0x163b('0x88')],'raw':!![]};var _0xba1542=_0x46afac[_0x163b('0x89')]();_0xba1542[_0x163b('0x48')](_0x163b('0x85'));_0xba1542['field'](_0x163b('0x8a'),_0x163b('0x8b'));if(_0x3acfcf[_0x163b('0x43')]){_0x3acfcf[_0x163b('0x43')][_0x163b('0x6f')](function(_0x1c3538){var _0x48a44f=_0x1c3538[0x0]===_0x163b('0x8c')?_0x1c3538[0x0]:'i.'+_0x1c3538[0x0];_0x46afac['order'](_0x48a44f,_0x1c3538[0x1]==='DESC'?![]:!![]);});}if(!_[_0x163b('0x6e')](_0xb334b7)){_0x46afac['having'](_0x329e02);_0xba1542[_0x163b('0x45')](_0x163b('0x8d'),_0xb334b7);}BPromise[_0x163b('0x8e')]()[_0x163b('0x26')](function(){if(!_0x16a886){if(_0x428867[_0x163b('0x3b')][_0x163b('0x8f')])return;_0xba1542[_0x163b('0x45')](_0x163b('0x90'));_0x46afac[_0x163b('0x45')](_0x163b('0x90'));return;}if(_0x428867['user'][_0x163b('0x91')]!==_0x163b('0x92'))return;return _0x428867[_0x163b('0x93')]['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0x163b('0x26')](function(_0x28018f){if(_[_0x163b('0x6e')](_0x28018f)){_0xba1542['where']('i.FaxAccountId\x20IS\x20NULL');_0x46afac[_0x163b('0x45')](_0x163b('0x94'));}else{_0xba1542[_0x163b('0x45')]('i.FaxAccountId\x20IN\x20?',_['map'](_0x28018f,'id'));_0x46afac[_0x163b('0x45')](_0x163b('0x70'),_[_0x163b('0x2f')](_0x28018f,'id'));}});})[_0x163b('0x26')](function(){if(_0x428867[_0x163b('0x93')][_0x163b('0x91')]==='agent'&&!_0x16a886&&!_0x428867[_0x163b('0x3b')][_0x163b('0x8f')])return[];return db[_0x163b('0x95')][_0x163b('0x3b')](_0xba1542['toString'](),_0x47ea63);})[_0x163b('0x26')](function(_0x52feee){_0x3d96d1['count']=_0x52feee[_0x163b('0x40')];if(_0x3d96d1[_0x163b('0x96')]===0x0)return[];return db[_0x163b('0x95')][_0x163b('0x3b')](_0x555f3b[_0x163b('0x97')](),_0x47ea63)[_0x163b('0x26')](function(_0x27d476){_0x38c42c=_[_0x163b('0x98')](_0x27d476,'id');_0x47ea63=_['merge'](_0x47ea63,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x428867[_0x163b('0x3b')][_0x163b('0x3e')]){_0x3acfcf[_0x163b('0x3f')][_0x163b('0x6f')](function(_0x381c82){_0x46afac[_0x163b('0x48')]('i.'+_0x381c82);});}else{_0x46afac['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x46afac[_0x163b('0x48')]('a.key',_0x163b('0x99'));_0x46afac['field']('a.mandatoryDisposition',_0x163b('0x9a'));_0x46afac[_0x163b('0x48')](_0x163b('0x9b'),_0x163b('0x8c'));_0x46afac[_0x163b('0x48')](_0x163b('0x9c'));_0x46afac[_0x163b('0x48')](_0x163b('0x9d'),_0x163b('0x9e'));_0x46afac['field']('c.lastName',_0x163b('0x9f'));_0x46afac[_0x163b('0x48')](_0x163b('0xa0'),_0x163b('0xa1'));_0x46afac[_0x163b('0x48')]('c.phone',_0x163b('0xa2'));_0x46afac[_0x163b('0x48')](_0x163b('0xa3'),'Contact.mobile');_0x46afac['field'](_0x163b('0xa4'),'Contact.fax');_0x46afac[_0x163b('0x48')](_0x163b('0xa5'),_0x163b('0xa6'));_0x46afac[_0x163b('0x48')](_0x163b('0xa7'),_0x163b('0xa8'));_0x46afac[_0x163b('0x48')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x163b('0x31'));}if(_0x3acfcf[_0x163b('0x1f')])_0x46afac[_0x163b('0x1f')](_0x3acfcf[_0x163b('0x1f')]);if(_0x3acfcf[_0x163b('0x1e')])_0x46afac['offset'](_0x3acfcf['offset']);return db[_0x163b('0x95')][_0x163b('0x3b')](_0x46afac['toString'](),_0x47ea63);})[_0x163b('0x26')](function(_0x24ab1b){if(_0x24ab1b['length']>0x0)_0x3b03eb['where'](_0x163b('0xa9'),_[_0x163b('0x2f')](_0x24ab1b,'id'));return db[_0x163b('0x95')][_0x163b('0x3b')](_0x3b03eb[_0x163b('0x97')](),_0x47ea63)[_0x163b('0x26')](function(_0x390b28){var _0x99188f=_['groupBy'](_0x390b28,_0x163b('0xaa'));var _0xb7c78d=[];_0x24ab1b[_0x163b('0x6f')](function(_0xf4a503){_0xb7c78d[_0x163b('0x34')](updateFaxInteraction(_0xf4a503,_0x38c42c,_0x99188f));});return BPromise[_0x163b('0xab')](_0xb7c78d);});});})[_0x163b('0x26')](function(_0xdf1745){_0x3d96d1[_0x163b('0xac')]=_0xdf1745;return _0x3d96d1;})[_0x163b('0x26')](respondWithFilteredResult(_0x1bde96,_0x3acfcf))[_0x163b('0xad')](handleError(_0x1bde96,null));};exports[_0x163b('0xae')]=function(_0x5193ad,_0x1144f2){var _0x592c18={'raw':![],'where':{'id':_0x5193ad['params']['id']}},_0x2c5cc7={};_0x2c5cc7[_0x163b('0x3a')]=_[_0x163b('0x6c')](db['FaxInteraction'][_0x163b('0x37')]);_0x2c5cc7[_0x163b('0x3b')]=_[_0x163b('0x6c')](_0x5193ad[_0x163b('0x3b')]);_0x2c5cc7[_0x163b('0x3c')]=_[_0x163b('0x3d')](_0x2c5cc7[_0x163b('0x3a')],_0x2c5cc7[_0x163b('0x3b')]);_0x592c18['attributes']=_[_0x163b('0x3d')](_0x2c5cc7[_0x163b('0x3a')],qs[_0x163b('0x3e')](_0x5193ad['query']['fields']));_0x592c18['attributes']=_0x592c18[_0x163b('0x3f')]['length']?_0x592c18[_0x163b('0x3f')]:_0x2c5cc7[_0x163b('0x3a')];if(_0x5193ad[_0x163b('0x3b')][_0x163b('0xaf')]){_0x592c18[_0x163b('0xb0')]=[{'all':!![]}];}_0x592c18=_['merge']({},_0x592c18,_0x5193ad['options']);return db[_0x163b('0x36')][_0x163b('0x5a')](_0x592c18)[_0x163b('0x26')](handleEntityNotFound(_0x1144f2,null))[_0x163b('0x26')](respondWithResult(_0x1144f2,null))[_0x163b('0xad')](handleError(_0x1144f2,null));};exports[_0x163b('0xb1')]=function(_0x53f3a2,_0x24f673){return db[_0x163b('0x36')][_0x163b('0xb1')](_0x53f3a2[_0x163b('0x6b')],{})['then'](respondWithResult(_0x24f673,0xc9))[_0x163b('0xad')](handleError(_0x24f673,null));};exports[_0x163b('0x25')]=function(_0x360dcc,_0xb18e79){if(_0x360dcc[_0x163b('0x6b')]['id']){delete _0x360dcc[_0x163b('0x6b')]['id'];}return db['FaxInteraction'][_0x163b('0x5a')]({'where':{'id':_0x360dcc[_0x163b('0xb2')]['id']}})[_0x163b('0x26')](handleEntityNotFound(_0xb18e79,null))[_0x163b('0x26')](saveUpdates(_0x360dcc[_0x163b('0x6b')],null))['then'](respondWithResult(_0xb18e79,null))[_0x163b('0xad')](handleError(_0xb18e79,null));};exports[_0x163b('0x27')]=function(_0x13125c,_0x5d0a41){return db['FaxInteraction'][_0x163b('0x5a')]({'where':{'id':_0x13125c[_0x163b('0xb2')]['id']}})['then'](handleEntityNotFound(_0x5d0a41,null))[_0x163b('0x26')](removeEntity(_0x5d0a41,null))[_0x163b('0xad')](handleError(_0x5d0a41,null));};exports[_0x163b('0xb3')]=function(_0x8b2433,_0x38f13d){return db['FaxInteraction'][_0x163b('0xb3')]()[_0x163b('0x26')](respondWithResult(_0x38f13d,null))[_0x163b('0xad')](handleError(_0x38f13d,null));};exports[_0x163b('0xb4')]=function(_0x3a5dd2,_0x58a995,_0x27fb75){return db[_0x163b('0xb5')][_0x163b('0x5a')]({'where':{'id':_0x3a5dd2[_0x163b('0xb2')]['id']}})[_0x163b('0x26')](handleEntityNotFound(_0x58a995,null))[_0x163b('0x26')](function(_0x5ce53c){if(_0x5ce53c){return _0x5ce53c['addMessage'](_0x3a5dd2['body']['ids'],_[_0x163b('0xb6')](_0x3a5dd2[_0x163b('0x6b')],[_0x163b('0xb7'),'id'])||{});}})[_0x163b('0x26')](respondWithResult(_0x58a995,null))[_0x163b('0xad')](handleError(_0x58a995,null));};exports[_0x163b('0xb8')]=function(_0x3d8ec8,_0x15a23c,_0x482cc1){var _0xe45e80={'raw':![],'where':{}};var _0x3fd3e6={};var _0x1aeb4e={'count':0x0,'rows':[]};return db[_0x163b('0x36')][_0x163b('0xb9')]({'where':{'id':_0x3d8ec8['params']['id']}})['then'](handleEntityNotFound(_0x15a23c,null))['then'](function(_0x9d6ce1){if(_0x9d6ce1){_0x3fd3e6[_0x163b('0x3a')]=_['keys'](db['FaxMessage'][_0x163b('0x37')]);_0x3fd3e6['query']=_['keys'](_0x3d8ec8[_0x163b('0x3b')]);_0x3fd3e6[_0x163b('0x3c')]=_[_0x163b('0x3d')](_0x3fd3e6[_0x163b('0x3a')],_0x3fd3e6[_0x163b('0x3b')]);_0xe45e80[_0x163b('0x3f')]=_[_0x163b('0x3d')](_0x3fd3e6[_0x163b('0x3a')],qs[_0x163b('0x3e')](_0x3d8ec8[_0x163b('0x3b')][_0x163b('0x3e')]));_0xe45e80[_0x163b('0x3f')]=_0xe45e80[_0x163b('0x3f')][_0x163b('0x40')]?_0xe45e80[_0x163b('0x3f')]:_0x3fd3e6['model'];if(!_0x3d8ec8[_0x163b('0x3b')][_0x163b('0x41')](_0x163b('0x42'))){_0xe45e80[_0x163b('0x1f')]=qs['limit'](_0x3d8ec8[_0x163b('0x3b')][_0x163b('0x1f')]);_0xe45e80[_0x163b('0x1e')]=qs[_0x163b('0x1e')](_0x3d8ec8[_0x163b('0x3b')][_0x163b('0x1e')]);}_0xe45e80[_0x163b('0x43')]=qs[_0x163b('0x44')](_0x3d8ec8[_0x163b('0x3b')][_0x163b('0x44')]);_0xe45e80[_0x163b('0x45')]=qs[_0x163b('0x3c')](_[_0x163b('0x46')](_0x3d8ec8['query'],_0x3fd3e6[_0x163b('0x3c')]));_0xe45e80['where'][_0x163b('0xaa')]=_0x9d6ce1['id'];if(_0x3d8ec8[_0x163b('0x3b')][_0x163b('0x7f')]){_0xe45e80[_0x163b('0x45')]=_[_0x163b('0xba')](_0xe45e80[_0x163b('0x45')],{'$or':_[_0x163b('0x2f')](_0xe45e80[_0x163b('0x3f')],function(_0xf194c4){var _0x52cecf={};_0x52cecf[_0xf194c4]={'$like':'%'+_0x3d8ec8['query'][_0x163b('0x7f')]+'%'};return _0x52cecf;})});}if(_0x3d8ec8[_0x163b('0x3b')]['$gte']){var _0x330884=_0x3d8ec8['query']['$gte'][_0x163b('0x33')](',');var _0x5c59e6={};_0x5c59e6[_0x330884[0x0]]={'$gte':moment(_0x330884[0x1])[_0x163b('0xbb')](_0x163b('0xbc'))};_0xe45e80[_0x163b('0x45')]=_['merge'](_0xe45e80[_0x163b('0x45')],_0x5c59e6);}_0xe45e80=_['merge']({},_0xe45e80,_0x3d8ec8['options']);return db[_0x163b('0xb5')][_0x163b('0x96')]({'where':_0xe45e80[_0x163b('0x45')]})['then'](function(_0x33bb3b){_0x1aeb4e[_0x163b('0x96')]=_0x33bb3b;if(_0x3d8ec8['query']['includeAll']){_0xe45e80[_0x163b('0xb0')]=[{'all':!![]}];}return db[_0x163b('0xb5')]['findAll'](_0xe45e80);})[_0x163b('0x26')](function(_0x5d0ad8){_0x1aeb4e[_0x163b('0xac')]=_0x5d0ad8;return _0x1aeb4e;});}})[_0x163b('0x26')](respondWithFilteredResult(_0x15a23c,_0xe45e80))[_0x163b('0xad')](handleError(_0x15a23c,null));};exports['addTags']=function(_0x52b14d,_0x167ead,_0x177744){return db[_0x163b('0x36')]['find']({'where':{'id':_0x52b14d[_0x163b('0xb2')]['id']}})[_0x163b('0x26')](handleEntityNotFound(_0x167ead,null))['then'](function(_0x4d0b8d){if(_0x4d0b8d){return _0x4d0b8d['setTags'](_0x52b14d[_0x163b('0x6b')][_0x163b('0xb7')],_[_0x163b('0xb6')](_0x52b14d['body'],['ids','id'])||{})['spread'](function(){return db[_0x163b('0xbd')][_0x163b('0xbe')]({'attributes':['id',_0x163b('0x2c'),_0x163b('0x49')],'where':{'id':_0x52b14d[_0x163b('0x6b')]['ids']}});})[_0x163b('0x26')](function(_0x238d11){socket[_0x163b('0xbf')](_0x163b('0xc0'),{'id':Number(_0x52b14d[_0x163b('0xb2')]['id']),'tags':_0x238d11||[]});return{'id':Number(_0x52b14d['params']['id']),'tags':_0x238d11||[]};});}})[_0x163b('0x26')](respondWithResult(_0x167ead,null))[_0x163b('0xad')](handleError(_0x167ead,null));};exports['removeTags']=function(_0x3326ae,_0x445c9d,_0x543dfe){return db[_0x163b('0x36')]['find']({'where':{'id':_0x3326ae[_0x163b('0xb2')]['id']}})[_0x163b('0x26')](handleEntityNotFound(_0x445c9d,null))[_0x163b('0x26')](function(_0x3de402){if(_0x3de402){return _0x3de402[_0x163b('0xc1')](_0x3326ae[_0x163b('0x3b')]['ids']);}})[_0x163b('0x26')](respondWithStatusCode(_0x445c9d,null))[_0x163b('0xad')](handleError(_0x445c9d,null));};exports[_0x163b('0xc2')]=function(_0x33a67b,_0x386f1e){var _0x5e724f=moment()['unix']()[_0x163b('0x97')]();var _0x263671=path[_0x163b('0xc3')](config['root'],_0x163b('0xc4'),_0x163b('0xc5'),_0x163b('0xc6'));var _0x28d6c2=path[_0x163b('0xc3')](config[_0x163b('0xc7')],_0x163b('0xc4'),_0x163b('0xc5'),_0x163b('0xc8'));var _0x51020d=path[_0x163b('0xc3')](_0x263671,_0x5e724f);var _0x55916b=util[_0x163b('0xbb')]('transcript-%d-%s.zip',_0x33a67b['params']['id'],_0x5e724f);var _0x951087=path[_0x163b('0xc3')](_0x263671,_0x55916b);var _0x563e44=[];_0x563e44['push']({'model':db[_0x163b('0xc9')],'as':'Attachment','raw':!![]});var _0x27b22e=[{'model':db[_0x163b('0xb5')],'as':'Messages','attributes':['id','body','createdAt'],'include':_0x563e44}];return db[_0x163b('0x36')]['find']({'where':{'id':_0x33a67b[_0x163b('0xb2')]['id']},'include':_0x27b22e})['then'](handleEntityNotFound(_0x386f1e,null))[_0x163b('0x26')](function(_0xaac52c){if(_0xaac52c&&_0xaac52c[_0x163b('0xca')]){var _0x40ff9b=_0xaac52c[_0x163b('0xcb')]({'plain':!![]});fs[_0x163b('0xcc')](_0x51020d);for(var _0x1d9968=0x0;_0x1d9968<_0x40ff9b['Messages'][_0x163b('0x40')];_0x1d9968++){var _0x546efa=_0x40ff9b[_0x163b('0xca')][_0x1d9968][_0x163b('0xc9')];if(_0x546efa){var _0x2e3e3c=path[_0x163b('0xc3')](_0x28d6c2,_0x546efa['basename']);if(fs[_0x163b('0xcd')](_0x2e3e3c)){fs[_0x163b('0xce')](_0x2e3e3c)[_0x163b('0xcf')](fs[_0x163b('0xd0')](path[_0x163b('0xc3')](_0x51020d,_0x546efa[_0x163b('0xd1')])));}}}return BPromise['resolve']()[_0x163b('0x26')](function(){return new BPromise(function(_0x54a53f,_0x59d0bf){zipdir(_0x51020d,{'saveTo':_0x951087},function(_0x43449c,_0x455352){if(_0x43449c)return _0x59d0bf(_0x43449c);return _0x54a53f(_0x455352);});})[_0x163b('0x26')](function(){return new BPromise(function(_0x1bff22,_0x1cb096){rimraf(_0x51020d,function(_0x1b3afc){if(_0x1b3afc)_0x1cb096(_0x1b3afc);return _0x1bff22();});});})['then'](function(){return _0x386f1e[_0x163b('0xc2')](_0x951087,_0x55916b,function(_0x3acaf7){if(_0x3acaf7){console[_0x163b('0xd2')]('err',_0x3acaf7);}else{fs[_0x163b('0xd3')](_0x951087);}});});});}else{return _0x386f1e[_0x163b('0x29')](0xc8);}})['catch'](handleError(_0x386f1e,null));};
\ No newline at end of file
+var _0x02a0=['crypto','jsforce','desk.js','querystring','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','Users','map','fullname','Tags','TagIds','forEach','catch','FaxInteraction','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','select','field','color','tools_tags','u.id','u.fullname','left_join','users','fax_interactions','cm_contacts','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20>\x200','operator','$substring','split','ContactId','buildExpression','type','text','start','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','compact','FaxAccountId','concat','createdAt','parse','$gte','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','i.fax\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','having','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','agent','sequelize','toString','keyBy','merge','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','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','push','all','params','includeAll','include','create','body','describe','addMessage','FaxMessage','ids','findOne','pick','format','options','findAll','rows','omit','spread','emit','faxInteractionTags:save','removeTags','unix','root','files','join','server','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','mustache','util','sox','to-csv','ejs','fs-extra','squel'];(function(_0x3e85a4,_0x18c3a9){var _0x21e7d1=function(_0x48457d){while(--_0x48457d){_0x3e85a4['push'](_0x3e85a4['shift']());}};_0x21e7d1(++_0x18c3a9);}(_0x02a0,0x191));var _0x002a=function(_0x276c7c,_0x5e138f){_0x276c7c=_0x276c7c-0x0;var _0x31a47a=_0x02a0[_0x276c7c];return _0x31a47a;};'use strict';var emlformat=require(_0x002a('0x0'));var rimraf=require(_0x002a('0x1'));var zipdir=require(_0x002a('0x2'));var jsonpatch=require(_0x002a('0x3'));var rp=require(_0x002a('0x4'));var moment=require(_0x002a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x002a('0x6'));var util=require(_0x002a('0x7'));var path=require('path');var sox=require(_0x002a('0x8'));var csv=require(_0x002a('0x9'));var ejs=require(_0x002a('0xa'));var fs=require('fs');var fs_extra=require(_0x002a('0xb'));var _=require('lodash');var squel=require(_0x002a('0xc'));var crypto=require(_0x002a('0xd'));var jsforce=require(_0x002a('0xe'));var deskjs=require(_0x002a('0xf'));var toCsv=require(_0x002a('0x9'));var querystring=require(_0x002a('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x002a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x002a('0x12'));var utils=require(_0x002a('0x13'));var config=require(_0x002a('0x14'));var licenseUtil=require(_0x002a('0x15'));var db=require('../../mysqldb')['db'];config[_0x002a('0x16')]=_[_0x002a('0x17')](config[_0x002a('0x16')],{'host':_0x002a('0x18'),'port':0x18eb});var socket=require(_0x002a('0x19'))(new Redis(config[_0x002a('0x16')]));require('./faxInteraction.socket')[_0x002a('0x1a')](socket);function respondWithStatusCode(_0x56138f,_0x1d10fa){_0x1d10fa=_0x1d10fa||0xcc;return function(_0x439b7b){if(_0x439b7b){return _0x56138f[_0x002a('0x1b')](_0x1d10fa);}return _0x56138f[_0x002a('0x1c')](_0x1d10fa)[_0x002a('0x1d')]();};}function respondWithResult(_0x46aeba,_0x48cadb){_0x48cadb=_0x48cadb||0xc8;return function(_0x4a5f56){if(_0x4a5f56){return _0x46aeba[_0x002a('0x1c')](_0x48cadb)[_0x002a('0x1e')](_0x4a5f56);}};}function respondWithFilteredResult(_0x314d42,_0x281663){return function(_0xaa2a5){if(_0xaa2a5){var _0x1123fd=typeof _0x281663[_0x002a('0x1f')]===_0x002a('0x20')&&typeof _0x281663[_0x002a('0x21')]===_0x002a('0x20');var _0x29ba89=_0xaa2a5[_0x002a('0x22')];var _0x5a7bd8=_0x1123fd?0x0:_0x281663[_0x002a('0x1f')];var _0x157816=_0x1123fd?_0xaa2a5[_0x002a('0x22')]:_0x281663[_0x002a('0x1f')]+_0x281663[_0x002a('0x21')];var _0x553eec;if(_0x157816>=_0x29ba89){_0x157816=_0x29ba89;_0x553eec=0xc8;}else{_0x553eec=0xce;}_0x314d42['status'](_0x553eec);return _0x314d42[_0x002a('0x23')](_0x002a('0x24'),_0x5a7bd8+'-'+_0x157816+'/'+_0x29ba89)[_0x002a('0x1e')](_0xaa2a5);}return null;};}function patchUpdates(_0x17a989){return function(_0x3533c6){try{jsonpatch['apply'](_0x3533c6,_0x17a989,!![]);}catch(_0x7e2552){return BPromise['reject'](_0x7e2552);}return _0x3533c6[_0x002a('0x25')]();};}function saveUpdates(_0x3f5284,_0xec7a8d){return function(_0x5bfbe2){if(_0x5bfbe2){return _0x5bfbe2[_0x002a('0x26')](_0x3f5284)[_0x002a('0x27')](function(_0x39d26f){return _0x39d26f;});}return null;};}function removeEntity(_0x5ba485,_0x4ad413){return function(_0x3bc563){if(_0x3bc563){return _0x3bc563[_0x002a('0x28')]()[_0x002a('0x27')](function(){_0x5ba485[_0x002a('0x1c')](0xcc)[_0x002a('0x1d')]();});}};}function handleEntityNotFound(_0x4c555c,_0x46cf59){return function(_0x5ea53b){if(!_0x5ea53b){_0x4c555c[_0x002a('0x1b')](0x194);}return _0x5ea53b;};}function handleError(_0x20d29f,_0xe2d21c){_0xe2d21c=_0xe2d21c||0x1f4;return function(_0x5e799e){logger[_0x002a('0x29')](_0x5e799e[_0x002a('0x2a')]);if(_0x5e799e[_0x002a('0x2b')]){delete _0x5e799e[_0x002a('0x2b')];}_0x20d29f[_0x002a('0x1c')](_0xe2d21c)[_0x002a('0x2c')](_0x5e799e);};}function getInteractionUsers(_0x537052,_0x373ab0){return new BPromise(function(_0x16fe53,_0x53b87e){try{if(_0x373ab0[_0x537052['id']]){_0x537052[_0x002a('0x2d')]=_[_0x002a('0x2e')](_0x373ab0[_0x537052['id']],function(_0x581875){return{'id':_0x581875['id'],'fullname':_0x581875[_0x002a('0x2f')]};});}}catch(_0x10e067){_0x53b87e(_0x10e067);}_0x16fe53(_0x537052);});}function getInteractionTags(_0x332f61,_0x809288){return new BPromise(function(_0xb8fe60,_0x1bfdf6){try{if(_0x332f61['TagIds']){_0x332f61[_0x002a('0x30')]=[];_0x332f61[_0x002a('0x31')]['split'](',')[_0x002a('0x32')](function(_0x1480c2){_0x332f61[_0x002a('0x30')]['push'](_0x809288[_0x1480c2]);});}delete _0x332f61[_0x002a('0x31')];}catch(_0x35096e){_0x1bfdf6(_0x35096e);}_0xb8fe60(_0x332f61);});}function updateFaxInteraction(_0x292c5b,_0x1e1fa8,_0x3fc416){return new BPromise(function(_0x2d1c02,_0x20853f){return getInteractionUsers(_0x292c5b,_0x3fc416)[_0x002a('0x27')](function(_0x5f4282){return getInteractionTags(_0x5f4282,_0x1e1fa8);})[_0x002a('0x27')](function(_0x37a074){_0x2d1c02(_0x37a074);})[_0x002a('0x33')](function(_0x286f10){_0x20853f(_0x286f10);});});}exports['index']=function(_0x5bff72,_0x5e3054){var _0x3fda16={},_0xc0e96a={},_0x227865={'count':0x0,'rows':[]};var _0x27bfe1=_[_0x002a('0x2e')](db[_0x002a('0x34')][_0x002a('0x35')],function(_0xeae75){return{'name':_0xeae75[_0x002a('0x36')],'type':_0xeae75['type'][_0x002a('0x37')]};});_0xc0e96a[_0x002a('0x38')]=_[_0x002a('0x2e')](_0x27bfe1,_0x002a('0x2b'));_0xc0e96a[_0x002a('0x39')]=_[_0x002a('0x3a')](_0x5bff72[_0x002a('0x39')]);_0xc0e96a[_0x002a('0x3b')]=_[_0x002a('0x3c')](_0xc0e96a[_0x002a('0x38')],_0xc0e96a['query']);_0x3fda16['attributes']=_['intersection'](_0xc0e96a[_0x002a('0x38')],qs[_0x002a('0x3d')](_0x5bff72[_0x002a('0x39')][_0x002a('0x3d')]));_0x3fda16[_0x002a('0x3e')]=_0x3fda16['attributes'][_0x002a('0x3f')]?_0x3fda16[_0x002a('0x3e')]:_0xc0e96a['model'];if(!_0x5bff72[_0x002a('0x39')]['hasOwnProperty'](_0x002a('0x40'))){_0x3fda16['limit']=qs[_0x002a('0x21')](_0x5bff72[_0x002a('0x39')]['limit']);_0x3fda16[_0x002a('0x1f')]=qs[_0x002a('0x1f')](_0x5bff72[_0x002a('0x39')][_0x002a('0x1f')]);}_0x3fda16[_0x002a('0x41')]=qs[_0x002a('0x42')](_0x5bff72['query']['sort']);_0x3fda16['where']=qs[_0x002a('0x3b')](_['pick'](_0x5bff72['query'],_0xc0e96a['filters']),_0x27bfe1);var _0xeedaaa=[];var _0x251594=squel[_0x002a('0x43')]()[_0x002a('0x44')]('id')[_0x002a('0x44')](_0x002a('0x2b'))[_0x002a('0x44')](_0x002a('0x45'))['from'](_0x002a('0x46'));var _0x1465f1=squel[_0x002a('0x43')]()[_0x002a('0x44')](_0x002a('0x47'))['field'](_0x002a('0x48'))[_0x002a('0x44')]('ui.FaxInteractionId')['from']('user_has_fax_interactions','ui')[_0x002a('0x49')](_0x002a('0x4a'),'u','u.id\x20=\x20ui.UserId');var _0x3f3825=squel[_0x002a('0x43')]()['from'](_0x002a('0x4b'),'i')[_0x002a('0x49')](_0x002a('0x4c'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0x002a('0x4a'),'o',_0x002a('0x4d'))[_0x002a('0x49')](_0x002a('0x4e'),'a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x002a('0x4f'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x002a('0x49')](_0x002a('0x50'),'it',_0x002a('0x51'))[_0x002a('0x49')](_0x002a('0x46'),'t','t.id\x20=\x20it.TagId');var _0x1e8da1=squel[_0x002a('0x52')]();var _0x6168d8=[];var _0x5b5d9e=squel[_0x002a('0x52')]();var _0x2d0023;if(_0x5bff72[_0x002a('0x39')][_0x002a('0x53')]){_0x2d0023=as[_0x002a('0x54')](_0x5bff72[_0x002a('0x39')][_0x002a('0x53')]);var _0xc4f281=_0x2d0023[_0x002a('0x55')];for(var _0x3ae12b=0x0;_0x3ae12b<_0x2d0023[_0x002a('0x56')][_0x002a('0x3f')];_0x3ae12b++){var _0x2c4f6f=_0x2d0023[_0x002a('0x56')][_0x3ae12b];var _0x39db16='i';var _0x8e59ef=_[_0x002a('0x57')](_0x27bfe1,[_0x002a('0x2b'),_0x2c4f6f['field']]);if(!_0x8e59ef){switch(_0x2c4f6f[_0x002a('0x44')]){case _0x002a('0x58'):if(_0x2c4f6f[_0x002a('0x59')]==0x1){_0x3f3825['having']('`'+_0x2c4f6f[_0x002a('0x44')]+'`\x20=\x200');}else{_0x3f3825['having']('`'+_0x2c4f6f['field']+_0x002a('0x5a'));}break;case'Contact':if(_0x2c4f6f[_0x002a('0x5b')]===_0x002a('0x5c')){if(_0x2c4f6f[_0x002a('0x59')][_0x002a('0x5d')]('\x20')[_0x002a('0x3f')]>0x1){_0x1e8da1[_0xc4f281]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x2c4f6f[_0x002a('0x59')]),null);}else{var _0xbcbfa4='%'+_0x2c4f6f[_0x002a('0x59')]+'%';_0x1e8da1[_0xc4f281]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xbcbfa4,_0xbcbfa4,_0xbcbfa4);}}else{_0x8e59ef=_[_0x002a('0x57')](_0x27bfe1,[_0x002a('0x2b'),_0x002a('0x5e')]);_0x2c4f6f['field']='ContactId';_0x2c5eae=as[_0x002a('0x5f')](_0x39db16,_0x8e59ef[_0x002a('0x60')],_0x2c4f6f);_0x1e8da1[_0xc4f281](_0x2c5eae[_0x002a('0x61')],_0x2c5eae['value'][_0x002a('0x62')],_0x2c5eae[_0x002a('0x59')][_0x002a('0x1d')]);}break;case _0x002a('0x63'):var _0x1f8074=_0x2c4f6f[_0x002a('0x59')][_0x002a('0x5d')](',')[_0x002a('0x2e')](function(_0x452d37){return Number(_0x452d37);});_0x1f8074['forEach'](function(_0x27070a){_0x5b5d9e['or'](_0x002a('0x64'),'%,'+_0x27070a+',%');});_0x6168d8=_[_0x002a('0x65')](_0x6168d8,_0x1f8074);break;case _0x002a('0x66'):if(_0x2c4f6f['operator']==='$substring'){_0x1e8da1[_0xc4f281](_0x002a('0x67'),'%'+_0x2c4f6f[_0x002a('0x59')]+'%',null);}else{_0x8e59ef=_[_0x002a('0x57')](_0x27bfe1,[_0x002a('0x2b'),_0x002a('0x68')]);_0x2c4f6f[_0x002a('0x44')]=_0x002a('0x68');_0x2c5eae=as['buildExpression'](_0x39db16,_0x8e59ef[_0x002a('0x60')],_0x2c4f6f);_0x1e8da1[_0xc4f281](_0x2c5eae[_0x002a('0x61')],_0x2c5eae['value'][_0x002a('0x62')],_0x2c5eae[_0x002a('0x59')][_0x002a('0x1d')]);}break;case'body':_0x2c5eae=as[_0x002a('0x5f')]('me',null,_0x2c4f6f);_0x1e8da1[_0xc4f281](_0x2c5eae[_0x002a('0x61')],_0x2c5eae[_0x002a('0x59')][_0x002a('0x62')],_0x2c5eae['value'][_0x002a('0x1d')]);break;}}else{var _0x2c5eae=as[_0x002a('0x5f')](_0x39db16,_0x8e59ef[_0x002a('0x60')],_0x2c4f6f);_0x1e8da1[_0xc4f281](_0x2c5eae['text'],_0x2c5eae[_0x002a('0x59')][_0x002a('0x62')],_0x2c5eae[_0x002a('0x59')][_0x002a('0x1d')]);}}}else{var _0x5d131b=_(_0x5bff72[_0x002a('0x39')])[_0x002a('0x3a')]()[_0x002a('0x2e')](function(_0x8c1c7c){return _['some'](_0x27bfe1,[_0x002a('0x2b'),_0x8c1c7c])?_0x8c1c7c:undefined;})[_0x002a('0x69')]()[_0x002a('0x59')]();if(!_['isEmpty'](_0x5d131b)){_0x5d131b[_0x002a('0x32')](function(_0x597319){if(_0x597319===_0x002a('0x6a')){_0x3f3825['where']('i.FaxAccountId\x20IN\x20?',[][_0x002a('0x6b')](_0x5bff72[_0x002a('0x39')][_0x597319]));}else if(_0x597319===_0x002a('0x6c')){var _0x44b148=JSON[_0x002a('0x6d')](_0x5bff72['query'][_0x597319])[_0x002a('0x6e')];var _0x45a90b=JSON['parse'](_0x5bff72[_0x002a('0x39')][_0x597319])[_0x002a('0x6f')];_0x3f3825[_0x002a('0x70')](_0x002a('0x71'),_0x44b148,_0x45a90b);}else{if(_0x5bff72[_0x002a('0x39')][_0x597319]==='null'){_0x3f3825['where']('i.'+_0x597319+'\x20IS\x20NULL');}else{_0x3f3825[_0x002a('0x70')]('i.'+_0x597319+_0x002a('0x72'),_0x5bff72['query'][_0x597319]);}}});}if(_0x5bff72[_0x002a('0x39')][_0x002a('0x73')]){if(_0x5bff72[_0x002a('0x39')][_0x002a('0x73')]==0x1){_0x3f3825['having'](_0x002a('0x74'));}else{_0x3f3825['having'](_0x002a('0x75'));}}if(_0x5bff72[_0x002a('0x39')]['tag']){_0x6168d8=_['isArray'](_0x5bff72['query'][_0x002a('0x76')])?_0x5bff72['query'][_0x002a('0x76')]:new Array(_0x5bff72[_0x002a('0x39')][_0x002a('0x76')]);_0x6168d8[_0x002a('0x32')](function(_0x3c3a7e){_0x5b5d9e['or'](_0x002a('0x64'),'%,'+_0x3c3a7e+',%');});}if(_0x5bff72[_0x002a('0x39')][_0x002a('0x77')]){var _0x2b412d=_0x5bff72[_0x002a('0x39')][_0x002a('0x77')][_0x002a('0x78')]('\x5c','\x5c\x5c')[_0x002a('0x78')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x2b412d)){_0x1e8da1['or']('i.id\x20LIKE\x20?',_0x2b412d+'%')['or'](_0x002a('0x79'),_0x2b412d+'%');}_0x1e8da1['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x2b412d+'%');}}_0x3f3825[_0x002a('0x70')](_0x1e8da1);_0x3f3825[_0x002a('0x7a')](_0x002a('0x7b'));var _0x5d8612={'type':db[_0x002a('0x7c')][_0x002a('0x7d')]['SELECT'],'raw':!![]};var _0x367fb9=_0x3f3825[_0x002a('0x7e')]();_0x367fb9[_0x002a('0x44')](_0x002a('0x7b'));_0x367fb9[_0x002a('0x44')](_0x002a('0x7f'),'unreadMessages');if(_0x3fda16['order']){_0x3fda16[_0x002a('0x41')][_0x002a('0x32')](function(_0x829bc){var _0x4ca677=_0x829bc[0x0]===_0x002a('0x80')?_0x829bc[0x0]:'i.'+_0x829bc[0x0];_0x3f3825[_0x002a('0x41')](_0x4ca677,_0x829bc[0x1]===_0x002a('0x81')?![]:!![]);});}if(!_[_0x002a('0x82')](_0x6168d8)){_0x3f3825[_0x002a('0x83')](_0x5b5d9e);_0x367fb9['where'](_0x002a('0x84'),_0x6168d8);}BPromise[_0x002a('0x85')]()['then'](function(){if(!_0x2d0023){if(_0x5bff72[_0x002a('0x39')][_0x002a('0x6a')])return;_0x367fb9[_0x002a('0x70')](_0x002a('0x86'));_0x3f3825[_0x002a('0x70')](_0x002a('0x86'));return;}if(_0x5bff72[_0x002a('0x87')][_0x002a('0x88')]!=='agent')return;return _0x5bff72[_0x002a('0x87')][_0x002a('0x89')]({'attributes':['id'],'raw':!![]})[_0x002a('0x27')](function(_0x5e7b22){if(_[_0x002a('0x82')](_0x5e7b22)){_0x367fb9[_0x002a('0x70')](_0x002a('0x8a'));_0x3f3825[_0x002a('0x70')](_0x002a('0x8a'));}else{_0x367fb9[_0x002a('0x70')](_0x002a('0x8b'),_[_0x002a('0x2e')](_0x5e7b22,'id'));_0x3f3825['where'](_0x002a('0x8b'),_[_0x002a('0x2e')](_0x5e7b22,'id'));}});})['then'](function(){if(_0x5bff72['user'][_0x002a('0x88')]===_0x002a('0x8c')&&!_0x2d0023&&!_0x5bff72['query']['FaxAccountId'])return[];return db[_0x002a('0x8d')][_0x002a('0x39')](_0x367fb9[_0x002a('0x8e')](),_0x5d8612);})[_0x002a('0x27')](function(_0x5e2b5e){_0x227865[_0x002a('0x22')]=_0x5e2b5e[_0x002a('0x3f')];if(_0x227865['count']===0x0)return[];return db[_0x002a('0x8d')][_0x002a('0x39')](_0x251594[_0x002a('0x8e')](),_0x5d8612)[_0x002a('0x27')](function(_0x2d5614){_0xeedaaa=_[_0x002a('0x8f')](_0x2d5614,'id');_0x5d8612=_[_0x002a('0x90')](_0x5d8612,{'model':db[_0x002a('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5bff72[_0x002a('0x39')][_0x002a('0x3d')]){_0x3fda16[_0x002a('0x3e')][_0x002a('0x32')](function(_0x490d8e){_0x3f3825['field']('i.'+_0x490d8e);});}else{_0x3f3825[_0x002a('0x44')](_0x002a('0x7f'),_0x002a('0x58'));_0x3f3825['field'](_0x002a('0x91'),_0x002a('0x92'));_0x3f3825['field'](_0x002a('0x93'),_0x002a('0x94'));_0x3f3825[_0x002a('0x44')](_0x002a('0x95'),_0x002a('0x80'));_0x3f3825[_0x002a('0x44')]('i.*');_0x3f3825[_0x002a('0x44')](_0x002a('0x96'),'Contact.firstName');_0x3f3825[_0x002a('0x44')](_0x002a('0x97'),_0x002a('0x98'));_0x3f3825['field'](_0x002a('0x99'),_0x002a('0x9a'));_0x3f3825['field'](_0x002a('0x9b'),_0x002a('0x9c'));_0x3f3825['field'](_0x002a('0x9d'),_0x002a('0x9e'));_0x3f3825[_0x002a('0x44')]('c.fax',_0x002a('0x9f'));_0x3f3825['field'](_0x002a('0xa0'),_0x002a('0xa1'));_0x3f3825['field']('o.internal',_0x002a('0xa2'));_0x3f3825[_0x002a('0x44')](_0x002a('0xa3'),_0x002a('0x31'));}if(_0x3fda16[_0x002a('0x21')])_0x3f3825[_0x002a('0x21')](_0x3fda16[_0x002a('0x21')]);if(_0x3fda16[_0x002a('0x1f')])_0x3f3825[_0x002a('0x1f')](_0x3fda16[_0x002a('0x1f')]);return db['sequelize']['query'](_0x3f3825[_0x002a('0x8e')](),_0x5d8612);})['then'](function(_0x4819fe){if(_0x4819fe[_0x002a('0x3f')]>0x0)_0x1465f1['where'](_0x002a('0xa4'),_[_0x002a('0x2e')](_0x4819fe,'id'));return db[_0x002a('0x8d')][_0x002a('0x39')](_0x1465f1[_0x002a('0x8e')](),_0x5d8612)[_0x002a('0x27')](function(_0x341aae){var _0x427f52=_[_0x002a('0xa5')](_0x341aae,_0x002a('0xa6'));var _0x4160bf=[];_0x4819fe[_0x002a('0x32')](function(_0x451a16){_0x4160bf[_0x002a('0xa7')](updateFaxInteraction(_0x451a16,_0xeedaaa,_0x427f52));});return BPromise[_0x002a('0xa8')](_0x4160bf);});});})[_0x002a('0x27')](function(_0x3e1c0b){_0x227865['rows']=_0x3e1c0b;return _0x227865;})[_0x002a('0x27')](respondWithFilteredResult(_0x5e3054,_0x3fda16))[_0x002a('0x33')](handleError(_0x5e3054,null));};exports['show']=function(_0x15a21d,_0x4d7628){var _0x52966e={'raw':![],'where':{'id':_0x15a21d[_0x002a('0xa9')]['id']}},_0xffbd3c={};_0xffbd3c[_0x002a('0x38')]=_['keys'](db['FaxInteraction'][_0x002a('0x35')]);_0xffbd3c['query']=_['keys'](_0x15a21d[_0x002a('0x39')]);_0xffbd3c[_0x002a('0x3b')]=_[_0x002a('0x3c')](_0xffbd3c[_0x002a('0x38')],_0xffbd3c[_0x002a('0x39')]);_0x52966e[_0x002a('0x3e')]=_[_0x002a('0x3c')](_0xffbd3c['model'],qs['fields'](_0x15a21d[_0x002a('0x39')]['fields']));_0x52966e[_0x002a('0x3e')]=_0x52966e['attributes'][_0x002a('0x3f')]?_0x52966e['attributes']:_0xffbd3c['model'];if(_0x15a21d['query'][_0x002a('0xaa')]){_0x52966e[_0x002a('0xab')]=[{'all':!![]}];}_0x52966e=_[_0x002a('0x90')]({},_0x52966e,_0x15a21d['options']);return db['FaxInteraction'][_0x002a('0x57')](_0x52966e)[_0x002a('0x27')](handleEntityNotFound(_0x4d7628,null))['then'](respondWithResult(_0x4d7628,null))[_0x002a('0x33')](handleError(_0x4d7628,null));};exports[_0x002a('0xac')]=function(_0x1e1f8a,_0x341fd5){return db['FaxInteraction']['create'](_0x1e1f8a[_0x002a('0xad')],{})[_0x002a('0x27')](respondWithResult(_0x341fd5,0xc9))['catch'](handleError(_0x341fd5,null));};exports['update']=function(_0x21120a,_0x3e7d4b){if(_0x21120a['body']['id']){delete _0x21120a['body']['id'];}return db['FaxInteraction'][_0x002a('0x57')]({'where':{'id':_0x21120a[_0x002a('0xa9')]['id']}})[_0x002a('0x27')](handleEntityNotFound(_0x3e7d4b,null))['then'](saveUpdates(_0x21120a[_0x002a('0xad')],null))[_0x002a('0x27')](respondWithResult(_0x3e7d4b,null))[_0x002a('0x33')](handleError(_0x3e7d4b,null));};exports[_0x002a('0x28')]=function(_0x210cf2,_0x16ba45){return db['FaxInteraction'][_0x002a('0x57')]({'where':{'id':_0x210cf2[_0x002a('0xa9')]['id']}})[_0x002a('0x27')](handleEntityNotFound(_0x16ba45,null))[_0x002a('0x27')](removeEntity(_0x16ba45,null))[_0x002a('0x33')](handleError(_0x16ba45,null));};exports[_0x002a('0xae')]=function(_0x332dff,_0x94d520){return db[_0x002a('0x34')][_0x002a('0xae')]()['then'](respondWithResult(_0x94d520,null))['catch'](handleError(_0x94d520,null));};exports[_0x002a('0xaf')]=function(_0x38c681,_0x3084e9,_0x4ae09b){return db[_0x002a('0xb0')]['find']({'where':{'id':_0x38c681[_0x002a('0xa9')]['id']}})[_0x002a('0x27')](handleEntityNotFound(_0x3084e9,null))[_0x002a('0x27')](function(_0x29d650){if(_0x29d650){return _0x29d650[_0x002a('0xaf')](_0x38c681[_0x002a('0xad')][_0x002a('0xb1')],_['omit'](_0x38c681[_0x002a('0xad')],['ids','id'])||{});}})[_0x002a('0x27')](respondWithResult(_0x3084e9,null))[_0x002a('0x33')](handleError(_0x3084e9,null));};exports['getMessages']=function(_0x43887c,_0x5cd9f3,_0xa819fa){var _0x2c9db7={'raw':![],'where':{}};var _0x5fe049={};var _0x302da1={'count':0x0,'rows':[]};return db[_0x002a('0x34')][_0x002a('0xb2')]({'where':{'id':_0x43887c[_0x002a('0xa9')]['id']}})['then'](handleEntityNotFound(_0x5cd9f3,null))['then'](function(_0x4e7f50){if(_0x4e7f50){_0x5fe049[_0x002a('0x38')]=_[_0x002a('0x3a')](db[_0x002a('0xb0')][_0x002a('0x35')]);_0x5fe049[_0x002a('0x39')]=_[_0x002a('0x3a')](_0x43887c['query']);_0x5fe049[_0x002a('0x3b')]=_[_0x002a('0x3c')](_0x5fe049['model'],_0x5fe049[_0x002a('0x39')]);_0x2c9db7[_0x002a('0x3e')]=_['intersection'](_0x5fe049[_0x002a('0x38')],qs[_0x002a('0x3d')](_0x43887c[_0x002a('0x39')]['fields']));_0x2c9db7[_0x002a('0x3e')]=_0x2c9db7['attributes'][_0x002a('0x3f')]?_0x2c9db7[_0x002a('0x3e')]:_0x5fe049[_0x002a('0x38')];if(!_0x43887c[_0x002a('0x39')]['hasOwnProperty'](_0x002a('0x40'))){_0x2c9db7[_0x002a('0x21')]=qs[_0x002a('0x21')](_0x43887c[_0x002a('0x39')][_0x002a('0x21')]);_0x2c9db7[_0x002a('0x1f')]=qs['offset'](_0x43887c[_0x002a('0x39')][_0x002a('0x1f')]);}_0x2c9db7[_0x002a('0x41')]=qs[_0x002a('0x42')](_0x43887c[_0x002a('0x39')][_0x002a('0x42')]);_0x2c9db7[_0x002a('0x70')]=qs[_0x002a('0x3b')](_[_0x002a('0xb3')](_0x43887c[_0x002a('0x39')],_0x5fe049[_0x002a('0x3b')]));_0x2c9db7['where'][_0x002a('0xa6')]=_0x4e7f50['id'];if(_0x43887c[_0x002a('0x39')][_0x002a('0x77')]){_0x2c9db7[_0x002a('0x70')]=_[_0x002a('0x90')](_0x2c9db7[_0x002a('0x70')],{'$or':_['map'](_0x2c9db7[_0x002a('0x3e')],function(_0x3b792a){var _0x56e12c={};_0x56e12c[_0x3b792a]={'$like':'%'+_0x43887c[_0x002a('0x39')]['filter']+'%'};return _0x56e12c;})});}if(_0x43887c[_0x002a('0x39')]['$gte']){var _0x124420=_0x43887c[_0x002a('0x39')][_0x002a('0x6e')][_0x002a('0x5d')](',');var _0x47744a={};_0x47744a[_0x124420[0x0]]={'$gte':moment(_0x124420[0x1])[_0x002a('0xb4')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2c9db7['where']=_['merge'](_0x2c9db7[_0x002a('0x70')],_0x47744a);}_0x2c9db7=_[_0x002a('0x90')]({},_0x2c9db7,_0x43887c[_0x002a('0xb5')]);return db[_0x002a('0xb0')][_0x002a('0x22')]({'where':_0x2c9db7['where']})[_0x002a('0x27')](function(_0x16eef8){_0x302da1['count']=_0x16eef8;if(_0x43887c[_0x002a('0x39')]['includeAll']){_0x2c9db7[_0x002a('0xab')]=[{'all':!![]}];}return db[_0x002a('0xb0')][_0x002a('0xb6')](_0x2c9db7);})[_0x002a('0x27')](function(_0x4afb83){_0x302da1[_0x002a('0xb7')]=_0x4afb83;return _0x302da1;});}})['then'](respondWithFilteredResult(_0x5cd9f3,_0x2c9db7))['catch'](handleError(_0x5cd9f3,null));};exports['addTags']=function(_0x49d90a,_0x4f265a,_0x250004){return db[_0x002a('0x34')][_0x002a('0x57')]({'where':{'id':_0x49d90a[_0x002a('0xa9')]['id']}})[_0x002a('0x27')](handleEntityNotFound(_0x4f265a,null))[_0x002a('0x27')](function(_0x256c67){if(_0x256c67){return _0x256c67['setTags'](_0x49d90a[_0x002a('0xad')][_0x002a('0xb1')],_[_0x002a('0xb8')](_0x49d90a[_0x002a('0xad')],[_0x002a('0xb1'),'id'])||{})[_0x002a('0xb9')](function(){return db[_0x002a('0x63')]['findAll']({'attributes':['id',_0x002a('0x2b'),_0x002a('0x45')],'where':{'id':_0x49d90a['body'][_0x002a('0xb1')]}});})[_0x002a('0x27')](function(_0x41c98f){socket[_0x002a('0xba')](_0x002a('0xbb'),{'id':Number(_0x49d90a[_0x002a('0xa9')]['id']),'tags':_0x41c98f||[]});return{'id':Number(_0x49d90a[_0x002a('0xa9')]['id']),'tags':_0x41c98f||[]};});}})[_0x002a('0x27')](respondWithResult(_0x4f265a,null))[_0x002a('0x33')](handleError(_0x4f265a,null));};exports[_0x002a('0xbc')]=function(_0x428b51,_0x1149e4,_0xd64ee){return db[_0x002a('0x34')][_0x002a('0x57')]({'where':{'id':_0x428b51['params']['id']}})[_0x002a('0x27')](handleEntityNotFound(_0x1149e4,null))[_0x002a('0x27')](function(_0x109880){if(_0x109880){return _0x109880[_0x002a('0xbc')](_0x428b51['query'][_0x002a('0xb1')]);}})[_0x002a('0x27')](respondWithStatusCode(_0x1149e4,null))[_0x002a('0x33')](handleError(_0x1149e4,null));};exports['download']=function(_0x31f387,_0x388520){var _0x1c4771=moment()[_0x002a('0xbd')]()[_0x002a('0x8e')]();var _0x5720c5=path['join'](config[_0x002a('0xbe')],'server',_0x002a('0xbf'),'tmp');var _0x22fa30=path[_0x002a('0xc0')](config[_0x002a('0xbe')],_0x002a('0xc1'),'files',_0x002a('0xc2'));var _0x3d8959=path[_0x002a('0xc0')](_0x5720c5,_0x1c4771);var _0xb617f3=util['format'](_0x002a('0xc3'),_0x31f387['params']['id'],_0x1c4771);var _0x20143a=path[_0x002a('0xc0')](_0x5720c5,_0xb617f3);var _0x3e317d=[];_0x3e317d[_0x002a('0xa7')]({'model':db['Attachment'],'as':_0x002a('0xc4'),'raw':!![]});var _0x1a85b5=[{'model':db[_0x002a('0xb0')],'as':_0x002a('0xc5'),'attributes':['id',_0x002a('0xad'),_0x002a('0x6c')],'include':_0x3e317d}];return db['FaxInteraction'][_0x002a('0x57')]({'where':{'id':_0x31f387[_0x002a('0xa9')]['id']},'include':_0x1a85b5})[_0x002a('0x27')](handleEntityNotFound(_0x388520,null))[_0x002a('0x27')](function(_0x2aaabd){if(_0x2aaabd&&_0x2aaabd[_0x002a('0xc5')]){var _0x3d9b84=_0x2aaabd[_0x002a('0xc6')]({'plain':!![]});fs[_0x002a('0xc7')](_0x3d8959);for(var _0x33f3b9=0x0;_0x33f3b9<_0x3d9b84['Messages'][_0x002a('0x3f')];_0x33f3b9++){var _0x37e567=_0x3d9b84[_0x002a('0xc5')][_0x33f3b9][_0x002a('0xc4')];if(_0x37e567){var _0x262974=path['join'](_0x22fa30,_0x37e567[_0x002a('0xc8')]);if(fs[_0x002a('0xc9')](_0x262974)){fs[_0x002a('0xca')](_0x262974)[_0x002a('0xcb')](fs[_0x002a('0xcc')](path[_0x002a('0xc0')](_0x3d8959,_0x37e567['basename'])));}}}return BPromise[_0x002a('0x85')]()[_0x002a('0x27')](function(){return new BPromise(function(_0x4f3d0c,_0x1b5ec9){zipdir(_0x3d8959,{'saveTo':_0x20143a},function(_0x21340e,_0x145e05){if(_0x21340e)return _0x1b5ec9(_0x21340e);return _0x4f3d0c(_0x145e05);});})[_0x002a('0x27')](function(){return new BPromise(function(_0x33d8c,_0xcd9e6f){rimraf(_0x3d8959,function(_0x4d5119){if(_0x4d5119)_0xcd9e6f(_0x4d5119);return _0x33d8c();});});})[_0x002a('0x27')](function(){return _0x388520['download'](_0x20143a,_0xb617f3,function(_0x586e09){if(_0x586e09){console[_0x002a('0xcd')]('err',_0x586e09);}else{fs[_0x002a('0xce')](_0x20143a);}});});});}else{return _0x388520[_0x002a('0x1b')](0xc8);}})[_0x002a('0x33')](handleError(_0x388520,null));};
\ No newline at end of file
index dcfd635..71b1c6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f8=['emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','getUsers','setDataValue','Users','map','findAll','then','length'];(function(_0x481bdf,_0x231538){var _0x281a12=function(_0x264b18){while(--_0x264b18){_0x481bdf['push'](_0x481bdf['shift']());}};_0x281a12(++_0x231538);}(_0x15f8,0x7d));var _0x815f=function(_0x5c48f2,_0x2f9895){_0x5c48f2=_0x5c48f2-0x0;var _0x31b6ef=_0x15f8[_0x5c48f2];return _0x31b6ef;};'use strict';var EventEmitter=require(_0x815f('0x0'));var FaxInteraction=require(_0x815f('0x1'))['db'][_0x815f('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x815f('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x815f('0x4')](0x0);var events={'afterCreate':_0x815f('0x5'),'afterUpdate':_0x815f('0x6'),'afterDestroy':_0x815f('0x7')};function emitEvent(_0x487ee2){return function(_0x4348b8,_0x3dd8ea,_0x138b23){_0x4348b8[_0x815f('0x8')]({'attributes':['id'],'raw':!![]})['then'](function(_0x32abd6){_0x4348b8[_0x815f('0x9')](_0x815f('0xa'),_0x32abd6[_0x815f('0xb')](function(_0x26691e){return{'id':_0x26691e['id']};}));return FaxMessage[_0x815f('0xc')]({'where':{'FaxInteractionId':_0x4348b8['id'],'direction':'in','read':![]},'raw':!![]});})[_0x815f('0xd')](function(_0x507b8f){_0x4348b8[_0x815f('0x9')]('unreadMessages',_0x507b8f[_0x815f('0xe')]);FaxInteractionEvents['emit'](_0x487ee2+':'+_0x4348b8['id'],_0x4348b8);FaxInteractionEvents[_0x815f('0xf')](_0x487ee2,_0x4348b8);_0x138b23(null);})[_0x815f('0x10')](_0x138b23(null));};}for(var e in events){if(events[_0x815f('0x11')](e)){var event=events[e];FaxInteraction[_0x815f('0x12')](e,emitEvent(event));}}module[_0x815f('0x13')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x8dab=['FaxInteraction','../../mysqldb','FaxMessage','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','events'];(function(_0x559717,_0x164a33){var _0x2f672b=function(_0x1d7dd5){while(--_0x1d7dd5){_0x559717['push'](_0x559717['shift']());}};_0x2f672b(++_0x164a33);}(_0x8dab,0x164));var _0xb8da=function(_0x3c2576,_0x10994b){_0x3c2576=_0x3c2576-0x0;var _0x3435d0=_0x8dab[_0x3c2576];return _0x3435d0;};'use strict';var EventEmitter=require(_0xb8da('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0xb8da('0x1')];var FaxMessage=require(_0xb8da('0x2'))['db'][_0xb8da('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb8da('0x4'),'afterUpdate':_0xb8da('0x5'),'afterDestroy':_0xb8da('0x6')};function emitEvent(_0x58fd76){return function(_0x3f0f11,_0x236d05,_0x5e54a4){_0x3f0f11[_0xb8da('0x7')]({'attributes':['id'],'raw':!![]})[_0xb8da('0x8')](function(_0xa3bf01){_0x3f0f11[_0xb8da('0x9')](_0xb8da('0xa'),_0xa3bf01[_0xb8da('0xb')](function(_0x3577d2){return{'id':_0x3577d2['id']};}));return FaxMessage[_0xb8da('0xc')]({'where':{'FaxInteractionId':_0x3f0f11['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x25bc6b){_0x3f0f11[_0xb8da('0x9')](_0xb8da('0xd'),_0x25bc6b[_0xb8da('0xe')]);FaxInteractionEvents['emit'](_0x58fd76+':'+_0x3f0f11['id'],_0x3f0f11);FaxInteractionEvents[_0xb8da('0xf')](_0x58fd76,_0x3f0f11);_0x5e54a4(null);})[_0xb8da('0x10')](_0x5e54a4(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index 3156ded..ed9d9d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba79=['FaxInteraction','changed','closed','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','./faxInteraction.attributes','define'];(function(_0x264cea,_0x42067a){var _0x24c692=function(_0x357d40){while(--_0x357d40){_0x264cea['push'](_0x264cea['shift']());}};_0x24c692(++_0x42067a);}(_0xba79,0x153));var _0x9ba7=function(_0x14f681,_0xa0808e){_0x14f681=_0x14f681-0x0;var _0x1d4cb2=_0xba79[_0x14f681];return _0x1d4cb2;};'use strict';var _=require(_0x9ba7('0x0'));var util=require(_0x9ba7('0x1'));var logger=require(_0x9ba7('0x2'))('api');var moment=require(_0x9ba7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9ba7('0x4'));var rimraf=require(_0x9ba7('0x5'));var config=require(_0x9ba7('0x6'));var attributes=require(_0x9ba7('0x7'));module['exports']=function(_0x5716ed,_0x4f3e5d){return _0x5716ed[_0x9ba7('0x8')](_0x9ba7('0x9'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x118de6,_0xb43f3d,_0x3d714c){if(_0x118de6[_0x9ba7('0xa')](_0x9ba7('0xb'))){_0x118de6['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x3d714c(null,_0x118de6);}}});};
\ No newline at end of file
+var _0x9fc3=['./faxInteraction.attributes','exports','define','FaxInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','path','rimraf'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x9fc3,0xcb));var _0x39fc=function(_0x336ecd,_0x418fe8){_0x336ecd=_0x336ecd-0x0;var _0x7c9632=_0x9fc3[_0x336ecd];return _0x7c9632;};'use strict';var _=require(_0x39fc('0x0'));var util=require(_0x39fc('0x1'));var logger=require(_0x39fc('0x2'))(_0x39fc('0x3'));var moment=require(_0x39fc('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x39fc('0x5'));var rimraf=require(_0x39fc('0x6'));var config=require('../../config/environment');var attributes=require(_0x39fc('0x7'));module[_0x39fc('0x8')]=function(_0x1ad379,_0x4496d0){return _0x1ad379[_0x39fc('0x9')](_0x39fc('0xa'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x108460,_0x55652d,_0x2a06b1){if(_0x108460[_0x39fc('0xb')](_0x39fc('0xc'))){_0x108460[_0x39fc('0xd')]=moment()['format'](_0x39fc('0xe'));}_0x2a06b1(null,_0x108460);}}});};
\ No newline at end of file
index ca87796..86a2643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x738b=['options','raw','where','attributes','limit','UpdateFaxInteraction','debug','stringify','catch','AddTagsToFaxInteraction','addTags','body','ids','AddTags','lodash','moment','randomstring','ioredis','../../config/utils','rpc','client','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','FaxInteraction,\x20%s,\x20%s','update'];(function(_0x2d07d6,_0x1db42d){var _0x3c3690=function(_0x53844c){while(--_0x53844c){_0x2d07d6['push'](_0x2d07d6['shift']());}};_0x3c3690(++_0x1db42d);}(_0x738b,0xbd));var _0xb738=function(_0x32ef2a,_0x11d483){_0x32ef2a=_0x32ef2a-0x0;var _0x7e3556=_0x738b[_0x32ef2a];return _0x7e3556;};'use strict';var _=require(_0xb738('0x0'));var util=require('util');var moment=require(_0xb738('0x1'));var BPromise=require('bluebird');var rs=require(_0xb738('0x2'));var fs=require('fs');var Redis=require(_0xb738('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb738('0x4'));var logger=require('../../config/logger')(_0xb738('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb738('0x6')]['http']({'port':0x232a});config[_0xb738('0x7')]=_['defaults'](config[_0xb738('0x7')],{'host':_0xb738('0x8'),'port':0x18eb});var socket=require(_0xb738('0x9'))(new Redis(config[_0xb738('0x7')]));require('./faxInteraction.socket')[_0xb738('0xa')](socket);function respondWithRpcPromise(_0x43d800,_0x447dc1,_0x3a7d72){return new BPromise(function(_0x552f60,_0x2820a2){return client[_0xb738('0xb')](_0x43d800,_0x3a7d72)[_0xb738('0xc')](function(_0x3d406a){logger[_0xb738('0xd')]('FaxInteraction,\x20%s,\x20%s',_0x447dc1,_0xb738('0xe'));logger['debug'](_0xb738('0xf'),_0x447dc1,_0xb738('0xe'),JSON['stringify'](_0x3d406a));if(_0x3d406a[_0xb738('0x10')]){if(_0x3d406a[_0xb738('0x10')][_0xb738('0x11')]===0x1f4){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x447dc1,_0x3d406a[_0xb738('0x10')]['message']);return _0x2820a2(_0x3d406a[_0xb738('0x10')][_0xb738('0x12')]);}logger[_0xb738('0x10')](_0xb738('0x13'),_0x447dc1,_0x3d406a[_0xb738('0x10')][_0xb738('0x12')]);return _0x552f60(_0x3d406a[_0xb738('0x10')][_0xb738('0x12')]);}else{logger[_0xb738('0xd')](_0xb738('0x13'),_0x447dc1,'request\x20sent');_0x552f60(_0x3d406a['result']['message']);}})['catch'](function(_0x1450d4){logger[_0xb738('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x447dc1,_0x1450d4);_0x2820a2(_0x1450d4);});});}exports['UpdateFaxInteraction']=function(_0x20a9c0){var _0x4922e2=this;return new Promise(function(_0x409957,_0x45ccb3){return db['FaxInteraction'][_0xb738('0x14')](_0x20a9c0['body'],{'raw':_0x20a9c0[_0xb738('0x15')]?_0x20a9c0[_0xb738('0x15')][_0xb738('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20a9c0['options']?_0x20a9c0[_0xb738('0x15')][_0xb738('0x17')]||null:null,'attributes':_0x20a9c0[_0xb738('0x15')]?_0x20a9c0[_0xb738('0x15')][_0xb738('0x18')]||null:null,'limit':_0x20a9c0[_0xb738('0x15')]?_0x20a9c0[_0xb738('0x15')][_0xb738('0x19')]||null:null})[_0xb738('0xc')](function(_0x4f506a){logger[_0xb738('0xd')](_0xb738('0x1a'),_0x20a9c0);logger[_0xb738('0x1b')]('UpdateFaxInteraction',_0x20a9c0,JSON[_0xb738('0x1c')](_0x4f506a));_0x409957(_0x4f506a);})[_0xb738('0x1d')](function(_0x5e4d96){logger[_0xb738('0x10')]('UpdateFaxInteraction',_0x5e4d96[_0xb738('0x12')],_0x20a9c0);_0x45ccb3(_0x4922e2['error'](0x1f4,_0x5e4d96[_0xb738('0x12')]));});});};exports[_0xb738('0x1e')]=function(_0x185a71){return new Promise(function(_0x2b999e,_0x589c12){return db['FaxInteraction']['find']({'where':_0x185a71[_0xb738('0x15')]?_0x185a71[_0xb738('0x15')][_0xb738('0x17')]||null:null})[_0xb738('0xc')](function(_0x9c6458){if(_0x9c6458){return _0x9c6458[_0xb738('0x1f')](_0x185a71[_0xb738('0x20')][_0xb738('0x21')],_['omit'](_0x185a71[_0xb738('0x20')],[_0xb738('0x21'),'id'])||{});}})['spread'](function(_0x762697){logger[_0xb738('0xd')](_0xb738('0x22'),_0x185a71);logger[_0xb738('0x1b')](_0xb738('0x22'),_0x185a71,JSON[_0xb738('0x1c')](_0x762697));_0x2b999e(_0x762697);})[_0xb738('0x1d')](function(_0x3e03c6){logger['error'](_0xb738('0x22'),_0x3e03c6['message'],_0x185a71);_0x589c12(_this[_0xb738('0x10')](0x1f4,_0x3e03c6[_0xb738('0x12')]));});});};
\ No newline at end of file
+var _0xc322=['limit','then','AddTagsToFaxInteraction','find','where','ids','omit','body','spread','AddTags','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','info','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxInteraction,\x20%s,\x20%s','message','result','catch','UpdateFaxInteraction','FaxInteraction','options','raw','attributes'];(function(_0x8a7e38,_0x473a5d){var _0x228609=function(_0x5dcb5c){while(--_0x5dcb5c){_0x8a7e38['push'](_0x8a7e38['shift']());}};_0x228609(++_0x473a5d);}(_0xc322,0xb6));var _0x2c32=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xc322[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x2c32('0x0'));var util=require(_0x2c32('0x1'));var moment=require(_0x2c32('0x2'));var BPromise=require(_0x2c32('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c32('0x4'))['db'];var utils=require(_0x2c32('0x5'));var logger=require(_0x2c32('0x6'))(_0x2c32('0x7'));var config=require(_0x2c32('0x8'));var jayson=require(_0x2c32('0x9'));var client=jayson['client'][_0x2c32('0xa')]({'port':0x232a});config[_0x2c32('0xb')]=_[_0x2c32('0xc')](config[_0x2c32('0xb')],{'host':_0x2c32('0xd'),'port':0x18eb});var socket=require(_0x2c32('0xe'))(new Redis(config[_0x2c32('0xb')]));require('./faxInteraction.socket')[_0x2c32('0xf')](socket);function respondWithRpcPromise(_0x4b617f,_0x2e7a17,_0xdd4a4e){return new BPromise(function(_0x5504a3,_0x95f96b){return client[_0x2c32('0x10')](_0x4b617f,_0xdd4a4e)['then'](function(_0x10c3dd){logger[_0x2c32('0x11')]('FaxInteraction,\x20%s,\x20%s',_0x2e7a17,_0x2c32('0x12'));logger[_0x2c32('0x13')](_0x2c32('0x14'),_0x2e7a17,_0x2c32('0x12'),JSON[_0x2c32('0x15')](_0x10c3dd));if(_0x10c3dd['error']){if(_0x10c3dd[_0x2c32('0x16')][_0x2c32('0x17')]===0x1f4){logger[_0x2c32('0x16')](_0x2c32('0x18'),_0x2e7a17,_0x10c3dd['error'][_0x2c32('0x19')]);return _0x95f96b(_0x10c3dd[_0x2c32('0x16')]['message']);}logger[_0x2c32('0x16')](_0x2c32('0x18'),_0x2e7a17,_0x10c3dd[_0x2c32('0x16')]['message']);return _0x5504a3(_0x10c3dd['error'][_0x2c32('0x19')]);}else{logger[_0x2c32('0x11')](_0x2c32('0x18'),_0x2e7a17,_0x2c32('0x12'));_0x5504a3(_0x10c3dd[_0x2c32('0x1a')][_0x2c32('0x19')]);}})[_0x2c32('0x1b')](function(_0x2820d7){logger[_0x2c32('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x2e7a17,_0x2820d7);_0x95f96b(_0x2820d7);});});}exports[_0x2c32('0x1c')]=function(_0x2d9ad4){var _0x22098e=this;return new Promise(function(_0x18100e,_0x99f524){return db[_0x2c32('0x1d')]['update'](_0x2d9ad4['body'],{'raw':_0x2d9ad4[_0x2c32('0x1e')]?_0x2d9ad4[_0x2c32('0x1e')][_0x2c32('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d9ad4[_0x2c32('0x1e')]?_0x2d9ad4['options']['where']||null:null,'attributes':_0x2d9ad4[_0x2c32('0x1e')]?_0x2d9ad4['options'][_0x2c32('0x20')]||null:null,'limit':_0x2d9ad4[_0x2c32('0x1e')]?_0x2d9ad4[_0x2c32('0x1e')][_0x2c32('0x21')]||null:null})[_0x2c32('0x22')](function(_0x321113){logger[_0x2c32('0x11')](_0x2c32('0x1c'),_0x2d9ad4);logger[_0x2c32('0x13')]('UpdateFaxInteraction',_0x2d9ad4,JSON['stringify'](_0x321113));_0x18100e(_0x321113);})[_0x2c32('0x1b')](function(_0x5d8658){logger[_0x2c32('0x16')](_0x2c32('0x1c'),_0x5d8658[_0x2c32('0x19')],_0x2d9ad4);_0x99f524(_0x22098e['error'](0x1f4,_0x5d8658[_0x2c32('0x19')]));});});};exports[_0x2c32('0x23')]=function(_0x218183){return new Promise(function(_0xc8e2d3,_0x43e737){return db[_0x2c32('0x1d')][_0x2c32('0x24')]({'where':_0x218183[_0x2c32('0x1e')]?_0x218183['options'][_0x2c32('0x25')]||null:null})[_0x2c32('0x22')](function(_0x44a16c){if(_0x44a16c){return _0x44a16c['addTags'](_0x218183['body'][_0x2c32('0x26')],_[_0x2c32('0x27')](_0x218183[_0x2c32('0x28')],[_0x2c32('0x26'),'id'])||{});}})[_0x2c32('0x29')](function(_0x60bf76){logger[_0x2c32('0x11')]('AddTags',_0x218183);logger[_0x2c32('0x13')]('AddTags',_0x218183,JSON[_0x2c32('0x15')](_0x60bf76));_0xc8e2d3(_0x60bf76);})[_0x2c32('0x1b')](function(_0x333068){logger['error'](_0x2c32('0x2a'),_0x333068[_0x2c32('0x19')],_0x218183);_0x43e737(_this[_0x2c32('0x16')](0x1f4,_0x333068['message']));});});};
\ No newline at end of file
index c6dafda..994eeaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57d=['emit','removeListener','faxInteraction:','./faxInteraction.events','save','remove'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xb57d,0x1ad));var _0xdb57=function(_0x47db29,_0x29b5c5){_0x47db29=_0x47db29-0x0;var _0x20d2eb=_0xb57d[_0x47db29];return _0x20d2eb;};'use strict';var FaxInteractionEvents=require(_0xdb57('0x0'));var events=[_0xdb57('0x1'),_0xdb57('0x2'),'update'];function createListener(_0x480f15,_0xa5af7f){return function(_0x5ad233){_0xa5af7f[_0xdb57('0x3')](_0x480f15,_0x5ad233);};}function removeListener(_0x2649cf,_0x481b06){return function(){FaxInteractionEvents[_0xdb57('0x4')](_0x2649cf,_0x481b06);};}exports['register']=function(_0x20030f){for(var _0x11a4fd=0x0,_0x28fd80=events['length'];_0x11a4fd<_0x28fd80;_0x11a4fd++){var _0x42f1b4=events[_0x11a4fd];var _0x53242c=createListener(_0xdb57('0x5')+_0x42f1b4,_0x20030f);FaxInteractionEvents['on'](_0x42f1b4,_0x53242c);}};
\ No newline at end of file
+var _0x55d5=['update','emit','removeListener','length','faxInteraction:','./faxInteraction.events','remove'];(function(_0x165360,_0x5ca20b){var _0x5acc59=function(_0x4f9d07){while(--_0x4f9d07){_0x165360['push'](_0x165360['shift']());}};_0x5acc59(++_0x5ca20b);}(_0x55d5,0xe5));var _0x555d=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x55d5[_0x46698a];return _0x356db0;};'use strict';var FaxInteractionEvents=require(_0x555d('0x0'));var events=['save',_0x555d('0x1'),_0x555d('0x2')];function createListener(_0x2ee6fc,_0x12b149){return function(_0x357b5a){_0x12b149[_0x555d('0x3')](_0x2ee6fc,_0x357b5a);};}function removeListener(_0x98f4ac,_0x32f428){return function(){FaxInteractionEvents[_0x555d('0x4')](_0x98f4ac,_0x32f428);};}exports['register']=function(_0x508477){for(var _0x3a2e21=0x0,_0xbd9a86=events[_0x555d('0x5')];_0x3a2e21<_0xbd9a86;_0x3a2e21++){var _0x337be4=events[_0x3a2e21];var _0x4b4f66=createListener(_0x555d('0x6')+_0x337be4,_0x508477);FaxInteractionEvents['on'](_0x337be4,_0x4b4f66);}};
\ No newline at end of file
index 4c3a991..5a19372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14d8=['get','isAuthenticated','index','/describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','delete','faxinteraction:destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller'];(function(_0x167fdc,_0x62d852){var _0x34f1e0=function(_0x22dbab){while(--_0x22dbab){_0x167fdc['push'](_0x167fdc['shift']());}};_0x34f1e0(++_0x62d852);}(_0x14d8,0x9f));var _0x814d=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x14d8[_0x126558];return _0x1f6d14;};'use strict';var multer=require(_0x814d('0x0'));var util=require(_0x814d('0x1'));var path=require(_0x814d('0x2'));var timeout=require(_0x814d('0x3'));var express=require(_0x814d('0x4'));var router=express[_0x814d('0x5')]();var fs_extra=require(_0x814d('0x6'));var auth=require(_0x814d('0x7'));var interaction=require(_0x814d('0x8'));var config=require(_0x814d('0x9'));var controller=require(_0x814d('0xa'));router[_0x814d('0xb')]('/',auth[_0x814d('0xc')](),controller[_0x814d('0xd')]);router[_0x814d('0xb')](_0x814d('0xe'),auth['isAuthenticated'](),controller['describe']);router[_0x814d('0xb')](_0x814d('0xf'),auth[_0x814d('0xc')](),controller['show']);router[_0x814d('0xb')](_0x814d('0x10'),auth['isAuthenticated'](),controller[_0x814d('0x11')]);router[_0x814d('0xb')](_0x814d('0x12'),auth['isAuthenticated'](),controller[_0x814d('0x13')]);router[_0x814d('0x14')]('/',auth[_0x814d('0xc')](),controller[_0x814d('0x15')]);router[_0x814d('0x14')](_0x814d('0x10'),auth[_0x814d('0xc')](),controller[_0x814d('0x16')]);router['post'](_0x814d('0x17'),auth[_0x814d('0xc')](),interaction[_0x814d('0x18')](_0x814d('0x19'),_0x814d('0x1a')),controller[_0x814d('0x1b')]);router[_0x814d('0x1c')](_0x814d('0xf'),auth[_0x814d('0xc')](),interaction[_0x814d('0x18')](_0x814d('0x19'),_0x814d('0x1d')),controller['update']);router[_0x814d('0x1e')]('/:id',auth[_0x814d('0xc')](),interaction[_0x814d('0x18')]('fax',_0x814d('0x1f')),controller['destroy']);router['delete']('/:id/tags',auth[_0x814d('0xc')](),controller[_0x814d('0x20')]);module[_0x814d('0x21')]=router;
\ No newline at end of file
+var _0x5b14=['faxinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','addTags','put','fax','faxinteraction:update','update','delete'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5b14,0x1d2));var _0x45b1=function(_0x59b439,_0x14ae7b){_0x59b439=_0x59b439-0x0;var _0x521ea3=_0x5b14[_0x59b439];return _0x521ea3;};'use strict';var multer=require(_0x45b1('0x0'));var util=require(_0x45b1('0x1'));var path=require(_0x45b1('0x2'));var timeout=require(_0x45b1('0x3'));var express=require(_0x45b1('0x4'));var router=express['Router']();var fs_extra=require(_0x45b1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x45b1('0x6'));var config=require(_0x45b1('0x7'));var controller=require('./faxInteraction.controller');router[_0x45b1('0x8')]('/',auth[_0x45b1('0x9')](),controller[_0x45b1('0xa')]);router['get'](_0x45b1('0xb'),auth[_0x45b1('0x9')](),controller[_0x45b1('0xc')]);router['get'](_0x45b1('0xd'),auth['isAuthenticated'](),controller[_0x45b1('0xe')]);router[_0x45b1('0x8')](_0x45b1('0xf'),auth[_0x45b1('0x9')](),controller['getMessages']);router[_0x45b1('0x8')](_0x45b1('0x10'),auth['isAuthenticated'](),controller[_0x45b1('0x11')]);router['post']('/',auth[_0x45b1('0x9')](),controller[_0x45b1('0x12')]);router[_0x45b1('0x13')]('/:id/messages',auth[_0x45b1('0x9')](),controller[_0x45b1('0x14')]);router[_0x45b1('0x13')](_0x45b1('0x15'),auth[_0x45b1('0x9')](),interaction[_0x45b1('0x16')]('fax','faxinteraction:addtags'),controller[_0x45b1('0x17')]);router[_0x45b1('0x18')](_0x45b1('0xd'),auth[_0x45b1('0x9')](),interaction['tracked'](_0x45b1('0x19'),_0x45b1('0x1a')),controller[_0x45b1('0x1b')]);router[_0x45b1('0x1c')](_0x45b1('0xd'),auth[_0x45b1('0x9')](),interaction[_0x45b1('0x16')]('fax',_0x45b1('0x1d')),controller[_0x45b1('0x1e')]);router['delete'](_0x45b1('0x15'),auth[_0x45b1('0x9')](),controller[_0x45b1('0x1f')]);module[_0x45b1('0x20')]=router;
\ No newline at end of file
index 9c7c8b9..b5949c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['medium','BOOLEAN','out','DATE','sequelize','exports'];(function(_0x4095db,_0x287ac6){var _0xc97464=function(_0x2b33c2){while(--_0x2b33c2){_0x4095db['push'](_0x4095db['shift']());}};_0xc97464(++_0x287ac6);}(_0x2d17,0x17e));var _0x72d1=function(_0xb291a4,_0x47cd38){_0xb291a4=_0xb291a4-0x0;var _0x18b128=_0x2d17[_0xb291a4];return _0x18b128;};'use strict';var Sequelize=require(_0x72d1('0x0'));module[_0x72d1('0x1')]={'body':{'type':Sequelize['TEXT'](_0x72d1('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x72d1('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x72d1('0x4')),'defaultValue':_0x72d1('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x72d1('0x5')]}};
\ No newline at end of file
+var _0x19da=['out','TEXT','DATE','exports','medium','ENUM'];(function(_0x541515,_0x2b33b3){var _0x16fe3f=function(_0x1df658){while(--_0x1df658){_0x541515['push'](_0x541515['shift']());}};_0x16fe3f(++_0x2b33b3);}(_0x19da,0x9f));var _0xa19d=function(_0x3987a1,_0x447793){_0x3987a1=_0x3987a1-0x0;var _0xe2596e=_0x19da[_0x3987a1];return _0xe2596e;};'use strict';var Sequelize=require('sequelize');module[_0xa19d('0x0')]={'body':{'type':Sequelize['TEXT'](_0xa19d('0x1')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xa19d('0x2')]('in',_0xa19d('0x3')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0xa19d('0x4')],'defaultValue':null},'readAt':{'type':Sequelize[_0xa19d('0x5')]}};
\ No newline at end of file
index 088cc38..3ae1ae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd356=['include','findAll','rows','find','body','describe','fax-interactions','fax','read','readAt','format','UserId','user','params','get','FaxInteraction','FaxInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','ContactId','User','agent','manual','interface','channel','motionChannel','event','accept','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','SELECT','email','internal','SIP/%s','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','download','join','root','server','files','attachments','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','index','map','FaxMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll'];(function(_0x484830,_0x3006bb){var _0xfc191f=function(_0x439d5c){while(--_0x439d5c){_0x484830['push'](_0x484830['shift']());}};_0xfc191f(++_0x3006bb);}(_0xd356,0xc7));var _0x6d35=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd356[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6d35('0x0'));var rimraf=require(_0x6d35('0x1'));var zipdir=require(_0x6d35('0x2'));var jsonpatch=require(_0x6d35('0x3'));var rp=require(_0x6d35('0x4'));var moment=require(_0x6d35('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6d35('0x6'));var util=require(_0x6d35('0x7'));var path=require(_0x6d35('0x8'));var sox=require(_0x6d35('0x9'));var csv=require(_0x6d35('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d35('0xb'));var _=require(_0x6d35('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6d35('0xa'));var querystring=require(_0x6d35('0xd'));var Papa=require('papaparse');var Redis=require(_0x6d35('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6d35('0xf'));var as=require(_0x6d35('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6d35('0x11'));var utils=require(_0x6d35('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x6d35('0x13'));var db=require(_0x6d35('0x14'))['db'];config[_0x6d35('0x15')]=_[_0x6d35('0x16')](config['redis'],{'host':_0x6d35('0x17'),'port':0x18eb});var socket=require(_0x6d35('0x18'))(new Redis(config[_0x6d35('0x15')]));require(_0x6d35('0x19'))[_0x6d35('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x6d35('0x1b')][_0x6d35('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xab928f,_0x50f85e,_0x2c077b,_0x2b0f2d){return new BPromise(function(_0x14eb5,_0x5a9ab9){var _0x3c88a4=_0x2b0f2d||client;return _0x3c88a4[_0x6d35('0x1d')](_0xab928f,_0x2c077b)[_0x6d35('0x1e')](function(_0x5c99f8){logger[_0x6d35('0x1f')](_0x6d35('0x20'),_0x50f85e,_0x6d35('0x21'));logger['debug'](_0x6d35('0x22'),_0x50f85e,'request\x20sent',JSON['stringify'](_0x5c99f8));if(_0x5c99f8[_0x6d35('0x23')]){if(_0x5c99f8['error'][_0x6d35('0x24')]===0x1f4){logger[_0x6d35('0x23')]('FaxMessage,\x20%s,\x20%s',_0x50f85e,_0x5c99f8['error']['message']);return _0x5a9ab9(_0x5c99f8[_0x6d35('0x23')][_0x6d35('0x25')]);}logger[_0x6d35('0x23')](_0x6d35('0x20'),_0x50f85e,_0x5c99f8[_0x6d35('0x23')][_0x6d35('0x25')]);return _0x14eb5(_0x5c99f8['error'][_0x6d35('0x25')]);}else{logger[_0x6d35('0x1f')](_0x6d35('0x20'),_0x50f85e,_0x6d35('0x21'));_0x14eb5(_0x5c99f8[_0x6d35('0x26')][_0x6d35('0x25')]);}})[_0x6d35('0x27')](function(_0x376a81){logger[_0x6d35('0x23')](_0x6d35('0x20'),_0x50f85e,_0x376a81);_0x5a9ab9(_0x376a81);});});}function respondWithStatusCode(_0x21f682,_0x48cac0){_0x48cac0=_0x48cac0||0xcc;return function(_0x29924a){if(_0x29924a){return _0x21f682[_0x6d35('0x28')](_0x48cac0);}return _0x21f682[_0x6d35('0x29')](_0x48cac0)[_0x6d35('0x2a')]();};}function respondWithResult(_0x1917ec,_0x445b51){_0x445b51=_0x445b51||0xc8;return function(_0x4abda4){if(_0x4abda4){return _0x1917ec['status'](_0x445b51)['json'](_0x4abda4);}};}function respondWithFilteredResult(_0x2d07a1,_0x35186a){return function(_0x1e83b0){if(_0x1e83b0){var _0x4f6309=typeof _0x35186a[_0x6d35('0x2b')]===_0x6d35('0x2c')&&typeof _0x35186a[_0x6d35('0x2d')]===_0x6d35('0x2c');var _0x3a84ea=_0x1e83b0[_0x6d35('0x2e')];var _0xa5164c=_0x4f6309?0x0:_0x35186a[_0x6d35('0x2b')];var _0x38f8d3=_0x4f6309?_0x1e83b0[_0x6d35('0x2e')]:_0x35186a[_0x6d35('0x2b')]+_0x35186a[_0x6d35('0x2d')];var _0x54fbdf;if(_0x38f8d3>=_0x3a84ea){_0x38f8d3=_0x3a84ea;_0x54fbdf=0xc8;}else{_0x54fbdf=0xce;}_0x2d07a1[_0x6d35('0x29')](_0x54fbdf);return _0x2d07a1[_0x6d35('0x2f')](_0x6d35('0x30'),_0xa5164c+'-'+_0x38f8d3+'/'+_0x3a84ea)[_0x6d35('0x31')](_0x1e83b0);}return null;};}function patchUpdates(_0x20e417){return function(_0xadd0e){try{jsonpatch[_0x6d35('0x32')](_0xadd0e,_0x20e417,!![]);}catch(_0x4a7436){return BPromise[_0x6d35('0x33')](_0x4a7436);}return _0xadd0e[_0x6d35('0x34')]();};}function saveUpdates(_0x5f30dc,_0x404146){return function(_0x1bb2ae){if(_0x1bb2ae){return _0x1bb2ae[_0x6d35('0x35')](_0x5f30dc)[_0x6d35('0x1e')](function(_0xf0a9c4){return _0xf0a9c4;});}return null;};}function removeEntity(_0x147999,_0x5b6624){return function(_0x4afda5){if(_0x4afda5){return _0x4afda5[_0x6d35('0x36')]()['then'](function(){_0x147999[_0x6d35('0x29')](0xcc)[_0x6d35('0x2a')]();});}};}function handleEntityNotFound(_0x5eef63,_0x278326){return function(_0x3e71af){if(!_0x3e71af){_0x5eef63[_0x6d35('0x28')](0x194);}return _0x3e71af;};}function handleError(_0x3c2508,_0x3ba11b){_0x3ba11b=_0x3ba11b||0x1f4;return function(_0x396eb8){logger[_0x6d35('0x23')](_0x396eb8[_0x6d35('0x37')]);if(_0x396eb8[_0x6d35('0x38')]){delete _0x396eb8[_0x6d35('0x38')];}_0x3c2508[_0x6d35('0x29')](_0x3ba11b)['send'](_0x396eb8);};}exports[_0x6d35('0x39')]=function(_0x4fc58e,_0x13a827){var _0x422775={},_0x2cdbc1={},_0x1bf2b0={'count':0x0,'rows':[]};var _0x4e1209=_[_0x6d35('0x3a')](db[_0x6d35('0x3b')]['rawAttributes'],function(_0x479611){return{'name':_0x479611[_0x6d35('0x3c')],'type':_0x479611[_0x6d35('0x3d')][_0x6d35('0x3e')]};});_0x2cdbc1[_0x6d35('0x3f')]=_[_0x6d35('0x3a')](_0x4e1209,_0x6d35('0x38'));_0x2cdbc1[_0x6d35('0x40')]=_[_0x6d35('0x41')](_0x4fc58e['query']);_0x2cdbc1[_0x6d35('0x42')]=_[_0x6d35('0x43')](_0x2cdbc1[_0x6d35('0x3f')],_0x2cdbc1[_0x6d35('0x40')]);_0x422775[_0x6d35('0x44')]=_[_0x6d35('0x43')](_0x2cdbc1['model'],qs[_0x6d35('0x45')](_0x4fc58e[_0x6d35('0x40')]['fields']));_0x422775[_0x6d35('0x44')]=_0x422775[_0x6d35('0x44')][_0x6d35('0x46')]?_0x422775['attributes']:_0x2cdbc1[_0x6d35('0x3f')];if(!_0x4fc58e[_0x6d35('0x40')][_0x6d35('0x47')]('nolimit')){_0x422775['limit']=qs[_0x6d35('0x2d')](_0x4fc58e['query'][_0x6d35('0x2d')]);_0x422775['offset']=qs[_0x6d35('0x2b')](_0x4fc58e[_0x6d35('0x40')][_0x6d35('0x2b')]);}_0x422775['order']=qs[_0x6d35('0x48')](_0x4fc58e[_0x6d35('0x40')][_0x6d35('0x48')]);_0x422775[_0x6d35('0x49')]=qs[_0x6d35('0x42')](_[_0x6d35('0x4a')](_0x4fc58e[_0x6d35('0x40')],_0x2cdbc1[_0x6d35('0x42')]),_0x4e1209);if(_0x4fc58e[_0x6d35('0x40')][_0x6d35('0x4b')]){_0x422775[_0x6d35('0x49')]=_[_0x6d35('0x4c')](_0x422775[_0x6d35('0x49')],{'$or':_[_0x6d35('0x3a')](_0x4e1209,function(_0x210341){if(_0x210341[_0x6d35('0x3d')]!=='VIRTUAL'){var _0x127d1f={};_0x127d1f[_0x210341[_0x6d35('0x38')]]={'$like':'%'+_0x4fc58e['query']['filter']+'%'};return _0x127d1f;}})});}_0x422775=_[_0x6d35('0x4c')]({},_0x422775,_0x4fc58e[_0x6d35('0x4d')]);var _0x182d07={'where':_0x422775[_0x6d35('0x49')]};return db[_0x6d35('0x3b')][_0x6d35('0x2e')](_0x182d07)[_0x6d35('0x1e')](function(_0x2f482a){_0x1bf2b0[_0x6d35('0x2e')]=_0x2f482a;if(_0x4fc58e[_0x6d35('0x40')][_0x6d35('0x4e')]){_0x422775[_0x6d35('0x4f')]=[{'all':!![]}];}return db[_0x6d35('0x3b')][_0x6d35('0x50')](_0x422775);})[_0x6d35('0x1e')](function(_0x44c407){_0x1bf2b0[_0x6d35('0x51')]=_0x44c407;return _0x1bf2b0;})['then'](respondWithFilteredResult(_0x13a827,_0x422775))['catch'](handleError(_0x13a827,null));};exports['show']=function(_0x18a247,_0x5f3e7d){var _0x1a5610={'raw':!![],'where':{'id':_0x18a247['params']['id']}},_0x5d73d7={};_0x5d73d7[_0x6d35('0x3f')]=_['keys'](db[_0x6d35('0x3b')]['rawAttributes']);_0x5d73d7['query']=_[_0x6d35('0x41')](_0x18a247[_0x6d35('0x40')]);_0x5d73d7[_0x6d35('0x42')]=_[_0x6d35('0x43')](_0x5d73d7[_0x6d35('0x3f')],_0x5d73d7[_0x6d35('0x40')]);_0x1a5610[_0x6d35('0x44')]=_[_0x6d35('0x43')](_0x5d73d7[_0x6d35('0x3f')],qs[_0x6d35('0x45')](_0x18a247[_0x6d35('0x40')][_0x6d35('0x45')]));_0x1a5610['attributes']=_0x1a5610[_0x6d35('0x44')][_0x6d35('0x46')]?_0x1a5610[_0x6d35('0x44')]:_0x5d73d7[_0x6d35('0x3f')];if(_0x18a247[_0x6d35('0x40')][_0x6d35('0x4e')]){_0x1a5610[_0x6d35('0x4f')]=[{'all':!![]}];}_0x1a5610=_[_0x6d35('0x4c')]({},_0x1a5610,_0x18a247[_0x6d35('0x4d')]);return db[_0x6d35('0x3b')][_0x6d35('0x52')](_0x1a5610)[_0x6d35('0x1e')](handleEntityNotFound(_0x5f3e7d,null))[_0x6d35('0x1e')](respondWithResult(_0x5f3e7d,null))[_0x6d35('0x27')](handleError(_0x5f3e7d,null));};exports[_0x6d35('0x35')]=function(_0x395c59,_0x4cb612){if(_0x395c59[_0x6d35('0x53')]['id']){delete _0x395c59[_0x6d35('0x53')]['id'];}return db['FaxMessage'][_0x6d35('0x52')]({'where':{'id':_0x395c59['params']['id']}})[_0x6d35('0x1e')](handleEntityNotFound(_0x4cb612,null))[_0x6d35('0x1e')](saveUpdates(_0x395c59['body'],null))[_0x6d35('0x1e')](respondWithResult(_0x4cb612,null))[_0x6d35('0x27')](handleError(_0x4cb612,null));};exports[_0x6d35('0x36')]=function(_0x31c5e8,_0x4e5a2c){return db[_0x6d35('0x3b')]['find']({'where':{'id':_0x31c5e8['params']['id']}})['then'](handleEntityNotFound(_0x4e5a2c,null))[_0x6d35('0x1e')](removeEntity(_0x4e5a2c,null))[_0x6d35('0x27')](handleError(_0x4e5a2c,null));};exports[_0x6d35('0x54')]=function(_0x550cde,_0x74dbea){return db[_0x6d35('0x3b')][_0x6d35('0x54')]()[_0x6d35('0x1e')](respondWithResult(_0x74dbea,null))[_0x6d35('0x27')](handleError(_0x74dbea,null));};var interaction_log=require('../../config/logger')(_0x6d35('0x55'));exports['accept']=function(_0x4b8fbf,_0x5c2dda,_0x47d7b4){var _0x312f40={'agent':{},'channel':_0x6d35('0x56')};if(_0x4b8fbf['body']['id']){delete _0x4b8fbf['body']['id'];}_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x57')]=!![];_0x4b8fbf['body'][_0x6d35('0x58')]=moment()[_0x6d35('0x59')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x5a')]=_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x5a')]||_0x4b8fbf[_0x6d35('0x5b')]['id'];_0x312f40['agent']['id']=_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x5a')];return db[_0x6d35('0x3b')][_0x6d35('0x52')]({'where':{'id':_0x4b8fbf[_0x6d35('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5c2dda,null))['then'](saveUpdates(_0x4b8fbf['body'],null))[_0x6d35('0x1e')](function(_0x33349c){if(_0x33349c){_0x312f40[_0x6d35('0x25')]=_0x33349c[_0x6d35('0x5d')]({'plain':!![]});return db[_0x6d35('0x5e')][_0x6d35('0x52')]({'where':{'id':_0x33349c[_0x6d35('0x5f')]}});}return null;})[_0x6d35('0x1e')](handleEntityNotFound(_0x5c2dda,null))[_0x6d35('0x1e')](function(_0x79974b){if(_0x79974b){return _0x79974b['update']({'UserId':_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x5a')],'read1stAt':_[_0x6d35('0x60')](_0x79974b['read1stAt'])?moment()[_0x6d35('0x59')](_0x6d35('0x61')):undefined});}return null;})[_0x6d35('0x1e')](function(_0x2c5f81){if(_0x2c5f81){_0x312f40[_0x6d35('0x62')]=_0x2c5f81[_0x6d35('0x5d')]({'plain':!![]});interaction_log[_0x6d35('0x1f')](_0x6d35('0x63'),_0x4b8fbf[_0x6d35('0x5b')]['id'],_0x4b8fbf['user'][_0x6d35('0x38')],_0x4b8fbf[_0x6d35('0x5b')][_0x6d35('0x64')],_0x312f40['interaction']['id'],_0x4b8fbf[_0x6d35('0x53')]?JSON['stringify'](_0x4b8fbf[_0x6d35('0x53')]):_0x6d35('0x65'));return respondWithRpcPromise(_0x6d35('0x66'),_0x6d35('0x67'),_0x312f40);}return null;})[_0x6d35('0x1e')](function(_0x92baa3){var _0x1024ef='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x92baa3[_0x6d35('0x25')][_0x6d35('0x68')];return db['sequelize'][_0x6d35('0x40')](_0x1024ef,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x6d35('0x1e')](function(_0x57cd84){return _0x57cd84;});})[_0x6d35('0x1e')](function(_0x2db243){if(_0x2db243){_0x312f40['message']['contact']=_0x2db243[0x0];if(!_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x5a')])return;return db[_0x6d35('0x69')][_0x6d35('0x52')]({'where':{'id':_0x4b8fbf[_0x6d35('0x53')][_0x6d35('0x5a')],'role':_0x6d35('0x6a')},'attributes':['id','name','fullname','email','internal'],'raw':!![]});}return null;})[_0x6d35('0x1e')](function(_0x46adf8){if(!_0x46adf8)return null;_0x312f40[_0x6d35('0x25')][_0x6d35('0x6a')]=_0x46adf8;return _0x312f40;})['then'](function(_0x51bb04){if(_0x51bb04){if(_0x4b8fbf['body'][_0x6d35('0x6b')]){_0x312f40['message'][_0x6d35('0x6c')]=util[_0x6d35('0x59')]('SIP/%s',_0x4b8fbf[_0x6d35('0x5b')][_0x6d35('0x38')]);_0x312f40[_0x6d35('0x25')][_0x6d35('0x6d')]=_0x312f40[_0x6d35('0x6d')];_0x312f40[_0x6d35('0x25')][_0x6d35('0x6e')]=_0x312f40['channel'];_0x312f40[_0x6d35('0x25')][_0x6d35('0x6f')]=_0x6d35('0x70');return respondWithRpcPromise('EventManager',_0x6d35('0x71'),{'event':'acceptmessage','message':_0x312f40[_0x6d35('0x25')]},client9002)[_0x6d35('0x1e')](function(){return _0x312f40;});}return _0x312f40;}return null;})[_0x6d35('0x1e')](respondWithResult(_0x5c2dda,null))['catch'](handleError(_0x5c2dda,null));};var interaction_log=require('../../config/logger')(_0x6d35('0x55'));exports['reject']=function(_0x3354f4,_0x4241d1,_0x4fa27e){var _0x5a584f={'agent':{},'channel':_0x6d35('0x56')};if(_0x3354f4[_0x6d35('0x53')]['id']){delete _0x3354f4['body']['id'];}_0x3354f4[_0x6d35('0x53')][_0x6d35('0x5a')]=_0x3354f4[_0x6d35('0x53')]['UserId']||_0x3354f4[_0x6d35('0x5b')]['id'];_0x5a584f[_0x6d35('0x6a')]['id']=_0x3354f4[_0x6d35('0x53')][_0x6d35('0x5a')];return db[_0x6d35('0x3b')][_0x6d35('0x52')]({'where':{'id':_0x3354f4[_0x6d35('0x5c')]['id'],'UserId':null}})[_0x6d35('0x1e')](handleEntityNotFound(_0x4241d1,null))[_0x6d35('0x1e')](function(_0x172ad4){if(_0x172ad4){_0x5a584f['message']=_0x172ad4[_0x6d35('0x5d')]({'plain':!![]});return db['FaxInteraction'][_0x6d35('0x52')]({'where':{'id':_0x172ad4['FaxInteractionId']}});}return null;})[_0x6d35('0x1e')](handleEntityNotFound(_0x4241d1,null))[_0x6d35('0x1e')](function(_0x501fa6){if(_0x501fa6){_0x5a584f[_0x6d35('0x62')]=_0x501fa6[_0x6d35('0x5d')]({'plain':!![]});interaction_log['info'](_0x6d35('0x72'),_0x3354f4[_0x6d35('0x5b')]['id'],_0x3354f4['user'][_0x6d35('0x38')],_0x3354f4['user'][_0x6d35('0x64')],_0x5a584f[_0x6d35('0x62')]['id'],_0x3354f4['body']?JSON['stringify'](_0x3354f4[_0x6d35('0x53')]):'null');return respondWithRpcPromise(_0x6d35('0x73'),_0x6d35('0x74'),_0x5a584f);}return null;})[_0x6d35('0x1e')](function(_0x2e1437){var _0x55474b=_0x6d35('0x75')+_0x2e1437[_0x6d35('0x25')][_0x6d35('0x68')];return db[_0x6d35('0x76')]['query'](_0x55474b,{'type':db['Sequelize'][_0x6d35('0x77')][_0x6d35('0x78')],'raw':!![]})[_0x6d35('0x1e')](function(_0x255a06){return _0x255a06;});})[_0x6d35('0x1e')](function(_0x3c9fa8){if(_0x3c9fa8){_0x5a584f[_0x6d35('0x25')]['contact']=_0x3c9fa8[0x0];if(!_0x3354f4[_0x6d35('0x53')]['UserId'])return;return db['User']['find']({'where':{'id':_0x3354f4['body'][_0x6d35('0x5a')],'role':_0x6d35('0x6a')},'attributes':['id',_0x6d35('0x38'),'fullname',_0x6d35('0x79'),_0x6d35('0x7a')],'raw':!![]});}return null;})[_0x6d35('0x1e')](function(_0x19ac6d){if(!_0x19ac6d)return null;_0x5a584f[_0x6d35('0x25')][_0x6d35('0x6a')]=_0x19ac6d;return _0x5a584f;})[_0x6d35('0x1e')](function(_0x4c3d95){if(_0x4c3d95){_0x4c3d95['message'][_0x6d35('0x6c')]=util['format'](_0x6d35('0x7b'),_0x3354f4['user'][_0x6d35('0x38')]);_0x4c3d95[_0x6d35('0x25')][_0x6d35('0x6d')]=_0x5a584f[_0x6d35('0x6d')];_0x4c3d95[_0x6d35('0x25')][_0x6d35('0x6e')]=_0x5a584f[_0x6d35('0x6d')];_0x4c3d95[_0x6d35('0x25')][_0x6d35('0x6f')]=_0x6d35('0x33');respondWithRpcPromise(_0x6d35('0x71'),_0x6d35('0x71'),{'event':'rejectmessage','message':_0x4c3d95['message']},client9002);return _0x5a584f;}return null;})[_0x6d35('0x1e')](respondWithResult(_0x4241d1,null))[_0x6d35('0x27')](handleError(_0x4241d1,null));};exports[_0x6d35('0x7c')]=function(_0xd73cbc,_0x384c9b){var _0x46210a;return db[_0x6d35('0x3b')][_0x6d35('0x7c')](_0xd73cbc['body'],{})[_0x6d35('0x1e')](function(_0x36f338){_0x46210a=_0x36f338;return db[_0x6d35('0x7d')][_0x6d35('0x7e')]({'where':{'id':_0x46210a[_0x6d35('0x68')]}});})['then'](function(_0x1a42ec){if(_[_0x6d35('0x60')](_0x1a42ec)){return;}else{_0x46210a[_0x6d35('0x56')]=_0x1a42ec[_0x6d35('0x56')];return db[_0x6d35('0x7f')][_0x6d35('0x7e')]({'where':{'id':_0x46210a[_0x6d35('0x80')]}});}})[_0x6d35('0x1e')](function(_0x482a51){return respondWithRpcPromise('SendFax',_0x6d35('0x81'),{'FaxAccountId':_[_0x6d35('0x60')](_0xd73cbc[_0x6d35('0x53')])?undefined:_0xd73cbc['body'][_0x6d35('0x82')],'path':_['isNil'](_0x482a51)?undefined:util[_0x6d35('0x59')](_0x6d35('0x83'),_0x482a51['basename']),'fax':_[_0x6d35('0x60')](_0x46210a[_0x6d35('0x56')])?undefined:_0x46210a[_0x6d35('0x56')],'AttachmentId':_0x46210a['AttachmentId']},client9002);})['then'](respondWithResult(_0x384c9b,0xc9))[_0x6d35('0x27')](handleError(_0x384c9b,null));};exports[_0x6d35('0x84')]=function(_0x4259a2,_0xf02b01){var _0xb8586e=path[_0x6d35('0x85')](config[_0x6d35('0x86')],_0x6d35('0x87'),_0x6d35('0x88'),_0x6d35('0x89'));return db[_0x6d35('0x3b')][_0x6d35('0x52')]({'where':{'id':_0x4259a2['params']['id']},'include':[{'model':db['Attachment'],'as':_0x6d35('0x7f')}]})[_0x6d35('0x1e')](handleEntityNotFound(_0xf02b01,null))[_0x6d35('0x1e')](function(_0x2213d1){if(_0x2213d1){return _0xf02b01[_0x6d35('0x84')](path[_0x6d35('0x85')](_0xb8586e,_0x2213d1[_0x6d35('0x7f')][_0x6d35('0x8a')]));}})['catch'](handleError(_0xf02b01,null));};
\ No newline at end of file
+var _0xc7d7=['update','destroy','stack','name','send','index','map','FaxMessage','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','filter','VIRTUAL','merge','where','includeAll','rows','params','rawAttributes','include','options','body','find','describe','accept','fax','read','readAt','format','UserId','user','agent','FaxInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','get','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','SIP/%s','channel','event','EventManager','fax-interactions','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','SELECT','interface','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','isNil','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','server','files','join','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','http','client','then','info','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','FaxMessage,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save'];(function(_0x5f3cb6,_0x2121e0){var _0x246006=function(_0x5638a7){while(--_0x5638a7){_0x5f3cb6['push'](_0x5f3cb6['shift']());}};_0x246006(++_0x2121e0);}(_0xc7d7,0xe4));var _0x7c7d=function(_0xf654db,_0xe86e84){_0xf654db=_0xf654db-0x0;var _0x1d70e7=_0xc7d7[_0xf654db];return _0x1d70e7;};'use strict';var emlformat=require(_0x7c7d('0x0'));var rimraf=require(_0x7c7d('0x1'));var zipdir=require(_0x7c7d('0x2'));var jsonpatch=require(_0x7c7d('0x3'));var rp=require('request-promise');var moment=require(_0x7c7d('0x4'));var BPromise=require(_0x7c7d('0x5'));var Mustache=require('mustache');var util=require(_0x7c7d('0x6'));var path=require(_0x7c7d('0x7'));var sox=require(_0x7c7d('0x8'));var csv=require(_0x7c7d('0x9'));var ejs=require(_0x7c7d('0xa'));var fs=require('fs');var fs_extra=require(_0x7c7d('0xb'));var _=require(_0x7c7d('0xc'));var squel=require('squel');var crypto=require(_0x7c7d('0xd'));var jsforce=require(_0x7c7d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7c7d('0x9'));var querystring=require(_0x7c7d('0xf'));var Papa=require(_0x7c7d('0x10'));var Redis=require(_0x7c7d('0x11'));var authService=require(_0x7c7d('0x12'));var qs=require(_0x7c7d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7c7d('0x14'));var logger=require(_0x7c7d('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x7c7d('0x16'));var licenseUtil=require(_0x7c7d('0x17'));var db=require(_0x7c7d('0x18'))['db'];config[_0x7c7d('0x19')]=_[_0x7c7d('0x1a')](config['redis'],{'host':_0x7c7d('0x1b'),'port':0x18eb});var socket=require(_0x7c7d('0x1c'))(new Redis(config[_0x7c7d('0x19')]));require(_0x7c7d('0x1d'))[_0x7c7d('0x1e')](socket);var jayson=require(_0x7c7d('0x1f'));var client=jayson['client'][_0x7c7d('0x20')]({'port':0x232c});var client9002=jayson[_0x7c7d('0x21')][_0x7c7d('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x12d8b2,_0x4c10f2,_0x3d3962,_0x256856){return new BPromise(function(_0x1aaf78,_0x443977){var _0x1ed463=_0x256856||client;return _0x1ed463['request'](_0x12d8b2,_0x3d3962)[_0x7c7d('0x22')](function(_0x4ddb0b){logger[_0x7c7d('0x23')]('FaxMessage,\x20%s,\x20%s',_0x4c10f2,_0x7c7d('0x24'));logger['debug'](_0x7c7d('0x25'),_0x4c10f2,'request\x20sent',JSON['stringify'](_0x4ddb0b));if(_0x4ddb0b[_0x7c7d('0x26')]){if(_0x4ddb0b[_0x7c7d('0x26')]['code']===0x1f4){logger[_0x7c7d('0x26')](_0x7c7d('0x27'),_0x4c10f2,_0x4ddb0b[_0x7c7d('0x26')][_0x7c7d('0x28')]);return _0x443977(_0x4ddb0b[_0x7c7d('0x26')][_0x7c7d('0x28')]);}logger[_0x7c7d('0x26')](_0x7c7d('0x27'),_0x4c10f2,_0x4ddb0b[_0x7c7d('0x26')]['message']);return _0x1aaf78(_0x4ddb0b['error'][_0x7c7d('0x28')]);}else{logger[_0x7c7d('0x23')](_0x7c7d('0x27'),_0x4c10f2,_0x7c7d('0x24'));_0x1aaf78(_0x4ddb0b[_0x7c7d('0x29')][_0x7c7d('0x28')]);}})[_0x7c7d('0x2a')](function(_0xf76727){logger[_0x7c7d('0x26')](_0x7c7d('0x27'),_0x4c10f2,_0xf76727);_0x443977(_0xf76727);});});}function respondWithStatusCode(_0x4b45d1,_0x4c437d){_0x4c437d=_0x4c437d||0xcc;return function(_0x3c1bde){if(_0x3c1bde){return _0x4b45d1['sendStatus'](_0x4c437d);}return _0x4b45d1[_0x7c7d('0x2b')](_0x4c437d)[_0x7c7d('0x2c')]();};}function respondWithResult(_0x5827bb,_0x398b55){_0x398b55=_0x398b55||0xc8;return function(_0x307e11){if(_0x307e11){return _0x5827bb[_0x7c7d('0x2b')](_0x398b55)[_0x7c7d('0x2d')](_0x307e11);}};}function respondWithFilteredResult(_0x309654,_0x2877f3){return function(_0x562892){if(_0x562892){var _0x24a605=typeof _0x2877f3[_0x7c7d('0x2e')]===_0x7c7d('0x2f')&&typeof _0x2877f3[_0x7c7d('0x30')]===_0x7c7d('0x2f');var _0x1dd76c=_0x562892['count'];var _0x6e138b=_0x24a605?0x0:_0x2877f3[_0x7c7d('0x2e')];var _0x51e026=_0x24a605?_0x562892[_0x7c7d('0x31')]:_0x2877f3[_0x7c7d('0x2e')]+_0x2877f3[_0x7c7d('0x30')];var _0x395a13;if(_0x51e026>=_0x1dd76c){_0x51e026=_0x1dd76c;_0x395a13=0xc8;}else{_0x395a13=0xce;}_0x309654[_0x7c7d('0x2b')](_0x395a13);return _0x309654['set'](_0x7c7d('0x32'),_0x6e138b+'-'+_0x51e026+'/'+_0x1dd76c)[_0x7c7d('0x2d')](_0x562892);}return null;};}function patchUpdates(_0x3bae18){return function(_0x28bd26){try{jsonpatch[_0x7c7d('0x33')](_0x28bd26,_0x3bae18,!![]);}catch(_0x490fb8){return BPromise[_0x7c7d('0x34')](_0x490fb8);}return _0x28bd26[_0x7c7d('0x35')]();};}function saveUpdates(_0x4ec8c4,_0x1ec14f){return function(_0x390a0e){if(_0x390a0e){return _0x390a0e[_0x7c7d('0x36')](_0x4ec8c4)[_0x7c7d('0x22')](function(_0x436a3b){return _0x436a3b;});}return null;};}function removeEntity(_0x532085,_0x48d29a){return function(_0x4c2bcf){if(_0x4c2bcf){return _0x4c2bcf[_0x7c7d('0x37')]()[_0x7c7d('0x22')](function(){_0x532085[_0x7c7d('0x2b')](0xcc)[_0x7c7d('0x2c')]();});}};}function handleEntityNotFound(_0x56b95f,_0x5da116){return function(_0xd2d775){if(!_0xd2d775){_0x56b95f['sendStatus'](0x194);}return _0xd2d775;};}function handleError(_0x327b8c,_0x2a22a3){_0x2a22a3=_0x2a22a3||0x1f4;return function(_0x193af6){logger[_0x7c7d('0x26')](_0x193af6[_0x7c7d('0x38')]);if(_0x193af6[_0x7c7d('0x39')]){delete _0x193af6['name'];}_0x327b8c[_0x7c7d('0x2b')](_0x2a22a3)[_0x7c7d('0x3a')](_0x193af6);};}exports[_0x7c7d('0x3b')]=function(_0x111911,_0x5523f3){var _0x3eda7d={},_0x1116e0={},_0x11dbc0={'count':0x0,'rows':[]};var _0x268df8=_[_0x7c7d('0x3c')](db[_0x7c7d('0x3d')]['rawAttributes'],function(_0x5ed0dc){return{'name':_0x5ed0dc['fieldName'],'type':_0x5ed0dc[_0x7c7d('0x3e')]['key']};});_0x1116e0[_0x7c7d('0x3f')]=_[_0x7c7d('0x3c')](_0x268df8,_0x7c7d('0x39'));_0x1116e0[_0x7c7d('0x40')]=_[_0x7c7d('0x41')](_0x111911[_0x7c7d('0x40')]);_0x1116e0[_0x7c7d('0x42')]=_[_0x7c7d('0x43')](_0x1116e0[_0x7c7d('0x3f')],_0x1116e0[_0x7c7d('0x40')]);_0x3eda7d['attributes']=_[_0x7c7d('0x43')](_0x1116e0[_0x7c7d('0x3f')],qs[_0x7c7d('0x44')](_0x111911[_0x7c7d('0x40')]['fields']));_0x3eda7d[_0x7c7d('0x45')]=_0x3eda7d[_0x7c7d('0x45')][_0x7c7d('0x46')]?_0x3eda7d['attributes']:_0x1116e0[_0x7c7d('0x3f')];if(!_0x111911[_0x7c7d('0x40')][_0x7c7d('0x47')](_0x7c7d('0x48'))){_0x3eda7d['limit']=qs[_0x7c7d('0x30')](_0x111911[_0x7c7d('0x40')][_0x7c7d('0x30')]);_0x3eda7d[_0x7c7d('0x2e')]=qs[_0x7c7d('0x2e')](_0x111911[_0x7c7d('0x40')][_0x7c7d('0x2e')]);}_0x3eda7d[_0x7c7d('0x49')]=qs['sort'](_0x111911[_0x7c7d('0x40')]['sort']);_0x3eda7d['where']=qs['filters'](_['pick'](_0x111911['query'],_0x1116e0['filters']),_0x268df8);if(_0x111911['query'][_0x7c7d('0x4a')]){_0x3eda7d['where']=_['merge'](_0x3eda7d['where'],{'$or':_[_0x7c7d('0x3c')](_0x268df8,function(_0x407b49){if(_0x407b49[_0x7c7d('0x3e')]!==_0x7c7d('0x4b')){var _0x2c0fea={};_0x2c0fea[_0x407b49[_0x7c7d('0x39')]]={'$like':'%'+_0x111911[_0x7c7d('0x40')][_0x7c7d('0x4a')]+'%'};return _0x2c0fea;}})});}_0x3eda7d=_[_0x7c7d('0x4c')]({},_0x3eda7d,_0x111911['options']);var _0x2b3af4={'where':_0x3eda7d[_0x7c7d('0x4d')]};return db['FaxMessage'][_0x7c7d('0x31')](_0x2b3af4)[_0x7c7d('0x22')](function(_0x45dd82){_0x11dbc0['count']=_0x45dd82;if(_0x111911['query'][_0x7c7d('0x4e')]){_0x3eda7d['include']=[{'all':!![]}];}return db[_0x7c7d('0x3d')]['findAll'](_0x3eda7d);})[_0x7c7d('0x22')](function(_0x3f13f1){_0x11dbc0[_0x7c7d('0x4f')]=_0x3f13f1;return _0x11dbc0;})[_0x7c7d('0x22')](respondWithFilteredResult(_0x5523f3,_0x3eda7d))[_0x7c7d('0x2a')](handleError(_0x5523f3,null));};exports['show']=function(_0x4a018d,_0x1d7d5d){var _0x199c02={'raw':!![],'where':{'id':_0x4a018d[_0x7c7d('0x50')]['id']}},_0xd36021={};_0xd36021[_0x7c7d('0x3f')]=_[_0x7c7d('0x41')](db[_0x7c7d('0x3d')][_0x7c7d('0x51')]);_0xd36021[_0x7c7d('0x40')]=_[_0x7c7d('0x41')](_0x4a018d[_0x7c7d('0x40')]);_0xd36021[_0x7c7d('0x42')]=_['intersection'](_0xd36021[_0x7c7d('0x3f')],_0xd36021[_0x7c7d('0x40')]);_0x199c02[_0x7c7d('0x45')]=_[_0x7c7d('0x43')](_0xd36021['model'],qs[_0x7c7d('0x44')](_0x4a018d[_0x7c7d('0x40')][_0x7c7d('0x44')]));_0x199c02['attributes']=_0x199c02[_0x7c7d('0x45')][_0x7c7d('0x46')]?_0x199c02[_0x7c7d('0x45')]:_0xd36021[_0x7c7d('0x3f')];if(_0x4a018d[_0x7c7d('0x40')][_0x7c7d('0x4e')]){_0x199c02[_0x7c7d('0x52')]=[{'all':!![]}];}_0x199c02=_[_0x7c7d('0x4c')]({},_0x199c02,_0x4a018d[_0x7c7d('0x53')]);return db['FaxMessage']['find'](_0x199c02)[_0x7c7d('0x22')](handleEntityNotFound(_0x1d7d5d,null))[_0x7c7d('0x22')](respondWithResult(_0x1d7d5d,null))[_0x7c7d('0x2a')](handleError(_0x1d7d5d,null));};exports[_0x7c7d('0x36')]=function(_0x209076,_0x171428){if(_0x209076[_0x7c7d('0x54')]['id']){delete _0x209076[_0x7c7d('0x54')]['id'];}return db[_0x7c7d('0x3d')][_0x7c7d('0x55')]({'where':{'id':_0x209076['params']['id']}})[_0x7c7d('0x22')](handleEntityNotFound(_0x171428,null))[_0x7c7d('0x22')](saveUpdates(_0x209076[_0x7c7d('0x54')],null))[_0x7c7d('0x22')](respondWithResult(_0x171428,null))[_0x7c7d('0x2a')](handleError(_0x171428,null));};exports['destroy']=function(_0xcf451c,_0x5b10c9){return db['FaxMessage'][_0x7c7d('0x55')]({'where':{'id':_0xcf451c[_0x7c7d('0x50')]['id']}})['then'](handleEntityNotFound(_0x5b10c9,null))[_0x7c7d('0x22')](removeEntity(_0x5b10c9,null))[_0x7c7d('0x2a')](handleError(_0x5b10c9,null));};exports[_0x7c7d('0x56')]=function(_0x24ef2f,_0x29de99){return db[_0x7c7d('0x3d')]['describe']()['then'](respondWithResult(_0x29de99,null))[_0x7c7d('0x2a')](handleError(_0x29de99,null));};var interaction_log=require(_0x7c7d('0x15'))('fax-interactions');exports[_0x7c7d('0x57')]=function(_0x34f780,_0x153cf8,_0x4fc416){var _0x3c95b8={'agent':{},'channel':_0x7c7d('0x58')};if(_0x34f780[_0x7c7d('0x54')]['id']){delete _0x34f780[_0x7c7d('0x54')]['id'];}_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x59')]=!![];_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x5a')]=moment()[_0x7c7d('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x5c')]=_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x5c')]||_0x34f780[_0x7c7d('0x5d')]['id'];_0x3c95b8[_0x7c7d('0x5e')]['id']=_0x34f780['body']['UserId'];return db[_0x7c7d('0x3d')][_0x7c7d('0x55')]({'where':{'id':_0x34f780[_0x7c7d('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x153cf8,null))['then'](saveUpdates(_0x34f780[_0x7c7d('0x54')],null))[_0x7c7d('0x22')](function(_0x1ba9f6){if(_0x1ba9f6){_0x3c95b8[_0x7c7d('0x28')]=_0x1ba9f6['get']({'plain':!![]});return db['FaxInteraction'][_0x7c7d('0x55')]({'where':{'id':_0x1ba9f6[_0x7c7d('0x5f')]}});}return null;})[_0x7c7d('0x22')](handleEntityNotFound(_0x153cf8,null))[_0x7c7d('0x22')](function(_0x351dc0){if(_0x351dc0){return _0x351dc0['update']({'UserId':_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x5c')],'read1stAt':_['isNil'](_0x351dc0[_0x7c7d('0x60')])?moment()[_0x7c7d('0x5b')](_0x7c7d('0x61')):undefined});}return null;})['then'](function(_0x2ab56c){if(_0x2ab56c){_0x3c95b8['interaction']=_0x2ab56c[_0x7c7d('0x62')]({'plain':!![]});interaction_log['info'](_0x7c7d('0x63'),_0x34f780[_0x7c7d('0x5d')]['id'],_0x34f780[_0x7c7d('0x5d')]['name'],_0x34f780[_0x7c7d('0x5d')]['role'],_0x3c95b8['interaction']['id'],_0x34f780[_0x7c7d('0x54')]?JSON[_0x7c7d('0x64')](_0x34f780[_0x7c7d('0x54')]):'null');return respondWithRpcPromise(_0x7c7d('0x65'),'acceptMessage',_0x3c95b8);}return null;})[_0x7c7d('0x22')](function(_0x140358){var _0x447abd=_0x7c7d('0x66')+_0x140358[_0x7c7d('0x28')][_0x7c7d('0x67')];return db[_0x7c7d('0x68')]['query'](_0x447abd,{'type':db[_0x7c7d('0x69')][_0x7c7d('0x6a')]['SELECT'],'raw':!![]})['then'](function(_0x576586){return _0x576586;});})['then'](function(_0x1e212f){if(_0x1e212f){_0x3c95b8['message'][_0x7c7d('0x6b')]=_0x1e212f[0x0];if(!_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x5c')])return;return db[_0x7c7d('0x6c')]['find']({'where':{'id':_0x34f780[_0x7c7d('0x54')]['UserId'],'role':_0x7c7d('0x5e')},'attributes':['id',_0x7c7d('0x39'),_0x7c7d('0x6d'),_0x7c7d('0x6e'),_0x7c7d('0x6f')],'raw':!![]});}return null;})[_0x7c7d('0x22')](function(_0x591801){if(!_0x591801)return null;_0x3c95b8['message'][_0x7c7d('0x5e')]=_0x591801;return _0x3c95b8;})['then'](function(_0x4a76dd){if(_0x4a76dd){if(_0x34f780[_0x7c7d('0x54')][_0x7c7d('0x70')]){_0x3c95b8[_0x7c7d('0x28')]['interface']=util[_0x7c7d('0x5b')](_0x7c7d('0x71'),_0x34f780['user'][_0x7c7d('0x39')]);_0x3c95b8[_0x7c7d('0x28')][_0x7c7d('0x72')]=_0x3c95b8[_0x7c7d('0x72')];_0x3c95b8['message'][_0x7c7d('0x73')]=_0x7c7d('0x57');return respondWithRpcPromise(_0x7c7d('0x74'),'EventManager',{'event':'acceptmessage','message':_0x3c95b8[_0x7c7d('0x28')]},client9002)['then'](function(){return _0x3c95b8;});}return _0x3c95b8;}return null;})[_0x7c7d('0x22')](respondWithResult(_0x153cf8,null))[_0x7c7d('0x2a')](handleError(_0x153cf8,null));};var interaction_log=require(_0x7c7d('0x15'))(_0x7c7d('0x75'));exports['reject']=function(_0x292935,_0x3a3120,_0x83730){var _0x3d79a8={'agent':{},'channel':_0x7c7d('0x58')};if(_0x292935['body']['id']){delete _0x292935['body']['id'];}_0x292935[_0x7c7d('0x54')]['UserId']=_0x292935[_0x7c7d('0x54')]['UserId']||_0x292935[_0x7c7d('0x5d')]['id'];_0x3d79a8['agent']['id']=_0x292935['body']['UserId'];return db[_0x7c7d('0x3d')][_0x7c7d('0x55')]({'where':{'id':_0x292935[_0x7c7d('0x50')]['id'],'UserId':null}})[_0x7c7d('0x22')](handleEntityNotFound(_0x3a3120,null))[_0x7c7d('0x22')](function(_0x53c213){if(_0x53c213){_0x3d79a8['message']=_0x53c213['get']({'plain':!![]});return db[_0x7c7d('0x76')][_0x7c7d('0x55')]({'where':{'id':_0x53c213[_0x7c7d('0x5f')]}});}return null;})[_0x7c7d('0x22')](handleEntityNotFound(_0x3a3120,null))['then'](function(_0x58aa81){if(_0x58aa81){_0x3d79a8['interaction']=_0x58aa81['get']({'plain':!![]});interaction_log['info'](_0x7c7d('0x77'),_0x292935[_0x7c7d('0x5d')]['id'],_0x292935['user'][_0x7c7d('0x39')],_0x292935[_0x7c7d('0x5d')][_0x7c7d('0x78')],_0x3d79a8['interaction']['id'],_0x292935[_0x7c7d('0x54')]?JSON[_0x7c7d('0x64')](_0x292935[_0x7c7d('0x54')]):_0x7c7d('0x79'));return respondWithRpcPromise(_0x7c7d('0x7a'),_0x7c7d('0x7b'),_0x3d79a8);}return null;})[_0x7c7d('0x22')](function(_0x2c42cc){var _0x1877cf=_0x7c7d('0x66')+_0x2c42cc['message'][_0x7c7d('0x67')];return db['sequelize']['query'](_0x1877cf,{'type':db['Sequelize']['QueryTypes'][_0x7c7d('0x7c')],'raw':!![]})[_0x7c7d('0x22')](function(_0x47bf08){return _0x47bf08;});})['then'](function(_0x5df4f4){if(_0x5df4f4){_0x3d79a8[_0x7c7d('0x28')]['contact']=_0x5df4f4[0x0];if(!_0x292935[_0x7c7d('0x54')][_0x7c7d('0x5c')])return;return db['User'][_0x7c7d('0x55')]({'where':{'id':_0x292935[_0x7c7d('0x54')][_0x7c7d('0x5c')],'role':_0x7c7d('0x5e')},'attributes':['id','name',_0x7c7d('0x6d'),'email',_0x7c7d('0x6f')],'raw':!![]});}return null;})[_0x7c7d('0x22')](function(_0x542378){if(!_0x542378)return null;_0x3d79a8['message'][_0x7c7d('0x5e')]=_0x542378;return _0x3d79a8;})[_0x7c7d('0x22')](function(_0x57ff00){if(_0x57ff00){_0x57ff00[_0x7c7d('0x28')][_0x7c7d('0x7d')]=util[_0x7c7d('0x5b')](_0x7c7d('0x71'),_0x292935['user']['name']);_0x57ff00[_0x7c7d('0x28')]['channel']=_0x3d79a8[_0x7c7d('0x72')];_0x57ff00['message'][_0x7c7d('0x73')]=_0x7c7d('0x34');respondWithRpcPromise(_0x7c7d('0x74'),_0x7c7d('0x74'),{'event':_0x7c7d('0x7e'),'message':_0x57ff00['message']},client9002);return _0x3d79a8;}return null;})[_0x7c7d('0x22')](respondWithResult(_0x3a3120,null))[_0x7c7d('0x2a')](handleError(_0x3a3120,null));};exports[_0x7c7d('0x7f')]=function(_0x33a7d9,_0x2c7ec9){var _0x23873a;return db['FaxMessage']['create'](_0x33a7d9[_0x7c7d('0x54')],{})['then'](function(_0x2130cb){_0x23873a=_0x2130cb;return db[_0x7c7d('0x80')][_0x7c7d('0x81')]({'where':{'id':_0x23873a[_0x7c7d('0x67')]}});})[_0x7c7d('0x22')](function(_0x2f0052){if(_['isNil'](_0x2f0052)){return;}else{_0x23873a[_0x7c7d('0x58')]=_0x2f0052['fax'];return db[_0x7c7d('0x82')]['findOne']({'where':{'id':_0x23873a[_0x7c7d('0x83')]}});}})[_0x7c7d('0x22')](function(_0x1f9674){return respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x7c7d('0x84')](_0x33a7d9[_0x7c7d('0x54')])?undefined:_0x33a7d9[_0x7c7d('0x54')][_0x7c7d('0x85')],'path':_['isNil'](_0x1f9674)?undefined:util['format'](_0x7c7d('0x86'),_0x1f9674[_0x7c7d('0x87')]),'fax':_['isNil'](_0x23873a[_0x7c7d('0x58')])?undefined:_0x23873a[_0x7c7d('0x58')],'AttachmentId':_0x23873a[_0x7c7d('0x83')]},client9002);})[_0x7c7d('0x22')](respondWithResult(_0x2c7ec9,0xc9))[_0x7c7d('0x2a')](handleError(_0x2c7ec9,null));};exports[_0x7c7d('0x88')]=function(_0x5ac4ac,_0x2a1751){var _0x1805f4=path['join'](config[_0x7c7d('0x89')],_0x7c7d('0x8a'),_0x7c7d('0x8b'),'attachments');return db['FaxMessage'][_0x7c7d('0x55')]({'where':{'id':_0x5ac4ac[_0x7c7d('0x50')]['id']},'include':[{'model':db[_0x7c7d('0x82')],'as':_0x7c7d('0x82')}]})['then'](handleEntityNotFound(_0x2a1751,null))[_0x7c7d('0x22')](function(_0x2af479){if(_0x2af479){return _0x2a1751[_0x7c7d('0x88')](path[_0x7c7d('0x8c')](_0x1805f4,_0x2af479[_0x7c7d('0x82')][_0x7c7d('0x87')]));}})[_0x7c7d('0x2a')](handleError(_0x2a1751,null));};
\ No newline at end of file
index 03b6354..2bc5737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab9f=['emit','hasOwnProperty','hook','exports','events','FaxMessage','setMaxListeners','save','remove'];(function(_0x47cf2e,_0xe13ff8){var _0x2c3cb3=function(_0x36ad5a){while(--_0x36ad5a){_0x47cf2e['push'](_0x47cf2e['shift']());}};_0x2c3cb3(++_0xe13ff8);}(_0xab9f,0x1bd));var _0xfab9=function(_0x31bb1d,_0x8eea6b){_0x31bb1d=_0x31bb1d-0x0;var _0x2eb906=_0xab9f[_0x31bb1d];return _0x2eb906;};'use strict';var EventEmitter=require(_0xfab9('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0xfab9('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xfab9('0x2')](0x0);var events={'afterCreate':_0xfab9('0x3'),'afterUpdate':'update','afterDestroy':_0xfab9('0x4')};function emitEvent(_0x1c4d64){return function(_0x50b645,_0xb7152f,_0x51bbf6){FaxMessageEvents[_0xfab9('0x5')](_0x1c4d64+':'+_0x50b645['id'],_0x50b645);FaxMessageEvents['emit'](_0x1c4d64,_0x50b645);_0x51bbf6(null);};}for(var e in events){if(events[_0xfab9('0x6')](e)){var event=events[e];FaxMessage[_0xfab9('0x7')](e,emitEvent(event));}}module[_0xfab9('0x8')]=FaxMessageEvents;
\ No newline at end of file
+var _0xb1aa=['hook','events','../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x5e96da,_0x5031ff){var _0x508c62=function(_0x45c981){while(--_0x45c981){_0x5e96da['push'](_0x5e96da['shift']());}};_0x508c62(++_0x5031ff);}(_0xb1aa,0x159));var _0xab1a=function(_0x4ea688,_0x218c02){_0x4ea688=_0x4ea688-0x0;var _0x3ecf56=_0xb1aa[_0x4ea688];return _0x3ecf56;};'use strict';var EventEmitter=require(_0xab1a('0x0'));var FaxMessage=require(_0xab1a('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xab1a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xab1a('0x3'),'afterDestroy':_0xab1a('0x4')};function emitEvent(_0x26a247){return function(_0x3c224b,_0x2371d3,_0x2649be){FaxMessageEvents[_0xab1a('0x5')](_0x26a247+':'+_0x3c224b['id'],_0x3c224b);FaxMessageEvents[_0xab1a('0x5')](_0x26a247,_0x3c224b);_0x2649be(null);};}for(var e in events){if(events[_0xab1a('0x6')](e)){var event=events[e];FaxMessage[_0xab1a('0x7')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 05a9197..0e23021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe02a=['./faxMessage.attributes','define','fax_messages','fti_fax_messages','body','models','direction','toLowerCase','out','secret','UserId','FaxInteraction','FaxInteractionId','createdAt','catch','error','utf8mb4','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xe02a,0xd1));var _0xae02=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xe02a[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xae02('0x0'));var util=require('util');var logger=require(_0xae02('0x1'))('api');var moment=require(_0xae02('0x2'));var BPromise=require(_0xae02('0x3'));var rp=require(_0xae02('0x4'));var fs=require('fs');var path=require(_0xae02('0x5'));var rimraf=require('rimraf');var config=require(_0xae02('0x6'));var attributes=require(_0xae02('0x7'));module['exports']=function(_0x360910,_0x308ef3){return _0x360910[_0xae02('0x8')]('FaxMessage',attributes,{'tableName':_0xae02('0x9'),'paranoid':![],'indexes':[{'name':_0xae02('0xa'),'fields':[_0xae02('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x589cdb,_0x11b445,_0x4597ab){var _0x41e29c=_0x360910[_0xae02('0xc')];var _0x34f4ff=_0x589cdb['get']({'plain':!![]});if(_0x34f4ff[_0xae02('0xd')][_0xae02('0xe')]()==='in'||_0x34f4ff[_0xae02('0xd')][_0xae02('0xe')]()===_0xae02('0xf')&&!_0x34f4ff[_0xae02('0x10')]&&!_['isNil'](_0x34f4ff[_0xae02('0x11')])){_0x41e29c[_0xae02('0x12')]['findOne']({'where':{'id':_0x34f4ff[_0xae02('0x13')]}})['then'](function(_0x5204cf){if(_0x5204cf){_0x5204cf['update']({'lastMsgAt':_0x34f4ff[_0xae02('0x14')],'lastMsgDirection':_0x34f4ff[_0xae02('0xd')][_0xae02('0xe')]()});}})[_0xae02('0x15')](function(_0x2e8854){console[_0xae02('0x16')](_0x2e8854);});}_0x4597ab();}},'charset':_0xae02('0x17'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd4de=['secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','direction','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','api','path','rimraf','./faxMessage.attributes','exports','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','toLowerCase','out'];(function(_0x1faf94,_0x5848ba){var _0x2ee2a3=function(_0x473830){while(--_0x473830){_0x1faf94['push'](_0x1faf94['shift']());}};_0x2ee2a3(++_0x5848ba);}(_0xd4de,0x1c1));var _0xed4d=function(_0x3dd646,_0x4e36f5){_0x3dd646=_0x3dd646-0x0;var _0x27cc52=_0xd4de[_0x3dd646];return _0x27cc52;};'use strict';var _=require(_0xed4d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xed4d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xed4d('0x2'));var rimraf=require(_0xed4d('0x3'));var config=require('../../config/environment');var attributes=require(_0xed4d('0x4'));module[_0xed4d('0x5')]=function(_0x341b7f,_0x50ff1f){return _0x341b7f['define'](_0xed4d('0x6'),attributes,{'tableName':_0xed4d('0x7'),'paranoid':![],'indexes':[{'name':_0xed4d('0x8'),'fields':[_0xed4d('0x9')],'type':_0xed4d('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1b7480,_0x32313d,_0x4c007d){var _0x17feba=_0x341b7f[_0xed4d('0xb')];var _0x3bd5ad=_0x1b7480[_0xed4d('0xc')]({'plain':!![]});if(_0x3bd5ad['direction'][_0xed4d('0xd')]()==='in'||_0x3bd5ad['direction'][_0xed4d('0xd')]()===_0xed4d('0xe')&&!_0x3bd5ad[_0xed4d('0xf')]&&!_[_0xed4d('0x10')](_0x3bd5ad[_0xed4d('0x11')])){_0x17feba[_0xed4d('0x12')][_0xed4d('0x13')]({'where':{'id':_0x3bd5ad[_0xed4d('0x14')]}})[_0xed4d('0x15')](function(_0x5f3b65){if(_0x5f3b65){_0x5f3b65[_0xed4d('0x16')]({'lastMsgAt':_0x3bd5ad[_0xed4d('0x17')],'lastMsgDirection':_0x3bd5ad[_0xed4d('0x18')][_0xed4d('0xd')]()});}})[_0xed4d('0x19')](function(_0x1fd6de){console[_0xed4d('0x1a')](_0x1fd6de);});}_0x4c007d();}},'charset':_0xed4d('0x1b'),'collate':_0xed4d('0x1c')});};
\ No newline at end of file
index fbaac57..c4fc8d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x425d,0x1e0));var _0xd425=function(_0x17882c,_0x4b964b){_0x17882c=_0x17882c-0x0;var _0x355a59=_0x425d[_0x17882c];return _0x355a59;};'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
+var _0x4b84=['CreateFaxMessage','FaxMessage','create','body','options','raw','stringify','UpdateFaxMessage','attributes','catch','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','http','defaults','localhost','./faxMessage.socket','register','request','then','info','request\x20sent','debug','error','message','FaxMessage,\x20%s,\x20%s','result'];(function(_0x4e6049,_0x4ad746){var _0x32270c=function(_0x5173eb){while(--_0x5173eb){_0x4e6049['push'](_0x4e6049['shift']());}};_0x32270c(++_0x4ad746);}(_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});config['redis']=_[_0x44b8('0x7')](config['redis'],{'host':_0x44b8('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x44b8('0x9'))[_0x44b8('0xa')](socket);function respondWithRpcPromise(_0x30ebc3,_0x48a371,_0xc650ec){return new BPromise(function(_0x2cc74b,_0x4315f6){return client[_0x44b8('0xb')](_0x30ebc3,_0xc650ec)[_0x44b8('0xc')](function(_0x37e471){logger[_0x44b8('0xd')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x44b8('0xe'));logger[_0x44b8('0xf')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x48a371,_0x44b8('0xe'),JSON['stringify'](_0x37e471));if(_0x37e471[_0x44b8('0x10')]){if(_0x37e471[_0x44b8('0x10')]['code']===0x1f4){logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x37e471['error'][_0x44b8('0x11')]);return _0x4315f6(_0x37e471[_0x44b8('0x10')][_0x44b8('0x11')]);}logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x37e471['error']['message']);return _0x2cc74b(_0x37e471[_0x44b8('0x10')]['message']);}else{logger[_0x44b8('0xd')](_0x44b8('0x12'),_0x48a371,'request\x20sent');_0x2cc74b(_0x37e471[_0x44b8('0x13')][_0x44b8('0x11')]);}})['catch'](function(_0x89bc30){logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x89bc30);_0x4315f6(_0x89bc30);});});}exports[_0x44b8('0x14')]=function(_0x8b4301){var _0xebfe79=this;return new Promise(function(_0x235bdc,_0x102ef9){return db[_0x44b8('0x15')][_0x44b8('0x16')](_0x8b4301[_0x44b8('0x17')],{'raw':_0x8b4301[_0x44b8('0x18')]?_0x8b4301[_0x44b8('0x18')][_0x44b8('0x19')]===undefined?!![]:![]:!![]})[_0x44b8('0xc')](function(_0x48327e){logger[_0x44b8('0xd')](_0x44b8('0x14'),_0x8b4301);logger[_0x44b8('0xf')](_0x44b8('0x14'),_0x8b4301,JSON[_0x44b8('0x1a')](_0x48327e));_0x235bdc(_0x48327e);})['catch'](function(_0x402497){logger['error'](_0x44b8('0x14'),_0x402497[_0x44b8('0x11')],_0x8b4301);_0x102ef9(_0xebfe79[_0x44b8('0x10')](0x1f4,_0x402497[_0x44b8('0x11')]));});});};exports[_0x44b8('0x1b')]=function(_0x59acbc){var _0x474f01=this;return new Promise(function(_0x502acf,_0x41d673){return db[_0x44b8('0x15')]['update'](_0x59acbc[_0x44b8('0x17')],{'raw':_0x59acbc[_0x44b8('0x18')]?_0x59acbc[_0x44b8('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59acbc[_0x44b8('0x18')]?_0x59acbc[_0x44b8('0x18')]['where']||null:null,'attributes':_0x59acbc[_0x44b8('0x18')]?_0x59acbc['options'][_0x44b8('0x1c')]||null:null,'limit':_0x59acbc['options']?_0x59acbc['options']['limit']||null:null})[_0x44b8('0xc')](function(_0x29b18d){logger[_0x44b8('0xd')](_0x44b8('0x1b'),_0x59acbc);logger[_0x44b8('0xf')](_0x44b8('0x1b'),_0x59acbc,JSON[_0x44b8('0x1a')](_0x29b18d));_0x502acf(_0x29b18d);})[_0x44b8('0x1d')](function(_0xd1d320){logger[_0x44b8('0x10')](_0x44b8('0x1b'),_0xd1d320[_0x44b8('0x11')],_0x59acbc);_0x41d673(_0x474f01[_0x44b8('0x10')](0x1f4,_0xd1d320['message']));});});};
\ No newline at end of file
index 64ff79d..cf13b6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e01=['faxMessage:','./faxMessage.events','save','update','removeListener','register','length'];(function(_0x56b47d,_0x4d4bfe){var _0x359d62=function(_0x587c24){while(--_0x587c24){_0x56b47d['push'](_0x56b47d['shift']());}};_0x359d62(++_0x4d4bfe);}(_0x8e01,0x1ac));var _0x18e0=function(_0x216f34,_0xe76e67){_0x216f34=_0x216f34-0x0;var _0x1b314d=_0x8e01[_0x216f34];return _0x1b314d;};'use strict';var FaxMessageEvents=require(_0x18e0('0x0'));var events=[_0x18e0('0x1'),'remove',_0x18e0('0x2')];function createListener(_0x5dc4b2,_0x32e1c9){return function(_0x157a22){_0x32e1c9['emit'](_0x5dc4b2,_0x157a22);};}function removeListener(_0x587b19,_0x5b8d3b){return function(){FaxMessageEvents[_0x18e0('0x3')](_0x587b19,_0x5b8d3b);};}exports[_0x18e0('0x4')]=function(_0x4fd46a){for(var _0x41777f=0x0,_0xb689ac=events[_0x18e0('0x5')];_0x41777f<_0xb689ac;_0x41777f++){var _0x46515a=events[_0x41777f];var _0x3f2bef=createListener(_0x18e0('0x6')+_0x46515a,_0x4fd46a);FaxMessageEvents['on'](_0x46515a,_0x3f2bef);}};
\ No newline at end of file
+var _0xd5fa=['save','remove','update','emit','removeListener','register','length','faxMessage:','./faxMessage.events'];(function(_0x1d1c03,_0x1ca930){var _0x23ccf0=function(_0xd125a){while(--_0xd125a){_0x1d1c03['push'](_0x1d1c03['shift']());}};_0x23ccf0(++_0x1ca930);}(_0xd5fa,0xfb));var _0xad5f=function(_0x3688ad,_0x5efc53){_0x3688ad=_0x3688ad-0x0;var _0x3d3d69=_0xd5fa[_0x3688ad];return _0x3d3d69;};'use strict';var FaxMessageEvents=require(_0xad5f('0x0'));var events=[_0xad5f('0x1'),_0xad5f('0x2'),_0xad5f('0x3')];function createListener(_0x2c293e,_0x143cf4){return function(_0x3ab40a){_0x143cf4[_0xad5f('0x4')](_0x2c293e,_0x3ab40a);};}function removeListener(_0x520cb4,_0x56d9c7){return function(){FaxMessageEvents[_0xad5f('0x5')](_0x520cb4,_0x56d9c7);};}exports[_0xad5f('0x6')]=function(_0x89b501){for(var _0xebe209=0x0,_0x5a7189=events[_0xad5f('0x7')];_0xebe209<_0x5a7189;_0xebe209++){var _0xd61327=events[_0xebe209];var _0x5a6aac=createListener(_0xad5f('0x8')+_0xd61327,_0x89b501);FaxMessageEvents['on'](_0xd61327,_0x5a6aac);}};
\ No newline at end of file
index 78891d8..2bf262e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['/describe','describe','/:id','show','download','tracked','fax','create','update','put','/:id/accept','accept','reject','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x4d67bf,_0x5ee7ed){var _0x4900f8=function(_0xca64cf){while(--_0xca64cf){_0x4d67bf['push'](_0x4d67bf['shift']());}};_0x4900f8(++_0x5ee7ed);}(_0xdace,0xc5));var _0xedac=function(_0x4b2251,_0x393f10){_0x4b2251=_0x4b2251-0x0;var _0x5d22fb=_0xdace[_0x4b2251];return _0x5d22fb;};'use strict';var multer=require(_0xedac('0x0'));var util=require('util');var path=require(_0xedac('0x1'));var timeout=require(_0xedac('0x2'));var express=require(_0xedac('0x3'));var router=express['Router']();var fs_extra=require(_0xedac('0x4'));var auth=require(_0xedac('0x5'));var interaction=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var controller=require('./faxMessage.controller');router[_0xedac('0x8')]('/',auth[_0xedac('0x9')](),controller[_0xedac('0xa')]);router['get'](_0xedac('0xb'),auth[_0xedac('0x9')](),controller[_0xedac('0xc')]);router['get'](_0xedac('0xd'),auth[_0xedac('0x9')](),controller[_0xedac('0xe')]);router['get']('/:id/download',auth[_0xedac('0x9')](),controller[_0xedac('0xf')]);router['post']('/',auth['isAuthenticated'](),interaction[_0xedac('0x10')](_0xedac('0x11'),'faxmessage:create'),controller[_0xedac('0x12')]);router['put'](_0xedac('0xd'),auth[_0xedac('0x9')](),controller[_0xedac('0x13')]);router[_0xedac('0x14')](_0xedac('0x15'),auth[_0xedac('0x9')](),controller[_0xedac('0x16')]);router[_0xedac('0x14')]('/:id/reject',auth[_0xedac('0x9')](),controller[_0xedac('0x17')]);router[_0xedac('0x18')](_0xedac('0xd'),auth[_0xedac('0x9')](),controller['destroy']);module[_0xedac('0x19')]=router;
\ No newline at end of file
+var _0x44a3=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/:id','show','download','fax','create','put','update','/:id/accept','accept','reject','delete','exports'];(function(_0x385229,_0x3dec64){var _0x2d1c06=function(_0x3ca7b1){while(--_0x3ca7b1){_0x385229['push'](_0x385229['shift']());}};_0x2d1c06(++_0x3dec64);}(_0x44a3,0x1a9));var _0x344a=function(_0x547add,_0x387042){_0x547add=_0x547add-0x0;var _0x2ed1f3=_0x44a3[_0x547add];return _0x2ed1f3;};'use strict';var multer=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var path=require(_0x344a('0x2'));var timeout=require(_0x344a('0x3'));var express=require(_0x344a('0x4'));var router=express[_0x344a('0x5')]();var fs_extra=require(_0x344a('0x6'));var auth=require(_0x344a('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x344a('0x8'));var controller=require(_0x344a('0x9'));router[_0x344a('0xa')]('/',auth[_0x344a('0xb')](),controller[_0x344a('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x344a('0xa')](_0x344a('0xd'),auth[_0x344a('0xb')](),controller[_0x344a('0xe')]);router[_0x344a('0xa')]('/:id/download',auth[_0x344a('0xb')](),controller[_0x344a('0xf')]);router['post']('/',auth[_0x344a('0xb')](),interaction['tracked'](_0x344a('0x10'),'faxmessage:create'),controller[_0x344a('0x11')]);router[_0x344a('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x344a('0x13')]);router[_0x344a('0x12')](_0x344a('0x14'),auth[_0x344a('0xb')](),controller[_0x344a('0x15')]);router[_0x344a('0x12')]('/:id/reject',auth[_0x344a('0xb')](),controller[_0x344a('0x16')]);router[_0x344a('0x17')](_0x344a('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x344a('0x18')]=router;
\ No newline at end of file
index 4ecf488..ede1ad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0120=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0120,0x6f));var _0x0012=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x0120[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x0012('0x0'));module[_0x0012('0x1')]={'name':{'type':Sequelize[_0x0012('0x2')],'unique':_0x0012('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0012('0x2')]},'timeout':{'type':Sequelize[_0x0012('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0012('0x5')](_0x0012('0x6'),_0x0012('0x7'),_0x0012('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x0012('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6e0e=['exports','STRING','INTEGER','ENUM','beepall','roundrobin'];(function(_0x5dbf63,_0x4c62eb){var _0x27dcdf=function(_0x452977){while(--_0x452977){_0x5dbf63['push'](_0x5dbf63['shift']());}};_0x27dcdf(++_0x4c62eb);}(_0x6e0e,0x8a));var _0xe6e0=function(_0x21f630,_0x4a9269){_0x21f630=_0x21f630-0x0;var _0x58bfaf=_0x6e0e[_0x21f630];return _0x58bfaf;};'use strict';var Sequelize=require('sequelize');module[_0xe6e0('0x0')]={'name':{'type':Sequelize[_0xe6e0('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xe6e0('0x2')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xe6e0('0x3')]('rrmemory',_0xe6e0('0x4'),_0xe6e0('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xe6e0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e70bf7b..3fd1f51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6f=['attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','options','include','rows','catch','show','params','merge','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','describe','getMembers','findOne','UserFaxQueue','rawAttributes','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','SIP','Team','getTeams','addTeams','ids','Agents','online','interface','flatMap','each','forEach','emit','userFaxQueue:save','select','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','sequelize','transaction','isEmpty','addAgents','omit','removeAgents','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','error','stack','name','send','map','FaxQueue','fieldName','type','key','model','query','keys','filters'];(function(_0x3130b5,_0x23faf7){var _0xa6d8a3=function(_0x175be7){while(--_0x175be7){_0x3130b5['push'](_0x3130b5['shift']());}};_0xa6d8a3(++_0x23faf7);}(_0xfa6f,0x167));var _0xffa6=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0xfa6f[_0x365be9];return _0x185c12;};'use strict';var emlformat=require(_0xffa6('0x0'));var rimraf=require(_0xffa6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffa6('0x2'));var rp=require('request-promise');var moment=require(_0xffa6('0x3'));var BPromise=require(_0xffa6('0x4'));var Mustache=require('mustache');var util=require(_0xffa6('0x5'));var path=require(_0xffa6('0x6'));var sox=require(_0xffa6('0x7'));var csv=require(_0xffa6('0x8'));var ejs=require(_0xffa6('0x9'));var fs=require('fs');var fs_extra=require(_0xffa6('0xa'));var _=require(_0xffa6('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xffa6('0xc'));var deskjs=require(_0xffa6('0xd'));var toCsv=require(_0xffa6('0x8'));var querystring=require(_0xffa6('0xe'));var Papa=require(_0xffa6('0xf'));var Redis=require(_0xffa6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xffa6('0x11'));var as=require(_0xffa6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xffa6('0x13'))(_0xffa6('0x14'));var utils=require(_0xffa6('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xffa6('0x16'));var db=require(_0xffa6('0x17'))['db'];config[_0xffa6('0x18')]=_[_0xffa6('0x19')](config[_0xffa6('0x18')],{'host':_0xffa6('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xffa6('0x18')]));require(_0xffa6('0x1b'))['register'](socket);function respondWithStatusCode(_0x315a29,_0x581090){_0x581090=_0x581090||0xcc;return function(_0x31af38){if(_0x31af38){return _0x315a29[_0xffa6('0x1c')](_0x581090);}return _0x315a29[_0xffa6('0x1d')](_0x581090)[_0xffa6('0x1e')]();};}function respondWithResult(_0x5562de,_0x43f3e3){_0x43f3e3=_0x43f3e3||0xc8;return function(_0x23c4ab){if(_0x23c4ab){return _0x5562de['status'](_0x43f3e3)[_0xffa6('0x1f')](_0x23c4ab);}};}function respondWithFilteredResult(_0x5961db,_0x31ab49){return function(_0x450564){if(_0x450564){var _0x5cea51=typeof _0x31ab49[_0xffa6('0x20')]===_0xffa6('0x21')&&typeof _0x31ab49[_0xffa6('0x22')]===_0xffa6('0x21');var _0x402100=_0x450564[_0xffa6('0x23')];var _0x58752a=_0x5cea51?0x0:_0x31ab49[_0xffa6('0x20')];var _0xf07c5=_0x5cea51?_0x450564[_0xffa6('0x23')]:_0x31ab49[_0xffa6('0x20')]+_0x31ab49[_0xffa6('0x22')];var _0x34fc1e;if(_0xf07c5>=_0x402100){_0xf07c5=_0x402100;_0x34fc1e=0xc8;}else{_0x34fc1e=0xce;}_0x5961db[_0xffa6('0x1d')](_0x34fc1e);return _0x5961db[_0xffa6('0x24')](_0xffa6('0x25'),_0x58752a+'-'+_0xf07c5+'/'+_0x402100)[_0xffa6('0x1f')](_0x450564);}return null;};}function patchUpdates(_0x3c4c73){return function(_0x166bef){try{jsonpatch[_0xffa6('0x26')](_0x166bef,_0x3c4c73,!![]);}catch(_0xb01bfe){return BPromise[_0xffa6('0x27')](_0xb01bfe);}return _0x166bef['save']();};}function saveUpdates(_0x50811f,_0xbfc036){return function(_0x375c5e){if(_0x375c5e){return _0x375c5e[_0xffa6('0x28')](_0x50811f)[_0xffa6('0x29')](function(_0x2c525f){return _0x2c525f;});}return null;};}function removeEntity(_0x5021f9,_0x1b4a54){return function(_0x3b8bd0){if(_0x3b8bd0){return _0x3b8bd0[_0xffa6('0x2a')]()['then'](function(){var _0x5a068d=_0x3b8bd0[_0xffa6('0x2b')]({'plain':!![]});var _0x232094='FaxQueues';return db[_0xffa6('0x2c')][_0xffa6('0x2a')]({'where':{'type':_0x232094,'resourceId':_0x5a068d['id']}})[_0xffa6('0x29')](function(){return _0x3b8bd0;});})[_0xffa6('0x29')](function(){_0x5021f9['status'](0xcc)[_0xffa6('0x1e')]();});}};}function handleEntityNotFound(_0x73391,_0x25cc8d){return function(_0x8c51bc){if(!_0x8c51bc){_0x73391['sendStatus'](0x194);}return _0x8c51bc;};}function handleError(_0x2cdf9a,_0x879375){_0x879375=_0x879375||0x1f4;return function(_0xaa4bb3){logger[_0xffa6('0x2d')](_0xaa4bb3[_0xffa6('0x2e')]);if(_0xaa4bb3[_0xffa6('0x2f')]){delete _0xaa4bb3['name'];}_0x2cdf9a[_0xffa6('0x1d')](_0x879375)[_0xffa6('0x30')](_0xaa4bb3);};}exports['index']=function(_0x3c9d24,_0x245507){var _0x2fd39d={},_0x220772={},_0x29a578={'count':0x0,'rows':[]};var _0x1bedf4=_[_0xffa6('0x31')](db[_0xffa6('0x32')]['rawAttributes'],function(_0x9f79b2){return{'name':_0x9f79b2[_0xffa6('0x33')],'type':_0x9f79b2[_0xffa6('0x34')][_0xffa6('0x35')]};});_0x220772[_0xffa6('0x36')]=_[_0xffa6('0x31')](_0x1bedf4,_0xffa6('0x2f'));_0x220772[_0xffa6('0x37')]=_[_0xffa6('0x38')](_0x3c9d24['query']);_0x220772[_0xffa6('0x39')]=_['intersection'](_0x220772['model'],_0x220772[_0xffa6('0x37')]);_0x2fd39d[_0xffa6('0x3a')]=_[_0xffa6('0x3b')](_0x220772[_0xffa6('0x36')],qs[_0xffa6('0x3c')](_0x3c9d24[_0xffa6('0x37')][_0xffa6('0x3c')]));_0x2fd39d['attributes']=_0x2fd39d[_0xffa6('0x3a')][_0xffa6('0x3d')]?_0x2fd39d['attributes']:_0x220772['model'];if(!_0x3c9d24['query'][_0xffa6('0x3e')](_0xffa6('0x3f'))){_0x2fd39d[_0xffa6('0x22')]=qs[_0xffa6('0x22')](_0x3c9d24[_0xffa6('0x37')][_0xffa6('0x22')]);_0x2fd39d['offset']=qs[_0xffa6('0x20')](_0x3c9d24['query']['offset']);}_0x2fd39d[_0xffa6('0x40')]=qs[_0xffa6('0x41')](_0x3c9d24[_0xffa6('0x37')][_0xffa6('0x41')]);_0x2fd39d[_0xffa6('0x42')]=qs['filters'](_[_0xffa6('0x43')](_0x3c9d24[_0xffa6('0x37')],_0x220772[_0xffa6('0x39')]),_0x1bedf4);if(_0x3c9d24[_0xffa6('0x37')]['filter']){_0x2fd39d[_0xffa6('0x42')]=_['merge'](_0x2fd39d[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x1bedf4,function(_0x59bc37){if(_0x59bc37[_0xffa6('0x34')]!==_0xffa6('0x44')){var _0x5943b4={};_0x5943b4[_0x59bc37['name']]={'$like':'%'+_0x3c9d24[_0xffa6('0x37')][_0xffa6('0x45')]+'%'};return _0x5943b4;}})});}_0x2fd39d=_['merge']({},_0x2fd39d,_0x3c9d24[_0xffa6('0x46')]);var _0x469e03={'where':_0x2fd39d[_0xffa6('0x42')]};return db[_0xffa6('0x32')][_0xffa6('0x23')](_0x469e03)[_0xffa6('0x29')](function(_0x2949a5){_0x29a578[_0xffa6('0x23')]=_0x2949a5;if(_0x3c9d24[_0xffa6('0x37')]['includeAll']){_0x2fd39d[_0xffa6('0x47')]=[{'all':!![]}];}return db[_0xffa6('0x32')]['findAll'](_0x2fd39d);})[_0xffa6('0x29')](function(_0x235bc3){_0x29a578[_0xffa6('0x48')]=_0x235bc3;return _0x29a578;})[_0xffa6('0x29')](respondWithFilteredResult(_0x245507,_0x2fd39d))[_0xffa6('0x49')](handleError(_0x245507,null));};exports[_0xffa6('0x4a')]=function(_0x36ff8e,_0x4a820b){var _0x247624={'raw':!![],'where':{'id':_0x36ff8e[_0xffa6('0x4b')]['id']}},_0x5e714c={};_0x5e714c[_0xffa6('0x36')]=_['keys'](db['FaxQueue']['rawAttributes']);_0x5e714c['query']=_[_0xffa6('0x38')](_0x36ff8e[_0xffa6('0x37')]);_0x5e714c[_0xffa6('0x39')]=_['intersection'](_0x5e714c[_0xffa6('0x36')],_0x5e714c[_0xffa6('0x37')]);_0x247624[_0xffa6('0x3a')]=_[_0xffa6('0x3b')](_0x5e714c[_0xffa6('0x36')],qs[_0xffa6('0x3c')](_0x36ff8e[_0xffa6('0x37')][_0xffa6('0x3c')]));_0x247624[_0xffa6('0x3a')]=_0x247624[_0xffa6('0x3a')][_0xffa6('0x3d')]?_0x247624[_0xffa6('0x3a')]:_0x5e714c[_0xffa6('0x36')];if(_0x36ff8e[_0xffa6('0x37')]['includeAll']){_0x247624[_0xffa6('0x47')]=[{'all':!![]}];}_0x247624=_[_0xffa6('0x4c')]({},_0x247624,_0x36ff8e['options']);return db[_0xffa6('0x32')]['find'](_0x247624)['then'](handleEntityNotFound(_0x4a820b,null))[_0xffa6('0x29')](respondWithResult(_0x4a820b,null))[_0xffa6('0x49')](handleError(_0x4a820b,null));};exports[_0xffa6('0x4d')]=function(_0x42aab6,_0xaad13f){return db[_0xffa6('0x32')][_0xffa6('0x4d')](_0x42aab6[_0xffa6('0x4e')],{})[_0xffa6('0x29')](function(_0x4767f8){var _0x1b55d2=_0x42aab6['user']['get']({'plain':!![]});if(!_0x1b55d2)throw new Error(_0xffa6('0x4f'));if(_0x1b55d2[_0xffa6('0x50')]===_0xffa6('0x51')){var _0x3236ce=_0x4767f8['get']({'plain':!![]});var _0xac5b32='FaxQueues';return db[_0xffa6('0x52')][_0xffa6('0x53')]({'where':{'name':_0xac5b32,'userProfileId':_0x1b55d2[_0xffa6('0x54')]},'raw':!![]})['then'](function(_0x3655dd){if(_0x3655dd&&_0x3655dd[_0xffa6('0x55')]===0x0){return db[_0xffa6('0x2c')][_0xffa6('0x4d')]({'name':_0x3236ce[_0xffa6('0x2f')],'resourceId':_0x3236ce['id'],'type':_0x3655dd[_0xffa6('0x2f')],'sectionId':_0x3655dd['id']},{})[_0xffa6('0x29')](function(){return _0x4767f8;});}else{return _0x4767f8;}})[_0xffa6('0x49')](function(_0x40c417){logger[_0xffa6('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x40c417);throw _0x40c417;});}return _0x4767f8;})[_0xffa6('0x29')](respondWithResult(_0xaad13f,0xc9))[_0xffa6('0x49')](handleError(_0xaad13f,null));};exports[_0xffa6('0x28')]=function(_0x3405ea,_0x247bbd){if(_0x3405ea[_0xffa6('0x4e')]['id']){delete _0x3405ea[_0xffa6('0x4e')]['id'];}return db['FaxQueue'][_0xffa6('0x53')]({'where':{'id':_0x3405ea[_0xffa6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x247bbd,null))[_0xffa6('0x29')](saveUpdates(_0x3405ea[_0xffa6('0x4e')],null))[_0xffa6('0x29')](respondWithResult(_0x247bbd,null))['catch'](handleError(_0x247bbd,null));};exports[_0xffa6('0x2a')]=function(_0xf9a298,_0x198858){return db[_0xffa6('0x32')][_0xffa6('0x53')]({'where':{'id':_0xf9a298[_0xffa6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x198858,null))[_0xffa6('0x29')](removeEntity(_0x198858,null))[_0xffa6('0x49')](handleError(_0x198858,null));};exports[_0xffa6('0x56')]=function(_0x46f14f,_0xd001ad){return db[_0xffa6('0x32')][_0xffa6('0x56')]()[_0xffa6('0x29')](respondWithResult(_0xd001ad,null))[_0xffa6('0x49')](handleError(_0xd001ad,null));};exports[_0xffa6('0x57')]=function(_0x9bbb62,_0xfbb0b8,_0x2664d9){var _0x41c5bc={'raw':!![],'where':{}},_0xb3e0c7={},_0x2a5e71;return db[_0xffa6('0x32')][_0xffa6('0x58')]({'where':{'id':_0x9bbb62[_0xffa6('0x4b')]['id']}})['then'](handleEntityNotFound(_0xfbb0b8,null))[_0xffa6('0x29')](function(_0xccf57a){if(_0xccf57a){_0x2a5e71=_0xccf57a['get']({'plain':!![]});_0xb3e0c7['model']=_[_0xffa6('0x38')](db[_0xffa6('0x59')][_0xffa6('0x5a')]);_0xb3e0c7[_0xffa6('0x37')]=_[_0xffa6('0x38')](_0x9bbb62[_0xffa6('0x37')]);_0xb3e0c7[_0xffa6('0x39')]=_['intersection'](_0xb3e0c7['model'],_0xb3e0c7['query']);_0x41c5bc['attributes']=_[_0xffa6('0x3b')](_0xb3e0c7[_0xffa6('0x36')],qs[_0xffa6('0x3c')](_0x9bbb62[_0xffa6('0x37')]['fields']));_0x41c5bc[_0xffa6('0x3a')]=_0x41c5bc[_0xffa6('0x3a')][_0xffa6('0x3d')]?_0x41c5bc[_0xffa6('0x3a')]:_0xb3e0c7[_0xffa6('0x36')];if(!_0x9bbb62[_0xffa6('0x37')]['hasOwnProperty'](_0xffa6('0x3f'))){_0x41c5bc[_0xffa6('0x22')]=qs[_0xffa6('0x22')](_0x9bbb62[_0xffa6('0x37')][_0xffa6('0x22')]);_0x41c5bc[_0xffa6('0x20')]=qs['offset'](_0x9bbb62['query']['offset']);}_0x41c5bc[_0xffa6('0x40')]=qs[_0xffa6('0x41')](_0x9bbb62[_0xffa6('0x37')][_0xffa6('0x41')]);_0x41c5bc[_0xffa6('0x42')]=qs[_0xffa6('0x39')](_['pick'](_0x9bbb62[_0xffa6('0x37')],_0xb3e0c7[_0xffa6('0x39')]));_0x41c5bc[_0xffa6('0x42')][_0xffa6('0x5b')]=_0xccf57a['id'];if(_0x9bbb62[_0xffa6('0x37')][_0xffa6('0x45')]){_0x41c5bc[_0xffa6('0x42')]=_['merge'](_0x41c5bc[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x41c5bc[_0xffa6('0x3a')],function(_0x14c224){var _0x406f20={};_0x406f20[_0x14c224]={'$like':'%'+_0x9bbb62[_0xffa6('0x37')][_0xffa6('0x45')]+'%'};return _0x406f20;})});}_0x41c5bc=_[_0xffa6('0x4c')]({},_0x41c5bc,_0x9bbb62['options']);return db[_0xffa6('0x59')]['findAll'](_0x41c5bc);}})['then'](function(_0x36b7a2){if(_0x36b7a2){return db[_0xffa6('0x5c')][_0xffa6('0x5d')]({'where':{'id':_[_0xffa6('0x31')](_0x36b7a2,_0xffa6('0x5e')),'role':_0xffa6('0x5f')},'attributes':['id',_0xffa6('0x2f'),_0xffa6('0x60'),_0xffa6('0x61'),_0xffa6('0x62')]});}})[_0xffa6('0x29')](function(_0x5bb589){if(_0x5bb589){return{'count':_0x5bb589[_0xffa6('0x23')],'rows':_['map'](_0x5bb589[_0xffa6('0x48')],function(_0x3aaaa9){return{'membername':_0x3aaaa9['name'],'UserId':_0x3aaaa9['id'],'queue_name':_0x2a5e71['name'],'FaxQueueId':_0x2a5e71['id'],'interface':util['format']('%s/%s',_0xffa6('0x63'),_0x3aaaa9[_0xffa6('0x2f')]),'penalty':0x0,'paused':_0x3aaaa9[_0xffa6('0x60')],'createdAt':_0x3aaaa9['createdAt'],'updatedAt':_0x3aaaa9[_0xffa6('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xfbb0b8,_0x41c5bc))[_0xffa6('0x49')](handleError(_0xfbb0b8,null));};exports['getTeams']=function(_0x45cd87,_0x175750,_0x367770){var _0x58aadc={};var _0x3292c0={};var _0x5bedd4;var _0xac6ccb;return db[_0xffa6('0x32')][_0xffa6('0x58')]({'where':{'id':_0x45cd87['params']['id']}})[_0xffa6('0x29')](handleEntityNotFound(_0x175750,null))[_0xffa6('0x29')](function(_0x2f9285){if(_0x2f9285){_0x5bedd4=_0x2f9285;_0x3292c0['model']=_[_0xffa6('0x38')](db[_0xffa6('0x64')][_0xffa6('0x5a')]);_0x3292c0['query']=_[_0xffa6('0x38')](_0x45cd87[_0xffa6('0x37')]);_0x3292c0[_0xffa6('0x39')]=_['intersection'](_0x3292c0[_0xffa6('0x36')],_0x3292c0[_0xffa6('0x37')]);_0x58aadc['attributes']=_[_0xffa6('0x3b')](_0x3292c0[_0xffa6('0x36')],qs[_0xffa6('0x3c')](_0x45cd87[_0xffa6('0x37')][_0xffa6('0x3c')]));_0x58aadc[_0xffa6('0x3a')]=_0x58aadc[_0xffa6('0x3a')][_0xffa6('0x3d')]?_0x58aadc[_0xffa6('0x3a')]:_0x3292c0[_0xffa6('0x36')];_0x58aadc['order']=qs['sort'](_0x45cd87['query'][_0xffa6('0x41')]);_0x58aadc[_0xffa6('0x42')]=qs['filters'](_[_0xffa6('0x43')](_0x45cd87[_0xffa6('0x37')],_0x3292c0[_0xffa6('0x39')]));if(_0x45cd87[_0xffa6('0x37')][_0xffa6('0x45')]){_0x58aadc[_0xffa6('0x42')]=_['merge'](_0x58aadc[_0xffa6('0x42')],{'$or':_['map'](_0x58aadc[_0xffa6('0x3a')],function(_0x4eaabf){var _0x5abc31={};_0x5abc31[_0x4eaabf]={'$like':'%'+_0x45cd87[_0xffa6('0x37')][_0xffa6('0x45')]+'%'};return _0x5abc31;})});}_0x58aadc=_[_0xffa6('0x4c')]({},_0x58aadc,_0x45cd87[_0xffa6('0x46')]);return _0x5bedd4['getTeams'](_0x58aadc);}})[_0xffa6('0x29')](function(_0x2a1f24){if(_0x2a1f24){_0xac6ccb=_0x2a1f24['length'];if(!_0x45cd87[_0xffa6('0x37')]['hasOwnProperty'](_0xffa6('0x3f'))){_0x58aadc[_0xffa6('0x22')]=qs['limit'](_0x45cd87[_0xffa6('0x37')][_0xffa6('0x22')]);_0x58aadc[_0xffa6('0x20')]=qs[_0xffa6('0x20')](_0x45cd87[_0xffa6('0x37')]['offset']);}return _0x5bedd4[_0xffa6('0x65')](_0x58aadc);}})[_0xffa6('0x29')](function(_0x1fca9a){if(_0x1fca9a){return _0x1fca9a?{'count':_0xac6ccb,'rows':_0x1fca9a}:null;}})[_0xffa6('0x29')](respondWithResult(_0x175750,null))[_0xffa6('0x49')](handleError(_0x175750,null));};exports[_0xffa6('0x66')]=function(_0x3993b8,_0x3a933d,_0x5e24b6){var _0x2b6fc3=_0x3993b8[_0xffa6('0x4e')][_0xffa6('0x67')];return db['Team']['findAll']({'where':{'id':_0x2b6fc3},'attributes':['id'],'include':[{'model':db[_0xffa6('0x5c')],'as':_0xffa6('0x68'),'attributes':['id',_0xffa6('0x2f'),_0xffa6('0x69'),'voicePause',_0xffa6('0x6a')],'raw':!![]}]})['then'](function(_0x4fe1c0){if(_0x4fe1c0){var _0x3a915a=_[_0xffa6('0x6b')](_0x4fe1c0,function(_0x296ecd){var _0x2ca592=_0x296ecd['get']({'plain':!![]});return _0x2ca592[_0xffa6('0x68')];});return db[_0xffa6('0x32')][_0xffa6('0x53')]({'where':{'id':_0x3993b8[_0xffa6('0x4b')]['id']}})[_0xffa6('0x29')](function(_0x151bbf){return db['sequelize']['transaction'](function(_0x299831){return _0x151bbf['addTeams'](_0x2b6fc3,{'transaction':_0x299831})[_0xffa6('0x29')](function(){return BPromise[_0xffa6('0x6c')](_0x3a915a,function(_0x14e029){return db[_0xffa6('0x59')]['findOrCreate']({'where':{'UserId':_0x14e029['id'],'FaxQueueId':_0x3993b8[_0xffa6('0x4b')]['id']},'transaction':_0x299831});});})[_0xffa6('0x29')](function(){_0x3a915a[_0xffa6('0x6d')](function(_0x5e5e01){socket[_0xffa6('0x6e')](_0xffa6('0x6f'),{'UserId':_0x5e5e01['id'],'FaxQueueId':_0x151bbf['id']});});});});});}})[_0xffa6('0x29')](respondWithStatusCode(_0x3a933d,null))['catch'](handleError(_0x3a933d,null));};exports['removeTeams']=function(_0x7358ce,_0x176b6a,_0x4917c7){return db[_0xffa6('0x64')]['findAll']({'where':{'id':_0x7358ce[_0xffa6('0x37')][_0xffa6('0x67')]},'attributes':['id'],'include':[{'model':db[_0xffa6('0x5c')],'as':_0xffa6('0x68'),'attributes':['id'],'raw':!![]}]})[_0xffa6('0x29')](handleEntityNotFound(_0x176b6a,null))['then'](function(_0x359669){var _0x4fdf47=_[_0xffa6('0x31')](_0x359669,'id');var _0x440bb7=[];var _0x1709b1=[];var _0x385295=squel[_0xffa6('0x70')]();_0x385295[_0xffa6('0x71')](_0xffa6('0x72'))[_0xffa6('0x73')](_0xffa6('0x74'),'tq')['join'](_0xffa6('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xffa6('0x42')](_0xffa6('0x76'),_0x7358ce['params']['id']);for(var _0x134cfd=0x0;_0x134cfd<_0x359669['length'];_0x134cfd+=0x1){let _0x549418=_0x359669[_0x134cfd];for(var _0x26ba9a=0x0;_0x26ba9a<_0x549418[_0xffa6('0x68')][_0xffa6('0x3d')];_0x26ba9a+=0x1){let _0x1ffa04=_0x549418[_0xffa6('0x68')][_0x26ba9a];var _0x1fc8db=_0x385295[_0xffa6('0x77')]();_0x1fc8db[_0xffa6('0x42')](_0xffa6('0x78'),_0x1ffa04['id']);_0x1709b1['push'](db['sequelize'][_0xffa6('0x37')](_0x1fc8db[_0xffa6('0x79')](),{'type':db['sequelize'][_0xffa6('0x7a')][_0xffa6('0x7b')]})[_0xffa6('0x29')](function(_0x34dd31){if(_0x34dd31[_0xffa6('0x3d')]===0x1){return _0x1ffa04['id'];}else{var _0x3344b7=_[_0xffa6('0x7c')](_[_0xffa6('0x31')](_0x34dd31,_0xffa6('0x7d')),function(_0x46970a){return _[_0xffa6('0x7e')](_0x4fdf47,_0x46970a);});if(_0x3344b7){return _0x1ffa04['id'];}}}));}}return BPromise[_0xffa6('0x7f')](_0x1709b1)['then'](function(_0x364500){_0x440bb7=_(_0x440bb7)['union'](_0x364500)[_0xffa6('0x80')]()[_0xffa6('0x81')]();return db[_0xffa6('0x32')][_0xffa6('0x53')]({'where':{'id':_0x7358ce[_0xffa6('0x4b')]['id']}})['then'](function(_0x16a80a){return db[_0xffa6('0x82')][_0xffa6('0x83')](function(_0x2d5343){return _0x16a80a['removeTeams'](_0x7358ce[_0xffa6('0x37')][_0xffa6('0x67')],{'transaction':_0x2d5343})[_0xffa6('0x29')](function(){if(!_[_0xffa6('0x84')](_0x440bb7)){return _0x16a80a['removeAgents'](_0x440bb7,{'transaction':_0x2d5343});}})['then'](function(){_0x440bb7[_0xffa6('0x6d')](function(_0x26a392){socket[_0xffa6('0x6e')]('userFaxQueue:remove',{'UserId':_0x26a392,'FaxQueueId':_0x16a80a['id']});});});});});});})['then'](respondWithStatusCode(_0x176b6a,null))[_0xffa6('0x49')](handleError(_0x176b6a,null));};exports[_0xffa6('0x85')]=function(_0xab7837,_0x2bc197,_0x7b08ca){return db[_0xffa6('0x32')][_0xffa6('0x53')]({'where':{'id':_0xab7837[_0xffa6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2bc197,null))[_0xffa6('0x29')](function(_0x25345b){if(_0x25345b){return _0x25345b[_0xffa6('0x85')](_0xab7837[_0xffa6('0x4e')][_0xffa6('0x67')],_[_0xffa6('0x86')](_0xab7837[_0xffa6('0x4e')],['ids','id'])||{})['spread'](function(_0x424321){for(var _0x358f2a=0x0;_0x358f2a<_0xab7837[_0xffa6('0x4e')][_0xffa6('0x67')][_0xffa6('0x3d')];_0x358f2a+=0x1){socket[_0xffa6('0x6e')]('userFaxQueue:save',{'UserId':Number(_0xab7837[_0xffa6('0x4e')][_0xffa6('0x67')][_0x358f2a]),'FaxQueueId':Number(_0xab7837[_0xffa6('0x4b')]['id'])});}return _0x424321;});}})['then'](respondWithResult(_0x2bc197,null))[_0xffa6('0x49')](handleError(_0x2bc197,null));};exports['removeAgents']=function(_0xfb6007,_0x88db20,_0x6ac36e){return db[_0xffa6('0x32')][_0xffa6('0x53')]({'where':{'id':_0xfb6007[_0xffa6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x88db20,null))[_0xffa6('0x29')](function(_0x27d0dc){if(_0x27d0dc){return _0x27d0dc[_0xffa6('0x87')](_0xfb6007[_0xffa6('0x37')][_0xffa6('0x67')])[_0xffa6('0x29')](function(){if(_[_0xffa6('0x88')](_0xfb6007[_0xffa6('0x37')][_0xffa6('0x67')])){for(var _0x2372fd=0x0;_0x2372fd<_0xfb6007['query'][_0xffa6('0x67')][_0xffa6('0x3d')];_0x2372fd+=0x1){socket[_0xffa6('0x6e')](_0xffa6('0x89'),{'UserId':Number(_0xfb6007['query']['ids'][_0x2372fd]),'FaxQueueId':Number(_0xfb6007[_0xffa6('0x4b')]['id'])});}}else{socket['emit'](_0xffa6('0x89'),{'UserId':Number(_0xfb6007[_0xffa6('0x37')][_0xffa6('0x67')]),'FaxQueueId':Number(_0xfb6007[_0xffa6('0x4b')]['id'])});}});}})[_0xffa6('0x29')](respondWithStatusCode(_0x88db20,null))[_0xffa6('0x49')](handleError(_0x88db20,null));};exports['getAgents']=function(_0x41925a,_0x377b56,_0x438569){var _0x5625f1={};var _0x1347a0={};var _0x30a25c;var _0x4e6994;return db['FaxQueue']['findOne']({'where':{'id':_0x41925a['params']['id']}})['then'](handleEntityNotFound(_0x377b56,null))[_0xffa6('0x29')](function(_0x53f667){if(_0x53f667){_0x30a25c=_0x53f667;_0x1347a0[_0xffa6('0x36')]=_[_0xffa6('0x38')](db[_0xffa6('0x5c')][_0xffa6('0x5a')]);_0x1347a0[_0xffa6('0x37')]=_[_0xffa6('0x38')](_0x41925a[_0xffa6('0x37')]);_0x1347a0[_0xffa6('0x39')]=_[_0xffa6('0x3b')](_0x1347a0['model'],_0x1347a0['query']);_0x5625f1['attributes']=_[_0xffa6('0x3b')](_0x1347a0['model'],qs[_0xffa6('0x3c')](_0x41925a[_0xffa6('0x37')][_0xffa6('0x3c')]));_0x5625f1['attributes']=_0x5625f1['attributes']['length']?_0x5625f1[_0xffa6('0x3a')]:_0x1347a0[_0xffa6('0x36')];_0x5625f1[_0xffa6('0x40')]=qs[_0xffa6('0x41')](_0x41925a[_0xffa6('0x37')][_0xffa6('0x41')]);_0x5625f1[_0xffa6('0x42')]=qs[_0xffa6('0x39')](_[_0xffa6('0x43')](_0x41925a[_0xffa6('0x37')],_0x1347a0[_0xffa6('0x39')]));if(_0x41925a[_0xffa6('0x37')][_0xffa6('0x45')]){_0x5625f1[_0xffa6('0x42')]=_[_0xffa6('0x4c')](_0x5625f1[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x5625f1[_0xffa6('0x3a')],function(_0x27991c){var _0x46f2a2={};_0x46f2a2[_0x27991c]={'$like':'%'+_0x41925a[_0xffa6('0x37')][_0xffa6('0x45')]+'%'};return _0x46f2a2;})});}_0x5625f1=_[_0xffa6('0x4c')]({},_0x5625f1,_0x41925a['options']);return _0x30a25c['getAgents'](_0x5625f1);}})[_0xffa6('0x29')](function(_0x136537){if(_0x136537){_0x4e6994=_0x136537[_0xffa6('0x3d')];if(!_0x41925a['query'][_0xffa6('0x3e')](_0xffa6('0x3f'))){_0x5625f1[_0xffa6('0x22')]=qs[_0xffa6('0x22')](_0x41925a[_0xffa6('0x37')][_0xffa6('0x22')]);_0x5625f1[_0xffa6('0x20')]=qs[_0xffa6('0x20')](_0x41925a[_0xffa6('0x37')][_0xffa6('0x20')]);}return _0x30a25c[_0xffa6('0x8a')](_0x5625f1);}})['then'](function(_0x155ced){if(_0x155ced){return _0x155ced?{'count':_0x4e6994,'rows':_0x155ced}:null;}})['then'](respondWithResult(_0x377b56,null))['catch'](handleError(_0x377b56,null));};
\ No newline at end of file
+var _0xefb7=['compact','value','sequelize','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','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','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','FaxQueues','UserProfileResource','end','stack','name','send','index','map','fieldName','key','query','intersection','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','FaxQueue','findAll','rows','catch','show','params','keys','fields','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','rawAttributes','FaxQueueId','findAndCountAll','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','Agents','interface','transaction','forEach','emit','userFaxQueue:save','removeTeams','ids','User','select','field','tq.TeamId','from','team_has_fax_queues','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union'];(function(_0x48ef78,_0x26c9b4){var _0x56669d=function(_0x32aa23){while(--_0x32aa23){_0x48ef78['push'](_0x48ef78['shift']());}};_0x56669d(++_0x26c9b4);}(_0xefb7,0x1be));var _0x7efb=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0xefb7[_0x1dbaf7];return _0x593f05;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7efb('0x0'));var jsonpatch=require(_0x7efb('0x1'));var rp=require(_0x7efb('0x2'));var moment=require(_0x7efb('0x3'));var BPromise=require(_0x7efb('0x4'));var Mustache=require('mustache');var util=require(_0x7efb('0x5'));var path=require('path');var sox=require(_0x7efb('0x6'));var csv=require(_0x7efb('0x7'));var ejs=require(_0x7efb('0x8'));var fs=require('fs');var fs_extra=require(_0x7efb('0x9'));var _=require(_0x7efb('0xa'));var squel=require('squel');var crypto=require(_0x7efb('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7efb('0xc'));var toCsv=require(_0x7efb('0x7'));var querystring=require(_0x7efb('0xd'));var Papa=require(_0x7efb('0xe'));var Redis=require(_0x7efb('0xf'));var authService=require(_0x7efb('0x10'));var qs=require(_0x7efb('0x11'));var as=require(_0x7efb('0x12'));var hardwareService=require(_0x7efb('0x13'));var logger=require(_0x7efb('0x14'))(_0x7efb('0x15'));var utils=require(_0x7efb('0x16'));var config=require(_0x7efb('0x17'));var licenseUtil=require(_0x7efb('0x18'));var db=require(_0x7efb('0x19'))['db'];config[_0x7efb('0x1a')]=_[_0x7efb('0x1b')](config[_0x7efb('0x1a')],{'host':_0x7efb('0x1c'),'port':0x18eb});var socket=require(_0x7efb('0x1d'))(new Redis(config['redis']));require(_0x7efb('0x1e'))['register'](socket);function respondWithStatusCode(_0x1f0592,_0x1160f7){_0x1160f7=_0x1160f7||0xcc;return function(_0x477f58){if(_0x477f58){return _0x1f0592[_0x7efb('0x1f')](_0x1160f7);}return _0x1f0592[_0x7efb('0x20')](_0x1160f7)['end']();};}function respondWithResult(_0x334ee6,_0x1d5397){_0x1d5397=_0x1d5397||0xc8;return function(_0x23929a){if(_0x23929a){return _0x334ee6[_0x7efb('0x20')](_0x1d5397)['json'](_0x23929a);}};}function respondWithFilteredResult(_0x2e0cd5,_0x111d05){return function(_0xa9cd89){if(_0xa9cd89){var _0x3fd885=typeof _0x111d05[_0x7efb('0x21')]===_0x7efb('0x22')&&typeof _0x111d05[_0x7efb('0x23')]===_0x7efb('0x22');var _0x8fa9cf=_0xa9cd89[_0x7efb('0x24')];var _0x5b89c6=_0x3fd885?0x0:_0x111d05[_0x7efb('0x21')];var _0x56bf7c=_0x3fd885?_0xa9cd89['count']:_0x111d05['offset']+_0x111d05[_0x7efb('0x23')];var _0x5a66cc;if(_0x56bf7c>=_0x8fa9cf){_0x56bf7c=_0x8fa9cf;_0x5a66cc=0xc8;}else{_0x5a66cc=0xce;}_0x2e0cd5[_0x7efb('0x20')](_0x5a66cc);return _0x2e0cd5[_0x7efb('0x25')](_0x7efb('0x26'),_0x5b89c6+'-'+_0x56bf7c+'/'+_0x8fa9cf)[_0x7efb('0x27')](_0xa9cd89);}return null;};}function patchUpdates(_0x4187bd){return function(_0x3a447c){try{jsonpatch[_0x7efb('0x28')](_0x3a447c,_0x4187bd,!![]);}catch(_0x40e2e3){return BPromise[_0x7efb('0x29')](_0x40e2e3);}return _0x3a447c[_0x7efb('0x2a')]();};}function saveUpdates(_0x39b15c,_0x2647e9){return function(_0x8c13f9){if(_0x8c13f9){return _0x8c13f9[_0x7efb('0x2b')](_0x39b15c)[_0x7efb('0x2c')](function(_0x4357a8){return _0x4357a8;});}return null;};}function removeEntity(_0x13c121,_0x4fdd4d){return function(_0x4b51ba){if(_0x4b51ba){return _0x4b51ba[_0x7efb('0x2d')]()[_0x7efb('0x2c')](function(){var _0x379599=_0x4b51ba[_0x7efb('0x2e')]({'plain':!![]});var _0x4f777b=_0x7efb('0x2f');return db[_0x7efb('0x30')][_0x7efb('0x2d')]({'where':{'type':_0x4f777b,'resourceId':_0x379599['id']}})[_0x7efb('0x2c')](function(){return _0x4b51ba;});})['then'](function(){_0x13c121[_0x7efb('0x20')](0xcc)[_0x7efb('0x31')]();});}};}function handleEntityNotFound(_0x41c486,_0x330a82){return function(_0x430be6){if(!_0x430be6){_0x41c486[_0x7efb('0x1f')](0x194);}return _0x430be6;};}function handleError(_0x56860e,_0x3aea02){_0x3aea02=_0x3aea02||0x1f4;return function(_0x39caa6){logger['error'](_0x39caa6[_0x7efb('0x32')]);if(_0x39caa6[_0x7efb('0x33')]){delete _0x39caa6[_0x7efb('0x33')];}_0x56860e['status'](_0x3aea02)[_0x7efb('0x34')](_0x39caa6);};}exports[_0x7efb('0x35')]=function(_0x37f01c,_0x91f9){var _0x5873e6={},_0x3ac4c9={},_0x5ca62f={'count':0x0,'rows':[]};var _0x30925b=_[_0x7efb('0x36')](db['FaxQueue']['rawAttributes'],function(_0x3b1453){return{'name':_0x3b1453[_0x7efb('0x37')],'type':_0x3b1453['type'][_0x7efb('0x38')]};});_0x3ac4c9['model']=_['map'](_0x30925b,_0x7efb('0x33'));_0x3ac4c9[_0x7efb('0x39')]=_['keys'](_0x37f01c[_0x7efb('0x39')]);_0x3ac4c9['filters']=_[_0x7efb('0x3a')](_0x3ac4c9['model'],_0x3ac4c9[_0x7efb('0x39')]);_0x5873e6[_0x7efb('0x3b')]=_[_0x7efb('0x3a')](_0x3ac4c9['model'],qs['fields'](_0x37f01c[_0x7efb('0x39')]['fields']));_0x5873e6['attributes']=_0x5873e6[_0x7efb('0x3b')][_0x7efb('0x3c')]?_0x5873e6['attributes']:_0x3ac4c9[_0x7efb('0x3d')];if(!_0x37f01c['query'][_0x7efb('0x3e')](_0x7efb('0x3f'))){_0x5873e6['limit']=qs[_0x7efb('0x23')](_0x37f01c['query'][_0x7efb('0x23')]);_0x5873e6[_0x7efb('0x21')]=qs[_0x7efb('0x21')](_0x37f01c[_0x7efb('0x39')][_0x7efb('0x21')]);}_0x5873e6[_0x7efb('0x40')]=qs[_0x7efb('0x41')](_0x37f01c[_0x7efb('0x39')]['sort']);_0x5873e6[_0x7efb('0x42')]=qs[_0x7efb('0x43')](_[_0x7efb('0x44')](_0x37f01c[_0x7efb('0x39')],_0x3ac4c9[_0x7efb('0x43')]),_0x30925b);if(_0x37f01c[_0x7efb('0x39')][_0x7efb('0x45')]){_0x5873e6[_0x7efb('0x42')]=_[_0x7efb('0x46')](_0x5873e6[_0x7efb('0x42')],{'$or':_[_0x7efb('0x36')](_0x30925b,function(_0xefa1ca){if(_0xefa1ca[_0x7efb('0x47')]!==_0x7efb('0x48')){var _0x4db2bf={};_0x4db2bf[_0xefa1ca[_0x7efb('0x33')]]={'$like':'%'+_0x37f01c[_0x7efb('0x39')][_0x7efb('0x45')]+'%'};return _0x4db2bf;}})});}_0x5873e6=_[_0x7efb('0x46')]({},_0x5873e6,_0x37f01c[_0x7efb('0x49')]);var _0x11d391={'where':_0x5873e6[_0x7efb('0x42')]};return db['FaxQueue']['count'](_0x11d391)[_0x7efb('0x2c')](function(_0x157ea8){_0x5ca62f[_0x7efb('0x24')]=_0x157ea8;if(_0x37f01c[_0x7efb('0x39')][_0x7efb('0x4a')]){_0x5873e6[_0x7efb('0x4b')]=[{'all':!![]}];}return db[_0x7efb('0x4c')][_0x7efb('0x4d')](_0x5873e6);})[_0x7efb('0x2c')](function(_0x108b37){_0x5ca62f[_0x7efb('0x4e')]=_0x108b37;return _0x5ca62f;})[_0x7efb('0x2c')](respondWithFilteredResult(_0x91f9,_0x5873e6))[_0x7efb('0x4f')](handleError(_0x91f9,null));};exports[_0x7efb('0x50')]=function(_0x42fc5b,_0x15fdfd){var _0x5b9bf7={'raw':!![],'where':{'id':_0x42fc5b[_0x7efb('0x51')]['id']}},_0x344187={};_0x344187[_0x7efb('0x3d')]=_[_0x7efb('0x52')](db['FaxQueue']['rawAttributes']);_0x344187['query']=_['keys'](_0x42fc5b[_0x7efb('0x39')]);_0x344187[_0x7efb('0x43')]=_['intersection'](_0x344187['model'],_0x344187[_0x7efb('0x39')]);_0x5b9bf7[_0x7efb('0x3b')]=_[_0x7efb('0x3a')](_0x344187[_0x7efb('0x3d')],qs[_0x7efb('0x53')](_0x42fc5b[_0x7efb('0x39')][_0x7efb('0x53')]));_0x5b9bf7['attributes']=_0x5b9bf7[_0x7efb('0x3b')]['length']?_0x5b9bf7[_0x7efb('0x3b')]:_0x344187[_0x7efb('0x3d')];if(_0x42fc5b[_0x7efb('0x39')][_0x7efb('0x4a')]){_0x5b9bf7['include']=[{'all':!![]}];}_0x5b9bf7=_[_0x7efb('0x46')]({},_0x5b9bf7,_0x42fc5b['options']);return db[_0x7efb('0x4c')]['find'](_0x5b9bf7)[_0x7efb('0x2c')](handleEntityNotFound(_0x15fdfd,null))['then'](respondWithResult(_0x15fdfd,null))['catch'](handleError(_0x15fdfd,null));};exports[_0x7efb('0x54')]=function(_0x14d705,_0x4e74d1){return db['FaxQueue'][_0x7efb('0x54')](_0x14d705['body'],{})[_0x7efb('0x2c')](function(_0x12f58e){var _0x4df54a=_0x14d705[_0x7efb('0x55')][_0x7efb('0x2e')]({'plain':!![]});if(!_0x4df54a)throw new Error(_0x7efb('0x56'));if(_0x4df54a[_0x7efb('0x57')]===_0x7efb('0x55')){var _0x2811a5=_0x12f58e[_0x7efb('0x2e')]({'plain':!![]});var _0x5eb562='FaxQueues';return db[_0x7efb('0x58')][_0x7efb('0x59')]({'where':{'name':_0x5eb562,'userProfileId':_0x4df54a[_0x7efb('0x5a')]},'raw':!![]})[_0x7efb('0x2c')](function(_0x413a13){if(_0x413a13&&_0x413a13[_0x7efb('0x5b')]===0x0){return db[_0x7efb('0x30')]['create']({'name':_0x2811a5[_0x7efb('0x33')],'resourceId':_0x2811a5['id'],'type':_0x413a13[_0x7efb('0x33')],'sectionId':_0x413a13['id']},{})[_0x7efb('0x2c')](function(){return _0x12f58e;});}else{return _0x12f58e;}})[_0x7efb('0x4f')](function(_0x3e94cb){logger['error'](_0x7efb('0x5c'),_0x3e94cb);throw _0x3e94cb;});}return _0x12f58e;})['then'](respondWithResult(_0x4e74d1,0xc9))['catch'](handleError(_0x4e74d1,null));};exports['update']=function(_0x3f426d,_0x53b885){if(_0x3f426d[_0x7efb('0x5d')]['id']){delete _0x3f426d['body']['id'];}return db[_0x7efb('0x4c')]['find']({'where':{'id':_0x3f426d[_0x7efb('0x51')]['id']}})[_0x7efb('0x2c')](handleEntityNotFound(_0x53b885,null))[_0x7efb('0x2c')](saveUpdates(_0x3f426d[_0x7efb('0x5d')],null))[_0x7efb('0x2c')](respondWithResult(_0x53b885,null))[_0x7efb('0x4f')](handleError(_0x53b885,null));};exports['destroy']=function(_0x48085c,_0x482919){return db[_0x7efb('0x4c')]['find']({'where':{'id':_0x48085c[_0x7efb('0x51')]['id']}})[_0x7efb('0x2c')](handleEntityNotFound(_0x482919,null))[_0x7efb('0x2c')](removeEntity(_0x482919,null))[_0x7efb('0x4f')](handleError(_0x482919,null));};exports[_0x7efb('0x5e')]=function(_0x121e29,_0x441b77){return db['FaxQueue'][_0x7efb('0x5e')]()[_0x7efb('0x2c')](respondWithResult(_0x441b77,null))['catch'](handleError(_0x441b77,null));};exports[_0x7efb('0x5f')]=function(_0x24d24f,_0x5c194a,_0x2ac72a){var _0x5ad677={'raw':!![],'where':{}},_0x59b38e={},_0x2b8ae1;return db['FaxQueue'][_0x7efb('0x60')]({'where':{'id':_0x24d24f[_0x7efb('0x51')]['id']}})[_0x7efb('0x2c')](handleEntityNotFound(_0x5c194a,null))[_0x7efb('0x2c')](function(_0x3b76b9){if(_0x3b76b9){_0x2b8ae1=_0x3b76b9[_0x7efb('0x2e')]({'plain':!![]});_0x59b38e['model']=_[_0x7efb('0x52')](db['UserFaxQueue'][_0x7efb('0x61')]);_0x59b38e['query']=_[_0x7efb('0x52')](_0x24d24f[_0x7efb('0x39')]);_0x59b38e[_0x7efb('0x43')]=_[_0x7efb('0x3a')](_0x59b38e['model'],_0x59b38e[_0x7efb('0x39')]);_0x5ad677[_0x7efb('0x3b')]=_[_0x7efb('0x3a')](_0x59b38e[_0x7efb('0x3d')],qs[_0x7efb('0x53')](_0x24d24f['query'][_0x7efb('0x53')]));_0x5ad677[_0x7efb('0x3b')]=_0x5ad677[_0x7efb('0x3b')][_0x7efb('0x3c')]?_0x5ad677[_0x7efb('0x3b')]:_0x59b38e[_0x7efb('0x3d')];if(!_0x24d24f[_0x7efb('0x39')][_0x7efb('0x3e')]('nolimit')){_0x5ad677['limit']=qs[_0x7efb('0x23')](_0x24d24f[_0x7efb('0x39')][_0x7efb('0x23')]);_0x5ad677['offset']=qs[_0x7efb('0x21')](_0x24d24f[_0x7efb('0x39')][_0x7efb('0x21')]);}_0x5ad677['order']=qs[_0x7efb('0x41')](_0x24d24f[_0x7efb('0x39')][_0x7efb('0x41')]);_0x5ad677[_0x7efb('0x42')]=qs['filters'](_[_0x7efb('0x44')](_0x24d24f[_0x7efb('0x39')],_0x59b38e[_0x7efb('0x43')]));_0x5ad677[_0x7efb('0x42')][_0x7efb('0x62')]=_0x3b76b9['id'];if(_0x24d24f[_0x7efb('0x39')][_0x7efb('0x45')]){_0x5ad677[_0x7efb('0x42')]=_[_0x7efb('0x46')](_0x5ad677[_0x7efb('0x42')],{'$or':_[_0x7efb('0x36')](_0x5ad677[_0x7efb('0x3b')],function(_0x29db1c){var _0x297ab8={};_0x297ab8[_0x29db1c]={'$like':'%'+_0x24d24f[_0x7efb('0x39')][_0x7efb('0x45')]+'%'};return _0x297ab8;})});}_0x5ad677=_[_0x7efb('0x46')]({},_0x5ad677,_0x24d24f[_0x7efb('0x49')]);return db['UserFaxQueue'][_0x7efb('0x4d')](_0x5ad677);}})['then'](function(_0x1ceb3e){if(_0x1ceb3e){return db['User'][_0x7efb('0x63')]({'where':{'id':_[_0x7efb('0x36')](_0x1ceb3e,'UserId'),'role':_0x7efb('0x64')},'attributes':['id','name',_0x7efb('0x65'),_0x7efb('0x66'),_0x7efb('0x67')]});}})[_0x7efb('0x2c')](function(_0x46e9cd){if(_0x46e9cd){return{'count':_0x46e9cd['count'],'rows':_[_0x7efb('0x36')](_0x46e9cd[_0x7efb('0x4e')],function(_0x597bf5){return{'membername':_0x597bf5[_0x7efb('0x33')],'UserId':_0x597bf5['id'],'queue_name':_0x2b8ae1[_0x7efb('0x33')],'FaxQueueId':_0x2b8ae1['id'],'interface':util[_0x7efb('0x68')](_0x7efb('0x69'),_0x7efb('0x6a'),_0x597bf5[_0x7efb('0x33')]),'penalty':0x0,'paused':_0x597bf5['faxPause'],'createdAt':_0x597bf5[_0x7efb('0x67')],'updatedAt':_0x597bf5['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7efb('0x2c')](respondWithFilteredResult(_0x5c194a,_0x5ad677))['catch'](handleError(_0x5c194a,null));};exports[_0x7efb('0x6b')]=function(_0x277de0,_0x15220c,_0x4f4b0f){var _0xaafa91={};var _0x4ef440={};var _0x37cd38;var _0x2a3952;return db[_0x7efb('0x4c')][_0x7efb('0x60')]({'where':{'id':_0x277de0[_0x7efb('0x51')]['id']}})[_0x7efb('0x2c')](handleEntityNotFound(_0x15220c,null))[_0x7efb('0x2c')](function(_0x4b7aa4){if(_0x4b7aa4){_0x37cd38=_0x4b7aa4;_0x4ef440['model']=_[_0x7efb('0x52')](db[_0x7efb('0x6c')][_0x7efb('0x61')]);_0x4ef440[_0x7efb('0x39')]=_[_0x7efb('0x52')](_0x277de0[_0x7efb('0x39')]);_0x4ef440[_0x7efb('0x43')]=_['intersection'](_0x4ef440['model'],_0x4ef440[_0x7efb('0x39')]);_0xaafa91[_0x7efb('0x3b')]=_[_0x7efb('0x3a')](_0x4ef440[_0x7efb('0x3d')],qs[_0x7efb('0x53')](_0x277de0[_0x7efb('0x39')]['fields']));_0xaafa91[_0x7efb('0x3b')]=_0xaafa91['attributes'][_0x7efb('0x3c')]?_0xaafa91[_0x7efb('0x3b')]:_0x4ef440[_0x7efb('0x3d')];_0xaafa91['order']=qs[_0x7efb('0x41')](_0x277de0['query'][_0x7efb('0x41')]);_0xaafa91[_0x7efb('0x42')]=qs[_0x7efb('0x43')](_[_0x7efb('0x44')](_0x277de0[_0x7efb('0x39')],_0x4ef440[_0x7efb('0x43')]));if(_0x277de0['query'][_0x7efb('0x45')]){_0xaafa91[_0x7efb('0x42')]=_[_0x7efb('0x46')](_0xaafa91[_0x7efb('0x42')],{'$or':_[_0x7efb('0x36')](_0xaafa91[_0x7efb('0x3b')],function(_0x5c57b1){var _0x5579af={};_0x5579af[_0x5c57b1]={'$like':'%'+_0x277de0[_0x7efb('0x39')][_0x7efb('0x45')]+'%'};return _0x5579af;})});}_0xaafa91=_[_0x7efb('0x46')]({},_0xaafa91,_0x277de0['options']);return _0x37cd38['getTeams'](_0xaafa91);}})[_0x7efb('0x2c')](function(_0x18e9ab){if(_0x18e9ab){_0x2a3952=_0x18e9ab[_0x7efb('0x3c')];if(!_0x277de0[_0x7efb('0x39')]['hasOwnProperty'](_0x7efb('0x3f'))){_0xaafa91[_0x7efb('0x23')]=qs[_0x7efb('0x23')](_0x277de0['query'][_0x7efb('0x23')]);_0xaafa91[_0x7efb('0x21')]=qs['offset'](_0x277de0['query']['offset']);}return _0x37cd38[_0x7efb('0x6b')](_0xaafa91);}})[_0x7efb('0x2c')](function(_0x4c9962){if(_0x4c9962){return _0x4c9962?{'count':_0x2a3952,'rows':_0x4c9962}:null;}})[_0x7efb('0x2c')](respondWithResult(_0x15220c,null))[_0x7efb('0x4f')](handleError(_0x15220c,null));};exports[_0x7efb('0x6d')]=function(_0x186b2d,_0x417e3f,_0x47fd8c){var _0x3decd2=_0x186b2d[_0x7efb('0x5d')]['ids'];return db[_0x7efb('0x6c')][_0x7efb('0x4d')]({'where':{'id':_0x3decd2},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7efb('0x6e'),'attributes':['id','name','online','voicePause',_0x7efb('0x6f')],'raw':!![]}]})[_0x7efb('0x2c')](function(_0x1b46df){if(_0x1b46df){var _0x5607f7=_['flatMap'](_0x1b46df,function(_0x33bf23){var _0x4ad1cc=_0x33bf23[_0x7efb('0x2e')]({'plain':!![]});return _0x4ad1cc[_0x7efb('0x6e')];});return db[_0x7efb('0x4c')][_0x7efb('0x59')]({'where':{'id':_0x186b2d['params']['id']}})['then'](function(_0x4f4c32){return db['sequelize'][_0x7efb('0x70')](function(_0x5cfe59){return _0x4f4c32[_0x7efb('0x6d')](_0x3decd2,{'transaction':_0x5cfe59})['then'](function(){return BPromise['each'](_0x5607f7,function(_0x54bec9){return db['UserFaxQueue']['findOrCreate']({'where':{'UserId':_0x54bec9['id'],'FaxQueueId':_0x186b2d['params']['id']},'transaction':_0x5cfe59});});})['then'](function(){_0x5607f7[_0x7efb('0x71')](function(_0x4481b6){socket[_0x7efb('0x72')](_0x7efb('0x73'),{'UserId':_0x4481b6['id'],'FaxQueueId':_0x4f4c32['id']});});});});});}})[_0x7efb('0x2c')](respondWithStatusCode(_0x417e3f,null))['catch'](handleError(_0x417e3f,null));};exports[_0x7efb('0x74')]=function(_0x3d84df,_0x10cb01,_0x41747c){return db[_0x7efb('0x6c')][_0x7efb('0x4d')]({'where':{'id':_0x3d84df[_0x7efb('0x39')][_0x7efb('0x75')]},'attributes':['id'],'include':[{'model':db[_0x7efb('0x76')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x7efb('0x2c')](handleEntityNotFound(_0x10cb01,null))[_0x7efb('0x2c')](function(_0x31dbe3){var _0x160ae4=_[_0x7efb('0x36')](_0x31dbe3,'id');var _0x55e525=[];var _0x52d7a0=[];var _0x29c0d9=squel[_0x7efb('0x77')]();_0x29c0d9[_0x7efb('0x78')](_0x7efb('0x79'))[_0x7efb('0x7a')](_0x7efb('0x7b'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7efb('0x42')]('FaxQueueId\x20=\x20?',_0x3d84df['params']['id']);for(var _0x588852=0x0;_0x588852<_0x31dbe3[_0x7efb('0x3c')];_0x588852+=0x1){let _0x2969d7=_0x31dbe3[_0x588852];for(var _0x4cae7e=0x0;_0x4cae7e<_0x2969d7[_0x7efb('0x6e')][_0x7efb('0x3c')];_0x4cae7e+=0x1){let _0x2c33cc=_0x2969d7[_0x7efb('0x6e')][_0x4cae7e];var _0x5bc4ec=_0x29c0d9[_0x7efb('0x7c')]();_0x5bc4ec[_0x7efb('0x42')](_0x7efb('0x7d'),_0x2c33cc['id']);_0x52d7a0[_0x7efb('0x7e')](db['sequelize'][_0x7efb('0x39')](_0x5bc4ec[_0x7efb('0x7f')](),{'type':db['sequelize'][_0x7efb('0x80')][_0x7efb('0x81')]})[_0x7efb('0x2c')](function(_0x18748e){if(_0x18748e[_0x7efb('0x3c')]===0x1){return _0x2c33cc['id'];}else{var _0x5d251d=_[_0x7efb('0x82')](_[_0x7efb('0x36')](_0x18748e,_0x7efb('0x83')),function(_0x3538f9){return _['includes'](_0x160ae4,_0x3538f9);});if(_0x5d251d){return _0x2c33cc['id'];}}}));}}return BPromise[_0x7efb('0x84')](_0x52d7a0)[_0x7efb('0x2c')](function(_0x244304){_0x55e525=_(_0x55e525)[_0x7efb('0x85')](_0x244304)[_0x7efb('0x86')]()[_0x7efb('0x87')]();return db[_0x7efb('0x4c')][_0x7efb('0x59')]({'where':{'id':_0x3d84df[_0x7efb('0x51')]['id']}})['then'](function(_0x351781){return db[_0x7efb('0x88')][_0x7efb('0x70')](function(_0x440d9b){return _0x351781[_0x7efb('0x74')](_0x3d84df[_0x7efb('0x39')][_0x7efb('0x75')],{'transaction':_0x440d9b})['then'](function(){if(!_[_0x7efb('0x89')](_0x55e525)){return _0x351781[_0x7efb('0x8a')](_0x55e525,{'transaction':_0x440d9b});}})[_0x7efb('0x2c')](function(){_0x55e525[_0x7efb('0x71')](function(_0x486960){socket[_0x7efb('0x72')](_0x7efb('0x8b'),{'UserId':_0x486960,'FaxQueueId':_0x351781['id']});});});});});});})[_0x7efb('0x2c')](respondWithStatusCode(_0x10cb01,null))[_0x7efb('0x4f')](handleError(_0x10cb01,null));};exports[_0x7efb('0x8c')]=function(_0x5b6f44,_0x3ed850,_0x59f8c5){return db[_0x7efb('0x4c')][_0x7efb('0x59')]({'where':{'id':_0x5b6f44[_0x7efb('0x51')]['id']}})[_0x7efb('0x2c')](handleEntityNotFound(_0x3ed850,null))['then'](function(_0x319b34){if(_0x319b34){return _0x319b34[_0x7efb('0x8c')](_0x5b6f44[_0x7efb('0x5d')]['ids'],_[_0x7efb('0x8d')](_0x5b6f44[_0x7efb('0x5d')],['ids','id'])||{})[_0x7efb('0x8e')](function(_0x28440a){for(var _0x597230=0x0;_0x597230<_0x5b6f44[_0x7efb('0x5d')][_0x7efb('0x75')][_0x7efb('0x3c')];_0x597230+=0x1){socket[_0x7efb('0x72')](_0x7efb('0x73'),{'UserId':Number(_0x5b6f44['body'][_0x7efb('0x75')][_0x597230]),'FaxQueueId':Number(_0x5b6f44[_0x7efb('0x51')]['id'])});}return _0x28440a;});}})[_0x7efb('0x2c')](respondWithResult(_0x3ed850,null))[_0x7efb('0x4f')](handleError(_0x3ed850,null));};exports[_0x7efb('0x8a')]=function(_0x13ed13,_0x43a1d2,_0x51e88a){return db[_0x7efb('0x4c')][_0x7efb('0x59')]({'where':{'id':_0x13ed13[_0x7efb('0x51')]['id']}})[_0x7efb('0x2c')](handleEntityNotFound(_0x43a1d2,null))[_0x7efb('0x2c')](function(_0x4052a7){if(_0x4052a7){return _0x4052a7[_0x7efb('0x8a')](_0x13ed13[_0x7efb('0x39')][_0x7efb('0x75')])[_0x7efb('0x2c')](function(){if(_[_0x7efb('0x8f')](_0x13ed13[_0x7efb('0x39')][_0x7efb('0x75')])){for(var _0x44bf67=0x0;_0x44bf67<_0x13ed13[_0x7efb('0x39')][_0x7efb('0x75')][_0x7efb('0x3c')];_0x44bf67+=0x1){socket[_0x7efb('0x72')](_0x7efb('0x8b'),{'UserId':Number(_0x13ed13[_0x7efb('0x39')][_0x7efb('0x75')][_0x44bf67]),'FaxQueueId':Number(_0x13ed13[_0x7efb('0x51')]['id'])});}}else{socket['emit'](_0x7efb('0x8b'),{'UserId':Number(_0x13ed13[_0x7efb('0x39')][_0x7efb('0x75')]),'FaxQueueId':Number(_0x13ed13['params']['id'])});}});}})[_0x7efb('0x2c')](respondWithStatusCode(_0x43a1d2,null))[_0x7efb('0x4f')](handleError(_0x43a1d2,null));};exports['getAgents']=function(_0x1eecbf,_0xd62d0e,_0x284039){var _0x258b43={};var _0x5c7337={};var _0x24e62d;var _0x5b3730;return db[_0x7efb('0x4c')][_0x7efb('0x60')]({'where':{'id':_0x1eecbf[_0x7efb('0x51')]['id']}})['then'](handleEntityNotFound(_0xd62d0e,null))[_0x7efb('0x2c')](function(_0x136983){if(_0x136983){_0x24e62d=_0x136983;_0x5c7337['model']=_['keys'](db[_0x7efb('0x76')][_0x7efb('0x61')]);_0x5c7337[_0x7efb('0x39')]=_[_0x7efb('0x52')](_0x1eecbf[_0x7efb('0x39')]);_0x5c7337['filters']=_['intersection'](_0x5c7337[_0x7efb('0x3d')],_0x5c7337[_0x7efb('0x39')]);_0x258b43[_0x7efb('0x3b')]=_[_0x7efb('0x3a')](_0x5c7337[_0x7efb('0x3d')],qs[_0x7efb('0x53')](_0x1eecbf[_0x7efb('0x39')]['fields']));_0x258b43[_0x7efb('0x3b')]=_0x258b43[_0x7efb('0x3b')][_0x7efb('0x3c')]?_0x258b43['attributes']:_0x5c7337['model'];_0x258b43[_0x7efb('0x40')]=qs['sort'](_0x1eecbf[_0x7efb('0x39')][_0x7efb('0x41')]);_0x258b43[_0x7efb('0x42')]=qs[_0x7efb('0x43')](_[_0x7efb('0x44')](_0x1eecbf[_0x7efb('0x39')],_0x5c7337['filters']));if(_0x1eecbf['query'][_0x7efb('0x45')]){_0x258b43['where']=_[_0x7efb('0x46')](_0x258b43[_0x7efb('0x42')],{'$or':_[_0x7efb('0x36')](_0x258b43['attributes'],function(_0x49ba85){var _0xda79ec={};_0xda79ec[_0x49ba85]={'$like':'%'+_0x1eecbf[_0x7efb('0x39')][_0x7efb('0x45')]+'%'};return _0xda79ec;})});}_0x258b43=_['merge']({},_0x258b43,_0x1eecbf['options']);return _0x24e62d[_0x7efb('0x90')](_0x258b43);}})[_0x7efb('0x2c')](function(_0x272880){if(_0x272880){_0x5b3730=_0x272880[_0x7efb('0x3c')];if(!_0x1eecbf['query']['hasOwnProperty'](_0x7efb('0x3f'))){_0x258b43[_0x7efb('0x23')]=qs[_0x7efb('0x23')](_0x1eecbf['query'][_0x7efb('0x23')]);_0x258b43[_0x7efb('0x21')]=qs['offset'](_0x1eecbf['query'][_0x7efb('0x21')]);}return _0x24e62d['getAgents'](_0x258b43);}})[_0x7efb('0x2c')](function(_0x542cc7){if(_0x542cc7){return _0x542cc7?{'count':_0x5b3730,'rows':_0x542cc7}:null;}})[_0x7efb('0x2c')](respondWithResult(_0xd62d0e,null))[_0x7efb('0x4f')](handleError(_0xd62d0e,null));};
\ No newline at end of file
index a909109..8634d80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc285=['FaxQueue','update','remove','emit','exports','events','../../mysqldb'];(function(_0x21186c,_0x1c619a){var _0x5d8295=function(_0x2f386a){while(--_0x2f386a){_0x21186c['push'](_0x21186c['shift']());}};_0x5d8295(++_0x1c619a);}(_0xc285,0x16a));var _0x5c28=function(_0x962edb,_0x5dd356){_0x962edb=_0x962edb-0x0;var _0x359dcf=_0xc285[_0x962edb];return _0x359dcf;};'use strict';var EventEmitter=require(_0x5c28('0x0'));var FaxQueue=require(_0x5c28('0x1'))['db'][_0x5c28('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5c28('0x3'),'afterDestroy':_0x5c28('0x4')};function emitEvent(_0x19c999){return function(_0x1f0770,_0x3521e,_0x1908b7){FaxQueueEvents[_0x5c28('0x5')](_0x19c999+':'+_0x1f0770['id'],_0x1f0770);FaxQueueEvents[_0x5c28('0x5')](_0x19c999,_0x1f0770);_0x1908b7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x5c28('0x6')]=FaxQueueEvents;
\ No newline at end of file
+var _0x3a4d=['FaxQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x19c4bd,_0x19a00d){var _0x2fc7b5=function(_0x24fdab){while(--_0x24fdab){_0x19c4bd['push'](_0x19c4bd['shift']());}};_0x2fc7b5(++_0x19a00d);}(_0x3a4d,0x13e));var _0xd3a4=function(_0x528d4f,_0x19b4f9){_0x528d4f=_0x528d4f-0x0;var _0x3df605=_0x3a4d[_0x528d4f];return _0x3df605;};'use strict';var EventEmitter=require(_0xd3a4('0x0'));var FaxQueue=require(_0xd3a4('0x1'))['db'][_0xd3a4('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xd3a4('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd3a4('0x4'),'afterDestroy':_0xd3a4('0x5')};function emitEvent(_0x5009a0){return function(_0x3fe1d2,_0x53084f,_0x1d0058){FaxQueueEvents[_0xd3a4('0x6')](_0x5009a0+':'+_0x3fe1d2['id'],_0x3fe1d2);FaxQueueEvents[_0xd3a4('0x6')](_0x5009a0,_0x3fe1d2);_0x1d0058(null);};}for(var e in events){if(events[_0xd3a4('0x7')](e)){var event=events[e];FaxQueue[_0xd3a4('0x8')](e,emitEvent(event));}}module[_0xd3a4('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 81363b5..ae11417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1612=['define','FaxQueue','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./faxQueue.attributes','exports'];(function(_0x4bafb8,_0x34ab70){var _0x579178=function(_0x44eeb4){while(--_0x44eeb4){_0x4bafb8['push'](_0x4bafb8['shift']());}};_0x579178(++_0x34ab70);}(_0x1612,0xe6));var _0x2161=function(_0x587571,_0xe251bc){_0x587571=_0x587571-0x0;var _0x5681e4=_0x1612[_0x587571];return _0x5681e4;};'use strict';var _=require(_0x2161('0x0'));var util=require(_0x2161('0x1'));var logger=require('../../config/logger')(_0x2161('0x2'));var moment=require(_0x2161('0x3'));var BPromise=require(_0x2161('0x4'));var rp=require(_0x2161('0x5'));var fs=require('fs');var path=require(_0x2161('0x6'));var rimraf=require(_0x2161('0x7'));var config=require('../../config/environment');var attributes=require(_0x2161('0x8'));module[_0x2161('0x9')]=function(_0x59b913,_0x1fc022){return _0x59b913[_0x2161('0xa')](_0x2161('0xb'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b07=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','FaxQueue','fax_queues','lodash'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x2b07,0x1c2));var _0x72b0=function(_0x36f47c,_0x38ef4d){_0x36f47c=_0x36f47c-0x0;var _0x296c55=_0x2b07[_0x36f47c];return _0x296c55;};'use strict';var _=require(_0x72b0('0x0'));var util=require(_0x72b0('0x1'));var logger=require(_0x72b0('0x2'))(_0x72b0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x72b0('0x4'));var fs=require('fs');var path=require(_0x72b0('0x5'));var rimraf=require(_0x72b0('0x6'));var config=require(_0x72b0('0x7'));var attributes=require('./faxQueue.attributes');module[_0x72b0('0x8')]=function(_0x4a7108,_0x3f17b6){return _0x4a7108['define'](_0x72b0('0x9'),attributes,{'tableName':_0x72b0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ff06aee..080e1c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa984=['info','result','catch','GetFaxQueue','findAll','options','raw','attributes','limit','include','model','map','ShowFaxQueue','FaxQueue','find','where','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','./faxQueue.socket','register','request','then','FaxQueue,\x20%s,\x20%s','debug','FaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x596c43,_0x28647a){var _0x4e1315=function(_0x58e910){while(--_0x58e910){_0x596c43['push'](_0x596c43['shift']());}};_0x4e1315(++_0x28647a);}(_0xa984,0x12f));var _0x4a98=function(_0x488e3d,_0x4f7e2a){_0x488e3d=_0x488e3d-0x0;var _0x3ee2b2=_0xa984[_0x488e3d];return _0x3ee2b2;};'use strict';var _=require(_0x4a98('0x0'));var util=require(_0x4a98('0x1'));var moment=require(_0x4a98('0x2'));var BPromise=require(_0x4a98('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4a98('0x4'));var db=require(_0x4a98('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a98('0x6'))(_0x4a98('0x7'));var config=require('../../config/environment');var jayson=require(_0x4a98('0x8'));var client=jayson[_0x4a98('0x9')][_0x4a98('0xa')]({'port':0x232a});config['redis']=_[_0x4a98('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4a98('0xc')]));require(_0x4a98('0xd'))[_0x4a98('0xe')](socket);function respondWithRpcPromise(_0x324179,_0xf22cf4,_0x3d7ec7){return new BPromise(function(_0x24fdec,_0x5e3b45){return client[_0x4a98('0xf')](_0x324179,_0x3d7ec7)[_0x4a98('0x10')](function(_0x332590){logger['info'](_0x4a98('0x11'),_0xf22cf4,'request\x20sent');logger[_0x4a98('0x12')](_0x4a98('0x13'),_0xf22cf4,_0x4a98('0x14'),JSON[_0x4a98('0x15')](_0x332590));if(_0x332590[_0x4a98('0x16')]){if(_0x332590[_0x4a98('0x16')][_0x4a98('0x17')]===0x1f4){logger['error'](_0x4a98('0x11'),_0xf22cf4,_0x332590['error'][_0x4a98('0x18')]);return _0x5e3b45(_0x332590[_0x4a98('0x16')]['message']);}logger[_0x4a98('0x16')](_0x4a98('0x11'),_0xf22cf4,_0x332590[_0x4a98('0x16')][_0x4a98('0x18')]);return _0x24fdec(_0x332590['error'][_0x4a98('0x18')]);}else{logger[_0x4a98('0x19')]('FaxQueue,\x20%s,\x20%s',_0xf22cf4,_0x4a98('0x14'));_0x24fdec(_0x332590[_0x4a98('0x1a')][_0x4a98('0x18')]);}})[_0x4a98('0x1b')](function(_0x3e9025){logger[_0x4a98('0x16')](_0x4a98('0x11'),_0xf22cf4,_0x3e9025);_0x5e3b45(_0x3e9025);});});}exports[_0x4a98('0x1c')]=function(_0x5912bb){var _0x193dcb=this;return new Promise(function(_0x789c8f,_0x5ebc87){return db['FaxQueue'][_0x4a98('0x1d')]({'raw':_0x5912bb[_0x4a98('0x1e')]?_0x5912bb[_0x4a98('0x1e')][_0x4a98('0x1f')]===undefined?!![]:![]:!![],'where':_0x5912bb[_0x4a98('0x1e')]?_0x5912bb[_0x4a98('0x1e')]['where']||null:null,'attributes':_0x5912bb['options']?_0x5912bb['options'][_0x4a98('0x20')]||null:null,'limit':_0x5912bb[_0x4a98('0x1e')]?_0x5912bb['options'][_0x4a98('0x21')]||null:null,'include':_0x5912bb[_0x4a98('0x1e')]?_0x5912bb[_0x4a98('0x1e')][_0x4a98('0x22')]?_['map'](_0x5912bb[_0x4a98('0x1e')][_0x4a98('0x22')],function(_0x403ee8){return{'model':db[_0x403ee8[_0x4a98('0x23')]],'as':_0x403ee8['as'],'attributes':_0x403ee8[_0x4a98('0x20')],'include':_0x403ee8[_0x4a98('0x22')]?_[_0x4a98('0x24')](_0x403ee8[_0x4a98('0x22')],function(_0x59d96d){return{'model':db[_0x59d96d['model']],'as':_0x59d96d['as'],'attributes':_0x59d96d[_0x4a98('0x20')],'include':_0x59d96d[_0x4a98('0x22')]?_[_0x4a98('0x24')](_0x59d96d[_0x4a98('0x22')],function(_0xe5a17a){return{'model':db[_0xe5a17a[_0x4a98('0x23')]],'as':_0xe5a17a['as'],'attributes':_0xe5a17a['attributes']};}):[]};}):[]};}):[]:[]})[_0x4a98('0x10')](function(_0x2b8cf3){logger['info']('GetFaxQueue',_0x5912bb);logger[_0x4a98('0x12')](_0x4a98('0x1c'),_0x5912bb,JSON[_0x4a98('0x15')](_0x2b8cf3));_0x789c8f(_0x2b8cf3);})[_0x4a98('0x1b')](function(_0x48f70d){logger[_0x4a98('0x16')](_0x4a98('0x1c'),_0x48f70d[_0x4a98('0x18')],_0x5912bb);_0x5ebc87(_0x193dcb[_0x4a98('0x16')](0x1f4,_0x48f70d[_0x4a98('0x18')]));});});};exports[_0x4a98('0x25')]=function(_0x3deef5){var _0x492cad=this;return new Promise(function(_0x484dd1,_0x25fa31){return db[_0x4a98('0x26')][_0x4a98('0x27')]({'raw':_0x3deef5[_0x4a98('0x1e')]?_0x3deef5[_0x4a98('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x3deef5[_0x4a98('0x1e')]?_0x3deef5[_0x4a98('0x1e')][_0x4a98('0x28')]||null:null,'attributes':_0x3deef5['options']?_0x3deef5['options'][_0x4a98('0x20')]||null:null,'include':_0x3deef5[_0x4a98('0x1e')]?_0x3deef5[_0x4a98('0x1e')][_0x4a98('0x22')]?_['map'](_0x3deef5[_0x4a98('0x1e')][_0x4a98('0x22')],function(_0xc31bbb){return{'model':db[_0xc31bbb[_0x4a98('0x23')]],'as':_0xc31bbb['as'],'attributes':_0xc31bbb['attributes'],'include':_0xc31bbb['include']?_[_0x4a98('0x24')](_0xc31bbb[_0x4a98('0x22')],function(_0x4934a7){return{'model':db[_0x4934a7[_0x4a98('0x23')]],'as':_0x4934a7['as'],'attributes':_0x4934a7['attributes'],'include':_0x4934a7[_0x4a98('0x22')]?_[_0x4a98('0x24')](_0x4934a7['include'],function(_0x295f2c){return{'model':db[_0x295f2c[_0x4a98('0x23')]],'as':_0x295f2c['as'],'attributes':_0x295f2c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x30683e){logger[_0x4a98('0x19')]('ShowFaxQueue',_0x3deef5);logger['debug'](_0x4a98('0x25'),_0x3deef5,JSON[_0x4a98('0x15')](_0x30683e));_0x484dd1(_0x30683e);})[_0x4a98('0x1b')](function(_0x283ed6){logger[_0x4a98('0x16')](_0x4a98('0x25'),_0x283ed6[_0x4a98('0x18')],_0x3deef5);_0x25fa31(_0x492cad[_0x4a98('0x16')](0x1f4,_0x283ed6[_0x4a98('0x18')]));});});};
\ No newline at end of file
+var _0x350a=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','localhost','./faxQueue.socket','request','then','request\x20sent','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','info','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowFaxQueue'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x350a,0x1bc));var _0xa350=function(_0x1f71d8,_0x278518){_0x1f71d8=_0x1f71d8-0x0;var _0x10b045=_0x350a[_0x1f71d8];return _0x10b045;};'use strict';var _=require(_0xa350('0x0'));var util=require(_0xa350('0x1'));var moment=require(_0xa350('0x2'));var BPromise=require(_0xa350('0x3'));var rs=require(_0xa350('0x4'));var fs=require('fs');var Redis=require(_0xa350('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa350('0x6'));var logger=require(_0xa350('0x7'))('rpc');var config=require(_0xa350('0x8'));var jayson=require(_0xa350('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xa350('0xa')]=_['defaults'](config[_0xa350('0xa')],{'host':_0xa350('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa350('0xa')]));require(_0xa350('0xc'))['register'](socket);function respondWithRpcPromise(_0x25843d,_0x1bcb36,_0x1f7c7e){return new BPromise(function(_0x65da43,_0x4a01db){return client[_0xa350('0xd')](_0x25843d,_0x1f7c7e)[_0xa350('0xe')](function(_0x4a09b8){logger['info']('FaxQueue,\x20%s,\x20%s',_0x1bcb36,_0xa350('0xf'));logger['debug']('FaxQueue,\x20%s,\x20%s,\x20%s',_0x1bcb36,_0xa350('0xf'),JSON[_0xa350('0x10')](_0x4a09b8));if(_0x4a09b8[_0xa350('0x11')]){if(_0x4a09b8[_0xa350('0x11')][_0xa350('0x12')]===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x1bcb36,_0x4a09b8[_0xa350('0x11')]['message']);return _0x4a01db(_0x4a09b8[_0xa350('0x11')][_0xa350('0x13')]);}logger[_0xa350('0x11')](_0xa350('0x14'),_0x1bcb36,_0x4a09b8['error'][_0xa350('0x13')]);return _0x65da43(_0x4a09b8['error'][_0xa350('0x13')]);}else{logger[_0xa350('0x15')](_0xa350('0x14'),_0x1bcb36,_0xa350('0xf'));_0x65da43(_0x4a09b8[_0xa350('0x16')][_0xa350('0x13')]);}})[_0xa350('0x17')](function(_0x3107c2){logger[_0xa350('0x11')](_0xa350('0x14'),_0x1bcb36,_0x3107c2);_0x4a01db(_0x3107c2);});});}exports[_0xa350('0x18')]=function(_0x57082a){var _0x593eb5=this;return new Promise(function(_0x1121fc,_0x47b83d){return db[_0xa350('0x19')][_0xa350('0x1a')]({'raw':_0x57082a[_0xa350('0x1b')]?_0x57082a[_0xa350('0x1b')][_0xa350('0x1c')]===undefined?!![]:![]:!![],'where':_0x57082a['options']?_0x57082a[_0xa350('0x1b')][_0xa350('0x1d')]||null:null,'attributes':_0x57082a[_0xa350('0x1b')]?_0x57082a[_0xa350('0x1b')][_0xa350('0x1e')]||null:null,'limit':_0x57082a[_0xa350('0x1b')]?_0x57082a[_0xa350('0x1b')][_0xa350('0x1f')]||null:null,'include':_0x57082a[_0xa350('0x1b')]?_0x57082a['options'][_0xa350('0x20')]?_[_0xa350('0x21')](_0x57082a[_0xa350('0x1b')]['include'],function(_0x1a8eb6){return{'model':db[_0x1a8eb6[_0xa350('0x22')]],'as':_0x1a8eb6['as'],'attributes':_0x1a8eb6[_0xa350('0x1e')],'include':_0x1a8eb6[_0xa350('0x20')]?_[_0xa350('0x21')](_0x1a8eb6[_0xa350('0x20')],function(_0x3f19ac){return{'model':db[_0x3f19ac[_0xa350('0x22')]],'as':_0x3f19ac['as'],'attributes':_0x3f19ac[_0xa350('0x1e')],'include':_0x3f19ac['include']?_['map'](_0x3f19ac[_0xa350('0x20')],function(_0x57f9ae){return{'model':db[_0x57f9ae[_0xa350('0x22')]],'as':_0x57f9ae['as'],'attributes':_0x57f9ae[_0xa350('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa350('0xe')](function(_0x167ef5){logger[_0xa350('0x15')](_0xa350('0x18'),_0x57082a);logger[_0xa350('0x23')](_0xa350('0x18'),_0x57082a,JSON[_0xa350('0x10')](_0x167ef5));_0x1121fc(_0x167ef5);})[_0xa350('0x17')](function(_0x4873f9){logger[_0xa350('0x11')](_0xa350('0x18'),_0x4873f9[_0xa350('0x13')],_0x57082a);_0x47b83d(_0x593eb5[_0xa350('0x11')](0x1f4,_0x4873f9[_0xa350('0x13')]));});});};exports[_0xa350('0x24')]=function(_0xfdcbc9){var _0xa7cda1=this;return new Promise(function(_0x3c0cff,_0x42f58f){return db[_0xa350('0x19')]['find']({'raw':_0xfdcbc9[_0xa350('0x1b')]?_0xfdcbc9[_0xa350('0x1b')][_0xa350('0x1c')]===undefined?!![]:![]:!![],'where':_0xfdcbc9[_0xa350('0x1b')]?_0xfdcbc9[_0xa350('0x1b')][_0xa350('0x1d')]||null:null,'attributes':_0xfdcbc9[_0xa350('0x1b')]?_0xfdcbc9[_0xa350('0x1b')][_0xa350('0x1e')]||null:null,'include':_0xfdcbc9['options']?_0xfdcbc9[_0xa350('0x1b')]['include']?_[_0xa350('0x21')](_0xfdcbc9[_0xa350('0x1b')]['include'],function(_0x444467){return{'model':db[_0x444467[_0xa350('0x22')]],'as':_0x444467['as'],'attributes':_0x444467[_0xa350('0x1e')],'include':_0x444467[_0xa350('0x20')]?_[_0xa350('0x21')](_0x444467[_0xa350('0x20')],function(_0x4bf54a){return{'model':db[_0x4bf54a[_0xa350('0x22')]],'as':_0x4bf54a['as'],'attributes':_0x4bf54a[_0xa350('0x1e')],'include':_0x4bf54a[_0xa350('0x20')]?_[_0xa350('0x21')](_0x4bf54a[_0xa350('0x20')],function(_0x228a66){return{'model':db[_0x228a66[_0xa350('0x22')]],'as':_0x228a66['as'],'attributes':_0x228a66['attributes']};}):[]};}):[]};}):[]:[]})[_0xa350('0xe')](function(_0x5677c0){logger[_0xa350('0x15')](_0xa350('0x24'),_0xfdcbc9);logger[_0xa350('0x23')](_0xa350('0x24'),_0xfdcbc9,JSON[_0xa350('0x10')](_0x5677c0));_0x3c0cff(_0x5677c0);})['catch'](function(_0x4c8759){logger['error'](_0xa350('0x24'),_0x4c8759[_0xa350('0x13')],_0xfdcbc9);_0x42f58f(_0xa7cda1['error'](0x1f4,_0x4c8759[_0xa350('0x13')]));});});};
\ No newline at end of file
index 6fd6624..e3fe1cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5502=['register','length','faxQueue:','./faxQueue.events','save','remove','update','emit'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x5502,0x10b));var _0x2550=function(_0x22bbfb,_0x15da21){_0x22bbfb=_0x22bbfb-0x0;var _0x47b2de=_0x5502[_0x22bbfb];return _0x47b2de;};'use strict';var FaxQueueEvents=require(_0x2550('0x0'));var events=[_0x2550('0x1'),_0x2550('0x2'),_0x2550('0x3')];function createListener(_0x337952,_0x105db0){return function(_0x2ca0cb){_0x105db0[_0x2550('0x4')](_0x337952,_0x2ca0cb);};}function removeListener(_0x355781,_0x4afbd5){return function(){FaxQueueEvents['removeListener'](_0x355781,_0x4afbd5);};}exports[_0x2550('0x5')]=function(_0x5bb68b){for(var _0x14caff=0x0,_0x40f108=events[_0x2550('0x6')];_0x14caff<_0x40f108;_0x14caff++){var _0xa31805=events[_0x14caff];var _0x1e4255=createListener(_0x2550('0x7')+_0xa31805,_0x5bb68b);FaxQueueEvents['on'](_0xa31805,_0x1e4255);}};
\ No newline at end of file
+var _0xbacd=['emit','removeListener','register','length','faxQueue:','./faxQueue.events','save','update'];(function(_0x5817d8,_0x23d84d){var _0x13bf54=function(_0x22cadc){while(--_0x22cadc){_0x5817d8['push'](_0x5817d8['shift']());}};_0x13bf54(++_0x23d84d);}(_0xbacd,0x1c5));var _0xdbac=function(_0x3e9929,_0x2cbcff){_0x3e9929=_0x3e9929-0x0;var _0x2ed515=_0xbacd[_0x3e9929];return _0x2ed515;};'use strict';var FaxQueueEvents=require(_0xdbac('0x0'));var events=[_0xdbac('0x1'),'remove',_0xdbac('0x2')];function createListener(_0x7068d9,_0x43f7e4){return function(_0x5f1f7a){_0x43f7e4[_0xdbac('0x3')](_0x7068d9,_0x5f1f7a);};}function removeListener(_0x3f18cd,_0x1fb9ef){return function(){FaxQueueEvents[_0xdbac('0x4')](_0x3f18cd,_0x1fb9ef);};}exports[_0xdbac('0x5')]=function(_0x376641){for(var _0x19134a=0x0,_0xa5f9cf=events[_0xdbac('0x6')];_0x19134a<_0xa5f9cf;_0x19134a++){var _0x2f5331=events[_0x19134a];var _0x30be11=createListener(_0xdbac('0x7')+_0x2f5331,_0x376641);FaxQueueEvents['on'](_0x2f5331,_0x30be11);}};
\ No newline at end of file
index aedf6f9..990409c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c45=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout'];(function(_0xff6546,_0x1808ce){var _0x553aa9=function(_0x5dbead){while(--_0x5dbead){_0xff6546['push'](_0xff6546['shift']());}};_0x553aa9(++_0x1808ce);}(_0x6c45,0xb1));var _0x56c4=function(_0x51fbfc,_0x3a5bb1){_0x51fbfc=_0x51fbfc-0x0;var _0x381903=_0x6c45[_0x51fbfc];return _0x381903;};'use strict';var multer=require(_0x56c4('0x0'));var util=require(_0x56c4('0x1'));var path=require('path');var timeout=require(_0x56c4('0x2'));var express=require(_0x56c4('0x3'));var router=express[_0x56c4('0x4')]();var fs_extra=require(_0x56c4('0x5'));var auth=require(_0x56c4('0x6'));var interaction=require(_0x56c4('0x7'));var config=require(_0x56c4('0x8'));var controller=require(_0x56c4('0x9'));router[_0x56c4('0xa')]('/',auth[_0x56c4('0xb')](),controller[_0x56c4('0xc')]);router[_0x56c4('0xa')](_0x56c4('0xd'),auth[_0x56c4('0xb')](),controller[_0x56c4('0xe')]);router[_0x56c4('0xa')](_0x56c4('0xf'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x10')]);router[_0x56c4('0xa')]('/:id/members',auth[_0x56c4('0xb')](),controller[_0x56c4('0x11')]);router[_0x56c4('0xa')](_0x56c4('0x12'),auth['isAuthenticated'](),controller[_0x56c4('0x13')]);router[_0x56c4('0xa')](_0x56c4('0x14'),auth[_0x56c4('0xb')](),controller['getAgents']);router[_0x56c4('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x56c4('0x15')](_0x56c4('0x12'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x16')]);router[_0x56c4('0x15')]('/:id/users',auth[_0x56c4('0xb')](),controller[_0x56c4('0x17')]);router['put'](_0x56c4('0xf'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x18')]);router[_0x56c4('0x19')]('/:id',auth[_0x56c4('0xb')](),controller[_0x56c4('0x1a')]);router['delete'](_0x56c4('0x12'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x1b')]);router[_0x56c4('0x19')]('/:id/users',auth[_0x56c4('0xb')](),controller[_0x56c4('0x1c')]);module[_0x56c4('0x1d')]=router;
\ No newline at end of file
+var _0x68b3=['addAgents','put','update','delete','destroy','removeTeams','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x68b3,0x1d8));var _0x368b=function(_0x11de15,_0x4c287f){_0x11de15=_0x11de15-0x0;var _0x14f419=_0x68b3[_0x11de15];return _0x14f419;};'use strict';var multer=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var path=require(_0x368b('0x2'));var timeout=require(_0x368b('0x3'));var express=require(_0x368b('0x4'));var router=express['Router']();var fs_extra=require(_0x368b('0x5'));var auth=require(_0x368b('0x6'));var interaction=require(_0x368b('0x7'));var config=require(_0x368b('0x8'));var controller=require('./faxQueue.controller');router[_0x368b('0x9')]('/',auth[_0x368b('0xa')](),controller[_0x368b('0xb')]);router[_0x368b('0x9')](_0x368b('0xc'),auth[_0x368b('0xa')](),controller[_0x368b('0xd')]);router[_0x368b('0x9')](_0x368b('0xe'),auth[_0x368b('0xa')](),controller[_0x368b('0xf')]);router['get'](_0x368b('0x10'),auth[_0x368b('0xa')](),controller[_0x368b('0x11')]);router['get'](_0x368b('0x12'),auth[_0x368b('0xa')](),controller[_0x368b('0x13')]);router['get'](_0x368b('0x14'),auth[_0x368b('0xa')](),controller['getAgents']);router[_0x368b('0x15')]('/',auth[_0x368b('0xa')](),controller[_0x368b('0x16')]);router[_0x368b('0x15')](_0x368b('0x12'),auth['isAuthenticated'](),controller[_0x368b('0x17')]);router[_0x368b('0x15')]('/:id/users',auth[_0x368b('0xa')](),controller[_0x368b('0x18')]);router[_0x368b('0x19')]('/:id',auth[_0x368b('0xa')](),controller[_0x368b('0x1a')]);router[_0x368b('0x1b')]('/:id',auth[_0x368b('0xa')](),controller[_0x368b('0x1c')]);router[_0x368b('0x1b')]('/:id/teams',auth['isAuthenticated'](),controller[_0x368b('0x1d')]);router[_0x368b('0x1b')](_0x368b('0x14'),auth[_0x368b('0xa')](),controller[_0x368b('0x1e')]);module['exports']=router;
\ No newline at end of file
index 6201765..9427753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa318=['DATE','moment','sequelize','exports','STRING'];(function(_0x1ad6f3,_0x5b072b){var _0x44de42=function(_0x5417f0){while(--_0x5417f0){_0x1ad6f3['push'](_0x1ad6f3['shift']());}};_0x44de42(++_0x5b072b);}(_0xa318,0x9c));var _0x8a31=function(_0x37fc9e,_0x82511a){_0x37fc9e=_0x37fc9e-0x0;var _0x223dc9=_0xa318[_0x37fc9e];return _0x223dc9;};'use strict';var moment=require(_0x8a31('0x0'));var Sequelize=require(_0x8a31('0x1'));module[_0x8a31('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x8a31('0x3')]},'joinAt':{'type':Sequelize[_0x8a31('0x4')]},'leaveAt':{'type':Sequelize[_0x8a31('0x4')]},'acceptAt':{'type':Sequelize[_0x8a31('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x8a31('0x3')]}};
\ No newline at end of file
+var _0x9917=['exports','STRING','DATE','moment'];(function(_0x1a4f75,_0x41ef18){var _0x514c56=function(_0x3cfea6){while(--_0x3cfea6){_0x1a4f75['push'](_0x1a4f75['shift']());}};_0x514c56(++_0x41ef18);}(_0x9917,0x8f));var _0x7991=function(_0x5d7023,_0x1ac11d){_0x5d7023=_0x5d7023-0x0;var _0x581464=_0x9917[_0x5d7023];return _0x581464;};'use strict';var moment=require(_0x7991('0x0'));var Sequelize=require('sequelize');module[_0x7991('0x1')]={'uniqueid':{'type':Sequelize[_0x7991('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7991('0x2')]},'joinAt':{'type':Sequelize[_0x7991('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x7991('0x3')]},'exitAt':{'type':Sequelize[_0x7991('0x3')]},'reason':{'type':Sequelize[_0x7991('0x2')]}};
\ No newline at end of file
index 35f7f77..8f7dcb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2557=['lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','keys','options','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2557,0x11e));var _0x7255=function(_0x38616b,_0x36227b){_0x38616b=_0x38616b-0x0;var _0x3e81a7=_0x2557[_0x38616b];return _0x3e81a7;};'use strict';var emlformat=require(_0x7255('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7255('0x1'));var jsonpatch=require(_0x7255('0x2'));var rp=require(_0x7255('0x3'));var moment=require(_0x7255('0x4'));var BPromise=require(_0x7255('0x5'));var Mustache=require(_0x7255('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7255('0x7'));var ejs=require(_0x7255('0x8'));var fs=require('fs');var fs_extra=require(_0x7255('0x9'));var _=require(_0x7255('0xa'));var squel=require(_0x7255('0xb'));var crypto=require(_0x7255('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7255('0xd'));var toCsv=require(_0x7255('0x7'));var querystring=require(_0x7255('0xe'));var Papa=require('papaparse');var Redis=require(_0x7255('0xf'));var authService=require(_0x7255('0x10'));var qs=require(_0x7255('0x11'));var as=require(_0x7255('0x12'));var hardwareService=require(_0x7255('0x13'));var logger=require(_0x7255('0x14'))(_0x7255('0x15'));var utils=require('../../config/utils');var config=require(_0x7255('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x502367,_0x18de71){_0x18de71=_0x18de71||0xcc;return function(_0x3f9415){if(_0x3f9415){return _0x502367[_0x7255('0x17')](_0x18de71);}return _0x502367[_0x7255('0x18')](_0x18de71)[_0x7255('0x19')]();};}function respondWithResult(_0x2e2378,_0x44a4de){_0x44a4de=_0x44a4de||0xc8;return function(_0x5d2777){if(_0x5d2777){return _0x2e2378[_0x7255('0x18')](_0x44a4de)[_0x7255('0x1a')](_0x5d2777);}};}function respondWithFilteredResult(_0x1c565b,_0x3c5573){return function(_0x26e52b){if(_0x26e52b){var _0xc2c1f5=typeof _0x3c5573[_0x7255('0x1b')]===_0x7255('0x1c')&&typeof _0x3c5573[_0x7255('0x1d')]===_0x7255('0x1c');var _0x2e6489=_0x26e52b[_0x7255('0x1e')];var _0x19dac1=_0xc2c1f5?0x0:_0x3c5573[_0x7255('0x1b')];var _0x3db713=_0xc2c1f5?_0x26e52b[_0x7255('0x1e')]:_0x3c5573[_0x7255('0x1b')]+_0x3c5573['limit'];var _0x4f26da;if(_0x3db713>=_0x2e6489){_0x3db713=_0x2e6489;_0x4f26da=0xc8;}else{_0x4f26da=0xce;}_0x1c565b[_0x7255('0x18')](_0x4f26da);return _0x1c565b[_0x7255('0x1f')](_0x7255('0x20'),_0x19dac1+'-'+_0x3db713+'/'+_0x2e6489)[_0x7255('0x1a')](_0x26e52b);}return null;};}function patchUpdates(_0x4bff12){return function(_0x3cef55){try{jsonpatch[_0x7255('0x21')](_0x3cef55,_0x4bff12,!![]);}catch(_0x1be0c4){return BPromise[_0x7255('0x22')](_0x1be0c4);}return _0x3cef55[_0x7255('0x23')]();};}function saveUpdates(_0xc13135,_0x38f9eb){return function(_0x9fdfea){if(_0x9fdfea){return _0x9fdfea['update'](_0xc13135)[_0x7255('0x24')](function(_0x172e5a){return _0x172e5a;});}return null;};}function removeEntity(_0x3f6fea,_0x358e87){return function(_0x153113){if(_0x153113){return _0x153113[_0x7255('0x25')]()[_0x7255('0x24')](function(){_0x3f6fea['status'](0xcc)[_0x7255('0x19')]();});}};}function handleEntityNotFound(_0x455098,_0x1a9619){return function(_0x568068){if(!_0x568068){_0x455098[_0x7255('0x17')](0x194);}return _0x568068;};}function handleError(_0x5378ca,_0x3bfcc7){_0x3bfcc7=_0x3bfcc7||0x1f4;return function(_0x193e69){logger['error'](_0x193e69[_0x7255('0x26')]);if(_0x193e69[_0x7255('0x27')]){delete _0x193e69[_0x7255('0x27')];}_0x5378ca[_0x7255('0x18')](_0x3bfcc7)[_0x7255('0x28')](_0x193e69);};}exports[_0x7255('0x29')]=function(_0x54e53a,_0x4260cb){var _0x439501={},_0x563233={},_0x56dee8={'count':0x0,'rows':[]};var _0x22cc6e=_[_0x7255('0x2a')](db[_0x7255('0x2b')][_0x7255('0x2c')],function(_0x25cc20){return{'name':_0x25cc20[_0x7255('0x2d')],'type':_0x25cc20[_0x7255('0x2e')][_0x7255('0x2f')]};});_0x563233['model']=_[_0x7255('0x2a')](_0x22cc6e,'name');_0x563233[_0x7255('0x30')]=_['keys'](_0x54e53a[_0x7255('0x30')]);_0x563233[_0x7255('0x31')]=_[_0x7255('0x32')](_0x563233['model'],_0x563233['query']);_0x439501['attributes']=_[_0x7255('0x32')](_0x563233[_0x7255('0x33')],qs[_0x7255('0x34')](_0x54e53a[_0x7255('0x30')][_0x7255('0x34')]));_0x439501[_0x7255('0x35')]=_0x439501[_0x7255('0x35')][_0x7255('0x36')]?_0x439501['attributes']:_0x563233[_0x7255('0x33')];if(!_0x54e53a[_0x7255('0x30')]['hasOwnProperty'](_0x7255('0x37'))){_0x439501[_0x7255('0x1d')]=qs[_0x7255('0x1d')](_0x54e53a[_0x7255('0x30')][_0x7255('0x1d')]);_0x439501[_0x7255('0x1b')]=qs['offset'](_0x54e53a[_0x7255('0x30')][_0x7255('0x1b')]);}_0x439501[_0x7255('0x38')]=qs['sort'](_0x54e53a[_0x7255('0x30')]['sort']);_0x439501[_0x7255('0x39')]=qs[_0x7255('0x31')](_[_0x7255('0x3a')](_0x54e53a[_0x7255('0x30')],_0x563233[_0x7255('0x31')]),_0x22cc6e);if(_0x54e53a[_0x7255('0x30')][_0x7255('0x3b')]){_0x439501['where']=_[_0x7255('0x3c')](_0x439501[_0x7255('0x39')],{'$or':_[_0x7255('0x2a')](_0x22cc6e,function(_0x39981b){if(_0x39981b[_0x7255('0x2e')]!==_0x7255('0x3d')){var _0x5a00a7={};_0x5a00a7[_0x39981b[_0x7255('0x27')]]={'$like':'%'+_0x54e53a[_0x7255('0x30')][_0x7255('0x3b')]+'%'};return _0x5a00a7;}})});}_0x439501=_[_0x7255('0x3c')]({},_0x439501,_0x54e53a['options']);var _0x449396={'where':_0x439501['where']};return db['FaxQueueReport'][_0x7255('0x1e')](_0x449396)['then'](function(_0x3e4d4b){_0x56dee8[_0x7255('0x1e')]=_0x3e4d4b;if(_0x54e53a['query'][_0x7255('0x3e')]){_0x439501[_0x7255('0x3f')]=[{'all':!![]}];}return db['FaxQueueReport'][_0x7255('0x40')](_0x439501);})[_0x7255('0x24')](function(_0x359a45){_0x56dee8[_0x7255('0x41')]=_0x359a45;return _0x56dee8;})[_0x7255('0x24')](respondWithFilteredResult(_0x4260cb,_0x439501))[_0x7255('0x42')](handleError(_0x4260cb,null));};exports['show']=function(_0x2c6cf5,_0x43d5de){var _0x2f111b={'raw':!![],'where':{'id':_0x2c6cf5[_0x7255('0x43')]['id']}},_0x1d4611={};_0x1d4611[_0x7255('0x33')]=_[_0x7255('0x44')](db[_0x7255('0x2b')][_0x7255('0x2c')]);_0x1d4611[_0x7255('0x30')]=_['keys'](_0x2c6cf5[_0x7255('0x30')]);_0x1d4611['filters']=_[_0x7255('0x32')](_0x1d4611[_0x7255('0x33')],_0x1d4611[_0x7255('0x30')]);_0x2f111b['attributes']=_[_0x7255('0x32')](_0x1d4611[_0x7255('0x33')],qs[_0x7255('0x34')](_0x2c6cf5[_0x7255('0x30')][_0x7255('0x34')]));_0x2f111b[_0x7255('0x35')]=_0x2f111b[_0x7255('0x35')][_0x7255('0x36')]?_0x2f111b[_0x7255('0x35')]:_0x1d4611['model'];if(_0x2c6cf5[_0x7255('0x30')][_0x7255('0x3e')]){_0x2f111b[_0x7255('0x3f')]=[{'all':!![]}];}_0x2f111b=_[_0x7255('0x3c')]({},_0x2f111b,_0x2c6cf5[_0x7255('0x45')]);return db[_0x7255('0x2b')]['find'](_0x2f111b)['then'](handleEntityNotFound(_0x43d5de,null))[_0x7255('0x24')](respondWithResult(_0x43d5de,null))[_0x7255('0x42')](handleError(_0x43d5de,null));};exports['create']=function(_0x562fa9,_0x4f6c51){return db[_0x7255('0x2b')][_0x7255('0x46')](_0x562fa9[_0x7255('0x47')],{})[_0x7255('0x24')](respondWithResult(_0x4f6c51,0xc9))['catch'](handleError(_0x4f6c51,null));};exports['update']=function(_0x4d2e39,_0x415878){if(_0x4d2e39['body']['id']){delete _0x4d2e39[_0x7255('0x47')]['id'];}return db[_0x7255('0x2b')][_0x7255('0x48')]({'where':{'id':_0x4d2e39['params']['id']}})[_0x7255('0x24')](handleEntityNotFound(_0x415878,null))[_0x7255('0x24')](saveUpdates(_0x4d2e39['body'],null))['then'](respondWithResult(_0x415878,null))[_0x7255('0x42')](handleError(_0x415878,null));};exports[_0x7255('0x25')]=function(_0x4e9636,_0x2172f0){return db['FaxQueueReport'][_0x7255('0x48')]({'where':{'id':_0x4e9636['params']['id']}})[_0x7255('0x24')](handleEntityNotFound(_0x2172f0,null))[_0x7255('0x24')](removeEntity(_0x2172f0,null))[_0x7255('0x42')](handleError(_0x2172f0,null));};exports[_0x7255('0x49')]=function(_0x1c7f7c,_0x5ec6e6){return db['FaxQueueReport'][_0x7255('0x49')]()['then'](respondWithResult(_0x5ec6e6,null))[_0x7255('0x42')](handleError(_0x5ec6e6,null));};
\ No newline at end of file
+var _0x9181=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','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','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','update','then','error','stack','name','index','map','FaxQueueReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','findAll','rows','catch','show','params','rawAttributes','includeAll','include','find','create','body'];(function(_0x528404,_0x27a5ba){var _0xe59e6b=function(_0x12e4f8){while(--_0x12e4f8){_0x528404['push'](_0x528404['shift']());}};_0xe59e6b(++_0x27a5ba);}(_0x9181,0x182));var _0x1918=function(_0x49a18c,_0xa4b150){_0x49a18c=_0x49a18c-0x0;var _0x45d077=_0x9181[_0x49a18c];return _0x45d077;};'use strict';var emlformat=require(_0x1918('0x0'));var rimraf=require(_0x1918('0x1'));var zipdir=require(_0x1918('0x2'));var jsonpatch=require(_0x1918('0x3'));var rp=require(_0x1918('0x4'));var moment=require('moment');var BPromise=require(_0x1918('0x5'));var Mustache=require('mustache');var util=require(_0x1918('0x6'));var path=require(_0x1918('0x7'));var sox=require(_0x1918('0x8'));var csv=require(_0x1918('0x9'));var ejs=require(_0x1918('0xa'));var fs=require('fs');var fs_extra=require(_0x1918('0xb'));var _=require('lodash');var squel=require(_0x1918('0xc'));var crypto=require('crypto');var jsforce=require(_0x1918('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1918('0x9'));var querystring=require(_0x1918('0xe'));var Papa=require(_0x1918('0xf'));var Redis=require(_0x1918('0x10'));var authService=require(_0x1918('0x11'));var qs=require(_0x1918('0x12'));var as=require(_0x1918('0x13'));var hardwareService=require(_0x1918('0x14'));var logger=require(_0x1918('0x15'))(_0x1918('0x16'));var utils=require(_0x1918('0x17'));var config=require(_0x1918('0x18'));var licenseUtil=require(_0x1918('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x410f89,_0x38dc6e){_0x38dc6e=_0x38dc6e||0xcc;return function(_0x11887b){if(_0x11887b){return _0x410f89[_0x1918('0x1a')](_0x38dc6e);}return _0x410f89[_0x1918('0x1b')](_0x38dc6e)[_0x1918('0x1c')]();};}function respondWithResult(_0x9d3089,_0x5bfb82){_0x5bfb82=_0x5bfb82||0xc8;return function(_0x255f6f){if(_0x255f6f){return _0x9d3089[_0x1918('0x1b')](_0x5bfb82)[_0x1918('0x1d')](_0x255f6f);}};}function respondWithFilteredResult(_0x210137,_0x52d2ed){return function(_0x5dafec){if(_0x5dafec){var _0x4947b5=typeof _0x52d2ed[_0x1918('0x1e')]===_0x1918('0x1f')&&typeof _0x52d2ed[_0x1918('0x20')]==='undefined';var _0x52087d=_0x5dafec['count'];var _0x7c2a35=_0x4947b5?0x0:_0x52d2ed[_0x1918('0x1e')];var _0x4bda90=_0x4947b5?_0x5dafec['count']:_0x52d2ed['offset']+_0x52d2ed[_0x1918('0x20')];var _0x153a72;if(_0x4bda90>=_0x52087d){_0x4bda90=_0x52087d;_0x153a72=0xc8;}else{_0x153a72=0xce;}_0x210137[_0x1918('0x1b')](_0x153a72);return _0x210137['set'](_0x1918('0x21'),_0x7c2a35+'-'+_0x4bda90+'/'+_0x52087d)[_0x1918('0x1d')](_0x5dafec);}return null;};}function patchUpdates(_0x1ff297){return function(_0x138932){try{jsonpatch[_0x1918('0x22')](_0x138932,_0x1ff297,!![]);}catch(_0x23ab73){return BPromise[_0x1918('0x23')](_0x23ab73);}return _0x138932['save']();};}function saveUpdates(_0x40e773,_0x108fb2){return function(_0x267530){if(_0x267530){return _0x267530[_0x1918('0x24')](_0x40e773)[_0x1918('0x25')](function(_0x4b24a8){return _0x4b24a8;});}return null;};}function removeEntity(_0xae2e3f,_0x5b4407){return function(_0x57e10d){if(_0x57e10d){return _0x57e10d['destroy']()[_0x1918('0x25')](function(){_0xae2e3f[_0x1918('0x1b')](0xcc)[_0x1918('0x1c')]();});}};}function handleEntityNotFound(_0x3e0532,_0x256d89){return function(_0x2035fe){if(!_0x2035fe){_0x3e0532[_0x1918('0x1a')](0x194);}return _0x2035fe;};}function handleError(_0x132403,_0x139127){_0x139127=_0x139127||0x1f4;return function(_0x2b74ee){logger[_0x1918('0x26')](_0x2b74ee[_0x1918('0x27')]);if(_0x2b74ee[_0x1918('0x28')]){delete _0x2b74ee['name'];}_0x132403[_0x1918('0x1b')](_0x139127)['send'](_0x2b74ee);};}exports[_0x1918('0x29')]=function(_0x1689ce,_0x5b8f9c){var _0x8ca18b={},_0x32dd3b={},_0x1c7327={'count':0x0,'rows':[]};var _0x13cf57=_[_0x1918('0x2a')](db[_0x1918('0x2b')]['rawAttributes'],function(_0x351405){return{'name':_0x351405[_0x1918('0x2c')],'type':_0x351405[_0x1918('0x2d')]['key']};});_0x32dd3b[_0x1918('0x2e')]=_[_0x1918('0x2a')](_0x13cf57,_0x1918('0x28'));_0x32dd3b[_0x1918('0x2f')]=_[_0x1918('0x30')](_0x1689ce[_0x1918('0x2f')]);_0x32dd3b[_0x1918('0x31')]=_[_0x1918('0x32')](_0x32dd3b[_0x1918('0x2e')],_0x32dd3b['query']);_0x8ca18b[_0x1918('0x33')]=_[_0x1918('0x32')](_0x32dd3b['model'],qs[_0x1918('0x34')](_0x1689ce[_0x1918('0x2f')][_0x1918('0x34')]));_0x8ca18b[_0x1918('0x33')]=_0x8ca18b['attributes'][_0x1918('0x35')]?_0x8ca18b[_0x1918('0x33')]:_0x32dd3b[_0x1918('0x2e')];if(!_0x1689ce[_0x1918('0x2f')][_0x1918('0x36')](_0x1918('0x37'))){_0x8ca18b[_0x1918('0x20')]=qs[_0x1918('0x20')](_0x1689ce[_0x1918('0x2f')][_0x1918('0x20')]);_0x8ca18b[_0x1918('0x1e')]=qs['offset'](_0x1689ce[_0x1918('0x2f')][_0x1918('0x1e')]);}_0x8ca18b[_0x1918('0x38')]=qs[_0x1918('0x39')](_0x1689ce[_0x1918('0x2f')][_0x1918('0x39')]);_0x8ca18b[_0x1918('0x3a')]=qs[_0x1918('0x31')](_[_0x1918('0x3b')](_0x1689ce[_0x1918('0x2f')],_0x32dd3b[_0x1918('0x31')]),_0x13cf57);if(_0x1689ce[_0x1918('0x2f')][_0x1918('0x3c')]){_0x8ca18b[_0x1918('0x3a')]=_[_0x1918('0x3d')](_0x8ca18b[_0x1918('0x3a')],{'$or':_['map'](_0x13cf57,function(_0x20fd82){if(_0x20fd82['type']!==_0x1918('0x3e')){var _0xc9a3dc={};_0xc9a3dc[_0x20fd82[_0x1918('0x28')]]={'$like':'%'+_0x1689ce[_0x1918('0x2f')][_0x1918('0x3c')]+'%'};return _0xc9a3dc;}})});}_0x8ca18b=_[_0x1918('0x3d')]({},_0x8ca18b,_0x1689ce[_0x1918('0x3f')]);var _0x11d6de={'where':_0x8ca18b[_0x1918('0x3a')]};return db['FaxQueueReport'][_0x1918('0x40')](_0x11d6de)['then'](function(_0x3ce259){_0x1c7327[_0x1918('0x40')]=_0x3ce259;if(_0x1689ce['query']['includeAll']){_0x8ca18b['include']=[{'all':!![]}];}return db[_0x1918('0x2b')][_0x1918('0x41')](_0x8ca18b);})[_0x1918('0x25')](function(_0x50253e){_0x1c7327[_0x1918('0x42')]=_0x50253e;return _0x1c7327;})[_0x1918('0x25')](respondWithFilteredResult(_0x5b8f9c,_0x8ca18b))[_0x1918('0x43')](handleError(_0x5b8f9c,null));};exports[_0x1918('0x44')]=function(_0x5f328b,_0xfe741d){var _0x4f59d3={'raw':!![],'where':{'id':_0x5f328b[_0x1918('0x45')]['id']}},_0x559fab={};_0x559fab[_0x1918('0x2e')]=_['keys'](db[_0x1918('0x2b')][_0x1918('0x46')]);_0x559fab[_0x1918('0x2f')]=_[_0x1918('0x30')](_0x5f328b[_0x1918('0x2f')]);_0x559fab[_0x1918('0x31')]=_[_0x1918('0x32')](_0x559fab['model'],_0x559fab[_0x1918('0x2f')]);_0x4f59d3[_0x1918('0x33')]=_['intersection'](_0x559fab['model'],qs[_0x1918('0x34')](_0x5f328b[_0x1918('0x2f')][_0x1918('0x34')]));_0x4f59d3[_0x1918('0x33')]=_0x4f59d3[_0x1918('0x33')][_0x1918('0x35')]?_0x4f59d3[_0x1918('0x33')]:_0x559fab[_0x1918('0x2e')];if(_0x5f328b[_0x1918('0x2f')][_0x1918('0x47')]){_0x4f59d3[_0x1918('0x48')]=[{'all':!![]}];}_0x4f59d3=_[_0x1918('0x3d')]({},_0x4f59d3,_0x5f328b[_0x1918('0x3f')]);return db[_0x1918('0x2b')][_0x1918('0x49')](_0x4f59d3)['then'](handleEntityNotFound(_0xfe741d,null))[_0x1918('0x25')](respondWithResult(_0xfe741d,null))[_0x1918('0x43')](handleError(_0xfe741d,null));};exports[_0x1918('0x4a')]=function(_0x1917f0,_0x1a0f1f){return db['FaxQueueReport'][_0x1918('0x4a')](_0x1917f0['body'],{})[_0x1918('0x25')](respondWithResult(_0x1a0f1f,0xc9))[_0x1918('0x43')](handleError(_0x1a0f1f,null));};exports['update']=function(_0x301c1e,_0x54e117){if(_0x301c1e['body']['id']){delete _0x301c1e[_0x1918('0x4b')]['id'];}return db[_0x1918('0x2b')][_0x1918('0x49')]({'where':{'id':_0x301c1e['params']['id']}})[_0x1918('0x25')](handleEntityNotFound(_0x54e117,null))[_0x1918('0x25')](saveUpdates(_0x301c1e['body'],null))[_0x1918('0x25')](respondWithResult(_0x54e117,null))[_0x1918('0x43')](handleError(_0x54e117,null));};exports['destroy']=function(_0x37cd84,_0x54932e){return db['FaxQueueReport']['find']({'where':{'id':_0x37cd84[_0x1918('0x45')]['id']}})[_0x1918('0x25')](handleEntityNotFound(_0x54932e,null))['then'](removeEntity(_0x54932e,null))[_0x1918('0x43')](handleError(_0x54932e,null));};exports[_0x1918('0x4c')]=function(_0x14e57a,_0x1e75ec){return db[_0x1918('0x2b')]['describe']()[_0x1918('0x25')](respondWithResult(_0x1e75ec,null))[_0x1918('0x43')](handleError(_0x1e75ec,null));};
\ No newline at end of file
index ac76edf..8bd8778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2e9e29,_0x129d1f){var _0x1fb9c9=function(_0x123aeb){while(--_0x123aeb){_0x2e9e29['push'](_0x2e9e29['shift']());}};_0x1fb9c9(++_0x129d1f);}(_0x53ec,0x192));var _0xc53e=function(_0x5d2507,_0x556fac){_0x5d2507=_0x5d2507-0x0;var _0x198c07=_0x53ec[_0x5d2507];return _0x198c07;};'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':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4975=['path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x342bf2,_0x139ce7){var _0x547f8d=function(_0x3cab0c){while(--_0x3cab0c){_0x342bf2['push'](_0x342bf2['shift']());}};_0x547f8d(++_0x139ce7);}(_0x4975,0x86));var _0x5497=function(_0x52ea18,_0x19762f){_0x52ea18=_0x52ea18-0x0;var _0x7f0bf3=_0x4975[_0x52ea18];return _0x7f0bf3;};'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':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 8bb4358..1987438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab69=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateFaxQueueReport','create','body','raw','catch','UpdateFaxQueueReport','update','options','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x82d05d,_0x27d79c){var _0x3690c5=function(_0x16abce){while(--_0x16abce){_0x82d05d['push'](_0x82d05d['shift']());}};_0x3690c5(++_0x27d79c);}(_0xab69,0x139));var _0x9ab6=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xab69[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x9ab6('0x0'));var util=require(_0x9ab6('0x1'));var moment=require(_0x9ab6('0x2'));var BPromise=require(_0x9ab6('0x3'));var rs=require(_0x9ab6('0x4'));var fs=require('fs');var Redis=require(_0x9ab6('0x5'));var db=require(_0x9ab6('0x6'))['db'];var utils=require(_0x9ab6('0x7'));var logger=require(_0x9ab6('0x8'))('rpc');var config=require(_0x9ab6('0x9'));var jayson=require(_0x9ab6('0xa'));var client=jayson[_0x9ab6('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c9b25,_0x545492,_0x1b2b30){return new BPromise(function(_0x55e5ee,_0x1b217f){return client[_0x9ab6('0xc')](_0x5c9b25,_0x1b2b30)[_0x9ab6('0xd')](function(_0x46ffff){logger[_0x9ab6('0xe')](_0x9ab6('0xf'),_0x545492,_0x9ab6('0x10'));logger[_0x9ab6('0x11')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x545492,_0x9ab6('0x10'),JSON[_0x9ab6('0x12')](_0x46ffff));if(_0x46ffff[_0x9ab6('0x13')]){if(_0x46ffff[_0x9ab6('0x13')][_0x9ab6('0x14')]===0x1f4){logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x545492,_0x46ffff[_0x9ab6('0x13')][_0x9ab6('0x15')]);return _0x1b217f(_0x46ffff[_0x9ab6('0x13')][_0x9ab6('0x15')]);}logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x545492,_0x46ffff[_0x9ab6('0x13')][_0x9ab6('0x15')]);return _0x55e5ee(_0x46ffff[_0x9ab6('0x13')]['message']);}else{logger[_0x9ab6('0xe')](_0x9ab6('0xf'),_0x545492,_0x9ab6('0x10'));_0x55e5ee(_0x46ffff[_0x9ab6('0x16')][_0x9ab6('0x15')]);}})['catch'](function(_0x4c952e){logger[_0x9ab6('0x13')](_0x9ab6('0xf'),_0x545492,_0x4c952e);_0x1b217f(_0x4c952e);});});}exports[_0x9ab6('0x17')]=function(_0x24873c){var _0x8e227e=this;return new Promise(function(_0x57ef0f,_0x3d4492){return db['FaxQueueReport'][_0x9ab6('0x18')](_0x24873c[_0x9ab6('0x19')],{'raw':_0x24873c['options']?_0x24873c['options'][_0x9ab6('0x1a')]===undefined?!![]:![]:!![]})[_0x9ab6('0xd')](function(_0x2db606){logger[_0x9ab6('0xe')](_0x9ab6('0x17'),_0x24873c);logger[_0x9ab6('0x11')](_0x9ab6('0x17'),_0x24873c,JSON['stringify'](_0x2db606));_0x57ef0f(_0x2db606);})[_0x9ab6('0x1b')](function(_0x17b246){logger[_0x9ab6('0x13')]('CreateFaxQueueReport',_0x17b246[_0x9ab6('0x15')],_0x24873c);_0x3d4492(_0x8e227e['error'](0x1f4,_0x17b246[_0x9ab6('0x15')]));});});};exports[_0x9ab6('0x1c')]=function(_0x36df1e){var _0xc5eea1=this;return new Promise(function(_0x233a68,_0x3d61be){return db['FaxQueueReport'][_0x9ab6('0x1d')](_0x36df1e[_0x9ab6('0x19')],{'raw':_0x36df1e[_0x9ab6('0x1e')]?_0x36df1e[_0x9ab6('0x1e')][_0x9ab6('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x36df1e['options']?_0x36df1e[_0x9ab6('0x1e')]['where']||null:null,'attributes':_0x36df1e['options']?_0x36df1e['options'][_0x9ab6('0x1f')]||null:null,'limit':_0x36df1e['options']?_0x36df1e[_0x9ab6('0x1e')]['limit']||null:null})[_0x9ab6('0xd')](function(_0x59bb6f){logger[_0x9ab6('0xe')](_0x9ab6('0x1c'),_0x36df1e);logger[_0x9ab6('0x11')]('UpdateFaxQueueReport',_0x36df1e,JSON['stringify'](_0x59bb6f));_0x233a68(_0x59bb6f);})['catch'](function(_0x5aa88c){logger[_0x9ab6('0x13')](_0x9ab6('0x1c'),_0x5aa88c['message'],_0x36df1e);_0x3d61be(_0xc5eea1[_0x9ab6('0x13')](0x1f4,_0x5aa88c[_0x9ab6('0x15')]));});});};
\ No newline at end of file
+var _0x5432=['request\x20sent','error','code','message','result','catch','create','body','options','raw','then','CreateFaxQueueReport','debug','stringify','UpdateFaxQueueReport','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','FaxQueueReport,\x20%s,\x20%s','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x2183cb,_0x4e2cf3){var _0x1d70bc=function(_0x16df8f){while(--_0x16df8f){_0x2183cb['push'](_0x2183cb['shift']());}};_0x1d70bc(++_0x4e2cf3);}(_0x5432,0x1cc));var _0x2543=function(_0x2c98ac,_0x231309){_0x2c98ac=_0x2c98ac-0x0;var _0x58fa4c=_0x5432[_0x2c98ac];return _0x58fa4c;};'use strict';var _=require(_0x2543('0x0'));var util=require(_0x2543('0x1'));var moment=require(_0x2543('0x2'));var BPromise=require(_0x2543('0x3'));var rs=require(_0x2543('0x4'));var fs=require('fs');var Redis=require(_0x2543('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2543('0x6'));var logger=require(_0x2543('0x7'))(_0x2543('0x8'));var config=require(_0x2543('0x9'));var jayson=require(_0x2543('0xa'));var client=jayson['client'][_0x2543('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5d7b00,_0x8c8763,_0x837559){return new BPromise(function(_0x485de9,_0x3df752){return client[_0x2543('0xc')](_0x5d7b00,_0x837559)['then'](function(_0x5bc904){logger[_0x2543('0xd')](_0x2543('0xe'),_0x8c8763,'request\x20sent');logger['debug'](_0x2543('0xf'),_0x8c8763,_0x2543('0x10'),JSON['stringify'](_0x5bc904));if(_0x5bc904[_0x2543('0x11')]){if(_0x5bc904['error'][_0x2543('0x12')]===0x1f4){logger['error'](_0x2543('0xe'),_0x8c8763,_0x5bc904[_0x2543('0x11')][_0x2543('0x13')]);return _0x3df752(_0x5bc904['error'][_0x2543('0x13')]);}logger[_0x2543('0x11')](_0x2543('0xe'),_0x8c8763,_0x5bc904[_0x2543('0x11')][_0x2543('0x13')]);return _0x485de9(_0x5bc904[_0x2543('0x11')][_0x2543('0x13')]);}else{logger[_0x2543('0xd')]('FaxQueueReport,\x20%s,\x20%s',_0x8c8763,'request\x20sent');_0x485de9(_0x5bc904[_0x2543('0x14')]['message']);}})[_0x2543('0x15')](function(_0x41cb33){logger[_0x2543('0x11')](_0x2543('0xe'),_0x8c8763,_0x41cb33);_0x3df752(_0x41cb33);});});}exports['CreateFaxQueueReport']=function(_0x11e688){var _0x1287d0=this;return new Promise(function(_0x4b563c,_0x19ca88){return db['FaxQueueReport'][_0x2543('0x16')](_0x11e688[_0x2543('0x17')],{'raw':_0x11e688[_0x2543('0x18')]?_0x11e688[_0x2543('0x18')][_0x2543('0x19')]===undefined?!![]:![]:!![]})[_0x2543('0x1a')](function(_0x40efd3){logger['info'](_0x2543('0x1b'),_0x11e688);logger[_0x2543('0x1c')](_0x2543('0x1b'),_0x11e688,JSON[_0x2543('0x1d')](_0x40efd3));_0x4b563c(_0x40efd3);})[_0x2543('0x15')](function(_0x131c72){logger[_0x2543('0x11')](_0x2543('0x1b'),_0x131c72['message'],_0x11e688);_0x19ca88(_0x1287d0['error'](0x1f4,_0x131c72['message']));});});};exports[_0x2543('0x1e')]=function(_0x9248f4){var _0x11abfb=this;return new Promise(function(_0x398976,_0x4d7e4a){return db['FaxQueueReport'][_0x2543('0x1f')](_0x9248f4[_0x2543('0x17')],{'raw':_0x9248f4[_0x2543('0x18')]?_0x9248f4[_0x2543('0x18')][_0x2543('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x9248f4[_0x2543('0x18')]?_0x9248f4[_0x2543('0x18')][_0x2543('0x20')]||null:null,'attributes':_0x9248f4[_0x2543('0x18')]?_0x9248f4[_0x2543('0x18')][_0x2543('0x21')]||null:null,'limit':_0x9248f4[_0x2543('0x18')]?_0x9248f4[_0x2543('0x18')]['limit']||null:null})[_0x2543('0x1a')](function(_0x14a14f){logger['info'](_0x2543('0x1e'),_0x9248f4);logger['debug'](_0x2543('0x1e'),_0x9248f4,JSON[_0x2543('0x1d')](_0x14a14f));_0x398976(_0x14a14f);})['catch'](function(_0x2904c9){logger[_0x2543('0x11')](_0x2543('0x1e'),_0x2904c9[_0x2543('0x13')],_0x9248f4);_0x4d7e4a(_0x11abfb['error'](0x1f4,_0x2904c9['message']));});});};
\ No newline at end of file
index 512e183..6d8c3f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf7b=['show','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index'];(function(_0x2f6eb4,_0x31bd28){var _0x5618a2=function(_0x264fcf){while(--_0x264fcf){_0x2f6eb4['push'](_0x2f6eb4['shift']());}};_0x5618a2(++_0x31bd28);}(_0xbf7b,0x86));var _0xbbf7=function(_0x2a0824,_0x21d97a){_0x2a0824=_0x2a0824-0x0;var _0x1a78f7=_0xbf7b[_0x2a0824];return _0x1a78f7;};'use strict';var multer=require(_0xbbf7('0x0'));var util=require(_0xbbf7('0x1'));var path=require(_0xbbf7('0x2'));var timeout=require(_0xbbf7('0x3'));var express=require(_0xbbf7('0x4'));var router=express[_0xbbf7('0x5')]();var fs_extra=require(_0xbbf7('0x6'));var auth=require(_0xbbf7('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xbbf7('0x8'));var controller=require(_0xbbf7('0x9'));router[_0xbbf7('0xa')]('/',auth[_0xbbf7('0xb')](),controller[_0xbbf7('0xc')]);router[_0xbbf7('0xa')]('/describe',auth[_0xbbf7('0xb')](),controller['describe']);router[_0xbbf7('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xbbf7('0xd')]);router[_0xbbf7('0xe')]('/',auth[_0xbbf7('0xb')](),controller[_0xbbf7('0xf')]);router[_0xbbf7('0x10')](_0xbbf7('0x11'),auth[_0xbbf7('0xb')](),controller[_0xbbf7('0x12')]);router['delete'](_0xbbf7('0x11'),auth[_0xbbf7('0xb')](),controller[_0xbbf7('0x13')]);module[_0xbbf7('0x14')]=router;
\ No newline at end of file
+var _0x196f=['../../components/interaction/service','../../config/environment','get','/describe','create','put','/:id','isAuthenticated','update','delete','destroy','multer','util','path','express','Router','fs-extra'];(function(_0x4f28de,_0x3c775c){var _0x25c1fb=function(_0x1f8f2c){while(--_0x1f8f2c){_0x4f28de['push'](_0x4f28de['shift']());}};_0x25c1fb(++_0x3c775c);}(_0x196f,0x1b4));var _0xf196=function(_0x4628a5,_0x43f7a0){_0x4628a5=_0x4628a5-0x0;var _0xfe46c7=_0x196f[_0x4628a5];return _0xfe46c7;};'use strict';var multer=require(_0xf196('0x0'));var util=require(_0xf196('0x1'));var path=require(_0xf196('0x2'));var timeout=require('connect-timeout');var express=require(_0xf196('0x3'));var router=express[_0xf196('0x4')]();var fs_extra=require(_0xf196('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf196('0x6'));var config=require(_0xf196('0x7'));var controller=require('./faxQueueReport.controller');router[_0xf196('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf196('0x8')](_0xf196('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0xf196('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xf196('0xa')]);router[_0xf196('0xb')](_0xf196('0xc'),auth[_0xf196('0xd')](),controller[_0xf196('0xe')]);router[_0xf196('0xf')](_0xf196('0xc'),auth[_0xf196('0xd')](),controller[_0xf196('0x10')]);module['exports']=router;
\ No newline at end of file
index 7dd28c9..4108b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x161875,_0x5d8c8d){var _0xbec79=function(_0x38a127){while(--_0x38a127){_0x161875['push'](_0x161875['shift']());}};_0xbec79(++_0x5d8c8d);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x54e4ec,_0x183144){_0x54e4ec=_0x54e4ec-0x0;var _0x44ef91=_0xf3cd[_0x54e4ec];return _0x44ef91;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x923991,_0x481465){var _0x191cfc=function(_0x6412e1){while(--_0x6412e1){_0x923991['push'](_0x923991['shift']());}};_0x191cfc(++_0x481465);}(_0x34e8,0x12c));var _0x834e=function(_0x410b65,_0x345809){_0x410b65=_0x410b65-0x0;var _0x33a319=_0x34e8[_0x410b65];return _0x33a319;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index d9f6697..416d84a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d30=['map','keys','query','filters','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','rows','show','params','intersection','length','include','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','destroy','then','end','error','stack','name','index','FaxTransferReport','rawAttributes','fieldName','type','model'];(function(_0xa5e821,_0x4dd2f6){var _0x62d0cd=function(_0x119f86){while(--_0x119f86){_0xa5e821['push'](_0xa5e821['shift']());}};_0x62d0cd(++_0x4dd2f6);}(_0x2d30,0xf4));var _0x02d3=function(_0x241eb9,_0x5ccc3f){_0x241eb9=_0x241eb9-0x0;var _0x4f916b=_0x2d30[_0x241eb9];return _0x4f916b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x02d3('0x0'));var zipdir=require(_0x02d3('0x1'));var jsonpatch=require(_0x02d3('0x2'));var rp=require(_0x02d3('0x3'));var moment=require(_0x02d3('0x4'));var BPromise=require(_0x02d3('0x5'));var Mustache=require(_0x02d3('0x6'));var util=require(_0x02d3('0x7'));var path=require(_0x02d3('0x8'));var sox=require('sox');var csv=require(_0x02d3('0x9'));var ejs=require(_0x02d3('0xa'));var fs=require('fs');var fs_extra=require(_0x02d3('0xb'));var _=require(_0x02d3('0xc'));var squel=require('squel');var crypto=require(_0x02d3('0xd'));var jsforce=require(_0x02d3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x02d3('0x9'));var querystring=require('querystring');var Papa=require(_0x02d3('0xf'));var Redis=require(_0x02d3('0x10'));var authService=require(_0x02d3('0x11'));var qs=require(_0x02d3('0x12'));var as=require(_0x02d3('0x13'));var hardwareService=require(_0x02d3('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x02d3('0x15'));var config=require(_0x02d3('0x16'));var licenseUtil=require(_0x02d3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e16b0,_0xd751c8){_0xd751c8=_0xd751c8||0xcc;return function(_0x337731){if(_0x337731){return _0x1e16b0[_0x02d3('0x18')](_0xd751c8);}return _0x1e16b0[_0x02d3('0x19')](_0xd751c8)['end']();};}function respondWithResult(_0x1644b2,_0x3d7b91){_0x3d7b91=_0x3d7b91||0xc8;return function(_0x22ced0){if(_0x22ced0){return _0x1644b2[_0x02d3('0x19')](_0x3d7b91)['json'](_0x22ced0);}};}function respondWithFilteredResult(_0x30176f,_0x279e5d){return function(_0x575082){if(_0x575082){var _0x2cf5d7=typeof _0x279e5d[_0x02d3('0x1a')]==='undefined'&&typeof _0x279e5d[_0x02d3('0x1b')]===_0x02d3('0x1c');var _0x5f0d8c=_0x575082[_0x02d3('0x1d')];var _0x1d261d=_0x2cf5d7?0x0:_0x279e5d[_0x02d3('0x1a')];var _0x56405f=_0x2cf5d7?_0x575082[_0x02d3('0x1d')]:_0x279e5d[_0x02d3('0x1a')]+_0x279e5d[_0x02d3('0x1b')];var _0x433dcc;if(_0x56405f>=_0x5f0d8c){_0x56405f=_0x5f0d8c;_0x433dcc=0xc8;}else{_0x433dcc=0xce;}_0x30176f[_0x02d3('0x19')](_0x433dcc);return _0x30176f['set'](_0x02d3('0x1e'),_0x1d261d+'-'+_0x56405f+'/'+_0x5f0d8c)[_0x02d3('0x1f')](_0x575082);}return null;};}function patchUpdates(_0x31aa8c){return function(_0x2fee19){try{jsonpatch[_0x02d3('0x20')](_0x2fee19,_0x31aa8c,!![]);}catch(_0x414fe5){return BPromise[_0x02d3('0x21')](_0x414fe5);}return _0x2fee19[_0x02d3('0x22')]();};}function saveUpdates(_0x251e93,_0x443ccc){return function(_0x41b94c){if(_0x41b94c){return _0x41b94c[_0x02d3('0x23')](_0x251e93)['then'](function(_0x3a33bb){return _0x3a33bb;});}return null;};}function removeEntity(_0x22eee0,_0x173ba4){return function(_0x2dd869){if(_0x2dd869){return _0x2dd869[_0x02d3('0x24')]()[_0x02d3('0x25')](function(){_0x22eee0[_0x02d3('0x19')](0xcc)[_0x02d3('0x26')]();});}};}function handleEntityNotFound(_0x58b00c,_0x3ad212){return function(_0x4ce17b){if(!_0x4ce17b){_0x58b00c['sendStatus'](0x194);}return _0x4ce17b;};}function handleError(_0x259c26,_0x3fbd17){_0x3fbd17=_0x3fbd17||0x1f4;return function(_0x453d8f){logger[_0x02d3('0x27')](_0x453d8f[_0x02d3('0x28')]);if(_0x453d8f[_0x02d3('0x29')]){delete _0x453d8f[_0x02d3('0x29')];}_0x259c26[_0x02d3('0x19')](_0x3fbd17)['send'](_0x453d8f);};}exports[_0x02d3('0x2a')]=function(_0x162ab5,_0x17925d){var _0x119ae5={},_0x5f4ee0={},_0x1362fd={'count':0x0,'rows':[]};var _0x48209c=_['map'](db[_0x02d3('0x2b')][_0x02d3('0x2c')],function(_0x2c5dbc){return{'name':_0x2c5dbc[_0x02d3('0x2d')],'type':_0x2c5dbc[_0x02d3('0x2e')]['key']};});_0x5f4ee0[_0x02d3('0x2f')]=_[_0x02d3('0x30')](_0x48209c,_0x02d3('0x29'));_0x5f4ee0['query']=_[_0x02d3('0x31')](_0x162ab5[_0x02d3('0x32')]);_0x5f4ee0[_0x02d3('0x33')]=_['intersection'](_0x5f4ee0['model'],_0x5f4ee0[_0x02d3('0x32')]);_0x119ae5[_0x02d3('0x34')]=_['intersection'](_0x5f4ee0[_0x02d3('0x2f')],qs[_0x02d3('0x35')](_0x162ab5[_0x02d3('0x32')][_0x02d3('0x35')]));_0x119ae5[_0x02d3('0x34')]=_0x119ae5[_0x02d3('0x34')]['length']?_0x119ae5[_0x02d3('0x34')]:_0x5f4ee0[_0x02d3('0x2f')];if(!_0x162ab5[_0x02d3('0x32')][_0x02d3('0x36')]('nolimit')){_0x119ae5[_0x02d3('0x1b')]=qs[_0x02d3('0x1b')](_0x162ab5[_0x02d3('0x32')]['limit']);_0x119ae5['offset']=qs[_0x02d3('0x1a')](_0x162ab5[_0x02d3('0x32')][_0x02d3('0x1a')]);}_0x119ae5[_0x02d3('0x37')]=qs[_0x02d3('0x38')](_0x162ab5['query']['sort']);_0x119ae5['where']=qs[_0x02d3('0x33')](_['pick'](_0x162ab5[_0x02d3('0x32')],_0x5f4ee0[_0x02d3('0x33')]),_0x48209c);if(_0x162ab5[_0x02d3('0x32')]['filter']){_0x119ae5[_0x02d3('0x39')]=_[_0x02d3('0x3a')](_0x119ae5['where'],{'$or':_['map'](_0x48209c,function(_0x1e3e25){if(_0x1e3e25[_0x02d3('0x2e')]!==_0x02d3('0x3b')){var _0x474e86={};_0x474e86[_0x1e3e25[_0x02d3('0x29')]]={'$like':'%'+_0x162ab5[_0x02d3('0x32')][_0x02d3('0x3c')]+'%'};return _0x474e86;}})});}_0x119ae5=_[_0x02d3('0x3a')]({},_0x119ae5,_0x162ab5[_0x02d3('0x3d')]);var _0x14b353={'where':_0x119ae5['where']};return db[_0x02d3('0x2b')][_0x02d3('0x1d')](_0x14b353)[_0x02d3('0x25')](function(_0x1f60a5){_0x1362fd[_0x02d3('0x1d')]=_0x1f60a5;if(_0x162ab5[_0x02d3('0x32')]['includeAll']){_0x119ae5['include']=[{'all':!![]}];}return db['FaxTransferReport']['findAll'](_0x119ae5);})[_0x02d3('0x25')](function(_0x195882){_0x1362fd[_0x02d3('0x3e')]=_0x195882;return _0x1362fd;})['then'](respondWithFilteredResult(_0x17925d,_0x119ae5))['catch'](handleError(_0x17925d,null));};exports[_0x02d3('0x3f')]=function(_0x24116e,_0x41f483){var _0x6de762={'raw':!![],'where':{'id':_0x24116e[_0x02d3('0x40')]['id']}},_0x2db84b={};_0x2db84b['model']=_[_0x02d3('0x31')](db['FaxTransferReport'][_0x02d3('0x2c')]);_0x2db84b[_0x02d3('0x32')]=_[_0x02d3('0x31')](_0x24116e[_0x02d3('0x32')]);_0x2db84b[_0x02d3('0x33')]=_['intersection'](_0x2db84b[_0x02d3('0x2f')],_0x2db84b['query']);_0x6de762[_0x02d3('0x34')]=_[_0x02d3('0x41')](_0x2db84b['model'],qs[_0x02d3('0x35')](_0x24116e[_0x02d3('0x32')][_0x02d3('0x35')]));_0x6de762[_0x02d3('0x34')]=_0x6de762[_0x02d3('0x34')][_0x02d3('0x42')]?_0x6de762['attributes']:_0x2db84b[_0x02d3('0x2f')];if(_0x24116e[_0x02d3('0x32')]['includeAll']){_0x6de762[_0x02d3('0x43')]=[{'all':!![]}];}_0x6de762=_[_0x02d3('0x3a')]({},_0x6de762,_0x24116e['options']);return db[_0x02d3('0x2b')][_0x02d3('0x44')](_0x6de762)[_0x02d3('0x25')](handleEntityNotFound(_0x41f483,null))[_0x02d3('0x25')](respondWithResult(_0x41f483,null))[_0x02d3('0x45')](handleError(_0x41f483,null));};exports[_0x02d3('0x46')]=function(_0x2db3ed,_0x13da1b){return db[_0x02d3('0x2b')][_0x02d3('0x46')](_0x2db3ed[_0x02d3('0x47')],{})[_0x02d3('0x25')](respondWithResult(_0x13da1b,0xc9))[_0x02d3('0x45')](handleError(_0x13da1b,null));};exports[_0x02d3('0x23')]=function(_0x2e376c,_0xf67eda){if(_0x2e376c[_0x02d3('0x47')]['id']){delete _0x2e376c[_0x02d3('0x47')]['id'];}return db[_0x02d3('0x2b')][_0x02d3('0x44')]({'where':{'id':_0x2e376c[_0x02d3('0x40')]['id']}})['then'](handleEntityNotFound(_0xf67eda,null))[_0x02d3('0x25')](saveUpdates(_0x2e376c[_0x02d3('0x47')],null))[_0x02d3('0x25')](respondWithResult(_0xf67eda,null))[_0x02d3('0x45')](handleError(_0xf67eda,null));};exports['destroy']=function(_0x4a5173,_0x4757d8){return db[_0x02d3('0x2b')]['find']({'where':{'id':_0x4a5173[_0x02d3('0x40')]['id']}})[_0x02d3('0x25')](handleEntityNotFound(_0x4757d8,null))[_0x02d3('0x25')](removeEntity(_0x4757d8,null))[_0x02d3('0x45')](handleError(_0x4757d8,null));};exports[_0x02d3('0x48')]=function(_0x4f146a,_0x532fb3){return db['FaxTransferReport'][_0x02d3('0x48')]()[_0x02d3('0x25')](respondWithResult(_0x532fb3,null))['catch'](handleError(_0x532fb3,null));};
\ No newline at end of file
+var _0x0ba0=['../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','stack','name','index','FaxTransferReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','findAll','catch','show','params','find','create','body','describe','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x3ec1da,_0x1e36f5){var _0x472358=function(_0x1d41b1){while(--_0x1d41b1){_0x3ec1da['push'](_0x3ec1da['shift']());}};_0x472358(++_0x1e36f5);}(_0x0ba0,0xba));var _0x00ba=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x0ba0[_0x4a53d];return _0x27410e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x00ba('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x00ba('0x1'));var moment=require(_0x00ba('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x00ba('0x3'));var path=require(_0x00ba('0x4'));var sox=require('sox');var csv=require(_0x00ba('0x5'));var ejs=require(_0x00ba('0x6'));var fs=require('fs');var fs_extra=require(_0x00ba('0x7'));var _=require(_0x00ba('0x8'));var squel=require('squel');var crypto=require(_0x00ba('0x9'));var jsforce=require(_0x00ba('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x00ba('0x5'));var querystring=require(_0x00ba('0xb'));var Papa=require('papaparse');var Redis=require(_0x00ba('0xc'));var authService=require(_0x00ba('0xd'));var qs=require(_0x00ba('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x00ba('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x00ba('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x00ba('0x11'));var db=require(_0x00ba('0x12'))['db'];function respondWithStatusCode(_0x31e9d2,_0x3f7c80){_0x3f7c80=_0x3f7c80||0xcc;return function(_0x47986b){if(_0x47986b){return _0x31e9d2[_0x00ba('0x13')](_0x3f7c80);}return _0x31e9d2[_0x00ba('0x14')](_0x3f7c80)[_0x00ba('0x15')]();};}function respondWithResult(_0xc35040,_0x20c141){_0x20c141=_0x20c141||0xc8;return function(_0x1e626a){if(_0x1e626a){return _0xc35040['status'](_0x20c141)['json'](_0x1e626a);}};}function respondWithFilteredResult(_0x49c5a5,_0x57ae85){return function(_0x33b65d){if(_0x33b65d){var _0x553988=typeof _0x57ae85[_0x00ba('0x16')]===_0x00ba('0x17')&&typeof _0x57ae85[_0x00ba('0x18')]==='undefined';var _0x4a01ab=_0x33b65d[_0x00ba('0x19')];var _0x2e076d=_0x553988?0x0:_0x57ae85[_0x00ba('0x16')];var _0x5b0517=_0x553988?_0x33b65d[_0x00ba('0x19')]:_0x57ae85['offset']+_0x57ae85[_0x00ba('0x18')];var _0x3de114;if(_0x5b0517>=_0x4a01ab){_0x5b0517=_0x4a01ab;_0x3de114=0xc8;}else{_0x3de114=0xce;}_0x49c5a5['status'](_0x3de114);return _0x49c5a5[_0x00ba('0x1a')]('Content-Range',_0x2e076d+'-'+_0x5b0517+'/'+_0x4a01ab)[_0x00ba('0x1b')](_0x33b65d);}return null;};}function patchUpdates(_0x3fe1c9){return function(_0x367ef4){try{jsonpatch[_0x00ba('0x1c')](_0x367ef4,_0x3fe1c9,!![]);}catch(_0xe57c36){return BPromise[_0x00ba('0x1d')](_0xe57c36);}return _0x367ef4[_0x00ba('0x1e')]();};}function saveUpdates(_0x4425c0,_0x4181d0){return function(_0x52014d){if(_0x52014d){return _0x52014d[_0x00ba('0x1f')](_0x4425c0)['then'](function(_0x165a95){return _0x165a95;});}return null;};}function removeEntity(_0x12dc19,_0x384b9e){return function(_0x7deb47){if(_0x7deb47){return _0x7deb47['destroy']()['then'](function(){_0x12dc19['status'](0xcc)[_0x00ba('0x15')]();});}};}function handleEntityNotFound(_0x43fcb6,_0x1558ef){return function(_0x558ed5){if(!_0x558ed5){_0x43fcb6[_0x00ba('0x13')](0x194);}return _0x558ed5;};}function handleError(_0x5cfc99,_0x2ff3ec){_0x2ff3ec=_0x2ff3ec||0x1f4;return function(_0x42cd60){logger['error'](_0x42cd60[_0x00ba('0x20')]);if(_0x42cd60[_0x00ba('0x21')]){delete _0x42cd60[_0x00ba('0x21')];}_0x5cfc99[_0x00ba('0x14')](_0x2ff3ec)['send'](_0x42cd60);};}exports[_0x00ba('0x22')]=function(_0x2aa065,_0x20ae1f){var _0x506de4={},_0x255fd4={},_0x3cabbf={'count':0x0,'rows':[]};var _0x217863=_['map'](db[_0x00ba('0x23')][_0x00ba('0x24')],function(_0x393e8c){return{'name':_0x393e8c[_0x00ba('0x25')],'type':_0x393e8c[_0x00ba('0x26')][_0x00ba('0x27')]};});_0x255fd4[_0x00ba('0x28')]=_[_0x00ba('0x29')](_0x217863,_0x00ba('0x21'));_0x255fd4[_0x00ba('0x2a')]=_[_0x00ba('0x2b')](_0x2aa065[_0x00ba('0x2a')]);_0x255fd4[_0x00ba('0x2c')]=_['intersection'](_0x255fd4[_0x00ba('0x28')],_0x255fd4[_0x00ba('0x2a')]);_0x506de4[_0x00ba('0x2d')]=_[_0x00ba('0x2e')](_0x255fd4[_0x00ba('0x28')],qs['fields'](_0x2aa065[_0x00ba('0x2a')][_0x00ba('0x2f')]));_0x506de4['attributes']=_0x506de4[_0x00ba('0x2d')][_0x00ba('0x30')]?_0x506de4[_0x00ba('0x2d')]:_0x255fd4[_0x00ba('0x28')];if(!_0x2aa065[_0x00ba('0x2a')][_0x00ba('0x31')]('nolimit')){_0x506de4['limit']=qs[_0x00ba('0x18')](_0x2aa065['query'][_0x00ba('0x18')]);_0x506de4['offset']=qs[_0x00ba('0x16')](_0x2aa065[_0x00ba('0x2a')][_0x00ba('0x16')]);}_0x506de4['order']=qs[_0x00ba('0x32')](_0x2aa065[_0x00ba('0x2a')][_0x00ba('0x32')]);_0x506de4[_0x00ba('0x33')]=qs['filters'](_[_0x00ba('0x34')](_0x2aa065[_0x00ba('0x2a')],_0x255fd4[_0x00ba('0x2c')]),_0x217863);if(_0x2aa065['query'][_0x00ba('0x35')]){_0x506de4[_0x00ba('0x33')]=_[_0x00ba('0x36')](_0x506de4[_0x00ba('0x33')],{'$or':_[_0x00ba('0x29')](_0x217863,function(_0x41fc0d){if(_0x41fc0d[_0x00ba('0x26')]!==_0x00ba('0x37')){var _0x294158={};_0x294158[_0x41fc0d[_0x00ba('0x21')]]={'$like':'%'+_0x2aa065[_0x00ba('0x2a')][_0x00ba('0x35')]+'%'};return _0x294158;}})});}_0x506de4=_[_0x00ba('0x36')]({},_0x506de4,_0x2aa065[_0x00ba('0x38')]);var _0x47b1f8={'where':_0x506de4[_0x00ba('0x33')]};return db[_0x00ba('0x23')]['count'](_0x47b1f8)[_0x00ba('0x39')](function(_0x2a99b3){_0x3cabbf[_0x00ba('0x19')]=_0x2a99b3;if(_0x2aa065[_0x00ba('0x2a')][_0x00ba('0x3a')]){_0x506de4['include']=[{'all':!![]}];}return db[_0x00ba('0x23')][_0x00ba('0x3b')](_0x506de4);})[_0x00ba('0x39')](function(_0x9c1d84){_0x3cabbf['rows']=_0x9c1d84;return _0x3cabbf;})[_0x00ba('0x39')](respondWithFilteredResult(_0x20ae1f,_0x506de4))[_0x00ba('0x3c')](handleError(_0x20ae1f,null));};exports[_0x00ba('0x3d')]=function(_0x1a0e5e,_0x68fc16){var _0x1d6b79={'raw':!![],'where':{'id':_0x1a0e5e[_0x00ba('0x3e')]['id']}},_0x4d01ab={};_0x4d01ab['model']=_['keys'](db['FaxTransferReport'][_0x00ba('0x24')]);_0x4d01ab['query']=_['keys'](_0x1a0e5e[_0x00ba('0x2a')]);_0x4d01ab[_0x00ba('0x2c')]=_[_0x00ba('0x2e')](_0x4d01ab[_0x00ba('0x28')],_0x4d01ab['query']);_0x1d6b79[_0x00ba('0x2d')]=_[_0x00ba('0x2e')](_0x4d01ab[_0x00ba('0x28')],qs[_0x00ba('0x2f')](_0x1a0e5e[_0x00ba('0x2a')][_0x00ba('0x2f')]));_0x1d6b79[_0x00ba('0x2d')]=_0x1d6b79['attributes']['length']?_0x1d6b79[_0x00ba('0x2d')]:_0x4d01ab['model'];if(_0x1a0e5e[_0x00ba('0x2a')][_0x00ba('0x3a')]){_0x1d6b79['include']=[{'all':!![]}];}_0x1d6b79=_['merge']({},_0x1d6b79,_0x1a0e5e[_0x00ba('0x38')]);return db[_0x00ba('0x23')][_0x00ba('0x3f')](_0x1d6b79)[_0x00ba('0x39')](handleEntityNotFound(_0x68fc16,null))[_0x00ba('0x39')](respondWithResult(_0x68fc16,null))[_0x00ba('0x3c')](handleError(_0x68fc16,null));};exports[_0x00ba('0x40')]=function(_0x4c60f2,_0x2a9fd2){return db[_0x00ba('0x23')]['create'](_0x4c60f2[_0x00ba('0x41')],{})[_0x00ba('0x39')](respondWithResult(_0x2a9fd2,0xc9))[_0x00ba('0x3c')](handleError(_0x2a9fd2,null));};exports['update']=function(_0x10d325,_0x25bee0){if(_0x10d325[_0x00ba('0x41')]['id']){delete _0x10d325[_0x00ba('0x41')]['id'];}return db['FaxTransferReport'][_0x00ba('0x3f')]({'where':{'id':_0x10d325[_0x00ba('0x3e')]['id']}})['then'](handleEntityNotFound(_0x25bee0,null))[_0x00ba('0x39')](saveUpdates(_0x10d325[_0x00ba('0x41')],null))[_0x00ba('0x39')](respondWithResult(_0x25bee0,null))[_0x00ba('0x3c')](handleError(_0x25bee0,null));};exports['destroy']=function(_0x50d1b8,_0x5cd2e9){return db[_0x00ba('0x23')][_0x00ba('0x3f')]({'where':{'id':_0x50d1b8[_0x00ba('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5cd2e9,null))[_0x00ba('0x39')](removeEntity(_0x5cd2e9,null))['catch'](handleError(_0x5cd2e9,null));};exports[_0x00ba('0x42')]=function(_0x3e8d96,_0x3e7ee5){return db['FaxTransferReport'][_0x00ba('0x42')]()['then'](respondWithResult(_0x3e7ee5,null))[_0x00ba('0x3c')](handleError(_0x3e7ee5,null));};
\ No newline at end of file
index a955dbb..4405fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bcf=['bluebird','request-promise','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x2cdb32,_0x426289){var _0x4169c8=function(_0x8e60c4){while(--_0x8e60c4){_0x2cdb32['push'](_0x2cdb32['shift']());}};_0x4169c8(++_0x426289);}(_0x8bcf,0x1be));var _0xf8bc=function(_0x107201,_0x4f8bd3){_0x107201=_0x107201-0x0;var _0x5b9d12=_0x8bcf[_0x107201];return _0x5b9d12;};'use strict';var _=require(_0xf8bc('0x0'));var util=require('util');var logger=require(_0xf8bc('0x1'))(_0xf8bc('0x2'));var moment=require(_0xf8bc('0x3'));var BPromise=require(_0xf8bc('0x4'));var rp=require(_0xf8bc('0x5'));var fs=require('fs');var path=require(_0xf8bc('0x6'));var rimraf=require(_0xf8bc('0x7'));var config=require(_0xf8bc('0x8'));var attributes=require(_0xf8bc('0x9'));module[_0xf8bc('0xa')]=function(_0x25a01a,_0x48e814){return _0x25a01a[_0xf8bc('0xb')](_0xf8bc('0xc'),attributes,{'tableName':_0xf8bc('0xd'),'paranoid':![],'indexes':[{'name':_0xf8bc('0xe'),'fields':[_0xf8bc('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x779d=['path','rimraf','exports','define','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2bc4df,_0x397a6f){var _0x4bcc54=function(_0xc72ce8){while(--_0xc72ce8){_0x2bc4df['push'](_0x2bc4df['shift']());}};_0x4bcc54(++_0x397a6f);}(_0x779d,0x1c2));var _0xd779=function(_0x102bb1,_0x52837d){_0x102bb1=_0x102bb1-0x0;var _0x1efbfb=_0x779d[_0x102bb1];return _0x1efbfb;};'use strict';var _=require(_0xd779('0x0'));var util=require('util');var logger=require(_0xd779('0x1'))(_0xd779('0x2'));var moment=require(_0xd779('0x3'));var BPromise=require(_0xd779('0x4'));var rp=require(_0xd779('0x5'));var fs=require('fs');var path=require(_0xd779('0x6'));var rimraf=require(_0xd779('0x7'));var config=require('../../config/environment');var attributes=require('./faxTransferReport.attributes');module[_0xd779('0x8')]=function(_0x414079,_0x5deb55){return _0x414079[_0xd779('0x9')]('FaxTransferReport',attributes,{'tableName':_0xd779('0xa'),'paranoid':![],'indexes':[{'name':_0xd779('0xb'),'fields':[_0xd779('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5482b58..40d6ddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1175=['client','http','then','info','FaxTransferReport,\x20%s,\x20%s','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x47e3ef,_0x551b2c){var _0x502417=function(_0x500211){while(--_0x500211){_0x47e3ef['push'](_0x47e3ef['shift']());}};_0x502417(++_0x551b2c);}(_0x1175,0x128));var _0x5117=function(_0x56aac7,_0x5ce2f8){_0x56aac7=_0x56aac7-0x0;var _0x2a14fd=_0x1175[_0x56aac7];return _0x2a14fd;};'use strict';var _=require('lodash');var util=require(_0x5117('0x0'));var moment=require('moment');var BPromise=require(_0x5117('0x1'));var rs=require(_0x5117('0x2'));var fs=require('fs');var Redis=require(_0x5117('0x3'));var db=require(_0x5117('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5117('0x5'))(_0x5117('0x6'));var config=require(_0x5117('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5117('0x8')][_0x5117('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13d938,_0x235d37,_0x2cbd8f){return new BPromise(function(_0x132b1c,_0x17b949){return client['request'](_0x13d938,_0x2cbd8f)[_0x5117('0xa')](function(_0x188eba){logger[_0x5117('0xb')](_0x5117('0xc'),_0x235d37,'request\x20sent');logger['debug'](_0x5117('0xd'),_0x235d37,'request\x20sent',JSON[_0x5117('0xe')](_0x188eba));if(_0x188eba[_0x5117('0xf')]){if(_0x188eba[_0x5117('0xf')][_0x5117('0x10')]===0x1f4){logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x235d37,_0x188eba[_0x5117('0xf')][_0x5117('0x11')]);return _0x17b949(_0x188eba[_0x5117('0xf')][_0x5117('0x11')]);}logger[_0x5117('0xf')](_0x5117('0xc'),_0x235d37,_0x188eba[_0x5117('0xf')][_0x5117('0x11')]);return _0x132b1c(_0x188eba[_0x5117('0xf')][_0x5117('0x11')]);}else{logger[_0x5117('0xb')](_0x5117('0xc'),_0x235d37,'request\x20sent');_0x132b1c(_0x188eba['result'][_0x5117('0x11')]);}})[_0x5117('0x12')](function(_0x2fda57){logger[_0x5117('0xf')](_0x5117('0xc'),_0x235d37,_0x2fda57);_0x17b949(_0x2fda57);});});}
\ No newline at end of file
+var _0xf8ab=['stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/environment','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3cad9d,_0x1c095d){var _0x1142ac=function(_0x4ad649){while(--_0x4ad649){_0x3cad9d['push'](_0x3cad9d['shift']());}};_0x1142ac(++_0x1c095d);}(_0xf8ab,0x133));var _0xbf8a=function(_0x1bab70,_0x1729e2){_0x1bab70=_0x1bab70-0x0;var _0x21b8de=_0xf8ab[_0x1bab70];return _0x21b8de;};'use strict';var _=require(_0xbf8a('0x0'));var util=require('util');var moment=require(_0xbf8a('0x1'));var BPromise=require(_0xbf8a('0x2'));var rs=require(_0xbf8a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbf8a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbf8a('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xbf8a('0x6')][_0xbf8a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x404ddf,_0x4706c2,_0x450962){return new BPromise(function(_0x1ef945,_0x7fd56d){return client[_0xbf8a('0x8')](_0x404ddf,_0x450962)[_0xbf8a('0x9')](function(_0x20216f){logger['info'](_0xbf8a('0xa'),_0x4706c2,_0xbf8a('0xb'));logger[_0xbf8a('0xc')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x4706c2,'request\x20sent',JSON[_0xbf8a('0xd')](_0x20216f));if(_0x20216f[_0xbf8a('0xe')]){if(_0x20216f[_0xbf8a('0xe')][_0xbf8a('0xf')]===0x1f4){logger[_0xbf8a('0xe')](_0xbf8a('0xa'),_0x4706c2,_0x20216f[_0xbf8a('0xe')][_0xbf8a('0x10')]);return _0x7fd56d(_0x20216f[_0xbf8a('0xe')][_0xbf8a('0x10')]);}logger[_0xbf8a('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x4706c2,_0x20216f[_0xbf8a('0xe')][_0xbf8a('0x10')]);return _0x1ef945(_0x20216f[_0xbf8a('0xe')]['message']);}else{logger[_0xbf8a('0x11')](_0xbf8a('0xa'),_0x4706c2,_0xbf8a('0xb'));_0x1ef945(_0x20216f[_0xbf8a('0x12')]['message']);}})[_0xbf8a('0x13')](function(_0xd3d1b9){logger[_0xbf8a('0xe')](_0xbf8a('0xa'),_0x4706c2,_0xd3d1b9);_0x7fd56d(_0xd3d1b9);});});}
\ No newline at end of file
index c192642..b6c7eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3518=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0x3518,0x161));var _0x8351=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x3518[_0x11005e];return _0x29338f;};'use strict';var multer=require(_0x8351('0x0'));var util=require('util');var path=require(_0x8351('0x1'));var timeout=require(_0x8351('0x2'));var express=require(_0x8351('0x3'));var router=express[_0x8351('0x4')]();var fs_extra=require(_0x8351('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8351('0x6'));var config=require(_0x8351('0x7'));var controller=require('./faxTransferReport.controller');router[_0x8351('0x8')]('/',auth[_0x8351('0x9')](),controller[_0x8351('0xa')]);router['get'](_0x8351('0xb'),auth[_0x8351('0x9')](),controller[_0x8351('0xc')]);router[_0x8351('0x8')](_0x8351('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x8351('0x9')](),controller[_0x8351('0xe')]);router[_0x8351('0xf')](_0x8351('0xd'),auth['isAuthenticated'](),controller[_0x8351('0x10')]);router[_0x8351('0x11')](_0x8351('0xd'),auth[_0x8351('0x9')](),controller[_0x8351('0x12')]);module[_0x8351('0x13')]=router;
\ No newline at end of file
+var _0xd7bc=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','post','create','destroy','exports'];(function(_0x4b45ab,_0x4d5456){var _0x871963=function(_0x5db0d7){while(--_0x5db0d7){_0x4b45ab['push'](_0x4b45ab['shift']());}};_0x871963(++_0x4d5456);}(_0xd7bc,0xea));var _0xcd7b=function(_0x5d8631,_0x44944b){_0x5d8631=_0x5d8631-0x0;var _0x34c15e=_0xd7bc[_0x5d8631];return _0x34c15e;};'use strict';var multer=require(_0xcd7b('0x0'));var util=require('util');var path=require(_0xcd7b('0x1'));var timeout=require(_0xcd7b('0x2'));var express=require(_0xcd7b('0x3'));var router=express[_0xcd7b('0x4')]();var fs_extra=require(_0xcd7b('0x5'));var auth=require(_0xcd7b('0x6'));var interaction=require(_0xcd7b('0x7'));var config=require('../../config/environment');var controller=require('./faxTransferReport.controller');router[_0xcd7b('0x8')]('/',auth[_0xcd7b('0x9')](),controller['index']);router[_0xcd7b('0x8')](_0xcd7b('0xa'),auth['isAuthenticated'](),controller[_0xcd7b('0xb')]);router[_0xcd7b('0x8')](_0xcd7b('0xc'),auth['isAuthenticated'](),controller[_0xcd7b('0xd')]);router[_0xcd7b('0xe')]('/',auth[_0xcd7b('0x9')](),controller[_0xcd7b('0xf')]);router['put'](_0xcd7b('0xc'),auth[_0xcd7b('0x9')](),controller['update']);router['delete'](_0xcd7b('0xc'),auth['isAuthenticated'](),controller[_0xcd7b('0x10')]);module[_0xcd7b('0x11')]=router;
\ No newline at end of file
index f097717..5addd8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c06=['put','update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x9c06,0x68));var _0x69c0=function(_0x4180e5,_0x5e6519){_0x4180e5=_0x4180e5-0x0;var _0x17d0ff=_0x9c06[_0x4180e5];return _0x17d0ff;};'use strict';var multer=require(_0x69c0('0x0'));var util=require(_0x69c0('0x1'));var path=require('path');var timeout=require(_0x69c0('0x2'));var express=require('express');var router=express[_0x69c0('0x3')]();var fs_extra=require(_0x69c0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x69c0('0x5'));var config=require(_0x69c0('0x6'));var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0x69c0('0x7')](),controller[_0x69c0('0x8')]);router[_0x69c0('0x9')](_0x69c0('0xa'),auth[_0x69c0('0x7')](),controller[_0x69c0('0xb')]);router['get'](_0x69c0('0xc'),auth[_0x69c0('0x7')](),controller[_0x69c0('0xd')]);router[_0x69c0('0x9')](_0x69c0('0xe'),auth[_0x69c0('0x7')](),controller['getFields']);router[_0x69c0('0xf')]('/',auth[_0x69c0('0x7')](),controller['create']);router[_0x69c0('0xf')]('/:id/configurations',auth[_0x69c0('0x7')](),controller['addConfiguration']);router[_0x69c0('0x10')](_0x69c0('0xa'),auth[_0x69c0('0x7')](),controller[_0x69c0('0x11')]);router[_0x69c0('0x12')](_0x69c0('0xa'),auth[_0x69c0('0x7')](),controller[_0x69c0('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x0831=['put','/:id','update','delete','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','post','create','/:id/configurations','addConfiguration'];(function(_0x60581d,_0xa3e313){var _0x43dd38=function(_0x38c017){while(--_0x38c017){_0x60581d['push'](_0x60581d['shift']());}};_0x43dd38(++_0xa3e313);}(_0x0831,0x147));var _0x1083=function(_0x35b195,_0x8893d5){_0x35b195=_0x35b195-0x0;var _0x2433bf=_0x0831[_0x35b195];return _0x2433bf;};'use strict';var multer=require(_0x1083('0x0'));var util=require(_0x1083('0x1'));var path=require(_0x1083('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1083('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1083('0x4'));var interaction=require(_0x1083('0x5'));var config=require(_0x1083('0x6'));var controller=require(_0x1083('0x7'));router[_0x1083('0x8')]('/',auth[_0x1083('0x9')](),controller[_0x1083('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1083('0xb')]);router[_0x1083('0x8')]('/:id/configurations',auth[_0x1083('0x9')](),controller[_0x1083('0xc')]);router['get'](_0x1083('0xd'),auth[_0x1083('0x9')](),controller['getFields']);router[_0x1083('0xe')]('/',auth[_0x1083('0x9')](),controller[_0x1083('0xf')]);router['post'](_0x1083('0x10'),auth[_0x1083('0x9')](),controller[_0x1083('0x11')]);router[_0x1083('0x12')](_0x1083('0x13'),auth[_0x1083('0x9')](),controller[_0x1083('0x14')]);router[_0x1083('0x15')](_0x1083('0x13'),auth[_0x1083('0x9')](),controller[_0x1083('0x16')]);module['exports']=router;
\ No newline at end of file
index d237310..0b32073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bf7=['ENUM','integrationTab','newTab','sequelize','exports','STRING','basic'];(function(_0x14c088,_0x5a526c){var _0x3ad130=function(_0x2167d4){while(--_0x2167d4){_0x14c088['push'](_0x14c088['shift']());}};_0x3ad130(++_0x5a526c);}(_0x4bf7,0x81));var _0x74bf=function(_0x294c4d,_0x58e833){_0x294c4d=_0x294c4d-0x0;var _0x2a15ad=_0x4bf7[_0x294c4d];return _0x2a15ad;};'use strict';var Sequelize=require(_0x74bf('0x0'));module[_0x74bf('0x1')]={'name':{'type':Sequelize[_0x74bf('0x2')]},'description':{'type':Sequelize[_0x74bf('0x2')]},'username':{'type':Sequelize[_0x74bf('0x2')]},'remoteUri':{'type':Sequelize[_0x74bf('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x74bf('0x3')),'defaultValue':_0x74bf('0x3')},'password':{'type':Sequelize[_0x74bf('0x2')]},'consumerKey':{'type':Sequelize[_0x74bf('0x2')]},'consumerSecret':{'type':Sequelize[_0x74bf('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x74bf('0x2')]},'serverUrl':{'type':Sequelize[_0x74bf('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x74bf('0x4')](_0x74bf('0x5'),_0x74bf('0x6')),'defaultValue':_0x74bf('0x5')}};
\ No newline at end of file
+var _0x2e42=['basic','integrationTab','newTab','exports','STRING','ENUM'];(function(_0x3d8680,_0x3ca47d){var _0x76dbf5=function(_0x2dd5c1){while(--_0x2dd5c1){_0x3d8680['push'](_0x3d8680['shift']());}};_0x76dbf5(++_0x3ca47d);}(_0x2e42,0x1c5));var _0x22e4=function(_0x4cc492,_0x162c85){_0x4cc492=_0x4cc492-0x0;var _0x1f36b9=_0x2e42[_0x4cc492];return _0x1f36b9;};'use strict';var Sequelize=require('sequelize');module[_0x22e4('0x0')]={'name':{'type':Sequelize[_0x22e4('0x1')]},'description':{'type':Sequelize[_0x22e4('0x1')]},'username':{'type':Sequelize[_0x22e4('0x1')]},'remoteUri':{'type':Sequelize[_0x22e4('0x1')]},'authType':{'type':Sequelize[_0x22e4('0x2')](_0x22e4('0x3')),'defaultValue':_0x22e4('0x3')},'password':{'type':Sequelize[_0x22e4('0x1')]},'consumerKey':{'type':Sequelize[_0x22e4('0x1')]},'consumerSecret':{'type':Sequelize[_0x22e4('0x1')]},'token':{'type':Sequelize[_0x22e4('0x1')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x22e4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x22e4('0x2')](_0x22e4('0x4'),_0x22e4('0x5')),'defaultValue':_0x22e4('0x4')}};
\ No newline at end of file
index 698bf1d..1d2ec6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee89=['authType','username','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','headers','base64','active','label','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','send','index','map','DeskAccount','key','name','query','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','length','find','create','body','params','getConfigurations','findOne','DeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','DeskField','getFields','priority','remoteUri'];(function(_0x142537,_0x3ebdb8){var _0x4c05ef=function(_0x24b43b){while(--_0x24b43b){_0x142537['push'](_0x142537['shift']());}};_0x4c05ef(++_0x3ebdb8);}(_0xee89,0x85));var _0x9ee8=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xee89[_0xbb091];return _0x467a04;};'use strict';var emlformat=require(_0x9ee8('0x0'));var rimraf=require(_0x9ee8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9ee8('0x2'));var rp=require('request-promise');var moment=require(_0x9ee8('0x3'));var BPromise=require(_0x9ee8('0x4'));var Mustache=require(_0x9ee8('0x5'));var util=require(_0x9ee8('0x6'));var path=require(_0x9ee8('0x7'));var sox=require(_0x9ee8('0x8'));var csv=require(_0x9ee8('0x9'));var ejs=require(_0x9ee8('0xa'));var fs=require('fs');var fs_extra=require(_0x9ee8('0xb'));var _=require(_0x9ee8('0xc'));var squel=require(_0x9ee8('0xd'));var crypto=require(_0x9ee8('0xe'));var jsforce=require(_0x9ee8('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9ee8('0x10'));var Papa=require(_0x9ee8('0x11'));var Redis=require(_0x9ee8('0x12'));var authService=require(_0x9ee8('0x13'));var qs=require(_0x9ee8('0x14'));var as=require(_0x9ee8('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9ee8('0x16'))(_0x9ee8('0x17'));var utils=require(_0x9ee8('0x18'));var config=require(_0x9ee8('0x19'));var licenseUtil=require(_0x9ee8('0x1a'));var db=require(_0x9ee8('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x39c637,_0x1b4e5c){_0x1b4e5c=_0x1b4e5c||0xcc;return function(_0x1da40d){if(_0x1da40d){return _0x39c637[_0x9ee8('0x1c')](_0x1b4e5c);}return _0x39c637[_0x9ee8('0x1d')](_0x1b4e5c)[_0x9ee8('0x1e')]();};}function respondWithResult(_0x20f9c6,_0x439964){_0x439964=_0x439964||0xc8;return function(_0x4b5c52){if(_0x4b5c52){return _0x20f9c6['status'](_0x439964)['json'](_0x4b5c52);}};}function respondWithFilteredResult(_0x54099e,_0x4eaf29){return function(_0x57285e){if(_0x57285e){var _0x1f49ab=typeof _0x4eaf29[_0x9ee8('0x1f')]===_0x9ee8('0x20')&&typeof _0x4eaf29['limit']===_0x9ee8('0x20');var _0x132f6d=_0x57285e[_0x9ee8('0x21')];var _0x4db7e0=_0x1f49ab?0x0:_0x4eaf29[_0x9ee8('0x1f')];var _0x477ec1=_0x1f49ab?_0x57285e[_0x9ee8('0x21')]:_0x4eaf29[_0x9ee8('0x1f')]+_0x4eaf29[_0x9ee8('0x22')];var _0x47c9c1;if(_0x477ec1>=_0x132f6d){_0x477ec1=_0x132f6d;_0x47c9c1=0xc8;}else{_0x47c9c1=0xce;}_0x54099e[_0x9ee8('0x1d')](_0x47c9c1);return _0x54099e[_0x9ee8('0x23')](_0x9ee8('0x24'),_0x4db7e0+'-'+_0x477ec1+'/'+_0x132f6d)[_0x9ee8('0x25')](_0x57285e);}return null;};}function patchUpdates(_0x5167fc){return function(_0x5c358f){try{jsonpatch[_0x9ee8('0x26')](_0x5c358f,_0x5167fc,!![]);}catch(_0x2e9030){return BPromise[_0x9ee8('0x27')](_0x2e9030);}return _0x5c358f[_0x9ee8('0x28')]();};}function saveUpdates(_0x230864,_0x563613){return function(_0x5a7e36){if(_0x5a7e36){return _0x5a7e36['update'](_0x230864)[_0x9ee8('0x29')](function(_0x217d96){return _0x217d96;});}return null;};}function removeEntity(_0x14c6e1,_0x55b1f9){return function(_0x4dcd20){if(_0x4dcd20){return _0x4dcd20[_0x9ee8('0x2a')]()[_0x9ee8('0x29')](function(){_0x14c6e1[_0x9ee8('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f9c00,_0x32ac6f){return function(_0x56749c){if(!_0x56749c){_0x4f9c00['sendStatus'](0x194);}return _0x56749c;};}function handleError(_0x475679,_0x4f1ee0){_0x4f1ee0=_0x4f1ee0||0x1f4;return function(_0x111a32){logger[_0x9ee8('0x2b')](_0x111a32[_0x9ee8('0x2c')]);if(_0x111a32['name']){delete _0x111a32['name'];}_0x475679[_0x9ee8('0x1d')](_0x4f1ee0)[_0x9ee8('0x2d')](_0x111a32);};}exports[_0x9ee8('0x2e')]=function(_0x50179b,_0x2ee1fb){var _0x3a8613={},_0x1ee6b8={},_0x4facc3={'count':0x0,'rows':[]};var _0x14e353=_[_0x9ee8('0x2f')](db[_0x9ee8('0x30')]['rawAttributes'],function(_0x7fb5c9){return{'name':_0x7fb5c9['fieldName'],'type':_0x7fb5c9['type'][_0x9ee8('0x31')]};});_0x1ee6b8['model']=_['map'](_0x14e353,_0x9ee8('0x32'));_0x1ee6b8[_0x9ee8('0x33')]=_['keys'](_0x50179b[_0x9ee8('0x33')]);_0x1ee6b8[_0x9ee8('0x34')]=_['intersection'](_0x1ee6b8['model'],_0x1ee6b8['query']);_0x3a8613['attributes']=_[_0x9ee8('0x35')](_0x1ee6b8[_0x9ee8('0x36')],qs[_0x9ee8('0x37')](_0x50179b['query'][_0x9ee8('0x37')]));_0x3a8613[_0x9ee8('0x38')]=_0x3a8613[_0x9ee8('0x38')]['length']?_0x3a8613[_0x9ee8('0x38')]:_0x1ee6b8[_0x9ee8('0x36')];if(!_0x50179b[_0x9ee8('0x33')][_0x9ee8('0x39')]('nolimit')){_0x3a8613['limit']=qs['limit'](_0x50179b['query']['limit']);_0x3a8613[_0x9ee8('0x1f')]=qs[_0x9ee8('0x1f')](_0x50179b['query'][_0x9ee8('0x1f')]);}_0x3a8613[_0x9ee8('0x3a')]=qs['sort'](_0x50179b['query'][_0x9ee8('0x3b')]);_0x3a8613['where']=qs[_0x9ee8('0x34')](_['pick'](_0x50179b[_0x9ee8('0x33')],_0x1ee6b8[_0x9ee8('0x34')]),_0x14e353);if(_0x50179b[_0x9ee8('0x33')][_0x9ee8('0x3c')]){_0x3a8613[_0x9ee8('0x3d')]=_[_0x9ee8('0x3e')](_0x3a8613[_0x9ee8('0x3d')],{'$or':_[_0x9ee8('0x2f')](_0x14e353,function(_0x15fb9b){if(_0x15fb9b[_0x9ee8('0x3f')]!==_0x9ee8('0x40')){var _0x2b03bb={};_0x2b03bb[_0x15fb9b[_0x9ee8('0x32')]]={'$like':'%'+_0x50179b[_0x9ee8('0x33')]['filter']+'%'};return _0x2b03bb;}})});}_0x3a8613=_[_0x9ee8('0x3e')]({},_0x3a8613,_0x50179b[_0x9ee8('0x41')]);var _0x2323d4={'where':_0x3a8613[_0x9ee8('0x3d')]};return db[_0x9ee8('0x30')]['count'](_0x2323d4)[_0x9ee8('0x29')](function(_0x2adfca){_0x4facc3[_0x9ee8('0x21')]=_0x2adfca;if(_0x50179b[_0x9ee8('0x33')][_0x9ee8('0x42')]){_0x3a8613[_0x9ee8('0x43')]=[{'all':!![]}];}return db['DeskAccount'][_0x9ee8('0x44')](_0x3a8613);})[_0x9ee8('0x29')](function(_0x11a1a7){_0x4facc3[_0x9ee8('0x45')]=_0x11a1a7;return _0x4facc3;})[_0x9ee8('0x29')](respondWithFilteredResult(_0x2ee1fb,_0x3a8613))[_0x9ee8('0x46')](handleError(_0x2ee1fb,null));};exports[_0x9ee8('0x47')]=function(_0x2f0cfd,_0x4bacb0){var _0x2b1ccb={'raw':![],'where':{'id':_0x2f0cfd['params']['id']}},_0x17a691={};_0x17a691[_0x9ee8('0x36')]=_[_0x9ee8('0x48')](db[_0x9ee8('0x30')][_0x9ee8('0x49')]);_0x17a691['query']=_[_0x9ee8('0x48')](_0x2f0cfd[_0x9ee8('0x33')]);_0x17a691[_0x9ee8('0x34')]=_[_0x9ee8('0x35')](_0x17a691[_0x9ee8('0x36')],_0x17a691[_0x9ee8('0x33')]);_0x2b1ccb[_0x9ee8('0x38')]=_[_0x9ee8('0x35')](_0x17a691[_0x9ee8('0x36')],qs['fields'](_0x2f0cfd['query'][_0x9ee8('0x37')]));_0x2b1ccb[_0x9ee8('0x38')]=_0x2b1ccb[_0x9ee8('0x38')][_0x9ee8('0x4a')]?_0x2b1ccb['attributes']:_0x17a691[_0x9ee8('0x36')];if(_0x2f0cfd['query']['includeAll']){_0x2b1ccb['include']=[{'all':!![]}];}_0x2b1ccb=_[_0x9ee8('0x3e')]({},_0x2b1ccb,_0x2f0cfd['options']);return db['DeskAccount'][_0x9ee8('0x4b')](_0x2b1ccb)[_0x9ee8('0x29')](handleEntityNotFound(_0x4bacb0,null))[_0x9ee8('0x29')](respondWithResult(_0x4bacb0,null))['catch'](handleError(_0x4bacb0,null));};exports[_0x9ee8('0x4c')]=function(_0x544433,_0x55a3aa){return db['DeskAccount'][_0x9ee8('0x4c')](_0x544433[_0x9ee8('0x4d')],{})[_0x9ee8('0x29')](respondWithResult(_0x55a3aa,0xc9))[_0x9ee8('0x46')](handleError(_0x55a3aa,null));};exports['update']=function(_0x48fcc4,_0x391751){if(_0x48fcc4[_0x9ee8('0x4d')]['id']){delete _0x48fcc4['body']['id'];}return db[_0x9ee8('0x30')]['find']({'where':{'id':_0x48fcc4[_0x9ee8('0x4e')]['id']}})[_0x9ee8('0x29')](handleEntityNotFound(_0x391751,null))[_0x9ee8('0x29')](saveUpdates(_0x48fcc4['body'],null))[_0x9ee8('0x29')](respondWithResult(_0x391751,null))[_0x9ee8('0x46')](handleError(_0x391751,null));};exports[_0x9ee8('0x2a')]=function(_0x40d9ee,_0x50dac2){return db[_0x9ee8('0x30')][_0x9ee8('0x4b')]({'where':{'id':_0x40d9ee[_0x9ee8('0x4e')]['id']}})[_0x9ee8('0x29')](handleEntityNotFound(_0x50dac2,null))[_0x9ee8('0x29')](removeEntity(_0x50dac2,null))[_0x9ee8('0x46')](handleError(_0x50dac2,null));};exports[_0x9ee8('0x4f')]=function(_0x3a6943,_0x23046e,_0x30095d){var _0x10a774={};var _0x2b265e={};var _0xace155;var _0x56c1e0;return db['DeskAccount'][_0x9ee8('0x50')]({'where':{'id':_0x3a6943[_0x9ee8('0x4e')]['id']}})[_0x9ee8('0x29')](handleEntityNotFound(_0x23046e,null))[_0x9ee8('0x29')](function(_0x23db9d){if(_0x23db9d){_0xace155=_0x23db9d;_0x2b265e[_0x9ee8('0x36')]=_[_0x9ee8('0x48')](db[_0x9ee8('0x51')][_0x9ee8('0x49')]);_0x2b265e[_0x9ee8('0x33')]=_[_0x9ee8('0x48')](_0x3a6943['query']);_0x2b265e['filters']=_['intersection'](_0x2b265e['model'],_0x2b265e[_0x9ee8('0x33')]);_0x10a774[_0x9ee8('0x38')]=_['intersection'](_0x2b265e[_0x9ee8('0x36')],qs[_0x9ee8('0x37')](_0x3a6943['query']['fields']));_0x10a774['attributes']=_0x10a774['attributes'][_0x9ee8('0x4a')]?_0x10a774[_0x9ee8('0x38')]:_0x2b265e['model'];_0x10a774[_0x9ee8('0x3a')]=qs[_0x9ee8('0x3b')](_0x3a6943[_0x9ee8('0x33')][_0x9ee8('0x3b')]);_0x10a774[_0x9ee8('0x3d')]=qs[_0x9ee8('0x34')](_[_0x9ee8('0x52')](_0x3a6943['query'],_0x2b265e[_0x9ee8('0x34')]));if(_0x3a6943['query'][_0x9ee8('0x3c')]){_0x10a774['where']=_[_0x9ee8('0x3e')](_0x10a774[_0x9ee8('0x3d')],{'$or':_[_0x9ee8('0x2f')](_0x10a774[_0x9ee8('0x38')],function(_0x23f287){var _0x3020b3={};_0x3020b3[_0x23f287]={'$like':'%'+_0x3a6943[_0x9ee8('0x33')][_0x9ee8('0x3c')]+'%'};return _0x3020b3;})});}_0x10a774=_['merge']({},_0x10a774,_0x3a6943['options']);return _0xace155[_0x9ee8('0x4f')](_0x10a774);}})[_0x9ee8('0x29')](function(_0x129faf){if(_0x129faf){_0x56c1e0=_0x129faf['length'];if(!_0x3a6943[_0x9ee8('0x33')][_0x9ee8('0x39')]('nolimit')){_0x10a774[_0x9ee8('0x22')]=qs[_0x9ee8('0x22')](_0x3a6943[_0x9ee8('0x33')][_0x9ee8('0x22')]);_0x10a774[_0x9ee8('0x1f')]=qs[_0x9ee8('0x1f')](_0x3a6943[_0x9ee8('0x33')][_0x9ee8('0x1f')]);}return _0xace155[_0x9ee8('0x4f')](_0x10a774);}})[_0x9ee8('0x29')](function(_0x140281){if(_0x140281){return _0x140281?{'count':_0x56c1e0,'rows':_0x140281}:null;}})[_0x9ee8('0x29')](respondWithResult(_0x23046e,null))[_0x9ee8('0x46')](handleError(_0x23046e,null));};exports[_0x9ee8('0x53')]=function(_0x1ddd91,_0x47b374,_0x12175b){if(_0x1ddd91[_0x9ee8('0x4d')]['id']){delete _0x1ddd91[_0x9ee8('0x4d')]['id'];}return db[_0x9ee8('0x30')][_0x9ee8('0x50')]({'where':{'id':_0x1ddd91[_0x9ee8('0x4e')]['id']}})[_0x9ee8('0x29')](handleEntityNotFound(_0x47b374,null))[_0x9ee8('0x29')](function(_0x5e799d){if(_0x5e799d){_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x54')]=_0x5e799d['id'];_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x55')]=integrations[_0x9ee8('0x56')](_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x57')],_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x3f')]);_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x58')]=integrations['getDescriptions'](_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x57')],_0x1ddd91[_0x9ee8('0x4d')][_0x9ee8('0x3f')]);return db[_0x9ee8('0x51')][_0x9ee8('0x4c')](_0x1ddd91['body'],{'include':[{'model':db[_0x9ee8('0x59')],'as':_0x9ee8('0x55')},{'model':db['DeskField'],'as':_0x9ee8('0x58')}]});}return null;})[_0x9ee8('0x29')](respondWithResult(_0x47b374,null))['catch'](handleError(_0x47b374,null));};exports[_0x9ee8('0x5a')]=function(_0x15f82e,_0x541bd9,_0x1a830d){var _0x288ef5=[{'name':_0x9ee8('0x5b'),'label':_0x9ee8('0x5b'),'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 _0x14d0e5='';return db[_0x9ee8('0x30')][_0x9ee8('0x50')]({'where':{'id':_0x15f82e['params']['id']},'attributes':['id',_0x9ee8('0x5c'),_0x9ee8('0x5d'),_0x9ee8('0x5e'),_0x9ee8('0x5f'),_0x9ee8('0x60'),_0x9ee8('0x61'),_0x9ee8('0x62'),_0x9ee8('0x63')]})['then'](handleEntityNotFound(_0x541bd9,null))[_0x9ee8('0x29')](function(_0x1793c2){if(_0x1793c2){_0x14d0e5=_0x1793c2[_0x9ee8('0x5c')];var _0x6c0839=_0x14d0e5[_0x9ee8('0x64')](-0x1);if(_0x6c0839==='/'){_0x14d0e5=_0x14d0e5[_0x9ee8('0x65')](0x0,_0x14d0e5[_0x9ee8('0x66')](_0x6c0839));}var _0x45140f={'method':'GET','uri':util[_0x9ee8('0x67')](_0x9ee8('0x68'),_0x14d0e5),'headers':{'Content-Type':_0x9ee8('0x69'),'Accept':'application/json'},'json':!![]};if(_0x1793c2[_0x9ee8('0x5d')]==='basic'){_0x45140f[_0x9ee8('0x6a')]['Authorization']=util['format']('Basic\x20%s',new Buffer(util[_0x9ee8('0x67')]('%s:%s',_0x1793c2[_0x9ee8('0x5e')],_0x1793c2['password']))['toString'](_0x9ee8('0x6b')));}return rp(_0x45140f)[_0x9ee8('0x29')](function(_0xa6c697){return _0x288ef5['concat'](_[_0x9ee8('0x2f')](_0xa6c697['_embedded']['entries'],function(_0x43ee1e){return{'id':_0x43ee1e[_0x9ee8('0x32')],'name':_0x43ee1e[_0x9ee8('0x32')],'type':_0x43ee1e[_0x9ee8('0x3f')],'active':_0x43ee1e[_0x9ee8('0x6c')],'label':_0x43ee1e[_0x9ee8('0x6d')],'custom':!![]};}));});}})[_0x9ee8('0x29')](function(_0x5d7302){return{'count':_0x5d7302[_0x9ee8('0x4a')],'rows':_0x5d7302};})[_0x9ee8('0x29')](respondWithResult(_0x541bd9,null))[_0x9ee8('0x46')](function(_0x4bd258){var _0x4d0d7d=_0x15f82e[_0x9ee8('0x33')][_0x9ee8('0x6e')]?0x1f4:_0x4bd258['statusCode']||0x1f4;logger[_0x9ee8('0x2b')](_0x9ee8('0x6f'),_0x9ee8('0x5a'),_0x4d0d7d,JSON['stringify'](_0x4bd258));delete _0x4bd258['name'];if(_0x4d0d7d===0x191){_0x4d0d7d=0x190;}_0x541bd9['status'](_0x4d0d7d)['send'](_0x15f82e[_0x9ee8('0x33')]['test']?{'message':_0x9ee8('0x70'),'statusCode':_0x4bd258['statusCode']}:_0x4bd258);});};
\ No newline at end of file
+var _0xfc4b=['keys','filters','fields','attributes','length','order','sort','where','filter','merge','VIRTUAL','options','count','include','rows','catch','show','params','includeAll','find','create','body','findOne','DeskConfiguration','intersection','getConfigurations','nolimit','addConfiguration','getSubjects','Descriptions','DeskField','Subjects','getFields','priority','remoteUri','authType','consumerKey','consumerSecret','token','tokenSecret','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','password','base64','concat','_embedded','entries','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','offset','set','Content-Range','apply','save','update','then','destroy','error','name','send','map','DeskAccount','rawAttributes','fieldName','type','key','model','query'];(function(_0x9de44e,_0x400521){var _0x31b8da=function(_0x33e459){while(--_0x33e459){_0x9de44e['push'](_0x9de44e['shift']());}};_0x31b8da(++_0x400521);}(_0xfc4b,0xa9));var _0xbfc4=function(_0x52f477,_0x58f85e){_0x52f477=_0x52f477-0x0;var _0x460003=_0xfc4b[_0x52f477];return _0x460003;};'use strict';var emlformat=require(_0xbfc4('0x0'));var rimraf=require(_0xbfc4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbfc4('0x2'));var rp=require('request-promise');var moment=require(_0xbfc4('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbfc4('0x4'));var path=require(_0xbfc4('0x5'));var sox=require(_0xbfc4('0x6'));var csv=require(_0xbfc4('0x7'));var ejs=require(_0xbfc4('0x8'));var fs=require('fs');var fs_extra=require(_0xbfc4('0x9'));var _=require('lodash');var squel=require(_0xbfc4('0xa'));var crypto=require(_0xbfc4('0xb'));var jsforce=require(_0xbfc4('0xc'));var deskjs=require(_0xbfc4('0xd'));var toCsv=require(_0xbfc4('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbfc4('0xe'));var authService=require(_0xbfc4('0xf'));var qs=require(_0xbfc4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbfc4('0x11'));var logger=require(_0xbfc4('0x12'))('api');var utils=require(_0xbfc4('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbfc4('0x14'))['db'];var integrations=require(_0xbfc4('0x15'));function respondWithStatusCode(_0x5dac9a,_0x33a00c){_0x33a00c=_0x33a00c||0xcc;return function(_0x3d263d){if(_0x3d263d){return _0x5dac9a[_0xbfc4('0x16')](_0x33a00c);}return _0x5dac9a[_0xbfc4('0x17')](_0x33a00c)[_0xbfc4('0x18')]();};}function respondWithResult(_0x3a58c2,_0x595ec6){_0x595ec6=_0x595ec6||0xc8;return function(_0x55d7ff){if(_0x55d7ff){return _0x3a58c2['status'](_0x595ec6)[_0xbfc4('0x19')](_0x55d7ff);}};}function respondWithFilteredResult(_0x26d385,_0x344335){return function(_0x11bcbb){if(_0x11bcbb){var _0x349fc6=typeof _0x344335['offset']==='undefined'&&typeof _0x344335[_0xbfc4('0x1a')]===_0xbfc4('0x1b');var _0x42299b=_0x11bcbb['count'];var _0x4a9eb7=_0x349fc6?0x0:_0x344335[_0xbfc4('0x1c')];var _0x42fd08=_0x349fc6?_0x11bcbb['count']:_0x344335[_0xbfc4('0x1c')]+_0x344335['limit'];var _0xec4062;if(_0x42fd08>=_0x42299b){_0x42fd08=_0x42299b;_0xec4062=0xc8;}else{_0xec4062=0xce;}_0x26d385['status'](_0xec4062);return _0x26d385[_0xbfc4('0x1d')](_0xbfc4('0x1e'),_0x4a9eb7+'-'+_0x42fd08+'/'+_0x42299b)[_0xbfc4('0x19')](_0x11bcbb);}return null;};}function patchUpdates(_0x5db768){return function(_0x4ff687){try{jsonpatch[_0xbfc4('0x1f')](_0x4ff687,_0x5db768,!![]);}catch(_0x3eb963){return BPromise['reject'](_0x3eb963);}return _0x4ff687[_0xbfc4('0x20')]();};}function saveUpdates(_0x3547f3,_0x1e9630){return function(_0x4e701d){if(_0x4e701d){return _0x4e701d[_0xbfc4('0x21')](_0x3547f3)[_0xbfc4('0x22')](function(_0x47ecfd){return _0x47ecfd;});}return null;};}function removeEntity(_0x4a70a3,_0x595c51){return function(_0x4e661b){if(_0x4e661b){return _0x4e661b[_0xbfc4('0x23')]()[_0xbfc4('0x22')](function(){_0x4a70a3[_0xbfc4('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13ee2d,_0x2cc191){return function(_0x4c473b){if(!_0x4c473b){_0x13ee2d[_0xbfc4('0x16')](0x194);}return _0x4c473b;};}function handleError(_0x1ce1ae,_0x3c4108){_0x3c4108=_0x3c4108||0x1f4;return function(_0x4f6821){logger[_0xbfc4('0x24')](_0x4f6821['stack']);if(_0x4f6821[_0xbfc4('0x25')]){delete _0x4f6821[_0xbfc4('0x25')];}_0x1ce1ae[_0xbfc4('0x17')](_0x3c4108)[_0xbfc4('0x26')](_0x4f6821);};}exports['index']=function(_0x144669,_0xc2670b){var _0x25d7df={},_0x1aee00={},_0x164fdb={'count':0x0,'rows':[]};var _0x593d76=_[_0xbfc4('0x27')](db[_0xbfc4('0x28')][_0xbfc4('0x29')],function(_0x3f7017){return{'name':_0x3f7017[_0xbfc4('0x2a')],'type':_0x3f7017[_0xbfc4('0x2b')][_0xbfc4('0x2c')]};});_0x1aee00[_0xbfc4('0x2d')]=_['map'](_0x593d76,_0xbfc4('0x25'));_0x1aee00[_0xbfc4('0x2e')]=_[_0xbfc4('0x2f')](_0x144669[_0xbfc4('0x2e')]);_0x1aee00[_0xbfc4('0x30')]=_['intersection'](_0x1aee00[_0xbfc4('0x2d')],_0x1aee00[_0xbfc4('0x2e')]);_0x25d7df['attributes']=_['intersection'](_0x1aee00[_0xbfc4('0x2d')],qs['fields'](_0x144669['query'][_0xbfc4('0x31')]));_0x25d7df[_0xbfc4('0x32')]=_0x25d7df[_0xbfc4('0x32')][_0xbfc4('0x33')]?_0x25d7df[_0xbfc4('0x32')]:_0x1aee00[_0xbfc4('0x2d')];if(!_0x144669['query']['hasOwnProperty']('nolimit')){_0x25d7df[_0xbfc4('0x1a')]=qs[_0xbfc4('0x1a')](_0x144669[_0xbfc4('0x2e')]['limit']);_0x25d7df[_0xbfc4('0x1c')]=qs[_0xbfc4('0x1c')](_0x144669[_0xbfc4('0x2e')][_0xbfc4('0x1c')]);}_0x25d7df[_0xbfc4('0x34')]=qs[_0xbfc4('0x35')](_0x144669[_0xbfc4('0x2e')][_0xbfc4('0x35')]);_0x25d7df[_0xbfc4('0x36')]=qs[_0xbfc4('0x30')](_['pick'](_0x144669[_0xbfc4('0x2e')],_0x1aee00[_0xbfc4('0x30')]),_0x593d76);if(_0x144669[_0xbfc4('0x2e')][_0xbfc4('0x37')]){_0x25d7df[_0xbfc4('0x36')]=_[_0xbfc4('0x38')](_0x25d7df[_0xbfc4('0x36')],{'$or':_['map'](_0x593d76,function(_0x3f2887){if(_0x3f2887[_0xbfc4('0x2b')]!==_0xbfc4('0x39')){var _0x2a8cd4={};_0x2a8cd4[_0x3f2887[_0xbfc4('0x25')]]={'$like':'%'+_0x144669[_0xbfc4('0x2e')][_0xbfc4('0x37')]+'%'};return _0x2a8cd4;}})});}_0x25d7df=_[_0xbfc4('0x38')]({},_0x25d7df,_0x144669[_0xbfc4('0x3a')]);var _0x2e92fc={'where':_0x25d7df['where']};return db[_0xbfc4('0x28')][_0xbfc4('0x3b')](_0x2e92fc)[_0xbfc4('0x22')](function(_0xe689eb){_0x164fdb[_0xbfc4('0x3b')]=_0xe689eb;if(_0x144669['query']['includeAll']){_0x25d7df[_0xbfc4('0x3c')]=[{'all':!![]}];}return db[_0xbfc4('0x28')]['findAll'](_0x25d7df);})[_0xbfc4('0x22')](function(_0x5b1397){_0x164fdb[_0xbfc4('0x3d')]=_0x5b1397;return _0x164fdb;})[_0xbfc4('0x22')](respondWithFilteredResult(_0xc2670b,_0x25d7df))[_0xbfc4('0x3e')](handleError(_0xc2670b,null));};exports[_0xbfc4('0x3f')]=function(_0x5e381f,_0x4bb9a0){var _0x377140={'raw':![],'where':{'id':_0x5e381f[_0xbfc4('0x40')]['id']}},_0x283ec2={};_0x283ec2[_0xbfc4('0x2d')]=_[_0xbfc4('0x2f')](db[_0xbfc4('0x28')]['rawAttributes']);_0x283ec2['query']=_[_0xbfc4('0x2f')](_0x5e381f[_0xbfc4('0x2e')]);_0x283ec2[_0xbfc4('0x30')]=_['intersection'](_0x283ec2[_0xbfc4('0x2d')],_0x283ec2[_0xbfc4('0x2e')]);_0x377140[_0xbfc4('0x32')]=_['intersection'](_0x283ec2[_0xbfc4('0x2d')],qs[_0xbfc4('0x31')](_0x5e381f[_0xbfc4('0x2e')]['fields']));_0x377140['attributes']=_0x377140[_0xbfc4('0x32')][_0xbfc4('0x33')]?_0x377140[_0xbfc4('0x32')]:_0x283ec2[_0xbfc4('0x2d')];if(_0x5e381f['query'][_0xbfc4('0x41')]){_0x377140[_0xbfc4('0x3c')]=[{'all':!![]}];}_0x377140=_[_0xbfc4('0x38')]({},_0x377140,_0x5e381f['options']);return db['DeskAccount'][_0xbfc4('0x42')](_0x377140)[_0xbfc4('0x22')](handleEntityNotFound(_0x4bb9a0,null))[_0xbfc4('0x22')](respondWithResult(_0x4bb9a0,null))['catch'](handleError(_0x4bb9a0,null));};exports[_0xbfc4('0x43')]=function(_0x2c1c39,_0x14471a){return db[_0xbfc4('0x28')][_0xbfc4('0x43')](_0x2c1c39[_0xbfc4('0x44')],{})[_0xbfc4('0x22')](respondWithResult(_0x14471a,0xc9))[_0xbfc4('0x3e')](handleError(_0x14471a,null));};exports[_0xbfc4('0x21')]=function(_0x59f265,_0x3163b9){if(_0x59f265[_0xbfc4('0x44')]['id']){delete _0x59f265[_0xbfc4('0x44')]['id'];}return db[_0xbfc4('0x28')][_0xbfc4('0x42')]({'where':{'id':_0x59f265['params']['id']}})[_0xbfc4('0x22')](handleEntityNotFound(_0x3163b9,null))[_0xbfc4('0x22')](saveUpdates(_0x59f265[_0xbfc4('0x44')],null))[_0xbfc4('0x22')](respondWithResult(_0x3163b9,null))[_0xbfc4('0x3e')](handleError(_0x3163b9,null));};exports['destroy']=function(_0x4fbb74,_0x304ba5){return db['DeskAccount']['find']({'where':{'id':_0x4fbb74[_0xbfc4('0x40')]['id']}})['then'](handleEntityNotFound(_0x304ba5,null))[_0xbfc4('0x22')](removeEntity(_0x304ba5,null))[_0xbfc4('0x3e')](handleError(_0x304ba5,null));};exports['getConfigurations']=function(_0x52de72,_0x10d9e9,_0xe55c18){var _0x5c88db={};var _0x1a44c1={};var _0x5a5528;var _0xd8db15;return db[_0xbfc4('0x28')][_0xbfc4('0x45')]({'where':{'id':_0x52de72[_0xbfc4('0x40')]['id']}})[_0xbfc4('0x22')](handleEntityNotFound(_0x10d9e9,null))[_0xbfc4('0x22')](function(_0x140f3b){if(_0x140f3b){_0x5a5528=_0x140f3b;_0x1a44c1[_0xbfc4('0x2d')]=_['keys'](db[_0xbfc4('0x46')][_0xbfc4('0x29')]);_0x1a44c1[_0xbfc4('0x2e')]=_['keys'](_0x52de72['query']);_0x1a44c1[_0xbfc4('0x30')]=_[_0xbfc4('0x47')](_0x1a44c1['model'],_0x1a44c1[_0xbfc4('0x2e')]);_0x5c88db[_0xbfc4('0x32')]=_[_0xbfc4('0x47')](_0x1a44c1[_0xbfc4('0x2d')],qs['fields'](_0x52de72[_0xbfc4('0x2e')][_0xbfc4('0x31')]));_0x5c88db[_0xbfc4('0x32')]=_0x5c88db['attributes'][_0xbfc4('0x33')]?_0x5c88db['attributes']:_0x1a44c1['model'];_0x5c88db[_0xbfc4('0x34')]=qs[_0xbfc4('0x35')](_0x52de72[_0xbfc4('0x2e')][_0xbfc4('0x35')]);_0x5c88db[_0xbfc4('0x36')]=qs[_0xbfc4('0x30')](_['pick'](_0x52de72[_0xbfc4('0x2e')],_0x1a44c1[_0xbfc4('0x30')]));if(_0x52de72['query'][_0xbfc4('0x37')]){_0x5c88db[_0xbfc4('0x36')]=_[_0xbfc4('0x38')](_0x5c88db[_0xbfc4('0x36')],{'$or':_[_0xbfc4('0x27')](_0x5c88db[_0xbfc4('0x32')],function(_0x317d7d){var _0x410b6c={};_0x410b6c[_0x317d7d]={'$like':'%'+_0x52de72[_0xbfc4('0x2e')][_0xbfc4('0x37')]+'%'};return _0x410b6c;})});}_0x5c88db=_[_0xbfc4('0x38')]({},_0x5c88db,_0x52de72[_0xbfc4('0x3a')]);return _0x5a5528[_0xbfc4('0x48')](_0x5c88db);}})[_0xbfc4('0x22')](function(_0x5524a7){if(_0x5524a7){_0xd8db15=_0x5524a7[_0xbfc4('0x33')];if(!_0x52de72[_0xbfc4('0x2e')]['hasOwnProperty'](_0xbfc4('0x49'))){_0x5c88db[_0xbfc4('0x1a')]=qs[_0xbfc4('0x1a')](_0x52de72[_0xbfc4('0x2e')][_0xbfc4('0x1a')]);_0x5c88db[_0xbfc4('0x1c')]=qs[_0xbfc4('0x1c')](_0x52de72[_0xbfc4('0x2e')][_0xbfc4('0x1c')]);}return _0x5a5528[_0xbfc4('0x48')](_0x5c88db);}})[_0xbfc4('0x22')](function(_0x2d5b1e){if(_0x2d5b1e){return _0x2d5b1e?{'count':_0xd8db15,'rows':_0x2d5b1e}:null;}})[_0xbfc4('0x22')](respondWithResult(_0x10d9e9,null))[_0xbfc4('0x3e')](handleError(_0x10d9e9,null));};exports[_0xbfc4('0x4a')]=function(_0xc5b779,_0x25dbf6,_0x50d048){if(_0xc5b779[_0xbfc4('0x44')]['id']){delete _0xc5b779['body']['id'];}return db[_0xbfc4('0x28')]['findOne']({'where':{'id':_0xc5b779[_0xbfc4('0x40')]['id']}})[_0xbfc4('0x22')](handleEntityNotFound(_0x25dbf6,null))['then'](function(_0x3a7556){if(_0x3a7556){_0xc5b779[_0xbfc4('0x44')]['AccountId']=_0x3a7556['id'];_0xc5b779[_0xbfc4('0x44')]['Subjects']=integrations[_0xbfc4('0x4b')](_0xc5b779[_0xbfc4('0x44')]['channel'],_0xc5b779[_0xbfc4('0x44')][_0xbfc4('0x2b')]);_0xc5b779['body'][_0xbfc4('0x4c')]=integrations['getDescriptions'](_0xc5b779['body']['channel'],_0xc5b779[_0xbfc4('0x44')][_0xbfc4('0x2b')]);return db[_0xbfc4('0x46')][_0xbfc4('0x43')](_0xc5b779[_0xbfc4('0x44')],{'include':[{'model':db[_0xbfc4('0x4d')],'as':_0xbfc4('0x4e')},{'model':db[_0xbfc4('0x4d')],'as':_0xbfc4('0x4c')}]});}return null;})[_0xbfc4('0x22')](respondWithResult(_0x25dbf6,null))[_0xbfc4('0x3e')](handleError(_0x25dbf6,null));};exports[_0xbfc4('0x4f')]=function(_0x5b042d,_0x4e8770,_0x5a1555){var _0x134311=[{'name':'priority','label':_0xbfc4('0x50'),'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 _0x1bc855='';return db[_0xbfc4('0x28')][_0xbfc4('0x45')]({'where':{'id':_0x5b042d[_0xbfc4('0x40')]['id']},'attributes':['id',_0xbfc4('0x51'),_0xbfc4('0x52'),'username','password',_0xbfc4('0x53'),_0xbfc4('0x54'),_0xbfc4('0x55'),_0xbfc4('0x56')]})[_0xbfc4('0x22')](handleEntityNotFound(_0x4e8770,null))[_0xbfc4('0x22')](function(_0x5b4c9d){if(_0x5b4c9d){_0x1bc855=_0x5b4c9d[_0xbfc4('0x51')];var _0x44a303=_0x1bc855['slice'](-0x1);if(_0x44a303==='/'){_0x1bc855=_0x1bc855['substring'](0x0,_0x1bc855[_0xbfc4('0x57')](_0x44a303));}var _0x1a9ff6={'method':_0xbfc4('0x58'),'uri':util[_0xbfc4('0x59')](_0xbfc4('0x5a'),_0x1bc855),'headers':{'Content-Type':_0xbfc4('0x5b'),'Accept':'application/json'},'json':!![]};if(_0x5b4c9d[_0xbfc4('0x52')]===_0xbfc4('0x5c')){_0x1a9ff6[_0xbfc4('0x5d')][_0xbfc4('0x5e')]=util[_0xbfc4('0x59')](_0xbfc4('0x5f'),new Buffer(util[_0xbfc4('0x59')]('%s:%s',_0x5b4c9d['username'],_0x5b4c9d[_0xbfc4('0x60')]))['toString'](_0xbfc4('0x61')));}return rp(_0x1a9ff6)[_0xbfc4('0x22')](function(_0x2723d5){return _0x134311[_0xbfc4('0x62')](_['map'](_0x2723d5[_0xbfc4('0x63')][_0xbfc4('0x64')],function(_0x4f3a73){return{'id':_0x4f3a73[_0xbfc4('0x25')],'name':_0x4f3a73[_0xbfc4('0x25')],'type':_0x4f3a73[_0xbfc4('0x2b')],'active':_0x4f3a73[_0xbfc4('0x65')],'label':_0x4f3a73[_0xbfc4('0x66')],'custom':!![]};}));});}})[_0xbfc4('0x22')](function(_0x4e52dd){return{'count':_0x4e52dd[_0xbfc4('0x33')],'rows':_0x4e52dd};})[_0xbfc4('0x22')](respondWithResult(_0x4e8770,null))['catch'](function(_0x579fe4){var _0x34334f=_0x5b042d[_0xbfc4('0x2e')]['test']?0x1f4:_0x579fe4[_0xbfc4('0x67')]||0x1f4;logger[_0xbfc4('0x24')](_0xbfc4('0x68'),_0xbfc4('0x4f'),_0x34334f,JSON[_0xbfc4('0x69')](_0x579fe4));delete _0x579fe4[_0xbfc4('0x25')];if(_0x34334f===0x191){_0x34334f=0x190;}_0x4e8770['status'](_0x34334f)['send'](_0x5b042d[_0xbfc4('0x2e')][_0xbfc4('0x6a')]?{'message':_0xbfc4('0x6b'),'statusCode':_0x579fe4[_0xbfc4('0x67')]}:_0x579fe4);});};
\ No newline at end of file
index 360fd91..4a87dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a49=['path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x1a49,0x1e9));var _0x91a4=function(_0x16c715,_0x33e4b9){_0x16c715=_0x16c715-0x0;var _0x529175=_0x1a49[_0x16c715];return _0x529175;};'use strict';var _=require(_0x91a4('0x0'));var util=require(_0x91a4('0x1'));var logger=require(_0x91a4('0x2'))(_0x91a4('0x3'));var moment=require(_0x91a4('0x4'));var BPromise=require('bluebird');var rp=require(_0x91a4('0x5'));var fs=require('fs');var path=require(_0x91a4('0x6'));var rimraf=require(_0x91a4('0x7'));var config=require(_0x91a4('0x8'));var attributes=require(_0x91a4('0x9'));var integrations=require(_0x91a4('0xa'));module[_0x91a4('0xb')]=function(_0x23be3c,_0x3684c2){return _0x23be3c[_0x91a4('0xc')](_0x91a4('0xd'),attributes,{'tableName':_0x91a4('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbfd5=['request-promise','rimraf','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xbfd5,0x150));var _0x5bfd=function(_0x3509cd,_0x277da3){_0x3509cd=_0x3509cd-0x0;var _0x1b0e6a=_0xbfd5[_0x3509cd];return _0x1b0e6a;};'use strict';var _=require(_0x5bfd('0x0'));var util=require('util');var logger=require(_0x5bfd('0x1'))(_0x5bfd('0x2'));var moment=require(_0x5bfd('0x3'));var BPromise=require(_0x5bfd('0x4'));var rp=require(_0x5bfd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5bfd('0x6'));var config=require('../../config/environment');var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x5bfd('0x7'));module['exports']=function(_0x21f0ed,_0x487f6c){return _0x21f0ed[_0x5bfd('0x8')](_0x5bfd('0x9'),attributes,{'tableName':_0x5bfd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0148f03..7b8592a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x260c=['error','message','catch','DeskAccount','findAll','options','where','attributes','limit','include','map','model','GetDeskAccount','ShowDeskAccount','raw','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x5919ea,_0x22672f){var _0x342495=function(_0x1f01a9){while(--_0x1f01a9){_0x5919ea['push'](_0x5919ea['shift']());}};_0x342495(++_0x22672f);}(_0x260c,0x191));var _0xc260=function(_0x31d02c,_0x537379){_0x31d02c=_0x31d02c-0x0;var _0x574a15=_0x260c[_0x31d02c];return _0x574a15;};'use strict';var _=require(_0xc260('0x0'));var util=require(_0xc260('0x1'));var moment=require(_0xc260('0x2'));var BPromise=require(_0xc260('0x3'));var rs=require(_0xc260('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc260('0x5'))['db'];var utils=require(_0xc260('0x6'));var logger=require(_0xc260('0x7'))(_0xc260('0x8'));var config=require(_0xc260('0x9'));var jayson=require(_0xc260('0xa'));var client=jayson[_0xc260('0xb')][_0xc260('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2227e5,_0x229cd5,_0x53fc4e){return new BPromise(function(_0x3f0fd2,_0x1478d7){return client[_0xc260('0xd')](_0x2227e5,_0x53fc4e)[_0xc260('0xe')](function(_0x38a1ef){logger[_0xc260('0xf')](_0xc260('0x10'),_0x229cd5,_0xc260('0x11'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x229cd5,_0xc260('0x11'),JSON[_0xc260('0x12')](_0x38a1ef));if(_0x38a1ef[_0xc260('0x13')]){if(_0x38a1ef[_0xc260('0x13')]['code']===0x1f4){logger[_0xc260('0x13')]('DeskAccount,\x20%s,\x20%s',_0x229cd5,_0x38a1ef[_0xc260('0x13')][_0xc260('0x14')]);return _0x1478d7(_0x38a1ef[_0xc260('0x13')][_0xc260('0x14')]);}logger['error'](_0xc260('0x10'),_0x229cd5,_0x38a1ef[_0xc260('0x13')][_0xc260('0x14')]);return _0x3f0fd2(_0x38a1ef[_0xc260('0x13')][_0xc260('0x14')]);}else{logger[_0xc260('0xf')]('DeskAccount,\x20%s,\x20%s',_0x229cd5,_0xc260('0x11'));_0x3f0fd2(_0x38a1ef['result'][_0xc260('0x14')]);}})[_0xc260('0x15')](function(_0x42e003){logger[_0xc260('0x13')]('DeskAccount,\x20%s,\x20%s',_0x229cd5,_0x42e003);_0x1478d7(_0x42e003);});});}exports['GetDeskAccount']=function(_0x853846){var _0xb57694=this;return new Promise(function(_0x39efcb,_0x59fe2f){return db[_0xc260('0x16')][_0xc260('0x17')]({'raw':_0x853846[_0xc260('0x18')]?_0x853846['options']['raw']===undefined?!![]:![]:!![],'where':_0x853846['options']?_0x853846[_0xc260('0x18')][_0xc260('0x19')]||null:null,'attributes':_0x853846[_0xc260('0x18')]?_0x853846[_0xc260('0x18')][_0xc260('0x1a')]||null:null,'limit':_0x853846['options']?_0x853846[_0xc260('0x18')][_0xc260('0x1b')]||null:null,'include':_0x853846[_0xc260('0x18')]?_0x853846[_0xc260('0x18')][_0xc260('0x1c')]?_[_0xc260('0x1d')](_0x853846[_0xc260('0x18')][_0xc260('0x1c')],function(_0xcd4a71){return{'model':db[_0xcd4a71['model']],'as':_0xcd4a71['as'],'attributes':_0xcd4a71[_0xc260('0x1a')],'include':_0xcd4a71[_0xc260('0x1c')]?_['map'](_0xcd4a71['include'],function(_0x2d6911){return{'model':db[_0x2d6911[_0xc260('0x1e')]],'as':_0x2d6911['as'],'attributes':_0x2d6911[_0xc260('0x1a')],'include':_0x2d6911[_0xc260('0x1c')]?_['map'](_0x2d6911[_0xc260('0x1c')],function(_0x14f36f){return{'model':db[_0x14f36f[_0xc260('0x1e')]],'as':_0x14f36f['as'],'attributes':_0x14f36f[_0xc260('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc260('0xe')](function(_0x321de6){logger[_0xc260('0xf')]('GetDeskAccount',_0x853846);logger['debug'](_0xc260('0x1f'),_0x853846,JSON[_0xc260('0x12')](_0x321de6));_0x39efcb(_0x321de6);})[_0xc260('0x15')](function(_0x4e426d){logger['error']('GetDeskAccount',_0x4e426d['message'],_0x853846);_0x59fe2f(_0xb57694[_0xc260('0x13')](0x1f4,_0x4e426d[_0xc260('0x14')]));});});};exports[_0xc260('0x20')]=function(_0x5cc196){var _0x516fc2=this;return new Promise(function(_0x414028,_0x34dd87){return db['DeskAccount']['find']({'raw':_0x5cc196['options']?_0x5cc196[_0xc260('0x18')][_0xc260('0x21')]===undefined?!![]:![]:!![],'where':_0x5cc196['options']?_0x5cc196[_0xc260('0x18')][_0xc260('0x19')]||null:null,'attributes':_0x5cc196['options']?_0x5cc196['options'][_0xc260('0x1a')]||null:null,'include':_0x5cc196[_0xc260('0x18')]?_0x5cc196[_0xc260('0x18')][_0xc260('0x1c')]?_['map'](_0x5cc196[_0xc260('0x18')][_0xc260('0x1c')],function(_0x245e6e){return{'model':db[_0x245e6e[_0xc260('0x1e')]],'as':_0x245e6e['as'],'attributes':_0x245e6e['attributes'],'include':_0x245e6e[_0xc260('0x1c')]?_[_0xc260('0x1d')](_0x245e6e[_0xc260('0x1c')],function(_0x37184d){return{'model':db[_0x37184d[_0xc260('0x1e')]],'as':_0x37184d['as'],'attributes':_0x37184d['attributes'],'include':_0x37184d[_0xc260('0x1c')]?_[_0xc260('0x1d')](_0x37184d[_0xc260('0x1c')],function(_0x492e23){return{'model':db[_0x492e23[_0xc260('0x1e')]],'as':_0x492e23['as'],'attributes':_0x492e23[_0xc260('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3aa48f){logger[_0xc260('0xf')](_0xc260('0x20'),_0x5cc196);logger[_0xc260('0x22')](_0xc260('0x20'),_0x5cc196,JSON['stringify'](_0x3aa48f));_0x414028(_0x3aa48f);})[_0xc260('0x15')](function(_0x3d4cd9){logger[_0xc260('0x13')](_0xc260('0x20'),_0x3d4cd9[_0xc260('0x14')],_0x5cc196);_0x34dd87(_0x516fc2[_0xc260('0x13')](0x1f4,_0x3d4cd9[_0xc260('0x14')]));});});};
\ No newline at end of file
+var _0xbef3=['../../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','message','result','catch','GetDeskAccount','DeskAccount','options','raw','attributes','limit','include','map','model','ShowDeskAccount','where','util','moment','ioredis'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0xbef3,0x126));var _0x3bef=function(_0x2ea20f,_0x7870ab){_0x2ea20f=_0x2ea20f-0x0;var _0x4f5250=_0xbef3[_0x2ea20f];return _0x4f5250;};'use strict';var _=require('lodash');var util=require(_0x3bef('0x0'));var moment=require(_0x3bef('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3bef('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3bef('0x3'));var logger=require(_0x3bef('0x4'))(_0x3bef('0x5'));var config=require(_0x3bef('0x6'));var jayson=require(_0x3bef('0x7'));var client=jayson[_0x3bef('0x8')][_0x3bef('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x339c05,_0x1fb658,_0x539367){return new BPromise(function(_0x3f3a9d,_0x905e2b){return client[_0x3bef('0xa')](_0x339c05,_0x539367)[_0x3bef('0xb')](function(_0x155928){logger[_0x3bef('0xc')](_0x3bef('0xd'),_0x1fb658,_0x3bef('0xe'));logger[_0x3bef('0xf')](_0x3bef('0x10'),_0x1fb658,'request\x20sent',JSON[_0x3bef('0x11')](_0x155928));if(_0x155928[_0x3bef('0x12')]){if(_0x155928['error']['code']===0x1f4){logger['error'](_0x3bef('0xd'),_0x1fb658,_0x155928['error']['message']);return _0x905e2b(_0x155928[_0x3bef('0x12')][_0x3bef('0x13')]);}logger['error']('DeskAccount,\x20%s,\x20%s',_0x1fb658,_0x155928['error'][_0x3bef('0x13')]);return _0x3f3a9d(_0x155928[_0x3bef('0x12')][_0x3bef('0x13')]);}else{logger[_0x3bef('0xc')](_0x3bef('0xd'),_0x1fb658,_0x3bef('0xe'));_0x3f3a9d(_0x155928[_0x3bef('0x14')][_0x3bef('0x13')]);}})[_0x3bef('0x15')](function(_0x3b32a3){logger['error'](_0x3bef('0xd'),_0x1fb658,_0x3b32a3);_0x905e2b(_0x3b32a3);});});}exports[_0x3bef('0x16')]=function(_0x1627d8){var _0x99ce66=this;return new Promise(function(_0x3fcd16,_0x3b7062){return db[_0x3bef('0x17')]['findAll']({'raw':_0x1627d8['options']?_0x1627d8[_0x3bef('0x18')][_0x3bef('0x19')]===undefined?!![]:![]:!![],'where':_0x1627d8[_0x3bef('0x18')]?_0x1627d8[_0x3bef('0x18')]['where']||null:null,'attributes':_0x1627d8[_0x3bef('0x18')]?_0x1627d8[_0x3bef('0x18')][_0x3bef('0x1a')]||null:null,'limit':_0x1627d8[_0x3bef('0x18')]?_0x1627d8['options'][_0x3bef('0x1b')]||null:null,'include':_0x1627d8[_0x3bef('0x18')]?_0x1627d8['options'][_0x3bef('0x1c')]?_[_0x3bef('0x1d')](_0x1627d8[_0x3bef('0x18')]['include'],function(_0x1beab1){return{'model':db[_0x1beab1[_0x3bef('0x1e')]],'as':_0x1beab1['as'],'attributes':_0x1beab1[_0x3bef('0x1a')],'include':_0x1beab1['include']?_['map'](_0x1beab1['include'],function(_0x5426dd){return{'model':db[_0x5426dd['model']],'as':_0x5426dd['as'],'attributes':_0x5426dd[_0x3bef('0x1a')],'include':_0x5426dd[_0x3bef('0x1c')]?_[_0x3bef('0x1d')](_0x5426dd[_0x3bef('0x1c')],function(_0x11c1c3){return{'model':db[_0x11c1c3[_0x3bef('0x1e')]],'as':_0x11c1c3['as'],'attributes':_0x11c1c3[_0x3bef('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x268a34){logger[_0x3bef('0xc')](_0x3bef('0x16'),_0x1627d8);logger[_0x3bef('0xf')](_0x3bef('0x16'),_0x1627d8,JSON[_0x3bef('0x11')](_0x268a34));_0x3fcd16(_0x268a34);})[_0x3bef('0x15')](function(_0x20bc3){logger['error']('GetDeskAccount',_0x20bc3[_0x3bef('0x13')],_0x1627d8);_0x3b7062(_0x99ce66['error'](0x1f4,_0x20bc3[_0x3bef('0x13')]));});});};exports[_0x3bef('0x1f')]=function(_0x44c241){var _0x2093bf=this;return new Promise(function(_0x52d366,_0x3108cb){return db[_0x3bef('0x17')]['find']({'raw':_0x44c241[_0x3bef('0x18')]?_0x44c241[_0x3bef('0x18')][_0x3bef('0x19')]===undefined?!![]:![]:!![],'where':_0x44c241[_0x3bef('0x18')]?_0x44c241[_0x3bef('0x18')][_0x3bef('0x20')]||null:null,'attributes':_0x44c241['options']?_0x44c241['options'][_0x3bef('0x1a')]||null:null,'include':_0x44c241['options']?_0x44c241[_0x3bef('0x18')][_0x3bef('0x1c')]?_['map'](_0x44c241['options'][_0x3bef('0x1c')],function(_0x1762e9){return{'model':db[_0x1762e9[_0x3bef('0x1e')]],'as':_0x1762e9['as'],'attributes':_0x1762e9[_0x3bef('0x1a')],'include':_0x1762e9[_0x3bef('0x1c')]?_[_0x3bef('0x1d')](_0x1762e9['include'],function(_0x1a1066){return{'model':db[_0x1a1066[_0x3bef('0x1e')]],'as':_0x1a1066['as'],'attributes':_0x1a1066[_0x3bef('0x1a')],'include':_0x1a1066[_0x3bef('0x1c')]?_[_0x3bef('0x1d')](_0x1a1066[_0x3bef('0x1c')],function(_0x36aa56){return{'model':db[_0x36aa56[_0x3bef('0x1e')]],'as':_0x36aa56['as'],'attributes':_0x36aa56[_0x3bef('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c467e){logger[_0x3bef('0xc')]('ShowDeskAccount',_0x44c241);logger[_0x3bef('0xf')](_0x3bef('0x1f'),_0x44c241,JSON[_0x3bef('0x11')](_0x1c467e));_0x52d366(_0x1c467e);})[_0x3bef('0x15')](function(_0x60f7e0){logger[_0x3bef('0x12')]('ShowDeskAccount',_0x60f7e0['message'],_0x44c241);_0x3108cb(_0x2093bf[_0x3bef('0x12')](0x1f4,_0x60f7e0['message']));});});};
\ No newline at end of file
index 78e6b3f..5dbd404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../config/environment','./intDeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x115690,_0x27d388){var _0x41e63c=function(_0x396459){while(--_0x396459){_0x115690['push'](_0x115690['shift']());}};_0x41e63c(++_0x27d388);}(_0x34e8,0x12c));var _0x834e=function(_0x223190,_0x1b771c){_0x223190=_0x223190-0x0;var _0x38b912=_0x34e8[_0x223190];return _0x38b912;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xa')](_0x834e('0xf'),auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0xa')](_0x834e('0x13'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);router[_0x834e('0xa')](_0x834e('0x15'),auth['isAuthenticated'](),controller[_0x834e('0x16')]);router[_0x834e('0x17')]('/',auth['isAuthenticated'](),controller[_0x834e('0x18')]);router[_0x834e('0x17')](_0x834e('0x15'),auth[_0x834e('0xd')](),controller['setTags']);router[_0x834e('0x19')](_0x834e('0xc'),auth['isAuthenticated'](),controller[_0x834e('0x1a')]);router['delete'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller['destroy']);module[_0x834e('0x1b')]=router;
\ No newline at end of file
+var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x55c634,_0x35c85f){var _0x46868a=function(_0x302b82){while(--_0x302b82){_0x55c634['push'](_0x55c634['shift']());}};_0x46868a(++_0x35c85f);}(_0x3e74,0x175));var _0x43e7=function(_0x58ac09,_0x8549be){_0x58ac09=_0x58ac09-0x0;var _0x4128f1=_0x3e74[_0x58ac09];return _0x4128f1;};'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('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
index 5b8d746..298c11a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x113e=['sequelize','exports','STRING'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x113e,0xc6));var _0xe113=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x113e[_0x2064e5];return _0x21a233;};'use strict';var Sequelize=require(_0xe113('0x0'));module[_0xe113('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe113('0x2')]}};
\ No newline at end of file
+var _0x8810=['STRING','sequelize'];(function(_0x22ffca,_0x336425){var _0x139696=function(_0x4fd9b8){while(--_0x4fd9b8){_0x22ffca['push'](_0x22ffca['shift']());}};_0x139696(++_0x336425);}(_0x8810,0x91));var _0x0881=function(_0x2887af,_0x1daf38){_0x2887af=_0x2887af-0x0;var _0x17a92a=_0x8810[_0x2887af];return _0x17a92a;};'use strict';var Sequelize=require(_0x0881('0x0'));module['exports']={'name':{'type':Sequelize[_0x0881('0x1')]},'description':{'type':Sequelize[_0x0881('0x1')]}};
\ No newline at end of file
index 64a0a92..9a93fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d3=['DeskField','merge','nolimit','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','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','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','DeskConfiguration','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','includeAll','include','catch','show','options','create','body','find','params','getFields'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x13d3,0x1bd));var _0x313d=function(_0x1c7daf,_0x32acbe){_0x1c7daf=_0x1c7daf-0x0;var _0x1c6779=_0x13d3[_0x1c7daf];return _0x1c6779;};'use strict';var emlformat=require(_0x313d('0x0'));var rimraf=require(_0x313d('0x1'));var zipdir=require(_0x313d('0x2'));var jsonpatch=require(_0x313d('0x3'));var rp=require(_0x313d('0x4'));var moment=require(_0x313d('0x5'));var BPromise=require(_0x313d('0x6'));var Mustache=require(_0x313d('0x7'));var util=require('util');var path=require('path');var sox=require(_0x313d('0x8'));var csv=require(_0x313d('0x9'));var ejs=require(_0x313d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x313d('0xb'));var squel=require(_0x313d('0xc'));var crypto=require(_0x313d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x313d('0xe'));var toCsv=require(_0x313d('0x9'));var querystring=require(_0x313d('0xf'));var Papa=require(_0x313d('0x10'));var Redis=require(_0x313d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x313d('0x12'));var as=require(_0x313d('0x13'));var hardwareService=require(_0x313d('0x14'));var logger=require(_0x313d('0x15'))(_0x313d('0x16'));var utils=require(_0x313d('0x17'));var config=require(_0x313d('0x18'));var licenseUtil=require(_0x313d('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x283359,_0x21527e){_0x21527e=_0x21527e||0xcc;return function(_0x390942){if(_0x390942){return _0x283359[_0x313d('0x1a')](_0x21527e);}return _0x283359[_0x313d('0x1b')](_0x21527e)[_0x313d('0x1c')]();};}function respondWithResult(_0x2d06c4,_0x448c48){_0x448c48=_0x448c48||0xc8;return function(_0x196e23){if(_0x196e23){return _0x2d06c4[_0x313d('0x1b')](_0x448c48)['json'](_0x196e23);}};}function respondWithFilteredResult(_0x5a3bea,_0x4fb957){return function(_0x45c43d){if(_0x45c43d){var _0x3537b9=typeof _0x4fb957[_0x313d('0x1d')]===_0x313d('0x1e')&&typeof _0x4fb957[_0x313d('0x1f')]===_0x313d('0x1e');var _0x4fd659=_0x45c43d[_0x313d('0x20')];var _0x57ed59=_0x3537b9?0x0:_0x4fb957['offset'];var _0x3792dc=_0x3537b9?_0x45c43d['count']:_0x4fb957[_0x313d('0x1d')]+_0x4fb957[_0x313d('0x1f')];var _0x4668c5;if(_0x3792dc>=_0x4fd659){_0x3792dc=_0x4fd659;_0x4668c5=0xc8;}else{_0x4668c5=0xce;}_0x5a3bea[_0x313d('0x1b')](_0x4668c5);return _0x5a3bea[_0x313d('0x21')](_0x313d('0x22'),_0x57ed59+'-'+_0x3792dc+'/'+_0x4fd659)['json'](_0x45c43d);}return null;};}function patchUpdates(_0xb47aa0){return function(_0x2f8614){try{jsonpatch[_0x313d('0x23')](_0x2f8614,_0xb47aa0,!![]);}catch(_0x6a5856){return BPromise[_0x313d('0x24')](_0x6a5856);}return _0x2f8614[_0x313d('0x25')]();};}function saveUpdates(_0x2bae76,_0x5ce4f9){return function(_0x1bb9f7){if(_0x1bb9f7){return _0x1bb9f7[_0x313d('0x26')](_0x2bae76)[_0x313d('0x27')](function(_0x2aa47f){return _0x2aa47f;});}return null;};}function removeEntity(_0x48a0fa,_0x46767f){return function(_0x4c3594){if(_0x4c3594){return _0x4c3594[_0x313d('0x28')]()['then'](function(){_0x48a0fa[_0x313d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2463bc,_0x87929e){return function(_0x2b1de8){if(!_0x2b1de8){_0x2463bc[_0x313d('0x1a')](0x194);}return _0x2b1de8;};}function handleError(_0x33bb12,_0x33f994){_0x33f994=_0x33f994||0x1f4;return function(_0x403527){logger[_0x313d('0x29')](_0x403527[_0x313d('0x2a')]);if(_0x403527[_0x313d('0x2b')]){delete _0x403527[_0x313d('0x2b')];}_0x33bb12[_0x313d('0x1b')](_0x33f994)[_0x313d('0x2c')](_0x403527);};}exports[_0x313d('0x2d')]=function(_0x4c5576,_0x57d421){var _0x212c7d={},_0x44a344={},_0x42d824={'count':0x0,'rows':[]};var _0x17239a=_['map'](db[_0x313d('0x2e')][_0x313d('0x2f')],function(_0x16514a){return{'name':_0x16514a[_0x313d('0x30')],'type':_0x16514a[_0x313d('0x31')][_0x313d('0x32')]};});_0x44a344['model']=_[_0x313d('0x33')](_0x17239a,'name');_0x44a344[_0x313d('0x34')]=_[_0x313d('0x35')](_0x4c5576[_0x313d('0x34')]);_0x44a344[_0x313d('0x36')]=_[_0x313d('0x37')](_0x44a344['model'],_0x44a344[_0x313d('0x34')]);_0x212c7d[_0x313d('0x38')]=_[_0x313d('0x37')](_0x44a344['model'],qs[_0x313d('0x39')](_0x4c5576['query'][_0x313d('0x39')]));_0x212c7d[_0x313d('0x38')]=_0x212c7d[_0x313d('0x38')][_0x313d('0x3a')]?_0x212c7d[_0x313d('0x38')]:_0x44a344[_0x313d('0x3b')];if(!_0x4c5576[_0x313d('0x34')][_0x313d('0x3c')]('nolimit')){_0x212c7d['limit']=qs[_0x313d('0x1f')](_0x4c5576[_0x313d('0x34')][_0x313d('0x1f')]);_0x212c7d[_0x313d('0x1d')]=qs[_0x313d('0x1d')](_0x4c5576[_0x313d('0x34')]['offset']);}_0x212c7d[_0x313d('0x3d')]=qs[_0x313d('0x3e')](_0x4c5576[_0x313d('0x34')][_0x313d('0x3e')]);_0x212c7d[_0x313d('0x3f')]=qs[_0x313d('0x36')](_[_0x313d('0x40')](_0x4c5576['query'],_0x44a344[_0x313d('0x36')]),_0x17239a);if(_0x4c5576['query']['filter']){_0x212c7d[_0x313d('0x3f')]=_['merge'](_0x212c7d[_0x313d('0x3f')],{'$or':_[_0x313d('0x33')](_0x17239a,function(_0x159766){if(_0x159766[_0x313d('0x31')]!==_0x313d('0x41')){var _0x332e7c={};_0x332e7c[_0x159766[_0x313d('0x2b')]]={'$like':'%'+_0x4c5576[_0x313d('0x34')][_0x313d('0x42')]+'%'};return _0x332e7c;}})});}_0x212c7d=_['merge']({},_0x212c7d,_0x4c5576['options']);var _0x3e0803={'where':_0x212c7d['where']};return db[_0x313d('0x2e')]['count'](_0x3e0803)[_0x313d('0x27')](function(_0x424514){_0x42d824[_0x313d('0x20')]=_0x424514;if(_0x4c5576[_0x313d('0x34')][_0x313d('0x43')]){_0x212c7d[_0x313d('0x44')]=[{'all':!![]}];}return db[_0x313d('0x2e')]['findAll'](_0x212c7d);})[_0x313d('0x27')](function(_0x41a64d){_0x42d824['rows']=_0x41a64d;return _0x42d824;})[_0x313d('0x27')](respondWithFilteredResult(_0x57d421,_0x212c7d))[_0x313d('0x45')](handleError(_0x57d421,null));};exports[_0x313d('0x46')]=function(_0x4f2b4d,_0x5da54f){var _0x2126c5={'raw':![],'where':{'id':_0x4f2b4d['params']['id']}},_0xfb84e4={};_0xfb84e4[_0x313d('0x3b')]=_[_0x313d('0x35')](db['DeskConfiguration'][_0x313d('0x2f')]);_0xfb84e4[_0x313d('0x34')]=_[_0x313d('0x35')](_0x4f2b4d[_0x313d('0x34')]);_0xfb84e4['filters']=_[_0x313d('0x37')](_0xfb84e4[_0x313d('0x3b')],_0xfb84e4['query']);_0x2126c5[_0x313d('0x38')]=_['intersection'](_0xfb84e4[_0x313d('0x3b')],qs[_0x313d('0x39')](_0x4f2b4d[_0x313d('0x34')][_0x313d('0x39')]));_0x2126c5[_0x313d('0x38')]=_0x2126c5['attributes']['length']?_0x2126c5[_0x313d('0x38')]:_0xfb84e4[_0x313d('0x3b')];if(_0x4f2b4d[_0x313d('0x34')]['includeAll']){_0x2126c5[_0x313d('0x44')]=[{'all':!![]}];}_0x2126c5=_['merge']({},_0x2126c5,_0x4f2b4d[_0x313d('0x47')]);return db[_0x313d('0x2e')]['find'](_0x2126c5)['then'](handleEntityNotFound(_0x5da54f,null))[_0x313d('0x27')](respondWithResult(_0x5da54f,null))[_0x313d('0x45')](handleError(_0x5da54f,null));};exports[_0x313d('0x48')]=function(_0x438643,_0x31f80d){return db['DeskConfiguration'][_0x313d('0x48')](_0x438643[_0x313d('0x49')],{})[_0x313d('0x27')](respondWithResult(_0x31f80d,0xc9))['catch'](handleError(_0x31f80d,null));};exports[_0x313d('0x26')]=function(_0x484394,_0x6d6f5a){if(_0x484394[_0x313d('0x49')]['id']){delete _0x484394[_0x313d('0x49')]['id'];}return db[_0x313d('0x2e')][_0x313d('0x4a')]({'where':{'id':_0x484394[_0x313d('0x4b')]['id']}})['then'](handleEntityNotFound(_0x6d6f5a,null))[_0x313d('0x27')](saveUpdates(_0x484394['body'],null))[_0x313d('0x27')](respondWithResult(_0x6d6f5a,null))[_0x313d('0x45')](handleError(_0x6d6f5a,null));};exports[_0x313d('0x28')]=function(_0x163196,_0xd76868){return db['DeskConfiguration'][_0x313d('0x4a')]({'where':{'id':_0x163196[_0x313d('0x4b')]['id']}})[_0x313d('0x27')](handleEntityNotFound(_0xd76868,null))[_0x313d('0x27')](removeEntity(_0xd76868,null))[_0x313d('0x45')](handleError(_0xd76868,null));};exports[_0x313d('0x4c')]=function(_0x209c22,_0x3862cc,_0x2e5b2e){var _0x458fc2={};var _0x4077bc={};var _0x3d96c0;var _0x1c7b0c;return db[_0x313d('0x2e')]['findOne']({'where':{'id':_0x209c22['params']['id']}})[_0x313d('0x27')](handleEntityNotFound(_0x3862cc,null))[_0x313d('0x27')](function(_0x51458f){if(_0x51458f){_0x3d96c0=_0x51458f;_0x4077bc[_0x313d('0x3b')]=_[_0x313d('0x35')](db[_0x313d('0x4d')][_0x313d('0x2f')]);_0x4077bc[_0x313d('0x34')]=_[_0x313d('0x35')](_0x209c22[_0x313d('0x34')]);_0x4077bc[_0x313d('0x36')]=_[_0x313d('0x37')](_0x4077bc['model'],_0x4077bc[_0x313d('0x34')]);_0x458fc2['attributes']=_['intersection'](_0x4077bc[_0x313d('0x3b')],qs[_0x313d('0x39')](_0x209c22[_0x313d('0x34')][_0x313d('0x39')]));_0x458fc2['attributes']=_0x458fc2[_0x313d('0x38')][_0x313d('0x3a')]?_0x458fc2[_0x313d('0x38')]:_0x4077bc['model'];_0x458fc2[_0x313d('0x3d')]=qs[_0x313d('0x3e')](_0x209c22['query'][_0x313d('0x3e')]);_0x458fc2[_0x313d('0x3f')]=qs[_0x313d('0x36')](_[_0x313d('0x40')](_0x209c22[_0x313d('0x34')],_0x4077bc[_0x313d('0x36')]));if(_0x209c22[_0x313d('0x34')]['filter']){_0x458fc2[_0x313d('0x3f')]=_[_0x313d('0x4e')](_0x458fc2['where'],{'$or':_[_0x313d('0x33')](_0x458fc2[_0x313d('0x38')],function(_0x59a089){var _0x263efc={};_0x263efc[_0x59a089]={'$like':'%'+_0x209c22['query'][_0x313d('0x42')]+'%'};return _0x263efc;})});}_0x458fc2=_[_0x313d('0x4e')]({},_0x458fc2,_0x209c22['options']);return _0x3d96c0[_0x313d('0x4c')](_0x458fc2);}})[_0x313d('0x27')](function(_0xf71bce){if(_0xf71bce){_0x1c7b0c=_0xf71bce['length'];if(!_0x209c22['query'][_0x313d('0x3c')](_0x313d('0x4f'))){_0x458fc2[_0x313d('0x1f')]=qs['limit'](_0x209c22[_0x313d('0x34')]['limit']);_0x458fc2[_0x313d('0x1d')]=qs[_0x313d('0x1d')](_0x209c22['query'][_0x313d('0x1d')]);}return _0x3d96c0[_0x313d('0x4c')](_0x458fc2);}})[_0x313d('0x27')](function(_0x3abaae){if(_0x3abaae){return _0x3abaae?{'count':_0x1c7b0c,'rows':_0x3abaae}:null;}})[_0x313d('0x27')](respondWithResult(_0x3862cc,null))[_0x313d('0x45')](handleError(_0x3862cc,null));};exports[_0x313d('0x50')]=function(_0x2a9ed6,_0x15da5b,_0x22f35f){var _0x4109ce={};var _0x550106={};var _0x25d7ac;var _0x539f69;return db['DeskConfiguration'][_0x313d('0x51')]({'where':{'id':_0x2a9ed6[_0x313d('0x4b')]['id']}})['then'](handleEntityNotFound(_0x15da5b,null))['then'](function(_0x573ebe){if(_0x573ebe){_0x25d7ac=_0x573ebe;_0x550106[_0x313d('0x3b')]=_[_0x313d('0x35')](db['DeskField'][_0x313d('0x2f')]);_0x550106[_0x313d('0x34')]=_[_0x313d('0x35')](_0x2a9ed6[_0x313d('0x34')]);_0x550106[_0x313d('0x36')]=_[_0x313d('0x37')](_0x550106[_0x313d('0x3b')],_0x550106[_0x313d('0x34')]);_0x4109ce['attributes']=_[_0x313d('0x37')](_0x550106['model'],qs[_0x313d('0x39')](_0x2a9ed6[_0x313d('0x34')][_0x313d('0x39')]));_0x4109ce[_0x313d('0x38')]=_0x4109ce[_0x313d('0x38')][_0x313d('0x3a')]?_0x4109ce[_0x313d('0x38')]:_0x550106[_0x313d('0x3b')];_0x4109ce[_0x313d('0x3d')]=qs['sort'](_0x2a9ed6[_0x313d('0x34')][_0x313d('0x3e')]);_0x4109ce['where']=qs[_0x313d('0x36')](_[_0x313d('0x40')](_0x2a9ed6[_0x313d('0x34')],_0x550106[_0x313d('0x36')]));if(_0x2a9ed6['query']['filter']){_0x4109ce[_0x313d('0x3f')]=_[_0x313d('0x4e')](_0x4109ce[_0x313d('0x3f')],{'$or':_[_0x313d('0x33')](_0x4109ce[_0x313d('0x38')],function(_0xfad9f0){var _0x42f1e3={};_0x42f1e3[_0xfad9f0]={'$like':'%'+_0x2a9ed6[_0x313d('0x34')]['filter']+'%'};return _0x42f1e3;})});}_0x4109ce=_[_0x313d('0x4e')]({},_0x4109ce,_0x2a9ed6[_0x313d('0x47')]);return _0x25d7ac['getSubjects'](_0x4109ce);}})[_0x313d('0x27')](function(_0x148869){if(_0x148869){_0x539f69=_0x148869[_0x313d('0x3a')];if(!_0x2a9ed6[_0x313d('0x34')][_0x313d('0x3c')](_0x313d('0x4f'))){_0x4109ce['limit']=qs[_0x313d('0x1f')](_0x2a9ed6['query'][_0x313d('0x1f')]);_0x4109ce['offset']=qs[_0x313d('0x1d')](_0x2a9ed6['query']['offset']);}return _0x25d7ac[_0x313d('0x50')](_0x4109ce);}})[_0x313d('0x27')](function(_0x52e976){if(_0x52e976){return _0x52e976?{'count':_0x539f69,'rows':_0x52e976}:null;}})[_0x313d('0x27')](respondWithResult(_0x15da5b,null))['catch'](handleError(_0x15da5b,null));};exports[_0x313d('0x52')]=function(_0x53819d,_0x4c10e3,_0x3c9251){var _0x1cd569={};var _0x55cf92={};var _0x192b1a;var _0x143f1e;return db[_0x313d('0x2e')]['findOne']({'where':{'id':_0x53819d['params']['id']}})[_0x313d('0x27')](handleEntityNotFound(_0x4c10e3,null))[_0x313d('0x27')](function(_0x216979){if(_0x216979){_0x192b1a=_0x216979;_0x55cf92['model']=_[_0x313d('0x35')](db['DeskField']['rawAttributes']);_0x55cf92[_0x313d('0x34')]=_[_0x313d('0x35')](_0x53819d[_0x313d('0x34')]);_0x55cf92[_0x313d('0x36')]=_[_0x313d('0x37')](_0x55cf92[_0x313d('0x3b')],_0x55cf92[_0x313d('0x34')]);_0x1cd569[_0x313d('0x38')]=_[_0x313d('0x37')](_0x55cf92[_0x313d('0x3b')],qs[_0x313d('0x39')](_0x53819d['query'][_0x313d('0x39')]));_0x1cd569[_0x313d('0x38')]=_0x1cd569[_0x313d('0x38')][_0x313d('0x3a')]?_0x1cd569[_0x313d('0x38')]:_0x55cf92['model'];_0x1cd569[_0x313d('0x3d')]=qs['sort'](_0x53819d[_0x313d('0x34')][_0x313d('0x3e')]);_0x1cd569[_0x313d('0x3f')]=qs[_0x313d('0x36')](_[_0x313d('0x40')](_0x53819d[_0x313d('0x34')],_0x55cf92[_0x313d('0x36')]));if(_0x53819d[_0x313d('0x34')][_0x313d('0x42')]){_0x1cd569[_0x313d('0x3f')]=_[_0x313d('0x4e')](_0x1cd569[_0x313d('0x3f')],{'$or':_['map'](_0x1cd569[_0x313d('0x38')],function(_0x2c4cb0){var _0x3a81f7={};_0x3a81f7[_0x2c4cb0]={'$like':'%'+_0x53819d['query']['filter']+'%'};return _0x3a81f7;})});}_0x1cd569=_[_0x313d('0x4e')]({},_0x1cd569,_0x53819d['options']);return _0x192b1a[_0x313d('0x52')](_0x1cd569);}})[_0x313d('0x27')](function(_0x72eb5f){if(_0x72eb5f){_0x143f1e=_0x72eb5f[_0x313d('0x3a')];if(!_0x53819d['query']['hasOwnProperty'](_0x313d('0x4f'))){_0x1cd569[_0x313d('0x1f')]=qs[_0x313d('0x1f')](_0x53819d[_0x313d('0x34')][_0x313d('0x1f')]);_0x1cd569[_0x313d('0x1d')]=qs[_0x313d('0x1d')](_0x53819d[_0x313d('0x34')][_0x313d('0x1d')]);}return _0x192b1a['getDescriptions'](_0x1cd569);}})[_0x313d('0x27')](function(_0x368ecf){if(_0x368ecf){return _0x368ecf?{'count':_0x143f1e,'rows':_0x368ecf}:null;}})['then'](respondWithResult(_0x4c10e3,null))[_0x313d('0x45')](handleError(_0x4c10e3,null));};exports[_0x313d('0x53')]=function(_0x2e0d5f,_0x22c1d9,_0x50e5fb){var _0x3c4fd9={};var _0x1d38cf={};var _0x3af2da;var _0x8abb8e;return db[_0x313d('0x2e')][_0x313d('0x51')]({'where':{'id':_0x2e0d5f[_0x313d('0x4b')]['id']}})[_0x313d('0x27')](handleEntityNotFound(_0x22c1d9,null))['then'](function(_0x45d512){if(_0x45d512){_0x3af2da=_0x45d512;_0x1d38cf['model']=_['keys'](db[_0x313d('0x54')][_0x313d('0x2f')]);_0x1d38cf[_0x313d('0x34')]=_['keys'](_0x2e0d5f[_0x313d('0x34')]);_0x1d38cf[_0x313d('0x36')]=_['intersection'](_0x1d38cf[_0x313d('0x3b')],_0x1d38cf['query']);_0x3c4fd9['attributes']=_[_0x313d('0x37')](_0x1d38cf[_0x313d('0x3b')],qs[_0x313d('0x39')](_0x2e0d5f[_0x313d('0x34')][_0x313d('0x39')]));_0x3c4fd9['attributes']=_0x3c4fd9[_0x313d('0x38')][_0x313d('0x3a')]?_0x3c4fd9[_0x313d('0x38')]:_0x1d38cf[_0x313d('0x3b')];_0x3c4fd9['order']=qs[_0x313d('0x3e')](_0x2e0d5f[_0x313d('0x34')][_0x313d('0x3e')]);_0x3c4fd9[_0x313d('0x3f')]=qs['filters'](_[_0x313d('0x40')](_0x2e0d5f['query'],_0x1d38cf[_0x313d('0x36')]));if(_0x2e0d5f['query']['filter']){_0x3c4fd9['where']=_[_0x313d('0x4e')](_0x3c4fd9['where'],{'$or':_[_0x313d('0x33')](_0x3c4fd9[_0x313d('0x38')],function(_0x42b0fe){var _0x251db6={};_0x251db6[_0x42b0fe]={'$like':'%'+_0x2e0d5f[_0x313d('0x34')]['filter']+'%'};return _0x251db6;})});}_0x3c4fd9=_[_0x313d('0x4e')]({},_0x3c4fd9,_0x2e0d5f['options']);return _0x3af2da[_0x313d('0x53')](_0x3c4fd9);}})[_0x313d('0x27')](function(_0x19ccb2){if(_0x19ccb2){_0x8abb8e=_0x19ccb2[_0x313d('0x3a')];if(!_0x2e0d5f[_0x313d('0x34')][_0x313d('0x3c')]('nolimit')){_0x3c4fd9['limit']=qs['limit'](_0x2e0d5f['query'][_0x313d('0x1f')]);_0x3c4fd9[_0x313d('0x1d')]=qs['offset'](_0x2e0d5f[_0x313d('0x34')][_0x313d('0x1d')]);}return _0x3af2da[_0x313d('0x53')](_0x3c4fd9);}})[_0x313d('0x27')](function(_0x1d4f11){if(_0x1d4f11){return _0x1d4f11?{'count':_0x8abb8e,'rows':_0x1d4f11}:null;}})[_0x313d('0x27')](respondWithResult(_0x22c1d9,null))[_0x313d('0x45')](handleError(_0x22c1d9,null));};exports[_0x313d('0x55')]=function(_0x2c7e33,_0x564396,_0x311d0e){if(_0x2c7e33[_0x313d('0x49')]['id']){delete _0x2c7e33[_0x313d('0x49')]['id'];}return db[_0x313d('0x2e')][_0x313d('0x51')]({'where':{'id':_0x2c7e33[_0x313d('0x4b')]['id']}})[_0x313d('0x27')](handleEntityNotFound(_0x564396,null))[_0x313d('0x27')](function(_0x1f5a2f){if(_0x1f5a2f){return _0x1f5a2f[_0x313d('0x55')](_0x2c7e33[_0x313d('0x49')][_0x313d('0x56')]||[]);}return null;})[_0x313d('0x27')](respondWithResult(_0x564396,null))['catch'](handleError(_0x564396,null));};
\ No newline at end of file
+var _0x49d3=['then','destroy','sendStatus','error','stack','name','send','index','DeskConfiguration','rawAttributes','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','findAll','catch','show','keys','include','merge','create','body','find','params','findOne','getFields','getSubjects','DeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../config/logger','api','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x49d3,0xcf));var _0x349d=function(_0x2772ba,_0x26e5f2){_0x2772ba=_0x2772ba-0x0;var _0x5cc32b=_0x49d3[_0x2772ba];return _0x5cc32b;};'use strict';var emlformat=require(_0x349d('0x0'));var rimraf=require(_0x349d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x349d('0x2'));var rp=require('request-promise');var moment=require(_0x349d('0x3'));var BPromise=require(_0x349d('0x4'));var Mustache=require(_0x349d('0x5'));var util=require(_0x349d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x349d('0x7'));var ejs=require(_0x349d('0x8'));var fs=require('fs');var fs_extra=require(_0x349d('0x9'));var _=require(_0x349d('0xa'));var squel=require(_0x349d('0xb'));var crypto=require('crypto');var jsforce=require(_0x349d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x349d('0x7'));var querystring=require(_0x349d('0xd'));var Papa=require(_0x349d('0xe'));var Redis=require(_0x349d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x349d('0x10'))(_0x349d('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x349d('0x12'))['db'];function respondWithStatusCode(_0x862b45,_0x57b1f9){_0x57b1f9=_0x57b1f9||0xcc;return function(_0xf03ed6){if(_0xf03ed6){return _0x862b45['sendStatus'](_0x57b1f9);}return _0x862b45[_0x349d('0x13')](_0x57b1f9)[_0x349d('0x14')]();};}function respondWithResult(_0x4c3f8d,_0x4e7c4f){_0x4e7c4f=_0x4e7c4f||0xc8;return function(_0x1a91eb){if(_0x1a91eb){return _0x4c3f8d[_0x349d('0x13')](_0x4e7c4f)[_0x349d('0x15')](_0x1a91eb);}};}function respondWithFilteredResult(_0x435dca,_0x302d55){return function(_0x406ceb){if(_0x406ceb){var _0x35f6f5=typeof _0x302d55[_0x349d('0x16')]===_0x349d('0x17')&&typeof _0x302d55[_0x349d('0x18')]===_0x349d('0x17');var _0x34c750=_0x406ceb[_0x349d('0x19')];var _0x5e8f6d=_0x35f6f5?0x0:_0x302d55[_0x349d('0x16')];var _0x294af6=_0x35f6f5?_0x406ceb[_0x349d('0x19')]:_0x302d55[_0x349d('0x16')]+_0x302d55[_0x349d('0x18')];var _0x13b798;if(_0x294af6>=_0x34c750){_0x294af6=_0x34c750;_0x13b798=0xc8;}else{_0x13b798=0xce;}_0x435dca[_0x349d('0x13')](_0x13b798);return _0x435dca[_0x349d('0x1a')]('Content-Range',_0x5e8f6d+'-'+_0x294af6+'/'+_0x34c750)[_0x349d('0x15')](_0x406ceb);}return null;};}function patchUpdates(_0x3bae01){return function(_0x532f30){try{jsonpatch[_0x349d('0x1b')](_0x532f30,_0x3bae01,!![]);}catch(_0x3f2e89){return BPromise[_0x349d('0x1c')](_0x3f2e89);}return _0x532f30['save']();};}function saveUpdates(_0x2d62d7,_0x4e5cc6){return function(_0x400072){if(_0x400072){return _0x400072[_0x349d('0x1d')](_0x2d62d7)[_0x349d('0x1e')](function(_0xfea264){return _0xfea264;});}return null;};}function removeEntity(_0x1d12e3,_0x1b8625){return function(_0x9a0a21){if(_0x9a0a21){return _0x9a0a21[_0x349d('0x1f')]()['then'](function(){_0x1d12e3[_0x349d('0x13')](0xcc)[_0x349d('0x14')]();});}};}function handleEntityNotFound(_0x24b37d,_0x314474){return function(_0x1f06e9){if(!_0x1f06e9){_0x24b37d[_0x349d('0x20')](0x194);}return _0x1f06e9;};}function handleError(_0x5834fb,_0x49c15b){_0x49c15b=_0x49c15b||0x1f4;return function(_0x81cfb0){logger[_0x349d('0x21')](_0x81cfb0[_0x349d('0x22')]);if(_0x81cfb0['name']){delete _0x81cfb0[_0x349d('0x23')];}_0x5834fb[_0x349d('0x13')](_0x49c15b)[_0x349d('0x24')](_0x81cfb0);};}exports[_0x349d('0x25')]=function(_0x5bb19f,_0x1e751b){var _0x4d2740={},_0x489a34={},_0x3bfe4a={'count':0x0,'rows':[]};var _0x57c681=_['map'](db[_0x349d('0x26')][_0x349d('0x27')],function(_0x167ee2){return{'name':_0x167ee2[_0x349d('0x28')],'type':_0x167ee2[_0x349d('0x29')][_0x349d('0x2a')]};});_0x489a34['model']=_[_0x349d('0x2b')](_0x57c681,_0x349d('0x23'));_0x489a34[_0x349d('0x2c')]=_['keys'](_0x5bb19f['query']);_0x489a34[_0x349d('0x2d')]=_[_0x349d('0x2e')](_0x489a34[_0x349d('0x2f')],_0x489a34[_0x349d('0x2c')]);_0x4d2740[_0x349d('0x30')]=_[_0x349d('0x2e')](_0x489a34[_0x349d('0x2f')],qs[_0x349d('0x31')](_0x5bb19f['query'][_0x349d('0x31')]));_0x4d2740[_0x349d('0x30')]=_0x4d2740['attributes'][_0x349d('0x32')]?_0x4d2740[_0x349d('0x30')]:_0x489a34[_0x349d('0x2f')];if(!_0x5bb19f[_0x349d('0x2c')][_0x349d('0x33')](_0x349d('0x34'))){_0x4d2740[_0x349d('0x18')]=qs[_0x349d('0x18')](_0x5bb19f[_0x349d('0x2c')][_0x349d('0x18')]);_0x4d2740[_0x349d('0x16')]=qs['offset'](_0x5bb19f['query']['offset']);}_0x4d2740[_0x349d('0x35')]=qs['sort'](_0x5bb19f[_0x349d('0x2c')][_0x349d('0x36')]);_0x4d2740['where']=qs[_0x349d('0x2d')](_[_0x349d('0x37')](_0x5bb19f['query'],_0x489a34[_0x349d('0x2d')]),_0x57c681);if(_0x5bb19f[_0x349d('0x2c')][_0x349d('0x38')]){_0x4d2740[_0x349d('0x39')]=_['merge'](_0x4d2740[_0x349d('0x39')],{'$or':_[_0x349d('0x2b')](_0x57c681,function(_0x3f1705){if(_0x3f1705[_0x349d('0x29')]!==_0x349d('0x3a')){var _0x5b75d2={};_0x5b75d2[_0x3f1705['name']]={'$like':'%'+_0x5bb19f[_0x349d('0x2c')]['filter']+'%'};return _0x5b75d2;}})});}_0x4d2740=_['merge']({},_0x4d2740,_0x5bb19f[_0x349d('0x3b')]);var _0x54663e={'where':_0x4d2740['where']};return db[_0x349d('0x26')]['count'](_0x54663e)[_0x349d('0x1e')](function(_0x8a3ca5){_0x3bfe4a[_0x349d('0x19')]=_0x8a3ca5;if(_0x5bb19f[_0x349d('0x2c')]['includeAll']){_0x4d2740['include']=[{'all':!![]}];}return db[_0x349d('0x26')][_0x349d('0x3c')](_0x4d2740);})['then'](function(_0x410ac9){_0x3bfe4a['rows']=_0x410ac9;return _0x3bfe4a;})[_0x349d('0x1e')](respondWithFilteredResult(_0x1e751b,_0x4d2740))[_0x349d('0x3d')](handleError(_0x1e751b,null));};exports[_0x349d('0x3e')]=function(_0x51de27,_0x96460f){var _0x5138b1={'raw':![],'where':{'id':_0x51de27['params']['id']}},_0x265416={};_0x265416['model']=_[_0x349d('0x3f')](db[_0x349d('0x26')][_0x349d('0x27')]);_0x265416[_0x349d('0x2c')]=_[_0x349d('0x3f')](_0x51de27['query']);_0x265416[_0x349d('0x2d')]=_[_0x349d('0x2e')](_0x265416[_0x349d('0x2f')],_0x265416[_0x349d('0x2c')]);_0x5138b1[_0x349d('0x30')]=_[_0x349d('0x2e')](_0x265416[_0x349d('0x2f')],qs['fields'](_0x51de27['query'][_0x349d('0x31')]));_0x5138b1[_0x349d('0x30')]=_0x5138b1[_0x349d('0x30')][_0x349d('0x32')]?_0x5138b1[_0x349d('0x30')]:_0x265416['model'];if(_0x51de27[_0x349d('0x2c')]['includeAll']){_0x5138b1[_0x349d('0x40')]=[{'all':!![]}];}_0x5138b1=_[_0x349d('0x41')]({},_0x5138b1,_0x51de27['options']);return db[_0x349d('0x26')]['find'](_0x5138b1)[_0x349d('0x1e')](handleEntityNotFound(_0x96460f,null))['then'](respondWithResult(_0x96460f,null))[_0x349d('0x3d')](handleError(_0x96460f,null));};exports[_0x349d('0x42')]=function(_0x11b155,_0x5c6baa){return db[_0x349d('0x26')][_0x349d('0x42')](_0x11b155['body'],{})[_0x349d('0x1e')](respondWithResult(_0x5c6baa,0xc9))[_0x349d('0x3d')](handleError(_0x5c6baa,null));};exports[_0x349d('0x1d')]=function(_0x1d90a3,_0x344a0a){if(_0x1d90a3[_0x349d('0x43')]['id']){delete _0x1d90a3[_0x349d('0x43')]['id'];}return db[_0x349d('0x26')][_0x349d('0x44')]({'where':{'id':_0x1d90a3[_0x349d('0x45')]['id']}})[_0x349d('0x1e')](handleEntityNotFound(_0x344a0a,null))[_0x349d('0x1e')](saveUpdates(_0x1d90a3['body'],null))[_0x349d('0x1e')](respondWithResult(_0x344a0a,null))[_0x349d('0x3d')](handleError(_0x344a0a,null));};exports[_0x349d('0x1f')]=function(_0x306b25,_0x452ffe){return db[_0x349d('0x26')][_0x349d('0x44')]({'where':{'id':_0x306b25[_0x349d('0x45')]['id']}})[_0x349d('0x1e')](handleEntityNotFound(_0x452ffe,null))['then'](removeEntity(_0x452ffe,null))[_0x349d('0x3d')](handleError(_0x452ffe,null));};exports['getFields']=function(_0x35d303,_0x28eeeb,_0x192b7c){var _0x561730={};var _0x4618f7={};var _0x19587c;var _0x93b497;return db[_0x349d('0x26')][_0x349d('0x46')]({'where':{'id':_0x35d303[_0x349d('0x45')]['id']}})['then'](handleEntityNotFound(_0x28eeeb,null))[_0x349d('0x1e')](function(_0xcf688){if(_0xcf688){_0x19587c=_0xcf688;_0x4618f7[_0x349d('0x2f')]=_['keys'](db['DeskField']['rawAttributes']);_0x4618f7['query']=_[_0x349d('0x3f')](_0x35d303[_0x349d('0x2c')]);_0x4618f7['filters']=_['intersection'](_0x4618f7[_0x349d('0x2f')],_0x4618f7[_0x349d('0x2c')]);_0x561730[_0x349d('0x30')]=_['intersection'](_0x4618f7['model'],qs[_0x349d('0x31')](_0x35d303[_0x349d('0x2c')][_0x349d('0x31')]));_0x561730[_0x349d('0x30')]=_0x561730[_0x349d('0x30')][_0x349d('0x32')]?_0x561730[_0x349d('0x30')]:_0x4618f7[_0x349d('0x2f')];_0x561730['order']=qs[_0x349d('0x36')](_0x35d303['query'][_0x349d('0x36')]);_0x561730['where']=qs[_0x349d('0x2d')](_[_0x349d('0x37')](_0x35d303[_0x349d('0x2c')],_0x4618f7[_0x349d('0x2d')]));if(_0x35d303[_0x349d('0x2c')][_0x349d('0x38')]){_0x561730[_0x349d('0x39')]=_['merge'](_0x561730[_0x349d('0x39')],{'$or':_[_0x349d('0x2b')](_0x561730[_0x349d('0x30')],function(_0x1e4fb7){var _0x2774cd={};_0x2774cd[_0x1e4fb7]={'$like':'%'+_0x35d303[_0x349d('0x2c')][_0x349d('0x38')]+'%'};return _0x2774cd;})});}_0x561730=_[_0x349d('0x41')]({},_0x561730,_0x35d303[_0x349d('0x3b')]);return _0x19587c[_0x349d('0x47')](_0x561730);}})['then'](function(_0x35931){if(_0x35931){_0x93b497=_0x35931[_0x349d('0x32')];if(!_0x35d303[_0x349d('0x2c')]['hasOwnProperty'](_0x349d('0x34'))){_0x561730[_0x349d('0x18')]=qs['limit'](_0x35d303[_0x349d('0x2c')][_0x349d('0x18')]);_0x561730['offset']=qs[_0x349d('0x16')](_0x35d303['query']['offset']);}return _0x19587c['getFields'](_0x561730);}})[_0x349d('0x1e')](function(_0x2e2fac){if(_0x2e2fac){return _0x2e2fac?{'count':_0x93b497,'rows':_0x2e2fac}:null;}})[_0x349d('0x1e')](respondWithResult(_0x28eeeb,null))[_0x349d('0x3d')](handleError(_0x28eeeb,null));};exports[_0x349d('0x48')]=function(_0x4f461a,_0x46f53d,_0x189d3d){var _0x2f8eff={};var _0x1fefc3={};var _0x576318;var _0x494c7b;return db[_0x349d('0x26')][_0x349d('0x46')]({'where':{'id':_0x4f461a[_0x349d('0x45')]['id']}})['then'](handleEntityNotFound(_0x46f53d,null))[_0x349d('0x1e')](function(_0x226cf0){if(_0x226cf0){_0x576318=_0x226cf0;_0x1fefc3[_0x349d('0x2f')]=_[_0x349d('0x3f')](db[_0x349d('0x49')][_0x349d('0x27')]);_0x1fefc3[_0x349d('0x2c')]=_[_0x349d('0x3f')](_0x4f461a[_0x349d('0x2c')]);_0x1fefc3[_0x349d('0x2d')]=_[_0x349d('0x2e')](_0x1fefc3[_0x349d('0x2f')],_0x1fefc3[_0x349d('0x2c')]);_0x2f8eff[_0x349d('0x30')]=_['intersection'](_0x1fefc3[_0x349d('0x2f')],qs['fields'](_0x4f461a[_0x349d('0x2c')][_0x349d('0x31')]));_0x2f8eff['attributes']=_0x2f8eff['attributes'][_0x349d('0x32')]?_0x2f8eff['attributes']:_0x1fefc3['model'];_0x2f8eff[_0x349d('0x35')]=qs['sort'](_0x4f461a[_0x349d('0x2c')]['sort']);_0x2f8eff[_0x349d('0x39')]=qs[_0x349d('0x2d')](_['pick'](_0x4f461a[_0x349d('0x2c')],_0x1fefc3['filters']));if(_0x4f461a['query']['filter']){_0x2f8eff[_0x349d('0x39')]=_[_0x349d('0x41')](_0x2f8eff[_0x349d('0x39')],{'$or':_['map'](_0x2f8eff[_0x349d('0x30')],function(_0x38cddd){var _0x37d42b={};_0x37d42b[_0x38cddd]={'$like':'%'+_0x4f461a[_0x349d('0x2c')][_0x349d('0x38')]+'%'};return _0x37d42b;})});}_0x2f8eff=_[_0x349d('0x41')]({},_0x2f8eff,_0x4f461a[_0x349d('0x3b')]);return _0x576318[_0x349d('0x48')](_0x2f8eff);}})[_0x349d('0x1e')](function(_0x1a6777){if(_0x1a6777){_0x494c7b=_0x1a6777[_0x349d('0x32')];if(!_0x4f461a[_0x349d('0x2c')][_0x349d('0x33')](_0x349d('0x34'))){_0x2f8eff[_0x349d('0x18')]=qs[_0x349d('0x18')](_0x4f461a[_0x349d('0x2c')][_0x349d('0x18')]);_0x2f8eff[_0x349d('0x16')]=qs[_0x349d('0x16')](_0x4f461a[_0x349d('0x2c')]['offset']);}return _0x576318[_0x349d('0x48')](_0x2f8eff);}})[_0x349d('0x1e')](function(_0x4df87a){if(_0x4df87a){return _0x4df87a?{'count':_0x494c7b,'rows':_0x4df87a}:null;}})[_0x349d('0x1e')](respondWithResult(_0x46f53d,null))[_0x349d('0x3d')](handleError(_0x46f53d,null));};exports['getDescriptions']=function(_0x1ebf2b,_0x44a33a,_0xaa3f5d){var _0x421314={};var _0x56cba6={};var _0x4723e3;var _0x54178a;return db['DeskConfiguration'][_0x349d('0x46')]({'where':{'id':_0x1ebf2b[_0x349d('0x45')]['id']}})[_0x349d('0x1e')](handleEntityNotFound(_0x44a33a,null))[_0x349d('0x1e')](function(_0x28c844){if(_0x28c844){_0x4723e3=_0x28c844;_0x56cba6[_0x349d('0x2f')]=_[_0x349d('0x3f')](db[_0x349d('0x49')][_0x349d('0x27')]);_0x56cba6['query']=_[_0x349d('0x3f')](_0x1ebf2b['query']);_0x56cba6[_0x349d('0x2d')]=_[_0x349d('0x2e')](_0x56cba6[_0x349d('0x2f')],_0x56cba6[_0x349d('0x2c')]);_0x421314[_0x349d('0x30')]=_['intersection'](_0x56cba6[_0x349d('0x2f')],qs['fields'](_0x1ebf2b[_0x349d('0x2c')][_0x349d('0x31')]));_0x421314[_0x349d('0x30')]=_0x421314[_0x349d('0x30')][_0x349d('0x32')]?_0x421314[_0x349d('0x30')]:_0x56cba6[_0x349d('0x2f')];_0x421314['order']=qs['sort'](_0x1ebf2b[_0x349d('0x2c')][_0x349d('0x36')]);_0x421314[_0x349d('0x39')]=qs[_0x349d('0x2d')](_['pick'](_0x1ebf2b[_0x349d('0x2c')],_0x56cba6[_0x349d('0x2d')]));if(_0x1ebf2b[_0x349d('0x2c')][_0x349d('0x38')]){_0x421314['where']=_[_0x349d('0x41')](_0x421314[_0x349d('0x39')],{'$or':_[_0x349d('0x2b')](_0x421314[_0x349d('0x30')],function(_0x2e6bf0){var _0x3721d8={};_0x3721d8[_0x2e6bf0]={'$like':'%'+_0x1ebf2b[_0x349d('0x2c')][_0x349d('0x38')]+'%'};return _0x3721d8;})});}_0x421314=_[_0x349d('0x41')]({},_0x421314,_0x1ebf2b[_0x349d('0x3b')]);return _0x4723e3['getDescriptions'](_0x421314);}})[_0x349d('0x1e')](function(_0x3427b2){if(_0x3427b2){_0x54178a=_0x3427b2['length'];if(!_0x1ebf2b[_0x349d('0x2c')][_0x349d('0x33')]('nolimit')){_0x421314[_0x349d('0x18')]=qs[_0x349d('0x18')](_0x1ebf2b[_0x349d('0x2c')]['limit']);_0x421314['offset']=qs[_0x349d('0x16')](_0x1ebf2b[_0x349d('0x2c')][_0x349d('0x16')]);}return _0x4723e3[_0x349d('0x4a')](_0x421314);}})[_0x349d('0x1e')](function(_0x594051){if(_0x594051){return _0x594051?{'count':_0x54178a,'rows':_0x594051}:null;}})['then'](respondWithResult(_0x44a33a,null))[_0x349d('0x3d')](handleError(_0x44a33a,null));};exports[_0x349d('0x4b')]=function(_0x3b790b,_0x4b6ae2,_0x501e42){var _0x17ea93={};var _0x405a1d={};var _0x4ec86c;var _0x4daf36;return db[_0x349d('0x26')][_0x349d('0x46')]({'where':{'id':_0x3b790b[_0x349d('0x45')]['id']}})[_0x349d('0x1e')](handleEntityNotFound(_0x4b6ae2,null))[_0x349d('0x1e')](function(_0x111cd7){if(_0x111cd7){_0x4ec86c=_0x111cd7;_0x405a1d['model']=_[_0x349d('0x3f')](db[_0x349d('0x4c')]['rawAttributes']);_0x405a1d[_0x349d('0x2c')]=_[_0x349d('0x3f')](_0x3b790b[_0x349d('0x2c')]);_0x405a1d[_0x349d('0x2d')]=_[_0x349d('0x2e')](_0x405a1d['model'],_0x405a1d[_0x349d('0x2c')]);_0x17ea93['attributes']=_['intersection'](_0x405a1d[_0x349d('0x2f')],qs['fields'](_0x3b790b[_0x349d('0x2c')][_0x349d('0x31')]));_0x17ea93[_0x349d('0x30')]=_0x17ea93[_0x349d('0x30')]['length']?_0x17ea93[_0x349d('0x30')]:_0x405a1d[_0x349d('0x2f')];_0x17ea93[_0x349d('0x35')]=qs['sort'](_0x3b790b[_0x349d('0x2c')][_0x349d('0x36')]);_0x17ea93[_0x349d('0x39')]=qs['filters'](_[_0x349d('0x37')](_0x3b790b[_0x349d('0x2c')],_0x405a1d['filters']));if(_0x3b790b[_0x349d('0x2c')][_0x349d('0x38')]){_0x17ea93['where']=_[_0x349d('0x41')](_0x17ea93['where'],{'$or':_['map'](_0x17ea93[_0x349d('0x30')],function(_0x48a8a4){var _0x318979={};_0x318979[_0x48a8a4]={'$like':'%'+_0x3b790b[_0x349d('0x2c')][_0x349d('0x38')]+'%'};return _0x318979;})});}_0x17ea93=_[_0x349d('0x41')]({},_0x17ea93,_0x3b790b['options']);return _0x4ec86c[_0x349d('0x4b')](_0x17ea93);}})[_0x349d('0x1e')](function(_0xc952f2){if(_0xc952f2){_0x4daf36=_0xc952f2[_0x349d('0x32')];if(!_0x3b790b['query'][_0x349d('0x33')](_0x349d('0x34'))){_0x17ea93[_0x349d('0x18')]=qs['limit'](_0x3b790b[_0x349d('0x2c')][_0x349d('0x18')]);_0x17ea93[_0x349d('0x16')]=qs['offset'](_0x3b790b['query'][_0x349d('0x16')]);}return _0x4ec86c[_0x349d('0x4b')](_0x17ea93);}})[_0x349d('0x1e')](function(_0x54cf0c){if(_0x54cf0c){return _0x54cf0c?{'count':_0x4daf36,'rows':_0x54cf0c}:null;}})[_0x349d('0x1e')](respondWithResult(_0x4b6ae2,null))[_0x349d('0x3d')](handleError(_0x4b6ae2,null));};exports[_0x349d('0x4d')]=function(_0x54b18c,_0x4a6eb8,_0x81ae6d){if(_0x54b18c['body']['id']){delete _0x54b18c[_0x349d('0x43')]['id'];}return db[_0x349d('0x26')]['findOne']({'where':{'id':_0x54b18c[_0x349d('0x45')]['id']}})[_0x349d('0x1e')](handleEntityNotFound(_0x4a6eb8,null))[_0x349d('0x1e')](function(_0x521f30){if(_0x521f30){return _0x521f30[_0x349d('0x4d')](_0x54b18c['body'][_0x349d('0x4e')]||[]);}return null;})['then'](respondWithResult(_0x4a6eb8,null))[_0x349d('0x3d')](handleError(_0x4a6eb8,null));};
\ No newline at end of file
index 192850b..cae30ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ec2=['bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x3bbe30,_0x1ce662){var _0x1d1dcd=function(_0x125907){while(--_0x125907){_0x3bbe30['push'](_0x3bbe30['shift']());}};_0x1d1dcd(++_0x1ce662);}(_0x2ec2,0x14b));var _0x22ec=function(_0x42bd43,_0x59fb77){_0x42bd43=_0x42bd43-0x0;var _0x421e88=_0x2ec2[_0x42bd43];return _0x421e88;};'use strict';var _=require(_0x22ec('0x0'));var util=require(_0x22ec('0x1'));var logger=require(_0x22ec('0x2'))(_0x22ec('0x3'));var moment=require(_0x22ec('0x4'));var BPromise=require(_0x22ec('0x5'));var rp=require(_0x22ec('0x6'));var fs=require('fs');var path=require(_0x22ec('0x7'));var rimraf=require(_0x22ec('0x8'));var config=require(_0x22ec('0x9'));var attributes=require(_0x22ec('0xa'));module[_0x22ec('0xb')]=function(_0x408ae7,_0x6e1a40){return _0x408ae7['define'](_0x22ec('0xc'),attributes,{'tableName':_0x22ec('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3859=['bluebird','request-promise','path','exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','moment'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0x3859,0x92));var _0x9385=function(_0x35ef51,_0xaaa59f){_0x35ef51=_0x35ef51-0x0;var _0x552085=_0x3859[_0x35ef51];return _0x552085;};'use strict';var _=require(_0x9385('0x0'));var util=require(_0x9385('0x1'));var logger=require(_0x9385('0x2'))('api');var moment=require(_0x9385('0x3'));var BPromise=require(_0x9385('0x4'));var rp=require(_0x9385('0x5'));var fs=require('fs');var path=require(_0x9385('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intDeskConfiguration.attributes');module[_0x9385('0x7')]=function(_0x278402,_0x6018ed){return _0x278402['define'](_0x9385('0x8'),attributes,{'tableName':_0x9385('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 927e1d1..082b15a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34bd=['code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x446624,_0x1758b8){var _0x1d53d8=function(_0x2c7996){while(--_0x2c7996){_0x446624['push'](_0x446624['shift']());}};_0x1d53d8(++_0x1758b8);}(_0x34bd,0x1d2));var _0xd34b=function(_0xd4d369,_0x4f6ad2){_0xd4d369=_0xd4d369-0x0;var _0x293e5d=_0x34bd[_0xd4d369];return _0x293e5d;};'use strict';var _=require(_0xd34b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd34b('0x1'));var rs=require(_0xd34b('0x2'));var fs=require('fs');var Redis=require(_0xd34b('0x3'));var db=require(_0xd34b('0x4'))['db'];var utils=require(_0xd34b('0x5'));var logger=require(_0xd34b('0x6'))(_0xd34b('0x7'));var config=require('../../config/environment');var jayson=require(_0xd34b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x56e3eb,_0x30d93b,_0x3654a5){return new BPromise(function(_0xf51a08,_0x25bce7){return client[_0xd34b('0x9')](_0x56e3eb,_0x3654a5)[_0xd34b('0xa')](function(_0x738328){logger[_0xd34b('0xb')](_0xd34b('0xc'),_0x30d93b,_0xd34b('0xd'));logger[_0xd34b('0xe')](_0xd34b('0xf'),_0x30d93b,'request\x20sent',JSON[_0xd34b('0x10')](_0x738328));if(_0x738328['error']){if(_0x738328[_0xd34b('0x11')][_0xd34b('0x12')]===0x1f4){logger[_0xd34b('0x11')](_0xd34b('0xc'),_0x30d93b,_0x738328[_0xd34b('0x11')][_0xd34b('0x13')]);return _0x25bce7(_0x738328['error'][_0xd34b('0x13')]);}logger[_0xd34b('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x30d93b,_0x738328[_0xd34b('0x11')][_0xd34b('0x13')]);return _0xf51a08(_0x738328[_0xd34b('0x11')]['message']);}else{logger[_0xd34b('0xb')](_0xd34b('0xc'),_0x30d93b,'request\x20sent');_0xf51a08(_0x738328[_0xd34b('0x14')]['message']);}})[_0xd34b('0x15')](function(_0x438b61){logger[_0xd34b('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x30d93b,_0x438b61);_0x25bce7(_0x438b61);});});}
\ No newline at end of file
+var _0x419f=['DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x2c4375,_0x53b76e){var _0x120c8e=function(_0xbaedac){while(--_0xbaedac){_0x2c4375['push'](_0x2c4375['shift']());}};_0x120c8e(++_0x53b76e);}(_0x419f,0x176));var _0xf419=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x419f[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0xf419('0x0'));var util=require(_0xf419('0x1'));var moment=require(_0xf419('0x2'));var BPromise=require(_0xf419('0x3'));var rs=require(_0xf419('0x4'));var fs=require('fs');var Redis=require(_0xf419('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf419('0x6'));var logger=require('../../config/logger')(_0xf419('0x7'));var config=require(_0xf419('0x8'));var jayson=require(_0xf419('0x9'));var client=jayson[_0xf419('0xa')][_0xf419('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b5526,_0x4082de,_0x2e42a8){return new BPromise(function(_0x3f0c3e,_0x4bb5fd){return client[_0xf419('0xc')](_0x2b5526,_0x2e42a8)[_0xf419('0xd')](function(_0x5ab7d3){logger[_0xf419('0xe')](_0xf419('0xf'),_0x4082de,_0xf419('0x10'));logger['debug'](_0xf419('0x11'),_0x4082de,_0xf419('0x10'),JSON[_0xf419('0x12')](_0x5ab7d3));if(_0x5ab7d3[_0xf419('0x13')]){if(_0x5ab7d3[_0xf419('0x13')]['code']===0x1f4){logger['error'](_0xf419('0xf'),_0x4082de,_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);return _0x4bb5fd(_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);}logger['error'](_0xf419('0xf'),_0x4082de,_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);return _0x3f0c3e(_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);}else{logger[_0xf419('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x4082de,_0xf419('0x10'));_0x3f0c3e(_0x5ab7d3[_0xf419('0x15')]['message']);}})[_0xf419('0x16')](function(_0x19660e){logger[_0xf419('0x13')]('DeskConfiguration,\x20%s,\x20%s',_0x4082de,_0x19660e);_0x4bb5fd(_0x19660e);});});}
\ No newline at end of file
index 8cfe7ca..2644f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8276=['../../components/auth/service','../../components/interaction/service','./intDeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','express','Router'];(function(_0x527080,_0x19b435){var _0x592880=function(_0x37a9a0){while(--_0x37a9a0){_0x527080['push'](_0x527080['shift']());}};_0x592880(++_0x19b435);}(_0x8276,0xa7));var _0x6827=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8276[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x6827('0x0'));var util=require(_0x6827('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6827('0x2'));var router=express[_0x6827('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6827('0x4'));var interaction=require(_0x6827('0x5'));var config=require('../../config/environment');var controller=require(_0x6827('0x6'));router[_0x6827('0x7')]('/',auth[_0x6827('0x8')](),controller[_0x6827('0x9')]);router[_0x6827('0x7')](_0x6827('0xa'),auth[_0x6827('0x8')](),controller[_0x6827('0xb')]);router[_0x6827('0xc')]('/',auth['isAuthenticated'](),controller[_0x6827('0xd')]);router[_0x6827('0xe')](_0x6827('0xa'),auth['isAuthenticated'](),controller[_0x6827('0xf')]);router[_0x6827('0x10')](_0x6827('0xa'),auth['isAuthenticated'](),controller[_0x6827('0x11')]);module[_0x6827('0x12')]=router;
\ No newline at end of file
+var _0xabc4=['post','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','index','get','/:id','show'];(function(_0x54de56,_0x255abd){var _0xf76781=function(_0x52b720){while(--_0x52b720){_0x54de56['push'](_0x54de56['shift']());}};_0xf76781(++_0x255abd);}(_0xabc4,0x146));var _0x4abc=function(_0x2e726e,_0x3faf87){_0x2e726e=_0x2e726e-0x0;var _0x273748=_0xabc4[_0x2e726e];return _0x273748;};'use strict';var multer=require(_0x4abc('0x0'));var util=require(_0x4abc('0x1'));var path=require('path');var timeout=require(_0x4abc('0x2'));var express=require(_0x4abc('0x3'));var router=express[_0x4abc('0x4')]();var fs_extra=require(_0x4abc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4abc('0x6'));var config=require(_0x4abc('0x7'));var controller=require(_0x4abc('0x8'));router['get']('/',auth[_0x4abc('0x9')](),controller[_0x4abc('0xa')]);router[_0x4abc('0xb')](_0x4abc('0xc'),auth[_0x4abc('0x9')](),controller[_0x4abc('0xd')]);router[_0x4abc('0xe')]('/',auth[_0x4abc('0x9')](),controller['create']);router['put'](_0x4abc('0xc'),auth[_0x4abc('0x9')](),controller[_0x4abc('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x4abc('0x10')]);module['exports']=router;
\ No newline at end of file
index 1f28f60..a43a851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x106f=['picklist','STRING','BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x106f,0x159));var _0xf106=function(_0x558dc0,_0x31f302){_0x558dc0=_0x558dc0-0x0;var _0x4c66ae=_0x106f[_0x558dc0];return _0x4c66ae;};'use strict';var Sequelize=require('sequelize');module[_0xf106('0x0')]={'type':{'type':Sequelize[_0xf106('0x1')](_0xf106('0x2'),_0xf106('0x3'),_0xf106('0x4'),_0xf106('0x5'),_0xf106('0x6')),'defaultValue':_0xf106('0x2')},'content':{'type':Sequelize[_0xf106('0x7')]},'key':{'type':Sequelize[_0xf106('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xf106('0x2'),_0xf106('0x3'),_0xf106('0x4'))},'keyContent':{'type':Sequelize[_0xf106('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf106('0x7')]},'customField':{'type':Sequelize[_0xf106('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf106('0x7')]}};
\ No newline at end of file
+var _0x2559=['ENUM','variable','sequelize','exports','string','customVariable','picklist','STRING'];(function(_0x2f5fd5,_0x10f627){var _0x401771=function(_0x296a22){while(--_0x296a22){_0x2f5fd5['push'](_0x2f5fd5['shift']());}};_0x401771(++_0x10f627);}(_0x2559,0x1ea));var _0x9255=function(_0x3758a1,_0x5066cc){_0x3758a1=_0x3758a1-0x0;var _0x804af7=_0x2559[_0x3758a1];return _0x804af7;};'use strict';var Sequelize=require(_0x9255('0x0'));module[_0x9255('0x1')]={'type':{'type':Sequelize['ENUM'](_0x9255('0x2'),'variable',_0x9255('0x3'),'keyValue',_0x9255('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9255('0x5')]},'key':{'type':Sequelize[_0x9255('0x5')]},'keyType':{'type':Sequelize[_0x9255('0x6')](_0x9255('0x2'),_0x9255('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x9255('0x5')]},'idField':{'type':Sequelize[_0x9255('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9255('0x5')]}};
\ No newline at end of file
index b8d2ce9..cbc8e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6439=['query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','rows','catch','show','params','keys','include','find','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','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','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','DeskField','rawAttributes','type','model'];(function(_0x1fd675,_0x165dfe){var _0x16b554=function(_0x5761ff){while(--_0x5761ff){_0x1fd675['push'](_0x1fd675['shift']());}};_0x16b554(++_0x165dfe);}(_0x6439,0x1ce));var _0x9643=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x6439[_0x2e4aa2];return _0x5e6092;};'use strict';var emlformat=require(_0x9643('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9643('0x1'));var rp=require(_0x9643('0x2'));var moment=require(_0x9643('0x3'));var BPromise=require(_0x9643('0x4'));var Mustache=require(_0x9643('0x5'));var util=require(_0x9643('0x6'));var path=require('path');var sox=require(_0x9643('0x7'));var csv=require('to-csv');var ejs=require(_0x9643('0x8'));var fs=require('fs');var fs_extra=require(_0x9643('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9643('0xa'));var jsforce=require(_0x9643('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9643('0xc'));var querystring=require(_0x9643('0xd'));var Papa=require(_0x9643('0xe'));var Redis=require('ioredis');var authService=require(_0x9643('0xf'));var qs=require(_0x9643('0x10'));var as=require(_0x9643('0x11'));var hardwareService=require(_0x9643('0x12'));var logger=require(_0x9643('0x13'))(_0x9643('0x14'));var utils=require(_0x9643('0x15'));var config=require(_0x9643('0x16'));var licenseUtil=require(_0x9643('0x17'));var db=require(_0x9643('0x18'))['db'];function respondWithStatusCode(_0x84cbbc,_0x170750){_0x170750=_0x170750||0xcc;return function(_0x1cedeb){if(_0x1cedeb){return _0x84cbbc[_0x9643('0x19')](_0x170750);}return _0x84cbbc[_0x9643('0x1a')](_0x170750)['end']();};}function respondWithResult(_0x4fb968,_0x1cf22f){_0x1cf22f=_0x1cf22f||0xc8;return function(_0x1fee9e){if(_0x1fee9e){return _0x4fb968['status'](_0x1cf22f)['json'](_0x1fee9e);}};}function respondWithFilteredResult(_0x2bdccb,_0x9e745d){return function(_0x265864){if(_0x265864){var _0x5ef405=typeof _0x9e745d[_0x9643('0x1b')]===_0x9643('0x1c')&&typeof _0x9e745d[_0x9643('0x1d')]==='undefined';var _0x138306=_0x265864[_0x9643('0x1e')];var _0x4817b0=_0x5ef405?0x0:_0x9e745d[_0x9643('0x1b')];var _0x4807b5=_0x5ef405?_0x265864[_0x9643('0x1e')]:_0x9e745d['offset']+_0x9e745d['limit'];var _0x22bf99;if(_0x4807b5>=_0x138306){_0x4807b5=_0x138306;_0x22bf99=0xc8;}else{_0x22bf99=0xce;}_0x2bdccb[_0x9643('0x1a')](_0x22bf99);return _0x2bdccb['set'](_0x9643('0x1f'),_0x4817b0+'-'+_0x4807b5+'/'+_0x138306)[_0x9643('0x20')](_0x265864);}return null;};}function patchUpdates(_0x2fd16a){return function(_0x295746){try{jsonpatch[_0x9643('0x21')](_0x295746,_0x2fd16a,!![]);}catch(_0x32c424){return BPromise[_0x9643('0x22')](_0x32c424);}return _0x295746[_0x9643('0x23')]();};}function saveUpdates(_0x3c07b5,_0x36fe69){return function(_0x300c39){if(_0x300c39){return _0x300c39[_0x9643('0x24')](_0x3c07b5)[_0x9643('0x25')](function(_0x3f470f){return _0x3f470f;});}return null;};}function removeEntity(_0x3a6292,_0x4a642f){return function(_0x56eb21){if(_0x56eb21){return _0x56eb21[_0x9643('0x26')]()['then'](function(){_0x3a6292[_0x9643('0x1a')](0xcc)[_0x9643('0x27')]();});}};}function handleEntityNotFound(_0x5a1430,_0x522c59){return function(_0x19141c){if(!_0x19141c){_0x5a1430['sendStatus'](0x194);}return _0x19141c;};}function handleError(_0x4e1f27,_0x5b580a){_0x5b580a=_0x5b580a||0x1f4;return function(_0x1c976e){logger['error'](_0x1c976e[_0x9643('0x28')]);if(_0x1c976e[_0x9643('0x29')]){delete _0x1c976e[_0x9643('0x29')];}_0x4e1f27[_0x9643('0x1a')](_0x5b580a)[_0x9643('0x2a')](_0x1c976e);};}exports[_0x9643('0x2b')]=function(_0xccb523,_0x5a69cd){var _0x24d8a6={},_0x3de580={},_0x586a00={'count':0x0,'rows':[]};var _0x907f09=_[_0x9643('0x2c')](db[_0x9643('0x2d')][_0x9643('0x2e')],function(_0x1b2da6){return{'name':_0x1b2da6['fieldName'],'type':_0x1b2da6[_0x9643('0x2f')]['key']};});_0x3de580[_0x9643('0x30')]=_[_0x9643('0x2c')](_0x907f09,_0x9643('0x29'));_0x3de580[_0x9643('0x31')]=_['keys'](_0xccb523[_0x9643('0x31')]);_0x3de580[_0x9643('0x32')]=_[_0x9643('0x33')](_0x3de580['model'],_0x3de580[_0x9643('0x31')]);_0x24d8a6['attributes']=_['intersection'](_0x3de580[_0x9643('0x30')],qs['fields'](_0xccb523[_0x9643('0x31')][_0x9643('0x34')]));_0x24d8a6[_0x9643('0x35')]=_0x24d8a6[_0x9643('0x35')][_0x9643('0x36')]?_0x24d8a6[_0x9643('0x35')]:_0x3de580[_0x9643('0x30')];if(!_0xccb523[_0x9643('0x31')][_0x9643('0x37')]('nolimit')){_0x24d8a6['limit']=qs[_0x9643('0x1d')](_0xccb523[_0x9643('0x31')][_0x9643('0x1d')]);_0x24d8a6[_0x9643('0x1b')]=qs[_0x9643('0x1b')](_0xccb523[_0x9643('0x31')][_0x9643('0x1b')]);}_0x24d8a6[_0x9643('0x38')]=qs[_0x9643('0x39')](_0xccb523[_0x9643('0x31')][_0x9643('0x39')]);_0x24d8a6[_0x9643('0x3a')]=qs[_0x9643('0x32')](_[_0x9643('0x3b')](_0xccb523['query'],_0x3de580[_0x9643('0x32')]),_0x907f09);if(_0xccb523[_0x9643('0x31')][_0x9643('0x3c')]){_0x24d8a6[_0x9643('0x3a')]=_[_0x9643('0x3d')](_0x24d8a6[_0x9643('0x3a')],{'$or':_[_0x9643('0x2c')](_0x907f09,function(_0x2eac1a){if(_0x2eac1a[_0x9643('0x2f')]!==_0x9643('0x3e')){var _0x4d9549={};_0x4d9549[_0x2eac1a['name']]={'$like':'%'+_0xccb523[_0x9643('0x31')][_0x9643('0x3c')]+'%'};return _0x4d9549;}})});}_0x24d8a6=_[_0x9643('0x3d')]({},_0x24d8a6,_0xccb523[_0x9643('0x3f')]);var _0x438418={'where':_0x24d8a6['where']};return db[_0x9643('0x2d')]['count'](_0x438418)[_0x9643('0x25')](function(_0x310629){_0x586a00[_0x9643('0x1e')]=_0x310629;if(_0xccb523[_0x9643('0x31')]['includeAll']){_0x24d8a6['include']=[{'all':!![]}];}return db[_0x9643('0x2d')]['findAll'](_0x24d8a6);})[_0x9643('0x25')](function(_0x5ed71b){_0x586a00[_0x9643('0x40')]=_0x5ed71b;return _0x586a00;})[_0x9643('0x25')](respondWithFilteredResult(_0x5a69cd,_0x24d8a6))[_0x9643('0x41')](handleError(_0x5a69cd,null));};exports[_0x9643('0x42')]=function(_0x7aa5d7,_0x3ae599){var _0x296787={'raw':!![],'where':{'id':_0x7aa5d7[_0x9643('0x43')]['id']}},_0x135880={};_0x135880['model']=_[_0x9643('0x44')](db[_0x9643('0x2d')][_0x9643('0x2e')]);_0x135880[_0x9643('0x31')]=_[_0x9643('0x44')](_0x7aa5d7['query']);_0x135880[_0x9643('0x32')]=_['intersection'](_0x135880[_0x9643('0x30')],_0x135880[_0x9643('0x31')]);_0x296787[_0x9643('0x35')]=_['intersection'](_0x135880[_0x9643('0x30')],qs[_0x9643('0x34')](_0x7aa5d7[_0x9643('0x31')][_0x9643('0x34')]));_0x296787[_0x9643('0x35')]=_0x296787['attributes'][_0x9643('0x36')]?_0x296787[_0x9643('0x35')]:_0x135880['model'];if(_0x7aa5d7[_0x9643('0x31')]['includeAll']){_0x296787[_0x9643('0x45')]=[{'all':!![]}];}_0x296787=_[_0x9643('0x3d')]({},_0x296787,_0x7aa5d7[_0x9643('0x3f')]);return db[_0x9643('0x2d')][_0x9643('0x46')](_0x296787)[_0x9643('0x25')](handleEntityNotFound(_0x3ae599,null))[_0x9643('0x25')](respondWithResult(_0x3ae599,null))['catch'](handleError(_0x3ae599,null));};exports[_0x9643('0x47')]=function(_0x5c793d,_0x58b1e5){return db[_0x9643('0x2d')][_0x9643('0x47')](_0x5c793d[_0x9643('0x48')],{})[_0x9643('0x25')](respondWithResult(_0x58b1e5,0xc9))['catch'](handleError(_0x58b1e5,null));};exports['update']=function(_0x89c927,_0x533e01){if(_0x89c927[_0x9643('0x48')]['id']){delete _0x89c927[_0x9643('0x48')]['id'];}return db[_0x9643('0x2d')]['find']({'where':{'id':_0x89c927[_0x9643('0x43')]['id']}})['then'](handleEntityNotFound(_0x533e01,null))[_0x9643('0x25')](saveUpdates(_0x89c927[_0x9643('0x48')],null))[_0x9643('0x25')](respondWithResult(_0x533e01,null))[_0x9643('0x41')](handleError(_0x533e01,null));};exports[_0x9643('0x26')]=function(_0x88d25a,_0xe6816f){return db[_0x9643('0x2d')][_0x9643('0x46')]({'where':{'id':_0x88d25a[_0x9643('0x43')]['id']}})[_0x9643('0x25')](handleEntityNotFound(_0xe6816f,null))[_0x9643('0x25')](removeEntity(_0xe6816f,null))[_0x9643('0x41')](handleError(_0xe6816f,null));};
\ No newline at end of file
+var _0x28ff=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','index','map','DeskField','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','filters','VIRTUAL','filter','merge','options','include','findAll','rows','catch','show','params','length','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x28ff,0x7a));var _0xf28f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x28ff[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf28f('0x0'));var zipdir=require(_0xf28f('0x1'));var jsonpatch=require(_0xf28f('0x2'));var rp=require('request-promise');var moment=require(_0xf28f('0x3'));var BPromise=require(_0xf28f('0x4'));var Mustache=require(_0xf28f('0x5'));var util=require('util');var path=require(_0xf28f('0x6'));var sox=require(_0xf28f('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf28f('0x8'));var _=require(_0xf28f('0x9'));var squel=require(_0xf28f('0xa'));var crypto=require('crypto');var jsforce=require(_0xf28f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf28f('0xc'));var querystring=require(_0xf28f('0xd'));var Papa=require(_0xf28f('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf28f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf28f('0x10'));var logger=require(_0xf28f('0x11'))('api');var utils=require(_0xf28f('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf28f('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d2f49,_0xe44995){_0xe44995=_0xe44995||0xcc;return function(_0x37de73){if(_0x37de73){return _0x1d2f49[_0xf28f('0x14')](_0xe44995);}return _0x1d2f49['status'](_0xe44995)[_0xf28f('0x15')]();};}function respondWithResult(_0xf323a7,_0x2a2921){_0x2a2921=_0x2a2921||0xc8;return function(_0x23e7f7){if(_0x23e7f7){return _0xf323a7[_0xf28f('0x16')](_0x2a2921)[_0xf28f('0x17')](_0x23e7f7);}};}function respondWithFilteredResult(_0x2f4033,_0x2bc51c){return function(_0x4d6233){if(_0x4d6233){var _0x5da39f=typeof _0x2bc51c[_0xf28f('0x18')]===_0xf28f('0x19')&&typeof _0x2bc51c[_0xf28f('0x1a')]===_0xf28f('0x19');var _0x3fcc94=_0x4d6233[_0xf28f('0x1b')];var _0x3839a0=_0x5da39f?0x0:_0x2bc51c[_0xf28f('0x18')];var _0x4f922c=_0x5da39f?_0x4d6233[_0xf28f('0x1b')]:_0x2bc51c[_0xf28f('0x18')]+_0x2bc51c[_0xf28f('0x1a')];var _0x4c9fd3;if(_0x4f922c>=_0x3fcc94){_0x4f922c=_0x3fcc94;_0x4c9fd3=0xc8;}else{_0x4c9fd3=0xce;}_0x2f4033[_0xf28f('0x16')](_0x4c9fd3);return _0x2f4033[_0xf28f('0x1c')]('Content-Range',_0x3839a0+'-'+_0x4f922c+'/'+_0x3fcc94)[_0xf28f('0x17')](_0x4d6233);}return null;};}function patchUpdates(_0x2b6b27){return function(_0x1fade4){try{jsonpatch[_0xf28f('0x1d')](_0x1fade4,_0x2b6b27,!![]);}catch(_0x4c2df3){return BPromise[_0xf28f('0x1e')](_0x4c2df3);}return _0x1fade4[_0xf28f('0x1f')]();};}function saveUpdates(_0x2fef4e,_0x1a17f2){return function(_0x597e36){if(_0x597e36){return _0x597e36[_0xf28f('0x20')](_0x2fef4e)[_0xf28f('0x21')](function(_0x479f52){return _0x479f52;});}return null;};}function removeEntity(_0xfe16ab,_0x9089f9){return function(_0x4914cc){if(_0x4914cc){return _0x4914cc[_0xf28f('0x22')]()[_0xf28f('0x21')](function(){_0xfe16ab['status'](0xcc)[_0xf28f('0x15')]();});}};}function handleEntityNotFound(_0x6f6cbb,_0x5bc277){return function(_0x36c833){if(!_0x36c833){_0x6f6cbb[_0xf28f('0x14')](0x194);}return _0x36c833;};}function handleError(_0x39a244,_0x63aa03){_0x63aa03=_0x63aa03||0x1f4;return function(_0x3f6e1c){logger['error'](_0x3f6e1c[_0xf28f('0x23')]);if(_0x3f6e1c['name']){delete _0x3f6e1c[_0xf28f('0x24')];}_0x39a244[_0xf28f('0x16')](_0x63aa03)['send'](_0x3f6e1c);};}exports[_0xf28f('0x25')]=function(_0x4ed44c,_0x1031ba){var _0x3b53a2={},_0x1adba7={},_0x834243={'count':0x0,'rows':[]};var _0x26942f=_[_0xf28f('0x26')](db[_0xf28f('0x27')][_0xf28f('0x28')],function(_0x35020a){return{'name':_0x35020a[_0xf28f('0x29')],'type':_0x35020a[_0xf28f('0x2a')][_0xf28f('0x2b')]};});_0x1adba7['model']=_[_0xf28f('0x26')](_0x26942f,_0xf28f('0x24'));_0x1adba7[_0xf28f('0x2c')]=_[_0xf28f('0x2d')](_0x4ed44c['query']);_0x1adba7['filters']=_[_0xf28f('0x2e')](_0x1adba7['model'],_0x1adba7[_0xf28f('0x2c')]);_0x3b53a2['attributes']=_[_0xf28f('0x2e')](_0x1adba7[_0xf28f('0x2f')],qs[_0xf28f('0x30')](_0x4ed44c[_0xf28f('0x2c')][_0xf28f('0x30')]));_0x3b53a2[_0xf28f('0x31')]=_0x3b53a2[_0xf28f('0x31')]['length']?_0x3b53a2[_0xf28f('0x31')]:_0x1adba7[_0xf28f('0x2f')];if(!_0x4ed44c[_0xf28f('0x2c')][_0xf28f('0x32')]('nolimit')){_0x3b53a2[_0xf28f('0x1a')]=qs[_0xf28f('0x1a')](_0x4ed44c['query'][_0xf28f('0x1a')]);_0x3b53a2[_0xf28f('0x18')]=qs[_0xf28f('0x18')](_0x4ed44c[_0xf28f('0x2c')][_0xf28f('0x18')]);}_0x3b53a2[_0xf28f('0x33')]=qs[_0xf28f('0x34')](_0x4ed44c[_0xf28f('0x2c')][_0xf28f('0x34')]);_0x3b53a2[_0xf28f('0x35')]=qs[_0xf28f('0x36')](_['pick'](_0x4ed44c['query'],_0x1adba7[_0xf28f('0x36')]),_0x26942f);if(_0x4ed44c[_0xf28f('0x2c')]['filter']){_0x3b53a2[_0xf28f('0x35')]=_['merge'](_0x3b53a2[_0xf28f('0x35')],{'$or':_['map'](_0x26942f,function(_0x2a7b57){if(_0x2a7b57[_0xf28f('0x2a')]!==_0xf28f('0x37')){var _0x501e1c={};_0x501e1c[_0x2a7b57[_0xf28f('0x24')]]={'$like':'%'+_0x4ed44c['query'][_0xf28f('0x38')]+'%'};return _0x501e1c;}})});}_0x3b53a2=_[_0xf28f('0x39')]({},_0x3b53a2,_0x4ed44c[_0xf28f('0x3a')]);var _0x332308={'where':_0x3b53a2[_0xf28f('0x35')]};return db['DeskField'][_0xf28f('0x1b')](_0x332308)[_0xf28f('0x21')](function(_0x4110a4){_0x834243[_0xf28f('0x1b')]=_0x4110a4;if(_0x4ed44c[_0xf28f('0x2c')]['includeAll']){_0x3b53a2[_0xf28f('0x3b')]=[{'all':!![]}];}return db[_0xf28f('0x27')][_0xf28f('0x3c')](_0x3b53a2);})['then'](function(_0x2d2487){_0x834243[_0xf28f('0x3d')]=_0x2d2487;return _0x834243;})[_0xf28f('0x21')](respondWithFilteredResult(_0x1031ba,_0x3b53a2))[_0xf28f('0x3e')](handleError(_0x1031ba,null));};exports[_0xf28f('0x3f')]=function(_0xba9856,_0x39a10b){var _0x4c8f39={'raw':!![],'where':{'id':_0xba9856[_0xf28f('0x40')]['id']}},_0x1d7c06={};_0x1d7c06[_0xf28f('0x2f')]=_[_0xf28f('0x2d')](db['DeskField'][_0xf28f('0x28')]);_0x1d7c06[_0xf28f('0x2c')]=_[_0xf28f('0x2d')](_0xba9856[_0xf28f('0x2c')]);_0x1d7c06[_0xf28f('0x36')]=_[_0xf28f('0x2e')](_0x1d7c06[_0xf28f('0x2f')],_0x1d7c06[_0xf28f('0x2c')]);_0x4c8f39[_0xf28f('0x31')]=_[_0xf28f('0x2e')](_0x1d7c06[_0xf28f('0x2f')],qs[_0xf28f('0x30')](_0xba9856[_0xf28f('0x2c')]['fields']));_0x4c8f39['attributes']=_0x4c8f39[_0xf28f('0x31')][_0xf28f('0x41')]?_0x4c8f39[_0xf28f('0x31')]:_0x1d7c06[_0xf28f('0x2f')];if(_0xba9856['query']['includeAll']){_0x4c8f39['include']=[{'all':!![]}];}_0x4c8f39=_[_0xf28f('0x39')]({},_0x4c8f39,_0xba9856['options']);return db[_0xf28f('0x27')][_0xf28f('0x42')](_0x4c8f39)[_0xf28f('0x21')](handleEntityNotFound(_0x39a10b,null))[_0xf28f('0x21')](respondWithResult(_0x39a10b,null))[_0xf28f('0x3e')](handleError(_0x39a10b,null));};exports[_0xf28f('0x43')]=function(_0x48d47a,_0x120f8b){return db['DeskField'][_0xf28f('0x43')](_0x48d47a[_0xf28f('0x44')],{})[_0xf28f('0x21')](respondWithResult(_0x120f8b,0xc9))[_0xf28f('0x3e')](handleError(_0x120f8b,null));};exports[_0xf28f('0x20')]=function(_0x29dd4d,_0x35e9e1){if(_0x29dd4d['body']['id']){delete _0x29dd4d[_0xf28f('0x44')]['id'];}return db[_0xf28f('0x27')][_0xf28f('0x42')]({'where':{'id':_0x29dd4d[_0xf28f('0x40')]['id']}})[_0xf28f('0x21')](handleEntityNotFound(_0x35e9e1,null))[_0xf28f('0x21')](saveUpdates(_0x29dd4d[_0xf28f('0x44')],null))[_0xf28f('0x21')](respondWithResult(_0x35e9e1,null))['catch'](handleError(_0x35e9e1,null));};exports[_0xf28f('0x22')]=function(_0x3cb19f,_0x34d029){return db['DeskField'][_0xf28f('0x42')]({'where':{'id':_0x3cb19f[_0xf28f('0x40')]['id']}})[_0xf28f('0x21')](handleEntityNotFound(_0x34d029,null))[_0xf28f('0x21')](removeEntity(_0x34d029,null))[_0xf28f('0x3e')](handleError(_0x34d029,null));};
\ No newline at end of file
index a64451e..1e93573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae19=['int_desk_fields','idField','FieldId','lodash','util','moment','request-promise','path','../../config/environment','./intDeskField.attributes','exports','define','DeskField'];(function(_0x16d710,_0x134dd7){var _0x233172=function(_0x219730){while(--_0x219730){_0x16d710['push'](_0x16d710['shift']());}};_0x233172(++_0x134dd7);}(_0xae19,0x148));var _0x9ae1=function(_0x13b796,_0x19507b){_0x13b796=_0x13b796-0x0;var _0x54757d=_0xae19[_0x13b796];return _0x54757d;};'use strict';var _=require(_0x9ae1('0x0'));var util=require(_0x9ae1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x9ae1('0x2'));var BPromise=require('bluebird');var rp=require(_0x9ae1('0x3'));var fs=require('fs');var path=require(_0x9ae1('0x4'));var rimraf=require('rimraf');var config=require(_0x9ae1('0x5'));var attributes=require(_0x9ae1('0x6'));module[_0x9ae1('0x7')]=function(_0x2fdcbb,_0x3dc8e2){return _0x2fdcbb[_0x9ae1('0x8')](_0x9ae1('0x9'),attributes,{'tableName':_0x9ae1('0xa'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x9ae1('0xb'),_0x9ae1('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd972=['request-promise','path','rimraf','../../config/environment','exports','define','DeskField','int_desk_fields','desk_unique_index','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd972,0x7a));var _0x2d97=function(_0x177308,_0xcc246f){_0x177308=_0x177308-0x0;var _0x58f8ac=_0xd972[_0x177308];return _0x58f8ac;};'use strict';var _=require(_0x2d97('0x0'));var util=require(_0x2d97('0x1'));var logger=require(_0x2d97('0x2'))(_0x2d97('0x3'));var moment=require(_0x2d97('0x4'));var BPromise=require(_0x2d97('0x5'));var rp=require(_0x2d97('0x6'));var fs=require('fs');var path=require(_0x2d97('0x7'));var rimraf=require(_0x2d97('0x8'));var config=require(_0x2d97('0x9'));var attributes=require('./intDeskField.attributes');module[_0x2d97('0xa')]=function(_0x2e8220,_0x104037){return _0x2e8220[_0x2d97('0xb')](_0x2d97('0xc'),attributes,{'tableName':_0x2d97('0xd'),'paranoid':![],'indexes':[{'name':_0x2d97('0xe'),'fields':['idField',_0x2d97('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 157235b..4ab31b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6488=['bluebird','randomstring','ioredis','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','error','code','DeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x5e2080,_0x29fafa){var _0x17d447=function(_0x56091c){while(--_0x56091c){_0x5e2080['push'](_0x5e2080['shift']());}};_0x17d447(++_0x29fafa);}(_0x6488,0xd9));var _0x8648=function(_0x454db3,_0xcd150e){_0x454db3=_0x454db3-0x0;var _0x3b36da=_0x6488[_0x454db3];return _0x3b36da;};'use strict';var _=require(_0x8648('0x0'));var util=require(_0x8648('0x1'));var moment=require(_0x8648('0x2'));var BPromise=require(_0x8648('0x3'));var rs=require(_0x8648('0x4'));var fs=require('fs');var Redis=require(_0x8648('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x8648('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8648('0x7')][_0x8648('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1dcd04,_0x59fadc,_0x471b14){return new BPromise(function(_0x47468e,_0x37b775){return client[_0x8648('0x9')](_0x1dcd04,_0x471b14)[_0x8648('0xa')](function(_0x721f74){logger['info']('DeskField,\x20%s,\x20%s',_0x59fadc,_0x8648('0xb'));logger[_0x8648('0xc')]('DeskField,\x20%s,\x20%s,\x20%s',_0x59fadc,_0x8648('0xb'),JSON[_0x8648('0xd')](_0x721f74));if(_0x721f74['error']){if(_0x721f74[_0x8648('0xe')][_0x8648('0xf')]===0x1f4){logger['error'](_0x8648('0x10'),_0x59fadc,_0x721f74[_0x8648('0xe')][_0x8648('0x11')]);return _0x37b775(_0x721f74[_0x8648('0xe')][_0x8648('0x11')]);}logger[_0x8648('0xe')](_0x8648('0x10'),_0x59fadc,_0x721f74[_0x8648('0xe')]['message']);return _0x47468e(_0x721f74['error'][_0x8648('0x11')]);}else{logger['info']('DeskField,\x20%s,\x20%s',_0x59fadc,_0x8648('0xb'));_0x47468e(_0x721f74[_0x8648('0x12')][_0x8648('0x11')]);}})[_0x8648('0x13')](function(_0x23125f){logger['error'](_0x8648('0x10'),_0x59fadc,_0x23125f);_0x37b775(_0x23125f);});});}
\ No newline at end of file
+var _0xe3c2=['DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x34ff31,_0x27e968){var _0x42eb77=function(_0x1e279c){while(--_0x1e279c){_0x34ff31['push'](_0x34ff31['shift']());}};_0x42eb77(++_0x27e968);}(_0xe3c2,0x1a5));var _0x2e3c=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xe3c2[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x2e3c('0x0'));var util=require('util');var moment=require(_0x2e3c('0x1'));var BPromise=require('bluebird');var rs=require(_0x2e3c('0x2'));var fs=require('fs');var Redis=require(_0x2e3c('0x3'));var db=require(_0x2e3c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2e3c('0x5'))('rpc');var config=require(_0x2e3c('0x6'));var jayson=require(_0x2e3c('0x7'));var client=jayson[_0x2e3c('0x8')][_0x2e3c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xefbb35,_0xd796a6,_0xec028f){return new BPromise(function(_0x383c7c,_0x35e56a){return client[_0x2e3c('0xa')](_0xefbb35,_0xec028f)[_0x2e3c('0xb')](function(_0x504ae9){logger[_0x2e3c('0xc')](_0x2e3c('0xd'),_0xd796a6,_0x2e3c('0xe'));logger[_0x2e3c('0xf')](_0x2e3c('0x10'),_0xd796a6,'request\x20sent',JSON[_0x2e3c('0x11')](_0x504ae9));if(_0x504ae9[_0x2e3c('0x12')]){if(_0x504ae9['error'][_0x2e3c('0x13')]===0x1f4){logger[_0x2e3c('0x12')]('DeskField,\x20%s,\x20%s',_0xd796a6,_0x504ae9[_0x2e3c('0x12')][_0x2e3c('0x14')]);return _0x35e56a(_0x504ae9[_0x2e3c('0x12')][_0x2e3c('0x14')]);}logger[_0x2e3c('0x12')](_0x2e3c('0xd'),_0xd796a6,_0x504ae9[_0x2e3c('0x12')]['message']);return _0x383c7c(_0x504ae9[_0x2e3c('0x12')]['message']);}else{logger[_0x2e3c('0xc')]('DeskField,\x20%s,\x20%s',_0xd796a6,'request\x20sent');_0x383c7c(_0x504ae9[_0x2e3c('0x15')][_0x2e3c('0x14')]);}})[_0x2e3c('0x16')](function(_0x1af635){logger[_0x2e3c('0x12')](_0x2e3c('0xd'),_0xd796a6,_0x1af635);_0x35e56a(_0x1af635);});});}
\ No newline at end of file
index 415bbfa..198432b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d7f=['addConfiguration','put','destroy','exports','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x250ed1,_0x168722){var _0x343626=function(_0x591471){while(--_0x591471){_0x250ed1['push'](_0x250ed1['shift']());}};_0x343626(++_0x168722);}(_0x2d7f,0x12a));var _0xf2d7=function(_0x58de16,_0x2cc1f5){_0x58de16=_0x58de16-0x0;var _0x48ff5c=_0x2d7f[_0x58de16];return _0x48ff5c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xf2d7('0x0'));var express=require(_0xf2d7('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf2d7('0x2'));var interaction=require(_0xf2d7('0x3'));var config=require(_0xf2d7('0x4'));var controller=require(_0xf2d7('0x5'));router[_0xf2d7('0x6')]('/',auth[_0xf2d7('0x7')](),controller[_0xf2d7('0x8')]);router[_0xf2d7('0x6')](_0xf2d7('0x9'),auth['isAuthenticated'](),controller[_0xf2d7('0xa')]);router[_0xf2d7('0x6')](_0xf2d7('0xb'),auth[_0xf2d7('0x7')](),controller[_0xf2d7('0xc')]);router[_0xf2d7('0x6')](_0xf2d7('0xd'),auth[_0xf2d7('0x7')](),controller[_0xf2d7('0xe')]);router[_0xf2d7('0xf')]('/',auth[_0xf2d7('0x7')](),controller[_0xf2d7('0x10')]);router[_0xf2d7('0xf')](_0xf2d7('0xb'),auth[_0xf2d7('0x7')](),controller[_0xf2d7('0x11')]);router[_0xf2d7('0x12')](_0xf2d7('0x9'),auth[_0xf2d7('0x7')](),controller['update']);router['delete'](_0xf2d7('0x9'),auth[_0xf2d7('0x7')](),controller[_0xf2d7('0x13')]);module[_0xf2d7('0x14')]=router;
\ No newline at end of file
+var _0x7d78=['isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','/:id','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get'];(function(_0x2733ed,_0x39aa83){var _0x41a532=function(_0x4ac6cb){while(--_0x4ac6cb){_0x2733ed['push'](_0x2733ed['shift']());}};_0x41a532(++_0x39aa83);}(_0x7d78,0xac));var _0x87d7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7d78[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x87d7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x87d7('0x1'));var express=require(_0x87d7('0x2'));var router=express['Router']();var fs_extra=require(_0x87d7('0x3'));var auth=require(_0x87d7('0x4'));var interaction=require(_0x87d7('0x5'));var config=require('../../config/environment');var controller=require(_0x87d7('0x6'));router[_0x87d7('0x7')]('/',auth[_0x87d7('0x8')](),controller[_0x87d7('0x9')]);router[_0x87d7('0x7')]('/:id',auth[_0x87d7('0x8')](),controller[_0x87d7('0xa')]);router[_0x87d7('0x7')](_0x87d7('0xb'),auth['isAuthenticated'](),controller[_0x87d7('0xc')]);router['get'](_0x87d7('0xd'),auth['isAuthenticated'](),controller[_0x87d7('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x87d7('0xf')]);router[_0x87d7('0x10')]('/:id/configurations',auth[_0x87d7('0x8')](),controller[_0x87d7('0x11')]);router[_0x87d7('0x12')](_0x87d7('0x13'),auth[_0x87d7('0x8')](),controller['update']);router['delete'](_0x87d7('0x13'),auth[_0x87d7('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 47209d6..6fc2813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc0=['exports','STRING','sequelize'];(function(_0x52eceb,_0x400bb4){var _0x415694=function(_0x3cd122){while(--_0x3cd122){_0x52eceb['push'](_0x52eceb['shift']());}};_0x415694(++_0x400bb4);}(_0xebc0,0xb3));var _0x0ebc=function(_0x19dfe1,_0x49d611){_0x19dfe1=_0x19dfe1-0x0;var _0xbac495=_0xebc0[_0x19dfe1];return _0xbac495;};'use strict';var Sequelize=require(_0x0ebc('0x0'));module[_0x0ebc('0x1')]={'name':{'type':Sequelize[_0x0ebc('0x2')]},'username':{'type':Sequelize[_0x0ebc('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x0ebc('0x2')]},'clientId':{'type':Sequelize[_0x0ebc('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x0ebc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0ebc('0x2')]}};
\ No newline at end of file
+var _0x09df=['exports','STRING','sequelize'];(function(_0x568177,_0x5b31dc){var _0x5c1dd0=function(_0x37d212){while(--_0x37d212){_0x568177['push'](_0x568177['shift']());}};_0x5c1dd0(++_0x5b31dc);}(_0x09df,0x164));var _0xf09d=function(_0x289e64,_0x5adb3c){_0x289e64=_0x289e64-0x0;var _0x30246c=_0x09df[_0x289e64];return _0x30246c;};'use strict';var Sequelize=require(_0xf09d('0x0'));module[_0xf09d('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xf09d('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xf09d('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xf09d('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf09d('0x2')]}};
\ No newline at end of file
index 5af789b..9bec8b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14f=['StatusAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','error','EntityDefinitions(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Label','Value','LogicalName','DisplayName','UserLocalizedLabel',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','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/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','update','then','destroy','end','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','create','catch','body','findOne','params','Dynamics365Configuration','order','pick','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','customeridyominame','emailaddress','entitlementidname','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','productidname','resolveby','responseby','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','password','remoteUri','tenantId','clientSecret','slice','lastIndexOf','format','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','clientId','username','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','MetadataId','Bearer\x20','Attributes','remove','includes','forEach','@odata.type','push','isNil','substring','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata'];(function(_0x388797,_0xde228d){var _0x532408=function(_0xc4ad0e){while(--_0xc4ad0e){_0x388797['push'](_0x388797['shift']());}};_0x532408(++_0xde228d);}(_0xe14f,0xea));var _0xfe14=function(_0x3a2355,_0x33b5d5){_0x3a2355=_0x3a2355-0x0;var _0x3e308c=_0xe14f[_0x3a2355];return _0x3e308c;};'use strict';var emlformat=require(_0xfe14('0x0'));var rimraf=require(_0xfe14('0x1'));var zipdir=require(_0xfe14('0x2'));var jsonpatch=require(_0xfe14('0x3'));var rp=require(_0xfe14('0x4'));var moment=require(_0xfe14('0x5'));var BPromise=require(_0xfe14('0x6'));var Mustache=require(_0xfe14('0x7'));var util=require(_0xfe14('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xfe14('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfe14('0xa'));var _=require(_0xfe14('0xb'));var squel=require(_0xfe14('0xc'));var crypto=require(_0xfe14('0xd'));var jsforce=require(_0xfe14('0xe'));var deskjs=require(_0xfe14('0xf'));var toCsv=require(_0xfe14('0x9'));var querystring=require(_0xfe14('0x10'));var Papa=require(_0xfe14('0x11'));var Redis=require('ioredis');var authService=require(_0xfe14('0x12'));var qs=require(_0xfe14('0x13'));var as=require(_0xfe14('0x14'));var hardwareService=require(_0xfe14('0x15'));var logger=require(_0xfe14('0x16'))(_0xfe14('0x17'));var utils=require('../../config/utils');var config=require(_0xfe14('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe14('0x19'))['db'];var integrations=require(_0xfe14('0x1a'));function respondWithStatusCode(_0x276de0,_0x31c0d8){_0x31c0d8=_0x31c0d8||0xcc;return function(_0x174ed0){if(_0x174ed0){return _0x276de0[_0xfe14('0x1b')](_0x31c0d8);}return _0x276de0['status'](_0x31c0d8)['end']();};}function respondWithResult(_0x39799a,_0x43db84){_0x43db84=_0x43db84||0xc8;return function(_0x40e4c9){if(_0x40e4c9){return _0x39799a['status'](_0x43db84)[_0xfe14('0x1c')](_0x40e4c9);}};}function respondWithFilteredResult(_0x546d82,_0x3f3114){return function(_0x1cdd4b){if(_0x1cdd4b){var _0x9e74b=typeof _0x3f3114[_0xfe14('0x1d')]===_0xfe14('0x1e')&&typeof _0x3f3114[_0xfe14('0x1f')]===_0xfe14('0x1e');var _0x292cb9=_0x1cdd4b[_0xfe14('0x20')];var _0x492f88=_0x9e74b?0x0:_0x3f3114['offset'];var _0x96a900=_0x9e74b?_0x1cdd4b[_0xfe14('0x20')]:_0x3f3114[_0xfe14('0x1d')]+_0x3f3114[_0xfe14('0x1f')];var _0x2995e2;if(_0x96a900>=_0x292cb9){_0x96a900=_0x292cb9;_0x2995e2=0xc8;}else{_0x2995e2=0xce;}_0x546d82[_0xfe14('0x21')](_0x2995e2);return _0x546d82[_0xfe14('0x22')](_0xfe14('0x23'),_0x492f88+'-'+_0x96a900+'/'+_0x292cb9)['json'](_0x1cdd4b);}return null;};}function patchUpdates(_0x451a15){return function(_0x15379b){try{jsonpatch[_0xfe14('0x24')](_0x15379b,_0x451a15,!![]);}catch(_0x46ead9){return BPromise[_0xfe14('0x25')](_0x46ead9);}return _0x15379b['save']();};}function saveUpdates(_0x2fa357,_0x16e935){return function(_0x41120e){if(_0x41120e){return _0x41120e[_0xfe14('0x26')](_0x2fa357)[_0xfe14('0x27')](function(_0x48299e){return _0x48299e;});}return null;};}function removeEntity(_0x1a8620,_0x400f5d){return function(_0x158385){if(_0x158385){return _0x158385[_0xfe14('0x28')]()['then'](function(){_0x1a8620['status'](0xcc)[_0xfe14('0x29')]();});}};}function handleEntityNotFound(_0x185569,_0x22ab45){return function(_0x335ef9){if(!_0x335ef9){_0x185569[_0xfe14('0x1b')](0x194);}return _0x335ef9;};}function handleError(_0x422e9e,_0x28aa60){_0x28aa60=_0x28aa60||0x1f4;return function(_0x334dff){logger['error'](_0x334dff[_0xfe14('0x2a')]);if(_0x334dff[_0xfe14('0x2b')]){delete _0x334dff[_0xfe14('0x2b')];}_0x422e9e[_0xfe14('0x21')](_0x28aa60)[_0xfe14('0x2c')](_0x334dff);};}exports[_0xfe14('0x2d')]=function(_0x6da72a,_0xfa695a){var _0x1340a3={},_0x5b83de={},_0x174319={'count':0x0,'rows':[]};var _0xf23d3b=_['map'](db[_0xfe14('0x2e')][_0xfe14('0x2f')],function(_0x368cd6){return{'name':_0x368cd6[_0xfe14('0x30')],'type':_0x368cd6[_0xfe14('0x31')][_0xfe14('0x32')]};});_0x5b83de[_0xfe14('0x33')]=_['map'](_0xf23d3b,_0xfe14('0x2b'));_0x5b83de[_0xfe14('0x34')]=_[_0xfe14('0x35')](_0x6da72a[_0xfe14('0x34')]);_0x5b83de[_0xfe14('0x36')]=_[_0xfe14('0x37')](_0x5b83de['model'],_0x5b83de['query']);_0x1340a3[_0xfe14('0x38')]=_['intersection'](_0x5b83de['model'],qs[_0xfe14('0x39')](_0x6da72a[_0xfe14('0x34')][_0xfe14('0x39')]));_0x1340a3[_0xfe14('0x38')]=_0x1340a3[_0xfe14('0x38')][_0xfe14('0x3a')]?_0x1340a3[_0xfe14('0x38')]:_0x5b83de['model'];if(!_0x6da72a['query'][_0xfe14('0x3b')](_0xfe14('0x3c'))){_0x1340a3[_0xfe14('0x1f')]=qs[_0xfe14('0x1f')](_0x6da72a[_0xfe14('0x34')][_0xfe14('0x1f')]);_0x1340a3['offset']=qs['offset'](_0x6da72a[_0xfe14('0x34')]['offset']);}_0x1340a3['order']=qs[_0xfe14('0x3d')](_0x6da72a[_0xfe14('0x34')][_0xfe14('0x3d')]);_0x1340a3[_0xfe14('0x3e')]=qs[_0xfe14('0x36')](_['pick'](_0x6da72a[_0xfe14('0x34')],_0x5b83de[_0xfe14('0x36')]),_0xf23d3b);if(_0x6da72a['query'][_0xfe14('0x3f')]){_0x1340a3[_0xfe14('0x3e')]=_[_0xfe14('0x40')](_0x1340a3['where'],{'$or':_['map'](_0xf23d3b,function(_0x2e42db){if(_0x2e42db[_0xfe14('0x31')]!==_0xfe14('0x41')){var _0x11f299={};_0x11f299[_0x2e42db[_0xfe14('0x2b')]]={'$like':'%'+_0x6da72a[_0xfe14('0x34')][_0xfe14('0x3f')]+'%'};return _0x11f299;}})});}_0x1340a3=_[_0xfe14('0x40')]({},_0x1340a3,_0x6da72a[_0xfe14('0x42')]);var _0x40c949={'where':_0x1340a3[_0xfe14('0x3e')]};return db['Dynamics365Account']['count'](_0x40c949)['then'](function(_0x1b0a4d){_0x174319['count']=_0x1b0a4d;if(_0x6da72a[_0xfe14('0x34')][_0xfe14('0x43')]){_0x1340a3[_0xfe14('0x44')]=[{'all':!![]}];}return db['Dynamics365Account'][_0xfe14('0x45')](_0x1340a3);})[_0xfe14('0x27')](function(_0x3479c2){_0x174319[_0xfe14('0x46')]=_0x3479c2;return _0x174319;})[_0xfe14('0x27')](respondWithFilteredResult(_0xfa695a,_0x1340a3))['catch'](handleError(_0xfa695a,null));};exports[_0xfe14('0x47')]=function(_0x3d21e4,_0x13c27d){var _0x4b7eb1={'raw':![],'where':{'id':_0x3d21e4['params']['id']}},_0x5d9fa4={};_0x5d9fa4[_0xfe14('0x33')]=_[_0xfe14('0x35')](db['Dynamics365Account'][_0xfe14('0x2f')]);_0x5d9fa4['query']=_[_0xfe14('0x35')](_0x3d21e4['query']);_0x5d9fa4[_0xfe14('0x36')]=_['intersection'](_0x5d9fa4[_0xfe14('0x33')],_0x5d9fa4[_0xfe14('0x34')]);_0x4b7eb1[_0xfe14('0x38')]=_[_0xfe14('0x37')](_0x5d9fa4[_0xfe14('0x33')],qs[_0xfe14('0x39')](_0x3d21e4[_0xfe14('0x34')]['fields']));_0x4b7eb1[_0xfe14('0x38')]=_0x4b7eb1[_0xfe14('0x38')]['length']?_0x4b7eb1[_0xfe14('0x38')]:_0x5d9fa4[_0xfe14('0x33')];if(_0x3d21e4[_0xfe14('0x34')][_0xfe14('0x43')]){_0x4b7eb1['include']=[{'all':!![]}];}_0x4b7eb1=_['merge']({},_0x4b7eb1,_0x3d21e4[_0xfe14('0x42')]);return db[_0xfe14('0x2e')][_0xfe14('0x48')](_0x4b7eb1)['then'](handleEntityNotFound(_0x13c27d,null))[_0xfe14('0x27')](respondWithResult(_0x13c27d,null))['catch'](handleError(_0x13c27d,null));};exports[_0xfe14('0x49')]=function(_0x21b19f,_0x38a964){return db[_0xfe14('0x2e')][_0xfe14('0x49')](_0x21b19f['body'],{})[_0xfe14('0x27')](respondWithResult(_0x38a964,0xc9))[_0xfe14('0x4a')](handleError(_0x38a964,null));};exports['update']=function(_0x427453,_0x444644){if(_0x427453['body']['id']){delete _0x427453[_0xfe14('0x4b')]['id'];}return db['Dynamics365Account'][_0xfe14('0x48')]({'where':{'id':_0x427453['params']['id']}})[_0xfe14('0x27')](handleEntityNotFound(_0x444644,null))['then'](saveUpdates(_0x427453[_0xfe14('0x4b')],null))['then'](respondWithResult(_0x444644,null))['catch'](handleError(_0x444644,null));};exports[_0xfe14('0x28')]=function(_0x539727,_0x9131e5){return db[_0xfe14('0x2e')][_0xfe14('0x48')]({'where':{'id':_0x539727['params']['id']}})[_0xfe14('0x27')](handleEntityNotFound(_0x9131e5,null))['then'](removeEntity(_0x9131e5,null))[_0xfe14('0x4a')](handleError(_0x9131e5,null));};exports['getConfigurations']=function(_0x5bff98,_0x23c68d,_0x5cd2e6){var _0x365b24={};var _0x510126={};var _0x14904e;var _0x35aecc;return db['Dynamics365Account'][_0xfe14('0x4c')]({'where':{'id':_0x5bff98[_0xfe14('0x4d')]['id']}})[_0xfe14('0x27')](handleEntityNotFound(_0x23c68d,null))[_0xfe14('0x27')](function(_0x3c1aae){if(_0x3c1aae){_0x14904e=_0x3c1aae;_0x510126['model']=_[_0xfe14('0x35')](db[_0xfe14('0x4e')][_0xfe14('0x2f')]);_0x510126[_0xfe14('0x34')]=_['keys'](_0x5bff98[_0xfe14('0x34')]);_0x510126[_0xfe14('0x36')]=_['intersection'](_0x510126[_0xfe14('0x33')],_0x510126[_0xfe14('0x34')]);_0x365b24[_0xfe14('0x38')]=_[_0xfe14('0x37')](_0x510126[_0xfe14('0x33')],qs[_0xfe14('0x39')](_0x5bff98['query'][_0xfe14('0x39')]));_0x365b24['attributes']=_0x365b24[_0xfe14('0x38')][_0xfe14('0x3a')]?_0x365b24[_0xfe14('0x38')]:_0x510126[_0xfe14('0x33')];_0x365b24[_0xfe14('0x4f')]=qs['sort'](_0x5bff98['query']['sort']);_0x365b24[_0xfe14('0x3e')]=qs[_0xfe14('0x36')](_[_0xfe14('0x50')](_0x5bff98['query'],_0x510126['filters']));if(_0x5bff98[_0xfe14('0x34')]['filter']){_0x365b24[_0xfe14('0x3e')]=_[_0xfe14('0x40')](_0x365b24[_0xfe14('0x3e')],{'$or':_['map'](_0x365b24[_0xfe14('0x38')],function(_0x4327f6){var _0x16c343={};_0x16c343[_0x4327f6]={'$like':'%'+_0x5bff98[_0xfe14('0x34')][_0xfe14('0x3f')]+'%'};return _0x16c343;})});}_0x365b24=_[_0xfe14('0x40')]({},_0x365b24,_0x5bff98[_0xfe14('0x42')]);return _0x14904e['getConfigurations'](_0x365b24);}})[_0xfe14('0x27')](function(_0x407a1e){if(_0x407a1e){_0x35aecc=_0x407a1e['length'];if(!_0x5bff98[_0xfe14('0x34')][_0xfe14('0x3b')]('nolimit')){_0x365b24['limit']=qs[_0xfe14('0x1f')](_0x5bff98[_0xfe14('0x34')]['limit']);_0x365b24[_0xfe14('0x1d')]=qs['offset'](_0x5bff98[_0xfe14('0x34')][_0xfe14('0x1d')]);}return _0x14904e[_0xfe14('0x51')](_0x365b24);}})['then'](function(_0x57934b){if(_0x57934b){return _0x57934b?{'count':_0x35aecc,'rows':_0x57934b}:null;}})['then'](respondWithResult(_0x23c68d,null))[_0xfe14('0x4a')](handleError(_0x23c68d,null));};exports[_0xfe14('0x52')]=function(_0x506ad0,_0x1989de,_0x5ba084){if(_0x506ad0[_0xfe14('0x4b')]['id']){delete _0x506ad0[_0xfe14('0x4b')]['id'];}return db[_0xfe14('0x2e')][_0xfe14('0x4c')]({'where':{'id':_0x506ad0[_0xfe14('0x4d')]['id']}})[_0xfe14('0x27')](handleEntityNotFound(_0x1989de,null))['then'](function(_0x17b36f){if(_0x17b36f){_0x506ad0[_0xfe14('0x4b')][_0xfe14('0x53')]=_0x17b36f['id'];_0x506ad0['body'][_0xfe14('0x54')]=integrations[_0xfe14('0x55')](_0x506ad0['body'][_0xfe14('0x56')],_0x506ad0[_0xfe14('0x4b')][_0xfe14('0x31')]);_0x506ad0['body'][_0xfe14('0x57')]=integrations[_0xfe14('0x58')](_0x506ad0[_0xfe14('0x4b')]['channel'],_0x506ad0['body'][_0xfe14('0x31')]);return db[_0xfe14('0x4e')]['create'](_0x506ad0[_0xfe14('0x4b')],{'include':[{'model':db[_0xfe14('0x59')],'as':_0xfe14('0x54')},{'model':db['Dynamics365Field'],'as':_0xfe14('0x57')}]});}return null;})[_0xfe14('0x27')](respondWithResult(_0x1989de,null))[_0xfe14('0x4a')](handleError(_0x1989de,null));};exports[_0xfe14('0x5a')]=function(_0x2ec421,_0x50136c,_0x51a6f4){var _0x2315dc=_0x2ec421[_0xfe14('0x34')][_0xfe14('0x5b')];var _0x32efc7=_0x2315dc===_0xfe14('0x5c')?_0xfe14('0x5d'):_0xfe14('0x5e');var _0x5272bc='';var _0x5826ff='';var _0x51af00='';var _0x387c71='';var _0x448918='';var _0x5a758c='';var _0x2c6111='';var _0x3a99bc='';var _0x1e8519=['title',_0xfe14('0x5f'),_0xfe14('0x60'),_0xfe14('0x61'),_0xfe14('0x62'),_0xfe14('0x63'),_0xfe14('0x64'),_0xfe14('0x65'),'directioncode',_0xfe14('0x66')];var _0x4ff9ef=[_0xfe14('0x67'),_0xfe14('0x68'),_0xfe14('0x69'),_0xfe14('0x6a'),'contactidname',_0xfe14('0x6b'),'contractdetailidname',_0xfe14('0x6c'),'createdbyexternalpartyname',_0xfe14('0x6d'),_0xfe14('0x6e'),_0xfe14('0x6f'),_0xfe14('0x70'),'createdonbehalfbyname',_0xfe14('0x71'),_0xfe14('0x72'),'customeridtype',_0xfe14('0x73'),_0xfe14('0x74'),_0xfe14('0x75'),'entityimage_timestamp',_0xfe14('0x76'),_0xfe14('0x77'),_0xfe14('0x78'),_0xfe14('0x79'),_0xfe14('0x7a'),_0xfe14('0x7b'),_0xfe14('0x7c'),'kbarticleidname',_0xfe14('0x7d'),'masteridname',_0xfe14('0x7e'),_0xfe14('0x7f'),_0xfe14('0x80'),'modifiedbyyominame',_0xfe14('0x81'),_0xfe14('0x82'),_0xfe14('0x83'),'msdyn_incidenttypename',_0xfe14('0x84'),'numberofchildincidents',_0xfe14('0x85'),_0xfe14('0x86'),_0xfe14('0x87'),_0xfe14('0x88'),_0xfe14('0x89'),_0xfe14('0x8a'),_0xfe14('0x8b'),'primarycontactidyominame','prioritycodename',_0xfe14('0x8c'),'productserialnumber',_0xfe14('0x8d'),'resolvebykpiidname',_0xfe14('0x8e'),'responsiblecontactidname',_0xfe14('0x8f'),'sentimentvalue',_0xfe14('0x90'),_0xfe14('0x91'),_0xfe14('0x92'),_0xfe14('0x93'),'statuscode',_0xfe14('0x94'),_0xfe14('0x95'),_0xfe14('0x96'),_0xfe14('0x97'),_0xfe14('0x98'),_0xfe14('0x99'),_0xfe14('0x9a')];var _0xbc10e6=_0x1e8519['concat'](_0x4ff9ef);return db[_0xfe14('0x2e')]['findOne']({'where':{'id':_0x2ec421[_0xfe14('0x4d')]['id']},'attributes':['id','username',_0xfe14('0x9b'),_0xfe14('0x9c'),_0xfe14('0x9d'),'clientId',_0xfe14('0x9e')]})[_0xfe14('0x27')](handleEntityNotFound(_0x50136c,null))[_0xfe14('0x27')](function(_0x3cc246){if(_0x3cc246){_0x3a99bc=_0x3cc246[_0xfe14('0x9c')];var _0x57fd58=_0x3a99bc[_0xfe14('0x9f')](-0x1);if(_0x57fd58==='/'){_0x3a99bc=_0x3a99bc['substring'](0x0,_0x3a99bc[_0xfe14('0xa0')](_0x57fd58));}_0x2c6111=util[_0xfe14('0xa1')](_0xfe14('0xa2'),_0x3a99bc);var _0x5277d5={'method':_0xfe14('0xa3'),'uri':_0xfe14('0xa4')+_0x3cc246['tenantId']+_0xfe14('0xa5'),'form':{'client_id':_0x3cc246[_0xfe14('0xa6')],'resource':_0x3a99bc,'username':_0x3cc246[_0xfe14('0xa7')],'password':_0x3cc246[_0xfe14('0x9b')],'grant_type':_0xfe14('0x9b'),'client_secret':_0x3cc246[_0xfe14('0x9e')]},'json':!![]};return rp(_0x5277d5);}})[_0xfe14('0x27')](function(_0x369680){_0x5a758c=_0x369680[_0xfe14('0xa8')];var _0x4edfa0={'method':_0xfe14('0xa9'),'uri':encodeURI(_0x2c6111+_0xfe14('0xaa')+_0x32efc7+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x5a758c,'If-None-Match':null,'OData-Version':_0xfe14('0xab')},'json':!![]};return rp(_0x4edfa0);})['then'](function(_0x41a713){var _0x53dedc=_0x41a713['value'][0x0];var _0x45e5b8=_0x53dedc[_0xfe14('0xac')];var _0x5da036={'method':_0xfe14('0xa9'),'uri':_0x2c6111+'EntityDefinitions('+_0x45e5b8+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0xfe14('0xad')+_0x5a758c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5da036);})[_0xfe14('0x27')](function(_0x36288b){_0x5272bc=_0x36288b;_0x5826ff=_0x5272bc[_0xfe14('0xae')];_0x5826ff=_[_0xfe14('0xaf')](_0x5826ff,function(_0x2d0351){return!_0xbc10e6[_0xfe14('0xb0')](_0x2d0351['LogicalName']);});var _0x1c3e2b=[];var _0x2200ca=[];_0x5826ff[_0xfe14('0xb1')](function(_0x17856e){if(_0x17856e[_0xfe14('0xb2')]){var _0x213b11=_0x17856e[_0xfe14('0xb2')]['substring'](_0x17856e[_0xfe14('0xb2')]['lastIndexOf']('.')+0x1);if(_0x213b11==='PicklistAttributeMetadata'){_0x1c3e2b[_0xfe14('0xb3')](getSelectList(_0x2c6111,_0x2315dc,_0x2200ca,_0x5272bc[_0xfe14('0xac')],_0x17856e[_0xfe14('0xac')],_0x5a758c));}}});return Promise['all'](_0x1c3e2b);})[_0xfe14('0x27')](function(_0xd87021){_0x51af00=_0xd87021[0x0];var _0x1ef417=[];var _0x579012=[];_0x5826ff[_0xfe14('0xb1')](function(_0xafd680){if(!_[_0xfe14('0xb4')](_0xafd680[_0xfe14('0xb2')])){var _0x275de8=_0xafd680[_0xfe14('0xb2')][_0xfe14('0xb5')](_0xafd680['@odata.type'][_0xfe14('0xa0')]('.')+0x1);if(_0x275de8===_0xfe14('0xb6')){_0x1ef417[_0xfe14('0xb3')](getBooleanList(_0x2c6111,_0x2315dc,_0x579012,_0x5272bc[_0xfe14('0xac')],_0xafd680['MetadataId'],_0x5a758c));}}});return Promise[_0xfe14('0xb7')](_0x1ef417);})[_0xfe14('0x27')](function(_0x54b8a3){_0x387c71=_0x54b8a3[0x0];var _0x51ec11=[];var _0x160a55=[];_0x5826ff[_0xfe14('0xb1')](function(_0xcda13d){if(_0xcda13d['@odata.type']){var _0x5f4280=_0xcda13d[_0xfe14('0xb2')][_0xfe14('0xb5')](_0xcda13d[_0xfe14('0xb2')][_0xfe14('0xa0')]('.')+0x1);if(_0x5f4280===_0xfe14('0xb8')||_0x5f4280===_0xfe14('0xb9')||_0x5f4280===_0xfe14('0xba')||_0x5f4280===_0xfe14('0xbb')||_0x5f4280===_0xfe14('0xbc')||_0x5f4280===_0xfe14('0xbd')||_0x5f4280===_0xfe14('0xbe')||_0x5f4280==='EntityNameAttributeMetadata'||_0x5f4280===_0xfe14('0xbf')||_0x5f4280===_0xfe14('0xc0')){_0x51ec11['push'](getInputList(_0x2c6111,_0x2315dc,_0x5f4280,_0x160a55,_0x5272bc[_0xfe14('0xac')],_0xcda13d[_0xfe14('0xac')],_0x5a758c));}}});return Promise[_0xfe14('0xb7')](_0x51ec11);})[_0xfe14('0x27')](function(_0xf414c4){_0x448918=_0xf414c4[0x0];var _0x550824=_0x51af00[_0xfe14('0xc1')](_0x387c71)['concat'](_0x448918);var _0x5b7f72={'count':_0x550824[_0xfe14('0x3a')],'rows':_0x550824};return _0x5b7f72;})[_0xfe14('0x27')](respondWithResult(_0x50136c,null))[_0xfe14('0x4a')](function(_0x435008){var _0x5247c3=_0x2ec421['query'][_0xfe14('0xc2')]?0x1f4:_0x435008[_0xfe14('0xc3')]||0x1f4;logger[_0xfe14('0xc4')](_0x435008[_0xfe14('0x2a')]);delete _0x435008[_0xfe14('0x2b')];if(_0x5247c3===0x191){_0x5247c3=0x190;}_0x50136c[_0xfe14('0x21')](_0x5247c3)[_0xfe14('0x2c')](_0x2ec421[_0xfe14('0x34')][_0xfe14('0xc2')]?{'message':'Wrong\x20credentials','statusCode':_0x435008[_0xfe14('0xc3')]}:_0x435008);});};function getSelectList(_0x542c7a,_0x4b5c88,_0x52a6b6,_0x54650,_0x54bc28,_0x481a36){var _0x2baac7={'method':_0xfe14('0xa9'),'uri':_0x542c7a+_0xfe14('0xc5')+_0x54650+')/Attributes('+_0x54bc28+_0xfe14('0xc6')+_0xfe14('0xc7'),'headers':{'Authorization':'Bearer\x20'+_0x481a36,'If-None-Match':null,'OData-Version':_0xfe14('0xab')},'json':!![]};return rp(_0x2baac7)[_0xfe14('0x27')](function(_0x4bdf6c){var _0x2416bb=[];var _0x47d2b5=_0x4bdf6c['OptionSet']['Options'];_0x47d2b5[_0xfe14('0xb1')](function(_0x451b93){_0x2416bb['push']({'name':_0x451b93[_0xfe14('0xc8')]['UserLocalizedLabel'][_0xfe14('0xc8')],'value':String(_0x451b93[_0xfe14('0xc9')])});});var _0x2ed8e8={'id':_0x4b5c88+'_'+_0x4bdf6c[_0xfe14('0xca')],'name':_0x4bdf6c[_0xfe14('0xcb')][_0xfe14('0xcc')]['Label'],'custom':![],'options':_0x2416bb};_0x52a6b6[_0xfe14('0xb3')](_0x2ed8e8);return _0x52a6b6;});}function getBooleanList(_0x4d4844,_0x243424,_0x407dc9,_0x50be3c,_0x56e5cf,_0x4a6639){var _0x4c78c1={'method':'GET','uri':_0x4d4844+_0xfe14('0xc5')+_0x50be3c+_0xfe14('0xcd')+_0x56e5cf+_0xfe14('0xce'),'headers':{'Authorization':_0xfe14('0xad')+_0x4a6639,'If-None-Match':null,'OData-Version':_0xfe14('0xab')},'json':!![]};return rp(_0x4c78c1)['then'](function(_0x514f3e){var _0x2d01f0=[];_0x2d01f0[_0xfe14('0xb3')]({'name':_0x514f3e[_0xfe14('0xcf')][_0xfe14('0xd0')][_0xfe14('0xc8')][_0xfe14('0xcc')][_0xfe14('0xc8')],'value':_0xfe14('0xd1')},{'name':_0x514f3e[_0xfe14('0xcf')][_0xfe14('0xd2')][_0xfe14('0xc8')][_0xfe14('0xcc')][_0xfe14('0xc8')],'value':'false'});var _0x2fcdc3={'id':_0x243424+'_'+_0x514f3e['LogicalName'],'name':_0x514f3e[_0xfe14('0xcb')]['UserLocalizedLabel'][_0xfe14('0xc8')],'custom':![],'options':_0x2d01f0};_0x407dc9[_0xfe14('0xb3')](_0x2fcdc3);return _0x407dc9;});}function getInputList(_0x4aad1d,_0x5c8182,_0x1d6406,_0x43c589,_0xc2839b,_0x175f60,_0x59dc1b){var _0x3aa6eb={'method':_0xfe14('0xa9'),'uri':_0x4aad1d+'EntityDefinitions('+_0xc2839b+')/Attributes('+_0x175f60+')/Microsoft.Dynamics.CRM.'+_0x1d6406+_0xfe14('0xd3'),'headers':{'Authorization':_0xfe14('0xad')+_0x59dc1b,'If-None-Match':null,'OData-Version':_0xfe14('0xab')},'json':!![]};return rp(_0x3aa6eb)[_0xfe14('0x27')](function(_0x2318a7){var _0x5c6711={'id':_0x5c8182+'_'+_0x2318a7[_0xfe14('0xca')],'name':_0x2318a7['DisplayName'][_0xfe14('0xcc')]?_0x2318a7[_0xfe14('0xcb')][_0xfe14('0xcc')][_0xfe14('0xc8')]:_0x2318a7[_0xfe14('0xca')],'custom':![],'options':[]};_0x43c589['push'](_0x5c6711);return _0x43c589;});}
\ No newline at end of file
+var _0x9ff4=['sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/integrations/configuration','end','status','json','undefined','count','offset','limit','Content-Range','apply','save','then','destroy','sendStatus','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','update','getConfigurations','Dynamics365Configuration','order','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','Dynamics365Field','ticketType','incident','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','phonenumber','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','escalatedon','firstresponsebykpiidname','followupby','importsequencenumber','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','productidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','findOne','username','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','password','access_token','GET','Bearer\x20','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','Attributes','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','Value','UserLocalizedLabel','TrueOption','true','FalseOption','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x4fe19c,_0x45d0fe){var _0x952ac7=function(_0x274a16){while(--_0x274a16){_0x4fe19c['push'](_0x4fe19c['shift']());}};_0x952ac7(++_0x45d0fe);}(_0x9ff4,0x196));var _0x49ff=function(_0x3bee5f,_0x2a83c8){_0x3bee5f=_0x3bee5f-0x0;var _0x31e935=_0x9ff4[_0x3bee5f];return _0x31e935;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x49ff('0x0'));var rp=require(_0x49ff('0x1'));var moment=require(_0x49ff('0x2'));var BPromise=require(_0x49ff('0x3'));var Mustache=require('mustache');var util=require(_0x49ff('0x4'));var path=require(_0x49ff('0x5'));var sox=require(_0x49ff('0x6'));var csv=require(_0x49ff('0x7'));var ejs=require(_0x49ff('0x8'));var fs=require('fs');var fs_extra=require(_0x49ff('0x9'));var _=require(_0x49ff('0xa'));var squel=require(_0x49ff('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x49ff('0xc'));var toCsv=require(_0x49ff('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x49ff('0xd'));var authService=require(_0x49ff('0xe'));var qs=require(_0x49ff('0xf'));var as=require(_0x49ff('0x10'));var hardwareService=require(_0x49ff('0x11'));var logger=require(_0x49ff('0x12'))(_0x49ff('0x13'));var utils=require(_0x49ff('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x49ff('0x15'));function respondWithStatusCode(_0xbdc2c,_0x54b12e){_0x54b12e=_0x54b12e||0xcc;return function(_0x2da6e1){if(_0x2da6e1){return _0xbdc2c['sendStatus'](_0x54b12e);}return _0xbdc2c['status'](_0x54b12e)[_0x49ff('0x16')]();};}function respondWithResult(_0x539685,_0x38ab98){_0x38ab98=_0x38ab98||0xc8;return function(_0x197568){if(_0x197568){return _0x539685[_0x49ff('0x17')](_0x38ab98)[_0x49ff('0x18')](_0x197568);}};}function respondWithFilteredResult(_0x10f5a8,_0x3b4e4b){return function(_0x322a7a){if(_0x322a7a){var _0x3a2d34=typeof _0x3b4e4b['offset']===_0x49ff('0x19')&&typeof _0x3b4e4b['limit']===_0x49ff('0x19');var _0xd95e7d=_0x322a7a[_0x49ff('0x1a')];var _0x29c5d9=_0x3a2d34?0x0:_0x3b4e4b[_0x49ff('0x1b')];var _0x90480f=_0x3a2d34?_0x322a7a[_0x49ff('0x1a')]:_0x3b4e4b[_0x49ff('0x1b')]+_0x3b4e4b[_0x49ff('0x1c')];var _0x4a17b2;if(_0x90480f>=_0xd95e7d){_0x90480f=_0xd95e7d;_0x4a17b2=0xc8;}else{_0x4a17b2=0xce;}_0x10f5a8[_0x49ff('0x17')](_0x4a17b2);return _0x10f5a8['set'](_0x49ff('0x1d'),_0x29c5d9+'-'+_0x90480f+'/'+_0xd95e7d)[_0x49ff('0x18')](_0x322a7a);}return null;};}function patchUpdates(_0x5eed15){return function(_0x1af3a0){try{jsonpatch[_0x49ff('0x1e')](_0x1af3a0,_0x5eed15,!![]);}catch(_0x4ea7e2){return BPromise['reject'](_0x4ea7e2);}return _0x1af3a0[_0x49ff('0x1f')]();};}function saveUpdates(_0x2df15b,_0x4d41e5){return function(_0x1ef584){if(_0x1ef584){return _0x1ef584['update'](_0x2df15b)[_0x49ff('0x20')](function(_0x219331){return _0x219331;});}return null;};}function removeEntity(_0xb1088,_0x3fced0){return function(_0x4e74a0){if(_0x4e74a0){return _0x4e74a0[_0x49ff('0x21')]()[_0x49ff('0x20')](function(){_0xb1088[_0x49ff('0x17')](0xcc)[_0x49ff('0x16')]();});}};}function handleEntityNotFound(_0x347bf0,_0x9b1c96){return function(_0x1a3c9d){if(!_0x1a3c9d){_0x347bf0[_0x49ff('0x22')](0x194);}return _0x1a3c9d;};}function handleError(_0x545fce,_0x203853){_0x203853=_0x203853||0x1f4;return function(_0x2641bb){logger['error'](_0x2641bb[_0x49ff('0x23')]);if(_0x2641bb[_0x49ff('0x24')]){delete _0x2641bb[_0x49ff('0x24')];}_0x545fce['status'](_0x203853)[_0x49ff('0x25')](_0x2641bb);};}exports[_0x49ff('0x26')]=function(_0x2d904a,_0x5d5820){var _0xf380ba={},_0x456ce6={},_0x2362a7={'count':0x0,'rows':[]};var _0x2a2b0a=_[_0x49ff('0x27')](db[_0x49ff('0x28')][_0x49ff('0x29')],function(_0x3bf6c1){return{'name':_0x3bf6c1[_0x49ff('0x2a')],'type':_0x3bf6c1[_0x49ff('0x2b')]['key']};});_0x456ce6[_0x49ff('0x2c')]=_['map'](_0x2a2b0a,_0x49ff('0x24'));_0x456ce6[_0x49ff('0x2d')]=_[_0x49ff('0x2e')](_0x2d904a[_0x49ff('0x2d')]);_0x456ce6[_0x49ff('0x2f')]=_[_0x49ff('0x30')](_0x456ce6[_0x49ff('0x2c')],_0x456ce6['query']);_0xf380ba[_0x49ff('0x31')]=_[_0x49ff('0x30')](_0x456ce6[_0x49ff('0x2c')],qs[_0x49ff('0x32')](_0x2d904a[_0x49ff('0x2d')][_0x49ff('0x32')]));_0xf380ba['attributes']=_0xf380ba[_0x49ff('0x31')][_0x49ff('0x33')]?_0xf380ba[_0x49ff('0x31')]:_0x456ce6[_0x49ff('0x2c')];if(!_0x2d904a[_0x49ff('0x2d')][_0x49ff('0x34')](_0x49ff('0x35'))){_0xf380ba[_0x49ff('0x1c')]=qs[_0x49ff('0x1c')](_0x2d904a['query'][_0x49ff('0x1c')]);_0xf380ba[_0x49ff('0x1b')]=qs[_0x49ff('0x1b')](_0x2d904a[_0x49ff('0x2d')][_0x49ff('0x1b')]);}_0xf380ba['order']=qs[_0x49ff('0x36')](_0x2d904a['query']['sort']);_0xf380ba['where']=qs[_0x49ff('0x2f')](_['pick'](_0x2d904a['query'],_0x456ce6[_0x49ff('0x2f')]),_0x2a2b0a);if(_0x2d904a[_0x49ff('0x2d')]['filter']){_0xf380ba[_0x49ff('0x37')]=_[_0x49ff('0x38')](_0xf380ba[_0x49ff('0x37')],{'$or':_[_0x49ff('0x27')](_0x2a2b0a,function(_0x4a914e){if(_0x4a914e[_0x49ff('0x2b')]!==_0x49ff('0x39')){var _0x501d2c={};_0x501d2c[_0x4a914e['name']]={'$like':'%'+_0x2d904a[_0x49ff('0x2d')][_0x49ff('0x3a')]+'%'};return _0x501d2c;}})});}_0xf380ba=_[_0x49ff('0x38')]({},_0xf380ba,_0x2d904a[_0x49ff('0x3b')]);var _0x35e77c={'where':_0xf380ba['where']};return db[_0x49ff('0x28')][_0x49ff('0x1a')](_0x35e77c)[_0x49ff('0x20')](function(_0x22feb9){_0x2362a7[_0x49ff('0x1a')]=_0x22feb9;if(_0x2d904a[_0x49ff('0x2d')]['includeAll']){_0xf380ba['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x49ff('0x3c')](_0xf380ba);})[_0x49ff('0x20')](function(_0x32b919){_0x2362a7[_0x49ff('0x3d')]=_0x32b919;return _0x2362a7;})['then'](respondWithFilteredResult(_0x5d5820,_0xf380ba))[_0x49ff('0x3e')](handleError(_0x5d5820,null));};exports[_0x49ff('0x3f')]=function(_0xa30c30,_0x906626){var _0x1e8ad8={'raw':![],'where':{'id':_0xa30c30[_0x49ff('0x40')]['id']}},_0x43d611={};_0x43d611['model']=_[_0x49ff('0x2e')](db['Dynamics365Account'][_0x49ff('0x29')]);_0x43d611[_0x49ff('0x2d')]=_['keys'](_0xa30c30[_0x49ff('0x2d')]);_0x43d611[_0x49ff('0x2f')]=_['intersection'](_0x43d611[_0x49ff('0x2c')],_0x43d611[_0x49ff('0x2d')]);_0x1e8ad8['attributes']=_[_0x49ff('0x30')](_0x43d611[_0x49ff('0x2c')],qs[_0x49ff('0x32')](_0xa30c30[_0x49ff('0x2d')]['fields']));_0x1e8ad8[_0x49ff('0x31')]=_0x1e8ad8[_0x49ff('0x31')][_0x49ff('0x33')]?_0x1e8ad8[_0x49ff('0x31')]:_0x43d611[_0x49ff('0x2c')];if(_0xa30c30[_0x49ff('0x2d')][_0x49ff('0x41')]){_0x1e8ad8[_0x49ff('0x42')]=[{'all':!![]}];}_0x1e8ad8=_[_0x49ff('0x38')]({},_0x1e8ad8,_0xa30c30[_0x49ff('0x3b')]);return db[_0x49ff('0x28')][_0x49ff('0x43')](_0x1e8ad8)[_0x49ff('0x20')](handleEntityNotFound(_0x906626,null))[_0x49ff('0x20')](respondWithResult(_0x906626,null))[_0x49ff('0x3e')](handleError(_0x906626,null));};exports['create']=function(_0x5d2415,_0x14e580){return db['Dynamics365Account'][_0x49ff('0x44')](_0x5d2415[_0x49ff('0x45')],{})[_0x49ff('0x20')](respondWithResult(_0x14e580,0xc9))[_0x49ff('0x3e')](handleError(_0x14e580,null));};exports[_0x49ff('0x46')]=function(_0x1b5b0c,_0x4f3c2d){if(_0x1b5b0c['body']['id']){delete _0x1b5b0c['body']['id'];}return db[_0x49ff('0x28')][_0x49ff('0x43')]({'where':{'id':_0x1b5b0c[_0x49ff('0x40')]['id']}})[_0x49ff('0x20')](handleEntityNotFound(_0x4f3c2d,null))[_0x49ff('0x20')](saveUpdates(_0x1b5b0c['body'],null))[_0x49ff('0x20')](respondWithResult(_0x4f3c2d,null))[_0x49ff('0x3e')](handleError(_0x4f3c2d,null));};exports[_0x49ff('0x21')]=function(_0x33f72c,_0x194925){return db[_0x49ff('0x28')][_0x49ff('0x43')]({'where':{'id':_0x33f72c[_0x49ff('0x40')]['id']}})[_0x49ff('0x20')](handleEntityNotFound(_0x194925,null))[_0x49ff('0x20')](removeEntity(_0x194925,null))[_0x49ff('0x3e')](handleError(_0x194925,null));};exports[_0x49ff('0x47')]=function(_0x138395,_0x2dd026,_0x5da8f4){var _0x4f1dda={};var _0x140a50={};var _0x31606b;var _0x4472f3;return db[_0x49ff('0x28')]['findOne']({'where':{'id':_0x138395[_0x49ff('0x40')]['id']}})[_0x49ff('0x20')](handleEntityNotFound(_0x2dd026,null))[_0x49ff('0x20')](function(_0x4b798f){if(_0x4b798f){_0x31606b=_0x4b798f;_0x140a50[_0x49ff('0x2c')]=_[_0x49ff('0x2e')](db[_0x49ff('0x48')][_0x49ff('0x29')]);_0x140a50[_0x49ff('0x2d')]=_[_0x49ff('0x2e')](_0x138395[_0x49ff('0x2d')]);_0x140a50[_0x49ff('0x2f')]=_[_0x49ff('0x30')](_0x140a50['model'],_0x140a50[_0x49ff('0x2d')]);_0x4f1dda[_0x49ff('0x31')]=_['intersection'](_0x140a50[_0x49ff('0x2c')],qs[_0x49ff('0x32')](_0x138395[_0x49ff('0x2d')][_0x49ff('0x32')]));_0x4f1dda[_0x49ff('0x31')]=_0x4f1dda['attributes'][_0x49ff('0x33')]?_0x4f1dda[_0x49ff('0x31')]:_0x140a50['model'];_0x4f1dda[_0x49ff('0x49')]=qs['sort'](_0x138395['query'][_0x49ff('0x36')]);_0x4f1dda['where']=qs[_0x49ff('0x2f')](_[_0x49ff('0x4a')](_0x138395[_0x49ff('0x2d')],_0x140a50[_0x49ff('0x2f')]));if(_0x138395[_0x49ff('0x2d')][_0x49ff('0x3a')]){_0x4f1dda[_0x49ff('0x37')]=_[_0x49ff('0x38')](_0x4f1dda['where'],{'$or':_['map'](_0x4f1dda['attributes'],function(_0x26045e){var _0x1492ce={};_0x1492ce[_0x26045e]={'$like':'%'+_0x138395[_0x49ff('0x2d')][_0x49ff('0x3a')]+'%'};return _0x1492ce;})});}_0x4f1dda=_[_0x49ff('0x38')]({},_0x4f1dda,_0x138395[_0x49ff('0x3b')]);return _0x31606b[_0x49ff('0x47')](_0x4f1dda);}})[_0x49ff('0x20')](function(_0x1924b1){if(_0x1924b1){_0x4472f3=_0x1924b1[_0x49ff('0x33')];if(!_0x138395['query']['hasOwnProperty'](_0x49ff('0x35'))){_0x4f1dda['limit']=qs['limit'](_0x138395[_0x49ff('0x2d')][_0x49ff('0x1c')]);_0x4f1dda[_0x49ff('0x1b')]=qs[_0x49ff('0x1b')](_0x138395[_0x49ff('0x2d')][_0x49ff('0x1b')]);}return _0x31606b[_0x49ff('0x47')](_0x4f1dda);}})[_0x49ff('0x20')](function(_0x8a23a6){if(_0x8a23a6){return _0x8a23a6?{'count':_0x4472f3,'rows':_0x8a23a6}:null;}})[_0x49ff('0x20')](respondWithResult(_0x2dd026,null))[_0x49ff('0x3e')](handleError(_0x2dd026,null));};exports[_0x49ff('0x4b')]=function(_0x3acd04,_0x2a2310,_0x2d4bbb){if(_0x3acd04[_0x49ff('0x45')]['id']){delete _0x3acd04[_0x49ff('0x45')]['id'];}return db[_0x49ff('0x28')]['findOne']({'where':{'id':_0x3acd04[_0x49ff('0x40')]['id']}})['then'](handleEntityNotFound(_0x2a2310,null))[_0x49ff('0x20')](function(_0x53b332){if(_0x53b332){_0x3acd04[_0x49ff('0x45')][_0x49ff('0x4c')]=_0x53b332['id'];_0x3acd04['body'][_0x49ff('0x4d')]=integrations[_0x49ff('0x4e')](_0x3acd04[_0x49ff('0x45')]['channel'],_0x3acd04[_0x49ff('0x45')][_0x49ff('0x2b')]);_0x3acd04[_0x49ff('0x45')][_0x49ff('0x4f')]=integrations[_0x49ff('0x50')](_0x3acd04[_0x49ff('0x45')]['channel'],_0x3acd04['body']['type']);return db[_0x49ff('0x48')][_0x49ff('0x44')](_0x3acd04['body'],{'include':[{'model':db[_0x49ff('0x51')],'as':_0x49ff('0x4d')},{'model':db[_0x49ff('0x51')],'as':'Descriptions'}]});}return null;})[_0x49ff('0x20')](respondWithResult(_0x2a2310,null))[_0x49ff('0x3e')](handleError(_0x2a2310,null));};exports['getFields']=function(_0x4bf3f5,_0x1a724b,_0x4520ae){var _0x10ede0=_0x4bf3f5[_0x49ff('0x2d')][_0x49ff('0x52')];var _0x1eefc1=_0x10ede0===_0x49ff('0x53')?_0x49ff('0x54'):_0x49ff('0x55');var _0x1c3d06='';var _0x4e80ca='';var _0x492ba3='';var _0xb770eb='';var _0x5acc6f='';var _0x5ecb1b='';var _0x54905e='';var _0x5e6a4f='';var _0x5f10c1=[_0x49ff('0x56'),_0x49ff('0x57'),'customerid',_0x49ff('0x58'),_0x49ff('0x59'),_0x49ff('0x5a'),_0x49ff('0x5b'),'regardingobjectid',_0x49ff('0x5c'),_0x49ff('0x5d')];var _0x3ce284=[_0x49ff('0x5e'),_0x49ff('0x5f'),_0x49ff('0x60'),'billedserviceunits',_0x49ff('0x61'),_0x49ff('0x62'),_0x49ff('0x63'),_0x49ff('0x64'),_0x49ff('0x65'),_0x49ff('0x66'),_0x49ff('0x67'),_0x49ff('0x68'),'createdon',_0x49ff('0x69'),_0x49ff('0x6a'),'customeridname','customeridtype',_0x49ff('0x6b'),_0x49ff('0x6c'),'entitlementidname',_0x49ff('0x6d'),_0x49ff('0x6e'),_0x49ff('0x6f'),'exchangerate',_0x49ff('0x70'),_0x49ff('0x71'),_0x49ff('0x72'),'influencescore',_0x49ff('0x73'),_0x49ff('0x74'),_0x49ff('0x75'),_0x49ff('0x76'),_0x49ff('0x77'),_0x49ff('0x78'),_0x49ff('0x79'),_0x49ff('0x7a'),_0x49ff('0x7b'),_0x49ff('0x7c'),_0x49ff('0x7d'),_0x49ff('0x7e'),'numberofchildincidents',_0x49ff('0x7f'),_0x49ff('0x80'),_0x49ff('0x81'),_0x49ff('0x82'),_0x49ff('0x83'),_0x49ff('0x84'),'primarycontactidname',_0x49ff('0x85'),'prioritycodename',_0x49ff('0x86'),'productserialnumber',_0x49ff('0x87'),_0x49ff('0x88'),_0x49ff('0x89'),_0x49ff('0x8a'),_0x49ff('0x8b'),_0x49ff('0x8c'),'slainvokedidname',_0x49ff('0x8d'),_0x49ff('0x8e'),'statecode','statuscode',_0x49ff('0x8f'),_0x49ff('0x90'),_0x49ff('0x91'),_0x49ff('0x92'),_0x49ff('0x93'),'utcconversiontimezonecode','versionnumber'];var _0x1ec6d5=_0x5f10c1['concat'](_0x3ce284);return db[_0x49ff('0x28')][_0x49ff('0x94')]({'where':{'id':_0x4bf3f5[_0x49ff('0x40')]['id']},'attributes':['id',_0x49ff('0x95'),'password',_0x49ff('0x96'),_0x49ff('0x97'),_0x49ff('0x98'),_0x49ff('0x99')]})[_0x49ff('0x20')](handleEntityNotFound(_0x1a724b,null))['then'](function(_0x18ffbe){if(_0x18ffbe){_0x5e6a4f=_0x18ffbe['remoteUri'];var _0x5f8f95=_0x5e6a4f[_0x49ff('0x9a')](-0x1);if(_0x5f8f95==='/'){_0x5e6a4f=_0x5e6a4f[_0x49ff('0x9b')](0x0,_0x5e6a4f[_0x49ff('0x9c')](_0x5f8f95));}_0x54905e=util['format'](_0x49ff('0x9d'),_0x5e6a4f);var _0x3616ea={'method':_0x49ff('0x9e'),'uri':_0x49ff('0x9f')+_0x18ffbe[_0x49ff('0x97')]+_0x49ff('0xa0'),'form':{'client_id':_0x18ffbe['clientId'],'resource':_0x5e6a4f,'username':_0x18ffbe[_0x49ff('0x95')],'password':_0x18ffbe[_0x49ff('0xa1')],'grant_type':_0x49ff('0xa1'),'client_secret':_0x18ffbe[_0x49ff('0x99')]},'json':!![]};return rp(_0x3616ea);}})[_0x49ff('0x20')](function(_0x272815){_0x5ecb1b=_0x272815[_0x49ff('0xa2')];var _0x5273fa={'method':_0x49ff('0xa3'),'uri':encodeURI(_0x54905e+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x1eefc1+'\x27'),'headers':{'Authorization':_0x49ff('0xa4')+_0x5ecb1b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5273fa);})['then'](function(_0x569c05){var _0x1e9c78=_0x569c05[_0x49ff('0xa5')][0x0];var _0x4e9f18=_0x1e9c78[_0x49ff('0xa6')];var _0x3dbcd7={'method':_0x49ff('0xa3'),'uri':_0x54905e+_0x49ff('0xa7')+_0x4e9f18+_0x49ff('0xa8'),'headers':{'Authorization':_0x49ff('0xa4')+_0x5ecb1b,'If-None-Match':null,'OData-Version':_0x49ff('0xa9')},'json':!![]};return rp(_0x3dbcd7);})['then'](function(_0x4918a8){_0x1c3d06=_0x4918a8;_0x4e80ca=_0x1c3d06[_0x49ff('0xaa')];_0x4e80ca=_[_0x49ff('0xab')](_0x4e80ca,function(_0x251104){return!_0x1ec6d5[_0x49ff('0xac')](_0x251104[_0x49ff('0xad')]);});var _0x19d2f9=[];var _0x30d49a=[];_0x4e80ca[_0x49ff('0xae')](function(_0x454007){if(_0x454007['@odata.type']){var _0x703dd3=_0x454007[_0x49ff('0xaf')][_0x49ff('0x9b')](_0x454007[_0x49ff('0xaf')][_0x49ff('0x9c')]('.')+0x1);if(_0x703dd3===_0x49ff('0xb0')){_0x19d2f9[_0x49ff('0xb1')](getSelectList(_0x54905e,_0x10ede0,_0x30d49a,_0x1c3d06[_0x49ff('0xa6')],_0x454007['MetadataId'],_0x5ecb1b));}}});return Promise[_0x49ff('0xb2')](_0x19d2f9);})[_0x49ff('0x20')](function(_0x55b148){_0x492ba3=_0x55b148[0x0];var _0xf190ac=[];var _0x4278b6=[];_0x4e80ca[_0x49ff('0xae')](function(_0x11b1ec){if(!_[_0x49ff('0xb3')](_0x11b1ec[_0x49ff('0xaf')])){var _0x5445e3=_0x11b1ec[_0x49ff('0xaf')]['substring'](_0x11b1ec['@odata.type'][_0x49ff('0x9c')]('.')+0x1);if(_0x5445e3===_0x49ff('0xb4')){_0xf190ac[_0x49ff('0xb1')](getBooleanList(_0x54905e,_0x10ede0,_0x4278b6,_0x1c3d06[_0x49ff('0xa6')],_0x11b1ec[_0x49ff('0xa6')],_0x5ecb1b));}}});return Promise['all'](_0xf190ac);})['then'](function(_0x3d3b63){_0xb770eb=_0x3d3b63[0x0];var _0x1a700b=[];var _0x21a209=[];_0x4e80ca[_0x49ff('0xae')](function(_0x289bea){if(_0x289bea[_0x49ff('0xaf')]){var _0x2fc1cb=_0x289bea['@odata.type'][_0x49ff('0x9b')](_0x289bea['@odata.type']['lastIndexOf']('.')+0x1);if(_0x2fc1cb===_0x49ff('0xb5')||_0x2fc1cb===_0x49ff('0xb6')||_0x2fc1cb===_0x49ff('0xb7')||_0x2fc1cb===_0x49ff('0xb8')||_0x2fc1cb==='MemoAttributeMetadata'||_0x2fc1cb==='DateTimeAttributeMetadata'||_0x2fc1cb===_0x49ff('0xb9')||_0x2fc1cb===_0x49ff('0xba')||_0x2fc1cb===_0x49ff('0xbb')||_0x2fc1cb===_0x49ff('0xbc')){_0x1a700b['push'](getInputList(_0x54905e,_0x10ede0,_0x2fc1cb,_0x21a209,_0x1c3d06[_0x49ff('0xa6')],_0x289bea[_0x49ff('0xa6')],_0x5ecb1b));}}});return Promise['all'](_0x1a700b);})[_0x49ff('0x20')](function(_0xd51ad){_0x5acc6f=_0xd51ad[0x0];var _0x3e2ac0=_0x492ba3['concat'](_0xb770eb)[_0x49ff('0xbd')](_0x5acc6f);var _0x49a28e={'count':_0x3e2ac0['length'],'rows':_0x3e2ac0};return _0x49a28e;})[_0x49ff('0x20')](respondWithResult(_0x1a724b,null))[_0x49ff('0x3e')](function(_0x17f72c){var _0x1e942d=_0x4bf3f5[_0x49ff('0x2d')][_0x49ff('0xbe')]?0x1f4:_0x17f72c[_0x49ff('0xbf')]||0x1f4;logger['error'](_0x17f72c['stack']);delete _0x17f72c[_0x49ff('0x24')];if(_0x1e942d===0x191){_0x1e942d=0x190;}_0x1a724b['status'](_0x1e942d)[_0x49ff('0x25')](_0x4bf3f5['query']['test']?{'message':_0x49ff('0xc0'),'statusCode':_0x17f72c[_0x49ff('0xbf')]}:_0x17f72c);});};function getSelectList(_0x116e43,_0x4ef115,_0x4b7ebb,_0x36668b,_0xa528f7,_0xca2993){var _0x326796={'method':_0x49ff('0xa3'),'uri':_0x116e43+_0x49ff('0xa7')+_0x36668b+_0x49ff('0xc1')+_0xa528f7+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x49ff('0xc2'),'headers':{'Authorization':_0x49ff('0xa4')+_0xca2993,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x326796)[_0x49ff('0x20')](function(_0x2b77b2){var _0x549837=[];var _0x42c064=_0x2b77b2[_0x49ff('0xc3')][_0x49ff('0xc4')];_0x42c064['forEach'](function(_0x5bbeec){_0x549837['push']({'name':_0x5bbeec[_0x49ff('0xc5')]['UserLocalizedLabel'][_0x49ff('0xc5')],'value':String(_0x5bbeec[_0x49ff('0xc6')])});});var _0x13a700={'id':_0x4ef115+'_'+_0x2b77b2[_0x49ff('0xad')],'name':_0x2b77b2['DisplayName'][_0x49ff('0xc7')][_0x49ff('0xc5')],'custom':![],'options':_0x549837};_0x4b7ebb[_0x49ff('0xb1')](_0x13a700);return _0x4b7ebb;});}function getBooleanList(_0x29e533,_0x1eb4f,_0x46efca,_0x30874f,_0x58f791,_0x1641a6){var _0x2b0239={'method':_0x49ff('0xa3'),'uri':_0x29e533+_0x49ff('0xa7')+_0x30874f+_0x49ff('0xc1')+_0x58f791+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x49ff('0xa4')+_0x1641a6,'If-None-Match':null,'OData-Version':_0x49ff('0xa9')},'json':!![]};return rp(_0x2b0239)[_0x49ff('0x20')](function(_0x20b103){var _0x345c9a=[];_0x345c9a[_0x49ff('0xb1')]({'name':_0x20b103[_0x49ff('0xc3')][_0x49ff('0xc8')]['Label'][_0x49ff('0xc7')][_0x49ff('0xc5')],'value':_0x49ff('0xc9')},{'name':_0x20b103[_0x49ff('0xc3')][_0x49ff('0xca')][_0x49ff('0xc5')][_0x49ff('0xc7')][_0x49ff('0xc5')],'value':'false'});var _0x4dffe2={'id':_0x1eb4f+'_'+_0x20b103['LogicalName'],'name':_0x20b103[_0x49ff('0xcb')]['UserLocalizedLabel'][_0x49ff('0xc5')],'custom':![],'options':_0x345c9a};_0x46efca[_0x49ff('0xb1')](_0x4dffe2);return _0x46efca;});}function getInputList(_0x5283fa,_0x211e7d,_0x2a0ae0,_0x5122a8,_0x51b619,_0x40d0ae,_0x3cdf55){var _0x1c9b86={'method':_0x49ff('0xa3'),'uri':_0x5283fa+_0x49ff('0xa7')+_0x51b619+_0x49ff('0xc1')+_0x40d0ae+_0x49ff('0xcc')+_0x2a0ae0+_0x49ff('0xcd'),'headers':{'Authorization':_0x49ff('0xa4')+_0x3cdf55,'If-None-Match':null,'OData-Version':_0x49ff('0xa9')},'json':!![]};return rp(_0x1c9b86)[_0x49ff('0x20')](function(_0x5429e1){var _0x45d12a={'id':_0x211e7d+'_'+_0x5429e1[_0x49ff('0xad')],'name':_0x5429e1[_0x49ff('0xcb')][_0x49ff('0xc7')]?_0x5429e1[_0x49ff('0xcb')]['UserLocalizedLabel'][_0x49ff('0xc5')]:_0x5429e1[_0x49ff('0xad')],'custom':![],'options':[]};_0x5122a8['push'](_0x45d12a);return _0x5122a8;});}
\ No newline at end of file
index 1f4a270..1f22378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x1d71d7,_0x3c803d){var _0x3caf2c=function(_0x1800b8){while(--_0x1800b8){_0x1d71d7['push'](_0x1d71d7['shift']());}};_0x3caf2c(++_0x3c803d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4d82ea,_0x4d459f){_0x4d82ea=_0x4d82ea-0x0;var _0x257f4a=_0xcb91[_0x4d82ea];return _0x257f4a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x2858ab,_0x563ac0){var _0x3f04cb=function(_0x474da2){while(--_0x474da2){_0x2858ab['push'](_0x2858ab['shift']());}};_0x3f04cb(++_0x563ac0);}(_0xe706,0xa3));var _0x6e70=function(_0x1554e6,_0x28607d){_0x1554e6=_0x1554e6-0x0;var _0x4cafbf=_0xe706[_0x1554e6];return _0x4cafbf;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f668ac9..7602b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85fc=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','Dynamics365Account,\x20%s,\x20%s','message','result','catch','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model','GetDynamics365Account','ShowDynamics365Account','lodash'];(function(_0x1d5afb,_0xdd9698){var _0x1bd7a2=function(_0x27e243){while(--_0x27e243){_0x1d5afb['push'](_0x1d5afb['shift']());}};_0x1bd7a2(++_0xdd9698);}(_0x85fc,0x7b));var _0xc85f=function(_0x5a4147,_0xa1fe0f){_0x5a4147=_0x5a4147-0x0;var _0x1e43b3=_0x85fc[_0x5a4147];return _0x1e43b3;};'use strict';var _=require(_0xc85f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc85f('0x1'));var rs=require(_0xc85f('0x2'));var fs=require('fs');var Redis=require(_0xc85f('0x3'));var db=require(_0xc85f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc85f('0x5'))(_0xc85f('0x6'));var config=require('../../config/environment');var jayson=require(_0xc85f('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x505e4f,_0x1255f3,_0x4e1228){return new BPromise(function(_0x2e3d43,_0x9c2caa){return client[_0xc85f('0x8')](_0x505e4f,_0x4e1228)[_0xc85f('0x9')](function(_0x379f2b){logger[_0xc85f('0xa')]('Dynamics365Account,\x20%s,\x20%s',_0x1255f3,_0xc85f('0xb'));logger[_0xc85f('0xc')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x1255f3,'request\x20sent',JSON[_0xc85f('0xd')](_0x379f2b));if(_0x379f2b['error']){if(_0x379f2b[_0xc85f('0xe')]['code']===0x1f4){logger['error'](_0xc85f('0xf'),_0x1255f3,_0x379f2b[_0xc85f('0xe')][_0xc85f('0x10')]);return _0x9c2caa(_0x379f2b[_0xc85f('0xe')][_0xc85f('0x10')]);}logger[_0xc85f('0xe')](_0xc85f('0xf'),_0x1255f3,_0x379f2b[_0xc85f('0xe')][_0xc85f('0x10')]);return _0x2e3d43(_0x379f2b[_0xc85f('0xe')][_0xc85f('0x10')]);}else{logger['info']('Dynamics365Account,\x20%s,\x20%s',_0x1255f3,_0xc85f('0xb'));_0x2e3d43(_0x379f2b[_0xc85f('0x11')][_0xc85f('0x10')]);}})[_0xc85f('0x12')](function(_0x3dace3){logger[_0xc85f('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x1255f3,_0x3dace3);_0x9c2caa(_0x3dace3);});});}exports['GetDynamics365Account']=function(_0x117549){var _0x32f15f=this;return new Promise(function(_0x3f02a3,_0x25d89c){return db[_0xc85f('0x13')][_0xc85f('0x14')]({'raw':_0x117549[_0xc85f('0x15')]?_0x117549['options'][_0xc85f('0x16')]===undefined?!![]:![]:!![],'where':_0x117549['options']?_0x117549['options'][_0xc85f('0x17')]||null:null,'attributes':_0x117549[_0xc85f('0x15')]?_0x117549['options'][_0xc85f('0x18')]||null:null,'limit':_0x117549['options']?_0x117549[_0xc85f('0x15')][_0xc85f('0x19')]||null:null,'include':_0x117549['options']?_0x117549[_0xc85f('0x15')][_0xc85f('0x1a')]?_[_0xc85f('0x1b')](_0x117549[_0xc85f('0x15')][_0xc85f('0x1a')],function(_0xfcbf2e){return{'model':db[_0xfcbf2e[_0xc85f('0x1c')]],'as':_0xfcbf2e['as'],'attributes':_0xfcbf2e['attributes'],'include':_0xfcbf2e[_0xc85f('0x1a')]?_['map'](_0xfcbf2e[_0xc85f('0x1a')],function(_0x9be158){return{'model':db[_0x9be158[_0xc85f('0x1c')]],'as':_0x9be158['as'],'attributes':_0x9be158[_0xc85f('0x18')],'include':_0x9be158['include']?_['map'](_0x9be158[_0xc85f('0x1a')],function(_0x9c7b9c){return{'model':db[_0x9c7b9c[_0xc85f('0x1c')]],'as':_0x9c7b9c['as'],'attributes':_0x9c7b9c[_0xc85f('0x18')]};}):[]};}):[]};}):[]:[]})[_0xc85f('0x9')](function(_0x422283){logger['info'](_0xc85f('0x1d'),_0x117549);logger[_0xc85f('0xc')](_0xc85f('0x1d'),_0x117549,JSON[_0xc85f('0xd')](_0x422283));_0x3f02a3(_0x422283);})[_0xc85f('0x12')](function(_0x3ec423){logger['error']('GetDynamics365Account',_0x3ec423[_0xc85f('0x10')],_0x117549);_0x25d89c(_0x32f15f[_0xc85f('0xe')](0x1f4,_0x3ec423['message']));});});};exports[_0xc85f('0x1e')]=function(_0x520c37){var _0x7473a8=this;return new Promise(function(_0x2190d6,_0x1e21dc){return db['Dynamics365Account']['find']({'raw':_0x520c37[_0xc85f('0x15')]?_0x520c37['options'][_0xc85f('0x16')]===undefined?!![]:![]:!![],'where':_0x520c37[_0xc85f('0x15')]?_0x520c37[_0xc85f('0x15')][_0xc85f('0x17')]||null:null,'attributes':_0x520c37[_0xc85f('0x15')]?_0x520c37[_0xc85f('0x15')][_0xc85f('0x18')]||null:null,'include':_0x520c37[_0xc85f('0x15')]?_0x520c37[_0xc85f('0x15')][_0xc85f('0x1a')]?_[_0xc85f('0x1b')](_0x520c37[_0xc85f('0x15')]['include'],function(_0xf58a1){return{'model':db[_0xf58a1['model']],'as':_0xf58a1['as'],'attributes':_0xf58a1[_0xc85f('0x18')],'include':_0xf58a1[_0xc85f('0x1a')]?_[_0xc85f('0x1b')](_0xf58a1[_0xc85f('0x1a')],function(_0x3b83c3){return{'model':db[_0x3b83c3[_0xc85f('0x1c')]],'as':_0x3b83c3['as'],'attributes':_0x3b83c3[_0xc85f('0x18')],'include':_0x3b83c3[_0xc85f('0x1a')]?_[_0xc85f('0x1b')](_0x3b83c3['include'],function(_0x418255){return{'model':db[_0x418255[_0xc85f('0x1c')]],'as':_0x418255['as'],'attributes':_0x418255[_0xc85f('0x18')]};}):[]};}):[]};}):[]:[]})[_0xc85f('0x9')](function(_0x25aa0f){logger[_0xc85f('0xa')](_0xc85f('0x1e'),_0x520c37);logger[_0xc85f('0xc')]('ShowDynamics365Account',_0x520c37,JSON['stringify'](_0x25aa0f));_0x2190d6(_0x25aa0f);})[_0xc85f('0x12')](function(_0x3fb74c){logger[_0xc85f('0xe')]('ShowDynamics365Account',_0x3fb74c[_0xc85f('0x10')],_0x520c37);_0x1e21dc(_0x7473a8[_0xc85f('0xe')](0x1f4,_0x3fb74c[_0xc85f('0x10')]));});});};
\ No newline at end of file
+var _0xe437=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','attributes','limit','map','include','model','debug','find','where','ShowDynamics365Account','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x141982,_0x58d715){var _0x25aa64=function(_0x1b1ca1){while(--_0x1b1ca1){_0x141982['push'](_0x141982['shift']());}};_0x25aa64(++_0x58d715);}(_0xe437,0x69));var _0x7e43=function(_0xe3daa9,_0x3caf82){_0xe3daa9=_0xe3daa9-0x0;var _0x7c3dd3=_0xe437[_0xe3daa9];return _0x7c3dd3;};'use strict';var _=require(_0x7e43('0x0'));var util=require(_0x7e43('0x1'));var moment=require(_0x7e43('0x2'));var BPromise=require('bluebird');var rs=require(_0x7e43('0x3'));var fs=require('fs');var Redis=require(_0x7e43('0x4'));var db=require(_0x7e43('0x5'))['db'];var utils=require(_0x7e43('0x6'));var logger=require(_0x7e43('0x7'))(_0x7e43('0x8'));var config=require(_0x7e43('0x9'));var jayson=require(_0x7e43('0xa'));var client=jayson['client'][_0x7e43('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3bd40f,_0xed5596,_0x8488f6){return new BPromise(function(_0x4fac58,_0x94fd3b){return client[_0x7e43('0xc')](_0x3bd40f,_0x8488f6)[_0x7e43('0xd')](function(_0x43d20b){logger[_0x7e43('0xe')](_0x7e43('0xf'),_0xed5596,_0x7e43('0x10'));logger['debug'](_0x7e43('0x11'),_0xed5596,_0x7e43('0x10'),JSON[_0x7e43('0x12')](_0x43d20b));if(_0x43d20b[_0x7e43('0x13')]){if(_0x43d20b[_0x7e43('0x13')][_0x7e43('0x14')]===0x1f4){logger[_0x7e43('0x13')](_0x7e43('0xf'),_0xed5596,_0x43d20b['error'][_0x7e43('0x15')]);return _0x94fd3b(_0x43d20b['error']['message']);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0xed5596,_0x43d20b[_0x7e43('0x13')]['message']);return _0x4fac58(_0x43d20b['error'][_0x7e43('0x15')]);}else{logger[_0x7e43('0xe')](_0x7e43('0xf'),_0xed5596,_0x7e43('0x10'));_0x4fac58(_0x43d20b['result'][_0x7e43('0x15')]);}})[_0x7e43('0x16')](function(_0x2a66ee){logger[_0x7e43('0x13')](_0x7e43('0xf'),_0xed5596,_0x2a66ee);_0x94fd3b(_0x2a66ee);});});}exports[_0x7e43('0x17')]=function(_0x2e32b6){var _0x5a88f8=this;return new Promise(function(_0x1726ee,_0x275ffa){return db[_0x7e43('0x18')][_0x7e43('0x19')]({'raw':_0x2e32b6[_0x7e43('0x1a')]?_0x2e32b6[_0x7e43('0x1a')][_0x7e43('0x1b')]===undefined?!![]:![]:!![],'where':_0x2e32b6[_0x7e43('0x1a')]?_0x2e32b6[_0x7e43('0x1a')]['where']||null:null,'attributes':_0x2e32b6[_0x7e43('0x1a')]?_0x2e32b6['options'][_0x7e43('0x1c')]||null:null,'limit':_0x2e32b6[_0x7e43('0x1a')]?_0x2e32b6['options'][_0x7e43('0x1d')]||null:null,'include':_0x2e32b6[_0x7e43('0x1a')]?_0x2e32b6[_0x7e43('0x1a')]['include']?_[_0x7e43('0x1e')](_0x2e32b6[_0x7e43('0x1a')][_0x7e43('0x1f')],function(_0x295b46){return{'model':db[_0x295b46['model']],'as':_0x295b46['as'],'attributes':_0x295b46[_0x7e43('0x1c')],'include':_0x295b46[_0x7e43('0x1f')]?_['map'](_0x295b46[_0x7e43('0x1f')],function(_0x10b556){return{'model':db[_0x10b556[_0x7e43('0x20')]],'as':_0x10b556['as'],'attributes':_0x10b556[_0x7e43('0x1c')],'include':_0x10b556['include']?_[_0x7e43('0x1e')](_0x10b556['include'],function(_0xbdea56){return{'model':db[_0xbdea56[_0x7e43('0x20')]],'as':_0xbdea56['as'],'attributes':_0xbdea56['attributes']};}):[]};}):[]};}):[]:[]})[_0x7e43('0xd')](function(_0x51725c){logger[_0x7e43('0xe')](_0x7e43('0x17'),_0x2e32b6);logger[_0x7e43('0x21')](_0x7e43('0x17'),_0x2e32b6,JSON['stringify'](_0x51725c));_0x1726ee(_0x51725c);})['catch'](function(_0x134f1a){logger[_0x7e43('0x13')](_0x7e43('0x17'),_0x134f1a[_0x7e43('0x15')],_0x2e32b6);_0x275ffa(_0x5a88f8[_0x7e43('0x13')](0x1f4,_0x134f1a['message']));});});};exports['ShowDynamics365Account']=function(_0x552ec7){var _0x9ab12c=this;return new Promise(function(_0x1f6232,_0x2ba47d){return db['Dynamics365Account'][_0x7e43('0x22')]({'raw':_0x552ec7[_0x7e43('0x1a')]?_0x552ec7[_0x7e43('0x1a')][_0x7e43('0x1b')]===undefined?!![]:![]:!![],'where':_0x552ec7[_0x7e43('0x1a')]?_0x552ec7[_0x7e43('0x1a')][_0x7e43('0x23')]||null:null,'attributes':_0x552ec7[_0x7e43('0x1a')]?_0x552ec7[_0x7e43('0x1a')][_0x7e43('0x1c')]||null:null,'include':_0x552ec7[_0x7e43('0x1a')]?_0x552ec7[_0x7e43('0x1a')][_0x7e43('0x1f')]?_[_0x7e43('0x1e')](_0x552ec7[_0x7e43('0x1a')][_0x7e43('0x1f')],function(_0x318353){return{'model':db[_0x318353['model']],'as':_0x318353['as'],'attributes':_0x318353[_0x7e43('0x1c')],'include':_0x318353['include']?_['map'](_0x318353[_0x7e43('0x1f')],function(_0x1f9a1d){return{'model':db[_0x1f9a1d[_0x7e43('0x20')]],'as':_0x1f9a1d['as'],'attributes':_0x1f9a1d[_0x7e43('0x1c')],'include':_0x1f9a1d[_0x7e43('0x1f')]?_[_0x7e43('0x1e')](_0x1f9a1d[_0x7e43('0x1f')],function(_0x5cb476){return{'model':db[_0x5cb476[_0x7e43('0x20')]],'as':_0x5cb476['as'],'attributes':_0x5cb476['attributes']};}):[]};}):[]};}):[]:[]})[_0x7e43('0xd')](function(_0x28beb0){logger['info'](_0x7e43('0x24'),_0x552ec7);logger[_0x7e43('0x21')](_0x7e43('0x24'),_0x552ec7,JSON['stringify'](_0x28beb0));_0x1f6232(_0x28beb0);})[_0x7e43('0x16')](function(_0x5a79ef){logger[_0x7e43('0x13')](_0x7e43('0x24'),_0x5a79ef['message'],_0x552ec7);_0x2ba47d(_0x9ab12c['error'](0x1f4,_0x5a79ef[_0x7e43('0x15')]));});});};
\ No newline at end of file
index 6e538e5..8187b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca2c=['../../config/environment','./intDynamics365Configuration.controller','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','post','create','put','delete','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xca2c,0xfd));var _0xcca2=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xca2c[_0x56482c];return _0x5aae7a;};'use strict';var multer=require('multer');var util=require(_0xcca2('0x0'));var path=require(_0xcca2('0x1'));var timeout=require(_0xcca2('0x2'));var express=require('express');var router=express[_0xcca2('0x3')]();var fs_extra=require(_0xcca2('0x4'));var auth=require(_0xcca2('0x5'));var interaction=require(_0xcca2('0x6'));var config=require(_0xcca2('0x7'));var controller=require(_0xcca2('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xcca2('0x9')](_0xcca2('0xa'),auth[_0xcca2('0xb')](),controller['show']);router[_0xcca2('0x9')](_0xcca2('0xc'),auth['isAuthenticated'](),controller[_0xcca2('0xd')]);router[_0xcca2('0x9')](_0xcca2('0xe'),auth[_0xcca2('0xb')](),controller[_0xcca2('0xf')]);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller['getDescriptions']);router[_0xcca2('0x10')]('/',auth[_0xcca2('0xb')](),controller[_0xcca2('0x11')]);router[_0xcca2('0x12')]('/:id',auth[_0xcca2('0xb')](),controller['update']);router[_0xcca2('0x13')](_0xcca2('0xa'),auth[_0xcca2('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xee3a=['getDescriptions','post','create','put','update','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects'];(function(_0x273f88,_0x5d4150){var _0x177ca1=function(_0xf46ec4){while(--_0xf46ec4){_0x273f88['push'](_0x273f88['shift']());}};_0x177ca1(++_0x5d4150);}(_0xee3a,0x13f));var _0xaee3=function(_0x5dae06,_0x343cdc){_0x5dae06=_0x5dae06-0x0;var _0x5a6918=_0xee3a[_0x5dae06];return _0x5a6918;};'use strict';var multer=require(_0xaee3('0x0'));var util=require(_0xaee3('0x1'));var path=require(_0xaee3('0x2'));var timeout=require('connect-timeout');var express=require(_0xaee3('0x3'));var router=express[_0xaee3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xaee3('0x5'));var interaction=require(_0xaee3('0x6'));var config=require(_0xaee3('0x7'));var controller=require(_0xaee3('0x8'));router[_0xaee3('0x9')]('/',auth[_0xaee3('0xa')](),controller[_0xaee3('0xb')]);router['get'](_0xaee3('0xc'),auth[_0xaee3('0xa')](),controller['show']);router['get'](_0xaee3('0xd'),auth[_0xaee3('0xa')](),controller[_0xaee3('0xe')]);router[_0xaee3('0x9')](_0xaee3('0xf'),auth[_0xaee3('0xa')](),controller[_0xaee3('0x10')]);router[_0xaee3('0x9')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0xaee3('0x11')]);router[_0xaee3('0x12')]('/',auth[_0xaee3('0xa')](),controller[_0xaee3('0x13')]);router[_0xaee3('0x14')](_0xaee3('0xc'),auth[_0xaee3('0xa')](),controller[_0xaee3('0x15')]);router['delete']('/:id',auth[_0xaee3('0xa')](),controller[_0xaee3('0x16')]);module[_0xaee3('0x17')]=router;
\ No newline at end of file
index 03748c2..9bf6cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cff=['exports','STRING','phonecall','incident','sequelize'];(function(_0x37ff9d,_0x5b9bb7){var _0x3be3ec=function(_0x577d5c){while(--_0x577d5c){_0x37ff9d['push'](_0x37ff9d['shift']());}};_0x3be3ec(++_0x5b9bb7);}(_0x3cff,0x117));var _0xf3cf=function(_0x582f72,_0x886d8){_0x582f72=_0x582f72-0x0;var _0x4cd5fe=_0x3cff[_0x582f72];return _0x4cd5fe;};'use strict';var Sequelize=require(_0xf3cf('0x0'));module[_0xf3cf('0x1')]={'name':{'type':Sequelize[_0xf3cf('0x2')]},'description':{'type':Sequelize[_0xf3cf('0x2')]},'ticketType':{'type':Sequelize['ENUM']('incident',_0xf3cf('0x3')),'defaultValue':_0xf3cf('0x4')}};
\ No newline at end of file
+var _0xa128=['STRING','ENUM','incident','phonecall','sequelize','exports'];(function(_0x25487d,_0x2235a4){var _0x581ee4=function(_0x7025c1){while(--_0x7025c1){_0x25487d['push'](_0x25487d['shift']());}};_0x581ee4(++_0x2235a4);}(_0xa128,0x142));var _0x8a12=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xa128[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x8a12('0x0'));module[_0x8a12('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8a12('0x2')]},'ticketType':{'type':Sequelize[_0x8a12('0x3')](_0x8a12('0x4'),_0x8a12('0x5')),'defaultValue':_0x8a12('0x4')}};
\ No newline at end of file
index 2e4077f..10fce3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40d6=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Configuration','includeAll','catch','show','rawAttributes','fields','include','find','create','body','params','findOne','getFields','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','desk.js','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','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','apply','save','update','then','destroy','end','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes'];(function(_0x4131f0,_0x4132f5){var _0x203725=function(_0x557747){while(--_0x557747){_0x4131f0['push'](_0x4131f0['shift']());}};_0x203725(++_0x4132f5);}(_0x40d6,0xbf));var _0x640d=function(_0x32d593,_0x1f5e85){_0x32d593=_0x32d593-0x0;var _0x550cd3=_0x40d6[_0x32d593];return _0x550cd3;};'use strict';var emlformat=require(_0x640d('0x0'));var rimraf=require(_0x640d('0x1'));var zipdir=require(_0x640d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x640d('0x3'));var moment=require(_0x640d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x640d('0x5'));var util=require('util');var path=require(_0x640d('0x6'));var sox=require(_0x640d('0x7'));var csv=require('to-csv');var ejs=require(_0x640d('0x8'));var fs=require('fs');var fs_extra=require(_0x640d('0x9'));var _=require(_0x640d('0xa'));var squel=require(_0x640d('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x640d('0xc'));var toCsv=require(_0x640d('0xd'));var querystring=require(_0x640d('0xe'));var Papa=require(_0x640d('0xf'));var Redis=require(_0x640d('0x10'));var authService=require(_0x640d('0x11'));var qs=require(_0x640d('0x12'));var as=require(_0x640d('0x13'));var hardwareService=require(_0x640d('0x14'));var logger=require(_0x640d('0x15'))(_0x640d('0x16'));var utils=require(_0x640d('0x17'));var config=require(_0x640d('0x18'));var licenseUtil=require(_0x640d('0x19'));var db=require(_0x640d('0x1a'))['db'];function respondWithStatusCode(_0x18d198,_0x4a9a1e){_0x4a9a1e=_0x4a9a1e||0xcc;return function(_0x1f832f){if(_0x1f832f){return _0x18d198[_0x640d('0x1b')](_0x4a9a1e);}return _0x18d198[_0x640d('0x1c')](_0x4a9a1e)['end']();};}function respondWithResult(_0xcc59e5,_0x5f0431){_0x5f0431=_0x5f0431||0xc8;return function(_0x389f8a){if(_0x389f8a){return _0xcc59e5[_0x640d('0x1c')](_0x5f0431)[_0x640d('0x1d')](_0x389f8a);}};}function respondWithFilteredResult(_0x5109e5,_0x1b1e5a){return function(_0x2b7c2f){if(_0x2b7c2f){var _0x4240de=typeof _0x1b1e5a['offset']===_0x640d('0x1e')&&typeof _0x1b1e5a[_0x640d('0x1f')]===_0x640d('0x1e');var _0x16da84=_0x2b7c2f['count'];var _0x5660db=_0x4240de?0x0:_0x1b1e5a[_0x640d('0x20')];var _0x3561ca=_0x4240de?_0x2b7c2f[_0x640d('0x21')]:_0x1b1e5a['offset']+_0x1b1e5a[_0x640d('0x1f')];var _0x3b2a23;if(_0x3561ca>=_0x16da84){_0x3561ca=_0x16da84;_0x3b2a23=0xc8;}else{_0x3b2a23=0xce;}_0x5109e5[_0x640d('0x1c')](_0x3b2a23);return _0x5109e5[_0x640d('0x22')]('Content-Range',_0x5660db+'-'+_0x3561ca+'/'+_0x16da84)[_0x640d('0x1d')](_0x2b7c2f);}return null;};}function patchUpdates(_0x39a80c){return function(_0x3dd9cf){try{jsonpatch[_0x640d('0x23')](_0x3dd9cf,_0x39a80c,!![]);}catch(_0x5a98e2){return BPromise['reject'](_0x5a98e2);}return _0x3dd9cf[_0x640d('0x24')]();};}function saveUpdates(_0x42134b,_0x1d6e23){return function(_0x2d6ec4){if(_0x2d6ec4){return _0x2d6ec4[_0x640d('0x25')](_0x42134b)[_0x640d('0x26')](function(_0x92e58f){return _0x92e58f;});}return null;};}function removeEntity(_0x334636,_0x41ba67){return function(_0x357d77){if(_0x357d77){return _0x357d77[_0x640d('0x27')]()[_0x640d('0x26')](function(){_0x334636[_0x640d('0x1c')](0xcc)[_0x640d('0x28')]();});}};}function handleEntityNotFound(_0x13aaa7,_0x4b1f19){return function(_0xd86a82){if(!_0xd86a82){_0x13aaa7[_0x640d('0x1b')](0x194);}return _0xd86a82;};}function handleError(_0x414274,_0xb3c546){_0xb3c546=_0xb3c546||0x1f4;return function(_0x8eeb5f){logger['error'](_0x8eeb5f[_0x640d('0x29')]);if(_0x8eeb5f[_0x640d('0x2a')]){delete _0x8eeb5f['name'];}_0x414274[_0x640d('0x1c')](_0xb3c546)[_0x640d('0x2b')](_0x8eeb5f);};}exports[_0x640d('0x2c')]=function(_0x245592,_0x5752ed){var _0x567076={},_0x2cc696={},_0x43ce7a={'count':0x0,'rows':[]};var _0x16945d=_[_0x640d('0x2d')](db['Dynamics365Configuration']['rawAttributes'],function(_0x26a227){return{'name':_0x26a227[_0x640d('0x2e')],'type':_0x26a227[_0x640d('0x2f')][_0x640d('0x30')]};});_0x2cc696['model']=_['map'](_0x16945d,'name');_0x2cc696[_0x640d('0x31')]=_[_0x640d('0x32')](_0x245592['query']);_0x2cc696[_0x640d('0x33')]=_[_0x640d('0x34')](_0x2cc696[_0x640d('0x35')],_0x2cc696[_0x640d('0x31')]);_0x567076[_0x640d('0x36')]=_[_0x640d('0x34')](_0x2cc696[_0x640d('0x35')],qs['fields'](_0x245592[_0x640d('0x31')]['fields']));_0x567076[_0x640d('0x36')]=_0x567076[_0x640d('0x36')][_0x640d('0x37')]?_0x567076[_0x640d('0x36')]:_0x2cc696[_0x640d('0x35')];if(!_0x245592[_0x640d('0x31')][_0x640d('0x38')](_0x640d('0x39'))){_0x567076[_0x640d('0x1f')]=qs[_0x640d('0x1f')](_0x245592[_0x640d('0x31')][_0x640d('0x1f')]);_0x567076[_0x640d('0x20')]=qs[_0x640d('0x20')](_0x245592[_0x640d('0x31')]['offset']);}_0x567076[_0x640d('0x3a')]=qs[_0x640d('0x3b')](_0x245592[_0x640d('0x31')][_0x640d('0x3b')]);_0x567076[_0x640d('0x3c')]=qs[_0x640d('0x33')](_[_0x640d('0x3d')](_0x245592[_0x640d('0x31')],_0x2cc696['filters']),_0x16945d);if(_0x245592[_0x640d('0x31')][_0x640d('0x3e')]){_0x567076[_0x640d('0x3c')]=_[_0x640d('0x3f')](_0x567076['where'],{'$or':_[_0x640d('0x2d')](_0x16945d,function(_0x5de38c){if(_0x5de38c['type']!==_0x640d('0x40')){var _0x598b30={};_0x598b30[_0x5de38c['name']]={'$like':'%'+_0x245592[_0x640d('0x31')][_0x640d('0x3e')]+'%'};return _0x598b30;}})});}_0x567076=_['merge']({},_0x567076,_0x245592[_0x640d('0x41')]);var _0x5eac7e={'where':_0x567076[_0x640d('0x3c')]};return db[_0x640d('0x42')][_0x640d('0x21')](_0x5eac7e)[_0x640d('0x26')](function(_0x1677fc){_0x43ce7a['count']=_0x1677fc;if(_0x245592[_0x640d('0x31')][_0x640d('0x43')]){_0x567076['include']=[{'all':!![]}];}return db['Dynamics365Configuration']['findAll'](_0x567076);})[_0x640d('0x26')](function(_0x252218){_0x43ce7a['rows']=_0x252218;return _0x43ce7a;})[_0x640d('0x26')](respondWithFilteredResult(_0x5752ed,_0x567076))[_0x640d('0x44')](handleError(_0x5752ed,null));};exports[_0x640d('0x45')]=function(_0x260a55,_0x503d91){var _0x508caa={'raw':![],'where':{'id':_0x260a55['params']['id']}},_0x402a2a={};_0x402a2a[_0x640d('0x35')]=_[_0x640d('0x32')](db[_0x640d('0x42')][_0x640d('0x46')]);_0x402a2a[_0x640d('0x31')]=_[_0x640d('0x32')](_0x260a55[_0x640d('0x31')]);_0x402a2a[_0x640d('0x33')]=_['intersection'](_0x402a2a[_0x640d('0x35')],_0x402a2a[_0x640d('0x31')]);_0x508caa[_0x640d('0x36')]=_[_0x640d('0x34')](_0x402a2a['model'],qs[_0x640d('0x47')](_0x260a55[_0x640d('0x31')][_0x640d('0x47')]));_0x508caa[_0x640d('0x36')]=_0x508caa[_0x640d('0x36')][_0x640d('0x37')]?_0x508caa[_0x640d('0x36')]:_0x402a2a[_0x640d('0x35')];if(_0x260a55[_0x640d('0x31')]['includeAll']){_0x508caa[_0x640d('0x48')]=[{'all':!![]}];}_0x508caa=_[_0x640d('0x3f')]({},_0x508caa,_0x260a55['options']);return db[_0x640d('0x42')][_0x640d('0x49')](_0x508caa)[_0x640d('0x26')](handleEntityNotFound(_0x503d91,null))['then'](respondWithResult(_0x503d91,null))[_0x640d('0x44')](handleError(_0x503d91,null));};exports[_0x640d('0x4a')]=function(_0x383051,_0x334a66){return db['Dynamics365Configuration'][_0x640d('0x4a')](_0x383051[_0x640d('0x4b')],{})[_0x640d('0x26')](respondWithResult(_0x334a66,0xc9))[_0x640d('0x44')](handleError(_0x334a66,null));};exports['update']=function(_0x5f1415,_0x1c1072){if(_0x5f1415['body']['id']){delete _0x5f1415[_0x640d('0x4b')]['id'];}return db[_0x640d('0x42')][_0x640d('0x49')]({'where':{'id':_0x5f1415[_0x640d('0x4c')]['id']}})[_0x640d('0x26')](handleEntityNotFound(_0x1c1072,null))['then'](saveUpdates(_0x5f1415[_0x640d('0x4b')],null))[_0x640d('0x26')](respondWithResult(_0x1c1072,null))[_0x640d('0x44')](handleError(_0x1c1072,null));};exports[_0x640d('0x27')]=function(_0x3ca73a,_0x5ddb39){return db[_0x640d('0x42')][_0x640d('0x49')]({'where':{'id':_0x3ca73a[_0x640d('0x4c')]['id']}})[_0x640d('0x26')](handleEntityNotFound(_0x5ddb39,null))['then'](removeEntity(_0x5ddb39,null))[_0x640d('0x44')](handleError(_0x5ddb39,null));};exports['getFields']=function(_0x5944bf,_0x2882b2,_0x17e96d){var _0x2c8155={};var _0x937c7d={};var _0x3a578b;var _0x22dc5f;return db[_0x640d('0x42')][_0x640d('0x4d')]({'where':{'id':_0x5944bf[_0x640d('0x4c')]['id']}})[_0x640d('0x26')](handleEntityNotFound(_0x2882b2,null))[_0x640d('0x26')](function(_0x1d0508){if(_0x1d0508){_0x3a578b=_0x1d0508;_0x937c7d[_0x640d('0x35')]=_[_0x640d('0x32')](db['Dynamics365Field']['rawAttributes']);_0x937c7d['query']=_[_0x640d('0x32')](_0x5944bf[_0x640d('0x31')]);_0x937c7d[_0x640d('0x33')]=_[_0x640d('0x34')](_0x937c7d['model'],_0x937c7d[_0x640d('0x31')]);_0x2c8155[_0x640d('0x36')]=_[_0x640d('0x34')](_0x937c7d[_0x640d('0x35')],qs[_0x640d('0x47')](_0x5944bf[_0x640d('0x31')][_0x640d('0x47')]));_0x2c8155[_0x640d('0x36')]=_0x2c8155[_0x640d('0x36')][_0x640d('0x37')]?_0x2c8155['attributes']:_0x937c7d[_0x640d('0x35')];_0x2c8155[_0x640d('0x3a')]=qs['sort'](_0x5944bf[_0x640d('0x31')][_0x640d('0x3b')]);_0x2c8155['where']=qs[_0x640d('0x33')](_[_0x640d('0x3d')](_0x5944bf[_0x640d('0x31')],_0x937c7d['filters']));if(_0x5944bf[_0x640d('0x31')]['filter']){_0x2c8155[_0x640d('0x3c')]=_[_0x640d('0x3f')](_0x2c8155[_0x640d('0x3c')],{'$or':_[_0x640d('0x2d')](_0x2c8155['attributes'],function(_0x87ba5a){var _0x55288f={};_0x55288f[_0x87ba5a]={'$like':'%'+_0x5944bf[_0x640d('0x31')][_0x640d('0x3e')]+'%'};return _0x55288f;})});}_0x2c8155=_['merge']({},_0x2c8155,_0x5944bf[_0x640d('0x41')]);return _0x3a578b[_0x640d('0x4e')](_0x2c8155);}})[_0x640d('0x26')](function(_0xa4dba){if(_0xa4dba){_0x22dc5f=_0xa4dba[_0x640d('0x37')];if(!_0x5944bf[_0x640d('0x31')][_0x640d('0x38')](_0x640d('0x39'))){_0x2c8155['limit']=qs[_0x640d('0x1f')](_0x5944bf[_0x640d('0x31')]['limit']);_0x2c8155['offset']=qs[_0x640d('0x20')](_0x5944bf[_0x640d('0x31')][_0x640d('0x20')]);}return _0x3a578b['getFields'](_0x2c8155);}})[_0x640d('0x26')](function(_0x54fab4){if(_0x54fab4){return _0x54fab4?{'count':_0x22dc5f,'rows':_0x54fab4}:null;}})[_0x640d('0x26')](respondWithResult(_0x2882b2,null))[_0x640d('0x44')](handleError(_0x2882b2,null));};exports[_0x640d('0x4f')]=function(_0x2d35bb,_0x3eac51,_0x149cf3){var _0x4b56d4={};var _0x153497={};var _0x9e478b;var _0x1482ea;return db[_0x640d('0x42')][_0x640d('0x4d')]({'where':{'id':_0x2d35bb[_0x640d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3eac51,null))[_0x640d('0x26')](function(_0x453855){if(_0x453855){_0x9e478b=_0x453855;_0x153497[_0x640d('0x35')]=_[_0x640d('0x32')](db[_0x640d('0x50')]['rawAttributes']);_0x153497[_0x640d('0x31')]=_[_0x640d('0x32')](_0x2d35bb[_0x640d('0x31')]);_0x153497['filters']=_['intersection'](_0x153497['model'],_0x153497[_0x640d('0x31')]);_0x4b56d4[_0x640d('0x36')]=_['intersection'](_0x153497[_0x640d('0x35')],qs['fields'](_0x2d35bb[_0x640d('0x31')]['fields']));_0x4b56d4['attributes']=_0x4b56d4['attributes'][_0x640d('0x37')]?_0x4b56d4[_0x640d('0x36')]:_0x153497['model'];_0x4b56d4['order']=qs['sort'](_0x2d35bb[_0x640d('0x31')][_0x640d('0x3b')]);_0x4b56d4[_0x640d('0x3c')]=qs['filters'](_[_0x640d('0x3d')](_0x2d35bb['query'],_0x153497['filters']));if(_0x2d35bb[_0x640d('0x31')][_0x640d('0x3e')]){_0x4b56d4[_0x640d('0x3c')]=_[_0x640d('0x3f')](_0x4b56d4['where'],{'$or':_[_0x640d('0x2d')](_0x4b56d4[_0x640d('0x36')],function(_0x1b1e53){var _0x245188={};_0x245188[_0x1b1e53]={'$like':'%'+_0x2d35bb[_0x640d('0x31')][_0x640d('0x3e')]+'%'};return _0x245188;})});}_0x4b56d4=_[_0x640d('0x3f')]({},_0x4b56d4,_0x2d35bb[_0x640d('0x41')]);return _0x9e478b[_0x640d('0x4f')](_0x4b56d4);}})[_0x640d('0x26')](function(_0x30480d){if(_0x30480d){_0x1482ea=_0x30480d[_0x640d('0x37')];if(!_0x2d35bb['query'][_0x640d('0x38')](_0x640d('0x39'))){_0x4b56d4[_0x640d('0x1f')]=qs[_0x640d('0x1f')](_0x2d35bb[_0x640d('0x31')][_0x640d('0x1f')]);_0x4b56d4[_0x640d('0x20')]=qs[_0x640d('0x20')](_0x2d35bb[_0x640d('0x31')][_0x640d('0x20')]);}return _0x9e478b['getSubjects'](_0x4b56d4);}})[_0x640d('0x26')](function(_0x1f6135){if(_0x1f6135){return _0x1f6135?{'count':_0x1482ea,'rows':_0x1f6135}:null;}})[_0x640d('0x26')](respondWithResult(_0x3eac51,null))[_0x640d('0x44')](handleError(_0x3eac51,null));};exports[_0x640d('0x51')]=function(_0x322d6e,_0x5b5014,_0x50ec2e){var _0x1da66c={};var _0x226d1a={};var _0x2ae70c;var _0x582c35;return db[_0x640d('0x42')][_0x640d('0x4d')]({'where':{'id':_0x322d6e[_0x640d('0x4c')]['id']}})[_0x640d('0x26')](handleEntityNotFound(_0x5b5014,null))['then'](function(_0x26fcf4){if(_0x26fcf4){_0x2ae70c=_0x26fcf4;_0x226d1a[_0x640d('0x35')]=_[_0x640d('0x32')](db[_0x640d('0x50')][_0x640d('0x46')]);_0x226d1a[_0x640d('0x31')]=_['keys'](_0x322d6e[_0x640d('0x31')]);_0x226d1a[_0x640d('0x33')]=_[_0x640d('0x34')](_0x226d1a[_0x640d('0x35')],_0x226d1a[_0x640d('0x31')]);_0x1da66c[_0x640d('0x36')]=_[_0x640d('0x34')](_0x226d1a['model'],qs[_0x640d('0x47')](_0x322d6e['query'][_0x640d('0x47')]));_0x1da66c['attributes']=_0x1da66c[_0x640d('0x36')][_0x640d('0x37')]?_0x1da66c[_0x640d('0x36')]:_0x226d1a[_0x640d('0x35')];_0x1da66c[_0x640d('0x3a')]=qs[_0x640d('0x3b')](_0x322d6e[_0x640d('0x31')][_0x640d('0x3b')]);_0x1da66c['where']=qs[_0x640d('0x33')](_[_0x640d('0x3d')](_0x322d6e[_0x640d('0x31')],_0x226d1a['filters']));if(_0x322d6e[_0x640d('0x31')][_0x640d('0x3e')]){_0x1da66c[_0x640d('0x3c')]=_[_0x640d('0x3f')](_0x1da66c[_0x640d('0x3c')],{'$or':_[_0x640d('0x2d')](_0x1da66c[_0x640d('0x36')],function(_0x5db441){var _0x18d781={};_0x18d781[_0x5db441]={'$like':'%'+_0x322d6e[_0x640d('0x31')][_0x640d('0x3e')]+'%'};return _0x18d781;})});}_0x1da66c=_[_0x640d('0x3f')]({},_0x1da66c,_0x322d6e['options']);return _0x2ae70c['getDescriptions'](_0x1da66c);}})[_0x640d('0x26')](function(_0x406b7c){if(_0x406b7c){_0x582c35=_0x406b7c[_0x640d('0x37')];if(!_0x322d6e[_0x640d('0x31')]['hasOwnProperty'](_0x640d('0x39'))){_0x1da66c[_0x640d('0x1f')]=qs[_0x640d('0x1f')](_0x322d6e['query'][_0x640d('0x1f')]);_0x1da66c[_0x640d('0x20')]=qs['offset'](_0x322d6e[_0x640d('0x31')][_0x640d('0x20')]);}return _0x2ae70c[_0x640d('0x51')](_0x1da66c);}})[_0x640d('0x26')](function(_0x4f4726){if(_0x4f4726){return _0x4f4726?{'count':_0x582c35,'rows':_0x4f4726}:null;}})[_0x640d('0x26')](respondWithResult(_0x5b5014,null))['catch'](handleError(_0x5b5014,null));};
\ No newline at end of file
+var _0x5307=['count','limit','set','Content-Range','apply','reject','update','then','destroy','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','getFields','Dynamics365Field','pick','getSubjects','findOne','order','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x3992d8,_0x308cfc){var _0x5d863c=function(_0x213817){while(--_0x213817){_0x3992d8['push'](_0x3992d8['shift']());}};_0x5d863c(++_0x308cfc);}(_0x5307,0x171));var _0x7530=function(_0x43098,_0x2e9b3f){_0x43098=_0x43098-0x0;var _0x4a3acc=_0x5307[_0x43098];return _0x4a3acc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7530('0x0'));var jsonpatch=require(_0x7530('0x1'));var rp=require(_0x7530('0x2'));var moment=require(_0x7530('0x3'));var BPromise=require(_0x7530('0x4'));var Mustache=require(_0x7530('0x5'));var util=require(_0x7530('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7530('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7530('0x8'));var squel=require(_0x7530('0x9'));var crypto=require(_0x7530('0xa'));var jsforce=require(_0x7530('0xb'));var deskjs=require(_0x7530('0xc'));var toCsv=require(_0x7530('0xd'));var querystring=require(_0x7530('0xe'));var Papa=require(_0x7530('0xf'));var Redis=require(_0x7530('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7530('0x11'));var as=require(_0x7530('0x12'));var hardwareService=require(_0x7530('0x13'));var logger=require(_0x7530('0x14'))(_0x7530('0x15'));var utils=require(_0x7530('0x16'));var config=require(_0x7530('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7530('0x18'))['db'];function respondWithStatusCode(_0x238942,_0x5e4912){_0x5e4912=_0x5e4912||0xcc;return function(_0xd47999){if(_0xd47999){return _0x238942[_0x7530('0x19')](_0x5e4912);}return _0x238942[_0x7530('0x1a')](_0x5e4912)[_0x7530('0x1b')]();};}function respondWithResult(_0x5a4870,_0x4c7d7c){_0x4c7d7c=_0x4c7d7c||0xc8;return function(_0x53a82f){if(_0x53a82f){return _0x5a4870[_0x7530('0x1a')](_0x4c7d7c)[_0x7530('0x1c')](_0x53a82f);}};}function respondWithFilteredResult(_0xf4e337,_0x458f9b){return function(_0x52e67a){if(_0x52e67a){var _0x359b53=typeof _0x458f9b[_0x7530('0x1d')]===_0x7530('0x1e')&&typeof _0x458f9b['limit']===_0x7530('0x1e');var _0x158018=_0x52e67a[_0x7530('0x1f')];var _0x49c805=_0x359b53?0x0:_0x458f9b[_0x7530('0x1d')];var _0x5673cf=_0x359b53?_0x52e67a[_0x7530('0x1f')]:_0x458f9b[_0x7530('0x1d')]+_0x458f9b[_0x7530('0x20')];var _0x58e2ce;if(_0x5673cf>=_0x158018){_0x5673cf=_0x158018;_0x58e2ce=0xc8;}else{_0x58e2ce=0xce;}_0xf4e337[_0x7530('0x1a')](_0x58e2ce);return _0xf4e337[_0x7530('0x21')](_0x7530('0x22'),_0x49c805+'-'+_0x5673cf+'/'+_0x158018)['json'](_0x52e67a);}return null;};}function patchUpdates(_0x467e4e){return function(_0x38ad35){try{jsonpatch[_0x7530('0x23')](_0x38ad35,_0x467e4e,!![]);}catch(_0x4f6b42){return BPromise[_0x7530('0x24')](_0x4f6b42);}return _0x38ad35['save']();};}function saveUpdates(_0x474000,_0x3bf832){return function(_0x5c151b){if(_0x5c151b){return _0x5c151b[_0x7530('0x25')](_0x474000)[_0x7530('0x26')](function(_0x56e9b2){return _0x56e9b2;});}return null;};}function removeEntity(_0x28b6d6,_0x20409c){return function(_0xf64a5d){if(_0xf64a5d){return _0xf64a5d[_0x7530('0x27')]()['then'](function(){_0x28b6d6[_0x7530('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x392c99,_0xfab369){return function(_0xf6d0c8){if(!_0xf6d0c8){_0x392c99[_0x7530('0x19')](0x194);}return _0xf6d0c8;};}function handleError(_0x1c6983,_0x446e0f){_0x446e0f=_0x446e0f||0x1f4;return function(_0x805ce){logger['error'](_0x805ce['stack']);if(_0x805ce[_0x7530('0x28')]){delete _0x805ce[_0x7530('0x28')];}_0x1c6983[_0x7530('0x1a')](_0x446e0f)[_0x7530('0x29')](_0x805ce);};}exports[_0x7530('0x2a')]=function(_0x1fbf55,_0x49defe){var _0x19e614={},_0x3c4212={},_0x2eb0ae={'count':0x0,'rows':[]};var _0x5f1355=_[_0x7530('0x2b')](db[_0x7530('0x2c')][_0x7530('0x2d')],function(_0x307af4){return{'name':_0x307af4[_0x7530('0x2e')],'type':_0x307af4[_0x7530('0x2f')][_0x7530('0x30')]};});_0x3c4212[_0x7530('0x31')]=_[_0x7530('0x2b')](_0x5f1355,_0x7530('0x28'));_0x3c4212['query']=_['keys'](_0x1fbf55['query']);_0x3c4212[_0x7530('0x32')]=_['intersection'](_0x3c4212[_0x7530('0x31')],_0x3c4212[_0x7530('0x33')]);_0x19e614[_0x7530('0x34')]=_[_0x7530('0x35')](_0x3c4212[_0x7530('0x31')],qs[_0x7530('0x36')](_0x1fbf55[_0x7530('0x33')][_0x7530('0x36')]));_0x19e614['attributes']=_0x19e614[_0x7530('0x34')][_0x7530('0x37')]?_0x19e614[_0x7530('0x34')]:_0x3c4212[_0x7530('0x31')];if(!_0x1fbf55[_0x7530('0x33')][_0x7530('0x38')](_0x7530('0x39'))){_0x19e614['limit']=qs[_0x7530('0x20')](_0x1fbf55['query'][_0x7530('0x20')]);_0x19e614[_0x7530('0x1d')]=qs[_0x7530('0x1d')](_0x1fbf55[_0x7530('0x33')][_0x7530('0x1d')]);}_0x19e614['order']=qs[_0x7530('0x3a')](_0x1fbf55[_0x7530('0x33')][_0x7530('0x3a')]);_0x19e614[_0x7530('0x3b')]=qs[_0x7530('0x32')](_['pick'](_0x1fbf55[_0x7530('0x33')],_0x3c4212[_0x7530('0x32')]),_0x5f1355);if(_0x1fbf55[_0x7530('0x33')][_0x7530('0x3c')]){_0x19e614[_0x7530('0x3b')]=_[_0x7530('0x3d')](_0x19e614[_0x7530('0x3b')],{'$or':_[_0x7530('0x2b')](_0x5f1355,function(_0xfb0955){if(_0xfb0955[_0x7530('0x2f')]!=='VIRTUAL'){var _0x49c607={};_0x49c607[_0xfb0955[_0x7530('0x28')]]={'$like':'%'+_0x1fbf55['query'][_0x7530('0x3c')]+'%'};return _0x49c607;}})});}_0x19e614=_[_0x7530('0x3d')]({},_0x19e614,_0x1fbf55[_0x7530('0x3e')]);var _0x44043d={'where':_0x19e614[_0x7530('0x3b')]};return db[_0x7530('0x2c')][_0x7530('0x1f')](_0x44043d)[_0x7530('0x26')](function(_0x26bc43){_0x2eb0ae[_0x7530('0x1f')]=_0x26bc43;if(_0x1fbf55[_0x7530('0x33')][_0x7530('0x3f')]){_0x19e614[_0x7530('0x40')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x7530('0x41')](_0x19e614);})['then'](function(_0x4acb7d){_0x2eb0ae['rows']=_0x4acb7d;return _0x2eb0ae;})[_0x7530('0x26')](respondWithFilteredResult(_0x49defe,_0x19e614))[_0x7530('0x42')](handleError(_0x49defe,null));};exports[_0x7530('0x43')]=function(_0x2eb2cc,_0x4ef00b){var _0x4fa093={'raw':![],'where':{'id':_0x2eb2cc[_0x7530('0x44')]['id']}},_0x5f3680={};_0x5f3680['model']=_[_0x7530('0x45')](db[_0x7530('0x2c')]['rawAttributes']);_0x5f3680[_0x7530('0x33')]=_['keys'](_0x2eb2cc[_0x7530('0x33')]);_0x5f3680['filters']=_[_0x7530('0x35')](_0x5f3680[_0x7530('0x31')],_0x5f3680[_0x7530('0x33')]);_0x4fa093['attributes']=_[_0x7530('0x35')](_0x5f3680[_0x7530('0x31')],qs[_0x7530('0x36')](_0x2eb2cc['query'][_0x7530('0x36')]));_0x4fa093[_0x7530('0x34')]=_0x4fa093[_0x7530('0x34')][_0x7530('0x37')]?_0x4fa093[_0x7530('0x34')]:_0x5f3680[_0x7530('0x31')];if(_0x2eb2cc[_0x7530('0x33')][_0x7530('0x3f')]){_0x4fa093[_0x7530('0x40')]=[{'all':!![]}];}_0x4fa093=_[_0x7530('0x3d')]({},_0x4fa093,_0x2eb2cc[_0x7530('0x3e')]);return db['Dynamics365Configuration'][_0x7530('0x46')](_0x4fa093)['then'](handleEntityNotFound(_0x4ef00b,null))[_0x7530('0x26')](respondWithResult(_0x4ef00b,null))[_0x7530('0x42')](handleError(_0x4ef00b,null));};exports[_0x7530('0x47')]=function(_0x19d2ae,_0x52a092){return db[_0x7530('0x2c')][_0x7530('0x47')](_0x19d2ae[_0x7530('0x48')],{})[_0x7530('0x26')](respondWithResult(_0x52a092,0xc9))['catch'](handleError(_0x52a092,null));};exports[_0x7530('0x25')]=function(_0x18529d,_0xda5bca){if(_0x18529d[_0x7530('0x48')]['id']){delete _0x18529d[_0x7530('0x48')]['id'];}return db['Dynamics365Configuration']['find']({'where':{'id':_0x18529d[_0x7530('0x44')]['id']}})[_0x7530('0x26')](handleEntityNotFound(_0xda5bca,null))[_0x7530('0x26')](saveUpdates(_0x18529d['body'],null))[_0x7530('0x26')](respondWithResult(_0xda5bca,null))[_0x7530('0x42')](handleError(_0xda5bca,null));};exports[_0x7530('0x27')]=function(_0x5ef0ea,_0xcf0a1){return db[_0x7530('0x2c')]['find']({'where':{'id':_0x5ef0ea[_0x7530('0x44')]['id']}})[_0x7530('0x26')](handleEntityNotFound(_0xcf0a1,null))['then'](removeEntity(_0xcf0a1,null))[_0x7530('0x42')](handleError(_0xcf0a1,null));};exports[_0x7530('0x49')]=function(_0x2ff437,_0x297d55,_0x4022c1){var _0x1fef29={};var _0x383725={};var _0x4d39c7;var _0x824024;return db[_0x7530('0x2c')]['findOne']({'where':{'id':_0x2ff437[_0x7530('0x44')]['id']}})['then'](handleEntityNotFound(_0x297d55,null))[_0x7530('0x26')](function(_0x9092a3){if(_0x9092a3){_0x4d39c7=_0x9092a3;_0x383725[_0x7530('0x31')]=_[_0x7530('0x45')](db[_0x7530('0x4a')][_0x7530('0x2d')]);_0x383725['query']=_[_0x7530('0x45')](_0x2ff437[_0x7530('0x33')]);_0x383725[_0x7530('0x32')]=_[_0x7530('0x35')](_0x383725[_0x7530('0x31')],_0x383725[_0x7530('0x33')]);_0x1fef29[_0x7530('0x34')]=_['intersection'](_0x383725[_0x7530('0x31')],qs[_0x7530('0x36')](_0x2ff437[_0x7530('0x33')][_0x7530('0x36')]));_0x1fef29[_0x7530('0x34')]=_0x1fef29[_0x7530('0x34')][_0x7530('0x37')]?_0x1fef29[_0x7530('0x34')]:_0x383725[_0x7530('0x31')];_0x1fef29['order']=qs[_0x7530('0x3a')](_0x2ff437[_0x7530('0x33')]['sort']);_0x1fef29[_0x7530('0x3b')]=qs[_0x7530('0x32')](_[_0x7530('0x4b')](_0x2ff437[_0x7530('0x33')],_0x383725[_0x7530('0x32')]));if(_0x2ff437[_0x7530('0x33')][_0x7530('0x3c')]){_0x1fef29[_0x7530('0x3b')]=_['merge'](_0x1fef29[_0x7530('0x3b')],{'$or':_[_0x7530('0x2b')](_0x1fef29[_0x7530('0x34')],function(_0x2adb4){var _0x2c93a6={};_0x2c93a6[_0x2adb4]={'$like':'%'+_0x2ff437[_0x7530('0x33')][_0x7530('0x3c')]+'%'};return _0x2c93a6;})});}_0x1fef29=_[_0x7530('0x3d')]({},_0x1fef29,_0x2ff437[_0x7530('0x3e')]);return _0x4d39c7[_0x7530('0x49')](_0x1fef29);}})[_0x7530('0x26')](function(_0x275546){if(_0x275546){_0x824024=_0x275546[_0x7530('0x37')];if(!_0x2ff437[_0x7530('0x33')][_0x7530('0x38')](_0x7530('0x39'))){_0x1fef29[_0x7530('0x20')]=qs[_0x7530('0x20')](_0x2ff437['query'][_0x7530('0x20')]);_0x1fef29[_0x7530('0x1d')]=qs[_0x7530('0x1d')](_0x2ff437['query'][_0x7530('0x1d')]);}return _0x4d39c7[_0x7530('0x49')](_0x1fef29);}})[_0x7530('0x26')](function(_0x4b3228){if(_0x4b3228){return _0x4b3228?{'count':_0x824024,'rows':_0x4b3228}:null;}})[_0x7530('0x26')](respondWithResult(_0x297d55,null))[_0x7530('0x42')](handleError(_0x297d55,null));};exports[_0x7530('0x4c')]=function(_0x19b1ba,_0x240d21,_0x4edb3b){var _0x32a02b={};var _0x525fa1={};var _0x38b949;var _0x20e221;return db[_0x7530('0x2c')][_0x7530('0x4d')]({'where':{'id':_0x19b1ba[_0x7530('0x44')]['id']}})[_0x7530('0x26')](handleEntityNotFound(_0x240d21,null))[_0x7530('0x26')](function(_0x5347a3){if(_0x5347a3){_0x38b949=_0x5347a3;_0x525fa1[_0x7530('0x31')]=_[_0x7530('0x45')](db[_0x7530('0x4a')][_0x7530('0x2d')]);_0x525fa1['query']=_[_0x7530('0x45')](_0x19b1ba[_0x7530('0x33')]);_0x525fa1[_0x7530('0x32')]=_[_0x7530('0x35')](_0x525fa1[_0x7530('0x31')],_0x525fa1[_0x7530('0x33')]);_0x32a02b['attributes']=_[_0x7530('0x35')](_0x525fa1[_0x7530('0x31')],qs[_0x7530('0x36')](_0x19b1ba[_0x7530('0x33')]['fields']));_0x32a02b[_0x7530('0x34')]=_0x32a02b[_0x7530('0x34')][_0x7530('0x37')]?_0x32a02b['attributes']:_0x525fa1[_0x7530('0x31')];_0x32a02b[_0x7530('0x4e')]=qs[_0x7530('0x3a')](_0x19b1ba[_0x7530('0x33')][_0x7530('0x3a')]);_0x32a02b[_0x7530('0x3b')]=qs[_0x7530('0x32')](_[_0x7530('0x4b')](_0x19b1ba[_0x7530('0x33')],_0x525fa1[_0x7530('0x32')]));if(_0x19b1ba[_0x7530('0x33')][_0x7530('0x3c')]){_0x32a02b['where']=_[_0x7530('0x3d')](_0x32a02b[_0x7530('0x3b')],{'$or':_[_0x7530('0x2b')](_0x32a02b[_0x7530('0x34')],function(_0x42f88a){var _0x4f7e6f={};_0x4f7e6f[_0x42f88a]={'$like':'%'+_0x19b1ba[_0x7530('0x33')][_0x7530('0x3c')]+'%'};return _0x4f7e6f;})});}_0x32a02b=_['merge']({},_0x32a02b,_0x19b1ba[_0x7530('0x3e')]);return _0x38b949[_0x7530('0x4c')](_0x32a02b);}})['then'](function(_0x5eb75c){if(_0x5eb75c){_0x20e221=_0x5eb75c[_0x7530('0x37')];if(!_0x19b1ba[_0x7530('0x33')][_0x7530('0x38')](_0x7530('0x39'))){_0x32a02b[_0x7530('0x20')]=qs['limit'](_0x19b1ba['query'][_0x7530('0x20')]);_0x32a02b[_0x7530('0x1d')]=qs[_0x7530('0x1d')](_0x19b1ba[_0x7530('0x33')][_0x7530('0x1d')]);}return _0x38b949[_0x7530('0x4c')](_0x32a02b);}})[_0x7530('0x26')](function(_0xeddce0){if(_0xeddce0){return _0xeddce0?{'count':_0x20e221,'rows':_0xeddce0}:null;}})[_0x7530('0x26')](respondWithResult(_0x240d21,null))['catch'](handleError(_0x240d21,null));};exports[_0x7530('0x4f')]=function(_0x3aad4d,_0xa42648,_0x1d76a1){var _0x1be3e9={};var _0x3253c1={};var _0x1afbb8;var _0x4170db;return db['Dynamics365Configuration'][_0x7530('0x4d')]({'where':{'id':_0x3aad4d[_0x7530('0x44')]['id']}})[_0x7530('0x26')](handleEntityNotFound(_0xa42648,null))['then'](function(_0x3e55a5){if(_0x3e55a5){_0x1afbb8=_0x3e55a5;_0x3253c1[_0x7530('0x31')]=_[_0x7530('0x45')](db[_0x7530('0x4a')][_0x7530('0x2d')]);_0x3253c1[_0x7530('0x33')]=_[_0x7530('0x45')](_0x3aad4d[_0x7530('0x33')]);_0x3253c1[_0x7530('0x32')]=_[_0x7530('0x35')](_0x3253c1[_0x7530('0x31')],_0x3253c1[_0x7530('0x33')]);_0x1be3e9[_0x7530('0x34')]=_['intersection'](_0x3253c1[_0x7530('0x31')],qs['fields'](_0x3aad4d[_0x7530('0x33')][_0x7530('0x36')]));_0x1be3e9[_0x7530('0x34')]=_0x1be3e9['attributes'][_0x7530('0x37')]?_0x1be3e9[_0x7530('0x34')]:_0x3253c1['model'];_0x1be3e9[_0x7530('0x4e')]=qs[_0x7530('0x3a')](_0x3aad4d['query'][_0x7530('0x3a')]);_0x1be3e9[_0x7530('0x3b')]=qs[_0x7530('0x32')](_['pick'](_0x3aad4d[_0x7530('0x33')],_0x3253c1[_0x7530('0x32')]));if(_0x3aad4d['query'][_0x7530('0x3c')]){_0x1be3e9['where']=_[_0x7530('0x3d')](_0x1be3e9['where'],{'$or':_[_0x7530('0x2b')](_0x1be3e9[_0x7530('0x34')],function(_0x2319fe){var _0x40f80c={};_0x40f80c[_0x2319fe]={'$like':'%'+_0x3aad4d[_0x7530('0x33')][_0x7530('0x3c')]+'%'};return _0x40f80c;})});}_0x1be3e9=_[_0x7530('0x3d')]({},_0x1be3e9,_0x3aad4d[_0x7530('0x3e')]);return _0x1afbb8[_0x7530('0x4f')](_0x1be3e9);}})[_0x7530('0x26')](function(_0x20529f){if(_0x20529f){_0x4170db=_0x20529f['length'];if(!_0x3aad4d['query']['hasOwnProperty'](_0x7530('0x39'))){_0x1be3e9[_0x7530('0x20')]=qs['limit'](_0x3aad4d[_0x7530('0x33')][_0x7530('0x20')]);_0x1be3e9[_0x7530('0x1d')]=qs['offset'](_0x3aad4d['query'][_0x7530('0x1d')]);}return _0x1afbb8[_0x7530('0x4f')](_0x1be3e9);}})['then'](function(_0x3591e2){if(_0x3591e2){return _0x3591e2?{'count':_0x4170db,'rows':_0x3591e2}:null;}})['then'](respondWithResult(_0xa42648,null))[_0x7530('0x42')](handleError(_0xa42648,null));};
\ No newline at end of file
index 3d2c574..21490ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','int_dynamics365_configurations','lodash','util','api'];(function(_0x3b2bbd,_0x2dc5ee){var _0xadf85d=function(_0x57701e){while(--_0x57701e){_0x3b2bbd['push'](_0x3b2bbd['shift']());}};_0xadf85d(++_0x2dc5ee);}(_0xa41a,0x6b));var _0xaa41=function(_0x520337,_0x569041){_0x520337=_0x520337-0x0;var _0x497c4b=_0xa41a[_0x520337];return _0x497c4b;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var logger=require('../../config/logger')(_0xaa41('0x2'));var moment=require(_0xaa41('0x3'));var BPromise=require(_0xaa41('0x4'));var rp=require(_0xaa41('0x5'));var fs=require('fs');var path=require(_0xaa41('0x6'));var rimraf=require(_0xaa41('0x7'));var config=require(_0xaa41('0x8'));var attributes=require(_0xaa41('0x9'));module['exports']=function(_0x2122a0,_0x1ec9d4){return _0x2122a0['define']('Dynamics365Configuration',attributes,{'tableName':_0xaa41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['int_dynamics365_configurations','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./intDynamics365Configuration.attributes'];(function(_0x3bafe6,_0x3432b7){var _0x30bc43=function(_0x1e8389){while(--_0x1e8389){_0x3bafe6['push'](_0x3bafe6['shift']());}};_0x30bc43(++_0x3432b7);}(_0x70e0,0x17b));var _0x070e=function(_0x79cfa,_0x5e9925){_0x79cfa=_0x79cfa-0x0;var _0x222127=_0x70e0[_0x79cfa];return _0x222127;};'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']('Dynamics365Configuration',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e43c18..234cfae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87eb=['Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info'];(function(_0x466e57,_0x21b819){var _0x34df42=function(_0x3e9758){while(--_0x3e9758){_0x466e57['push'](_0x466e57['shift']());}};_0x34df42(++_0x21b819);}(_0x87eb,0xcf));var _0xb87e=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0x87eb[_0x125ff8];return _0x2d9ef;};'use strict';var _=require('lodash');var util=require(_0xb87e('0x0'));var moment=require(_0xb87e('0x1'));var BPromise=require(_0xb87e('0x2'));var rs=require(_0xb87e('0x3'));var fs=require('fs');var Redis=require(_0xb87e('0x4'));var db=require(_0xb87e('0x5'))['db'];var utils=require(_0xb87e('0x6'));var logger=require(_0xb87e('0x7'))('rpc');var config=require(_0xb87e('0x8'));var jayson=require(_0xb87e('0x9'));var client=jayson['client'][_0xb87e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x17a773,_0x14c624,_0x4da402){return new BPromise(function(_0x243ad5,_0x2f8345){return client[_0xb87e('0xb')](_0x17a773,_0x4da402)['then'](function(_0x50b58b){logger[_0xb87e('0xc')](_0xb87e('0xd'),_0x14c624,_0xb87e('0xe'));logger[_0xb87e('0xf')](_0xb87e('0x10'),_0x14c624,'request\x20sent',JSON[_0xb87e('0x11')](_0x50b58b));if(_0x50b58b[_0xb87e('0x12')]){if(_0x50b58b[_0xb87e('0x12')][_0xb87e('0x13')]===0x1f4){logger[_0xb87e('0x12')](_0xb87e('0xd'),_0x14c624,_0x50b58b[_0xb87e('0x12')][_0xb87e('0x14')]);return _0x2f8345(_0x50b58b['error']['message']);}logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x14c624,_0x50b58b['error']['message']);return _0x243ad5(_0x50b58b[_0xb87e('0x12')][_0xb87e('0x14')]);}else{logger[_0xb87e('0xc')](_0xb87e('0xd'),_0x14c624,'request\x20sent');_0x243ad5(_0x50b58b['result'][_0xb87e('0x14')]);}})[_0xb87e('0x15')](function(_0x953c04){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x14c624,_0x953c04);_0x2f8345(_0x953c04);});});}
\ No newline at end of file
+var _0x3020=['error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5412c2,_0x2f3149){var _0x5766d0=function(_0xc6de7d){while(--_0xc6de7d){_0x5412c2['push'](_0x5412c2['shift']());}};_0x5766d0(++_0x2f3149);}(_0x3020,0x17e));var _0x0302=function(_0x2dd1fc,_0x55d022){_0x2dd1fc=_0x2dd1fc-0x0;var _0x5d2abd=_0x3020[_0x2dd1fc];return _0x5d2abd;};'use strict';var _=require(_0x0302('0x0'));var util=require(_0x0302('0x1'));var moment=require('moment');var BPromise=require(_0x0302('0x2'));var rs=require(_0x0302('0x3'));var fs=require('fs');var Redis=require(_0x0302('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0302('0x5'));var logger=require('../../config/logger')(_0x0302('0x6'));var config=require(_0x0302('0x7'));var jayson=require(_0x0302('0x8'));var client=jayson[_0x0302('0x9')][_0x0302('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d37ed,_0x566c56,_0x44803c){return new BPromise(function(_0x44f25f,_0x2084be){return client[_0x0302('0xb')](_0x1d37ed,_0x44803c)['then'](function(_0x2e217a){logger[_0x0302('0xc')](_0x0302('0xd'),_0x566c56,_0x0302('0xe'));logger['debug'](_0x0302('0xf'),_0x566c56,_0x0302('0xe'),JSON[_0x0302('0x10')](_0x2e217a));if(_0x2e217a[_0x0302('0x11')]){if(_0x2e217a['error']['code']===0x1f4){logger[_0x0302('0x11')](_0x0302('0xd'),_0x566c56,_0x2e217a[_0x0302('0x11')][_0x0302('0x12')]);return _0x2084be(_0x2e217a[_0x0302('0x11')][_0x0302('0x12')]);}logger[_0x0302('0x11')](_0x0302('0xd'),_0x566c56,_0x2e217a[_0x0302('0x11')]['message']);return _0x44f25f(_0x2e217a[_0x0302('0x11')][_0x0302('0x12')]);}else{logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x566c56,_0x0302('0xe'));_0x44f25f(_0x2e217a[_0x0302('0x13')][_0x0302('0x12')]);}})[_0x0302('0x14')](function(_0x42038d){logger[_0x0302('0x11')](_0x0302('0xd'),_0x566c56,_0x42038d);_0x2084be(_0x42038d);});});}
\ No newline at end of file
index f2f0c68..bc1c34a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef24=['express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get','show','post','create','put','/:id','delete','destroy','exports','multer','util','path'];(function(_0x1596fc,_0x109ee1){var _0x45b379=function(_0x57e6ad){while(--_0x57e6ad){_0x1596fc['push'](_0x1596fc['shift']());}};_0x45b379(++_0x109ee1);}(_0xef24,0xb1));var _0x4ef2=function(_0x5ca19a,_0x2fbe7a){_0x5ca19a=_0x5ca19a-0x0;var _0x23b0c0=_0xef24[_0x5ca19a];return _0x23b0c0;};'use strict';var multer=require(_0x4ef2('0x0'));var util=require(_0x4ef2('0x1'));var path=require(_0x4ef2('0x2'));var timeout=require('connect-timeout');var express=require(_0x4ef2('0x3'));var router=express[_0x4ef2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4ef2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4ef2('0x6'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0x4ef2('0x7')](),controller[_0x4ef2('0x8')]);router[_0x4ef2('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x4ef2('0xa')]);router[_0x4ef2('0xb')]('/',auth['isAuthenticated'](),controller[_0x4ef2('0xc')]);router[_0x4ef2('0xd')](_0x4ef2('0xe'),auth[_0x4ef2('0x7')](),controller['update']);router[_0x4ef2('0xf')](_0x4ef2('0xe'),auth[_0x4ef2('0x7')](),controller[_0x4ef2('0x10')]);module[_0x4ef2('0x11')]=router;
\ No newline at end of file
+var _0x7ea9=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','create','put','update','/:id','destroy','exports','multer','util'];(function(_0x4481b6,_0x434b8e){var _0xdeb660=function(_0x22e6ec){while(--_0x22e6ec){_0x4481b6['push'](_0x4481b6['shift']());}};_0xdeb660(++_0x434b8e);}(_0x7ea9,0x18a));var _0x97ea=function(_0x4329bc,_0x25e5f8){_0x4329bc=_0x4329bc-0x0;var _0x129711=_0x7ea9[_0x4329bc];return _0x129711;};'use strict';var multer=require(_0x97ea('0x0'));var util=require(_0x97ea('0x1'));var path=require('path');var timeout=require(_0x97ea('0x2'));var express=require(_0x97ea('0x3'));var router=express['Router']();var fs_extra=require(_0x97ea('0x4'));var auth=require(_0x97ea('0x5'));var interaction=require(_0x97ea('0x6'));var config=require(_0x97ea('0x7'));var controller=require(_0x97ea('0x8'));router[_0x97ea('0x9')]('/',auth[_0x97ea('0xa')](),controller[_0x97ea('0xb')]);router[_0x97ea('0x9')]('/:id',auth[_0x97ea('0xa')](),controller['show']);router['post']('/',auth[_0x97ea('0xa')](),controller[_0x97ea('0xc')]);router[_0x97ea('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x97ea('0xe')]);router['delete'](_0x97ea('0xf'),auth[_0x97ea('0xa')](),controller[_0x97ea('0x10')]);module[_0x97ea('0x11')]=router;
\ No newline at end of file
index 4bc52e5..7f9a6e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3794=['customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM','string','variable'];(function(_0x113e24,_0x4cada1){var _0x16b03f=function(_0x389329){while(--_0x389329){_0x113e24['push'](_0x113e24['shift']());}};_0x16b03f(++_0x4cada1);}(_0x3794,0x188));var _0x4379=function(_0x30cc1a,_0x162bbc){_0x30cc1a=_0x30cc1a-0x0;var _0xb3f18f=_0x3794[_0x30cc1a];return _0xb3f18f;};'use strict';var Sequelize=require(_0x4379('0x0'));module['exports']={'type':{'type':Sequelize[_0x4379('0x1')](_0x4379('0x2'),_0x4379('0x3'),_0x4379('0x4'),_0x4379('0x5'),_0x4379('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4379('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4379('0x1')](_0x4379('0x2'),_0x4379('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x4379('0x7')]},'idField':{'type':Sequelize[_0x4379('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x4379('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4379('0x7')]}};
\ No newline at end of file
+var _0xc3dd=['variable','customVariable','keyValue','STRING','sequelize','exports','ENUM','string'];(function(_0x4e0d62,_0x158c2b){var _0x41c879=function(_0xbd82b1){while(--_0xbd82b1){_0x4e0d62['push'](_0x4e0d62['shift']());}};_0x41c879(++_0x158c2b);}(_0xc3dd,0x174));var _0xdc3d=function(_0x28669c,_0x1f62c4){_0x28669c=_0x28669c-0x0;var _0x4a3af6=_0xc3dd[_0x28669c];return _0x4a3af6;};'use strict';var Sequelize=require(_0xdc3d('0x0'));module[_0xdc3d('0x1')]={'type':{'type':Sequelize[_0xdc3d('0x2')](_0xdc3d('0x3'),_0xdc3d('0x4'),_0xdc3d('0x5'),_0xdc3d('0x6'),'picklist'),'defaultValue':_0xdc3d('0x3')},'content':{'type':Sequelize[_0xdc3d('0x7')]},'key':{'type':Sequelize[_0xdc3d('0x7')]},'keyType':{'type':Sequelize[_0xdc3d('0x2')]('string',_0xdc3d('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xdc3d('0x7')]},'idField':{'type':Sequelize[_0xdc3d('0x7')]},'nameField':{'type':Sequelize[_0xdc3d('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdc3d('0x7')]}};
\ No newline at end of file
index 12ef63e..26b501b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2239=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','destroy','then','error','stack','name','index','Dynamics365Field','fieldName','type','key','model','map','keys','query','filters','attributes','intersection'];(function(_0x1cba6e,_0x4e3921){var _0x535d7c=function(_0x267716){while(--_0x267716){_0x1cba6e['push'](_0x1cba6e['shift']());}};_0x535d7c(++_0x4e3921);}(_0x2239,0xa9));var _0x9223=function(_0xbbc700,_0x2806f0){_0xbbc700=_0xbbc700-0x0;var _0x447690=_0x2239[_0xbbc700];return _0x447690;};'use strict';var emlformat=require(_0x9223('0x0'));var rimraf=require(_0x9223('0x1'));var zipdir=require(_0x9223('0x2'));var jsonpatch=require(_0x9223('0x3'));var rp=require(_0x9223('0x4'));var moment=require(_0x9223('0x5'));var BPromise=require(_0x9223('0x6'));var Mustache=require(_0x9223('0x7'));var util=require(_0x9223('0x8'));var path=require(_0x9223('0x9'));var sox=require(_0x9223('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9223('0xb'));var _=require('lodash');var squel=require(_0x9223('0xc'));var crypto=require('crypto');var jsforce=require(_0x9223('0xd'));var deskjs=require(_0x9223('0xe'));var toCsv=require(_0x9223('0xf'));var querystring=require(_0x9223('0x10'));var Papa=require(_0x9223('0x11'));var Redis=require(_0x9223('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9223('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9223('0x14'));var logger=require('../../config/logger')(_0x9223('0x15'));var utils=require(_0x9223('0x16'));var config=require(_0x9223('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x9223('0x18'))['db'];function respondWithStatusCode(_0xa3fc07,_0x1488e6){_0x1488e6=_0x1488e6||0xcc;return function(_0x35dcfc){if(_0x35dcfc){return _0xa3fc07[_0x9223('0x19')](_0x1488e6);}return _0xa3fc07['status'](_0x1488e6)[_0x9223('0x1a')]();};}function respondWithResult(_0x125b4f,_0x384edd){_0x384edd=_0x384edd||0xc8;return function(_0xf02a21){if(_0xf02a21){return _0x125b4f['status'](_0x384edd)[_0x9223('0x1b')](_0xf02a21);}};}function respondWithFilteredResult(_0x3fcfaa,_0x4487d4){return function(_0x481604){if(_0x481604){var _0x5bae01=typeof _0x4487d4[_0x9223('0x1c')]===_0x9223('0x1d')&&typeof _0x4487d4[_0x9223('0x1e')]===_0x9223('0x1d');var _0x1a74c4=_0x481604[_0x9223('0x1f')];var _0x3c1228=_0x5bae01?0x0:_0x4487d4[_0x9223('0x1c')];var _0x5619aa=_0x5bae01?_0x481604[_0x9223('0x1f')]:_0x4487d4[_0x9223('0x1c')]+_0x4487d4[_0x9223('0x1e')];var _0x52725f;if(_0x5619aa>=_0x1a74c4){_0x5619aa=_0x1a74c4;_0x52725f=0xc8;}else{_0x52725f=0xce;}_0x3fcfaa[_0x9223('0x20')](_0x52725f);return _0x3fcfaa['set'](_0x9223('0x21'),_0x3c1228+'-'+_0x5619aa+'/'+_0x1a74c4)[_0x9223('0x1b')](_0x481604);}return null;};}function patchUpdates(_0x252236){return function(_0x187177){try{jsonpatch[_0x9223('0x22')](_0x187177,_0x252236,!![]);}catch(_0x278909){return BPromise[_0x9223('0x23')](_0x278909);}return _0x187177['save']();};}function saveUpdates(_0x52f188,_0x939898){return function(_0x1bba8d){if(_0x1bba8d){return _0x1bba8d['update'](_0x52f188)['then'](function(_0x75929){return _0x75929;});}return null;};}function removeEntity(_0xf0e9f2,_0x518026){return function(_0x213991){if(_0x213991){return _0x213991[_0x9223('0x24')]()[_0x9223('0x25')](function(){_0xf0e9f2[_0x9223('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fdcc2,_0x787d70){return function(_0x165788){if(!_0x165788){_0x2fdcc2['sendStatus'](0x194);}return _0x165788;};}function handleError(_0x160a02,_0x503713){_0x503713=_0x503713||0x1f4;return function(_0x291170){logger[_0x9223('0x26')](_0x291170[_0x9223('0x27')]);if(_0x291170[_0x9223('0x28')]){delete _0x291170[_0x9223('0x28')];}_0x160a02[_0x9223('0x20')](_0x503713)['send'](_0x291170);};}exports[_0x9223('0x29')]=function(_0x5964dc,_0x15d131){var _0x25a592={},_0x2ad435={},_0x5b3389={'count':0x0,'rows':[]};var _0x20c231=_['map'](db[_0x9223('0x2a')]['rawAttributes'],function(_0x15beba){return{'name':_0x15beba[_0x9223('0x2b')],'type':_0x15beba[_0x9223('0x2c')][_0x9223('0x2d')]};});_0x2ad435[_0x9223('0x2e')]=_[_0x9223('0x2f')](_0x20c231,'name');_0x2ad435['query']=_[_0x9223('0x30')](_0x5964dc[_0x9223('0x31')]);_0x2ad435[_0x9223('0x32')]=_['intersection'](_0x2ad435[_0x9223('0x2e')],_0x2ad435['query']);_0x25a592[_0x9223('0x33')]=_[_0x9223('0x34')](_0x2ad435[_0x9223('0x2e')],qs[_0x9223('0x35')](_0x5964dc[_0x9223('0x31')][_0x9223('0x35')]));_0x25a592['attributes']=_0x25a592[_0x9223('0x33')][_0x9223('0x36')]?_0x25a592[_0x9223('0x33')]:_0x2ad435['model'];if(!_0x5964dc[_0x9223('0x31')][_0x9223('0x37')](_0x9223('0x38'))){_0x25a592[_0x9223('0x1e')]=qs[_0x9223('0x1e')](_0x5964dc[_0x9223('0x31')][_0x9223('0x1e')]);_0x25a592[_0x9223('0x1c')]=qs[_0x9223('0x1c')](_0x5964dc[_0x9223('0x31')][_0x9223('0x1c')]);}_0x25a592[_0x9223('0x39')]=qs[_0x9223('0x3a')](_0x5964dc['query'][_0x9223('0x3a')]);_0x25a592[_0x9223('0x3b')]=qs[_0x9223('0x32')](_[_0x9223('0x3c')](_0x5964dc[_0x9223('0x31')],_0x2ad435[_0x9223('0x32')]),_0x20c231);if(_0x5964dc[_0x9223('0x31')][_0x9223('0x3d')]){_0x25a592[_0x9223('0x3b')]=_['merge'](_0x25a592[_0x9223('0x3b')],{'$or':_[_0x9223('0x2f')](_0x20c231,function(_0x155f3e){if(_0x155f3e[_0x9223('0x2c')]!==_0x9223('0x3e')){var _0x246315={};_0x246315[_0x155f3e[_0x9223('0x28')]]={'$like':'%'+_0x5964dc[_0x9223('0x31')][_0x9223('0x3d')]+'%'};return _0x246315;}})});}_0x25a592=_[_0x9223('0x3f')]({},_0x25a592,_0x5964dc[_0x9223('0x40')]);var _0x80970c={'where':_0x25a592[_0x9223('0x3b')]};return db[_0x9223('0x2a')]['count'](_0x80970c)[_0x9223('0x25')](function(_0x3e9985){_0x5b3389['count']=_0x3e9985;if(_0x5964dc['query'][_0x9223('0x41')]){_0x25a592[_0x9223('0x42')]=[{'all':!![]}];}return db[_0x9223('0x2a')]['findAll'](_0x25a592);})[_0x9223('0x25')](function(_0x4ffa9e){_0x5b3389['rows']=_0x4ffa9e;return _0x5b3389;})[_0x9223('0x25')](respondWithFilteredResult(_0x15d131,_0x25a592))[_0x9223('0x43')](handleError(_0x15d131,null));};exports[_0x9223('0x44')]=function(_0x2b89f3,_0x250ab9){var _0x3c37fa={'raw':!![],'where':{'id':_0x2b89f3[_0x9223('0x45')]['id']}},_0x1bcc9c={};_0x1bcc9c[_0x9223('0x2e')]=_[_0x9223('0x30')](db[_0x9223('0x2a')][_0x9223('0x46')]);_0x1bcc9c[_0x9223('0x31')]=_[_0x9223('0x30')](_0x2b89f3[_0x9223('0x31')]);_0x1bcc9c['filters']=_['intersection'](_0x1bcc9c[_0x9223('0x2e')],_0x1bcc9c[_0x9223('0x31')]);_0x3c37fa['attributes']=_['intersection'](_0x1bcc9c[_0x9223('0x2e')],qs[_0x9223('0x35')](_0x2b89f3[_0x9223('0x31')][_0x9223('0x35')]));_0x3c37fa[_0x9223('0x33')]=_0x3c37fa[_0x9223('0x33')][_0x9223('0x36')]?_0x3c37fa[_0x9223('0x33')]:_0x1bcc9c[_0x9223('0x2e')];if(_0x2b89f3[_0x9223('0x31')][_0x9223('0x41')]){_0x3c37fa[_0x9223('0x42')]=[{'all':!![]}];}_0x3c37fa=_[_0x9223('0x3f')]({},_0x3c37fa,_0x2b89f3[_0x9223('0x40')]);return db[_0x9223('0x2a')][_0x9223('0x47')](_0x3c37fa)['then'](handleEntityNotFound(_0x250ab9,null))[_0x9223('0x25')](respondWithResult(_0x250ab9,null))[_0x9223('0x43')](handleError(_0x250ab9,null));};exports[_0x9223('0x48')]=function(_0x5d893a,_0x21899c){return db[_0x9223('0x2a')][_0x9223('0x48')](_0x5d893a[_0x9223('0x49')],{})[_0x9223('0x25')](respondWithResult(_0x21899c,0xc9))['catch'](handleError(_0x21899c,null));};exports['update']=function(_0x1a03d0,_0x565d6a){if(_0x1a03d0[_0x9223('0x49')]['id']){delete _0x1a03d0['body']['id'];}return db['Dynamics365Field'][_0x9223('0x47')]({'where':{'id':_0x1a03d0[_0x9223('0x45')]['id']}})[_0x9223('0x25')](handleEntityNotFound(_0x565d6a,null))['then'](saveUpdates(_0x1a03d0[_0x9223('0x49')],null))[_0x9223('0x25')](respondWithResult(_0x565d6a,null))['catch'](handleError(_0x565d6a,null));};exports[_0x9223('0x24')]=function(_0x1c42ab,_0xd49ba5){return db['Dynamics365Field'][_0x9223('0x47')]({'where':{'id':_0x1c42ab[_0x9223('0x45')]['id']}})['then'](handleEntityNotFound(_0xd49ba5,null))[_0x9223('0x25')](removeEntity(_0xd49ba5,null))[_0x9223('0x43')](handleError(_0xd49ba5,null));};
\ No newline at end of file
+var _0xfefa=['params','length','find','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','undefined','limit','count','offset','set','json','apply','save','update','destroy','then','end','stack','name','send','index','map','Dynamics365Field','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch'];(function(_0x303ac7,_0xbc2841){var _0x47d0be=function(_0x21d2f1){while(--_0x21d2f1){_0x303ac7['push'](_0x303ac7['shift']());}};_0x47d0be(++_0xbc2841);}(_0xfefa,0x91));var _0xafef=function(_0x205651,_0xb6a4fd){_0x205651=_0x205651-0x0;var _0x1618f8=_0xfefa[_0x205651];return _0x1618f8;};'use strict';var emlformat=require(_0xafef('0x0'));var rimraf=require(_0xafef('0x1'));var zipdir=require(_0xafef('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xafef('0x3'));var BPromise=require(_0xafef('0x4'));var Mustache=require(_0xafef('0x5'));var util=require(_0xafef('0x6'));var path=require(_0xafef('0x7'));var sox=require(_0xafef('0x8'));var csv=require(_0xafef('0x9'));var ejs=require(_0xafef('0xa'));var fs=require('fs');var fs_extra=require(_0xafef('0xb'));var _=require(_0xafef('0xc'));var squel=require(_0xafef('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xafef('0xe'));var toCsv=require(_0xafef('0x9'));var querystring=require(_0xafef('0xf'));var Papa=require(_0xafef('0x10'));var Redis=require('ioredis');var authService=require(_0xafef('0x11'));var qs=require(_0xafef('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xafef('0x13'));var logger=require(_0xafef('0x14'))(_0xafef('0x15'));var utils=require('../../config/utils');var config=require(_0xafef('0x16'));var licenseUtil=require(_0xafef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18f593,_0x191be4){_0x191be4=_0x191be4||0xcc;return function(_0x370c20){if(_0x370c20){return _0x18f593[_0xafef('0x18')](_0x191be4);}return _0x18f593[_0xafef('0x19')](_0x191be4)['end']();};}function respondWithResult(_0x3fdc08,_0x1988cd){_0x1988cd=_0x1988cd||0xc8;return function(_0x2a8164){if(_0x2a8164){return _0x3fdc08['status'](_0x1988cd)['json'](_0x2a8164);}};}function respondWithFilteredResult(_0x3f420b,_0x166e4c){return function(_0x275e4e){if(_0x275e4e){var _0xcdb80f=typeof _0x166e4c['offset']===_0xafef('0x1a')&&typeof _0x166e4c[_0xafef('0x1b')]===_0xafef('0x1a');var _0x53f1b8=_0x275e4e[_0xafef('0x1c')];var _0x25b3ab=_0xcdb80f?0x0:_0x166e4c[_0xafef('0x1d')];var _0x214356=_0xcdb80f?_0x275e4e[_0xafef('0x1c')]:_0x166e4c[_0xafef('0x1d')]+_0x166e4c['limit'];var _0xf5cecf;if(_0x214356>=_0x53f1b8){_0x214356=_0x53f1b8;_0xf5cecf=0xc8;}else{_0xf5cecf=0xce;}_0x3f420b[_0xafef('0x19')](_0xf5cecf);return _0x3f420b[_0xafef('0x1e')]('Content-Range',_0x25b3ab+'-'+_0x214356+'/'+_0x53f1b8)[_0xafef('0x1f')](_0x275e4e);}return null;};}function patchUpdates(_0xdfaf01){return function(_0x1e2d6e){try{jsonpatch[_0xafef('0x20')](_0x1e2d6e,_0xdfaf01,!![]);}catch(_0x39bb2d){return BPromise['reject'](_0x39bb2d);}return _0x1e2d6e[_0xafef('0x21')]();};}function saveUpdates(_0x345035,_0x328128){return function(_0x9f681d){if(_0x9f681d){return _0x9f681d[_0xafef('0x22')](_0x345035)['then'](function(_0x291ce3){return _0x291ce3;});}return null;};}function removeEntity(_0x371235,_0x4a7eee){return function(_0x5b0116){if(_0x5b0116){return _0x5b0116[_0xafef('0x23')]()[_0xafef('0x24')](function(){_0x371235[_0xafef('0x19')](0xcc)[_0xafef('0x25')]();});}};}function handleEntityNotFound(_0x56a082,_0x1356da){return function(_0x28a8dd){if(!_0x28a8dd){_0x56a082[_0xafef('0x18')](0x194);}return _0x28a8dd;};}function handleError(_0x54cdf8,_0x2eaf3d){_0x2eaf3d=_0x2eaf3d||0x1f4;return function(_0x5f3305){logger['error'](_0x5f3305[_0xafef('0x26')]);if(_0x5f3305[_0xafef('0x27')]){delete _0x5f3305[_0xafef('0x27')];}_0x54cdf8[_0xafef('0x19')](_0x2eaf3d)[_0xafef('0x28')](_0x5f3305);};}exports[_0xafef('0x29')]=function(_0x11fd45,_0x2fd8ec){var _0x976754={},_0xb48d72={},_0x301c9d={'count':0x0,'rows':[]};var _0x24e68d=_[_0xafef('0x2a')](db[_0xafef('0x2b')][_0xafef('0x2c')],function(_0xa2f1ce){return{'name':_0xa2f1ce['fieldName'],'type':_0xa2f1ce[_0xafef('0x2d')][_0xafef('0x2e')]};});_0xb48d72['model']=_[_0xafef('0x2a')](_0x24e68d,_0xafef('0x27'));_0xb48d72[_0xafef('0x2f')]=_[_0xafef('0x30')](_0x11fd45[_0xafef('0x2f')]);_0xb48d72[_0xafef('0x31')]=_[_0xafef('0x32')](_0xb48d72[_0xafef('0x33')],_0xb48d72[_0xafef('0x2f')]);_0x976754[_0xafef('0x34')]=_['intersection'](_0xb48d72['model'],qs[_0xafef('0x35')](_0x11fd45[_0xafef('0x2f')][_0xafef('0x35')]));_0x976754[_0xafef('0x34')]=_0x976754[_0xafef('0x34')]['length']?_0x976754[_0xafef('0x34')]:_0xb48d72[_0xafef('0x33')];if(!_0x11fd45[_0xafef('0x2f')]['hasOwnProperty'](_0xafef('0x36'))){_0x976754['limit']=qs[_0xafef('0x1b')](_0x11fd45[_0xafef('0x2f')][_0xafef('0x1b')]);_0x976754[_0xafef('0x1d')]=qs['offset'](_0x11fd45[_0xafef('0x2f')][_0xafef('0x1d')]);}_0x976754['order']=qs['sort'](_0x11fd45[_0xafef('0x2f')][_0xafef('0x37')]);_0x976754[_0xafef('0x38')]=qs[_0xafef('0x31')](_['pick'](_0x11fd45[_0xafef('0x2f')],_0xb48d72[_0xafef('0x31')]),_0x24e68d);if(_0x11fd45[_0xafef('0x2f')]['filter']){_0x976754[_0xafef('0x38')]=_[_0xafef('0x39')](_0x976754[_0xafef('0x38')],{'$or':_['map'](_0x24e68d,function(_0x5dab06){if(_0x5dab06[_0xafef('0x2d')]!==_0xafef('0x3a')){var _0x41bed4={};_0x41bed4[_0x5dab06[_0xafef('0x27')]]={'$like':'%'+_0x11fd45[_0xafef('0x2f')][_0xafef('0x3b')]+'%'};return _0x41bed4;}})});}_0x976754=_[_0xafef('0x39')]({},_0x976754,_0x11fd45[_0xafef('0x3c')]);var _0x1c3879={'where':_0x976754['where']};return db[_0xafef('0x2b')][_0xafef('0x1c')](_0x1c3879)[_0xafef('0x24')](function(_0x4b9f01){_0x301c9d[_0xafef('0x1c')]=_0x4b9f01;if(_0x11fd45[_0xafef('0x2f')][_0xafef('0x3d')]){_0x976754[_0xafef('0x3e')]=[{'all':!![]}];}return db[_0xafef('0x2b')]['findAll'](_0x976754);})[_0xafef('0x24')](function(_0x41b77e){_0x301c9d[_0xafef('0x3f')]=_0x41b77e;return _0x301c9d;})[_0xafef('0x24')](respondWithFilteredResult(_0x2fd8ec,_0x976754))[_0xafef('0x40')](handleError(_0x2fd8ec,null));};exports['show']=function(_0x555fdc,_0x2937b1){var _0x3d2c96={'raw':!![],'where':{'id':_0x555fdc[_0xafef('0x41')]['id']}},_0xe7fe35={};_0xe7fe35[_0xafef('0x33')]=_[_0xafef('0x30')](db[_0xafef('0x2b')]['rawAttributes']);_0xe7fe35['query']=_[_0xafef('0x30')](_0x555fdc[_0xafef('0x2f')]);_0xe7fe35[_0xafef('0x31')]=_[_0xafef('0x32')](_0xe7fe35[_0xafef('0x33')],_0xe7fe35['query']);_0x3d2c96[_0xafef('0x34')]=_[_0xafef('0x32')](_0xe7fe35[_0xafef('0x33')],qs[_0xafef('0x35')](_0x555fdc[_0xafef('0x2f')][_0xafef('0x35')]));_0x3d2c96['attributes']=_0x3d2c96[_0xafef('0x34')][_0xafef('0x42')]?_0x3d2c96[_0xafef('0x34')]:_0xe7fe35[_0xafef('0x33')];if(_0x555fdc[_0xafef('0x2f')][_0xafef('0x3d')]){_0x3d2c96[_0xafef('0x3e')]=[{'all':!![]}];}_0x3d2c96=_[_0xafef('0x39')]({},_0x3d2c96,_0x555fdc[_0xafef('0x3c')]);return db[_0xafef('0x2b')][_0xafef('0x43')](_0x3d2c96)[_0xafef('0x24')](handleEntityNotFound(_0x2937b1,null))[_0xafef('0x24')](respondWithResult(_0x2937b1,null))[_0xafef('0x40')](handleError(_0x2937b1,null));};exports[_0xafef('0x44')]=function(_0x3522eb,_0x15ce32){return db['Dynamics365Field'][_0xafef('0x44')](_0x3522eb[_0xafef('0x45')],{})['then'](respondWithResult(_0x15ce32,0xc9))[_0xafef('0x40')](handleError(_0x15ce32,null));};exports[_0xafef('0x22')]=function(_0x3af98e,_0x24ef9a){if(_0x3af98e['body']['id']){delete _0x3af98e[_0xafef('0x45')]['id'];}return db[_0xafef('0x2b')][_0xafef('0x43')]({'where':{'id':_0x3af98e[_0xafef('0x41')]['id']}})['then'](handleEntityNotFound(_0x24ef9a,null))[_0xafef('0x24')](saveUpdates(_0x3af98e[_0xafef('0x45')],null))['then'](respondWithResult(_0x24ef9a,null))[_0xafef('0x40')](handleError(_0x24ef9a,null));};exports[_0xafef('0x23')]=function(_0x2cf828,_0x5ec2da){return db['Dynamics365Field'][_0xafef('0x43')]({'where':{'id':_0x2cf828['params']['id']}})['then'](handleEntityNotFound(_0x5ec2da,null))[_0xafef('0x24')](removeEntity(_0x5ec2da,null))[_0xafef('0x40')](handleError(_0x5ec2da,null));};
\ No newline at end of file
index 5e900d0..928d776 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a41=['path','rimraf','../../config/environment','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','api','moment','bluebird','request-promise'];(function(_0xbc346f,_0x3db5c0){var _0x9f9260=function(_0x37e6b9){while(--_0x37e6b9){_0xbc346f['push'](_0xbc346f['shift']());}};_0x9f9260(++_0x3db5c0);}(_0x3a41,0x94));var _0x13a4=function(_0x17f773,_0x3e3f55){_0x17f773=_0x17f773-0x0;var _0x16576d=_0x3a41[_0x17f773];return _0x16576d;};'use strict';var _=require(_0x13a4('0x0'));var util=require(_0x13a4('0x1'));var logger=require('../../config/logger')(_0x13a4('0x2'));var moment=require(_0x13a4('0x3'));var BPromise=require(_0x13a4('0x4'));var rp=require(_0x13a4('0x5'));var fs=require('fs');var path=require(_0x13a4('0x6'));var rimraf=require(_0x13a4('0x7'));var config=require(_0x13a4('0x8'));var attributes=require('./intDynamics365Field.attributes');module['exports']=function(_0x32a3b2,_0x1c53a7){return _0x32a3b2['define'](_0x13a4('0x9'),attributes,{'tableName':_0x13a4('0xa'),'paranoid':![],'indexes':[{'name':_0x13a4('0xb'),'fields':[_0x13a4('0xc'),_0x13a4('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x68e0=['./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x5f58a1,_0x4301f2){var _0x3db084=function(_0x3dcb14){while(--_0x3dcb14){_0x5f58a1['push'](_0x5f58a1['shift']());}};_0x3db084(++_0x4301f2);}(_0x68e0,0x111));var _0x068e=function(_0x47be52,_0x331bb9){_0x47be52=_0x47be52-0x0;var _0x5f5894=_0x68e0[_0x47be52];return _0x5f5894;};'use strict';var _=require(_0x068e('0x0'));var util=require(_0x068e('0x1'));var logger=require(_0x068e('0x2'))(_0x068e('0x3'));var moment=require(_0x068e('0x4'));var BPromise=require('bluebird');var rp=require(_0x068e('0x5'));var fs=require('fs');var path=require(_0x068e('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x068e('0x7'));module[_0x068e('0x8')]=function(_0x5ed456,_0x181e56){return _0x5ed456[_0x068e('0x9')](_0x068e('0xa'),attributes,{'tableName':_0x068e('0xb'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x068e('0xc'),_0x068e('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c4f5306..cfb4fe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x502c=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','error','message','result','lodash'];(function(_0x7e3f06,_0x426f70){var _0x12b8ff=function(_0x47c83c){while(--_0x47c83c){_0x7e3f06['push'](_0x7e3f06['shift']());}};_0x12b8ff(++_0x426f70);}(_0x502c,0xc7));var _0xc502=function(_0x294eb1,_0x49975d){_0x294eb1=_0x294eb1-0x0;var _0x41e41a=_0x502c[_0x294eb1];return _0x41e41a;};'use strict';var _=require(_0xc502('0x0'));var util=require(_0xc502('0x1'));var moment=require(_0xc502('0x2'));var BPromise=require(_0xc502('0x3'));var rs=require(_0xc502('0x4'));var fs=require('fs');var Redis=require(_0xc502('0x5'));var db=require(_0xc502('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc502('0x7'));var config=require(_0xc502('0x8'));var jayson=require(_0xc502('0x9'));var client=jayson['client'][_0xc502('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d6261,_0x36266d,_0x48b024){return new BPromise(function(_0x376261,_0x1d9e64){return client[_0xc502('0xb')](_0x2d6261,_0x48b024)[_0xc502('0xc')](function(_0x525f2c){logger[_0xc502('0xd')](_0xc502('0xe'),_0x36266d,_0xc502('0xf'));logger[_0xc502('0x10')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x36266d,_0xc502('0xf'),JSON['stringify'](_0x525f2c));if(_0x525f2c[_0xc502('0x11')]){if(_0x525f2c[_0xc502('0x11')]['code']===0x1f4){logger['error'](_0xc502('0xe'),_0x36266d,_0x525f2c[_0xc502('0x11')][_0xc502('0x12')]);return _0x1d9e64(_0x525f2c['error']['message']);}logger[_0xc502('0x11')](_0xc502('0xe'),_0x36266d,_0x525f2c[_0xc502('0x11')][_0xc502('0x12')]);return _0x376261(_0x525f2c[_0xc502('0x11')][_0xc502('0x12')]);}else{logger[_0xc502('0xd')](_0xc502('0xe'),_0x36266d,'request\x20sent');_0x376261(_0x525f2c[_0xc502('0x13')][_0xc502('0x12')]);}})['catch'](function(_0x4b4a0b){logger[_0xc502('0x11')](_0xc502('0xe'),_0x36266d,_0x4b4a0b);_0x1d9e64(_0x4b4a0b);});});}
\ No newline at end of file
+var _0xe6b5=['jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code','Dynamics365Field,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x46ab2b,_0x5a011e){var _0x1dd387=function(_0x3c566b){while(--_0x3c566b){_0x46ab2b['push'](_0x46ab2b['shift']());}};_0x1dd387(++_0x5a011e);}(_0xe6b5,0xff));var _0x5e6b=function(_0x27d2b8,_0x21ed1a){_0x27d2b8=_0x27d2b8-0x0;var _0xb79a09=_0xe6b5[_0x27d2b8];return _0xb79a09;};'use strict';var _=require(_0x5e6b('0x0'));var util=require(_0x5e6b('0x1'));var moment=require(_0x5e6b('0x2'));var BPromise=require(_0x5e6b('0x3'));var rs=require(_0x5e6b('0x4'));var fs=require('fs');var Redis=require(_0x5e6b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5e6b('0x6'));var logger=require(_0x5e6b('0x7'))('rpc');var config=require(_0x5e6b('0x8'));var jayson=require(_0x5e6b('0x9'));var client=jayson[_0x5e6b('0xa')][_0x5e6b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47ce48,_0x44860c,_0x501e36){return new BPromise(function(_0x3a459b,_0x399fe9){return client[_0x5e6b('0xc')](_0x47ce48,_0x501e36)[_0x5e6b('0xd')](function(_0x535010){logger[_0x5e6b('0xe')]('Dynamics365Field,\x20%s,\x20%s',_0x44860c,_0x5e6b('0xf'));logger['debug']('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x44860c,_0x5e6b('0xf'),JSON[_0x5e6b('0x10')](_0x535010));if(_0x535010[_0x5e6b('0x11')]){if(_0x535010[_0x5e6b('0x11')][_0x5e6b('0x12')]===0x1f4){logger[_0x5e6b('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x44860c,_0x535010[_0x5e6b('0x11')]['message']);return _0x399fe9(_0x535010[_0x5e6b('0x11')]['message']);}logger[_0x5e6b('0x11')](_0x5e6b('0x13'),_0x44860c,_0x535010[_0x5e6b('0x11')][_0x5e6b('0x14')]);return _0x3a459b(_0x535010[_0x5e6b('0x11')][_0x5e6b('0x14')]);}else{logger[_0x5e6b('0xe')](_0x5e6b('0x13'),_0x44860c,_0x5e6b('0xf'));_0x3a459b(_0x535010['result'][_0x5e6b('0x14')]);}})[_0x5e6b('0x15')](function(_0x191deb){logger[_0x5e6b('0x11')](_0x5e6b('0x13'),_0x44860c,_0x191deb);_0x399fe9(_0x191deb);});});}
\ No newline at end of file
index a5b6ec9..ba8dbd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af2=['/:id/configurations','addConfiguration','put','update','delete','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','create','post'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x3af2,0x19e));var _0x23af=function(_0x5581ba,_0x268887){_0x5581ba=_0x5581ba-0x0;var _0x1e927f=_0x3af2[_0x5581ba];return _0x1e927f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x23af('0x0'));var timeout=require(_0x23af('0x1'));var express=require(_0x23af('0x2'));var router=express[_0x23af('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x23af('0x4'));var interaction=require(_0x23af('0x5'));var config=require(_0x23af('0x6'));var controller=require(_0x23af('0x7'));router[_0x23af('0x8')]('/',auth[_0x23af('0x9')](),controller[_0x23af('0xa')]);router[_0x23af('0x8')](_0x23af('0xb'),auth[_0x23af('0x9')](),controller[_0x23af('0xc')]);router[_0x23af('0x8')]('/:id/configurations',auth[_0x23af('0x9')](),controller[_0x23af('0xd')]);router['get'](_0x23af('0xe'),auth[_0x23af('0x9')](),controller[_0x23af('0xf')]);router['post']('/',auth[_0x23af('0x9')](),controller[_0x23af('0x10')]);router[_0x23af('0x11')](_0x23af('0x12'),auth['isAuthenticated'](),controller[_0x23af('0x13')]);router[_0x23af('0x14')](_0x23af('0xb'),auth[_0x23af('0x9')](),controller[_0x23af('0x15')]);router[_0x23af('0x16')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x23af('0x17')]=router;
\ No newline at end of file
+var _0x45e5=['Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index','get','/:id','show','getConfigurations','/:id/fields','post','create','addConfiguration','put','delete','exports','path'];(function(_0x4c3f41,_0x5beb44){var _0x514b00=function(_0x21f1f5){while(--_0x21f1f5){_0x4c3f41['push'](_0x4c3f41['shift']());}};_0x514b00(++_0x5beb44);}(_0x45e5,0xe3));var _0x545e=function(_0x5158ce,_0x35e950){_0x5158ce=_0x5158ce-0x0;var _0x42b287=_0x45e5[_0x5158ce];return _0x42b287;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x545e('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x545e('0x1')]();var fs_extra=require(_0x545e('0x2'));var auth=require(_0x545e('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x545e('0x4'));var controller=require(_0x545e('0x5'));router['get']('/',auth[_0x545e('0x6')](),controller[_0x545e('0x7')]);router[_0x545e('0x8')](_0x545e('0x9'),auth[_0x545e('0x6')](),controller[_0x545e('0xa')]);router[_0x545e('0x8')]('/:id/configurations',auth[_0x545e('0x6')](),controller[_0x545e('0xb')]);router[_0x545e('0x8')](_0x545e('0xc'),auth[_0x545e('0x6')](),controller['getFields']);router[_0x545e('0xd')]('/',auth[_0x545e('0x6')](),controller[_0x545e('0xe')]);router[_0x545e('0xd')]('/:id/configurations',auth[_0x545e('0x6')](),controller[_0x545e('0xf')]);router[_0x545e('0x10')](_0x545e('0x9'),auth[_0x545e('0x6')](),controller['update']);router[_0x545e('0x11')](_0x545e('0x9'),auth[_0x545e('0x6')](),controller['destroy']);module[_0x545e('0x12')]=router;
\ No newline at end of file
index b0fb961..ce46a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['exports','STRING','username'];(function(_0x31ef96,_0x3ecd35){var _0x43b84f=function(_0x5f13a4){while(--_0x5f13a4){_0x31ef96['push'](_0x31ef96['shift']());}};_0x43b84f(++_0x3ecd35);}(_0xda2d,0x102));var _0xdda2=function(_0x56de1f,_0xd5887){_0x56de1f=_0x56de1f-0x0;var _0x58487b=_0xda2d[_0x56de1f];return _0x58487b;};'use strict';var Sequelize=require('sequelize');module[_0xdda2('0x0')]={'name':{'type':Sequelize[_0xdda2('0x1')]},'description':{'type':Sequelize[_0xdda2('0x1')]},'username':{'type':Sequelize[_0xdda2('0x1')],'unique':_0xdda2('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xdda2('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x5b12=['STRING','sequelize','exports'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x5b12,0xa3));var _0x25b1=function(_0x5ce6a3,_0x2a0b16){_0x5ce6a3=_0x5ce6a3-0x0;var _0xce0677=_0x5b12[_0x5ce6a3];return _0xce0677;};'use strict';var Sequelize=require(_0x25b1('0x0'));module[_0x25b1('0x1')]={'name':{'type':Sequelize[_0x25b1('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x25b1('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x25b1('0x2')]},'remoteUri':{'type':Sequelize[_0x25b1('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x25b1('0x2')],'allowNull':![]}};
\ No newline at end of file
index c3ecf29..ccd551f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9000=['FreshdeskAccount','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','findOne','FreshdeskConfiguration','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','remoteUri','apiKey','substring','GET','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','toString','base64','requester','agent','priority','source','ticket_type','remove','includes','custom_dropdown','label','default','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','set','Content-Range','save','update','destroy','then','error','stack','name','send','index'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x9000,0x19e));var _0x0900=function(_0x2ad008,_0x45c253){_0x2ad008=_0x2ad008-0x0;var _0x4538cf=_0x9000[_0x2ad008];return _0x4538cf;};'use strict';var emlformat=require(_0x0900('0x0'));var rimraf=require(_0x0900('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0900('0x2'));var rp=require(_0x0900('0x3'));var moment=require(_0x0900('0x4'));var BPromise=require(_0x0900('0x5'));var Mustache=require(_0x0900('0x6'));var util=require(_0x0900('0x7'));var path=require(_0x0900('0x8'));var sox=require(_0x0900('0x9'));var csv=require(_0x0900('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0900('0xb'));var _=require('lodash');var squel=require(_0x0900('0xc'));var crypto=require(_0x0900('0xd'));var jsforce=require(_0x0900('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0900('0xf'));var Papa=require(_0x0900('0x10'));var Redis=require(_0x0900('0x11'));var authService=require(_0x0900('0x12'));var qs=require(_0x0900('0x13'));var as=require(_0x0900('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0900('0x15'))(_0x0900('0x16'));var utils=require(_0x0900('0x17'));var config=require(_0x0900('0x18'));var licenseUtil=require(_0x0900('0x19'));var db=require(_0x0900('0x1a'))['db'];var integrations=require(_0x0900('0x1b'));function respondWithStatusCode(_0x11d1b6,_0x3a235b){_0x3a235b=_0x3a235b||0xcc;return function(_0x2c13a6){if(_0x2c13a6){return _0x11d1b6['sendStatus'](_0x3a235b);}return _0x11d1b6[_0x0900('0x1c')](_0x3a235b)[_0x0900('0x1d')]();};}function respondWithResult(_0x4ea071,_0x52bb65){_0x52bb65=_0x52bb65||0xc8;return function(_0x3594fd){if(_0x3594fd){return _0x4ea071['status'](_0x52bb65)[_0x0900('0x1e')](_0x3594fd);}};}function respondWithFilteredResult(_0x4f5eee,_0x35dbd6){return function(_0xb184b6){if(_0xb184b6){var _0x2eba4d=typeof _0x35dbd6[_0x0900('0x1f')]==='undefined'&&typeof _0x35dbd6['limit']===_0x0900('0x20');var _0x4054a2=_0xb184b6[_0x0900('0x21')];var _0x2f84dd=_0x2eba4d?0x0:_0x35dbd6['offset'];var _0x68d49f=_0x2eba4d?_0xb184b6[_0x0900('0x21')]:_0x35dbd6[_0x0900('0x1f')]+_0x35dbd6[_0x0900('0x22')];var _0x27583c;if(_0x68d49f>=_0x4054a2){_0x68d49f=_0x4054a2;_0x27583c=0xc8;}else{_0x27583c=0xce;}_0x4f5eee[_0x0900('0x1c')](_0x27583c);return _0x4f5eee[_0x0900('0x23')](_0x0900('0x24'),_0x2f84dd+'-'+_0x68d49f+'/'+_0x4054a2)['json'](_0xb184b6);}return null;};}function patchUpdates(_0x5ed4e8){return function(_0xd96e0a){try{jsonpatch['apply'](_0xd96e0a,_0x5ed4e8,!![]);}catch(_0x384068){return BPromise['reject'](_0x384068);}return _0xd96e0a[_0x0900('0x25')]();};}function saveUpdates(_0x1f3738,_0x3dc6bc){return function(_0x574e99){if(_0x574e99){return _0x574e99[_0x0900('0x26')](_0x1f3738)['then'](function(_0x2fd307){return _0x2fd307;});}return null;};}function removeEntity(_0x369f5a,_0xce8f6e){return function(_0x3a6517){if(_0x3a6517){return _0x3a6517[_0x0900('0x27')]()[_0x0900('0x28')](function(){_0x369f5a[_0x0900('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7b6765,_0x34d63f){return function(_0x143f72){if(!_0x143f72){_0x7b6765['sendStatus'](0x194);}return _0x143f72;};}function handleError(_0x574307,_0x51ee3a){_0x51ee3a=_0x51ee3a||0x1f4;return function(_0x5e39cf){logger[_0x0900('0x29')](_0x5e39cf[_0x0900('0x2a')]);if(_0x5e39cf['name']){delete _0x5e39cf[_0x0900('0x2b')];}_0x574307['status'](_0x51ee3a)[_0x0900('0x2c')](_0x5e39cf);};}exports[_0x0900('0x2d')]=function(_0x2a8a71,_0x257914){var _0x3fbd95={},_0x32afc5={},_0x50280f={'count':0x0,'rows':[]};var _0x102d9c=_['map'](db[_0x0900('0x2e')][_0x0900('0x2f')],function(_0x1a13d6){return{'name':_0x1a13d6['fieldName'],'type':_0x1a13d6[_0x0900('0x30')][_0x0900('0x31')]};});_0x32afc5[_0x0900('0x32')]=_[_0x0900('0x33')](_0x102d9c,'name');_0x32afc5[_0x0900('0x34')]=_['keys'](_0x2a8a71[_0x0900('0x34')]);_0x32afc5[_0x0900('0x35')]=_[_0x0900('0x36')](_0x32afc5[_0x0900('0x32')],_0x32afc5[_0x0900('0x34')]);_0x3fbd95[_0x0900('0x37')]=_['intersection'](_0x32afc5[_0x0900('0x32')],qs[_0x0900('0x38')](_0x2a8a71[_0x0900('0x34')]['fields']));_0x3fbd95[_0x0900('0x37')]=_0x3fbd95[_0x0900('0x37')][_0x0900('0x39')]?_0x3fbd95[_0x0900('0x37')]:_0x32afc5[_0x0900('0x32')];if(!_0x2a8a71[_0x0900('0x34')][_0x0900('0x3a')](_0x0900('0x3b'))){_0x3fbd95['limit']=qs['limit'](_0x2a8a71['query'][_0x0900('0x22')]);_0x3fbd95[_0x0900('0x1f')]=qs[_0x0900('0x1f')](_0x2a8a71['query']['offset']);}_0x3fbd95[_0x0900('0x3c')]=qs[_0x0900('0x3d')](_0x2a8a71[_0x0900('0x34')]['sort']);_0x3fbd95[_0x0900('0x3e')]=qs[_0x0900('0x35')](_[_0x0900('0x3f')](_0x2a8a71[_0x0900('0x34')],_0x32afc5[_0x0900('0x35')]),_0x102d9c);if(_0x2a8a71[_0x0900('0x34')][_0x0900('0x40')]){_0x3fbd95[_0x0900('0x3e')]=_[_0x0900('0x41')](_0x3fbd95[_0x0900('0x3e')],{'$or':_['map'](_0x102d9c,function(_0x5130bf){if(_0x5130bf['type']!==_0x0900('0x42')){var _0x999a7a={};_0x999a7a[_0x5130bf[_0x0900('0x2b')]]={'$like':'%'+_0x2a8a71[_0x0900('0x34')][_0x0900('0x40')]+'%'};return _0x999a7a;}})});}_0x3fbd95=_[_0x0900('0x41')]({},_0x3fbd95,_0x2a8a71[_0x0900('0x43')]);var _0x191cfe={'where':_0x3fbd95[_0x0900('0x3e')]};return db[_0x0900('0x2e')][_0x0900('0x21')](_0x191cfe)[_0x0900('0x28')](function(_0x1917f9){_0x50280f[_0x0900('0x21')]=_0x1917f9;if(_0x2a8a71[_0x0900('0x34')]['includeAll']){_0x3fbd95[_0x0900('0x44')]=[{'all':!![]}];}return db[_0x0900('0x2e')][_0x0900('0x45')](_0x3fbd95);})[_0x0900('0x28')](function(_0xecc751){_0x50280f[_0x0900('0x46')]=_0xecc751;return _0x50280f;})[_0x0900('0x28')](respondWithFilteredResult(_0x257914,_0x3fbd95))[_0x0900('0x47')](handleError(_0x257914,null));};exports[_0x0900('0x48')]=function(_0x96de65,_0x26ad8f){var _0x4809cb={'raw':![],'where':{'id':_0x96de65[_0x0900('0x49')]['id']}},_0x460faa={};_0x460faa[_0x0900('0x32')]=_[_0x0900('0x4a')](db[_0x0900('0x2e')][_0x0900('0x2f')]);_0x460faa['query']=_['keys'](_0x96de65[_0x0900('0x34')]);_0x460faa[_0x0900('0x35')]=_[_0x0900('0x36')](_0x460faa[_0x0900('0x32')],_0x460faa[_0x0900('0x34')]);_0x4809cb['attributes']=_['intersection'](_0x460faa[_0x0900('0x32')],qs[_0x0900('0x38')](_0x96de65[_0x0900('0x34')][_0x0900('0x38')]));_0x4809cb[_0x0900('0x37')]=_0x4809cb[_0x0900('0x37')][_0x0900('0x39')]?_0x4809cb[_0x0900('0x37')]:_0x460faa[_0x0900('0x32')];if(_0x96de65[_0x0900('0x34')][_0x0900('0x4b')]){_0x4809cb[_0x0900('0x44')]=[{'all':!![]}];}_0x4809cb=_[_0x0900('0x41')]({},_0x4809cb,_0x96de65[_0x0900('0x43')]);return db[_0x0900('0x2e')][_0x0900('0x4c')](_0x4809cb)['then'](handleEntityNotFound(_0x26ad8f,null))['then'](respondWithResult(_0x26ad8f,null))[_0x0900('0x47')](handleError(_0x26ad8f,null));};exports[_0x0900('0x4d')]=function(_0x11ad29,_0x1aa982){return db[_0x0900('0x2e')][_0x0900('0x4d')](_0x11ad29[_0x0900('0x4e')],{})[_0x0900('0x28')](respondWithResult(_0x1aa982,0xc9))[_0x0900('0x47')](handleError(_0x1aa982,null));};exports[_0x0900('0x26')]=function(_0x1df6a1,_0x8eb327){if(_0x1df6a1[_0x0900('0x4e')]['id']){delete _0x1df6a1['body']['id'];}return db[_0x0900('0x2e')][_0x0900('0x4c')]({'where':{'id':_0x1df6a1['params']['id']}})[_0x0900('0x28')](handleEntityNotFound(_0x8eb327,null))[_0x0900('0x28')](saveUpdates(_0x1df6a1['body'],null))[_0x0900('0x28')](respondWithResult(_0x8eb327,null))['catch'](handleError(_0x8eb327,null));};exports[_0x0900('0x27')]=function(_0x2a1390,_0x335e0a){return db[_0x0900('0x2e')][_0x0900('0x4c')]({'where':{'id':_0x2a1390[_0x0900('0x49')]['id']}})[_0x0900('0x28')](handleEntityNotFound(_0x335e0a,null))[_0x0900('0x28')](removeEntity(_0x335e0a,null))[_0x0900('0x47')](handleError(_0x335e0a,null));};exports['getConfigurations']=function(_0x5c4676,_0x291cda,_0x6dd810){var _0x179d1c={};var _0x2ac1c6={};var _0x77c487;var _0x528843;return db[_0x0900('0x2e')][_0x0900('0x4f')]({'where':{'id':_0x5c4676['params']['id']}})['then'](handleEntityNotFound(_0x291cda,null))[_0x0900('0x28')](function(_0x2be1f9){if(_0x2be1f9){_0x77c487=_0x2be1f9;_0x2ac1c6[_0x0900('0x32')]=_[_0x0900('0x4a')](db[_0x0900('0x50')][_0x0900('0x2f')]);_0x2ac1c6[_0x0900('0x34')]=_[_0x0900('0x4a')](_0x5c4676[_0x0900('0x34')]);_0x2ac1c6['filters']=_[_0x0900('0x36')](_0x2ac1c6[_0x0900('0x32')],_0x2ac1c6[_0x0900('0x34')]);_0x179d1c[_0x0900('0x37')]=_[_0x0900('0x36')](_0x2ac1c6[_0x0900('0x32')],qs[_0x0900('0x38')](_0x5c4676[_0x0900('0x34')][_0x0900('0x38')]));_0x179d1c[_0x0900('0x37')]=_0x179d1c[_0x0900('0x37')][_0x0900('0x39')]?_0x179d1c['attributes']:_0x2ac1c6['model'];_0x179d1c['order']=qs['sort'](_0x5c4676['query'][_0x0900('0x3d')]);_0x179d1c['where']=qs[_0x0900('0x35')](_['pick'](_0x5c4676[_0x0900('0x34')],_0x2ac1c6['filters']));if(_0x5c4676[_0x0900('0x34')][_0x0900('0x40')]){_0x179d1c[_0x0900('0x3e')]=_['merge'](_0x179d1c['where'],{'$or':_[_0x0900('0x33')](_0x179d1c['attributes'],function(_0xfa4c83){var _0x3b6c66={};_0x3b6c66[_0xfa4c83]={'$like':'%'+_0x5c4676['query'][_0x0900('0x40')]+'%'};return _0x3b6c66;})});}_0x179d1c=_[_0x0900('0x41')]({},_0x179d1c,_0x5c4676[_0x0900('0x43')]);return _0x77c487[_0x0900('0x51')](_0x179d1c);}})[_0x0900('0x28')](function(_0x12b673){if(_0x12b673){_0x528843=_0x12b673[_0x0900('0x39')];if(!_0x5c4676[_0x0900('0x34')][_0x0900('0x3a')](_0x0900('0x3b'))){_0x179d1c['limit']=qs[_0x0900('0x22')](_0x5c4676[_0x0900('0x34')][_0x0900('0x22')]);_0x179d1c[_0x0900('0x1f')]=qs[_0x0900('0x1f')](_0x5c4676[_0x0900('0x34')][_0x0900('0x1f')]);}return _0x77c487['getConfigurations'](_0x179d1c);}})[_0x0900('0x28')](function(_0x4f51ab){if(_0x4f51ab){return _0x4f51ab?{'count':_0x528843,'rows':_0x4f51ab}:null;}})['then'](respondWithResult(_0x291cda,null))[_0x0900('0x47')](handleError(_0x291cda,null));};exports['addConfiguration']=function(_0x1bd814,_0x57a764,_0x2b0474){if(_0x1bd814[_0x0900('0x4e')]['id']){delete _0x1bd814['body']['id'];}return db[_0x0900('0x2e')][_0x0900('0x4f')]({'where':{'id':_0x1bd814['params']['id']}})['then'](handleEntityNotFound(_0x57a764,null))[_0x0900('0x28')](function(_0x4e232d){if(_0x4e232d){_0x1bd814['body'][_0x0900('0x52')]=_0x4e232d['id'];_0x1bd814[_0x0900('0x4e')][_0x0900('0x53')]=integrations[_0x0900('0x54')](_0x1bd814[_0x0900('0x4e')][_0x0900('0x55')],_0x1bd814[_0x0900('0x4e')][_0x0900('0x30')]);_0x1bd814[_0x0900('0x4e')][_0x0900('0x56')]=integrations['getDescriptions'](_0x1bd814[_0x0900('0x4e')]['channel'],_0x1bd814[_0x0900('0x4e')][_0x0900('0x30')]);return db[_0x0900('0x50')][_0x0900('0x4d')](_0x1bd814['body'],{'include':[{'model':db[_0x0900('0x57')],'as':'Subjects'},{'model':db[_0x0900('0x57')],'as':_0x0900('0x56')}]});}return null;})['then'](respondWithResult(_0x57a764,null))['catch'](handleError(_0x57a764,null));};exports['getFields']=function(_0x1509d8,_0x2634de,_0x1365ae){var _0x495a60='';return db[_0x0900('0x2e')]['findOne']({'where':{'id':_0x1509d8[_0x0900('0x49')]['id']},'attributes':['id',_0x0900('0x58'),_0x0900('0x59')]})[_0x0900('0x28')](handleEntityNotFound(_0x2634de,null))[_0x0900('0x28')](function(_0x588a82){if(_0x588a82){_0x495a60=_0x588a82[_0x0900('0x58')];var _0xc6e107=_0x495a60['slice'](-0x1);if(_0xc6e107==='/'){_0x495a60=_0x495a60[_0x0900('0x5a')](0x0,_0x495a60['lastIndexOf'](_0xc6e107));}return rp({'method':_0x0900('0x5b'),'uri':util['format'](_0x0900('0x5c'),_0x495a60,_0x0900('0x5d')),'headers':{'Authorization':util[_0x0900('0x5e')](_0x0900('0x5f'),new Buffer(util[_0x0900('0x5e')]('%s:X',_0x588a82[_0x0900('0x59')]))[_0x0900('0x60')](_0x0900('0x61')))},'json':!![]});}})[_0x0900('0x28')](function(_0x1ae9a7){if(_0x1ae9a7){var _0x20af4f=[_0x0900('0x62'),'subject',_0x0900('0x63'),'description',_0x0900('0x1c'),_0x0900('0x64'),'group',_0x0900('0x65'),_0x0900('0x66'),'group','company'];_[_0x0900('0x67')](_0x1ae9a7,function(_0x18f61d){return _0x20af4f[_0x0900('0x68')](_0x18f61d['name'])||!_0x18f61d['default']&&_0x18f61d[_0x0900('0x30')]!=='custom_text'&&_0x18f61d['type']!==_0x0900('0x69');});return{'count':_0x1ae9a7['length'],'rows':_['map'](_0x1ae9a7,function(_0x2b5861){return{'id':_0x2b5861['name'],'name':_0x2b5861[_0x0900('0x6a')],'custom':!_0x2b5861[_0x0900('0x6b')],'options':_0x2b5861[_0x0900('0x6c')]?_[_0x0900('0x33')](_0x2b5861['choices'],function(_0x4bbd8a){return{'name':_['capitalize'](_0x4bbd8a),'value':_0x4bbd8a};}):[]};})};}})[_0x0900('0x28')](respondWithResult(_0x2634de,null))[_0x0900('0x47')](function(_0x61714f){var _0x27a4b7=_0x1509d8[_0x0900('0x34')][_0x0900('0x6d')]?0x1f4:_0x61714f[_0x0900('0x6e')]||0x1f4;logger[_0x0900('0x29')](_0x0900('0x6f'),_0x0900('0x70'),_0x27a4b7,JSON[_0x0900('0x71')](_0x61714f));delete _0x61714f[_0x0900('0x2b')];if(_0x27a4b7===0x191){_0x27a4b7=0x190;}_0x2634de[_0x0900('0x1c')](_0x27a4b7)[_0x0900('0x2c')](_0x1509d8[_0x0900('0x34')][_0x0900('0x6d')]?{'message':_0x0900('0x72'),'statusCode':_0x61714f[_0x0900('0x6e')]}:_0x61714f);});};
\ No newline at end of file
+var _0x340c=['bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','apply','reject','save','update','then','destroy','error','stack','send','index','map','FreshdeskAccount','rawAttributes','fieldName','model','name','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','type','count','include','findAll','rows','catch','show','params','length','includeAll','options','find','create','body','getConfigurations','pick','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','channel','FreshdeskConfiguration','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','subject','description','priority','group','source','ticket_type','company','remove','includes','default','custom_text','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment'];(function(_0x29315f,_0x4df038){var _0x1f4662=function(_0x9d17ce){while(--_0x9d17ce){_0x29315f['push'](_0x29315f['shift']());}};_0x1f4662(++_0x4df038);}(_0x340c,0xe5));var _0xc340=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x340c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc340('0x0'));var rimraf=require(_0xc340('0x1'));var zipdir=require(_0xc340('0x2'));var jsonpatch=require(_0xc340('0x3'));var rp=require('request-promise');var moment=require(_0xc340('0x4'));var BPromise=require(_0xc340('0x5'));var Mustache=require(_0xc340('0x6'));var util=require(_0xc340('0x7'));var path=require('path');var sox=require(_0xc340('0x8'));var csv=require(_0xc340('0x9'));var ejs=require(_0xc340('0xa'));var fs=require('fs');var fs_extra=require(_0xc340('0xb'));var _=require(_0xc340('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc340('0xd'));var toCsv=require(_0xc340('0x9'));var querystring=require('querystring');var Papa=require(_0xc340('0xe'));var Redis=require(_0xc340('0xf'));var authService=require(_0xc340('0x10'));var qs=require(_0xc340('0x11'));var as=require(_0xc340('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc340('0x13'))(_0xc340('0x14'));var utils=require(_0xc340('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc340('0x16'));var db=require(_0xc340('0x17'))['db'];var integrations=require(_0xc340('0x18'));function respondWithStatusCode(_0x1a9f98,_0x2eae5f){_0x2eae5f=_0x2eae5f||0xcc;return function(_0x50365c){if(_0x50365c){return _0x1a9f98[_0xc340('0x19')](_0x2eae5f);}return _0x1a9f98[_0xc340('0x1a')](_0x2eae5f)[_0xc340('0x1b')]();};}function respondWithResult(_0x10b317,_0x2f257b){_0x2f257b=_0x2f257b||0xc8;return function(_0x4abaa9){if(_0x4abaa9){return _0x10b317[_0xc340('0x1a')](_0x2f257b)[_0xc340('0x1c')](_0x4abaa9);}};}function respondWithFilteredResult(_0x2609b2,_0x27f7f1){return function(_0x3576b7){if(_0x3576b7){var _0x540a86=typeof _0x27f7f1[_0xc340('0x1d')]===_0xc340('0x1e')&&typeof _0x27f7f1[_0xc340('0x1f')]===_0xc340('0x1e');var _0x37c52a=_0x3576b7['count'];var _0x2a08e1=_0x540a86?0x0:_0x27f7f1[_0xc340('0x1d')];var _0x3696f3=_0x540a86?_0x3576b7['count']:_0x27f7f1['offset']+_0x27f7f1[_0xc340('0x1f')];var _0x427a6d;if(_0x3696f3>=_0x37c52a){_0x3696f3=_0x37c52a;_0x427a6d=0xc8;}else{_0x427a6d=0xce;}_0x2609b2[_0xc340('0x1a')](_0x427a6d);return _0x2609b2['set']('Content-Range',_0x2a08e1+'-'+_0x3696f3+'/'+_0x37c52a)[_0xc340('0x1c')](_0x3576b7);}return null;};}function patchUpdates(_0x4a73af){return function(_0x3b01e5){try{jsonpatch[_0xc340('0x20')](_0x3b01e5,_0x4a73af,!![]);}catch(_0x25f22f){return BPromise[_0xc340('0x21')](_0x25f22f);}return _0x3b01e5[_0xc340('0x22')]();};}function saveUpdates(_0x435c28,_0xe1a519){return function(_0xb6e946){if(_0xb6e946){return _0xb6e946[_0xc340('0x23')](_0x435c28)[_0xc340('0x24')](function(_0x5ac403){return _0x5ac403;});}return null;};}function removeEntity(_0x10543e,_0x250dbd){return function(_0x5e3892){if(_0x5e3892){return _0x5e3892[_0xc340('0x25')]()['then'](function(){_0x10543e[_0xc340('0x1a')](0xcc)[_0xc340('0x1b')]();});}};}function handleEntityNotFound(_0x36ea03,_0x57a615){return function(_0x9f91bd){if(!_0x9f91bd){_0x36ea03[_0xc340('0x19')](0x194);}return _0x9f91bd;};}function handleError(_0x33b1b5,_0x183bfa){_0x183bfa=_0x183bfa||0x1f4;return function(_0xd9e330){logger[_0xc340('0x26')](_0xd9e330[_0xc340('0x27')]);if(_0xd9e330['name']){delete _0xd9e330['name'];}_0x33b1b5[_0xc340('0x1a')](_0x183bfa)[_0xc340('0x28')](_0xd9e330);};}exports[_0xc340('0x29')]=function(_0x17a567,_0xa26821){var _0xf81b45={},_0x48c974={},_0x160c38={'count':0x0,'rows':[]};var _0x1b6b00=_[_0xc340('0x2a')](db[_0xc340('0x2b')][_0xc340('0x2c')],function(_0x9f64c2){return{'name':_0x9f64c2[_0xc340('0x2d')],'type':_0x9f64c2['type']['key']};});_0x48c974[_0xc340('0x2e')]=_[_0xc340('0x2a')](_0x1b6b00,_0xc340('0x2f'));_0x48c974[_0xc340('0x30')]=_[_0xc340('0x31')](_0x17a567[_0xc340('0x30')]);_0x48c974[_0xc340('0x32')]=_['intersection'](_0x48c974[_0xc340('0x2e')],_0x48c974[_0xc340('0x30')]);_0xf81b45['attributes']=_[_0xc340('0x33')](_0x48c974[_0xc340('0x2e')],qs[_0xc340('0x34')](_0x17a567['query'][_0xc340('0x34')]));_0xf81b45[_0xc340('0x35')]=_0xf81b45[_0xc340('0x35')]['length']?_0xf81b45[_0xc340('0x35')]:_0x48c974[_0xc340('0x2e')];if(!_0x17a567['query'][_0xc340('0x36')]('nolimit')){_0xf81b45[_0xc340('0x1f')]=qs[_0xc340('0x1f')](_0x17a567[_0xc340('0x30')]['limit']);_0xf81b45[_0xc340('0x1d')]=qs[_0xc340('0x1d')](_0x17a567['query'][_0xc340('0x1d')]);}_0xf81b45[_0xc340('0x37')]=qs[_0xc340('0x38')](_0x17a567[_0xc340('0x30')][_0xc340('0x38')]);_0xf81b45[_0xc340('0x39')]=qs[_0xc340('0x32')](_['pick'](_0x17a567[_0xc340('0x30')],_0x48c974[_0xc340('0x32')]),_0x1b6b00);if(_0x17a567[_0xc340('0x30')][_0xc340('0x3a')]){_0xf81b45[_0xc340('0x39')]=_[_0xc340('0x3b')](_0xf81b45['where'],{'$or':_[_0xc340('0x2a')](_0x1b6b00,function(_0x1d6e27){if(_0x1d6e27[_0xc340('0x3c')]!=='VIRTUAL'){var _0x36ab0e={};_0x36ab0e[_0x1d6e27['name']]={'$like':'%'+_0x17a567['query']['filter']+'%'};return _0x36ab0e;}})});}_0xf81b45=_[_0xc340('0x3b')]({},_0xf81b45,_0x17a567['options']);var _0x1737cf={'where':_0xf81b45[_0xc340('0x39')]};return db['FreshdeskAccount'][_0xc340('0x3d')](_0x1737cf)[_0xc340('0x24')](function(_0x399be0){_0x160c38['count']=_0x399be0;if(_0x17a567[_0xc340('0x30')]['includeAll']){_0xf81b45[_0xc340('0x3e')]=[{'all':!![]}];}return db[_0xc340('0x2b')][_0xc340('0x3f')](_0xf81b45);})[_0xc340('0x24')](function(_0x1d4b1c){_0x160c38[_0xc340('0x40')]=_0x1d4b1c;return _0x160c38;})[_0xc340('0x24')](respondWithFilteredResult(_0xa26821,_0xf81b45))[_0xc340('0x41')](handleError(_0xa26821,null));};exports[_0xc340('0x42')]=function(_0x47ae28,_0x5f00b2){var _0x668a59={'raw':![],'where':{'id':_0x47ae28[_0xc340('0x43')]['id']}},_0xc22c63={};_0xc22c63['model']=_['keys'](db[_0xc340('0x2b')][_0xc340('0x2c')]);_0xc22c63[_0xc340('0x30')]=_[_0xc340('0x31')](_0x47ae28[_0xc340('0x30')]);_0xc22c63[_0xc340('0x32')]=_[_0xc340('0x33')](_0xc22c63[_0xc340('0x2e')],_0xc22c63[_0xc340('0x30')]);_0x668a59[_0xc340('0x35')]=_[_0xc340('0x33')](_0xc22c63['model'],qs[_0xc340('0x34')](_0x47ae28[_0xc340('0x30')][_0xc340('0x34')]));_0x668a59[_0xc340('0x35')]=_0x668a59[_0xc340('0x35')][_0xc340('0x44')]?_0x668a59[_0xc340('0x35')]:_0xc22c63['model'];if(_0x47ae28[_0xc340('0x30')][_0xc340('0x45')]){_0x668a59[_0xc340('0x3e')]=[{'all':!![]}];}_0x668a59=_[_0xc340('0x3b')]({},_0x668a59,_0x47ae28[_0xc340('0x46')]);return db[_0xc340('0x2b')][_0xc340('0x47')](_0x668a59)['then'](handleEntityNotFound(_0x5f00b2,null))['then'](respondWithResult(_0x5f00b2,null))[_0xc340('0x41')](handleError(_0x5f00b2,null));};exports[_0xc340('0x48')]=function(_0x1f3516,_0x265240){return db[_0xc340('0x2b')]['create'](_0x1f3516['body'],{})[_0xc340('0x24')](respondWithResult(_0x265240,0xc9))['catch'](handleError(_0x265240,null));};exports['update']=function(_0x4ad5c8,_0x29d5ad){if(_0x4ad5c8[_0xc340('0x49')]['id']){delete _0x4ad5c8[_0xc340('0x49')]['id'];}return db[_0xc340('0x2b')][_0xc340('0x47')]({'where':{'id':_0x4ad5c8[_0xc340('0x43')]['id']}})[_0xc340('0x24')](handleEntityNotFound(_0x29d5ad,null))[_0xc340('0x24')](saveUpdates(_0x4ad5c8[_0xc340('0x49')],null))[_0xc340('0x24')](respondWithResult(_0x29d5ad,null))[_0xc340('0x41')](handleError(_0x29d5ad,null));};exports[_0xc340('0x25')]=function(_0x599a09,_0x52fe72){return db[_0xc340('0x2b')][_0xc340('0x47')]({'where':{'id':_0x599a09[_0xc340('0x43')]['id']}})[_0xc340('0x24')](handleEntityNotFound(_0x52fe72,null))['then'](removeEntity(_0x52fe72,null))['catch'](handleError(_0x52fe72,null));};exports[_0xc340('0x4a')]=function(_0x5922df,_0x303b26,_0x51cedc){var _0x5d377c={};var _0x4374ce={};var _0x4522f6;var _0x3151f3;return db[_0xc340('0x2b')]['findOne']({'where':{'id':_0x5922df['params']['id']}})[_0xc340('0x24')](handleEntityNotFound(_0x303b26,null))['then'](function(_0x5c333d){if(_0x5c333d){_0x4522f6=_0x5c333d;_0x4374ce[_0xc340('0x2e')]=_[_0xc340('0x31')](db['FreshdeskConfiguration'][_0xc340('0x2c')]);_0x4374ce[_0xc340('0x30')]=_['keys'](_0x5922df['query']);_0x4374ce['filters']=_['intersection'](_0x4374ce[_0xc340('0x2e')],_0x4374ce[_0xc340('0x30')]);_0x5d377c[_0xc340('0x35')]=_[_0xc340('0x33')](_0x4374ce[_0xc340('0x2e')],qs['fields'](_0x5922df[_0xc340('0x30')][_0xc340('0x34')]));_0x5d377c['attributes']=_0x5d377c[_0xc340('0x35')]['length']?_0x5d377c[_0xc340('0x35')]:_0x4374ce[_0xc340('0x2e')];_0x5d377c['order']=qs[_0xc340('0x38')](_0x5922df[_0xc340('0x30')][_0xc340('0x38')]);_0x5d377c[_0xc340('0x39')]=qs[_0xc340('0x32')](_[_0xc340('0x4b')](_0x5922df[_0xc340('0x30')],_0x4374ce[_0xc340('0x32')]));if(_0x5922df['query'][_0xc340('0x3a')]){_0x5d377c[_0xc340('0x39')]=_['merge'](_0x5d377c[_0xc340('0x39')],{'$or':_[_0xc340('0x2a')](_0x5d377c[_0xc340('0x35')],function(_0x40f0f4){var _0x380a46={};_0x380a46[_0x40f0f4]={'$like':'%'+_0x5922df['query'][_0xc340('0x3a')]+'%'};return _0x380a46;})});}_0x5d377c=_[_0xc340('0x3b')]({},_0x5d377c,_0x5922df[_0xc340('0x46')]);return _0x4522f6[_0xc340('0x4a')](_0x5d377c);}})[_0xc340('0x24')](function(_0x350d00){if(_0x350d00){_0x3151f3=_0x350d00[_0xc340('0x44')];if(!_0x5922df[_0xc340('0x30')][_0xc340('0x36')](_0xc340('0x4c'))){_0x5d377c[_0xc340('0x1f')]=qs[_0xc340('0x1f')](_0x5922df[_0xc340('0x30')]['limit']);_0x5d377c['offset']=qs[_0xc340('0x1d')](_0x5922df[_0xc340('0x30')][_0xc340('0x1d')]);}return _0x4522f6['getConfigurations'](_0x5d377c);}})['then'](function(_0x4a07bc){if(_0x4a07bc){return _0x4a07bc?{'count':_0x3151f3,'rows':_0x4a07bc}:null;}})[_0xc340('0x24')](respondWithResult(_0x303b26,null))[_0xc340('0x41')](handleError(_0x303b26,null));};exports[_0xc340('0x4d')]=function(_0x522f3c,_0x174191,_0x36ae6f){if(_0x522f3c[_0xc340('0x49')]['id']){delete _0x522f3c[_0xc340('0x49')]['id'];}return db[_0xc340('0x2b')][_0xc340('0x4e')]({'where':{'id':_0x522f3c['params']['id']}})[_0xc340('0x24')](handleEntityNotFound(_0x174191,null))[_0xc340('0x24')](function(_0x3237bc){if(_0x3237bc){_0x522f3c['body'][_0xc340('0x4f')]=_0x3237bc['id'];_0x522f3c[_0xc340('0x49')][_0xc340('0x50')]=integrations[_0xc340('0x51')](_0x522f3c[_0xc340('0x49')]['channel'],_0x522f3c[_0xc340('0x49')]['type']);_0x522f3c[_0xc340('0x49')][_0xc340('0x52')]=integrations['getDescriptions'](_0x522f3c[_0xc340('0x49')][_0xc340('0x53')],_0x522f3c[_0xc340('0x49')][_0xc340('0x3c')]);return db[_0xc340('0x54')][_0xc340('0x48')](_0x522f3c['body'],{'include':[{'model':db[_0xc340('0x55')],'as':_0xc340('0x50')},{'model':db[_0xc340('0x55')],'as':_0xc340('0x52')}]});}return null;})[_0xc340('0x24')](respondWithResult(_0x174191,null))[_0xc340('0x41')](handleError(_0x174191,null));};exports[_0xc340('0x56')]=function(_0x4c604d,_0x41d3cb,_0x524702){var _0x246fe2='';return db[_0xc340('0x2b')][_0xc340('0x4e')]({'where':{'id':_0x4c604d[_0xc340('0x43')]['id']},'attributes':['id',_0xc340('0x57'),_0xc340('0x58')]})[_0xc340('0x24')](handleEntityNotFound(_0x41d3cb,null))[_0xc340('0x24')](function(_0x1d5a2d){if(_0x1d5a2d){_0x246fe2=_0x1d5a2d[_0xc340('0x57')];var _0x43df6e=_0x246fe2[_0xc340('0x59')](-0x1);if(_0x43df6e==='/'){_0x246fe2=_0x246fe2['substring'](0x0,_0x246fe2[_0xc340('0x5a')](_0x43df6e));}return rp({'method':_0xc340('0x5b'),'uri':util[_0xc340('0x5c')](_0xc340('0x5d'),_0x246fe2,_0xc340('0x5e')),'headers':{'Authorization':util[_0xc340('0x5c')](_0xc340('0x5f'),new Buffer(util['format'](_0xc340('0x60'),_0x1d5a2d[_0xc340('0x58')]))[_0xc340('0x61')](_0xc340('0x62')))},'json':!![]});}})[_0xc340('0x24')](function(_0x3d3a0e){if(_0x3d3a0e){var _0x57f3b5=['requester',_0xc340('0x63'),'agent',_0xc340('0x64'),_0xc340('0x1a'),_0xc340('0x65'),_0xc340('0x66'),_0xc340('0x67'),_0xc340('0x68'),_0xc340('0x66'),_0xc340('0x69')];_[_0xc340('0x6a')](_0x3d3a0e,function(_0x10558c){return _0x57f3b5[_0xc340('0x6b')](_0x10558c['name'])||!_0x10558c[_0xc340('0x6c')]&&_0x10558c[_0xc340('0x3c')]!==_0xc340('0x6d')&&_0x10558c[_0xc340('0x3c')]!=='custom_dropdown';});return{'count':_0x3d3a0e['length'],'rows':_[_0xc340('0x2a')](_0x3d3a0e,function(_0x344a68){return{'id':_0x344a68[_0xc340('0x2f')],'name':_0x344a68[_0xc340('0x6e')],'custom':!_0x344a68[_0xc340('0x6c')],'options':_0x344a68['choices']?_[_0xc340('0x2a')](_0x344a68[_0xc340('0x6f')],function(_0x269974){return{'name':_['capitalize'](_0x269974),'value':_0x269974};}):[]};})};}})[_0xc340('0x24')](respondWithResult(_0x41d3cb,null))[_0xc340('0x41')](function(_0x421a03){var _0x48bbce=_0x4c604d[_0xc340('0x30')][_0xc340('0x70')]?0x1f4:_0x421a03[_0xc340('0x71')]||0x1f4;logger['error'](_0xc340('0x72'),_0xc340('0x56'),_0x48bbce,JSON[_0xc340('0x73')](_0x421a03));delete _0x421a03['name'];if(_0x48bbce===0x191){_0x48bbce=0x190;}_0x41d3cb[_0xc340('0x1a')](_0x48bbce)[_0xc340('0x28')](_0x4c604d[_0xc340('0x30')][_0xc340('0x70')]?{'message':_0xc340('0x74'),'statusCode':_0x421a03['statusCode']}:_0x421a03);});};
\ No newline at end of file
index dbd5d17..6b699a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x575c=['int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','FreshdeskAccount'];(function(_0xf0ec6e,_0xa183d3){var _0x8bbc27=function(_0x39822b){while(--_0x39822b){_0xf0ec6e['push'](_0xf0ec6e['shift']());}};_0x8bbc27(++_0xa183d3);}(_0x575c,0xe1));var _0xc575=function(_0x54c637,_0x2f7fb8){_0x54c637=_0x54c637-0x0;var _0x47ca6e=_0x575c[_0x54c637];return _0x47ca6e;};'use strict';var _=require(_0xc575('0x0'));var util=require(_0xc575('0x1'));var logger=require(_0xc575('0x2'))(_0xc575('0x3'));var moment=require(_0xc575('0x4'));var BPromise=require(_0xc575('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc575('0x6'));var rimraf=require(_0xc575('0x7'));var config=require(_0xc575('0x8'));var attributes=require(_0xc575('0x9'));var integrations=require(_0xc575('0xa'));module['exports']=function(_0x1d4535,_0x5d7cc7){return _0x1d4535[_0xc575('0xb')](_0xc575('0xc'),attributes,{'tableName':_0xc575('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x656d=['lodash','../../config/logger','moment','request-promise','path','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts'];(function(_0x533bcc,_0x1ba26f){var _0x364d38=function(_0xeec8d4){while(--_0xeec8d4){_0x533bcc['push'](_0x533bcc['shift']());}};_0x364d38(++_0x1ba26f);}(_0x656d,0xe4));var _0xd656=function(_0x16ee0a,_0x46bdc6){_0x16ee0a=_0x16ee0a-0x0;var _0x4de8c4=_0x656d[_0x16ee0a];return _0x4de8c4;};'use strict';var _=require(_0xd656('0x0'));var util=require('util');var logger=require(_0xd656('0x1'))('api');var moment=require(_0xd656('0x2'));var BPromise=require('bluebird');var rp=require(_0xd656('0x3'));var fs=require('fs');var path=require(_0xd656('0x4'));var rimraf=require('rimraf');var config=require(_0xd656('0x5'));var attributes=require(_0xd656('0x6'));var integrations=require(_0xd656('0x7'));module[_0xd656('0x8')]=function(_0x23ac3c,_0x4a388a){return _0x23ac3c[_0xd656('0x9')](_0xd656('0xa'),attributes,{'tableName':_0xd656('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9982c85..aa23637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x385b=['../../config/environment','jayson/promise','client','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','limit','map','model','include','catch','ShowFreshdeskAccount','find','raw','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x51ce27,_0x1b738c){var _0x4ee363=function(_0x1ab7e1){while(--_0x1ab7e1){_0x51ce27['push'](_0x51ce27['shift']());}};_0x4ee363(++_0x1b738c);}(_0x385b,0x17a));var _0xb385=function(_0x356d1b,_0x2a9fb7){_0x356d1b=_0x356d1b-0x0;var _0x4c2ca4=_0x385b[_0x356d1b];return _0x4c2ca4;};'use strict';var _=require(_0xb385('0x0'));var util=require('util');var moment=require(_0xb385('0x1'));var BPromise=require(_0xb385('0x2'));var rs=require(_0xb385('0x3'));var fs=require('fs');var Redis=require(_0xb385('0x4'));var db=require(_0xb385('0x5'))['db'];var utils=require(_0xb385('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb385('0x7'));var jayson=require(_0xb385('0x8'));var client=jayson[_0xb385('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51a76a,_0x307f04,_0x39d7ea){return new BPromise(function(_0x3848c1,_0x27d807){return client['request'](_0x51a76a,_0x39d7ea)[_0xb385('0xa')](function(_0x53acc9){logger[_0xb385('0xb')](_0xb385('0xc'),_0x307f04,'request\x20sent');logger[_0xb385('0xd')](_0xb385('0xe'),_0x307f04,_0xb385('0xf'),JSON['stringify'](_0x53acc9));if(_0x53acc9[_0xb385('0x10')]){if(_0x53acc9[_0xb385('0x10')][_0xb385('0x11')]===0x1f4){logger['error'](_0xb385('0xc'),_0x307f04,_0x53acc9[_0xb385('0x10')]['message']);return _0x27d807(_0x53acc9[_0xb385('0x10')][_0xb385('0x12')]);}logger[_0xb385('0x10')](_0xb385('0xc'),_0x307f04,_0x53acc9[_0xb385('0x10')][_0xb385('0x12')]);return _0x3848c1(_0x53acc9[_0xb385('0x10')]['message']);}else{logger[_0xb385('0xb')](_0xb385('0xc'),_0x307f04,_0xb385('0xf'));_0x3848c1(_0x53acc9[_0xb385('0x13')][_0xb385('0x12')]);}})['catch'](function(_0xd7826){logger[_0xb385('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x307f04,_0xd7826);_0x27d807(_0xd7826);});});}exports[_0xb385('0x14')]=function(_0x143c12){var _0x167e9a=this;return new Promise(function(_0xe2108e,_0xba590a){return db[_0xb385('0x15')][_0xb385('0x16')]({'raw':_0x143c12[_0xb385('0x17')]?_0x143c12[_0xb385('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x143c12[_0xb385('0x17')]?_0x143c12[_0xb385('0x17')][_0xb385('0x18')]||null:null,'attributes':_0x143c12[_0xb385('0x17')]?_0x143c12['options'][_0xb385('0x19')]||null:null,'limit':_0x143c12[_0xb385('0x17')]?_0x143c12[_0xb385('0x17')][_0xb385('0x1a')]||null:null,'include':_0x143c12[_0xb385('0x17')]?_0x143c12['options']['include']?_[_0xb385('0x1b')](_0x143c12[_0xb385('0x17')]['include'],function(_0x263f82){return{'model':db[_0x263f82[_0xb385('0x1c')]],'as':_0x263f82['as'],'attributes':_0x263f82['attributes'],'include':_0x263f82[_0xb385('0x1d')]?_['map'](_0x263f82['include'],function(_0x4c97ff){return{'model':db[_0x4c97ff[_0xb385('0x1c')]],'as':_0x4c97ff['as'],'attributes':_0x4c97ff[_0xb385('0x19')],'include':_0x4c97ff[_0xb385('0x1d')]?_[_0xb385('0x1b')](_0x4c97ff['include'],function(_0x10f15e){return{'model':db[_0x10f15e[_0xb385('0x1c')]],'as':_0x10f15e['as'],'attributes':_0x10f15e['attributes']};}):[]};}):[]};}):[]:[]})[_0xb385('0xa')](function(_0x6cff8f){logger[_0xb385('0xb')](_0xb385('0x14'),_0x143c12);logger[_0xb385('0xd')](_0xb385('0x14'),_0x143c12,JSON['stringify'](_0x6cff8f));_0xe2108e(_0x6cff8f);})[_0xb385('0x1e')](function(_0x18f1e1){logger[_0xb385('0x10')](_0xb385('0x14'),_0x18f1e1[_0xb385('0x12')],_0x143c12);_0xba590a(_0x167e9a[_0xb385('0x10')](0x1f4,_0x18f1e1[_0xb385('0x12')]));});});};exports[_0xb385('0x1f')]=function(_0x53d740){var _0x3e42b2=this;return new Promise(function(_0x3b5b36,_0x3e5b55){return db[_0xb385('0x15')][_0xb385('0x20')]({'raw':_0x53d740[_0xb385('0x17')]?_0x53d740[_0xb385('0x17')][_0xb385('0x21')]===undefined?!![]:![]:!![],'where':_0x53d740['options']?_0x53d740[_0xb385('0x17')][_0xb385('0x18')]||null:null,'attributes':_0x53d740[_0xb385('0x17')]?_0x53d740['options'][_0xb385('0x19')]||null:null,'include':_0x53d740[_0xb385('0x17')]?_0x53d740[_0xb385('0x17')][_0xb385('0x1d')]?_[_0xb385('0x1b')](_0x53d740[_0xb385('0x17')][_0xb385('0x1d')],function(_0x4b2e53){return{'model':db[_0x4b2e53['model']],'as':_0x4b2e53['as'],'attributes':_0x4b2e53[_0xb385('0x19')],'include':_0x4b2e53['include']?_[_0xb385('0x1b')](_0x4b2e53[_0xb385('0x1d')],function(_0x2faef4){return{'model':db[_0x2faef4[_0xb385('0x1c')]],'as':_0x2faef4['as'],'attributes':_0x2faef4[_0xb385('0x19')],'include':_0x2faef4[_0xb385('0x1d')]?_[_0xb385('0x1b')](_0x2faef4['include'],function(_0x3dd7e9){return{'model':db[_0x3dd7e9[_0xb385('0x1c')]],'as':_0x3dd7e9['as'],'attributes':_0x3dd7e9[_0xb385('0x19')]};}):[]};}):[]};}):[]:[]})[_0xb385('0xa')](function(_0x5135c2){logger['info'](_0xb385('0x1f'),_0x53d740);logger[_0xb385('0xd')](_0xb385('0x1f'),_0x53d740,JSON[_0xb385('0x22')](_0x5135c2));_0x3b5b36(_0x5135c2);})['catch'](function(_0x61cc57){logger[_0xb385('0x10')]('ShowFreshdeskAccount',_0x61cc57[_0xb385('0x12')],_0x53d740);_0x3e5b55(_0x3e42b2[_0xb385('0x10')](0x1f4,_0x61cc57[_0xb385('0x12')]));});});};
\ No newline at end of file
+var _0xcfbf=['raw','ShowFreshdeskAccount','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetFreshdeskAccount','findAll','options','attributes','include','map','model','FreshdeskAccount','find'];(function(_0x45d288,_0x751033){var _0x33cb45=function(_0x34859f){while(--_0x34859f){_0x45d288['push'](_0x45d288['shift']());}};_0x33cb45(++_0x751033);}(_0xcfbf,0x8b));var _0xfcfb=function(_0x132fe0,_0x52a1bb){_0x132fe0=_0x132fe0-0x0;var _0x41ec97=_0xcfbf[_0x132fe0];return _0x41ec97;};'use strict';var _=require(_0xfcfb('0x0'));var util=require(_0xfcfb('0x1'));var moment=require(_0xfcfb('0x2'));var BPromise=require('bluebird');var rs=require(_0xfcfb('0x3'));var fs=require('fs');var Redis=require(_0xfcfb('0x4'));var db=require(_0xfcfb('0x5'))['db'];var utils=require(_0xfcfb('0x6'));var logger=require(_0xfcfb('0x7'))('rpc');var config=require(_0xfcfb('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfcfb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8b0bc3,_0x3ef6d9,_0x400327){return new BPromise(function(_0x21a8f8,_0x1dc4db){return client[_0xfcfb('0xa')](_0x8b0bc3,_0x400327)[_0xfcfb('0xb')](function(_0x4ab86e){logger[_0xfcfb('0xc')](_0xfcfb('0xd'),_0x3ef6d9,_0xfcfb('0xe'));logger[_0xfcfb('0xf')](_0xfcfb('0x10'),_0x3ef6d9,_0xfcfb('0xe'),JSON[_0xfcfb('0x11')](_0x4ab86e));if(_0x4ab86e[_0xfcfb('0x12')]){if(_0x4ab86e['error'][_0xfcfb('0x13')]===0x1f4){logger['error'](_0xfcfb('0xd'),_0x3ef6d9,_0x4ab86e[_0xfcfb('0x12')][_0xfcfb('0x14')]);return _0x1dc4db(_0x4ab86e[_0xfcfb('0x12')][_0xfcfb('0x14')]);}logger['error'](_0xfcfb('0xd'),_0x3ef6d9,_0x4ab86e[_0xfcfb('0x12')][_0xfcfb('0x14')]);return _0x21a8f8(_0x4ab86e[_0xfcfb('0x12')][_0xfcfb('0x14')]);}else{logger[_0xfcfb('0xc')](_0xfcfb('0xd'),_0x3ef6d9,_0xfcfb('0xe'));_0x21a8f8(_0x4ab86e[_0xfcfb('0x15')][_0xfcfb('0x14')]);}})['catch'](function(_0x479989){logger[_0xfcfb('0x12')](_0xfcfb('0xd'),_0x3ef6d9,_0x479989);_0x1dc4db(_0x479989);});});}exports[_0xfcfb('0x16')]=function(_0x3cb1c2){var _0x10c9de=this;return new Promise(function(_0x3990c1,_0x8c9bc3){return db['FreshdeskAccount'][_0xfcfb('0x17')]({'raw':_0x3cb1c2['options']?_0x3cb1c2['options']['raw']===undefined?!![]:![]:!![],'where':_0x3cb1c2[_0xfcfb('0x18')]?_0x3cb1c2[_0xfcfb('0x18')]['where']||null:null,'attributes':_0x3cb1c2[_0xfcfb('0x18')]?_0x3cb1c2[_0xfcfb('0x18')][_0xfcfb('0x19')]||null:null,'limit':_0x3cb1c2[_0xfcfb('0x18')]?_0x3cb1c2['options']['limit']||null:null,'include':_0x3cb1c2['options']?_0x3cb1c2['options'][_0xfcfb('0x1a')]?_['map'](_0x3cb1c2[_0xfcfb('0x18')][_0xfcfb('0x1a')],function(_0x3117bf){return{'model':db[_0x3117bf['model']],'as':_0x3117bf['as'],'attributes':_0x3117bf[_0xfcfb('0x19')],'include':_0x3117bf[_0xfcfb('0x1a')]?_[_0xfcfb('0x1b')](_0x3117bf['include'],function(_0x1a02a0){return{'model':db[_0x1a02a0[_0xfcfb('0x1c')]],'as':_0x1a02a0['as'],'attributes':_0x1a02a0['attributes'],'include':_0x1a02a0[_0xfcfb('0x1a')]?_[_0xfcfb('0x1b')](_0x1a02a0[_0xfcfb('0x1a')],function(_0x5afbf2){return{'model':db[_0x5afbf2[_0xfcfb('0x1c')]],'as':_0x5afbf2['as'],'attributes':_0x5afbf2[_0xfcfb('0x19')]};}):[]};}):[]};}):[]:[]})[_0xfcfb('0xb')](function(_0x4a677f){logger[_0xfcfb('0xc')](_0xfcfb('0x16'),_0x3cb1c2);logger['debug']('GetFreshdeskAccount',_0x3cb1c2,JSON[_0xfcfb('0x11')](_0x4a677f));_0x3990c1(_0x4a677f);})['catch'](function(_0x58fbb3){logger[_0xfcfb('0x12')](_0xfcfb('0x16'),_0x58fbb3[_0xfcfb('0x14')],_0x3cb1c2);_0x8c9bc3(_0x10c9de[_0xfcfb('0x12')](0x1f4,_0x58fbb3['message']));});});};exports['ShowFreshdeskAccount']=function(_0x474fdb){var _0x3e0b97=this;return new Promise(function(_0x294c49,_0x3b41bf){return db[_0xfcfb('0x1d')][_0xfcfb('0x1e')]({'raw':_0x474fdb[_0xfcfb('0x18')]?_0x474fdb[_0xfcfb('0x18')][_0xfcfb('0x1f')]===undefined?!![]:![]:!![],'where':_0x474fdb[_0xfcfb('0x18')]?_0x474fdb[_0xfcfb('0x18')]['where']||null:null,'attributes':_0x474fdb[_0xfcfb('0x18')]?_0x474fdb[_0xfcfb('0x18')][_0xfcfb('0x19')]||null:null,'include':_0x474fdb[_0xfcfb('0x18')]?_0x474fdb[_0xfcfb('0x18')][_0xfcfb('0x1a')]?_[_0xfcfb('0x1b')](_0x474fdb['options'][_0xfcfb('0x1a')],function(_0x466361){return{'model':db[_0x466361[_0xfcfb('0x1c')]],'as':_0x466361['as'],'attributes':_0x466361['attributes'],'include':_0x466361[_0xfcfb('0x1a')]?_[_0xfcfb('0x1b')](_0x466361[_0xfcfb('0x1a')],function(_0x4cf73e){return{'model':db[_0x4cf73e['model']],'as':_0x4cf73e['as'],'attributes':_0x4cf73e['attributes'],'include':_0x4cf73e[_0xfcfb('0x1a')]?_[_0xfcfb('0x1b')](_0x4cf73e['include'],function(_0x5ead0d){return{'model':db[_0x5ead0d[_0xfcfb('0x1c')]],'as':_0x5ead0d['as'],'attributes':_0x5ead0d[_0xfcfb('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x25143b){logger[_0xfcfb('0xc')](_0xfcfb('0x20'),_0x474fdb);logger[_0xfcfb('0xf')](_0xfcfb('0x20'),_0x474fdb,JSON['stringify'](_0x25143b));_0x294c49(_0x25143b);})[_0xfcfb('0x21')](function(_0x5e7b9f){logger[_0xfcfb('0x12')](_0xfcfb('0x20'),_0x5e7b9f[_0xfcfb('0x14')],_0x474fdb);_0x3b41bf(_0x3e0b97['error'](0x1f4,_0x5e7b9f[_0xfcfb('0x14')]));});});};
\ No newline at end of file
index 15b08a1..7577a72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a2=['express','Router','fs-extra','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','/:id/subjects','getTags','post','create','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x79a2,0x97));var _0x279a=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x79a2[_0x12fc8d];return _0x3f9d04;};'use strict';var multer=require(_0x279a('0x0'));var util=require('util');var path=require(_0x279a('0x1'));var timeout=require(_0x279a('0x2'));var express=require(_0x279a('0x3'));var router=express[_0x279a('0x4')]();var fs_extra=require(_0x279a('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x279a('0x6'));var controller=require('./intFreshdeskConfiguration.controller');router['get']('/',auth[_0x279a('0x7')](),controller[_0x279a('0x8')]);router[_0x279a('0x9')](_0x279a('0xa'),auth[_0x279a('0x7')](),controller[_0x279a('0xb')]);router['get'](_0x279a('0xc'),auth['isAuthenticated'](),controller[_0x279a('0xd')]);router['get'](_0x279a('0xe'),auth[_0x279a('0x7')](),controller['getSubjects']);router[_0x279a('0x9')]('/:id/descriptions',auth[_0x279a('0x7')](),controller['getDescriptions']);router['get']('/:id/tags',auth['isAuthenticated'](),controller[_0x279a('0xf')]);router[_0x279a('0x10')]('/',auth['isAuthenticated'](),controller[_0x279a('0x11')]);router['post']('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router['put'](_0x279a('0xa'),auth[_0x279a('0x7')](),controller[_0x279a('0x12')]);router[_0x279a('0x13')](_0x279a('0xa'),auth[_0x279a('0x7')](),controller[_0x279a('0x14')]);module[_0x279a('0x15')]=router;
\ No newline at end of file
+var _0x2ae1=['/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','setTags','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show'];(function(_0x4c7554,_0x3710d5){var _0x4246d2=function(_0x4e9d95){while(--_0x4e9d95){_0x4c7554['push'](_0x4c7554['shift']());}};_0x4246d2(++_0x3710d5);}(_0x2ae1,0x74));var _0x12ae=function(_0x34867d,_0x5bfa68){_0x34867d=_0x34867d-0x0;var _0x520c9d=_0x2ae1[_0x34867d];return _0x520c9d;};'use strict';var multer=require(_0x12ae('0x0'));var util=require(_0x12ae('0x1'));var path=require(_0x12ae('0x2'));var timeout=require('connect-timeout');var express=require(_0x12ae('0x3'));var router=express[_0x12ae('0x4')]();var fs_extra=require(_0x12ae('0x5'));var auth=require(_0x12ae('0x6'));var interaction=require(_0x12ae('0x7'));var config=require('../../config/environment');var controller=require(_0x12ae('0x8'));router[_0x12ae('0x9')]('/',auth[_0x12ae('0xa')](),controller[_0x12ae('0xb')]);router[_0x12ae('0x9')](_0x12ae('0xc'),auth['isAuthenticated'](),controller[_0x12ae('0xd')]);router['get'](_0x12ae('0xe'),auth[_0x12ae('0xa')](),controller[_0x12ae('0xf')]);router[_0x12ae('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x12ae('0x10')]);router[_0x12ae('0x9')](_0x12ae('0x11'),auth[_0x12ae('0xa')](),controller[_0x12ae('0x12')]);router[_0x12ae('0x9')](_0x12ae('0x13'),auth[_0x12ae('0xa')](),controller['getTags']);router[_0x12ae('0x14')]('/',auth[_0x12ae('0xa')](),controller[_0x12ae('0x15')]);router[_0x12ae('0x14')](_0x12ae('0x13'),auth['isAuthenticated'](),controller[_0x12ae('0x16')]);router['put'](_0x12ae('0xc'),auth['isAuthenticated'](),controller[_0x12ae('0x17')]);router[_0x12ae('0x18')](_0x12ae('0xc'),auth[_0x12ae('0xa')](),controller['destroy']);module[_0x12ae('0x19')]=router;
\ No newline at end of file
index 55dec0a..ace66e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98eb=['STRING','sequelize'];(function(_0x486e3c,_0x4b8f1b){var _0x498e8c=function(_0x24c655){while(--_0x24c655){_0x486e3c['push'](_0x486e3c['shift']());}};_0x498e8c(++_0x4b8f1b);}(_0x98eb,0xc3));var _0xb98e=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x98eb[_0x38537f];return _0x141e23;};'use strict';var Sequelize=require(_0xb98e('0x0'));module['exports']={'name':{'type':Sequelize[_0xb98e('0x1')]},'description':{'type':Sequelize[_0xb98e('0x1')]}};
\ No newline at end of file
+var _0xa58a=['sequelize','STRING'];(function(_0x13eb49,_0x4869c0){var _0x49575d=function(_0x1c1546){while(--_0x1c1546){_0x13eb49['push'](_0x13eb49['shift']());}};_0x49575d(++_0x4869c0);}(_0xa58a,0x164));var _0xaa58=function(_0x4c445a,_0x4ee80f){_0x4c445a=_0x4c445a-0x0;var _0x2f611c=_0xa58a[_0x4c445a];return _0x2f611c;};'use strict';var Sequelize=require(_0xaa58('0x0'));module['exports']={'name':{'type':Sequelize[_0xaa58('0x1')]},'description':{'type':Sequelize[_0xaa58('0x1')]}};
\ No newline at end of file
index 3114a09..c82235b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe9=['to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','error','name','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','getFields','findOne','FreshdeskField','hasOwnProperty','nolimit','getDescriptions','getTags','setTags','ids','fast-json-patch','request-promise','moment','mustache','util','path','sox'];(function(_0x26f3f8,_0x2e73f5){var _0x57e897=function(_0x2203de){while(--_0x2203de){_0x26f3f8['push'](_0x26f3f8['shift']());}};_0x57e897(++_0x2e73f5);}(_0xbfe9,0x18e));var _0x9bfe=function(_0x4f2cd1,_0x3917d2){_0x4f2cd1=_0x4f2cd1-0x0;var _0x400826=_0xbfe9[_0x4f2cd1];return _0x400826;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9bfe('0x0'));var rp=require(_0x9bfe('0x1'));var moment=require(_0x9bfe('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x9bfe('0x3'));var util=require(_0x9bfe('0x4'));var path=require(_0x9bfe('0x5'));var sox=require(_0x9bfe('0x6'));var csv=require(_0x9bfe('0x7'));var ejs=require(_0x9bfe('0x8'));var fs=require('fs');var fs_extra=require(_0x9bfe('0x9'));var _=require(_0x9bfe('0xa'));var squel=require(_0x9bfe('0xb'));var crypto=require('crypto');var jsforce=require(_0x9bfe('0xc'));var deskjs=require(_0x9bfe('0xd'));var toCsv=require(_0x9bfe('0x7'));var querystring=require('querystring');var Papa=require(_0x9bfe('0xe'));var Redis=require(_0x9bfe('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9bfe('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9bfe('0x11'))(_0x9bfe('0x12'));var utils=require(_0x9bfe('0x13'));var config=require(_0x9bfe('0x14'));var licenseUtil=require(_0x9bfe('0x15'));var db=require(_0x9bfe('0x16'))['db'];function respondWithStatusCode(_0x27995a,_0x35b02c){_0x35b02c=_0x35b02c||0xcc;return function(_0x8ab5b8){if(_0x8ab5b8){return _0x27995a[_0x9bfe('0x17')](_0x35b02c);}return _0x27995a['status'](_0x35b02c)[_0x9bfe('0x18')]();};}function respondWithResult(_0x149f04,_0x4834b0){_0x4834b0=_0x4834b0||0xc8;return function(_0x5b168d){if(_0x5b168d){return _0x149f04[_0x9bfe('0x19')](_0x4834b0)[_0x9bfe('0x1a')](_0x5b168d);}};}function respondWithFilteredResult(_0x312f3a,_0x1f2d34){return function(_0x589d7c){if(_0x589d7c){var _0x3939a4=typeof _0x1f2d34[_0x9bfe('0x1b')]==='undefined'&&typeof _0x1f2d34[_0x9bfe('0x1c')]===_0x9bfe('0x1d');var _0x5a110f=_0x589d7c[_0x9bfe('0x1e')];var _0x267292=_0x3939a4?0x0:_0x1f2d34[_0x9bfe('0x1b')];var _0x5048de=_0x3939a4?_0x589d7c['count']:_0x1f2d34[_0x9bfe('0x1b')]+_0x1f2d34[_0x9bfe('0x1c')];var _0x37d932;if(_0x5048de>=_0x5a110f){_0x5048de=_0x5a110f;_0x37d932=0xc8;}else{_0x37d932=0xce;}_0x312f3a[_0x9bfe('0x19')](_0x37d932);return _0x312f3a[_0x9bfe('0x1f')](_0x9bfe('0x20'),_0x267292+'-'+_0x5048de+'/'+_0x5a110f)['json'](_0x589d7c);}return null;};}function patchUpdates(_0x2e9f2f){return function(_0x403972){try{jsonpatch[_0x9bfe('0x21')](_0x403972,_0x2e9f2f,!![]);}catch(_0x5852de){return BPromise[_0x9bfe('0x22')](_0x5852de);}return _0x403972[_0x9bfe('0x23')]();};}function saveUpdates(_0xe29b43,_0x2f9564){return function(_0xa3d114){if(_0xa3d114){return _0xa3d114[_0x9bfe('0x24')](_0xe29b43)[_0x9bfe('0x25')](function(_0x55c91e){return _0x55c91e;});}return null;};}function removeEntity(_0x255cf9,_0x37ad16){return function(_0xd0825){if(_0xd0825){return _0xd0825['destroy']()['then'](function(){_0x255cf9[_0x9bfe('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32c8ff,_0x4e7ac3){return function(_0x541036){if(!_0x541036){_0x32c8ff['sendStatus'](0x194);}return _0x541036;};}function handleError(_0x556038,_0x3fc29c){_0x3fc29c=_0x3fc29c||0x1f4;return function(_0x55440a){logger[_0x9bfe('0x26')](_0x55440a['stack']);if(_0x55440a[_0x9bfe('0x27')]){delete _0x55440a[_0x9bfe('0x27')];}_0x556038[_0x9bfe('0x19')](_0x3fc29c)['send'](_0x55440a);};}exports['index']=function(_0x2f5064,_0x54fe90){var _0x4aed1a={},_0x30657b={},_0x40fc81={'count':0x0,'rows':[]};var _0x420268=_[_0x9bfe('0x28')](db[_0x9bfe('0x29')][_0x9bfe('0x2a')],function(_0x164cac){return{'name':_0x164cac[_0x9bfe('0x2b')],'type':_0x164cac[_0x9bfe('0x2c')][_0x9bfe('0x2d')]};});_0x30657b[_0x9bfe('0x2e')]=_[_0x9bfe('0x28')](_0x420268,_0x9bfe('0x27'));_0x30657b[_0x9bfe('0x2f')]=_[_0x9bfe('0x30')](_0x2f5064[_0x9bfe('0x2f')]);_0x30657b[_0x9bfe('0x31')]=_[_0x9bfe('0x32')](_0x30657b[_0x9bfe('0x2e')],_0x30657b['query']);_0x4aed1a[_0x9bfe('0x33')]=_['intersection'](_0x30657b[_0x9bfe('0x2e')],qs[_0x9bfe('0x34')](_0x2f5064[_0x9bfe('0x2f')][_0x9bfe('0x34')]));_0x4aed1a[_0x9bfe('0x33')]=_0x4aed1a[_0x9bfe('0x33')][_0x9bfe('0x35')]?_0x4aed1a[_0x9bfe('0x33')]:_0x30657b['model'];if(!_0x2f5064[_0x9bfe('0x2f')]['hasOwnProperty']('nolimit')){_0x4aed1a['limit']=qs['limit'](_0x2f5064['query'][_0x9bfe('0x1c')]);_0x4aed1a[_0x9bfe('0x1b')]=qs[_0x9bfe('0x1b')](_0x2f5064[_0x9bfe('0x2f')][_0x9bfe('0x1b')]);}_0x4aed1a[_0x9bfe('0x36')]=qs[_0x9bfe('0x37')](_0x2f5064[_0x9bfe('0x2f')][_0x9bfe('0x37')]);_0x4aed1a[_0x9bfe('0x38')]=qs[_0x9bfe('0x31')](_[_0x9bfe('0x39')](_0x2f5064[_0x9bfe('0x2f')],_0x30657b['filters']),_0x420268);if(_0x2f5064[_0x9bfe('0x2f')]['filter']){_0x4aed1a[_0x9bfe('0x38')]=_[_0x9bfe('0x3a')](_0x4aed1a[_0x9bfe('0x38')],{'$or':_['map'](_0x420268,function(_0x555529){if(_0x555529['type']!==_0x9bfe('0x3b')){var _0x32fe08={};_0x32fe08[_0x555529[_0x9bfe('0x27')]]={'$like':'%'+_0x2f5064[_0x9bfe('0x2f')][_0x9bfe('0x3c')]+'%'};return _0x32fe08;}})});}_0x4aed1a=_[_0x9bfe('0x3a')]({},_0x4aed1a,_0x2f5064[_0x9bfe('0x3d')]);var _0x3d8112={'where':_0x4aed1a[_0x9bfe('0x38')]};return db[_0x9bfe('0x29')][_0x9bfe('0x1e')](_0x3d8112)[_0x9bfe('0x25')](function(_0x149b08){_0x40fc81[_0x9bfe('0x1e')]=_0x149b08;if(_0x2f5064['query'][_0x9bfe('0x3e')]){_0x4aed1a[_0x9bfe('0x3f')]=[{'all':!![]}];}return db[_0x9bfe('0x29')][_0x9bfe('0x40')](_0x4aed1a);})['then'](function(_0x3e3d00){_0x40fc81[_0x9bfe('0x41')]=_0x3e3d00;return _0x40fc81;})[_0x9bfe('0x25')](respondWithFilteredResult(_0x54fe90,_0x4aed1a))[_0x9bfe('0x42')](handleError(_0x54fe90,null));};exports[_0x9bfe('0x43')]=function(_0x1817ab,_0x63094b){var _0x3fd68d={'raw':![],'where':{'id':_0x1817ab['params']['id']}},_0x8332a3={};_0x8332a3['model']=_[_0x9bfe('0x30')](db[_0x9bfe('0x29')][_0x9bfe('0x2a')]);_0x8332a3[_0x9bfe('0x2f')]=_['keys'](_0x1817ab[_0x9bfe('0x2f')]);_0x8332a3[_0x9bfe('0x31')]=_[_0x9bfe('0x32')](_0x8332a3[_0x9bfe('0x2e')],_0x8332a3[_0x9bfe('0x2f')]);_0x3fd68d[_0x9bfe('0x33')]=_['intersection'](_0x8332a3['model'],qs[_0x9bfe('0x34')](_0x1817ab[_0x9bfe('0x2f')][_0x9bfe('0x34')]));_0x3fd68d[_0x9bfe('0x33')]=_0x3fd68d[_0x9bfe('0x33')]['length']?_0x3fd68d[_0x9bfe('0x33')]:_0x8332a3[_0x9bfe('0x2e')];if(_0x1817ab[_0x9bfe('0x2f')][_0x9bfe('0x3e')]){_0x3fd68d[_0x9bfe('0x3f')]=[{'all':!![]}];}_0x3fd68d=_['merge']({},_0x3fd68d,_0x1817ab[_0x9bfe('0x3d')]);return db[_0x9bfe('0x29')]['find'](_0x3fd68d)[_0x9bfe('0x25')](handleEntityNotFound(_0x63094b,null))[_0x9bfe('0x25')](respondWithResult(_0x63094b,null))[_0x9bfe('0x42')](handleError(_0x63094b,null));};exports[_0x9bfe('0x44')]=function(_0x418236,_0x54e787){return db['FreshdeskConfiguration']['create'](_0x418236[_0x9bfe('0x45')],{})[_0x9bfe('0x25')](respondWithResult(_0x54e787,0xc9))[_0x9bfe('0x42')](handleError(_0x54e787,null));};exports[_0x9bfe('0x24')]=function(_0x304bd8,_0x52b918){if(_0x304bd8['body']['id']){delete _0x304bd8[_0x9bfe('0x45')]['id'];}return db[_0x9bfe('0x29')][_0x9bfe('0x46')]({'where':{'id':_0x304bd8[_0x9bfe('0x47')]['id']}})['then'](handleEntityNotFound(_0x52b918,null))[_0x9bfe('0x25')](saveUpdates(_0x304bd8[_0x9bfe('0x45')],null))['then'](respondWithResult(_0x52b918,null))[_0x9bfe('0x42')](handleError(_0x52b918,null));};exports['destroy']=function(_0x46d8bb,_0x6d646e){return db[_0x9bfe('0x29')][_0x9bfe('0x46')]({'where':{'id':_0x46d8bb[_0x9bfe('0x47')]['id']}})['then'](handleEntityNotFound(_0x6d646e,null))[_0x9bfe('0x25')](removeEntity(_0x6d646e,null))['catch'](handleError(_0x6d646e,null));};exports[_0x9bfe('0x48')]=function(_0x16935b,_0x2abf26,_0x15a249){var _0x415496={};var _0x20e7ae={};var _0xdf0ad2;var _0x2d6621;return db[_0x9bfe('0x29')][_0x9bfe('0x49')]({'where':{'id':_0x16935b[_0x9bfe('0x47')]['id']}})[_0x9bfe('0x25')](handleEntityNotFound(_0x2abf26,null))[_0x9bfe('0x25')](function(_0x17688d){if(_0x17688d){_0xdf0ad2=_0x17688d;_0x20e7ae['model']=_[_0x9bfe('0x30')](db[_0x9bfe('0x4a')][_0x9bfe('0x2a')]);_0x20e7ae[_0x9bfe('0x2f')]=_['keys'](_0x16935b['query']);_0x20e7ae[_0x9bfe('0x31')]=_[_0x9bfe('0x32')](_0x20e7ae['model'],_0x20e7ae[_0x9bfe('0x2f')]);_0x415496['attributes']=_[_0x9bfe('0x32')](_0x20e7ae['model'],qs['fields'](_0x16935b[_0x9bfe('0x2f')][_0x9bfe('0x34')]));_0x415496[_0x9bfe('0x33')]=_0x415496[_0x9bfe('0x33')][_0x9bfe('0x35')]?_0x415496[_0x9bfe('0x33')]:_0x20e7ae[_0x9bfe('0x2e')];_0x415496[_0x9bfe('0x36')]=qs[_0x9bfe('0x37')](_0x16935b[_0x9bfe('0x2f')][_0x9bfe('0x37')]);_0x415496[_0x9bfe('0x38')]=qs['filters'](_[_0x9bfe('0x39')](_0x16935b[_0x9bfe('0x2f')],_0x20e7ae['filters']));if(_0x16935b['query'][_0x9bfe('0x3c')]){_0x415496[_0x9bfe('0x38')]=_['merge'](_0x415496[_0x9bfe('0x38')],{'$or':_[_0x9bfe('0x28')](_0x415496[_0x9bfe('0x33')],function(_0x1b4731){var _0x50f978={};_0x50f978[_0x1b4731]={'$like':'%'+_0x16935b['query'][_0x9bfe('0x3c')]+'%'};return _0x50f978;})});}_0x415496=_[_0x9bfe('0x3a')]({},_0x415496,_0x16935b['options']);return _0xdf0ad2[_0x9bfe('0x48')](_0x415496);}})[_0x9bfe('0x25')](function(_0x10c470){if(_0x10c470){_0x2d6621=_0x10c470[_0x9bfe('0x35')];if(!_0x16935b[_0x9bfe('0x2f')][_0x9bfe('0x4b')](_0x9bfe('0x4c'))){_0x415496[_0x9bfe('0x1c')]=qs['limit'](_0x16935b[_0x9bfe('0x2f')][_0x9bfe('0x1c')]);_0x415496[_0x9bfe('0x1b')]=qs['offset'](_0x16935b['query'][_0x9bfe('0x1b')]);}return _0xdf0ad2['getFields'](_0x415496);}})[_0x9bfe('0x25')](function(_0x404f36){if(_0x404f36){return _0x404f36?{'count':_0x2d6621,'rows':_0x404f36}:null;}})['then'](respondWithResult(_0x2abf26,null))['catch'](handleError(_0x2abf26,null));};exports['getSubjects']=function(_0x151343,_0x175b0e,_0x34f85e){var _0x47e080={};var _0x345565={};var _0x2abad9;var _0x55edb4;return db[_0x9bfe('0x29')][_0x9bfe('0x49')]({'where':{'id':_0x151343[_0x9bfe('0x47')]['id']}})['then'](handleEntityNotFound(_0x175b0e,null))[_0x9bfe('0x25')](function(_0x18a633){if(_0x18a633){_0x2abad9=_0x18a633;_0x345565[_0x9bfe('0x2e')]=_[_0x9bfe('0x30')](db[_0x9bfe('0x4a')][_0x9bfe('0x2a')]);_0x345565[_0x9bfe('0x2f')]=_[_0x9bfe('0x30')](_0x151343[_0x9bfe('0x2f')]);_0x345565[_0x9bfe('0x31')]=_['intersection'](_0x345565['model'],_0x345565['query']);_0x47e080[_0x9bfe('0x33')]=_[_0x9bfe('0x32')](_0x345565[_0x9bfe('0x2e')],qs['fields'](_0x151343[_0x9bfe('0x2f')][_0x9bfe('0x34')]));_0x47e080['attributes']=_0x47e080['attributes'][_0x9bfe('0x35')]?_0x47e080['attributes']:_0x345565[_0x9bfe('0x2e')];_0x47e080[_0x9bfe('0x36')]=qs[_0x9bfe('0x37')](_0x151343[_0x9bfe('0x2f')][_0x9bfe('0x37')]);_0x47e080[_0x9bfe('0x38')]=qs[_0x9bfe('0x31')](_[_0x9bfe('0x39')](_0x151343[_0x9bfe('0x2f')],_0x345565[_0x9bfe('0x31')]));if(_0x151343[_0x9bfe('0x2f')][_0x9bfe('0x3c')]){_0x47e080[_0x9bfe('0x38')]=_[_0x9bfe('0x3a')](_0x47e080['where'],{'$or':_[_0x9bfe('0x28')](_0x47e080[_0x9bfe('0x33')],function(_0x1d9b7a){var _0x14f7db={};_0x14f7db[_0x1d9b7a]={'$like':'%'+_0x151343['query']['filter']+'%'};return _0x14f7db;})});}_0x47e080=_[_0x9bfe('0x3a')]({},_0x47e080,_0x151343['options']);return _0x2abad9['getSubjects'](_0x47e080);}})[_0x9bfe('0x25')](function(_0x561f48){if(_0x561f48){_0x55edb4=_0x561f48[_0x9bfe('0x35')];if(!_0x151343[_0x9bfe('0x2f')][_0x9bfe('0x4b')](_0x9bfe('0x4c'))){_0x47e080[_0x9bfe('0x1c')]=qs['limit'](_0x151343[_0x9bfe('0x2f')][_0x9bfe('0x1c')]);_0x47e080[_0x9bfe('0x1b')]=qs[_0x9bfe('0x1b')](_0x151343[_0x9bfe('0x2f')]['offset']);}return _0x2abad9['getSubjects'](_0x47e080);}})[_0x9bfe('0x25')](function(_0x40b26a){if(_0x40b26a){return _0x40b26a?{'count':_0x55edb4,'rows':_0x40b26a}:null;}})[_0x9bfe('0x25')](respondWithResult(_0x175b0e,null))['catch'](handleError(_0x175b0e,null));};exports[_0x9bfe('0x4d')]=function(_0x240d37,_0x34ce3d,_0x3aee3d){var _0x21517f={};var _0xd46bfc={};var _0xaf0818;var _0x2270e0;return db[_0x9bfe('0x29')][_0x9bfe('0x49')]({'where':{'id':_0x240d37[_0x9bfe('0x47')]['id']}})['then'](handleEntityNotFound(_0x34ce3d,null))[_0x9bfe('0x25')](function(_0xcca5d6){if(_0xcca5d6){_0xaf0818=_0xcca5d6;_0xd46bfc['model']=_[_0x9bfe('0x30')](db['FreshdeskField']['rawAttributes']);_0xd46bfc[_0x9bfe('0x2f')]=_[_0x9bfe('0x30')](_0x240d37['query']);_0xd46bfc[_0x9bfe('0x31')]=_[_0x9bfe('0x32')](_0xd46bfc[_0x9bfe('0x2e')],_0xd46bfc['query']);_0x21517f[_0x9bfe('0x33')]=_[_0x9bfe('0x32')](_0xd46bfc[_0x9bfe('0x2e')],qs[_0x9bfe('0x34')](_0x240d37[_0x9bfe('0x2f')][_0x9bfe('0x34')]));_0x21517f['attributes']=_0x21517f[_0x9bfe('0x33')][_0x9bfe('0x35')]?_0x21517f[_0x9bfe('0x33')]:_0xd46bfc[_0x9bfe('0x2e')];_0x21517f[_0x9bfe('0x36')]=qs[_0x9bfe('0x37')](_0x240d37[_0x9bfe('0x2f')]['sort']);_0x21517f[_0x9bfe('0x38')]=qs[_0x9bfe('0x31')](_[_0x9bfe('0x39')](_0x240d37[_0x9bfe('0x2f')],_0xd46bfc[_0x9bfe('0x31')]));if(_0x240d37[_0x9bfe('0x2f')]['filter']){_0x21517f['where']=_[_0x9bfe('0x3a')](_0x21517f[_0x9bfe('0x38')],{'$or':_[_0x9bfe('0x28')](_0x21517f[_0x9bfe('0x33')],function(_0x5f5b30){var _0x5b5fa6={};_0x5b5fa6[_0x5f5b30]={'$like':'%'+_0x240d37[_0x9bfe('0x2f')][_0x9bfe('0x3c')]+'%'};return _0x5b5fa6;})});}_0x21517f=_[_0x9bfe('0x3a')]({},_0x21517f,_0x240d37[_0x9bfe('0x3d')]);return _0xaf0818[_0x9bfe('0x4d')](_0x21517f);}})['then'](function(_0x256ca8){if(_0x256ca8){_0x2270e0=_0x256ca8[_0x9bfe('0x35')];if(!_0x240d37[_0x9bfe('0x2f')][_0x9bfe('0x4b')](_0x9bfe('0x4c'))){_0x21517f[_0x9bfe('0x1c')]=qs['limit'](_0x240d37[_0x9bfe('0x2f')][_0x9bfe('0x1c')]);_0x21517f[_0x9bfe('0x1b')]=qs['offset'](_0x240d37[_0x9bfe('0x2f')][_0x9bfe('0x1b')]);}return _0xaf0818[_0x9bfe('0x4d')](_0x21517f);}})[_0x9bfe('0x25')](function(_0x6346be){if(_0x6346be){return _0x6346be?{'count':_0x2270e0,'rows':_0x6346be}:null;}})[_0x9bfe('0x25')](respondWithResult(_0x34ce3d,null))[_0x9bfe('0x42')](handleError(_0x34ce3d,null));};exports[_0x9bfe('0x4e')]=function(_0x30a377,_0xfa70f6,_0x534842){var _0x540643={};var _0x5e1014={};var _0x2d2957;var _0xb50c9;return db[_0x9bfe('0x29')][_0x9bfe('0x49')]({'where':{'id':_0x30a377[_0x9bfe('0x47')]['id']}})[_0x9bfe('0x25')](handleEntityNotFound(_0xfa70f6,null))[_0x9bfe('0x25')](function(_0x426567){if(_0x426567){_0x2d2957=_0x426567;_0x5e1014[_0x9bfe('0x2e')]=_['keys'](db['Tag'][_0x9bfe('0x2a')]);_0x5e1014[_0x9bfe('0x2f')]=_[_0x9bfe('0x30')](_0x30a377['query']);_0x5e1014[_0x9bfe('0x31')]=_['intersection'](_0x5e1014[_0x9bfe('0x2e')],_0x5e1014[_0x9bfe('0x2f')]);_0x540643['attributes']=_[_0x9bfe('0x32')](_0x5e1014[_0x9bfe('0x2e')],qs['fields'](_0x30a377['query']['fields']));_0x540643[_0x9bfe('0x33')]=_0x540643['attributes']['length']?_0x540643[_0x9bfe('0x33')]:_0x5e1014[_0x9bfe('0x2e')];_0x540643[_0x9bfe('0x36')]=qs[_0x9bfe('0x37')](_0x30a377['query'][_0x9bfe('0x37')]);_0x540643['where']=qs['filters'](_[_0x9bfe('0x39')](_0x30a377[_0x9bfe('0x2f')],_0x5e1014[_0x9bfe('0x31')]));if(_0x30a377[_0x9bfe('0x2f')][_0x9bfe('0x3c')]){_0x540643['where']=_['merge'](_0x540643[_0x9bfe('0x38')],{'$or':_[_0x9bfe('0x28')](_0x540643[_0x9bfe('0x33')],function(_0x1f38ca){var _0x5b69a5={};_0x5b69a5[_0x1f38ca]={'$like':'%'+_0x30a377['query'][_0x9bfe('0x3c')]+'%'};return _0x5b69a5;})});}_0x540643=_['merge']({},_0x540643,_0x30a377[_0x9bfe('0x3d')]);return _0x2d2957['getTags'](_0x540643);}})[_0x9bfe('0x25')](function(_0x49ce6c){if(_0x49ce6c){_0xb50c9=_0x49ce6c['length'];if(!_0x30a377[_0x9bfe('0x2f')][_0x9bfe('0x4b')](_0x9bfe('0x4c'))){_0x540643[_0x9bfe('0x1c')]=qs[_0x9bfe('0x1c')](_0x30a377['query'][_0x9bfe('0x1c')]);_0x540643['offset']=qs['offset'](_0x30a377[_0x9bfe('0x2f')][_0x9bfe('0x1b')]);}return _0x2d2957[_0x9bfe('0x4e')](_0x540643);}})[_0x9bfe('0x25')](function(_0x57fecf){if(_0x57fecf){return _0x57fecf?{'count':_0xb50c9,'rows':_0x57fecf}:null;}})[_0x9bfe('0x25')](respondWithResult(_0xfa70f6,null))[_0x9bfe('0x42')](handleError(_0xfa70f6,null));};exports[_0x9bfe('0x4f')]=function(_0x361b31,_0x544494,_0x545976){if(_0x361b31['body']['id']){delete _0x361b31['body']['id'];}return db[_0x9bfe('0x29')][_0x9bfe('0x49')]({'where':{'id':_0x361b31[_0x9bfe('0x47')]['id']}})[_0x9bfe('0x25')](handleEntityNotFound(_0x544494,null))[_0x9bfe('0x25')](function(_0x3ecd98){if(_0x3ecd98){return _0x3ecd98['setTags'](_0x361b31['body'][_0x9bfe('0x50')]||[]);}return null;})[_0x9bfe('0x25')](respondWithResult(_0x544494,null))['catch'](handleError(_0x544494,null));};
\ No newline at end of file
+var _0x47ad=['show','params','keys','find','catch','create','body','getFields','findOne','FreshdeskField','length','order','pick','getSubjects','getDescriptions','Tag','getTags','setTags','ids','zip-dir','request-promise','moment','mustache','util','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','save','update','destroy','end','error','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filter','merge','options','then','includeAll','include','findAll','rows'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x47ad,0x153));var _0xd47a=function(_0x143a91,_0x235332){_0x143a91=_0x143a91-0x0;var _0x1906f5=_0x47ad[_0x143a91];return _0x1906f5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd47a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd47a('0x1'));var moment=require(_0xd47a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xd47a('0x3'));var util=require(_0xd47a('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd47a('0x5'));var fs=require('fs');var fs_extra=require(_0xd47a('0x6'));var _=require('lodash');var squel=require(_0xd47a('0x7'));var crypto=require(_0xd47a('0x8'));var jsforce=require(_0xd47a('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xd47a('0xa'));var querystring=require(_0xd47a('0xb'));var Papa=require(_0xd47a('0xc'));var Redis=require(_0xd47a('0xd'));var authService=require(_0xd47a('0xe'));var qs=require(_0xd47a('0xf'));var as=require(_0xd47a('0x10'));var hardwareService=require(_0xd47a('0x11'));var logger=require('../../config/logger')(_0xd47a('0x12'));var utils=require(_0xd47a('0x13'));var config=require(_0xd47a('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b58c7,_0xa0323f){_0xa0323f=_0xa0323f||0xcc;return function(_0x1d2cdb){if(_0x1d2cdb){return _0x1b58c7[_0xd47a('0x15')](_0xa0323f);}return _0x1b58c7[_0xd47a('0x16')](_0xa0323f)['end']();};}function respondWithResult(_0x11f282,_0x7742cf){_0x7742cf=_0x7742cf||0xc8;return function(_0x201f04){if(_0x201f04){return _0x11f282[_0xd47a('0x16')](_0x7742cf)['json'](_0x201f04);}};}function respondWithFilteredResult(_0x305974,_0x11cf6e){return function(_0x572221){if(_0x572221){var _0x11ab52=typeof _0x11cf6e[_0xd47a('0x17')]==='undefined'&&typeof _0x11cf6e[_0xd47a('0x18')]===_0xd47a('0x19');var _0x5a7777=_0x572221['count'];var _0x415ef8=_0x11ab52?0x0:_0x11cf6e[_0xd47a('0x17')];var _0x1bb82c=_0x11ab52?_0x572221[_0xd47a('0x1a')]:_0x11cf6e[_0xd47a('0x17')]+_0x11cf6e['limit'];var _0x56baa6;if(_0x1bb82c>=_0x5a7777){_0x1bb82c=_0x5a7777;_0x56baa6=0xc8;}else{_0x56baa6=0xce;}_0x305974['status'](_0x56baa6);return _0x305974['set'](_0xd47a('0x1b'),_0x415ef8+'-'+_0x1bb82c+'/'+_0x5a7777)[_0xd47a('0x1c')](_0x572221);}return null;};}function patchUpdates(_0x1cf292){return function(_0x4f1167){try{jsonpatch[_0xd47a('0x1d')](_0x4f1167,_0x1cf292,!![]);}catch(_0x386663){return BPromise['reject'](_0x386663);}return _0x4f1167[_0xd47a('0x1e')]();};}function saveUpdates(_0x2f23de,_0x47e50d){return function(_0x38a806){if(_0x38a806){return _0x38a806[_0xd47a('0x1f')](_0x2f23de)['then'](function(_0x47dfea){return _0x47dfea;});}return null;};}function removeEntity(_0x1d8004,_0x5901d1){return function(_0x1cf7fe){if(_0x1cf7fe){return _0x1cf7fe[_0xd47a('0x20')]()['then'](function(){_0x1d8004[_0xd47a('0x16')](0xcc)[_0xd47a('0x21')]();});}};}function handleEntityNotFound(_0x396b27,_0x31b72f){return function(_0x5dd56b){if(!_0x5dd56b){_0x396b27[_0xd47a('0x15')](0x194);}return _0x5dd56b;};}function handleError(_0x1e0e99,_0x370346){_0x370346=_0x370346||0x1f4;return function(_0x48b0b3){logger[_0xd47a('0x22')](_0x48b0b3['stack']);if(_0x48b0b3['name']){delete _0x48b0b3[_0xd47a('0x23')];}_0x1e0e99[_0xd47a('0x16')](_0x370346)[_0xd47a('0x24')](_0x48b0b3);};}exports[_0xd47a('0x25')]=function(_0x127f0e,_0x1b280e){var _0x59d470={},_0x3dc78e={},_0x3023e9={'count':0x0,'rows':[]};var _0x24323c=_[_0xd47a('0x26')](db[_0xd47a('0x27')][_0xd47a('0x28')],function(_0x234094){return{'name':_0x234094[_0xd47a('0x29')],'type':_0x234094['type'][_0xd47a('0x2a')]};});_0x3dc78e[_0xd47a('0x2b')]=_[_0xd47a('0x26')](_0x24323c,_0xd47a('0x23'));_0x3dc78e[_0xd47a('0x2c')]=_['keys'](_0x127f0e[_0xd47a('0x2c')]);_0x3dc78e[_0xd47a('0x2d')]=_[_0xd47a('0x2e')](_0x3dc78e[_0xd47a('0x2b')],_0x3dc78e['query']);_0x59d470['attributes']=_[_0xd47a('0x2e')](_0x3dc78e[_0xd47a('0x2b')],qs['fields'](_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x2f')]));_0x59d470[_0xd47a('0x30')]=_0x59d470[_0xd47a('0x30')]['length']?_0x59d470[_0xd47a('0x30')]:_0x3dc78e[_0xd47a('0x2b')];if(!_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x31')](_0xd47a('0x32'))){_0x59d470[_0xd47a('0x18')]=qs[_0xd47a('0x18')](_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x18')]);_0x59d470[_0xd47a('0x17')]=qs['offset'](_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x17')]);}_0x59d470['order']=qs['sort'](_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x33')]);_0x59d470[_0xd47a('0x34')]=qs[_0xd47a('0x2d')](_['pick'](_0x127f0e['query'],_0x3dc78e[_0xd47a('0x2d')]),_0x24323c);if(_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x35')]){_0x59d470['where']=_[_0xd47a('0x36')](_0x59d470[_0xd47a('0x34')],{'$or':_[_0xd47a('0x26')](_0x24323c,function(_0x52f59b){if(_0x52f59b['type']!=='VIRTUAL'){var _0x51a829={};_0x51a829[_0x52f59b[_0xd47a('0x23')]]={'$like':'%'+_0x127f0e['query'][_0xd47a('0x35')]+'%'};return _0x51a829;}})});}_0x59d470=_['merge']({},_0x59d470,_0x127f0e[_0xd47a('0x37')]);var _0x23cc10={'where':_0x59d470[_0xd47a('0x34')]};return db[_0xd47a('0x27')][_0xd47a('0x1a')](_0x23cc10)[_0xd47a('0x38')](function(_0x3ed5a9){_0x3023e9[_0xd47a('0x1a')]=_0x3ed5a9;if(_0x127f0e[_0xd47a('0x2c')][_0xd47a('0x39')]){_0x59d470[_0xd47a('0x3a')]=[{'all':!![]}];}return db[_0xd47a('0x27')][_0xd47a('0x3b')](_0x59d470);})[_0xd47a('0x38')](function(_0x2ea48e){_0x3023e9[_0xd47a('0x3c')]=_0x2ea48e;return _0x3023e9;})[_0xd47a('0x38')](respondWithFilteredResult(_0x1b280e,_0x59d470))['catch'](handleError(_0x1b280e,null));};exports[_0xd47a('0x3d')]=function(_0x38ec60,_0x5a7bd6){var _0x56cec9={'raw':![],'where':{'id':_0x38ec60[_0xd47a('0x3e')]['id']}},_0x4a3cc4={};_0x4a3cc4['model']=_[_0xd47a('0x3f')](db[_0xd47a('0x27')][_0xd47a('0x28')]);_0x4a3cc4[_0xd47a('0x2c')]=_[_0xd47a('0x3f')](_0x38ec60[_0xd47a('0x2c')]);_0x4a3cc4['filters']=_['intersection'](_0x4a3cc4['model'],_0x4a3cc4[_0xd47a('0x2c')]);_0x56cec9['attributes']=_[_0xd47a('0x2e')](_0x4a3cc4['model'],qs['fields'](_0x38ec60[_0xd47a('0x2c')][_0xd47a('0x2f')]));_0x56cec9[_0xd47a('0x30')]=_0x56cec9['attributes']['length']?_0x56cec9[_0xd47a('0x30')]:_0x4a3cc4['model'];if(_0x38ec60[_0xd47a('0x2c')][_0xd47a('0x39')]){_0x56cec9['include']=[{'all':!![]}];}_0x56cec9=_[_0xd47a('0x36')]({},_0x56cec9,_0x38ec60['options']);return db[_0xd47a('0x27')][_0xd47a('0x40')](_0x56cec9)['then'](handleEntityNotFound(_0x5a7bd6,null))[_0xd47a('0x38')](respondWithResult(_0x5a7bd6,null))[_0xd47a('0x41')](handleError(_0x5a7bd6,null));};exports['create']=function(_0x2aeb5e,_0x441703){return db[_0xd47a('0x27')][_0xd47a('0x42')](_0x2aeb5e['body'],{})[_0xd47a('0x38')](respondWithResult(_0x441703,0xc9))['catch'](handleError(_0x441703,null));};exports['update']=function(_0x37e2ac,_0x4e1b12){if(_0x37e2ac[_0xd47a('0x43')]['id']){delete _0x37e2ac[_0xd47a('0x43')]['id'];}return db[_0xd47a('0x27')][_0xd47a('0x40')]({'where':{'id':_0x37e2ac[_0xd47a('0x3e')]['id']}})[_0xd47a('0x38')](handleEntityNotFound(_0x4e1b12,null))[_0xd47a('0x38')](saveUpdates(_0x37e2ac[_0xd47a('0x43')],null))['then'](respondWithResult(_0x4e1b12,null))[_0xd47a('0x41')](handleError(_0x4e1b12,null));};exports[_0xd47a('0x20')]=function(_0x1871b7,_0x572049){return db[_0xd47a('0x27')][_0xd47a('0x40')]({'where':{'id':_0x1871b7[_0xd47a('0x3e')]['id']}})[_0xd47a('0x38')](handleEntityNotFound(_0x572049,null))[_0xd47a('0x38')](removeEntity(_0x572049,null))[_0xd47a('0x41')](handleError(_0x572049,null));};exports[_0xd47a('0x44')]=function(_0x891c51,_0x58400e,_0x59db4b){var _0x56b23e={};var _0x47c54d={};var _0x850d23;var _0x12d19c;return db[_0xd47a('0x27')][_0xd47a('0x45')]({'where':{'id':_0x891c51[_0xd47a('0x3e')]['id']}})[_0xd47a('0x38')](handleEntityNotFound(_0x58400e,null))[_0xd47a('0x38')](function(_0x186882){if(_0x186882){_0x850d23=_0x186882;_0x47c54d[_0xd47a('0x2b')]=_[_0xd47a('0x3f')](db[_0xd47a('0x46')][_0xd47a('0x28')]);_0x47c54d[_0xd47a('0x2c')]=_['keys'](_0x891c51[_0xd47a('0x2c')]);_0x47c54d[_0xd47a('0x2d')]=_[_0xd47a('0x2e')](_0x47c54d[_0xd47a('0x2b')],_0x47c54d[_0xd47a('0x2c')]);_0x56b23e['attributes']=_[_0xd47a('0x2e')](_0x47c54d[_0xd47a('0x2b')],qs['fields'](_0x891c51[_0xd47a('0x2c')][_0xd47a('0x2f')]));_0x56b23e[_0xd47a('0x30')]=_0x56b23e['attributes'][_0xd47a('0x47')]?_0x56b23e[_0xd47a('0x30')]:_0x47c54d[_0xd47a('0x2b')];_0x56b23e[_0xd47a('0x48')]=qs[_0xd47a('0x33')](_0x891c51[_0xd47a('0x2c')][_0xd47a('0x33')]);_0x56b23e[_0xd47a('0x34')]=qs[_0xd47a('0x2d')](_[_0xd47a('0x49')](_0x891c51[_0xd47a('0x2c')],_0x47c54d[_0xd47a('0x2d')]));if(_0x891c51[_0xd47a('0x2c')]['filter']){_0x56b23e[_0xd47a('0x34')]=_[_0xd47a('0x36')](_0x56b23e[_0xd47a('0x34')],{'$or':_[_0xd47a('0x26')](_0x56b23e['attributes'],function(_0x56d0b7){var _0x56bf6e={};_0x56bf6e[_0x56d0b7]={'$like':'%'+_0x891c51[_0xd47a('0x2c')]['filter']+'%'};return _0x56bf6e;})});}_0x56b23e=_[_0xd47a('0x36')]({},_0x56b23e,_0x891c51[_0xd47a('0x37')]);return _0x850d23['getFields'](_0x56b23e);}})['then'](function(_0x4c107d){if(_0x4c107d){_0x12d19c=_0x4c107d['length'];if(!_0x891c51[_0xd47a('0x2c')][_0xd47a('0x31')]('nolimit')){_0x56b23e[_0xd47a('0x18')]=qs[_0xd47a('0x18')](_0x891c51[_0xd47a('0x2c')][_0xd47a('0x18')]);_0x56b23e[_0xd47a('0x17')]=qs[_0xd47a('0x17')](_0x891c51['query'][_0xd47a('0x17')]);}return _0x850d23[_0xd47a('0x44')](_0x56b23e);}})['then'](function(_0x93fb6b){if(_0x93fb6b){return _0x93fb6b?{'count':_0x12d19c,'rows':_0x93fb6b}:null;}})[_0xd47a('0x38')](respondWithResult(_0x58400e,null))['catch'](handleError(_0x58400e,null));};exports[_0xd47a('0x4a')]=function(_0x55f1c2,_0x5f1d25,_0x412aa9){var _0x54ebd8={};var _0x504b0d={};var _0x15e178;var _0x1beb28;return db[_0xd47a('0x27')][_0xd47a('0x45')]({'where':{'id':_0x55f1c2['params']['id']}})[_0xd47a('0x38')](handleEntityNotFound(_0x5f1d25,null))[_0xd47a('0x38')](function(_0x59dc1a){if(_0x59dc1a){_0x15e178=_0x59dc1a;_0x504b0d['model']=_[_0xd47a('0x3f')](db[_0xd47a('0x46')][_0xd47a('0x28')]);_0x504b0d[_0xd47a('0x2c')]=_['keys'](_0x55f1c2[_0xd47a('0x2c')]);_0x504b0d[_0xd47a('0x2d')]=_[_0xd47a('0x2e')](_0x504b0d[_0xd47a('0x2b')],_0x504b0d[_0xd47a('0x2c')]);_0x54ebd8[_0xd47a('0x30')]=_[_0xd47a('0x2e')](_0x504b0d['model'],qs[_0xd47a('0x2f')](_0x55f1c2['query'][_0xd47a('0x2f')]));_0x54ebd8[_0xd47a('0x30')]=_0x54ebd8['attributes'][_0xd47a('0x47')]?_0x54ebd8['attributes']:_0x504b0d['model'];_0x54ebd8[_0xd47a('0x48')]=qs[_0xd47a('0x33')](_0x55f1c2['query'][_0xd47a('0x33')]);_0x54ebd8[_0xd47a('0x34')]=qs[_0xd47a('0x2d')](_[_0xd47a('0x49')](_0x55f1c2[_0xd47a('0x2c')],_0x504b0d['filters']));if(_0x55f1c2[_0xd47a('0x2c')][_0xd47a('0x35')]){_0x54ebd8[_0xd47a('0x34')]=_[_0xd47a('0x36')](_0x54ebd8[_0xd47a('0x34')],{'$or':_[_0xd47a('0x26')](_0x54ebd8[_0xd47a('0x30')],function(_0x82c0b0){var _0x5c5141={};_0x5c5141[_0x82c0b0]={'$like':'%'+_0x55f1c2[_0xd47a('0x2c')]['filter']+'%'};return _0x5c5141;})});}_0x54ebd8=_[_0xd47a('0x36')]({},_0x54ebd8,_0x55f1c2[_0xd47a('0x37')]);return _0x15e178[_0xd47a('0x4a')](_0x54ebd8);}})[_0xd47a('0x38')](function(_0x262e65){if(_0x262e65){_0x1beb28=_0x262e65[_0xd47a('0x47')];if(!_0x55f1c2[_0xd47a('0x2c')][_0xd47a('0x31')](_0xd47a('0x32'))){_0x54ebd8[_0xd47a('0x18')]=qs[_0xd47a('0x18')](_0x55f1c2[_0xd47a('0x2c')][_0xd47a('0x18')]);_0x54ebd8['offset']=qs['offset'](_0x55f1c2[_0xd47a('0x2c')][_0xd47a('0x17')]);}return _0x15e178['getSubjects'](_0x54ebd8);}})['then'](function(_0xc7f9cd){if(_0xc7f9cd){return _0xc7f9cd?{'count':_0x1beb28,'rows':_0xc7f9cd}:null;}})[_0xd47a('0x38')](respondWithResult(_0x5f1d25,null))['catch'](handleError(_0x5f1d25,null));};exports[_0xd47a('0x4b')]=function(_0x342f26,_0x3d16d4,_0x31b512){var _0x10a809={};var _0x52c34f={};var _0x5789c8;var _0x5baab5;return db[_0xd47a('0x27')]['findOne']({'where':{'id':_0x342f26[_0xd47a('0x3e')]['id']}})[_0xd47a('0x38')](handleEntityNotFound(_0x3d16d4,null))[_0xd47a('0x38')](function(_0x258cf8){if(_0x258cf8){_0x5789c8=_0x258cf8;_0x52c34f['model']=_[_0xd47a('0x3f')](db[_0xd47a('0x46')][_0xd47a('0x28')]);_0x52c34f[_0xd47a('0x2c')]=_['keys'](_0x342f26['query']);_0x52c34f[_0xd47a('0x2d')]=_[_0xd47a('0x2e')](_0x52c34f[_0xd47a('0x2b')],_0x52c34f[_0xd47a('0x2c')]);_0x10a809[_0xd47a('0x30')]=_[_0xd47a('0x2e')](_0x52c34f[_0xd47a('0x2b')],qs['fields'](_0x342f26['query'][_0xd47a('0x2f')]));_0x10a809[_0xd47a('0x30')]=_0x10a809[_0xd47a('0x30')][_0xd47a('0x47')]?_0x10a809[_0xd47a('0x30')]:_0x52c34f[_0xd47a('0x2b')];_0x10a809['order']=qs['sort'](_0x342f26[_0xd47a('0x2c')][_0xd47a('0x33')]);_0x10a809[_0xd47a('0x34')]=qs[_0xd47a('0x2d')](_[_0xd47a('0x49')](_0x342f26[_0xd47a('0x2c')],_0x52c34f[_0xd47a('0x2d')]));if(_0x342f26['query'][_0xd47a('0x35')]){_0x10a809[_0xd47a('0x34')]=_[_0xd47a('0x36')](_0x10a809[_0xd47a('0x34')],{'$or':_['map'](_0x10a809[_0xd47a('0x30')],function(_0x230537){var _0x145da8={};_0x145da8[_0x230537]={'$like':'%'+_0x342f26[_0xd47a('0x2c')][_0xd47a('0x35')]+'%'};return _0x145da8;})});}_0x10a809=_[_0xd47a('0x36')]({},_0x10a809,_0x342f26[_0xd47a('0x37')]);return _0x5789c8[_0xd47a('0x4b')](_0x10a809);}})[_0xd47a('0x38')](function(_0x341859){if(_0x341859){_0x5baab5=_0x341859['length'];if(!_0x342f26['query']['hasOwnProperty'](_0xd47a('0x32'))){_0x10a809[_0xd47a('0x18')]=qs['limit'](_0x342f26[_0xd47a('0x2c')][_0xd47a('0x18')]);_0x10a809['offset']=qs['offset'](_0x342f26[_0xd47a('0x2c')]['offset']);}return _0x5789c8['getDescriptions'](_0x10a809);}})[_0xd47a('0x38')](function(_0x2e7882){if(_0x2e7882){return _0x2e7882?{'count':_0x5baab5,'rows':_0x2e7882}:null;}})[_0xd47a('0x38')](respondWithResult(_0x3d16d4,null))[_0xd47a('0x41')](handleError(_0x3d16d4,null));};exports['getTags']=function(_0xe09487,_0x44e640,_0xb11534){var _0x12d8b8={};var _0x36328c={};var _0x5941d7;var _0x567c2b;return db[_0xd47a('0x27')][_0xd47a('0x45')]({'where':{'id':_0xe09487[_0xd47a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x44e640,null))[_0xd47a('0x38')](function(_0xa01fae){if(_0xa01fae){_0x5941d7=_0xa01fae;_0x36328c[_0xd47a('0x2b')]=_[_0xd47a('0x3f')](db[_0xd47a('0x4c')][_0xd47a('0x28')]);_0x36328c[_0xd47a('0x2c')]=_[_0xd47a('0x3f')](_0xe09487[_0xd47a('0x2c')]);_0x36328c[_0xd47a('0x2d')]=_['intersection'](_0x36328c[_0xd47a('0x2b')],_0x36328c['query']);_0x12d8b8[_0xd47a('0x30')]=_['intersection'](_0x36328c['model'],qs['fields'](_0xe09487[_0xd47a('0x2c')]['fields']));_0x12d8b8[_0xd47a('0x30')]=_0x12d8b8[_0xd47a('0x30')][_0xd47a('0x47')]?_0x12d8b8[_0xd47a('0x30')]:_0x36328c['model'];_0x12d8b8[_0xd47a('0x48')]=qs[_0xd47a('0x33')](_0xe09487[_0xd47a('0x2c')]['sort']);_0x12d8b8[_0xd47a('0x34')]=qs[_0xd47a('0x2d')](_['pick'](_0xe09487[_0xd47a('0x2c')],_0x36328c[_0xd47a('0x2d')]));if(_0xe09487['query']['filter']){_0x12d8b8[_0xd47a('0x34')]=_[_0xd47a('0x36')](_0x12d8b8[_0xd47a('0x34')],{'$or':_[_0xd47a('0x26')](_0x12d8b8[_0xd47a('0x30')],function(_0x50642a){var _0x2e8c6d={};_0x2e8c6d[_0x50642a]={'$like':'%'+_0xe09487['query']['filter']+'%'};return _0x2e8c6d;})});}_0x12d8b8=_[_0xd47a('0x36')]({},_0x12d8b8,_0xe09487['options']);return _0x5941d7[_0xd47a('0x4d')](_0x12d8b8);}})['then'](function(_0x2a425e){if(_0x2a425e){_0x567c2b=_0x2a425e[_0xd47a('0x47')];if(!_0xe09487['query'][_0xd47a('0x31')](_0xd47a('0x32'))){_0x12d8b8[_0xd47a('0x18')]=qs[_0xd47a('0x18')](_0xe09487[_0xd47a('0x2c')][_0xd47a('0x18')]);_0x12d8b8[_0xd47a('0x17')]=qs[_0xd47a('0x17')](_0xe09487['query'][_0xd47a('0x17')]);}return _0x5941d7['getTags'](_0x12d8b8);}})[_0xd47a('0x38')](function(_0x53e6f0){if(_0x53e6f0){return _0x53e6f0?{'count':_0x567c2b,'rows':_0x53e6f0}:null;}})[_0xd47a('0x38')](respondWithResult(_0x44e640,null))[_0xd47a('0x41')](handleError(_0x44e640,null));};exports['setTags']=function(_0x4d3c5b,_0x556f84,_0x79e93f){if(_0x4d3c5b[_0xd47a('0x43')]['id']){delete _0x4d3c5b[_0xd47a('0x43')]['id'];}return db[_0xd47a('0x27')][_0xd47a('0x45')]({'where':{'id':_0x4d3c5b[_0xd47a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x556f84,null))['then'](function(_0x4ee87e){if(_0x4ee87e){return _0x4ee87e[_0xd47a('0x4e')](_0x4d3c5b[_0xd47a('0x43')][_0xd47a('0x4f')]||[]);}return null;})['then'](respondWithResult(_0x556f84,null))[_0xd47a('0x41')](handleError(_0x556f84,null));};
\ No newline at end of file
index d31fa79..4bdcafb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f43=['request-promise','path','rimraf','../../config/environment','exports','define','FreshdeskConfiguration','lodash','../../config/logger','bluebird'];(function(_0x9dd18d,_0x40717e){var _0x304c53=function(_0x575169){while(--_0x575169){_0x9dd18d['push'](_0x9dd18d['shift']());}};_0x304c53(++_0x40717e);}(_0x1f43,0x7f));var _0x31f4=function(_0x3294b6,_0x595c2c){_0x3294b6=_0x3294b6-0x0;var _0x2bd382=_0x1f43[_0x3294b6];return _0x2bd382;};'use strict';var _=require(_0x31f4('0x0'));var util=require('util');var logger=require(_0x31f4('0x1'))('api');var moment=require('moment');var BPromise=require(_0x31f4('0x2'));var rp=require(_0x31f4('0x3'));var fs=require('fs');var path=require(_0x31f4('0x4'));var rimraf=require(_0x31f4('0x5'));var config=require(_0x31f4('0x6'));var attributes=require('./intFreshdeskConfiguration.attributes');module[_0x31f4('0x7')]=function(_0x235bb5,_0x21cfec){return _0x235bb5[_0x31f4('0x8')](_0x31f4('0x9'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x207a=['util','moment','bluebird','request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','lodash'];(function(_0x203d3a,_0x3d63fb){var _0x558763=function(_0x2a5fe3){while(--_0x2a5fe3){_0x203d3a['push'](_0x203d3a['shift']());}};_0x558763(++_0x3d63fb);}(_0x207a,0xdb));var _0xa207=function(_0x37b10a,_0x46e739){_0x37b10a=_0x37b10a-0x0;var _0x3f1584=_0x207a[_0x37b10a];return _0x3f1584;};'use strict';var _=require(_0xa207('0x0'));var util=require(_0xa207('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa207('0x2'));var BPromise=require(_0xa207('0x3'));var rp=require(_0xa207('0x4'));var fs=require('fs');var path=require(_0xa207('0x5'));var rimraf=require(_0xa207('0x6'));var config=require('../../config/environment');var attributes=require(_0xa207('0x7'));module[_0xa207('0x8')]=function(_0x3fe177,_0x47ba25){return _0x3fe177[_0xa207('0x9')]('FreshdeskConfiguration',attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b88961e..7491a66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf94=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x431ff8,_0x4085dd){var _0x84ccd4=function(_0x1fd1b5){while(--_0x1fd1b5){_0x431ff8['push'](_0x431ff8['shift']());}};_0x84ccd4(++_0x4085dd);}(_0xaf94,0xcd));var _0x4af9=function(_0x32d415,_0x2a7611){_0x32d415=_0x32d415-0x0;var _0x12d709=_0xaf94[_0x32d415];return _0x12d709;};'use strict';var _=require(_0x4af9('0x0'));var util=require(_0x4af9('0x1'));var moment=require(_0x4af9('0x2'));var BPromise=require(_0x4af9('0x3'));var rs=require(_0x4af9('0x4'));var fs=require('fs');var Redis=require(_0x4af9('0x5'));var db=require(_0x4af9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4af9('0x7'))('rpc');var config=require(_0x4af9('0x8'));var jayson=require(_0x4af9('0x9'));var client=jayson['client'][_0x4af9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e817f,_0x450547,_0x142208){return new BPromise(function(_0x4e84b9,_0x4d28fd){return client['request'](_0x5e817f,_0x142208)[_0x4af9('0xb')](function(_0x190245){logger[_0x4af9('0xc')](_0x4af9('0xd'),_0x450547,_0x4af9('0xe'));logger[_0x4af9('0xf')](_0x4af9('0x10'),_0x450547,_0x4af9('0xe'),JSON['stringify'](_0x190245));if(_0x190245[_0x4af9('0x11')]){if(_0x190245[_0x4af9('0x11')][_0x4af9('0x12')]===0x1f4){logger[_0x4af9('0x11')](_0x4af9('0xd'),_0x450547,_0x190245['error'][_0x4af9('0x13')]);return _0x4d28fd(_0x190245[_0x4af9('0x11')][_0x4af9('0x13')]);}logger[_0x4af9('0x11')](_0x4af9('0xd'),_0x450547,_0x190245['error']['message']);return _0x4e84b9(_0x190245[_0x4af9('0x11')][_0x4af9('0x13')]);}else{logger[_0x4af9('0xc')](_0x4af9('0xd'),_0x450547,_0x4af9('0xe'));_0x4e84b9(_0x190245['result'][_0x4af9('0x13')]);}})[_0x4af9('0x14')](function(_0x5772ff){logger[_0x4af9('0x11')](_0x4af9('0xd'),_0x450547,_0x5772ff);_0x4d28fd(_0x5772ff);});});}
\ No newline at end of file
+var _0xe1bf=['http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x122b65,_0x2bb327){var _0x2e4e08=function(_0x4705a3){while(--_0x4705a3){_0x122b65['push'](_0x122b65['shift']());}};_0x2e4e08(++_0x2bb327);}(_0xe1bf,0x1c4));var _0xfe1b=function(_0x13fa83,_0x2510d7){_0x13fa83=_0x13fa83-0x0;var _0x56a7bb=_0xe1bf[_0x13fa83];return _0x56a7bb;};'use strict';var _=require(_0xfe1b('0x0'));var util=require('util');var moment=require(_0xfe1b('0x1'));var BPromise=require(_0xfe1b('0x2'));var rs=require(_0xfe1b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe1b('0x4'))['db'];var utils=require(_0xfe1b('0x5'));var logger=require(_0xfe1b('0x6'))(_0xfe1b('0x7'));var config=require(_0xfe1b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfe1b('0x9')][_0xfe1b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55686e,_0x1a0222,_0x54fac9){return new BPromise(function(_0x1b5d66,_0x22a8b8){return client[_0xfe1b('0xb')](_0x55686e,_0x54fac9)[_0xfe1b('0xc')](function(_0x49eba4){logger[_0xfe1b('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1a0222,'request\x20sent');logger['debug'](_0xfe1b('0xe'),_0x1a0222,_0xfe1b('0xf'),JSON[_0xfe1b('0x10')](_0x49eba4));if(_0x49eba4[_0xfe1b('0x11')]){if(_0x49eba4[_0xfe1b('0x11')][_0xfe1b('0x12')]===0x1f4){logger['error'](_0xfe1b('0x13'),_0x1a0222,_0x49eba4['error'][_0xfe1b('0x14')]);return _0x22a8b8(_0x49eba4['error'][_0xfe1b('0x14')]);}logger[_0xfe1b('0x11')](_0xfe1b('0x13'),_0x1a0222,_0x49eba4[_0xfe1b('0x11')]['message']);return _0x1b5d66(_0x49eba4['error'][_0xfe1b('0x14')]);}else{logger[_0xfe1b('0xd')](_0xfe1b('0x13'),_0x1a0222,_0xfe1b('0xf'));_0x1b5d66(_0x49eba4[_0xfe1b('0x15')][_0xfe1b('0x14')]);}})['catch'](function(_0x2d190d){logger[_0xfe1b('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1a0222,_0x2d190d);_0x22a8b8(_0x2d190d);});});}
\ No newline at end of file
index 4d75cda..e8b4e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5427=['isAuthenticated','show','create','update','delete','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','get'];(function(_0x1865d4,_0x569a81){var _0x1f0e1c=function(_0x57887d){while(--_0x57887d){_0x1865d4['push'](_0x1865d4['shift']());}};_0x1f0e1c(++_0x569a81);}(_0x5427,0x186));var _0x7542=function(_0x1da921,_0x275920){_0x1da921=_0x1da921-0x0;var _0x4f4c4a=_0x5427[_0x1da921];return _0x4f4c4a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x7542('0x0'));var express=require('express');var router=express[_0x7542('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7542('0x2'));var interaction=require(_0x7542('0x3'));var config=require('../../config/environment');var controller=require(_0x7542('0x4'));router[_0x7542('0x5')]('/',auth[_0x7542('0x6')](),controller['index']);router[_0x7542('0x5')]('/:id',auth[_0x7542('0x6')](),controller[_0x7542('0x7')]);router['post']('/',auth[_0x7542('0x6')](),controller[_0x7542('0x8')]);router['put']('/:id',auth[_0x7542('0x6')](),controller[_0x7542('0x9')]);router[_0x7542('0xa')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x7542('0xb')]=router;
\ No newline at end of file
+var _0x9cf2=['show','post','create','put','destroy','exports','multer','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated'];(function(_0x28b188,_0x5bb6c3){var _0x718d59=function(_0x33f117){while(--_0x33f117){_0x28b188['push'](_0x28b188['shift']());}};_0x718d59(++_0x5bb6c3);}(_0x9cf2,0x66));var _0x29cf=function(_0x27817a,_0x260b40){_0x27817a=_0x27817a-0x0;var _0xafa4be=_0x9cf2[_0x27817a];return _0xafa4be;};'use strict';var multer=require(_0x29cf('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x29cf('0x1'));var router=express[_0x29cf('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x29cf('0x3'));var interaction=require(_0x29cf('0x4'));var config=require(_0x29cf('0x5'));var controller=require('./intFreshdeskField.controller');router[_0x29cf('0x6')]('/',auth['isAuthenticated'](),controller[_0x29cf('0x7')]);router['get'](_0x29cf('0x8'),auth[_0x29cf('0x9')](),controller[_0x29cf('0xa')]);router[_0x29cf('0xb')]('/',auth[_0x29cf('0x9')](),controller[_0x29cf('0xc')]);router[_0x29cf('0xd')](_0x29cf('0x8'),auth[_0x29cf('0x9')](),controller['update']);router['delete']('/:id',auth[_0x29cf('0x9')](),controller[_0x29cf('0xe')]);module[_0x29cf('0xf')]=router;
\ No newline at end of file
index e5e3aab..44e115d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b5=['STRING','BOOLEAN','sequelize','ENUM','variable','keyValue','picklist','string','customVariable'];(function(_0x204be3,_0x4c734b){var _0x348685=function(_0x471057){while(--_0x471057){_0x204be3['push'](_0x204be3['shift']());}};_0x348685(++_0x4c734b);}(_0xa6b5,0x92));var _0x5a6b=function(_0x1933dd,_0x2c787b){_0x1933dd=_0x1933dd-0x0;var _0x47eb6c=_0xa6b5[_0x1933dd];return _0x47eb6c;};'use strict';var Sequelize=require(_0x5a6b('0x0'));module['exports']={'type':{'type':Sequelize[_0x5a6b('0x1')]('string',_0x5a6b('0x2'),'customVariable',_0x5a6b('0x3'),_0x5a6b('0x4')),'defaultValue':_0x5a6b('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x5a6b('0x1')](_0x5a6b('0x5'),_0x5a6b('0x2'),_0x5a6b('0x6'))},'keyContent':{'type':Sequelize[_0x5a6b('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x5a6b('0x7')]},'customField':{'type':Sequelize[_0x5a6b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5a6b('0x7')]}};
\ No newline at end of file
+var _0x9411=['STRING','BOOLEAN','exports','ENUM','string','variable','customVariable'];(function(_0x14f419,_0xfc11fb){var _0x1fd9b8=function(_0x49983c){while(--_0x49983c){_0x14f419['push'](_0x14f419['shift']());}};_0x1fd9b8(++_0xfc11fb);}(_0x9411,0x1ec));var _0x1941=function(_0x2edf4a,_0x4638e4){_0x2edf4a=_0x2edf4a-0x0;var _0x56c880=_0x9411[_0x2edf4a];return _0x56c880;};'use strict';var Sequelize=require('sequelize');module[_0x1941('0x0')]={'type':{'type':Sequelize[_0x1941('0x1')](_0x1941('0x2'),_0x1941('0x3'),_0x1941('0x4'),'keyValue','picklist'),'defaultValue':_0x1941('0x2')},'content':{'type':Sequelize[_0x1941('0x5')]},'key':{'type':Sequelize[_0x1941('0x5')]},'keyType':{'type':Sequelize[_0x1941('0x1')]('string',_0x1941('0x3'),_0x1941('0x4'))},'keyContent':{'type':Sequelize[_0x1941('0x5')]},'idField':{'type':Sequelize[_0x1941('0x5')]},'nameField':{'type':Sequelize[_0x1941('0x5')]},'customField':{'type':Sequelize[_0x1941('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index db8b0d9..63026bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd9=['VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','create','body','find','destroy','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','FreshdeskField','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type'];(function(_0x481ae0,_0xa36f32){var _0x56a043=function(_0x3bfb7f){while(--_0x3bfb7f){_0x481ae0['push'](_0x481ae0['shift']());}};_0x56a043(++_0xa36f32);}(_0x0fd9,0xa3));var _0x90fd=function(_0x119cd8,_0x556b73){_0x119cd8=_0x119cd8-0x0;var _0x7072a3=_0x0fd9[_0x119cd8];return _0x7072a3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90fd('0x0'));var zipdir=require(_0x90fd('0x1'));var jsonpatch=require(_0x90fd('0x2'));var rp=require(_0x90fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x90fd('0x4'));var util=require(_0x90fd('0x5'));var path=require(_0x90fd('0x6'));var sox=require(_0x90fd('0x7'));var csv=require(_0x90fd('0x8'));var ejs=require(_0x90fd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x90fd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x90fd('0xb'));var toCsv=require(_0x90fd('0x8'));var querystring=require('querystring');var Papa=require(_0x90fd('0xc'));var Redis=require(_0x90fd('0xd'));var authService=require(_0x90fd('0xe'));var qs=require(_0x90fd('0xf'));var as=require(_0x90fd('0x10'));var hardwareService=require(_0x90fd('0x11'));var logger=require(_0x90fd('0x12'))(_0x90fd('0x13'));var utils=require(_0x90fd('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x90fd('0x15'));var db=require(_0x90fd('0x16'))['db'];function respondWithStatusCode(_0x4e8b99,_0x1439ed){_0x1439ed=_0x1439ed||0xcc;return function(_0x37a0f8){if(_0x37a0f8){return _0x4e8b99[_0x90fd('0x17')](_0x1439ed);}return _0x4e8b99['status'](_0x1439ed)[_0x90fd('0x18')]();};}function respondWithResult(_0x48e701,_0x1cae40){_0x1cae40=_0x1cae40||0xc8;return function(_0xb402d9){if(_0xb402d9){return _0x48e701[_0x90fd('0x19')](_0x1cae40)[_0x90fd('0x1a')](_0xb402d9);}};}function respondWithFilteredResult(_0x3c5da8,_0x442a19){return function(_0x296a64){if(_0x296a64){var _0x4eb953=typeof _0x442a19['offset']===_0x90fd('0x1b')&&typeof _0x442a19[_0x90fd('0x1c')]==='undefined';var _0x130489=_0x296a64[_0x90fd('0x1d')];var _0x1fcc87=_0x4eb953?0x0:_0x442a19['offset'];var _0x3f9c76=_0x4eb953?_0x296a64[_0x90fd('0x1d')]:_0x442a19[_0x90fd('0x1e')]+_0x442a19[_0x90fd('0x1c')];var _0x251957;if(_0x3f9c76>=_0x130489){_0x3f9c76=_0x130489;_0x251957=0xc8;}else{_0x251957=0xce;}_0x3c5da8[_0x90fd('0x19')](_0x251957);return _0x3c5da8[_0x90fd('0x1f')](_0x90fd('0x20'),_0x1fcc87+'-'+_0x3f9c76+'/'+_0x130489)[_0x90fd('0x1a')](_0x296a64);}return null;};}function patchUpdates(_0x90197e){return function(_0x19e79b){try{jsonpatch[_0x90fd('0x21')](_0x19e79b,_0x90197e,!![]);}catch(_0x1fb31a){return BPromise[_0x90fd('0x22')](_0x1fb31a);}return _0x19e79b[_0x90fd('0x23')]();};}function saveUpdates(_0x493c26,_0x35ce4e){return function(_0xc4e4e2){if(_0xc4e4e2){return _0xc4e4e2[_0x90fd('0x24')](_0x493c26)[_0x90fd('0x25')](function(_0x411a6a){return _0x411a6a;});}return null;};}function removeEntity(_0x3ad6c6,_0x30f67e){return function(_0x300262){if(_0x300262){return _0x300262['destroy']()[_0x90fd('0x25')](function(){_0x3ad6c6['status'](0xcc)[_0x90fd('0x18')]();});}};}function handleEntityNotFound(_0x18d5b3,_0x2ffea2){return function(_0x31667c){if(!_0x31667c){_0x18d5b3[_0x90fd('0x17')](0x194);}return _0x31667c;};}function handleError(_0x4c962f,_0x35c38d){_0x35c38d=_0x35c38d||0x1f4;return function(_0xe333f0){logger[_0x90fd('0x26')](_0xe333f0[_0x90fd('0x27')]);if(_0xe333f0[_0x90fd('0x28')]){delete _0xe333f0[_0x90fd('0x28')];}_0x4c962f['status'](_0x35c38d)['send'](_0xe333f0);};}exports[_0x90fd('0x29')]=function(_0x170cfb,_0x2924e9){var _0x404971={},_0x397aaf={},_0x59b3e8={'count':0x0,'rows':[]};var _0x4f69e7=_[_0x90fd('0x2a')](db[_0x90fd('0x2b')][_0x90fd('0x2c')],function(_0x3a0102){return{'name':_0x3a0102['fieldName'],'type':_0x3a0102['type'][_0x90fd('0x2d')]};});_0x397aaf[_0x90fd('0x2e')]=_[_0x90fd('0x2a')](_0x4f69e7,_0x90fd('0x28'));_0x397aaf['query']=_[_0x90fd('0x2f')](_0x170cfb[_0x90fd('0x30')]);_0x397aaf[_0x90fd('0x31')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],_0x397aaf[_0x90fd('0x30')]);_0x404971[_0x90fd('0x33')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x34')]));_0x404971[_0x90fd('0x33')]=_0x404971[_0x90fd('0x33')][_0x90fd('0x35')]?_0x404971[_0x90fd('0x33')]:_0x397aaf['model'];if(!_0x170cfb[_0x90fd('0x30')][_0x90fd('0x36')](_0x90fd('0x37'))){_0x404971[_0x90fd('0x1c')]=qs[_0x90fd('0x1c')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1c')]);_0x404971[_0x90fd('0x1e')]=qs[_0x90fd('0x1e')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1e')]);}_0x404971[_0x90fd('0x38')]=qs[_0x90fd('0x39')](_0x170cfb['query'][_0x90fd('0x39')]);_0x404971[_0x90fd('0x3a')]=qs[_0x90fd('0x31')](_[_0x90fd('0x3b')](_0x170cfb['query'],_0x397aaf[_0x90fd('0x31')]),_0x4f69e7);if(_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]){_0x404971['where']=_['merge'](_0x404971[_0x90fd('0x3a')],{'$or':_[_0x90fd('0x2a')](_0x4f69e7,function(_0x377319){if(_0x377319[_0x90fd('0x3d')]!==_0x90fd('0x3e')){var _0x254200={};_0x254200[_0x377319[_0x90fd('0x28')]]={'$like':'%'+_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]+'%'};return _0x254200;}})});}_0x404971=_[_0x90fd('0x3f')]({},_0x404971,_0x170cfb[_0x90fd('0x40')]);var _0x43c84c={'where':_0x404971[_0x90fd('0x3a')]};return db[_0x90fd('0x2b')][_0x90fd('0x1d')](_0x43c84c)[_0x90fd('0x25')](function(_0x2717ca){_0x59b3e8[_0x90fd('0x1d')]=_0x2717ca;if(_0x170cfb['query'][_0x90fd('0x41')]){_0x404971[_0x90fd('0x42')]=[{'all':!![]}];}return db[_0x90fd('0x2b')]['findAll'](_0x404971);})['then'](function(_0x47b8c8){_0x59b3e8[_0x90fd('0x43')]=_0x47b8c8;return _0x59b3e8;})[_0x90fd('0x25')](respondWithFilteredResult(_0x2924e9,_0x404971))[_0x90fd('0x44')](handleError(_0x2924e9,null));};exports[_0x90fd('0x45')]=function(_0x1361d9,_0x311c7e){var _0x363365={'raw':!![],'where':{'id':_0x1361d9[_0x90fd('0x46')]['id']}},_0x733d4d={};_0x733d4d[_0x90fd('0x2e')]=_[_0x90fd('0x2f')](db[_0x90fd('0x2b')][_0x90fd('0x2c')]);_0x733d4d[_0x90fd('0x30')]=_[_0x90fd('0x2f')](_0x1361d9['query']);_0x733d4d['filters']=_[_0x90fd('0x32')](_0x733d4d[_0x90fd('0x2e')],_0x733d4d[_0x90fd('0x30')]);_0x363365['attributes']=_['intersection'](_0x733d4d[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x1361d9['query']['fields']));_0x363365[_0x90fd('0x33')]=_0x363365[_0x90fd('0x33')]['length']?_0x363365['attributes']:_0x733d4d[_0x90fd('0x2e')];if(_0x1361d9[_0x90fd('0x30')][_0x90fd('0x41')]){_0x363365['include']=[{'all':!![]}];}_0x363365=_[_0x90fd('0x3f')]({},_0x363365,_0x1361d9[_0x90fd('0x40')]);return db['FreshdeskField']['find'](_0x363365)['then'](handleEntityNotFound(_0x311c7e,null))[_0x90fd('0x25')](respondWithResult(_0x311c7e,null))[_0x90fd('0x44')](handleError(_0x311c7e,null));};exports['create']=function(_0x2d42b3,_0x2b73f7){return db[_0x90fd('0x2b')][_0x90fd('0x47')](_0x2d42b3[_0x90fd('0x48')],{})['then'](respondWithResult(_0x2b73f7,0xc9))['catch'](handleError(_0x2b73f7,null));};exports[_0x90fd('0x24')]=function(_0x326e4d,_0x125874){if(_0x326e4d[_0x90fd('0x48')]['id']){delete _0x326e4d[_0x90fd('0x48')]['id'];}return db[_0x90fd('0x2b')][_0x90fd('0x49')]({'where':{'id':_0x326e4d[_0x90fd('0x46')]['id']}})[_0x90fd('0x25')](handleEntityNotFound(_0x125874,null))[_0x90fd('0x25')](saveUpdates(_0x326e4d['body'],null))[_0x90fd('0x25')](respondWithResult(_0x125874,null))[_0x90fd('0x44')](handleError(_0x125874,null));};exports[_0x90fd('0x4a')]=function(_0x38021b,_0x4b47bc){return db['FreshdeskField'][_0x90fd('0x49')]({'where':{'id':_0x38021b['params']['id']}})['then'](handleEntityNotFound(_0x4b47bc,null))[_0x90fd('0x25')](removeEntity(_0x4b47bc,null))[_0x90fd('0x44')](handleError(_0x4b47bc,null));};
\ No newline at end of file
+var _0xeb74=['crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','merge','where','VIRTUAL','filter','options','FreshdeskField','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash'];(function(_0x4b7c22,_0x3aac36){var _0x26e683=function(_0x45b1d2){while(--_0x45b1d2){_0x4b7c22['push'](_0x4b7c22['shift']());}};_0x26e683(++_0x3aac36);}(_0xeb74,0xe3));var _0x4eb7=function(_0x345e28,_0x3397c8){_0x345e28=_0x345e28-0x0;var _0x552d06=_0xeb74[_0x345e28];return _0x552d06;};'use strict';var emlformat=require(_0x4eb7('0x0'));var rimraf=require(_0x4eb7('0x1'));var zipdir=require(_0x4eb7('0x2'));var jsonpatch=require(_0x4eb7('0x3'));var rp=require(_0x4eb7('0x4'));var moment=require(_0x4eb7('0x5'));var BPromise=require(_0x4eb7('0x6'));var Mustache=require('mustache');var util=require(_0x4eb7('0x7'));var path=require(_0x4eb7('0x8'));var sox=require(_0x4eb7('0x9'));var csv=require(_0x4eb7('0xa'));var ejs=require(_0x4eb7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4eb7('0xc'));var squel=require('squel');var crypto=require(_0x4eb7('0xd'));var jsforce=require(_0x4eb7('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4eb7('0xf'));var Papa=require(_0x4eb7('0x10'));var Redis=require('ioredis');var authService=require(_0x4eb7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4eb7('0x12'));var hardwareService=require(_0x4eb7('0x13'));var logger=require(_0x4eb7('0x14'))('api');var utils=require(_0x4eb7('0x15'));var config=require(_0x4eb7('0x16'));var licenseUtil=require(_0x4eb7('0x17'));var db=require(_0x4eb7('0x18'))['db'];function respondWithStatusCode(_0x35fa89,_0x4194e1){_0x4194e1=_0x4194e1||0xcc;return function(_0x3c9f45){if(_0x3c9f45){return _0x35fa89['sendStatus'](_0x4194e1);}return _0x35fa89['status'](_0x4194e1)['end']();};}function respondWithResult(_0x17fb81,_0x51f09d){_0x51f09d=_0x51f09d||0xc8;return function(_0x84c68b){if(_0x84c68b){return _0x17fb81[_0x4eb7('0x19')](_0x51f09d)[_0x4eb7('0x1a')](_0x84c68b);}};}function respondWithFilteredResult(_0x1c4a97,_0x5d6d5){return function(_0x21433d){if(_0x21433d){var _0x11674f=typeof _0x5d6d5[_0x4eb7('0x1b')]===_0x4eb7('0x1c')&&typeof _0x5d6d5[_0x4eb7('0x1d')]==='undefined';var _0xb86bc9=_0x21433d[_0x4eb7('0x1e')];var _0x3b6d41=_0x11674f?0x0:_0x5d6d5[_0x4eb7('0x1b')];var _0x302e16=_0x11674f?_0x21433d[_0x4eb7('0x1e')]:_0x5d6d5[_0x4eb7('0x1b')]+_0x5d6d5[_0x4eb7('0x1d')];var _0x5f4780;if(_0x302e16>=_0xb86bc9){_0x302e16=_0xb86bc9;_0x5f4780=0xc8;}else{_0x5f4780=0xce;}_0x1c4a97[_0x4eb7('0x19')](_0x5f4780);return _0x1c4a97[_0x4eb7('0x1f')](_0x4eb7('0x20'),_0x3b6d41+'-'+_0x302e16+'/'+_0xb86bc9)[_0x4eb7('0x1a')](_0x21433d);}return null;};}function patchUpdates(_0x32f0f5){return function(_0x2efd67){try{jsonpatch[_0x4eb7('0x21')](_0x2efd67,_0x32f0f5,!![]);}catch(_0x4ddbe4){return BPromise[_0x4eb7('0x22')](_0x4ddbe4);}return _0x2efd67[_0x4eb7('0x23')]();};}function saveUpdates(_0x4783b1,_0x164515){return function(_0x14a7be){if(_0x14a7be){return _0x14a7be[_0x4eb7('0x24')](_0x4783b1)[_0x4eb7('0x25')](function(_0x2df1b1){return _0x2df1b1;});}return null;};}function removeEntity(_0x1a2b8b,_0x13e871){return function(_0x4de2d9){if(_0x4de2d9){return _0x4de2d9[_0x4eb7('0x26')]()[_0x4eb7('0x25')](function(){_0x1a2b8b[_0x4eb7('0x19')](0xcc)[_0x4eb7('0x27')]();});}};}function handleEntityNotFound(_0x3e0da2,_0x25eb74){return function(_0x365060){if(!_0x365060){_0x3e0da2[_0x4eb7('0x28')](0x194);}return _0x365060;};}function handleError(_0x80b804,_0x248759){_0x248759=_0x248759||0x1f4;return function(_0xf83c11){logger[_0x4eb7('0x29')](_0xf83c11[_0x4eb7('0x2a')]);if(_0xf83c11[_0x4eb7('0x2b')]){delete _0xf83c11[_0x4eb7('0x2b')];}_0x80b804[_0x4eb7('0x19')](_0x248759)[_0x4eb7('0x2c')](_0xf83c11);};}exports[_0x4eb7('0x2d')]=function(_0x33a2c1,_0x28fda8){var _0x114c68={},_0x17030a={},_0x3ed224={'count':0x0,'rows':[]};var _0x50209d=_[_0x4eb7('0x2e')](db['FreshdeskField'][_0x4eb7('0x2f')],function(_0x13f71a){return{'name':_0x13f71a[_0x4eb7('0x30')],'type':_0x13f71a[_0x4eb7('0x31')][_0x4eb7('0x32')]};});_0x17030a[_0x4eb7('0x33')]=_[_0x4eb7('0x2e')](_0x50209d,_0x4eb7('0x2b'));_0x17030a[_0x4eb7('0x34')]=_['keys'](_0x33a2c1[_0x4eb7('0x34')]);_0x17030a['filters']=_[_0x4eb7('0x35')](_0x17030a[_0x4eb7('0x33')],_0x17030a['query']);_0x114c68['attributes']=_[_0x4eb7('0x35')](_0x17030a[_0x4eb7('0x33')],qs[_0x4eb7('0x36')](_0x33a2c1[_0x4eb7('0x34')]['fields']));_0x114c68[_0x4eb7('0x37')]=_0x114c68[_0x4eb7('0x37')][_0x4eb7('0x38')]?_0x114c68[_0x4eb7('0x37')]:_0x17030a[_0x4eb7('0x33')];if(!_0x33a2c1['query'][_0x4eb7('0x39')](_0x4eb7('0x3a'))){_0x114c68[_0x4eb7('0x1d')]=qs['limit'](_0x33a2c1[_0x4eb7('0x34')][_0x4eb7('0x1d')]);_0x114c68[_0x4eb7('0x1b')]=qs['offset'](_0x33a2c1[_0x4eb7('0x34')]['offset']);}_0x114c68[_0x4eb7('0x3b')]=qs[_0x4eb7('0x3c')](_0x33a2c1[_0x4eb7('0x34')][_0x4eb7('0x3c')]);_0x114c68['where']=qs[_0x4eb7('0x3d')](_[_0x4eb7('0x3e')](_0x33a2c1[_0x4eb7('0x34')],_0x17030a[_0x4eb7('0x3d')]),_0x50209d);if(_0x33a2c1['query']['filter']){_0x114c68['where']=_[_0x4eb7('0x3f')](_0x114c68[_0x4eb7('0x40')],{'$or':_[_0x4eb7('0x2e')](_0x50209d,function(_0x20ac7b){if(_0x20ac7b[_0x4eb7('0x31')]!==_0x4eb7('0x41')){var _0x1038c1={};_0x1038c1[_0x20ac7b[_0x4eb7('0x2b')]]={'$like':'%'+_0x33a2c1[_0x4eb7('0x34')][_0x4eb7('0x42')]+'%'};return _0x1038c1;}})});}_0x114c68=_['merge']({},_0x114c68,_0x33a2c1[_0x4eb7('0x43')]);var _0x38218f={'where':_0x114c68[_0x4eb7('0x40')]};return db[_0x4eb7('0x44')][_0x4eb7('0x1e')](_0x38218f)[_0x4eb7('0x25')](function(_0x704d4d){_0x3ed224[_0x4eb7('0x1e')]=_0x704d4d;if(_0x33a2c1[_0x4eb7('0x34')][_0x4eb7('0x45')]){_0x114c68[_0x4eb7('0x46')]=[{'all':!![]}];}return db[_0x4eb7('0x44')][_0x4eb7('0x47')](_0x114c68);})[_0x4eb7('0x25')](function(_0x38af1f){_0x3ed224[_0x4eb7('0x48')]=_0x38af1f;return _0x3ed224;})[_0x4eb7('0x25')](respondWithFilteredResult(_0x28fda8,_0x114c68))[_0x4eb7('0x49')](handleError(_0x28fda8,null));};exports[_0x4eb7('0x4a')]=function(_0x79aec5,_0x5eff9e){var _0x2fd5c2={'raw':!![],'where':{'id':_0x79aec5[_0x4eb7('0x4b')]['id']}},_0x2df542={};_0x2df542[_0x4eb7('0x33')]=_[_0x4eb7('0x4c')](db[_0x4eb7('0x44')][_0x4eb7('0x2f')]);_0x2df542[_0x4eb7('0x34')]=_[_0x4eb7('0x4c')](_0x79aec5['query']);_0x2df542[_0x4eb7('0x3d')]=_['intersection'](_0x2df542[_0x4eb7('0x33')],_0x2df542[_0x4eb7('0x34')]);_0x2fd5c2[_0x4eb7('0x37')]=_['intersection'](_0x2df542[_0x4eb7('0x33')],qs[_0x4eb7('0x36')](_0x79aec5[_0x4eb7('0x34')][_0x4eb7('0x36')]));_0x2fd5c2['attributes']=_0x2fd5c2[_0x4eb7('0x37')]['length']?_0x2fd5c2[_0x4eb7('0x37')]:_0x2df542[_0x4eb7('0x33')];if(_0x79aec5[_0x4eb7('0x34')][_0x4eb7('0x45')]){_0x2fd5c2[_0x4eb7('0x46')]=[{'all':!![]}];}_0x2fd5c2=_['merge']({},_0x2fd5c2,_0x79aec5['options']);return db[_0x4eb7('0x44')][_0x4eb7('0x4d')](_0x2fd5c2)[_0x4eb7('0x25')](handleEntityNotFound(_0x5eff9e,null))[_0x4eb7('0x25')](respondWithResult(_0x5eff9e,null))[_0x4eb7('0x49')](handleError(_0x5eff9e,null));};exports['create']=function(_0x6086,_0x104284){return db['FreshdeskField'][_0x4eb7('0x4e')](_0x6086[_0x4eb7('0x4f')],{})['then'](respondWithResult(_0x104284,0xc9))[_0x4eb7('0x49')](handleError(_0x104284,null));};exports[_0x4eb7('0x24')]=function(_0x3c8049,_0x5774d5){if(_0x3c8049[_0x4eb7('0x4f')]['id']){delete _0x3c8049['body']['id'];}return db['FreshdeskField'][_0x4eb7('0x4d')]({'where':{'id':_0x3c8049[_0x4eb7('0x4b')]['id']}})[_0x4eb7('0x25')](handleEntityNotFound(_0x5774d5,null))[_0x4eb7('0x25')](saveUpdates(_0x3c8049[_0x4eb7('0x4f')],null))[_0x4eb7('0x25')](respondWithResult(_0x5774d5,null))[_0x4eb7('0x49')](handleError(_0x5774d5,null));};exports[_0x4eb7('0x26')]=function(_0x2913c5,_0x23c0d5){return db[_0x4eb7('0x44')][_0x4eb7('0x4d')]({'where':{'id':_0x2913c5[_0x4eb7('0x4b')]['id']}})[_0x4eb7('0x25')](handleEntityNotFound(_0x23c0d5,null))[_0x4eb7('0x25')](removeEntity(_0x23c0d5,null))[_0x4eb7('0x49')](handleError(_0x23c0d5,null));};
\ No newline at end of file
index 86b645e..2914da7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf281=['./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','idField','util','../../config/logger','api','bluebird','rimraf','../../config/environment'];(function(_0xb75541,_0x1e66c9){var _0x4f07ba=function(_0x859005){while(--_0x859005){_0xb75541['push'](_0xb75541['shift']());}};_0x4f07ba(++_0x1e66c9);}(_0xf281,0xba));var _0x1f28=function(_0x45adba,_0x6dd8bf){_0x45adba=_0x45adba-0x0;var _0xf8c49d=_0xf281[_0x45adba];return _0xf8c49d;};'use strict';var _=require('lodash');var util=require(_0x1f28('0x0'));var logger=require(_0x1f28('0x1'))(_0x1f28('0x2'));var moment=require('moment');var BPromise=require(_0x1f28('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1f28('0x4'));var config=require(_0x1f28('0x5'));var attributes=require(_0x1f28('0x6'));module[_0x1f28('0x7')]=function(_0x42a3da,_0x1e5eb9){return _0x42a3da[_0x1f28('0x8')](_0x1f28('0x9'),attributes,{'tableName':_0x1f28('0xa'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x1f28('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x20a8=['idField','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index'];(function(_0x3b1ecf,_0x1284b4){var _0x5452d2=function(_0x22258){while(--_0x22258){_0x3b1ecf['push'](_0x3b1ecf['shift']());}};_0x5452d2(++_0x1284b4);}(_0x20a8,0x115));var _0x820a=function(_0x494a85,_0x3b8e5d){_0x494a85=_0x494a85-0x0;var _0x43834d=_0x20a8[_0x494a85];return _0x43834d;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x820a('0x0'));var moment=require(_0x820a('0x1'));var BPromise=require(_0x820a('0x2'));var rp=require(_0x820a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x820a('0x4'));var config=require(_0x820a('0x5'));var attributes=require('./intFreshdeskField.attributes');module[_0x820a('0x6')]=function(_0x6312ec,_0x276f7b){return _0x6312ec[_0x820a('0x7')](_0x820a('0x8'),attributes,{'tableName':_0x820a('0x9'),'paranoid':![],'indexes':[{'name':_0x820a('0xa'),'fields':[_0x820a('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9b01b12..af9165d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b25=['request','then','info','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','FreshdeskField,\x20%s,\x20%s','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http'];(function(_0x388545,_0x2b0c31){var _0x19047a=function(_0x418eb0){while(--_0x418eb0){_0x388545['push'](_0x388545['shift']());}};_0x19047a(++_0x2b0c31);}(_0x1b25,0x101));var _0x51b2=function(_0x1f4d57,_0x378d8e){_0x1f4d57=_0x1f4d57-0x0;var _0x3613a8=_0x1b25[_0x1f4d57];return _0x3613a8;};'use strict';var _=require(_0x51b2('0x0'));var util=require(_0x51b2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x51b2('0x2'));var fs=require('fs');var Redis=require(_0x51b2('0x3'));var db=require(_0x51b2('0x4'))['db'];var utils=require(_0x51b2('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x51b2('0x6'));var client=jayson[_0x51b2('0x7')][_0x51b2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5ec061,_0x49a47f,_0x3efd4f){return new BPromise(function(_0x1c7b1f,_0x44e7b9){return client[_0x51b2('0x9')](_0x5ec061,_0x3efd4f)[_0x51b2('0xa')](function(_0xe47a84){logger[_0x51b2('0xb')]('FreshdeskField,\x20%s,\x20%s',_0x49a47f,'request\x20sent');logger[_0x51b2('0xc')](_0x51b2('0xd'),_0x49a47f,_0x51b2('0xe'),JSON['stringify'](_0xe47a84));if(_0xe47a84[_0x51b2('0xf')]){if(_0xe47a84[_0x51b2('0xf')][_0x51b2('0x10')]===0x1f4){logger[_0x51b2('0xf')]('FreshdeskField,\x20%s,\x20%s',_0x49a47f,_0xe47a84[_0x51b2('0xf')][_0x51b2('0x11')]);return _0x44e7b9(_0xe47a84['error']['message']);}logger[_0x51b2('0xf')](_0x51b2('0x12'),_0x49a47f,_0xe47a84[_0x51b2('0xf')]['message']);return _0x1c7b1f(_0xe47a84[_0x51b2('0xf')][_0x51b2('0x11')]);}else{logger[_0x51b2('0xb')](_0x51b2('0x12'),_0x49a47f,'request\x20sent');_0x1c7b1f(_0xe47a84['result'][_0x51b2('0x11')]);}})['catch'](function(_0x27749d){logger['error'](_0x51b2('0x12'),_0x49a47f,_0x27749d);_0x44e7b9(_0x27749d);});});}
\ No newline at end of file
+var _0xa48f=['request','then','info','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','FreshdeskField,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x1a0bfe,_0x204166){var _0x7e10a=function(_0x4612d6){while(--_0x4612d6){_0x1a0bfe['push'](_0x1a0bfe['shift']());}};_0x7e10a(++_0x204166);}(_0xa48f,0x14e));var _0xfa48=function(_0x19f371,_0x9b9bb0){_0x19f371=_0x19f371-0x0;var _0x3b47cc=_0xa48f[_0x19f371];return _0x3b47cc;};'use strict';var _=require('lodash');var util=require(_0xfa48('0x0'));var moment=require(_0xfa48('0x1'));var BPromise=require(_0xfa48('0x2'));var rs=require(_0xfa48('0x3'));var fs=require('fs');var Redis=require(_0xfa48('0x4'));var db=require(_0xfa48('0x5'))['db'];var utils=require(_0xfa48('0x6'));var logger=require(_0xfa48('0x7'))(_0xfa48('0x8'));var config=require(_0xfa48('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfa48('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43c455,_0x53859f,_0x2352b6){return new BPromise(function(_0x40fd49,_0x4efadc){return client[_0xfa48('0xb')](_0x43c455,_0x2352b6)[_0xfa48('0xc')](function(_0x5a0739){logger[_0xfa48('0xd')]('FreshdeskField,\x20%s,\x20%s',_0x53859f,_0xfa48('0xe'));logger[_0xfa48('0xf')](_0xfa48('0x10'),_0x53859f,'request\x20sent',JSON[_0xfa48('0x11')](_0x5a0739));if(_0x5a0739[_0xfa48('0x12')]){if(_0x5a0739[_0xfa48('0x12')]['code']===0x1f4){logger[_0xfa48('0x12')](_0xfa48('0x13'),_0x53859f,_0x5a0739[_0xfa48('0x12')][_0xfa48('0x14')]);return _0x4efadc(_0x5a0739[_0xfa48('0x12')][_0xfa48('0x14')]);}logger[_0xfa48('0x12')](_0xfa48('0x13'),_0x53859f,_0x5a0739[_0xfa48('0x12')][_0xfa48('0x14')]);return _0x40fd49(_0x5a0739['error'][_0xfa48('0x14')]);}else{logger['info'](_0xfa48('0x13'),_0x53859f,_0xfa48('0xe'));_0x40fd49(_0x5a0739[_0xfa48('0x15')][_0xfa48('0x14')]);}})[_0xfa48('0x16')](function(_0x43cb0d){logger[_0xfa48('0x12')](_0xfa48('0x13'),_0x53859f,_0x43cb0d);_0x4efadc(_0x43cb0d);});});}
\ No newline at end of file
index a86e086..8391f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['isAuthenticated','index','show','getConfigurations','getFields','post','create','/:id/configurations','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get'];(function(_0x327ed4,_0xe72f28){var _0x9a9067=function(_0x5dc57d){while(--_0x5dc57d){_0x327ed4['push'](_0x327ed4['shift']());}};_0x9a9067(++_0xe72f28);}(_0x6324,0x142));var _0x4632=function(_0x28087c,_0x895c0f){_0x28087c=_0x28087c-0x0;var _0x329122=_0x6324[_0x28087c];return _0x329122;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./intFreshsalesAccount.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0x7')]('/:id/configurations',auth[_0x4632('0x8')](),controller[_0x4632('0xb')]);router['get']('/:id/fields',auth[_0x4632('0x8')](),controller[_0x4632('0xc')]);router[_0x4632('0xd')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0xe')]);router[_0x4632('0xd')](_0x4632('0xf'),auth[_0x4632('0x8')](),controller['addConfiguration']);router[_0x4632('0x10')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0x11')]);router[_0x4632('0x12')](_0x4632('0x13'),auth['isAuthenticated'](),controller[_0x4632('0x14')]);module[_0x4632('0x15')]=router;
\ No newline at end of file
+var _0x6f7a=['../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x35d568,_0x4d47ae){var _0x5dac84=function(_0x265aaf){while(--_0x265aaf){_0x35d568['push'](_0x35d568['shift']());}};_0x5dac84(++_0x4d47ae);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x3652ec,_0x55f927){_0x3652ec=_0x3652ec-0x0;var _0x18bcdc=_0x6f7a[_0x3652ec];return _0x18bcdc;};'use strict';var multer=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var path=require(_0xa6f7('0x2'));var timeout=require(_0xa6f7('0x3'));var express=require('express');var router=express[_0xa6f7('0x4')]();var fs_extra=require(_0xa6f7('0x5'));var auth=require(_0xa6f7('0x6'));var interaction=require(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var controller=require(_0xa6f7('0x9'));router[_0xa6f7('0xa')]('/',auth[_0xa6f7('0xb')](),controller[_0xa6f7('0xc')]);router[_0xa6f7('0xa')](_0xa6f7('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xa6f7('0xa')](_0xa6f7('0xe'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0xf')]);router[_0xa6f7('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xa6f7('0x10')]);router[_0xa6f7('0x11')]('/',auth['isAuthenticated'](),controller[_0xa6f7('0x12')]);router['post'](_0xa6f7('0xe'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0x13')]);router[_0xa6f7('0x14')]('/:id',auth[_0xa6f7('0xb')](),controller['update']);router[_0xa6f7('0x15')](_0xa6f7('0xd'),auth[_0xa6f7('0xb')](),controller['destroy']);module[_0xa6f7('0x16')]=router;
\ No newline at end of file
index b833353..18daf14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['STRING','username','remoteUri','exports'];(function(_0x51f056,_0x35177e){var _0x53e94d=function(_0x37ef26){while(--_0x37ef26){_0x51f056['push'](_0x51f056['shift']());}};_0x53e94d(++_0x35177e);}(_0xb03e,0x1eb));var _0xeb03=function(_0x53970c,_0x70bdd4){_0x53970c=_0x53970c-0x0;var _0x3683c3=_0xb03e[_0x53970c];return _0x3683c3;};'use strict';var Sequelize=require('sequelize');module[_0xeb03('0x0')]={'name':{'type':Sequelize[_0xeb03('0x1')]},'description':{'type':Sequelize[_0xeb03('0x1')]},'username':{'type':Sequelize[_0xeb03('0x1')],'unique':_0xeb03('0x2')},'apiKey':{'type':Sequelize[_0xeb03('0x1')]},'remoteUri':{'type':Sequelize[_0xeb03('0x1')],'unique':_0xeb03('0x3')},'serverUrl':{'type':Sequelize[_0xeb03('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x4213=['exports','STRING','username','remoteUri','sequelize'];(function(_0x49864b,_0x1e75a6){var _0x6f097d=function(_0x14360d){while(--_0x14360d){_0x49864b['push'](_0x49864b['shift']());}};_0x6f097d(++_0x1e75a6);}(_0x4213,0x77));var _0x3421=function(_0xf3a3d8,_0x7cf691){_0xf3a3d8=_0xf3a3d8-0x0;var _0x4293fc=_0x4213[_0xf3a3d8];return _0x4293fc;};'use strict';var Sequelize=require(_0x3421('0x0'));module[_0x3421('0x1')]={'name':{'type':Sequelize[_0x3421('0x2')]},'description':{'type':Sequelize[_0x3421('0x2')]},'username':{'type':Sequelize[_0x3421('0x2')],'unique':_0x3421('0x3')},'apiKey':{'type':Sequelize[_0x3421('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x3421('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 100618d..054d615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8491=['sort','where','filters','filter','merge','VIRTUAL','options','catch','params','includeAll','include','find','body','update','getConfigurations','findOne','FreshsalesConfiguration','pick','AccountId','getSubjects','channel','getDescriptions','create','FreshsalesField','Subjects','Descriptions','getFields','username','remoteUri','slice','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','users','Requested\x20Resource\x20not\x20Found','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','undefined','count','offset','limit','set','Content-Range','apply','reject','save','destroy','then','end','error','name','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x35c923,_0x2d150b){var _0x142a94=function(_0x1de3b6){while(--_0x1de3b6){_0x35c923['push'](_0x35c923['shift']());}};_0x142a94(++_0x2d150b);}(_0x8491,0xfb));var _0x1849=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x8491[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0x1849('0x0'));var rimraf=require(_0x1849('0x1'));var zipdir=require(_0x1849('0x2'));var jsonpatch=require(_0x1849('0x3'));var rp=require(_0x1849('0x4'));var moment=require(_0x1849('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1849('0x6'));var util=require(_0x1849('0x7'));var path=require(_0x1849('0x8'));var sox=require(_0x1849('0x9'));var csv=require(_0x1849('0xa'));var ejs=require(_0x1849('0xb'));var fs=require('fs');var fs_extra=require(_0x1849('0xc'));var _=require(_0x1849('0xd'));var squel=require(_0x1849('0xe'));var crypto=require(_0x1849('0xf'));var jsforce=require(_0x1849('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x1849('0xa'));var querystring=require('querystring');var Papa=require(_0x1849('0x11'));var Redis=require(_0x1849('0x12'));var authService=require(_0x1849('0x13'));var qs=require(_0x1849('0x14'));var as=require(_0x1849('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1849('0x16'))(_0x1849('0x17'));var utils=require(_0x1849('0x18'));var config=require(_0x1849('0x19'));var licenseUtil=require(_0x1849('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x1849('0x1b'));function respondWithStatusCode(_0x571217,_0x27fb7b){_0x27fb7b=_0x27fb7b||0xcc;return function(_0x30e55a){if(_0x30e55a){return _0x571217[_0x1849('0x1c')](_0x27fb7b);}return _0x571217[_0x1849('0x1d')](_0x27fb7b)['end']();};}function respondWithResult(_0xa33737,_0x10410a){_0x10410a=_0x10410a||0xc8;return function(_0xc939b3){if(_0xc939b3){return _0xa33737[_0x1849('0x1d')](_0x10410a)['json'](_0xc939b3);}};}function respondWithFilteredResult(_0x222d40,_0x549027){return function(_0x2bfce7){if(_0x2bfce7){var _0x486547=typeof _0x549027['offset']==='undefined'&&typeof _0x549027['limit']===_0x1849('0x1e');var _0x143307=_0x2bfce7[_0x1849('0x1f')];var _0x4e561f=_0x486547?0x0:_0x549027[_0x1849('0x20')];var _0x108093=_0x486547?_0x2bfce7['count']:_0x549027[_0x1849('0x20')]+_0x549027[_0x1849('0x21')];var _0x4a0e18;if(_0x108093>=_0x143307){_0x108093=_0x143307;_0x4a0e18=0xc8;}else{_0x4a0e18=0xce;}_0x222d40[_0x1849('0x1d')](_0x4a0e18);return _0x222d40[_0x1849('0x22')](_0x1849('0x23'),_0x4e561f+'-'+_0x108093+'/'+_0x143307)['json'](_0x2bfce7);}return null;};}function patchUpdates(_0x3ef44f){return function(_0x362b5a){try{jsonpatch[_0x1849('0x24')](_0x362b5a,_0x3ef44f,!![]);}catch(_0x1d13fa){return BPromise[_0x1849('0x25')](_0x1d13fa);}return _0x362b5a[_0x1849('0x26')]();};}function saveUpdates(_0x536ae9,_0x316244){return function(_0x472c86){if(_0x472c86){return _0x472c86['update'](_0x536ae9)['then'](function(_0x2016c3){return _0x2016c3;});}return null;};}function removeEntity(_0x4299cd,_0x524679){return function(_0x100833){if(_0x100833){return _0x100833[_0x1849('0x27')]()[_0x1849('0x28')](function(){_0x4299cd[_0x1849('0x1d')](0xcc)[_0x1849('0x29')]();});}};}function handleEntityNotFound(_0x38aa8c,_0x239a4b){return function(_0x29c76a){if(!_0x29c76a){_0x38aa8c['sendStatus'](0x194);}return _0x29c76a;};}function handleError(_0x2080c6,_0x779be7){_0x779be7=_0x779be7||0x1f4;return function(_0x1ea3c2){logger[_0x1849('0x2a')](_0x1ea3c2['stack']);if(_0x1ea3c2[_0x1849('0x2b')]){delete _0x1ea3c2['name'];}_0x2080c6[_0x1849('0x1d')](_0x779be7)['send'](_0x1ea3c2);};}exports[_0x1849('0x2c')]=function(_0x48f1bb,_0x1c7da9){var _0x27e365={},_0x32feda={},_0x6d1226={'count':0x0,'rows':[]};var _0x177949=_[_0x1849('0x2d')](db[_0x1849('0x2e')][_0x1849('0x2f')],function(_0x2a78f6){return{'name':_0x2a78f6[_0x1849('0x30')],'type':_0x2a78f6[_0x1849('0x31')][_0x1849('0x32')]};});_0x32feda[_0x1849('0x33')]=_[_0x1849('0x2d')](_0x177949,_0x1849('0x2b'));_0x32feda[_0x1849('0x34')]=_[_0x1849('0x35')](_0x48f1bb[_0x1849('0x34')]);_0x32feda['filters']=_[_0x1849('0x36')](_0x32feda[_0x1849('0x33')],_0x32feda[_0x1849('0x34')]);_0x27e365[_0x1849('0x37')]=_[_0x1849('0x36')](_0x32feda[_0x1849('0x33')],qs[_0x1849('0x38')](_0x48f1bb[_0x1849('0x34')][_0x1849('0x38')]));_0x27e365[_0x1849('0x37')]=_0x27e365[_0x1849('0x37')][_0x1849('0x39')]?_0x27e365[_0x1849('0x37')]:_0x32feda[_0x1849('0x33')];if(!_0x48f1bb[_0x1849('0x34')][_0x1849('0x3a')](_0x1849('0x3b'))){_0x27e365['limit']=qs[_0x1849('0x21')](_0x48f1bb[_0x1849('0x34')][_0x1849('0x21')]);_0x27e365['offset']=qs[_0x1849('0x20')](_0x48f1bb[_0x1849('0x34')]['offset']);}_0x27e365[_0x1849('0x3c')]=qs['sort'](_0x48f1bb[_0x1849('0x34')][_0x1849('0x3d')]);_0x27e365[_0x1849('0x3e')]=qs['filters'](_['pick'](_0x48f1bb[_0x1849('0x34')],_0x32feda[_0x1849('0x3f')]),_0x177949);if(_0x48f1bb[_0x1849('0x34')][_0x1849('0x40')]){_0x27e365[_0x1849('0x3e')]=_[_0x1849('0x41')](_0x27e365[_0x1849('0x3e')],{'$or':_[_0x1849('0x2d')](_0x177949,function(_0x2f0656){if(_0x2f0656[_0x1849('0x31')]!==_0x1849('0x42')){var _0x5ba51a={};_0x5ba51a[_0x2f0656[_0x1849('0x2b')]]={'$like':'%'+_0x48f1bb[_0x1849('0x34')][_0x1849('0x40')]+'%'};return _0x5ba51a;}})});}_0x27e365=_['merge']({},_0x27e365,_0x48f1bb[_0x1849('0x43')]);var _0x19a78d={'where':_0x27e365[_0x1849('0x3e')]};return db[_0x1849('0x2e')][_0x1849('0x1f')](_0x19a78d)[_0x1849('0x28')](function(_0x325d50){_0x6d1226[_0x1849('0x1f')]=_0x325d50;if(_0x48f1bb[_0x1849('0x34')]['includeAll']){_0x27e365['include']=[{'all':!![]}];}return db[_0x1849('0x2e')]['findAll'](_0x27e365);})[_0x1849('0x28')](function(_0x4f59b4){_0x6d1226['rows']=_0x4f59b4;return _0x6d1226;})['then'](respondWithFilteredResult(_0x1c7da9,_0x27e365))[_0x1849('0x44')](handleError(_0x1c7da9,null));};exports['show']=function(_0x23a27e,_0x2f4c80){var _0x277c87={'raw':![],'where':{'id':_0x23a27e[_0x1849('0x45')]['id']}},_0x1e827a={};_0x1e827a['model']=_[_0x1849('0x35')](db[_0x1849('0x2e')][_0x1849('0x2f')]);_0x1e827a[_0x1849('0x34')]=_[_0x1849('0x35')](_0x23a27e[_0x1849('0x34')]);_0x1e827a['filters']=_[_0x1849('0x36')](_0x1e827a['model'],_0x1e827a[_0x1849('0x34')]);_0x277c87['attributes']=_[_0x1849('0x36')](_0x1e827a[_0x1849('0x33')],qs[_0x1849('0x38')](_0x23a27e[_0x1849('0x34')][_0x1849('0x38')]));_0x277c87['attributes']=_0x277c87[_0x1849('0x37')]['length']?_0x277c87[_0x1849('0x37')]:_0x1e827a[_0x1849('0x33')];if(_0x23a27e[_0x1849('0x34')][_0x1849('0x46')]){_0x277c87[_0x1849('0x47')]=[{'all':!![]}];}_0x277c87=_[_0x1849('0x41')]({},_0x277c87,_0x23a27e['options']);return db[_0x1849('0x2e')][_0x1849('0x48')](_0x277c87)['then'](handleEntityNotFound(_0x2f4c80,null))[_0x1849('0x28')](respondWithResult(_0x2f4c80,null))[_0x1849('0x44')](handleError(_0x2f4c80,null));};exports['create']=function(_0x27663b,_0x122e81){return db[_0x1849('0x2e')]['create'](_0x27663b[_0x1849('0x49')],{})['then'](respondWithResult(_0x122e81,0xc9))[_0x1849('0x44')](handleError(_0x122e81,null));};exports[_0x1849('0x4a')]=function(_0x301e11,_0x17fdd1){if(_0x301e11[_0x1849('0x49')]['id']){delete _0x301e11['body']['id'];}return db[_0x1849('0x2e')][_0x1849('0x48')]({'where':{'id':_0x301e11[_0x1849('0x45')]['id']}})['then'](handleEntityNotFound(_0x17fdd1,null))[_0x1849('0x28')](saveUpdates(_0x301e11[_0x1849('0x49')],null))[_0x1849('0x28')](respondWithResult(_0x17fdd1,null))[_0x1849('0x44')](handleError(_0x17fdd1,null));};exports[_0x1849('0x27')]=function(_0x578a70,_0x577a55){return db['FreshsalesAccount']['find']({'where':{'id':_0x578a70[_0x1849('0x45')]['id']}})[_0x1849('0x28')](handleEntityNotFound(_0x577a55,null))['then'](removeEntity(_0x577a55,null))[_0x1849('0x44')](handleError(_0x577a55,null));};exports[_0x1849('0x4b')]=function(_0xe399e4,_0xf71f43,_0x1f785b){var _0x10ea15={};var _0x343a9c={};var _0x7e2f4e;var _0x31f1d2;return db[_0x1849('0x2e')][_0x1849('0x4c')]({'where':{'id':_0xe399e4[_0x1849('0x45')]['id']}})['then'](handleEntityNotFound(_0xf71f43,null))['then'](function(_0x234a35){if(_0x234a35){_0x7e2f4e=_0x234a35;_0x343a9c['model']=_[_0x1849('0x35')](db[_0x1849('0x4d')][_0x1849('0x2f')]);_0x343a9c[_0x1849('0x34')]=_['keys'](_0xe399e4[_0x1849('0x34')]);_0x343a9c[_0x1849('0x3f')]=_[_0x1849('0x36')](_0x343a9c[_0x1849('0x33')],_0x343a9c[_0x1849('0x34')]);_0x10ea15[_0x1849('0x37')]=_[_0x1849('0x36')](_0x343a9c[_0x1849('0x33')],qs['fields'](_0xe399e4[_0x1849('0x34')][_0x1849('0x38')]));_0x10ea15[_0x1849('0x37')]=_0x10ea15['attributes'][_0x1849('0x39')]?_0x10ea15[_0x1849('0x37')]:_0x343a9c[_0x1849('0x33')];_0x10ea15[_0x1849('0x3c')]=qs[_0x1849('0x3d')](_0xe399e4[_0x1849('0x34')]['sort']);_0x10ea15[_0x1849('0x3e')]=qs[_0x1849('0x3f')](_[_0x1849('0x4e')](_0xe399e4[_0x1849('0x34')],_0x343a9c[_0x1849('0x3f')]));if(_0xe399e4[_0x1849('0x34')]['filter']){_0x10ea15[_0x1849('0x3e')]=_[_0x1849('0x41')](_0x10ea15[_0x1849('0x3e')],{'$or':_[_0x1849('0x2d')](_0x10ea15[_0x1849('0x37')],function(_0x202310){var _0x2642d8={};_0x2642d8[_0x202310]={'$like':'%'+_0xe399e4[_0x1849('0x34')][_0x1849('0x40')]+'%'};return _0x2642d8;})});}_0x10ea15=_[_0x1849('0x41')]({},_0x10ea15,_0xe399e4[_0x1849('0x43')]);return _0x7e2f4e[_0x1849('0x4b')](_0x10ea15);}})[_0x1849('0x28')](function(_0x3f0ddd){if(_0x3f0ddd){_0x31f1d2=_0x3f0ddd[_0x1849('0x39')];if(!_0xe399e4[_0x1849('0x34')][_0x1849('0x3a')](_0x1849('0x3b'))){_0x10ea15[_0x1849('0x21')]=qs[_0x1849('0x21')](_0xe399e4[_0x1849('0x34')][_0x1849('0x21')]);_0x10ea15[_0x1849('0x20')]=qs['offset'](_0xe399e4[_0x1849('0x34')][_0x1849('0x20')]);}return _0x7e2f4e[_0x1849('0x4b')](_0x10ea15);}})[_0x1849('0x28')](function(_0x106482){if(_0x106482){return _0x106482?{'count':_0x31f1d2,'rows':_0x106482}:null;}})[_0x1849('0x28')](respondWithResult(_0xf71f43,null))[_0x1849('0x44')](handleError(_0xf71f43,null));};exports['addConfiguration']=function(_0x2346db,_0x27719b,_0x2a934a){if(_0x2346db[_0x1849('0x49')]['id']){delete _0x2346db[_0x1849('0x49')]['id'];}return db[_0x1849('0x2e')][_0x1849('0x4c')]({'where':{'id':_0x2346db[_0x1849('0x45')]['id']}})[_0x1849('0x28')](handleEntityNotFound(_0x27719b,null))['then'](function(_0x58bd6a){if(_0x58bd6a){_0x2346db[_0x1849('0x49')][_0x1849('0x4f')]=_0x58bd6a['id'];_0x2346db['body']['Subjects']=integrations[_0x1849('0x50')](_0x2346db[_0x1849('0x49')][_0x1849('0x51')],_0x2346db[_0x1849('0x49')][_0x1849('0x31')]);_0x2346db[_0x1849('0x49')]['Descriptions']=integrations[_0x1849('0x52')](_0x2346db[_0x1849('0x49')][_0x1849('0x51')],_0x2346db[_0x1849('0x49')][_0x1849('0x31')]);return db[_0x1849('0x4d')][_0x1849('0x53')](_0x2346db[_0x1849('0x49')],{'include':[{'model':db[_0x1849('0x54')],'as':_0x1849('0x55')},{'model':db[_0x1849('0x54')],'as':_0x1849('0x56')}]});}return null;})[_0x1849('0x28')](respondWithResult(_0x27719b,null))[_0x1849('0x44')](handleError(_0x27719b,null));};exports[_0x1849('0x57')]=function(_0x42f4a0,_0x42ec3b,_0x551b96){var _0x20f710='';var _0x1beec0='';return db[_0x1849('0x2e')][_0x1849('0x4c')]({'where':{'id':_0x42f4a0['params']['id']},'attributes':['id',_0x1849('0x58'),_0x1849('0x59'),'apiKey']})[_0x1849('0x28')](handleEntityNotFound(_0x42ec3b,null))[_0x1849('0x28')](function(_0x301a63){if(_0x301a63){_0x1beec0=_0x301a63[_0x1849('0x58')];_0x20f710=_0x301a63[_0x1849('0x59')];var _0x44eac8=_0x301a63[_0x1849('0x59')][_0x1849('0x5a')](-0x1);if(_0x44eac8==='/'){_0x20f710=_0x20f710['substring'](0x0,_0x20f710[_0x1849('0x5b')](_0x44eac8));}return rp({'method':_0x1849('0x5c'),'uri':util[_0x1849('0x5d')](_0x1849('0x5e'),_0x20f710,_0x1849('0x5f')),'headers':{'Authorization':_0x1849('0x60')+_0x301a63[_0x1849('0x61')]},'json':!![]});}})['then'](function(_0x5cdb76){if(_0x5cdb76){var _0x1513e4=_0x5cdb76[_0x1849('0x62')];var _0x5bfdd9=![];var _0x247a5b=null;for(_0x247a5b=0x0;_0x247a5b<_0x1513e4[_0x1849('0x39')];_0x247a5b++){if(_0x1513e4[_0x247a5b]['email']===_0x1beec0){_0x5bfdd9=!![];}}if(_0x5bfdd9){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x1849('0x63')});}}})['then'](respondWithResult(_0x42ec3b,null))['catch'](function(_0xee9001){var _0x180916=_0x42f4a0[_0x1849('0x34')]['test']?0x1f4:_0xee9001['statusCode']||0x1f4;logger[_0x1849('0x2a')](_0x1849('0x64'),_0x1849('0x57'),_0x180916,JSON[_0x1849('0x65')](_0xee9001));delete _0xee9001['name'];if(_0x180916===0x191){_0x180916=0x190;}_0x42ec3b[_0x1849('0x1d')](_0x180916)[_0x1849('0x66')](_0x42f4a0[_0x1849('0x34')][_0x1849('0x67')]?{'message':'Wrong\x20credentials','statusCode':_0xee9001['statusCode']}:_0xee9001);});};
\ No newline at end of file
+var _0x6f98=['map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','options','then','includeAll','include','rows','catch','show','length','find','create','body','destroy','findOne','params','FreshsalesConfiguration','pick','filter','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','substring','lastIndexOf','GET','format','apiKey','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','FreshsalesAccount','rawAttributes','fieldName','type','key','model'];(function(_0x3dc7cd,_0x4a4e3d){var _0x137b38=function(_0x3753be){while(--_0x3753be){_0x3dc7cd['push'](_0x3dc7cd['shift']());}};_0x137b38(++_0x4a4e3d);}(_0x6f98,0x104));var _0x86f9=function(_0x149c52,_0xfdbb57){_0x149c52=_0x149c52-0x0;var _0x44c2c6=_0x6f98[_0x149c52];return _0x44c2c6;};'use strict';var emlformat=require(_0x86f9('0x0'));var rimraf=require(_0x86f9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x86f9('0x2'));var rp=require(_0x86f9('0x3'));var moment=require(_0x86f9('0x4'));var BPromise=require(_0x86f9('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x86f9('0x6'));var ejs=require(_0x86f9('0x7'));var fs=require('fs');var fs_extra=require(_0x86f9('0x8'));var _=require(_0x86f9('0x9'));var squel=require(_0x86f9('0xa'));var crypto=require(_0x86f9('0xb'));var jsforce=require(_0x86f9('0xc'));var deskjs=require(_0x86f9('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x86f9('0xe'));var Redis=require(_0x86f9('0xf'));var authService=require(_0x86f9('0x10'));var qs=require(_0x86f9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x86f9('0x12'));var logger=require('../../config/logger')(_0x86f9('0x13'));var utils=require(_0x86f9('0x14'));var config=require(_0x86f9('0x15'));var licenseUtil=require(_0x86f9('0x16'));var db=require(_0x86f9('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x53c084,_0x1630fa){_0x1630fa=_0x1630fa||0xcc;return function(_0x4bf864){if(_0x4bf864){return _0x53c084[_0x86f9('0x18')](_0x1630fa);}return _0x53c084[_0x86f9('0x19')](_0x1630fa)[_0x86f9('0x1a')]();};}function respondWithResult(_0x474659,_0x341aff){_0x341aff=_0x341aff||0xc8;return function(_0x11d6f4){if(_0x11d6f4){return _0x474659[_0x86f9('0x19')](_0x341aff)[_0x86f9('0x1b')](_0x11d6f4);}};}function respondWithFilteredResult(_0x578f0a,_0x4a7b40){return function(_0x2cb177){if(_0x2cb177){var _0x3e8bda=typeof _0x4a7b40[_0x86f9('0x1c')]===_0x86f9('0x1d')&&typeof _0x4a7b40[_0x86f9('0x1e')]===_0x86f9('0x1d');var _0x542f34=_0x2cb177[_0x86f9('0x1f')];var _0x1622fc=_0x3e8bda?0x0:_0x4a7b40['offset'];var _0x27685a=_0x3e8bda?_0x2cb177[_0x86f9('0x1f')]:_0x4a7b40[_0x86f9('0x1c')]+_0x4a7b40[_0x86f9('0x1e')];var _0x4dd218;if(_0x27685a>=_0x542f34){_0x27685a=_0x542f34;_0x4dd218=0xc8;}else{_0x4dd218=0xce;}_0x578f0a[_0x86f9('0x19')](_0x4dd218);return _0x578f0a[_0x86f9('0x20')](_0x86f9('0x21'),_0x1622fc+'-'+_0x27685a+'/'+_0x542f34)['json'](_0x2cb177);}return null;};}function patchUpdates(_0x168b12){return function(_0x2e8cfd){try{jsonpatch[_0x86f9('0x22')](_0x2e8cfd,_0x168b12,!![]);}catch(_0x547153){return BPromise[_0x86f9('0x23')](_0x547153);}return _0x2e8cfd[_0x86f9('0x24')]();};}function saveUpdates(_0x5021de,_0xfa55cf){return function(_0x16a02b){if(_0x16a02b){return _0x16a02b[_0x86f9('0x25')](_0x5021de)['then'](function(_0x1b1955){return _0x1b1955;});}return null;};}function removeEntity(_0x5281e8,_0x20a119){return function(_0x1c3143){if(_0x1c3143){return _0x1c3143['destroy']()['then'](function(){_0x5281e8[_0x86f9('0x19')](0xcc)[_0x86f9('0x1a')]();});}};}function handleEntityNotFound(_0x375e8d,_0x18e6a5){return function(_0x323535){if(!_0x323535){_0x375e8d[_0x86f9('0x18')](0x194);}return _0x323535;};}function handleError(_0x40b2b6,_0x50595d){_0x50595d=_0x50595d||0x1f4;return function(_0x18ad16){logger[_0x86f9('0x26')](_0x18ad16[_0x86f9('0x27')]);if(_0x18ad16[_0x86f9('0x28')]){delete _0x18ad16[_0x86f9('0x28')];}_0x40b2b6[_0x86f9('0x19')](_0x50595d)[_0x86f9('0x29')](_0x18ad16);};}exports[_0x86f9('0x2a')]=function(_0x1a270d,_0x1a16a0){var _0x371231={},_0x5e6efe={},_0x3e26c8={'count':0x0,'rows':[]};var _0xe3c25c=_['map'](db[_0x86f9('0x2b')][_0x86f9('0x2c')],function(_0xa28530){return{'name':_0xa28530[_0x86f9('0x2d')],'type':_0xa28530[_0x86f9('0x2e')][_0x86f9('0x2f')]};});_0x5e6efe[_0x86f9('0x30')]=_[_0x86f9('0x31')](_0xe3c25c,_0x86f9('0x28'));_0x5e6efe[_0x86f9('0x32')]=_[_0x86f9('0x33')](_0x1a270d[_0x86f9('0x32')]);_0x5e6efe[_0x86f9('0x34')]=_[_0x86f9('0x35')](_0x5e6efe[_0x86f9('0x30')],_0x5e6efe['query']);_0x371231[_0x86f9('0x36')]=_[_0x86f9('0x35')](_0x5e6efe[_0x86f9('0x30')],qs['fields'](_0x1a270d[_0x86f9('0x32')][_0x86f9('0x37')]));_0x371231[_0x86f9('0x36')]=_0x371231[_0x86f9('0x36')]['length']?_0x371231[_0x86f9('0x36')]:_0x5e6efe[_0x86f9('0x30')];if(!_0x1a270d['query'][_0x86f9('0x38')]('nolimit')){_0x371231[_0x86f9('0x1e')]=qs[_0x86f9('0x1e')](_0x1a270d[_0x86f9('0x32')][_0x86f9('0x1e')]);_0x371231['offset']=qs[_0x86f9('0x1c')](_0x1a270d['query'][_0x86f9('0x1c')]);}_0x371231[_0x86f9('0x39')]=qs[_0x86f9('0x3a')](_0x1a270d[_0x86f9('0x32')][_0x86f9('0x3a')]);_0x371231['where']=qs[_0x86f9('0x34')](_['pick'](_0x1a270d[_0x86f9('0x32')],_0x5e6efe[_0x86f9('0x34')]),_0xe3c25c);if(_0x1a270d[_0x86f9('0x32')]['filter']){_0x371231[_0x86f9('0x3b')]=_[_0x86f9('0x3c')](_0x371231['where'],{'$or':_['map'](_0xe3c25c,function(_0x50d3d2){if(_0x50d3d2[_0x86f9('0x2e')]!==_0x86f9('0x3d')){var _0x34f322={};_0x34f322[_0x50d3d2[_0x86f9('0x28')]]={'$like':'%'+_0x1a270d[_0x86f9('0x32')]['filter']+'%'};return _0x34f322;}})});}_0x371231=_[_0x86f9('0x3c')]({},_0x371231,_0x1a270d[_0x86f9('0x3e')]);var _0x1102ac={'where':_0x371231[_0x86f9('0x3b')]};return db[_0x86f9('0x2b')][_0x86f9('0x1f')](_0x1102ac)[_0x86f9('0x3f')](function(_0x3f9bf7){_0x3e26c8[_0x86f9('0x1f')]=_0x3f9bf7;if(_0x1a270d[_0x86f9('0x32')][_0x86f9('0x40')]){_0x371231[_0x86f9('0x41')]=[{'all':!![]}];}return db[_0x86f9('0x2b')]['findAll'](_0x371231);})[_0x86f9('0x3f')](function(_0x3b70fa){_0x3e26c8[_0x86f9('0x42')]=_0x3b70fa;return _0x3e26c8;})[_0x86f9('0x3f')](respondWithFilteredResult(_0x1a16a0,_0x371231))[_0x86f9('0x43')](handleError(_0x1a16a0,null));};exports[_0x86f9('0x44')]=function(_0x184876,_0x46b9bf){var _0x548afd={'raw':![],'where':{'id':_0x184876['params']['id']}},_0x50f3d2={};_0x50f3d2[_0x86f9('0x30')]=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0x50f3d2[_0x86f9('0x32')]=_['keys'](_0x184876[_0x86f9('0x32')]);_0x50f3d2['filters']=_[_0x86f9('0x35')](_0x50f3d2[_0x86f9('0x30')],_0x50f3d2[_0x86f9('0x32')]);_0x548afd[_0x86f9('0x36')]=_[_0x86f9('0x35')](_0x50f3d2[_0x86f9('0x30')],qs[_0x86f9('0x37')](_0x184876[_0x86f9('0x32')]['fields']));_0x548afd[_0x86f9('0x36')]=_0x548afd[_0x86f9('0x36')][_0x86f9('0x45')]?_0x548afd[_0x86f9('0x36')]:_0x50f3d2[_0x86f9('0x30')];if(_0x184876['query']['includeAll']){_0x548afd[_0x86f9('0x41')]=[{'all':!![]}];}_0x548afd=_[_0x86f9('0x3c')]({},_0x548afd,_0x184876[_0x86f9('0x3e')]);return db['FreshsalesAccount'][_0x86f9('0x46')](_0x548afd)['then'](handleEntityNotFound(_0x46b9bf,null))[_0x86f9('0x3f')](respondWithResult(_0x46b9bf,null))[_0x86f9('0x43')](handleError(_0x46b9bf,null));};exports[_0x86f9('0x47')]=function(_0xac0e6c,_0x1cdfae){return db[_0x86f9('0x2b')]['create'](_0xac0e6c['body'],{})[_0x86f9('0x3f')](respondWithResult(_0x1cdfae,0xc9))['catch'](handleError(_0x1cdfae,null));};exports[_0x86f9('0x25')]=function(_0x39dac2,_0x4c7c7a){if(_0x39dac2[_0x86f9('0x48')]['id']){delete _0x39dac2[_0x86f9('0x48')]['id'];}return db[_0x86f9('0x2b')][_0x86f9('0x46')]({'where':{'id':_0x39dac2['params']['id']}})[_0x86f9('0x3f')](handleEntityNotFound(_0x4c7c7a,null))[_0x86f9('0x3f')](saveUpdates(_0x39dac2['body'],null))[_0x86f9('0x3f')](respondWithResult(_0x4c7c7a,null))[_0x86f9('0x43')](handleError(_0x4c7c7a,null));};exports[_0x86f9('0x49')]=function(_0xbf15b,_0xede9e5){return db['FreshsalesAccount'][_0x86f9('0x46')]({'where':{'id':_0xbf15b['params']['id']}})[_0x86f9('0x3f')](handleEntityNotFound(_0xede9e5,null))[_0x86f9('0x3f')](removeEntity(_0xede9e5,null))['catch'](handleError(_0xede9e5,null));};exports['getConfigurations']=function(_0x2a05ed,_0x3970a8,_0x2559b5){var _0x1882d9={};var _0x370970={};var _0x306c46;var _0x48aa80;return db[_0x86f9('0x2b')][_0x86f9('0x4a')]({'where':{'id':_0x2a05ed[_0x86f9('0x4b')]['id']}})[_0x86f9('0x3f')](handleEntityNotFound(_0x3970a8,null))[_0x86f9('0x3f')](function(_0x3b98ec){if(_0x3b98ec){_0x306c46=_0x3b98ec;_0x370970[_0x86f9('0x30')]=_['keys'](db[_0x86f9('0x4c')][_0x86f9('0x2c')]);_0x370970[_0x86f9('0x32')]=_['keys'](_0x2a05ed[_0x86f9('0x32')]);_0x370970[_0x86f9('0x34')]=_[_0x86f9('0x35')](_0x370970['model'],_0x370970[_0x86f9('0x32')]);_0x1882d9[_0x86f9('0x36')]=_[_0x86f9('0x35')](_0x370970[_0x86f9('0x30')],qs[_0x86f9('0x37')](_0x2a05ed[_0x86f9('0x32')][_0x86f9('0x37')]));_0x1882d9[_0x86f9('0x36')]=_0x1882d9[_0x86f9('0x36')][_0x86f9('0x45')]?_0x1882d9['attributes']:_0x370970[_0x86f9('0x30')];_0x1882d9[_0x86f9('0x39')]=qs['sort'](_0x2a05ed[_0x86f9('0x32')]['sort']);_0x1882d9[_0x86f9('0x3b')]=qs[_0x86f9('0x34')](_[_0x86f9('0x4d')](_0x2a05ed[_0x86f9('0x32')],_0x370970['filters']));if(_0x2a05ed['query'][_0x86f9('0x4e')]){_0x1882d9[_0x86f9('0x3b')]=_[_0x86f9('0x3c')](_0x1882d9[_0x86f9('0x3b')],{'$or':_[_0x86f9('0x31')](_0x1882d9[_0x86f9('0x36')],function(_0x153a80){var _0x31bede={};_0x31bede[_0x153a80]={'$like':'%'+_0x2a05ed[_0x86f9('0x32')]['filter']+'%'};return _0x31bede;})});}_0x1882d9=_[_0x86f9('0x3c')]({},_0x1882d9,_0x2a05ed[_0x86f9('0x3e')]);return _0x306c46['getConfigurations'](_0x1882d9);}})[_0x86f9('0x3f')](function(_0x1e7ed8){if(_0x1e7ed8){_0x48aa80=_0x1e7ed8['length'];if(!_0x2a05ed[_0x86f9('0x32')]['hasOwnProperty']('nolimit')){_0x1882d9[_0x86f9('0x1e')]=qs['limit'](_0x2a05ed[_0x86f9('0x32')][_0x86f9('0x1e')]);_0x1882d9[_0x86f9('0x1c')]=qs[_0x86f9('0x1c')](_0x2a05ed[_0x86f9('0x32')][_0x86f9('0x1c')]);}return _0x306c46[_0x86f9('0x4f')](_0x1882d9);}})[_0x86f9('0x3f')](function(_0x5be5e4){if(_0x5be5e4){return _0x5be5e4?{'count':_0x48aa80,'rows':_0x5be5e4}:null;}})[_0x86f9('0x3f')](respondWithResult(_0x3970a8,null))[_0x86f9('0x43')](handleError(_0x3970a8,null));};exports[_0x86f9('0x50')]=function(_0x3371a2,_0x40e90b,_0x4202a6){if(_0x3371a2[_0x86f9('0x48')]['id']){delete _0x3371a2[_0x86f9('0x48')]['id'];}return db[_0x86f9('0x2b')][_0x86f9('0x4a')]({'where':{'id':_0x3371a2[_0x86f9('0x4b')]['id']}})[_0x86f9('0x3f')](handleEntityNotFound(_0x40e90b,null))[_0x86f9('0x3f')](function(_0xc6f51a){if(_0xc6f51a){_0x3371a2[_0x86f9('0x48')][_0x86f9('0x51')]=_0xc6f51a['id'];_0x3371a2[_0x86f9('0x48')][_0x86f9('0x52')]=integrations[_0x86f9('0x53')](_0x3371a2['body'][_0x86f9('0x54')],_0x3371a2[_0x86f9('0x48')][_0x86f9('0x2e')]);_0x3371a2[_0x86f9('0x48')][_0x86f9('0x55')]=integrations[_0x86f9('0x56')](_0x3371a2['body'][_0x86f9('0x54')],_0x3371a2[_0x86f9('0x48')][_0x86f9('0x2e')]);return db['FreshsalesConfiguration']['create'](_0x3371a2[_0x86f9('0x48')],{'include':[{'model':db[_0x86f9('0x57')],'as':_0x86f9('0x52')},{'model':db['FreshsalesField'],'as':_0x86f9('0x55')}]});}return null;})['then'](respondWithResult(_0x40e90b,null))['catch'](handleError(_0x40e90b,null));};exports[_0x86f9('0x58')]=function(_0x5d624d,_0x293ad1,_0x55caa1){var _0x4f7f06='';var _0x5d8e79='';return db['FreshsalesAccount'][_0x86f9('0x4a')]({'where':{'id':_0x5d624d[_0x86f9('0x4b')]['id']},'attributes':['id',_0x86f9('0x59'),_0x86f9('0x5a'),'apiKey']})[_0x86f9('0x3f')](handleEntityNotFound(_0x293ad1,null))[_0x86f9('0x3f')](function(_0x2f187f){if(_0x2f187f){_0x5d8e79=_0x2f187f[_0x86f9('0x59')];_0x4f7f06=_0x2f187f['remoteUri'];var _0x56e608=_0x2f187f[_0x86f9('0x5a')]['slice'](-0x1);if(_0x56e608==='/'){_0x4f7f06=_0x4f7f06[_0x86f9('0x5b')](0x0,_0x4f7f06[_0x86f9('0x5c')](_0x56e608));}return rp({'method':_0x86f9('0x5d'),'uri':util[_0x86f9('0x5e')]('%s%s',_0x4f7f06,'/api/selector/owners'),'headers':{'Authorization':'Token\x20token='+_0x2f187f[_0x86f9('0x5f')]},'json':!![]});}})[_0x86f9('0x3f')](function(_0x45d4f4){if(_0x45d4f4){var _0x49211a=_0x45d4f4['users'];var _0x372c9f=![];var _0x278d65=null;for(_0x278d65=0x0;_0x278d65<_0x49211a[_0x86f9('0x45')];_0x278d65++){if(_0x49211a[_0x278d65][_0x86f9('0x60')]===_0x5d8e79){_0x372c9f=!![];}}if(_0x372c9f){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x86f9('0x61')});}}})[_0x86f9('0x3f')](respondWithResult(_0x293ad1,null))['catch'](function(_0x58cd92){var _0x102387=_0x5d624d[_0x86f9('0x32')][_0x86f9('0x62')]?0x1f4:_0x58cd92[_0x86f9('0x63')]||0x1f4;logger[_0x86f9('0x26')](_0x86f9('0x64'),_0x86f9('0x58'),_0x102387,JSON[_0x86f9('0x65')](_0x58cd92));delete _0x58cd92[_0x86f9('0x28')];if(_0x102387===0x191){_0x102387=0x190;}_0x293ad1[_0x86f9('0x19')](_0x102387)[_0x86f9('0x29')](_0x5d624d['query'][_0x86f9('0x62')]?{'message':_0x86f9('0x66'),'statusCode':_0x58cd92[_0x86f9('0x63')]}:_0x58cd92);});};
\ No newline at end of file
index 53cba9f..9d4dc28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','define','FreshsalesAccount','lodash','util','../../config/logger','api'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x4137,0xf8));var _0x7413=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4137[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var logger=require(_0x7413('0x2'))(_0x7413('0x3'));var moment=require(_0x7413('0x4'));var BPromise=require(_0x7413('0x5'));var rp=require(_0x7413('0x6'));var fs=require('fs');var path=require(_0x7413('0x7'));var rimraf=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var attributes=require(_0x7413('0xa'));var integrations=require(_0x7413('0xb'));module['exports']=function(_0xc808cd,_0x188d89){return _0xc808cd[_0x7413('0xc')](_0x7413('0xd'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf61e=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x46f1e0,_0x35945d){var _0x4ff375=function(_0x96c7de){while(--_0x96c7de){_0x46f1e0['push'](_0x46f1e0['shift']());}};_0x4ff375(++_0x35945d);}(_0xf61e,0x191));var _0xef61=function(_0x26219e,_0x57c21e){_0x26219e=_0x26219e-0x0;var _0x482417=_0xf61e[_0x26219e];return _0x482417;};'use strict';var _=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var logger=require(_0xef61('0x2'))(_0xef61('0x3'));var moment=require(_0xef61('0x4'));var BPromise=require(_0xef61('0x5'));var rp=require(_0xef61('0x6'));var fs=require('fs');var path=require(_0xef61('0x7'));var rimraf=require(_0xef61('0x8'));var config=require(_0xef61('0x9'));var attributes=require(_0xef61('0xa'));var integrations=require(_0xef61('0xb'));module['exports']=function(_0x9e17f4,_0x3e2f79){return _0x9e17f4['define'](_0xef61('0xc'),attributes,{'tableName':_0xef61('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d6b8a0..767ec4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','GetFreshsalesAccount','FreshsalesAccount','options','raw','where','attributes','include','model','debug','catch','ShowFreshsalesAccount','find','map','util'];(function(_0x178856,_0x41f045){var _0x3c7fe7=function(_0x4d9ce4){while(--_0x4d9ce4){_0x178856['push'](_0x178856['shift']());}};_0x3c7fe7(++_0x41f045);}(_0x6d38,0x1ef));var _0x86d3=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x6d38[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var util=require(_0x86d3('0x0'));var moment=require(_0x86d3('0x1'));var BPromise=require(_0x86d3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x86d3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x86d3('0x4'))(_0x86d3('0x5'));var config=require(_0x86d3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x86d3('0x7')][_0x86d3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33d4aa,_0x2eaa15,_0x47e654){return new BPromise(function(_0x552b07,_0x2aea31){return client[_0x86d3('0x9')](_0x33d4aa,_0x47e654)[_0x86d3('0xa')](function(_0x499640){logger['info'](_0x86d3('0xb'),_0x2eaa15,_0x86d3('0xc'));logger['debug']('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x2eaa15,_0x86d3('0xc'),JSON[_0x86d3('0xd')](_0x499640));if(_0x499640['error']){if(_0x499640[_0x86d3('0xe')]['code']===0x1f4){logger[_0x86d3('0xe')](_0x86d3('0xb'),_0x2eaa15,_0x499640[_0x86d3('0xe')][_0x86d3('0xf')]);return _0x2aea31(_0x499640[_0x86d3('0xe')][_0x86d3('0xf')]);}logger[_0x86d3('0xe')](_0x86d3('0xb'),_0x2eaa15,_0x499640['error'][_0x86d3('0xf')]);return _0x552b07(_0x499640[_0x86d3('0xe')][_0x86d3('0xf')]);}else{logger[_0x86d3('0x10')](_0x86d3('0xb'),_0x2eaa15,_0x86d3('0xc'));_0x552b07(_0x499640[_0x86d3('0x11')][_0x86d3('0xf')]);}})['catch'](function(_0x2d5ba9){logger[_0x86d3('0xe')](_0x86d3('0xb'),_0x2eaa15,_0x2d5ba9);_0x2aea31(_0x2d5ba9);});});}exports[_0x86d3('0x12')]=function(_0x46feec){var _0x120ef3=this;return new Promise(function(_0x33e459,_0x32dee7){return db[_0x86d3('0x13')]['findAll']({'raw':_0x46feec[_0x86d3('0x14')]?_0x46feec['options'][_0x86d3('0x15')]===undefined?!![]:![]:!![],'where':_0x46feec['options']?_0x46feec['options'][_0x86d3('0x16')]||null:null,'attributes':_0x46feec[_0x86d3('0x14')]?_0x46feec[_0x86d3('0x14')][_0x86d3('0x17')]||null:null,'limit':_0x46feec['options']?_0x46feec[_0x86d3('0x14')]['limit']||null:null,'include':_0x46feec[_0x86d3('0x14')]?_0x46feec[_0x86d3('0x14')][_0x86d3('0x18')]?_['map'](_0x46feec[_0x86d3('0x14')][_0x86d3('0x18')],function(_0x1fa4ac){return{'model':db[_0x1fa4ac['model']],'as':_0x1fa4ac['as'],'attributes':_0x1fa4ac['attributes'],'include':_0x1fa4ac[_0x86d3('0x18')]?_['map'](_0x1fa4ac[_0x86d3('0x18')],function(_0x1bea5e){return{'model':db[_0x1bea5e[_0x86d3('0x19')]],'as':_0x1bea5e['as'],'attributes':_0x1bea5e[_0x86d3('0x17')],'include':_0x1bea5e['include']?_['map'](_0x1bea5e[_0x86d3('0x18')],function(_0x611764){return{'model':db[_0x611764['model']],'as':_0x611764['as'],'attributes':_0x611764[_0x86d3('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x42413c){logger[_0x86d3('0x10')](_0x86d3('0x12'),_0x46feec);logger[_0x86d3('0x1a')](_0x86d3('0x12'),_0x46feec,JSON[_0x86d3('0xd')](_0x42413c));_0x33e459(_0x42413c);})[_0x86d3('0x1b')](function(_0x35d708){logger[_0x86d3('0xe')](_0x86d3('0x12'),_0x35d708[_0x86d3('0xf')],_0x46feec);_0x32dee7(_0x120ef3[_0x86d3('0xe')](0x1f4,_0x35d708[_0x86d3('0xf')]));});});};exports[_0x86d3('0x1c')]=function(_0x5b09f6){var _0x120a0c=this;return new Promise(function(_0x403be3,_0x2bda35){return db[_0x86d3('0x13')][_0x86d3('0x1d')]({'raw':_0x5b09f6[_0x86d3('0x14')]?_0x5b09f6['options'][_0x86d3('0x15')]===undefined?!![]:![]:!![],'where':_0x5b09f6['options']?_0x5b09f6['options'][_0x86d3('0x16')]||null:null,'attributes':_0x5b09f6[_0x86d3('0x14')]?_0x5b09f6[_0x86d3('0x14')]['attributes']||null:null,'include':_0x5b09f6[_0x86d3('0x14')]?_0x5b09f6[_0x86d3('0x14')]['include']?_[_0x86d3('0x1e')](_0x5b09f6[_0x86d3('0x14')][_0x86d3('0x18')],function(_0x476eb3){return{'model':db[_0x476eb3[_0x86d3('0x19')]],'as':_0x476eb3['as'],'attributes':_0x476eb3[_0x86d3('0x17')],'include':_0x476eb3[_0x86d3('0x18')]?_[_0x86d3('0x1e')](_0x476eb3['include'],function(_0x4cdf45){return{'model':db[_0x4cdf45['model']],'as':_0x4cdf45['as'],'attributes':_0x4cdf45[_0x86d3('0x17')],'include':_0x4cdf45['include']?_[_0x86d3('0x1e')](_0x4cdf45['include'],function(_0x366943){return{'model':db[_0x366943[_0x86d3('0x19')]],'as':_0x366943['as'],'attributes':_0x366943[_0x86d3('0x17')]};}):[]};}):[]};}):[]:[]})[_0x86d3('0xa')](function(_0x1e22c2){logger[_0x86d3('0x10')](_0x86d3('0x1c'),_0x5b09f6);logger['debug'](_0x86d3('0x1c'),_0x5b09f6,JSON[_0x86d3('0xd')](_0x1e22c2));_0x403be3(_0x1e22c2);})['catch'](function(_0x178fc6){logger[_0x86d3('0xe')](_0x86d3('0x1c'),_0x178fc6[_0x86d3('0xf')],_0x5b09f6);_0x2bda35(_0x120a0c['error'](0x1f4,_0x178fc6[_0x86d3('0xf')]));});});};
\ No newline at end of file
+var _0x6455=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','findAll','raw','options','attributes','limit','include','map','model','GetFreshsalesAccount','debug','catch','FreshsalesAccount','find','where','ShowFreshsalesAccount','lodash'];(function(_0x3eee89,_0x280590){var _0x2161ab=function(_0x105c4c){while(--_0x105c4c){_0x3eee89['push'](_0x3eee89['shift']());}};_0x2161ab(++_0x280590);}(_0x6455,0x97));var _0x5645=function(_0x286a06,_0x3ef220){_0x286a06=_0x286a06-0x0;var _0x46336a=_0x6455[_0x286a06];return _0x46336a;};'use strict';var _=require(_0x5645('0x0'));var util=require('util');var moment=require(_0x5645('0x1'));var BPromise=require(_0x5645('0x2'));var rs=require(_0x5645('0x3'));var fs=require('fs');var Redis=require(_0x5645('0x4'));var db=require(_0x5645('0x5'))['db'];var utils=require(_0x5645('0x6'));var logger=require('../../config/logger')(_0x5645('0x7'));var config=require(_0x5645('0x8'));var jayson=require(_0x5645('0x9'));var client=jayson[_0x5645('0xa')][_0x5645('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37d672,_0xa14a06,_0x278d86){return new BPromise(function(_0x518a28,_0x5f4037){return client[_0x5645('0xc')](_0x37d672,_0x278d86)[_0x5645('0xd')](function(_0x38c07a){logger[_0x5645('0xe')](_0x5645('0xf'),_0xa14a06,_0x5645('0x10'));logger['debug'](_0x5645('0x11'),_0xa14a06,_0x5645('0x10'),JSON[_0x5645('0x12')](_0x38c07a));if(_0x38c07a[_0x5645('0x13')]){if(_0x38c07a['error'][_0x5645('0x14')]===0x1f4){logger['error'](_0x5645('0xf'),_0xa14a06,_0x38c07a[_0x5645('0x13')][_0x5645('0x15')]);return _0x5f4037(_0x38c07a[_0x5645('0x13')][_0x5645('0x15')]);}logger[_0x5645('0x13')](_0x5645('0xf'),_0xa14a06,_0x38c07a[_0x5645('0x13')]['message']);return _0x518a28(_0x38c07a[_0x5645('0x13')][_0x5645('0x15')]);}else{logger[_0x5645('0xe')]('FreshsalesAccount,\x20%s,\x20%s',_0xa14a06,'request\x20sent');_0x518a28(_0x38c07a[_0x5645('0x16')][_0x5645('0x15')]);}})['catch'](function(_0x35e0c7){logger[_0x5645('0x13')](_0x5645('0xf'),_0xa14a06,_0x35e0c7);_0x5f4037(_0x35e0c7);});});}exports['GetFreshsalesAccount']=function(_0x35bc6f){var _0x1d519d=this;return new Promise(function(_0x22a6cf,_0x102c19){return db['FreshsalesAccount'][_0x5645('0x17')]({'raw':_0x35bc6f['options']?_0x35bc6f['options'][_0x5645('0x18')]===undefined?!![]:![]:!![],'where':_0x35bc6f[_0x5645('0x19')]?_0x35bc6f[_0x5645('0x19')]['where']||null:null,'attributes':_0x35bc6f[_0x5645('0x19')]?_0x35bc6f['options'][_0x5645('0x1a')]||null:null,'limit':_0x35bc6f['options']?_0x35bc6f['options'][_0x5645('0x1b')]||null:null,'include':_0x35bc6f['options']?_0x35bc6f[_0x5645('0x19')][_0x5645('0x1c')]?_['map'](_0x35bc6f[_0x5645('0x19')][_0x5645('0x1c')],function(_0xe83ed7){return{'model':db[_0xe83ed7['model']],'as':_0xe83ed7['as'],'attributes':_0xe83ed7[_0x5645('0x1a')],'include':_0xe83ed7[_0x5645('0x1c')]?_[_0x5645('0x1d')](_0xe83ed7[_0x5645('0x1c')],function(_0x568fd6){return{'model':db[_0x568fd6['model']],'as':_0x568fd6['as'],'attributes':_0x568fd6['attributes'],'include':_0x568fd6['include']?_[_0x5645('0x1d')](_0x568fd6['include'],function(_0x47d097){return{'model':db[_0x47d097[_0x5645('0x1e')]],'as':_0x47d097['as'],'attributes':_0x47d097[_0x5645('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5645('0xd')](function(_0x308991){logger[_0x5645('0xe')](_0x5645('0x1f'),_0x35bc6f);logger[_0x5645('0x20')](_0x5645('0x1f'),_0x35bc6f,JSON[_0x5645('0x12')](_0x308991));_0x22a6cf(_0x308991);})[_0x5645('0x21')](function(_0x1c0aa2){logger[_0x5645('0x13')](_0x5645('0x1f'),_0x1c0aa2[_0x5645('0x15')],_0x35bc6f);_0x102c19(_0x1d519d['error'](0x1f4,_0x1c0aa2[_0x5645('0x15')]));});});};exports['ShowFreshsalesAccount']=function(_0x12aea2){var _0x31c31b=this;return new Promise(function(_0x40f716,_0x43d514){return db[_0x5645('0x22')][_0x5645('0x23')]({'raw':_0x12aea2['options']?_0x12aea2['options'][_0x5645('0x18')]===undefined?!![]:![]:!![],'where':_0x12aea2[_0x5645('0x19')]?_0x12aea2[_0x5645('0x19')][_0x5645('0x24')]||null:null,'attributes':_0x12aea2[_0x5645('0x19')]?_0x12aea2[_0x5645('0x19')][_0x5645('0x1a')]||null:null,'include':_0x12aea2[_0x5645('0x19')]?_0x12aea2[_0x5645('0x19')][_0x5645('0x1c')]?_[_0x5645('0x1d')](_0x12aea2['options']['include'],function(_0xe01db0){return{'model':db[_0xe01db0['model']],'as':_0xe01db0['as'],'attributes':_0xe01db0[_0x5645('0x1a')],'include':_0xe01db0['include']?_[_0x5645('0x1d')](_0xe01db0['include'],function(_0x2e3dfb){return{'model':db[_0x2e3dfb[_0x5645('0x1e')]],'as':_0x2e3dfb['as'],'attributes':_0x2e3dfb[_0x5645('0x1a')],'include':_0x2e3dfb[_0x5645('0x1c')]?_[_0x5645('0x1d')](_0x2e3dfb[_0x5645('0x1c')],function(_0x57fe61){return{'model':db[_0x57fe61[_0x5645('0x1e')]],'as':_0x57fe61['as'],'attributes':_0x57fe61[_0x5645('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5645('0xd')](function(_0x1f6c2f){logger[_0x5645('0xe')](_0x5645('0x25'),_0x12aea2);logger[_0x5645('0x20')](_0x5645('0x25'),_0x12aea2,JSON['stringify'](_0x1f6c2f));_0x40f716(_0x1f6c2f);})[_0x5645('0x21')](function(_0x48844f){logger[_0x5645('0x13')](_0x5645('0x25'),_0x48844f[_0x5645('0x15')],_0x12aea2);_0x43d514(_0x31c31b[_0x5645('0x13')](0x1f4,_0x48844f[_0x5645('0x15')]));});});};
\ No newline at end of file
index eea9196..44e90dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x198f=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getFields','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x20cf8a,_0x44cd6b){var _0x54e165=function(_0xcce1d0){while(--_0xcce1d0){_0x20cf8a['push'](_0x20cf8a['shift']());}};_0x54e165(++_0x44cd6b);}(_0x198f,0x19c));var _0xf198=function(_0x35e3b8,_0x1f543f){_0x35e3b8=_0x35e3b8-0x0;var _0xae5b9a=_0x198f[_0x35e3b8];return _0xae5b9a;};'use strict';var multer=require(_0xf198('0x0'));var util=require(_0xf198('0x1'));var path=require(_0xf198('0x2'));var timeout=require(_0xf198('0x3'));var express=require(_0xf198('0x4'));var router=express[_0xf198('0x5')]();var fs_extra=require(_0xf198('0x6'));var auth=require(_0xf198('0x7'));var interaction=require(_0xf198('0x8'));var config=require(_0xf198('0x9'));var controller=require(_0xf198('0xa'));router[_0xf198('0xb')]('/',auth['isAuthenticated'](),controller[_0xf198('0xc')]);router[_0xf198('0xb')](_0xf198('0xd'),auth[_0xf198('0xe')](),controller['show']);router[_0xf198('0xb')](_0xf198('0xf'),auth[_0xf198('0xe')](),controller[_0xf198('0x10')]);router['get'](_0xf198('0x11'),auth[_0xf198('0xe')](),controller[_0xf198('0x12')]);router[_0xf198('0xb')]('/:id/fields',auth[_0xf198('0xe')](),controller[_0xf198('0x13')]);router[_0xf198('0x14')]('/',auth[_0xf198('0xe')](),controller[_0xf198('0x15')]);router[_0xf198('0x16')](_0xf198('0xd'),auth[_0xf198('0xe')](),controller['update']);router[_0xf198('0x17')](_0xf198('0xd'),auth['isAuthenticated'](),controller[_0xf198('0x18')]);module[_0xf198('0x19')]=router;
\ No newline at end of file
+var _0x4941=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','index','isAuthenticated','show','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','post','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x42439c,_0x26be63){var _0x3207a2=function(_0x1b5a55){while(--_0x1b5a55){_0x42439c['push'](_0x42439c['shift']());}};_0x3207a2(++_0x26be63);}(_0x4941,0x166));var _0x1494=function(_0x49a1a0,_0x48f776){_0x49a1a0=_0x49a1a0-0x0;var _0x518a4f=_0x4941[_0x49a1a0];return _0x518a4f;};'use strict';var multer=require(_0x1494('0x0'));var util=require(_0x1494('0x1'));var path=require('path');var timeout=require(_0x1494('0x2'));var express=require(_0x1494('0x3'));var router=express[_0x1494('0x4')]();var fs_extra=require(_0x1494('0x5'));var auth=require(_0x1494('0x6'));var interaction=require(_0x1494('0x7'));var config=require(_0x1494('0x8'));var controller=require(_0x1494('0x9'));router[_0x1494('0xa')]('/',auth['isAuthenticated'](),controller[_0x1494('0xb')]);router[_0x1494('0xa')]('/:id',auth[_0x1494('0xc')](),controller[_0x1494('0xd')]);router[_0x1494('0xa')](_0x1494('0xe'),auth[_0x1494('0xc')](),controller[_0x1494('0xf')]);router['get']('/:id/descriptions',auth[_0x1494('0xc')](),controller[_0x1494('0x10')]);router[_0x1494('0xa')](_0x1494('0x11'),auth[_0x1494('0xc')](),controller[_0x1494('0x12')]);router[_0x1494('0x13')]('/',auth[_0x1494('0xc')](),controller[_0x1494('0x14')]);router['put'](_0x1494('0x15'),auth[_0x1494('0xc')](),controller[_0x1494('0x16')]);router[_0x1494('0x17')](_0x1494('0x15'),auth['isAuthenticated'](),controller[_0x1494('0x18')]);module[_0x1494('0x19')]=router;
\ No newline at end of file
index 1b9ab83..0696b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7931=['exports','STRING'];(function(_0x116499,_0x34b419){var _0xf5efb3=function(_0xef21ef){while(--_0xef21ef){_0x116499['push'](_0x116499['shift']());}};_0xf5efb3(++_0x34b419);}(_0x7931,0x19a));var _0x1793=function(_0x2bc0fb,_0x337285){_0x2bc0fb=_0x2bc0fb-0x0;var _0x36fbf4=_0x7931[_0x2bc0fb];return _0x36fbf4;};'use strict';var Sequelize=require('sequelize');module[_0x1793('0x0')]={'name':{'type':Sequelize[_0x1793('0x1')]},'description':{'type':Sequelize[_0x1793('0x1')]}};
\ No newline at end of file
+var _0xda0f=['STRING','exports'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0xda0f,0xd3));var _0xfda0=function(_0x5acd84,_0x378158){_0x5acd84=_0x5acd84-0x0;var _0x4fbe2e=_0xda0f[_0x5acd84];return _0x4fbe2e;};'use strict';var Sequelize=require('sequelize');module[_0xfda0('0x0')]={'name':{'type':Sequelize[_0xfda0('0x1')]},'description':{'type':Sequelize[_0xfda0('0x1')]}};
\ No newline at end of file
index cd1bd51..064e432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73cc=['index','map','FreshsalesConfiguration','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','limit','sort','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','show','params','length','include','options','find','catch','create','body','getSubjects','FreshsalesField','order','nolimit','getDescriptions','findOne','getFields','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','name'];(function(_0x1b01dc,_0x362664){var _0x1da974=function(_0x1daec3){while(--_0x1daec3){_0x1b01dc['push'](_0x1b01dc['shift']());}};_0x1da974(++_0x362664);}(_0x73cc,0x112));var _0xc73c=function(_0x3abbe8,_0x344ac2){_0x3abbe8=_0x3abbe8-0x0;var _0x44ef8e=_0x73cc[_0x3abbe8];return _0x44ef8e;};'use strict';var emlformat=require(_0xc73c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc73c('0x1'));var jsonpatch=require(_0xc73c('0x2'));var rp=require(_0xc73c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc73c('0x4'));var util=require(_0xc73c('0x5'));var path=require(_0xc73c('0x6'));var sox=require('sox');var csv=require(_0xc73c('0x7'));var ejs=require(_0xc73c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc73c('0x9'));var squel=require(_0xc73c('0xa'));var crypto=require(_0xc73c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xc73c('0xc'));var toCsv=require(_0xc73c('0x7'));var querystring=require(_0xc73c('0xd'));var Papa=require(_0xc73c('0xe'));var Redis=require(_0xc73c('0xf'));var authService=require(_0xc73c('0x10'));var qs=require(_0xc73c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc73c('0x12'));var logger=require(_0xc73c('0x13'))('api');var utils=require(_0xc73c('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc73c('0x15'))['db'];function respondWithStatusCode(_0xd8a7f3,_0x5e4326){_0x5e4326=_0x5e4326||0xcc;return function(_0x1a689e){if(_0x1a689e){return _0xd8a7f3[_0xc73c('0x16')](_0x5e4326);}return _0xd8a7f3[_0xc73c('0x17')](_0x5e4326)[_0xc73c('0x18')]();};}function respondWithResult(_0x1bcc4b,_0x598cd8){_0x598cd8=_0x598cd8||0xc8;return function(_0xf515b){if(_0xf515b){return _0x1bcc4b['status'](_0x598cd8)[_0xc73c('0x19')](_0xf515b);}};}function respondWithFilteredResult(_0x2ee711,_0x58a02f){return function(_0x1fbe49){if(_0x1fbe49){var _0x21df65=typeof _0x58a02f[_0xc73c('0x1a')]===_0xc73c('0x1b')&&typeof _0x58a02f['limit']===_0xc73c('0x1b');var _0x79211b=_0x1fbe49[_0xc73c('0x1c')];var _0x336eec=_0x21df65?0x0:_0x58a02f[_0xc73c('0x1a')];var _0x31dda1=_0x21df65?_0x1fbe49[_0xc73c('0x1c')]:_0x58a02f['offset']+_0x58a02f['limit'];var _0x694da8;if(_0x31dda1>=_0x79211b){_0x31dda1=_0x79211b;_0x694da8=0xc8;}else{_0x694da8=0xce;}_0x2ee711[_0xc73c('0x17')](_0x694da8);return _0x2ee711[_0xc73c('0x1d')](_0xc73c('0x1e'),_0x336eec+'-'+_0x31dda1+'/'+_0x79211b)[_0xc73c('0x19')](_0x1fbe49);}return null;};}function patchUpdates(_0x11ccc4){return function(_0x3d2751){try{jsonpatch['apply'](_0x3d2751,_0x11ccc4,!![]);}catch(_0x1db334){return BPromise[_0xc73c('0x1f')](_0x1db334);}return _0x3d2751[_0xc73c('0x20')]();};}function saveUpdates(_0x5b43a5,_0x44c2ab){return function(_0x118ca3){if(_0x118ca3){return _0x118ca3[_0xc73c('0x21')](_0x5b43a5)[_0xc73c('0x22')](function(_0x3128a5){return _0x3128a5;});}return null;};}function removeEntity(_0x2af63f,_0x5dbc38){return function(_0x2903a9){if(_0x2903a9){return _0x2903a9[_0xc73c('0x23')]()[_0xc73c('0x22')](function(){_0x2af63f[_0xc73c('0x17')](0xcc)[_0xc73c('0x18')]();});}};}function handleEntityNotFound(_0x32bbbb,_0x4311df){return function(_0x348c53){if(!_0x348c53){_0x32bbbb[_0xc73c('0x16')](0x194);}return _0x348c53;};}function handleError(_0x922ccc,_0x517bc3){_0x517bc3=_0x517bc3||0x1f4;return function(_0xc92030){logger[_0xc73c('0x24')](_0xc92030['stack']);if(_0xc92030[_0xc73c('0x25')]){delete _0xc92030[_0xc73c('0x25')];}_0x922ccc[_0xc73c('0x17')](_0x517bc3)['send'](_0xc92030);};}exports[_0xc73c('0x26')]=function(_0x1d65ab,_0xbc8ede){var _0x3cb58c={},_0x34bd16={},_0x10fde3={'count':0x0,'rows':[]};var _0x4e3636=_[_0xc73c('0x27')](db[_0xc73c('0x28')][_0xc73c('0x29')],function(_0x2c608e){return{'name':_0x2c608e['fieldName'],'type':_0x2c608e[_0xc73c('0x2a')][_0xc73c('0x2b')]};});_0x34bd16['model']=_[_0xc73c('0x27')](_0x4e3636,_0xc73c('0x25'));_0x34bd16['query']=_[_0xc73c('0x2c')](_0x1d65ab[_0xc73c('0x2d')]);_0x34bd16[_0xc73c('0x2e')]=_[_0xc73c('0x2f')](_0x34bd16[_0xc73c('0x30')],_0x34bd16[_0xc73c('0x2d')]);_0x3cb58c[_0xc73c('0x31')]=_[_0xc73c('0x2f')](_0x34bd16[_0xc73c('0x30')],qs['fields'](_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x32')]));_0x3cb58c[_0xc73c('0x31')]=_0x3cb58c['attributes']['length']?_0x3cb58c['attributes']:_0x34bd16[_0xc73c('0x30')];if(!_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x33')]('nolimit')){_0x3cb58c['limit']=qs[_0xc73c('0x34')](_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x34')]);_0x3cb58c[_0xc73c('0x1a')]=qs['offset'](_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x1a')]);}_0x3cb58c['order']=qs[_0xc73c('0x35')](_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x35')]);_0x3cb58c['where']=qs[_0xc73c('0x2e')](_[_0xc73c('0x36')](_0x1d65ab[_0xc73c('0x2d')],_0x34bd16[_0xc73c('0x2e')]),_0x4e3636);if(_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x37')]){_0x3cb58c[_0xc73c('0x38')]=_[_0xc73c('0x39')](_0x3cb58c['where'],{'$or':_[_0xc73c('0x27')](_0x4e3636,function(_0x5e3b1f){if(_0x5e3b1f[_0xc73c('0x2a')]!==_0xc73c('0x3a')){var _0x2d29bf={};_0x2d29bf[_0x5e3b1f[_0xc73c('0x25')]]={'$like':'%'+_0x1d65ab[_0xc73c('0x2d')]['filter']+'%'};return _0x2d29bf;}})});}_0x3cb58c=_['merge']({},_0x3cb58c,_0x1d65ab['options']);var _0x578dd9={'where':_0x3cb58c['where']};return db[_0xc73c('0x28')]['count'](_0x578dd9)[_0xc73c('0x22')](function(_0x4beda4){_0x10fde3[_0xc73c('0x1c')]=_0x4beda4;if(_0x1d65ab[_0xc73c('0x2d')][_0xc73c('0x3b')]){_0x3cb58c['include']=[{'all':!![]}];}return db[_0xc73c('0x28')][_0xc73c('0x3c')](_0x3cb58c);})['then'](function(_0x55ff0e){_0x10fde3[_0xc73c('0x3d')]=_0x55ff0e;return _0x10fde3;})[_0xc73c('0x22')](respondWithFilteredResult(_0xbc8ede,_0x3cb58c))['catch'](handleError(_0xbc8ede,null));};exports[_0xc73c('0x3e')]=function(_0x1a834d,_0x412a8f){var _0xca55d8={'raw':![],'where':{'id':_0x1a834d[_0xc73c('0x3f')]['id']}},_0x1d12d6={};_0x1d12d6[_0xc73c('0x30')]=_['keys'](db[_0xc73c('0x28')][_0xc73c('0x29')]);_0x1d12d6[_0xc73c('0x2d')]=_[_0xc73c('0x2c')](_0x1a834d['query']);_0x1d12d6['filters']=_[_0xc73c('0x2f')](_0x1d12d6[_0xc73c('0x30')],_0x1d12d6[_0xc73c('0x2d')]);_0xca55d8[_0xc73c('0x31')]=_['intersection'](_0x1d12d6['model'],qs[_0xc73c('0x32')](_0x1a834d['query'][_0xc73c('0x32')]));_0xca55d8['attributes']=_0xca55d8[_0xc73c('0x31')][_0xc73c('0x40')]?_0xca55d8[_0xc73c('0x31')]:_0x1d12d6[_0xc73c('0x30')];if(_0x1a834d[_0xc73c('0x2d')][_0xc73c('0x3b')]){_0xca55d8[_0xc73c('0x41')]=[{'all':!![]}];}_0xca55d8=_[_0xc73c('0x39')]({},_0xca55d8,_0x1a834d[_0xc73c('0x42')]);return db[_0xc73c('0x28')][_0xc73c('0x43')](_0xca55d8)[_0xc73c('0x22')](handleEntityNotFound(_0x412a8f,null))['then'](respondWithResult(_0x412a8f,null))[_0xc73c('0x44')](handleError(_0x412a8f,null));};exports[_0xc73c('0x45')]=function(_0xcabbf5,_0x300a8f){return db[_0xc73c('0x28')][_0xc73c('0x45')](_0xcabbf5[_0xc73c('0x46')],{})[_0xc73c('0x22')](respondWithResult(_0x300a8f,0xc9))[_0xc73c('0x44')](handleError(_0x300a8f,null));};exports[_0xc73c('0x21')]=function(_0x320f48,_0x2b93ab){if(_0x320f48['body']['id']){delete _0x320f48[_0xc73c('0x46')]['id'];}return db[_0xc73c('0x28')][_0xc73c('0x43')]({'where':{'id':_0x320f48[_0xc73c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2b93ab,null))['then'](saveUpdates(_0x320f48[_0xc73c('0x46')],null))[_0xc73c('0x22')](respondWithResult(_0x2b93ab,null))[_0xc73c('0x44')](handleError(_0x2b93ab,null));};exports[_0xc73c('0x23')]=function(_0xef297c,_0x2821b8){return db[_0xc73c('0x28')]['find']({'where':{'id':_0xef297c[_0xc73c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2821b8,null))[_0xc73c('0x22')](removeEntity(_0x2821b8,null))[_0xc73c('0x44')](handleError(_0x2821b8,null));};exports[_0xc73c('0x47')]=function(_0x525b11,_0x21f8c8,_0x1add76){var _0x38dcba={};var _0x22dc9d={};var _0x5696dd;var _0x5b3da9;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x525b11[_0xc73c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x21f8c8,null))[_0xc73c('0x22')](function(_0x5bb17f){if(_0x5bb17f){_0x5696dd=_0x5bb17f;_0x22dc9d[_0xc73c('0x30')]=_['keys'](db[_0xc73c('0x48')][_0xc73c('0x29')]);_0x22dc9d[_0xc73c('0x2d')]=_[_0xc73c('0x2c')](_0x525b11['query']);_0x22dc9d[_0xc73c('0x2e')]=_[_0xc73c('0x2f')](_0x22dc9d[_0xc73c('0x30')],_0x22dc9d[_0xc73c('0x2d')]);_0x38dcba[_0xc73c('0x31')]=_['intersection'](_0x22dc9d[_0xc73c('0x30')],qs['fields'](_0x525b11[_0xc73c('0x2d')][_0xc73c('0x32')]));_0x38dcba[_0xc73c('0x31')]=_0x38dcba[_0xc73c('0x31')][_0xc73c('0x40')]?_0x38dcba[_0xc73c('0x31')]:_0x22dc9d['model'];_0x38dcba[_0xc73c('0x49')]=qs[_0xc73c('0x35')](_0x525b11['query'][_0xc73c('0x35')]);_0x38dcba[_0xc73c('0x38')]=qs[_0xc73c('0x2e')](_['pick'](_0x525b11[_0xc73c('0x2d')],_0x22dc9d[_0xc73c('0x2e')]));if(_0x525b11[_0xc73c('0x2d')][_0xc73c('0x37')]){_0x38dcba[_0xc73c('0x38')]=_[_0xc73c('0x39')](_0x38dcba['where'],{'$or':_[_0xc73c('0x27')](_0x38dcba[_0xc73c('0x31')],function(_0x60d86c){var _0x45c691={};_0x45c691[_0x60d86c]={'$like':'%'+_0x525b11[_0xc73c('0x2d')][_0xc73c('0x37')]+'%'};return _0x45c691;})});}_0x38dcba=_['merge']({},_0x38dcba,_0x525b11['options']);return _0x5696dd[_0xc73c('0x47')](_0x38dcba);}})[_0xc73c('0x22')](function(_0xf43fb0){if(_0xf43fb0){_0x5b3da9=_0xf43fb0[_0xc73c('0x40')];if(!_0x525b11[_0xc73c('0x2d')][_0xc73c('0x33')](_0xc73c('0x4a'))){_0x38dcba[_0xc73c('0x34')]=qs[_0xc73c('0x34')](_0x525b11[_0xc73c('0x2d')][_0xc73c('0x34')]);_0x38dcba[_0xc73c('0x1a')]=qs[_0xc73c('0x1a')](_0x525b11[_0xc73c('0x2d')][_0xc73c('0x1a')]);}return _0x5696dd[_0xc73c('0x47')](_0x38dcba);}})[_0xc73c('0x22')](function(_0x5bfdfd){if(_0x5bfdfd){return _0x5bfdfd?{'count':_0x5b3da9,'rows':_0x5bfdfd}:null;}})['then'](respondWithResult(_0x21f8c8,null))['catch'](handleError(_0x21f8c8,null));};exports[_0xc73c('0x4b')]=function(_0x1217b4,_0x5183f0,_0x19aa1c){var _0x4cf8e9={};var _0x4947fe={};var _0x2a2dd7;var _0x25a6a3;return db[_0xc73c('0x28')][_0xc73c('0x4c')]({'where':{'id':_0x1217b4['params']['id']}})[_0xc73c('0x22')](handleEntityNotFound(_0x5183f0,null))[_0xc73c('0x22')](function(_0x13eeb7){if(_0x13eeb7){_0x2a2dd7=_0x13eeb7;_0x4947fe[_0xc73c('0x30')]=_[_0xc73c('0x2c')](db[_0xc73c('0x48')][_0xc73c('0x29')]);_0x4947fe['query']=_[_0xc73c('0x2c')](_0x1217b4[_0xc73c('0x2d')]);_0x4947fe[_0xc73c('0x2e')]=_[_0xc73c('0x2f')](_0x4947fe[_0xc73c('0x30')],_0x4947fe[_0xc73c('0x2d')]);_0x4cf8e9[_0xc73c('0x31')]=_[_0xc73c('0x2f')](_0x4947fe['model'],qs[_0xc73c('0x32')](_0x1217b4['query'][_0xc73c('0x32')]));_0x4cf8e9[_0xc73c('0x31')]=_0x4cf8e9[_0xc73c('0x31')][_0xc73c('0x40')]?_0x4cf8e9[_0xc73c('0x31')]:_0x4947fe[_0xc73c('0x30')];_0x4cf8e9['order']=qs[_0xc73c('0x35')](_0x1217b4[_0xc73c('0x2d')][_0xc73c('0x35')]);_0x4cf8e9[_0xc73c('0x38')]=qs[_0xc73c('0x2e')](_[_0xc73c('0x36')](_0x1217b4[_0xc73c('0x2d')],_0x4947fe['filters']));if(_0x1217b4[_0xc73c('0x2d')][_0xc73c('0x37')]){_0x4cf8e9['where']=_[_0xc73c('0x39')](_0x4cf8e9[_0xc73c('0x38')],{'$or':_['map'](_0x4cf8e9[_0xc73c('0x31')],function(_0xad5478){var _0x17b994={};_0x17b994[_0xad5478]={'$like':'%'+_0x1217b4[_0xc73c('0x2d')]['filter']+'%'};return _0x17b994;})});}_0x4cf8e9=_[_0xc73c('0x39')]({},_0x4cf8e9,_0x1217b4[_0xc73c('0x42')]);return _0x2a2dd7['getDescriptions'](_0x4cf8e9);}})[_0xc73c('0x22')](function(_0x4e39ed){if(_0x4e39ed){_0x25a6a3=_0x4e39ed[_0xc73c('0x40')];if(!_0x1217b4['query']['hasOwnProperty'](_0xc73c('0x4a'))){_0x4cf8e9['limit']=qs[_0xc73c('0x34')](_0x1217b4[_0xc73c('0x2d')]['limit']);_0x4cf8e9['offset']=qs['offset'](_0x1217b4['query']['offset']);}return _0x2a2dd7[_0xc73c('0x4b')](_0x4cf8e9);}})[_0xc73c('0x22')](function(_0x1afbe1){if(_0x1afbe1){return _0x1afbe1?{'count':_0x25a6a3,'rows':_0x1afbe1}:null;}})[_0xc73c('0x22')](respondWithResult(_0x5183f0,null))[_0xc73c('0x44')](handleError(_0x5183f0,null));};exports[_0xc73c('0x4d')]=function(_0x4f1ebf,_0x273bdb,_0x855238){var _0x1c4f08={};var _0x291eaa={};var _0x4c62d8;var _0x153870;return db[_0xc73c('0x28')]['findOne']({'where':{'id':_0x4f1ebf[_0xc73c('0x3f')]['id']}})[_0xc73c('0x22')](handleEntityNotFound(_0x273bdb,null))[_0xc73c('0x22')](function(_0x4ae7fb){if(_0x4ae7fb){_0x4c62d8=_0x4ae7fb;_0x291eaa['model']=_[_0xc73c('0x2c')](db[_0xc73c('0x48')]['rawAttributes']);_0x291eaa[_0xc73c('0x2d')]=_[_0xc73c('0x2c')](_0x4f1ebf['query']);_0x291eaa['filters']=_[_0xc73c('0x2f')](_0x291eaa[_0xc73c('0x30')],_0x291eaa[_0xc73c('0x2d')]);_0x1c4f08[_0xc73c('0x31')]=_[_0xc73c('0x2f')](_0x291eaa[_0xc73c('0x30')],qs[_0xc73c('0x32')](_0x4f1ebf['query']['fields']));_0x1c4f08[_0xc73c('0x31')]=_0x1c4f08[_0xc73c('0x31')]['length']?_0x1c4f08[_0xc73c('0x31')]:_0x291eaa[_0xc73c('0x30')];_0x1c4f08[_0xc73c('0x49')]=qs[_0xc73c('0x35')](_0x4f1ebf[_0xc73c('0x2d')]['sort']);_0x1c4f08[_0xc73c('0x38')]=qs[_0xc73c('0x2e')](_[_0xc73c('0x36')](_0x4f1ebf[_0xc73c('0x2d')],_0x291eaa[_0xc73c('0x2e')]));if(_0x4f1ebf[_0xc73c('0x2d')][_0xc73c('0x37')]){_0x1c4f08[_0xc73c('0x38')]=_['merge'](_0x1c4f08[_0xc73c('0x38')],{'$or':_['map'](_0x1c4f08['attributes'],function(_0x452853){var _0x529494={};_0x529494[_0x452853]={'$like':'%'+_0x4f1ebf[_0xc73c('0x2d')][_0xc73c('0x37')]+'%'};return _0x529494;})});}_0x1c4f08=_[_0xc73c('0x39')]({},_0x1c4f08,_0x4f1ebf['options']);return _0x4c62d8[_0xc73c('0x4d')](_0x1c4f08);}})[_0xc73c('0x22')](function(_0x5d6e2e){if(_0x5d6e2e){_0x153870=_0x5d6e2e[_0xc73c('0x40')];if(!_0x4f1ebf[_0xc73c('0x2d')][_0xc73c('0x33')](_0xc73c('0x4a'))){_0x1c4f08['limit']=qs['limit'](_0x4f1ebf[_0xc73c('0x2d')][_0xc73c('0x34')]);_0x1c4f08['offset']=qs['offset'](_0x4f1ebf[_0xc73c('0x2d')]['offset']);}return _0x4c62d8['getFields'](_0x1c4f08);}})['then'](function(_0x191a73){if(_0x191a73){return _0x191a73?{'count':_0x153870,'rows':_0x191a73}:null;}})[_0xc73c('0x22')](respondWithResult(_0x273bdb,null))[_0xc73c('0x44')](handleError(_0x273bdb,null));};
\ No newline at end of file
+var _0xd816=['../../config/logger','api','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','FreshsalesConfiguration','includeAll','include','findAll','rows','show','params','length','catch','create','body','find','getSubjects','findOne','FreshsalesField','order','getDescriptions','getFields','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x10594a,_0x1c28c3){var _0x31fc67=function(_0x8514b1){while(--_0x8514b1){_0x10594a['push'](_0x10594a['shift']());}};_0x31fc67(++_0x1c28c3);}(_0xd816,0x18b));var _0x6d81=function(_0x9ac855,_0x4aabad){_0x9ac855=_0x9ac855-0x0;var _0x4a9880=_0xd816[_0x9ac855];return _0x4a9880;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d81('0x0'));var zipdir=require(_0x6d81('0x1'));var jsonpatch=require(_0x6d81('0x2'));var rp=require(_0x6d81('0x3'));var moment=require(_0x6d81('0x4'));var BPromise=require(_0x6d81('0x5'));var Mustache=require(_0x6d81('0x6'));var util=require(_0x6d81('0x7'));var path=require(_0x6d81('0x8'));var sox=require('sox');var csv=require(_0x6d81('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d81('0xa'));var squel=require(_0x6d81('0xb'));var crypto=require('crypto');var jsforce=require(_0x6d81('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6d81('0xd'));var Papa=require(_0x6d81('0xe'));var Redis=require(_0x6d81('0xf'));var authService=require(_0x6d81('0x10'));var qs=require(_0x6d81('0x11'));var as=require(_0x6d81('0x12'));var hardwareService=require(_0x6d81('0x13'));var logger=require(_0x6d81('0x14'))(_0x6d81('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6d81('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x91c6ec,_0x4b49c0){_0x4b49c0=_0x4b49c0||0xcc;return function(_0x5ba7e0){if(_0x5ba7e0){return _0x91c6ec[_0x6d81('0x17')](_0x4b49c0);}return _0x91c6ec[_0x6d81('0x18')](_0x4b49c0)[_0x6d81('0x19')]();};}function respondWithResult(_0x3a3a6e,_0x2d43ab){_0x2d43ab=_0x2d43ab||0xc8;return function(_0x485af8){if(_0x485af8){return _0x3a3a6e[_0x6d81('0x18')](_0x2d43ab)[_0x6d81('0x1a')](_0x485af8);}};}function respondWithFilteredResult(_0x3b28d2,_0x6518c9){return function(_0x526c3c){if(_0x526c3c){var _0x85563e=typeof _0x6518c9[_0x6d81('0x1b')]===_0x6d81('0x1c')&&typeof _0x6518c9[_0x6d81('0x1d')]===_0x6d81('0x1c');var _0x49f52f=_0x526c3c[_0x6d81('0x1e')];var _0x4858ff=_0x85563e?0x0:_0x6518c9[_0x6d81('0x1b')];var _0x26d236=_0x85563e?_0x526c3c[_0x6d81('0x1e')]:_0x6518c9['offset']+_0x6518c9['limit'];var _0x31dd76;if(_0x26d236>=_0x49f52f){_0x26d236=_0x49f52f;_0x31dd76=0xc8;}else{_0x31dd76=0xce;}_0x3b28d2[_0x6d81('0x18')](_0x31dd76);return _0x3b28d2[_0x6d81('0x1f')](_0x6d81('0x20'),_0x4858ff+'-'+_0x26d236+'/'+_0x49f52f)[_0x6d81('0x1a')](_0x526c3c);}return null;};}function patchUpdates(_0x401850){return function(_0x35b3e6){try{jsonpatch[_0x6d81('0x21')](_0x35b3e6,_0x401850,!![]);}catch(_0x29a3d3){return BPromise[_0x6d81('0x22')](_0x29a3d3);}return _0x35b3e6[_0x6d81('0x23')]();};}function saveUpdates(_0x19d176,_0x54585f){return function(_0x1ea181){if(_0x1ea181){return _0x1ea181[_0x6d81('0x24')](_0x19d176)[_0x6d81('0x25')](function(_0x4911a5){return _0x4911a5;});}return null;};}function removeEntity(_0x142009,_0x435813){return function(_0x50cb06){if(_0x50cb06){return _0x50cb06[_0x6d81('0x26')]()['then'](function(){_0x142009[_0x6d81('0x18')](0xcc)[_0x6d81('0x19')]();});}};}function handleEntityNotFound(_0x308aa0,_0x106e03){return function(_0x21d083){if(!_0x21d083){_0x308aa0[_0x6d81('0x17')](0x194);}return _0x21d083;};}function handleError(_0x5f5517,_0x5e951f){_0x5e951f=_0x5e951f||0x1f4;return function(_0x57eb0f){logger[_0x6d81('0x27')](_0x57eb0f[_0x6d81('0x28')]);if(_0x57eb0f[_0x6d81('0x29')]){delete _0x57eb0f[_0x6d81('0x29')];}_0x5f5517[_0x6d81('0x18')](_0x5e951f)[_0x6d81('0x2a')](_0x57eb0f);};}exports[_0x6d81('0x2b')]=function(_0xadc392,_0x1e68f7){var _0x2710f4={},_0x428e31={},_0x220913={'count':0x0,'rows':[]};var _0x11241e=_[_0x6d81('0x2c')](db['FreshsalesConfiguration'][_0x6d81('0x2d')],function(_0x5a356b){return{'name':_0x5a356b[_0x6d81('0x2e')],'type':_0x5a356b[_0x6d81('0x2f')][_0x6d81('0x30')]};});_0x428e31[_0x6d81('0x31')]=_['map'](_0x11241e,_0x6d81('0x29'));_0x428e31['query']=_[_0x6d81('0x32')](_0xadc392['query']);_0x428e31[_0x6d81('0x33')]=_[_0x6d81('0x34')](_0x428e31[_0x6d81('0x31')],_0x428e31[_0x6d81('0x35')]);_0x2710f4[_0x6d81('0x36')]=_[_0x6d81('0x34')](_0x428e31['model'],qs['fields'](_0xadc392[_0x6d81('0x35')][_0x6d81('0x37')]));_0x2710f4[_0x6d81('0x36')]=_0x2710f4[_0x6d81('0x36')]['length']?_0x2710f4[_0x6d81('0x36')]:_0x428e31[_0x6d81('0x31')];if(!_0xadc392[_0x6d81('0x35')][_0x6d81('0x38')](_0x6d81('0x39'))){_0x2710f4[_0x6d81('0x1d')]=qs[_0x6d81('0x1d')](_0xadc392[_0x6d81('0x35')][_0x6d81('0x1d')]);_0x2710f4[_0x6d81('0x1b')]=qs[_0x6d81('0x1b')](_0xadc392[_0x6d81('0x35')][_0x6d81('0x1b')]);}_0x2710f4['order']=qs[_0x6d81('0x3a')](_0xadc392[_0x6d81('0x35')][_0x6d81('0x3a')]);_0x2710f4[_0x6d81('0x3b')]=qs[_0x6d81('0x33')](_[_0x6d81('0x3c')](_0xadc392[_0x6d81('0x35')],_0x428e31[_0x6d81('0x33')]),_0x11241e);if(_0xadc392['query'][_0x6d81('0x3d')]){_0x2710f4[_0x6d81('0x3b')]=_[_0x6d81('0x3e')](_0x2710f4[_0x6d81('0x3b')],{'$or':_[_0x6d81('0x2c')](_0x11241e,function(_0x11bd89){if(_0x11bd89['type']!==_0x6d81('0x3f')){var _0x351144={};_0x351144[_0x11bd89[_0x6d81('0x29')]]={'$like':'%'+_0xadc392['query'][_0x6d81('0x3d')]+'%'};return _0x351144;}})});}_0x2710f4=_[_0x6d81('0x3e')]({},_0x2710f4,_0xadc392[_0x6d81('0x40')]);var _0x231fc0={'where':_0x2710f4[_0x6d81('0x3b')]};return db[_0x6d81('0x41')]['count'](_0x231fc0)[_0x6d81('0x25')](function(_0x22b17a){_0x220913[_0x6d81('0x1e')]=_0x22b17a;if(_0xadc392['query'][_0x6d81('0x42')]){_0x2710f4[_0x6d81('0x43')]=[{'all':!![]}];}return db[_0x6d81('0x41')][_0x6d81('0x44')](_0x2710f4);})['then'](function(_0x2f3da0){_0x220913[_0x6d81('0x45')]=_0x2f3da0;return _0x220913;})[_0x6d81('0x25')](respondWithFilteredResult(_0x1e68f7,_0x2710f4))['catch'](handleError(_0x1e68f7,null));};exports[_0x6d81('0x46')]=function(_0x1c85d7,_0x15e6c6){var _0x507f3b={'raw':![],'where':{'id':_0x1c85d7[_0x6d81('0x47')]['id']}},_0x3692a6={};_0x3692a6[_0x6d81('0x31')]=_['keys'](db[_0x6d81('0x41')][_0x6d81('0x2d')]);_0x3692a6[_0x6d81('0x35')]=_[_0x6d81('0x32')](_0x1c85d7[_0x6d81('0x35')]);_0x3692a6['filters']=_[_0x6d81('0x34')](_0x3692a6[_0x6d81('0x31')],_0x3692a6['query']);_0x507f3b['attributes']=_['intersection'](_0x3692a6[_0x6d81('0x31')],qs[_0x6d81('0x37')](_0x1c85d7[_0x6d81('0x35')][_0x6d81('0x37')]));_0x507f3b[_0x6d81('0x36')]=_0x507f3b[_0x6d81('0x36')][_0x6d81('0x48')]?_0x507f3b[_0x6d81('0x36')]:_0x3692a6[_0x6d81('0x31')];if(_0x1c85d7[_0x6d81('0x35')][_0x6d81('0x42')]){_0x507f3b['include']=[{'all':!![]}];}_0x507f3b=_['merge']({},_0x507f3b,_0x1c85d7['options']);return db[_0x6d81('0x41')]['find'](_0x507f3b)['then'](handleEntityNotFound(_0x15e6c6,null))[_0x6d81('0x25')](respondWithResult(_0x15e6c6,null))[_0x6d81('0x49')](handleError(_0x15e6c6,null));};exports['create']=function(_0x309f02,_0x269f20){return db['FreshsalesConfiguration'][_0x6d81('0x4a')](_0x309f02[_0x6d81('0x4b')],{})[_0x6d81('0x25')](respondWithResult(_0x269f20,0xc9))[_0x6d81('0x49')](handleError(_0x269f20,null));};exports[_0x6d81('0x24')]=function(_0x596790,_0xd4562a){if(_0x596790[_0x6d81('0x4b')]['id']){delete _0x596790['body']['id'];}return db['FreshsalesConfiguration'][_0x6d81('0x4c')]({'where':{'id':_0x596790[_0x6d81('0x47')]['id']}})[_0x6d81('0x25')](handleEntityNotFound(_0xd4562a,null))[_0x6d81('0x25')](saveUpdates(_0x596790['body'],null))['then'](respondWithResult(_0xd4562a,null))[_0x6d81('0x49')](handleError(_0xd4562a,null));};exports[_0x6d81('0x26')]=function(_0x4e23a5,_0x1c2681){return db['FreshsalesConfiguration'][_0x6d81('0x4c')]({'where':{'id':_0x4e23a5[_0x6d81('0x47')]['id']}})[_0x6d81('0x25')](handleEntityNotFound(_0x1c2681,null))[_0x6d81('0x25')](removeEntity(_0x1c2681,null))['catch'](handleError(_0x1c2681,null));};exports[_0x6d81('0x4d')]=function(_0x4e045d,_0x30a7ee,_0x41e01a){var _0x40f9e3={};var _0x57107b={};var _0x2c5f55;var _0x2212c8;return db['FreshsalesConfiguration'][_0x6d81('0x4e')]({'where':{'id':_0x4e045d[_0x6d81('0x47')]['id']}})[_0x6d81('0x25')](handleEntityNotFound(_0x30a7ee,null))[_0x6d81('0x25')](function(_0x43d7af){if(_0x43d7af){_0x2c5f55=_0x43d7af;_0x57107b[_0x6d81('0x31')]=_['keys'](db[_0x6d81('0x4f')][_0x6d81('0x2d')]);_0x57107b[_0x6d81('0x35')]=_[_0x6d81('0x32')](_0x4e045d[_0x6d81('0x35')]);_0x57107b[_0x6d81('0x33')]=_['intersection'](_0x57107b[_0x6d81('0x31')],_0x57107b[_0x6d81('0x35')]);_0x40f9e3[_0x6d81('0x36')]=_[_0x6d81('0x34')](_0x57107b[_0x6d81('0x31')],qs['fields'](_0x4e045d[_0x6d81('0x35')][_0x6d81('0x37')]));_0x40f9e3['attributes']=_0x40f9e3['attributes']['length']?_0x40f9e3['attributes']:_0x57107b[_0x6d81('0x31')];_0x40f9e3[_0x6d81('0x50')]=qs[_0x6d81('0x3a')](_0x4e045d[_0x6d81('0x35')][_0x6d81('0x3a')]);_0x40f9e3['where']=qs[_0x6d81('0x33')](_[_0x6d81('0x3c')](_0x4e045d[_0x6d81('0x35')],_0x57107b['filters']));if(_0x4e045d[_0x6d81('0x35')]['filter']){_0x40f9e3['where']=_['merge'](_0x40f9e3[_0x6d81('0x3b')],{'$or':_[_0x6d81('0x2c')](_0x40f9e3['attributes'],function(_0x37e576){var _0x130981={};_0x130981[_0x37e576]={'$like':'%'+_0x4e045d[_0x6d81('0x35')][_0x6d81('0x3d')]+'%'};return _0x130981;})});}_0x40f9e3=_[_0x6d81('0x3e')]({},_0x40f9e3,_0x4e045d[_0x6d81('0x40')]);return _0x2c5f55[_0x6d81('0x4d')](_0x40f9e3);}})[_0x6d81('0x25')](function(_0x214bb6){if(_0x214bb6){_0x2212c8=_0x214bb6['length'];if(!_0x4e045d[_0x6d81('0x35')][_0x6d81('0x38')](_0x6d81('0x39'))){_0x40f9e3[_0x6d81('0x1d')]=qs[_0x6d81('0x1d')](_0x4e045d[_0x6d81('0x35')][_0x6d81('0x1d')]);_0x40f9e3[_0x6d81('0x1b')]=qs[_0x6d81('0x1b')](_0x4e045d[_0x6d81('0x35')][_0x6d81('0x1b')]);}return _0x2c5f55[_0x6d81('0x4d')](_0x40f9e3);}})[_0x6d81('0x25')](function(_0x291453){if(_0x291453){return _0x291453?{'count':_0x2212c8,'rows':_0x291453}:null;}})[_0x6d81('0x25')](respondWithResult(_0x30a7ee,null))[_0x6d81('0x49')](handleError(_0x30a7ee,null));};exports[_0x6d81('0x51')]=function(_0x1720f8,_0x44184b,_0x2060e5){var _0x3f4082={};var _0x42c76d={};var _0x249909;var _0x7810b;return db[_0x6d81('0x41')][_0x6d81('0x4e')]({'where':{'id':_0x1720f8[_0x6d81('0x47')]['id']}})[_0x6d81('0x25')](handleEntityNotFound(_0x44184b,null))[_0x6d81('0x25')](function(_0x55138a){if(_0x55138a){_0x249909=_0x55138a;_0x42c76d['model']=_['keys'](db[_0x6d81('0x4f')][_0x6d81('0x2d')]);_0x42c76d[_0x6d81('0x35')]=_[_0x6d81('0x32')](_0x1720f8[_0x6d81('0x35')]);_0x42c76d[_0x6d81('0x33')]=_['intersection'](_0x42c76d[_0x6d81('0x31')],_0x42c76d[_0x6d81('0x35')]);_0x3f4082[_0x6d81('0x36')]=_[_0x6d81('0x34')](_0x42c76d[_0x6d81('0x31')],qs['fields'](_0x1720f8[_0x6d81('0x35')][_0x6d81('0x37')]));_0x3f4082[_0x6d81('0x36')]=_0x3f4082['attributes'][_0x6d81('0x48')]?_0x3f4082[_0x6d81('0x36')]:_0x42c76d[_0x6d81('0x31')];_0x3f4082['order']=qs['sort'](_0x1720f8[_0x6d81('0x35')]['sort']);_0x3f4082[_0x6d81('0x3b')]=qs[_0x6d81('0x33')](_[_0x6d81('0x3c')](_0x1720f8['query'],_0x42c76d[_0x6d81('0x33')]));if(_0x1720f8[_0x6d81('0x35')]['filter']){_0x3f4082[_0x6d81('0x3b')]=_[_0x6d81('0x3e')](_0x3f4082[_0x6d81('0x3b')],{'$or':_[_0x6d81('0x2c')](_0x3f4082[_0x6d81('0x36')],function(_0x1eb40e){var _0x2352dc={};_0x2352dc[_0x1eb40e]={'$like':'%'+_0x1720f8[_0x6d81('0x35')]['filter']+'%'};return _0x2352dc;})});}_0x3f4082=_['merge']({},_0x3f4082,_0x1720f8[_0x6d81('0x40')]);return _0x249909[_0x6d81('0x51')](_0x3f4082);}})[_0x6d81('0x25')](function(_0x284419){if(_0x284419){_0x7810b=_0x284419[_0x6d81('0x48')];if(!_0x1720f8[_0x6d81('0x35')][_0x6d81('0x38')](_0x6d81('0x39'))){_0x3f4082[_0x6d81('0x1d')]=qs[_0x6d81('0x1d')](_0x1720f8[_0x6d81('0x35')]['limit']);_0x3f4082[_0x6d81('0x1b')]=qs[_0x6d81('0x1b')](_0x1720f8[_0x6d81('0x35')][_0x6d81('0x1b')]);}return _0x249909['getDescriptions'](_0x3f4082);}})[_0x6d81('0x25')](function(_0x1ab6e9){if(_0x1ab6e9){return _0x1ab6e9?{'count':_0x7810b,'rows':_0x1ab6e9}:null;}})[_0x6d81('0x25')](respondWithResult(_0x44184b,null))[_0x6d81('0x49')](handleError(_0x44184b,null));};exports[_0x6d81('0x52')]=function(_0x5ee370,_0x8a009,_0x1c5d51){var _0x597e3e={};var _0x331e4b={};var _0x4b72df;var _0x49b822;return db[_0x6d81('0x41')][_0x6d81('0x4e')]({'where':{'id':_0x5ee370[_0x6d81('0x47')]['id']}})[_0x6d81('0x25')](handleEntityNotFound(_0x8a009,null))[_0x6d81('0x25')](function(_0x3d50a6){if(_0x3d50a6){_0x4b72df=_0x3d50a6;_0x331e4b['model']=_['keys'](db[_0x6d81('0x4f')][_0x6d81('0x2d')]);_0x331e4b[_0x6d81('0x35')]=_[_0x6d81('0x32')](_0x5ee370[_0x6d81('0x35')]);_0x331e4b[_0x6d81('0x33')]=_['intersection'](_0x331e4b[_0x6d81('0x31')],_0x331e4b[_0x6d81('0x35')]);_0x597e3e[_0x6d81('0x36')]=_['intersection'](_0x331e4b['model'],qs[_0x6d81('0x37')](_0x5ee370[_0x6d81('0x35')][_0x6d81('0x37')]));_0x597e3e[_0x6d81('0x36')]=_0x597e3e[_0x6d81('0x36')][_0x6d81('0x48')]?_0x597e3e[_0x6d81('0x36')]:_0x331e4b[_0x6d81('0x31')];_0x597e3e[_0x6d81('0x50')]=qs[_0x6d81('0x3a')](_0x5ee370[_0x6d81('0x35')][_0x6d81('0x3a')]);_0x597e3e[_0x6d81('0x3b')]=qs[_0x6d81('0x33')](_[_0x6d81('0x3c')](_0x5ee370[_0x6d81('0x35')],_0x331e4b[_0x6d81('0x33')]));if(_0x5ee370[_0x6d81('0x35')][_0x6d81('0x3d')]){_0x597e3e[_0x6d81('0x3b')]=_[_0x6d81('0x3e')](_0x597e3e[_0x6d81('0x3b')],{'$or':_[_0x6d81('0x2c')](_0x597e3e[_0x6d81('0x36')],function(_0x1f6a5d){var _0x32d056={};_0x32d056[_0x1f6a5d]={'$like':'%'+_0x5ee370[_0x6d81('0x35')][_0x6d81('0x3d')]+'%'};return _0x32d056;})});}_0x597e3e=_['merge']({},_0x597e3e,_0x5ee370[_0x6d81('0x40')]);return _0x4b72df['getFields'](_0x597e3e);}})[_0x6d81('0x25')](function(_0x3f900d){if(_0x3f900d){_0x49b822=_0x3f900d['length'];if(!_0x5ee370[_0x6d81('0x35')][_0x6d81('0x38')](_0x6d81('0x39'))){_0x597e3e[_0x6d81('0x1d')]=qs['limit'](_0x5ee370['query'][_0x6d81('0x1d')]);_0x597e3e[_0x6d81('0x1b')]=qs[_0x6d81('0x1b')](_0x5ee370['query']['offset']);}return _0x4b72df[_0x6d81('0x52')](_0x597e3e);}})['then'](function(_0x1e6b82){if(_0x1e6b82){return _0x1e6b82?{'count':_0x49b822,'rows':_0x1e6b82}:null;}})[_0x6d81('0x25')](respondWithResult(_0x8a009,null))[_0x6d81('0x49')](handleError(_0x8a009,null));};
\ No newline at end of file
index d23f219..613a041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b2=['moment','bluebird','request-promise','../../config/environment','exports','define','int_freshsales_configurations','lodash','util','../../config/logger','api'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xc2b2,0x96));var _0x2c2b=function(_0x21e51d,_0x2005a0){_0x21e51d=_0x21e51d-0x0;var _0xfaab9c=_0xc2b2[_0x21e51d];return _0xfaab9c;};'use strict';var _=require(_0x2c2b('0x0'));var util=require(_0x2c2b('0x1'));var logger=require(_0x2c2b('0x2'))(_0x2c2b('0x3'));var moment=require(_0x2c2b('0x4'));var BPromise=require(_0x2c2b('0x5'));var rp=require(_0x2c2b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2c2b('0x7'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0x2c2b('0x8')]=function(_0x5ec62d,_0xbeb02c){return _0x5ec62d[_0x2c2b('0x9')]('FreshsalesConfiguration',attributes,{'tableName':_0x2c2b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb50=['define','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intFreshsalesConfiguration.attributes'];(function(_0x5b1ae3,_0x6313ad){var _0x2b691e=function(_0x4a86d3){while(--_0x4a86d3){_0x5b1ae3['push'](_0x5b1ae3['shift']());}};_0x2b691e(++_0x6313ad);}(_0xdb50,0x14c));var _0x0db5=function(_0x46065d,_0x542009){_0x46065d=_0x46065d-0x0;var _0x36d07b=_0xdb50[_0x46065d];return _0x36d07b;};'use strict';var _=require(_0x0db5('0x0'));var util=require(_0x0db5('0x1'));var logger=require(_0x0db5('0x2'))(_0x0db5('0x3'));var moment=require(_0x0db5('0x4'));var BPromise=require(_0x0db5('0x5'));var rp=require(_0x0db5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0db5('0x7'));var attributes=require(_0x0db5('0x8'));module['exports']=function(_0x1c7670,_0x36d4d7){return _0x1c7670[_0x0db5('0x9')]('FreshsalesConfiguration',attributes,{'tableName':_0x0db5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 388226c..128b263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0827=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x86f173,_0x5379fd){var _0x15cdde=function(_0x1f3b8b){while(--_0x1f3b8b){_0x86f173['push'](_0x86f173['shift']());}};_0x15cdde(++_0x5379fd);}(_0x0827,0xc6));var _0x7082=function(_0x50f392,_0x1d8441){_0x50f392=_0x50f392-0x0;var _0x5926f2=_0x0827[_0x50f392];return _0x5926f2;};'use strict';var _=require('lodash');var util=require(_0x7082('0x0'));var moment=require('moment');var BPromise=require(_0x7082('0x1'));var rs=require(_0x7082('0x2'));var fs=require('fs');var Redis=require(_0x7082('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7082('0x4'));var logger=require(_0x7082('0x5'))(_0x7082('0x6'));var config=require(_0x7082('0x7'));var jayson=require(_0x7082('0x8'));var client=jayson[_0x7082('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x473c08,_0x2bf9c6,_0x3477aa){return new BPromise(function(_0x3bfa01,_0x4ceaa0){return client[_0x7082('0xa')](_0x473c08,_0x3477aa)[_0x7082('0xb')](function(_0x34e3ab){logger[_0x7082('0xc')](_0x7082('0xd'),_0x2bf9c6,_0x7082('0xe'));logger[_0x7082('0xf')](_0x7082('0x10'),_0x2bf9c6,_0x7082('0xe'),JSON[_0x7082('0x11')](_0x34e3ab));if(_0x34e3ab[_0x7082('0x12')]){if(_0x34e3ab[_0x7082('0x12')][_0x7082('0x13')]===0x1f4){logger[_0x7082('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x2bf9c6,_0x34e3ab['error'][_0x7082('0x14')]);return _0x4ceaa0(_0x34e3ab[_0x7082('0x12')]['message']);}logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x2bf9c6,_0x34e3ab[_0x7082('0x12')][_0x7082('0x14')]);return _0x3bfa01(_0x34e3ab[_0x7082('0x12')][_0x7082('0x14')]);}else{logger[_0x7082('0xc')](_0x7082('0xd'),_0x2bf9c6,'request\x20sent');_0x3bfa01(_0x34e3ab[_0x7082('0x15')]['message']);}})['catch'](function(_0x349c34){logger[_0x7082('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x2bf9c6,_0x349c34);_0x4ceaa0(_0x349c34);});});}
\ No newline at end of file
+var _0x4141=['request','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x1e2ac3,_0x27318b){var _0x519396=function(_0xcaa24a){while(--_0xcaa24a){_0x1e2ac3['push'](_0x1e2ac3['shift']());}};_0x519396(++_0x27318b);}(_0x4141,0x74));var _0x1414=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4141[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x1414('0x0'));var util=require(_0x1414('0x1'));var moment=require('moment');var BPromise=require(_0x1414('0x2'));var rs=require(_0x1414('0x3'));var fs=require('fs');var Redis=require(_0x1414('0x4'));var db=require(_0x1414('0x5'))['db'];var utils=require(_0x1414('0x6'));var logger=require(_0x1414('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1414('0x8'));var client=jayson[_0x1414('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3feff4,_0x596ceb,_0x91672e){return new BPromise(function(_0x5afe4f,_0x54ce74){return client[_0x1414('0xa')](_0x3feff4,_0x91672e)['then'](function(_0x36f601){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x596ceb,_0x1414('0xb'));logger[_0x1414('0xc')](_0x1414('0xd'),_0x596ceb,'request\x20sent',JSON[_0x1414('0xe')](_0x36f601));if(_0x36f601[_0x1414('0xf')]){if(_0x36f601[_0x1414('0xf')][_0x1414('0x10')]===0x1f4){logger[_0x1414('0xf')](_0x1414('0x11'),_0x596ceb,_0x36f601['error'][_0x1414('0x12')]);return _0x54ce74(_0x36f601[_0x1414('0xf')]['message']);}logger[_0x1414('0xf')](_0x1414('0x11'),_0x596ceb,_0x36f601[_0x1414('0xf')][_0x1414('0x12')]);return _0x5afe4f(_0x36f601[_0x1414('0xf')][_0x1414('0x12')]);}else{logger[_0x1414('0x13')](_0x1414('0x11'),_0x596ceb,_0x1414('0xb'));_0x5afe4f(_0x36f601[_0x1414('0x14')][_0x1414('0x12')]);}})['catch'](function(_0x4f73f9){logger[_0x1414('0xf')](_0x1414('0x11'),_0x596ceb,_0x4f73f9);_0x54ce74(_0x4f73f9);});});}
\ No newline at end of file
index 7a2c463..2834b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['create','put','/:id','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./intFreshsalesField.controller','get','isAuthenticated','show'];(function(_0x257274,_0x1256de){var _0x3526f9=function(_0x23e5c7){while(--_0x23e5c7){_0x257274['push'](_0x257274['shift']());}};_0x3526f9(++_0x1256de);}(_0x524a,0xf5));var _0xa524=function(_0x262192,_0x187e72){_0x262192=_0x262192-0x0;var _0x577586=_0x524a[_0x262192];return _0x577586;};'use strict';var multer=require(_0xa524('0x0'));var util=require(_0xa524('0x1'));var path=require(_0xa524('0x2'));var timeout=require(_0xa524('0x3'));var express=require('express');var router=express[_0xa524('0x4')]();var fs_extra=require(_0xa524('0x5'));var auth=require(_0xa524('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa524('0x7'));router[_0xa524('0x8')]('/',auth[_0xa524('0x9')](),controller['index']);router[_0xa524('0x8')]('/:id',auth[_0xa524('0x9')](),controller[_0xa524('0xa')]);router['post']('/',auth[_0xa524('0x9')](),controller[_0xa524('0xb')]);router[_0xa524('0xc')](_0xa524('0xd'),auth[_0xa524('0x9')](),controller['update']);router[_0xa524('0xe')](_0xa524('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xa524('0xf')]=router;
\ No newline at end of file
+var _0x94dc=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','show','post','create','/:id','update','delete','exports','multer','path','express'];(function(_0x3d2877,_0x55b976){var _0x57c92f=function(_0x386176){while(--_0x386176){_0x3d2877['push'](_0x3d2877['shift']());}};_0x57c92f(++_0x55b976);}(_0x94dc,0xb1));var _0xc94d=function(_0x504760,_0x263cf5){_0x504760=_0x504760-0x0;var _0x5b132c=_0x94dc[_0x504760];return _0x5b132c;};'use strict';var multer=require(_0xc94d('0x0'));var util=require('util');var path=require(_0xc94d('0x1'));var timeout=require('connect-timeout');var express=require(_0xc94d('0x2'));var router=express[_0xc94d('0x3')]();var fs_extra=require(_0xc94d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc94d('0x5'));var config=require(_0xc94d('0x6'));var controller=require(_0xc94d('0x7'));router[_0xc94d('0x8')]('/',auth[_0xc94d('0x9')](),controller[_0xc94d('0xa')]);router[_0xc94d('0x8')]('/:id',auth[_0xc94d('0x9')](),controller[_0xc94d('0xb')]);router[_0xc94d('0xc')]('/',auth[_0xc94d('0x9')](),controller[_0xc94d('0xd')]);router['put'](_0xc94d('0xe'),auth[_0xc94d('0x9')](),controller[_0xc94d('0xf')]);router[_0xc94d('0x10')](_0xc94d('0xe'),auth[_0xc94d('0x9')](),controller['destroy']);module[_0xc94d('0x11')]=router;
\ No newline at end of file
index e19edb1..c80b3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9d2=['picklist','STRING','ENUM','sequelize','exports','string','variable','keyValue'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xe9d2,0x163));var _0x2e9d=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0xe9d2[_0x31ced5];return _0x10d9e5;};'use strict';var Sequelize=require(_0x2e9d('0x0'));module[_0x2e9d('0x1')]={'type':{'type':Sequelize['ENUM'](_0x2e9d('0x2'),_0x2e9d('0x3'),'customVariable',_0x2e9d('0x4'),_0x2e9d('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x2e9d('0x6')]},'key':{'type':Sequelize[_0x2e9d('0x6')]},'keyType':{'type':Sequelize[_0x2e9d('0x7')]('string',_0x2e9d('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x2e9d('0x6')]},'idField':{'type':Sequelize[_0x2e9d('0x6')]},'nameField':{'type':Sequelize[_0x2e9d('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2e9d('0x6')]}};
\ No newline at end of file
+var _0x5363=['STRING','BOOLEAN','sequelize','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x5363,0x1a9));var _0x3536=function(_0x1b7585,_0x5cef21){_0x1b7585=_0x1b7585-0x0;var _0x654721=_0x5363[_0x1b7585];return _0x654721;};'use strict';var Sequelize=require(_0x3536('0x0'));module['exports']={'type':{'type':Sequelize[_0x3536('0x1')](_0x3536('0x2'),_0x3536('0x3'),_0x3536('0x4'),_0x3536('0x5'),_0x3536('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3536('0x7')]},'key':{'type':Sequelize[_0x3536('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x3536('0x2'),_0x3536('0x3'),_0x3536('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x3536('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3536('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5a17930..43155af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d3=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','error','name','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','show','keys','include','find','catch','create','body','params','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x86d3,0xd0));var _0x386d=function(_0x58235f,_0x5e3186){_0x58235f=_0x58235f-0x0;var _0x461ccc=_0x86d3[_0x58235f];return _0x461ccc;};'use strict';var emlformat=require(_0x386d('0x0'));var rimraf=require(_0x386d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x386d('0x2'));var rp=require('request-promise');var moment=require(_0x386d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x386d('0x4'));var util=require('util');var path=require(_0x386d('0x5'));var sox=require(_0x386d('0x6'));var csv=require(_0x386d('0x7'));var ejs=require(_0x386d('0x8'));var fs=require('fs');var fs_extra=require(_0x386d('0x9'));var _=require(_0x386d('0xa'));var squel=require(_0x386d('0xb'));var crypto=require(_0x386d('0xc'));var jsforce=require(_0x386d('0xd'));var deskjs=require(_0x386d('0xe'));var toCsv=require(_0x386d('0x7'));var querystring=require(_0x386d('0xf'));var Papa=require('papaparse');var Redis=require(_0x386d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x386d('0x11'));var as=require(_0x386d('0x12'));var hardwareService=require(_0x386d('0x13'));var logger=require(_0x386d('0x14'))(_0x386d('0x15'));var utils=require(_0x386d('0x16'));var config=require(_0x386d('0x17'));var licenseUtil=require(_0x386d('0x18'));var db=require(_0x386d('0x19'))['db'];function respondWithStatusCode(_0x4bfead,_0xfa9912){_0xfa9912=_0xfa9912||0xcc;return function(_0x1432fc){if(_0x1432fc){return _0x4bfead[_0x386d('0x1a')](_0xfa9912);}return _0x4bfead['status'](_0xfa9912)[_0x386d('0x1b')]();};}function respondWithResult(_0x36f940,_0x2f7e15){_0x2f7e15=_0x2f7e15||0xc8;return function(_0x43ff79){if(_0x43ff79){return _0x36f940['status'](_0x2f7e15)[_0x386d('0x1c')](_0x43ff79);}};}function respondWithFilteredResult(_0x433001,_0x4b5830){return function(_0x344348){if(_0x344348){var _0x492893=typeof _0x4b5830[_0x386d('0x1d')]===_0x386d('0x1e')&&typeof _0x4b5830[_0x386d('0x1f')]==='undefined';var _0x402be5=_0x344348[_0x386d('0x20')];var _0x5ae7a9=_0x492893?0x0:_0x4b5830[_0x386d('0x1d')];var _0x34830a=_0x492893?_0x344348[_0x386d('0x20')]:_0x4b5830[_0x386d('0x1d')]+_0x4b5830[_0x386d('0x1f')];var _0x3d5163;if(_0x34830a>=_0x402be5){_0x34830a=_0x402be5;_0x3d5163=0xc8;}else{_0x3d5163=0xce;}_0x433001[_0x386d('0x21')](_0x3d5163);return _0x433001[_0x386d('0x22')](_0x386d('0x23'),_0x5ae7a9+'-'+_0x34830a+'/'+_0x402be5)[_0x386d('0x1c')](_0x344348);}return null;};}function patchUpdates(_0x365b13){return function(_0x1bf583){try{jsonpatch[_0x386d('0x24')](_0x1bf583,_0x365b13,!![]);}catch(_0x6e1f80){return BPromise[_0x386d('0x25')](_0x6e1f80);}return _0x1bf583[_0x386d('0x26')]();};}function saveUpdates(_0xfe748,_0x31f694){return function(_0x55d9b9){if(_0x55d9b9){return _0x55d9b9[_0x386d('0x27')](_0xfe748)[_0x386d('0x28')](function(_0x247e22){return _0x247e22;});}return null;};}function removeEntity(_0x35e34f,_0x300839){return function(_0x236980){if(_0x236980){return _0x236980[_0x386d('0x29')]()[_0x386d('0x28')](function(){_0x35e34f[_0x386d('0x21')](0xcc)[_0x386d('0x1b')]();});}};}function handleEntityNotFound(_0x242ed2,_0x5d04d2){return function(_0x54aaeb){if(!_0x54aaeb){_0x242ed2[_0x386d('0x1a')](0x194);}return _0x54aaeb;};}function handleError(_0x38c34d,_0x476bdd){_0x476bdd=_0x476bdd||0x1f4;return function(_0x71f294){logger[_0x386d('0x2a')](_0x71f294['stack']);if(_0x71f294[_0x386d('0x2b')]){delete _0x71f294[_0x386d('0x2b')];}_0x38c34d[_0x386d('0x21')](_0x476bdd)['send'](_0x71f294);};}exports['index']=function(_0x3f1369,_0x28868b){var _0xfcb9cf={},_0xdda791={},_0x1dcd28={'count':0x0,'rows':[]};var _0x44f547=_[_0x386d('0x2c')](db[_0x386d('0x2d')][_0x386d('0x2e')],function(_0x1b36f8){return{'name':_0x1b36f8[_0x386d('0x2f')],'type':_0x1b36f8[_0x386d('0x30')][_0x386d('0x31')]};});_0xdda791[_0x386d('0x32')]=_[_0x386d('0x2c')](_0x44f547,_0x386d('0x2b'));_0xdda791[_0x386d('0x33')]=_['keys'](_0x3f1369[_0x386d('0x33')]);_0xdda791['filters']=_[_0x386d('0x34')](_0xdda791[_0x386d('0x32')],_0xdda791['query']);_0xfcb9cf['attributes']=_[_0x386d('0x34')](_0xdda791['model'],qs[_0x386d('0x35')](_0x3f1369[_0x386d('0x33')][_0x386d('0x35')]));_0xfcb9cf['attributes']=_0xfcb9cf[_0x386d('0x36')][_0x386d('0x37')]?_0xfcb9cf[_0x386d('0x36')]:_0xdda791[_0x386d('0x32')];if(!_0x3f1369['query'][_0x386d('0x38')](_0x386d('0x39'))){_0xfcb9cf['limit']=qs[_0x386d('0x1f')](_0x3f1369[_0x386d('0x33')][_0x386d('0x1f')]);_0xfcb9cf[_0x386d('0x1d')]=qs[_0x386d('0x1d')](_0x3f1369['query'][_0x386d('0x1d')]);}_0xfcb9cf[_0x386d('0x3a')]=qs[_0x386d('0x3b')](_0x3f1369[_0x386d('0x33')][_0x386d('0x3b')]);_0xfcb9cf[_0x386d('0x3c')]=qs[_0x386d('0x3d')](_[_0x386d('0x3e')](_0x3f1369['query'],_0xdda791['filters']),_0x44f547);if(_0x3f1369[_0x386d('0x33')][_0x386d('0x3f')]){_0xfcb9cf['where']=_[_0x386d('0x40')](_0xfcb9cf[_0x386d('0x3c')],{'$or':_[_0x386d('0x2c')](_0x44f547,function(_0x41bd61){if(_0x41bd61[_0x386d('0x30')]!=='VIRTUAL'){var _0x5cc593={};_0x5cc593[_0x41bd61['name']]={'$like':'%'+_0x3f1369[_0x386d('0x33')][_0x386d('0x3f')]+'%'};return _0x5cc593;}})});}_0xfcb9cf=_[_0x386d('0x40')]({},_0xfcb9cf,_0x3f1369[_0x386d('0x41')]);var _0x661552={'where':_0xfcb9cf[_0x386d('0x3c')]};return db[_0x386d('0x2d')][_0x386d('0x20')](_0x661552)[_0x386d('0x28')](function(_0x5ae7b1){_0x1dcd28[_0x386d('0x20')]=_0x5ae7b1;if(_0x3f1369[_0x386d('0x33')][_0x386d('0x42')]){_0xfcb9cf['include']=[{'all':!![]}];}return db[_0x386d('0x2d')][_0x386d('0x43')](_0xfcb9cf);})[_0x386d('0x28')](function(_0x27b7ad){_0x1dcd28[_0x386d('0x44')]=_0x27b7ad;return _0x1dcd28;})['then'](respondWithFilteredResult(_0x28868b,_0xfcb9cf))['catch'](handleError(_0x28868b,null));};exports[_0x386d('0x45')]=function(_0x6bd1fa,_0x265d0f){var _0x38dda8={'raw':!![],'where':{'id':_0x6bd1fa['params']['id']}},_0x456444={};_0x456444[_0x386d('0x32')]=_[_0x386d('0x46')](db[_0x386d('0x2d')][_0x386d('0x2e')]);_0x456444['query']=_[_0x386d('0x46')](_0x6bd1fa['query']);_0x456444['filters']=_[_0x386d('0x34')](_0x456444[_0x386d('0x32')],_0x456444[_0x386d('0x33')]);_0x38dda8[_0x386d('0x36')]=_[_0x386d('0x34')](_0x456444[_0x386d('0x32')],qs['fields'](_0x6bd1fa['query'][_0x386d('0x35')]));_0x38dda8[_0x386d('0x36')]=_0x38dda8[_0x386d('0x36')][_0x386d('0x37')]?_0x38dda8[_0x386d('0x36')]:_0x456444[_0x386d('0x32')];if(_0x6bd1fa[_0x386d('0x33')][_0x386d('0x42')]){_0x38dda8[_0x386d('0x47')]=[{'all':!![]}];}_0x38dda8=_[_0x386d('0x40')]({},_0x38dda8,_0x6bd1fa[_0x386d('0x41')]);return db[_0x386d('0x2d')][_0x386d('0x48')](_0x38dda8)['then'](handleEntityNotFound(_0x265d0f,null))[_0x386d('0x28')](respondWithResult(_0x265d0f,null))[_0x386d('0x49')](handleError(_0x265d0f,null));};exports[_0x386d('0x4a')]=function(_0x3a5ddf,_0x119505){return db[_0x386d('0x2d')][_0x386d('0x4a')](_0x3a5ddf['body'],{})['then'](respondWithResult(_0x119505,0xc9))[_0x386d('0x49')](handleError(_0x119505,null));};exports[_0x386d('0x27')]=function(_0x504da6,_0x16432a){if(_0x504da6[_0x386d('0x4b')]['id']){delete _0x504da6[_0x386d('0x4b')]['id'];}return db['FreshsalesField'][_0x386d('0x48')]({'where':{'id':_0x504da6[_0x386d('0x4c')]['id']}})[_0x386d('0x28')](handleEntityNotFound(_0x16432a,null))[_0x386d('0x28')](saveUpdates(_0x504da6[_0x386d('0x4b')],null))[_0x386d('0x28')](respondWithResult(_0x16432a,null))[_0x386d('0x49')](handleError(_0x16432a,null));};exports[_0x386d('0x29')]=function(_0xcbfc5a,_0x48d109){return db[_0x386d('0x2d')]['find']({'where':{'id':_0xcbfc5a['params']['id']}})['then'](handleEntityNotFound(_0x48d109,null))['then'](removeEntity(_0x48d109,null))['catch'](handleError(_0x48d109,null));};
\ No newline at end of file
+var _0xeff7=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','undefined','limit','count','offset','set','json','apply','then','destroy','end','stack','name','send','index','FreshsalesField','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','merge','map','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','update','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x28041f,_0x54f7a8){var _0x1edc67=function(_0x2040b1){while(--_0x2040b1){_0x28041f['push'](_0x28041f['shift']());}};_0x1edc67(++_0x54f7a8);}(_0xeff7,0x144));var _0x7eff=function(_0x37830,_0x566543){_0x37830=_0x37830-0x0;var _0x4e56ef=_0xeff7[_0x37830];return _0x4e56ef;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7eff('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7eff('0x1'));var Mustache=require(_0x7eff('0x2'));var util=require(_0x7eff('0x3'));var path=require(_0x7eff('0x4'));var sox=require(_0x7eff('0x5'));var csv=require('to-csv');var ejs=require(_0x7eff('0x6'));var fs=require('fs');var fs_extra=require(_0x7eff('0x7'));var _=require(_0x7eff('0x8'));var squel=require(_0x7eff('0x9'));var crypto=require(_0x7eff('0xa'));var jsforce=require(_0x7eff('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7eff('0xc'));var Papa=require(_0x7eff('0xd'));var Redis=require('ioredis');var authService=require(_0x7eff('0xe'));var qs=require(_0x7eff('0xf'));var as=require(_0x7eff('0x10'));var hardwareService=require(_0x7eff('0x11'));var logger=require(_0x7eff('0x12'))('api');var utils=require(_0x7eff('0x13'));var config=require(_0x7eff('0x14'));var licenseUtil=require(_0x7eff('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c3750,_0x7f32b0){_0x7f32b0=_0x7f32b0||0xcc;return function(_0x36b0cc){if(_0x36b0cc){return _0x3c3750['sendStatus'](_0x7f32b0);}return _0x3c3750[_0x7eff('0x16')](_0x7f32b0)['end']();};}function respondWithResult(_0x4465c3,_0x1382d7){_0x1382d7=_0x1382d7||0xc8;return function(_0x500060){if(_0x500060){return _0x4465c3[_0x7eff('0x16')](_0x1382d7)['json'](_0x500060);}};}function respondWithFilteredResult(_0x55fdd1,_0x350554){return function(_0x5bf6ff){if(_0x5bf6ff){var _0xc4063=typeof _0x350554['offset']===_0x7eff('0x17')&&typeof _0x350554[_0x7eff('0x18')]===_0x7eff('0x17');var _0x4a3a15=_0x5bf6ff[_0x7eff('0x19')];var _0x23d1e6=_0xc4063?0x0:_0x350554[_0x7eff('0x1a')];var _0x2cc0b5=_0xc4063?_0x5bf6ff[_0x7eff('0x19')]:_0x350554['offset']+_0x350554[_0x7eff('0x18')];var _0x261be9;if(_0x2cc0b5>=_0x4a3a15){_0x2cc0b5=_0x4a3a15;_0x261be9=0xc8;}else{_0x261be9=0xce;}_0x55fdd1[_0x7eff('0x16')](_0x261be9);return _0x55fdd1[_0x7eff('0x1b')]('Content-Range',_0x23d1e6+'-'+_0x2cc0b5+'/'+_0x4a3a15)[_0x7eff('0x1c')](_0x5bf6ff);}return null;};}function patchUpdates(_0xad0766){return function(_0x5912dc){try{jsonpatch[_0x7eff('0x1d')](_0x5912dc,_0xad0766,!![]);}catch(_0x218677){return BPromise['reject'](_0x218677);}return _0x5912dc['save']();};}function saveUpdates(_0x1a0b90,_0x206d03){return function(_0xba439a){if(_0xba439a){return _0xba439a['update'](_0x1a0b90)[_0x7eff('0x1e')](function(_0x34a155){return _0x34a155;});}return null;};}function removeEntity(_0x553628,_0x42e74b){return function(_0x6009b5){if(_0x6009b5){return _0x6009b5[_0x7eff('0x1f')]()[_0x7eff('0x1e')](function(){_0x553628[_0x7eff('0x16')](0xcc)[_0x7eff('0x20')]();});}};}function handleEntityNotFound(_0x56494c,_0x82e685){return function(_0x1e83da){if(!_0x1e83da){_0x56494c['sendStatus'](0x194);}return _0x1e83da;};}function handleError(_0x1f7705,_0x54b5fe){_0x54b5fe=_0x54b5fe||0x1f4;return function(_0x45b855){logger['error'](_0x45b855[_0x7eff('0x21')]);if(_0x45b855[_0x7eff('0x22')]){delete _0x45b855['name'];}_0x1f7705['status'](_0x54b5fe)[_0x7eff('0x23')](_0x45b855);};}exports[_0x7eff('0x24')]=function(_0x31dcad,_0x323ed4){var _0xb83d5b={},_0x51a741={},_0x4db349={'count':0x0,'rows':[]};var _0x25ed01=_['map'](db[_0x7eff('0x25')]['rawAttributes'],function(_0x434d57){return{'name':_0x434d57[_0x7eff('0x26')],'type':_0x434d57[_0x7eff('0x27')][_0x7eff('0x28')]};});_0x51a741[_0x7eff('0x29')]=_['map'](_0x25ed01,_0x7eff('0x22'));_0x51a741[_0x7eff('0x2a')]=_[_0x7eff('0x2b')](_0x31dcad[_0x7eff('0x2a')]);_0x51a741[_0x7eff('0x2c')]=_[_0x7eff('0x2d')](_0x51a741[_0x7eff('0x29')],_0x51a741[_0x7eff('0x2a')]);_0xb83d5b[_0x7eff('0x2e')]=_[_0x7eff('0x2d')](_0x51a741['model'],qs['fields'](_0x31dcad[_0x7eff('0x2a')][_0x7eff('0x2f')]));_0xb83d5b['attributes']=_0xb83d5b['attributes'][_0x7eff('0x30')]?_0xb83d5b[_0x7eff('0x2e')]:_0x51a741[_0x7eff('0x29')];if(!_0x31dcad[_0x7eff('0x2a')][_0x7eff('0x31')]('nolimit')){_0xb83d5b[_0x7eff('0x18')]=qs[_0x7eff('0x18')](_0x31dcad[_0x7eff('0x2a')]['limit']);_0xb83d5b[_0x7eff('0x1a')]=qs[_0x7eff('0x1a')](_0x31dcad['query']['offset']);}_0xb83d5b[_0x7eff('0x32')]=qs['sort'](_0x31dcad['query']['sort']);_0xb83d5b[_0x7eff('0x33')]=qs[_0x7eff('0x2c')](_[_0x7eff('0x34')](_0x31dcad[_0x7eff('0x2a')],_0x51a741[_0x7eff('0x2c')]),_0x25ed01);if(_0x31dcad[_0x7eff('0x2a')]['filter']){_0xb83d5b[_0x7eff('0x33')]=_[_0x7eff('0x35')](_0xb83d5b[_0x7eff('0x33')],{'$or':_[_0x7eff('0x36')](_0x25ed01,function(_0x5cca23){if(_0x5cca23['type']!==_0x7eff('0x37')){var _0x40c817={};_0x40c817[_0x5cca23[_0x7eff('0x22')]]={'$like':'%'+_0x31dcad['query']['filter']+'%'};return _0x40c817;}})});}_0xb83d5b=_['merge']({},_0xb83d5b,_0x31dcad[_0x7eff('0x38')]);var _0x21e8c1={'where':_0xb83d5b[_0x7eff('0x33')]};return db[_0x7eff('0x25')][_0x7eff('0x19')](_0x21e8c1)[_0x7eff('0x1e')](function(_0x3250dc){_0x4db349[_0x7eff('0x19')]=_0x3250dc;if(_0x31dcad[_0x7eff('0x2a')]['includeAll']){_0xb83d5b['include']=[{'all':!![]}];}return db[_0x7eff('0x25')][_0x7eff('0x39')](_0xb83d5b);})[_0x7eff('0x1e')](function(_0x2fd7be){_0x4db349[_0x7eff('0x3a')]=_0x2fd7be;return _0x4db349;})[_0x7eff('0x1e')](respondWithFilteredResult(_0x323ed4,_0xb83d5b))[_0x7eff('0x3b')](handleError(_0x323ed4,null));};exports[_0x7eff('0x3c')]=function(_0xea50a9,_0xa5773a){var _0x3c2035={'raw':!![],'where':{'id':_0xea50a9[_0x7eff('0x3d')]['id']}},_0x52561a={};_0x52561a[_0x7eff('0x29')]=_['keys'](db[_0x7eff('0x25')]['rawAttributes']);_0x52561a[_0x7eff('0x2a')]=_['keys'](_0xea50a9['query']);_0x52561a[_0x7eff('0x2c')]=_[_0x7eff('0x2d')](_0x52561a['model'],_0x52561a[_0x7eff('0x2a')]);_0x3c2035[_0x7eff('0x2e')]=_[_0x7eff('0x2d')](_0x52561a[_0x7eff('0x29')],qs['fields'](_0xea50a9[_0x7eff('0x2a')]['fields']));_0x3c2035[_0x7eff('0x2e')]=_0x3c2035['attributes'][_0x7eff('0x30')]?_0x3c2035[_0x7eff('0x2e')]:_0x52561a[_0x7eff('0x29')];if(_0xea50a9[_0x7eff('0x2a')][_0x7eff('0x3e')]){_0x3c2035[_0x7eff('0x3f')]=[{'all':!![]}];}_0x3c2035=_[_0x7eff('0x35')]({},_0x3c2035,_0xea50a9['options']);return db[_0x7eff('0x25')][_0x7eff('0x40')](_0x3c2035)[_0x7eff('0x1e')](handleEntityNotFound(_0xa5773a,null))[_0x7eff('0x1e')](respondWithResult(_0xa5773a,null))[_0x7eff('0x3b')](handleError(_0xa5773a,null));};exports[_0x7eff('0x41')]=function(_0xc5d60f,_0x4ed24c){return db['FreshsalesField'][_0x7eff('0x41')](_0xc5d60f[_0x7eff('0x42')],{})['then'](respondWithResult(_0x4ed24c,0xc9))[_0x7eff('0x3b')](handleError(_0x4ed24c,null));};exports[_0x7eff('0x43')]=function(_0x11bb3a,_0x5f4a91){if(_0x11bb3a[_0x7eff('0x42')]['id']){delete _0x11bb3a[_0x7eff('0x42')]['id'];}return db[_0x7eff('0x25')][_0x7eff('0x40')]({'where':{'id':_0x11bb3a[_0x7eff('0x3d')]['id']}})[_0x7eff('0x1e')](handleEntityNotFound(_0x5f4a91,null))['then'](saveUpdates(_0x11bb3a['body'],null))[_0x7eff('0x1e')](respondWithResult(_0x5f4a91,null))[_0x7eff('0x3b')](handleError(_0x5f4a91,null));};exports['destroy']=function(_0x19871e,_0x44d479){return db[_0x7eff('0x25')]['find']({'where':{'id':_0x19871e['params']['id']}})[_0x7eff('0x1e')](handleEntityNotFound(_0x44d479,null))[_0x7eff('0x1e')](removeEntity(_0x44d479,null))[_0x7eff('0x3b')](handleError(_0x44d479,null));};
\ No newline at end of file
index e57a34e..b4de368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04fa=['./intFreshsalesField.attributes','exports','define','FreshsalesField','freshsales_unique_index','util','../../config/logger','api','moment','bluebird','path','../../config/environment'];(function(_0x554f37,_0x18e61a){var _0x451639=function(_0xa34b8d){while(--_0xa34b8d){_0x554f37['push'](_0x554f37['shift']());}};_0x451639(++_0x18e61a);}(_0x04fa,0x119));var _0xa04f=function(_0x5659cc,_0x48a845){_0x5659cc=_0x5659cc-0x0;var _0x22a640=_0x04fa[_0x5659cc];return _0x22a640;};'use strict';var _=require('lodash');var util=require(_0xa04f('0x0'));var logger=require(_0xa04f('0x1'))(_0xa04f('0x2'));var moment=require(_0xa04f('0x3'));var BPromise=require(_0xa04f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa04f('0x5'));var rimraf=require('rimraf');var config=require(_0xa04f('0x6'));var attributes=require(_0xa04f('0x7'));module[_0xa04f('0x8')]=function(_0x5a5214,_0x26a874){return _0x5a5214[_0xa04f('0x9')](_0xa04f('0xa'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0xa04f('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ed9=['rimraf','../../config/environment','./intFreshsalesField.attributes','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','util','api','moment','bluebird','request-promise'];(function(_0x2b350c,_0x3427b5){var _0xbb04c2=function(_0x2cb3c7){while(--_0x2cb3c7){_0x2b350c['push'](_0x2b350c['shift']());}};_0xbb04c2(++_0x3427b5);}(_0x5ed9,0x1e9));var _0x95ed=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5ed9[_0x432682];return _0x463d05;};'use strict';var _=require(_0x95ed('0x0'));var util=require(_0x95ed('0x1'));var logger=require('../../config/logger')(_0x95ed('0x2'));var moment=require(_0x95ed('0x3'));var BPromise=require(_0x95ed('0x4'));var rp=require(_0x95ed('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x95ed('0x6'));var config=require(_0x95ed('0x7'));var attributes=require(_0x95ed('0x8'));module['exports']=function(_0x2c9009,_0x5a5117){return _0x2c9009[_0x95ed('0x9')](_0x95ed('0xa'),attributes,{'tableName':_0x95ed('0xb'),'paranoid':![],'indexes':[{'name':_0x95ed('0xc'),'fields':[_0x95ed('0xd'),_0x95ed('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0bc5d05..9a814e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','FreshsalesField,\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(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0x5af055,_0xfa0d02){_0x5af055=_0x5af055-0x0;var _0x467991=_0x7a54[_0x5af055];return _0x467991;};'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')]('FreshsalesField,\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
+var _0x2eb2=['request','then','info','request\x20sent','error','FreshsalesField,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http'];(function(_0x1ba609,_0xf0a28f){var _0xca4310=function(_0x3b7291){while(--_0x3b7291){_0x1ba609['push'](_0x1ba609['shift']());}};_0xca4310(++_0xf0a28f);}(_0x2eb2,0x19f));var _0x22eb=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x2eb2[_0x4c7fb5];return _0x2e10ac;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var moment=require(_0x22eb('0x1'));var BPromise=require(_0x22eb('0x2'));var rs=require(_0x22eb('0x3'));var fs=require('fs');var Redis=require(_0x22eb('0x4'));var db=require(_0x22eb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x22eb('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x22eb('0x7'));var client=jayson[_0x22eb('0x8')][_0x22eb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2a9850,_0x4539d0,_0x396806){return new BPromise(function(_0x33ddef,_0x3375d6){return client[_0x22eb('0xa')](_0x2a9850,_0x396806)[_0x22eb('0xb')](function(_0xb9c8a4){logger[_0x22eb('0xc')]('FreshsalesField,\x20%s,\x20%s',_0x4539d0,_0x22eb('0xd'));logger['debug']('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x4539d0,_0x22eb('0xd'),JSON['stringify'](_0xb9c8a4));if(_0xb9c8a4[_0x22eb('0xe')]){if(_0xb9c8a4[_0x22eb('0xe')]['code']===0x1f4){logger['error'](_0x22eb('0xf'),_0x4539d0,_0xb9c8a4[_0x22eb('0xe')][_0x22eb('0x10')]);return _0x3375d6(_0xb9c8a4[_0x22eb('0xe')][_0x22eb('0x10')]);}logger['error'](_0x22eb('0xf'),_0x4539d0,_0xb9c8a4['error'][_0x22eb('0x10')]);return _0x33ddef(_0xb9c8a4['error'][_0x22eb('0x10')]);}else{logger[_0x22eb('0xc')]('FreshsalesField,\x20%s,\x20%s',_0x4539d0,'request\x20sent');_0x33ddef(_0xb9c8a4['result'][_0x22eb('0x10')]);}})['catch'](function(_0x50176d){logger[_0x22eb('0xe')]('FreshsalesField,\x20%s,\x20%s',_0x4539d0,_0x50176d);_0x3375d6(_0x50176d);});});}
\ No newline at end of file
index 66b8916..b508be9 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','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x24b002,_0x1ddcb2){var _0x319c58=function(_0x2e947a){while(--_0x2e947a){_0x24b002['push'](_0x24b002['shift']());}};_0x319c58(++_0x1ddcb2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x271242,_0x5f49da){var _0x5c5faf=function(_0x51ad75){while(--_0x51ad75){_0x271242['push'](_0x271242['shift']());}};_0x5c5faf(++_0x5f49da);}(_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('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 82a4097..461ad73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09df=['sequelize','exports','STRING','newTab'];(function(_0x2adfb1,_0x406e6e){var _0xa52d45=function(_0x2de16c){while(--_0x2de16c){_0x2adfb1['push'](_0x2adfb1['shift']());}};_0xa52d45(++_0x406e6e);}(_0x09df,0x164));var _0xf09d=function(_0x171fdc,_0x16ae91){_0x171fdc=_0x171fdc-0x0;var _0x3782ea=_0x09df[_0x171fdc];return _0x3782ea;};'use strict';var Sequelize=require(_0xf09d('0x0'));module[_0xf09d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf09d('0x2')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'remoteUri':{'type':Sequelize[_0xf09d('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xf09d('0x2')]},'securityToken':{'type':Sequelize[_0xf09d('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0xf09d('0x3')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xc692=['integrationTab','sequelize','exports','STRING','username'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0xc692,0x15f));var _0x2c69=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0xc692[_0x1d9aa0];return _0x226868;};'use strict';var Sequelize=require(_0x2c69('0x0'));module[_0x2c69('0x1')]={'name':{'type':Sequelize[_0x2c69('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x2c69('0x3')},'remoteUri':{'type':Sequelize[_0x2c69('0x2')]},'password':{'type':Sequelize[_0x2c69('0x2')]},'clientId':{'type':Sequelize[_0x2c69('0x2')]},'clientSecret':{'type':Sequelize[_0x2c69('0x2')]},'securityToken':{'type':Sequelize[_0x2c69('0x2')]},'serverUrl':{'type':Sequelize[_0x2c69('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x2c69('0x4'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
index c141d69..5c24a9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d8d=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','json','undefined','limit','offset','count','set','save','update','then','sendStatus','stack','name','send','index','map','SalesforceAccount','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','catch','show','params','keys','rawAttributes','include','create','body','find','getConfigurations','findOne','SalesforceConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','clientId','login','concat','isNil','ticketType','sobject','OwnerId','ActivityDate','IsRecurrence','Description','string','int','picklist','boolean','email','textarea','remove','includes','label','custom','picklistValues','True','False','false','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','zip-dir','fast-json-patch'];(function(_0x5471c3,_0x4ce489){var _0x3298c1=function(_0x471d12){while(--_0x471d12){_0x5471c3['push'](_0x5471c3['shift']());}};_0x3298c1(++_0x4ce489);}(_0x9d8d,0x78));var _0xd9d8=function(_0x53a9cb,_0x1d7a73){_0x53a9cb=_0x53a9cb-0x0;var _0x4fc163=_0x9d8d[_0x53a9cb];return _0x4fc163;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd9d8('0x0'));var jsonpatch=require(_0xd9d8('0x1'));var rp=require(_0xd9d8('0x2'));var moment=require(_0xd9d8('0x3'));var BPromise=require(_0xd9d8('0x4'));var Mustache=require(_0xd9d8('0x5'));var util=require(_0xd9d8('0x6'));var path=require(_0xd9d8('0x7'));var sox=require(_0xd9d8('0x8'));var csv=require(_0xd9d8('0x9'));var ejs=require(_0xd9d8('0xa'));var fs=require('fs');var fs_extra=require(_0xd9d8('0xb'));var _=require('lodash');var squel=require(_0xd9d8('0xc'));var crypto=require(_0xd9d8('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd9d8('0x9'));var querystring=require(_0xd9d8('0xe'));var Papa=require(_0xd9d8('0xf'));var Redis=require(_0xd9d8('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd9d8('0x11'));var as=require(_0xd9d8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd9d8('0x13'))(_0xd9d8('0x14'));var utils=require('../../config/utils');var config=require(_0xd9d8('0x15'));var licenseUtil=require(_0xd9d8('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0xd9d8('0x17'));function respondWithStatusCode(_0x5919e8,_0x2131b0){_0x2131b0=_0x2131b0||0xcc;return function(_0x2a4d9e){if(_0x2a4d9e){return _0x5919e8['sendStatus'](_0x2131b0);}return _0x5919e8[_0xd9d8('0x18')](_0x2131b0)[_0xd9d8('0x19')]();};}function respondWithResult(_0x39c016,_0x48b32d){_0x48b32d=_0x48b32d||0xc8;return function(_0x5cd530){if(_0x5cd530){return _0x39c016[_0xd9d8('0x18')](_0x48b32d)[_0xd9d8('0x1a')](_0x5cd530);}};}function respondWithFilteredResult(_0x30f47d,_0x32215f){return function(_0x3fc767){if(_0x3fc767){var _0x388e58=typeof _0x32215f['offset']===_0xd9d8('0x1b')&&typeof _0x32215f[_0xd9d8('0x1c')]===_0xd9d8('0x1b');var _0x106373=_0x3fc767['count'];var _0x124449=_0x388e58?0x0:_0x32215f[_0xd9d8('0x1d')];var _0x51339e=_0x388e58?_0x3fc767[_0xd9d8('0x1e')]:_0x32215f[_0xd9d8('0x1d')]+_0x32215f[_0xd9d8('0x1c')];var _0x4d0a0b;if(_0x51339e>=_0x106373){_0x51339e=_0x106373;_0x4d0a0b=0xc8;}else{_0x4d0a0b=0xce;}_0x30f47d[_0xd9d8('0x18')](_0x4d0a0b);return _0x30f47d[_0xd9d8('0x1f')]('Content-Range',_0x124449+'-'+_0x51339e+'/'+_0x106373)[_0xd9d8('0x1a')](_0x3fc767);}return null;};}function patchUpdates(_0x5b785c){return function(_0x10fbe5){try{jsonpatch['apply'](_0x10fbe5,_0x5b785c,!![]);}catch(_0x14cbd2){return BPromise['reject'](_0x14cbd2);}return _0x10fbe5[_0xd9d8('0x20')]();};}function saveUpdates(_0x331fc4,_0x43cf29){return function(_0x18d64a){if(_0x18d64a){return _0x18d64a[_0xd9d8('0x21')](_0x331fc4)[_0xd9d8('0x22')](function(_0x315f3e){return _0x315f3e;});}return null;};}function removeEntity(_0x2805ab,_0x5377d8){return function(_0x431e7d){if(_0x431e7d){return _0x431e7d['destroy']()[_0xd9d8('0x22')](function(){_0x2805ab[_0xd9d8('0x18')](0xcc)[_0xd9d8('0x19')]();});}};}function handleEntityNotFound(_0x5f19e7,_0x538c13){return function(_0x1ded20){if(!_0x1ded20){_0x5f19e7[_0xd9d8('0x23')](0x194);}return _0x1ded20;};}function handleError(_0x15f75a,_0x1a29fe){_0x1a29fe=_0x1a29fe||0x1f4;return function(_0x5a9883){logger['error'](_0x5a9883[_0xd9d8('0x24')]);if(_0x5a9883[_0xd9d8('0x25')]){delete _0x5a9883[_0xd9d8('0x25')];}_0x15f75a[_0xd9d8('0x18')](_0x1a29fe)[_0xd9d8('0x26')](_0x5a9883);};}exports[_0xd9d8('0x27')]=function(_0x5f28fa,_0x48fe43){var _0x23a54a={},_0x38aa8a={},_0x598ba5={'count':0x0,'rows':[]};var _0x3cc895=_[_0xd9d8('0x28')](db[_0xd9d8('0x29')]['rawAttributes'],function(_0x22bf61){return{'name':_0x22bf61[_0xd9d8('0x2a')],'type':_0x22bf61[_0xd9d8('0x2b')]['key']};});_0x38aa8a[_0xd9d8('0x2c')]=_[_0xd9d8('0x28')](_0x3cc895,_0xd9d8('0x25'));_0x38aa8a[_0xd9d8('0x2d')]=_['keys'](_0x5f28fa[_0xd9d8('0x2d')]);_0x38aa8a[_0xd9d8('0x2e')]=_[_0xd9d8('0x2f')](_0x38aa8a[_0xd9d8('0x2c')],_0x38aa8a[_0xd9d8('0x2d')]);_0x23a54a['attributes']=_[_0xd9d8('0x2f')](_0x38aa8a[_0xd9d8('0x2c')],qs[_0xd9d8('0x30')](_0x5f28fa[_0xd9d8('0x2d')][_0xd9d8('0x30')]));_0x23a54a['attributes']=_0x23a54a[_0xd9d8('0x31')][_0xd9d8('0x32')]?_0x23a54a[_0xd9d8('0x31')]:_0x38aa8a[_0xd9d8('0x2c')];if(!_0x5f28fa[_0xd9d8('0x2d')][_0xd9d8('0x33')](_0xd9d8('0x34'))){_0x23a54a[_0xd9d8('0x1c')]=qs[_0xd9d8('0x1c')](_0x5f28fa[_0xd9d8('0x2d')][_0xd9d8('0x1c')]);_0x23a54a[_0xd9d8('0x1d')]=qs['offset'](_0x5f28fa['query']['offset']);}_0x23a54a[_0xd9d8('0x35')]=qs[_0xd9d8('0x36')](_0x5f28fa['query'][_0xd9d8('0x36')]);_0x23a54a[_0xd9d8('0x37')]=qs[_0xd9d8('0x2e')](_[_0xd9d8('0x38')](_0x5f28fa[_0xd9d8('0x2d')],_0x38aa8a[_0xd9d8('0x2e')]),_0x3cc895);if(_0x5f28fa[_0xd9d8('0x2d')]['filter']){_0x23a54a[_0xd9d8('0x37')]=_[_0xd9d8('0x39')](_0x23a54a[_0xd9d8('0x37')],{'$or':_[_0xd9d8('0x28')](_0x3cc895,function(_0x1ba558){if(_0x1ba558[_0xd9d8('0x2b')]!==_0xd9d8('0x3a')){var _0x1fb08f={};_0x1fb08f[_0x1ba558[_0xd9d8('0x25')]]={'$like':'%'+_0x5f28fa[_0xd9d8('0x2d')][_0xd9d8('0x3b')]+'%'};return _0x1fb08f;}})});}_0x23a54a=_['merge']({},_0x23a54a,_0x5f28fa[_0xd9d8('0x3c')]);var _0xc7a1ac={'where':_0x23a54a[_0xd9d8('0x37')]};return db['SalesforceAccount']['count'](_0xc7a1ac)[_0xd9d8('0x22')](function(_0x28bf02){_0x598ba5[_0xd9d8('0x1e')]=_0x28bf02;if(_0x5f28fa[_0xd9d8('0x2d')][_0xd9d8('0x3d')]){_0x23a54a['include']=[{'all':!![]}];}return db[_0xd9d8('0x29')][_0xd9d8('0x3e')](_0x23a54a);})[_0xd9d8('0x22')](function(_0x572069){_0x598ba5['rows']=_0x572069;return _0x598ba5;})['then'](respondWithFilteredResult(_0x48fe43,_0x23a54a))[_0xd9d8('0x3f')](handleError(_0x48fe43,null));};exports[_0xd9d8('0x40')]=function(_0xd67d11,_0x231274){var _0x42cf6e={'raw':![],'where':{'id':_0xd67d11[_0xd9d8('0x41')]['id']}},_0x3e4aba={};_0x3e4aba[_0xd9d8('0x2c')]=_[_0xd9d8('0x42')](db[_0xd9d8('0x29')][_0xd9d8('0x43')]);_0x3e4aba['query']=_[_0xd9d8('0x42')](_0xd67d11[_0xd9d8('0x2d')]);_0x3e4aba[_0xd9d8('0x2e')]=_[_0xd9d8('0x2f')](_0x3e4aba[_0xd9d8('0x2c')],_0x3e4aba[_0xd9d8('0x2d')]);_0x42cf6e[_0xd9d8('0x31')]=_[_0xd9d8('0x2f')](_0x3e4aba['model'],qs['fields'](_0xd67d11[_0xd9d8('0x2d')]['fields']));_0x42cf6e[_0xd9d8('0x31')]=_0x42cf6e[_0xd9d8('0x31')][_0xd9d8('0x32')]?_0x42cf6e[_0xd9d8('0x31')]:_0x3e4aba['model'];if(_0xd67d11['query'][_0xd9d8('0x3d')]){_0x42cf6e[_0xd9d8('0x44')]=[{'all':!![]}];}_0x42cf6e=_[_0xd9d8('0x39')]({},_0x42cf6e,_0xd67d11[_0xd9d8('0x3c')]);return db[_0xd9d8('0x29')]['find'](_0x42cf6e)[_0xd9d8('0x22')](handleEntityNotFound(_0x231274,null))[_0xd9d8('0x22')](respondWithResult(_0x231274,null))['catch'](handleError(_0x231274,null));};exports[_0xd9d8('0x45')]=function(_0x311b8a,_0x3fc114){return db['SalesforceAccount'][_0xd9d8('0x45')](_0x311b8a['body'],{})['then'](respondWithResult(_0x3fc114,0xc9))[_0xd9d8('0x3f')](handleError(_0x3fc114,null));};exports['update']=function(_0x5919c5,_0x4ec08e){if(_0x5919c5[_0xd9d8('0x46')]['id']){delete _0x5919c5[_0xd9d8('0x46')]['id'];}return db[_0xd9d8('0x29')][_0xd9d8('0x47')]({'where':{'id':_0x5919c5[_0xd9d8('0x41')]['id']}})[_0xd9d8('0x22')](handleEntityNotFound(_0x4ec08e,null))[_0xd9d8('0x22')](saveUpdates(_0x5919c5[_0xd9d8('0x46')],null))[_0xd9d8('0x22')](respondWithResult(_0x4ec08e,null))[_0xd9d8('0x3f')](handleError(_0x4ec08e,null));};exports['destroy']=function(_0x5471ad,_0x4334a0){return db['SalesforceAccount'][_0xd9d8('0x47')]({'where':{'id':_0x5471ad['params']['id']}})[_0xd9d8('0x22')](handleEntityNotFound(_0x4334a0,null))[_0xd9d8('0x22')](removeEntity(_0x4334a0,null))[_0xd9d8('0x3f')](handleError(_0x4334a0,null));};exports[_0xd9d8('0x48')]=function(_0x440a80,_0x2a22e6,_0x166147){var _0x15a0a8={};var _0x1a1d9f={};var _0x10df1d;var _0x48ebf3;return db['SalesforceAccount'][_0xd9d8('0x49')]({'where':{'id':_0x440a80[_0xd9d8('0x41')]['id']}})[_0xd9d8('0x22')](handleEntityNotFound(_0x2a22e6,null))['then'](function(_0x57999a){if(_0x57999a){_0x10df1d=_0x57999a;_0x1a1d9f[_0xd9d8('0x2c')]=_[_0xd9d8('0x42')](db[_0xd9d8('0x4a')]['rawAttributes']);_0x1a1d9f[_0xd9d8('0x2d')]=_[_0xd9d8('0x42')](_0x440a80[_0xd9d8('0x2d')]);_0x1a1d9f[_0xd9d8('0x2e')]=_[_0xd9d8('0x2f')](_0x1a1d9f[_0xd9d8('0x2c')],_0x1a1d9f[_0xd9d8('0x2d')]);_0x15a0a8[_0xd9d8('0x31')]=_['intersection'](_0x1a1d9f['model'],qs[_0xd9d8('0x30')](_0x440a80[_0xd9d8('0x2d')][_0xd9d8('0x30')]));_0x15a0a8['attributes']=_0x15a0a8[_0xd9d8('0x31')][_0xd9d8('0x32')]?_0x15a0a8[_0xd9d8('0x31')]:_0x1a1d9f['model'];_0x15a0a8['order']=qs[_0xd9d8('0x36')](_0x440a80[_0xd9d8('0x2d')]['sort']);_0x15a0a8[_0xd9d8('0x37')]=qs[_0xd9d8('0x2e')](_['pick'](_0x440a80[_0xd9d8('0x2d')],_0x1a1d9f[_0xd9d8('0x2e')]));if(_0x440a80[_0xd9d8('0x2d')][_0xd9d8('0x3b')]){_0x15a0a8[_0xd9d8('0x37')]=_[_0xd9d8('0x39')](_0x15a0a8[_0xd9d8('0x37')],{'$or':_['map'](_0x15a0a8[_0xd9d8('0x31')],function(_0x2263fb){var _0x1e42f9={};_0x1e42f9[_0x2263fb]={'$like':'%'+_0x440a80[_0xd9d8('0x2d')][_0xd9d8('0x3b')]+'%'};return _0x1e42f9;})});}_0x15a0a8=_[_0xd9d8('0x39')]({},_0x15a0a8,_0x440a80['options']);return _0x10df1d[_0xd9d8('0x48')](_0x15a0a8);}})[_0xd9d8('0x22')](function(_0xd6fe0a){if(_0xd6fe0a){_0x48ebf3=_0xd6fe0a[_0xd9d8('0x32')];if(!_0x440a80[_0xd9d8('0x2d')][_0xd9d8('0x33')]('nolimit')){_0x15a0a8[_0xd9d8('0x1c')]=qs[_0xd9d8('0x1c')](_0x440a80[_0xd9d8('0x2d')][_0xd9d8('0x1c')]);_0x15a0a8[_0xd9d8('0x1d')]=qs['offset'](_0x440a80[_0xd9d8('0x2d')][_0xd9d8('0x1d')]);}return _0x10df1d['getConfigurations'](_0x15a0a8);}})[_0xd9d8('0x22')](function(_0x380dd6){if(_0x380dd6){return _0x380dd6?{'count':_0x48ebf3,'rows':_0x380dd6}:null;}})[_0xd9d8('0x22')](respondWithResult(_0x2a22e6,null))[_0xd9d8('0x3f')](handleError(_0x2a22e6,null));};exports['addConfiguration']=function(_0x21e15b,_0x7ae606,_0x4cf647){if(_0x21e15b[_0xd9d8('0x46')]['id']){delete _0x21e15b[_0xd9d8('0x46')]['id'];}return db[_0xd9d8('0x29')][_0xd9d8('0x49')]({'where':{'id':_0x21e15b[_0xd9d8('0x41')]['id']}})[_0xd9d8('0x22')](handleEntityNotFound(_0x7ae606,null))[_0xd9d8('0x22')](function(_0x5035dc){if(_0x5035dc){_0x21e15b[_0xd9d8('0x46')][_0xd9d8('0x4b')]=_0x5035dc['id'];_0x21e15b['body'][_0xd9d8('0x4c')]=integrations[_0xd9d8('0x4d')](_0x21e15b['body'][_0xd9d8('0x4e')],_0x21e15b['body'][_0xd9d8('0x2b')]);_0x21e15b['body'][_0xd9d8('0x4f')]=integrations[_0xd9d8('0x50')](_0x21e15b[_0xd9d8('0x46')][_0xd9d8('0x4e')],_0x21e15b['body'][_0xd9d8('0x2b')]);return db[_0xd9d8('0x4a')][_0xd9d8('0x45')](_0x21e15b['body'],{'include':[{'model':db['SalesforceField'],'as':'Subjects'},{'model':db[_0xd9d8('0x51')],'as':_0xd9d8('0x4f')}]});}return null;})[_0xd9d8('0x22')](respondWithResult(_0x7ae606,null))['catch'](handleError(_0x7ae606,null));};exports['getFields']=function(_0x1c5be3,_0x4d987c,_0x2b7576){var _0x3d7c97;var _0x288587='';var _0x1b02f5=_0xd9d8('0x52');return db[_0xd9d8('0x29')][_0xd9d8('0x49')]({'where':{'id':_0x1c5be3[_0xd9d8('0x41')]['id']},'attributes':['id',_0xd9d8('0x53'),'clientId',_0xd9d8('0x54'),_0xd9d8('0x55'),_0xd9d8('0x56'),_0xd9d8('0x57')]})[_0xd9d8('0x22')](handleEntityNotFound(_0x4d987c,null))[_0xd9d8('0x22')](function(_0x16e873){if(_0x16e873){_0x288587=_0x16e873[_0xd9d8('0x53')];var _0x4e006a=_0x288587[_0xd9d8('0x58')](-0x1);if(_0x4e006a==='/'){_0x288587=_0x288587[_0xd9d8('0x59')](0x0,_0x288587[_0xd9d8('0x5a')](_0x4e006a));}_0x3d7c97=new jsforce['Connection']({'oauth2':{'loginUrl':_0x288587,'clientId':_0x16e873[_0xd9d8('0x5b')],'clientSecret':_0x16e873['clientSecret']}});return _0x3d7c97[_0xd9d8('0x5c')](_0x16e873[_0xd9d8('0x55')],_0x16e873[_0xd9d8('0x56')][_0xd9d8('0x5d')](_0x16e873[_0xd9d8('0x57')]));}})[_0xd9d8('0x22')](function(_0x495c1a){if(_0x495c1a){if(!_[_0xd9d8('0x5e')](_0x1c5be3[_0xd9d8('0x2d')][_0xd9d8('0x5f')])){_0x1b02f5=_0x1c5be3[_0xd9d8('0x2d')][_0xd9d8('0x5f')];}return _0x3d7c97[_0xd9d8('0x60')](_0x1b02f5)['describe']();}})[_0xd9d8('0x22')](function(_0x186fda){var _0x1258d5=[_0xd9d8('0x61'),_0xd9d8('0x62'),'IsReminderSet',_0xd9d8('0x63'),'Subject',_0xd9d8('0x64')];var _0x5c9730=[_0xd9d8('0x65'),_0xd9d8('0x66'),_0xd9d8('0x67'),_0xd9d8('0x68'),_0xd9d8('0x69'),_0xd9d8('0x6a'),'phone'];if(_0x186fda){_[_0xd9d8('0x6b')](_0x186fda['fields'],function(_0x2587d0){return _0x1258d5[_0xd9d8('0x6c')](_0x2587d0['name'])||!_0x5c9730['includes'](_0x2587d0[_0xd9d8('0x2b')]);});return{'count':_0x186fda['fields']['length'],'rows':_['map'](_0x186fda['fields'],function(_0x5da16c){return{'id':_0x5da16c[_0xd9d8('0x25')],'name':_0x5da16c[_0xd9d8('0x6d')],'custom':_0x5da16c[_0xd9d8('0x6e')],'options':_0x5da16c[_0xd9d8('0x6f')][_0xd9d8('0x32')]>0x0?_[_0xd9d8('0x28')](_0x5da16c[_0xd9d8('0x6f')],function(_0x3f3468){return{'name':_0x3f3468['label'],'value':_0x3f3468['value']};}):_0x5da16c[_0xd9d8('0x2b')]==_0xd9d8('0x68')?[{'name':_0xd9d8('0x70'),'value':'true'},{'name':_0xd9d8('0x71'),'value':_0xd9d8('0x72')}]:[]};})};}})[_0xd9d8('0x22')](respondWithResult(_0x4d987c,null))[_0xd9d8('0x3f')](function(_0x24117e){var _0x51ecfe=_0x1c5be3['query'][_0xd9d8('0x73')]?0x1f4:_0x24117e[_0xd9d8('0x74')]||0x1f4;logger[_0xd9d8('0x75')](_0xd9d8('0x76'),_0xd9d8('0x77'),_0x51ecfe,JSON[_0xd9d8('0x78')](_0x24117e));delete _0x24117e[_0xd9d8('0x25')];if(_0x51ecfe===0x191){_0x51ecfe=0x190;}_0x4d987c[_0xd9d8('0x18')](_0x51ecfe)[_0xd9d8('0x26')](_0x1c5be3[_0xd9d8('0x2d')][_0xd9d8('0x73')]?{'message':_0xd9d8('0x79'),'statusCode':_0x24117e[_0xd9d8('0x74')]}:_0x24117e);});};
\ No newline at end of file
+var _0xc3d9=['Content-Range','apply','save','update','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','SalesforceAccount','then','includeAll','include','rows','show','params','fields','options','find','catch','create','body','getConfigurations','findOne','SalesforceConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','channel','getDescriptions','Descriptions','Task','remoteUri','clientSecret','username','password','lastIndexOf','Connection','clientId','login','concat','ticketType','sobject','describe','ActivityDate','Subject','Description','string','int','picklist','email','textarea','phone','remove','label','custom','picklistValues','boolean','True','true','False','false','test','getFields','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','count','set'];(function(_0x3796ce,_0x5d474d){var _0x2ca305=function(_0x5042b9){while(--_0x5042b9){_0x3796ce['push'](_0x3796ce['shift']());}};_0x2ca305(++_0x5d474d);}(_0xc3d9,0x1b5));var _0x9c3d=function(_0x26f866,_0x1900bc){_0x26f866=_0x26f866-0x0;var _0x1abef3=_0xc3d9[_0x26f866];return _0x1abef3;};'use strict';var emlformat=require(_0x9c3d('0x0'));var rimraf=require(_0x9c3d('0x1'));var zipdir=require(_0x9c3d('0x2'));var jsonpatch=require(_0x9c3d('0x3'));var rp=require('request-promise');var moment=require(_0x9c3d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9c3d('0x5'));var util=require('util');var path=require(_0x9c3d('0x6'));var sox=require(_0x9c3d('0x7'));var csv=require(_0x9c3d('0x8'));var ejs=require(_0x9c3d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x9c3d('0xa'));var jsforce=require(_0x9c3d('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9c3d('0xc'));var Papa=require(_0x9c3d('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9c3d('0xe'));var as=require(_0x9c3d('0xf'));var hardwareService=require(_0x9c3d('0x10'));var logger=require(_0x9c3d('0x11'))('api');var utils=require(_0x9c3d('0x12'));var config=require(_0x9c3d('0x13'));var licenseUtil=require(_0x9c3d('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9c3d('0x15'));function respondWithStatusCode(_0x39d1cf,_0x5400ff){_0x5400ff=_0x5400ff||0xcc;return function(_0x41a2e0){if(_0x41a2e0){return _0x39d1cf[_0x9c3d('0x16')](_0x5400ff);}return _0x39d1cf[_0x9c3d('0x17')](_0x5400ff)[_0x9c3d('0x18')]();};}function respondWithResult(_0x3f4686,_0xf0c971){_0xf0c971=_0xf0c971||0xc8;return function(_0x414392){if(_0x414392){return _0x3f4686['status'](_0xf0c971)[_0x9c3d('0x19')](_0x414392);}};}function respondWithFilteredResult(_0x18485d,_0x1fce55){return function(_0x1cc63e){if(_0x1cc63e){var _0x55472f=typeof _0x1fce55['offset']===_0x9c3d('0x1a')&&typeof _0x1fce55[_0x9c3d('0x1b')]===_0x9c3d('0x1a');var _0x1bca88=_0x1cc63e['count'];var _0x2eff17=_0x55472f?0x0:_0x1fce55[_0x9c3d('0x1c')];var _0x2abda5=_0x55472f?_0x1cc63e[_0x9c3d('0x1d')]:_0x1fce55[_0x9c3d('0x1c')]+_0x1fce55[_0x9c3d('0x1b')];var _0x4faa82;if(_0x2abda5>=_0x1bca88){_0x2abda5=_0x1bca88;_0x4faa82=0xc8;}else{_0x4faa82=0xce;}_0x18485d['status'](_0x4faa82);return _0x18485d[_0x9c3d('0x1e')](_0x9c3d('0x1f'),_0x2eff17+'-'+_0x2abda5+'/'+_0x1bca88)[_0x9c3d('0x19')](_0x1cc63e);}return null;};}function patchUpdates(_0x25d799){return function(_0x463ae0){try{jsonpatch[_0x9c3d('0x20')](_0x463ae0,_0x25d799,!![]);}catch(_0x214a48){return BPromise['reject'](_0x214a48);}return _0x463ae0[_0x9c3d('0x21')]();};}function saveUpdates(_0xfead57,_0x1688b7){return function(_0x13f5fc){if(_0x13f5fc){return _0x13f5fc[_0x9c3d('0x22')](_0xfead57)['then'](function(_0x5cd5e4){return _0x5cd5e4;});}return null;};}function removeEntity(_0x3f2013,_0x2fc0c7){return function(_0x34a725){if(_0x34a725){return _0x34a725[_0x9c3d('0x23')]()['then'](function(){_0x3f2013['status'](0xcc)[_0x9c3d('0x18')]();});}};}function handleEntityNotFound(_0xa90adf,_0x3df6cf){return function(_0xd0865f){if(!_0xd0865f){_0xa90adf[_0x9c3d('0x16')](0x194);}return _0xd0865f;};}function handleError(_0x586a2d,_0x57910f){_0x57910f=_0x57910f||0x1f4;return function(_0x52eb66){logger[_0x9c3d('0x24')](_0x52eb66[_0x9c3d('0x25')]);if(_0x52eb66[_0x9c3d('0x26')]){delete _0x52eb66[_0x9c3d('0x26')];}_0x586a2d['status'](_0x57910f)[_0x9c3d('0x27')](_0x52eb66);};}exports['index']=function(_0x420670,_0x2f0c5b){var _0x44f094={},_0x5dc79c={},_0x51f630={'count':0x0,'rows':[]};var _0x700d70=_[_0x9c3d('0x28')](db['SalesforceAccount'][_0x9c3d('0x29')],function(_0x5ae838){return{'name':_0x5ae838[_0x9c3d('0x2a')],'type':_0x5ae838[_0x9c3d('0x2b')][_0x9c3d('0x2c')]};});_0x5dc79c['model']=_[_0x9c3d('0x28')](_0x700d70,_0x9c3d('0x26'));_0x5dc79c[_0x9c3d('0x2d')]=_[_0x9c3d('0x2e')](_0x420670[_0x9c3d('0x2d')]);_0x5dc79c[_0x9c3d('0x2f')]=_[_0x9c3d('0x30')](_0x5dc79c[_0x9c3d('0x31')],_0x5dc79c[_0x9c3d('0x2d')]);_0x44f094['attributes']=_['intersection'](_0x5dc79c[_0x9c3d('0x31')],qs['fields'](_0x420670[_0x9c3d('0x2d')]['fields']));_0x44f094[_0x9c3d('0x32')]=_0x44f094[_0x9c3d('0x32')][_0x9c3d('0x33')]?_0x44f094[_0x9c3d('0x32')]:_0x5dc79c[_0x9c3d('0x31')];if(!_0x420670[_0x9c3d('0x2d')]['hasOwnProperty'](_0x9c3d('0x34'))){_0x44f094[_0x9c3d('0x1b')]=qs[_0x9c3d('0x1b')](_0x420670[_0x9c3d('0x2d')][_0x9c3d('0x1b')]);_0x44f094[_0x9c3d('0x1c')]=qs[_0x9c3d('0x1c')](_0x420670[_0x9c3d('0x2d')][_0x9c3d('0x1c')]);}_0x44f094[_0x9c3d('0x35')]=qs[_0x9c3d('0x36')](_0x420670[_0x9c3d('0x2d')][_0x9c3d('0x36')]);_0x44f094['where']=qs[_0x9c3d('0x2f')](_[_0x9c3d('0x37')](_0x420670[_0x9c3d('0x2d')],_0x5dc79c[_0x9c3d('0x2f')]),_0x700d70);if(_0x420670[_0x9c3d('0x2d')][_0x9c3d('0x38')]){_0x44f094[_0x9c3d('0x39')]=_['merge'](_0x44f094[_0x9c3d('0x39')],{'$or':_[_0x9c3d('0x28')](_0x700d70,function(_0xf76d68){if(_0xf76d68['type']!==_0x9c3d('0x3a')){var _0x51950b={};_0x51950b[_0xf76d68[_0x9c3d('0x26')]]={'$like':'%'+_0x420670[_0x9c3d('0x2d')][_0x9c3d('0x38')]+'%'};return _0x51950b;}})});}_0x44f094=_[_0x9c3d('0x3b')]({},_0x44f094,_0x420670['options']);var _0x2d8835={'where':_0x44f094[_0x9c3d('0x39')]};return db[_0x9c3d('0x3c')][_0x9c3d('0x1d')](_0x2d8835)[_0x9c3d('0x3d')](function(_0x58b1e4){_0x51f630[_0x9c3d('0x1d')]=_0x58b1e4;if(_0x420670[_0x9c3d('0x2d')][_0x9c3d('0x3e')]){_0x44f094[_0x9c3d('0x3f')]=[{'all':!![]}];}return db[_0x9c3d('0x3c')]['findAll'](_0x44f094);})[_0x9c3d('0x3d')](function(_0x236b8b){_0x51f630[_0x9c3d('0x40')]=_0x236b8b;return _0x51f630;})['then'](respondWithFilteredResult(_0x2f0c5b,_0x44f094))['catch'](handleError(_0x2f0c5b,null));};exports[_0x9c3d('0x41')]=function(_0x394957,_0x570125){var _0x10cd5={'raw':![],'where':{'id':_0x394957[_0x9c3d('0x42')]['id']}},_0x2fe506={};_0x2fe506[_0x9c3d('0x31')]=_['keys'](db['SalesforceAccount'][_0x9c3d('0x29')]);_0x2fe506['query']=_['keys'](_0x394957[_0x9c3d('0x2d')]);_0x2fe506[_0x9c3d('0x2f')]=_['intersection'](_0x2fe506[_0x9c3d('0x31')],_0x2fe506[_0x9c3d('0x2d')]);_0x10cd5[_0x9c3d('0x32')]=_[_0x9c3d('0x30')](_0x2fe506[_0x9c3d('0x31')],qs['fields'](_0x394957['query'][_0x9c3d('0x43')]));_0x10cd5[_0x9c3d('0x32')]=_0x10cd5['attributes'][_0x9c3d('0x33')]?_0x10cd5[_0x9c3d('0x32')]:_0x2fe506[_0x9c3d('0x31')];if(_0x394957[_0x9c3d('0x2d')][_0x9c3d('0x3e')]){_0x10cd5[_0x9c3d('0x3f')]=[{'all':!![]}];}_0x10cd5=_[_0x9c3d('0x3b')]({},_0x10cd5,_0x394957[_0x9c3d('0x44')]);return db[_0x9c3d('0x3c')][_0x9c3d('0x45')](_0x10cd5)['then'](handleEntityNotFound(_0x570125,null))[_0x9c3d('0x3d')](respondWithResult(_0x570125,null))[_0x9c3d('0x46')](handleError(_0x570125,null));};exports[_0x9c3d('0x47')]=function(_0xc1edeb,_0x361dc1){return db[_0x9c3d('0x3c')]['create'](_0xc1edeb[_0x9c3d('0x48')],{})[_0x9c3d('0x3d')](respondWithResult(_0x361dc1,0xc9))[_0x9c3d('0x46')](handleError(_0x361dc1,null));};exports[_0x9c3d('0x22')]=function(_0x25da5b,_0x390c9e){if(_0x25da5b[_0x9c3d('0x48')]['id']){delete _0x25da5b[_0x9c3d('0x48')]['id'];}return db[_0x9c3d('0x3c')][_0x9c3d('0x45')]({'where':{'id':_0x25da5b['params']['id']}})['then'](handleEntityNotFound(_0x390c9e,null))[_0x9c3d('0x3d')](saveUpdates(_0x25da5b[_0x9c3d('0x48')],null))[_0x9c3d('0x3d')](respondWithResult(_0x390c9e,null))[_0x9c3d('0x46')](handleError(_0x390c9e,null));};exports['destroy']=function(_0x135826,_0x266d98){return db[_0x9c3d('0x3c')][_0x9c3d('0x45')]({'where':{'id':_0x135826[_0x9c3d('0x42')]['id']}})[_0x9c3d('0x3d')](handleEntityNotFound(_0x266d98,null))[_0x9c3d('0x3d')](removeEntity(_0x266d98,null))[_0x9c3d('0x46')](handleError(_0x266d98,null));};exports[_0x9c3d('0x49')]=function(_0x271bcd,_0x559e8a,_0x2cf0aa){var _0x3b1d3e={};var _0x5e79bc={};var _0x5e23c1;var _0x54999e;return db['SalesforceAccount'][_0x9c3d('0x4a')]({'where':{'id':_0x271bcd[_0x9c3d('0x42')]['id']}})[_0x9c3d('0x3d')](handleEntityNotFound(_0x559e8a,null))[_0x9c3d('0x3d')](function(_0x54887c){if(_0x54887c){_0x5e23c1=_0x54887c;_0x5e79bc['model']=_[_0x9c3d('0x2e')](db[_0x9c3d('0x4b')][_0x9c3d('0x29')]);_0x5e79bc['query']=_['keys'](_0x271bcd[_0x9c3d('0x2d')]);_0x5e79bc['filters']=_[_0x9c3d('0x30')](_0x5e79bc[_0x9c3d('0x31')],_0x5e79bc['query']);_0x3b1d3e['attributes']=_[_0x9c3d('0x30')](_0x5e79bc[_0x9c3d('0x31')],qs[_0x9c3d('0x43')](_0x271bcd['query']['fields']));_0x3b1d3e[_0x9c3d('0x32')]=_0x3b1d3e[_0x9c3d('0x32')][_0x9c3d('0x33')]?_0x3b1d3e['attributes']:_0x5e79bc[_0x9c3d('0x31')];_0x3b1d3e[_0x9c3d('0x35')]=qs[_0x9c3d('0x36')](_0x271bcd[_0x9c3d('0x2d')][_0x9c3d('0x36')]);_0x3b1d3e[_0x9c3d('0x39')]=qs[_0x9c3d('0x2f')](_[_0x9c3d('0x37')](_0x271bcd[_0x9c3d('0x2d')],_0x5e79bc[_0x9c3d('0x2f')]));if(_0x271bcd[_0x9c3d('0x2d')]['filter']){_0x3b1d3e[_0x9c3d('0x39')]=_[_0x9c3d('0x3b')](_0x3b1d3e[_0x9c3d('0x39')],{'$or':_[_0x9c3d('0x28')](_0x3b1d3e[_0x9c3d('0x32')],function(_0x487095){var _0x1febe7={};_0x1febe7[_0x487095]={'$like':'%'+_0x271bcd[_0x9c3d('0x2d')]['filter']+'%'};return _0x1febe7;})});}_0x3b1d3e=_[_0x9c3d('0x3b')]({},_0x3b1d3e,_0x271bcd[_0x9c3d('0x44')]);return _0x5e23c1[_0x9c3d('0x49')](_0x3b1d3e);}})[_0x9c3d('0x3d')](function(_0x28ed26){if(_0x28ed26){_0x54999e=_0x28ed26['length'];if(!_0x271bcd['query'][_0x9c3d('0x4c')](_0x9c3d('0x34'))){_0x3b1d3e[_0x9c3d('0x1b')]=qs[_0x9c3d('0x1b')](_0x271bcd[_0x9c3d('0x2d')][_0x9c3d('0x1b')]);_0x3b1d3e[_0x9c3d('0x1c')]=qs[_0x9c3d('0x1c')](_0x271bcd[_0x9c3d('0x2d')][_0x9c3d('0x1c')]);}return _0x5e23c1[_0x9c3d('0x49')](_0x3b1d3e);}})['then'](function(_0x13b7af){if(_0x13b7af){return _0x13b7af?{'count':_0x54999e,'rows':_0x13b7af}:null;}})[_0x9c3d('0x3d')](respondWithResult(_0x559e8a,null))[_0x9c3d('0x46')](handleError(_0x559e8a,null));};exports['addConfiguration']=function(_0x3a3424,_0x34e652,_0x38a99e){if(_0x3a3424[_0x9c3d('0x48')]['id']){delete _0x3a3424['body']['id'];}return db[_0x9c3d('0x3c')][_0x9c3d('0x4a')]({'where':{'id':_0x3a3424[_0x9c3d('0x42')]['id']}})[_0x9c3d('0x3d')](handleEntityNotFound(_0x34e652,null))[_0x9c3d('0x3d')](function(_0x574d99){if(_0x574d99){_0x3a3424[_0x9c3d('0x48')][_0x9c3d('0x4d')]=_0x574d99['id'];_0x3a3424['body'][_0x9c3d('0x4e')]=integrations[_0x9c3d('0x4f')](_0x3a3424[_0x9c3d('0x48')][_0x9c3d('0x50')],_0x3a3424['body'][_0x9c3d('0x2b')]);_0x3a3424['body']['Descriptions']=integrations[_0x9c3d('0x51')](_0x3a3424[_0x9c3d('0x48')]['channel'],_0x3a3424['body']['type']);return db['SalesforceConfiguration'][_0x9c3d('0x47')](_0x3a3424['body'],{'include':[{'model':db['SalesforceField'],'as':_0x9c3d('0x4e')},{'model':db['SalesforceField'],'as':_0x9c3d('0x52')}]});}return null;})['then'](respondWithResult(_0x34e652,null))[_0x9c3d('0x46')](handleError(_0x34e652,null));};exports['getFields']=function(_0x45d71c,_0x515dff,_0x12931b){var _0x205bdb;var _0x39ead2='';var _0x1c1fd1=_0x9c3d('0x53');return db[_0x9c3d('0x3c')][_0x9c3d('0x4a')]({'where':{'id':_0x45d71c[_0x9c3d('0x42')]['id']},'attributes':['id',_0x9c3d('0x54'),'clientId',_0x9c3d('0x55'),_0x9c3d('0x56'),_0x9c3d('0x57'),'securityToken']})['then'](handleEntityNotFound(_0x515dff,null))[_0x9c3d('0x3d')](function(_0x507990){if(_0x507990){_0x39ead2=_0x507990[_0x9c3d('0x54')];var _0x328f58=_0x39ead2['slice'](-0x1);if(_0x328f58==='/'){_0x39ead2=_0x39ead2['substring'](0x0,_0x39ead2[_0x9c3d('0x58')](_0x328f58));}_0x205bdb=new jsforce[(_0x9c3d('0x59'))]({'oauth2':{'loginUrl':_0x39ead2,'clientId':_0x507990[_0x9c3d('0x5a')],'clientSecret':_0x507990[_0x9c3d('0x55')]}});return _0x205bdb[_0x9c3d('0x5b')](_0x507990[_0x9c3d('0x56')],_0x507990[_0x9c3d('0x57')][_0x9c3d('0x5c')](_0x507990['securityToken']));}})[_0x9c3d('0x3d')](function(_0xe6bcb9){if(_0xe6bcb9){if(!_['isNil'](_0x45d71c[_0x9c3d('0x2d')][_0x9c3d('0x5d')])){_0x1c1fd1=_0x45d71c[_0x9c3d('0x2d')][_0x9c3d('0x5d')];}return _0x205bdb[_0x9c3d('0x5e')](_0x1c1fd1)[_0x9c3d('0x5f')]();}})['then'](function(_0x203ae7){var _0x2c6a25=['OwnerId',_0x9c3d('0x60'),'IsReminderSet','IsRecurrence',_0x9c3d('0x61'),_0x9c3d('0x62')];var _0xd2e702=[_0x9c3d('0x63'),_0x9c3d('0x64'),_0x9c3d('0x65'),'boolean',_0x9c3d('0x66'),_0x9c3d('0x67'),_0x9c3d('0x68')];if(_0x203ae7){_[_0x9c3d('0x69')](_0x203ae7[_0x9c3d('0x43')],function(_0xc70eea){return _0x2c6a25['includes'](_0xc70eea[_0x9c3d('0x26')])||!_0xd2e702['includes'](_0xc70eea[_0x9c3d('0x2b')]);});return{'count':_0x203ae7[_0x9c3d('0x43')][_0x9c3d('0x33')],'rows':_[_0x9c3d('0x28')](_0x203ae7[_0x9c3d('0x43')],function(_0x32f36b){return{'id':_0x32f36b['name'],'name':_0x32f36b[_0x9c3d('0x6a')],'custom':_0x32f36b[_0x9c3d('0x6b')],'options':_0x32f36b[_0x9c3d('0x6c')][_0x9c3d('0x33')]>0x0?_['map'](_0x32f36b[_0x9c3d('0x6c')],function(_0x80ad57){return{'name':_0x80ad57[_0x9c3d('0x6a')],'value':_0x80ad57['value']};}):_0x32f36b[_0x9c3d('0x2b')]==_0x9c3d('0x6d')?[{'name':_0x9c3d('0x6e'),'value':_0x9c3d('0x6f')},{'name':_0x9c3d('0x70'),'value':_0x9c3d('0x71')}]:[]};})};}})[_0x9c3d('0x3d')](respondWithResult(_0x515dff,null))[_0x9c3d('0x46')](function(_0xb841dc){var _0x59c1e9=_0x45d71c['query'][_0x9c3d('0x72')]?0x1f4:_0xb841dc['statusCode']||0x1f4;logger[_0x9c3d('0x24')]('getFields,\x20%s,\x20%s,\x20%s',_0x9c3d('0x73'),_0x59c1e9,JSON['stringify'](_0xb841dc));delete _0xb841dc[_0x9c3d('0x26')];if(_0x59c1e9===0x191){_0x59c1e9=0x190;}_0x515dff[_0x9c3d('0x17')](_0x59c1e9)[_0x9c3d('0x27')](_0x45d71c[_0x9c3d('0x2d')][_0x9c3d('0x72')]?{'message':_0x9c3d('0x74'),'statusCode':_0xb841dc['statusCode']}:_0xb841dc);});};
\ No newline at end of file
index abde74b..7269159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cac=['SalesforceAccount','int_salesforce_accounts','../../config/logger','api','bluebird','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4cac,0xfc));var _0xc4ca=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4cac[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc4ca('0x0'))(_0xc4ca('0x1'));var moment=require('moment');var BPromise=require(_0xc4ca('0x2'));var rp=require(_0xc4ca('0x3'));var fs=require('fs');var path=require(_0xc4ca('0x4'));var rimraf=require(_0xc4ca('0x5'));var config=require('../../config/environment');var attributes=require(_0xc4ca('0x6'));var integrations=require(_0xc4ca('0x7'));module['exports']=function(_0x5d68d4,_0x48b145){return _0x5d68d4['define'](_0xc4ca('0x8'),attributes,{'tableName':_0xc4ca('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x30c4=['request-promise','rimraf','../../config/environment','./intSalesforceAccount.attributes','exports','int_salesforce_accounts','lodash','util','../../config/logger','bluebird'];(function(_0x64d7cf,_0xfb45dc){var _0x173631=function(_0x38cb07){while(--_0x38cb07){_0x64d7cf['push'](_0x64d7cf['shift']());}};_0x173631(++_0xfb45dc);}(_0x30c4,0x1c8));var _0x430c=function(_0x4e679f,_0x34182c){_0x4e679f=_0x4e679f-0x0;var _0x35be27=_0x30c4[_0x4e679f];return _0x35be27;};'use strict';var _=require(_0x430c('0x0'));var util=require(_0x430c('0x1'));var logger=require(_0x430c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x430c('0x3'));var rp=require(_0x430c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x430c('0x5'));var config=require(_0x430c('0x6'));var attributes=require(_0x430c('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x430c('0x8')]=function(_0x4ce74d,_0x54d061){return _0x4ce74d['define']('SalesforceAccount',attributes,{'tableName':_0x430c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 290523c..45abb07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4797=['ShowSalesforceAccount','find','raw','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','SalesforceAccount','findAll','options','where','attributes','include','map','model','then','GetSalesforceAccount'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x4797,0x143));var _0x7479=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4797[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7479('0x0'));var util=require(_0x7479('0x1'));var moment=require(_0x7479('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7479('0x3'));var db=require(_0x7479('0x4'))['db'];var utils=require(_0x7479('0x5'));var logger=require('../../config/logger')(_0x7479('0x6'));var config=require(_0x7479('0x7'));var jayson=require(_0x7479('0x8'));var client=jayson[_0x7479('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3ff391,_0x532eb5,_0x52230a){return new BPromise(function(_0x45485a,_0x317b09){return client['request'](_0x3ff391,_0x52230a)['then'](function(_0x46a71b){logger[_0x7479('0xa')](_0x7479('0xb'),_0x532eb5,_0x7479('0xc'));logger[_0x7479('0xd')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x532eb5,_0x7479('0xc'),JSON[_0x7479('0xe')](_0x46a71b));if(_0x46a71b['error']){if(_0x46a71b[_0x7479('0xf')]['code']===0x1f4){logger[_0x7479('0xf')](_0x7479('0xb'),_0x532eb5,_0x46a71b[_0x7479('0xf')]['message']);return _0x317b09(_0x46a71b[_0x7479('0xf')][_0x7479('0x10')]);}logger[_0x7479('0xf')](_0x7479('0xb'),_0x532eb5,_0x46a71b['error'][_0x7479('0x10')]);return _0x45485a(_0x46a71b['error']['message']);}else{logger[_0x7479('0xa')](_0x7479('0xb'),_0x532eb5,'request\x20sent');_0x45485a(_0x46a71b[_0x7479('0x11')][_0x7479('0x10')]);}})[_0x7479('0x12')](function(_0x5ee4f9){logger[_0x7479('0xf')](_0x7479('0xb'),_0x532eb5,_0x5ee4f9);_0x317b09(_0x5ee4f9);});});}exports['GetSalesforceAccount']=function(_0x4b7199){var _0xd29660=this;return new Promise(function(_0x3d1f83,_0x420391){return db[_0x7479('0x13')][_0x7479('0x14')]({'raw':_0x4b7199['options']?_0x4b7199[_0x7479('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x4b7199[_0x7479('0x15')]?_0x4b7199[_0x7479('0x15')][_0x7479('0x16')]||null:null,'attributes':_0x4b7199['options']?_0x4b7199['options'][_0x7479('0x17')]||null:null,'limit':_0x4b7199[_0x7479('0x15')]?_0x4b7199[_0x7479('0x15')]['limit']||null:null,'include':_0x4b7199[_0x7479('0x15')]?_0x4b7199[_0x7479('0x15')][_0x7479('0x18')]?_['map'](_0x4b7199['options'][_0x7479('0x18')],function(_0x48108d){return{'model':db[_0x48108d['model']],'as':_0x48108d['as'],'attributes':_0x48108d[_0x7479('0x17')],'include':_0x48108d[_0x7479('0x18')]?_[_0x7479('0x19')](_0x48108d[_0x7479('0x18')],function(_0x5ee81f){return{'model':db[_0x5ee81f[_0x7479('0x1a')]],'as':_0x5ee81f['as'],'attributes':_0x5ee81f[_0x7479('0x17')],'include':_0x5ee81f[_0x7479('0x18')]?_[_0x7479('0x19')](_0x5ee81f[_0x7479('0x18')],function(_0x2eec15){return{'model':db[_0x2eec15[_0x7479('0x1a')]],'as':_0x2eec15['as'],'attributes':_0x2eec15[_0x7479('0x17')]};}):[]};}):[]};}):[]:[]})[_0x7479('0x1b')](function(_0x276556){logger['info'](_0x7479('0x1c'),_0x4b7199);logger[_0x7479('0xd')]('GetSalesforceAccount',_0x4b7199,JSON[_0x7479('0xe')](_0x276556));_0x3d1f83(_0x276556);})['catch'](function(_0x27fa10){logger['error'](_0x7479('0x1c'),_0x27fa10['message'],_0x4b7199);_0x420391(_0xd29660[_0x7479('0xf')](0x1f4,_0x27fa10[_0x7479('0x10')]));});});};exports[_0x7479('0x1d')]=function(_0xaf6cec){var _0x16da5f=this;return new Promise(function(_0x155736,_0x34f2a9){return db[_0x7479('0x13')][_0x7479('0x1e')]({'raw':_0xaf6cec[_0x7479('0x15')]?_0xaf6cec[_0x7479('0x15')][_0x7479('0x1f')]===undefined?!![]:![]:!![],'where':_0xaf6cec[_0x7479('0x15')]?_0xaf6cec['options'][_0x7479('0x16')]||null:null,'attributes':_0xaf6cec[_0x7479('0x15')]?_0xaf6cec[_0x7479('0x15')][_0x7479('0x17')]||null:null,'include':_0xaf6cec[_0x7479('0x15')]?_0xaf6cec[_0x7479('0x15')][_0x7479('0x18')]?_[_0x7479('0x19')](_0xaf6cec[_0x7479('0x15')]['include'],function(_0x33a84e){return{'model':db[_0x33a84e[_0x7479('0x1a')]],'as':_0x33a84e['as'],'attributes':_0x33a84e[_0x7479('0x17')],'include':_0x33a84e[_0x7479('0x18')]?_['map'](_0x33a84e[_0x7479('0x18')],function(_0x24a53d){return{'model':db[_0x24a53d['model']],'as':_0x24a53d['as'],'attributes':_0x24a53d[_0x7479('0x17')],'include':_0x24a53d[_0x7479('0x18')]?_[_0x7479('0x19')](_0x24a53d[_0x7479('0x18')],function(_0x34291d){return{'model':db[_0x34291d[_0x7479('0x1a')]],'as':_0x34291d['as'],'attributes':_0x34291d[_0x7479('0x17')]};}):[]};}):[]};}):[]:[]})[_0x7479('0x1b')](function(_0x1060a9){logger['info']('ShowSalesforceAccount',_0xaf6cec);logger['debug'](_0x7479('0x1d'),_0xaf6cec,JSON[_0x7479('0xe')](_0x1060a9));_0x155736(_0x1060a9);})[_0x7479('0x12')](function(_0x449f5d){logger[_0x7479('0xf')](_0x7479('0x1d'),_0x449f5d[_0x7479('0x10')],_0xaf6cec);_0x34f2a9(_0x16da5f[_0x7479('0xf')](0x1f4,_0x449f5d[_0x7479('0x10')]));});});};
\ No newline at end of file
+var _0x2828=['attributes','limit','include','map','model','ShowSalesforceAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','request','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','result','catch','GetSalesforceAccount','SalesforceAccount','options','raw','where'];(function(_0x4ec69a,_0x2826de){var _0x280921=function(_0x57a021){while(--_0x57a021){_0x4ec69a['push'](_0x4ec69a['shift']());}};_0x280921(++_0x2826de);}(_0x2828,0x106));var _0x8282=function(_0x3bc82d,_0x59187f){_0x3bc82d=_0x3bc82d-0x0;var _0x2cfb3d=_0x2828[_0x3bc82d];return _0x2cfb3d;};'use strict';var _=require(_0x8282('0x0'));var util=require(_0x8282('0x1'));var moment=require(_0x8282('0x2'));var BPromise=require(_0x8282('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8282('0x4'));var db=require(_0x8282('0x5'))['db'];var utils=require(_0x8282('0x6'));var logger=require('../../config/logger')(_0x8282('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5a6363,_0x32c8b,_0x123a81){return new BPromise(function(_0x52e503,_0xf1d2a9){return client[_0x8282('0x8')](_0x5a6363,_0x123a81)[_0x8282('0x9')](function(_0x38dfc4){logger[_0x8282('0xa')]('SalesforceAccount,\x20%s,\x20%s',_0x32c8b,_0x8282('0xb'));logger[_0x8282('0xc')](_0x8282('0xd'),_0x32c8b,_0x8282('0xb'),JSON[_0x8282('0xe')](_0x38dfc4));if(_0x38dfc4[_0x8282('0xf')]){if(_0x38dfc4[_0x8282('0xf')][_0x8282('0x10')]===0x1f4){logger[_0x8282('0xf')](_0x8282('0x11'),_0x32c8b,_0x38dfc4[_0x8282('0xf')][_0x8282('0x12')]);return _0xf1d2a9(_0x38dfc4['error'][_0x8282('0x12')]);}logger[_0x8282('0xf')](_0x8282('0x11'),_0x32c8b,_0x38dfc4[_0x8282('0xf')][_0x8282('0x12')]);return _0x52e503(_0x38dfc4[_0x8282('0xf')][_0x8282('0x12')]);}else{logger['info'](_0x8282('0x11'),_0x32c8b,'request\x20sent');_0x52e503(_0x38dfc4[_0x8282('0x13')][_0x8282('0x12')]);}})[_0x8282('0x14')](function(_0x38181e){logger[_0x8282('0xf')](_0x8282('0x11'),_0x32c8b,_0x38181e);_0xf1d2a9(_0x38181e);});});}exports[_0x8282('0x15')]=function(_0xe282a6){var _0x21b233=this;return new Promise(function(_0x42b798,_0x3fcf88){return db[_0x8282('0x16')]['findAll']({'raw':_0xe282a6[_0x8282('0x17')]?_0xe282a6[_0x8282('0x17')][_0x8282('0x18')]===undefined?!![]:![]:!![],'where':_0xe282a6[_0x8282('0x17')]?_0xe282a6[_0x8282('0x17')][_0x8282('0x19')]||null:null,'attributes':_0xe282a6['options']?_0xe282a6['options'][_0x8282('0x1a')]||null:null,'limit':_0xe282a6[_0x8282('0x17')]?_0xe282a6[_0x8282('0x17')][_0x8282('0x1b')]||null:null,'include':_0xe282a6[_0x8282('0x17')]?_0xe282a6[_0x8282('0x17')][_0x8282('0x1c')]?_[_0x8282('0x1d')](_0xe282a6[_0x8282('0x17')]['include'],function(_0x86fc91){return{'model':db[_0x86fc91['model']],'as':_0x86fc91['as'],'attributes':_0x86fc91[_0x8282('0x1a')],'include':_0x86fc91[_0x8282('0x1c')]?_[_0x8282('0x1d')](_0x86fc91[_0x8282('0x1c')],function(_0x442314){return{'model':db[_0x442314[_0x8282('0x1e')]],'as':_0x442314['as'],'attributes':_0x442314[_0x8282('0x1a')],'include':_0x442314[_0x8282('0x1c')]?_[_0x8282('0x1d')](_0x442314['include'],function(_0x33652b){return{'model':db[_0x33652b[_0x8282('0x1e')]],'as':_0x33652b['as'],'attributes':_0x33652b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e84a3){logger['info'](_0x8282('0x15'),_0xe282a6);logger[_0x8282('0xc')](_0x8282('0x15'),_0xe282a6,JSON[_0x8282('0xe')](_0x2e84a3));_0x42b798(_0x2e84a3);})[_0x8282('0x14')](function(_0x188ad9){logger['error']('GetSalesforceAccount',_0x188ad9[_0x8282('0x12')],_0xe282a6);_0x3fcf88(_0x21b233[_0x8282('0xf')](0x1f4,_0x188ad9[_0x8282('0x12')]));});});};exports[_0x8282('0x1f')]=function(_0x3b6b69){var _0xea30e6=this;return new Promise(function(_0x240b5a,_0x5dd7e5){return db['SalesforceAccount']['find']({'raw':_0x3b6b69[_0x8282('0x17')]?_0x3b6b69['options'][_0x8282('0x18')]===undefined?!![]:![]:!![],'where':_0x3b6b69[_0x8282('0x17')]?_0x3b6b69['options']['where']||null:null,'attributes':_0x3b6b69[_0x8282('0x17')]?_0x3b6b69[_0x8282('0x17')][_0x8282('0x1a')]||null:null,'include':_0x3b6b69[_0x8282('0x17')]?_0x3b6b69[_0x8282('0x17')]['include']?_[_0x8282('0x1d')](_0x3b6b69['options'][_0x8282('0x1c')],function(_0x2be0ec){return{'model':db[_0x2be0ec[_0x8282('0x1e')]],'as':_0x2be0ec['as'],'attributes':_0x2be0ec['attributes'],'include':_0x2be0ec[_0x8282('0x1c')]?_[_0x8282('0x1d')](_0x2be0ec[_0x8282('0x1c')],function(_0x239519){return{'model':db[_0x239519['model']],'as':_0x239519['as'],'attributes':_0x239519[_0x8282('0x1a')],'include':_0x239519[_0x8282('0x1c')]?_[_0x8282('0x1d')](_0x239519['include'],function(_0x3c6c7f){return{'model':db[_0x3c6c7f[_0x8282('0x1e')]],'as':_0x3c6c7f['as'],'attributes':_0x3c6c7f[_0x8282('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8282('0x9')](function(_0x4e2df2){logger[_0x8282('0xa')](_0x8282('0x1f'),_0x3b6b69);logger[_0x8282('0xc')]('ShowSalesforceAccount',_0x3b6b69,JSON['stringify'](_0x4e2df2));_0x240b5a(_0x4e2df2);})[_0x8282('0x14')](function(_0x5ebea9){logger[_0x8282('0xf')](_0x8282('0x1f'),_0x5ebea9[_0x8282('0x12')],_0x3b6b69);_0x5dd7e5(_0xea30e6[_0x8282('0xf')](0x1f4,_0x5ebea9[_0x8282('0x12')]));});});};
\ No newline at end of file
index 876300a..8d66fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','exports','util','path','connect-timeout'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2032,0xd9));var _0x2203=function(_0x573c61,_0x3373dd){_0x573c61=_0x573c61-0x0;var _0x34e9d9=_0x2032[_0x573c61];return _0x34e9d9;};'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/fields',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['get'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router['get'](_0x2203('0x10'),auth['isAuthenticated'](),controller[_0x2203('0x11')]);router['post']('/',auth[_0x2203('0x9')](),controller[_0x2203('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x2203('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x2203('0x13')]=router;
\ No newline at end of file
+var _0x5f2f=['Router','fs-extra','../../components/auth/service','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x510d89,_0x3dfa1f){var _0x3a4c0e=function(_0x436c01){while(--_0x436c01){_0x510d89['push'](_0x510d89['shift']());}};_0x3a4c0e(++_0x3dfa1f);}(_0x5f2f,0x73));var _0xf5f2=function(_0x33318d,_0x45c232){_0x33318d=_0x33318d-0x0;var _0xe745dc=_0x5f2f[_0x33318d];return _0xe745dc;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x9')](_0xf5f2('0x10'),auth['isAuthenticated'](),controller[_0xf5f2('0x11')]);router['get']('/:id/descriptions',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x12')]);router['post']('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x13')]);router[_0xf5f2('0x14')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x15')]);router['delete'](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x16')]);module[_0xf5f2('0x17')]=router;
\ No newline at end of file
index f554ebf..ea06ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf410=['Task','Case','contact_lead','contact','lead','account_contact_lead','nothing','account','STRING','sequelize','exports','ENUM'];(function(_0x5bd626,_0xdbf46d){var _0x2661ca=function(_0x421ff4){while(--_0x421ff4){_0x5bd626['push'](_0x5bd626['shift']());}};_0x2661ca(++_0xdbf46d);}(_0xf410,0x14d));var _0x0f41=function(_0x289d20,_0x57e685){_0x289d20=_0x289d20-0x0;var _0x37709f=_0xf410[_0x289d20];return _0x37709f;};'use strict';var Sequelize=require(_0x0f41('0x0'));module[_0x0f41('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x0f41('0x2')](_0x0f41('0x3'),_0x0f41('0x4')),'defaultValue':_0x0f41('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0x0f41('0x5'),_0x0f41('0x6'),_0x0f41('0x7'),_0x0f41('0x8'),'account'),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x0f41('0x2')](_0x0f41('0x9'),_0x0f41('0x6'),_0x0f41('0x7'),_0x0f41('0xa')),'defaultValue':'lead'},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x0f41('0xb')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf234=['contact','lead','account_contact_lead','account','sequelize','exports','STRING','ENUM','Task','Case','contact_lead'];(function(_0x864d71,_0x29fc0e){var _0x16995b=function(_0x3afb8e){while(--_0x3afb8e){_0x864d71['push'](_0x864d71['shift']());}};_0x16995b(++_0x29fc0e);}(_0xf234,0xeb));var _0x4f23=function(_0x4009a0,_0x5c3ad2){_0x4009a0=_0x4009a0-0x0;var _0x44d71f=_0xf234[_0x4009a0];return _0x44d71f;};'use strict';var Sequelize=require(_0x4f23('0x0'));module[_0x4f23('0x1')]={'name':{'type':Sequelize[_0x4f23('0x2')]},'description':{'type':Sequelize[_0x4f23('0x2')]},'ticketType':{'type':Sequelize[_0x4f23('0x3')](_0x4f23('0x4'),_0x4f23('0x5')),'defaultValue':_0x4f23('0x4')},'moduleSearch':{'type':Sequelize[_0x4f23('0x3')](_0x4f23('0x6'),_0x4f23('0x7'),_0x4f23('0x8'),_0x4f23('0x9'),_0x4f23('0xa')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x4f23('0x3')]('nothing',_0x4f23('0x7'),'lead',_0x4f23('0xa')),'defaultValue':_0x4f23('0x8')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x4f23('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x4f23('0x2')]}};
\ No newline at end of file
index acdc472..55eb824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20e2=['end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','keys','query','filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','update','destroy','SalesforceField','getFields','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x1776c6,_0x52775b){var _0x4e2f65=function(_0x266561){while(--_0x266561){_0x1776c6['push'](_0x1776c6['shift']());}};_0x4e2f65(++_0x52775b);}(_0x20e2,0x8b));var _0x220e=function(_0x319f8e,_0x1f254a){_0x319f8e=_0x319f8e-0x0;var _0x1a7b92=_0x20e2[_0x319f8e];return _0x1a7b92;};'use strict';var emlformat=require(_0x220e('0x0'));var rimraf=require(_0x220e('0x1'));var zipdir=require(_0x220e('0x2'));var jsonpatch=require(_0x220e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x220e('0x4'));var util=require(_0x220e('0x5'));var path=require(_0x220e('0x6'));var sox=require(_0x220e('0x7'));var csv=require(_0x220e('0x8'));var ejs=require(_0x220e('0x9'));var fs=require('fs');var fs_extra=require(_0x220e('0xa'));var _=require(_0x220e('0xb'));var squel=require('squel');var crypto=require(_0x220e('0xc'));var jsforce=require(_0x220e('0xd'));var deskjs=require(_0x220e('0xe'));var toCsv=require(_0x220e('0x8'));var querystring=require(_0x220e('0xf'));var Papa=require(_0x220e('0x10'));var Redis=require(_0x220e('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x220e('0x12'));var hardwareService=require(_0x220e('0x13'));var logger=require(_0x220e('0x14'))(_0x220e('0x15'));var utils=require(_0x220e('0x16'));var config=require(_0x220e('0x17'));var licenseUtil=require(_0x220e('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x733e9e,_0x28ce02){_0x28ce02=_0x28ce02||0xcc;return function(_0x4b6a40){if(_0x4b6a40){return _0x733e9e[_0x220e('0x19')](_0x28ce02);}return _0x733e9e[_0x220e('0x1a')](_0x28ce02)[_0x220e('0x1b')]();};}function respondWithResult(_0x51c902,_0x5dd764){_0x5dd764=_0x5dd764||0xc8;return function(_0x1dffe7){if(_0x1dffe7){return _0x51c902[_0x220e('0x1a')](_0x5dd764)[_0x220e('0x1c')](_0x1dffe7);}};}function respondWithFilteredResult(_0x3d7e17,_0x4e06c5){return function(_0x55c149){if(_0x55c149){var _0x3fe59d=typeof _0x4e06c5[_0x220e('0x1d')]===_0x220e('0x1e')&&typeof _0x4e06c5[_0x220e('0x1f')]===_0x220e('0x1e');var _0x3e2f28=_0x55c149[_0x220e('0x20')];var _0x24210b=_0x3fe59d?0x0:_0x4e06c5[_0x220e('0x1d')];var _0x12347f=_0x3fe59d?_0x55c149[_0x220e('0x20')]:_0x4e06c5['offset']+_0x4e06c5[_0x220e('0x1f')];var _0x1e056e;if(_0x12347f>=_0x3e2f28){_0x12347f=_0x3e2f28;_0x1e056e=0xc8;}else{_0x1e056e=0xce;}_0x3d7e17[_0x220e('0x1a')](_0x1e056e);return _0x3d7e17[_0x220e('0x21')](_0x220e('0x22'),_0x24210b+'-'+_0x12347f+'/'+_0x3e2f28)[_0x220e('0x1c')](_0x55c149);}return null;};}function patchUpdates(_0x205b07){return function(_0xfe6057){try{jsonpatch['apply'](_0xfe6057,_0x205b07,!![]);}catch(_0x3af5be){return BPromise[_0x220e('0x23')](_0x3af5be);}return _0xfe6057[_0x220e('0x24')]();};}function saveUpdates(_0x3efa71,_0x394a22){return function(_0x34ce05){if(_0x34ce05){return _0x34ce05['update'](_0x3efa71)[_0x220e('0x25')](function(_0x1e925c){return _0x1e925c;});}return null;};}function removeEntity(_0x433297,_0xef981d){return function(_0x9591f3){if(_0x9591f3){return _0x9591f3['destroy']()['then'](function(){_0x433297[_0x220e('0x1a')](0xcc)[_0x220e('0x1b')]();});}};}function handleEntityNotFound(_0x4b98e6,_0x3c24d2){return function(_0x56c93f){if(!_0x56c93f){_0x4b98e6['sendStatus'](0x194);}return _0x56c93f;};}function handleError(_0x5813b2,_0xd6c662){_0xd6c662=_0xd6c662||0x1f4;return function(_0x20120f){logger[_0x220e('0x26')](_0x20120f[_0x220e('0x27')]);if(_0x20120f[_0x220e('0x28')]){delete _0x20120f[_0x220e('0x28')];}_0x5813b2[_0x220e('0x1a')](_0xd6c662)[_0x220e('0x29')](_0x20120f);};}exports[_0x220e('0x2a')]=function(_0x3d4272,_0x3d36d7){var _0x269c56={},_0x32b90d={},_0x16cf96={'count':0x0,'rows':[]};var _0x525a3e=_[_0x220e('0x2b')](db[_0x220e('0x2c')][_0x220e('0x2d')],function(_0x28dd43){return{'name':_0x28dd43[_0x220e('0x2e')],'type':_0x28dd43[_0x220e('0x2f')][_0x220e('0x30')]};});_0x32b90d['model']=_['map'](_0x525a3e,'name');_0x32b90d['query']=_[_0x220e('0x31')](_0x3d4272[_0x220e('0x32')]);_0x32b90d[_0x220e('0x33')]=_['intersection'](_0x32b90d[_0x220e('0x34')],_0x32b90d[_0x220e('0x32')]);_0x269c56['attributes']=_['intersection'](_0x32b90d[_0x220e('0x34')],qs[_0x220e('0x35')](_0x3d4272[_0x220e('0x32')][_0x220e('0x35')]));_0x269c56[_0x220e('0x36')]=_0x269c56[_0x220e('0x36')][_0x220e('0x37')]?_0x269c56[_0x220e('0x36')]:_0x32b90d[_0x220e('0x34')];if(!_0x3d4272[_0x220e('0x32')][_0x220e('0x38')](_0x220e('0x39'))){_0x269c56['limit']=qs[_0x220e('0x1f')](_0x3d4272[_0x220e('0x32')][_0x220e('0x1f')]);_0x269c56[_0x220e('0x1d')]=qs[_0x220e('0x1d')](_0x3d4272['query'][_0x220e('0x1d')]);}_0x269c56[_0x220e('0x3a')]=qs[_0x220e('0x3b')](_0x3d4272[_0x220e('0x32')]['sort']);_0x269c56['where']=qs[_0x220e('0x33')](_[_0x220e('0x3c')](_0x3d4272[_0x220e('0x32')],_0x32b90d[_0x220e('0x33')]),_0x525a3e);if(_0x3d4272[_0x220e('0x32')][_0x220e('0x3d')]){_0x269c56[_0x220e('0x3e')]=_[_0x220e('0x3f')](_0x269c56[_0x220e('0x3e')],{'$or':_['map'](_0x525a3e,function(_0x247e23){if(_0x247e23[_0x220e('0x2f')]!=='VIRTUAL'){var _0x2f11a5={};_0x2f11a5[_0x247e23['name']]={'$like':'%'+_0x3d4272[_0x220e('0x32')]['filter']+'%'};return _0x2f11a5;}})});}_0x269c56=_[_0x220e('0x3f')]({},_0x269c56,_0x3d4272[_0x220e('0x40')]);var _0x13cfb5={'where':_0x269c56[_0x220e('0x3e')]};return db['SalesforceConfiguration'][_0x220e('0x20')](_0x13cfb5)[_0x220e('0x25')](function(_0x479793){_0x16cf96[_0x220e('0x20')]=_0x479793;if(_0x3d4272[_0x220e('0x32')][_0x220e('0x41')]){_0x269c56[_0x220e('0x42')]=[{'all':!![]}];}return db[_0x220e('0x2c')][_0x220e('0x43')](_0x269c56);})['then'](function(_0x535902){_0x16cf96[_0x220e('0x44')]=_0x535902;return _0x16cf96;})[_0x220e('0x25')](respondWithFilteredResult(_0x3d36d7,_0x269c56))[_0x220e('0x45')](handleError(_0x3d36d7,null));};exports[_0x220e('0x46')]=function(_0x1dafbc,_0x230dcf){var _0x1ab059={'raw':![],'where':{'id':_0x1dafbc[_0x220e('0x47')]['id']}},_0x1f6f15={};_0x1f6f15[_0x220e('0x34')]=_['keys'](db[_0x220e('0x2c')][_0x220e('0x2d')]);_0x1f6f15['query']=_[_0x220e('0x31')](_0x1dafbc[_0x220e('0x32')]);_0x1f6f15[_0x220e('0x33')]=_[_0x220e('0x48')](_0x1f6f15[_0x220e('0x34')],_0x1f6f15[_0x220e('0x32')]);_0x1ab059['attributes']=_[_0x220e('0x48')](_0x1f6f15[_0x220e('0x34')],qs['fields'](_0x1dafbc[_0x220e('0x32')][_0x220e('0x35')]));_0x1ab059[_0x220e('0x36')]=_0x1ab059[_0x220e('0x36')][_0x220e('0x37')]?_0x1ab059[_0x220e('0x36')]:_0x1f6f15[_0x220e('0x34')];if(_0x1dafbc[_0x220e('0x32')][_0x220e('0x41')]){_0x1ab059[_0x220e('0x42')]=[{'all':!![]}];}_0x1ab059=_[_0x220e('0x3f')]({},_0x1ab059,_0x1dafbc['options']);return db[_0x220e('0x2c')][_0x220e('0x49')](_0x1ab059)[_0x220e('0x25')](handleEntityNotFound(_0x230dcf,null))[_0x220e('0x25')](respondWithResult(_0x230dcf,null))['catch'](handleError(_0x230dcf,null));};exports[_0x220e('0x4a')]=function(_0x192676,_0x4b7162){return db[_0x220e('0x2c')][_0x220e('0x4a')](_0x192676[_0x220e('0x4b')],{})[_0x220e('0x25')](respondWithResult(_0x4b7162,0xc9))['catch'](handleError(_0x4b7162,null));};exports[_0x220e('0x4c')]=function(_0x4004ed,_0x5bed9c){if(_0x4004ed[_0x220e('0x4b')]['id']){delete _0x4004ed[_0x220e('0x4b')]['id'];}return db[_0x220e('0x2c')][_0x220e('0x49')]({'where':{'id':_0x4004ed[_0x220e('0x47')]['id']}})[_0x220e('0x25')](handleEntityNotFound(_0x5bed9c,null))[_0x220e('0x25')](saveUpdates(_0x4004ed[_0x220e('0x4b')],null))['then'](respondWithResult(_0x5bed9c,null))[_0x220e('0x45')](handleError(_0x5bed9c,null));};exports[_0x220e('0x4d')]=function(_0x5dd7ba,_0x3e2772){return db[_0x220e('0x2c')][_0x220e('0x49')]({'where':{'id':_0x5dd7ba[_0x220e('0x47')]['id']}})['then'](handleEntityNotFound(_0x3e2772,null))['then'](removeEntity(_0x3e2772,null))[_0x220e('0x45')](handleError(_0x3e2772,null));};exports['getFields']=function(_0x3077f5,_0x30e073,_0x18de63){var _0x358a85={};var _0x196786={};var _0x5c11ab;var _0x168d20;return db[_0x220e('0x2c')]['findOne']({'where':{'id':_0x3077f5['params']['id']}})[_0x220e('0x25')](handleEntityNotFound(_0x30e073,null))[_0x220e('0x25')](function(_0x3ac2c2){if(_0x3ac2c2){_0x5c11ab=_0x3ac2c2;_0x196786[_0x220e('0x34')]=_[_0x220e('0x31')](db[_0x220e('0x4e')][_0x220e('0x2d')]);_0x196786[_0x220e('0x32')]=_[_0x220e('0x31')](_0x3077f5[_0x220e('0x32')]);_0x196786[_0x220e('0x33')]=_[_0x220e('0x48')](_0x196786[_0x220e('0x34')],_0x196786[_0x220e('0x32')]);_0x358a85[_0x220e('0x36')]=_[_0x220e('0x48')](_0x196786[_0x220e('0x34')],qs[_0x220e('0x35')](_0x3077f5['query'][_0x220e('0x35')]));_0x358a85[_0x220e('0x36')]=_0x358a85[_0x220e('0x36')][_0x220e('0x37')]?_0x358a85[_0x220e('0x36')]:_0x196786[_0x220e('0x34')];_0x358a85['order']=qs[_0x220e('0x3b')](_0x3077f5['query'][_0x220e('0x3b')]);_0x358a85[_0x220e('0x3e')]=qs[_0x220e('0x33')](_[_0x220e('0x3c')](_0x3077f5[_0x220e('0x32')],_0x196786[_0x220e('0x33')]));if(_0x3077f5[_0x220e('0x32')][_0x220e('0x3d')]){_0x358a85[_0x220e('0x3e')]=_[_0x220e('0x3f')](_0x358a85['where'],{'$or':_['map'](_0x358a85[_0x220e('0x36')],function(_0x121818){var _0x10bd5c={};_0x10bd5c[_0x121818]={'$like':'%'+_0x3077f5['query'][_0x220e('0x3d')]+'%'};return _0x10bd5c;})});}_0x358a85=_[_0x220e('0x3f')]({},_0x358a85,_0x3077f5[_0x220e('0x40')]);return _0x5c11ab[_0x220e('0x4f')](_0x358a85);}})[_0x220e('0x25')](function(_0x366776){if(_0x366776){_0x168d20=_0x366776[_0x220e('0x37')];if(!_0x3077f5[_0x220e('0x32')][_0x220e('0x38')]('nolimit')){_0x358a85[_0x220e('0x1f')]=qs[_0x220e('0x1f')](_0x3077f5[_0x220e('0x32')][_0x220e('0x1f')]);_0x358a85[_0x220e('0x1d')]=qs[_0x220e('0x1d')](_0x3077f5[_0x220e('0x32')]['offset']);}return _0x5c11ab[_0x220e('0x4f')](_0x358a85);}})[_0x220e('0x25')](function(_0x59a2aa){if(_0x59a2aa){return _0x59a2aa?{'count':_0x168d20,'rows':_0x59a2aa}:null;}})[_0x220e('0x25')](respondWithResult(_0x30e073,null))[_0x220e('0x45')](handleError(_0x30e073,null));};exports[_0x220e('0x50')]=function(_0xd1045e,_0xf6a15b,_0x55f690){var _0x2a0f21={};var _0x2a9cb9={};var _0x4d8a97;var _0x453432;return db[_0x220e('0x2c')][_0x220e('0x51')]({'where':{'id':_0xd1045e[_0x220e('0x47')]['id']}})[_0x220e('0x25')](handleEntityNotFound(_0xf6a15b,null))[_0x220e('0x25')](function(_0x4aa274){if(_0x4aa274){_0x4d8a97=_0x4aa274;_0x2a9cb9[_0x220e('0x34')]=_[_0x220e('0x31')](db[_0x220e('0x4e')][_0x220e('0x2d')]);_0x2a9cb9[_0x220e('0x32')]=_[_0x220e('0x31')](_0xd1045e[_0x220e('0x32')]);_0x2a9cb9[_0x220e('0x33')]=_['intersection'](_0x2a9cb9['model'],_0x2a9cb9[_0x220e('0x32')]);_0x2a0f21[_0x220e('0x36')]=_['intersection'](_0x2a9cb9[_0x220e('0x34')],qs[_0x220e('0x35')](_0xd1045e[_0x220e('0x32')][_0x220e('0x35')]));_0x2a0f21[_0x220e('0x36')]=_0x2a0f21[_0x220e('0x36')][_0x220e('0x37')]?_0x2a0f21[_0x220e('0x36')]:_0x2a9cb9[_0x220e('0x34')];_0x2a0f21[_0x220e('0x3a')]=qs[_0x220e('0x3b')](_0xd1045e[_0x220e('0x32')][_0x220e('0x3b')]);_0x2a0f21[_0x220e('0x3e')]=qs[_0x220e('0x33')](_[_0x220e('0x3c')](_0xd1045e[_0x220e('0x32')],_0x2a9cb9[_0x220e('0x33')]));if(_0xd1045e[_0x220e('0x32')][_0x220e('0x3d')]){_0x2a0f21[_0x220e('0x3e')]=_[_0x220e('0x3f')](_0x2a0f21[_0x220e('0x3e')],{'$or':_['map'](_0x2a0f21[_0x220e('0x36')],function(_0x497d08){var _0x4f799b={};_0x4f799b[_0x497d08]={'$like':'%'+_0xd1045e[_0x220e('0x32')][_0x220e('0x3d')]+'%'};return _0x4f799b;})});}_0x2a0f21=_['merge']({},_0x2a0f21,_0xd1045e[_0x220e('0x40')]);return _0x4d8a97[_0x220e('0x50')](_0x2a0f21);}})[_0x220e('0x25')](function(_0x5115cc){if(_0x5115cc){_0x453432=_0x5115cc['length'];if(!_0xd1045e[_0x220e('0x32')][_0x220e('0x38')](_0x220e('0x39'))){_0x2a0f21[_0x220e('0x1f')]=qs['limit'](_0xd1045e['query'][_0x220e('0x1f')]);_0x2a0f21[_0x220e('0x1d')]=qs['offset'](_0xd1045e[_0x220e('0x32')][_0x220e('0x1d')]);}return _0x4d8a97[_0x220e('0x50')](_0x2a0f21);}})[_0x220e('0x25')](function(_0x4e1216){if(_0x4e1216){return _0x4e1216?{'count':_0x453432,'rows':_0x4e1216}:null;}})[_0x220e('0x25')](respondWithResult(_0xf6a15b,null))[_0x220e('0x45')](handleError(_0xf6a15b,null));};exports[_0x220e('0x52')]=function(_0x2a08e2,_0x28a117,_0x1dcabb){var _0x38ab0={};var _0xc7e8cd={};var _0x17a420;var _0x41dea6;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x2a08e2['params']['id']}})[_0x220e('0x25')](handleEntityNotFound(_0x28a117,null))[_0x220e('0x25')](function(_0x21c006){if(_0x21c006){_0x17a420=_0x21c006;_0xc7e8cd[_0x220e('0x34')]=_[_0x220e('0x31')](db[_0x220e('0x4e')][_0x220e('0x2d')]);_0xc7e8cd['query']=_[_0x220e('0x31')](_0x2a08e2[_0x220e('0x32')]);_0xc7e8cd['filters']=_[_0x220e('0x48')](_0xc7e8cd[_0x220e('0x34')],_0xc7e8cd[_0x220e('0x32')]);_0x38ab0[_0x220e('0x36')]=_[_0x220e('0x48')](_0xc7e8cd[_0x220e('0x34')],qs[_0x220e('0x35')](_0x2a08e2['query'][_0x220e('0x35')]));_0x38ab0['attributes']=_0x38ab0[_0x220e('0x36')][_0x220e('0x37')]?_0x38ab0['attributes']:_0xc7e8cd[_0x220e('0x34')];_0x38ab0[_0x220e('0x3a')]=qs[_0x220e('0x3b')](_0x2a08e2[_0x220e('0x32')]['sort']);_0x38ab0[_0x220e('0x3e')]=qs['filters'](_[_0x220e('0x3c')](_0x2a08e2['query'],_0xc7e8cd[_0x220e('0x33')]));if(_0x2a08e2[_0x220e('0x32')]['filter']){_0x38ab0['where']=_[_0x220e('0x3f')](_0x38ab0['where'],{'$or':_[_0x220e('0x2b')](_0x38ab0[_0x220e('0x36')],function(_0x54fa96){var _0x326aea={};_0x326aea[_0x54fa96]={'$like':'%'+_0x2a08e2['query']['filter']+'%'};return _0x326aea;})});}_0x38ab0=_['merge']({},_0x38ab0,_0x2a08e2[_0x220e('0x40')]);return _0x17a420[_0x220e('0x52')](_0x38ab0);}})[_0x220e('0x25')](function(_0x157b88){if(_0x157b88){_0x41dea6=_0x157b88[_0x220e('0x37')];if(!_0x2a08e2[_0x220e('0x32')]['hasOwnProperty'](_0x220e('0x39'))){_0x38ab0['limit']=qs['limit'](_0x2a08e2['query']['limit']);_0x38ab0[_0x220e('0x1d')]=qs['offset'](_0x2a08e2[_0x220e('0x32')]['offset']);}return _0x17a420['getDescriptions'](_0x38ab0);}})['then'](function(_0xae91a8){if(_0xae91a8){return _0xae91a8?{'count':_0x41dea6,'rows':_0xae91a8}:null;}})[_0x220e('0x25')](respondWithResult(_0x28a117,null))['catch'](handleError(_0x28a117,null));};
\ No newline at end of file
+var _0xd3a0=['attributes','intersection','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','include','create','body','find','params','getFields','findOne','SalesforceField','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters'];(function(_0x35bb79,_0x85479d){var _0x481165=function(_0x3db91c){while(--_0x3db91c){_0x35bb79['push'](_0x35bb79['shift']());}};_0x481165(++_0x85479d);}(_0xd3a0,0x1c5));var _0x0d3a=function(_0x4e65ce,_0x121e88){_0x4e65ce=_0x4e65ce-0x0;var _0x16499a=_0xd3a0[_0x4e65ce];return _0x16499a;};'use strict';var emlformat=require(_0x0d3a('0x0'));var rimraf=require(_0x0d3a('0x1'));var zipdir=require(_0x0d3a('0x2'));var jsonpatch=require(_0x0d3a('0x3'));var rp=require(_0x0d3a('0x4'));var moment=require(_0x0d3a('0x5'));var BPromise=require(_0x0d3a('0x6'));var Mustache=require(_0x0d3a('0x7'));var util=require(_0x0d3a('0x8'));var path=require(_0x0d3a('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d3a('0xa'));var fs=require('fs');var fs_extra=require(_0x0d3a('0xb'));var _=require(_0x0d3a('0xc'));var squel=require(_0x0d3a('0xd'));var crypto=require(_0x0d3a('0xe'));var jsforce=require(_0x0d3a('0xf'));var deskjs=require(_0x0d3a('0x10'));var toCsv=require(_0x0d3a('0x11'));var querystring=require(_0x0d3a('0x12'));var Papa=require(_0x0d3a('0x13'));var Redis=require('ioredis');var authService=require(_0x0d3a('0x14'));var qs=require(_0x0d3a('0x15'));var as=require(_0x0d3a('0x16'));var hardwareService=require(_0x0d3a('0x17'));var logger=require(_0x0d3a('0x18'))(_0x0d3a('0x19'));var utils=require(_0x0d3a('0x1a'));var config=require(_0x0d3a('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x0d3a('0x1c'))['db'];function respondWithStatusCode(_0x1204fb,_0x554b3b){_0x554b3b=_0x554b3b||0xcc;return function(_0x563297){if(_0x563297){return _0x1204fb[_0x0d3a('0x1d')](_0x554b3b);}return _0x1204fb['status'](_0x554b3b)[_0x0d3a('0x1e')]();};}function respondWithResult(_0x11dbef,_0x341642){_0x341642=_0x341642||0xc8;return function(_0x5bf6ea){if(_0x5bf6ea){return _0x11dbef[_0x0d3a('0x1f')](_0x341642)['json'](_0x5bf6ea);}};}function respondWithFilteredResult(_0x20313a,_0x3c9ec2){return function(_0x35dff1){if(_0x35dff1){var _0x50c1c5=typeof _0x3c9ec2[_0x0d3a('0x20')]===_0x0d3a('0x21')&&typeof _0x3c9ec2['limit']===_0x0d3a('0x21');var _0xc6d5e5=_0x35dff1[_0x0d3a('0x22')];var _0x3876b7=_0x50c1c5?0x0:_0x3c9ec2[_0x0d3a('0x20')];var _0x2080fb=_0x50c1c5?_0x35dff1[_0x0d3a('0x22')]:_0x3c9ec2['offset']+_0x3c9ec2[_0x0d3a('0x23')];var _0x3e84fc;if(_0x2080fb>=_0xc6d5e5){_0x2080fb=_0xc6d5e5;_0x3e84fc=0xc8;}else{_0x3e84fc=0xce;}_0x20313a[_0x0d3a('0x1f')](_0x3e84fc);return _0x20313a[_0x0d3a('0x24')](_0x0d3a('0x25'),_0x3876b7+'-'+_0x2080fb+'/'+_0xc6d5e5)[_0x0d3a('0x26')](_0x35dff1);}return null;};}function patchUpdates(_0x18e81f){return function(_0x54ff73){try{jsonpatch[_0x0d3a('0x27')](_0x54ff73,_0x18e81f,!![]);}catch(_0xb69c95){return BPromise[_0x0d3a('0x28')](_0xb69c95);}return _0x54ff73['save']();};}function saveUpdates(_0x452b8a,_0x49e365){return function(_0x2e9570){if(_0x2e9570){return _0x2e9570[_0x0d3a('0x29')](_0x452b8a)[_0x0d3a('0x2a')](function(_0x38dc35){return _0x38dc35;});}return null;};}function removeEntity(_0x517ba6,_0x59fe8b){return function(_0x42b450){if(_0x42b450){return _0x42b450[_0x0d3a('0x2b')]()[_0x0d3a('0x2a')](function(){_0x517ba6[_0x0d3a('0x1f')](0xcc)[_0x0d3a('0x1e')]();});}};}function handleEntityNotFound(_0x23aa89,_0x2fd173){return function(_0xa59877){if(!_0xa59877){_0x23aa89[_0x0d3a('0x1d')](0x194);}return _0xa59877;};}function handleError(_0x5ed142,_0x1a20f6){_0x1a20f6=_0x1a20f6||0x1f4;return function(_0x3dbcd9){logger['error'](_0x3dbcd9['stack']);if(_0x3dbcd9[_0x0d3a('0x2c')]){delete _0x3dbcd9['name'];}_0x5ed142[_0x0d3a('0x1f')](_0x1a20f6)[_0x0d3a('0x2d')](_0x3dbcd9);};}exports[_0x0d3a('0x2e')]=function(_0x190cea,_0x4579f6){var _0x4d466b={},_0x1e5134={},_0x13ce2d={'count':0x0,'rows':[]};var _0x5048e1=_[_0x0d3a('0x2f')](db[_0x0d3a('0x30')][_0x0d3a('0x31')],function(_0x3c4593){return{'name':_0x3c4593[_0x0d3a('0x32')],'type':_0x3c4593[_0x0d3a('0x33')][_0x0d3a('0x34')]};});_0x1e5134[_0x0d3a('0x35')]=_[_0x0d3a('0x2f')](_0x5048e1,_0x0d3a('0x2c'));_0x1e5134[_0x0d3a('0x36')]=_[_0x0d3a('0x37')](_0x190cea[_0x0d3a('0x36')]);_0x1e5134[_0x0d3a('0x38')]=_['intersection'](_0x1e5134['model'],_0x1e5134[_0x0d3a('0x36')]);_0x4d466b[_0x0d3a('0x39')]=_[_0x0d3a('0x3a')](_0x1e5134[_0x0d3a('0x35')],qs[_0x0d3a('0x3b')](_0x190cea[_0x0d3a('0x36')][_0x0d3a('0x3b')]));_0x4d466b[_0x0d3a('0x39')]=_0x4d466b[_0x0d3a('0x39')][_0x0d3a('0x3c')]?_0x4d466b[_0x0d3a('0x39')]:_0x1e5134[_0x0d3a('0x35')];if(!_0x190cea[_0x0d3a('0x36')]['hasOwnProperty']('nolimit')){_0x4d466b['limit']=qs[_0x0d3a('0x23')](_0x190cea[_0x0d3a('0x36')][_0x0d3a('0x23')]);_0x4d466b['offset']=qs[_0x0d3a('0x20')](_0x190cea['query']['offset']);}_0x4d466b[_0x0d3a('0x3d')]=qs[_0x0d3a('0x3e')](_0x190cea[_0x0d3a('0x36')][_0x0d3a('0x3e')]);_0x4d466b[_0x0d3a('0x3f')]=qs[_0x0d3a('0x38')](_[_0x0d3a('0x40')](_0x190cea['query'],_0x1e5134[_0x0d3a('0x38')]),_0x5048e1);if(_0x190cea[_0x0d3a('0x36')][_0x0d3a('0x41')]){_0x4d466b[_0x0d3a('0x3f')]=_[_0x0d3a('0x42')](_0x4d466b[_0x0d3a('0x3f')],{'$or':_['map'](_0x5048e1,function(_0x1c36f7){if(_0x1c36f7[_0x0d3a('0x33')]!==_0x0d3a('0x43')){var _0x21ff53={};_0x21ff53[_0x1c36f7[_0x0d3a('0x2c')]]={'$like':'%'+_0x190cea[_0x0d3a('0x36')][_0x0d3a('0x41')]+'%'};return _0x21ff53;}})});}_0x4d466b=_['merge']({},_0x4d466b,_0x190cea[_0x0d3a('0x44')]);var _0x2d9752={'where':_0x4d466b[_0x0d3a('0x3f')]};return db[_0x0d3a('0x30')][_0x0d3a('0x22')](_0x2d9752)[_0x0d3a('0x2a')](function(_0x21cfec){_0x13ce2d[_0x0d3a('0x22')]=_0x21cfec;if(_0x190cea['query'][_0x0d3a('0x45')]){_0x4d466b['include']=[{'all':!![]}];}return db[_0x0d3a('0x30')][_0x0d3a('0x46')](_0x4d466b);})['then'](function(_0x42fc77){_0x13ce2d[_0x0d3a('0x47')]=_0x42fc77;return _0x13ce2d;})[_0x0d3a('0x2a')](respondWithFilteredResult(_0x4579f6,_0x4d466b))[_0x0d3a('0x48')](handleError(_0x4579f6,null));};exports['show']=function(_0x20b9f7,_0x273d1a){var _0x589cda={'raw':![],'where':{'id':_0x20b9f7['params']['id']}},_0x517ac0={};_0x517ac0[_0x0d3a('0x35')]=_[_0x0d3a('0x37')](db[_0x0d3a('0x30')][_0x0d3a('0x31')]);_0x517ac0[_0x0d3a('0x36')]=_['keys'](_0x20b9f7['query']);_0x517ac0['filters']=_[_0x0d3a('0x3a')](_0x517ac0[_0x0d3a('0x35')],_0x517ac0[_0x0d3a('0x36')]);_0x589cda[_0x0d3a('0x39')]=_[_0x0d3a('0x3a')](_0x517ac0[_0x0d3a('0x35')],qs[_0x0d3a('0x3b')](_0x20b9f7['query'][_0x0d3a('0x3b')]));_0x589cda[_0x0d3a('0x39')]=_0x589cda['attributes']['length']?_0x589cda[_0x0d3a('0x39')]:_0x517ac0[_0x0d3a('0x35')];if(_0x20b9f7[_0x0d3a('0x36')][_0x0d3a('0x45')]){_0x589cda[_0x0d3a('0x49')]=[{'all':!![]}];}_0x589cda=_[_0x0d3a('0x42')]({},_0x589cda,_0x20b9f7['options']);return db[_0x0d3a('0x30')]['find'](_0x589cda)[_0x0d3a('0x2a')](handleEntityNotFound(_0x273d1a,null))[_0x0d3a('0x2a')](respondWithResult(_0x273d1a,null))[_0x0d3a('0x48')](handleError(_0x273d1a,null));};exports[_0x0d3a('0x4a')]=function(_0x145415,_0x2f4674){return db[_0x0d3a('0x30')][_0x0d3a('0x4a')](_0x145415[_0x0d3a('0x4b')],{})[_0x0d3a('0x2a')](respondWithResult(_0x2f4674,0xc9))[_0x0d3a('0x48')](handleError(_0x2f4674,null));};exports[_0x0d3a('0x29')]=function(_0x2dee42,_0x516711){if(_0x2dee42[_0x0d3a('0x4b')]['id']){delete _0x2dee42[_0x0d3a('0x4b')]['id'];}return db[_0x0d3a('0x30')][_0x0d3a('0x4c')]({'where':{'id':_0x2dee42[_0x0d3a('0x4d')]['id']}})[_0x0d3a('0x2a')](handleEntityNotFound(_0x516711,null))[_0x0d3a('0x2a')](saveUpdates(_0x2dee42[_0x0d3a('0x4b')],null))[_0x0d3a('0x2a')](respondWithResult(_0x516711,null))[_0x0d3a('0x48')](handleError(_0x516711,null));};exports['destroy']=function(_0x24d345,_0x35d18a){return db[_0x0d3a('0x30')][_0x0d3a('0x4c')]({'where':{'id':_0x24d345[_0x0d3a('0x4d')]['id']}})[_0x0d3a('0x2a')](handleEntityNotFound(_0x35d18a,null))[_0x0d3a('0x2a')](removeEntity(_0x35d18a,null))[_0x0d3a('0x48')](handleError(_0x35d18a,null));};exports[_0x0d3a('0x4e')]=function(_0x28c01f,_0x4a6c4c,_0x58065d){var _0x10f8c0={};var _0x4db518={};var _0x52b697;var _0x1aad50;return db[_0x0d3a('0x30')][_0x0d3a('0x4f')]({'where':{'id':_0x28c01f[_0x0d3a('0x4d')]['id']}})[_0x0d3a('0x2a')](handleEntityNotFound(_0x4a6c4c,null))[_0x0d3a('0x2a')](function(_0x5faaae){if(_0x5faaae){_0x52b697=_0x5faaae;_0x4db518[_0x0d3a('0x35')]=_[_0x0d3a('0x37')](db[_0x0d3a('0x50')]['rawAttributes']);_0x4db518[_0x0d3a('0x36')]=_['keys'](_0x28c01f[_0x0d3a('0x36')]);_0x4db518[_0x0d3a('0x38')]=_['intersection'](_0x4db518[_0x0d3a('0x35')],_0x4db518[_0x0d3a('0x36')]);_0x10f8c0[_0x0d3a('0x39')]=_[_0x0d3a('0x3a')](_0x4db518['model'],qs[_0x0d3a('0x3b')](_0x28c01f[_0x0d3a('0x36')][_0x0d3a('0x3b')]));_0x10f8c0['attributes']=_0x10f8c0[_0x0d3a('0x39')][_0x0d3a('0x3c')]?_0x10f8c0[_0x0d3a('0x39')]:_0x4db518[_0x0d3a('0x35')];_0x10f8c0[_0x0d3a('0x3d')]=qs['sort'](_0x28c01f[_0x0d3a('0x36')][_0x0d3a('0x3e')]);_0x10f8c0['where']=qs[_0x0d3a('0x38')](_['pick'](_0x28c01f[_0x0d3a('0x36')],_0x4db518['filters']));if(_0x28c01f[_0x0d3a('0x36')][_0x0d3a('0x41')]){_0x10f8c0[_0x0d3a('0x3f')]=_[_0x0d3a('0x42')](_0x10f8c0['where'],{'$or':_['map'](_0x10f8c0['attributes'],function(_0x5a6477){var _0x5c3ba5={};_0x5c3ba5[_0x5a6477]={'$like':'%'+_0x28c01f[_0x0d3a('0x36')]['filter']+'%'};return _0x5c3ba5;})});}_0x10f8c0=_[_0x0d3a('0x42')]({},_0x10f8c0,_0x28c01f[_0x0d3a('0x44')]);return _0x52b697[_0x0d3a('0x4e')](_0x10f8c0);}})[_0x0d3a('0x2a')](function(_0x1d4c7a){if(_0x1d4c7a){_0x1aad50=_0x1d4c7a[_0x0d3a('0x3c')];if(!_0x28c01f[_0x0d3a('0x36')][_0x0d3a('0x51')](_0x0d3a('0x52'))){_0x10f8c0[_0x0d3a('0x23')]=qs[_0x0d3a('0x23')](_0x28c01f['query'][_0x0d3a('0x23')]);_0x10f8c0[_0x0d3a('0x20')]=qs[_0x0d3a('0x20')](_0x28c01f[_0x0d3a('0x36')][_0x0d3a('0x20')]);}return _0x52b697[_0x0d3a('0x4e')](_0x10f8c0);}})[_0x0d3a('0x2a')](function(_0x497f2d){if(_0x497f2d){return _0x497f2d?{'count':_0x1aad50,'rows':_0x497f2d}:null;}})[_0x0d3a('0x2a')](respondWithResult(_0x4a6c4c,null))[_0x0d3a('0x48')](handleError(_0x4a6c4c,null));};exports[_0x0d3a('0x53')]=function(_0x1424c8,_0x342e4c,_0x590026){var _0x3d2f02={};var _0x51944f={};var _0xc1da9a;var _0x286b34;return db[_0x0d3a('0x30')][_0x0d3a('0x4f')]({'where':{'id':_0x1424c8['params']['id']}})['then'](handleEntityNotFound(_0x342e4c,null))[_0x0d3a('0x2a')](function(_0x3baec5){if(_0x3baec5){_0xc1da9a=_0x3baec5;_0x51944f['model']=_[_0x0d3a('0x37')](db['SalesforceField'][_0x0d3a('0x31')]);_0x51944f[_0x0d3a('0x36')]=_['keys'](_0x1424c8[_0x0d3a('0x36')]);_0x51944f[_0x0d3a('0x38')]=_[_0x0d3a('0x3a')](_0x51944f[_0x0d3a('0x35')],_0x51944f[_0x0d3a('0x36')]);_0x3d2f02['attributes']=_['intersection'](_0x51944f[_0x0d3a('0x35')],qs[_0x0d3a('0x3b')](_0x1424c8[_0x0d3a('0x36')]['fields']));_0x3d2f02[_0x0d3a('0x39')]=_0x3d2f02[_0x0d3a('0x39')][_0x0d3a('0x3c')]?_0x3d2f02[_0x0d3a('0x39')]:_0x51944f[_0x0d3a('0x35')];_0x3d2f02['order']=qs[_0x0d3a('0x3e')](_0x1424c8[_0x0d3a('0x36')][_0x0d3a('0x3e')]);_0x3d2f02[_0x0d3a('0x3f')]=qs[_0x0d3a('0x38')](_[_0x0d3a('0x40')](_0x1424c8[_0x0d3a('0x36')],_0x51944f[_0x0d3a('0x38')]));if(_0x1424c8['query'][_0x0d3a('0x41')]){_0x3d2f02[_0x0d3a('0x3f')]=_[_0x0d3a('0x42')](_0x3d2f02[_0x0d3a('0x3f')],{'$or':_[_0x0d3a('0x2f')](_0x3d2f02['attributes'],function(_0x31af62){var _0x4f2f20={};_0x4f2f20[_0x31af62]={'$like':'%'+_0x1424c8[_0x0d3a('0x36')][_0x0d3a('0x41')]+'%'};return _0x4f2f20;})});}_0x3d2f02=_['merge']({},_0x3d2f02,_0x1424c8['options']);return _0xc1da9a['getSubjects'](_0x3d2f02);}})[_0x0d3a('0x2a')](function(_0x5aba74){if(_0x5aba74){_0x286b34=_0x5aba74[_0x0d3a('0x3c')];if(!_0x1424c8['query']['hasOwnProperty'](_0x0d3a('0x52'))){_0x3d2f02[_0x0d3a('0x23')]=qs[_0x0d3a('0x23')](_0x1424c8['query'][_0x0d3a('0x23')]);_0x3d2f02[_0x0d3a('0x20')]=qs[_0x0d3a('0x20')](_0x1424c8[_0x0d3a('0x36')]['offset']);}return _0xc1da9a[_0x0d3a('0x53')](_0x3d2f02);}})[_0x0d3a('0x2a')](function(_0x35c677){if(_0x35c677){return _0x35c677?{'count':_0x286b34,'rows':_0x35c677}:null;}})[_0x0d3a('0x2a')](respondWithResult(_0x342e4c,null))['catch'](handleError(_0x342e4c,null));};exports[_0x0d3a('0x54')]=function(_0x9f2922,_0x131564,_0x559222){var _0x3209e1={};var _0x429c89={};var _0x6b5d84;var _0x4871af;return db[_0x0d3a('0x30')][_0x0d3a('0x4f')]({'where':{'id':_0x9f2922[_0x0d3a('0x4d')]['id']}})[_0x0d3a('0x2a')](handleEntityNotFound(_0x131564,null))['then'](function(_0x54cbf1){if(_0x54cbf1){_0x6b5d84=_0x54cbf1;_0x429c89[_0x0d3a('0x35')]=_[_0x0d3a('0x37')](db[_0x0d3a('0x50')][_0x0d3a('0x31')]);_0x429c89['query']=_[_0x0d3a('0x37')](_0x9f2922[_0x0d3a('0x36')]);_0x429c89[_0x0d3a('0x38')]=_[_0x0d3a('0x3a')](_0x429c89[_0x0d3a('0x35')],_0x429c89[_0x0d3a('0x36')]);_0x3209e1[_0x0d3a('0x39')]=_[_0x0d3a('0x3a')](_0x429c89[_0x0d3a('0x35')],qs[_0x0d3a('0x3b')](_0x9f2922[_0x0d3a('0x36')]['fields']));_0x3209e1[_0x0d3a('0x39')]=_0x3209e1[_0x0d3a('0x39')]['length']?_0x3209e1[_0x0d3a('0x39')]:_0x429c89['model'];_0x3209e1[_0x0d3a('0x3d')]=qs[_0x0d3a('0x3e')](_0x9f2922[_0x0d3a('0x36')][_0x0d3a('0x3e')]);_0x3209e1['where']=qs[_0x0d3a('0x38')](_[_0x0d3a('0x40')](_0x9f2922[_0x0d3a('0x36')],_0x429c89[_0x0d3a('0x38')]));if(_0x9f2922[_0x0d3a('0x36')]['filter']){_0x3209e1[_0x0d3a('0x3f')]=_['merge'](_0x3209e1['where'],{'$or':_[_0x0d3a('0x2f')](_0x3209e1['attributes'],function(_0x4e574c){var _0x2e3dfb={};_0x2e3dfb[_0x4e574c]={'$like':'%'+_0x9f2922[_0x0d3a('0x36')][_0x0d3a('0x41')]+'%'};return _0x2e3dfb;})});}_0x3209e1=_['merge']({},_0x3209e1,_0x9f2922[_0x0d3a('0x44')]);return _0x6b5d84[_0x0d3a('0x54')](_0x3209e1);}})[_0x0d3a('0x2a')](function(_0x3e0f2d){if(_0x3e0f2d){_0x4871af=_0x3e0f2d[_0x0d3a('0x3c')];if(!_0x9f2922[_0x0d3a('0x36')]['hasOwnProperty'](_0x0d3a('0x52'))){_0x3209e1['limit']=qs[_0x0d3a('0x23')](_0x9f2922[_0x0d3a('0x36')][_0x0d3a('0x23')]);_0x3209e1['offset']=qs['offset'](_0x9f2922['query'][_0x0d3a('0x20')]);}return _0x6b5d84[_0x0d3a('0x54')](_0x3209e1);}})[_0x0d3a('0x2a')](function(_0x1411f9){if(_0x1411f9){return _0x1411f9?{'count':_0x4871af,'rows':_0x1411f9}:null;}})[_0x0d3a('0x2a')](respondWithResult(_0x131564,null))[_0x0d3a('0x48')](handleError(_0x131564,null));};
\ No newline at end of file
index 8cee86f..70165fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85c8=['../../config/environment','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','int_salesforce_configurations','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4a272b,_0x58600c){var _0x17f0d6=function(_0x148613){while(--_0x148613){_0x4a272b['push'](_0x4a272b['shift']());}};_0x17f0d6(++_0x58600c);}(_0x85c8,0xcb));var _0x885c=function(_0x29335f,_0x1c49b0){_0x29335f=_0x29335f-0x0;var _0xd30fa5=_0x85c8[_0x29335f];return _0xd30fa5;};'use strict';var _=require('lodash');var util=require(_0x885c('0x0'));var logger=require(_0x885c('0x1'))(_0x885c('0x2'));var moment=require(_0x885c('0x3'));var BPromise=require(_0x885c('0x4'));var rp=require(_0x885c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x885c('0x6'));var attributes=require(_0x885c('0x7'));module[_0x885c('0x8')]=function(_0x3010eb,_0x52a5e5){return _0x3010eb['define'](_0x885c('0x9'),attributes,{'tableName':_0x885c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1274=['int_salesforce_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration'];(function(_0x331a98,_0x1dc1a4){var _0x483097=function(_0xefd723){while(--_0xefd723){_0x331a98['push'](_0x331a98['shift']());}};_0x483097(++_0x1dc1a4);}(_0x1274,0xfd));var _0x4127=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1274[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4127('0x0'));var util=require(_0x4127('0x1'));var logger=require(_0x4127('0x2'))(_0x4127('0x3'));var moment=require(_0x4127('0x4'));var BPromise=require(_0x4127('0x5'));var rp=require(_0x4127('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4127('0x7'));var config=require(_0x4127('0x8'));var attributes=require(_0x4127('0x9'));module[_0x4127('0xa')]=function(_0x23fe61,_0x380c86){return _0x23fe61[_0x4127('0xb')](_0x4127('0xc'),attributes,{'tableName':_0x4127('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 37c372b..5c69c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f9=['jayson/promise','client','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x38dd04,_0xabfd0b){var _0x429407=function(_0x48658b){while(--_0x48658b){_0x38dd04['push'](_0x38dd04['shift']());}};_0x429407(++_0xabfd0b);}(_0x62f9,0xff));var _0x962f=function(_0x46361e,_0x243aaf){_0x46361e=_0x46361e-0x0;var _0x14e302=_0x62f9[_0x46361e];return _0x14e302;};'use strict';var _=require('lodash');var util=require(_0x962f('0x0'));var moment=require(_0x962f('0x1'));var BPromise=require(_0x962f('0x2'));var rs=require(_0x962f('0x3'));var fs=require('fs');var Redis=require(_0x962f('0x4'));var db=require(_0x962f('0x5'))['db'];var utils=require(_0x962f('0x6'));var logger=require('../../config/logger')(_0x962f('0x7'));var config=require(_0x962f('0x8'));var jayson=require(_0x962f('0x9'));var client=jayson[_0x962f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5cee75,_0xdd54c1,_0x4f4b40){return new BPromise(function(_0x1cddba,_0x5a008f){return client[_0x962f('0xb')](_0x5cee75,_0x4f4b40)['then'](function(_0x48abe2){logger[_0x962f('0xc')](_0x962f('0xd'),_0xdd54c1,_0x962f('0xe'));logger[_0x962f('0xf')](_0x962f('0x10'),_0xdd54c1,_0x962f('0xe'),JSON[_0x962f('0x11')](_0x48abe2));if(_0x48abe2['error']){if(_0x48abe2['error'][_0x962f('0x12')]===0x1f4){logger[_0x962f('0x13')](_0x962f('0xd'),_0xdd54c1,_0x48abe2[_0x962f('0x13')][_0x962f('0x14')]);return _0x5a008f(_0x48abe2[_0x962f('0x13')][_0x962f('0x14')]);}logger[_0x962f('0x13')](_0x962f('0xd'),_0xdd54c1,_0x48abe2['error'][_0x962f('0x14')]);return _0x1cddba(_0x48abe2[_0x962f('0x13')][_0x962f('0x14')]);}else{logger['info'](_0x962f('0xd'),_0xdd54c1,'request\x20sent');_0x1cddba(_0x48abe2['result'][_0x962f('0x14')]);}})[_0x962f('0x15')](function(_0x3e2827){logger[_0x962f('0x13')](_0x962f('0xd'),_0xdd54c1,_0x3e2827);_0x5a008f(_0x3e2827);});});}
\ No newline at end of file
+var _0x0389=['jayson/promise','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x4fea99,_0x56955a){var _0x5398af=function(_0x410ba6){while(--_0x410ba6){_0x4fea99['push'](_0x4fea99['shift']());}};_0x5398af(++_0x56955a);}(_0x0389,0xdd));var _0x9038=function(_0x9df3d8,_0x4074e3){_0x9df3d8=_0x9df3d8-0x0;var _0x366da1=_0x0389[_0x9df3d8];return _0x366da1;};'use strict';var _=require('lodash');var util=require(_0x9038('0x0'));var moment=require(_0x9038('0x1'));var BPromise=require('bluebird');var rs=require(_0x9038('0x2'));var fs=require('fs');var Redis=require(_0x9038('0x3'));var db=require(_0x9038('0x4'))['db'];var utils=require(_0x9038('0x5'));var logger=require(_0x9038('0x6'))(_0x9038('0x7'));var config=require(_0x9038('0x8'));var jayson=require(_0x9038('0x9'));var client=jayson[_0x9038('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52906e,_0x3580d9,_0x2b9311){return new BPromise(function(_0x553853,_0x5e8af2){return client[_0x9038('0xb')](_0x52906e,_0x2b9311)[_0x9038('0xc')](function(_0x25ff2c){logger[_0x9038('0xd')](_0x9038('0xe'),_0x3580d9,'request\x20sent');logger[_0x9038('0xf')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x3580d9,_0x9038('0x10'),JSON[_0x9038('0x11')](_0x25ff2c));if(_0x25ff2c['error']){if(_0x25ff2c[_0x9038('0x12')][_0x9038('0x13')]===0x1f4){logger[_0x9038('0x12')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3580d9,_0x25ff2c[_0x9038('0x12')][_0x9038('0x14')]);return _0x5e8af2(_0x25ff2c['error'][_0x9038('0x14')]);}logger[_0x9038('0x12')](_0x9038('0xe'),_0x3580d9,_0x25ff2c[_0x9038('0x12')][_0x9038('0x14')]);return _0x553853(_0x25ff2c[_0x9038('0x12')][_0x9038('0x14')]);}else{logger[_0x9038('0xd')](_0x9038('0xe'),_0x3580d9,_0x9038('0x10'));_0x553853(_0x25ff2c[_0x9038('0x15')][_0x9038('0x14')]);}})[_0x9038('0x16')](function(_0x474f01){logger[_0x9038('0x12')](_0x9038('0xe'),_0x3580d9,_0x474f01);_0x5e8af2(_0x474f01);});});}
\ No newline at end of file
index 50b216f..4f4596e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf952=['index','get','/:id','create','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated'];(function(_0x5956dc,_0x5376d4){var _0x9f9e1f=function(_0x411f62){while(--_0x411f62){_0x5956dc['push'](_0x5956dc['shift']());}};_0x9f9e1f(++_0x5376d4);}(_0xf952,0xcd));var _0x2f95=function(_0x4dad5e,_0x54a4c6){_0x4dad5e=_0x4dad5e-0x0;var _0x2c77d2=_0xf952[_0x4dad5e];return _0x2c77d2;};'use strict';var multer=require(_0x2f95('0x0'));var util=require(_0x2f95('0x1'));var path=require(_0x2f95('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f95('0x3'));var router=express[_0x2f95('0x4')]();var fs_extra=require(_0x2f95('0x5'));var auth=require(_0x2f95('0x6'));var interaction=require(_0x2f95('0x7'));var config=require(_0x2f95('0x8'));var controller=require(_0x2f95('0x9'));router['get']('/',auth[_0x2f95('0xa')](),controller[_0x2f95('0xb')]);router[_0x2f95('0xc')](_0x2f95('0xd'),auth[_0x2f95('0xa')](),controller['show']);router['post']('/',auth[_0x2f95('0xa')](),controller[_0x2f95('0xe')]);router['put'](_0x2f95('0xd'),auth['isAuthenticated'](),controller[_0x2f95('0xf')]);router['delete'](_0x2f95('0xd'),auth['isAuthenticated'](),controller[_0x2f95('0x10')]);module[_0x2f95('0x11')]=router;
\ No newline at end of file
+var _0x68ce=['../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports','multer','connect-timeout','express','../../components/interaction/service'];(function(_0x5b4ead,_0x551224){var _0x4eb8a3=function(_0x484d29){while(--_0x484d29){_0x5b4ead['push'](_0x5b4ead['shift']());}};_0x4eb8a3(++_0x551224);}(_0x68ce,0xb7));var _0xe68c=function(_0x2cd8a4,_0x51fb40){_0x2cd8a4=_0x2cd8a4-0x0;var _0x375630=_0x68ce[_0x2cd8a4];return _0x375630;};'use strict';var multer=require(_0xe68c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe68c('0x1'));var express=require(_0xe68c('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe68c('0x3'));var config=require(_0xe68c('0x4'));var controller=require(_0xe68c('0x5'));router['get']('/',auth[_0xe68c('0x6')](),controller[_0xe68c('0x7')]);router[_0xe68c('0x8')](_0xe68c('0x9'),auth[_0xe68c('0x6')](),controller[_0xe68c('0xa')]);router['post']('/',auth[_0xe68c('0x6')](),controller[_0xe68c('0xb')]);router[_0xe68c('0xc')]('/:id',auth[_0xe68c('0x6')](),controller[_0xe68c('0xd')]);router[_0xe68c('0xe')](_0xe68c('0x9'),auth[_0xe68c('0x6')](),controller[_0xe68c('0xf')]);module[_0xe68c('0x10')]=router;
\ No newline at end of file
index 8b3da17..f4d734a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4e5=['picklist','STRING','variable','sequelize','exports','ENUM','string','customVariable','keyValue'];(function(_0x2d48a7,_0xe98de7){var _0x118a05=function(_0x3c1f3e){while(--_0x3c1f3e){_0x2d48a7['push'](_0x2d48a7['shift']());}};_0x118a05(++_0xe98de7);}(_0xf4e5,0x186));var _0x5f4e=function(_0x5913cd,_0x17d213){_0x5913cd=_0x5913cd-0x0;var _0xc919a1=_0xf4e5[_0x5913cd];return _0xc919a1;};'use strict';var Sequelize=require(_0x5f4e('0x0'));module[_0x5f4e('0x1')]={'type':{'type':Sequelize[_0x5f4e('0x2')](_0x5f4e('0x3'),'variable',_0x5f4e('0x4'),_0x5f4e('0x5'),_0x5f4e('0x6')),'defaultValue':_0x5f4e('0x3')},'content':{'type':Sequelize[_0x5f4e('0x7')]},'key':{'type':Sequelize[_0x5f4e('0x7')]},'keyType':{'type':Sequelize[_0x5f4e('0x2')]('string',_0x5f4e('0x8'),_0x5f4e('0x4'))},'keyContent':{'type':Sequelize[_0x5f4e('0x7')]},'idField':{'type':Sequelize[_0x5f4e('0x7')]},'variableName':{'type':Sequelize[_0x5f4e('0x7')]}};
\ No newline at end of file
+var _0x89de=['ENUM','customVariable','sequelize','exports','variable','picklist','string','STRING'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x89de,0xfa));var _0xe89d=function(_0x8bfe43,_0x4ec1e5){_0x8bfe43=_0x8bfe43-0x0;var _0x17f873=_0x89de[_0x8bfe43];return _0x17f873;};'use strict';var Sequelize=require(_0xe89d('0x0'));module[_0xe89d('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xe89d('0x2'),'customVariable','keyValue',_0xe89d('0x3')),'defaultValue':_0xe89d('0x4')},'content':{'type':Sequelize[_0xe89d('0x5')]},'key':{'type':Sequelize[_0xe89d('0x5')]},'keyType':{'type':Sequelize[_0xe89d('0x6')]('string',_0xe89d('0x2'),_0xe89d('0x7'))},'keyContent':{'type':Sequelize[_0xe89d('0x5')]},'idField':{'type':Sequelize[_0xe89d('0x5')]},'variableName':{'type':Sequelize[_0xe89d('0x5')]}};
\ No newline at end of file
index 82e93f7..8e7cbe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb149=['../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','sendStatus','error','name','send','index','map','SalesforceField','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x352e06,_0x38ab9d){var _0x154a9a=function(_0x59f20b){while(--_0x59f20b){_0x352e06['push'](_0x352e06['shift']());}};_0x154a9a(++_0x38ab9d);}(_0xb149,0x84));var _0x9b14=function(_0x543eac,_0x3a39a1){_0x543eac=_0x543eac-0x0;var _0x16c036=_0xb149[_0x543eac];return _0x16c036;};'use strict';var emlformat=require(_0x9b14('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9b14('0x1'));var jsonpatch=require(_0x9b14('0x2'));var rp=require(_0x9b14('0x3'));var moment=require(_0x9b14('0x4'));var BPromise=require(_0x9b14('0x5'));var Mustache=require(_0x9b14('0x6'));var util=require(_0x9b14('0x7'));var path=require('path');var sox=require(_0x9b14('0x8'));var csv=require(_0x9b14('0x9'));var ejs=require(_0x9b14('0xa'));var fs=require('fs');var fs_extra=require(_0x9b14('0xb'));var _=require(_0x9b14('0xc'));var squel=require(_0x9b14('0xd'));var crypto=require('crypto');var jsforce=require(_0x9b14('0xe'));var deskjs=require(_0x9b14('0xf'));var toCsv=require(_0x9b14('0x9'));var querystring=require(_0x9b14('0x10'));var Papa=require('papaparse');var Redis=require(_0x9b14('0x11'));var authService=require(_0x9b14('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x9b14('0x13'));var hardwareService=require(_0x9b14('0x14'));var logger=require(_0x9b14('0x15'))('api');var utils=require(_0x9b14('0x16'));var config=require(_0x9b14('0x17'));var licenseUtil=require(_0x9b14('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5899dc,_0x3cd02e){_0x3cd02e=_0x3cd02e||0xcc;return function(_0x3b3891){if(_0x3b3891){return _0x5899dc['sendStatus'](_0x3cd02e);}return _0x5899dc[_0x9b14('0x19')](_0x3cd02e)['end']();};}function respondWithResult(_0x5364c2,_0x5050a6){_0x5050a6=_0x5050a6||0xc8;return function(_0x17b4bf){if(_0x17b4bf){return _0x5364c2[_0x9b14('0x19')](_0x5050a6)[_0x9b14('0x1a')](_0x17b4bf);}};}function respondWithFilteredResult(_0x1d5c94,_0x3e8d95){return function(_0x44af82){if(_0x44af82){var _0xce0cdb=typeof _0x3e8d95[_0x9b14('0x1b')]===_0x9b14('0x1c')&&typeof _0x3e8d95[_0x9b14('0x1d')]===_0x9b14('0x1c');var _0x95dd6e=_0x44af82[_0x9b14('0x1e')];var _0x16a1c0=_0xce0cdb?0x0:_0x3e8d95['offset'];var _0x5c09c1=_0xce0cdb?_0x44af82['count']:_0x3e8d95[_0x9b14('0x1b')]+_0x3e8d95[_0x9b14('0x1d')];var _0x4fe2cd;if(_0x5c09c1>=_0x95dd6e){_0x5c09c1=_0x95dd6e;_0x4fe2cd=0xc8;}else{_0x4fe2cd=0xce;}_0x1d5c94[_0x9b14('0x19')](_0x4fe2cd);return _0x1d5c94[_0x9b14('0x1f')]('Content-Range',_0x16a1c0+'-'+_0x5c09c1+'/'+_0x95dd6e)[_0x9b14('0x1a')](_0x44af82);}return null;};}function patchUpdates(_0x395b7){return function(_0x2a6e0f){try{jsonpatch[_0x9b14('0x20')](_0x2a6e0f,_0x395b7,!![]);}catch(_0x587bc3){return BPromise[_0x9b14('0x21')](_0x587bc3);}return _0x2a6e0f[_0x9b14('0x22')]();};}function saveUpdates(_0x2cd2d0,_0x5b6a5d){return function(_0x244205){if(_0x244205){return _0x244205[_0x9b14('0x23')](_0x2cd2d0)[_0x9b14('0x24')](function(_0x3a361e){return _0x3a361e;});}return null;};}function removeEntity(_0x27a190,_0x1f9b89){return function(_0x464a41){if(_0x464a41){return _0x464a41[_0x9b14('0x25')]()[_0x9b14('0x24')](function(){_0x27a190[_0x9b14('0x19')](0xcc)[_0x9b14('0x26')]();});}};}function handleEntityNotFound(_0x5ef078,_0x544f83){return function(_0x136303){if(!_0x136303){_0x5ef078[_0x9b14('0x27')](0x194);}return _0x136303;};}function handleError(_0x50e73b,_0x47cf49){_0x47cf49=_0x47cf49||0x1f4;return function(_0x44204c){logger[_0x9b14('0x28')](_0x44204c['stack']);if(_0x44204c[_0x9b14('0x29')]){delete _0x44204c[_0x9b14('0x29')];}_0x50e73b[_0x9b14('0x19')](_0x47cf49)[_0x9b14('0x2a')](_0x44204c);};}exports[_0x9b14('0x2b')]=function(_0x3cee4a,_0x158cdc){var _0x53000b={},_0x41d7a9={},_0xa3cd4a={'count':0x0,'rows':[]};var _0x133b75=_[_0x9b14('0x2c')](db[_0x9b14('0x2d')]['rawAttributes'],function(_0x5cba0a){return{'name':_0x5cba0a[_0x9b14('0x2e')],'type':_0x5cba0a['type'][_0x9b14('0x2f')]};});_0x41d7a9[_0x9b14('0x30')]=_['map'](_0x133b75,'name');_0x41d7a9[_0x9b14('0x31')]=_[_0x9b14('0x32')](_0x3cee4a[_0x9b14('0x31')]);_0x41d7a9[_0x9b14('0x33')]=_[_0x9b14('0x34')](_0x41d7a9['model'],_0x41d7a9[_0x9b14('0x31')]);_0x53000b[_0x9b14('0x35')]=_[_0x9b14('0x34')](_0x41d7a9['model'],qs[_0x9b14('0x36')](_0x3cee4a[_0x9b14('0x31')]['fields']));_0x53000b[_0x9b14('0x35')]=_0x53000b['attributes'][_0x9b14('0x37')]?_0x53000b[_0x9b14('0x35')]:_0x41d7a9[_0x9b14('0x30')];if(!_0x3cee4a[_0x9b14('0x31')][_0x9b14('0x38')](_0x9b14('0x39'))){_0x53000b['limit']=qs['limit'](_0x3cee4a[_0x9b14('0x31')][_0x9b14('0x1d')]);_0x53000b[_0x9b14('0x1b')]=qs['offset'](_0x3cee4a[_0x9b14('0x31')]['offset']);}_0x53000b[_0x9b14('0x3a')]=qs[_0x9b14('0x3b')](_0x3cee4a['query'][_0x9b14('0x3b')]);_0x53000b[_0x9b14('0x3c')]=qs[_0x9b14('0x33')](_['pick'](_0x3cee4a[_0x9b14('0x31')],_0x41d7a9['filters']),_0x133b75);if(_0x3cee4a[_0x9b14('0x31')][_0x9b14('0x3d')]){_0x53000b[_0x9b14('0x3c')]=_[_0x9b14('0x3e')](_0x53000b[_0x9b14('0x3c')],{'$or':_[_0x9b14('0x2c')](_0x133b75,function(_0x5a9448){if(_0x5a9448[_0x9b14('0x3f')]!==_0x9b14('0x40')){var _0x5db8f8={};_0x5db8f8[_0x5a9448[_0x9b14('0x29')]]={'$like':'%'+_0x3cee4a[_0x9b14('0x31')][_0x9b14('0x3d')]+'%'};return _0x5db8f8;}})});}_0x53000b=_[_0x9b14('0x3e')]({},_0x53000b,_0x3cee4a[_0x9b14('0x41')]);var _0x3ca72c={'where':_0x53000b[_0x9b14('0x3c')]};return db[_0x9b14('0x2d')]['count'](_0x3ca72c)[_0x9b14('0x24')](function(_0x456d69){_0xa3cd4a[_0x9b14('0x1e')]=_0x456d69;if(_0x3cee4a[_0x9b14('0x31')][_0x9b14('0x42')]){_0x53000b[_0x9b14('0x43')]=[{'all':!![]}];}return db[_0x9b14('0x2d')][_0x9b14('0x44')](_0x53000b);})[_0x9b14('0x24')](function(_0xcfa189){_0xa3cd4a[_0x9b14('0x45')]=_0xcfa189;return _0xa3cd4a;})[_0x9b14('0x24')](respondWithFilteredResult(_0x158cdc,_0x53000b))[_0x9b14('0x46')](handleError(_0x158cdc,null));};exports[_0x9b14('0x47')]=function(_0x4f9d01,_0x399de6){var _0x2b8e2d={'raw':!![],'where':{'id':_0x4f9d01[_0x9b14('0x48')]['id']}},_0x4dbfc2={};_0x4dbfc2[_0x9b14('0x30')]=_[_0x9b14('0x32')](db['SalesforceField'][_0x9b14('0x49')]);_0x4dbfc2[_0x9b14('0x31')]=_[_0x9b14('0x32')](_0x4f9d01['query']);_0x4dbfc2[_0x9b14('0x33')]=_[_0x9b14('0x34')](_0x4dbfc2[_0x9b14('0x30')],_0x4dbfc2[_0x9b14('0x31')]);_0x2b8e2d[_0x9b14('0x35')]=_[_0x9b14('0x34')](_0x4dbfc2[_0x9b14('0x30')],qs[_0x9b14('0x36')](_0x4f9d01[_0x9b14('0x31')][_0x9b14('0x36')]));_0x2b8e2d[_0x9b14('0x35')]=_0x2b8e2d['attributes'][_0x9b14('0x37')]?_0x2b8e2d[_0x9b14('0x35')]:_0x4dbfc2[_0x9b14('0x30')];if(_0x4f9d01[_0x9b14('0x31')][_0x9b14('0x42')]){_0x2b8e2d[_0x9b14('0x43')]=[{'all':!![]}];}_0x2b8e2d=_[_0x9b14('0x3e')]({},_0x2b8e2d,_0x4f9d01[_0x9b14('0x41')]);return db[_0x9b14('0x2d')][_0x9b14('0x4a')](_0x2b8e2d)[_0x9b14('0x24')](handleEntityNotFound(_0x399de6,null))[_0x9b14('0x24')](respondWithResult(_0x399de6,null))[_0x9b14('0x46')](handleError(_0x399de6,null));};exports[_0x9b14('0x4b')]=function(_0x33c3b7,_0x2e48cc){return db['SalesforceField'][_0x9b14('0x4b')](_0x33c3b7[_0x9b14('0x4c')],{})[_0x9b14('0x24')](respondWithResult(_0x2e48cc,0xc9))[_0x9b14('0x46')](handleError(_0x2e48cc,null));};exports['update']=function(_0x2f616f,_0x193653){if(_0x2f616f[_0x9b14('0x4c')]['id']){delete _0x2f616f[_0x9b14('0x4c')]['id'];}return db[_0x9b14('0x2d')][_0x9b14('0x4a')]({'where':{'id':_0x2f616f[_0x9b14('0x48')]['id']}})[_0x9b14('0x24')](handleEntityNotFound(_0x193653,null))['then'](saveUpdates(_0x2f616f[_0x9b14('0x4c')],null))['then'](respondWithResult(_0x193653,null))[_0x9b14('0x46')](handleError(_0x193653,null));};exports[_0x9b14('0x25')]=function(_0x525821,_0x10c549){return db[_0x9b14('0x2d')][_0x9b14('0x4a')]({'where':{'id':_0x525821[_0x9b14('0x48')]['id']}})[_0x9b14('0x24')](handleEntityNotFound(_0x10c549,null))['then'](removeEntity(_0x10c549,null))[_0x9b14('0x46')](handleError(_0x10c549,null));};
\ No newline at end of file
+var _0xea37=['ejs','fs-extra','lodash','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','create','body','update','catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0xea37,0x1b9));var _0x7ea3=function(_0x234972,_0x5b42c5){_0x234972=_0x234972-0x0;var _0x4821bb=_0xea37[_0x234972];return _0x4821bb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7ea3('0x0'));var jsonpatch=require(_0x7ea3('0x1'));var rp=require(_0x7ea3('0x2'));var moment=require(_0x7ea3('0x3'));var BPromise=require(_0x7ea3('0x4'));var Mustache=require(_0x7ea3('0x5'));var util=require(_0x7ea3('0x6'));var path=require(_0x7ea3('0x7'));var sox=require('sox');var csv=require(_0x7ea3('0x8'));var ejs=require(_0x7ea3('0x9'));var fs=require('fs');var fs_extra=require(_0x7ea3('0xa'));var _=require(_0x7ea3('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7ea3('0xc'));var toCsv=require(_0x7ea3('0x8'));var querystring=require(_0x7ea3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7ea3('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7ea3('0xf'));var logger=require(_0x7ea3('0x10'))(_0x7ea3('0x11'));var utils=require('../../config/utils');var config=require(_0x7ea3('0x12'));var licenseUtil=require(_0x7ea3('0x13'));var db=require(_0x7ea3('0x14'))['db'];function respondWithStatusCode(_0x4132ee,_0x496066){_0x496066=_0x496066||0xcc;return function(_0x4b7f67){if(_0x4b7f67){return _0x4132ee[_0x7ea3('0x15')](_0x496066);}return _0x4132ee[_0x7ea3('0x16')](_0x496066)[_0x7ea3('0x17')]();};}function respondWithResult(_0x13b6a9,_0x14e8e1){_0x14e8e1=_0x14e8e1||0xc8;return function(_0x16ff59){if(_0x16ff59){return _0x13b6a9[_0x7ea3('0x16')](_0x14e8e1)[_0x7ea3('0x18')](_0x16ff59);}};}function respondWithFilteredResult(_0x1df3af,_0x121309){return function(_0x1a9a43){if(_0x1a9a43){var _0x416571=typeof _0x121309[_0x7ea3('0x19')]===_0x7ea3('0x1a')&&typeof _0x121309[_0x7ea3('0x1b')]==='undefined';var _0x27d153=_0x1a9a43[_0x7ea3('0x1c')];var _0x22b76a=_0x416571?0x0:_0x121309[_0x7ea3('0x19')];var _0x442be1=_0x416571?_0x1a9a43[_0x7ea3('0x1c')]:_0x121309[_0x7ea3('0x19')]+_0x121309['limit'];var _0xd07c9c;if(_0x442be1>=_0x27d153){_0x442be1=_0x27d153;_0xd07c9c=0xc8;}else{_0xd07c9c=0xce;}_0x1df3af[_0x7ea3('0x16')](_0xd07c9c);return _0x1df3af[_0x7ea3('0x1d')](_0x7ea3('0x1e'),_0x22b76a+'-'+_0x442be1+'/'+_0x27d153)[_0x7ea3('0x18')](_0x1a9a43);}return null;};}function patchUpdates(_0xfc924a){return function(_0x3529e9){try{jsonpatch[_0x7ea3('0x1f')](_0x3529e9,_0xfc924a,!![]);}catch(_0x177f36){return BPromise[_0x7ea3('0x20')](_0x177f36);}return _0x3529e9[_0x7ea3('0x21')]();};}function saveUpdates(_0x3eeffc,_0x59419b){return function(_0x5dd315){if(_0x5dd315){return _0x5dd315['update'](_0x3eeffc)[_0x7ea3('0x22')](function(_0x1a9a1f){return _0x1a9a1f;});}return null;};}function removeEntity(_0x2b5db1,_0x5bba23){return function(_0x3d1986){if(_0x3d1986){return _0x3d1986[_0x7ea3('0x23')]()[_0x7ea3('0x22')](function(){_0x2b5db1['status'](0xcc)[_0x7ea3('0x17')]();});}};}function handleEntityNotFound(_0x50d8aa,_0x44a5bf){return function(_0x3ffc7b){if(!_0x3ffc7b){_0x50d8aa[_0x7ea3('0x15')](0x194);}return _0x3ffc7b;};}function handleError(_0x59c874,_0x151877){_0x151877=_0x151877||0x1f4;return function(_0x313272){logger[_0x7ea3('0x24')](_0x313272[_0x7ea3('0x25')]);if(_0x313272[_0x7ea3('0x26')]){delete _0x313272[_0x7ea3('0x26')];}_0x59c874[_0x7ea3('0x16')](_0x151877)[_0x7ea3('0x27')](_0x313272);};}exports['index']=function(_0x23798a,_0x179db7){var _0x5093e8={},_0x2f8e13={},_0x676897={'count':0x0,'rows':[]};var _0x46d295=_[_0x7ea3('0x28')](db[_0x7ea3('0x29')][_0x7ea3('0x2a')],function(_0x529538){return{'name':_0x529538[_0x7ea3('0x2b')],'type':_0x529538[_0x7ea3('0x2c')][_0x7ea3('0x2d')]};});_0x2f8e13[_0x7ea3('0x2e')]=_[_0x7ea3('0x28')](_0x46d295,_0x7ea3('0x26'));_0x2f8e13[_0x7ea3('0x2f')]=_[_0x7ea3('0x30')](_0x23798a[_0x7ea3('0x2f')]);_0x2f8e13[_0x7ea3('0x31')]=_[_0x7ea3('0x32')](_0x2f8e13['model'],_0x2f8e13['query']);_0x5093e8[_0x7ea3('0x33')]=_['intersection'](_0x2f8e13['model'],qs[_0x7ea3('0x34')](_0x23798a[_0x7ea3('0x2f')][_0x7ea3('0x34')]));_0x5093e8[_0x7ea3('0x33')]=_0x5093e8['attributes'][_0x7ea3('0x35')]?_0x5093e8[_0x7ea3('0x33')]:_0x2f8e13[_0x7ea3('0x2e')];if(!_0x23798a[_0x7ea3('0x2f')][_0x7ea3('0x36')](_0x7ea3('0x37'))){_0x5093e8['limit']=qs[_0x7ea3('0x1b')](_0x23798a['query'][_0x7ea3('0x1b')]);_0x5093e8['offset']=qs[_0x7ea3('0x19')](_0x23798a[_0x7ea3('0x2f')][_0x7ea3('0x19')]);}_0x5093e8[_0x7ea3('0x38')]=qs[_0x7ea3('0x39')](_0x23798a['query'][_0x7ea3('0x39')]);_0x5093e8[_0x7ea3('0x3a')]=qs[_0x7ea3('0x31')](_[_0x7ea3('0x3b')](_0x23798a[_0x7ea3('0x2f')],_0x2f8e13[_0x7ea3('0x31')]),_0x46d295);if(_0x23798a[_0x7ea3('0x2f')][_0x7ea3('0x3c')]){_0x5093e8[_0x7ea3('0x3a')]=_['merge'](_0x5093e8[_0x7ea3('0x3a')],{'$or':_[_0x7ea3('0x28')](_0x46d295,function(_0x26e21a){if(_0x26e21a[_0x7ea3('0x2c')]!==_0x7ea3('0x3d')){var _0x401576={};_0x401576[_0x26e21a[_0x7ea3('0x26')]]={'$like':'%'+_0x23798a[_0x7ea3('0x2f')][_0x7ea3('0x3c')]+'%'};return _0x401576;}})});}_0x5093e8=_[_0x7ea3('0x3e')]({},_0x5093e8,_0x23798a[_0x7ea3('0x3f')]);var _0x95ec14={'where':_0x5093e8[_0x7ea3('0x3a')]};return db[_0x7ea3('0x29')][_0x7ea3('0x1c')](_0x95ec14)[_0x7ea3('0x22')](function(_0x3a764d){_0x676897[_0x7ea3('0x1c')]=_0x3a764d;if(_0x23798a[_0x7ea3('0x2f')][_0x7ea3('0x40')]){_0x5093e8[_0x7ea3('0x41')]=[{'all':!![]}];}return db['SalesforceField'][_0x7ea3('0x42')](_0x5093e8);})[_0x7ea3('0x22')](function(_0x35981b){_0x676897[_0x7ea3('0x43')]=_0x35981b;return _0x676897;})[_0x7ea3('0x22')](respondWithFilteredResult(_0x179db7,_0x5093e8))['catch'](handleError(_0x179db7,null));};exports[_0x7ea3('0x44')]=function(_0x36f3a1,_0x4baad9){var _0x33fae0={'raw':!![],'where':{'id':_0x36f3a1[_0x7ea3('0x45')]['id']}},_0x42a611={};_0x42a611[_0x7ea3('0x2e')]=_[_0x7ea3('0x30')](db[_0x7ea3('0x29')][_0x7ea3('0x2a')]);_0x42a611['query']=_[_0x7ea3('0x30')](_0x36f3a1[_0x7ea3('0x2f')]);_0x42a611['filters']=_[_0x7ea3('0x32')](_0x42a611['model'],_0x42a611['query']);_0x33fae0[_0x7ea3('0x33')]=_['intersection'](_0x42a611[_0x7ea3('0x2e')],qs[_0x7ea3('0x34')](_0x36f3a1[_0x7ea3('0x2f')][_0x7ea3('0x34')]));_0x33fae0[_0x7ea3('0x33')]=_0x33fae0[_0x7ea3('0x33')][_0x7ea3('0x35')]?_0x33fae0['attributes']:_0x42a611[_0x7ea3('0x2e')];if(_0x36f3a1[_0x7ea3('0x2f')][_0x7ea3('0x40')]){_0x33fae0[_0x7ea3('0x41')]=[{'all':!![]}];}_0x33fae0=_[_0x7ea3('0x3e')]({},_0x33fae0,_0x36f3a1[_0x7ea3('0x3f')]);return db[_0x7ea3('0x29')][_0x7ea3('0x46')](_0x33fae0)[_0x7ea3('0x22')](handleEntityNotFound(_0x4baad9,null))[_0x7ea3('0x22')](respondWithResult(_0x4baad9,null))['catch'](handleError(_0x4baad9,null));};exports[_0x7ea3('0x47')]=function(_0x5845d9,_0x5dd9f2){return db[_0x7ea3('0x29')][_0x7ea3('0x47')](_0x5845d9[_0x7ea3('0x48')],{})[_0x7ea3('0x22')](respondWithResult(_0x5dd9f2,0xc9))['catch'](handleError(_0x5dd9f2,null));};exports[_0x7ea3('0x49')]=function(_0x299632,_0x2cc6f0){if(_0x299632[_0x7ea3('0x48')]['id']){delete _0x299632[_0x7ea3('0x48')]['id'];}return db['SalesforceField'][_0x7ea3('0x46')]({'where':{'id':_0x299632[_0x7ea3('0x45')]['id']}})[_0x7ea3('0x22')](handleEntityNotFound(_0x2cc6f0,null))[_0x7ea3('0x22')](saveUpdates(_0x299632['body'],null))[_0x7ea3('0x22')](respondWithResult(_0x2cc6f0,null))[_0x7ea3('0x4a')](handleError(_0x2cc6f0,null));};exports[_0x7ea3('0x23')]=function(_0x4f2102,_0x4b9630){return db[_0x7ea3('0x29')][_0x7ea3('0x46')]({'where':{'id':_0x4f2102[_0x7ea3('0x45')]['id']}})[_0x7ea3('0x22')](handleEntityNotFound(_0x4b9630,null))['then'](removeEntity(_0x4b9630,null))[_0x7ea3('0x4a')](handleError(_0x4b9630,null));};
\ No newline at end of file
index 40f4e02..95c4a5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf1f=['SalesforceField','idField','FieldId','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports'];(function(_0x4129da,_0x20ce67){var _0x30af69=function(_0x374864){while(--_0x374864){_0x4129da['push'](_0x4129da['shift']());}};_0x30af69(++_0x20ce67);}(_0xcf1f,0x142));var _0xfcf1=function(_0x3c0dcc,_0x18c419){_0x3c0dcc=_0x3c0dcc-0x0;var _0x1a224c=_0xcf1f[_0x3c0dcc];return _0x1a224c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfcf1('0x0'))(_0xfcf1('0x1'));var moment=require(_0xfcf1('0x2'));var BPromise=require(_0xfcf1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfcf1('0x4'));var rimraf=require(_0xfcf1('0x5'));var config=require(_0xfcf1('0x6'));var attributes=require('./intSalesforceField.attributes');module[_0xfcf1('0x7')]=function(_0x106708,_0xe30c0a){return _0x106708['define'](_0xfcf1('0x8'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0xfcf1('0x9'),_0xfcf1('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbade=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceField.attributes','define','int_salesforce_fields','salesforce_unique_index','FieldId','lodash'];(function(_0x58c252,_0x17a82e){var _0x2b845d=function(_0x4fec65){while(--_0x4fec65){_0x58c252['push'](_0x58c252['shift']());}};_0x2b845d(++_0x17a82e);}(_0xbade,0x144));var _0xebad=function(_0x4b2cc6,_0x29ef43){_0x4b2cc6=_0x4b2cc6-0x0;var _0x3e0b08=_0xbade[_0x4b2cc6];return _0x3e0b08;};'use strict';var _=require(_0xebad('0x0'));var util=require(_0xebad('0x1'));var logger=require(_0xebad('0x2'))(_0xebad('0x3'));var moment=require('moment');var BPromise=require(_0xebad('0x4'));var rp=require(_0xebad('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xebad('0x6'));var config=require(_0xebad('0x7'));var attributes=require(_0xebad('0x8'));module['exports']=function(_0x1a8917,_0x49d653){return _0x1a8917[_0xebad('0x9')]('SalesforceField',attributes,{'tableName':_0xebad('0xa'),'paranoid':![],'indexes':[{'name':_0xebad('0xb'),'fields':['idField',_0xebad('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5a349c6..8ffa98f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3a=['SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4ebe17,_0x50c7c7){var _0x11ded5=function(_0x499471){while(--_0x499471){_0x4ebe17['push'](_0x4ebe17['shift']());}};_0x11ded5(++_0x50c7c7);}(_0x2b3a,0x64));var _0xa2b3=function(_0x2a531e,_0x3cf4c3){_0x2a531e=_0x2a531e-0x0;var _0x45735a=_0x2b3a[_0x2a531e];return _0x45735a;};'use strict';var _=require(_0xa2b3('0x0'));var util=require(_0xa2b3('0x1'));var moment=require(_0xa2b3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa2b3('0x3'))['db'];var utils=require(_0xa2b3('0x4'));var logger=require(_0xa2b3('0x5'))('rpc');var config=require(_0xa2b3('0x6'));var jayson=require(_0xa2b3('0x7'));var client=jayson[_0xa2b3('0x8')][_0xa2b3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3712c0,_0x3d783d,_0x48ef87){return new BPromise(function(_0x6261a7,_0xd59c19){return client['request'](_0x3712c0,_0x48ef87)['then'](function(_0xfc34d8){logger[_0xa2b3('0xa')](_0xa2b3('0xb'),_0x3d783d,_0xa2b3('0xc'));logger[_0xa2b3('0xd')](_0xa2b3('0xe'),_0x3d783d,_0xa2b3('0xc'),JSON[_0xa2b3('0xf')](_0xfc34d8));if(_0xfc34d8[_0xa2b3('0x10')]){if(_0xfc34d8[_0xa2b3('0x10')][_0xa2b3('0x11')]===0x1f4){logger['error'](_0xa2b3('0xb'),_0x3d783d,_0xfc34d8[_0xa2b3('0x10')][_0xa2b3('0x12')]);return _0xd59c19(_0xfc34d8[_0xa2b3('0x10')]['message']);}logger[_0xa2b3('0x10')](_0xa2b3('0xb'),_0x3d783d,_0xfc34d8[_0xa2b3('0x10')][_0xa2b3('0x12')]);return _0x6261a7(_0xfc34d8[_0xa2b3('0x10')][_0xa2b3('0x12')]);}else{logger[_0xa2b3('0xa')](_0xa2b3('0xb'),_0x3d783d,_0xa2b3('0xc'));_0x6261a7(_0xfc34d8['result'][_0xa2b3('0x12')]);}})['catch'](function(_0x1ef2cc){logger[_0xa2b3('0x10')](_0xa2b3('0xb'),_0x3d783d,_0x1ef2cc);_0xd59c19(_0x1ef2cc);});});}
\ No newline at end of file
+var _0x496f=['debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','SalesforceField,\x20%s,\x20%s','request\x20sent'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x496f,0x1a5));var _0xf496=function(_0x336376,_0xe4b28d){_0x336376=_0x336376-0x0;var _0x1d2a8e=_0x496f[_0x336376];return _0x1d2a8e;};'use strict';var _=require(_0xf496('0x0'));var util=require(_0xf496('0x1'));var moment=require(_0xf496('0x2'));var BPromise=require(_0xf496('0x3'));var rs=require(_0xf496('0x4'));var fs=require('fs');var Redis=require(_0xf496('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf496('0x6'));var logger=require(_0xf496('0x7'))(_0xf496('0x8'));var config=require(_0xf496('0x9'));var jayson=require(_0xf496('0xa'));var client=jayson[_0xf496('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2393a0,_0x534990,_0x128ab6){return new BPromise(function(_0x4e1e6c,_0x1083f2){return client[_0xf496('0xc')](_0x2393a0,_0x128ab6)['then'](function(_0x2c5d99){logger[_0xf496('0xd')](_0xf496('0xe'),_0x534990,_0xf496('0xf'));logger[_0xf496('0x10')](_0xf496('0x11'),_0x534990,_0xf496('0xf'),JSON[_0xf496('0x12')](_0x2c5d99));if(_0x2c5d99['error']){if(_0x2c5d99[_0xf496('0x13')][_0xf496('0x14')]===0x1f4){logger[_0xf496('0x13')]('SalesforceField,\x20%s,\x20%s',_0x534990,_0x2c5d99[_0xf496('0x13')][_0xf496('0x15')]);return _0x1083f2(_0x2c5d99[_0xf496('0x13')][_0xf496('0x15')]);}logger['error'](_0xf496('0xe'),_0x534990,_0x2c5d99[_0xf496('0x13')][_0xf496('0x15')]);return _0x4e1e6c(_0x2c5d99[_0xf496('0x13')][_0xf496('0x15')]);}else{logger[_0xf496('0xd')](_0xf496('0xe'),_0x534990,_0xf496('0xf'));_0x4e1e6c(_0x2c5d99[_0xf496('0x16')][_0xf496('0x15')]);}})['catch'](function(_0x57291a){logger[_0xf496('0x13')](_0xf496('0xe'),_0x534990,_0x57291a);_0x1083f2(_0x57291a);});});}
\ No newline at end of file
index 6a29963..b8f049a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180f=['update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','show','get','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','/:id'];(function(_0x5904ad,_0x288fe6){var _0x22d124=function(_0x19de36){while(--_0x19de36){_0x5904ad['push'](_0x5904ad['shift']());}};_0x22d124(++_0x288fe6);}(_0x180f,0xf3));var _0xf180=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x180f[_0x68ee8b];return _0x5148f7;};'use strict';var multer=require(_0xf180('0x0'));var util=require(_0xf180('0x1'));var path=require('path');var timeout=require(_0xf180('0x2'));var express=require(_0xf180('0x3'));var router=express['Router']();var fs_extra=require(_0xf180('0x4'));var auth=require(_0xf180('0x5'));var interaction=require(_0xf180('0x6'));var config=require(_0xf180('0x7'));var controller=require(_0xf180('0x8'));router['get']('/',auth[_0xf180('0x9')](),controller[_0xf180('0xa')]);router['get']('/:id',auth[_0xf180('0x9')](),controller[_0xf180('0xb')]);router[_0xf180('0xc')](_0xf180('0xd'),auth[_0xf180('0x9')](),controller[_0xf180('0xe')]);router[_0xf180('0xc')](_0xf180('0xf'),auth[_0xf180('0x9')](),controller['getFields']);router[_0xf180('0x10')]('/',auth[_0xf180('0x9')](),controller[_0xf180('0x11')]);router[_0xf180('0x10')](_0xf180('0xd'),auth[_0xf180('0x9')](),controller[_0xf180('0x12')]);router[_0xf180('0x13')](_0xf180('0x14'),auth[_0xf180('0x9')](),controller[_0xf180('0x15')]);router['delete'](_0xf180('0x14'),auth[_0xf180('0x9')](),controller[_0xf180('0x16')]);module[_0xf180('0x17')]=router;
\ No newline at end of file
+var _0xf7a3=['isAuthenticated','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x493593,_0x28bec4){var _0x2ad8f2=function(_0x29ac7b){while(--_0x29ac7b){_0x493593['push'](_0x493593['shift']());}};_0x2ad8f2(++_0x28bec4);}(_0xf7a3,0xac));var _0x3f7a=function(_0x32cf96,_0x7502d5){_0x32cf96=_0x32cf96-0x0;var _0x125cc1=_0xf7a3[_0x32cf96];return _0x125cc1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3f7a('0x0'));var timeout=require(_0x3f7a('0x1'));var express=require('express');var router=express[_0x3f7a('0x2')]();var fs_extra=require(_0x3f7a('0x3'));var auth=require(_0x3f7a('0x4'));var interaction=require(_0x3f7a('0x5'));var config=require(_0x3f7a('0x6'));var controller=require('./intServicenowAccount.controller');router[_0x3f7a('0x7')]('/',auth[_0x3f7a('0x8')](),controller['index']);router[_0x3f7a('0x7')](_0x3f7a('0x9'),auth[_0x3f7a('0x8')](),controller['show']);router[_0x3f7a('0x7')](_0x3f7a('0xa'),auth[_0x3f7a('0x8')](),controller[_0x3f7a('0xb')]);router[_0x3f7a('0x7')]('/:id/fields',auth[_0x3f7a('0x8')](),controller[_0x3f7a('0xc')]);router[_0x3f7a('0xd')]('/',auth[_0x3f7a('0x8')](),controller[_0x3f7a('0xe')]);router[_0x3f7a('0xd')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x3f7a('0xf')]);router[_0x3f7a('0x10')](_0x3f7a('0x9'),auth['isAuthenticated'](),controller[_0x3f7a('0x11')]);router['delete'](_0x3f7a('0x9'),auth[_0x3f7a('0x8')](),controller[_0x3f7a('0x12')]);module[_0x3f7a('0x13')]=router;
\ No newline at end of file
index 3504fe5..8f8fc4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe48=['username','remoteUri','sequelize','exports','STRING'];(function(_0x3f83dc,_0x5c8047){var _0x3876b8=function(_0x1f8423){while(--_0x1f8423){_0x3f83dc['push'](_0x3f83dc['shift']());}};_0x3876b8(++_0x5c8047);}(_0xbe48,0x1a6));var _0x8be4=function(_0x26fe29,_0xa5277f){_0x26fe29=_0x26fe29-0x0;var _0x524eda=_0xbe48[_0x26fe29];return _0x524eda;};'use strict';var Sequelize=require(_0x8be4('0x0'));module[_0x8be4('0x1')]={'name':{'type':Sequelize[_0x8be4('0x2')]},'description':{'type':Sequelize[_0x8be4('0x2')]},'username':{'type':Sequelize[_0x8be4('0x2')],'unique':_0x8be4('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x8be4('0x2')],'unique':_0x8be4('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xe934=['username','remoteUri','sequelize','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe934,0x10a));var _0x4e93=function(_0x477cb9,_0x1f151b){_0x477cb9=_0x477cb9-0x0;var _0x59f8ec=_0xe934[_0x477cb9];return _0x59f8ec;};'use strict';var Sequelize=require(_0x4e93('0x0'));module['exports']={'name':{'type':Sequelize[_0x4e93('0x1')]},'description':{'type':Sequelize[_0x4e93('0x1')]},'username':{'type':Sequelize[_0x4e93('0x1')],'unique':_0x4e93('0x2')},'password':{'type':Sequelize[_0x4e93('0x1')]},'email':{'type':Sequelize[_0x4e93('0x1')]},'remoteUri':{'type':Sequelize[_0x4e93('0x1')],'unique':_0x4e93('0x3')},'serverUrl':{'type':Sequelize[_0x4e93('0x1')],'allowNull':![]}};
\ No newline at end of file
index c62f502..733ea00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe467=['length','nolimit','Subjects','getDescriptions','channel','ServicenowField','Descriptions','getFields','hold_reason','knowledge','subcategory','notify','incident_state','severity','category','parent','made_sla','caused_by','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','sys_domain','state','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','rfc','time_worked','expected_start','opened_at','group_list','reopened_time','resolved_at','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','reopened_by','problem_id','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','escalation','correlation_id','location','username','password','email','remoteUri','serverUrl','substring','format','%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','log','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','test','Wrong\x20credentials','statusCode','True','true','False','inactive','false','value','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','send','ServicenowAccount','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','getConfigurations','findOne','ServicenowConfiguration'];(function(_0x229fd9,_0x167419){var _0x582a4e=function(_0x12d8a6){while(--_0x12d8a6){_0x229fd9['push'](_0x229fd9['shift']());}};_0x582a4e(++_0x167419);}(_0xe467,0x11c));var _0x7e46=function(_0x17bcce,_0x39ec4a){_0x17bcce=_0x17bcce-0x0;var _0x47fccb=_0xe467[_0x17bcce];return _0x47fccb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7e46('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7e46('0x1'));var moment=require(_0x7e46('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x7e46('0x3'));var util=require(_0x7e46('0x4'));var path=require(_0x7e46('0x5'));var sox=require(_0x7e46('0x6'));var csv=require(_0x7e46('0x7'));var ejs=require(_0x7e46('0x8'));var fs=require('fs');var fs_extra=require(_0x7e46('0x9'));var _=require(_0x7e46('0xa'));var squel=require(_0x7e46('0xb'));var crypto=require(_0x7e46('0xc'));var jsforce=require(_0x7e46('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7e46('0x7'));var querystring=require(_0x7e46('0xe'));var Papa=require(_0x7e46('0xf'));var Redis=require('ioredis');var authService=require(_0x7e46('0x10'));var qs=require(_0x7e46('0x11'));var as=require(_0x7e46('0x12'));var hardwareService=require(_0x7e46('0x13'));var logger=require('../../config/logger')(_0x7e46('0x14'));var utils=require(_0x7e46('0x15'));var config=require(_0x7e46('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7e46('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x43c52d,_0x52b36b){_0x52b36b=_0x52b36b||0xcc;return function(_0x3fba41){if(_0x3fba41){return _0x43c52d[_0x7e46('0x18')](_0x52b36b);}return _0x43c52d[_0x7e46('0x19')](_0x52b36b)['end']();};}function respondWithResult(_0x1a2638,_0x299868){_0x299868=_0x299868||0xc8;return function(_0x5108ee){if(_0x5108ee){return _0x1a2638['status'](_0x299868)[_0x7e46('0x1a')](_0x5108ee);}};}function respondWithFilteredResult(_0x2e6f55,_0xcd2acb){return function(_0x2bd959){if(_0x2bd959){var _0x2886cb=typeof _0xcd2acb[_0x7e46('0x1b')]===_0x7e46('0x1c')&&typeof _0xcd2acb['limit']===_0x7e46('0x1c');var _0x1224c7=_0x2bd959[_0x7e46('0x1d')];var _0xc4002b=_0x2886cb?0x0:_0xcd2acb[_0x7e46('0x1b')];var _0x3e14ee=_0x2886cb?_0x2bd959['count']:_0xcd2acb[_0x7e46('0x1b')]+_0xcd2acb[_0x7e46('0x1e')];var _0x407c7d;if(_0x3e14ee>=_0x1224c7){_0x3e14ee=_0x1224c7;_0x407c7d=0xc8;}else{_0x407c7d=0xce;}_0x2e6f55[_0x7e46('0x19')](_0x407c7d);return _0x2e6f55[_0x7e46('0x1f')](_0x7e46('0x20'),_0xc4002b+'-'+_0x3e14ee+'/'+_0x1224c7)['json'](_0x2bd959);}return null;};}function patchUpdates(_0x4632a6){return function(_0x2deeb4){try{jsonpatch[_0x7e46('0x21')](_0x2deeb4,_0x4632a6,!![]);}catch(_0x48a0a4){return BPromise[_0x7e46('0x22')](_0x48a0a4);}return _0x2deeb4[_0x7e46('0x23')]();};}function saveUpdates(_0x4d19e4,_0x26b609){return function(_0x1e44b1){if(_0x1e44b1){return _0x1e44b1[_0x7e46('0x24')](_0x4d19e4)['then'](function(_0xfdd46d){return _0xfdd46d;});}return null;};}function removeEntity(_0x5ea1a9,_0x26b1c5){return function(_0x2516d5){if(_0x2516d5){return _0x2516d5[_0x7e46('0x25')]()[_0x7e46('0x26')](function(){_0x5ea1a9[_0x7e46('0x19')](0xcc)[_0x7e46('0x27')]();});}};}function handleEntityNotFound(_0x2fae56,_0x1da8bd){return function(_0x4b1ae5){if(!_0x4b1ae5){_0x2fae56['sendStatus'](0x194);}return _0x4b1ae5;};}function handleError(_0x4707bb,_0x17b7f1){_0x17b7f1=_0x17b7f1||0x1f4;return function(_0x4e54d5){logger['error'](_0x4e54d5[_0x7e46('0x28')]);if(_0x4e54d5[_0x7e46('0x29')]){delete _0x4e54d5[_0x7e46('0x29')];}_0x4707bb['status'](_0x17b7f1)[_0x7e46('0x2a')](_0x4e54d5);};}exports['index']=function(_0x2221d1,_0x38354d){var _0x210cee={},_0x46c2b7={},_0x428ce6={'count':0x0,'rows':[]};var _0x31b46e=_['map'](db[_0x7e46('0x2b')][_0x7e46('0x2c')],function(_0x10a905){return{'name':_0x10a905[_0x7e46('0x2d')],'type':_0x10a905['type'][_0x7e46('0x2e')]};});_0x46c2b7[_0x7e46('0x2f')]=_[_0x7e46('0x30')](_0x31b46e,_0x7e46('0x29'));_0x46c2b7['query']=_[_0x7e46('0x31')](_0x2221d1[_0x7e46('0x32')]);_0x46c2b7[_0x7e46('0x33')]=_[_0x7e46('0x34')](_0x46c2b7[_0x7e46('0x2f')],_0x46c2b7[_0x7e46('0x32')]);_0x210cee[_0x7e46('0x35')]=_[_0x7e46('0x34')](_0x46c2b7[_0x7e46('0x2f')],qs[_0x7e46('0x36')](_0x2221d1[_0x7e46('0x32')]['fields']));_0x210cee[_0x7e46('0x35')]=_0x210cee[_0x7e46('0x35')]['length']?_0x210cee[_0x7e46('0x35')]:_0x46c2b7[_0x7e46('0x2f')];if(!_0x2221d1[_0x7e46('0x32')][_0x7e46('0x37')]('nolimit')){_0x210cee[_0x7e46('0x1e')]=qs[_0x7e46('0x1e')](_0x2221d1[_0x7e46('0x32')][_0x7e46('0x1e')]);_0x210cee['offset']=qs[_0x7e46('0x1b')](_0x2221d1[_0x7e46('0x32')][_0x7e46('0x1b')]);}_0x210cee[_0x7e46('0x38')]=qs['sort'](_0x2221d1[_0x7e46('0x32')][_0x7e46('0x39')]);_0x210cee[_0x7e46('0x3a')]=qs['filters'](_[_0x7e46('0x3b')](_0x2221d1[_0x7e46('0x32')],_0x46c2b7['filters']),_0x31b46e);if(_0x2221d1['query'][_0x7e46('0x3c')]){_0x210cee['where']=_[_0x7e46('0x3d')](_0x210cee[_0x7e46('0x3a')],{'$or':_[_0x7e46('0x30')](_0x31b46e,function(_0x459fef){if(_0x459fef[_0x7e46('0x3e')]!==_0x7e46('0x3f')){var _0x16b2a9={};_0x16b2a9[_0x459fef[_0x7e46('0x29')]]={'$like':'%'+_0x2221d1[_0x7e46('0x32')]['filter']+'%'};return _0x16b2a9;}})});}_0x210cee=_[_0x7e46('0x3d')]({},_0x210cee,_0x2221d1[_0x7e46('0x40')]);var _0x397a79={'where':_0x210cee[_0x7e46('0x3a')]};return db['ServicenowAccount'][_0x7e46('0x1d')](_0x397a79)[_0x7e46('0x26')](function(_0x24cc03){_0x428ce6[_0x7e46('0x1d')]=_0x24cc03;if(_0x2221d1[_0x7e46('0x32')][_0x7e46('0x41')]){_0x210cee[_0x7e46('0x42')]=[{'all':!![]}];}return db['ServicenowAccount']['findAll'](_0x210cee);})[_0x7e46('0x26')](function(_0xdd08a7){_0x428ce6['rows']=_0xdd08a7;return _0x428ce6;})[_0x7e46('0x26')](respondWithFilteredResult(_0x38354d,_0x210cee))[_0x7e46('0x43')](handleError(_0x38354d,null));};exports[_0x7e46('0x44')]=function(_0x47c6d0,_0x572802){var _0x219c3c={'raw':![],'where':{'id':_0x47c6d0[_0x7e46('0x45')]['id']}},_0x2c0fb0={};_0x2c0fb0[_0x7e46('0x2f')]=_[_0x7e46('0x31')](db[_0x7e46('0x2b')]['rawAttributes']);_0x2c0fb0[_0x7e46('0x32')]=_[_0x7e46('0x31')](_0x47c6d0['query']);_0x2c0fb0[_0x7e46('0x33')]=_['intersection'](_0x2c0fb0[_0x7e46('0x2f')],_0x2c0fb0['query']);_0x219c3c[_0x7e46('0x35')]=_[_0x7e46('0x34')](_0x2c0fb0[_0x7e46('0x2f')],qs[_0x7e46('0x36')](_0x47c6d0[_0x7e46('0x32')][_0x7e46('0x36')]));_0x219c3c[_0x7e46('0x35')]=_0x219c3c[_0x7e46('0x35')]['length']?_0x219c3c['attributes']:_0x2c0fb0['model'];if(_0x47c6d0[_0x7e46('0x32')][_0x7e46('0x41')]){_0x219c3c[_0x7e46('0x42')]=[{'all':!![]}];}_0x219c3c=_[_0x7e46('0x3d')]({},_0x219c3c,_0x47c6d0['options']);return db[_0x7e46('0x2b')][_0x7e46('0x46')](_0x219c3c)[_0x7e46('0x26')](handleEntityNotFound(_0x572802,null))['then'](respondWithResult(_0x572802,null))['catch'](handleError(_0x572802,null));};exports[_0x7e46('0x47')]=function(_0x14ce4d,_0x4a6eb5){return db['ServicenowAccount']['create'](_0x14ce4d[_0x7e46('0x48')],{})[_0x7e46('0x26')](respondWithResult(_0x4a6eb5,0xc9))[_0x7e46('0x43')](handleError(_0x4a6eb5,null));};exports[_0x7e46('0x24')]=function(_0x1cfba2,_0x1ba806){if(_0x1cfba2[_0x7e46('0x48')]['id']){delete _0x1cfba2[_0x7e46('0x48')]['id'];}return db[_0x7e46('0x2b')]['find']({'where':{'id':_0x1cfba2['params']['id']}})[_0x7e46('0x26')](handleEntityNotFound(_0x1ba806,null))[_0x7e46('0x26')](saveUpdates(_0x1cfba2['body'],null))['then'](respondWithResult(_0x1ba806,null))[_0x7e46('0x43')](handleError(_0x1ba806,null));};exports[_0x7e46('0x25')]=function(_0x39a313,_0x19a4c2){return db[_0x7e46('0x2b')][_0x7e46('0x46')]({'where':{'id':_0x39a313['params']['id']}})[_0x7e46('0x26')](handleEntityNotFound(_0x19a4c2,null))[_0x7e46('0x26')](removeEntity(_0x19a4c2,null))['catch'](handleError(_0x19a4c2,null));};exports[_0x7e46('0x49')]=function(_0x47bf5a,_0x61dcaa,_0x32ef24){var _0x421bf1={};var _0x17ed6d={};var _0x51825b;var _0x2066da;return db[_0x7e46('0x2b')][_0x7e46('0x4a')]({'where':{'id':_0x47bf5a[_0x7e46('0x45')]['id']}})['then'](handleEntityNotFound(_0x61dcaa,null))['then'](function(_0x26abb7){if(_0x26abb7){_0x51825b=_0x26abb7;_0x17ed6d[_0x7e46('0x2f')]=_[_0x7e46('0x31')](db[_0x7e46('0x4b')][_0x7e46('0x2c')]);_0x17ed6d[_0x7e46('0x32')]=_[_0x7e46('0x31')](_0x47bf5a[_0x7e46('0x32')]);_0x17ed6d['filters']=_[_0x7e46('0x34')](_0x17ed6d[_0x7e46('0x2f')],_0x17ed6d[_0x7e46('0x32')]);_0x421bf1[_0x7e46('0x35')]=_[_0x7e46('0x34')](_0x17ed6d[_0x7e46('0x2f')],qs['fields'](_0x47bf5a['query']['fields']));_0x421bf1[_0x7e46('0x35')]=_0x421bf1[_0x7e46('0x35')][_0x7e46('0x4c')]?_0x421bf1['attributes']:_0x17ed6d[_0x7e46('0x2f')];_0x421bf1[_0x7e46('0x38')]=qs['sort'](_0x47bf5a['query'][_0x7e46('0x39')]);_0x421bf1[_0x7e46('0x3a')]=qs[_0x7e46('0x33')](_[_0x7e46('0x3b')](_0x47bf5a[_0x7e46('0x32')],_0x17ed6d['filters']));if(_0x47bf5a['query']['filter']){_0x421bf1[_0x7e46('0x3a')]=_[_0x7e46('0x3d')](_0x421bf1[_0x7e46('0x3a')],{'$or':_['map'](_0x421bf1[_0x7e46('0x35')],function(_0x205104){var _0x229385={};_0x229385[_0x205104]={'$like':'%'+_0x47bf5a['query'][_0x7e46('0x3c')]+'%'};return _0x229385;})});}_0x421bf1=_[_0x7e46('0x3d')]({},_0x421bf1,_0x47bf5a['options']);return _0x51825b[_0x7e46('0x49')](_0x421bf1);}})['then'](function(_0x338836){if(_0x338836){_0x2066da=_0x338836['length'];if(!_0x47bf5a[_0x7e46('0x32')][_0x7e46('0x37')](_0x7e46('0x4d'))){_0x421bf1[_0x7e46('0x1e')]=qs['limit'](_0x47bf5a[_0x7e46('0x32')]['limit']);_0x421bf1[_0x7e46('0x1b')]=qs[_0x7e46('0x1b')](_0x47bf5a[_0x7e46('0x32')][_0x7e46('0x1b')]);}return _0x51825b[_0x7e46('0x49')](_0x421bf1);}})['then'](function(_0x2f17af){if(_0x2f17af){return _0x2f17af?{'count':_0x2066da,'rows':_0x2f17af}:null;}})[_0x7e46('0x26')](respondWithResult(_0x61dcaa,null))[_0x7e46('0x43')](handleError(_0x61dcaa,null));};exports['addConfiguration']=function(_0xaac6c5,_0x323a55,_0x215d07){if(_0xaac6c5['body']['id']){delete _0xaac6c5[_0x7e46('0x48')]['id'];}return db[_0x7e46('0x2b')][_0x7e46('0x4a')]({'where':{'id':_0xaac6c5[_0x7e46('0x45')]['id']}})[_0x7e46('0x26')](handleEntityNotFound(_0x323a55,null))[_0x7e46('0x26')](function(_0x48e55b){if(_0x48e55b){_0xaac6c5[_0x7e46('0x48')]['AccountId']=_0x48e55b['id'];_0xaac6c5[_0x7e46('0x48')][_0x7e46('0x4e')]=integrations['getSubjects'](_0xaac6c5[_0x7e46('0x48')]['channel'],_0xaac6c5[_0x7e46('0x48')]['type']);_0xaac6c5[_0x7e46('0x48')]['Descriptions']=integrations[_0x7e46('0x4f')](_0xaac6c5['body'][_0x7e46('0x50')],_0xaac6c5[_0x7e46('0x48')][_0x7e46('0x3e')]);return db[_0x7e46('0x4b')]['create'](_0xaac6c5[_0x7e46('0x48')],{'include':[{'model':db[_0x7e46('0x51')],'as':_0x7e46('0x4e')},{'model':db['ServicenowField'],'as':_0x7e46('0x52')}]});}return null;})['then'](respondWithResult(_0x323a55,null))[_0x7e46('0x43')](handleError(_0x323a55,null));};exports[_0x7e46('0x53')]=function(_0x52a115,_0x35519e,_0x1039db){var _0x4dc3d3=['made_sla',_0x7e46('0x54'),_0x7e46('0x55'),_0x7e46('0x56'),'close_code',_0x7e46('0x57'),_0x7e46('0x58'),_0x7e46('0x59'),_0x7e46('0x5a')];var _0x52f8ce=[_0x7e46('0x5b'),_0x7e46('0x5c'),_0x7e46('0x5d'),'watch_list','upon_reject',_0x7e46('0x5e'),_0x7e46('0x5f'),_0x7e46('0x54'),_0x7e46('0x60'),_0x7e46('0x61'),_0x7e46('0x62'),_0x7e46('0x63'),_0x7e46('0x64'),'user_input','sys_created_on',_0x7e46('0x65'),_0x7e46('0x66'),'sys_created_by',_0x7e46('0x55'),_0x7e46('0x38'),_0x7e46('0x67'),_0x7e46('0x68'),_0x7e46('0x69'),_0x7e46('0x6a'),_0x7e46('0x6b'),_0x7e46('0x6c'),_0x7e46('0x6d'),_0x7e46('0x6e'),_0x7e46('0x6f'),'sys_domain_path',_0x7e46('0x70'),_0x7e46('0x71'),_0x7e46('0x72'),_0x7e46('0x73'),'business_duration',_0x7e46('0x74'),'work_end',_0x7e46('0x75'),_0x7e46('0x76'),'caller_id',_0x7e46('0x77'),'subcategory',_0x7e46('0x78'),_0x7e46('0x79'),'close_code',_0x7e46('0x7a'),_0x7e46('0x7b'),_0x7e46('0x7c'),_0x7e46('0x7d'),_0x7e46('0x7e'),_0x7e46('0x7f'),'description',_0x7e46('0x80'),'notify',_0x7e46('0x81'),_0x7e46('0x82'),_0x7e46('0x83'),_0x7e46('0x84'),'parent_incident','sys_id','contact_type',_0x7e46('0x85'),_0x7e46('0x58'),'urgency',_0x7e46('0x86'),'company',_0x7e46('0x87'),_0x7e46('0x88'),_0x7e46('0x89'),_0x7e46('0x59'),_0x7e46('0x8a'),_0x7e46('0x8b'),_0x7e46('0x8c'),_0x7e46('0x8d'),_0x7e46('0x8e'),_0x7e46('0x8f'),_0x7e46('0x90'),'sys_tags',_0x7e46('0x91'),'upon_approval',_0x7e46('0x92'),_0x7e46('0x93'),_0x7e46('0x5a')];var _0x41cb05='';var _0x3edbbe='';var _0x262d65=[];var _0x1c530f='';var _0x4e035e='';var _0x218c06=[];var _0x5a828a='';var _0x1e37d1='';var _0x37cd72={};var _0x3a7539='';return db['ServicenowAccount'][_0x7e46('0x4a')]({'where':{'id':_0x52a115['params']['id']},'attributes':['id',_0x7e46('0x94'),_0x7e46('0x95'),_0x7e46('0x96'),_0x7e46('0x97'),_0x7e46('0x98')]})['then'](handleEntityNotFound(_0x35519e,null))[_0x7e46('0x26')](function(_0x131680){if(_0x131680){_0x3a7539=_0x131680[_0x7e46('0x97')];var _0x53efc1=_0x3a7539['slice'](-0x1);if(_0x53efc1==='/'){_0x3a7539=_0x3a7539[_0x7e46('0x99')](0x0,_0x3a7539['lastIndexOf'](_0x53efc1));}_0x1e37d1=util[_0x7e46('0x9a')](_0x7e46('0x9b'),_0x3a7539);_0x5a828a=util['format']('%s/api/now/table/',_0x3a7539);_0x37cd72={'user':_0x131680[_0x7e46('0x94')],'pass':_0x131680[_0x7e46('0x95')]};var _0x13b796={'method':_0x7e46('0x9c'),'uri':_0x1e37d1+_0x7e46('0x9d'),'auth':_0x37cd72,'json':!![]};return rp(_0x13b796);}})[_0x7e46('0x26')](function(_0x223e9e){if(_0x223e9e[_0x7e46('0x9e')][_0x7e46('0x4c')]>0x0){_0x41cb05=_0x223e9e[_0x7e46('0x9e')];}console[_0x7e46('0x9f')]('incident\x20table\x20objects',_0x41cb05);_0x218c06=[];_0x3edbbe=Object[_0x7e46('0xa0')]([],_0x41cb05);_[_0x7e46('0xa1')](_0x3edbbe,function(_0x2729dc){return!_0x4dc3d3[_0x7e46('0xa2')](_0x2729dc[_0x7e46('0x29')]);});_0x3edbbe[_0x7e46('0xa3')](function(_0x248229){var _0x325b3e=createFieldObject(_0x5a828a,_0x37cd72,_0x248229[_0x7e46('0xa4')],_0x248229[_0x7e46('0x29')],_0x248229[_0x7e46('0xa5')],![]);_0x218c06[_0x7e46('0xa6')](_0x325b3e);});return Promise[_0x7e46('0xa7')](_0x218c06);})[_0x7e46('0x26')](function(_0x21dfce){_0x262d65=_0x21dfce;_0x1c530f=Object[_0x7e46('0xa0')]([],_0x41cb05);console[_0x7e46('0x9f')](_0x7e46('0xa8'),_0x41cb05);_[_0x7e46('0xa1')](_0x1c530f,function(_0x3cab82){return _0x52f8ce[_0x7e46('0xa2')](_0x3cab82[_0x7e46('0x29')]);});console[_0x7e46('0x9f')](_0x7e46('0xa9'),_0x1c530f);_0x218c06=[];_0x1c530f[_0x7e46('0xa3')](function(_0x888a40){var _0x3c7482=createFieldObject(_0x5a828a,_0x37cd72,_0x888a40[_0x7e46('0xa4')],_0x888a40[_0x7e46('0x29')],_0x888a40[_0x7e46('0xa5')],!![]);_0x218c06[_0x7e46('0xa6')](_0x3c7482);});return Promise['all'](_0x218c06);})[_0x7e46('0x26')](function(_0x3e0927){_0x4e035e=_0x3e0927;var _0x4fdb14=_0x262d65[_0x7e46('0xaa')](_0x4e035e);return{'count':_0x4fdb14[_0x7e46('0x4c')],'rows':_0x4fdb14};})[_0x7e46('0x26')](respondWithResult(_0x35519e,null))[_0x7e46('0x43')](function(_0x2fc25f){console[_0x7e46('0x9f')]('ServiceNow\x20error:\x20'+_0x2fc25f);var _0x5a16cd=_0x52a115[_0x7e46('0x32')][_0x7e46('0xab')]?0x1f4:_0x2fc25f['statusCode']||0x1f4;logger['error'](_0x2fc25f['stack']);delete _0x2fc25f[_0x7e46('0x29')];if(_0x5a16cd===0x191){_0x5a16cd=0x190;}_0x35519e[_0x7e46('0x19')](_0x5a16cd)['send'](_0x52a115[_0x7e46('0x32')][_0x7e46('0xab')]?{'message':_0x7e46('0xac'),'statusCode':_0x2fc25f[_0x7e46('0xad')]}:_0x2fc25f);});};function createFieldObject(_0x4ca485,_0x4f7797,_0x20060e,_0x540ed1,_0x48a8d7,_0x1de5d9){return new Promise(function(_0x583813,_0x54be48){var _0x41dcd7={'id':_0x540ed1,'name':_0x48a8d7,'custom':_0x1de5d9};if(_0x20060e==='boolean'){_0x41dcd7[_0x7e46('0x40')]=[{'name':_0x7e46('0xae'),'value':_0x7e46('0xaf')},{'name':_0x7e46('0xb0'),'value':'false'}];_0x583813(_0x41dcd7);}else{var _0x3afb96={'method':_0x7e46('0x9c'),'uri':_0x4ca485+'sys_choice?sysparm_query=name=incident^element='+_0x540ed1,'auth':_0x4f7797,'json':!![]};return rp(_0x3afb96)[_0x7e46('0x26')](function(_0x162296){var _0x4c796c=[];if(_0x162296[_0x7e46('0x9e')][_0x7e46('0x4c')]>0x0){_0x162296[_0x7e46('0x9e')][_0x7e46('0xa3')](function(_0x526d1d){if(_0x526d1d[_0x7e46('0xb1')]===_0x7e46('0xb2')){var _0x58224f={'name':_0x526d1d['label'],'value':_0x526d1d[_0x7e46('0xb3')]};_0x4c796c[_0x7e46('0xa6')](_0x58224f);}});}_0x41dcd7[_0x7e46('0x40')]=_0x4c796c;if(_0x41dcd7[_0x7e46('0x40')][_0x7e46('0x4c')]>0x0){_0x583813(_0x41dcd7);}else{if(_0x1de5d9==![]){_0x583813();}else{_0x583813(_0x41dcd7);}}});}});}
\ No newline at end of file
+var _0x9497=['filter','merge','options','includeAll','include','catch','show','params','length','find','create','body','getConfigurations','findOne','ServicenowConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','category','parent','caused_by','watch_list','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','sys_created_on','sys_domain','calendar_stc','closed_at','cmdb_ci','delivery_plan','active','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','correlation_display','business_stc','additional_assignee_list','description','sys_class_name','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','assigned_to','comments','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','serverUrl','substring','lastIndexOf','format','%s/api/now/table/','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','label','push','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','concat','ServiceNow\x20error:\x20','test','statusCode','send','Wrong\x20credentials','True','true','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','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','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','ServicenowAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','order','sort','pick','where','VIRTUAL'];(function(_0x437a4f,_0x3ec15a){var _0x4db657=function(_0x1496bb){while(--_0x1496bb){_0x437a4f['push'](_0x437a4f['shift']());}};_0x4db657(++_0x3ec15a);}(_0x9497,0x7e));var _0x7949=function(_0x5bf244,_0x429f60){_0x5bf244=_0x5bf244-0x0;var _0xc6d1e=_0x9497[_0x5bf244];return _0xc6d1e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7949('0x0'));var jsonpatch=require(_0x7949('0x1'));var rp=require('request-promise');var moment=require(_0x7949('0x2'));var BPromise=require(_0x7949('0x3'));var Mustache=require(_0x7949('0x4'));var util=require('util');var path=require(_0x7949('0x5'));var sox=require(_0x7949('0x6'));var csv=require(_0x7949('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7949('0x8'));var _=require(_0x7949('0x9'));var squel=require('squel');var crypto=require(_0x7949('0xa'));var jsforce=require(_0x7949('0xb'));var deskjs=require(_0x7949('0xc'));var toCsv=require(_0x7949('0x7'));var querystring=require(_0x7949('0xd'));var Papa=require(_0x7949('0xe'));var Redis=require(_0x7949('0xf'));var authService=require(_0x7949('0x10'));var qs=require(_0x7949('0x11'));var as=require(_0x7949('0x12'));var hardwareService=require(_0x7949('0x13'));var logger=require(_0x7949('0x14'))(_0x7949('0x15'));var utils=require(_0x7949('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7949('0x17'));var db=require(_0x7949('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1a5309,_0x5235d7){_0x5235d7=_0x5235d7||0xcc;return function(_0x59ac27){if(_0x59ac27){return _0x1a5309[_0x7949('0x19')](_0x5235d7);}return _0x1a5309[_0x7949('0x1a')](_0x5235d7)[_0x7949('0x1b')]();};}function respondWithResult(_0x581949,_0x40e0d3){_0x40e0d3=_0x40e0d3||0xc8;return function(_0xd8f80e){if(_0xd8f80e){return _0x581949[_0x7949('0x1a')](_0x40e0d3)[_0x7949('0x1c')](_0xd8f80e);}};}function respondWithFilteredResult(_0x240e71,_0x5e67ae){return function(_0x5563da){if(_0x5563da){var _0x3c73df=typeof _0x5e67ae['offset']==='undefined'&&typeof _0x5e67ae[_0x7949('0x1d')]===_0x7949('0x1e');var _0x4f86a8=_0x5563da[_0x7949('0x1f')];var _0x248630=_0x3c73df?0x0:_0x5e67ae[_0x7949('0x20')];var _0x3bc972=_0x3c73df?_0x5563da['count']:_0x5e67ae[_0x7949('0x20')]+_0x5e67ae[_0x7949('0x1d')];var _0x3037e3;if(_0x3bc972>=_0x4f86a8){_0x3bc972=_0x4f86a8;_0x3037e3=0xc8;}else{_0x3037e3=0xce;}_0x240e71[_0x7949('0x1a')](_0x3037e3);return _0x240e71[_0x7949('0x21')](_0x7949('0x22'),_0x248630+'-'+_0x3bc972+'/'+_0x4f86a8)[_0x7949('0x1c')](_0x5563da);}return null;};}function patchUpdates(_0xeed7f4){return function(_0x55c30a){try{jsonpatch[_0x7949('0x23')](_0x55c30a,_0xeed7f4,!![]);}catch(_0x511ae2){return BPromise[_0x7949('0x24')](_0x511ae2);}return _0x55c30a[_0x7949('0x25')]();};}function saveUpdates(_0x2049a7,_0x4abc5b){return function(_0x24b88a){if(_0x24b88a){return _0x24b88a[_0x7949('0x26')](_0x2049a7)[_0x7949('0x27')](function(_0x2b80f9){return _0x2b80f9;});}return null;};}function removeEntity(_0x52b56d,_0x1a306d){return function(_0x12179b){if(_0x12179b){return _0x12179b[_0x7949('0x28')]()[_0x7949('0x27')](function(){_0x52b56d[_0x7949('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e49c0,_0x127851){return function(_0x2d2d72){if(!_0x2d2d72){_0x5e49c0['sendStatus'](0x194);}return _0x2d2d72;};}function handleError(_0x50adb3,_0x3a8e85){_0x3a8e85=_0x3a8e85||0x1f4;return function(_0x46f4bb){logger[_0x7949('0x29')](_0x46f4bb[_0x7949('0x2a')]);if(_0x46f4bb[_0x7949('0x2b')]){delete _0x46f4bb[_0x7949('0x2b')];}_0x50adb3[_0x7949('0x1a')](_0x3a8e85)['send'](_0x46f4bb);};}exports[_0x7949('0x2c')]=function(_0x450588,_0x49353a){var _0x9e4597={},_0x3c7cb6={},_0x207fa8={'count':0x0,'rows':[]};var _0x1d889a=_[_0x7949('0x2d')](db[_0x7949('0x2e')][_0x7949('0x2f')],function(_0x85bc14){return{'name':_0x85bc14[_0x7949('0x30')],'type':_0x85bc14[_0x7949('0x31')][_0x7949('0x32')]};});_0x3c7cb6[_0x7949('0x33')]=_[_0x7949('0x2d')](_0x1d889a,_0x7949('0x2b'));_0x3c7cb6[_0x7949('0x34')]=_[_0x7949('0x35')](_0x450588['query']);_0x3c7cb6[_0x7949('0x36')]=_['intersection'](_0x3c7cb6[_0x7949('0x33')],_0x3c7cb6['query']);_0x9e4597[_0x7949('0x37')]=_[_0x7949('0x38')](_0x3c7cb6[_0x7949('0x33')],qs['fields'](_0x450588[_0x7949('0x34')][_0x7949('0x39')]));_0x9e4597[_0x7949('0x37')]=_0x9e4597[_0x7949('0x37')]['length']?_0x9e4597[_0x7949('0x37')]:_0x3c7cb6['model'];if(!_0x450588['query']['hasOwnProperty']('nolimit')){_0x9e4597['limit']=qs[_0x7949('0x1d')](_0x450588['query']['limit']);_0x9e4597[_0x7949('0x20')]=qs[_0x7949('0x20')](_0x450588['query'][_0x7949('0x20')]);}_0x9e4597[_0x7949('0x3a')]=qs[_0x7949('0x3b')](_0x450588[_0x7949('0x34')][_0x7949('0x3b')]);_0x9e4597['where']=qs[_0x7949('0x36')](_[_0x7949('0x3c')](_0x450588[_0x7949('0x34')],_0x3c7cb6[_0x7949('0x36')]),_0x1d889a);if(_0x450588[_0x7949('0x34')]['filter']){_0x9e4597[_0x7949('0x3d')]=_['merge'](_0x9e4597[_0x7949('0x3d')],{'$or':_[_0x7949('0x2d')](_0x1d889a,function(_0x7a1b95){if(_0x7a1b95['type']!==_0x7949('0x3e')){var _0x364fa6={};_0x364fa6[_0x7a1b95['name']]={'$like':'%'+_0x450588[_0x7949('0x34')][_0x7949('0x3f')]+'%'};return _0x364fa6;}})});}_0x9e4597=_[_0x7949('0x40')]({},_0x9e4597,_0x450588[_0x7949('0x41')]);var _0x3879fa={'where':_0x9e4597[_0x7949('0x3d')]};return db['ServicenowAccount']['count'](_0x3879fa)[_0x7949('0x27')](function(_0x5029e3){_0x207fa8[_0x7949('0x1f')]=_0x5029e3;if(_0x450588['query'][_0x7949('0x42')]){_0x9e4597[_0x7949('0x43')]=[{'all':!![]}];}return db[_0x7949('0x2e')]['findAll'](_0x9e4597);})[_0x7949('0x27')](function(_0x587697){_0x207fa8['rows']=_0x587697;return _0x207fa8;})[_0x7949('0x27')](respondWithFilteredResult(_0x49353a,_0x9e4597))[_0x7949('0x44')](handleError(_0x49353a,null));};exports[_0x7949('0x45')]=function(_0x54f0f3,_0x21581e){var _0x49a66e={'raw':![],'where':{'id':_0x54f0f3[_0x7949('0x46')]['id']}},_0x38699e={};_0x38699e[_0x7949('0x33')]=_[_0x7949('0x35')](db[_0x7949('0x2e')]['rawAttributes']);_0x38699e[_0x7949('0x34')]=_['keys'](_0x54f0f3[_0x7949('0x34')]);_0x38699e['filters']=_[_0x7949('0x38')](_0x38699e['model'],_0x38699e[_0x7949('0x34')]);_0x49a66e[_0x7949('0x37')]=_[_0x7949('0x38')](_0x38699e[_0x7949('0x33')],qs['fields'](_0x54f0f3[_0x7949('0x34')]['fields']));_0x49a66e[_0x7949('0x37')]=_0x49a66e[_0x7949('0x37')][_0x7949('0x47')]?_0x49a66e[_0x7949('0x37')]:_0x38699e[_0x7949('0x33')];if(_0x54f0f3[_0x7949('0x34')]['includeAll']){_0x49a66e[_0x7949('0x43')]=[{'all':!![]}];}_0x49a66e=_[_0x7949('0x40')]({},_0x49a66e,_0x54f0f3[_0x7949('0x41')]);return db[_0x7949('0x2e')][_0x7949('0x48')](_0x49a66e)[_0x7949('0x27')](handleEntityNotFound(_0x21581e,null))[_0x7949('0x27')](respondWithResult(_0x21581e,null))[_0x7949('0x44')](handleError(_0x21581e,null));};exports[_0x7949('0x49')]=function(_0x188913,_0x5b8ef0){return db[_0x7949('0x2e')][_0x7949('0x49')](_0x188913[_0x7949('0x4a')],{})[_0x7949('0x27')](respondWithResult(_0x5b8ef0,0xc9))[_0x7949('0x44')](handleError(_0x5b8ef0,null));};exports['update']=function(_0x9db307,_0x1b5abd){if(_0x9db307['body']['id']){delete _0x9db307[_0x7949('0x4a')]['id'];}return db['ServicenowAccount'][_0x7949('0x48')]({'where':{'id':_0x9db307[_0x7949('0x46')]['id']}})[_0x7949('0x27')](handleEntityNotFound(_0x1b5abd,null))[_0x7949('0x27')](saveUpdates(_0x9db307[_0x7949('0x4a')],null))[_0x7949('0x27')](respondWithResult(_0x1b5abd,null))[_0x7949('0x44')](handleError(_0x1b5abd,null));};exports[_0x7949('0x28')]=function(_0x1369b0,_0x49c571){return db['ServicenowAccount'][_0x7949('0x48')]({'where':{'id':_0x1369b0[_0x7949('0x46')]['id']}})['then'](handleEntityNotFound(_0x49c571,null))['then'](removeEntity(_0x49c571,null))[_0x7949('0x44')](handleError(_0x49c571,null));};exports[_0x7949('0x4b')]=function(_0x1d9d55,_0x13a877,_0x21ff8a){var _0x1e8688={};var _0x379b31={};var _0x140b82;var _0x264b84;return db[_0x7949('0x2e')][_0x7949('0x4c')]({'where':{'id':_0x1d9d55['params']['id']}})[_0x7949('0x27')](handleEntityNotFound(_0x13a877,null))['then'](function(_0xacad39){if(_0xacad39){_0x140b82=_0xacad39;_0x379b31[_0x7949('0x33')]=_['keys'](db[_0x7949('0x4d')][_0x7949('0x2f')]);_0x379b31['query']=_[_0x7949('0x35')](_0x1d9d55[_0x7949('0x34')]);_0x379b31[_0x7949('0x36')]=_[_0x7949('0x38')](_0x379b31[_0x7949('0x33')],_0x379b31[_0x7949('0x34')]);_0x1e8688['attributes']=_['intersection'](_0x379b31[_0x7949('0x33')],qs[_0x7949('0x39')](_0x1d9d55[_0x7949('0x34')][_0x7949('0x39')]));_0x1e8688[_0x7949('0x37')]=_0x1e8688[_0x7949('0x37')][_0x7949('0x47')]?_0x1e8688['attributes']:_0x379b31[_0x7949('0x33')];_0x1e8688[_0x7949('0x3a')]=qs[_0x7949('0x3b')](_0x1d9d55[_0x7949('0x34')][_0x7949('0x3b')]);_0x1e8688[_0x7949('0x3d')]=qs[_0x7949('0x36')](_[_0x7949('0x3c')](_0x1d9d55[_0x7949('0x34')],_0x379b31['filters']));if(_0x1d9d55[_0x7949('0x34')][_0x7949('0x3f')]){_0x1e8688['where']=_['merge'](_0x1e8688[_0x7949('0x3d')],{'$or':_['map'](_0x1e8688[_0x7949('0x37')],function(_0x115d8a){var _0x551646={};_0x551646[_0x115d8a]={'$like':'%'+_0x1d9d55[_0x7949('0x34')][_0x7949('0x3f')]+'%'};return _0x551646;})});}_0x1e8688=_['merge']({},_0x1e8688,_0x1d9d55['options']);return _0x140b82['getConfigurations'](_0x1e8688);}})['then'](function(_0x33b867){if(_0x33b867){_0x264b84=_0x33b867[_0x7949('0x47')];if(!_0x1d9d55[_0x7949('0x34')][_0x7949('0x4e')](_0x7949('0x4f'))){_0x1e8688[_0x7949('0x1d')]=qs[_0x7949('0x1d')](_0x1d9d55[_0x7949('0x34')][_0x7949('0x1d')]);_0x1e8688['offset']=qs[_0x7949('0x20')](_0x1d9d55[_0x7949('0x34')][_0x7949('0x20')]);}return _0x140b82[_0x7949('0x4b')](_0x1e8688);}})[_0x7949('0x27')](function(_0x243da8){if(_0x243da8){return _0x243da8?{'count':_0x264b84,'rows':_0x243da8}:null;}})[_0x7949('0x27')](respondWithResult(_0x13a877,null))[_0x7949('0x44')](handleError(_0x13a877,null));};exports[_0x7949('0x50')]=function(_0x573a29,_0x4dcafe,_0x5e398f){if(_0x573a29[_0x7949('0x4a')]['id']){delete _0x573a29['body']['id'];}return db[_0x7949('0x2e')][_0x7949('0x4c')]({'where':{'id':_0x573a29[_0x7949('0x46')]['id']}})[_0x7949('0x27')](handleEntityNotFound(_0x4dcafe,null))[_0x7949('0x27')](function(_0x4561be){if(_0x4561be){_0x573a29[_0x7949('0x4a')][_0x7949('0x51')]=_0x4561be['id'];_0x573a29[_0x7949('0x4a')][_0x7949('0x52')]=integrations[_0x7949('0x53')](_0x573a29[_0x7949('0x4a')][_0x7949('0x54')],_0x573a29[_0x7949('0x4a')][_0x7949('0x31')]);_0x573a29['body'][_0x7949('0x55')]=integrations[_0x7949('0x56')](_0x573a29[_0x7949('0x4a')]['channel'],_0x573a29[_0x7949('0x4a')]['type']);return db[_0x7949('0x4d')][_0x7949('0x49')](_0x573a29[_0x7949('0x4a')],{'include':[{'model':db[_0x7949('0x57')],'as':'Subjects'},{'model':db[_0x7949('0x57')],'as':'Descriptions'}]});}return null;})[_0x7949('0x27')](respondWithResult(_0x4dcafe,null))['catch'](handleError(_0x4dcafe,null));};exports[_0x7949('0x58')]=function(_0x707d9c,_0x281064,_0x3d0e3a){var _0x382f79=[_0x7949('0x59'),_0x7949('0x5a'),_0x7949('0x5b'),_0x7949('0x5c'),_0x7949('0x5d'),_0x7949('0x5e'),_0x7949('0x5f'),_0x7949('0x60'),_0x7949('0x61')];var _0x113407=[_0x7949('0x62'),_0x7949('0x59'),_0x7949('0x63'),_0x7949('0x64'),'upon_reject',_0x7949('0x65'),_0x7949('0x66'),_0x7949('0x5a'),_0x7949('0x67'),_0x7949('0x68'),_0x7949('0x69'),_0x7949('0x6a'),_0x7949('0x6b'),'user_input',_0x7949('0x6c'),_0x7949('0x6d'),'state','sys_created_by','knowledge','order',_0x7949('0x6e'),_0x7949('0x6f'),_0x7949('0x70'),_0x7949('0x71'),'impact',_0x7949('0x72'),'work_notes_list',_0x7949('0x73'),_0x7949('0x74'),_0x7949('0x75'),_0x7949('0x76'),_0x7949('0x77'),_0x7949('0x78'),'opened_at',_0x7949('0x79'),_0x7949('0x7a'),_0x7949('0x7b'),_0x7949('0x7c'),_0x7949('0x7d'),_0x7949('0x7e'),_0x7949('0x7f'),_0x7949('0x5c'),_0x7949('0x80'),'short_description',_0x7949('0x5d'),_0x7949('0x81'),'delivery_task','work_start','assignment_group',_0x7949('0x82'),_0x7949('0x83'),_0x7949('0x84'),'calendar_duration',_0x7949('0x5e'),_0x7949('0x85'),_0x7949('0x86'),_0x7949('0x87'),_0x7949('0x88'),_0x7949('0x89'),'sys_id',_0x7949('0x8a'),_0x7949('0x8b'),_0x7949('0x5f'),_0x7949('0x8c'),_0x7949('0x8d'),_0x7949('0x8e'),_0x7949('0x8f'),'activity_due',_0x7949('0x90'),_0x7949('0x60'),_0x7949('0x91'),_0x7949('0x92'),'approval',_0x7949('0x93'),_0x7949('0x94'),_0x7949('0x95'),_0x7949('0x96'),_0x7949('0x97'),_0x7949('0x98'),_0x7949('0x99'),_0x7949('0x9a'),_0x7949('0x9b'),_0x7949('0x61')];var _0x58b201='';var _0x3d143f='';var _0x42f854=[];var _0x25e087='';var _0x4d5c12='';var _0x49265d=[];var _0x467682='';var _0x358222='';var _0x3421a7={};var _0x249e35='';return db[_0x7949('0x2e')]['findOne']({'where':{'id':_0x707d9c[_0x7949('0x46')]['id']},'attributes':['id',_0x7949('0x9c'),_0x7949('0x9d'),_0x7949('0x9e'),_0x7949('0x9f'),_0x7949('0xa0')]})['then'](handleEntityNotFound(_0x281064,null))['then'](function(_0x5df8dd){if(_0x5df8dd){_0x249e35=_0x5df8dd['remoteUri'];var _0x293062=_0x249e35['slice'](-0x1);if(_0x293062==='/'){_0x249e35=_0x249e35[_0x7949('0xa1')](0x0,_0x249e35[_0x7949('0xa2')](_0x293062));}_0x358222=util[_0x7949('0xa3')]('%s/api/now/doc/table/schema/',_0x249e35);_0x467682=util[_0x7949('0xa3')](_0x7949('0xa4'),_0x249e35);_0x3421a7={'user':_0x5df8dd[_0x7949('0x9c')],'pass':_0x5df8dd[_0x7949('0x9d')]};var _0x4aff1d={'method':'GET','uri':_0x358222+'incident?sysparm_display_value=all','auth':_0x3421a7,'json':!![]};return rp(_0x4aff1d);}})[_0x7949('0x27')](function(_0x307b14){if(_0x307b14[_0x7949('0xa5')][_0x7949('0x47')]>0x0){_0x58b201=_0x307b14[_0x7949('0xa5')];}console[_0x7949('0xa6')](_0x7949('0xa7'),_0x58b201);_0x49265d=[];_0x3d143f=Object[_0x7949('0xa8')]([],_0x58b201);_[_0x7949('0xa9')](_0x3d143f,function(_0x1d8198){return!_0x382f79[_0x7949('0xaa')](_0x1d8198['name']);});_0x3d143f[_0x7949('0xab')](function(_0x3bd472){var _0x2d15d6=createFieldObject(_0x467682,_0x3421a7,_0x3bd472['internalType'],_0x3bd472[_0x7949('0x2b')],_0x3bd472[_0x7949('0xac')],![]);_0x49265d[_0x7949('0xad')](_0x2d15d6);});return Promise[_0x7949('0xae')](_0x49265d);})[_0x7949('0x27')](function(_0x1b81d6){_0x42f854=_0x1b81d6;_0x25e087=Object[_0x7949('0xa8')]([],_0x58b201);console[_0x7949('0xa6')]('TCL:\x20_object',_0x58b201);_[_0x7949('0xa9')](_0x25e087,function(_0x9c18e4){return _0x113407[_0x7949('0xaa')](_0x9c18e4['name']);});console[_0x7949('0xa6')](_0x7949('0xaf'),_0x25e087);_0x49265d=[];_0x25e087['forEach'](function(_0x344cd1){var _0x131507=createFieldObject(_0x467682,_0x3421a7,_0x344cd1[_0x7949('0xb0')],_0x344cd1[_0x7949('0x2b')],_0x344cd1[_0x7949('0xac')],!![]);_0x49265d[_0x7949('0xad')](_0x131507);});return Promise[_0x7949('0xae')](_0x49265d);})['then'](function(_0x4370b5){_0x4d5c12=_0x4370b5;var _0x3c6426=_0x42f854[_0x7949('0xb1')](_0x4d5c12);return{'count':_0x3c6426[_0x7949('0x47')],'rows':_0x3c6426};})[_0x7949('0x27')](respondWithResult(_0x281064,null))[_0x7949('0x44')](function(_0x2a2aed){console[_0x7949('0xa6')](_0x7949('0xb2')+_0x2a2aed);var _0x4f1681=_0x707d9c['query'][_0x7949('0xb3')]?0x1f4:_0x2a2aed[_0x7949('0xb4')]||0x1f4;logger['error'](_0x2a2aed[_0x7949('0x2a')]);delete _0x2a2aed[_0x7949('0x2b')];if(_0x4f1681===0x191){_0x4f1681=0x190;}_0x281064[_0x7949('0x1a')](_0x4f1681)[_0x7949('0xb5')](_0x707d9c[_0x7949('0x34')]['test']?{'message':_0x7949('0xb6'),'statusCode':_0x2a2aed[_0x7949('0xb4')]}:_0x2a2aed);});};function createFieldObject(_0x905c96,_0x2c4182,_0x384bbf,_0x1e7881,_0x5ace4b,_0x316a87){return new Promise(function(_0x42d309,_0x118f84){var _0x139911={'id':_0x1e7881,'name':_0x5ace4b,'custom':_0x316a87};if(_0x384bbf==='boolean'){_0x139911[_0x7949('0x41')]=[{'name':_0x7949('0xb7'),'value':_0x7949('0xb8')},{'name':'False','value':_0x7949('0xb9')}];_0x42d309(_0x139911);}else{var _0x577b65={'method':'GET','uri':_0x905c96+_0x7949('0xba')+_0x1e7881,'auth':_0x2c4182,'json':!![]};return rp(_0x577b65)['then'](function(_0x5761bb){var _0x312235=[];if(_0x5761bb['result'][_0x7949('0x47')]>0x0){_0x5761bb[_0x7949('0xa5')][_0x7949('0xab')](function(_0x353034){if(_0x353034[_0x7949('0xbb')]===_0x7949('0xb9')){var _0x2d355d={'name':_0x353034['label'],'value':_0x353034[_0x7949('0xbc')]};_0x312235['push'](_0x2d355d);}});}_0x139911[_0x7949('0x41')]=_0x312235;if(_0x139911['options'][_0x7949('0x47')]>0x0){_0x42d309(_0x139911);}else{if(_0x316a87==![]){_0x42d309();}else{_0x42d309(_0x139911);}}});}});}
\ No newline at end of file
index f8671a2..fe5837f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','../../config/logger','api','moment'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x3ff644,_0x29f028){_0x3ff644=_0x3ff644-0x0;var _0x27b955=_0x3eea[_0x3ff644];return _0x27b955;};'use strict';var _=require(_0xa3ee('0x0'));var util=require('util');var logger=require(_0xa3ee('0x1'))(_0xa3ee('0x2'));var moment=require(_0xa3ee('0x3'));var BPromise=require(_0xa3ee('0x4'));var rp=require(_0xa3ee('0x5'));var fs=require('fs');var path=require(_0xa3ee('0x6'));var rimraf=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var attributes=require(_0xa3ee('0x9'));var integrations=require(_0xa3ee('0xa'));module[_0xa3ee('0xb')]=function(_0x5776bb,_0x538bf9){return _0x5776bb[_0xa3ee('0xc')]('ServicenowAccount',attributes,{'tableName':_0xa3ee('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c5a=['int_servicenow_accounts','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration'];(function(_0x57534a,_0xa3265b){var _0x102430=function(_0x570e6d){while(--_0x570e6d){_0x57534a['push'](_0x57534a['shift']());}};_0x102430(++_0xa3265b);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x570c53,_0x15f913){_0x570c53=_0x570c53-0x0;var _0x381341=_0x9c5a[_0x570c53];return _0x381341;};'use strict';var _=require(_0xa9c5('0x0'));var util=require(_0xa9c5('0x1'));var logger=require('../../config/logger')(_0xa9c5('0x2'));var moment=require(_0xa9c5('0x3'));var BPromise=require(_0xa9c5('0x4'));var rp=require(_0xa9c5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa9c5('0x6'));var config=require(_0xa9c5('0x7'));var attributes=require('./intServicenowAccount.attributes');var integrations=require(_0xa9c5('0x8'));module['exports']=function(_0x394d84,_0x3df556){return _0x394d84['define']('ServicenowAccount',attributes,{'tableName':_0xa9c5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dce44c5..c020f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb93b=['../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ServicenowAccount,\x20%s,\x20%s','result','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','include','map','model','catch','ShowServicenowAccount','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x495eeb,_0x4fd638){var _0x14c96a=function(_0x1dd8e3){while(--_0x1dd8e3){_0x495eeb['push'](_0x495eeb['shift']());}};_0x14c96a(++_0x4fd638);}(_0xb93b,0x8c));var _0xbb93=function(_0x51cf44,_0x2b04e1){_0x51cf44=_0x51cf44-0x0;var _0xb4dbd6=_0xb93b[_0x51cf44];return _0xb4dbd6;};'use strict';var _=require(_0xbb93('0x0'));var util=require(_0xbb93('0x1'));var moment=require('moment');var BPromise=require(_0xbb93('0x2'));var rs=require(_0xbb93('0x3'));var fs=require('fs');var Redis=require(_0xbb93('0x4'));var db=require(_0xbb93('0x5'))['db'];var utils=require(_0xbb93('0x6'));var logger=require('../../config/logger')(_0xbb93('0x7'));var config=require(_0xbb93('0x8'));var jayson=require(_0xbb93('0x9'));var client=jayson[_0xbb93('0xa')][_0xbb93('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15ea59,_0x3daf93,_0x46adfd){return new BPromise(function(_0x41d95f,_0x2cf24f){return client[_0xbb93('0xc')](_0x15ea59,_0x46adfd)['then'](function(_0xa1c33){logger[_0xbb93('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0x3daf93,_0xbb93('0xe'));logger[_0xbb93('0xf')](_0xbb93('0x10'),_0x3daf93,_0xbb93('0xe'),JSON[_0xbb93('0x11')](_0xa1c33));if(_0xa1c33[_0xbb93('0x12')]){if(_0xa1c33['error'][_0xbb93('0x13')]===0x1f4){logger[_0xbb93('0x12')]('ServicenowAccount,\x20%s,\x20%s',_0x3daf93,_0xa1c33[_0xbb93('0x12')][_0xbb93('0x14')]);return _0x2cf24f(_0xa1c33[_0xbb93('0x12')][_0xbb93('0x14')]);}logger['error'](_0xbb93('0x15'),_0x3daf93,_0xa1c33[_0xbb93('0x12')][_0xbb93('0x14')]);return _0x41d95f(_0xa1c33[_0xbb93('0x12')][_0xbb93('0x14')]);}else{logger[_0xbb93('0xd')](_0xbb93('0x15'),_0x3daf93,_0xbb93('0xe'));_0x41d95f(_0xa1c33[_0xbb93('0x16')][_0xbb93('0x14')]);}})['catch'](function(_0x583d64){logger[_0xbb93('0x12')]('ServicenowAccount,\x20%s,\x20%s',_0x3daf93,_0x583d64);_0x2cf24f(_0x583d64);});});}exports[_0xbb93('0x17')]=function(_0x267c16){var _0xa1172f=this;return new Promise(function(_0x1d9289,_0x237cf1){return db[_0xbb93('0x18')][_0xbb93('0x19')]({'raw':_0x267c16[_0xbb93('0x1a')]?_0x267c16[_0xbb93('0x1a')][_0xbb93('0x1b')]===undefined?!![]:![]:!![],'where':_0x267c16[_0xbb93('0x1a')]?_0x267c16[_0xbb93('0x1a')][_0xbb93('0x1c')]||null:null,'attributes':_0x267c16[_0xbb93('0x1a')]?_0x267c16[_0xbb93('0x1a')][_0xbb93('0x1d')]||null:null,'limit':_0x267c16[_0xbb93('0x1a')]?_0x267c16[_0xbb93('0x1a')][_0xbb93('0x1e')]||null:null,'include':_0x267c16[_0xbb93('0x1a')]?_0x267c16[_0xbb93('0x1a')][_0xbb93('0x1f')]?_[_0xbb93('0x20')](_0x267c16[_0xbb93('0x1a')][_0xbb93('0x1f')],function(_0x13c967){return{'model':db[_0x13c967[_0xbb93('0x21')]],'as':_0x13c967['as'],'attributes':_0x13c967[_0xbb93('0x1d')],'include':_0x13c967['include']?_[_0xbb93('0x20')](_0x13c967['include'],function(_0x2c1d27){return{'model':db[_0x2c1d27[_0xbb93('0x21')]],'as':_0x2c1d27['as'],'attributes':_0x2c1d27[_0xbb93('0x1d')],'include':_0x2c1d27[_0xbb93('0x1f')]?_[_0xbb93('0x20')](_0x2c1d27[_0xbb93('0x1f')],function(_0x49341d){return{'model':db[_0x49341d[_0xbb93('0x21')]],'as':_0x49341d['as'],'attributes':_0x49341d[_0xbb93('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x15b832){logger[_0xbb93('0xd')](_0xbb93('0x17'),_0x267c16);logger[_0xbb93('0xf')](_0xbb93('0x17'),_0x267c16,JSON['stringify'](_0x15b832));_0x1d9289(_0x15b832);})[_0xbb93('0x22')](function(_0x19cb67){logger[_0xbb93('0x12')](_0xbb93('0x17'),_0x19cb67[_0xbb93('0x14')],_0x267c16);_0x237cf1(_0xa1172f[_0xbb93('0x12')](0x1f4,_0x19cb67[_0xbb93('0x14')]));});});};exports[_0xbb93('0x23')]=function(_0x288cf5){var _0x6e7c73=this;return new Promise(function(_0x4d5582,_0x2abce0){return db['ServicenowAccount']['find']({'raw':_0x288cf5[_0xbb93('0x1a')]?_0x288cf5[_0xbb93('0x1a')][_0xbb93('0x1b')]===undefined?!![]:![]:!![],'where':_0x288cf5[_0xbb93('0x1a')]?_0x288cf5['options'][_0xbb93('0x1c')]||null:null,'attributes':_0x288cf5['options']?_0x288cf5[_0xbb93('0x1a')][_0xbb93('0x1d')]||null:null,'include':_0x288cf5['options']?_0x288cf5['options'][_0xbb93('0x1f')]?_[_0xbb93('0x20')](_0x288cf5[_0xbb93('0x1a')][_0xbb93('0x1f')],function(_0x5788ca){return{'model':db[_0x5788ca['model']],'as':_0x5788ca['as'],'attributes':_0x5788ca[_0xbb93('0x1d')],'include':_0x5788ca[_0xbb93('0x1f')]?_[_0xbb93('0x20')](_0x5788ca[_0xbb93('0x1f')],function(_0x48a62f){return{'model':db[_0x48a62f['model']],'as':_0x48a62f['as'],'attributes':_0x48a62f[_0xbb93('0x1d')],'include':_0x48a62f[_0xbb93('0x1f')]?_['map'](_0x48a62f[_0xbb93('0x1f')],function(_0xafbdea){return{'model':db[_0xafbdea['model']],'as':_0xafbdea['as'],'attributes':_0xafbdea[_0xbb93('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xbb93('0x24')](function(_0x5dfc16){logger[_0xbb93('0xd')](_0xbb93('0x23'),_0x288cf5);logger[_0xbb93('0xf')](_0xbb93('0x23'),_0x288cf5,JSON[_0xbb93('0x11')](_0x5dfc16));_0x4d5582(_0x5dfc16);})[_0xbb93('0x22')](function(_0x437884){logger[_0xbb93('0x12')](_0xbb93('0x23'),_0x437884['message'],_0x288cf5);_0x2abce0(_0x6e7c73['error'](0x1f4,_0x437884[_0xbb93('0x14')]));});});};
\ No newline at end of file
+var _0x7dbb=['find','where','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','attributes','limit','include','map','debug','ShowServicenowAccount'];(function(_0x507403,_0x3f954d){var _0x1327c=function(_0x2aea1b){while(--_0x2aea1b){_0x507403['push'](_0x507403['shift']());}};_0x1327c(++_0x3f954d);}(_0x7dbb,0xcf));var _0xb7db=function(_0x343fbe,_0x2de175){_0x343fbe=_0x343fbe-0x0;var _0x20a8e3=_0x7dbb[_0x343fbe];return _0x20a8e3;};'use strict';var _=require(_0xb7db('0x0'));var util=require(_0xb7db('0x1'));var moment=require(_0xb7db('0x2'));var BPromise=require(_0xb7db('0x3'));var rs=require(_0xb7db('0x4'));var fs=require('fs');var Redis=require(_0xb7db('0x5'));var db=require(_0xb7db('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb7db('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb7db('0x8'));var client=jayson[_0xb7db('0x9')][_0xb7db('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xae0814,_0x914f71,_0x77d3aa){return new BPromise(function(_0x5158b4,_0x2e8efe){return client['request'](_0xae0814,_0x77d3aa)[_0xb7db('0xb')](function(_0x201365){logger[_0xb7db('0xc')](_0xb7db('0xd'),_0x914f71,_0xb7db('0xe'));logger['debug'](_0xb7db('0xf'),_0x914f71,_0xb7db('0xe'),JSON[_0xb7db('0x10')](_0x201365));if(_0x201365[_0xb7db('0x11')]){if(_0x201365[_0xb7db('0x11')][_0xb7db('0x12')]===0x1f4){logger['error'](_0xb7db('0xd'),_0x914f71,_0x201365[_0xb7db('0x11')][_0xb7db('0x13')]);return _0x2e8efe(_0x201365[_0xb7db('0x11')][_0xb7db('0x13')]);}logger[_0xb7db('0x11')](_0xb7db('0xd'),_0x914f71,_0x201365[_0xb7db('0x11')][_0xb7db('0x13')]);return _0x5158b4(_0x201365[_0xb7db('0x11')][_0xb7db('0x13')]);}else{logger['info'](_0xb7db('0xd'),_0x914f71,_0xb7db('0xe'));_0x5158b4(_0x201365['result']['message']);}})[_0xb7db('0x14')](function(_0x3350dd){logger[_0xb7db('0x11')](_0xb7db('0xd'),_0x914f71,_0x3350dd);_0x2e8efe(_0x3350dd);});});}exports[_0xb7db('0x15')]=function(_0x4bddc1){var _0xdbb2d1=this;return new Promise(function(_0x138926,_0x5a52f9){return db[_0xb7db('0x16')][_0xb7db('0x17')]({'raw':_0x4bddc1[_0xb7db('0x18')]?_0x4bddc1[_0xb7db('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4bddc1['options']?_0x4bddc1[_0xb7db('0x18')]['where']||null:null,'attributes':_0x4bddc1[_0xb7db('0x18')]?_0x4bddc1[_0xb7db('0x18')][_0xb7db('0x19')]||null:null,'limit':_0x4bddc1['options']?_0x4bddc1['options'][_0xb7db('0x1a')]||null:null,'include':_0x4bddc1[_0xb7db('0x18')]?_0x4bddc1[_0xb7db('0x18')][_0xb7db('0x1b')]?_[_0xb7db('0x1c')](_0x4bddc1['options']['include'],function(_0x9a59da){return{'model':db[_0x9a59da['model']],'as':_0x9a59da['as'],'attributes':_0x9a59da[_0xb7db('0x19')],'include':_0x9a59da[_0xb7db('0x1b')]?_[_0xb7db('0x1c')](_0x9a59da[_0xb7db('0x1b')],function(_0x3f4066){return{'model':db[_0x3f4066['model']],'as':_0x3f4066['as'],'attributes':_0x3f4066[_0xb7db('0x19')],'include':_0x3f4066[_0xb7db('0x1b')]?_[_0xb7db('0x1c')](_0x3f4066[_0xb7db('0x1b')],function(_0x800733){return{'model':db[_0x800733['model']],'as':_0x800733['as'],'attributes':_0x800733[_0xb7db('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xb3d001){logger['info']('GetServicenowAccount',_0x4bddc1);logger[_0xb7db('0x1d')](_0xb7db('0x15'),_0x4bddc1,JSON['stringify'](_0xb3d001));_0x138926(_0xb3d001);})[_0xb7db('0x14')](function(_0xa5830a){logger[_0xb7db('0x11')](_0xb7db('0x15'),_0xa5830a[_0xb7db('0x13')],_0x4bddc1);_0x5a52f9(_0xdbb2d1[_0xb7db('0x11')](0x1f4,_0xa5830a[_0xb7db('0x13')]));});});};exports[_0xb7db('0x1e')]=function(_0xa7f58a){var _0x5910ef=this;return new Promise(function(_0x2616c5,_0x3df5db){return db['ServicenowAccount'][_0xb7db('0x1f')]({'raw':_0xa7f58a[_0xb7db('0x18')]?_0xa7f58a[_0xb7db('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0xa7f58a[_0xb7db('0x18')]?_0xa7f58a['options'][_0xb7db('0x20')]||null:null,'attributes':_0xa7f58a[_0xb7db('0x18')]?_0xa7f58a[_0xb7db('0x18')][_0xb7db('0x19')]||null:null,'include':_0xa7f58a['options']?_0xa7f58a['options'][_0xb7db('0x1b')]?_[_0xb7db('0x1c')](_0xa7f58a[_0xb7db('0x18')][_0xb7db('0x1b')],function(_0x152da3){return{'model':db[_0x152da3['model']],'as':_0x152da3['as'],'attributes':_0x152da3['attributes'],'include':_0x152da3[_0xb7db('0x1b')]?_['map'](_0x152da3[_0xb7db('0x1b')],function(_0x1caa7c){return{'model':db[_0x1caa7c[_0xb7db('0x21')]],'as':_0x1caa7c['as'],'attributes':_0x1caa7c[_0xb7db('0x19')],'include':_0x1caa7c[_0xb7db('0x1b')]?_[_0xb7db('0x1c')](_0x1caa7c['include'],function(_0x3f35a8){return{'model':db[_0x3f35a8['model']],'as':_0x3f35a8['as'],'attributes':_0x3f35a8['attributes']};}):[]};}):[]};}):[]:[]})[_0xb7db('0xb')](function(_0x13d024){logger[_0xb7db('0xc')](_0xb7db('0x1e'),_0xa7f58a);logger[_0xb7db('0x1d')](_0xb7db('0x1e'),_0xa7f58a,JSON[_0xb7db('0x10')](_0x13d024));_0x2616c5(_0x13d024);})['catch'](function(_0x6c1b1){logger[_0xb7db('0x11')](_0xb7db('0x1e'),_0x6c1b1['message'],_0xa7f58a);_0x3df5db(_0x5910ef['error'](0x1f4,_0x6c1b1[_0xb7db('0x13')]));});});};
\ No newline at end of file
index 34e9ff1..a9480aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe73b=['isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xe73b,0xa7));var _0xbe73=function(_0x842858,_0x3a3ca0){_0x842858=_0x842858-0x0;var _0x46c2a2=_0xe73b[_0x842858];return _0x46c2a2;};'use strict';var multer=require(_0xbe73('0x0'));var util=require(_0xbe73('0x1'));var path=require(_0xbe73('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbe73('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe73('0x4'));var interaction=require(_0xbe73('0x5'));var config=require(_0xbe73('0x6'));var controller=require(_0xbe73('0x7'));router[_0xbe73('0x8')]('/',auth[_0xbe73('0x9')](),controller[_0xbe73('0xa')]);router[_0xbe73('0x8')](_0xbe73('0xb'),auth[_0xbe73('0x9')](),controller[_0xbe73('0xc')]);router[_0xbe73('0x8')](_0xbe73('0xd'),auth[_0xbe73('0x9')](),controller[_0xbe73('0xe')]);router[_0xbe73('0x8')](_0xbe73('0xf'),auth['isAuthenticated'](),controller[_0xbe73('0x10')]);router[_0xbe73('0x8')](_0xbe73('0x11'),auth['isAuthenticated'](),controller[_0xbe73('0x12')]);router['post']('/',auth[_0xbe73('0x9')](),controller[_0xbe73('0x13')]);router[_0xbe73('0x14')]('/:id',auth[_0xbe73('0x9')](),controller['update']);router['delete'](_0xbe73('0xb'),auth[_0xbe73('0x9')](),controller[_0xbe73('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x4bb7=['getSubjects','/:id/descriptions','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0x4bb7,0x81));var _0x74bb=function(_0x17b001,_0x1fc42c){_0x17b001=_0x17b001-0x0;var _0x50073f=_0x4bb7[_0x17b001];return _0x50073f;};'use strict';var multer=require(_0x74bb('0x0'));var util=require('util');var path=require(_0x74bb('0x1'));var timeout=require(_0x74bb('0x2'));var express=require(_0x74bb('0x3'));var router=express[_0x74bb('0x4')]();var fs_extra=require(_0x74bb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x74bb('0x6'));var config=require(_0x74bb('0x7'));var controller=require(_0x74bb('0x8'));router[_0x74bb('0x9')]('/',auth[_0x74bb('0xa')](),controller[_0x74bb('0xb')]);router[_0x74bb('0x9')](_0x74bb('0xc'),auth[_0x74bb('0xa')](),controller[_0x74bb('0xd')]);router['get']('/:id/fields',auth[_0x74bb('0xa')](),controller[_0x74bb('0xe')]);router[_0x74bb('0x9')]('/:id/subjects',auth[_0x74bb('0xa')](),controller[_0x74bb('0xf')]);router[_0x74bb('0x9')](_0x74bb('0x10'),auth[_0x74bb('0xa')](),controller['getDescriptions']);router[_0x74bb('0x11')]('/',auth['isAuthenticated'](),controller[_0x74bb('0x12')]);router[_0x74bb('0x13')](_0x74bb('0xc'),auth[_0x74bb('0xa')](),controller[_0x74bb('0x14')]);router[_0x74bb('0x15')]('/:id',auth[_0x74bb('0xa')](),controller[_0x74bb('0x16')]);module[_0x74bb('0x17')]=router;
\ No newline at end of file
index a1e7e80..8152949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3575=['sequelize','STRING'];(function(_0x20c2c3,_0x4de2f5){var _0x1454c6=function(_0x4bfc90){while(--_0x4bfc90){_0x20c2c3['push'](_0x20c2c3['shift']());}};_0x1454c6(++_0x4de2f5);}(_0x3575,0x1a4));var _0x5357=function(_0x55b4f7,_0xbd04c8){_0x55b4f7=_0x55b4f7-0x0;var _0xc6d455=_0x3575[_0x55b4f7];return _0xc6d455;};'use strict';var Sequelize=require(_0x5357('0x0'));module['exports']={'name':{'type':Sequelize[_0x5357('0x1')]},'description':{'type':Sequelize[_0x5357('0x1')]}};
\ No newline at end of file
+var _0x6c25=['exports','STRING','sequelize'];(function(_0x33e1ed,_0xe09414){var _0x524526=function(_0x4f4d1a){while(--_0x4f4d1a){_0x33e1ed['push'](_0x33e1ed['shift']());}};_0x524526(++_0xe09414);}(_0x6c25,0x1b5));var _0x56c2=function(_0x5a0373,_0x2dc45c){_0x5a0373=_0x5a0373-0x0;var _0x302833=_0x6c25[_0x5a0373];return _0x302833;};'use strict';var Sequelize=require(_0x56c2('0x0'));module[_0x56c2('0x1')]={'name':{'type':Sequelize[_0x56c2('0x2')]},'description':{'type':Sequelize[_0x56c2('0x2')]}};
\ No newline at end of file
index 8964a7e..66d760e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152a=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','show','catch','create','body','params','find','getFields','findOne','order','nolimit','ServicenowField','getSubjects','getDescriptions','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils'];(function(_0x5413eb,_0x5039bc){var _0x12396b=function(_0x4ad173){while(--_0x4ad173){_0x5413eb['push'](_0x5413eb['shift']());}};_0x12396b(++_0x5039bc);}(_0x152a,0x132));var _0xa152=function(_0x4b91c4,_0x23f35f){_0x4b91c4=_0x4b91c4-0x0;var _0x25cb80=_0x152a[_0x4b91c4];return _0x25cb80;};'use strict';var emlformat=require(_0xa152('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa152('0x1'));var moment=require(_0xa152('0x2'));var BPromise=require(_0xa152('0x3'));var Mustache=require(_0xa152('0x4'));var util=require(_0xa152('0x5'));var path=require(_0xa152('0x6'));var sox=require(_0xa152('0x7'));var csv=require(_0xa152('0x8'));var ejs=require(_0xa152('0x9'));var fs=require('fs');var fs_extra=require(_0xa152('0xa'));var _=require(_0xa152('0xb'));var squel=require(_0xa152('0xc'));var crypto=require('crypto');var jsforce=require(_0xa152('0xd'));var deskjs=require(_0xa152('0xe'));var toCsv=require(_0xa152('0x8'));var querystring=require(_0xa152('0xf'));var Papa=require('papaparse');var Redis=require(_0xa152('0x10'));var authService=require(_0xa152('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa152('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa152('0x13'))(_0xa152('0x14'));var utils=require(_0xa152('0x15'));var config=require(_0xa152('0x16'));var licenseUtil=require(_0xa152('0x17'));var db=require(_0xa152('0x18'))['db'];function respondWithStatusCode(_0x6aabc7,_0x25ed7c){_0x25ed7c=_0x25ed7c||0xcc;return function(_0x399633){if(_0x399633){return _0x6aabc7[_0xa152('0x19')](_0x25ed7c);}return _0x6aabc7[_0xa152('0x1a')](_0x25ed7c)[_0xa152('0x1b')]();};}function respondWithResult(_0x20e645,_0xe61bf3){_0xe61bf3=_0xe61bf3||0xc8;return function(_0x51408d){if(_0x51408d){return _0x20e645[_0xa152('0x1a')](_0xe61bf3)[_0xa152('0x1c')](_0x51408d);}};}function respondWithFilteredResult(_0x2ddb9c,_0x1dcc75){return function(_0x358a6b){if(_0x358a6b){var _0x293cb8=typeof _0x1dcc75[_0xa152('0x1d')]==='undefined'&&typeof _0x1dcc75[_0xa152('0x1e')]===_0xa152('0x1f');var _0x1f37b0=_0x358a6b[_0xa152('0x20')];var _0x398a25=_0x293cb8?0x0:_0x1dcc75[_0xa152('0x1d')];var _0x456115=_0x293cb8?_0x358a6b[_0xa152('0x20')]:_0x1dcc75[_0xa152('0x1d')]+_0x1dcc75[_0xa152('0x1e')];var _0x39d1a4;if(_0x456115>=_0x1f37b0){_0x456115=_0x1f37b0;_0x39d1a4=0xc8;}else{_0x39d1a4=0xce;}_0x2ddb9c[_0xa152('0x1a')](_0x39d1a4);return _0x2ddb9c[_0xa152('0x21')](_0xa152('0x22'),_0x398a25+'-'+_0x456115+'/'+_0x1f37b0)['json'](_0x358a6b);}return null;};}function patchUpdates(_0x21a5ab){return function(_0x1522ed){try{jsonpatch[_0xa152('0x23')](_0x1522ed,_0x21a5ab,!![]);}catch(_0x3565df){return BPromise[_0xa152('0x24')](_0x3565df);}return _0x1522ed[_0xa152('0x25')]();};}function saveUpdates(_0x262356,_0x58cda4){return function(_0x12f155){if(_0x12f155){return _0x12f155[_0xa152('0x26')](_0x262356)[_0xa152('0x27')](function(_0x4c6420){return _0x4c6420;});}return null;};}function removeEntity(_0x3c7a97,_0x1437de){return function(_0x5ed847){if(_0x5ed847){return _0x5ed847[_0xa152('0x28')]()['then'](function(){_0x3c7a97[_0xa152('0x1a')](0xcc)[_0xa152('0x1b')]();});}};}function handleEntityNotFound(_0x507323,_0x16c7f0){return function(_0x22449e){if(!_0x22449e){_0x507323[_0xa152('0x19')](0x194);}return _0x22449e;};}function handleError(_0x308d08,_0x3c3c0c){_0x3c3c0c=_0x3c3c0c||0x1f4;return function(_0x270f0b){logger[_0xa152('0x29')](_0x270f0b[_0xa152('0x2a')]);if(_0x270f0b['name']){delete _0x270f0b[_0xa152('0x2b')];}_0x308d08[_0xa152('0x1a')](_0x3c3c0c)[_0xa152('0x2c')](_0x270f0b);};}exports[_0xa152('0x2d')]=function(_0x53991d,_0x1eeb71){var _0x223d3b={},_0x31be32={},_0xcf6d40={'count':0x0,'rows':[]};var _0x5aaf5c=_[_0xa152('0x2e')](db[_0xa152('0x2f')][_0xa152('0x30')],function(_0x35be65){return{'name':_0x35be65['fieldName'],'type':_0x35be65[_0xa152('0x31')][_0xa152('0x32')]};});_0x31be32[_0xa152('0x33')]=_['map'](_0x5aaf5c,'name');_0x31be32[_0xa152('0x34')]=_[_0xa152('0x35')](_0x53991d['query']);_0x31be32[_0xa152('0x36')]=_[_0xa152('0x37')](_0x31be32[_0xa152('0x33')],_0x31be32[_0xa152('0x34')]);_0x223d3b[_0xa152('0x38')]=_['intersection'](_0x31be32[_0xa152('0x33')],qs[_0xa152('0x39')](_0x53991d[_0xa152('0x34')][_0xa152('0x39')]));_0x223d3b[_0xa152('0x38')]=_0x223d3b['attributes'][_0xa152('0x3a')]?_0x223d3b[_0xa152('0x38')]:_0x31be32[_0xa152('0x33')];if(!_0x53991d[_0xa152('0x34')][_0xa152('0x3b')]('nolimit')){_0x223d3b['limit']=qs['limit'](_0x53991d[_0xa152('0x34')][_0xa152('0x1e')]);_0x223d3b[_0xa152('0x1d')]=qs['offset'](_0x53991d[_0xa152('0x34')]['offset']);}_0x223d3b['order']=qs['sort'](_0x53991d['query'][_0xa152('0x3c')]);_0x223d3b[_0xa152('0x3d')]=qs[_0xa152('0x36')](_[_0xa152('0x3e')](_0x53991d[_0xa152('0x34')],_0x31be32[_0xa152('0x36')]),_0x5aaf5c);if(_0x53991d[_0xa152('0x34')][_0xa152('0x3f')]){_0x223d3b[_0xa152('0x3d')]=_[_0xa152('0x40')](_0x223d3b['where'],{'$or':_[_0xa152('0x2e')](_0x5aaf5c,function(_0x4b64da){if(_0x4b64da[_0xa152('0x31')]!=='VIRTUAL'){var _0x5214e1={};_0x5214e1[_0x4b64da[_0xa152('0x2b')]]={'$like':'%'+_0x53991d[_0xa152('0x34')][_0xa152('0x3f')]+'%'};return _0x5214e1;}})});}_0x223d3b=_[_0xa152('0x40')]({},_0x223d3b,_0x53991d[_0xa152('0x41')]);var _0x241c0f={'where':_0x223d3b[_0xa152('0x3d')]};return db[_0xa152('0x2f')]['count'](_0x241c0f)[_0xa152('0x27')](function(_0x150a80){_0xcf6d40[_0xa152('0x20')]=_0x150a80;if(_0x53991d[_0xa152('0x34')][_0xa152('0x42')]){_0x223d3b[_0xa152('0x43')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xa152('0x44')](_0x223d3b);})[_0xa152('0x27')](function(_0x162c3e){_0xcf6d40['rows']=_0x162c3e;return _0xcf6d40;})['then'](respondWithFilteredResult(_0x1eeb71,_0x223d3b))['catch'](handleError(_0x1eeb71,null));};exports[_0xa152('0x45')]=function(_0x49ef66,_0x2aab19){var _0x89aa5c={'raw':![],'where':{'id':_0x49ef66['params']['id']}},_0x34b716={};_0x34b716['model']=_[_0xa152('0x35')](db[_0xa152('0x2f')][_0xa152('0x30')]);_0x34b716[_0xa152('0x34')]=_['keys'](_0x49ef66[_0xa152('0x34')]);_0x34b716['filters']=_[_0xa152('0x37')](_0x34b716['model'],_0x34b716[_0xa152('0x34')]);_0x89aa5c[_0xa152('0x38')]=_[_0xa152('0x37')](_0x34b716[_0xa152('0x33')],qs[_0xa152('0x39')](_0x49ef66[_0xa152('0x34')][_0xa152('0x39')]));_0x89aa5c['attributes']=_0x89aa5c[_0xa152('0x38')][_0xa152('0x3a')]?_0x89aa5c['attributes']:_0x34b716['model'];if(_0x49ef66['query']['includeAll']){_0x89aa5c[_0xa152('0x43')]=[{'all':!![]}];}_0x89aa5c=_['merge']({},_0x89aa5c,_0x49ef66[_0xa152('0x41')]);return db[_0xa152('0x2f')]['find'](_0x89aa5c)[_0xa152('0x27')](handleEntityNotFound(_0x2aab19,null))[_0xa152('0x27')](respondWithResult(_0x2aab19,null))[_0xa152('0x46')](handleError(_0x2aab19,null));};exports['create']=function(_0x45d630,_0xe83f34){return db[_0xa152('0x2f')][_0xa152('0x47')](_0x45d630[_0xa152('0x48')],{})['then'](respondWithResult(_0xe83f34,0xc9))[_0xa152('0x46')](handleError(_0xe83f34,null));};exports[_0xa152('0x26')]=function(_0x5aa642,_0x2a9f19){if(_0x5aa642[_0xa152('0x48')]['id']){delete _0x5aa642[_0xa152('0x48')]['id'];}return db[_0xa152('0x2f')]['find']({'where':{'id':_0x5aa642[_0xa152('0x49')]['id']}})[_0xa152('0x27')](handleEntityNotFound(_0x2a9f19,null))['then'](saveUpdates(_0x5aa642['body'],null))['then'](respondWithResult(_0x2a9f19,null))[_0xa152('0x46')](handleError(_0x2a9f19,null));};exports[_0xa152('0x28')]=function(_0x3ce893,_0x7007ab){return db['ServicenowConfiguration'][_0xa152('0x4a')]({'where':{'id':_0x3ce893['params']['id']}})['then'](handleEntityNotFound(_0x7007ab,null))[_0xa152('0x27')](removeEntity(_0x7007ab,null))[_0xa152('0x46')](handleError(_0x7007ab,null));};exports[_0xa152('0x4b')]=function(_0x1bff93,_0x154a75,_0x3009bb){var _0x264379={};var _0xa057e5={};var _0x3e29ff;var _0xa8fe91;return db[_0xa152('0x2f')][_0xa152('0x4c')]({'where':{'id':_0x1bff93[_0xa152('0x49')]['id']}})[_0xa152('0x27')](handleEntityNotFound(_0x154a75,null))['then'](function(_0x1f6fe4){if(_0x1f6fe4){_0x3e29ff=_0x1f6fe4;_0xa057e5[_0xa152('0x33')]=_['keys'](db['ServicenowField'][_0xa152('0x30')]);_0xa057e5[_0xa152('0x34')]=_[_0xa152('0x35')](_0x1bff93[_0xa152('0x34')]);_0xa057e5[_0xa152('0x36')]=_[_0xa152('0x37')](_0xa057e5[_0xa152('0x33')],_0xa057e5[_0xa152('0x34')]);_0x264379['attributes']=_[_0xa152('0x37')](_0xa057e5[_0xa152('0x33')],qs[_0xa152('0x39')](_0x1bff93['query']['fields']));_0x264379[_0xa152('0x38')]=_0x264379[_0xa152('0x38')]['length']?_0x264379[_0xa152('0x38')]:_0xa057e5['model'];_0x264379[_0xa152('0x4d')]=qs[_0xa152('0x3c')](_0x1bff93[_0xa152('0x34')][_0xa152('0x3c')]);_0x264379[_0xa152('0x3d')]=qs[_0xa152('0x36')](_[_0xa152('0x3e')](_0x1bff93[_0xa152('0x34')],_0xa057e5[_0xa152('0x36')]));if(_0x1bff93['query'][_0xa152('0x3f')]){_0x264379[_0xa152('0x3d')]=_[_0xa152('0x40')](_0x264379[_0xa152('0x3d')],{'$or':_['map'](_0x264379[_0xa152('0x38')],function(_0x5e67aa){var _0x5d504e={};_0x5d504e[_0x5e67aa]={'$like':'%'+_0x1bff93[_0xa152('0x34')]['filter']+'%'};return _0x5d504e;})});}_0x264379=_[_0xa152('0x40')]({},_0x264379,_0x1bff93[_0xa152('0x41')]);return _0x3e29ff['getFields'](_0x264379);}})[_0xa152('0x27')](function(_0x3c0a30){if(_0x3c0a30){_0xa8fe91=_0x3c0a30['length'];if(!_0x1bff93[_0xa152('0x34')][_0xa152('0x3b')](_0xa152('0x4e'))){_0x264379[_0xa152('0x1e')]=qs['limit'](_0x1bff93[_0xa152('0x34')][_0xa152('0x1e')]);_0x264379[_0xa152('0x1d')]=qs['offset'](_0x1bff93[_0xa152('0x34')][_0xa152('0x1d')]);}return _0x3e29ff['getFields'](_0x264379);}})[_0xa152('0x27')](function(_0x5e08ba){if(_0x5e08ba){return _0x5e08ba?{'count':_0xa8fe91,'rows':_0x5e08ba}:null;}})[_0xa152('0x27')](respondWithResult(_0x154a75,null))[_0xa152('0x46')](handleError(_0x154a75,null));};exports['getSubjects']=function(_0x4be5e3,_0xb097cb,_0x1f40a2){var _0x129da8={};var _0x36205b={};var _0x48ab32;var _0x3da331;return db['ServicenowConfiguration'][_0xa152('0x4c')]({'where':{'id':_0x4be5e3['params']['id']}})[_0xa152('0x27')](handleEntityNotFound(_0xb097cb,null))[_0xa152('0x27')](function(_0x26253a){if(_0x26253a){_0x48ab32=_0x26253a;_0x36205b[_0xa152('0x33')]=_[_0xa152('0x35')](db[_0xa152('0x4f')][_0xa152('0x30')]);_0x36205b['query']=_[_0xa152('0x35')](_0x4be5e3['query']);_0x36205b[_0xa152('0x36')]=_[_0xa152('0x37')](_0x36205b[_0xa152('0x33')],_0x36205b[_0xa152('0x34')]);_0x129da8['attributes']=_[_0xa152('0x37')](_0x36205b[_0xa152('0x33')],qs[_0xa152('0x39')](_0x4be5e3[_0xa152('0x34')][_0xa152('0x39')]));_0x129da8[_0xa152('0x38')]=_0x129da8[_0xa152('0x38')][_0xa152('0x3a')]?_0x129da8[_0xa152('0x38')]:_0x36205b[_0xa152('0x33')];_0x129da8[_0xa152('0x4d')]=qs[_0xa152('0x3c')](_0x4be5e3[_0xa152('0x34')][_0xa152('0x3c')]);_0x129da8[_0xa152('0x3d')]=qs['filters'](_[_0xa152('0x3e')](_0x4be5e3[_0xa152('0x34')],_0x36205b[_0xa152('0x36')]));if(_0x4be5e3[_0xa152('0x34')][_0xa152('0x3f')]){_0x129da8[_0xa152('0x3d')]=_[_0xa152('0x40')](_0x129da8[_0xa152('0x3d')],{'$or':_['map'](_0x129da8[_0xa152('0x38')],function(_0x103e2d){var _0x14d66c={};_0x14d66c[_0x103e2d]={'$like':'%'+_0x4be5e3[_0xa152('0x34')][_0xa152('0x3f')]+'%'};return _0x14d66c;})});}_0x129da8=_['merge']({},_0x129da8,_0x4be5e3['options']);return _0x48ab32[_0xa152('0x50')](_0x129da8);}})[_0xa152('0x27')](function(_0x1cc5b6){if(_0x1cc5b6){_0x3da331=_0x1cc5b6[_0xa152('0x3a')];if(!_0x4be5e3[_0xa152('0x34')][_0xa152('0x3b')]('nolimit')){_0x129da8['limit']=qs[_0xa152('0x1e')](_0x4be5e3[_0xa152('0x34')][_0xa152('0x1e')]);_0x129da8[_0xa152('0x1d')]=qs['offset'](_0x4be5e3[_0xa152('0x34')][_0xa152('0x1d')]);}return _0x48ab32[_0xa152('0x50')](_0x129da8);}})[_0xa152('0x27')](function(_0x5d3dbf){if(_0x5d3dbf){return _0x5d3dbf?{'count':_0x3da331,'rows':_0x5d3dbf}:null;}})[_0xa152('0x27')](respondWithResult(_0xb097cb,null))[_0xa152('0x46')](handleError(_0xb097cb,null));};exports[_0xa152('0x51')]=function(_0x410657,_0x18153a,_0x11f16e){var _0x5c2c54={};var _0x2bb5b7={};var _0x2ea204;var _0x36bd87;return db[_0xa152('0x2f')]['findOne']({'where':{'id':_0x410657[_0xa152('0x49')]['id']}})['then'](handleEntityNotFound(_0x18153a,null))[_0xa152('0x27')](function(_0x20736f){if(_0x20736f){_0x2ea204=_0x20736f;_0x2bb5b7['model']=_[_0xa152('0x35')](db[_0xa152('0x4f')][_0xa152('0x30')]);_0x2bb5b7[_0xa152('0x34')]=_[_0xa152('0x35')](_0x410657[_0xa152('0x34')]);_0x2bb5b7[_0xa152('0x36')]=_['intersection'](_0x2bb5b7[_0xa152('0x33')],_0x2bb5b7['query']);_0x5c2c54[_0xa152('0x38')]=_['intersection'](_0x2bb5b7[_0xa152('0x33')],qs[_0xa152('0x39')](_0x410657[_0xa152('0x34')][_0xa152('0x39')]));_0x5c2c54[_0xa152('0x38')]=_0x5c2c54['attributes'][_0xa152('0x3a')]?_0x5c2c54[_0xa152('0x38')]:_0x2bb5b7['model'];_0x5c2c54['order']=qs[_0xa152('0x3c')](_0x410657[_0xa152('0x34')][_0xa152('0x3c')]);_0x5c2c54[_0xa152('0x3d')]=qs['filters'](_[_0xa152('0x3e')](_0x410657[_0xa152('0x34')],_0x2bb5b7[_0xa152('0x36')]));if(_0x410657[_0xa152('0x34')]['filter']){_0x5c2c54['where']=_[_0xa152('0x40')](_0x5c2c54[_0xa152('0x3d')],{'$or':_['map'](_0x5c2c54[_0xa152('0x38')],function(_0x43a24e){var _0x2d8581={};_0x2d8581[_0x43a24e]={'$like':'%'+_0x410657[_0xa152('0x34')]['filter']+'%'};return _0x2d8581;})});}_0x5c2c54=_[_0xa152('0x40')]({},_0x5c2c54,_0x410657[_0xa152('0x41')]);return _0x2ea204[_0xa152('0x51')](_0x5c2c54);}})[_0xa152('0x27')](function(_0x395970){if(_0x395970){_0x36bd87=_0x395970['length'];if(!_0x410657[_0xa152('0x34')][_0xa152('0x3b')](_0xa152('0x4e'))){_0x5c2c54[_0xa152('0x1e')]=qs['limit'](_0x410657['query'][_0xa152('0x1e')]);_0x5c2c54[_0xa152('0x1d')]=qs['offset'](_0x410657['query'][_0xa152('0x1d')]);}return _0x2ea204['getDescriptions'](_0x5c2c54);}})[_0xa152('0x27')](function(_0x5a1ba0){if(_0x5a1ba0){return _0x5a1ba0?{'count':_0x36bd87,'rows':_0x5a1ba0}:null;}})[_0xa152('0x27')](respondWithResult(_0x18153a,null))[_0xa152('0x46')](handleError(_0x18153a,null));};
\ No newline at end of file
+var _0xd074=['options','includeAll','include','findAll','rows','catch','find','create','body','params','getFields','findOne','ServicenowField','rawAttributes','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ServicenowConfiguration','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xd074,0x66));var _0x4d07=function(_0x4d58ce,_0x47fb4f){_0x4d58ce=_0x4d58ce-0x0;var _0x504769=_0xd074[_0x4d58ce];return _0x504769;};'use strict';var emlformat=require(_0x4d07('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4d07('0x1'));var jsonpatch=require(_0x4d07('0x2'));var rp=require(_0x4d07('0x3'));var moment=require(_0x4d07('0x4'));var BPromise=require(_0x4d07('0x5'));var Mustache=require('mustache');var util=require(_0x4d07('0x6'));var path=require('path');var sox=require(_0x4d07('0x7'));var csv=require(_0x4d07('0x8'));var ejs=require(_0x4d07('0x9'));var fs=require('fs');var fs_extra=require(_0x4d07('0xa'));var _=require(_0x4d07('0xb'));var squel=require(_0x4d07('0xc'));var crypto=require(_0x4d07('0xd'));var jsforce=require(_0x4d07('0xe'));var deskjs=require(_0x4d07('0xf'));var toCsv=require(_0x4d07('0x8'));var querystring=require(_0x4d07('0x10'));var Papa=require(_0x4d07('0x11'));var Redis=require(_0x4d07('0x12'));var authService=require(_0x4d07('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4d07('0x14'));var hardwareService=require(_0x4d07('0x15'));var logger=require(_0x4d07('0x16'))(_0x4d07('0x17'));var utils=require(_0x4d07('0x18'));var config=require(_0x4d07('0x19'));var licenseUtil=require(_0x4d07('0x1a'));var db=require(_0x4d07('0x1b'))['db'];function respondWithStatusCode(_0xcf0b9c,_0x1a2028){_0x1a2028=_0x1a2028||0xcc;return function(_0x163c54){if(_0x163c54){return _0xcf0b9c[_0x4d07('0x1c')](_0x1a2028);}return _0xcf0b9c[_0x4d07('0x1d')](_0x1a2028)[_0x4d07('0x1e')]();};}function respondWithResult(_0x293fca,_0x48ef6d){_0x48ef6d=_0x48ef6d||0xc8;return function(_0x5acfff){if(_0x5acfff){return _0x293fca['status'](_0x48ef6d)[_0x4d07('0x1f')](_0x5acfff);}};}function respondWithFilteredResult(_0x7b2e7c,_0x447dd2){return function(_0x50bbd5){if(_0x50bbd5){var _0x1f3245=typeof _0x447dd2['offset']===_0x4d07('0x20')&&typeof _0x447dd2[_0x4d07('0x21')]===_0x4d07('0x20');var _0xfa3a84=_0x50bbd5[_0x4d07('0x22')];var _0x3160ec=_0x1f3245?0x0:_0x447dd2[_0x4d07('0x23')];var _0x3b3015=_0x1f3245?_0x50bbd5[_0x4d07('0x22')]:_0x447dd2[_0x4d07('0x23')]+_0x447dd2[_0x4d07('0x21')];var _0x4607a9;if(_0x3b3015>=_0xfa3a84){_0x3b3015=_0xfa3a84;_0x4607a9=0xc8;}else{_0x4607a9=0xce;}_0x7b2e7c[_0x4d07('0x1d')](_0x4607a9);return _0x7b2e7c[_0x4d07('0x24')](_0x4d07('0x25'),_0x3160ec+'-'+_0x3b3015+'/'+_0xfa3a84)['json'](_0x50bbd5);}return null;};}function patchUpdates(_0x1b93e5){return function(_0xdd6ce6){try{jsonpatch['apply'](_0xdd6ce6,_0x1b93e5,!![]);}catch(_0x5280b2){return BPromise[_0x4d07('0x26')](_0x5280b2);}return _0xdd6ce6[_0x4d07('0x27')]();};}function saveUpdates(_0x4c130a,_0x3593bf){return function(_0x3771a4){if(_0x3771a4){return _0x3771a4[_0x4d07('0x28')](_0x4c130a)[_0x4d07('0x29')](function(_0x21f37d){return _0x21f37d;});}return null;};}function removeEntity(_0x4b7373,_0xfc0b19){return function(_0x4d601b){if(_0x4d601b){return _0x4d601b[_0x4d07('0x2a')]()[_0x4d07('0x29')](function(){_0x4b7373['status'](0xcc)[_0x4d07('0x1e')]();});}};}function handleEntityNotFound(_0x28d1c7,_0x4e7be6){return function(_0x1f0ef9){if(!_0x1f0ef9){_0x28d1c7[_0x4d07('0x1c')](0x194);}return _0x1f0ef9;};}function handleError(_0x430155,_0x18c056){_0x18c056=_0x18c056||0x1f4;return function(_0x6e9b10){logger[_0x4d07('0x2b')](_0x6e9b10[_0x4d07('0x2c')]);if(_0x6e9b10[_0x4d07('0x2d')]){delete _0x6e9b10['name'];}_0x430155['status'](_0x18c056)[_0x4d07('0x2e')](_0x6e9b10);};}exports[_0x4d07('0x2f')]=function(_0x457ad5,_0x8652c7){var _0x5657db={},_0x29d892={},_0xd0d529={'count':0x0,'rows':[]};var _0x294703=_['map'](db[_0x4d07('0x30')]['rawAttributes'],function(_0x931ef){return{'name':_0x931ef[_0x4d07('0x31')],'type':_0x931ef[_0x4d07('0x32')][_0x4d07('0x33')]};});_0x29d892[_0x4d07('0x34')]=_[_0x4d07('0x35')](_0x294703,'name');_0x29d892[_0x4d07('0x36')]=_[_0x4d07('0x37')](_0x457ad5[_0x4d07('0x36')]);_0x29d892[_0x4d07('0x38')]=_[_0x4d07('0x39')](_0x29d892[_0x4d07('0x34')],_0x29d892['query']);_0x5657db['attributes']=_['intersection'](_0x29d892[_0x4d07('0x34')],qs[_0x4d07('0x3a')](_0x457ad5['query'][_0x4d07('0x3a')]));_0x5657db['attributes']=_0x5657db[_0x4d07('0x3b')][_0x4d07('0x3c')]?_0x5657db[_0x4d07('0x3b')]:_0x29d892[_0x4d07('0x34')];if(!_0x457ad5[_0x4d07('0x36')][_0x4d07('0x3d')](_0x4d07('0x3e'))){_0x5657db[_0x4d07('0x21')]=qs['limit'](_0x457ad5[_0x4d07('0x36')][_0x4d07('0x21')]);_0x5657db[_0x4d07('0x23')]=qs[_0x4d07('0x23')](_0x457ad5['query'][_0x4d07('0x23')]);}_0x5657db[_0x4d07('0x3f')]=qs[_0x4d07('0x40')](_0x457ad5[_0x4d07('0x36')][_0x4d07('0x40')]);_0x5657db[_0x4d07('0x41')]=qs[_0x4d07('0x38')](_[_0x4d07('0x42')](_0x457ad5[_0x4d07('0x36')],_0x29d892[_0x4d07('0x38')]),_0x294703);if(_0x457ad5[_0x4d07('0x36')][_0x4d07('0x43')]){_0x5657db[_0x4d07('0x41')]=_['merge'](_0x5657db[_0x4d07('0x41')],{'$or':_[_0x4d07('0x35')](_0x294703,function(_0x2a42e1){if(_0x2a42e1[_0x4d07('0x32')]!==_0x4d07('0x44')){var _0x55cc57={};_0x55cc57[_0x2a42e1['name']]={'$like':'%'+_0x457ad5[_0x4d07('0x36')]['filter']+'%'};return _0x55cc57;}})});}_0x5657db=_[_0x4d07('0x45')]({},_0x5657db,_0x457ad5[_0x4d07('0x46')]);var _0x2b6769={'where':_0x5657db[_0x4d07('0x41')]};return db[_0x4d07('0x30')][_0x4d07('0x22')](_0x2b6769)[_0x4d07('0x29')](function(_0x1269a7){_0xd0d529[_0x4d07('0x22')]=_0x1269a7;if(_0x457ad5['query'][_0x4d07('0x47')]){_0x5657db[_0x4d07('0x48')]=[{'all':!![]}];}return db[_0x4d07('0x30')][_0x4d07('0x49')](_0x5657db);})['then'](function(_0x227fd8){_0xd0d529[_0x4d07('0x4a')]=_0x227fd8;return _0xd0d529;})[_0x4d07('0x29')](respondWithFilteredResult(_0x8652c7,_0x5657db))[_0x4d07('0x4b')](handleError(_0x8652c7,null));};exports['show']=function(_0x5005f9,_0x29ef19){var _0xa3ec67={'raw':![],'where':{'id':_0x5005f9['params']['id']}},_0x95354a={};_0x95354a[_0x4d07('0x34')]=_['keys'](db[_0x4d07('0x30')]['rawAttributes']);_0x95354a['query']=_[_0x4d07('0x37')](_0x5005f9['query']);_0x95354a['filters']=_[_0x4d07('0x39')](_0x95354a['model'],_0x95354a[_0x4d07('0x36')]);_0xa3ec67['attributes']=_['intersection'](_0x95354a[_0x4d07('0x34')],qs[_0x4d07('0x3a')](_0x5005f9[_0x4d07('0x36')][_0x4d07('0x3a')]));_0xa3ec67[_0x4d07('0x3b')]=_0xa3ec67[_0x4d07('0x3b')]['length']?_0xa3ec67[_0x4d07('0x3b')]:_0x95354a[_0x4d07('0x34')];if(_0x5005f9[_0x4d07('0x36')][_0x4d07('0x47')]){_0xa3ec67['include']=[{'all':!![]}];}_0xa3ec67=_['merge']({},_0xa3ec67,_0x5005f9[_0x4d07('0x46')]);return db[_0x4d07('0x30')][_0x4d07('0x4c')](_0xa3ec67)[_0x4d07('0x29')](handleEntityNotFound(_0x29ef19,null))[_0x4d07('0x29')](respondWithResult(_0x29ef19,null))[_0x4d07('0x4b')](handleError(_0x29ef19,null));};exports[_0x4d07('0x4d')]=function(_0x14a5d1,_0x5dbb2c){return db[_0x4d07('0x30')][_0x4d07('0x4d')](_0x14a5d1[_0x4d07('0x4e')],{})[_0x4d07('0x29')](respondWithResult(_0x5dbb2c,0xc9))[_0x4d07('0x4b')](handleError(_0x5dbb2c,null));};exports['update']=function(_0x4b64d0,_0x16d093){if(_0x4b64d0[_0x4d07('0x4e')]['id']){delete _0x4b64d0['body']['id'];}return db['ServicenowConfiguration'][_0x4d07('0x4c')]({'where':{'id':_0x4b64d0['params']['id']}})['then'](handleEntityNotFound(_0x16d093,null))[_0x4d07('0x29')](saveUpdates(_0x4b64d0[_0x4d07('0x4e')],null))[_0x4d07('0x29')](respondWithResult(_0x16d093,null))[_0x4d07('0x4b')](handleError(_0x16d093,null));};exports[_0x4d07('0x2a')]=function(_0xdc8836,_0xb0f378){return db[_0x4d07('0x30')][_0x4d07('0x4c')]({'where':{'id':_0xdc8836[_0x4d07('0x4f')]['id']}})[_0x4d07('0x29')](handleEntityNotFound(_0xb0f378,null))[_0x4d07('0x29')](removeEntity(_0xb0f378,null))['catch'](handleError(_0xb0f378,null));};exports[_0x4d07('0x50')]=function(_0x38a668,_0x174125,_0x5cb5d7){var _0x4419f5={};var _0x2b7df7={};var _0x1a1bf5;var _0x3361c4;return db[_0x4d07('0x30')][_0x4d07('0x51')]({'where':{'id':_0x38a668[_0x4d07('0x4f')]['id']}})['then'](handleEntityNotFound(_0x174125,null))['then'](function(_0x1df26d){if(_0x1df26d){_0x1a1bf5=_0x1df26d;_0x2b7df7[_0x4d07('0x34')]=_[_0x4d07('0x37')](db[_0x4d07('0x52')][_0x4d07('0x53')]);_0x2b7df7[_0x4d07('0x36')]=_[_0x4d07('0x37')](_0x38a668[_0x4d07('0x36')]);_0x2b7df7[_0x4d07('0x38')]=_[_0x4d07('0x39')](_0x2b7df7['model'],_0x2b7df7[_0x4d07('0x36')]);_0x4419f5[_0x4d07('0x3b')]=_[_0x4d07('0x39')](_0x2b7df7[_0x4d07('0x34')],qs[_0x4d07('0x3a')](_0x38a668['query'][_0x4d07('0x3a')]));_0x4419f5[_0x4d07('0x3b')]=_0x4419f5['attributes']['length']?_0x4419f5[_0x4d07('0x3b')]:_0x2b7df7[_0x4d07('0x34')];_0x4419f5[_0x4d07('0x3f')]=qs['sort'](_0x38a668[_0x4d07('0x36')][_0x4d07('0x40')]);_0x4419f5[_0x4d07('0x41')]=qs[_0x4d07('0x38')](_['pick'](_0x38a668[_0x4d07('0x36')],_0x2b7df7[_0x4d07('0x38')]));if(_0x38a668[_0x4d07('0x36')][_0x4d07('0x43')]){_0x4419f5[_0x4d07('0x41')]=_[_0x4d07('0x45')](_0x4419f5['where'],{'$or':_[_0x4d07('0x35')](_0x4419f5[_0x4d07('0x3b')],function(_0x44caa7){var _0x15fa96={};_0x15fa96[_0x44caa7]={'$like':'%'+_0x38a668[_0x4d07('0x36')][_0x4d07('0x43')]+'%'};return _0x15fa96;})});}_0x4419f5=_[_0x4d07('0x45')]({},_0x4419f5,_0x38a668[_0x4d07('0x46')]);return _0x1a1bf5[_0x4d07('0x50')](_0x4419f5);}})[_0x4d07('0x29')](function(_0x1045e8){if(_0x1045e8){_0x3361c4=_0x1045e8[_0x4d07('0x3c')];if(!_0x38a668[_0x4d07('0x36')][_0x4d07('0x3d')]('nolimit')){_0x4419f5[_0x4d07('0x21')]=qs[_0x4d07('0x21')](_0x38a668['query'][_0x4d07('0x21')]);_0x4419f5[_0x4d07('0x23')]=qs[_0x4d07('0x23')](_0x38a668['query'][_0x4d07('0x23')]);}return _0x1a1bf5[_0x4d07('0x50')](_0x4419f5);}})[_0x4d07('0x29')](function(_0x48a578){if(_0x48a578){return _0x48a578?{'count':_0x3361c4,'rows':_0x48a578}:null;}})[_0x4d07('0x29')](respondWithResult(_0x174125,null))[_0x4d07('0x4b')](handleError(_0x174125,null));};exports['getSubjects']=function(_0x389408,_0x5bf391,_0x5e2129){var _0x8ead17={};var _0x1472cb={};var _0x377748;var _0x424479;return db[_0x4d07('0x30')][_0x4d07('0x51')]({'where':{'id':_0x389408[_0x4d07('0x4f')]['id']}})[_0x4d07('0x29')](handleEntityNotFound(_0x5bf391,null))['then'](function(_0x45ab28){if(_0x45ab28){_0x377748=_0x45ab28;_0x1472cb[_0x4d07('0x34')]=_[_0x4d07('0x37')](db[_0x4d07('0x52')]['rawAttributes']);_0x1472cb['query']=_[_0x4d07('0x37')](_0x389408[_0x4d07('0x36')]);_0x1472cb[_0x4d07('0x38')]=_[_0x4d07('0x39')](_0x1472cb[_0x4d07('0x34')],_0x1472cb[_0x4d07('0x36')]);_0x8ead17[_0x4d07('0x3b')]=_['intersection'](_0x1472cb[_0x4d07('0x34')],qs[_0x4d07('0x3a')](_0x389408[_0x4d07('0x36')]['fields']));_0x8ead17['attributes']=_0x8ead17['attributes']['length']?_0x8ead17[_0x4d07('0x3b')]:_0x1472cb[_0x4d07('0x34')];_0x8ead17[_0x4d07('0x3f')]=qs[_0x4d07('0x40')](_0x389408[_0x4d07('0x36')][_0x4d07('0x40')]);_0x8ead17['where']=qs[_0x4d07('0x38')](_[_0x4d07('0x42')](_0x389408['query'],_0x1472cb[_0x4d07('0x38')]));if(_0x389408['query']['filter']){_0x8ead17[_0x4d07('0x41')]=_[_0x4d07('0x45')](_0x8ead17['where'],{'$or':_[_0x4d07('0x35')](_0x8ead17[_0x4d07('0x3b')],function(_0x24b4ce){var _0x265ea0={};_0x265ea0[_0x24b4ce]={'$like':'%'+_0x389408['query'][_0x4d07('0x43')]+'%'};return _0x265ea0;})});}_0x8ead17=_[_0x4d07('0x45')]({},_0x8ead17,_0x389408[_0x4d07('0x46')]);return _0x377748[_0x4d07('0x54')](_0x8ead17);}})[_0x4d07('0x29')](function(_0x1022e7){if(_0x1022e7){_0x424479=_0x1022e7[_0x4d07('0x3c')];if(!_0x389408[_0x4d07('0x36')][_0x4d07('0x3d')]('nolimit')){_0x8ead17[_0x4d07('0x21')]=qs[_0x4d07('0x21')](_0x389408[_0x4d07('0x36')][_0x4d07('0x21')]);_0x8ead17[_0x4d07('0x23')]=qs[_0x4d07('0x23')](_0x389408[_0x4d07('0x36')]['offset']);}return _0x377748['getSubjects'](_0x8ead17);}})[_0x4d07('0x29')](function(_0x4ce9c0){if(_0x4ce9c0){return _0x4ce9c0?{'count':_0x424479,'rows':_0x4ce9c0}:null;}})[_0x4d07('0x29')](respondWithResult(_0x5bf391,null))[_0x4d07('0x4b')](handleError(_0x5bf391,null));};exports[_0x4d07('0x55')]=function(_0x7e4d34,_0x30d914,_0x4a1b15){var _0x208253={};var _0x2e6d72={};var _0x220871;var _0x326b6d;return db[_0x4d07('0x30')]['findOne']({'where':{'id':_0x7e4d34[_0x4d07('0x4f')]['id']}})[_0x4d07('0x29')](handleEntityNotFound(_0x30d914,null))[_0x4d07('0x29')](function(_0x3a60b6){if(_0x3a60b6){_0x220871=_0x3a60b6;_0x2e6d72[_0x4d07('0x34')]=_['keys'](db[_0x4d07('0x52')]['rawAttributes']);_0x2e6d72[_0x4d07('0x36')]=_['keys'](_0x7e4d34['query']);_0x2e6d72[_0x4d07('0x38')]=_[_0x4d07('0x39')](_0x2e6d72[_0x4d07('0x34')],_0x2e6d72[_0x4d07('0x36')]);_0x208253[_0x4d07('0x3b')]=_[_0x4d07('0x39')](_0x2e6d72['model'],qs['fields'](_0x7e4d34['query'][_0x4d07('0x3a')]));_0x208253['attributes']=_0x208253['attributes'][_0x4d07('0x3c')]?_0x208253[_0x4d07('0x3b')]:_0x2e6d72[_0x4d07('0x34')];_0x208253[_0x4d07('0x3f')]=qs[_0x4d07('0x40')](_0x7e4d34['query'][_0x4d07('0x40')]);_0x208253['where']=qs[_0x4d07('0x38')](_[_0x4d07('0x42')](_0x7e4d34[_0x4d07('0x36')],_0x2e6d72[_0x4d07('0x38')]));if(_0x7e4d34[_0x4d07('0x36')][_0x4d07('0x43')]){_0x208253[_0x4d07('0x41')]=_[_0x4d07('0x45')](_0x208253[_0x4d07('0x41')],{'$or':_['map'](_0x208253['attributes'],function(_0x301c46){var _0x3fdfaf={};_0x3fdfaf[_0x301c46]={'$like':'%'+_0x7e4d34[_0x4d07('0x36')][_0x4d07('0x43')]+'%'};return _0x3fdfaf;})});}_0x208253=_['merge']({},_0x208253,_0x7e4d34[_0x4d07('0x46')]);return _0x220871['getDescriptions'](_0x208253);}})['then'](function(_0xb28bee){if(_0xb28bee){_0x326b6d=_0xb28bee[_0x4d07('0x3c')];if(!_0x7e4d34['query']['hasOwnProperty']('nolimit')){_0x208253[_0x4d07('0x21')]=qs[_0x4d07('0x21')](_0x7e4d34['query'][_0x4d07('0x21')]);_0x208253[_0x4d07('0x23')]=qs[_0x4d07('0x23')](_0x7e4d34['query'][_0x4d07('0x23')]);}return _0x220871[_0x4d07('0x55')](_0x208253);}})['then'](function(_0x234dc3){if(_0x234dc3){return _0x234dc3?{'count':_0x326b6d,'rows':_0x234dc3}:null;}})[_0x4d07('0x29')](respondWithResult(_0x30d914,null))[_0x4d07('0x4b')](handleError(_0x30d914,null));};
\ No newline at end of file
index d4be665..a2c4fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6215=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0xb4f49d,_0x5b3f7f){var _0x2307d3=function(_0x24ec5c){while(--_0x24ec5c){_0xb4f49d['push'](_0xb4f49d['shift']());}};_0x2307d3(++_0x5b3f7f);}(_0x6215,0x198));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5621('0x0'));var util=require(_0x5621('0x1'));var logger=require(_0x5621('0x2'))('api');var moment=require(_0x5621('0x3'));var BPromise=require(_0x5621('0x4'));var rp=require(_0x5621('0x5'));var fs=require('fs');var path=require(_0x5621('0x6'));var rimraf=require(_0x5621('0x7'));var config=require(_0x5621('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0x52f3c6,_0x5ae3af){return _0x52f3c6[_0x5621('0x9')](_0x5621('0xa'),attributes,{'tableName':_0x5621('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88c3=['../../config/logger','bluebird','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration','int_servicenow_configurations','lodash'];(function(_0x52272c,_0x21d097){var _0x23d09d=function(_0x30ed57){while(--_0x30ed57){_0x52272c['push'](_0x52272c['shift']());}};_0x23d09d(++_0x21d097);}(_0x88c3,0x1ee));var _0x388c=function(_0x4b9d8f,_0x5d477d){_0x4b9d8f=_0x4b9d8f-0x0;var _0x260624=_0x88c3[_0x4b9d8f];return _0x260624;};'use strict';var _=require(_0x388c('0x0'));var util=require('util');var logger=require(_0x388c('0x1'))('api');var moment=require('moment');var BPromise=require(_0x388c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x388c('0x3'));var config=require(_0x388c('0x4'));var attributes=require(_0x388c('0x5'));module[_0x388c('0x6')]=function(_0x28ed4d,_0x23199c){return _0x28ed4d['define'](_0x388c('0x7'),attributes,{'tableName':_0x388c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6aa55c4..2fc5b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdfe=['client','http','request','then','info','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ServicenowConfiguration,\x20%s,\x20%s','message','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x3697ea,_0x546575){var _0xe3edc0=function(_0x374933){while(--_0x374933){_0x3697ea['push'](_0x3697ea['shift']());}};_0xe3edc0(++_0x546575);}(_0xcdfe,0xae));var _0xecdf=function(_0x5ccce4,_0x3c4f7f){_0x5ccce4=_0x5ccce4-0x0;var _0x11e30=_0xcdfe[_0x5ccce4];return _0x11e30;};'use strict';var _=require(_0xecdf('0x0'));var util=require(_0xecdf('0x1'));var moment=require('moment');var BPromise=require(_0xecdf('0x2'));var rs=require(_0xecdf('0x3'));var fs=require('fs');var Redis=require(_0xecdf('0x4'));var db=require(_0xecdf('0x5'))['db'];var utils=require(_0xecdf('0x6'));var logger=require(_0xecdf('0x7'))('rpc');var config=require(_0xecdf('0x8'));var jayson=require(_0xecdf('0x9'));var client=jayson[_0xecdf('0xa')][_0xecdf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2324de,_0x2527aa,_0x34ae9f){return new BPromise(function(_0x17d4c6,_0x32da12){return client[_0xecdf('0xc')](_0x2324de,_0x34ae9f)[_0xecdf('0xd')](function(_0x382f9c){logger[_0xecdf('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x2527aa,_0xecdf('0xf'));logger[_0xecdf('0x10')](_0xecdf('0x11'),_0x2527aa,'request\x20sent',JSON[_0xecdf('0x12')](_0x382f9c));if(_0x382f9c[_0xecdf('0x13')]){if(_0x382f9c[_0xecdf('0x13')][_0xecdf('0x14')]===0x1f4){logger[_0xecdf('0x13')](_0xecdf('0x15'),_0x2527aa,_0x382f9c[_0xecdf('0x13')][_0xecdf('0x16')]);return _0x32da12(_0x382f9c['error']['message']);}logger[_0xecdf('0x13')](_0xecdf('0x15'),_0x2527aa,_0x382f9c[_0xecdf('0x13')][_0xecdf('0x16')]);return _0x17d4c6(_0x382f9c['error'][_0xecdf('0x16')]);}else{logger[_0xecdf('0xe')](_0xecdf('0x15'),_0x2527aa,_0xecdf('0xf'));_0x17d4c6(_0x382f9c['result']['message']);}})['catch'](function(_0xc6605){logger['error'](_0xecdf('0x15'),_0x2527aa,_0xc6605);_0x32da12(_0xc6605);});});}
\ No newline at end of file
+var _0x1b8e=['info','request\x20sent','debug','error','code','ServicenowConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then'];(function(_0x30f910,_0x8e3a23){var _0x836515=function(_0x1742eb){while(--_0x1742eb){_0x30f910['push'](_0x30f910['shift']());}};_0x836515(++_0x8e3a23);}(_0x1b8e,0x14b));var _0xe1b8=function(_0xa9981d,_0x32360b){_0xa9981d=_0xa9981d-0x0;var _0x2563b7=_0x1b8e[_0xa9981d];return _0x2563b7;};'use strict';var _=require(_0xe1b8('0x0'));var util=require(_0xe1b8('0x1'));var moment=require(_0xe1b8('0x2'));var BPromise=require('bluebird');var rs=require(_0xe1b8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe1b8('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe1b8('0x5'))('rpc');var config=require(_0xe1b8('0x6'));var jayson=require(_0xe1b8('0x7'));var client=jayson['client'][_0xe1b8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xd4c0b8,_0x26b1c3,_0xe7c025){return new BPromise(function(_0x38b413,_0x14972d){return client[_0xe1b8('0x9')](_0xd4c0b8,_0xe7c025)[_0xe1b8('0xa')](function(_0x363f92){logger[_0xe1b8('0xb')]('ServicenowConfiguration,\x20%s,\x20%s',_0x26b1c3,_0xe1b8('0xc'));logger[_0xe1b8('0xd')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x26b1c3,_0xe1b8('0xc'),JSON['stringify'](_0x363f92));if(_0x363f92[_0xe1b8('0xe')]){if(_0x363f92['error'][_0xe1b8('0xf')]===0x1f4){logger[_0xe1b8('0xe')](_0xe1b8('0x10'),_0x26b1c3,_0x363f92[_0xe1b8('0xe')][_0xe1b8('0x11')]);return _0x14972d(_0x363f92[_0xe1b8('0xe')][_0xe1b8('0x11')]);}logger['error'](_0xe1b8('0x10'),_0x26b1c3,_0x363f92[_0xe1b8('0xe')][_0xe1b8('0x11')]);return _0x38b413(_0x363f92[_0xe1b8('0xe')][_0xe1b8('0x11')]);}else{logger[_0xe1b8('0xb')](_0xe1b8('0x10'),_0x26b1c3,'request\x20sent');_0x38b413(_0x363f92[_0xe1b8('0x12')][_0xe1b8('0x11')]);}})['catch'](function(_0x557ec8){logger[_0xe1b8('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x26b1c3,_0x557ec8);_0x14972d(_0x557ec8);});});}
\ No newline at end of file
index b19a3f0..2f6a906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x163d=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intServicenowField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x177f26,_0x239e0c){var _0xb1c723=function(_0x130818){while(--_0x130818){_0x177f26['push'](_0x177f26['shift']());}};_0xb1c723(++_0x239e0c);}(_0x163d,0xda));var _0xd163=function(_0x1fe18,_0x40f323){_0x1fe18=_0x1fe18-0x0;var _0x553174=_0x163d[_0x1fe18];return _0x553174;};'use strict';var multer=require(_0xd163('0x0'));var util=require(_0xd163('0x1'));var path=require(_0xd163('0x2'));var timeout=require(_0xd163('0x3'));var express=require(_0xd163('0x4'));var router=express[_0xd163('0x5')]();var fs_extra=require(_0xd163('0x6'));var auth=require(_0xd163('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd163('0x8'));router[_0xd163('0x9')]('/',auth[_0xd163('0xa')](),controller['index']);router[_0xd163('0x9')](_0xd163('0xb'),auth['isAuthenticated'](),controller[_0xd163('0xc')]);router[_0xd163('0xd')]('/',auth[_0xd163('0xa')](),controller[_0xd163('0xe')]);router[_0xd163('0xf')](_0xd163('0xb'),auth['isAuthenticated'](),controller[_0xd163('0x10')]);router[_0xd163('0x11')](_0xd163('0xb'),auth[_0xd163('0xa')](),controller[_0xd163('0x12')]);module[_0xd163('0x13')]=router;
\ No newline at end of file
+var _0x4b55=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x2ee227,_0x4df529){var _0x1bf674=function(_0x4ee124){while(--_0x4ee124){_0x2ee227['push'](_0x2ee227['shift']());}};_0x1bf674(++_0x4df529);}(_0x4b55,0x11c));var _0x54b5=function(_0x1f23ac,_0x5f3860){_0x1f23ac=_0x1f23ac-0x0;var _0x4d110f=_0x4b55[_0x1f23ac];return _0x4d110f;};'use strict';var multer=require(_0x54b5('0x0'));var util=require(_0x54b5('0x1'));var path=require(_0x54b5('0x2'));var timeout=require(_0x54b5('0x3'));var express=require(_0x54b5('0x4'));var router=express[_0x54b5('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x54b5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x54b5('0x7'));var controller=require(_0x54b5('0x8'));router[_0x54b5('0x9')]('/',auth[_0x54b5('0xa')](),controller[_0x54b5('0xb')]);router['get'](_0x54b5('0xc'),auth['isAuthenticated'](),controller[_0x54b5('0xd')]);router[_0x54b5('0xe')]('/',auth['isAuthenticated'](),controller[_0x54b5('0xf')]);router[_0x54b5('0x10')](_0x54b5('0xc'),auth[_0x54b5('0xa')](),controller[_0x54b5('0x11')]);router[_0x54b5('0x12')](_0x54b5('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x54b5('0x13')]=router;
\ No newline at end of file
index cfa6d3e..037f0b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3682=['string','customVariable','keyValue','picklist','STRING','variable','sequelize','ENUM'];(function(_0x2df070,_0x555ee0){var _0x15196b=function(_0x3cd2af){while(--_0x3cd2af){_0x2df070['push'](_0x2df070['shift']());}};_0x15196b(++_0x555ee0);}(_0x3682,0x1de));var _0x2368=function(_0x41a4bb,_0x36b115){_0x41a4bb=_0x41a4bb-0x0;var _0x4d4239=_0x3682[_0x41a4bb];return _0x4d4239;};'use strict';var Sequelize=require(_0x2368('0x0'));module['exports']={'type':{'type':Sequelize[_0x2368('0x1')](_0x2368('0x2'),'variable',_0x2368('0x3'),_0x2368('0x4'),_0x2368('0x5')),'defaultValue':_0x2368('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2368('0x6')]},'keyType':{'type':Sequelize[_0x2368('0x1')](_0x2368('0x2'),_0x2368('0x7'),_0x2368('0x3'))},'keyContent':{'type':Sequelize[_0x2368('0x6')]},'idField':{'type':Sequelize[_0x2368('0x6')]},'nameField':{'type':Sequelize[_0x2368('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2368('0x6')]}};
\ No newline at end of file
+var _0x641a=['variable','customVariable','STRING','BOOLEAN','exports','ENUM','string'];(function(_0x253a16,_0x34ddec){var _0x395f6e=function(_0xa79d3a){while(--_0xa79d3a){_0x253a16['push'](_0x253a16['shift']());}};_0x395f6e(++_0x34ddec);}(_0x641a,0x185));var _0xa641=function(_0x217751,_0x5a0349){_0x217751=_0x217751-0x0;var _0x66446b=_0x641a[_0x217751];return _0x66446b;};'use strict';var Sequelize=require('sequelize');module[_0xa641('0x0')]={'type':{'type':Sequelize[_0xa641('0x1')](_0xa641('0x2'),_0xa641('0x3'),_0xa641('0x4'),'keyValue','picklist'),'defaultValue':_0xa641('0x2')},'content':{'type':Sequelize[_0xa641('0x5')]},'key':{'type':Sequelize[_0xa641('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0xa641('0x3'),_0xa641('0x4'))},'keyContent':{'type':Sequelize[_0xa641('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xa641('0x5')]},'customField':{'type':Sequelize[_0xa641('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 313375b..448e4ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7d8=['fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','lodash','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','json','offset','undefined','limit','count','set','apply','reject','save','update','then','end','error','name','send','index','ServicenowField','rawAttributes','type','key','map','keys','query','filters','intersection','attributes','model','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','include','findAll','rows','catch','show','params','fields','create','body','find','destroy','eml-format','rimraf','zip-dir'];(function(_0x465188,_0x2a7281){var _0x392d4b=function(_0x3d5c00){while(--_0x3d5c00){_0x465188['push'](_0x465188['shift']());}};_0x392d4b(++_0x2a7281);}(_0xb7d8,0x129));var _0x8b7d=function(_0xebbad6,_0xb6b60){_0xebbad6=_0xebbad6-0x0;var _0x12f20a=_0xb7d8[_0xebbad6];return _0x12f20a;};'use strict';var emlformat=require(_0x8b7d('0x0'));var rimraf=require(_0x8b7d('0x1'));var zipdir=require(_0x8b7d('0x2'));var jsonpatch=require(_0x8b7d('0x3'));var rp=require(_0x8b7d('0x4'));var moment=require(_0x8b7d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8b7d('0x6'));var util=require('util');var path=require(_0x8b7d('0x7'));var sox=require(_0x8b7d('0x8'));var csv=require(_0x8b7d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8b7d('0xa'));var squel=require('squel');var crypto=require(_0x8b7d('0xb'));var jsforce=require(_0x8b7d('0xc'));var deskjs=require(_0x8b7d('0xd'));var toCsv=require(_0x8b7d('0x9'));var querystring=require(_0x8b7d('0xe'));var Papa=require(_0x8b7d('0xf'));var Redis=require(_0x8b7d('0x10'));var authService=require(_0x8b7d('0x11'));var qs=require(_0x8b7d('0x12'));var as=require(_0x8b7d('0x13'));var hardwareService=require(_0x8b7d('0x14'));var logger=require('../../config/logger')(_0x8b7d('0x15'));var utils=require(_0x8b7d('0x16'));var config=require(_0x8b7d('0x17'));var licenseUtil=require(_0x8b7d('0x18'));var db=require(_0x8b7d('0x19'))['db'];function respondWithStatusCode(_0x173d37,_0x35ec11){_0x35ec11=_0x35ec11||0xcc;return function(_0x45bb14){if(_0x45bb14){return _0x173d37[_0x8b7d('0x1a')](_0x35ec11);}return _0x173d37[_0x8b7d('0x1b')](_0x35ec11)['end']();};}function respondWithResult(_0x58ca72,_0x2c57b4){_0x2c57b4=_0x2c57b4||0xc8;return function(_0x202c4e){if(_0x202c4e){return _0x58ca72['status'](_0x2c57b4)[_0x8b7d('0x1c')](_0x202c4e);}};}function respondWithFilteredResult(_0x3931e2,_0x306d03){return function(_0x3f6898){if(_0x3f6898){var _0x2fdae4=typeof _0x306d03[_0x8b7d('0x1d')]===_0x8b7d('0x1e')&&typeof _0x306d03[_0x8b7d('0x1f')]===_0x8b7d('0x1e');var _0xd8e56d=_0x3f6898['count'];var _0x3a774e=_0x2fdae4?0x0:_0x306d03['offset'];var _0x35bb9d=_0x2fdae4?_0x3f6898[_0x8b7d('0x20')]:_0x306d03[_0x8b7d('0x1d')]+_0x306d03[_0x8b7d('0x1f')];var _0x41e117;if(_0x35bb9d>=_0xd8e56d){_0x35bb9d=_0xd8e56d;_0x41e117=0xc8;}else{_0x41e117=0xce;}_0x3931e2[_0x8b7d('0x1b')](_0x41e117);return _0x3931e2[_0x8b7d('0x21')]('Content-Range',_0x3a774e+'-'+_0x35bb9d+'/'+_0xd8e56d)[_0x8b7d('0x1c')](_0x3f6898);}return null;};}function patchUpdates(_0x47fff6){return function(_0x5c103c){try{jsonpatch[_0x8b7d('0x22')](_0x5c103c,_0x47fff6,!![]);}catch(_0xa6624a){return BPromise[_0x8b7d('0x23')](_0xa6624a);}return _0x5c103c[_0x8b7d('0x24')]();};}function saveUpdates(_0x4ab7f5,_0x97528b){return function(_0x518532){if(_0x518532){return _0x518532[_0x8b7d('0x25')](_0x4ab7f5)[_0x8b7d('0x26')](function(_0x2e3e5d){return _0x2e3e5d;});}return null;};}function removeEntity(_0x455ce4,_0x3a4e06){return function(_0x4160df){if(_0x4160df){return _0x4160df['destroy']()[_0x8b7d('0x26')](function(){_0x455ce4[_0x8b7d('0x1b')](0xcc)[_0x8b7d('0x27')]();});}};}function handleEntityNotFound(_0x4a48ca,_0x14237f){return function(_0x8336a6){if(!_0x8336a6){_0x4a48ca[_0x8b7d('0x1a')](0x194);}return _0x8336a6;};}function handleError(_0x1988bf,_0x1587be){_0x1587be=_0x1587be||0x1f4;return function(_0x352fed){logger[_0x8b7d('0x28')](_0x352fed['stack']);if(_0x352fed[_0x8b7d('0x29')]){delete _0x352fed['name'];}_0x1988bf[_0x8b7d('0x1b')](_0x1587be)[_0x8b7d('0x2a')](_0x352fed);};}exports[_0x8b7d('0x2b')]=function(_0x10d5fa,_0x6e79d1){var _0x3faed5={},_0x402457={},_0x3a9ea6={'count':0x0,'rows':[]};var _0x505623=_['map'](db[_0x8b7d('0x2c')][_0x8b7d('0x2d')],function(_0x22ce2c){return{'name':_0x22ce2c['fieldName'],'type':_0x22ce2c[_0x8b7d('0x2e')][_0x8b7d('0x2f')]};});_0x402457['model']=_[_0x8b7d('0x30')](_0x505623,_0x8b7d('0x29'));_0x402457['query']=_[_0x8b7d('0x31')](_0x10d5fa[_0x8b7d('0x32')]);_0x402457[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x402457['model'],_0x402457[_0x8b7d('0x32')]);_0x3faed5[_0x8b7d('0x35')]=_['intersection'](_0x402457[_0x8b7d('0x36')],qs['fields'](_0x10d5fa[_0x8b7d('0x32')]['fields']));_0x3faed5[_0x8b7d('0x35')]=_0x3faed5[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x3faed5['attributes']:_0x402457[_0x8b7d('0x36')];if(!_0x10d5fa[_0x8b7d('0x32')][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x3faed5['limit']=qs[_0x8b7d('0x1f')](_0x10d5fa[_0x8b7d('0x32')]['limit']);_0x3faed5[_0x8b7d('0x1d')]=qs[_0x8b7d('0x1d')](_0x10d5fa['query'][_0x8b7d('0x1d')]);}_0x3faed5['order']=qs[_0x8b7d('0x3a')](_0x10d5fa[_0x8b7d('0x32')][_0x8b7d('0x3a')]);_0x3faed5['where']=qs['filters'](_[_0x8b7d('0x3b')](_0x10d5fa[_0x8b7d('0x32')],_0x402457[_0x8b7d('0x33')]),_0x505623);if(_0x10d5fa[_0x8b7d('0x32')][_0x8b7d('0x3c')]){_0x3faed5['where']=_['merge'](_0x3faed5[_0x8b7d('0x3d')],{'$or':_[_0x8b7d('0x30')](_0x505623,function(_0x11cab1){if(_0x11cab1[_0x8b7d('0x2e')]!=='VIRTUAL'){var _0x55f004={};_0x55f004[_0x11cab1[_0x8b7d('0x29')]]={'$like':'%'+_0x10d5fa[_0x8b7d('0x32')]['filter']+'%'};return _0x55f004;}})});}_0x3faed5=_[_0x8b7d('0x3e')]({},_0x3faed5,_0x10d5fa[_0x8b7d('0x3f')]);var _0x488013={'where':_0x3faed5['where']};return db[_0x8b7d('0x2c')][_0x8b7d('0x20')](_0x488013)[_0x8b7d('0x26')](function(_0x39bb29){_0x3a9ea6[_0x8b7d('0x20')]=_0x39bb29;if(_0x10d5fa[_0x8b7d('0x32')]['includeAll']){_0x3faed5[_0x8b7d('0x40')]=[{'all':!![]}];}return db[_0x8b7d('0x2c')][_0x8b7d('0x41')](_0x3faed5);})[_0x8b7d('0x26')](function(_0xe426c0){_0x3a9ea6[_0x8b7d('0x42')]=_0xe426c0;return _0x3a9ea6;})[_0x8b7d('0x26')](respondWithFilteredResult(_0x6e79d1,_0x3faed5))[_0x8b7d('0x43')](handleError(_0x6e79d1,null));};exports[_0x8b7d('0x44')]=function(_0x5999e7,_0x34c6b2){var _0x17662e={'raw':!![],'where':{'id':_0x5999e7[_0x8b7d('0x45')]['id']}},_0x19da66={};_0x19da66[_0x8b7d('0x36')]=_[_0x8b7d('0x31')](db[_0x8b7d('0x2c')][_0x8b7d('0x2d')]);_0x19da66[_0x8b7d('0x32')]=_[_0x8b7d('0x31')](_0x5999e7['query']);_0x19da66[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x19da66[_0x8b7d('0x36')],_0x19da66[_0x8b7d('0x32')]);_0x17662e['attributes']=_['intersection'](_0x19da66[_0x8b7d('0x36')],qs['fields'](_0x5999e7[_0x8b7d('0x32')][_0x8b7d('0x46')]));_0x17662e[_0x8b7d('0x35')]=_0x17662e['attributes']['length']?_0x17662e[_0x8b7d('0x35')]:_0x19da66[_0x8b7d('0x36')];if(_0x5999e7[_0x8b7d('0x32')]['includeAll']){_0x17662e[_0x8b7d('0x40')]=[{'all':!![]}];}_0x17662e=_['merge']({},_0x17662e,_0x5999e7[_0x8b7d('0x3f')]);return db[_0x8b7d('0x2c')]['find'](_0x17662e)['then'](handleEntityNotFound(_0x34c6b2,null))[_0x8b7d('0x26')](respondWithResult(_0x34c6b2,null))['catch'](handleError(_0x34c6b2,null));};exports[_0x8b7d('0x47')]=function(_0x50e903,_0x182e6b){return db[_0x8b7d('0x2c')][_0x8b7d('0x47')](_0x50e903[_0x8b7d('0x48')],{})[_0x8b7d('0x26')](respondWithResult(_0x182e6b,0xc9))[_0x8b7d('0x43')](handleError(_0x182e6b,null));};exports['update']=function(_0x26bbca,_0xb0ae85){if(_0x26bbca[_0x8b7d('0x48')]['id']){delete _0x26bbca[_0x8b7d('0x48')]['id'];}return db[_0x8b7d('0x2c')][_0x8b7d('0x49')]({'where':{'id':_0x26bbca[_0x8b7d('0x45')]['id']}})[_0x8b7d('0x26')](handleEntityNotFound(_0xb0ae85,null))[_0x8b7d('0x26')](saveUpdates(_0x26bbca[_0x8b7d('0x48')],null))[_0x8b7d('0x26')](respondWithResult(_0xb0ae85,null))['catch'](handleError(_0xb0ae85,null));};exports[_0x8b7d('0x4a')]=function(_0x5f4b1e,_0x483f82){return db[_0x8b7d('0x2c')]['find']({'where':{'id':_0x5f4b1e[_0x8b7d('0x45')]['id']}})[_0x8b7d('0x26')](handleEntityNotFound(_0x483f82,null))['then'](removeEntity(_0x483f82,null))[_0x8b7d('0x43')](handleError(_0x483f82,null));};
\ No newline at end of file
+var _0x4e46=['ejs','fs-extra','lodash','squel','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','sendStatus','status','json','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','include','findAll','rows','show','params','catch','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv'];(function(_0x5eeaf4,_0x1ed39e){var _0x58a95a=function(_0x11fbf3){while(--_0x11fbf3){_0x5eeaf4['push'](_0x5eeaf4['shift']());}};_0x58a95a(++_0x1ed39e);}(_0x4e46,0x127));var _0x64e4=function(_0x539abf,_0x1779d5){_0x539abf=_0x539abf-0x0;var _0x2a6d75=_0x4e46[_0x539abf];return _0x2a6d75;};'use strict';var emlformat=require(_0x64e4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64e4('0x1'));var jsonpatch=require(_0x64e4('0x2'));var rp=require(_0x64e4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x64e4('0x4'));var util=require(_0x64e4('0x5'));var path=require(_0x64e4('0x6'));var sox=require(_0x64e4('0x7'));var csv=require(_0x64e4('0x8'));var ejs=require(_0x64e4('0x9'));var fs=require('fs');var fs_extra=require(_0x64e4('0xa'));var _=require(_0x64e4('0xb'));var squel=require(_0x64e4('0xc'));var crypto=require(_0x64e4('0xd'));var jsforce=require(_0x64e4('0xe'));var deskjs=require(_0x64e4('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x64e4('0x10'));var authService=require(_0x64e4('0x11'));var qs=require(_0x64e4('0x12'));var as=require(_0x64e4('0x13'));var hardwareService=require(_0x64e4('0x14'));var logger=require(_0x64e4('0x15'))(_0x64e4('0x16'));var utils=require(_0x64e4('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x64e4('0x18'));var db=require(_0x64e4('0x19'))['db'];function respondWithStatusCode(_0x295726,_0x392380){_0x392380=_0x392380||0xcc;return function(_0xae7076){if(_0xae7076){return _0x295726[_0x64e4('0x1a')](_0x392380);}return _0x295726[_0x64e4('0x1b')](_0x392380)['end']();};}function respondWithResult(_0x20e378,_0x16f19f){_0x16f19f=_0x16f19f||0xc8;return function(_0x1f6eb7){if(_0x1f6eb7){return _0x20e378['status'](_0x16f19f)[_0x64e4('0x1c')](_0x1f6eb7);}};}function respondWithFilteredResult(_0x4871b2,_0x2bee05){return function(_0x58147c){if(_0x58147c){var _0x4bcfb1=typeof _0x2bee05[_0x64e4('0x1d')]==='undefined'&&typeof _0x2bee05[_0x64e4('0x1e')]==='undefined';var _0x55c02d=_0x58147c['count'];var _0x618f15=_0x4bcfb1?0x0:_0x2bee05['offset'];var _0x4a5145=_0x4bcfb1?_0x58147c['count']:_0x2bee05[_0x64e4('0x1d')]+_0x2bee05[_0x64e4('0x1e')];var _0x1bb165;if(_0x4a5145>=_0x55c02d){_0x4a5145=_0x55c02d;_0x1bb165=0xc8;}else{_0x1bb165=0xce;}_0x4871b2['status'](_0x1bb165);return _0x4871b2[_0x64e4('0x1f')](_0x64e4('0x20'),_0x618f15+'-'+_0x4a5145+'/'+_0x55c02d)[_0x64e4('0x1c')](_0x58147c);}return null;};}function patchUpdates(_0x3857eb){return function(_0x3a88b5){try{jsonpatch[_0x64e4('0x21')](_0x3a88b5,_0x3857eb,!![]);}catch(_0x33eeda){return BPromise[_0x64e4('0x22')](_0x33eeda);}return _0x3a88b5[_0x64e4('0x23')]();};}function saveUpdates(_0x3c5f00,_0x483b6f){return function(_0x30a8f9){if(_0x30a8f9){return _0x30a8f9[_0x64e4('0x24')](_0x3c5f00)[_0x64e4('0x25')](function(_0x316e99){return _0x316e99;});}return null;};}function removeEntity(_0x8f78e3,_0x3d0276){return function(_0x5230ca){if(_0x5230ca){return _0x5230ca[_0x64e4('0x26')]()[_0x64e4('0x25')](function(){_0x8f78e3[_0x64e4('0x1b')](0xcc)[_0x64e4('0x27')]();});}};}function handleEntityNotFound(_0x57d990,_0x2c99e5){return function(_0x5a47df){if(!_0x5a47df){_0x57d990[_0x64e4('0x1a')](0x194);}return _0x5a47df;};}function handleError(_0x578070,_0x2075e5){_0x2075e5=_0x2075e5||0x1f4;return function(_0x131ed9){logger['error'](_0x131ed9[_0x64e4('0x28')]);if(_0x131ed9[_0x64e4('0x29')]){delete _0x131ed9['name'];}_0x578070['status'](_0x2075e5)[_0x64e4('0x2a')](_0x131ed9);};}exports[_0x64e4('0x2b')]=function(_0x2f6285,_0x48b513){var _0x2e1eb8={},_0x29a485={},_0x31a2d6={'count':0x0,'rows':[]};var _0x1afb4f=_[_0x64e4('0x2c')](db[_0x64e4('0x2d')][_0x64e4('0x2e')],function(_0x301794){return{'name':_0x301794[_0x64e4('0x2f')],'type':_0x301794[_0x64e4('0x30')]['key']};});_0x29a485['model']=_['map'](_0x1afb4f,_0x64e4('0x29'));_0x29a485[_0x64e4('0x31')]=_[_0x64e4('0x32')](_0x2f6285[_0x64e4('0x31')]);_0x29a485[_0x64e4('0x33')]=_[_0x64e4('0x34')](_0x29a485[_0x64e4('0x35')],_0x29a485[_0x64e4('0x31')]);_0x2e1eb8['attributes']=_[_0x64e4('0x34')](_0x29a485[_0x64e4('0x35')],qs['fields'](_0x2f6285[_0x64e4('0x31')][_0x64e4('0x36')]));_0x2e1eb8[_0x64e4('0x37')]=_0x2e1eb8[_0x64e4('0x37')][_0x64e4('0x38')]?_0x2e1eb8['attributes']:_0x29a485[_0x64e4('0x35')];if(!_0x2f6285[_0x64e4('0x31')]['hasOwnProperty'](_0x64e4('0x39'))){_0x2e1eb8[_0x64e4('0x1e')]=qs[_0x64e4('0x1e')](_0x2f6285['query']['limit']);_0x2e1eb8[_0x64e4('0x1d')]=qs[_0x64e4('0x1d')](_0x2f6285[_0x64e4('0x31')][_0x64e4('0x1d')]);}_0x2e1eb8[_0x64e4('0x3a')]=qs['sort'](_0x2f6285[_0x64e4('0x31')][_0x64e4('0x3b')]);_0x2e1eb8[_0x64e4('0x3c')]=qs[_0x64e4('0x33')](_[_0x64e4('0x3d')](_0x2f6285[_0x64e4('0x31')],_0x29a485[_0x64e4('0x33')]),_0x1afb4f);if(_0x2f6285[_0x64e4('0x31')][_0x64e4('0x3e')]){_0x2e1eb8[_0x64e4('0x3c')]=_[_0x64e4('0x3f')](_0x2e1eb8[_0x64e4('0x3c')],{'$or':_['map'](_0x1afb4f,function(_0x3846ad){if(_0x3846ad[_0x64e4('0x30')]!=='VIRTUAL'){var _0x252981={};_0x252981[_0x3846ad[_0x64e4('0x29')]]={'$like':'%'+_0x2f6285[_0x64e4('0x31')]['filter']+'%'};return _0x252981;}})});}_0x2e1eb8=_[_0x64e4('0x3f')]({},_0x2e1eb8,_0x2f6285[_0x64e4('0x40')]);var _0x412314={'where':_0x2e1eb8[_0x64e4('0x3c')]};return db[_0x64e4('0x2d')][_0x64e4('0x41')](_0x412314)['then'](function(_0x52b575){_0x31a2d6[_0x64e4('0x41')]=_0x52b575;if(_0x2f6285[_0x64e4('0x31')][_0x64e4('0x42')]){_0x2e1eb8[_0x64e4('0x43')]=[{'all':!![]}];}return db[_0x64e4('0x2d')][_0x64e4('0x44')](_0x2e1eb8);})[_0x64e4('0x25')](function(_0x244d81){_0x31a2d6[_0x64e4('0x45')]=_0x244d81;return _0x31a2d6;})[_0x64e4('0x25')](respondWithFilteredResult(_0x48b513,_0x2e1eb8))['catch'](handleError(_0x48b513,null));};exports[_0x64e4('0x46')]=function(_0x4ff529,_0x34982b){var _0x9ae04e={'raw':!![],'where':{'id':_0x4ff529[_0x64e4('0x47')]['id']}},_0x37998f={};_0x37998f[_0x64e4('0x35')]=_[_0x64e4('0x32')](db['ServicenowField'][_0x64e4('0x2e')]);_0x37998f[_0x64e4('0x31')]=_[_0x64e4('0x32')](_0x4ff529['query']);_0x37998f[_0x64e4('0x33')]=_['intersection'](_0x37998f['model'],_0x37998f[_0x64e4('0x31')]);_0x9ae04e[_0x64e4('0x37')]=_[_0x64e4('0x34')](_0x37998f[_0x64e4('0x35')],qs[_0x64e4('0x36')](_0x4ff529['query']['fields']));_0x9ae04e[_0x64e4('0x37')]=_0x9ae04e[_0x64e4('0x37')]['length']?_0x9ae04e['attributes']:_0x37998f['model'];if(_0x4ff529[_0x64e4('0x31')][_0x64e4('0x42')]){_0x9ae04e[_0x64e4('0x43')]=[{'all':!![]}];}_0x9ae04e=_['merge']({},_0x9ae04e,_0x4ff529['options']);return db[_0x64e4('0x2d')]['find'](_0x9ae04e)[_0x64e4('0x25')](handleEntityNotFound(_0x34982b,null))['then'](respondWithResult(_0x34982b,null))[_0x64e4('0x48')](handleError(_0x34982b,null));};exports['create']=function(_0x5d2245,_0x3425b2){return db['ServicenowField'][_0x64e4('0x49')](_0x5d2245[_0x64e4('0x4a')],{})[_0x64e4('0x25')](respondWithResult(_0x3425b2,0xc9))['catch'](handleError(_0x3425b2,null));};exports[_0x64e4('0x24')]=function(_0x3de439,_0x376fa9){if(_0x3de439[_0x64e4('0x4a')]['id']){delete _0x3de439[_0x64e4('0x4a')]['id'];}return db[_0x64e4('0x2d')][_0x64e4('0x4b')]({'where':{'id':_0x3de439[_0x64e4('0x47')]['id']}})[_0x64e4('0x25')](handleEntityNotFound(_0x376fa9,null))['then'](saveUpdates(_0x3de439[_0x64e4('0x4a')],null))[_0x64e4('0x25')](respondWithResult(_0x376fa9,null))['catch'](handleError(_0x376fa9,null));};exports[_0x64e4('0x26')]=function(_0x26381e,_0x489e6c){return db[_0x64e4('0x2d')][_0x64e4('0x4b')]({'where':{'id':_0x26381e[_0x64e4('0x47')]['id']}})[_0x64e4('0x25')](handleEntityNotFound(_0x489e6c,null))['then'](removeEntity(_0x489e6c,null))[_0x64e4('0x48')](handleError(_0x489e6c,null));};
\ No newline at end of file
index e2dc541..984395a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0553=['./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','idField','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment'];(function(_0x21249d,_0x4188d9){var _0x227ffa=function(_0x2d6868){while(--_0x2d6868){_0x21249d['push'](_0x21249d['shift']());}};_0x227ffa(++_0x4188d9);}(_0x0553,0x88));var _0x3055=function(_0x5bae64,_0x5062bd){_0x5bae64=_0x5bae64-0x0;var _0x45e8af=_0x0553[_0x5bae64];return _0x45e8af;};'use strict';var _=require(_0x3055('0x0'));var util=require(_0x3055('0x1'));var logger=require(_0x3055('0x2'))('api');var moment=require(_0x3055('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3055('0x4'));var rimraf=require(_0x3055('0x5'));var config=require(_0x3055('0x6'));var attributes=require(_0x3055('0x7'));module[_0x3055('0x8')]=function(_0x1e9b67,_0x580109){return _0x1e9b67[_0x3055('0x9')](_0x3055('0xa'),attributes,{'tableName':_0x3055('0xb'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x3055('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a23=['idField','lodash','util','moment','bluebird','path','rimraf','./intServicenowField.attributes','exports','define'];(function(_0x372515,_0xdd11f){var _0xa3bf4e=function(_0x212cc8){while(--_0x212cc8){_0x372515['push'](_0x372515['shift']());}};_0xa3bf4e(++_0xdd11f);}(_0x1a23,0x1eb));var _0x31a2=function(_0x2c66b9,_0x3b9c8b){_0x2c66b9=_0x2c66b9-0x0;var _0x5aa669=_0x1a23[_0x2c66b9];return _0x5aa669;};'use strict';var _=require(_0x31a2('0x0'));var util=require(_0x31a2('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x31a2('0x2'));var BPromise=require(_0x31a2('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x31a2('0x4'));var rimraf=require(_0x31a2('0x5'));var config=require('../../config/environment');var attributes=require(_0x31a2('0x6'));module[_0x31a2('0x7')]=function(_0x3eb251,_0x1cb746){return _0x3eb251[_0x31a2('0x8')]('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x31a2('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index db84149..7dcd487 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','ServicenowField,\x20%s,\x20%s,\x20%s','error','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x8acfd3,_0x2d21a3){var _0x3f89da=function(_0x387acf){while(--_0x387acf){_0x8acfd3['push'](_0x8acfd3['shift']());}};_0x3f89da(++_0x2d21a3);}(_0xaa88,0x137));var _0x8aa8=function(_0x2601b4,_0x315e78){_0x2601b4=_0x2601b4-0x0;var _0x3e3661=_0xaa88[_0x2601b4];return _0x3e3661;};'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')]('ServicenowField,\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')]('ServicenowField,\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')]('ServicenowField,\x20%s,\x20%s',_0x449d2d,_0xd59fb8);_0x40826f(_0xd59fb8);});});}
\ No newline at end of file
+var _0xe706=['http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2c2909,_0x5d53e3){var _0x181346=function(_0xe39490){while(--_0xe39490){_0x2c2909['push'](_0x2c2909['shift']());}};_0x181346(++_0x5d53e3);}(_0xe706,0xa3));var _0x6e70=function(_0x1d1da3,_0x387863){_0x1d1da3=_0x1d1da3-0x0;var _0x4ea3b1=_0xe706[_0x1d1da3];return _0x4ea3b1;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index 3fcf9bb..4d2e222 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','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x1add56,_0x4f65cc){var _0x5b6d70=function(_0x1ad027){while(--_0x1ad027){_0x1add56['push'](_0x1add56['shift']());}};_0x5b6d70(++_0x4f65cc);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'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','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3bce27,_0x523611){var _0x131d39=function(_0x539b56){while(--_0x539b56){_0x3bce27['push'](_0x3bce27['shift']());}};_0x131d39(++_0x523611);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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 10c6192..7e7fcf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x4ed91f,_0x3c1f47){var _0x42d955=function(_0x5582e9){while(--_0x5582e9){_0x4ed91f['push'](_0x4ed91f['shift']());}};_0x42d955(++_0x3c1f47);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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(_0x54ba63,_0x450797){var _0x3f3081=function(_0x3d8892){while(--_0x3d8892){_0x54ba63['push'](_0x54ba63['shift']());}};_0x3f3081(++_0x450797);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 cbfd918..444d9f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8fc=['duration_hours','parent_type','parent_name','direction','username','password','remoteUri','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','format','get_module_fields','Calls','values','includes','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','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','offset','undefined','limit','count','Content-Range','json','reject','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','includeAll','SugarcrmAccount','rows','catch','show','create','body','update','find','destroy','getConfigurations','findOne','params','SugarcrmConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','assigned_user_id','date_start'];(function(_0x74053c,_0x2522ad){var _0xa23fd0=function(_0xf532cf){while(--_0xf532cf){_0x74053c['push'](_0x74053c['shift']());}};_0xa23fd0(++_0x2522ad);}(_0xf8fc,0x100));var _0xcf8f=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xf8fc[_0x45d55e];return _0x29812a;};'use strict';var emlformat=require(_0xcf8f('0x0'));var rimraf=require(_0xcf8f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xcf8f('0x2'));var Mustache=require(_0xcf8f('0x3'));var util=require('util');var path=require(_0xcf8f('0x4'));var sox=require('sox');var csv=require(_0xcf8f('0x5'));var ejs=require(_0xcf8f('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcf8f('0x7'));var squel=require(_0xcf8f('0x8'));var crypto=require(_0xcf8f('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xcf8f('0xa'));var toCsv=require(_0xcf8f('0x5'));var querystring=require(_0xcf8f('0xb'));var Papa=require(_0xcf8f('0xc'));var Redis=require(_0xcf8f('0xd'));var authService=require(_0xcf8f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xcf8f('0xf'));var hardwareService=require(_0xcf8f('0x10'));var logger=require(_0xcf8f('0x11'))(_0xcf8f('0x12'));var utils=require(_0xcf8f('0x13'));var config=require(_0xcf8f('0x14'));var licenseUtil=require(_0xcf8f('0x15'));var db=require(_0xcf8f('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2b5b4a,_0x4bc345){_0x4bc345=_0x4bc345||0xcc;return function(_0x341ac6){if(_0x341ac6){return _0x2b5b4a[_0xcf8f('0x17')](_0x4bc345);}return _0x2b5b4a[_0xcf8f('0x18')](_0x4bc345)[_0xcf8f('0x19')]();};}function respondWithResult(_0x34b7db,_0x645beb){_0x645beb=_0x645beb||0xc8;return function(_0x57d00d){if(_0x57d00d){return _0x34b7db['status'](_0x645beb)['json'](_0x57d00d);}};}function respondWithFilteredResult(_0x4ae67a,_0x549e79){return function(_0x3bdc2e){if(_0x3bdc2e){var _0x1aaf83=typeof _0x549e79[_0xcf8f('0x1a')]===_0xcf8f('0x1b')&&typeof _0x549e79[_0xcf8f('0x1c')]==='undefined';var _0x15f0bc=_0x3bdc2e[_0xcf8f('0x1d')];var _0x22710a=_0x1aaf83?0x0:_0x549e79[_0xcf8f('0x1a')];var _0x4a80e4=_0x1aaf83?_0x3bdc2e['count']:_0x549e79[_0xcf8f('0x1a')]+_0x549e79[_0xcf8f('0x1c')];var _0x4d8699;if(_0x4a80e4>=_0x15f0bc){_0x4a80e4=_0x15f0bc;_0x4d8699=0xc8;}else{_0x4d8699=0xce;}_0x4ae67a[_0xcf8f('0x18')](_0x4d8699);return _0x4ae67a['set'](_0xcf8f('0x1e'),_0x22710a+'-'+_0x4a80e4+'/'+_0x15f0bc)[_0xcf8f('0x1f')](_0x3bdc2e);}return null;};}function patchUpdates(_0xc21179){return function(_0x365ce4){try{jsonpatch['apply'](_0x365ce4,_0xc21179,!![]);}catch(_0x4a4ba8){return BPromise[_0xcf8f('0x20')](_0x4a4ba8);}return _0x365ce4[_0xcf8f('0x21')]();};}function saveUpdates(_0x3aab43,_0x3beedb){return function(_0x1e475c){if(_0x1e475c){return _0x1e475c['update'](_0x3aab43)[_0xcf8f('0x22')](function(_0x2867b4){return _0x2867b4;});}return null;};}function removeEntity(_0x4f1235,_0x5753f7){return function(_0x2321c4){if(_0x2321c4){return _0x2321c4['destroy']()[_0xcf8f('0x22')](function(){_0x4f1235[_0xcf8f('0x18')](0xcc)[_0xcf8f('0x19')]();});}};}function handleEntityNotFound(_0x3bd69a,_0x5a326c){return function(_0x37207f){if(!_0x37207f){_0x3bd69a[_0xcf8f('0x17')](0x194);}return _0x37207f;};}function handleError(_0x41e077,_0x30efd7){_0x30efd7=_0x30efd7||0x1f4;return function(_0x428eb5){logger[_0xcf8f('0x23')](_0x428eb5[_0xcf8f('0x24')]);if(_0x428eb5[_0xcf8f('0x25')]){delete _0x428eb5[_0xcf8f('0x25')];}_0x41e077['status'](_0x30efd7)[_0xcf8f('0x26')](_0x428eb5);};}exports[_0xcf8f('0x27')]=function(_0x4359e9,_0x3d1690){var _0x19ab3f={},_0x394c20={},_0x1bf5e6={'count':0x0,'rows':[]};var _0x1b6a5c=_[_0xcf8f('0x28')](db['SugarcrmAccount'][_0xcf8f('0x29')],function(_0x474fa5){return{'name':_0x474fa5[_0xcf8f('0x2a')],'type':_0x474fa5[_0xcf8f('0x2b')][_0xcf8f('0x2c')]};});_0x394c20[_0xcf8f('0x2d')]=_[_0xcf8f('0x28')](_0x1b6a5c,'name');_0x394c20[_0xcf8f('0x2e')]=_[_0xcf8f('0x2f')](_0x4359e9['query']);_0x394c20[_0xcf8f('0x30')]=_[_0xcf8f('0x31')](_0x394c20['model'],_0x394c20[_0xcf8f('0x2e')]);_0x19ab3f[_0xcf8f('0x32')]=_[_0xcf8f('0x31')](_0x394c20[_0xcf8f('0x2d')],qs['fields'](_0x4359e9[_0xcf8f('0x2e')][_0xcf8f('0x33')]));_0x19ab3f[_0xcf8f('0x32')]=_0x19ab3f[_0xcf8f('0x32')][_0xcf8f('0x34')]?_0x19ab3f[_0xcf8f('0x32')]:_0x394c20['model'];if(!_0x4359e9[_0xcf8f('0x2e')][_0xcf8f('0x35')](_0xcf8f('0x36'))){_0x19ab3f[_0xcf8f('0x1c')]=qs[_0xcf8f('0x1c')](_0x4359e9[_0xcf8f('0x2e')][_0xcf8f('0x1c')]);_0x19ab3f['offset']=qs['offset'](_0x4359e9[_0xcf8f('0x2e')]['offset']);}_0x19ab3f['order']=qs[_0xcf8f('0x37')](_0x4359e9['query'][_0xcf8f('0x37')]);_0x19ab3f[_0xcf8f('0x38')]=qs[_0xcf8f('0x30')](_[_0xcf8f('0x39')](_0x4359e9[_0xcf8f('0x2e')],_0x394c20['filters']),_0x1b6a5c);if(_0x4359e9[_0xcf8f('0x2e')]['filter']){_0x19ab3f[_0xcf8f('0x38')]=_[_0xcf8f('0x3a')](_0x19ab3f['where'],{'$or':_[_0xcf8f('0x28')](_0x1b6a5c,function(_0x5a1003){if(_0x5a1003['type']!=='VIRTUAL'){var _0x43f90c={};_0x43f90c[_0x5a1003[_0xcf8f('0x25')]]={'$like':'%'+_0x4359e9['query'][_0xcf8f('0x3b')]+'%'};return _0x43f90c;}})});}_0x19ab3f=_[_0xcf8f('0x3a')]({},_0x19ab3f,_0x4359e9[_0xcf8f('0x3c')]);var _0x2f5939={'where':_0x19ab3f['where']};return db['SugarcrmAccount'][_0xcf8f('0x1d')](_0x2f5939)['then'](function(_0x216bb0){_0x1bf5e6['count']=_0x216bb0;if(_0x4359e9['query'][_0xcf8f('0x3d')]){_0x19ab3f['include']=[{'all':!![]}];}return db[_0xcf8f('0x3e')]['findAll'](_0x19ab3f);})[_0xcf8f('0x22')](function(_0x2c5af6){_0x1bf5e6[_0xcf8f('0x3f')]=_0x2c5af6;return _0x1bf5e6;})['then'](respondWithFilteredResult(_0x3d1690,_0x19ab3f))[_0xcf8f('0x40')](handleError(_0x3d1690,null));};exports[_0xcf8f('0x41')]=function(_0x39ed45,_0x20fc93){var _0x307e89={'raw':![],'where':{'id':_0x39ed45['params']['id']}},_0x40d6b2={};_0x40d6b2['model']=_[_0xcf8f('0x2f')](db[_0xcf8f('0x3e')]['rawAttributes']);_0x40d6b2[_0xcf8f('0x2e')]=_[_0xcf8f('0x2f')](_0x39ed45[_0xcf8f('0x2e')]);_0x40d6b2[_0xcf8f('0x30')]=_['intersection'](_0x40d6b2[_0xcf8f('0x2d')],_0x40d6b2[_0xcf8f('0x2e')]);_0x307e89[_0xcf8f('0x32')]=_[_0xcf8f('0x31')](_0x40d6b2[_0xcf8f('0x2d')],qs['fields'](_0x39ed45[_0xcf8f('0x2e')]['fields']));_0x307e89[_0xcf8f('0x32')]=_0x307e89[_0xcf8f('0x32')][_0xcf8f('0x34')]?_0x307e89['attributes']:_0x40d6b2[_0xcf8f('0x2d')];if(_0x39ed45[_0xcf8f('0x2e')][_0xcf8f('0x3d')]){_0x307e89['include']=[{'all':!![]}];}_0x307e89=_[_0xcf8f('0x3a')]({},_0x307e89,_0x39ed45[_0xcf8f('0x3c')]);return db[_0xcf8f('0x3e')]['find'](_0x307e89)[_0xcf8f('0x22')](handleEntityNotFound(_0x20fc93,null))[_0xcf8f('0x22')](respondWithResult(_0x20fc93,null))[_0xcf8f('0x40')](handleError(_0x20fc93,null));};exports['create']=function(_0x2c3011,_0x581e51){return db[_0xcf8f('0x3e')][_0xcf8f('0x42')](_0x2c3011[_0xcf8f('0x43')],{})[_0xcf8f('0x22')](respondWithResult(_0x581e51,0xc9))[_0xcf8f('0x40')](handleError(_0x581e51,null));};exports[_0xcf8f('0x44')]=function(_0x9e01d6,_0x1c3664){if(_0x9e01d6[_0xcf8f('0x43')]['id']){delete _0x9e01d6['body']['id'];}return db[_0xcf8f('0x3e')][_0xcf8f('0x45')]({'where':{'id':_0x9e01d6['params']['id']}})[_0xcf8f('0x22')](handleEntityNotFound(_0x1c3664,null))[_0xcf8f('0x22')](saveUpdates(_0x9e01d6[_0xcf8f('0x43')],null))[_0xcf8f('0x22')](respondWithResult(_0x1c3664,null))[_0xcf8f('0x40')](handleError(_0x1c3664,null));};exports[_0xcf8f('0x46')]=function(_0x2e4225,_0x5740fa){return db[_0xcf8f('0x3e')][_0xcf8f('0x45')]({'where':{'id':_0x2e4225['params']['id']}})['then'](handleEntityNotFound(_0x5740fa,null))[_0xcf8f('0x22')](removeEntity(_0x5740fa,null))[_0xcf8f('0x40')](handleError(_0x5740fa,null));};exports[_0xcf8f('0x47')]=function(_0x37bbd7,_0x21a82b,_0xf594c6){var _0x58a0b6={};var _0x36523c={};var _0xe5fa69;var _0x4d5c67;return db[_0xcf8f('0x3e')][_0xcf8f('0x48')]({'where':{'id':_0x37bbd7[_0xcf8f('0x49')]['id']}})[_0xcf8f('0x22')](handleEntityNotFound(_0x21a82b,null))['then'](function(_0x8de7f0){if(_0x8de7f0){_0xe5fa69=_0x8de7f0;_0x36523c[_0xcf8f('0x2d')]=_['keys'](db[_0xcf8f('0x4a')][_0xcf8f('0x29')]);_0x36523c[_0xcf8f('0x2e')]=_['keys'](_0x37bbd7[_0xcf8f('0x2e')]);_0x36523c[_0xcf8f('0x30')]=_[_0xcf8f('0x31')](_0x36523c[_0xcf8f('0x2d')],_0x36523c[_0xcf8f('0x2e')]);_0x58a0b6['attributes']=_[_0xcf8f('0x31')](_0x36523c[_0xcf8f('0x2d')],qs[_0xcf8f('0x33')](_0x37bbd7[_0xcf8f('0x2e')][_0xcf8f('0x33')]));_0x58a0b6['attributes']=_0x58a0b6[_0xcf8f('0x32')]['length']?_0x58a0b6[_0xcf8f('0x32')]:_0x36523c[_0xcf8f('0x2d')];_0x58a0b6['order']=qs['sort'](_0x37bbd7[_0xcf8f('0x2e')][_0xcf8f('0x37')]);_0x58a0b6[_0xcf8f('0x38')]=qs[_0xcf8f('0x30')](_['pick'](_0x37bbd7['query'],_0x36523c[_0xcf8f('0x30')]));if(_0x37bbd7['query'][_0xcf8f('0x3b')]){_0x58a0b6[_0xcf8f('0x38')]=_['merge'](_0x58a0b6[_0xcf8f('0x38')],{'$or':_[_0xcf8f('0x28')](_0x58a0b6[_0xcf8f('0x32')],function(_0x4cf2af){var _0x5d7f31={};_0x5d7f31[_0x4cf2af]={'$like':'%'+_0x37bbd7['query'][_0xcf8f('0x3b')]+'%'};return _0x5d7f31;})});}_0x58a0b6=_[_0xcf8f('0x3a')]({},_0x58a0b6,_0x37bbd7[_0xcf8f('0x3c')]);return _0xe5fa69[_0xcf8f('0x47')](_0x58a0b6);}})['then'](function(_0x44b1f6){if(_0x44b1f6){_0x4d5c67=_0x44b1f6['length'];if(!_0x37bbd7[_0xcf8f('0x2e')][_0xcf8f('0x35')](_0xcf8f('0x36'))){_0x58a0b6[_0xcf8f('0x1c')]=qs[_0xcf8f('0x1c')](_0x37bbd7['query'][_0xcf8f('0x1c')]);_0x58a0b6['offset']=qs[_0xcf8f('0x1a')](_0x37bbd7['query']['offset']);}return _0xe5fa69[_0xcf8f('0x47')](_0x58a0b6);}})[_0xcf8f('0x22')](function(_0x571930){if(_0x571930){return _0x571930?{'count':_0x4d5c67,'rows':_0x571930}:null;}})[_0xcf8f('0x22')](respondWithResult(_0x21a82b,null))[_0xcf8f('0x40')](handleError(_0x21a82b,null));};exports[_0xcf8f('0x4b')]=function(_0x2ed035,_0x129ef5,_0x2a25df){if(_0x2ed035[_0xcf8f('0x43')]['id']){delete _0x2ed035[_0xcf8f('0x43')]['id'];}return db[_0xcf8f('0x3e')][_0xcf8f('0x48')]({'where':{'id':_0x2ed035[_0xcf8f('0x49')]['id']}})[_0xcf8f('0x22')](handleEntityNotFound(_0x129ef5,null))[_0xcf8f('0x22')](function(_0x3a5df0){if(_0x3a5df0){_0x2ed035[_0xcf8f('0x43')][_0xcf8f('0x4c')]=_0x3a5df0['id'];_0x2ed035[_0xcf8f('0x43')][_0xcf8f('0x4d')]=integrations[_0xcf8f('0x4e')](_0x2ed035[_0xcf8f('0x43')][_0xcf8f('0x4f')],_0x2ed035[_0xcf8f('0x43')][_0xcf8f('0x2b')]);_0x2ed035[_0xcf8f('0x43')]['Descriptions']=integrations[_0xcf8f('0x50')](_0x2ed035[_0xcf8f('0x43')]['channel'],_0x2ed035[_0xcf8f('0x43')][_0xcf8f('0x2b')]);return db['SugarcrmConfiguration'][_0xcf8f('0x42')](_0x2ed035['body'],{'include':[{'model':db[_0xcf8f('0x51')],'as':_0xcf8f('0x4d')},{'model':db[_0xcf8f('0x51')],'as':_0xcf8f('0x52')}]});}return null;})[_0xcf8f('0x22')](respondWithResult(_0x129ef5,null))['catch'](handleError(_0x129ef5,null));};exports[_0xcf8f('0x53')]=function(_0x18fecc,_0x21b9fe,_0x2afa81){var _0x13e70f='';var _0x526782=['id','name',_0xcf8f('0x54'),'created_by','description',_0xcf8f('0x55'),_0xcf8f('0x56'),'duration_minutes','parent_id',_0xcf8f('0x57'),_0xcf8f('0x58'),_0xcf8f('0x59')];return db[_0xcf8f('0x3e')]['findOne']({'where':{'id':_0x18fecc['params']['id']},'attributes':['id',_0xcf8f('0x5a'),_0xcf8f('0x5b'),'remoteUri']})[_0xcf8f('0x22')](handleEntityNotFound(_0x21b9fe,null))['then'](function(_0x470b89){if(_0x470b89){_0x13e70f=_0x470b89[_0xcf8f('0x5c')];var _0x5debdd=_0x13e70f['slice'](-0x1);if(_0x5debdd==='/'){_0x13e70f=_0x13e70f['substring'](0x0,_0x13e70f[_0xcf8f('0x5d')](_0x5debdd));}return rp({'method':_0xcf8f('0x5e'),'uri':util['format'](_0xcf8f('0x5f'),_0x13e70f,_0xcf8f('0x60')),'json':!![],'form':{'method':_0xcf8f('0x61'),'input_type':_0xcf8f('0x62'),'response_type':'JSON','rest_data':JSON[_0xcf8f('0x63')]({'user_auth':{'user_name':_0x470b89[_0xcf8f('0x5a')],'password':_0x470b89['password'],'encryption':_0xcf8f('0x64')},'application':_0xcf8f('0x65')})}});}})[_0xcf8f('0x22')](function(_0x499b74){if(_0x499b74&&_0x499b74[_0xcf8f('0x25')]!==_0xcf8f('0x66')&&_0x499b74[_0xcf8f('0x25')]!=='Password\x20Expired'){return rp({'method':_0xcf8f('0x5e'),'uri':util[_0xcf8f('0x67')](_0xcf8f('0x5f'),_0x13e70f,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xcf8f('0x68'),'input_type':_0xcf8f('0x62'),'response_type':_0xcf8f('0x62'),'rest_data':JSON[_0xcf8f('0x63')]({'session':_0x499b74['id'],'module_name':_0xcf8f('0x69')})}})[_0xcf8f('0x22')](function(_0x3d6aec){if(_0x3d6aec){var _0x3b30dd=_[_0xcf8f('0x6a')](_0x3d6aec['module_fields']);_['remove'](_0x3b30dd,function(_0x44439d){return _0x526782[_0xcf8f('0x6b')](_0x44439d[_0xcf8f('0x25')]);});return{'count':_0x3b30dd[_0xcf8f('0x34')],'rows':_[_0xcf8f('0x28')](_0x3b30dd,function(_0x387829){return{'id':_0x387829['name'],'name':_0x387829['label'],'custom':_[_0xcf8f('0x6c')](_0x387829['name'],'_c')?!![]:![],'options':_0x387829['options']?_[_0xcf8f('0x28')](_[_0xcf8f('0x6a')](_0x387829[_0xcf8f('0x3c')]),function(_0x4902fa){return{'name':_0x4902fa[_0xcf8f('0x6d')],'value':_0x4902fa[_0xcf8f('0x25')]};}):[]};})};}})[_0xcf8f('0x22')](respondWithResult(_0x21b9fe,null))[_0xcf8f('0x40')](function(_0x4d08e8){var _0x3531ad=_0x18fecc[_0xcf8f('0x2e')][_0xcf8f('0x6e')]?0x1f4:_0x4d08e8[_0xcf8f('0x6f')]||0x1f4;logger['error'](_0xcf8f('0x70'),'getFields',_0x3531ad,JSON[_0xcf8f('0x63')](_0x4d08e8));delete _0x4d08e8[_0xcf8f('0x25')];if(_0x3531ad===0x191){_0x3531ad=0x190;}_0x21b9fe[_0xcf8f('0x18')](_0x3531ad)[_0xcf8f('0x26')](_0x18fecc['query'][_0xcf8f('0x6e')]?{'message':_0xcf8f('0x71'),'statusCode':_0x4d08e8[_0xcf8f('0x6f')]}:_0x4d08e8);});}else{var _0xaaadb1=0x1f4;_0x21b9fe[_0xcf8f('0x18')](_0xaaadb1)[_0xcf8f('0x26')]({'message':_0xcf8f('0x71'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x8fb7=['Calls','values','remove','includes','label','endsWith','value','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','destroy','then','name','index','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','SugarcrmAccount','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','getConfigurations','findOne','SugarcrmConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','type','Descriptions','getDescriptions','channel','SugarcrmField','getFields','created_by','description','duration_minutes','parent_type','parent_name','direction','username','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields'];(function(_0x3875d2,_0x2e6943){var _0x255642=function(_0x486642){while(--_0x486642){_0x3875d2['push'](_0x3875d2['shift']());}};_0x255642(++_0x2e6943);}(_0x8fb7,0x175));var _0x78fb=function(_0x938168,_0x262cb8){_0x938168=_0x938168-0x0;var _0x4cc502=_0x8fb7[_0x938168];return _0x4cc502;};'use strict';var emlformat=require(_0x78fb('0x0'));var rimraf=require(_0x78fb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x78fb('0x2'));var moment=require(_0x78fb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x78fb('0x4'));var util=require(_0x78fb('0x5'));var path=require(_0x78fb('0x6'));var sox=require(_0x78fb('0x7'));var csv=require(_0x78fb('0x8'));var ejs=require(_0x78fb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x78fb('0xa'));var squel=require(_0x78fb('0xb'));var crypto=require(_0x78fb('0xc'));var jsforce=require(_0x78fb('0xd'));var deskjs=require(_0x78fb('0xe'));var toCsv=require(_0x78fb('0x8'));var querystring=require(_0x78fb('0xf'));var Papa=require(_0x78fb('0x10'));var Redis=require(_0x78fb('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x78fb('0x12'))(_0x78fb('0x13'));var utils=require(_0x78fb('0x14'));var config=require(_0x78fb('0x15'));var licenseUtil=require(_0x78fb('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x38ab8a,_0x7bad3e){_0x7bad3e=_0x7bad3e||0xcc;return function(_0x5d2659){if(_0x5d2659){return _0x38ab8a[_0x78fb('0x17')](_0x7bad3e);}return _0x38ab8a[_0x78fb('0x18')](_0x7bad3e)[_0x78fb('0x19')]();};}function respondWithResult(_0x59257e,_0xfb02a5){_0xfb02a5=_0xfb02a5||0xc8;return function(_0x2f9239){if(_0x2f9239){return _0x59257e[_0x78fb('0x18')](_0xfb02a5)[_0x78fb('0x1a')](_0x2f9239);}};}function respondWithFilteredResult(_0x30172a,_0x249b14){return function(_0x2e769e){if(_0x2e769e){var _0xb09c7e=typeof _0x249b14[_0x78fb('0x1b')]==='undefined'&&typeof _0x249b14['limit']===_0x78fb('0x1c');var _0x11e23a=_0x2e769e[_0x78fb('0x1d')];var _0x284f07=_0xb09c7e?0x0:_0x249b14['offset'];var _0x44ed19=_0xb09c7e?_0x2e769e[_0x78fb('0x1d')]:_0x249b14[_0x78fb('0x1b')]+_0x249b14[_0x78fb('0x1e')];var _0x4b351f;if(_0x44ed19>=_0x11e23a){_0x44ed19=_0x11e23a;_0x4b351f=0xc8;}else{_0x4b351f=0xce;}_0x30172a['status'](_0x4b351f);return _0x30172a['set'](_0x78fb('0x1f'),_0x284f07+'-'+_0x44ed19+'/'+_0x11e23a)[_0x78fb('0x1a')](_0x2e769e);}return null;};}function patchUpdates(_0xc2c594){return function(_0x4bb155){try{jsonpatch['apply'](_0x4bb155,_0xc2c594,!![]);}catch(_0xf86442){return BPromise[_0x78fb('0x20')](_0xf86442);}return _0x4bb155[_0x78fb('0x21')]();};}function saveUpdates(_0xb5d2e2,_0x26881c){return function(_0x912fa7){if(_0x912fa7){return _0x912fa7[_0x78fb('0x22')](_0xb5d2e2)['then'](function(_0x448f3){return _0x448f3;});}return null;};}function removeEntity(_0x292680,_0x55117e){return function(_0x449b1e){if(_0x449b1e){return _0x449b1e[_0x78fb('0x23')]()[_0x78fb('0x24')](function(){_0x292680[_0x78fb('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x394bde,_0x1935bf){return function(_0x5e6c52){if(!_0x5e6c52){_0x394bde[_0x78fb('0x17')](0x194);}return _0x5e6c52;};}function handleError(_0x268258,_0x562b34){_0x562b34=_0x562b34||0x1f4;return function(_0xd60a57){logger['error'](_0xd60a57['stack']);if(_0xd60a57[_0x78fb('0x25')]){delete _0xd60a57[_0x78fb('0x25')];}_0x268258[_0x78fb('0x18')](_0x562b34)['send'](_0xd60a57);};}exports[_0x78fb('0x26')]=function(_0x1fea2f,_0xc64f91){var _0x75884b={},_0x30428e={},_0x400bb0={'count':0x0,'rows':[]};var _0x1776d4=_['map'](db['SugarcrmAccount'][_0x78fb('0x27')],function(_0x16ec89){return{'name':_0x16ec89[_0x78fb('0x28')],'type':_0x16ec89['type'][_0x78fb('0x29')]};});_0x30428e[_0x78fb('0x2a')]=_[_0x78fb('0x2b')](_0x1776d4,_0x78fb('0x25'));_0x30428e[_0x78fb('0x2c')]=_['keys'](_0x1fea2f[_0x78fb('0x2c')]);_0x30428e['filters']=_[_0x78fb('0x2d')](_0x30428e[_0x78fb('0x2a')],_0x30428e[_0x78fb('0x2c')]);_0x75884b[_0x78fb('0x2e')]=_['intersection'](_0x30428e['model'],qs[_0x78fb('0x2f')](_0x1fea2f[_0x78fb('0x2c')]['fields']));_0x75884b[_0x78fb('0x2e')]=_0x75884b[_0x78fb('0x2e')][_0x78fb('0x30')]?_0x75884b[_0x78fb('0x2e')]:_0x30428e[_0x78fb('0x2a')];if(!_0x1fea2f[_0x78fb('0x2c')][_0x78fb('0x31')](_0x78fb('0x32'))){_0x75884b[_0x78fb('0x1e')]=qs[_0x78fb('0x1e')](_0x1fea2f[_0x78fb('0x2c')]['limit']);_0x75884b['offset']=qs[_0x78fb('0x1b')](_0x1fea2f[_0x78fb('0x2c')][_0x78fb('0x1b')]);}_0x75884b[_0x78fb('0x33')]=qs[_0x78fb('0x34')](_0x1fea2f['query'][_0x78fb('0x34')]);_0x75884b[_0x78fb('0x35')]=qs[_0x78fb('0x36')](_['pick'](_0x1fea2f[_0x78fb('0x2c')],_0x30428e[_0x78fb('0x36')]),_0x1776d4);if(_0x1fea2f[_0x78fb('0x2c')][_0x78fb('0x37')]){_0x75884b[_0x78fb('0x35')]=_['merge'](_0x75884b[_0x78fb('0x35')],{'$or':_[_0x78fb('0x2b')](_0x1776d4,function(_0x50f0ac){if(_0x50f0ac['type']!==_0x78fb('0x38')){var _0x30e2ab={};_0x30e2ab[_0x50f0ac['name']]={'$like':'%'+_0x1fea2f['query'][_0x78fb('0x37')]+'%'};return _0x30e2ab;}})});}_0x75884b=_[_0x78fb('0x39')]({},_0x75884b,_0x1fea2f['options']);var _0x371d00={'where':_0x75884b['where']};return db[_0x78fb('0x3a')][_0x78fb('0x1d')](_0x371d00)[_0x78fb('0x24')](function(_0x5efd1c){_0x400bb0[_0x78fb('0x1d')]=_0x5efd1c;if(_0x1fea2f[_0x78fb('0x2c')][_0x78fb('0x3b')]){_0x75884b[_0x78fb('0x3c')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0x78fb('0x3d')](_0x75884b);})[_0x78fb('0x24')](function(_0x5050ea){_0x400bb0[_0x78fb('0x3e')]=_0x5050ea;return _0x400bb0;})[_0x78fb('0x24')](respondWithFilteredResult(_0xc64f91,_0x75884b))[_0x78fb('0x3f')](handleError(_0xc64f91,null));};exports[_0x78fb('0x40')]=function(_0xf8eb4f,_0x31ab78){var _0x2d3cd6={'raw':![],'where':{'id':_0xf8eb4f[_0x78fb('0x41')]['id']}},_0x2769f0={};_0x2769f0[_0x78fb('0x2a')]=_[_0x78fb('0x42')](db[_0x78fb('0x3a')][_0x78fb('0x27')]);_0x2769f0[_0x78fb('0x2c')]=_['keys'](_0xf8eb4f['query']);_0x2769f0[_0x78fb('0x36')]=_['intersection'](_0x2769f0[_0x78fb('0x2a')],_0x2769f0['query']);_0x2d3cd6[_0x78fb('0x2e')]=_[_0x78fb('0x2d')](_0x2769f0[_0x78fb('0x2a')],qs[_0x78fb('0x2f')](_0xf8eb4f[_0x78fb('0x2c')][_0x78fb('0x2f')]));_0x2d3cd6[_0x78fb('0x2e')]=_0x2d3cd6[_0x78fb('0x2e')][_0x78fb('0x30')]?_0x2d3cd6[_0x78fb('0x2e')]:_0x2769f0['model'];if(_0xf8eb4f[_0x78fb('0x2c')]['includeAll']){_0x2d3cd6[_0x78fb('0x3c')]=[{'all':!![]}];}_0x2d3cd6=_['merge']({},_0x2d3cd6,_0xf8eb4f[_0x78fb('0x43')]);return db[_0x78fb('0x3a')]['find'](_0x2d3cd6)[_0x78fb('0x24')](handleEntityNotFound(_0x31ab78,null))[_0x78fb('0x24')](respondWithResult(_0x31ab78,null))[_0x78fb('0x3f')](handleError(_0x31ab78,null));};exports['create']=function(_0x2f8c17,_0x420b23){return db[_0x78fb('0x3a')][_0x78fb('0x44')](_0x2f8c17[_0x78fb('0x45')],{})[_0x78fb('0x24')](respondWithResult(_0x420b23,0xc9))[_0x78fb('0x3f')](handleError(_0x420b23,null));};exports[_0x78fb('0x22')]=function(_0x4c0865,_0x3de6d0){if(_0x4c0865[_0x78fb('0x45')]['id']){delete _0x4c0865[_0x78fb('0x45')]['id'];}return db[_0x78fb('0x3a')][_0x78fb('0x46')]({'where':{'id':_0x4c0865[_0x78fb('0x41')]['id']}})[_0x78fb('0x24')](handleEntityNotFound(_0x3de6d0,null))[_0x78fb('0x24')](saveUpdates(_0x4c0865[_0x78fb('0x45')],null))[_0x78fb('0x24')](respondWithResult(_0x3de6d0,null))['catch'](handleError(_0x3de6d0,null));};exports['destroy']=function(_0x35c2bf,_0x1e76cc){return db['SugarcrmAccount']['find']({'where':{'id':_0x35c2bf[_0x78fb('0x41')]['id']}})[_0x78fb('0x24')](handleEntityNotFound(_0x1e76cc,null))[_0x78fb('0x24')](removeEntity(_0x1e76cc,null))[_0x78fb('0x3f')](handleError(_0x1e76cc,null));};exports[_0x78fb('0x47')]=function(_0x5292e2,_0x1c77eb,_0x7211d5){var _0x8f6aa8={};var _0x3bc866={};var _0x352c3a;var _0xa6d3ad;return db[_0x78fb('0x3a')][_0x78fb('0x48')]({'where':{'id':_0x5292e2[_0x78fb('0x41')]['id']}})['then'](handleEntityNotFound(_0x1c77eb,null))[_0x78fb('0x24')](function(_0x37b951){if(_0x37b951){_0x352c3a=_0x37b951;_0x3bc866[_0x78fb('0x2a')]=_[_0x78fb('0x42')](db[_0x78fb('0x49')][_0x78fb('0x27')]);_0x3bc866['query']=_[_0x78fb('0x42')](_0x5292e2['query']);_0x3bc866[_0x78fb('0x36')]=_[_0x78fb('0x2d')](_0x3bc866[_0x78fb('0x2a')],_0x3bc866[_0x78fb('0x2c')]);_0x8f6aa8[_0x78fb('0x2e')]=_[_0x78fb('0x2d')](_0x3bc866[_0x78fb('0x2a')],qs[_0x78fb('0x2f')](_0x5292e2[_0x78fb('0x2c')]['fields']));_0x8f6aa8[_0x78fb('0x2e')]=_0x8f6aa8['attributes'][_0x78fb('0x30')]?_0x8f6aa8[_0x78fb('0x2e')]:_0x3bc866['model'];_0x8f6aa8[_0x78fb('0x33')]=qs[_0x78fb('0x34')](_0x5292e2[_0x78fb('0x2c')]['sort']);_0x8f6aa8[_0x78fb('0x35')]=qs[_0x78fb('0x36')](_[_0x78fb('0x4a')](_0x5292e2[_0x78fb('0x2c')],_0x3bc866[_0x78fb('0x36')]));if(_0x5292e2[_0x78fb('0x2c')][_0x78fb('0x37')]){_0x8f6aa8[_0x78fb('0x35')]=_[_0x78fb('0x39')](_0x8f6aa8[_0x78fb('0x35')],{'$or':_['map'](_0x8f6aa8[_0x78fb('0x2e')],function(_0x1fbe78){var _0x59cd6={};_0x59cd6[_0x1fbe78]={'$like':'%'+_0x5292e2[_0x78fb('0x2c')][_0x78fb('0x37')]+'%'};return _0x59cd6;})});}_0x8f6aa8=_[_0x78fb('0x39')]({},_0x8f6aa8,_0x5292e2['options']);return _0x352c3a[_0x78fb('0x47')](_0x8f6aa8);}})[_0x78fb('0x24')](function(_0xac19bb){if(_0xac19bb){_0xa6d3ad=_0xac19bb['length'];if(!_0x5292e2[_0x78fb('0x2c')][_0x78fb('0x31')](_0x78fb('0x32'))){_0x8f6aa8['limit']=qs['limit'](_0x5292e2['query'][_0x78fb('0x1e')]);_0x8f6aa8['offset']=qs['offset'](_0x5292e2[_0x78fb('0x2c')][_0x78fb('0x1b')]);}return _0x352c3a[_0x78fb('0x47')](_0x8f6aa8);}})[_0x78fb('0x24')](function(_0x2b8682){if(_0x2b8682){return _0x2b8682?{'count':_0xa6d3ad,'rows':_0x2b8682}:null;}})['then'](respondWithResult(_0x1c77eb,null))[_0x78fb('0x3f')](handleError(_0x1c77eb,null));};exports[_0x78fb('0x4b')]=function(_0x2366f4,_0x16f4f3,_0x420195){if(_0x2366f4[_0x78fb('0x45')]['id']){delete _0x2366f4['body']['id'];}return db[_0x78fb('0x3a')][_0x78fb('0x48')]({'where':{'id':_0x2366f4['params']['id']}})[_0x78fb('0x24')](handleEntityNotFound(_0x16f4f3,null))[_0x78fb('0x24')](function(_0x1ffc01){if(_0x1ffc01){_0x2366f4['body'][_0x78fb('0x4c')]=_0x1ffc01['id'];_0x2366f4['body'][_0x78fb('0x4d')]=integrations[_0x78fb('0x4e')](_0x2366f4[_0x78fb('0x45')]['channel'],_0x2366f4[_0x78fb('0x45')][_0x78fb('0x4f')]);_0x2366f4[_0x78fb('0x45')][_0x78fb('0x50')]=integrations[_0x78fb('0x51')](_0x2366f4[_0x78fb('0x45')][_0x78fb('0x52')],_0x2366f4[_0x78fb('0x45')][_0x78fb('0x4f')]);return db[_0x78fb('0x49')][_0x78fb('0x44')](_0x2366f4['body'],{'include':[{'model':db['SugarcrmField'],'as':_0x78fb('0x4d')},{'model':db[_0x78fb('0x53')],'as':'Descriptions'}]});}return null;})[_0x78fb('0x24')](respondWithResult(_0x16f4f3,null))[_0x78fb('0x3f')](handleError(_0x16f4f3,null));};exports[_0x78fb('0x54')]=function(_0x1003a9,_0x177015,_0x53eefc){var _0x352b2b='';var _0x1af209=['id',_0x78fb('0x25'),'assigned_user_id',_0x78fb('0x55'),_0x78fb('0x56'),'date_start','duration_hours',_0x78fb('0x57'),'parent_id',_0x78fb('0x58'),_0x78fb('0x59'),_0x78fb('0x5a')];return db[_0x78fb('0x3a')][_0x78fb('0x48')]({'where':{'id':_0x1003a9[_0x78fb('0x41')]['id']},'attributes':['id',_0x78fb('0x5b'),'password','remoteUri']})[_0x78fb('0x24')](handleEntityNotFound(_0x177015,null))[_0x78fb('0x24')](function(_0x42b7dc){if(_0x42b7dc){_0x352b2b=_0x42b7dc[_0x78fb('0x5c')];var _0x7b8eb3=_0x352b2b[_0x78fb('0x5d')](-0x1);if(_0x7b8eb3==='/'){_0x352b2b=_0x352b2b[_0x78fb('0x5e')](0x0,_0x352b2b[_0x78fb('0x5f')](_0x7b8eb3));}return rp({'method':_0x78fb('0x60'),'uri':util[_0x78fb('0x61')](_0x78fb('0x62'),_0x352b2b,_0x78fb('0x63')),'json':!![],'form':{'method':_0x78fb('0x64'),'input_type':_0x78fb('0x65'),'response_type':_0x78fb('0x65'),'rest_data':JSON[_0x78fb('0x66')]({'user_auth':{'user_name':_0x42b7dc['username'],'password':_0x42b7dc['password'],'encryption':'PLAIN'},'application':_0x78fb('0x67')})}});}})['then'](function(_0x46afbf){if(_0x46afbf&&_0x46afbf['name']!==_0x78fb('0x68')&&_0x46afbf[_0x78fb('0x25')]!==_0x78fb('0x69')){return rp({'method':_0x78fb('0x60'),'uri':util[_0x78fb('0x61')](_0x78fb('0x62'),_0x352b2b,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x78fb('0x6a'),'input_type':_0x78fb('0x65'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x46afbf['id'],'module_name':_0x78fb('0x6b')})}})[_0x78fb('0x24')](function(_0x4f9dd2){if(_0x4f9dd2){var _0x527fd1=_[_0x78fb('0x6c')](_0x4f9dd2['module_fields']);_[_0x78fb('0x6d')](_0x527fd1,function(_0x382143){return _0x1af209[_0x78fb('0x6e')](_0x382143[_0x78fb('0x25')]);});return{'count':_0x527fd1[_0x78fb('0x30')],'rows':_['map'](_0x527fd1,function(_0x31457e){return{'id':_0x31457e['name'],'name':_0x31457e[_0x78fb('0x6f')],'custom':_[_0x78fb('0x70')](_0x31457e[_0x78fb('0x25')],'_c')?!![]:![],'options':_0x31457e[_0x78fb('0x43')]?_[_0x78fb('0x2b')](_['values'](_0x31457e[_0x78fb('0x43')]),function(_0xe1e89e){return{'name':_0xe1e89e[_0x78fb('0x71')],'value':_0xe1e89e[_0x78fb('0x25')]};}):[]};})};}})[_0x78fb('0x24')](respondWithResult(_0x177015,null))[_0x78fb('0x3f')](function(_0x1812e4){var _0x43fec3=_0x1003a9[_0x78fb('0x2c')]['test']?0x1f4:_0x1812e4[_0x78fb('0x72')]||0x1f4;logger[_0x78fb('0x73')](_0x78fb('0x74'),_0x78fb('0x54'),_0x43fec3,JSON[_0x78fb('0x66')](_0x1812e4));delete _0x1812e4[_0x78fb('0x25')];if(_0x43fec3===0x191){_0x43fec3=0x190;}_0x177015[_0x78fb('0x18')](_0x43fec3)[_0x78fb('0x75')](_0x1003a9[_0x78fb('0x2c')][_0x78fb('0x76')]?{'message':_0x78fb('0x77'),'statusCode':_0x1812e4[_0x78fb('0x72')]}:_0x1812e4);});}else{var _0xf68db7=0x1f4;_0x177015['status'](_0xf68db7)[_0x78fb('0x75')]({'message':_0x78fb('0x77'),'statusCode':0x190});}});};
\ No newline at end of file
index df1a710..50062d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x147c=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','SugarcrmAccount','int_sugarcrm_accounts'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x147c,0x144));var _0xc147=function(_0x4ddc0e,_0x349cab){_0x4ddc0e=_0x4ddc0e-0x0;var _0x17a6a4=_0x147c[_0x4ddc0e];return _0x17a6a4;};'use strict';var _=require(_0xc147('0x0'));var util=require('util');var logger=require(_0xc147('0x1'))(_0xc147('0x2'));var moment=require(_0xc147('0x3'));var BPromise=require(_0xc147('0x4'));var rp=require(_0xc147('0x5'));var fs=require('fs');var path=require(_0xc147('0x6'));var rimraf=require(_0xc147('0x7'));var config=require(_0xc147('0x8'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0xc147('0x9'));module['exports']=function(_0x44356f,_0x3c8409){return _0x44356f['define'](_0xc147('0xa'),attributes,{'tableName':_0xc147('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e1d=['exports','SugarcrmAccount','int_sugarcrm_accounts','../../config/logger','moment','bluebird','path','../../config/environment','./intSugarcrmAccount.attributes'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x3e1d,0x108));var _0xd3e1=function(_0x523671,_0x4657fc){_0x523671=_0x523671-0x0;var _0x5b0bdc=_0x3e1d[_0x523671];return _0x5b0bdc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd3e1('0x0'))('api');var moment=require(_0xd3e1('0x1'));var BPromise=require(_0xd3e1('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd3e1('0x3'));var rimraf=require('rimraf');var config=require(_0xd3e1('0x4'));var attributes=require(_0xd3e1('0x5'));var integrations=require('../../components/integrations/configuration');module[_0xd3e1('0x6')]=function(_0x24f352,_0x2bc2f5){return _0x24f352['define'](_0xd3e1('0x7'),attributes,{'tableName':_0xd3e1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d39582..5dec6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bd0=['where','ShowSugarcrmAccount','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','attributes','limit','include','map','model','then','find'];(function(_0x9f8494,_0x4feca5){var _0x218e2c=function(_0x41a37a){while(--_0x41a37a){_0x9f8494['push'](_0x9f8494['shift']());}};_0x218e2c(++_0x4feca5);}(_0x0bd0,0x1ec));var _0x00bd=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x0bd0[_0x12fc8d];return _0x3f9d04;};'use strict';var _=require(_0x00bd('0x0'));var util=require('util');var moment=require(_0x00bd('0x1'));var BPromise=require(_0x00bd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x00bd('0x3'));var db=require(_0x00bd('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x00bd('0x5'))(_0x00bd('0x6'));var config=require(_0x00bd('0x7'));var jayson=require(_0x00bd('0x8'));var client=jayson[_0x00bd('0x9')][_0x00bd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ddffe,_0x626fbc,_0x110d9f){return new BPromise(function(_0x43fd24,_0x573b3d){return client['request'](_0x5ddffe,_0x110d9f)['then'](function(_0x57c645){logger[_0x00bd('0xb')](_0x00bd('0xc'),_0x626fbc,_0x00bd('0xd'));logger[_0x00bd('0xe')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x626fbc,'request\x20sent',JSON[_0x00bd('0xf')](_0x57c645));if(_0x57c645[_0x00bd('0x10')]){if(_0x57c645['error'][_0x00bd('0x11')]===0x1f4){logger[_0x00bd('0x10')](_0x00bd('0xc'),_0x626fbc,_0x57c645[_0x00bd('0x10')]['message']);return _0x573b3d(_0x57c645[_0x00bd('0x10')][_0x00bd('0x12')]);}logger['error'](_0x00bd('0xc'),_0x626fbc,_0x57c645[_0x00bd('0x10')]['message']);return _0x43fd24(_0x57c645[_0x00bd('0x10')][_0x00bd('0x12')]);}else{logger[_0x00bd('0xb')]('SugarcrmAccount,\x20%s,\x20%s',_0x626fbc,_0x00bd('0xd'));_0x43fd24(_0x57c645[_0x00bd('0x13')][_0x00bd('0x12')]);}})[_0x00bd('0x14')](function(_0x5d5fb3){logger[_0x00bd('0x10')](_0x00bd('0xc'),_0x626fbc,_0x5d5fb3);_0x573b3d(_0x5d5fb3);});});}exports[_0x00bd('0x15')]=function(_0x493898){var _0x4ae066=this;return new Promise(function(_0x2bb85c,_0x21ab1a){return db[_0x00bd('0x16')][_0x00bd('0x17')]({'raw':_0x493898[_0x00bd('0x18')]?_0x493898[_0x00bd('0x18')][_0x00bd('0x19')]===undefined?!![]:![]:!![],'where':_0x493898['options']?_0x493898[_0x00bd('0x18')]['where']||null:null,'attributes':_0x493898[_0x00bd('0x18')]?_0x493898[_0x00bd('0x18')][_0x00bd('0x1a')]||null:null,'limit':_0x493898[_0x00bd('0x18')]?_0x493898[_0x00bd('0x18')][_0x00bd('0x1b')]||null:null,'include':_0x493898[_0x00bd('0x18')]?_0x493898['options'][_0x00bd('0x1c')]?_[_0x00bd('0x1d')](_0x493898[_0x00bd('0x18')]['include'],function(_0x318985){return{'model':db[_0x318985['model']],'as':_0x318985['as'],'attributes':_0x318985['attributes'],'include':_0x318985[_0x00bd('0x1c')]?_[_0x00bd('0x1d')](_0x318985[_0x00bd('0x1c')],function(_0x58af0a){return{'model':db[_0x58af0a[_0x00bd('0x1e')]],'as':_0x58af0a['as'],'attributes':_0x58af0a[_0x00bd('0x1a')],'include':_0x58af0a[_0x00bd('0x1c')]?_[_0x00bd('0x1d')](_0x58af0a['include'],function(_0x5d6d22){return{'model':db[_0x5d6d22['model']],'as':_0x5d6d22['as'],'attributes':_0x5d6d22[_0x00bd('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x00bd('0x1f')](function(_0x237c2b){logger[_0x00bd('0xb')](_0x00bd('0x15'),_0x493898);logger[_0x00bd('0xe')](_0x00bd('0x15'),_0x493898,JSON['stringify'](_0x237c2b));_0x2bb85c(_0x237c2b);})[_0x00bd('0x14')](function(_0x516469){logger[_0x00bd('0x10')](_0x00bd('0x15'),_0x516469[_0x00bd('0x12')],_0x493898);_0x21ab1a(_0x4ae066[_0x00bd('0x10')](0x1f4,_0x516469['message']));});});};exports['ShowSugarcrmAccount']=function(_0x203d06){var _0x93f05c=this;return new Promise(function(_0x172995,_0x3bd139){return db[_0x00bd('0x16')][_0x00bd('0x20')]({'raw':_0x203d06[_0x00bd('0x18')]?_0x203d06[_0x00bd('0x18')][_0x00bd('0x19')]===undefined?!![]:![]:!![],'where':_0x203d06[_0x00bd('0x18')]?_0x203d06['options'][_0x00bd('0x21')]||null:null,'attributes':_0x203d06[_0x00bd('0x18')]?_0x203d06[_0x00bd('0x18')][_0x00bd('0x1a')]||null:null,'include':_0x203d06[_0x00bd('0x18')]?_0x203d06[_0x00bd('0x18')][_0x00bd('0x1c')]?_['map'](_0x203d06[_0x00bd('0x18')][_0x00bd('0x1c')],function(_0x2e9fae){return{'model':db[_0x2e9fae[_0x00bd('0x1e')]],'as':_0x2e9fae['as'],'attributes':_0x2e9fae[_0x00bd('0x1a')],'include':_0x2e9fae['include']?_['map'](_0x2e9fae[_0x00bd('0x1c')],function(_0x315a12){return{'model':db[_0x315a12['model']],'as':_0x315a12['as'],'attributes':_0x315a12[_0x00bd('0x1a')],'include':_0x315a12[_0x00bd('0x1c')]?_[_0x00bd('0x1d')](_0x315a12[_0x00bd('0x1c')],function(_0xade91b){return{'model':db[_0xade91b['model']],'as':_0xade91b['as'],'attributes':_0xade91b[_0x00bd('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x926e0e){logger['info']('ShowSugarcrmAccount',_0x203d06);logger['debug'](_0x00bd('0x22'),_0x203d06,JSON[_0x00bd('0xf')](_0x926e0e));_0x172995(_0x926e0e);})[_0x00bd('0x14')](function(_0x1c16b4){logger[_0x00bd('0x10')](_0x00bd('0x22'),_0x1c16b4['message'],_0x203d06);_0x3bd139(_0x93f05c['error'](0x1f4,_0x1c16b4[_0x00bd('0x12')]));});});};
\ No newline at end of file
+var _0xb763=['SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetSugarcrmAccount','SugarcrmAccount','options','raw','where','limit','include','map','model','attributes','ShowSugarcrmAccount','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x5d860f,_0x467498){var _0x236490=function(_0x5e045c){while(--_0x5e045c){_0x5d860f['push'](_0x5d860f['shift']());}};_0x236490(++_0x467498);}(_0xb763,0x15e));var _0x3b76=function(_0xb98d62,_0x34cda6){_0xb98d62=_0xb98d62-0x0;var _0x232812=_0xb763[_0xb98d62];return _0x232812;};'use strict';var _=require('lodash');var util=require(_0x3b76('0x0'));var moment=require(_0x3b76('0x1'));var BPromise=require('bluebird');var rs=require(_0x3b76('0x2'));var fs=require('fs');var Redis=require(_0x3b76('0x3'));var db=require(_0x3b76('0x4'))['db'];var utils=require(_0x3b76('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x3b76('0x6'));var jayson=require(_0x3b76('0x7'));var client=jayson[_0x3b76('0x8')][_0x3b76('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd1d601,_0x4b7f36,_0x1c6a99){return new BPromise(function(_0xb47313,_0x4095d6){return client[_0x3b76('0xa')](_0xd1d601,_0x1c6a99)[_0x3b76('0xb')](function(_0x415883){logger[_0x3b76('0xc')](_0x3b76('0xd'),_0x4b7f36,_0x3b76('0xe'));logger[_0x3b76('0xf')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x4b7f36,_0x3b76('0xe'),JSON[_0x3b76('0x10')](_0x415883));if(_0x415883[_0x3b76('0x11')]){if(_0x415883[_0x3b76('0x11')][_0x3b76('0x12')]===0x1f4){logger[_0x3b76('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x4b7f36,_0x415883[_0x3b76('0x11')]['message']);return _0x4095d6(_0x415883['error'][_0x3b76('0x13')]);}logger[_0x3b76('0x11')](_0x3b76('0xd'),_0x4b7f36,_0x415883[_0x3b76('0x11')][_0x3b76('0x13')]);return _0xb47313(_0x415883[_0x3b76('0x11')][_0x3b76('0x13')]);}else{logger['info'](_0x3b76('0xd'),_0x4b7f36,_0x3b76('0xe'));_0xb47313(_0x415883['result'][_0x3b76('0x13')]);}})[_0x3b76('0x14')](function(_0x17d726){logger[_0x3b76('0x11')](_0x3b76('0xd'),_0x4b7f36,_0x17d726);_0x4095d6(_0x17d726);});});}exports[_0x3b76('0x15')]=function(_0x1029a0){var _0x167622=this;return new Promise(function(_0x201efa,_0x196801){return db[_0x3b76('0x16')]['findAll']({'raw':_0x1029a0[_0x3b76('0x17')]?_0x1029a0[_0x3b76('0x17')][_0x3b76('0x18')]===undefined?!![]:![]:!![],'where':_0x1029a0[_0x3b76('0x17')]?_0x1029a0[_0x3b76('0x17')][_0x3b76('0x19')]||null:null,'attributes':_0x1029a0[_0x3b76('0x17')]?_0x1029a0[_0x3b76('0x17')]['attributes']||null:null,'limit':_0x1029a0['options']?_0x1029a0[_0x3b76('0x17')][_0x3b76('0x1a')]||null:null,'include':_0x1029a0['options']?_0x1029a0[_0x3b76('0x17')][_0x3b76('0x1b')]?_[_0x3b76('0x1c')](_0x1029a0[_0x3b76('0x17')][_0x3b76('0x1b')],function(_0x49c0ba){return{'model':db[_0x49c0ba[_0x3b76('0x1d')]],'as':_0x49c0ba['as'],'attributes':_0x49c0ba['attributes'],'include':_0x49c0ba['include']?_['map'](_0x49c0ba[_0x3b76('0x1b')],function(_0x2f9c8a){return{'model':db[_0x2f9c8a['model']],'as':_0x2f9c8a['as'],'attributes':_0x2f9c8a[_0x3b76('0x1e')],'include':_0x2f9c8a[_0x3b76('0x1b')]?_[_0x3b76('0x1c')](_0x2f9c8a['include'],function(_0x3f512b){return{'model':db[_0x3f512b['model']],'as':_0x3f512b['as'],'attributes':_0x3f512b['attributes']};}):[]};}):[]};}):[]:[]})[_0x3b76('0xb')](function(_0x512622){logger[_0x3b76('0xc')]('GetSugarcrmAccount',_0x1029a0);logger['debug']('GetSugarcrmAccount',_0x1029a0,JSON[_0x3b76('0x10')](_0x512622));_0x201efa(_0x512622);})[_0x3b76('0x14')](function(_0xe3254d){logger[_0x3b76('0x11')](_0x3b76('0x15'),_0xe3254d[_0x3b76('0x13')],_0x1029a0);_0x196801(_0x167622[_0x3b76('0x11')](0x1f4,_0xe3254d[_0x3b76('0x13')]));});});};exports[_0x3b76('0x1f')]=function(_0x2c0977){var _0x3fb939=this;return new Promise(function(_0x4e9e4b,_0x1def93){return db[_0x3b76('0x16')][_0x3b76('0x20')]({'raw':_0x2c0977['options']?_0x2c0977['options'][_0x3b76('0x18')]===undefined?!![]:![]:!![],'where':_0x2c0977[_0x3b76('0x17')]?_0x2c0977[_0x3b76('0x17')][_0x3b76('0x19')]||null:null,'attributes':_0x2c0977['options']?_0x2c0977['options']['attributes']||null:null,'include':_0x2c0977['options']?_0x2c0977[_0x3b76('0x17')][_0x3b76('0x1b')]?_[_0x3b76('0x1c')](_0x2c0977[_0x3b76('0x17')][_0x3b76('0x1b')],function(_0x43045b){return{'model':db[_0x43045b[_0x3b76('0x1d')]],'as':_0x43045b['as'],'attributes':_0x43045b[_0x3b76('0x1e')],'include':_0x43045b[_0x3b76('0x1b')]?_[_0x3b76('0x1c')](_0x43045b[_0x3b76('0x1b')],function(_0x37046e){return{'model':db[_0x37046e[_0x3b76('0x1d')]],'as':_0x37046e['as'],'attributes':_0x37046e['attributes'],'include':_0x37046e['include']?_[_0x3b76('0x1c')](_0x37046e['include'],function(_0xbeb5e4){return{'model':db[_0xbeb5e4[_0x3b76('0x1d')]],'as':_0xbeb5e4['as'],'attributes':_0xbeb5e4[_0x3b76('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x14a493){logger[_0x3b76('0xc')](_0x3b76('0x1f'),_0x2c0977);logger[_0x3b76('0xf')]('ShowSugarcrmAccount',_0x2c0977,JSON[_0x3b76('0x10')](_0x14a493));_0x4e9e4b(_0x14a493);})[_0x3b76('0x14')](function(_0xf0aa08){logger[_0x3b76('0x11')](_0x3b76('0x1f'),_0xf0aa08[_0x3b76('0x13')],_0x2c0977);_0x1def93(_0x3fb939['error'](0x1f4,_0xf0aa08[_0x3b76('0x13')]));});});};
\ No newline at end of file
index 1fdfeae..694c9de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddc9=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','path'];(function(_0x2bcd1f,_0x4f1972){var _0x2381ca=function(_0x51f935){while(--_0x51f935){_0x2bcd1f['push'](_0x2bcd1f['shift']());}};_0x2381ca(++_0x4f1972);}(_0xddc9,0x89));var _0x9ddc=function(_0x53f58c,_0x1fa6df){_0x53f58c=_0x53f58c-0x0;var _0x5d1ce0=_0xddc9[_0x53f58c];return _0x5d1ce0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9ddc('0x0'));var timeout=require(_0x9ddc('0x1'));var express=require(_0x9ddc('0x2'));var router=express[_0x9ddc('0x3')]();var fs_extra=require(_0x9ddc('0x4'));var auth=require(_0x9ddc('0x5'));var interaction=require(_0x9ddc('0x6'));var config=require(_0x9ddc('0x7'));var controller=require(_0x9ddc('0x8'));router[_0x9ddc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9ddc('0x9')](_0x9ddc('0xa'),auth[_0x9ddc('0xb')](),controller[_0x9ddc('0xc')]);router[_0x9ddc('0x9')](_0x9ddc('0xd'),auth[_0x9ddc('0xb')](),controller['getFields']);router['get'](_0x9ddc('0xe'),auth[_0x9ddc('0xb')](),controller[_0x9ddc('0xf')]);router['get'](_0x9ddc('0x10'),auth[_0x9ddc('0xb')](),controller['getDescriptions']);router[_0x9ddc('0x11')]('/',auth['isAuthenticated'](),controller[_0x9ddc('0x12')]);router[_0x9ddc('0x13')](_0x9ddc('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x9ddc('0x14')](_0x9ddc('0xa'),auth['isAuthenticated'](),controller[_0x9ddc('0x15')]);module[_0x9ddc('0x16')]=router;
\ No newline at end of file
+var _0x6299=['/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','create','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index'];(function(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0x6299,0x1d7));var _0x9629=function(_0x3dbbfc,_0x6669e){_0x3dbbfc=_0x3dbbfc-0x0;var _0x1f1734=_0x6299[_0x3dbbfc];return _0x1f1734;};'use strict';var multer=require(_0x9629('0x0'));var util=require(_0x9629('0x1'));var path=require(_0x9629('0x2'));var timeout=require(_0x9629('0x3'));var express=require(_0x9629('0x4'));var router=express[_0x9629('0x5')]();var fs_extra=require(_0x9629('0x6'));var auth=require(_0x9629('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9629('0x8'));router[_0x9629('0x9')]('/',auth[_0x9629('0xa')](),controller[_0x9629('0xb')]);router['get'](_0x9629('0xc'),auth[_0x9629('0xa')](),controller['show']);router['get'](_0x9629('0xd'),auth[_0x9629('0xa')](),controller[_0x9629('0xe')]);router[_0x9629('0x9')](_0x9629('0xf'),auth[_0x9629('0xa')](),controller[_0x9629('0x10')]);router[_0x9629('0x9')](_0x9629('0x11'),auth['isAuthenticated'](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0x9629('0x12')]);router[_0x9629('0x13')](_0x9629('0xc'),auth[_0x9629('0xa')](),controller['update']);router[_0x9629('0x14')](_0x9629('0xc'),auth[_0x9629('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ea9deb7..4811c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf87=['sequelize','STRING'];(function(_0x1e86d1,_0x228db7){var _0x2f635b=function(_0x20b36b){while(--_0x20b36b){_0x1e86d1['push'](_0x1e86d1['shift']());}};_0x2f635b(++_0x228db7);}(_0xbf87,0x128));var _0x7bf8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xbf87[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x7bf8('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7bf8('0x1')]}};
\ No newline at end of file
+var _0x4494=['exports','STRING','sequelize'];(function(_0x2c534a,_0x18a19e){var _0x3f5c99=function(_0x4c085f){while(--_0x4c085f){_0x2c534a['push'](_0x2c534a['shift']());}};_0x3f5c99(++_0x18a19e);}(_0x4494,0xb9));var _0x4449=function(_0x8b372b,_0x3ff0f4){_0x8b372b=_0x8b372b-0x0;var _0x414087=_0x4494[_0x8b372b];return _0x414087;};'use strict';var Sequelize=require(_0x4449('0x0'));module[_0x4449('0x1')]={'name':{'type':Sequelize[_0x4449('0x2')]},'description':{'type':Sequelize[_0x4449('0x2')]}};
\ No newline at end of file
index 9c6c8aa..74c71cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x997b=['include','find','body','getFields','findOne','pick','getSubjects','getDescriptions','SugarcrmField','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','SugarcrmConfiguration','includeAll','findAll','catch','params','rawAttributes'];(function(_0xe3839f,_0x555463){var _0x43c987=function(_0x4a592f){while(--_0x4a592f){_0xe3839f['push'](_0xe3839f['shift']());}};_0x43c987(++_0x555463);}(_0x997b,0xab));var _0xb997=function(_0x352d7a,_0x285bf4){_0x352d7a=_0x352d7a-0x0;var _0xf276b8=_0x997b[_0x352d7a];return _0xf276b8;};'use strict';var emlformat=require(_0xb997('0x0'));var rimraf=require(_0xb997('0x1'));var zipdir=require(_0xb997('0x2'));var jsonpatch=require(_0xb997('0x3'));var rp=require(_0xb997('0x4'));var moment=require(_0xb997('0x5'));var BPromise=require(_0xb997('0x6'));var Mustache=require(_0xb997('0x7'));var util=require(_0xb997('0x8'));var path=require('path');var sox=require(_0xb997('0x9'));var csv=require(_0xb997('0xa'));var ejs=require(_0xb997('0xb'));var fs=require('fs');var fs_extra=require(_0xb997('0xc'));var _=require(_0xb997('0xd'));var squel=require(_0xb997('0xe'));var crypto=require(_0xb997('0xf'));var jsforce=require(_0xb997('0x10'));var deskjs=require(_0xb997('0x11'));var toCsv=require(_0xb997('0xa'));var querystring=require(_0xb997('0x12'));var Papa=require(_0xb997('0x13'));var Redis=require(_0xb997('0x14'));var authService=require(_0xb997('0x15'));var qs=require(_0xb997('0x16'));var as=require(_0xb997('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb997('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb997('0x19'));var db=require(_0xb997('0x1a'))['db'];function respondWithStatusCode(_0x15c64b,_0x4d752d){_0x4d752d=_0x4d752d||0xcc;return function(_0x1e63c9){if(_0x1e63c9){return _0x15c64b[_0xb997('0x1b')](_0x4d752d);}return _0x15c64b['status'](_0x4d752d)['end']();};}function respondWithResult(_0x260a51,_0x54da56){_0x54da56=_0x54da56||0xc8;return function(_0x5342ca){if(_0x5342ca){return _0x260a51[_0xb997('0x1c')](_0x54da56)[_0xb997('0x1d')](_0x5342ca);}};}function respondWithFilteredResult(_0x45a4c0,_0x141973){return function(_0x2a3bbe){if(_0x2a3bbe){var _0x7f4915=typeof _0x141973['offset']===_0xb997('0x1e')&&typeof _0x141973['limit']===_0xb997('0x1e');var _0x1227db=_0x2a3bbe[_0xb997('0x1f')];var _0x348a10=_0x7f4915?0x0:_0x141973[_0xb997('0x20')];var _0xd6a6de=_0x7f4915?_0x2a3bbe[_0xb997('0x1f')]:_0x141973[_0xb997('0x20')]+_0x141973['limit'];var _0x5aa6a9;if(_0xd6a6de>=_0x1227db){_0xd6a6de=_0x1227db;_0x5aa6a9=0xc8;}else{_0x5aa6a9=0xce;}_0x45a4c0['status'](_0x5aa6a9);return _0x45a4c0['set'](_0xb997('0x21'),_0x348a10+'-'+_0xd6a6de+'/'+_0x1227db)[_0xb997('0x1d')](_0x2a3bbe);}return null;};}function patchUpdates(_0x24cd4a){return function(_0xde8852){try{jsonpatch[_0xb997('0x22')](_0xde8852,_0x24cd4a,!![]);}catch(_0x4171f4){return BPromise[_0xb997('0x23')](_0x4171f4);}return _0xde8852[_0xb997('0x24')]();};}function saveUpdates(_0xeea786,_0x2333e3){return function(_0x28f5cf){if(_0x28f5cf){return _0x28f5cf[_0xb997('0x25')](_0xeea786)[_0xb997('0x26')](function(_0x5d9866){return _0x5d9866;});}return null;};}function removeEntity(_0x7cf0e4,_0x1f4825){return function(_0x3df1c7){if(_0x3df1c7){return _0x3df1c7[_0xb997('0x27')]()['then'](function(){_0x7cf0e4[_0xb997('0x1c')](0xcc)[_0xb997('0x28')]();});}};}function handleEntityNotFound(_0x14a7a9,_0xad294c){return function(_0x5efec1){if(!_0x5efec1){_0x14a7a9[_0xb997('0x1b')](0x194);}return _0x5efec1;};}function handleError(_0x3d6f2e,_0x29d0ab){_0x29d0ab=_0x29d0ab||0x1f4;return function(_0x582f62){logger[_0xb997('0x29')](_0x582f62[_0xb997('0x2a')]);if(_0x582f62[_0xb997('0x2b')]){delete _0x582f62[_0xb997('0x2b')];}_0x3d6f2e[_0xb997('0x1c')](_0x29d0ab)[_0xb997('0x2c')](_0x582f62);};}exports[_0xb997('0x2d')]=function(_0x14eff0,_0x3c8ff7){var _0x57e8b5={},_0x40a128={},_0x58692b={'count':0x0,'rows':[]};var _0x11c1f4=_[_0xb997('0x2e')](db['SugarcrmConfiguration']['rawAttributes'],function(_0x5e008c){return{'name':_0x5e008c['fieldName'],'type':_0x5e008c[_0xb997('0x2f')][_0xb997('0x30')]};});_0x40a128['model']=_['map'](_0x11c1f4,'name');_0x40a128[_0xb997('0x31')]=_[_0xb997('0x32')](_0x14eff0[_0xb997('0x31')]);_0x40a128[_0xb997('0x33')]=_[_0xb997('0x34')](_0x40a128[_0xb997('0x35')],_0x40a128[_0xb997('0x31')]);_0x57e8b5['attributes']=_[_0xb997('0x34')](_0x40a128[_0xb997('0x35')],qs[_0xb997('0x36')](_0x14eff0[_0xb997('0x31')]['fields']));_0x57e8b5[_0xb997('0x37')]=_0x57e8b5[_0xb997('0x37')][_0xb997('0x38')]?_0x57e8b5[_0xb997('0x37')]:_0x40a128[_0xb997('0x35')];if(!_0x14eff0[_0xb997('0x31')][_0xb997('0x39')](_0xb997('0x3a'))){_0x57e8b5['limit']=qs[_0xb997('0x3b')](_0x14eff0[_0xb997('0x31')]['limit']);_0x57e8b5[_0xb997('0x20')]=qs[_0xb997('0x20')](_0x14eff0[_0xb997('0x31')]['offset']);}_0x57e8b5[_0xb997('0x3c')]=qs[_0xb997('0x3d')](_0x14eff0[_0xb997('0x31')][_0xb997('0x3d')]);_0x57e8b5[_0xb997('0x3e')]=qs[_0xb997('0x33')](_['pick'](_0x14eff0[_0xb997('0x31')],_0x40a128[_0xb997('0x33')]),_0x11c1f4);if(_0x14eff0['query'][_0xb997('0x3f')]){_0x57e8b5[_0xb997('0x3e')]=_[_0xb997('0x40')](_0x57e8b5[_0xb997('0x3e')],{'$or':_[_0xb997('0x2e')](_0x11c1f4,function(_0x438173){if(_0x438173[_0xb997('0x2f')]!=='VIRTUAL'){var _0x4aafac={};_0x4aafac[_0x438173[_0xb997('0x2b')]]={'$like':'%'+_0x14eff0['query']['filter']+'%'};return _0x4aafac;}})});}_0x57e8b5=_[_0xb997('0x40')]({},_0x57e8b5,_0x14eff0[_0xb997('0x41')]);var _0x447999={'where':_0x57e8b5[_0xb997('0x3e')]};return db[_0xb997('0x42')][_0xb997('0x1f')](_0x447999)[_0xb997('0x26')](function(_0xf0c4b3){_0x58692b['count']=_0xf0c4b3;if(_0x14eff0[_0xb997('0x31')][_0xb997('0x43')]){_0x57e8b5['include']=[{'all':!![]}];}return db[_0xb997('0x42')][_0xb997('0x44')](_0x57e8b5);})[_0xb997('0x26')](function(_0x11998b){_0x58692b['rows']=_0x11998b;return _0x58692b;})['then'](respondWithFilteredResult(_0x3c8ff7,_0x57e8b5))[_0xb997('0x45')](handleError(_0x3c8ff7,null));};exports['show']=function(_0x41d2e4,_0x29b080){var _0x5fd8db={'raw':![],'where':{'id':_0x41d2e4[_0xb997('0x46')]['id']}},_0x383f14={};_0x383f14[_0xb997('0x35')]=_[_0xb997('0x32')](db[_0xb997('0x42')][_0xb997('0x47')]);_0x383f14['query']=_[_0xb997('0x32')](_0x41d2e4['query']);_0x383f14[_0xb997('0x33')]=_[_0xb997('0x34')](_0x383f14[_0xb997('0x35')],_0x383f14['query']);_0x5fd8db[_0xb997('0x37')]=_[_0xb997('0x34')](_0x383f14[_0xb997('0x35')],qs[_0xb997('0x36')](_0x41d2e4['query'][_0xb997('0x36')]));_0x5fd8db[_0xb997('0x37')]=_0x5fd8db['attributes'][_0xb997('0x38')]?_0x5fd8db[_0xb997('0x37')]:_0x383f14[_0xb997('0x35')];if(_0x41d2e4[_0xb997('0x31')]['includeAll']){_0x5fd8db[_0xb997('0x48')]=[{'all':!![]}];}_0x5fd8db=_[_0xb997('0x40')]({},_0x5fd8db,_0x41d2e4[_0xb997('0x41')]);return db[_0xb997('0x42')][_0xb997('0x49')](_0x5fd8db)[_0xb997('0x26')](handleEntityNotFound(_0x29b080,null))[_0xb997('0x26')](respondWithResult(_0x29b080,null))[_0xb997('0x45')](handleError(_0x29b080,null));};exports['create']=function(_0x4ee56e,_0x4f2db0){return db['SugarcrmConfiguration']['create'](_0x4ee56e[_0xb997('0x4a')],{})[_0xb997('0x26')](respondWithResult(_0x4f2db0,0xc9))[_0xb997('0x45')](handleError(_0x4f2db0,null));};exports[_0xb997('0x25')]=function(_0x575c54,_0x48227f){if(_0x575c54[_0xb997('0x4a')]['id']){delete _0x575c54[_0xb997('0x4a')]['id'];}return db[_0xb997('0x42')][_0xb997('0x49')]({'where':{'id':_0x575c54[_0xb997('0x46')]['id']}})[_0xb997('0x26')](handleEntityNotFound(_0x48227f,null))[_0xb997('0x26')](saveUpdates(_0x575c54[_0xb997('0x4a')],null))[_0xb997('0x26')](respondWithResult(_0x48227f,null))[_0xb997('0x45')](handleError(_0x48227f,null));};exports[_0xb997('0x27')]=function(_0x224397,_0x62a94b){return db[_0xb997('0x42')][_0xb997('0x49')]({'where':{'id':_0x224397[_0xb997('0x46')]['id']}})['then'](handleEntityNotFound(_0x62a94b,null))['then'](removeEntity(_0x62a94b,null))[_0xb997('0x45')](handleError(_0x62a94b,null));};exports[_0xb997('0x4b')]=function(_0x32ad06,_0x4152c5,_0x330092){var _0xb98ecb={};var _0x15f6b7={};var _0x5021a4;var _0x46e010;return db['SugarcrmConfiguration'][_0xb997('0x4c')]({'where':{'id':_0x32ad06[_0xb997('0x46')]['id']}})[_0xb997('0x26')](handleEntityNotFound(_0x4152c5,null))[_0xb997('0x26')](function(_0x28bdff){if(_0x28bdff){_0x5021a4=_0x28bdff;_0x15f6b7[_0xb997('0x35')]=_[_0xb997('0x32')](db['SugarcrmField'][_0xb997('0x47')]);_0x15f6b7[_0xb997('0x31')]=_[_0xb997('0x32')](_0x32ad06[_0xb997('0x31')]);_0x15f6b7[_0xb997('0x33')]=_[_0xb997('0x34')](_0x15f6b7[_0xb997('0x35')],_0x15f6b7[_0xb997('0x31')]);_0xb98ecb[_0xb997('0x37')]=_[_0xb997('0x34')](_0x15f6b7[_0xb997('0x35')],qs['fields'](_0x32ad06[_0xb997('0x31')]['fields']));_0xb98ecb[_0xb997('0x37')]=_0xb98ecb['attributes'][_0xb997('0x38')]?_0xb98ecb[_0xb997('0x37')]:_0x15f6b7[_0xb997('0x35')];_0xb98ecb['order']=qs['sort'](_0x32ad06[_0xb997('0x31')][_0xb997('0x3d')]);_0xb98ecb[_0xb997('0x3e')]=qs[_0xb997('0x33')](_[_0xb997('0x4d')](_0x32ad06[_0xb997('0x31')],_0x15f6b7[_0xb997('0x33')]));if(_0x32ad06[_0xb997('0x31')]['filter']){_0xb98ecb[_0xb997('0x3e')]=_[_0xb997('0x40')](_0xb98ecb['where'],{'$or':_[_0xb997('0x2e')](_0xb98ecb['attributes'],function(_0x116a43){var _0xec4ccd={};_0xec4ccd[_0x116a43]={'$like':'%'+_0x32ad06[_0xb997('0x31')]['filter']+'%'};return _0xec4ccd;})});}_0xb98ecb=_['merge']({},_0xb98ecb,_0x32ad06[_0xb997('0x41')]);return _0x5021a4['getFields'](_0xb98ecb);}})[_0xb997('0x26')](function(_0x41a399){if(_0x41a399){_0x46e010=_0x41a399[_0xb997('0x38')];if(!_0x32ad06[_0xb997('0x31')][_0xb997('0x39')]('nolimit')){_0xb98ecb[_0xb997('0x3b')]=qs[_0xb997('0x3b')](_0x32ad06['query'][_0xb997('0x3b')]);_0xb98ecb[_0xb997('0x20')]=qs[_0xb997('0x20')](_0x32ad06[_0xb997('0x31')]['offset']);}return _0x5021a4[_0xb997('0x4b')](_0xb98ecb);}})[_0xb997('0x26')](function(_0x2b0b13){if(_0x2b0b13){return _0x2b0b13?{'count':_0x46e010,'rows':_0x2b0b13}:null;}})[_0xb997('0x26')](respondWithResult(_0x4152c5,null))[_0xb997('0x45')](handleError(_0x4152c5,null));};exports['getSubjects']=function(_0x48805b,_0x1263b0,_0x58cfa4){var _0x10ffa5={};var _0x3509eb={};var _0x4d6d85;var _0x414ac2;return db[_0xb997('0x42')][_0xb997('0x4c')]({'where':{'id':_0x48805b[_0xb997('0x46')]['id']}})[_0xb997('0x26')](handleEntityNotFound(_0x1263b0,null))[_0xb997('0x26')](function(_0x9c1279){if(_0x9c1279){_0x4d6d85=_0x9c1279;_0x3509eb['model']=_['keys'](db['SugarcrmField']['rawAttributes']);_0x3509eb[_0xb997('0x31')]=_[_0xb997('0x32')](_0x48805b[_0xb997('0x31')]);_0x3509eb['filters']=_[_0xb997('0x34')](_0x3509eb[_0xb997('0x35')],_0x3509eb[_0xb997('0x31')]);_0x10ffa5[_0xb997('0x37')]=_['intersection'](_0x3509eb['model'],qs['fields'](_0x48805b['query'][_0xb997('0x36')]));_0x10ffa5[_0xb997('0x37')]=_0x10ffa5[_0xb997('0x37')]['length']?_0x10ffa5[_0xb997('0x37')]:_0x3509eb[_0xb997('0x35')];_0x10ffa5[_0xb997('0x3c')]=qs['sort'](_0x48805b[_0xb997('0x31')][_0xb997('0x3d')]);_0x10ffa5[_0xb997('0x3e')]=qs['filters'](_[_0xb997('0x4d')](_0x48805b[_0xb997('0x31')],_0x3509eb[_0xb997('0x33')]));if(_0x48805b[_0xb997('0x31')]['filter']){_0x10ffa5[_0xb997('0x3e')]=_['merge'](_0x10ffa5['where'],{'$or':_[_0xb997('0x2e')](_0x10ffa5[_0xb997('0x37')],function(_0x4bfeec){var _0x5ea6ab={};_0x5ea6ab[_0x4bfeec]={'$like':'%'+_0x48805b['query'][_0xb997('0x3f')]+'%'};return _0x5ea6ab;})});}_0x10ffa5=_[_0xb997('0x40')]({},_0x10ffa5,_0x48805b[_0xb997('0x41')]);return _0x4d6d85[_0xb997('0x4e')](_0x10ffa5);}})['then'](function(_0x18ff63){if(_0x18ff63){_0x414ac2=_0x18ff63[_0xb997('0x38')];if(!_0x48805b[_0xb997('0x31')][_0xb997('0x39')](_0xb997('0x3a'))){_0x10ffa5['limit']=qs['limit'](_0x48805b['query'][_0xb997('0x3b')]);_0x10ffa5['offset']=qs[_0xb997('0x20')](_0x48805b['query'][_0xb997('0x20')]);}return _0x4d6d85[_0xb997('0x4e')](_0x10ffa5);}})[_0xb997('0x26')](function(_0x2c2d6a){if(_0x2c2d6a){return _0x2c2d6a?{'count':_0x414ac2,'rows':_0x2c2d6a}:null;}})[_0xb997('0x26')](respondWithResult(_0x1263b0,null))[_0xb997('0x45')](handleError(_0x1263b0,null));};exports[_0xb997('0x4f')]=function(_0x2a1505,_0x3964d7,_0x5cbd74){var _0x4189e0={};var _0x2c4781={};var _0x4d93af;var _0x40d18a;return db[_0xb997('0x42')][_0xb997('0x4c')]({'where':{'id':_0x2a1505[_0xb997('0x46')]['id']}})[_0xb997('0x26')](handleEntityNotFound(_0x3964d7,null))[_0xb997('0x26')](function(_0xc47064){if(_0xc47064){_0x4d93af=_0xc47064;_0x2c4781[_0xb997('0x35')]=_[_0xb997('0x32')](db[_0xb997('0x50')]['rawAttributes']);_0x2c4781['query']=_['keys'](_0x2a1505[_0xb997('0x31')]);_0x2c4781['filters']=_['intersection'](_0x2c4781[_0xb997('0x35')],_0x2c4781['query']);_0x4189e0[_0xb997('0x37')]=_[_0xb997('0x34')](_0x2c4781[_0xb997('0x35')],qs[_0xb997('0x36')](_0x2a1505[_0xb997('0x31')][_0xb997('0x36')]));_0x4189e0[_0xb997('0x37')]=_0x4189e0[_0xb997('0x37')][_0xb997('0x38')]?_0x4189e0[_0xb997('0x37')]:_0x2c4781[_0xb997('0x35')];_0x4189e0[_0xb997('0x3c')]=qs['sort'](_0x2a1505[_0xb997('0x31')][_0xb997('0x3d')]);_0x4189e0[_0xb997('0x3e')]=qs[_0xb997('0x33')](_[_0xb997('0x4d')](_0x2a1505['query'],_0x2c4781[_0xb997('0x33')]));if(_0x2a1505[_0xb997('0x31')][_0xb997('0x3f')]){_0x4189e0[_0xb997('0x3e')]=_[_0xb997('0x40')](_0x4189e0['where'],{'$or':_[_0xb997('0x2e')](_0x4189e0['attributes'],function(_0x26470f){var _0x2d8bed={};_0x2d8bed[_0x26470f]={'$like':'%'+_0x2a1505['query']['filter']+'%'};return _0x2d8bed;})});}_0x4189e0=_[_0xb997('0x40')]({},_0x4189e0,_0x2a1505[_0xb997('0x41')]);return _0x4d93af[_0xb997('0x4f')](_0x4189e0);}})[_0xb997('0x26')](function(_0x5bc24b){if(_0x5bc24b){_0x40d18a=_0x5bc24b[_0xb997('0x38')];if(!_0x2a1505[_0xb997('0x31')]['hasOwnProperty'](_0xb997('0x3a'))){_0x4189e0['limit']=qs[_0xb997('0x3b')](_0x2a1505[_0xb997('0x31')][_0xb997('0x3b')]);_0x4189e0[_0xb997('0x20')]=qs[_0xb997('0x20')](_0x2a1505[_0xb997('0x31')]['offset']);}return _0x4d93af['getDescriptions'](_0x4189e0);}})['then'](function(_0x14d77b){if(_0x14d77b){return _0x14d77b?{'count':_0x40d18a,'rows':_0x14d77b}:null;}})[_0xb997('0x26')](respondWithResult(_0x3964d7,null))[_0xb997('0x45')](handleError(_0x3964d7,null));};
\ No newline at end of file
+var _0x2cad=['catch','show','params','find','create','body','update','getFields','findOne','SugarcrmField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','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','status','end','json','undefined','offset','limit','set','Content-Range','reject','save','destroy','sendStatus','error','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','count','includeAll','include','findAll','rows'];(function(_0x3ba173,_0x4ed60d){var _0x383b3d=function(_0x2332b8){while(--_0x2332b8){_0x3ba173['push'](_0x3ba173['shift']());}};_0x383b3d(++_0x4ed60d);}(_0x2cad,0x1b0));var _0xd2ca=function(_0x2e8148,_0x1a38c7){_0x2e8148=_0x2e8148-0x0;var _0x39bd72=_0x2cad[_0x2e8148];return _0x39bd72;};'use strict';var emlformat=require(_0xd2ca('0x0'));var rimraf=require(_0xd2ca('0x1'));var zipdir=require(_0xd2ca('0x2'));var jsonpatch=require(_0xd2ca('0x3'));var rp=require(_0xd2ca('0x4'));var moment=require('moment');var BPromise=require(_0xd2ca('0x5'));var Mustache=require(_0xd2ca('0x6'));var util=require(_0xd2ca('0x7'));var path=require('path');var sox=require(_0xd2ca('0x8'));var csv=require(_0xd2ca('0x9'));var ejs=require(_0xd2ca('0xa'));var fs=require('fs');var fs_extra=require(_0xd2ca('0xb'));var _=require('lodash');var squel=require(_0xd2ca('0xc'));var crypto=require('crypto');var jsforce=require(_0xd2ca('0xd'));var deskjs=require(_0xd2ca('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd2ca('0xf'));var Papa=require('papaparse');var Redis=require(_0xd2ca('0x10'));var authService=require(_0xd2ca('0x11'));var qs=require(_0xd2ca('0x12'));var as=require(_0xd2ca('0x13'));var hardwareService=require(_0xd2ca('0x14'));var logger=require(_0xd2ca('0x15'))(_0xd2ca('0x16'));var utils=require(_0xd2ca('0x17'));var config=require(_0xd2ca('0x18'));var licenseUtil=require(_0xd2ca('0x19'));var db=require(_0xd2ca('0x1a'))['db'];function respondWithStatusCode(_0x20ebf8,_0x255857){_0x255857=_0x255857||0xcc;return function(_0x296ac1){if(_0x296ac1){return _0x20ebf8['sendStatus'](_0x255857);}return _0x20ebf8[_0xd2ca('0x1b')](_0x255857)[_0xd2ca('0x1c')]();};}function respondWithResult(_0x417b30,_0x4c543){_0x4c543=_0x4c543||0xc8;return function(_0x1e4382){if(_0x1e4382){return _0x417b30[_0xd2ca('0x1b')](_0x4c543)[_0xd2ca('0x1d')](_0x1e4382);}};}function respondWithFilteredResult(_0x229224,_0x2c9c23){return function(_0x44b29b){if(_0x44b29b){var _0x2a69bf=typeof _0x2c9c23['offset']===_0xd2ca('0x1e')&&typeof _0x2c9c23['limit']==='undefined';var _0x162741=_0x44b29b['count'];var _0x2b2e45=_0x2a69bf?0x0:_0x2c9c23[_0xd2ca('0x1f')];var _0x2361db=_0x2a69bf?_0x44b29b['count']:_0x2c9c23[_0xd2ca('0x1f')]+_0x2c9c23[_0xd2ca('0x20')];var _0x564a41;if(_0x2361db>=_0x162741){_0x2361db=_0x162741;_0x564a41=0xc8;}else{_0x564a41=0xce;}_0x229224[_0xd2ca('0x1b')](_0x564a41);return _0x229224[_0xd2ca('0x21')](_0xd2ca('0x22'),_0x2b2e45+'-'+_0x2361db+'/'+_0x162741)['json'](_0x44b29b);}return null;};}function patchUpdates(_0x276de1){return function(_0x50eb0d){try{jsonpatch['apply'](_0x50eb0d,_0x276de1,!![]);}catch(_0x282c12){return BPromise[_0xd2ca('0x23')](_0x282c12);}return _0x50eb0d[_0xd2ca('0x24')]();};}function saveUpdates(_0x2a5547,_0x4c6709){return function(_0x23e505){if(_0x23e505){return _0x23e505['update'](_0x2a5547)['then'](function(_0x170182){return _0x170182;});}return null;};}function removeEntity(_0x1d188d,_0x4eb439){return function(_0xe75506){if(_0xe75506){return _0xe75506[_0xd2ca('0x25')]()['then'](function(){_0x1d188d['status'](0xcc)[_0xd2ca('0x1c')]();});}};}function handleEntityNotFound(_0x23c341,_0x787146){return function(_0x2be51d){if(!_0x2be51d){_0x23c341[_0xd2ca('0x26')](0x194);}return _0x2be51d;};}function handleError(_0x1d9a0a,_0xf13b3b){_0xf13b3b=_0xf13b3b||0x1f4;return function(_0x21d120){logger[_0xd2ca('0x27')](_0x21d120['stack']);if(_0x21d120['name']){delete _0x21d120['name'];}_0x1d9a0a[_0xd2ca('0x1b')](_0xf13b3b)['send'](_0x21d120);};}exports[_0xd2ca('0x28')]=function(_0x1d1749,_0x3583ea){var _0x2a60d7={},_0x759bab={},_0x37bf25={'count':0x0,'rows':[]};var _0x3a6280=_[_0xd2ca('0x29')](db[_0xd2ca('0x2a')][_0xd2ca('0x2b')],function(_0x366de2){return{'name':_0x366de2[_0xd2ca('0x2c')],'type':_0x366de2[_0xd2ca('0x2d')][_0xd2ca('0x2e')]};});_0x759bab[_0xd2ca('0x2f')]=_[_0xd2ca('0x29')](_0x3a6280,_0xd2ca('0x30'));_0x759bab[_0xd2ca('0x31')]=_[_0xd2ca('0x32')](_0x1d1749[_0xd2ca('0x31')]);_0x759bab[_0xd2ca('0x33')]=_[_0xd2ca('0x34')](_0x759bab[_0xd2ca('0x2f')],_0x759bab[_0xd2ca('0x31')]);_0x2a60d7[_0xd2ca('0x35')]=_[_0xd2ca('0x34')](_0x759bab['model'],qs[_0xd2ca('0x36')](_0x1d1749[_0xd2ca('0x31')][_0xd2ca('0x36')]));_0x2a60d7['attributes']=_0x2a60d7[_0xd2ca('0x35')][_0xd2ca('0x37')]?_0x2a60d7['attributes']:_0x759bab['model'];if(!_0x1d1749[_0xd2ca('0x31')][_0xd2ca('0x38')](_0xd2ca('0x39'))){_0x2a60d7[_0xd2ca('0x20')]=qs[_0xd2ca('0x20')](_0x1d1749[_0xd2ca('0x31')][_0xd2ca('0x20')]);_0x2a60d7['offset']=qs[_0xd2ca('0x1f')](_0x1d1749['query'][_0xd2ca('0x1f')]);}_0x2a60d7[_0xd2ca('0x3a')]=qs[_0xd2ca('0x3b')](_0x1d1749['query'][_0xd2ca('0x3b')]);_0x2a60d7[_0xd2ca('0x3c')]=qs[_0xd2ca('0x33')](_[_0xd2ca('0x3d')](_0x1d1749[_0xd2ca('0x31')],_0x759bab['filters']),_0x3a6280);if(_0x1d1749[_0xd2ca('0x31')]['filter']){_0x2a60d7['where']=_[_0xd2ca('0x3e')](_0x2a60d7['where'],{'$or':_[_0xd2ca('0x29')](_0x3a6280,function(_0x2e52fa){if(_0x2e52fa['type']!==_0xd2ca('0x3f')){var _0x1a8426={};_0x1a8426[_0x2e52fa[_0xd2ca('0x30')]]={'$like':'%'+_0x1d1749['query'][_0xd2ca('0x40')]+'%'};return _0x1a8426;}})});}_0x2a60d7=_[_0xd2ca('0x3e')]({},_0x2a60d7,_0x1d1749[_0xd2ca('0x41')]);var _0x486fd5={'where':_0x2a60d7[_0xd2ca('0x3c')]};return db['SugarcrmConfiguration']['count'](_0x486fd5)[_0xd2ca('0x42')](function(_0x901183){_0x37bf25[_0xd2ca('0x43')]=_0x901183;if(_0x1d1749['query'][_0xd2ca('0x44')]){_0x2a60d7[_0xd2ca('0x45')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xd2ca('0x46')](_0x2a60d7);})[_0xd2ca('0x42')](function(_0xd96b53){_0x37bf25[_0xd2ca('0x47')]=_0xd96b53;return _0x37bf25;})[_0xd2ca('0x42')](respondWithFilteredResult(_0x3583ea,_0x2a60d7))[_0xd2ca('0x48')](handleError(_0x3583ea,null));};exports[_0xd2ca('0x49')]=function(_0x487e3d,_0x461ce4){var _0x20c962={'raw':![],'where':{'id':_0x487e3d[_0xd2ca('0x4a')]['id']}},_0x3b4ba2={};_0x3b4ba2['model']=_['keys'](db['SugarcrmConfiguration'][_0xd2ca('0x2b')]);_0x3b4ba2[_0xd2ca('0x31')]=_[_0xd2ca('0x32')](_0x487e3d[_0xd2ca('0x31')]);_0x3b4ba2[_0xd2ca('0x33')]=_['intersection'](_0x3b4ba2[_0xd2ca('0x2f')],_0x3b4ba2['query']);_0x20c962[_0xd2ca('0x35')]=_['intersection'](_0x3b4ba2[_0xd2ca('0x2f')],qs[_0xd2ca('0x36')](_0x487e3d[_0xd2ca('0x31')][_0xd2ca('0x36')]));_0x20c962[_0xd2ca('0x35')]=_0x20c962[_0xd2ca('0x35')][_0xd2ca('0x37')]?_0x20c962[_0xd2ca('0x35')]:_0x3b4ba2[_0xd2ca('0x2f')];if(_0x487e3d[_0xd2ca('0x31')]['includeAll']){_0x20c962[_0xd2ca('0x45')]=[{'all':!![]}];}_0x20c962=_[_0xd2ca('0x3e')]({},_0x20c962,_0x487e3d[_0xd2ca('0x41')]);return db[_0xd2ca('0x2a')][_0xd2ca('0x4b')](_0x20c962)[_0xd2ca('0x42')](handleEntityNotFound(_0x461ce4,null))[_0xd2ca('0x42')](respondWithResult(_0x461ce4,null))[_0xd2ca('0x48')](handleError(_0x461ce4,null));};exports[_0xd2ca('0x4c')]=function(_0x2788f6,_0x4a71d3){return db[_0xd2ca('0x2a')][_0xd2ca('0x4c')](_0x2788f6[_0xd2ca('0x4d')],{})[_0xd2ca('0x42')](respondWithResult(_0x4a71d3,0xc9))['catch'](handleError(_0x4a71d3,null));};exports[_0xd2ca('0x4e')]=function(_0x1338fa,_0x1e4416){if(_0x1338fa['body']['id']){delete _0x1338fa['body']['id'];}return db[_0xd2ca('0x2a')][_0xd2ca('0x4b')]({'where':{'id':_0x1338fa[_0xd2ca('0x4a')]['id']}})[_0xd2ca('0x42')](handleEntityNotFound(_0x1e4416,null))[_0xd2ca('0x42')](saveUpdates(_0x1338fa[_0xd2ca('0x4d')],null))[_0xd2ca('0x42')](respondWithResult(_0x1e4416,null))[_0xd2ca('0x48')](handleError(_0x1e4416,null));};exports[_0xd2ca('0x25')]=function(_0x5b5b6c,_0x366820){return db[_0xd2ca('0x2a')][_0xd2ca('0x4b')]({'where':{'id':_0x5b5b6c[_0xd2ca('0x4a')]['id']}})['then'](handleEntityNotFound(_0x366820,null))['then'](removeEntity(_0x366820,null))[_0xd2ca('0x48')](handleError(_0x366820,null));};exports[_0xd2ca('0x4f')]=function(_0x52dda1,_0x55638d,_0xbd0a4f){var _0xaa9f9d={};var _0xdf18b1={};var _0x3477ee;var _0x3841dd;return db[_0xd2ca('0x2a')][_0xd2ca('0x50')]({'where':{'id':_0x52dda1[_0xd2ca('0x4a')]['id']}})[_0xd2ca('0x42')](handleEntityNotFound(_0x55638d,null))[_0xd2ca('0x42')](function(_0x4bd70f){if(_0x4bd70f){_0x3477ee=_0x4bd70f;_0xdf18b1[_0xd2ca('0x2f')]=_['keys'](db['SugarcrmField']['rawAttributes']);_0xdf18b1['query']=_['keys'](_0x52dda1[_0xd2ca('0x31')]);_0xdf18b1[_0xd2ca('0x33')]=_[_0xd2ca('0x34')](_0xdf18b1[_0xd2ca('0x2f')],_0xdf18b1[_0xd2ca('0x31')]);_0xaa9f9d[_0xd2ca('0x35')]=_['intersection'](_0xdf18b1[_0xd2ca('0x2f')],qs['fields'](_0x52dda1['query'][_0xd2ca('0x36')]));_0xaa9f9d[_0xd2ca('0x35')]=_0xaa9f9d[_0xd2ca('0x35')][_0xd2ca('0x37')]?_0xaa9f9d['attributes']:_0xdf18b1[_0xd2ca('0x2f')];_0xaa9f9d['order']=qs[_0xd2ca('0x3b')](_0x52dda1[_0xd2ca('0x31')][_0xd2ca('0x3b')]);_0xaa9f9d[_0xd2ca('0x3c')]=qs[_0xd2ca('0x33')](_[_0xd2ca('0x3d')](_0x52dda1[_0xd2ca('0x31')],_0xdf18b1[_0xd2ca('0x33')]));if(_0x52dda1[_0xd2ca('0x31')][_0xd2ca('0x40')]){_0xaa9f9d[_0xd2ca('0x3c')]=_[_0xd2ca('0x3e')](_0xaa9f9d['where'],{'$or':_[_0xd2ca('0x29')](_0xaa9f9d[_0xd2ca('0x35')],function(_0x4c26f){var _0x25d29c={};_0x25d29c[_0x4c26f]={'$like':'%'+_0x52dda1['query'][_0xd2ca('0x40')]+'%'};return _0x25d29c;})});}_0xaa9f9d=_[_0xd2ca('0x3e')]({},_0xaa9f9d,_0x52dda1['options']);return _0x3477ee[_0xd2ca('0x4f')](_0xaa9f9d);}})['then'](function(_0x96ea5d){if(_0x96ea5d){_0x3841dd=_0x96ea5d[_0xd2ca('0x37')];if(!_0x52dda1['query'][_0xd2ca('0x38')]('nolimit')){_0xaa9f9d['limit']=qs[_0xd2ca('0x20')](_0x52dda1[_0xd2ca('0x31')][_0xd2ca('0x20')]);_0xaa9f9d['offset']=qs[_0xd2ca('0x1f')](_0x52dda1[_0xd2ca('0x31')]['offset']);}return _0x3477ee[_0xd2ca('0x4f')](_0xaa9f9d);}})['then'](function(_0x14a1ae){if(_0x14a1ae){return _0x14a1ae?{'count':_0x3841dd,'rows':_0x14a1ae}:null;}})[_0xd2ca('0x42')](respondWithResult(_0x55638d,null))[_0xd2ca('0x48')](handleError(_0x55638d,null));};exports['getSubjects']=function(_0x22ef2e,_0x5a3d6a,_0x4ecc86){var _0xbec890={};var _0x284b4b={};var _0x2108bc;var _0x39d747;return db[_0xd2ca('0x2a')][_0xd2ca('0x50')]({'where':{'id':_0x22ef2e['params']['id']}})[_0xd2ca('0x42')](handleEntityNotFound(_0x5a3d6a,null))[_0xd2ca('0x42')](function(_0x127ddb){if(_0x127ddb){_0x2108bc=_0x127ddb;_0x284b4b[_0xd2ca('0x2f')]=_['keys'](db[_0xd2ca('0x51')][_0xd2ca('0x2b')]);_0x284b4b['query']=_[_0xd2ca('0x32')](_0x22ef2e['query']);_0x284b4b['filters']=_['intersection'](_0x284b4b[_0xd2ca('0x2f')],_0x284b4b['query']);_0xbec890['attributes']=_[_0xd2ca('0x34')](_0x284b4b[_0xd2ca('0x2f')],qs[_0xd2ca('0x36')](_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x36')]));_0xbec890[_0xd2ca('0x35')]=_0xbec890['attributes'][_0xd2ca('0x37')]?_0xbec890[_0xd2ca('0x35')]:_0x284b4b['model'];_0xbec890[_0xd2ca('0x3a')]=qs[_0xd2ca('0x3b')](_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x3b')]);_0xbec890['where']=qs['filters'](_[_0xd2ca('0x3d')](_0x22ef2e[_0xd2ca('0x31')],_0x284b4b[_0xd2ca('0x33')]));if(_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x40')]){_0xbec890[_0xd2ca('0x3c')]=_[_0xd2ca('0x3e')](_0xbec890[_0xd2ca('0x3c')],{'$or':_[_0xd2ca('0x29')](_0xbec890[_0xd2ca('0x35')],function(_0x4d698a){var _0x561181={};_0x561181[_0x4d698a]={'$like':'%'+_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x40')]+'%'};return _0x561181;})});}_0xbec890=_[_0xd2ca('0x3e')]({},_0xbec890,_0x22ef2e[_0xd2ca('0x41')]);return _0x2108bc['getSubjects'](_0xbec890);}})[_0xd2ca('0x42')](function(_0xf5e253){if(_0xf5e253){_0x39d747=_0xf5e253[_0xd2ca('0x37')];if(!_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x38')](_0xd2ca('0x39'))){_0xbec890[_0xd2ca('0x20')]=qs[_0xd2ca('0x20')](_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x20')]);_0xbec890[_0xd2ca('0x1f')]=qs[_0xd2ca('0x1f')](_0x22ef2e[_0xd2ca('0x31')][_0xd2ca('0x1f')]);}return _0x2108bc[_0xd2ca('0x52')](_0xbec890);}})['then'](function(_0x4e2c65){if(_0x4e2c65){return _0x4e2c65?{'count':_0x39d747,'rows':_0x4e2c65}:null;}})[_0xd2ca('0x42')](respondWithResult(_0x5a3d6a,null))[_0xd2ca('0x48')](handleError(_0x5a3d6a,null));};exports[_0xd2ca('0x53')]=function(_0x245561,_0x2bd52d,_0x38bf39){var _0x442539={};var _0x1eca4d={};var _0x29ca43;var _0x103336;return db['SugarcrmConfiguration'][_0xd2ca('0x50')]({'where':{'id':_0x245561[_0xd2ca('0x4a')]['id']}})[_0xd2ca('0x42')](handleEntityNotFound(_0x2bd52d,null))[_0xd2ca('0x42')](function(_0x5d7ffb){if(_0x5d7ffb){_0x29ca43=_0x5d7ffb;_0x1eca4d[_0xd2ca('0x2f')]=_[_0xd2ca('0x32')](db[_0xd2ca('0x51')][_0xd2ca('0x2b')]);_0x1eca4d[_0xd2ca('0x31')]=_[_0xd2ca('0x32')](_0x245561[_0xd2ca('0x31')]);_0x1eca4d[_0xd2ca('0x33')]=_[_0xd2ca('0x34')](_0x1eca4d[_0xd2ca('0x2f')],_0x1eca4d[_0xd2ca('0x31')]);_0x442539['attributes']=_[_0xd2ca('0x34')](_0x1eca4d[_0xd2ca('0x2f')],qs[_0xd2ca('0x36')](_0x245561[_0xd2ca('0x31')][_0xd2ca('0x36')]));_0x442539[_0xd2ca('0x35')]=_0x442539['attributes'][_0xd2ca('0x37')]?_0x442539[_0xd2ca('0x35')]:_0x1eca4d[_0xd2ca('0x2f')];_0x442539[_0xd2ca('0x3a')]=qs[_0xd2ca('0x3b')](_0x245561[_0xd2ca('0x31')][_0xd2ca('0x3b')]);_0x442539[_0xd2ca('0x3c')]=qs['filters'](_[_0xd2ca('0x3d')](_0x245561[_0xd2ca('0x31')],_0x1eca4d['filters']));if(_0x245561['query'][_0xd2ca('0x40')]){_0x442539[_0xd2ca('0x3c')]=_[_0xd2ca('0x3e')](_0x442539[_0xd2ca('0x3c')],{'$or':_['map'](_0x442539[_0xd2ca('0x35')],function(_0x50bfb4){var _0x4bcbd2={};_0x4bcbd2[_0x50bfb4]={'$like':'%'+_0x245561[_0xd2ca('0x31')][_0xd2ca('0x40')]+'%'};return _0x4bcbd2;})});}_0x442539=_[_0xd2ca('0x3e')]({},_0x442539,_0x245561['options']);return _0x29ca43[_0xd2ca('0x53')](_0x442539);}})[_0xd2ca('0x42')](function(_0x135efe){if(_0x135efe){_0x103336=_0x135efe[_0xd2ca('0x37')];if(!_0x245561['query'][_0xd2ca('0x38')]('nolimit')){_0x442539[_0xd2ca('0x20')]=qs['limit'](_0x245561[_0xd2ca('0x31')][_0xd2ca('0x20')]);_0x442539[_0xd2ca('0x1f')]=qs[_0xd2ca('0x1f')](_0x245561[_0xd2ca('0x31')][_0xd2ca('0x1f')]);}return _0x29ca43[_0xd2ca('0x53')](_0x442539);}})[_0xd2ca('0x42')](function(_0x36de09){if(_0x36de09){return _0x36de09?{'count':_0x103336,'rows':_0x36de09}:null;}})[_0xd2ca('0x42')](respondWithResult(_0x2bd52d,null))[_0xd2ca('0x48')](handleError(_0x2bd52d,null));};
\ No newline at end of file
index b06a89f..45479dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef76=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations'];(function(_0x12f03e,_0x320adb){var _0x5690bb=function(_0x510d61){while(--_0x510d61){_0x12f03e['push'](_0x12f03e['shift']());}};_0x5690bb(++_0x320adb);}(_0xef76,0x78));var _0x6ef7=function(_0x2a0ddf,_0xb51b3e){_0x2a0ddf=_0x2a0ddf-0x0;var _0x4b2584=_0xef76[_0x2a0ddf];return _0x4b2584;};'use strict';var _=require('lodash');var util=require(_0x6ef7('0x0'));var logger=require(_0x6ef7('0x1'))(_0x6ef7('0x2'));var moment=require('moment');var BPromise=require(_0x6ef7('0x3'));var rp=require(_0x6ef7('0x4'));var fs=require('fs');var path=require(_0x6ef7('0x5'));var rimraf=require(_0x6ef7('0x6'));var config=require(_0x6ef7('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x6ef7('0x8')]=function(_0x1fd67e,_0x230cb8){return _0x1fd67e[_0x6ef7('0x9')](_0x6ef7('0xa'),attributes,{'tableName':_0x6ef7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d92=['api','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger'];(function(_0x26391c,_0x4e0658){var _0x39ebc0=function(_0x49b59e){while(--_0x49b59e){_0x26391c['push'](_0x26391c['shift']());}};_0x39ebc0(++_0x4e0658);}(_0x1d92,0xad));var _0x21d9=function(_0x32e8f2,_0x33cff3){_0x32e8f2=_0x32e8f2-0x0;var _0xefd2e6=_0x1d92[_0x32e8f2];return _0xefd2e6;};'use strict';var _=require(_0x21d9('0x0'));var util=require(_0x21d9('0x1'));var logger=require(_0x21d9('0x2'))(_0x21d9('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x21d9('0x4'));var rimraf=require(_0x21d9('0x5'));var config=require(_0x21d9('0x6'));var attributes=require(_0x21d9('0x7'));module[_0x21d9('0x8')]=function(_0x1fcac2,_0x5572c8){return _0x1fcac2['define'](_0x21d9('0x9'),attributes,{'tableName':_0x21d9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6426932..58debe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78a4=['catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x5927ba,_0x34792d){var _0x1975d6=function(_0x8ba690){while(--_0x8ba690){_0x5927ba['push'](_0x5927ba['shift']());}};_0x1975d6(++_0x34792d);}(_0x78a4,0xfd));var _0x478a=function(_0x4f4757,_0x44241a){_0x4f4757=_0x4f4757-0x0;var _0x549c37=_0x78a4[_0x4f4757];return _0x549c37;};'use strict';var _=require('lodash');var util=require(_0x478a('0x0'));var moment=require(_0x478a('0x1'));var BPromise=require('bluebird');var rs=require(_0x478a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x478a('0x3'))['db'];var utils=require(_0x478a('0x4'));var logger=require(_0x478a('0x5'))('rpc');var config=require(_0x478a('0x6'));var jayson=require(_0x478a('0x7'));var client=jayson[_0x478a('0x8')][_0x478a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x308017,_0x51246a,_0x319c4f){return new BPromise(function(_0x3e03e7,_0x25072d){return client[_0x478a('0xa')](_0x308017,_0x319c4f)['then'](function(_0x14a10a){logger[_0x478a('0xb')](_0x478a('0xc'),_0x51246a,_0x478a('0xd'));logger[_0x478a('0xe')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x51246a,_0x478a('0xd'),JSON[_0x478a('0xf')](_0x14a10a));if(_0x14a10a['error']){if(_0x14a10a[_0x478a('0x10')][_0x478a('0x11')]===0x1f4){logger[_0x478a('0x10')](_0x478a('0xc'),_0x51246a,_0x14a10a['error'][_0x478a('0x12')]);return _0x25072d(_0x14a10a[_0x478a('0x10')]['message']);}logger[_0x478a('0x10')](_0x478a('0xc'),_0x51246a,_0x14a10a['error'][_0x478a('0x12')]);return _0x3e03e7(_0x14a10a[_0x478a('0x10')]['message']);}else{logger[_0x478a('0xb')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x51246a,'request\x20sent');_0x3e03e7(_0x14a10a[_0x478a('0x13')][_0x478a('0x12')]);}})[_0x478a('0x14')](function(_0x10db7f){logger[_0x478a('0x10')](_0x478a('0xc'),_0x51246a,_0x10db7f);_0x25072d(_0x10db7f);});});}
\ No newline at end of file
+var _0x92d9=['message','result','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x22066e,_0xba06ef){var _0x51d447=function(_0x546bba){while(--_0x546bba){_0x22066e['push'](_0x22066e['shift']());}};_0x51d447(++_0xba06ef);}(_0x92d9,0x1e8));var _0x992d=function(_0x52e547,_0x22e55b){_0x52e547=_0x52e547-0x0;var _0x3e53a0=_0x92d9[_0x52e547];return _0x3e53a0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x992d('0x0'));var BPromise=require('bluebird');var rs=require(_0x992d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x992d('0x2'))['db'];var utils=require(_0x992d('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x992d('0x4'));var jayson=require(_0x992d('0x5'));var client=jayson[_0x992d('0x6')][_0x992d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x341ac1,_0x5ddab7,_0x2bddaf){return new BPromise(function(_0x27a3ef,_0x34e49e){return client[_0x992d('0x8')](_0x341ac1,_0x2bddaf)[_0x992d('0x9')](function(_0x4d46f1){logger[_0x992d('0xa')](_0x992d('0xb'),_0x5ddab7,_0x992d('0xc'));logger['debug']('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x5ddab7,'request\x20sent',JSON[_0x992d('0xd')](_0x4d46f1));if(_0x4d46f1['error']){if(_0x4d46f1[_0x992d('0xe')][_0x992d('0xf')]===0x1f4){logger[_0x992d('0xe')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5ddab7,_0x4d46f1[_0x992d('0xe')]['message']);return _0x34e49e(_0x4d46f1[_0x992d('0xe')][_0x992d('0x10')]);}logger[_0x992d('0xe')](_0x992d('0xb'),_0x5ddab7,_0x4d46f1[_0x992d('0xe')]['message']);return _0x27a3ef(_0x4d46f1['error']['message']);}else{logger[_0x992d('0xa')](_0x992d('0xb'),_0x5ddab7,_0x992d('0xc'));_0x27a3ef(_0x4d46f1[_0x992d('0x11')]['message']);}})['catch'](function(_0x5d246c){logger['error'](_0x992d('0xb'),_0x5ddab7,_0x5d246c);_0x34e49e(_0x5d246c);});});}
\ No newline at end of file
index 34d2243..76e050c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b1=['connect-timeout','express','Router','fs-extra','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','destroy','multer','util'];(function(_0x240d49,_0x392130){var _0x131035=function(_0x566b89){while(--_0x566b89){_0x240d49['push'](_0x240d49['shift']());}};_0x131035(++_0x392130);}(_0x69b1,0x8e));var _0x169b=function(_0x4088c6,_0x245b8c){_0x4088c6=_0x4088c6-0x0;var _0x4bbdb5=_0x69b1[_0x4088c6];return _0x4bbdb5;};'use strict';var multer=require(_0x169b('0x0'));var util=require(_0x169b('0x1'));var path=require('path');var timeout=require(_0x169b('0x2'));var express=require(_0x169b('0x3'));var router=express[_0x169b('0x4')]();var fs_extra=require(_0x169b('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x169b('0x6'));var controller=require(_0x169b('0x7'));router[_0x169b('0x8')]('/',auth[_0x169b('0x9')](),controller[_0x169b('0xa')]);router[_0x169b('0x8')]('/:id',auth[_0x169b('0x9')](),controller[_0x169b('0xb')]);router[_0x169b('0xc')]('/',auth['isAuthenticated'](),controller[_0x169b('0xd')]);router[_0x169b('0xe')](_0x169b('0xf'),auth['isAuthenticated'](),controller[_0x169b('0x10')]);router['delete'](_0x169b('0xf'),auth[_0x169b('0x9')](),controller[_0x169b('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x2e10=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4a3d6b,_0x1d293f){var _0x1fb408=function(_0x5f5d84){while(--_0x5f5d84){_0x4a3d6b['push'](_0x4a3d6b['shift']());}};_0x1fb408(++_0x1d293f);}(_0x2e10,0x6b));var _0x02e1=function(_0x550881,_0x4dc2c3){_0x550881=_0x550881-0x0;var _0x118c7a=_0x2e10[_0x550881];return _0x118c7a;};'use strict';var multer=require(_0x02e1('0x0'));var util=require(_0x02e1('0x1'));var path=require(_0x02e1('0x2'));var timeout=require(_0x02e1('0x3'));var express=require('express');var router=express[_0x02e1('0x4')]();var fs_extra=require(_0x02e1('0x5'));var auth=require(_0x02e1('0x6'));var interaction=require(_0x02e1('0x7'));var config=require(_0x02e1('0x8'));var controller=require(_0x02e1('0x9'));router['get']('/',auth[_0x02e1('0xa')](),controller[_0x02e1('0xb')]);router[_0x02e1('0xc')](_0x02e1('0xd'),auth[_0x02e1('0xa')](),controller[_0x02e1('0xe')]);router[_0x02e1('0xf')]('/',auth[_0x02e1('0xa')](),controller[_0x02e1('0x10')]);router[_0x02e1('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x02e1('0x12')]);router[_0x02e1('0x13')](_0x02e1('0xd'),auth['isAuthenticated'](),controller[_0x02e1('0x14')]);module[_0x02e1('0x15')]=router;
\ No newline at end of file
index e18cf4e..0116b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406d=['exports','ENUM','variable','customVariable','picklist','STRING'];(function(_0x23d39a,_0x559607){var _0x9d4bc5=function(_0x1aadaa){while(--_0x1aadaa){_0x23d39a['push'](_0x23d39a['shift']());}};_0x9d4bc5(++_0x559607);}(_0x406d,0x15c));var _0xd406=function(_0x41cea3,_0x586b82){_0x41cea3=_0x41cea3-0x0;var _0x3cb477=_0x406d[_0x41cea3];return _0x3cb477;};'use strict';var Sequelize=require('sequelize');module[_0xd406('0x0')]={'type':{'type':Sequelize[_0xd406('0x1')]('string',_0xd406('0x2'),_0xd406('0x3'),'keyValue',_0xd406('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xd406('0x5')]},'key':{'type':Sequelize[_0xd406('0x5')]},'keyType':{'type':Sequelize[_0xd406('0x1')]('string','variable',_0xd406('0x3'))},'keyContent':{'type':Sequelize[_0xd406('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xd406('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4584=['STRING','variable','sequelize','exports','ENUM','string','customVariable','keyValue','picklist'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0x4584,0x80));var _0x4458=function(_0xad80cb,_0x22e6d1){_0xad80cb=_0xad80cb-0x0;var _0x125f97=_0x4584[_0xad80cb];return _0x125f97;};'use strict';var Sequelize=require(_0x4458('0x0'));module[_0x4458('0x1')]={'type':{'type':Sequelize[_0x4458('0x2')](_0x4458('0x3'),'variable',_0x4458('0x4'),_0x4458('0x5'),_0x4458('0x6')),'defaultValue':_0x4458('0x3')},'content':{'type':Sequelize[_0x4458('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4458('0x2')](_0x4458('0x3'),_0x4458('0x8'),_0x4458('0x4'))},'keyContent':{'type':Sequelize[_0x4458('0x7')]},'idField':{'type':Sequelize[_0x4458('0x7')]},'nameField':{'type':Sequelize[_0x4458('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2a2777b..9b21d03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d6d=['end','stack','name','send','index','map','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','SugarcrmField','destroy','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','save','update','then'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5d6d,0x14e));var _0xd5d6=function(_0x1f0eec,_0x280bad){_0x1f0eec=_0x1f0eec-0x0;var _0xabf373=_0x5d6d[_0x1f0eec];return _0xabf373;};'use strict';var emlformat=require(_0xd5d6('0x0'));var rimraf=require(_0xd5d6('0x1'));var zipdir=require(_0xd5d6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd5d6('0x3'));var moment=require(_0xd5d6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd5d6('0x5'));var util=require(_0xd5d6('0x6'));var path=require(_0xd5d6('0x7'));var sox=require(_0xd5d6('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd5d6('0x9'));var squel=require(_0xd5d6('0xa'));var crypto=require(_0xd5d6('0xb'));var jsforce=require(_0xd5d6('0xc'));var deskjs=require(_0xd5d6('0xd'));var toCsv=require(_0xd5d6('0xe'));var querystring=require(_0xd5d6('0xf'));var Papa=require(_0xd5d6('0x10'));var Redis=require(_0xd5d6('0x11'));var authService=require(_0xd5d6('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd5d6('0x13'));var logger=require(_0xd5d6('0x14'))(_0xd5d6('0x15'));var utils=require(_0xd5d6('0x16'));var config=require(_0xd5d6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd5d6('0x18'))['db'];function respondWithStatusCode(_0x3baa68,_0x37641d){_0x37641d=_0x37641d||0xcc;return function(_0x32743b){if(_0x32743b){return _0x3baa68[_0xd5d6('0x19')](_0x37641d);}return _0x3baa68[_0xd5d6('0x1a')](_0x37641d)['end']();};}function respondWithResult(_0x4c6e5f,_0x5c87e5){_0x5c87e5=_0x5c87e5||0xc8;return function(_0xd6c07d){if(_0xd6c07d){return _0x4c6e5f[_0xd5d6('0x1a')](_0x5c87e5)[_0xd5d6('0x1b')](_0xd6c07d);}};}function respondWithFilteredResult(_0x1fb16c,_0x5e4582){return function(_0x4ad791){if(_0x4ad791){var _0x130f5f=typeof _0x5e4582['offset']===_0xd5d6('0x1c')&&typeof _0x5e4582[_0xd5d6('0x1d')]===_0xd5d6('0x1c');var _0x5db906=_0x4ad791[_0xd5d6('0x1e')];var _0xeae141=_0x130f5f?0x0:_0x5e4582[_0xd5d6('0x1f')];var _0x3a21ef=_0x130f5f?_0x4ad791[_0xd5d6('0x1e')]:_0x5e4582[_0xd5d6('0x1f')]+_0x5e4582[_0xd5d6('0x1d')];var _0x6ba3de;if(_0x3a21ef>=_0x5db906){_0x3a21ef=_0x5db906;_0x6ba3de=0xc8;}else{_0x6ba3de=0xce;}_0x1fb16c[_0xd5d6('0x1a')](_0x6ba3de);return _0x1fb16c['set'](_0xd5d6('0x20'),_0xeae141+'-'+_0x3a21ef+'/'+_0x5db906)[_0xd5d6('0x1b')](_0x4ad791);}return null;};}function patchUpdates(_0x232906){return function(_0x207e98){try{jsonpatch['apply'](_0x207e98,_0x232906,!![]);}catch(_0x3e4887){return BPromise['reject'](_0x3e4887);}return _0x207e98[_0xd5d6('0x21')]();};}function saveUpdates(_0x3a43ca,_0x351b18){return function(_0x2def38){if(_0x2def38){return _0x2def38[_0xd5d6('0x22')](_0x3a43ca)[_0xd5d6('0x23')](function(_0x2b9a04){return _0x2b9a04;});}return null;};}function removeEntity(_0x357b84,_0x493b62){return function(_0x47346b){if(_0x47346b){return _0x47346b['destroy']()[_0xd5d6('0x23')](function(){_0x357b84[_0xd5d6('0x1a')](0xcc)[_0xd5d6('0x24')]();});}};}function handleEntityNotFound(_0x4e2ff7,_0x19a49c){return function(_0x5d3089){if(!_0x5d3089){_0x4e2ff7[_0xd5d6('0x19')](0x194);}return _0x5d3089;};}function handleError(_0x1320d8,_0x440d37){_0x440d37=_0x440d37||0x1f4;return function(_0x5915c2){logger['error'](_0x5915c2[_0xd5d6('0x25')]);if(_0x5915c2['name']){delete _0x5915c2[_0xd5d6('0x26')];}_0x1320d8[_0xd5d6('0x1a')](_0x440d37)[_0xd5d6('0x27')](_0x5915c2);};}exports[_0xd5d6('0x28')]=function(_0x446cd0,_0x183d8a){var _0x5c7c66={},_0x2055df={},_0x60b274={'count':0x0,'rows':[]};var _0x2ca318=_[_0xd5d6('0x29')](db['SugarcrmField'][_0xd5d6('0x2a')],function(_0x1e2da8){return{'name':_0x1e2da8[_0xd5d6('0x2b')],'type':_0x1e2da8[_0xd5d6('0x2c')][_0xd5d6('0x2d')]};});_0x2055df['model']=_['map'](_0x2ca318,'name');_0x2055df['query']=_[_0xd5d6('0x2e')](_0x446cd0[_0xd5d6('0x2f')]);_0x2055df[_0xd5d6('0x30')]=_[_0xd5d6('0x31')](_0x2055df[_0xd5d6('0x32')],_0x2055df['query']);_0x5c7c66[_0xd5d6('0x33')]=_[_0xd5d6('0x31')](_0x2055df[_0xd5d6('0x32')],qs[_0xd5d6('0x34')](_0x446cd0[_0xd5d6('0x2f')][_0xd5d6('0x34')]));_0x5c7c66[_0xd5d6('0x33')]=_0x5c7c66['attributes'][_0xd5d6('0x35')]?_0x5c7c66[_0xd5d6('0x33')]:_0x2055df['model'];if(!_0x446cd0[_0xd5d6('0x2f')][_0xd5d6('0x36')](_0xd5d6('0x37'))){_0x5c7c66['limit']=qs['limit'](_0x446cd0[_0xd5d6('0x2f')][_0xd5d6('0x1d')]);_0x5c7c66['offset']=qs[_0xd5d6('0x1f')](_0x446cd0[_0xd5d6('0x2f')][_0xd5d6('0x1f')]);}_0x5c7c66[_0xd5d6('0x38')]=qs[_0xd5d6('0x39')](_0x446cd0[_0xd5d6('0x2f')][_0xd5d6('0x39')]);_0x5c7c66[_0xd5d6('0x3a')]=qs['filters'](_[_0xd5d6('0x3b')](_0x446cd0[_0xd5d6('0x2f')],_0x2055df[_0xd5d6('0x30')]),_0x2ca318);if(_0x446cd0[_0xd5d6('0x2f')]['filter']){_0x5c7c66[_0xd5d6('0x3a')]=_[_0xd5d6('0x3c')](_0x5c7c66['where'],{'$or':_[_0xd5d6('0x29')](_0x2ca318,function(_0x33ab51){if(_0x33ab51[_0xd5d6('0x2c')]!==_0xd5d6('0x3d')){var _0x4001f7={};_0x4001f7[_0x33ab51['name']]={'$like':'%'+_0x446cd0[_0xd5d6('0x2f')]['filter']+'%'};return _0x4001f7;}})});}_0x5c7c66=_[_0xd5d6('0x3c')]({},_0x5c7c66,_0x446cd0[_0xd5d6('0x3e')]);var _0x259aef={'where':_0x5c7c66[_0xd5d6('0x3a')]};return db['SugarcrmField'][_0xd5d6('0x1e')](_0x259aef)['then'](function(_0x5af948){_0x60b274['count']=_0x5af948;if(_0x446cd0[_0xd5d6('0x2f')][_0xd5d6('0x3f')]){_0x5c7c66[_0xd5d6('0x40')]=[{'all':!![]}];}return db['SugarcrmField']['findAll'](_0x5c7c66);})[_0xd5d6('0x23')](function(_0x2b9911){_0x60b274[_0xd5d6('0x41')]=_0x2b9911;return _0x60b274;})[_0xd5d6('0x23')](respondWithFilteredResult(_0x183d8a,_0x5c7c66))[_0xd5d6('0x42')](handleError(_0x183d8a,null));};exports[_0xd5d6('0x43')]=function(_0x6048b,_0xab8ff2){var _0x48438a={'raw':!![],'where':{'id':_0x6048b[_0xd5d6('0x44')]['id']}},_0x90db9a={};_0x90db9a['model']=_[_0xd5d6('0x2e')](db['SugarcrmField'][_0xd5d6('0x2a')]);_0x90db9a[_0xd5d6('0x2f')]=_['keys'](_0x6048b[_0xd5d6('0x2f')]);_0x90db9a[_0xd5d6('0x30')]=_[_0xd5d6('0x31')](_0x90db9a[_0xd5d6('0x32')],_0x90db9a[_0xd5d6('0x2f')]);_0x48438a[_0xd5d6('0x33')]=_['intersection'](_0x90db9a[_0xd5d6('0x32')],qs['fields'](_0x6048b['query']['fields']));_0x48438a[_0xd5d6('0x33')]=_0x48438a[_0xd5d6('0x33')][_0xd5d6('0x35')]?_0x48438a[_0xd5d6('0x33')]:_0x90db9a['model'];if(_0x6048b[_0xd5d6('0x2f')][_0xd5d6('0x3f')]){_0x48438a[_0xd5d6('0x40')]=[{'all':!![]}];}_0x48438a=_[_0xd5d6('0x3c')]({},_0x48438a,_0x6048b[_0xd5d6('0x3e')]);return db['SugarcrmField'][_0xd5d6('0x45')](_0x48438a)['then'](handleEntityNotFound(_0xab8ff2,null))[_0xd5d6('0x23')](respondWithResult(_0xab8ff2,null))[_0xd5d6('0x42')](handleError(_0xab8ff2,null));};exports['create']=function(_0xc13089,_0x1c31f1){return db['SugarcrmField'][_0xd5d6('0x46')](_0xc13089[_0xd5d6('0x47')],{})['then'](respondWithResult(_0x1c31f1,0xc9))[_0xd5d6('0x42')](handleError(_0x1c31f1,null));};exports[_0xd5d6('0x22')]=function(_0x492ab7,_0x2b48ec){if(_0x492ab7[_0xd5d6('0x47')]['id']){delete _0x492ab7[_0xd5d6('0x47')]['id'];}return db[_0xd5d6('0x48')][_0xd5d6('0x45')]({'where':{'id':_0x492ab7['params']['id']}})[_0xd5d6('0x23')](handleEntityNotFound(_0x2b48ec,null))[_0xd5d6('0x23')](saveUpdates(_0x492ab7[_0xd5d6('0x47')],null))['then'](respondWithResult(_0x2b48ec,null))[_0xd5d6('0x42')](handleError(_0x2b48ec,null));};exports[_0xd5d6('0x49')]=function(_0x1fdec4,_0x1d7dcb){return db[_0xd5d6('0x48')]['find']({'where':{'id':_0x1fdec4[_0xd5d6('0x44')]['id']}})['then'](handleEntityNotFound(_0x1d7dcb,null))['then'](removeEntity(_0x1d7dcb,null))[_0xd5d6('0x42')](handleError(_0x1d7dcb,null));};
\ No newline at end of file
+var _0x481c=['Content-Range','reject','save','update','destroy','then','error','stack','name','index','map','SugarcrmField','rawAttributes','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','length','merge','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set'];(function(_0x2eccbf,_0x1f83bd){var _0x2259bd=function(_0x4733f8){while(--_0x4733f8){_0x2eccbf['push'](_0x2eccbf['shift']());}};_0x2259bd(++_0x1f83bd);}(_0x481c,0x140));var _0xc481=function(_0x5a8606,_0x3450c3){_0x5a8606=_0x5a8606-0x0;var _0x278192=_0x481c[_0x5a8606];return _0x278192;};'use strict';var emlformat=require(_0xc481('0x0'));var rimraf=require(_0xc481('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc481('0x2'));var rp=require(_0xc481('0x3'));var moment=require(_0xc481('0x4'));var BPromise=require(_0xc481('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc481('0x6'));var csv=require('to-csv');var ejs=require(_0xc481('0x7'));var fs=require('fs');var fs_extra=require(_0xc481('0x8'));var _=require(_0xc481('0x9'));var squel=require(_0xc481('0xa'));var crypto=require(_0xc481('0xb'));var jsforce=require(_0xc481('0xc'));var deskjs=require(_0xc481('0xd'));var toCsv=require('to-csv');var querystring=require(_0xc481('0xe'));var Papa=require('papaparse');var Redis=require(_0xc481('0xf'));var authService=require(_0xc481('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc481('0x11'));var hardwareService=require(_0xc481('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xc481('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xc481('0x14'));var db=require(_0xc481('0x15'))['db'];function respondWithStatusCode(_0x371322,_0x5206e1){_0x5206e1=_0x5206e1||0xcc;return function(_0x4bee96){if(_0x4bee96){return _0x371322[_0xc481('0x16')](_0x5206e1);}return _0x371322[_0xc481('0x17')](_0x5206e1)[_0xc481('0x18')]();};}function respondWithResult(_0x4a76de,_0x102761){_0x102761=_0x102761||0xc8;return function(_0x3bfdbd){if(_0x3bfdbd){return _0x4a76de['status'](_0x102761)[_0xc481('0x19')](_0x3bfdbd);}};}function respondWithFilteredResult(_0x182015,_0x3cff35){return function(_0x30ca44){if(_0x30ca44){var _0xb8b989=typeof _0x3cff35[_0xc481('0x1a')]==='undefined'&&typeof _0x3cff35[_0xc481('0x1b')]==='undefined';var _0x23b26e=_0x30ca44[_0xc481('0x1c')];var _0x3e7ed7=_0xb8b989?0x0:_0x3cff35[_0xc481('0x1a')];var _0x310f3e=_0xb8b989?_0x30ca44[_0xc481('0x1c')]:_0x3cff35[_0xc481('0x1a')]+_0x3cff35['limit'];var _0x2bfc8d;if(_0x310f3e>=_0x23b26e){_0x310f3e=_0x23b26e;_0x2bfc8d=0xc8;}else{_0x2bfc8d=0xce;}_0x182015[_0xc481('0x17')](_0x2bfc8d);return _0x182015[_0xc481('0x1d')](_0xc481('0x1e'),_0x3e7ed7+'-'+_0x310f3e+'/'+_0x23b26e)['json'](_0x30ca44);}return null;};}function patchUpdates(_0x516795){return function(_0x388e9f){try{jsonpatch['apply'](_0x388e9f,_0x516795,!![]);}catch(_0x152346){return BPromise[_0xc481('0x1f')](_0x152346);}return _0x388e9f[_0xc481('0x20')]();};}function saveUpdates(_0x5aec0c,_0x4fff54){return function(_0x309d91){if(_0x309d91){return _0x309d91[_0xc481('0x21')](_0x5aec0c)['then'](function(_0xbd1a0){return _0xbd1a0;});}return null;};}function removeEntity(_0x523e91,_0x2bedb6){return function(_0xeb3acb){if(_0xeb3acb){return _0xeb3acb[_0xc481('0x22')]()[_0xc481('0x23')](function(){_0x523e91[_0xc481('0x17')](0xcc)[_0xc481('0x18')]();});}};}function handleEntityNotFound(_0x56a5f1,_0x3696a2){return function(_0x3a6848){if(!_0x3a6848){_0x56a5f1['sendStatus'](0x194);}return _0x3a6848;};}function handleError(_0x2f42c9,_0x28b536){_0x28b536=_0x28b536||0x1f4;return function(_0x43a5db){logger[_0xc481('0x24')](_0x43a5db[_0xc481('0x25')]);if(_0x43a5db[_0xc481('0x26')]){delete _0x43a5db[_0xc481('0x26')];}_0x2f42c9[_0xc481('0x17')](_0x28b536)['send'](_0x43a5db);};}exports[_0xc481('0x27')]=function(_0xae837a,_0x5379e1){var _0x2e9919={},_0x2b52f6={},_0x464e40={'count':0x0,'rows':[]};var _0xba0766=_[_0xc481('0x28')](db[_0xc481('0x29')][_0xc481('0x2a')],function(_0x523af7){return{'name':_0x523af7['fieldName'],'type':_0x523af7['type'][_0xc481('0x2b')]};});_0x2b52f6[_0xc481('0x2c')]=_['map'](_0xba0766,_0xc481('0x26'));_0x2b52f6[_0xc481('0x2d')]=_['keys'](_0xae837a[_0xc481('0x2d')]);_0x2b52f6[_0xc481('0x2e')]=_[_0xc481('0x2f')](_0x2b52f6[_0xc481('0x2c')],_0x2b52f6['query']);_0x2e9919[_0xc481('0x30')]=_[_0xc481('0x2f')](_0x2b52f6[_0xc481('0x2c')],qs['fields'](_0xae837a['query'][_0xc481('0x31')]));_0x2e9919[_0xc481('0x30')]=_0x2e9919['attributes']['length']?_0x2e9919[_0xc481('0x30')]:_0x2b52f6[_0xc481('0x2c')];if(!_0xae837a[_0xc481('0x2d')][_0xc481('0x32')]('nolimit')){_0x2e9919[_0xc481('0x1b')]=qs[_0xc481('0x1b')](_0xae837a[_0xc481('0x2d')][_0xc481('0x1b')]);_0x2e9919[_0xc481('0x1a')]=qs[_0xc481('0x1a')](_0xae837a[_0xc481('0x2d')]['offset']);}_0x2e9919[_0xc481('0x33')]=qs[_0xc481('0x34')](_0xae837a[_0xc481('0x2d')]['sort']);_0x2e9919[_0xc481('0x35')]=qs[_0xc481('0x2e')](_['pick'](_0xae837a[_0xc481('0x2d')],_0x2b52f6[_0xc481('0x2e')]),_0xba0766);if(_0xae837a[_0xc481('0x2d')]['filter']){_0x2e9919[_0xc481('0x35')]=_['merge'](_0x2e9919[_0xc481('0x35')],{'$or':_[_0xc481('0x28')](_0xba0766,function(_0x4e8ec7){if(_0x4e8ec7[_0xc481('0x36')]!==_0xc481('0x37')){var _0x49e1e2={};_0x49e1e2[_0x4e8ec7[_0xc481('0x26')]]={'$like':'%'+_0xae837a[_0xc481('0x2d')][_0xc481('0x38')]+'%'};return _0x49e1e2;}})});}_0x2e9919=_['merge']({},_0x2e9919,_0xae837a[_0xc481('0x39')]);var _0x15c589={'where':_0x2e9919[_0xc481('0x35')]};return db[_0xc481('0x29')]['count'](_0x15c589)[_0xc481('0x23')](function(_0x2cf412){_0x464e40[_0xc481('0x1c')]=_0x2cf412;if(_0xae837a['query'][_0xc481('0x3a')]){_0x2e9919[_0xc481('0x3b')]=[{'all':!![]}];}return db[_0xc481('0x29')][_0xc481('0x3c')](_0x2e9919);})[_0xc481('0x23')](function(_0x4749ac){_0x464e40['rows']=_0x4749ac;return _0x464e40;})['then'](respondWithFilteredResult(_0x5379e1,_0x2e9919))[_0xc481('0x3d')](handleError(_0x5379e1,null));};exports[_0xc481('0x3e')]=function(_0x226f00,_0x25341a){var _0x2815a0={'raw':!![],'where':{'id':_0x226f00[_0xc481('0x3f')]['id']}},_0x3e8841={};_0x3e8841[_0xc481('0x2c')]=_[_0xc481('0x40')](db[_0xc481('0x29')]['rawAttributes']);_0x3e8841['query']=_[_0xc481('0x40')](_0x226f00[_0xc481('0x2d')]);_0x3e8841[_0xc481('0x2e')]=_[_0xc481('0x2f')](_0x3e8841['model'],_0x3e8841[_0xc481('0x2d')]);_0x2815a0['attributes']=_[_0xc481('0x2f')](_0x3e8841[_0xc481('0x2c')],qs[_0xc481('0x31')](_0x226f00[_0xc481('0x2d')][_0xc481('0x31')]));_0x2815a0['attributes']=_0x2815a0[_0xc481('0x30')][_0xc481('0x41')]?_0x2815a0[_0xc481('0x30')]:_0x3e8841[_0xc481('0x2c')];if(_0x226f00[_0xc481('0x2d')]['includeAll']){_0x2815a0[_0xc481('0x3b')]=[{'all':!![]}];}_0x2815a0=_[_0xc481('0x42')]({},_0x2815a0,_0x226f00[_0xc481('0x39')]);return db[_0xc481('0x29')]['find'](_0x2815a0)[_0xc481('0x23')](handleEntityNotFound(_0x25341a,null))['then'](respondWithResult(_0x25341a,null))[_0xc481('0x3d')](handleError(_0x25341a,null));};exports[_0xc481('0x43')]=function(_0x55a19c,_0x192d4f){return db[_0xc481('0x29')]['create'](_0x55a19c[_0xc481('0x44')],{})['then'](respondWithResult(_0x192d4f,0xc9))[_0xc481('0x3d')](handleError(_0x192d4f,null));};exports['update']=function(_0x3c32c2,_0x2ec983){if(_0x3c32c2['body']['id']){delete _0x3c32c2[_0xc481('0x44')]['id'];}return db[_0xc481('0x29')][_0xc481('0x45')]({'where':{'id':_0x3c32c2[_0xc481('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2ec983,null))[_0xc481('0x23')](saveUpdates(_0x3c32c2['body'],null))[_0xc481('0x23')](respondWithResult(_0x2ec983,null))[_0xc481('0x3d')](handleError(_0x2ec983,null));};exports[_0xc481('0x22')]=function(_0xd7804c,_0x31c421){return db[_0xc481('0x29')][_0xc481('0x45')]({'where':{'id':_0xd7804c[_0xc481('0x3f')]['id']}})['then'](handleEntityNotFound(_0x31c421,null))[_0xc481('0x23')](removeEntity(_0x31c421,null))['catch'](handleError(_0x31c421,null));};
\ No newline at end of file
index 90ae7c9..398c002 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1438=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','int_sugarcrm_fields','sugarcrm_unique_index','lodash'];(function(_0x12bff1,_0x44144d){var _0x4790bb=function(_0x1bfdbd){while(--_0x1bfdbd){_0x12bff1['push'](_0x12bff1['shift']());}};_0x4790bb(++_0x44144d);}(_0x1438,0x12a));var _0x8143=function(_0x51f308,_0x3d48e0){_0x51f308=_0x51f308-0x0;var _0x563121=_0x1438[_0x51f308];return _0x563121;};'use strict';var _=require(_0x8143('0x0'));var util=require(_0x8143('0x1'));var logger=require('../../config/logger')(_0x8143('0x2'));var moment=require(_0x8143('0x3'));var BPromise=require(_0x8143('0x4'));var rp=require(_0x8143('0x5'));var fs=require('fs');var path=require(_0x8143('0x6'));var rimraf=require(_0x8143('0x7'));var config=require(_0x8143('0x8'));var attributes=require(_0x8143('0x9'));module[_0x8143('0xa')]=function(_0xf18eba,_0x525b22){return _0xf18eba['define']('SugarcrmField',attributes,{'tableName':_0x8143('0xb'),'paranoid':![],'indexes':[{'name':_0x8143('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9f0=['./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','util','../../config/logger','api','bluebird'];(function(_0x256d6a,_0x2f002f){var _0x460058=function(_0x195be7){while(--_0x195be7){_0x256d6a['push'](_0x256d6a['shift']());}};_0x460058(++_0x2f002f);}(_0xc9f0,0xf8));var _0x0c9f=function(_0x4ee94e,_0x4e17df){_0x4ee94e=_0x4ee94e-0x0;var _0x565893=_0xc9f0[_0x4ee94e];return _0x565893;};'use strict';var _=require('lodash');var util=require(_0x0c9f('0x0'));var logger=require(_0x0c9f('0x1'))(_0x0c9f('0x2'));var moment=require('moment');var BPromise=require(_0x0c9f('0x3'));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(_0x0c9f('0x4'));module[_0x0c9f('0x5')]=function(_0x46095b,_0x2845a1){return _0x46095b[_0x0c9f('0x6')](_0x0c9f('0x7'),attributes,{'tableName':_0x0c9f('0x8'),'paranoid':![],'indexes':[{'name':_0x0c9f('0x9'),'fields':[_0x0c9f('0xa'),_0x0c9f('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 283bef3..51faa05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52d8=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SugarcrmField,\x20%s,\x20%s','message','result','catch'];(function(_0x3fded9,_0x1be17d){var _0xf413d=function(_0x117a1f){while(--_0x117a1f){_0x3fded9['push'](_0x3fded9['shift']());}};_0xf413d(++_0x1be17d);}(_0x52d8,0x108));var _0x852d=function(_0x4d9bb2,_0x3db50d){_0x4d9bb2=_0x4d9bb2-0x0;var _0x3179fe=_0x52d8[_0x4d9bb2];return _0x3179fe;};'use strict';var _=require('lodash');var util=require(_0x852d('0x0'));var moment=require(_0x852d('0x1'));var BPromise=require(_0x852d('0x2'));var rs=require(_0x852d('0x3'));var fs=require('fs');var Redis=require(_0x852d('0x4'));var db=require(_0x852d('0x5'))['db'];var utils=require(_0x852d('0x6'));var logger=require(_0x852d('0x7'))('rpc');var config=require(_0x852d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x852d('0x9')][_0x852d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3bbfcc,_0x23f17d,_0x3fe92a){return new BPromise(function(_0x4a814f,_0x34aa3c){return client[_0x852d('0xb')](_0x3bbfcc,_0x3fe92a)[_0x852d('0xc')](function(_0x1b2789){logger[_0x852d('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x23f17d,'request\x20sent');logger[_0x852d('0xe')](_0x852d('0xf'),_0x23f17d,_0x852d('0x10'),JSON[_0x852d('0x11')](_0x1b2789));if(_0x1b2789[_0x852d('0x12')]){if(_0x1b2789[_0x852d('0x12')][_0x852d('0x13')]===0x1f4){logger[_0x852d('0x12')](_0x852d('0x14'),_0x23f17d,_0x1b2789[_0x852d('0x12')][_0x852d('0x15')]);return _0x34aa3c(_0x1b2789[_0x852d('0x12')][_0x852d('0x15')]);}logger[_0x852d('0x12')](_0x852d('0x14'),_0x23f17d,_0x1b2789['error'][_0x852d('0x15')]);return _0x4a814f(_0x1b2789['error'][_0x852d('0x15')]);}else{logger['info'](_0x852d('0x14'),_0x23f17d,_0x852d('0x10'));_0x4a814f(_0x1b2789[_0x852d('0x16')]['message']);}})[_0x852d('0x17')](function(_0x42caa4){logger[_0x852d('0x12')]('SugarcrmField,\x20%s,\x20%s',_0x23f17d,_0x42caa4);_0x34aa3c(_0x42caa4);});});}
\ No newline at end of file
+var _0xd0f3=['request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','message','SugarcrmField,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x521f8b,_0x54e1ac){var _0x3426f7=function(_0x42ca5d){while(--_0x42ca5d){_0x521f8b['push'](_0x521f8b['shift']());}};_0x3426f7(++_0x54e1ac);}(_0xd0f3,0x1eb));var _0x3d0f=function(_0x39686e,_0x3d83bb){_0x39686e=_0x39686e-0x0;var _0x1b765e=_0xd0f3[_0x39686e];return _0x1b765e;};'use strict';var _=require(_0x3d0f('0x0'));var util=require(_0x3d0f('0x1'));var moment=require(_0x3d0f('0x2'));var BPromise=require('bluebird');var rs=require(_0x3d0f('0x3'));var fs=require('fs');var Redis=require(_0x3d0f('0x4'));var db=require(_0x3d0f('0x5'))['db'];var utils=require(_0x3d0f('0x6'));var logger=require(_0x3d0f('0x7'))(_0x3d0f('0x8'));var config=require('../../config/environment');var jayson=require(_0x3d0f('0x9'));var client=jayson[_0x3d0f('0xa')][_0x3d0f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5eac4e,_0x49d133,_0x6c0aa4){return new BPromise(function(_0x5d8e9f,_0x3bff5f){return client[_0x3d0f('0xc')](_0x5eac4e,_0x6c0aa4)[_0x3d0f('0xd')](function(_0x37a019){logger[_0x3d0f('0xe')]('SugarcrmField,\x20%s,\x20%s',_0x49d133,_0x3d0f('0xf'));logger[_0x3d0f('0x10')](_0x3d0f('0x11'),_0x49d133,_0x3d0f('0xf'),JSON['stringify'](_0x37a019));if(_0x37a019[_0x3d0f('0x12')]){if(_0x37a019[_0x3d0f('0x12')][_0x3d0f('0x13')]===0x1f4){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x49d133,_0x37a019[_0x3d0f('0x12')][_0x3d0f('0x14')]);return _0x3bff5f(_0x37a019[_0x3d0f('0x12')][_0x3d0f('0x14')]);}logger['error']('SugarcrmField,\x20%s,\x20%s',_0x49d133,_0x37a019[_0x3d0f('0x12')][_0x3d0f('0x14')]);return _0x5d8e9f(_0x37a019['error'][_0x3d0f('0x14')]);}else{logger[_0x3d0f('0xe')](_0x3d0f('0x15'),_0x49d133,'request\x20sent');_0x5d8e9f(_0x37a019['result'][_0x3d0f('0x14')]);}})[_0x3d0f('0x16')](function(_0x5ef582){logger[_0x3d0f('0x12')](_0x3d0f('0x15'),_0x49d133,_0x5ef582);_0x3bff5f(_0x5ef582);});});}
\ No newline at end of file
index 63a3a6d..00d439d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb3c=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put'];(function(_0x1777fa,_0x3338d8){var _0x3b94f2=function(_0x216a67){while(--_0x216a67){_0x1777fa['push'](_0x1777fa['shift']());}};_0x3b94f2(++_0x3338d8);}(_0xfb3c,0x1df));var _0xcfb3=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xfb3c[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0xcfb3('0x0'));var util=require(_0xcfb3('0x1'));var path=require(_0xcfb3('0x2'));var timeout=require(_0xcfb3('0x3'));var express=require('express');var router=express[_0xcfb3('0x4')]();var fs_extra=require(_0xcfb3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xcfb3('0x6'));var config=require(_0xcfb3('0x7'));var controller=require('./intVtigerAccount.controller');router[_0xcfb3('0x8')]('/',auth['isAuthenticated'](),controller[_0xcfb3('0x9')]);router[_0xcfb3('0x8')](_0xcfb3('0xa'),auth[_0xcfb3('0xb')](),controller[_0xcfb3('0xc')]);router[_0xcfb3('0x8')](_0xcfb3('0xd'),auth[_0xcfb3('0xb')](),controller[_0xcfb3('0xe')]);router['get'](_0xcfb3('0xf'),auth[_0xcfb3('0xb')](),controller[_0xcfb3('0x10')]);router[_0xcfb3('0x11')]('/',auth[_0xcfb3('0xb')](),controller[_0xcfb3('0x12')]);router[_0xcfb3('0x11')](_0xcfb3('0xd'),auth[_0xcfb3('0xb')](),controller[_0xcfb3('0x13')]);router[_0xcfb3('0x14')](_0xcfb3('0xa'),auth[_0xcfb3('0xb')](),controller[_0xcfb3('0x15')]);router[_0xcfb3('0x16')]('/:id',auth[_0xcfb3('0xb')](),controller[_0xcfb3('0x17')]);module[_0xcfb3('0x18')]=router;
\ No newline at end of file
+var _0x77d9=['addConfiguration','update','delete','destroy','exports','express','Router','../../components/auth/service','../../components/interaction/service','./intVtigerAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x77d9,0x159));var _0x977d=function(_0x36b444,_0x505b35){_0x36b444=_0x36b444-0x0;var _0x786323=_0x77d9[_0x36b444];return _0x786323;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x977d('0x0'));var router=express[_0x977d('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x977d('0x2'));var interaction=require(_0x977d('0x3'));var config=require('../../config/environment');var controller=require(_0x977d('0x4'));router[_0x977d('0x5')]('/',auth['isAuthenticated'](),controller[_0x977d('0x6')]);router['get'](_0x977d('0x7'),auth[_0x977d('0x8')](),controller[_0x977d('0x9')]);router[_0x977d('0x5')](_0x977d('0xa'),auth['isAuthenticated'](),controller[_0x977d('0xb')]);router[_0x977d('0x5')]('/:id/fields',auth[_0x977d('0x8')](),controller[_0x977d('0xc')]);router[_0x977d('0xd')]('/',auth['isAuthenticated'](),controller[_0x977d('0xe')]);router['post'](_0x977d('0xa'),auth[_0x977d('0x8')](),controller[_0x977d('0xf')]);router['put'](_0x977d('0x7'),auth['isAuthenticated'](),controller[_0x977d('0x10')]);router[_0x977d('0x11')]('/:id',auth[_0x977d('0x8')](),controller[_0x977d('0x12')]);module[_0x977d('0x13')]=router;
\ No newline at end of file
index 935dff1..3ed91d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3152=['exports','STRING'];(function(_0x5ce783,_0x2e3585){var _0x474cc2=function(_0x233aa6){while(--_0x233aa6){_0x5ce783['push'](_0x5ce783['shift']());}};_0x474cc2(++_0x2e3585);}(_0x3152,0xb0));var _0x2315=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x3152[_0x1969a7];return _0x3d665f;};'use strict';var Sequelize=require('sequelize');module[_0x2315('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x2315('0x1')]},'username':{'type':Sequelize[_0x2315('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0x2315('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2315('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x22b5=['exports','STRING','sequelize'];(function(_0xc68e96,_0x15beea){var _0x47f8c5=function(_0x3861ba){while(--_0x3861ba){_0xc68e96['push'](_0xc68e96['shift']());}};_0x47f8c5(++_0x15beea);}(_0x22b5,0xce));var _0x522b=function(_0x27f5f1,_0x4bec21){_0x27f5f1=_0x27f5f1-0x0;var _0x314cc4=_0x22b5[_0x27f5f1];return _0x314cc4;};'use strict';var Sequelize=require(_0x522b('0x0'));module[_0x522b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x522b('0x2')]},'username':{'type':Sequelize[_0x522b('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x522b('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0x522b('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x522b('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x522b('0x2')],'allowNull':![]}};
\ No newline at end of file
index 756c18f..2ac053a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe18e=['show','fields','find','create','body','catch','destroy','findOne','params','order','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerConfiguration','VtigerField','md5','getFields','username','description','moduleName','remoteUri','accessKey','slice','substring','format','%s/webservice.php','GET','getchallenge','success','login','result','token','describe','owner','remove','includes','false','label','startsWith','cf_','picklist','picklistValues','value','log','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','index','VtigerAccount','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x213b74,_0x46786a){var _0x31a624=function(_0x1d7b7e){while(--_0x1d7b7e){_0x213b74['push'](_0x213b74['shift']());}};_0x31a624(++_0x46786a);}(_0xe18e,0x12a));var _0xee18=function(_0xd6f2f4,_0x779d69){_0xd6f2f4=_0xd6f2f4-0x0;var _0x180b49=_0xe18e[_0xd6f2f4];return _0x180b49;};'use strict';var emlformat=require(_0xee18('0x0'));var rimraf=require(_0xee18('0x1'));var zipdir=require(_0xee18('0x2'));var jsonpatch=require(_0xee18('0x3'));var rp=require(_0xee18('0x4'));var moment=require(_0xee18('0x5'));var BPromise=require(_0xee18('0x6'));var Mustache=require('mustache');var util=require(_0xee18('0x7'));var path=require(_0xee18('0x8'));var sox=require(_0xee18('0x9'));var csv=require(_0xee18('0xa'));var ejs=require(_0xee18('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xee18('0xc'));var squel=require(_0xee18('0xd'));var crypto=require(_0xee18('0xe'));var jsforce=require(_0xee18('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xee18('0xa'));var querystring=require(_0xee18('0x10'));var Papa=require(_0xee18('0x11'));var Redis=require(_0xee18('0x12'));var authService=require(_0xee18('0x13'));var qs=require(_0xee18('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xee18('0x15'));var logger=require(_0xee18('0x16'))('api');var utils=require(_0xee18('0x17'));var config=require(_0xee18('0x18'));var licenseUtil=require(_0xee18('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0xee18('0x1a'));function respondWithStatusCode(_0x34a879,_0x5453ac){_0x5453ac=_0x5453ac||0xcc;return function(_0x2f025c){if(_0x2f025c){return _0x34a879[_0xee18('0x1b')](_0x5453ac);}return _0x34a879[_0xee18('0x1c')](_0x5453ac)[_0xee18('0x1d')]();};}function respondWithResult(_0x5505af,_0x3332f2){_0x3332f2=_0x3332f2||0xc8;return function(_0xbff452){if(_0xbff452){return _0x5505af[_0xee18('0x1c')](_0x3332f2)[_0xee18('0x1e')](_0xbff452);}};}function respondWithFilteredResult(_0x2986b2,_0x21e51f){return function(_0x49dfd4){if(_0x49dfd4){var _0x11408a=typeof _0x21e51f[_0xee18('0x1f')]===_0xee18('0x20')&&typeof _0x21e51f[_0xee18('0x21')]===_0xee18('0x20');var _0x17fadf=_0x49dfd4['count'];var _0x5e95d1=_0x11408a?0x0:_0x21e51f[_0xee18('0x1f')];var _0x5b782a=_0x11408a?_0x49dfd4[_0xee18('0x22')]:_0x21e51f[_0xee18('0x1f')]+_0x21e51f[_0xee18('0x21')];var _0x269ca9;if(_0x5b782a>=_0x17fadf){_0x5b782a=_0x17fadf;_0x269ca9=0xc8;}else{_0x269ca9=0xce;}_0x2986b2[_0xee18('0x1c')](_0x269ca9);return _0x2986b2[_0xee18('0x23')](_0xee18('0x24'),_0x5e95d1+'-'+_0x5b782a+'/'+_0x17fadf)[_0xee18('0x1e')](_0x49dfd4);}return null;};}function patchUpdates(_0x191842){return function(_0x5a6e1b){try{jsonpatch[_0xee18('0x25')](_0x5a6e1b,_0x191842,!![]);}catch(_0x3439d3){return BPromise['reject'](_0x3439d3);}return _0x5a6e1b[_0xee18('0x26')]();};}function saveUpdates(_0x5a4694,_0x41f2ac){return function(_0x17052e){if(_0x17052e){return _0x17052e[_0xee18('0x27')](_0x5a4694)['then'](function(_0x15f9d3){return _0x15f9d3;});}return null;};}function removeEntity(_0x51b3a1,_0x2eee08){return function(_0x114984){if(_0x114984){return _0x114984['destroy']()[_0xee18('0x28')](function(){_0x51b3a1['status'](0xcc)[_0xee18('0x1d')]();});}};}function handleEntityNotFound(_0x37b071,_0x5c1026){return function(_0x402ad3){if(!_0x402ad3){_0x37b071[_0xee18('0x1b')](0x194);}return _0x402ad3;};}function handleError(_0x1282d1,_0x371781){_0x371781=_0x371781||0x1f4;return function(_0x335299){logger[_0xee18('0x29')](_0x335299[_0xee18('0x2a')]);if(_0x335299[_0xee18('0x2b')]){delete _0x335299[_0xee18('0x2b')];}_0x1282d1[_0xee18('0x1c')](_0x371781)['send'](_0x335299);};}exports[_0xee18('0x2c')]=function(_0x3fc95d,_0x296672){var _0x49780b={},_0x3bd7d6={},_0x4f8cca={'count':0x0,'rows':[]};var _0x86e4d1=_['map'](db[_0xee18('0x2d')][_0xee18('0x2e')],function(_0x429168){return{'name':_0x429168['fieldName'],'type':_0x429168[_0xee18('0x2f')]['key']};});_0x3bd7d6[_0xee18('0x30')]=_[_0xee18('0x31')](_0x86e4d1,'name');_0x3bd7d6[_0xee18('0x32')]=_[_0xee18('0x33')](_0x3fc95d[_0xee18('0x32')]);_0x3bd7d6[_0xee18('0x34')]=_[_0xee18('0x35')](_0x3bd7d6['model'],_0x3bd7d6[_0xee18('0x32')]);_0x49780b[_0xee18('0x36')]=_[_0xee18('0x35')](_0x3bd7d6[_0xee18('0x30')],qs['fields'](_0x3fc95d['query']['fields']));_0x49780b[_0xee18('0x36')]=_0x49780b['attributes'][_0xee18('0x37')]?_0x49780b[_0xee18('0x36')]:_0x3bd7d6['model'];if(!_0x3fc95d[_0xee18('0x32')][_0xee18('0x38')](_0xee18('0x39'))){_0x49780b['limit']=qs['limit'](_0x3fc95d[_0xee18('0x32')][_0xee18('0x21')]);_0x49780b[_0xee18('0x1f')]=qs[_0xee18('0x1f')](_0x3fc95d[_0xee18('0x32')][_0xee18('0x1f')]);}_0x49780b['order']=qs[_0xee18('0x3a')](_0x3fc95d[_0xee18('0x32')][_0xee18('0x3a')]);_0x49780b[_0xee18('0x3b')]=qs[_0xee18('0x34')](_[_0xee18('0x3c')](_0x3fc95d[_0xee18('0x32')],_0x3bd7d6[_0xee18('0x34')]),_0x86e4d1);if(_0x3fc95d[_0xee18('0x32')][_0xee18('0x3d')]){_0x49780b[_0xee18('0x3b')]=_[_0xee18('0x3e')](_0x49780b[_0xee18('0x3b')],{'$or':_['map'](_0x86e4d1,function(_0x38f55a){if(_0x38f55a['type']!==_0xee18('0x3f')){var _0x4a6e6a={};_0x4a6e6a[_0x38f55a[_0xee18('0x2b')]]={'$like':'%'+_0x3fc95d[_0xee18('0x32')][_0xee18('0x3d')]+'%'};return _0x4a6e6a;}})});}_0x49780b=_[_0xee18('0x3e')]({},_0x49780b,_0x3fc95d[_0xee18('0x40')]);var _0x2b3e2e={'where':_0x49780b[_0xee18('0x3b')]};return db[_0xee18('0x2d')][_0xee18('0x22')](_0x2b3e2e)['then'](function(_0x49019a){_0x4f8cca[_0xee18('0x22')]=_0x49019a;if(_0x3fc95d[_0xee18('0x32')][_0xee18('0x41')]){_0x49780b[_0xee18('0x42')]=[{'all':!![]}];}return db['VtigerAccount'][_0xee18('0x43')](_0x49780b);})[_0xee18('0x28')](function(_0x4f6d79){_0x4f8cca['rows']=_0x4f6d79;return _0x4f8cca;})[_0xee18('0x28')](respondWithFilteredResult(_0x296672,_0x49780b))['catch'](handleError(_0x296672,null));};exports[_0xee18('0x44')]=function(_0x357b86,_0x96034c){var _0x14b160={'raw':![],'where':{'id':_0x357b86['params']['id']}},_0x1e19fb={};_0x1e19fb[_0xee18('0x30')]=_[_0xee18('0x33')](db[_0xee18('0x2d')]['rawAttributes']);_0x1e19fb[_0xee18('0x32')]=_[_0xee18('0x33')](_0x357b86[_0xee18('0x32')]);_0x1e19fb[_0xee18('0x34')]=_['intersection'](_0x1e19fb[_0xee18('0x30')],_0x1e19fb[_0xee18('0x32')]);_0x14b160['attributes']=_['intersection'](_0x1e19fb['model'],qs[_0xee18('0x45')](_0x357b86[_0xee18('0x32')]['fields']));_0x14b160[_0xee18('0x36')]=_0x14b160[_0xee18('0x36')][_0xee18('0x37')]?_0x14b160['attributes']:_0x1e19fb[_0xee18('0x30')];if(_0x357b86['query'][_0xee18('0x41')]){_0x14b160[_0xee18('0x42')]=[{'all':!![]}];}_0x14b160=_[_0xee18('0x3e')]({},_0x14b160,_0x357b86['options']);return db[_0xee18('0x2d')][_0xee18('0x46')](_0x14b160)['then'](handleEntityNotFound(_0x96034c,null))['then'](respondWithResult(_0x96034c,null))['catch'](handleError(_0x96034c,null));};exports[_0xee18('0x47')]=function(_0x429ade,_0x21f68b){return db[_0xee18('0x2d')][_0xee18('0x47')](_0x429ade['body'],{})[_0xee18('0x28')](respondWithResult(_0x21f68b,0xc9))['catch'](handleError(_0x21f68b,null));};exports[_0xee18('0x27')]=function(_0x350693,_0x17e85a){if(_0x350693['body']['id']){delete _0x350693[_0xee18('0x48')]['id'];}return db[_0xee18('0x2d')][_0xee18('0x46')]({'where':{'id':_0x350693['params']['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x17e85a,null))[_0xee18('0x28')](saveUpdates(_0x350693['body'],null))['then'](respondWithResult(_0x17e85a,null))[_0xee18('0x49')](handleError(_0x17e85a,null));};exports[_0xee18('0x4a')]=function(_0x5aa7ef,_0x134236){return db[_0xee18('0x2d')][_0xee18('0x46')]({'where':{'id':_0x5aa7ef['params']['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x134236,null))[_0xee18('0x28')](removeEntity(_0x134236,null))[_0xee18('0x49')](handleError(_0x134236,null));};exports['getConfigurations']=function(_0x9547f9,_0x4950c5,_0x16b067){var _0x31d58e={};var _0x75d599={};var _0x3366ea;var _0x38aa32;return db[_0xee18('0x2d')][_0xee18('0x4b')]({'where':{'id':_0x9547f9[_0xee18('0x4c')]['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x4950c5,null))[_0xee18('0x28')](function(_0x1af3b9){if(_0x1af3b9){_0x3366ea=_0x1af3b9;_0x75d599[_0xee18('0x30')]=_[_0xee18('0x33')](db['VtigerConfiguration']['rawAttributes']);_0x75d599[_0xee18('0x32')]=_['keys'](_0x9547f9[_0xee18('0x32')]);_0x75d599['filters']=_[_0xee18('0x35')](_0x75d599[_0xee18('0x30')],_0x75d599['query']);_0x31d58e[_0xee18('0x36')]=_[_0xee18('0x35')](_0x75d599['model'],qs[_0xee18('0x45')](_0x9547f9[_0xee18('0x32')][_0xee18('0x45')]));_0x31d58e['attributes']=_0x31d58e[_0xee18('0x36')][_0xee18('0x37')]?_0x31d58e[_0xee18('0x36')]:_0x75d599[_0xee18('0x30')];_0x31d58e[_0xee18('0x4d')]=qs['sort'](_0x9547f9['query'][_0xee18('0x3a')]);_0x31d58e['where']=qs[_0xee18('0x34')](_[_0xee18('0x3c')](_0x9547f9[_0xee18('0x32')],_0x75d599[_0xee18('0x34')]));if(_0x9547f9[_0xee18('0x32')][_0xee18('0x3d')]){_0x31d58e['where']=_[_0xee18('0x3e')](_0x31d58e[_0xee18('0x3b')],{'$or':_[_0xee18('0x31')](_0x31d58e[_0xee18('0x36')],function(_0x1cfc82){var _0x1b9639={};_0x1b9639[_0x1cfc82]={'$like':'%'+_0x9547f9['query']['filter']+'%'};return _0x1b9639;})});}_0x31d58e=_['merge']({},_0x31d58e,_0x9547f9['options']);return _0x3366ea['getConfigurations'](_0x31d58e);}})[_0xee18('0x28')](function(_0x36dc85){if(_0x36dc85){_0x38aa32=_0x36dc85['length'];if(!_0x9547f9['query'][_0xee18('0x38')](_0xee18('0x39'))){_0x31d58e[_0xee18('0x21')]=qs[_0xee18('0x21')](_0x9547f9[_0xee18('0x32')][_0xee18('0x21')]);_0x31d58e['offset']=qs[_0xee18('0x1f')](_0x9547f9[_0xee18('0x32')][_0xee18('0x1f')]);}return _0x3366ea[_0xee18('0x4e')](_0x31d58e);}})[_0xee18('0x28')](function(_0x40577d){if(_0x40577d){return _0x40577d?{'count':_0x38aa32,'rows':_0x40577d}:null;}})[_0xee18('0x28')](respondWithResult(_0x4950c5,null))[_0xee18('0x49')](handleError(_0x4950c5,null));};exports[_0xee18('0x4f')]=function(_0x2e9c62,_0x38b77c,_0x29592d){if(_0x2e9c62[_0xee18('0x48')]['id']){delete _0x2e9c62[_0xee18('0x48')]['id'];}return db[_0xee18('0x2d')][_0xee18('0x4b')]({'where':{'id':_0x2e9c62[_0xee18('0x4c')]['id']}})[_0xee18('0x28')](handleEntityNotFound(_0x38b77c,null))[_0xee18('0x28')](function(_0x20f795){if(_0x20f795){_0x2e9c62[_0xee18('0x48')][_0xee18('0x50')]=_0x20f795['id'];_0x2e9c62[_0xee18('0x48')][_0xee18('0x51')]=integrations[_0xee18('0x52')](_0x2e9c62[_0xee18('0x48')][_0xee18('0x53')],_0x2e9c62[_0xee18('0x48')][_0xee18('0x2f')]);_0x2e9c62[_0xee18('0x48')][_0xee18('0x54')]=integrations[_0xee18('0x55')](_0x2e9c62[_0xee18('0x48')][_0xee18('0x53')],_0x2e9c62['body'][_0xee18('0x2f')]);return db[_0xee18('0x56')][_0xee18('0x47')](_0x2e9c62[_0xee18('0x48')],{'include':[{'model':db['VtigerField'],'as':_0xee18('0x51')},{'model':db[_0xee18('0x57')],'as':'Descriptions'}]});}return null;})[_0xee18('0x28')](respondWithResult(_0x38b77c,null))[_0xee18('0x49')](handleError(_0x38b77c,null));};var md5=require(_0xee18('0x58'));exports[_0xee18('0x59')]=function(_0x58343c,_0x4e1146,_0x58405e){var _0x31f135=null;var _0x5ae125=null;var _0x4ce52b=null;var _0xeb3269=null;var _0x4d4a82='';return db[_0xee18('0x2d')][_0xee18('0x4b')]({'where':{'id':_0x58343c[_0xee18('0x4c')]['id']},'attributes':['id',_0xee18('0x2b'),_0xee18('0x5a'),_0xee18('0x5b'),_0xee18('0x5c'),_0xee18('0x5d'),'serverUrl','accessKey']})['then'](handleEntityNotFound(_0x4e1146,null))[_0xee18('0x28')](function(_0x3e0177){if(_0x3e0177){_0x31f135=_0x3e0177[_0xee18('0x5a')];_0x5ae125=_0x3e0177[_0xee18('0x5e')];_0x4ce52b=_0x3e0177[_0xee18('0x5c')];_0x4d4a82=_0x3e0177[_0xee18('0x5d')];var _0xd436dd=_0x4d4a82[_0xee18('0x5f')](-0x1);if(_0xd436dd==='/'){_0x4d4a82=_0x4d4a82[_0xee18('0x60')](0x0,_0x4d4a82['lastIndexOf'](_0xd436dd));}_0xeb3269=util[_0xee18('0x61')](_0xee18('0x62'),_0x4d4a82);var _0x5de03e={'method':_0xee18('0x63'),'uri':_0xeb3269,'qs':{'operation':_0xee18('0x64'),'username':_0x3e0177[_0xee18('0x5a')]},'json':!![]};return rp(_0x5de03e);}})[_0xee18('0x28')](function(_0x2c9e18){if(_0x2c9e18[_0xee18('0x65')]){var _0x5cdebb={'method':'POST','uri':_0xeb3269,'form':{'operation':_0xee18('0x66'),'username':_0x31f135,'accessKey':md5(_0x2c9e18[_0xee18('0x67')][_0xee18('0x68')]+_0x5ae125)},'json':!![]};return rp(_0x5cdebb);}})['then'](function(_0x14b618){if(_0x14b618[_0xee18('0x65')]){var _0x1e345a={'method':_0xee18('0x63'),'uri':_0xeb3269,'qs':{'operation':_0xee18('0x69'),'username':_0x31f135,'sessionName':_0x14b618[_0xee18('0x67')]['sessionName'],'elementType':_0x4ce52b},'json':!![]};return rp(_0x1e345a);}})['then'](function(_0x106068){if(_0x106068[_0xee18('0x65')]){var _0x4d844e=['autogenerated','reference',_0xee18('0x6a')];_[_0xee18('0x6b')](_0x106068[_0xee18('0x67')]['fields'],function(_0x2a0a45){return _0x4d844e[_0xee18('0x6c')](_0x2a0a45['type'][_0xee18('0x2b')]);});_[_0xee18('0x6b')](_0x106068[_0xee18('0x67')][_0xee18('0x45')],function(_0x5d6a73){return _0x5d6a73['editable']===_0xee18('0x6d');});return{'count':_0x106068[_0xee18('0x67')][_0xee18('0x45')]['length'],'rows':_['map'](_0x106068[_0xee18('0x67')][_0xee18('0x45')],function(_0x1f8769){return{'id':_0x1f8769['name'],'name':_0x1f8769[_0xee18('0x6e')],'custom':_[_0xee18('0x6f')](_0x1f8769['name'],_0xee18('0x70'))?!![]:![],'options':_0x1f8769['type'][_0xee18('0x2b')]===_0xee18('0x71')&&_0x1f8769['type'][_0xee18('0x72')][_0xee18('0x37')]>0x0?_[_0xee18('0x31')](_0x1f8769[_0xee18('0x2f')][_0xee18('0x72')],function(_0xedf9eb){return{'name':_0xedf9eb[_0xee18('0x6e')],'value':_0xedf9eb[_0xee18('0x73')]};}):[]};})};}})[_0xee18('0x28')](respondWithResult(_0x4e1146,null))['catch'](function(_0x4a0da0){console[_0xee18('0x74')]('vTiger\x20error:\x20'+_0x4a0da0);var _0x1e3092=_0x58343c[_0xee18('0x32')][_0xee18('0x75')]?0x1f4:_0x4a0da0[_0xee18('0x76')]||0x1f4;logger[_0xee18('0x29')](_0xee18('0x77'),_0xee18('0x59'),_0x1e3092,JSON[_0xee18('0x78')](_0x4a0da0));delete _0x4a0da0[_0xee18('0x2b')];if(_0x1e3092===0x191){_0x1e3092=0x190;}_0x4e1146[_0xee18('0x1c')](_0x1e3092)[_0xee18('0x79')](_0x58343c[_0xee18('0x32')][_0xee18('0x75')]?{'message':'Wrong\x20credentials','statusCode':_0x4a0da0[_0xee18('0x76')]}:_0x4a0da0);});};
\ No newline at end of file
+var _0x374d=['slice','substring','format','%s/webservice.php','GET','getchallenge','login','result','token','success','describe','sessionName','autogenerated','owner','remove','includes','false','label','startsWith','picklist','picklistValues','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','name','map','VtigerAccount','rawAttributes','fieldName','type','key','keys','filters','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','find','getConfigurations','findOne','VtigerConfiguration','sort','filter','AccountId','getDescriptions','channel','VtigerField','Subjects','Descriptions','md5','getFields','username','description','remoteUri','serverUrl','accessKey','moduleName'];(function(_0x2d89ce,_0x24d58d){var _0x3fad10=function(_0xad0ec){while(--_0xad0ec){_0x2d89ce['push'](_0x2d89ce['shift']());}};_0x3fad10(++_0x24d58d);}(_0x374d,0x93));var _0xd374=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x374d[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require(_0xd374('0x0'));var rimraf=require(_0xd374('0x1'));var zipdir=require(_0xd374('0x2'));var jsonpatch=require(_0xd374('0x3'));var rp=require('request-promise');var moment=require(_0xd374('0x4'));var BPromise=require(_0xd374('0x5'));var Mustache=require(_0xd374('0x6'));var util=require(_0xd374('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd374('0x8'));var ejs=require(_0xd374('0x9'));var fs=require('fs');var fs_extra=require(_0xd374('0xa'));var _=require(_0xd374('0xb'));var squel=require(_0xd374('0xc'));var crypto=require(_0xd374('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd374('0x8'));var querystring=require('querystring');var Papa=require(_0xd374('0xe'));var Redis=require(_0xd374('0xf'));var authService=require(_0xd374('0x10'));var qs=require(_0xd374('0x11'));var as=require(_0xd374('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd374('0x13'))(_0xd374('0x14'));var utils=require(_0xd374('0x15'));var config=require(_0xd374('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd374('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x256878,_0x34e67c){_0x34e67c=_0x34e67c||0xcc;return function(_0x337d06){if(_0x337d06){return _0x256878[_0xd374('0x18')](_0x34e67c);}return _0x256878['status'](_0x34e67c)[_0xd374('0x19')]();};}function respondWithResult(_0x435de2,_0x5538b8){_0x5538b8=_0x5538b8||0xc8;return function(_0x5ba143){if(_0x5ba143){return _0x435de2[_0xd374('0x1a')](_0x5538b8)['json'](_0x5ba143);}};}function respondWithFilteredResult(_0x46c5ff,_0x155eb7){return function(_0x3604a6){if(_0x3604a6){var _0x3c8ca2=typeof _0x155eb7[_0xd374('0x1b')]===_0xd374('0x1c')&&typeof _0x155eb7['limit']===_0xd374('0x1c');var _0x4fb51a=_0x3604a6['count'];var _0xef031b=_0x3c8ca2?0x0:_0x155eb7[_0xd374('0x1b')];var _0x2cbb96=_0x3c8ca2?_0x3604a6[_0xd374('0x1d')]:_0x155eb7[_0xd374('0x1b')]+_0x155eb7[_0xd374('0x1e')];var _0x153a88;if(_0x2cbb96>=_0x4fb51a){_0x2cbb96=_0x4fb51a;_0x153a88=0xc8;}else{_0x153a88=0xce;}_0x46c5ff[_0xd374('0x1a')](_0x153a88);return _0x46c5ff['set'](_0xd374('0x1f'),_0xef031b+'-'+_0x2cbb96+'/'+_0x4fb51a)[_0xd374('0x20')](_0x3604a6);}return null;};}function patchUpdates(_0x5f2ec0){return function(_0x17722a){try{jsonpatch[_0xd374('0x21')](_0x17722a,_0x5f2ec0,!![]);}catch(_0x2d18af){return BPromise[_0xd374('0x22')](_0x2d18af);}return _0x17722a[_0xd374('0x23')]();};}function saveUpdates(_0x49562b,_0x1ec0fc){return function(_0x4be9f8){if(_0x4be9f8){return _0x4be9f8[_0xd374('0x24')](_0x49562b)[_0xd374('0x25')](function(_0x5e3419){return _0x5e3419;});}return null;};}function removeEntity(_0x177d1f,_0x3f24c3){return function(_0xf5af5c){if(_0xf5af5c){return _0xf5af5c[_0xd374('0x26')]()[_0xd374('0x25')](function(){_0x177d1f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x52175d,_0x49b54d){return function(_0x3a1857){if(!_0x3a1857){_0x52175d[_0xd374('0x18')](0x194);}return _0x3a1857;};}function handleError(_0x4d670e,_0x2eff4e){_0x2eff4e=_0x2eff4e||0x1f4;return function(_0x31e70a){logger[_0xd374('0x27')](_0x31e70a['stack']);if(_0x31e70a['name']){delete _0x31e70a[_0xd374('0x28')];}_0x4d670e['status'](_0x2eff4e)['send'](_0x31e70a);};}exports['index']=function(_0xb5208d,_0x1502e1){var _0x90feb3={},_0x3abb9d={},_0x7c03e3={'count':0x0,'rows':[]};var _0x4435d4=_[_0xd374('0x29')](db[_0xd374('0x2a')][_0xd374('0x2b')],function(_0x273269){return{'name':_0x273269[_0xd374('0x2c')],'type':_0x273269[_0xd374('0x2d')][_0xd374('0x2e')]};});_0x3abb9d['model']=_[_0xd374('0x29')](_0x4435d4,_0xd374('0x28'));_0x3abb9d['query']=_[_0xd374('0x2f')](_0xb5208d['query']);_0x3abb9d[_0xd374('0x30')]=_['intersection'](_0x3abb9d[_0xd374('0x31')],_0x3abb9d[_0xd374('0x32')]);_0x90feb3['attributes']=_[_0xd374('0x33')](_0x3abb9d[_0xd374('0x31')],qs[_0xd374('0x34')](_0xb5208d[_0xd374('0x32')][_0xd374('0x34')]));_0x90feb3['attributes']=_0x90feb3[_0xd374('0x35')][_0xd374('0x36')]?_0x90feb3['attributes']:_0x3abb9d[_0xd374('0x31')];if(!_0xb5208d[_0xd374('0x32')][_0xd374('0x37')](_0xd374('0x38'))){_0x90feb3[_0xd374('0x1e')]=qs[_0xd374('0x1e')](_0xb5208d[_0xd374('0x32')][_0xd374('0x1e')]);_0x90feb3[_0xd374('0x1b')]=qs[_0xd374('0x1b')](_0xb5208d['query'][_0xd374('0x1b')]);}_0x90feb3[_0xd374('0x39')]=qs['sort'](_0xb5208d[_0xd374('0x32')]['sort']);_0x90feb3[_0xd374('0x3a')]=qs[_0xd374('0x30')](_[_0xd374('0x3b')](_0xb5208d[_0xd374('0x32')],_0x3abb9d['filters']),_0x4435d4);if(_0xb5208d[_0xd374('0x32')]['filter']){_0x90feb3[_0xd374('0x3a')]=_[_0xd374('0x3c')](_0x90feb3[_0xd374('0x3a')],{'$or':_[_0xd374('0x29')](_0x4435d4,function(_0x273d29){if(_0x273d29[_0xd374('0x2d')]!==_0xd374('0x3d')){var _0x54276d={};_0x54276d[_0x273d29[_0xd374('0x28')]]={'$like':'%'+_0xb5208d[_0xd374('0x32')]['filter']+'%'};return _0x54276d;}})});}_0x90feb3=_['merge']({},_0x90feb3,_0xb5208d[_0xd374('0x3e')]);var _0x22c692={'where':_0x90feb3[_0xd374('0x3a')]};return db[_0xd374('0x2a')]['count'](_0x22c692)[_0xd374('0x25')](function(_0x356a9b){_0x7c03e3[_0xd374('0x1d')]=_0x356a9b;if(_0xb5208d['query'][_0xd374('0x3f')]){_0x90feb3[_0xd374('0x40')]=[{'all':!![]}];}return db[_0xd374('0x2a')]['findAll'](_0x90feb3);})[_0xd374('0x25')](function(_0x252d1f){_0x7c03e3[_0xd374('0x41')]=_0x252d1f;return _0x7c03e3;})[_0xd374('0x25')](respondWithFilteredResult(_0x1502e1,_0x90feb3))[_0xd374('0x42')](handleError(_0x1502e1,null));};exports[_0xd374('0x43')]=function(_0x17d3f9,_0x5a5337){var _0x104bb8={'raw':![],'where':{'id':_0x17d3f9[_0xd374('0x44')]['id']}},_0x2d3e25={};_0x2d3e25['model']=_[_0xd374('0x2f')](db['VtigerAccount']['rawAttributes']);_0x2d3e25[_0xd374('0x32')]=_['keys'](_0x17d3f9['query']);_0x2d3e25[_0xd374('0x30')]=_[_0xd374('0x33')](_0x2d3e25['model'],_0x2d3e25['query']);_0x104bb8[_0xd374('0x35')]=_['intersection'](_0x2d3e25['model'],qs['fields'](_0x17d3f9[_0xd374('0x32')]['fields']));_0x104bb8[_0xd374('0x35')]=_0x104bb8['attributes'][_0xd374('0x36')]?_0x104bb8[_0xd374('0x35')]:_0x2d3e25[_0xd374('0x31')];if(_0x17d3f9[_0xd374('0x32')][_0xd374('0x3f')]){_0x104bb8['include']=[{'all':!![]}];}_0x104bb8=_[_0xd374('0x3c')]({},_0x104bb8,_0x17d3f9[_0xd374('0x3e')]);return db['VtigerAccount']['find'](_0x104bb8)[_0xd374('0x25')](handleEntityNotFound(_0x5a5337,null))[_0xd374('0x25')](respondWithResult(_0x5a5337,null))[_0xd374('0x42')](handleError(_0x5a5337,null));};exports[_0xd374('0x45')]=function(_0x48a077,_0x7381fd){return db['VtigerAccount']['create'](_0x48a077[_0xd374('0x46')],{})[_0xd374('0x25')](respondWithResult(_0x7381fd,0xc9))['catch'](handleError(_0x7381fd,null));};exports[_0xd374('0x24')]=function(_0xc0bc25,_0x14d647){if(_0xc0bc25[_0xd374('0x46')]['id']){delete _0xc0bc25[_0xd374('0x46')]['id'];}return db[_0xd374('0x2a')]['find']({'where':{'id':_0xc0bc25[_0xd374('0x44')]['id']}})[_0xd374('0x25')](handleEntityNotFound(_0x14d647,null))[_0xd374('0x25')](saveUpdates(_0xc0bc25[_0xd374('0x46')],null))[_0xd374('0x25')](respondWithResult(_0x14d647,null))[_0xd374('0x42')](handleError(_0x14d647,null));};exports[_0xd374('0x26')]=function(_0xee143d,_0x5dda69){return db[_0xd374('0x2a')][_0xd374('0x47')]({'where':{'id':_0xee143d[_0xd374('0x44')]['id']}})[_0xd374('0x25')](handleEntityNotFound(_0x5dda69,null))['then'](removeEntity(_0x5dda69,null))[_0xd374('0x42')](handleError(_0x5dda69,null));};exports[_0xd374('0x48')]=function(_0x17be1e,_0x4bb3b2,_0x19704f){var _0x51dd76={};var _0x464b60={};var _0x1a5c63;var _0x117ef5;return db['VtigerAccount'][_0xd374('0x49')]({'where':{'id':_0x17be1e['params']['id']}})[_0xd374('0x25')](handleEntityNotFound(_0x4bb3b2,null))[_0xd374('0x25')](function(_0x54c2d4){if(_0x54c2d4){_0x1a5c63=_0x54c2d4;_0x464b60[_0xd374('0x31')]=_['keys'](db[_0xd374('0x4a')][_0xd374('0x2b')]);_0x464b60[_0xd374('0x32')]=_[_0xd374('0x2f')](_0x17be1e[_0xd374('0x32')]);_0x464b60['filters']=_[_0xd374('0x33')](_0x464b60['model'],_0x464b60[_0xd374('0x32')]);_0x51dd76['attributes']=_[_0xd374('0x33')](_0x464b60[_0xd374('0x31')],qs[_0xd374('0x34')](_0x17be1e[_0xd374('0x32')][_0xd374('0x34')]));_0x51dd76[_0xd374('0x35')]=_0x51dd76[_0xd374('0x35')][_0xd374('0x36')]?_0x51dd76[_0xd374('0x35')]:_0x464b60['model'];_0x51dd76[_0xd374('0x39')]=qs[_0xd374('0x4b')](_0x17be1e[_0xd374('0x32')]['sort']);_0x51dd76['where']=qs[_0xd374('0x30')](_[_0xd374('0x3b')](_0x17be1e[_0xd374('0x32')],_0x464b60['filters']));if(_0x17be1e[_0xd374('0x32')][_0xd374('0x4c')]){_0x51dd76[_0xd374('0x3a')]=_[_0xd374('0x3c')](_0x51dd76[_0xd374('0x3a')],{'$or':_[_0xd374('0x29')](_0x51dd76['attributes'],function(_0x294b30){var _0x5b9dd0={};_0x5b9dd0[_0x294b30]={'$like':'%'+_0x17be1e[_0xd374('0x32')][_0xd374('0x4c')]+'%'};return _0x5b9dd0;})});}_0x51dd76=_[_0xd374('0x3c')]({},_0x51dd76,_0x17be1e[_0xd374('0x3e')]);return _0x1a5c63['getConfigurations'](_0x51dd76);}})[_0xd374('0x25')](function(_0x4ecd8a){if(_0x4ecd8a){_0x117ef5=_0x4ecd8a['length'];if(!_0x17be1e['query']['hasOwnProperty'](_0xd374('0x38'))){_0x51dd76[_0xd374('0x1e')]=qs['limit'](_0x17be1e[_0xd374('0x32')]['limit']);_0x51dd76[_0xd374('0x1b')]=qs['offset'](_0x17be1e[_0xd374('0x32')][_0xd374('0x1b')]);}return _0x1a5c63[_0xd374('0x48')](_0x51dd76);}})['then'](function(_0x5a7113){if(_0x5a7113){return _0x5a7113?{'count':_0x117ef5,'rows':_0x5a7113}:null;}})[_0xd374('0x25')](respondWithResult(_0x4bb3b2,null))[_0xd374('0x42')](handleError(_0x4bb3b2,null));};exports['addConfiguration']=function(_0x2ed1ea,_0x5d287b,_0x3eeee2){if(_0x2ed1ea[_0xd374('0x46')]['id']){delete _0x2ed1ea[_0xd374('0x46')]['id'];}return db[_0xd374('0x2a')][_0xd374('0x49')]({'where':{'id':_0x2ed1ea['params']['id']}})[_0xd374('0x25')](handleEntityNotFound(_0x5d287b,null))[_0xd374('0x25')](function(_0x4f29cb){if(_0x4f29cb){_0x2ed1ea[_0xd374('0x46')][_0xd374('0x4d')]=_0x4f29cb['id'];_0x2ed1ea[_0xd374('0x46')]['Subjects']=integrations['getSubjects'](_0x2ed1ea[_0xd374('0x46')]['channel'],_0x2ed1ea[_0xd374('0x46')][_0xd374('0x2d')]);_0x2ed1ea[_0xd374('0x46')]['Descriptions']=integrations[_0xd374('0x4e')](_0x2ed1ea[_0xd374('0x46')][_0xd374('0x4f')],_0x2ed1ea['body'][_0xd374('0x2d')]);return db['VtigerConfiguration'][_0xd374('0x45')](_0x2ed1ea[_0xd374('0x46')],{'include':[{'model':db[_0xd374('0x50')],'as':_0xd374('0x51')},{'model':db[_0xd374('0x50')],'as':_0xd374('0x52')}]});}return null;})['then'](respondWithResult(_0x5d287b,null))[_0xd374('0x42')](handleError(_0x5d287b,null));};var md5=require(_0xd374('0x53'));exports[_0xd374('0x54')]=function(_0x5f5b86,_0x84814b,_0x367b94){var _0x1017dd=null;var _0x5dc89a=null;var _0x11288e=null;var _0x20b0dc=null;var _0x1ec076='';return db['VtigerAccount'][_0xd374('0x49')]({'where':{'id':_0x5f5b86[_0xd374('0x44')]['id']},'attributes':['id',_0xd374('0x28'),_0xd374('0x55'),_0xd374('0x56'),'moduleName',_0xd374('0x57'),_0xd374('0x58'),_0xd374('0x59')]})['then'](handleEntityNotFound(_0x84814b,null))[_0xd374('0x25')](function(_0x364a93){if(_0x364a93){_0x1017dd=_0x364a93[_0xd374('0x55')];_0x5dc89a=_0x364a93['accessKey'];_0x11288e=_0x364a93[_0xd374('0x5a')];_0x1ec076=_0x364a93[_0xd374('0x57')];var _0x5e8487=_0x1ec076[_0xd374('0x5b')](-0x1);if(_0x5e8487==='/'){_0x1ec076=_0x1ec076[_0xd374('0x5c')](0x0,_0x1ec076['lastIndexOf'](_0x5e8487));}_0x20b0dc=util[_0xd374('0x5d')](_0xd374('0x5e'),_0x1ec076);var _0x2174eb={'method':_0xd374('0x5f'),'uri':_0x20b0dc,'qs':{'operation':_0xd374('0x60'),'username':_0x364a93[_0xd374('0x55')]},'json':!![]};return rp(_0x2174eb);}})['then'](function(_0x51f0fd){if(_0x51f0fd['success']){var _0x17a19d={'method':'POST','uri':_0x20b0dc,'form':{'operation':_0xd374('0x61'),'username':_0x1017dd,'accessKey':md5(_0x51f0fd[_0xd374('0x62')][_0xd374('0x63')]+_0x5dc89a)},'json':!![]};return rp(_0x17a19d);}})[_0xd374('0x25')](function(_0x13cc99){if(_0x13cc99[_0xd374('0x64')]){var _0x377abd={'method':_0xd374('0x5f'),'uri':_0x20b0dc,'qs':{'operation':_0xd374('0x65'),'username':_0x1017dd,'sessionName':_0x13cc99[_0xd374('0x62')][_0xd374('0x66')],'elementType':_0x11288e},'json':!![]};return rp(_0x377abd);}})[_0xd374('0x25')](function(_0x180fad){if(_0x180fad[_0xd374('0x64')]){var _0x440a88=[_0xd374('0x67'),'reference',_0xd374('0x68')];_[_0xd374('0x69')](_0x180fad[_0xd374('0x62')][_0xd374('0x34')],function(_0x1440cf){return _0x440a88[_0xd374('0x6a')](_0x1440cf[_0xd374('0x2d')]['name']);});_[_0xd374('0x69')](_0x180fad[_0xd374('0x62')][_0xd374('0x34')],function(_0x2d70c6){return _0x2d70c6['editable']===_0xd374('0x6b');});return{'count':_0x180fad[_0xd374('0x62')][_0xd374('0x34')]['length'],'rows':_[_0xd374('0x29')](_0x180fad[_0xd374('0x62')][_0xd374('0x34')],function(_0x5e99b3){return{'id':_0x5e99b3['name'],'name':_0x5e99b3[_0xd374('0x6c')],'custom':_[_0xd374('0x6d')](_0x5e99b3['name'],'cf_')?!![]:![],'options':_0x5e99b3[_0xd374('0x2d')]['name']===_0xd374('0x6e')&&_0x5e99b3[_0xd374('0x2d')]['picklistValues'][_0xd374('0x36')]>0x0?_[_0xd374('0x29')](_0x5e99b3[_0xd374('0x2d')][_0xd374('0x6f')],function(_0x5d4931){return{'name':_0x5d4931[_0xd374('0x6c')],'value':_0x5d4931['value']};}):[]};})};}})[_0xd374('0x25')](respondWithResult(_0x84814b,null))[_0xd374('0x42')](function(_0x4b7e08){console[_0xd374('0x70')](_0xd374('0x71')+_0x4b7e08);var _0x485f22=_0x5f5b86[_0xd374('0x32')][_0xd374('0x72')]?0x1f4:_0x4b7e08[_0xd374('0x73')]||0x1f4;logger[_0xd374('0x27')](_0xd374('0x74'),_0xd374('0x54'),_0x485f22,JSON[_0xd374('0x75')](_0x4b7e08));delete _0x4b7e08['name'];if(_0x485f22===0x191){_0x485f22=0x190;}_0x84814b[_0xd374('0x1a')](_0x485f22)['send'](_0x5f5b86['query']['test']?{'message':_0xd374('0x76'),'statusCode':_0x4b7e08[_0xd374('0x73')]}:_0x4b7e08);});};
\ No newline at end of file
index 59f6305..dfb6355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe9e=['bluebird','request-promise','path','rimraf','define','int_vtiger_accounts','lodash','util','api'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0xbe9e,0x11d));var _0xebe9=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xbe9e[_0x160c73];return _0xd9302;};'use strict';var _=require(_0xebe9('0x0'));var util=require(_0xebe9('0x1'));var logger=require('../../config/logger')(_0xebe9('0x2'));var moment=require('moment');var BPromise=require(_0xebe9('0x3'));var rp=require(_0xebe9('0x4'));var fs=require('fs');var path=require(_0xebe9('0x5'));var rimraf=require(_0xebe9('0x6'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2ca911,_0x57fa32){return _0x2ca911[_0xebe9('0x7')]('VtigerAccount',attributes,{'tableName':_0xebe9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9df6=['moment','bluebird','request-promise','path','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','util','../../config/logger'];(function(_0xf1af27,_0x598bb1){var _0x46b274=function(_0x1dba43){while(--_0x1dba43){_0xf1af27['push'](_0xf1af27['shift']());}};_0x46b274(++_0x598bb1);}(_0x9df6,0xe2));var _0x69df=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x9df6[_0xf50820];return _0x2a9b10;};'use strict';var _=require('lodash');var util=require(_0x69df('0x0'));var logger=require(_0x69df('0x1'))('api');var moment=require(_0x69df('0x2'));var BPromise=require(_0x69df('0x3'));var rp=require(_0x69df('0x4'));var fs=require('fs');var path=require(_0x69df('0x5'));var rimraf=require('rimraf');var config=require(_0x69df('0x6'));var attributes=require(_0x69df('0x7'));var integrations=require(_0x69df('0x8'));module[_0x69df('0x9')]=function(_0x381120,_0x5a7567){return _0x381120[_0x69df('0xa')](_0x69df('0xb'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8341fad..fa3d5d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd914=['raw','where','attributes','limit','include','map','model','then','ShowVtigerAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVtigerAccount','VtigerAccount','options'];(function(_0x54fbff,_0x53470e){var _0x5cf619=function(_0x28765b){while(--_0x28765b){_0x54fbff['push'](_0x54fbff['shift']());}};_0x5cf619(++_0x53470e);}(_0xd914,0x17f));var _0x4d91=function(_0x1e4f2d,_0x22e2bb){_0x1e4f2d=_0x1e4f2d-0x0;var _0xd05ce5=_0xd914[_0x1e4f2d];return _0xd05ce5;};'use strict';var _=require(_0x4d91('0x0'));var util=require(_0x4d91('0x1'));var moment=require('moment');var BPromise=require(_0x4d91('0x2'));var rs=require(_0x4d91('0x3'));var fs=require('fs');var Redis=require(_0x4d91('0x4'));var db=require(_0x4d91('0x5'))['db'];var utils=require(_0x4d91('0x6'));var logger=require(_0x4d91('0x7'))('rpc');var config=require(_0x4d91('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4d91('0x9')][_0x4d91('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x175ce3,_0x27c0d5,_0x22f2a4){return new BPromise(function(_0x150767,_0x3016c0){return client[_0x4d91('0xb')](_0x175ce3,_0x22f2a4)['then'](function(_0x37bde4){logger[_0x4d91('0xc')](_0x4d91('0xd'),_0x27c0d5,_0x4d91('0xe'));logger[_0x4d91('0xf')](_0x4d91('0x10'),_0x27c0d5,'request\x20sent',JSON['stringify'](_0x37bde4));if(_0x37bde4[_0x4d91('0x11')]){if(_0x37bde4[_0x4d91('0x11')][_0x4d91('0x12')]===0x1f4){logger[_0x4d91('0x11')](_0x4d91('0xd'),_0x27c0d5,_0x37bde4[_0x4d91('0x11')]['message']);return _0x3016c0(_0x37bde4['error'][_0x4d91('0x13')]);}logger[_0x4d91('0x11')](_0x4d91('0xd'),_0x27c0d5,_0x37bde4[_0x4d91('0x11')][_0x4d91('0x13')]);return _0x150767(_0x37bde4[_0x4d91('0x11')][_0x4d91('0x13')]);}else{logger['info'](_0x4d91('0xd'),_0x27c0d5,_0x4d91('0xe'));_0x150767(_0x37bde4[_0x4d91('0x14')][_0x4d91('0x13')]);}})[_0x4d91('0x15')](function(_0x554ca8){logger[_0x4d91('0x11')](_0x4d91('0xd'),_0x27c0d5,_0x554ca8);_0x3016c0(_0x554ca8);});});}exports[_0x4d91('0x16')]=function(_0x44b9a7){var _0x4cfa40=this;return new Promise(function(_0x350e23,_0x3b579b){return db[_0x4d91('0x17')]['findAll']({'raw':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x19')]===undefined?!![]:![]:!![],'where':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x1a')]||null:null,'attributes':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x1b')]||null:null,'limit':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7['options'][_0x4d91('0x1c')]||null:null,'include':_0x44b9a7['options']?_0x44b9a7['options'][_0x4d91('0x1d')]?_[_0x4d91('0x1e')](_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x1d')],function(_0x7d8cbf){return{'model':db[_0x7d8cbf[_0x4d91('0x1f')]],'as':_0x7d8cbf['as'],'attributes':_0x7d8cbf[_0x4d91('0x1b')],'include':_0x7d8cbf[_0x4d91('0x1d')]?_['map'](_0x7d8cbf['include'],function(_0x1ee6b3){return{'model':db[_0x1ee6b3[_0x4d91('0x1f')]],'as':_0x1ee6b3['as'],'attributes':_0x1ee6b3[_0x4d91('0x1b')],'include':_0x1ee6b3[_0x4d91('0x1d')]?_[_0x4d91('0x1e')](_0x1ee6b3[_0x4d91('0x1d')],function(_0x14bdb4){return{'model':db[_0x14bdb4['model']],'as':_0x14bdb4['as'],'attributes':_0x14bdb4[_0x4d91('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4d91('0x20')](function(_0x12ac74){logger['info']('GetVtigerAccount',_0x44b9a7);logger[_0x4d91('0xf')](_0x4d91('0x16'),_0x44b9a7,JSON['stringify'](_0x12ac74));_0x350e23(_0x12ac74);})['catch'](function(_0x42d5a0){logger[_0x4d91('0x11')](_0x4d91('0x16'),_0x42d5a0[_0x4d91('0x13')],_0x44b9a7);_0x3b579b(_0x4cfa40['error'](0x1f4,_0x42d5a0[_0x4d91('0x13')]));});});};exports[_0x4d91('0x21')]=function(_0x468e95){var _0xee7535=this;return new Promise(function(_0xa63422,_0x3466f3){return db[_0x4d91('0x17')]['find']({'raw':_0x468e95[_0x4d91('0x18')]?_0x468e95['options']['raw']===undefined?!![]:![]:!![],'where':_0x468e95[_0x4d91('0x18')]?_0x468e95[_0x4d91('0x18')]['where']||null:null,'attributes':_0x468e95[_0x4d91('0x18')]?_0x468e95[_0x4d91('0x18')][_0x4d91('0x1b')]||null:null,'include':_0x468e95[_0x4d91('0x18')]?_0x468e95[_0x4d91('0x18')]['include']?_[_0x4d91('0x1e')](_0x468e95[_0x4d91('0x18')][_0x4d91('0x1d')],function(_0x2b8131){return{'model':db[_0x2b8131[_0x4d91('0x1f')]],'as':_0x2b8131['as'],'attributes':_0x2b8131[_0x4d91('0x1b')],'include':_0x2b8131['include']?_[_0x4d91('0x1e')](_0x2b8131[_0x4d91('0x1d')],function(_0x5c2247){return{'model':db[_0x5c2247[_0x4d91('0x1f')]],'as':_0x5c2247['as'],'attributes':_0x5c2247[_0x4d91('0x1b')],'include':_0x5c2247[_0x4d91('0x1d')]?_['map'](_0x5c2247[_0x4d91('0x1d')],function(_0x2c8b54){return{'model':db[_0x2c8b54[_0x4d91('0x1f')]],'as':_0x2c8b54['as'],'attributes':_0x2c8b54[_0x4d91('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x64cee3){logger[_0x4d91('0xc')](_0x4d91('0x21'),_0x468e95);logger[_0x4d91('0xf')]('ShowVtigerAccount',_0x468e95,JSON['stringify'](_0x64cee3));_0xa63422(_0x64cee3);})[_0x4d91('0x15')](function(_0x3dac76){logger['error'](_0x4d91('0x21'),_0x3dac76[_0x4d91('0x13')],_0x468e95);_0x3466f3(_0xee7535[_0x4d91('0x11')](0x1f4,_0x3dac76[_0x4d91('0x13')]));});});};
\ No newline at end of file
+var _0x7af2=['ShowVtigerAccount','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','error','message','VtigerAccount,\x20%s,\x20%s','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','where','attributes','limit','include','map','model','debug','stringify','find','raw'];(function(_0x20f873,_0xc81bcd){var _0x3595b9=function(_0x55fa63){while(--_0x55fa63){_0x20f873['push'](_0x20f873['shift']());}};_0x3595b9(++_0xc81bcd);}(_0x7af2,0x119));var _0x27af=function(_0x829d5d,_0x520c80){_0x829d5d=_0x829d5d-0x0;var _0x13df56=_0x7af2[_0x829d5d];return _0x13df56;};'use strict';var _=require('lodash');var util=require(_0x27af('0x0'));var moment=require(_0x27af('0x1'));var BPromise=require(_0x27af('0x2'));var rs=require(_0x27af('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x27af('0x4'))['db'];var utils=require(_0x27af('0x5'));var logger=require(_0x27af('0x6'))(_0x27af('0x7'));var config=require(_0x27af('0x8'));var jayson=require(_0x27af('0x9'));var client=jayson[_0x27af('0xa')][_0x27af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2193c6,_0x572219,_0x1e2509){return new BPromise(function(_0x366868,_0x389e97){return client['request'](_0x2193c6,_0x1e2509)[_0x27af('0xc')](function(_0xfa1882){logger[_0x27af('0xd')]('VtigerAccount,\x20%s,\x20%s',_0x572219,_0x27af('0xe'));logger['debug']('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x572219,_0x27af('0xe'),JSON['stringify'](_0xfa1882));if(_0xfa1882['error']){if(_0xfa1882[_0x27af('0xf')]['code']===0x1f4){logger[_0x27af('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x572219,_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);return _0x389e97(_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);}logger[_0x27af('0xf')](_0x27af('0x11'),_0x572219,_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);return _0x366868(_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);}else{logger[_0x27af('0xd')](_0x27af('0x11'),_0x572219,_0x27af('0xe'));_0x366868(_0xfa1882[_0x27af('0x12')][_0x27af('0x10')]);}})[_0x27af('0x13')](function(_0x13f8ed){logger[_0x27af('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x572219,_0x13f8ed);_0x389e97(_0x13f8ed);});});}exports[_0x27af('0x14')]=function(_0x31d702){var _0x5997ae=this;return new Promise(function(_0x4e6e2f,_0x20a6d7){return db[_0x27af('0x15')][_0x27af('0x16')]({'raw':_0x31d702[_0x27af('0x17')]?_0x31d702[_0x27af('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x31d702[_0x27af('0x17')]?_0x31d702[_0x27af('0x17')][_0x27af('0x18')]||null:null,'attributes':_0x31d702['options']?_0x31d702[_0x27af('0x17')][_0x27af('0x19')]||null:null,'limit':_0x31d702[_0x27af('0x17')]?_0x31d702['options'][_0x27af('0x1a')]||null:null,'include':_0x31d702[_0x27af('0x17')]?_0x31d702[_0x27af('0x17')][_0x27af('0x1b')]?_[_0x27af('0x1c')](_0x31d702[_0x27af('0x17')][_0x27af('0x1b')],function(_0x35b36d){return{'model':db[_0x35b36d[_0x27af('0x1d')]],'as':_0x35b36d['as'],'attributes':_0x35b36d['attributes'],'include':_0x35b36d['include']?_['map'](_0x35b36d[_0x27af('0x1b')],function(_0x4feaf1){return{'model':db[_0x4feaf1[_0x27af('0x1d')]],'as':_0x4feaf1['as'],'attributes':_0x4feaf1[_0x27af('0x19')],'include':_0x4feaf1['include']?_[_0x27af('0x1c')](_0x4feaf1[_0x27af('0x1b')],function(_0x463e36){return{'model':db[_0x463e36[_0x27af('0x1d')]],'as':_0x463e36['as'],'attributes':_0x463e36[_0x27af('0x19')]};}):[]};}):[]};}):[]:[]})[_0x27af('0xc')](function(_0x775d4e){logger['info'](_0x27af('0x14'),_0x31d702);logger[_0x27af('0x1e')](_0x27af('0x14'),_0x31d702,JSON[_0x27af('0x1f')](_0x775d4e));_0x4e6e2f(_0x775d4e);})[_0x27af('0x13')](function(_0xa08dd9){logger[_0x27af('0xf')](_0x27af('0x14'),_0xa08dd9[_0x27af('0x10')],_0x31d702);_0x20a6d7(_0x5997ae[_0x27af('0xf')](0x1f4,_0xa08dd9[_0x27af('0x10')]));});});};exports['ShowVtigerAccount']=function(_0x15e867){var _0x14b2e7=this;return new Promise(function(_0x3800a1,_0x575887){return db[_0x27af('0x15')][_0x27af('0x20')]({'raw':_0x15e867['options']?_0x15e867['options'][_0x27af('0x21')]===undefined?!![]:![]:!![],'where':_0x15e867[_0x27af('0x17')]?_0x15e867['options'][_0x27af('0x18')]||null:null,'attributes':_0x15e867[_0x27af('0x17')]?_0x15e867[_0x27af('0x17')][_0x27af('0x19')]||null:null,'include':_0x15e867[_0x27af('0x17')]?_0x15e867[_0x27af('0x17')][_0x27af('0x1b')]?_[_0x27af('0x1c')](_0x15e867[_0x27af('0x17')][_0x27af('0x1b')],function(_0x13c97d){return{'model':db[_0x13c97d['model']],'as':_0x13c97d['as'],'attributes':_0x13c97d['attributes'],'include':_0x13c97d[_0x27af('0x1b')]?_[_0x27af('0x1c')](_0x13c97d['include'],function(_0x2dd799){return{'model':db[_0x2dd799[_0x27af('0x1d')]],'as':_0x2dd799['as'],'attributes':_0x2dd799['attributes'],'include':_0x2dd799[_0x27af('0x1b')]?_[_0x27af('0x1c')](_0x2dd799[_0x27af('0x1b')],function(_0x329d06){return{'model':db[_0x329d06[_0x27af('0x1d')]],'as':_0x329d06['as'],'attributes':_0x329d06['attributes']};}):[]};}):[]};}):[]:[]})[_0x27af('0xc')](function(_0x468cea){logger['info']('ShowVtigerAccount',_0x15e867);logger[_0x27af('0x1e')](_0x27af('0x22'),_0x15e867,JSON[_0x27af('0x1f')](_0x468cea));_0x3800a1(_0x468cea);})[_0x27af('0x13')](function(_0x467891){logger[_0x27af('0xf')]('ShowVtigerAccount',_0x467891[_0x27af('0x10')],_0x15e867);_0x575887(_0x14b2e7['error'](0x1f4,_0x467891[_0x27af('0x10')]));});});};
\ No newline at end of file
index c9168c3..4cbd564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f9=['Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','/:id','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','multer','util'];(function(_0x295c8a,_0x3397c3){var _0xe7c3e9=function(_0x28fc1c){while(--_0x28fc1c){_0x295c8a['push'](_0x295c8a['shift']());}};_0xe7c3e9(++_0x3397c3);}(_0x19f9,0x18e));var _0x919f=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x19f9[_0x39096d];return _0x13da4f;};'use strict';var multer=require(_0x919f('0x0'));var util=require(_0x919f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x919f('0x2')]();var fs_extra=require(_0x919f('0x3'));var auth=require(_0x919f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x919f('0x5'));var controller=require(_0x919f('0x6'));router[_0x919f('0x7')]('/',auth[_0x919f('0x8')](),controller['index']);router[_0x919f('0x7')](_0x919f('0x9'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/fields',auth[_0x919f('0x8')](),controller[_0x919f('0xa')]);router[_0x919f('0x7')]('/:id/subjects',auth[_0x919f('0x8')](),controller[_0x919f('0xb')]);router[_0x919f('0x7')](_0x919f('0xc'),auth['isAuthenticated'](),controller[_0x919f('0xd')]);router[_0x919f('0xe')]('/',auth[_0x919f('0x8')](),controller[_0x919f('0xf')]);router[_0x919f('0x10')](_0x919f('0x9'),auth['isAuthenticated'](),controller[_0x919f('0x11')]);router[_0x919f('0x12')](_0x919f('0x9'),auth['isAuthenticated'](),controller[_0x919f('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x0a4f=['express','Router','../../components/auth/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','/:id','update','delete','exports','path','connect-timeout'];(function(_0x5a27ad,_0x50c945){var _0xe032f5=function(_0x176d2c){while(--_0x176d2c){_0x5a27ad['push'](_0x5a27ad['shift']());}};_0xe032f5(++_0x50c945);}(_0x0a4f,0xfb));var _0xf0a4=function(_0x4e1774,_0x233ab8){_0x4e1774=_0x4e1774-0x0;var _0x5118c2=_0x0a4f[_0x4e1774];return _0x5118c2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf0a4('0x0'));var timeout=require(_0xf0a4('0x1'));var express=require(_0xf0a4('0x2'));var router=express[_0xf0a4('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf0a4('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf0a4('0x5'));var controller=require(_0xf0a4('0x6'));router[_0xf0a4('0x7')]('/',auth[_0xf0a4('0x8')](),controller[_0xf0a4('0x9')]);router[_0xf0a4('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xf0a4('0xa')]);router['get'](_0xf0a4('0xb'),auth[_0xf0a4('0x8')](),controller[_0xf0a4('0xc')]);router['get'](_0xf0a4('0xd'),auth[_0xf0a4('0x8')](),controller[_0xf0a4('0xe')]);router[_0xf0a4('0x7')](_0xf0a4('0xf'),auth[_0xf0a4('0x8')](),controller[_0xf0a4('0x10')]);router[_0xf0a4('0x11')]('/',auth[_0xf0a4('0x8')](),controller[_0xf0a4('0x12')]);router['put'](_0xf0a4('0x13'),auth['isAuthenticated'](),controller[_0xf0a4('0x14')]);router[_0xf0a4('0x15')](_0xf0a4('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0xf0a4('0x16')]=router;
\ No newline at end of file
index 211ae16..02185c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54cd=['STRING','sequelize','exports'];(function(_0x389da3,_0x1208ed){var _0x5a8e6c=function(_0x1387d5){while(--_0x1387d5){_0x389da3['push'](_0x389da3['shift']());}};_0x5a8e6c(++_0x1208ed);}(_0x54cd,0x8b));var _0xd54c=function(_0x3c5b37,_0x160f35){_0x3c5b37=_0x3c5b37-0x0;var _0x49a7f5=_0x54cd[_0x3c5b37];return _0x49a7f5;};'use strict';var Sequelize=require(_0xd54c('0x0'));module[_0xd54c('0x1')]={'name':{'type':Sequelize[_0xd54c('0x2')]},'description':{'type':Sequelize[_0xd54c('0x2')]}};
\ No newline at end of file
+var _0x6513=['sequelize','STRING'];(function(_0xdd4a57,_0x3ef30a){var _0x37359f=function(_0x27a949){while(--_0x27a949){_0xdd4a57['push'](_0xdd4a57['shift']());}};_0x37359f(++_0x3ef30a);}(_0x6513,0x184));var _0x3651=function(_0x375126,_0x514a8e){_0x375126=_0x375126-0x0;var _0x1f76bb=_0x6513[_0x375126];return _0x1f76bb;};'use strict';var Sequelize=require(_0x3651('0x0'));module['exports']={'name':{'type':Sequelize[_0x3651('0x1')]},'description':{'type':Sequelize[_0x3651('0x1')]}};
\ No newline at end of file
index 52384f2..6dfef58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c91=['destroy','sendStatus','stack','name','index','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','where','pick','merge','map','VIRTUAL','filter','options','VtigerConfiguration','includeAll','include','findAll','rows','catch','length','find','create','body','params','VtigerField','sort','nolimit','findOne','getSubjects','getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','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/license/util','../../mysqldb','end','json','offset','undefined','count','limit','status','set','Content-Range','apply','update','then'];(function(_0x578fd9,_0x1be646){var _0x1661db=function(_0x145f53){while(--_0x145f53){_0x578fd9['push'](_0x578fd9['shift']());}};_0x1661db(++_0x1be646);}(_0x4c91,0x161));var _0x14c9=function(_0xb5c096,_0x5458a7){_0xb5c096=_0xb5c096-0x0;var _0x24f12b=_0x4c91[_0xb5c096];return _0x24f12b;};'use strict';var emlformat=require(_0x14c9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x14c9('0x1'));var rp=require(_0x14c9('0x2'));var moment=require(_0x14c9('0x3'));var BPromise=require(_0x14c9('0x4'));var Mustache=require(_0x14c9('0x5'));var util=require(_0x14c9('0x6'));var path=require('path');var sox=require(_0x14c9('0x7'));var csv=require(_0x14c9('0x8'));var ejs=require(_0x14c9('0x9'));var fs=require('fs');var fs_extra=require(_0x14c9('0xa'));var _=require(_0x14c9('0xb'));var squel=require('squel');var crypto=require(_0x14c9('0xc'));var jsforce=require(_0x14c9('0xd'));var deskjs=require(_0x14c9('0xe'));var toCsv=require(_0x14c9('0x8'));var querystring=require('querystring');var Papa=require(_0x14c9('0xf'));var Redis=require(_0x14c9('0x10'));var authService=require(_0x14c9('0x11'));var qs=require(_0x14c9('0x12'));var as=require(_0x14c9('0x13'));var hardwareService=require(_0x14c9('0x14'));var logger=require(_0x14c9('0x15'))(_0x14c9('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x14c9('0x17'));var db=require(_0x14c9('0x18'))['db'];function respondWithStatusCode(_0xd0a9ef,_0x277ff2){_0x277ff2=_0x277ff2||0xcc;return function(_0x1618a3){if(_0x1618a3){return _0xd0a9ef['sendStatus'](_0x277ff2);}return _0xd0a9ef['status'](_0x277ff2)[_0x14c9('0x19')]();};}function respondWithResult(_0x20a698,_0x4556b0){_0x4556b0=_0x4556b0||0xc8;return function(_0x1ce4bf){if(_0x1ce4bf){return _0x20a698['status'](_0x4556b0)[_0x14c9('0x1a')](_0x1ce4bf);}};}function respondWithFilteredResult(_0x46a16b,_0x45825a){return function(_0x5a403a){if(_0x5a403a){var _0x450264=typeof _0x45825a[_0x14c9('0x1b')]===_0x14c9('0x1c')&&typeof _0x45825a['limit']===_0x14c9('0x1c');var _0x44e987=_0x5a403a[_0x14c9('0x1d')];var _0x31fb97=_0x450264?0x0:_0x45825a[_0x14c9('0x1b')];var _0x45b259=_0x450264?_0x5a403a[_0x14c9('0x1d')]:_0x45825a['offset']+_0x45825a[_0x14c9('0x1e')];var _0x521035;if(_0x45b259>=_0x44e987){_0x45b259=_0x44e987;_0x521035=0xc8;}else{_0x521035=0xce;}_0x46a16b[_0x14c9('0x1f')](_0x521035);return _0x46a16b[_0x14c9('0x20')](_0x14c9('0x21'),_0x31fb97+'-'+_0x45b259+'/'+_0x44e987)[_0x14c9('0x1a')](_0x5a403a);}return null;};}function patchUpdates(_0x327aa2){return function(_0x250cff){try{jsonpatch[_0x14c9('0x22')](_0x250cff,_0x327aa2,!![]);}catch(_0xc4849d){return BPromise['reject'](_0xc4849d);}return _0x250cff['save']();};}function saveUpdates(_0x268d7b,_0x36abc8){return function(_0x14f1e4){if(_0x14f1e4){return _0x14f1e4[_0x14c9('0x23')](_0x268d7b)[_0x14c9('0x24')](function(_0x6b3f43){return _0x6b3f43;});}return null;};}function removeEntity(_0x58c2f5,_0x14d002){return function(_0x40cad4){if(_0x40cad4){return _0x40cad4[_0x14c9('0x25')]()[_0x14c9('0x24')](function(){_0x58c2f5['status'](0xcc)[_0x14c9('0x19')]();});}};}function handleEntityNotFound(_0x6df087,_0x252995){return function(_0x4fca82){if(!_0x4fca82){_0x6df087[_0x14c9('0x26')](0x194);}return _0x4fca82;};}function handleError(_0x3c3432,_0x1cccae){_0x1cccae=_0x1cccae||0x1f4;return function(_0x3984bf){logger['error'](_0x3984bf[_0x14c9('0x27')]);if(_0x3984bf[_0x14c9('0x28')]){delete _0x3984bf[_0x14c9('0x28')];}_0x3c3432[_0x14c9('0x1f')](_0x1cccae)['send'](_0x3984bf);};}exports[_0x14c9('0x29')]=function(_0x18008a,_0x224ff3){var _0x4a39f2={},_0x544767={},_0x7f394e={'count':0x0,'rows':[]};var _0x2911df=_['map'](db['VtigerConfiguration'][_0x14c9('0x2a')],function(_0x330437){return{'name':_0x330437[_0x14c9('0x2b')],'type':_0x330437[_0x14c9('0x2c')]['key']};});_0x544767[_0x14c9('0x2d')]=_['map'](_0x2911df,_0x14c9('0x28'));_0x544767['query']=_[_0x14c9('0x2e')](_0x18008a[_0x14c9('0x2f')]);_0x544767[_0x14c9('0x30')]=_[_0x14c9('0x31')](_0x544767[_0x14c9('0x2d')],_0x544767['query']);_0x4a39f2['attributes']=_[_0x14c9('0x31')](_0x544767[_0x14c9('0x2d')],qs['fields'](_0x18008a['query'][_0x14c9('0x32')]));_0x4a39f2[_0x14c9('0x33')]=_0x4a39f2['attributes']['length']?_0x4a39f2[_0x14c9('0x33')]:_0x544767[_0x14c9('0x2d')];if(!_0x18008a[_0x14c9('0x2f')][_0x14c9('0x34')]('nolimit')){_0x4a39f2[_0x14c9('0x1e')]=qs[_0x14c9('0x1e')](_0x18008a['query'][_0x14c9('0x1e')]);_0x4a39f2[_0x14c9('0x1b')]=qs[_0x14c9('0x1b')](_0x18008a[_0x14c9('0x2f')]['offset']);}_0x4a39f2[_0x14c9('0x35')]=qs['sort'](_0x18008a[_0x14c9('0x2f')]['sort']);_0x4a39f2[_0x14c9('0x36')]=qs[_0x14c9('0x30')](_[_0x14c9('0x37')](_0x18008a[_0x14c9('0x2f')],_0x544767[_0x14c9('0x30')]),_0x2911df);if(_0x18008a['query']['filter']){_0x4a39f2[_0x14c9('0x36')]=_[_0x14c9('0x38')](_0x4a39f2[_0x14c9('0x36')],{'$or':_[_0x14c9('0x39')](_0x2911df,function(_0x513f28){if(_0x513f28[_0x14c9('0x2c')]!==_0x14c9('0x3a')){var _0x25b8aa={};_0x25b8aa[_0x513f28['name']]={'$like':'%'+_0x18008a[_0x14c9('0x2f')][_0x14c9('0x3b')]+'%'};return _0x25b8aa;}})});}_0x4a39f2=_[_0x14c9('0x38')]({},_0x4a39f2,_0x18008a[_0x14c9('0x3c')]);var _0x1e0476={'where':_0x4a39f2[_0x14c9('0x36')]};return db[_0x14c9('0x3d')]['count'](_0x1e0476)[_0x14c9('0x24')](function(_0x332182){_0x7f394e[_0x14c9('0x1d')]=_0x332182;if(_0x18008a['query'][_0x14c9('0x3e')]){_0x4a39f2[_0x14c9('0x3f')]=[{'all':!![]}];}return db[_0x14c9('0x3d')][_0x14c9('0x40')](_0x4a39f2);})[_0x14c9('0x24')](function(_0x5f3c70){_0x7f394e[_0x14c9('0x41')]=_0x5f3c70;return _0x7f394e;})['then'](respondWithFilteredResult(_0x224ff3,_0x4a39f2))[_0x14c9('0x42')](handleError(_0x224ff3,null));};exports['show']=function(_0x55b384,_0x584dc7){var _0x320f52={'raw':![],'where':{'id':_0x55b384['params']['id']}},_0x3e67af={};_0x3e67af[_0x14c9('0x2d')]=_[_0x14c9('0x2e')](db[_0x14c9('0x3d')][_0x14c9('0x2a')]);_0x3e67af['query']=_[_0x14c9('0x2e')](_0x55b384['query']);_0x3e67af[_0x14c9('0x30')]=_['intersection'](_0x3e67af[_0x14c9('0x2d')],_0x3e67af['query']);_0x320f52['attributes']=_['intersection'](_0x3e67af[_0x14c9('0x2d')],qs[_0x14c9('0x32')](_0x55b384['query'][_0x14c9('0x32')]));_0x320f52[_0x14c9('0x33')]=_0x320f52[_0x14c9('0x33')][_0x14c9('0x43')]?_0x320f52['attributes']:_0x3e67af[_0x14c9('0x2d')];if(_0x55b384[_0x14c9('0x2f')][_0x14c9('0x3e')]){_0x320f52[_0x14c9('0x3f')]=[{'all':!![]}];}_0x320f52=_[_0x14c9('0x38')]({},_0x320f52,_0x55b384[_0x14c9('0x3c')]);return db[_0x14c9('0x3d')][_0x14c9('0x44')](_0x320f52)[_0x14c9('0x24')](handleEntityNotFound(_0x584dc7,null))[_0x14c9('0x24')](respondWithResult(_0x584dc7,null))[_0x14c9('0x42')](handleError(_0x584dc7,null));};exports['create']=function(_0xc4bf36,_0x552245){return db[_0x14c9('0x3d')][_0x14c9('0x45')](_0xc4bf36[_0x14c9('0x46')],{})['then'](respondWithResult(_0x552245,0xc9))['catch'](handleError(_0x552245,null));};exports[_0x14c9('0x23')]=function(_0x56276c,_0x3979dd){if(_0x56276c['body']['id']){delete _0x56276c[_0x14c9('0x46')]['id'];}return db[_0x14c9('0x3d')][_0x14c9('0x44')]({'where':{'id':_0x56276c[_0x14c9('0x47')]['id']}})[_0x14c9('0x24')](handleEntityNotFound(_0x3979dd,null))[_0x14c9('0x24')](saveUpdates(_0x56276c[_0x14c9('0x46')],null))[_0x14c9('0x24')](respondWithResult(_0x3979dd,null))[_0x14c9('0x42')](handleError(_0x3979dd,null));};exports[_0x14c9('0x25')]=function(_0x15077a,_0x50560c){return db[_0x14c9('0x3d')]['find']({'where':{'id':_0x15077a[_0x14c9('0x47')]['id']}})[_0x14c9('0x24')](handleEntityNotFound(_0x50560c,null))[_0x14c9('0x24')](removeEntity(_0x50560c,null))[_0x14c9('0x42')](handleError(_0x50560c,null));};exports['getFields']=function(_0x2493ac,_0x1170d7,_0x2c3dce){var _0x4c5765={};var _0x336e78={};var _0x8c586f;var _0x85eb19;return db[_0x14c9('0x3d')]['findOne']({'where':{'id':_0x2493ac[_0x14c9('0x47')]['id']}})[_0x14c9('0x24')](handleEntityNotFound(_0x1170d7,null))[_0x14c9('0x24')](function(_0x5393b){if(_0x5393b){_0x8c586f=_0x5393b;_0x336e78[_0x14c9('0x2d')]=_[_0x14c9('0x2e')](db[_0x14c9('0x48')][_0x14c9('0x2a')]);_0x336e78[_0x14c9('0x2f')]=_[_0x14c9('0x2e')](_0x2493ac['query']);_0x336e78[_0x14c9('0x30')]=_[_0x14c9('0x31')](_0x336e78['model'],_0x336e78[_0x14c9('0x2f')]);_0x4c5765[_0x14c9('0x33')]=_[_0x14c9('0x31')](_0x336e78[_0x14c9('0x2d')],qs[_0x14c9('0x32')](_0x2493ac[_0x14c9('0x2f')][_0x14c9('0x32')]));_0x4c5765[_0x14c9('0x33')]=_0x4c5765[_0x14c9('0x33')][_0x14c9('0x43')]?_0x4c5765[_0x14c9('0x33')]:_0x336e78['model'];_0x4c5765[_0x14c9('0x35')]=qs[_0x14c9('0x49')](_0x2493ac['query']['sort']);_0x4c5765[_0x14c9('0x36')]=qs[_0x14c9('0x30')](_[_0x14c9('0x37')](_0x2493ac[_0x14c9('0x2f')],_0x336e78[_0x14c9('0x30')]));if(_0x2493ac['query'][_0x14c9('0x3b')]){_0x4c5765[_0x14c9('0x36')]=_[_0x14c9('0x38')](_0x4c5765[_0x14c9('0x36')],{'$or':_[_0x14c9('0x39')](_0x4c5765['attributes'],function(_0x33e911){var _0x460e66={};_0x460e66[_0x33e911]={'$like':'%'+_0x2493ac[_0x14c9('0x2f')][_0x14c9('0x3b')]+'%'};return _0x460e66;})});}_0x4c5765=_[_0x14c9('0x38')]({},_0x4c5765,_0x2493ac[_0x14c9('0x3c')]);return _0x8c586f['getFields'](_0x4c5765);}})['then'](function(_0x5cf456){if(_0x5cf456){_0x85eb19=_0x5cf456['length'];if(!_0x2493ac[_0x14c9('0x2f')][_0x14c9('0x34')](_0x14c9('0x4a'))){_0x4c5765['limit']=qs[_0x14c9('0x1e')](_0x2493ac[_0x14c9('0x2f')][_0x14c9('0x1e')]);_0x4c5765['offset']=qs[_0x14c9('0x1b')](_0x2493ac['query'][_0x14c9('0x1b')]);}return _0x8c586f['getFields'](_0x4c5765);}})[_0x14c9('0x24')](function(_0x583cc0){if(_0x583cc0){return _0x583cc0?{'count':_0x85eb19,'rows':_0x583cc0}:null;}})[_0x14c9('0x24')](respondWithResult(_0x1170d7,null))[_0x14c9('0x42')](handleError(_0x1170d7,null));};exports['getSubjects']=function(_0x1c12ba,_0x2b142b,_0x52758f){var _0x1253c6={};var _0x449220={};var _0x51e77f;var _0x212c65;return db['VtigerConfiguration'][_0x14c9('0x4b')]({'where':{'id':_0x1c12ba['params']['id']}})['then'](handleEntityNotFound(_0x2b142b,null))[_0x14c9('0x24')](function(_0x210df5){if(_0x210df5){_0x51e77f=_0x210df5;_0x449220['model']=_[_0x14c9('0x2e')](db['VtigerField'][_0x14c9('0x2a')]);_0x449220['query']=_[_0x14c9('0x2e')](_0x1c12ba[_0x14c9('0x2f')]);_0x449220[_0x14c9('0x30')]=_[_0x14c9('0x31')](_0x449220[_0x14c9('0x2d')],_0x449220[_0x14c9('0x2f')]);_0x1253c6[_0x14c9('0x33')]=_[_0x14c9('0x31')](_0x449220[_0x14c9('0x2d')],qs[_0x14c9('0x32')](_0x1c12ba['query'][_0x14c9('0x32')]));_0x1253c6[_0x14c9('0x33')]=_0x1253c6[_0x14c9('0x33')][_0x14c9('0x43')]?_0x1253c6[_0x14c9('0x33')]:_0x449220[_0x14c9('0x2d')];_0x1253c6[_0x14c9('0x35')]=qs[_0x14c9('0x49')](_0x1c12ba[_0x14c9('0x2f')][_0x14c9('0x49')]);_0x1253c6[_0x14c9('0x36')]=qs['filters'](_[_0x14c9('0x37')](_0x1c12ba[_0x14c9('0x2f')],_0x449220[_0x14c9('0x30')]));if(_0x1c12ba[_0x14c9('0x2f')][_0x14c9('0x3b')]){_0x1253c6[_0x14c9('0x36')]=_[_0x14c9('0x38')](_0x1253c6[_0x14c9('0x36')],{'$or':_[_0x14c9('0x39')](_0x1253c6['attributes'],function(_0x5b6008){var _0x5e8151={};_0x5e8151[_0x5b6008]={'$like':'%'+_0x1c12ba[_0x14c9('0x2f')][_0x14c9('0x3b')]+'%'};return _0x5e8151;})});}_0x1253c6=_['merge']({},_0x1253c6,_0x1c12ba[_0x14c9('0x3c')]);return _0x51e77f[_0x14c9('0x4c')](_0x1253c6);}})[_0x14c9('0x24')](function(_0x73afb1){if(_0x73afb1){_0x212c65=_0x73afb1[_0x14c9('0x43')];if(!_0x1c12ba[_0x14c9('0x2f')]['hasOwnProperty'](_0x14c9('0x4a'))){_0x1253c6[_0x14c9('0x1e')]=qs['limit'](_0x1c12ba['query'][_0x14c9('0x1e')]);_0x1253c6[_0x14c9('0x1b')]=qs[_0x14c9('0x1b')](_0x1c12ba[_0x14c9('0x2f')][_0x14c9('0x1b')]);}return _0x51e77f[_0x14c9('0x4c')](_0x1253c6);}})[_0x14c9('0x24')](function(_0x287514){if(_0x287514){return _0x287514?{'count':_0x212c65,'rows':_0x287514}:null;}})[_0x14c9('0x24')](respondWithResult(_0x2b142b,null))['catch'](handleError(_0x2b142b,null));};exports[_0x14c9('0x4d')]=function(_0x131a96,_0x28a1ec,_0xefdd4c){var _0x2d49c1={};var _0x1153fe={};var _0x5730a2;var _0x3c6915;return db['VtigerConfiguration'][_0x14c9('0x4b')]({'where':{'id':_0x131a96['params']['id']}})[_0x14c9('0x24')](handleEntityNotFound(_0x28a1ec,null))['then'](function(_0x4b5b00){if(_0x4b5b00){_0x5730a2=_0x4b5b00;_0x1153fe[_0x14c9('0x2d')]=_[_0x14c9('0x2e')](db[_0x14c9('0x48')][_0x14c9('0x2a')]);_0x1153fe[_0x14c9('0x2f')]=_['keys'](_0x131a96[_0x14c9('0x2f')]);_0x1153fe[_0x14c9('0x30')]=_[_0x14c9('0x31')](_0x1153fe[_0x14c9('0x2d')],_0x1153fe[_0x14c9('0x2f')]);_0x2d49c1[_0x14c9('0x33')]=_[_0x14c9('0x31')](_0x1153fe[_0x14c9('0x2d')],qs['fields'](_0x131a96['query'][_0x14c9('0x32')]));_0x2d49c1['attributes']=_0x2d49c1['attributes']['length']?_0x2d49c1[_0x14c9('0x33')]:_0x1153fe[_0x14c9('0x2d')];_0x2d49c1[_0x14c9('0x35')]=qs[_0x14c9('0x49')](_0x131a96['query'][_0x14c9('0x49')]);_0x2d49c1[_0x14c9('0x36')]=qs[_0x14c9('0x30')](_[_0x14c9('0x37')](_0x131a96['query'],_0x1153fe[_0x14c9('0x30')]));if(_0x131a96[_0x14c9('0x2f')]['filter']){_0x2d49c1['where']=_['merge'](_0x2d49c1[_0x14c9('0x36')],{'$or':_[_0x14c9('0x39')](_0x2d49c1['attributes'],function(_0x5367c1){var _0xd62f8e={};_0xd62f8e[_0x5367c1]={'$like':'%'+_0x131a96['query']['filter']+'%'};return _0xd62f8e;})});}_0x2d49c1=_[_0x14c9('0x38')]({},_0x2d49c1,_0x131a96[_0x14c9('0x3c')]);return _0x5730a2['getDescriptions'](_0x2d49c1);}})[_0x14c9('0x24')](function(_0x21a177){if(_0x21a177){_0x3c6915=_0x21a177['length'];if(!_0x131a96[_0x14c9('0x2f')][_0x14c9('0x34')]('nolimit')){_0x2d49c1[_0x14c9('0x1e')]=qs[_0x14c9('0x1e')](_0x131a96[_0x14c9('0x2f')][_0x14c9('0x1e')]);_0x2d49c1[_0x14c9('0x1b')]=qs[_0x14c9('0x1b')](_0x131a96['query'][_0x14c9('0x1b')]);}return _0x5730a2[_0x14c9('0x4d')](_0x2d49c1);}})[_0x14c9('0x24')](function(_0x54b177){if(_0x54b177){return _0x54b177?{'count':_0x3c6915,'rows':_0x54b177}:null;}})[_0x14c9('0x24')](respondWithResult(_0x28a1ec,null))[_0x14c9('0x42')](handleError(_0x28a1ec,null));};
\ No newline at end of file
+var _0x69d5=['sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','offset','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','params','length','includeAll','find','create','update','body','findOne','getFields','hasOwnProperty','getSubjects','getDescriptions','VtigerField','order','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path'];(function(_0x233e5e,_0x11731f){var _0x1bc410=function(_0x6fadcf){while(--_0x6fadcf){_0x233e5e['push'](_0x233e5e['shift']());}};_0x1bc410(++_0x11731f);}(_0x69d5,0x18e));var _0x569d=function(_0x3bec7b,_0x14cdef){_0x3bec7b=_0x3bec7b-0x0;var _0x21d101=_0x69d5[_0x3bec7b];return _0x21d101;};'use strict';var emlformat=require(_0x569d('0x0'));var rimraf=require(_0x569d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x569d('0x2'));var rp=require(_0x569d('0x3'));var moment=require('moment');var BPromise=require(_0x569d('0x4'));var Mustache=require('mustache');var util=require(_0x569d('0x5'));var path=require(_0x569d('0x6'));var sox=require(_0x569d('0x7'));var csv=require(_0x569d('0x8'));var ejs=require(_0x569d('0x9'));var fs=require('fs');var fs_extra=require(_0x569d('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x569d('0xb'));var jsforce=require(_0x569d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x569d('0xd'));var Papa=require(_0x569d('0xe'));var Redis=require(_0x569d('0xf'));var authService=require(_0x569d('0x10'));var qs=require(_0x569d('0x11'));var as=require(_0x569d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x569d('0x13'))(_0x569d('0x14'));var utils=require(_0x569d('0x15'));var config=require(_0x569d('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3cbc8a,_0x2f6c3e){_0x2f6c3e=_0x2f6c3e||0xcc;return function(_0x268b8a){if(_0x268b8a){return _0x3cbc8a[_0x569d('0x17')](_0x2f6c3e);}return _0x3cbc8a[_0x569d('0x18')](_0x2f6c3e)[_0x569d('0x19')]();};}function respondWithResult(_0x11fa12,_0x2573be){_0x2573be=_0x2573be||0xc8;return function(_0x4a8738){if(_0x4a8738){return _0x11fa12[_0x569d('0x18')](_0x2573be)[_0x569d('0x1a')](_0x4a8738);}};}function respondWithFilteredResult(_0x407113,_0x43e60e){return function(_0x11ffd2){if(_0x11ffd2){var _0x5e30b3=typeof _0x43e60e['offset']===_0x569d('0x1b')&&typeof _0x43e60e[_0x569d('0x1c')]===_0x569d('0x1b');var _0x5d1102=_0x11ffd2[_0x569d('0x1d')];var _0x4775cd=_0x5e30b3?0x0:_0x43e60e['offset'];var _0xef3b29=_0x5e30b3?_0x11ffd2[_0x569d('0x1d')]:_0x43e60e['offset']+_0x43e60e[_0x569d('0x1c')];var _0x5d04a0;if(_0xef3b29>=_0x5d1102){_0xef3b29=_0x5d1102;_0x5d04a0=0xc8;}else{_0x5d04a0=0xce;}_0x407113[_0x569d('0x18')](_0x5d04a0);return _0x407113[_0x569d('0x1e')](_0x569d('0x1f'),_0x4775cd+'-'+_0xef3b29+'/'+_0x5d1102)[_0x569d('0x1a')](_0x11ffd2);}return null;};}function patchUpdates(_0x5f18a2){return function(_0xbd161){try{jsonpatch[_0x569d('0x20')](_0xbd161,_0x5f18a2,!![]);}catch(_0x15727f){return BPromise[_0x569d('0x21')](_0x15727f);}return _0xbd161[_0x569d('0x22')]();};}function saveUpdates(_0x3ecf0b,_0x5794f5){return function(_0x433f69){if(_0x433f69){return _0x433f69['update'](_0x3ecf0b)[_0x569d('0x23')](function(_0x4f4868){return _0x4f4868;});}return null;};}function removeEntity(_0x59863b,_0xc01c8b){return function(_0x236019){if(_0x236019){return _0x236019[_0x569d('0x24')]()['then'](function(){_0x59863b[_0x569d('0x18')](0xcc)[_0x569d('0x19')]();});}};}function handleEntityNotFound(_0x224039,_0x3472d4){return function(_0x69249a){if(!_0x69249a){_0x224039[_0x569d('0x17')](0x194);}return _0x69249a;};}function handleError(_0x4df09c,_0x5ed184){_0x5ed184=_0x5ed184||0x1f4;return function(_0x24b70f){logger['error'](_0x24b70f[_0x569d('0x25')]);if(_0x24b70f['name']){delete _0x24b70f[_0x569d('0x26')];}_0x4df09c[_0x569d('0x18')](_0x5ed184)[_0x569d('0x27')](_0x24b70f);};}exports[_0x569d('0x28')]=function(_0x3d23bb,_0x2c4273){var _0x551bcc={},_0x4bfd55={},_0x30d202={'count':0x0,'rows':[]};var _0x3f88be=_[_0x569d('0x29')](db[_0x569d('0x2a')][_0x569d('0x2b')],function(_0x27e113){return{'name':_0x27e113[_0x569d('0x2c')],'type':_0x27e113['type'][_0x569d('0x2d')]};});_0x4bfd55[_0x569d('0x2e')]=_[_0x569d('0x29')](_0x3f88be,'name');_0x4bfd55[_0x569d('0x2f')]=_[_0x569d('0x30')](_0x3d23bb['query']);_0x4bfd55[_0x569d('0x31')]=_[_0x569d('0x32')](_0x4bfd55[_0x569d('0x2e')],_0x4bfd55['query']);_0x551bcc[_0x569d('0x33')]=_['intersection'](_0x4bfd55[_0x569d('0x2e')],qs[_0x569d('0x34')](_0x3d23bb[_0x569d('0x2f')]['fields']));_0x551bcc['attributes']=_0x551bcc[_0x569d('0x33')]['length']?_0x551bcc[_0x569d('0x33')]:_0x4bfd55[_0x569d('0x2e')];if(!_0x3d23bb[_0x569d('0x2f')]['hasOwnProperty'](_0x569d('0x35'))){_0x551bcc[_0x569d('0x1c')]=qs[_0x569d('0x1c')](_0x3d23bb[_0x569d('0x2f')][_0x569d('0x1c')]);_0x551bcc[_0x569d('0x36')]=qs['offset'](_0x3d23bb['query'][_0x569d('0x36')]);}_0x551bcc['order']=qs[_0x569d('0x37')](_0x3d23bb[_0x569d('0x2f')][_0x569d('0x37')]);_0x551bcc[_0x569d('0x38')]=qs[_0x569d('0x31')](_[_0x569d('0x39')](_0x3d23bb[_0x569d('0x2f')],_0x4bfd55[_0x569d('0x31')]),_0x3f88be);if(_0x3d23bb[_0x569d('0x2f')][_0x569d('0x3a')]){_0x551bcc[_0x569d('0x38')]=_['merge'](_0x551bcc[_0x569d('0x38')],{'$or':_[_0x569d('0x29')](_0x3f88be,function(_0x4f064b){if(_0x4f064b[_0x569d('0x3b')]!==_0x569d('0x3c')){var _0x252d90={};_0x252d90[_0x4f064b['name']]={'$like':'%'+_0x3d23bb[_0x569d('0x2f')][_0x569d('0x3a')]+'%'};return _0x252d90;}})});}_0x551bcc=_[_0x569d('0x3d')]({},_0x551bcc,_0x3d23bb[_0x569d('0x3e')]);var _0x324532={'where':_0x551bcc[_0x569d('0x38')]};return db['VtigerConfiguration'][_0x569d('0x1d')](_0x324532)['then'](function(_0x17756c){_0x30d202['count']=_0x17756c;if(_0x3d23bb[_0x569d('0x2f')]['includeAll']){_0x551bcc[_0x569d('0x3f')]=[{'all':!![]}];}return db[_0x569d('0x2a')][_0x569d('0x40')](_0x551bcc);})[_0x569d('0x23')](function(_0x1b3ed9){_0x30d202[_0x569d('0x41')]=_0x1b3ed9;return _0x30d202;})[_0x569d('0x23')](respondWithFilteredResult(_0x2c4273,_0x551bcc))[_0x569d('0x42')](handleError(_0x2c4273,null));};exports['show']=function(_0x245743,_0x4c404a){var _0x4cad5a={'raw':![],'where':{'id':_0x245743[_0x569d('0x43')]['id']}},_0x277054={};_0x277054[_0x569d('0x2e')]=_[_0x569d('0x30')](db[_0x569d('0x2a')][_0x569d('0x2b')]);_0x277054['query']=_[_0x569d('0x30')](_0x245743[_0x569d('0x2f')]);_0x277054[_0x569d('0x31')]=_['intersection'](_0x277054['model'],_0x277054[_0x569d('0x2f')]);_0x4cad5a['attributes']=_[_0x569d('0x32')](_0x277054[_0x569d('0x2e')],qs[_0x569d('0x34')](_0x245743[_0x569d('0x2f')][_0x569d('0x34')]));_0x4cad5a[_0x569d('0x33')]=_0x4cad5a[_0x569d('0x33')][_0x569d('0x44')]?_0x4cad5a['attributes']:_0x277054[_0x569d('0x2e')];if(_0x245743['query'][_0x569d('0x45')]){_0x4cad5a[_0x569d('0x3f')]=[{'all':!![]}];}_0x4cad5a=_[_0x569d('0x3d')]({},_0x4cad5a,_0x245743[_0x569d('0x3e')]);return db[_0x569d('0x2a')][_0x569d('0x46')](_0x4cad5a)[_0x569d('0x23')](handleEntityNotFound(_0x4c404a,null))[_0x569d('0x23')](respondWithResult(_0x4c404a,null))[_0x569d('0x42')](handleError(_0x4c404a,null));};exports[_0x569d('0x47')]=function(_0x3402fa,_0x3cf14d){return db[_0x569d('0x2a')][_0x569d('0x47')](_0x3402fa['body'],{})[_0x569d('0x23')](respondWithResult(_0x3cf14d,0xc9))['catch'](handleError(_0x3cf14d,null));};exports[_0x569d('0x48')]=function(_0x19570d,_0x52faf4){if(_0x19570d[_0x569d('0x49')]['id']){delete _0x19570d[_0x569d('0x49')]['id'];}return db[_0x569d('0x2a')]['find']({'where':{'id':_0x19570d[_0x569d('0x43')]['id']}})['then'](handleEntityNotFound(_0x52faf4,null))[_0x569d('0x23')](saveUpdates(_0x19570d[_0x569d('0x49')],null))[_0x569d('0x23')](respondWithResult(_0x52faf4,null))[_0x569d('0x42')](handleError(_0x52faf4,null));};exports[_0x569d('0x24')]=function(_0x3d58c0,_0x3f1319){return db[_0x569d('0x2a')]['find']({'where':{'id':_0x3d58c0[_0x569d('0x43')]['id']}})[_0x569d('0x23')](handleEntityNotFound(_0x3f1319,null))['then'](removeEntity(_0x3f1319,null))[_0x569d('0x42')](handleError(_0x3f1319,null));};exports['getFields']=function(_0x37bf25,_0x49d38c,_0x154845){var _0x591f42={};var _0x148255={};var _0x186149;var _0xf255c0;return db['VtigerConfiguration'][_0x569d('0x4a')]({'where':{'id':_0x37bf25[_0x569d('0x43')]['id']}})[_0x569d('0x23')](handleEntityNotFound(_0x49d38c,null))['then'](function(_0x416fa5){if(_0x416fa5){_0x186149=_0x416fa5;_0x148255['model']=_[_0x569d('0x30')](db['VtigerField'][_0x569d('0x2b')]);_0x148255['query']=_[_0x569d('0x30')](_0x37bf25['query']);_0x148255[_0x569d('0x31')]=_[_0x569d('0x32')](_0x148255[_0x569d('0x2e')],_0x148255[_0x569d('0x2f')]);_0x591f42['attributes']=_[_0x569d('0x32')](_0x148255[_0x569d('0x2e')],qs[_0x569d('0x34')](_0x37bf25[_0x569d('0x2f')]['fields']));_0x591f42['attributes']=_0x591f42[_0x569d('0x33')][_0x569d('0x44')]?_0x591f42[_0x569d('0x33')]:_0x148255['model'];_0x591f42['order']=qs[_0x569d('0x37')](_0x37bf25[_0x569d('0x2f')][_0x569d('0x37')]);_0x591f42[_0x569d('0x38')]=qs[_0x569d('0x31')](_[_0x569d('0x39')](_0x37bf25[_0x569d('0x2f')],_0x148255[_0x569d('0x31')]));if(_0x37bf25[_0x569d('0x2f')][_0x569d('0x3a')]){_0x591f42['where']=_['merge'](_0x591f42[_0x569d('0x38')],{'$or':_['map'](_0x591f42[_0x569d('0x33')],function(_0x4dcd84){var _0x5c0664={};_0x5c0664[_0x4dcd84]={'$like':'%'+_0x37bf25[_0x569d('0x2f')]['filter']+'%'};return _0x5c0664;})});}_0x591f42=_[_0x569d('0x3d')]({},_0x591f42,_0x37bf25['options']);return _0x186149[_0x569d('0x4b')](_0x591f42);}})['then'](function(_0xb75d5d){if(_0xb75d5d){_0xf255c0=_0xb75d5d['length'];if(!_0x37bf25[_0x569d('0x2f')][_0x569d('0x4c')](_0x569d('0x35'))){_0x591f42[_0x569d('0x1c')]=qs['limit'](_0x37bf25['query'][_0x569d('0x1c')]);_0x591f42['offset']=qs[_0x569d('0x36')](_0x37bf25[_0x569d('0x2f')][_0x569d('0x36')]);}return _0x186149[_0x569d('0x4b')](_0x591f42);}})[_0x569d('0x23')](function(_0x3eab2f){if(_0x3eab2f){return _0x3eab2f?{'count':_0xf255c0,'rows':_0x3eab2f}:null;}})[_0x569d('0x23')](respondWithResult(_0x49d38c,null))[_0x569d('0x42')](handleError(_0x49d38c,null));};exports['getSubjects']=function(_0x385e10,_0x35fafb,_0x2d4f08){var _0x129ca4={};var _0x237ee5={};var _0x3516b6;var _0x2eb5b6;return db[_0x569d('0x2a')]['findOne']({'where':{'id':_0x385e10['params']['id']}})[_0x569d('0x23')](handleEntityNotFound(_0x35fafb,null))['then'](function(_0x16a6b9){if(_0x16a6b9){_0x3516b6=_0x16a6b9;_0x237ee5[_0x569d('0x2e')]=_[_0x569d('0x30')](db['VtigerField'][_0x569d('0x2b')]);_0x237ee5[_0x569d('0x2f')]=_[_0x569d('0x30')](_0x385e10['query']);_0x237ee5['filters']=_[_0x569d('0x32')](_0x237ee5[_0x569d('0x2e')],_0x237ee5['query']);_0x129ca4['attributes']=_[_0x569d('0x32')](_0x237ee5[_0x569d('0x2e')],qs[_0x569d('0x34')](_0x385e10['query'][_0x569d('0x34')]));_0x129ca4['attributes']=_0x129ca4[_0x569d('0x33')][_0x569d('0x44')]?_0x129ca4[_0x569d('0x33')]:_0x237ee5[_0x569d('0x2e')];_0x129ca4['order']=qs['sort'](_0x385e10[_0x569d('0x2f')][_0x569d('0x37')]);_0x129ca4[_0x569d('0x38')]=qs[_0x569d('0x31')](_[_0x569d('0x39')](_0x385e10[_0x569d('0x2f')],_0x237ee5[_0x569d('0x31')]));if(_0x385e10[_0x569d('0x2f')][_0x569d('0x3a')]){_0x129ca4[_0x569d('0x38')]=_[_0x569d('0x3d')](_0x129ca4['where'],{'$or':_['map'](_0x129ca4[_0x569d('0x33')],function(_0x1318fc){var _0x6f4cbd={};_0x6f4cbd[_0x1318fc]={'$like':'%'+_0x385e10[_0x569d('0x2f')][_0x569d('0x3a')]+'%'};return _0x6f4cbd;})});}_0x129ca4=_[_0x569d('0x3d')]({},_0x129ca4,_0x385e10[_0x569d('0x3e')]);return _0x3516b6[_0x569d('0x4d')](_0x129ca4);}})['then'](function(_0x138269){if(_0x138269){_0x2eb5b6=_0x138269['length'];if(!_0x385e10['query'][_0x569d('0x4c')](_0x569d('0x35'))){_0x129ca4['limit']=qs[_0x569d('0x1c')](_0x385e10[_0x569d('0x2f')]['limit']);_0x129ca4[_0x569d('0x36')]=qs[_0x569d('0x36')](_0x385e10[_0x569d('0x2f')][_0x569d('0x36')]);}return _0x3516b6[_0x569d('0x4d')](_0x129ca4);}})[_0x569d('0x23')](function(_0x21bf35){if(_0x21bf35){return _0x21bf35?{'count':_0x2eb5b6,'rows':_0x21bf35}:null;}})[_0x569d('0x23')](respondWithResult(_0x35fafb,null))[_0x569d('0x42')](handleError(_0x35fafb,null));};exports[_0x569d('0x4e')]=function(_0x5b5aa1,_0x178379,_0x543e37){var _0x1cb52a={};var _0x335d5d={};var _0x502a1a;var _0x7b95b9;return db[_0x569d('0x2a')]['findOne']({'where':{'id':_0x5b5aa1[_0x569d('0x43')]['id']}})[_0x569d('0x23')](handleEntityNotFound(_0x178379,null))['then'](function(_0x52a755){if(_0x52a755){_0x502a1a=_0x52a755;_0x335d5d[_0x569d('0x2e')]=_[_0x569d('0x30')](db[_0x569d('0x4f')]['rawAttributes']);_0x335d5d[_0x569d('0x2f')]=_['keys'](_0x5b5aa1[_0x569d('0x2f')]);_0x335d5d[_0x569d('0x31')]=_[_0x569d('0x32')](_0x335d5d[_0x569d('0x2e')],_0x335d5d[_0x569d('0x2f')]);_0x1cb52a[_0x569d('0x33')]=_[_0x569d('0x32')](_0x335d5d[_0x569d('0x2e')],qs[_0x569d('0x34')](_0x5b5aa1[_0x569d('0x2f')][_0x569d('0x34')]));_0x1cb52a[_0x569d('0x33')]=_0x1cb52a['attributes'][_0x569d('0x44')]?_0x1cb52a[_0x569d('0x33')]:_0x335d5d['model'];_0x1cb52a[_0x569d('0x50')]=qs['sort'](_0x5b5aa1[_0x569d('0x2f')][_0x569d('0x37')]);_0x1cb52a[_0x569d('0x38')]=qs[_0x569d('0x31')](_[_0x569d('0x39')](_0x5b5aa1[_0x569d('0x2f')],_0x335d5d[_0x569d('0x31')]));if(_0x5b5aa1[_0x569d('0x2f')][_0x569d('0x3a')]){_0x1cb52a[_0x569d('0x38')]=_[_0x569d('0x3d')](_0x1cb52a[_0x569d('0x38')],{'$or':_[_0x569d('0x29')](_0x1cb52a['attributes'],function(_0x350905){var _0x21f8d8={};_0x21f8d8[_0x350905]={'$like':'%'+_0x5b5aa1['query']['filter']+'%'};return _0x21f8d8;})});}_0x1cb52a=_[_0x569d('0x3d')]({},_0x1cb52a,_0x5b5aa1[_0x569d('0x3e')]);return _0x502a1a[_0x569d('0x4e')](_0x1cb52a);}})[_0x569d('0x23')](function(_0xb42be5){if(_0xb42be5){_0x7b95b9=_0xb42be5[_0x569d('0x44')];if(!_0x5b5aa1['query'][_0x569d('0x4c')](_0x569d('0x35'))){_0x1cb52a[_0x569d('0x1c')]=qs[_0x569d('0x1c')](_0x5b5aa1[_0x569d('0x2f')]['limit']);_0x1cb52a[_0x569d('0x36')]=qs[_0x569d('0x36')](_0x5b5aa1[_0x569d('0x2f')][_0x569d('0x36')]);}return _0x502a1a['getDescriptions'](_0x1cb52a);}})[_0x569d('0x23')](function(_0x48cda5){if(_0x48cda5){return _0x48cda5?{'count':_0x7b95b9,'rows':_0x48cda5}:null;}})[_0x569d('0x23')](respondWithResult(_0x178379,null))[_0x569d('0x42')](handleError(_0x178379,null));};
\ No newline at end of file
index 5094452..4555f9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e2=['VtigerConfiguration','lodash','moment','request-promise','path','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x4c24b6,_0x4af092){var _0x15848a=function(_0x4de3bf){while(--_0x4de3bf){_0x4c24b6['push'](_0x4c24b6['shift']());}};_0x15848a(++_0x4af092);}(_0x04e2,0x7f));var _0x204e=function(_0xb96839,_0x498fb1){_0xb96839=_0xb96839-0x0;var _0x373544=_0x04e2[_0xb96839];return _0x373544;};'use strict';var _=require(_0x204e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x204e('0x1'));var BPromise=require('bluebird');var rp=require(_0x204e('0x2'));var fs=require('fs');var path=require(_0x204e('0x3'));var rimraf=require('rimraf');var config=require(_0x204e('0x4'));var attributes=require(_0x204e('0x5'));module[_0x204e('0x6')]=function(_0x53356f,_0x7f4ddb){return _0x53356f[_0x204e('0x7')](_0x204e('0x8'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa74b=['rimraf','../../config/environment','exports','int_vtiger_configurations','lodash','../../config/logger','api','request-promise','path'];(function(_0xb209d7,_0x49b9bd){var _0x4b3f2c=function(_0x252d49){while(--_0x252d49){_0xb209d7['push'](_0xb209d7['shift']());}};_0x4b3f2c(++_0x49b9bd);}(_0xa74b,0x148));var _0xba74=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xa74b[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xba74('0x0'));var util=require('util');var logger=require(_0xba74('0x1'))(_0xba74('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xba74('0x3'));var fs=require('fs');var path=require(_0xba74('0x4'));var rimraf=require(_0xba74('0x5'));var config=require(_0xba74('0x6'));var attributes=require('./intVtigerConfiguration.attributes');module[_0xba74('0x7')]=function(_0x11ba51,_0x2849ff){return _0x11ba51['define']('VtigerConfiguration',attributes,{'tableName':_0xba74('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 737080c..51ffeef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b06=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x6b06,0x1e4));var _0x66b0=function(_0x18bddf,_0x308655){_0x18bddf=_0x18bddf-0x0;var _0x37a246=_0x6b06[_0x18bddf];return _0x37a246;};'use strict';var _=require(_0x66b0('0x0'));var util=require(_0x66b0('0x1'));var moment=require(_0x66b0('0x2'));var BPromise=require('bluebird');var rs=require(_0x66b0('0x3'));var fs=require('fs');var Redis=require(_0x66b0('0x4'));var db=require(_0x66b0('0x5'))['db'];var utils=require(_0x66b0('0x6'));var logger=require(_0x66b0('0x7'))(_0x66b0('0x8'));var config=require(_0x66b0('0x9'));var jayson=require(_0x66b0('0xa'));var client=jayson['client'][_0x66b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2fafa4,_0x52036c,_0xaab24d){return new BPromise(function(_0x1a3440,_0x47f0c4){return client[_0x66b0('0xc')](_0x2fafa4,_0xaab24d)[_0x66b0('0xd')](function(_0x1cf27a){logger[_0x66b0('0xe')](_0x66b0('0xf'),_0x52036c,_0x66b0('0x10'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x52036c,_0x66b0('0x10'),JSON[_0x66b0('0x11')](_0x1cf27a));if(_0x1cf27a['error']){if(_0x1cf27a['error'][_0x66b0('0x12')]===0x1f4){logger[_0x66b0('0x13')](_0x66b0('0xf'),_0x52036c,_0x1cf27a['error'][_0x66b0('0x14')]);return _0x47f0c4(_0x1cf27a[_0x66b0('0x13')][_0x66b0('0x14')]);}logger['error'](_0x66b0('0xf'),_0x52036c,_0x1cf27a[_0x66b0('0x13')][_0x66b0('0x14')]);return _0x1a3440(_0x1cf27a['error']['message']);}else{logger[_0x66b0('0xe')](_0x66b0('0xf'),_0x52036c,_0x66b0('0x10'));_0x1a3440(_0x1cf27a['result'][_0x66b0('0x14')]);}})[_0x66b0('0x15')](function(_0x4f0d75){logger[_0x66b0('0x13')](_0x66b0('0xf'),_0x52036c,_0x4f0d75);_0x47f0c4(_0x4f0d75);});});}
\ No newline at end of file
+var _0x3223=['message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x3223,0x127));var _0x3322=function(_0x178442,_0x300791){_0x178442=_0x178442-0x0;var _0x3f870a=_0x3223[_0x178442];return _0x3f870a;};'use strict';var _=require('lodash');var util=require(_0x3322('0x0'));var moment=require(_0x3322('0x1'));var BPromise=require(_0x3322('0x2'));var rs=require(_0x3322('0x3'));var fs=require('fs');var Redis=require(_0x3322('0x4'));var db=require(_0x3322('0x5'))['db'];var utils=require(_0x3322('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x3322('0x7'));var jayson=require(_0x3322('0x8'));var client=jayson[_0x3322('0x9')][_0x3322('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x435f9a,_0x31f784,_0xc720cb){return new BPromise(function(_0x346eb4,_0x50f652){return client[_0x3322('0xb')](_0x435f9a,_0xc720cb)[_0x3322('0xc')](function(_0x29a066){logger[_0x3322('0xd')](_0x3322('0xe'),_0x31f784,'request\x20sent');logger['debug'](_0x3322('0xf'),_0x31f784,_0x3322('0x10'),JSON[_0x3322('0x11')](_0x29a066));if(_0x29a066[_0x3322('0x12')]){if(_0x29a066[_0x3322('0x12')][_0x3322('0x13')]===0x1f4){logger[_0x3322('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x31f784,_0x29a066[_0x3322('0x12')][_0x3322('0x14')]);return _0x50f652(_0x29a066['error'][_0x3322('0x14')]);}logger['error'](_0x3322('0xe'),_0x31f784,_0x29a066[_0x3322('0x12')][_0x3322('0x14')]);return _0x346eb4(_0x29a066[_0x3322('0x12')][_0x3322('0x14')]);}else{logger[_0x3322('0xd')](_0x3322('0xe'),_0x31f784,_0x3322('0x10'));_0x346eb4(_0x29a066['result']['message']);}})['catch'](function(_0x16f793){logger[_0x3322('0x12')](_0x3322('0xe'),_0x31f784,_0x16f793);_0x50f652(_0x16f793);});});}
\ No newline at end of file
index 7f4d816..e4c70dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf543=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x408f32,_0x258f21){var _0x4cd9cc=function(_0xc1800b){while(--_0xc1800b){_0x408f32['push'](_0x408f32['shift']());}};_0x4cd9cc(++_0x258f21);}(_0xf543,0x167));var _0x3f54=function(_0x761881,_0x3f4e22){_0x761881=_0x761881-0x0;var _0x57898=_0xf543[_0x761881];return _0x57898;};'use strict';var multer=require(_0x3f54('0x0'));var util=require('util');var path=require(_0x3f54('0x1'));var timeout=require(_0x3f54('0x2'));var express=require(_0x3f54('0x3'));var router=express[_0x3f54('0x4')]();var fs_extra=require(_0x3f54('0x5'));var auth=require(_0x3f54('0x6'));var interaction=require(_0x3f54('0x7'));var config=require(_0x3f54('0x8'));var controller=require('./intVtigerField.controller');router[_0x3f54('0x9')]('/',auth[_0x3f54('0xa')](),controller[_0x3f54('0xb')]);router[_0x3f54('0x9')](_0x3f54('0xc'),auth[_0x3f54('0xa')](),controller[_0x3f54('0xd')]);router[_0x3f54('0xe')]('/',auth[_0x3f54('0xa')](),controller[_0x3f54('0xf')]);router[_0x3f54('0x10')]('/:id',auth[_0x3f54('0xa')](),controller[_0x3f54('0x11')]);router[_0x3f54('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x3f54('0x13')]);module[_0x3f54('0x14')]=router;
\ No newline at end of file
+var _0x6e40=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','exports'];(function(_0x5ddabb,_0x4309fd){var _0x2d8dbd=function(_0x4fc4d1){while(--_0x4fc4d1){_0x5ddabb['push'](_0x5ddabb['shift']());}};_0x2d8dbd(++_0x4309fd);}(_0x6e40,0x1db));var _0x06e4=function(_0x5876bc,_0x680ed0){_0x5876bc=_0x5876bc-0x0;var _0xae31b=_0x6e40[_0x5876bc];return _0xae31b;};'use strict';var multer=require('multer');var util=require(_0x06e4('0x0'));var path=require(_0x06e4('0x1'));var timeout=require('connect-timeout');var express=require(_0x06e4('0x2'));var router=express['Router']();var fs_extra=require(_0x06e4('0x3'));var auth=require(_0x06e4('0x4'));var interaction=require(_0x06e4('0x5'));var config=require(_0x06e4('0x6'));var controller=require(_0x06e4('0x7'));router[_0x06e4('0x8')]('/',auth['isAuthenticated'](),controller[_0x06e4('0x9')]);router[_0x06e4('0x8')](_0x06e4('0xa'),auth[_0x06e4('0xb')](),controller[_0x06e4('0xc')]);router[_0x06e4('0xd')]('/',auth[_0x06e4('0xb')](),controller[_0x06e4('0xe')]);router[_0x06e4('0xf')](_0x06e4('0xa'),auth[_0x06e4('0xb')](),controller[_0x06e4('0x10')]);router[_0x06e4('0x11')](_0x06e4('0xa'),auth[_0x06e4('0xb')](),controller['destroy']);module[_0x06e4('0x12')]=router;
\ No newline at end of file
index 4de48e0..8a64e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2786=['exports','ENUM','string','customVariable','keyValue','STRING','BOOLEAN','sequelize'];(function(_0x24cf7f,_0x31a459){var _0x522347=function(_0x28ebf6){while(--_0x28ebf6){_0x24cf7f['push'](_0x24cf7f['shift']());}};_0x522347(++_0x31a459);}(_0x2786,0x157));var _0x6278=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2786[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x6278('0x0'));module[_0x6278('0x1')]={'type':{'type':Sequelize[_0x6278('0x2')](_0x6278('0x3'),'variable',_0x6278('0x4'),_0x6278('0x5'),'picklist'),'defaultValue':_0x6278('0x3')},'content':{'type':Sequelize[_0x6278('0x6')]},'key':{'type':Sequelize[_0x6278('0x6')]},'keyType':{'type':Sequelize[_0x6278('0x2')](_0x6278('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x6278('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x6278('0x6')]},'customField':{'type':Sequelize[_0x6278('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6278('0x6')]}};
\ No newline at end of file
+var _0x2f49=['variable','sequelize','exports','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0x33a70b,_0x53b3a2){var _0x49edab=function(_0x37165e){while(--_0x37165e){_0x33a70b['push'](_0x33a70b['shift']());}};_0x49edab(++_0x53b3a2);}(_0x2f49,0x19f));var _0x92f4=function(_0x2996fb,_0x35fa50){_0x2996fb=_0x2996fb-0x0;var _0x351b81=_0x2f49[_0x2996fb];return _0x351b81;};'use strict';var Sequelize=require(_0x92f4('0x0'));module[_0x92f4('0x1')]={'type':{'type':Sequelize[_0x92f4('0x2')](_0x92f4('0x3'),'variable',_0x92f4('0x4'),_0x92f4('0x5'),_0x92f4('0x6')),'defaultValue':_0x92f4('0x3')},'content':{'type':Sequelize[_0x92f4('0x7')]},'key':{'type':Sequelize[_0x92f4('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x92f4('0x3'),_0x92f4('0x8'),_0x92f4('0x4'))},'keyContent':{'type':Sequelize[_0x92f4('0x7')]},'idField':{'type':Sequelize[_0x92f4('0x7')]},'nameField':{'type':Sequelize[_0x92f4('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x92f4('0x7')]}};
\ No newline at end of file
index 22dafe4..720a694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff5c=['ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','then','error','name','send','index','map','VtigerField','rawAttributes','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','body','update','find','eml-format','zip-dir','fast-json-patch','moment','util','path','sox','to-csv'];(function(_0x432b86,_0x253762){var _0x20f97a=function(_0x1e81f8){while(--_0x1e81f8){_0x432b86['push'](_0x432b86['shift']());}};_0x20f97a(++_0x253762);}(_0xff5c,0x110));var _0xcff5=function(_0x744243,_0x430b60){_0x744243=_0x744243-0x0;var _0x26b96a=_0xff5c[_0x744243];return _0x26b96a;};'use strict';var emlformat=require(_0xcff5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcff5('0x1'));var jsonpatch=require(_0xcff5('0x2'));var rp=require('request-promise');var moment=require(_0xcff5('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcff5('0x4'));var path=require(_0xcff5('0x5'));var sox=require(_0xcff5('0x6'));var csv=require(_0xcff5('0x7'));var ejs=require(_0xcff5('0x8'));var fs=require('fs');var fs_extra=require(_0xcff5('0x9'));var _=require(_0xcff5('0xa'));var squel=require(_0xcff5('0xb'));var crypto=require(_0xcff5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcff5('0xd'));var toCsv=require(_0xcff5('0x7'));var querystring=require(_0xcff5('0xe'));var Papa=require(_0xcff5('0xf'));var Redis=require(_0xcff5('0x10'));var authService=require(_0xcff5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xcff5('0x12'));var hardwareService=require(_0xcff5('0x13'));var logger=require(_0xcff5('0x14'))('api');var utils=require(_0xcff5('0x15'));var config=require(_0xcff5('0x16'));var licenseUtil=require(_0xcff5('0x17'));var db=require(_0xcff5('0x18'))['db'];function respondWithStatusCode(_0x464166,_0x304bc7){_0x304bc7=_0x304bc7||0xcc;return function(_0x4842f6){if(_0x4842f6){return _0x464166[_0xcff5('0x19')](_0x304bc7);}return _0x464166[_0xcff5('0x1a')](_0x304bc7)[_0xcff5('0x1b')]();};}function respondWithResult(_0x29fd78,_0x3eb801){_0x3eb801=_0x3eb801||0xc8;return function(_0x522b79){if(_0x522b79){return _0x29fd78[_0xcff5('0x1a')](_0x3eb801)[_0xcff5('0x1c')](_0x522b79);}};}function respondWithFilteredResult(_0x4fa9f2,_0x3c128a){return function(_0x1bd1d6){if(_0x1bd1d6){var _0x35ecec=typeof _0x3c128a[_0xcff5('0x1d')]===_0xcff5('0x1e')&&typeof _0x3c128a[_0xcff5('0x1f')]===_0xcff5('0x1e');var _0x94939b=_0x1bd1d6[_0xcff5('0x20')];var _0x169fa9=_0x35ecec?0x0:_0x3c128a['offset'];var _0x3c9bef=_0x35ecec?_0x1bd1d6[_0xcff5('0x20')]:_0x3c128a['offset']+_0x3c128a[_0xcff5('0x1f')];var _0x9fe72c;if(_0x3c9bef>=_0x94939b){_0x3c9bef=_0x94939b;_0x9fe72c=0xc8;}else{_0x9fe72c=0xce;}_0x4fa9f2[_0xcff5('0x1a')](_0x9fe72c);return _0x4fa9f2['set'](_0xcff5('0x21'),_0x169fa9+'-'+_0x3c9bef+'/'+_0x94939b)[_0xcff5('0x1c')](_0x1bd1d6);}return null;};}function patchUpdates(_0x350156){return function(_0x34e1b3){try{jsonpatch['apply'](_0x34e1b3,_0x350156,!![]);}catch(_0x26cf6b){return BPromise[_0xcff5('0x22')](_0x26cf6b);}return _0x34e1b3[_0xcff5('0x23')]();};}function saveUpdates(_0x3cd175,_0x63fa6e){return function(_0x3e75d5){if(_0x3e75d5){return _0x3e75d5['update'](_0x3cd175)[_0xcff5('0x24')](function(_0x239576){return _0x239576;});}return null;};}function removeEntity(_0x54fceb,_0x36d2e8){return function(_0x4ace2a){if(_0x4ace2a){return _0x4ace2a['destroy']()['then'](function(){_0x54fceb[_0xcff5('0x1a')](0xcc)[_0xcff5('0x1b')]();});}};}function handleEntityNotFound(_0x5c730f,_0x2980af){return function(_0x5ca642){if(!_0x5ca642){_0x5c730f[_0xcff5('0x19')](0x194);}return _0x5ca642;};}function handleError(_0x473f86,_0xeb7409){_0xeb7409=_0xeb7409||0x1f4;return function(_0x51a358){logger[_0xcff5('0x25')](_0x51a358['stack']);if(_0x51a358[_0xcff5('0x26')]){delete _0x51a358[_0xcff5('0x26')];}_0x473f86['status'](_0xeb7409)[_0xcff5('0x27')](_0x51a358);};}exports[_0xcff5('0x28')]=function(_0x59ab88,_0x48770f){var _0x3f09d8={},_0x5065a={},_0x543309={'count':0x0,'rows':[]};var _0x37f5aa=_[_0xcff5('0x29')](db[_0xcff5('0x2a')][_0xcff5('0x2b')],function(_0x18631c){return{'name':_0x18631c['fieldName'],'type':_0x18631c[_0xcff5('0x2c')]['key']};});_0x5065a[_0xcff5('0x2d')]=_[_0xcff5('0x29')](_0x37f5aa,_0xcff5('0x26'));_0x5065a[_0xcff5('0x2e')]=_['keys'](_0x59ab88[_0xcff5('0x2e')]);_0x5065a['filters']=_[_0xcff5('0x2f')](_0x5065a['model'],_0x5065a[_0xcff5('0x2e')]);_0x3f09d8[_0xcff5('0x30')]=_[_0xcff5('0x2f')](_0x5065a[_0xcff5('0x2d')],qs[_0xcff5('0x31')](_0x59ab88[_0xcff5('0x2e')][_0xcff5('0x31')]));_0x3f09d8[_0xcff5('0x30')]=_0x3f09d8['attributes'][_0xcff5('0x32')]?_0x3f09d8[_0xcff5('0x30')]:_0x5065a[_0xcff5('0x2d')];if(!_0x59ab88[_0xcff5('0x2e')][_0xcff5('0x33')](_0xcff5('0x34'))){_0x3f09d8[_0xcff5('0x1f')]=qs[_0xcff5('0x1f')](_0x59ab88[_0xcff5('0x2e')][_0xcff5('0x1f')]);_0x3f09d8[_0xcff5('0x1d')]=qs[_0xcff5('0x1d')](_0x59ab88['query'][_0xcff5('0x1d')]);}_0x3f09d8[_0xcff5('0x35')]=qs[_0xcff5('0x36')](_0x59ab88['query'][_0xcff5('0x36')]);_0x3f09d8['where']=qs[_0xcff5('0x37')](_[_0xcff5('0x38')](_0x59ab88[_0xcff5('0x2e')],_0x5065a[_0xcff5('0x37')]),_0x37f5aa);if(_0x59ab88[_0xcff5('0x2e')][_0xcff5('0x39')]){_0x3f09d8[_0xcff5('0x3a')]=_['merge'](_0x3f09d8[_0xcff5('0x3a')],{'$or':_[_0xcff5('0x29')](_0x37f5aa,function(_0x34d1f6){if(_0x34d1f6[_0xcff5('0x2c')]!==_0xcff5('0x3b')){var _0x26afcf={};_0x26afcf[_0x34d1f6[_0xcff5('0x26')]]={'$like':'%'+_0x59ab88[_0xcff5('0x2e')][_0xcff5('0x39')]+'%'};return _0x26afcf;}})});}_0x3f09d8=_['merge']({},_0x3f09d8,_0x59ab88[_0xcff5('0x3c')]);var _0x3682de={'where':_0x3f09d8['where']};return db[_0xcff5('0x2a')]['count'](_0x3682de)['then'](function(_0x3844ea){_0x543309[_0xcff5('0x20')]=_0x3844ea;if(_0x59ab88[_0xcff5('0x2e')][_0xcff5('0x3d')]){_0x3f09d8['include']=[{'all':!![]}];}return db['VtigerField'][_0xcff5('0x3e')](_0x3f09d8);})[_0xcff5('0x24')](function(_0x146697){_0x543309[_0xcff5('0x3f')]=_0x146697;return _0x543309;})['then'](respondWithFilteredResult(_0x48770f,_0x3f09d8))[_0xcff5('0x40')](handleError(_0x48770f,null));};exports['show']=function(_0xe7119c,_0x149eb7){var _0x58c272={'raw':!![],'where':{'id':_0xe7119c[_0xcff5('0x41')]['id']}},_0xa594d2={};_0xa594d2['model']=_['keys'](db[_0xcff5('0x2a')][_0xcff5('0x2b')]);_0xa594d2['query']=_[_0xcff5('0x42')](_0xe7119c[_0xcff5('0x2e')]);_0xa594d2[_0xcff5('0x37')]=_['intersection'](_0xa594d2[_0xcff5('0x2d')],_0xa594d2['query']);_0x58c272[_0xcff5('0x30')]=_[_0xcff5('0x2f')](_0xa594d2[_0xcff5('0x2d')],qs[_0xcff5('0x31')](_0xe7119c[_0xcff5('0x2e')][_0xcff5('0x31')]));_0x58c272['attributes']=_0x58c272[_0xcff5('0x30')][_0xcff5('0x32')]?_0x58c272['attributes']:_0xa594d2['model'];if(_0xe7119c['query'][_0xcff5('0x3d')]){_0x58c272['include']=[{'all':!![]}];}_0x58c272=_['merge']({},_0x58c272,_0xe7119c[_0xcff5('0x3c')]);return db[_0xcff5('0x2a')]['find'](_0x58c272)[_0xcff5('0x24')](handleEntityNotFound(_0x149eb7,null))['then'](respondWithResult(_0x149eb7,null))[_0xcff5('0x40')](handleError(_0x149eb7,null));};exports['create']=function(_0x2eb6a6,_0x8e6894){return db[_0xcff5('0x2a')]['create'](_0x2eb6a6[_0xcff5('0x43')],{})[_0xcff5('0x24')](respondWithResult(_0x8e6894,0xc9))[_0xcff5('0x40')](handleError(_0x8e6894,null));};exports[_0xcff5('0x44')]=function(_0x1def33,_0x5c309d){if(_0x1def33[_0xcff5('0x43')]['id']){delete _0x1def33[_0xcff5('0x43')]['id'];}return db['VtigerField'][_0xcff5('0x45')]({'where':{'id':_0x1def33[_0xcff5('0x41')]['id']}})[_0xcff5('0x24')](handleEntityNotFound(_0x5c309d,null))[_0xcff5('0x24')](saveUpdates(_0x1def33[_0xcff5('0x43')],null))[_0xcff5('0x24')](respondWithResult(_0x5c309d,null))[_0xcff5('0x40')](handleError(_0x5c309d,null));};exports['destroy']=function(_0x19b07e,_0x1de545){return db[_0xcff5('0x2a')][_0xcff5('0x45')]({'where':{'id':_0x19b07e[_0xcff5('0x41')]['id']}})[_0xcff5('0x24')](handleEntityNotFound(_0x1de545,null))['then'](removeEntity(_0x1de545,null))['catch'](handleError(_0x1de545,null));};
\ No newline at end of file
+var _0x0220=['options','includeAll','include','findAll','rows','catch','params','merge','find','create','body','update','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','filters','pick','where','VIRTUAL'];(function(_0x3575ed,_0x3294bb){var _0x36cb29=function(_0x346b66){while(--_0x346b66){_0x3575ed['push'](_0x3575ed['shift']());}};_0x36cb29(++_0x3294bb);}(_0x0220,0x134));var _0x0022=function(_0x55daf2,_0x1b48de){_0x55daf2=_0x55daf2-0x0;var _0x1c8500=_0x0220[_0x55daf2];return _0x1c8500;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0022('0x0'));var zipdir=require(_0x0022('0x1'));var jsonpatch=require(_0x0022('0x2'));var rp=require('request-promise');var moment=require(_0x0022('0x3'));var BPromise=require(_0x0022('0x4'));var Mustache=require(_0x0022('0x5'));var util=require('util');var path=require(_0x0022('0x6'));var sox=require(_0x0022('0x7'));var csv=require(_0x0022('0x8'));var ejs=require(_0x0022('0x9'));var fs=require('fs');var fs_extra=require(_0x0022('0xa'));var _=require('lodash');var squel=require(_0x0022('0xb'));var crypto=require(_0x0022('0xc'));var jsforce=require(_0x0022('0xd'));var deskjs=require(_0x0022('0xe'));var toCsv=require(_0x0022('0x8'));var querystring=require(_0x0022('0xf'));var Papa=require(_0x0022('0x10'));var Redis=require(_0x0022('0x11'));var authService=require(_0x0022('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0022('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0022('0x14'))(_0x0022('0x15'));var utils=require(_0x0022('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0022('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x125a65,_0x488c88){_0x488c88=_0x488c88||0xcc;return function(_0x5d1d76){if(_0x5d1d76){return _0x125a65['sendStatus'](_0x488c88);}return _0x125a65['status'](_0x488c88)[_0x0022('0x18')]();};}function respondWithResult(_0x5c23a9,_0x3b7734){_0x3b7734=_0x3b7734||0xc8;return function(_0x507aa0){if(_0x507aa0){return _0x5c23a9[_0x0022('0x19')](_0x3b7734)[_0x0022('0x1a')](_0x507aa0);}};}function respondWithFilteredResult(_0x2e2b5f,_0x2d937){return function(_0x27a577){if(_0x27a577){var _0x44bdd6=typeof _0x2d937[_0x0022('0x1b')]===_0x0022('0x1c')&&typeof _0x2d937[_0x0022('0x1d')]===_0x0022('0x1c');var _0x220855=_0x27a577[_0x0022('0x1e')];var _0x25d4eb=_0x44bdd6?0x0:_0x2d937[_0x0022('0x1b')];var _0x5c880a=_0x44bdd6?_0x27a577[_0x0022('0x1e')]:_0x2d937[_0x0022('0x1b')]+_0x2d937[_0x0022('0x1d')];var _0x25e34e;if(_0x5c880a>=_0x220855){_0x5c880a=_0x220855;_0x25e34e=0xc8;}else{_0x25e34e=0xce;}_0x2e2b5f[_0x0022('0x19')](_0x25e34e);return _0x2e2b5f[_0x0022('0x1f')]('Content-Range',_0x25d4eb+'-'+_0x5c880a+'/'+_0x220855)['json'](_0x27a577);}return null;};}function patchUpdates(_0x52c14e){return function(_0x664a83){try{jsonpatch[_0x0022('0x20')](_0x664a83,_0x52c14e,!![]);}catch(_0x396b26){return BPromise[_0x0022('0x21')](_0x396b26);}return _0x664a83[_0x0022('0x22')]();};}function saveUpdates(_0x123e99,_0x365cdd){return function(_0x2c8069){if(_0x2c8069){return _0x2c8069['update'](_0x123e99)[_0x0022('0x23')](function(_0x5579ee){return _0x5579ee;});}return null;};}function removeEntity(_0x521773,_0x234ce6){return function(_0xc930f0){if(_0xc930f0){return _0xc930f0[_0x0022('0x24')]()[_0x0022('0x23')](function(){_0x521773[_0x0022('0x19')](0xcc)[_0x0022('0x18')]();});}};}function handleEntityNotFound(_0x3825d3,_0x1b468c){return function(_0x8e213f){if(!_0x8e213f){_0x3825d3[_0x0022('0x25')](0x194);}return _0x8e213f;};}function handleError(_0xc864e6,_0x165aa5){_0x165aa5=_0x165aa5||0x1f4;return function(_0x23c670){logger[_0x0022('0x26')](_0x23c670[_0x0022('0x27')]);if(_0x23c670[_0x0022('0x28')]){delete _0x23c670[_0x0022('0x28')];}_0xc864e6[_0x0022('0x19')](_0x165aa5)[_0x0022('0x29')](_0x23c670);};}exports[_0x0022('0x2a')]=function(_0x102c2b,_0x463b34){var _0x1fba5d={},_0x949342={},_0x439ca2={'count':0x0,'rows':[]};var _0x28cd81=_[_0x0022('0x2b')](db[_0x0022('0x2c')][_0x0022('0x2d')],function(_0x54208f){return{'name':_0x54208f[_0x0022('0x2e')],'type':_0x54208f[_0x0022('0x2f')][_0x0022('0x30')]};});_0x949342[_0x0022('0x31')]=_[_0x0022('0x2b')](_0x28cd81,_0x0022('0x28'));_0x949342[_0x0022('0x32')]=_[_0x0022('0x33')](_0x102c2b['query']);_0x949342['filters']=_[_0x0022('0x34')](_0x949342[_0x0022('0x31')],_0x949342[_0x0022('0x32')]);_0x1fba5d[_0x0022('0x35')]=_[_0x0022('0x34')](_0x949342[_0x0022('0x31')],qs['fields'](_0x102c2b['query'][_0x0022('0x36')]));_0x1fba5d['attributes']=_0x1fba5d['attributes'][_0x0022('0x37')]?_0x1fba5d[_0x0022('0x35')]:_0x949342[_0x0022('0x31')];if(!_0x102c2b[_0x0022('0x32')]['hasOwnProperty']('nolimit')){_0x1fba5d['limit']=qs[_0x0022('0x1d')](_0x102c2b['query'][_0x0022('0x1d')]);_0x1fba5d['offset']=qs[_0x0022('0x1b')](_0x102c2b[_0x0022('0x32')][_0x0022('0x1b')]);}_0x1fba5d[_0x0022('0x38')]=qs[_0x0022('0x39')](_0x102c2b[_0x0022('0x32')][_0x0022('0x39')]);_0x1fba5d['where']=qs[_0x0022('0x3a')](_[_0x0022('0x3b')](_0x102c2b[_0x0022('0x32')],_0x949342['filters']),_0x28cd81);if(_0x102c2b[_0x0022('0x32')]['filter']){_0x1fba5d[_0x0022('0x3c')]=_['merge'](_0x1fba5d['where'],{'$or':_[_0x0022('0x2b')](_0x28cd81,function(_0x184462){if(_0x184462[_0x0022('0x2f')]!==_0x0022('0x3d')){var _0x1dd0b5={};_0x1dd0b5[_0x184462['name']]={'$like':'%'+_0x102c2b[_0x0022('0x32')]['filter']+'%'};return _0x1dd0b5;}})});}_0x1fba5d=_['merge']({},_0x1fba5d,_0x102c2b[_0x0022('0x3e')]);var _0x4f9f5d={'where':_0x1fba5d[_0x0022('0x3c')]};return db[_0x0022('0x2c')][_0x0022('0x1e')](_0x4f9f5d)[_0x0022('0x23')](function(_0x3308e7){_0x439ca2['count']=_0x3308e7;if(_0x102c2b[_0x0022('0x32')][_0x0022('0x3f')]){_0x1fba5d[_0x0022('0x40')]=[{'all':!![]}];}return db['VtigerField'][_0x0022('0x41')](_0x1fba5d);})[_0x0022('0x23')](function(_0x2c37f1){_0x439ca2[_0x0022('0x42')]=_0x2c37f1;return _0x439ca2;})[_0x0022('0x23')](respondWithFilteredResult(_0x463b34,_0x1fba5d))[_0x0022('0x43')](handleError(_0x463b34,null));};exports['show']=function(_0x5548a8,_0x43b128){var _0x5bdf20={'raw':!![],'where':{'id':_0x5548a8[_0x0022('0x44')]['id']}},_0x45a1bd={};_0x45a1bd[_0x0022('0x31')]=_[_0x0022('0x33')](db[_0x0022('0x2c')][_0x0022('0x2d')]);_0x45a1bd[_0x0022('0x32')]=_[_0x0022('0x33')](_0x5548a8[_0x0022('0x32')]);_0x45a1bd[_0x0022('0x3a')]=_[_0x0022('0x34')](_0x45a1bd[_0x0022('0x31')],_0x45a1bd['query']);_0x5bdf20[_0x0022('0x35')]=_[_0x0022('0x34')](_0x45a1bd['model'],qs[_0x0022('0x36')](_0x5548a8[_0x0022('0x32')][_0x0022('0x36')]));_0x5bdf20[_0x0022('0x35')]=_0x5bdf20[_0x0022('0x35')][_0x0022('0x37')]?_0x5bdf20['attributes']:_0x45a1bd[_0x0022('0x31')];if(_0x5548a8['query'][_0x0022('0x3f')]){_0x5bdf20[_0x0022('0x40')]=[{'all':!![]}];}_0x5bdf20=_[_0x0022('0x45')]({},_0x5bdf20,_0x5548a8[_0x0022('0x3e')]);return db[_0x0022('0x2c')][_0x0022('0x46')](_0x5bdf20)[_0x0022('0x23')](handleEntityNotFound(_0x43b128,null))[_0x0022('0x23')](respondWithResult(_0x43b128,null))[_0x0022('0x43')](handleError(_0x43b128,null));};exports[_0x0022('0x47')]=function(_0x44b69e,_0x198665){return db[_0x0022('0x2c')][_0x0022('0x47')](_0x44b69e[_0x0022('0x48')],{})[_0x0022('0x23')](respondWithResult(_0x198665,0xc9))[_0x0022('0x43')](handleError(_0x198665,null));};exports[_0x0022('0x49')]=function(_0x3b6f35,_0x4a5979){if(_0x3b6f35['body']['id']){delete _0x3b6f35['body']['id'];}return db['VtigerField'][_0x0022('0x46')]({'where':{'id':_0x3b6f35[_0x0022('0x44')]['id']}})['then'](handleEntityNotFound(_0x4a5979,null))[_0x0022('0x23')](saveUpdates(_0x3b6f35[_0x0022('0x48')],null))[_0x0022('0x23')](respondWithResult(_0x4a5979,null))[_0x0022('0x43')](handleError(_0x4a5979,null));};exports['destroy']=function(_0x270852,_0x302da2){return db[_0x0022('0x2c')][_0x0022('0x46')]({'where':{'id':_0x270852[_0x0022('0x44')]['id']}})['then'](handleEntityNotFound(_0x302da2,null))['then'](removeEntity(_0x302da2,null))[_0x0022('0x43')](handleError(_0x302da2,null));};
\ No newline at end of file
index afe82fc..e9c6c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x067a=['VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','request-promise','path','rimraf','exports','define'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x067a,0xe5));var _0xa067=function(_0xc7eac9,_0x5244d0){_0xc7eac9=_0xc7eac9-0x0;var _0x4f438e=_0x067a[_0xc7eac9];return _0x4f438e;};'use strict';var _=require(_0xa067('0x0'));var util=require(_0xa067('0x1'));var logger=require(_0xa067('0x2'))(_0xa067('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa067('0x4'));var fs=require('fs');var path=require(_0xa067('0x5'));var rimraf=require(_0xa067('0x6'));var config=require('../../config/environment');var attributes=require('./intVtigerField.attributes');module[_0xa067('0x7')]=function(_0x43c4eb,_0x3f75d9){return _0x43c4eb[_0xa067('0x8')](_0xa067('0x9'),attributes,{'tableName':_0xa067('0xa'),'paranoid':![],'indexes':[{'name':_0xa067('0xb'),'fields':[_0xa067('0xc'),_0xa067('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ed8=['moment','bluebird','path','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','../../config/logger'];(function(_0x20ae99,_0x2adca6){var _0x3fe299=function(_0x189ee3){while(--_0x189ee3){_0x20ae99['push'](_0x20ae99['shift']());}};_0x3fe299(++_0x2adca6);}(_0x5ed8,0x1df));var _0x85ed=function(_0x27c1ab,_0x3734be){_0x27c1ab=_0x27c1ab-0x0;var _0x5087a3=_0x5ed8[_0x27c1ab];return _0x5087a3;};'use strict';var _=require(_0x85ed('0x0'));var util=require('util');var logger=require(_0x85ed('0x1'))('api');var moment=require(_0x85ed('0x2'));var BPromise=require(_0x85ed('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85ed('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x85ed('0x5'));module[_0x85ed('0x6')]=function(_0x14f6ca,_0x4b7df4){return _0x14f6ca[_0x85ed('0x7')](_0x85ed('0x8'),attributes,{'tableName':_0x85ed('0x9'),'paranoid':![],'indexes':[{'name':_0x85ed('0xa'),'fields':[_0x85ed('0xb'),_0x85ed('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 44f6661..d768c03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x398a=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','VtigerField,\x20%s,\x20%s','result','catch','lodash'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x398a,0x149));var _0xa398=function(_0x159836,_0x457752){_0x159836=_0x159836-0x0;var _0x91b551=_0x398a[_0x159836];return _0x91b551;};'use strict';var _=require(_0xa398('0x0'));var util=require('util');var moment=require(_0xa398('0x1'));var BPromise=require(_0xa398('0x2'));var rs=require(_0xa398('0x3'));var fs=require('fs');var Redis=require(_0xa398('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa398('0x5'))(_0xa398('0x6'));var config=require(_0xa398('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa398('0x8')][_0xa398('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x510613,_0x5b63c3,_0x278767){return new BPromise(function(_0x5e7ee6,_0x1a9dcc){return client[_0xa398('0xa')](_0x510613,_0x278767)[_0xa398('0xb')](function(_0x93d3bf){logger[_0xa398('0xc')]('VtigerField,\x20%s,\x20%s',_0x5b63c3,_0xa398('0xd'));logger[_0xa398('0xe')](_0xa398('0xf'),_0x5b63c3,'request\x20sent',JSON['stringify'](_0x93d3bf));if(_0x93d3bf[_0xa398('0x10')]){if(_0x93d3bf[_0xa398('0x10')][_0xa398('0x11')]===0x1f4){logger['error']('VtigerField,\x20%s,\x20%s',_0x5b63c3,_0x93d3bf[_0xa398('0x10')][_0xa398('0x12')]);return _0x1a9dcc(_0x93d3bf[_0xa398('0x10')][_0xa398('0x12')]);}logger['error'](_0xa398('0x13'),_0x5b63c3,_0x93d3bf[_0xa398('0x10')][_0xa398('0x12')]);return _0x5e7ee6(_0x93d3bf['error'][_0xa398('0x12')]);}else{logger[_0xa398('0xc')]('VtigerField,\x20%s,\x20%s',_0x5b63c3,_0xa398('0xd'));_0x5e7ee6(_0x93d3bf[_0xa398('0x14')][_0xa398('0x12')]);}})[_0xa398('0x15')](function(_0x1d413f){logger[_0xa398('0x10')]('VtigerField,\x20%s,\x20%s',_0x5b63c3,_0x1d413f);_0x1a9dcc(_0x1d413f);});});}
\ No newline at end of file
+var _0xc45e=['result','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x261351,_0x2110b8){var _0x454b3c=function(_0x5758bf){while(--_0x5758bf){_0x261351['push'](_0x261351['shift']());}};_0x454b3c(++_0x2110b8);}(_0xc45e,0x1cd));var _0xec45=function(_0x480d67,_0x3110a9){_0x480d67=_0x480d67-0x0;var _0x32752b=_0xc45e[_0x480d67];return _0x32752b;};'use strict';var _=require(_0xec45('0x0'));var util=require(_0xec45('0x1'));var moment=require(_0xec45('0x2'));var BPromise=require(_0xec45('0x3'));var rs=require(_0xec45('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xec45('0x5'));var logger=require('../../config/logger')(_0xec45('0x6'));var config=require(_0xec45('0x7'));var jayson=require(_0xec45('0x8'));var client=jayson[_0xec45('0x9')][_0xec45('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5c9028,_0x5cb561,_0x113029){return new BPromise(function(_0x49e4ac,_0x62a92e){return client[_0xec45('0xb')](_0x5c9028,_0x113029)[_0xec45('0xc')](function(_0x4ed41b){logger['info'](_0xec45('0xd'),_0x5cb561,_0xec45('0xe'));logger[_0xec45('0xf')](_0xec45('0x10'),_0x5cb561,'request\x20sent',JSON[_0xec45('0x11')](_0x4ed41b));if(_0x4ed41b[_0xec45('0x12')]){if(_0x4ed41b[_0xec45('0x12')][_0xec45('0x13')]===0x1f4){logger['error'](_0xec45('0xd'),_0x5cb561,_0x4ed41b[_0xec45('0x12')][_0xec45('0x14')]);return _0x62a92e(_0x4ed41b[_0xec45('0x12')][_0xec45('0x14')]);}logger[_0xec45('0x12')](_0xec45('0xd'),_0x5cb561,_0x4ed41b[_0xec45('0x12')]['message']);return _0x49e4ac(_0x4ed41b[_0xec45('0x12')][_0xec45('0x14')]);}else{logger[_0xec45('0x15')]('VtigerField,\x20%s,\x20%s',_0x5cb561,_0xec45('0xe'));_0x49e4ac(_0x4ed41b[_0xec45('0x16')][_0xec45('0x14')]);}})['catch'](function(_0x3ac701){logger[_0xec45('0x12')](_0xec45('0xd'),_0x5cb561,_0x3ac701);_0x62a92e(_0x3ac701);});});}
\ No newline at end of file
index f0e1d95..2eef8d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7985=['express','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x854e95,_0x448744){var _0x2be260=function(_0x12e562){while(--_0x12e562){_0x854e95['push'](_0x854e95['shift']());}};_0x2be260(++_0x448744);}(_0x7985,0x128));var _0x5798=function(_0x160148,_0x5c0639){_0x160148=_0x160148-0x0;var _0x5d4a2c=_0x7985[_0x160148];return _0x5d4a2c;};'use strict';var multer=require(_0x5798('0x0'));var util=require(_0x5798('0x1'));var path=require(_0x5798('0x2'));var timeout=require(_0x5798('0x3'));var express=require(_0x5798('0x4'));var router=express['Router']();var fs_extra=require(_0x5798('0x5'));var auth=require(_0x5798('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5798('0x7'));var controller=require(_0x5798('0x8'));router[_0x5798('0x9')]('/',auth[_0x5798('0xa')](),controller[_0x5798('0xb')]);router[_0x5798('0x9')](_0x5798('0xc'),auth[_0x5798('0xa')](),controller[_0x5798('0xd')]);router['get'](_0x5798('0xe'),auth[_0x5798('0xa')](),controller[_0x5798('0xf')]);router[_0x5798('0x9')](_0x5798('0x10'),auth[_0x5798('0xa')](),controller[_0x5798('0x11')]);router[_0x5798('0x12')]('/',auth[_0x5798('0xa')](),controller['create']);router[_0x5798('0x12')](_0x5798('0xe'),auth[_0x5798('0xa')](),controller[_0x5798('0x13')]);router[_0x5798('0x14')](_0x5798('0xc'),auth[_0x5798('0xa')](),controller[_0x5798('0x15')]);router[_0x5798('0x16')](_0x5798('0xc'),auth[_0x5798('0xa')](),controller[_0x5798('0x17')]);module[_0x5798('0x18')]=router;
\ No newline at end of file
+var _0x7fab=['/:id/configurations','addConfiguration','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','post','create'];(function(_0x5dfc2a,_0x1a953f){var _0x3f1a71=function(_0x15916){while(--_0x15916){_0x5dfc2a['push'](_0x5dfc2a['shift']());}};_0x3f1a71(++_0x1a953f);}(_0x7fab,0x1b0));var _0xb7fa=function(_0x39b5bd,_0x398098){_0x39b5bd=_0x39b5bd-0x0;var _0x3791cb=_0x7fab[_0x39b5bd];return _0x3791cb;};'use strict';var multer=require(_0xb7fa('0x0'));var util=require(_0xb7fa('0x1'));var path=require(_0xb7fa('0x2'));var timeout=require('connect-timeout');var express=require(_0xb7fa('0x3'));var router=express[_0xb7fa('0x4')]();var fs_extra=require(_0xb7fa('0x5'));var auth=require(_0xb7fa('0x6'));var interaction=require(_0xb7fa('0x7'));var config=require(_0xb7fa('0x8'));var controller=require('./intZendeskAccount.controller');router[_0xb7fa('0x9')]('/',auth[_0xb7fa('0xa')](),controller[_0xb7fa('0xb')]);router[_0xb7fa('0x9')](_0xb7fa('0xc'),auth[_0xb7fa('0xa')](),controller[_0xb7fa('0xd')]);router[_0xb7fa('0x9')]('/:id/configurations',auth[_0xb7fa('0xa')](),controller[_0xb7fa('0xe')]);router['get'](_0xb7fa('0xf'),auth['isAuthenticated'](),controller['getFields']);router[_0xb7fa('0x10')]('/',auth[_0xb7fa('0xa')](),controller[_0xb7fa('0x11')]);router[_0xb7fa('0x10')](_0xb7fa('0x12'),auth[_0xb7fa('0xa')](),controller[_0xb7fa('0x13')]);router[_0xb7fa('0x14')]('/:id',auth[_0xb7fa('0xa')](),controller[_0xb7fa('0x15')]);router[_0xb7fa('0x16')](_0xb7fa('0xc'),auth[_0xb7fa('0xa')](),controller[_0xb7fa('0x17')]);module[_0xb7fa('0x18')]=router;
\ No newline at end of file
index e0ff5db..2e986c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b6e=['exports','STRING','username','ENUM','password','token','integrationTab','newTab','sequelize'];(function(_0x12254f,_0x100cfe){var _0x3a4fa2=function(_0x1ce891){while(--_0x1ce891){_0x12254f['push'](_0x12254f['shift']());}};_0x3a4fa2(++_0x100cfe);}(_0x5b6e,0x14c));var _0xe5b6=function(_0x5e8dc2,_0x19870e){_0x5e8dc2=_0x5e8dc2-0x0;var _0x109a42=_0x5b6e[_0x5e8dc2];return _0x109a42;};'use strict';var Sequelize=require(_0xe5b6('0x0'));module[_0xe5b6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe5b6('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xe5b6('0x3')},'password':{'type':Sequelize[_0xe5b6('0x2')]},'token':{'type':Sequelize[_0xe5b6('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xe5b6('0x4')](_0xe5b6('0x5'),_0xe5b6('0x6')),'defaultValue':_0xe5b6('0x5')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xe5b6('0x4')](_0xe5b6('0x7'),_0xe5b6('0x8')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x0a1c=['STRING','remoteUri','ENUM','password','token','integrationTab','newTab'];(function(_0x9d1971,_0x50b82e){var _0x203469=function(_0x2733b4){while(--_0x2733b4){_0x9d1971['push'](_0x9d1971['shift']());}};_0x203469(++_0x50b82e);}(_0x0a1c,0xd2));var _0xc0a1=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0x0a1c[_0x20c9b2];return _0x2c6030;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc0a1('0x0')]},'description':{'type':Sequelize[_0xc0a1('0x0')]},'username':{'type':Sequelize[_0xc0a1('0x0')],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xc0a1('0x0')]},'remoteUri':{'type':Sequelize[_0xc0a1('0x0')],'unique':_0xc0a1('0x1')},'authType':{'type':Sequelize[_0xc0a1('0x2')](_0xc0a1('0x3'),_0xc0a1('0x4')),'defaultValue':_0xc0a1('0x3')},'serverUrl':{'type':Sequelize[_0xc0a1('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0xc0a1('0x2')](_0xc0a1('0x5'),_0xc0a1('0x6')),'defaultValue':_0xc0a1('0x5')}};
\ No newline at end of file
index 6b60c60..5fe989f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','error','name','send','index','map','ZendeskAccount','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','getConfigurations','findOne','AccountId','channel','Descriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','lastIndexOf','GET','format','%s/%s','headers','Basic\x20%s','%s:%s','base64','%s/token:%s','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','ticket_fields','title','position','system_field_options','custom_field_options','test','statusCode','stringify','Wrong\x20credentials','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x23f503,_0x56ea83){var _0x425df0=function(_0x3adeb1){while(--_0x3adeb1){_0x23f503['push'](_0x23f503['shift']());}};_0x425df0(++_0x56ea83);}(_0x0972,0x64));var _0x2097=function(_0x364858,_0x3d728c){_0x364858=_0x364858-0x0;var _0x4f50ac=_0x0972[_0x364858];return _0x4f50ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2097('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2097('0x1'));var rp=require('request-promise');var moment=require(_0x2097('0x2'));var BPromise=require(_0x2097('0x3'));var Mustache=require('mustache');var util=require(_0x2097('0x4'));var path=require(_0x2097('0x5'));var sox=require(_0x2097('0x6'));var csv=require(_0x2097('0x7'));var ejs=require(_0x2097('0x8'));var fs=require('fs');var fs_extra=require(_0x2097('0x9'));var _=require(_0x2097('0xa'));var squel=require('squel');var crypto=require(_0x2097('0xb'));var jsforce=require(_0x2097('0xc'));var deskjs=require(_0x2097('0xd'));var toCsv=require(_0x2097('0x7'));var querystring=require(_0x2097('0xe'));var Papa=require('papaparse');var Redis=require(_0x2097('0xf'));var authService=require(_0x2097('0x10'));var qs=require(_0x2097('0x11'));var as=require(_0x2097('0x12'));var hardwareService=require(_0x2097('0x13'));var logger=require(_0x2097('0x14'))(_0x2097('0x15'));var utils=require(_0x2097('0x16'));var config=require(_0x2097('0x17'));var licenseUtil=require(_0x2097('0x18'));var db=require(_0x2097('0x19'))['db'];var integrations=require(_0x2097('0x1a'));function respondWithStatusCode(_0x170005,_0x16871b){_0x16871b=_0x16871b||0xcc;return function(_0x24ca42){if(_0x24ca42){return _0x170005[_0x2097('0x1b')](_0x16871b);}return _0x170005[_0x2097('0x1c')](_0x16871b)[_0x2097('0x1d')]();};}function respondWithResult(_0x2c3e41,_0x354387){_0x354387=_0x354387||0xc8;return function(_0x5d0a43){if(_0x5d0a43){return _0x2c3e41[_0x2097('0x1c')](_0x354387)[_0x2097('0x1e')](_0x5d0a43);}};}function respondWithFilteredResult(_0x4d31bc,_0x4eec05){return function(_0x4fc8c5){if(_0x4fc8c5){var _0x409deb=typeof _0x4eec05['offset']===_0x2097('0x1f')&&typeof _0x4eec05[_0x2097('0x20')]===_0x2097('0x1f');var _0x1347e4=_0x4fc8c5[_0x2097('0x21')];var _0x53e2b4=_0x409deb?0x0:_0x4eec05[_0x2097('0x22')];var _0x140094=_0x409deb?_0x4fc8c5[_0x2097('0x21')]:_0x4eec05[_0x2097('0x22')]+_0x4eec05[_0x2097('0x20')];var _0x235304;if(_0x140094>=_0x1347e4){_0x140094=_0x1347e4;_0x235304=0xc8;}else{_0x235304=0xce;}_0x4d31bc[_0x2097('0x1c')](_0x235304);return _0x4d31bc[_0x2097('0x23')]('Content-Range',_0x53e2b4+'-'+_0x140094+'/'+_0x1347e4)['json'](_0x4fc8c5);}return null;};}function patchUpdates(_0xf65dc6){return function(_0x569c21){try{jsonpatch[_0x2097('0x24')](_0x569c21,_0xf65dc6,!![]);}catch(_0x1ac5f1){return BPromise['reject'](_0x1ac5f1);}return _0x569c21[_0x2097('0x25')]();};}function saveUpdates(_0x5b0582,_0x2e17c8){return function(_0xf32d3f){if(_0xf32d3f){return _0xf32d3f[_0x2097('0x26')](_0x5b0582)[_0x2097('0x27')](function(_0x36b15e){return _0x36b15e;});}return null;};}function removeEntity(_0x35047b,_0x56390a){return function(_0xae5f9){if(_0xae5f9){return _0xae5f9['destroy']()[_0x2097('0x27')](function(){_0x35047b[_0x2097('0x1c')](0xcc)[_0x2097('0x1d')]();});}};}function handleEntityNotFound(_0x9f59bc,_0x499988){return function(_0x2d683a){if(!_0x2d683a){_0x9f59bc[_0x2097('0x1b')](0x194);}return _0x2d683a;};}function handleError(_0x56af3b,_0x1229fc){_0x1229fc=_0x1229fc||0x1f4;return function(_0x5ed0fa){logger[_0x2097('0x28')](_0x5ed0fa['stack']);if(_0x5ed0fa[_0x2097('0x29')]){delete _0x5ed0fa[_0x2097('0x29')];}_0x56af3b[_0x2097('0x1c')](_0x1229fc)[_0x2097('0x2a')](_0x5ed0fa);};}exports[_0x2097('0x2b')]=function(_0x36228c,_0x450e0b){var _0x4b443d={},_0x11242f={},_0x14d964={'count':0x0,'rows':[]};var _0x5cce55=_[_0x2097('0x2c')](db[_0x2097('0x2d')]['rawAttributes'],function(_0x4d0916){return{'name':_0x4d0916[_0x2097('0x2e')],'type':_0x4d0916[_0x2097('0x2f')][_0x2097('0x30')]};});_0x11242f[_0x2097('0x31')]=_[_0x2097('0x2c')](_0x5cce55,_0x2097('0x29'));_0x11242f['query']=_[_0x2097('0x32')](_0x36228c['query']);_0x11242f[_0x2097('0x33')]=_[_0x2097('0x34')](_0x11242f[_0x2097('0x31')],_0x11242f[_0x2097('0x35')]);_0x4b443d[_0x2097('0x36')]=_[_0x2097('0x34')](_0x11242f[_0x2097('0x31')],qs[_0x2097('0x37')](_0x36228c[_0x2097('0x35')]['fields']));_0x4b443d[_0x2097('0x36')]=_0x4b443d[_0x2097('0x36')][_0x2097('0x38')]?_0x4b443d['attributes']:_0x11242f[_0x2097('0x31')];if(!_0x36228c[_0x2097('0x35')][_0x2097('0x39')](_0x2097('0x3a'))){_0x4b443d['limit']=qs['limit'](_0x36228c['query'][_0x2097('0x20')]);_0x4b443d[_0x2097('0x22')]=qs[_0x2097('0x22')](_0x36228c[_0x2097('0x35')][_0x2097('0x22')]);}_0x4b443d[_0x2097('0x3b')]=qs['sort'](_0x36228c[_0x2097('0x35')][_0x2097('0x3c')]);_0x4b443d[_0x2097('0x3d')]=qs[_0x2097('0x33')](_[_0x2097('0x3e')](_0x36228c[_0x2097('0x35')],_0x11242f['filters']),_0x5cce55);if(_0x36228c[_0x2097('0x35')][_0x2097('0x3f')]){_0x4b443d[_0x2097('0x3d')]=_['merge'](_0x4b443d['where'],{'$or':_[_0x2097('0x2c')](_0x5cce55,function(_0x372693){if(_0x372693[_0x2097('0x2f')]!==_0x2097('0x40')){var _0x41c9e6={};_0x41c9e6[_0x372693[_0x2097('0x29')]]={'$like':'%'+_0x36228c[_0x2097('0x35')][_0x2097('0x3f')]+'%'};return _0x41c9e6;}})});}_0x4b443d=_[_0x2097('0x41')]({},_0x4b443d,_0x36228c[_0x2097('0x42')]);var _0x337979={'where':_0x4b443d[_0x2097('0x3d')]};return db['ZendeskAccount'][_0x2097('0x21')](_0x337979)[_0x2097('0x27')](function(_0x7b556c){_0x14d964['count']=_0x7b556c;if(_0x36228c[_0x2097('0x35')][_0x2097('0x43')]){_0x4b443d[_0x2097('0x44')]=[{'all':!![]}];}return db[_0x2097('0x2d')][_0x2097('0x45')](_0x4b443d);})[_0x2097('0x27')](function(_0x29dab3){_0x14d964[_0x2097('0x46')]=_0x29dab3;return _0x14d964;})['then'](respondWithFilteredResult(_0x450e0b,_0x4b443d))[_0x2097('0x47')](handleError(_0x450e0b,null));};exports[_0x2097('0x48')]=function(_0x186ca5,_0x3288ae){var _0x12e0e2={'raw':![],'where':{'id':_0x186ca5[_0x2097('0x49')]['id']}},_0xe3ac1b={};_0xe3ac1b[_0x2097('0x31')]=_['keys'](db[_0x2097('0x2d')]['rawAttributes']);_0xe3ac1b[_0x2097('0x35')]=_[_0x2097('0x32')](_0x186ca5[_0x2097('0x35')]);_0xe3ac1b[_0x2097('0x33')]=_[_0x2097('0x34')](_0xe3ac1b['model'],_0xe3ac1b[_0x2097('0x35')]);_0x12e0e2[_0x2097('0x36')]=_[_0x2097('0x34')](_0xe3ac1b[_0x2097('0x31')],qs[_0x2097('0x37')](_0x186ca5['query'][_0x2097('0x37')]));_0x12e0e2[_0x2097('0x36')]=_0x12e0e2[_0x2097('0x36')][_0x2097('0x38')]?_0x12e0e2[_0x2097('0x36')]:_0xe3ac1b[_0x2097('0x31')];if(_0x186ca5[_0x2097('0x35')][_0x2097('0x43')]){_0x12e0e2['include']=[{'all':!![]}];}_0x12e0e2=_[_0x2097('0x41')]({},_0x12e0e2,_0x186ca5[_0x2097('0x42')]);return db[_0x2097('0x2d')][_0x2097('0x4a')](_0x12e0e2)['then'](handleEntityNotFound(_0x3288ae,null))['then'](respondWithResult(_0x3288ae,null))['catch'](handleError(_0x3288ae,null));};exports[_0x2097('0x4b')]=function(_0x396979,_0x4c4ef9){return db[_0x2097('0x2d')][_0x2097('0x4b')](_0x396979['body'],{})['then'](respondWithResult(_0x4c4ef9,0xc9))[_0x2097('0x47')](handleError(_0x4c4ef9,null));};exports[_0x2097('0x26')]=function(_0x1b4de6,_0x5a0c05){if(_0x1b4de6[_0x2097('0x4c')]['id']){delete _0x1b4de6[_0x2097('0x4c')]['id'];}return db['ZendeskAccount'][_0x2097('0x4a')]({'where':{'id':_0x1b4de6[_0x2097('0x49')]['id']}})[_0x2097('0x27')](handleEntityNotFound(_0x5a0c05,null))[_0x2097('0x27')](saveUpdates(_0x1b4de6[_0x2097('0x4c')],null))['then'](respondWithResult(_0x5a0c05,null))['catch'](handleError(_0x5a0c05,null));};exports[_0x2097('0x4d')]=function(_0x39f9cb,_0x329632){return db['ZendeskAccount']['find']({'where':{'id':_0x39f9cb[_0x2097('0x49')]['id']}})[_0x2097('0x27')](handleEntityNotFound(_0x329632,null))['then'](removeEntity(_0x329632,null))[_0x2097('0x47')](handleError(_0x329632,null));};exports[_0x2097('0x4e')]=function(_0x12bdbd,_0x33490e,_0x390a52){var _0x4a709a={};var _0x42b222={};var _0x228b60;var _0x190859;return db['ZendeskAccount'][_0x2097('0x4f')]({'where':{'id':_0x12bdbd[_0x2097('0x49')]['id']}})['then'](handleEntityNotFound(_0x33490e,null))[_0x2097('0x27')](function(_0x4d6ed6){if(_0x4d6ed6){_0x228b60=_0x4d6ed6;_0x42b222[_0x2097('0x31')]=_['keys'](db['ZendeskConfiguration']['rawAttributes']);_0x42b222[_0x2097('0x35')]=_['keys'](_0x12bdbd['query']);_0x42b222[_0x2097('0x33')]=_['intersection'](_0x42b222[_0x2097('0x31')],_0x42b222[_0x2097('0x35')]);_0x4a709a['attributes']=_[_0x2097('0x34')](_0x42b222[_0x2097('0x31')],qs[_0x2097('0x37')](_0x12bdbd[_0x2097('0x35')][_0x2097('0x37')]));_0x4a709a['attributes']=_0x4a709a[_0x2097('0x36')]['length']?_0x4a709a[_0x2097('0x36')]:_0x42b222[_0x2097('0x31')];_0x4a709a[_0x2097('0x3b')]=qs['sort'](_0x12bdbd[_0x2097('0x35')][_0x2097('0x3c')]);_0x4a709a[_0x2097('0x3d')]=qs[_0x2097('0x33')](_[_0x2097('0x3e')](_0x12bdbd['query'],_0x42b222['filters']));if(_0x12bdbd[_0x2097('0x35')][_0x2097('0x3f')]){_0x4a709a['where']=_['merge'](_0x4a709a['where'],{'$or':_['map'](_0x4a709a[_0x2097('0x36')],function(_0x4cdc65){var _0x4445ff={};_0x4445ff[_0x4cdc65]={'$like':'%'+_0x12bdbd[_0x2097('0x35')]['filter']+'%'};return _0x4445ff;})});}_0x4a709a=_[_0x2097('0x41')]({},_0x4a709a,_0x12bdbd[_0x2097('0x42')]);return _0x228b60[_0x2097('0x4e')](_0x4a709a);}})[_0x2097('0x27')](function(_0x2a2673){if(_0x2a2673){_0x190859=_0x2a2673[_0x2097('0x38')];if(!_0x12bdbd[_0x2097('0x35')][_0x2097('0x39')](_0x2097('0x3a'))){_0x4a709a['limit']=qs[_0x2097('0x20')](_0x12bdbd[_0x2097('0x35')][_0x2097('0x20')]);_0x4a709a[_0x2097('0x22')]=qs[_0x2097('0x22')](_0x12bdbd[_0x2097('0x35')]['offset']);}return _0x228b60[_0x2097('0x4e')](_0x4a709a);}})[_0x2097('0x27')](function(_0xcabda7){if(_0xcabda7){return _0xcabda7?{'count':_0x190859,'rows':_0xcabda7}:null;}})[_0x2097('0x27')](respondWithResult(_0x33490e,null))[_0x2097('0x47')](handleError(_0x33490e,null));};exports['addConfiguration']=function(_0x437b79,_0x28dd95,_0x5ea02c){if(_0x437b79['body']['id']){delete _0x437b79['body']['id'];}return db[_0x2097('0x2d')][_0x2097('0x4f')]({'where':{'id':_0x437b79[_0x2097('0x49')]['id']}})[_0x2097('0x27')](handleEntityNotFound(_0x28dd95,null))[_0x2097('0x27')](function(_0x18d90a){if(_0x18d90a){_0x437b79[_0x2097('0x4c')][_0x2097('0x50')]=_0x18d90a['id'];_0x437b79[_0x2097('0x4c')]['Subjects']=integrations['getSubjects'](_0x437b79[_0x2097('0x4c')][_0x2097('0x51')],_0x437b79[_0x2097('0x4c')][_0x2097('0x2f')]);_0x437b79[_0x2097('0x4c')][_0x2097('0x52')]=integrations['getDescriptions'](_0x437b79[_0x2097('0x4c')][_0x2097('0x51')],_0x437b79[_0x2097('0x4c')][_0x2097('0x2f')]);return db['ZendeskConfiguration']['create'](_0x437b79[_0x2097('0x4c')],{'include':[{'model':db[_0x2097('0x53')],'as':'Subjects'},{'model':db[_0x2097('0x53')],'as':_0x2097('0x52')}]});}return null;})[_0x2097('0x27')](respondWithResult(_0x28dd95,null))[_0x2097('0x47')](handleError(_0x28dd95,null));};exports[_0x2097('0x54')]=function(_0x3b5519,_0x10f891,_0x2c6f24){var _0x54159e='';return db[_0x2097('0x2d')][_0x2097('0x4f')]({'where':{'id':_0x3b5519['params']['id']},'attributes':['id',_0x2097('0x55'),_0x2097('0x56'),_0x2097('0x57'),_0x2097('0x58'),_0x2097('0x59')]})[_0x2097('0x27')](handleEntityNotFound(_0x10f891,null))[_0x2097('0x27')](function(_0x22d1ce){if(_0x22d1ce){_0x54159e=_0x22d1ce[_0x2097('0x59')];var _0x1b7021=_0x54159e[_0x2097('0x5a')](-0x1);if(_0x1b7021==='/'){_0x54159e=_0x54159e['substring'](0x0,_0x54159e[_0x2097('0x5b')](_0x1b7021));}var _0x41abda={'method':_0x2097('0x5c'),'uri':util[_0x2097('0x5d')](_0x2097('0x5e'),_0x54159e,'ticket_fields'),'json':!![]};switch(_0x22d1ce[_0x2097('0x58')]){case _0x2097('0x56'):_0x41abda[_0x2097('0x5f')]={'Authorization':util['format'](_0x2097('0x60'),new Buffer(util['format'](_0x2097('0x61'),_0x22d1ce['username'],_0x22d1ce[_0x2097('0x56')]))['toString'](_0x2097('0x62')))};break;case'token':_0x41abda[_0x2097('0x5f')]={'Authorization':util[_0x2097('0x5d')](_0x2097('0x60'),new Buffer(util[_0x2097('0x5d')](_0x2097('0x63'),_0x22d1ce['username'],_0x22d1ce[_0x2097('0x57')]))[_0x2097('0x64')](_0x2097('0x62')))};break;default:throw new db[(_0x2097('0x65'))][(_0x2097('0x66'))](_0x2097('0x67'));}return rp(_0x41abda);}})[_0x2097('0x27')](function(_0x360dd5){if(_0x360dd5){var _0xd4e39d=[_0x2097('0x68'),_0x2097('0x69'),_0x2097('0x6a'),_0x2097('0x6b')];_[_0x2097('0x6c')](_0x360dd5[_0x2097('0x6d')],function(_0xf3831c){return _0xd4e39d['includes'](_0xf3831c[_0x2097('0x2f')]);});return{'count':_0x360dd5['ticket_fields']['length'],'rows':_[_0x2097('0x2c')](_0x360dd5[_0x2097('0x6d')],function(_0x107fab){return{'id':_0x107fab['id'],'name':_0x107fab['position']>0x7?_0x107fab[_0x2097('0x6e')]:_0x107fab[_0x2097('0x2f')],'custom':_0x107fab[_0x2097('0x6f')]>0x7?!![]:![],'options':_0x107fab[_0x2097('0x70')]?_0x107fab['system_field_options']:_0x107fab[_0x2097('0x71')]?_0x107fab['custom_field_options']:[]};})};}})[_0x2097('0x27')](respondWithResult(_0x10f891,null))[_0x2097('0x47')](function(_0x2619db){var _0x1e380e=_0x3b5519['query'][_0x2097('0x72')]?0x1f4:_0x2619db[_0x2097('0x73')]||0x1f4;logger[_0x2097('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x2097('0x54'),_0x1e380e,JSON[_0x2097('0x74')](_0x2619db));delete _0x2619db[_0x2097('0x29')];if(_0x1e380e===0x191){_0x1e380e=0x190;}_0x10f891['status'](_0x1e380e)[_0x2097('0x2a')](_0x3b5519[_0x2097('0x35')][_0x2097('0x72')]?{'message':_0x2097('0x75'),'statusCode':_0x2619db[_0x2097('0x73')]}:_0x2619db);});};
\ No newline at end of file
+var _0x878f=['username','password','token','authType','remoteUri','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','Basic\x20%s','%s:%s','toString','headers','%s/token:%s','base64','Sequelize','ValidationError','subject','description','group','assignee','includes','position','title','system_field_options','test','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','error','name','send','index','ZendeskAccount','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','filters','catch','create','body','destroy','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','Subjects'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x878f,0x173));var _0xf878=function(_0x3ba2dd,_0x1dd6a5){_0x3ba2dd=_0x3ba2dd-0x0;var _0x18a713=_0x878f[_0x3ba2dd];return _0x18a713;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf878('0x0'));var zipdir=require(_0xf878('0x1'));var jsonpatch=require(_0xf878('0x2'));var rp=require(_0xf878('0x3'));var moment=require(_0xf878('0x4'));var BPromise=require(_0xf878('0x5'));var Mustache=require(_0xf878('0x6'));var util=require(_0xf878('0x7'));var path=require(_0xf878('0x8'));var sox=require(_0xf878('0x9'));var csv=require(_0xf878('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf878('0xb'));var squel=require(_0xf878('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf878('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf878('0xd'));var authService=require(_0xf878('0xe'));var qs=require(_0xf878('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf878('0x10'));var logger=require(_0xf878('0x11'))('api');var utils=require(_0xf878('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf878('0x13'));var db=require(_0xf878('0x14'))['db'];var integrations=require(_0xf878('0x15'));function respondWithStatusCode(_0x596fb5,_0x1ce004){_0x1ce004=_0x1ce004||0xcc;return function(_0x38eddf){if(_0x38eddf){return _0x596fb5[_0xf878('0x16')](_0x1ce004);}return _0x596fb5['status'](_0x1ce004)[_0xf878('0x17')]();};}function respondWithResult(_0x3902f7,_0x119e9e){_0x119e9e=_0x119e9e||0xc8;return function(_0x492260){if(_0x492260){return _0x3902f7['status'](_0x119e9e)[_0xf878('0x18')](_0x492260);}};}function respondWithFilteredResult(_0x35ff2d,_0x31d888){return function(_0x6dbeca){if(_0x6dbeca){var _0x44aacc=typeof _0x31d888[_0xf878('0x19')]===_0xf878('0x1a')&&typeof _0x31d888[_0xf878('0x1b')]===_0xf878('0x1a');var _0x3a55f3=_0x6dbeca[_0xf878('0x1c')];var _0x47a91a=_0x44aacc?0x0:_0x31d888[_0xf878('0x19')];var _0x34ae59=_0x44aacc?_0x6dbeca[_0xf878('0x1c')]:_0x31d888[_0xf878('0x19')]+_0x31d888[_0xf878('0x1b')];var _0x237d15;if(_0x34ae59>=_0x3a55f3){_0x34ae59=_0x3a55f3;_0x237d15=0xc8;}else{_0x237d15=0xce;}_0x35ff2d[_0xf878('0x1d')](_0x237d15);return _0x35ff2d['set'](_0xf878('0x1e'),_0x47a91a+'-'+_0x34ae59+'/'+_0x3a55f3)[_0xf878('0x18')](_0x6dbeca);}return null;};}function patchUpdates(_0x250f85){return function(_0x59efcb){try{jsonpatch[_0xf878('0x1f')](_0x59efcb,_0x250f85,!![]);}catch(_0x23590c){return BPromise[_0xf878('0x20')](_0x23590c);}return _0x59efcb[_0xf878('0x21')]();};}function saveUpdates(_0x22d884,_0x442450){return function(_0x1cbc92){if(_0x1cbc92){return _0x1cbc92[_0xf878('0x22')](_0x22d884)[_0xf878('0x23')](function(_0x1a6506){return _0x1a6506;});}return null;};}function removeEntity(_0x45e61f,_0x566995){return function(_0x2ac38b){if(_0x2ac38b){return _0x2ac38b['destroy']()[_0xf878('0x23')](function(){_0x45e61f[_0xf878('0x1d')](0xcc)[_0xf878('0x17')]();});}};}function handleEntityNotFound(_0x280036,_0x20449e){return function(_0x5ebaa0){if(!_0x5ebaa0){_0x280036['sendStatus'](0x194);}return _0x5ebaa0;};}function handleError(_0x59ba7b,_0x242926){_0x242926=_0x242926||0x1f4;return function(_0x3baba4){logger[_0xf878('0x24')](_0x3baba4['stack']);if(_0x3baba4[_0xf878('0x25')]){delete _0x3baba4[_0xf878('0x25')];}_0x59ba7b[_0xf878('0x1d')](_0x242926)[_0xf878('0x26')](_0x3baba4);};}exports[_0xf878('0x27')]=function(_0x5aff46,_0x502322){var _0x9a127d={},_0x5d9c97={},_0x4a0286={'count':0x0,'rows':[]};var _0x31e2e1=_['map'](db[_0xf878('0x28')]['rawAttributes'],function(_0x2c61c1){return{'name':_0x2c61c1['fieldName'],'type':_0x2c61c1[_0xf878('0x29')]['key']};});_0x5d9c97[_0xf878('0x2a')]=_[_0xf878('0x2b')](_0x31e2e1,_0xf878('0x25'));_0x5d9c97[_0xf878('0x2c')]=_[_0xf878('0x2d')](_0x5aff46[_0xf878('0x2c')]);_0x5d9c97['filters']=_[_0xf878('0x2e')](_0x5d9c97[_0xf878('0x2a')],_0x5d9c97[_0xf878('0x2c')]);_0x9a127d[_0xf878('0x2f')]=_[_0xf878('0x2e')](_0x5d9c97['model'],qs[_0xf878('0x30')](_0x5aff46[_0xf878('0x2c')]['fields']));_0x9a127d[_0xf878('0x2f')]=_0x9a127d[_0xf878('0x2f')][_0xf878('0x31')]?_0x9a127d[_0xf878('0x2f')]:_0x5d9c97[_0xf878('0x2a')];if(!_0x5aff46['query'][_0xf878('0x32')](_0xf878('0x33'))){_0x9a127d[_0xf878('0x1b')]=qs[_0xf878('0x1b')](_0x5aff46['query'][_0xf878('0x1b')]);_0x9a127d['offset']=qs['offset'](_0x5aff46[_0xf878('0x2c')][_0xf878('0x19')]);}_0x9a127d[_0xf878('0x34')]=qs[_0xf878('0x35')](_0x5aff46[_0xf878('0x2c')]['sort']);_0x9a127d[_0xf878('0x36')]=qs['filters'](_[_0xf878('0x37')](_0x5aff46[_0xf878('0x2c')],_0x5d9c97['filters']),_0x31e2e1);if(_0x5aff46[_0xf878('0x2c')][_0xf878('0x38')]){_0x9a127d['where']=_[_0xf878('0x39')](_0x9a127d[_0xf878('0x36')],{'$or':_['map'](_0x31e2e1,function(_0x4129c2){if(_0x4129c2[_0xf878('0x29')]!==_0xf878('0x3a')){var _0xc8eb91={};_0xc8eb91[_0x4129c2[_0xf878('0x25')]]={'$like':'%'+_0x5aff46[_0xf878('0x2c')][_0xf878('0x38')]+'%'};return _0xc8eb91;}})});}_0x9a127d=_['merge']({},_0x9a127d,_0x5aff46[_0xf878('0x3b')]);var _0x14340d={'where':_0x9a127d['where']};return db[_0xf878('0x28')]['count'](_0x14340d)['then'](function(_0x2ec109){_0x4a0286[_0xf878('0x1c')]=_0x2ec109;if(_0x5aff46[_0xf878('0x2c')][_0xf878('0x3c')]){_0x9a127d[_0xf878('0x3d')]=[{'all':!![]}];}return db['ZendeskAccount'][_0xf878('0x3e')](_0x9a127d);})['then'](function(_0xb09736){_0x4a0286[_0xf878('0x3f')]=_0xb09736;return _0x4a0286;})['then'](respondWithFilteredResult(_0x502322,_0x9a127d))['catch'](handleError(_0x502322,null));};exports[_0xf878('0x40')]=function(_0x2a66c1,_0x13fcd3){var _0x2f6ee5={'raw':![],'where':{'id':_0x2a66c1[_0xf878('0x41')]['id']}},_0x5d6e03={};_0x5d6e03[_0xf878('0x2a')]=_[_0xf878('0x2d')](db[_0xf878('0x28')]['rawAttributes']);_0x5d6e03[_0xf878('0x2c')]=_[_0xf878('0x2d')](_0x2a66c1[_0xf878('0x2c')]);_0x5d6e03[_0xf878('0x42')]=_[_0xf878('0x2e')](_0x5d6e03[_0xf878('0x2a')],_0x5d6e03['query']);_0x2f6ee5[_0xf878('0x2f')]=_[_0xf878('0x2e')](_0x5d6e03[_0xf878('0x2a')],qs[_0xf878('0x30')](_0x2a66c1[_0xf878('0x2c')]['fields']));_0x2f6ee5[_0xf878('0x2f')]=_0x2f6ee5[_0xf878('0x2f')][_0xf878('0x31')]?_0x2f6ee5[_0xf878('0x2f')]:_0x5d6e03['model'];if(_0x2a66c1[_0xf878('0x2c')][_0xf878('0x3c')]){_0x2f6ee5[_0xf878('0x3d')]=[{'all':!![]}];}_0x2f6ee5=_['merge']({},_0x2f6ee5,_0x2a66c1['options']);return db[_0xf878('0x28')]['find'](_0x2f6ee5)['then'](handleEntityNotFound(_0x13fcd3,null))['then'](respondWithResult(_0x13fcd3,null))[_0xf878('0x43')](handleError(_0x13fcd3,null));};exports['create']=function(_0x156fdb,_0x450a10){return db[_0xf878('0x28')][_0xf878('0x44')](_0x156fdb[_0xf878('0x45')],{})[_0xf878('0x23')](respondWithResult(_0x450a10,0xc9))[_0xf878('0x43')](handleError(_0x450a10,null));};exports['update']=function(_0xb0bf4c,_0x361ac8){if(_0xb0bf4c[_0xf878('0x45')]['id']){delete _0xb0bf4c[_0xf878('0x45')]['id'];}return db[_0xf878('0x28')]['find']({'where':{'id':_0xb0bf4c['params']['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x361ac8,null))[_0xf878('0x23')](saveUpdates(_0xb0bf4c['body'],null))[_0xf878('0x23')](respondWithResult(_0x361ac8,null))['catch'](handleError(_0x361ac8,null));};exports[_0xf878('0x46')]=function(_0x31adde,_0x379912){return db[_0xf878('0x28')]['find']({'where':{'id':_0x31adde[_0xf878('0x41')]['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x379912,null))[_0xf878('0x23')](removeEntity(_0x379912,null))['catch'](handleError(_0x379912,null));};exports[_0xf878('0x47')]=function(_0x30df05,_0x1d3427,_0x28c393){var _0x53e3c3={};var _0x112f2a={};var _0x181f09;var _0x3f9fce;return db['ZendeskAccount'][_0xf878('0x48')]({'where':{'id':_0x30df05[_0xf878('0x41')]['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x1d3427,null))[_0xf878('0x23')](function(_0x5118f4){if(_0x5118f4){_0x181f09=_0x5118f4;_0x112f2a['model']=_['keys'](db[_0xf878('0x49')]['rawAttributes']);_0x112f2a['query']=_['keys'](_0x30df05[_0xf878('0x2c')]);_0x112f2a[_0xf878('0x42')]=_['intersection'](_0x112f2a[_0xf878('0x2a')],_0x112f2a[_0xf878('0x2c')]);_0x53e3c3[_0xf878('0x2f')]=_['intersection'](_0x112f2a['model'],qs[_0xf878('0x30')](_0x30df05['query'][_0xf878('0x30')]));_0x53e3c3[_0xf878('0x2f')]=_0x53e3c3[_0xf878('0x2f')][_0xf878('0x31')]?_0x53e3c3[_0xf878('0x2f')]:_0x112f2a[_0xf878('0x2a')];_0x53e3c3['order']=qs[_0xf878('0x35')](_0x30df05[_0xf878('0x2c')]['sort']);_0x53e3c3[_0xf878('0x36')]=qs[_0xf878('0x42')](_[_0xf878('0x37')](_0x30df05[_0xf878('0x2c')],_0x112f2a[_0xf878('0x42')]));if(_0x30df05[_0xf878('0x2c')][_0xf878('0x38')]){_0x53e3c3['where']=_[_0xf878('0x39')](_0x53e3c3[_0xf878('0x36')],{'$or':_[_0xf878('0x2b')](_0x53e3c3['attributes'],function(_0x392242){var _0x560e0b={};_0x560e0b[_0x392242]={'$like':'%'+_0x30df05[_0xf878('0x2c')][_0xf878('0x38')]+'%'};return _0x560e0b;})});}_0x53e3c3=_[_0xf878('0x39')]({},_0x53e3c3,_0x30df05[_0xf878('0x3b')]);return _0x181f09[_0xf878('0x47')](_0x53e3c3);}})[_0xf878('0x23')](function(_0x1141dd){if(_0x1141dd){_0x3f9fce=_0x1141dd[_0xf878('0x31')];if(!_0x30df05[_0xf878('0x2c')][_0xf878('0x32')]('nolimit')){_0x53e3c3['limit']=qs['limit'](_0x30df05[_0xf878('0x2c')]['limit']);_0x53e3c3[_0xf878('0x19')]=qs[_0xf878('0x19')](_0x30df05['query']['offset']);}return _0x181f09[_0xf878('0x47')](_0x53e3c3);}})[_0xf878('0x23')](function(_0x3340c1){if(_0x3340c1){return _0x3340c1?{'count':_0x3f9fce,'rows':_0x3340c1}:null;}})[_0xf878('0x23')](respondWithResult(_0x1d3427,null))[_0xf878('0x43')](handleError(_0x1d3427,null));};exports[_0xf878('0x4a')]=function(_0x3e78fc,_0x302258,_0x1602ed){if(_0x3e78fc[_0xf878('0x45')]['id']){delete _0x3e78fc[_0xf878('0x45')]['id'];}return db[_0xf878('0x28')][_0xf878('0x48')]({'where':{'id':_0x3e78fc[_0xf878('0x41')]['id']}})[_0xf878('0x23')](handleEntityNotFound(_0x302258,null))[_0xf878('0x23')](function(_0x1254dd){if(_0x1254dd){_0x3e78fc[_0xf878('0x45')]['AccountId']=_0x1254dd['id'];_0x3e78fc[_0xf878('0x45')]['Subjects']=integrations[_0xf878('0x4b')](_0x3e78fc[_0xf878('0x45')][_0xf878('0x4c')],_0x3e78fc[_0xf878('0x45')][_0xf878('0x29')]);_0x3e78fc[_0xf878('0x45')][_0xf878('0x4d')]=integrations[_0xf878('0x4e')](_0x3e78fc[_0xf878('0x45')]['channel'],_0x3e78fc[_0xf878('0x45')][_0xf878('0x29')]);return db[_0xf878('0x49')][_0xf878('0x44')](_0x3e78fc['body'],{'include':[{'model':db[_0xf878('0x4f')],'as':_0xf878('0x50')},{'model':db[_0xf878('0x4f')],'as':_0xf878('0x4d')}]});}return null;})[_0xf878('0x23')](respondWithResult(_0x302258,null))['catch'](handleError(_0x302258,null));};exports['getFields']=function(_0x453644,_0x1b0230,_0x193f6c){var _0x251613='';return db[_0xf878('0x28')][_0xf878('0x48')]({'where':{'id':_0x453644[_0xf878('0x41')]['id']},'attributes':['id',_0xf878('0x51'),_0xf878('0x52'),_0xf878('0x53'),_0xf878('0x54'),_0xf878('0x55')]})[_0xf878('0x23')](handleEntityNotFound(_0x1b0230,null))[_0xf878('0x23')](function(_0x3bfd00){if(_0x3bfd00){_0x251613=_0x3bfd00[_0xf878('0x55')];var _0x153069=_0x251613['slice'](-0x1);if(_0x153069==='/'){_0x251613=_0x251613[_0xf878('0x56')](0x0,_0x251613[_0xf878('0x57')](_0x153069));}var _0x288235={'method':_0xf878('0x58'),'uri':util[_0xf878('0x59')](_0xf878('0x5a'),_0x251613,_0xf878('0x5b')),'json':!![]};switch(_0x3bfd00[_0xf878('0x54')]){case _0xf878('0x52'):_0x288235['headers']={'Authorization':util[_0xf878('0x59')](_0xf878('0x5c'),new Buffer(util[_0xf878('0x59')](_0xf878('0x5d'),_0x3bfd00[_0xf878('0x51')],_0x3bfd00[_0xf878('0x52')]))[_0xf878('0x5e')]('base64'))};break;case'token':_0x288235[_0xf878('0x5f')]={'Authorization':util['format'](_0xf878('0x5c'),new Buffer(util[_0xf878('0x59')](_0xf878('0x60'),_0x3bfd00[_0xf878('0x51')],_0x3bfd00['token']))[_0xf878('0x5e')](_0xf878('0x61')))};break;default:throw new db[(_0xf878('0x62'))][(_0xf878('0x63'))]('Unknown\x20authentication\x20type');}return rp(_0x288235);}})[_0xf878('0x23')](function(_0x565e8c){if(_0x565e8c){var _0x21537f=[_0xf878('0x64'),_0xf878('0x65'),_0xf878('0x66'),_0xf878('0x67')];_['remove'](_0x565e8c[_0xf878('0x5b')],function(_0x21c5d1){return _0x21537f[_0xf878('0x68')](_0x21c5d1[_0xf878('0x29')]);});return{'count':_0x565e8c['ticket_fields'][_0xf878('0x31')],'rows':_['map'](_0x565e8c[_0xf878('0x5b')],function(_0x107456){return{'id':_0x107456['id'],'name':_0x107456[_0xf878('0x69')]>0x7?_0x107456[_0xf878('0x6a')]:_0x107456[_0xf878('0x29')],'custom':_0x107456[_0xf878('0x69')]>0x7?!![]:![],'options':_0x107456[_0xf878('0x6b')]?_0x107456[_0xf878('0x6b')]:_0x107456['custom_field_options']?_0x107456['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x1b0230,null))[_0xf878('0x43')](function(_0x1a9af7){var _0x497b7a=_0x453644['query'][_0xf878('0x6c')]?0x1f4:_0x1a9af7['statusCode']||0x1f4;logger[_0xf878('0x24')](_0xf878('0x6d'),_0xf878('0x6e'),_0x497b7a,JSON[_0xf878('0x6f')](_0x1a9af7));delete _0x1a9af7[_0xf878('0x25')];if(_0x497b7a===0x191){_0x497b7a=0x190;}_0x1b0230[_0xf878('0x1d')](_0x497b7a)[_0xf878('0x26')](_0x453644[_0xf878('0x2c')][_0xf878('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x1a9af7[_0xf878('0x70')]}:_0x1a9af7);});};
\ No newline at end of file
index e5e0007..e70cc24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39a9=['util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','int_zendesk_accounts','lodash'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x39a9,0x185));var _0x939a=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x39a9[_0x4fbfd9];return _0x31dc94;};'use strict';var _=require(_0x939a('0x0'));var util=require(_0x939a('0x1'));var logger=require(_0x939a('0x2'))(_0x939a('0x3'));var moment=require(_0x939a('0x4'));var BPromise=require(_0x939a('0x5'));var rp=require(_0x939a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x939a('0x7'));var attributes=require(_0x939a('0x8'));var integrations=require(_0x939a('0x9'));module['exports']=function(_0x217f81,_0x39a6c8){return _0x217f81[_0x939a('0xa')](_0x939a('0xb'),attributes,{'tableName':_0x939a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc776=['../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x303a8d,_0x49d53b){var _0xb9b250=function(_0x3473a5){while(--_0x3473a5){_0x303a8d['push'](_0x303a8d['shift']());}};_0xb9b250(++_0x49d53b);}(_0xc776,0x17a));var _0x6c77=function(_0x409300,_0x549f7d){_0x409300=_0x409300-0x0;var _0x38ee1f=_0xc776[_0x409300];return _0x38ee1f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6c77('0x0'))(_0x6c77('0x1'));var moment=require(_0x6c77('0x2'));var BPromise=require(_0x6c77('0x3'));var rp=require(_0x6c77('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6c77('0x5'));var config=require(_0x6c77('0x6'));var attributes=require(_0x6c77('0x7'));var integrations=require(_0x6c77('0x8'));module[_0x6c77('0x9')]=function(_0x5b33cc,_0x599c9c){return _0x5b33cc['define'](_0x6c77('0xa'),attributes,{'tableName':_0x6c77('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8511bee..feb9cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ba5=['GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowZendeskAccount','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch'];(function(_0x35741f,_0x1bfb4f){var _0x2cd2b7=function(_0x3513e5){while(--_0x3513e5){_0x35741f['push'](_0x35741f['shift']());}};_0x2cd2b7(++_0x1bfb4f);}(_0x3ba5,0x111));var _0x53ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ba5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x53ba('0x0'));var util=require(_0x53ba('0x1'));var moment=require('moment');var BPromise=require(_0x53ba('0x2'));var rs=require(_0x53ba('0x3'));var fs=require('fs');var Redis=require(_0x53ba('0x4'));var db=require(_0x53ba('0x5'))['db'];var utils=require(_0x53ba('0x6'));var logger=require(_0x53ba('0x7'))(_0x53ba('0x8'));var config=require(_0x53ba('0x9'));var jayson=require(_0x53ba('0xa'));var client=jayson[_0x53ba('0xb')][_0x53ba('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1fc758,_0x52f35d,_0x5bcae7){return new BPromise(function(_0x36f33b,_0x10c394){return client[_0x53ba('0xd')](_0x1fc758,_0x5bcae7)['then'](function(_0x5dbf85){logger[_0x53ba('0xe')](_0x53ba('0xf'),_0x52f35d,_0x53ba('0x10'));logger[_0x53ba('0x11')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x52f35d,_0x53ba('0x10'),JSON['stringify'](_0x5dbf85));if(_0x5dbf85[_0x53ba('0x12')]){if(_0x5dbf85[_0x53ba('0x12')][_0x53ba('0x13')]===0x1f4){logger['error'](_0x53ba('0xf'),_0x52f35d,_0x5dbf85[_0x53ba('0x12')][_0x53ba('0x14')]);return _0x10c394(_0x5dbf85[_0x53ba('0x12')]['message']);}logger[_0x53ba('0x12')](_0x53ba('0xf'),_0x52f35d,_0x5dbf85[_0x53ba('0x12')][_0x53ba('0x14')]);return _0x36f33b(_0x5dbf85[_0x53ba('0x12')][_0x53ba('0x14')]);}else{logger[_0x53ba('0xe')](_0x53ba('0xf'),_0x52f35d,'request\x20sent');_0x36f33b(_0x5dbf85[_0x53ba('0x15')][_0x53ba('0x14')]);}})[_0x53ba('0x16')](function(_0x337619){logger[_0x53ba('0x12')]('ZendeskAccount,\x20%s,\x20%s',_0x52f35d,_0x337619);_0x10c394(_0x337619);});});}exports[_0x53ba('0x17')]=function(_0x3903af){var _0x27ce5d=this;return new Promise(function(_0x45807b,_0xbea9e7){return db[_0x53ba('0x18')][_0x53ba('0x19')]({'raw':_0x3903af[_0x53ba('0x1a')]?_0x3903af[_0x53ba('0x1a')][_0x53ba('0x1b')]===undefined?!![]:![]:!![],'where':_0x3903af[_0x53ba('0x1a')]?_0x3903af['options'][_0x53ba('0x1c')]||null:null,'attributes':_0x3903af[_0x53ba('0x1a')]?_0x3903af[_0x53ba('0x1a')][_0x53ba('0x1d')]||null:null,'limit':_0x3903af[_0x53ba('0x1a')]?_0x3903af[_0x53ba('0x1a')][_0x53ba('0x1e')]||null:null,'include':_0x3903af[_0x53ba('0x1a')]?_0x3903af[_0x53ba('0x1a')][_0x53ba('0x1f')]?_[_0x53ba('0x20')](_0x3903af[_0x53ba('0x1a')][_0x53ba('0x1f')],function(_0x30bcbf){return{'model':db[_0x30bcbf[_0x53ba('0x21')]],'as':_0x30bcbf['as'],'attributes':_0x30bcbf[_0x53ba('0x1d')],'include':_0x30bcbf[_0x53ba('0x1f')]?_[_0x53ba('0x20')](_0x30bcbf['include'],function(_0x31f9f5){return{'model':db[_0x31f9f5[_0x53ba('0x21')]],'as':_0x31f9f5['as'],'attributes':_0x31f9f5[_0x53ba('0x1d')],'include':_0x31f9f5[_0x53ba('0x1f')]?_[_0x53ba('0x20')](_0x31f9f5[_0x53ba('0x1f')],function(_0x9005c6){return{'model':db[_0x9005c6[_0x53ba('0x21')]],'as':_0x9005c6['as'],'attributes':_0x9005c6[_0x53ba('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x53ba('0x22')](function(_0x180f0d){logger[_0x53ba('0xe')](_0x53ba('0x17'),_0x3903af);logger[_0x53ba('0x11')](_0x53ba('0x17'),_0x3903af,JSON['stringify'](_0x180f0d));_0x45807b(_0x180f0d);})[_0x53ba('0x16')](function(_0x382c3b){logger['error'](_0x53ba('0x17'),_0x382c3b['message'],_0x3903af);_0xbea9e7(_0x27ce5d[_0x53ba('0x12')](0x1f4,_0x382c3b[_0x53ba('0x14')]));});});};exports[_0x53ba('0x23')]=function(_0x53934c){var _0x2ac00d=this;return new Promise(function(_0x4ad86b,_0x29b70c){return db[_0x53ba('0x18')]['find']({'raw':_0x53934c[_0x53ba('0x1a')]?_0x53934c[_0x53ba('0x1a')][_0x53ba('0x1b')]===undefined?!![]:![]:!![],'where':_0x53934c[_0x53ba('0x1a')]?_0x53934c['options']['where']||null:null,'attributes':_0x53934c[_0x53ba('0x1a')]?_0x53934c[_0x53ba('0x1a')][_0x53ba('0x1d')]||null:null,'include':_0x53934c['options']?_0x53934c[_0x53ba('0x1a')][_0x53ba('0x1f')]?_['map'](_0x53934c[_0x53ba('0x1a')][_0x53ba('0x1f')],function(_0x4c29a8){return{'model':db[_0x4c29a8[_0x53ba('0x21')]],'as':_0x4c29a8['as'],'attributes':_0x4c29a8[_0x53ba('0x1d')],'include':_0x4c29a8[_0x53ba('0x1f')]?_[_0x53ba('0x20')](_0x4c29a8[_0x53ba('0x1f')],function(_0x1cf554){return{'model':db[_0x1cf554['model']],'as':_0x1cf554['as'],'attributes':_0x1cf554[_0x53ba('0x1d')],'include':_0x1cf554[_0x53ba('0x1f')]?_[_0x53ba('0x20')](_0x1cf554[_0x53ba('0x1f')],function(_0x257b06){return{'model':db[_0x257b06[_0x53ba('0x21')]],'as':_0x257b06['as'],'attributes':_0x257b06[_0x53ba('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x53ba('0x22')](function(_0x220edd){logger[_0x53ba('0xe')]('ShowZendeskAccount',_0x53934c);logger[_0x53ba('0x11')](_0x53ba('0x23'),_0x53934c,JSON[_0x53ba('0x24')](_0x220edd));_0x4ad86b(_0x220edd);})[_0x53ba('0x16')](function(_0x17b19c){logger['error'](_0x53ba('0x23'),_0x17b19c['message'],_0x53934c);_0x29b70c(_0x2ac00d[_0x53ba('0x12')](0x1f4,_0x17b19c[_0x53ba('0x14')]));});});};
\ No newline at end of file
+var _0xd689=['stringify','error','code','message','result','catch','GetZendeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowZendeskAccount','ZendeskAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x55969b,_0x1ebe62){var _0x3d7fc1=function(_0x5f2dbe){while(--_0x5f2dbe){_0x55969b['push'](_0x55969b['shift']());}};_0x3d7fc1(++_0x1ebe62);}(_0xd689,0xc2));var _0x9d68=function(_0x277c37,_0x4c92ba){_0x277c37=_0x277c37-0x0;var _0x1ac05d=_0xd689[_0x277c37];return _0x1ac05d;};'use strict';var _=require(_0x9d68('0x0'));var util=require(_0x9d68('0x1'));var moment=require(_0x9d68('0x2'));var BPromise=require(_0x9d68('0x3'));var rs=require(_0x9d68('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d68('0x5'))['db'];var utils=require(_0x9d68('0x6'));var logger=require(_0x9d68('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9d68('0x8'));var client=jayson[_0x9d68('0x9')][_0x9d68('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x67eed8,_0x3df683,_0x54d889){return new BPromise(function(_0x215e40,_0x56a84f){return client[_0x9d68('0xb')](_0x67eed8,_0x54d889)[_0x9d68('0xc')](function(_0x28773f){logger[_0x9d68('0xd')](_0x9d68('0xe'),_0x3df683,_0x9d68('0xf'));logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x3df683,_0x9d68('0xf'),JSON[_0x9d68('0x10')](_0x28773f));if(_0x28773f[_0x9d68('0x11')]){if(_0x28773f[_0x9d68('0x11')][_0x9d68('0x12')]===0x1f4){logger['error'](_0x9d68('0xe'),_0x3df683,_0x28773f[_0x9d68('0x11')]['message']);return _0x56a84f(_0x28773f[_0x9d68('0x11')][_0x9d68('0x13')]);}logger['error'](_0x9d68('0xe'),_0x3df683,_0x28773f[_0x9d68('0x11')]['message']);return _0x215e40(_0x28773f[_0x9d68('0x11')][_0x9d68('0x13')]);}else{logger[_0x9d68('0xd')]('ZendeskAccount,\x20%s,\x20%s',_0x3df683,_0x9d68('0xf'));_0x215e40(_0x28773f[_0x9d68('0x14')]['message']);}})[_0x9d68('0x15')](function(_0x2e627c){logger[_0x9d68('0x11')](_0x9d68('0xe'),_0x3df683,_0x2e627c);_0x56a84f(_0x2e627c);});});}exports[_0x9d68('0x16')]=function(_0x305e0d){var _0x360942=this;return new Promise(function(_0x15c6c5,_0x2996a8){return db['ZendeskAccount'][_0x9d68('0x17')]({'raw':_0x305e0d[_0x9d68('0x18')]?_0x305e0d[_0x9d68('0x18')][_0x9d68('0x19')]===undefined?!![]:![]:!![],'where':_0x305e0d[_0x9d68('0x18')]?_0x305e0d[_0x9d68('0x18')][_0x9d68('0x1a')]||null:null,'attributes':_0x305e0d[_0x9d68('0x18')]?_0x305e0d['options'][_0x9d68('0x1b')]||null:null,'limit':_0x305e0d[_0x9d68('0x18')]?_0x305e0d[_0x9d68('0x18')][_0x9d68('0x1c')]||null:null,'include':_0x305e0d[_0x9d68('0x18')]?_0x305e0d[_0x9d68('0x18')][_0x9d68('0x1d')]?_[_0x9d68('0x1e')](_0x305e0d['options'][_0x9d68('0x1d')],function(_0x26aa00){return{'model':db[_0x26aa00[_0x9d68('0x1f')]],'as':_0x26aa00['as'],'attributes':_0x26aa00[_0x9d68('0x1b')],'include':_0x26aa00[_0x9d68('0x1d')]?_['map'](_0x26aa00[_0x9d68('0x1d')],function(_0x281271){return{'model':db[_0x281271['model']],'as':_0x281271['as'],'attributes':_0x281271['attributes'],'include':_0x281271[_0x9d68('0x1d')]?_[_0x9d68('0x1e')](_0x281271[_0x9d68('0x1d')],function(_0x5cad4b){return{'model':db[_0x5cad4b[_0x9d68('0x1f')]],'as':_0x5cad4b['as'],'attributes':_0x5cad4b[_0x9d68('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x385a79){logger[_0x9d68('0xd')](_0x9d68('0x16'),_0x305e0d);logger[_0x9d68('0x20')]('GetZendeskAccount',_0x305e0d,JSON[_0x9d68('0x10')](_0x385a79));_0x15c6c5(_0x385a79);})['catch'](function(_0x12ee0e){logger[_0x9d68('0x11')](_0x9d68('0x16'),_0x12ee0e[_0x9d68('0x13')],_0x305e0d);_0x2996a8(_0x360942[_0x9d68('0x11')](0x1f4,_0x12ee0e[_0x9d68('0x13')]));});});};exports[_0x9d68('0x21')]=function(_0x3cb672){var _0x18a0ce=this;return new Promise(function(_0x1b5f40,_0x4dcbf4){return db[_0x9d68('0x22')]['find']({'raw':_0x3cb672[_0x9d68('0x18')]?_0x3cb672[_0x9d68('0x18')][_0x9d68('0x19')]===undefined?!![]:![]:!![],'where':_0x3cb672[_0x9d68('0x18')]?_0x3cb672['options'][_0x9d68('0x1a')]||null:null,'attributes':_0x3cb672[_0x9d68('0x18')]?_0x3cb672['options'][_0x9d68('0x1b')]||null:null,'include':_0x3cb672[_0x9d68('0x18')]?_0x3cb672[_0x9d68('0x18')][_0x9d68('0x1d')]?_[_0x9d68('0x1e')](_0x3cb672[_0x9d68('0x18')][_0x9d68('0x1d')],function(_0x5e40f3){return{'model':db[_0x5e40f3['model']],'as':_0x5e40f3['as'],'attributes':_0x5e40f3[_0x9d68('0x1b')],'include':_0x5e40f3[_0x9d68('0x1d')]?_[_0x9d68('0x1e')](_0x5e40f3['include'],function(_0x145524){return{'model':db[_0x145524[_0x9d68('0x1f')]],'as':_0x145524['as'],'attributes':_0x145524[_0x9d68('0x1b')],'include':_0x145524[_0x9d68('0x1d')]?_[_0x9d68('0x1e')](_0x145524['include'],function(_0x109782){return{'model':db[_0x109782[_0x9d68('0x1f')]],'as':_0x109782['as'],'attributes':_0x109782[_0x9d68('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x9d68('0xc')](function(_0x558b02){logger[_0x9d68('0xd')]('ShowZendeskAccount',_0x3cb672);logger[_0x9d68('0x20')](_0x9d68('0x21'),_0x3cb672,JSON[_0x9d68('0x10')](_0x558b02));_0x1b5f40(_0x558b02);})[_0x9d68('0x15')](function(_0x5d9db8){logger['error'](_0x9d68('0x21'),_0x5d9db8[_0x9d68('0x13')],_0x3cb672);_0x4dcbf4(_0x18a0ce[_0x9d68('0x11')](0x1f4,_0x5d9db8[_0x9d68('0x13')]));});});};
\ No newline at end of file
index 321426e..5542cbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['util','path','connect-timeout','Router','../../components/auth/service','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','put','update','destroy','exports'];(function(_0x463496,_0x51fcfe){var _0x2c6d64=function(_0x1fca40){while(--_0x1fca40){_0x463496['push'](_0x463496['shift']());}};_0x2c6d64(++_0x51fcfe);}(_0x91a7,0xe7));var _0x791a=function(_0x4d7707,_0x9784ca){_0x4d7707=_0x4d7707-0x0;var _0x5d3421=_0x91a7[_0x4d7707];return _0x5d3421;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['show']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/subjects',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['get'](_0x791a('0xd'),auth[_0x791a('0x9')](),controller[_0x791a('0xe')]);router[_0x791a('0x6')](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['getTags']);router['post']('/',auth[_0x791a('0x9')](),controller[_0x791a('0x10')]);router['post'](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['setTags']);router[_0x791a('0x11')](_0x791a('0x8'),auth[_0x791a('0x9')](),controller[_0x791a('0x12')]);router['delete'](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0x13')]);module[_0x791a('0x14')]=router;
\ No newline at end of file
+var _0x5eb8=['getTags','post','/:id/tags','setTags','put','update','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x16d47d,_0x58cc63){var _0x1a8ad5=function(_0x548498){while(--_0x548498){_0x16d47d['push'](_0x16d47d['shift']());}};_0x1a8ad5(++_0x58cc63);}(_0x5eb8,0xb0));var _0x85eb=function(_0x527824,_0xc824a9){_0x527824=_0x527824-0x0;var _0xc8b8ed=_0x5eb8[_0x527824];return _0xc8b8ed;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['get'](_0x85eb('0xe'),auth['isAuthenticated'](),controller[_0x85eb('0xf')]);router[_0x85eb('0x9')](_0x85eb('0x10'),auth[_0x85eb('0xa')](),controller[_0x85eb('0x11')]);router[_0x85eb('0x9')](_0x85eb('0x12'),auth['isAuthenticated'](),controller[_0x85eb('0x13')]);router[_0x85eb('0x9')]('/:id/tags',auth[_0x85eb('0xa')](),controller[_0x85eb('0x14')]);router[_0x85eb('0x15')]('/',auth[_0x85eb('0xa')](),controller['create']);router['post'](_0x85eb('0x16'),auth['isAuthenticated'](),controller[_0x85eb('0x17')]);router[_0x85eb('0x18')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0x19')]);router['delete'](_0x85eb('0xc'),auth['isAuthenticated'](),controller[_0x85eb('0x1a')]);module[_0x85eb('0x1b')]=router;
\ No newline at end of file
index 11889c6..9eea74b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb031=['STRING','exports'];(function(_0x9a62de,_0x127f28){var _0x14d7b3=function(_0x23d73f){while(--_0x23d73f){_0x9a62de['push'](_0x9a62de['shift']());}};_0x14d7b3(++_0x127f28);}(_0xb031,0x109));var _0x1b03=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0xb031[_0x307d86];return _0x361745;};'use strict';var Sequelize=require('sequelize');module[_0x1b03('0x0')]={'name':{'type':Sequelize[_0x1b03('0x1')]},'description':{'type':Sequelize[_0x1b03('0x1')]}};
\ No newline at end of file
+var _0x8393=['STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8393,0x1b0));var _0x3839=function(_0x154cf7,_0x56da69){_0x154cf7=_0x154cf7-0x0;var _0x2906f6=_0x8393[_0x154cf7];return _0x2906f6;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3839('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 97d1268..07a17e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2216=['rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','ZendeskConfiguration','includeAll','include','findAll','catch','params','options','find','create','body','getFields','findOne','ZendeskField','sort','getDescriptions','getTags','Tag','setTags','ids','eml-format'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2216,0x9d));var _0x6221=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x2216[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x6221('0x0'));var rimraf=require(_0x6221('0x1'));var zipdir=require(_0x6221('0x2'));var jsonpatch=require(_0x6221('0x3'));var rp=require(_0x6221('0x4'));var moment=require(_0x6221('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6221('0x6'));var path=require(_0x6221('0x7'));var sox=require('sox');var csv=require(_0x6221('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6221('0x9'));var _=require(_0x6221('0xa'));var squel=require(_0x6221('0xb'));var crypto=require(_0x6221('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6221('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(_0x6221('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6221('0xf'));var logger=require(_0x6221('0x10'))(_0x6221('0x11'));var utils=require(_0x6221('0x12'));var config=require(_0x6221('0x13'));var licenseUtil=require(_0x6221('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x288eb4,_0x407b6e){_0x407b6e=_0x407b6e||0xcc;return function(_0x43d56f){if(_0x43d56f){return _0x288eb4['sendStatus'](_0x407b6e);}return _0x288eb4['status'](_0x407b6e)[_0x6221('0x15')]();};}function respondWithResult(_0x18fba8,_0x594e19){_0x594e19=_0x594e19||0xc8;return function(_0x321cd7){if(_0x321cd7){return _0x18fba8[_0x6221('0x16')](_0x594e19)['json'](_0x321cd7);}};}function respondWithFilteredResult(_0xed028d,_0x3934b4){return function(_0x2ba3ba){if(_0x2ba3ba){var _0x303602=typeof _0x3934b4[_0x6221('0x17')]===_0x6221('0x18')&&typeof _0x3934b4[_0x6221('0x19')]==='undefined';var _0x592208=_0x2ba3ba[_0x6221('0x1a')];var _0x4c3596=_0x303602?0x0:_0x3934b4[_0x6221('0x17')];var _0x18dbb2=_0x303602?_0x2ba3ba[_0x6221('0x1a')]:_0x3934b4[_0x6221('0x17')]+_0x3934b4[_0x6221('0x19')];var _0x2d58b7;if(_0x18dbb2>=_0x592208){_0x18dbb2=_0x592208;_0x2d58b7=0xc8;}else{_0x2d58b7=0xce;}_0xed028d['status'](_0x2d58b7);return _0xed028d[_0x6221('0x1b')](_0x6221('0x1c'),_0x4c3596+'-'+_0x18dbb2+'/'+_0x592208)[_0x6221('0x1d')](_0x2ba3ba);}return null;};}function patchUpdates(_0x52e0e9){return function(_0x3a6d76){try{jsonpatch[_0x6221('0x1e')](_0x3a6d76,_0x52e0e9,!![]);}catch(_0xb7935b){return BPromise[_0x6221('0x1f')](_0xb7935b);}return _0x3a6d76['save']();};}function saveUpdates(_0x208d34,_0x3b4f99){return function(_0x32bff5){if(_0x32bff5){return _0x32bff5[_0x6221('0x20')](_0x208d34)[_0x6221('0x21')](function(_0x4c3a32){return _0x4c3a32;});}return null;};}function removeEntity(_0x42f2bd,_0x17d3f2){return function(_0x66b567){if(_0x66b567){return _0x66b567[_0x6221('0x22')]()[_0x6221('0x21')](function(){_0x42f2bd[_0x6221('0x16')](0xcc)[_0x6221('0x15')]();});}};}function handleEntityNotFound(_0x461eff,_0x3c6f46){return function(_0x5a2140){if(!_0x5a2140){_0x461eff['sendStatus'](0x194);}return _0x5a2140;};}function handleError(_0x1b225b,_0x5e36da){_0x5e36da=_0x5e36da||0x1f4;return function(_0x3f6474){logger[_0x6221('0x23')](_0x3f6474['stack']);if(_0x3f6474[_0x6221('0x24')]){delete _0x3f6474[_0x6221('0x24')];}_0x1b225b[_0x6221('0x16')](_0x5e36da)[_0x6221('0x25')](_0x3f6474);};}exports[_0x6221('0x26')]=function(_0x2ac6bf,_0x3f8f47){var _0x4fbcd2={},_0x1cfa8b={},_0xc06167={'count':0x0,'rows':[]};var _0x129b39=_[_0x6221('0x27')](db['ZendeskConfiguration'][_0x6221('0x28')],function(_0x197389){return{'name':_0x197389[_0x6221('0x29')],'type':_0x197389[_0x6221('0x2a')][_0x6221('0x2b')]};});_0x1cfa8b['model']=_[_0x6221('0x27')](_0x129b39,_0x6221('0x24'));_0x1cfa8b[_0x6221('0x2c')]=_[_0x6221('0x2d')](_0x2ac6bf[_0x6221('0x2c')]);_0x1cfa8b[_0x6221('0x2e')]=_['intersection'](_0x1cfa8b['model'],_0x1cfa8b['query']);_0x4fbcd2[_0x6221('0x2f')]=_[_0x6221('0x30')](_0x1cfa8b[_0x6221('0x31')],qs[_0x6221('0x32')](_0x2ac6bf[_0x6221('0x2c')][_0x6221('0x32')]));_0x4fbcd2['attributes']=_0x4fbcd2[_0x6221('0x2f')][_0x6221('0x33')]?_0x4fbcd2[_0x6221('0x2f')]:_0x1cfa8b[_0x6221('0x31')];if(!_0x2ac6bf[_0x6221('0x2c')][_0x6221('0x34')](_0x6221('0x35'))){_0x4fbcd2[_0x6221('0x19')]=qs[_0x6221('0x19')](_0x2ac6bf[_0x6221('0x2c')]['limit']);_0x4fbcd2[_0x6221('0x17')]=qs[_0x6221('0x17')](_0x2ac6bf[_0x6221('0x2c')][_0x6221('0x17')]);}_0x4fbcd2[_0x6221('0x36')]=qs['sort'](_0x2ac6bf['query']['sort']);_0x4fbcd2[_0x6221('0x37')]=qs[_0x6221('0x2e')](_[_0x6221('0x38')](_0x2ac6bf['query'],_0x1cfa8b[_0x6221('0x2e')]),_0x129b39);if(_0x2ac6bf[_0x6221('0x2c')][_0x6221('0x39')]){_0x4fbcd2[_0x6221('0x37')]=_['merge'](_0x4fbcd2[_0x6221('0x37')],{'$or':_['map'](_0x129b39,function(_0x19d75b){if(_0x19d75b[_0x6221('0x2a')]!==_0x6221('0x3a')){var _0x410b1f={};_0x410b1f[_0x19d75b[_0x6221('0x24')]]={'$like':'%'+_0x2ac6bf[_0x6221('0x2c')]['filter']+'%'};return _0x410b1f;}})});}_0x4fbcd2=_[_0x6221('0x3b')]({},_0x4fbcd2,_0x2ac6bf['options']);var _0x5a4a4={'where':_0x4fbcd2[_0x6221('0x37')]};return db[_0x6221('0x3c')]['count'](_0x5a4a4)['then'](function(_0x4dee68){_0xc06167[_0x6221('0x1a')]=_0x4dee68;if(_0x2ac6bf[_0x6221('0x2c')][_0x6221('0x3d')]){_0x4fbcd2[_0x6221('0x3e')]=[{'all':!![]}];}return db[_0x6221('0x3c')][_0x6221('0x3f')](_0x4fbcd2);})[_0x6221('0x21')](function(_0x4e4d80){_0xc06167['rows']=_0x4e4d80;return _0xc06167;})['then'](respondWithFilteredResult(_0x3f8f47,_0x4fbcd2))[_0x6221('0x40')](handleError(_0x3f8f47,null));};exports['show']=function(_0x464f7d,_0x5edb4d){var _0xa2122d={'raw':![],'where':{'id':_0x464f7d[_0x6221('0x41')]['id']}},_0x33ae32={};_0x33ae32[_0x6221('0x31')]=_['keys'](db['ZendeskConfiguration']['rawAttributes']);_0x33ae32[_0x6221('0x2c')]=_['keys'](_0x464f7d[_0x6221('0x2c')]);_0x33ae32[_0x6221('0x2e')]=_[_0x6221('0x30')](_0x33ae32[_0x6221('0x31')],_0x33ae32[_0x6221('0x2c')]);_0xa2122d[_0x6221('0x2f')]=_[_0x6221('0x30')](_0x33ae32[_0x6221('0x31')],qs[_0x6221('0x32')](_0x464f7d[_0x6221('0x2c')]['fields']));_0xa2122d['attributes']=_0xa2122d['attributes']['length']?_0xa2122d['attributes']:_0x33ae32[_0x6221('0x31')];if(_0x464f7d[_0x6221('0x2c')][_0x6221('0x3d')]){_0xa2122d[_0x6221('0x3e')]=[{'all':!![]}];}_0xa2122d=_[_0x6221('0x3b')]({},_0xa2122d,_0x464f7d[_0x6221('0x42')]);return db[_0x6221('0x3c')][_0x6221('0x43')](_0xa2122d)[_0x6221('0x21')](handleEntityNotFound(_0x5edb4d,null))['then'](respondWithResult(_0x5edb4d,null))['catch'](handleError(_0x5edb4d,null));};exports[_0x6221('0x44')]=function(_0x4fab98,_0x4ee300){return db[_0x6221('0x3c')][_0x6221('0x44')](_0x4fab98[_0x6221('0x45')],{})['then'](respondWithResult(_0x4ee300,0xc9))[_0x6221('0x40')](handleError(_0x4ee300,null));};exports[_0x6221('0x20')]=function(_0x585860,_0x3e0917){if(_0x585860['body']['id']){delete _0x585860[_0x6221('0x45')]['id'];}return db[_0x6221('0x3c')]['find']({'where':{'id':_0x585860['params']['id']}})[_0x6221('0x21')](handleEntityNotFound(_0x3e0917,null))[_0x6221('0x21')](saveUpdates(_0x585860[_0x6221('0x45')],null))[_0x6221('0x21')](respondWithResult(_0x3e0917,null))[_0x6221('0x40')](handleError(_0x3e0917,null));};exports[_0x6221('0x22')]=function(_0x1e8c8d,_0x1935ba){return db[_0x6221('0x3c')][_0x6221('0x43')]({'where':{'id':_0x1e8c8d[_0x6221('0x41')]['id']}})[_0x6221('0x21')](handleEntityNotFound(_0x1935ba,null))[_0x6221('0x21')](removeEntity(_0x1935ba,null))['catch'](handleError(_0x1935ba,null));};exports[_0x6221('0x46')]=function(_0x29e1c6,_0x2800ec,_0x36d8df){var _0x4d688c={};var _0x29702f={};var _0x52ff9;var _0x593f38;return db['ZendeskConfiguration'][_0x6221('0x47')]({'where':{'id':_0x29e1c6['params']['id']}})[_0x6221('0x21')](handleEntityNotFound(_0x2800ec,null))[_0x6221('0x21')](function(_0x136267){if(_0x136267){_0x52ff9=_0x136267;_0x29702f[_0x6221('0x31')]=_[_0x6221('0x2d')](db[_0x6221('0x48')][_0x6221('0x28')]);_0x29702f['query']=_[_0x6221('0x2d')](_0x29e1c6[_0x6221('0x2c')]);_0x29702f[_0x6221('0x2e')]=_['intersection'](_0x29702f['model'],_0x29702f[_0x6221('0x2c')]);_0x4d688c['attributes']=_[_0x6221('0x30')](_0x29702f['model'],qs['fields'](_0x29e1c6['query'][_0x6221('0x32')]));_0x4d688c['attributes']=_0x4d688c[_0x6221('0x2f')][_0x6221('0x33')]?_0x4d688c[_0x6221('0x2f')]:_0x29702f[_0x6221('0x31')];_0x4d688c[_0x6221('0x36')]=qs['sort'](_0x29e1c6[_0x6221('0x2c')][_0x6221('0x49')]);_0x4d688c[_0x6221('0x37')]=qs[_0x6221('0x2e')](_[_0x6221('0x38')](_0x29e1c6['query'],_0x29702f[_0x6221('0x2e')]));if(_0x29e1c6[_0x6221('0x2c')]['filter']){_0x4d688c[_0x6221('0x37')]=_[_0x6221('0x3b')](_0x4d688c['where'],{'$or':_[_0x6221('0x27')](_0x4d688c[_0x6221('0x2f')],function(_0x307895){var _0x4774c4={};_0x4774c4[_0x307895]={'$like':'%'+_0x29e1c6[_0x6221('0x2c')]['filter']+'%'};return _0x4774c4;})});}_0x4d688c=_['merge']({},_0x4d688c,_0x29e1c6[_0x6221('0x42')]);return _0x52ff9[_0x6221('0x46')](_0x4d688c);}})['then'](function(_0x53a592){if(_0x53a592){_0x593f38=_0x53a592[_0x6221('0x33')];if(!_0x29e1c6[_0x6221('0x2c')][_0x6221('0x34')](_0x6221('0x35'))){_0x4d688c['limit']=qs[_0x6221('0x19')](_0x29e1c6[_0x6221('0x2c')][_0x6221('0x19')]);_0x4d688c[_0x6221('0x17')]=qs['offset'](_0x29e1c6[_0x6221('0x2c')][_0x6221('0x17')]);}return _0x52ff9[_0x6221('0x46')](_0x4d688c);}})[_0x6221('0x21')](function(_0x3b29a8){if(_0x3b29a8){return _0x3b29a8?{'count':_0x593f38,'rows':_0x3b29a8}:null;}})[_0x6221('0x21')](respondWithResult(_0x2800ec,null))['catch'](handleError(_0x2800ec,null));};exports['getSubjects']=function(_0x1aa3df,_0x4e5399,_0x501e15){var _0x1e3efc={};var _0x24c2ec={};var _0x199fdc;var _0x293d9b;return db[_0x6221('0x3c')][_0x6221('0x47')]({'where':{'id':_0x1aa3df[_0x6221('0x41')]['id']}})[_0x6221('0x21')](handleEntityNotFound(_0x4e5399,null))[_0x6221('0x21')](function(_0x403393){if(_0x403393){_0x199fdc=_0x403393;_0x24c2ec[_0x6221('0x31')]=_[_0x6221('0x2d')](db[_0x6221('0x48')][_0x6221('0x28')]);_0x24c2ec[_0x6221('0x2c')]=_[_0x6221('0x2d')](_0x1aa3df[_0x6221('0x2c')]);_0x24c2ec['filters']=_[_0x6221('0x30')](_0x24c2ec[_0x6221('0x31')],_0x24c2ec[_0x6221('0x2c')]);_0x1e3efc['attributes']=_[_0x6221('0x30')](_0x24c2ec['model'],qs[_0x6221('0x32')](_0x1aa3df['query'][_0x6221('0x32')]));_0x1e3efc[_0x6221('0x2f')]=_0x1e3efc[_0x6221('0x2f')]['length']?_0x1e3efc[_0x6221('0x2f')]:_0x24c2ec[_0x6221('0x31')];_0x1e3efc['order']=qs[_0x6221('0x49')](_0x1aa3df[_0x6221('0x2c')][_0x6221('0x49')]);_0x1e3efc['where']=qs[_0x6221('0x2e')](_[_0x6221('0x38')](_0x1aa3df[_0x6221('0x2c')],_0x24c2ec[_0x6221('0x2e')]));if(_0x1aa3df[_0x6221('0x2c')][_0x6221('0x39')]){_0x1e3efc[_0x6221('0x37')]=_[_0x6221('0x3b')](_0x1e3efc[_0x6221('0x37')],{'$or':_['map'](_0x1e3efc[_0x6221('0x2f')],function(_0x14aad6){var _0x469ffc={};_0x469ffc[_0x14aad6]={'$like':'%'+_0x1aa3df['query'][_0x6221('0x39')]+'%'};return _0x469ffc;})});}_0x1e3efc=_[_0x6221('0x3b')]({},_0x1e3efc,_0x1aa3df[_0x6221('0x42')]);return _0x199fdc['getSubjects'](_0x1e3efc);}})[_0x6221('0x21')](function(_0x482764){if(_0x482764){_0x293d9b=_0x482764['length'];if(!_0x1aa3df[_0x6221('0x2c')][_0x6221('0x34')](_0x6221('0x35'))){_0x1e3efc['limit']=qs[_0x6221('0x19')](_0x1aa3df[_0x6221('0x2c')][_0x6221('0x19')]);_0x1e3efc[_0x6221('0x17')]=qs['offset'](_0x1aa3df[_0x6221('0x2c')][_0x6221('0x17')]);}return _0x199fdc['getSubjects'](_0x1e3efc);}})[_0x6221('0x21')](function(_0x479f0b){if(_0x479f0b){return _0x479f0b?{'count':_0x293d9b,'rows':_0x479f0b}:null;}})[_0x6221('0x21')](respondWithResult(_0x4e5399,null))[_0x6221('0x40')](handleError(_0x4e5399,null));};exports['getDescriptions']=function(_0x3c420d,_0x19972e,_0x35a3b0){var _0x194ec1={};var _0x4fac8c={};var _0x57667c;var _0xb49321;return db[_0x6221('0x3c')][_0x6221('0x47')]({'where':{'id':_0x3c420d['params']['id']}})[_0x6221('0x21')](handleEntityNotFound(_0x19972e,null))[_0x6221('0x21')](function(_0x52e68f){if(_0x52e68f){_0x57667c=_0x52e68f;_0x4fac8c[_0x6221('0x31')]=_['keys'](db[_0x6221('0x48')][_0x6221('0x28')]);_0x4fac8c[_0x6221('0x2c')]=_[_0x6221('0x2d')](_0x3c420d[_0x6221('0x2c')]);_0x4fac8c['filters']=_[_0x6221('0x30')](_0x4fac8c['model'],_0x4fac8c[_0x6221('0x2c')]);_0x194ec1['attributes']=_[_0x6221('0x30')](_0x4fac8c[_0x6221('0x31')],qs[_0x6221('0x32')](_0x3c420d['query'][_0x6221('0x32')]));_0x194ec1[_0x6221('0x2f')]=_0x194ec1[_0x6221('0x2f')]['length']?_0x194ec1[_0x6221('0x2f')]:_0x4fac8c[_0x6221('0x31')];_0x194ec1[_0x6221('0x36')]=qs[_0x6221('0x49')](_0x3c420d[_0x6221('0x2c')]['sort']);_0x194ec1[_0x6221('0x37')]=qs[_0x6221('0x2e')](_[_0x6221('0x38')](_0x3c420d['query'],_0x4fac8c[_0x6221('0x2e')]));if(_0x3c420d[_0x6221('0x2c')][_0x6221('0x39')]){_0x194ec1[_0x6221('0x37')]=_[_0x6221('0x3b')](_0x194ec1[_0x6221('0x37')],{'$or':_[_0x6221('0x27')](_0x194ec1['attributes'],function(_0x1fe91c){var _0x3697c9={};_0x3697c9[_0x1fe91c]={'$like':'%'+_0x3c420d['query'][_0x6221('0x39')]+'%'};return _0x3697c9;})});}_0x194ec1=_[_0x6221('0x3b')]({},_0x194ec1,_0x3c420d['options']);return _0x57667c[_0x6221('0x4a')](_0x194ec1);}})[_0x6221('0x21')](function(_0x1b20aa){if(_0x1b20aa){_0xb49321=_0x1b20aa[_0x6221('0x33')];if(!_0x3c420d[_0x6221('0x2c')][_0x6221('0x34')]('nolimit')){_0x194ec1['limit']=qs[_0x6221('0x19')](_0x3c420d[_0x6221('0x2c')][_0x6221('0x19')]);_0x194ec1[_0x6221('0x17')]=qs[_0x6221('0x17')](_0x3c420d[_0x6221('0x2c')][_0x6221('0x17')]);}return _0x57667c[_0x6221('0x4a')](_0x194ec1);}})[_0x6221('0x21')](function(_0x5e735b){if(_0x5e735b){return _0x5e735b?{'count':_0xb49321,'rows':_0x5e735b}:null;}})['then'](respondWithResult(_0x19972e,null))[_0x6221('0x40')](handleError(_0x19972e,null));};exports[_0x6221('0x4b')]=function(_0x3200e7,_0x54ae84,_0x383116){var _0x3a3908={};var _0x4748c8={};var _0x2629d8;var _0xf513dc;return db[_0x6221('0x3c')][_0x6221('0x47')]({'where':{'id':_0x3200e7[_0x6221('0x41')]['id']}})[_0x6221('0x21')](handleEntityNotFound(_0x54ae84,null))[_0x6221('0x21')](function(_0x49dd82){if(_0x49dd82){_0x2629d8=_0x49dd82;_0x4748c8[_0x6221('0x31')]=_[_0x6221('0x2d')](db[_0x6221('0x4c')][_0x6221('0x28')]);_0x4748c8[_0x6221('0x2c')]=_['keys'](_0x3200e7[_0x6221('0x2c')]);_0x4748c8[_0x6221('0x2e')]=_[_0x6221('0x30')](_0x4748c8[_0x6221('0x31')],_0x4748c8[_0x6221('0x2c')]);_0x3a3908[_0x6221('0x2f')]=_[_0x6221('0x30')](_0x4748c8['model'],qs[_0x6221('0x32')](_0x3200e7['query'][_0x6221('0x32')]));_0x3a3908[_0x6221('0x2f')]=_0x3a3908[_0x6221('0x2f')][_0x6221('0x33')]?_0x3a3908[_0x6221('0x2f')]:_0x4748c8['model'];_0x3a3908[_0x6221('0x36')]=qs['sort'](_0x3200e7[_0x6221('0x2c')][_0x6221('0x49')]);_0x3a3908[_0x6221('0x37')]=qs[_0x6221('0x2e')](_[_0x6221('0x38')](_0x3200e7['query'],_0x4748c8[_0x6221('0x2e')]));if(_0x3200e7[_0x6221('0x2c')][_0x6221('0x39')]){_0x3a3908[_0x6221('0x37')]=_['merge'](_0x3a3908[_0x6221('0x37')],{'$or':_[_0x6221('0x27')](_0x3a3908[_0x6221('0x2f')],function(_0xce73b2){var _0x5db889={};_0x5db889[_0xce73b2]={'$like':'%'+_0x3200e7['query'][_0x6221('0x39')]+'%'};return _0x5db889;})});}_0x3a3908=_['merge']({},_0x3a3908,_0x3200e7[_0x6221('0x42')]);return _0x2629d8['getTags'](_0x3a3908);}})[_0x6221('0x21')](function(_0x2f452b){if(_0x2f452b){_0xf513dc=_0x2f452b[_0x6221('0x33')];if(!_0x3200e7[_0x6221('0x2c')]['hasOwnProperty']('nolimit')){_0x3a3908['limit']=qs[_0x6221('0x19')](_0x3200e7['query'][_0x6221('0x19')]);_0x3a3908[_0x6221('0x17')]=qs[_0x6221('0x17')](_0x3200e7[_0x6221('0x2c')][_0x6221('0x17')]);}return _0x2629d8[_0x6221('0x4b')](_0x3a3908);}})[_0x6221('0x21')](function(_0x152493){if(_0x152493){return _0x152493?{'count':_0xf513dc,'rows':_0x152493}:null;}})['then'](respondWithResult(_0x54ae84,null))[_0x6221('0x40')](handleError(_0x54ae84,null));};exports[_0x6221('0x4d')]=function(_0x4ecd70,_0x5010cb,_0x611c86){if(_0x4ecd70[_0x6221('0x45')]['id']){delete _0x4ecd70[_0x6221('0x45')]['id'];}return db[_0x6221('0x3c')]['findOne']({'where':{'id':_0x4ecd70[_0x6221('0x41')]['id']}})['then'](handleEntityNotFound(_0x5010cb,null))[_0x6221('0x21')](function(_0x334555){if(_0x334555){return _0x334555[_0x6221('0x4d')](_0x4ecd70[_0x6221('0x45')][_0x6221('0x4e')]||[]);}return null;})['then'](respondWithResult(_0x5010cb,null))[_0x6221('0x40')](handleError(_0x5010cb,null));};
\ No newline at end of file
+var _0x9919=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','error','stack','name','send','index','map','ZendeskConfiguration','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','params','rawAttributes','length','catch','create','body','find','destroy','getFields','findOne','getSubjects','ZendeskField','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','bluebird','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3206a1,_0x2773d1){var _0x255ef4=function(_0x4856e2){while(--_0x4856e2){_0x3206a1['push'](_0x3206a1['shift']());}};_0x255ef4(++_0x2773d1);}(_0x9919,0x11e));var _0x9991=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0x9919[_0x3cc9d9];return _0x1a425d;};'use strict';var emlformat=require(_0x9991('0x0'));var rimraf=require(_0x9991('0x1'));var zipdir=require(_0x9991('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9991('0x3'));var Mustache=require('mustache');var util=require(_0x9991('0x4'));var path=require(_0x9991('0x5'));var sox=require(_0x9991('0x6'));var csv=require(_0x9991('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9991('0x8'));var squel=require(_0x9991('0x9'));var crypto=require('crypto');var jsforce=require(_0x9991('0xa'));var deskjs=require(_0x9991('0xb'));var toCsv=require(_0x9991('0x7'));var querystring=require('querystring');var Papa=require(_0x9991('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9991('0xd'));var as=require(_0x9991('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x9991('0xf'));var config=require(_0x9991('0x10'));var licenseUtil=require(_0x9991('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x291d37,_0x4327b8){_0x4327b8=_0x4327b8||0xcc;return function(_0x27c556){if(_0x27c556){return _0x291d37[_0x9991('0x12')](_0x4327b8);}return _0x291d37[_0x9991('0x13')](_0x4327b8)[_0x9991('0x14')]();};}function respondWithResult(_0x549dd9,_0x56be65){_0x56be65=_0x56be65||0xc8;return function(_0x28b14f){if(_0x28b14f){return _0x549dd9['status'](_0x56be65)[_0x9991('0x15')](_0x28b14f);}};}function respondWithFilteredResult(_0x30e52c,_0x527012){return function(_0x5e25f6){if(_0x5e25f6){var _0x780c27=typeof _0x527012[_0x9991('0x16')]===_0x9991('0x17')&&typeof _0x527012[_0x9991('0x18')]===_0x9991('0x17');var _0x2372e7=_0x5e25f6['count'];var _0x11a191=_0x780c27?0x0:_0x527012[_0x9991('0x16')];var _0x343048=_0x780c27?_0x5e25f6[_0x9991('0x19')]:_0x527012[_0x9991('0x16')]+_0x527012[_0x9991('0x18')];var _0x571108;if(_0x343048>=_0x2372e7){_0x343048=_0x2372e7;_0x571108=0xc8;}else{_0x571108=0xce;}_0x30e52c['status'](_0x571108);return _0x30e52c[_0x9991('0x1a')](_0x9991('0x1b'),_0x11a191+'-'+_0x343048+'/'+_0x2372e7)[_0x9991('0x15')](_0x5e25f6);}return null;};}function patchUpdates(_0x22a3e6){return function(_0x35ee0c){try{jsonpatch['apply'](_0x35ee0c,_0x22a3e6,!![]);}catch(_0x474986){return BPromise['reject'](_0x474986);}return _0x35ee0c['save']();};}function saveUpdates(_0x29b132,_0x49fb71){return function(_0x32d7b4){if(_0x32d7b4){return _0x32d7b4[_0x9991('0x1c')](_0x29b132)['then'](function(_0x1c96c8){return _0x1c96c8;});}return null;};}function removeEntity(_0x234adf,_0x4b5518){return function(_0x34fac6){if(_0x34fac6){return _0x34fac6['destroy']()[_0x9991('0x1d')](function(){_0x234adf[_0x9991('0x13')](0xcc)[_0x9991('0x14')]();});}};}function handleEntityNotFound(_0x5f128e,_0x187658){return function(_0x1818b2){if(!_0x1818b2){_0x5f128e[_0x9991('0x12')](0x194);}return _0x1818b2;};}function handleError(_0x206902,_0x137f3){_0x137f3=_0x137f3||0x1f4;return function(_0x44f907){logger[_0x9991('0x1e')](_0x44f907[_0x9991('0x1f')]);if(_0x44f907[_0x9991('0x20')]){delete _0x44f907[_0x9991('0x20')];}_0x206902[_0x9991('0x13')](_0x137f3)[_0x9991('0x21')](_0x44f907);};}exports[_0x9991('0x22')]=function(_0x2a83aa,_0x3c1c18){var _0x52e529={},_0x5aebb9={},_0x2728c4={'count':0x0,'rows':[]};var _0x4e6e6a=_[_0x9991('0x23')](db[_0x9991('0x24')]['rawAttributes'],function(_0x1bcaf8){return{'name':_0x1bcaf8['fieldName'],'type':_0x1bcaf8[_0x9991('0x25')][_0x9991('0x26')]};});_0x5aebb9[_0x9991('0x27')]=_[_0x9991('0x23')](_0x4e6e6a,_0x9991('0x20'));_0x5aebb9['query']=_[_0x9991('0x28')](_0x2a83aa[_0x9991('0x29')]);_0x5aebb9[_0x9991('0x2a')]=_[_0x9991('0x2b')](_0x5aebb9[_0x9991('0x27')],_0x5aebb9[_0x9991('0x29')]);_0x52e529[_0x9991('0x2c')]=_['intersection'](_0x5aebb9[_0x9991('0x27')],qs[_0x9991('0x2d')](_0x2a83aa[_0x9991('0x29')][_0x9991('0x2d')]));_0x52e529[_0x9991('0x2c')]=_0x52e529['attributes']['length']?_0x52e529[_0x9991('0x2c')]:_0x5aebb9['model'];if(!_0x2a83aa['query'][_0x9991('0x2e')](_0x9991('0x2f'))){_0x52e529[_0x9991('0x18')]=qs[_0x9991('0x18')](_0x2a83aa[_0x9991('0x29')][_0x9991('0x18')]);_0x52e529[_0x9991('0x16')]=qs[_0x9991('0x16')](_0x2a83aa[_0x9991('0x29')][_0x9991('0x16')]);}_0x52e529[_0x9991('0x30')]=qs[_0x9991('0x31')](_0x2a83aa[_0x9991('0x29')][_0x9991('0x31')]);_0x52e529[_0x9991('0x32')]=qs[_0x9991('0x2a')](_[_0x9991('0x33')](_0x2a83aa[_0x9991('0x29')],_0x5aebb9[_0x9991('0x2a')]),_0x4e6e6a);if(_0x2a83aa[_0x9991('0x29')][_0x9991('0x34')]){_0x52e529[_0x9991('0x32')]=_[_0x9991('0x35')](_0x52e529[_0x9991('0x32')],{'$or':_[_0x9991('0x23')](_0x4e6e6a,function(_0x240e2a){if(_0x240e2a[_0x9991('0x25')]!==_0x9991('0x36')){var _0x352612={};_0x352612[_0x240e2a['name']]={'$like':'%'+_0x2a83aa['query'][_0x9991('0x34')]+'%'};return _0x352612;}})});}_0x52e529=_[_0x9991('0x35')]({},_0x52e529,_0x2a83aa[_0x9991('0x37')]);var _0xe632b={'where':_0x52e529[_0x9991('0x32')]};return db[_0x9991('0x24')][_0x9991('0x19')](_0xe632b)[_0x9991('0x1d')](function(_0x425c10){_0x2728c4[_0x9991('0x19')]=_0x425c10;if(_0x2a83aa[_0x9991('0x29')][_0x9991('0x38')]){_0x52e529[_0x9991('0x39')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x9991('0x3a')](_0x52e529);})['then'](function(_0x3be6f7){_0x2728c4['rows']=_0x3be6f7;return _0x2728c4;})['then'](respondWithFilteredResult(_0x3c1c18,_0x52e529))['catch'](handleError(_0x3c1c18,null));};exports['show']=function(_0xbc0cbb,_0x2d6fe9){var _0x2505eb={'raw':![],'where':{'id':_0xbc0cbb[_0x9991('0x3b')]['id']}},_0x3d3579={};_0x3d3579[_0x9991('0x27')]=_[_0x9991('0x28')](db[_0x9991('0x24')][_0x9991('0x3c')]);_0x3d3579['query']=_[_0x9991('0x28')](_0xbc0cbb[_0x9991('0x29')]);_0x3d3579[_0x9991('0x2a')]=_[_0x9991('0x2b')](_0x3d3579[_0x9991('0x27')],_0x3d3579[_0x9991('0x29')]);_0x2505eb[_0x9991('0x2c')]=_[_0x9991('0x2b')](_0x3d3579[_0x9991('0x27')],qs['fields'](_0xbc0cbb[_0x9991('0x29')][_0x9991('0x2d')]));_0x2505eb[_0x9991('0x2c')]=_0x2505eb[_0x9991('0x2c')][_0x9991('0x3d')]?_0x2505eb[_0x9991('0x2c')]:_0x3d3579[_0x9991('0x27')];if(_0xbc0cbb['query'][_0x9991('0x38')]){_0x2505eb['include']=[{'all':!![]}];}_0x2505eb=_[_0x9991('0x35')]({},_0x2505eb,_0xbc0cbb['options']);return db[_0x9991('0x24')]['find'](_0x2505eb)[_0x9991('0x1d')](handleEntityNotFound(_0x2d6fe9,null))[_0x9991('0x1d')](respondWithResult(_0x2d6fe9,null))[_0x9991('0x3e')](handleError(_0x2d6fe9,null));};exports[_0x9991('0x3f')]=function(_0x1c5a01,_0x24091a){return db[_0x9991('0x24')][_0x9991('0x3f')](_0x1c5a01[_0x9991('0x40')],{})[_0x9991('0x1d')](respondWithResult(_0x24091a,0xc9))[_0x9991('0x3e')](handleError(_0x24091a,null));};exports[_0x9991('0x1c')]=function(_0x53e663,_0x521085){if(_0x53e663['body']['id']){delete _0x53e663[_0x9991('0x40')]['id'];}return db[_0x9991('0x24')][_0x9991('0x41')]({'where':{'id':_0x53e663[_0x9991('0x3b')]['id']}})[_0x9991('0x1d')](handleEntityNotFound(_0x521085,null))[_0x9991('0x1d')](saveUpdates(_0x53e663[_0x9991('0x40')],null))[_0x9991('0x1d')](respondWithResult(_0x521085,null))[_0x9991('0x3e')](handleError(_0x521085,null));};exports[_0x9991('0x42')]=function(_0x12b058,_0x540f0f){return db['ZendeskConfiguration'][_0x9991('0x41')]({'where':{'id':_0x12b058[_0x9991('0x3b')]['id']}})[_0x9991('0x1d')](handleEntityNotFound(_0x540f0f,null))['then'](removeEntity(_0x540f0f,null))[_0x9991('0x3e')](handleError(_0x540f0f,null));};exports[_0x9991('0x43')]=function(_0x1ce7ca,_0x61bd54,_0x477e9e){var _0x11d4a6={};var _0x18e229={};var _0x4e3e4e;var _0x12f79f;return db[_0x9991('0x24')][_0x9991('0x44')]({'where':{'id':_0x1ce7ca['params']['id']}})['then'](handleEntityNotFound(_0x61bd54,null))[_0x9991('0x1d')](function(_0xe74441){if(_0xe74441){_0x4e3e4e=_0xe74441;_0x18e229[_0x9991('0x27')]=_['keys'](db['ZendeskField'][_0x9991('0x3c')]);_0x18e229[_0x9991('0x29')]=_['keys'](_0x1ce7ca[_0x9991('0x29')]);_0x18e229[_0x9991('0x2a')]=_[_0x9991('0x2b')](_0x18e229['model'],_0x18e229[_0x9991('0x29')]);_0x11d4a6[_0x9991('0x2c')]=_[_0x9991('0x2b')](_0x18e229[_0x9991('0x27')],qs[_0x9991('0x2d')](_0x1ce7ca['query']['fields']));_0x11d4a6[_0x9991('0x2c')]=_0x11d4a6['attributes'][_0x9991('0x3d')]?_0x11d4a6[_0x9991('0x2c')]:_0x18e229['model'];_0x11d4a6[_0x9991('0x30')]=qs['sort'](_0x1ce7ca[_0x9991('0x29')][_0x9991('0x31')]);_0x11d4a6[_0x9991('0x32')]=qs[_0x9991('0x2a')](_[_0x9991('0x33')](_0x1ce7ca[_0x9991('0x29')],_0x18e229[_0x9991('0x2a')]));if(_0x1ce7ca[_0x9991('0x29')][_0x9991('0x34')]){_0x11d4a6[_0x9991('0x32')]=_[_0x9991('0x35')](_0x11d4a6[_0x9991('0x32')],{'$or':_['map'](_0x11d4a6[_0x9991('0x2c')],function(_0x1a4daa){var _0x1ddb9d={};_0x1ddb9d[_0x1a4daa]={'$like':'%'+_0x1ce7ca[_0x9991('0x29')][_0x9991('0x34')]+'%'};return _0x1ddb9d;})});}_0x11d4a6=_[_0x9991('0x35')]({},_0x11d4a6,_0x1ce7ca[_0x9991('0x37')]);return _0x4e3e4e[_0x9991('0x43')](_0x11d4a6);}})[_0x9991('0x1d')](function(_0x27a698){if(_0x27a698){_0x12f79f=_0x27a698[_0x9991('0x3d')];if(!_0x1ce7ca[_0x9991('0x29')][_0x9991('0x2e')]('nolimit')){_0x11d4a6[_0x9991('0x18')]=qs[_0x9991('0x18')](_0x1ce7ca[_0x9991('0x29')][_0x9991('0x18')]);_0x11d4a6[_0x9991('0x16')]=qs[_0x9991('0x16')](_0x1ce7ca[_0x9991('0x29')][_0x9991('0x16')]);}return _0x4e3e4e[_0x9991('0x43')](_0x11d4a6);}})[_0x9991('0x1d')](function(_0x36ed9c){if(_0x36ed9c){return _0x36ed9c?{'count':_0x12f79f,'rows':_0x36ed9c}:null;}})[_0x9991('0x1d')](respondWithResult(_0x61bd54,null))['catch'](handleError(_0x61bd54,null));};exports[_0x9991('0x45')]=function(_0x1b7275,_0x125ef3,_0x1f1de6){var _0x1d9990={};var _0x5aebf7={};var _0x9989f1;var _0x591906;return db[_0x9991('0x24')][_0x9991('0x44')]({'where':{'id':_0x1b7275['params']['id']}})['then'](handleEntityNotFound(_0x125ef3,null))[_0x9991('0x1d')](function(_0x1c4e0c){if(_0x1c4e0c){_0x9989f1=_0x1c4e0c;_0x5aebf7[_0x9991('0x27')]=_[_0x9991('0x28')](db[_0x9991('0x46')][_0x9991('0x3c')]);_0x5aebf7[_0x9991('0x29')]=_[_0x9991('0x28')](_0x1b7275['query']);_0x5aebf7[_0x9991('0x2a')]=_[_0x9991('0x2b')](_0x5aebf7[_0x9991('0x27')],_0x5aebf7[_0x9991('0x29')]);_0x1d9990['attributes']=_[_0x9991('0x2b')](_0x5aebf7['model'],qs[_0x9991('0x2d')](_0x1b7275[_0x9991('0x29')][_0x9991('0x2d')]));_0x1d9990[_0x9991('0x2c')]=_0x1d9990[_0x9991('0x2c')][_0x9991('0x3d')]?_0x1d9990['attributes']:_0x5aebf7[_0x9991('0x27')];_0x1d9990[_0x9991('0x30')]=qs[_0x9991('0x31')](_0x1b7275['query'][_0x9991('0x31')]);_0x1d9990['where']=qs[_0x9991('0x2a')](_[_0x9991('0x33')](_0x1b7275[_0x9991('0x29')],_0x5aebf7[_0x9991('0x2a')]));if(_0x1b7275[_0x9991('0x29')][_0x9991('0x34')]){_0x1d9990[_0x9991('0x32')]=_[_0x9991('0x35')](_0x1d9990[_0x9991('0x32')],{'$or':_[_0x9991('0x23')](_0x1d9990[_0x9991('0x2c')],function(_0x304628){var _0x59419c={};_0x59419c[_0x304628]={'$like':'%'+_0x1b7275['query'][_0x9991('0x34')]+'%'};return _0x59419c;})});}_0x1d9990=_[_0x9991('0x35')]({},_0x1d9990,_0x1b7275[_0x9991('0x37')]);return _0x9989f1['getSubjects'](_0x1d9990);}})[_0x9991('0x1d')](function(_0x527b8a){if(_0x527b8a){_0x591906=_0x527b8a[_0x9991('0x3d')];if(!_0x1b7275[_0x9991('0x29')][_0x9991('0x2e')](_0x9991('0x2f'))){_0x1d9990[_0x9991('0x18')]=qs['limit'](_0x1b7275[_0x9991('0x29')][_0x9991('0x18')]);_0x1d9990[_0x9991('0x16')]=qs[_0x9991('0x16')](_0x1b7275[_0x9991('0x29')][_0x9991('0x16')]);}return _0x9989f1['getSubjects'](_0x1d9990);}})[_0x9991('0x1d')](function(_0x3436a7){if(_0x3436a7){return _0x3436a7?{'count':_0x591906,'rows':_0x3436a7}:null;}})[_0x9991('0x1d')](respondWithResult(_0x125ef3,null))[_0x9991('0x3e')](handleError(_0x125ef3,null));};exports['getDescriptions']=function(_0x24766b,_0x56b8ae,_0x2c54ee){var _0x52fcf3={};var _0x479f6d={};var _0x1ce445;var _0x1c81de;return db[_0x9991('0x24')]['findOne']({'where':{'id':_0x24766b['params']['id']}})['then'](handleEntityNotFound(_0x56b8ae,null))[_0x9991('0x1d')](function(_0x185e71){if(_0x185e71){_0x1ce445=_0x185e71;_0x479f6d[_0x9991('0x27')]=_[_0x9991('0x28')](db[_0x9991('0x46')]['rawAttributes']);_0x479f6d['query']=_['keys'](_0x24766b[_0x9991('0x29')]);_0x479f6d[_0x9991('0x2a')]=_[_0x9991('0x2b')](_0x479f6d[_0x9991('0x27')],_0x479f6d[_0x9991('0x29')]);_0x52fcf3[_0x9991('0x2c')]=_[_0x9991('0x2b')](_0x479f6d[_0x9991('0x27')],qs['fields'](_0x24766b['query']['fields']));_0x52fcf3[_0x9991('0x2c')]=_0x52fcf3[_0x9991('0x2c')][_0x9991('0x3d')]?_0x52fcf3[_0x9991('0x2c')]:_0x479f6d[_0x9991('0x27')];_0x52fcf3[_0x9991('0x30')]=qs[_0x9991('0x31')](_0x24766b[_0x9991('0x29')]['sort']);_0x52fcf3[_0x9991('0x32')]=qs[_0x9991('0x2a')](_[_0x9991('0x33')](_0x24766b[_0x9991('0x29')],_0x479f6d[_0x9991('0x2a')]));if(_0x24766b['query'][_0x9991('0x34')]){_0x52fcf3[_0x9991('0x32')]=_['merge'](_0x52fcf3['where'],{'$or':_[_0x9991('0x23')](_0x52fcf3[_0x9991('0x2c')],function(_0x10b85e){var _0x1007c5={};_0x1007c5[_0x10b85e]={'$like':'%'+_0x24766b[_0x9991('0x29')][_0x9991('0x34')]+'%'};return _0x1007c5;})});}_0x52fcf3=_['merge']({},_0x52fcf3,_0x24766b['options']);return _0x1ce445[_0x9991('0x47')](_0x52fcf3);}})['then'](function(_0x9d5c08){if(_0x9d5c08){_0x1c81de=_0x9d5c08[_0x9991('0x3d')];if(!_0x24766b[_0x9991('0x29')][_0x9991('0x2e')]('nolimit')){_0x52fcf3[_0x9991('0x18')]=qs[_0x9991('0x18')](_0x24766b['query'][_0x9991('0x18')]);_0x52fcf3['offset']=qs[_0x9991('0x16')](_0x24766b[_0x9991('0x29')][_0x9991('0x16')]);}return _0x1ce445['getDescriptions'](_0x52fcf3);}})[_0x9991('0x1d')](function(_0x4711fe){if(_0x4711fe){return _0x4711fe?{'count':_0x1c81de,'rows':_0x4711fe}:null;}})[_0x9991('0x1d')](respondWithResult(_0x56b8ae,null))[_0x9991('0x3e')](handleError(_0x56b8ae,null));};exports['getTags']=function(_0x8ce2ac,_0x285ca8,_0x16ddac){var _0x2b82e1={};var _0x27ecda={};var _0x4831f3;var _0x87562c;return db[_0x9991('0x24')]['findOne']({'where':{'id':_0x8ce2ac[_0x9991('0x3b')]['id']}})[_0x9991('0x1d')](handleEntityNotFound(_0x285ca8,null))['then'](function(_0x2878f6){if(_0x2878f6){_0x4831f3=_0x2878f6;_0x27ecda[_0x9991('0x27')]=_[_0x9991('0x28')](db[_0x9991('0x48')][_0x9991('0x3c')]);_0x27ecda[_0x9991('0x29')]=_[_0x9991('0x28')](_0x8ce2ac['query']);_0x27ecda[_0x9991('0x2a')]=_[_0x9991('0x2b')](_0x27ecda['model'],_0x27ecda['query']);_0x2b82e1[_0x9991('0x2c')]=_[_0x9991('0x2b')](_0x27ecda['model'],qs[_0x9991('0x2d')](_0x8ce2ac[_0x9991('0x29')][_0x9991('0x2d')]));_0x2b82e1[_0x9991('0x2c')]=_0x2b82e1['attributes'][_0x9991('0x3d')]?_0x2b82e1['attributes']:_0x27ecda['model'];_0x2b82e1[_0x9991('0x30')]=qs['sort'](_0x8ce2ac['query'][_0x9991('0x31')]);_0x2b82e1[_0x9991('0x32')]=qs[_0x9991('0x2a')](_[_0x9991('0x33')](_0x8ce2ac['query'],_0x27ecda['filters']));if(_0x8ce2ac[_0x9991('0x29')][_0x9991('0x34')]){_0x2b82e1[_0x9991('0x32')]=_[_0x9991('0x35')](_0x2b82e1['where'],{'$or':_[_0x9991('0x23')](_0x2b82e1['attributes'],function(_0x2a0128){var _0x20541b={};_0x20541b[_0x2a0128]={'$like':'%'+_0x8ce2ac[_0x9991('0x29')][_0x9991('0x34')]+'%'};return _0x20541b;})});}_0x2b82e1=_[_0x9991('0x35')]({},_0x2b82e1,_0x8ce2ac[_0x9991('0x37')]);return _0x4831f3[_0x9991('0x49')](_0x2b82e1);}})['then'](function(_0x431e10){if(_0x431e10){_0x87562c=_0x431e10[_0x9991('0x3d')];if(!_0x8ce2ac[_0x9991('0x29')]['hasOwnProperty'](_0x9991('0x2f'))){_0x2b82e1[_0x9991('0x18')]=qs[_0x9991('0x18')](_0x8ce2ac[_0x9991('0x29')][_0x9991('0x18')]);_0x2b82e1[_0x9991('0x16')]=qs[_0x9991('0x16')](_0x8ce2ac[_0x9991('0x29')][_0x9991('0x16')]);}return _0x4831f3[_0x9991('0x49')](_0x2b82e1);}})[_0x9991('0x1d')](function(_0x14dc57){if(_0x14dc57){return _0x14dc57?{'count':_0x87562c,'rows':_0x14dc57}:null;}})[_0x9991('0x1d')](respondWithResult(_0x285ca8,null))[_0x9991('0x3e')](handleError(_0x285ca8,null));};exports[_0x9991('0x4a')]=function(_0x337b87,_0x387a4f,_0x370b23){if(_0x337b87['body']['id']){delete _0x337b87[_0x9991('0x40')]['id'];}return db[_0x9991('0x24')][_0x9991('0x44')]({'where':{'id':_0x337b87['params']['id']}})[_0x9991('0x1d')](handleEntityNotFound(_0x387a4f,null))['then'](function(_0x39a435){if(_0x39a435){return _0x39a435[_0x9991('0x4a')](_0x337b87['body'][_0x9991('0x4b')]||[]);}return null;})[_0x9991('0x1d')](respondWithResult(_0x387a4f,null))['catch'](handleError(_0x387a4f,null));};
\ No newline at end of file
index 2dc7e21..0058d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['request-promise','path','rimraf','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','util','api','bluebird'];(function(_0x4a37ce,_0x18133f){var _0x3fc447=function(_0x897631){while(--_0x897631){_0x4a37ce['push'](_0x4a37ce['shift']());}};_0x3fc447(++_0x18133f);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x37dbf3,_0x4ad77d){_0x37dbf3=_0x37dbf3-0x0;var _0x1cda9b=_0xe2cf[_0x37dbf3];return _0x1cda9b;};'use strict';var _=require('lodash');var util=require(_0xfe2c('0x0'));var logger=require('../../config/logger')(_0xfe2c('0x1'));var moment=require('moment');var BPromise=require(_0xfe2c('0x2'));var rp=require(_0xfe2c('0x3'));var fs=require('fs');var path=require(_0xfe2c('0x4'));var rimraf=require(_0xfe2c('0x5'));var config=require('../../config/environment');var attributes=require(_0xfe2c('0x6'));module[_0xfe2c('0x7')]=function(_0x55bb12,_0x4fa079){return _0x55bb12[_0xfe2c('0x8')](_0xfe2c('0x9'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3266=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intZendeskConfiguration.attributes','define','int_zendesk_configurations','lodash','util'];(function(_0x524870,_0x553a86){var _0x1f9c95=function(_0x3bb83e){while(--_0x3bb83e){_0x524870['push'](_0x524870['shift']());}};_0x1f9c95(++_0x553a86);}(_0x3266,0x6a));var _0x6326=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0x3266[_0x4e7d25];return _0x526fe6;};'use strict';var _=require(_0x6326('0x0'));var util=require(_0x6326('0x1'));var logger=require(_0x6326('0x2'))(_0x6326('0x3'));var moment=require(_0x6326('0x4'));var BPromise=require(_0x6326('0x5'));var rp=require(_0x6326('0x6'));var fs=require('fs');var path=require(_0x6326('0x7'));var rimraf=require(_0x6326('0x8'));var config=require('../../config/environment');var attributes=require(_0x6326('0x9'));module['exports']=function(_0x25ecd8,_0x44460c){return _0x25ecd8[_0x6326('0xa')]('ZendeskConfiguration',attributes,{'tableName':_0x6326('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d044a9..8d121d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4886=['ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x4886,0x1ac));var _0x6488=function(_0x5856fc,_0x76938){_0x5856fc=_0x5856fc-0x0;var _0x36fd10=_0x4886[_0x5856fc];return _0x36fd10;};'use strict';var _=require(_0x6488('0x0'));var util=require(_0x6488('0x1'));var moment=require(_0x6488('0x2'));var BPromise=require('bluebird');var rs=require(_0x6488('0x3'));var fs=require('fs');var Redis=require(_0x6488('0x4'));var db=require(_0x6488('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6488('0x6'));var config=require(_0x6488('0x7'));var jayson=require(_0x6488('0x8'));var client=jayson[_0x6488('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x378148,_0x320b84,_0xaf3b5){return new BPromise(function(_0xc0ac66,_0x51b2c5){return client[_0x6488('0xa')](_0x378148,_0xaf3b5)[_0x6488('0xb')](function(_0x1f0fc2){logger['info'](_0x6488('0xc'),_0x320b84,_0x6488('0xd'));logger[_0x6488('0xe')](_0x6488('0xf'),_0x320b84,_0x6488('0xd'),JSON[_0x6488('0x10')](_0x1f0fc2));if(_0x1f0fc2[_0x6488('0x11')]){if(_0x1f0fc2['error'][_0x6488('0x12')]===0x1f4){logger[_0x6488('0x11')](_0x6488('0xc'),_0x320b84,_0x1f0fc2[_0x6488('0x11')][_0x6488('0x13')]);return _0x51b2c5(_0x1f0fc2[_0x6488('0x11')][_0x6488('0x13')]);}logger[_0x6488('0x11')]('ZendeskConfiguration,\x20%s,\x20%s',_0x320b84,_0x1f0fc2[_0x6488('0x11')][_0x6488('0x13')]);return _0xc0ac66(_0x1f0fc2[_0x6488('0x11')][_0x6488('0x13')]);}else{logger['info'](_0x6488('0xc'),_0x320b84,'request\x20sent');_0xc0ac66(_0x1f0fc2[_0x6488('0x14')][_0x6488('0x13')]);}})[_0x6488('0x15')](function(_0x4a8547){logger[_0x6488('0x11')](_0x6488('0xc'),_0x320b84,_0x4a8547);_0x51b2c5(_0x4a8547);});});}
\ No newline at end of file
+var _0x7635=['client','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x5f2d31,_0x4a7572){var _0x39f6e8=function(_0x4f87e5){while(--_0x4f87e5){_0x5f2d31['push'](_0x5f2d31['shift']());}};_0x39f6e8(++_0x4a7572);}(_0x7635,0x140));var _0x5763=function(_0x2deac4,_0xc27a2b){_0x2deac4=_0x2deac4-0x0;var _0x1c0bda=_0x7635[_0x2deac4];return _0x1c0bda;};'use strict';var _=require(_0x5763('0x0'));var util=require(_0x5763('0x1'));var moment=require(_0x5763('0x2'));var BPromise=require(_0x5763('0x3'));var rs=require(_0x5763('0x4'));var fs=require('fs');var Redis=require(_0x5763('0x5'));var db=require(_0x5763('0x6'))['db'];var utils=require(_0x5763('0x7'));var logger=require('../../config/logger')(_0x5763('0x8'));var config=require(_0x5763('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x5763('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20f60e,_0x17bbe6,_0x37cc1a){return new BPromise(function(_0x191bca,_0x2ecdf4){return client['request'](_0x20f60e,_0x37cc1a)[_0x5763('0xb')](function(_0x3d5e7b){logger[_0x5763('0xc')](_0x5763('0xd'),_0x17bbe6,_0x5763('0xe'));logger[_0x5763('0xf')](_0x5763('0x10'),_0x17bbe6,'request\x20sent',JSON['stringify'](_0x3d5e7b));if(_0x3d5e7b[_0x5763('0x11')]){if(_0x3d5e7b[_0x5763('0x11')][_0x5763('0x12')]===0x1f4){logger[_0x5763('0x11')](_0x5763('0xd'),_0x17bbe6,_0x3d5e7b['error'][_0x5763('0x13')]);return _0x2ecdf4(_0x3d5e7b[_0x5763('0x11')]['message']);}logger['error'](_0x5763('0xd'),_0x17bbe6,_0x3d5e7b['error'][_0x5763('0x13')]);return _0x191bca(_0x3d5e7b[_0x5763('0x11')]['message']);}else{logger[_0x5763('0xc')](_0x5763('0xd'),_0x17bbe6,_0x5763('0xe'));_0x191bca(_0x3d5e7b[_0x5763('0x14')][_0x5763('0x13')]);}})[_0x5763('0x15')](function(_0x40f4a9){logger['error'](_0x5763('0xd'),_0x17bbe6,_0x40f4a9);_0x2ecdf4(_0x40f4a9);});});}
\ No newline at end of file
index 5c1dedc..b6c310d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc0a=['delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x117821,_0xaa1933){var _0x4ae9ff=function(_0x253662){while(--_0x253662){_0x117821['push'](_0x117821['shift']());}};_0x4ae9ff(++_0xaa1933);}(_0xcc0a,0x7b));var _0xacc0=function(_0x3c935a,_0x521067){_0x3c935a=_0x3c935a-0x0;var _0x46a29c=_0xcc0a[_0x3c935a];return _0x46a29c;};'use strict';var multer=require('multer');var util=require(_0xacc0('0x0'));var path=require('path');var timeout=require(_0xacc0('0x1'));var express=require(_0xacc0('0x2'));var router=express[_0xacc0('0x3')]();var fs_extra=require(_0xacc0('0x4'));var auth=require(_0xacc0('0x5'));var interaction=require(_0xacc0('0x6'));var config=require(_0xacc0('0x7'));var controller=require(_0xacc0('0x8'));router[_0xacc0('0x9')]('/',auth[_0xacc0('0xa')](),controller['index']);router[_0xacc0('0x9')](_0xacc0('0xb'),auth[_0xacc0('0xa')](),controller[_0xacc0('0xc')]);router[_0xacc0('0xd')]('/',auth[_0xacc0('0xa')](),controller[_0xacc0('0xe')]);router[_0xacc0('0xf')](_0xacc0('0xb'),auth[_0xacc0('0xa')](),controller[_0xacc0('0x10')]);router[_0xacc0('0x11')](_0xacc0('0xb'),auth[_0xacc0('0xa')](),controller[_0xacc0('0x12')]);module[_0xacc0('0x13')]=router;
\ No newline at end of file
+var _0xb102=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','/:id','show','create','put','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x18a4f7,_0x3f915c){var _0x368cf3=function(_0x173245){while(--_0x173245){_0x18a4f7['push'](_0x18a4f7['shift']());}};_0x368cf3(++_0x3f915c);}(_0xb102,0x140));var _0x2b10=function(_0x214bbf,_0x323dc6){_0x214bbf=_0x214bbf-0x0;var _0x26f190=_0xb102[_0x214bbf];return _0x26f190;};'use strict';var multer=require('multer');var util=require(_0x2b10('0x0'));var path=require('path');var timeout=require(_0x2b10('0x1'));var express=require(_0x2b10('0x2'));var router=express[_0x2b10('0x3')]();var fs_extra=require(_0x2b10('0x4'));var auth=require(_0x2b10('0x5'));var interaction=require(_0x2b10('0x6'));var config=require(_0x2b10('0x7'));var controller=require(_0x2b10('0x8'));router[_0x2b10('0x9')]('/',auth[_0x2b10('0xa')](),controller['index']);router['get'](_0x2b10('0xb'),auth[_0x2b10('0xa')](),controller[_0x2b10('0xc')]);router['post']('/',auth[_0x2b10('0xa')](),controller[_0x2b10('0xd')]);router[_0x2b10('0xe')](_0x2b10('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x2b10('0xf')](_0x2b10('0xb'),auth[_0x2b10('0xa')](),controller[_0x2b10('0x10')]);module[_0x2b10('0x11')]=router;
\ No newline at end of file
index 34a4ff5..0a07739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa734=['string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x9c4bce,_0x333f88){var _0xd93ffe=function(_0x4f0d80){while(--_0x4f0d80){_0x9c4bce['push'](_0x9c4bce['shift']());}};_0xd93ffe(++_0x333f88);}(_0xa734,0x11f));var _0x4a73=function(_0xf4c14f,_0x3c8913){_0xf4c14f=_0xf4c14f-0x0;var _0x2da13b=_0xa734[_0xf4c14f];return _0x2da13b;};'use strict';var Sequelize=require(_0x4a73('0x0'));module[_0x4a73('0x1')]={'type':{'type':Sequelize[_0x4a73('0x2')](_0x4a73('0x3'),'variable',_0x4a73('0x4'),_0x4a73('0x5'),_0x4a73('0x6')),'defaultValue':_0x4a73('0x3')},'content':{'type':Sequelize[_0x4a73('0x7')]},'key':{'type':Sequelize[_0x4a73('0x7')]},'keyType':{'type':Sequelize[_0x4a73('0x2')]('string',_0x4a73('0x8'),'customVariable')},'keyContent':{'type':Sequelize[_0x4a73('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x4a73('0x7')]},'customField':{'type':Sequelize[_0x4a73('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4a73('0x7')]}};
\ No newline at end of file
+var _0x1d57=['ENUM','variable','sequelize','exports','string','customVariable','picklist','STRING'];(function(_0x264b9b,_0xa1181e){var _0x4c7a0e=function(_0x4b77a0){while(--_0x4b77a0){_0x264b9b['push'](_0x264b9b['shift']());}};_0x4c7a0e(++_0xa1181e);}(_0x1d57,0xc2));var _0x71d5=function(_0x11026e,_0x164422){_0x11026e=_0x11026e-0x0;var _0x334d99=_0x1d57[_0x11026e];return _0x334d99;};'use strict';var Sequelize=require(_0x71d5('0x0'));module[_0x71d5('0x1')]={'type':{'type':Sequelize['ENUM'](_0x71d5('0x2'),'variable',_0x71d5('0x3'),'keyValue',_0x71d5('0x4')),'defaultValue':_0x71d5('0x2')},'content':{'type':Sequelize[_0x71d5('0x5')]},'key':{'type':Sequelize[_0x71d5('0x5')]},'keyType':{'type':Sequelize[_0x71d5('0x6')](_0x71d5('0x2'),_0x71d5('0x7'),_0x71d5('0x3'))},'keyContent':{'type':Sequelize[_0x71d5('0x5')]},'idField':{'type':Sequelize[_0x71d5('0x5')]},'nameField':{'type':Sequelize[_0x71d5('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x71d5('0x5')]}};
\ No newline at end of file
index d21988d..e76af78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8248=['map','ZendeskField','rawAttributes','fieldName','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index'];(function(_0x42e2ef,_0x5b77b7){var _0x2e0b83=function(_0x2f5b6e){while(--_0x2f5b6e){_0x42e2ef['push'](_0x42e2ef['shift']());}};_0x2e0b83(++_0x5b77b7);}(_0x8248,0x67));var _0x8824=function(_0x5d0680,_0x10c11d){_0x5d0680=_0x5d0680-0x0;var _0x1ef1dc=_0x8248[_0x5d0680];return _0x1ef1dc;};'use strict';var emlformat=require(_0x8824('0x0'));var rimraf=require(_0x8824('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8824('0x2'));var rp=require('request-promise');var moment=require(_0x8824('0x3'));var BPromise=require(_0x8824('0x4'));var Mustache=require('mustache');var util=require(_0x8824('0x5'));var path=require(_0x8824('0x6'));var sox=require(_0x8824('0x7'));var csv=require(_0x8824('0x8'));var ejs=require(_0x8824('0x9'));var fs=require('fs');var fs_extra=require(_0x8824('0xa'));var _=require(_0x8824('0xb'));var squel=require(_0x8824('0xc'));var crypto=require(_0x8824('0xd'));var jsforce=require(_0x8824('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8824('0x8'));var querystring=require(_0x8824('0xf'));var Papa=require(_0x8824('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8824('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x8824('0x12'));var config=require(_0x8824('0x13'));var licenseUtil=require(_0x8824('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x73cad2,_0x4e28c7){_0x4e28c7=_0x4e28c7||0xcc;return function(_0x458a3f){if(_0x458a3f){return _0x73cad2['sendStatus'](_0x4e28c7);}return _0x73cad2[_0x8824('0x15')](_0x4e28c7)[_0x8824('0x16')]();};}function respondWithResult(_0x31da9a,_0x2323cc){_0x2323cc=_0x2323cc||0xc8;return function(_0x3d4704){if(_0x3d4704){return _0x31da9a[_0x8824('0x15')](_0x2323cc)[_0x8824('0x17')](_0x3d4704);}};}function respondWithFilteredResult(_0x2b2fc9,_0xf048cb){return function(_0x447946){if(_0x447946){var _0x367ffe=typeof _0xf048cb[_0x8824('0x18')]===_0x8824('0x19')&&typeof _0xf048cb[_0x8824('0x1a')]==='undefined';var _0x1635e4=_0x447946['count'];var _0x5672ed=_0x367ffe?0x0:_0xf048cb[_0x8824('0x18')];var _0x4f4953=_0x367ffe?_0x447946[_0x8824('0x1b')]:_0xf048cb[_0x8824('0x18')]+_0xf048cb['limit'];var _0x452814;if(_0x4f4953>=_0x1635e4){_0x4f4953=_0x1635e4;_0x452814=0xc8;}else{_0x452814=0xce;}_0x2b2fc9['status'](_0x452814);return _0x2b2fc9[_0x8824('0x1c')]('Content-Range',_0x5672ed+'-'+_0x4f4953+'/'+_0x1635e4)[_0x8824('0x17')](_0x447946);}return null;};}function patchUpdates(_0x3a3bbd){return function(_0x2801a8){try{jsonpatch[_0x8824('0x1d')](_0x2801a8,_0x3a3bbd,!![]);}catch(_0x473723){return BPromise[_0x8824('0x1e')](_0x473723);}return _0x2801a8[_0x8824('0x1f')]();};}function saveUpdates(_0x4c5580,_0x4a10f8){return function(_0x39665b){if(_0x39665b){return _0x39665b[_0x8824('0x20')](_0x4c5580)[_0x8824('0x21')](function(_0x55bee8){return _0x55bee8;});}return null;};}function removeEntity(_0x452f3d,_0x587251){return function(_0x5275d6){if(_0x5275d6){return _0x5275d6[_0x8824('0x22')]()[_0x8824('0x21')](function(){_0x452f3d[_0x8824('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd89d43,_0x20bc03){return function(_0x4086ac){if(!_0x4086ac){_0xd89d43[_0x8824('0x23')](0x194);}return _0x4086ac;};}function handleError(_0x4a967d,_0x321695){_0x321695=_0x321695||0x1f4;return function(_0x2e1719){logger[_0x8824('0x24')](_0x2e1719[_0x8824('0x25')]);if(_0x2e1719[_0x8824('0x26')]){delete _0x2e1719[_0x8824('0x26')];}_0x4a967d[_0x8824('0x15')](_0x321695)[_0x8824('0x27')](_0x2e1719);};}exports[_0x8824('0x28')]=function(_0xfe4d0b,_0x4bb39a){var _0x137523={},_0x5bac2d={},_0x48a178={'count':0x0,'rows':[]};var _0x4cb8b7=_[_0x8824('0x29')](db[_0x8824('0x2a')][_0x8824('0x2b')],function(_0x221000){return{'name':_0x221000[_0x8824('0x2c')],'type':_0x221000['type']['key']};});_0x5bac2d['model']=_['map'](_0x4cb8b7,'name');_0x5bac2d[_0x8824('0x2d')]=_['keys'](_0xfe4d0b[_0x8824('0x2d')]);_0x5bac2d[_0x8824('0x2e')]=_[_0x8824('0x2f')](_0x5bac2d['model'],_0x5bac2d['query']);_0x137523[_0x8824('0x30')]=_[_0x8824('0x2f')](_0x5bac2d[_0x8824('0x31')],qs['fields'](_0xfe4d0b[_0x8824('0x2d')][_0x8824('0x32')]));_0x137523['attributes']=_0x137523[_0x8824('0x30')][_0x8824('0x33')]?_0x137523[_0x8824('0x30')]:_0x5bac2d[_0x8824('0x31')];if(!_0xfe4d0b[_0x8824('0x2d')]['hasOwnProperty'](_0x8824('0x34'))){_0x137523[_0x8824('0x1a')]=qs[_0x8824('0x1a')](_0xfe4d0b[_0x8824('0x2d')][_0x8824('0x1a')]);_0x137523['offset']=qs[_0x8824('0x18')](_0xfe4d0b[_0x8824('0x2d')][_0x8824('0x18')]);}_0x137523[_0x8824('0x35')]=qs[_0x8824('0x36')](_0xfe4d0b[_0x8824('0x2d')][_0x8824('0x36')]);_0x137523[_0x8824('0x37')]=qs[_0x8824('0x2e')](_[_0x8824('0x38')](_0xfe4d0b[_0x8824('0x2d')],_0x5bac2d['filters']),_0x4cb8b7);if(_0xfe4d0b[_0x8824('0x2d')][_0x8824('0x39')]){_0x137523[_0x8824('0x37')]=_[_0x8824('0x3a')](_0x137523[_0x8824('0x37')],{'$or':_['map'](_0x4cb8b7,function(_0x4073d9){if(_0x4073d9[_0x8824('0x3b')]!=='VIRTUAL'){var _0x2c95d2={};_0x2c95d2[_0x4073d9[_0x8824('0x26')]]={'$like':'%'+_0xfe4d0b[_0x8824('0x2d')][_0x8824('0x39')]+'%'};return _0x2c95d2;}})});}_0x137523=_[_0x8824('0x3a')]({},_0x137523,_0xfe4d0b[_0x8824('0x3c')]);var _0xac8792={'where':_0x137523[_0x8824('0x37')]};return db[_0x8824('0x2a')][_0x8824('0x1b')](_0xac8792)[_0x8824('0x21')](function(_0x3390c1){_0x48a178[_0x8824('0x1b')]=_0x3390c1;if(_0xfe4d0b['query'][_0x8824('0x3d')]){_0x137523[_0x8824('0x3e')]=[{'all':!![]}];}return db[_0x8824('0x2a')][_0x8824('0x3f')](_0x137523);})[_0x8824('0x21')](function(_0x433ecd){_0x48a178[_0x8824('0x40')]=_0x433ecd;return _0x48a178;})[_0x8824('0x21')](respondWithFilteredResult(_0x4bb39a,_0x137523))[_0x8824('0x41')](handleError(_0x4bb39a,null));};exports[_0x8824('0x42')]=function(_0x293ee7,_0x235fcf){var _0x4df038={'raw':!![],'where':{'id':_0x293ee7[_0x8824('0x43')]['id']}},_0x338d82={};_0x338d82['model']=_[_0x8824('0x44')](db[_0x8824('0x2a')]['rawAttributes']);_0x338d82[_0x8824('0x2d')]=_[_0x8824('0x44')](_0x293ee7['query']);_0x338d82[_0x8824('0x2e')]=_[_0x8824('0x2f')](_0x338d82[_0x8824('0x31')],_0x338d82[_0x8824('0x2d')]);_0x4df038['attributes']=_[_0x8824('0x2f')](_0x338d82['model'],qs[_0x8824('0x32')](_0x293ee7[_0x8824('0x2d')]['fields']));_0x4df038[_0x8824('0x30')]=_0x4df038['attributes'][_0x8824('0x33')]?_0x4df038[_0x8824('0x30')]:_0x338d82[_0x8824('0x31')];if(_0x293ee7[_0x8824('0x2d')][_0x8824('0x3d')]){_0x4df038['include']=[{'all':!![]}];}_0x4df038=_[_0x8824('0x3a')]({},_0x4df038,_0x293ee7['options']);return db[_0x8824('0x2a')]['find'](_0x4df038)[_0x8824('0x21')](handleEntityNotFound(_0x235fcf,null))[_0x8824('0x21')](respondWithResult(_0x235fcf,null))[_0x8824('0x41')](handleError(_0x235fcf,null));};exports[_0x8824('0x45')]=function(_0x25a99f,_0x343b08){return db[_0x8824('0x2a')][_0x8824('0x45')](_0x25a99f['body'],{})[_0x8824('0x21')](respondWithResult(_0x343b08,0xc9))[_0x8824('0x41')](handleError(_0x343b08,null));};exports[_0x8824('0x20')]=function(_0x84fb40,_0x593c23){if(_0x84fb40[_0x8824('0x46')]['id']){delete _0x84fb40['body']['id'];}return db[_0x8824('0x2a')][_0x8824('0x47')]({'where':{'id':_0x84fb40[_0x8824('0x43')]['id']}})[_0x8824('0x21')](handleEntityNotFound(_0x593c23,null))[_0x8824('0x21')](saveUpdates(_0x84fb40['body'],null))[_0x8824('0x21')](respondWithResult(_0x593c23,null))[_0x8824('0x41')](handleError(_0x593c23,null));};exports[_0x8824('0x22')]=function(_0x161bd6,_0x15cccf){return db['ZendeskField'][_0x8824('0x47')]({'where':{'id':_0x161bd6['params']['id']}})[_0x8824('0x21')](handleEntityNotFound(_0x15cccf,null))[_0x8824('0x21')](removeEntity(_0x15cccf,null))[_0x8824('0x41')](handleError(_0x15cccf,null));};
\ No newline at end of file
+var _0x837e=['filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','create','update','body','find','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','destroy','name','send','index','map','ZendeskField','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x837e,0x12b));var _0xe837=function(_0xb05dc9,_0x4e3dff){_0xb05dc9=_0xb05dc9-0x0;var _0x550442=_0x837e[_0xb05dc9];return _0x550442;};'use strict';var emlformat=require(_0xe837('0x0'));var rimraf=require(_0xe837('0x1'));var zipdir=require(_0xe837('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe837('0x3'));var moment=require(_0xe837('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe837('0x5'));var path=require(_0xe837('0x6'));var sox=require(_0xe837('0x7'));var csv=require(_0xe837('0x8'));var ejs=require(_0xe837('0x9'));var fs=require('fs');var fs_extra=require(_0xe837('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe837('0xb'));var jsforce=require(_0xe837('0xc'));var deskjs=require(_0xe837('0xd'));var toCsv=require('to-csv');var querystring=require(_0xe837('0xe'));var Papa=require(_0xe837('0xf'));var Redis=require(_0xe837('0x10'));var authService=require(_0xe837('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe837('0x12'));var logger=require(_0xe837('0x13'))(_0xe837('0x14'));var utils=require('../../config/utils');var config=require(_0xe837('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x7c400f,_0x23e68b){_0x23e68b=_0x23e68b||0xcc;return function(_0x56481c){if(_0x56481c){return _0x7c400f[_0xe837('0x16')](_0x23e68b);}return _0x7c400f[_0xe837('0x17')](_0x23e68b)[_0xe837('0x18')]();};}function respondWithResult(_0x532e2f,_0x219f53){_0x219f53=_0x219f53||0xc8;return function(_0x58d89e){if(_0x58d89e){return _0x532e2f[_0xe837('0x17')](_0x219f53)[_0xe837('0x19')](_0x58d89e);}};}function respondWithFilteredResult(_0x5e5ee5,_0x2447ab){return function(_0xa537ef){if(_0xa537ef){var _0x2d4bed=typeof _0x2447ab[_0xe837('0x1a')]==='undefined'&&typeof _0x2447ab[_0xe837('0x1b')]===_0xe837('0x1c');var _0x20979e=_0xa537ef[_0xe837('0x1d')];var _0x6b4e5f=_0x2d4bed?0x0:_0x2447ab[_0xe837('0x1a')];var _0x490ed5=_0x2d4bed?_0xa537ef[_0xe837('0x1d')]:_0x2447ab[_0xe837('0x1a')]+_0x2447ab['limit'];var _0x13db0c;if(_0x490ed5>=_0x20979e){_0x490ed5=_0x20979e;_0x13db0c=0xc8;}else{_0x13db0c=0xce;}_0x5e5ee5[_0xe837('0x17')](_0x13db0c);return _0x5e5ee5[_0xe837('0x1e')](_0xe837('0x1f'),_0x6b4e5f+'-'+_0x490ed5+'/'+_0x20979e)[_0xe837('0x19')](_0xa537ef);}return null;};}function patchUpdates(_0xa26603){return function(_0x390b42){try{jsonpatch['apply'](_0x390b42,_0xa26603,!![]);}catch(_0x2bde72){return BPromise[_0xe837('0x20')](_0x2bde72);}return _0x390b42[_0xe837('0x21')]();};}function saveUpdates(_0x4cc608,_0x223d50){return function(_0x46eb02){if(_0x46eb02){return _0x46eb02['update'](_0x4cc608)[_0xe837('0x22')](function(_0x494bfa){return _0x494bfa;});}return null;};}function removeEntity(_0x152edf,_0x333034){return function(_0x32e5f6){if(_0x32e5f6){return _0x32e5f6[_0xe837('0x23')]()['then'](function(){_0x152edf[_0xe837('0x17')](0xcc)[_0xe837('0x18')]();});}};}function handleEntityNotFound(_0x290b91,_0xfc5598){return function(_0x42a603){if(!_0x42a603){_0x290b91[_0xe837('0x16')](0x194);}return _0x42a603;};}function handleError(_0x349d42,_0x263416){_0x263416=_0x263416||0x1f4;return function(_0x267a22){logger['error'](_0x267a22['stack']);if(_0x267a22[_0xe837('0x24')]){delete _0x267a22['name'];}_0x349d42[_0xe837('0x17')](_0x263416)[_0xe837('0x25')](_0x267a22);};}exports[_0xe837('0x26')]=function(_0x2d5a4e,_0x1ac0f8){var _0x132e8f={},_0x475b63={},_0x7aa8a6={'count':0x0,'rows':[]};var _0x4d3fde=_[_0xe837('0x27')](db[_0xe837('0x28')]['rawAttributes'],function(_0x458703){return{'name':_0x458703['fieldName'],'type':_0x458703[_0xe837('0x29')][_0xe837('0x2a')]};});_0x475b63[_0xe837('0x2b')]=_['map'](_0x4d3fde,_0xe837('0x24'));_0x475b63[_0xe837('0x2c')]=_['keys'](_0x2d5a4e[_0xe837('0x2c')]);_0x475b63[_0xe837('0x2d')]=_['intersection'](_0x475b63[_0xe837('0x2b')],_0x475b63[_0xe837('0x2c')]);_0x132e8f[_0xe837('0x2e')]=_[_0xe837('0x2f')](_0x475b63[_0xe837('0x2b')],qs['fields'](_0x2d5a4e['query'][_0xe837('0x30')]));_0x132e8f[_0xe837('0x2e')]=_0x132e8f[_0xe837('0x2e')][_0xe837('0x31')]?_0x132e8f[_0xe837('0x2e')]:_0x475b63['model'];if(!_0x2d5a4e[_0xe837('0x2c')][_0xe837('0x32')](_0xe837('0x33'))){_0x132e8f[_0xe837('0x1b')]=qs[_0xe837('0x1b')](_0x2d5a4e['query'][_0xe837('0x1b')]);_0x132e8f[_0xe837('0x1a')]=qs[_0xe837('0x1a')](_0x2d5a4e[_0xe837('0x2c')]['offset']);}_0x132e8f[_0xe837('0x34')]=qs[_0xe837('0x35')](_0x2d5a4e[_0xe837('0x2c')]['sort']);_0x132e8f[_0xe837('0x36')]=qs['filters'](_[_0xe837('0x37')](_0x2d5a4e['query'],_0x475b63[_0xe837('0x2d')]),_0x4d3fde);if(_0x2d5a4e[_0xe837('0x2c')][_0xe837('0x38')]){_0x132e8f[_0xe837('0x36')]=_['merge'](_0x132e8f[_0xe837('0x36')],{'$or':_[_0xe837('0x27')](_0x4d3fde,function(_0x56f2ce){if(_0x56f2ce['type']!==_0xe837('0x39')){var _0x2a1e00={};_0x2a1e00[_0x56f2ce['name']]={'$like':'%'+_0x2d5a4e[_0xe837('0x2c')]['filter']+'%'};return _0x2a1e00;}})});}_0x132e8f=_[_0xe837('0x3a')]({},_0x132e8f,_0x2d5a4e[_0xe837('0x3b')]);var _0x4aa731={'where':_0x132e8f[_0xe837('0x36')]};return db[_0xe837('0x28')][_0xe837('0x1d')](_0x4aa731)[_0xe837('0x22')](function(_0x37e3ef){_0x7aa8a6[_0xe837('0x1d')]=_0x37e3ef;if(_0x2d5a4e['query'][_0xe837('0x3c')]){_0x132e8f[_0xe837('0x3d')]=[{'all':!![]}];}return db[_0xe837('0x28')]['findAll'](_0x132e8f);})[_0xe837('0x22')](function(_0x6d587d){_0x7aa8a6[_0xe837('0x3e')]=_0x6d587d;return _0x7aa8a6;})[_0xe837('0x22')](respondWithFilteredResult(_0x1ac0f8,_0x132e8f))[_0xe837('0x3f')](handleError(_0x1ac0f8,null));};exports[_0xe837('0x40')]=function(_0x125b59,_0x42817f){var _0x250aa9={'raw':!![],'where':{'id':_0x125b59[_0xe837('0x41')]['id']}},_0x398bf7={};_0x398bf7[_0xe837('0x2b')]=_[_0xe837('0x42')](db[_0xe837('0x28')]['rawAttributes']);_0x398bf7['query']=_[_0xe837('0x42')](_0x125b59[_0xe837('0x2c')]);_0x398bf7['filters']=_['intersection'](_0x398bf7['model'],_0x398bf7['query']);_0x250aa9[_0xe837('0x2e')]=_['intersection'](_0x398bf7[_0xe837('0x2b')],qs[_0xe837('0x30')](_0x125b59[_0xe837('0x2c')][_0xe837('0x30')]));_0x250aa9[_0xe837('0x2e')]=_0x250aa9[_0xe837('0x2e')][_0xe837('0x31')]?_0x250aa9[_0xe837('0x2e')]:_0x398bf7[_0xe837('0x2b')];if(_0x125b59[_0xe837('0x2c')][_0xe837('0x3c')]){_0x250aa9['include']=[{'all':!![]}];}_0x250aa9=_[_0xe837('0x3a')]({},_0x250aa9,_0x125b59[_0xe837('0x3b')]);return db[_0xe837('0x28')]['find'](_0x250aa9)[_0xe837('0x22')](handleEntityNotFound(_0x42817f,null))['then'](respondWithResult(_0x42817f,null))[_0xe837('0x3f')](handleError(_0x42817f,null));};exports[_0xe837('0x43')]=function(_0x5212b9,_0x44e36f){return db[_0xe837('0x28')][_0xe837('0x43')](_0x5212b9['body'],{})[_0xe837('0x22')](respondWithResult(_0x44e36f,0xc9))[_0xe837('0x3f')](handleError(_0x44e36f,null));};exports[_0xe837('0x44')]=function(_0x5aa24b,_0x24f467){if(_0x5aa24b[_0xe837('0x45')]['id']){delete _0x5aa24b[_0xe837('0x45')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x5aa24b[_0xe837('0x41')]['id']}})['then'](handleEntityNotFound(_0x24f467,null))[_0xe837('0x22')](saveUpdates(_0x5aa24b[_0xe837('0x45')],null))[_0xe837('0x22')](respondWithResult(_0x24f467,null))[_0xe837('0x3f')](handleError(_0x24f467,null));};exports[_0xe837('0x23')]=function(_0x5152ad,_0x397e5d){return db[_0xe837('0x28')][_0xe837('0x46')]({'where':{'id':_0x5152ad['params']['id']}})[_0xe837('0x22')](handleEntityNotFound(_0x397e5d,null))[_0xe837('0x22')](removeEntity(_0x397e5d,null))[_0xe837('0x3f')](handleError(_0x397e5d,null));};
\ No newline at end of file
index eba8dcc..21a702e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd861=['FieldId','util','api','moment','bluebird','request-promise','rimraf','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields'];(function(_0x5b4f5e,_0x39e92a){var _0x5bb7a1=function(_0x1fc81f){while(--_0x1fc81f){_0x5b4f5e['push'](_0x5b4f5e['shift']());}};_0x5bb7a1(++_0x39e92a);}(_0xd861,0xc1));var _0x1d86=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd861[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x1d86('0x0'));var logger=require('../../config/logger')(_0x1d86('0x1'));var moment=require(_0x1d86('0x2'));var BPromise=require(_0x1d86('0x3'));var rp=require(_0x1d86('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1d86('0x5'));var config=require('../../config/environment');var attributes=require(_0x1d86('0x6'));module[_0x1d86('0x7')]=function(_0x24eab9,_0x4d5e05){return _0x24eab9[_0x1d86('0x8')](_0x1d86('0x9'),attributes,{'tableName':_0x1d86('0xa'),'paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':['idField',_0x1d86('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x84c9=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','lodash'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0x84c9,0x99));var _0x984c=function(_0x37eb2b,_0x3f32f7){_0x37eb2b=_0x37eb2b-0x0;var _0x58c061=_0x84c9[_0x37eb2b];return _0x58c061;};'use strict';var _=require(_0x984c('0x0'));var util=require('util');var logger=require(_0x984c('0x1'))(_0x984c('0x2'));var moment=require(_0x984c('0x3'));var BPromise=require(_0x984c('0x4'));var rp=require(_0x984c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x984c('0x6'));var attributes=require(_0x984c('0x7'));module[_0x984c('0x8')]=function(_0x563108,_0x2f7afe){return _0x563108[_0x984c('0x9')](_0x984c('0xa'),attributes,{'tableName':_0x984c('0xb'),'paranoid':![],'indexes':[{'name':_0x984c('0xc'),'fields':['idField',_0x984c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1335918..ff62e46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9069=['message','ZendeskField,\x20%s,\x20%s','request\x20sent','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','stringify','error','code'];(function(_0x5ca4b2,_0x1aba98){var _0x26b3c8=function(_0xa83213){while(--_0xa83213){_0x5ca4b2['push'](_0x5ca4b2['shift']());}};_0x26b3c8(++_0x1aba98);}(_0x9069,0x1a3));var _0x9906=function(_0x561f69,_0x1a6fd1){_0x561f69=_0x561f69-0x0;var _0x564eca=_0x9069[_0x561f69];return _0x564eca;};'use strict';var _=require(_0x9906('0x0'));var util=require(_0x9906('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9906('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9906('0x3'))['db'];var utils=require(_0x9906('0x4'));var logger=require(_0x9906('0x5'))(_0x9906('0x6'));var config=require(_0x9906('0x7'));var jayson=require(_0x9906('0x8'));var client=jayson[_0x9906('0x9')][_0x9906('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13f8f8,_0x2141e9,_0x59fc4b){return new BPromise(function(_0x1ea0fb,_0x208699){return client[_0x9906('0xb')](_0x13f8f8,_0x59fc4b)[_0x9906('0xc')](function(_0x38885e){logger[_0x9906('0xd')]('ZendeskField,\x20%s,\x20%s',_0x2141e9,'request\x20sent');logger[_0x9906('0xe')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x2141e9,'request\x20sent',JSON[_0x9906('0xf')](_0x38885e));if(_0x38885e[_0x9906('0x10')]){if(_0x38885e[_0x9906('0x10')][_0x9906('0x11')]===0x1f4){logger[_0x9906('0x10')]('ZendeskField,\x20%s,\x20%s',_0x2141e9,_0x38885e[_0x9906('0x10')][_0x9906('0x12')]);return _0x208699(_0x38885e['error']['message']);}logger[_0x9906('0x10')](_0x9906('0x13'),_0x2141e9,_0x38885e[_0x9906('0x10')]['message']);return _0x1ea0fb(_0x38885e[_0x9906('0x10')][_0x9906('0x12')]);}else{logger['info'](_0x9906('0x13'),_0x2141e9,_0x9906('0x14'));_0x1ea0fb(_0x38885e[_0x9906('0x15')][_0x9906('0x12')]);}})[_0x9906('0x16')](function(_0x2d38c4){logger[_0x9906('0x10')](_0x9906('0x13'),_0x2141e9,_0x2d38c4);_0x208699(_0x2d38c4);});});}
\ No newline at end of file
+var _0x78ef=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','stringify','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird'];(function(_0x3a7837,_0x141f31){var _0x4317ab=function(_0x150264){while(--_0x150264){_0x3a7837['push'](_0x3a7837['shift']());}};_0x4317ab(++_0x141f31);}(_0x78ef,0x147));var _0xf78e=function(_0x2c165a,_0x5a24ad){_0x2c165a=_0x2c165a-0x0;var _0x3c1751=_0x78ef[_0x2c165a];return _0x3c1751;};'use strict';var _=require(_0xf78e('0x0'));var util=require('util');var moment=require(_0xf78e('0x1'));var BPromise=require(_0xf78e('0x2'));var rs=require(_0xf78e('0x3'));var fs=require('fs');var Redis=require(_0xf78e('0x4'));var db=require(_0xf78e('0x5'))['db'];var utils=require(_0xf78e('0x6'));var logger=require(_0xf78e('0x7'))(_0xf78e('0x8'));var config=require(_0xf78e('0x9'));var jayson=require(_0xf78e('0xa'));var client=jayson['client'][_0xf78e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e2122,_0x2c5b3b,_0xdbf28c){return new BPromise(function(_0x58c45c,_0x336712){return client['request'](_0x5e2122,_0xdbf28c)[_0xf78e('0xc')](function(_0x29ea79){logger[_0xf78e('0xd')]('ZendeskField,\x20%s,\x20%s',_0x2c5b3b,_0xf78e('0xe'));logger['debug']('ZendeskField,\x20%s,\x20%s,\x20%s',_0x2c5b3b,_0xf78e('0xe'),JSON[_0xf78e('0xf')](_0x29ea79));if(_0x29ea79[_0xf78e('0x10')]){if(_0x29ea79[_0xf78e('0x10')][_0xf78e('0x11')]===0x1f4){logger[_0xf78e('0x10')](_0xf78e('0x12'),_0x2c5b3b,_0x29ea79[_0xf78e('0x10')][_0xf78e('0x13')]);return _0x336712(_0x29ea79[_0xf78e('0x10')][_0xf78e('0x13')]);}logger['error'](_0xf78e('0x12'),_0x2c5b3b,_0x29ea79[_0xf78e('0x10')][_0xf78e('0x13')]);return _0x58c45c(_0x29ea79['error']['message']);}else{logger[_0xf78e('0xd')]('ZendeskField,\x20%s,\x20%s',_0x2c5b3b,_0xf78e('0xe'));_0x58c45c(_0x29ea79[_0xf78e('0x14')][_0xf78e('0x13')]);}})[_0xf78e('0x15')](function(_0x126794){logger[_0xf78e('0x10')](_0xf78e('0x12'),_0x2c5b3b,_0x126794);_0x336712(_0x126794);});});}
\ No newline at end of file
index 551075a..4e4d0a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7488=['getFields','post','/:id/configurations','addConfiguration','put','/:id','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','show','isAuthenticated','/:id/fields'];(function(_0x49df75,_0xe598c0){var _0x40173c=function(_0x55b28a){while(--_0x55b28a){_0x49df75['push'](_0x49df75['shift']());}};_0x40173c(++_0xe598c0);}(_0x7488,0xaa));var _0x8748=function(_0x37c45f,_0x5bc42e){_0x37c45f=_0x37c45f-0x0;var _0x300ac1=_0x7488[_0x37c45f];return _0x300ac1;};'use strict';var multer=require(_0x8748('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8748('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8748('0x2'));var auth=require(_0x8748('0x3'));var interaction=require(_0x8748('0x4'));var config=require(_0x8748('0x5'));var controller=require('./intZohoAccount.controller');router[_0x8748('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x8748('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x8748('0x7')]);router[_0x8748('0x6')]('/:id/configurations',auth[_0x8748('0x8')](),controller['getConfigurations']);router[_0x8748('0x6')](_0x8748('0x9'),auth['isAuthenticated'](),controller[_0x8748('0xa')]);router[_0x8748('0xb')]('/',auth[_0x8748('0x8')](),controller['create']);router[_0x8748('0xb')](_0x8748('0xc'),auth[_0x8748('0x8')](),controller[_0x8748('0xd')]);router[_0x8748('0xe')]('/:id',auth[_0x8748('0x8')](),controller['update']);router['delete'](_0x8748('0xf'),auth[_0x8748('0x8')](),controller[_0x8748('0x10')]);module[_0x8748('0x11')]=router;
\ No newline at end of file
+var _0x3f1b=['index','/:id','isAuthenticated','show','get','/:id/configurations','/:id/fields','getFields','post','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x556bca,_0x573fb9){var _0x16c8fd=function(_0x469625){while(--_0x469625){_0x556bca['push'](_0x556bca['shift']());}};_0x16c8fd(++_0x573fb9);}(_0x3f1b,0xa7));var _0xb3f1=function(_0x394eaf,_0x5aa3af){_0x394eaf=_0x394eaf-0x0;var _0x459088=_0x3f1b[_0x394eaf];return _0x459088;};'use strict';var multer=require(_0xb3f1('0x0'));var util=require(_0xb3f1('0x1'));var path=require('path');var timeout=require(_0xb3f1('0x2'));var express=require(_0xb3f1('0x3'));var router=express[_0xb3f1('0x4')]();var fs_extra=require(_0xb3f1('0x5'));var auth=require(_0xb3f1('0x6'));var interaction=require(_0xb3f1('0x7'));var config=require(_0xb3f1('0x8'));var controller=require('./intZohoAccount.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xb3f1('0x9')]);router['get'](_0xb3f1('0xa'),auth[_0xb3f1('0xb')](),controller[_0xb3f1('0xc')]);router[_0xb3f1('0xd')](_0xb3f1('0xe'),auth[_0xb3f1('0xb')](),controller['getConfigurations']);router[_0xb3f1('0xd')](_0xb3f1('0xf'),auth[_0xb3f1('0xb')](),controller[_0xb3f1('0x10')]);router[_0xb3f1('0x11')]('/',auth[_0xb3f1('0xb')](),controller['create']);router[_0xb3f1('0x11')](_0xb3f1('0xe'),auth[_0xb3f1('0xb')](),controller['addConfiguration']);router[_0xb3f1('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xb3f1('0x13')]);router[_0xb3f1('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xb3f1('0x15')]);module['exports']=router;
\ No newline at end of file
index 8169fd1..539b599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['sequelize','exports','STRING'];(function(_0x5cc922,_0x6d4ada){var _0x5f1c7e=function(_0x2a45ba){while(--_0x2a45ba){_0x5cc922['push'](_0x5cc922['shift']());}};_0x5f1c7e(++_0x6d4ada);}(_0x702d,0x147));var _0xd702=function(_0x5ce6f5,_0x7c3c55){_0x5ce6f5=_0x5ce6f5-0x0;var _0x36dcf3=_0x702d[_0x5ce6f5];return _0x36dcf3;};'use strict';var Sequelize=require(_0xd702('0x0'));module[_0xd702('0x1')]={'name':{'type':Sequelize[_0xd702('0x2')]},'description':{'type':Sequelize[_0xd702('0x2')]},'host':{'type':Sequelize[_0xd702('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xd702('0x2')]},'clientSecret':{'type':Sequelize[_0xd702('0x2')]},'serverUrl':{'type':Sequelize[_0xd702('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xd702('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x41bb=['exports','STRING','sequelize'];(function(_0x2baf40,_0x5ebef2){var _0x2bb2cb=function(_0x1a3fc1){while(--_0x1a3fc1){_0x2baf40['push'](_0x2baf40['shift']());}};_0x2bb2cb(++_0x5ebef2);}(_0x41bb,0xc5));var _0xb41b=function(_0x27975d,_0x2c718d){_0x27975d=_0x27975d-0x0;var _0x5057c0=_0x41bb[_0x27975d];return _0x5057c0;};'use strict';var Sequelize=require(_0xb41b('0x0'));module[_0xb41b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb41b('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xb41b('0x2')]},'clientId':{'type':Sequelize[_0xb41b('0x2')]},'clientSecret':{'type':Sequelize[_0xb41b('0x2')]},'serverUrl':{'type':Sequelize[_0xb41b('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0xb41b('0x2')]}};
\ No newline at end of file
index 8cef90b..7afcdd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639a=['jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','offset','reject','save','update','destroy','then','end','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZohoAccount','count','includeAll','include','findAll','show','params','catch','create','body','find','getConfigurations','findOne','ZohoConfiguration','Subjects','getSubjects','channel','getDescriptions','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','serverUrl','code','host','zoho.eu','com','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','data_type','picklist','pick_list_values','statusCode','getFields','test','Wrong\x20credentials','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x4e7a39,_0x1964ec){var _0x2f7c12=function(_0x3e34a2){while(--_0x3e34a2){_0x4e7a39['push'](_0x4e7a39['shift']());}};_0x2f7c12(++_0x1964ec);}(_0x639a,0x73));var _0xa639=function(_0x1d4d88,_0x48760a){_0x1d4d88=_0x1d4d88-0x0;var _0x1b0671=_0x639a[_0x1d4d88];return _0x1b0671;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa639('0x0'));var zipdir=require(_0xa639('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa639('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xa639('0x3'));var util=require(_0xa639('0x4'));var path=require(_0xa639('0x5'));var sox=require(_0xa639('0x6'));var csv=require(_0xa639('0x7'));var ejs=require(_0xa639('0x8'));var fs=require('fs');var fs_extra=require(_0xa639('0x9'));var _=require(_0xa639('0xa'));var squel=require(_0xa639('0xb'));var crypto=require(_0xa639('0xc'));var jsforce=require(_0xa639('0xd'));var deskjs=require(_0xa639('0xe'));var toCsv=require(_0xa639('0x7'));var querystring=require(_0xa639('0xf'));var Papa=require('papaparse');var Redis=require(_0xa639('0x10'));var authService=require(_0xa639('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa639('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa639('0x13'))(_0xa639('0x14'));var utils=require(_0xa639('0x15'));var config=require(_0xa639('0x16'));var licenseUtil=require(_0xa639('0x17'));var db=require(_0xa639('0x18'))['db'];var integrations=require(_0xa639('0x19'));function respondWithStatusCode(_0x5028c6,_0x5118c5){_0x5118c5=_0x5118c5||0xcc;return function(_0x42707e){if(_0x42707e){return _0x5028c6[_0xa639('0x1a')](_0x5118c5);}return _0x5028c6[_0xa639('0x1b')](_0x5118c5)['end']();};}function respondWithResult(_0xe7beb8,_0x51f622){_0x51f622=_0x51f622||0xc8;return function(_0x34ef85){if(_0x34ef85){return _0xe7beb8[_0xa639('0x1b')](_0x51f622)[_0xa639('0x1c')](_0x34ef85);}};}function respondWithFilteredResult(_0x3d6804,_0x1c9c35){return function(_0x2031e5){if(_0x2031e5){var _0xe2f357=typeof _0x1c9c35['offset']===_0xa639('0x1d')&&typeof _0x1c9c35[_0xa639('0x1e')]===_0xa639('0x1d');var _0x3d577e=_0x2031e5['count'];var _0xe6947c=_0xe2f357?0x0:_0x1c9c35[_0xa639('0x1f')];var _0x1cdd59=_0xe2f357?_0x2031e5['count']:_0x1c9c35['offset']+_0x1c9c35[_0xa639('0x1e')];var _0x537025;if(_0x1cdd59>=_0x3d577e){_0x1cdd59=_0x3d577e;_0x537025=0xc8;}else{_0x537025=0xce;}_0x3d6804[_0xa639('0x1b')](_0x537025);return _0x3d6804['set']('Content-Range',_0xe6947c+'-'+_0x1cdd59+'/'+_0x3d577e)[_0xa639('0x1c')](_0x2031e5);}return null;};}function patchUpdates(_0x1f0bfc){return function(_0x5de2eb){try{jsonpatch['apply'](_0x5de2eb,_0x1f0bfc,!![]);}catch(_0x160bee){return BPromise[_0xa639('0x20')](_0x160bee);}return _0x5de2eb[_0xa639('0x21')]();};}function saveUpdates(_0x5acd68,_0x314318){return function(_0x519ea4){if(_0x519ea4){return _0x519ea4[_0xa639('0x22')](_0x5acd68)['then'](function(_0x48dd63){return _0x48dd63;});}return null;};}function removeEntity(_0x4b7462,_0x8bde91){return function(_0x58f7fe){if(_0x58f7fe){return _0x58f7fe[_0xa639('0x23')]()[_0xa639('0x24')](function(){_0x4b7462[_0xa639('0x1b')](0xcc)[_0xa639('0x25')]();});}};}function handleEntityNotFound(_0x211fdb,_0x571536){return function(_0x231131){if(!_0x231131){_0x211fdb[_0xa639('0x1a')](0x194);}return _0x231131;};}function handleError(_0x5bb284,_0x13500e){_0x13500e=_0x13500e||0x1f4;return function(_0x5e84cc){logger[_0xa639('0x26')](_0x5e84cc[_0xa639('0x27')]);if(_0x5e84cc[_0xa639('0x28')]){delete _0x5e84cc[_0xa639('0x28')];}_0x5bb284[_0xa639('0x1b')](_0x13500e)['send'](_0x5e84cc);};}exports[_0xa639('0x29')]=function(_0x276390,_0x29e515){var _0x41e6c1={},_0x5c473e={},_0x41dc70={'count':0x0,'rows':[]};var _0x5ae2f2=_[_0xa639('0x2a')](db['ZohoAccount'][_0xa639('0x2b')],function(_0x581af4){return{'name':_0x581af4[_0xa639('0x2c')],'type':_0x581af4[_0xa639('0x2d')]['key']};});_0x5c473e[_0xa639('0x2e')]=_[_0xa639('0x2a')](_0x5ae2f2,'name');_0x5c473e[_0xa639('0x2f')]=_[_0xa639('0x30')](_0x276390[_0xa639('0x2f')]);_0x5c473e[_0xa639('0x31')]=_[_0xa639('0x32')](_0x5c473e[_0xa639('0x2e')],_0x5c473e[_0xa639('0x2f')]);_0x41e6c1[_0xa639('0x33')]=_[_0xa639('0x32')](_0x5c473e[_0xa639('0x2e')],qs[_0xa639('0x34')](_0x276390[_0xa639('0x2f')][_0xa639('0x34')]));_0x41e6c1[_0xa639('0x33')]=_0x41e6c1['attributes'][_0xa639('0x35')]?_0x41e6c1['attributes']:_0x5c473e[_0xa639('0x2e')];if(!_0x276390[_0xa639('0x2f')][_0xa639('0x36')](_0xa639('0x37'))){_0x41e6c1[_0xa639('0x1e')]=qs[_0xa639('0x1e')](_0x276390['query'][_0xa639('0x1e')]);_0x41e6c1[_0xa639('0x1f')]=qs[_0xa639('0x1f')](_0x276390['query'][_0xa639('0x1f')]);}_0x41e6c1[_0xa639('0x38')]=qs[_0xa639('0x39')](_0x276390[_0xa639('0x2f')][_0xa639('0x39')]);_0x41e6c1[_0xa639('0x3a')]=qs['filters'](_[_0xa639('0x3b')](_0x276390[_0xa639('0x2f')],_0x5c473e['filters']),_0x5ae2f2);if(_0x276390[_0xa639('0x2f')]['filter']){_0x41e6c1[_0xa639('0x3a')]=_[_0xa639('0x3c')](_0x41e6c1[_0xa639('0x3a')],{'$or':_[_0xa639('0x2a')](_0x5ae2f2,function(_0x333e4a){if(_0x333e4a['type']!==_0xa639('0x3d')){var _0x2ac154={};_0x2ac154[_0x333e4a[_0xa639('0x28')]]={'$like':'%'+_0x276390[_0xa639('0x2f')][_0xa639('0x3e')]+'%'};return _0x2ac154;}})});}_0x41e6c1=_['merge']({},_0x41e6c1,_0x276390[_0xa639('0x3f')]);var _0x3d2c6f={'where':_0x41e6c1[_0xa639('0x3a')]};return db[_0xa639('0x40')][_0xa639('0x41')](_0x3d2c6f)['then'](function(_0x3e6de3){_0x41dc70[_0xa639('0x41')]=_0x3e6de3;if(_0x276390['query'][_0xa639('0x42')]){_0x41e6c1[_0xa639('0x43')]=[{'all':!![]}];}return db[_0xa639('0x40')][_0xa639('0x44')](_0x41e6c1);})[_0xa639('0x24')](function(_0x420769){_0x41dc70['rows']=_0x420769;return _0x41dc70;})[_0xa639('0x24')](respondWithFilteredResult(_0x29e515,_0x41e6c1))['catch'](handleError(_0x29e515,null));};exports[_0xa639('0x45')]=function(_0x29a976,_0x10d79e){var _0x1afed9={'raw':![],'where':{'id':_0x29a976[_0xa639('0x46')]['id']}},_0x3a2717={};_0x3a2717[_0xa639('0x2e')]=_['keys'](db[_0xa639('0x40')][_0xa639('0x2b')]);_0x3a2717[_0xa639('0x2f')]=_['keys'](_0x29a976[_0xa639('0x2f')]);_0x3a2717[_0xa639('0x31')]=_[_0xa639('0x32')](_0x3a2717[_0xa639('0x2e')],_0x3a2717[_0xa639('0x2f')]);_0x1afed9[_0xa639('0x33')]=_[_0xa639('0x32')](_0x3a2717['model'],qs[_0xa639('0x34')](_0x29a976[_0xa639('0x2f')][_0xa639('0x34')]));_0x1afed9['attributes']=_0x1afed9['attributes'][_0xa639('0x35')]?_0x1afed9['attributes']:_0x3a2717[_0xa639('0x2e')];if(_0x29a976[_0xa639('0x2f')][_0xa639('0x42')]){_0x1afed9[_0xa639('0x43')]=[{'all':!![]}];}_0x1afed9=_[_0xa639('0x3c')]({},_0x1afed9,_0x29a976[_0xa639('0x3f')]);return db['ZohoAccount']['find'](_0x1afed9)[_0xa639('0x24')](handleEntityNotFound(_0x10d79e,null))['then'](respondWithResult(_0x10d79e,null))[_0xa639('0x47')](handleError(_0x10d79e,null));};exports[_0xa639('0x48')]=function(_0x42102c,_0x582eeb){return db['ZohoAccount']['create'](_0x42102c[_0xa639('0x49')],{})[_0xa639('0x24')](respondWithResult(_0x582eeb,0xc9))['catch'](handleError(_0x582eeb,null));};exports[_0xa639('0x22')]=function(_0x5696ec,_0x2479a9){if(_0x5696ec[_0xa639('0x49')]['id']){delete _0x5696ec[_0xa639('0x49')]['id'];}return db['ZohoAccount'][_0xa639('0x4a')]({'where':{'id':_0x5696ec[_0xa639('0x46')]['id']}})[_0xa639('0x24')](handleEntityNotFound(_0x2479a9,null))[_0xa639('0x24')](saveUpdates(_0x5696ec[_0xa639('0x49')],null))[_0xa639('0x24')](respondWithResult(_0x2479a9,null))[_0xa639('0x47')](handleError(_0x2479a9,null));};exports[_0xa639('0x23')]=function(_0x730638,_0x361ef2){return db[_0xa639('0x40')]['find']({'where':{'id':_0x730638[_0xa639('0x46')]['id']}})[_0xa639('0x24')](handleEntityNotFound(_0x361ef2,null))[_0xa639('0x24')](removeEntity(_0x361ef2,null))['catch'](handleError(_0x361ef2,null));};exports[_0xa639('0x4b')]=function(_0x2b9dac,_0x3cab9c,_0x3f4669){var _0x212d81={};var _0xd4ac3={};var _0x3e6213;var _0x4bdf8e;return db[_0xa639('0x40')][_0xa639('0x4c')]({'where':{'id':_0x2b9dac[_0xa639('0x46')]['id']}})[_0xa639('0x24')](handleEntityNotFound(_0x3cab9c,null))[_0xa639('0x24')](function(_0x3d7edc){if(_0x3d7edc){_0x3e6213=_0x3d7edc;_0xd4ac3[_0xa639('0x2e')]=_[_0xa639('0x30')](db[_0xa639('0x4d')][_0xa639('0x2b')]);_0xd4ac3[_0xa639('0x2f')]=_['keys'](_0x2b9dac[_0xa639('0x2f')]);_0xd4ac3[_0xa639('0x31')]=_['intersection'](_0xd4ac3[_0xa639('0x2e')],_0xd4ac3[_0xa639('0x2f')]);_0x212d81[_0xa639('0x33')]=_[_0xa639('0x32')](_0xd4ac3[_0xa639('0x2e')],qs[_0xa639('0x34')](_0x2b9dac[_0xa639('0x2f')][_0xa639('0x34')]));_0x212d81[_0xa639('0x33')]=_0x212d81['attributes'][_0xa639('0x35')]?_0x212d81[_0xa639('0x33')]:_0xd4ac3['model'];_0x212d81[_0xa639('0x38')]=qs[_0xa639('0x39')](_0x2b9dac[_0xa639('0x2f')][_0xa639('0x39')]);_0x212d81[_0xa639('0x3a')]=qs[_0xa639('0x31')](_[_0xa639('0x3b')](_0x2b9dac[_0xa639('0x2f')],_0xd4ac3['filters']));if(_0x2b9dac[_0xa639('0x2f')]['filter']){_0x212d81[_0xa639('0x3a')]=_['merge'](_0x212d81['where'],{'$or':_[_0xa639('0x2a')](_0x212d81['attributes'],function(_0x4366e8){var _0x5e14c9={};_0x5e14c9[_0x4366e8]={'$like':'%'+_0x2b9dac[_0xa639('0x2f')][_0xa639('0x3e')]+'%'};return _0x5e14c9;})});}_0x212d81=_[_0xa639('0x3c')]({},_0x212d81,_0x2b9dac[_0xa639('0x3f')]);return _0x3e6213[_0xa639('0x4b')](_0x212d81);}})['then'](function(_0x1f3ee9){if(_0x1f3ee9){_0x4bdf8e=_0x1f3ee9[_0xa639('0x35')];if(!_0x2b9dac[_0xa639('0x2f')][_0xa639('0x36')](_0xa639('0x37'))){_0x212d81['limit']=qs[_0xa639('0x1e')](_0x2b9dac[_0xa639('0x2f')][_0xa639('0x1e')]);_0x212d81[_0xa639('0x1f')]=qs[_0xa639('0x1f')](_0x2b9dac['query'][_0xa639('0x1f')]);}return _0x3e6213[_0xa639('0x4b')](_0x212d81);}})[_0xa639('0x24')](function(_0x593c5e){if(_0x593c5e){return _0x593c5e?{'count':_0x4bdf8e,'rows':_0x593c5e}:null;}})['then'](respondWithResult(_0x3cab9c,null))[_0xa639('0x47')](handleError(_0x3cab9c,null));};exports['addConfiguration']=function(_0x23feec,_0x3b7565,_0x96de78){if(_0x23feec[_0xa639('0x49')]['id']){delete _0x23feec[_0xa639('0x49')]['id'];}return db['ZohoAccount'][_0xa639('0x4c')]({'where':{'id':_0x23feec[_0xa639('0x46')]['id']}})[_0xa639('0x24')](handleEntityNotFound(_0x3b7565,null))[_0xa639('0x24')](function(_0x51bf7d){if(_0x51bf7d){_0x23feec[_0xa639('0x49')]['AccountId']=_0x51bf7d['id'];_0x23feec[_0xa639('0x49')][_0xa639('0x4e')]=integrations[_0xa639('0x4f')](_0x23feec[_0xa639('0x49')][_0xa639('0x50')],_0x23feec[_0xa639('0x49')][_0xa639('0x2d')]);_0x23feec['body']['Descriptions']=integrations[_0xa639('0x51')](_0x23feec['body'][_0xa639('0x50')],_0x23feec[_0xa639('0x49')][_0xa639('0x2d')]);return db[_0xa639('0x4d')][_0xa639('0x48')](_0x23feec['body'],{'include':[{'model':db[_0xa639('0x52')],'as':_0xa639('0x4e')},{'model':db[_0xa639('0x52')],'as':_0xa639('0x53')}]});}return null;})['then'](respondWithResult(_0x3b7565,null))[_0xa639('0x47')](handleError(_0x3b7565,null));};function getAccessToken(_0x3903c3){return new Promise(function(_0x3ebb32,_0x4726f5){var _0x463e50;switch(_0x3903c3[_0xa639('0x54')]){case'US':_0x463e50=_0xa639('0x55');break;case'AU':_0x463e50=_0xa639('0x56');break;case'EU':_0x463e50='https://accounts.zoho.eu';break;case'IN':_0x463e50='https://accounts.zoho.in';break;case'CN':_0x463e50=_0xa639('0x57');break;default:_0x463e50='https://accounts.zoho.eu';break;}var _0xc180fd={'method':_0xa639('0x58'),'uri':_0x463e50+_0xa639('0x59'),'qs':{'refresh_token':_0x3903c3[_0xa639('0x5a')],'client_id':_0x3903c3[_0xa639('0x5b')],'client_secret':_0x3903c3[_0xa639('0x5c')],'grant_type':_0xa639('0x5d')},'json':!![]};return rp(_0xc180fd)[_0xa639('0x24')](function(_0x4db7b2){if(_0x4db7b2[_0xa639('0x5e')]){_0x3ebb32(_0x4db7b2[_0xa639('0x5e')]);}else{_0x4726f5('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xa639('0x47')](function(_0x797bff){_0x4726f5(_0x797bff);});});}exports['getFields']=function(_0x32d3f8,_0x17c8f6,_0x504e8d){var _0x341fad,_0x4c1389,_0x2e83eb,_0xb175e8,_0x708f89;return db['ZohoAccount'][_0xa639('0x4c')]({'where':{'id':_0x32d3f8[_0xa639('0x46')]['id']},'attributes':['id','host',_0xa639('0x54'),'clientId',_0xa639('0x5c'),_0xa639('0x5f'),_0xa639('0x60'),_0xa639('0x5a')]})[_0xa639('0x24')](handleEntityNotFound(_0x17c8f6,null))[_0xa639('0x24')](function(_0x4f750a){_0x708f89=_0x4f750a;_0x341fad=_0x708f89[_0xa639('0x61')];_0x4c1389=_0x341fad===_0xa639('0x62')?'eu':_0xa639('0x63');_0x2e83eb=_0x708f89[_0xa639('0x5f')];var _0x2b9bdb=_0x2e83eb['slice'](-0x1);if(_0x2b9bdb==='/'||_0x2b9bdb==='\x5c'||_0x2b9bdb===':'){_0x2e83eb=_0x2e83eb['substring'](0x0,_0x2e83eb['lastIndexOf'](_0x2b9bdb));}if(!_0x708f89[_0xa639('0x5a')]){throw new Error(_0xa639('0x64'));}return getAccessToken(_0x708f89);})['then'](function(_0x1b4d6e){if(_0x1b4d6e){return rp({'method':_0xa639('0x65'),'uri':util[_0xa639('0x66')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x4c1389),'qs':{'module':_0xa639('0x67')},'headers':{'Authorization':_0xa639('0x68')+_0x1b4d6e},'json':!![]});}})[_0xa639('0x24')](function(_0x3748ab){if(_0x3748ab){if(_0x3748ab[_0xa639('0x69')]&&_0x3748ab[_0xa639('0x69')][_0xa639('0x26')]){throw new Error(_0x3748ab[_0xa639('0x69')]['error'][_0xa639('0x6a')]);}var _0x479d0f=[];var _0x21700b=[];var _0x1486d0=[_0xa639('0x6b'),_0xa639('0x6c'),_0xa639('0x6d'),_0xa639('0x6e'),_0xa639('0x6f'),_0xa639('0x70'),_0xa639('0x71'),_0xa639('0x72')];_0x21700b=_[_0xa639('0x73')](_0x3748ab[_0xa639('0x34')],function(_0xfec5ae){return _0x1486d0[_0xa639('0x74')](_0xfec5ae[_0xa639('0x75')]);});for(var _0x34b7da=0x0;_0x34b7da<_0x21700b['length'];_0x34b7da++){if(_0x21700b[_0x34b7da][_0xa639('0x76')]===![]){_0x479d0f[_0xa639('0x77')]({'id':_0x21700b[_0x34b7da]['id'],'name':_0x21700b[_0x34b7da][_0xa639('0x78')],'custom':_0x21700b[_0x34b7da]['custom_field'],'options':_0x21700b[_0x34b7da][_0xa639('0x79')]===_0xa639('0x7a')&&_0x21700b[_0x34b7da][_0xa639('0x7b')][_0xa639('0x35')]>-0x1?_[_0xa639('0x2a')](_0x21700b[_0x34b7da][_0xa639('0x7b')],function(_0x183175){return{'name':_0x183175,'value':_0x183175};}):[]});}}return{'count':_0x479d0f[_0xa639('0x35')],'rows':_0x479d0f};}else{return{'count':0x0,'rows':[]};}})[_0xa639('0x24')](respondWithResult(_0x17c8f6,null))[_0xa639('0x47')](function(_0x578774){var _0x5c2e11=_0x32d3f8[_0xa639('0x2f')]['test']?0x1f4:_0x578774[_0xa639('0x7c')]||0x1f4;logger[_0xa639('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0xa639('0x7d'),_0x5c2e11,JSON['stringify'](_0x578774));delete _0x578774['name'];if(_0x5c2e11===0x191){_0x5c2e11=0x190;}_0x17c8f6[_0xa639('0x1b')](_0x5c2e11)['send'](_0x32d3f8[_0xa639('0x2f')][_0xa639('0x7e')]?{'message':_0xa639('0x7f'),'statusCode':_0x578774[_0xa639('0x7c')]}:_0x578774);});};
\ No newline at end of file
+var _0x17e3=['rows','catch','options','find','create','body','params','findOne','getConfigurations','addConfiguration','AccountId','Subjects','channel','ZohoConfiguration','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','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','Zoho-oauthtoken\x20','response','message','Subject','Description','Call_Duration','Call_Result','Call_Type','includes','api_name','push','display_label','custom_field','data_type','picklist','pick_list_values','stringify','send','test','Wrong\x20credentials','statusCode','eml-format','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/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','set','json','apply','reject','save','update','then','destroy','error','stack','name','index','ZohoAccount','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','count','includeAll','include','findAll'];(function(_0x14f8d2,_0x5e3b67){var _0x3b0a0e=function(_0x3bbdbc){while(--_0x3bbdbc){_0x14f8d2['push'](_0x14f8d2['shift']());}};_0x3b0a0e(++_0x5e3b67);}(_0x17e3,0xba));var _0x317e=function(_0x5724f0,_0x4cf002){_0x5724f0=_0x5724f0-0x0;var _0x4c56cc=_0x17e3[_0x5724f0];return _0x4c56cc;};'use strict';var emlformat=require(_0x317e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x317e('0x1'));var rp=require(_0x317e('0x2'));var moment=require(_0x317e('0x3'));var BPromise=require(_0x317e('0x4'));var Mustache=require(_0x317e('0x5'));var util=require(_0x317e('0x6'));var path=require(_0x317e('0x7'));var sox=require(_0x317e('0x8'));var csv=require(_0x317e('0x9'));var ejs=require(_0x317e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x317e('0xb'));var squel=require(_0x317e('0xc'));var crypto=require(_0x317e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x317e('0xe'));var toCsv=require(_0x317e('0x9'));var querystring=require(_0x317e('0xf'));var Papa=require(_0x317e('0x10'));var Redis=require(_0x317e('0x11'));var authService=require(_0x317e('0x12'));var qs=require(_0x317e('0x13'));var as=require(_0x317e('0x14'));var hardwareService=require(_0x317e('0x15'));var logger=require(_0x317e('0x16'))(_0x317e('0x17'));var utils=require(_0x317e('0x18'));var config=require(_0x317e('0x19'));var licenseUtil=require(_0x317e('0x1a'));var db=require(_0x317e('0x1b'))['db'];var integrations=require(_0x317e('0x1c'));function respondWithStatusCode(_0x563235,_0x579f76){_0x579f76=_0x579f76||0xcc;return function(_0x40d600){if(_0x40d600){return _0x563235[_0x317e('0x1d')](_0x579f76);}return _0x563235[_0x317e('0x1e')](_0x579f76)[_0x317e('0x1f')]();};}function respondWithResult(_0x1989d3,_0x5f1399){_0x5f1399=_0x5f1399||0xc8;return function(_0x3ae4f9){if(_0x3ae4f9){return _0x1989d3[_0x317e('0x1e')](_0x5f1399)['json'](_0x3ae4f9);}};}function respondWithFilteredResult(_0x21709a,_0x4d304f){return function(_0x2d6e42){if(_0x2d6e42){var _0x2c0424=typeof _0x4d304f[_0x317e('0x20')]===_0x317e('0x21')&&typeof _0x4d304f[_0x317e('0x22')]===_0x317e('0x21');var _0x3cddb9=_0x2d6e42['count'];var _0x330bb3=_0x2c0424?0x0:_0x4d304f['offset'];var _0x529698=_0x2c0424?_0x2d6e42['count']:_0x4d304f[_0x317e('0x20')]+_0x4d304f[_0x317e('0x22')];var _0x3e9fb9;if(_0x529698>=_0x3cddb9){_0x529698=_0x3cddb9;_0x3e9fb9=0xc8;}else{_0x3e9fb9=0xce;}_0x21709a['status'](_0x3e9fb9);return _0x21709a[_0x317e('0x23')]('Content-Range',_0x330bb3+'-'+_0x529698+'/'+_0x3cddb9)[_0x317e('0x24')](_0x2d6e42);}return null;};}function patchUpdates(_0x5465a1){return function(_0x2e7e34){try{jsonpatch[_0x317e('0x25')](_0x2e7e34,_0x5465a1,!![]);}catch(_0x58667b){return BPromise[_0x317e('0x26')](_0x58667b);}return _0x2e7e34[_0x317e('0x27')]();};}function saveUpdates(_0x238572,_0x5bf84b){return function(_0x2f20ab){if(_0x2f20ab){return _0x2f20ab[_0x317e('0x28')](_0x238572)[_0x317e('0x29')](function(_0x448c0b){return _0x448c0b;});}return null;};}function removeEntity(_0x3ae66f,_0x1a4333){return function(_0x1e80c8){if(_0x1e80c8){return _0x1e80c8[_0x317e('0x2a')]()[_0x317e('0x29')](function(){_0x3ae66f[_0x317e('0x1e')](0xcc)[_0x317e('0x1f')]();});}};}function handleEntityNotFound(_0xc1e0be,_0x19a6b9){return function(_0x4540bc){if(!_0x4540bc){_0xc1e0be[_0x317e('0x1d')](0x194);}return _0x4540bc;};}function handleError(_0x461972,_0x16896c){_0x16896c=_0x16896c||0x1f4;return function(_0x57baf6){logger[_0x317e('0x2b')](_0x57baf6[_0x317e('0x2c')]);if(_0x57baf6[_0x317e('0x2d')]){delete _0x57baf6[_0x317e('0x2d')];}_0x461972[_0x317e('0x1e')](_0x16896c)['send'](_0x57baf6);};}exports[_0x317e('0x2e')]=function(_0xf47238,_0x15b061){var _0x5a456e={},_0x2913d4={},_0x47ad0e={'count':0x0,'rows':[]};var _0x1b65fd=_['map'](db[_0x317e('0x2f')][_0x317e('0x30')],function(_0x336289){return{'name':_0x336289[_0x317e('0x31')],'type':_0x336289[_0x317e('0x32')]['key']};});_0x2913d4[_0x317e('0x33')]=_[_0x317e('0x34')](_0x1b65fd,'name');_0x2913d4[_0x317e('0x35')]=_[_0x317e('0x36')](_0xf47238[_0x317e('0x35')]);_0x2913d4['filters']=_[_0x317e('0x37')](_0x2913d4['model'],_0x2913d4[_0x317e('0x35')]);_0x5a456e[_0x317e('0x38')]=_[_0x317e('0x37')](_0x2913d4['model'],qs[_0x317e('0x39')](_0xf47238[_0x317e('0x35')][_0x317e('0x39')]));_0x5a456e[_0x317e('0x38')]=_0x5a456e['attributes'][_0x317e('0x3a')]?_0x5a456e['attributes']:_0x2913d4[_0x317e('0x33')];if(!_0xf47238[_0x317e('0x35')][_0x317e('0x3b')](_0x317e('0x3c'))){_0x5a456e[_0x317e('0x22')]=qs[_0x317e('0x22')](_0xf47238[_0x317e('0x35')][_0x317e('0x22')]);_0x5a456e[_0x317e('0x20')]=qs[_0x317e('0x20')](_0xf47238[_0x317e('0x35')]['offset']);}_0x5a456e[_0x317e('0x3d')]=qs[_0x317e('0x3e')](_0xf47238[_0x317e('0x35')][_0x317e('0x3e')]);_0x5a456e[_0x317e('0x3f')]=qs[_0x317e('0x40')](_[_0x317e('0x41')](_0xf47238['query'],_0x2913d4[_0x317e('0x40')]),_0x1b65fd);if(_0xf47238[_0x317e('0x35')][_0x317e('0x42')]){_0x5a456e['where']=_[_0x317e('0x43')](_0x5a456e[_0x317e('0x3f')],{'$or':_['map'](_0x1b65fd,function(_0x594f2b){if(_0x594f2b['type']!=='VIRTUAL'){var _0x13f5d1={};_0x13f5d1[_0x594f2b[_0x317e('0x2d')]]={'$like':'%'+_0xf47238[_0x317e('0x35')][_0x317e('0x42')]+'%'};return _0x13f5d1;}})});}_0x5a456e=_[_0x317e('0x43')]({},_0x5a456e,_0xf47238['options']);var _0x58d180={'where':_0x5a456e['where']};return db[_0x317e('0x2f')]['count'](_0x58d180)['then'](function(_0x596a79){_0x47ad0e[_0x317e('0x44')]=_0x596a79;if(_0xf47238[_0x317e('0x35')][_0x317e('0x45')]){_0x5a456e[_0x317e('0x46')]=[{'all':!![]}];}return db[_0x317e('0x2f')][_0x317e('0x47')](_0x5a456e);})[_0x317e('0x29')](function(_0x287e1e){_0x47ad0e[_0x317e('0x48')]=_0x287e1e;return _0x47ad0e;})[_0x317e('0x29')](respondWithFilteredResult(_0x15b061,_0x5a456e))[_0x317e('0x49')](handleError(_0x15b061,null));};exports['show']=function(_0x31544c,_0x29003c){var _0x4098f1={'raw':![],'where':{'id':_0x31544c['params']['id']}},_0x555a8b={};_0x555a8b['model']=_[_0x317e('0x36')](db['ZohoAccount']['rawAttributes']);_0x555a8b[_0x317e('0x35')]=_[_0x317e('0x36')](_0x31544c[_0x317e('0x35')]);_0x555a8b['filters']=_[_0x317e('0x37')](_0x555a8b[_0x317e('0x33')],_0x555a8b[_0x317e('0x35')]);_0x4098f1['attributes']=_[_0x317e('0x37')](_0x555a8b[_0x317e('0x33')],qs['fields'](_0x31544c[_0x317e('0x35')][_0x317e('0x39')]));_0x4098f1['attributes']=_0x4098f1[_0x317e('0x38')]['length']?_0x4098f1[_0x317e('0x38')]:_0x555a8b[_0x317e('0x33')];if(_0x31544c[_0x317e('0x35')]['includeAll']){_0x4098f1['include']=[{'all':!![]}];}_0x4098f1=_['merge']({},_0x4098f1,_0x31544c[_0x317e('0x4a')]);return db[_0x317e('0x2f')][_0x317e('0x4b')](_0x4098f1)[_0x317e('0x29')](handleEntityNotFound(_0x29003c,null))[_0x317e('0x29')](respondWithResult(_0x29003c,null))[_0x317e('0x49')](handleError(_0x29003c,null));};exports[_0x317e('0x4c')]=function(_0x380a6a,_0x546eb7){return db[_0x317e('0x2f')]['create'](_0x380a6a['body'],{})[_0x317e('0x29')](respondWithResult(_0x546eb7,0xc9))['catch'](handleError(_0x546eb7,null));};exports[_0x317e('0x28')]=function(_0x3b46a9,_0x56cf91){if(_0x3b46a9[_0x317e('0x4d')]['id']){delete _0x3b46a9['body']['id'];}return db[_0x317e('0x2f')][_0x317e('0x4b')]({'where':{'id':_0x3b46a9['params']['id']}})[_0x317e('0x29')](handleEntityNotFound(_0x56cf91,null))['then'](saveUpdates(_0x3b46a9[_0x317e('0x4d')],null))['then'](respondWithResult(_0x56cf91,null))[_0x317e('0x49')](handleError(_0x56cf91,null));};exports['destroy']=function(_0x1cebc6,_0x2aed3a){return db[_0x317e('0x2f')]['find']({'where':{'id':_0x1cebc6[_0x317e('0x4e')]['id']}})[_0x317e('0x29')](handleEntityNotFound(_0x2aed3a,null))[_0x317e('0x29')](removeEntity(_0x2aed3a,null))[_0x317e('0x49')](handleError(_0x2aed3a,null));};exports['getConfigurations']=function(_0x431be7,_0x1a6b91,_0x1812a3){var _0x180176={};var _0x1940c6={};var _0x427bdd;var _0x317f98;return db[_0x317e('0x2f')][_0x317e('0x4f')]({'where':{'id':_0x431be7[_0x317e('0x4e')]['id']}})[_0x317e('0x29')](handleEntityNotFound(_0x1a6b91,null))[_0x317e('0x29')](function(_0x143cbe){if(_0x143cbe){_0x427bdd=_0x143cbe;_0x1940c6[_0x317e('0x33')]=_[_0x317e('0x36')](db['ZohoConfiguration'][_0x317e('0x30')]);_0x1940c6[_0x317e('0x35')]=_[_0x317e('0x36')](_0x431be7['query']);_0x1940c6[_0x317e('0x40')]=_[_0x317e('0x37')](_0x1940c6['model'],_0x1940c6[_0x317e('0x35')]);_0x180176[_0x317e('0x38')]=_[_0x317e('0x37')](_0x1940c6[_0x317e('0x33')],qs[_0x317e('0x39')](_0x431be7['query'][_0x317e('0x39')]));_0x180176[_0x317e('0x38')]=_0x180176[_0x317e('0x38')][_0x317e('0x3a')]?_0x180176[_0x317e('0x38')]:_0x1940c6[_0x317e('0x33')];_0x180176['order']=qs[_0x317e('0x3e')](_0x431be7[_0x317e('0x35')]['sort']);_0x180176[_0x317e('0x3f')]=qs[_0x317e('0x40')](_[_0x317e('0x41')](_0x431be7[_0x317e('0x35')],_0x1940c6[_0x317e('0x40')]));if(_0x431be7[_0x317e('0x35')][_0x317e('0x42')]){_0x180176[_0x317e('0x3f')]=_['merge'](_0x180176[_0x317e('0x3f')],{'$or':_['map'](_0x180176[_0x317e('0x38')],function(_0x461b0b){var _0x534d72={};_0x534d72[_0x461b0b]={'$like':'%'+_0x431be7[_0x317e('0x35')]['filter']+'%'};return _0x534d72;})});}_0x180176=_['merge']({},_0x180176,_0x431be7[_0x317e('0x4a')]);return _0x427bdd[_0x317e('0x50')](_0x180176);}})[_0x317e('0x29')](function(_0x5cb892){if(_0x5cb892){_0x317f98=_0x5cb892[_0x317e('0x3a')];if(!_0x431be7['query'][_0x317e('0x3b')](_0x317e('0x3c'))){_0x180176['limit']=qs['limit'](_0x431be7[_0x317e('0x35')][_0x317e('0x22')]);_0x180176[_0x317e('0x20')]=qs[_0x317e('0x20')](_0x431be7['query'][_0x317e('0x20')]);}return _0x427bdd['getConfigurations'](_0x180176);}})[_0x317e('0x29')](function(_0x3df8ec){if(_0x3df8ec){return _0x3df8ec?{'count':_0x317f98,'rows':_0x3df8ec}:null;}})[_0x317e('0x29')](respondWithResult(_0x1a6b91,null))[_0x317e('0x49')](handleError(_0x1a6b91,null));};exports[_0x317e('0x51')]=function(_0xa4de56,_0x3bab49,_0x22270a){if(_0xa4de56[_0x317e('0x4d')]['id']){delete _0xa4de56[_0x317e('0x4d')]['id'];}return db[_0x317e('0x2f')][_0x317e('0x4f')]({'where':{'id':_0xa4de56['params']['id']}})[_0x317e('0x29')](handleEntityNotFound(_0x3bab49,null))[_0x317e('0x29')](function(_0xd66b7b){if(_0xd66b7b){_0xa4de56[_0x317e('0x4d')][_0x317e('0x52')]=_0xd66b7b['id'];_0xa4de56[_0x317e('0x4d')][_0x317e('0x53')]=integrations['getSubjects'](_0xa4de56[_0x317e('0x4d')][_0x317e('0x54')],_0xa4de56['body'][_0x317e('0x32')]);_0xa4de56[_0x317e('0x4d')]['Descriptions']=integrations['getDescriptions'](_0xa4de56['body']['channel'],_0xa4de56[_0x317e('0x4d')][_0x317e('0x32')]);return db[_0x317e('0x55')][_0x317e('0x4c')](_0xa4de56[_0x317e('0x4d')],{'include':[{'model':db[_0x317e('0x56')],'as':_0x317e('0x53')},{'model':db['ZohoField'],'as':_0x317e('0x57')}]});}return null;})[_0x317e('0x29')](respondWithResult(_0x3bab49,null))['catch'](handleError(_0x3bab49,null));};function getAccessToken(_0x7e0d02){return new Promise(function(_0x3588e9,_0x27b7c9){var _0x55eb85;switch(_0x7e0d02[_0x317e('0x58')]){case'US':_0x55eb85=_0x317e('0x59');break;case'AU':_0x55eb85=_0x317e('0x5a');break;case'EU':_0x55eb85=_0x317e('0x5b');break;case'IN':_0x55eb85='https://accounts.zoho.in';break;case'CN':_0x55eb85=_0x317e('0x5c');break;default:_0x55eb85='https://accounts.zoho.eu';break;}var _0x9494a2={'method':_0x317e('0x5d'),'uri':_0x55eb85+_0x317e('0x5e'),'qs':{'refresh_token':_0x7e0d02[_0x317e('0x5f')],'client_id':_0x7e0d02[_0x317e('0x60')],'client_secret':_0x7e0d02[_0x317e('0x61')],'grant_type':_0x317e('0x62')},'json':!![]};return rp(_0x9494a2)['then'](function(_0x4b1c9b){if(_0x4b1c9b['access_token']){_0x3588e9(_0x4b1c9b[_0x317e('0x63')]);}else{_0x27b7c9(_0x317e('0x64'));}})['catch'](function(_0x5f50bf){_0x27b7c9(_0x5f50bf);});});}exports[_0x317e('0x65')]=function(_0x286672,_0x5c5dd4,_0x36e7fe){var _0x15b229,_0x555fe1,_0x275e77,_0x106093,_0x2dc9e0;return db['ZohoAccount'][_0x317e('0x4f')]({'where':{'id':_0x286672[_0x317e('0x4e')]['id']},'attributes':['id',_0x317e('0x66'),'zone',_0x317e('0x60'),_0x317e('0x61'),_0x317e('0x67'),'code',_0x317e('0x5f')]})[_0x317e('0x29')](handleEntityNotFound(_0x5c5dd4,null))[_0x317e('0x29')](function(_0x3d1d87){_0x2dc9e0=_0x3d1d87;_0x15b229=_0x2dc9e0[_0x317e('0x66')];_0x555fe1=_0x15b229==='zoho.eu'?'eu':'com';_0x275e77=_0x2dc9e0[_0x317e('0x67')];var _0x243702=_0x275e77['slice'](-0x1);if(_0x243702==='/'||_0x243702==='\x5c'||_0x243702===':'){_0x275e77=_0x275e77[_0x317e('0x68')](0x0,_0x275e77[_0x317e('0x69')](_0x243702));}if(!_0x2dc9e0[_0x317e('0x5f')]){throw new Error(_0x317e('0x6a'));}return getAccessToken(_0x2dc9e0);})[_0x317e('0x29')](function(_0x334763){if(_0x334763){return rp({'method':_0x317e('0x6b'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0x555fe1),'qs':{'module':'Calls'},'headers':{'Authorization':_0x317e('0x6c')+_0x334763},'json':!![]});}})['then'](function(_0x146d39){if(_0x146d39){if(_0x146d39[_0x317e('0x6d')]&&_0x146d39[_0x317e('0x6d')][_0x317e('0x2b')]){throw new Error(_0x146d39[_0x317e('0x6d')][_0x317e('0x2b')][_0x317e('0x6e')]);}var _0xa85b20=[];var _0xbb3baa=[];var _0x499675=['Owner',_0x317e('0x6f'),_0x317e('0x70'),'WhoId',_0x317e('0x71'),_0x317e('0x72'),'Call_Start_Time',_0x317e('0x73')];_0xbb3baa=_['remove'](_0x146d39[_0x317e('0x39')],function(_0x5c1633){return _0x499675[_0x317e('0x74')](_0x5c1633[_0x317e('0x75')]);});for(var _0xb2895b=0x0;_0xb2895b<_0xbb3baa[_0x317e('0x3a')];_0xb2895b++){if(_0xbb3baa[_0xb2895b]['system_mandatory']===![]){_0xa85b20[_0x317e('0x76')]({'id':_0xbb3baa[_0xb2895b]['id'],'name':_0xbb3baa[_0xb2895b][_0x317e('0x77')],'custom':_0xbb3baa[_0xb2895b][_0x317e('0x78')],'options':_0xbb3baa[_0xb2895b][_0x317e('0x79')]===_0x317e('0x7a')&&_0xbb3baa[_0xb2895b][_0x317e('0x7b')][_0x317e('0x3a')]>-0x1?_['map'](_0xbb3baa[_0xb2895b][_0x317e('0x7b')],function(_0x27f887){return{'name':_0x27f887,'value':_0x27f887};}):[]});}}return{'count':_0xa85b20[_0x317e('0x3a')],'rows':_0xa85b20};}else{return{'count':0x0,'rows':[]};}})[_0x317e('0x29')](respondWithResult(_0x5c5dd4,null))[_0x317e('0x49')](function(_0x2f668a){var _0x1d67b0=_0x286672[_0x317e('0x35')]['test']?0x1f4:_0x2f668a['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x317e('0x65'),_0x1d67b0,JSON[_0x317e('0x7c')](_0x2f668a));delete _0x2f668a[_0x317e('0x2d')];if(_0x1d67b0===0x191){_0x1d67b0=0x190;}_0x5c5dd4[_0x317e('0x1e')](_0x1d67b0)[_0x317e('0x7d')](_0x286672[_0x317e('0x35')][_0x317e('0x7e')]?{'message':_0x317e('0x7f'),'statusCode':_0x2f668a[_0x317e('0x80')]}:_0x2f668a);});};
\ No newline at end of file
index 9577343..6a64a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf542=['https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','authorization_code','application/x-www-form-urlencoded','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','slice','/oauth/v2/token','lodash','util','../../config/logger','api','moment','path','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','ZohoAccount','int_zoho_accounts','changed','zone','clientId','clientSecret','code','host','serverUrl','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au'];(function(_0x3d17a1,_0x4b9a6a){var _0x21e3dd=function(_0x4311a3){while(--_0x4311a3){_0x3d17a1['push'](_0x3d17a1['shift']());}};_0x21e3dd(++_0x4b9a6a);}(_0xf542,0xb7));var _0x2f54=function(_0x4c77a6,_0x350b0b){_0x4c77a6=_0x4c77a6-0x0;var _0x4171e1=_0xf542[_0x4c77a6];return _0x4171e1;};'use strict';var _=require(_0x2f54('0x0'));var util=require(_0x2f54('0x1'));var logger=require(_0x2f54('0x2'))(_0x2f54('0x3'));var moment=require(_0x2f54('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f54('0x5'));var rimraf=require('rimraf');var config=require(_0x2f54('0x6'));var attributes=require(_0x2f54('0x7'));var integrations=require(_0x2f54('0x8'));module['exports']=function(_0x4419ed,_0x324d2c){return _0x4419ed['define'](_0x2f54('0x9'),attributes,{'tableName':_0x2f54('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x267f1d,_0xe93a88,_0x51cced){if(_0x267f1d[_0x2f54('0xb')](_0x2f54('0xc'))||_0x267f1d[_0x2f54('0xb')]('serverUrl')||_0x267f1d[_0x2f54('0xb')](_0x2f54('0xd'))||_0x267f1d[_0x2f54('0xb')](_0x2f54('0xe'))||_0x267f1d['changed'](_0x2f54('0xf'))||_0x267f1d[_0x2f54('0xb')](_0x2f54('0x10'))){var _0x31a22d,_0x172903;_0x31a22d=_0x267f1d[_0x2f54('0x11')];var _0xb1c6fd=_0x31a22d['slice'](-0x1);if(_0xb1c6fd==='/'||_0xb1c6fd==='\x5c'||_0xb1c6fd===':'){_0x31a22d=_0x31a22d[_0x2f54('0x12')](0x0,_0x31a22d[_0x2f54('0x13')](_0xb1c6fd));}switch(_0x267f1d[_0x2f54('0xc')]){case'US':_0x172903=_0x2f54('0x14');break;case'AU':_0x172903=_0x2f54('0x15');break;case'IN':_0x172903=_0x2f54('0x16');break;case'CN':_0x172903=_0x2f54('0x17');break;default:_0x172903=_0x2f54('0x18');break;}var _0x12a874={'method':_0x2f54('0x19'),'uri':_0x172903+'/oauth/v2/token','form':{'grant_type':_0x2f54('0x1a'),'client_id':_0x267f1d[_0x2f54('0xd')],'client_secret':_0x267f1d['clientSecret'],'redirect_uri':_0x267f1d['serverUrl'],'code':_0x267f1d['code']},'headers':{'Content-Type':_0x2f54('0x1b')}};return rp(_0x12a874)['then'](function(_0x569e10){var _0x71c696=JSON[_0x2f54('0x1c')](_0x569e10);if(_0x71c696[_0x2f54('0x1d')]){_0x267f1d[_0x2f54('0x1e')]=_0x71c696[_0x2f54('0x1d')];logger[_0x2f54('0x1f')](util[_0x2f54('0x20')](_0x2f54('0x21'),_0x267f1d['name'],_0x267f1d['id']));}else{logger['error'](util[_0x2f54('0x20')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x267f1d[_0x2f54('0x22')],_0x267f1d['id']),util[_0x2f54('0x23')](_0x71c696,{'showHidden':![],'depth':null}));}return _0x51cced(null,_0xe93a88);})[_0x2f54('0x24')](function(_0x5dc3aa){logger[_0x2f54('0x25')](util['format'](_0x2f54('0x26'),_0x267f1d[_0x2f54('0x22')],_0x267f1d['id']),util[_0x2f54('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x51cced(_0x5dc3aa);});}else{return _0x51cced(null,_0xe93a88);}},'beforeUpdate':function(_0x1482b3,_0x5a7459,_0x817474){if(_0x1482b3['changed']('zone')||_0x1482b3[_0x2f54('0xb')](_0x2f54('0x11'))||_0x1482b3[_0x2f54('0xb')](_0x2f54('0xd'))||_0x1482b3[_0x2f54('0xb')](_0x2f54('0xe'))||_0x1482b3[_0x2f54('0xb')](_0x2f54('0xf'))||_0x1482b3[_0x2f54('0xb')](_0x2f54('0x10'))){var _0x1b7197,_0x21a578;_0x1b7197=_0x1482b3[_0x2f54('0x11')];var _0x51cece=_0x1b7197[_0x2f54('0x27')](-0x1);if(_0x51cece==='/'||_0x51cece==='\x5c'||_0x51cece===':'){_0x1b7197=_0x1b7197[_0x2f54('0x12')](0x0,_0x1b7197[_0x2f54('0x13')](_0x51cece));}switch(_0x1482b3[_0x2f54('0xc')]){case'US':_0x21a578='https://accounts.zoho.com';break;case'AU':_0x21a578='https://accounts.zoho.com.au';break;case'IN':_0x21a578='https://accounts.zoho.in';break;case'CN':_0x21a578=_0x2f54('0x17');break;default:_0x21a578='https://accounts.zoho.eu';break;}var _0x420667={'method':'POST','uri':_0x21a578+_0x2f54('0x28'),'form':{'grant_type':_0x2f54('0x1a'),'client_id':_0x1482b3[_0x2f54('0xd')],'client_secret':_0x1482b3[_0x2f54('0xe')],'redirect_uri':_0x1482b3[_0x2f54('0x11')],'code':_0x1482b3[_0x2f54('0xf')]},'headers':{'Content-Type':_0x2f54('0x1b')}};return rp(_0x420667)['then'](function(_0x1d3c86){var _0x389813=JSON[_0x2f54('0x1c')](_0x1d3c86);if(_0x389813['refresh_token']){_0x1482b3[_0x2f54('0x1e')]=_0x389813[_0x2f54('0x1d')];logger[_0x2f54('0x1f')](util[_0x2f54('0x20')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1482b3[_0x2f54('0x22')],_0x1482b3['id']));}else{logger[_0x2f54('0x25')](util[_0x2f54('0x20')](_0x2f54('0x26'),_0x1482b3[_0x2f54('0x22')],_0x1482b3['id']),util[_0x2f54('0x23')](_0x389813,{'showHidden':![],'depth':null}));}return _0x817474(null,_0x5a7459);})[_0x2f54('0x24')](function(_0x510ff8){logger[_0x2f54('0x25')](util[_0x2f54('0x20')](_0x2f54('0x26'),_0x1482b3[_0x2f54('0x22')],_0x1482b3['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x817474(_0x510ff8);});}else{return _0x817474(null,_0x5a7459);}}}});};
\ No newline at end of file
+var _0xb697=['https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientSecret','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','catch','inspect','host','https://accounts.zoho.com.au','error','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','exports','ZohoAccount','changed','clientId','code','serverUrl','slice','substring','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.in'];(function(_0xba0bc6,_0x561241){var _0x39f6fd=function(_0x4881d4){while(--_0x4881d4){_0xba0bc6['push'](_0xba0bc6['shift']());}};_0x39f6fd(++_0x561241);}(_0xb697,0x142));var _0x7b69=function(_0x38b1d5,_0x4ae11c){_0x38b1d5=_0x38b1d5-0x0;var _0xaa81e4=_0xb697[_0x38b1d5];return _0xaa81e4;};'use strict';var _=require(_0x7b69('0x0'));var util=require(_0x7b69('0x1'));var logger=require(_0x7b69('0x2'))(_0x7b69('0x3'));var moment=require(_0x7b69('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b69('0x5'));var fs=require('fs');var path=require(_0x7b69('0x6'));var rimraf=require(_0x7b69('0x7'));var config=require(_0x7b69('0x8'));var attributes=require(_0x7b69('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b69('0xa')]=function(_0x5e1ba7,_0x3045c5){return _0x5e1ba7['define'](_0x7b69('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x363599,_0x5bec86,_0x5645dc){if(_0x363599[_0x7b69('0xc')]('zone')||_0x363599[_0x7b69('0xc')]('serverUrl')||_0x363599[_0x7b69('0xc')](_0x7b69('0xd'))||_0x363599['changed']('clientSecret')||_0x363599[_0x7b69('0xc')](_0x7b69('0xe'))||_0x363599[_0x7b69('0xc')]('host')){var _0x79af46,_0x2553d9;_0x79af46=_0x363599[_0x7b69('0xf')];var _0x2695cb=_0x79af46[_0x7b69('0x10')](-0x1);if(_0x2695cb==='/'||_0x2695cb==='\x5c'||_0x2695cb===':'){_0x79af46=_0x79af46[_0x7b69('0x11')](0x0,_0x79af46[_0x7b69('0x12')](_0x2695cb));}switch(_0x363599[_0x7b69('0x13')]){case'US':_0x2553d9=_0x7b69('0x14');break;case'AU':_0x2553d9='https://accounts.zoho.com.au';break;case'IN':_0x2553d9=_0x7b69('0x15');break;case'CN':_0x2553d9=_0x7b69('0x16');break;default:_0x2553d9=_0x7b69('0x17');break;}var _0x4683c6={'method':_0x7b69('0x18'),'uri':_0x2553d9+_0x7b69('0x19'),'form':{'grant_type':_0x7b69('0x1a'),'client_id':_0x363599[_0x7b69('0xd')],'client_secret':_0x363599[_0x7b69('0x1b')],'redirect_uri':_0x363599[_0x7b69('0xf')],'code':_0x363599[_0x7b69('0xe')]},'headers':{'Content-Type':_0x7b69('0x1c')}};return rp(_0x4683c6)[_0x7b69('0x1d')](function(_0x4cc8ee){var _0x5f1b9c=JSON[_0x7b69('0x1e')](_0x4cc8ee);if(_0x5f1b9c[_0x7b69('0x1f')]){_0x363599[_0x7b69('0x20')]=_0x5f1b9c[_0x7b69('0x1f')];logger[_0x7b69('0x21')](util[_0x7b69('0x22')](_0x7b69('0x23'),_0x363599['name'],_0x363599['id']));}else{logger['error'](util[_0x7b69('0x22')](_0x7b69('0x24'),_0x363599[_0x7b69('0x25')],_0x363599['id']),util['inspect'](_0x5f1b9c,{'showHidden':![],'depth':null}));}return _0x5645dc(null,_0x5bec86);})[_0x7b69('0x26')](function(_0x203777){logger['error'](util[_0x7b69('0x22')](_0x7b69('0x24'),_0x363599['name'],_0x363599['id']),util[_0x7b69('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x5645dc(_0x203777);});}else{return _0x5645dc(null,_0x5bec86);}},'beforeUpdate':function(_0x1dbcc0,_0x4088bd,_0x35041d){if(_0x1dbcc0[_0x7b69('0xc')](_0x7b69('0x13'))||_0x1dbcc0['changed']('serverUrl')||_0x1dbcc0['changed'](_0x7b69('0xd'))||_0x1dbcc0[_0x7b69('0xc')](_0x7b69('0x1b'))||_0x1dbcc0[_0x7b69('0xc')](_0x7b69('0xe'))||_0x1dbcc0[_0x7b69('0xc')](_0x7b69('0x28'))){var _0x311f2e,_0x297370;_0x311f2e=_0x1dbcc0[_0x7b69('0xf')];var _0xa472dd=_0x311f2e[_0x7b69('0x10')](-0x1);if(_0xa472dd==='/'||_0xa472dd==='\x5c'||_0xa472dd===':'){_0x311f2e=_0x311f2e[_0x7b69('0x11')](0x0,_0x311f2e[_0x7b69('0x12')](_0xa472dd));}switch(_0x1dbcc0[_0x7b69('0x13')]){case'US':_0x297370=_0x7b69('0x14');break;case'AU':_0x297370=_0x7b69('0x29');break;case'IN':_0x297370=_0x7b69('0x15');break;case'CN':_0x297370=_0x7b69('0x16');break;default:_0x297370='https://accounts.zoho.eu';break;}var _0x55340d={'method':_0x7b69('0x18'),'uri':_0x297370+_0x7b69('0x19'),'form':{'grant_type':_0x7b69('0x1a'),'client_id':_0x1dbcc0[_0x7b69('0xd')],'client_secret':_0x1dbcc0[_0x7b69('0x1b')],'redirect_uri':_0x1dbcc0[_0x7b69('0xf')],'code':_0x1dbcc0['code']},'headers':{'Content-Type':_0x7b69('0x1c')}};return rp(_0x55340d)[_0x7b69('0x1d')](function(_0x104f9d){var _0x15fd61=JSON[_0x7b69('0x1e')](_0x104f9d);if(_0x15fd61[_0x7b69('0x1f')]){_0x1dbcc0[_0x7b69('0x20')]=_0x15fd61[_0x7b69('0x1f')];logger[_0x7b69('0x21')](util[_0x7b69('0x22')](_0x7b69('0x23'),_0x1dbcc0[_0x7b69('0x25')],_0x1dbcc0['id']));}else{logger[_0x7b69('0x2a')](util[_0x7b69('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1dbcc0[_0x7b69('0x25')],_0x1dbcc0['id']),util['inspect'](_0x15fd61,{'showHidden':![],'depth':null}));}return _0x35041d(null,_0x4088bd);})[_0x7b69('0x26')](function(_0x187dc6){logger['error'](util[_0x7b69('0x22')](_0x7b69('0x24'),_0x1dbcc0[_0x7b69('0x25')],_0x1dbcc0['id']),util[_0x7b69('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x35041d(_0x187dc6);});}else{return _0x35041d(null,_0x4088bd);}}}});};
\ No newline at end of file
index c97456e..f1567fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5800=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowZohoAccount','ZohoAccount','find','util'];(function(_0x5b9ac9,_0x374422){var _0x7e6db3=function(_0x3e835b){while(--_0x3e835b){_0x5b9ac9['push'](_0x5b9ac9['shift']());}};_0x7e6db3(++_0x374422);}(_0x5800,0x1b9));var _0x0580=function(_0x3d0afd,_0x32a8ff){_0x3d0afd=_0x3d0afd-0x0;var _0x5e00a6=_0x5800[_0x3d0afd];return _0x5e00a6;};'use strict';var _=require('lodash');var util=require(_0x0580('0x0'));var moment=require(_0x0580('0x1'));var BPromise=require(_0x0580('0x2'));var rs=require(_0x0580('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0580('0x4'))['db'];var utils=require(_0x0580('0x5'));var logger=require('../../config/logger')(_0x0580('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0580('0x7')][_0x0580('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5bac94,_0x13dab9,_0x5c4ab8){return new BPromise(function(_0x1e4b42,_0x51bb48){return client[_0x0580('0x9')](_0x5bac94,_0x5c4ab8)[_0x0580('0xa')](function(_0x451bab){logger[_0x0580('0xb')](_0x0580('0xc'),_0x13dab9,_0x0580('0xd'));logger[_0x0580('0xe')](_0x0580('0xf'),_0x13dab9,'request\x20sent',JSON[_0x0580('0x10')](_0x451bab));if(_0x451bab[_0x0580('0x11')]){if(_0x451bab[_0x0580('0x11')]['code']===0x1f4){logger['error'](_0x0580('0xc'),_0x13dab9,_0x451bab[_0x0580('0x11')][_0x0580('0x12')]);return _0x51bb48(_0x451bab['error'][_0x0580('0x12')]);}logger[_0x0580('0x11')](_0x0580('0xc'),_0x13dab9,_0x451bab['error'][_0x0580('0x12')]);return _0x1e4b42(_0x451bab[_0x0580('0x11')][_0x0580('0x12')]);}else{logger[_0x0580('0xb')](_0x0580('0xc'),_0x13dab9,_0x0580('0xd'));_0x1e4b42(_0x451bab[_0x0580('0x13')]['message']);}})[_0x0580('0x14')](function(_0x30fa3e){logger[_0x0580('0x11')](_0x0580('0xc'),_0x13dab9,_0x30fa3e);_0x51bb48(_0x30fa3e);});});}exports[_0x0580('0x15')]=function(_0x549e64){var _0x1fd89d=this;return new Promise(function(_0x15dcac,_0x2c0030){return db['ZohoAccount'][_0x0580('0x16')]({'raw':_0x549e64[_0x0580('0x17')]?_0x549e64[_0x0580('0x17')][_0x0580('0x18')]===undefined?!![]:![]:!![],'where':_0x549e64[_0x0580('0x17')]?_0x549e64[_0x0580('0x17')][_0x0580('0x19')]||null:null,'attributes':_0x549e64['options']?_0x549e64[_0x0580('0x17')][_0x0580('0x1a')]||null:null,'limit':_0x549e64[_0x0580('0x17')]?_0x549e64[_0x0580('0x17')][_0x0580('0x1b')]||null:null,'include':_0x549e64[_0x0580('0x17')]?_0x549e64[_0x0580('0x17')][_0x0580('0x1c')]?_[_0x0580('0x1d')](_0x549e64[_0x0580('0x17')][_0x0580('0x1c')],function(_0x2f1b31){return{'model':db[_0x2f1b31[_0x0580('0x1e')]],'as':_0x2f1b31['as'],'attributes':_0x2f1b31['attributes'],'include':_0x2f1b31['include']?_[_0x0580('0x1d')](_0x2f1b31['include'],function(_0x1d07d8){return{'model':db[_0x1d07d8[_0x0580('0x1e')]],'as':_0x1d07d8['as'],'attributes':_0x1d07d8[_0x0580('0x1a')],'include':_0x1d07d8[_0x0580('0x1c')]?_[_0x0580('0x1d')](_0x1d07d8[_0x0580('0x1c')],function(_0x31799b){return{'model':db[_0x31799b[_0x0580('0x1e')]],'as':_0x31799b['as'],'attributes':_0x31799b[_0x0580('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0580('0xa')](function(_0x22a5c2){logger['info'](_0x0580('0x15'),_0x549e64);logger[_0x0580('0xe')]('GetZohoAccount',_0x549e64,JSON[_0x0580('0x10')](_0x22a5c2));_0x15dcac(_0x22a5c2);})[_0x0580('0x14')](function(_0xae8068){logger[_0x0580('0x11')]('GetZohoAccount',_0xae8068[_0x0580('0x12')],_0x549e64);_0x2c0030(_0x1fd89d[_0x0580('0x11')](0x1f4,_0xae8068[_0x0580('0x12')]));});});};exports[_0x0580('0x1f')]=function(_0x2522df){var _0x212ce3=this;return new Promise(function(_0x3429ed,_0x2cfaf8){return db[_0x0580('0x20')][_0x0580('0x21')]({'raw':_0x2522df[_0x0580('0x17')]?_0x2522df[_0x0580('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2522df['options']?_0x2522df[_0x0580('0x17')][_0x0580('0x19')]||null:null,'attributes':_0x2522df[_0x0580('0x17')]?_0x2522df[_0x0580('0x17')][_0x0580('0x1a')]||null:null,'include':_0x2522df[_0x0580('0x17')]?_0x2522df[_0x0580('0x17')][_0x0580('0x1c')]?_[_0x0580('0x1d')](_0x2522df['options'][_0x0580('0x1c')],function(_0x40f0b5){return{'model':db[_0x40f0b5[_0x0580('0x1e')]],'as':_0x40f0b5['as'],'attributes':_0x40f0b5[_0x0580('0x1a')],'include':_0x40f0b5[_0x0580('0x1c')]?_[_0x0580('0x1d')](_0x40f0b5['include'],function(_0x44882a){return{'model':db[_0x44882a['model']],'as':_0x44882a['as'],'attributes':_0x44882a['attributes'],'include':_0x44882a[_0x0580('0x1c')]?_[_0x0580('0x1d')](_0x44882a[_0x0580('0x1c')],function(_0x24a120){return{'model':db[_0x24a120[_0x0580('0x1e')]],'as':_0x24a120['as'],'attributes':_0x24a120[_0x0580('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2be574){logger[_0x0580('0xb')](_0x0580('0x1f'),_0x2522df);logger[_0x0580('0xe')]('ShowZohoAccount',_0x2522df,JSON[_0x0580('0x10')](_0x2be574));_0x3429ed(_0x2be574);})[_0x0580('0x14')](function(_0x4e8856){logger[_0x0580('0x11')](_0x0580('0x1f'),_0x4e8856[_0x0580('0x12')],_0x2522df);_0x2cfaf8(_0x212ce3['error'](0x1f4,_0x4e8856['message']));});});};
\ No newline at end of file
+var _0x70e3=['message','result','catch','GetZohoAccount','findAll','options','where','attributes','limit','include','map','model','debug','ShowZohoAccount','ZohoAccount','find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','ZohoAccount,\x20%s,\x20%s','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x24da9d,_0x1c39cc){var _0x278403=function(_0xb898da){while(--_0xb898da){_0x24da9d['push'](_0x24da9d['shift']());}};_0x278403(++_0x1c39cc);}(_0x70e3,0x9d));var _0x370e=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x70e3[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x370e('0x0'));var util=require(_0x370e('0x1'));var moment=require(_0x370e('0x2'));var BPromise=require(_0x370e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x370e('0x4'));var db=require(_0x370e('0x5'))['db'];var utils=require(_0x370e('0x6'));var logger=require('../../config/logger')(_0x370e('0x7'));var config=require(_0x370e('0x8'));var jayson=require(_0x370e('0x9'));var client=jayson[_0x370e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a2aaf,_0x5f57ea,_0x4a6884){return new BPromise(function(_0x5e5c79,_0x4086c4){return client['request'](_0x3a2aaf,_0x4a6884)[_0x370e('0xb')](function(_0x52d611){logger[_0x370e('0xc')](_0x370e('0xd'),_0x5f57ea,'request\x20sent');logger['debug'](_0x370e('0xe'),_0x5f57ea,_0x370e('0xf'),JSON[_0x370e('0x10')](_0x52d611));if(_0x52d611[_0x370e('0x11')]){if(_0x52d611[_0x370e('0x11')]['code']===0x1f4){logger[_0x370e('0x11')](_0x370e('0xd'),_0x5f57ea,_0x52d611[_0x370e('0x11')][_0x370e('0x12')]);return _0x4086c4(_0x52d611[_0x370e('0x11')][_0x370e('0x12')]);}logger[_0x370e('0x11')](_0x370e('0xd'),_0x5f57ea,_0x52d611[_0x370e('0x11')][_0x370e('0x12')]);return _0x5e5c79(_0x52d611[_0x370e('0x11')]['message']);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0x5f57ea,_0x370e('0xf'));_0x5e5c79(_0x52d611[_0x370e('0x13')][_0x370e('0x12')]);}})[_0x370e('0x14')](function(_0xb8381f){logger[_0x370e('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x5f57ea,_0xb8381f);_0x4086c4(_0xb8381f);});});}exports[_0x370e('0x15')]=function(_0x2e394a){var _0x4f8b38=this;return new Promise(function(_0x407789,_0x343371){return db['ZohoAccount'][_0x370e('0x16')]({'raw':_0x2e394a[_0x370e('0x17')]?_0x2e394a[_0x370e('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2e394a[_0x370e('0x17')]?_0x2e394a[_0x370e('0x17')][_0x370e('0x18')]||null:null,'attributes':_0x2e394a['options']?_0x2e394a[_0x370e('0x17')][_0x370e('0x19')]||null:null,'limit':_0x2e394a['options']?_0x2e394a[_0x370e('0x17')][_0x370e('0x1a')]||null:null,'include':_0x2e394a['options']?_0x2e394a[_0x370e('0x17')][_0x370e('0x1b')]?_[_0x370e('0x1c')](_0x2e394a[_0x370e('0x17')][_0x370e('0x1b')],function(_0x18c058){return{'model':db[_0x18c058['model']],'as':_0x18c058['as'],'attributes':_0x18c058[_0x370e('0x19')],'include':_0x18c058[_0x370e('0x1b')]?_[_0x370e('0x1c')](_0x18c058['include'],function(_0x2f7d1f){return{'model':db[_0x2f7d1f[_0x370e('0x1d')]],'as':_0x2f7d1f['as'],'attributes':_0x2f7d1f[_0x370e('0x19')],'include':_0x2f7d1f['include']?_[_0x370e('0x1c')](_0x2f7d1f[_0x370e('0x1b')],function(_0x210a46){return{'model':db[_0x210a46[_0x370e('0x1d')]],'as':_0x210a46['as'],'attributes':_0x210a46[_0x370e('0x19')]};}):[]};}):[]};}):[]:[]})[_0x370e('0xb')](function(_0x3e9660){logger['info'](_0x370e('0x15'),_0x2e394a);logger[_0x370e('0x1e')](_0x370e('0x15'),_0x2e394a,JSON[_0x370e('0x10')](_0x3e9660));_0x407789(_0x3e9660);})[_0x370e('0x14')](function(_0x5a7c26){logger['error'](_0x370e('0x15'),_0x5a7c26[_0x370e('0x12')],_0x2e394a);_0x343371(_0x4f8b38[_0x370e('0x11')](0x1f4,_0x5a7c26['message']));});});};exports[_0x370e('0x1f')]=function(_0x1a453f){var _0x3dc4d0=this;return new Promise(function(_0x2134bd,_0x281259){return db[_0x370e('0x20')][_0x370e('0x21')]({'raw':_0x1a453f['options']?_0x1a453f['options'][_0x370e('0x22')]===undefined?!![]:![]:!![],'where':_0x1a453f[_0x370e('0x17')]?_0x1a453f[_0x370e('0x17')][_0x370e('0x18')]||null:null,'attributes':_0x1a453f['options']?_0x1a453f[_0x370e('0x17')][_0x370e('0x19')]||null:null,'include':_0x1a453f[_0x370e('0x17')]?_0x1a453f[_0x370e('0x17')]['include']?_[_0x370e('0x1c')](_0x1a453f[_0x370e('0x17')][_0x370e('0x1b')],function(_0x1c11a8){return{'model':db[_0x1c11a8[_0x370e('0x1d')]],'as':_0x1c11a8['as'],'attributes':_0x1c11a8[_0x370e('0x19')],'include':_0x1c11a8['include']?_[_0x370e('0x1c')](_0x1c11a8[_0x370e('0x1b')],function(_0x479124){return{'model':db[_0x479124['model']],'as':_0x479124['as'],'attributes':_0x479124['attributes'],'include':_0x479124[_0x370e('0x1b')]?_['map'](_0x479124['include'],function(_0x4740cd){return{'model':db[_0x4740cd['model']],'as':_0x4740cd['as'],'attributes':_0x4740cd[_0x370e('0x19')]};}):[]};}):[]};}):[]:[]})[_0x370e('0xb')](function(_0x38d5a1){logger[_0x370e('0xc')](_0x370e('0x1f'),_0x1a453f);logger[_0x370e('0x1e')](_0x370e('0x1f'),_0x1a453f,JSON['stringify'](_0x38d5a1));_0x2134bd(_0x38d5a1);})[_0x370e('0x14')](function(_0x309990){logger[_0x370e('0x11')](_0x370e('0x1f'),_0x309990['message'],_0x1a453f);_0x281259(_0x3dc4d0['error'](0x1f4,_0x309990[_0x370e('0x12')]));});});};
\ No newline at end of file
index cfe209a..be24720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9d9=['/:id/subjects','/:id/descriptions','getDescriptions','post','create','update','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./intZohoConfiguration.controller','isAuthenticated','index','/:id','/:id/fields','get'];(function(_0x52c391,_0x52211d){var _0x578e10=function(_0x2be22f){while(--_0x2be22f){_0x52c391['push'](_0x52c391['shift']());}};_0x578e10(++_0x52211d);}(_0xd9d9,0xd0));var _0x9d9d=function(_0x3a9880,_0x3f9e9f){_0x3a9880=_0x3a9880-0x0;var _0x1d8508=_0xd9d9[_0x3a9880];return _0x1d8508;};'use strict';var multer=require(_0x9d9d('0x0'));var util=require('util');var path=require(_0x9d9d('0x1'));var timeout=require(_0x9d9d('0x2'));var express=require(_0x9d9d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9d9d('0x4'));var interaction=require(_0x9d9d('0x5'));var config=require('../../config/environment');var controller=require(_0x9d9d('0x6'));router['get']('/',auth[_0x9d9d('0x7')](),controller[_0x9d9d('0x8')]);router['get'](_0x9d9d('0x9'),auth['isAuthenticated'](),controller['show']);router['get'](_0x9d9d('0xa'),auth[_0x9d9d('0x7')](),controller['getFields']);router[_0x9d9d('0xb')](_0x9d9d('0xc'),auth[_0x9d9d('0x7')](),controller['getSubjects']);router[_0x9d9d('0xb')](_0x9d9d('0xd'),auth[_0x9d9d('0x7')](),controller[_0x9d9d('0xe')]);router[_0x9d9d('0xf')]('/',auth[_0x9d9d('0x7')](),controller[_0x9d9d('0x10')]);router['put'](_0x9d9d('0x9'),auth[_0x9d9d('0x7')](),controller[_0x9d9d('0x11')]);router['delete'](_0x9d9d('0x9'),auth[_0x9d9d('0x7')](),controller[_0x9d9d('0x12')]);module[_0x9d9d('0x13')]=router;
\ No newline at end of file
+var _0xcd2f=['destroy','multer','util','express','fs-extra','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete'];(function(_0x110c4c,_0x1b9890){var _0x4adfee=function(_0x11c353){while(--_0x11c353){_0x110c4c['push'](_0x110c4c['shift']());}};_0x4adfee(++_0x1b9890);}(_0xcd2f,0xc9));var _0xfcd2=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xcd2f[_0x47aa64];return _0x549c7a;};'use strict';var multer=require(_0xfcd2('0x0'));var util=require(_0xfcd2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfcd2('0x2'));var router=express['Router']();var fs_extra=require(_0xfcd2('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xfcd2('0x4'));var controller=require(_0xfcd2('0x5'));router[_0xfcd2('0x6')]('/',auth[_0xfcd2('0x7')](),controller[_0xfcd2('0x8')]);router[_0xfcd2('0x6')](_0xfcd2('0x9'),auth[_0xfcd2('0x7')](),controller['show']);router['get']('/:id/fields',auth[_0xfcd2('0x7')](),controller[_0xfcd2('0xa')]);router[_0xfcd2('0x6')](_0xfcd2('0xb'),auth[_0xfcd2('0x7')](),controller[_0xfcd2('0xc')]);router[_0xfcd2('0x6')](_0xfcd2('0xd'),auth[_0xfcd2('0x7')](),controller['getDescriptions']);router[_0xfcd2('0xe')]('/',auth[_0xfcd2('0x7')](),controller[_0xfcd2('0xf')]);router[_0xfcd2('0x10')]('/:id',auth[_0xfcd2('0x7')](),controller[_0xfcd2('0x11')]);router[_0xfcd2('0x12')](_0xfcd2('0x9'),auth['isAuthenticated'](),controller[_0xfcd2('0x13')]);module['exports']=router;
\ No newline at end of file
index c6b6bce..0937e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9351=['contact','contact_lead','STRING','ENUM','lead'];(function(_0x272682,_0x28bf69){var _0x2875c5=function(_0x248301){while(--_0x248301){_0x272682['push'](_0x272682['shift']());}};_0x2875c5(++_0x28bf69);}(_0x9351,0x98));var _0x1935=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x9351[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1935('0x0')]},'moduleCreate':{'type':Sequelize[_0x1935('0x1')](_0x1935('0x2'),_0x1935('0x3'),'nothing'),'defaultValue':_0x1935('0x2')},'moduleSearch':{'type':Sequelize[_0x1935('0x1')](_0x1935('0x4'),_0x1935('0x3'),_0x1935('0x2')),'defaultValue':_0x1935('0x4')},'description':{'type':Sequelize[_0x1935('0x0')]}};
\ No newline at end of file
+var _0x66da=['ENUM','contact_lead','sequelize','exports','STRING','contact','nothing','lead'];(function(_0x454091,_0x52433e){var _0x402d7e=function(_0x1d4989){while(--_0x1d4989){_0x454091['push'](_0x454091['shift']());}};_0x402d7e(++_0x52433e);}(_0x66da,0x12a));var _0xa66d=function(_0x15ca1a,_0x30fc82){_0x15ca1a=_0x15ca1a-0x0;var _0x507626=_0x66da[_0x15ca1a];return _0x507626;};'use strict';var Sequelize=require(_0xa66d('0x0'));module[_0xa66d('0x1')]={'name':{'type':Sequelize[_0xa66d('0x2')]},'moduleCreate':{'type':Sequelize['ENUM']('lead',_0xa66d('0x3'),_0xa66d('0x4')),'defaultValue':_0xa66d('0x5')},'moduleSearch':{'type':Sequelize[_0xa66d('0x6')](_0xa66d('0x7'),_0xa66d('0x3'),'lead'),'defaultValue':_0xa66d('0x7')},'description':{'type':Sequelize[_0xa66d('0x2')]}};
\ No newline at end of file
index 800d1d3..9e259bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e43=['order','sort','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','where','filters','pick','merge','VIRTUAL','filter','options','ZohoConfiguration','includeAll','findAll','catch','show','include','create','body','find','params','getFields','findOne','ZohoField'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8e43,0x14c));var _0x38e4=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x8e43[_0x2dadb9];return _0x2f0097;};'use strict';var emlformat=require(_0x38e4('0x0'));var rimraf=require(_0x38e4('0x1'));var zipdir=require(_0x38e4('0x2'));var jsonpatch=require(_0x38e4('0x3'));var rp=require(_0x38e4('0x4'));var moment=require(_0x38e4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x38e4('0x6'));var path=require(_0x38e4('0x7'));var sox=require('sox');var csv=require(_0x38e4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x38e4('0x9'));var _=require('lodash');var squel=require(_0x38e4('0xa'));var crypto=require(_0x38e4('0xb'));var jsforce=require(_0x38e4('0xc'));var deskjs=require(_0x38e4('0xd'));var toCsv=require('to-csv');var querystring=require(_0x38e4('0xe'));var Papa=require(_0x38e4('0xf'));var Redis=require(_0x38e4('0x10'));var authService=require(_0x38e4('0x11'));var qs=require(_0x38e4('0x12'));var as=require(_0x38e4('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x38e4('0x14'));var utils=require(_0x38e4('0x15'));var config=require(_0x38e4('0x16'));var licenseUtil=require(_0x38e4('0x17'));var db=require(_0x38e4('0x18'))['db'];function respondWithStatusCode(_0x2f62c6,_0x59645c){_0x59645c=_0x59645c||0xcc;return function(_0x33a525){if(_0x33a525){return _0x2f62c6[_0x38e4('0x19')](_0x59645c);}return _0x2f62c6[_0x38e4('0x1a')](_0x59645c)[_0x38e4('0x1b')]();};}function respondWithResult(_0x2e18c3,_0x3b711d){_0x3b711d=_0x3b711d||0xc8;return function(_0x56bfec){if(_0x56bfec){return _0x2e18c3[_0x38e4('0x1a')](_0x3b711d)[_0x38e4('0x1c')](_0x56bfec);}};}function respondWithFilteredResult(_0x4d35f2,_0x589679){return function(_0x36f5a9){if(_0x36f5a9){var _0x3c5bb5=typeof _0x589679['offset']===_0x38e4('0x1d')&&typeof _0x589679[_0x38e4('0x1e')]===_0x38e4('0x1d');var _0x12c85a=_0x36f5a9[_0x38e4('0x1f')];var _0x5366ff=_0x3c5bb5?0x0:_0x589679['offset'];var _0x200b22=_0x3c5bb5?_0x36f5a9[_0x38e4('0x1f')]:_0x589679[_0x38e4('0x20')]+_0x589679[_0x38e4('0x1e')];var _0x1881ed;if(_0x200b22>=_0x12c85a){_0x200b22=_0x12c85a;_0x1881ed=0xc8;}else{_0x1881ed=0xce;}_0x4d35f2[_0x38e4('0x1a')](_0x1881ed);return _0x4d35f2['set'](_0x38e4('0x21'),_0x5366ff+'-'+_0x200b22+'/'+_0x12c85a)[_0x38e4('0x1c')](_0x36f5a9);}return null;};}function patchUpdates(_0x5d15f8){return function(_0x4790c0){try{jsonpatch[_0x38e4('0x22')](_0x4790c0,_0x5d15f8,!![]);}catch(_0x26fc6b){return BPromise[_0x38e4('0x23')](_0x26fc6b);}return _0x4790c0[_0x38e4('0x24')]();};}function saveUpdates(_0x3bb6a9,_0x3fae96){return function(_0xd7263b){if(_0xd7263b){return _0xd7263b[_0x38e4('0x25')](_0x3bb6a9)[_0x38e4('0x26')](function(_0xe73f13){return _0xe73f13;});}return null;};}function removeEntity(_0x4c727c,_0xe1871e){return function(_0x46bb9e){if(_0x46bb9e){return _0x46bb9e[_0x38e4('0x27')]()['then'](function(){_0x4c727c[_0x38e4('0x1a')](0xcc)[_0x38e4('0x1b')]();});}};}function handleEntityNotFound(_0x420459,_0x411183){return function(_0x365991){if(!_0x365991){_0x420459[_0x38e4('0x19')](0x194);}return _0x365991;};}function handleError(_0x3b3bbb,_0x31128f){_0x31128f=_0x31128f||0x1f4;return function(_0x1fd1d5){logger['error'](_0x1fd1d5[_0x38e4('0x28')]);if(_0x1fd1d5['name']){delete _0x1fd1d5['name'];}_0x3b3bbb[_0x38e4('0x1a')](_0x31128f)[_0x38e4('0x29')](_0x1fd1d5);};}exports[_0x38e4('0x2a')]=function(_0x5564a7,_0x30ff0f){var _0x484b29={},_0x192b53={},_0x13b75b={'count':0x0,'rows':[]};var _0x11f664=_[_0x38e4('0x2b')](db['ZohoConfiguration'][_0x38e4('0x2c')],function(_0x5448cc){return{'name':_0x5448cc[_0x38e4('0x2d')],'type':_0x5448cc[_0x38e4('0x2e')][_0x38e4('0x2f')]};});_0x192b53[_0x38e4('0x30')]=_[_0x38e4('0x2b')](_0x11f664,_0x38e4('0x31'));_0x192b53[_0x38e4('0x32')]=_[_0x38e4('0x33')](_0x5564a7['query']);_0x192b53['filters']=_['intersection'](_0x192b53[_0x38e4('0x30')],_0x192b53[_0x38e4('0x32')]);_0x484b29[_0x38e4('0x34')]=_[_0x38e4('0x35')](_0x192b53[_0x38e4('0x30')],qs[_0x38e4('0x36')](_0x5564a7[_0x38e4('0x32')]['fields']));_0x484b29[_0x38e4('0x34')]=_0x484b29[_0x38e4('0x34')][_0x38e4('0x37')]?_0x484b29[_0x38e4('0x34')]:_0x192b53[_0x38e4('0x30')];if(!_0x5564a7[_0x38e4('0x32')][_0x38e4('0x38')](_0x38e4('0x39'))){_0x484b29[_0x38e4('0x1e')]=qs[_0x38e4('0x1e')](_0x5564a7[_0x38e4('0x32')][_0x38e4('0x1e')]);_0x484b29['offset']=qs[_0x38e4('0x20')](_0x5564a7['query'][_0x38e4('0x20')]);}_0x484b29['order']=qs['sort'](_0x5564a7[_0x38e4('0x32')]['sort']);_0x484b29[_0x38e4('0x3a')]=qs[_0x38e4('0x3b')](_[_0x38e4('0x3c')](_0x5564a7['query'],_0x192b53['filters']),_0x11f664);if(_0x5564a7[_0x38e4('0x32')]['filter']){_0x484b29['where']=_[_0x38e4('0x3d')](_0x484b29[_0x38e4('0x3a')],{'$or':_['map'](_0x11f664,function(_0x39747a){if(_0x39747a[_0x38e4('0x2e')]!==_0x38e4('0x3e')){var _0x5b0af1={};_0x5b0af1[_0x39747a['name']]={'$like':'%'+_0x5564a7['query'][_0x38e4('0x3f')]+'%'};return _0x5b0af1;}})});}_0x484b29=_['merge']({},_0x484b29,_0x5564a7[_0x38e4('0x40')]);var _0x5b79e3={'where':_0x484b29['where']};return db[_0x38e4('0x41')][_0x38e4('0x1f')](_0x5b79e3)[_0x38e4('0x26')](function(_0x505097){_0x13b75b['count']=_0x505097;if(_0x5564a7[_0x38e4('0x32')][_0x38e4('0x42')]){_0x484b29['include']=[{'all':!![]}];}return db[_0x38e4('0x41')][_0x38e4('0x43')](_0x484b29);})['then'](function(_0x22ce28){_0x13b75b['rows']=_0x22ce28;return _0x13b75b;})['then'](respondWithFilteredResult(_0x30ff0f,_0x484b29))[_0x38e4('0x44')](handleError(_0x30ff0f,null));};exports[_0x38e4('0x45')]=function(_0x388032,_0x1c446d){var _0x541c7b={'raw':![],'where':{'id':_0x388032['params']['id']}},_0x1e25ad={};_0x1e25ad[_0x38e4('0x30')]=_['keys'](db[_0x38e4('0x41')][_0x38e4('0x2c')]);_0x1e25ad[_0x38e4('0x32')]=_[_0x38e4('0x33')](_0x388032[_0x38e4('0x32')]);_0x1e25ad[_0x38e4('0x3b')]=_[_0x38e4('0x35')](_0x1e25ad['model'],_0x1e25ad[_0x38e4('0x32')]);_0x541c7b[_0x38e4('0x34')]=_[_0x38e4('0x35')](_0x1e25ad[_0x38e4('0x30')],qs['fields'](_0x388032[_0x38e4('0x32')][_0x38e4('0x36')]));_0x541c7b[_0x38e4('0x34')]=_0x541c7b[_0x38e4('0x34')][_0x38e4('0x37')]?_0x541c7b[_0x38e4('0x34')]:_0x1e25ad['model'];if(_0x388032[_0x38e4('0x32')][_0x38e4('0x42')]){_0x541c7b[_0x38e4('0x46')]=[{'all':!![]}];}_0x541c7b=_[_0x38e4('0x3d')]({},_0x541c7b,_0x388032[_0x38e4('0x40')]);return db[_0x38e4('0x41')]['find'](_0x541c7b)[_0x38e4('0x26')](handleEntityNotFound(_0x1c446d,null))[_0x38e4('0x26')](respondWithResult(_0x1c446d,null))[_0x38e4('0x44')](handleError(_0x1c446d,null));};exports['create']=function(_0x36121a,_0x275241){return db[_0x38e4('0x41')][_0x38e4('0x47')](_0x36121a[_0x38e4('0x48')],{})[_0x38e4('0x26')](respondWithResult(_0x275241,0xc9))[_0x38e4('0x44')](handleError(_0x275241,null));};exports[_0x38e4('0x25')]=function(_0x29d42a,_0x1067d2){if(_0x29d42a[_0x38e4('0x48')]['id']){delete _0x29d42a[_0x38e4('0x48')]['id'];}return db[_0x38e4('0x41')][_0x38e4('0x49')]({'where':{'id':_0x29d42a['params']['id']}})[_0x38e4('0x26')](handleEntityNotFound(_0x1067d2,null))['then'](saveUpdates(_0x29d42a['body'],null))[_0x38e4('0x26')](respondWithResult(_0x1067d2,null))[_0x38e4('0x44')](handleError(_0x1067d2,null));};exports['destroy']=function(_0x31f7ae,_0x52fa08){return db[_0x38e4('0x41')][_0x38e4('0x49')]({'where':{'id':_0x31f7ae[_0x38e4('0x4a')]['id']}})[_0x38e4('0x26')](handleEntityNotFound(_0x52fa08,null))['then'](removeEntity(_0x52fa08,null))[_0x38e4('0x44')](handleError(_0x52fa08,null));};exports[_0x38e4('0x4b')]=function(_0x1b8fed,_0x419923,_0x1df27a){var _0x20c8ad={};var _0x256fea={};var _0xda023b;var _0x367ea5;return db['ZohoConfiguration'][_0x38e4('0x4c')]({'where':{'id':_0x1b8fed[_0x38e4('0x4a')]['id']}})['then'](handleEntityNotFound(_0x419923,null))[_0x38e4('0x26')](function(_0x43b66d){if(_0x43b66d){_0xda023b=_0x43b66d;_0x256fea['model']=_[_0x38e4('0x33')](db[_0x38e4('0x4d')][_0x38e4('0x2c')]);_0x256fea[_0x38e4('0x32')]=_['keys'](_0x1b8fed[_0x38e4('0x32')]);_0x256fea[_0x38e4('0x3b')]=_['intersection'](_0x256fea[_0x38e4('0x30')],_0x256fea['query']);_0x20c8ad[_0x38e4('0x34')]=_[_0x38e4('0x35')](_0x256fea[_0x38e4('0x30')],qs[_0x38e4('0x36')](_0x1b8fed[_0x38e4('0x32')]['fields']));_0x20c8ad[_0x38e4('0x34')]=_0x20c8ad['attributes'][_0x38e4('0x37')]?_0x20c8ad['attributes']:_0x256fea[_0x38e4('0x30')];_0x20c8ad[_0x38e4('0x4e')]=qs[_0x38e4('0x4f')](_0x1b8fed[_0x38e4('0x32')]['sort']);_0x20c8ad['where']=qs['filters'](_[_0x38e4('0x3c')](_0x1b8fed[_0x38e4('0x32')],_0x256fea['filters']));if(_0x1b8fed[_0x38e4('0x32')][_0x38e4('0x3f')]){_0x20c8ad[_0x38e4('0x3a')]=_[_0x38e4('0x3d')](_0x20c8ad[_0x38e4('0x3a')],{'$or':_[_0x38e4('0x2b')](_0x20c8ad['attributes'],function(_0x3a0504){var _0x176bc4={};_0x176bc4[_0x3a0504]={'$like':'%'+_0x1b8fed[_0x38e4('0x32')][_0x38e4('0x3f')]+'%'};return _0x176bc4;})});}_0x20c8ad=_['merge']({},_0x20c8ad,_0x1b8fed['options']);return _0xda023b[_0x38e4('0x4b')](_0x20c8ad);}})[_0x38e4('0x26')](function(_0x1a3679){if(_0x1a3679){_0x367ea5=_0x1a3679[_0x38e4('0x37')];if(!_0x1b8fed[_0x38e4('0x32')]['hasOwnProperty'](_0x38e4('0x39'))){_0x20c8ad[_0x38e4('0x1e')]=qs[_0x38e4('0x1e')](_0x1b8fed['query'][_0x38e4('0x1e')]);_0x20c8ad[_0x38e4('0x20')]=qs[_0x38e4('0x20')](_0x1b8fed['query'][_0x38e4('0x20')]);}return _0xda023b['getFields'](_0x20c8ad);}})[_0x38e4('0x26')](function(_0x16f8e0){if(_0x16f8e0){return _0x16f8e0?{'count':_0x367ea5,'rows':_0x16f8e0}:null;}})[_0x38e4('0x26')](respondWithResult(_0x419923,null))[_0x38e4('0x44')](handleError(_0x419923,null));};exports[_0x38e4('0x50')]=function(_0x215a23,_0x42021f,_0x2c11de){var _0x234bd2={};var _0x3dd56f={};var _0x40fec3;var _0x5c6b92;return db['ZohoConfiguration'][_0x38e4('0x4c')]({'where':{'id':_0x215a23[_0x38e4('0x4a')]['id']}})[_0x38e4('0x26')](handleEntityNotFound(_0x42021f,null))[_0x38e4('0x26')](function(_0x336286){if(_0x336286){_0x40fec3=_0x336286;_0x3dd56f['model']=_[_0x38e4('0x33')](db[_0x38e4('0x4d')]['rawAttributes']);_0x3dd56f['query']=_[_0x38e4('0x33')](_0x215a23[_0x38e4('0x32')]);_0x3dd56f[_0x38e4('0x3b')]=_[_0x38e4('0x35')](_0x3dd56f['model'],_0x3dd56f[_0x38e4('0x32')]);_0x234bd2[_0x38e4('0x34')]=_[_0x38e4('0x35')](_0x3dd56f[_0x38e4('0x30')],qs['fields'](_0x215a23['query'][_0x38e4('0x36')]));_0x234bd2[_0x38e4('0x34')]=_0x234bd2[_0x38e4('0x34')][_0x38e4('0x37')]?_0x234bd2[_0x38e4('0x34')]:_0x3dd56f[_0x38e4('0x30')];_0x234bd2[_0x38e4('0x4e')]=qs[_0x38e4('0x4f')](_0x215a23[_0x38e4('0x32')][_0x38e4('0x4f')]);_0x234bd2['where']=qs[_0x38e4('0x3b')](_[_0x38e4('0x3c')](_0x215a23[_0x38e4('0x32')],_0x3dd56f[_0x38e4('0x3b')]));if(_0x215a23[_0x38e4('0x32')][_0x38e4('0x3f')]){_0x234bd2[_0x38e4('0x3a')]=_[_0x38e4('0x3d')](_0x234bd2[_0x38e4('0x3a')],{'$or':_[_0x38e4('0x2b')](_0x234bd2[_0x38e4('0x34')],function(_0x1115a5){var _0x46223d={};_0x46223d[_0x1115a5]={'$like':'%'+_0x215a23['query'][_0x38e4('0x3f')]+'%'};return _0x46223d;})});}_0x234bd2=_[_0x38e4('0x3d')]({},_0x234bd2,_0x215a23[_0x38e4('0x40')]);return _0x40fec3[_0x38e4('0x50')](_0x234bd2);}})['then'](function(_0x3d9099){if(_0x3d9099){_0x5c6b92=_0x3d9099['length'];if(!_0x215a23[_0x38e4('0x32')][_0x38e4('0x38')]('nolimit')){_0x234bd2[_0x38e4('0x1e')]=qs[_0x38e4('0x1e')](_0x215a23[_0x38e4('0x32')][_0x38e4('0x1e')]);_0x234bd2[_0x38e4('0x20')]=qs['offset'](_0x215a23['query'][_0x38e4('0x20')]);}return _0x40fec3[_0x38e4('0x50')](_0x234bd2);}})[_0x38e4('0x26')](function(_0xce6d14){if(_0xce6d14){return _0xce6d14?{'count':_0x5c6b92,'rows':_0xce6d14}:null;}})[_0x38e4('0x26')](respondWithResult(_0x42021f,null))[_0x38e4('0x44')](handleError(_0x42021f,null));};exports[_0x38e4('0x51')]=function(_0x36ee56,_0x504f4a,_0x551ca9){var _0x2d1327={};var _0xa4f805={};var _0x20ee79;var _0xefb696;return db[_0x38e4('0x41')][_0x38e4('0x4c')]({'where':{'id':_0x36ee56[_0x38e4('0x4a')]['id']}})[_0x38e4('0x26')](handleEntityNotFound(_0x504f4a,null))[_0x38e4('0x26')](function(_0x30befe){if(_0x30befe){_0x20ee79=_0x30befe;_0xa4f805[_0x38e4('0x30')]=_[_0x38e4('0x33')](db['ZohoField'][_0x38e4('0x2c')]);_0xa4f805[_0x38e4('0x32')]=_[_0x38e4('0x33')](_0x36ee56[_0x38e4('0x32')]);_0xa4f805[_0x38e4('0x3b')]=_[_0x38e4('0x35')](_0xa4f805[_0x38e4('0x30')],_0xa4f805[_0x38e4('0x32')]);_0x2d1327[_0x38e4('0x34')]=_[_0x38e4('0x35')](_0xa4f805[_0x38e4('0x30')],qs[_0x38e4('0x36')](_0x36ee56[_0x38e4('0x32')][_0x38e4('0x36')]));_0x2d1327[_0x38e4('0x34')]=_0x2d1327[_0x38e4('0x34')][_0x38e4('0x37')]?_0x2d1327['attributes']:_0xa4f805[_0x38e4('0x30')];_0x2d1327[_0x38e4('0x4e')]=qs[_0x38e4('0x4f')](_0x36ee56[_0x38e4('0x32')][_0x38e4('0x4f')]);_0x2d1327[_0x38e4('0x3a')]=qs[_0x38e4('0x3b')](_[_0x38e4('0x3c')](_0x36ee56[_0x38e4('0x32')],_0xa4f805[_0x38e4('0x3b')]));if(_0x36ee56[_0x38e4('0x32')][_0x38e4('0x3f')]){_0x2d1327[_0x38e4('0x3a')]=_[_0x38e4('0x3d')](_0x2d1327[_0x38e4('0x3a')],{'$or':_[_0x38e4('0x2b')](_0x2d1327[_0x38e4('0x34')],function(_0xcc82f6){var _0x3df33b={};_0x3df33b[_0xcc82f6]={'$like':'%'+_0x36ee56[_0x38e4('0x32')][_0x38e4('0x3f')]+'%'};return _0x3df33b;})});}_0x2d1327=_[_0x38e4('0x3d')]({},_0x2d1327,_0x36ee56['options']);return _0x20ee79['getDescriptions'](_0x2d1327);}})[_0x38e4('0x26')](function(_0x2c0e40){if(_0x2c0e40){_0xefb696=_0x2c0e40[_0x38e4('0x37')];if(!_0x36ee56[_0x38e4('0x32')][_0x38e4('0x38')]('nolimit')){_0x2d1327['limit']=qs[_0x38e4('0x1e')](_0x36ee56[_0x38e4('0x32')][_0x38e4('0x1e')]);_0x2d1327[_0x38e4('0x20')]=qs['offset'](_0x36ee56[_0x38e4('0x32')][_0x38e4('0x20')]);}return _0x20ee79[_0x38e4('0x51')](_0x2d1327);}})[_0x38e4('0x26')](function(_0x274f91){if(_0x274f91){return _0x274f91?{'count':_0xefb696,'rows':_0x274f91}:null;}})['then'](respondWithResult(_0x504f4a,null))['catch'](handleError(_0x504f4a,null));};
\ No newline at end of file
+var _0x1032=['where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','create','update','find','body','destroy','findOne','ZohoField','options','getFields','nolimit','getSubjects','getDescriptions','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','squel','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','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','end','error','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x159277,_0x5a8f48){var _0x467602=function(_0x154a0a){while(--_0x154a0a){_0x159277['push'](_0x159277['shift']());}};_0x467602(++_0x5a8f48);}(_0x1032,0x160));var _0x2103=function(_0xc2f347,_0x8cc324){_0xc2f347=_0xc2f347-0x0;var _0x4b43f3=_0x1032[_0xc2f347];return _0x4b43f3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2103('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2103('0x1'));var rp=require('request-promise');var moment=require(_0x2103('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2103('0x3'));var path=require(_0x2103('0x4'));var sox=require(_0x2103('0x5'));var csv=require(_0x2103('0x6'));var ejs=require(_0x2103('0x7'));var fs=require('fs');var fs_extra=require(_0x2103('0x8'));var _=require('lodash');var squel=require(_0x2103('0x9'));var crypto=require('crypto');var jsforce=require(_0x2103('0xa'));var deskjs=require(_0x2103('0xb'));var toCsv=require(_0x2103('0x6'));var querystring=require(_0x2103('0xc'));var Papa=require(_0x2103('0xd'));var Redis=require(_0x2103('0xe'));var authService=require(_0x2103('0xf'));var qs=require(_0x2103('0x10'));var as=require(_0x2103('0x11'));var hardwareService=require(_0x2103('0x12'));var logger=require('../../config/logger')(_0x2103('0x13'));var utils=require(_0x2103('0x14'));var config=require(_0x2103('0x15'));var licenseUtil=require(_0x2103('0x16'));var db=require(_0x2103('0x17'))['db'];function respondWithStatusCode(_0x3c0f35,_0x56c539){_0x56c539=_0x56c539||0xcc;return function(_0x513e63){if(_0x513e63){return _0x3c0f35[_0x2103('0x18')](_0x56c539);}return _0x3c0f35[_0x2103('0x19')](_0x56c539)['end']();};}function respondWithResult(_0x2d92ab,_0x18fbd7){_0x18fbd7=_0x18fbd7||0xc8;return function(_0x4bd1e8){if(_0x4bd1e8){return _0x2d92ab[_0x2103('0x19')](_0x18fbd7)[_0x2103('0x1a')](_0x4bd1e8);}};}function respondWithFilteredResult(_0x38e4e4,_0x28a73c){return function(_0x356a43){if(_0x356a43){var _0x3da754=typeof _0x28a73c['offset']===_0x2103('0x1b')&&typeof _0x28a73c['limit']==='undefined';var _0x27bea8=_0x356a43[_0x2103('0x1c')];var _0x2dfcb0=_0x3da754?0x0:_0x28a73c[_0x2103('0x1d')];var _0x47e0a7=_0x3da754?_0x356a43[_0x2103('0x1c')]:_0x28a73c['offset']+_0x28a73c[_0x2103('0x1e')];var _0x1b6d0d;if(_0x47e0a7>=_0x27bea8){_0x47e0a7=_0x27bea8;_0x1b6d0d=0xc8;}else{_0x1b6d0d=0xce;}_0x38e4e4[_0x2103('0x19')](_0x1b6d0d);return _0x38e4e4[_0x2103('0x1f')](_0x2103('0x20'),_0x2dfcb0+'-'+_0x47e0a7+'/'+_0x27bea8)['json'](_0x356a43);}return null;};}function patchUpdates(_0x2fbf33){return function(_0x1acab8){try{jsonpatch[_0x2103('0x21')](_0x1acab8,_0x2fbf33,!![]);}catch(_0x25c531){return BPromise[_0x2103('0x22')](_0x25c531);}return _0x1acab8[_0x2103('0x23')]();};}function saveUpdates(_0x2cbe95,_0x78fed0){return function(_0x35bc11){if(_0x35bc11){return _0x35bc11['update'](_0x2cbe95)[_0x2103('0x24')](function(_0x328ff6){return _0x328ff6;});}return null;};}function removeEntity(_0x5bbb58,_0x307dd4){return function(_0x49855e){if(_0x49855e){return _0x49855e['destroy']()[_0x2103('0x24')](function(){_0x5bbb58[_0x2103('0x19')](0xcc)[_0x2103('0x25')]();});}};}function handleEntityNotFound(_0x595d8b,_0x113159){return function(_0x36b65d){if(!_0x36b65d){_0x595d8b[_0x2103('0x18')](0x194);}return _0x36b65d;};}function handleError(_0xc2e15d,_0x14aa4b){_0x14aa4b=_0x14aa4b||0x1f4;return function(_0x5b280e){logger[_0x2103('0x26')](_0x5b280e['stack']);if(_0x5b280e[_0x2103('0x27')]){delete _0x5b280e[_0x2103('0x27')];}_0xc2e15d[_0x2103('0x19')](_0x14aa4b)[_0x2103('0x28')](_0x5b280e);};}exports[_0x2103('0x29')]=function(_0x5bc5d7,_0x2a0330){var _0x5379b0={},_0x34a45c={},_0x43f053={'count':0x0,'rows':[]};var _0x26a15e=_[_0x2103('0x2a')](db[_0x2103('0x2b')][_0x2103('0x2c')],function(_0x415fea){return{'name':_0x415fea[_0x2103('0x2d')],'type':_0x415fea[_0x2103('0x2e')][_0x2103('0x2f')]};});_0x34a45c['model']=_['map'](_0x26a15e,_0x2103('0x27'));_0x34a45c[_0x2103('0x30')]=_[_0x2103('0x31')](_0x5bc5d7[_0x2103('0x30')]);_0x34a45c['filters']=_[_0x2103('0x32')](_0x34a45c[_0x2103('0x33')],_0x34a45c[_0x2103('0x30')]);_0x5379b0[_0x2103('0x34')]=_[_0x2103('0x32')](_0x34a45c[_0x2103('0x33')],qs[_0x2103('0x35')](_0x5bc5d7['query'][_0x2103('0x35')]));_0x5379b0['attributes']=_0x5379b0[_0x2103('0x34')][_0x2103('0x36')]?_0x5379b0[_0x2103('0x34')]:_0x34a45c['model'];if(!_0x5bc5d7['query'][_0x2103('0x37')]('nolimit')){_0x5379b0[_0x2103('0x1e')]=qs[_0x2103('0x1e')](_0x5bc5d7[_0x2103('0x30')]['limit']);_0x5379b0[_0x2103('0x1d')]=qs['offset'](_0x5bc5d7[_0x2103('0x30')][_0x2103('0x1d')]);}_0x5379b0[_0x2103('0x38')]=qs[_0x2103('0x39')](_0x5bc5d7[_0x2103('0x30')][_0x2103('0x39')]);_0x5379b0[_0x2103('0x3a')]=qs[_0x2103('0x3b')](_[_0x2103('0x3c')](_0x5bc5d7[_0x2103('0x30')],_0x34a45c[_0x2103('0x3b')]),_0x26a15e);if(_0x5bc5d7[_0x2103('0x30')][_0x2103('0x3d')]){_0x5379b0[_0x2103('0x3a')]=_[_0x2103('0x3e')](_0x5379b0['where'],{'$or':_[_0x2103('0x2a')](_0x26a15e,function(_0x37a898){if(_0x37a898['type']!==_0x2103('0x3f')){var _0x371ca0={};_0x371ca0[_0x37a898[_0x2103('0x27')]]={'$like':'%'+_0x5bc5d7[_0x2103('0x30')][_0x2103('0x3d')]+'%'};return _0x371ca0;}})});}_0x5379b0=_[_0x2103('0x3e')]({},_0x5379b0,_0x5bc5d7['options']);var _0x4bc5fb={'where':_0x5379b0[_0x2103('0x3a')]};return db[_0x2103('0x2b')]['count'](_0x4bc5fb)['then'](function(_0x51249d){_0x43f053['count']=_0x51249d;if(_0x5bc5d7[_0x2103('0x30')][_0x2103('0x40')]){_0x5379b0[_0x2103('0x41')]=[{'all':!![]}];}return db[_0x2103('0x2b')][_0x2103('0x42')](_0x5379b0);})[_0x2103('0x24')](function(_0x56f632){_0x43f053[_0x2103('0x43')]=_0x56f632;return _0x43f053;})[_0x2103('0x24')](respondWithFilteredResult(_0x2a0330,_0x5379b0))[_0x2103('0x44')](handleError(_0x2a0330,null));};exports['show']=function(_0x4a3405,_0x48034a){var _0x3afd12={'raw':![],'where':{'id':_0x4a3405[_0x2103('0x45')]['id']}},_0x18cc7a={};_0x18cc7a['model']=_[_0x2103('0x31')](db[_0x2103('0x2b')][_0x2103('0x2c')]);_0x18cc7a[_0x2103('0x30')]=_[_0x2103('0x31')](_0x4a3405[_0x2103('0x30')]);_0x18cc7a[_0x2103('0x3b')]=_['intersection'](_0x18cc7a[_0x2103('0x33')],_0x18cc7a[_0x2103('0x30')]);_0x3afd12[_0x2103('0x34')]=_[_0x2103('0x32')](_0x18cc7a[_0x2103('0x33')],qs[_0x2103('0x35')](_0x4a3405[_0x2103('0x30')][_0x2103('0x35')]));_0x3afd12[_0x2103('0x34')]=_0x3afd12['attributes'][_0x2103('0x36')]?_0x3afd12[_0x2103('0x34')]:_0x18cc7a[_0x2103('0x33')];if(_0x4a3405['query']['includeAll']){_0x3afd12['include']=[{'all':!![]}];}_0x3afd12=_[_0x2103('0x3e')]({},_0x3afd12,_0x4a3405['options']);return db[_0x2103('0x2b')]['find'](_0x3afd12)[_0x2103('0x24')](handleEntityNotFound(_0x48034a,null))[_0x2103('0x24')](respondWithResult(_0x48034a,null))[_0x2103('0x44')](handleError(_0x48034a,null));};exports[_0x2103('0x46')]=function(_0x2bcec1,_0x5d126a){return db[_0x2103('0x2b')][_0x2103('0x46')](_0x2bcec1['body'],{})['then'](respondWithResult(_0x5d126a,0xc9))[_0x2103('0x44')](handleError(_0x5d126a,null));};exports[_0x2103('0x47')]=function(_0x199633,_0x682b20){if(_0x199633['body']['id']){delete _0x199633['body']['id'];}return db[_0x2103('0x2b')][_0x2103('0x48')]({'where':{'id':_0x199633[_0x2103('0x45')]['id']}})[_0x2103('0x24')](handleEntityNotFound(_0x682b20,null))[_0x2103('0x24')](saveUpdates(_0x199633[_0x2103('0x49')],null))[_0x2103('0x24')](respondWithResult(_0x682b20,null))[_0x2103('0x44')](handleError(_0x682b20,null));};exports[_0x2103('0x4a')]=function(_0xf07db7,_0x2945a7){return db[_0x2103('0x2b')][_0x2103('0x48')]({'where':{'id':_0xf07db7[_0x2103('0x45')]['id']}})[_0x2103('0x24')](handleEntityNotFound(_0x2945a7,null))[_0x2103('0x24')](removeEntity(_0x2945a7,null))[_0x2103('0x44')](handleError(_0x2945a7,null));};exports['getFields']=function(_0x3f7d35,_0x11d484,_0x5e4429){var _0x280b23={};var _0x11eb20={};var _0x89fd3a;var _0x205a53;return db[_0x2103('0x2b')][_0x2103('0x4b')]({'where':{'id':_0x3f7d35[_0x2103('0x45')]['id']}})[_0x2103('0x24')](handleEntityNotFound(_0x11d484,null))[_0x2103('0x24')](function(_0x38fb37){if(_0x38fb37){_0x89fd3a=_0x38fb37;_0x11eb20[_0x2103('0x33')]=_[_0x2103('0x31')](db[_0x2103('0x4c')][_0x2103('0x2c')]);_0x11eb20[_0x2103('0x30')]=_[_0x2103('0x31')](_0x3f7d35[_0x2103('0x30')]);_0x11eb20[_0x2103('0x3b')]=_[_0x2103('0x32')](_0x11eb20[_0x2103('0x33')],_0x11eb20[_0x2103('0x30')]);_0x280b23[_0x2103('0x34')]=_[_0x2103('0x32')](_0x11eb20[_0x2103('0x33')],qs[_0x2103('0x35')](_0x3f7d35[_0x2103('0x30')]['fields']));_0x280b23[_0x2103('0x34')]=_0x280b23[_0x2103('0x34')][_0x2103('0x36')]?_0x280b23[_0x2103('0x34')]:_0x11eb20['model'];_0x280b23[_0x2103('0x38')]=qs['sort'](_0x3f7d35[_0x2103('0x30')][_0x2103('0x39')]);_0x280b23[_0x2103('0x3a')]=qs[_0x2103('0x3b')](_[_0x2103('0x3c')](_0x3f7d35[_0x2103('0x30')],_0x11eb20['filters']));if(_0x3f7d35[_0x2103('0x30')]['filter']){_0x280b23[_0x2103('0x3a')]=_[_0x2103('0x3e')](_0x280b23[_0x2103('0x3a')],{'$or':_[_0x2103('0x2a')](_0x280b23[_0x2103('0x34')],function(_0x279ec2){var _0x554f6b={};_0x554f6b[_0x279ec2]={'$like':'%'+_0x3f7d35[_0x2103('0x30')][_0x2103('0x3d')]+'%'};return _0x554f6b;})});}_0x280b23=_[_0x2103('0x3e')]({},_0x280b23,_0x3f7d35[_0x2103('0x4d')]);return _0x89fd3a[_0x2103('0x4e')](_0x280b23);}})[_0x2103('0x24')](function(_0x39d157){if(_0x39d157){_0x205a53=_0x39d157[_0x2103('0x36')];if(!_0x3f7d35[_0x2103('0x30')][_0x2103('0x37')](_0x2103('0x4f'))){_0x280b23['limit']=qs['limit'](_0x3f7d35['query'][_0x2103('0x1e')]);_0x280b23[_0x2103('0x1d')]=qs[_0x2103('0x1d')](_0x3f7d35['query'][_0x2103('0x1d')]);}return _0x89fd3a[_0x2103('0x4e')](_0x280b23);}})[_0x2103('0x24')](function(_0x351bb6){if(_0x351bb6){return _0x351bb6?{'count':_0x205a53,'rows':_0x351bb6}:null;}})[_0x2103('0x24')](respondWithResult(_0x11d484,null))[_0x2103('0x44')](handleError(_0x11d484,null));};exports[_0x2103('0x50')]=function(_0x3b4e97,_0x3b0c00,_0x23e4d5){var _0x303dd5={};var _0x1c6bef={};var _0x364219;var _0x3cf2cd;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x3b4e97[_0x2103('0x45')]['id']}})[_0x2103('0x24')](handleEntityNotFound(_0x3b0c00,null))[_0x2103('0x24')](function(_0x5116b4){if(_0x5116b4){_0x364219=_0x5116b4;_0x1c6bef[_0x2103('0x33')]=_[_0x2103('0x31')](db[_0x2103('0x4c')][_0x2103('0x2c')]);_0x1c6bef[_0x2103('0x30')]=_[_0x2103('0x31')](_0x3b4e97['query']);_0x1c6bef['filters']=_['intersection'](_0x1c6bef[_0x2103('0x33')],_0x1c6bef[_0x2103('0x30')]);_0x303dd5[_0x2103('0x34')]=_[_0x2103('0x32')](_0x1c6bef['model'],qs[_0x2103('0x35')](_0x3b4e97[_0x2103('0x30')][_0x2103('0x35')]));_0x303dd5[_0x2103('0x34')]=_0x303dd5[_0x2103('0x34')][_0x2103('0x36')]?_0x303dd5['attributes']:_0x1c6bef[_0x2103('0x33')];_0x303dd5[_0x2103('0x38')]=qs[_0x2103('0x39')](_0x3b4e97[_0x2103('0x30')][_0x2103('0x39')]);_0x303dd5[_0x2103('0x3a')]=qs[_0x2103('0x3b')](_[_0x2103('0x3c')](_0x3b4e97[_0x2103('0x30')],_0x1c6bef['filters']));if(_0x3b4e97['query'][_0x2103('0x3d')]){_0x303dd5['where']=_[_0x2103('0x3e')](_0x303dd5['where'],{'$or':_[_0x2103('0x2a')](_0x303dd5[_0x2103('0x34')],function(_0x277f2f){var _0x74b962={};_0x74b962[_0x277f2f]={'$like':'%'+_0x3b4e97[_0x2103('0x30')][_0x2103('0x3d')]+'%'};return _0x74b962;})});}_0x303dd5=_[_0x2103('0x3e')]({},_0x303dd5,_0x3b4e97['options']);return _0x364219[_0x2103('0x50')](_0x303dd5);}})[_0x2103('0x24')](function(_0x5de82b){if(_0x5de82b){_0x3cf2cd=_0x5de82b['length'];if(!_0x3b4e97[_0x2103('0x30')][_0x2103('0x37')](_0x2103('0x4f'))){_0x303dd5[_0x2103('0x1e')]=qs[_0x2103('0x1e')](_0x3b4e97[_0x2103('0x30')][_0x2103('0x1e')]);_0x303dd5[_0x2103('0x1d')]=qs[_0x2103('0x1d')](_0x3b4e97[_0x2103('0x30')][_0x2103('0x1d')]);}return _0x364219[_0x2103('0x50')](_0x303dd5);}})['then'](function(_0x22e103){if(_0x22e103){return _0x22e103?{'count':_0x3cf2cd,'rows':_0x22e103}:null;}})[_0x2103('0x24')](respondWithResult(_0x3b0c00,null))[_0x2103('0x44')](handleError(_0x3b0c00,null));};exports[_0x2103('0x51')]=function(_0x5d17d7,_0x2c6e00,_0x208cd4){var _0xcba5b3={};var _0x26747d={};var _0x305315;var _0x46c688;return db[_0x2103('0x2b')]['findOne']({'where':{'id':_0x5d17d7[_0x2103('0x45')]['id']}})[_0x2103('0x24')](handleEntityNotFound(_0x2c6e00,null))['then'](function(_0x51eb1e){if(_0x51eb1e){_0x305315=_0x51eb1e;_0x26747d[_0x2103('0x33')]=_[_0x2103('0x31')](db[_0x2103('0x4c')][_0x2103('0x2c')]);_0x26747d['query']=_[_0x2103('0x31')](_0x5d17d7[_0x2103('0x30')]);_0x26747d[_0x2103('0x3b')]=_[_0x2103('0x32')](_0x26747d[_0x2103('0x33')],_0x26747d[_0x2103('0x30')]);_0xcba5b3[_0x2103('0x34')]=_[_0x2103('0x32')](_0x26747d[_0x2103('0x33')],qs[_0x2103('0x35')](_0x5d17d7[_0x2103('0x30')]['fields']));_0xcba5b3['attributes']=_0xcba5b3[_0x2103('0x34')]['length']?_0xcba5b3[_0x2103('0x34')]:_0x26747d[_0x2103('0x33')];_0xcba5b3['order']=qs[_0x2103('0x39')](_0x5d17d7[_0x2103('0x30')]['sort']);_0xcba5b3['where']=qs['filters'](_[_0x2103('0x3c')](_0x5d17d7[_0x2103('0x30')],_0x26747d[_0x2103('0x3b')]));if(_0x5d17d7[_0x2103('0x30')][_0x2103('0x3d')]){_0xcba5b3[_0x2103('0x3a')]=_[_0x2103('0x3e')](_0xcba5b3['where'],{'$or':_['map'](_0xcba5b3[_0x2103('0x34')],function(_0x4dbe34){var _0x21fbb1={};_0x21fbb1[_0x4dbe34]={'$like':'%'+_0x5d17d7['query']['filter']+'%'};return _0x21fbb1;})});}_0xcba5b3=_[_0x2103('0x3e')]({},_0xcba5b3,_0x5d17d7[_0x2103('0x4d')]);return _0x305315[_0x2103('0x51')](_0xcba5b3);}})[_0x2103('0x24')](function(_0x21b0a9){if(_0x21b0a9){_0x46c688=_0x21b0a9[_0x2103('0x36')];if(!_0x5d17d7[_0x2103('0x30')][_0x2103('0x37')]('nolimit')){_0xcba5b3[_0x2103('0x1e')]=qs[_0x2103('0x1e')](_0x5d17d7[_0x2103('0x30')]['limit']);_0xcba5b3['offset']=qs[_0x2103('0x1d')](_0x5d17d7[_0x2103('0x30')][_0x2103('0x1d')]);}return _0x305315['getDescriptions'](_0xcba5b3);}})['then'](function(_0x10b075){if(_0x10b075){return _0x10b075?{'count':_0x46c688,'rows':_0x10b075}:null;}})[_0x2103('0x24')](respondWithResult(_0x2c6e00,null))['catch'](handleError(_0x2c6e00,null));};
\ No newline at end of file
index e93f1b2..6bf7e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b36=['ZohoConfiguration','int_zoho_configurations','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3818c2,_0x50d871){var _0x18791f=function(_0x221ca4){while(--_0x221ca4){_0x3818c2['push'](_0x3818c2['shift']());}};_0x18791f(++_0x50d871);}(_0x1b36,0x183));var _0x61b3=function(_0x56eafe,_0x517064){_0x56eafe=_0x56eafe-0x0;var _0x464c94=_0x1b36[_0x56eafe];return _0x464c94;};'use strict';var _=require('lodash');var util=require(_0x61b3('0x0'));var logger=require(_0x61b3('0x1'))(_0x61b3('0x2'));var moment=require(_0x61b3('0x3'));var BPromise=require(_0x61b3('0x4'));var rp=require(_0x61b3('0x5'));var fs=require('fs');var path=require(_0x61b3('0x6'));var rimraf=require(_0x61b3('0x7'));var config=require(_0x61b3('0x8'));var attributes=require('./intZohoConfiguration.attributes');module['exports']=function(_0x1d1104,_0x4fea30){return _0x1d1104['define'](_0x61b3('0x9'),attributes,{'tableName':_0x61b3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x661e=['ZohoConfiguration','int_zoho_configurations','lodash','util','moment','bluebird','path','rimraf','./intZohoConfiguration.attributes','define'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x661e,0x14c));var _0xe661=function(_0x561680,_0x409af2){_0x561680=_0x561680-0x0;var _0x2838f1=_0x661e[_0x561680];return _0x2838f1;};'use strict';var _=require(_0xe661('0x0'));var util=require(_0xe661('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe661('0x2'));var BPromise=require(_0xe661('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe661('0x4'));var rimraf=require(_0xe661('0x5'));var config=require('../../config/environment');var attributes=require(_0xe661('0x6'));module['exports']=function(_0xc36afa,_0x10fedc){return _0xc36afa[_0xe661('0x7')](_0xe661('0x8'),attributes,{'tableName':_0xe661('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 057537a..fb4fc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa041=['ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','ZohoConfiguration,\x20%s,\x20%s','debug'];(function(_0x37a79c,_0x2b19f0){var _0x561d89=function(_0x19bee3){while(--_0x19bee3){_0x37a79c['push'](_0x37a79c['shift']());}};_0x561d89(++_0x2b19f0);}(_0xa041,0xfd));var _0x1a04=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa041[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x1a04('0x0'));var util=require(_0x1a04('0x1'));var moment=require(_0x1a04('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a04('0x3'))['db'];var utils=require(_0x1a04('0x4'));var logger=require(_0x1a04('0x5'))('rpc');var config=require(_0x1a04('0x6'));var jayson=require(_0x1a04('0x7'));var client=jayson[_0x1a04('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d04ca,_0x5990f6,_0x178a25){return new BPromise(function(_0x5d3c07,_0x1bbd7f){return client['request'](_0x3d04ca,_0x178a25)[_0x1a04('0x9')](function(_0x1d7d7b){logger[_0x1a04('0xa')](_0x1a04('0xb'),_0x5990f6,'request\x20sent');logger[_0x1a04('0xc')](_0x1a04('0xd'),_0x5990f6,_0x1a04('0xe'),JSON[_0x1a04('0xf')](_0x1d7d7b));if(_0x1d7d7b['error']){if(_0x1d7d7b[_0x1a04('0x10')]['code']===0x1f4){logger[_0x1a04('0x10')](_0x1a04('0xb'),_0x5990f6,_0x1d7d7b['error']['message']);return _0x1bbd7f(_0x1d7d7b[_0x1a04('0x10')]['message']);}logger[_0x1a04('0x10')](_0x1a04('0xb'),_0x5990f6,_0x1d7d7b[_0x1a04('0x10')][_0x1a04('0x11')]);return _0x5d3c07(_0x1d7d7b[_0x1a04('0x10')][_0x1a04('0x11')]);}else{logger[_0x1a04('0xa')](_0x1a04('0xb'),_0x5990f6,_0x1a04('0xe'));_0x5d3c07(_0x1d7d7b[_0x1a04('0x12')][_0x1a04('0x11')]);}})['catch'](function(_0x3437bc){logger['error'](_0x1a04('0xb'),_0x5990f6,_0x3437bc);_0x1bbd7f(_0x3437bc);});});}
\ No newline at end of file
+var _0x133b=['ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\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','../../config/environment','then','info'];(function(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x133b,0x112));var _0xb133=function(_0xf5345a,_0x29b58f){_0xf5345a=_0xf5345a-0x0;var _0x327e30=_0x133b[_0xf5345a];return _0x327e30;};'use strict';var _=require(_0xb133('0x0'));var util=require(_0xb133('0x1'));var moment=require(_0xb133('0x2'));var BPromise=require(_0xb133('0x3'));var rs=require(_0xb133('0x4'));var fs=require('fs');var Redis=require(_0xb133('0x5'));var db=require(_0xb133('0x6'))['db'];var utils=require(_0xb133('0x7'));var logger=require(_0xb133('0x8'))('rpc');var config=require(_0xb133('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x13dd85,_0x147090,_0x6e3bde){return new BPromise(function(_0x1e26f5,_0x2b4b2d){return client['request'](_0x13dd85,_0x6e3bde)[_0xb133('0xa')](function(_0x87d3cf){logger[_0xb133('0xb')](_0xb133('0xc'),_0x147090,'request\x20sent');logger[_0xb133('0xd')](_0xb133('0xe'),_0x147090,_0xb133('0xf'),JSON[_0xb133('0x10')](_0x87d3cf));if(_0x87d3cf['error']){if(_0x87d3cf[_0xb133('0x11')][_0xb133('0x12')]===0x1f4){logger[_0xb133('0x11')](_0xb133('0xc'),_0x147090,_0x87d3cf['error'][_0xb133('0x13')]);return _0x2b4b2d(_0x87d3cf[_0xb133('0x11')]['message']);}logger['error'](_0xb133('0xc'),_0x147090,_0x87d3cf[_0xb133('0x11')][_0xb133('0x13')]);return _0x1e26f5(_0x87d3cf[_0xb133('0x11')][_0xb133('0x13')]);}else{logger[_0xb133('0xb')](_0xb133('0xc'),_0x147090,_0xb133('0xf'));_0x1e26f5(_0x87d3cf[_0xb133('0x14')]['message']);}})[_0xb133('0x15')](function(_0xd1ef52){logger['error'](_0xb133('0xc'),_0x147090,_0xd1ef52);_0x2b4b2d(_0xd1ef52);});});}
\ No newline at end of file
index 1c82313..8fd2965 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3c9=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','connect-timeout'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc3c9,0xcf));var _0x9c3c=function(_0x38230,_0x148d0c){_0x38230=_0x38230-0x0;var _0x522ec9=_0xc3c9[_0x38230];return _0x522ec9;};'use strict';var multer=require(_0x9c3c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9c3c('0x1'));var express=require(_0x9c3c('0x2'));var router=express[_0x9c3c('0x3')]();var fs_extra=require(_0x9c3c('0x4'));var auth=require(_0x9c3c('0x5'));var interaction=require(_0x9c3c('0x6'));var config=require('../../config/environment');var controller=require(_0x9c3c('0x7'));router[_0x9c3c('0x8')]('/',auth[_0x9c3c('0x9')](),controller[_0x9c3c('0xa')]);router[_0x9c3c('0x8')](_0x9c3c('0xb'),auth[_0x9c3c('0x9')](),controller[_0x9c3c('0xc')]);router[_0x9c3c('0xd')]('/',auth[_0x9c3c('0x9')](),controller[_0x9c3c('0xe')]);router[_0x9c3c('0xf')](_0x9c3c('0xb'),auth[_0x9c3c('0x9')](),controller[_0x9c3c('0x10')]);router[_0x9c3c('0x11')](_0x9c3c('0xb'),auth[_0x9c3c('0x9')](),controller['destroy']);module[_0x9c3c('0x12')]=router;
\ No newline at end of file
+var _0x0244=['isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0244,0x1ac));var _0x4024=function(_0x3c424f,_0x1c61c2){_0x3c424f=_0x3c424f-0x0;var _0x3fee82=_0x0244[_0x3c424f];return _0x3fee82;};'use strict';var multer=require(_0x4024('0x0'));var util=require(_0x4024('0x1'));var path=require('path');var timeout=require(_0x4024('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4024('0x3'));var auth=require(_0x4024('0x4'));var interaction=require(_0x4024('0x5'));var config=require(_0x4024('0x6'));var controller=require(_0x4024('0x7'));router[_0x4024('0x8')]('/',auth[_0x4024('0x9')](),controller[_0x4024('0xa')]);router[_0x4024('0x8')](_0x4024('0xb'),auth['isAuthenticated'](),controller[_0x4024('0xc')]);router[_0x4024('0xd')]('/',auth[_0x4024('0x9')](),controller[_0x4024('0xe')]);router[_0x4024('0xf')](_0x4024('0xb'),auth[_0x4024('0x9')](),controller['update']);router[_0x4024('0x10')]('/:id',auth[_0x4024('0x9')](),controller[_0x4024('0x11')]);module[_0x4024('0x12')]=router;
\ No newline at end of file
index 4686806..905b639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd178=['STRING','customVariable','BOOLEAN','sequelize','ENUM','string','variable','picklist'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xd178,0x113));var _0x8d17=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xd178[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require(_0x8d17('0x0'));module['exports']={'type':{'type':Sequelize[_0x8d17('0x1')](_0x8d17('0x2'),_0x8d17('0x3'),'customVariable','keyValue',_0x8d17('0x4')),'defaultValue':_0x8d17('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8d17('0x5')]},'keyType':{'type':Sequelize[_0x8d17('0x1')](_0x8d17('0x2'),_0x8d17('0x3'),_0x8d17('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x8d17('0x5')]},'customField':{'type':Sequelize[_0x8d17('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8d17('0x5')]}};
\ No newline at end of file
+var _0x25aa=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x19a188,_0xb04329){var _0x15c5c5=function(_0x302686){while(--_0x302686){_0x19a188['push'](_0x19a188['shift']());}};_0x15c5c5(++_0xb04329);}(_0x25aa,0x85));var _0xa25a=function(_0x4fda88,_0x1a4d19){_0x4fda88=_0x4fda88-0x0;var _0xe37511=_0x25aa[_0x4fda88];return _0xe37511;};'use strict';var Sequelize=require(_0xa25a('0x0'));module[_0xa25a('0x1')]={'type':{'type':Sequelize[_0xa25a('0x2')](_0xa25a('0x3'),_0xa25a('0x4'),_0xa25a('0x5'),_0xa25a('0x6'),_0xa25a('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xa25a('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xa25a('0x3'),_0xa25a('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xa25a('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xa25a('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa25a('0x8')]}};
\ No newline at end of file
index 59645f2..95dc7c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x897b=['query','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','findAll','catch','show','length','include','create','body','find','params','eml-format','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ZohoField','type','key','model','keys'];(function(_0x9a845e,_0x56c60f){var _0x227fb3=function(_0x35f2cd){while(--_0x35f2cd){_0x9a845e['push'](_0x9a845e['shift']());}};_0x227fb3(++_0x56c60f);}(_0x897b,0x1b6));var _0xb897=function(_0xd1fbd4,_0x5bee79){_0xd1fbd4=_0xd1fbd4-0x0;var _0x354cd3=_0x897b[_0xd1fbd4];return _0x354cd3;};'use strict';var emlformat=require(_0xb897('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb897('0x1'));var moment=require(_0xb897('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xb897('0x3'));var util=require(_0xb897('0x4'));var path=require('path');var sox=require(_0xb897('0x5'));var csv=require(_0xb897('0x6'));var ejs=require(_0xb897('0x7'));var fs=require('fs');var fs_extra=require(_0xb897('0x8'));var _=require(_0xb897('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb897('0xa'));var toCsv=require(_0xb897('0x6'));var querystring=require(_0xb897('0xb'));var Papa=require(_0xb897('0xc'));var Redis=require('ioredis');var authService=require(_0xb897('0xd'));var qs=require(_0xb897('0xe'));var as=require(_0xb897('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb897('0x10'));var utils=require(_0xb897('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xb897('0x12'));var db=require(_0xb897('0x13'))['db'];function respondWithStatusCode(_0x114953,_0x376742){_0x376742=_0x376742||0xcc;return function(_0x2316fa){if(_0x2316fa){return _0x114953[_0xb897('0x14')](_0x376742);}return _0x114953[_0xb897('0x15')](_0x376742)['end']();};}function respondWithResult(_0x53221b,_0x449f16){_0x449f16=_0x449f16||0xc8;return function(_0x5a9482){if(_0x5a9482){return _0x53221b[_0xb897('0x15')](_0x449f16)['json'](_0x5a9482);}};}function respondWithFilteredResult(_0x277ad9,_0x36b7d9){return function(_0x58ad18){if(_0x58ad18){var _0x1a42e8=typeof _0x36b7d9[_0xb897('0x16')]==='undefined'&&typeof _0x36b7d9[_0xb897('0x17')]===_0xb897('0x18');var _0x3874d5=_0x58ad18[_0xb897('0x19')];var _0x593127=_0x1a42e8?0x0:_0x36b7d9[_0xb897('0x16')];var _0x2a5290=_0x1a42e8?_0x58ad18[_0xb897('0x19')]:_0x36b7d9[_0xb897('0x16')]+_0x36b7d9[_0xb897('0x17')];var _0x3c17bd;if(_0x2a5290>=_0x3874d5){_0x2a5290=_0x3874d5;_0x3c17bd=0xc8;}else{_0x3c17bd=0xce;}_0x277ad9[_0xb897('0x15')](_0x3c17bd);return _0x277ad9['set']('Content-Range',_0x593127+'-'+_0x2a5290+'/'+_0x3874d5)[_0xb897('0x1a')](_0x58ad18);}return null;};}function patchUpdates(_0x26692f){return function(_0xa0faf1){try{jsonpatch[_0xb897('0x1b')](_0xa0faf1,_0x26692f,!![]);}catch(_0x54718c){return BPromise[_0xb897('0x1c')](_0x54718c);}return _0xa0faf1[_0xb897('0x1d')]();};}function saveUpdates(_0x425cd8,_0x228cc7){return function(_0x5b5c61){if(_0x5b5c61){return _0x5b5c61[_0xb897('0x1e')](_0x425cd8)[_0xb897('0x1f')](function(_0x2270de){return _0x2270de;});}return null;};}function removeEntity(_0x1dfce9,_0x3ae297){return function(_0x56a231){if(_0x56a231){return _0x56a231[_0xb897('0x20')]()[_0xb897('0x1f')](function(){_0x1dfce9['status'](0xcc)[_0xb897('0x21')]();});}};}function handleEntityNotFound(_0x5874ab,_0x297566){return function(_0x337b88){if(!_0x337b88){_0x5874ab['sendStatus'](0x194);}return _0x337b88;};}function handleError(_0x9f0870,_0x2ef009){_0x2ef009=_0x2ef009||0x1f4;return function(_0x480cb0){logger[_0xb897('0x22')](_0x480cb0[_0xb897('0x23')]);if(_0x480cb0[_0xb897('0x24')]){delete _0x480cb0['name'];}_0x9f0870['status'](_0x2ef009)[_0xb897('0x25')](_0x480cb0);};}exports[_0xb897('0x26')]=function(_0x12bc91,_0x1e0c60){var _0x21deda={},_0x5bf9a7={},_0x489a34={'count':0x0,'rows':[]};var _0x120433=_[_0xb897('0x27')](db[_0xb897('0x28')]['rawAttributes'],function(_0x4d0388){return{'name':_0x4d0388['fieldName'],'type':_0x4d0388[_0xb897('0x29')][_0xb897('0x2a')]};});_0x5bf9a7[_0xb897('0x2b')]=_[_0xb897('0x27')](_0x120433,_0xb897('0x24'));_0x5bf9a7['query']=_[_0xb897('0x2c')](_0x12bc91[_0xb897('0x2d')]);_0x5bf9a7['filters']=_['intersection'](_0x5bf9a7['model'],_0x5bf9a7[_0xb897('0x2d')]);_0x21deda[_0xb897('0x2e')]=_[_0xb897('0x2f')](_0x5bf9a7[_0xb897('0x2b')],qs['fields'](_0x12bc91['query'][_0xb897('0x30')]));_0x21deda[_0xb897('0x2e')]=_0x21deda[_0xb897('0x2e')]['length']?_0x21deda[_0xb897('0x2e')]:_0x5bf9a7[_0xb897('0x2b')];if(!_0x12bc91[_0xb897('0x2d')][_0xb897('0x31')](_0xb897('0x32'))){_0x21deda[_0xb897('0x17')]=qs[_0xb897('0x17')](_0x12bc91[_0xb897('0x2d')][_0xb897('0x17')]);_0x21deda[_0xb897('0x16')]=qs['offset'](_0x12bc91[_0xb897('0x2d')][_0xb897('0x16')]);}_0x21deda['order']=qs[_0xb897('0x33')](_0x12bc91[_0xb897('0x2d')]['sort']);_0x21deda[_0xb897('0x34')]=qs[_0xb897('0x35')](_[_0xb897('0x36')](_0x12bc91[_0xb897('0x2d')],_0x5bf9a7[_0xb897('0x35')]),_0x120433);if(_0x12bc91[_0xb897('0x2d')][_0xb897('0x37')]){_0x21deda[_0xb897('0x34')]=_['merge'](_0x21deda[_0xb897('0x34')],{'$or':_[_0xb897('0x27')](_0x120433,function(_0x4919bc){if(_0x4919bc[_0xb897('0x29')]!==_0xb897('0x38')){var _0x44b973={};_0x44b973[_0x4919bc[_0xb897('0x24')]]={'$like':'%'+_0x12bc91[_0xb897('0x2d')][_0xb897('0x37')]+'%'};return _0x44b973;}})});}_0x21deda=_[_0xb897('0x39')]({},_0x21deda,_0x12bc91[_0xb897('0x3a')]);var _0x29db41={'where':_0x21deda[_0xb897('0x34')]};return db[_0xb897('0x28')][_0xb897('0x19')](_0x29db41)[_0xb897('0x1f')](function(_0x58b140){_0x489a34[_0xb897('0x19')]=_0x58b140;if(_0x12bc91['query'][_0xb897('0x3b')]){_0x21deda['include']=[{'all':!![]}];}return db[_0xb897('0x28')][_0xb897('0x3c')](_0x21deda);})[_0xb897('0x1f')](function(_0x2a840e){_0x489a34['rows']=_0x2a840e;return _0x489a34;})[_0xb897('0x1f')](respondWithFilteredResult(_0x1e0c60,_0x21deda))[_0xb897('0x3d')](handleError(_0x1e0c60,null));};exports[_0xb897('0x3e')]=function(_0x27193e,_0x208a14){var _0x57df2a={'raw':!![],'where':{'id':_0x27193e['params']['id']}},_0x500bf2={};_0x500bf2[_0xb897('0x2b')]=_[_0xb897('0x2c')](db[_0xb897('0x28')]['rawAttributes']);_0x500bf2['query']=_[_0xb897('0x2c')](_0x27193e[_0xb897('0x2d')]);_0x500bf2[_0xb897('0x35')]=_[_0xb897('0x2f')](_0x500bf2[_0xb897('0x2b')],_0x500bf2[_0xb897('0x2d')]);_0x57df2a[_0xb897('0x2e')]=_[_0xb897('0x2f')](_0x500bf2[_0xb897('0x2b')],qs[_0xb897('0x30')](_0x27193e['query'][_0xb897('0x30')]));_0x57df2a[_0xb897('0x2e')]=_0x57df2a['attributes'][_0xb897('0x3f')]?_0x57df2a['attributes']:_0x500bf2[_0xb897('0x2b')];if(_0x27193e[_0xb897('0x2d')][_0xb897('0x3b')]){_0x57df2a[_0xb897('0x40')]=[{'all':!![]}];}_0x57df2a=_['merge']({},_0x57df2a,_0x27193e['options']);return db[_0xb897('0x28')]['find'](_0x57df2a)[_0xb897('0x1f')](handleEntityNotFound(_0x208a14,null))[_0xb897('0x1f')](respondWithResult(_0x208a14,null))['catch'](handleError(_0x208a14,null));};exports[_0xb897('0x41')]=function(_0x4b2db4,_0x30cfdc){return db['ZohoField'][_0xb897('0x41')](_0x4b2db4[_0xb897('0x42')],{})['then'](respondWithResult(_0x30cfdc,0xc9))[_0xb897('0x3d')](handleError(_0x30cfdc,null));};exports['update']=function(_0x545540,_0x48e8f6){if(_0x545540[_0xb897('0x42')]['id']){delete _0x545540[_0xb897('0x42')]['id'];}return db[_0xb897('0x28')]['find']({'where':{'id':_0x545540['params']['id']}})[_0xb897('0x1f')](handleEntityNotFound(_0x48e8f6,null))['then'](saveUpdates(_0x545540['body'],null))[_0xb897('0x1f')](respondWithResult(_0x48e8f6,null))[_0xb897('0x3d')](handleError(_0x48e8f6,null));};exports[_0xb897('0x20')]=function(_0x11f23a,_0x1f2e4e){return db[_0xb897('0x28')][_0xb897('0x43')]({'where':{'id':_0x11f23a[_0xb897('0x44')]['id']}})[_0xb897('0x1f')](handleEntityNotFound(_0x1f2e4e,null))['then'](removeEntity(_0x1f2e4e,null))[_0xb897('0x3d')](handleError(_0x1f2e4e,null));};
\ No newline at end of file
+var _0xf6bc=['key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','findAll','rows','show','include','find','catch','create','body','params','destroy','zip-dir','request-promise','moment','mustache','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','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','sendStatus','error','stack','name','send','map','ZohoField','rawAttributes','type'];(function(_0x4314c4,_0x4a21db){var _0x315931=function(_0x38e0c7){while(--_0x38e0c7){_0x4314c4['push'](_0x4314c4['shift']());}};_0x315931(++_0x4a21db);}(_0xf6bc,0xfd));var _0xcf6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf6bc[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcf6b('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcf6b('0x1'));var moment=require(_0xcf6b('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xcf6b('0x3'));var util=require(_0xcf6b('0x4'));var path=require(_0xcf6b('0x5'));var sox=require(_0xcf6b('0x6'));var csv=require(_0xcf6b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcf6b('0x8'));var _=require('lodash');var squel=require(_0xcf6b('0x9'));var crypto=require(_0xcf6b('0xa'));var jsforce=require(_0xcf6b('0xb'));var deskjs=require(_0xcf6b('0xc'));var toCsv=require('to-csv');var querystring=require(_0xcf6b('0xd'));var Papa=require(_0xcf6b('0xe'));var Redis=require(_0xcf6b('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xcf6b('0x10'));var as=require(_0xcf6b('0x11'));var hardwareService=require(_0xcf6b('0x12'));var logger=require(_0xcf6b('0x13'))(_0xcf6b('0x14'));var utils=require(_0xcf6b('0x15'));var config=require(_0xcf6b('0x16'));var licenseUtil=require(_0xcf6b('0x17'));var db=require(_0xcf6b('0x18'))['db'];function respondWithStatusCode(_0xfa7eb3,_0x120965){_0x120965=_0x120965||0xcc;return function(_0x133fa8){if(_0x133fa8){return _0xfa7eb3['sendStatus'](_0x120965);}return _0xfa7eb3[_0xcf6b('0x19')](_0x120965)[_0xcf6b('0x1a')]();};}function respondWithResult(_0x9acfd0,_0xaa794f){_0xaa794f=_0xaa794f||0xc8;return function(_0x5aff59){if(_0x5aff59){return _0x9acfd0[_0xcf6b('0x19')](_0xaa794f)[_0xcf6b('0x1b')](_0x5aff59);}};}function respondWithFilteredResult(_0x208452,_0x2f9605){return function(_0x282300){if(_0x282300){var _0x3cbb6d=typeof _0x2f9605['offset']==='undefined'&&typeof _0x2f9605[_0xcf6b('0x1c')]===_0xcf6b('0x1d');var _0x17fde1=_0x282300[_0xcf6b('0x1e')];var _0x73ec37=_0x3cbb6d?0x0:_0x2f9605[_0xcf6b('0x1f')];var _0x49096d=_0x3cbb6d?_0x282300['count']:_0x2f9605[_0xcf6b('0x1f')]+_0x2f9605[_0xcf6b('0x1c')];var _0xe9902a;if(_0x49096d>=_0x17fde1){_0x49096d=_0x17fde1;_0xe9902a=0xc8;}else{_0xe9902a=0xce;}_0x208452[_0xcf6b('0x19')](_0xe9902a);return _0x208452[_0xcf6b('0x20')](_0xcf6b('0x21'),_0x73ec37+'-'+_0x49096d+'/'+_0x17fde1)[_0xcf6b('0x1b')](_0x282300);}return null;};}function patchUpdates(_0x24221b){return function(_0x12185b){try{jsonpatch['apply'](_0x12185b,_0x24221b,!![]);}catch(_0x550057){return BPromise[_0xcf6b('0x22')](_0x550057);}return _0x12185b[_0xcf6b('0x23')]();};}function saveUpdates(_0x5cfd3b,_0x5e9a16){return function(_0x3c218a){if(_0x3c218a){return _0x3c218a[_0xcf6b('0x24')](_0x5cfd3b)[_0xcf6b('0x25')](function(_0x36aa18){return _0x36aa18;});}return null;};}function removeEntity(_0x51b108,_0x15b540){return function(_0x5bb96f){if(_0x5bb96f){return _0x5bb96f['destroy']()[_0xcf6b('0x25')](function(){_0x51b108[_0xcf6b('0x19')](0xcc)[_0xcf6b('0x1a')]();});}};}function handleEntityNotFound(_0x5ac7b6,_0x5d195b){return function(_0x149cc8){if(!_0x149cc8){_0x5ac7b6[_0xcf6b('0x26')](0x194);}return _0x149cc8;};}function handleError(_0x17f4c8,_0x512712){_0x512712=_0x512712||0x1f4;return function(_0x29d4f4){logger[_0xcf6b('0x27')](_0x29d4f4[_0xcf6b('0x28')]);if(_0x29d4f4[_0xcf6b('0x29')]){delete _0x29d4f4['name'];}_0x17f4c8[_0xcf6b('0x19')](_0x512712)[_0xcf6b('0x2a')](_0x29d4f4);};}exports['index']=function(_0x4ff6ac,_0x2029f4){var _0x4204c5={},_0x5e8b0d={},_0x3aabcf={'count':0x0,'rows':[]};var _0x259e02=_[_0xcf6b('0x2b')](db[_0xcf6b('0x2c')][_0xcf6b('0x2d')],function(_0x411136){return{'name':_0x411136['fieldName'],'type':_0x411136[_0xcf6b('0x2e')][_0xcf6b('0x2f')]};});_0x5e8b0d['model']=_[_0xcf6b('0x2b')](_0x259e02,_0xcf6b('0x29'));_0x5e8b0d[_0xcf6b('0x30')]=_[_0xcf6b('0x31')](_0x4ff6ac['query']);_0x5e8b0d[_0xcf6b('0x32')]=_[_0xcf6b('0x33')](_0x5e8b0d[_0xcf6b('0x34')],_0x5e8b0d[_0xcf6b('0x30')]);_0x4204c5['attributes']=_['intersection'](_0x5e8b0d[_0xcf6b('0x34')],qs[_0xcf6b('0x35')](_0x4ff6ac['query'][_0xcf6b('0x35')]));_0x4204c5[_0xcf6b('0x36')]=_0x4204c5[_0xcf6b('0x36')][_0xcf6b('0x37')]?_0x4204c5[_0xcf6b('0x36')]:_0x5e8b0d[_0xcf6b('0x34')];if(!_0x4ff6ac[_0xcf6b('0x30')][_0xcf6b('0x38')](_0xcf6b('0x39'))){_0x4204c5[_0xcf6b('0x1c')]=qs['limit'](_0x4ff6ac['query'][_0xcf6b('0x1c')]);_0x4204c5[_0xcf6b('0x1f')]=qs[_0xcf6b('0x1f')](_0x4ff6ac[_0xcf6b('0x30')][_0xcf6b('0x1f')]);}_0x4204c5[_0xcf6b('0x3a')]=qs[_0xcf6b('0x3b')](_0x4ff6ac[_0xcf6b('0x30')][_0xcf6b('0x3b')]);_0x4204c5['where']=qs[_0xcf6b('0x32')](_['pick'](_0x4ff6ac['query'],_0x5e8b0d[_0xcf6b('0x32')]),_0x259e02);if(_0x4ff6ac['query'][_0xcf6b('0x3c')]){_0x4204c5['where']=_[_0xcf6b('0x3d')](_0x4204c5[_0xcf6b('0x3e')],{'$or':_[_0xcf6b('0x2b')](_0x259e02,function(_0x4d48b9){if(_0x4d48b9[_0xcf6b('0x2e')]!==_0xcf6b('0x3f')){var _0x119f80={};_0x119f80[_0x4d48b9['name']]={'$like':'%'+_0x4ff6ac[_0xcf6b('0x30')][_0xcf6b('0x3c')]+'%'};return _0x119f80;}})});}_0x4204c5=_[_0xcf6b('0x3d')]({},_0x4204c5,_0x4ff6ac[_0xcf6b('0x40')]);var _0x252450={'where':_0x4204c5[_0xcf6b('0x3e')]};return db['ZohoField']['count'](_0x252450)[_0xcf6b('0x25')](function(_0x47f4f9){_0x3aabcf[_0xcf6b('0x1e')]=_0x47f4f9;if(_0x4ff6ac[_0xcf6b('0x30')]['includeAll']){_0x4204c5['include']=[{'all':!![]}];}return db[_0xcf6b('0x2c')][_0xcf6b('0x41')](_0x4204c5);})['then'](function(_0x784d1c){_0x3aabcf[_0xcf6b('0x42')]=_0x784d1c;return _0x3aabcf;})[_0xcf6b('0x25')](respondWithFilteredResult(_0x2029f4,_0x4204c5))['catch'](handleError(_0x2029f4,null));};exports[_0xcf6b('0x43')]=function(_0x3af157,_0x55e00d){var _0x2510f8={'raw':!![],'where':{'id':_0x3af157['params']['id']}},_0x186d9c={};_0x186d9c[_0xcf6b('0x34')]=_['keys'](db[_0xcf6b('0x2c')][_0xcf6b('0x2d')]);_0x186d9c[_0xcf6b('0x30')]=_[_0xcf6b('0x31')](_0x3af157[_0xcf6b('0x30')]);_0x186d9c['filters']=_[_0xcf6b('0x33')](_0x186d9c[_0xcf6b('0x34')],_0x186d9c[_0xcf6b('0x30')]);_0x2510f8[_0xcf6b('0x36')]=_[_0xcf6b('0x33')](_0x186d9c[_0xcf6b('0x34')],qs[_0xcf6b('0x35')](_0x3af157[_0xcf6b('0x30')][_0xcf6b('0x35')]));_0x2510f8['attributes']=_0x2510f8[_0xcf6b('0x36')]['length']?_0x2510f8['attributes']:_0x186d9c[_0xcf6b('0x34')];if(_0x3af157[_0xcf6b('0x30')]['includeAll']){_0x2510f8[_0xcf6b('0x44')]=[{'all':!![]}];}_0x2510f8=_[_0xcf6b('0x3d')]({},_0x2510f8,_0x3af157['options']);return db[_0xcf6b('0x2c')][_0xcf6b('0x45')](_0x2510f8)['then'](handleEntityNotFound(_0x55e00d,null))[_0xcf6b('0x25')](respondWithResult(_0x55e00d,null))[_0xcf6b('0x46')](handleError(_0x55e00d,null));};exports[_0xcf6b('0x47')]=function(_0x342144,_0x44e01a){return db[_0xcf6b('0x2c')][_0xcf6b('0x47')](_0x342144[_0xcf6b('0x48')],{})[_0xcf6b('0x25')](respondWithResult(_0x44e01a,0xc9))['catch'](handleError(_0x44e01a,null));};exports[_0xcf6b('0x24')]=function(_0x2e51e9,_0x3ff4a0){if(_0x2e51e9['body']['id']){delete _0x2e51e9['body']['id'];}return db[_0xcf6b('0x2c')]['find']({'where':{'id':_0x2e51e9[_0xcf6b('0x49')]['id']}})[_0xcf6b('0x25')](handleEntityNotFound(_0x3ff4a0,null))[_0xcf6b('0x25')](saveUpdates(_0x2e51e9[_0xcf6b('0x48')],null))[_0xcf6b('0x25')](respondWithResult(_0x3ff4a0,null))[_0xcf6b('0x46')](handleError(_0x3ff4a0,null));};exports[_0xcf6b('0x4a')]=function(_0x55856a,_0x3ecdcd){return db[_0xcf6b('0x2c')][_0xcf6b('0x45')]({'where':{'id':_0x55856a[_0xcf6b('0x49')]['id']}})['then'](handleEntityNotFound(_0x3ecdcd,null))[_0xcf6b('0x25')](removeEntity(_0x3ecdcd,null))['catch'](handleError(_0x3ecdcd,null));};
\ No newline at end of file
index 08cb62b..bbe02a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['FieldId','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','define','ZohoField','int_zoho_fields','zoho_unique_index','idField'];(function(_0x50f500,_0x1a9cf1){var _0x5bfb6d=function(_0x4f20ea){while(--_0x4f20ea){_0x50f500['push'](_0x50f500['shift']());}};_0x5bfb6d(++_0x1a9cf1);}(_0x90b1,0x1bb));var _0x190b=function(_0x48b5f9,_0x585cfb){_0x48b5f9=_0x48b5f9-0x0;var _0x55ae7a=_0x90b1[_0x48b5f9];return _0x55ae7a;};'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('./intZohoField.attributes');module['exports']=function(_0x5da9c1,_0x27ff8c){return _0x5da9c1[_0x190b('0x7')](_0x190b('0x8'),attributes,{'tableName':_0x190b('0x9'),'paranoid':![],'indexes':[{'name':_0x190b('0xa'),'fields':[_0x190b('0xb'),_0x190b('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x81c6=['../../config/environment','./intZohoField.attributes','exports','define','ZohoField','idField','FieldId','util','bluebird','request-promise','path'];(function(_0x3612a5,_0x57f342){var _0x47017d=function(_0x1fb6c8){while(--_0x1fb6c8){_0x3612a5['push'](_0x3612a5['shift']());}};_0x47017d(++_0x57f342);}(_0x81c6,0x1d5));var _0x681c=function(_0x18f869,_0x694862){_0x18f869=_0x18f869-0x0;var _0x1c6ca4=_0x81c6[_0x18f869];return _0x1c6ca4;};'use strict';var _=require('lodash');var util=require(_0x681c('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x681c('0x1'));var rp=require(_0x681c('0x2'));var fs=require('fs');var path=require(_0x681c('0x3'));var rimraf=require('rimraf');var config=require(_0x681c('0x4'));var attributes=require(_0x681c('0x5'));module[_0x681c('0x6')]=function(_0x1d31c8,_0x4ea522){return _0x1d31c8[_0x681c('0x7')](_0x681c('0x8'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x681c('0x9'),_0x681c('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2b757ca..380c1d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc545=['error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xbc5e6d,_0x5c3069){var _0xadbc15=function(_0x17e0e5){while(--_0x17e0e5){_0xbc5e6d['push'](_0xbc5e6d['shift']());}};_0xadbc15(++_0x5c3069);}(_0xc545,0xea));var _0x5c54=function(_0x2128aa,_0x133a9d){_0x2128aa=_0x2128aa-0x0;var _0x176959=_0xc545[_0x2128aa];return _0x176959;};'use strict';var _=require(_0x5c54('0x0'));var util=require(_0x5c54('0x1'));var moment=require(_0x5c54('0x2'));var BPromise=require(_0x5c54('0x3'));var rs=require(_0x5c54('0x4'));var fs=require('fs');var Redis=require(_0x5c54('0x5'));var db=require(_0x5c54('0x6'))['db'];var utils=require(_0x5c54('0x7'));var logger=require(_0x5c54('0x8'))(_0x5c54('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5c54('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x402b6b,_0x488edc,_0x16a9dc){return new BPromise(function(_0x17b974,_0x44f8f8){return client[_0x5c54('0xb')](_0x402b6b,_0x16a9dc)[_0x5c54('0xc')](function(_0x6594fb){logger[_0x5c54('0xd')](_0x5c54('0xe'),_0x488edc,_0x5c54('0xf'));logger[_0x5c54('0x10')](_0x5c54('0x11'),_0x488edc,'request\x20sent',JSON[_0x5c54('0x12')](_0x6594fb));if(_0x6594fb[_0x5c54('0x13')]){if(_0x6594fb[_0x5c54('0x13')]['code']===0x1f4){logger['error'](_0x5c54('0xe'),_0x488edc,_0x6594fb['error'][_0x5c54('0x14')]);return _0x44f8f8(_0x6594fb[_0x5c54('0x13')][_0x5c54('0x14')]);}logger[_0x5c54('0x13')](_0x5c54('0xe'),_0x488edc,_0x6594fb['error']['message']);return _0x17b974(_0x6594fb[_0x5c54('0x13')][_0x5c54('0x14')]);}else{logger[_0x5c54('0xd')]('ZohoField,\x20%s,\x20%s',_0x488edc,_0x5c54('0xf'));_0x17b974(_0x6594fb[_0x5c54('0x15')][_0x5c54('0x14')]);}})[_0x5c54('0x16')](function(_0x7c4ab3){logger['error']('ZohoField,\x20%s,\x20%s',_0x488edc,_0x7c4ab3);_0x44f8f8(_0x7c4ab3);});});}
\ No newline at end of file
+var _0xa1a3=['bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','moment'];(function(_0x32596a,_0x11eba9){var _0x3e0498=function(_0x4ee656){while(--_0x4ee656){_0x32596a['push'](_0x32596a['shift']());}};_0x3e0498(++_0x11eba9);}(_0xa1a3,0x12b));var _0x3a1a=function(_0x39b2ae,_0x4a5d11){_0x39b2ae=_0x39b2ae-0x0;var _0x63880=_0xa1a3[_0x39b2ae];return _0x63880;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3a1a('0x0'));var BPromise=require(_0x3a1a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3a1a('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x3a1a('0x3'))(_0x3a1a('0x4'));var config=require(_0x3a1a('0x5'));var jayson=require(_0x3a1a('0x6'));var client=jayson[_0x3a1a('0x7')][_0x3a1a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d2ad8,_0x5041e9,_0x5015af){return new BPromise(function(_0x51348b,_0x5722b4){return client[_0x3a1a('0x9')](_0x3d2ad8,_0x5015af)['then'](function(_0x745df9){logger['info'](_0x3a1a('0xa'),_0x5041e9,_0x3a1a('0xb'));logger[_0x3a1a('0xc')](_0x3a1a('0xd'),_0x5041e9,_0x3a1a('0xb'),JSON[_0x3a1a('0xe')](_0x745df9));if(_0x745df9['error']){if(_0x745df9['error'][_0x3a1a('0xf')]===0x1f4){logger[_0x3a1a('0x10')](_0x3a1a('0xa'),_0x5041e9,_0x745df9[_0x3a1a('0x10')][_0x3a1a('0x11')]);return _0x5722b4(_0x745df9[_0x3a1a('0x10')]['message']);}logger[_0x3a1a('0x10')](_0x3a1a('0xa'),_0x5041e9,_0x745df9[_0x3a1a('0x10')]['message']);return _0x51348b(_0x745df9[_0x3a1a('0x10')][_0x3a1a('0x11')]);}else{logger[_0x3a1a('0x12')]('ZohoField,\x20%s,\x20%s',_0x5041e9,_0x3a1a('0xb'));_0x51348b(_0x745df9['result'][_0x3a1a('0x11')]);}})[_0x3a1a('0x13')](function(_0x829d6a){logger[_0x3a1a('0x10')](_0x3a1a('0xa'),_0x5041e9,_0x829d6a);_0x5722b4(_0x829d6a);});});}
\ No newline at end of file
index 5798618..a3d1e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x43b34a,_0x39f685){var _0x4d4b3b=function(_0x488b72){while(--_0x488b72){_0x43b34a['push'](_0x43b34a['shift']());}};_0x4d4b3b(++_0x39f685);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4212ed,_0x6bd10e){var _0x5d0d42=function(_0x1ee523){while(--_0x1ee523){_0x4212ed['push'](_0x4212ed['shift']());}};_0x5d0d42(++_0x6bd10e);}(_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 bd52cc3..4fec304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d6=['STRING','app.js','INTEGER','exports','unique_name_and_version'];(function(_0x5726bc,_0x15eb61){var _0x2115f3=function(_0x111b73){while(--_0x111b73){_0x5726bc['push'](_0x5726bc['shift']());}};_0x2115f3(++_0x15eb61);}(_0x17d6,0xbc));var _0x617d=function(_0x121fb5,_0x575b88){_0x121fb5=_0x121fb5-0x0;var _0x5dd42f=_0x17d6[_0x121fb5];return _0x5dd42f;};'use strict';var Sequelize=require('sequelize');module[_0x617d('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x617d('0x1')},'version':{'type':Sequelize[_0x617d('0x2')],'allowNull':![],'unique':_0x617d('0x1')},'main':{'type':Sequelize[_0x617d('0x2')],'defaultValue':_0x617d('0x3')},'filename':{'type':Sequelize[_0x617d('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x617d('0x4')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x617d('0x2')]},'logo':{'type':Sequelize[_0x617d('0x2')]},'state':{'type':Sequelize['STRING'],'unique':'state'},'description':{'type':Sequelize[_0x617d('0x2')]},'title':{'type':Sequelize[_0x617d('0x2')]},'remoteUri':{'type':Sequelize[_0x617d('0x2')]},'link':{'type':Sequelize[_0x617d('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x2297=['STRING','unique_name_and_version','app.js','BOOLEAN','state','sequelize'];(function(_0x26bf2c,_0x3ebf17){var _0x3182b5=function(_0x4a4373){while(--_0x4a4373){_0x26bf2c['push'](_0x26bf2c['shift']());}};_0x3182b5(++_0x3ebf17);}(_0x2297,0x101));var _0x7229=function(_0x573b7a,_0x3d0cf9){_0x573b7a=_0x573b7a-0x0;var _0x1493e7=_0x2297[_0x573b7a];return _0x1493e7;};'use strict';var Sequelize=require(_0x7229('0x0'));module['exports']={'name':{'type':Sequelize[_0x7229('0x1')],'allowNull':![],'unique':_0x7229('0x2')},'version':{'type':Sequelize[_0x7229('0x1')],'allowNull':![],'unique':_0x7229('0x2')},'main':{'type':Sequelize[_0x7229('0x1')],'defaultValue':_0x7229('0x3')},'filename':{'type':Sequelize[_0x7229('0x1')]},'path':{'type':Sequelize[_0x7229('0x1')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x7229('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x7229('0x1')]},'logo':{'type':Sequelize[_0x7229('0x1')]},'state':{'type':Sequelize[_0x7229('0x1')],'unique':_0x7229('0x5')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x7229('0x1')]},'remoteUri':{'type':Sequelize[_0x7229('0x1')]},'link':{'type':Sequelize[_0x7229('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 216bf66..8146799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['count','set','Content-Range','apply','reject','save','then','sendStatus','name','send','map','Integration','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','rows','show','params','include','find','catch','create','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x53ec,0x192));var _0xc53e=function(_0x16360c,_0x37c098){_0x16360c=_0x16360c-0x0;var _0x17dd2d=_0x53ec[_0x16360c];return _0x17dd2d;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];function respondWithStatusCode(_0x863fa,_0x4203aa){_0x4203aa=_0x4203aa||0xcc;return function(_0x56f0e5){if(_0x56f0e5){return _0x863fa['sendStatus'](_0x4203aa);}return _0x863fa[_0xc53e('0x18')](_0x4203aa)[_0xc53e('0x19')]();};}function respondWithResult(_0x7cd798,_0x3d2e17){_0x3d2e17=_0x3d2e17||0xc8;return function(_0x358ef3){if(_0x358ef3){return _0x7cd798[_0xc53e('0x18')](_0x3d2e17)[_0xc53e('0x1a')](_0x358ef3);}};}function respondWithFilteredResult(_0x19c0d1,_0x455e4d){return function(_0x2ad6eb){if(_0x2ad6eb){var _0x5b0a88=typeof _0x455e4d[_0xc53e('0x1b')]===_0xc53e('0x1c')&&typeof _0x455e4d[_0xc53e('0x1d')]===_0xc53e('0x1c');var _0x15333b=_0x2ad6eb[_0xc53e('0x1e')];var _0x164016=_0x5b0a88?0x0:_0x455e4d[_0xc53e('0x1b')];var _0x3b550e=_0x5b0a88?_0x2ad6eb['count']:_0x455e4d['offset']+_0x455e4d[_0xc53e('0x1d')];var _0x2a5bac;if(_0x3b550e>=_0x15333b){_0x3b550e=_0x15333b;_0x2a5bac=0xc8;}else{_0x2a5bac=0xce;}_0x19c0d1[_0xc53e('0x18')](_0x2a5bac);return _0x19c0d1[_0xc53e('0x1f')](_0xc53e('0x20'),_0x164016+'-'+_0x3b550e+'/'+_0x15333b)[_0xc53e('0x1a')](_0x2ad6eb);}return null;};}function patchUpdates(_0x15a015){return function(_0x25702b){try{jsonpatch[_0xc53e('0x21')](_0x25702b,_0x15a015,!![]);}catch(_0x401af6){return BPromise[_0xc53e('0x22')](_0x401af6);}return _0x25702b[_0xc53e('0x23')]();};}function saveUpdates(_0x426467,_0x4fb695){return function(_0x47cfdd){if(_0x47cfdd){return _0x47cfdd['update'](_0x426467)[_0xc53e('0x24')](function(_0x384218){return _0x384218;});}return null;};}function removeEntity(_0x7591c1,_0x4015c8){return function(_0x180811){if(_0x180811){return _0x180811['destroy']()['then'](function(){_0x7591c1[_0xc53e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae55e,_0x3a5ce8){return function(_0x443179){if(!_0x443179){_0x1ae55e[_0xc53e('0x25')](0x194);}return _0x443179;};}function handleError(_0x63c5dc,_0x4df8cf){_0x4df8cf=_0x4df8cf||0x1f4;return function(_0x398e7a){logger['error'](_0x398e7a['stack']);if(_0x398e7a['name']){delete _0x398e7a[_0xc53e('0x26')];}_0x63c5dc['status'](_0x4df8cf)[_0xc53e('0x27')](_0x398e7a);};}exports['index']=function(_0x24a77e,_0x5112d2){var _0x5ce216={},_0x8f0ee6={},_0x6a62b0={'count':0x0,'rows':[]};var _0x42dec1=_[_0xc53e('0x28')](db[_0xc53e('0x29')][_0xc53e('0x2a')],function(_0x3280fe){return{'name':_0x3280fe[_0xc53e('0x2b')],'type':_0x3280fe['type'][_0xc53e('0x2c')]};});_0x8f0ee6[_0xc53e('0x2d')]=_[_0xc53e('0x28')](_0x42dec1,'name');_0x8f0ee6[_0xc53e('0x2e')]=_['keys'](_0x24a77e[_0xc53e('0x2e')]);_0x8f0ee6[_0xc53e('0x2f')]=_['intersection'](_0x8f0ee6['model'],_0x8f0ee6[_0xc53e('0x2e')]);_0x5ce216[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x8f0ee6[_0xc53e('0x2d')],qs[_0xc53e('0x32')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x5ce216[_0xc53e('0x30')]=_0x5ce216['attributes'][_0xc53e('0x33')]?_0x5ce216[_0xc53e('0x30')]:_0x8f0ee6[_0xc53e('0x2d')];if(!_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x34')](_0xc53e('0x35'))){_0x5ce216[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x24a77e[_0xc53e('0x2e')]['limit']);_0x5ce216[_0xc53e('0x1b')]=qs['offset'](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x1b')]);}_0x5ce216['order']=qs[_0xc53e('0x36')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x36')]);_0x5ce216['where']=qs[_0xc53e('0x2f')](_[_0xc53e('0x37')](_0x24a77e[_0xc53e('0x2e')],_0x8f0ee6[_0xc53e('0x2f')]),_0x42dec1);if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]){_0x5ce216[_0xc53e('0x39')]=_['merge'](_0x5ce216[_0xc53e('0x39')],{'$or':_[_0xc53e('0x28')](_0x42dec1,function(_0x2db711){if(_0x2db711['type']!==_0xc53e('0x3a')){var _0x5e8ab7={};_0x5e8ab7[_0x2db711[_0xc53e('0x26')]]={'$like':'%'+_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]+'%'};return _0x5e8ab7;}})});}_0x5ce216=_[_0xc53e('0x3b')]({},_0x5ce216,_0x24a77e[_0xc53e('0x3c')]);var _0x5507d0={'where':_0x5ce216[_0xc53e('0x39')]};return db[_0xc53e('0x29')]['count'](_0x5507d0)['then'](function(_0x5e9e15){_0x6a62b0['count']=_0x5e9e15;if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x5ce216['include']=[{'all':!![]}];}return db[_0xc53e('0x29')]['findAll'](_0x5ce216);})['then'](function(_0x53447e){_0x6a62b0[_0xc53e('0x3e')]=_0x53447e;return _0x6a62b0;})['then'](respondWithFilteredResult(_0x5112d2,_0x5ce216))['catch'](handleError(_0x5112d2,null));};exports[_0xc53e('0x3f')]=function(_0x53a82f,_0x422088){var _0x360af9={'raw':![],'where':{'id':_0x53a82f[_0xc53e('0x40')]['id']}},_0x49f204={};_0x49f204[_0xc53e('0x2d')]=_['keys'](db[_0xc53e('0x29')]['rawAttributes']);_0x49f204['query']=_['keys'](_0x53a82f['query']);_0x49f204[_0xc53e('0x2f')]=_[_0xc53e('0x31')](_0x49f204[_0xc53e('0x2d')],_0x49f204['query']);_0x360af9[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x49f204['model'],qs['fields'](_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x360af9[_0xc53e('0x30')]=_0x360af9['attributes'][_0xc53e('0x33')]?_0x360af9[_0xc53e('0x30')]:_0x49f204[_0xc53e('0x2d')];if(_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x360af9[_0xc53e('0x41')]=[{'all':!![]}];}_0x360af9=_[_0xc53e('0x3b')]({},_0x360af9,_0x53a82f['options']);return db[_0xc53e('0x29')][_0xc53e('0x42')](_0x360af9)[_0xc53e('0x24')](handleEntityNotFound(_0x422088,null))['then'](respondWithResult(_0x422088,null))[_0xc53e('0x43')](handleError(_0x422088,null));};exports[_0xc53e('0x44')]=function(_0x4458c8,_0x15e744){return db[_0xc53e('0x29')][_0xc53e('0x44')](_0x4458c8['body'],{})[_0xc53e('0x24')](respondWithResult(_0x15e744,0xc9))[_0xc53e('0x43')](handleError(_0x15e744,null));};exports[_0xc53e('0x45')]=function(_0x5a6e41,_0x33d45c){if(_0x5a6e41[_0xc53e('0x46')]['id']){delete _0x5a6e41[_0xc53e('0x46')]['id'];}return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x5a6e41[_0xc53e('0x40')]['id']}})[_0xc53e('0x24')](handleEntityNotFound(_0x33d45c,null))[_0xc53e('0x24')](saveUpdates(_0x5a6e41[_0xc53e('0x46')],null))[_0xc53e('0x24')](respondWithResult(_0x33d45c,null))['catch'](handleError(_0x33d45c,null));};exports[_0xc53e('0x47')]=function(_0x17cf13,_0x38520c){return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x17cf13['params']['id']}})['then'](handleEntityNotFound(_0x38520c,null))[_0xc53e('0x24')](removeEntity(_0x38520c,null))['catch'](handleError(_0x38520c,null));};
\ No newline at end of file
+var _0x57ca=['bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','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','index','map','Integration','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','findAll','params','find','catch','create','body','rimraf','zip-dir','request-promise','moment'];(function(_0x295485,_0x15ed6e){var _0x40a9fa=function(_0x2e56d1){while(--_0x2e56d1){_0x295485['push'](_0x295485['shift']());}};_0x40a9fa(++_0x15ed6e);}(_0x57ca,0x108));var _0xa57c=function(_0x11fbf8,_0x419724){_0x11fbf8=_0x11fbf8-0x0;var _0xab2df4=_0x57ca[_0x11fbf8];return _0xab2df4;};'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);};}exports[_0xa57c('0x28')]=function(_0x4c1478,_0x54a18b){var _0x257661={},_0x7d10ec={},_0x5a3e03={'count':0x0,'rows':[]};var _0x12898b=_[_0xa57c('0x29')](db[_0xa57c('0x2a')]['rawAttributes'],function(_0xd779f1){return{'name':_0xd779f1['fieldName'],'type':_0xd779f1[_0xa57c('0x2b')]['key']};});_0x7d10ec[_0xa57c('0x2c')]=_['map'](_0x12898b,_0xa57c('0x27'));_0x7d10ec['query']=_[_0xa57c('0x2d')](_0x4c1478[_0xa57c('0x2e')]);_0x7d10ec[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x7d10ec[_0xa57c('0x2c')],_0x7d10ec[_0xa57c('0x2e')]);_0x257661[_0xa57c('0x31')]=_['intersection'](_0x7d10ec[_0xa57c('0x2c')],qs['fields'](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x257661[_0xa57c('0x31')]=_0x257661['attributes'][_0xa57c('0x33')]?_0x257661['attributes']:_0x7d10ec[_0xa57c('0x2c')];if(!_0x4c1478['query'][_0xa57c('0x34')]('nolimit')){_0x257661[_0xa57c('0x1c')]=qs[_0xa57c('0x1c')](_0x4c1478['query'][_0xa57c('0x1c')]);_0x257661['offset']=qs[_0xa57c('0x19')](_0x4c1478['query'][_0xa57c('0x19')]);}_0x257661[_0xa57c('0x35')]=qs[_0xa57c('0x36')](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x36')]);_0x257661[_0xa57c('0x37')]=qs['filters'](_['pick'](_0x4c1478[_0xa57c('0x2e')],_0x7d10ec[_0xa57c('0x2f')]),_0x12898b);if(_0x4c1478[_0xa57c('0x2e')]['filter']){_0x257661[_0xa57c('0x37')]=_['merge'](_0x257661[_0xa57c('0x37')],{'$or':_[_0xa57c('0x29')](_0x12898b,function(_0x5c8256){if(_0x5c8256['type']!=='VIRTUAL'){var _0x3be888={};_0x3be888[_0x5c8256[_0xa57c('0x27')]]={'$like':'%'+_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x38')]+'%'};return _0x3be888;}})});}_0x257661=_[_0xa57c('0x39')]({},_0x257661,_0x4c1478[_0xa57c('0x3a')]);var _0x5a444a={'where':_0x257661[_0xa57c('0x37')]};return db[_0xa57c('0x2a')]['count'](_0x5a444a)['then'](function(_0x5e10b){_0x5a3e03[_0xa57c('0x1b')]=_0x5e10b;if(_0x4c1478['query'][_0xa57c('0x3b')]){_0x257661[_0xa57c('0x3c')]=[{'all':!![]}];}return db[_0xa57c('0x2a')][_0xa57c('0x3d')](_0x257661);})[_0xa57c('0x21')](function(_0x43c1d7){_0x5a3e03['rows']=_0x43c1d7;return _0x5a3e03;})[_0xa57c('0x21')](respondWithFilteredResult(_0x54a18b,_0x257661))['catch'](handleError(_0x54a18b,null));};exports['show']=function(_0x5b3300,_0x520383){var _0x588199={'raw':![],'where':{'id':_0x5b3300[_0xa57c('0x3e')]['id']}},_0x39b20f={};_0x39b20f[_0xa57c('0x2c')]=_['keys'](db['Integration']['rawAttributes']);_0x39b20f[_0xa57c('0x2e')]=_[_0xa57c('0x2d')](_0x5b3300[_0xa57c('0x2e')]);_0x39b20f[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],_0x39b20f['query']);_0x588199[_0xa57c('0x31')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],qs[_0xa57c('0x32')](_0x5b3300[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x588199['attributes']=_0x588199[_0xa57c('0x31')][_0xa57c('0x33')]?_0x588199[_0xa57c('0x31')]:_0x39b20f[_0xa57c('0x2c')];if(_0x5b3300[_0xa57c('0x2e')]['includeAll']){_0x588199[_0xa57c('0x3c')]=[{'all':!![]}];}_0x588199=_[_0xa57c('0x39')]({},_0x588199,_0x5b3300[_0xa57c('0x3a')]);return db[_0xa57c('0x2a')][_0xa57c('0x3f')](_0x588199)[_0xa57c('0x21')](handleEntityNotFound(_0x520383,null))['then'](respondWithResult(_0x520383,null))[_0xa57c('0x40')](handleError(_0x520383,null));};exports[_0xa57c('0x41')]=function(_0x247906,_0x44ea0a){return db[_0xa57c('0x2a')][_0xa57c('0x41')](_0x247906['body'],{})['then'](respondWithResult(_0x44ea0a,0xc9))['catch'](handleError(_0x44ea0a,null));};exports['update']=function(_0x232675,_0x49492f){if(_0x232675[_0xa57c('0x42')]['id']){delete _0x232675[_0xa57c('0x42')]['id'];}return db['Integration'][_0xa57c('0x3f')]({'where':{'id':_0x232675[_0xa57c('0x3e')]['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x49492f,null))[_0xa57c('0x21')](saveUpdates(_0x232675[_0xa57c('0x42')],null))['then'](respondWithResult(_0x49492f,null))[_0xa57c('0x40')](handleError(_0x49492f,null));};exports[_0xa57c('0x22')]=function(_0x4584e8,_0xd57bac){return db[_0xa57c('0x2a')]['find']({'where':{'id':_0x4584e8[_0xa57c('0x3e')]['id']}})['then'](handleEntityNotFound(_0xd57bac,null))['then'](removeEntity(_0xd57bac,null))[_0xa57c('0x40')](handleError(_0xd57bac,null));};
\ No newline at end of file
index 2b1790f..f8f5ccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5208=['define','integrations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x11d1b4,_0x1bf461){var _0x11687a=function(_0x18ab0c){while(--_0x18ab0c){_0x11d1b4['push'](_0x11d1b4['shift']());}};_0x11687a(++_0x1bf461);}(_0x5208,0x120));var _0x8520=function(_0x5b1097,_0x3ed62f){_0x5b1097=_0x5b1097-0x0;var _0x57979c=_0x5208[_0x5b1097];return _0x57979c;};'use strict';var _=require(_0x8520('0x0'));var util=require(_0x8520('0x1'));var logger=require(_0x8520('0x2'))(_0x8520('0x3'));var moment=require('moment');var BPromise=require(_0x8520('0x4'));var rp=require(_0x8520('0x5'));var fs=require('fs');var path=require(_0x8520('0x6'));var rimraf=require(_0x8520('0x7'));var config=require(_0x8520('0x8'));var attributes=require('./integration.attributes');module['exports']=function(_0x557387,_0x226e76){return _0x557387[_0x8520('0x9')]('Integration',attributes,{'tableName':_0x8520('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x137b=['Integration','integrations','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./integration.attributes','exports','define'];(function(_0xbe3bcc,_0x524fb9){var _0x549ae8=function(_0x328a1d){while(--_0x328a1d){_0xbe3bcc['push'](_0xbe3bcc['shift']());}};_0x549ae8(++_0x524fb9);}(_0x137b,0x147));var _0xb137=function(_0x456a01,_0x221b75){_0x456a01=_0x456a01-0x0;var _0x591772=_0x137b[_0x456a01];return _0x591772;};'use strict';var _=require(_0xb137('0x0'));var util=require(_0xb137('0x1'));var logger=require(_0xb137('0x2'))('api');var moment=require(_0xb137('0x3'));var BPromise=require(_0xb137('0x4'));var rp=require(_0xb137('0x5'));var fs=require('fs');var path=require(_0xb137('0x6'));var rimraf=require('rimraf');var config=require(_0xb137('0x7'));var attributes=require(_0xb137('0x8'));module[_0xb137('0x9')]=function(_0x3f9431,_0x1c2e9f){return _0x3f9431[_0xb137('0xa')](_0xb137('0xb'),attributes,{'tableName':_0xb137('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7714562..fd81504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','Integration,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x3d68e5,_0x2c244a){var _0x1cf252=function(_0x165d3b){while(--_0x165d3b){_0x3d68e5['push'](_0x3d68e5['shift']());}};_0x1cf252(++_0x2c244a);}(_0x5f2f,0x73));var _0xf5f2=function(_0x53a391,_0x40c379){_0x53a391=_0x53a391-0x0;var _0xe8e538=_0x5f2f[_0x53a391];return _0xe8e538;};'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});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('Integration,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x0295=['client','http','then','info','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','Integration,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x22bdc6,_0x368774){var _0x3b22cc=function(_0x232f0d){while(--_0x232f0d){_0x22bdc6['push'](_0x22bdc6['shift']());}};_0x3b22cc(++_0x368774);}(_0x0295,0x1f0));var _0x5029=function(_0x21a1a6,_0x1474bf){_0x21a1a6=_0x21a1a6-0x0;var _0x5cec0e=_0x0295[_0x21a1a6];return _0x5cec0e;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('Integration,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
index 743d7b1..8d75e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x408ef0,_0xba7ff){var _0x13d73c=function(_0x2d3c41){while(--_0x2d3c41){_0x408ef0['push'](_0x408ef0['shift']());}};_0x13d73c(++_0xba7ff);}(_0xef0f,0x168));var _0xfef0=function(_0xaaf207,_0x5cd5c7){_0xaaf207=_0xaaf207-0x0;var _0x319448=_0xef0f[_0xaaf207];return _0x319448;};'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
+var _0x5f2f=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x5f2f,0x73));var _0xf5f2=function(_0x6ff543,_0x5a615b){_0x6ff543=_0x6ff543-0x0;var _0x109c07=_0x5f2f[_0x6ff543];return _0x109c07;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')]('/',auth[_0xf5f2('0xa')](),controller['create']);router[_0xf5f2('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);router[_0xf5f2('0x13')]('/:id',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x14')]);module[_0xf5f2('0x15')]=router;
\ No newline at end of file
index 1eda935..0be01bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa057=['SENT','SENDING','RECEIVED','sequelize','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM'];(function(_0x2bb958,_0xbfadac){var _0xe36c62=function(_0x293176){while(--_0x293176){_0x2bb958['push'](_0x2bb958['shift']());}};_0xe36c62(++_0xbfadac);}(_0xa057,0x111));var _0x7a05=function(_0x283a9b,_0x22b238){_0x283a9b=_0x283a9b-0x0;var _0x4af8f6=_0xa057[_0x283a9b];return _0x4af8f6;};'use strict';var Sequelize=require(_0x7a05('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x7a05('0x1')]},'exitStatus':{'type':Sequelize[_0x7a05('0x1')]},'ticketId':{'type':Sequelize[_0x7a05('0x1')]},'integrationId':{'type':Sequelize[_0x7a05('0x2')]},'contacts':{'type':Sequelize[_0x7a05('0x1')]},'uniqueid':{'type':Sequelize[_0x7a05('0x1')]},'calleridnum':{'type':Sequelize[_0x7a05('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x7a05('0x1')]},'interface':{'type':Sequelize[_0x7a05('0x1')]},'membername':{'type':Sequelize[_0x7a05('0x1')]},'agentcalledAt':{'type':Sequelize[_0x7a05('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x7a05('0x2')]},'agentcomplete':{'type':Sequelize[_0x7a05('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x7a05('0x3')]},'talktime':{'type':Sequelize[_0x7a05('0x2')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x7a05('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x7a05('0x3')]},'agentdump':{'type':Sequelize[_0x7a05('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x7a05('0x1')]},'channel':{'type':Sequelize[_0x7a05('0x1')]},'channelstate':{'type':Sequelize[_0x7a05('0x2')]},'channelstatedesc':{'type':Sequelize[_0x7a05('0x1')]},'connectedlinenum':{'type':Sequelize[_0x7a05('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x7a05('0x1')]},'context':{'type':Sequelize[_0x7a05('0x1')]},'exten':{'type':Sequelize[_0x7a05('0x1')]},'priority':{'type':Sequelize[_0x7a05('0x1')]},'destchannel':{'type':Sequelize[_0x7a05('0x1')]},'destchannelstate':{'type':Sequelize[_0x7a05('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x7a05('0x1')]},'destcalleridnum':{'type':Sequelize[_0x7a05('0x1')]},'destcalleridname':{'type':Sequelize[_0x7a05('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x7a05('0x1')]},'destlanguage':{'type':Sequelize[_0x7a05('0x1')]},'destaccountcode':{'type':Sequelize[_0x7a05('0x1')]},'destcontext':{'type':Sequelize[_0x7a05('0x1')]},'destexten':{'type':Sequelize[_0x7a05('0x1')]},'destpriority':{'type':Sequelize[_0x7a05('0x1')]},'destuniqueid':{'type':Sequelize[_0x7a05('0x1')]},'messageId':{'type':Sequelize[_0x7a05('0x1')]},'inReplyTo':{'type':Sequelize[_0x7a05('0x1')]},'subject':{'type':Sequelize[_0x7a05('0x1')]},'from':{'type':Sequelize[_0x7a05('0x1')]},'to':{'type':Sequelize[_0x7a05('0x1')]},'cc':{'type':Sequelize[_0x7a05('0x1')]},'attachment':{'type':Sequelize[_0x7a05('0x5')]},'html':{'type':Sequelize[_0x7a05('0x5')]},'text':{'type':Sequelize[_0x7a05('0x5')]},'status':{'type':Sequelize[_0x7a05('0x6')](_0x7a05('0x7'),_0x7a05('0x8'),_0x7a05('0x9'),'FAILED')},'url':{'type':Sequelize[_0x7a05('0x1')]},'app':{'type':Sequelize[_0x7a05('0x1')]},'appdata':{'type':Sequelize[_0x7a05('0x1')]},'projectId':{'type':Sequelize[_0x7a05('0x2')]}};
\ No newline at end of file
+var _0xaa68=['INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','FAILED','sequelize','exports','STRING'];(function(_0x36b606,_0xc7e32b){var _0x4da190=function(_0x43ea4b){while(--_0x43ea4b){_0x36b606['push'](_0x36b606['shift']());}};_0x4da190(++_0xc7e32b);}(_0xaa68,0x17e));var _0x8aa6=function(_0x550c48,_0xe21896){_0x550c48=_0x550c48-0x0;var _0x5debf5=_0xaa68[_0x550c48];return _0x5debf5;};'use strict';var Sequelize=require(_0x8aa6('0x0'));module[_0x8aa6('0x1')]={'integration':{'type':Sequelize[_0x8aa6('0x2')]},'eventChannel':{'type':Sequelize[_0x8aa6('0x2')]},'exitStatus':{'type':Sequelize[_0x8aa6('0x2')]},'ticketId':{'type':Sequelize[_0x8aa6('0x2')]},'integrationId':{'type':Sequelize[_0x8aa6('0x3')]},'contacts':{'type':Sequelize[_0x8aa6('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x8aa6('0x2')]},'interface':{'type':Sequelize[_0x8aa6('0x2')]},'membername':{'type':Sequelize[_0x8aa6('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x8aa6('0x4')]},'holdtime':{'type':Sequelize[_0x8aa6('0x3')]},'agentcomplete':{'type':Sequelize[_0x8aa6('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x8aa6('0x4')]},'talktime':{'type':Sequelize[_0x8aa6('0x3')]},'agentacw':{'type':Sequelize[_0x8aa6('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x8aa6('0x3')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x8aa6('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x8aa6('0x4')]},'agentdump':{'type':Sequelize[_0x8aa6('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x8aa6('0x4')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8aa6('0x2')]},'channelstate':{'type':Sequelize[_0x8aa6('0x3')]},'channelstatedesc':{'type':Sequelize[_0x8aa6('0x2')]},'connectedlinenum':{'type':Sequelize[_0x8aa6('0x2')]},'connectedlinename':{'type':Sequelize[_0x8aa6('0x2')]},'language':{'type':Sequelize[_0x8aa6('0x2')]},'accountcode':{'type':Sequelize[_0x8aa6('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x8aa6('0x2')]},'priority':{'type':Sequelize[_0x8aa6('0x2')]},'destchannel':{'type':Sequelize[_0x8aa6('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x8aa6('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x8aa6('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x8aa6('0x2')]},'destlanguage':{'type':Sequelize[_0x8aa6('0x2')]},'destaccountcode':{'type':Sequelize[_0x8aa6('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x8aa6('0x2')]},'destpriority':{'type':Sequelize[_0x8aa6('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x8aa6('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x8aa6('0x2')]},'from':{'type':Sequelize[_0x8aa6('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x8aa6('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0x8aa6('0x6')]},'text':{'type':Sequelize[_0x8aa6('0x6')]},'status':{'type':Sequelize[_0x8aa6('0x7')]('SENT',_0x8aa6('0x8'),_0x8aa6('0x9'),_0x8aa6('0xa'))},'url':{'type':Sequelize[_0x8aa6('0x2')]},'app':{'type':Sequelize[_0x8aa6('0x2')]},'appdata':{'type':Sequelize[_0x8aa6('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 8f2e913..d8a14fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f43=['key','map','query','keys','filters','intersection','model','fields','attributes','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','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','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','apply','reject','update','then','error','stack','name','send','index','IntegrationReport','type'];(function(_0x2bbeda,_0x41c7e2){var _0x243ba6=function(_0x1dc7ce){while(--_0x1dc7ce){_0x2bbeda['push'](_0x2bbeda['shift']());}};_0x243ba6(++_0x41c7e2);}(_0x9f43,0x6a));var _0x39f4=function(_0x35b7d4,_0x5a5c43){_0x35b7d4=_0x35b7d4-0x0;var _0x4e8cee=_0x9f43[_0x35b7d4];return _0x4e8cee;};'use strict';var emlformat=require(_0x39f4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x39f4('0x1'));var jsonpatch=require(_0x39f4('0x2'));var rp=require('request-promise');var moment=require(_0x39f4('0x3'));var BPromise=require(_0x39f4('0x4'));var Mustache=require(_0x39f4('0x5'));var util=require(_0x39f4('0x6'));var path=require(_0x39f4('0x7'));var sox=require(_0x39f4('0x8'));var csv=require(_0x39f4('0x9'));var ejs=require(_0x39f4('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x39f4('0xb'));var squel=require('squel');var crypto=require(_0x39f4('0xc'));var jsforce=require(_0x39f4('0xd'));var deskjs=require(_0x39f4('0xe'));var toCsv=require('to-csv');var querystring=require(_0x39f4('0xf'));var Papa=require(_0x39f4('0x10'));var Redis=require(_0x39f4('0x11'));var authService=require(_0x39f4('0x12'));var qs=require(_0x39f4('0x13'));var as=require(_0x39f4('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x39f4('0x15'))(_0x39f4('0x16'));var utils=require(_0x39f4('0x17'));var config=require(_0x39f4('0x18'));var licenseUtil=require(_0x39f4('0x19'));var db=require(_0x39f4('0x1a'))['db'];function respondWithStatusCode(_0x22f080,_0x3bf91b){_0x3bf91b=_0x3bf91b||0xcc;return function(_0x49400d){if(_0x49400d){return _0x22f080[_0x39f4('0x1b')](_0x3bf91b);}return _0x22f080['status'](_0x3bf91b)[_0x39f4('0x1c')]();};}function respondWithResult(_0x3075c1,_0x2db0fe){_0x2db0fe=_0x2db0fe||0xc8;return function(_0xdb86fc){if(_0xdb86fc){return _0x3075c1['status'](_0x2db0fe)[_0x39f4('0x1d')](_0xdb86fc);}};}function respondWithFilteredResult(_0x24c892,_0x2bc539){return function(_0x3d07d4){if(_0x3d07d4){var _0x15b80a=typeof _0x2bc539[_0x39f4('0x1e')]==='undefined'&&typeof _0x2bc539[_0x39f4('0x1f')]===_0x39f4('0x20');var _0x4eed27=_0x3d07d4[_0x39f4('0x21')];var _0x349c28=_0x15b80a?0x0:_0x2bc539[_0x39f4('0x1e')];var _0x3d9170=_0x15b80a?_0x3d07d4[_0x39f4('0x21')]:_0x2bc539['offset']+_0x2bc539[_0x39f4('0x1f')];var _0x19a2ba;if(_0x3d9170>=_0x4eed27){_0x3d9170=_0x4eed27;_0x19a2ba=0xc8;}else{_0x19a2ba=0xce;}_0x24c892[_0x39f4('0x22')](_0x19a2ba);return _0x24c892['set']('Content-Range',_0x349c28+'-'+_0x3d9170+'/'+_0x4eed27)[_0x39f4('0x1d')](_0x3d07d4);}return null;};}function patchUpdates(_0x3fee8d){return function(_0x115e31){try{jsonpatch[_0x39f4('0x23')](_0x115e31,_0x3fee8d,!![]);}catch(_0x19e698){return BPromise[_0x39f4('0x24')](_0x19e698);}return _0x115e31['save']();};}function saveUpdates(_0xc591ad,_0x221379){return function(_0x346519){if(_0x346519){return _0x346519[_0x39f4('0x25')](_0xc591ad)[_0x39f4('0x26')](function(_0x29cdf3){return _0x29cdf3;});}return null;};}function removeEntity(_0x33a447,_0x1c7758){return function(_0x37a3e3){if(_0x37a3e3){return _0x37a3e3['destroy']()[_0x39f4('0x26')](function(){_0x33a447[_0x39f4('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ad744,_0xfffe71){return function(_0x23e1ef){if(!_0x23e1ef){_0x4ad744[_0x39f4('0x1b')](0x194);}return _0x23e1ef;};}function handleError(_0x465679,_0x37ed5d){_0x37ed5d=_0x37ed5d||0x1f4;return function(_0x3eeff3){logger[_0x39f4('0x27')](_0x3eeff3[_0x39f4('0x28')]);if(_0x3eeff3[_0x39f4('0x29')]){delete _0x3eeff3[_0x39f4('0x29')];}_0x465679[_0x39f4('0x22')](_0x37ed5d)[_0x39f4('0x2a')](_0x3eeff3);};}exports[_0x39f4('0x2b')]=function(_0x318b24,_0x4612b0){var _0x3df5df={},_0x33068c={},_0x39a2ec={'count':0x0,'rows':[]};var _0x5edd8d=_['map'](db[_0x39f4('0x2c')]['rawAttributes'],function(_0x60cff0){return{'name':_0x60cff0['fieldName'],'type':_0x60cff0[_0x39f4('0x2d')][_0x39f4('0x2e')]};});_0x33068c['model']=_[_0x39f4('0x2f')](_0x5edd8d,_0x39f4('0x29'));_0x33068c[_0x39f4('0x30')]=_[_0x39f4('0x31')](_0x318b24['query']);_0x33068c[_0x39f4('0x32')]=_[_0x39f4('0x33')](_0x33068c[_0x39f4('0x34')],_0x33068c[_0x39f4('0x30')]);_0x3df5df['attributes']=_[_0x39f4('0x33')](_0x33068c['model'],qs[_0x39f4('0x35')](_0x318b24[_0x39f4('0x30')]['fields']));_0x3df5df[_0x39f4('0x36')]=_0x3df5df[_0x39f4('0x36')][_0x39f4('0x37')]?_0x3df5df[_0x39f4('0x36')]:_0x33068c['model'];if(!_0x318b24[_0x39f4('0x30')]['hasOwnProperty']('nolimit')){_0x3df5df['limit']=qs[_0x39f4('0x1f')](_0x318b24[_0x39f4('0x30')][_0x39f4('0x1f')]);_0x3df5df[_0x39f4('0x1e')]=qs[_0x39f4('0x1e')](_0x318b24[_0x39f4('0x30')][_0x39f4('0x1e')]);}_0x3df5df[_0x39f4('0x38')]=qs[_0x39f4('0x39')](_0x318b24[_0x39f4('0x30')][_0x39f4('0x39')]);_0x3df5df[_0x39f4('0x3a')]=qs['filters'](_[_0x39f4('0x3b')](_0x318b24[_0x39f4('0x30')],_0x33068c[_0x39f4('0x32')]),_0x5edd8d);if(_0x318b24[_0x39f4('0x30')]['filter']){_0x3df5df[_0x39f4('0x3a')]=_[_0x39f4('0x3c')](_0x3df5df[_0x39f4('0x3a')],{'$or':_['map'](_0x5edd8d,function(_0x593959){if(_0x593959[_0x39f4('0x2d')]!==_0x39f4('0x3d')){var _0x2a9574={};_0x2a9574[_0x593959['name']]={'$like':'%'+_0x318b24[_0x39f4('0x30')][_0x39f4('0x3e')]+'%'};return _0x2a9574;}})});}_0x3df5df=_[_0x39f4('0x3c')]({},_0x3df5df,_0x318b24[_0x39f4('0x3f')]);var _0x4a3182={'where':_0x3df5df[_0x39f4('0x3a')]};return db[_0x39f4('0x2c')][_0x39f4('0x21')](_0x4a3182)[_0x39f4('0x26')](function(_0x5581e7){_0x39a2ec[_0x39f4('0x21')]=_0x5581e7;if(_0x318b24[_0x39f4('0x30')][_0x39f4('0x40')]){_0x3df5df[_0x39f4('0x41')]=[{'all':!![]}];}return db[_0x39f4('0x2c')][_0x39f4('0x42')](_0x3df5df);})[_0x39f4('0x26')](function(_0x4e4828){_0x39a2ec[_0x39f4('0x43')]=_0x4e4828;return _0x39a2ec;})['then'](respondWithFilteredResult(_0x4612b0,_0x3df5df))['catch'](handleError(_0x4612b0,null));};exports[_0x39f4('0x44')]=function(_0x26f202,_0x59ed80){var _0x2bb9fe={'raw':![],'where':{'id':_0x26f202[_0x39f4('0x45')]['id']}},_0x1dc3d7={};_0x1dc3d7[_0x39f4('0x34')]=_[_0x39f4('0x31')](db['IntegrationReport'][_0x39f4('0x46')]);_0x1dc3d7[_0x39f4('0x30')]=_[_0x39f4('0x31')](_0x26f202[_0x39f4('0x30')]);_0x1dc3d7[_0x39f4('0x32')]=_[_0x39f4('0x33')](_0x1dc3d7['model'],_0x1dc3d7[_0x39f4('0x30')]);_0x2bb9fe['attributes']=_['intersection'](_0x1dc3d7[_0x39f4('0x34')],qs[_0x39f4('0x35')](_0x26f202['query'][_0x39f4('0x35')]));_0x2bb9fe[_0x39f4('0x36')]=_0x2bb9fe['attributes'][_0x39f4('0x37')]?_0x2bb9fe[_0x39f4('0x36')]:_0x1dc3d7[_0x39f4('0x34')];if(_0x26f202[_0x39f4('0x30')][_0x39f4('0x40')]){_0x2bb9fe[_0x39f4('0x41')]=[{'all':!![]}];}_0x2bb9fe=_[_0x39f4('0x3c')]({},_0x2bb9fe,_0x26f202['options']);return db[_0x39f4('0x2c')][_0x39f4('0x47')](_0x2bb9fe)['then'](handleEntityNotFound(_0x59ed80,null))[_0x39f4('0x26')](respondWithResult(_0x59ed80,null))[_0x39f4('0x48')](handleError(_0x59ed80,null));};exports['create']=function(_0x1d3978,_0x52cb11){return db[_0x39f4('0x2c')][_0x39f4('0x49')](_0x1d3978[_0x39f4('0x4a')],{})['then'](respondWithResult(_0x52cb11,0xc9))[_0x39f4('0x48')](handleError(_0x52cb11,null));};exports[_0x39f4('0x25')]=function(_0x29212f,_0x20a293){if(_0x29212f[_0x39f4('0x4a')]['id']){delete _0x29212f['body']['id'];}return db[_0x39f4('0x2c')][_0x39f4('0x47')]({'where':{'id':_0x29212f[_0x39f4('0x45')]['id']}})[_0x39f4('0x26')](handleEntityNotFound(_0x20a293,null))['then'](saveUpdates(_0x29212f[_0x39f4('0x4a')],null))[_0x39f4('0x26')](respondWithResult(_0x20a293,null))[_0x39f4('0x48')](handleError(_0x20a293,null));};exports['destroy']=function(_0x389758,_0x4d0ea0){return db['IntegrationReport']['find']({'where':{'id':_0x389758['params']['id']}})[_0x39f4('0x26')](handleEntityNotFound(_0x4d0ea0,null))[_0x39f4('0x26')](removeEntity(_0x4d0ea0,null))[_0x39f4('0x48')](handleError(_0x4d0ea0,null));};exports[_0x39f4('0x4b')]=function(_0x5af979,_0x2b0092){return db[_0x39f4('0x2c')][_0x39f4('0x4b')]()[_0x39f4('0x26')](respondWithResult(_0x2b0092,null))[_0x39f4('0x48')](handleError(_0x2b0092,null));};
\ No newline at end of file
+var _0xbdf5=['send','map','IntegrationReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','keys','length','options','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','Content-Range','apply','reject','save','update','then','end','sendStatus','error','stack','name'];(function(_0x2c1101,_0x1909d9){var _0x56f52f=function(_0x5d7adb){while(--_0x5d7adb){_0x2c1101['push'](_0x2c1101['shift']());}};_0x56f52f(++_0x1909d9);}(_0xbdf5,0x1e7));var _0x5bdf=function(_0x40406a,_0x452b64){_0x40406a=_0x40406a-0x0;var _0x1f4b5f=_0xbdf5[_0x40406a];return _0x1f4b5f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5bdf('0x0'));var zipdir=require(_0x5bdf('0x1'));var jsonpatch=require(_0x5bdf('0x2'));var rp=require('request-promise');var moment=require(_0x5bdf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5bdf('0x4'));var util=require('util');var path=require(_0x5bdf('0x5'));var sox=require(_0x5bdf('0x6'));var csv=require(_0x5bdf('0x7'));var ejs=require(_0x5bdf('0x8'));var fs=require('fs');var fs_extra=require(_0x5bdf('0x9'));var _=require(_0x5bdf('0xa'));var squel=require(_0x5bdf('0xb'));var crypto=require('crypto');var jsforce=require(_0x5bdf('0xc'));var deskjs=require(_0x5bdf('0xd'));var toCsv=require(_0x5bdf('0x7'));var querystring=require(_0x5bdf('0xe'));var Papa=require(_0x5bdf('0xf'));var Redis=require(_0x5bdf('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5bdf('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5bdf('0x12'))(_0x5bdf('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5bdf('0x14'));var db=require(_0x5bdf('0x15'))['db'];function respondWithStatusCode(_0x4635ea,_0x130373){_0x130373=_0x130373||0xcc;return function(_0x27f4ba){if(_0x27f4ba){return _0x4635ea['sendStatus'](_0x130373);}return _0x4635ea[_0x5bdf('0x16')](_0x130373)['end']();};}function respondWithResult(_0x5ddba5,_0x3f2b46){_0x3f2b46=_0x3f2b46||0xc8;return function(_0x10a4e8){if(_0x10a4e8){return _0x5ddba5[_0x5bdf('0x16')](_0x3f2b46)[_0x5bdf('0x17')](_0x10a4e8);}};}function respondWithFilteredResult(_0x15dce7,_0x2cf46c){return function(_0x2a0e19){if(_0x2a0e19){var _0x1ad4f0=typeof _0x2cf46c['offset']===_0x5bdf('0x18')&&typeof _0x2cf46c[_0x5bdf('0x19')]==='undefined';var _0x180ed7=_0x2a0e19['count'];var _0x227ac8=_0x1ad4f0?0x0:_0x2cf46c[_0x5bdf('0x1a')];var _0x48d594=_0x1ad4f0?_0x2a0e19['count']:_0x2cf46c['offset']+_0x2cf46c[_0x5bdf('0x19')];var _0x1bde3e;if(_0x48d594>=_0x180ed7){_0x48d594=_0x180ed7;_0x1bde3e=0xc8;}else{_0x1bde3e=0xce;}_0x15dce7[_0x5bdf('0x16')](_0x1bde3e);return _0x15dce7['set'](_0x5bdf('0x1b'),_0x227ac8+'-'+_0x48d594+'/'+_0x180ed7)[_0x5bdf('0x17')](_0x2a0e19);}return null;};}function patchUpdates(_0x30d430){return function(_0x5c57c6){try{jsonpatch[_0x5bdf('0x1c')](_0x5c57c6,_0x30d430,!![]);}catch(_0x370b1e){return BPromise[_0x5bdf('0x1d')](_0x370b1e);}return _0x5c57c6[_0x5bdf('0x1e')]();};}function saveUpdates(_0x31a038,_0x266dc6){return function(_0x4ca869){if(_0x4ca869){return _0x4ca869[_0x5bdf('0x1f')](_0x31a038)[_0x5bdf('0x20')](function(_0x4283b3){return _0x4283b3;});}return null;};}function removeEntity(_0x1139b5,_0x5bdd60){return function(_0x204784){if(_0x204784){return _0x204784['destroy']()[_0x5bdf('0x20')](function(){_0x1139b5[_0x5bdf('0x16')](0xcc)[_0x5bdf('0x21')]();});}};}function handleEntityNotFound(_0x24d535,_0x59ed00){return function(_0x30e5b8){if(!_0x30e5b8){_0x24d535[_0x5bdf('0x22')](0x194);}return _0x30e5b8;};}function handleError(_0x589076,_0x111342){_0x111342=_0x111342||0x1f4;return function(_0x561308){logger[_0x5bdf('0x23')](_0x561308[_0x5bdf('0x24')]);if(_0x561308[_0x5bdf('0x25')]){delete _0x561308[_0x5bdf('0x25')];}_0x589076['status'](_0x111342)[_0x5bdf('0x26')](_0x561308);};}exports['index']=function(_0x379c68,_0x2a3275){var _0x120214={},_0x6befe={},_0x4264fe={'count':0x0,'rows':[]};var _0x5f859d=_[_0x5bdf('0x27')](db[_0x5bdf('0x28')][_0x5bdf('0x29')],function(_0x1dc899){return{'name':_0x1dc899[_0x5bdf('0x2a')],'type':_0x1dc899[_0x5bdf('0x2b')][_0x5bdf('0x2c')]};});_0x6befe[_0x5bdf('0x2d')]=_[_0x5bdf('0x27')](_0x5f859d,'name');_0x6befe['query']=_['keys'](_0x379c68[_0x5bdf('0x2e')]);_0x6befe[_0x5bdf('0x2f')]=_['intersection'](_0x6befe['model'],_0x6befe[_0x5bdf('0x2e')]);_0x120214['attributes']=_[_0x5bdf('0x30')](_0x6befe['model'],qs[_0x5bdf('0x31')](_0x379c68[_0x5bdf('0x2e')]['fields']));_0x120214[_0x5bdf('0x32')]=_0x120214[_0x5bdf('0x32')]['length']?_0x120214[_0x5bdf('0x32')]:_0x6befe[_0x5bdf('0x2d')];if(!_0x379c68['query'][_0x5bdf('0x33')]('nolimit')){_0x120214[_0x5bdf('0x19')]=qs[_0x5bdf('0x19')](_0x379c68[_0x5bdf('0x2e')][_0x5bdf('0x19')]);_0x120214[_0x5bdf('0x1a')]=qs['offset'](_0x379c68[_0x5bdf('0x2e')]['offset']);}_0x120214[_0x5bdf('0x34')]=qs[_0x5bdf('0x35')](_0x379c68['query']['sort']);_0x120214[_0x5bdf('0x36')]=qs[_0x5bdf('0x2f')](_[_0x5bdf('0x37')](_0x379c68['query'],_0x6befe[_0x5bdf('0x2f')]),_0x5f859d);if(_0x379c68[_0x5bdf('0x2e')][_0x5bdf('0x38')]){_0x120214[_0x5bdf('0x36')]=_[_0x5bdf('0x39')](_0x120214[_0x5bdf('0x36')],{'$or':_['map'](_0x5f859d,function(_0xbca42b){if(_0xbca42b['type']!==_0x5bdf('0x3a')){var _0x1f8c8a={};_0x1f8c8a[_0xbca42b[_0x5bdf('0x25')]]={'$like':'%'+_0x379c68[_0x5bdf('0x2e')]['filter']+'%'};return _0x1f8c8a;}})});}_0x120214=_[_0x5bdf('0x39')]({},_0x120214,_0x379c68['options']);var _0x5299e8={'where':_0x120214['where']};return db[_0x5bdf('0x28')][_0x5bdf('0x3b')](_0x5299e8)[_0x5bdf('0x20')](function(_0x2f76e5){_0x4264fe[_0x5bdf('0x3b')]=_0x2f76e5;if(_0x379c68[_0x5bdf('0x2e')][_0x5bdf('0x3c')]){_0x120214[_0x5bdf('0x3d')]=[{'all':!![]}];}return db[_0x5bdf('0x28')][_0x5bdf('0x3e')](_0x120214);})[_0x5bdf('0x20')](function(_0x50775a){_0x4264fe[_0x5bdf('0x3f')]=_0x50775a;return _0x4264fe;})[_0x5bdf('0x20')](respondWithFilteredResult(_0x2a3275,_0x120214))[_0x5bdf('0x40')](handleError(_0x2a3275,null));};exports[_0x5bdf('0x41')]=function(_0x5c3cb7,_0x1d65bc){var _0x4b35b9={'raw':![],'where':{'id':_0x5c3cb7[_0x5bdf('0x42')]['id']}},_0x4cb335={};_0x4cb335[_0x5bdf('0x2d')]=_[_0x5bdf('0x43')](db[_0x5bdf('0x28')][_0x5bdf('0x29')]);_0x4cb335['query']=_[_0x5bdf('0x43')](_0x5c3cb7[_0x5bdf('0x2e')]);_0x4cb335[_0x5bdf('0x2f')]=_[_0x5bdf('0x30')](_0x4cb335[_0x5bdf('0x2d')],_0x4cb335['query']);_0x4b35b9[_0x5bdf('0x32')]=_[_0x5bdf('0x30')](_0x4cb335[_0x5bdf('0x2d')],qs['fields'](_0x5c3cb7[_0x5bdf('0x2e')][_0x5bdf('0x31')]));_0x4b35b9[_0x5bdf('0x32')]=_0x4b35b9['attributes'][_0x5bdf('0x44')]?_0x4b35b9['attributes']:_0x4cb335[_0x5bdf('0x2d')];if(_0x5c3cb7['query'][_0x5bdf('0x3c')]){_0x4b35b9[_0x5bdf('0x3d')]=[{'all':!![]}];}_0x4b35b9=_[_0x5bdf('0x39')]({},_0x4b35b9,_0x5c3cb7[_0x5bdf('0x45')]);return db['IntegrationReport']['find'](_0x4b35b9)[_0x5bdf('0x20')](handleEntityNotFound(_0x1d65bc,null))['then'](respondWithResult(_0x1d65bc,null))['catch'](handleError(_0x1d65bc,null));};exports[_0x5bdf('0x46')]=function(_0x2c5079,_0x330a04){return db['IntegrationReport'][_0x5bdf('0x46')](_0x2c5079[_0x5bdf('0x47')],{})[_0x5bdf('0x20')](respondWithResult(_0x330a04,0xc9))[_0x5bdf('0x40')](handleError(_0x330a04,null));};exports[_0x5bdf('0x1f')]=function(_0x1e9ff6,_0x32a762){if(_0x1e9ff6[_0x5bdf('0x47')]['id']){delete _0x1e9ff6['body']['id'];}return db[_0x5bdf('0x28')][_0x5bdf('0x48')]({'where':{'id':_0x1e9ff6[_0x5bdf('0x42')]['id']}})[_0x5bdf('0x20')](handleEntityNotFound(_0x32a762,null))[_0x5bdf('0x20')](saveUpdates(_0x1e9ff6[_0x5bdf('0x47')],null))['then'](respondWithResult(_0x32a762,null))[_0x5bdf('0x40')](handleError(_0x32a762,null));};exports[_0x5bdf('0x49')]=function(_0x32fe18,_0x5e9bd6){return db[_0x5bdf('0x28')][_0x5bdf('0x48')]({'where':{'id':_0x32fe18[_0x5bdf('0x42')]['id']}})[_0x5bdf('0x20')](handleEntityNotFound(_0x5e9bd6,null))['then'](removeEntity(_0x5e9bd6,null))[_0x5bdf('0x40')](handleError(_0x5e9bd6,null));};exports[_0x5bdf('0x4a')]=function(_0x5d6725,_0x5615c3){return db[_0x5bdf('0x28')]['describe']()['then'](respondWithResult(_0x5615c3,null))[_0x5bdf('0x40')](handleError(_0x5615c3,null));};
\ No newline at end of file
index fa9fed1..11e99f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7acc=['exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./integrationReport.attributes'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x7acc,0xac));var _0xc7ac=function(_0x8bd1af,_0x3fdab7){_0x8bd1af=_0x8bd1af-0x0;var _0x24cfa9=_0x7acc[_0x8bd1af];return _0x24cfa9;};'use strict';var _=require(_0xc7ac('0x0'));var util=require(_0xc7ac('0x1'));var logger=require(_0xc7ac('0x2'))(_0xc7ac('0x3'));var moment=require(_0xc7ac('0x4'));var BPromise=require(_0xc7ac('0x5'));var rp=require(_0xc7ac('0x6'));var fs=require('fs');var path=require(_0xc7ac('0x7'));var rimraf=require('rimraf');var config=require(_0xc7ac('0x8'));var attributes=require(_0xc7ac('0x9'));module[_0xc7ac('0xa')]=function(_0x3ca1d2,_0x4fc7fc){return _0x3ca1d2[_0xc7ac('0xb')](_0xc7ac('0xc'),attributes,{'tableName':_0xc7ac('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f82=['moment','bluebird','path','rimraf','./integrationReport.attributes','exports','IntegrationReport','report_integration','lodash','api'];(function(_0x614616,_0x4f2de5){var _0x52fd27=function(_0xd987e5){while(--_0xd987e5){_0x614616['push'](_0x614616['shift']());}};_0x52fd27(++_0x4f2de5);}(_0x0f82,0xe4));var _0x20f8=function(_0x26cf90,_0x50702d){_0x26cf90=_0x26cf90-0x0;var _0x3e13f6=_0x0f82[_0x26cf90];return _0x3e13f6;};'use strict';var _=require(_0x20f8('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x20f8('0x1'));var moment=require(_0x20f8('0x2'));var BPromise=require(_0x20f8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x20f8('0x4'));var rimraf=require(_0x20f8('0x5'));var config=require('../../config/environment');var attributes=require(_0x20f8('0x6'));module[_0x20f8('0x7')]=function(_0x1a0a6f,_0x4ad5e4){return _0x1a0a6f['define'](_0x20f8('0x8'),attributes,{'tableName':_0x20f8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a54bcf..4539267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','IntegrationReport,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring'];(function(_0x16dbcd,_0x274516){var _0x34706e=function(_0x43433d){while(--_0x43433d){_0x16dbcd['push'](_0x16dbcd['shift']());}};_0x34706e(++_0x274516);}(_0x4137,0xf8));var _0x7413=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x4137[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var moment=require(_0x7413('0x2'));var BPromise=require(_0x7413('0x3'));var rs=require(_0x7413('0x4'));var fs=require('fs');var Redis=require(_0x7413('0x5'));var db=require(_0x7413('0x6'))['db'];var utils=require(_0x7413('0x7'));var logger=require(_0x7413('0x8'))(_0x7413('0x9'));var config=require(_0x7413('0xa'));var jayson=require(_0x7413('0xb'));var client=jayson['client'][_0x7413('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x188d89,_0x5b39ac,_0x15af0d){return new BPromise(function(_0x5f4cd0,_0x3236ec){return client[_0x7413('0xd')](_0x188d89,_0x15af0d)['then'](function(_0x422bf5){logger[_0x7413('0xe')]('IntegrationReport,\x20%s,\x20%s',_0x5b39ac,_0x7413('0xf'));logger[_0x7413('0x10')](_0x7413('0x11'),_0x5b39ac,_0x7413('0xf'),JSON[_0x7413('0x12')](_0x422bf5));if(_0x422bf5['error']){if(_0x422bf5[_0x7413('0x13')][_0x7413('0x14')]===0x1f4){logger['error'](_0x7413('0x15'),_0x5b39ac,_0x422bf5[_0x7413('0x13')][_0x7413('0x16')]);return _0x3236ec(_0x422bf5['error']['message']);}logger['error'](_0x7413('0x15'),_0x5b39ac,_0x422bf5[_0x7413('0x13')]['message']);return _0x5f4cd0(_0x422bf5[_0x7413('0x13')][_0x7413('0x16')]);}else{logger['info'](_0x7413('0x15'),_0x5b39ac,'request\x20sent');_0x5f4cd0(_0x422bf5['result'][_0x7413('0x16')]);}})['catch'](function(_0x195c72){logger['error'](_0x7413('0x15'),_0x5b39ac,_0x195c72);_0x3236ec(_0x195c72);});});}
\ 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','IntegrationReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3e2c1e,_0x1e8d40){var _0x1c6666=function(_0x190b73){while(--_0x190b73){_0x3e2c1e['push'](_0x3e2c1e['shift']());}};_0x1c6666(++_0x1e8d40);}(_0xadb5,0xad));var _0x5adb=function(_0x5a582a,_0x3c8ca5){_0x5a582a=_0x5a582a-0x0;var _0x4d516f=_0xadb5[_0x5a582a];return _0x4d516f;};'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
index bab8cd3..081903d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ed=['path','express','Router','../../components/auth/service','../../components/interaction/service','./interval.controller','get','isAuthenticated','/:id','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','destroy','exports','util'];(function(_0x2393c0,_0x5d5d61){var _0x188aa9=function(_0x330de9){while(--_0x330de9){_0x2393c0['push'](_0x2393c0['shift']());}};_0x188aa9(++_0x5d5d61);}(_0xf7ed,0x1a1));var _0xdf7e=function(_0x39285d,_0x4e7c32){_0x39285d=_0x39285d-0x0;var _0x5b809b=_0xf7ed[_0x39285d];return _0x5b809b;};'use strict';var multer=require('multer');var util=require(_0xdf7e('0x0'));var path=require(_0xdf7e('0x1'));var timeout=require('connect-timeout');var express=require(_0xdf7e('0x2'));var router=express[_0xdf7e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdf7e('0x4'));var interaction=require(_0xdf7e('0x5'));var config=require('../../config/environment');var controller=require(_0xdf7e('0x6'));router[_0xdf7e('0x7')]('/',auth[_0xdf7e('0x8')](),controller['index']);router[_0xdf7e('0x7')](_0xdf7e('0x9'),auth[_0xdf7e('0x8')](),controller[_0xdf7e('0xa')]);router['get'](_0xdf7e('0xb'),auth[_0xdf7e('0x8')](),controller[_0xdf7e('0xc')]);router[_0xdf7e('0xd')]('/',auth[_0xdf7e('0x8')](),controller[_0xdf7e('0xe')]);router[_0xdf7e('0xd')](_0xdf7e('0xb'),auth[_0xdf7e('0x8')](),controller[_0xdf7e('0xf')]);router[_0xdf7e('0xd')](_0xdf7e('0x10'),auth[_0xdf7e('0x8')](),controller[_0xdf7e('0x11')]);router[_0xdf7e('0x12')]('/:id',auth[_0xdf7e('0x8')](),controller['update']);router[_0xdf7e('0x13')](_0xdf7e('0x9'),auth['isAuthenticated'](),controller[_0xdf7e('0x14')]);module[_0xdf7e('0x15')]=router;
\ No newline at end of file
+var _0xf611=['delete','destroy','exports','util','path','connect-timeout','../../components/auth/service','../../config/environment','./interval.controller','index','get','/:id','isAuthenticated','/:id/sub_intervals','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update'];(function(_0xcf96cf,_0x490093){var _0x977f4a=function(_0x4c9a22){while(--_0x4c9a22){_0xcf96cf['push'](_0xcf96cf['shift']());}};_0x977f4a(++_0x490093);}(_0xf611,0x7b));var _0x1f61=function(_0x74892f,_0x1e981b){_0x74892f=_0x74892f-0x0;var _0x10ee61=_0xf611[_0x74892f];return _0x10ee61;};'use strict';var multer=require('multer');var util=require(_0x1f61('0x0'));var path=require(_0x1f61('0x1'));var timeout=require(_0x1f61('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1f61('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x1f61('0x4'));var controller=require(_0x1f61('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x1f61('0x6')]);router[_0x1f61('0x7')](_0x1f61('0x8'),auth[_0x1f61('0x9')](),controller['show']);router[_0x1f61('0x7')](_0x1f61('0xa'),auth[_0x1f61('0x9')](),controller['getIntervals']);router[_0x1f61('0xb')]('/',auth[_0x1f61('0x9')](),controller['create']);router['post'](_0x1f61('0xa'),auth[_0x1f61('0x9')](),controller[_0x1f61('0xc')]);router[_0x1f61('0xb')](_0x1f61('0xd'),auth[_0x1f61('0x9')](),controller[_0x1f61('0xe')]);router[_0x1f61('0xf')]('/:id',auth[_0x1f61('0x9')](),controller[_0x1f61('0x10')]);router[_0x1f61('0x11')](_0x1f61('0x8'),auth[_0x1f61('0x9')](),controller[_0x1f61('0x12')]);module[_0x1f61('0x13')]=router;
\ No newline at end of file
index 7bf7f9e..4bf4737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf4=['exports','STRING','sequelize'];(function(_0x30dad4,_0x228d6b){var _0x12221d=function(_0x2e1835){while(--_0x2e1835){_0x30dad4['push'](_0x30dad4['shift']());}};_0x12221d(++_0x228d6b);}(_0x6cf4,0xb3));var _0x46cf=function(_0x35e92e,_0x21581b){_0x35e92e=_0x35e92e-0x0;var _0x1205a8=_0x6cf4[_0x35e92e];return _0x1205a8;};'use strict';var Sequelize=require(_0x46cf('0x0'));module[_0x46cf('0x1')]={'name':{'type':Sequelize[_0x46cf('0x2')]},'description':{'type':Sequelize[_0x46cf('0x2')]},'interval':{'type':Sequelize[_0x46cf('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xff5e=['STRING','sequelize','exports'];(function(_0x31faab,_0x43c769){var _0x38fb39=function(_0x25f565){while(--_0x25f565){_0x31faab['push'](_0x31faab['shift']());}};_0x38fb39(++_0x43c769);}(_0xff5e,0x76));var _0xeff5=function(_0x52c23a,_0x1a705b){_0x52c23a=_0x52c23a-0x0;var _0x1d073b=_0xff5e[_0x52c23a];return _0x1d073b;};'use strict';var Sequelize=require(_0xeff5('0x0'));module[_0xeff5('0x1')]={'name':{'type':Sequelize[_0xeff5('0x2')]},'description':{'type':Sequelize[_0xeff5('0x2')]},'interval':{'type':Sequelize[_0xeff5('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 37cc4dd..2d700bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7612=['querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','offset','limit','undefined','count','set','apply','save','then','destroy','get','Intervals','error','name','send','index','map','Interval','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','options','includeAll','include','catch','show','params','merge','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addInterval','IntervalId','findOne','pick','getIntervals','transaction','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x7612,0x14e));var _0x2761=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0x7612[_0x33d4a2];return _0x2c793f;};'use strict';var emlformat=require(_0x2761('0x0'));var rimraf=require(_0x2761('0x1'));var zipdir=require(_0x2761('0x2'));var jsonpatch=require(_0x2761('0x3'));var rp=require(_0x2761('0x4'));var moment=require(_0x2761('0x5'));var BPromise=require(_0x2761('0x6'));var Mustache=require(_0x2761('0x7'));var util=require(_0x2761('0x8'));var path=require(_0x2761('0x9'));var sox=require(_0x2761('0xa'));var csv=require('to-csv');var ejs=require(_0x2761('0xb'));var fs=require('fs');var fs_extra=require(_0x2761('0xc'));var _=require(_0x2761('0xd'));var squel=require(_0x2761('0xe'));var crypto=require(_0x2761('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x2761('0x10'));var toCsv=require(_0x2761('0x11'));var querystring=require(_0x2761('0x12'));var Papa=require('papaparse');var Redis=require(_0x2761('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x2761('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2761('0x15'));var logger=require(_0x2761('0x16'))(_0x2761('0x17'));var utils=require(_0x2761('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2761('0x19'));var db=require(_0x2761('0x1a'))['db'];var extensions=require(_0x2761('0x1b'));function respondWithStatusCode(_0x525b49,_0x3de39d){_0x3de39d=_0x3de39d||0xcc;return function(_0x5111b2){if(_0x5111b2){return _0x525b49[_0x2761('0x1c')](_0x3de39d);}return _0x525b49['status'](_0x3de39d)['end']();};}function respondWithResult(_0x21d031,_0x63f3b6){_0x63f3b6=_0x63f3b6||0xc8;return function(_0x4e425a){if(_0x4e425a){return _0x21d031[_0x2761('0x1d')](_0x63f3b6)['json'](_0x4e425a);}};}function respondWithFilteredResult(_0x5a1dba,_0x50a92c){return function(_0xda6146){if(_0xda6146){var _0x190b47=typeof _0x50a92c[_0x2761('0x1e')]==='undefined'&&typeof _0x50a92c[_0x2761('0x1f')]===_0x2761('0x20');var _0x2c5786=_0xda6146['count'];var _0x277f67=_0x190b47?0x0:_0x50a92c[_0x2761('0x1e')];var _0x44cdf6=_0x190b47?_0xda6146[_0x2761('0x21')]:_0x50a92c[_0x2761('0x1e')]+_0x50a92c['limit'];var _0x5430a2;if(_0x44cdf6>=_0x2c5786){_0x44cdf6=_0x2c5786;_0x5430a2=0xc8;}else{_0x5430a2=0xce;}_0x5a1dba[_0x2761('0x1d')](_0x5430a2);return _0x5a1dba[_0x2761('0x22')]('Content-Range',_0x277f67+'-'+_0x44cdf6+'/'+_0x2c5786)['json'](_0xda6146);}return null;};}function patchUpdates(_0x582700){return function(_0x4025c8){try{jsonpatch[_0x2761('0x23')](_0x4025c8,_0x582700,!![]);}catch(_0x5bd8b9){return BPromise['reject'](_0x5bd8b9);}return _0x4025c8[_0x2761('0x24')]();};}function saveUpdates(_0x4c98b9,_0x44cc24){return function(_0x588aa3){if(_0x588aa3){return _0x588aa3['update'](_0x4c98b9)[_0x2761('0x25')](function(_0x568e95){return _0x568e95;});}return null;};}function removeEntity(_0x4bba12,_0xcae92){return function(_0x533fc8){if(_0x533fc8){return _0x533fc8[_0x2761('0x26')]()[_0x2761('0x25')](function(){var _0x370ac8=_0x533fc8[_0x2761('0x27')]({'plain':!![]});var _0x54c5c6=_0x2761('0x28');return db['UserProfileResource'][_0x2761('0x26')]({'where':{'type':_0x54c5c6,'resourceId':_0x370ac8['id']}})[_0x2761('0x25')](function(){return _0x533fc8;});})[_0x2761('0x25')](function(){_0x4bba12[_0x2761('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e9ce9,_0x5e2405){return function(_0x3cea6b){if(!_0x3cea6b){_0x5e9ce9[_0x2761('0x1c')](0x194);}return _0x3cea6b;};}function handleError(_0x183801,_0x4b6697){_0x4b6697=_0x4b6697||0x1f4;return function(_0x3896e6){logger[_0x2761('0x29')](_0x3896e6['stack']);if(_0x3896e6['name']){delete _0x3896e6[_0x2761('0x2a')];}_0x183801['status'](_0x4b6697)[_0x2761('0x2b')](_0x3896e6);};}exports[_0x2761('0x2c')]=function(_0x47cb28,_0x3bc920){var _0x37315b={},_0x5c8ca7={},_0x40cab3={'count':0x0,'rows':[]};var _0x40b697=_[_0x2761('0x2d')](db[_0x2761('0x2e')][_0x2761('0x2f')],function(_0x65ee16){return{'name':_0x65ee16[_0x2761('0x30')],'type':_0x65ee16[_0x2761('0x31')]['key']};});_0x5c8ca7[_0x2761('0x32')]=_['map'](_0x40b697,_0x2761('0x2a'));_0x5c8ca7['query']=_[_0x2761('0x33')](_0x47cb28[_0x2761('0x34')]);_0x5c8ca7[_0x2761('0x35')]=_[_0x2761('0x36')](_0x5c8ca7[_0x2761('0x32')],_0x5c8ca7[_0x2761('0x34')]);_0x37315b[_0x2761('0x37')]=_['intersection'](_0x5c8ca7['model'],qs[_0x2761('0x38')](_0x47cb28[_0x2761('0x34')][_0x2761('0x38')]));_0x37315b[_0x2761('0x37')]=_0x37315b[_0x2761('0x37')][_0x2761('0x39')]?_0x37315b['attributes']:_0x5c8ca7[_0x2761('0x32')];if(!_0x47cb28['query']['hasOwnProperty'](_0x2761('0x3a'))){_0x37315b[_0x2761('0x1f')]=qs[_0x2761('0x1f')](_0x47cb28[_0x2761('0x34')][_0x2761('0x1f')]);_0x37315b[_0x2761('0x1e')]=qs[_0x2761('0x1e')](_0x47cb28[_0x2761('0x34')]['offset']);}_0x37315b[_0x2761('0x3b')]=qs[_0x2761('0x3c')](_0x47cb28[_0x2761('0x34')][_0x2761('0x3c')]);_0x37315b[_0x2761('0x3d')]=qs['filters'](_['pick'](_0x47cb28[_0x2761('0x34')],_0x5c8ca7[_0x2761('0x35')]),_0x40b697);if(_0x47cb28[_0x2761('0x34')][_0x2761('0x3e')]){_0x37315b[_0x2761('0x3d')]=_['merge'](_0x37315b[_0x2761('0x3d')],{'$or':_['map'](_0x40b697,function(_0x257037){if(_0x257037['type']!=='VIRTUAL'){var _0x2642e7={};_0x2642e7[_0x257037[_0x2761('0x2a')]]={'$like':'%'+_0x47cb28[_0x2761('0x34')][_0x2761('0x3e')]+'%'};return _0x2642e7;}})});}_0x37315b=_['merge']({},_0x37315b,_0x47cb28[_0x2761('0x3f')]);var _0x35b589={'where':_0x37315b[_0x2761('0x3d')]};return db[_0x2761('0x2e')][_0x2761('0x21')](_0x35b589)[_0x2761('0x25')](function(_0x75d1bc){_0x40cab3[_0x2761('0x21')]=_0x75d1bc;if(_0x47cb28['query'][_0x2761('0x40')]){_0x37315b[_0x2761('0x41')]=[{'all':!![]}];}return db[_0x2761('0x2e')]['findAll'](_0x37315b);})[_0x2761('0x25')](function(_0x340bb9){_0x40cab3['rows']=_0x340bb9;return _0x40cab3;})[_0x2761('0x25')](respondWithFilteredResult(_0x3bc920,_0x37315b))[_0x2761('0x42')](handleError(_0x3bc920,null));};exports[_0x2761('0x43')]=function(_0x5687e3,_0x6dcf41){var _0x153250={'raw':!![],'where':{'id':_0x5687e3[_0x2761('0x44')]['id']}},_0x1ea7e4={};_0x1ea7e4[_0x2761('0x32')]=_[_0x2761('0x33')](db[_0x2761('0x2e')]['rawAttributes']);_0x1ea7e4[_0x2761('0x34')]=_['keys'](_0x5687e3[_0x2761('0x34')]);_0x1ea7e4[_0x2761('0x35')]=_['intersection'](_0x1ea7e4[_0x2761('0x32')],_0x1ea7e4[_0x2761('0x34')]);_0x153250[_0x2761('0x37')]=_[_0x2761('0x36')](_0x1ea7e4['model'],qs[_0x2761('0x38')](_0x5687e3[_0x2761('0x34')][_0x2761('0x38')]));_0x153250['attributes']=_0x153250[_0x2761('0x37')][_0x2761('0x39')]?_0x153250['attributes']:_0x1ea7e4[_0x2761('0x32')];if(_0x5687e3[_0x2761('0x34')][_0x2761('0x40')]){_0x153250[_0x2761('0x41')]=[{'all':!![]}];}_0x153250=_[_0x2761('0x45')]({},_0x153250,_0x5687e3[_0x2761('0x3f')]);return db['Interval'][_0x2761('0x46')](_0x153250)[_0x2761('0x25')](handleEntityNotFound(_0x6dcf41,null))[_0x2761('0x25')](respondWithResult(_0x6dcf41,null))[_0x2761('0x42')](handleError(_0x6dcf41,null));};exports['create']=function(_0x35a656,_0x2f9e03){return db[_0x2761('0x2e')]['create'](_0x35a656[_0x2761('0x47')],{})[_0x2761('0x25')](function(_0x1cd0dc){var _0xc1f7ae=_0x35a656[_0x2761('0x48')][_0x2761('0x27')]({'plain':!![]});if(!_0xc1f7ae)throw new Error(_0x2761('0x49'));if(_0xc1f7ae[_0x2761('0x4a')]===_0x2761('0x48')){var _0x1b0809=_0x1cd0dc[_0x2761('0x27')]({'plain':!![]});var _0x3a86b4=_0x2761('0x28');return db['UserProfileSection'][_0x2761('0x46')]({'where':{'name':_0x3a86b4,'userProfileId':_0xc1f7ae[_0x2761('0x4b')]},'raw':!![]})[_0x2761('0x25')](function(_0x396bc3){if(_0x396bc3&&_0x396bc3[_0x2761('0x4c')]===0x0){return db[_0x2761('0x4d')][_0x2761('0x4e')]({'name':_0x1b0809['name'],'resourceId':_0x1b0809['id'],'type':_0x396bc3[_0x2761('0x2a')],'sectionId':_0x396bc3['id']},{})[_0x2761('0x25')](function(){return _0x1cd0dc;});}else{return _0x1cd0dc;}})[_0x2761('0x42')](function(_0xa53497){logger['error'](_0x2761('0x4f'),_0xa53497);throw _0xa53497;});}return _0x1cd0dc;})[_0x2761('0x25')](respondWithResult(_0x2f9e03,0xc9))['catch'](handleError(_0x2f9e03,null));};exports[_0x2761('0x50')]=function(_0x213932,_0x213a7a){if(_0x213932[_0x2761('0x47')]['id']){delete _0x213932[_0x2761('0x47')]['id'];}return db[_0x2761('0x2e')][_0x2761('0x46')]({'where':{'id':_0x213932[_0x2761('0x44')]['id']}})['then'](handleEntityNotFound(_0x213a7a,null))[_0x2761('0x25')](saveUpdates(_0x213932[_0x2761('0x47')],null))[_0x2761('0x25')](respondWithResult(_0x213a7a,null))[_0x2761('0x42')](handleError(_0x213a7a,null));};exports[_0x2761('0x26')]=function(_0xef71b6,_0x5afce0){return db[_0x2761('0x2e')][_0x2761('0x46')]({'where':{'id':_0xef71b6[_0x2761('0x44')]['id']}})['then'](handleEntityNotFound(_0x5afce0,null))[_0x2761('0x25')](removeEntity(_0x5afce0,null))[_0x2761('0x42')](handleError(_0x5afce0,null));};exports[_0x2761('0x51')]=function(_0x64d9d1,_0x4466d4,_0x258db1){if(_0x64d9d1[_0x2761('0x47')]['id']){delete _0x64d9d1['body']['id'];}return db[_0x2761('0x2e')][_0x2761('0x46')]({'where':{'id':_0x64d9d1[_0x2761('0x44')]['id']}})['then'](handleEntityNotFound(_0x4466d4,null))[_0x2761('0x25')](function(_0x175bdd){if(_0x175bdd){_0x64d9d1['body'][_0x2761('0x52')]=_0x175bdd['id'];return db[_0x2761('0x2e')]['create'](_0x64d9d1[_0x2761('0x47')]);}})[_0x2761('0x25')](respondWithResult(_0x4466d4,null))['catch'](handleError(_0x4466d4,null));};exports['getIntervals']=function(_0x1e44ca,_0x552f0f,_0x197ff5){var _0x2c6f3d={};var _0x4fb87d={};var _0x3505eb;var _0x437c9c;return db[_0x2761('0x2e')][_0x2761('0x53')]({'where':{'id':_0x1e44ca[_0x2761('0x44')]['id']}})[_0x2761('0x25')](handleEntityNotFound(_0x552f0f,null))['then'](function(_0x166d9e){if(_0x166d9e){_0x3505eb=_0x166d9e;_0x4fb87d[_0x2761('0x32')]=_['keys'](db[_0x2761('0x2e')]['rawAttributes']);_0x4fb87d[_0x2761('0x34')]=_['keys'](_0x1e44ca['query']);_0x4fb87d[_0x2761('0x35')]=_['intersection'](_0x4fb87d[_0x2761('0x32')],_0x4fb87d['query']);_0x2c6f3d[_0x2761('0x37')]=_[_0x2761('0x36')](_0x4fb87d['model'],qs['fields'](_0x1e44ca[_0x2761('0x34')][_0x2761('0x38')]));_0x2c6f3d[_0x2761('0x37')]=_0x2c6f3d[_0x2761('0x37')][_0x2761('0x39')]?_0x2c6f3d[_0x2761('0x37')]:_0x4fb87d[_0x2761('0x32')];_0x2c6f3d[_0x2761('0x3b')]=qs['sort'](_0x1e44ca[_0x2761('0x34')]['sort']);_0x2c6f3d[_0x2761('0x3d')]=qs[_0x2761('0x35')](_[_0x2761('0x54')](_0x1e44ca[_0x2761('0x34')],_0x4fb87d[_0x2761('0x35')]));if(_0x1e44ca[_0x2761('0x34')][_0x2761('0x3e')]){_0x2c6f3d[_0x2761('0x3d')]=_[_0x2761('0x45')](_0x2c6f3d[_0x2761('0x3d')],{'$or':_[_0x2761('0x2d')](_0x2c6f3d[_0x2761('0x37')],function(_0x27355d){var _0xb4023f={};_0xb4023f[_0x27355d]={'$like':'%'+_0x1e44ca[_0x2761('0x34')]['filter']+'%'};return _0xb4023f;})});}_0x2c6f3d=_[_0x2761('0x45')]({},_0x2c6f3d,_0x1e44ca[_0x2761('0x3f')]);return _0x3505eb[_0x2761('0x55')](_0x2c6f3d);}})[_0x2761('0x25')](function(_0x14c134){if(_0x14c134){_0x437c9c=_0x14c134['length'];if(!_0x1e44ca[_0x2761('0x34')]['hasOwnProperty'](_0x2761('0x3a'))){_0x2c6f3d[_0x2761('0x1f')]=qs[_0x2761('0x1f')](_0x1e44ca['query']['limit']);_0x2c6f3d[_0x2761('0x1e')]=qs[_0x2761('0x1e')](_0x1e44ca[_0x2761('0x34')][_0x2761('0x1e')]);}return _0x3505eb[_0x2761('0x55')](_0x2c6f3d);}})[_0x2761('0x25')](function(_0x1d38eb){if(_0x1d38eb){return _0x1d38eb?{'count':_0x437c9c,'rows':_0x1d38eb}:null;}})[_0x2761('0x25')](respondWithResult(_0x552f0f,null))['catch'](handleError(_0x552f0f,null));};exports['addIntervals']=function(_0x559c09,_0x3ebb37,_0x1ac279){return db[_0x2761('0x2e')][_0x2761('0x53')]({'where':{'id':_0x559c09['params']['id']}})[_0x2761('0x25')](handleEntityNotFound(_0x3ebb37,null))[_0x2761('0x25')](function(_0x5adc47){if(_0x5adc47){return db['sequelize'][_0x2761('0x56')](function(_0x1865df){return db[_0x2761('0x2e')][_0x2761('0x26')]({'where':{'IntervalId':_0x559c09[_0x2761('0x44')]['id']},'transaction':_0x1865df})['then'](function(_0x16efb8){var _0x9bc38a=_['map'](_0x559c09[_0x2761('0x47')],function(_0x214e94){delete _0x214e94['id'];_0x214e94[_0x2761('0x52')]=_0x559c09[_0x2761('0x44')]['id'];return _0x214e94;});return db[_0x2761('0x2e')]['bulkCreate'](_0x9bc38a,{'transaction':_0x1865df});});})[_0x2761('0x25')](function(){return db[_0x2761('0x2e')][_0x2761('0x57')]({'where':{'IntervalId':_0x559c09[_0x2761('0x44')]['id']}});});}})[_0x2761('0x25')](respondWithResult(_0x3ebb37,null))[_0x2761('0x42')](handleError(_0x3ebb37,null));};
\ No newline at end of file
+var _0xf49e=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../components/extensions/rewrite','sendStatus','end','status','undefined','count','offset','set','json','apply','update','then','destroy','UserProfileResource','error','stack','name','index','Interval','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Intervals','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','nolimit','addIntervals','sequelize','bulkCreate','eml-format','zip-dir'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0xf49e,0x16e));var _0xef49=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf49e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xef49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xef49('0x1'));var jsonpatch=require(_0xef49('0x2'));var rp=require(_0xef49('0x3'));var moment=require(_0xef49('0x4'));var BPromise=require(_0xef49('0x5'));var Mustache=require(_0xef49('0x6'));var util=require('util');var path=require(_0xef49('0x7'));var sox=require(_0xef49('0x8'));var csv=require('to-csv');var ejs=require(_0xef49('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xef49('0xa'));var squel=require('squel');var crypto=require(_0xef49('0xb'));var jsforce=require(_0xef49('0xc'));var deskjs=require(_0xef49('0xd'));var toCsv=require(_0xef49('0xe'));var querystring=require(_0xef49('0xf'));var Papa=require(_0xef49('0x10'));var Redis=require(_0xef49('0x11'));var authService=require(_0xef49('0x12'));var qs=require(_0xef49('0x13'));var as=require(_0xef49('0x14'));var hardwareService=require(_0xef49('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xef49('0x16'));var config=require(_0xef49('0x17'));var licenseUtil=require(_0xef49('0x18'));var db=require('../../mysqldb')['db'];var extensions=require(_0xef49('0x19'));function respondWithStatusCode(_0x3bb999,_0x4fc5b7){_0x4fc5b7=_0x4fc5b7||0xcc;return function(_0x35c02e){if(_0x35c02e){return _0x3bb999[_0xef49('0x1a')](_0x4fc5b7);}return _0x3bb999['status'](_0x4fc5b7)[_0xef49('0x1b')]();};}function respondWithResult(_0x4f6416,_0x1d75a3){_0x1d75a3=_0x1d75a3||0xc8;return function(_0x4b4141){if(_0x4b4141){return _0x4f6416[_0xef49('0x1c')](_0x1d75a3)['json'](_0x4b4141);}};}function respondWithFilteredResult(_0x1e1903,_0x3289e2){return function(_0x4df882){if(_0x4df882){var _0x5c56f1=typeof _0x3289e2['offset']===_0xef49('0x1d')&&typeof _0x3289e2['limit']==='undefined';var _0x3a991e=_0x4df882[_0xef49('0x1e')];var _0x3a0c3d=_0x5c56f1?0x0:_0x3289e2[_0xef49('0x1f')];var _0x28561c=_0x5c56f1?_0x4df882[_0xef49('0x1e')]:_0x3289e2[_0xef49('0x1f')]+_0x3289e2['limit'];var _0x1d786b;if(_0x28561c>=_0x3a991e){_0x28561c=_0x3a991e;_0x1d786b=0xc8;}else{_0x1d786b=0xce;}_0x1e1903['status'](_0x1d786b);return _0x1e1903[_0xef49('0x20')]('Content-Range',_0x3a0c3d+'-'+_0x28561c+'/'+_0x3a991e)[_0xef49('0x21')](_0x4df882);}return null;};}function patchUpdates(_0x2a2788){return function(_0x27d04a){try{jsonpatch[_0xef49('0x22')](_0x27d04a,_0x2a2788,!![]);}catch(_0x83267f){return BPromise['reject'](_0x83267f);}return _0x27d04a['save']();};}function saveUpdates(_0x297b26,_0x6d8719){return function(_0x476546){if(_0x476546){return _0x476546[_0xef49('0x23')](_0x297b26)[_0xef49('0x24')](function(_0x5a1751){return _0x5a1751;});}return null;};}function removeEntity(_0x343d6b,_0x25f919){return function(_0x325fdf){if(_0x325fdf){return _0x325fdf[_0xef49('0x25')]()['then'](function(){var _0x13f64b=_0x325fdf['get']({'plain':!![]});var _0xbebe7d='Intervals';return db[_0xef49('0x26')][_0xef49('0x25')]({'where':{'type':_0xbebe7d,'resourceId':_0x13f64b['id']}})[_0xef49('0x24')](function(){return _0x325fdf;});})[_0xef49('0x24')](function(){_0x343d6b[_0xef49('0x1c')](0xcc)[_0xef49('0x1b')]();});}};}function handleEntityNotFound(_0x2b08b4,_0x1b2d51){return function(_0x255095){if(!_0x255095){_0x2b08b4[_0xef49('0x1a')](0x194);}return _0x255095;};}function handleError(_0x5857e5,_0xe8ce79){_0xe8ce79=_0xe8ce79||0x1f4;return function(_0x6c6a15){logger[_0xef49('0x27')](_0x6c6a15[_0xef49('0x28')]);if(_0x6c6a15[_0xef49('0x29')]){delete _0x6c6a15[_0xef49('0x29')];}_0x5857e5['status'](_0xe8ce79)['send'](_0x6c6a15);};}exports[_0xef49('0x2a')]=function(_0xa469c,_0x2ef6ee){var _0x4a6163={},_0x5c60a7={},_0x6ca7c={'count':0x0,'rows':[]};var _0xadc213=_['map'](db[_0xef49('0x2b')][_0xef49('0x2c')],function(_0x4469df){return{'name':_0x4469df['fieldName'],'type':_0x4469df[_0xef49('0x2d')][_0xef49('0x2e')]};});_0x5c60a7[_0xef49('0x2f')]=_['map'](_0xadc213,'name');_0x5c60a7[_0xef49('0x30')]=_[_0xef49('0x31')](_0xa469c[_0xef49('0x30')]);_0x5c60a7[_0xef49('0x32')]=_[_0xef49('0x33')](_0x5c60a7[_0xef49('0x2f')],_0x5c60a7[_0xef49('0x30')]);_0x4a6163[_0xef49('0x34')]=_[_0xef49('0x33')](_0x5c60a7[_0xef49('0x2f')],qs[_0xef49('0x35')](_0xa469c['query']['fields']));_0x4a6163['attributes']=_0x4a6163['attributes'][_0xef49('0x36')]?_0x4a6163['attributes']:_0x5c60a7[_0xef49('0x2f')];if(!_0xa469c['query'][_0xef49('0x37')]('nolimit')){_0x4a6163[_0xef49('0x38')]=qs[_0xef49('0x38')](_0xa469c['query'][_0xef49('0x38')]);_0x4a6163[_0xef49('0x1f')]=qs[_0xef49('0x1f')](_0xa469c[_0xef49('0x30')]['offset']);}_0x4a6163[_0xef49('0x39')]=qs[_0xef49('0x3a')](_0xa469c[_0xef49('0x30')][_0xef49('0x3a')]);_0x4a6163[_0xef49('0x3b')]=qs[_0xef49('0x32')](_[_0xef49('0x3c')](_0xa469c[_0xef49('0x30')],_0x5c60a7[_0xef49('0x32')]),_0xadc213);if(_0xa469c[_0xef49('0x30')][_0xef49('0x3d')]){_0x4a6163['where']=_[_0xef49('0x3e')](_0x4a6163['where'],{'$or':_[_0xef49('0x3f')](_0xadc213,function(_0x469cbf){if(_0x469cbf['type']!==_0xef49('0x40')){var _0x2cc43b={};_0x2cc43b[_0x469cbf[_0xef49('0x29')]]={'$like':'%'+_0xa469c[_0xef49('0x30')]['filter']+'%'};return _0x2cc43b;}})});}_0x4a6163=_[_0xef49('0x3e')]({},_0x4a6163,_0xa469c[_0xef49('0x41')]);var _0x16aa00={'where':_0x4a6163[_0xef49('0x3b')]};return db[_0xef49('0x2b')][_0xef49('0x1e')](_0x16aa00)[_0xef49('0x24')](function(_0x2e9f76){_0x6ca7c[_0xef49('0x1e')]=_0x2e9f76;if(_0xa469c[_0xef49('0x30')][_0xef49('0x42')]){_0x4a6163[_0xef49('0x43')]=[{'all':!![]}];}return db[_0xef49('0x2b')][_0xef49('0x44')](_0x4a6163);})[_0xef49('0x24')](function(_0x1eab91){_0x6ca7c[_0xef49('0x45')]=_0x1eab91;return _0x6ca7c;})[_0xef49('0x24')](respondWithFilteredResult(_0x2ef6ee,_0x4a6163))['catch'](handleError(_0x2ef6ee,null));};exports[_0xef49('0x46')]=function(_0x95b83b,_0x174a6a){var _0x4580fd={'raw':!![],'where':{'id':_0x95b83b[_0xef49('0x47')]['id']}},_0x1e714e={};_0x1e714e[_0xef49('0x2f')]=_[_0xef49('0x31')](db[_0xef49('0x2b')]['rawAttributes']);_0x1e714e[_0xef49('0x30')]=_['keys'](_0x95b83b[_0xef49('0x30')]);_0x1e714e[_0xef49('0x32')]=_[_0xef49('0x33')](_0x1e714e['model'],_0x1e714e[_0xef49('0x30')]);_0x4580fd[_0xef49('0x34')]=_[_0xef49('0x33')](_0x1e714e['model'],qs[_0xef49('0x35')](_0x95b83b[_0xef49('0x30')]['fields']));_0x4580fd['attributes']=_0x4580fd[_0xef49('0x34')][_0xef49('0x36')]?_0x4580fd[_0xef49('0x34')]:_0x1e714e['model'];if(_0x95b83b[_0xef49('0x30')][_0xef49('0x42')]){_0x4580fd[_0xef49('0x43')]=[{'all':!![]}];}_0x4580fd=_[_0xef49('0x3e')]({},_0x4580fd,_0x95b83b['options']);return db['Interval'][_0xef49('0x48')](_0x4580fd)[_0xef49('0x24')](handleEntityNotFound(_0x174a6a,null))['then'](respondWithResult(_0x174a6a,null))[_0xef49('0x49')](handleError(_0x174a6a,null));};exports[_0xef49('0x4a')]=function(_0x52f183,_0x1e332a){return db[_0xef49('0x2b')][_0xef49('0x4a')](_0x52f183[_0xef49('0x4b')],{})['then'](function(_0x596245){var _0x40be6d=_0x52f183[_0xef49('0x4c')]['get']({'plain':!![]});if(!_0x40be6d)throw new Error(_0xef49('0x4d'));if(_0x40be6d[_0xef49('0x4e')]==='user'){var _0x589270=_0x596245[_0xef49('0x4f')]({'plain':!![]});var _0x5d5689=_0xef49('0x50');return db['UserProfileSection'][_0xef49('0x48')]({'where':{'name':_0x5d5689,'userProfileId':_0x40be6d[_0xef49('0x51')]},'raw':!![]})[_0xef49('0x24')](function(_0x3032da){if(_0x3032da&&_0x3032da[_0xef49('0x52')]===0x0){return db[_0xef49('0x26')][_0xef49('0x4a')]({'name':_0x589270[_0xef49('0x29')],'resourceId':_0x589270['id'],'type':_0x3032da['name'],'sectionId':_0x3032da['id']},{})[_0xef49('0x24')](function(){return _0x596245;});}else{return _0x596245;}})['catch'](function(_0x5249ae){logger['error'](_0xef49('0x53'),_0x5249ae);throw _0x5249ae;});}return _0x596245;})['then'](respondWithResult(_0x1e332a,0xc9))[_0xef49('0x49')](handleError(_0x1e332a,null));};exports['update']=function(_0x54f8f1,_0x45484f){if(_0x54f8f1[_0xef49('0x4b')]['id']){delete _0x54f8f1['body']['id'];}return db[_0xef49('0x2b')][_0xef49('0x48')]({'where':{'id':_0x54f8f1[_0xef49('0x47')]['id']}})[_0xef49('0x24')](handleEntityNotFound(_0x45484f,null))[_0xef49('0x24')](saveUpdates(_0x54f8f1[_0xef49('0x4b')],null))[_0xef49('0x24')](respondWithResult(_0x45484f,null))[_0xef49('0x49')](handleError(_0x45484f,null));};exports['destroy']=function(_0x563ef7,_0x1edc1d){return db['Interval'][_0xef49('0x48')]({'where':{'id':_0x563ef7[_0xef49('0x47')]['id']}})['then'](handleEntityNotFound(_0x1edc1d,null))['then'](removeEntity(_0x1edc1d,null))[_0xef49('0x49')](handleError(_0x1edc1d,null));};exports[_0xef49('0x54')]=function(_0x39f7c5,_0x2cb99c,_0x136ea8){if(_0x39f7c5[_0xef49('0x4b')]['id']){delete _0x39f7c5[_0xef49('0x4b')]['id'];}return db[_0xef49('0x2b')][_0xef49('0x48')]({'where':{'id':_0x39f7c5[_0xef49('0x47')]['id']}})[_0xef49('0x24')](handleEntityNotFound(_0x2cb99c,null))['then'](function(_0x4715ec){if(_0x4715ec){_0x39f7c5[_0xef49('0x4b')][_0xef49('0x55')]=_0x4715ec['id'];return db[_0xef49('0x2b')]['create'](_0x39f7c5[_0xef49('0x4b')]);}})[_0xef49('0x24')](respondWithResult(_0x2cb99c,null))[_0xef49('0x49')](handleError(_0x2cb99c,null));};exports[_0xef49('0x56')]=function(_0x40323c,_0x10000e,_0x5ab18f){var _0x21e54f={};var _0x7f56d2={};var _0x493e7e;var _0x2bb825;return db[_0xef49('0x2b')][_0xef49('0x57')]({'where':{'id':_0x40323c[_0xef49('0x47')]['id']}})[_0xef49('0x24')](handleEntityNotFound(_0x10000e,null))[_0xef49('0x24')](function(_0x11198e){if(_0x11198e){_0x493e7e=_0x11198e;_0x7f56d2[_0xef49('0x2f')]=_[_0xef49('0x31')](db[_0xef49('0x2b')][_0xef49('0x2c')]);_0x7f56d2[_0xef49('0x30')]=_[_0xef49('0x31')](_0x40323c[_0xef49('0x30')]);_0x7f56d2[_0xef49('0x32')]=_['intersection'](_0x7f56d2[_0xef49('0x2f')],_0x7f56d2['query']);_0x21e54f[_0xef49('0x34')]=_[_0xef49('0x33')](_0x7f56d2[_0xef49('0x2f')],qs['fields'](_0x40323c[_0xef49('0x30')]['fields']));_0x21e54f[_0xef49('0x34')]=_0x21e54f[_0xef49('0x34')][_0xef49('0x36')]?_0x21e54f[_0xef49('0x34')]:_0x7f56d2[_0xef49('0x2f')];_0x21e54f[_0xef49('0x39')]=qs[_0xef49('0x3a')](_0x40323c[_0xef49('0x30')][_0xef49('0x3a')]);_0x21e54f['where']=qs[_0xef49('0x32')](_['pick'](_0x40323c[_0xef49('0x30')],_0x7f56d2[_0xef49('0x32')]));if(_0x40323c[_0xef49('0x30')][_0xef49('0x3d')]){_0x21e54f['where']=_['merge'](_0x21e54f[_0xef49('0x3b')],{'$or':_[_0xef49('0x3f')](_0x21e54f['attributes'],function(_0x3623b4){var _0xf52d18={};_0xf52d18[_0x3623b4]={'$like':'%'+_0x40323c[_0xef49('0x30')][_0xef49('0x3d')]+'%'};return _0xf52d18;})});}_0x21e54f=_[_0xef49('0x3e')]({},_0x21e54f,_0x40323c[_0xef49('0x41')]);return _0x493e7e[_0xef49('0x56')](_0x21e54f);}})[_0xef49('0x24')](function(_0x1b91e2){if(_0x1b91e2){_0x2bb825=_0x1b91e2[_0xef49('0x36')];if(!_0x40323c['query'][_0xef49('0x37')](_0xef49('0x58'))){_0x21e54f['limit']=qs[_0xef49('0x38')](_0x40323c[_0xef49('0x30')][_0xef49('0x38')]);_0x21e54f[_0xef49('0x1f')]=qs[_0xef49('0x1f')](_0x40323c[_0xef49('0x30')][_0xef49('0x1f')]);}return _0x493e7e[_0xef49('0x56')](_0x21e54f);}})['then'](function(_0x2de449){if(_0x2de449){return _0x2de449?{'count':_0x2bb825,'rows':_0x2de449}:null;}})['then'](respondWithResult(_0x10000e,null))[_0xef49('0x49')](handleError(_0x10000e,null));};exports[_0xef49('0x59')]=function(_0x459635,_0x284247,_0x50565a){return db[_0xef49('0x2b')][_0xef49('0x57')]({'where':{'id':_0x459635[_0xef49('0x47')]['id']}})[_0xef49('0x24')](handleEntityNotFound(_0x284247,null))[_0xef49('0x24')](function(_0x3580ff){if(_0x3580ff){return db[_0xef49('0x5a')]['transaction'](function(_0x1f2ee7){return db['Interval'][_0xef49('0x25')]({'where':{'IntervalId':_0x459635[_0xef49('0x47')]['id']},'transaction':_0x1f2ee7})[_0xef49('0x24')](function(_0x3bf7e5){var _0x37ce12=_[_0xef49('0x3f')](_0x459635[_0xef49('0x4b')],function(_0x3b8b0c){delete _0x3b8b0c['id'];_0x3b8b0c[_0xef49('0x55')]=_0x459635[_0xef49('0x47')]['id'];return _0x3b8b0c;});return db[_0xef49('0x2b')][_0xef49('0x5b')](_0x37ce12,{'transaction':_0x1f2ee7});});})[_0xef49('0x24')](function(){return db['Interval'][_0xef49('0x44')]({'where':{'IntervalId':_0x459635['params']['id']}});});}})['then'](respondWithResult(_0x284247,null))[_0xef49('0x49')](handleError(_0x284247,null));};
\ No newline at end of file
index 7fbf33b..3c58beb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9300=['rewrite','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./interval.attributes','exports','define','Interval','tools_intervals'];(function(_0x2cd0a8,_0x2f7242){var _0x5d68a1=function(_0x63f66b){while(--_0x63f66b){_0x2cd0a8['push'](_0x2cd0a8['shift']());}};_0x5d68a1(++_0x2f7242);}(_0x9300,0x153));var _0x0930=function(_0x2eaa6b,_0x5f3658){_0x2eaa6b=_0x2eaa6b-0x0;var _0x4770c9=_0x9300[_0x2eaa6b];return _0x4770c9;};'use strict';var _=require(_0x0930('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0930('0x1'));var moment=require(_0x0930('0x2'));var BPromise=require(_0x0930('0x3'));var rp=require(_0x0930('0x4'));var fs=require('fs');var path=require(_0x0930('0x5'));var rimraf=require('rimraf');var config=require(_0x0930('0x6'));var attributes=require(_0x0930('0x7'));var extensions=require('../../components/extensions/rewrite');module[_0x0930('0x8')]=function(_0x1c8175,_0x45705a){return _0x1c8175[_0x0930('0x9')](_0x0930('0xa'),attributes,{'tableName':_0x0930('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5bc3df,_0x4a7705){extensions[_0x0930('0xc')](_0x1c8175,_0x5bc3df);},'afterBulkCreate':function(_0x4b1994,_0x1abf42,_0x1cc192){_0x1cc192();extensions['rewrite'](_0x1c8175,_0x4b1994[0x0]);},'afterUpdate':function(_0x6db8ef,_0x5ba778){extensions['rewrite'](_0x1c8175,_0x6db8ef);},'afterDestroy':function(_0x22565e,_0x20ab2e){extensions['rewrite'](_0x1c8175,_0x22565e);}}});};
\ No newline at end of file
+var _0xd269=['./interval.attributes','../../components/extensions/rewrite','exports','define','Interval','rewrite','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x5808f5,_0x17154){var _0x51c16d=function(_0x521c58){while(--_0x521c58){_0x5808f5['push'](_0x5808f5['shift']());}};_0x51c16d(++_0x17154);}(_0xd269,0xc6));var _0x9d26=function(_0x584cd4,_0x3e4c40){_0x584cd4=_0x584cd4-0x0;var _0x56a8ea=_0xd269[_0x584cd4];return _0x56a8ea;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9d26('0x0'))(_0x9d26('0x1'));var moment=require(_0x9d26('0x2'));var BPromise=require('bluebird');var rp=require(_0x9d26('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9d26('0x4'));var config=require(_0x9d26('0x5'));var attributes=require(_0x9d26('0x6'));var extensions=require(_0x9d26('0x7'));module[_0x9d26('0x8')]=function(_0x34c5d7,_0x4e9ab0){return _0x34c5d7[_0x9d26('0x9')](_0x9d26('0xa'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x65385e,_0xd3b698){extensions[_0x9d26('0xb')](_0x34c5d7,_0x65385e);},'afterBulkCreate':function(_0x5042c2,_0x23f40a,_0x57285d){_0x57285d();extensions[_0x9d26('0xb')](_0x34c5d7,_0x5042c2[0x0]);},'afterUpdate':function(_0x168b05,_0x5e6be7){extensions[_0x9d26('0xb')](_0x34c5d7,_0x168b05);},'afterDestroy':function(_0x17d176,_0x2132e3){extensions[_0x9d26('0xb')](_0x34c5d7,_0x17d176);}}});};
\ No newline at end of file
index db11e3d..3c52cc7 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(_0x3132e8,_0x499a0e){var _0x43eb8c=function(_0x2321e1){while(--_0x2321e1){_0x3132e8['push'](_0x3132e8['shift']());}};_0x43eb8c(++_0x499a0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x386525,_0xefae6){var _0x14d015=function(_0x4a45c1){while(--_0x4a45c1){_0x386525['push'](_0x386525['shift']());}};_0x14d015(++_0xefae6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 49e25a8..73b2e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x4aa838,_0x4aa14f){var _0x3abff0=function(_0x402d55){while(--_0x402d55){_0x4aa838['push'](_0x4aa838['shift']());}};_0x3abff0(++_0x4aa14f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'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(_0x1c2621,_0x43a669){var _0x10a2f1=function(_0x1e17f6){while(--_0x1e17f6){_0x1c2621['push'](_0x1c2621['shift']());}};_0x10a2f1(++_0x43a669);}(_0x2032,0xd9));var _0x2203=function(_0x44742b,_0x72ea41){_0x44742b=_0x44742b-0x0;var _0x22e75d=_0x2032[_0x44742b];return _0x22e75d;};'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 36253d0..ce42c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85c9=['application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','end','openIssue','send','body','headers','remoteAddress','socket','connection','https','../../config/logger','support','3eAmWpBVP0','MOTGUI','summary','Report','\x20from\x20','description','stringify','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue'];(function(_0x2d582c,_0x424a15){var _0x37e92a=function(_0x142fb1){while(--_0x142fb1){_0x2d582c['push'](_0x2d582c['shift']());}};_0x37e92a(++_0x424a15);}(_0x85c9,0xa3));var _0x985c=function(_0x561771,_0x554760){_0x561771=_0x561771-0x0;var _0x54d16e=_0x85c9[_0x561771];return _0x54d16e;};'use strict';var BPromise=require('bluebird');var https=require(_0x985c('0x0'));var logger=require(_0x985c('0x1'))('api');var USERNAME=_0x985c('0x2');var PASSWORD=_0x985c('0x3');function openIssue(_0x390a38,_0x4747b0){var _0x2d0894={'fields':{'project':{'key':_0x390a38['key']||_0x985c('0x4')},'summary':(_0x390a38[_0x985c('0x5')]||_0x985c('0x6'))+_0x985c('0x7')+_0x390a38['ip'],'description':_0x390a38[_0x985c('0x8')]||JSON[_0x985c('0x9')](_0x390a38),'issuetype':{'name':_0x390a38['issuetype']||_0x985c('0xa')}}};_0x2d0894[_0x985c('0xb')][_0x985c('0xc')]=_0x390a38[_0x985c('0xd')];_0x2d0894[_0x985c('0xb')][_0x985c('0xe')]=_0x390a38[_0x985c('0xf')];_0x2d0894[_0x985c('0xb')][_0x985c('0x10')]=_0x390a38[_0x985c('0x11')];_0x2d0894[_0x985c('0xb')][_0x985c('0x12')]=_0x390a38[_0x985c('0x13')];_0x2d0894[_0x985c('0xb')][_0x985c('0x14')]=_0x390a38[_0x985c('0x15')];_0x2d0894[_0x985c('0xb')][_0x985c('0x16')]=_0x390a38['ip'];var _0x3bf6ac={'host':_0x985c('0x17'),'port':0x1bb,'path':_0x985c('0x18'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x985c('0x19'),'Authorization':_0x985c('0x1a')+new Buffer(USERNAME+':'+PASSWORD)[_0x985c('0x1b')](_0x985c('0x1c'))}};var _0x3a0ab7=JSON[_0x985c('0x9')](_0x2d0894);var _0x80b595=https[_0x985c('0x1d')](_0x3bf6ac,function(_0x51c625){_0x51c625[_0x985c('0x1e')](_0x985c('0x1f'));var _0x12162b='';_0x51c625['on'](_0x985c('0x20'),function(_0xb41261){_0x12162b+=_0xb41261;});_0x51c625['on']('end',function(){if(_0x4747b0){return _0x4747b0[_0x985c('0x21')](_0x51c625[_0x985c('0x22')])[_0x985c('0x23')](JSON[_0x985c('0x24')](_0x12162b));}});});_0x80b595['on'](_0x985c('0x25'),function(_0x17f0a5){if(_0x4747b0){return _0x4747b0[_0x985c('0x21')](0x1f4)[_0x985c('0x23')]({'errors':[{'message':_0x985c('0x26'),'type':'api.jira'}]});}});_0x80b595['write'](_0x3a0ab7);_0x80b595[_0x985c('0x27')]();}exports[_0x985c('0x28')]=openIssue;exports[_0x985c('0x29')]=function(_0x26ebe6,_0x35f7de){_0x26ebe6[_0x985c('0x2a')]['ip']=_0x26ebe6[_0x985c('0x2b')]['x-forwarded-for']||_0x26ebe6['connection'][_0x985c('0x2c')]||_0x26ebe6[_0x985c('0x2d')][_0x985c('0x2c')]||_0x26ebe6[_0x985c('0x2e')][_0x985c('0x2d')][_0x985c('0x2c')];return openIssue(_0x26ebe6[_0x985c('0x2a')],_0x35f7de);};
\ No newline at end of file
+var _0xbf78=['description','stringify','Bug','email','fields','customfield_11501','oldToken','newToken','customfield_11503','name','reason','customfield_10102','/rest/api/2/issue','POST','application/json','Basic\x20','base64','request','setEncoding','utf8','data','end','status','statusCode','json','parse','error','api.jira','write','openIssue','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20'];(function(_0x1fcf1b,_0x214549){var _0x5d2952=function(_0x3331b7){while(--_0x3331b7){_0x1fcf1b['push'](_0x1fcf1b['shift']());}};_0x5d2952(++_0x214549);}(_0xbf78,0x19c));var _0x8bf7=function(_0x5ecaeb,_0x255018){_0x5ecaeb=_0x5ecaeb-0x0;var _0x4f9144=_0xbf78[_0x5ecaeb];return _0x4f9144;};'use strict';var BPromise=require(_0x8bf7('0x0'));var https=require(_0x8bf7('0x1'));var logger=require(_0x8bf7('0x2'))(_0x8bf7('0x3'));var USERNAME=_0x8bf7('0x4');var PASSWORD=_0x8bf7('0x5');function openIssue(_0x462d0e,_0x498ce2){var _0x87d34={'fields':{'project':{'key':_0x462d0e[_0x8bf7('0x6')]||_0x8bf7('0x7')},'summary':(_0x462d0e[_0x8bf7('0x8')]||_0x8bf7('0x9'))+_0x8bf7('0xa')+_0x462d0e['ip'],'description':_0x462d0e[_0x8bf7('0xb')]||JSON[_0x8bf7('0xc')](_0x462d0e),'issuetype':{'name':_0x462d0e['issuetype']||_0x8bf7('0xd')}}};_0x87d34['fields']['customfield_11500']=_0x462d0e[_0x8bf7('0xe')];_0x87d34[_0x8bf7('0xf')][_0x8bf7('0x10')]=_0x462d0e[_0x8bf7('0x11')];_0x87d34[_0x8bf7('0xf')]['customfield_11502']=_0x462d0e[_0x8bf7('0x12')];_0x87d34['fields'][_0x8bf7('0x13')]=_0x462d0e[_0x8bf7('0x14')];_0x87d34[_0x8bf7('0xf')]['customfield_11504']=_0x462d0e[_0x8bf7('0x15')];_0x87d34['fields'][_0x8bf7('0x16')]=_0x462d0e['ip'];var _0x2044c1={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x8bf7('0x17'),'method':_0x8bf7('0x18'),'timeout':0x4e20,'headers':{'Content-Type':_0x8bf7('0x19'),'Authorization':_0x8bf7('0x1a')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x8bf7('0x1b'))}};var _0x1dafdb=JSON[_0x8bf7('0xc')](_0x87d34);var _0x307f60=https[_0x8bf7('0x1c')](_0x2044c1,function(_0x3fcd83){_0x3fcd83[_0x8bf7('0x1d')](_0x8bf7('0x1e'));var _0x7c60dd='';_0x3fcd83['on'](_0x8bf7('0x1f'),function(_0x2c0608){_0x7c60dd+=_0x2c0608;});_0x3fcd83['on'](_0x8bf7('0x20'),function(){if(_0x498ce2){return _0x498ce2[_0x8bf7('0x21')](_0x3fcd83[_0x8bf7('0x22')])[_0x8bf7('0x23')](JSON[_0x8bf7('0x24')](_0x7c60dd));}});});_0x307f60['on'](_0x8bf7('0x25'),function(_0x19ed09){if(_0x498ce2){return _0x498ce2['status'](0x1f4)[_0x8bf7('0x23')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0x8bf7('0x26')}]});}});_0x307f60[_0x8bf7('0x27')](_0x1dafdb);_0x307f60['end']();}exports[_0x8bf7('0x28')]=openIssue;exports['send']=function(_0x33dddc,_0x2dc2d5){_0x33dddc[_0x8bf7('0x29')]['ip']=_0x33dddc[_0x8bf7('0x2a')][_0x8bf7('0x2b')]||_0x33dddc[_0x8bf7('0x2c')][_0x8bf7('0x2d')]||_0x33dddc['socket']['remoteAddress']||_0x33dddc[_0x8bf7('0x2c')][_0x8bf7('0x2e')][_0x8bf7('0x2d')];return openIssue(_0x33dddc[_0x8bf7('0x29')],_0x2dc2d5);};
\ No newline at end of file
index e69a935..41278c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ea=['./jscriptyAnswerReport.controller','get','isAuthenticated','/describe','/:id','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x563db8,_0xd567f9){var _0x5b79ec=function(_0x271553){while(--_0x271553){_0x563db8['push'](_0x563db8['shift']());}};_0x5b79ec(++_0xd567f9);}(_0xd2ea,0x15f));var _0xad2e=function(_0xa44f88,_0x436bc3){_0xa44f88=_0xa44f88-0x0;var _0x4857ae=_0xd2ea[_0xa44f88];return _0x4857ae;};'use strict';var multer=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var path=require(_0xad2e('0x2'));var timeout=require(_0xad2e('0x3'));var express=require(_0xad2e('0x4'));var router=express['Router']();var fs_extra=require(_0xad2e('0x5'));var auth=require(_0xad2e('0x6'));var interaction=require(_0xad2e('0x7'));var config=require(_0xad2e('0x8'));var controller=require(_0xad2e('0x9'));router[_0xad2e('0xa')]('/',auth[_0xad2e('0xb')](),controller['index']);router[_0xad2e('0xa')](_0xad2e('0xc'),auth[_0xad2e('0xb')](),controller['describe']);router[_0xad2e('0xa')](_0xad2e('0xd'),auth['isAuthenticated'](),controller[_0xad2e('0xe')]);router['post']('/',auth[_0xad2e('0xb')](),controller[_0xad2e('0xf')]);router[_0xad2e('0x10')](_0xad2e('0xd'),auth['isAuthenticated'](),controller[_0xad2e('0x11')]);router['delete'](_0xad2e('0xd'),auth[_0xad2e('0xb')](),controller[_0xad2e('0x12')]);module[_0xad2e('0x13')]=router;
\ No newline at end of file
+var _0x9f62=['../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','describe','post','/:id','delete','util','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x496ee9,_0x4dba12){var _0xb7016a=function(_0x11eb42){while(--_0x11eb42){_0x496ee9['push'](_0x496ee9['shift']());}};_0xb7016a(++_0x4dba12);}(_0x9f62,0x154));var _0x29f6=function(_0x5caf87,_0x5a311d){_0x5caf87=_0x5caf87-0x0;var _0x526c40=_0x9f62[_0x5caf87];return _0x526c40;};'use strict';var multer=require('multer');var util=require(_0x29f6('0x0'));var path=require('path');var timeout=require(_0x29f6('0x1'));var express=require(_0x29f6('0x2'));var router=express[_0x29f6('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var controller=require(_0x29f6('0x6'));router[_0x29f6('0x7')]('/',auth['isAuthenticated'](),controller[_0x29f6('0x8')]);router[_0x29f6('0x7')](_0x29f6('0x9'),auth[_0x29f6('0xa')](),controller[_0x29f6('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x29f6('0xc')]('/',auth[_0x29f6('0xa')](),controller['create']);router['put'](_0x29f6('0xd'),auth[_0x29f6('0xa')](),controller['update']);router[_0x29f6('0xe')](_0x29f6('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 741b61a..8211e53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x7a54,0x106));var _0x47a5=function(_0x4d7659,_0xeedd3c){_0x4d7659=_0x4d7659-0x0;var _0x546bb1=_0x7a54[_0x4d7659];return _0x546bb1;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7a54,0x106));var _0x47a5=function(_0x259fc9,_0x1a2eb6){_0x259fc9=_0x259fc9-0x0;var _0x421702=_0x7a54[_0x259fc9];return _0x421702;};'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 5d8e2d4..3a5ff60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x363e=['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','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','JscriptyAnswerReport','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','length','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x52f3e2,_0x5170fe){var _0x1e3622=function(_0x316ea2){while(--_0x316ea2){_0x52f3e2['push'](_0x52f3e2['shift']());}};_0x1e3622(++_0x5170fe);}(_0x363e,0x179));var _0xe363=function(_0x2361f8,_0x4c0deb){_0x2361f8=_0x2361f8-0x0;var _0x3bbdea=_0x363e[_0x2361f8];return _0x3bbdea;};'use strict';var emlformat=require(_0xe363('0x0'));var rimraf=require(_0xe363('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe363('0x2'));var rp=require(_0xe363('0x3'));var moment=require(_0xe363('0x4'));var BPromise=require(_0xe363('0x5'));var Mustache=require(_0xe363('0x6'));var util=require(_0xe363('0x7'));var path=require(_0xe363('0x8'));var sox=require(_0xe363('0x9'));var csv=require(_0xe363('0xa'));var ejs=require(_0xe363('0xb'));var fs=require('fs');var fs_extra=require(_0xe363('0xc'));var _=require('lodash');var squel=require(_0xe363('0xd'));var crypto=require(_0xe363('0xe'));var jsforce=require(_0xe363('0xf'));var deskjs=require(_0xe363('0x10'));var toCsv=require('to-csv');var querystring=require(_0xe363('0x11'));var Papa=require(_0xe363('0x12'));var Redis=require(_0xe363('0x13'));var authService=require(_0xe363('0x14'));var qs=require(_0xe363('0x15'));var as=require(_0xe363('0x16'));var hardwareService=require(_0xe363('0x17'));var logger=require('../../config/logger')(_0xe363('0x18'));var utils=require(_0xe363('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xe363('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4e1fb0,_0x8b6974){_0x8b6974=_0x8b6974||0xcc;return function(_0x21cb92){if(_0x21cb92){return _0x4e1fb0[_0xe363('0x1b')](_0x8b6974);}return _0x4e1fb0[_0xe363('0x1c')](_0x8b6974)[_0xe363('0x1d')]();};}function respondWithResult(_0x563fbf,_0x17ff61){_0x17ff61=_0x17ff61||0xc8;return function(_0x22b227){if(_0x22b227){return _0x563fbf['status'](_0x17ff61)[_0xe363('0x1e')](_0x22b227);}};}function respondWithFilteredResult(_0x2ad0e9,_0x52e6c6){return function(_0x3c74f9){if(_0x3c74f9){var _0x73ef9a=typeof _0x52e6c6['offset']===_0xe363('0x1f')&&typeof _0x52e6c6[_0xe363('0x20')]==='undefined';var _0xecbe2c=_0x3c74f9[_0xe363('0x21')];var _0x2f2c20=_0x73ef9a?0x0:_0x52e6c6['offset'];var _0x287104=_0x73ef9a?_0x3c74f9[_0xe363('0x21')]:_0x52e6c6['offset']+_0x52e6c6[_0xe363('0x20')];var _0x110e59;if(_0x287104>=_0xecbe2c){_0x287104=_0xecbe2c;_0x110e59=0xc8;}else{_0x110e59=0xce;}_0x2ad0e9[_0xe363('0x1c')](_0x110e59);return _0x2ad0e9[_0xe363('0x22')](_0xe363('0x23'),_0x2f2c20+'-'+_0x287104+'/'+_0xecbe2c)[_0xe363('0x1e')](_0x3c74f9);}return null;};}function patchUpdates(_0x4ee855){return function(_0x3bed39){try{jsonpatch[_0xe363('0x24')](_0x3bed39,_0x4ee855,!![]);}catch(_0x14ff95){return BPromise[_0xe363('0x25')](_0x14ff95);}return _0x3bed39[_0xe363('0x26')]();};}function saveUpdates(_0x42928e,_0x24199a){return function(_0xaff56f){if(_0xaff56f){return _0xaff56f[_0xe363('0x27')](_0x42928e)[_0xe363('0x28')](function(_0x1de673){return _0x1de673;});}return null;};}function removeEntity(_0x441b94,_0x11556d){return function(_0x388223){if(_0x388223){return _0x388223[_0xe363('0x29')]()[_0xe363('0x28')](function(){_0x441b94[_0xe363('0x1c')](0xcc)[_0xe363('0x1d')]();});}};}function handleEntityNotFound(_0x19c7b4,_0x3e24ad){return function(_0x312d75){if(!_0x312d75){_0x19c7b4[_0xe363('0x1b')](0x194);}return _0x312d75;};}function handleError(_0x5b2b3d,_0xbdfae9){_0xbdfae9=_0xbdfae9||0x1f4;return function(_0x12358b){logger[_0xe363('0x2a')](_0x12358b[_0xe363('0x2b')]);if(_0x12358b[_0xe363('0x2c')]){delete _0x12358b['name'];}_0x5b2b3d[_0xe363('0x1c')](_0xbdfae9)[_0xe363('0x2d')](_0x12358b);};}exports['index']=function(_0x3cc130,_0x5a790c){var _0x3ed3e1={},_0x45d664={},_0x4c739d={'count':0x0,'rows':[]};var _0x357b6f=_[_0xe363('0x2e')](db[_0xe363('0x2f')]['rawAttributes'],function(_0x40671e){return{'name':_0x40671e[_0xe363('0x30')],'type':_0x40671e[_0xe363('0x31')][_0xe363('0x32')]};});_0x45d664['model']=_[_0xe363('0x2e')](_0x357b6f,_0xe363('0x2c'));_0x45d664[_0xe363('0x33')]=_[_0xe363('0x34')](_0x3cc130[_0xe363('0x33')]);_0x45d664[_0xe363('0x35')]=_[_0xe363('0x36')](_0x45d664[_0xe363('0x37')],_0x45d664[_0xe363('0x33')]);_0x3ed3e1[_0xe363('0x38')]=_['intersection'](_0x45d664['model'],qs[_0xe363('0x39')](_0x3cc130[_0xe363('0x33')]['fields']));_0x3ed3e1[_0xe363('0x38')]=_0x3ed3e1[_0xe363('0x38')]['length']?_0x3ed3e1[_0xe363('0x38')]:_0x45d664[_0xe363('0x37')];if(!_0x3cc130[_0xe363('0x33')][_0xe363('0x3a')]('nolimit')){_0x3ed3e1['limit']=qs[_0xe363('0x20')](_0x3cc130['query']['limit']);_0x3ed3e1[_0xe363('0x3b')]=qs[_0xe363('0x3b')](_0x3cc130[_0xe363('0x33')][_0xe363('0x3b')]);}_0x3ed3e1[_0xe363('0x3c')]=qs[_0xe363('0x3d')](_0x3cc130[_0xe363('0x33')][_0xe363('0x3d')]);_0x3ed3e1[_0xe363('0x3e')]=qs[_0xe363('0x35')](_[_0xe363('0x3f')](_0x3cc130[_0xe363('0x33')],_0x45d664['filters']),_0x357b6f);if(_0x3cc130['query'][_0xe363('0x40')]){_0x3ed3e1[_0xe363('0x3e')]=_[_0xe363('0x41')](_0x3ed3e1['where'],{'$or':_['map'](_0x357b6f,function(_0x815550){if(_0x815550[_0xe363('0x31')]!==_0xe363('0x42')){var _0x199c78={};_0x199c78[_0x815550['name']]={'$like':'%'+_0x3cc130[_0xe363('0x33')]['filter']+'%'};return _0x199c78;}})});}_0x3ed3e1=_[_0xe363('0x41')]({},_0x3ed3e1,_0x3cc130[_0xe363('0x43')]);var _0xbca95f={'where':_0x3ed3e1[_0xe363('0x3e')]};return db[_0xe363('0x2f')][_0xe363('0x21')](_0xbca95f)[_0xe363('0x28')](function(_0x44f03c){_0x4c739d[_0xe363('0x21')]=_0x44f03c;if(_0x3cc130['query']['includeAll']){_0x3ed3e1[_0xe363('0x44')]=[{'all':!![]}];}return db[_0xe363('0x2f')][_0xe363('0x45')](_0x3ed3e1);})[_0xe363('0x28')](function(_0x2fc2f0){_0x4c739d[_0xe363('0x46')]=_0x2fc2f0;return _0x4c739d;})[_0xe363('0x28')](respondWithFilteredResult(_0x5a790c,_0x3ed3e1))[_0xe363('0x47')](handleError(_0x5a790c,null));};exports[_0xe363('0x48')]=function(_0x4b8238,_0x3da5ba){var _0x58b837={'raw':!![],'where':{'id':_0x4b8238['params']['id']}},_0x41a87c={};_0x41a87c[_0xe363('0x37')]=_[_0xe363('0x34')](db['JscriptyAnswerReport'][_0xe363('0x49')]);_0x41a87c[_0xe363('0x33')]=_[_0xe363('0x34')](_0x4b8238[_0xe363('0x33')]);_0x41a87c[_0xe363('0x35')]=_[_0xe363('0x36')](_0x41a87c['model'],_0x41a87c[_0xe363('0x33')]);_0x58b837[_0xe363('0x38')]=_[_0xe363('0x36')](_0x41a87c[_0xe363('0x37')],qs[_0xe363('0x39')](_0x4b8238['query'][_0xe363('0x39')]));_0x58b837[_0xe363('0x38')]=_0x58b837[_0xe363('0x38')][_0xe363('0x4a')]?_0x58b837[_0xe363('0x38')]:_0x41a87c[_0xe363('0x37')];if(_0x4b8238[_0xe363('0x33')]['includeAll']){_0x58b837['include']=[{'all':!![]}];}_0x58b837=_[_0xe363('0x41')]({},_0x58b837,_0x4b8238[_0xe363('0x43')]);return db[_0xe363('0x2f')]['find'](_0x58b837)[_0xe363('0x28')](handleEntityNotFound(_0x3da5ba,null))[_0xe363('0x28')](respondWithResult(_0x3da5ba,null))['catch'](handleError(_0x3da5ba,null));};exports['create']=function(_0x2a7b42,_0x34e08b){return db[_0xe363('0x2f')][_0xe363('0x4b')](_0x2a7b42['body'],{})[_0xe363('0x28')](respondWithResult(_0x34e08b,0xc9))[_0xe363('0x47')](handleError(_0x34e08b,null));};exports['update']=function(_0x4fbdbb,_0x306afd){if(_0x4fbdbb[_0xe363('0x4c')]['id']){delete _0x4fbdbb['body']['id'];}return db[_0xe363('0x2f')]['find']({'where':{'id':_0x4fbdbb[_0xe363('0x4d')]['id']}})[_0xe363('0x28')](handleEntityNotFound(_0x306afd,null))['then'](saveUpdates(_0x4fbdbb[_0xe363('0x4c')],null))[_0xe363('0x28')](respondWithResult(_0x306afd,null))['catch'](handleError(_0x306afd,null));};exports[_0xe363('0x29')]=function(_0x43ee23,_0x55f0e6){return db[_0xe363('0x2f')]['find']({'where':{'id':_0x43ee23[_0xe363('0x4d')]['id']}})[_0xe363('0x28')](handleEntityNotFound(_0x55f0e6,null))[_0xe363('0x28')](removeEntity(_0x55f0e6,null))[_0xe363('0x47')](handleError(_0x55f0e6,null));};exports['describe']=function(_0x2ff064,_0x225a43){return db[_0xe363('0x2f')]['describe']()[_0xe363('0x28')](respondWithResult(_0x225a43,null))[_0xe363('0x47')](handleError(_0x225a43,null));};
\ No newline at end of file
+var _0x9f5a=['limit','status','set','apply','reject','save','update','then','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','catch','params','include','create','body','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count'];(function(_0x159468,_0x19e94c){var _0x2d9008=function(_0x4cc185){while(--_0x4cc185){_0x159468['push'](_0x159468['shift']());}};_0x2d9008(++_0x19e94c);}(_0x9f5a,0xbd));var _0xa9f5=function(_0x97b2e2,_0x12fa17){_0x97b2e2=_0x97b2e2-0x0;var _0x5235dd=_0x9f5a[_0x97b2e2];return _0x5235dd;};'use strict';var emlformat=require(_0xa9f5('0x0'));var rimraf=require(_0xa9f5('0x1'));var zipdir=require(_0xa9f5('0x2'));var jsonpatch=require(_0xa9f5('0x3'));var rp=require('request-promise');var moment=require(_0xa9f5('0x4'));var BPromise=require(_0xa9f5('0x5'));var Mustache=require(_0xa9f5('0x6'));var util=require('util');var path=require(_0xa9f5('0x7'));var sox=require('sox');var csv=require(_0xa9f5('0x8'));var ejs=require(_0xa9f5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa9f5('0xa'));var squel=require(_0xa9f5('0xb'));var crypto=require(_0xa9f5('0xc'));var jsforce=require(_0xa9f5('0xd'));var deskjs=require(_0xa9f5('0xe'));var toCsv=require(_0xa9f5('0x8'));var querystring=require(_0xa9f5('0xf'));var Papa=require('papaparse');var Redis=require(_0xa9f5('0x10'));var authService=require(_0xa9f5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa9f5('0x12'));var hardwareService=require(_0xa9f5('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xa9f5('0x14'));var config=require(_0xa9f5('0x15'));var licenseUtil=require(_0xa9f5('0x16'));var db=require(_0xa9f5('0x17'))['db'];function respondWithStatusCode(_0x4c26a8,_0x788dec){_0x788dec=_0x788dec||0xcc;return function(_0x24ce85){if(_0x24ce85){return _0x4c26a8[_0xa9f5('0x18')](_0x788dec);}return _0x4c26a8['status'](_0x788dec)[_0xa9f5('0x19')]();};}function respondWithResult(_0x899513,_0x5a5653){_0x5a5653=_0x5a5653||0xc8;return function(_0x58609c){if(_0x58609c){return _0x899513['status'](_0x5a5653)[_0xa9f5('0x1a')](_0x58609c);}};}function respondWithFilteredResult(_0x48bfdc,_0x5f2b6a){return function(_0x870466){if(_0x870466){var _0x131ed6=typeof _0x5f2b6a[_0xa9f5('0x1b')]===_0xa9f5('0x1c')&&typeof _0x5f2b6a['limit']===_0xa9f5('0x1c');var _0x401ae7=_0x870466[_0xa9f5('0x1d')];var _0x45af85=_0x131ed6?0x0:_0x5f2b6a[_0xa9f5('0x1b')];var _0x1ee027=_0x131ed6?_0x870466[_0xa9f5('0x1d')]:_0x5f2b6a[_0xa9f5('0x1b')]+_0x5f2b6a[_0xa9f5('0x1e')];var _0x38bd22;if(_0x1ee027>=_0x401ae7){_0x1ee027=_0x401ae7;_0x38bd22=0xc8;}else{_0x38bd22=0xce;}_0x48bfdc[_0xa9f5('0x1f')](_0x38bd22);return _0x48bfdc[_0xa9f5('0x20')]('Content-Range',_0x45af85+'-'+_0x1ee027+'/'+_0x401ae7)[_0xa9f5('0x1a')](_0x870466);}return null;};}function patchUpdates(_0x131f21){return function(_0x28779c){try{jsonpatch[_0xa9f5('0x21')](_0x28779c,_0x131f21,!![]);}catch(_0x322430){return BPromise[_0xa9f5('0x22')](_0x322430);}return _0x28779c[_0xa9f5('0x23')]();};}function saveUpdates(_0x48b473,_0x1bf2c7){return function(_0x2ea752){if(_0x2ea752){return _0x2ea752[_0xa9f5('0x24')](_0x48b473)[_0xa9f5('0x25')](function(_0xf15d71){return _0xf15d71;});}return null;};}function removeEntity(_0x2626ca,_0x1a204e){return function(_0x41e9aa){if(_0x41e9aa){return _0x41e9aa['destroy']()[_0xa9f5('0x25')](function(){_0x2626ca[_0xa9f5('0x1f')](0xcc)[_0xa9f5('0x19')]();});}};}function handleEntityNotFound(_0x24c8eb,_0x2c2e9f){return function(_0x31b517){if(!_0x31b517){_0x24c8eb['sendStatus'](0x194);}return _0x31b517;};}function handleError(_0x3911c8,_0x49e850){_0x49e850=_0x49e850||0x1f4;return function(_0x53caa4){logger['error'](_0x53caa4[_0xa9f5('0x26')]);if(_0x53caa4[_0xa9f5('0x27')]){delete _0x53caa4[_0xa9f5('0x27')];}_0x3911c8[_0xa9f5('0x1f')](_0x49e850)[_0xa9f5('0x28')](_0x53caa4);};}exports[_0xa9f5('0x29')]=function(_0x51741f,_0x2fbe8c){var _0x43ba93={},_0x41f2f4={},_0x5faf64={'count':0x0,'rows':[]};var _0x23dee2=_[_0xa9f5('0x2a')](db[_0xa9f5('0x2b')][_0xa9f5('0x2c')],function(_0x5a422b){return{'name':_0x5a422b['fieldName'],'type':_0x5a422b['type'][_0xa9f5('0x2d')]};});_0x41f2f4[_0xa9f5('0x2e')]=_[_0xa9f5('0x2a')](_0x23dee2,_0xa9f5('0x27'));_0x41f2f4[_0xa9f5('0x2f')]=_[_0xa9f5('0x30')](_0x51741f[_0xa9f5('0x2f')]);_0x41f2f4[_0xa9f5('0x31')]=_[_0xa9f5('0x32')](_0x41f2f4[_0xa9f5('0x2e')],_0x41f2f4[_0xa9f5('0x2f')]);_0x43ba93[_0xa9f5('0x33')]=_[_0xa9f5('0x32')](_0x41f2f4['model'],qs[_0xa9f5('0x34')](_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x34')]));_0x43ba93[_0xa9f5('0x33')]=_0x43ba93[_0xa9f5('0x33')][_0xa9f5('0x35')]?_0x43ba93[_0xa9f5('0x33')]:_0x41f2f4[_0xa9f5('0x2e')];if(!_0x51741f['query'][_0xa9f5('0x36')]('nolimit')){_0x43ba93[_0xa9f5('0x1e')]=qs[_0xa9f5('0x1e')](_0x51741f['query'][_0xa9f5('0x1e')]);_0x43ba93[_0xa9f5('0x1b')]=qs[_0xa9f5('0x1b')](_0x51741f[_0xa9f5('0x2f')]['offset']);}_0x43ba93[_0xa9f5('0x37')]=qs[_0xa9f5('0x38')](_0x51741f['query'][_0xa9f5('0x38')]);_0x43ba93[_0xa9f5('0x39')]=qs[_0xa9f5('0x31')](_[_0xa9f5('0x3a')](_0x51741f[_0xa9f5('0x2f')],_0x41f2f4[_0xa9f5('0x31')]),_0x23dee2);if(_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x3b')]){_0x43ba93[_0xa9f5('0x39')]=_['merge'](_0x43ba93['where'],{'$or':_[_0xa9f5('0x2a')](_0x23dee2,function(_0x2930eb){if(_0x2930eb['type']!==_0xa9f5('0x3c')){var _0x256212={};_0x256212[_0x2930eb[_0xa9f5('0x27')]]={'$like':'%'+_0x51741f[_0xa9f5('0x2f')]['filter']+'%'};return _0x256212;}})});}_0x43ba93=_[_0xa9f5('0x3d')]({},_0x43ba93,_0x51741f[_0xa9f5('0x3e')]);var _0x5a4715={'where':_0x43ba93[_0xa9f5('0x39')]};return db[_0xa9f5('0x2b')]['count'](_0x5a4715)[_0xa9f5('0x25')](function(_0x40b5fb){_0x5faf64['count']=_0x40b5fb;if(_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x3f')]){_0x43ba93['include']=[{'all':!![]}];}return db[_0xa9f5('0x2b')][_0xa9f5('0x40')](_0x43ba93);})['then'](function(_0x465f95){_0x5faf64['rows']=_0x465f95;return _0x5faf64;})[_0xa9f5('0x25')](respondWithFilteredResult(_0x2fbe8c,_0x43ba93))[_0xa9f5('0x41')](handleError(_0x2fbe8c,null));};exports['show']=function(_0xde7ab7,_0x488380){var _0x5de828={'raw':!![],'where':{'id':_0xde7ab7[_0xa9f5('0x42')]['id']}},_0x2732b2={};_0x2732b2[_0xa9f5('0x2e')]=_[_0xa9f5('0x30')](db[_0xa9f5('0x2b')][_0xa9f5('0x2c')]);_0x2732b2[_0xa9f5('0x2f')]=_[_0xa9f5('0x30')](_0xde7ab7[_0xa9f5('0x2f')]);_0x2732b2['filters']=_[_0xa9f5('0x32')](_0x2732b2[_0xa9f5('0x2e')],_0x2732b2[_0xa9f5('0x2f')]);_0x5de828[_0xa9f5('0x33')]=_[_0xa9f5('0x32')](_0x2732b2[_0xa9f5('0x2e')],qs[_0xa9f5('0x34')](_0xde7ab7[_0xa9f5('0x2f')][_0xa9f5('0x34')]));_0x5de828[_0xa9f5('0x33')]=_0x5de828[_0xa9f5('0x33')][_0xa9f5('0x35')]?_0x5de828[_0xa9f5('0x33')]:_0x2732b2[_0xa9f5('0x2e')];if(_0xde7ab7[_0xa9f5('0x2f')][_0xa9f5('0x3f')]){_0x5de828[_0xa9f5('0x43')]=[{'all':!![]}];}_0x5de828=_[_0xa9f5('0x3d')]({},_0x5de828,_0xde7ab7[_0xa9f5('0x3e')]);return db['JscriptyAnswerReport']['find'](_0x5de828)[_0xa9f5('0x25')](handleEntityNotFound(_0x488380,null))[_0xa9f5('0x25')](respondWithResult(_0x488380,null))['catch'](handleError(_0x488380,null));};exports[_0xa9f5('0x44')]=function(_0x30ae0f,_0x44ee96){return db['JscriptyAnswerReport'][_0xa9f5('0x44')](_0x30ae0f['body'],{})[_0xa9f5('0x25')](respondWithResult(_0x44ee96,0xc9))[_0xa9f5('0x41')](handleError(_0x44ee96,null));};exports[_0xa9f5('0x24')]=function(_0x836a8d,_0x102ed8){if(_0x836a8d[_0xa9f5('0x45')]['id']){delete _0x836a8d['body']['id'];}return db[_0xa9f5('0x2b')]['find']({'where':{'id':_0x836a8d['params']['id']}})[_0xa9f5('0x25')](handleEntityNotFound(_0x102ed8,null))['then'](saveUpdates(_0x836a8d[_0xa9f5('0x45')],null))['then'](respondWithResult(_0x102ed8,null))[_0xa9f5('0x41')](handleError(_0x102ed8,null));};exports[_0xa9f5('0x46')]=function(_0xafeecc,_0x4c3587){return db[_0xa9f5('0x2b')][_0xa9f5('0x47')]({'where':{'id':_0xafeecc[_0xa9f5('0x42')]['id']}})['then'](handleEntityNotFound(_0x4c3587,null))[_0xa9f5('0x25')](removeEntity(_0x4c3587,null))['catch'](handleError(_0x4c3587,null));};exports['describe']=function(_0x455918,_0x1f6bd3){return db[_0xa9f5('0x2b')][_0xa9f5('0x48')]()['then'](respondWithResult(_0x1f6bd3,null))[_0xa9f5('0x41')](handleError(_0x1f6bd3,null));};
\ No newline at end of file
index 8a6027d..89409aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5057=['bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','define','report_jscripty_answers','lodash','util','../../config/logger'];(function(_0x11b6a6,_0x3f8c14){var _0x1441e2=function(_0x8ef3f2){while(--_0x8ef3f2){_0x11b6a6['push'](_0x11b6a6['shift']());}};_0x1441e2(++_0x3f8c14);}(_0x5057,0xb8));var _0x7505=function(_0x23790a,_0xde883e){_0x23790a=_0x23790a-0x0;var _0x1e57b9=_0x5057[_0x23790a];return _0x1e57b9;};'use strict';var _=require(_0x7505('0x0'));var util=require(_0x7505('0x1'));var logger=require(_0x7505('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7505('0x3'));var rp=require(_0x7505('0x4'));var fs=require('fs');var path=require(_0x7505('0x5'));var rimraf=require(_0x7505('0x6'));var config=require(_0x7505('0x7'));var attributes=require(_0x7505('0x8'));module['exports']=function(_0x50d8c2,_0x39f502){return _0x50d8c2[_0x7505('0x9')]('JscriptyAnswerReport',attributes,{'tableName':_0x7505('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4355=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0x4355,0x135));var _0x5435=function(_0x3ef1b8,_0x49073d){_0x3ef1b8=_0x3ef1b8-0x0;var _0x422941=_0x4355[_0x3ef1b8];return _0x422941;};'use strict';var _=require(_0x5435('0x0'));var util=require(_0x5435('0x1'));var logger=require(_0x5435('0x2'))(_0x5435('0x3'));var moment=require(_0x5435('0x4'));var BPromise=require(_0x5435('0x5'));var rp=require(_0x5435('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5435('0x7'));var config=require(_0x5435('0x8'));var attributes=require(_0x5435('0x9'));module[_0x5435('0xa')]=function(_0x3e935b,_0x15da9d){return _0x3e935b['define'](_0x5435('0xb'),attributes,{'tableName':_0x5435('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0130bbe..a0c81f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f5=['catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x2f71f6,_0x3a1f4d){var _0x2b23ea=function(_0x285980){while(--_0x285980){_0x2f71f6['push'](_0x2f71f6['shift']());}};_0x2b23ea(++_0x3a1f4d);}(_0x37f5,0xd0));var _0x537f=function(_0x5d981c,_0x3bd033){_0x5d981c=_0x5d981c-0x0;var _0x1b3e92=_0x37f5[_0x5d981c];return _0x1b3e92;};'use strict';var _=require(_0x537f('0x0'));var util=require('util');var moment=require(_0x537f('0x1'));var BPromise=require(_0x537f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x537f('0x3'))['db'];var utils=require(_0x537f('0x4'));var logger=require(_0x537f('0x5'))(_0x537f('0x6'));var config=require(_0x537f('0x7'));var jayson=require(_0x537f('0x8'));var client=jayson[_0x537f('0x9')][_0x537f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e544f,_0x3ba2dd,_0x308174){return new BPromise(function(_0x1f7e9b,_0x837fe6){return client[_0x537f('0xb')](_0x2e544f,_0x308174)['then'](function(_0xde7560){logger[_0x537f('0xc')](_0x537f('0xd'),_0x3ba2dd,_0x537f('0xe'));logger[_0x537f('0xf')](_0x537f('0x10'),_0x3ba2dd,_0x537f('0xe'),JSON[_0x537f('0x11')](_0xde7560));if(_0xde7560[_0x537f('0x12')]){if(_0xde7560[_0x537f('0x12')][_0x537f('0x13')]===0x1f4){logger[_0x537f('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3ba2dd,_0xde7560[_0x537f('0x12')][_0x537f('0x14')]);return _0x837fe6(_0xde7560['error'][_0x537f('0x14')]);}logger[_0x537f('0x12')](_0x537f('0xd'),_0x3ba2dd,_0xde7560[_0x537f('0x12')][_0x537f('0x14')]);return _0x1f7e9b(_0xde7560[_0x537f('0x12')][_0x537f('0x14')]);}else{logger['info'](_0x537f('0xd'),_0x3ba2dd,_0x537f('0xe'));_0x1f7e9b(_0xde7560[_0x537f('0x15')][_0x537f('0x14')]);}})[_0x537f('0x16')](function(_0x224699){logger[_0x537f('0x12')](_0x537f('0xd'),_0x3ba2dd,_0x224699);_0x837fe6(_0x224699);});});}
\ No newline at end of file
+var _0x3e8b=['result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x54b67b,_0x3aec5a){var _0x3e0cbf=function(_0x2f7285){while(--_0x2f7285){_0x54b67b['push'](_0x54b67b['shift']());}};_0x3e0cbf(++_0x3aec5a);}(_0x3e8b,0x1a6));var _0xb3e8=function(_0x55fc3a,_0x11ea6c){_0x55fc3a=_0x55fc3a-0x0;var _0x532260=_0x3e8b[_0x55fc3a];return _0x532260;};'use strict';var _=require('lodash');var util=require(_0xb3e8('0x0'));var moment=require(_0xb3e8('0x1'));var BPromise=require(_0xb3e8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb3e8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb3e8('0x4'));var logger=require(_0xb3e8('0x5'))('rpc');var config=require(_0xb3e8('0x6'));var jayson=require(_0xb3e8('0x7'));var client=jayson[_0xb3e8('0x8')][_0xb3e8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xab0e37,_0xefc8ab,_0x46b198){return new BPromise(function(_0x1545ce,_0x2a21f8){return client['request'](_0xab0e37,_0x46b198)[_0xb3e8('0xa')](function(_0x1038fc){logger['info'](_0xb3e8('0xb'),_0xefc8ab,_0xb3e8('0xc'));logger['debug'](_0xb3e8('0xd'),_0xefc8ab,_0xb3e8('0xc'),JSON[_0xb3e8('0xe')](_0x1038fc));if(_0x1038fc[_0xb3e8('0xf')]){if(_0x1038fc[_0xb3e8('0xf')]['code']===0x1f4){logger[_0xb3e8('0xf')](_0xb3e8('0xb'),_0xefc8ab,_0x1038fc['error'][_0xb3e8('0x10')]);return _0x2a21f8(_0x1038fc[_0xb3e8('0xf')][_0xb3e8('0x10')]);}logger[_0xb3e8('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s',_0xefc8ab,_0x1038fc[_0xb3e8('0xf')][_0xb3e8('0x10')]);return _0x1545ce(_0x1038fc[_0xb3e8('0xf')][_0xb3e8('0x10')]);}else{logger[_0xb3e8('0x11')](_0xb3e8('0xb'),_0xefc8ab,_0xb3e8('0xc'));_0x1545ce(_0x1038fc[_0xb3e8('0x12')][_0xb3e8('0x10')]);}})[_0xb3e8('0x13')](function(_0x4ed0a5){logger[_0xb3e8('0xf')](_0xb3e8('0xb'),_0xefc8ab,_0x4ed0a5);_0x2a21f8(_0x4ed0a5);});});}
\ No newline at end of file
index 74d47da..e2d381d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75e6=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','/:id/sessions','getSessions','getAnswers','/:id/summary','30s','getSummary','post','create','clone'];(function(_0x316ad5,_0x2ca778){var _0x442a94=function(_0x180cb2){while(--_0x180cb2){_0x316ad5['push'](_0x316ad5['shift']());}};_0x442a94(++_0x2ca778);}(_0x75e6,0x155));var _0x675e=function(_0x11e05d,_0x3a4491){_0x11e05d=_0x11e05d-0x0;var _0x335588=_0x75e6[_0x11e05d];return _0x335588;};'use strict';var multer=require(_0x675e('0x0'));var util=require(_0x675e('0x1'));var path=require(_0x675e('0x2'));var timeout=require(_0x675e('0x3'));var express=require(_0x675e('0x4'));var router=express[_0x675e('0x5')]();var fs_extra=require(_0x675e('0x6'));var auth=require(_0x675e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x675e('0x8'));var controller=require(_0x675e('0x9'));router[_0x675e('0xa')]('/',auth[_0x675e('0xb')](),controller[_0x675e('0xc')]);router['get'](_0x675e('0xd'),auth[_0x675e('0xb')](),controller['show']);router['get'](_0x675e('0xe'),auth['isAuthenticated'](),controller[_0x675e('0xf')]);router[_0x675e('0xa')]('/:id/answers',auth[_0x675e('0xb')](),controller[_0x675e('0x10')]);router[_0x675e('0xa')](_0x675e('0x11'),auth[_0x675e('0xb')](),timeout(_0x675e('0x12')),controller[_0x675e('0x13')]);router[_0x675e('0x14')]('/',auth[_0x675e('0xb')](),controller[_0x675e('0x15')]);router[_0x675e('0x14')]('/:id/clone',auth[_0x675e('0xb')](),controller[_0x675e('0x16')]);router[_0x675e('0x17')](_0x675e('0xd'),auth[_0x675e('0xb')](),controller[_0x675e('0x18')]);router[_0x675e('0x19')](_0x675e('0xd'),auth[_0x675e('0xb')](),controller[_0x675e('0x1a')]);module[_0x675e('0x1b')]=router;
\ No newline at end of file
+var _0x8813=['isAuthenticated','show','getSessions','/:id/answers','30s','getSummary','post','/:id/clone','put','update','delete','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id'];(function(_0x40f5ca,_0xc9c782){var _0x22b940=function(_0x4cc733){while(--_0x4cc733){_0x40f5ca['push'](_0x40f5ca['shift']());}};_0x22b940(++_0xc9c782);}(_0x8813,0x14e));var _0x3881=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8813[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3881('0x0'));var util=require(_0x3881('0x1'));var path=require(_0x3881('0x2'));var timeout=require(_0x3881('0x3'));var express=require('express');var router=express[_0x3881('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3881('0x5'));var interaction=require(_0x3881('0x6'));var config=require(_0x3881('0x7'));var controller=require('./jscriptyProject.controller');router[_0x3881('0x8')]('/',auth['isAuthenticated'](),controller[_0x3881('0x9')]);router[_0x3881('0x8')](_0x3881('0xa'),auth[_0x3881('0xb')](),controller[_0x3881('0xc')]);router['get']('/:id/sessions',auth['isAuthenticated'](),controller[_0x3881('0xd')]);router[_0x3881('0x8')](_0x3881('0xe'),auth[_0x3881('0xb')](),controller['getAnswers']);router[_0x3881('0x8')]('/:id/summary',auth[_0x3881('0xb')](),timeout(_0x3881('0xf')),controller[_0x3881('0x10')]);router[_0x3881('0x11')]('/',auth[_0x3881('0xb')](),controller['create']);router[_0x3881('0x11')](_0x3881('0x12'),auth[_0x3881('0xb')](),controller['clone']);router[_0x3881('0x13')](_0x3881('0xa'),auth[_0x3881('0xb')](),controller[_0x3881('0x14')]);router[_0x3881('0x15')](_0x3881('0xa'),auth[_0x3881('0xb')](),controller[_0x3881('0x16')]);module['exports']=router;
\ No newline at end of file
index f2fb783..0e43b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f4=['sequelize','lodash','util','exports','name','STRING','TEXT','long','isObjectLike','setDataValue','stringify','isString','formData','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','description','BOOLEAN'];(function(_0x3e95c0,_0x27f1eb){var _0x11ace5=function(_0x4e11d4){while(--_0x4e11d4){_0x3e95c0['push'](_0x3e95c0['shift']());}};_0x11ace5(++_0x27f1eb);}(_0x62f4,0x110));var _0x462f=function(_0x4927a1,_0x25d9ae){_0x4927a1=_0x4927a1-0x0;var _0x1d565b=_0x62f4[_0x4927a1];return _0x1d565b;};'use strict';var Sequelize=require(_0x462f('0x0'));var _=require(_0x462f('0x1'));var util=require(_0x462f('0x2'));module[_0x462f('0x3')]={'name':{'type':Sequelize['STRING'],'unique':_0x462f('0x4')},'description':{'type':Sequelize[_0x462f('0x5')]},'formData':{'type':Sequelize[_0x462f('0x6')](_0x462f('0x7')),'set':function(_0x129fae){if(_[_0x462f('0x8')](_0x129fae)){this[_0x462f('0x9')]('formData',JSON[_0x462f('0xa')](_0x129fae));}else if(_[_0x462f('0xb')](_0x129fae)){this[_0x462f('0x9')]('formData',_0x129fae);}else{this['setDataValue'](_0x462f('0xc'),util['format'](_0x462f('0xd'),this['getDataValue'](_0x462f('0x4'))||'',this['getDataValue'](_0x462f('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x462f('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x462f('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x861e=['isObjectLike','formData','stringify','isString','setDataValue','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long'];(function(_0x2222ec,_0x4d1989){var _0x196d09=function(_0xf8196c){while(--_0xf8196c){_0x2222ec['push'](_0x2222ec['shift']());}};_0x196d09(++_0x4d1989);}(_0x861e,0x1b3));var _0xe861=function(_0x151579,_0x1812c8){_0x151579=_0x151579-0x0;var _0x40157b=_0x861e[_0x151579];return _0x40157b;};'use strict';var Sequelize=require(_0xe861('0x0'));var _=require(_0xe861('0x1'));var util=require(_0xe861('0x2'));module[_0xe861('0x3')]={'name':{'type':Sequelize[_0xe861('0x4')],'unique':'name'},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xe861('0x5')](_0xe861('0x6')),'set':function(_0x3ac8ac){if(_[_0xe861('0x7')](_0x3ac8ac)){this['setDataValue'](_0xe861('0x8'),JSON[_0xe861('0x9')](_0x3ac8ac));}else if(_[_0xe861('0xa')](_0x3ac8ac)){this[_0xe861('0xb')](_0xe861('0x8'),_0x3ac8ac);}else{this[_0xe861('0xb')](_0xe861('0x8'),util['format'](_0xe861('0xc'),this[_0xe861('0xd')](_0xe861('0xe'))||'',this['getDataValue'](_0xe861('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xe861('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xe861('0x10')],'defaultValue':![]}};
\ No newline at end of file
index d459f2f..0e47afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x777d=['zip-dir','fast-json-patch','moment','bluebird','sox','ejs','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','count','offset','Content-Range','apply','update','then','destroy','get','Projects','UserProfileResource','error','stack','name','send','index','map','JscriptyProject','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','limit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','keys','omit','updatedAt','body','createdAt','autoAssociation','findOne','JscriptySessionReport','hasOwnProperty','sort','ProjectId','getAnswers','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','SessionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','rimraf'];(function(_0xee18e4,_0x1835eb){var _0x5993a8=function(_0x1af87c){while(--_0x1af87c){_0xee18e4['push'](_0xee18e4['shift']());}};_0x5993a8(++_0x1835eb);}(_0x777d,0xe9));var _0xd777=function(_0x575a31,_0x56336f){_0x575a31=_0x575a31-0x0;var _0x5d7dad=_0x777d[_0x575a31];return _0x5d7dad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd777('0x0'));var zipdir=require(_0xd777('0x1'));var jsonpatch=require(_0xd777('0x2'));var rp=require('request-promise');var moment=require(_0xd777('0x3'));var BPromise=require(_0xd777('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xd777('0x5'));var csv=require('to-csv');var ejs=require(_0xd777('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd777('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd777('0x8'));var toCsv=require(_0xd777('0x9'));var querystring=require(_0xd777('0xa'));var Papa=require(_0xd777('0xb'));var Redis=require(_0xd777('0xc'));var authService=require(_0xd777('0xd'));var qs=require(_0xd777('0xe'));var as=require(_0xd777('0xf'));var hardwareService=require(_0xd777('0x10'));var logger=require(_0xd777('0x11'))(_0xd777('0x12'));var utils=require(_0xd777('0x13'));var config=require(_0xd777('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25f574,_0x560778){_0x560778=_0x560778||0xcc;return function(_0x2cc3e7){if(_0x2cc3e7){return _0x25f574[_0xd777('0x15')](_0x560778);}return _0x25f574[_0xd777('0x16')](_0x560778)[_0xd777('0x17')]();};}function respondWithResult(_0x2ac82f,_0x5d0ded){_0x5d0ded=_0x5d0ded||0xc8;return function(_0x84141c){if(_0x84141c){return _0x2ac82f['status'](_0x5d0ded)[_0xd777('0x18')](_0x84141c);}};}function respondWithFilteredResult(_0x2cd014,_0x1e5ecb){return function(_0x1ef016){if(_0x1ef016){var _0x25e3f2=typeof _0x1e5ecb['offset']===_0xd777('0x19')&&typeof _0x1e5ecb['limit']===_0xd777('0x19');var _0x4dcaed=_0x1ef016[_0xd777('0x1a')];var _0x386f1a=_0x25e3f2?0x0:_0x1e5ecb[_0xd777('0x1b')];var _0x13b63b=_0x25e3f2?_0x1ef016[_0xd777('0x1a')]:_0x1e5ecb[_0xd777('0x1b')]+_0x1e5ecb['limit'];var _0x4d6100;if(_0x13b63b>=_0x4dcaed){_0x13b63b=_0x4dcaed;_0x4d6100=0xc8;}else{_0x4d6100=0xce;}_0x2cd014[_0xd777('0x16')](_0x4d6100);return _0x2cd014['set'](_0xd777('0x1c'),_0x386f1a+'-'+_0x13b63b+'/'+_0x4dcaed)['json'](_0x1ef016);}return null;};}function patchUpdates(_0x58a079){return function(_0x5b2204){try{jsonpatch[_0xd777('0x1d')](_0x5b2204,_0x58a079,!![]);}catch(_0x4e53ed){return BPromise['reject'](_0x4e53ed);}return _0x5b2204['save']();};}function saveUpdates(_0x48d18c,_0x55b975){return function(_0x8cfb5a){if(_0x8cfb5a){return _0x8cfb5a[_0xd777('0x1e')](_0x48d18c)[_0xd777('0x1f')](function(_0x343405){return _0x343405;});}return null;};}function removeEntity(_0xfebc2f,_0x33c3d4){return function(_0x2ff8d3){if(_0x2ff8d3){return _0x2ff8d3[_0xd777('0x20')]()[_0xd777('0x1f')](function(){var _0x3e637a=_0x2ff8d3[_0xd777('0x21')]({'plain':!![]});var _0x56af61=_0xd777('0x22');return db[_0xd777('0x23')][_0xd777('0x20')]({'where':{'type':_0x56af61,'resourceId':_0x3e637a['id']}})[_0xd777('0x1f')](function(){return _0x2ff8d3;});})[_0xd777('0x1f')](function(){_0xfebc2f['status'](0xcc)[_0xd777('0x17')]();});}};}function handleEntityNotFound(_0x5e752b,_0x482ad1){return function(_0x2ff04b){if(!_0x2ff04b){_0x5e752b[_0xd777('0x15')](0x194);}return _0x2ff04b;};}function handleError(_0x2dae46,_0x3db307){_0x3db307=_0x3db307||0x1f4;return function(_0x4c941c){logger[_0xd777('0x24')](_0x4c941c[_0xd777('0x25')]);if(_0x4c941c[_0xd777('0x26')]){delete _0x4c941c[_0xd777('0x26')];}_0x2dae46[_0xd777('0x16')](_0x3db307)[_0xd777('0x27')](_0x4c941c);};}exports[_0xd777('0x28')]=function(_0x3ebb94,_0x508587){var _0x271fcb={},_0x587941={},_0x5bace1={'count':0x0,'rows':[]};var _0x3e69eb=_[_0xd777('0x29')](db[_0xd777('0x2a')][_0xd777('0x2b')],function(_0x5a5b9e){return{'name':_0x5a5b9e['fieldName'],'type':_0x5a5b9e[_0xd777('0x2c')][_0xd777('0x2d')]};});_0x587941[_0xd777('0x2e')]=_[_0xd777('0x29')](_0x3e69eb,_0xd777('0x26'));_0x587941[_0xd777('0x2f')]=_['keys'](_0x3ebb94['query']);_0x587941[_0xd777('0x30')]=_[_0xd777('0x31')](_0x587941[_0xd777('0x2e')],_0x587941[_0xd777('0x2f')]);_0x271fcb[_0xd777('0x32')]=_[_0xd777('0x31')](_0x587941[_0xd777('0x2e')],qs[_0xd777('0x33')](_0x3ebb94['query']['fields']));_0x271fcb[_0xd777('0x32')]=_0x271fcb['attributes'][_0xd777('0x34')]?_0x271fcb[_0xd777('0x32')]:_0x587941[_0xd777('0x2e')];if(!_0x3ebb94[_0xd777('0x2f')]['hasOwnProperty'](_0xd777('0x35'))){_0x271fcb['limit']=qs[_0xd777('0x36')](_0x3ebb94['query']['limit']);_0x271fcb['offset']=qs['offset'](_0x3ebb94[_0xd777('0x2f')][_0xd777('0x1b')]);}_0x271fcb[_0xd777('0x37')]=qs['sort'](_0x3ebb94['query']['sort']);_0x271fcb[_0xd777('0x38')]=qs[_0xd777('0x30')](_[_0xd777('0x39')](_0x3ebb94[_0xd777('0x2f')],_0x587941[_0xd777('0x30')]),_0x3e69eb);if(_0x3ebb94[_0xd777('0x2f')][_0xd777('0x3a')]){_0x271fcb[_0xd777('0x38')]=_[_0xd777('0x3b')](_0x271fcb[_0xd777('0x38')],{'$or':_['map'](_0x3e69eb,function(_0x35d73a){if(_0x35d73a[_0xd777('0x2c')]!==_0xd777('0x3c')){var _0x48198a={};_0x48198a[_0x35d73a[_0xd777('0x26')]]={'$like':'%'+_0x3ebb94[_0xd777('0x2f')][_0xd777('0x3a')]+'%'};return _0x48198a;}})});}_0x271fcb=_[_0xd777('0x3b')]({},_0x271fcb,_0x3ebb94[_0xd777('0x3d')]);var _0x34381b={'where':_0x271fcb[_0xd777('0x38')]};return db[_0xd777('0x2a')]['count'](_0x34381b)[_0xd777('0x1f')](function(_0x52b3d0){_0x5bace1[_0xd777('0x1a')]=_0x52b3d0;if(_0x3ebb94[_0xd777('0x2f')][_0xd777('0x3e')]){_0x271fcb[_0xd777('0x3f')]=[{'all':!![]}];}return db[_0xd777('0x2a')][_0xd777('0x40')](_0x271fcb);})['then'](function(_0x3dd8af){_0x5bace1[_0xd777('0x41')]=_0x3dd8af;return _0x5bace1;})[_0xd777('0x1f')](respondWithFilteredResult(_0x508587,_0x271fcb))['catch'](handleError(_0x508587,null));};exports[_0xd777('0x42')]=function(_0x1c8138,_0x38fa6a){var _0x36a825={'raw':![],'where':{'id':_0x1c8138[_0xd777('0x43')]['id']}},_0x5357cd={};_0x5357cd[_0xd777('0x2e')]=_['keys'](db[_0xd777('0x2a')][_0xd777('0x2b')]);_0x5357cd['query']=_['keys'](_0x1c8138[_0xd777('0x2f')]);_0x5357cd[_0xd777('0x30')]=_[_0xd777('0x31')](_0x5357cd[_0xd777('0x2e')],_0x5357cd[_0xd777('0x2f')]);_0x36a825[_0xd777('0x32')]=_[_0xd777('0x31')](_0x5357cd[_0xd777('0x2e')],qs[_0xd777('0x33')](_0x1c8138[_0xd777('0x2f')][_0xd777('0x33')]));_0x36a825['attributes']=_0x36a825[_0xd777('0x32')][_0xd777('0x34')]?_0x36a825[_0xd777('0x32')]:_0x5357cd['model'];if(_0x1c8138['query'][_0xd777('0x3e')]){_0x36a825[_0xd777('0x3f')]=[{'all':!![]}];}_0x36a825=_[_0xd777('0x3b')]({},_0x36a825,_0x1c8138[_0xd777('0x3d')]);return db[_0xd777('0x2a')][_0xd777('0x44')](_0x36a825)[_0xd777('0x1f')](handleEntityNotFound(_0x38fa6a,null))[_0xd777('0x1f')](respondWithResult(_0x38fa6a,null))['catch'](handleError(_0x38fa6a,null));};exports[_0xd777('0x45')]=function(_0x559232,_0x4c059d){return db[_0xd777('0x2a')][_0xd777('0x45')](_0x559232['body'],{})[_0xd777('0x1f')](function(_0xf95dbb){var _0x404b81=_0x559232[_0xd777('0x46')]['get']({'plain':!![]});if(!_0x404b81)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x404b81[_0xd777('0x47')]==='user'){var _0x45b806=_0xf95dbb[_0xd777('0x21')]({'plain':!![]});var _0xdf8250=_0xd777('0x22');return db[_0xd777('0x48')]['find']({'where':{'name':_0xdf8250,'userProfileId':_0x404b81[_0xd777('0x49')]},'raw':!![]})[_0xd777('0x1f')](function(_0x2ae04){if(_0x2ae04&&_0x2ae04['autoAssociation']===0x0){return db[_0xd777('0x23')][_0xd777('0x45')]({'name':_0x45b806['name'],'resourceId':_0x45b806['id'],'type':_0x2ae04[_0xd777('0x26')],'sectionId':_0x2ae04['id']},{})[_0xd777('0x1f')](function(){return _0xf95dbb;});}else{return _0xf95dbb;}})[_0xd777('0x4a')](function(_0x52e9db){logger[_0xd777('0x24')](_0xd777('0x4b'),_0x52e9db);throw _0x52e9db;});}return _0xf95dbb;})[_0xd777('0x1f')](respondWithResult(_0x4c059d,0xc9))[_0xd777('0x4a')](handleError(_0x4c059d,null));};exports[_0xd777('0x4c')]=function(_0x1191b5,_0x1b6f1a){var _0x38a80b={'where':{'id':_0x1191b5[_0xd777('0x43')]['id']}},_0x406e0e={};_0x406e0e[_0xd777('0x2e')]=_[_0xd777('0x4d')](db[_0xd777('0x2a')][_0xd777('0x2b')]);_0x38a80b[_0xd777('0x32')]=_[_0xd777('0x31')](_0x406e0e[_0xd777('0x2e')],qs[_0xd777('0x33')](_0x1191b5[_0xd777('0x2f')][_0xd777('0x33')]));_0x38a80b[_0xd777('0x32')]=_0x38a80b[_0xd777('0x32')][_0xd777('0x34')]?_0x38a80b['attributes']:_0x406e0e['model'];if(_0x1191b5['query'][_0xd777('0x3e')]){_0x38a80b[_0xd777('0x3f')]=[{'all':!![]}];}_0x38a80b=_[_0xd777('0x3b')]({},_0x38a80b,_0x1191b5[_0xd777('0x3d')]);return db[_0xd777('0x2a')]['find'](_0x38a80b)[_0xd777('0x1f')](handleEntityNotFound(_0x1b6f1a,null))[_0xd777('0x1f')](function(_0x5dc6d5){if(_0x5dc6d5){var _0x202310=_0x5dc6d5[_0xd777('0x21')]({'plain':!![]});_0x202310=qs[_0xd777('0x4e')](_0x202310,['id','createdAt',_0xd777('0x4f')]);_0x1191b5['body']=_[_0xd777('0x4e')](_0x1191b5[_0xd777('0x50')],['id',_0xd777('0x51'),_0xd777('0x4f')]);return db[_0xd777('0x2a')]['create'](_[_0xd777('0x3b')](_0x202310,_0x1191b5['body']),{'include':_0x1191b5[_0xd777('0x2f')][_0xd777('0x3e')]?[{'all':!![]}]:undefined})[_0xd777('0x1f')](function(_0x452bcf){var _0x243f1e=_0x1191b5[_0xd777('0x46')]['get']({'plain':!![]});if(!_0x243f1e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x243f1e[_0xd777('0x47')]==='user'){var _0x4cd454=_0x452bcf[_0xd777('0x21')]({'plain':!![]});var _0x54c346=_0xd777('0x22');return db[_0xd777('0x48')][_0xd777('0x44')]({'where':{'name':_0x54c346,'userProfileId':_0x243f1e[_0xd777('0x49')]},'raw':!![]})['then'](function(_0x4ac4fc){if(_0x4ac4fc&&_0x4ac4fc[_0xd777('0x52')]===0x0){return db[_0xd777('0x23')][_0xd777('0x45')]({'name':_0x4cd454[_0xd777('0x26')],'resourceId':_0x4cd454['id'],'type':_0x4ac4fc[_0xd777('0x26')],'sectionId':_0x4ac4fc['id']},{})[_0xd777('0x1f')](function(){return _0x452bcf;});}else{return _0x452bcf;}})[_0xd777('0x4a')](function(_0x5aa003){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5aa003);throw _0x5aa003;});}return _0x452bcf;});}})[_0xd777('0x1f')](respondWithResult(_0x1b6f1a,0xc9))[_0xd777('0x4a')](handleError(_0x1b6f1a,null));};exports[_0xd777('0x1e')]=function(_0xe2cada,_0x48a889){if(_0xe2cada[_0xd777('0x50')]['id']){delete _0xe2cada[_0xd777('0x50')]['id'];}return db[_0xd777('0x2a')][_0xd777('0x44')]({'where':{'id':_0xe2cada[_0xd777('0x43')]['id']}})['then'](handleEntityNotFound(_0x48a889,null))[_0xd777('0x1f')](saveUpdates(_0xe2cada['body'],null))[_0xd777('0x1f')](respondWithResult(_0x48a889,null))[_0xd777('0x4a')](handleError(_0x48a889,null));};exports[_0xd777('0x20')]=function(_0x5ddbf5,_0x83dae1){return db[_0xd777('0x2a')][_0xd777('0x44')]({'where':{'id':_0x5ddbf5[_0xd777('0x43')]['id']}})[_0xd777('0x1f')](handleEntityNotFound(_0x83dae1,null))[_0xd777('0x1f')](removeEntity(_0x83dae1,null))[_0xd777('0x4a')](handleError(_0x83dae1,null));};exports['getSessions']=function(_0x3ad7cc,_0x473499,_0x29f158){var _0x5e6330={'raw':!![],'where':{}};var _0x41e7ca={};var _0x2e15b1={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xd777('0x53')]({'where':{'id':_0x3ad7cc[_0xd777('0x43')]['id']}})['then'](handleEntityNotFound(_0x473499,null))[_0xd777('0x1f')](function(_0x129ef0){if(_0x129ef0){_0x41e7ca[_0xd777('0x2e')]=_['keys'](db[_0xd777('0x54')][_0xd777('0x2b')]);_0x41e7ca['query']=_[_0xd777('0x4d')](_0x3ad7cc[_0xd777('0x2f')]);_0x41e7ca[_0xd777('0x30')]=_['intersection'](_0x41e7ca['model'],_0x41e7ca[_0xd777('0x2f')]);_0x5e6330[_0xd777('0x32')]=_[_0xd777('0x31')](_0x41e7ca[_0xd777('0x2e')],qs[_0xd777('0x33')](_0x3ad7cc[_0xd777('0x2f')][_0xd777('0x33')]));_0x5e6330[_0xd777('0x32')]=_0x5e6330[_0xd777('0x32')]['length']?_0x5e6330[_0xd777('0x32')]:_0x41e7ca[_0xd777('0x2e')];if(!_0x3ad7cc[_0xd777('0x2f')][_0xd777('0x55')](_0xd777('0x35'))){_0x5e6330[_0xd777('0x36')]=qs[_0xd777('0x36')](_0x3ad7cc[_0xd777('0x2f')][_0xd777('0x36')]);_0x5e6330['offset']=qs[_0xd777('0x1b')](_0x3ad7cc[_0xd777('0x2f')][_0xd777('0x1b')]);}_0x5e6330[_0xd777('0x37')]=qs['sort'](_0x3ad7cc['query'][_0xd777('0x56')]);_0x5e6330['where']=qs[_0xd777('0x30')](_[_0xd777('0x39')](_0x3ad7cc[_0xd777('0x2f')],_0x41e7ca['filters']));_0x5e6330[_0xd777('0x38')][_0xd777('0x57')]=_0x129ef0['id'];if(_0x3ad7cc['query'][_0xd777('0x3a')]){_0x5e6330[_0xd777('0x38')]=_[_0xd777('0x3b')](_0x5e6330['where'],{'$or':_[_0xd777('0x29')](_0x5e6330['attributes'],function(_0x30d207){var _0x10ef11={};_0x10ef11[_0x30d207]={'$like':'%'+_0x3ad7cc[_0xd777('0x2f')]['filter']+'%'};return _0x10ef11;})});}_0x5e6330=_[_0xd777('0x3b')]({},_0x5e6330,_0x3ad7cc[_0xd777('0x3d')]);return db[_0xd777('0x54')][_0xd777('0x1a')]({'where':_0x5e6330[_0xd777('0x38')]})['then'](function(_0x31d7e6){_0x2e15b1['count']=_0x31d7e6;if(_0x3ad7cc[_0xd777('0x2f')][_0xd777('0x3e')]){_0x5e6330[_0xd777('0x3f')]=[{'all':!![]}];}return db[_0xd777('0x54')][_0xd777('0x40')](_0x5e6330);})[_0xd777('0x1f')](function(_0x1677b9){_0x2e15b1[_0xd777('0x41')]=_0x1677b9;return _0x2e15b1;});}})[_0xd777('0x1f')](respondWithFilteredResult(_0x473499,_0x5e6330))[_0xd777('0x4a')](handleError(_0x473499,null));};exports[_0xd777('0x58')]=function(_0x4e4a22,_0x2ca75e,_0x23cebb){var _0x5d6ca3={'raw':!![],'where':{}};var _0x24017d={};var _0x3f9bc6={'count':0x0,'rows':[]};return db['JscriptyProject']['findOne']({'where':{'id':_0x4e4a22['params']['id']}})[_0xd777('0x1f')](handleEntityNotFound(_0x2ca75e,null))['then'](function(_0x440150){if(_0x440150){_0x24017d[_0xd777('0x2e')]=_['keys'](db[_0xd777('0x59')]['rawAttributes']);_0x24017d[_0xd777('0x2f')]=_[_0xd777('0x4d')](_0x4e4a22[_0xd777('0x2f')]);_0x24017d[_0xd777('0x30')]=_[_0xd777('0x31')](_0x24017d['model'],_0x24017d[_0xd777('0x2f')]);_0x5d6ca3['attributes']=_['intersection'](_0x24017d['model'],qs[_0xd777('0x33')](_0x4e4a22['query']['fields']));_0x5d6ca3[_0xd777('0x32')]=_0x5d6ca3[_0xd777('0x32')][_0xd777('0x34')]?_0x5d6ca3[_0xd777('0x32')]:_0x24017d[_0xd777('0x2e')];if(!_0x4e4a22[_0xd777('0x2f')][_0xd777('0x55')](_0xd777('0x35'))){_0x5d6ca3['limit']=qs[_0xd777('0x36')](_0x4e4a22[_0xd777('0x2f')][_0xd777('0x36')]);_0x5d6ca3[_0xd777('0x1b')]=qs[_0xd777('0x1b')](_0x4e4a22[_0xd777('0x2f')][_0xd777('0x1b')]);}_0x5d6ca3[_0xd777('0x37')]=qs[_0xd777('0x56')](_0x4e4a22[_0xd777('0x2f')][_0xd777('0x56')]);_0x5d6ca3[_0xd777('0x38')]=qs[_0xd777('0x30')](_['pick'](_0x4e4a22['query'],_0x24017d[_0xd777('0x30')]));_0x5d6ca3[_0xd777('0x38')][_0xd777('0x57')]=_0x440150['id'];if(_0x4e4a22[_0xd777('0x2f')][_0xd777('0x3a')]){_0x5d6ca3[_0xd777('0x38')]=_[_0xd777('0x3b')](_0x5d6ca3[_0xd777('0x38')],{'$or':_[_0xd777('0x29')](_0x5d6ca3[_0xd777('0x32')],function(_0x39541f){var _0x433716={};_0x433716[_0x39541f]={'$like':'%'+_0x4e4a22[_0xd777('0x2f')][_0xd777('0x3a')]+'%'};return _0x433716;})});}_0x5d6ca3=_['merge']({},_0x5d6ca3,_0x4e4a22[_0xd777('0x3d')]);return db[_0xd777('0x59')][_0xd777('0x1a')]({'where':_0x5d6ca3['where']})[_0xd777('0x1f')](function(_0x5ae49d){_0x3f9bc6[_0xd777('0x1a')]=_0x5ae49d;if(_0x4e4a22[_0xd777('0x2f')][_0xd777('0x3e')]){_0x5d6ca3[_0xd777('0x3f')]=[{'all':!![]}];}return db[_0xd777('0x59')][_0xd777('0x40')](_0x5d6ca3);})[_0xd777('0x1f')](function(_0x44cf83){_0x3f9bc6[_0xd777('0x41')]=_0x44cf83;return _0x3f9bc6;});}})[_0xd777('0x1f')](respondWithFilteredResult(_0x2ca75e,_0x5d6ca3))[_0xd777('0x4a')](handleError(_0x2ca75e,null));};function char(_0x463a53){return _0xd777('0x5a')===typeof _0x463a53?String[_0xd777('0x5b')][_0xd777('0x1d')](null,arguments):_0x463a53;}function needsEncapsulation(_0x2f2b18){return!!_0x2f2b18&&(_0x2f2b18[_0xd777('0x5c')]()[_0xd777('0x5d')](char(0xd))>=0x0||_0x2f2b18[_0xd777('0x5c')]()[_0xd777('0x5d')](char(0xa))>=0x0||_0x2f2b18['toString']()[_0xd777('0x5d')](char(0x2c))>=0x0||_0x2f2b18[_0xd777('0x5c')]()[_0xd777('0x5d')](char(0x22))>=0x0);}function encapsulate(_0xa5ba49){var _0x38f91b=char(0x22),_0x372088='\x5c'+char(0x22),_0x39c4c1=_0xa5ba49[_0xd777('0x5c')]()[_0xd777('0x5e')](new RegExp(_0x38f91b,'g'),_0x372088);return _0x38f91b+_0x39c4c1+_0x38f91b;}exports[_0xd777('0x5f')]=function(_0x58c7bb,_0x2366b1,_0x139f50){var _0x94f14b,_0x5bab76;var _0x1cdb6a={'where':{'ProjectId':_0x58c7bb[_0xd777('0x43')]['id']}};if(_0x58c7bb[_0xd777('0x2f')][_0xd777('0x60')]){_0x1cdb6a[_0xd777('0x38')][_0xd777('0x61')]=JSON[_0xd777('0x62')](_0x58c7bb[_0xd777('0x2f')][_0xd777('0x60')]);}return db[_0xd777('0x54')][_0xd777('0x40')](_0x1cdb6a)[_0xd777('0x1f')](handleEntityNotFound(_0x2366b1,null))[_0xd777('0x1f')](function(_0x6f01c8){if(_0x6f01c8){_0x94f14b=_0x6f01c8;return db[_0xd777('0x63')][_0xd777('0x40')]({'where':{'SessionId':{'$in':_[_0xd777('0x29')](_0x94f14b,'id')},'ProjectId':_0x58c7bb['params']['id']},'order':_0xd777('0x64')});}})[_0xd777('0x1f')](handleEntityNotFound(_0x2366b1,null))[_0xd777('0x1f')](function(_0x365a1c){if(_0x365a1c){_0x5bab76=_0x365a1c;var _0x2bc932={};for(var _0x78d503=0x0,_0x12b35e=_0x5bab76[_0xd777('0x34')];_0x78d503<_0x12b35e;_0x78d503++){if(!_0x2bc932[_0xd777('0x55')](_0x5bab76[_0x78d503][_0xd777('0x65')])){_0x2bc932[_0x5bab76[_0x78d503][_0xd777('0x65')]]=needsEncapsulation(_0x5bab76[_0x78d503][_0xd777('0x66')])?encapsulate(_0x5bab76[_0x78d503][_0xd777('0x66')]):_0x5bab76[_0x78d503][_0xd777('0x66')];}}var _0xf329c6=[],_0x27c779={};for(var _0x4157f0=0x0,_0x335d92=_0x94f14b[_0xd777('0x34')];_0x4157f0<_0x335d92;_0x4157f0++){_0x27c779={'ProjectId':_0x58c7bb['params']['id'],'SessionId':_0x94f14b[_0x4157f0]['id'],'StartTime':moment(_0x94f14b[_0x4157f0]['starttime'])[_0xd777('0x67')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x350e5d=0x0,_0x32c53d=_0x5bab76[_0xd777('0x34')];_0x350e5d<_0x32c53d;_0x350e5d++){if(_0x5bab76[_0x350e5d][_0xd777('0x68')]==_0x94f14b[_0x4157f0]['id']&&_0x2bc932['hasOwnProperty'](_0x5bab76[_0x350e5d][_0xd777('0x65')])){_0x27c779[_0x2bc932[_0x5bab76[_0x350e5d][_0xd777('0x65')]]]=_0x5bab76[_0x350e5d][_0xd777('0x69')];}}for(var _0x1cc39c in _0x2bc932){if(!_0x27c779[_0xd777('0x55')](_0x2bc932[_0x1cc39c])){_0x27c779[_0x2bc932[_0x1cc39c]]=null;}}_0xf329c6[_0xd777('0x6a')](_0x27c779);}return _0xf329c6;}})['then'](function(_0x446d7f){if(!_[_0xd777('0x6b')](_0x446d7f)){var _0x1cc0b8=toCsv(_0x446d7f);var _0x459626=Date[_0xd777('0x6c')]();fs[_0xd777('0x6d')](util[_0xd777('0x67')](_0xd777('0x6e'),_0x58c7bb[_0xd777('0x43')]['id'],_0x459626),_0x1cc0b8);_0x2366b1[_0xd777('0x6f')]('Content-disposition',_0xd777('0x70')+util[_0xd777('0x67')](_0xd777('0x71'),_0x58c7bb['params']['id'],_0x459626));_0x2366b1[_0xd777('0x6f')](_0xd777('0x72'),_0xd777('0x73'));return _0x2366b1[_0xd777('0x74')](util[_0xd777('0x67')](_0xd777('0x6e'),_0x58c7bb[_0xd777('0x43')]['id'],_0x459626));}else{return _0x2366b1[_0xd777('0x15')](0xcc);}})[_0xd777('0x4a')](handleError(_0x2366b1,null));};
\ No newline at end of file
+var _0x52c1=['crypto','jsforce','desk.js','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','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','Projects','UserProfileResource','error','name','send','index','map','JscriptyProject','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','update','getSessions','findOne','nolimit','ProjectId','JscriptySessionReport','getAnswers','JscriptyAnswerReport','fromCharCode','indexOf','toString','replace','getSummary','startTime','starttime','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','lodash'];(function(_0x3aef82,_0x323b18){var _0x386dcb=function(_0x47fa12){while(--_0x47fa12){_0x3aef82['push'](_0x3aef82['shift']());}};_0x386dcb(++_0x323b18);}(_0x52c1,0x1ce));var _0x152c=function(_0x199a38,_0x5f12e2){_0x199a38=_0x199a38-0x0;var _0x2a4ead=_0x52c1[_0x199a38];return _0x2a4ead;};'use strict';var emlformat=require(_0x152c('0x0'));var rimraf=require(_0x152c('0x1'));var zipdir=require(_0x152c('0x2'));var jsonpatch=require(_0x152c('0x3'));var rp=require(_0x152c('0x4'));var moment=require(_0x152c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x152c('0x6'));var util=require('util');var path=require(_0x152c('0x7'));var sox=require('sox');var csv=require(_0x152c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x152c('0x9'));var squel=require('squel');var crypto=require(_0x152c('0xa'));var jsforce=require(_0x152c('0xb'));var deskjs=require(_0x152c('0xc'));var toCsv=require(_0x152c('0x8'));var querystring=require('querystring');var Papa=require(_0x152c('0xd'));var Redis=require(_0x152c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x152c('0xf'));var as=require(_0x152c('0x10'));var hardwareService=require(_0x152c('0x11'));var logger=require(_0x152c('0x12'))(_0x152c('0x13'));var utils=require(_0x152c('0x14'));var config=require(_0x152c('0x15'));var licenseUtil=require(_0x152c('0x16'));var db=require(_0x152c('0x17'))['db'];function respondWithStatusCode(_0x328bc9,_0x22a302){_0x22a302=_0x22a302||0xcc;return function(_0x5ccb20){if(_0x5ccb20){return _0x328bc9[_0x152c('0x18')](_0x22a302);}return _0x328bc9[_0x152c('0x19')](_0x22a302)[_0x152c('0x1a')]();};}function respondWithResult(_0x28e445,_0x40e453){_0x40e453=_0x40e453||0xc8;return function(_0xcbbf0d){if(_0xcbbf0d){return _0x28e445[_0x152c('0x19')](_0x40e453)[_0x152c('0x1b')](_0xcbbf0d);}};}function respondWithFilteredResult(_0x4ea81b,_0x2f36e7){return function(_0x3e3c6b){if(_0x3e3c6b){var _0xb25d47=typeof _0x2f36e7[_0x152c('0x1c')]==='undefined'&&typeof _0x2f36e7[_0x152c('0x1d')]===_0x152c('0x1e');var _0x22a09a=_0x3e3c6b[_0x152c('0x1f')];var _0xf85aae=_0xb25d47?0x0:_0x2f36e7['offset'];var _0x1cfda8=_0xb25d47?_0x3e3c6b[_0x152c('0x1f')]:_0x2f36e7[_0x152c('0x1c')]+_0x2f36e7[_0x152c('0x1d')];var _0x31a16b;if(_0x1cfda8>=_0x22a09a){_0x1cfda8=_0x22a09a;_0x31a16b=0xc8;}else{_0x31a16b=0xce;}_0x4ea81b[_0x152c('0x19')](_0x31a16b);return _0x4ea81b[_0x152c('0x20')](_0x152c('0x21'),_0xf85aae+'-'+_0x1cfda8+'/'+_0x22a09a)[_0x152c('0x1b')](_0x3e3c6b);}return null;};}function patchUpdates(_0xacb5f0){return function(_0x2a1921){try{jsonpatch[_0x152c('0x22')](_0x2a1921,_0xacb5f0,!![]);}catch(_0x24bfbc){return BPromise['reject'](_0x24bfbc);}return _0x2a1921[_0x152c('0x23')]();};}function saveUpdates(_0x47f252,_0x546f23){return function(_0x531ae8){if(_0x531ae8){return _0x531ae8['update'](_0x47f252)[_0x152c('0x24')](function(_0x3c6f01){return _0x3c6f01;});}return null;};}function removeEntity(_0x1dd9e6,_0x44b729){return function(_0x396dae){if(_0x396dae){return _0x396dae[_0x152c('0x25')]()[_0x152c('0x24')](function(){var _0x2efd87=_0x396dae['get']({'plain':!![]});var _0x5d305a=_0x152c('0x26');return db[_0x152c('0x27')][_0x152c('0x25')]({'where':{'type':_0x5d305a,'resourceId':_0x2efd87['id']}})[_0x152c('0x24')](function(){return _0x396dae;});})[_0x152c('0x24')](function(){_0x1dd9e6[_0x152c('0x19')](0xcc)[_0x152c('0x1a')]();});}};}function handleEntityNotFound(_0x177c83,_0x4d392a){return function(_0x38e36b){if(!_0x38e36b){_0x177c83[_0x152c('0x18')](0x194);}return _0x38e36b;};}function handleError(_0x235961,_0x488607){_0x488607=_0x488607||0x1f4;return function(_0x1ada12){logger[_0x152c('0x28')](_0x1ada12['stack']);if(_0x1ada12['name']){delete _0x1ada12[_0x152c('0x29')];}_0x235961[_0x152c('0x19')](_0x488607)[_0x152c('0x2a')](_0x1ada12);};}exports[_0x152c('0x2b')]=function(_0xd57613,_0x57bed7){var _0x2c17ad={},_0x246d4f={},_0x4ca563={'count':0x0,'rows':[]};var _0x127e43=_[_0x152c('0x2c')](db[_0x152c('0x2d')][_0x152c('0x2e')],function(_0x20617a){return{'name':_0x20617a[_0x152c('0x2f')],'type':_0x20617a['type']['key']};});_0x246d4f['model']=_[_0x152c('0x2c')](_0x127e43,_0x152c('0x29'));_0x246d4f[_0x152c('0x30')]=_[_0x152c('0x31')](_0xd57613[_0x152c('0x30')]);_0x246d4f[_0x152c('0x32')]=_[_0x152c('0x33')](_0x246d4f[_0x152c('0x34')],_0x246d4f[_0x152c('0x30')]);_0x2c17ad[_0x152c('0x35')]=_[_0x152c('0x33')](_0x246d4f[_0x152c('0x34')],qs[_0x152c('0x36')](_0xd57613[_0x152c('0x30')][_0x152c('0x36')]));_0x2c17ad[_0x152c('0x35')]=_0x2c17ad[_0x152c('0x35')]['length']?_0x2c17ad[_0x152c('0x35')]:_0x246d4f['model'];if(!_0xd57613[_0x152c('0x30')][_0x152c('0x37')]('nolimit')){_0x2c17ad[_0x152c('0x1d')]=qs['limit'](_0xd57613['query'][_0x152c('0x1d')]);_0x2c17ad[_0x152c('0x1c')]=qs[_0x152c('0x1c')](_0xd57613[_0x152c('0x30')][_0x152c('0x1c')]);}_0x2c17ad[_0x152c('0x38')]=qs[_0x152c('0x39')](_0xd57613[_0x152c('0x30')][_0x152c('0x39')]);_0x2c17ad['where']=qs[_0x152c('0x32')](_[_0x152c('0x3a')](_0xd57613[_0x152c('0x30')],_0x246d4f[_0x152c('0x32')]),_0x127e43);if(_0xd57613[_0x152c('0x30')][_0x152c('0x3b')]){_0x2c17ad[_0x152c('0x3c')]=_['merge'](_0x2c17ad[_0x152c('0x3c')],{'$or':_[_0x152c('0x2c')](_0x127e43,function(_0x54b1e2){if(_0x54b1e2[_0x152c('0x3d')]!==_0x152c('0x3e')){var _0x1e8a8f={};_0x1e8a8f[_0x54b1e2[_0x152c('0x29')]]={'$like':'%'+_0xd57613['query'][_0x152c('0x3b')]+'%'};return _0x1e8a8f;}})});}_0x2c17ad=_['merge']({},_0x2c17ad,_0xd57613[_0x152c('0x3f')]);var _0x278772={'where':_0x2c17ad[_0x152c('0x3c')]};return db[_0x152c('0x2d')][_0x152c('0x1f')](_0x278772)[_0x152c('0x24')](function(_0x2e77dc){_0x4ca563[_0x152c('0x1f')]=_0x2e77dc;if(_0xd57613[_0x152c('0x30')][_0x152c('0x40')]){_0x2c17ad[_0x152c('0x41')]=[{'all':!![]}];}return db[_0x152c('0x2d')][_0x152c('0x42')](_0x2c17ad);})['then'](function(_0x197f15){_0x4ca563[_0x152c('0x43')]=_0x197f15;return _0x4ca563;})[_0x152c('0x24')](respondWithFilteredResult(_0x57bed7,_0x2c17ad))[_0x152c('0x44')](handleError(_0x57bed7,null));};exports[_0x152c('0x45')]=function(_0x152c01,_0x5b8334){var _0x5a6f9c={'raw':![],'where':{'id':_0x152c01[_0x152c('0x46')]['id']}},_0x27d4a0={};_0x27d4a0[_0x152c('0x34')]=_[_0x152c('0x31')](db[_0x152c('0x2d')][_0x152c('0x2e')]);_0x27d4a0[_0x152c('0x30')]=_[_0x152c('0x31')](_0x152c01[_0x152c('0x30')]);_0x27d4a0[_0x152c('0x32')]=_[_0x152c('0x33')](_0x27d4a0[_0x152c('0x34')],_0x27d4a0[_0x152c('0x30')]);_0x5a6f9c[_0x152c('0x35')]=_[_0x152c('0x33')](_0x27d4a0['model'],qs[_0x152c('0x36')](_0x152c01[_0x152c('0x30')][_0x152c('0x36')]));_0x5a6f9c[_0x152c('0x35')]=_0x5a6f9c[_0x152c('0x35')][_0x152c('0x47')]?_0x5a6f9c[_0x152c('0x35')]:_0x27d4a0[_0x152c('0x34')];if(_0x152c01[_0x152c('0x30')][_0x152c('0x40')]){_0x5a6f9c[_0x152c('0x41')]=[{'all':!![]}];}_0x5a6f9c=_[_0x152c('0x48')]({},_0x5a6f9c,_0x152c01[_0x152c('0x3f')]);return db[_0x152c('0x2d')][_0x152c('0x49')](_0x5a6f9c)[_0x152c('0x24')](handleEntityNotFound(_0x5b8334,null))['then'](respondWithResult(_0x5b8334,null))[_0x152c('0x44')](handleError(_0x5b8334,null));};exports[_0x152c('0x4a')]=function(_0x20be89,_0x52f860){return db['JscriptyProject'][_0x152c('0x4a')](_0x20be89[_0x152c('0x4b')],{})[_0x152c('0x24')](function(_0x2efddb){var _0x358ae8=_0x20be89[_0x152c('0x4c')][_0x152c('0x4d')]({'plain':!![]});if(!_0x358ae8)throw new Error(_0x152c('0x4e'));if(_0x358ae8[_0x152c('0x4f')]===_0x152c('0x4c')){var _0x1536ef=_0x2efddb[_0x152c('0x4d')]({'plain':!![]});var _0x34fb4d=_0x152c('0x26');return db[_0x152c('0x50')][_0x152c('0x49')]({'where':{'name':_0x34fb4d,'userProfileId':_0x358ae8[_0x152c('0x51')]},'raw':!![]})['then'](function(_0x4bbc71){if(_0x4bbc71&&_0x4bbc71[_0x152c('0x52')]===0x0){return db[_0x152c('0x27')][_0x152c('0x4a')]({'name':_0x1536ef[_0x152c('0x29')],'resourceId':_0x1536ef['id'],'type':_0x4bbc71[_0x152c('0x29')],'sectionId':_0x4bbc71['id']},{})[_0x152c('0x24')](function(){return _0x2efddb;});}else{return _0x2efddb;}})['catch'](function(_0x3830cf){logger[_0x152c('0x28')](_0x152c('0x53'),_0x3830cf);throw _0x3830cf;});}return _0x2efddb;})['then'](respondWithResult(_0x52f860,0xc9))[_0x152c('0x44')](handleError(_0x52f860,null));};exports[_0x152c('0x54')]=function(_0x3bb859,_0x558610){var _0x178897={'where':{'id':_0x3bb859[_0x152c('0x46')]['id']}},_0x5272a7={};_0x5272a7[_0x152c('0x34')]=_['keys'](db[_0x152c('0x2d')]['rawAttributes']);_0x178897['attributes']=_[_0x152c('0x33')](_0x5272a7[_0x152c('0x34')],qs['fields'](_0x3bb859[_0x152c('0x30')]['fields']));_0x178897[_0x152c('0x35')]=_0x178897[_0x152c('0x35')][_0x152c('0x47')]?_0x178897[_0x152c('0x35')]:_0x5272a7[_0x152c('0x34')];if(_0x3bb859['query'][_0x152c('0x40')]){_0x178897[_0x152c('0x41')]=[{'all':!![]}];}_0x178897=_[_0x152c('0x48')]({},_0x178897,_0x3bb859[_0x152c('0x3f')]);return db[_0x152c('0x2d')][_0x152c('0x49')](_0x178897)[_0x152c('0x24')](handleEntityNotFound(_0x558610,null))[_0x152c('0x24')](function(_0x52230d){if(_0x52230d){var _0xee0837=_0x52230d[_0x152c('0x4d')]({'plain':!![]});_0xee0837=qs[_0x152c('0x55')](_0xee0837,['id',_0x152c('0x56'),'updatedAt']);_0x3bb859['body']=_[_0x152c('0x55')](_0x3bb859[_0x152c('0x4b')],['id',_0x152c('0x56'),'updatedAt']);return db['JscriptyProject'][_0x152c('0x4a')](_[_0x152c('0x48')](_0xee0837,_0x3bb859[_0x152c('0x4b')]),{'include':_0x3bb859['query'][_0x152c('0x40')]?[{'all':!![]}]:undefined})[_0x152c('0x24')](function(_0x16ba99){var _0x17735f=_0x3bb859['user'][_0x152c('0x4d')]({'plain':!![]});if(!_0x17735f)throw new Error(_0x152c('0x4e'));if(_0x17735f[_0x152c('0x4f')]===_0x152c('0x4c')){var _0x44d323=_0x16ba99[_0x152c('0x4d')]({'plain':!![]});var _0x56bae9=_0x152c('0x26');return db[_0x152c('0x50')][_0x152c('0x49')]({'where':{'name':_0x56bae9,'userProfileId':_0x17735f[_0x152c('0x51')]},'raw':!![]})['then'](function(_0x39920a){if(_0x39920a&&_0x39920a[_0x152c('0x52')]===0x0){return db[_0x152c('0x27')][_0x152c('0x4a')]({'name':_0x44d323[_0x152c('0x29')],'resourceId':_0x44d323['id'],'type':_0x39920a['name'],'sectionId':_0x39920a['id']},{})[_0x152c('0x24')](function(){return _0x16ba99;});}else{return _0x16ba99;}})[_0x152c('0x44')](function(_0x187f1c){logger[_0x152c('0x28')](_0x152c('0x53'),_0x187f1c);throw _0x187f1c;});}return _0x16ba99;});}})[_0x152c('0x24')](respondWithResult(_0x558610,0xc9))['catch'](handleError(_0x558610,null));};exports[_0x152c('0x57')]=function(_0x4362b1,_0xd811c9){if(_0x4362b1['body']['id']){delete _0x4362b1[_0x152c('0x4b')]['id'];}return db[_0x152c('0x2d')][_0x152c('0x49')]({'where':{'id':_0x4362b1['params']['id']}})['then'](handleEntityNotFound(_0xd811c9,null))[_0x152c('0x24')](saveUpdates(_0x4362b1[_0x152c('0x4b')],null))[_0x152c('0x24')](respondWithResult(_0xd811c9,null))['catch'](handleError(_0xd811c9,null));};exports[_0x152c('0x25')]=function(_0x5d395e,_0x5ba4d9){return db[_0x152c('0x2d')][_0x152c('0x49')]({'where':{'id':_0x5d395e['params']['id']}})['then'](handleEntityNotFound(_0x5ba4d9,null))[_0x152c('0x24')](removeEntity(_0x5ba4d9,null))[_0x152c('0x44')](handleError(_0x5ba4d9,null));};exports[_0x152c('0x58')]=function(_0x56a9a7,_0x3c0115,_0x2baed5){var _0x3879fc={'raw':!![],'where':{}};var _0x5d46b9={};var _0x381ec8={'count':0x0,'rows':[]};return db[_0x152c('0x2d')][_0x152c('0x59')]({'where':{'id':_0x56a9a7[_0x152c('0x46')]['id']}})[_0x152c('0x24')](handleEntityNotFound(_0x3c0115,null))[_0x152c('0x24')](function(_0x5adba9){if(_0x5adba9){_0x5d46b9['model']=_[_0x152c('0x31')](db['JscriptySessionReport'][_0x152c('0x2e')]);_0x5d46b9['query']=_['keys'](_0x56a9a7['query']);_0x5d46b9[_0x152c('0x32')]=_[_0x152c('0x33')](_0x5d46b9[_0x152c('0x34')],_0x5d46b9['query']);_0x3879fc[_0x152c('0x35')]=_[_0x152c('0x33')](_0x5d46b9[_0x152c('0x34')],qs[_0x152c('0x36')](_0x56a9a7['query'][_0x152c('0x36')]));_0x3879fc[_0x152c('0x35')]=_0x3879fc['attributes'][_0x152c('0x47')]?_0x3879fc[_0x152c('0x35')]:_0x5d46b9[_0x152c('0x34')];if(!_0x56a9a7[_0x152c('0x30')][_0x152c('0x37')](_0x152c('0x5a'))){_0x3879fc['limit']=qs[_0x152c('0x1d')](_0x56a9a7['query'][_0x152c('0x1d')]);_0x3879fc[_0x152c('0x1c')]=qs[_0x152c('0x1c')](_0x56a9a7[_0x152c('0x30')][_0x152c('0x1c')]);}_0x3879fc[_0x152c('0x38')]=qs[_0x152c('0x39')](_0x56a9a7[_0x152c('0x30')][_0x152c('0x39')]);_0x3879fc[_0x152c('0x3c')]=qs[_0x152c('0x32')](_[_0x152c('0x3a')](_0x56a9a7[_0x152c('0x30')],_0x5d46b9['filters']));_0x3879fc[_0x152c('0x3c')][_0x152c('0x5b')]=_0x5adba9['id'];if(_0x56a9a7[_0x152c('0x30')]['filter']){_0x3879fc[_0x152c('0x3c')]=_[_0x152c('0x48')](_0x3879fc['where'],{'$or':_[_0x152c('0x2c')](_0x3879fc['attributes'],function(_0x13ba1c){var _0x36977e={};_0x36977e[_0x13ba1c]={'$like':'%'+_0x56a9a7['query'][_0x152c('0x3b')]+'%'};return _0x36977e;})});}_0x3879fc=_[_0x152c('0x48')]({},_0x3879fc,_0x56a9a7[_0x152c('0x3f')]);return db[_0x152c('0x5c')]['count']({'where':_0x3879fc[_0x152c('0x3c')]})['then'](function(_0x21a65f){_0x381ec8[_0x152c('0x1f')]=_0x21a65f;if(_0x56a9a7[_0x152c('0x30')][_0x152c('0x40')]){_0x3879fc['include']=[{'all':!![]}];}return db[_0x152c('0x5c')][_0x152c('0x42')](_0x3879fc);})[_0x152c('0x24')](function(_0x71f255){_0x381ec8[_0x152c('0x43')]=_0x71f255;return _0x381ec8;});}})[_0x152c('0x24')](respondWithFilteredResult(_0x3c0115,_0x3879fc))[_0x152c('0x44')](handleError(_0x3c0115,null));};exports[_0x152c('0x5d')]=function(_0x109888,_0x227a94,_0x5245d8){var _0x10f9ed={'raw':!![],'where':{}};var _0x56a563={};var _0x2d6a8b={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x152c('0x59')]({'where':{'id':_0x109888['params']['id']}})[_0x152c('0x24')](handleEntityNotFound(_0x227a94,null))[_0x152c('0x24')](function(_0x31240b){if(_0x31240b){_0x56a563['model']=_[_0x152c('0x31')](db[_0x152c('0x5e')][_0x152c('0x2e')]);_0x56a563[_0x152c('0x30')]=_['keys'](_0x109888[_0x152c('0x30')]);_0x56a563[_0x152c('0x32')]=_['intersection'](_0x56a563[_0x152c('0x34')],_0x56a563[_0x152c('0x30')]);_0x10f9ed[_0x152c('0x35')]=_[_0x152c('0x33')](_0x56a563[_0x152c('0x34')],qs['fields'](_0x109888['query'][_0x152c('0x36')]));_0x10f9ed[_0x152c('0x35')]=_0x10f9ed['attributes']['length']?_0x10f9ed[_0x152c('0x35')]:_0x56a563['model'];if(!_0x109888[_0x152c('0x30')]['hasOwnProperty'](_0x152c('0x5a'))){_0x10f9ed[_0x152c('0x1d')]=qs[_0x152c('0x1d')](_0x109888['query'][_0x152c('0x1d')]);_0x10f9ed['offset']=qs[_0x152c('0x1c')](_0x109888[_0x152c('0x30')][_0x152c('0x1c')]);}_0x10f9ed[_0x152c('0x38')]=qs[_0x152c('0x39')](_0x109888[_0x152c('0x30')][_0x152c('0x39')]);_0x10f9ed['where']=qs[_0x152c('0x32')](_[_0x152c('0x3a')](_0x109888[_0x152c('0x30')],_0x56a563[_0x152c('0x32')]));_0x10f9ed['where'][_0x152c('0x5b')]=_0x31240b['id'];if(_0x109888[_0x152c('0x30')]['filter']){_0x10f9ed['where']=_[_0x152c('0x48')](_0x10f9ed[_0x152c('0x3c')],{'$or':_[_0x152c('0x2c')](_0x10f9ed[_0x152c('0x35')],function(_0x5594c9){var _0x342754={};_0x342754[_0x5594c9]={'$like':'%'+_0x109888[_0x152c('0x30')][_0x152c('0x3b')]+'%'};return _0x342754;})});}_0x10f9ed=_['merge']({},_0x10f9ed,_0x109888[_0x152c('0x3f')]);return db[_0x152c('0x5e')][_0x152c('0x1f')]({'where':_0x10f9ed['where']})[_0x152c('0x24')](function(_0x434007){_0x2d6a8b[_0x152c('0x1f')]=_0x434007;if(_0x109888[_0x152c('0x30')][_0x152c('0x40')]){_0x10f9ed['include']=[{'all':!![]}];}return db[_0x152c('0x5e')][_0x152c('0x42')](_0x10f9ed);})[_0x152c('0x24')](function(_0x3fc69b){_0x2d6a8b[_0x152c('0x43')]=_0x3fc69b;return _0x2d6a8b;});}})[_0x152c('0x24')](respondWithFilteredResult(_0x227a94,_0x10f9ed))[_0x152c('0x44')](handleError(_0x227a94,null));};function char(_0x2495e9){return'number'===typeof _0x2495e9?String[_0x152c('0x5f')]['apply'](null,arguments):_0x2495e9;}function needsEncapsulation(_0xf4b423){return!!_0xf4b423&&(_0xf4b423['toString']()[_0x152c('0x60')](char(0xd))>=0x0||_0xf4b423[_0x152c('0x61')]()['indexOf'](char(0xa))>=0x0||_0xf4b423[_0x152c('0x61')]()[_0x152c('0x60')](char(0x2c))>=0x0||_0xf4b423['toString']()[_0x152c('0x60')](char(0x22))>=0x0);}function encapsulate(_0x55ebd6){var _0x7e7905=char(0x22),_0x231651='\x5c'+char(0x22),_0x312601=_0x55ebd6[_0x152c('0x61')]()[_0x152c('0x62')](new RegExp(_0x7e7905,'g'),_0x231651);return _0x7e7905+_0x312601+_0x7e7905;}exports[_0x152c('0x63')]=function(_0x5cb82f,_0x2d3bfa,_0x4fdfe4){var _0x513df2,_0xdf953b;var _0x348067={'where':{'ProjectId':_0x5cb82f['params']['id']}};if(_0x5cb82f[_0x152c('0x30')][_0x152c('0x64')]){_0x348067[_0x152c('0x3c')][_0x152c('0x65')]=JSON['parse'](_0x5cb82f[_0x152c('0x30')]['startTime']);}return db[_0x152c('0x5c')][_0x152c('0x42')](_0x348067)['then'](handleEntityNotFound(_0x2d3bfa,null))[_0x152c('0x24')](function(_0x28d865){if(_0x28d865){_0x513df2=_0x28d865;return db['JscriptyQuestionReport'][_0x152c('0x42')]({'where':{'SessionId':{'$in':_[_0x152c('0x2c')](_0x513df2,'id')},'ProjectId':_0x5cb82f[_0x152c('0x46')]['id']},'order':_0x152c('0x66')});}})[_0x152c('0x24')](handleEntityNotFound(_0x2d3bfa,null))[_0x152c('0x24')](function(_0x235753){if(_0x235753){_0xdf953b=_0x235753;var _0x44c1f8={};for(var _0x7ff637=0x0,_0x484a5c=_0xdf953b['length'];_0x7ff637<_0x484a5c;_0x7ff637++){if(!_0x44c1f8['hasOwnProperty'](_0xdf953b[_0x7ff637][_0x152c('0x67')])){_0x44c1f8[_0xdf953b[_0x7ff637]['questionId']]=needsEncapsulation(_0xdf953b[_0x7ff637][_0x152c('0x68')])?encapsulate(_0xdf953b[_0x7ff637][_0x152c('0x68')]):_0xdf953b[_0x7ff637][_0x152c('0x68')];}}var _0x2c0e93=[],_0x107d5d={};for(var _0x2d56e2=0x0,_0xe57537=_0x513df2['length'];_0x2d56e2<_0xe57537;_0x2d56e2++){_0x107d5d={'ProjectId':_0x5cb82f[_0x152c('0x46')]['id'],'SessionId':_0x513df2[_0x2d56e2]['id'],'StartTime':moment(_0x513df2[_0x2d56e2][_0x152c('0x65')])['format'](_0x152c('0x69'))};for(var _0x46a874=0x0,_0x4247d4=_0xdf953b[_0x152c('0x47')];_0x46a874<_0x4247d4;_0x46a874++){if(_0xdf953b[_0x46a874][_0x152c('0x6a')]==_0x513df2[_0x2d56e2]['id']&&_0x44c1f8[_0x152c('0x37')](_0xdf953b[_0x46a874]['questionId'])){_0x107d5d[_0x44c1f8[_0xdf953b[_0x46a874][_0x152c('0x67')]]]=_0xdf953b[_0x46a874][_0x152c('0x6b')];}}for(var _0x6aaad4 in _0x44c1f8){if(!_0x107d5d[_0x152c('0x37')](_0x44c1f8[_0x6aaad4])){_0x107d5d[_0x44c1f8[_0x6aaad4]]=null;}}_0x2c0e93['push'](_0x107d5d);}return _0x2c0e93;}})[_0x152c('0x24')](function(_0x50d2eb){if(!_[_0x152c('0x6c')](_0x50d2eb)){var _0x5b9b6c=toCsv(_0x50d2eb);var _0xa60e5e=Date[_0x152c('0x6d')]();fs[_0x152c('0x6e')](util[_0x152c('0x6f')](_0x152c('0x70'),_0x5cb82f[_0x152c('0x46')]['id'],_0xa60e5e),_0x5b9b6c);_0x2d3bfa[_0x152c('0x71')](_0x152c('0x72'),_0x152c('0x73')+util[_0x152c('0x6f')]('Jscripty_Project_%d_Summary_%s.csv',_0x5cb82f[_0x152c('0x46')]['id'],_0xa60e5e));_0x2d3bfa['setHeader'](_0x152c('0x74'),'text/csv');return _0x2d3bfa[_0x152c('0x75')](util[_0x152c('0x6f')](_0x152c('0x70'),_0x5cb82f['params']['id'],_0xa60e5e));}else{return _0x2d3bfa[_0x152c('0x18')](0xcc);}})[_0x152c('0x44')](handleError(_0x2d3bfa,null));};
\ No newline at end of file
index a2541fb..e8e137c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fb=['bluebird','request-promise','rimraf','../../config/environment','exports','JscriptyProject','lodash','../../config/logger','api','moment'];(function(_0x5255ce,_0x4dac5b){var _0x1b650d=function(_0x2c9bb9){while(--_0x2c9bb9){_0x5255ce['push'](_0x5255ce['shift']());}};_0x1b650d(++_0x4dac5b);}(_0x99fb,0x92));var _0xb99f=function(_0xfe609a,_0x5bccc2){_0xfe609a=_0xfe609a-0x0;var _0x106fdf=_0x99fb[_0xfe609a];return _0x106fdf;};'use strict';var _=require(_0xb99f('0x0'));var util=require('util');var logger=require(_0xb99f('0x1'))(_0xb99f('0x2'));var moment=require(_0xb99f('0x3'));var BPromise=require(_0xb99f('0x4'));var rp=require(_0xb99f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb99f('0x6'));var config=require(_0xb99f('0x7'));var attributes=require('./jscriptyProject.attributes');module[_0xb99f('0x8')]=function(_0x1f4c29,_0xd9eac9){return _0x1f4c29['define'](_0xb99f('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8b2d=['moment','bluebird','path','rimraf','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','../../config/logger'];(function(_0x3451ba,_0x4dd59b){var _0x558479=function(_0x15c8f6){while(--_0x15c8f6){_0x3451ba['push'](_0x3451ba['shift']());}};_0x558479(++_0x4dd59b);}(_0x8b2d,0xe5));var _0xd8b2=function(_0x56825b,_0x172b8d){_0x56825b=_0x56825b-0x0;var _0x69ce77=_0x8b2d[_0x56825b];return _0x69ce77;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd8b2('0x0'))('api');var moment=require(_0xd8b2('0x1'));var BPromise=require(_0xd8b2('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd8b2('0x3'));var rimraf=require(_0xd8b2('0x4'));var config=require('../../config/environment');var attributes=require(_0xd8b2('0x5'));module[_0xd8b2('0x6')]=function(_0x36eb23,_0x282a58){return _0x36eb23[_0xd8b2('0x7')](_0xd8b2('0x8'),attributes,{'tableName':_0xd8b2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21f786a..e82d959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1eff27,_0x315c94){var _0x31581a=function(_0x74d28c){while(--_0x74d28c){_0x1eff27['push'](_0x1eff27['shift']());}};_0x31581a(++_0x315c94);}(_0xb43b,0x1b2));var _0xbb43=function(_0x24be29,_0x1f99f2){_0x24be29=_0x24be29-0x0;var _0x14977e=_0xb43b[_0x24be29];return _0x14977e;};'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
+var _0x54ef=['result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x4b06f1,_0x465fba){var _0x1873a9=function(_0x25bcd8){while(--_0x25bcd8){_0x4b06f1['push'](_0x4b06f1['shift']());}};_0x1873a9(++_0x465fba);}(_0x54ef,0x112));var _0xf54e=function(_0x20451e,_0x2779df){_0x20451e=_0x20451e-0x0;var _0x4bd93d=_0x54ef[_0x20451e];return _0x4bd93d;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x99cf9,_0x2464ae,_0x561870){return new BPromise(function(_0x27e69b,_0x57a1ce){return client[_0xf54e('0xb')](_0x99cf9,_0x561870)[_0xf54e('0xc')](function(_0x47c5e1){logger[_0xf54e('0xd')](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));logger[_0xf54e('0x10')]('JscriptyProject,\x20%s,\x20%s,\x20%s',_0x2464ae,_0xf54e('0xf'),JSON[_0xf54e('0x11')](_0x47c5e1));if(_0x47c5e1[_0xf54e('0x12')]){if(_0x47c5e1[_0xf54e('0x12')]['code']===0x1f4){logger[_0xf54e('0x12')]('JscriptyProject,\x20%s,\x20%s',_0x2464ae,_0x47c5e1['error'][_0xf54e('0x13')]);return _0x57a1ce(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}logger[_0xf54e('0x12')]('JscriptyProject,\x20%s,\x20%s',_0x2464ae,_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);return _0x27e69b(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}else{logger['info'](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));_0x27e69b(_0x47c5e1[_0xf54e('0x14')]['message']);}})['catch'](function(_0xd87020){logger[_0xf54e('0x12')](_0xf54e('0xe'),_0x2464ae,_0xd87020);_0x57a1ce(_0xd87020);});});}
\ No newline at end of file
index 585eb50..2fac3f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e8b=['../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4c0ee3,_0x33c784){var _0x2a3418=function(_0xc58c82){while(--_0xc58c82){_0x4c0ee3['push'](_0x4c0ee3['shift']());}};_0x2a3418(++_0x33c784);}(_0x9e8b,0xd5));var _0xb9e8=function(_0x4c0998,_0x165050){_0x4c0998=_0x4c0998-0x0;var _0x1110e2=_0x9e8b[_0x4c0998];return _0x1110e2;};'use strict';var multer=require(_0xb9e8('0x0'));var util=require(_0xb9e8('0x1'));var path=require(_0xb9e8('0x2'));var timeout=require(_0xb9e8('0x3'));var express=require(_0xb9e8('0x4'));var router=express[_0xb9e8('0x5')]();var fs_extra=require(_0xb9e8('0x6'));var auth=require(_0xb9e8('0x7'));var interaction=require(_0xb9e8('0x8'));var config=require('../../config/environment');var controller=require(_0xb9e8('0x9'));router[_0xb9e8('0xa')]('/',auth[_0xb9e8('0xb')](),controller['index']);router[_0xb9e8('0xa')](_0xb9e8('0xc'),auth[_0xb9e8('0xb')](),controller[_0xb9e8('0xd')]);router['get'](_0xb9e8('0xe'),auth[_0xb9e8('0xb')](),controller[_0xb9e8('0xf')]);router[_0xb9e8('0x10')]('/',auth[_0xb9e8('0xb')](),controller[_0xb9e8('0x11')]);router['put'](_0xb9e8('0xe'),auth['isAuthenticated'](),controller[_0xb9e8('0x12')]);router[_0xb9e8('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa353=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0xf1ae4c,_0x4b7bd4){var _0x584d79=function(_0x488417){while(--_0x488417){_0xf1ae4c['push'](_0xf1ae4c['shift']());}};_0x584d79(++_0x4b7bd4);}(_0xa353,0x1c9));var _0x3a35=function(_0x73fcdd,_0x9d5190){_0x73fcdd=_0x73fcdd-0x0;var _0x4aece6=_0xa353[_0x73fcdd];return _0x4aece6;};'use strict';var multer=require(_0x3a35('0x0'));var util=require('util');var path=require(_0x3a35('0x1'));var timeout=require(_0x3a35('0x2'));var express=require(_0x3a35('0x3'));var router=express[_0x3a35('0x4')]();var fs_extra=require(_0x3a35('0x5'));var auth=require(_0x3a35('0x6'));var interaction=require(_0x3a35('0x7'));var config=require(_0x3a35('0x8'));var controller=require(_0x3a35('0x9'));router[_0x3a35('0xa')]('/',auth[_0x3a35('0xb')](),controller[_0x3a35('0xc')]);router[_0x3a35('0xa')](_0x3a35('0xd'),auth[_0x3a35('0xb')](),controller[_0x3a35('0xe')]);router[_0x3a35('0xa')](_0x3a35('0xf'),auth['isAuthenticated'](),controller[_0x3a35('0x10')]);router['post']('/',auth[_0x3a35('0xb')](),controller[_0x3a35('0x11')]);router[_0x3a35('0x12')]('/:id',auth[_0x3a35('0xb')](),controller[_0x3a35('0x13')]);router[_0x3a35('0x14')](_0x3a35('0xf'),auth[_0x3a35('0xb')](),controller[_0x3a35('0x15')]);module[_0x3a35('0x16')]=router;
\ No newline at end of file
index 1916967..3db3f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x7a54,0x106));var _0x47a5=function(_0x4f3cbb,_0x29ab4a){_0x4f3cbb=_0x4f3cbb-0x0;var _0x3cf59b=_0x7a54[_0x4f3cbb];return _0x3cf59b;};'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(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7a54,0x106));var _0x47a5=function(_0xa5855f,_0x43e00e){_0xa5855f=_0xa5855f-0x0;var _0x384d8c=_0x7a54[_0xa5855f];return _0x384d8c;};'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 249306c..920ab5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da6=['json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','JscriptyQuestionReport','includeAll','include','rows','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','end'];(function(_0x4353b4,_0x36c096){var _0x1970e4=function(_0x4ca5e3){while(--_0x4ca5e3){_0x4353b4['push'](_0x4353b4['shift']());}};_0x1970e4(++_0x36c096);}(_0x6da6,0x14a));var _0x66da=function(_0x20beae,_0x5eac6d){_0x20beae=_0x20beae-0x0;var _0xf5725=_0x6da6[_0x20beae];return _0xf5725;};'use strict';var emlformat=require(_0x66da('0x0'));var rimraf=require(_0x66da('0x1'));var zipdir=require(_0x66da('0x2'));var jsonpatch=require(_0x66da('0x3'));var rp=require(_0x66da('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x66da('0x5'));var util=require(_0x66da('0x6'));var path=require(_0x66da('0x7'));var sox=require(_0x66da('0x8'));var csv=require(_0x66da('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x66da('0xa'));var _=require(_0x66da('0xb'));var squel=require(_0x66da('0xc'));var crypto=require(_0x66da('0xd'));var jsforce=require(_0x66da('0xe'));var deskjs=require(_0x66da('0xf'));var toCsv=require(_0x66da('0x9'));var querystring=require('querystring');var Papa=require(_0x66da('0x10'));var Redis=require(_0x66da('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x66da('0x12'));var hardwareService=require(_0x66da('0x13'));var logger=require('../../config/logger')(_0x66da('0x14'));var utils=require('../../config/utils');var config=require(_0x66da('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x66da('0x16'))['db'];function respondWithStatusCode(_0x2b8c05,_0x314e13){_0x314e13=_0x314e13||0xcc;return function(_0x261b24){if(_0x261b24){return _0x2b8c05['sendStatus'](_0x314e13);}return _0x2b8c05[_0x66da('0x17')](_0x314e13)[_0x66da('0x18')]();};}function respondWithResult(_0x46fd4a,_0x39be83){_0x39be83=_0x39be83||0xc8;return function(_0x39b4c4){if(_0x39b4c4){return _0x46fd4a[_0x66da('0x17')](_0x39be83)[_0x66da('0x19')](_0x39b4c4);}};}function respondWithFilteredResult(_0x205e40,_0x22c19d){return function(_0x5da9ac){if(_0x5da9ac){var _0x37b487=typeof _0x22c19d[_0x66da('0x1a')]===_0x66da('0x1b')&&typeof _0x22c19d[_0x66da('0x1c')]===_0x66da('0x1b');var _0x5b74a1=_0x5da9ac[_0x66da('0x1d')];var _0x10f30e=_0x37b487?0x0:_0x22c19d[_0x66da('0x1a')];var _0x4427cb=_0x37b487?_0x5da9ac[_0x66da('0x1d')]:_0x22c19d[_0x66da('0x1a')]+_0x22c19d[_0x66da('0x1c')];var _0x5973bd;if(_0x4427cb>=_0x5b74a1){_0x4427cb=_0x5b74a1;_0x5973bd=0xc8;}else{_0x5973bd=0xce;}_0x205e40[_0x66da('0x17')](_0x5973bd);return _0x205e40['set'](_0x66da('0x1e'),_0x10f30e+'-'+_0x4427cb+'/'+_0x5b74a1)[_0x66da('0x19')](_0x5da9ac);}return null;};}function patchUpdates(_0x819c6b){return function(_0x523900){try{jsonpatch['apply'](_0x523900,_0x819c6b,!![]);}catch(_0x4fdd64){return BPromise['reject'](_0x4fdd64);}return _0x523900[_0x66da('0x1f')]();};}function saveUpdates(_0xa01480,_0x4089ce){return function(_0x38e810){if(_0x38e810){return _0x38e810[_0x66da('0x20')](_0xa01480)[_0x66da('0x21')](function(_0x3b9d01){return _0x3b9d01;});}return null;};}function removeEntity(_0x9214bf,_0x42a1bd){return function(_0x518105){if(_0x518105){return _0x518105[_0x66da('0x22')]()[_0x66da('0x21')](function(){_0x9214bf[_0x66da('0x17')](0xcc)[_0x66da('0x18')]();});}};}function handleEntityNotFound(_0x23b852,_0x33c78c){return function(_0x127198){if(!_0x127198){_0x23b852['sendStatus'](0x194);}return _0x127198;};}function handleError(_0x77279d,_0x17adb1){_0x17adb1=_0x17adb1||0x1f4;return function(_0x31a16f){logger['error'](_0x31a16f[_0x66da('0x23')]);if(_0x31a16f[_0x66da('0x24')]){delete _0x31a16f[_0x66da('0x24')];}_0x77279d[_0x66da('0x17')](_0x17adb1)[_0x66da('0x25')](_0x31a16f);};}exports[_0x66da('0x26')]=function(_0x24f0ce,_0x15ac51){var _0x5db171={},_0x18d0bd={},_0xcee3d6={'count':0x0,'rows':[]};var _0x3ad191=_[_0x66da('0x27')](db['JscriptyQuestionReport'][_0x66da('0x28')],function(_0x1dfbaa){return{'name':_0x1dfbaa[_0x66da('0x29')],'type':_0x1dfbaa[_0x66da('0x2a')]['key']};});_0x18d0bd[_0x66da('0x2b')]=_[_0x66da('0x27')](_0x3ad191,_0x66da('0x24'));_0x18d0bd[_0x66da('0x2c')]=_[_0x66da('0x2d')](_0x24f0ce[_0x66da('0x2c')]);_0x18d0bd[_0x66da('0x2e')]=_[_0x66da('0x2f')](_0x18d0bd[_0x66da('0x2b')],_0x18d0bd[_0x66da('0x2c')]);_0x5db171[_0x66da('0x30')]=_[_0x66da('0x2f')](_0x18d0bd[_0x66da('0x2b')],qs[_0x66da('0x31')](_0x24f0ce[_0x66da('0x2c')]['fields']));_0x5db171['attributes']=_0x5db171['attributes'][_0x66da('0x32')]?_0x5db171[_0x66da('0x30')]:_0x18d0bd[_0x66da('0x2b')];if(!_0x24f0ce['query'][_0x66da('0x33')](_0x66da('0x34'))){_0x5db171[_0x66da('0x1c')]=qs[_0x66da('0x1c')](_0x24f0ce[_0x66da('0x2c')][_0x66da('0x1c')]);_0x5db171[_0x66da('0x1a')]=qs[_0x66da('0x1a')](_0x24f0ce[_0x66da('0x2c')][_0x66da('0x1a')]);}_0x5db171[_0x66da('0x35')]=qs[_0x66da('0x36')](_0x24f0ce['query'][_0x66da('0x36')]);_0x5db171[_0x66da('0x37')]=qs['filters'](_[_0x66da('0x38')](_0x24f0ce[_0x66da('0x2c')],_0x18d0bd[_0x66da('0x2e')]),_0x3ad191);if(_0x24f0ce[_0x66da('0x2c')][_0x66da('0x39')]){_0x5db171[_0x66da('0x37')]=_[_0x66da('0x3a')](_0x5db171[_0x66da('0x37')],{'$or':_[_0x66da('0x27')](_0x3ad191,function(_0x51f7cd){if(_0x51f7cd[_0x66da('0x2a')]!==_0x66da('0x3b')){var _0x4986a8={};_0x4986a8[_0x51f7cd['name']]={'$like':'%'+_0x24f0ce[_0x66da('0x2c')][_0x66da('0x39')]+'%'};return _0x4986a8;}})});}_0x5db171=_[_0x66da('0x3a')]({},_0x5db171,_0x24f0ce['options']);var _0x4b59f9={'where':_0x5db171[_0x66da('0x37')]};return db[_0x66da('0x3c')][_0x66da('0x1d')](_0x4b59f9)[_0x66da('0x21')](function(_0x13d555){_0xcee3d6[_0x66da('0x1d')]=_0x13d555;if(_0x24f0ce[_0x66da('0x2c')][_0x66da('0x3d')]){_0x5db171[_0x66da('0x3e')]=[{'all':!![]}];}return db[_0x66da('0x3c')]['findAll'](_0x5db171);})[_0x66da('0x21')](function(_0x41e11f){_0xcee3d6[_0x66da('0x3f')]=_0x41e11f;return _0xcee3d6;})['then'](respondWithFilteredResult(_0x15ac51,_0x5db171))[_0x66da('0x40')](handleError(_0x15ac51,null));};exports['show']=function(_0x34578c,_0x2f98f9){var _0x4e2da2={'raw':!![],'where':{'id':_0x34578c['params']['id']}},_0x3c17a5={};_0x3c17a5[_0x66da('0x2b')]=_[_0x66da('0x2d')](db[_0x66da('0x3c')][_0x66da('0x28')]);_0x3c17a5[_0x66da('0x2c')]=_[_0x66da('0x2d')](_0x34578c['query']);_0x3c17a5[_0x66da('0x2e')]=_['intersection'](_0x3c17a5[_0x66da('0x2b')],_0x3c17a5['query']);_0x4e2da2[_0x66da('0x30')]=_[_0x66da('0x2f')](_0x3c17a5[_0x66da('0x2b')],qs[_0x66da('0x31')](_0x34578c[_0x66da('0x2c')][_0x66da('0x31')]));_0x4e2da2[_0x66da('0x30')]=_0x4e2da2[_0x66da('0x30')][_0x66da('0x32')]?_0x4e2da2[_0x66da('0x30')]:_0x3c17a5[_0x66da('0x2b')];if(_0x34578c[_0x66da('0x2c')][_0x66da('0x3d')]){_0x4e2da2[_0x66da('0x3e')]=[{'all':!![]}];}_0x4e2da2=_[_0x66da('0x3a')]({},_0x4e2da2,_0x34578c[_0x66da('0x41')]);return db[_0x66da('0x3c')][_0x66da('0x42')](_0x4e2da2)[_0x66da('0x21')](handleEntityNotFound(_0x2f98f9,null))['then'](respondWithResult(_0x2f98f9,null))['catch'](handleError(_0x2f98f9,null));};exports[_0x66da('0x43')]=function(_0x39180a,_0x117f3b){return db['JscriptyQuestionReport'][_0x66da('0x43')](_0x39180a[_0x66da('0x44')],{})[_0x66da('0x21')](respondWithResult(_0x117f3b,0xc9))[_0x66da('0x40')](handleError(_0x117f3b,null));};exports[_0x66da('0x20')]=function(_0xc8d573,_0x423cdd){if(_0xc8d573[_0x66da('0x44')]['id']){delete _0xc8d573[_0x66da('0x44')]['id'];}return db[_0x66da('0x3c')][_0x66da('0x42')]({'where':{'id':_0xc8d573[_0x66da('0x45')]['id']}})[_0x66da('0x21')](handleEntityNotFound(_0x423cdd,null))[_0x66da('0x21')](saveUpdates(_0xc8d573[_0x66da('0x44')],null))[_0x66da('0x21')](respondWithResult(_0x423cdd,null))[_0x66da('0x40')](handleError(_0x423cdd,null));};exports[_0x66da('0x22')]=function(_0x18ced1,_0x515fa2){return db['JscriptyQuestionReport'][_0x66da('0x42')]({'where':{'id':_0x18ced1[_0x66da('0x45')]['id']}})[_0x66da('0x21')](handleEntityNotFound(_0x515fa2,null))[_0x66da('0x21')](removeEntity(_0x515fa2,null))[_0x66da('0x40')](handleError(_0x515fa2,null));};exports[_0x66da('0x46')]=function(_0x1d42af,_0x19b440){return db[_0x66da('0x3c')][_0x66da('0x46')]()[_0x66da('0x21')](respondWithResult(_0x19b440,null))[_0x66da('0x40')](handleError(_0x19b440,null));};
\ No newline at end of file
+var _0xe481=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','save','update','then','error','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','rows','show','options','find','catch','create','body','params','describe','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','lodash','crypto','jsforce','querystring','../../components/parsers/qs'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0xe481,0x7c));var _0x1e48=function(_0xb22994,_0x4a5b62){_0xb22994=_0xb22994-0x0;var _0x55a952=_0xe481[_0xb22994];return _0x55a952;};'use strict';var emlformat=require(_0x1e48('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1e48('0x1'));var jsonpatch=require(_0x1e48('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1e48('0x3'));var util=require(_0x1e48('0x4'));var path=require('path');var sox=require(_0x1e48('0x5'));var csv=require(_0x1e48('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1e48('0x7'));var squel=require('squel');var crypto=require(_0x1e48('0x8'));var jsforce=require(_0x1e48('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x1e48('0x6'));var querystring=require(_0x1e48('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1e48('0xb'));var as=require(_0x1e48('0xc'));var hardwareService=require(_0x1e48('0xd'));var logger=require(_0x1e48('0xe'))(_0x1e48('0xf'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1e48('0x10'));var db=require(_0x1e48('0x11'))['db'];function respondWithStatusCode(_0x171634,_0x4813a2){_0x4813a2=_0x4813a2||0xcc;return function(_0x455e45){if(_0x455e45){return _0x171634[_0x1e48('0x12')](_0x4813a2);}return _0x171634[_0x1e48('0x13')](_0x4813a2)[_0x1e48('0x14')]();};}function respondWithResult(_0x2b3300,_0x39fe13){_0x39fe13=_0x39fe13||0xc8;return function(_0x55d843){if(_0x55d843){return _0x2b3300['status'](_0x39fe13)[_0x1e48('0x15')](_0x55d843);}};}function respondWithFilteredResult(_0x5045fe,_0x37c748){return function(_0x584d51){if(_0x584d51){var _0x52c811=typeof _0x37c748[_0x1e48('0x16')]===_0x1e48('0x17')&&typeof _0x37c748['limit']===_0x1e48('0x17');var _0x4cf09b=_0x584d51['count'];var _0x9be31=_0x52c811?0x0:_0x37c748[_0x1e48('0x16')];var _0x1ea29c=_0x52c811?_0x584d51['count']:_0x37c748['offset']+_0x37c748[_0x1e48('0x18')];var _0x1fca8b;if(_0x1ea29c>=_0x4cf09b){_0x1ea29c=_0x4cf09b;_0x1fca8b=0xc8;}else{_0x1fca8b=0xce;}_0x5045fe[_0x1e48('0x13')](_0x1fca8b);return _0x5045fe['set'](_0x1e48('0x19'),_0x9be31+'-'+_0x1ea29c+'/'+_0x4cf09b)[_0x1e48('0x15')](_0x584d51);}return null;};}function patchUpdates(_0x43b0e0){return function(_0x24b56f){try{jsonpatch['apply'](_0x24b56f,_0x43b0e0,!![]);}catch(_0x1ff225){return BPromise['reject'](_0x1ff225);}return _0x24b56f[_0x1e48('0x1a')]();};}function saveUpdates(_0x45860e,_0x51918d){return function(_0x24d779){if(_0x24d779){return _0x24d779[_0x1e48('0x1b')](_0x45860e)[_0x1e48('0x1c')](function(_0x25ba4d){return _0x25ba4d;});}return null;};}function removeEntity(_0x1b4104,_0x4ee9a9){return function(_0xf4c504){if(_0xf4c504){return _0xf4c504['destroy']()[_0x1e48('0x1c')](function(){_0x1b4104[_0x1e48('0x13')](0xcc)[_0x1e48('0x14')]();});}};}function handleEntityNotFound(_0x16e1e9,_0x19eb08){return function(_0x1b6c08){if(!_0x1b6c08){_0x16e1e9[_0x1e48('0x12')](0x194);}return _0x1b6c08;};}function handleError(_0x2ae2d6,_0x1e0a78){_0x1e0a78=_0x1e0a78||0x1f4;return function(_0x1276cd){logger[_0x1e48('0x1d')](_0x1276cd[_0x1e48('0x1e')]);if(_0x1276cd[_0x1e48('0x1f')]){delete _0x1276cd[_0x1e48('0x1f')];}_0x2ae2d6[_0x1e48('0x13')](_0x1e0a78)[_0x1e48('0x20')](_0x1276cd);};}exports[_0x1e48('0x21')]=function(_0x52a8c1,_0x2b51d9){var _0x73cef6={},_0x5c470e={},_0x39dcca={'count':0x0,'rows':[]};var _0x2e5ef6=_[_0x1e48('0x22')](db[_0x1e48('0x23')][_0x1e48('0x24')],function(_0xf18e62){return{'name':_0xf18e62[_0x1e48('0x25')],'type':_0xf18e62[_0x1e48('0x26')][_0x1e48('0x27')]};});_0x5c470e['model']=_[_0x1e48('0x22')](_0x2e5ef6,'name');_0x5c470e['query']=_[_0x1e48('0x28')](_0x52a8c1[_0x1e48('0x29')]);_0x5c470e[_0x1e48('0x2a')]=_[_0x1e48('0x2b')](_0x5c470e[_0x1e48('0x2c')],_0x5c470e[_0x1e48('0x29')]);_0x73cef6[_0x1e48('0x2d')]=_[_0x1e48('0x2b')](_0x5c470e[_0x1e48('0x2c')],qs[_0x1e48('0x2e')](_0x52a8c1[_0x1e48('0x29')][_0x1e48('0x2e')]));_0x73cef6[_0x1e48('0x2d')]=_0x73cef6['attributes'][_0x1e48('0x2f')]?_0x73cef6[_0x1e48('0x2d')]:_0x5c470e['model'];if(!_0x52a8c1[_0x1e48('0x29')][_0x1e48('0x30')](_0x1e48('0x31'))){_0x73cef6[_0x1e48('0x18')]=qs[_0x1e48('0x18')](_0x52a8c1[_0x1e48('0x29')][_0x1e48('0x18')]);_0x73cef6[_0x1e48('0x16')]=qs[_0x1e48('0x16')](_0x52a8c1[_0x1e48('0x29')][_0x1e48('0x16')]);}_0x73cef6[_0x1e48('0x32')]=qs[_0x1e48('0x33')](_0x52a8c1[_0x1e48('0x29')][_0x1e48('0x33')]);_0x73cef6[_0x1e48('0x34')]=qs['filters'](_[_0x1e48('0x35')](_0x52a8c1[_0x1e48('0x29')],_0x5c470e[_0x1e48('0x2a')]),_0x2e5ef6);if(_0x52a8c1[_0x1e48('0x29')][_0x1e48('0x36')]){_0x73cef6[_0x1e48('0x34')]=_['merge'](_0x73cef6[_0x1e48('0x34')],{'$or':_['map'](_0x2e5ef6,function(_0x5131b3){if(_0x5131b3[_0x1e48('0x26')]!=='VIRTUAL'){var _0x2bc56e={};_0x2bc56e[_0x5131b3[_0x1e48('0x1f')]]={'$like':'%'+_0x52a8c1[_0x1e48('0x29')]['filter']+'%'};return _0x2bc56e;}})});}_0x73cef6=_[_0x1e48('0x37')]({},_0x73cef6,_0x52a8c1['options']);var _0x3890e7={'where':_0x73cef6[_0x1e48('0x34')]};return db[_0x1e48('0x23')][_0x1e48('0x38')](_0x3890e7)[_0x1e48('0x1c')](function(_0x1ea831){_0x39dcca[_0x1e48('0x38')]=_0x1ea831;if(_0x52a8c1['query'][_0x1e48('0x39')]){_0x73cef6[_0x1e48('0x3a')]=[{'all':!![]}];}return db[_0x1e48('0x23')]['findAll'](_0x73cef6);})['then'](function(_0x4eba54){_0x39dcca[_0x1e48('0x3b')]=_0x4eba54;return _0x39dcca;})['then'](respondWithFilteredResult(_0x2b51d9,_0x73cef6))['catch'](handleError(_0x2b51d9,null));};exports[_0x1e48('0x3c')]=function(_0x163a5b,_0x2102a6){var _0xc95758={'raw':!![],'where':{'id':_0x163a5b['params']['id']}},_0x35d866={};_0x35d866[_0x1e48('0x2c')]=_['keys'](db[_0x1e48('0x23')][_0x1e48('0x24')]);_0x35d866[_0x1e48('0x29')]=_[_0x1e48('0x28')](_0x163a5b[_0x1e48('0x29')]);_0x35d866[_0x1e48('0x2a')]=_[_0x1e48('0x2b')](_0x35d866[_0x1e48('0x2c')],_0x35d866[_0x1e48('0x29')]);_0xc95758[_0x1e48('0x2d')]=_[_0x1e48('0x2b')](_0x35d866[_0x1e48('0x2c')],qs[_0x1e48('0x2e')](_0x163a5b[_0x1e48('0x29')][_0x1e48('0x2e')]));_0xc95758[_0x1e48('0x2d')]=_0xc95758[_0x1e48('0x2d')]['length']?_0xc95758[_0x1e48('0x2d')]:_0x35d866['model'];if(_0x163a5b[_0x1e48('0x29')][_0x1e48('0x39')]){_0xc95758['include']=[{'all':!![]}];}_0xc95758=_[_0x1e48('0x37')]({},_0xc95758,_0x163a5b[_0x1e48('0x3d')]);return db[_0x1e48('0x23')][_0x1e48('0x3e')](_0xc95758)[_0x1e48('0x1c')](handleEntityNotFound(_0x2102a6,null))[_0x1e48('0x1c')](respondWithResult(_0x2102a6,null))[_0x1e48('0x3f')](handleError(_0x2102a6,null));};exports[_0x1e48('0x40')]=function(_0x359ba2,_0xf8b36d){return db[_0x1e48('0x23')][_0x1e48('0x40')](_0x359ba2[_0x1e48('0x41')],{})[_0x1e48('0x1c')](respondWithResult(_0xf8b36d,0xc9))['catch'](handleError(_0xf8b36d,null));};exports['update']=function(_0x3c7b2c,_0xe3d86){if(_0x3c7b2c[_0x1e48('0x41')]['id']){delete _0x3c7b2c[_0x1e48('0x41')]['id'];}return db[_0x1e48('0x23')][_0x1e48('0x3e')]({'where':{'id':_0x3c7b2c['params']['id']}})[_0x1e48('0x1c')](handleEntityNotFound(_0xe3d86,null))[_0x1e48('0x1c')](saveUpdates(_0x3c7b2c['body'],null))[_0x1e48('0x1c')](respondWithResult(_0xe3d86,null))[_0x1e48('0x3f')](handleError(_0xe3d86,null));};exports['destroy']=function(_0x10c22c,_0x17d149){return db[_0x1e48('0x23')][_0x1e48('0x3e')]({'where':{'id':_0x10c22c[_0x1e48('0x42')]['id']}})[_0x1e48('0x1c')](handleEntityNotFound(_0x17d149,null))[_0x1e48('0x1c')](removeEntity(_0x17d149,null))['catch'](handleError(_0x17d149,null));};exports[_0x1e48('0x43')]=function(_0x457b5e,_0x53fde0){return db['JscriptyQuestionReport'][_0x1e48('0x43')]()[_0x1e48('0x1c')](respondWithResult(_0x53fde0,null))[_0x1e48('0x3f')](handleError(_0x53fde0,null));};
\ No newline at end of file
index c7d05a0..949108d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe93=['define','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfe93,0x8f));var _0x3fe9=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xfe93[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0x3fe9('0x0'));var logger=require(_0x3fe9('0x1'))(_0x3fe9('0x2'));var moment=require(_0x3fe9('0x3'));var BPromise=require(_0x3fe9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3fe9('0x5'));var config=require(_0x3fe9('0x6'));var attributes=require('./jscriptyQuestionReport.attributes');module['exports']=function(_0x3d70ec,_0x108526){return _0x3d70ec[_0x3fe9('0x7')](_0x3fe9('0x8'),attributes,{'tableName':_0x3fe9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62c2=['moment','bluebird','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger','api'];(function(_0x430eb8,_0x1c9c28){var _0x34d73f=function(_0x19ec31){while(--_0x19ec31){_0x430eb8['push'](_0x430eb8['shift']());}};_0x34d73f(++_0x1c9c28);}(_0x62c2,0x15d));var _0x262c=function(_0x1c46f3,_0x26f4b2){_0x1c46f3=_0x1c46f3-0x0;var _0x28ad27=_0x62c2[_0x1c46f3];return _0x28ad27;};'use strict';var _=require('lodash');var util=require(_0x262c('0x0'));var logger=require(_0x262c('0x1'))(_0x262c('0x2'));var moment=require(_0x262c('0x3'));var BPromise=require(_0x262c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x262c('0x5'));var config=require(_0x262c('0x6'));var attributes=require(_0x262c('0x7'));module['exports']=function(_0x187484,_0x1a3695){return _0x187484[_0x262c('0x8')](_0x262c('0x9'),attributes,{'tableName':_0x262c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cac5dcf..3bf5dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x649b=['rpc','../../config/environment','client','http','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2fe0a5,_0x4f67b9){var _0x3acbcc=function(_0xaa2292){while(--_0xaa2292){_0x2fe0a5['push'](_0x2fe0a5['shift']());}};_0x3acbcc(++_0x4f67b9);}(_0x649b,0x19c));var _0xb649=function(_0x218149,_0x36e4e1){_0x218149=_0x218149-0x0;var _0x4c7bc1=_0x649b[_0x218149];return _0x4c7bc1;};'use strict';var _=require(_0xb649('0x0'));var util=require(_0xb649('0x1'));var moment=require(_0xb649('0x2'));var BPromise=require('bluebird');var rs=require(_0xb649('0x3'));var fs=require('fs');var Redis=require(_0xb649('0x4'));var db=require(_0xb649('0x5'))['db'];var utils=require(_0xb649('0x6'));var logger=require(_0xb649('0x7'))(_0xb649('0x8'));var config=require(_0xb649('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb649('0xa')][_0xb649('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d0b3f,_0x5554a8,_0x3e7424){return new BPromise(function(_0x50bba2,_0xeae52a){return client['request'](_0x3d0b3f,_0x3e7424)[_0xb649('0xc')](function(_0x3b5080){logger[_0xb649('0xd')](_0xb649('0xe'),_0x5554a8,_0xb649('0xf'));logger[_0xb649('0x10')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x5554a8,_0xb649('0xf'),JSON['stringify'](_0x3b5080));if(_0x3b5080[_0xb649('0x11')]){if(_0x3b5080[_0xb649('0x11')][_0xb649('0x12')]===0x1f4){logger['error'](_0xb649('0xe'),_0x5554a8,_0x3b5080['error'][_0xb649('0x13')]);return _0xeae52a(_0x3b5080[_0xb649('0x11')][_0xb649('0x13')]);}logger[_0xb649('0x11')](_0xb649('0xe'),_0x5554a8,_0x3b5080[_0xb649('0x11')][_0xb649('0x13')]);return _0x50bba2(_0x3b5080[_0xb649('0x11')][_0xb649('0x13')]);}else{logger[_0xb649('0xd')](_0xb649('0xe'),_0x5554a8,'request\x20sent');_0x50bba2(_0x3b5080[_0xb649('0x14')]['message']);}})['catch'](function(_0x5f0107){logger[_0xb649('0x11')](_0xb649('0xe'),_0x5554a8,_0x5f0107);_0xeae52a(_0x5f0107);});});}
\ No newline at end of file
+var _0xdcd5=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x37ef06,_0x30881f){var _0x36d0b2=function(_0x490d00){while(--_0x490d00){_0x37ef06['push'](_0x37ef06['shift']());}};_0x36d0b2(++_0x30881f);}(_0xdcd5,0xb9));var _0x5dcd=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xdcd5[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require(_0x5dcd('0x0'));var util=require(_0x5dcd('0x1'));var moment=require(_0x5dcd('0x2'));var BPromise=require(_0x5dcd('0x3'));var rs=require(_0x5dcd('0x4'));var fs=require('fs');var Redis=require(_0x5dcd('0x5'));var db=require(_0x5dcd('0x6'))['db'];var utils=require(_0x5dcd('0x7'));var logger=require(_0x5dcd('0x8'))(_0x5dcd('0x9'));var config=require(_0x5dcd('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x5dcd('0xb')][_0x5dcd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x45ada3,_0x2f9a61,_0x122925){return new BPromise(function(_0xfe8fd6,_0x51df15){return client[_0x5dcd('0xd')](_0x45ada3,_0x122925)[_0x5dcd('0xe')](function(_0xb9e70a){logger[_0x5dcd('0xf')](_0x5dcd('0x10'),_0x2f9a61,_0x5dcd('0x11'));logger[_0x5dcd('0x12')](_0x5dcd('0x13'),_0x2f9a61,'request\x20sent',JSON[_0x5dcd('0x14')](_0xb9e70a));if(_0xb9e70a[_0x5dcd('0x15')]){if(_0xb9e70a[_0x5dcd('0x15')][_0x5dcd('0x16')]===0x1f4){logger['error'](_0x5dcd('0x10'),_0x2f9a61,_0xb9e70a[_0x5dcd('0x15')][_0x5dcd('0x17')]);return _0x51df15(_0xb9e70a[_0x5dcd('0x15')][_0x5dcd('0x17')]);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x2f9a61,_0xb9e70a[_0x5dcd('0x15')][_0x5dcd('0x17')]);return _0xfe8fd6(_0xb9e70a[_0x5dcd('0x15')][_0x5dcd('0x17')]);}else{logger[_0x5dcd('0xf')](_0x5dcd('0x10'),_0x2f9a61,_0x5dcd('0x11'));_0xfe8fd6(_0xb9e70a[_0x5dcd('0x18')][_0x5dcd('0x17')]);}})[_0x5dcd('0x19')](function(_0x960764){logger[_0x5dcd('0x15')](_0x5dcd('0x10'),_0x2f9a61,_0x960764);_0x51df15(_0x960764);});});}
\ No newline at end of file
index c6164a7..8feea60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc12=['update','delete','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getQuestions','post','create','put'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xfc12,0x8e));var _0x2fc1=function(_0x50251e,_0x5b4813){_0x50251e=_0x50251e-0x0;var _0x40ba91=_0xfc12[_0x50251e];return _0x40ba91;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2fc1('0x0'));var timeout=require(_0x2fc1('0x1'));var express=require(_0x2fc1('0x2'));var router=express['Router']();var fs_extra=require(_0x2fc1('0x3'));var auth=require(_0x2fc1('0x4'));var interaction=require(_0x2fc1('0x5'));var config=require(_0x2fc1('0x6'));var controller=require(_0x2fc1('0x7'));router[_0x2fc1('0x8')]('/',auth[_0x2fc1('0x9')](),controller[_0x2fc1('0xa')]);router['get'](_0x2fc1('0xb'),auth[_0x2fc1('0x9')](),controller[_0x2fc1('0xc')]);router['get'](_0x2fc1('0xd'),auth['isAuthenticated'](),controller[_0x2fc1('0xe')]);router[_0x2fc1('0x8')]('/:id/questions',auth[_0x2fc1('0x9')](),controller[_0x2fc1('0xf')]);router[_0x2fc1('0x10')]('/',auth[_0x2fc1('0x9')](),controller[_0x2fc1('0x11')]);router[_0x2fc1('0x12')](_0x2fc1('0xd'),auth['isAuthenticated'](),controller[_0x2fc1('0x13')]);router[_0x2fc1('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x2fc1('0x15')]);module[_0x2fc1('0x16')]=router;
\ No newline at end of file
+var _0x778d=['./jscriptySessionReport.controller','get','isAuthenticated','/describe','/:id','show','/:id/questions','getQuestions','create','update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xef914f,_0x392565){var _0x4d7724=function(_0x7708ea){while(--_0x7708ea){_0xef914f['push'](_0xef914f['shift']());}};_0x4d7724(++_0x392565);}(_0x778d,0x1b0));var _0xd778=function(_0xdeedb0,_0x2f6e07){_0xdeedb0=_0xdeedb0-0x0;var _0x43a262=_0x778d[_0xdeedb0];return _0x43a262;};'use strict';var multer=require(_0xd778('0x0'));var util=require('util');var path=require(_0xd778('0x1'));var timeout=require(_0xd778('0x2'));var express=require(_0xd778('0x3'));var router=express[_0xd778('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd778('0x5'));var interaction=require(_0xd778('0x6'));var config=require(_0xd778('0x7'));var controller=require(_0xd778('0x8'));router[_0xd778('0x9')]('/',auth[_0xd778('0xa')](),controller['index']);router['get'](_0xd778('0xb'),auth[_0xd778('0xa')](),controller['describe']);router[_0xd778('0x9')](_0xd778('0xc'),auth[_0xd778('0xa')](),controller[_0xd778('0xd')]);router[_0xd778('0x9')](_0xd778('0xe'),auth[_0xd778('0xa')](),controller[_0xd778('0xf')]);router['post']('/',auth[_0xd778('0xa')](),controller[_0xd778('0x10')]);router['put'](_0xd778('0xc'),auth[_0xd778('0xa')](),controller[_0xd778('0x11')]);router['delete'](_0xd778('0xc'),auth[_0xd778('0xa')](),controller[_0xd778('0x12')]);module[_0xd778('0x13')]=router;
\ No newline at end of file
index c8f9f39..06fb4be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c85=['YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','starttime','setDataValue','endtime'];(function(_0x4fd812,_0x575915){var _0x6064b5=function(_0x3e0c29){while(--_0x3e0c29){_0x4fd812['push'](_0x4fd812['shift']());}};_0x6064b5(++_0x575915);}(_0x3c85,0x1a0));var _0x53c8=function(_0x293574,_0x1aaf00){_0x293574=_0x293574-0x0;var _0x481fb8=_0x3c85[_0x293574];return _0x481fb8;};'use strict';var moment=require(_0x53c8('0x0'));var Sequelize=require(_0x53c8('0x1'));module[_0x53c8('0x2')]={'starttime':{'type':Sequelize[_0x53c8('0x3')],'set':function(_0x5c2e85){this['setDataValue'](_0x53c8('0x4'),_0x5c2e85);this[_0x53c8('0x5')](_0x53c8('0x6'),moment()['format'](_0x53c8('0x7')));}},'endtime':{'type':Sequelize[_0x53c8('0x3')]},'membername':{'type':Sequelize[_0x53c8('0x8')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x53c8('0x8')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd98a=['format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','setDataValue','starttime'];(function(_0x58b329,_0x5dbbe8){var _0x1d1df5=function(_0x15ae4b){while(--_0x15ae4b){_0x58b329['push'](_0x58b329['shift']());}};_0x1d1df5(++_0x5dbbe8);}(_0xd98a,0xf6));var _0xad98=function(_0x3617c9,_0x4c5450){_0x3617c9=_0x3617c9-0x0;var _0x4f6723=_0xd98a[_0x3617c9];return _0x4f6723;};'use strict';var moment=require(_0xad98('0x0'));var Sequelize=require(_0xad98('0x1'));module[_0xad98('0x2')]={'starttime':{'type':Sequelize[_0xad98('0x3')],'set':function(_0x2a9114){this[_0xad98('0x4')](_0xad98('0x5'),_0x2a9114);this['setDataValue']('endtime',moment()[_0xad98('0x6')](_0xad98('0x7')));}},'endtime':{'type':Sequelize[_0xad98('0x3')]},'membername':{'type':Sequelize[_0xad98('0x8')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xad98('0x8')]},'uniqueid':{'type':Sequelize[_0xad98('0x8')]},'calleridname':{'type':Sequelize[_0xad98('0x8')]},'calleridnum':{'type':Sequelize[_0xad98('0x8')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index fb35537..4ef6aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3369=['JscriptyQuestionReport','SessionId','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','JscriptySessionReport','findAll','rows','catch','show','params','rawAttributes','include','find','body','describe','findOne'];(function(_0xe81770,_0x21edf3){var _0x277ac3=function(_0x5046fc){while(--_0x5046fc){_0xe81770['push'](_0xe81770['shift']());}};_0x277ac3(++_0x21edf3);}(_0x3369,0xef));var _0x9336=function(_0x4f5622,_0x413c6b){_0x4f5622=_0x4f5622-0x0;var _0xdd72d8=_0x3369[_0x4f5622];return _0xdd72d8;};'use strict';var emlformat=require(_0x9336('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9336('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9336('0x2'));var moment=require('moment');var BPromise=require(_0x9336('0x3'));var Mustache=require(_0x9336('0x4'));var util=require(_0x9336('0x5'));var path=require(_0x9336('0x6'));var sox=require(_0x9336('0x7'));var csv=require(_0x9336('0x8'));var ejs=require(_0x9336('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9336('0xa'));var squel=require(_0x9336('0xb'));var crypto=require(_0x9336('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9336('0xd'));var toCsv=require(_0x9336('0x8'));var querystring=require(_0x9336('0xe'));var Papa=require(_0x9336('0xf'));var Redis=require(_0x9336('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9336('0x11'));var as=require(_0x9336('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9336('0x13'))(_0x9336('0x14'));var utils=require('../../config/utils');var config=require(_0x9336('0x15'));var licenseUtil=require(_0x9336('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xee987e,_0x2dd6af){_0x2dd6af=_0x2dd6af||0xcc;return function(_0x358173){if(_0x358173){return _0xee987e[_0x9336('0x17')](_0x2dd6af);}return _0xee987e[_0x9336('0x18')](_0x2dd6af)[_0x9336('0x19')]();};}function respondWithResult(_0x1ccaf1,_0x49875f){_0x49875f=_0x49875f||0xc8;return function(_0x2b8cd2){if(_0x2b8cd2){return _0x1ccaf1[_0x9336('0x18')](_0x49875f)[_0x9336('0x1a')](_0x2b8cd2);}};}function respondWithFilteredResult(_0x35fa3c,_0x1097b0){return function(_0x1c14ea){if(_0x1c14ea){var _0x4a5b9f=typeof _0x1097b0[_0x9336('0x1b')]===_0x9336('0x1c')&&typeof _0x1097b0[_0x9336('0x1d')]===_0x9336('0x1c');var _0x474294=_0x1c14ea[_0x9336('0x1e')];var _0x290c57=_0x4a5b9f?0x0:_0x1097b0[_0x9336('0x1b')];var _0x2db5b8=_0x4a5b9f?_0x1c14ea['count']:_0x1097b0[_0x9336('0x1b')]+_0x1097b0[_0x9336('0x1d')];var _0x4d1e04;if(_0x2db5b8>=_0x474294){_0x2db5b8=_0x474294;_0x4d1e04=0xc8;}else{_0x4d1e04=0xce;}_0x35fa3c['status'](_0x4d1e04);return _0x35fa3c[_0x9336('0x1f')](_0x9336('0x20'),_0x290c57+'-'+_0x2db5b8+'/'+_0x474294)[_0x9336('0x1a')](_0x1c14ea);}return null;};}function patchUpdates(_0x3d250e){return function(_0x340c5a){try{jsonpatch[_0x9336('0x21')](_0x340c5a,_0x3d250e,!![]);}catch(_0x548d3b){return BPromise['reject'](_0x548d3b);}return _0x340c5a[_0x9336('0x22')]();};}function saveUpdates(_0x155412,_0x35e21b){return function(_0x2640f6){if(_0x2640f6){return _0x2640f6[_0x9336('0x23')](_0x155412)[_0x9336('0x24')](function(_0x489e38){return _0x489e38;});}return null;};}function removeEntity(_0x2394fc,_0x4010b8){return function(_0x1fa725){if(_0x1fa725){return _0x1fa725[_0x9336('0x25')]()[_0x9336('0x24')](function(){_0x2394fc[_0x9336('0x18')](0xcc)[_0x9336('0x19')]();});}};}function handleEntityNotFound(_0x14c1e3,_0xa3a89c){return function(_0x532dcd){if(!_0x532dcd){_0x14c1e3['sendStatus'](0x194);}return _0x532dcd;};}function handleError(_0x17625a,_0xa0a424){_0xa0a424=_0xa0a424||0x1f4;return function(_0x416382){logger[_0x9336('0x26')](_0x416382[_0x9336('0x27')]);if(_0x416382[_0x9336('0x28')]){delete _0x416382[_0x9336('0x28')];}_0x17625a[_0x9336('0x18')](_0xa0a424)[_0x9336('0x29')](_0x416382);};}exports[_0x9336('0x2a')]=function(_0x3fc0a8,_0x150d80){var _0x16ff67={},_0x2f0e7a={},_0x36541f={'count':0x0,'rows':[]};var _0x15b7d7=_[_0x9336('0x2b')](db['JscriptySessionReport']['rawAttributes'],function(_0x34d7c3){return{'name':_0x34d7c3[_0x9336('0x2c')],'type':_0x34d7c3[_0x9336('0x2d')][_0x9336('0x2e')]};});_0x2f0e7a[_0x9336('0x2f')]=_[_0x9336('0x2b')](_0x15b7d7,_0x9336('0x28'));_0x2f0e7a[_0x9336('0x30')]=_[_0x9336('0x31')](_0x3fc0a8[_0x9336('0x30')]);_0x2f0e7a[_0x9336('0x32')]=_[_0x9336('0x33')](_0x2f0e7a[_0x9336('0x2f')],_0x2f0e7a[_0x9336('0x30')]);_0x16ff67[_0x9336('0x34')]=_[_0x9336('0x33')](_0x2f0e7a[_0x9336('0x2f')],qs[_0x9336('0x35')](_0x3fc0a8[_0x9336('0x30')]['fields']));_0x16ff67[_0x9336('0x34')]=_0x16ff67[_0x9336('0x34')][_0x9336('0x36')]?_0x16ff67[_0x9336('0x34')]:_0x2f0e7a[_0x9336('0x2f')];if(!_0x3fc0a8[_0x9336('0x30')][_0x9336('0x37')](_0x9336('0x38'))){_0x16ff67[_0x9336('0x1d')]=qs[_0x9336('0x1d')](_0x3fc0a8[_0x9336('0x30')][_0x9336('0x1d')]);_0x16ff67[_0x9336('0x1b')]=qs[_0x9336('0x1b')](_0x3fc0a8[_0x9336('0x30')][_0x9336('0x1b')]);}_0x16ff67[_0x9336('0x39')]=qs[_0x9336('0x3a')](_0x3fc0a8[_0x9336('0x30')]['sort']);_0x16ff67[_0x9336('0x3b')]=qs[_0x9336('0x32')](_[_0x9336('0x3c')](_0x3fc0a8[_0x9336('0x30')],_0x2f0e7a['filters']),_0x15b7d7);if(_0x3fc0a8[_0x9336('0x30')][_0x9336('0x3d')]){_0x16ff67[_0x9336('0x3b')]=_['merge'](_0x16ff67[_0x9336('0x3b')],{'$or':_[_0x9336('0x2b')](_0x15b7d7,function(_0x9c07ea){if(_0x9c07ea[_0x9336('0x2d')]!=='VIRTUAL'){var _0x5b7199={};_0x5b7199[_0x9c07ea[_0x9336('0x28')]]={'$like':'%'+_0x3fc0a8[_0x9336('0x30')][_0x9336('0x3d')]+'%'};return _0x5b7199;}})});}_0x16ff67=_[_0x9336('0x3e')]({},_0x16ff67,_0x3fc0a8[_0x9336('0x3f')]);var _0x1a42a8={'where':_0x16ff67[_0x9336('0x3b')]};return db['JscriptySessionReport'][_0x9336('0x1e')](_0x1a42a8)[_0x9336('0x24')](function(_0x28bfb8){_0x36541f['count']=_0x28bfb8;if(_0x3fc0a8['query'][_0x9336('0x40')]){_0x16ff67['include']=[{'all':!![]}];}return db[_0x9336('0x41')][_0x9336('0x42')](_0x16ff67);})[_0x9336('0x24')](function(_0x405d92){_0x36541f[_0x9336('0x43')]=_0x405d92;return _0x36541f;})['then'](respondWithFilteredResult(_0x150d80,_0x16ff67))[_0x9336('0x44')](handleError(_0x150d80,null));};exports[_0x9336('0x45')]=function(_0x2f8c63,_0x4c46ba){var _0x345890={'raw':!![],'where':{'id':_0x2f8c63[_0x9336('0x46')]['id']}},_0x1baee4={};_0x1baee4[_0x9336('0x2f')]=_[_0x9336('0x31')](db['JscriptySessionReport'][_0x9336('0x47')]);_0x1baee4[_0x9336('0x30')]=_[_0x9336('0x31')](_0x2f8c63[_0x9336('0x30')]);_0x1baee4['filters']=_['intersection'](_0x1baee4[_0x9336('0x2f')],_0x1baee4[_0x9336('0x30')]);_0x345890[_0x9336('0x34')]=_[_0x9336('0x33')](_0x1baee4['model'],qs['fields'](_0x2f8c63[_0x9336('0x30')][_0x9336('0x35')]));_0x345890['attributes']=_0x345890[_0x9336('0x34')]['length']?_0x345890[_0x9336('0x34')]:_0x1baee4[_0x9336('0x2f')];if(_0x2f8c63[_0x9336('0x30')][_0x9336('0x40')]){_0x345890[_0x9336('0x48')]=[{'all':!![]}];}_0x345890=_[_0x9336('0x3e')]({},_0x345890,_0x2f8c63[_0x9336('0x3f')]);return db[_0x9336('0x41')][_0x9336('0x49')](_0x345890)['then'](handleEntityNotFound(_0x4c46ba,null))[_0x9336('0x24')](respondWithResult(_0x4c46ba,null))['catch'](handleError(_0x4c46ba,null));};exports['create']=function(_0x4b2d63,_0x46d515){return db[_0x9336('0x41')]['create'](_0x4b2d63[_0x9336('0x4a')],{})[_0x9336('0x24')](respondWithResult(_0x46d515,0xc9))[_0x9336('0x44')](handleError(_0x46d515,null));};exports[_0x9336('0x23')]=function(_0x215719,_0x27dd18){if(_0x215719['body']['id']){delete _0x215719[_0x9336('0x4a')]['id'];}return db[_0x9336('0x41')][_0x9336('0x49')]({'where':{'id':_0x215719[_0x9336('0x46')]['id']}})[_0x9336('0x24')](handleEntityNotFound(_0x27dd18,null))[_0x9336('0x24')](saveUpdates(_0x215719[_0x9336('0x4a')],null))[_0x9336('0x24')](respondWithResult(_0x27dd18,null))[_0x9336('0x44')](handleError(_0x27dd18,null));};exports[_0x9336('0x25')]=function(_0x3adce5,_0x3ad821){return db['JscriptySessionReport']['find']({'where':{'id':_0x3adce5[_0x9336('0x46')]['id']}})[_0x9336('0x24')](handleEntityNotFound(_0x3ad821,null))['then'](removeEntity(_0x3ad821,null))[_0x9336('0x44')](handleError(_0x3ad821,null));};exports['describe']=function(_0x1c5bc3,_0x19c9d3){return db[_0x9336('0x41')][_0x9336('0x4b')]()[_0x9336('0x24')](respondWithResult(_0x19c9d3,null))[_0x9336('0x44')](handleError(_0x19c9d3,null));};exports['getQuestions']=function(_0x12b705,_0x40a635,_0x4bc6d7){var _0x25dff5={'raw':!![],'where':{}};var _0x2f4294={};var _0x511d81={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x9336('0x4c')]({'where':{'id':_0x12b705[_0x9336('0x46')]['id']}})[_0x9336('0x24')](handleEntityNotFound(_0x40a635,null))[_0x9336('0x24')](function(_0x4211cc){if(_0x4211cc){_0x2f4294[_0x9336('0x2f')]=_[_0x9336('0x31')](db[_0x9336('0x4d')][_0x9336('0x47')]);_0x2f4294[_0x9336('0x30')]=_[_0x9336('0x31')](_0x12b705[_0x9336('0x30')]);_0x2f4294[_0x9336('0x32')]=_['intersection'](_0x2f4294[_0x9336('0x2f')],_0x2f4294['query']);_0x25dff5[_0x9336('0x34')]=_[_0x9336('0x33')](_0x2f4294['model'],qs[_0x9336('0x35')](_0x12b705[_0x9336('0x30')][_0x9336('0x35')]));_0x25dff5[_0x9336('0x34')]=_0x25dff5['attributes'][_0x9336('0x36')]?_0x25dff5[_0x9336('0x34')]:_0x2f4294[_0x9336('0x2f')];if(!_0x12b705[_0x9336('0x30')][_0x9336('0x37')]('nolimit')){_0x25dff5[_0x9336('0x1d')]=qs[_0x9336('0x1d')](_0x12b705[_0x9336('0x30')][_0x9336('0x1d')]);_0x25dff5[_0x9336('0x1b')]=qs[_0x9336('0x1b')](_0x12b705[_0x9336('0x30')][_0x9336('0x1b')]);}_0x25dff5[_0x9336('0x39')]=qs['sort'](_0x12b705[_0x9336('0x30')][_0x9336('0x3a')]);_0x25dff5[_0x9336('0x3b')]=qs[_0x9336('0x32')](_[_0x9336('0x3c')](_0x12b705[_0x9336('0x30')],_0x2f4294[_0x9336('0x32')]));_0x25dff5['where'][_0x9336('0x4e')]=_0x4211cc['id'];if(_0x12b705[_0x9336('0x30')][_0x9336('0x3d')]){_0x25dff5[_0x9336('0x3b')]=_[_0x9336('0x3e')](_0x25dff5['where'],{'$or':_['map'](_0x25dff5[_0x9336('0x34')],function(_0x33b005){var _0x91baa7={};_0x91baa7[_0x33b005]={'$like':'%'+_0x12b705[_0x9336('0x30')][_0x9336('0x3d')]+'%'};return _0x91baa7;})});}_0x25dff5=_[_0x9336('0x3e')]({},_0x25dff5,_0x12b705[_0x9336('0x3f')]);return db[_0x9336('0x4d')]['count']({'where':_0x25dff5[_0x9336('0x3b')]})['then'](function(_0x2a53c0){_0x511d81['count']=_0x2a53c0;if(_0x12b705[_0x9336('0x30')]['includeAll']){_0x25dff5[_0x9336('0x48')]=[{'all':!![]}];}return db[_0x9336('0x4d')][_0x9336('0x42')](_0x25dff5);})[_0x9336('0x24')](function(_0x9feb37){_0x511d81['rows']=_0x9feb37;return _0x511d81;});}})['then'](respondWithFilteredResult(_0x40a635,_0x25dff5))[_0x9336('0x44')](handleError(_0x40a635,null));};
\ No newline at end of file
+var _0x2683=['index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','name','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','findAll','rows','catch','show','params','includeAll','include','options','find','create','body','describe','JscriptyQuestionReport','SessionId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','send'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2683,0xc9));var _0x3268=function(_0xa82688,_0x3d82f0){_0xa82688=_0xa82688-0x0;var _0x5c1582=_0x2683[_0xa82688];return _0x5c1582;};'use strict';var emlformat=require(_0x3268('0x0'));var rimraf=require(_0x3268('0x1'));var zipdir=require(_0x3268('0x2'));var jsonpatch=require(_0x3268('0x3'));var rp=require(_0x3268('0x4'));var moment=require(_0x3268('0x5'));var BPromise=require(_0x3268('0x6'));var Mustache=require(_0x3268('0x7'));var util=require('util');var path=require(_0x3268('0x8'));var sox=require('sox');var csv=require(_0x3268('0x9'));var ejs=require(_0x3268('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3268('0xb'));var squel=require(_0x3268('0xc'));var crypto=require(_0x3268('0xd'));var jsforce=require(_0x3268('0xe'));var deskjs=require(_0x3268('0xf'));var toCsv=require(_0x3268('0x9'));var querystring=require(_0x3268('0x10'));var Papa=require('papaparse');var Redis=require(_0x3268('0x11'));var authService=require(_0x3268('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3268('0x13'));var hardwareService=require(_0x3268('0x14'));var logger=require(_0x3268('0x15'))('api');var utils=require(_0x3268('0x16'));var config=require(_0x3268('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3268('0x18'))['db'];function respondWithStatusCode(_0x3c5bac,_0x187b39){_0x187b39=_0x187b39||0xcc;return function(_0x4d4911){if(_0x4d4911){return _0x3c5bac[_0x3268('0x19')](_0x187b39);}return _0x3c5bac[_0x3268('0x1a')](_0x187b39)[_0x3268('0x1b')]();};}function respondWithResult(_0x424786,_0xd7d87d){_0xd7d87d=_0xd7d87d||0xc8;return function(_0x18bb62){if(_0x18bb62){return _0x424786['status'](_0xd7d87d)[_0x3268('0x1c')](_0x18bb62);}};}function respondWithFilteredResult(_0x5211db,_0x5d933a){return function(_0x5bf51a){if(_0x5bf51a){var _0xe6520f=typeof _0x5d933a[_0x3268('0x1d')]===_0x3268('0x1e')&&typeof _0x5d933a[_0x3268('0x1f')]===_0x3268('0x1e');var _0x4b7aeb=_0x5bf51a[_0x3268('0x20')];var _0x57b486=_0xe6520f?0x0:_0x5d933a['offset'];var _0x1188ba=_0xe6520f?_0x5bf51a['count']:_0x5d933a[_0x3268('0x1d')]+_0x5d933a[_0x3268('0x1f')];var _0x3df9c5;if(_0x1188ba>=_0x4b7aeb){_0x1188ba=_0x4b7aeb;_0x3df9c5=0xc8;}else{_0x3df9c5=0xce;}_0x5211db['status'](_0x3df9c5);return _0x5211db[_0x3268('0x21')](_0x3268('0x22'),_0x57b486+'-'+_0x1188ba+'/'+_0x4b7aeb)['json'](_0x5bf51a);}return null;};}function patchUpdates(_0x24b2ed){return function(_0x5465dd){try{jsonpatch[_0x3268('0x23')](_0x5465dd,_0x24b2ed,!![]);}catch(_0x194211){return BPromise[_0x3268('0x24')](_0x194211);}return _0x5465dd['save']();};}function saveUpdates(_0x4abad5,_0x3f851c){return function(_0x5727ad){if(_0x5727ad){return _0x5727ad[_0x3268('0x25')](_0x4abad5)[_0x3268('0x26')](function(_0x4147b8){return _0x4147b8;});}return null;};}function removeEntity(_0x4dde25,_0x5bb4b1){return function(_0x3a19e3){if(_0x3a19e3){return _0x3a19e3[_0x3268('0x27')]()[_0x3268('0x26')](function(){_0x4dde25[_0x3268('0x1a')](0xcc)[_0x3268('0x1b')]();});}};}function handleEntityNotFound(_0x37c592,_0x248e27){return function(_0xe18f74){if(!_0xe18f74){_0x37c592['sendStatus'](0x194);}return _0xe18f74;};}function handleError(_0x23db57,_0x35d8ef){_0x35d8ef=_0x35d8ef||0x1f4;return function(_0x5543f5){logger[_0x3268('0x28')](_0x5543f5['stack']);if(_0x5543f5['name']){delete _0x5543f5['name'];}_0x23db57[_0x3268('0x1a')](_0x35d8ef)[_0x3268('0x29')](_0x5543f5);};}exports[_0x3268('0x2a')]=function(_0x478aa5,_0x36435d){var _0x135f69={},_0x320116={},_0x16f875={'count':0x0,'rows':[]};var _0x3c41d5=_[_0x3268('0x2b')](db[_0x3268('0x2c')][_0x3268('0x2d')],function(_0x437003){return{'name':_0x437003[_0x3268('0x2e')],'type':_0x437003[_0x3268('0x2f')][_0x3268('0x30')]};});_0x320116['model']=_['map'](_0x3c41d5,_0x3268('0x31'));_0x320116['query']=_[_0x3268('0x32')](_0x478aa5[_0x3268('0x33')]);_0x320116[_0x3268('0x34')]=_[_0x3268('0x35')](_0x320116['model'],_0x320116[_0x3268('0x33')]);_0x135f69[_0x3268('0x36')]=_[_0x3268('0x35')](_0x320116[_0x3268('0x37')],qs[_0x3268('0x38')](_0x478aa5[_0x3268('0x33')][_0x3268('0x38')]));_0x135f69[_0x3268('0x36')]=_0x135f69['attributes'][_0x3268('0x39')]?_0x135f69[_0x3268('0x36')]:_0x320116['model'];if(!_0x478aa5['query'][_0x3268('0x3a')](_0x3268('0x3b'))){_0x135f69[_0x3268('0x1f')]=qs['limit'](_0x478aa5[_0x3268('0x33')][_0x3268('0x1f')]);_0x135f69[_0x3268('0x1d')]=qs[_0x3268('0x1d')](_0x478aa5[_0x3268('0x33')][_0x3268('0x1d')]);}_0x135f69[_0x3268('0x3c')]=qs[_0x3268('0x3d')](_0x478aa5[_0x3268('0x33')][_0x3268('0x3d')]);_0x135f69[_0x3268('0x3e')]=qs['filters'](_[_0x3268('0x3f')](_0x478aa5[_0x3268('0x33')],_0x320116['filters']),_0x3c41d5);if(_0x478aa5[_0x3268('0x33')][_0x3268('0x40')]){_0x135f69['where']=_['merge'](_0x135f69[_0x3268('0x3e')],{'$or':_[_0x3268('0x2b')](_0x3c41d5,function(_0x25b38b){if(_0x25b38b['type']!==_0x3268('0x41')){var _0xf8e460={};_0xf8e460[_0x25b38b[_0x3268('0x31')]]={'$like':'%'+_0x478aa5[_0x3268('0x33')][_0x3268('0x40')]+'%'};return _0xf8e460;}})});}_0x135f69=_[_0x3268('0x42')]({},_0x135f69,_0x478aa5['options']);var _0x5196fe={'where':_0x135f69['where']};return db[_0x3268('0x2c')][_0x3268('0x20')](_0x5196fe)['then'](function(_0x51f4b8){_0x16f875[_0x3268('0x20')]=_0x51f4b8;if(_0x478aa5[_0x3268('0x33')]['includeAll']){_0x135f69['include']=[{'all':!![]}];}return db[_0x3268('0x2c')][_0x3268('0x43')](_0x135f69);})[_0x3268('0x26')](function(_0x418298){_0x16f875[_0x3268('0x44')]=_0x418298;return _0x16f875;})[_0x3268('0x26')](respondWithFilteredResult(_0x36435d,_0x135f69))[_0x3268('0x45')](handleError(_0x36435d,null));};exports[_0x3268('0x46')]=function(_0x32ce08,_0x475af1){var _0x151fff={'raw':!![],'where':{'id':_0x32ce08[_0x3268('0x47')]['id']}},_0x359f49={};_0x359f49['model']=_[_0x3268('0x32')](db[_0x3268('0x2c')][_0x3268('0x2d')]);_0x359f49[_0x3268('0x33')]=_[_0x3268('0x32')](_0x32ce08[_0x3268('0x33')]);_0x359f49[_0x3268('0x34')]=_[_0x3268('0x35')](_0x359f49[_0x3268('0x37')],_0x359f49['query']);_0x151fff['attributes']=_['intersection'](_0x359f49[_0x3268('0x37')],qs['fields'](_0x32ce08['query']['fields']));_0x151fff['attributes']=_0x151fff[_0x3268('0x36')]['length']?_0x151fff[_0x3268('0x36')]:_0x359f49['model'];if(_0x32ce08[_0x3268('0x33')][_0x3268('0x48')]){_0x151fff[_0x3268('0x49')]=[{'all':!![]}];}_0x151fff=_[_0x3268('0x42')]({},_0x151fff,_0x32ce08[_0x3268('0x4a')]);return db[_0x3268('0x2c')][_0x3268('0x4b')](_0x151fff)[_0x3268('0x26')](handleEntityNotFound(_0x475af1,null))[_0x3268('0x26')](respondWithResult(_0x475af1,null))[_0x3268('0x45')](handleError(_0x475af1,null));};exports[_0x3268('0x4c')]=function(_0x57557f,_0x41b109){return db[_0x3268('0x2c')][_0x3268('0x4c')](_0x57557f['body'],{})[_0x3268('0x26')](respondWithResult(_0x41b109,0xc9))[_0x3268('0x45')](handleError(_0x41b109,null));};exports['update']=function(_0x2c3ed8,_0x3326b2){if(_0x2c3ed8[_0x3268('0x4d')]['id']){delete _0x2c3ed8['body']['id'];}return db[_0x3268('0x2c')][_0x3268('0x4b')]({'where':{'id':_0x2c3ed8[_0x3268('0x47')]['id']}})[_0x3268('0x26')](handleEntityNotFound(_0x3326b2,null))['then'](saveUpdates(_0x2c3ed8['body'],null))[_0x3268('0x26')](respondWithResult(_0x3326b2,null))['catch'](handleError(_0x3326b2,null));};exports[_0x3268('0x27')]=function(_0xbee286,_0x17da42){return db['JscriptySessionReport']['find']({'where':{'id':_0xbee286[_0x3268('0x47')]['id']}})[_0x3268('0x26')](handleEntityNotFound(_0x17da42,null))[_0x3268('0x26')](removeEntity(_0x17da42,null))[_0x3268('0x45')](handleError(_0x17da42,null));};exports[_0x3268('0x4e')]=function(_0x53a12a,_0x3fa5fc){return db[_0x3268('0x2c')]['describe']()[_0x3268('0x26')](respondWithResult(_0x3fa5fc,null))[_0x3268('0x45')](handleError(_0x3fa5fc,null));};exports['getQuestions']=function(_0x54659c,_0x15a084,_0x496824){var _0x4965cc={'raw':!![],'where':{}};var _0x15e3a3={};var _0x4cd3cf={'count':0x0,'rows':[]};return db[_0x3268('0x2c')]['findOne']({'where':{'id':_0x54659c[_0x3268('0x47')]['id']}})[_0x3268('0x26')](handleEntityNotFound(_0x15a084,null))[_0x3268('0x26')](function(_0x13ae60){if(_0x13ae60){_0x15e3a3[_0x3268('0x37')]=_[_0x3268('0x32')](db[_0x3268('0x4f')][_0x3268('0x2d')]);_0x15e3a3[_0x3268('0x33')]=_[_0x3268('0x32')](_0x54659c[_0x3268('0x33')]);_0x15e3a3[_0x3268('0x34')]=_[_0x3268('0x35')](_0x15e3a3['model'],_0x15e3a3[_0x3268('0x33')]);_0x4965cc[_0x3268('0x36')]=_['intersection'](_0x15e3a3[_0x3268('0x37')],qs['fields'](_0x54659c[_0x3268('0x33')]['fields']));_0x4965cc['attributes']=_0x4965cc[_0x3268('0x36')][_0x3268('0x39')]?_0x4965cc[_0x3268('0x36')]:_0x15e3a3[_0x3268('0x37')];if(!_0x54659c[_0x3268('0x33')][_0x3268('0x3a')]('nolimit')){_0x4965cc[_0x3268('0x1f')]=qs['limit'](_0x54659c['query'][_0x3268('0x1f')]);_0x4965cc[_0x3268('0x1d')]=qs[_0x3268('0x1d')](_0x54659c['query'][_0x3268('0x1d')]);}_0x4965cc[_0x3268('0x3c')]=qs[_0x3268('0x3d')](_0x54659c[_0x3268('0x33')][_0x3268('0x3d')]);_0x4965cc[_0x3268('0x3e')]=qs[_0x3268('0x34')](_[_0x3268('0x3f')](_0x54659c['query'],_0x15e3a3[_0x3268('0x34')]));_0x4965cc[_0x3268('0x3e')][_0x3268('0x50')]=_0x13ae60['id'];if(_0x54659c[_0x3268('0x33')][_0x3268('0x40')]){_0x4965cc[_0x3268('0x3e')]=_[_0x3268('0x42')](_0x4965cc[_0x3268('0x3e')],{'$or':_[_0x3268('0x2b')](_0x4965cc[_0x3268('0x36')],function(_0x194836){var _0x285cd1={};_0x285cd1[_0x194836]={'$like':'%'+_0x54659c[_0x3268('0x33')][_0x3268('0x40')]+'%'};return _0x285cd1;})});}_0x4965cc=_['merge']({},_0x4965cc,_0x54659c[_0x3268('0x4a')]);return db[_0x3268('0x4f')]['count']({'where':_0x4965cc[_0x3268('0x3e')]})['then'](function(_0x57fa19){_0x4cd3cf[_0x3268('0x20')]=_0x57fa19;if(_0x54659c[_0x3268('0x33')][_0x3268('0x48')]){_0x4965cc[_0x3268('0x49')]=[{'all':!![]}];}return db[_0x3268('0x4f')]['findAll'](_0x4965cc);})[_0x3268('0x26')](function(_0x6bea84){_0x4cd3cf[_0x3268('0x44')]=_0x6bea84;return _0x4cd3cf;});}})['then'](respondWithFilteredResult(_0x15a084,_0x4965cc))[_0x3268('0x45')](handleError(_0x15a084,null));};
\ No newline at end of file
index b89a7e9..92341ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','report_jscripty_sessions','lodash','../../config/logger'];(function(_0x25cbbd,_0xa9223){var _0x231ae6=function(_0x1d5a30){while(--_0x1d5a30){_0x25cbbd['push'](_0x25cbbd['shift']());}};_0x231ae6(++_0xa9223);}(_0x277c,0x153));var _0xc277=function(_0x45d90e,_0x58310e){_0x45d90e=_0x45d90e-0x0;var _0x52af7c=_0x277c[_0x45d90e];return _0x52af7c;};'use strict';var _=require(_0xc277('0x0'));var util=require('util');var logger=require(_0xc277('0x1'))(_0xc277('0x2'));var moment=require(_0xc277('0x3'));var BPromise=require(_0xc277('0x4'));var rp=require(_0xc277('0x5'));var fs=require('fs');var path=require(_0xc277('0x6'));var rimraf=require(_0xc277('0x7'));var config=require(_0xc277('0x8'));var attributes=require('./jscriptySessionReport.attributes');module['exports']=function(_0x1a6582,_0x5a4f03){return _0x1a6582[_0xc277('0x9')]('JscriptySessionReport',attributes,{'tableName':_0xc277('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','lodash','util'];(function(_0x2ff64a,_0x2e0d33){var _0x52b2b5=function(_0x54d1b3){while(--_0x54d1b3){_0x2ff64a['push'](_0x2ff64a['shift']());}};_0x52b2b5(++_0x2e0d33);}(_0xf494,0x1c6));var _0x4f49=function(_0x67068a,_0x2a7c99){_0x67068a=_0x67068a-0x0;var _0x32f8e1=_0xf494[_0x67068a];return _0x32f8e1;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc77594..406f03f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aad=['stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s'];(function(_0xe95ae4,_0x146096){var _0x3fed9b=function(_0x37ec47){while(--_0x37ec47){_0xe95ae4['push'](_0xe95ae4['shift']());}};_0x3fed9b(++_0x146096);}(_0x8aad,0x146));var _0xd8aa=function(_0x334a88,_0x227bbf){_0x334a88=_0x334a88-0x0;var _0xccf26c=_0x8aad[_0x334a88];return _0xccf26c;};'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']('JscriptySessionReport,\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);});});}
\ No newline at end of file
+var _0xcaf2=['bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment'];(function(_0x20a9e5,_0x4f4731){var _0x5822c=function(_0x444bb3){while(--_0x444bb3){_0x20a9e5['push'](_0x20a9e5['shift']());}};_0x5822c(++_0x4f4731);}(_0xcaf2,0x8a));var _0x2caf=function(_0x4ca6ab,_0x29bc6c){_0x4ca6ab=_0x4ca6ab-0x0;var _0x516678=_0xcaf2[_0x4ca6ab];return _0x516678;};'use strict';var _=require(_0x2caf('0x0'));var util=require('util');var moment=require(_0x2caf('0x1'));var BPromise=require(_0x2caf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2caf('0x3'));var db=require(_0x2caf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2caf('0x5'))('rpc');var config=require(_0x2caf('0x6'));var jayson=require(_0x2caf('0x7'));var client=jayson[_0x2caf('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc44e4e,_0x314486,_0x4667c6){return new BPromise(function(_0x34e792,_0x5611aa){return client[_0x2caf('0x9')](_0xc44e4e,_0x4667c6)[_0x2caf('0xa')](function(_0x45e520){logger[_0x2caf('0xb')](_0x2caf('0xc'),_0x314486,_0x2caf('0xd'));logger[_0x2caf('0xe')](_0x2caf('0xf'),_0x314486,_0x2caf('0xd'),JSON['stringify'](_0x45e520));if(_0x45e520[_0x2caf('0x10')]){if(_0x45e520[_0x2caf('0x10')][_0x2caf('0x11')]===0x1f4){logger[_0x2caf('0x10')](_0x2caf('0xc'),_0x314486,_0x45e520[_0x2caf('0x10')][_0x2caf('0x12')]);return _0x5611aa(_0x45e520[_0x2caf('0x10')]['message']);}logger[_0x2caf('0x10')](_0x2caf('0xc'),_0x314486,_0x45e520['error']['message']);return _0x34e792(_0x45e520['error'][_0x2caf('0x12')]);}else{logger['info'](_0x2caf('0xc'),_0x314486,_0x2caf('0xd'));_0x34e792(_0x45e520[_0x2caf('0x13')][_0x2caf('0x12')]);}})['catch'](function(_0x184355){logger['error'](_0x2caf('0xc'),_0x314486,_0x184355);_0x5611aa(_0x184355);});});}
\ No newline at end of file
index c3476dd..31c19de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f4=['exports','multer','util','path','Router','fs-extra','../../config/environment','./license.controller','get','put','/:id','isAuthenticated'];(function(_0x2c6360,_0x2189e8){var _0x3ac9e8=function(_0x42a3af){while(--_0x42a3af){_0x2c6360['push'](_0x2c6360['shift']());}};_0x3ac9e8(++_0x2189e8);}(_0x95f4,0xf1));var _0x495f=function(_0x379436,_0x4fe72c){_0x379436=_0x379436-0x0;var _0x3fff6d=_0x95f4[_0x379436];return _0x3fff6d;};'use strict';var multer=require(_0x495f('0x0'));var util=require(_0x495f('0x1'));var path=require(_0x495f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x495f('0x3')]();var fs_extra=require(_0x495f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x495f('0x5'));var controller=require(_0x495f('0x6'));router[_0x495f('0x7')]('/',controller['index']);router[_0x495f('0x8')](_0x495f('0x9'),auth[_0x495f('0xa')](),controller['update']);module[_0x495f('0xb')]=router;
\ No newline at end of file
+var _0x6873=['isAuthenticated','update','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./license.controller','get','put','/:id'];(function(_0x33f49f,_0x18fa2d){var _0x5335a3=function(_0xdd5198){while(--_0xdd5198){_0x33f49f['push'](_0x33f49f['shift']());}};_0x5335a3(++_0x18fa2d);}(_0x6873,0xac));var _0x3687=function(_0x1b8d87,_0x4168fb){_0x1b8d87=_0x1b8d87-0x0;var _0x182b74=_0x6873[_0x1b8d87];return _0x182b74;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3687('0x0'));var timeout=require(_0x3687('0x1'));var express=require(_0x3687('0x2'));var router=express[_0x3687('0x3')]();var fs_extra=require(_0x3687('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3687('0x5'));var config=require('../../config/environment');var controller=require(_0x3687('0x6'));router[_0x3687('0x7')]('/',controller['index']);router[_0x3687('0x8')](_0x3687('0x9'),auth[_0x3687('0xa')](),controller[_0x3687('0xb')]);module[_0x3687('0xc')]=router;
\ No newline at end of file
index 73a9437..7fb5a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa3f=['exports','TEXT','STRING','sequelize'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0xfa3f,0xcb));var _0xffa3=function(_0x1bab13,_0x37bcf9){_0x1bab13=_0x1bab13-0x0;var _0x2df0cb=_0xfa3f[_0x1bab13];return _0x2df0cb;};'use strict';var Sequelize=require(_0xffa3('0x0'));module[_0xffa3('0x1')]={'license':{'type':Sequelize[_0xffa3('0x2')]},'data1':{'type':Sequelize[_0xffa3('0x3')]},'data2':{'type':Sequelize[_0xffa3('0x3')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbd6d=['exports','TEXT','STRING','INTEGER','sequelize'];(function(_0x48271e,_0x2c7983){var _0x53a029=function(_0x381ecc){while(--_0x381ecc){_0x48271e['push'](_0x48271e['shift']());}};_0x53a029(++_0x2c7983);}(_0xbd6d,0xd1));var _0xdbd6=function(_0x4942aa,_0xd6e51){_0x4942aa=_0x4942aa-0x0;var _0x1f3fac=_0xbd6d[_0x4942aa];return _0x1f3fac;};'use strict';var Sequelize=require(_0xdbd6('0x0'));module[_0xdbd6('0x1')]={'license':{'type':Sequelize[_0xdbd6('0x2')]},'data1':{'type':Sequelize[_0xdbd6('0x3')]},'data2':{'type':Sequelize[_0xdbd6('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xdbd6('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 56f0f37..64eb3ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','options','getLicense','catch','body','License','find','checkLicense','key','demo','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x326f,0xd1));var _0xf326=function(_0x22ff9c,_0x5cd35f){_0x22ff9c=_0x22ff9c-0x0;var _0x43c64=_0x326f[_0x22ff9c];return _0x43c64;};'use strict';var emlformat=require(_0xf326('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf326('0x1'));var rp=require(_0xf326('0x2'));var moment=require(_0xf326('0x3'));var BPromise=require(_0xf326('0x4'));var Mustache=require(_0xf326('0x5'));var util=require(_0xf326('0x6'));var path=require(_0xf326('0x7'));var sox=require(_0xf326('0x8'));var csv=require(_0xf326('0x9'));var ejs=require(_0xf326('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf326('0xb'));var squel=require(_0xf326('0xc'));var crypto=require(_0xf326('0xd'));var jsforce=require(_0xf326('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf326('0xf'));var Redis=require(_0xf326('0x10'));var authService=require(_0xf326('0x11'));var qs=require(_0xf326('0x12'));var as=require(_0xf326('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf326('0x14'))('api');var utils=require(_0xf326('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf326('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3162f9,_0x9ed463){_0x9ed463=_0x9ed463||0xcc;return function(_0x4b3966){if(_0x4b3966){return _0x3162f9[_0xf326('0x17')](_0x9ed463);}return _0x3162f9[_0xf326('0x18')](_0x9ed463)[_0xf326('0x19')]();};}function respondWithResult(_0x17a098,_0x5c8483){_0x5c8483=_0x5c8483||0xc8;return function(_0x45c1b6){if(_0x45c1b6){return _0x17a098['status'](_0x5c8483)['json'](_0x45c1b6);}};}function respondWithFilteredResult(_0xdf21d9,_0x11f6d2){return function(_0x1f2e5a){if(_0x1f2e5a){var _0xa63d1a=typeof _0x11f6d2[_0xf326('0x1a')]===_0xf326('0x1b')&&typeof _0x11f6d2[_0xf326('0x1c')]===_0xf326('0x1b');var _0x5a682a=_0x1f2e5a[_0xf326('0x1d')];var _0x453100=_0xa63d1a?0x0:_0x11f6d2[_0xf326('0x1a')];var _0x31ffb9=_0xa63d1a?_0x1f2e5a[_0xf326('0x1d')]:_0x11f6d2[_0xf326('0x1a')]+_0x11f6d2['limit'];var _0x4a5b6c;if(_0x31ffb9>=_0x5a682a){_0x31ffb9=_0x5a682a;_0x4a5b6c=0xc8;}else{_0x4a5b6c=0xce;}_0xdf21d9['status'](_0x4a5b6c);return _0xdf21d9[_0xf326('0x1e')](_0xf326('0x1f'),_0x453100+'-'+_0x31ffb9+'/'+_0x5a682a)['json'](_0x1f2e5a);}return null;};}function patchUpdates(_0x4cabce){return function(_0x128c68){try{jsonpatch['apply'](_0x128c68,_0x4cabce,!![]);}catch(_0x5b6d3c){return BPromise[_0xf326('0x20')](_0x5b6d3c);}return _0x128c68[_0xf326('0x21')]();};}function saveUpdates(_0x549b46,_0x5aa184){return function(_0x19b8ba){if(_0x19b8ba){return _0x19b8ba[_0xf326('0x22')](_0x549b46)['then'](function(_0x337ed5){return _0x337ed5;});}return null;};}function removeEntity(_0x1b9039,_0x43c53e){return function(_0x295752){if(_0x295752){return _0x295752[_0xf326('0x23')]()[_0xf326('0x24')](function(){_0x1b9039['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f31f6,_0x520d85){return function(_0x1a2c4e){if(!_0x1a2c4e){_0x4f31f6[_0xf326('0x17')](0x194);}return _0x1a2c4e;};}function handleError(_0x1ff2b5,_0x148953){_0x148953=_0x148953||0x1f4;return function(_0x410237){logger['error'](_0x410237[_0xf326('0x25')]);if(_0x410237[_0xf326('0x26')]){delete _0x410237[_0xf326('0x26')];}_0x1ff2b5['status'](_0x148953)[_0xf326('0x27')](_0x410237);};}var utilLicense=require('../../config/license/util');exports['index']=function(_0x6a8e89,_0x1ae23a){var _0x2fa28e={'raw':!![],'where':{'id':0x1}},_0x5dbe63={};_0x5dbe63[_0xf326('0x28')]=_[_0xf326('0x29')](db['License'][_0xf326('0x2a')]);_0x5dbe63[_0xf326('0x2b')]=_[_0xf326('0x29')](_0x6a8e89[_0xf326('0x2b')]);_0x5dbe63[_0xf326('0x2c')]=_[_0xf326('0x2d')](_0x5dbe63[_0xf326('0x28')],_0x5dbe63[_0xf326('0x2b')]);_0x2fa28e[_0xf326('0x2e')]=_[_0xf326('0x2d')](_0x5dbe63['model'],qs[_0xf326('0x2f')](_0x6a8e89[_0xf326('0x2b')][_0xf326('0x2f')]));_0x2fa28e['attributes']=_0x2fa28e[_0xf326('0x2e')][_0xf326('0x30')]?_0x2fa28e[_0xf326('0x2e')]:_0x5dbe63['model'];_0x2fa28e=_['merge']({},_0x2fa28e,_0x6a8e89[_0xf326('0x31')]);return utilLicense[_0xf326('0x32')](_0x2fa28e)[_0xf326('0x24')](respondWithResult(_0x1ae23a,null))[_0xf326('0x33')](handleError(_0x1ae23a,null));};exports[_0xf326('0x22')]=function(_0x2e8a64,_0x62585a){if(_0x2e8a64[_0xf326('0x34')]['id']){delete _0x2e8a64['body']['id'];}return db[_0xf326('0x35')][_0xf326('0x36')]({'where':{'id':_0x2e8a64['params']['id']}})[_0xf326('0x24')](handleEntityNotFound(_0x62585a,null))['then'](function(_0xce1cbb){var _0x481b64=_0xce1cbb['get']({'plain':!![]});return utilLicense[_0xf326('0x37')](_0x481b64,_0x2e8a64['body'][_0xf326('0x38')]);})['then'](function(_0x310dbb){if(!_0x310dbb[_0xf326('0x39')]){return saveUpdates(_0x2e8a64[_0xf326('0x34')],null);}return _0x310dbb;})['then'](respondWithResult(_0x62585a,null))[_0xf326('0x33')](handleError(_0x62585a,null));};
\ No newline at end of file
+var _0x2ef3=['length','options','then','catch','body','params','get','checkLicense','demo','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','update','error','stack','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields'];(function(_0x38bea3,_0x3f201c){var _0x24af95=function(_0x3932fa){while(--_0x3932fa){_0x38bea3['push'](_0x38bea3['shift']());}};_0x24af95(++_0x3f201c);}(_0x2ef3,0xba));var _0x32ef=function(_0x33711f,_0x136e2a){_0x33711f=_0x33711f-0x0;var _0x2b0119=_0x2ef3[_0x33711f];return _0x2b0119;};'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);};}var utilLicense=require('../../config/license/util');exports[_0x32ef('0x29')]=function(_0x2f5d06,_0x5a04cd){var _0x12de1a={'raw':!![],'where':{'id':0x1}},_0x3c569d={};_0x3c569d[_0x32ef('0x2a')]=_[_0x32ef('0x2b')](db['License'][_0x32ef('0x2c')]);_0x3c569d[_0x32ef('0x2d')]=_[_0x32ef('0x2b')](_0x2f5d06[_0x32ef('0x2d')]);_0x3c569d[_0x32ef('0x2e')]=_[_0x32ef('0x2f')](_0x3c569d[_0x32ef('0x2a')],_0x3c569d['query']);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x3c569d[_0x32ef('0x2a')],qs[_0x32ef('0x31')](_0x2f5d06['query'][_0x32ef('0x31')]));_0x12de1a[_0x32ef('0x30')]=_0x12de1a[_0x32ef('0x30')][_0x32ef('0x32')]?_0x12de1a[_0x32ef('0x30')]:_0x3c569d['model'];_0x12de1a=_['merge']({},_0x12de1a,_0x2f5d06[_0x32ef('0x33')]);return utilLicense['getLicense'](_0x12de1a)[_0x32ef('0x34')](respondWithResult(_0x5a04cd,null))[_0x32ef('0x35')](handleError(_0x5a04cd,null));};exports[_0x32ef('0x24')]=function(_0x390670,_0x389583){if(_0x390670[_0x32ef('0x36')]['id']){delete _0x390670['body']['id'];}return db['License']['find']({'where':{'id':_0x390670[_0x32ef('0x37')]['id']}})[_0x32ef('0x34')](handleEntityNotFound(_0x389583,null))[_0x32ef('0x34')](function(_0x5f2443){var _0x4fb402=_0x5f2443[_0x32ef('0x38')]({'plain':!![]});return utilLicense[_0x32ef('0x39')](_0x4fb402,_0x390670[_0x32ef('0x36')]['key']);})['then'](function(_0xcbdec8){if(!_0xcbdec8[_0x32ef('0x3a')]){return saveUpdates(_0x390670[_0x32ef('0x36')],null);}return _0xcbdec8;})[_0x32ef('0x34')](respondWithResult(_0x389583,null))[_0x32ef('0x35')](handleError(_0x389583,null));};
\ No newline at end of file
index 3cd2cae..d650934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17a7=['license','lodash','api','moment','bluebird','rimraf','../../config/environment','./license.attributes','define'];(function(_0x90db0e,_0x39cae4){var _0x403359=function(_0x440524){while(--_0x440524){_0x90db0e['push'](_0x90db0e['shift']());}};_0x403359(++_0x39cae4);}(_0x17a7,0xa3));var _0x717a=function(_0x42f01f,_0x2cab80){_0x42f01f=_0x42f01f-0x0;var _0x4507bb=_0x17a7[_0x42f01f];return _0x4507bb;};'use strict';var _=require(_0x717a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x717a('0x1'));var moment=require(_0x717a('0x2'));var BPromise=require(_0x717a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x717a('0x4'));var config=require(_0x717a('0x5'));var attributes=require(_0x717a('0x6'));module['exports']=function(_0x5c71cb,_0x56facd){return _0x5c71cb[_0x717a('0x7')]('License',attributes,{'tableName':_0x717a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe47=['api','bluebird','path','../../config/environment','exports','License','license','lodash','util'];(function(_0x137d0a,_0x5e2ba2){var _0x3d4f4e=function(_0x586e7f){while(--_0x586e7f){_0x137d0a['push'](_0x137d0a['shift']());}};_0x3d4f4e(++_0x5e2ba2);}(_0xbe47,0x97));var _0x7be4=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xbe47[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x7be4('0x0'));var util=require(_0x7be4('0x1'));var logger=require('../../config/logger')(_0x7be4('0x2'));var moment=require('moment');var BPromise=require(_0x7be4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7be4('0x4'));var rimraf=require('rimraf');var config=require(_0x7be4('0x5'));var attributes=require('./license.attributes');module[_0x7be4('0x6')]=function(_0x1ef088,_0x28de45){return _0x1ef088['define'](_0x7be4('0x7'),attributes,{'tableName':_0x7be4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7da6cc8..49e56e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac6=['info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','License,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then'];(function(_0x357759,_0x275a40){var _0x574f8a=function(_0x114df8){while(--_0x114df8){_0x357759['push'](_0x357759['shift']());}};_0x574f8a(++_0x275a40);}(_0xaac6,0x105));var _0x6aac=function(_0x4bc65f,_0x39ec43){_0x4bc65f=_0x4bc65f-0x0;var _0x44f85f=_0xaac6[_0x4bc65f];return _0x44f85f;};'use strict';var _=require(_0x6aac('0x0'));var util=require(_0x6aac('0x1'));var moment=require('moment');var BPromise=require(_0x6aac('0x2'));var rs=require(_0x6aac('0x3'));var fs=require('fs');var Redis=require(_0x6aac('0x4'));var db=require(_0x6aac('0x5'))['db'];var utils=require(_0x6aac('0x6'));var logger=require('../../config/logger')(_0x6aac('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6aac('0x8')][_0x6aac('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24d735,_0x35add7,_0x57e6a7){return new BPromise(function(_0x271dad,_0x53074a){return client[_0x6aac('0xa')](_0x24d735,_0x57e6a7)[_0x6aac('0xb')](function(_0x4c4868){logger[_0x6aac('0xc')]('License,\x20%s,\x20%s',_0x35add7,_0x6aac('0xd'));logger[_0x6aac('0xe')](_0x6aac('0xf'),_0x35add7,_0x6aac('0xd'),JSON[_0x6aac('0x10')](_0x4c4868));if(_0x4c4868[_0x6aac('0x11')]){if(_0x4c4868[_0x6aac('0x11')]['code']===0x1f4){logger['error'](_0x6aac('0x12'),_0x35add7,_0x4c4868['error'][_0x6aac('0x13')]);return _0x53074a(_0x4c4868['error'][_0x6aac('0x13')]);}logger[_0x6aac('0x11')](_0x6aac('0x12'),_0x35add7,_0x4c4868[_0x6aac('0x11')][_0x6aac('0x13')]);return _0x271dad(_0x4c4868['error'][_0x6aac('0x13')]);}else{logger[_0x6aac('0xc')](_0x6aac('0x12'),_0x35add7,'request\x20sent');_0x271dad(_0x4c4868['result'][_0x6aac('0x13')]);}})[_0x6aac('0x14')](function(_0x517589){logger[_0x6aac('0x11')](_0x6aac('0x12'),_0x35add7,_0x517589);_0x53074a(_0x517589);});});}
\ No newline at end of file
+var _0x9310=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','message','License,\x20%s,\x20%s','result','lodash','util','moment','bluebird','ioredis'];(function(_0x4b980d,_0x32fc6a){var _0x5c7974=function(_0x3b7af4){while(--_0x3b7af4){_0x4b980d['push'](_0x4b980d['shift']());}};_0x5c7974(++_0x32fc6a);}(_0x9310,0x126));var _0x0931=function(_0x3c4a7c,_0x2f4e3c){_0x3c4a7c=_0x3c4a7c-0x0;var _0xf13d1e=_0x9310[_0x3c4a7c];return _0xf13d1e;};'use strict';var _=require(_0x0931('0x0'));var util=require(_0x0931('0x1'));var moment=require(_0x0931('0x2'));var BPromise=require(_0x0931('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0931('0x4'));var db=require(_0x0931('0x5'))['db'];var utils=require(_0x0931('0x6'));var logger=require(_0x0931('0x7'))(_0x0931('0x8'));var config=require(_0x0931('0x9'));var jayson=require(_0x0931('0xa'));var client=jayson[_0x0931('0xb')][_0x0931('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7feee7,_0x23dec5,_0x50539c){return new BPromise(function(_0x1a043b,_0x1401d0){return client[_0x0931('0xd')](_0x7feee7,_0x50539c)[_0x0931('0xe')](function(_0x40a6cc){logger[_0x0931('0xf')]('License,\x20%s,\x20%s',_0x23dec5,_0x0931('0x10'));logger[_0x0931('0x11')]('License,\x20%s,\x20%s,\x20%s',_0x23dec5,'request\x20sent',JSON['stringify'](_0x40a6cc));if(_0x40a6cc['error']){if(_0x40a6cc[_0x0931('0x12')][_0x0931('0x13')]===0x1f4){logger[_0x0931('0x12')]('License,\x20%s,\x20%s',_0x23dec5,_0x40a6cc[_0x0931('0x12')]['message']);return _0x1401d0(_0x40a6cc[_0x0931('0x12')][_0x0931('0x14')]);}logger[_0x0931('0x12')](_0x0931('0x15'),_0x23dec5,_0x40a6cc[_0x0931('0x12')][_0x0931('0x14')]);return _0x1a043b(_0x40a6cc[_0x0931('0x12')][_0x0931('0x14')]);}else{logger['info']('License,\x20%s,\x20%s',_0x23dec5,_0x0931('0x10'));_0x1a043b(_0x40a6cc[_0x0931('0x16')][_0x0931('0x14')]);}})['catch'](function(_0x525a4b){logger[_0x0931('0x12')]('License,\x20%s,\x20%s',_0x23dec5,_0x525a4b);_0x1401d0(_0x525a4b);});});}
\ No newline at end of file
index 852bb9f..996a3b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['addAnswer','addImap','addSmtp','addInteraction','addApplications','/:id/send','addAgents','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','./mailAccount.controller','get','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','isAuthenticated','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','verifySmtp','/:id/users','post','addDisposition'];(function(_0x46d593,_0x11c71f){var _0x1b5519=function(_0x4028ba){while(--_0x4028ba){_0x46d593['push'](_0x46d593['shift']());}};_0x1b5519(++_0x11c71f);}(_0x4fdb,0xe4));var _0xb4fd=function(_0x56599d,_0x5d4248){_0x56599d=_0x56599d-0x0;var _0x594b45=_0x4fdb[_0x56599d];return _0x594b45;};'use strict';var multer=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var path=require(_0xb4fd('0x2'));var timeout=require('connect-timeout');var express=require(_0xb4fd('0x3'));var router=express[_0xb4fd('0x4')]();var fs_extra=require(_0xb4fd('0x5'));var auth=require(_0xb4fd('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb4fd('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb4fd('0x8')](_0xb4fd('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0xb4fd('0x8')](_0xb4fd('0xa'),auth['isAuthenticated'](),controller[_0xb4fd('0xb')]);router[_0xb4fd('0x8')](_0xb4fd('0xc'),auth['isAuthenticated'](),controller[_0xb4fd('0xd')]);router[_0xb4fd('0x8')](_0xb4fd('0xe'),auth[_0xb4fd('0xf')](),controller['getAnswers']);router[_0xb4fd('0x8')](_0xb4fd('0x10'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x11')]);router[_0xb4fd('0x8')](_0xb4fd('0x12'),auth['isAuthenticated'](),controller[_0xb4fd('0x13')]);router['get'](_0xb4fd('0x14'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x15')]);router['get'](_0xb4fd('0x16'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x17')]);router['get'](_0xb4fd('0x18'),auth['isAuthenticated'](),controller[_0xb4fd('0x19')]);router[_0xb4fd('0x8')]('/:id/verify',auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x1a')]);router[_0xb4fd('0x8')](_0xb4fd('0x1b'),auth[_0xb4fd('0xf')](),controller['getAgents']);router[_0xb4fd('0x1c')]('/:id/dispositions',auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x1d')]);router[_0xb4fd('0x1c')](_0xb4fd('0xe'),auth['isAuthenticated'](),controller[_0xb4fd('0x1e')]);router['post']('/',auth[_0xb4fd('0xf')](),controller['create']);router[_0xb4fd('0x1c')](_0xb4fd('0x10'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x1f')]);router[_0xb4fd('0x1c')](_0xb4fd('0x12'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x20')]);router[_0xb4fd('0x1c')](_0xb4fd('0x14'),auth['isAuthenticated'](),controller[_0xb4fd('0x21')]);router[_0xb4fd('0x1c')](_0xb4fd('0x16'),auth['isAuthenticated'](),controller[_0xb4fd('0x22')]);router[_0xb4fd('0x1c')](_0xb4fd('0x23'),auth[_0xb4fd('0xf')](),controller['send']);router[_0xb4fd('0x1c')](_0xb4fd('0x1b'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x24')]);router['put'](_0xb4fd('0xa'),auth[_0xb4fd('0xf')](),controller['update']);router[_0xb4fd('0x25')]('/:id/dispositions',auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x26')]);router[_0xb4fd('0x25')]('/:id/canned_answers',auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x27')]);router[_0xb4fd('0x25')](_0xb4fd('0x10'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x28')]);router[_0xb4fd('0x25')](_0xb4fd('0x12'),auth['isAuthenticated'](),controller[_0xb4fd('0x29')]);router[_0xb4fd('0x25')](_0xb4fd('0xa'),auth[_0xb4fd('0xf')](),controller[_0xb4fd('0x2a')]);router[_0xb4fd('0x25')](_0xb4fd('0x1b'),auth[_0xb4fd('0xf')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x0369=['index','describe','show','/:id/dispositions','getDispositions','getAnswers','getImap','/:id/out_servers','getSmtp','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','getAgents','post','addDisposition','/:id/canned_answers','/:id/in_servers','addImap','addSmtp','addInteraction','addApplications','send','/:id/users','addAgents','put','update','delete','removeAnswers','/:id','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x28191d,_0x56959e){var _0x176c81=function(_0x38b5f3){while(--_0x38b5f3){_0x28191d['push'](_0x28191d['shift']());}};_0x176c81(++_0x56959e);}(_0x0369,0x19c));var _0x9036=function(_0x4babaa,_0x16bc3b){_0x4babaa=_0x4babaa-0x0;var _0x6dd237=_0x0369[_0x4babaa];return _0x6dd237;};'use strict';var multer=require(_0x9036('0x0'));var util=require(_0x9036('0x1'));var path=require(_0x9036('0x2'));var timeout=require(_0x9036('0x3'));var express=require(_0x9036('0x4'));var router=express[_0x9036('0x5')]();var fs_extra=require(_0x9036('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9036('0x7'));var config=require(_0x9036('0x8'));var controller=require('./mailAccount.controller');router[_0x9036('0x9')]('/',auth[_0x9036('0xa')](),controller[_0x9036('0xb')]);router['get']('/describe',auth[_0x9036('0xa')](),controller[_0x9036('0xc')]);router[_0x9036('0x9')]('/:id',auth[_0x9036('0xa')](),controller[_0x9036('0xd')]);router[_0x9036('0x9')](_0x9036('0xe'),auth['isAuthenticated'](),controller[_0x9036('0xf')]);router[_0x9036('0x9')]('/:id/canned_answers',auth[_0x9036('0xa')](),controller[_0x9036('0x10')]);router[_0x9036('0x9')]('/:id/in_servers',auth[_0x9036('0xa')](),controller[_0x9036('0x11')]);router[_0x9036('0x9')](_0x9036('0x12'),auth['isAuthenticated'](),controller[_0x9036('0x13')]);router['get'](_0x9036('0x14'),auth['isAuthenticated'](),controller['getInteractions']);router['get'](_0x9036('0x15'),auth[_0x9036('0xa')](),controller[_0x9036('0x16')]);router[_0x9036('0x9')](_0x9036('0x17'),auth['isAuthenticated'](),controller[_0x9036('0x18')]);router[_0x9036('0x9')](_0x9036('0x19'),auth[_0x9036('0xa')](),controller[_0x9036('0x1a')]);router[_0x9036('0x9')]('/:id/users',auth[_0x9036('0xa')](),controller[_0x9036('0x1b')]);router[_0x9036('0x1c')](_0x9036('0xe'),auth[_0x9036('0xa')](),controller[_0x9036('0x1d')]);router['post'](_0x9036('0x1e'),auth[_0x9036('0xa')](),controller['addAnswer']);router[_0x9036('0x1c')]('/',auth[_0x9036('0xa')](),controller['create']);router[_0x9036('0x1c')](_0x9036('0x1f'),auth[_0x9036('0xa')](),controller[_0x9036('0x20')]);router[_0x9036('0x1c')](_0x9036('0x12'),auth[_0x9036('0xa')](),controller[_0x9036('0x21')]);router['post'](_0x9036('0x14'),auth[_0x9036('0xa')](),controller[_0x9036('0x22')]);router[_0x9036('0x1c')]('/:id/applications',auth[_0x9036('0xa')](),controller[_0x9036('0x23')]);router[_0x9036('0x1c')]('/:id/send',auth[_0x9036('0xa')](),controller[_0x9036('0x24')]);router['post'](_0x9036('0x25'),auth[_0x9036('0xa')](),controller[_0x9036('0x26')]);router[_0x9036('0x27')]('/:id',auth[_0x9036('0xa')](),controller[_0x9036('0x28')]);router['delete'](_0x9036('0xe'),auth[_0x9036('0xa')](),controller['removeDispositions']);router[_0x9036('0x29')](_0x9036('0x1e'),auth[_0x9036('0xa')](),controller[_0x9036('0x2a')]);router[_0x9036('0x29')](_0x9036('0x1f'),auth['isAuthenticated'](),controller['removeImap']);router[_0x9036('0x29')](_0x9036('0x12'),auth[_0x9036('0xa')](),controller['removeSmtp']);router[_0x9036('0x29')](_0x9036('0x2b'),auth['isAuthenticated'](),controller[_0x9036('0x2c')]);router['delete']('/:id/users',auth[_0x9036('0xa')](),controller[_0x9036('0x2d')]);module[_0x9036('0x2e')]=router;
\ No newline at end of file
index a222623..fc8b5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f29=['mandatoryDisposition','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue'];(function(_0x52226b,_0x3d577b){var _0x2c168b=function(_0x34f089){while(--_0x34f089){_0x52226b['push'](_0x52226b['shift']());}};_0x2c168b(++_0x3d577b);}(_0x4f29,0xfd));var _0x94f2=function(_0x49f1b3,_0x23d966){_0x49f1b3=_0x49f1b3-0x0;var _0x1dea6f=_0x4f29[_0x49f1b3];return _0x1dea6f;};'use strict';var Sequelize=require('sequelize');module[_0x94f2('0x0')]={'description':{'type':Sequelize[_0x94f2('0x1')]},'name':{'type':Sequelize[_0x94f2('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x94f2('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x94f2('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x94f2('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x94f2('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x94f2('0x3')]},'markAsUnread':{'type':Sequelize[_0x94f2('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x94f2('0x1')],'allowNull':![],'defaultValue':_0x94f2('0x4')},'fontSize':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x94f2('0x3')],'defaultValue':function(){return _0x94f2('0x5');}},'notificationSound':{'type':Sequelize[_0x94f2('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x94f2('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x94f2('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x94f2('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x94f2('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x94f2('0x2')],'defaultValue':![],'comment':_0x94f2('0x8'),'set':function(_0x117396){if(!_0x117396)this['setDataValue'](_0x94f2('0x9'),null);this[_0x94f2('0xa')](_0x94f2('0xb'),_0x117396);}}};
\ No newline at end of file
+var _0x56e6=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','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'];(function(_0x35e359,_0xdf7af0){var _0x3d85ad=function(_0x3eafb0){while(--_0x3eafb0){_0x35e359['push'](_0x35e359['shift']());}};_0x3d85ad(++_0xdf7af0);}(_0x56e6,0x6b));var _0x656e=function(_0x2f363b,_0x18c675){_0x2f363b=_0x2f363b-0x0;var _0x27dbb5=_0x56e6[_0x2f363b];return _0x27dbb5;};'use strict';var Sequelize=require(_0x656e('0x0'));module[_0x656e('0x1')]={'description':{'type':Sequelize[_0x656e('0x2')]},'name':{'type':Sequelize[_0x656e('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x656e('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x656e('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x656e('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x656e('0x4')]},'markAsUnread':{'type':Sequelize[_0x656e('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x656e('0x2')],'allowNull':![],'defaultValue':_0x656e('0x5')},'fontSize':{'type':Sequelize[_0x656e('0x6')](0x2)[_0x656e('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x656e('0x8');}},'notificationSound':{'type':Sequelize[_0x656e('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x656e('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x656e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x656e('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x656e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x656e('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x656e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x656e('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x656e('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x656e('0x3')],'defaultValue':![],'comment':_0x656e('0xa'),'set':function(_0xcfedd2){if(!_0xcfedd2)this[_0x656e('0xb')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x656e('0xc'),_0xcfedd2);}}};
\ No newline at end of file
index d968334..f737fe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12ca=['getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','error','message','status','end','offset','undefined','limit','count','Content-Range','json','save','update','destroy','get','MailAccounts','sendStatus','stack','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','MailAccount','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','mandatoryDispositionPause','length','body','find','describe','addDisposition','MailAccountId','create','Disposition','rows','removeDispositions','getAnswers','findOne','CannedAnswer','order','removeAnswers','ids','key','email','isNil','active','description','cservice','cauthentication','user','cuser','password','cpassword','authentication','host','port','service','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','UserProfileResource','getImap','removeImap','getSmtp','removeSmtp','setSmtp','addInteraction','omit','MailInteraction','map','CmContact','User','fullname','internal','Tag','color','tag','addApplications','sequelize','transaction','MailApplication','priority','getApplications','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','true','CmList','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','basename','auth','SendMail','sendMail','List\x20not\x20found','messageId','attach','out','format','Interaction','Messages','verifySmtp','secure','VerifySmtp','Sequelize','addAgents','emit','removeAgents','userMailAccount:remove'];(function(_0x1f364b,_0x54f2e2){var _0x1f0874=function(_0x1182be){while(--_0x1182be){_0x1f364b['push'](_0x1f364b['shift']());}};_0x1f0874(++_0x54f2e2);}(_0x12ca,0xbd));var _0xa12c=function(_0x456f35,_0x124842){_0x456f35=_0x456f35-0x0;var _0x2e65dd=_0x12ca[_0x456f35];return _0x2e65dd;};'use strict';var emlformat=require(_0xa12c('0x0'));var rimraf=require(_0xa12c('0x1'));var zipdir=require(_0xa12c('0x2'));var jsonpatch=require(_0xa12c('0x3'));var rp=require(_0xa12c('0x4'));var moment=require(_0xa12c('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa12c('0x6'));var path=require(_0xa12c('0x7'));var sox=require(_0xa12c('0x8'));var csv=require(_0xa12c('0x9'));var ejs=require(_0xa12c('0xa'));var fs=require('fs');var fs_extra=require(_0xa12c('0xb'));var _=require(_0xa12c('0xc'));var squel=require(_0xa12c('0xd'));var crypto=require(_0xa12c('0xe'));var jsforce=require(_0xa12c('0xf'));var deskjs=require(_0xa12c('0x10'));var toCsv=require(_0xa12c('0x9'));var querystring=require(_0xa12c('0x11'));var Papa=require(_0xa12c('0x12'));var htmlToText=require(_0xa12c('0x13'));var juice=require(_0xa12c('0x14'));var Redis=require(_0xa12c('0x15'));var authService=require(_0xa12c('0x16'));var qs=require(_0xa12c('0x17'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa12c('0x18'));var logger=require('../../config/logger')('api');var utils=require(_0xa12c('0x19'));var config=require(_0xa12c('0x1a'));var licenseUtil=require(_0xa12c('0x1b'));var db=require(_0xa12c('0x1c'))['db'];config[_0xa12c('0x1d')]=_[_0xa12c('0x1e')](config[_0xa12c('0x1d')],{'host':_0xa12c('0x1f'),'port':0x18eb});var socket=require(_0xa12c('0x20'))(new Redis(config[_0xa12c('0x1d')]));require(_0xa12c('0x21'))[_0xa12c('0x22')](socket);var jayson=require(_0xa12c('0x23'));var client=jayson[_0xa12c('0x24')]['http']({'port':0x232b});function respondWithRpcPromise(_0x1e8766,_0x1adea2,_0x2d7c77,_0x18919f){return new BPromise(function(_0x2507d5,_0x55d019){var _0x3c343e=_0x18919f||client;return _0x3c343e[_0xa12c('0x25')](_0x1e8766,_0x2d7c77)[_0xa12c('0x26')](function(_0x2c0711){logger[_0xa12c('0x27')](_0xa12c('0x28'),_0x1adea2,_0xa12c('0x29'));logger['debug'](_0xa12c('0x2a'),_0x1adea2,_0xa12c('0x29'),JSON['stringify'](_0x2c0711));if(_0x2c0711['error']){if(_0x2c0711[_0xa12c('0x2b')]['code']===0x1f4){logger[_0xa12c('0x2b')](_0xa12c('0x28'),_0x1adea2,_0x2c0711[_0xa12c('0x2b')]['message']);return _0x55d019(_0x2c0711['error'][_0xa12c('0x2c')]);}logger['error']('MailAccount,\x20%s,\x20%s',_0x1adea2,_0x2c0711['error'][_0xa12c('0x2c')]);return _0x2507d5(_0x2c0711[_0xa12c('0x2b')][_0xa12c('0x2c')]);}else{logger[_0xa12c('0x27')]('MailAccount,\x20%s,\x20%s',_0x1adea2,_0xa12c('0x29'));_0x2507d5(_0x2c0711['result'][_0xa12c('0x2c')]);}})['catch'](function(_0x147930){logger[_0xa12c('0x2b')]('MailAccount,\x20%s,\x20%s',_0x1adea2,_0x147930);_0x55d019(_0x147930);});});}function respondWithStatusCode(_0x20a079,_0x4e8d14){_0x4e8d14=_0x4e8d14||0xcc;return function(_0x3c6af7){if(_0x3c6af7){return _0x20a079['sendStatus'](_0x4e8d14);}return _0x20a079[_0xa12c('0x2d')](_0x4e8d14)[_0xa12c('0x2e')]();};}function respondWithResult(_0x90b45d,_0x2edf1b){_0x2edf1b=_0x2edf1b||0xc8;return function(_0x3d8754){if(_0x3d8754){return _0x90b45d['status'](_0x2edf1b)['json'](_0x3d8754);}};}function respondWithFilteredResult(_0x5f41a7,_0x4a4409){return function(_0x48f7e7){if(_0x48f7e7){var _0x467a01=typeof _0x4a4409[_0xa12c('0x2f')]===_0xa12c('0x30')&&typeof _0x4a4409[_0xa12c('0x31')]===_0xa12c('0x30');var _0x1edbff=_0x48f7e7[_0xa12c('0x32')];var _0x32f170=_0x467a01?0x0:_0x4a4409[_0xa12c('0x2f')];var _0x446c13=_0x467a01?_0x48f7e7[_0xa12c('0x32')]:_0x4a4409[_0xa12c('0x2f')]+_0x4a4409[_0xa12c('0x31')];var _0x1a2663;if(_0x446c13>=_0x1edbff){_0x446c13=_0x1edbff;_0x1a2663=0xc8;}else{_0x1a2663=0xce;}_0x5f41a7[_0xa12c('0x2d')](_0x1a2663);return _0x5f41a7['set'](_0xa12c('0x33'),_0x32f170+'-'+_0x446c13+'/'+_0x1edbff)[_0xa12c('0x34')](_0x48f7e7);}return null;};}function patchUpdates(_0x3b80c9){return function(_0x120645){try{jsonpatch['apply'](_0x120645,_0x3b80c9,!![]);}catch(_0x163542){return BPromise['reject'](_0x163542);}return _0x120645[_0xa12c('0x35')]();};}function saveUpdates(_0x5a6a5c,_0x5ef7e9){return function(_0x464850){if(_0x464850){return _0x464850[_0xa12c('0x36')](_0x5a6a5c)[_0xa12c('0x26')](function(_0x5ea99f){return _0x5ea99f;});}return null;};}function removeEntity(_0xfdeb43,_0x4c2472){return function(_0x2ff4aa){if(_0x2ff4aa){return _0x2ff4aa[_0xa12c('0x37')]()[_0xa12c('0x26')](function(){var _0x49107e=_0x2ff4aa[_0xa12c('0x38')]({'plain':!![]});var _0x14ed56=_0xa12c('0x39');return db['UserProfileResource']['destroy']({'where':{'type':_0x14ed56,'resourceId':_0x49107e['id']}})['then'](function(){return _0x2ff4aa;});})[_0xa12c('0x26')](function(){_0xfdeb43[_0xa12c('0x2d')](0xcc)[_0xa12c('0x2e')]();});}};}function handleEntityNotFound(_0x80f3c3,_0xaa604c){return function(_0xed48f){if(!_0xed48f){_0x80f3c3[_0xa12c('0x3a')](0x194);}return _0xed48f;};}function handleError(_0x1b060b,_0x3eade9){_0x3eade9=_0x3eade9||0x1f4;return function(_0x42b4ef){logger[_0xa12c('0x2b')](_0x42b4ef[_0xa12c('0x3b')]);if(_0x42b4ef[_0xa12c('0x3c')]){delete _0x42b4ef['name'];}_0x1b060b[_0xa12c('0x2d')](_0x3eade9)[_0xa12c('0x3d')](_0x42b4ef);};}exports[_0xa12c('0x3e')]=function(_0xe9d1fb,_0x57e362){var _0x2e6012={'include':[{'model':db[_0xa12c('0x3f')],'as':_0xa12c('0x40')},{'model':db[_0xa12c('0x41')],'as':_0xa12c('0x42')},{'model':db[_0xa12c('0x43')],'as':'mandatoryDispositionPause'}]},_0x33e246={},_0x17be56={'count':0x0,'rows':[]};var _0x14b75e=_['map'](db[_0xa12c('0x44')][_0xa12c('0x45')],function(_0x5137b7){return{'name':_0x5137b7[_0xa12c('0x46')],'type':_0x5137b7[_0xa12c('0x47')]['key']};});_0x33e246[_0xa12c('0x48')]=_['map'](_0x14b75e,_0xa12c('0x3c'));_0x33e246[_0xa12c('0x49')]=_[_0xa12c('0x4a')](_0xe9d1fb['query']);_0x33e246[_0xa12c('0x4b')]=_['intersection'](_0x33e246['model'],_0x33e246[_0xa12c('0x49')]);_0x2e6012[_0xa12c('0x4c')]=_[_0xa12c('0x4d')](_0x33e246['model'],qs['fields'](_0xe9d1fb[_0xa12c('0x49')][_0xa12c('0x4e')]));_0x2e6012['attributes']=_0x2e6012[_0xa12c('0x4c')]['length']?_0x2e6012[_0xa12c('0x4c')]:_0x33e246[_0xa12c('0x48')];if(!_0xe9d1fb['query'][_0xa12c('0x4f')](_0xa12c('0x50'))){_0x2e6012['limit']=qs[_0xa12c('0x31')](_0xe9d1fb[_0xa12c('0x49')][_0xa12c('0x31')]);_0x2e6012[_0xa12c('0x2f')]=qs[_0xa12c('0x2f')](_0xe9d1fb['query'][_0xa12c('0x2f')]);}_0x2e6012['order']=qs[_0xa12c('0x51')](_0xe9d1fb[_0xa12c('0x49')]['sort']);_0x2e6012[_0xa12c('0x52')]=qs['filters'](_[_0xa12c('0x53')](_0xe9d1fb['query'],_0x33e246[_0xa12c('0x4b')]),_0x14b75e);if(_0xe9d1fb[_0xa12c('0x49')][_0xa12c('0x54')]){_0x2e6012[_0xa12c('0x52')]=_[_0xa12c('0x55')](_0x2e6012[_0xa12c('0x52')],{'$or':_['map'](_0x14b75e,function(_0xcfef28){if(_0xcfef28[_0xa12c('0x47')]!=='VIRTUAL'){var _0x234163={};_0x234163[_0xcfef28['name']]={'$like':'%'+_0xe9d1fb['query'][_0xa12c('0x54')]+'%'};return _0x234163;}})});}_0x2e6012=_[_0xa12c('0x55')]({},_0x2e6012,_0xe9d1fb[_0xa12c('0x56')]);var _0x499142={'where':_0x2e6012['where']};return db[_0xa12c('0x44')][_0xa12c('0x32')](_0x499142)[_0xa12c('0x26')](function(_0x378431){_0x17be56[_0xa12c('0x32')]=_0x378431;if(_0xe9d1fb['query'][_0xa12c('0x57')]){_0x2e6012[_0xa12c('0x58')]=[{'all':!![]}];}return db[_0xa12c('0x44')][_0xa12c('0x59')](_0x2e6012);})[_0xa12c('0x26')](function(_0x28db6e){_0x17be56['rows']=_0x28db6e;return _0x17be56;})[_0xa12c('0x26')](respondWithFilteredResult(_0x57e362,_0x2e6012))[_0xa12c('0x5a')](handleError(_0x57e362,null));};exports[_0xa12c('0x5b')]=function(_0x33dd9d,_0x8f93e7){var _0x551eee={'raw':![],'where':{'id':_0x33dd9d[_0xa12c('0x5c')]['id']},'include':[{'model':db[_0xa12c('0x3f')],'as':_0xa12c('0x40')},{'model':db[_0xa12c('0x41')],'as':_0xa12c('0x42')},{'model':db[_0xa12c('0x43')],'as':_0xa12c('0x5d')}]},_0x1f41e6={};_0x1f41e6['model']=_['keys'](db['MailAccount'][_0xa12c('0x45')]);_0x1f41e6[_0xa12c('0x49')]=_[_0xa12c('0x4a')](_0x33dd9d[_0xa12c('0x49')]);_0x1f41e6['filters']=_[_0xa12c('0x4d')](_0x1f41e6['model'],_0x1f41e6[_0xa12c('0x49')]);_0x551eee[_0xa12c('0x4c')]=_['intersection'](_0x1f41e6[_0xa12c('0x48')],qs[_0xa12c('0x4e')](_0x33dd9d[_0xa12c('0x49')][_0xa12c('0x4e')]));_0x551eee[_0xa12c('0x4c')]=_0x551eee[_0xa12c('0x4c')][_0xa12c('0x5e')]?_0x551eee[_0xa12c('0x4c')]:_0x1f41e6['model'];if(_0x33dd9d['query'][_0xa12c('0x57')]){_0x551eee[_0xa12c('0x58')]=[{'all':!![]}];}_0x551eee=_[_0xa12c('0x55')]({},_0x551eee,_0x33dd9d[_0xa12c('0x56')]);return db[_0xa12c('0x44')]['find'](_0x551eee)[_0xa12c('0x26')](handleEntityNotFound(_0x8f93e7,null))[_0xa12c('0x26')](respondWithResult(_0x8f93e7,null))[_0xa12c('0x5a')](handleError(_0x8f93e7,null));};exports['update']=function(_0x4dd02a,_0x1abdb2){if(_0x4dd02a['body']['id']){delete _0x4dd02a[_0xa12c('0x5f')]['id'];}return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x4dd02a['params']['id']},'include':[{'model':db[_0xa12c('0x3f')],'as':_0xa12c('0x40')},{'model':db[_0xa12c('0x41')],'as':_0xa12c('0x42')},{'model':db[_0xa12c('0x43')],'as':'mandatoryDispositionPause'}]})[_0xa12c('0x26')](handleEntityNotFound(_0x1abdb2,null))['then'](saveUpdates(_0x4dd02a[_0xa12c('0x5f')],null))[_0xa12c('0x26')](function(_0x5f4d07){if(_0x5f4d07&&_0x4dd02a[_0xa12c('0x5f')][_0xa12c('0x40')]){return db[_0xa12c('0x3f')][_0xa12c('0x36')](_0x4dd02a['body'][_0xa12c('0x40')],{'where':{'MailAccountId':_0x5f4d07['id']}})['then'](function(){return _0x5f4d07;});}return _0x5f4d07;})[_0xa12c('0x26')](function(_0x56960a){if(_0x56960a&&_0x4dd02a[_0xa12c('0x5f')][_0xa12c('0x42')]){return db[_0xa12c('0x41')]['update'](_0x4dd02a['body']['Smtp'],{'where':{'MailAccountId':_0x56960a['id']}})[_0xa12c('0x26')](function(){return _0x56960a;});}return _0x56960a;})[_0xa12c('0x26')](respondWithResult(_0x1abdb2,null))[_0xa12c('0x5a')](handleError(_0x1abdb2,null));};exports['describe']=function(_0x453974,_0x140d0e){return db[_0xa12c('0x44')][_0xa12c('0x61')]()[_0xa12c('0x26')](respondWithResult(_0x140d0e,null))[_0xa12c('0x5a')](handleError(_0x140d0e,null));};exports[_0xa12c('0x62')]=function(_0x14a3ee,_0x363eb0,_0x90c619){if(_0x14a3ee[_0xa12c('0x5f')]['id']){delete _0x14a3ee[_0xa12c('0x5f')]['id'];}return db[_0xa12c('0x44')]['find']({'where':{'id':_0x14a3ee[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x363eb0,null))[_0xa12c('0x26')](function(_0x82e226){if(_0x82e226){_0x14a3ee[_0xa12c('0x5f')][_0xa12c('0x63')]=_0x82e226['id'];return db['Disposition'][_0xa12c('0x64')](_0x14a3ee[_0xa12c('0x5f')]);}})['then'](respondWithResult(_0x363eb0,null))[_0xa12c('0x5a')](handleError(_0x363eb0,null));};exports['getDispositions']=function(_0x4899a6,_0x4f93e2,_0x5bf90a){var _0x3efafe={'raw':![],'where':{}};var _0xbb1531={};var _0x1ded06={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x4899a6[_0xa12c('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4f93e2,null))['then'](function(_0x463838){if(_0x463838){_0xbb1531[_0xa12c('0x48')]=_['keys'](db['Disposition'][_0xa12c('0x45')]);_0xbb1531[_0xa12c('0x49')]=_['keys'](_0x4899a6[_0xa12c('0x49')]);_0xbb1531[_0xa12c('0x4b')]=_[_0xa12c('0x4d')](_0xbb1531[_0xa12c('0x48')],_0xbb1531[_0xa12c('0x49')]);_0x3efafe[_0xa12c('0x4c')]=_[_0xa12c('0x4d')](_0xbb1531[_0xa12c('0x48')],qs[_0xa12c('0x4e')](_0x4899a6[_0xa12c('0x49')][_0xa12c('0x4e')]));_0x3efafe[_0xa12c('0x4c')]=_0x3efafe['attributes'][_0xa12c('0x5e')]?_0x3efafe['attributes']:_0xbb1531[_0xa12c('0x48')];if(!_0x4899a6[_0xa12c('0x49')][_0xa12c('0x4f')]('nolimit')){_0x3efafe[_0xa12c('0x31')]=qs[_0xa12c('0x31')](_0x4899a6[_0xa12c('0x49')]['limit']);_0x3efafe['offset']=qs[_0xa12c('0x2f')](_0x4899a6['query'][_0xa12c('0x2f')]);}_0x3efafe['order']=qs[_0xa12c('0x51')](_0x4899a6['query'][_0xa12c('0x51')]);_0x3efafe[_0xa12c('0x52')]=qs[_0xa12c('0x4b')](_[_0xa12c('0x53')](_0x4899a6[_0xa12c('0x49')],_0xbb1531['filters']));_0x3efafe['where'][_0xa12c('0x63')]=_0x463838['id'];if(_0x4899a6['query'][_0xa12c('0x54')]){_0x3efafe[_0xa12c('0x52')]=_[_0xa12c('0x55')](_0x3efafe[_0xa12c('0x52')],{'$or':_['map'](_0x3efafe[_0xa12c('0x4c')],function(_0x29517a){var _0x523261={};_0x523261[_0x29517a]={'$like':'%'+_0x4899a6[_0xa12c('0x49')]['filter']+'%'};return _0x523261;})});}_0x3efafe=_[_0xa12c('0x55')]({},_0x3efafe,_0x4899a6['options']);return db[_0xa12c('0x65')][_0xa12c('0x32')]({'where':_0x3efafe[_0xa12c('0x52')]})[_0xa12c('0x26')](function(_0x13c239){_0x1ded06[_0xa12c('0x32')]=_0x13c239;if(_0x4899a6[_0xa12c('0x49')][_0xa12c('0x57')]){_0x3efafe[_0xa12c('0x58')]=[{'all':!![]}];}return db[_0xa12c('0x65')][_0xa12c('0x59')](_0x3efafe);})[_0xa12c('0x26')](function(_0xb94dd2){_0x1ded06[_0xa12c('0x66')]=_0xb94dd2;return _0x1ded06;});}})['then'](respondWithFilteredResult(_0x4f93e2,_0x3efafe))[_0xa12c('0x5a')](handleError(_0x4f93e2,null));};exports[_0xa12c('0x67')]=function(_0x596b1c,_0x29aa39,_0x1bc3a3){return db[_0xa12c('0x44')]['find']({'where':{'id':_0x596b1c[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x29aa39,null))[_0xa12c('0x26')](function(_0x1d2b10){if(_0x1d2b10){return _0x1d2b10[_0xa12c('0x67')](_0x596b1c[_0xa12c('0x49')]['ids']);}})[_0xa12c('0x26')](respondWithStatusCode(_0x29aa39,null))[_0xa12c('0x5a')](handleError(_0x29aa39,null));};exports['addAnswer']=function(_0x5bbdee,_0x514300,_0x210fa8){if(_0x5bbdee['body']['id']){delete _0x5bbdee[_0xa12c('0x5f')]['id'];}return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x5bbdee['params']['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x514300,null))[_0xa12c('0x26')](function(_0x503743){if(_0x503743){_0x5bbdee[_0xa12c('0x5f')][_0xa12c('0x63')]=_0x503743['id'];return db['CannedAnswer']['create'](_0x5bbdee[_0xa12c('0x5f')]);}})[_0xa12c('0x26')](respondWithResult(_0x514300,null))['catch'](handleError(_0x514300,null));};exports[_0xa12c('0x68')]=function(_0x305be2,_0x7dd86d,_0x1e1648){var _0x4c815d={'raw':![],'where':{}};var _0x5d828c={};var _0x2f4233={'count':0x0,'rows':[]};return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x305be2[_0xa12c('0x5c')]['id']}})['then'](handleEntityNotFound(_0x7dd86d,null))['then'](function(_0x1c1355){if(_0x1c1355){_0x5d828c[_0xa12c('0x48')]=_['keys'](db[_0xa12c('0x6a')]['rawAttributes']);_0x5d828c[_0xa12c('0x49')]=_[_0xa12c('0x4a')](_0x305be2[_0xa12c('0x49')]);_0x5d828c[_0xa12c('0x4b')]=_[_0xa12c('0x4d')](_0x5d828c['model'],_0x5d828c['query']);_0x4c815d['attributes']=_[_0xa12c('0x4d')](_0x5d828c[_0xa12c('0x48')],qs['fields'](_0x305be2[_0xa12c('0x49')][_0xa12c('0x4e')]));_0x4c815d[_0xa12c('0x4c')]=_0x4c815d[_0xa12c('0x4c')][_0xa12c('0x5e')]?_0x4c815d['attributes']:_0x5d828c[_0xa12c('0x48')];if(!_0x305be2[_0xa12c('0x49')][_0xa12c('0x4f')](_0xa12c('0x50'))){_0x4c815d[_0xa12c('0x31')]=qs[_0xa12c('0x31')](_0x305be2[_0xa12c('0x49')][_0xa12c('0x31')]);_0x4c815d[_0xa12c('0x2f')]=qs[_0xa12c('0x2f')](_0x305be2[_0xa12c('0x49')]['offset']);}_0x4c815d[_0xa12c('0x6b')]=qs['sort'](_0x305be2['query'][_0xa12c('0x51')]);_0x4c815d[_0xa12c('0x52')]=qs[_0xa12c('0x4b')](_[_0xa12c('0x53')](_0x305be2[_0xa12c('0x49')],_0x5d828c[_0xa12c('0x4b')]));_0x4c815d[_0xa12c('0x52')][_0xa12c('0x63')]=_0x1c1355['id'];if(_0x305be2[_0xa12c('0x49')][_0xa12c('0x54')]){_0x4c815d[_0xa12c('0x52')]=_[_0xa12c('0x55')](_0x4c815d[_0xa12c('0x52')],{'$or':_['map'](_0x4c815d['attributes'],function(_0x43c84d){var _0x2fb6c6={};_0x2fb6c6[_0x43c84d]={'$like':'%'+_0x305be2['query'][_0xa12c('0x54')]+'%'};return _0x2fb6c6;})});}_0x4c815d=_[_0xa12c('0x55')]({},_0x4c815d,_0x305be2[_0xa12c('0x56')]);return db[_0xa12c('0x6a')]['count']({'where':_0x4c815d[_0xa12c('0x52')]})[_0xa12c('0x26')](function(_0x8a0547){_0x2f4233[_0xa12c('0x32')]=_0x8a0547;if(_0x305be2[_0xa12c('0x49')][_0xa12c('0x57')]){_0x4c815d[_0xa12c('0x58')]=[{'all':!![]}];}return db[_0xa12c('0x6a')][_0xa12c('0x59')](_0x4c815d);})['then'](function(_0x1520cd){_0x2f4233[_0xa12c('0x66')]=_0x1520cd;return _0x2f4233;});}})['then'](respondWithFilteredResult(_0x7dd86d,_0x4c815d))['catch'](handleError(_0x7dd86d,null));};exports[_0xa12c('0x6c')]=function(_0x2fc3d4,_0xe9ada9,_0x172744){return db['MailAccount'][_0xa12c('0x60')]({'where':{'id':_0x2fc3d4[_0xa12c('0x5c')]['id']}})['then'](handleEntityNotFound(_0xe9ada9,null))[_0xa12c('0x26')](function(_0x35f055){if(_0x35f055){return _0x35f055['removeAnswers'](_0x2fc3d4[_0xa12c('0x49')][_0xa12c('0x6d')]);}})['then'](respondWithStatusCode(_0xe9ada9,null))['catch'](handleError(_0xe9ada9,null));};exports['create']=function(_0x5828c2,_0x4bb47){var _0x5731e8={'name':_0x5828c2[_0xa12c('0x5f')]['name'],'key':_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x6e')],'email':_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x6f')],'ListId':_0x5828c2[_0xa12c('0x5f')]['ListId'],'active':!_[_0xa12c('0x70')](_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x71')])?_0x5828c2[_0xa12c('0x5f')]['active']:!![],'description':_0x5828c2['body'][_0xa12c('0x72')]||null,'Imap':{},'Smtp':{}};if(_[_0xa12c('0x70')](_0x5828c2['body'][_0xa12c('0x73')])){if(_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x74')]){_0x5731e8[_0xa12c('0x40')][_0xa12c('0x75')]=_0x5731e8[_0xa12c('0x42')][_0xa12c('0x75')]=_0x5828c2['body'][_0xa12c('0x76')];_0x5731e8[_0xa12c('0x40')][_0xa12c('0x77')]=_0x5731e8[_0xa12c('0x42')]['pass']=_0x5828c2['body'][_0xa12c('0x78')];}else{_0x5731e8[_0xa12c('0x40')][_0xa12c('0x79')]=_0x5731e8[_0xa12c('0x42')]['authentication']=![];}_0x5731e8[_0xa12c('0x40')][_0xa12c('0x7a')]=_0x5828c2['body'][_0xa12c('0x40')][_0xa12c('0x7a')];_0x5731e8['Imap'][_0xa12c('0x7b')]=_0x5828c2[_0xa12c('0x5f')]['Imap']['port'];_0x5731e8[_0xa12c('0x42')]['host']=_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x42')][_0xa12c('0x7a')];_0x5731e8[_0xa12c('0x42')][_0xa12c('0x7b')]=_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x42')][_0xa12c('0x7b')];}else{_0x5731e8[_0xa12c('0x40')]['service']=_0x5731e8[_0xa12c('0x42')][_0xa12c('0x7c')]=_0x5828c2[_0xa12c('0x5f')]['cservice'];_0x5731e8[_0xa12c('0x40')]['user']=_0x5731e8[_0xa12c('0x42')][_0xa12c('0x75')]=_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x76')];_0x5731e8[_0xa12c('0x40')]['password']=_0x5731e8[_0xa12c('0x42')][_0xa12c('0x7d')]=_0x5828c2[_0xa12c('0x5f')][_0xa12c('0x78')];}return db[_0xa12c('0x44')][_0xa12c('0x64')](_0x5731e8,{'include':[{'model':db[_0xa12c('0x41')],'as':_0xa12c('0x42')},{'model':db[_0xa12c('0x3f')],'as':_0xa12c('0x40')}]})[_0xa12c('0x26')](function(_0x2c0c21){var _0x484603=_0x5828c2['user'][_0xa12c('0x38')]({'plain':!![]});if(!_0x484603)throw new Error(_0xa12c('0x7e'));if(_0x484603['role']===_0xa12c('0x75')){var _0x544fed=_0x2c0c21[_0xa12c('0x38')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xa12c('0x39'),'userProfileId':_0x484603[_0xa12c('0x7f')]},'raw':!![]})['then'](function(_0x115664){if(_0x115664&&_0x115664['autoAssociation']===0x0){return db[_0xa12c('0x80')][_0xa12c('0x64')]({'name':_0x544fed[_0xa12c('0x3c')],'resourceId':_0x544fed['id'],'type':_0x115664[_0xa12c('0x3c')],'sectionId':_0x115664['id']},{})[_0xa12c('0x26')](function(){return _0x2c0c21;});}else{return _0x2c0c21;}})[_0xa12c('0x5a')](function(_0x51987f){logger[_0xa12c('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x51987f);throw _0x51987f;});}return _0x2c0c21;})[_0xa12c('0x26')](respondWithResult(_0x4bb47,0xc9))[_0xa12c('0x5a')](handleError(_0x4bb47,null));};exports['getImap']=function(_0x4d9c44,_0x354da8,_0x190e6b){return db[_0xa12c('0x44')]['findOne']({'where':{'id':_0x4d9c44['params']['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x354da8,null))['then'](function(_0x1cbdc5){if(_0x1cbdc5){return _0x1cbdc5[_0xa12c('0x81')]();}return null;})[_0xa12c('0x26')](respondWithResult(_0x354da8,null))[_0xa12c('0x5a')](handleError(_0x354da8,null));};exports['addImap']=function(_0x1a665a,_0x24fbc6,_0x51b3e3){if(_0x1a665a[_0xa12c('0x5f')]['id']){delete _0x1a665a[_0xa12c('0x5f')]['id'];}return db['MailAccount'][_0xa12c('0x60')]({'where':{'id':_0x1a665a['params']['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x24fbc6,null))['then'](function(_0x1aa139){if(_0x1aa139){_0x1a665a['body'][_0xa12c('0x63')]=_0x1aa139['id'];return db[_0xa12c('0x3f')][_0xa12c('0x64')](_0x1a665a[_0xa12c('0x5f')]);}})[_0xa12c('0x26')](respondWithResult(_0x24fbc6,null))[_0xa12c('0x5a')](handleError(_0x24fbc6,null));};exports[_0xa12c('0x82')]=function(_0x5f50b8,_0x3c40ac,_0x291144){return db[_0xa12c('0x44')]['findOne']({'where':{'id':_0x5f50b8['params']['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x3c40ac,null))[_0xa12c('0x26')](function(_0x368b8b){if(_0x368b8b){return _0x368b8b['setImap'](null);}return null;})[_0xa12c('0x26')](respondWithStatusCode(_0x3c40ac,null))['catch'](handleError(_0x3c40ac,null));};exports[_0xa12c('0x83')]=function(_0x2ec658,_0x51ab35,_0x27a770){return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x2ec658['params']['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x51ab35,null))[_0xa12c('0x26')](function(_0x24e744){if(_0x24e744){return _0x24e744[_0xa12c('0x83')]();}return null;})[_0xa12c('0x26')](respondWithResult(_0x51ab35,null))['catch'](handleError(_0x51ab35,null));};exports['addSmtp']=function(_0x5a12be,_0x21ece5,_0xcfbd3b){if(_0x5a12be[_0xa12c('0x5f')]['id']){delete _0x5a12be['body']['id'];}return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x5a12be[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x21ece5,null))[_0xa12c('0x26')](function(_0xcec3bd){if(_0xcec3bd){_0x5a12be[_0xa12c('0x5f')][_0xa12c('0x63')]=_0xcec3bd['id'];return db[_0xa12c('0x41')][_0xa12c('0x64')](_0x5a12be[_0xa12c('0x5f')]);}})[_0xa12c('0x26')](respondWithResult(_0x21ece5,null))[_0xa12c('0x5a')](handleError(_0x21ece5,null));};exports[_0xa12c('0x84')]=function(_0x273919,_0x4ba203,_0x23d1af){return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x273919[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x4ba203,null))[_0xa12c('0x26')](function(_0x3a8611){if(_0x3a8611){return _0x3a8611[_0xa12c('0x85')](null);}return null;})['then'](respondWithStatusCode(_0x4ba203,null))['catch'](handleError(_0x4ba203,null));};exports[_0xa12c('0x86')]=function(_0x42bc50,_0x138133,_0xbc5095){return db['MailInteraction']['find']({'where':{'id':_0x42bc50['params']['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x138133,null))[_0xa12c('0x26')](function(_0x5f1073){if(_0x5f1073){return _0x5f1073[_0xa12c('0x86')](_0x42bc50[_0xa12c('0x5f')][_0xa12c('0x6d')],_[_0xa12c('0x87')](_0x42bc50[_0xa12c('0x5f')],[_0xa12c('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x138133,null))['catch'](handleError(_0x138133,null));};exports['getInteractions']=function(_0x42498a,_0x5cec80,_0x2e07ac){var _0x543e24={'raw':![],'where':{}};var _0x3149de={};var _0x2555b0={'count':0x0,'rows':[]};return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x42498a[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x5cec80,null))[_0xa12c('0x26')](function(_0x33e969){if(_0x33e969){_0x3149de[_0xa12c('0x48')]=_[_0xa12c('0x4a')](db[_0xa12c('0x88')]['rawAttributes']);_0x3149de['query']=_['keys'](_0x42498a['query']);_0x3149de[_0xa12c('0x4b')]=_[_0xa12c('0x4d')](_0x3149de[_0xa12c('0x48')],_0x3149de[_0xa12c('0x49')]);_0x543e24[_0xa12c('0x4c')]=_['intersection'](_0x3149de[_0xa12c('0x48')],qs['fields'](_0x42498a[_0xa12c('0x49')]['fields']));_0x543e24[_0xa12c('0x4c')]=_0x543e24[_0xa12c('0x4c')][_0xa12c('0x5e')]?_0x543e24[_0xa12c('0x4c')]:_0x3149de[_0xa12c('0x48')];if(!_0x42498a[_0xa12c('0x49')][_0xa12c('0x4f')]('nolimit')){_0x543e24[_0xa12c('0x31')]=qs['limit'](_0x42498a[_0xa12c('0x49')][_0xa12c('0x31')]);_0x543e24[_0xa12c('0x2f')]=qs[_0xa12c('0x2f')](_0x42498a[_0xa12c('0x49')]['offset']);}_0x543e24[_0xa12c('0x6b')]=qs[_0xa12c('0x51')](_0x42498a[_0xa12c('0x49')][_0xa12c('0x51')]);_0x543e24[_0xa12c('0x52')]=qs[_0xa12c('0x4b')](_['pick'](_0x42498a[_0xa12c('0x49')],_0x3149de[_0xa12c('0x4b')]));_0x543e24['where']['MailAccountId']=_0x33e969['id'];if(_0x42498a[_0xa12c('0x49')]['filter']){_0x543e24['where']=_['merge'](_0x543e24[_0xa12c('0x52')],{'$or':_[_0xa12c('0x89')](_0x543e24[_0xa12c('0x4c')],function(_0x555633){var _0x5496e5={};_0x5496e5[_0x555633]={'$like':'%'+_0x42498a[_0xa12c('0x49')][_0xa12c('0x54')]+'%'};return _0x5496e5;})});}_0x543e24=_[_0xa12c('0x55')]({},_0x543e24,_0x42498a[_0xa12c('0x56')]);return db['MailInteraction'][_0xa12c('0x32')]({'where':_0x543e24[_0xa12c('0x52')]})[_0xa12c('0x26')](function(_0x2191c3){_0x2555b0[_0xa12c('0x32')]=_0x2191c3;if(_0x42498a[_0xa12c('0x49')][_0xa12c('0x57')]){_0x543e24[_0xa12c('0x58')]=[{'model':db[_0xa12c('0x8a')],'as':'Contact','required':![]},{'model':db[_0xa12c('0x8b')],'as':'Owner','attributes':[_0xa12c('0x3c'),_0xa12c('0x8c'),_0xa12c('0x8d')],'required':![]},{'model':db[_0xa12c('0x8e')],'as':'Tags','attributes':['id',_0xa12c('0x3c'),_0xa12c('0x8f')],'where':_0x42498a[_0xa12c('0x49')][_0xa12c('0x90')]?{'id':_0x42498a['query'][_0xa12c('0x90')]}:undefined,'required':_0x42498a[_0xa12c('0x49')]['tag']?!![]:![]}];}return db['MailInteraction'][_0xa12c('0x59')](_0x543e24);})[_0xa12c('0x26')](function(_0x2c81e8){_0x2555b0['rows']=_0x2c81e8;return _0x2555b0;});}})[_0xa12c('0x26')](respondWithFilteredResult(_0x5cec80,_0x543e24))['catch'](handleError(_0x5cec80,null));};exports[_0xa12c('0x91')]=function(_0x1fb4bd,_0x176c18,_0x1a4d68){return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x1fb4bd[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x176c18,null))[_0xa12c('0x26')](function(_0xac677a){if(_0xac677a){return db[_0xa12c('0x92')][_0xa12c('0x93')](function(_0xef272c){return db[_0xa12c('0x94')][_0xa12c('0x37')]({'where':{'MailAccountId':_0x1fb4bd['params']['id']},'transaction':_0xef272c})[_0xa12c('0x26')](function(_0x399c41){var _0x1118db=_[_0xa12c('0x89')](_0x1fb4bd['body'],function(_0x4a58b1){_0x4a58b1[_0xa12c('0x63')]=_0x1fb4bd[_0xa12c('0x5c')]['id'];return _0x4a58b1;});return db[_0xa12c('0x94')]['bulkCreate'](_0x1118db,{'transaction':_0xef272c});});})[_0xa12c('0x26')](function(){return db[_0xa12c('0x94')]['findAndCountAll']({'where':{'MailAccountId':_0x1fb4bd['params']['id']},'order':_0xa12c('0x95')});});}})['then'](respondWithResult(_0x176c18,null))[_0xa12c('0x5a')](handleError(_0x176c18,null));};exports['getApplications']=function(_0x154e6a,_0x352977,_0x4a8895){var _0x425966={};var _0x38be6d={};var _0x258b14;var _0x39f646;return db['MailAccount'][_0xa12c('0x69')]({'where':{'id':_0x154e6a[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x352977,null))['then'](function(_0x135628){if(_0x135628){_0x258b14=_0x135628;_0x38be6d['model']=_[_0xa12c('0x4a')](db[_0xa12c('0x94')]['rawAttributes']);_0x38be6d['query']=_[_0xa12c('0x4a')](_0x154e6a[_0xa12c('0x49')]);_0x38be6d[_0xa12c('0x4b')]=_[_0xa12c('0x4d')](_0x38be6d[_0xa12c('0x48')],_0x38be6d[_0xa12c('0x49')]);_0x425966[_0xa12c('0x4c')]=_[_0xa12c('0x4d')](_0x38be6d[_0xa12c('0x48')],qs[_0xa12c('0x4e')](_0x154e6a[_0xa12c('0x49')][_0xa12c('0x4e')]));_0x425966['attributes']=_0x425966[_0xa12c('0x4c')][_0xa12c('0x5e')]?_0x425966[_0xa12c('0x4c')]:_0x38be6d['model'];_0x425966[_0xa12c('0x6b')]=qs[_0xa12c('0x51')](_0x154e6a[_0xa12c('0x49')][_0xa12c('0x51')]);_0x425966[_0xa12c('0x52')]=qs['filters'](_['pick'](_0x154e6a['query'],_0x38be6d[_0xa12c('0x4b')]));if(_0x154e6a[_0xa12c('0x49')][_0xa12c('0x54')]){_0x425966[_0xa12c('0x52')]=_[_0xa12c('0x55')](_0x425966['where'],{'$or':_[_0xa12c('0x89')](_0x425966[_0xa12c('0x4c')],function(_0x18112e){var _0x175214={};_0x175214[_0x18112e]={'$like':'%'+_0x154e6a[_0xa12c('0x49')][_0xa12c('0x54')]+'%'};return _0x175214;})});}_0x425966=_[_0xa12c('0x55')]({},_0x425966,_0x154e6a['options']);return _0x258b14[_0xa12c('0x96')](_0x425966);}})['then'](function(_0x358672){if(_0x358672){_0x39f646=_0x358672[_0xa12c('0x5e')];if(!_0x154e6a[_0xa12c('0x49')][_0xa12c('0x4f')](_0xa12c('0x50'))){_0x425966[_0xa12c('0x31')]=qs[_0xa12c('0x31')](_0x154e6a['query'][_0xa12c('0x31')]);_0x425966[_0xa12c('0x2f')]=qs['offset'](_0x154e6a[_0xa12c('0x49')][_0xa12c('0x2f')]);}return _0x258b14['getApplications'](_0x425966);}})[_0xa12c('0x26')](function(_0x1d2033){if(_0x1d2033){return _0x1d2033?{'count':_0x39f646,'rows':_0x1d2033}:null;}})['then'](respondWithResult(_0x352977,null))[_0xa12c('0x5a')](handleError(_0x352977,null));};exports[_0xa12c('0x97')]=function(_0x366ecb,_0x535179,_0x205f4d){var _0xc1eda8={'raw':!![],'where':{}};var _0x287fa5={};var _0x392d20={'count':0x0,'rows':[]};return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x366ecb[_0xa12c('0x5c')]['id']}})['then'](handleEntityNotFound(_0x535179,null))[_0xa12c('0x26')](function(_0x5960d7){if(_0x5960d7){_0x287fa5[_0xa12c('0x48')]=_['keys'](db['MailMessage'][_0xa12c('0x45')]);_0x287fa5['query']=_[_0xa12c('0x4a')](_0x366ecb[_0xa12c('0x49')]);_0x287fa5['filters']=_[_0xa12c('0x4d')](_0x287fa5['model'],_0x287fa5['query']);_0xc1eda8[_0xa12c('0x4c')]=_[_0xa12c('0x4d')](_0x287fa5[_0xa12c('0x48')],qs['fields'](_0x366ecb[_0xa12c('0x49')]['fields']));_0xc1eda8['attributes']=_0xc1eda8[_0xa12c('0x4c')][_0xa12c('0x5e')]?_0xc1eda8[_0xa12c('0x4c')]:_0x287fa5['model'];if(!_0x366ecb[_0xa12c('0x49')][_0xa12c('0x4f')](_0xa12c('0x50'))){_0xc1eda8['limit']=qs[_0xa12c('0x31')](_0x366ecb['query'][_0xa12c('0x31')]);_0xc1eda8[_0xa12c('0x2f')]=qs[_0xa12c('0x2f')](_0x366ecb[_0xa12c('0x49')][_0xa12c('0x2f')]);}_0xc1eda8[_0xa12c('0x6b')]=qs[_0xa12c('0x51')](_0x366ecb[_0xa12c('0x49')][_0xa12c('0x51')]);_0xc1eda8[_0xa12c('0x52')]=qs[_0xa12c('0x4b')](_[_0xa12c('0x53')](_0x366ecb[_0xa12c('0x49')],_0x287fa5[_0xa12c('0x4b')]));_0xc1eda8['where'][_0xa12c('0x63')]=_0x5960d7['id'];if(_0x366ecb[_0xa12c('0x49')][_0xa12c('0x54')]){_0xc1eda8[_0xa12c('0x52')]=_[_0xa12c('0x55')](_0xc1eda8['where'],{'$or':_[_0xa12c('0x89')](_0xc1eda8[_0xa12c('0x4c')],function(_0x206a62){var _0x171585={};_0x171585[_0x206a62]={'$like':'%'+_0x366ecb[_0xa12c('0x49')][_0xa12c('0x54')]+'%'};return _0x171585;})});}if(_0x366ecb[_0xa12c('0x49')][_0xa12c('0x98')]){var _0x4ff85a=_0x366ecb[_0xa12c('0x49')][_0xa12c('0x98')][_0xa12c('0x99')](',');var _0x227edc={};_0x227edc[_0x4ff85a[0x0]]={'$gte':moment(_0x4ff85a[0x1])['format'](_0xa12c('0x9a'))};_0xc1eda8[_0xa12c('0x52')]=_[_0xa12c('0x55')](_0xc1eda8[_0xa12c('0x52')],_0x227edc);}_0xc1eda8=_[_0xa12c('0x55')]({},_0xc1eda8,_0x366ecb['options']);return db[_0xa12c('0x9b')][_0xa12c('0x32')]({'where':_0xc1eda8[_0xa12c('0x52')]})[_0xa12c('0x26')](function(_0x233d28){_0x392d20[_0xa12c('0x32')]=_0x233d28;if(_0x366ecb[_0xa12c('0x49')][_0xa12c('0x57')]){_0xc1eda8[_0xa12c('0x58')]=[{'all':!![]}];}return db[_0xa12c('0x9b')][_0xa12c('0x59')](_0xc1eda8);})[_0xa12c('0x26')](function(_0x50bf0e){if(_0x366ecb[_0xa12c('0x49')][_0xa12c('0x9c')]===_0xa12c('0x9d')){for(var _0x431e8e=0x0;_0x431e8e<_0x50bf0e['length'];_0x431e8e++){_0x50bf0e[_0x431e8e][_0xa12c('0x5f')]=juice(_0x50bf0e[_0x431e8e][_0xa12c('0x5f')]);}}_0x392d20[_0xa12c('0x66')]=_0x50bf0e;return _0x392d20;});}})[_0xa12c('0x26')](respondWithFilteredResult(_0x535179,_0xc1eda8))[_0xa12c('0x5a')](handleError(_0x535179,null));};exports[_0xa12c('0x3d')]=function(_0x47cddc,_0x26947a,_0xf2fbbc){var _0x283eb8,_0x4074db={},_0x49ce6f;if(_0x47cddc[_0xa12c('0x5f')]['to']){_0x49ce6f=_0x47cddc[_0xa12c('0x5f')]['to']['split'](',')[0x0];}return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x47cddc[_0xa12c('0x5c')]['id']},'include':[{'model':db[_0xa12c('0x9e')],'as':_0xa12c('0x9f'),'include':[{'model':db[_0xa12c('0x8a')],'as':_0xa12c('0xa0'),'where':{'email':_0x49ce6f},'limit':0x1,'order':[[_0xa12c('0xa1'),_0xa12c('0xa2')]]}]},{'model':db[_0xa12c('0x41')],'as':_0xa12c('0x42'),'raw':!![]}]})[_0xa12c('0x26')](handleEntityNotFound(_0x26947a,null))[_0xa12c('0x26')](function(_0x2f4f94){if(_0x2f4f94){_0x283eb8=_0x2f4f94;if(_0x2f4f94[_0xa12c('0x42')]){if(_[_0xa12c('0x70')](_0x47cddc['body'][_0xa12c('0xa3')])){_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xa3')]=util['format'](_0xa12c('0xa4'),_0x2f4f94[_0xa12c('0x3c')],_0x2f4f94['email']||_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x75')]);}if(_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xa5')]&&_0x47cddc['body'][_0xa12c('0xa5')][_0xa12c('0x5e')]){for(var _0x2eacef=0x0;_0x2eacef<_0x47cddc[_0xa12c('0x5f')]['attachments'][_0xa12c('0x5e')];_0x2eacef+=0x1){_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xa5')][_0x2eacef]={'filename':_0x47cddc['body'][_0xa12c('0xa5')][_0x2eacef]['name'],'path':path[_0xa12c('0xa6')](config[_0xa12c('0xa7')],'server/files/attachments',_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xa5')][_0x2eacef][_0xa12c('0xa8')])};}}var _0x2dccae={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x7c')])){if(_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x79')]){_0x2dccae[_0xa12c('0xa9')]={'user':_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x75')],'pass':_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x7d')]};}_0x2dccae[_0xa12c('0x7a')]=_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x7a')];_0x2dccae[_0xa12c('0x7b')]=_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x7b')];_0x2dccae['secure']=_0x2f4f94[_0xa12c('0x42')]['secure'];}else{_0x2dccae[_0xa12c('0x7c')]=_0x2f4f94[_0xa12c('0x42')][_0xa12c('0x7c')];_0x2dccae['auth']={'user':_0x2f4f94[_0xa12c('0x42')]['user'],'pass':_0x2f4f94[_0xa12c('0x42')]['pass']};}return respondWithRpcPromise(_0xa12c('0xaa'),_0xa12c('0xab'),{'account':_0x2dccae,'message':_0x47cddc[_0xa12c('0x5f')]});}else{throw new Error(_0xa12c('0xac'));}}})[_0xa12c('0x26')](function(_0x2e5c1c){if(_0x2e5c1c){_0x4074db=_0x2e5c1c;if(_0x283eb8[_0xa12c('0x9f')]){if(_0x283eb8[_0xa12c('0x9f')][_0xa12c('0xa0')]['length']){return _0x283eb8[_0xa12c('0x9f')][_0xa12c('0xa0')][0x0];}else{return db['CmContact'][_0xa12c('0x64')](_[_0xa12c('0x1e')](_0x47cddc[_0xa12c('0x5f')],{'firstName':_0x47cddc[_0xa12c('0x5f')]['to'],'email':_0x47cddc['body']['to'],'phone':_0x47cddc[_0xa12c('0x5f')]['to'],'ListId':_0x283eb8['ListId']}));}}else{throw new Error(_0xa12c('0xac'));}}})[_0xa12c('0x26')](function(_0x2ac521){if(_0x2ac521){var _0x3da7fa={'UserId':_0x47cddc[_0xa12c('0x75')]['id'],'ContactId':_0x2ac521['id'],'MailAccountId':_0x283eb8['id'],'inReplyTo':_0x4074db[_0xa12c('0xad')],'to':_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xa3')],'cc':_0x47cddc['body']['cc'],'subject':_0x47cddc[_0xa12c('0x5f')]['subject'],'attach':_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xae')],'firstMsgDirection':_0xa12c('0xaf'),'lastMsgAt':moment()[_0xa12c('0xb0')](_0xa12c('0x9a')),'lastMsgDirection':_0xa12c('0xaf'),'Messages':[_[_0xa12c('0x55')](_0x47cddc['body'],{'messageId':_0x4074db['messageId'],'sentAt':moment()[_0xa12c('0xb0')](_0xa12c('0x9a')),'read':!![],'MailAccountId':_0x283eb8['id'],'UserId':_0x47cddc[_0xa12c('0x75')]['id'],'ContactId':_0x2ac521['id']})]};if(_0x47cddc[_0xa12c('0x5f')][_0xa12c('0xb1')]){_0x3da7fa=_['merge'](_0x3da7fa,_0x47cddc['body']['Interaction']);}return db[_0xa12c('0x88')]['create'](_0x3da7fa,{'include':[{'model':db[_0xa12c('0x9b')],'as':_0xa12c('0xb2')}]});}})[_0xa12c('0x26')](respondWithResult(_0x26947a,null))[_0xa12c('0x5a')](handleError(_0x26947a,null));};exports[_0xa12c('0xb3')]=function(_0x2258f5,_0x195cb7,_0x2149ec){return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x2258f5[_0xa12c('0x5c')]['id']},'include':[{'model':db[_0xa12c('0x41')],'as':'Smtp','raw':!![]}]})[_0xa12c('0x26')](handleEntityNotFound(_0x195cb7,null))[_0xa12c('0x26')](function(_0x2901d3){if(_0x2901d3&&_0x2901d3[_0xa12c('0x42')]){var _0x50b2a0={'id':_0x2901d3['id'],'tls':{'rejectUnauthorized':![]}};if(_0x2901d3[_0xa12c('0x42')][_0xa12c('0x7c')]){_0x50b2a0['service']=_0x2901d3[_0xa12c('0x42')]['service'];}else{_0x50b2a0['host']=_0x2901d3['Smtp']['host'];_0x50b2a0[_0xa12c('0x7b')]=_0x2901d3['Smtp'][_0xa12c('0x7b')];_0x50b2a0[_0xa12c('0xb4')]=_0x2901d3[_0xa12c('0x42')]['secure'];}if(_0x2901d3['Smtp'][_0xa12c('0x79')]){_0x50b2a0[_0xa12c('0xa9')]={'user':_0x2901d3[_0xa12c('0x42')][_0xa12c('0x75')],'pass':_0x2901d3['Smtp'][_0xa12c('0x7d')]};}return respondWithRpcPromise(_0xa12c('0xb5'),_0xa12c('0xb3'),{'account':_0x50b2a0});}})[_0xa12c('0x26')](respondWithResult(_0x195cb7,null))[_0xa12c('0x5a')](handleError(_0x195cb7,null));};exports[_0xa12c('0x37')]=function(_0x43486f,_0x2b5588){return db['MailAccount']['find']({'where':{'id':_0x43486f[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x2b5588,null))[_0xa12c('0x26')](function(_0x36523e){if(_0x36523e&&_0x36523e[_0xa12c('0x7c')]){throw new db[(_0xa12c('0xb6'))]['ValidationError']('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x36523e;})['then'](removeEntity(_0x2b5588,null))[_0xa12c('0x5a')](handleError(_0x2b5588,null));};exports[_0xa12c('0xb7')]=function(_0x2eefbd,_0x2ee603,_0x160ff7){return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x2eefbd[_0xa12c('0x5c')]['id']}})[_0xa12c('0x26')](handleEntityNotFound(_0x2ee603,null))['then'](function(_0x278b6e){if(_0x278b6e){return _0x278b6e['addAgents'](_0x2eefbd[_0xa12c('0x5f')][_0xa12c('0x6d')],_['omit'](_0x2eefbd['body'],['ids','id'])||{})['spread'](function(_0x364083){for(var _0x239c2c=0x0;_0x239c2c<_0x2eefbd[_0xa12c('0x5f')][_0xa12c('0x6d')][_0xa12c('0x5e')];_0x239c2c+=0x1){socket[_0xa12c('0xb8')]('userMailAccount:save',{'UserId':Number(_0x2eefbd['body'][_0xa12c('0x6d')][_0x239c2c]),'MailAccountId':Number(_0x2eefbd[_0xa12c('0x5c')]['id'])});}return _0x364083;});}})['then'](respondWithResult(_0x2ee603,null))['catch'](handleError(_0x2ee603,null));};exports[_0xa12c('0xb9')]=function(_0x2a3095,_0x4b3448,_0x5d0e95){return db[_0xa12c('0x44')][_0xa12c('0x60')]({'where':{'id':_0x2a3095[_0xa12c('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4b3448,null))[_0xa12c('0x26')](function(_0x2b73d6){if(_0x2b73d6){return _0x2b73d6[_0xa12c('0xb9')](_0x2a3095[_0xa12c('0x49')][_0xa12c('0x6d')])[_0xa12c('0x26')](function(){if(_['isArray'](_0x2a3095[_0xa12c('0x49')][_0xa12c('0x6d')])){for(var _0x759b66=0x0;_0x759b66<_0x2a3095[_0xa12c('0x49')][_0xa12c('0x6d')]['length'];_0x759b66+=0x1){socket[_0xa12c('0xb8')](_0xa12c('0xba'),{'UserId':Number(_0x2a3095[_0xa12c('0x49')]['ids'][_0x759b66]),'MailAccountId':Number(_0x2a3095['params']['id'])});}}else{socket[_0xa12c('0xb8')](_0xa12c('0xba'),{'UserId':Number(_0x2a3095['query'][_0xa12c('0x6d')]),'MailAccountId':Number(_0x2a3095[_0xa12c('0x5c')]['id'])});}});}})[_0xa12c('0x26')](respondWithStatusCode(_0x4b3448,null))[_0xa12c('0x5a')](handleError(_0x4b3448,null));};exports['getAgents']=function(_0x344c40,_0x3e4392,_0x4b7de6){var _0x1fd780={};var _0x453851={};var _0x1e01ee;var _0x357df4;return db[_0xa12c('0x44')][_0xa12c('0x69')]({'where':{'id':_0x344c40[_0xa12c('0x5c')]['id']}})['then'](handleEntityNotFound(_0x3e4392,null))['then'](function(_0x22ea6a){if(_0x22ea6a){_0x1e01ee=_0x22ea6a;_0x453851[_0xa12c('0x48')]=_[_0xa12c('0x4a')](db[_0xa12c('0x8b')][_0xa12c('0x45')]);_0x453851[_0xa12c('0x49')]=_[_0xa12c('0x4a')](_0x344c40['query']);_0x453851[_0xa12c('0x4b')]=_[_0xa12c('0x4d')](_0x453851[_0xa12c('0x48')],_0x453851[_0xa12c('0x49')]);_0x1fd780[_0xa12c('0x4c')]=_[_0xa12c('0x4d')](_0x453851[_0xa12c('0x48')],qs[_0xa12c('0x4e')](_0x344c40[_0xa12c('0x49')][_0xa12c('0x4e')]));_0x1fd780[_0xa12c('0x4c')]=_0x1fd780[_0xa12c('0x4c')]['length']?_0x1fd780['attributes']:_0x453851[_0xa12c('0x48')];_0x1fd780['order']=qs[_0xa12c('0x51')](_0x344c40[_0xa12c('0x49')]['sort']);_0x1fd780[_0xa12c('0x52')]=qs['filters'](_[_0xa12c('0x53')](_0x344c40[_0xa12c('0x49')],_0x453851['filters']));if(_0x344c40[_0xa12c('0x49')]['filter']){_0x1fd780[_0xa12c('0x52')]=_['merge'](_0x1fd780[_0xa12c('0x52')],{'$or':_[_0xa12c('0x89')](_0x1fd780[_0xa12c('0x4c')],function(_0x1df798){var _0x5d6c76={};_0x5d6c76[_0x1df798]={'$like':'%'+_0x344c40['query'][_0xa12c('0x54')]+'%'};return _0x5d6c76;})});}_0x1fd780=_['merge']({},_0x1fd780,_0x344c40[_0xa12c('0x56')]);return _0x1e01ee[_0xa12c('0xbb')](_0x1fd780);}})['then'](function(_0x5e0d56){if(_0x5e0d56){_0x357df4=_0x5e0d56[_0xa12c('0x5e')];if(!_0x344c40[_0xa12c('0x49')][_0xa12c('0x4f')](_0xa12c('0x50'))){_0x1fd780['limit']=qs['limit'](_0x344c40['query']['limit']);_0x1fd780[_0xa12c('0x2f')]=qs[_0xa12c('0x2f')](_0x344c40[_0xa12c('0x49')][_0xa12c('0x2f')]);}return _0x1e01ee['getAgents'](_0x1fd780);}})[_0xa12c('0x26')](function(_0x1e6128){if(_0x1e6128){return _0x1e6128?{'count':_0x357df4,'rows':_0x1e6128}:null;}})[_0xa12c('0x26')](respondWithResult(_0x3e4392,null))['catch'](handleError(_0x3e4392,null));};
\ No newline at end of file
+var _0xeed2=['html-to-text','juice','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','redis','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','get','UserProfileResource','destroy','stack','name','send','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','MailServerIn','Imap','Smtp','includeAll','find','body','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','pick','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','key','email','ListId','isNil','active','cservice','cauthentication','user','cuser','password','cpassword','host','port','service','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','omit','MailInteraction','CmContact','Contact','User','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','basename','authentication','auth','secure','sendMail','List\x20not\x20found','Contacts','messageId','subject','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse'];(function(_0x36b330,_0x37fd20){var _0x26988d=function(_0x5084e8){while(--_0x5084e8){_0x36b330['push'](_0x36b330['shift']());}};_0x26988d(++_0x37fd20);}(_0xeed2,0xb1));var _0x2eed=function(_0x2fcf91,_0x183516){_0x2fcf91=_0x2fcf91-0x0;var _0x5b22e2=_0xeed2[_0x2fcf91];return _0x5b22e2;};'use strict';var emlformat=require(_0x2eed('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2eed('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2eed('0x2'));var BPromise=require(_0x2eed('0x3'));var Mustache=require('mustache');var util=require(_0x2eed('0x4'));var path=require(_0x2eed('0x5'));var sox=require(_0x2eed('0x6'));var csv=require(_0x2eed('0x7'));var ejs=require(_0x2eed('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2eed('0x9'));var squel=require(_0x2eed('0xa'));var crypto=require(_0x2eed('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2eed('0xc'));var toCsv=require(_0x2eed('0x7'));var querystring=require(_0x2eed('0xd'));var Papa=require(_0x2eed('0xe'));var htmlToText=require(_0x2eed('0xf'));var juice=require(_0x2eed('0x10'));var Redis=require('ioredis');var authService=require(_0x2eed('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2eed('0x12'));var hardwareService=require(_0x2eed('0x13'));var logger=require(_0x2eed('0x14'))('api');var utils=require(_0x2eed('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2eed('0x16'));var db=require('../../mysqldb')['db'];config[_0x2eed('0x17')]=_['defaults'](config[_0x2eed('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x2eed('0x18'))(new Redis(config[_0x2eed('0x17')]));require(_0x2eed('0x19'))[_0x2eed('0x1a')](socket);var jayson=require(_0x2eed('0x1b'));var client=jayson[_0x2eed('0x1c')]['http']({'port':0x232b});function respondWithRpcPromise(_0x245189,_0x42019e,_0x2fad28,_0x497176){return new BPromise(function(_0x2dc0e3,_0x42145a){var _0xab04ed=_0x497176||client;return _0xab04ed['request'](_0x245189,_0x2fad28)[_0x2eed('0x1d')](function(_0x25a320){logger[_0x2eed('0x1e')](_0x2eed('0x1f'),_0x42019e,_0x2eed('0x20'));logger['debug'](_0x2eed('0x21'),_0x42019e,_0x2eed('0x20'),JSON[_0x2eed('0x22')](_0x25a320));if(_0x25a320[_0x2eed('0x23')]){if(_0x25a320[_0x2eed('0x23')]['code']===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x42019e,_0x25a320['error']['message']);return _0x42145a(_0x25a320[_0x2eed('0x23')]['message']);}logger[_0x2eed('0x23')](_0x2eed('0x1f'),_0x42019e,_0x25a320[_0x2eed('0x23')]['message']);return _0x2dc0e3(_0x25a320['error'][_0x2eed('0x24')]);}else{logger[_0x2eed('0x1e')]('MailAccount,\x20%s,\x20%s',_0x42019e,_0x2eed('0x20'));_0x2dc0e3(_0x25a320[_0x2eed('0x25')][_0x2eed('0x24')]);}})[_0x2eed('0x26')](function(_0x1eb493){logger[_0x2eed('0x23')](_0x2eed('0x1f'),_0x42019e,_0x1eb493);_0x42145a(_0x1eb493);});});}function respondWithStatusCode(_0x4e3e8e,_0x51492c){_0x51492c=_0x51492c||0xcc;return function(_0x36eb0d){if(_0x36eb0d){return _0x4e3e8e[_0x2eed('0x27')](_0x51492c);}return _0x4e3e8e[_0x2eed('0x28')](_0x51492c)[_0x2eed('0x29')]();};}function respondWithResult(_0x2e169e,_0x1943e0){_0x1943e0=_0x1943e0||0xc8;return function(_0x293ee6){if(_0x293ee6){return _0x2e169e[_0x2eed('0x28')](_0x1943e0)[_0x2eed('0x2a')](_0x293ee6);}};}function respondWithFilteredResult(_0x436e50,_0x4c1bb0){return function(_0x3de4ba){if(_0x3de4ba){var _0x3d4dac=typeof _0x4c1bb0[_0x2eed('0x2b')]===_0x2eed('0x2c')&&typeof _0x4c1bb0[_0x2eed('0x2d')]===_0x2eed('0x2c');var _0x5c49f6=_0x3de4ba['count'];var _0x4aeb93=_0x3d4dac?0x0:_0x4c1bb0[_0x2eed('0x2b')];var _0x5052a3=_0x3d4dac?_0x3de4ba[_0x2eed('0x2e')]:_0x4c1bb0[_0x2eed('0x2b')]+_0x4c1bb0[_0x2eed('0x2d')];var _0x12028d;if(_0x5052a3>=_0x5c49f6){_0x5052a3=_0x5c49f6;_0x12028d=0xc8;}else{_0x12028d=0xce;}_0x436e50[_0x2eed('0x28')](_0x12028d);return _0x436e50[_0x2eed('0x2f')]('Content-Range',_0x4aeb93+'-'+_0x5052a3+'/'+_0x5c49f6)[_0x2eed('0x2a')](_0x3de4ba);}return null;};}function patchUpdates(_0x3afbe5){return function(_0x3aa441){try{jsonpatch[_0x2eed('0x30')](_0x3aa441,_0x3afbe5,!![]);}catch(_0x1f1163){return BPromise[_0x2eed('0x31')](_0x1f1163);}return _0x3aa441[_0x2eed('0x32')]();};}function saveUpdates(_0x4efd5a,_0x288a2e){return function(_0x33e844){if(_0x33e844){return _0x33e844['update'](_0x4efd5a)[_0x2eed('0x1d')](function(_0x1576dd){return _0x1576dd;});}return null;};}function removeEntity(_0x5433c6,_0x15adeb){return function(_0x1c5208){if(_0x1c5208){return _0x1c5208['destroy']()['then'](function(){var _0x2c8722=_0x1c5208[_0x2eed('0x33')]({'plain':!![]});var _0x3ebe44='MailAccounts';return db[_0x2eed('0x34')][_0x2eed('0x35')]({'where':{'type':_0x3ebe44,'resourceId':_0x2c8722['id']}})[_0x2eed('0x1d')](function(){return _0x1c5208;});})[_0x2eed('0x1d')](function(){_0x5433c6[_0x2eed('0x28')](0xcc)[_0x2eed('0x29')]();});}};}function handleEntityNotFound(_0x36d328,_0x2604ed){return function(_0x57011c){if(!_0x57011c){_0x36d328[_0x2eed('0x27')](0x194);}return _0x57011c;};}function handleError(_0x2ff2d6,_0x382598){_0x382598=_0x382598||0x1f4;return function(_0x23ca7a){logger['error'](_0x23ca7a[_0x2eed('0x36')]);if(_0x23ca7a[_0x2eed('0x37')]){delete _0x23ca7a[_0x2eed('0x37')];}_0x2ff2d6['status'](_0x382598)[_0x2eed('0x38')](_0x23ca7a);};}exports['index']=function(_0x55b325,_0x1b0d41){var _0x9ad329={'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x2eed('0x39')],'as':'Smtp'},{'model':db[_0x2eed('0x3a')],'as':_0x2eed('0x3b')}]},_0x4326f6={},_0x4e9e03={'count':0x0,'rows':[]};var _0x3e9d39=_[_0x2eed('0x3c')](db[_0x2eed('0x3d')][_0x2eed('0x3e')],function(_0x56050b){return{'name':_0x56050b[_0x2eed('0x3f')],'type':_0x56050b[_0x2eed('0x40')]['key']};});_0x4326f6[_0x2eed('0x41')]=_[_0x2eed('0x3c')](_0x3e9d39,_0x2eed('0x37'));_0x4326f6[_0x2eed('0x42')]=_[_0x2eed('0x43')](_0x55b325[_0x2eed('0x42')]);_0x4326f6['filters']=_['intersection'](_0x4326f6[_0x2eed('0x41')],_0x4326f6[_0x2eed('0x42')]);_0x9ad329['attributes']=_[_0x2eed('0x44')](_0x4326f6[_0x2eed('0x41')],qs[_0x2eed('0x45')](_0x55b325[_0x2eed('0x42')]['fields']));_0x9ad329[_0x2eed('0x46')]=_0x9ad329[_0x2eed('0x46')][_0x2eed('0x47')]?_0x9ad329[_0x2eed('0x46')]:_0x4326f6[_0x2eed('0x41')];if(!_0x55b325[_0x2eed('0x42')][_0x2eed('0x48')](_0x2eed('0x49'))){_0x9ad329[_0x2eed('0x2d')]=qs['limit'](_0x55b325[_0x2eed('0x42')][_0x2eed('0x2d')]);_0x9ad329[_0x2eed('0x2b')]=qs[_0x2eed('0x2b')](_0x55b325[_0x2eed('0x42')][_0x2eed('0x2b')]);}_0x9ad329[_0x2eed('0x4a')]=qs[_0x2eed('0x4b')](_0x55b325[_0x2eed('0x42')][_0x2eed('0x4b')]);_0x9ad329['where']=qs[_0x2eed('0x4c')](_['pick'](_0x55b325['query'],_0x4326f6[_0x2eed('0x4c')]),_0x3e9d39);if(_0x55b325[_0x2eed('0x42')]['filter']){_0x9ad329[_0x2eed('0x4d')]=_[_0x2eed('0x4e')](_0x9ad329['where'],{'$or':_[_0x2eed('0x3c')](_0x3e9d39,function(_0x56cd55){if(_0x56cd55[_0x2eed('0x40')]!==_0x2eed('0x4f')){var _0x15b597={};_0x15b597[_0x56cd55['name']]={'$like':'%'+_0x55b325[_0x2eed('0x42')][_0x2eed('0x50')]+'%'};return _0x15b597;}})});}_0x9ad329=_[_0x2eed('0x4e')]({},_0x9ad329,_0x55b325[_0x2eed('0x51')]);var _0x48ed46={'where':_0x9ad329[_0x2eed('0x4d')]};return db[_0x2eed('0x3d')]['count'](_0x48ed46)[_0x2eed('0x1d')](function(_0x4533eb){_0x4e9e03['count']=_0x4533eb;if(_0x55b325[_0x2eed('0x42')]['includeAll']){_0x9ad329[_0x2eed('0x52')]=[{'all':!![]}];}return db[_0x2eed('0x3d')][_0x2eed('0x53')](_0x9ad329);})['then'](function(_0x2ecadc){_0x4e9e03[_0x2eed('0x54')]=_0x2ecadc;return _0x4e9e03;})[_0x2eed('0x1d')](respondWithFilteredResult(_0x1b0d41,_0x9ad329))['catch'](handleError(_0x1b0d41,null));};exports[_0x2eed('0x55')]=function(_0x160173,_0x4db3fd){var _0x48161f={'raw':![],'where':{'id':_0x160173[_0x2eed('0x56')]['id']},'include':[{'model':db[_0x2eed('0x57')],'as':_0x2eed('0x58')},{'model':db[_0x2eed('0x39')],'as':_0x2eed('0x59')},{'model':db[_0x2eed('0x3a')],'as':_0x2eed('0x3b')}]},_0x2e9ee2={};_0x2e9ee2[_0x2eed('0x41')]=_[_0x2eed('0x43')](db[_0x2eed('0x3d')][_0x2eed('0x3e')]);_0x2e9ee2['query']=_[_0x2eed('0x43')](_0x160173[_0x2eed('0x42')]);_0x2e9ee2['filters']=_[_0x2eed('0x44')](_0x2e9ee2[_0x2eed('0x41')],_0x2e9ee2[_0x2eed('0x42')]);_0x48161f[_0x2eed('0x46')]=_[_0x2eed('0x44')](_0x2e9ee2[_0x2eed('0x41')],qs[_0x2eed('0x45')](_0x160173['query'][_0x2eed('0x45')]));_0x48161f['attributes']=_0x48161f[_0x2eed('0x46')]['length']?_0x48161f['attributes']:_0x2e9ee2['model'];if(_0x160173[_0x2eed('0x42')][_0x2eed('0x5a')]){_0x48161f[_0x2eed('0x52')]=[{'all':!![]}];}_0x48161f=_[_0x2eed('0x4e')]({},_0x48161f,_0x160173[_0x2eed('0x51')]);return db[_0x2eed('0x3d')][_0x2eed('0x5b')](_0x48161f)[_0x2eed('0x1d')](handleEntityNotFound(_0x4db3fd,null))['then'](respondWithResult(_0x4db3fd,null))[_0x2eed('0x26')](handleError(_0x4db3fd,null));};exports['update']=function(_0x4fb36b,_0x18a5e2){if(_0x4fb36b[_0x2eed('0x5c')]['id']){delete _0x4fb36b[_0x2eed('0x5c')]['id'];}return db[_0x2eed('0x3d')][_0x2eed('0x5b')]({'where':{'id':_0x4fb36b['params']['id']},'include':[{'model':db[_0x2eed('0x57')],'as':_0x2eed('0x58')},{'model':db['MailServerOut'],'as':_0x2eed('0x59')},{'model':db['Pause'],'as':_0x2eed('0x3b')}]})['then'](handleEntityNotFound(_0x18a5e2,null))[_0x2eed('0x1d')](saveUpdates(_0x4fb36b[_0x2eed('0x5c')],null))[_0x2eed('0x1d')](function(_0xc6091f){if(_0xc6091f&&_0x4fb36b['body'][_0x2eed('0x58')]){return db[_0x2eed('0x57')]['update'](_0x4fb36b[_0x2eed('0x5c')][_0x2eed('0x58')],{'where':{'MailAccountId':_0xc6091f['id']}})['then'](function(){return _0xc6091f;});}return _0xc6091f;})['then'](function(_0xa33970){if(_0xa33970&&_0x4fb36b['body'][_0x2eed('0x59')]){return db['MailServerOut']['update'](_0x4fb36b['body']['Smtp'],{'where':{'MailAccountId':_0xa33970['id']}})[_0x2eed('0x1d')](function(){return _0xa33970;});}return _0xa33970;})[_0x2eed('0x1d')](respondWithResult(_0x18a5e2,null))[_0x2eed('0x26')](handleError(_0x18a5e2,null));};exports['describe']=function(_0x6d409d,_0x504e9d){return db['MailAccount']['describe']()[_0x2eed('0x1d')](respondWithResult(_0x504e9d,null))[_0x2eed('0x26')](handleError(_0x504e9d,null));};exports[_0x2eed('0x5d')]=function(_0x1ac9c7,_0x4b2717,_0x493ead){if(_0x1ac9c7[_0x2eed('0x5c')]['id']){delete _0x1ac9c7[_0x2eed('0x5c')]['id'];}return db['MailAccount'][_0x2eed('0x5b')]({'where':{'id':_0x1ac9c7[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x4b2717,null))[_0x2eed('0x1d')](function(_0x42630b){if(_0x42630b){_0x1ac9c7[_0x2eed('0x5c')][_0x2eed('0x5e')]=_0x42630b['id'];return db[_0x2eed('0x5f')][_0x2eed('0x60')](_0x1ac9c7[_0x2eed('0x5c')]);}})['then'](respondWithResult(_0x4b2717,null))[_0x2eed('0x26')](handleError(_0x4b2717,null));};exports[_0x2eed('0x61')]=function(_0x53e1c2,_0x5b9de6,_0x41f12a){var _0x342408={'raw':![],'where':{}};var _0x1ebcc5={};var _0x635ffa={'count':0x0,'rows':[]};return db[_0x2eed('0x3d')][_0x2eed('0x62')]({'where':{'id':_0x53e1c2['params']['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x5b9de6,null))[_0x2eed('0x1d')](function(_0x1c9bb7){if(_0x1c9bb7){_0x1ebcc5[_0x2eed('0x41')]=_[_0x2eed('0x43')](db[_0x2eed('0x5f')][_0x2eed('0x3e')]);_0x1ebcc5[_0x2eed('0x42')]=_[_0x2eed('0x43')](_0x53e1c2[_0x2eed('0x42')]);_0x1ebcc5[_0x2eed('0x4c')]=_['intersection'](_0x1ebcc5[_0x2eed('0x41')],_0x1ebcc5[_0x2eed('0x42')]);_0x342408[_0x2eed('0x46')]=_['intersection'](_0x1ebcc5[_0x2eed('0x41')],qs[_0x2eed('0x45')](_0x53e1c2[_0x2eed('0x42')][_0x2eed('0x45')]));_0x342408['attributes']=_0x342408[_0x2eed('0x46')][_0x2eed('0x47')]?_0x342408['attributes']:_0x1ebcc5['model'];if(!_0x53e1c2[_0x2eed('0x42')][_0x2eed('0x48')](_0x2eed('0x49'))){_0x342408[_0x2eed('0x2d')]=qs[_0x2eed('0x2d')](_0x53e1c2[_0x2eed('0x42')][_0x2eed('0x2d')]);_0x342408['offset']=qs[_0x2eed('0x2b')](_0x53e1c2[_0x2eed('0x42')][_0x2eed('0x2b')]);}_0x342408[_0x2eed('0x4a')]=qs[_0x2eed('0x4b')](_0x53e1c2['query']['sort']);_0x342408['where']=qs[_0x2eed('0x4c')](_[_0x2eed('0x63')](_0x53e1c2['query'],_0x1ebcc5[_0x2eed('0x4c')]));_0x342408['where'][_0x2eed('0x5e')]=_0x1c9bb7['id'];if(_0x53e1c2[_0x2eed('0x42')]['filter']){_0x342408['where']=_['merge'](_0x342408['where'],{'$or':_['map'](_0x342408['attributes'],function(_0x19eaca){var _0x5c03a3={};_0x5c03a3[_0x19eaca]={'$like':'%'+_0x53e1c2[_0x2eed('0x42')][_0x2eed('0x50')]+'%'};return _0x5c03a3;})});}_0x342408=_[_0x2eed('0x4e')]({},_0x342408,_0x53e1c2['options']);return db[_0x2eed('0x5f')][_0x2eed('0x2e')]({'where':_0x342408[_0x2eed('0x4d')]})[_0x2eed('0x1d')](function(_0x1a6d11){_0x635ffa['count']=_0x1a6d11;if(_0x53e1c2[_0x2eed('0x42')][_0x2eed('0x5a')]){_0x342408[_0x2eed('0x52')]=[{'all':!![]}];}return db[_0x2eed('0x5f')][_0x2eed('0x53')](_0x342408);})['then'](function(_0x3cc10e){_0x635ffa[_0x2eed('0x54')]=_0x3cc10e;return _0x635ffa;});}})[_0x2eed('0x1d')](respondWithFilteredResult(_0x5b9de6,_0x342408))[_0x2eed('0x26')](handleError(_0x5b9de6,null));};exports[_0x2eed('0x64')]=function(_0x3f048b,_0x33fd00,_0x4ecabd){return db[_0x2eed('0x3d')][_0x2eed('0x5b')]({'where':{'id':_0x3f048b[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x33fd00,null))[_0x2eed('0x1d')](function(_0x386973){if(_0x386973){return _0x386973[_0x2eed('0x64')](_0x3f048b[_0x2eed('0x42')][_0x2eed('0x65')]);}})[_0x2eed('0x1d')](respondWithStatusCode(_0x33fd00,null))[_0x2eed('0x26')](handleError(_0x33fd00,null));};exports[_0x2eed('0x66')]=function(_0x5b4bca,_0x14ff9c,_0x41e26f){if(_0x5b4bca['body']['id']){delete _0x5b4bca['body']['id'];}return db[_0x2eed('0x3d')][_0x2eed('0x5b')]({'where':{'id':_0x5b4bca[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x14ff9c,null))[_0x2eed('0x1d')](function(_0x235eb1){if(_0x235eb1){_0x5b4bca[_0x2eed('0x5c')]['MailAccountId']=_0x235eb1['id'];return db[_0x2eed('0x67')][_0x2eed('0x60')](_0x5b4bca[_0x2eed('0x5c')]);}})[_0x2eed('0x1d')](respondWithResult(_0x14ff9c,null))[_0x2eed('0x26')](handleError(_0x14ff9c,null));};exports[_0x2eed('0x68')]=function(_0x250f0f,_0x21af67,_0x145c6e){var _0x3841ad={'raw':![],'where':{}};var _0x5cec8d={};var _0x3931c5={'count':0x0,'rows':[]};return db[_0x2eed('0x3d')][_0x2eed('0x62')]({'where':{'id':_0x250f0f['params']['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x21af67,null))[_0x2eed('0x1d')](function(_0x4beca7){if(_0x4beca7){_0x5cec8d[_0x2eed('0x41')]=_['keys'](db[_0x2eed('0x67')]['rawAttributes']);_0x5cec8d[_0x2eed('0x42')]=_[_0x2eed('0x43')](_0x250f0f[_0x2eed('0x42')]);_0x5cec8d[_0x2eed('0x4c')]=_[_0x2eed('0x44')](_0x5cec8d[_0x2eed('0x41')],_0x5cec8d[_0x2eed('0x42')]);_0x3841ad[_0x2eed('0x46')]=_[_0x2eed('0x44')](_0x5cec8d[_0x2eed('0x41')],qs[_0x2eed('0x45')](_0x250f0f[_0x2eed('0x42')][_0x2eed('0x45')]));_0x3841ad[_0x2eed('0x46')]=_0x3841ad[_0x2eed('0x46')][_0x2eed('0x47')]?_0x3841ad['attributes']:_0x5cec8d[_0x2eed('0x41')];if(!_0x250f0f[_0x2eed('0x42')][_0x2eed('0x48')]('nolimit')){_0x3841ad['limit']=qs[_0x2eed('0x2d')](_0x250f0f[_0x2eed('0x42')][_0x2eed('0x2d')]);_0x3841ad[_0x2eed('0x2b')]=qs[_0x2eed('0x2b')](_0x250f0f[_0x2eed('0x42')]['offset']);}_0x3841ad[_0x2eed('0x4a')]=qs['sort'](_0x250f0f[_0x2eed('0x42')][_0x2eed('0x4b')]);_0x3841ad[_0x2eed('0x4d')]=qs[_0x2eed('0x4c')](_[_0x2eed('0x63')](_0x250f0f[_0x2eed('0x42')],_0x5cec8d['filters']));_0x3841ad['where'][_0x2eed('0x5e')]=_0x4beca7['id'];if(_0x250f0f[_0x2eed('0x42')]['filter']){_0x3841ad['where']=_[_0x2eed('0x4e')](_0x3841ad[_0x2eed('0x4d')],{'$or':_['map'](_0x3841ad[_0x2eed('0x46')],function(_0x1dd792){var _0x1e494c={};_0x1e494c[_0x1dd792]={'$like':'%'+_0x250f0f[_0x2eed('0x42')]['filter']+'%'};return _0x1e494c;})});}_0x3841ad=_['merge']({},_0x3841ad,_0x250f0f[_0x2eed('0x51')]);return db[_0x2eed('0x67')][_0x2eed('0x2e')]({'where':_0x3841ad[_0x2eed('0x4d')]})[_0x2eed('0x1d')](function(_0x2324b6){_0x3931c5[_0x2eed('0x2e')]=_0x2324b6;if(_0x250f0f[_0x2eed('0x42')][_0x2eed('0x5a')]){_0x3841ad[_0x2eed('0x52')]=[{'all':!![]}];}return db['CannedAnswer'][_0x2eed('0x53')](_0x3841ad);})[_0x2eed('0x1d')](function(_0x4ddb06){_0x3931c5[_0x2eed('0x54')]=_0x4ddb06;return _0x3931c5;});}})[_0x2eed('0x1d')](respondWithFilteredResult(_0x21af67,_0x3841ad))[_0x2eed('0x26')](handleError(_0x21af67,null));};exports['removeAnswers']=function(_0x4b05c7,_0x43d7ed,_0x347eeb){return db[_0x2eed('0x3d')][_0x2eed('0x5b')]({'where':{'id':_0x4b05c7[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x43d7ed,null))[_0x2eed('0x1d')](function(_0x59267d){if(_0x59267d){return _0x59267d[_0x2eed('0x69')](_0x4b05c7[_0x2eed('0x42')][_0x2eed('0x65')]);}})['then'](respondWithStatusCode(_0x43d7ed,null))[_0x2eed('0x26')](handleError(_0x43d7ed,null));};exports[_0x2eed('0x60')]=function(_0x297738,_0x5965c8){var _0x2dd3f0={'name':_0x297738['body'][_0x2eed('0x37')],'key':_0x297738['body'][_0x2eed('0x6a')],'email':_0x297738[_0x2eed('0x5c')][_0x2eed('0x6b')],'ListId':_0x297738[_0x2eed('0x5c')][_0x2eed('0x6c')],'active':!_[_0x2eed('0x6d')](_0x297738[_0x2eed('0x5c')]['active'])?_0x297738[_0x2eed('0x5c')][_0x2eed('0x6e')]:!![],'description':_0x297738['body']['description']||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x297738[_0x2eed('0x5c')][_0x2eed('0x6f')])){if(_0x297738[_0x2eed('0x5c')][_0x2eed('0x70')]){_0x2dd3f0[_0x2eed('0x58')][_0x2eed('0x71')]=_0x2dd3f0[_0x2eed('0x59')][_0x2eed('0x71')]=_0x297738[_0x2eed('0x5c')][_0x2eed('0x72')];_0x2dd3f0[_0x2eed('0x58')][_0x2eed('0x73')]=_0x2dd3f0[_0x2eed('0x59')]['pass']=_0x297738['body'][_0x2eed('0x74')];}else{_0x2dd3f0[_0x2eed('0x58')]['authentication']=_0x2dd3f0[_0x2eed('0x59')]['authentication']=![];}_0x2dd3f0[_0x2eed('0x58')][_0x2eed('0x75')]=_0x297738[_0x2eed('0x5c')]['Imap']['host'];_0x2dd3f0[_0x2eed('0x58')]['port']=_0x297738[_0x2eed('0x5c')][_0x2eed('0x58')]['port'];_0x2dd3f0[_0x2eed('0x59')][_0x2eed('0x75')]=_0x297738[_0x2eed('0x5c')]['Smtp'][_0x2eed('0x75')];_0x2dd3f0[_0x2eed('0x59')]['port']=_0x297738[_0x2eed('0x5c')]['Smtp'][_0x2eed('0x76')];}else{_0x2dd3f0['Imap'][_0x2eed('0x77')]=_0x2dd3f0[_0x2eed('0x59')][_0x2eed('0x77')]=_0x297738[_0x2eed('0x5c')][_0x2eed('0x6f')];_0x2dd3f0[_0x2eed('0x58')][_0x2eed('0x71')]=_0x2dd3f0[_0x2eed('0x59')][_0x2eed('0x71')]=_0x297738[_0x2eed('0x5c')][_0x2eed('0x72')];_0x2dd3f0[_0x2eed('0x58')]['password']=_0x2dd3f0['Smtp'][_0x2eed('0x78')]=_0x297738[_0x2eed('0x5c')][_0x2eed('0x74')];}return db[_0x2eed('0x3d')]['create'](_0x2dd3f0,{'include':[{'model':db[_0x2eed('0x39')],'as':_0x2eed('0x59')},{'model':db[_0x2eed('0x57')],'as':'Imap'}]})[_0x2eed('0x1d')](function(_0x12d758){var _0x2d2df5=_0x297738[_0x2eed('0x71')][_0x2eed('0x33')]({'plain':!![]});if(!_0x2d2df5)throw new Error(_0x2eed('0x79'));if(_0x2d2df5[_0x2eed('0x7a')]===_0x2eed('0x71')){var _0xcf1ca8=_0x12d758[_0x2eed('0x33')]({'plain':!![]});return db[_0x2eed('0x7b')]['find']({'where':{'name':_0x2eed('0x7c'),'userProfileId':_0x2d2df5['userProfileId']},'raw':!![]})[_0x2eed('0x1d')](function(_0x206542){if(_0x206542&&_0x206542[_0x2eed('0x7d')]===0x0){return db[_0x2eed('0x34')][_0x2eed('0x60')]({'name':_0xcf1ca8[_0x2eed('0x37')],'resourceId':_0xcf1ca8['id'],'type':_0x206542[_0x2eed('0x37')],'sectionId':_0x206542['id']},{})[_0x2eed('0x1d')](function(){return _0x12d758;});}else{return _0x12d758;}})[_0x2eed('0x26')](function(_0xa77a11){logger[_0x2eed('0x23')](_0x2eed('0x7e'),_0xa77a11);throw _0xa77a11;});}return _0x12d758;})[_0x2eed('0x1d')](respondWithResult(_0x5965c8,0xc9))[_0x2eed('0x26')](handleError(_0x5965c8,null));};exports[_0x2eed('0x7f')]=function(_0xf40a2e,_0x318da9,_0x567d4f){return db[_0x2eed('0x3d')][_0x2eed('0x62')]({'where':{'id':_0xf40a2e[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x318da9,null))['then'](function(_0x29d1b4){if(_0x29d1b4){return _0x29d1b4[_0x2eed('0x7f')]();}return null;})[_0x2eed('0x1d')](respondWithResult(_0x318da9,null))['catch'](handleError(_0x318da9,null));};exports[_0x2eed('0x80')]=function(_0x1194b3,_0x2ad2d2,_0x293130){if(_0x1194b3['body']['id']){delete _0x1194b3[_0x2eed('0x5c')]['id'];}return db['MailAccount'][_0x2eed('0x5b')]({'where':{'id':_0x1194b3[_0x2eed('0x56')]['id']}})['then'](handleEntityNotFound(_0x2ad2d2,null))[_0x2eed('0x1d')](function(_0x1df36c){if(_0x1df36c){_0x1194b3['body'][_0x2eed('0x5e')]=_0x1df36c['id'];return db['MailServerIn'][_0x2eed('0x60')](_0x1194b3[_0x2eed('0x5c')]);}})[_0x2eed('0x1d')](respondWithResult(_0x2ad2d2,null))[_0x2eed('0x26')](handleError(_0x2ad2d2,null));};exports[_0x2eed('0x81')]=function(_0x41689d,_0x3cea1d,_0x3a917e){return db[_0x2eed('0x3d')]['findOne']({'where':{'id':_0x41689d[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x3cea1d,null))[_0x2eed('0x1d')](function(_0x581abf){if(_0x581abf){return _0x581abf[_0x2eed('0x82')](null);}return null;})[_0x2eed('0x1d')](respondWithStatusCode(_0x3cea1d,null))[_0x2eed('0x26')](handleError(_0x3cea1d,null));};exports['getSmtp']=function(_0x229914,_0x5cff26,_0x2b4e5a){return db['MailAccount'][_0x2eed('0x62')]({'where':{'id':_0x229914['params']['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x5cff26,null))[_0x2eed('0x1d')](function(_0x111638){if(_0x111638){return _0x111638[_0x2eed('0x83')]();}return null;})[_0x2eed('0x1d')](respondWithResult(_0x5cff26,null))[_0x2eed('0x26')](handleError(_0x5cff26,null));};exports[_0x2eed('0x84')]=function(_0x31f7ca,_0x41fd6b,_0x49acaa){if(_0x31f7ca[_0x2eed('0x5c')]['id']){delete _0x31f7ca[_0x2eed('0x5c')]['id'];}return db['MailAccount'][_0x2eed('0x5b')]({'where':{'id':_0x31f7ca[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x41fd6b,null))[_0x2eed('0x1d')](function(_0x13d3bb){if(_0x13d3bb){_0x31f7ca[_0x2eed('0x5c')]['MailAccountId']=_0x13d3bb['id'];return db[_0x2eed('0x39')][_0x2eed('0x60')](_0x31f7ca[_0x2eed('0x5c')]);}})[_0x2eed('0x1d')](respondWithResult(_0x41fd6b,null))['catch'](handleError(_0x41fd6b,null));};exports[_0x2eed('0x85')]=function(_0x27f834,_0x8aa5fc,_0x3d53a9){return db['MailAccount'][_0x2eed('0x62')]({'where':{'id':_0x27f834[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x8aa5fc,null))[_0x2eed('0x1d')](function(_0x786cfa){if(_0x786cfa){return _0x786cfa['setSmtp'](null);}return null;})['then'](respondWithStatusCode(_0x8aa5fc,null))[_0x2eed('0x26')](handleError(_0x8aa5fc,null));};exports[_0x2eed('0x86')]=function(_0x130ba3,_0x3d31f8,_0x1a7c0f){return db['MailInteraction'][_0x2eed('0x5b')]({'where':{'id':_0x130ba3[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x3d31f8,null))[_0x2eed('0x1d')](function(_0x394639){if(_0x394639){return _0x394639[_0x2eed('0x86')](_0x130ba3['body']['ids'],_[_0x2eed('0x87')](_0x130ba3[_0x2eed('0x5c')],[_0x2eed('0x65'),'id'])||{});}})[_0x2eed('0x1d')](respondWithResult(_0x3d31f8,null))['catch'](handleError(_0x3d31f8,null));};exports['getInteractions']=function(_0x1642ba,_0x229320,_0x121879){var _0x242007={'raw':![],'where':{}};var _0x16ef1a={};var _0x356844={'count':0x0,'rows':[]};return db[_0x2eed('0x3d')][_0x2eed('0x62')]({'where':{'id':_0x1642ba[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x229320,null))['then'](function(_0x442383){if(_0x442383){_0x16ef1a[_0x2eed('0x41')]=_['keys'](db[_0x2eed('0x88')][_0x2eed('0x3e')]);_0x16ef1a[_0x2eed('0x42')]=_['keys'](_0x1642ba[_0x2eed('0x42')]);_0x16ef1a['filters']=_[_0x2eed('0x44')](_0x16ef1a[_0x2eed('0x41')],_0x16ef1a['query']);_0x242007[_0x2eed('0x46')]=_[_0x2eed('0x44')](_0x16ef1a['model'],qs[_0x2eed('0x45')](_0x1642ba[_0x2eed('0x42')][_0x2eed('0x45')]));_0x242007[_0x2eed('0x46')]=_0x242007[_0x2eed('0x46')]['length']?_0x242007[_0x2eed('0x46')]:_0x16ef1a['model'];if(!_0x1642ba['query']['hasOwnProperty'](_0x2eed('0x49'))){_0x242007[_0x2eed('0x2d')]=qs[_0x2eed('0x2d')](_0x1642ba[_0x2eed('0x42')][_0x2eed('0x2d')]);_0x242007[_0x2eed('0x2b')]=qs[_0x2eed('0x2b')](_0x1642ba[_0x2eed('0x42')][_0x2eed('0x2b')]);}_0x242007[_0x2eed('0x4a')]=qs[_0x2eed('0x4b')](_0x1642ba[_0x2eed('0x42')]['sort']);_0x242007[_0x2eed('0x4d')]=qs['filters'](_[_0x2eed('0x63')](_0x1642ba['query'],_0x16ef1a['filters']));_0x242007[_0x2eed('0x4d')][_0x2eed('0x5e')]=_0x442383['id'];if(_0x1642ba[_0x2eed('0x42')][_0x2eed('0x50')]){_0x242007[_0x2eed('0x4d')]=_[_0x2eed('0x4e')](_0x242007['where'],{'$or':_[_0x2eed('0x3c')](_0x242007[_0x2eed('0x46')],function(_0x3faa81){var _0x5ce792={};_0x5ce792[_0x3faa81]={'$like':'%'+_0x1642ba[_0x2eed('0x42')][_0x2eed('0x50')]+'%'};return _0x5ce792;})});}_0x242007=_['merge']({},_0x242007,_0x1642ba[_0x2eed('0x51')]);return db['MailInteraction'][_0x2eed('0x2e')]({'where':_0x242007[_0x2eed('0x4d')]})['then'](function(_0x1277c3){_0x356844[_0x2eed('0x2e')]=_0x1277c3;if(_0x1642ba[_0x2eed('0x42')][_0x2eed('0x5a')]){_0x242007[_0x2eed('0x52')]=[{'model':db[_0x2eed('0x89')],'as':_0x2eed('0x8a'),'required':![]},{'model':db[_0x2eed('0x8b')],'as':'Owner','attributes':['name',_0x2eed('0x8c'),_0x2eed('0x8d')],'required':![]},{'model':db[_0x2eed('0x8e')],'as':_0x2eed('0x8f'),'attributes':['id',_0x2eed('0x37'),_0x2eed('0x90')],'where':_0x1642ba['query'][_0x2eed('0x91')]?{'id':_0x1642ba[_0x2eed('0x42')][_0x2eed('0x91')]}:undefined,'required':_0x1642ba[_0x2eed('0x42')]['tag']?!![]:![]}];}return db[_0x2eed('0x88')][_0x2eed('0x53')](_0x242007);})[_0x2eed('0x1d')](function(_0x4164f8){_0x356844['rows']=_0x4164f8;return _0x356844;});}})['then'](respondWithFilteredResult(_0x229320,_0x242007))[_0x2eed('0x26')](handleError(_0x229320,null));};exports[_0x2eed('0x92')]=function(_0x45fb27,_0xd4be26,_0x2141cd){return db['MailAccount']['findOne']({'where':{'id':_0x45fb27[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0xd4be26,null))[_0x2eed('0x1d')](function(_0x12791){if(_0x12791){return db[_0x2eed('0x93')][_0x2eed('0x94')](function(_0x188c8c){return db[_0x2eed('0x95')]['destroy']({'where':{'MailAccountId':_0x45fb27[_0x2eed('0x56')]['id']},'transaction':_0x188c8c})[_0x2eed('0x1d')](function(_0x356aa3){var _0x21373a=_[_0x2eed('0x3c')](_0x45fb27[_0x2eed('0x5c')],function(_0x5c5ecd){_0x5c5ecd[_0x2eed('0x5e')]=_0x45fb27['params']['id'];return _0x5c5ecd;});return db[_0x2eed('0x95')][_0x2eed('0x96')](_0x21373a,{'transaction':_0x188c8c});});})[_0x2eed('0x1d')](function(){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x45fb27[_0x2eed('0x56')]['id']},'order':_0x2eed('0x97')});});}})[_0x2eed('0x1d')](respondWithResult(_0xd4be26,null))[_0x2eed('0x26')](handleError(_0xd4be26,null));};exports[_0x2eed('0x98')]=function(_0x63f4af,_0x23508f,_0x515e05){var _0x2dcd6e={};var _0xd10a13={};var _0x3863c9;var _0x342da8;return db['MailAccount'][_0x2eed('0x62')]({'where':{'id':_0x63f4af[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x23508f,null))['then'](function(_0x26bdc3){if(_0x26bdc3){_0x3863c9=_0x26bdc3;_0xd10a13['model']=_['keys'](db['MailApplication'][_0x2eed('0x3e')]);_0xd10a13['query']=_[_0x2eed('0x43')](_0x63f4af[_0x2eed('0x42')]);_0xd10a13[_0x2eed('0x4c')]=_['intersection'](_0xd10a13[_0x2eed('0x41')],_0xd10a13[_0x2eed('0x42')]);_0x2dcd6e[_0x2eed('0x46')]=_[_0x2eed('0x44')](_0xd10a13[_0x2eed('0x41')],qs[_0x2eed('0x45')](_0x63f4af[_0x2eed('0x42')][_0x2eed('0x45')]));_0x2dcd6e[_0x2eed('0x46')]=_0x2dcd6e[_0x2eed('0x46')][_0x2eed('0x47')]?_0x2dcd6e['attributes']:_0xd10a13['model'];_0x2dcd6e[_0x2eed('0x4a')]=qs['sort'](_0x63f4af[_0x2eed('0x42')]['sort']);_0x2dcd6e[_0x2eed('0x4d')]=qs['filters'](_['pick'](_0x63f4af[_0x2eed('0x42')],_0xd10a13[_0x2eed('0x4c')]));if(_0x63f4af[_0x2eed('0x42')]['filter']){_0x2dcd6e[_0x2eed('0x4d')]=_[_0x2eed('0x4e')](_0x2dcd6e[_0x2eed('0x4d')],{'$or':_[_0x2eed('0x3c')](_0x2dcd6e[_0x2eed('0x46')],function(_0x535b20){var _0x489af7={};_0x489af7[_0x535b20]={'$like':'%'+_0x63f4af[_0x2eed('0x42')][_0x2eed('0x50')]+'%'};return _0x489af7;})});}_0x2dcd6e=_['merge']({},_0x2dcd6e,_0x63f4af[_0x2eed('0x51')]);return _0x3863c9['getApplications'](_0x2dcd6e);}})['then'](function(_0x335655){if(_0x335655){_0x342da8=_0x335655[_0x2eed('0x47')];if(!_0x63f4af[_0x2eed('0x42')][_0x2eed('0x48')]('nolimit')){_0x2dcd6e['limit']=qs[_0x2eed('0x2d')](_0x63f4af[_0x2eed('0x42')][_0x2eed('0x2d')]);_0x2dcd6e[_0x2eed('0x2b')]=qs[_0x2eed('0x2b')](_0x63f4af[_0x2eed('0x42')]['offset']);}return _0x3863c9[_0x2eed('0x98')](_0x2dcd6e);}})[_0x2eed('0x1d')](function(_0x36a86f){if(_0x36a86f){return _0x36a86f?{'count':_0x342da8,'rows':_0x36a86f}:null;}})[_0x2eed('0x1d')](respondWithResult(_0x23508f,null))[_0x2eed('0x26')](handleError(_0x23508f,null));};exports['getMessages']=function(_0x2f3802,_0x367d53,_0x4b2db6){var _0x4c8b62={'raw':!![],'where':{}};var _0x41ecb3={};var _0xb5f08d={'count':0x0,'rows':[]};return db[_0x2eed('0x3d')]['findOne']({'where':{'id':_0x2f3802[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x367d53,null))['then'](function(_0x1e3a09){if(_0x1e3a09){_0x41ecb3['model']=_[_0x2eed('0x43')](db[_0x2eed('0x99')]['rawAttributes']);_0x41ecb3[_0x2eed('0x42')]=_[_0x2eed('0x43')](_0x2f3802[_0x2eed('0x42')]);_0x41ecb3[_0x2eed('0x4c')]=_[_0x2eed('0x44')](_0x41ecb3[_0x2eed('0x41')],_0x41ecb3[_0x2eed('0x42')]);_0x4c8b62[_0x2eed('0x46')]=_[_0x2eed('0x44')](_0x41ecb3[_0x2eed('0x41')],qs['fields'](_0x2f3802['query'][_0x2eed('0x45')]));_0x4c8b62[_0x2eed('0x46')]=_0x4c8b62[_0x2eed('0x46')]['length']?_0x4c8b62[_0x2eed('0x46')]:_0x41ecb3[_0x2eed('0x41')];if(!_0x2f3802[_0x2eed('0x42')]['hasOwnProperty'](_0x2eed('0x49'))){_0x4c8b62[_0x2eed('0x2d')]=qs[_0x2eed('0x2d')](_0x2f3802[_0x2eed('0x42')][_0x2eed('0x2d')]);_0x4c8b62[_0x2eed('0x2b')]=qs['offset'](_0x2f3802[_0x2eed('0x42')][_0x2eed('0x2b')]);}_0x4c8b62[_0x2eed('0x4a')]=qs[_0x2eed('0x4b')](_0x2f3802['query'][_0x2eed('0x4b')]);_0x4c8b62[_0x2eed('0x4d')]=qs[_0x2eed('0x4c')](_['pick'](_0x2f3802['query'],_0x41ecb3[_0x2eed('0x4c')]));_0x4c8b62[_0x2eed('0x4d')][_0x2eed('0x5e')]=_0x1e3a09['id'];if(_0x2f3802[_0x2eed('0x42')]['filter']){_0x4c8b62['where']=_[_0x2eed('0x4e')](_0x4c8b62[_0x2eed('0x4d')],{'$or':_[_0x2eed('0x3c')](_0x4c8b62[_0x2eed('0x46')],function(_0xe56b1e){var _0x1f25a4={};_0x1f25a4[_0xe56b1e]={'$like':'%'+_0x2f3802['query'][_0x2eed('0x50')]+'%'};return _0x1f25a4;})});}if(_0x2f3802[_0x2eed('0x42')][_0x2eed('0x9a')]){var _0x152d8f=_0x2f3802['query']['$gte'][_0x2eed('0x9b')](',');var _0x4c6999={};_0x4c6999[_0x152d8f[0x0]]={'$gte':moment(_0x152d8f[0x1])[_0x2eed('0x9c')](_0x2eed('0x9d'))};_0x4c8b62[_0x2eed('0x4d')]=_['merge'](_0x4c8b62['where'],_0x4c6999);}_0x4c8b62=_[_0x2eed('0x4e')]({},_0x4c8b62,_0x2f3802[_0x2eed('0x51')]);return db[_0x2eed('0x99')][_0x2eed('0x2e')]({'where':_0x4c8b62['where']})[_0x2eed('0x1d')](function(_0x219581){_0xb5f08d[_0x2eed('0x2e')]=_0x219581;if(_0x2f3802['query']['includeAll']){_0x4c8b62[_0x2eed('0x52')]=[{'all':!![]}];}return db[_0x2eed('0x99')][_0x2eed('0x53')](_0x4c8b62);})[_0x2eed('0x1d')](function(_0x4ef2d4){if(_0x2f3802['query'][_0x2eed('0x9e')]===_0x2eed('0x9f')){for(var _0x7e2def=0x0;_0x7e2def<_0x4ef2d4[_0x2eed('0x47')];_0x7e2def++){_0x4ef2d4[_0x7e2def]['body']=juice(_0x4ef2d4[_0x7e2def][_0x2eed('0x5c')]);}}_0xb5f08d[_0x2eed('0x54')]=_0x4ef2d4;return _0xb5f08d;});}})[_0x2eed('0x1d')](respondWithFilteredResult(_0x367d53,_0x4c8b62))[_0x2eed('0x26')](handleError(_0x367d53,null));};exports[_0x2eed('0x38')]=function(_0x2454c4,_0x3b1436,_0x432ca8){var _0x5b0f76,_0x441194={},_0xebbb20;if(_0x2454c4[_0x2eed('0x5c')]['to']){_0xebbb20=_0x2454c4[_0x2eed('0x5c')]['to']['split'](',')[0x0];}return db['MailAccount'][_0x2eed('0x5b')]({'where':{'id':_0x2454c4[_0x2eed('0x56')]['id']},'include':[{'model':db[_0x2eed('0xa0')],'as':_0x2eed('0xa1'),'include':[{'model':db[_0x2eed('0x89')],'as':'Contacts','where':{'email':_0xebbb20},'limit':0x1,'order':[[_0x2eed('0xa2'),_0x2eed('0xa3')]]}]},{'model':db[_0x2eed('0x39')],'as':_0x2eed('0x59'),'raw':!![]}]})[_0x2eed('0x1d')](handleEntityNotFound(_0x3b1436,null))[_0x2eed('0x1d')](function(_0x38133e){if(_0x38133e){_0x5b0f76=_0x38133e;if(_0x38133e[_0x2eed('0x59')]){if(_['isNil'](_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xa4')])){_0x2454c4[_0x2eed('0x5c')]['from']=util[_0x2eed('0x9c')](_0x2eed('0xa5'),_0x38133e[_0x2eed('0x37')],_0x38133e[_0x2eed('0x6b')]||_0x38133e[_0x2eed('0x59')][_0x2eed('0x71')]);}if(_0x2454c4[_0x2eed('0x5c')]['attachments']&&_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xa6')][_0x2eed('0x47')]){for(var _0x2b7fb0=0x0;_0x2b7fb0<_0x2454c4[_0x2eed('0x5c')]['attachments'][_0x2eed('0x47')];_0x2b7fb0+=0x1){_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xa6')][_0x2b7fb0]={'filename':_0x2454c4['body']['attachments'][_0x2b7fb0]['name'],'path':path[_0x2eed('0xa7')](config[_0x2eed('0xa8')],'server/files/attachments',_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xa6')][_0x2b7fb0][_0x2eed('0xa9')])};}}var _0x7ad940={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x38133e[_0x2eed('0x59')][_0x2eed('0x77')])){if(_0x38133e[_0x2eed('0x59')][_0x2eed('0xaa')]){_0x7ad940[_0x2eed('0xab')]={'user':_0x38133e[_0x2eed('0x59')][_0x2eed('0x71')],'pass':_0x38133e[_0x2eed('0x59')][_0x2eed('0x78')]};}_0x7ad940[_0x2eed('0x75')]=_0x38133e[_0x2eed('0x59')][_0x2eed('0x75')];_0x7ad940[_0x2eed('0x76')]=_0x38133e[_0x2eed('0x59')]['port'];_0x7ad940[_0x2eed('0xac')]=_0x38133e[_0x2eed('0x59')][_0x2eed('0xac')];}else{_0x7ad940[_0x2eed('0x77')]=_0x38133e[_0x2eed('0x59')][_0x2eed('0x77')];_0x7ad940[_0x2eed('0xab')]={'user':_0x38133e['Smtp'][_0x2eed('0x71')],'pass':_0x38133e[_0x2eed('0x59')][_0x2eed('0x78')]};}return respondWithRpcPromise('SendMail',_0x2eed('0xad'),{'account':_0x7ad940,'message':_0x2454c4[_0x2eed('0x5c')]});}else{throw new Error(_0x2eed('0xae'));}}})['then'](function(_0x4aa113){if(_0x4aa113){_0x441194=_0x4aa113;if(_0x5b0f76[_0x2eed('0xa1')]){if(_0x5b0f76[_0x2eed('0xa1')][_0x2eed('0xaf')]['length']){return _0x5b0f76[_0x2eed('0xa1')][_0x2eed('0xaf')][0x0];}else{return db['CmContact'][_0x2eed('0x60')](_['defaults'](_0x2454c4[_0x2eed('0x5c')],{'firstName':_0x2454c4[_0x2eed('0x5c')]['to'],'email':_0x2454c4[_0x2eed('0x5c')]['to'],'phone':_0x2454c4[_0x2eed('0x5c')]['to'],'ListId':_0x5b0f76[_0x2eed('0x6c')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0x2eed('0x1d')](function(_0x4a57c6){if(_0x4a57c6){var _0x1925eb={'UserId':_0x2454c4['user']['id'],'ContactId':_0x4a57c6['id'],'MailAccountId':_0x5b0f76['id'],'inReplyTo':_0x441194[_0x2eed('0xb0')],'to':_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xa4')],'cc':_0x2454c4['body']['cc'],'subject':_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xb1')],'attach':_0x2454c4['body'][_0x2eed('0xb2')],'firstMsgDirection':_0x2eed('0xb3'),'lastMsgAt':moment()['format'](_0x2eed('0x9d')),'lastMsgDirection':_0x2eed('0xb3'),'Messages':[_[_0x2eed('0x4e')](_0x2454c4[_0x2eed('0x5c')],{'messageId':_0x441194['messageId'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x5b0f76['id'],'UserId':_0x2454c4[_0x2eed('0x71')]['id'],'ContactId':_0x4a57c6['id']})]};if(_0x2454c4[_0x2eed('0x5c')][_0x2eed('0xb4')]){_0x1925eb=_['merge'](_0x1925eb,_0x2454c4['body'][_0x2eed('0xb4')]);}return db[_0x2eed('0x88')][_0x2eed('0x60')](_0x1925eb,{'include':[{'model':db[_0x2eed('0x99')],'as':_0x2eed('0xb5')}]});}})[_0x2eed('0x1d')](respondWithResult(_0x3b1436,null))[_0x2eed('0x26')](handleError(_0x3b1436,null));};exports[_0x2eed('0xb6')]=function(_0x385f19,_0x43c9a1,_0x34febb){return db['MailAccount']['find']({'where':{'id':_0x385f19[_0x2eed('0x56')]['id']},'include':[{'model':db[_0x2eed('0x39')],'as':_0x2eed('0x59'),'raw':!![]}]})[_0x2eed('0x1d')](handleEntityNotFound(_0x43c9a1,null))[_0x2eed('0x1d')](function(_0x1ea8cb){if(_0x1ea8cb&&_0x1ea8cb[_0x2eed('0x59')]){var _0x3b4918={'id':_0x1ea8cb['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0x77')]){_0x3b4918['service']=_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0x77')];}else{_0x3b4918[_0x2eed('0x75')]=_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0x75')];_0x3b4918[_0x2eed('0x76')]=_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0x76')];_0x3b4918[_0x2eed('0xac')]=_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0xac')];}if(_0x1ea8cb[_0x2eed('0x59')]['authentication']){_0x3b4918['auth']={'user':_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0x71')],'pass':_0x1ea8cb[_0x2eed('0x59')][_0x2eed('0x78')]};}return respondWithRpcPromise(_0x2eed('0xb7'),_0x2eed('0xb6'),{'account':_0x3b4918});}})[_0x2eed('0x1d')](respondWithResult(_0x43c9a1,null))['catch'](handleError(_0x43c9a1,null));};exports[_0x2eed('0x35')]=function(_0x101af7,_0x115cce){return db[_0x2eed('0x3d')][_0x2eed('0x5b')]({'where':{'id':_0x101af7['params']['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x115cce,null))[_0x2eed('0x1d')](function(_0x35d59e){if(_0x35d59e&&_0x35d59e[_0x2eed('0x77')]){throw new db[(_0x2eed('0xb8'))]['ValidationError'](_0x2eed('0xb9'));}return _0x35d59e;})['then'](removeEntity(_0x115cce,null))[_0x2eed('0x26')](handleError(_0x115cce,null));};exports['addAgents']=function(_0x369079,_0x2ba034,_0x5a259e){return db[_0x2eed('0x3d')][_0x2eed('0x5b')]({'where':{'id':_0x369079[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x2ba034,null))['then'](function(_0x327889){if(_0x327889){return _0x327889['addAgents'](_0x369079[_0x2eed('0x5c')][_0x2eed('0x65')],_['omit'](_0x369079[_0x2eed('0x5c')],[_0x2eed('0x65'),'id'])||{})['spread'](function(_0x45c7d8){for(var _0x8fdea3=0x0;_0x8fdea3<_0x369079[_0x2eed('0x5c')][_0x2eed('0x65')]['length'];_0x8fdea3+=0x1){socket[_0x2eed('0xba')](_0x2eed('0xbb'),{'UserId':Number(_0x369079[_0x2eed('0x5c')][_0x2eed('0x65')][_0x8fdea3]),'MailAccountId':Number(_0x369079[_0x2eed('0x56')]['id'])});}return _0x45c7d8;});}})[_0x2eed('0x1d')](respondWithResult(_0x2ba034,null))[_0x2eed('0x26')](handleError(_0x2ba034,null));};exports[_0x2eed('0xbc')]=function(_0x594341,_0x28b3e8,_0x91ae9){return db['MailAccount'][_0x2eed('0x5b')]({'where':{'id':_0x594341[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x28b3e8,null))[_0x2eed('0x1d')](function(_0x486f85){if(_0x486f85){return _0x486f85[_0x2eed('0xbc')](_0x594341[_0x2eed('0x42')][_0x2eed('0x65')])[_0x2eed('0x1d')](function(){if(_[_0x2eed('0xbd')](_0x594341[_0x2eed('0x42')][_0x2eed('0x65')])){for(var _0x4bd41a=0x0;_0x4bd41a<_0x594341[_0x2eed('0x42')][_0x2eed('0x65')]['length'];_0x4bd41a+=0x1){socket[_0x2eed('0xba')](_0x2eed('0xbe'),{'UserId':Number(_0x594341['query'][_0x2eed('0x65')][_0x4bd41a]),'MailAccountId':Number(_0x594341['params']['id'])});}}else{socket[_0x2eed('0xba')](_0x2eed('0xbe'),{'UserId':Number(_0x594341[_0x2eed('0x42')]['ids']),'MailAccountId':Number(_0x594341[_0x2eed('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x28b3e8,null))['catch'](handleError(_0x28b3e8,null));};exports[_0x2eed('0xbf')]=function(_0x12c2f4,_0x2ab295,_0x3f0b82){var _0x14d280={};var _0x4c4b46={};var _0x5f5293;var _0x11607e;return db[_0x2eed('0x3d')]['findOne']({'where':{'id':_0x12c2f4[_0x2eed('0x56')]['id']}})[_0x2eed('0x1d')](handleEntityNotFound(_0x2ab295,null))[_0x2eed('0x1d')](function(_0x41dd81){if(_0x41dd81){_0x5f5293=_0x41dd81;_0x4c4b46[_0x2eed('0x41')]=_['keys'](db['User'][_0x2eed('0x3e')]);_0x4c4b46[_0x2eed('0x42')]=_[_0x2eed('0x43')](_0x12c2f4[_0x2eed('0x42')]);_0x4c4b46[_0x2eed('0x4c')]=_['intersection'](_0x4c4b46[_0x2eed('0x41')],_0x4c4b46[_0x2eed('0x42')]);_0x14d280[_0x2eed('0x46')]=_[_0x2eed('0x44')](_0x4c4b46[_0x2eed('0x41')],qs[_0x2eed('0x45')](_0x12c2f4[_0x2eed('0x42')][_0x2eed('0x45')]));_0x14d280['attributes']=_0x14d280[_0x2eed('0x46')][_0x2eed('0x47')]?_0x14d280[_0x2eed('0x46')]:_0x4c4b46[_0x2eed('0x41')];_0x14d280[_0x2eed('0x4a')]=qs[_0x2eed('0x4b')](_0x12c2f4[_0x2eed('0x42')][_0x2eed('0x4b')]);_0x14d280['where']=qs[_0x2eed('0x4c')](_[_0x2eed('0x63')](_0x12c2f4[_0x2eed('0x42')],_0x4c4b46['filters']));if(_0x12c2f4[_0x2eed('0x42')]['filter']){_0x14d280[_0x2eed('0x4d')]=_[_0x2eed('0x4e')](_0x14d280['where'],{'$or':_['map'](_0x14d280[_0x2eed('0x46')],function(_0x203b18){var _0x4c227b={};_0x4c227b[_0x203b18]={'$like':'%'+_0x12c2f4[_0x2eed('0x42')][_0x2eed('0x50')]+'%'};return _0x4c227b;})});}_0x14d280=_[_0x2eed('0x4e')]({},_0x14d280,_0x12c2f4[_0x2eed('0x51')]);return _0x5f5293[_0x2eed('0xbf')](_0x14d280);}})['then'](function(_0x241da7){if(_0x241da7){_0x11607e=_0x241da7['length'];if(!_0x12c2f4['query'][_0x2eed('0x48')]('nolimit')){_0x14d280['limit']=qs['limit'](_0x12c2f4['query'][_0x2eed('0x2d')]);_0x14d280[_0x2eed('0x2b')]=qs[_0x2eed('0x2b')](_0x12c2f4['query'][_0x2eed('0x2b')]);}return _0x5f5293[_0x2eed('0xbf')](_0x14d280);}})[_0x2eed('0x1d')](function(_0x2a33d0){if(_0x2a33d0){return _0x2a33d0?{'count':_0x11607e,'rows':_0x2a33d0}:null;}})[_0x2eed('0x1d')](respondWithResult(_0x2ab295,null))[_0x2eed('0x26')](handleError(_0x2ab295,null));};
\ No newline at end of file
index 23debcb..59d0f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e5b=['../../mysqldb','MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0xee2819,_0x9036df){var _0x18c00f=function(_0x4f39d0){while(--_0x4f39d0){_0xee2819['push'](_0xee2819['shift']());}};_0x18c00f(++_0x9036df);}(_0x7e5b,0x9f));var _0xb7e5=function(_0x140e59,_0x590ed3){_0x140e59=_0x140e59-0x0;var _0x127259=_0x7e5b[_0x140e59];return _0x127259;};'use strict';var EventEmitter=require(_0xb7e5('0x0'));var MailAccount=require(_0xb7e5('0x1'))['db'][_0xb7e5('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xb7e5('0x3')](0x0);var events={'afterCreate':_0xb7e5('0x4'),'afterUpdate':_0xb7e5('0x5'),'afterDestroy':_0xb7e5('0x6')};function emitEvent(_0x3a1842){return function(_0x45d5c6,_0x5a5f75,_0x5e6c7d){MailAccountEvents[_0xb7e5('0x7')](_0x3a1842+':'+_0x45d5c6['id'],_0x45d5c6);MailAccountEvents[_0xb7e5('0x7')](_0x3a1842,_0x45d5c6);_0x5e6c7d(null);};}for(var e in events){if(events[_0xb7e5('0x8')](e)){var event=events[e];MailAccount[_0xb7e5('0x9')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0xc16d=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount','setMaxListeners','save'];(function(_0x1c72c7,_0x131686){var _0x5ce1b6=function(_0xcff6ce){while(--_0xcff6ce){_0x1c72c7['push'](_0x1c72c7['shift']());}};_0x5ce1b6(++_0x131686);}(_0xc16d,0x145));var _0xdc16=function(_0x18eb68,_0x3d7d45){_0x18eb68=_0x18eb68-0x0;var _0x46599e=_0xc16d[_0x18eb68];return _0x46599e;};'use strict';var EventEmitter=require(_0xdc16('0x0'));var MailAccount=require(_0xdc16('0x1'))['db'][_0xdc16('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xdc16('0x3')](0x0);var events={'afterCreate':_0xdc16('0x4'),'afterUpdate':_0xdc16('0x5'),'afterDestroy':_0xdc16('0x6')};function emitEvent(_0x5d9149){return function(_0x5806fe,_0x1beaa1,_0x1da17e){MailAccountEvents[_0xdc16('0x7')](_0x5d9149+':'+_0x5806fe['id'],_0x5806fe);MailAccountEvents[_0xdc16('0x7')](_0x5d9149,_0x5806fe);_0x1da17e(null);};}for(var e in events){if(events[_0xdc16('0x8')](e)){var event=events[e];MailAccount[_0xdc16('0x9')](e,emitEvent(event));}}module[_0xdc16('0xa')]=MailAccountEvents;
\ No newline at end of file
index 84b08ec..254e01c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40f3=['path','rimraf','../../config/environment','./mailAccount.attributes','define','MailAccount','lodash','api','moment','bluebird','request-promise'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x40f3,0x145));var _0x340f=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0x40f3[_0x44946b];return _0x249bc4;};'use strict';var _=require(_0x340f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x340f('0x1'));var moment=require(_0x340f('0x2'));var BPromise=require(_0x340f('0x3'));var rp=require(_0x340f('0x4'));var fs=require('fs');var path=require(_0x340f('0x5'));var rimraf=require(_0x340f('0x6'));var config=require(_0x340f('0x7'));var attributes=require(_0x340f('0x8'));module['exports']=function(_0xf11c54,_0x13a450){return _0xf11c54[_0x340f('0x9')](_0x340f('0xa'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb1f=['rimraf','../../config/environment','./mailAccount.attributes','define','mail_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x449a67,_0x3f971f){var _0x3f1011=function(_0x369e0a){while(--_0x369e0a){_0x449a67['push'](_0x449a67['shift']());}};_0x3f1011(++_0x3f971f);}(_0xdb1f,0x155));var _0xfdb1=function(_0x3dfb63,_0x1972a2){_0x3dfb63=_0x3dfb63-0x0;var _0x4062d3=_0xdb1f[_0x3dfb63];return _0x4062d3;};'use strict';var _=require(_0xfdb1('0x0'));var util=require(_0xfdb1('0x1'));var logger=require(_0xfdb1('0x2'))('api');var moment=require(_0xfdb1('0x3'));var BPromise=require(_0xfdb1('0x4'));var rp=require(_0xfdb1('0x5'));var fs=require('fs');var path=require(_0xfdb1('0x6'));var rimraf=require(_0xfdb1('0x7'));var config=require(_0xfdb1('0x8'));var attributes=require(_0xfdb1('0x9'));module['exports']=function(_0x5b5867,_0x5e036d){return _0x5b5867[_0xfdb1('0xa')]('MailAccount',attributes,{'tableName':_0xfdb1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d90750..f3c2f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d31=['MailServerOut','Smtp','List','get','omit','applications','orderBy','priority','asc','autoclose','push','length','close','List\x20not\x20found','contact','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','MailInteraction','create','spread','interaction','created','subject','attachments','originTo','originCc','ChatWebsiteId','Email','ChatOfflineMessageId','unshift','agent','*,*,*,*','Start','startRouting','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MailAccount','findAll','options','raw','where','attributes','include','map','model','then','GetMailAccount','ShowMailAccount','find','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','Contacts','DESC','MailApplication','Applications'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x3d31,0x1bb));var _0x13d3=function(_0x324032,_0x5bc85a){_0x324032=_0x324032-0x0;var _0x5ec4d8=_0x3d31[_0x324032];return _0x5ec4d8;};'use strict';var _=require(_0x13d3('0x0'));var util=require(_0x13d3('0x1'));var moment=require(_0x13d3('0x2'));var BPromise=require('bluebird');var rs=require(_0x13d3('0x3'));var fs=require('fs');var Redis=require(_0x13d3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x13d3('0x5'));var logger=require(_0x13d3('0x6'))(_0x13d3('0x7'));var config=require(_0x13d3('0x8'));var jayson=require(_0x13d3('0x9'));var client=jayson[_0x13d3('0xa')]['http']({'port':0x232c});config[_0x13d3('0xb')]=_[_0x13d3('0xc')](config[_0x13d3('0xb')],{'host':_0x13d3('0xd'),'port':0x18eb});var socket=require(_0x13d3('0xe'))(new Redis(config[_0x13d3('0xb')]));require(_0x13d3('0xf'))['register'](socket);function respondWithRpcPromise(_0x249035,_0x3e0811,_0x2c484c){return new BPromise(function(_0x56741f,_0x434d4a){return client[_0x13d3('0x10')](_0x249035,_0x2c484c)['then'](function(_0x29af3a){logger[_0x13d3('0x11')](_0x13d3('0x12'),_0x3e0811,_0x13d3('0x13'));logger[_0x13d3('0x14')](_0x13d3('0x15'),_0x3e0811,_0x13d3('0x13'),JSON[_0x13d3('0x16')](_0x29af3a));if(_0x29af3a[_0x13d3('0x17')]){if(_0x29af3a[_0x13d3('0x17')][_0x13d3('0x18')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x3e0811,_0x29af3a[_0x13d3('0x17')][_0x13d3('0x19')]);return _0x434d4a(_0x29af3a[_0x13d3('0x17')]['message']);}logger[_0x13d3('0x17')](_0x13d3('0x12'),_0x3e0811,_0x29af3a['error'][_0x13d3('0x19')]);return _0x56741f(_0x29af3a[_0x13d3('0x17')]['message']);}else{logger[_0x13d3('0x11')](_0x13d3('0x12'),_0x3e0811,_0x13d3('0x13'));_0x56741f(_0x29af3a[_0x13d3('0x1a')][_0x13d3('0x19')]);}})[_0x13d3('0x1b')](function(_0x3ebf37){logger[_0x13d3('0x17')](_0x13d3('0x12'),_0x3e0811,_0x3ebf37);_0x434d4a(_0x3ebf37);});});}exports['GetMailAccount']=function(_0x5d5cc0){var _0x197790=this;return new Promise(function(_0x126384,_0x5d6e66){return db[_0x13d3('0x1c')][_0x13d3('0x1d')]({'raw':_0x5d5cc0['options']?_0x5d5cc0[_0x13d3('0x1e')][_0x13d3('0x1f')]===undefined?!![]:![]:!![],'where':_0x5d5cc0[_0x13d3('0x1e')]?_0x5d5cc0['options'][_0x13d3('0x20')]||null:null,'attributes':_0x5d5cc0[_0x13d3('0x1e')]?_0x5d5cc0['options'][_0x13d3('0x21')]||null:null,'limit':_0x5d5cc0[_0x13d3('0x1e')]?_0x5d5cc0['options']['limit']||null:null,'include':_0x5d5cc0[_0x13d3('0x1e')]?_0x5d5cc0[_0x13d3('0x1e')][_0x13d3('0x22')]?_[_0x13d3('0x23')](_0x5d5cc0['options'][_0x13d3('0x22')],function(_0x5978d4){return{'model':db[_0x5978d4[_0x13d3('0x24')]],'as':_0x5978d4['as'],'attributes':_0x5978d4[_0x13d3('0x21')],'include':_0x5978d4[_0x13d3('0x22')]?_[_0x13d3('0x23')](_0x5978d4[_0x13d3('0x22')],function(_0x3616db){return{'model':db[_0x3616db['model']],'as':_0x3616db['as'],'attributes':_0x3616db[_0x13d3('0x21')],'include':_0x3616db['include']?_[_0x13d3('0x23')](_0x3616db[_0x13d3('0x22')],function(_0x135f79){return{'model':db[_0x135f79[_0x13d3('0x24')]],'as':_0x135f79['as'],'attributes':_0x135f79[_0x13d3('0x21')]};}):[]};}):[]};}):[]:[]})[_0x13d3('0x25')](function(_0xd89216){logger['info'](_0x13d3('0x26'),_0x5d5cc0);logger[_0x13d3('0x14')](_0x13d3('0x26'),_0x5d5cc0,JSON['stringify'](_0xd89216));_0x126384(_0xd89216);})[_0x13d3('0x1b')](function(_0x53d534){logger[_0x13d3('0x17')]('GetMailAccount',_0x53d534[_0x13d3('0x19')],_0x5d5cc0);_0x5d6e66(_0x197790[_0x13d3('0x17')](0x1f4,_0x53d534['message']));});});};exports[_0x13d3('0x27')]=function(_0x3db0b8){var _0x21512a=this;return new Promise(function(_0xc77457,_0x387e9c){return db[_0x13d3('0x1c')][_0x13d3('0x28')]({'raw':_0x3db0b8[_0x13d3('0x1e')]?_0x3db0b8['options']['raw']===undefined?!![]:![]:!![],'where':_0x3db0b8[_0x13d3('0x1e')]?_0x3db0b8[_0x13d3('0x1e')][_0x13d3('0x20')]||null:null,'attributes':_0x3db0b8[_0x13d3('0x1e')]?_0x3db0b8[_0x13d3('0x1e')][_0x13d3('0x21')]||null:null,'include':_0x3db0b8[_0x13d3('0x1e')]?_0x3db0b8['options'][_0x13d3('0x22')]?_['map'](_0x3db0b8[_0x13d3('0x1e')][_0x13d3('0x22')],function(_0x1ce452){return{'model':db[_0x1ce452['model']],'as':_0x1ce452['as'],'attributes':_0x1ce452[_0x13d3('0x21')],'include':_0x1ce452['include']?_[_0x13d3('0x23')](_0x1ce452['include'],function(_0x2bd605){return{'model':db[_0x2bd605[_0x13d3('0x24')]],'as':_0x2bd605['as'],'attributes':_0x2bd605[_0x13d3('0x21')],'include':_0x2bd605['include']?_[_0x13d3('0x23')](_0x2bd605[_0x13d3('0x22')],function(_0x54ac60){return{'model':db[_0x54ac60[_0x13d3('0x24')]],'as':_0x54ac60['as'],'attributes':_0x54ac60[_0x13d3('0x21')]};}):[]};}):[]};}):[]:[]})[_0x13d3('0x25')](function(_0x356635){logger[_0x13d3('0x11')](_0x13d3('0x27'),_0x3db0b8);logger[_0x13d3('0x14')](_0x13d3('0x27'),_0x3db0b8,JSON[_0x13d3('0x16')](_0x356635));_0xc77457(_0x356635);})[_0x13d3('0x1b')](function(_0x340a53){logger[_0x13d3('0x17')](_0x13d3('0x27'),_0x340a53[_0x13d3('0x19')],_0x3db0b8);_0x387e9c(_0x21512a['error'](0x1f4,_0x340a53[_0x13d3('0x19')]));});});};exports[_0x13d3('0x29')]=function(_0x4e2b52){var _0x372efd=this;return new Promise(function(_0x1ede16,_0x43e2a7){var _0x471e2c={'body':_0x4e2b52[_0x13d3('0x2a')],'channel':_0x13d3('0x2b')};var _0x1cc71c=_[_0x13d3('0x2c')](_[_0x13d3('0x2d')](db[_0x13d3('0x2e')]['rawAttributes']),['createdAt',_0x13d3('0x2f'),_0x13d3('0x30'),_0x13d3('0x31')]);var _0x5a1786=![];if(_0x4e2b52[_0x13d3('0x2a')]['id']){delete _0x4e2b52['body']['id'];}if(_[_0x13d3('0x32')](_0x4e2b52['body'][_0x13d3('0x33')])){return _0x43e2a7(_0x372efd['error'](0x1f4,_0x13d3('0x34')));}if(_[_0x13d3('0x32')](_0x4e2b52[_0x13d3('0x2a')]['body'])||_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x2a')]===''){return _0x43e2a7(_0x372efd[_0x13d3('0x17')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x13d3('0x32')](_0x4e2b52[_0x13d3('0x2a')]['mapKey'])){return _0x43e2a7(_0x372efd['error'](0x1f4,_0x13d3('0x35')+_0x1cc71c));}if(!_['includes'](_0x1cc71c,_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x36')])){return _0x43e2a7(_0x372efd[_0x13d3('0x17')](0x1f4,_0x13d3('0x37')+_0x1cc71c));}var _0x900a0d={};_0x900a0d[_0x4e2b52['body'][_0x13d3('0x36')]]=_0x4e2b52['body'][_0x13d3('0x33')];return db[_0x13d3('0x1c')][_0x13d3('0x28')]({'where':{'id':_0x4e2b52[_0x13d3('0x38')]['id']},'include':[{'model':db[_0x13d3('0x39')],'as':'List','include':[{'model':db[_0x13d3('0x2e')],'as':_0x13d3('0x3a'),'where':_0x900a0d,'limit':0x1,'order':[['updatedAt',_0x13d3('0x3b')]]}]},{'model':db[_0x13d3('0x3c')],'as':_0x13d3('0x3d')},{'model':db[_0x13d3('0x3e')],'as':_0x13d3('0x3f')}]})[_0x13d3('0x25')](function(_0x33e939){if(_0x33e939&&_0x33e939[_0x13d3('0x40')]){var _0x455875=_0x33e939[_0x13d3('0x41')]({'plain':!![]});_0x471e2c[_0x13d3('0x38')]=_[_0x13d3('0x42')](_0x455875,[_0x13d3('0x3d'),_0x13d3('0x40')]);_0x471e2c[_0x13d3('0x43')]=_0x455875[_0x13d3('0x3d')];_0x471e2c['list']=_0x455875[_0x13d3('0x40')];_0x471e2c[_0x13d3('0x43')]=_[_0x13d3('0x44')](_0x471e2c[_0x13d3('0x43')],[_0x13d3('0x45')],[_0x13d3('0x46')]);if(_0x471e2c['account']&&_0x471e2c['account'][_0x13d3('0x47')]){_0x471e2c[_0x13d3('0x43')][_0x13d3('0x48')]({'id':0x0,'priority':_0x471e2c[_0x13d3('0x43')][_0x13d3('0x49')]+0x1,'app':_0x13d3('0x4a'),'appdata':_0x13d3('0x47'),'interval':'*,*,*,*'});}if(_0x471e2c[_0x13d3('0x38')][_0x13d3('0x3d')]){delete _0x471e2c['account']['Applications'];}if(_0x471e2c[_0x13d3('0x38')][_0x13d3('0x40')]){delete _0x471e2c[_0x13d3('0x38')]['List'];}if(_0x455875[_0x13d3('0x40')][_0x13d3('0x3a')]['length']){return _0x455875[_0x13d3('0x40')][_0x13d3('0x3a')][0x0];}var _0xb4864a=_[_0x13d3('0xc')](_0x4e2b52['body'],{'firstName':_0x4e2b52['body'][_0x13d3('0x33')],'ListId':_0x455875[_0x13d3('0x31')]});_0xb4864a[_0x4e2b52[_0x13d3('0x2a')]['mapKey']]=_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x33')];return db[_0x13d3('0x2e')]['create'](_0xb4864a);}else{throw new Error(_0x13d3('0x4b'));}})['then'](function(_0x704b40){_0x471e2c[_0x13d3('0x4c')]=_0x704b40;if(_0x704b40){if(!_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x4d')]){_0x4e2b52['body'][_0x13d3('0x19')][_0x13d3('0x4d')]=rs[_0x13d3('0x4e')]()+'\x20'+_0x4e2b52[_0x13d3('0x2a')]['message'][_0x13d3('0x33')];}var _0x4b4f08={'ContactId':_0x704b40['id'],'MailAccountId':_0x4e2b52[_0x13d3('0x38')]['id'],'inReplyTo':_0x4e2b52[_0x13d3('0x2a')]['message'][_0x13d3('0x4d')],'to':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['from'],'cc':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['cc'],'subject':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['subject'],'attach':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x4f')],'lastMsgAt':moment()[_0x13d3('0x50')](_0x13d3('0x51')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x13d3('0x28')]({'where':{'closed':![],'MailAccountId':_0x4e2b52[_0x13d3('0x38')]['id']},'include':[{'model':db[_0x13d3('0x52')],'as':_0x13d3('0x53'),'attributes':[_0x13d3('0x4d')],'where':{'messageId':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['inReplyTo']}}]})[_0x13d3('0x25')](function(_0x5782aa){if(_0x5782aa){return[_0x5782aa,![]];}return db[_0x13d3('0x54')][_0x13d3('0x55')](_0x4b4f08)[_0x13d3('0x25')](function(_0xcbc371){return[_0xcbc371,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x13d3('0x56')](function(_0x212800,_0x26161f){if(_0x212800){_0x5a1786=_0x26161f;if(!_0x26161f){return _0x212800['update']({'inReplyTo':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x4d')],'to':_0x4e2b52['body'][_0x13d3('0x19')][_0x13d3('0x33')],'cc':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['cc'],'subject':_0x4e2b52['body'][_0x13d3('0x19')]['subject'],'attach':_0x212800[_0x13d3('0x4f')]?_0x212800[_0x13d3('0x4f')]:_0x4e2b52['body'][_0x13d3('0x19')][_0x13d3('0x4f')],'substatus':null,'substatusAt':moment()[_0x13d3('0x50')](_0x13d3('0x51')),'lastMsgAt':moment()['format'](_0x13d3('0x51')),'lastMsgDirection':'in'});}else{return _0x212800;}}})[_0x13d3('0x25')](function(_0x45a01b){_0x471e2c[_0x13d3('0x57')]=_0x45a01b[_0x13d3('0x41')]({'plain':!![]});_0x471e2c[_0x13d3('0x57')][_0x13d3('0x58')]=_0x5a1786;return db[_0x13d3('0x52')][_0x13d3('0x55')]({'body':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x2a')],'MailAccountId':_0x4e2b52[_0x13d3('0x38')]['id'],'MailInteractionId':_0x45a01b['id'],'direction':'in','ContactId':_0x471e2c['contact']['id'],'messageId':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x4d')],'from':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x33')],'to':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['to'],'cc':_0x4e2b52['body'][_0x13d3('0x19')]['cc'],'subject':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x59')],'attach':_0x4e2b52['body'][_0x13d3('0x19')][_0x13d3('0x4f')],'Attachments':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x5a')],'originTo':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x5b')],'originCc':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x5c')],'bcc':_0x4e2b52[_0x13d3('0x2a')]['message']['bcc'],'ChatWebsiteId':_0x4e2b52[_0x13d3('0x2a')]['message'][_0x13d3('0x5d')]||null,'originChannel':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')]['originChannel']||_0x13d3('0x5e'),'ChatOfflineMessageId':_0x4e2b52[_0x13d3('0x2a')][_0x13d3('0x19')][_0x13d3('0x5f')]||null},{'include':[{'model':db['Attachment'],'as':'Attachments'}]});})[_0x13d3('0x25')](function(_0x3b1cb0){_0x471e2c[_0x13d3('0x19')]=_0x3b1cb0;if(_0x471e2c[_0x13d3('0x57')]['UserId']){return db['User'][_0x13d3('0x28')]({'attributes':['id','name'],'where':{'id':_0x471e2c[_0x13d3('0x57')]['UserId']}})[_0x13d3('0x25')](function(_0x1d9e52){if(_0x1d9e52){_0x471e2c[_0x13d3('0x43')][_0x13d3('0x60')]({'id':0x0,'priority':0x0,'app':_0x13d3('0x61'),'appdata':_0x1d9e52['name']+','+(_0x471e2c['account']['waitForTheAssignedAgent']||0xa),'interval':_0x13d3('0x62')});}return respondWithRpcPromise(_0x13d3('0x63'),_0x13d3('0x64'),_0x471e2c);});}return respondWithRpcPromise(_0x13d3('0x63'),_0x13d3('0x64'),_0x471e2c);})[_0x13d3('0x25')](function(_0x3a2869){_0x1ede16(_0x3a2869);})['catch'](function(_0x3fd63c){_0x43e2a7(_0x372efd['error'](0x1f4,_0x3fd63c[_0x13d3('0x19')]));});});};
\ No newline at end of file
+var _0x145d=['autoclose','push','length','close','*,*,*,*','ListId','create','generate','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','interaction','created','contact','originTo','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','socket.io-emitter','register','request','then','info','MailAccount,\x20%s,\x20%s','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','map','include','model','debug','find','ShowMailAccount','body','mail','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','MailApplication','Applications','MailServerOut','Smtp','get','omit','applications','list','orderBy','priority','account'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x145d,0x15f));var _0xd145=function(_0x13209e,_0x450537){_0x13209e=_0x13209e-0x0;var _0x7443d2=_0x145d[_0x13209e];return _0x7443d2;};'use strict';var _=require(_0xd145('0x0'));var util=require(_0xd145('0x1'));var moment=require(_0xd145('0x2'));var BPromise=require('bluebird');var rs=require(_0xd145('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd145('0x4'))['db'];var utils=require(_0xd145('0x5'));var logger=require(_0xd145('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd145('0x7'));var client=jayson['client'][_0xd145('0x8')]({'port':0x232c});config[_0xd145('0x9')]=_[_0xd145('0xa')](config[_0xd145('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xd145('0xb'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xd145('0xc')](socket);function respondWithRpcPromise(_0xf96d95,_0x380520,_0x1e34d7){return new BPromise(function(_0x359b56,_0x34cdd9){return client[_0xd145('0xd')](_0xf96d95,_0x1e34d7)[_0xd145('0xe')](function(_0x1ffc48){logger[_0xd145('0xf')](_0xd145('0x10'),_0x380520,'request\x20sent');logger['debug'](_0xd145('0x11'),_0x380520,_0xd145('0x12'),JSON[_0xd145('0x13')](_0x1ffc48));if(_0x1ffc48[_0xd145('0x14')]){if(_0x1ffc48[_0xd145('0x14')]['code']===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x380520,_0x1ffc48[_0xd145('0x14')][_0xd145('0x15')]);return _0x34cdd9(_0x1ffc48[_0xd145('0x14')][_0xd145('0x15')]);}logger[_0xd145('0x14')](_0xd145('0x10'),_0x380520,_0x1ffc48[_0xd145('0x14')][_0xd145('0x15')]);return _0x359b56(_0x1ffc48['error'][_0xd145('0x15')]);}else{logger[_0xd145('0xf')](_0xd145('0x10'),_0x380520,_0xd145('0x12'));_0x359b56(_0x1ffc48[_0xd145('0x16')][_0xd145('0x15')]);}})[_0xd145('0x17')](function(_0x1407e1){logger[_0xd145('0x14')](_0xd145('0x10'),_0x380520,_0x1407e1);_0x34cdd9(_0x1407e1);});});}exports[_0xd145('0x18')]=function(_0x405940){var _0xf7bc44=this;return new Promise(function(_0x6b2acf,_0x41db59){return db[_0xd145('0x19')][_0xd145('0x1a')]({'raw':_0x405940[_0xd145('0x1b')]?_0x405940[_0xd145('0x1b')][_0xd145('0x1c')]===undefined?!![]:![]:!![],'where':_0x405940[_0xd145('0x1b')]?_0x405940[_0xd145('0x1b')][_0xd145('0x1d')]||null:null,'attributes':_0x405940['options']?_0x405940[_0xd145('0x1b')][_0xd145('0x1e')]||null:null,'limit':_0x405940[_0xd145('0x1b')]?_0x405940[_0xd145('0x1b')][_0xd145('0x1f')]||null:null,'include':_0x405940['options']?_0x405940[_0xd145('0x1b')]['include']?_[_0xd145('0x20')](_0x405940[_0xd145('0x1b')][_0xd145('0x21')],function(_0x3e532f){return{'model':db[_0x3e532f[_0xd145('0x22')]],'as':_0x3e532f['as'],'attributes':_0x3e532f[_0xd145('0x1e')],'include':_0x3e532f[_0xd145('0x21')]?_['map'](_0x3e532f[_0xd145('0x21')],function(_0x55b9b0){return{'model':db[_0x55b9b0[_0xd145('0x22')]],'as':_0x55b9b0['as'],'attributes':_0x55b9b0[_0xd145('0x1e')],'include':_0x55b9b0[_0xd145('0x21')]?_[_0xd145('0x20')](_0x55b9b0[_0xd145('0x21')],function(_0x778d8){return{'model':db[_0x778d8[_0xd145('0x22')]],'as':_0x778d8['as'],'attributes':_0x778d8[_0xd145('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e3d9e){logger['info'](_0xd145('0x18'),_0x405940);logger[_0xd145('0x23')]('GetMailAccount',_0x405940,JSON[_0xd145('0x13')](_0x2e3d9e));_0x6b2acf(_0x2e3d9e);})[_0xd145('0x17')](function(_0x3f2b55){logger[_0xd145('0x14')](_0xd145('0x18'),_0x3f2b55['message'],_0x405940);_0x41db59(_0xf7bc44[_0xd145('0x14')](0x1f4,_0x3f2b55[_0xd145('0x15')]));});});};exports['ShowMailAccount']=function(_0x2529b1){var _0x26c105=this;return new Promise(function(_0x214542,_0x598cf8){return db[_0xd145('0x19')][_0xd145('0x24')]({'raw':_0x2529b1[_0xd145('0x1b')]?_0x2529b1['options'][_0xd145('0x1c')]===undefined?!![]:![]:!![],'where':_0x2529b1['options']?_0x2529b1[_0xd145('0x1b')][_0xd145('0x1d')]||null:null,'attributes':_0x2529b1['options']?_0x2529b1[_0xd145('0x1b')]['attributes']||null:null,'include':_0x2529b1[_0xd145('0x1b')]?_0x2529b1['options']['include']?_[_0xd145('0x20')](_0x2529b1[_0xd145('0x1b')][_0xd145('0x21')],function(_0x5a4e1d){return{'model':db[_0x5a4e1d[_0xd145('0x22')]],'as':_0x5a4e1d['as'],'attributes':_0x5a4e1d[_0xd145('0x1e')],'include':_0x5a4e1d[_0xd145('0x21')]?_[_0xd145('0x20')](_0x5a4e1d[_0xd145('0x21')],function(_0x2caddd){return{'model':db[_0x2caddd[_0xd145('0x22')]],'as':_0x2caddd['as'],'attributes':_0x2caddd['attributes'],'include':_0x2caddd[_0xd145('0x21')]?_['map'](_0x2caddd[_0xd145('0x21')],function(_0x341684){return{'model':db[_0x341684[_0xd145('0x22')]],'as':_0x341684['as'],'attributes':_0x341684['attributes']};}):[]};}):[]};}):[]:[]})[_0xd145('0xe')](function(_0x2b1d34){logger[_0xd145('0xf')]('ShowMailAccount',_0x2529b1);logger[_0xd145('0x23')](_0xd145('0x25'),_0x2529b1,JSON[_0xd145('0x13')](_0x2b1d34));_0x214542(_0x2b1d34);})[_0xd145('0x17')](function(_0x1656c0){logger[_0xd145('0x14')]('ShowMailAccount',_0x1656c0[_0xd145('0x15')],_0x2529b1);_0x598cf8(_0x26c105['error'](0x1f4,_0x1656c0[_0xd145('0x15')]));});});};exports['NotifyMailAccount']=function(_0x1aa22f){var _0x1bbc24=this;return new Promise(function(_0x4b4ec5,_0x14826){var _0x3cefe2={'body':_0x1aa22f[_0xd145('0x26')],'channel':_0xd145('0x27')};var _0x4d957c=_[_0xd145('0x28')](_['keys'](db[_0xd145('0x29')][_0xd145('0x2a')]),[_0xd145('0x2b'),_0xd145('0x2c'),_0xd145('0x2d'),'ListId']);var _0x481e4f=![];if(_0x1aa22f['body']['id']){delete _0x1aa22f[_0xd145('0x26')]['id'];}if(_[_0xd145('0x2e')](_0x1aa22f[_0xd145('0x26')][_0xd145('0x2f')])){return _0x14826(_0x1bbc24[_0xd145('0x14')](0x1f4,_0xd145('0x30')));}if(_['isNil'](_0x1aa22f[_0xd145('0x26')][_0xd145('0x26')])||_0x1aa22f[_0xd145('0x26')]['body']===''){return _0x14826(_0x1bbc24[_0xd145('0x14')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xd145('0x2e')](_0x1aa22f['body']['mapKey'])){return _0x14826(_0x1bbc24[_0xd145('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4d957c));}if(!_[_0xd145('0x31')](_0x4d957c,_0x1aa22f[_0xd145('0x26')][_0xd145('0x32')])){return _0x14826(_0x1bbc24[_0xd145('0x14')](0x1f4,_0xd145('0x33')+_0x4d957c));}var _0x251f6c={};_0x251f6c[_0x1aa22f['body'][_0xd145('0x32')]]=_0x1aa22f['body'][_0xd145('0x2f')];return db[_0xd145('0x19')]['find']({'where':{'id':_0x1aa22f['account']['id']},'include':[{'model':db['CmList'],'as':_0xd145('0x34'),'include':[{'model':db[_0xd145('0x29')],'as':'Contacts','where':_0x251f6c,'limit':0x1,'order':[[_0xd145('0x2c'),_0xd145('0x35')]]}]},{'model':db[_0xd145('0x36')],'as':_0xd145('0x37')},{'model':db[_0xd145('0x38')],'as':_0xd145('0x39')}]})[_0xd145('0xe')](function(_0x3f30a6){if(_0x3f30a6&&_0x3f30a6[_0xd145('0x34')]){var _0x4614ed=_0x3f30a6[_0xd145('0x3a')]({'plain':!![]});_0x3cefe2['account']=_[_0xd145('0x3b')](_0x4614ed,['Applications',_0xd145('0x34')]);_0x3cefe2[_0xd145('0x3c')]=_0x4614ed[_0xd145('0x37')];_0x3cefe2[_0xd145('0x3d')]=_0x4614ed[_0xd145('0x34')];_0x3cefe2[_0xd145('0x3c')]=_[_0xd145('0x3e')](_0x3cefe2['applications'],[_0xd145('0x3f')],['asc']);if(_0x3cefe2['account']&&_0x3cefe2[_0xd145('0x40')][_0xd145('0x41')]){_0x3cefe2['applications'][_0xd145('0x42')]({'id':0x0,'priority':_0x3cefe2[_0xd145('0x3c')][_0xd145('0x43')]+0x1,'app':_0xd145('0x44'),'appdata':_0xd145('0x41'),'interval':_0xd145('0x45')});}if(_0x3cefe2[_0xd145('0x40')][_0xd145('0x37')]){delete _0x3cefe2[_0xd145('0x40')]['Applications'];}if(_0x3cefe2['account']['List']){delete _0x3cefe2[_0xd145('0x40')][_0xd145('0x34')];}if(_0x4614ed['List']['Contacts'][_0xd145('0x43')]){return _0x4614ed[_0xd145('0x34')]['Contacts'][0x0];}var _0x4413c8=_[_0xd145('0xa')](_0x1aa22f[_0xd145('0x26')],{'firstName':_0x1aa22f[_0xd145('0x26')][_0xd145('0x2f')],'ListId':_0x4614ed[_0xd145('0x46')]});_0x4413c8[_0x1aa22f[_0xd145('0x26')][_0xd145('0x32')]]=_0x1aa22f[_0xd145('0x26')][_0xd145('0x2f')];return db['CmContact'][_0xd145('0x47')](_0x4413c8);}else{throw new Error('List\x20not\x20found');}})[_0xd145('0xe')](function(_0x19e672){_0x3cefe2['contact']=_0x19e672;if(_0x19e672){if(!_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')]['messageId']){_0x1aa22f['body']['message']['messageId']=rs[_0xd145('0x48')]()+'\x20'+_0x1aa22f[_0xd145('0x26')]['message'][_0xd145('0x2f')];}var _0x62f44f={'ContactId':_0x19e672['id'],'MailAccountId':_0x1aa22f[_0xd145('0x40')]['id'],'inReplyTo':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x49')],'to':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x2f')],'cc':_0x1aa22f['body'][_0xd145('0x15')]['cc'],'subject':_0x1aa22f['body'][_0xd145('0x15')][_0xd145('0x4a')],'attach':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x4b')],'lastMsgAt':moment()[_0xd145('0x4c')](_0xd145('0x4d')),'lastMsgDirection':'in'};return db[_0xd145('0x4e')][_0xd145('0x24')]({'where':{'closed':![],'MailAccountId':_0x1aa22f[_0xd145('0x40')]['id']},'include':[{'model':db[_0xd145('0x4f')],'as':_0xd145('0x50'),'attributes':[_0xd145('0x49')],'where':{'messageId':_0x1aa22f['body'][_0xd145('0x15')][_0xd145('0x51')]}}]})[_0xd145('0xe')](function(_0x4ff097){if(_0x4ff097){return[_0x4ff097,![]];}return db[_0xd145('0x4e')][_0xd145('0x47')](_0x62f44f)[_0xd145('0xe')](function(_0x54565d){return[_0x54565d,!![]];});});}else{throw new Error(_0xd145('0x52'));}})[_0xd145('0x53')](function(_0x190b0b,_0x59cbaa){if(_0x190b0b){_0x481e4f=_0x59cbaa;if(!_0x59cbaa){return _0x190b0b[_0xd145('0x54')]({'inReplyTo':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x49')],'to':_0x1aa22f['body'][_0xd145('0x15')][_0xd145('0x2f')],'cc':_0x1aa22f['body']['message']['cc'],'subject':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x4a')],'attach':_0x190b0b[_0xd145('0x4b')]?_0x190b0b[_0xd145('0x4b')]:_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x4b')],'substatus':null,'substatusAt':moment()[_0xd145('0x4c')](_0xd145('0x4d')),'lastMsgAt':moment()[_0xd145('0x4c')](_0xd145('0x4d')),'lastMsgDirection':'in'});}else{return _0x190b0b;}}})['then'](function(_0x48dcce){_0x3cefe2['interaction']=_0x48dcce['get']({'plain':!![]});_0x3cefe2[_0xd145('0x55')][_0xd145('0x56')]=_0x481e4f;return db['MailMessage']['create']({'body':_0x1aa22f[_0xd145('0x26')]['body'],'MailAccountId':_0x1aa22f[_0xd145('0x40')]['id'],'MailInteractionId':_0x48dcce['id'],'direction':'in','ContactId':_0x3cefe2[_0xd145('0x57')]['id'],'messageId':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')]['messageId'],'from':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')]['from'],'to':_0x1aa22f['body']['message']['to'],'cc':_0x1aa22f['body'][_0xd145('0x15')]['cc'],'subject':_0x1aa22f['body'][_0xd145('0x15')][_0xd145('0x4a')],'attach':_0x1aa22f['body'][_0xd145('0x15')][_0xd145('0x4b')],'Attachments':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')]['attachments'],'originTo':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x58')],'originCc':_0x1aa22f[_0xd145('0x26')]['message']['originCc'],'bcc':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x59')],'ChatWebsiteId':_0x1aa22f[_0xd145('0x26')][_0xd145('0x15')][_0xd145('0x5a')]||null,'originChannel':_0x1aa22f[_0xd145('0x26')]['message'][_0xd145('0x5b')]||_0xd145('0x5c'),'ChatOfflineMessageId':_0x1aa22f['body'][_0xd145('0x15')][_0xd145('0x5d')]||null},{'include':[{'model':db[_0xd145('0x5e')],'as':_0xd145('0x5f')}]});})[_0xd145('0xe')](function(_0x3ae7c1){_0x3cefe2[_0xd145('0x15')]=_0x3ae7c1;if(_0x3cefe2[_0xd145('0x55')][_0xd145('0x60')]){return db[_0xd145('0x61')]['find']({'attributes':['id',_0xd145('0x62')],'where':{'id':_0x3cefe2[_0xd145('0x55')][_0xd145('0x60')]}})[_0xd145('0xe')](function(_0x16c24e){if(_0x16c24e){_0x3cefe2['applications'][_0xd145('0x63')]({'id':0x0,'priority':0x0,'app':_0xd145('0x64'),'appdata':_0x16c24e[_0xd145('0x62')]+','+(_0x3cefe2[_0xd145('0x40')][_0xd145('0x65')]||0xa),'interval':_0xd145('0x45')});}return respondWithRpcPromise(_0xd145('0x66'),'startRouting',_0x3cefe2);});}return respondWithRpcPromise(_0xd145('0x66'),_0xd145('0x67'),_0x3cefe2);})[_0xd145('0xe')](function(_0x57da8e){_0x4b4ec5(_0x57da8e);})['catch'](function(_0x5e4cab){_0x14826(_0x1bbc24[_0xd145('0x14')](0x1f4,_0x5e4cab[_0xd145('0x15')]));});});};
\ No newline at end of file
index f1a4a56..5cb3e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf19d=['length','mailAccount:','./mailAccount.events','remove','removeListener','register'];(function(_0xb2b1a6,_0x5f3d13){var _0x5b8db3=function(_0x4835aa){while(--_0x4835aa){_0xb2b1a6['push'](_0xb2b1a6['shift']());}};_0x5b8db3(++_0x5f3d13);}(_0xf19d,0x110));var _0xdf19=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0xf19d[_0x5416db];return _0x243e35;};'use strict';var MailAccountEvents=require(_0xdf19('0x0'));var events=['save',_0xdf19('0x1'),'update'];function createListener(_0xb28de9,_0x5b0cf9){return function(_0x4b35f1){_0x5b0cf9['emit'](_0xb28de9,_0x4b35f1);};}function removeListener(_0x8410e6,_0x265a1f){return function(){MailAccountEvents[_0xdf19('0x2')](_0x8410e6,_0x265a1f);};}exports[_0xdf19('0x3')]=function(_0x255524){for(var _0x1e8905=0x0,_0x2fdd7b=events[_0xdf19('0x4')];_0x1e8905<_0x2fdd7b;_0x1e8905++){var _0xf0f58d=events[_0x1e8905];var _0x4a013b=createListener(_0xdf19('0x5')+_0xf0f58d,_0x255524);MailAccountEvents['on'](_0xf0f58d,_0x4a013b);}};
\ No newline at end of file
+var _0xdd4e=['save','update','emit','removeListener','mailAccount:','./mailAccount.events'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xdd4e,0x1af));var _0xedd4=function(_0x32c012,_0xe3c576){_0x32c012=_0x32c012-0x0;var _0x48562e=_0xdd4e[_0x32c012];return _0x48562e;};'use strict';var MailAccountEvents=require(_0xedd4('0x0'));var events=[_0xedd4('0x1'),'remove',_0xedd4('0x2')];function createListener(_0xe90f41,_0x290bd4){return function(_0x4c3f6e){_0x290bd4[_0xedd4('0x3')](_0xe90f41,_0x4c3f6e);};}function removeListener(_0x78fac0,_0x29ae59){return function(){MailAccountEvents[_0xedd4('0x4')](_0x78fac0,_0x29ae59);};}exports['register']=function(_0x539f73){for(var _0x5f5500=0x0,_0x3c114b=events['length'];_0x5f5500<_0x3c114b;_0x5f5500++){var _0x10cddf=events[_0x5f5500];var _0x2a7b2a=createListener(_0xedd4('0x5')+_0x10cddf,_0x539f73);MailAccountEvents['on'](_0x10cddf,_0x2a7b2a);}};
\ No newline at end of file
index d9d9c4d..5bc3022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5bf=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','update','delete','destroy','exports','util','path'];(function(_0x40d8d7,_0x30dd5e){var _0x3454cc=function(_0x512c1b){while(--_0x512c1b){_0x40d8d7['push'](_0x40d8d7['shift']());}};_0x3454cc(++_0x30dd5e);}(_0xd5bf,0x15e));var _0xfd5b=function(_0x2f8633,_0x4e3442){_0x2f8633=_0x2f8633-0x0;var _0x218099=_0xd5bf[_0x2f8633];return _0x218099;};'use strict';var multer=require('multer');var util=require(_0xfd5b('0x0'));var path=require(_0xfd5b('0x1'));var timeout=require(_0xfd5b('0x2'));var express=require(_0xfd5b('0x3'));var router=express['Router']();var fs_extra=require(_0xfd5b('0x4'));var auth=require(_0xfd5b('0x5'));var interaction=require(_0xfd5b('0x6'));var config=require(_0xfd5b('0x7'));var controller=require('./mailApplication.controller');router[_0xfd5b('0x8')](_0xfd5b('0x9'),auth[_0xfd5b('0xa')](),controller[_0xfd5b('0xb')]);router['put'](_0xfd5b('0x9'),auth[_0xfd5b('0xa')](),controller[_0xfd5b('0xc')]);router[_0xfd5b('0xd')](_0xfd5b('0x9'),auth[_0xfd5b('0xa')](),controller[_0xfd5b('0xe')]);module[_0xfd5b('0xf')]=router;
\ No newline at end of file
+var _0xcac6=['../../components/interaction/service','./mailApplication.controller','/:id','isAuthenticated','show','put','update','delete','multer','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x282a50,_0x1dbcb9){var _0x4c1212=function(_0x4065ed){while(--_0x4065ed){_0x282a50['push'](_0x282a50['shift']());}};_0x4c1212(++_0x1dbcb9);}(_0xcac6,0x1c8));var _0x6cac=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xcac6[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x6cac('0x0'));var util=require('util');var path=require(_0x6cac('0x1'));var timeout=require(_0x6cac('0x2'));var express=require(_0x6cac('0x3'));var router=express[_0x6cac('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6cac('0x5'));var interaction=require(_0x6cac('0x6'));var config=require('../../config/environment');var controller=require(_0x6cac('0x7'));router['get'](_0x6cac('0x8'),auth[_0x6cac('0x9')](),controller[_0x6cac('0xa')]);router[_0x6cac('0xb')](_0x6cac('0x8'),auth[_0x6cac('0x9')](),controller[_0x6cac('0xc')]);router[_0x6cac('0xd')](_0x6cac('0x8'),auth[_0x6cac('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9b01fde..5590deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89e9=['*,*,*,*','sequelize','INTEGER','STRING','TEXT'];(function(_0x5aab37,_0x402e54){var _0x171055=function(_0xcbb3c3){while(--_0xcbb3c3){_0x5aab37['push'](_0x5aab37['shift']());}};_0x171055(++_0x402e54);}(_0x89e9,0x15f));var _0x989e=function(_0x268dad,_0x260046){_0x268dad=_0x268dad-0x0;var _0xf24c33=_0x89e9[_0x268dad];return _0xf24c33;};'use strict';var Sequelize=require(_0x989e('0x0'));module['exports']={'priority':{'type':Sequelize[_0x989e('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x989e('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x989e('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x989e('0x2')],'defaultValue':_0x989e('0x4')}};
\ No newline at end of file
+var _0xa389=['noop','TEXT','sequelize','exports','INTEGER','STRING'];(function(_0xaad24a,_0x1c7172){var _0x32df5b=function(_0x9550ac){while(--_0x9550ac){_0xaad24a['push'](_0xaad24a['shift']());}};_0x32df5b(++_0x1c7172);}(_0xa389,0x1d6));var _0x9a38=function(_0x202302,_0x4247fb){_0x202302=_0x202302-0x0;var _0x68489c=_0xa389[_0x202302];return _0x68489c;};'use strict';var Sequelize=require(_0x9a38('0x0'));module[_0x9a38('0x1')]={'priority':{'type':Sequelize[_0x9a38('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x9a38('0x3')],'allowNull':![],'defaultValue':_0x9a38('0x4')},'appdata':{'type':Sequelize[_0x9a38('0x5')]()},'description':{'type':Sequelize[_0x9a38('0x3')]},'interval':{'type':Sequelize[_0x9a38('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index b684f34..c007f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['limit','count','set','apply','reject','then','stack','name','send','params','model','keys','MailApplication','query','filters','intersection','attributes','fields','length','include','merge','options','find','update','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa88,0x137));var _0x8aa8=function(_0x4e4f0e,_0x1c3892){_0x4e4f0e=_0x4e4f0e-0x0;var _0x1a7219=_0xaa88[_0x4e4f0e];return _0x1a7219;};'use strict';var emlformat=require(_0x8aa8('0x0'));var rimraf=require(_0x8aa8('0x1'));var zipdir=require(_0x8aa8('0x2'));var jsonpatch=require(_0x8aa8('0x3'));var rp=require('request-promise');var moment=require(_0x8aa8('0x4'));var BPromise=require(_0x8aa8('0x5'));var Mustache=require(_0x8aa8('0x6'));var util=require(_0x8aa8('0x7'));var path=require(_0x8aa8('0x8'));var sox=require(_0x8aa8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8aa8('0xa'));var _=require('lodash');var squel=require(_0x8aa8('0xb'));var crypto=require(_0x8aa8('0xc'));var jsforce=require(_0x8aa8('0xd'));var deskjs=require(_0x8aa8('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8aa8('0xf'));var Papa=require(_0x8aa8('0x10'));var Redis=require(_0x8aa8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8aa8('0x12'));var as=require(_0x8aa8('0x13'));var hardwareService=require(_0x8aa8('0x14'));var logger=require(_0x8aa8('0x15'))('api');var utils=require(_0x8aa8('0x16'));var config=require(_0x8aa8('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8aa8('0x18'))['db'];function respondWithStatusCode(_0xa691d6,_0x28132f){_0x28132f=_0x28132f||0xcc;return function(_0x535aa0){if(_0x535aa0){return _0xa691d6[_0x8aa8('0x19')](_0x28132f);}return _0xa691d6[_0x8aa8('0x1a')](_0x28132f)[_0x8aa8('0x1b')]();};}function respondWithResult(_0x4b686e,_0x391642){_0x391642=_0x391642||0xc8;return function(_0x4af534){if(_0x4af534){return _0x4b686e['status'](_0x391642)[_0x8aa8('0x1c')](_0x4af534);}};}function respondWithFilteredResult(_0x200662,_0xae81a0){return function(_0xa6c2af){if(_0xa6c2af){var _0x42a6a4=typeof _0xae81a0[_0x8aa8('0x1d')]===_0x8aa8('0x1e')&&typeof _0xae81a0[_0x8aa8('0x1f')]===_0x8aa8('0x1e');var _0x4e8ce3=_0xa6c2af['count'];var _0x2c1b9a=_0x42a6a4?0x0:_0xae81a0['offset'];var _0x557adc=_0x42a6a4?_0xa6c2af[_0x8aa8('0x20')]:_0xae81a0['offset']+_0xae81a0[_0x8aa8('0x1f')];var _0x41092b;if(_0x557adc>=_0x4e8ce3){_0x557adc=_0x4e8ce3;_0x41092b=0xc8;}else{_0x41092b=0xce;}_0x200662[_0x8aa8('0x1a')](_0x41092b);return _0x200662[_0x8aa8('0x21')]('Content-Range',_0x2c1b9a+'-'+_0x557adc+'/'+_0x4e8ce3)[_0x8aa8('0x1c')](_0xa6c2af);}return null;};}function patchUpdates(_0x36c445){return function(_0x2825fd){try{jsonpatch[_0x8aa8('0x22')](_0x2825fd,_0x36c445,!![]);}catch(_0x4c754e){return BPromise[_0x8aa8('0x23')](_0x4c754e);}return _0x2825fd['save']();};}function saveUpdates(_0x26cf63,_0x4cc455){return function(_0x1fdadd){if(_0x1fdadd){return _0x1fdadd['update'](_0x26cf63)[_0x8aa8('0x24')](function(_0x557e4e){return _0x557e4e;});}return null;};}function removeEntity(_0x65945b,_0x40adb5){return function(_0x3ca7dc){if(_0x3ca7dc){return _0x3ca7dc['destroy']()[_0x8aa8('0x24')](function(){_0x65945b[_0x8aa8('0x1a')](0xcc)[_0x8aa8('0x1b')]();});}};}function handleEntityNotFound(_0x547a7b,_0x57acd2){return function(_0x2d1508){if(!_0x2d1508){_0x547a7b[_0x8aa8('0x19')](0x194);}return _0x2d1508;};}function handleError(_0x2f91f3,_0x3a3c7a){_0x3a3c7a=_0x3a3c7a||0x1f4;return function(_0x24143e){logger['error'](_0x24143e[_0x8aa8('0x25')]);if(_0x24143e['name']){delete _0x24143e[_0x8aa8('0x26')];}_0x2f91f3[_0x8aa8('0x1a')](_0x3a3c7a)[_0x8aa8('0x27')](_0x24143e);};}exports['show']=function(_0x4c5c5c,_0x10810d){var _0x5e96c9={'raw':!![],'where':{'id':_0x4c5c5c[_0x8aa8('0x28')]['id']}},_0x385208={};_0x385208[_0x8aa8('0x29')]=_[_0x8aa8('0x2a')](db[_0x8aa8('0x2b')]['rawAttributes']);_0x385208[_0x8aa8('0x2c')]=_[_0x8aa8('0x2a')](_0x4c5c5c['query']);_0x385208[_0x8aa8('0x2d')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],_0x385208['query']);_0x5e96c9[_0x8aa8('0x2f')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],qs[_0x8aa8('0x30')](_0x4c5c5c[_0x8aa8('0x2c')][_0x8aa8('0x30')]));_0x5e96c9[_0x8aa8('0x2f')]=_0x5e96c9[_0x8aa8('0x2f')][_0x8aa8('0x31')]?_0x5e96c9[_0x8aa8('0x2f')]:_0x385208[_0x8aa8('0x29')];if(_0x4c5c5c['query']['includeAll']){_0x5e96c9[_0x8aa8('0x32')]=[{'all':!![]}];}_0x5e96c9=_[_0x8aa8('0x33')]({},_0x5e96c9,_0x4c5c5c[_0x8aa8('0x34')]);return db[_0x8aa8('0x2b')][_0x8aa8('0x35')](_0x5e96c9)[_0x8aa8('0x24')](handleEntityNotFound(_0x10810d,null))['then'](respondWithResult(_0x10810d,null))['catch'](handleError(_0x10810d,null));};exports[_0x8aa8('0x36')]=function(_0x5755b5,_0x24997c){if(_0x5755b5[_0x8aa8('0x37')]['id']){delete _0x5755b5[_0x8aa8('0x37')]['id'];}return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x5755b5[_0x8aa8('0x28')]['id']}})[_0x8aa8('0x24')](handleEntityNotFound(_0x24997c,null))['then'](saveUpdates(_0x5755b5['body'],null))[_0x8aa8('0x24')](respondWithResult(_0x24997c,null))[_0x8aa8('0x38')](handleError(_0x24997c,null));};exports['destroy']=function(_0x24eb18,_0x2e1f52){return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x24eb18['params']['id']}})['then'](handleEntityNotFound(_0x2e1f52,null))[_0x8aa8('0x24')](removeEntity(_0x2e1f52,null))['catch'](handleError(_0x2e1f52,null));};
\ No newline at end of file
+var _0x9c44=['Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','show','params','model','keys','MailApplication','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','then','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x4b1475,_0x41bf4c){var _0x3153e6=function(_0x185eac){while(--_0x185eac){_0x4b1475['push'](_0x4b1475['shift']());}};_0x3153e6(++_0x41bf4c);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={'raw':!![],'where':{'id':_0x5987ae[_0x49c4('0x29')]['id']}},_0x46e04d={};_0x46e04d[_0x49c4('0x2a')]=_[_0x49c4('0x2b')](db[_0x49c4('0x2c')][_0x49c4('0x2d')]);_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2b')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d['filters']=_['intersection'](_0x46e04d['model'],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x2f')]=_[_0x49c4('0x30')](_0x46e04d[_0x49c4('0x2a')],qs[_0x49c4('0x31')](_0x5987ae['query'][_0x49c4('0x31')]));_0x2b2793[_0x49c4('0x2f')]=_0x2b2793[_0x49c4('0x2f')][_0x49c4('0x32')]?_0x2b2793['attributes']:_0x46e04d['model'];if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x33')]){_0x2b2793[_0x49c4('0x34')]=[{'all':!![]}];}_0x2b2793=_[_0x49c4('0x35')]({},_0x2b2793,_0x5987ae[_0x49c4('0x36')]);return db['MailApplication'][_0x49c4('0x37')](_0x2b2793)[_0x49c4('0x38')](handleEntityNotFound(_0x889909,null))[_0x49c4('0x38')](respondWithResult(_0x889909,null))['catch'](handleError(_0x889909,null));};exports['update']=function(_0x85dce2,_0x1991e9){if(_0x85dce2[_0x49c4('0x39')]['id']){delete _0x85dce2[_0x49c4('0x39')]['id'];}return db[_0x49c4('0x2c')][_0x49c4('0x37')]({'where':{'id':_0x85dce2[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x1991e9,null))[_0x49c4('0x38')](saveUpdates(_0x85dce2['body'],null))[_0x49c4('0x38')](respondWithResult(_0x1991e9,null))['catch'](handleError(_0x1991e9,null));};exports[_0x49c4('0x23')]=function(_0x349791,_0x2625a6){return db[_0x49c4('0x2c')]['find']({'where':{'id':_0x349791[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x2625a6,null))[_0x49c4('0x38')](removeEntity(_0x2625a6,null))['catch'](handleError(_0x2625a6,null));};
\ No newline at end of file
index 4c90efc..7d27a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69e0=['exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','moment','bluebird','rimraf','./mailApplication.attributes'];(function(_0x46a48c,_0x3e9dce){var _0x524f5e=function(_0x2ad015){while(--_0x2ad015){_0x46a48c['push'](_0x46a48c['shift']());}};_0x524f5e(++_0x3e9dce);}(_0x69e0,0x13c));var _0x069e=function(_0x419ec0,_0x7c6c54){_0x419ec0=_0x419ec0-0x0;var _0x2d2b96=_0x69e0[_0x419ec0];return _0x2d2b96;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x069e('0x0'));var BPromise=require(_0x069e('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x069e('0x2'));var config=require('../../config/environment');var attributes=require(_0x069e('0x3'));module[_0x069e('0x4')]=function(_0x54c394,_0x371836){return _0x54c394[_0x069e('0x5')](_0x069e('0x6'),attributes,{'tableName':_0x069e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x069e('0x8'),'collate':_0x069e('0x9')});};
\ No newline at end of file
+var _0xe7cd=['lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','mail_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x50dc14,_0x8a4643){var _0x4a7478=function(_0x12d707){while(--_0x12d707){_0x50dc14['push'](_0x50dc14['shift']());}};_0x4a7478(++_0x8a4643);}(_0xe7cd,0x144));var _0xde7c=function(_0x4482fe,_0xbd4166){_0x4482fe=_0x4482fe-0x0;var _0x2b9f38=_0xe7cd[_0x4482fe];return _0x2b9f38;};'use strict';var _=require(_0xde7c('0x0'));var util=require('util');var logger=require(_0xde7c('0x1'))(_0xde7c('0x2'));var moment=require('moment');var BPromise=require(_0xde7c('0x3'));var rp=require(_0xde7c('0x4'));var fs=require('fs');var path=require(_0xde7c('0x5'));var rimraf=require(_0xde7c('0x6'));var config=require(_0xde7c('0x7'));var attributes=require(_0xde7c('0x8'));module['exports']=function(_0x5e7eee,_0x48713c){return _0x5e7eee['define']('MailApplication',attributes,{'tableName':_0xde7c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xde7c('0xa'),'collate':_0xde7c('0xb')});};
\ No newline at end of file
index 9165386..c3e8a01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a7c=['MailApplication,\x20%s,\x20%s','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','where','attributes','limit','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x97a80f,_0x3d70d7){var _0x534071=function(_0xd8966e){while(--_0xd8966e){_0x97a80f['push'](_0x97a80f['shift']());}};_0x534071(++_0x3d70d7);}(_0x6a7c,0x166));var _0xc6a7=function(_0x1d88c5,_0x3d128f){_0x1d88c5=_0x1d88c5-0x0;var _0x3b4bd6=_0x6a7c[_0x1d88c5];return _0x3b4bd6;};'use strict';var _=require(_0xc6a7('0x0'));var util=require(_0xc6a7('0x1'));var moment=require(_0xc6a7('0x2'));var BPromise=require(_0xc6a7('0x3'));var rs=require(_0xc6a7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc6a7('0x5'))['db'];var utils=require(_0xc6a7('0x6'));var logger=require(_0xc6a7('0x7'))(_0xc6a7('0x8'));var config=require(_0xc6a7('0x9'));var jayson=require(_0xc6a7('0xa'));var client=jayson[_0xc6a7('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32e569,_0x1c4138,_0xec4861){return new BPromise(function(_0x4ffd04,_0x193e40){return client['request'](_0x32e569,_0xec4861)[_0xc6a7('0xc')](function(_0x324c79){logger[_0xc6a7('0xd')](_0xc6a7('0xe'),_0x1c4138,_0xc6a7('0xf'));logger['debug'](_0xc6a7('0x10'),_0x1c4138,_0xc6a7('0xf'),JSON[_0xc6a7('0x11')](_0x324c79));if(_0x324c79[_0xc6a7('0x12')]){if(_0x324c79[_0xc6a7('0x12')]['code']===0x1f4){logger['error'](_0xc6a7('0xe'),_0x1c4138,_0x324c79[_0xc6a7('0x12')][_0xc6a7('0x13')]);return _0x193e40(_0x324c79['error'][_0xc6a7('0x13')]);}logger[_0xc6a7('0x12')](_0xc6a7('0xe'),_0x1c4138,_0x324c79[_0xc6a7('0x12')][_0xc6a7('0x13')]);return _0x4ffd04(_0x324c79[_0xc6a7('0x12')][_0xc6a7('0x13')]);}else{logger[_0xc6a7('0xd')]('MailApplication,\x20%s,\x20%s',_0x1c4138,_0xc6a7('0xf'));_0x4ffd04(_0x324c79[_0xc6a7('0x14')][_0xc6a7('0x13')]);}})[_0xc6a7('0x15')](function(_0x19367b){logger[_0xc6a7('0x12')](_0xc6a7('0xe'),_0x1c4138,_0x19367b);_0x193e40(_0x19367b);});});}exports[_0xc6a7('0x16')]=function(_0x3e4980){var _0x45b7e4=this;return new Promise(function(_0x5f42fb,_0x138f0f){return db[_0xc6a7('0x17')][_0xc6a7('0x18')](_0x3e4980[_0xc6a7('0x19')],{'raw':_0x3e4980[_0xc6a7('0x1a')]?_0x3e4980[_0xc6a7('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e4980[_0xc6a7('0x1a')]?_0x3e4980['options'][_0xc6a7('0x1b')]||null:null,'attributes':_0x3e4980['options']?_0x3e4980[_0xc6a7('0x1a')][_0xc6a7('0x1c')]||null:null,'limit':_0x3e4980[_0xc6a7('0x1a')]?_0x3e4980[_0xc6a7('0x1a')][_0xc6a7('0x1d')]||null:null})[_0xc6a7('0xc')](function(_0x988fb3){logger['info'](_0xc6a7('0x16'),_0x3e4980);logger[_0xc6a7('0x1e')](_0xc6a7('0x16'),_0x3e4980,JSON[_0xc6a7('0x11')](_0x988fb3));_0x5f42fb(_0x988fb3);})[_0xc6a7('0x15')](function(_0x57c186){logger[_0xc6a7('0x12')]('UpdateMailApplication',_0x57c186[_0xc6a7('0x13')],_0x3e4980);_0x138f0f(_0x45b7e4[_0xc6a7('0x12')](0x1f4,_0x57c186[_0xc6a7('0x13')]));});});};
\ No newline at end of file
+var _0x93d8=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','MailApplication','body','raw','options','where','limit','moment','bluebird'];(function(_0x49a1f0,_0x268749){var _0x163dc3=function(_0x122c7a){while(--_0x122c7a){_0x49a1f0['push'](_0x49a1f0['shift']());}};_0x163dc3(++_0x268749);}(_0x93d8,0x8f));var _0x893d=function(_0x547fd1,_0x252930){_0x547fd1=_0x547fd1-0x0;var _0x134897=_0x93d8[_0x547fd1];return _0x134897;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x893d('0x0'));var BPromise=require(_0x893d('0x1'));var rs=require(_0x893d('0x2'));var fs=require('fs');var Redis=require(_0x893d('0x3'));var db=require(_0x893d('0x4'))['db'];var utils=require(_0x893d('0x5'));var logger=require(_0x893d('0x6'))('rpc');var config=require(_0x893d('0x7'));var jayson=require(_0x893d('0x8'));var client=jayson[_0x893d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c9142,_0x34b32a,_0xb21105){return new BPromise(function(_0x4e3d53,_0xf17adf){return client[_0x893d('0xa')](_0x4c9142,_0xb21105)[_0x893d('0xb')](function(_0xcc9ef1){logger[_0x893d('0xc')]('MailApplication,\x20%s,\x20%s',_0x34b32a,_0x893d('0xd'));logger[_0x893d('0xe')](_0x893d('0xf'),_0x34b32a,'request\x20sent',JSON[_0x893d('0x10')](_0xcc9ef1));if(_0xcc9ef1[_0x893d('0x11')]){if(_0xcc9ef1[_0x893d('0x11')]['code']===0x1f4){logger['error'](_0x893d('0x12'),_0x34b32a,_0xcc9ef1['error'][_0x893d('0x13')]);return _0xf17adf(_0xcc9ef1[_0x893d('0x11')]['message']);}logger[_0x893d('0x11')](_0x893d('0x12'),_0x34b32a,_0xcc9ef1[_0x893d('0x11')][_0x893d('0x13')]);return _0x4e3d53(_0xcc9ef1[_0x893d('0x11')]['message']);}else{logger['info'](_0x893d('0x12'),_0x34b32a,_0x893d('0xd'));_0x4e3d53(_0xcc9ef1[_0x893d('0x14')][_0x893d('0x13')]);}})[_0x893d('0x15')](function(_0x3a6e4d){logger['error'](_0x893d('0x12'),_0x34b32a,_0x3a6e4d);_0xf17adf(_0x3a6e4d);});});}exports[_0x893d('0x16')]=function(_0x1200a9){var _0x319d23=this;return new Promise(function(_0x2a248b,_0x51bfa1){return db[_0x893d('0x17')]['update'](_0x1200a9[_0x893d('0x18')],{'raw':_0x1200a9['options']?_0x1200a9['options'][_0x893d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1200a9[_0x893d('0x1a')]?_0x1200a9[_0x893d('0x1a')][_0x893d('0x1b')]||null:null,'attributes':_0x1200a9[_0x893d('0x1a')]?_0x1200a9[_0x893d('0x1a')]['attributes']||null:null,'limit':_0x1200a9['options']?_0x1200a9[_0x893d('0x1a')][_0x893d('0x1c')]||null:null})[_0x893d('0xb')](function(_0x247df6){logger[_0x893d('0xc')](_0x893d('0x16'),_0x1200a9);logger[_0x893d('0xe')](_0x893d('0x16'),_0x1200a9,JSON[_0x893d('0x10')](_0x247df6));_0x2a248b(_0x247df6);})[_0x893d('0x15')](function(_0x3558a8){logger[_0x893d('0x11')](_0x893d('0x16'),_0x3558a8[_0x893d('0x13')],_0x1200a9);_0x51bfa1(_0x319d23[_0x893d('0x11')](0x1f4,_0x3558a8[_0x893d('0x13')]));});});};
\ No newline at end of file
index 7363ded..e27ea5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe096=['/:id','mail','mailinteraction:update','update','destroy','/:id/tags','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','show','/:id/download','post','create','/:id/messages','tracked','mailinteraction:addtags','addTags','put'];(function(_0x132913,_0x1895b3){var _0x30506f=function(_0x5ce740){while(--_0x5ce740){_0x132913['push'](_0x132913['shift']());}};_0x30506f(++_0x1895b3);}(_0xe096,0x1c9));var _0x6e09=function(_0x81e39d,_0x4c3934){_0x81e39d=_0x81e39d-0x0;var _0x548fbb=_0xe096[_0x81e39d];return _0x548fbb;};'use strict';var express=require(_0x6e09('0x0'));var router=express[_0x6e09('0x1')]();var auth=require(_0x6e09('0x2'));var interaction=require(_0x6e09('0x3'));var controller=require(_0x6e09('0x4'));router[_0x6e09('0x5')]('/',auth[_0x6e09('0x6')](),controller[_0x6e09('0x7')]);router[_0x6e09('0x5')](_0x6e09('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x6e09('0x5')]('/:id',auth[_0x6e09('0x6')](),controller[_0x6e09('0x9')]);router[_0x6e09('0x5')]('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0x6e09('0x5')](_0x6e09('0xa'),auth['isAuthenticated'](),controller['download']);router[_0x6e09('0xb')]('/',auth['isAuthenticated'](),controller[_0x6e09('0xc')]);router[_0x6e09('0xb')](_0x6e09('0xd'),auth[_0x6e09('0x6')](),controller['addMessage']);router[_0x6e09('0xb')]('/:id/tags',auth[_0x6e09('0x6')](),interaction[_0x6e09('0xe')]('mail',_0x6e09('0xf')),controller[_0x6e09('0x10')]);router[_0x6e09('0x11')](_0x6e09('0x12'),auth[_0x6e09('0x6')](),interaction[_0x6e09('0xe')](_0x6e09('0x13'),_0x6e09('0x14')),controller[_0x6e09('0x15')]);router['delete'](_0x6e09('0x12'),auth[_0x6e09('0x6')](),interaction[_0x6e09('0xe')](_0x6e09('0x13'),'mailinteraction:destroy'),controller[_0x6e09('0x16')]);router['delete'](_0x6e09('0x17'),auth[_0x6e09('0x6')](),controller[_0x6e09('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xcdd2=['/:id/download','download','post','addMessage','/:id/tags','tracked','mail','addTags','put','/:id','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id/messages','getMessages'];(function(_0x59c279,_0x569642){var _0x3a4fa1=function(_0x3a4a41){while(--_0x3a4a41){_0x59c279['push'](_0x59c279['shift']());}};_0x3a4fa1(++_0x569642);}(_0xcdd2,0xce));var _0x2cdd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcdd2[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x2cdd('0x0'));var router=express[_0x2cdd('0x1')]();var auth=require(_0x2cdd('0x2'));var interaction=require(_0x2cdd('0x3'));var controller=require('./mailInteraction.controller');router[_0x2cdd('0x4')]('/',auth[_0x2cdd('0x5')](),controller[_0x2cdd('0x6')]);router[_0x2cdd('0x4')]('/describe',auth[_0x2cdd('0x5')](),controller[_0x2cdd('0x7')]);router[_0x2cdd('0x4')]('/:id',auth[_0x2cdd('0x5')](),controller['show']);router[_0x2cdd('0x4')](_0x2cdd('0x8'),auth[_0x2cdd('0x5')](),controller[_0x2cdd('0x9')]);router[_0x2cdd('0x4')](_0x2cdd('0xa'),auth[_0x2cdd('0x5')](),controller[_0x2cdd('0xb')]);router[_0x2cdd('0xc')]('/',auth[_0x2cdd('0x5')](),controller['create']);router[_0x2cdd('0xc')]('/:id/messages',auth['isAuthenticated'](),controller[_0x2cdd('0xd')]);router[_0x2cdd('0xc')](_0x2cdd('0xe'),auth[_0x2cdd('0x5')](),interaction[_0x2cdd('0xf')](_0x2cdd('0x10'),'mailinteraction:addtags'),controller[_0x2cdd('0x11')]);router[_0x2cdd('0x12')](_0x2cdd('0x13'),auth[_0x2cdd('0x5')](),interaction['tracked'](_0x2cdd('0x10'),_0x2cdd('0x14')),controller[_0x2cdd('0x15')]);router[_0x2cdd('0x16')](_0x2cdd('0x13'),auth['isAuthenticated'](),interaction[_0x2cdd('0xf')](_0x2cdd('0x10'),_0x2cdd('0x17')),controller[_0x2cdd('0x18')]);router['delete']('/:id/tags',auth[_0x2cdd('0x5')](),controller[_0x2cdd('0x19')]);module[_0x2cdd('0x1a')]=router;
\ No newline at end of file
index 9098f43..5a7b0af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec82=['long','DATE','out','ENUM','sequelize','BOOLEAN','STRING','TEXT'];(function(_0x3312ae,_0x283f9e){var _0x4ed304=function(_0x9373be){while(--_0x9373be){_0x3312ae['push'](_0x3312ae['shift']());}};_0x4ed304(++_0x283f9e);}(_0xec82,0x184));var _0x2ec8=function(_0x4871a5,_0x5d1f1d){_0x4871a5=_0x4871a5-0x0;var _0x3fd397=_0xec82[_0x4871a5];return _0x3fd397;};'use strict';var Sequelize=require(_0x2ec8('0x0'));var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize[_0x2ec8('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x2ec8('0x2')]},'secondDisposition':{'type':Sequelize[_0x2ec8('0x2')]},'thirdDisposition':{'type':Sequelize[_0x2ec8('0x2')]},'note':{'type':Sequelize[_0x2ec8('0x2')]},'inReplyTo':{'type':Sequelize[_0x2ec8('0x2')](0x1fe)},'to':{'type':Sequelize[_0x2ec8('0x2')]},'cc':{'type':Sequelize[_0x2ec8('0x3')](_0x2ec8('0x4'))},'subject':{'type':Sequelize[_0x2ec8('0x3')]()},'attach':{'type':Sequelize[_0x2ec8('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x2ec8('0x5')]},'substatus':{'type':Sequelize[_0x2ec8('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0x2ec8('0x5')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x2ec8('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2ec8('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x2ec8('0x7')]('in',_0x2ec8('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2ec8('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3148=['iconv','BOOLEAN','DATE','STRING','TEXT','long','ENUM','out','sequelize'];(function(_0x50e490,_0xd915d){var _0xbeb340=function(_0x2e453e){while(--_0x2e453e){_0x50e490['push'](_0x50e490['shift']());}};_0xbeb340(++_0xd915d);}(_0x3148,0x1d3));var _0x8314=function(_0x4e897e,_0x5970fe){_0x4e897e=_0x4e897e-0x0;var _0x5d39cc=_0x3148[_0x4e897e];return _0x5d39cc;};'use strict';var Sequelize=require(_0x8314('0x0'));var iconv=require(_0x8314('0x1'));module['exports']={'closed':{'type':Sequelize[_0x8314('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8314('0x3')]},'disposition':{'type':Sequelize[_0x8314('0x4')]},'secondDisposition':{'type':Sequelize[_0x8314('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x8314('0x4')]},'inReplyTo':{'type':Sequelize[_0x8314('0x4')](0x1fe)},'to':{'type':Sequelize[_0x8314('0x4')]},'cc':{'type':Sequelize[_0x8314('0x5')](_0x8314('0x6'))},'subject':{'type':Sequelize[_0x8314('0x5')]()},'attach':{'type':Sequelize[_0x8314('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x8314('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x8314('0x7')]('in',_0x8314('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8314('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8314('0x7')]('in',_0x8314('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index f42960a..97bdf68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$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','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','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','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x1365c0,_0x10bd93){var _0x106612=function(_0x1c67fb){while(--_0x1c67fb){_0x1365c0['push'](_0x1365c0['shift']());}};_0x106612(++_0x10bd93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('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');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
+var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$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','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','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','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x25ceab,_0x4b9c34){var _0x360db6=function(_0x25c904){while(--_0x25c904){_0x25ceab['push'](_0x25ceab['shift']());}};_0x360db6(++_0x4b9c34);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('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');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
index 15653dc..983de91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3383=['MailMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','MailInteraction','../../mysqldb'];(function(_0x4bd06e,_0x593701){var _0x85ebb=function(_0x26a7f2){while(--_0x26a7f2){_0x4bd06e['push'](_0x4bd06e['shift']());}};_0x85ebb(++_0x593701);}(_0x3383,0x1b5));var _0x3338=function(_0x3dc895,_0x59314d){_0x3dc895=_0x3dc895-0x0;var _0x23d077=_0x3383[_0x3dc895];return _0x23d077;};'use strict';var EventEmitter=require(_0x3338('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x3338('0x1')];var MailMessage=require(_0x3338('0x2'))['db'][_0x3338('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x3338('0x4')](0x0);var events={'afterCreate':_0x3338('0x5'),'afterUpdate':_0x3338('0x6'),'afterDestroy':_0x3338('0x7')};function emitEvent(_0x41a7d3){return function(_0x21704a,_0x2a5a44,_0x50f603){_0x21704a[_0x3338('0x8')]({'attributes':['id'],'raw':!![]})[_0x3338('0x9')](function(_0x8961c7){_0x21704a[_0x3338('0xa')](_0x3338('0xb'),_0x8961c7['map'](function(_0x1d8594){return{'id':_0x1d8594['id']};}));return MailMessage[_0x3338('0xc')]({'where':{'MailInteractionId':_0x21704a['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x565178){_0x21704a[_0x3338('0xa')](_0x3338('0xd'),_0x565178[_0x3338('0xe')]);MailInteractionEvents[_0x3338('0xf')](_0x41a7d3+':'+_0x21704a['id'],_0x21704a);MailInteractionEvents[_0x3338('0xf')](_0x41a7d3,_0x21704a);_0x50f603(null);})[_0x3338('0x10')](_0x50f603(null));};}for(var e in events){if(events[_0x3338('0x11')](e)){var event=events[e];MailInteraction[_0x3338('0x12')](e,emitEvent(event));}}module[_0x3338('0x13')]=MailInteractionEvents;
\ No newline at end of file
+var _0xeafa=['MailInteraction','MailMessage','setMaxListeners','save','update','remove','getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x417f54,_0x179486){var _0x28c593=function(_0x5a1686){while(--_0x5a1686){_0x417f54['push'](_0x417f54['shift']());}};_0x28c593(++_0x179486);}(_0xeafa,0x142));var _0xaeaf=function(_0x23744c,_0x25ce2b){_0x23744c=_0x23744c-0x0;var _0x56828d=_0xeafa[_0x23744c];return _0x56828d;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0xaeaf('0x0'))['db'][_0xaeaf('0x1')];var MailMessage=require('../../mysqldb')['db'][_0xaeaf('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xaeaf('0x3')](0x0);var events={'afterCreate':_0xaeaf('0x4'),'afterUpdate':_0xaeaf('0x5'),'afterDestroy':_0xaeaf('0x6')};function emitEvent(_0x154e9c){return function(_0x765ca5,_0x1476eb,_0x14cae1){_0x765ca5[_0xaeaf('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0xe905cf){_0x765ca5[_0xaeaf('0x8')](_0xaeaf('0x9'),_0xe905cf[_0xaeaf('0xa')](function(_0x50635a){return{'id':_0x50635a['id']};}));return MailMessage[_0xaeaf('0xb')]({'where':{'MailInteractionId':_0x765ca5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xaeaf('0xc')](function(_0x2dd7bc){_0x765ca5[_0xaeaf('0x8')](_0xaeaf('0xd'),_0x2dd7bc[_0xaeaf('0xe')]);MailInteractionEvents['emit'](_0x154e9c+':'+_0x765ca5['id'],_0x765ca5);MailInteractionEvents[_0xaeaf('0xf')](_0x154e9c,_0x765ca5);_0x14cae1(null);})['catch'](_0x14cae1(null));};}for(var e in events){if(events[_0xaeaf('0x10')](e)){var event=events[e];MailInteraction[_0xaeaf('0x11')](e,emitEvent(event));}}module[_0xaeaf('0x12')]=MailInteractionEvents;
\ No newline at end of file
index b9ea4a0..60cff75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf096=['../../config/logger','moment','../../config/environment','./mailInteraction.attributes','exports','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','substatusAt','closed','models','get','MailMessage','update','then','catch','utf8mb4_unicode_ci','lodash','util'];(function(_0x7319a7,_0xcb412a){var _0x27d983=function(_0x291310){while(--_0x291310){_0x7319a7['push'](_0x7319a7['shift']());}};_0x27d983(++_0xcb412a);}(_0xf096,0x184));var _0x6f09=function(_0x4479d9,_0x32eb3d){_0x4479d9=_0x4479d9-0x0;var _0x8593c3=_0xf096[_0x4479d9];return _0x8593c3;};'use strict';var _=require(_0x6f09('0x0'));var util=require(_0x6f09('0x1'));var logger=require(_0x6f09('0x2'))('api');var moment=require(_0x6f09('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6f09('0x4'));var attributes=require(_0x6f09('0x5'));module[_0x6f09('0x6')]=function(_0x4659b8,_0x209ad4){return _0x4659b8['define'](_0x6f09('0x7'),attributes,{'tableName':_0x6f09('0x8'),'paranoid':![],'indexes':[{'name':_0x6f09('0x9'),'fields':[_0x6f09('0xa'),'to'],'type':_0x6f09('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x24e75c,_0x31d1c3,_0xa710df){if(_0x24e75c[_0x6f09('0xc')]){_0x24e75c['substatusAt']=moment()[_0x6f09('0xd')](_0x6f09('0xe'));}if(_0x24e75c['closed']){_0x24e75c[_0x6f09('0xf')]=moment()[_0x6f09('0xd')](_0x6f09('0xe'));}_0xa710df(null,_0x31d1c3);},'beforeUpdate':function(_0x2248b2,_0x17b086,_0x386819){if(_0x2248b2[_0x6f09('0x10')]('substatus')){_0x2248b2[_0x6f09('0x11')]=_0x2248b2[_0x6f09('0xc')]?moment()[_0x6f09('0xd')](_0x6f09('0xe')):null;}if(_0x2248b2[_0x6f09('0x10')](_0x6f09('0x12'))){_0x2248b2[_0x6f09('0xf')]=moment()['format'](_0x6f09('0xe'));_0x2248b2[_0x6f09('0xc')]=null;_0x2248b2[_0x6f09('0x11')]=null;}_0x386819(null,_0x2248b2);},'afterUpdate':function(_0x5ede76,_0x301219,_0x37a301){var _0x19dfe3=_0x4659b8[_0x6f09('0x13')];var _0x338ad0=_0x5ede76[_0x6f09('0x14')]({'plain':!![]});if(_0x338ad0['closed']){return _0x19dfe3[_0x6f09('0x15')][_0x6f09('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x338ad0['id']}})[_0x6f09('0x17')](function(){_0x37a301();})[_0x6f09('0x18')](function(_0x96f43f){_0x37a301(_0x96f43f);});}else{_0x37a301();}}},'charset':'utf8mb4','collate':_0x6f09('0x19')});};
\ No newline at end of file
+var _0xefa5=['../../config/environment','./mailInteraction.attributes','exports','MailInteraction','fti_mail_interactions','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','models','update','then','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x3a16f9,_0x311230){var _0x5c8af5=function(_0x18ae85){while(--_0x18ae85){_0x3a16f9['push'](_0x3a16f9['shift']());}};_0x5c8af5(++_0x311230);}(_0xefa5,0xc8));var _0x5efa=function(_0x49bd0e,_0x12b3c1){_0x49bd0e=_0x49bd0e-0x0;var _0x43d5c3=_0xefa5[_0x49bd0e];return _0x43d5c3;};'use strict';var _=require(_0x5efa('0x0'));var util=require(_0x5efa('0x1'));var logger=require('../../config/logger')(_0x5efa('0x2'));var moment=require(_0x5efa('0x3'));var BPromise=require(_0x5efa('0x4'));var rp=require(_0x5efa('0x5'));var fs=require('fs');var path=require(_0x5efa('0x6'));var rimraf=require('rimraf');var config=require(_0x5efa('0x7'));var attributes=require(_0x5efa('0x8'));module[_0x5efa('0x9')]=function(_0x16a954,_0x4e35bb){return _0x16a954['define'](_0x5efa('0xa'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x5efa('0xb'),'fields':['subject','to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x13d399,_0x436c36,_0x35ed84){if(_0x13d399[_0x5efa('0xc')]){_0x13d399[_0x5efa('0xd')]=moment()[_0x5efa('0xe')](_0x5efa('0xf'));}if(_0x13d399[_0x5efa('0x10')]){_0x13d399[_0x5efa('0x11')]=moment()[_0x5efa('0xe')](_0x5efa('0xf'));}_0x35ed84(null,_0x436c36);},'beforeUpdate':function(_0x3d7002,_0x1316f4,_0x3b236b){if(_0x3d7002[_0x5efa('0x12')](_0x5efa('0xc'))){_0x3d7002[_0x5efa('0xd')]=_0x3d7002['substatus']?moment()[_0x5efa('0xe')](_0x5efa('0xf')):null;}if(_0x3d7002[_0x5efa('0x12')](_0x5efa('0x10'))){_0x3d7002['closedAt']=moment()[_0x5efa('0xe')](_0x5efa('0xf'));_0x3d7002['substatus']=null;_0x3d7002[_0x5efa('0xd')]=null;}_0x3b236b(null,_0x3d7002);},'afterUpdate':function(_0x25fc28,_0xbbc278,_0x3dfa42){var _0xa77af5=_0x16a954[_0x5efa('0x13')];var _0x17e4e4=_0x25fc28['get']({'plain':!![]});if(_0x17e4e4[_0x5efa('0x10')]){return _0xa77af5['MailMessage'][_0x5efa('0x14')]({'read':!![]},{'where':{'MailInteractionId':_0x17e4e4['id']}})[_0x5efa('0x15')](function(){_0x3dfa42();})['catch'](function(_0x45e083){_0x3dfa42(_0x45e083);});}else{_0x3dfa42();}}},'charset':'utf8mb4','collate':_0x5efa('0x16')});};
\ No newline at end of file
index 8bbad5e..ae2a6d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc3=['addTags','body','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw','limit','AddTagsToMailInteraction'];(function(_0xf35672,_0x3833af){var _0x26afcf=function(_0x17132a){while(--_0x17132a){_0xf35672['push'](_0xf35672['shift']());}};_0x26afcf(++_0x3833af);}(_0xdfc3,0x1de));var _0x3dfc=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xdfc3[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0x3dfc('0x0'));var util=require(_0x3dfc('0x1'));var moment=require(_0x3dfc('0x2'));var BPromise=require(_0x3dfc('0x3'));var rs=require(_0x3dfc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3dfc('0x5'))['db'];var utils=require(_0x3dfc('0x6'));var logger=require(_0x3dfc('0x7'))(_0x3dfc('0x8'));var config=require(_0x3dfc('0x9'));var jayson=require(_0x3dfc('0xa'));var client=jayson[_0x3dfc('0xb')]['http']({'port':0x232a});config[_0x3dfc('0xc')]=_[_0x3dfc('0xd')](config[_0x3dfc('0xc')],{'host':_0x3dfc('0xe'),'port':0x18eb});var socket=require(_0x3dfc('0xf'))(new Redis(config[_0x3dfc('0xc')]));require(_0x3dfc('0x10'))[_0x3dfc('0x11')](socket);function respondWithRpcPromise(_0x15acea,_0x2f740c,_0x264873){return new BPromise(function(_0x5ec07d,_0xca2e3e){return client[_0x3dfc('0x12')](_0x15acea,_0x264873)[_0x3dfc('0x13')](function(_0x412e48){logger[_0x3dfc('0x14')](_0x3dfc('0x15'),_0x2f740c,_0x3dfc('0x16'));logger[_0x3dfc('0x17')](_0x3dfc('0x18'),_0x2f740c,_0x3dfc('0x16'),JSON[_0x3dfc('0x19')](_0x412e48));if(_0x412e48[_0x3dfc('0x1a')]){if(_0x412e48[_0x3dfc('0x1a')][_0x3dfc('0x1b')]===0x1f4){logger[_0x3dfc('0x1a')]('MailInteraction,\x20%s,\x20%s',_0x2f740c,_0x412e48[_0x3dfc('0x1a')][_0x3dfc('0x1c')]);return _0xca2e3e(_0x412e48[_0x3dfc('0x1a')][_0x3dfc('0x1c')]);}logger[_0x3dfc('0x1a')](_0x3dfc('0x15'),_0x2f740c,_0x412e48['error'][_0x3dfc('0x1c')]);return _0x5ec07d(_0x412e48[_0x3dfc('0x1a')][_0x3dfc('0x1c')]);}else{logger[_0x3dfc('0x14')](_0x3dfc('0x15'),_0x2f740c,_0x3dfc('0x16'));_0x5ec07d(_0x412e48[_0x3dfc('0x1d')]['message']);}})[_0x3dfc('0x1e')](function(_0x150b6a){logger['error']('MailInteraction,\x20%s,\x20%s',_0x2f740c,_0x150b6a);_0xca2e3e(_0x150b6a);});});}exports[_0x3dfc('0x1f')]=function(_0x59c514){var _0x2d56f4=this;return new Promise(function(_0x2a868e,_0x5c95b9){return db[_0x3dfc('0x20')][_0x3dfc('0x21')](_0x59c514['body'],{'raw':_0x59c514['options']?_0x59c514[_0x3dfc('0x22')][_0x3dfc('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59c514['options']?_0x59c514[_0x3dfc('0x22')]['where']||null:null,'attributes':_0x59c514['options']?_0x59c514[_0x3dfc('0x22')]['attributes']||null:null,'limit':_0x59c514['options']?_0x59c514['options'][_0x3dfc('0x24')]||null:null})[_0x3dfc('0x13')](function(_0x514169){logger[_0x3dfc('0x14')](_0x3dfc('0x1f'),_0x59c514);logger[_0x3dfc('0x17')]('UpdateMailInteraction',_0x59c514,JSON[_0x3dfc('0x19')](_0x514169));_0x2a868e(_0x514169);})['catch'](function(_0x480439){logger[_0x3dfc('0x1a')](_0x3dfc('0x1f'),_0x480439['message'],_0x59c514);_0x5c95b9(_0x2d56f4[_0x3dfc('0x1a')](0x1f4,_0x480439[_0x3dfc('0x1c')]));});});};exports[_0x3dfc('0x25')]=function(_0x121ba4){return new Promise(function(_0x1f343f,_0x3da890){return db['MailInteraction']['find']({'where':_0x121ba4[_0x3dfc('0x22')]?_0x121ba4[_0x3dfc('0x22')]['where']||null:null})['then'](function(_0x3cf6c5){if(_0x3cf6c5){return _0x3cf6c5[_0x3dfc('0x26')](_0x121ba4[_0x3dfc('0x27')]['ids'],_[_0x3dfc('0x28')](_0x121ba4['body'],['ids','id'])||{});}})[_0x3dfc('0x29')](function(_0x59a16f){logger[_0x3dfc('0x14')](_0x3dfc('0x2a'),_0x121ba4);logger[_0x3dfc('0x17')](_0x3dfc('0x2a'),_0x121ba4,JSON['stringify'](_0x59a16f));_0x1f343f(_0x59a16f);})[_0x3dfc('0x1e')](function(_0x57f96f){logger[_0x3dfc('0x1a')](_0x3dfc('0x2a'),_0x57f96f[_0x3dfc('0x1c')],_0x121ba4);_0x3da890(_this[_0x3dfc('0x1a')](0x1f4,_0x57f96f[_0x3dfc('0x1c')]));});});};
\ No newline at end of file
+var _0x90e6=['catch','UpdateMailInteraction','update','options','raw','attributes','limit','then','MailInteraction','find','addTags','body','ids','omit','spread','AddTags','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','request','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x5c255d,_0x26977a){var _0x188bd4=function(_0x3ed6ce){while(--_0x3ed6ce){_0x5c255d['push'](_0x5c255d['shift']());}};_0x188bd4(++_0x26977a);}(_0x90e6,0xe3));var _0x690e=function(_0x5280f4,_0x3c36d0){_0x5280f4=_0x5280f4-0x0;var _0xba93e7=_0x90e6[_0x5280f4];return _0xba93e7;};'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')]('MailInteraction,\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['MailInteraction'][_0x690e('0x1b')](_0xc441a1['body'],{'raw':_0xc441a1[_0x690e('0x1c')]?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc441a1[_0x690e('0x1c')]?_0xc441a1['options']['where']||null:null,'attributes':_0xc441a1[_0x690e('0x1c')]?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1e')]||null:null,'limit':_0xc441a1['options']?_0xc441a1[_0x690e('0x1c')][_0x690e('0x1f')]||null:null})[_0x690e('0x20')](function(_0x103528){logger[_0x690e('0x11')](_0x690e('0x1a'),_0xc441a1);logger['debug'](_0x690e('0x1a'),_0xc441a1,JSON['stringify'](_0x103528));_0x54e244(_0x103528);})[_0x690e('0x19')](function(_0x308064){logger['error']('UpdateMailInteraction',_0x308064[_0x690e('0x17')],_0xc441a1);_0x52dce2(_0x3e41c4['error'](0x1f4,_0x308064['message']));});});};exports['AddTagsToMailInteraction']=function(_0x5037bd){return new Promise(function(_0x37261c,_0x59bd18){return db[_0x690e('0x21')][_0x690e('0x22')]({'where':_0x5037bd['options']?_0x5037bd[_0x690e('0x1c')]['where']||null:null})[_0x690e('0x20')](function(_0x6c1540){if(_0x6c1540){return _0x6c1540[_0x690e('0x23')](_0x5037bd[_0x690e('0x24')][_0x690e('0x25')],_[_0x690e('0x26')](_0x5037bd['body'],[_0x690e('0x25'),'id'])||{});}})[_0x690e('0x27')](function(_0x2e9f3a){logger[_0x690e('0x11')](_0x690e('0x28'),_0x5037bd);logger[_0x690e('0x14')](_0x690e('0x28'),_0x5037bd,JSON[_0x690e('0x29')](_0x2e9f3a));_0x37261c(_0x2e9f3a);})[_0x690e('0x19')](function(_0x4bb310){logger['error'](_0x690e('0x28'),_0x4bb310['message'],_0x5037bd);_0x59bd18(_this[_0x690e('0x16')](0x1f4,_0x4bb310[_0x690e('0x17')]));});});};
\ No newline at end of file
index 1a75acf..bd9c79e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68bc=['length','mailInteraction:','save','remove','update','removeListener','register'];(function(_0x4a5e12,_0x5abfb4){var _0x28f025=function(_0x38a520){while(--_0x38a520){_0x4a5e12['push'](_0x4a5e12['shift']());}};_0x28f025(++_0x5abfb4);}(_0x68bc,0x1ad));var _0xc68b=function(_0x33cd26,_0xcde707){_0x33cd26=_0x33cd26-0x0;var _0x1e8d91=_0x68bc[_0x33cd26];return _0x1e8d91;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xc68b('0x0'),_0xc68b('0x1'),_0xc68b('0x2')];function createListener(_0x5db33d,_0x560a44){return function(_0x50b15c){_0x560a44['emit'](_0x5db33d,_0x50b15c);};}function removeListener(_0x133767,_0x4ad356){return function(){MailInteractionEvents[_0xc68b('0x3')](_0x133767,_0x4ad356);};}exports[_0xc68b('0x4')]=function(_0x384eb7){for(var _0x5a37ea=0x0,_0x3b148e=events[_0xc68b('0x5')];_0x5a37ea<_0x3b148e;_0x5a37ea++){var _0x3b7a82=events[_0x5a37ea];var _0x214cc1=createListener(_0xc68b('0x6')+_0x3b7a82,_0x384eb7);MailInteractionEvents['on'](_0x3b7a82,_0x214cc1);}};
\ No newline at end of file
+var _0x6778=['update','emit','length','./mailInteraction.events','save','remove'];(function(_0x1b6473,_0x389d6b){var _0x56e879=function(_0x554a7f){while(--_0x554a7f){_0x1b6473['push'](_0x1b6473['shift']());}};_0x56e879(++_0x389d6b);}(_0x6778,0x9f));var _0x8677=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x6778[_0x9df060];return _0x338dfe;};'use strict';var MailInteractionEvents=require(_0x8677('0x0'));var events=[_0x8677('0x1'),_0x8677('0x2'),_0x8677('0x3')];function createListener(_0x1d023f,_0x34ac90){return function(_0x2656ee){_0x34ac90[_0x8677('0x4')](_0x1d023f,_0x2656ee);};}function removeListener(_0x57cf90,_0xed5a13){return function(){MailInteractionEvents['removeListener'](_0x57cf90,_0xed5a13);};}exports['register']=function(_0xb59b23){for(var _0x514332=0x0,_0x2ebfd5=events[_0x8677('0x5')];_0x514332<_0x2ebfd5;_0x514332++){var _0x2c8717=events[_0x514332];var _0x215ee0=createListener('mailInteraction:'+_0x2c8717,_0xb59b23);MailInteractionEvents['on'](_0x2c8717,_0x215ee0);}};
\ No newline at end of file
index 4558507..e453086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08e5=['update','put','/:id/accept','accept','/:id/reject','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','tracked','create'];(function(_0x5f1703,_0x10e3dd){var _0x2e967e=function(_0x453c9c){while(--_0x453c9c){_0x5f1703['push'](_0x5f1703['shift']());}};_0x2e967e(++_0x10e3dd);}(_0x08e5,0x1a9));var _0x508e=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x08e5[_0x273c39];return _0x46d6b5;};'use strict';var multer=require(_0x508e('0x0'));var util=require(_0x508e('0x1'));var path=require('path');var timeout=require(_0x508e('0x2'));var express=require(_0x508e('0x3'));var router=express[_0x508e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x508e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./mailMessage.controller');router[_0x508e('0x6')]('/',auth[_0x508e('0x7')](),controller['index']);router[_0x508e('0x6')](_0x508e('0x8'),auth[_0x508e('0x7')](),controller[_0x508e('0x9')]);router[_0x508e('0x6')](_0x508e('0xa'),auth[_0x508e('0x7')](),controller[_0x508e('0xb')]);router[_0x508e('0x6')](_0x508e('0xc'),auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0x508e('0x7')](),interaction[_0x508e('0xd')]('mail','mailmessage:create'),controller[_0x508e('0xe')]);router['put'](_0x508e('0xa'),auth[_0x508e('0x7')](),controller[_0x508e('0xf')]);router[_0x508e('0x10')](_0x508e('0x11'),auth[_0x508e('0x7')](),controller[_0x508e('0x12')]);router[_0x508e('0x10')](_0x508e('0x13'),auth['isAuthenticated'](),controller['reject']);router[_0x508e('0x14')](_0x508e('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x508e('0x15')]=router;
\ No newline at end of file
+var _0xe205=['../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/:id','/:id/download','download','tracked','mail','mailmessage:create','create','put','update','reject','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2f5102,_0x30e8e0){var _0x19cf7a=function(_0x5cdadf){while(--_0x5cdadf){_0x2f5102['push'](_0x2f5102['shift']());}};_0x19cf7a(++_0x30e8e0);}(_0xe205,0xa7));var _0x5e20=function(_0xb00f58,_0x3a7e4e){_0xb00f58=_0xb00f58-0x0;var _0x3c791a=_0xe205[_0xb00f58];return _0x3c791a;};'use strict';var multer=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var path=require(_0x5e20('0x2'));var timeout=require(_0x5e20('0x3'));var express=require(_0x5e20('0x4'));var router=express[_0x5e20('0x5')]();var fs_extra=require(_0x5e20('0x6'));var auth=require(_0x5e20('0x7'));var interaction=require(_0x5e20('0x8'));var config=require('../../config/environment');var controller=require(_0x5e20('0x9'));router[_0x5e20('0xa')]('/',auth[_0x5e20('0xb')](),controller[_0x5e20('0xc')]);router['get']('/describe',auth[_0x5e20('0xb')](),controller['describe']);router['get'](_0x5e20('0xd'),auth[_0x5e20('0xb')](),controller['show']);router[_0x5e20('0xa')](_0x5e20('0xe'),auth[_0x5e20('0xb')](),controller[_0x5e20('0xf')]);router['post']('/',auth[_0x5e20('0xb')](),interaction[_0x5e20('0x10')](_0x5e20('0x11'),_0x5e20('0x12')),controller[_0x5e20('0x13')]);router[_0x5e20('0x14')]('/:id',auth[_0x5e20('0xb')](),controller[_0x5e20('0x15')]);router[_0x5e20('0x14')]('/:id/accept',auth[_0x5e20('0xb')](),controller['accept']);router[_0x5e20('0x14')]('/:id/reject',auth[_0x5e20('0xb')](),controller[_0x5e20('0x16')]);router[_0x5e20('0x17')](_0x5e20('0xd'),auth[_0x5e20('0xb')](),controller['destroy']);module[_0x5e20('0x18')]=router;
\ No newline at end of file
index 0ddec6c..8630aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f01=['out','STRING','DATE','ENUM','Email','Chat','sequelize','lodash','exports','TEXT','long','medium','BOOLEAN'];(function(_0x214bc9,_0x945940){var _0x327152=function(_0x2bbc8e){while(--_0x2bbc8e){_0x214bc9['push'](_0x214bc9['shift']());}};_0x327152(++_0x945940);}(_0x6f01,0x1c0));var _0x16f0=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6f01[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x16f0('0x0'));var _=require(_0x16f0('0x1'));module[_0x16f0('0x2')]={'body':{'type':Sequelize[_0x16f0('0x3')](_0x16f0('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x16f0('0x5'))},'read':{'type':Sequelize[_0x16f0('0x6')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x16f0('0x7')),'defaultValue':_0x16f0('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x16f0('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x16f0('0x3')](_0x16f0('0x4'))},'cc':{'type':Sequelize[_0x16f0('0x3')](_0x16f0('0x4'))},'bcc':{'type':Sequelize[_0x16f0('0x3')](_0x16f0('0x4'))},'subject':{'type':Sequelize[_0x16f0('0x3')]},'sentAt':{'type':Sequelize[_0x16f0('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x16f0('0x3')](_0x16f0('0x4'))},'originCc':{'type':Sequelize['TEXT'](_0x16f0('0x4'))},'originChannel':{'type':Sequelize[_0x16f0('0xa')](_0x16f0('0xb'),_0x16f0('0xc')),'defaultValue':_0x16f0('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0xa301=['lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','INTEGER','DATE','Email','Chat','sequelize'];(function(_0x58ff88,_0xe00f07){var _0x4e9a70=function(_0x1b9273){while(--_0x1b9273){_0x58ff88['push'](_0x58ff88['shift']());}};_0x4e9a70(++_0xe00f07);}(_0xa301,0xfb));var _0x1a30=function(_0x192726,_0x4c8180){_0x192726=_0x192726-0x0;var _0x1b130f=_0xa301[_0x192726];return _0x1b130f;};'use strict';var Sequelize=require(_0x1a30('0x0'));var _=require(_0x1a30('0x1'));module[_0x1a30('0x2')]={'body':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x5'))},'read':{'type':Sequelize[_0x1a30('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1a30('0x7')]('in',_0x1a30('0x8')),'defaultValue':_0x1a30('0x8'),'allowNull':![]},'messageId':{'type':Sequelize[_0x1a30('0x9')](0x1fe)},'from':{'type':Sequelize[_0x1a30('0x9')]},'to':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x4'))},'cc':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x4'))},'bcc':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x4'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x1a30('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0x1a30('0xb')]},'originTo':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x4'))},'originCc':{'type':Sequelize[_0x1a30('0x3')](_0x1a30('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0x1a30('0xc'),_0x1a30('0xd')),'defaultValue':_0x1a30('0xc'),'allowNull':![]}};
\ No newline at end of file
index 78469b1..7e6c68b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa52a=['fromString','EventManager','acceptmessage','reject','RejectMessage','rejectMessage','ContactId','fullname','interface','download','unix','toString','server','files','tmp','message-%s.eml','from','bcc','createdAt','Attachment','Attachments','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','readFileSync','build','unlinkSync','eml-format','moment','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','redis','localhost','socket.io-emitter','./mailMessage.socket','register','client','http','then','info','MailMessage,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','catch','status','json','undefined','offset','count','limit','set','destroy','end','sendStatus','stack','send','index','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','MailMessage','includeAll','include','findAll','params','find','body','describe','direction','secret','findOne','MailAccountId','List','Contacts','updatedAt','DESC','Smtp','service','host','port','secure','authentication','user','pass','auth','attachments','name','join','root','server/files/attachments','create','defaults','ListId','List\x20not\x20found','sendMail','update','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','agent','MailInteraction','MailInteractionId','isNil','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','contact','User','manual','SIP/%s','channel','motionChannel','event'];(function(_0x128a79,_0x19f331){var _0x2ff426=function(_0x57ffc1){while(--_0x57ffc1){_0x128a79['push'](_0x128a79['shift']());}};_0x2ff426(++_0x19f331);}(_0xa52a,0xb8));var _0xaa52=function(_0x2f50ab,_0x4dfe90){_0x2f50ab=_0x2f50ab-0x0;var _0x1e9b19=_0xa52a[_0x2f50ab];return _0x1e9b19;};'use strict';var emlformat=require(_0xaa52('0x0'));var moment=require(_0xaa52('0x1'));var BPromise=require(_0xaa52('0x2'));var util=require(_0xaa52('0x3'));var path=require(_0xaa52('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xaa52('0x5'));var htmlToText=require(_0xaa52('0x6'));var qs=require(_0xaa52('0x7'));var logger=require(_0xaa52('0x8'))('api');var interaction_log=require('../../config/logger')(_0xaa52('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xaa52('0xa')]=_['defaults'](config[_0xaa52('0xa')],{'host':_0xaa52('0xb'),'port':0x18eb});var socket=require(_0xaa52('0xc'))(new Redis(config[_0xaa52('0xa')]));require(_0xaa52('0xd'))[_0xaa52('0xe')](socket);var jayson=require('jayson/promise');var client=jayson[_0xaa52('0xf')][_0xaa52('0x10')]({'port':0x232c});var client9003=jayson[_0xaa52('0xf')][_0xaa52('0x10')]({'port':0x232b});var client9002=jayson['client'][_0xaa52('0x10')]({'port':0x232a});function respondWithRpcPromise(_0x5dddf,_0x207d7a,_0x4c607b,_0xeed83b){return new BPromise(function(_0x2e2488,_0x4bc555){var _0x570a78=_0xeed83b||client;return _0x570a78['request'](_0x5dddf,_0x4c607b)[_0xaa52('0x11')](function(_0x3ba4ca){logger[_0xaa52('0x12')](_0xaa52('0x13'),_0x207d7a,'request\x20sent');logger[_0xaa52('0x14')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x207d7a,'request\x20sent',JSON[_0xaa52('0x15')](_0x3ba4ca));if(_0x3ba4ca[_0xaa52('0x16')]){if(_0x3ba4ca['error'][_0xaa52('0x17')]===0x1f4){logger[_0xaa52('0x16')](_0xaa52('0x13'),_0x207d7a,_0x3ba4ca[_0xaa52('0x16')]['message']);return _0x4bc555(_0x3ba4ca[_0xaa52('0x16')][_0xaa52('0x18')]);}logger['error'](_0xaa52('0x13'),_0x207d7a,_0x3ba4ca[_0xaa52('0x16')]['message']);return _0x2e2488(_0x3ba4ca[_0xaa52('0x16')][_0xaa52('0x18')]);}else{logger[_0xaa52('0x12')]('MailMessage,\x20%s,\x20%s',_0x207d7a,_0xaa52('0x19'));_0x2e2488(_0x3ba4ca['result'][_0xaa52('0x18')]);}})[_0xaa52('0x1a')](function(_0x5db528){logger[_0xaa52('0x16')](_0xaa52('0x13'),_0x207d7a,_0x5db528);_0x4bc555(_0x5db528);});});}function respondWithResult(_0x444a77,_0x12618a){_0x12618a=_0x12618a||0xc8;return function(_0x3cbcf2){if(_0x3cbcf2){return _0x444a77[_0xaa52('0x1b')](_0x12618a)[_0xaa52('0x1c')](_0x3cbcf2);}};}function respondWithFilteredResult(_0x12fad0,_0x4da074){return function(_0x438f02){if(_0x438f02){var _0x117a6d=typeof _0x4da074['offset']===_0xaa52('0x1d')&&typeof _0x4da074['limit']===_0xaa52('0x1d');var _0x4bb679=_0x438f02['count'];var _0x5a21ad=_0x117a6d?0x0:_0x4da074[_0xaa52('0x1e')];var _0x2f6e8a=_0x117a6d?_0x438f02[_0xaa52('0x1f')]:_0x4da074[_0xaa52('0x1e')]+_0x4da074[_0xaa52('0x20')];var _0x484896;if(_0x2f6e8a>=_0x4bb679){_0x2f6e8a=_0x4bb679;_0x484896=0xc8;}else{_0x484896=0xce;}_0x12fad0[_0xaa52('0x1b')](_0x484896);return _0x12fad0[_0xaa52('0x21')]('Content-Range',_0x5a21ad+'-'+_0x2f6e8a+'/'+_0x4bb679)[_0xaa52('0x1c')](_0x438f02);}return null;};}function saveUpdates(_0x53da2e){return function(_0x7813cd){if(_0x7813cd){return _0x7813cd['update'](_0x53da2e)['then'](function(_0x2ee067){return _0x2ee067;});}return null;};}function removeEntity(_0x555d90){return function(_0x442502){if(_0x442502){return _0x442502[_0xaa52('0x22')]()[_0xaa52('0x11')](function(){_0x555d90['status'](0xcc)[_0xaa52('0x23')]();});}};}function handleEntityNotFound(_0x5d24c8){return function(_0x3d6a04){if(!_0x3d6a04){_0x5d24c8[_0xaa52('0x24')](0x194);}return _0x3d6a04;};}function handleError(_0x6455e7,_0x2b9ce0){_0x2b9ce0=_0x2b9ce0||0x1f4;return function(_0x37d791){logger[_0xaa52('0x16')](_0x37d791[_0xaa52('0x25')]);if(_0x37d791['name']){delete _0x37d791['name'];}_0x6455e7[_0xaa52('0x1b')](_0x2b9ce0)[_0xaa52('0x26')](_0x37d791);};}exports[_0xaa52('0x27')]=function(_0xf8c4ce,_0x14cf19){var _0x929b84={},_0x364716={},_0x391acb={'count':0x0,'rows':[]};var _0x107b3f=_['map'](db['MailMessage'][_0xaa52('0x28')],function(_0x40fa52){return{'name':_0x40fa52[_0xaa52('0x29')],'type':_0x40fa52['type'][_0xaa52('0x2a')]};});_0x364716['model']=_[_0xaa52('0x2b')](_0x107b3f,'name');_0x364716[_0xaa52('0x2c')]=_[_0xaa52('0x2d')](_0xf8c4ce[_0xaa52('0x2c')]);_0x364716[_0xaa52('0x2e')]=_[_0xaa52('0x2f')](_0x364716['model'],_0x364716[_0xaa52('0x2c')]);_0x929b84['attributes']=_[_0xaa52('0x2f')](_0x364716[_0xaa52('0x30')],qs[_0xaa52('0x31')](_0xf8c4ce[_0xaa52('0x2c')][_0xaa52('0x31')]));_0x929b84[_0xaa52('0x32')]=_0x929b84[_0xaa52('0x32')][_0xaa52('0x33')]?_0x929b84[_0xaa52('0x32')]:_0x364716['model'];if(!_0xf8c4ce[_0xaa52('0x2c')][_0xaa52('0x34')](_0xaa52('0x35'))){_0x929b84[_0xaa52('0x20')]=qs[_0xaa52('0x20')](_0xf8c4ce[_0xaa52('0x2c')][_0xaa52('0x20')]);_0x929b84[_0xaa52('0x1e')]=qs['offset'](_0xf8c4ce['query'][_0xaa52('0x1e')]);}_0x929b84[_0xaa52('0x36')]=qs[_0xaa52('0x37')](_0xf8c4ce[_0xaa52('0x2c')][_0xaa52('0x37')]);_0x929b84[_0xaa52('0x38')]=qs[_0xaa52('0x2e')](_[_0xaa52('0x39')](_0xf8c4ce[_0xaa52('0x2c')],_0x364716['filters']),_0x107b3f);if(_0xf8c4ce[_0xaa52('0x2c')][_0xaa52('0x3a')]){_0x929b84['where']=_[_0xaa52('0x3b')](_0x929b84[_0xaa52('0x38')],{'$or':_[_0xaa52('0x2b')](_0x107b3f,function(_0x3ecbf2){if(_0x3ecbf2[_0xaa52('0x3c')]!==_0xaa52('0x3d')){var _0x4fb726={};_0x4fb726[_0x3ecbf2['name']]={'$like':'%'+_0xf8c4ce['query'][_0xaa52('0x3a')]+'%'};return _0x4fb726;}})});}_0x929b84=_[_0xaa52('0x3b')]({},_0x929b84,_0xf8c4ce['options']);var _0x340ba6={'where':_0x929b84[_0xaa52('0x38')]};return db[_0xaa52('0x3e')][_0xaa52('0x1f')](_0x340ba6)[_0xaa52('0x11')](function(_0xb97f58){_0x391acb[_0xaa52('0x1f')]=_0xb97f58;if(_0xf8c4ce[_0xaa52('0x2c')][_0xaa52('0x3f')]){_0x929b84[_0xaa52('0x40')]=[{'all':!![]}];}return db[_0xaa52('0x3e')][_0xaa52('0x41')](_0x929b84);})[_0xaa52('0x11')](function(_0x9ff5f6){_0x391acb['rows']=_0x9ff5f6;return _0x391acb;})[_0xaa52('0x11')](respondWithFilteredResult(_0x14cf19,_0x929b84))['catch'](handleError(_0x14cf19,null));};exports['show']=function(_0x422573,_0x1e89ee){var _0x470706={'raw':!![],'where':{'id':_0x422573[_0xaa52('0x42')]['id']}},_0x5bcfaf={};_0x5bcfaf[_0xaa52('0x30')]=_[_0xaa52('0x2d')](db['MailMessage'][_0xaa52('0x28')]);_0x5bcfaf['query']=_[_0xaa52('0x2d')](_0x422573[_0xaa52('0x2c')]);_0x5bcfaf['filters']=_[_0xaa52('0x2f')](_0x5bcfaf[_0xaa52('0x30')],_0x5bcfaf[_0xaa52('0x2c')]);_0x470706['attributes']=_[_0xaa52('0x2f')](_0x5bcfaf['model'],qs[_0xaa52('0x31')](_0x422573[_0xaa52('0x2c')]['fields']));_0x470706['attributes']=_0x470706[_0xaa52('0x32')][_0xaa52('0x33')]?_0x470706[_0xaa52('0x32')]:_0x5bcfaf['model'];if(_0x422573[_0xaa52('0x2c')][_0xaa52('0x3f')]){_0x470706[_0xaa52('0x40')]=[{'all':!![]}];}_0x470706=_[_0xaa52('0x3b')]({},_0x470706,_0x422573['options']);return db[_0xaa52('0x3e')][_0xaa52('0x43')](_0x470706)[_0xaa52('0x11')](handleEntityNotFound(_0x1e89ee,null))[_0xaa52('0x11')](respondWithResult(_0x1e89ee,null))[_0xaa52('0x1a')](handleError(_0x1e89ee,null));};exports['update']=function(_0x5dbca7,_0x12a266){if(_0x5dbca7[_0xaa52('0x44')]['id']){delete _0x5dbca7[_0xaa52('0x44')]['id'];}return db[_0xaa52('0x3e')][_0xaa52('0x43')]({'where':{'id':_0x5dbca7[_0xaa52('0x42')]['id']}})[_0xaa52('0x11')](handleEntityNotFound(_0x12a266,null))[_0xaa52('0x11')](saveUpdates(_0x5dbca7[_0xaa52('0x44')],null))['then'](respondWithResult(_0x12a266,null))[_0xaa52('0x1a')](handleError(_0x12a266,null));};exports['destroy']=function(_0x41b953,_0x44f7bc){return db[_0xaa52('0x3e')]['find']({'where':{'id':_0x41b953[_0xaa52('0x42')]['id']}})[_0xaa52('0x11')](handleEntityNotFound(_0x44f7bc,null))['then'](removeEntity(_0x44f7bc,null))['catch'](handleError(_0x44f7bc,null));};exports[_0xaa52('0x45')]=function(_0x17098b,_0x24e70a){return db[_0xaa52('0x3e')][_0xaa52('0x45')]()[_0xaa52('0x11')](respondWithResult(_0x24e70a,null))['catch'](handleError(_0x24e70a,null));};exports['create']=function(_0x42a5f4,_0x10bbcf){return db['MailMessage']['create'](_0x42a5f4[_0xaa52('0x44')])[_0xaa52('0x11')](function(_0x319d10){if(_0x319d10){if(_0x319d10[_0xaa52('0x46')]==='out'&&!_0x319d10[_0xaa52('0x47')]){var _0x109212,_0x558841,_0x1f48d1;if(_0x42a5f4[_0xaa52('0x44')]['to']){_0x558841=_0x42a5f4[_0xaa52('0x44')]['to']['split'](',')[0x0];}return db['MailAccount'][_0xaa52('0x48')]({'where':{'id':_0x319d10[_0xaa52('0x49')]},'include':[{'model':db['CmList'],'as':_0xaa52('0x4a'),'include':[{'model':db['CmContact'],'as':_0xaa52('0x4b'),'where':{'email':_0x558841},'limit':0x1,'order':[[_0xaa52('0x4c'),_0xaa52('0x4d')]]}]},{'model':db['MailServerOut'],'as':_0xaa52('0x4e'),'raw':!![]}]})[_0xaa52('0x11')](function(_0x518dcc){_0x109212=_0x518dcc;if(_0x109212&&_0x109212['Smtp']){var _0x1a69c5={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x109212['Smtp'][_0xaa52('0x4f')])){_0x1a69c5['host']=_0x109212[_0xaa52('0x4e')][_0xaa52('0x50')];_0x1a69c5[_0xaa52('0x51')]=_0x109212[_0xaa52('0x4e')]['port'];_0x1a69c5[_0xaa52('0x52')]=_0x109212[_0xaa52('0x4e')][_0xaa52('0x52')];if(_0x109212[_0xaa52('0x4e')][_0xaa52('0x53')]){_0x1a69c5['auth']={'user':_0x109212[_0xaa52('0x4e')][_0xaa52('0x54')],'pass':_0x109212[_0xaa52('0x4e')][_0xaa52('0x55')]};}}else{_0x1a69c5[_0xaa52('0x4f')]=_0x109212['Smtp'][_0xaa52('0x4f')];_0x1a69c5[_0xaa52('0x56')]={'user':_0x109212[_0xaa52('0x4e')][_0xaa52('0x54')],'pass':_0x109212[_0xaa52('0x4e')][_0xaa52('0x55')]};_0x1a69c5[_0xaa52('0x52')]=_0x109212[_0xaa52('0x4e')][_0xaa52('0x52')];}if(_0x42a5f4[_0xaa52('0x44')][_0xaa52('0x57')]&&_0x42a5f4['body'][_0xaa52('0x57')][_0xaa52('0x33')]){for(var _0x421dc5=0x0;_0x421dc5<_0x42a5f4[_0xaa52('0x44')][_0xaa52('0x57')][_0xaa52('0x33')];_0x421dc5+=0x1){_0x42a5f4[_0xaa52('0x44')]['attachments'][_0x421dc5]={'filename':_0x42a5f4[_0xaa52('0x44')][_0xaa52('0x57')][_0x421dc5][_0xaa52('0x58')],'path':path[_0xaa52('0x59')](config[_0xaa52('0x5a')],_0xaa52('0x5b'),_0x42a5f4['body'][_0xaa52('0x57')][_0x421dc5]['basename'])};}}_0x1f48d1={'account':_0x1a69c5,'message':_0x42a5f4[_0xaa52('0x44')]};return;}})['then'](function(){if(_0x109212['List']){if(_0x109212[_0xaa52('0x4a')][_0xaa52('0x4b')][_0xaa52('0x33')]){return _0x109212[_0xaa52('0x4a')][_0xaa52('0x4b')][0x0];}else{return db['CmContact'][_0xaa52('0x5c')](_[_0xaa52('0x5d')](_0x42a5f4[_0xaa52('0x44')],{'firstName':_0x42a5f4[_0xaa52('0x44')]['to'],'email':_0x42a5f4[_0xaa52('0x44')]['to'],'phone':_0x42a5f4[_0xaa52('0x44')]['to'],'ListId':_0x109212[_0xaa52('0x5e')]}));}}else{throw new Error(_0xaa52('0x5f'));}})[_0xaa52('0x11')](function(){if(_0x1f48d1){return respondWithRpcPromise('SendMail',_0xaa52('0x60'),_0x1f48d1,client9003)['then'](function(_0xe38a81){return _0x319d10[_0xaa52('0x61')]({'read':!![],'messageId':_0xe38a81['messageId'],'sentAt':moment()[_0xaa52('0x62')](_0xaa52('0x63'))});})[_0xaa52('0x1a')](function(_0x27928a){logger[_0xaa52('0x16')]('%s',JSON['stringify'](_0x27928a));return _0x319d10;});}return _0x319d10;});}return _0x319d10;}})[_0xaa52('0x11')](respondWithResult(_0x10bbcf,0xc9))[_0xaa52('0x1a')](handleError(_0x10bbcf,null));};exports[_0xaa52('0x64')]=function(_0x9890e8,_0x15396d){var _0xbf5460={'agent':{},'channel':_0xaa52('0x65')};if(_0x9890e8[_0xaa52('0x44')]['id']){delete _0x9890e8[_0xaa52('0x44')]['id'];}_0x9890e8[_0xaa52('0x44')][_0xaa52('0x66')]=!![];_0x9890e8[_0xaa52('0x44')][_0xaa52('0x67')]=moment()[_0xaa52('0x62')](_0xaa52('0x63'));_0x9890e8[_0xaa52('0x44')][_0xaa52('0x68')]=_0x9890e8[_0xaa52('0x44')][_0xaa52('0x68')]||_0x9890e8[_0xaa52('0x54')]['id'];_0xbf5460[_0xaa52('0x69')]['id']=_0x9890e8[_0xaa52('0x44')]['UserId'];return db[_0xaa52('0x3e')][_0xaa52('0x43')]({'where':{'id':_0x9890e8[_0xaa52('0x42')]['id'],'UserId':null}})[_0xaa52('0x11')](handleEntityNotFound(_0x15396d,null))[_0xaa52('0x11')](saveUpdates(_0x9890e8[_0xaa52('0x44')],null))[_0xaa52('0x11')](function(_0x2b7ab3){if(_0x2b7ab3){_0xbf5460[_0xaa52('0x18')]=_0x2b7ab3['get']({'plain':!![]});return db[_0xaa52('0x6a')][_0xaa52('0x43')]({'where':{'id':_0x2b7ab3[_0xaa52('0x6b')]}});}return null;})['then'](handleEntityNotFound(_0x15396d,null))[_0xaa52('0x11')](function(_0x1d5c59){if(_0x1d5c59){return _0x1d5c59[_0xaa52('0x61')]({'UserId':_0x9890e8[_0xaa52('0x44')][_0xaa52('0x68')],'read1stAt':_[_0xaa52('0x6c')](_0x1d5c59['read1stAt'])?moment()[_0xaa52('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xaa52('0x11')](function(_0x3ed750){if(_0x3ed750){_0xbf5460[_0xaa52('0x6d')]=_0x3ed750[_0xaa52('0x6e')]({'plain':!![]});interaction_log['info'](_0xaa52('0x6f'),_0x9890e8[_0xaa52('0x54')]['id'],_0x9890e8[_0xaa52('0x54')][_0xaa52('0x58')],_0x9890e8[_0xaa52('0x54')][_0xaa52('0x70')],_0xbf5460[_0xaa52('0x6d')]['id'],_0x9890e8['body']?JSON[_0xaa52('0x15')](_0x9890e8[_0xaa52('0x44')]):_0xaa52('0x71'));return respondWithRpcPromise(_0xaa52('0x72'),_0xaa52('0x73'),_0xbf5460);}return null;})['then'](function(_0x180de5){var _0x16ff7c=_0xaa52('0x74')+_0x180de5[_0xaa52('0x18')]['ContactId'];return db[_0xaa52('0x75')][_0xaa52('0x2c')](_0x16ff7c,{'type':db['Sequelize']['QueryTypes'][_0xaa52('0x76')],'raw':!![]})[_0xaa52('0x11')](function(_0x1ad3b6){return _0x1ad3b6;});})[_0xaa52('0x11')](function(_0x4a28ac){if(_0x4a28ac){_0xbf5460['message'][_0xaa52('0x77')]=_0x4a28ac[0x0];if(!_0x9890e8['body'][_0xaa52('0x68')])return;return db[_0xaa52('0x78')][_0xaa52('0x43')]({'where':{'id':_0x9890e8['body'][_0xaa52('0x68')],'role':'agent'},'attributes':['id',_0xaa52('0x58'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xaa52('0x11')](function(_0x5ea470){if(!_0x5ea470)return null;_0xbf5460[_0xaa52('0x18')][_0xaa52('0x69')]=_0x5ea470;return _0xbf5460;})[_0xaa52('0x11')](function(_0x109163){if(_0x109163){if(_0x9890e8['body'][_0xaa52('0x79')]){_0xbf5460['message']['interface']=util[_0xaa52('0x62')](_0xaa52('0x7a'),_0x9890e8[_0xaa52('0x54')][_0xaa52('0x58')]);_0xbf5460[_0xaa52('0x18')][_0xaa52('0x7b')]=_0xbf5460[_0xaa52('0x7b')];_0xbf5460['message'][_0xaa52('0x7c')]=_0xbf5460[_0xaa52('0x7b')];_0xbf5460['message'][_0xaa52('0x7d')]='accept';_0xbf5460[_0xaa52('0x18')][_0xaa52('0x44')]=htmlToText[_0xaa52('0x7e')](_0xbf5460[_0xaa52('0x18')][_0xaa52('0x44')]);return respondWithRpcPromise(_0xaa52('0x7f'),_0xaa52('0x7f'),{'event':_0xaa52('0x80'),'message':_0xbf5460[_0xaa52('0x18')]},client9002)[_0xaa52('0x11')](function(){return _0xbf5460;});}return _0xbf5460;}return null;})['then'](respondWithResult(_0x15396d,null))[_0xaa52('0x1a')](handleError(_0x15396d,null));};exports[_0xaa52('0x81')]=function(_0x531d12,_0x6708c6){var _0x1eda50={'agent':{},'channel':_0xaa52('0x65')};if(_0x531d12[_0xaa52('0x44')]['id']){delete _0x531d12[_0xaa52('0x44')]['id'];}_0x531d12[_0xaa52('0x44')][_0xaa52('0x68')]=_0x531d12[_0xaa52('0x44')][_0xaa52('0x68')]||_0x531d12['user']['id'];_0x1eda50[_0xaa52('0x69')]['id']=_0x531d12[_0xaa52('0x44')][_0xaa52('0x68')];return db[_0xaa52('0x3e')][_0xaa52('0x43')]({'where':{'id':_0x531d12[_0xaa52('0x42')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x6708c6,null))[_0xaa52('0x11')](function(_0x592012){if(_0x592012){_0x1eda50[_0xaa52('0x18')]=_0x592012[_0xaa52('0x6e')]({'plain':!![]});return db[_0xaa52('0x6a')][_0xaa52('0x43')]({'where':{'id':_0x592012[_0xaa52('0x6b')]}});}return null;})[_0xaa52('0x11')](handleEntityNotFound(_0x6708c6,null))[_0xaa52('0x11')](function(_0x594a28){if(_0x594a28){_0x1eda50[_0xaa52('0x6d')]=_0x594a28[_0xaa52('0x6e')]({'plain':!![]});interaction_log[_0xaa52('0x12')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x531d12[_0xaa52('0x54')]['id'],_0x531d12[_0xaa52('0x54')][_0xaa52('0x58')],_0x531d12[_0xaa52('0x54')][_0xaa52('0x70')],_0x1eda50[_0xaa52('0x6d')]['id'],_0x531d12[_0xaa52('0x44')]?JSON[_0xaa52('0x15')](_0x531d12[_0xaa52('0x44')]):_0xaa52('0x71'));return respondWithRpcPromise(_0xaa52('0x82'),_0xaa52('0x83'),_0x1eda50);}return null;})[_0xaa52('0x11')](function(_0x2b24f4){var _0x24af67=_0xaa52('0x74')+_0x2b24f4['message'][_0xaa52('0x84')];return db['sequelize'][_0xaa52('0x2c')](_0x24af67,{'type':db['Sequelize']['QueryTypes'][_0xaa52('0x76')],'raw':!![]})[_0xaa52('0x11')](function(_0x58c57b){return _0x58c57b;});})[_0xaa52('0x11')](function(_0x2da7cb){if(_0x2da7cb){_0x1eda50['message'][_0xaa52('0x77')]=_0x2da7cb[0x0];if(!_0x531d12[_0xaa52('0x44')][_0xaa52('0x68')])return;return db[_0xaa52('0x78')][_0xaa52('0x43')]({'where':{'id':_0x531d12[_0xaa52('0x44')][_0xaa52('0x68')],'role':_0xaa52('0x69')},'attributes':['id',_0xaa52('0x58'),_0xaa52('0x85'),'email','internal'],'raw':!![]});}return null;})[_0xaa52('0x11')](function(_0xf1441f){if(!_0xf1441f)return null;_0x1eda50['message'][_0xaa52('0x69')]=_0xf1441f;return _0x1eda50;})[_0xaa52('0x11')](function(_0x4bf038){if(_0x4bf038){_0x4bf038[_0xaa52('0x18')][_0xaa52('0x86')]=util[_0xaa52('0x62')](_0xaa52('0x7a'),_0x531d12[_0xaa52('0x54')][_0xaa52('0x58')]);_0x4bf038[_0xaa52('0x18')][_0xaa52('0x7b')]=_0x1eda50[_0xaa52('0x7b')];_0x4bf038[_0xaa52('0x18')][_0xaa52('0x7c')]=_0x1eda50[_0xaa52('0x7b')];_0x4bf038[_0xaa52('0x18')][_0xaa52('0x7d')]=_0xaa52('0x81');_0x4bf038[_0xaa52('0x18')][_0xaa52('0x44')]=htmlToText[_0xaa52('0x7e')](_0x1eda50['message'][_0xaa52('0x44')]);respondWithRpcPromise(_0xaa52('0x7f'),'EventManager',{'event':'rejectmessage','message':_0x4bf038[_0xaa52('0x18')]},client9002);return _0x1eda50;}return null;})['then'](respondWithResult(_0x6708c6,null))[_0xaa52('0x1a')](handleError(_0x6708c6,null));};exports[_0xaa52('0x87')]=function(_0x18653e,_0x410ac1){var _0x53a016=moment()[_0xaa52('0x88')]()[_0xaa52('0x89')]();var _0x3a43c6=path['join'](config['root'],_0xaa52('0x8a'),_0xaa52('0x8b'),_0xaa52('0x8c'));var _0x1a6476=path[_0xaa52('0x59')](config[_0xaa52('0x5a')],_0xaa52('0x8a'),'files',_0xaa52('0x57'));var _0x2b076e=util['format'](_0xaa52('0x8d'),_0x53a016);return db['MailMessage']['find']({'where':{'id':_0x18653e[_0xaa52('0x42')]['id']},'attributes':['id',_0xaa52('0x44'),_0xaa52('0x8e'),'to','cc',_0xaa52('0x8f'),'subject',_0xaa52('0x90')],'include':_0x18653e[_0xaa52('0x2c')][_0xaa52('0x57')]?[{'model':db[_0xaa52('0x91')],'as':_0xaa52('0x92')}]:undefined})[_0xaa52('0x11')](handleEntityNotFound(_0x410ac1,null))[_0xaa52('0x11')](function(_0x5c3ae9){if(_0x5c3ae9){var _0x26df6b=_0x5c3ae9;var _0x5f4afd={'from':_0x26df6b[_0xaa52('0x8e')],'to':_0x26df6b['to'],'subject':_0x26df6b[_0xaa52('0x93')],'html':_0x26df6b[_0xaa52('0x44')],'headers':{'Date':moment(_0x26df6b['createdAt'])['format'](_0xaa52('0x94'))},'attachments':[]};if(_0x5c3ae9['cc']){_0x5f4afd['headers']['Cc']=_0x5c3ae9['cc'];}if(_0x5c3ae9['bcc']){_0x5f4afd[_0xaa52('0x95')][_0xaa52('0x96')]=_0x5c3ae9[_0xaa52('0x8f')];}return new BPromise(function(_0x2a1ba0,_0x510310){if(_0x5c3ae9[_0xaa52('0x92')]){for(var _0x31053b=0x0;_0x31053b<_0x5c3ae9[_0xaa52('0x92')][_0xaa52('0x33')];_0x31053b++){var _0x5836ee=_0x5c3ae9[_0xaa52('0x92')][_0x31053b];var _0x4ea242=path[_0xaa52('0x59')](_0x1a6476,_0x5836ee[_0xaa52('0x97')]);if(fs['existsSync'](_0x4ea242)){_0x5f4afd['attachments']['push']({'name':_0x5836ee['name'],'contentType':_0x5836ee['type'],'data':fs[_0xaa52('0x98')](_0x4ea242)});}}}emlformat[_0xaa52('0x99')](_0x5f4afd,function(_0x1b8f3e,_0x16bf48){if(_0x1b8f3e)return _0x510310(_0x1b8f3e);fs['writeFileSync'](path['join'](_0x3a43c6,_0x2b076e),_0x16bf48);return _0x2a1ba0(_0x16bf48);});});}})[_0xaa52('0x11')](function(_0x528586){if(_0x528586){return _0x410ac1[_0xaa52('0x87')](path[_0xaa52('0x59')](_0x3a43c6,_0x2b076e),_0x2b076e,function(_0x40a246){if(!_0x40a246)fs[_0xaa52('0x9a')](path[_0xaa52('0x59')](_0x3a43c6,_0x2b076e));});}})[_0xaa52('0x1a')](handleError(_0x410ac1,null));};
\ No newline at end of file
+var _0x3e74=['join','root','server/files/attachments','basename','CmContact','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','get','MailInteraction','MailInteractionId','read1stAt','interaction','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','manual','interface','channel','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','contact','SIP/%s','event','download','tmp','files','message-%s.eml','subject','createdAt','Attachments','from','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','bcc','push','readFileSync','build','unlinkSync','eml-format','bluebird','util','path','html-to-text','../../config/logger','api','mail-interactions','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','client','http','then','info','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','count','Content-Range','destroy','end','sendStatus','stack','name','send','MailMessage','rawAttributes','fieldName','type','key','intersection','query','attributes','model','fields','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','options','findAll','keys','length','include','find','update','body','params','describe','create','out','secret','MailAccount','findOne','CmList','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','service','port','secure','authentication','auth','pass','user','attachments'];(function(_0x247794,_0x1a9571){var _0x42c966=function(_0x48b7c0){while(--_0x48b7c0){_0x247794['push'](_0x247794['shift']());}};_0x42c966(++_0x1a9571);}(_0x3e74,0x175));var _0x43e7=function(_0x334736,_0x49aedb){_0x334736=_0x334736-0x0;var _0x3b7969=_0x3e74[_0x334736];return _0x3b7969;};'use strict';var emlformat=require(_0x43e7('0x0'));var moment=require('moment');var BPromise=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var path=require(_0x43e7('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var htmlToText=require(_0x43e7('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x43e7('0x5'))(_0x43e7('0x6'));var interaction_log=require(_0x43e7('0x5'))(_0x43e7('0x7'));var config=require(_0x43e7('0x8'));var db=require('../../mysqldb')['db'];config[_0x43e7('0x9')]=_[_0x43e7('0xa')](config[_0x43e7('0x9')],{'host':_0x43e7('0xb'),'port':0x18eb});var socket=require(_0x43e7('0xc'))(new Redis(config['redis']));require(_0x43e7('0xd'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x43e7('0xe')][_0x43e7('0xf')]({'port':0x232c});var client9003=jayson['client'][_0x43e7('0xf')]({'port':0x232b});var client9002=jayson['client'][_0x43e7('0xf')]({'port':0x232a});function respondWithRpcPromise(_0x37302c,_0x4ebc8e,_0x3eb206,_0xc960ea){return new BPromise(function(_0x2718d3,_0x3bb83f){var _0x4e008c=_0xc960ea||client;return _0x4e008c['request'](_0x37302c,_0x3eb206)[_0x43e7('0x10')](function(_0x21fdd3){logger[_0x43e7('0x11')]('MailMessage,\x20%s,\x20%s',_0x4ebc8e,'request\x20sent');logger[_0x43e7('0x12')](_0x43e7('0x13'),_0x4ebc8e,_0x43e7('0x14'),JSON[_0x43e7('0x15')](_0x21fdd3));if(_0x21fdd3['error']){if(_0x21fdd3['error'][_0x43e7('0x16')]===0x1f4){logger[_0x43e7('0x17')](_0x43e7('0x18'),_0x4ebc8e,_0x21fdd3['error']['message']);return _0x3bb83f(_0x21fdd3[_0x43e7('0x17')][_0x43e7('0x19')]);}logger[_0x43e7('0x17')](_0x43e7('0x18'),_0x4ebc8e,_0x21fdd3[_0x43e7('0x17')][_0x43e7('0x19')]);return _0x2718d3(_0x21fdd3[_0x43e7('0x17')][_0x43e7('0x19')]);}else{logger[_0x43e7('0x11')](_0x43e7('0x18'),_0x4ebc8e,_0x43e7('0x14'));_0x2718d3(_0x21fdd3[_0x43e7('0x1a')]['message']);}})[_0x43e7('0x1b')](function(_0x3c6625){logger['error'](_0x43e7('0x18'),_0x4ebc8e,_0x3c6625);_0x3bb83f(_0x3c6625);});});}function respondWithResult(_0x3e281e,_0x3945bb){_0x3945bb=_0x3945bb||0xc8;return function(_0x28aacc){if(_0x28aacc){return _0x3e281e[_0x43e7('0x1c')](_0x3945bb)[_0x43e7('0x1d')](_0x28aacc);}};}function respondWithFilteredResult(_0x54a9e7,_0x454359){return function(_0x4eea52){if(_0x4eea52){var _0x4c9df3=typeof _0x454359[_0x43e7('0x1e')]===_0x43e7('0x1f')&&typeof _0x454359['limit']===_0x43e7('0x1f');var _0x4ca5cf=_0x4eea52[_0x43e7('0x20')];var _0x5c5e67=_0x4c9df3?0x0:_0x454359[_0x43e7('0x1e')];var _0x1b5f50=_0x4c9df3?_0x4eea52[_0x43e7('0x20')]:_0x454359[_0x43e7('0x1e')]+_0x454359['limit'];var _0x52b7b3;if(_0x1b5f50>=_0x4ca5cf){_0x1b5f50=_0x4ca5cf;_0x52b7b3=0xc8;}else{_0x52b7b3=0xce;}_0x54a9e7[_0x43e7('0x1c')](_0x52b7b3);return _0x54a9e7['set'](_0x43e7('0x21'),_0x5c5e67+'-'+_0x1b5f50+'/'+_0x4ca5cf)[_0x43e7('0x1d')](_0x4eea52);}return null;};}function saveUpdates(_0x3565cf){return function(_0xb1fc63){if(_0xb1fc63){return _0xb1fc63['update'](_0x3565cf)[_0x43e7('0x10')](function(_0x4690a6){return _0x4690a6;});}return null;};}function removeEntity(_0x45b675){return function(_0x50f9f5){if(_0x50f9f5){return _0x50f9f5[_0x43e7('0x22')]()[_0x43e7('0x10')](function(){_0x45b675[_0x43e7('0x1c')](0xcc)[_0x43e7('0x23')]();});}};}function handleEntityNotFound(_0x3bf475){return function(_0x35dbcd){if(!_0x35dbcd){_0x3bf475[_0x43e7('0x24')](0x194);}return _0x35dbcd;};}function handleError(_0x19725a,_0x2bde44){_0x2bde44=_0x2bde44||0x1f4;return function(_0x208706){logger['error'](_0x208706[_0x43e7('0x25')]);if(_0x208706[_0x43e7('0x26')]){delete _0x208706[_0x43e7('0x26')];}_0x19725a[_0x43e7('0x1c')](_0x2bde44)[_0x43e7('0x27')](_0x208706);};}exports['index']=function(_0x1eba65,_0x49b83d){var _0x30d47e={},_0x3f280d={},_0x4c61b9={'count':0x0,'rows':[]};var _0x5a7342=_['map'](db[_0x43e7('0x28')][_0x43e7('0x29')],function(_0x117c07){return{'name':_0x117c07[_0x43e7('0x2a')],'type':_0x117c07[_0x43e7('0x2b')][_0x43e7('0x2c')]};});_0x3f280d['model']=_['map'](_0x5a7342,'name');_0x3f280d['query']=_['keys'](_0x1eba65['query']);_0x3f280d['filters']=_[_0x43e7('0x2d')](_0x3f280d['model'],_0x3f280d[_0x43e7('0x2e')]);_0x30d47e[_0x43e7('0x2f')]=_[_0x43e7('0x2d')](_0x3f280d[_0x43e7('0x30')],qs[_0x43e7('0x31')](_0x1eba65[_0x43e7('0x2e')][_0x43e7('0x31')]));_0x30d47e['attributes']=_0x30d47e['attributes']['length']?_0x30d47e[_0x43e7('0x2f')]:_0x3f280d[_0x43e7('0x30')];if(!_0x1eba65[_0x43e7('0x2e')][_0x43e7('0x32')](_0x43e7('0x33'))){_0x30d47e[_0x43e7('0x34')]=qs[_0x43e7('0x34')](_0x1eba65[_0x43e7('0x2e')]['limit']);_0x30d47e[_0x43e7('0x1e')]=qs[_0x43e7('0x1e')](_0x1eba65['query'][_0x43e7('0x1e')]);}_0x30d47e['order']=qs[_0x43e7('0x35')](_0x1eba65[_0x43e7('0x2e')][_0x43e7('0x35')]);_0x30d47e[_0x43e7('0x36')]=qs[_0x43e7('0x37')](_[_0x43e7('0x38')](_0x1eba65['query'],_0x3f280d['filters']),_0x5a7342);if(_0x1eba65[_0x43e7('0x2e')][_0x43e7('0x39')]){_0x30d47e[_0x43e7('0x36')]=_[_0x43e7('0x3a')](_0x30d47e[_0x43e7('0x36')],{'$or':_['map'](_0x5a7342,function(_0x32a451){if(_0x32a451[_0x43e7('0x2b')]!=='VIRTUAL'){var _0x3628e0={};_0x3628e0[_0x32a451['name']]={'$like':'%'+_0x1eba65[_0x43e7('0x2e')]['filter']+'%'};return _0x3628e0;}})});}_0x30d47e=_[_0x43e7('0x3a')]({},_0x30d47e,_0x1eba65[_0x43e7('0x3b')]);var _0x3a5807={'where':_0x30d47e[_0x43e7('0x36')]};return db['MailMessage']['count'](_0x3a5807)[_0x43e7('0x10')](function(_0x40c509){_0x4c61b9[_0x43e7('0x20')]=_0x40c509;if(_0x1eba65[_0x43e7('0x2e')]['includeAll']){_0x30d47e['include']=[{'all':!![]}];}return db['MailMessage'][_0x43e7('0x3c')](_0x30d47e);})['then'](function(_0x2ab022){_0x4c61b9['rows']=_0x2ab022;return _0x4c61b9;})['then'](respondWithFilteredResult(_0x49b83d,_0x30d47e))[_0x43e7('0x1b')](handleError(_0x49b83d,null));};exports['show']=function(_0x2de14f,_0x39db7f){var _0x257bd8={'raw':!![],'where':{'id':_0x2de14f['params']['id']}},_0x99b9e1={};_0x99b9e1[_0x43e7('0x30')]=_[_0x43e7('0x3d')](db[_0x43e7('0x28')][_0x43e7('0x29')]);_0x99b9e1[_0x43e7('0x2e')]=_[_0x43e7('0x3d')](_0x2de14f['query']);_0x99b9e1['filters']=_[_0x43e7('0x2d')](_0x99b9e1[_0x43e7('0x30')],_0x99b9e1[_0x43e7('0x2e')]);_0x257bd8['attributes']=_['intersection'](_0x99b9e1['model'],qs[_0x43e7('0x31')](_0x2de14f[_0x43e7('0x2e')]['fields']));_0x257bd8[_0x43e7('0x2f')]=_0x257bd8[_0x43e7('0x2f')][_0x43e7('0x3e')]?_0x257bd8['attributes']:_0x99b9e1['model'];if(_0x2de14f['query']['includeAll']){_0x257bd8[_0x43e7('0x3f')]=[{'all':!![]}];}_0x257bd8=_[_0x43e7('0x3a')]({},_0x257bd8,_0x2de14f['options']);return db[_0x43e7('0x28')][_0x43e7('0x40')](_0x257bd8)[_0x43e7('0x10')](handleEntityNotFound(_0x39db7f,null))[_0x43e7('0x10')](respondWithResult(_0x39db7f,null))['catch'](handleError(_0x39db7f,null));};exports[_0x43e7('0x41')]=function(_0x483f20,_0x4bebd4){if(_0x483f20[_0x43e7('0x42')]['id']){delete _0x483f20[_0x43e7('0x42')]['id'];}return db[_0x43e7('0x28')][_0x43e7('0x40')]({'where':{'id':_0x483f20[_0x43e7('0x43')]['id']}})[_0x43e7('0x10')](handleEntityNotFound(_0x4bebd4,null))[_0x43e7('0x10')](saveUpdates(_0x483f20[_0x43e7('0x42')],null))[_0x43e7('0x10')](respondWithResult(_0x4bebd4,null))[_0x43e7('0x1b')](handleError(_0x4bebd4,null));};exports['destroy']=function(_0x119d34,_0x46c910){return db['MailMessage'][_0x43e7('0x40')]({'where':{'id':_0x119d34['params']['id']}})[_0x43e7('0x10')](handleEntityNotFound(_0x46c910,null))[_0x43e7('0x10')](removeEntity(_0x46c910,null))[_0x43e7('0x1b')](handleError(_0x46c910,null));};exports[_0x43e7('0x44')]=function(_0xfe13fa,_0x5e5556){return db['MailMessage'][_0x43e7('0x44')]()[_0x43e7('0x10')](respondWithResult(_0x5e5556,null))[_0x43e7('0x1b')](handleError(_0x5e5556,null));};exports[_0x43e7('0x45')]=function(_0x23d835,_0x25bb44){return db[_0x43e7('0x28')][_0x43e7('0x45')](_0x23d835[_0x43e7('0x42')])[_0x43e7('0x10')](function(_0x312306){if(_0x312306){if(_0x312306['direction']===_0x43e7('0x46')&&!_0x312306[_0x43e7('0x47')]){var _0x50a3fa,_0x4314d8,_0x220bf2;if(_0x23d835[_0x43e7('0x42')]['to']){_0x4314d8=_0x23d835['body']['to']['split'](',')[0x0];}return db[_0x43e7('0x48')][_0x43e7('0x49')]({'where':{'id':_0x312306['MailAccountId']},'include':[{'model':db[_0x43e7('0x4a')],'as':'List','include':[{'model':db['CmContact'],'as':_0x43e7('0x4b'),'where':{'email':_0x4314d8},'limit':0x1,'order':[[_0x43e7('0x4c'),_0x43e7('0x4d')]]}]},{'model':db[_0x43e7('0x4e')],'as':_0x43e7('0x4f'),'raw':!![]}]})['then'](function(_0xc3976){_0x50a3fa=_0xc3976;if(_0x50a3fa&&_0x50a3fa[_0x43e7('0x4f')]){var _0x4d89bd={'tls':{'rejectUnauthorized':![]}};if(_[_0x43e7('0x50')](_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x51')])){_0x4d89bd['host']=_0x50a3fa['Smtp']['host'];_0x4d89bd[_0x43e7('0x52')]=_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x52')];_0x4d89bd[_0x43e7('0x53')]=_0x50a3fa['Smtp']['secure'];if(_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x54')]){_0x4d89bd[_0x43e7('0x55')]={'user':_0x50a3fa[_0x43e7('0x4f')]['user'],'pass':_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x56')]};}}else{_0x4d89bd[_0x43e7('0x51')]=_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x51')];_0x4d89bd[_0x43e7('0x55')]={'user':_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x57')],'pass':_0x50a3fa[_0x43e7('0x4f')][_0x43e7('0x56')]};_0x4d89bd[_0x43e7('0x53')]=_0x50a3fa['Smtp']['secure'];}if(_0x23d835[_0x43e7('0x42')]['attachments']&&_0x23d835['body']['attachments'][_0x43e7('0x3e')]){for(var _0xe666b0=0x0;_0xe666b0<_0x23d835['body'][_0x43e7('0x58')][_0x43e7('0x3e')];_0xe666b0+=0x1){_0x23d835[_0x43e7('0x42')]['attachments'][_0xe666b0]={'filename':_0x23d835[_0x43e7('0x42')][_0x43e7('0x58')][_0xe666b0][_0x43e7('0x26')],'path':path[_0x43e7('0x59')](config[_0x43e7('0x5a')],_0x43e7('0x5b'),_0x23d835[_0x43e7('0x42')]['attachments'][_0xe666b0][_0x43e7('0x5c')])};}}_0x220bf2={'account':_0x4d89bd,'message':_0x23d835[_0x43e7('0x42')]};return;}})[_0x43e7('0x10')](function(){if(_0x50a3fa['List']){if(_0x50a3fa['List'][_0x43e7('0x4b')]['length']){return _0x50a3fa['List'][_0x43e7('0x4b')][0x0];}else{return db[_0x43e7('0x5d')]['create'](_[_0x43e7('0xa')](_0x23d835[_0x43e7('0x42')],{'firstName':_0x23d835[_0x43e7('0x42')]['to'],'email':_0x23d835[_0x43e7('0x42')]['to'],'phone':_0x23d835[_0x43e7('0x42')]['to'],'ListId':_0x50a3fa[_0x43e7('0x5e')]}));}}else{throw new Error(_0x43e7('0x5f'));}})['then'](function(){if(_0x220bf2){return respondWithRpcPromise(_0x43e7('0x60'),_0x43e7('0x61'),_0x220bf2,client9003)['then'](function(_0x418213){return _0x312306['update']({'read':!![],'messageId':_0x418213[_0x43e7('0x62')],'sentAt':moment()[_0x43e7('0x63')](_0x43e7('0x64'))});})[_0x43e7('0x1b')](function(_0x506361){logger[_0x43e7('0x17')]('%s',JSON[_0x43e7('0x15')](_0x506361));return _0x312306;});}return _0x312306;});}return _0x312306;}})[_0x43e7('0x10')](respondWithResult(_0x25bb44,0xc9))['catch'](handleError(_0x25bb44,null));};exports[_0x43e7('0x65')]=function(_0x38fa5b,_0x219dc6){var _0x703a30={'agent':{},'channel':_0x43e7('0x66')};if(_0x38fa5b['body']['id']){delete _0x38fa5b[_0x43e7('0x42')]['id'];}_0x38fa5b[_0x43e7('0x42')][_0x43e7('0x67')]=!![];_0x38fa5b[_0x43e7('0x42')][_0x43e7('0x68')]=moment()[_0x43e7('0x63')](_0x43e7('0x64'));_0x38fa5b['body']['UserId']=_0x38fa5b[_0x43e7('0x42')]['UserId']||_0x38fa5b['user']['id'];_0x703a30['agent']['id']=_0x38fa5b[_0x43e7('0x42')][_0x43e7('0x69')];return db[_0x43e7('0x28')][_0x43e7('0x40')]({'where':{'id':_0x38fa5b[_0x43e7('0x43')]['id'],'UserId':null}})[_0x43e7('0x10')](handleEntityNotFound(_0x219dc6,null))['then'](saveUpdates(_0x38fa5b[_0x43e7('0x42')],null))[_0x43e7('0x10')](function(_0x2cd420){if(_0x2cd420){_0x703a30['message']=_0x2cd420[_0x43e7('0x6a')]({'plain':!![]});return db[_0x43e7('0x6b')][_0x43e7('0x40')]({'where':{'id':_0x2cd420[_0x43e7('0x6c')]}});}return null;})[_0x43e7('0x10')](handleEntityNotFound(_0x219dc6,null))[_0x43e7('0x10')](function(_0x1d4a29){if(_0x1d4a29){return _0x1d4a29[_0x43e7('0x41')]({'UserId':_0x38fa5b['body']['UserId'],'read1stAt':_['isNil'](_0x1d4a29[_0x43e7('0x6d')])?moment()[_0x43e7('0x63')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x43e7('0x10')](function(_0x39a787){if(_0x39a787){_0x703a30[_0x43e7('0x6e')]=_0x39a787[_0x43e7('0x6a')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x38fa5b['user']['id'],_0x38fa5b[_0x43e7('0x57')][_0x43e7('0x26')],_0x38fa5b['user']['role'],_0x703a30[_0x43e7('0x6e')]['id'],_0x38fa5b[_0x43e7('0x42')]?JSON[_0x43e7('0x15')](_0x38fa5b['body']):_0x43e7('0x6f'));return respondWithRpcPromise(_0x43e7('0x70'),_0x43e7('0x71'),_0x703a30);}return null;})[_0x43e7('0x10')](function(_0x48f1dc){var _0x1d7048='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x48f1dc[_0x43e7('0x19')][_0x43e7('0x72')];return db[_0x43e7('0x73')][_0x43e7('0x2e')](_0x1d7048,{'type':db[_0x43e7('0x74')][_0x43e7('0x75')][_0x43e7('0x76')],'raw':!![]})['then'](function(_0x109c86){return _0x109c86;});})[_0x43e7('0x10')](function(_0x1aea4e){if(_0x1aea4e){_0x703a30[_0x43e7('0x19')]['contact']=_0x1aea4e[0x0];if(!_0x38fa5b['body']['UserId'])return;return db[_0x43e7('0x77')]['find']({'where':{'id':_0x38fa5b[_0x43e7('0x42')][_0x43e7('0x69')],'role':_0x43e7('0x78')},'attributes':['id',_0x43e7('0x26'),_0x43e7('0x79'),_0x43e7('0x7a'),_0x43e7('0x7b')],'raw':!![]});}return null;})[_0x43e7('0x10')](function(_0x363af5){if(!_0x363af5)return null;_0x703a30[_0x43e7('0x19')][_0x43e7('0x78')]=_0x363af5;return _0x703a30;})['then'](function(_0xeaef5c){if(_0xeaef5c){if(_0x38fa5b[_0x43e7('0x42')][_0x43e7('0x7c')]){_0x703a30[_0x43e7('0x19')][_0x43e7('0x7d')]=util['format']('SIP/%s',_0x38fa5b[_0x43e7('0x57')][_0x43e7('0x26')]);_0x703a30['message'][_0x43e7('0x7e')]=_0x703a30[_0x43e7('0x7e')];_0x703a30['message']['event']=_0x43e7('0x65');_0x703a30[_0x43e7('0x19')][_0x43e7('0x42')]=htmlToText[_0x43e7('0x7f')](_0x703a30[_0x43e7('0x19')]['body']);return respondWithRpcPromise('EventManager',_0x43e7('0x80'),{'event':_0x43e7('0x81'),'message':_0x703a30[_0x43e7('0x19')]},client9002)[_0x43e7('0x10')](function(){return _0x703a30;});}return _0x703a30;}return null;})['then'](respondWithResult(_0x219dc6,null))[_0x43e7('0x1b')](handleError(_0x219dc6,null));};exports[_0x43e7('0x82')]=function(_0x1ed590,_0x15ee83){var _0x5bc060={'agent':{},'channel':_0x43e7('0x66')};if(_0x1ed590[_0x43e7('0x42')]['id']){delete _0x1ed590[_0x43e7('0x42')]['id'];}_0x1ed590[_0x43e7('0x42')][_0x43e7('0x69')]=_0x1ed590['body'][_0x43e7('0x69')]||_0x1ed590[_0x43e7('0x57')]['id'];_0x5bc060['agent']['id']=_0x1ed590[_0x43e7('0x42')][_0x43e7('0x69')];return db[_0x43e7('0x28')][_0x43e7('0x40')]({'where':{'id':_0x1ed590['params']['id'],'UserId':null}})[_0x43e7('0x10')](handleEntityNotFound(_0x15ee83,null))['then'](function(_0x130b41){if(_0x130b41){_0x5bc060[_0x43e7('0x19')]=_0x130b41[_0x43e7('0x6a')]({'plain':!![]});return db[_0x43e7('0x6b')][_0x43e7('0x40')]({'where':{'id':_0x130b41[_0x43e7('0x6c')]}});}return null;})[_0x43e7('0x10')](handleEntityNotFound(_0x15ee83,null))[_0x43e7('0x10')](function(_0xa693a3){if(_0xa693a3){_0x5bc060['interaction']=_0xa693a3[_0x43e7('0x6a')]({'plain':!![]});interaction_log[_0x43e7('0x11')](_0x43e7('0x83'),_0x1ed590[_0x43e7('0x57')]['id'],_0x1ed590['user']['name'],_0x1ed590[_0x43e7('0x57')][_0x43e7('0x84')],_0x5bc060[_0x43e7('0x6e')]['id'],_0x1ed590['body']?JSON[_0x43e7('0x15')](_0x1ed590['body']):'null');return respondWithRpcPromise('RejectMessage',_0x43e7('0x85'),_0x5bc060);}return null;})['then'](function(_0x28f15e){var _0x233819=_0x43e7('0x86')+_0x28f15e[_0x43e7('0x19')][_0x43e7('0x72')];return db['sequelize']['query'](_0x233819,{'type':db[_0x43e7('0x74')][_0x43e7('0x75')]['SELECT'],'raw':!![]})[_0x43e7('0x10')](function(_0x10fd28){return _0x10fd28;});})[_0x43e7('0x10')](function(_0x3310ef){if(_0x3310ef){_0x5bc060[_0x43e7('0x19')][_0x43e7('0x87')]=_0x3310ef[0x0];if(!_0x1ed590[_0x43e7('0x42')][_0x43e7('0x69')])return;return db[_0x43e7('0x77')][_0x43e7('0x40')]({'where':{'id':_0x1ed590[_0x43e7('0x42')][_0x43e7('0x69')],'role':_0x43e7('0x78')},'attributes':['id',_0x43e7('0x26'),_0x43e7('0x79'),_0x43e7('0x7a'),_0x43e7('0x7b')],'raw':!![]});}return null;})[_0x43e7('0x10')](function(_0xec3d2a){if(!_0xec3d2a)return null;_0x5bc060[_0x43e7('0x19')][_0x43e7('0x78')]=_0xec3d2a;return _0x5bc060;})[_0x43e7('0x10')](function(_0x492c2f){if(_0x492c2f){_0x492c2f[_0x43e7('0x19')][_0x43e7('0x7d')]=util[_0x43e7('0x63')](_0x43e7('0x88'),_0x1ed590['user'][_0x43e7('0x26')]);_0x492c2f['message'][_0x43e7('0x7e')]=_0x5bc060[_0x43e7('0x7e')];_0x492c2f[_0x43e7('0x19')][_0x43e7('0x89')]=_0x43e7('0x82');_0x492c2f[_0x43e7('0x19')]['body']=htmlToText[_0x43e7('0x7f')](_0x5bc060[_0x43e7('0x19')][_0x43e7('0x42')]);respondWithRpcPromise(_0x43e7('0x80'),_0x43e7('0x80'),{'event':'rejectmessage','message':_0x492c2f['message']},client9002);return _0x5bc060;}return null;})[_0x43e7('0x10')](respondWithResult(_0x15ee83,null))['catch'](handleError(_0x15ee83,null));};exports[_0x43e7('0x8a')]=function(_0x45aef7,_0x35e743){var _0x29ef54=moment()['unix']()['toString']();var _0x52ddb7=path[_0x43e7('0x59')](config['root'],'server','files',_0x43e7('0x8b'));var _0x1e6ddb=path['join'](config[_0x43e7('0x5a')],'server',_0x43e7('0x8c'),_0x43e7('0x58'));var _0x271f55=util[_0x43e7('0x63')](_0x43e7('0x8d'),_0x29ef54);return db['MailMessage'][_0x43e7('0x40')]({'where':{'id':_0x45aef7[_0x43e7('0x43')]['id']},'attributes':['id',_0x43e7('0x42'),'from','to','cc','bcc',_0x43e7('0x8e'),_0x43e7('0x8f')],'include':_0x45aef7[_0x43e7('0x2e')][_0x43e7('0x58')]?[{'model':db['Attachment'],'as':_0x43e7('0x90')}]:undefined})[_0x43e7('0x10')](handleEntityNotFound(_0x35e743,null))[_0x43e7('0x10')](function(_0x56150e){if(_0x56150e){var _0x41a222=_0x56150e;var _0x2c410e={'from':_0x41a222[_0x43e7('0x91')],'to':_0x41a222['to'],'subject':_0x41a222[_0x43e7('0x8e')],'html':_0x41a222['body'],'headers':{'Date':moment(_0x41a222[_0x43e7('0x8f')])['format'](_0x43e7('0x92'))},'attachments':[]};if(_0x56150e['cc']){_0x2c410e[_0x43e7('0x93')]['Cc']=_0x56150e['cc'];}if(_0x56150e['bcc']){_0x2c410e['headers'][_0x43e7('0x94')]=_0x56150e[_0x43e7('0x95')];}return new BPromise(function(_0x21d001,_0x4600e5){if(_0x56150e[_0x43e7('0x90')]){for(var _0x28986d=0x0;_0x28986d<_0x56150e[_0x43e7('0x90')][_0x43e7('0x3e')];_0x28986d++){var _0x1bff0a=_0x56150e[_0x43e7('0x90')][_0x28986d];var _0x615c=path['join'](_0x1e6ddb,_0x1bff0a[_0x43e7('0x5c')]);if(fs['existsSync'](_0x615c)){_0x2c410e[_0x43e7('0x58')][_0x43e7('0x96')]({'name':_0x1bff0a[_0x43e7('0x26')],'contentType':_0x1bff0a['type'],'data':fs[_0x43e7('0x97')](_0x615c)});}}}emlformat[_0x43e7('0x98')](_0x2c410e,function(_0x119cd2,_0x352405){if(_0x119cd2)return _0x4600e5(_0x119cd2);fs['writeFileSync'](path[_0x43e7('0x59')](_0x52ddb7,_0x271f55),_0x352405);return _0x21d001(_0x352405);});});}})[_0x43e7('0x10')](function(_0x524dc2){if(_0x524dc2){return _0x35e743['download'](path['join'](_0x52ddb7,_0x271f55),_0x271f55,function(_0x124024){if(!_0x124024)fs[_0x43e7('0x99')](path[_0x43e7('0x59')](_0x52ddb7,_0x271f55));});}})[_0x43e7('0x1b')](handleError(_0x35e743,null));};
\ No newline at end of file
index b31da52..c8c256f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca91=['update','emit','hasOwnProperty','exports','../../mysqldb','MailMessage','setMaxListeners'];(function(_0x2ce4f6,_0x36784d){var _0x57ae67=function(_0x305eb7){while(--_0x305eb7){_0x2ce4f6['push'](_0x2ce4f6['shift']());}};_0x57ae67(++_0x36784d);}(_0xca91,0xdd));var _0x1ca9=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xca91[_0x40a045];return _0x1a687c;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0x1ca9('0x0'))['db'][_0x1ca9('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x1ca9('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1ca9('0x3'),'afterDestroy':'remove'};function emitEvent(_0x7537f1){return function(_0x1e66c1,_0x3054d6,_0x2c10e6){MailMessageEvents[_0x1ca9('0x4')](_0x7537f1+':'+_0x1e66c1['id'],_0x1e66c1);MailMessageEvents[_0x1ca9('0x4')](_0x7537f1,_0x1e66c1);_0x2c10e6(null);};}for(var e in events){if(events[_0x1ca9('0x5')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x1ca9('0x6')]=MailMessageEvents;
\ No newline at end of file
+var _0xc663=['exports','events','MailMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x13e150,_0x2d4c71){var _0x1d1b72=function(_0x5f4266){while(--_0x5f4266){_0x13e150['push'](_0x13e150['shift']());}};_0x1d1b72(++_0x2d4c71);}(_0xc663,0x79));var _0x3c66=function(_0x556e63,_0x16abaf){_0x556e63=_0x556e63-0x0;var _0x1f18a9=_0xc663[_0x556e63];return _0x1f18a9;};'use strict';var EventEmitter=require(_0x3c66('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x3c66('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x3c66('0x2')](0x0);var events={'afterCreate':_0x3c66('0x3'),'afterUpdate':_0x3c66('0x4'),'afterDestroy':_0x3c66('0x5')};function emitEvent(_0x539f8f){return function(_0x2a1939,_0x3954fe,_0x52ccea){MailMessageEvents[_0x3c66('0x6')](_0x539f8f+':'+_0x2a1939['id'],_0x2a1939);MailMessageEvents[_0x3c66('0x6')](_0x539f8f,_0x2a1939);_0x52ccea(null);};}for(var e in events){if(events[_0x3c66('0x7')](e)){var event=events[e];MailMessage[_0x3c66('0x8')](e,emitEvent(event));}}module[_0x3c66('0x9')]=MailMessageEvents;
\ No newline at end of file
index 05c8c2b..ca81397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fa3=['html-to-text','rimraf','../../config/environment','./mailMessage.attributes','exports','define','mail_messages','messageId','fti_mail_messages','subject','body','plainBody','fromString','models','get','direction','toLowerCase','out','secret','isNil','MailInteraction','findOne','MailInteractionId','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x8fa3,0x1b4));var _0x38fa=function(_0x3814dc,_0x2d7fdb){_0x3814dc=_0x3814dc-0x0;var _0x5f4198=_0x8fa3[_0x3814dc];return _0x5f4198;};'use strict';var _=require(_0x38fa('0x0'));var util=require(_0x38fa('0x1'));var logger=require(_0x38fa('0x2'))(_0x38fa('0x3'));var moment=require('moment');var BPromise=require(_0x38fa('0x4'));var rp=require(_0x38fa('0x5'));var htmlToText=require(_0x38fa('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x38fa('0x7'));var config=require(_0x38fa('0x8'));var attributes=require(_0x38fa('0x9'));module[_0x38fa('0xa')]=function(_0x3aee67,_0x3a2cf8){return _0x3aee67[_0x38fa('0xb')]('MailMessage',attributes,{'tableName':_0x38fa('0xc'),'paranoid':![],'indexes':[{'name':_0x38fa('0xd'),'fields':['messageId']},{'name':_0x38fa('0xe'),'fields':['plainBody',_0x38fa('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x55db43,_0xda8923,_0x1f90e0){if(_0x55db43[_0x38fa('0x10')]){_0x55db43[_0x38fa('0x11')]=htmlToText[_0x38fa('0x12')](_0x55db43[_0x38fa('0x10')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1f90e0(null,_0xda8923);},'afterCreate':function(_0x1a74a4,_0x40a11a,_0xd1de07){var _0x2cc859=_0x3aee67[_0x38fa('0x13')];var _0x3ffb8c=_0x1a74a4[_0x38fa('0x14')]({'plain':!![]});if(_0x3ffb8c['direction']['toLowerCase']()==='in'||_0x3ffb8c[_0x38fa('0x15')][_0x38fa('0x16')]()===_0x38fa('0x17')&&!_0x3ffb8c[_0x38fa('0x18')]&&!_[_0x38fa('0x19')](_0x3ffb8c['UserId'])){_0x2cc859[_0x38fa('0x1a')][_0x38fa('0x1b')]({'where':{'id':_0x3ffb8c[_0x38fa('0x1c')]}})['then'](function(_0x234284){if(_0x234284){_0x234284[_0x38fa('0x1d')]({'lastMsgAt':_0x3ffb8c[_0x38fa('0x1e')],'lastMsgDirection':_0x3ffb8c[_0x38fa('0x15')][_0x38fa('0x16')]()});}})[_0x38fa('0x1f')](function(_0x4f5528){console[_0x38fa('0x20')](_0x4f5528);});}_0xd1de07();}},'charset':'utf8mb4','collate':_0x38fa('0x21')});};
\ No newline at end of file
+var _0x7268=['plainBody','FULLTEXT','body','direction','toLowerCase','out','secret','isNil','MailInteraction','MailInteractionId','then','update','createdAt','catch','error','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','./mailMessage.attributes','exports','define','mail_messages','messageId','fti_mail_messages'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7268,0x128));var _0x8726=function(_0x310883,_0x14ffba){_0x310883=_0x310883-0x0;var _0x4b974b=_0x7268[_0x310883];return _0x4b974b;};'use strict';var _=require('lodash');var util=require(_0x8726('0x0'));var logger=require(_0x8726('0x1'))('api');var moment=require(_0x8726('0x2'));var BPromise=require(_0x8726('0x3'));var rp=require(_0x8726('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x8726('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8726('0x6'));module[_0x8726('0x7')]=function(_0x3e241e,_0x5430bd){return _0x3e241e[_0x8726('0x8')]('MailMessage',attributes,{'tableName':_0x8726('0x9'),'paranoid':![],'indexes':[{'name':_0x8726('0xa'),'fields':[_0x8726('0xa')]},{'name':_0x8726('0xb'),'fields':[_0x8726('0xc'),'subject'],'type':_0x8726('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x53093f,_0x51e99f,_0x53063a){if(_0x53093f[_0x8726('0xe')]){_0x53093f['plainBody']=htmlToText['fromString'](_0x53093f['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x53063a(null,_0x51e99f);},'afterCreate':function(_0x37ca45,_0x931994,_0x3e4a95){var _0x22b5be=_0x3e241e['models'];var _0x2398e7=_0x37ca45['get']({'plain':!![]});if(_0x2398e7[_0x8726('0xf')][_0x8726('0x10')]()==='in'||_0x2398e7['direction']['toLowerCase']()===_0x8726('0x11')&&!_0x2398e7[_0x8726('0x12')]&&!_[_0x8726('0x13')](_0x2398e7['UserId'])){_0x22b5be[_0x8726('0x14')]['findOne']({'where':{'id':_0x2398e7[_0x8726('0x15')]}})[_0x8726('0x16')](function(_0x9be974){if(_0x9be974){_0x9be974[_0x8726('0x17')]({'lastMsgAt':_0x2398e7[_0x8726('0x18')],'lastMsgDirection':_0x2398e7['direction']['toLowerCase']()});}})[_0x8726('0x19')](function(_0x1add0d){console[_0x8726('0x1a')](_0x1add0d);});}_0x3e4a95();}},'charset':'utf8mb4','collate':_0x8726('0x1b')});};
\ No newline at end of file
index c34665d..6f15644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8952=['error','message','MailMessage,\x20%s,\x20%s','result','catch','create','body','options','raw','CreateMailMessage','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailMessage.socket','then','info','request\x20sent','debug','stringify','code'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8952,0x17e));var _0x2895=function(_0x4f460c,_0x5ed6c1){_0x4f460c=_0x4f460c-0x0;var _0x4d769a=_0x8952[_0x4f460c];return _0x4d769a;};'use strict';var _=require('lodash');var util=require(_0x2895('0x0'));var moment=require(_0x2895('0x1'));var BPromise=require(_0x2895('0x2'));var rs=require(_0x2895('0x3'));var fs=require('fs');var Redis=require(_0x2895('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2895('0x5'));var logger=require(_0x2895('0x6'))(_0x2895('0x7'));var config=require('../../config/environment');var jayson=require(_0x2895('0x8'));var client=jayson[_0x2895('0x9')][_0x2895('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x2895('0xb')],{'host':_0x2895('0xc'),'port':0x18eb});var socket=require(_0x2895('0xd'))(new Redis(config[_0x2895('0xb')]));require(_0x2895('0xe'))['register'](socket);function respondWithRpcPromise(_0x14fb67,_0x5f2632,_0x428772){return new BPromise(function(_0x5af454,_0x5e66fc){return client['request'](_0x14fb67,_0x428772)[_0x2895('0xf')](function(_0x1829a2){logger[_0x2895('0x10')]('MailMessage,\x20%s,\x20%s',_0x5f2632,_0x2895('0x11'));logger[_0x2895('0x12')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x5f2632,_0x2895('0x11'),JSON[_0x2895('0x13')](_0x1829a2));if(_0x1829a2['error']){if(_0x1829a2['error'][_0x2895('0x14')]===0x1f4){logger[_0x2895('0x15')]('MailMessage,\x20%s,\x20%s',_0x5f2632,_0x1829a2[_0x2895('0x15')][_0x2895('0x16')]);return _0x5e66fc(_0x1829a2[_0x2895('0x15')][_0x2895('0x16')]);}logger[_0x2895('0x15')](_0x2895('0x17'),_0x5f2632,_0x1829a2[_0x2895('0x15')][_0x2895('0x16')]);return _0x5af454(_0x1829a2[_0x2895('0x15')][_0x2895('0x16')]);}else{logger[_0x2895('0x10')](_0x2895('0x17'),_0x5f2632,_0x2895('0x11'));_0x5af454(_0x1829a2[_0x2895('0x18')][_0x2895('0x16')]);}})[_0x2895('0x19')](function(_0x2fe8fe){logger[_0x2895('0x15')]('MailMessage,\x20%s,\x20%s',_0x5f2632,_0x2fe8fe);_0x5e66fc(_0x2fe8fe);});});}exports['CreateMailMessage']=function(_0x493851){var _0x442cfa=this;return new Promise(function(_0x12c2fb,_0x3ec4da){return db['MailMessage'][_0x2895('0x1a')](_0x493851[_0x2895('0x1b')],{'raw':_0x493851[_0x2895('0x1c')]?_0x493851[_0x2895('0x1c')][_0x2895('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x30c6c3){logger[_0x2895('0x10')]('CreateMailMessage',_0x493851);logger[_0x2895('0x12')](_0x2895('0x1e'),_0x493851,JSON[_0x2895('0x13')](_0x30c6c3));_0x12c2fb(_0x30c6c3);})['catch'](function(_0x4e884f){logger[_0x2895('0x15')](_0x2895('0x1e'),_0x4e884f[_0x2895('0x16')],_0x493851);_0x3ec4da(_0x442cfa['error'](0x1f4,_0x4e884f[_0x2895('0x16')]));});});};
\ No newline at end of file
+var _0x6cb4=['result','catch','CreateMailMessage','MailMessage','create','body','options','raw','info','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','register','request','then','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','MailMessage,\x20%s,\x20%s','message'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6cb4,0xff));var _0x46cb=function(_0x2f6bd6,_0x28de85){_0x2f6bd6=_0x2f6bd6-0x0;var _0x184b57=_0x6cb4[_0x2f6bd6];return _0x184b57;};'use strict';var _=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var moment=require(_0x46cb('0x2'));var BPromise=require(_0x46cb('0x3'));var rs=require(_0x46cb('0x4'));var fs=require('fs');var Redis=require(_0x46cb('0x5'));var db=require(_0x46cb('0x6'))['db'];var utils=require(_0x46cb('0x7'));var logger=require(_0x46cb('0x8'))('rpc');var config=require(_0x46cb('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x46cb('0xa')]['http']({'port':0x232a});config[_0x46cb('0xb')]=_[_0x46cb('0xc')](config[_0x46cb('0xb')],{'host':_0x46cb('0xd'),'port':0x18eb});var socket=require(_0x46cb('0xe'))(new Redis(config[_0x46cb('0xb')]));require('./mailMessage.socket')[_0x46cb('0xf')](socket);function respondWithRpcPromise(_0x34f9e9,_0x48101c,_0x206f10){return new BPromise(function(_0x106a87,_0x4a60b2){return client[_0x46cb('0x10')](_0x34f9e9,_0x206f10)[_0x46cb('0x11')](function(_0x570cfd){logger['info']('MailMessage,\x20%s,\x20%s',_0x48101c,_0x46cb('0x12'));logger[_0x46cb('0x13')](_0x46cb('0x14'),_0x48101c,_0x46cb('0x12'),JSON['stringify'](_0x570cfd));if(_0x570cfd[_0x46cb('0x15')]){if(_0x570cfd[_0x46cb('0x15')][_0x46cb('0x16')]===0x1f4){logger[_0x46cb('0x15')](_0x46cb('0x17'),_0x48101c,_0x570cfd[_0x46cb('0x15')][_0x46cb('0x18')]);return _0x4a60b2(_0x570cfd[_0x46cb('0x15')][_0x46cb('0x18')]);}logger[_0x46cb('0x15')](_0x46cb('0x17'),_0x48101c,_0x570cfd['error'][_0x46cb('0x18')]);return _0x106a87(_0x570cfd['error'][_0x46cb('0x18')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x48101c,'request\x20sent');_0x106a87(_0x570cfd[_0x46cb('0x19')][_0x46cb('0x18')]);}})[_0x46cb('0x1a')](function(_0xcc8e2){logger[_0x46cb('0x15')](_0x46cb('0x17'),_0x48101c,_0xcc8e2);_0x4a60b2(_0xcc8e2);});});}exports[_0x46cb('0x1b')]=function(_0x32e9fe){var _0x90cd50=this;return new Promise(function(_0xfc9064,_0x149483){return db[_0x46cb('0x1c')][_0x46cb('0x1d')](_0x32e9fe[_0x46cb('0x1e')],{'raw':_0x32e9fe[_0x46cb('0x1f')]?_0x32e9fe[_0x46cb('0x1f')][_0x46cb('0x20')]===undefined?!![]:![]:!![]})[_0x46cb('0x11')](function(_0x41ecd2){logger[_0x46cb('0x21')](_0x46cb('0x1b'),_0x32e9fe);logger[_0x46cb('0x13')](_0x46cb('0x1b'),_0x32e9fe,JSON[_0x46cb('0x22')](_0x41ecd2));_0xfc9064(_0x41ecd2);})[_0x46cb('0x1a')](function(_0x5a1338){logger['error'](_0x46cb('0x1b'),_0x5a1338[_0x46cb('0x18')],_0x32e9fe);_0x149483(_0x90cd50[_0x46cb('0x15')](0x1f4,_0x5a1338[_0x46cb('0x18')]));});});};
\ No newline at end of file
index 6734d20..93a9471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9011=['removeListener','register','length','mailMessage:','save','remove','update','emit'];(function(_0x354f9c,_0x384808){var _0x4895de=function(_0x164fa8){while(--_0x164fa8){_0x354f9c['push'](_0x354f9c['shift']());}};_0x4895de(++_0x384808);}(_0x9011,0x1f4));var _0x1901=function(_0x107c91,_0x2501fb){_0x107c91=_0x107c91-0x0;var _0x10c538=_0x9011[_0x107c91];return _0x10c538;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x1901('0x0'),_0x1901('0x1'),_0x1901('0x2')];function createListener(_0xfd2f29,_0x15bebe){return function(_0x307f27){_0x15bebe[_0x1901('0x3')](_0xfd2f29,_0x307f27);};}function removeListener(_0x164e28,_0x4a1b08){return function(){MailMessageEvents[_0x1901('0x4')](_0x164e28,_0x4a1b08);};}exports[_0x1901('0x5')]=function(_0x1f62b0){for(var _0x2113e0=0x0,_0x55260b=events[_0x1901('0x6')];_0x2113e0<_0x55260b;_0x2113e0++){var _0x1baab6=events[_0x2113e0];var _0xa94186=createListener(_0x1901('0x7')+_0x1baab6,_0x1f62b0);MailMessageEvents['on'](_0x1baab6,_0xa94186);}};
\ No newline at end of file
+var _0x60c3=['save','remove','register','length','mailMessage:','./mailMessage.events'];(function(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0x60c3,0x173));var _0x360c=function(_0x3cea21,_0x56261a){_0x3cea21=_0x3cea21-0x0;var _0x816f94=_0x60c3[_0x3cea21];return _0x816f94;};'use strict';var MailMessageEvents=require(_0x360c('0x0'));var events=[_0x360c('0x1'),_0x360c('0x2'),'update'];function createListener(_0x536c3d,_0x34f93b){return function(_0x41a506){_0x34f93b['emit'](_0x536c3d,_0x41a506);};}function removeListener(_0xcf2993,_0x172cb0){return function(){MailMessageEvents['removeListener'](_0xcf2993,_0x172cb0);};}exports[_0x360c('0x3')]=function(_0x177a3f){for(var _0x295307=0x0,_0x640509=events[_0x360c('0x4')];_0x295307<_0x640509;_0x295307++){var _0x3f634a=events[_0x295307];var _0x1d9e52=createListener(_0x360c('0x5')+_0x3f634a,_0x177a3f);MailMessageEvents['on'](_0x3f634a,_0x1d9e52);}};
\ No newline at end of file
index 3013287..8227ba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0be6=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','/:id/teams','/:id/users','getAgents','post','create','/:id','destroy','removeTeams','delete','removeAgents','exports','multer','util','path'];(function(_0xa096ec,_0x111c7c){var _0x3a7c49=function(_0x1a3b10){while(--_0x1a3b10){_0xa096ec['push'](_0xa096ec['shift']());}};_0x3a7c49(++_0x111c7c);}(_0x0be6,0x192));var _0x60be=function(_0x359121,_0x6fdec3){_0x359121=_0x359121-0x0;var _0x3162ec=_0x0be6[_0x359121];return _0x3162ec;};'use strict';var multer=require(_0x60be('0x0'));var util=require(_0x60be('0x1'));var path=require(_0x60be('0x2'));var timeout=require(_0x60be('0x3'));var express=require('express');var router=express[_0x60be('0x4')]();var fs_extra=require(_0x60be('0x5'));var auth=require(_0x60be('0x6'));var interaction=require(_0x60be('0x7'));var config=require(_0x60be('0x8'));var controller=require('./mailQueue.controller');router[_0x60be('0x9')]('/',auth[_0x60be('0xa')](),controller[_0x60be('0xb')]);router[_0x60be('0x9')](_0x60be('0xc'),auth[_0x60be('0xa')](),controller[_0x60be('0xd')]);router['get']('/:id',auth[_0x60be('0xa')](),controller[_0x60be('0xe')]);router[_0x60be('0x9')](_0x60be('0xf'),auth[_0x60be('0xa')](),controller['getMembers']);router[_0x60be('0x9')](_0x60be('0x10'),auth[_0x60be('0xa')](),controller['getTeams']);router[_0x60be('0x9')](_0x60be('0x11'),auth['isAuthenticated'](),controller[_0x60be('0x12')]);router[_0x60be('0x13')]('/',auth[_0x60be('0xa')](),controller[_0x60be('0x14')]);router[_0x60be('0x13')](_0x60be('0x10'),auth[_0x60be('0xa')](),controller['addTeams']);router['post'](_0x60be('0x11'),auth[_0x60be('0xa')](),controller['addAgents']);router['put'](_0x60be('0x15'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x60be('0x15'),auth['isAuthenticated'](),controller[_0x60be('0x16')]);router['delete'](_0x60be('0x10'),auth['isAuthenticated'](),controller[_0x60be('0x17')]);router[_0x60be('0x18')]('/:id/users',auth[_0x60be('0xa')](),controller[_0x60be('0x19')]);module[_0x60be('0x1a')]=router;
\ No newline at end of file
+var _0xe7b2=['/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','destroy','delete','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0xe7b2,0x1e8));var _0x2e7b=function(_0x259a59,_0x43b0ff){_0x259a59=_0x259a59-0x0;var _0x49613c=_0xe7b2[_0x259a59];return _0x49613c;};'use strict';var multer=require(_0x2e7b('0x0'));var util=require(_0x2e7b('0x1'));var path=require('path');var timeout=require(_0x2e7b('0x2'));var express=require(_0x2e7b('0x3'));var router=express[_0x2e7b('0x4')]();var fs_extra=require(_0x2e7b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2e7b('0x6'));var config=require('../../config/environment');var controller=require('./mailQueue.controller');router[_0x2e7b('0x7')]('/',auth[_0x2e7b('0x8')](),controller[_0x2e7b('0x9')]);router[_0x2e7b('0x7')]('/describe',auth[_0x2e7b('0x8')](),controller['describe']);router[_0x2e7b('0x7')](_0x2e7b('0xa'),auth[_0x2e7b('0x8')](),controller[_0x2e7b('0xb')]);router['get']('/:id/members',auth[_0x2e7b('0x8')](),controller['getMembers']);router[_0x2e7b('0x7')](_0x2e7b('0xc'),auth['isAuthenticated'](),controller[_0x2e7b('0xd')]);router['get'](_0x2e7b('0xe'),auth[_0x2e7b('0x8')](),controller[_0x2e7b('0xf')]);router[_0x2e7b('0x10')]('/',auth[_0x2e7b('0x8')](),controller['create']);router['post'](_0x2e7b('0xc'),auth[_0x2e7b('0x8')](),controller[_0x2e7b('0x11')]);router['post']('/:id/users',auth[_0x2e7b('0x8')](),controller[_0x2e7b('0x12')]);router[_0x2e7b('0x13')](_0x2e7b('0xa'),auth[_0x2e7b('0x8')](),controller[_0x2e7b('0x14')]);router['delete']('/:id',auth[_0x2e7b('0x8')](),controller[_0x2e7b('0x15')]);router[_0x2e7b('0x16')](_0x2e7b('0xc'),auth['isAuthenticated'](),controller['removeTeams']);router['delete'](_0x2e7b('0xe'),auth[_0x2e7b('0x8')](),controller[_0x2e7b('0x17')]);module[_0x2e7b('0x18')]=router;
\ No newline at end of file
index e71c56b..99180e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb17d=['ENUM','rrmemory','sequelize','exports','STRING','INTEGER'];(function(_0x389771,_0x5ac871){var _0x368cb8=function(_0x196f90){while(--_0x196f90){_0x389771['push'](_0x389771['shift']());}};_0x368cb8(++_0x5ac871);}(_0xb17d,0x10a));var _0xdb17=function(_0x4dda1a,_0x126ee9){_0x4dda1a=_0x4dda1a-0x0;var _0x5b916e=_0xb17d[_0x4dda1a];return _0x5b916e;};'use strict';var Sequelize=require(_0xdb17('0x0'));module[_0xdb17('0x1')]={'name':{'type':Sequelize[_0xdb17('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xdb17('0x2')]},'timeout':{'type':Sequelize[_0xdb17('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xdb17('0x4')](_0xdb17('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0xd68f=['STRING','name','INTEGER','ENUM','rrmemory','roundrobin','exports'];(function(_0xf89daf,_0x3221bf){var _0x28f3d4=function(_0x11ce1a){while(--_0x11ce1a){_0xf89daf['push'](_0xf89daf['shift']());}};_0x28f3d4(++_0x3221bf);}(_0xd68f,0x172));var _0xfd68=function(_0x11bb0b,_0x5ac3ac){_0x11bb0b=_0x11bb0b-0x0;var _0x66b340=_0xd68f[_0x11bb0b];return _0x66b340;};'use strict';var Sequelize=require('sequelize');module[_0xfd68('0x0')]={'name':{'type':Sequelize[_0xfd68('0x1')],'unique':_0xfd68('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xfd68('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xfd68('0x4')](_0xfd68('0x5'),'beepall',_0xfd68('0x6'))}};
\ No newline at end of file
index c43674c..efb2bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae3=['format','%s/%s','SIP','mailPause','Team','getTeams','addTeams','ids','voicePause','interface','flatMap','Agents','transaction','each','findOrCreate','forEach','emit','select','from','join','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','push','sequelize','toString','QueryTypes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','userMailQueue:save','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','get','MailQueues','UserProfileResource','destroy','error','stack','name','send','map','rawAttributes','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','MailQueue','findAll','rows','catch','params','length','include','create','body','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserMailQueue','order','MailQueueId','User','UserId','updatedAt','createdAt'];(function(_0x127f90,_0x3c8b66){var _0x5b1944=function(_0x451a8e){while(--_0x451a8e){_0x127f90['push'](_0x127f90['shift']());}};_0x5b1944(++_0x3c8b66);}(_0x1ae3,0x139));var _0x31ae=function(_0x58ffd7,_0x43c327){_0x58ffd7=_0x58ffd7-0x0;var _0x59d583=_0x1ae3[_0x58ffd7];return _0x59d583;};'use strict';var emlformat=require(_0x31ae('0x0'));var rimraf=require(_0x31ae('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x31ae('0x2'));var rp=require(_0x31ae('0x3'));var moment=require(_0x31ae('0x4'));var BPromise=require(_0x31ae('0x5'));var Mustache=require('mustache');var util=require(_0x31ae('0x6'));var path=require(_0x31ae('0x7'));var sox=require(_0x31ae('0x8'));var csv=require(_0x31ae('0x9'));var ejs=require(_0x31ae('0xa'));var fs=require('fs');var fs_extra=require(_0x31ae('0xb'));var _=require(_0x31ae('0xc'));var squel=require(_0x31ae('0xd'));var crypto=require(_0x31ae('0xe'));var jsforce=require(_0x31ae('0xf'));var deskjs=require(_0x31ae('0x10'));var toCsv=require(_0x31ae('0x9'));var querystring=require(_0x31ae('0x11'));var Papa=require(_0x31ae('0x12'));var Redis=require(_0x31ae('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x31ae('0x14'));var as=require(_0x31ae('0x15'));var hardwareService=require(_0x31ae('0x16'));var logger=require('../../config/logger')(_0x31ae('0x17'));var utils=require(_0x31ae('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x31ae('0x19'));var db=require('../../mysqldb')['db'];config[_0x31ae('0x1a')]=_[_0x31ae('0x1b')](config[_0x31ae('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x31ae('0x1c'))(new Redis(config[_0x31ae('0x1a')]));require(_0x31ae('0x1d'))[_0x31ae('0x1e')](socket);function respondWithStatusCode(_0x2b1fc2,_0x273c94){_0x273c94=_0x273c94||0xcc;return function(_0x48963a){if(_0x48963a){return _0x2b1fc2[_0x31ae('0x1f')](_0x273c94);}return _0x2b1fc2[_0x31ae('0x20')](_0x273c94)[_0x31ae('0x21')]();};}function respondWithResult(_0x314849,_0x1fc2cf){_0x1fc2cf=_0x1fc2cf||0xc8;return function(_0x2449ea){if(_0x2449ea){return _0x314849[_0x31ae('0x20')](_0x1fc2cf)[_0x31ae('0x22')](_0x2449ea);}};}function respondWithFilteredResult(_0x5aa824,_0xcd30cc){return function(_0x58d574){if(_0x58d574){var _0xf9dd56=typeof _0xcd30cc[_0x31ae('0x23')]===_0x31ae('0x24')&&typeof _0xcd30cc[_0x31ae('0x25')]===_0x31ae('0x24');var _0x26699c=_0x58d574[_0x31ae('0x26')];var _0x30b3fa=_0xf9dd56?0x0:_0xcd30cc[_0x31ae('0x23')];var _0x251fd7=_0xf9dd56?_0x58d574[_0x31ae('0x26')]:_0xcd30cc[_0x31ae('0x23')]+_0xcd30cc['limit'];var _0x448cc2;if(_0x251fd7>=_0x26699c){_0x251fd7=_0x26699c;_0x448cc2=0xc8;}else{_0x448cc2=0xce;}_0x5aa824[_0x31ae('0x20')](_0x448cc2);return _0x5aa824[_0x31ae('0x27')](_0x31ae('0x28'),_0x30b3fa+'-'+_0x251fd7+'/'+_0x26699c)['json'](_0x58d574);}return null;};}function patchUpdates(_0x2729b0){return function(_0x1828b1){try{jsonpatch['apply'](_0x1828b1,_0x2729b0,!![]);}catch(_0x27ccad){return BPromise['reject'](_0x27ccad);}return _0x1828b1[_0x31ae('0x29')]();};}function saveUpdates(_0x56f9c4,_0x59827a){return function(_0x2219ce){if(_0x2219ce){return _0x2219ce[_0x31ae('0x2a')](_0x56f9c4)[_0x31ae('0x2b')](function(_0x4c86ba){return _0x4c86ba;});}return null;};}function removeEntity(_0x4d18c0,_0x4c0246){return function(_0x431890){if(_0x431890){return _0x431890['destroy']()[_0x31ae('0x2b')](function(){var _0x2b5230=_0x431890[_0x31ae('0x2c')]({'plain':!![]});var _0xb99935=_0x31ae('0x2d');return db[_0x31ae('0x2e')][_0x31ae('0x2f')]({'where':{'type':_0xb99935,'resourceId':_0x2b5230['id']}})[_0x31ae('0x2b')](function(){return _0x431890;});})['then'](function(){_0x4d18c0[_0x31ae('0x20')](0xcc)[_0x31ae('0x21')]();});}};}function handleEntityNotFound(_0x1681ab,_0x2000aa){return function(_0x5e4a09){if(!_0x5e4a09){_0x1681ab[_0x31ae('0x1f')](0x194);}return _0x5e4a09;};}function handleError(_0x418d59,_0x28f439){_0x28f439=_0x28f439||0x1f4;return function(_0x2c278b){logger[_0x31ae('0x30')](_0x2c278b[_0x31ae('0x31')]);if(_0x2c278b[_0x31ae('0x32')]){delete _0x2c278b['name'];}_0x418d59['status'](_0x28f439)[_0x31ae('0x33')](_0x2c278b);};}exports['index']=function(_0x36baec,_0x3d7e2e){var _0x523e4e={},_0x2008a5={},_0x207e57={'count':0x0,'rows':[]};var _0x1b7ad7=_[_0x31ae('0x34')](db['MailQueue'][_0x31ae('0x35')],function(_0x130ee9){return{'name':_0x130ee9['fieldName'],'type':_0x130ee9['type']['key']};});_0x2008a5[_0x31ae('0x36')]=_[_0x31ae('0x34')](_0x1b7ad7,_0x31ae('0x32'));_0x2008a5[_0x31ae('0x37')]=_[_0x31ae('0x38')](_0x36baec['query']);_0x2008a5[_0x31ae('0x39')]=_[_0x31ae('0x3a')](_0x2008a5[_0x31ae('0x36')],_0x2008a5[_0x31ae('0x37')]);_0x523e4e[_0x31ae('0x3b')]=_[_0x31ae('0x3a')](_0x2008a5[_0x31ae('0x36')],qs[_0x31ae('0x3c')](_0x36baec[_0x31ae('0x37')][_0x31ae('0x3c')]));_0x523e4e[_0x31ae('0x3b')]=_0x523e4e[_0x31ae('0x3b')]['length']?_0x523e4e[_0x31ae('0x3b')]:_0x2008a5[_0x31ae('0x36')];if(!_0x36baec['query'][_0x31ae('0x3d')](_0x31ae('0x3e'))){_0x523e4e[_0x31ae('0x25')]=qs[_0x31ae('0x25')](_0x36baec[_0x31ae('0x37')]['limit']);_0x523e4e[_0x31ae('0x23')]=qs['offset'](_0x36baec['query'][_0x31ae('0x23')]);}_0x523e4e['order']=qs[_0x31ae('0x3f')](_0x36baec['query']['sort']);_0x523e4e[_0x31ae('0x40')]=qs[_0x31ae('0x39')](_[_0x31ae('0x41')](_0x36baec[_0x31ae('0x37')],_0x2008a5['filters']),_0x1b7ad7);if(_0x36baec[_0x31ae('0x37')][_0x31ae('0x42')]){_0x523e4e[_0x31ae('0x40')]=_[_0x31ae('0x43')](_0x523e4e[_0x31ae('0x40')],{'$or':_[_0x31ae('0x34')](_0x1b7ad7,function(_0x4ddf26){if(_0x4ddf26['type']!==_0x31ae('0x44')){var _0x2aa477={};_0x2aa477[_0x4ddf26['name']]={'$like':'%'+_0x36baec[_0x31ae('0x37')][_0x31ae('0x42')]+'%'};return _0x2aa477;}})});}_0x523e4e=_[_0x31ae('0x43')]({},_0x523e4e,_0x36baec[_0x31ae('0x45')]);var _0x1f50db={'where':_0x523e4e[_0x31ae('0x40')]};return db['MailQueue'][_0x31ae('0x26')](_0x1f50db)[_0x31ae('0x2b')](function(_0x20959f){_0x207e57['count']=_0x20959f;if(_0x36baec[_0x31ae('0x37')][_0x31ae('0x46')]){_0x523e4e['include']=[{'all':!![]}];}return db[_0x31ae('0x47')][_0x31ae('0x48')](_0x523e4e);})[_0x31ae('0x2b')](function(_0x5bbe16){_0x207e57[_0x31ae('0x49')]=_0x5bbe16;return _0x207e57;})[_0x31ae('0x2b')](respondWithFilteredResult(_0x3d7e2e,_0x523e4e))[_0x31ae('0x4a')](handleError(_0x3d7e2e,null));};exports['show']=function(_0x23228d,_0x382d6c){var _0xdbbbfe={'raw':!![],'where':{'id':_0x23228d[_0x31ae('0x4b')]['id']}},_0x4e5c0b={};_0x4e5c0b[_0x31ae('0x36')]=_['keys'](db[_0x31ae('0x47')][_0x31ae('0x35')]);_0x4e5c0b[_0x31ae('0x37')]=_[_0x31ae('0x38')](_0x23228d[_0x31ae('0x37')]);_0x4e5c0b[_0x31ae('0x39')]=_[_0x31ae('0x3a')](_0x4e5c0b[_0x31ae('0x36')],_0x4e5c0b[_0x31ae('0x37')]);_0xdbbbfe[_0x31ae('0x3b')]=_[_0x31ae('0x3a')](_0x4e5c0b['model'],qs[_0x31ae('0x3c')](_0x23228d['query'][_0x31ae('0x3c')]));_0xdbbbfe[_0x31ae('0x3b')]=_0xdbbbfe[_0x31ae('0x3b')][_0x31ae('0x4c')]?_0xdbbbfe[_0x31ae('0x3b')]:_0x4e5c0b[_0x31ae('0x36')];if(_0x23228d[_0x31ae('0x37')][_0x31ae('0x46')]){_0xdbbbfe[_0x31ae('0x4d')]=[{'all':!![]}];}_0xdbbbfe=_[_0x31ae('0x43')]({},_0xdbbbfe,_0x23228d[_0x31ae('0x45')]);return db[_0x31ae('0x47')]['find'](_0xdbbbfe)[_0x31ae('0x2b')](handleEntityNotFound(_0x382d6c,null))[_0x31ae('0x2b')](respondWithResult(_0x382d6c,null))[_0x31ae('0x4a')](handleError(_0x382d6c,null));};exports[_0x31ae('0x4e')]=function(_0x41dd33,_0xe94a75){return db[_0x31ae('0x47')][_0x31ae('0x4e')](_0x41dd33[_0x31ae('0x4f')],{})[_0x31ae('0x2b')](function(_0x58148c){var _0x49e458=_0x41dd33['user'][_0x31ae('0x2c')]({'plain':!![]});if(!_0x49e458)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x49e458[_0x31ae('0x50')]==='user'){var _0x1e7fe2=_0x58148c[_0x31ae('0x2c')]({'plain':!![]});var _0x2c26fe=_0x31ae('0x2d');return db[_0x31ae('0x51')][_0x31ae('0x52')]({'where':{'name':_0x2c26fe,'userProfileId':_0x49e458[_0x31ae('0x53')]},'raw':!![]})[_0x31ae('0x2b')](function(_0x5907ca){if(_0x5907ca&&_0x5907ca[_0x31ae('0x54')]===0x0){return db[_0x31ae('0x2e')][_0x31ae('0x4e')]({'name':_0x1e7fe2[_0x31ae('0x32')],'resourceId':_0x1e7fe2['id'],'type':_0x5907ca[_0x31ae('0x32')],'sectionId':_0x5907ca['id']},{})[_0x31ae('0x2b')](function(){return _0x58148c;});}else{return _0x58148c;}})[_0x31ae('0x4a')](function(_0x43cf96){logger[_0x31ae('0x30')](_0x31ae('0x55'),_0x43cf96);throw _0x43cf96;});}return _0x58148c;})['then'](respondWithResult(_0xe94a75,0xc9))['catch'](handleError(_0xe94a75,null));};exports[_0x31ae('0x2a')]=function(_0xaabd01,_0x378d77){if(_0xaabd01['body']['id']){delete _0xaabd01[_0x31ae('0x4f')]['id'];}return db[_0x31ae('0x47')][_0x31ae('0x52')]({'where':{'id':_0xaabd01[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](handleEntityNotFound(_0x378d77,null))[_0x31ae('0x2b')](saveUpdates(_0xaabd01[_0x31ae('0x4f')],null))[_0x31ae('0x2b')](respondWithResult(_0x378d77,null))['catch'](handleError(_0x378d77,null));};exports['destroy']=function(_0x4809e3,_0x5c0fe6){return db[_0x31ae('0x47')]['find']({'where':{'id':_0x4809e3[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](handleEntityNotFound(_0x5c0fe6,null))[_0x31ae('0x2b')](removeEntity(_0x5c0fe6,null))['catch'](handleError(_0x5c0fe6,null));};exports[_0x31ae('0x56')]=function(_0x171c79,_0x3cb502){return db[_0x31ae('0x47')]['describe']()['then'](respondWithResult(_0x3cb502,null))[_0x31ae('0x4a')](handleError(_0x3cb502,null));};exports['getMembers']=function(_0x5d3903,_0x210cd3,_0x4cb76c){var _0x2e473d={'raw':!![],'where':{}},_0xbbb55a={},_0x208982;return db[_0x31ae('0x47')][_0x31ae('0x57')]({'where':{'id':_0x5d3903[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](handleEntityNotFound(_0x210cd3,null))[_0x31ae('0x2b')](function(_0x4ef2ca){if(_0x4ef2ca){_0x208982=_0x4ef2ca[_0x31ae('0x2c')]({'plain':!![]});_0xbbb55a[_0x31ae('0x36')]=_[_0x31ae('0x38')](db[_0x31ae('0x58')][_0x31ae('0x35')]);_0xbbb55a[_0x31ae('0x37')]=_['keys'](_0x5d3903[_0x31ae('0x37')]);_0xbbb55a[_0x31ae('0x39')]=_[_0x31ae('0x3a')](_0xbbb55a[_0x31ae('0x36')],_0xbbb55a[_0x31ae('0x37')]);_0x2e473d['attributes']=_[_0x31ae('0x3a')](_0xbbb55a[_0x31ae('0x36')],qs[_0x31ae('0x3c')](_0x5d3903[_0x31ae('0x37')]['fields']));_0x2e473d['attributes']=_0x2e473d[_0x31ae('0x3b')][_0x31ae('0x4c')]?_0x2e473d[_0x31ae('0x3b')]:_0xbbb55a[_0x31ae('0x36')];if(!_0x5d3903[_0x31ae('0x37')][_0x31ae('0x3d')](_0x31ae('0x3e'))){_0x2e473d[_0x31ae('0x25')]=qs[_0x31ae('0x25')](_0x5d3903[_0x31ae('0x37')]['limit']);_0x2e473d[_0x31ae('0x23')]=qs[_0x31ae('0x23')](_0x5d3903[_0x31ae('0x37')][_0x31ae('0x23')]);}_0x2e473d[_0x31ae('0x59')]=qs['sort'](_0x5d3903[_0x31ae('0x37')][_0x31ae('0x3f')]);_0x2e473d['where']=qs[_0x31ae('0x39')](_[_0x31ae('0x41')](_0x5d3903['query'],_0xbbb55a['filters']));_0x2e473d[_0x31ae('0x40')][_0x31ae('0x5a')]=_0x4ef2ca['id'];if(_0x5d3903[_0x31ae('0x37')]['filter']){_0x2e473d[_0x31ae('0x40')]=_[_0x31ae('0x43')](_0x2e473d[_0x31ae('0x40')],{'$or':_[_0x31ae('0x34')](_0x2e473d[_0x31ae('0x3b')],function(_0x374e96){var _0x18dea2={};_0x18dea2[_0x374e96]={'$like':'%'+_0x5d3903[_0x31ae('0x37')]['filter']+'%'};return _0x18dea2;})});}_0x2e473d=_['merge']({},_0x2e473d,_0x5d3903['options']);return db[_0x31ae('0x58')][_0x31ae('0x48')](_0x2e473d);}})[_0x31ae('0x2b')](function(_0x2648f4){if(_0x2648f4){return db[_0x31ae('0x5b')]['findAndCountAll']({'where':{'id':_[_0x31ae('0x34')](_0x2648f4,_0x31ae('0x5c')),'role':'agent'},'attributes':['id',_0x31ae('0x32'),'mailPause',_0x31ae('0x5d'),_0x31ae('0x5e')]});}})[_0x31ae('0x2b')](function(_0x1d8f9f){if(_0x1d8f9f){return{'count':_0x1d8f9f[_0x31ae('0x26')],'rows':_['map'](_0x1d8f9f[_0x31ae('0x49')],function(_0xe6a9c5){return{'membername':_0xe6a9c5[_0x31ae('0x32')],'UserId':_0xe6a9c5['id'],'queue_name':_0x208982[_0x31ae('0x32')],'MailQueueId':_0x208982['id'],'interface':util[_0x31ae('0x5f')](_0x31ae('0x60'),_0x31ae('0x61'),_0xe6a9c5[_0x31ae('0x32')]),'penalty':0x0,'paused':_0xe6a9c5[_0x31ae('0x62')],'createdAt':_0xe6a9c5[_0x31ae('0x5e')],'updatedAt':_0xe6a9c5[_0x31ae('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x31ae('0x2b')](respondWithFilteredResult(_0x210cd3,_0x2e473d))[_0x31ae('0x4a')](handleError(_0x210cd3,null));};exports['getTeams']=function(_0x1fb380,_0x200bd9,_0x2c7047){var _0x53be2a={};var _0x593375={};var _0x13ce4e;var _0x1cb3e8;return db['MailQueue'][_0x31ae('0x57')]({'where':{'id':_0x1fb380[_0x31ae('0x4b')]['id']}})['then'](handleEntityNotFound(_0x200bd9,null))[_0x31ae('0x2b')](function(_0x1af6a1){if(_0x1af6a1){_0x13ce4e=_0x1af6a1;_0x593375[_0x31ae('0x36')]=_[_0x31ae('0x38')](db[_0x31ae('0x63')][_0x31ae('0x35')]);_0x593375[_0x31ae('0x37')]=_['keys'](_0x1fb380[_0x31ae('0x37')]);_0x593375[_0x31ae('0x39')]=_[_0x31ae('0x3a')](_0x593375['model'],_0x593375[_0x31ae('0x37')]);_0x53be2a[_0x31ae('0x3b')]=_[_0x31ae('0x3a')](_0x593375[_0x31ae('0x36')],qs[_0x31ae('0x3c')](_0x1fb380[_0x31ae('0x37')][_0x31ae('0x3c')]));_0x53be2a['attributes']=_0x53be2a[_0x31ae('0x3b')][_0x31ae('0x4c')]?_0x53be2a[_0x31ae('0x3b')]:_0x593375[_0x31ae('0x36')];_0x53be2a[_0x31ae('0x59')]=qs[_0x31ae('0x3f')](_0x1fb380['query']['sort']);_0x53be2a[_0x31ae('0x40')]=qs[_0x31ae('0x39')](_[_0x31ae('0x41')](_0x1fb380[_0x31ae('0x37')],_0x593375[_0x31ae('0x39')]));if(_0x1fb380['query'][_0x31ae('0x42')]){_0x53be2a[_0x31ae('0x40')]=_[_0x31ae('0x43')](_0x53be2a[_0x31ae('0x40')],{'$or':_[_0x31ae('0x34')](_0x53be2a[_0x31ae('0x3b')],function(_0x46d50f){var _0x423f74={};_0x423f74[_0x46d50f]={'$like':'%'+_0x1fb380[_0x31ae('0x37')]['filter']+'%'};return _0x423f74;})});}_0x53be2a=_[_0x31ae('0x43')]({},_0x53be2a,_0x1fb380[_0x31ae('0x45')]);return _0x13ce4e[_0x31ae('0x64')](_0x53be2a);}})['then'](function(_0x42ac0e){if(_0x42ac0e){_0x1cb3e8=_0x42ac0e[_0x31ae('0x4c')];if(!_0x1fb380[_0x31ae('0x37')][_0x31ae('0x3d')](_0x31ae('0x3e'))){_0x53be2a['limit']=qs[_0x31ae('0x25')](_0x1fb380['query']['limit']);_0x53be2a['offset']=qs[_0x31ae('0x23')](_0x1fb380[_0x31ae('0x37')][_0x31ae('0x23')]);}return _0x13ce4e[_0x31ae('0x64')](_0x53be2a);}})[_0x31ae('0x2b')](function(_0x4c5772){if(_0x4c5772){return _0x4c5772?{'count':_0x1cb3e8,'rows':_0x4c5772}:null;}})['then'](respondWithResult(_0x200bd9,null))[_0x31ae('0x4a')](handleError(_0x200bd9,null));};exports[_0x31ae('0x65')]=function(_0x15185e,_0x27ffe1,_0x2a3d24){var _0x41a730=_0x15185e[_0x31ae('0x4f')][_0x31ae('0x66')];return db[_0x31ae('0x63')]['findAll']({'where':{'id':_0x41a730},'attributes':['id'],'include':[{'model':db[_0x31ae('0x5b')],'as':'Agents','attributes':['id',_0x31ae('0x32'),'online',_0x31ae('0x67'),_0x31ae('0x68')],'raw':!![]}]})[_0x31ae('0x2b')](function(_0x2a92d5){if(_0x2a92d5){var _0x18eeee=_[_0x31ae('0x69')](_0x2a92d5,function(_0x232031){var _0x45a540=_0x232031['get']({'plain':!![]});return _0x45a540[_0x31ae('0x6a')];});return db[_0x31ae('0x47')][_0x31ae('0x52')]({'where':{'id':_0x15185e[_0x31ae('0x4b')]['id']}})['then'](function(_0x3dbb3f){return db['sequelize'][_0x31ae('0x6b')](function(_0x1124c1){return _0x3dbb3f[_0x31ae('0x65')](_0x41a730,{'transaction':_0x1124c1})[_0x31ae('0x2b')](function(){return BPromise[_0x31ae('0x6c')](_0x18eeee,function(_0xa7eecc){return db['UserMailQueue'][_0x31ae('0x6d')]({'where':{'UserId':_0xa7eecc['id'],'MailQueueId':_0x15185e[_0x31ae('0x4b')]['id']},'transaction':_0x1124c1});});})['then'](function(){_0x18eeee[_0x31ae('0x6e')](function(_0x375346){socket[_0x31ae('0x6f')]('userMailQueue:save',{'UserId':_0x375346['id'],'MailQueueId':_0x3dbb3f['id']});});});});});}})[_0x31ae('0x2b')](respondWithStatusCode(_0x27ffe1,null))[_0x31ae('0x4a')](handleError(_0x27ffe1,null));};exports['removeTeams']=function(_0xb0e2d0,_0x1a6f27,_0x52eebc){return db[_0x31ae('0x63')]['findAll']({'where':{'id':_0xb0e2d0[_0x31ae('0x37')][_0x31ae('0x66')]},'attributes':['id'],'include':[{'model':db[_0x31ae('0x5b')],'as':_0x31ae('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x31ae('0x2b')](handleEntityNotFound(_0x1a6f27,null))[_0x31ae('0x2b')](function(_0x25e935){var _0x4138a5=_[_0x31ae('0x34')](_0x25e935,'id');var _0x57313b=[];var _0x16e303=[];var _0x2736f8=squel[_0x31ae('0x70')]();_0x2736f8['field']('tq.TeamId')[_0x31ae('0x71')]('team_has_mail_queues','tq')[_0x31ae('0x72')]('user_has_teams','ut',_0x31ae('0x73'))[_0x31ae('0x40')](_0x31ae('0x74'),_0xb0e2d0[_0x31ae('0x4b')]['id']);for(var _0xa5e80b=0x0;_0xa5e80b<_0x25e935[_0x31ae('0x4c')];_0xa5e80b+=0x1){let _0x55c769=_0x25e935[_0xa5e80b];for(var _0x20ec3b=0x0;_0x20ec3b<_0x55c769[_0x31ae('0x6a')][_0x31ae('0x4c')];_0x20ec3b+=0x1){let _0xe86ffa=_0x55c769['Agents'][_0x20ec3b];var _0x580493=_0x2736f8[_0x31ae('0x75')]();_0x580493[_0x31ae('0x40')]('ut.UserId\x20=\x20?',_0xe86ffa['id']);_0x16e303[_0x31ae('0x76')](db[_0x31ae('0x77')][_0x31ae('0x37')](_0x580493[_0x31ae('0x78')](),{'type':db['sequelize'][_0x31ae('0x79')]['SELECT']})[_0x31ae('0x2b')](function(_0xbe6ebc){if(_0xbe6ebc[_0x31ae('0x4c')]===0x1){return _0xe86ffa['id'];}else{var _0x4a39a4=_['every'](_['map'](_0xbe6ebc,'TeamId'),function(_0x59ccea){return _['includes'](_0x4138a5,_0x59ccea);});if(_0x4a39a4){return _0xe86ffa['id'];}}}));}}return BPromise[_0x31ae('0x7a')](_0x16e303)[_0x31ae('0x2b')](function(_0x274c24){_0x57313b=_(_0x57313b)[_0x31ae('0x7b')](_0x274c24)[_0x31ae('0x7c')]()[_0x31ae('0x7d')]();return db[_0x31ae('0x47')][_0x31ae('0x52')]({'where':{'id':_0xb0e2d0[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](function(_0x479452){return db[_0x31ae('0x77')][_0x31ae('0x6b')](function(_0x4ad308){return _0x479452[_0x31ae('0x7e')](_0xb0e2d0[_0x31ae('0x37')][_0x31ae('0x66')],{'transaction':_0x4ad308})['then'](function(){if(!_[_0x31ae('0x7f')](_0x57313b)){return _0x479452[_0x31ae('0x80')](_0x57313b,{'transaction':_0x4ad308});}})[_0x31ae('0x2b')](function(){_0x57313b[_0x31ae('0x6e')](function(_0x2c2153){socket['emit'](_0x31ae('0x81'),{'UserId':_0x2c2153,'MailQueueId':_0x479452['id']});});});});});});})[_0x31ae('0x2b')](respondWithStatusCode(_0x1a6f27,null))[_0x31ae('0x4a')](handleError(_0x1a6f27,null));};exports[_0x31ae('0x82')]=function(_0x2ef9da,_0x394bde,_0x4a0f57){return db[_0x31ae('0x47')][_0x31ae('0x52')]({'where':{'id':_0x2ef9da[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](handleEntityNotFound(_0x394bde,null))['then'](function(_0x69e721){if(_0x69e721){return _0x69e721[_0x31ae('0x82')](_0x2ef9da[_0x31ae('0x4f')][_0x31ae('0x66')],_[_0x31ae('0x83')](_0x2ef9da['body'],[_0x31ae('0x66'),'id'])||{})[_0x31ae('0x84')](function(_0x4949db){for(var _0x436083=0x0;_0x436083<_0x2ef9da[_0x31ae('0x4f')][_0x31ae('0x66')][_0x31ae('0x4c')];_0x436083+=0x1){socket[_0x31ae('0x6f')](_0x31ae('0x85'),{'UserId':Number(_0x2ef9da[_0x31ae('0x4f')]['ids'][_0x436083]),'MailQueueId':Number(_0x2ef9da['params']['id'])});}return _0x4949db;});}})[_0x31ae('0x2b')](respondWithResult(_0x394bde,null))[_0x31ae('0x4a')](handleError(_0x394bde,null));};exports[_0x31ae('0x80')]=function(_0x21c5f8,_0x31cd19,_0x4f7be9){return db[_0x31ae('0x47')][_0x31ae('0x52')]({'where':{'id':_0x21c5f8[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](handleEntityNotFound(_0x31cd19,null))[_0x31ae('0x2b')](function(_0xd10f17){if(_0xd10f17){return _0xd10f17[_0x31ae('0x80')](_0x21c5f8[_0x31ae('0x37')][_0x31ae('0x66')])[_0x31ae('0x2b')](function(){if(_[_0x31ae('0x86')](_0x21c5f8['query'][_0x31ae('0x66')])){for(var _0x505c02=0x0;_0x505c02<_0x21c5f8[_0x31ae('0x37')]['ids'][_0x31ae('0x4c')];_0x505c02+=0x1){socket['emit'](_0x31ae('0x81'),{'UserId':Number(_0x21c5f8[_0x31ae('0x37')][_0x31ae('0x66')][_0x505c02]),'MailQueueId':Number(_0x21c5f8[_0x31ae('0x4b')]['id'])});}}else{socket['emit']('userMailQueue:remove',{'UserId':Number(_0x21c5f8['query'][_0x31ae('0x66')]),'MailQueueId':Number(_0x21c5f8['params']['id'])});}});}})['then'](respondWithStatusCode(_0x31cd19,null))[_0x31ae('0x4a')](handleError(_0x31cd19,null));};exports[_0x31ae('0x87')]=function(_0x52390c,_0x4d0660,_0x33aa7d){var _0x4c3c91={};var _0x2eb560={};var _0x2ad403;var _0x11cd00;return db[_0x31ae('0x47')][_0x31ae('0x57')]({'where':{'id':_0x52390c[_0x31ae('0x4b')]['id']}})[_0x31ae('0x2b')](handleEntityNotFound(_0x4d0660,null))['then'](function(_0x1f1b71){if(_0x1f1b71){_0x2ad403=_0x1f1b71;_0x2eb560[_0x31ae('0x36')]=_[_0x31ae('0x38')](db['User']['rawAttributes']);_0x2eb560['query']=_['keys'](_0x52390c[_0x31ae('0x37')]);_0x2eb560[_0x31ae('0x39')]=_[_0x31ae('0x3a')](_0x2eb560[_0x31ae('0x36')],_0x2eb560[_0x31ae('0x37')]);_0x4c3c91['attributes']=_[_0x31ae('0x3a')](_0x2eb560[_0x31ae('0x36')],qs[_0x31ae('0x3c')](_0x52390c[_0x31ae('0x37')]['fields']));_0x4c3c91[_0x31ae('0x3b')]=_0x4c3c91[_0x31ae('0x3b')][_0x31ae('0x4c')]?_0x4c3c91[_0x31ae('0x3b')]:_0x2eb560['model'];_0x4c3c91[_0x31ae('0x59')]=qs['sort'](_0x52390c[_0x31ae('0x37')][_0x31ae('0x3f')]);_0x4c3c91[_0x31ae('0x40')]=qs[_0x31ae('0x39')](_[_0x31ae('0x41')](_0x52390c[_0x31ae('0x37')],_0x2eb560[_0x31ae('0x39')]));if(_0x52390c[_0x31ae('0x37')][_0x31ae('0x42')]){_0x4c3c91['where']=_[_0x31ae('0x43')](_0x4c3c91['where'],{'$or':_[_0x31ae('0x34')](_0x4c3c91[_0x31ae('0x3b')],function(_0xa839ae){var _0x124022={};_0x124022[_0xa839ae]={'$like':'%'+_0x52390c['query'][_0x31ae('0x42')]+'%'};return _0x124022;})});}_0x4c3c91=_[_0x31ae('0x43')]({},_0x4c3c91,_0x52390c['options']);return _0x2ad403[_0x31ae('0x87')](_0x4c3c91);}})[_0x31ae('0x2b')](function(_0x5d2ca3){if(_0x5d2ca3){_0x11cd00=_0x5d2ca3[_0x31ae('0x4c')];if(!_0x52390c['query'][_0x31ae('0x3d')](_0x31ae('0x3e'))){_0x4c3c91[_0x31ae('0x25')]=qs[_0x31ae('0x25')](_0x52390c[_0x31ae('0x37')][_0x31ae('0x25')]);_0x4c3c91[_0x31ae('0x23')]=qs[_0x31ae('0x23')](_0x52390c[_0x31ae('0x37')][_0x31ae('0x23')]);}return _0x2ad403[_0x31ae('0x87')](_0x4c3c91);}})[_0x31ae('0x2b')](function(_0x22b967){if(_0x22b967){return _0x22b967?{'count':_0x11cd00,'rows':_0x22b967}:null;}})[_0x31ae('0x2b')](respondWithResult(_0x4d0660,null))[_0x31ae('0x4a')](handleError(_0x4d0660,null));};
\ No newline at end of file
+var _0x9c2f=['MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userMailQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','crypto','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','socket.io-emitter','register','sendStatus','status','end','json','limit','count','offset','set','reject','save','then','destroy','get','MailQueues','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','MailQueue','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserMailQueue','MailQueueId','User','findAndCountAll','UserId','agent','mailPause','createdAt','rows','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','ids','findAll','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x9c2f,0x1c8));var _0xf9c2=function(_0x3c002c,_0x2dd800){_0x3c002c=_0x3c002c-0x0;var _0x4355f3=_0x9c2f[_0x3c002c];return _0x4355f3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf9c2('0x0'));var zipdir=require(_0xf9c2('0x1'));var jsonpatch=require(_0xf9c2('0x2'));var rp=require(_0xf9c2('0x3'));var moment=require(_0xf9c2('0x4'));var BPromise=require(_0xf9c2('0x5'));var Mustache=require('mustache');var util=require(_0xf9c2('0x6'));var path=require(_0xf9c2('0x7'));var sox=require(_0xf9c2('0x8'));var csv=require('to-csv');var ejs=require(_0xf9c2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf9c2('0xa'));var squel=require('squel');var crypto=require(_0xf9c2('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf9c2('0xc'));var Papa=require(_0xf9c2('0xd'));var Redis=require(_0xf9c2('0xe'));var authService=require(_0xf9c2('0xf'));var qs=require(_0xf9c2('0x10'));var as=require(_0xf9c2('0x11'));var hardwareService=require(_0xf9c2('0x12'));var logger=require(_0xf9c2('0x13'))('api');var utils=require(_0xf9c2('0x14'));var config=require(_0xf9c2('0x15'));var licenseUtil=require(_0xf9c2('0x16'));var db=require(_0xf9c2('0x17'))['db'];config[_0xf9c2('0x18')]=_['defaults'](config[_0xf9c2('0x18')],{'host':_0xf9c2('0x19'),'port':0x18eb});var socket=require(_0xf9c2('0x1a'))(new Redis(config[_0xf9c2('0x18')]));require('./mailQueue.socket')[_0xf9c2('0x1b')](socket);function respondWithStatusCode(_0x22b66e,_0x372e68){_0x372e68=_0x372e68||0xcc;return function(_0xac7cc8){if(_0xac7cc8){return _0x22b66e[_0xf9c2('0x1c')](_0x372e68);}return _0x22b66e[_0xf9c2('0x1d')](_0x372e68)[_0xf9c2('0x1e')]();};}function respondWithResult(_0x284552,_0x226c49){_0x226c49=_0x226c49||0xc8;return function(_0x1e76a4){if(_0x1e76a4){return _0x284552[_0xf9c2('0x1d')](_0x226c49)[_0xf9c2('0x1f')](_0x1e76a4);}};}function respondWithFilteredResult(_0x4d15b6,_0x53efbd){return function(_0x335565){if(_0x335565){var _0x372a4a=typeof _0x53efbd['offset']==='undefined'&&typeof _0x53efbd[_0xf9c2('0x20')]==='undefined';var _0x506e79=_0x335565['count'];var _0x59a6ca=_0x372a4a?0x0:_0x53efbd['offset'];var _0x3e0ce2=_0x372a4a?_0x335565[_0xf9c2('0x21')]:_0x53efbd[_0xf9c2('0x22')]+_0x53efbd[_0xf9c2('0x20')];var _0x159541;if(_0x3e0ce2>=_0x506e79){_0x3e0ce2=_0x506e79;_0x159541=0xc8;}else{_0x159541=0xce;}_0x4d15b6[_0xf9c2('0x1d')](_0x159541);return _0x4d15b6[_0xf9c2('0x23')]('Content-Range',_0x59a6ca+'-'+_0x3e0ce2+'/'+_0x506e79)[_0xf9c2('0x1f')](_0x335565);}return null;};}function patchUpdates(_0x17bd0d){return function(_0x57c59e){try{jsonpatch['apply'](_0x57c59e,_0x17bd0d,!![]);}catch(_0x5ed2eb){return BPromise[_0xf9c2('0x24')](_0x5ed2eb);}return _0x57c59e[_0xf9c2('0x25')]();};}function saveUpdates(_0x2f80f2,_0xd3a1ce){return function(_0x57bcc6){if(_0x57bcc6){return _0x57bcc6['update'](_0x2f80f2)[_0xf9c2('0x26')](function(_0x14db8c){return _0x14db8c;});}return null;};}function removeEntity(_0x384f59,_0x413bd4){return function(_0x3fa35c){if(_0x3fa35c){return _0x3fa35c[_0xf9c2('0x27')]()[_0xf9c2('0x26')](function(){var _0x3fd05c=_0x3fa35c[_0xf9c2('0x28')]({'plain':!![]});var _0x340489=_0xf9c2('0x29');return db['UserProfileResource'][_0xf9c2('0x27')]({'where':{'type':_0x340489,'resourceId':_0x3fd05c['id']}})[_0xf9c2('0x26')](function(){return _0x3fa35c;});})[_0xf9c2('0x26')](function(){_0x384f59[_0xf9c2('0x1d')](0xcc)[_0xf9c2('0x1e')]();});}};}function handleEntityNotFound(_0x8ea08a,_0x524b09){return function(_0x294551){if(!_0x294551){_0x8ea08a['sendStatus'](0x194);}return _0x294551;};}function handleError(_0x14f61f,_0x5bac01){_0x5bac01=_0x5bac01||0x1f4;return function(_0x458877){logger[_0xf9c2('0x2a')](_0x458877[_0xf9c2('0x2b')]);if(_0x458877[_0xf9c2('0x2c')]){delete _0x458877[_0xf9c2('0x2c')];}_0x14f61f['status'](_0x5bac01)[_0xf9c2('0x2d')](_0x458877);};}exports[_0xf9c2('0x2e')]=function(_0x3e50fe,_0xaf39b9){var _0x4eb5bb={},_0x37afef={},_0x188c30={'count':0x0,'rows':[]};var _0x5e144d=_[_0xf9c2('0x2f')](db['MailQueue'][_0xf9c2('0x30')],function(_0xb41f68){return{'name':_0xb41f68[_0xf9c2('0x31')],'type':_0xb41f68[_0xf9c2('0x32')][_0xf9c2('0x33')]};});_0x37afef[_0xf9c2('0x34')]=_[_0xf9c2('0x2f')](_0x5e144d,_0xf9c2('0x2c'));_0x37afef[_0xf9c2('0x35')]=_[_0xf9c2('0x36')](_0x3e50fe[_0xf9c2('0x35')]);_0x37afef['filters']=_[_0xf9c2('0x37')](_0x37afef['model'],_0x37afef['query']);_0x4eb5bb[_0xf9c2('0x38')]=_['intersection'](_0x37afef['model'],qs['fields'](_0x3e50fe['query'][_0xf9c2('0x39')]));_0x4eb5bb['attributes']=_0x4eb5bb['attributes'][_0xf9c2('0x3a')]?_0x4eb5bb[_0xf9c2('0x38')]:_0x37afef[_0xf9c2('0x34')];if(!_0x3e50fe[_0xf9c2('0x35')][_0xf9c2('0x3b')](_0xf9c2('0x3c'))){_0x4eb5bb[_0xf9c2('0x20')]=qs[_0xf9c2('0x20')](_0x3e50fe[_0xf9c2('0x35')]['limit']);_0x4eb5bb[_0xf9c2('0x22')]=qs['offset'](_0x3e50fe[_0xf9c2('0x35')][_0xf9c2('0x22')]);}_0x4eb5bb[_0xf9c2('0x3d')]=qs[_0xf9c2('0x3e')](_0x3e50fe[_0xf9c2('0x35')]['sort']);_0x4eb5bb['where']=qs[_0xf9c2('0x3f')](_[_0xf9c2('0x40')](_0x3e50fe[_0xf9c2('0x35')],_0x37afef[_0xf9c2('0x3f')]),_0x5e144d);if(_0x3e50fe[_0xf9c2('0x35')][_0xf9c2('0x41')]){_0x4eb5bb['where']=_['merge'](_0x4eb5bb[_0xf9c2('0x42')],{'$or':_[_0xf9c2('0x2f')](_0x5e144d,function(_0x2e29df){if(_0x2e29df[_0xf9c2('0x32')]!==_0xf9c2('0x43')){var _0x9b8e33={};_0x9b8e33[_0x2e29df[_0xf9c2('0x2c')]]={'$like':'%'+_0x3e50fe[_0xf9c2('0x35')]['filter']+'%'};return _0x9b8e33;}})});}_0x4eb5bb=_[_0xf9c2('0x44')]({},_0x4eb5bb,_0x3e50fe[_0xf9c2('0x45')]);var _0x350a7c={'where':_0x4eb5bb[_0xf9c2('0x42')]};return db['MailQueue']['count'](_0x350a7c)[_0xf9c2('0x26')](function(_0x9b1511){_0x188c30[_0xf9c2('0x21')]=_0x9b1511;if(_0x3e50fe[_0xf9c2('0x35')][_0xf9c2('0x46')]){_0x4eb5bb['include']=[{'all':!![]}];}return db[_0xf9c2('0x47')]['findAll'](_0x4eb5bb);})[_0xf9c2('0x26')](function(_0x1e8252){_0x188c30['rows']=_0x1e8252;return _0x188c30;})[_0xf9c2('0x26')](respondWithFilteredResult(_0xaf39b9,_0x4eb5bb))[_0xf9c2('0x48')](handleError(_0xaf39b9,null));};exports['show']=function(_0x1ad802,_0x4bfddb){var _0x598ebe={'raw':!![],'where':{'id':_0x1ad802[_0xf9c2('0x49')]['id']}},_0x226f85={};_0x226f85[_0xf9c2('0x34')]=_[_0xf9c2('0x36')](db['MailQueue'][_0xf9c2('0x30')]);_0x226f85['query']=_[_0xf9c2('0x36')](_0x1ad802[_0xf9c2('0x35')]);_0x226f85[_0xf9c2('0x3f')]=_[_0xf9c2('0x37')](_0x226f85[_0xf9c2('0x34')],_0x226f85[_0xf9c2('0x35')]);_0x598ebe[_0xf9c2('0x38')]=_[_0xf9c2('0x37')](_0x226f85[_0xf9c2('0x34')],qs['fields'](_0x1ad802[_0xf9c2('0x35')]['fields']));_0x598ebe['attributes']=_0x598ebe[_0xf9c2('0x38')][_0xf9c2('0x3a')]?_0x598ebe[_0xf9c2('0x38')]:_0x226f85[_0xf9c2('0x34')];if(_0x1ad802[_0xf9c2('0x35')][_0xf9c2('0x46')]){_0x598ebe['include']=[{'all':!![]}];}_0x598ebe=_[_0xf9c2('0x44')]({},_0x598ebe,_0x1ad802['options']);return db[_0xf9c2('0x47')][_0xf9c2('0x4a')](_0x598ebe)['then'](handleEntityNotFound(_0x4bfddb,null))[_0xf9c2('0x26')](respondWithResult(_0x4bfddb,null))[_0xf9c2('0x48')](handleError(_0x4bfddb,null));};exports[_0xf9c2('0x4b')]=function(_0x3cca9e,_0x420212){return db[_0xf9c2('0x47')][_0xf9c2('0x4b')](_0x3cca9e[_0xf9c2('0x4c')],{})['then'](function(_0x1e4ddb){var _0x37667d=_0x3cca9e['user']['get']({'plain':!![]});if(!_0x37667d)throw new Error(_0xf9c2('0x4d'));if(_0x37667d[_0xf9c2('0x4e')]==='user'){var _0x736fe2=_0x1e4ddb['get']({'plain':!![]});var _0x13d145=_0xf9c2('0x29');return db[_0xf9c2('0x4f')]['find']({'where':{'name':_0x13d145,'userProfileId':_0x37667d[_0xf9c2('0x50')]},'raw':!![]})[_0xf9c2('0x26')](function(_0x1af0b8){if(_0x1af0b8&&_0x1af0b8[_0xf9c2('0x51')]===0x0){return db[_0xf9c2('0x52')][_0xf9c2('0x4b')]({'name':_0x736fe2[_0xf9c2('0x2c')],'resourceId':_0x736fe2['id'],'type':_0x1af0b8[_0xf9c2('0x2c')],'sectionId':_0x1af0b8['id']},{})[_0xf9c2('0x26')](function(){return _0x1e4ddb;});}else{return _0x1e4ddb;}})['catch'](function(_0x3684dd){logger[_0xf9c2('0x2a')](_0xf9c2('0x53'),_0x3684dd);throw _0x3684dd;});}return _0x1e4ddb;})[_0xf9c2('0x26')](respondWithResult(_0x420212,0xc9))[_0xf9c2('0x48')](handleError(_0x420212,null));};exports[_0xf9c2('0x54')]=function(_0x2e80ed,_0x27f0fc){if(_0x2e80ed[_0xf9c2('0x4c')]['id']){delete _0x2e80ed[_0xf9c2('0x4c')]['id'];}return db[_0xf9c2('0x47')][_0xf9c2('0x4a')]({'where':{'id':_0x2e80ed[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](handleEntityNotFound(_0x27f0fc,null))[_0xf9c2('0x26')](saveUpdates(_0x2e80ed[_0xf9c2('0x4c')],null))['then'](respondWithResult(_0x27f0fc,null))[_0xf9c2('0x48')](handleError(_0x27f0fc,null));};exports[_0xf9c2('0x27')]=function(_0x4e5e50,_0x379c67){return db[_0xf9c2('0x47')][_0xf9c2('0x4a')]({'where':{'id':_0x4e5e50[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](handleEntityNotFound(_0x379c67,null))[_0xf9c2('0x26')](removeEntity(_0x379c67,null))[_0xf9c2('0x48')](handleError(_0x379c67,null));};exports[_0xf9c2('0x55')]=function(_0x39f181,_0x2e5376){return db[_0xf9c2('0x47')][_0xf9c2('0x55')]()[_0xf9c2('0x26')](respondWithResult(_0x2e5376,null))[_0xf9c2('0x48')](handleError(_0x2e5376,null));};exports[_0xf9c2('0x56')]=function(_0x4a9612,_0x3ea3f4,_0x758a0d){var _0x484467={'raw':!![],'where':{}},_0x250a82={},_0x477b51;return db['MailQueue'][_0xf9c2('0x57')]({'where':{'id':_0x4a9612[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](handleEntityNotFound(_0x3ea3f4,null))[_0xf9c2('0x26')](function(_0x19a327){if(_0x19a327){_0x477b51=_0x19a327['get']({'plain':!![]});_0x250a82['model']=_[_0xf9c2('0x36')](db[_0xf9c2('0x58')][_0xf9c2('0x30')]);_0x250a82['query']=_[_0xf9c2('0x36')](_0x4a9612[_0xf9c2('0x35')]);_0x250a82[_0xf9c2('0x3f')]=_['intersection'](_0x250a82[_0xf9c2('0x34')],_0x250a82[_0xf9c2('0x35')]);_0x484467[_0xf9c2('0x38')]=_[_0xf9c2('0x37')](_0x250a82['model'],qs[_0xf9c2('0x39')](_0x4a9612[_0xf9c2('0x35')][_0xf9c2('0x39')]));_0x484467[_0xf9c2('0x38')]=_0x484467[_0xf9c2('0x38')][_0xf9c2('0x3a')]?_0x484467[_0xf9c2('0x38')]:_0x250a82['model'];if(!_0x4a9612[_0xf9c2('0x35')][_0xf9c2('0x3b')]('nolimit')){_0x484467[_0xf9c2('0x20')]=qs[_0xf9c2('0x20')](_0x4a9612[_0xf9c2('0x35')][_0xf9c2('0x20')]);_0x484467[_0xf9c2('0x22')]=qs[_0xf9c2('0x22')](_0x4a9612[_0xf9c2('0x35')][_0xf9c2('0x22')]);}_0x484467[_0xf9c2('0x3d')]=qs[_0xf9c2('0x3e')](_0x4a9612[_0xf9c2('0x35')][_0xf9c2('0x3e')]);_0x484467[_0xf9c2('0x42')]=qs['filters'](_[_0xf9c2('0x40')](_0x4a9612[_0xf9c2('0x35')],_0x250a82[_0xf9c2('0x3f')]));_0x484467[_0xf9c2('0x42')][_0xf9c2('0x59')]=_0x19a327['id'];if(_0x4a9612['query'][_0xf9c2('0x41')]){_0x484467[_0xf9c2('0x42')]=_[_0xf9c2('0x44')](_0x484467[_0xf9c2('0x42')],{'$or':_[_0xf9c2('0x2f')](_0x484467[_0xf9c2('0x38')],function(_0x33a6ee){var _0x42eda9={};_0x42eda9[_0x33a6ee]={'$like':'%'+_0x4a9612[_0xf9c2('0x35')][_0xf9c2('0x41')]+'%'};return _0x42eda9;})});}_0x484467=_[_0xf9c2('0x44')]({},_0x484467,_0x4a9612[_0xf9c2('0x45')]);return db[_0xf9c2('0x58')]['findAll'](_0x484467);}})['then'](function(_0x5a0a02){if(_0x5a0a02){return db[_0xf9c2('0x5a')][_0xf9c2('0x5b')]({'where':{'id':_[_0xf9c2('0x2f')](_0x5a0a02,_0xf9c2('0x5c')),'role':_0xf9c2('0x5d')},'attributes':['id',_0xf9c2('0x2c'),_0xf9c2('0x5e'),'updatedAt',_0xf9c2('0x5f')]});}})[_0xf9c2('0x26')](function(_0xd182cb){if(_0xd182cb){return{'count':_0xd182cb['count'],'rows':_['map'](_0xd182cb[_0xf9c2('0x60')],function(_0x46e365){return{'membername':_0x46e365[_0xf9c2('0x2c')],'UserId':_0x46e365['id'],'queue_name':_0x477b51[_0xf9c2('0x2c')],'MailQueueId':_0x477b51['id'],'interface':util['format'](_0xf9c2('0x61'),_0xf9c2('0x62'),_0x46e365[_0xf9c2('0x2c')]),'penalty':0x0,'paused':_0x46e365[_0xf9c2('0x5e')],'createdAt':_0x46e365['createdAt'],'updatedAt':_0x46e365[_0xf9c2('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf9c2('0x26')](respondWithFilteredResult(_0x3ea3f4,_0x484467))['catch'](handleError(_0x3ea3f4,null));};exports[_0xf9c2('0x64')]=function(_0x7a247d,_0xc74593,_0xdae47f){var _0x37f388={};var _0xb41121={};var _0x1933ca;var _0x19c524;return db[_0xf9c2('0x47')][_0xf9c2('0x57')]({'where':{'id':_0x7a247d['params']['id']}})[_0xf9c2('0x26')](handleEntityNotFound(_0xc74593,null))[_0xf9c2('0x26')](function(_0x36de9a){if(_0x36de9a){_0x1933ca=_0x36de9a;_0xb41121[_0xf9c2('0x34')]=_[_0xf9c2('0x36')](db[_0xf9c2('0x65')][_0xf9c2('0x30')]);_0xb41121[_0xf9c2('0x35')]=_['keys'](_0x7a247d['query']);_0xb41121['filters']=_[_0xf9c2('0x37')](_0xb41121[_0xf9c2('0x34')],_0xb41121[_0xf9c2('0x35')]);_0x37f388[_0xf9c2('0x38')]=_[_0xf9c2('0x37')](_0xb41121[_0xf9c2('0x34')],qs[_0xf9c2('0x39')](_0x7a247d[_0xf9c2('0x35')][_0xf9c2('0x39')]));_0x37f388['attributes']=_0x37f388['attributes'][_0xf9c2('0x3a')]?_0x37f388['attributes']:_0xb41121[_0xf9c2('0x34')];_0x37f388[_0xf9c2('0x3d')]=qs[_0xf9c2('0x3e')](_0x7a247d[_0xf9c2('0x35')][_0xf9c2('0x3e')]);_0x37f388[_0xf9c2('0x42')]=qs[_0xf9c2('0x3f')](_[_0xf9c2('0x40')](_0x7a247d['query'],_0xb41121[_0xf9c2('0x3f')]));if(_0x7a247d[_0xf9c2('0x35')][_0xf9c2('0x41')]){_0x37f388[_0xf9c2('0x42')]=_[_0xf9c2('0x44')](_0x37f388[_0xf9c2('0x42')],{'$or':_[_0xf9c2('0x2f')](_0x37f388['attributes'],function(_0x5a9892){var _0xf418cb={};_0xf418cb[_0x5a9892]={'$like':'%'+_0x7a247d[_0xf9c2('0x35')]['filter']+'%'};return _0xf418cb;})});}_0x37f388=_[_0xf9c2('0x44')]({},_0x37f388,_0x7a247d[_0xf9c2('0x45')]);return _0x1933ca[_0xf9c2('0x64')](_0x37f388);}})[_0xf9c2('0x26')](function(_0x5d4ce1){if(_0x5d4ce1){_0x19c524=_0x5d4ce1['length'];if(!_0x7a247d[_0xf9c2('0x35')][_0xf9c2('0x3b')](_0xf9c2('0x3c'))){_0x37f388[_0xf9c2('0x20')]=qs[_0xf9c2('0x20')](_0x7a247d[_0xf9c2('0x35')]['limit']);_0x37f388[_0xf9c2('0x22')]=qs[_0xf9c2('0x22')](_0x7a247d['query'][_0xf9c2('0x22')]);}return _0x1933ca[_0xf9c2('0x64')](_0x37f388);}})[_0xf9c2('0x26')](function(_0x55ad6a){if(_0x55ad6a){return _0x55ad6a?{'count':_0x19c524,'rows':_0x55ad6a}:null;}})[_0xf9c2('0x26')](respondWithResult(_0xc74593,null))['catch'](handleError(_0xc74593,null));};exports[_0xf9c2('0x66')]=function(_0x4a9545,_0x108550,_0x47134f){var _0x89ed05=_0x4a9545[_0xf9c2('0x4c')][_0xf9c2('0x67')];return db['Team'][_0xf9c2('0x68')]({'where':{'id':_0x89ed05},'attributes':['id'],'include':[{'model':db[_0xf9c2('0x5a')],'as':_0xf9c2('0x69'),'attributes':['id',_0xf9c2('0x2c'),_0xf9c2('0x6a'),_0xf9c2('0x6b'),_0xf9c2('0x6c')],'raw':!![]}]})[_0xf9c2('0x26')](function(_0x5b04dd){if(_0x5b04dd){var _0x9b49f3=_[_0xf9c2('0x6d')](_0x5b04dd,function(_0x5d0460){var _0x59d16f=_0x5d0460['get']({'plain':!![]});return _0x59d16f[_0xf9c2('0x69')];});return db['MailQueue']['find']({'where':{'id':_0x4a9545[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](function(_0x1d9b7c){return db['sequelize'][_0xf9c2('0x6e')](function(_0x1dde82){return _0x1d9b7c[_0xf9c2('0x66')](_0x89ed05,{'transaction':_0x1dde82})[_0xf9c2('0x26')](function(){return BPromise[_0xf9c2('0x6f')](_0x9b49f3,function(_0x43694b){return db[_0xf9c2('0x58')][_0xf9c2('0x70')]({'where':{'UserId':_0x43694b['id'],'MailQueueId':_0x4a9545[_0xf9c2('0x49')]['id']},'transaction':_0x1dde82});});})[_0xf9c2('0x26')](function(){_0x9b49f3[_0xf9c2('0x71')](function(_0x2036f9){socket[_0xf9c2('0x72')](_0xf9c2('0x73'),{'UserId':_0x2036f9['id'],'MailQueueId':_0x1d9b7c['id']});});});});});}})[_0xf9c2('0x26')](respondWithStatusCode(_0x108550,null))[_0xf9c2('0x48')](handleError(_0x108550,null));};exports[_0xf9c2('0x74')]=function(_0x2bd425,_0x10dc51,_0x53a8ed){return db[_0xf9c2('0x65')][_0xf9c2('0x68')]({'where':{'id':_0x2bd425['query'][_0xf9c2('0x67')]},'attributes':['id'],'include':[{'model':db[_0xf9c2('0x5a')],'as':_0xf9c2('0x69'),'attributes':['id'],'raw':!![]}]})[_0xf9c2('0x26')](handleEntityNotFound(_0x10dc51,null))[_0xf9c2('0x26')](function(_0x3e60ce){var _0x37c9f9=_[_0xf9c2('0x2f')](_0x3e60ce,'id');var _0x17ed30=[];var _0x4e0b7b=[];var _0x48d7e8=squel[_0xf9c2('0x75')]();_0x48d7e8['field'](_0xf9c2('0x76'))[_0xf9c2('0x77')](_0xf9c2('0x78'),'tq')[_0xf9c2('0x79')](_0xf9c2('0x7a'),'ut',_0xf9c2('0x7b'))[_0xf9c2('0x42')](_0xf9c2('0x7c'),_0x2bd425[_0xf9c2('0x49')]['id']);for(var _0x55903f=0x0;_0x55903f<_0x3e60ce[_0xf9c2('0x3a')];_0x55903f+=0x1){let _0x4975d9=_0x3e60ce[_0x55903f];for(var _0x5bc4c0=0x0;_0x5bc4c0<_0x4975d9[_0xf9c2('0x69')]['length'];_0x5bc4c0+=0x1){let _0x43d56e=_0x4975d9[_0xf9c2('0x69')][_0x5bc4c0];var _0x208e7e=_0x48d7e8[_0xf9c2('0x7d')]();_0x208e7e['where'](_0xf9c2('0x7e'),_0x43d56e['id']);_0x4e0b7b[_0xf9c2('0x7f')](db[_0xf9c2('0x80')][_0xf9c2('0x35')](_0x208e7e[_0xf9c2('0x81')](),{'type':db[_0xf9c2('0x80')][_0xf9c2('0x82')][_0xf9c2('0x83')]})[_0xf9c2('0x26')](function(_0x724891){if(_0x724891[_0xf9c2('0x3a')]===0x1){return _0x43d56e['id'];}else{var _0x2679d2=_[_0xf9c2('0x84')](_[_0xf9c2('0x2f')](_0x724891,_0xf9c2('0x85')),function(_0x4a4f8c){return _['includes'](_0x37c9f9,_0x4a4f8c);});if(_0x2679d2){return _0x43d56e['id'];}}}));}}return BPromise[_0xf9c2('0x86')](_0x4e0b7b)[_0xf9c2('0x26')](function(_0x3a320b){_0x17ed30=_(_0x17ed30)[_0xf9c2('0x87')](_0x3a320b)[_0xf9c2('0x88')]()[_0xf9c2('0x89')]();return db[_0xf9c2('0x47')][_0xf9c2('0x4a')]({'where':{'id':_0x2bd425[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](function(_0x1d0850){return db['sequelize'][_0xf9c2('0x6e')](function(_0x3eeb8d){return _0x1d0850[_0xf9c2('0x74')](_0x2bd425[_0xf9c2('0x35')][_0xf9c2('0x67')],{'transaction':_0x3eeb8d})[_0xf9c2('0x26')](function(){if(!_[_0xf9c2('0x8a')](_0x17ed30)){return _0x1d0850[_0xf9c2('0x8b')](_0x17ed30,{'transaction':_0x3eeb8d});}})[_0xf9c2('0x26')](function(){_0x17ed30['forEach'](function(_0x5ccb9f){socket['emit']('userMailQueue:remove',{'UserId':_0x5ccb9f,'MailQueueId':_0x1d0850['id']});});});});});});})[_0xf9c2('0x26')](respondWithStatusCode(_0x10dc51,null))['catch'](handleError(_0x10dc51,null));};exports[_0xf9c2('0x8c')]=function(_0x5b105d,_0x10cd3a,_0x4ab3ef){return db[_0xf9c2('0x47')][_0xf9c2('0x4a')]({'where':{'id':_0x5b105d[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](handleEntityNotFound(_0x10cd3a,null))[_0xf9c2('0x26')](function(_0x56b17c){if(_0x56b17c){return _0x56b17c['addAgents'](_0x5b105d[_0xf9c2('0x4c')][_0xf9c2('0x67')],_[_0xf9c2('0x8d')](_0x5b105d[_0xf9c2('0x4c')],['ids','id'])||{})[_0xf9c2('0x8e')](function(_0x4a8425){for(var _0xf1b9e3=0x0;_0xf1b9e3<_0x5b105d['body'][_0xf9c2('0x67')][_0xf9c2('0x3a')];_0xf1b9e3+=0x1){socket[_0xf9c2('0x72')]('userMailQueue:save',{'UserId':Number(_0x5b105d['body']['ids'][_0xf1b9e3]),'MailQueueId':Number(_0x5b105d[_0xf9c2('0x49')]['id'])});}return _0x4a8425;});}})['then'](respondWithResult(_0x10cd3a,null))[_0xf9c2('0x48')](handleError(_0x10cd3a,null));};exports[_0xf9c2('0x8b')]=function(_0x37825c,_0x35cc2d,_0x32c2df){return db[_0xf9c2('0x47')][_0xf9c2('0x4a')]({'where':{'id':_0x37825c[_0xf9c2('0x49')]['id']}})[_0xf9c2('0x26')](handleEntityNotFound(_0x35cc2d,null))['then'](function(_0x4650f1){if(_0x4650f1){return _0x4650f1[_0xf9c2('0x8b')](_0x37825c[_0xf9c2('0x35')][_0xf9c2('0x67')])[_0xf9c2('0x26')](function(){if(_['isArray'](_0x37825c['query'][_0xf9c2('0x67')])){for(var _0x429112=0x0;_0x429112<_0x37825c[_0xf9c2('0x35')][_0xf9c2('0x67')][_0xf9c2('0x3a')];_0x429112+=0x1){socket['emit'](_0xf9c2('0x8f'),{'UserId':Number(_0x37825c['query'][_0xf9c2('0x67')][_0x429112]),'MailQueueId':Number(_0x37825c['params']['id'])});}}else{socket['emit']('userMailQueue:remove',{'UserId':Number(_0x37825c['query']['ids']),'MailQueueId':Number(_0x37825c[_0xf9c2('0x49')]['id'])});}});}})[_0xf9c2('0x26')](respondWithStatusCode(_0x35cc2d,null))[_0xf9c2('0x48')](handleError(_0x35cc2d,null));};exports[_0xf9c2('0x90')]=function(_0xc74f1f,_0x1822d1,_0xf6fa62){var _0xde03a2={};var _0x5d9aef={};var _0x971bc6;var _0x4b30e8;return db[_0xf9c2('0x47')][_0xf9c2('0x57')]({'where':{'id':_0xc74f1f[_0xf9c2('0x49')]['id']}})['then'](handleEntityNotFound(_0x1822d1,null))[_0xf9c2('0x26')](function(_0x3199db){if(_0x3199db){_0x971bc6=_0x3199db;_0x5d9aef[_0xf9c2('0x34')]=_[_0xf9c2('0x36')](db[_0xf9c2('0x5a')][_0xf9c2('0x30')]);_0x5d9aef[_0xf9c2('0x35')]=_['keys'](_0xc74f1f[_0xf9c2('0x35')]);_0x5d9aef[_0xf9c2('0x3f')]=_[_0xf9c2('0x37')](_0x5d9aef[_0xf9c2('0x34')],_0x5d9aef[_0xf9c2('0x35')]);_0xde03a2[_0xf9c2('0x38')]=_[_0xf9c2('0x37')](_0x5d9aef['model'],qs[_0xf9c2('0x39')](_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x39')]));_0xde03a2['attributes']=_0xde03a2[_0xf9c2('0x38')]['length']?_0xde03a2[_0xf9c2('0x38')]:_0x5d9aef['model'];_0xde03a2[_0xf9c2('0x3d')]=qs[_0xf9c2('0x3e')](_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x3e')]);_0xde03a2[_0xf9c2('0x42')]=qs[_0xf9c2('0x3f')](_['pick'](_0xc74f1f[_0xf9c2('0x35')],_0x5d9aef['filters']));if(_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x41')]){_0xde03a2[_0xf9c2('0x42')]=_[_0xf9c2('0x44')](_0xde03a2[_0xf9c2('0x42')],{'$or':_[_0xf9c2('0x2f')](_0xde03a2[_0xf9c2('0x38')],function(_0x2e7967){var _0x352034={};_0x352034[_0x2e7967]={'$like':'%'+_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x41')]+'%'};return _0x352034;})});}_0xde03a2=_[_0xf9c2('0x44')]({},_0xde03a2,_0xc74f1f[_0xf9c2('0x45')]);return _0x971bc6[_0xf9c2('0x90')](_0xde03a2);}})[_0xf9c2('0x26')](function(_0x5b422e){if(_0x5b422e){_0x4b30e8=_0x5b422e[_0xf9c2('0x3a')];if(!_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x3b')](_0xf9c2('0x3c'))){_0xde03a2[_0xf9c2('0x20')]=qs['limit'](_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x20')]);_0xde03a2[_0xf9c2('0x22')]=qs[_0xf9c2('0x22')](_0xc74f1f[_0xf9c2('0x35')][_0xf9c2('0x22')]);}return _0x971bc6[_0xf9c2('0x90')](_0xde03a2);}})['then'](function(_0x326479){if(_0x326479){return _0x326479?{'count':_0x4b30e8,'rows':_0x326479}:null;}})[_0xf9c2('0x26')](respondWithResult(_0x1822d1,null))['catch'](handleError(_0x1822d1,null));};
\ No newline at end of file
index 3829d46..a9bac64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc411=['emit','hook','exports','events','../../mysqldb','MailQueue','setMaxListeners'];(function(_0x3b847e,_0x3c9a43){var _0x415dfa=function(_0x11bbc9){while(--_0x11bbc9){_0x3b847e['push'](_0x3b847e['shift']());}};_0x415dfa(++_0x3c9a43);}(_0xc411,0x6c));var _0x1c41=function(_0x79b649,_0x2115b3){_0x79b649=_0x79b649-0x0;var _0x1af9b1=_0xc411[_0x79b649];return _0x1af9b1;};'use strict';var EventEmitter=require(_0x1c41('0x0'));var MailQueue=require(_0x1c41('0x1'))['db'][_0x1c41('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x1c41('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x181551){return function(_0x16f5ac,_0x5ac6e2,_0x24f7f7){MailQueueEvents[_0x1c41('0x4')](_0x181551+':'+_0x16f5ac['id'],_0x16f5ac);MailQueueEvents[_0x1c41('0x4')](_0x181551,_0x16f5ac);_0x24f7f7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x1c41('0x5')](e,emitEvent(event));}}module[_0x1c41('0x6')]=MailQueueEvents;
\ No newline at end of file
+var _0x0084=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','MailQueue','setMaxListeners','save'];(function(_0xeb67d8,_0x14a337){var _0x4138f9=function(_0x3b0407){while(--_0x3b0407){_0xeb67d8['push'](_0xeb67d8['shift']());}};_0x4138f9(++_0x14a337);}(_0x0084,0xcb));var _0x4008=function(_0x482c95,_0x504190){_0x482c95=_0x482c95-0x0;var _0x38c2e8=_0x0084[_0x482c95];return _0x38c2e8;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x4008('0x0'))['db'][_0x4008('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x4008('0x2')](0x0);var events={'afterCreate':_0x4008('0x3'),'afterUpdate':_0x4008('0x4'),'afterDestroy':'remove'};function emitEvent(_0x53fe8e){return function(_0x493f39,_0x51d231,_0x24d46f){MailQueueEvents[_0x4008('0x5')](_0x53fe8e+':'+_0x493f39['id'],_0x493f39);MailQueueEvents['emit'](_0x53fe8e,_0x493f39);_0x24d46f(null);};}for(var e in events){if(events[_0x4008('0x6')](e)){var event=events[e];MailQueue[_0x4008('0x7')](e,emitEvent(event));}}module[_0x4008('0x8')]=MailQueueEvents;
\ No newline at end of file
index 5e1d513..d0136c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x265d=['lodash','util','moment','bluebird','request-promise','path','rimraf','./mailQueue.attributes','exports','define','MailQueue','mail_queues'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x265d,0xe4));var _0xd265=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0x265d[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0xd265('0x0'));var util=require(_0xd265('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd265('0x2'));var BPromise=require(_0xd265('0x3'));var rp=require(_0xd265('0x4'));var fs=require('fs');var path=require(_0xd265('0x5'));var rimraf=require(_0xd265('0x6'));var config=require('../../config/environment');var attributes=require(_0xd265('0x7'));module[_0xd265('0x8')]=function(_0x5bfaf2,_0x58c12f){return _0x5bfaf2[_0xd265('0x9')](_0xd265('0xa'),attributes,{'tableName':_0xd265('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7da2=['./mailQueue.attributes','exports','define','MailQueue','mail_queues','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x212579,_0xdb4d5a){var _0x55d50e=function(_0x38fa1d){while(--_0x38fa1d){_0x212579['push'](_0x212579['shift']());}};_0x55d50e(++_0xdb4d5a);}(_0x7da2,0x157));var _0x27da=function(_0x3f4d9d,_0x44cc3e){_0x3f4d9d=_0x3f4d9d-0x0;var _0xf7244c=_0x7da2[_0x3f4d9d];return _0xf7244c;};'use strict';var _=require('lodash');var util=require(_0x27da('0x0'));var logger=require(_0x27da('0x1'))(_0x27da('0x2'));var moment=require(_0x27da('0x3'));var BPromise=require(_0x27da('0x4'));var rp=require(_0x27da('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x27da('0x6'));var config=require(_0x27da('0x7'));var attributes=require(_0x27da('0x8'));module[_0x27da('0x9')]=function(_0x3921a2,_0x8c3a2e){return _0x3921a2[_0x27da('0xa')](_0x27da('0xb'),attributes,{'tableName':_0x27da('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1caf64a..31efb05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f1=['map','model','then','stringify','ShowMailQueue','MailQueue','find','where','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./mailQueue.socket','register','request','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetMailQueue','findAll','options','attributes','limit','include'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0x36f1,0xb0));var _0x136f=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x36f1[_0x1e7b16];return _0x37fadc;};'use strict';var _=require(_0x136f('0x0'));var util=require('util');var moment=require(_0x136f('0x1'));var BPromise=require('bluebird');var rs=require(_0x136f('0x2'));var fs=require('fs');var Redis=require(_0x136f('0x3'));var db=require(_0x136f('0x4'))['db'];var utils=require(_0x136f('0x5'));var logger=require(_0x136f('0x6'))(_0x136f('0x7'));var config=require(_0x136f('0x8'));var jayson=require(_0x136f('0x9'));var client=jayson[_0x136f('0xa')][_0x136f('0xb')]({'port':0x232a});config['redis']=_[_0x136f('0xc')](config[_0x136f('0xd')],{'host':_0x136f('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x136f('0xd')]));require(_0x136f('0xf'))[_0x136f('0x10')](socket);function respondWithRpcPromise(_0x7b0a5b,_0x5252bc,_0x4cd978){return new BPromise(function(_0x1bf151,_0x41cbeb){return client[_0x136f('0x11')](_0x7b0a5b,_0x4cd978)['then'](function(_0x4829aa){logger[_0x136f('0x12')](_0x136f('0x13'),_0x5252bc,_0x136f('0x14'));logger[_0x136f('0x15')](_0x136f('0x16'),_0x5252bc,'request\x20sent',JSON['stringify'](_0x4829aa));if(_0x4829aa[_0x136f('0x17')]){if(_0x4829aa[_0x136f('0x17')][_0x136f('0x18')]===0x1f4){logger['error'](_0x136f('0x13'),_0x5252bc,_0x4829aa[_0x136f('0x17')][_0x136f('0x19')]);return _0x41cbeb(_0x4829aa[_0x136f('0x17')][_0x136f('0x19')]);}logger[_0x136f('0x17')](_0x136f('0x13'),_0x5252bc,_0x4829aa[_0x136f('0x17')]['message']);return _0x1bf151(_0x4829aa[_0x136f('0x17')][_0x136f('0x19')]);}else{logger[_0x136f('0x12')](_0x136f('0x13'),_0x5252bc,_0x136f('0x14'));_0x1bf151(_0x4829aa[_0x136f('0x1a')]['message']);}})[_0x136f('0x1b')](function(_0x34b44d){logger['error'](_0x136f('0x13'),_0x5252bc,_0x34b44d);_0x41cbeb(_0x34b44d);});});}exports[_0x136f('0x1c')]=function(_0x9fefa){var _0x4d499e=this;return new Promise(function(_0x3e7a1a,_0x372f55){return db['MailQueue'][_0x136f('0x1d')]({'raw':_0x9fefa[_0x136f('0x1e')]?_0x9fefa[_0x136f('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x9fefa['options']?_0x9fefa[_0x136f('0x1e')]['where']||null:null,'attributes':_0x9fefa['options']?_0x9fefa[_0x136f('0x1e')][_0x136f('0x1f')]||null:null,'limit':_0x9fefa['options']?_0x9fefa[_0x136f('0x1e')][_0x136f('0x20')]||null:null,'include':_0x9fefa[_0x136f('0x1e')]?_0x9fefa['options'][_0x136f('0x21')]?_[_0x136f('0x22')](_0x9fefa['options'][_0x136f('0x21')],function(_0x1cbad3){return{'model':db[_0x1cbad3['model']],'as':_0x1cbad3['as'],'attributes':_0x1cbad3[_0x136f('0x1f')],'include':_0x1cbad3[_0x136f('0x21')]?_[_0x136f('0x22')](_0x1cbad3[_0x136f('0x21')],function(_0x4e2587){return{'model':db[_0x4e2587[_0x136f('0x23')]],'as':_0x4e2587['as'],'attributes':_0x4e2587[_0x136f('0x1f')],'include':_0x4e2587[_0x136f('0x21')]?_[_0x136f('0x22')](_0x4e2587['include'],function(_0x3a630c){return{'model':db[_0x3a630c[_0x136f('0x23')]],'as':_0x3a630c['as'],'attributes':_0x3a630c[_0x136f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x136f('0x24')](function(_0x10f9c2){logger[_0x136f('0x12')]('GetMailQueue',_0x9fefa);logger[_0x136f('0x15')](_0x136f('0x1c'),_0x9fefa,JSON[_0x136f('0x25')](_0x10f9c2));_0x3e7a1a(_0x10f9c2);})['catch'](function(_0x3341ea){logger['error'](_0x136f('0x1c'),_0x3341ea[_0x136f('0x19')],_0x9fefa);_0x372f55(_0x4d499e['error'](0x1f4,_0x3341ea[_0x136f('0x19')]));});});};exports[_0x136f('0x26')]=function(_0x21ad42){var _0x3f2c10=this;return new Promise(function(_0x268fbe,_0x10c7ae){return db[_0x136f('0x27')][_0x136f('0x28')]({'raw':_0x21ad42['options']?_0x21ad42[_0x136f('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x21ad42['options']?_0x21ad42[_0x136f('0x1e')][_0x136f('0x29')]||null:null,'attributes':_0x21ad42['options']?_0x21ad42['options'][_0x136f('0x1f')]||null:null,'include':_0x21ad42[_0x136f('0x1e')]?_0x21ad42[_0x136f('0x1e')]['include']?_[_0x136f('0x22')](_0x21ad42[_0x136f('0x1e')][_0x136f('0x21')],function(_0x2f2ccc){return{'model':db[_0x2f2ccc[_0x136f('0x23')]],'as':_0x2f2ccc['as'],'attributes':_0x2f2ccc['attributes'],'include':_0x2f2ccc[_0x136f('0x21')]?_[_0x136f('0x22')](_0x2f2ccc[_0x136f('0x21')],function(_0x1cf0d2){return{'model':db[_0x1cf0d2[_0x136f('0x23')]],'as':_0x1cf0d2['as'],'attributes':_0x1cf0d2[_0x136f('0x1f')],'include':_0x1cf0d2[_0x136f('0x21')]?_[_0x136f('0x22')](_0x1cf0d2['include'],function(_0x1b0502){return{'model':db[_0x1b0502[_0x136f('0x23')]],'as':_0x1b0502['as'],'attributes':_0x1b0502['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x6031b5){logger[_0x136f('0x12')](_0x136f('0x26'),_0x21ad42);logger[_0x136f('0x15')](_0x136f('0x26'),_0x21ad42,JSON[_0x136f('0x25')](_0x6031b5));_0x268fbe(_0x6031b5);})[_0x136f('0x1b')](function(_0x12470a){logger[_0x136f('0x17')](_0x136f('0x26'),_0x12470a['message'],_0x21ad42);_0x10c7ae(_0x3f2c10[_0x136f('0x17')](0x1f4,_0x12470a[_0x136f('0x19')]));});});};
\ No newline at end of file
+var _0x64a5=['MailQueue','find','ShowMailQueue','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','request','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','options','raw','where','limit','include','map','model','attributes','then'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x64a5,0xc6));var _0x564a=function(_0x340598,_0x14454a){_0x340598=_0x340598-0x0;var _0x57d248=_0x64a5[_0x340598];return _0x57d248;};'use strict';var _=require(_0x564a('0x0'));var util=require(_0x564a('0x1'));var moment=require(_0x564a('0x2'));var BPromise=require('bluebird');var rs=require(_0x564a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x564a('0x4'))['db'];var utils=require(_0x564a('0x5'));var logger=require(_0x564a('0x6'))(_0x564a('0x7'));var config=require('../../config/environment');var jayson=require(_0x564a('0x8'));var client=jayson[_0x564a('0x9')]['http']({'port':0x232a});config[_0x564a('0xa')]=_[_0x564a('0xb')](config[_0x564a('0xa')],{'host':_0x564a('0xc'),'port':0x18eb});var socket=require(_0x564a('0xd'))(new Redis(config[_0x564a('0xa')]));require(_0x564a('0xe'))['register'](socket);function respondWithRpcPromise(_0x2c1cef,_0x498f28,_0xe755fe){return new BPromise(function(_0xbfce71,_0x3258c1){return client[_0x564a('0xf')](_0x2c1cef,_0xe755fe)['then'](function(_0x4b8ed4){logger[_0x564a('0x10')](_0x564a('0x11'),_0x498f28,_0x564a('0x12'));logger[_0x564a('0x13')](_0x564a('0x14'),_0x498f28,_0x564a('0x12'),JSON[_0x564a('0x15')](_0x4b8ed4));if(_0x4b8ed4['error']){if(_0x4b8ed4[_0x564a('0x16')][_0x564a('0x17')]===0x1f4){logger[_0x564a('0x16')](_0x564a('0x11'),_0x498f28,_0x4b8ed4[_0x564a('0x16')][_0x564a('0x18')]);return _0x3258c1(_0x4b8ed4['error'][_0x564a('0x18')]);}logger['error']('MailQueue,\x20%s,\x20%s',_0x498f28,_0x4b8ed4[_0x564a('0x16')][_0x564a('0x18')]);return _0xbfce71(_0x4b8ed4[_0x564a('0x16')][_0x564a('0x18')]);}else{logger[_0x564a('0x10')](_0x564a('0x11'),_0x498f28,_0x564a('0x12'));_0xbfce71(_0x4b8ed4['result']['message']);}})[_0x564a('0x19')](function(_0x1f5110){logger[_0x564a('0x16')]('MailQueue,\x20%s,\x20%s',_0x498f28,_0x1f5110);_0x3258c1(_0x1f5110);});});}exports[_0x564a('0x1a')]=function(_0x5bde31){var _0x1fd6bd=this;return new Promise(function(_0x16a4ea,_0x532a2f){return db['MailQueue']['findAll']({'raw':_0x5bde31[_0x564a('0x1b')]?_0x5bde31[_0x564a('0x1b')][_0x564a('0x1c')]===undefined?!![]:![]:!![],'where':_0x5bde31[_0x564a('0x1b')]?_0x5bde31['options'][_0x564a('0x1d')]||null:null,'attributes':_0x5bde31[_0x564a('0x1b')]?_0x5bde31[_0x564a('0x1b')]['attributes']||null:null,'limit':_0x5bde31[_0x564a('0x1b')]?_0x5bde31[_0x564a('0x1b')][_0x564a('0x1e')]||null:null,'include':_0x5bde31[_0x564a('0x1b')]?_0x5bde31[_0x564a('0x1b')][_0x564a('0x1f')]?_[_0x564a('0x20')](_0x5bde31[_0x564a('0x1b')][_0x564a('0x1f')],function(_0xf0cdf0){return{'model':db[_0xf0cdf0[_0x564a('0x21')]],'as':_0xf0cdf0['as'],'attributes':_0xf0cdf0[_0x564a('0x22')],'include':_0xf0cdf0[_0x564a('0x1f')]?_[_0x564a('0x20')](_0xf0cdf0[_0x564a('0x1f')],function(_0x4c6a69){return{'model':db[_0x4c6a69[_0x564a('0x21')]],'as':_0x4c6a69['as'],'attributes':_0x4c6a69[_0x564a('0x22')],'include':_0x4c6a69[_0x564a('0x1f')]?_[_0x564a('0x20')](_0x4c6a69[_0x564a('0x1f')],function(_0x1b5a0e){return{'model':db[_0x1b5a0e[_0x564a('0x21')]],'as':_0x1b5a0e['as'],'attributes':_0x1b5a0e[_0x564a('0x22')]};}):[]};}):[]};}):[]:[]})[_0x564a('0x23')](function(_0x23ae95){logger[_0x564a('0x10')](_0x564a('0x1a'),_0x5bde31);logger[_0x564a('0x13')]('GetMailQueue',_0x5bde31,JSON['stringify'](_0x23ae95));_0x16a4ea(_0x23ae95);})[_0x564a('0x19')](function(_0x1dc840){logger[_0x564a('0x16')](_0x564a('0x1a'),_0x1dc840['message'],_0x5bde31);_0x532a2f(_0x1fd6bd[_0x564a('0x16')](0x1f4,_0x1dc840[_0x564a('0x18')]));});});};exports['ShowMailQueue']=function(_0x2c1e75){var _0x118c22=this;return new Promise(function(_0x16a5e9,_0xb3d050){return db[_0x564a('0x24')][_0x564a('0x25')]({'raw':_0x2c1e75[_0x564a('0x1b')]?_0x2c1e75[_0x564a('0x1b')][_0x564a('0x1c')]===undefined?!![]:![]:!![],'where':_0x2c1e75[_0x564a('0x1b')]?_0x2c1e75[_0x564a('0x1b')]['where']||null:null,'attributes':_0x2c1e75[_0x564a('0x1b')]?_0x2c1e75[_0x564a('0x1b')]['attributes']||null:null,'include':_0x2c1e75[_0x564a('0x1b')]?_0x2c1e75[_0x564a('0x1b')]['include']?_[_0x564a('0x20')](_0x2c1e75[_0x564a('0x1b')][_0x564a('0x1f')],function(_0x22ceba){return{'model':db[_0x22ceba[_0x564a('0x21')]],'as':_0x22ceba['as'],'attributes':_0x22ceba[_0x564a('0x22')],'include':_0x22ceba['include']?_['map'](_0x22ceba[_0x564a('0x1f')],function(_0x29e448){return{'model':db[_0x29e448[_0x564a('0x21')]],'as':_0x29e448['as'],'attributes':_0x29e448[_0x564a('0x22')],'include':_0x29e448[_0x564a('0x1f')]?_[_0x564a('0x20')](_0x29e448['include'],function(_0x251f93){return{'model':db[_0x251f93[_0x564a('0x21')]],'as':_0x251f93['as'],'attributes':_0x251f93['attributes']};}):[]};}):[]};}):[]:[]})[_0x564a('0x23')](function(_0x5e01e0){logger[_0x564a('0x10')](_0x564a('0x26'),_0x2c1e75);logger['debug'](_0x564a('0x26'),_0x2c1e75,JSON[_0x564a('0x15')](_0x5e01e0));_0x16a5e9(_0x5e01e0);})[_0x564a('0x19')](function(_0x346e8e){logger['error']('ShowMailQueue',_0x346e8e[_0x564a('0x18')],_0x2c1e75);_0xb3d050(_0x118c22[_0x564a('0x16')](0x1f4,_0x346e8e[_0x564a('0x18')]));});});};
\ No newline at end of file
index 81245e2..45183ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd3=['remove','update','emit','removeListener','register','length','mailQueue:','./mailQueue.events','save'];(function(_0x5292ec,_0x404461){var _0x52fd21=function(_0x193c2b){while(--_0x193c2b){_0x5292ec['push'](_0x5292ec['shift']());}};_0x52fd21(++_0x404461);}(_0x3dd3,0x1d2));var _0x33dd=function(_0x32c492,_0x12bb1a){_0x32c492=_0x32c492-0x0;var _0x23e543=_0x3dd3[_0x32c492];return _0x23e543;};'use strict';var MailQueueEvents=require(_0x33dd('0x0'));var events=[_0x33dd('0x1'),_0x33dd('0x2'),_0x33dd('0x3')];function createListener(_0xe971e,_0xa42444){return function(_0x3199b8){_0xa42444[_0x33dd('0x4')](_0xe971e,_0x3199b8);};}function removeListener(_0x1b6a8a,_0x7ad341){return function(){MailQueueEvents[_0x33dd('0x5')](_0x1b6a8a,_0x7ad341);};}exports[_0x33dd('0x6')]=function(_0x396990){for(var _0x5d7276=0x0,_0x57c4fe=events[_0x33dd('0x7')];_0x5d7276<_0x57c4fe;_0x5d7276++){var _0x1adf78=events[_0x5d7276];var _0x1f4801=createListener(_0x33dd('0x8')+_0x1adf78,_0x396990);MailQueueEvents['on'](_0x1adf78,_0x1f4801);}};
\ No newline at end of file
+var _0xc720=['./mailQueue.events','save','remove','emit','removeListener','length','mailQueue:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc720,0x118));var _0x0c72=function(_0xea50b5,_0x1413fc){_0xea50b5=_0xea50b5-0x0;var _0x1e3da7=_0xc720[_0xea50b5];return _0x1e3da7;};'use strict';var MailQueueEvents=require(_0x0c72('0x0'));var events=[_0x0c72('0x1'),_0x0c72('0x2'),'update'];function createListener(_0x3b0c6a,_0x93314a){return function(_0x5ac2e3){_0x93314a[_0x0c72('0x3')](_0x3b0c6a,_0x5ac2e3);};}function removeListener(_0x24c58b,_0x57b5e4){return function(){MailQueueEvents[_0x0c72('0x4')](_0x24c58b,_0x57b5e4);};}exports['register']=function(_0x51f95e){for(var _0x507843=0x0,_0x3c7068=events[_0x0c72('0x5')];_0x507843<_0x3c7068;_0x507843++){var _0x591b79=events[_0x507843];var _0x40d20c=createListener(_0x0c72('0x6')+_0x591b79,_0x51f95e);MailQueueEvents['on'](_0x591b79,_0x40d20c);}};
\ No newline at end of file
index dc357ab..44b6593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c4d=['express','Router','fs-extra','../../config/environment','isAuthenticated','get','describe','/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x20e909,_0x9296b8){var _0x5aaa98=function(_0xeb7a99){while(--_0xeb7a99){_0x20e909['push'](_0x20e909['shift']());}};_0x5aaa98(++_0x9296b8);}(_0x2c4d,0xf9));var _0xd2c4=function(_0x5b04a3,_0xfda4fd){_0x5b04a3=_0x5b04a3-0x0;var _0x1adf11=_0x2c4d[_0x5b04a3];return _0x1adf11;};'use strict';var multer=require('multer');var util=require(_0xd2c4('0x0'));var path=require(_0xd2c4('0x1'));var timeout=require(_0xd2c4('0x2'));var express=require(_0xd2c4('0x3'));var router=express[_0xd2c4('0x4')]();var fs_extra=require(_0xd2c4('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd2c4('0x6'));var controller=require('./mailQueueReport.controller');router['get']('/',auth[_0xd2c4('0x7')](),controller['index']);router[_0xd2c4('0x8')]('/describe',auth[_0xd2c4('0x7')](),controller[_0xd2c4('0x9')]);router[_0xd2c4('0x8')](_0xd2c4('0xa'),auth['isAuthenticated'](),controller[_0xd2c4('0xb')]);router[_0xd2c4('0xc')]('/',auth[_0xd2c4('0x7')](),controller['create']);router[_0xd2c4('0xd')](_0xd2c4('0xa'),auth[_0xd2c4('0x7')](),controller[_0xd2c4('0xe')]);router[_0xd2c4('0xf')]('/:id',auth[_0xd2c4('0x7')](),controller[_0xd2c4('0x10')]);module[_0xd2c4('0x11')]=router;
\ No newline at end of file
+var _0xf3d5=['/:id','show','post','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailQueueReport.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x4752a7,_0x5322c7){var _0x2b10e2=function(_0x44f5d2){while(--_0x44f5d2){_0x4752a7['push'](_0x4752a7['shift']());}};_0x2b10e2(++_0x5322c7);}(_0xf3d5,0x9d));var _0x5f3d=function(_0x31ac1e,_0x135e94){_0x31ac1e=_0x31ac1e-0x0;var _0x2c42be=_0xf3d5[_0x31ac1e];return _0x2c42be;};'use strict';var multer=require(_0x5f3d('0x0'));var util=require(_0x5f3d('0x1'));var path=require(_0x5f3d('0x2'));var timeout=require(_0x5f3d('0x3'));var express=require(_0x5f3d('0x4'));var router=express['Router']();var fs_extra=require(_0x5f3d('0x5'));var auth=require(_0x5f3d('0x6'));var interaction=require(_0x5f3d('0x7'));var config=require('../../config/environment');var controller=require(_0x5f3d('0x8'));router['get']('/',auth[_0x5f3d('0x9')](),controller[_0x5f3d('0xa')]);router[_0x5f3d('0xb')](_0x5f3d('0xc'),auth['isAuthenticated'](),controller[_0x5f3d('0xd')]);router[_0x5f3d('0xb')](_0x5f3d('0xe'),auth[_0x5f3d('0x9')](),controller[_0x5f3d('0xf')]);router[_0x5f3d('0x10')]('/',auth[_0x5f3d('0x9')](),controller['create']);router['put'](_0x5f3d('0xe'),auth[_0x5f3d('0x9')](),controller['update']);router[_0x5f3d('0x11')](_0x5f3d('0xe'),auth[_0x5f3d('0x9')](),controller[_0x5f3d('0x12')]);module['exports']=router;
\ No newline at end of file
index ac569de..f7a0136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3805=['exports','STRING','DATE','moment','sequelize'];(function(_0x2c5315,_0x3696d8){var _0x934ff9=function(_0x1e4083){while(--_0x1e4083){_0x2c5315['push'](_0x2c5315['shift']());}};_0x934ff9(++_0x3696d8);}(_0x3805,0x111));var _0x5380=function(_0x4e1d7d,_0x5a7761){_0x4e1d7d=_0x4e1d7d-0x0;var _0x53f086=_0x3805[_0x4e1d7d];return _0x53f086;};'use strict';var moment=require(_0x5380('0x0'));var Sequelize=require(_0x5380('0x1'));module[_0x5380('0x2')]={'uniqueid':{'type':Sequelize[_0x5380('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x5380('0x3')]},'joinAt':{'type':Sequelize[_0x5380('0x4')]},'leaveAt':{'type':Sequelize[_0x5380('0x4')]},'acceptAt':{'type':Sequelize[_0x5380('0x4')]},'exitAt':{'type':Sequelize[_0x5380('0x4')]},'reason':{'type':Sequelize[_0x5380('0x3')]}};
\ No newline at end of file
+var _0x5c88=['moment','sequelize','exports','STRING','DATE'];(function(_0x55b4e5,_0x29e618){var _0x41e5a4=function(_0x5848fc){while(--_0x5848fc){_0x55b4e5['push'](_0x55b4e5['shift']());}};_0x41e5a4(++_0x29e618);}(_0x5c88,0x159));var _0x85c8=function(_0x1f96a1,_0x2095f0){_0x1f96a1=_0x1f96a1-0x0;var _0x3be93e=_0x5c88[_0x1f96a1];return _0x3be93e;};'use strict';var moment=require(_0x85c8('0x0'));var Sequelize=require(_0x85c8('0x1'));module[_0x85c8('0x2')]={'uniqueid':{'type':Sequelize[_0x85c8('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x85c8('0x3')]},'joinAt':{'type':Sequelize[_0x85c8('0x4')]},'leaveAt':{'type':Sequelize[_0x85c8('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x85c8('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b948465..b21bb78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','MailQueueReport','includeAll','include','findAll','catch','params','create','body','find','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xe5af,0x9c));var _0xfe5a=function(_0x117821,_0xaa1933){_0x117821=_0x117821-0x0;var _0x4ae9ff=_0xe5af[_0x117821];return _0x4ae9ff;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe5a('0x0'));var zipdir=require(_0xfe5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe5a('0x2'));var moment=require(_0xfe5a('0x3'));var BPromise=require(_0xfe5a('0x4'));var Mustache=require('mustache');var util=require(_0xfe5a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xfe5a('0x6'));var ejs=require(_0xfe5a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe5a('0x8'));var crypto=require(_0xfe5a('0x9'));var jsforce=require(_0xfe5a('0xa'));var deskjs=require(_0xfe5a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfe5a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe5a('0xd'));var qs=require(_0xfe5a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe5a('0xf'));var logger=require(_0xfe5a('0x10'))(_0xfe5a('0x11'));var utils=require(_0xfe5a('0x12'));var config=require(_0xfe5a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe5a('0x14'))['db'];function respondWithStatusCode(_0x9d1f4f,_0x20b206){_0x20b206=_0x20b206||0xcc;return function(_0x374ded){if(_0x374ded){return _0x9d1f4f[_0xfe5a('0x15')](_0x20b206);}return _0x9d1f4f['status'](_0x20b206)[_0xfe5a('0x16')]();};}function respondWithResult(_0x17bbbe,_0x42969b){_0x42969b=_0x42969b||0xc8;return function(_0x362115){if(_0x362115){return _0x17bbbe[_0xfe5a('0x17')](_0x42969b)[_0xfe5a('0x18')](_0x362115);}};}function respondWithFilteredResult(_0x375380,_0xeb454){return function(_0x111d4d){if(_0x111d4d){var _0x18c57b=typeof _0xeb454[_0xfe5a('0x19')]===_0xfe5a('0x1a')&&typeof _0xeb454[_0xfe5a('0x1b')]===_0xfe5a('0x1a');var _0x3edcab=_0x111d4d[_0xfe5a('0x1c')];var _0x5bf597=_0x18c57b?0x0:_0xeb454[_0xfe5a('0x19')];var _0x456707=_0x18c57b?_0x111d4d['count']:_0xeb454[_0xfe5a('0x19')]+_0xeb454[_0xfe5a('0x1b')];var _0x39d905;if(_0x456707>=_0x3edcab){_0x456707=_0x3edcab;_0x39d905=0xc8;}else{_0x39d905=0xce;}_0x375380['status'](_0x39d905);return _0x375380['set'](_0xfe5a('0x1d'),_0x5bf597+'-'+_0x456707+'/'+_0x3edcab)[_0xfe5a('0x18')](_0x111d4d);}return null;};}function patchUpdates(_0xded538){return function(_0x3b3022){try{jsonpatch[_0xfe5a('0x1e')](_0x3b3022,_0xded538,!![]);}catch(_0x355869){return BPromise['reject'](_0x355869);}return _0x3b3022[_0xfe5a('0x1f')]();};}function saveUpdates(_0x592521,_0x3dfa57){return function(_0x39d825){if(_0x39d825){return _0x39d825[_0xfe5a('0x20')](_0x592521)['then'](function(_0x4bbef1){return _0x4bbef1;});}return null;};}function removeEntity(_0x247be4,_0x3e55fd){return function(_0x494df3){if(_0x494df3){return _0x494df3[_0xfe5a('0x21')]()[_0xfe5a('0x22')](function(){_0x247be4['status'](0xcc)[_0xfe5a('0x16')]();});}};}function handleEntityNotFound(_0x3a4f3c,_0x31cc60){return function(_0x2b4f1c){if(!_0x2b4f1c){_0x3a4f3c['sendStatus'](0x194);}return _0x2b4f1c;};}function handleError(_0x42136e,_0x2f5d04){_0x2f5d04=_0x2f5d04||0x1f4;return function(_0x24481f){logger[_0xfe5a('0x23')](_0x24481f[_0xfe5a('0x24')]);if(_0x24481f[_0xfe5a('0x25')]){delete _0x24481f[_0xfe5a('0x25')];}_0x42136e[_0xfe5a('0x17')](_0x2f5d04)['send'](_0x24481f);};}exports['index']=function(_0x712b44,_0x485f9d){var _0xc53869={},_0xfcb05b={},_0x11bf97={'count':0x0,'rows':[]};var _0x482a35=_['map'](db['MailQueueReport'][_0xfe5a('0x26')],function(_0x582f2d){return{'name':_0x582f2d['fieldName'],'type':_0x582f2d['type'][_0xfe5a('0x27')]};});_0xfcb05b[_0xfe5a('0x28')]=_[_0xfe5a('0x29')](_0x482a35,_0xfe5a('0x25'));_0xfcb05b[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x712b44[_0xfe5a('0x2a')]);_0xfcb05b[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],_0xfcb05b[_0xfe5a('0x2a')]);_0xc53869['attributes']=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],qs['fields'](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0xc53869[_0xfe5a('0x2f')]=_0xc53869[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0xc53869['attributes']:_0xfcb05b['model'];if(!_0x712b44[_0xfe5a('0x2a')]['hasOwnProperty'](_0xfe5a('0x31'))){_0xc53869[_0xfe5a('0x1b')]=qs[_0xfe5a('0x1b')](_0x712b44[_0xfe5a('0x2a')]['limit']);_0xc53869[_0xfe5a('0x19')]=qs[_0xfe5a('0x19')](_0x712b44[_0xfe5a('0x2a')]['offset']);}_0xc53869[_0xfe5a('0x32')]=qs[_0xfe5a('0x33')](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x33')]);_0xc53869['where']=qs[_0xfe5a('0x2c')](_['pick'](_0x712b44[_0xfe5a('0x2a')],_0xfcb05b[_0xfe5a('0x2c')]),_0x482a35);if(_0x712b44['query'][_0xfe5a('0x34')]){_0xc53869[_0xfe5a('0x35')]=_[_0xfe5a('0x36')](_0xc53869[_0xfe5a('0x35')],{'$or':_['map'](_0x482a35,function(_0x193ce0){if(_0x193ce0[_0xfe5a('0x37')]!==_0xfe5a('0x38')){var _0x560088={};_0x560088[_0x193ce0[_0xfe5a('0x25')]]={'$like':'%'+_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x34')]+'%'};return _0x560088;}})});}_0xc53869=_[_0xfe5a('0x36')]({},_0xc53869,_0x712b44[_0xfe5a('0x39')]);var _0x162c48={'where':_0xc53869[_0xfe5a('0x35')]};return db[_0xfe5a('0x3a')][_0xfe5a('0x1c')](_0x162c48)[_0xfe5a('0x22')](function(_0x20da14){_0x11bf97['count']=_0x20da14;if(_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0xc53869[_0xfe5a('0x3c')]=[{'all':!![]}];}return db[_0xfe5a('0x3a')][_0xfe5a('0x3d')](_0xc53869);})[_0xfe5a('0x22')](function(_0x3475fb){_0x11bf97['rows']=_0x3475fb;return _0x11bf97;})[_0xfe5a('0x22')](respondWithFilteredResult(_0x485f9d,_0xc53869))[_0xfe5a('0x3e')](handleError(_0x485f9d,null));};exports['show']=function(_0x59caa1,_0x252904){var _0x4c17fd={'raw':!![],'where':{'id':_0x59caa1[_0xfe5a('0x3f')]['id']}},_0x54096d={};_0x54096d[_0xfe5a('0x28')]=_['keys'](db[_0xfe5a('0x3a')]['rawAttributes']);_0x54096d[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x59caa1[_0xfe5a('0x2a')]);_0x54096d[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],_0x54096d['query']);_0x4c17fd[_0xfe5a('0x2f')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],qs[_0xfe5a('0x2e')](_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0x4c17fd[_0xfe5a('0x2f')]=_0x4c17fd[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0x4c17fd[_0xfe5a('0x2f')]:_0x54096d[_0xfe5a('0x28')];if(_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0x4c17fd[_0xfe5a('0x3c')]=[{'all':!![]}];}_0x4c17fd=_['merge']({},_0x4c17fd,_0x59caa1[_0xfe5a('0x39')]);return db[_0xfe5a('0x3a')]['find'](_0x4c17fd)['then'](handleEntityNotFound(_0x252904,null))[_0xfe5a('0x22')](respondWithResult(_0x252904,null))[_0xfe5a('0x3e')](handleError(_0x252904,null));};exports[_0xfe5a('0x40')]=function(_0x3ccf98,_0x3cf1b5){return db[_0xfe5a('0x3a')][_0xfe5a('0x40')](_0x3ccf98['body'],{})[_0xfe5a('0x22')](respondWithResult(_0x3cf1b5,0xc9))['catch'](handleError(_0x3cf1b5,null));};exports[_0xfe5a('0x20')]=function(_0x5a807e,_0x433562){if(_0x5a807e[_0xfe5a('0x41')]['id']){delete _0x5a807e[_0xfe5a('0x41')]['id'];}return db[_0xfe5a('0x3a')]['find']({'where':{'id':_0x5a807e[_0xfe5a('0x3f')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x433562,null))['then'](saveUpdates(_0x5a807e[_0xfe5a('0x41')],null))['then'](respondWithResult(_0x433562,null))['catch'](handleError(_0x433562,null));};exports[_0xfe5a('0x21')]=function(_0x4e02c9,_0x374ce5){return db[_0xfe5a('0x3a')][_0xfe5a('0x42')]({'where':{'id':_0x4e02c9[_0xfe5a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x374ce5,null))[_0xfe5a('0x22')](removeEntity(_0x374ce5,null))['catch'](handleError(_0x374ce5,null));};exports[_0xfe5a('0x43')]=function(_0x38409b,_0x149132){return db['MailQueueReport'][_0xfe5a('0x43')]()[_0xfe5a('0x22')](respondWithResult(_0x149132,null))['catch'](handleError(_0x149132,null));};
\ No newline at end of file
+var _0x5204=['fast-json-patch','request-promise','moment','bluebird','mustache','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','destroy','error','stack','name','send','map','MailQueueReport','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','includeAll','include','findAll','then','rows','params','keys','rawAttributes','catch','create','body','find','describe','eml-format','rimraf'];(function(_0x1bb0cc,_0x3db0d6){var _0x54f385=function(_0x37f603){while(--_0x37f603){_0x1bb0cc['push'](_0x1bb0cc['shift']());}};_0x54f385(++_0x3db0d6);}(_0x5204,0xdf));var _0x4520=function(_0x4314d7,_0x355218){_0x4314d7=_0x4314d7-0x0;var _0x5c599b=_0x5204[_0x4314d7];return _0x5c599b;};'use strict';var emlformat=require(_0x4520('0x0'));var rimraf=require(_0x4520('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4520('0x2'));var rp=require(_0x4520('0x3'));var moment=require(_0x4520('0x4'));var BPromise=require(_0x4520('0x5'));var Mustache=require(_0x4520('0x6'));var util=require('util');var path=require(_0x4520('0x7'));var sox=require('sox');var csv=require(_0x4520('0x8'));var ejs=require(_0x4520('0x9'));var fs=require('fs');var fs_extra=require(_0x4520('0xa'));var _=require(_0x4520('0xb'));var squel=require(_0x4520('0xc'));var crypto=require(_0x4520('0xd'));var jsforce=require(_0x4520('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4520('0x8'));var querystring=require('querystring');var Papa=require(_0x4520('0xf'));var Redis=require(_0x4520('0x10'));var authService=require(_0x4520('0x11'));var qs=require(_0x4520('0x12'));var as=require(_0x4520('0x13'));var hardwareService=require(_0x4520('0x14'));var logger=require(_0x4520('0x15'))(_0x4520('0x16'));var utils=require(_0x4520('0x17'));var config=require(_0x4520('0x18'));var licenseUtil=require(_0x4520('0x19'));var db=require(_0x4520('0x1a'))['db'];function respondWithStatusCode(_0x3c7a5d,_0x508ea6){_0x508ea6=_0x508ea6||0xcc;return function(_0x2e3c64){if(_0x2e3c64){return _0x3c7a5d[_0x4520('0x1b')](_0x508ea6);}return _0x3c7a5d[_0x4520('0x1c')](_0x508ea6)[_0x4520('0x1d')]();};}function respondWithResult(_0x426836,_0x34d383){_0x34d383=_0x34d383||0xc8;return function(_0x32950a){if(_0x32950a){return _0x426836['status'](_0x34d383)[_0x4520('0x1e')](_0x32950a);}};}function respondWithFilteredResult(_0x20de6b,_0x1ab841){return function(_0x15a31f){if(_0x15a31f){var _0x32d8aa=typeof _0x1ab841['offset']===_0x4520('0x1f')&&typeof _0x1ab841[_0x4520('0x20')]===_0x4520('0x1f');var _0x283ad4=_0x15a31f[_0x4520('0x21')];var _0x2e00f4=_0x32d8aa?0x0:_0x1ab841[_0x4520('0x22')];var _0x4ba69f=_0x32d8aa?_0x15a31f[_0x4520('0x21')]:_0x1ab841[_0x4520('0x22')]+_0x1ab841[_0x4520('0x20')];var _0x460521;if(_0x4ba69f>=_0x283ad4){_0x4ba69f=_0x283ad4;_0x460521=0xc8;}else{_0x460521=0xce;}_0x20de6b['status'](_0x460521);return _0x20de6b[_0x4520('0x23')]('Content-Range',_0x2e00f4+'-'+_0x4ba69f+'/'+_0x283ad4)['json'](_0x15a31f);}return null;};}function patchUpdates(_0x4c46c5){return function(_0x2b9456){try{jsonpatch['apply'](_0x2b9456,_0x4c46c5,!![]);}catch(_0x39e196){return BPromise[_0x4520('0x24')](_0x39e196);}return _0x2b9456[_0x4520('0x25')]();};}function saveUpdates(_0x534b15,_0x3199a9){return function(_0x4000d4){if(_0x4000d4){return _0x4000d4[_0x4520('0x26')](_0x534b15)['then'](function(_0x198c34){return _0x198c34;});}return null;};}function removeEntity(_0x847d15,_0x24eacd){return function(_0x3a4680){if(_0x3a4680){return _0x3a4680[_0x4520('0x27')]()['then'](function(){_0x847d15[_0x4520('0x1c')](0xcc)[_0x4520('0x1d')]();});}};}function handleEntityNotFound(_0x3532aa,_0x3e2906){return function(_0x57306b){if(!_0x57306b){_0x3532aa[_0x4520('0x1b')](0x194);}return _0x57306b;};}function handleError(_0x4602a4,_0x92168b){_0x92168b=_0x92168b||0x1f4;return function(_0x21e1f3){logger[_0x4520('0x28')](_0x21e1f3[_0x4520('0x29')]);if(_0x21e1f3[_0x4520('0x2a')]){delete _0x21e1f3[_0x4520('0x2a')];}_0x4602a4[_0x4520('0x1c')](_0x92168b)[_0x4520('0x2b')](_0x21e1f3);};}exports['index']=function(_0x222dbd,_0x5c1a0b){var _0x7ce8d2={},_0x14778a={},_0x43b4a2={'count':0x0,'rows':[]};var _0x157293=_[_0x4520('0x2c')](db[_0x4520('0x2d')]['rawAttributes'],function(_0x2c32ce){return{'name':_0x2c32ce['fieldName'],'type':_0x2c32ce[_0x4520('0x2e')]['key']};});_0x14778a[_0x4520('0x2f')]=_['map'](_0x157293,_0x4520('0x2a'));_0x14778a['query']=_['keys'](_0x222dbd[_0x4520('0x30')]);_0x14778a[_0x4520('0x31')]=_[_0x4520('0x32')](_0x14778a['model'],_0x14778a[_0x4520('0x30')]);_0x7ce8d2[_0x4520('0x33')]=_[_0x4520('0x32')](_0x14778a[_0x4520('0x2f')],qs['fields'](_0x222dbd['query'][_0x4520('0x34')]));_0x7ce8d2[_0x4520('0x33')]=_0x7ce8d2['attributes'][_0x4520('0x35')]?_0x7ce8d2[_0x4520('0x33')]:_0x14778a[_0x4520('0x2f')];if(!_0x222dbd[_0x4520('0x30')][_0x4520('0x36')](_0x4520('0x37'))){_0x7ce8d2['limit']=qs[_0x4520('0x20')](_0x222dbd[_0x4520('0x30')]['limit']);_0x7ce8d2[_0x4520('0x22')]=qs['offset'](_0x222dbd[_0x4520('0x30')][_0x4520('0x22')]);}_0x7ce8d2['order']=qs['sort'](_0x222dbd['query'][_0x4520('0x38')]);_0x7ce8d2[_0x4520('0x39')]=qs[_0x4520('0x31')](_[_0x4520('0x3a')](_0x222dbd[_0x4520('0x30')],_0x14778a[_0x4520('0x31')]),_0x157293);if(_0x222dbd[_0x4520('0x30')]['filter']){_0x7ce8d2[_0x4520('0x39')]=_[_0x4520('0x3b')](_0x7ce8d2[_0x4520('0x39')],{'$or':_['map'](_0x157293,function(_0x16d489){if(_0x16d489[_0x4520('0x2e')]!=='VIRTUAL'){var _0x57b155={};_0x57b155[_0x16d489[_0x4520('0x2a')]]={'$like':'%'+_0x222dbd[_0x4520('0x30')][_0x4520('0x3c')]+'%'};return _0x57b155;}})});}_0x7ce8d2=_[_0x4520('0x3b')]({},_0x7ce8d2,_0x222dbd[_0x4520('0x3d')]);var _0x5ca832={'where':_0x7ce8d2['where']};return db['MailQueueReport'][_0x4520('0x21')](_0x5ca832)['then'](function(_0x43dc36){_0x43b4a2['count']=_0x43dc36;if(_0x222dbd['query'][_0x4520('0x3e')]){_0x7ce8d2[_0x4520('0x3f')]=[{'all':!![]}];}return db[_0x4520('0x2d')][_0x4520('0x40')](_0x7ce8d2);})[_0x4520('0x41')](function(_0x59d646){_0x43b4a2[_0x4520('0x42')]=_0x59d646;return _0x43b4a2;})[_0x4520('0x41')](respondWithFilteredResult(_0x5c1a0b,_0x7ce8d2))['catch'](handleError(_0x5c1a0b,null));};exports['show']=function(_0x3780e4,_0x2ff306){var _0x500c45={'raw':!![],'where':{'id':_0x3780e4[_0x4520('0x43')]['id']}},_0x2978d5={};_0x2978d5[_0x4520('0x2f')]=_[_0x4520('0x44')](db['MailQueueReport'][_0x4520('0x45')]);_0x2978d5[_0x4520('0x30')]=_[_0x4520('0x44')](_0x3780e4[_0x4520('0x30')]);_0x2978d5[_0x4520('0x31')]=_[_0x4520('0x32')](_0x2978d5[_0x4520('0x2f')],_0x2978d5[_0x4520('0x30')]);_0x500c45[_0x4520('0x33')]=_[_0x4520('0x32')](_0x2978d5[_0x4520('0x2f')],qs[_0x4520('0x34')](_0x3780e4[_0x4520('0x30')][_0x4520('0x34')]));_0x500c45[_0x4520('0x33')]=_0x500c45[_0x4520('0x33')][_0x4520('0x35')]?_0x500c45['attributes']:_0x2978d5[_0x4520('0x2f')];if(_0x3780e4[_0x4520('0x30')]['includeAll']){_0x500c45['include']=[{'all':!![]}];}_0x500c45=_['merge']({},_0x500c45,_0x3780e4['options']);return db[_0x4520('0x2d')]['find'](_0x500c45)[_0x4520('0x41')](handleEntityNotFound(_0x2ff306,null))[_0x4520('0x41')](respondWithResult(_0x2ff306,null))[_0x4520('0x46')](handleError(_0x2ff306,null));};exports[_0x4520('0x47')]=function(_0x177c4e,_0x5e3eef){return db[_0x4520('0x2d')][_0x4520('0x47')](_0x177c4e[_0x4520('0x48')],{})[_0x4520('0x41')](respondWithResult(_0x5e3eef,0xc9))[_0x4520('0x46')](handleError(_0x5e3eef,null));};exports[_0x4520('0x26')]=function(_0x737ba4,_0x1e4821){if(_0x737ba4[_0x4520('0x48')]['id']){delete _0x737ba4[_0x4520('0x48')]['id'];}return db[_0x4520('0x2d')][_0x4520('0x49')]({'where':{'id':_0x737ba4['params']['id']}})['then'](handleEntityNotFound(_0x1e4821,null))[_0x4520('0x41')](saveUpdates(_0x737ba4[_0x4520('0x48')],null))[_0x4520('0x41')](respondWithResult(_0x1e4821,null))['catch'](handleError(_0x1e4821,null));};exports[_0x4520('0x27')]=function(_0x2288a7,_0x3f9a4c){return db['MailQueueReport'][_0x4520('0x49')]({'where':{'id':_0x2288a7[_0x4520('0x43')]['id']}})[_0x4520('0x41')](handleEntityNotFound(_0x3f9a4c,null))['then'](removeEntity(_0x3f9a4c,null))['catch'](handleError(_0x3f9a4c,null));};exports[_0x4520('0x4a')]=function(_0x24a6a4,_0x24269e){return db[_0x4520('0x2d')][_0x4520('0x4a')]()[_0x4520('0x41')](respondWithResult(_0x24269e,null))[_0x4520('0x46')](handleError(_0x24269e,null));};
\ No newline at end of file
index d823839..62e508c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa22a=['api','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','define','report_mail_queue','uniqueid','util'];(function(_0xbc7919,_0xf0cf39){var _0x58310c=function(_0x2e2fbe){while(--_0x2e2fbe){_0xbc7919['push'](_0xbc7919['shift']());}};_0x58310c(++_0xf0cf39);}(_0xa22a,0x77));var _0xaa22=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa22a[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0xaa22('0x0'));var logger=require('../../config/logger')(_0xaa22('0x1'));var moment=require('moment');var BPromise=require(_0xaa22('0x2'));var rp=require(_0xaa22('0x3'));var fs=require('fs');var path=require(_0xaa22('0x4'));var rimraf=require(_0xaa22('0x5'));var config=require(_0xaa22('0x6'));var attributes=require(_0xaa22('0x7'));module[_0xaa22('0x8')]=function(_0x96cb34,_0x5f3df1){return _0x96cb34[_0xaa22('0x9')]('MailQueueReport',attributes,{'tableName':_0xaa22('0xa'),'paranoid':![],'indexes':[{'name':_0xaa22('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d9b=['path','rimraf','./mailQueueReport.attributes','define','report_mail_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird'];(function(_0x547dbc,_0x28558f){var _0x559194=function(_0x7a923c){while(--_0x7a923c){_0x547dbc['push'](_0x547dbc['shift']());}};_0x559194(++_0x28558f);}(_0x3d9b,0xcc));var _0xb3d9=function(_0x34da50,_0x2cd05b){_0x34da50=_0x34da50-0x0;var _0x457aa4=_0x3d9b[_0x34da50];return _0x457aa4;};'use strict';var _=require(_0xb3d9('0x0'));var util=require('util');var logger=require(_0xb3d9('0x1'))(_0xb3d9('0x2'));var moment=require(_0xb3d9('0x3'));var BPromise=require(_0xb3d9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb3d9('0x5'));var rimraf=require(_0xb3d9('0x6'));var config=require('../../config/environment');var attributes=require(_0xb3d9('0x7'));module['exports']=function(_0x566c18,_0x1abeb4){return _0x566c18[_0xb3d9('0x8')]('MailQueueReport',attributes,{'tableName':_0xb3d9('0x9'),'paranoid':![],'indexes':[{'name':_0xb3d9('0xa'),'fields':[_0xb3d9('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b23cdc7..b990cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x5e3112,_0x1a39fe){var _0x24654a=function(_0x88d3e3){while(--_0x88d3e3){_0x5e3112['push'](_0x5e3112['shift']());}};_0x24654a(++_0x1a39fe);}(_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 moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x2219e3,_0x23a7c8){var _0x11f335=function(_0x2c6c3e){while(--_0x2c6c3e){_0x2219e3['push'](_0x2219e3['shift']());}};_0x11f335(++_0x23a7c8);}(_0x7a54,0x106));var _0x47a5=function(_0x4dc7b0,_0x26309b){_0x4dc7b0=_0x4dc7b0-0x0;var _0x16c77b=_0x7a54[_0x4dc7b0];return _0x16c77b;};'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')]('MailQueueReport,\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['CreateMailQueueReport']=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')]('CreateMailQueueReport',_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')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index b7cae5f..1ba59b2 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(_0x334554,_0x44c536){var _0xc44810=function(_0x48b48c){while(--_0x48b48c){_0x334554['push'](_0x334554['shift']());}};_0xc44810(++_0x44c536);}(_0xedd9,0xfc));var _0x9edd=function(_0x46b6e9,_0xf45e0d){_0x46b6e9=_0x46b6e9-0x0;var _0xc6f234=_0xedd9[_0x46b6e9];return _0xc6f234;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x337b00,_0x32add1){var _0x4b7610=function(_0x4a91c1){while(--_0x4a91c1){_0x337b00['push'](_0x337b00['shift']());}};_0x4b7610(++_0x32add1);}(_0xedd9,0xfc));var _0x9edd=function(_0x41fa64,_0x2bf8c){_0x41fa64=_0x41fa64-0x0;var _0x4d5e96=_0xedd9[_0x41fa64];return _0x4d5e96;};'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
index da0b975..d636935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x174b=['INTEGER','sequelize','STRING','BOOLEAN'];(function(_0x4fe684,_0x3b6019){var _0x2c1667=function(_0x8c92ae){while(--_0x8c92ae){_0x4fe684['push'](_0x4fe684['shift']());}};_0x2c1667(++_0x3b6019);}(_0x174b,0x19d));var _0xb174=function(_0x2083ac,_0x3ad298){_0x2083ac=_0x2083ac-0x0;var _0x8abe9b=_0x174b[_0x2083ac];return _0x8abe9b;};'use strict';var Sequelize=require(_0xb174('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xb174('0x1')]},'authentication':{'type':Sequelize[_0xb174('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0xb174('0x1')]},'password':{'type':Sequelize[_0xb174('0x1')]},'port':{'type':Sequelize[_0xb174('0x3')]},'tls':{'type':Sequelize[_0xb174('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xb174('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xb174('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xb174('0x1')]}};
\ No newline at end of file
+var _0x087b=['sequelize','exports','BOOLEAN','STRING','INTEGER','INBOX'];(function(_0x3fcf30,_0xe3a49e){var _0x2ed4b0=function(_0x306e68){while(--_0x306e68){_0x3fcf30['push'](_0x3fcf30['shift']());}};_0x2ed4b0(++_0xe3a49e);}(_0x087b,0x11a));var _0xb087=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0x087b[_0x39c734];return _0xb2a2f9;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xb087('0x2')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xb087('0x3')]},'port':{'type':Sequelize[_0xb087('0x4')]},'tls':{'type':Sequelize[_0xb087('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xb087('0x3')],'defaultValue':_0xb087('0x5')},'connTimeout':{'type':Sequelize[_0xb087('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xb087('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0xb087('0x3')]}};
\ No newline at end of file
index dd9b3b9..5160788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3800=['exports','define','mail_servers_in','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./mailServerIn.attributes'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3800,0xe0));var _0x0380=function(_0x1c9bdc,_0x2598dc){_0x1c9bdc=_0x1c9bdc-0x0;var _0x3361ec=_0x3800[_0x1c9bdc];return _0x3361ec;};'use strict';var _=require(_0x0380('0x0'));var util=require(_0x0380('0x1'));var logger=require(_0x0380('0x2'))(_0x0380('0x3'));var moment=require(_0x0380('0x4'));var BPromise=require(_0x0380('0x5'));var rp=require(_0x0380('0x6'));var fs=require('fs');var path=require(_0x0380('0x7'));var rimraf=require(_0x0380('0x8'));var config=require('../../config/environment');var attributes=require(_0x0380('0x9'));module[_0x0380('0xa')]=function(_0x4419f6,_0x316b8f){return _0x4419f6[_0x0380('0xb')]('MailServerIn',attributes,{'tableName':_0x0380('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7af1=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7af1,0x104));var _0x17af=function(_0x2fd91a,_0x57bbca){_0x2fd91a=_0x2fd91a-0x0;var _0x2c81c0=_0x7af1[_0x2fd91a];return _0x2c81c0;};'use strict';var _=require(_0x17af('0x0'));var util=require(_0x17af('0x1'));var logger=require(_0x17af('0x2'))(_0x17af('0x3'));var moment=require(_0x17af('0x4'));var BPromise=require(_0x17af('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x17af('0x6'));var rimraf=require(_0x17af('0x7'));var config=require('../../config/environment');var attributes=require(_0x17af('0x8'));module[_0x17af('0x9')]=function(_0x35587f,_0x5ed702){return _0x35587f[_0x17af('0xa')](_0x17af('0xb'),attributes,{'tableName':_0x17af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30d582b..baee14b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc85c=['findAll','options','raw','where','limit','include','model','attributes','map','then','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetMailServerIn','MailServerIn'];(function(_0x9cd00f,_0x156e2c){var _0x54bef9=function(_0x24d594){while(--_0x24d594){_0x9cd00f['push'](_0x9cd00f['shift']());}};_0x54bef9(++_0x156e2c);}(_0xc85c,0xf2));var _0xcc85=function(_0x2de0ec,_0x38812f){_0x2de0ec=_0x2de0ec-0x0;var _0x13aa7b=_0xc85c[_0x2de0ec];return _0x13aa7b;};'use strict';var _=require(_0xcc85('0x0'));var util=require(_0xcc85('0x1'));var moment=require('moment');var BPromise=require(_0xcc85('0x2'));var rs=require(_0xcc85('0x3'));var fs=require('fs');var Redis=require(_0xcc85('0x4'));var db=require(_0xcc85('0x5'))['db'];var utils=require(_0xcc85('0x6'));var logger=require(_0xcc85('0x7'))(_0xcc85('0x8'));var config=require(_0xcc85('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5172dd,_0x55d825,_0x37f9be){return new BPromise(function(_0xa2dc3e,_0xb1af23){return client['request'](_0x5172dd,_0x37f9be)['then'](function(_0x2916a9){logger[_0xcc85('0xa')](_0xcc85('0xb'),_0x55d825,_0xcc85('0xc'));logger[_0xcc85('0xd')](_0xcc85('0xe'),_0x55d825,_0xcc85('0xc'),JSON['stringify'](_0x2916a9));if(_0x2916a9[_0xcc85('0xf')]){if(_0x2916a9[_0xcc85('0xf')][_0xcc85('0x10')]===0x1f4){logger[_0xcc85('0xf')](_0xcc85('0xb'),_0x55d825,_0x2916a9[_0xcc85('0xf')]['message']);return _0xb1af23(_0x2916a9[_0xcc85('0xf')][_0xcc85('0x11')]);}logger['error'](_0xcc85('0xb'),_0x55d825,_0x2916a9[_0xcc85('0xf')][_0xcc85('0x11')]);return _0xa2dc3e(_0x2916a9[_0xcc85('0xf')][_0xcc85('0x11')]);}else{logger[_0xcc85('0xa')](_0xcc85('0xb'),_0x55d825,_0xcc85('0xc'));_0xa2dc3e(_0x2916a9[_0xcc85('0x12')][_0xcc85('0x11')]);}})[_0xcc85('0x13')](function(_0x554649){logger['error']('MailServerIn,\x20%s,\x20%s',_0x55d825,_0x554649);_0xb1af23(_0x554649);});});}exports[_0xcc85('0x14')]=function(_0x51ba01){var _0x8bc28e=this;return new Promise(function(_0x532d0d,_0x510770){return db[_0xcc85('0x15')][_0xcc85('0x16')]({'raw':_0x51ba01['options']?_0x51ba01[_0xcc85('0x17')][_0xcc85('0x18')]===undefined?!![]:![]:!![],'where':_0x51ba01[_0xcc85('0x17')]?_0x51ba01['options'][_0xcc85('0x19')]||null:null,'attributes':_0x51ba01[_0xcc85('0x17')]?_0x51ba01[_0xcc85('0x17')]['attributes']||null:null,'limit':_0x51ba01[_0xcc85('0x17')]?_0x51ba01['options'][_0xcc85('0x1a')]||null:null,'include':_0x51ba01[_0xcc85('0x17')]?_0x51ba01[_0xcc85('0x17')][_0xcc85('0x1b')]?_['map'](_0x51ba01['options'][_0xcc85('0x1b')],function(_0x4b8c02){return{'model':db[_0x4b8c02[_0xcc85('0x1c')]],'as':_0x4b8c02['as'],'attributes':_0x4b8c02[_0xcc85('0x1d')],'include':_0x4b8c02[_0xcc85('0x1b')]?_[_0xcc85('0x1e')](_0x4b8c02[_0xcc85('0x1b')],function(_0x37df41){return{'model':db[_0x37df41[_0xcc85('0x1c')]],'as':_0x37df41['as'],'attributes':_0x37df41[_0xcc85('0x1d')],'include':_0x37df41[_0xcc85('0x1b')]?_[_0xcc85('0x1e')](_0x37df41['include'],function(_0x5edb88){return{'model':db[_0x5edb88[_0xcc85('0x1c')]],'as':_0x5edb88['as'],'attributes':_0x5edb88[_0xcc85('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xcc85('0x1f')](function(_0x1a195a){logger[_0xcc85('0xa')](_0xcc85('0x14'),_0x51ba01);logger[_0xcc85('0xd')](_0xcc85('0x14'),_0x51ba01,JSON[_0xcc85('0x20')](_0x1a195a));_0x532d0d(_0x1a195a);})['catch'](function(_0x40d4ad){logger[_0xcc85('0xf')]('GetMailServerIn',_0x40d4ad[_0xcc85('0x11')],_0x51ba01);_0x510770(_0x8bc28e[_0xcc85('0xf')](0x1f4,_0x40d4ad['message']));});});};
\ No newline at end of file
+var _0xb910=['info','MailServerIn,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','GetMailServerIn','MailServerIn','options','where','attributes','limit','include','model','map','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0xc2e087,_0x2c2a22){var _0x5b50fa=function(_0x96c0e6){while(--_0x96c0e6){_0xc2e087['push'](_0xc2e087['shift']());}};_0x5b50fa(++_0x2c2a22);}(_0xb910,0x12b));var _0x0b91=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0xb910[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0x0b91('0x0'));var util=require(_0x0b91('0x1'));var moment=require(_0x0b91('0x2'));var BPromise=require(_0x0b91('0x3'));var rs=require(_0x0b91('0x4'));var fs=require('fs');var Redis=require(_0x0b91('0x5'));var db=require(_0x0b91('0x6'))['db'];var utils=require(_0x0b91('0x7'));var logger=require(_0x0b91('0x8'))(_0x0b91('0x9'));var config=require(_0x0b91('0xa'));var jayson=require(_0x0b91('0xb'));var client=jayson[_0x0b91('0xc')][_0x0b91('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5a22b6,_0x156fd1,_0xc65d86){return new BPromise(function(_0x3e8800,_0x41cc32){return client[_0x0b91('0xe')](_0x5a22b6,_0xc65d86)[_0x0b91('0xf')](function(_0x4118b8){logger[_0x0b91('0x10')](_0x0b91('0x11'),_0x156fd1,'request\x20sent');logger[_0x0b91('0x12')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x156fd1,_0x0b91('0x13'),JSON['stringify'](_0x4118b8));if(_0x4118b8['error']){if(_0x4118b8[_0x0b91('0x14')][_0x0b91('0x15')]===0x1f4){logger[_0x0b91('0x14')](_0x0b91('0x11'),_0x156fd1,_0x4118b8['error'][_0x0b91('0x16')]);return _0x41cc32(_0x4118b8[_0x0b91('0x14')][_0x0b91('0x16')]);}logger[_0x0b91('0x14')]('MailServerIn,\x20%s,\x20%s',_0x156fd1,_0x4118b8[_0x0b91('0x14')][_0x0b91('0x16')]);return _0x3e8800(_0x4118b8[_0x0b91('0x14')][_0x0b91('0x16')]);}else{logger[_0x0b91('0x10')](_0x0b91('0x11'),_0x156fd1,'request\x20sent');_0x3e8800(_0x4118b8[_0x0b91('0x17')][_0x0b91('0x16')]);}})[_0x0b91('0x18')](function(_0x17d6fd){logger[_0x0b91('0x14')](_0x0b91('0x11'),_0x156fd1,_0x17d6fd);_0x41cc32(_0x17d6fd);});});}exports[_0x0b91('0x19')]=function(_0x12239b){var _0x26dea7=this;return new Promise(function(_0x201797,_0x1ed672){return db[_0x0b91('0x1a')]['findAll']({'raw':_0x12239b[_0x0b91('0x1b')]?_0x12239b['options']['raw']===undefined?!![]:![]:!![],'where':_0x12239b[_0x0b91('0x1b')]?_0x12239b[_0x0b91('0x1b')][_0x0b91('0x1c')]||null:null,'attributes':_0x12239b[_0x0b91('0x1b')]?_0x12239b[_0x0b91('0x1b')][_0x0b91('0x1d')]||null:null,'limit':_0x12239b[_0x0b91('0x1b')]?_0x12239b[_0x0b91('0x1b')][_0x0b91('0x1e')]||null:null,'include':_0x12239b['options']?_0x12239b['options']['include']?_['map'](_0x12239b[_0x0b91('0x1b')][_0x0b91('0x1f')],function(_0x7ab137){return{'model':db[_0x7ab137[_0x0b91('0x20')]],'as':_0x7ab137['as'],'attributes':_0x7ab137[_0x0b91('0x1d')],'include':_0x7ab137[_0x0b91('0x1f')]?_[_0x0b91('0x21')](_0x7ab137[_0x0b91('0x1f')],function(_0x231327){return{'model':db[_0x231327[_0x0b91('0x20')]],'as':_0x231327['as'],'attributes':_0x231327[_0x0b91('0x1d')],'include':_0x231327[_0x0b91('0x1f')]?_['map'](_0x231327[_0x0b91('0x1f')],function(_0x4bf1e6){return{'model':db[_0x4bf1e6['model']],'as':_0x4bf1e6['as'],'attributes':_0x4bf1e6[_0x0b91('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x120ae2){logger['info'](_0x0b91('0x19'),_0x12239b);logger[_0x0b91('0x12')]('GetMailServerIn',_0x12239b,JSON[_0x0b91('0x22')](_0x120ae2));_0x201797(_0x120ae2);})[_0x0b91('0x18')](function(_0x493c5e){logger['error']('GetMailServerIn',_0x493c5e[_0x0b91('0x16')],_0x12239b);_0x1ed672(_0x26dea7[_0x0b91('0x14')](0x1f4,_0x493c5e[_0x0b91('0x16')]));});});};
\ No newline at end of file
index 5ef6255..4efb43b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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
+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(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x7a54,0x106));var _0x47a5=function(_0x598757,_0x5d8191){_0x598757=_0x598757-0x0;var _0x3fa326=_0x7a54[_0x598757];return _0x3fa326;};'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
index 0e19e90..4c58a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x089d=['STRING','exports'];(function(_0x560a75,_0x2cc818){var _0x26e021=function(_0x18386e){while(--_0x18386e){_0x560a75['push'](_0x560a75['shift']());}};_0x26e021(++_0x2cc818);}(_0x089d,0x137));var _0xd089=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x089d[_0x255d5b];return _0x3e141a;};'use strict';var Sequelize=require('sequelize');module[_0xd089('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xd089('0x1')]},'user':{'type':Sequelize[_0xd089('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xd089('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xbd0c=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x3e754a,_0x6d4db5){var _0x12325b=function(_0x1f1688){while(--_0x1f1688){_0x3e754a['push'](_0x3e754a['shift']());}};_0x12325b(++_0x6d4db5);}(_0xbd0c,0x11c));var _0xcbd0=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbd0c[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0xcbd0('0x0')]={'description':{'type':Sequelize[_0xcbd0('0x1')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xcbd0('0x2')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xcbd0('0x1')]},'authentication':{'type':Sequelize[_0xcbd0('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 520a6a6..5da24b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b99=['query','keys','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','merge','includeAll','include','findAll','rows','catch','show','length','options','find','create','body','destroy','params','eml-format','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','map','MailServerOut','rawAttributes','fieldName'];(function(_0x5ad77d,_0xbc6939){var _0x4cd411=function(_0x572042){while(--_0x572042){_0x5ad77d['push'](_0x5ad77d['shift']());}};_0x4cd411(++_0xbc6939);}(_0x4b99,0x66));var _0x94b9=function(_0x3c6c25,_0x3add8e){_0x3c6c25=_0x3c6c25-0x0;var _0x4347b8=_0x4b99[_0x3c6c25];return _0x4347b8;};'use strict';var emlformat=require(_0x94b9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x94b9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x94b9('0x2'));var BPromise=require(_0x94b9('0x3'));var Mustache=require(_0x94b9('0x4'));var util=require(_0x94b9('0x5'));var path=require('path');var sox=require(_0x94b9('0x6'));var csv=require(_0x94b9('0x7'));var ejs=require(_0x94b9('0x8'));var fs=require('fs');var fs_extra=require(_0x94b9('0x9'));var _=require(_0x94b9('0xa'));var squel=require(_0x94b9('0xb'));var crypto=require(_0x94b9('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x94b9('0x7'));var querystring=require(_0x94b9('0xd'));var Papa=require('papaparse');var Redis=require(_0x94b9('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x94b9('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94b9('0x10'));var logger=require('../../config/logger')(_0x94b9('0x11'));var utils=require('../../config/utils');var config=require(_0x94b9('0x12'));var licenseUtil=require(_0x94b9('0x13'));var db=require(_0x94b9('0x14'))['db'];function respondWithStatusCode(_0x29b187,_0x472838){_0x472838=_0x472838||0xcc;return function(_0x1a833f){if(_0x1a833f){return _0x29b187[_0x94b9('0x15')](_0x472838);}return _0x29b187['status'](_0x472838)['end']();};}function respondWithResult(_0x2650d9,_0x4539cd){_0x4539cd=_0x4539cd||0xc8;return function(_0x2891ad){if(_0x2891ad){return _0x2650d9[_0x94b9('0x16')](_0x4539cd)[_0x94b9('0x17')](_0x2891ad);}};}function respondWithFilteredResult(_0x1ec7a9,_0x5dd96e){return function(_0xe36452){if(_0xe36452){var _0x49817b=typeof _0x5dd96e[_0x94b9('0x18')]===_0x94b9('0x19')&&typeof _0x5dd96e['limit']===_0x94b9('0x19');var _0x12400d=_0xe36452[_0x94b9('0x1a')];var _0x3cb826=_0x49817b?0x0:_0x5dd96e['offset'];var _0x4e1975=_0x49817b?_0xe36452['count']:_0x5dd96e['offset']+_0x5dd96e[_0x94b9('0x1b')];var _0x4076f3;if(_0x4e1975>=_0x12400d){_0x4e1975=_0x12400d;_0x4076f3=0xc8;}else{_0x4076f3=0xce;}_0x1ec7a9['status'](_0x4076f3);return _0x1ec7a9[_0x94b9('0x1c')](_0x94b9('0x1d'),_0x3cb826+'-'+_0x4e1975+'/'+_0x12400d)['json'](_0xe36452);}return null;};}function patchUpdates(_0x332ec5){return function(_0x4b3f80){try{jsonpatch[_0x94b9('0x1e')](_0x4b3f80,_0x332ec5,!![]);}catch(_0x4df5ce){return BPromise[_0x94b9('0x1f')](_0x4df5ce);}return _0x4b3f80[_0x94b9('0x20')]();};}function saveUpdates(_0x11225d,_0x572707){return function(_0x3d1703){if(_0x3d1703){return _0x3d1703[_0x94b9('0x21')](_0x11225d)[_0x94b9('0x22')](function(_0x199591){return _0x199591;});}return null;};}function removeEntity(_0x5ede8c,_0x1f49ec){return function(_0x123d5b){if(_0x123d5b){return _0x123d5b['destroy']()['then'](function(){_0x5ede8c[_0x94b9('0x16')](0xcc)[_0x94b9('0x23')]();});}};}function handleEntityNotFound(_0x2799ba,_0x11a607){return function(_0x582590){if(!_0x582590){_0x2799ba[_0x94b9('0x15')](0x194);}return _0x582590;};}function handleError(_0x21e39f,_0x57eccb){_0x57eccb=_0x57eccb||0x1f4;return function(_0x504db7){logger[_0x94b9('0x24')](_0x504db7[_0x94b9('0x25')]);if(_0x504db7[_0x94b9('0x26')]){delete _0x504db7[_0x94b9('0x26')];}_0x21e39f[_0x94b9('0x16')](_0x57eccb)[_0x94b9('0x27')](_0x504db7);};}exports['index']=function(_0x46b61e,_0xd8692d){var _0x215ab3={},_0x1ad029={},_0x22859b={'count':0x0,'rows':[]};var _0x13fc1b=_[_0x94b9('0x28')](db[_0x94b9('0x29')][_0x94b9('0x2a')],function(_0x4042d9){return{'name':_0x4042d9[_0x94b9('0x2b')],'type':_0x4042d9['type']['key']};});_0x1ad029['model']=_[_0x94b9('0x28')](_0x13fc1b,_0x94b9('0x26'));_0x1ad029[_0x94b9('0x2c')]=_[_0x94b9('0x2d')](_0x46b61e[_0x94b9('0x2c')]);_0x1ad029['filters']=_[_0x94b9('0x2e')](_0x1ad029['model'],_0x1ad029[_0x94b9('0x2c')]);_0x215ab3[_0x94b9('0x2f')]=_[_0x94b9('0x2e')](_0x1ad029[_0x94b9('0x30')],qs[_0x94b9('0x31')](_0x46b61e[_0x94b9('0x2c')]['fields']));_0x215ab3[_0x94b9('0x2f')]=_0x215ab3['attributes']['length']?_0x215ab3[_0x94b9('0x2f')]:_0x1ad029[_0x94b9('0x30')];if(!_0x46b61e[_0x94b9('0x2c')][_0x94b9('0x32')](_0x94b9('0x33'))){_0x215ab3[_0x94b9('0x1b')]=qs['limit'](_0x46b61e[_0x94b9('0x2c')][_0x94b9('0x1b')]);_0x215ab3[_0x94b9('0x18')]=qs[_0x94b9('0x18')](_0x46b61e[_0x94b9('0x2c')]['offset']);}_0x215ab3[_0x94b9('0x34')]=qs[_0x94b9('0x35')](_0x46b61e[_0x94b9('0x2c')][_0x94b9('0x35')]);_0x215ab3[_0x94b9('0x36')]=qs[_0x94b9('0x37')](_[_0x94b9('0x38')](_0x46b61e[_0x94b9('0x2c')],_0x1ad029[_0x94b9('0x37')]),_0x13fc1b);if(_0x46b61e['query'][_0x94b9('0x39')]){_0x215ab3[_0x94b9('0x36')]=_['merge'](_0x215ab3['where'],{'$or':_['map'](_0x13fc1b,function(_0x5cee6c){if(_0x5cee6c[_0x94b9('0x3a')]!=='VIRTUAL'){var _0x34ece2={};_0x34ece2[_0x5cee6c[_0x94b9('0x26')]]={'$like':'%'+_0x46b61e['query']['filter']+'%'};return _0x34ece2;}})});}_0x215ab3=_[_0x94b9('0x3b')]({},_0x215ab3,_0x46b61e['options']);var _0x8efde1={'where':_0x215ab3[_0x94b9('0x36')]};return db[_0x94b9('0x29')][_0x94b9('0x1a')](_0x8efde1)['then'](function(_0x496bf3){_0x22859b[_0x94b9('0x1a')]=_0x496bf3;if(_0x46b61e[_0x94b9('0x2c')][_0x94b9('0x3c')]){_0x215ab3[_0x94b9('0x3d')]=[{'all':!![]}];}return db['MailServerOut'][_0x94b9('0x3e')](_0x215ab3);})['then'](function(_0x1ba350){_0x22859b[_0x94b9('0x3f')]=_0x1ba350;return _0x22859b;})[_0x94b9('0x22')](respondWithFilteredResult(_0xd8692d,_0x215ab3))[_0x94b9('0x40')](handleError(_0xd8692d,null));};exports[_0x94b9('0x41')]=function(_0x198fe9,_0x18c496){var _0x524a27={'raw':!![],'where':{'id':_0x198fe9['params']['id']}},_0x27229b={};_0x27229b[_0x94b9('0x30')]=_[_0x94b9('0x2d')](db[_0x94b9('0x29')][_0x94b9('0x2a')]);_0x27229b['query']=_[_0x94b9('0x2d')](_0x198fe9[_0x94b9('0x2c')]);_0x27229b[_0x94b9('0x37')]=_[_0x94b9('0x2e')](_0x27229b['model'],_0x27229b['query']);_0x524a27['attributes']=_[_0x94b9('0x2e')](_0x27229b['model'],qs[_0x94b9('0x31')](_0x198fe9[_0x94b9('0x2c')]['fields']));_0x524a27[_0x94b9('0x2f')]=_0x524a27[_0x94b9('0x2f')][_0x94b9('0x42')]?_0x524a27[_0x94b9('0x2f')]:_0x27229b[_0x94b9('0x30')];if(_0x198fe9[_0x94b9('0x2c')][_0x94b9('0x3c')]){_0x524a27[_0x94b9('0x3d')]=[{'all':!![]}];}_0x524a27=_[_0x94b9('0x3b')]({},_0x524a27,_0x198fe9[_0x94b9('0x43')]);return db[_0x94b9('0x29')][_0x94b9('0x44')](_0x524a27)[_0x94b9('0x22')](handleEntityNotFound(_0x18c496,null))[_0x94b9('0x22')](respondWithResult(_0x18c496,null))['catch'](handleError(_0x18c496,null));};exports[_0x94b9('0x45')]=function(_0x170d37,_0x538570){return db['MailServerOut'][_0x94b9('0x45')](_0x170d37['body'],{})[_0x94b9('0x22')](respondWithResult(_0x538570,0xc9))['catch'](handleError(_0x538570,null));};exports['update']=function(_0x1dbf3f,_0x48d68){if(_0x1dbf3f[_0x94b9('0x46')]['id']){delete _0x1dbf3f[_0x94b9('0x46')]['id'];}return db[_0x94b9('0x29')][_0x94b9('0x44')]({'where':{'id':_0x1dbf3f['params']['id']}})[_0x94b9('0x22')](handleEntityNotFound(_0x48d68,null))[_0x94b9('0x22')](saveUpdates(_0x1dbf3f[_0x94b9('0x46')],null))[_0x94b9('0x22')](respondWithResult(_0x48d68,null))['catch'](handleError(_0x48d68,null));};exports[_0x94b9('0x47')]=function(_0x2a1471,_0xe31449){return db[_0x94b9('0x29')]['find']({'where':{'id':_0x2a1471[_0x94b9('0x48')]['id']}})[_0x94b9('0x22')](handleEntityNotFound(_0xe31449,null))[_0x94b9('0x22')](removeEntity(_0xe31449,null))[_0x94b9('0x40')](handleError(_0xe31449,null));};
\ No newline at end of file
+var _0x949b=['sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','index','map','MailServerOut','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','catch','params','options','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0xa0a732,_0x5597f2){var _0xada315=function(_0x5355bb){while(--_0x5355bb){_0xa0a732['push'](_0xa0a732['shift']());}};_0xada315(++_0x5597f2);}(_0x949b,0x7a));var _0xb949=function(_0x325835,_0x57849b){_0x325835=_0x325835-0x0;var _0x365db0=_0x949b[_0x325835];return _0x365db0;};'use strict';var emlformat=require(_0xb949('0x0'));var rimraf=require(_0xb949('0x1'));var zipdir=require(_0xb949('0x2'));var jsonpatch=require(_0xb949('0x3'));var rp=require(_0xb949('0x4'));var moment=require('moment');var BPromise=require(_0xb949('0x5'));var Mustache=require(_0xb949('0x6'));var util=require(_0xb949('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb949('0x8'));var fs=require('fs');var fs_extra=require(_0xb949('0x9'));var _=require(_0xb949('0xa'));var squel=require('squel');var crypto=require(_0xb949('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb949('0xc'));var toCsv=require(_0xb949('0xd'));var querystring=require(_0xb949('0xe'));var Papa=require(_0xb949('0xf'));var Redis=require(_0xb949('0x10'));var authService=require(_0xb949('0x11'));var qs=require(_0xb949('0x12'));var as=require(_0xb949('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb949('0x14'));var utils=require(_0xb949('0x15'));var config=require(_0xb949('0x16'));var licenseUtil=require(_0xb949('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46c006,_0x3a9b8f){_0x3a9b8f=_0x3a9b8f||0xcc;return function(_0x21b2c2){if(_0x21b2c2){return _0x46c006[_0xb949('0x18')](_0x3a9b8f);}return _0x46c006[_0xb949('0x19')](_0x3a9b8f)[_0xb949('0x1a')]();};}function respondWithResult(_0x14982d,_0x22b9ec){_0x22b9ec=_0x22b9ec||0xc8;return function(_0x5d1b15){if(_0x5d1b15){return _0x14982d[_0xb949('0x19')](_0x22b9ec)[_0xb949('0x1b')](_0x5d1b15);}};}function respondWithFilteredResult(_0x52b77e,_0x13fb98){return function(_0x176e0b){if(_0x176e0b){var _0x30366f=typeof _0x13fb98[_0xb949('0x1c')]===_0xb949('0x1d')&&typeof _0x13fb98['limit']===_0xb949('0x1d');var _0x5db895=_0x176e0b[_0xb949('0x1e')];var _0x5baf13=_0x30366f?0x0:_0x13fb98[_0xb949('0x1c')];var _0x5cb578=_0x30366f?_0x176e0b[_0xb949('0x1e')]:_0x13fb98[_0xb949('0x1c')]+_0x13fb98[_0xb949('0x1f')];var _0x4cf1e8;if(_0x5cb578>=_0x5db895){_0x5cb578=_0x5db895;_0x4cf1e8=0xc8;}else{_0x4cf1e8=0xce;}_0x52b77e[_0xb949('0x19')](_0x4cf1e8);return _0x52b77e[_0xb949('0x20')](_0xb949('0x21'),_0x5baf13+'-'+_0x5cb578+'/'+_0x5db895)[_0xb949('0x1b')](_0x176e0b);}return null;};}function patchUpdates(_0x526978){return function(_0x60cb43){try{jsonpatch[_0xb949('0x22')](_0x60cb43,_0x526978,!![]);}catch(_0x451ce4){return BPromise[_0xb949('0x23')](_0x451ce4);}return _0x60cb43[_0xb949('0x24')]();};}function saveUpdates(_0x448e2a,_0x39faed){return function(_0x5360ad){if(_0x5360ad){return _0x5360ad[_0xb949('0x25')](_0x448e2a)['then'](function(_0x2807d8){return _0x2807d8;});}return null;};}function removeEntity(_0xc3c34e,_0x592b79){return function(_0x461873){if(_0x461873){return _0x461873[_0xb949('0x26')]()[_0xb949('0x27')](function(){_0xc3c34e[_0xb949('0x19')](0xcc)[_0xb949('0x1a')]();});}};}function handleEntityNotFound(_0x15d1af,_0x21c394){return function(_0x58d2ad){if(!_0x58d2ad){_0x15d1af[_0xb949('0x18')](0x194);}return _0x58d2ad;};}function handleError(_0x502f3b,_0x17af0e){_0x17af0e=_0x17af0e||0x1f4;return function(_0x43eb81){logger['error'](_0x43eb81[_0xb949('0x28')]);if(_0x43eb81[_0xb949('0x29')]){delete _0x43eb81[_0xb949('0x29')];}_0x502f3b[_0xb949('0x19')](_0x17af0e)['send'](_0x43eb81);};}exports[_0xb949('0x2a')]=function(_0x35da1b,_0x3b1b3c){var _0x4cc1f0={},_0x5d48af={},_0x5c427a={'count':0x0,'rows':[]};var _0xec0d3e=_[_0xb949('0x2b')](db[_0xb949('0x2c')][_0xb949('0x2d')],function(_0xf15a78){return{'name':_0xf15a78[_0xb949('0x2e')],'type':_0xf15a78[_0xb949('0x2f')]['key']};});_0x5d48af[_0xb949('0x30')]=_[_0xb949('0x2b')](_0xec0d3e,'name');_0x5d48af[_0xb949('0x31')]=_[_0xb949('0x32')](_0x35da1b[_0xb949('0x31')]);_0x5d48af[_0xb949('0x33')]=_[_0xb949('0x34')](_0x5d48af[_0xb949('0x30')],_0x5d48af[_0xb949('0x31')]);_0x4cc1f0[_0xb949('0x35')]=_[_0xb949('0x34')](_0x5d48af[_0xb949('0x30')],qs[_0xb949('0x36')](_0x35da1b[_0xb949('0x31')][_0xb949('0x36')]));_0x4cc1f0['attributes']=_0x4cc1f0[_0xb949('0x35')][_0xb949('0x37')]?_0x4cc1f0[_0xb949('0x35')]:_0x5d48af[_0xb949('0x30')];if(!_0x35da1b[_0xb949('0x31')]['hasOwnProperty'](_0xb949('0x38'))){_0x4cc1f0[_0xb949('0x1f')]=qs[_0xb949('0x1f')](_0x35da1b[_0xb949('0x31')]['limit']);_0x4cc1f0['offset']=qs['offset'](_0x35da1b[_0xb949('0x31')][_0xb949('0x1c')]);}_0x4cc1f0[_0xb949('0x39')]=qs[_0xb949('0x3a')](_0x35da1b[_0xb949('0x31')]['sort']);_0x4cc1f0['where']=qs[_0xb949('0x33')](_[_0xb949('0x3b')](_0x35da1b[_0xb949('0x31')],_0x5d48af['filters']),_0xec0d3e);if(_0x35da1b['query'][_0xb949('0x3c')]){_0x4cc1f0[_0xb949('0x3d')]=_[_0xb949('0x3e')](_0x4cc1f0[_0xb949('0x3d')],{'$or':_[_0xb949('0x2b')](_0xec0d3e,function(_0x21e3c4){if(_0x21e3c4[_0xb949('0x2f')]!==_0xb949('0x3f')){var _0x2dd9cb={};_0x2dd9cb[_0x21e3c4['name']]={'$like':'%'+_0x35da1b[_0xb949('0x31')]['filter']+'%'};return _0x2dd9cb;}})});}_0x4cc1f0=_[_0xb949('0x3e')]({},_0x4cc1f0,_0x35da1b['options']);var _0x2169fa={'where':_0x4cc1f0[_0xb949('0x3d')]};return db[_0xb949('0x2c')][_0xb949('0x1e')](_0x2169fa)['then'](function(_0x59ab63){_0x5c427a[_0xb949('0x1e')]=_0x59ab63;if(_0x35da1b[_0xb949('0x31')][_0xb949('0x40')]){_0x4cc1f0[_0xb949('0x41')]=[{'all':!![]}];}return db['MailServerOut'][_0xb949('0x42')](_0x4cc1f0);})[_0xb949('0x27')](function(_0x17857f){_0x5c427a['rows']=_0x17857f;return _0x5c427a;})['then'](respondWithFilteredResult(_0x3b1b3c,_0x4cc1f0))[_0xb949('0x43')](handleError(_0x3b1b3c,null));};exports['show']=function(_0x455710,_0x5cd125){var _0x22b9e2={'raw':!![],'where':{'id':_0x455710[_0xb949('0x44')]['id']}},_0x5e5351={};_0x5e5351['model']=_[_0xb949('0x32')](db[_0xb949('0x2c')]['rawAttributes']);_0x5e5351[_0xb949('0x31')]=_[_0xb949('0x32')](_0x455710[_0xb949('0x31')]);_0x5e5351[_0xb949('0x33')]=_[_0xb949('0x34')](_0x5e5351['model'],_0x5e5351[_0xb949('0x31')]);_0x22b9e2[_0xb949('0x35')]=_['intersection'](_0x5e5351[_0xb949('0x30')],qs[_0xb949('0x36')](_0x455710[_0xb949('0x31')][_0xb949('0x36')]));_0x22b9e2[_0xb949('0x35')]=_0x22b9e2[_0xb949('0x35')][_0xb949('0x37')]?_0x22b9e2[_0xb949('0x35')]:_0x5e5351[_0xb949('0x30')];if(_0x455710[_0xb949('0x31')][_0xb949('0x40')]){_0x22b9e2[_0xb949('0x41')]=[{'all':!![]}];}_0x22b9e2=_[_0xb949('0x3e')]({},_0x22b9e2,_0x455710[_0xb949('0x45')]);return db['MailServerOut']['find'](_0x22b9e2)[_0xb949('0x27')](handleEntityNotFound(_0x5cd125,null))[_0xb949('0x27')](respondWithResult(_0x5cd125,null))['catch'](handleError(_0x5cd125,null));};exports[_0xb949('0x46')]=function(_0x57806f,_0xd0e8f7){return db[_0xb949('0x2c')][_0xb949('0x46')](_0x57806f[_0xb949('0x47')],{})[_0xb949('0x27')](respondWithResult(_0xd0e8f7,0xc9))[_0xb949('0x43')](handleError(_0xd0e8f7,null));};exports['update']=function(_0x48ce7b,_0x2a8521){if(_0x48ce7b[_0xb949('0x47')]['id']){delete _0x48ce7b[_0xb949('0x47')]['id'];}return db[_0xb949('0x2c')][_0xb949('0x48')]({'where':{'id':_0x48ce7b[_0xb949('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a8521,null))[_0xb949('0x27')](saveUpdates(_0x48ce7b[_0xb949('0x47')],null))[_0xb949('0x27')](respondWithResult(_0x2a8521,null))[_0xb949('0x43')](handleError(_0x2a8521,null));};exports[_0xb949('0x26')]=function(_0x8e53b2,_0x3c96df){return db[_0xb949('0x2c')][_0xb949('0x48')]({'where':{'id':_0x8e53b2[_0xb949('0x44')]['id']}})[_0xb949('0x27')](handleEntityNotFound(_0x3c96df,null))[_0xb949('0x27')](removeEntity(_0x3c96df,null))['catch'](handleError(_0x3c96df,null));};
\ No newline at end of file
index 13d005c..c19673b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4c2=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./mailServerOut.attributes','exports','define','mail_servers_out'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xe4c2,0x197));var _0x2e4c=function(_0x2c3bd9,_0x45f815){_0x2c3bd9=_0x2c3bd9-0x0;var _0x112e55=_0xe4c2[_0x2c3bd9];return _0x112e55;};'use strict';var _=require(_0x2e4c('0x0'));var util=require(_0x2e4c('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2e4c('0x2'));var BPromise=require(_0x2e4c('0x3'));var rp=require(_0x2e4c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2e4c('0x5'));var config=require(_0x2e4c('0x6'));var attributes=require(_0x2e4c('0x7'));module[_0x2e4c('0x8')]=function(_0x6487ec,_0x163654){return _0x6487ec[_0x2e4c('0x9')]('MailServerOut',attributes,{'tableName':_0x2e4c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xef18=['api','bluebird','rimraf','../../config/environment','define','lodash','util'];(function(_0x14b5ee,_0x1db8eb){var _0x482b2f=function(_0x8c92ce){while(--_0x8c92ce){_0x14b5ee['push'](_0x14b5ee['shift']());}};_0x482b2f(++_0x1db8eb);}(_0xef18,0x1d3));var _0x8ef1=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xef18[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x8ef1('0x0'));var util=require(_0x8ef1('0x1'));var logger=require('../../config/logger')(_0x8ef1('0x2'));var moment=require('moment');var BPromise=require(_0x8ef1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8ef1('0x4'));var config=require(_0x8ef1('0x5'));var attributes=require('./mailServerOut.attributes');module['exports']=function(_0x1cf825,_0x58a189){return _0x1cf825[_0x8ef1('0x6')]('MailServerOut',attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f9c463..eb2cba1 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','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x5cb4e6,_0x50bb7b){var _0x313f48=function(_0x34967d){while(--_0x34967d){_0x5cb4e6['push'](_0x5cb4e6['shift']());}};_0x313f48(++_0x50bb7b);}(_0xdb28,0x106));var _0x8db2=function(_0x2accf2,_0x254c68){_0x2accf2=_0x2accf2-0x0;var _0x35c33a=_0xdb28[_0x2accf2];return _0x35c33a;};'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')]('MailServerOut,\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 _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x3fef5d,_0x20278b){var _0x551e65=function(_0x4eaa18){while(--_0x4eaa18){_0x3fef5d['push'](_0x3fef5d['shift']());}};_0x551e65(++_0x20278b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xc4aa[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 6766e80..83c67bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5608=['../../config/environment','./mailSubstatus.controller','isAuthenticated','get','describe','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router'];(function(_0x57a7c0,_0xd79295){var _0x4ae03e=function(_0xb8d043){while(--_0xb8d043){_0x57a7c0['push'](_0x57a7c0['shift']());}};_0x4ae03e(++_0xd79295);}(_0x5608,0x1bc));var _0x8560=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5608[_0x4243a3];return _0x1b2a33;};'use strict';var multer=require(_0x8560('0x0'));var util=require(_0x8560('0x1'));var path=require(_0x8560('0x2'));var timeout=require(_0x8560('0x3'));var express=require(_0x8560('0x4'));var router=express[_0x8560('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8560('0x6'));var controller=require(_0x8560('0x7'));router['get']('/',auth[_0x8560('0x8')](),controller['index']);router[_0x8560('0x9')]('/describe',auth[_0x8560('0x8')](),controller[_0x8560('0xa')]);router[_0x8560('0x9')](_0x8560('0xb'),auth[_0x8560('0x8')](),controller[_0x8560('0xc')]);router[_0x8560('0xd')]('/',auth[_0x8560('0x8')](),controller[_0x8560('0xe')]);router[_0x8560('0xf')](_0x8560('0xb'),auth[_0x8560('0x8')](),controller[_0x8560('0x10')]);router[_0x8560('0x11')](_0x8560('0xb'),auth[_0x8560('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x07e9=['post','create','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','describe','/:id','show'];(function(_0x139e3b,_0x101d64){var _0x7cf795=function(_0x197370){while(--_0x197370){_0x139e3b['push'](_0x139e3b['shift']());}};_0x7cf795(++_0x101d64);}(_0x07e9,0x17f));var _0x907e=function(_0x4163d0,_0x15122d){_0x4163d0=_0x4163d0-0x0;var _0x1b869a=_0x07e9[_0x4163d0];return _0x1b869a;};'use strict';var multer=require('multer');var util=require(_0x907e('0x0'));var path=require(_0x907e('0x1'));var timeout=require(_0x907e('0x2'));var express=require(_0x907e('0x3'));var router=express[_0x907e('0x4')]();var fs_extra=require(_0x907e('0x5'));var auth=require(_0x907e('0x6'));var interaction=require(_0x907e('0x7'));var config=require(_0x907e('0x8'));var controller=require(_0x907e('0x9'));router[_0x907e('0xa')]('/',auth[_0x907e('0xb')](),controller[_0x907e('0xc')]);router[_0x907e('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x907e('0xd')]);router[_0x907e('0xa')](_0x907e('0xe'),auth[_0x907e('0xb')](),controller[_0x907e('0xf')]);router[_0x907e('0x10')]('/',auth[_0x907e('0xb')](),controller[_0x907e('0x11')]);router['put'](_0x907e('0xe'),auth['isAuthenticated'](),controller[_0x907e('0x12')]);router[_0x907e('0x13')]('/:id',auth[_0x907e('0xb')](),controller['destroy']);module[_0x907e('0x14')]=router;
\ No newline at end of file
index eea0025..5cd4c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['STRING','name','exports'];(function(_0x8a30d,_0x2863ab){var _0x19669b=function(_0x10d8ac){while(--_0x10d8ac){_0x8a30d['push'](_0x8a30d['shift']());}};_0x19669b(++_0x2863ab);}(_0x27a0,0xbf));var _0x027a=function(_0xced31,_0x270bb4){_0xced31=_0xced31-0x0;var _0x2e21b1=_0x27a0[_0xced31];return _0x2e21b1;};'use strict';var Sequelize=require('sequelize');module[_0x027a('0x0')]={'name':{'type':Sequelize[_0x027a('0x1')],'unique':_0x027a('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x027a('0x1')]}};
\ No newline at end of file
+var _0x3e24=['exports','STRING','name','sequelize'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0x3e24,0x167));var _0x43e2=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x3e24[_0x220dbb];return _0x2b77de;};'use strict';var Sequelize=require(_0x43e2('0x0'));module[_0x43e2('0x1')]={'name':{'type':Sequelize[_0x43e2('0x2')],'unique':_0x43e2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x43e2('0x2')]}};
\ No newline at end of file
index ee417e8..1166ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe918=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','error','stack','name','send','index','MailSubstatus','rawAttributes','fieldName','key','model','map','query','keys','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','type','VIRTUAL','include','findAll','then','rows','catch','show','params','intersection','length','includeAll','merge','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce'];(function(_0x134358,_0x3deec7){var _0x1d6fb=function(_0x5e8255){while(--_0x5e8255){_0x134358['push'](_0x134358['shift']());}};_0x1d6fb(++_0x3deec7);}(_0xe918,0x8f));var _0x8e91=function(_0x94f639,_0x4014a6){_0x94f639=_0x94f639-0x0;var _0x544c7a=_0xe918[_0x94f639];return _0x544c7a;};'use strict';var emlformat=require(_0x8e91('0x0'));var rimraf=require(_0x8e91('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8e91('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8e91('0x3'));var Mustache=require(_0x8e91('0x4'));var util=require('util');var path=require(_0x8e91('0x5'));var sox=require(_0x8e91('0x6'));var csv=require(_0x8e91('0x7'));var ejs=require(_0x8e91('0x8'));var fs=require('fs');var fs_extra=require(_0x8e91('0x9'));var _=require(_0x8e91('0xa'));var squel=require(_0x8e91('0xb'));var crypto=require('crypto');var jsforce=require(_0x8e91('0xc'));var deskjs=require(_0x8e91('0xd'));var toCsv=require(_0x8e91('0x7'));var querystring=require(_0x8e91('0xe'));var Papa=require('papaparse');var Redis=require(_0x8e91('0xf'));var authService=require(_0x8e91('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8e91('0x11'));var hardwareService=require(_0x8e91('0x12'));var logger=require('../../config/logger')(_0x8e91('0x13'));var utils=require(_0x8e91('0x14'));var config=require(_0x8e91('0x15'));var licenseUtil=require(_0x8e91('0x16'));var db=require(_0x8e91('0x17'))['db'];function respondWithStatusCode(_0x544de7,_0x42d886){_0x42d886=_0x42d886||0xcc;return function(_0x245f3f){if(_0x245f3f){return _0x544de7[_0x8e91('0x18')](_0x42d886);}return _0x544de7['status'](_0x42d886)[_0x8e91('0x19')]();};}function respondWithResult(_0x534590,_0xf01092){_0xf01092=_0xf01092||0xc8;return function(_0x59c501){if(_0x59c501){return _0x534590[_0x8e91('0x1a')](_0xf01092)[_0x8e91('0x1b')](_0x59c501);}};}function respondWithFilteredResult(_0x4d528d,_0x2138ea){return function(_0x539fa3){if(_0x539fa3){var _0x44196d=typeof _0x2138ea[_0x8e91('0x1c')]===_0x8e91('0x1d')&&typeof _0x2138ea[_0x8e91('0x1e')]===_0x8e91('0x1d');var _0x1b6a98=_0x539fa3[_0x8e91('0x1f')];var _0x523af8=_0x44196d?0x0:_0x2138ea[_0x8e91('0x1c')];var _0x35c3a8=_0x44196d?_0x539fa3[_0x8e91('0x1f')]:_0x2138ea[_0x8e91('0x1c')]+_0x2138ea['limit'];var _0x22f205;if(_0x35c3a8>=_0x1b6a98){_0x35c3a8=_0x1b6a98;_0x22f205=0xc8;}else{_0x22f205=0xce;}_0x4d528d[_0x8e91('0x1a')](_0x22f205);return _0x4d528d[_0x8e91('0x20')](_0x8e91('0x21'),_0x523af8+'-'+_0x35c3a8+'/'+_0x1b6a98)['json'](_0x539fa3);}return null;};}function patchUpdates(_0x8c04c8){return function(_0x4a7bac){try{jsonpatch[_0x8e91('0x22')](_0x4a7bac,_0x8c04c8,!![]);}catch(_0x5ca180){return BPromise['reject'](_0x5ca180);}return _0x4a7bac[_0x8e91('0x23')]();};}function saveUpdates(_0x49fc77,_0x1f8679){return function(_0x8e9157){if(_0x8e9157){return _0x8e9157[_0x8e91('0x24')](_0x49fc77)['then'](function(_0x378835){return _0x378835;});}return null;};}function removeEntity(_0x2e5e0f,_0x53ce5f){return function(_0x50e036){if(_0x50e036){return _0x50e036[_0x8e91('0x25')]()['then'](function(){_0x2e5e0f['status'](0xcc)[_0x8e91('0x19')]();});}};}function handleEntityNotFound(_0x991863,_0x18c12){return function(_0x218008){if(!_0x218008){_0x991863['sendStatus'](0x194);}return _0x218008;};}function handleError(_0x20c766,_0x48bcdb){_0x48bcdb=_0x48bcdb||0x1f4;return function(_0x228ca6){logger[_0x8e91('0x26')](_0x228ca6[_0x8e91('0x27')]);if(_0x228ca6[_0x8e91('0x28')]){delete _0x228ca6[_0x8e91('0x28')];}_0x20c766['status'](_0x48bcdb)[_0x8e91('0x29')](_0x228ca6);};}exports[_0x8e91('0x2a')]=function(_0x3858ba,_0x10b28d){var _0x50bc30={},_0x559949={},_0x496a07={'count':0x0,'rows':[]};var _0x3dd87c=_['map'](db[_0x8e91('0x2b')][_0x8e91('0x2c')],function(_0x58f5a2){return{'name':_0x58f5a2[_0x8e91('0x2d')],'type':_0x58f5a2['type'][_0x8e91('0x2e')]};});_0x559949[_0x8e91('0x2f')]=_[_0x8e91('0x30')](_0x3dd87c,'name');_0x559949[_0x8e91('0x31')]=_[_0x8e91('0x32')](_0x3858ba[_0x8e91('0x31')]);_0x559949['filters']=_['intersection'](_0x559949['model'],_0x559949[_0x8e91('0x31')]);_0x50bc30[_0x8e91('0x33')]=_['intersection'](_0x559949[_0x8e91('0x2f')],qs['fields'](_0x3858ba[_0x8e91('0x31')][_0x8e91('0x34')]));_0x50bc30[_0x8e91('0x33')]=_0x50bc30[_0x8e91('0x33')]['length']?_0x50bc30[_0x8e91('0x33')]:_0x559949[_0x8e91('0x2f')];if(!_0x3858ba[_0x8e91('0x31')][_0x8e91('0x35')](_0x8e91('0x36'))){_0x50bc30[_0x8e91('0x1e')]=qs[_0x8e91('0x1e')](_0x3858ba[_0x8e91('0x31')][_0x8e91('0x1e')]);_0x50bc30[_0x8e91('0x1c')]=qs[_0x8e91('0x1c')](_0x3858ba[_0x8e91('0x31')][_0x8e91('0x1c')]);}_0x50bc30['order']=qs[_0x8e91('0x37')](_0x3858ba[_0x8e91('0x31')][_0x8e91('0x37')]);_0x50bc30[_0x8e91('0x38')]=qs[_0x8e91('0x39')](_[_0x8e91('0x3a')](_0x3858ba['query'],_0x559949[_0x8e91('0x39')]),_0x3dd87c);if(_0x3858ba[_0x8e91('0x31')][_0x8e91('0x3b')]){_0x50bc30[_0x8e91('0x38')]=_['merge'](_0x50bc30['where'],{'$or':_[_0x8e91('0x30')](_0x3dd87c,function(_0x7fb5c){if(_0x7fb5c[_0x8e91('0x3c')]!==_0x8e91('0x3d')){var _0x2e3126={};_0x2e3126[_0x7fb5c[_0x8e91('0x28')]]={'$like':'%'+_0x3858ba[_0x8e91('0x31')]['filter']+'%'};return _0x2e3126;}})});}_0x50bc30=_['merge']({},_0x50bc30,_0x3858ba['options']);var _0x1b93fe={'where':_0x50bc30[_0x8e91('0x38')]};return db[_0x8e91('0x2b')][_0x8e91('0x1f')](_0x1b93fe)['then'](function(_0x4daff0){_0x496a07[_0x8e91('0x1f')]=_0x4daff0;if(_0x3858ba['query']['includeAll']){_0x50bc30[_0x8e91('0x3e')]=[{'all':!![]}];}return db[_0x8e91('0x2b')][_0x8e91('0x3f')](_0x50bc30);})[_0x8e91('0x40')](function(_0x498898){_0x496a07[_0x8e91('0x41')]=_0x498898;return _0x496a07;})['then'](respondWithFilteredResult(_0x10b28d,_0x50bc30))[_0x8e91('0x42')](handleError(_0x10b28d,null));};exports[_0x8e91('0x43')]=function(_0x414f65,_0x224c17){var _0x1421cd={'raw':!![],'where':{'id':_0x414f65[_0x8e91('0x44')]['id']}},_0x406e38={};_0x406e38[_0x8e91('0x2f')]=_[_0x8e91('0x32')](db[_0x8e91('0x2b')]['rawAttributes']);_0x406e38[_0x8e91('0x31')]=_['keys'](_0x414f65[_0x8e91('0x31')]);_0x406e38[_0x8e91('0x39')]=_['intersection'](_0x406e38[_0x8e91('0x2f')],_0x406e38[_0x8e91('0x31')]);_0x1421cd[_0x8e91('0x33')]=_[_0x8e91('0x45')](_0x406e38[_0x8e91('0x2f')],qs['fields'](_0x414f65[_0x8e91('0x31')]['fields']));_0x1421cd[_0x8e91('0x33')]=_0x1421cd['attributes'][_0x8e91('0x46')]?_0x1421cd['attributes']:_0x406e38[_0x8e91('0x2f')];if(_0x414f65[_0x8e91('0x31')][_0x8e91('0x47')]){_0x1421cd[_0x8e91('0x3e')]=[{'all':!![]}];}_0x1421cd=_[_0x8e91('0x48')]({},_0x1421cd,_0x414f65[_0x8e91('0x49')]);return db[_0x8e91('0x2b')][_0x8e91('0x4a')](_0x1421cd)[_0x8e91('0x40')](handleEntityNotFound(_0x224c17,null))['then'](respondWithResult(_0x224c17,null))[_0x8e91('0x42')](handleError(_0x224c17,null));};exports[_0x8e91('0x4b')]=function(_0x3c67e6,_0x1215b8){return db[_0x8e91('0x2b')][_0x8e91('0x4b')](_0x3c67e6[_0x8e91('0x4c')],{})['then'](respondWithResult(_0x1215b8,0xc9))['catch'](handleError(_0x1215b8,null));};exports[_0x8e91('0x24')]=function(_0x19389e,_0x15d6a3){if(_0x19389e[_0x8e91('0x4c')]['id']){delete _0x19389e[_0x8e91('0x4c')]['id'];}return db[_0x8e91('0x2b')][_0x8e91('0x4a')]({'where':{'id':_0x19389e['params']['id']}})[_0x8e91('0x40')](handleEntityNotFound(_0x15d6a3,null))[_0x8e91('0x40')](saveUpdates(_0x19389e[_0x8e91('0x4c')],null))[_0x8e91('0x40')](respondWithResult(_0x15d6a3,null))['catch'](handleError(_0x15d6a3,null));};exports[_0x8e91('0x25')]=function(_0x4efc8b,_0xccf94d){return db[_0x8e91('0x2b')]['find']({'where':{'id':_0x4efc8b['params']['id']}})[_0x8e91('0x40')](handleEntityNotFound(_0xccf94d,null))['then'](removeEntity(_0xccf94d,null))[_0x8e91('0x42')](handleError(_0xccf94d,null));};exports['describe']=function(_0x4ebc33,_0x4280fa){return db[_0x8e91('0x2b')][_0x8e91('0x4d')]()[_0x8e91('0x40')](respondWithResult(_0x4280fa,null))[_0x8e91('0x42')](handleError(_0x4280fa,null));};
\ No newline at end of file
+var _0x8598=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../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','update','then','error','stack','name','send','index','map','MailSubstatus','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','querystring'];(function(_0x5c2c7c,_0xa7d3b1){var _0xea7ffe=function(_0x471f17){while(--_0x471f17){_0x5c2c7c['push'](_0x5c2c7c['shift']());}};_0xea7ffe(++_0xa7d3b1);}(_0x8598,0x88));var _0x8859=function(_0x4e4f0e,_0x1c3892){_0x4e4f0e=_0x4e4f0e-0x0;var _0x1a7219=_0x8598[_0x4e4f0e];return _0x1a7219;};'use strict';var emlformat=require(_0x8859('0x0'));var rimraf=require(_0x8859('0x1'));var zipdir=require(_0x8859('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8859('0x3'));var BPromise=require(_0x8859('0x4'));var Mustache=require(_0x8859('0x5'));var util=require(_0x8859('0x6'));var path=require('path');var sox=require(_0x8859('0x7'));var csv=require(_0x8859('0x8'));var ejs=require(_0x8859('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8859('0xa'));var crypto=require(_0x8859('0xb'));var jsforce=require(_0x8859('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8859('0xd'));var Papa=require(_0x8859('0xe'));var Redis=require(_0x8859('0xf'));var authService=require(_0x8859('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8859('0x11'));var hardwareService=require(_0x8859('0x12'));var logger=require(_0x8859('0x13'))('api');var utils=require(_0x8859('0x14'));var config=require(_0x8859('0x15'));var licenseUtil=require(_0x8859('0x16'));var db=require(_0x8859('0x17'))['db'];function respondWithStatusCode(_0x274d75,_0x135b61){_0x135b61=_0x135b61||0xcc;return function(_0xc89cb8){if(_0xc89cb8){return _0x274d75[_0x8859('0x18')](_0x135b61);}return _0x274d75[_0x8859('0x19')](_0x135b61)[_0x8859('0x1a')]();};}function respondWithResult(_0x5dfefc,_0x10f2bd){_0x10f2bd=_0x10f2bd||0xc8;return function(_0x199a0e){if(_0x199a0e){return _0x5dfefc[_0x8859('0x19')](_0x10f2bd)[_0x8859('0x1b')](_0x199a0e);}};}function respondWithFilteredResult(_0x300694,_0x33d6d2){return function(_0x392bad){if(_0x392bad){var _0x194143=typeof _0x33d6d2[_0x8859('0x1c')]===_0x8859('0x1d')&&typeof _0x33d6d2[_0x8859('0x1e')]===_0x8859('0x1d');var _0x935242=_0x392bad[_0x8859('0x1f')];var _0x111b6a=_0x194143?0x0:_0x33d6d2[_0x8859('0x1c')];var _0x25a840=_0x194143?_0x392bad[_0x8859('0x1f')]:_0x33d6d2['offset']+_0x33d6d2['limit'];var _0x237ca5;if(_0x25a840>=_0x935242){_0x25a840=_0x935242;_0x237ca5=0xc8;}else{_0x237ca5=0xce;}_0x300694['status'](_0x237ca5);return _0x300694[_0x8859('0x20')](_0x8859('0x21'),_0x111b6a+'-'+_0x25a840+'/'+_0x935242)[_0x8859('0x1b')](_0x392bad);}return null;};}function patchUpdates(_0x2a60db){return function(_0x3c8b9e){try{jsonpatch[_0x8859('0x22')](_0x3c8b9e,_0x2a60db,!![]);}catch(_0x3d4003){return BPromise['reject'](_0x3d4003);}return _0x3c8b9e['save']();};}function saveUpdates(_0x2bef16,_0x2ea171){return function(_0x12264c){if(_0x12264c){return _0x12264c[_0x8859('0x23')](_0x2bef16)[_0x8859('0x24')](function(_0x2e83de){return _0x2e83de;});}return null;};}function removeEntity(_0x30a183,_0x22e258){return function(_0xaad77f){if(_0xaad77f){return _0xaad77f['destroy']()[_0x8859('0x24')](function(){_0x30a183[_0x8859('0x19')](0xcc)[_0x8859('0x1a')]();});}};}function handleEntityNotFound(_0x10b199,_0x433bc5){return function(_0xb187cf){if(!_0xb187cf){_0x10b199[_0x8859('0x18')](0x194);}return _0xb187cf;};}function handleError(_0xa90b02,_0x1a1910){_0x1a1910=_0x1a1910||0x1f4;return function(_0x84be3a){logger[_0x8859('0x25')](_0x84be3a[_0x8859('0x26')]);if(_0x84be3a[_0x8859('0x27')]){delete _0x84be3a[_0x8859('0x27')];}_0xa90b02[_0x8859('0x19')](_0x1a1910)[_0x8859('0x28')](_0x84be3a);};}exports[_0x8859('0x29')]=function(_0xcd1943,_0x24896a){var _0x1f7761={},_0x5d83cd={},_0x38da6a={'count':0x0,'rows':[]};var _0x5ad710=_[_0x8859('0x2a')](db[_0x8859('0x2b')][_0x8859('0x2c')],function(_0x5745ad){return{'name':_0x5745ad[_0x8859('0x2d')],'type':_0x5745ad['type']['key']};});_0x5d83cd[_0x8859('0x2e')]=_[_0x8859('0x2a')](_0x5ad710,_0x8859('0x27'));_0x5d83cd[_0x8859('0x2f')]=_['keys'](_0xcd1943[_0x8859('0x2f')]);_0x5d83cd[_0x8859('0x30')]=_['intersection'](_0x5d83cd['model'],_0x5d83cd['query']);_0x1f7761[_0x8859('0x31')]=_[_0x8859('0x32')](_0x5d83cd[_0x8859('0x2e')],qs[_0x8859('0x33')](_0xcd1943[_0x8859('0x2f')]['fields']));_0x1f7761[_0x8859('0x31')]=_0x1f7761[_0x8859('0x31')][_0x8859('0x34')]?_0x1f7761[_0x8859('0x31')]:_0x5d83cd[_0x8859('0x2e')];if(!_0xcd1943[_0x8859('0x2f')][_0x8859('0x35')](_0x8859('0x36'))){_0x1f7761['limit']=qs[_0x8859('0x1e')](_0xcd1943['query'][_0x8859('0x1e')]);_0x1f7761[_0x8859('0x1c')]=qs[_0x8859('0x1c')](_0xcd1943['query'][_0x8859('0x1c')]);}_0x1f7761[_0x8859('0x37')]=qs[_0x8859('0x38')](_0xcd1943[_0x8859('0x2f')]['sort']);_0x1f7761[_0x8859('0x39')]=qs[_0x8859('0x30')](_[_0x8859('0x3a')](_0xcd1943[_0x8859('0x2f')],_0x5d83cd['filters']),_0x5ad710);if(_0xcd1943[_0x8859('0x2f')][_0x8859('0x3b')]){_0x1f7761['where']=_[_0x8859('0x3c')](_0x1f7761[_0x8859('0x39')],{'$or':_[_0x8859('0x2a')](_0x5ad710,function(_0x43fee3){if(_0x43fee3['type']!=='VIRTUAL'){var _0x113c29={};_0x113c29[_0x43fee3['name']]={'$like':'%'+_0xcd1943[_0x8859('0x2f')][_0x8859('0x3b')]+'%'};return _0x113c29;}})});}_0x1f7761=_[_0x8859('0x3c')]({},_0x1f7761,_0xcd1943[_0x8859('0x3d')]);var _0x57bf04={'where':_0x1f7761[_0x8859('0x39')]};return db[_0x8859('0x2b')][_0x8859('0x1f')](_0x57bf04)[_0x8859('0x24')](function(_0x48394c){_0x38da6a[_0x8859('0x1f')]=_0x48394c;if(_0xcd1943[_0x8859('0x2f')][_0x8859('0x3e')]){_0x1f7761[_0x8859('0x3f')]=[{'all':!![]}];}return db[_0x8859('0x2b')][_0x8859('0x40')](_0x1f7761);})['then'](function(_0x49ac01){_0x38da6a[_0x8859('0x41')]=_0x49ac01;return _0x38da6a;})[_0x8859('0x24')](respondWithFilteredResult(_0x24896a,_0x1f7761))[_0x8859('0x42')](handleError(_0x24896a,null));};exports[_0x8859('0x43')]=function(_0x5088a7,_0xf84b5f){var _0x3e6a00={'raw':!![],'where':{'id':_0x5088a7[_0x8859('0x44')]['id']}},_0x28ebe3={};_0x28ebe3[_0x8859('0x2e')]=_[_0x8859('0x45')](db[_0x8859('0x2b')]['rawAttributes']);_0x28ebe3[_0x8859('0x2f')]=_[_0x8859('0x45')](_0x5088a7[_0x8859('0x2f')]);_0x28ebe3[_0x8859('0x30')]=_[_0x8859('0x32')](_0x28ebe3['model'],_0x28ebe3[_0x8859('0x2f')]);_0x3e6a00[_0x8859('0x31')]=_[_0x8859('0x32')](_0x28ebe3[_0x8859('0x2e')],qs[_0x8859('0x33')](_0x5088a7['query']['fields']));_0x3e6a00[_0x8859('0x31')]=_0x3e6a00[_0x8859('0x31')]['length']?_0x3e6a00['attributes']:_0x28ebe3[_0x8859('0x2e')];if(_0x5088a7[_0x8859('0x2f')][_0x8859('0x3e')]){_0x3e6a00[_0x8859('0x3f')]=[{'all':!![]}];}_0x3e6a00=_[_0x8859('0x3c')]({},_0x3e6a00,_0x5088a7[_0x8859('0x3d')]);return db[_0x8859('0x2b')][_0x8859('0x46')](_0x3e6a00)[_0x8859('0x24')](handleEntityNotFound(_0xf84b5f,null))[_0x8859('0x24')](respondWithResult(_0xf84b5f,null))[_0x8859('0x42')](handleError(_0xf84b5f,null));};exports['create']=function(_0x270fdc,_0x37246b){return db[_0x8859('0x2b')][_0x8859('0x47')](_0x270fdc[_0x8859('0x48')],{})[_0x8859('0x24')](respondWithResult(_0x37246b,0xc9))['catch'](handleError(_0x37246b,null));};exports[_0x8859('0x23')]=function(_0x215d48,_0x32fc19){if(_0x215d48[_0x8859('0x48')]['id']){delete _0x215d48[_0x8859('0x48')]['id'];}return db[_0x8859('0x2b')][_0x8859('0x46')]({'where':{'id':_0x215d48[_0x8859('0x44')]['id']}})[_0x8859('0x24')](handleEntityNotFound(_0x32fc19,null))[_0x8859('0x24')](saveUpdates(_0x215d48[_0x8859('0x48')],null))['then'](respondWithResult(_0x32fc19,null))[_0x8859('0x42')](handleError(_0x32fc19,null));};exports[_0x8859('0x49')]=function(_0x4fa880,_0x53a634){return db[_0x8859('0x2b')][_0x8859('0x46')]({'where':{'id':_0x4fa880['params']['id']}})[_0x8859('0x24')](handleEntityNotFound(_0x53a634,null))[_0x8859('0x24')](removeEntity(_0x53a634,null))[_0x8859('0x42')](handleError(_0x53a634,null));};exports[_0x8859('0x4a')]=function(_0x3c32e8,_0x4569f0){return db['MailSubstatus'][_0x8859('0x4a')]()[_0x8859('0x24')](respondWithResult(_0x4569f0,null))[_0x8859('0x42')](handleError(_0x4569f0,null));};
\ No newline at end of file
index 3f9590a..1e45dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x963a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','define','lodash','util','../../config/logger'];(function(_0x540160,_0x24c6b6){var _0x476120=function(_0x28046c){while(--_0x28046c){_0x540160['push'](_0x540160['shift']());}};_0x476120(++_0x24c6b6);}(_0x963a,0xe1));var _0xa963=function(_0x3341a9,_0x517989){_0x3341a9=_0x3341a9-0x0;var _0x25fe66=_0x963a[_0x3341a9];return _0x25fe66;};'use strict';var _=require(_0xa963('0x0'));var util=require(_0xa963('0x1'));var logger=require(_0xa963('0x2'))(_0xa963('0x3'));var moment=require(_0xa963('0x4'));var BPromise=require(_0xa963('0x5'));var rp=require(_0xa963('0x6'));var fs=require('fs');var path=require(_0xa963('0x7'));var rimraf=require(_0xa963('0x8'));var config=require(_0xa963('0x9'));var attributes=require(_0xa963('0xa'));module['exports']=function(_0x1dacb8,_0x492b63){return _0x1dacb8[_0xa963('0xb')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fd5=['path','rimraf','../../config/environment','exports','define','MailSubstatus','mail_substatuses','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x5fd5,0x1ce));var _0x55fd=function(_0x23f642,_0x3c8f66){_0x23f642=_0x23f642-0x0;var _0x4ba0d0=_0x5fd5[_0x23f642];return _0x4ba0d0;};'use strict';var _=require(_0x55fd('0x0'));var util=require(_0x55fd('0x1'));var logger=require(_0x55fd('0x2'))(_0x55fd('0x3'));var moment=require('moment');var BPromise=require(_0x55fd('0x4'));var rp=require(_0x55fd('0x5'));var fs=require('fs');var path=require(_0x55fd('0x6'));var rimraf=require(_0x55fd('0x7'));var config=require(_0x55fd('0x8'));var attributes=require('./mailSubstatus.attributes');module[_0x55fd('0x9')]=function(_0x4d4550,_0xe4a36){return _0x4d4550[_0x55fd('0xa')](_0x55fd('0xb'),attributes,{'tableName':_0x55fd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc08525..3881943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36e9=['then','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','error','code','message','MailSubstatus,\x20%s,\x20%s','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x14463b,_0x2c1a62){var _0x4d09ab=function(_0x52936c){while(--_0x52936c){_0x14463b['push'](_0x14463b['shift']());}};_0x4d09ab(++_0x2c1a62);}(_0x36e9,0x150));var _0x936e=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x36e9[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x936e('0x0'));var util=require(_0x936e('0x1'));var moment=require(_0x936e('0x2'));var BPromise=require(_0x936e('0x3'));var rs=require(_0x936e('0x4'));var fs=require('fs');var Redis=require(_0x936e('0x5'));var db=require(_0x936e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x936e('0x7'))(_0x936e('0x8'));var config=require(_0x936e('0x9'));var jayson=require(_0x936e('0xa'));var client=jayson[_0x936e('0xb')][_0x936e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x329ef2,_0x1e60d1,_0x3661ea){return new BPromise(function(_0x28424d,_0x412ad3){return client[_0x936e('0xd')](_0x329ef2,_0x3661ea)[_0x936e('0xe')](function(_0x30363a){logger['info']('MailSubstatus,\x20%s,\x20%s',_0x1e60d1,_0x936e('0xf'));logger[_0x936e('0x10')](_0x936e('0x11'),_0x1e60d1,_0x936e('0xf'),JSON['stringify'](_0x30363a));if(_0x30363a[_0x936e('0x12')]){if(_0x30363a[_0x936e('0x12')][_0x936e('0x13')]===0x1f4){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x1e60d1,_0x30363a[_0x936e('0x12')][_0x936e('0x14')]);return _0x412ad3(_0x30363a[_0x936e('0x12')]['message']);}logger[_0x936e('0x12')](_0x936e('0x15'),_0x1e60d1,_0x30363a[_0x936e('0x12')][_0x936e('0x14')]);return _0x28424d(_0x30363a[_0x936e('0x12')]['message']);}else{logger[_0x936e('0x16')]('MailSubstatus,\x20%s,\x20%s',_0x1e60d1,_0x936e('0xf'));_0x28424d(_0x30363a[_0x936e('0x17')]['message']);}})[_0x936e('0x18')](function(_0x317030){logger[_0x936e('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x1e60d1,_0x317030);_0x412ad3(_0x317030);});});}
\ No newline at end of file
+var _0x55f2=['ioredis','../../config/logger','../../config/environment','client','request','then','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','MailSubstatus,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x55f2,0x100));var _0x255f=function(_0x8669ae,_0x25082d){_0x8669ae=_0x8669ae-0x0;var _0x2aeb72=_0x55f2[_0x8669ae];return _0x2aeb72;};'use strict';var _=require(_0x255f('0x0'));var util=require('util');var moment=require(_0x255f('0x1'));var BPromise=require(_0x255f('0x2'));var rs=require(_0x255f('0x3'));var fs=require('fs');var Redis=require(_0x255f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x255f('0x5'))('rpc');var config=require(_0x255f('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x255f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x205ba6,_0x38c752,_0x4e6041){return new BPromise(function(_0x3a9a57,_0xb8ed8b){return client[_0x255f('0x8')](_0x205ba6,_0x4e6041)[_0x255f('0x9')](function(_0x4f14ce){logger[_0x255f('0xa')]('MailSubstatus,\x20%s,\x20%s',_0x38c752,_0x255f('0xb'));logger[_0x255f('0xc')](_0x255f('0xd'),_0x38c752,_0x255f('0xb'),JSON[_0x255f('0xe')](_0x4f14ce));if(_0x4f14ce['error']){if(_0x4f14ce[_0x255f('0xf')][_0x255f('0x10')]===0x1f4){logger[_0x255f('0xf')](_0x255f('0x11'),_0x38c752,_0x4f14ce[_0x255f('0xf')][_0x255f('0x12')]);return _0xb8ed8b(_0x4f14ce[_0x255f('0xf')][_0x255f('0x12')]);}logger[_0x255f('0xf')](_0x255f('0x11'),_0x38c752,_0x4f14ce[_0x255f('0xf')]['message']);return _0x3a9a57(_0x4f14ce[_0x255f('0xf')][_0x255f('0x12')]);}else{logger['info'](_0x255f('0x11'),_0x38c752,_0x255f('0xb'));_0x3a9a57(_0x4f14ce['result']['message']);}})[_0x255f('0x13')](function(_0x23ee68){logger['error'](_0x255f('0x11'),_0x38c752,_0x23ee68);_0xb8ed8b(_0x23ee68);});});}
\ No newline at end of file
index d876ef3..02e6a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd61=['show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id'];(function(_0x3c1667,_0x29f35b){var _0x1c2cd1=function(_0x27bada){while(--_0x27bada){_0x3c1667['push'](_0x3c1667['shift']());}};_0x1c2cd1(++_0x29f35b);}(_0xfd61,0x160));var _0x1fd6=function(_0x472cf2,_0x20b84b){_0x472cf2=_0x472cf2-0x0;var _0x4c9bde=_0xfd61[_0x472cf2];return _0x4c9bde;};'use strict';var multer=require(_0x1fd6('0x0'));var util=require(_0x1fd6('0x1'));var path=require(_0x1fd6('0x2'));var timeout=require(_0x1fd6('0x3'));var express=require(_0x1fd6('0x4'));var router=express[_0x1fd6('0x5')]();var fs_extra=require(_0x1fd6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1fd6('0x7'));var config=require(_0x1fd6('0x8'));var controller=require(_0x1fd6('0x9'));router['get']('/',auth[_0x1fd6('0xa')](),controller[_0x1fd6('0xb')]);router[_0x1fd6('0xc')](_0x1fd6('0xd'),auth[_0x1fd6('0xa')](),controller[_0x1fd6('0xe')]);router[_0x1fd6('0xc')](_0x1fd6('0xf'),auth[_0x1fd6('0xa')](),controller[_0x1fd6('0x10')]);router[_0x1fd6('0x11')]('/',auth[_0x1fd6('0xa')](),controller['create']);router[_0x1fd6('0x12')](_0x1fd6('0xf'),auth[_0x1fd6('0xa')](),controller[_0x1fd6('0x13')]);router[_0x1fd6('0x14')]('/:id',auth[_0x1fd6('0xa')](),controller[_0x1fd6('0x15')]);module[_0x1fd6('0x16')]=router;
\ No newline at end of file
+var _0xdc9d=['path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','util'];(function(_0x370c4d,_0x38ac8d){var _0x3d2648=function(_0x32b19c){while(--_0x32b19c){_0x370c4d['push'](_0x370c4d['shift']());}};_0x3d2648(++_0x38ac8d);}(_0xdc9d,0x11c));var _0xddc9=function(_0x98b404,_0x12159f){_0x98b404=_0x98b404-0x0;var _0x45f47e=_0xdc9d[_0x98b404];return _0x45f47e;};'use strict';var multer=require('multer');var util=require(_0xddc9('0x0'));var path=require(_0xddc9('0x1'));var timeout=require('connect-timeout');var express=require(_0xddc9('0x2'));var router=express[_0xddc9('0x3')]();var fs_extra=require(_0xddc9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xddc9('0x5'));var config=require(_0xddc9('0x6'));var controller=require(_0xddc9('0x7'));router[_0xddc9('0x8')]('/',auth[_0xddc9('0x9')](),controller[_0xddc9('0xa')]);router[_0xddc9('0x8')]('/describe',auth[_0xddc9('0x9')](),controller['describe']);router[_0xddc9('0x8')](_0xddc9('0xb'),auth[_0xddc9('0x9')](),controller[_0xddc9('0xc')]);router[_0xddc9('0xd')]('/',auth[_0xddc9('0x9')](),controller['create']);router[_0xddc9('0xe')]('/:id',auth[_0xddc9('0x9')](),controller[_0xddc9('0xf')]);router[_0xddc9('0x10')](_0xddc9('0xb'),auth[_0xddc9('0x9')](),controller[_0xddc9('0x11')]);module[_0xddc9('0x12')]=router;
\ No newline at end of file
index 33d5c7d..c405a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x623e7,_0x1bef7d){var _0x121131=function(_0x59b734){while(--_0x59b734){_0x623e7['push'](_0x623e7['shift']());}};_0x121131(++_0x1bef7d);}(_0x9bde,0xe1));var _0xe9bd=function(_0x21b61d,_0x4c07f6){_0x21b61d=_0x21b61d-0x0;var _0x1a941b=_0x9bde[_0x21b61d];return _0x1a941b;};'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 _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x2b04b3,_0x3798e8){var _0x29693b=function(_0x26f1fd){while(--_0x26f1fd){_0x2b04b3['push'](_0x2b04b3['shift']());}};_0x29693b(++_0x3798e8);}(_0x70e0,0x17b));var _0x070e=function(_0x5b15ae,_0xff5491){_0x5b15ae=_0x5b15ae-0x0;var _0x431a8a=_0x70e0[_0x5b15ae];return _0x431a8a;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
index 41b35b5..cb5438a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08c0=['query','intersection','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','merge','where','type','options','MailTransferReport','includeAll','include','findAll','then','catch','show','params','fields','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','stack','name','index','map','rawAttributes','fieldName','model','keys'];(function(_0x7f4c0d,_0x3bca59){var _0x29219b=function(_0xc9987a){while(--_0xc9987a){_0x7f4c0d['push'](_0x7f4c0d['shift']());}};_0x29219b(++_0x3bca59);}(_0x08c0,0x1d8));var _0x008c=function(_0x3fb1d9,_0x5977f3){_0x3fb1d9=_0x3fb1d9-0x0;var _0x433bfe=_0x08c0[_0x3fb1d9];return _0x433bfe;};'use strict';var emlformat=require(_0x008c('0x0'));var rimraf=require(_0x008c('0x1'));var zipdir=require(_0x008c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x008c('0x3'));var moment=require(_0x008c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x008c('0x5'));var util=require(_0x008c('0x6'));var path=require(_0x008c('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x008c('0x8'));var fs=require('fs');var fs_extra=require(_0x008c('0x9'));var _=require(_0x008c('0xa'));var squel=require(_0x008c('0xb'));var crypto=require(_0x008c('0xc'));var jsforce=require(_0x008c('0xd'));var deskjs=require(_0x008c('0xe'));var toCsv=require(_0x008c('0xf'));var querystring=require(_0x008c('0x10'));var Papa=require('papaparse');var Redis=require(_0x008c('0x11'));var authService=require(_0x008c('0x12'));var qs=require(_0x008c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x008c('0x14'));var utils=require(_0x008c('0x15'));var config=require(_0x008c('0x16'));var licenseUtil=require(_0x008c('0x17'));var db=require(_0x008c('0x18'))['db'];function respondWithStatusCode(_0x4dc1d5,_0x335ca6){_0x335ca6=_0x335ca6||0xcc;return function(_0x505b26){if(_0x505b26){return _0x4dc1d5[_0x008c('0x19')](_0x335ca6);}return _0x4dc1d5[_0x008c('0x1a')](_0x335ca6)[_0x008c('0x1b')]();};}function respondWithResult(_0x403291,_0x52b284){_0x52b284=_0x52b284||0xc8;return function(_0x48f723){if(_0x48f723){return _0x403291[_0x008c('0x1a')](_0x52b284)[_0x008c('0x1c')](_0x48f723);}};}function respondWithFilteredResult(_0x51b4f9,_0x343082){return function(_0x1b5ecb){if(_0x1b5ecb){var _0x4266e8=typeof _0x343082[_0x008c('0x1d')]===_0x008c('0x1e')&&typeof _0x343082[_0x008c('0x1f')]===_0x008c('0x1e');var _0x130c9c=_0x1b5ecb[_0x008c('0x20')];var _0x3da077=_0x4266e8?0x0:_0x343082['offset'];var _0x346089=_0x4266e8?_0x1b5ecb[_0x008c('0x20')]:_0x343082[_0x008c('0x1d')]+_0x343082['limit'];var _0xcc301c;if(_0x346089>=_0x130c9c){_0x346089=_0x130c9c;_0xcc301c=0xc8;}else{_0xcc301c=0xce;}_0x51b4f9[_0x008c('0x1a')](_0xcc301c);return _0x51b4f9[_0x008c('0x21')](_0x008c('0x22'),_0x3da077+'-'+_0x346089+'/'+_0x130c9c)[_0x008c('0x1c')](_0x1b5ecb);}return null;};}function patchUpdates(_0x36e566){return function(_0x5326d5){try{jsonpatch[_0x008c('0x23')](_0x5326d5,_0x36e566,!![]);}catch(_0x16cf4b){return BPromise[_0x008c('0x24')](_0x16cf4b);}return _0x5326d5['save']();};}function saveUpdates(_0x872599,_0xd1f410){return function(_0x368fd5){if(_0x368fd5){return _0x368fd5[_0x008c('0x25')](_0x872599)['then'](function(_0x2b51ff){return _0x2b51ff;});}return null;};}function removeEntity(_0x2292ff,_0x5b6f4a){return function(_0x4ca30b){if(_0x4ca30b){return _0x4ca30b['destroy']()['then'](function(){_0x2292ff[_0x008c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ee3a9,_0x4dccc4){return function(_0x450295){if(!_0x450295){_0x4ee3a9['sendStatus'](0x194);}return _0x450295;};}function handleError(_0x5c0d6a,_0x1950dc){_0x1950dc=_0x1950dc||0x1f4;return function(_0xaf3064){logger['error'](_0xaf3064[_0x008c('0x26')]);if(_0xaf3064[_0x008c('0x27')]){delete _0xaf3064[_0x008c('0x27')];}_0x5c0d6a[_0x008c('0x1a')](_0x1950dc)['send'](_0xaf3064);};}exports[_0x008c('0x28')]=function(_0x51926d,_0x4ac34a){var _0x4a4850={},_0x527d4e={},_0x3add0a={'count':0x0,'rows':[]};var _0x3ea62c=_[_0x008c('0x29')](db['MailTransferReport'][_0x008c('0x2a')],function(_0x383e41){return{'name':_0x383e41[_0x008c('0x2b')],'type':_0x383e41['type']['key']};});_0x527d4e[_0x008c('0x2c')]=_['map'](_0x3ea62c,_0x008c('0x27'));_0x527d4e['query']=_[_0x008c('0x2d')](_0x51926d[_0x008c('0x2e')]);_0x527d4e['filters']=_[_0x008c('0x2f')](_0x527d4e[_0x008c('0x2c')],_0x527d4e['query']);_0x4a4850[_0x008c('0x30')]=_['intersection'](_0x527d4e['model'],qs['fields'](_0x51926d[_0x008c('0x2e')]['fields']));_0x4a4850[_0x008c('0x30')]=_0x4a4850[_0x008c('0x30')][_0x008c('0x31')]?_0x4a4850[_0x008c('0x30')]:_0x527d4e[_0x008c('0x2c')];if(!_0x51926d['query'][_0x008c('0x32')](_0x008c('0x33'))){_0x4a4850[_0x008c('0x1f')]=qs['limit'](_0x51926d[_0x008c('0x2e')][_0x008c('0x1f')]);_0x4a4850[_0x008c('0x1d')]=qs[_0x008c('0x1d')](_0x51926d[_0x008c('0x2e')]['offset']);}_0x4a4850['order']=qs[_0x008c('0x34')](_0x51926d[_0x008c('0x2e')][_0x008c('0x34')]);_0x4a4850['where']=qs[_0x008c('0x35')](_[_0x008c('0x36')](_0x51926d['query'],_0x527d4e[_0x008c('0x35')]),_0x3ea62c);if(_0x51926d[_0x008c('0x2e')][_0x008c('0x37')]){_0x4a4850['where']=_[_0x008c('0x38')](_0x4a4850[_0x008c('0x39')],{'$or':_[_0x008c('0x29')](_0x3ea62c,function(_0x38ca9c){if(_0x38ca9c[_0x008c('0x3a')]!=='VIRTUAL'){var _0x2ff925={};_0x2ff925[_0x38ca9c['name']]={'$like':'%'+_0x51926d[_0x008c('0x2e')][_0x008c('0x37')]+'%'};return _0x2ff925;}})});}_0x4a4850=_[_0x008c('0x38')]({},_0x4a4850,_0x51926d[_0x008c('0x3b')]);var _0x2454fe={'where':_0x4a4850[_0x008c('0x39')]};return db[_0x008c('0x3c')]['count'](_0x2454fe)['then'](function(_0x29158d){_0x3add0a[_0x008c('0x20')]=_0x29158d;if(_0x51926d[_0x008c('0x2e')][_0x008c('0x3d')]){_0x4a4850[_0x008c('0x3e')]=[{'all':!![]}];}return db[_0x008c('0x3c')][_0x008c('0x3f')](_0x4a4850);})[_0x008c('0x40')](function(_0x5c3786){_0x3add0a['rows']=_0x5c3786;return _0x3add0a;})[_0x008c('0x40')](respondWithFilteredResult(_0x4ac34a,_0x4a4850))[_0x008c('0x41')](handleError(_0x4ac34a,null));};exports[_0x008c('0x42')]=function(_0x5d6143,_0xf3717e){var _0x31d5ea={'raw':!![],'where':{'id':_0x5d6143[_0x008c('0x43')]['id']}},_0x5099d5={};_0x5099d5[_0x008c('0x2c')]=_[_0x008c('0x2d')](db['MailTransferReport'][_0x008c('0x2a')]);_0x5099d5[_0x008c('0x2e')]=_[_0x008c('0x2d')](_0x5d6143[_0x008c('0x2e')]);_0x5099d5[_0x008c('0x35')]=_[_0x008c('0x2f')](_0x5099d5[_0x008c('0x2c')],_0x5099d5['query']);_0x31d5ea[_0x008c('0x30')]=_[_0x008c('0x2f')](_0x5099d5[_0x008c('0x2c')],qs[_0x008c('0x44')](_0x5d6143[_0x008c('0x2e')][_0x008c('0x44')]));_0x31d5ea[_0x008c('0x30')]=_0x31d5ea[_0x008c('0x30')][_0x008c('0x31')]?_0x31d5ea[_0x008c('0x30')]:_0x5099d5[_0x008c('0x2c')];if(_0x5d6143[_0x008c('0x2e')][_0x008c('0x3d')]){_0x31d5ea[_0x008c('0x3e')]=[{'all':!![]}];}_0x31d5ea=_[_0x008c('0x38')]({},_0x31d5ea,_0x5d6143[_0x008c('0x3b')]);return db[_0x008c('0x3c')][_0x008c('0x45')](_0x31d5ea)['then'](handleEntityNotFound(_0xf3717e,null))[_0x008c('0x40')](respondWithResult(_0xf3717e,null))['catch'](handleError(_0xf3717e,null));};exports['create']=function(_0x3c5b93,_0x4e0d34){return db[_0x008c('0x3c')][_0x008c('0x46')](_0x3c5b93[_0x008c('0x47')],{})['then'](respondWithResult(_0x4e0d34,0xc9))[_0x008c('0x41')](handleError(_0x4e0d34,null));};exports[_0x008c('0x25')]=function(_0x3245b2,_0x13ac75){if(_0x3245b2['body']['id']){delete _0x3245b2[_0x008c('0x47')]['id'];}return db[_0x008c('0x3c')]['find']({'where':{'id':_0x3245b2[_0x008c('0x43')]['id']}})['then'](handleEntityNotFound(_0x13ac75,null))[_0x008c('0x40')](saveUpdates(_0x3245b2[_0x008c('0x47')],null))[_0x008c('0x40')](respondWithResult(_0x13ac75,null))[_0x008c('0x41')](handleError(_0x13ac75,null));};exports[_0x008c('0x48')]=function(_0x1dd517,_0x2d2bf9){return db[_0x008c('0x3c')][_0x008c('0x45')]({'where':{'id':_0x1dd517[_0x008c('0x43')]['id']}})[_0x008c('0x40')](handleEntityNotFound(_0x2d2bf9,null))['then'](removeEntity(_0x2d2bf9,null))['catch'](handleError(_0x2d2bf9,null));};exports['describe']=function(_0x4f2dcf,_0x16eb4f){return db[_0x008c('0x3c')][_0x008c('0x49')]()[_0x008c('0x40')](respondWithResult(_0x16eb4f,null))['catch'](handleError(_0x16eb4f,null));};
\ No newline at end of file
+var _0x9b5c=['create','body','find','describe','eml-format','rimraf','zip-dir','moment','bluebird','path','ejs','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','type','key','model','query','keys','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','filters','filter','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','merge'];(function(_0x46afff,_0x45011e){var _0x1b376a=function(_0x5ddf19){while(--_0x5ddf19){_0x46afff['push'](_0x46afff['shift']());}};_0x1b376a(++_0x45011e);}(_0x9b5c,0x1c6));var _0xc9b5=function(_0x50eee2,_0x2d4948){_0x50eee2=_0x50eee2-0x0;var _0x134502=_0x9b5c[_0x50eee2];return _0x134502;};'use strict';var emlformat=require(_0xc9b5('0x0'));var rimraf=require(_0xc9b5('0x1'));var zipdir=require(_0xc9b5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc9b5('0x3'));var BPromise=require(_0xc9b5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc9b5('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc9b5('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc9b5('0x7'));var crypto=require(_0xc9b5('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xc9b5('0x9'));var toCsv=require(_0xc9b5('0xa'));var querystring=require(_0xc9b5('0xb'));var Papa=require(_0xc9b5('0xc'));var Redis=require(_0xc9b5('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc9b5('0xe'));var as=require(_0xc9b5('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc9b5('0x10'))('api');var utils=require(_0xc9b5('0x11'));var config=require(_0xc9b5('0x12'));var licenseUtil=require(_0xc9b5('0x13'));var db=require(_0xc9b5('0x14'))['db'];function respondWithStatusCode(_0x5da7f5,_0x480339){_0x480339=_0x480339||0xcc;return function(_0x3606d2){if(_0x3606d2){return _0x5da7f5['sendStatus'](_0x480339);}return _0x5da7f5['status'](_0x480339)[_0xc9b5('0x15')]();};}function respondWithResult(_0x50d845,_0x437f3d){_0x437f3d=_0x437f3d||0xc8;return function(_0x539857){if(_0x539857){return _0x50d845[_0xc9b5('0x16')](_0x437f3d)[_0xc9b5('0x17')](_0x539857);}};}function respondWithFilteredResult(_0x5b1c99,_0x20273b){return function(_0x1ce4d3){if(_0x1ce4d3){var _0x1d1ea3=typeof _0x20273b[_0xc9b5('0x18')]===_0xc9b5('0x19')&&typeof _0x20273b[_0xc9b5('0x1a')]===_0xc9b5('0x19');var _0x3c3573=_0x1ce4d3['count'];var _0xf4d479=_0x1d1ea3?0x0:_0x20273b['offset'];var _0x3df775=_0x1d1ea3?_0x1ce4d3[_0xc9b5('0x1b')]:_0x20273b[_0xc9b5('0x18')]+_0x20273b[_0xc9b5('0x1a')];var _0x2ebb50;if(_0x3df775>=_0x3c3573){_0x3df775=_0x3c3573;_0x2ebb50=0xc8;}else{_0x2ebb50=0xce;}_0x5b1c99['status'](_0x2ebb50);return _0x5b1c99[_0xc9b5('0x1c')](_0xc9b5('0x1d'),_0xf4d479+'-'+_0x3df775+'/'+_0x3c3573)['json'](_0x1ce4d3);}return null;};}function patchUpdates(_0x18bd31){return function(_0x2da720){try{jsonpatch[_0xc9b5('0x1e')](_0x2da720,_0x18bd31,!![]);}catch(_0x33b5c8){return BPromise[_0xc9b5('0x1f')](_0x33b5c8);}return _0x2da720[_0xc9b5('0x20')]();};}function saveUpdates(_0x154632,_0x12b360){return function(_0x43d6fe){if(_0x43d6fe){return _0x43d6fe[_0xc9b5('0x21')](_0x154632)[_0xc9b5('0x22')](function(_0x103059){return _0x103059;});}return null;};}function removeEntity(_0x21f99f,_0x5c8dd6){return function(_0x39b097){if(_0x39b097){return _0x39b097[_0xc9b5('0x23')]()[_0xc9b5('0x22')](function(){_0x21f99f['status'](0xcc)[_0xc9b5('0x15')]();});}};}function handleEntityNotFound(_0x4c97f1,_0x59290e){return function(_0x3e776a){if(!_0x3e776a){_0x4c97f1[_0xc9b5('0x24')](0x194);}return _0x3e776a;};}function handleError(_0x4a0ad9,_0x3da50c){_0x3da50c=_0x3da50c||0x1f4;return function(_0x2f50fb){logger[_0xc9b5('0x25')](_0x2f50fb[_0xc9b5('0x26')]);if(_0x2f50fb[_0xc9b5('0x27')]){delete _0x2f50fb[_0xc9b5('0x27')];}_0x4a0ad9[_0xc9b5('0x16')](_0x3da50c)[_0xc9b5('0x28')](_0x2f50fb);};}exports[_0xc9b5('0x29')]=function(_0x1f1536,_0x5b6325){var _0x266306={},_0x4398e2={},_0x174b94={'count':0x0,'rows':[]};var _0x16691f=_[_0xc9b5('0x2a')](db[_0xc9b5('0x2b')][_0xc9b5('0x2c')],function(_0x37afc8){return{'name':_0x37afc8['fieldName'],'type':_0x37afc8[_0xc9b5('0x2d')][_0xc9b5('0x2e')]};});_0x4398e2[_0xc9b5('0x2f')]=_[_0xc9b5('0x2a')](_0x16691f,_0xc9b5('0x27'));_0x4398e2[_0xc9b5('0x30')]=_[_0xc9b5('0x31')](_0x1f1536[_0xc9b5('0x30')]);_0x4398e2['filters']=_[_0xc9b5('0x32')](_0x4398e2[_0xc9b5('0x2f')],_0x4398e2['query']);_0x266306['attributes']=_[_0xc9b5('0x32')](_0x4398e2[_0xc9b5('0x2f')],qs[_0xc9b5('0x33')](_0x1f1536[_0xc9b5('0x30')][_0xc9b5('0x33')]));_0x266306['attributes']=_0x266306['attributes'][_0xc9b5('0x34')]?_0x266306[_0xc9b5('0x35')]:_0x4398e2['model'];if(!_0x1f1536[_0xc9b5('0x30')][_0xc9b5('0x36')](_0xc9b5('0x37'))){_0x266306['limit']=qs[_0xc9b5('0x1a')](_0x1f1536[_0xc9b5('0x30')][_0xc9b5('0x1a')]);_0x266306['offset']=qs[_0xc9b5('0x18')](_0x1f1536[_0xc9b5('0x30')][_0xc9b5('0x18')]);}_0x266306[_0xc9b5('0x38')]=qs['sort'](_0x1f1536[_0xc9b5('0x30')][_0xc9b5('0x39')]);_0x266306['where']=qs[_0xc9b5('0x3a')](_['pick'](_0x1f1536[_0xc9b5('0x30')],_0x4398e2[_0xc9b5('0x3a')]),_0x16691f);if(_0x1f1536['query'][_0xc9b5('0x3b')]){_0x266306[_0xc9b5('0x3c')]=_['merge'](_0x266306[_0xc9b5('0x3c')],{'$or':_[_0xc9b5('0x2a')](_0x16691f,function(_0x1731fc){if(_0x1731fc[_0xc9b5('0x2d')]!==_0xc9b5('0x3d')){var _0x5b5d52={};_0x5b5d52[_0x1731fc[_0xc9b5('0x27')]]={'$like':'%'+_0x1f1536['query'][_0xc9b5('0x3b')]+'%'};return _0x5b5d52;}})});}_0x266306=_['merge']({},_0x266306,_0x1f1536[_0xc9b5('0x3e')]);var _0x26feb4={'where':_0x266306[_0xc9b5('0x3c')]};return db[_0xc9b5('0x2b')][_0xc9b5('0x1b')](_0x26feb4)[_0xc9b5('0x22')](function(_0x4605a8){_0x174b94['count']=_0x4605a8;if(_0x1f1536[_0xc9b5('0x30')][_0xc9b5('0x3f')]){_0x266306['include']=[{'all':!![]}];}return db['MailTransferReport'][_0xc9b5('0x40')](_0x266306);})[_0xc9b5('0x22')](function(_0x12b9c2){_0x174b94[_0xc9b5('0x41')]=_0x12b9c2;return _0x174b94;})[_0xc9b5('0x22')](respondWithFilteredResult(_0x5b6325,_0x266306))[_0xc9b5('0x42')](handleError(_0x5b6325,null));};exports[_0xc9b5('0x43')]=function(_0x37061d,_0x5ac2fb){var _0x11fcda={'raw':!![],'where':{'id':_0x37061d[_0xc9b5('0x44')]['id']}},_0x5babed={};_0x5babed[_0xc9b5('0x2f')]=_[_0xc9b5('0x31')](db['MailTransferReport'][_0xc9b5('0x2c')]);_0x5babed[_0xc9b5('0x30')]=_[_0xc9b5('0x31')](_0x37061d[_0xc9b5('0x30')]);_0x5babed['filters']=_[_0xc9b5('0x32')](_0x5babed[_0xc9b5('0x2f')],_0x5babed['query']);_0x11fcda[_0xc9b5('0x35')]=_[_0xc9b5('0x32')](_0x5babed[_0xc9b5('0x2f')],qs[_0xc9b5('0x33')](_0x37061d[_0xc9b5('0x30')][_0xc9b5('0x33')]));_0x11fcda[_0xc9b5('0x35')]=_0x11fcda[_0xc9b5('0x35')]['length']?_0x11fcda['attributes']:_0x5babed[_0xc9b5('0x2f')];if(_0x37061d[_0xc9b5('0x30')]['includeAll']){_0x11fcda[_0xc9b5('0x45')]=[{'all':!![]}];}_0x11fcda=_[_0xc9b5('0x46')]({},_0x11fcda,_0x37061d[_0xc9b5('0x3e')]);return db[_0xc9b5('0x2b')]['find'](_0x11fcda)[_0xc9b5('0x22')](handleEntityNotFound(_0x5ac2fb,null))[_0xc9b5('0x22')](respondWithResult(_0x5ac2fb,null))['catch'](handleError(_0x5ac2fb,null));};exports['create']=function(_0x5b30ab,_0x38de65){return db['MailTransferReport'][_0xc9b5('0x47')](_0x5b30ab[_0xc9b5('0x48')],{})[_0xc9b5('0x22')](respondWithResult(_0x38de65,0xc9))[_0xc9b5('0x42')](handleError(_0x38de65,null));};exports[_0xc9b5('0x21')]=function(_0x392839,_0xefdc83){if(_0x392839[_0xc9b5('0x48')]['id']){delete _0x392839[_0xc9b5('0x48')]['id'];}return db[_0xc9b5('0x2b')]['find']({'where':{'id':_0x392839[_0xc9b5('0x44')]['id']}})[_0xc9b5('0x22')](handleEntityNotFound(_0xefdc83,null))['then'](saveUpdates(_0x392839[_0xc9b5('0x48')],null))[_0xc9b5('0x22')](respondWithResult(_0xefdc83,null))[_0xc9b5('0x42')](handleError(_0xefdc83,null));};exports[_0xc9b5('0x23')]=function(_0x85df63,_0x22e1af){return db['MailTransferReport'][_0xc9b5('0x49')]({'where':{'id':_0x85df63['params']['id']}})[_0xc9b5('0x22')](handleEntityNotFound(_0x22e1af,null))['then'](removeEntity(_0x22e1af,null))[_0xc9b5('0x42')](handleError(_0x22e1af,null));};exports[_0xc9b5('0x4a')]=function(_0x1e6319,_0x48ed37){return db[_0xc9b5('0x2b')][_0xc9b5('0x4a')]()[_0xc9b5('0x22')](respondWithResult(_0x48ed37,null))[_0xc9b5('0x42')](handleError(_0x48ed37,null));};
\ No newline at end of file
index 74e469c..4ab091e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858e=['exports','define','report_mail_transfer','uniqueid','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes'];(function(_0x534ae9,_0x5735c1){var _0x2dc1e7=function(_0x58048a){while(--_0x58048a){_0x534ae9['push'](_0x534ae9['shift']());}};_0x2dc1e7(++_0x5735c1);}(_0x858e,0x178));var _0xe858=function(_0x24e91d,_0x5d6ffe){_0x24e91d=_0x24e91d-0x0;var _0x324d8d=_0x858e[_0x24e91d];return _0x324d8d;};'use strict';var _=require(_0xe858('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe858('0x1'));var moment=require(_0xe858('0x2'));var BPromise=require(_0xe858('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe858('0x4'));var rimraf=require(_0xe858('0x5'));var config=require(_0xe858('0x6'));var attributes=require(_0xe858('0x7'));module[_0xe858('0x8')]=function(_0x556914,_0x3c507f){return _0x556914[_0xe858('0x9')]('MailTransferReport',attributes,{'tableName':_0xe858('0xa'),'paranoid':![],'indexes':[{'name':_0xe858('0xb'),'fields':[_0xe858('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x99c9=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer'];(function(_0x476f2f,_0x30dc16){var _0x213a4d=function(_0x4b1219){while(--_0x4b1219){_0x476f2f['push'](_0x476f2f['shift']());}};_0x213a4d(++_0x30dc16);}(_0x99c9,0x13c));var _0x999c=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x99c9[_0x27af45];return _0x18df21;};'use strict';var _=require(_0x999c('0x0'));var util=require(_0x999c('0x1'));var logger=require(_0x999c('0x2'))(_0x999c('0x3'));var moment=require(_0x999c('0x4'));var BPromise=require(_0x999c('0x5'));var rp=require(_0x999c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x999c('0x7'));var config=require(_0x999c('0x8'));var attributes=require(_0x999c('0x9'));module[_0x999c('0xa')]=function(_0x2bdd73,_0x14df32){return _0x2bdd73[_0x999c('0xb')](_0x999c('0xc'),attributes,{'tableName':_0x999c('0xd'),'paranoid':![],'indexes':[{'name':_0x999c('0xe'),'fields':[_0x999c('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b9b3e9f..964e902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56c1=['code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x45c8c0,_0x3a2f94){var _0x4b95cb=function(_0x3c0909){while(--_0x3c0909){_0x45c8c0['push'](_0x45c8c0['shift']());}};_0x4b95cb(++_0x3a2f94);}(_0x56c1,0x67));var _0x156c=function(_0x5b5659,_0x232015){_0x5b5659=_0x5b5659-0x0;var _0x5727e9=_0x56c1[_0x5b5659];return _0x5727e9;};'use strict';var _=require(_0x156c('0x0'));var util=require(_0x156c('0x1'));var moment=require(_0x156c('0x2'));var BPromise=require(_0x156c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x156c('0x4'));var db=require(_0x156c('0x5'))['db'];var utils=require(_0x156c('0x6'));var logger=require(_0x156c('0x7'))(_0x156c('0x8'));var config=require(_0x156c('0x9'));var jayson=require(_0x156c('0xa'));var client=jayson[_0x156c('0xb')][_0x156c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1d8b6b,_0x44e2f5,_0x29533e){return new BPromise(function(_0x23fdb0,_0x5edd71){return client[_0x156c('0xd')](_0x1d8b6b,_0x29533e)[_0x156c('0xe')](function(_0x425db3){logger[_0x156c('0xf')](_0x156c('0x10'),_0x44e2f5,_0x156c('0x11'));logger[_0x156c('0x12')](_0x156c('0x13'),_0x44e2f5,_0x156c('0x11'),JSON[_0x156c('0x14')](_0x425db3));if(_0x425db3['error']){if(_0x425db3[_0x156c('0x15')][_0x156c('0x16')]===0x1f4){logger[_0x156c('0x15')](_0x156c('0x10'),_0x44e2f5,_0x425db3[_0x156c('0x15')]['message']);return _0x5edd71(_0x425db3[_0x156c('0x15')][_0x156c('0x17')]);}logger[_0x156c('0x15')](_0x156c('0x10'),_0x44e2f5,_0x425db3[_0x156c('0x15')]['message']);return _0x23fdb0(_0x425db3['error']['message']);}else{logger[_0x156c('0xf')](_0x156c('0x10'),_0x44e2f5,_0x156c('0x11'));_0x23fdb0(_0x425db3[_0x156c('0x18')][_0x156c('0x17')]);}})['catch'](function(_0x439269){logger[_0x156c('0x15')](_0x156c('0x10'),_0x44e2f5,_0x439269);_0x5edd71(_0x439269);});});}
\ No newline at end of file
+var _0x1b81=['stringify','error','MailTransferReport,\x20%s,\x20%s','message','result','catch','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0x1b81,0x7d));var _0x11b8=function(_0x54bc50,_0x17606c){_0x54bc50=_0x54bc50-0x0;var _0x37f8b3=_0x1b81[_0x54bc50];return _0x37f8b3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x11b8('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x11b8('0x1'))['db'];var utils=require(_0x11b8('0x2'));var logger=require('../../config/logger')(_0x11b8('0x3'));var config=require(_0x11b8('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x11b8('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46c2a4,_0x5283c5,_0x357188){return new BPromise(function(_0x570b37,_0x109cef){return client[_0x11b8('0x6')](_0x46c2a4,_0x357188)[_0x11b8('0x7')](function(_0x393718){logger[_0x11b8('0x8')]('MailTransferReport,\x20%s,\x20%s',_0x5283c5,_0x11b8('0x9'));logger['debug'](_0x11b8('0xa'),_0x5283c5,_0x11b8('0x9'),JSON[_0x11b8('0xb')](_0x393718));if(_0x393718['error']){if(_0x393718[_0x11b8('0xc')]['code']===0x1f4){logger['error'](_0x11b8('0xd'),_0x5283c5,_0x393718[_0x11b8('0xc')][_0x11b8('0xe')]);return _0x109cef(_0x393718[_0x11b8('0xc')][_0x11b8('0xe')]);}logger[_0x11b8('0xc')]('MailTransferReport,\x20%s,\x20%s',_0x5283c5,_0x393718[_0x11b8('0xc')][_0x11b8('0xe')]);return _0x570b37(_0x393718[_0x11b8('0xc')][_0x11b8('0xe')]);}else{logger['info'](_0x11b8('0xd'),_0x5283c5,_0x11b8('0x9'));_0x570b37(_0x393718[_0x11b8('0xf')][_0x11b8('0xe')]);}})[_0x11b8('0x10')](function(_0x338f10){logger['error'](_0x11b8('0xd'),_0x5283c5,_0x338f10);_0x109cef(_0x338f10);});});}
\ No newline at end of file
index b70d4db..32ab1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1592=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x2699b1,_0x1ce904){var _0x3c1b9a=function(_0xe6ffec){while(--_0xe6ffec){_0x2699b1['push'](_0x2699b1['shift']());}};_0x3c1b9a(++_0x1ce904);}(_0x1592,0x1b4));var _0x2159=function(_0x46a4f3,_0x1fa1e1){_0x46a4f3=_0x46a4f3-0x0;var _0x496962=_0x1592[_0x46a4f3];return _0x496962;};'use strict';var multer=require(_0x2159('0x0'));var util=require(_0x2159('0x1'));var path=require('path');var timeout=require(_0x2159('0x2'));var express=require(_0x2159('0x3'));var router=express[_0x2159('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2159('0x5'));var interaction=require(_0x2159('0x6'));var config=require(_0x2159('0x7'));var controller=require(_0x2159('0x8'));router[_0x2159('0x9')]('/',auth[_0x2159('0xa')](),controller[_0x2159('0xb')]);router[_0x2159('0x9')](_0x2159('0xc'),auth[_0x2159('0xa')](),controller['describe']);router[_0x2159('0x9')](_0x2159('0xd'),auth['isAuthenticated'](),controller[_0x2159('0xe')]);router[_0x2159('0xf')]('/',auth['isAuthenticated'](),controller[_0x2159('0x10')]);router[_0x2159('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x2159('0x12')]);router[_0x2159('0x13')](_0x2159('0xd'),auth['isAuthenticated'](),controller[_0x2159('0x14')]);module[_0x2159('0x15')]=router;
\ No newline at end of file
+var _0x954b=['isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','index','/describe'];(function(_0x14698f,_0x568cbf){var _0x32a67c=function(_0x49c359){while(--_0x49c359){_0x14698f['push'](_0x14698f['shift']());}};_0x32a67c(++_0x568cbf);}(_0x954b,0x18b));var _0xb954=function(_0x2e819c,_0x3f99a5){_0x2e819c=_0x2e819c-0x0;var _0x24e271=_0x954b[_0x2e819c];return _0x24e271;};'use strict';var multer=require(_0xb954('0x0'));var util=require('util');var path=require(_0xb954('0x1'));var timeout=require(_0xb954('0x2'));var express=require(_0xb954('0x3'));var router=express[_0xb954('0x4')]();var fs_extra=require(_0xb954('0x5'));var auth=require(_0xb954('0x6'));var interaction=require(_0xb954('0x7'));var config=require(_0xb954('0x8'));var controller=require(_0xb954('0x9'));router[_0xb954('0xa')]('/',auth['isAuthenticated'](),controller[_0xb954('0xb')]);router[_0xb954('0xa')](_0xb954('0xc'),auth[_0xb954('0xd')](),controller[_0xb954('0xe')]);router[_0xb954('0xa')](_0xb954('0xf'),auth['isAuthenticated'](),controller[_0xb954('0x10')]);router[_0xb954('0x11')]('/',auth[_0xb954('0xd')](),controller[_0xb954('0x12')]);router[_0xb954('0x13')](_0xb954('0xf'),auth[_0xb954('0xd')](),controller[_0xb954('0x14')]);router[_0xb954('0x15')](_0xb954('0xf'),auth[_0xb954('0xd')](),controller[_0xb954('0x16')]);module[_0xb954('0x17')]=router;
\ No newline at end of file
index 95fa279..1246047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','diff','exitAt','setDataValue','duration'];(function(_0x2b9ac8,_0xf820cb){var _0x3ceea9=function(_0x407d34){while(--_0x407d34){_0x2b9ac8['push'](_0x2b9ac8['shift']());}};_0x3ceea9(++_0xf820cb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x0a9e('0x3')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0x0a9e('0x4'),'comment':_0x0a9e('0x5')},'duration':{'type':Sequelize[_0x0a9e('0x6')]},'enterAt':{'type':Sequelize[_0x0a9e('0x7')]},'exitAt':{'type':Sequelize[_0x0a9e('0x7')],'set':function(_0x57b080){var _0x219af0=moment(_0x57b080);var _0x441e3a=moment(this[_0x0a9e('0x8')]('enterAt'));var _0x503809=_0x219af0[_0x0a9e('0x9')](_0x441e3a,'seconds');this['setDataValue'](_0x0a9e('0xa'),_0x57b080);this[_0x0a9e('0xb')](_0x0a9e('0xc'),_0x503809||null);}},'data1':{'type':Sequelize[_0x0a9e('0x3')],'comment':_0x0a9e('0xd')},'data2':{'type':Sequelize[_0x0a9e('0x3')],'comment':'talk:[start]'},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':_0x0a9e('0xe')},'data5':{'type':Sequelize[_0x0a9e('0x3')],'comment':_0x0a9e('0xf')},'role':{'type':Sequelize[_0x0a9e('0x3')]},'internal':{'type':Sequelize[_0x0a9e('0x6')]},'uniqueid':{'type':Sequelize[_0x0a9e('0x3')]}};
\ No newline at end of file
+var _0x12cc=['STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','getDataValue','diff','seconds','setDataValue','duration','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','moment','exports'];(function(_0x2dfa62,_0x276328){var _0x50acf4=function(_0xa174df){while(--_0xa174df){_0x2dfa62['push'](_0x2dfa62['shift']());}};_0x50acf4(++_0x276328);}(_0x12cc,0xc2));var _0xc12c=function(_0x2a59ab,_0x50b32e){_0x2a59ab=_0x2a59ab-0x0;var _0x36781d=_0x12cc[_0x2a59ab];return _0x36781d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc12c('0x0'));module[_0xc12c('0x1')]={'channel':{'type':Sequelize[_0xc12c('0x2')]},'membername':{'type':Sequelize[_0xc12c('0x2')]},'interface':{'type':Sequelize[_0xc12c('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xc12c('0x3')},'duration':{'type':Sequelize[_0xc12c('0x4')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x4990f4){var _0x152fcd=moment(_0x4990f4);var _0x1c0435=moment(this[_0xc12c('0x5')]('enterAt'));var _0x488940=_0x152fcd[_0xc12c('0x6')](_0x1c0435,_0xc12c('0x7'));this[_0xc12c('0x8')]('exitAt',_0x4990f4);this[_0xc12c('0x8')](_0xc12c('0x9'),_0x488940||null);}},'data1':{'type':Sequelize[_0xc12c('0x2')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xc12c('0x2')],'comment':_0xc12c('0xa')},'data3':{'type':Sequelize[_0xc12c('0x2')],'comment':_0xc12c('0xb')},'data4':{'type':Sequelize[_0xc12c('0x2')],'comment':_0xc12c('0xc')},'data5':{'type':Sequelize['STRING'],'comment':_0xc12c('0xd')},'role':{'type':Sequelize[_0xc12c('0x2')]},'internal':{'type':Sequelize[_0xc12c('0x4')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 07f6b61..fc1eff6 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(_0x41c6ce,_0x3c1d90){var _0x587af5=function(_0x26e5a6){while(--_0x26e5a6){_0x41c6ce['push'](_0x41c6ce['shift']());}};_0x587af5(++_0x3c1d90);}(_0x3e74,0x175));var _0x43e7=function(_0x1adc8d,_0xb9898e){_0x1adc8d=_0x1adc8d-0x0;var _0x50b8fb=_0x3e74[_0x1adc8d];return _0x50b8fb;};'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 _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(_0x39dd7f,_0x4caf46){var _0x1f6fd5=function(_0x44c96d){while(--_0x44c96d){_0x39dd7f['push'](_0x39dd7f['shift']());}};_0x1f6fd5(++_0x4caf46);}(_0x3e74,0x175));var _0x43e7=function(_0x4294f4,_0x27e684){_0x4294f4=_0x4294f4-0x0;var _0x4469f3=_0x3e74[_0x4294f4];return _0x4469f3;};'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
index 2d45227..2c81762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f1e=['request-promise','path','rimraf','./memberReport.attributes','exports','define','MemberReport','interface','lodash','util','api'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0x9f1e,0xa2));var _0xe9f1=function(_0x53946d,_0x31e471){_0x53946d=_0x53946d-0x0;var _0x32cf85=_0x9f1e[_0x53946d];return _0x32cf85;};'use strict';var _=require(_0xe9f1('0x0'));var util=require(_0xe9f1('0x1'));var logger=require('../../config/logger')(_0xe9f1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe9f1('0x3'));var fs=require('fs');var path=require(_0xe9f1('0x4'));var rimraf=require(_0xe9f1('0x5'));var config=require('../../config/environment');var attributes=require(_0xe9f1('0x6'));module[_0xe9f1('0x7')]=function(_0x4481f4,_0xc43b66){return _0x4481f4[_0xe9f1('0x8')](_0xe9f1('0x9'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':'membername_interface','fields':['membername',_0xe9f1('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x139e=['define','MemberReport','report_member','membername_interface','membername','interface','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./memberReport.attributes','exports'];(function(_0x421be,_0x4f4a03){var _0x3d0069=function(_0x3e9ccd){while(--_0x3e9ccd){_0x421be['push'](_0x421be['shift']());}};_0x3d0069(++_0x4f4a03);}(_0x139e,0xe7));var _0xe139=function(_0x1452b0,_0x1b8a1a){_0x1452b0=_0x1452b0-0x0;var _0x12af14=_0x139e[_0x1452b0];return _0x12af14;};'use strict';var _=require(_0xe139('0x0'));var util=require('util');var logger=require(_0xe139('0x1'))(_0xe139('0x2'));var moment=require('moment');var BPromise=require(_0xe139('0x3'));var rp=require(_0xe139('0x4'));var fs=require('fs');var path=require(_0xe139('0x5'));var rimraf=require(_0xe139('0x6'));var config=require('../../config/environment');var attributes=require(_0xe139('0x7'));module[_0xe139('0x8')]=function(_0x208947,_0x4edf2c){return _0x208947[_0xe139('0x9')](_0xe139('0xa'),attributes,{'tableName':_0xe139('0xb'),'paranoid':![],'indexes':[{'name':_0xe139('0xc'),'fields':[_0xe139('0xd'),_0xe139('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index db9a1ff..fa32b06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdced=['model','catch','CreateMemberReport','body','UpdateMemberReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','then','info','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','message','MemberReport,\x20%s,\x20%s','request\x20sent','GetMemberReport','MemberReport','findAll','options','raw','attributes','limit','include','map'];(function(_0x4c516c,_0x12fbb2){var _0x130aa5=function(_0x1ab5d2){while(--_0x1ab5d2){_0x4c516c['push'](_0x4c516c['shift']());}};_0x130aa5(++_0x12fbb2);}(_0xdced,0xcb));var _0xddce=function(_0x22e6b4,_0x174b0d){_0x22e6b4=_0x22e6b4-0x0;var _0x48aaa5=_0xdced[_0x22e6b4];return _0x48aaa5;};'use strict';var _=require('lodash');var util=require(_0xddce('0x0'));var moment=require(_0xddce('0x1'));var BPromise=require(_0xddce('0x2'));var rs=require(_0xddce('0x3'));var fs=require('fs');var Redis=require(_0xddce('0x4'));var db=require(_0xddce('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xddce('0x6'))('rpc');var config=require(_0xddce('0x7'));var jayson=require(_0xddce('0x8'));var client=jayson['client'][_0xddce('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57e11c,_0x24970d,_0x46b464){return new BPromise(function(_0x272a2c,_0x105bf9){return client['request'](_0x57e11c,_0x46b464)[_0xddce('0xa')](function(_0x392605){logger[_0xddce('0xb')]('MemberReport,\x20%s,\x20%s',_0x24970d,'request\x20sent');logger[_0xddce('0xc')](_0xddce('0xd'),_0x24970d,'request\x20sent',JSON[_0xddce('0xe')](_0x392605));if(_0x392605[_0xddce('0xf')]){if(_0x392605[_0xddce('0xf')]['code']===0x1f4){logger[_0xddce('0xf')]('MemberReport,\x20%s,\x20%s',_0x24970d,_0x392605[_0xddce('0xf')][_0xddce('0x10')]);return _0x105bf9(_0x392605[_0xddce('0xf')][_0xddce('0x10')]);}logger[_0xddce('0xf')](_0xddce('0x11'),_0x24970d,_0x392605[_0xddce('0xf')]['message']);return _0x272a2c(_0x392605['error'][_0xddce('0x10')]);}else{logger[_0xddce('0xb')]('MemberReport,\x20%s,\x20%s',_0x24970d,_0xddce('0x12'));_0x272a2c(_0x392605['result'][_0xddce('0x10')]);}})['catch'](function(_0x30205e){logger[_0xddce('0xf')]('MemberReport,\x20%s,\x20%s',_0x24970d,_0x30205e);_0x105bf9(_0x30205e);});});}exports[_0xddce('0x13')]=function(_0x3934a5){var _0x3ffac2=this;return new Promise(function(_0xde10a5,_0x4a35c7){return db[_0xddce('0x14')][_0xddce('0x15')]({'raw':_0x3934a5[_0xddce('0x16')]?_0x3934a5['options'][_0xddce('0x17')]===undefined?!![]:![]:!![],'where':_0x3934a5['options']?_0x3934a5[_0xddce('0x16')]['where']||null:null,'attributes':_0x3934a5[_0xddce('0x16')]?_0x3934a5[_0xddce('0x16')][_0xddce('0x18')]||null:null,'limit':_0x3934a5['options']?_0x3934a5[_0xddce('0x16')][_0xddce('0x19')]||null:null,'include':_0x3934a5[_0xddce('0x16')]?_0x3934a5[_0xddce('0x16')][_0xddce('0x1a')]?_[_0xddce('0x1b')](_0x3934a5[_0xddce('0x16')][_0xddce('0x1a')],function(_0x5caf7f){return{'model':db[_0x5caf7f[_0xddce('0x1c')]],'as':_0x5caf7f['as'],'attributes':_0x5caf7f[_0xddce('0x18')],'include':_0x5caf7f[_0xddce('0x1a')]?_[_0xddce('0x1b')](_0x5caf7f['include'],function(_0x23fe7b){return{'model':db[_0x23fe7b[_0xddce('0x1c')]],'as':_0x23fe7b['as'],'attributes':_0x23fe7b['attributes'],'include':_0x23fe7b[_0xddce('0x1a')]?_[_0xddce('0x1b')](_0x23fe7b[_0xddce('0x1a')],function(_0x1b2e2c){return{'model':db[_0x1b2e2c[_0xddce('0x1c')]],'as':_0x1b2e2c['as'],'attributes':_0x1b2e2c[_0xddce('0x18')]};}):[]};}):[]};}):[]:[]})[_0xddce('0xa')](function(_0x573528){logger['info']('GetMemberReport',_0x3934a5);logger[_0xddce('0xc')](_0xddce('0x13'),_0x3934a5,JSON[_0xddce('0xe')](_0x573528));_0xde10a5(_0x573528);})[_0xddce('0x1d')](function(_0x2e1353){logger[_0xddce('0xf')](_0xddce('0x13'),_0x2e1353['message'],_0x3934a5);_0x4a35c7(_0x3ffac2[_0xddce('0xf')](0x1f4,_0x2e1353[_0xddce('0x10')]));});});};exports[_0xddce('0x1e')]=function(_0x561ba7){var _0x5bee5a=this;return new Promise(function(_0x198f23,_0x2df087){return db[_0xddce('0x14')]['create'](_0x561ba7[_0xddce('0x1f')],{'raw':_0x561ba7['options']?_0x561ba7[_0xddce('0x16')][_0xddce('0x17')]===undefined?!![]:![]:!![]})[_0xddce('0xa')](function(_0x41ef00){logger[_0xddce('0xb')]('CreateMemberReport',_0x561ba7);logger[_0xddce('0xc')]('CreateMemberReport',_0x561ba7,JSON['stringify'](_0x41ef00));_0x198f23(_0x41ef00);})[_0xddce('0x1d')](function(_0x46d2af){logger[_0xddce('0xf')](_0xddce('0x1e'),_0x46d2af[_0xddce('0x10')],_0x561ba7);_0x2df087(_0x5bee5a[_0xddce('0xf')](0x1f4,_0x46d2af['message']));});});};exports[_0xddce('0x20')]=function(_0x3ab413){var _0x555db7=this;return new Promise(function(_0x164629,_0x247d31){return db[_0xddce('0x14')]['update'](_0x3ab413[_0xddce('0x1f')],{'raw':_0x3ab413[_0xddce('0x16')]?_0x3ab413[_0xddce('0x16')][_0xddce('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ab413['options']?_0x3ab413[_0xddce('0x16')]['where']||null:null,'attributes':_0x3ab413[_0xddce('0x16')]?_0x3ab413[_0xddce('0x16')][_0xddce('0x18')]||null:null,'limit':_0x3ab413['options']?_0x3ab413[_0xddce('0x16')]['limit']||null:null})['then'](function(_0x2e32fc){logger['info']('UpdateMemberReport',_0x3ab413);logger['debug'](_0xddce('0x20'),_0x3ab413,JSON['stringify'](_0x2e32fc));_0x164629(_0x2e32fc);})[_0xddce('0x1d')](function(_0x5c7431){logger['error'](_0xddce('0x20'),_0x5c7431[_0xddce('0x10')],_0x3ab413);_0x247d31(_0x555db7['error'](0x1f4,_0x5c7431[_0xddce('0x10')]));});});};
\ No newline at end of file
+var _0x5d17=['include','model','then','CreateMemberReport','MemberReport','create','body','update','attributes','UpdateMemberReport','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','request\x20sent','result','catch','GetMemberReport','findAll','options','raw','where','map'];(function(_0x4a665e,_0x4a301e){var _0x145106=function(_0x410d1e){while(--_0x410d1e){_0x4a665e['push'](_0x4a665e['shift']());}};_0x145106(++_0x4a301e);}(_0x5d17,0x114));var _0x75d1=function(_0x5d815b,_0x4c422d){_0x5d815b=_0x5d815b-0x0;var _0x5440a9=_0x5d17[_0x5d815b];return _0x5440a9;};'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')]('MemberReport,\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')]('MemberReport,\x20%s,\x20%s',_0x5c957a,_0x4cf632['error']['message']);return _0x3a9d5e(_0x4cf632[_0x75d1('0xf')][_0x75d1('0x12')]);}else{logger[_0x75d1('0xb')]('MemberReport,\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);});});}exports[_0x75d1('0x16')]=function(_0x1bc5de){var _0x3d0717=this;return new Promise(function(_0x2c2a6d,_0x5761db){return db['MemberReport'][_0x75d1('0x17')]({'raw':_0x1bc5de[_0x75d1('0x18')]?_0x1bc5de['options'][_0x75d1('0x19')]===undefined?!![]:![]:!![],'where':_0x1bc5de[_0x75d1('0x18')]?_0x1bc5de[_0x75d1('0x18')][_0x75d1('0x1a')]||null:null,'attributes':_0x1bc5de[_0x75d1('0x18')]?_0x1bc5de[_0x75d1('0x18')]['attributes']||null:null,'limit':_0x1bc5de[_0x75d1('0x18')]?_0x1bc5de[_0x75d1('0x18')]['limit']||null:null,'include':_0x1bc5de[_0x75d1('0x18')]?_0x1bc5de[_0x75d1('0x18')]['include']?_[_0x75d1('0x1b')](_0x1bc5de['options'][_0x75d1('0x1c')],function(_0xc256af){return{'model':db[_0xc256af[_0x75d1('0x1d')]],'as':_0xc256af['as'],'attributes':_0xc256af['attributes'],'include':_0xc256af['include']?_[_0x75d1('0x1b')](_0xc256af[_0x75d1('0x1c')],function(_0x315ce5){return{'model':db[_0x315ce5[_0x75d1('0x1d')]],'as':_0x315ce5['as'],'attributes':_0x315ce5['attributes'],'include':_0x315ce5[_0x75d1('0x1c')]?_[_0x75d1('0x1b')](_0x315ce5[_0x75d1('0x1c')],function(_0x51138e){return{'model':db[_0x51138e['model']],'as':_0x51138e['as'],'attributes':_0x51138e['attributes']};}):[]};}):[]};}):[]:[]})[_0x75d1('0x1e')](function(_0x30d9f3){logger[_0x75d1('0xb')](_0x75d1('0x16'),_0x1bc5de);logger[_0x75d1('0xc')]('GetMemberReport',_0x1bc5de,JSON['stringify'](_0x30d9f3));_0x2c2a6d(_0x30d9f3);})[_0x75d1('0x15')](function(_0x197f52){logger['error'](_0x75d1('0x16'),_0x197f52['message'],_0x1bc5de);_0x5761db(_0x3d0717[_0x75d1('0xf')](0x1f4,_0x197f52[_0x75d1('0x12')]));});});};exports[_0x75d1('0x1f')]=function(_0x3fb7b9){var _0x36ae86=this;return new Promise(function(_0x506b93,_0x352a4f){return db[_0x75d1('0x20')][_0x75d1('0x21')](_0x3fb7b9[_0x75d1('0x22')],{'raw':_0x3fb7b9['options']?_0x3fb7b9[_0x75d1('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x75d1('0x1e')](function(_0x31e072){logger['info'](_0x75d1('0x1f'),_0x3fb7b9);logger[_0x75d1('0xc')](_0x75d1('0x1f'),_0x3fb7b9,JSON[_0x75d1('0xe')](_0x31e072));_0x506b93(_0x31e072);})[_0x75d1('0x15')](function(_0x495aa4){logger[_0x75d1('0xf')](_0x75d1('0x1f'),_0x495aa4[_0x75d1('0x12')],_0x3fb7b9);_0x352a4f(_0x36ae86[_0x75d1('0xf')](0x1f4,_0x495aa4['message']));});});};exports['UpdateMemberReport']=function(_0x551723){var _0x3d9275=this;return new Promise(function(_0x29ad6b,_0x40dc07){return db[_0x75d1('0x20')][_0x75d1('0x23')](_0x551723[_0x75d1('0x22')],{'raw':_0x551723[_0x75d1('0x18')]?_0x551723[_0x75d1('0x18')][_0x75d1('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x551723['options']?_0x551723[_0x75d1('0x18')][_0x75d1('0x1a')]||null:null,'attributes':_0x551723[_0x75d1('0x18')]?_0x551723[_0x75d1('0x18')][_0x75d1('0x24')]||null:null,'limit':_0x551723['options']?_0x551723['options']['limit']||null:null})[_0x75d1('0x1e')](function(_0x17c0f6){logger[_0x75d1('0xb')](_0x75d1('0x25'),_0x551723);logger[_0x75d1('0xc')](_0x75d1('0x25'),_0x551723,JSON['stringify'](_0x17c0f6));_0x29ad6b(_0x17c0f6);})['catch'](function(_0x5efaea){logger[_0x75d1('0xf')]('UpdateMemberReport',_0x5efaea['message'],_0x551723);_0x40dc07(_0x3d9275[_0x75d1('0xf')](0x1f4,_0x5efaea[_0x75d1('0x12')]));});});};
\ No newline at end of file
index 400dd5a..1567f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd90=['multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','index','exports'];(function(_0x529296,_0x1a6a23){var _0x1796bf=function(_0x3cae53){while(--_0x3cae53){_0x529296['push'](_0x529296['shift']());}};_0x1796bf(++_0x1a6a23);}(_0xcd90,0x8c));var _0x0cd9=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xcd90[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x0cd9('0x0'));var util=require(_0x0cd9('0x1'));var path=require(_0x0cd9('0x2'));var timeout=require('connect-timeout');var express=require(_0x0cd9('0x3'));var router=express['Router']();var fs_extra=require(_0x0cd9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0cd9('0x5'));var config=require(_0x0cd9('0x6'));var controller=require('./migration.controller');router[_0x0cd9('0x7')]('/',controller[_0x0cd9('0x8')]);module[_0x0cd9('0x9')]=router;
\ No newline at end of file
+var _0x194c=['Router','fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','util','path','connect-timeout','express'];(function(_0x33ca26,_0xd94c2){var _0x47fcbe=function(_0x35555a){while(--_0x35555a){_0x33ca26['push'](_0x33ca26['shift']());}};_0x47fcbe(++_0xd94c2);}(_0x194c,0x19b));var _0xc194=function(_0x2c8845,_0xddac35){_0x2c8845=_0x2c8845-0x0;var _0x105ff2=_0x194c[_0x2c8845];return _0x105ff2;};'use strict';var multer=require(_0xc194('0x0'));var util=require(_0xc194('0x1'));var path=require(_0xc194('0x2'));var timeout=require(_0xc194('0x3'));var express=require(_0xc194('0x4'));var router=express[_0xc194('0x5')]();var fs_extra=require(_0xc194('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc194('0x7'));var config=require(_0xc194('0x8'));var controller=require(_0xc194('0x9'));router[_0xc194('0xa')]('/',controller[_0xc194('0xb')]);module[_0xc194('0xc')]=router;
\ No newline at end of file
index 2205644..3bc7a29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23fb=['version','sequelize','exports','STRING'];(function(_0x4a6362,_0x9e782a){var _0x2653a5=function(_0x52b12b){while(--_0x52b12b){_0x4a6362['push'](_0x4a6362['shift']());}};_0x2653a5(++_0x9e782a);}(_0x23fb,0x139));var _0xb23f=function(_0x5970b9,_0x8715e9){_0x5970b9=_0x5970b9-0x0;var _0x102199=_0x23fb[_0x5970b9];return _0x102199;};'use strict';var Sequelize=require(_0xb23f('0x0'));module[_0xb23f('0x1')]={'version':{'type':Sequelize[_0xb23f('0x2')],'unique':_0xb23f('0x3')}};
\ No newline at end of file
+var _0x1804=['sequelize','exports','version'];(function(_0x11720a,_0x54d15f){var _0x2b970c=function(_0x48cdc4){while(--_0x48cdc4){_0x11720a['push'](_0x11720a['shift']());}};_0x2b970c(++_0x54d15f);}(_0x1804,0x10b));var _0x4180=function(_0x3724bb,_0x2d054f){_0x3724bb=_0x3724bb-0x0;var _0x86d5c7=_0x1804[_0x3724bb];return _0x86d5c7;};'use strict';var Sequelize=require(_0x4180('0x0'));module[_0x4180('0x1')]={'version':{'type':Sequelize['STRING'],'unique':_0x4180('0x2')}};
\ No newline at end of file
index 89cb4b2..bc0c9bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a4a=['fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','Migration','includeAll','include','findAll','rows','catch','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','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','sendStatus','status','end','json','offset','undefined','count','apply','reject','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x2bf038,_0x3ecaf4){var _0x2bb8ad=function(_0x2ae1d4){while(--_0x2ae1d4){_0x2bf038['push'](_0x2bf038['shift']());}};_0x2bb8ad(++_0x3ecaf4);}(_0x7a4a,0x125));var _0xa7a4=function(_0x2c1923,_0x5446e9){_0x2c1923=_0x2c1923-0x0;var _0x73c9b4=_0x7a4a[_0x2c1923];return _0x73c9b4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa7a4('0x0'));var zipdir=require(_0xa7a4('0x1'));var jsonpatch=require(_0xa7a4('0x2'));var rp=require(_0xa7a4('0x3'));var moment=require(_0xa7a4('0x4'));var BPromise=require(_0xa7a4('0x5'));var Mustache=require(_0xa7a4('0x6'));var util=require(_0xa7a4('0x7'));var path=require('path');var sox=require(_0xa7a4('0x8'));var csv=require(_0xa7a4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa7a4('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa7a4('0xb'));var deskjs=require(_0xa7a4('0xc'));var toCsv=require(_0xa7a4('0x9'));var querystring=require(_0xa7a4('0xd'));var Papa=require(_0xa7a4('0xe'));var Redis=require(_0xa7a4('0xf'));var authService=require(_0xa7a4('0x10'));var qs=require(_0xa7a4('0x11'));var as=require(_0xa7a4('0x12'));var hardwareService=require(_0xa7a4('0x13'));var logger=require(_0xa7a4('0x14'))(_0xa7a4('0x15'));var utils=require(_0xa7a4('0x16'));var config=require(_0xa7a4('0x17'));var licenseUtil=require(_0xa7a4('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x174978,_0x370c47){_0x370c47=_0x370c47||0xcc;return function(_0x4928b0){if(_0x4928b0){return _0x174978[_0xa7a4('0x19')](_0x370c47);}return _0x174978[_0xa7a4('0x1a')](_0x370c47)[_0xa7a4('0x1b')]();};}function respondWithResult(_0x41c37e,_0x430637){_0x430637=_0x430637||0xc8;return function(_0x35ee54){if(_0x35ee54){return _0x41c37e[_0xa7a4('0x1a')](_0x430637)[_0xa7a4('0x1c')](_0x35ee54);}};}function respondWithFilteredResult(_0x19fae9,_0x2cf934){return function(_0x1d7484){if(_0x1d7484){var _0x1389d4=typeof _0x2cf934[_0xa7a4('0x1d')]===_0xa7a4('0x1e')&&typeof _0x2cf934['limit']===_0xa7a4('0x1e');var _0x1dc492=_0x1d7484['count'];var _0x399afa=_0x1389d4?0x0:_0x2cf934['offset'];var _0x5100a3=_0x1389d4?_0x1d7484[_0xa7a4('0x1f')]:_0x2cf934[_0xa7a4('0x1d')]+_0x2cf934['limit'];var _0x4dd014;if(_0x5100a3>=_0x1dc492){_0x5100a3=_0x1dc492;_0x4dd014=0xc8;}else{_0x4dd014=0xce;}_0x19fae9['status'](_0x4dd014);return _0x19fae9['set']('Content-Range',_0x399afa+'-'+_0x5100a3+'/'+_0x1dc492)[_0xa7a4('0x1c')](_0x1d7484);}return null;};}function patchUpdates(_0x1a7f1c){return function(_0x4d434b){try{jsonpatch[_0xa7a4('0x20')](_0x4d434b,_0x1a7f1c,!![]);}catch(_0x3696e5){return BPromise[_0xa7a4('0x21')](_0x3696e5);}return _0x4d434b['save']();};}function saveUpdates(_0x3caf2f,_0x1bdde4){return function(_0x337eb6){if(_0x337eb6){return _0x337eb6[_0xa7a4('0x22')](_0x3caf2f)[_0xa7a4('0x23')](function(_0x16a86e){return _0x16a86e;});}return null;};}function removeEntity(_0x525c8c,_0x3a6bd1){return function(_0x53957f){if(_0x53957f){return _0x53957f[_0xa7a4('0x24')]()[_0xa7a4('0x23')](function(){_0x525c8c[_0xa7a4('0x1a')](0xcc)[_0xa7a4('0x1b')]();});}};}function handleEntityNotFound(_0x275a59,_0x5a6e65){return function(_0x172aa8){if(!_0x172aa8){_0x275a59[_0xa7a4('0x19')](0x194);}return _0x172aa8;};}function handleError(_0x1d7119,_0x37b313){_0x37b313=_0x37b313||0x1f4;return function(_0x478c76){logger[_0xa7a4('0x25')](_0x478c76[_0xa7a4('0x26')]);if(_0x478c76[_0xa7a4('0x27')]){delete _0x478c76[_0xa7a4('0x27')];}_0x1d7119[_0xa7a4('0x1a')](_0x37b313)[_0xa7a4('0x28')](_0x478c76);};}exports[_0xa7a4('0x29')]=function(_0x49d53d,_0x18adbf){var _0x50eb9d={},_0x12ea5a={},_0x5324f4={'count':0x0,'rows':[]};var _0x5239f0=_[_0xa7a4('0x2a')](db['Migration']['rawAttributes'],function(_0xdca25a){return{'name':_0xdca25a[_0xa7a4('0x2b')],'type':_0xdca25a[_0xa7a4('0x2c')][_0xa7a4('0x2d')]};});_0x12ea5a[_0xa7a4('0x2e')]=_[_0xa7a4('0x2a')](_0x5239f0,'name');_0x12ea5a[_0xa7a4('0x2f')]=_[_0xa7a4('0x30')](_0x49d53d['query']);_0x12ea5a[_0xa7a4('0x31')]=_[_0xa7a4('0x32')](_0x12ea5a[_0xa7a4('0x2e')],_0x12ea5a[_0xa7a4('0x2f')]);_0x50eb9d[_0xa7a4('0x33')]=_[_0xa7a4('0x32')](_0x12ea5a[_0xa7a4('0x2e')],qs[_0xa7a4('0x34')](_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x34')]));_0x50eb9d['attributes']=_0x50eb9d['attributes'][_0xa7a4('0x35')]?_0x50eb9d[_0xa7a4('0x33')]:_0x12ea5a['model'];if(!_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x36')](_0xa7a4('0x37'))){_0x50eb9d[_0xa7a4('0x38')]=qs[_0xa7a4('0x38')](_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x38')]);_0x50eb9d[_0xa7a4('0x1d')]=qs[_0xa7a4('0x1d')](_0x49d53d['query'][_0xa7a4('0x1d')]);}_0x50eb9d[_0xa7a4('0x39')]=qs[_0xa7a4('0x3a')](_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x3a')]);_0x50eb9d[_0xa7a4('0x3b')]=qs[_0xa7a4('0x31')](_['pick'](_0x49d53d[_0xa7a4('0x2f')],_0x12ea5a[_0xa7a4('0x31')]),_0x5239f0);if(_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x3c')]){_0x50eb9d[_0xa7a4('0x3b')]=_[_0xa7a4('0x3d')](_0x50eb9d[_0xa7a4('0x3b')],{'$or':_[_0xa7a4('0x2a')](_0x5239f0,function(_0x23d76e){if(_0x23d76e[_0xa7a4('0x2c')]!==_0xa7a4('0x3e')){var _0x88bded={};_0x88bded[_0x23d76e[_0xa7a4('0x27')]]={'$like':'%'+_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x3c')]+'%'};return _0x88bded;}})});}_0x50eb9d=_[_0xa7a4('0x3d')]({},_0x50eb9d,_0x49d53d['options']);var _0x4b6c03={'where':_0x50eb9d[_0xa7a4('0x3b')]};return db[_0xa7a4('0x3f')][_0xa7a4('0x1f')](_0x4b6c03)[_0xa7a4('0x23')](function(_0x4fc4cc){_0x5324f4[_0xa7a4('0x1f')]=_0x4fc4cc;if(_0x49d53d[_0xa7a4('0x2f')][_0xa7a4('0x40')]){_0x50eb9d[_0xa7a4('0x41')]=[{'all':!![]}];}return db['Migration'][_0xa7a4('0x42')](_0x50eb9d);})[_0xa7a4('0x23')](function(_0x46c2bc){_0x5324f4[_0xa7a4('0x43')]=_0x46c2bc;return _0x5324f4;})[_0xa7a4('0x23')](respondWithFilteredResult(_0x18adbf,_0x50eb9d))[_0xa7a4('0x44')](handleError(_0x18adbf,null));};
\ No newline at end of file
+var _0xe3e7=['Migration','rawAttributes','fieldName','type','key','model','query','keys','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map'];(function(_0x4b143c,_0xe48dac){var _0x116dc8=function(_0x53fb87){while(--_0x53fb87){_0x4b143c['push'](_0x4b143c['shift']());}};_0x116dc8(++_0xe48dac);}(_0xe3e7,0xd9));var _0x7e3e=function(_0x2687da,_0x13d361){_0x2687da=_0x2687da-0x0;var _0x158f16=_0xe3e7[_0x2687da];return _0x158f16;};'use strict';var emlformat=require(_0x7e3e('0x0'));var rimraf=require(_0x7e3e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7e3e('0x2'));var rp=require('request-promise');var moment=require(_0x7e3e('0x3'));var BPromise=require(_0x7e3e('0x4'));var Mustache=require('mustache');var util=require(_0x7e3e('0x5'));var path=require(_0x7e3e('0x6'));var sox=require(_0x7e3e('0x7'));var csv=require(_0x7e3e('0x8'));var ejs=require(_0x7e3e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e3e('0xa'));var squel=require(_0x7e3e('0xb'));var crypto=require('crypto');var jsforce=require(_0x7e3e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7e3e('0xd'));var Papa=require(_0x7e3e('0xe'));var Redis=require(_0x7e3e('0xf'));var authService=require(_0x7e3e('0x10'));var qs=require(_0x7e3e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7e3e('0x12'));var logger=require(_0x7e3e('0x13'))('api');var utils=require(_0x7e3e('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7e3e('0x15'));var db=require(_0x7e3e('0x16'))['db'];function respondWithStatusCode(_0x580b63,_0x46700f){_0x46700f=_0x46700f||0xcc;return function(_0x97f82e){if(_0x97f82e){return _0x580b63[_0x7e3e('0x17')](_0x46700f);}return _0x580b63[_0x7e3e('0x18')](_0x46700f)[_0x7e3e('0x19')]();};}function respondWithResult(_0x2ad02a,_0x51bed1){_0x51bed1=_0x51bed1||0xc8;return function(_0x2e83f7){if(_0x2e83f7){return _0x2ad02a['status'](_0x51bed1)[_0x7e3e('0x1a')](_0x2e83f7);}};}function respondWithFilteredResult(_0x1bf9e1,_0x3fe2df){return function(_0x49cc9e){if(_0x49cc9e){var _0x52aea2=typeof _0x3fe2df[_0x7e3e('0x1b')]===_0x7e3e('0x1c')&&typeof _0x3fe2df[_0x7e3e('0x1d')]===_0x7e3e('0x1c');var _0x12711a=_0x49cc9e[_0x7e3e('0x1e')];var _0x4f4e33=_0x52aea2?0x0:_0x3fe2df[_0x7e3e('0x1b')];var _0xb7bfd=_0x52aea2?_0x49cc9e['count']:_0x3fe2df[_0x7e3e('0x1b')]+_0x3fe2df['limit'];var _0x44793f;if(_0xb7bfd>=_0x12711a){_0xb7bfd=_0x12711a;_0x44793f=0xc8;}else{_0x44793f=0xce;}_0x1bf9e1[_0x7e3e('0x18')](_0x44793f);return _0x1bf9e1[_0x7e3e('0x1f')](_0x7e3e('0x20'),_0x4f4e33+'-'+_0xb7bfd+'/'+_0x12711a)[_0x7e3e('0x1a')](_0x49cc9e);}return null;};}function patchUpdates(_0x1d169f){return function(_0x1e86a1){try{jsonpatch[_0x7e3e('0x21')](_0x1e86a1,_0x1d169f,!![]);}catch(_0x14c802){return BPromise[_0x7e3e('0x22')](_0x14c802);}return _0x1e86a1[_0x7e3e('0x23')]();};}function saveUpdates(_0x4bdf3f,_0x2a52f3){return function(_0xebdf05){if(_0xebdf05){return _0xebdf05[_0x7e3e('0x24')](_0x4bdf3f)[_0x7e3e('0x25')](function(_0x5327f7){return _0x5327f7;});}return null;};}function removeEntity(_0x51c904,_0x3b8095){return function(_0x453dc1){if(_0x453dc1){return _0x453dc1[_0x7e3e('0x26')]()[_0x7e3e('0x25')](function(){_0x51c904[_0x7e3e('0x18')](0xcc)[_0x7e3e('0x19')]();});}};}function handleEntityNotFound(_0x4782b1,_0x44c130){return function(_0x55851c){if(!_0x55851c){_0x4782b1[_0x7e3e('0x17')](0x194);}return _0x55851c;};}function handleError(_0xe94cc2,_0x3e250c){_0x3e250c=_0x3e250c||0x1f4;return function(_0x36286c){logger[_0x7e3e('0x27')](_0x36286c[_0x7e3e('0x28')]);if(_0x36286c['name']){delete _0x36286c[_0x7e3e('0x29')];}_0xe94cc2[_0x7e3e('0x18')](_0x3e250c)['send'](_0x36286c);};}exports['index']=function(_0x5f2be0,_0x97fe83){var _0x21cfc5={},_0x258900={},_0x3db765={'count':0x0,'rows':[]};var _0x48917d=_[_0x7e3e('0x2a')](db[_0x7e3e('0x2b')][_0x7e3e('0x2c')],function(_0x42e76b){return{'name':_0x42e76b[_0x7e3e('0x2d')],'type':_0x42e76b[_0x7e3e('0x2e')][_0x7e3e('0x2f')]};});_0x258900[_0x7e3e('0x30')]=_[_0x7e3e('0x2a')](_0x48917d,'name');_0x258900[_0x7e3e('0x31')]=_[_0x7e3e('0x32')](_0x5f2be0[_0x7e3e('0x31')]);_0x258900['filters']=_['intersection'](_0x258900['model'],_0x258900[_0x7e3e('0x31')]);_0x21cfc5[_0x7e3e('0x33')]=_['intersection'](_0x258900['model'],qs['fields'](_0x5f2be0[_0x7e3e('0x31')]['fields']));_0x21cfc5[_0x7e3e('0x33')]=_0x21cfc5[_0x7e3e('0x33')][_0x7e3e('0x34')]?_0x21cfc5[_0x7e3e('0x33')]:_0x258900[_0x7e3e('0x30')];if(!_0x5f2be0[_0x7e3e('0x31')]['hasOwnProperty'](_0x7e3e('0x35'))){_0x21cfc5[_0x7e3e('0x1d')]=qs[_0x7e3e('0x1d')](_0x5f2be0[_0x7e3e('0x31')][_0x7e3e('0x1d')]);_0x21cfc5['offset']=qs[_0x7e3e('0x1b')](_0x5f2be0[_0x7e3e('0x31')][_0x7e3e('0x1b')]);}_0x21cfc5[_0x7e3e('0x36')]=qs[_0x7e3e('0x37')](_0x5f2be0[_0x7e3e('0x31')]['sort']);_0x21cfc5[_0x7e3e('0x38')]=qs[_0x7e3e('0x39')](_[_0x7e3e('0x3a')](_0x5f2be0[_0x7e3e('0x31')],_0x258900[_0x7e3e('0x39')]),_0x48917d);if(_0x5f2be0['query'][_0x7e3e('0x3b')]){_0x21cfc5['where']=_[_0x7e3e('0x3c')](_0x21cfc5[_0x7e3e('0x38')],{'$or':_[_0x7e3e('0x2a')](_0x48917d,function(_0x558bb5){if(_0x558bb5['type']!==_0x7e3e('0x3d')){var _0x3e5c89={};_0x3e5c89[_0x558bb5[_0x7e3e('0x29')]]={'$like':'%'+_0x5f2be0[_0x7e3e('0x31')][_0x7e3e('0x3b')]+'%'};return _0x3e5c89;}})});}_0x21cfc5=_[_0x7e3e('0x3c')]({},_0x21cfc5,_0x5f2be0[_0x7e3e('0x3e')]);var _0x101a3f={'where':_0x21cfc5['where']};return db[_0x7e3e('0x2b')][_0x7e3e('0x1e')](_0x101a3f)['then'](function(_0x5d1d04){_0x3db765[_0x7e3e('0x1e')]=_0x5d1d04;if(_0x5f2be0[_0x7e3e('0x31')]['includeAll']){_0x21cfc5[_0x7e3e('0x3f')]=[{'all':!![]}];}return db[_0x7e3e('0x2b')][_0x7e3e('0x40')](_0x21cfc5);})[_0x7e3e('0x25')](function(_0x1be274){_0x3db765['rows']=_0x1be274;return _0x3db765;})['then'](respondWithFilteredResult(_0x97fe83,_0x21cfc5))['catch'](handleError(_0x97fe83,null));};
\ No newline at end of file
index 8cf355c..0f52783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x286b=['bluebird','request-promise','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash','util','api','moment'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x286b,0x15b));var _0xb286=function(_0x2dcc96,_0x383c7f){_0x2dcc96=_0x2dcc96-0x0;var _0x8588c7=_0x286b[_0x2dcc96];return _0x8588c7;};'use strict';var _=require(_0xb286('0x0'));var util=require(_0xb286('0x1'));var logger=require('../../config/logger')(_0xb286('0x2'));var moment=require(_0xb286('0x3'));var BPromise=require(_0xb286('0x4'));var rp=require(_0xb286('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb286('0x6'));var config=require(_0xb286('0x7'));var attributes=require(_0xb286('0x8'));module[_0xb286('0x9')]=function(_0x5710ec,_0x4cacf1){return _0x5710ec[_0xb286('0xa')](_0xb286('0xb'),attributes,{'tableName':_0xb286('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea80=['util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash'];(function(_0x5ebdce,_0x184150){var _0x585e94=function(_0xcf9be1){while(--_0xcf9be1){_0x5ebdce['push'](_0x5ebdce['shift']());}};_0x585e94(++_0x184150);}(_0xea80,0x1df));var _0x0ea8=function(_0x1ed2dc,_0x2e7dba){_0x1ed2dc=_0x1ed2dc-0x0;var _0x51ba1d=_0xea80[_0x1ed2dc];return _0x51ba1d;};'use strict';var _=require(_0x0ea8('0x0'));var util=require(_0x0ea8('0x1'));var logger=require(_0x0ea8('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0ea8('0x3'));var rp=require(_0x0ea8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0ea8('0x5'));var config=require(_0x0ea8('0x6'));var attributes=require(_0x0ea8('0x7'));module[_0x0ea8('0x8')]=function(_0x2d8208,_0x1a531f){return _0x2d8208[_0x0ea8('0x9')](_0x0ea8('0xa'),attributes,{'tableName':_0x0ea8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc9cdc7..c5b9d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b37=['randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','bluebird'];(function(_0x80ab9e,_0x32c636){var _0x7605e6=function(_0x207f0d){while(--_0x207f0d){_0x80ab9e['push'](_0x80ab9e['shift']());}};_0x7605e6(++_0x32c636);}(_0x7b37,0xd9));var _0x77b3=function(_0x146aac,_0x378163){_0x146aac=_0x146aac-0x0;var _0x2c0c27=_0x7b37[_0x146aac];return _0x2c0c27;};'use strict';var _=require(_0x77b3('0x0'));var util=require(_0x77b3('0x1'));var moment=require('moment');var BPromise=require(_0x77b3('0x2'));var rs=require(_0x77b3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77b3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x77b3('0x5'))(_0x77b3('0x6'));var config=require(_0x77b3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x77b3('0x8')][_0x77b3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x515f06,_0x49aded,_0x2f896b){return new BPromise(function(_0x5b3fb4,_0x35becb){return client[_0x77b3('0xa')](_0x515f06,_0x2f896b)['then'](function(_0x46dc45){logger[_0x77b3('0xb')](_0x77b3('0xc'),_0x49aded,_0x77b3('0xd'));logger[_0x77b3('0xe')](_0x77b3('0xf'),_0x49aded,_0x77b3('0xd'),JSON[_0x77b3('0x10')](_0x46dc45));if(_0x46dc45[_0x77b3('0x11')]){if(_0x46dc45[_0x77b3('0x11')]['code']===0x1f4){logger[_0x77b3('0x11')](_0x77b3('0xc'),_0x49aded,_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);return _0x35becb(_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);}logger[_0x77b3('0x11')](_0x77b3('0xc'),_0x49aded,_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);return _0x5b3fb4(_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);}else{logger['info'](_0x77b3('0xc'),_0x49aded,_0x77b3('0xd'));_0x5b3fb4(_0x46dc45[_0x77b3('0x13')][_0x77b3('0x12')]);}})['catch'](function(_0x224303){logger['error']('Migration,\x20%s,\x20%s',_0x49aded,_0x224303);_0x35becb(_0x224303);});});}
\ No newline at end of file
+var _0x14b7=['then','info','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x14b7,0x144));var _0x714b=function(_0x263a16,_0x489c01){_0x263a16=_0x263a16-0x0;var _0x251824=_0x14b7[_0x263a16];return _0x251824;};'use strict';var _=require(_0x714b('0x0'));var util=require(_0x714b('0x1'));var moment=require(_0x714b('0x2'));var BPromise=require(_0x714b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x714b('0x4'));var db=require(_0x714b('0x5'))['db'];var utils=require(_0x714b('0x6'));var logger=require(_0x714b('0x7'))(_0x714b('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x714b('0x9')][_0x714b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a0a91,_0x5ee9a5,_0x39b5e4){return new BPromise(function(_0x26489c,_0x53f14c){return client[_0x714b('0xb')](_0x2a0a91,_0x39b5e4)[_0x714b('0xc')](function(_0x50dab0){logger[_0x714b('0xd')](_0x714b('0xe'),_0x5ee9a5,_0x714b('0xf'));logger['debug'](_0x714b('0x10'),_0x5ee9a5,'request\x20sent',JSON['stringify'](_0x50dab0));if(_0x50dab0[_0x714b('0x11')]){if(_0x50dab0[_0x714b('0x11')]['code']===0x1f4){logger[_0x714b('0x11')](_0x714b('0xe'),_0x5ee9a5,_0x50dab0[_0x714b('0x11')][_0x714b('0x12')]);return _0x53f14c(_0x50dab0['error'][_0x714b('0x12')]);}logger['error'](_0x714b('0xe'),_0x5ee9a5,_0x50dab0[_0x714b('0x11')][_0x714b('0x12')]);return _0x26489c(_0x50dab0[_0x714b('0x11')][_0x714b('0x12')]);}else{logger[_0x714b('0xd')](_0x714b('0xe'),_0x5ee9a5,_0x714b('0xf'));_0x26489c(_0x50dab0[_0x714b('0x13')][_0x714b('0x12')]);}})[_0x714b('0x14')](function(_0x1d81b3){logger['error'](_0x714b('0xe'),_0x5ee9a5,_0x1d81b3);_0x53f14c(_0x1d81b3);});});}
\ No newline at end of file
index 7645e84..9c95aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa57e=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','/:id','post','create','update'];(function(_0x47e4b4,_0x2a7d70){var _0x311b79=function(_0x4a6561){while(--_0x4a6561){_0x47e4b4['push'](_0x47e4b4['shift']());}};_0x311b79(++_0x2a7d70);}(_0xa57e,0x67));var _0xea57=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa57e[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0xea57('0x0'));var util=require(_0xea57('0x1'));var path=require(_0xea57('0x2'));var timeout=require(_0xea57('0x3'));var express=require(_0xea57('0x4'));var router=express[_0xea57('0x5')]();var fs_extra=require(_0xea57('0x6'));var auth=require(_0xea57('0x7'));var interaction=require(_0xea57('0x8'));var config=require(_0xea57('0x9'));var controller=require(_0xea57('0xa'));router[_0xea57('0xb')]('/',auth[_0xea57('0xc')](),controller['index']);router[_0xea57('0xb')](_0xea57('0xd'),auth[_0xea57('0xc')](),controller['show']);router[_0xea57('0xe')]('/',auth[_0xea57('0xc')](),controller[_0xea57('0xf')]);router['put'](_0xea57('0xd'),auth[_0xea57('0xc')](),controller[_0xea57('0x10')]);router[_0xea57('0x11')](_0xea57('0xd'),auth[_0xea57('0xc')](),controller[_0xea57('0x12')]);module[_0xea57('0x13')]=router;
\ No newline at end of file
+var _0x5d99=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x2509c6,_0x537d55){var _0x538965=function(_0x25335a){while(--_0x25335a){_0x2509c6['push'](_0x2509c6['shift']());}};_0x538965(++_0x537d55);}(_0x5d99,0x1b7));var _0x95d9=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x5d99[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0x95d9('0x0'));var util=require(_0x95d9('0x1'));var path=require(_0x95d9('0x2'));var timeout=require(_0x95d9('0x3'));var express=require(_0x95d9('0x4'));var router=express[_0x95d9('0x5')]();var fs_extra=require(_0x95d9('0x6'));var auth=require(_0x95d9('0x7'));var interaction=require(_0x95d9('0x8'));var config=require(_0x95d9('0x9'));var controller=require('./network.controller');router['get']('/',auth[_0x95d9('0xa')](),controller[_0x95d9('0xb')]);router[_0x95d9('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x95d9('0xd')]);router[_0x95d9('0xe')]('/',auth['isAuthenticated'](),controller[_0x95d9('0xf')]);router[_0x95d9('0x10')](_0x95d9('0x11'),auth['isAuthenticated'](),controller[_0x95d9('0x12')]);router[_0x95d9('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x95d9('0x14')]);module[_0x95d9('0x15')]=router;
\ No newline at end of file
index 89d89cd..ba0aee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6269=['localnet','externip','stun','turn','STRING','sequelize','exports','ENUM'];(function(_0x14c13f,_0x39c445){var _0x2f3892=function(_0x56cf83){while(--_0x56cf83){_0x14c13f['push'](_0x14c13f['shift']());}};_0x2f3892(++_0x39c445);}(_0x6269,0xe5));var _0x9626=function(_0x2bdb4e,_0x3b3c0d){_0x2bdb4e=_0x2bdb4e-0x0;var _0x46081c=_0x6269[_0x2bdb4e];return _0x46081c;};'use strict';var Sequelize=require(_0x9626('0x0'));module[_0x9626('0x1')]={'type':{'type':Sequelize[_0x9626('0x2')](_0x9626('0x3'),_0x9626('0x4'),_0x9626('0x5'),_0x9626('0x6'))},'value':{'type':Sequelize[_0x9626('0x7')]},'username':{'type':Sequelize[_0x9626('0x7')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4453=['STRING','ENUM','localnet','externip','stun','turn'];(function(_0x39cd39,_0x251493){var _0x500f99=function(_0x3b29bc){while(--_0x3b29bc){_0x39cd39['push'](_0x39cd39['shift']());}};_0x500f99(++_0x251493);}(_0x4453,0xf7));var _0x3445=function(_0x354afe,_0x2a46aa){_0x354afe=_0x354afe-0x0;var _0x21442f=_0x4453[_0x354afe];return _0x21442f;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x3445('0x0')](_0x3445('0x1'),_0x3445('0x2'),_0x3445('0x3'),_0x3445('0x4'))},'value':{'type':Sequelize[_0x3445('0x5')]},'username':{'type':Sequelize[_0x3445('0x5')]},'password':{'type':Sequelize[_0x3445('0x5')]}};
\ No newline at end of file
index 05204d1..62a6499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2208=['http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','stack','name','index','map','Network','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','findAll','rows','keys','rawAttributes','includeAll','include','find','sequelize','transaction','create','body','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','Reload','toUpperCase','TURN','join','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','params','/etc/asterisk/stun_xcally.conf','server/files/templates/network.ejs','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','jayson/promise','client'];(function(_0x343233,_0x53801c){var _0x1730a3=function(_0x5346a9){while(--_0x5346a9){_0x343233['push'](_0x343233['shift']());}};_0x1730a3(++_0x53801c);}(_0x2208,0x11e));var _0x8220=function(_0x464428,_0x134c59){_0x464428=_0x464428-0x0;var _0x87ea90=_0x2208[_0x464428];return _0x87ea90;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8220('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8220('0x1'));var rp=require('request-promise');var moment=require(_0x8220('0x2'));var BPromise=require(_0x8220('0x3'));var Mustache=require(_0x8220('0x4'));var util=require(_0x8220('0x5'));var path=require(_0x8220('0x6'));var sox=require(_0x8220('0x7'));var csv=require('to-csv');var ejs=require(_0x8220('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8220('0x9'));var squel=require(_0x8220('0xa'));var crypto=require(_0x8220('0xb'));var jsforce=require(_0x8220('0xc'));var deskjs=require(_0x8220('0xd'));var toCsv=require(_0x8220('0xe'));var querystring=require('querystring');var Papa=require(_0x8220('0xf'));var Redis=require(_0x8220('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8220('0x11'));var as=require(_0x8220('0x12'));var hardwareService=require(_0x8220('0x13'));var logger=require(_0x8220('0x14'))(_0x8220('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8220('0x16'));var db=require(_0x8220('0x17'))['db'];var jayson=require(_0x8220('0x18'));var client=jayson[_0x8220('0x19')][_0x8220('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x1bee9c,_0x21342a,_0x217af4,_0x241c30){return new BPromise(function(_0x5b19d4,_0x81c6de){var _0x27fbad=_0x241c30||client;return _0x27fbad[_0x8220('0x1b')](_0x1bee9c,_0x217af4)['then'](function(_0x594df9){logger[_0x8220('0x1c')](_0x8220('0x1d'),_0x21342a,_0x8220('0x1e'));logger[_0x8220('0x1f')](_0x8220('0x20'),_0x21342a,_0x8220('0x1e'),JSON[_0x8220('0x21')](_0x594df9));if(_0x594df9[_0x8220('0x22')]){if(_0x594df9[_0x8220('0x22')]['code']===0x1f4){logger[_0x8220('0x22')](_0x8220('0x1d'),_0x21342a,_0x594df9['error'][_0x8220('0x23')]);return _0x81c6de(_0x594df9['error']['message']);}logger[_0x8220('0x22')]('Network,\x20%s,\x20%s',_0x21342a,_0x594df9[_0x8220('0x22')][_0x8220('0x23')]);return _0x5b19d4(_0x594df9[_0x8220('0x22')][_0x8220('0x23')]);}else{logger[_0x8220('0x1c')]('Network,\x20%s,\x20%s',_0x21342a,'request\x20sent');_0x5b19d4(_0x594df9[_0x8220('0x24')][_0x8220('0x23')]);}})[_0x8220('0x25')](function(_0xf56c4e){logger[_0x8220('0x22')](_0x8220('0x1d'),_0x21342a,_0xf56c4e);_0x81c6de(_0xf56c4e);});});}function respondWithStatusCode(_0x22e848,_0x561c5f){_0x561c5f=_0x561c5f||0xcc;return function(_0x382ece){if(_0x382ece){return _0x22e848['sendStatus'](_0x561c5f);}return _0x22e848[_0x8220('0x26')](_0x561c5f)[_0x8220('0x27')]();};}function respondWithResult(_0x287ccf,_0x4fc3cc){_0x4fc3cc=_0x4fc3cc||0xc8;return function(_0x1f0d1a){if(_0x1f0d1a){return _0x287ccf[_0x8220('0x26')](_0x4fc3cc)[_0x8220('0x28')](_0x1f0d1a);}};}function respondWithFilteredResult(_0x39a033,_0x4a0dec){return function(_0x2b31c2){if(_0x2b31c2){var _0x22d222=typeof _0x4a0dec[_0x8220('0x29')]==='undefined'&&typeof _0x4a0dec[_0x8220('0x2a')]===_0x8220('0x2b');var _0x218b23=_0x2b31c2[_0x8220('0x2c')];var _0x154e8c=_0x22d222?0x0:_0x4a0dec['offset'];var _0x254c7a=_0x22d222?_0x2b31c2[_0x8220('0x2c')]:_0x4a0dec[_0x8220('0x29')]+_0x4a0dec[_0x8220('0x2a')];var _0x292fe6;if(_0x254c7a>=_0x218b23){_0x254c7a=_0x218b23;_0x292fe6=0xc8;}else{_0x292fe6=0xce;}_0x39a033[_0x8220('0x26')](_0x292fe6);return _0x39a033[_0x8220('0x2d')](_0x8220('0x2e'),_0x154e8c+'-'+_0x254c7a+'/'+_0x218b23)[_0x8220('0x28')](_0x2b31c2);}return null;};}function patchUpdates(_0x5530cc){return function(_0x46d80b){try{jsonpatch['apply'](_0x46d80b,_0x5530cc,!![]);}catch(_0x112ee4){return BPromise[_0x8220('0x2f')](_0x112ee4);}return _0x46d80b['save']();};}function saveUpdates(_0x4370fa,_0x36b9f4){return function(_0x35dd07){if(_0x35dd07){return _0x35dd07[_0x8220('0x30')](_0x4370fa)[_0x8220('0x31')](function(_0x28b523){return _0x28b523;});}return null;};}function removeEntity(_0x2b3b83,_0x2fed3f){return function(_0x4bb1b6){if(_0x4bb1b6){return _0x4bb1b6[_0x8220('0x32')]()[_0x8220('0x31')](function(){_0x2b3b83['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x45859c,_0x1b2506){return function(_0x1a5ca2){if(!_0x1a5ca2){_0x45859c['sendStatus'](0x194);}return _0x1a5ca2;};}function handleError(_0x522e8a,_0x291aaa){_0x291aaa=_0x291aaa||0x1f4;return function(_0x292837){logger[_0x8220('0x22')](_0x292837[_0x8220('0x33')]);if(_0x292837['name']){delete _0x292837[_0x8220('0x34')];}_0x522e8a[_0x8220('0x26')](_0x291aaa)['send'](_0x292837);};}exports[_0x8220('0x35')]=function(_0x10af50,_0x4ffaef){var _0xa2972a={},_0x17143c={},_0x301bae={'count':0x0,'rows':[]};var _0x372f6d=_[_0x8220('0x36')](db[_0x8220('0x37')]['rawAttributes'],function(_0x58ed8b){return{'name':_0x58ed8b[_0x8220('0x38')],'type':_0x58ed8b[_0x8220('0x39')][_0x8220('0x3a')]};});_0x17143c[_0x8220('0x3b')]=_[_0x8220('0x36')](_0x372f6d,_0x8220('0x34'));_0x17143c[_0x8220('0x3c')]=_['keys'](_0x10af50[_0x8220('0x3c')]);_0x17143c[_0x8220('0x3d')]=_[_0x8220('0x3e')](_0x17143c['model'],_0x17143c[_0x8220('0x3c')]);_0xa2972a[_0x8220('0x3f')]=_[_0x8220('0x3e')](_0x17143c[_0x8220('0x3b')],qs[_0x8220('0x40')](_0x10af50['query'][_0x8220('0x40')]));_0xa2972a[_0x8220('0x3f')]=_0xa2972a[_0x8220('0x3f')][_0x8220('0x41')]?_0xa2972a[_0x8220('0x3f')]:_0x17143c[_0x8220('0x3b')];if(!_0x10af50[_0x8220('0x3c')][_0x8220('0x42')](_0x8220('0x43'))){_0xa2972a['limit']=qs[_0x8220('0x2a')](_0x10af50[_0x8220('0x3c')][_0x8220('0x2a')]);_0xa2972a[_0x8220('0x29')]=qs[_0x8220('0x29')](_0x10af50[_0x8220('0x3c')][_0x8220('0x29')]);}_0xa2972a['order']=qs[_0x8220('0x44')](_0x10af50[_0x8220('0x3c')][_0x8220('0x44')]);_0xa2972a['where']=qs[_0x8220('0x3d')](_[_0x8220('0x45')](_0x10af50['query'],_0x17143c['filters']),_0x372f6d);if(_0x10af50[_0x8220('0x3c')][_0x8220('0x46')]){_0xa2972a[_0x8220('0x47')]=_[_0x8220('0x48')](_0xa2972a[_0x8220('0x47')],{'$or':_[_0x8220('0x36')](_0x372f6d,function(_0x506a8d){if(_0x506a8d[_0x8220('0x39')]!=='VIRTUAL'){var _0x27c36d={};_0x27c36d[_0x506a8d[_0x8220('0x34')]]={'$like':'%'+_0x10af50[_0x8220('0x3c')][_0x8220('0x46')]+'%'};return _0x27c36d;}})});}_0xa2972a=_[_0x8220('0x48')]({},_0xa2972a,_0x10af50[_0x8220('0x49')]);var _0x3414a9={'where':_0xa2972a[_0x8220('0x47')]};return db[_0x8220('0x37')][_0x8220('0x2c')](_0x3414a9)[_0x8220('0x31')](function(_0x57c4d1){_0x301bae[_0x8220('0x2c')]=_0x57c4d1;if(_0x10af50[_0x8220('0x3c')]['includeAll']){_0xa2972a['include']=[{'all':!![]}];}return db[_0x8220('0x37')][_0x8220('0x4a')](_0xa2972a);})[_0x8220('0x31')](function(_0x22c706){_0x301bae[_0x8220('0x4b')]=_0x22c706;return _0x301bae;})['then'](respondWithFilteredResult(_0x4ffaef,_0xa2972a))[_0x8220('0x25')](handleError(_0x4ffaef,null));};exports['show']=function(_0x5b8187,_0x1b02b5){var _0x3ff0cb={'raw':!![],'where':{'id':_0x5b8187['params']['id']}},_0x113e38={};_0x113e38[_0x8220('0x3b')]=_[_0x8220('0x4c')](db[_0x8220('0x37')][_0x8220('0x4d')]);_0x113e38[_0x8220('0x3c')]=_[_0x8220('0x4c')](_0x5b8187[_0x8220('0x3c')]);_0x113e38[_0x8220('0x3d')]=_[_0x8220('0x3e')](_0x113e38[_0x8220('0x3b')],_0x113e38[_0x8220('0x3c')]);_0x3ff0cb[_0x8220('0x3f')]=_[_0x8220('0x3e')](_0x113e38[_0x8220('0x3b')],qs[_0x8220('0x40')](_0x5b8187[_0x8220('0x3c')][_0x8220('0x40')]));_0x3ff0cb[_0x8220('0x3f')]=_0x3ff0cb[_0x8220('0x3f')][_0x8220('0x41')]?_0x3ff0cb[_0x8220('0x3f')]:_0x113e38[_0x8220('0x3b')];if(_0x5b8187[_0x8220('0x3c')][_0x8220('0x4e')]){_0x3ff0cb[_0x8220('0x4f')]=[{'all':!![]}];}_0x3ff0cb=_[_0x8220('0x48')]({},_0x3ff0cb,_0x5b8187['options']);return db[_0x8220('0x37')][_0x8220('0x50')](_0x3ff0cb)[_0x8220('0x31')](handleEntityNotFound(_0x1b02b5,null))[_0x8220('0x31')](respondWithResult(_0x1b02b5,null))['catch'](handleError(_0x1b02b5,null));};exports['create']=function(_0x1cbb41,_0x28cb46,_0xbbf3d5){var _0xe92011;return db[_0x8220('0x51')][_0x8220('0x52')](function(_0x281fc1){return db[_0x8220('0x37')][_0x8220('0x53')](_0x1cbb41[_0x8220('0x54')],{'raw':!![]})[_0x8220('0x31')](function(_0x1b0cca){_0xe92011=_0x1b0cca;return db[_0x8220('0x37')][_0x8220('0x4a')]({'where':{'type':_0x1cbb41[_0x8220('0x54')][_0x8220('0x39')]},'raw':!![]});})[_0x8220('0x31')](function(_0x440f2e){if(_0xe92011[_0x8220('0x39')]['toUpperCase']()==_0x8220('0x55')){var _0x3fe86a=fs[_0x8220('0x56')](path['join'](config[_0x8220('0x57')],_0x8220('0x58')),_0x8220('0x59'));var _0x1a91b6=ejs[_0x8220('0x5a')](_0x3fe86a,{'networks':_0x440f2e||[]});fs[_0x8220('0x5b')]('/etc/asterisk/stun_xcally.conf',_0x1a91b6);return respondWithRpcPromise(_0x8220('0x5c'),'create',{'module':'res_stun_monitor.so'});}else if(_0xe92011[_0x8220('0x39')][_0x8220('0x5d')]()==_0x8220('0x5e')){var _0x360319=fs[_0x8220('0x56')](path[_0x8220('0x5f')](config[_0x8220('0x57')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x425a92=ejs[_0x8220('0x5a')](_0x360319,{'networks':_0x440f2e||[]});fs[_0x8220('0x5b')](_0x8220('0x60'),_0x425a92);return respondWithRpcPromise(_0x8220('0x5c'),'create',{'module':_0x8220('0x61')});}else{var _0x15ae69=fs[_0x8220('0x56')](path[_0x8220('0x5f')](config[_0x8220('0x57')],'server/files/templates/network.ejs'),_0x8220('0x59'));var _0x26c290=ejs[_0x8220('0x5a')](_0x15ae69,{'networks':_0x440f2e||[]});fs[_0x8220('0x5b')](util['format'](_0x8220('0x62'),_0x1cbb41['body']['type'][_0x8220('0x63')]()),_0x26c290);return respondWithRpcPromise(_0x8220('0x5c'),'create',{'module':_0x8220('0x64')});}return null;})[_0x8220('0x31')](function(){return _0xe92011;});})['then'](respondWithResult(_0x28cb46,0xc9))['catch'](handleError(_0x28cb46,null));};exports['update']=function(_0x3460ef,_0xfce760,_0x47ef88){var _0x39b8e4;return db[_0x8220('0x51')][_0x8220('0x52')](function(_0x508d70){return db['Network'][_0x8220('0x50')]({'where':{'id':_0x3460ef[_0x8220('0x65')]['id']}})['then'](handleEntityNotFound(_0xfce760,null))['then'](saveUpdates(_0x3460ef[_0x8220('0x54')],null))['then'](function(_0x4b5fe9){if(_0x4b5fe9){_0x39b8e4=_0x4b5fe9;return db[_0x8220('0x37')][_0x8220('0x4a')]({'where':{'type':_0x39b8e4[_0x8220('0x39')]},'raw':!![]});}return null;})['then'](function(_0x5cffa9){if(_0x39b8e4[_0x8220('0x39')]['toUpperCase']()==_0x8220('0x55')){var _0x25a9c3=fs['readFileSync'](path['join'](config[_0x8220('0x57')],_0x8220('0x58')),_0x8220('0x59'));var _0x466b57=ejs[_0x8220('0x5a')](_0x25a9c3,{'networks':_0x5cffa9||[]});fs[_0x8220('0x5b')](_0x8220('0x66'),_0x466b57);return respondWithRpcPromise(_0x8220('0x5c'),_0x8220('0x30'),{'module':_0x8220('0x61')});}else if(_0x39b8e4['type'][_0x8220('0x5d')]()==_0x8220('0x5e')){var _0x4ade4b=fs[_0x8220('0x56')](path[_0x8220('0x5f')](config[_0x8220('0x57')],'server/files/templates/turn_multiple.ejs'),_0x8220('0x59'));var _0x1331e9=ejs['render'](_0x4ade4b,{'networks':_0x5cffa9||[]});fs[_0x8220('0x5b')](_0x8220('0x60'),_0x1331e9);return respondWithRpcPromise(_0x8220('0x5c'),_0x8220('0x30'),{'module':_0x8220('0x61')});}else{var _0x38387c=fs[_0x8220('0x56')](path['join'](config[_0x8220('0x57')],_0x8220('0x67')),_0x8220('0x59'));var _0x2701c3=ejs[_0x8220('0x5a')](_0x38387c,{'networks':_0x5cffa9||[]});fs[_0x8220('0x5b')](util['format'](_0x8220('0x62'),_0x3460ef[_0x8220('0x54')][_0x8220('0x39')][_0x8220('0x63')]()),_0x2701c3);return respondWithRpcPromise(_0x8220('0x5c'),_0x8220('0x30'),{'module':_0x8220('0x64')});}return null;})[_0x8220('0x31')](function(_0x48c6bf){if(_0x48c6bf){return _0x39b8e4;}return null;});})[_0x8220('0x31')](respondWithResult(_0xfce760,null))['catch'](handleError(_0xfce760,null));};exports['destroy']=function(_0x1e25eb,_0x5e2da2,_0x2431d6){var _0x53b381;return db[_0x8220('0x37')]['find']({'where':{'id':_0x1e25eb[_0x8220('0x65')]['id']}})[_0x8220('0x31')](function(_0x12728c){_0x53b381=_0x12728c;return _0x12728c;})[_0x8220('0x31')](handleEntityNotFound(_0x5e2da2,null))['then'](removeEntity(_0x5e2da2,null))['then'](function(){if(_0x53b381){return db[_0x8220('0x37')][_0x8220('0x4a')]({'where':{'type':_0x53b381[_0x8220('0x39')]},'raw':!![]});}})[_0x8220('0x31')](function(_0x1fd4b7){if(_0x53b381[_0x8220('0x39')][_0x8220('0x5d')]()==_0x8220('0x55')){var _0x14615f=fs['readFileSync'](path[_0x8220('0x5f')](config[_0x8220('0x57')],_0x8220('0x58')),_0x8220('0x59'));var _0x25c28e=ejs[_0x8220('0x5a')](_0x14615f,{'networks':_0x1fd4b7||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x25c28e);return respondWithRpcPromise(_0x8220('0x5c'),'destroy',{'module':_0x8220('0x61')});}else if(_0x53b381[_0x8220('0x39')][_0x8220('0x5d')]()==_0x8220('0x5e')){var _0x121791=fs[_0x8220('0x56')](path[_0x8220('0x5f')](config[_0x8220('0x57')],'server/files/templates/turn_multiple.ejs'),_0x8220('0x59'));var _0x5609cb=ejs[_0x8220('0x5a')](_0x121791,{'networks':_0x1fd4b7||[]});fs['writeFileSync'](_0x8220('0x60'),_0x5609cb);return respondWithRpcPromise(_0x8220('0x5c'),'destroy',{'module':_0x8220('0x61')});}else{var _0x1d5b91=fs[_0x8220('0x56')](path[_0x8220('0x5f')](config['root'],_0x8220('0x67')),_0x8220('0x59'));var _0x3e7759=ejs[_0x8220('0x5a')](_0x1d5b91,{'networks':_0x1fd4b7||[]});fs['writeFileSync'](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x1e25eb[_0x8220('0x54')][_0x8220('0x39')]['toLowerCase']()),_0x3e7759);return respondWithRpcPromise(_0x8220('0x5c'),_0x8220('0x32'),{'module':_0x8220('0x64')});}return null;})[_0x8220('0x25')](handleError(_0x5e2da2,null));};
\ No newline at end of file
+var _0x4a77=['offset','limit','set','Content-Range','reject','save','update','stack','name','index','map','Network','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','show','params','include','sequelize','transaction','create','body','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','writeFileSync','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','STUN','TURN','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','undefined','count'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0x4a77,0x1ee));var _0x74a7=function(_0x26b9d0,_0x5c1549){_0x26b9d0=_0x26b9d0-0x0;var _0x495a45=_0x4a77[_0x26b9d0];return _0x495a45;};'use strict';var emlformat=require(_0x74a7('0x0'));var rimraf=require(_0x74a7('0x1'));var zipdir=require(_0x74a7('0x2'));var jsonpatch=require(_0x74a7('0x3'));var rp=require(_0x74a7('0x4'));var moment=require(_0x74a7('0x5'));var BPromise=require(_0x74a7('0x6'));var Mustache=require(_0x74a7('0x7'));var util=require('util');var path=require(_0x74a7('0x8'));var sox=require(_0x74a7('0x9'));var csv=require('to-csv');var ejs=require(_0x74a7('0xa'));var fs=require('fs');var fs_extra=require(_0x74a7('0xb'));var _=require(_0x74a7('0xc'));var squel=require(_0x74a7('0xd'));var crypto=require(_0x74a7('0xe'));var jsforce=require(_0x74a7('0xf'));var deskjs=require(_0x74a7('0x10'));var toCsv=require(_0x74a7('0x11'));var querystring=require(_0x74a7('0x12'));var Papa=require(_0x74a7('0x13'));var Redis=require(_0x74a7('0x14'));var authService=require(_0x74a7('0x15'));var qs=require(_0x74a7('0x16'));var as=require(_0x74a7('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x74a7('0x18'))(_0x74a7('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x74a7('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require(_0x74a7('0x1b'));var client=jayson[_0x74a7('0x1c')][_0x74a7('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x317f64,_0x27be54,_0x198192,_0x49a27b){return new BPromise(function(_0x5aa776,_0x153c36){var _0x1ed503=_0x49a27b||client;return _0x1ed503[_0x74a7('0x1e')](_0x317f64,_0x198192)[_0x74a7('0x1f')](function(_0x455e10){logger[_0x74a7('0x20')](_0x74a7('0x21'),_0x27be54,_0x74a7('0x22'));logger[_0x74a7('0x23')](_0x74a7('0x24'),_0x27be54,_0x74a7('0x22'),JSON['stringify'](_0x455e10));if(_0x455e10[_0x74a7('0x25')]){if(_0x455e10[_0x74a7('0x25')][_0x74a7('0x26')]===0x1f4){logger[_0x74a7('0x25')](_0x74a7('0x21'),_0x27be54,_0x455e10['error']['message']);return _0x153c36(_0x455e10[_0x74a7('0x25')][_0x74a7('0x27')]);}logger[_0x74a7('0x25')](_0x74a7('0x21'),_0x27be54,_0x455e10['error'][_0x74a7('0x27')]);return _0x5aa776(_0x455e10['error']['message']);}else{logger[_0x74a7('0x20')](_0x74a7('0x21'),_0x27be54,_0x74a7('0x22'));_0x5aa776(_0x455e10[_0x74a7('0x28')][_0x74a7('0x27')]);}})[_0x74a7('0x29')](function(_0x24a1e7){logger[_0x74a7('0x25')](_0x74a7('0x21'),_0x27be54,_0x24a1e7);_0x153c36(_0x24a1e7);});});}function respondWithStatusCode(_0xd463cb,_0x1f3418){_0x1f3418=_0x1f3418||0xcc;return function(_0x207c17){if(_0x207c17){return _0xd463cb[_0x74a7('0x2a')](_0x1f3418);}return _0xd463cb[_0x74a7('0x2b')](_0x1f3418)['end']();};}function respondWithResult(_0x493028,_0x1599dd){_0x1599dd=_0x1599dd||0xc8;return function(_0x486c1a){if(_0x486c1a){return _0x493028[_0x74a7('0x2b')](_0x1599dd)['json'](_0x486c1a);}};}function respondWithFilteredResult(_0x63555a,_0x3889cd){return function(_0x4866b8){if(_0x4866b8){var _0x59ed8b=typeof _0x3889cd['offset']===_0x74a7('0x2c')&&typeof _0x3889cd['limit']==='undefined';var _0x3a75f3=_0x4866b8[_0x74a7('0x2d')];var _0x5cf554=_0x59ed8b?0x0:_0x3889cd[_0x74a7('0x2e')];var _0x77aff=_0x59ed8b?_0x4866b8[_0x74a7('0x2d')]:_0x3889cd[_0x74a7('0x2e')]+_0x3889cd[_0x74a7('0x2f')];var _0x5409bf;if(_0x77aff>=_0x3a75f3){_0x77aff=_0x3a75f3;_0x5409bf=0xc8;}else{_0x5409bf=0xce;}_0x63555a['status'](_0x5409bf);return _0x63555a[_0x74a7('0x30')](_0x74a7('0x31'),_0x5cf554+'-'+_0x77aff+'/'+_0x3a75f3)['json'](_0x4866b8);}return null;};}function patchUpdates(_0x3ccce1){return function(_0x1a4703){try{jsonpatch['apply'](_0x1a4703,_0x3ccce1,!![]);}catch(_0x18ff81){return BPromise[_0x74a7('0x32')](_0x18ff81);}return _0x1a4703[_0x74a7('0x33')]();};}function saveUpdates(_0xa7757d,_0x397144){return function(_0x2b5f5e){if(_0x2b5f5e){return _0x2b5f5e[_0x74a7('0x34')](_0xa7757d)[_0x74a7('0x1f')](function(_0x73c369){return _0x73c369;});}return null;};}function removeEntity(_0x14f381,_0xc6b4f0){return function(_0x3695c8){if(_0x3695c8){return _0x3695c8['destroy']()['then'](function(){_0x14f381[_0x74a7('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51868e,_0x158f74){return function(_0x735177){if(!_0x735177){_0x51868e['sendStatus'](0x194);}return _0x735177;};}function handleError(_0x554c53,_0x94a5ca){_0x94a5ca=_0x94a5ca||0x1f4;return function(_0x58b9c0){logger['error'](_0x58b9c0[_0x74a7('0x35')]);if(_0x58b9c0['name']){delete _0x58b9c0[_0x74a7('0x36')];}_0x554c53[_0x74a7('0x2b')](_0x94a5ca)['send'](_0x58b9c0);};}exports[_0x74a7('0x37')]=function(_0x54cf85,_0x13291e){var _0x1430ba={},_0x5971cb={},_0x55579e={'count':0x0,'rows':[]};var _0x237f34=_[_0x74a7('0x38')](db[_0x74a7('0x39')][_0x74a7('0x3a')],function(_0x5dc926){return{'name':_0x5dc926[_0x74a7('0x3b')],'type':_0x5dc926[_0x74a7('0x3c')]['key']};});_0x5971cb[_0x74a7('0x3d')]=_[_0x74a7('0x38')](_0x237f34,_0x74a7('0x36'));_0x5971cb['query']=_[_0x74a7('0x3e')](_0x54cf85['query']);_0x5971cb[_0x74a7('0x3f')]=_[_0x74a7('0x40')](_0x5971cb['model'],_0x5971cb[_0x74a7('0x41')]);_0x1430ba[_0x74a7('0x42')]=_['intersection'](_0x5971cb[_0x74a7('0x3d')],qs[_0x74a7('0x43')](_0x54cf85[_0x74a7('0x41')]['fields']));_0x1430ba[_0x74a7('0x42')]=_0x1430ba['attributes'][_0x74a7('0x44')]?_0x1430ba['attributes']:_0x5971cb['model'];if(!_0x54cf85[_0x74a7('0x41')][_0x74a7('0x45')]('nolimit')){_0x1430ba[_0x74a7('0x2f')]=qs['limit'](_0x54cf85[_0x74a7('0x41')][_0x74a7('0x2f')]);_0x1430ba[_0x74a7('0x2e')]=qs[_0x74a7('0x2e')](_0x54cf85['query'][_0x74a7('0x2e')]);}_0x1430ba[_0x74a7('0x46')]=qs[_0x74a7('0x47')](_0x54cf85[_0x74a7('0x41')][_0x74a7('0x47')]);_0x1430ba['where']=qs[_0x74a7('0x3f')](_[_0x74a7('0x48')](_0x54cf85[_0x74a7('0x41')],_0x5971cb[_0x74a7('0x3f')]),_0x237f34);if(_0x54cf85['query'][_0x74a7('0x49')]){_0x1430ba[_0x74a7('0x4a')]=_[_0x74a7('0x4b')](_0x1430ba[_0x74a7('0x4a')],{'$or':_[_0x74a7('0x38')](_0x237f34,function(_0x21d122){if(_0x21d122[_0x74a7('0x3c')]!==_0x74a7('0x4c')){var _0x40e0b2={};_0x40e0b2[_0x21d122['name']]={'$like':'%'+_0x54cf85[_0x74a7('0x41')][_0x74a7('0x49')]+'%'};return _0x40e0b2;}})});}_0x1430ba=_[_0x74a7('0x4b')]({},_0x1430ba,_0x54cf85[_0x74a7('0x4d')]);var _0x45e15b={'where':_0x1430ba[_0x74a7('0x4a')]};return db[_0x74a7('0x39')][_0x74a7('0x2d')](_0x45e15b)['then'](function(_0x1f346f){_0x55579e[_0x74a7('0x2d')]=_0x1f346f;if(_0x54cf85[_0x74a7('0x41')][_0x74a7('0x4e')]){_0x1430ba['include']=[{'all':!![]}];}return db[_0x74a7('0x39')][_0x74a7('0x4f')](_0x1430ba);})[_0x74a7('0x1f')](function(_0x1b4304){_0x55579e['rows']=_0x1b4304;return _0x55579e;})['then'](respondWithFilteredResult(_0x13291e,_0x1430ba))[_0x74a7('0x29')](handleError(_0x13291e,null));};exports[_0x74a7('0x50')]=function(_0x384ee0,_0x3075a8){var _0x42be86={'raw':!![],'where':{'id':_0x384ee0[_0x74a7('0x51')]['id']}},_0x3203fa={};_0x3203fa[_0x74a7('0x3d')]=_['keys'](db[_0x74a7('0x39')][_0x74a7('0x3a')]);_0x3203fa['query']=_[_0x74a7('0x3e')](_0x384ee0[_0x74a7('0x41')]);_0x3203fa[_0x74a7('0x3f')]=_[_0x74a7('0x40')](_0x3203fa[_0x74a7('0x3d')],_0x3203fa[_0x74a7('0x41')]);_0x42be86[_0x74a7('0x42')]=_['intersection'](_0x3203fa[_0x74a7('0x3d')],qs[_0x74a7('0x43')](_0x384ee0['query'][_0x74a7('0x43')]));_0x42be86[_0x74a7('0x42')]=_0x42be86[_0x74a7('0x42')][_0x74a7('0x44')]?_0x42be86[_0x74a7('0x42')]:_0x3203fa['model'];if(_0x384ee0[_0x74a7('0x41')][_0x74a7('0x4e')]){_0x42be86[_0x74a7('0x52')]=[{'all':!![]}];}_0x42be86=_[_0x74a7('0x4b')]({},_0x42be86,_0x384ee0[_0x74a7('0x4d')]);return db[_0x74a7('0x39')]['find'](_0x42be86)[_0x74a7('0x1f')](handleEntityNotFound(_0x3075a8,null))[_0x74a7('0x1f')](respondWithResult(_0x3075a8,null))['catch'](handleError(_0x3075a8,null));};exports['create']=function(_0x2e10e9,_0x253a97,_0x59c4b1){var _0x4fef87;return db[_0x74a7('0x53')][_0x74a7('0x54')](function(_0x10193a){return db['Network'][_0x74a7('0x55')](_0x2e10e9['body'],{'raw':!![]})[_0x74a7('0x1f')](function(_0xa270cd){_0x4fef87=_0xa270cd;return db[_0x74a7('0x39')]['findAll']({'where':{'type':_0x2e10e9[_0x74a7('0x56')][_0x74a7('0x3c')]},'raw':!![]});})['then'](function(_0x1f93b9){if(_0x4fef87[_0x74a7('0x3c')][_0x74a7('0x57')]()=='STUN'){var _0x54aca8=fs[_0x74a7('0x58')](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],_0x74a7('0x5b')),_0x74a7('0x5c'));var _0x15fe2f=ejs[_0x74a7('0x5d')](_0x54aca8,{'networks':_0x1f93b9||[]});fs['writeFileSync'](_0x74a7('0x5e'),_0x15fe2f);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x55'),{'module':_0x74a7('0x60')});}else if(_0x4fef87[_0x74a7('0x3c')]['toUpperCase']()=='TURN'){var _0x1cd626=fs[_0x74a7('0x58')](path[_0x74a7('0x59')](config['root'],_0x74a7('0x61')),_0x74a7('0x5c'));var _0x18990f=ejs[_0x74a7('0x5d')](_0x1cd626,{'networks':_0x1f93b9||[]});fs['writeFileSync'](_0x74a7('0x62'),_0x18990f);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x55'),{'module':'res_stun_monitor.so'});}else{var _0x1f07db=fs['readFileSync'](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],_0x74a7('0x63')),'utf8');var _0xbda8ab=ejs['render'](_0x1f07db,{'networks':_0x1f93b9||[]});fs[_0x74a7('0x64')](util[_0x74a7('0x65')](_0x74a7('0x66'),_0x2e10e9['body'][_0x74a7('0x3c')][_0x74a7('0x67')]()),_0xbda8ab);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x55'),{'module':_0x74a7('0x68')});}return null;})[_0x74a7('0x1f')](function(){return _0x4fef87;});})[_0x74a7('0x1f')](respondWithResult(_0x253a97,0xc9))[_0x74a7('0x29')](handleError(_0x253a97,null));};exports[_0x74a7('0x34')]=function(_0x3fca2b,_0x540dbe,_0x4bfa14){var _0x44782a;return db[_0x74a7('0x53')][_0x74a7('0x54')](function(_0x4a2295){return db[_0x74a7('0x39')]['find']({'where':{'id':_0x3fca2b[_0x74a7('0x51')]['id']}})[_0x74a7('0x1f')](handleEntityNotFound(_0x540dbe,null))[_0x74a7('0x1f')](saveUpdates(_0x3fca2b[_0x74a7('0x56')],null))[_0x74a7('0x1f')](function(_0x17b20e){if(_0x17b20e){_0x44782a=_0x17b20e;return db['Network'][_0x74a7('0x4f')]({'where':{'type':_0x44782a[_0x74a7('0x3c')]},'raw':!![]});}return null;})[_0x74a7('0x1f')](function(_0x58b752){if(_0x44782a['type'][_0x74a7('0x57')]()==_0x74a7('0x69')){var _0x684aeb=fs[_0x74a7('0x58')](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],'server/files/templates/stun_multiple.ejs'),_0x74a7('0x5c'));var _0x3efa46=ejs[_0x74a7('0x5d')](_0x684aeb,{'networks':_0x58b752||[]});fs[_0x74a7('0x64')](_0x74a7('0x5e'),_0x3efa46);return respondWithRpcPromise(_0x74a7('0x5f'),'update',{'module':_0x74a7('0x60')});}else if(_0x44782a[_0x74a7('0x3c')][_0x74a7('0x57')]()==_0x74a7('0x6a')){var _0x50ef42=fs['readFileSync'](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],_0x74a7('0x61')),'utf8');var _0x2b47fa=ejs[_0x74a7('0x5d')](_0x50ef42,{'networks':_0x58b752||[]});fs['writeFileSync'](_0x74a7('0x62'),_0x2b47fa);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x34'),{'module':_0x74a7('0x60')});}else{var _0x33e82a=fs[_0x74a7('0x58')](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],_0x74a7('0x63')),_0x74a7('0x5c'));var _0x26567e=ejs[_0x74a7('0x5d')](_0x33e82a,{'networks':_0x58b752||[]});fs[_0x74a7('0x64')](util[_0x74a7('0x65')](_0x74a7('0x66'),_0x3fca2b[_0x74a7('0x56')][_0x74a7('0x3c')][_0x74a7('0x67')]()),_0x26567e);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x34'),{'module':_0x74a7('0x68')});}return null;})[_0x74a7('0x1f')](function(_0x204e95){if(_0x204e95){return _0x44782a;}return null;});})['then'](respondWithResult(_0x540dbe,null))[_0x74a7('0x29')](handleError(_0x540dbe,null));};exports['destroy']=function(_0x20068e,_0x512dde,_0x1a78d4){var _0xbc78d0;return db['Network']['find']({'where':{'id':_0x20068e[_0x74a7('0x51')]['id']}})['then'](function(_0x585c37){_0xbc78d0=_0x585c37;return _0x585c37;})[_0x74a7('0x1f')](handleEntityNotFound(_0x512dde,null))[_0x74a7('0x1f')](removeEntity(_0x512dde,null))[_0x74a7('0x1f')](function(){if(_0xbc78d0){return db[_0x74a7('0x39')][_0x74a7('0x4f')]({'where':{'type':_0xbc78d0[_0x74a7('0x3c')]},'raw':!![]});}})[_0x74a7('0x1f')](function(_0x253bd4){if(_0xbc78d0['type'][_0x74a7('0x57')]()=='STUN'){var _0x35cc00=fs['readFileSync'](path['join'](config['root'],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x37ca95=ejs[_0x74a7('0x5d')](_0x35cc00,{'networks':_0x253bd4||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x37ca95);return respondWithRpcPromise(_0x74a7('0x5f'),'destroy',{'module':_0x74a7('0x60')});}else if(_0xbc78d0['type'][_0x74a7('0x57')]()==_0x74a7('0x6a')){var _0x53d12c=fs[_0x74a7('0x58')](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],_0x74a7('0x61')),_0x74a7('0x5c'));var _0x19bc07=ejs['render'](_0x53d12c,{'networks':_0x253bd4||[]});fs[_0x74a7('0x64')](_0x74a7('0x62'),_0x19bc07);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x6b'),{'module':_0x74a7('0x60')});}else{var _0x1c0287=fs['readFileSync'](path[_0x74a7('0x59')](config[_0x74a7('0x5a')],_0x74a7('0x63')),_0x74a7('0x5c'));var _0x1958b9=ejs['render'](_0x1c0287,{'networks':_0x253bd4||[]});fs[_0x74a7('0x64')](util[_0x74a7('0x65')](_0x74a7('0x66'),_0x20068e[_0x74a7('0x56')][_0x74a7('0x3c')][_0x74a7('0x67')]()),_0x1958b9);return respondWithRpcPromise(_0x74a7('0x5f'),_0x74a7('0x6b'),{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x512dde,null));};
\ No newline at end of file
index eb32c62..3d1a833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x131e=['request-promise','path','rimraf','./network.attributes','exports','define','api','moment','bluebird'];(function(_0x1d128e,_0x2c87de){var _0x3d5236=function(_0x2374ff){while(--_0x2374ff){_0x1d128e['push'](_0x1d128e['shift']());}};_0x3d5236(++_0x2c87de);}(_0x131e,0x1ec));var _0xe131=function(_0x5ac0e3,_0x454a04){_0x5ac0e3=_0x5ac0e3-0x0;var _0x302ae4=_0x131e[_0x5ac0e3];return _0x302ae4;};'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
+var _0x2f3a=['api','moment','bluebird','request-promise','path','rimraf','./network.attributes','network','lodash'];(function(_0x453016,_0x2bd244){var _0x3352f5=function(_0x2fff89){while(--_0x2fff89){_0x453016['push'](_0x453016['shift']());}};_0x3352f5(++_0x2bd244);}(_0x2f3a,0xfb));var _0xa2f3=function(_0x49b9b5,_0x2586cb){_0x49b9b5=_0x49b9b5-0x0;var _0x41194e=_0x2f3a[_0x49b9b5];return _0x41194e;};'use strict';var _=require(_0xa2f3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa2f3('0x1'));var moment=require(_0xa2f3('0x2'));var BPromise=require(_0xa2f3('0x3'));var rp=require(_0xa2f3('0x4'));var fs=require('fs');var path=require(_0xa2f3('0x5'));var rimraf=require(_0xa2f3('0x6'));var config=require('../../config/environment');var attributes=require(_0xa2f3('0x7'));module['exports']=function(_0xfe0b09,_0x1ddec0){return _0xfe0b09['define']('Network',attributes,{'tableName':_0xa2f3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7fbf39d..2d005d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x22cedb,_0x4a75e9){_0x22cedb=_0x22cedb-0x0;var _0x54cacf=_0x7a54[_0x22cedb];return _0x54cacf;};'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
+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(_0x5d2045,_0x4e82b4){var _0x201423=function(_0x2493b7){while(--_0x2493b7){_0x5d2045['push'](_0x5d2045['shift']());}};_0x201423(++_0x4e82b4);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'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
index 2a8253c..5fde547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x448b=['index','/describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated'];(function(_0x56ef7e,_0x2b8f7e){var _0x1f323e=function(_0x5219e0){while(--_0x5219e0){_0x56ef7e['push'](_0x56ef7e['shift']());}};_0x1f323e(++_0x2b8f7e);}(_0x448b,0x136));var _0xb448=function(_0xcf0f27,_0xfa37c6){_0xcf0f27=_0xcf0f27-0x0;var _0x2267d9=_0x448b[_0xcf0f27];return _0x2267d9;};'use strict';var multer=require(_0xb448('0x0'));var util=require(_0xb448('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb448('0x2'));var router=express['Router']();var fs_extra=require(_0xb448('0x3'));var auth=require(_0xb448('0x4'));var interaction=require(_0xb448('0x5'));var config=require(_0xb448('0x6'));var controller=require(_0xb448('0x7'));router[_0xb448('0x8')]('/',auth[_0xb448('0x9')](),controller[_0xb448('0xa')]);router[_0xb448('0x8')](_0xb448('0xb'),auth[_0xb448('0x9')](),controller['describe']);router['get'](_0xb448('0xc'),auth['isAuthenticated'](),controller[_0xb448('0xd')]);router['get']('/:id/dispositions',auth[_0xb448('0x9')](),controller[_0xb448('0xe')]);router[_0xb448('0x8')](_0xb448('0xf'),auth['isAuthenticated'](),controller[_0xb448('0x10')]);router['get'](_0xb448('0x11'),auth[_0xb448('0x9')](),controller[_0xb448('0x12')]);router['get']('/:id/interactions',auth[_0xb448('0x9')](),controller[_0xb448('0x13')]);router['get'](_0xb448('0x14'),auth['isAuthenticated'](),controller[_0xb448('0x15')]);router[_0xb448('0x16')]('/',auth[_0xb448('0x9')](),controller[_0xb448('0x17')]);router[_0xb448('0x16')](_0xb448('0x18'),auth[_0xb448('0x9')](),controller['addDisposition']);router[_0xb448('0x16')]('/:id/canned_answers',auth[_0xb448('0x9')](),controller[_0xb448('0x19')]);router[_0xb448('0x16')](_0xb448('0x1a'),controller[_0xb448('0x1b')]);router[_0xb448('0x16')](_0xb448('0x11'),auth[_0xb448('0x9')](),controller[_0xb448('0x1c')]);router['post'](_0xb448('0x14'),auth[_0xb448('0x9')](),controller[_0xb448('0x1d')]);router[_0xb448('0x16')](_0xb448('0x1e'),auth['isAuthenticated'](),controller[_0xb448('0x1f')]);router[_0xb448('0x20')](_0xb448('0xc'),auth[_0xb448('0x9')](),controller[_0xb448('0x21')]);router[_0xb448('0x22')](_0xb448('0xc'),auth[_0xb448('0x9')](),controller[_0xb448('0x23')]);router[_0xb448('0x22')]('/:id/dispositions',auth[_0xb448('0x9')](),controller[_0xb448('0x24')]);router[_0xb448('0x22')](_0xb448('0xf'),auth[_0xb448('0x9')](),controller[_0xb448('0x25')]);router[_0xb448('0x22')](_0xb448('0x14'),auth[_0xb448('0x9')](),controller[_0xb448('0x26')]);module[_0xb448('0x27')]=router;
\ No newline at end of file
+var _0x1640=['../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','/:id','show','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','post','create','/:id/dispositions','/:id/canned_answers','addAnswer','/:id/notify','addApplications','/:id/users','addAgents','/:id/send','put','update','destroy','delete','removeAnswers','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1640,0x19c));var _0x0164=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x1640[_0x51020b];return _0x371e47;};'use strict';var multer=require(_0x0164('0x0'));var util=require(_0x0164('0x1'));var path=require(_0x0164('0x2'));var timeout=require(_0x0164('0x3'));var express=require(_0x0164('0x4'));var router=express['Router']();var fs_extra=require(_0x0164('0x5'));var auth=require(_0x0164('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0164('0x7'));var controller=require(_0x0164('0x8'));router[_0x0164('0x9')]('/',auth[_0x0164('0xa')](),controller[_0x0164('0xb')]);router[_0x0164('0x9')](_0x0164('0xc'),auth[_0x0164('0xa')](),controller['describe']);router[_0x0164('0x9')](_0x0164('0xd'),auth[_0x0164('0xa')](),controller[_0x0164('0xe')]);router['get']('/:id/dispositions',auth[_0x0164('0xa')](),controller[_0x0164('0xf')]);router[_0x0164('0x9')]('/:id/canned_answers',auth[_0x0164('0xa')](),controller[_0x0164('0x10')]);router['get'](_0x0164('0x11'),auth['isAuthenticated'](),controller[_0x0164('0x12')]);router[_0x0164('0x9')](_0x0164('0x13'),auth[_0x0164('0xa')](),controller[_0x0164('0x14')]);router[_0x0164('0x9')]('/:id/users',auth[_0x0164('0xa')](),controller[_0x0164('0x15')]);router[_0x0164('0x16')]('/',auth[_0x0164('0xa')](),controller[_0x0164('0x17')]);router[_0x0164('0x16')](_0x0164('0x18'),auth[_0x0164('0xa')](),controller['addDisposition']);router[_0x0164('0x16')](_0x0164('0x19'),auth[_0x0164('0xa')](),controller[_0x0164('0x1a')]);router[_0x0164('0x16')](_0x0164('0x1b'),controller['notify']);router[_0x0164('0x16')](_0x0164('0x11'),auth['isAuthenticated'](),controller[_0x0164('0x1c')]);router[_0x0164('0x16')](_0x0164('0x1d'),auth[_0x0164('0xa')](),controller[_0x0164('0x1e')]);router[_0x0164('0x16')](_0x0164('0x1f'),auth[_0x0164('0xa')](),controller['send']);router[_0x0164('0x20')]('/:id',auth[_0x0164('0xa')](),controller[_0x0164('0x21')]);router['delete'](_0x0164('0xd'),auth[_0x0164('0xa')](),controller[_0x0164('0x22')]);router[_0x0164('0x23')](_0x0164('0x18'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x0164('0x23')](_0x0164('0x19'),auth[_0x0164('0xa')](),controller[_0x0164('0x24')]);router['delete'](_0x0164('0x1d'),auth[_0x0164('0xa')](),controller['removeAgents']);module[_0x0164('0x25')]=router;
\ No newline at end of file
index f9cd376..71333ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe521=['sequelize','randomstring','exports','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition'];(function(_0x59c54d,_0x5662c0){var _0x367e3a=function(_0x27ca55){while(--_0x27ca55){_0x59c54d['push'](_0x59c54d['shift']());}};_0x367e3a(++_0x5662c0);}(_0xe521,0xea));var _0x1e52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe521[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x1e52('0x0'));var rs=require(_0x1e52('0x1'));module[_0x1e52('0x2')]={'name':{'type':Sequelize[_0x1e52('0x3')],'unique':_0x1e52('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x1e52('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x1e52('0x5')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x1e52('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x1e52('0x6')],'defaultValue':function(){return _0x1e52('0x7');}},'notificationSound':{'type':Sequelize[_0x1e52('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x1e52('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x1e52('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x1e52('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x1e52('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x1e52('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x1e52('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x1e52('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2bd969){if(!_0x2bd969)this[_0x1e52('0xb')]('mandatoryDispositionPauseId',null);this[_0x1e52('0xb')](_0x1e52('0xc'),_0x2bd969);}}};
\ No newline at end of file
+var _0x7424=['mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','generate','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x596f6e,_0x3f8857){var _0x1e0803=function(_0x31f91f){while(--_0x31f91f){_0x596f6e['push'](_0x596f6e['shift']());}};_0x1e0803(++_0x3f8857);}(_0x7424,0x155));var _0x4742=function(_0xe2595b,_0x142f12){_0xe2595b=_0xe2595b-0x0;var _0x340bca=_0x7424[_0xe2595b];return _0x340bca;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x4742('0x0'));module[_0x4742('0x1')]={'name':{'type':Sequelize[_0x4742('0x2')],'unique':_0x4742('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x4742('0x2')]},'token':{'type':Sequelize[_0x4742('0x2')],'defaultValue':function(){return rs[_0x4742('0x4')]();}},'replyUri':{'type':Sequelize[_0x4742('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x4742('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x4742('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4742('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4742('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x4742('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4742('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4742('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4742('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x4742('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x4742('0x6')],'defaultValue':![],'comment':_0x4742('0x9'),'set':function(_0x4e647a){if(!_0x4e647a)this['setDataValue'](_0x4742('0xa'),null);this[_0x4742('0xb')](_0x4742('0xc'),_0x4e647a);}}};
\ No newline at end of file
index 1367aae..8b94d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75c1=['from','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','contact','messageId','created','interaction','autoclose','push','close','unmanaged','UserId','User','unshift','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','OpenchannelApplication','findAndCountAll','getApplications','getInteractions','Owner','fullname','Tag','Tags','tag','addAgents','ids','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','defaults','OpenchannelMessage','Messages','dataValues','eml-format','rimraf','fast-json-patch','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/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','json','offset','undefined','count','status','set','apply','reject','update','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','keys','includeAll','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','OpenchannelAccountId','Disposition','create','pick','removeDispositions','addAnswer','CannedAnswer','findOne','removeAnswers','openchannel','Sequelize','ValidationError','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','DESC','Applications','List','account','applications','list','orderBy','priority','Contacts'];(function(_0x12f89e,_0x1d912e){var _0x3706a6=function(_0x224526){while(--_0x224526){_0x12f89e['push'](_0x12f89e['shift']());}};_0x3706a6(++_0x1d912e);}(_0x75c1,0xed));var _0x175c=function(_0x2ed2f5,_0x44fd88){_0x2ed2f5=_0x2ed2f5-0x0;var _0x912d42=_0x75c1[_0x2ed2f5];return _0x912d42;};'use strict';var emlformat=require(_0x175c('0x0'));var rimraf=require(_0x175c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x175c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x175c('0x3'));var Mustache=require(_0x175c('0x4'));var util=require(_0x175c('0x5'));var path=require(_0x175c('0x6'));var sox=require(_0x175c('0x7'));var csv=require(_0x175c('0x8'));var ejs=require(_0x175c('0x9'));var fs=require('fs');var fs_extra=require(_0x175c('0xa'));var _=require(_0x175c('0xb'));var squel=require(_0x175c('0xc'));var crypto=require(_0x175c('0xd'));var jsforce=require(_0x175c('0xe'));var deskjs=require(_0x175c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x175c('0x10'));var Papa=require(_0x175c('0x11'));var Redis=require(_0x175c('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x175c('0x13'));var hardwareService=require(_0x175c('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x175c('0x15'));var config=require(_0x175c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x175c('0x17'))['db'];config[_0x175c('0x18')]=_['defaults'](config['redis'],{'host':_0x175c('0x19'),'port':0x18eb});var socket=require(_0x175c('0x1a'))(new Redis(config[_0x175c('0x18')]));require(_0x175c('0x1b'))[_0x175c('0x1c')](socket);var jayson=require(_0x175c('0x1d'));var client=jayson[_0x175c('0x1e')][_0x175c('0x1f')]({'port':0x232c});var client9002=jayson[_0x175c('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c8852,_0x3f60e7,_0x3eccc3,_0x56537a){return new BPromise(function(_0x486ea5,_0x15a373){var _0x208b7e=_0x56537a||client;return _0x208b7e[_0x175c('0x20')](_0x3c8852,_0x3eccc3)[_0x175c('0x21')](function(_0x1bc656){logger[_0x175c('0x22')](_0x175c('0x23'),_0x3f60e7,_0x175c('0x24'));logger[_0x175c('0x25')](_0x175c('0x26'),_0x3f60e7,_0x175c('0x24'),JSON[_0x175c('0x27')](_0x1bc656));if(_0x1bc656[_0x175c('0x28')]){if(_0x1bc656[_0x175c('0x28')][_0x175c('0x29')]===0x1f4){logger[_0x175c('0x28')](_0x175c('0x23'),_0x3f60e7,_0x1bc656[_0x175c('0x28')][_0x175c('0x2a')]);return _0x15a373(_0x1bc656[_0x175c('0x28')][_0x175c('0x2a')]);}logger[_0x175c('0x28')]('OpenchannelAccount,\x20%s,\x20%s',_0x3f60e7,_0x1bc656[_0x175c('0x28')][_0x175c('0x2a')]);return _0x486ea5(_0x1bc656['error'][_0x175c('0x2a')]);}else{logger[_0x175c('0x22')](_0x175c('0x23'),_0x3f60e7,_0x175c('0x24'));_0x486ea5(_0x1bc656[_0x175c('0x2b')][_0x175c('0x2a')]);}})[_0x175c('0x2c')](function(_0x30d1fb){logger[_0x175c('0x28')](_0x175c('0x23'),_0x3f60e7,_0x30d1fb);_0x15a373(_0x30d1fb);});});}function respondWithStatusCode(_0x227896,_0x8406ce){_0x8406ce=_0x8406ce||0xcc;return function(_0x985588){if(_0x985588){return _0x227896[_0x175c('0x2d')](_0x8406ce);}return _0x227896['status'](_0x8406ce)[_0x175c('0x2e')]();};}function respondWithResult(_0x110f8c,_0x4eda83){_0x4eda83=_0x4eda83||0xc8;return function(_0x58e9e0){if(_0x58e9e0){return _0x110f8c['status'](_0x4eda83)[_0x175c('0x2f')](_0x58e9e0);}};}function respondWithFilteredResult(_0x41a3d1,_0x38cac2){return function(_0x43ce75){if(_0x43ce75){var _0x33dfbb=typeof _0x38cac2[_0x175c('0x30')]===_0x175c('0x31')&&typeof _0x38cac2['limit']===_0x175c('0x31');var _0x1533bb=_0x43ce75[_0x175c('0x32')];var _0x91914b=_0x33dfbb?0x0:_0x38cac2[_0x175c('0x30')];var _0x41de0d=_0x33dfbb?_0x43ce75[_0x175c('0x32')]:_0x38cac2[_0x175c('0x30')]+_0x38cac2['limit'];var _0x19d665;if(_0x41de0d>=_0x1533bb){_0x41de0d=_0x1533bb;_0x19d665=0xc8;}else{_0x19d665=0xce;}_0x41a3d1[_0x175c('0x33')](_0x19d665);return _0x41a3d1[_0x175c('0x34')]('Content-Range',_0x91914b+'-'+_0x41de0d+'/'+_0x1533bb)[_0x175c('0x2f')](_0x43ce75);}return null;};}function patchUpdates(_0x5eb576){return function(_0x3d41f6){try{jsonpatch[_0x175c('0x35')](_0x3d41f6,_0x5eb576,!![]);}catch(_0x9a28e6){return BPromise[_0x175c('0x36')](_0x9a28e6);}return _0x3d41f6['save']();};}function saveUpdates(_0x964641,_0x40af7c){return function(_0x4ac1ca){if(_0x4ac1ca){return _0x4ac1ca[_0x175c('0x37')](_0x964641)[_0x175c('0x21')](function(_0x584bc9){return _0x584bc9;});}return null;};}function removeEntity(_0x399ac2,_0xe0928){return function(_0x36cb7d){if(_0x36cb7d){return _0x36cb7d[_0x175c('0x38')]()['then'](function(){var _0x15df08=_0x36cb7d[_0x175c('0x39')]({'plain':!![]});var _0xa885ac=_0x175c('0x3a');return db[_0x175c('0x3b')][_0x175c('0x38')]({'where':{'type':_0xa885ac,'resourceId':_0x15df08['id']}})[_0x175c('0x21')](function(){return _0x36cb7d;});})[_0x175c('0x21')](function(){_0x399ac2['status'](0xcc)[_0x175c('0x2e')]();});}};}function handleEntityNotFound(_0x325142,_0xe9ff45){return function(_0xad5c4e){if(!_0xad5c4e){_0x325142[_0x175c('0x2d')](0x194);}return _0xad5c4e;};}function handleError(_0xff599b,_0x2fe106){_0x2fe106=_0x2fe106||0x1f4;return function(_0x22a2d3){logger[_0x175c('0x28')](_0x22a2d3[_0x175c('0x3c')]);if(_0x22a2d3[_0x175c('0x3d')]){delete _0x22a2d3[_0x175c('0x3d')];}_0xff599b[_0x175c('0x33')](_0x2fe106)[_0x175c('0x3e')](_0x22a2d3);};}exports[_0x175c('0x3f')]=function(_0x578a2c,_0x1af0d4){var _0x438682={'include':[{'model':db[_0x175c('0x40')],'as':_0x175c('0x41')}]},_0x40799d={},_0x3a7b76={'count':0x0,'rows':[]};var _0x478af5=_[_0x175c('0x42')](db[_0x175c('0x43')][_0x175c('0x44')],function(_0x57c2a7){return{'name':_0x57c2a7[_0x175c('0x45')],'type':_0x57c2a7[_0x175c('0x46')]['key']};});_0x40799d[_0x175c('0x47')]=_[_0x175c('0x42')](_0x478af5,'name');_0x40799d['query']=_['keys'](_0x578a2c[_0x175c('0x48')]);_0x40799d['filters']=_[_0x175c('0x49')](_0x40799d[_0x175c('0x47')],_0x40799d[_0x175c('0x48')]);_0x438682[_0x175c('0x4a')]=_[_0x175c('0x49')](_0x40799d[_0x175c('0x47')],qs[_0x175c('0x4b')](_0x578a2c[_0x175c('0x48')]['fields']));_0x438682[_0x175c('0x4a')]=_0x438682['attributes'][_0x175c('0x4c')]?_0x438682[_0x175c('0x4a')]:_0x40799d[_0x175c('0x47')];if(!_0x578a2c[_0x175c('0x48')][_0x175c('0x4d')](_0x175c('0x4e'))){_0x438682['limit']=qs[_0x175c('0x4f')](_0x578a2c[_0x175c('0x48')][_0x175c('0x4f')]);_0x438682[_0x175c('0x30')]=qs[_0x175c('0x30')](_0x578a2c[_0x175c('0x48')][_0x175c('0x30')]);}_0x438682[_0x175c('0x50')]=qs[_0x175c('0x51')](_0x578a2c[_0x175c('0x48')][_0x175c('0x51')]);_0x438682[_0x175c('0x52')]=qs[_0x175c('0x53')](_['pick'](_0x578a2c[_0x175c('0x48')],_0x40799d[_0x175c('0x53')]),_0x478af5);if(_0x578a2c[_0x175c('0x48')][_0x175c('0x54')]){_0x438682[_0x175c('0x52')]=_[_0x175c('0x55')](_0x438682['where'],{'$or':_['map'](_0x478af5,function(_0x1930c6){if(_0x1930c6['type']!==_0x175c('0x56')){var _0x1ff336={};_0x1ff336[_0x1930c6[_0x175c('0x3d')]]={'$like':'%'+_0x578a2c[_0x175c('0x48')]['filter']+'%'};return _0x1ff336;}})});}_0x438682=_[_0x175c('0x55')]({},_0x438682,_0x578a2c[_0x175c('0x57')]);var _0x299bd0={'where':_0x438682[_0x175c('0x52')]};return db[_0x175c('0x43')][_0x175c('0x32')](_0x299bd0)['then'](function(_0x44cc73){_0x3a7b76[_0x175c('0x32')]=_0x44cc73;if(_0x578a2c['query']['includeAll']){_0x438682[_0x175c('0x58')]=[{'all':!![]}];}return db[_0x175c('0x43')][_0x175c('0x59')](_0x438682);})[_0x175c('0x21')](function(_0x1ac1f3){_0x3a7b76[_0x175c('0x5a')]=_0x1ac1f3;return _0x3a7b76;})['then'](respondWithFilteredResult(_0x1af0d4,_0x438682))[_0x175c('0x2c')](handleError(_0x1af0d4,null));};exports[_0x175c('0x5b')]=function(_0x149373,_0x498704){var _0x4afcba={'raw':![],'where':{'id':_0x149373[_0x175c('0x5c')]['id']},'include':[{'model':db[_0x175c('0x40')],'as':_0x175c('0x41')}]},_0x277646={};_0x277646[_0x175c('0x47')]=_[_0x175c('0x5d')](db[_0x175c('0x43')][_0x175c('0x44')]);_0x277646[_0x175c('0x48')]=_['keys'](_0x149373[_0x175c('0x48')]);_0x277646['filters']=_['intersection'](_0x277646[_0x175c('0x47')],_0x277646[_0x175c('0x48')]);_0x4afcba['attributes']=_['intersection'](_0x277646[_0x175c('0x47')],qs['fields'](_0x149373[_0x175c('0x48')]['fields']));_0x4afcba[_0x175c('0x4a')]=_0x4afcba[_0x175c('0x4a')][_0x175c('0x4c')]?_0x4afcba[_0x175c('0x4a')]:_0x277646[_0x175c('0x47')];if(_0x149373[_0x175c('0x48')][_0x175c('0x5e')]){_0x4afcba['include']=[{'all':!![]}];}_0x4afcba=_[_0x175c('0x55')]({},_0x4afcba,_0x149373[_0x175c('0x57')]);return db['OpenchannelAccount']['find'](_0x4afcba)[_0x175c('0x21')](handleEntityNotFound(_0x498704,null))[_0x175c('0x21')](respondWithResult(_0x498704,null))['catch'](handleError(_0x498704,null));};exports['create']=function(_0xa74e43,_0x89db9c){return db['OpenchannelAccount']['create'](_0xa74e43[_0x175c('0x5f')],{})[_0x175c('0x21')](function(_0x213cae){var _0x37f8cf=_0xa74e43['user']['get']({'plain':!![]});if(!_0x37f8cf)throw new Error(_0x175c('0x60'));if(_0x37f8cf[_0x175c('0x61')]===_0x175c('0x62')){var _0x1e0891=_0x213cae[_0x175c('0x39')]({'plain':!![]});var _0xb1dde7=_0x175c('0x3a');return db[_0x175c('0x63')][_0x175c('0x64')]({'where':{'name':_0xb1dde7,'userProfileId':_0x37f8cf[_0x175c('0x65')]},'raw':!![]})[_0x175c('0x21')](function(_0x47bdfb){if(_0x47bdfb&&_0x47bdfb[_0x175c('0x66')]===0x0){return db['UserProfileResource']['create']({'name':_0x1e0891[_0x175c('0x3d')],'resourceId':_0x1e0891['id'],'type':_0x47bdfb['name'],'sectionId':_0x47bdfb['id']},{})['then'](function(){return _0x213cae;});}else{return _0x213cae;}})[_0x175c('0x2c')](function(_0x389e8d){logger[_0x175c('0x28')](_0x175c('0x67'),_0x389e8d);throw _0x389e8d;});}return _0x213cae;})[_0x175c('0x21')](respondWithResult(_0x89db9c,0xc9))['catch'](handleError(_0x89db9c,null));};exports[_0x175c('0x37')]=function(_0x4a0de5,_0x1f8555){if(_0x4a0de5['body']['id']){delete _0x4a0de5['body']['id'];}return db['OpenchannelAccount'][_0x175c('0x64')]({'where':{'id':_0x4a0de5[_0x175c('0x5c')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x1f8555,null))[_0x175c('0x21')](saveUpdates(_0x4a0de5[_0x175c('0x5f')],null))[_0x175c('0x21')](respondWithResult(_0x1f8555,null))[_0x175c('0x2c')](handleError(_0x1f8555,null));};exports[_0x175c('0x38')]=function(_0x1d7444,_0x5e7a78){return db['OpenchannelAccount'][_0x175c('0x64')]({'where':{'id':_0x1d7444[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x5e7a78,null))[_0x175c('0x21')](removeEntity(_0x5e7a78,null))['catch'](handleError(_0x5e7a78,null));};exports[_0x175c('0x68')]=function(_0x1b04fb,_0x3271ae){return db[_0x175c('0x43')][_0x175c('0x68')]()[_0x175c('0x21')](respondWithResult(_0x3271ae,null))[_0x175c('0x2c')](handleError(_0x3271ae,null));};exports['addDisposition']=function(_0x514238,_0x463a9d,_0x4ff662){if(_0x514238[_0x175c('0x5f')]['id']){delete _0x514238['body']['id'];}return db[_0x175c('0x43')][_0x175c('0x64')]({'where':{'id':_0x514238[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x463a9d,null))[_0x175c('0x21')](function(_0x70ee34){if(_0x70ee34){_0x514238[_0x175c('0x5f')][_0x175c('0x69')]=_0x70ee34['id'];return db[_0x175c('0x6a')][_0x175c('0x6b')](_0x514238[_0x175c('0x5f')]);}})[_0x175c('0x21')](respondWithResult(_0x463a9d,null))[_0x175c('0x2c')](handleError(_0x463a9d,null));};exports['getDispositions']=function(_0xf60ca1,_0x17184e,_0x4e78dc){var _0x5652ac={'raw':![],'where':{}};var _0x5b28e0={};var _0xcd52e3={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0xf60ca1[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x17184e,null))[_0x175c('0x21')](function(_0x4704e0){if(_0x4704e0){_0x5b28e0['model']=_['keys'](db['Disposition']['rawAttributes']);_0x5b28e0[_0x175c('0x48')]=_['keys'](_0xf60ca1['query']);_0x5b28e0['filters']=_['intersection'](_0x5b28e0['model'],_0x5b28e0[_0x175c('0x48')]);_0x5652ac[_0x175c('0x4a')]=_[_0x175c('0x49')](_0x5b28e0[_0x175c('0x47')],qs[_0x175c('0x4b')](_0xf60ca1['query']['fields']));_0x5652ac[_0x175c('0x4a')]=_0x5652ac[_0x175c('0x4a')][_0x175c('0x4c')]?_0x5652ac[_0x175c('0x4a')]:_0x5b28e0[_0x175c('0x47')];if(!_0xf60ca1['query']['hasOwnProperty'](_0x175c('0x4e'))){_0x5652ac[_0x175c('0x4f')]=qs[_0x175c('0x4f')](_0xf60ca1[_0x175c('0x48')][_0x175c('0x4f')]);_0x5652ac[_0x175c('0x30')]=qs[_0x175c('0x30')](_0xf60ca1['query'][_0x175c('0x30')]);}_0x5652ac[_0x175c('0x50')]=qs['sort'](_0xf60ca1[_0x175c('0x48')][_0x175c('0x51')]);_0x5652ac[_0x175c('0x52')]=qs[_0x175c('0x53')](_[_0x175c('0x6c')](_0xf60ca1[_0x175c('0x48')],_0x5b28e0[_0x175c('0x53')]));_0x5652ac[_0x175c('0x52')][_0x175c('0x69')]=_0x4704e0['id'];if(_0xf60ca1[_0x175c('0x48')][_0x175c('0x54')]){_0x5652ac[_0x175c('0x52')]=_[_0x175c('0x55')](_0x5652ac['where'],{'$or':_['map'](_0x5652ac['attributes'],function(_0x174d6f){var _0x3e384c={};_0x3e384c[_0x174d6f]={'$like':'%'+_0xf60ca1[_0x175c('0x48')]['filter']+'%'};return _0x3e384c;})});}_0x5652ac=_[_0x175c('0x55')]({},_0x5652ac,_0xf60ca1[_0x175c('0x57')]);return db[_0x175c('0x6a')][_0x175c('0x32')]({'where':_0x5652ac['where']})[_0x175c('0x21')](function(_0x402b89){_0xcd52e3[_0x175c('0x32')]=_0x402b89;if(_0xf60ca1[_0x175c('0x48')][_0x175c('0x5e')]){_0x5652ac['include']=[{'all':!![]}];}return db[_0x175c('0x6a')]['findAll'](_0x5652ac);})[_0x175c('0x21')](function(_0x1f0d9){_0xcd52e3[_0x175c('0x5a')]=_0x1f0d9;return _0xcd52e3;});}})['then'](respondWithFilteredResult(_0x17184e,_0x5652ac))[_0x175c('0x2c')](handleError(_0x17184e,null));};exports['removeDispositions']=function(_0x5d3ff0,_0xccf280,_0x359895){return db[_0x175c('0x43')][_0x175c('0x64')]({'where':{'id':_0x5d3ff0[_0x175c('0x5c')]['id']}})['then'](handleEntityNotFound(_0xccf280,null))['then'](function(_0x2a4743){if(_0x2a4743){return _0x2a4743[_0x175c('0x6d')](_0x5d3ff0[_0x175c('0x48')]['ids']);}})['then'](respondWithStatusCode(_0xccf280,null))[_0x175c('0x2c')](handleError(_0xccf280,null));};exports[_0x175c('0x6e')]=function(_0x5379b5,_0x2ee917,_0x32c3d8){if(_0x5379b5[_0x175c('0x5f')]['id']){delete _0x5379b5[_0x175c('0x5f')]['id'];}return db['OpenchannelAccount'][_0x175c('0x64')]({'where':{'id':_0x5379b5[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x2ee917,null))[_0x175c('0x21')](function(_0xdfbb77){if(_0xdfbb77){_0x5379b5['body'][_0x175c('0x69')]=_0xdfbb77['id'];return db[_0x175c('0x6f')]['create'](_0x5379b5[_0x175c('0x5f')]);}})['then'](respondWithResult(_0x2ee917,null))[_0x175c('0x2c')](handleError(_0x2ee917,null));};exports['getAnswers']=function(_0x454eb0,_0x269f07,_0x353d51){var _0x3e6c0a={'raw':![],'where':{}};var _0x254f3c={};var _0x4508ef={'count':0x0,'rows':[]};return db[_0x175c('0x43')][_0x175c('0x70')]({'where':{'id':_0x454eb0[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x269f07,null))[_0x175c('0x21')](function(_0x33c3b9){if(_0x33c3b9){_0x254f3c['model']=_[_0x175c('0x5d')](db['CannedAnswer'][_0x175c('0x44')]);_0x254f3c[_0x175c('0x48')]=_[_0x175c('0x5d')](_0x454eb0[_0x175c('0x48')]);_0x254f3c[_0x175c('0x53')]=_[_0x175c('0x49')](_0x254f3c[_0x175c('0x47')],_0x254f3c['query']);_0x3e6c0a[_0x175c('0x4a')]=_[_0x175c('0x49')](_0x254f3c['model'],qs['fields'](_0x454eb0[_0x175c('0x48')][_0x175c('0x4b')]));_0x3e6c0a[_0x175c('0x4a')]=_0x3e6c0a['attributes']['length']?_0x3e6c0a[_0x175c('0x4a')]:_0x254f3c[_0x175c('0x47')];if(!_0x454eb0[_0x175c('0x48')][_0x175c('0x4d')]('nolimit')){_0x3e6c0a[_0x175c('0x4f')]=qs[_0x175c('0x4f')](_0x454eb0[_0x175c('0x48')]['limit']);_0x3e6c0a[_0x175c('0x30')]=qs['offset'](_0x454eb0[_0x175c('0x48')]['offset']);}_0x3e6c0a[_0x175c('0x50')]=qs[_0x175c('0x51')](_0x454eb0[_0x175c('0x48')][_0x175c('0x51')]);_0x3e6c0a[_0x175c('0x52')]=qs[_0x175c('0x53')](_[_0x175c('0x6c')](_0x454eb0[_0x175c('0x48')],_0x254f3c[_0x175c('0x53')]));_0x3e6c0a[_0x175c('0x52')][_0x175c('0x69')]=_0x33c3b9['id'];if(_0x454eb0[_0x175c('0x48')][_0x175c('0x54')]){_0x3e6c0a[_0x175c('0x52')]=_[_0x175c('0x55')](_0x3e6c0a[_0x175c('0x52')],{'$or':_['map'](_0x3e6c0a[_0x175c('0x4a')],function(_0x1047ac){var _0x5c96ae={};_0x5c96ae[_0x1047ac]={'$like':'%'+_0x454eb0[_0x175c('0x48')][_0x175c('0x54')]+'%'};return _0x5c96ae;})});}_0x3e6c0a=_[_0x175c('0x55')]({},_0x3e6c0a,_0x454eb0[_0x175c('0x57')]);return db['CannedAnswer'][_0x175c('0x32')]({'where':_0x3e6c0a[_0x175c('0x52')]})['then'](function(_0x59cc79){_0x4508ef[_0x175c('0x32')]=_0x59cc79;if(_0x454eb0[_0x175c('0x48')]['includeAll']){_0x3e6c0a[_0x175c('0x58')]=[{'all':!![]}];}return db[_0x175c('0x6f')]['findAll'](_0x3e6c0a);})[_0x175c('0x21')](function(_0x300d90){_0x4508ef[_0x175c('0x5a')]=_0x300d90;return _0x4508ef;});}})[_0x175c('0x21')](respondWithFilteredResult(_0x269f07,_0x3e6c0a))[_0x175c('0x2c')](handleError(_0x269f07,null));};exports[_0x175c('0x71')]=function(_0x135265,_0x54bd4b,_0x307152){return db[_0x175c('0x43')]['find']({'where':{'id':_0x135265['params']['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x54bd4b,null))[_0x175c('0x21')](function(_0x3a6930){if(_0x3a6930){return _0x3a6930['removeAnswers'](_0x135265[_0x175c('0x48')]['ids']);}})[_0x175c('0x21')](respondWithStatusCode(_0x54bd4b,null))[_0x175c('0x2c')](handleError(_0x54bd4b,null));};exports['notify']=function(_0x2bfcc7,_0x17215f,_0x49f24b){var _0x181ddd={'body':_0x2bfcc7[_0x175c('0x5f')],'channel':_0x175c('0x72')};var _0x323c5a=[];var _0x27e2a2=[];var _0x5d3bbd={};var _0x49da56=![];return db['CmContact']['describe']()['then'](function(_0x35c14e){if(!_0x35c14e){throw new db[(_0x175c('0x73'))][(_0x175c('0x74'))]('no\x20available\x20attributes');}_0x323c5a=_['difference'](_['keys'](_0x35c14e),['createdAt','updatedAt']);_0x27e2a2=_['difference'](_[_0x175c('0x5d')](_0x35c14e),[_0x175c('0x75'),_0x175c('0x76'),_0x175c('0x77'),_0x175c('0x78')]);if(_0x2bfcc7[_0x175c('0x5f')]['id']){delete _0x2bfcc7[_0x175c('0x5f')]['id'];}if(_[_0x175c('0x79')](_0x2bfcc7['body']['from'])){throw new db[(_0x175c('0x73'))]['ValidationError'](_0x175c('0x7a'));}if(_[_0x175c('0x79')](_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x5f')])||_0x2bfcc7['body'][_0x175c('0x5f')]===''){throw new db[(_0x175c('0x73'))][(_0x175c('0x74'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x2bfcc7['body'][_0x175c('0x7b')])){throw new db[(_0x175c('0x73'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x27e2a2);}if(!_[_0x175c('0x7c')](_0x27e2a2,_0x2bfcc7['body'][_0x175c('0x7b')])){throw new db['Sequelize'][(_0x175c('0x74'))](_0x175c('0x7d')+_0x27e2a2);}_0x5d3bbd[_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x7b')]]=_0x2bfcc7[_0x175c('0x5f')]['from'];})['then'](function(){return db[_0x175c('0x43')][_0x175c('0x64')]({'where':{'id':_0x2bfcc7[_0x175c('0x5c')]['id']},'include':[{'model':db[_0x175c('0x7e')],'as':'List','include':[{'model':db[_0x175c('0x7f')],'as':'Contacts','where':_0x5d3bbd,'limit':0x1,'order':[[_0x175c('0x76'),_0x175c('0x80')]]}]},{'model':db['OpenchannelApplication'],'as':_0x175c('0x81')}]});})[_0x175c('0x21')](handleEntityNotFound(_0x17215f,null))[_0x175c('0x21')](function(_0x552eac){if(_0x552eac&&_0x552eac[_0x175c('0x82')]){_0x181ddd[_0x175c('0x83')]=_0x552eac;_0x181ddd[_0x175c('0x84')]=_0x552eac['Applications'];_0x181ddd[_0x175c('0x85')]=_0x552eac['List'];_0x181ddd[_0x175c('0x84')]=_[_0x175c('0x86')](_0x181ddd[_0x175c('0x84')],[_0x175c('0x87')],['asc']);if(_0x181ddd[_0x175c('0x83')]['Applications']){delete _0x181ddd['account'][_0x175c('0x81')];}if(_0x181ddd[_0x175c('0x83')]['List']&&_0x181ddd[_0x175c('0x83')][_0x175c('0x82')]['Contacts'][_0x175c('0x4c')]){return _0x181ddd[_0x175c('0x83')]['List'][_0x175c('0x88')][0x0];}var _0x41cd81=_['defaults'](_0x2bfcc7[_0x175c('0x5f')],{'firstName':_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x89')],'ListId':_0x552eac[_0x175c('0x78')]});_0x41cd81[_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x7b')]]=_0x2bfcc7[_0x175c('0x5f')]['from'];return db[_0x175c('0x7f')]['create'](_0x41cd81,{'fields':_0x323c5a,'raw':!![]});}})['then'](handleEntityNotFound(_0x17215f,null))['then'](function(_0x3fd3d4){_0x181ddd['contact']=_0x3fd3d4;if(_0x3fd3d4){var _0x369e2c={'ContactId':_0x3fd3d4['id'],'OpenchannelAccountId':_0x2bfcc7[_0x175c('0x5c')]['id'],'from':(_0x3fd3d4[_0x175c('0x8a')]||'')+'\x20'+(_0x3fd3d4[_0x175c('0x8b')]||'')};var _0x5a79c4={'OpenchannelAccountId':_0x2bfcc7[_0x175c('0x5c')]['id'],'closed':![]};if(_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x8c')]){_0x5a79c4['threadId']=_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x8c')];return db['OpenchannelInteraction']['find']({'where':_0x5a79c4})[_0x175c('0x21')](function(_0x40c5a1){if(_0x40c5a1){return[_0x40c5a1,![]];}_0x369e2c[_0x175c('0x8c')]=_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x8c')];_0x369e2c[_0x175c('0x8d')]=_0x2bfcc7[_0x175c('0x5f')]['externalUrl'];return db[_0x175c('0x8e')][_0x175c('0x6b')](_0x369e2c)[_0x175c('0x21')](function(_0x592e5f){return[_0x592e5f,!![]];});});}else{_0x5a79c4[_0x175c('0x8c')]=null;}_0x5a79c4[_0x175c('0x8f')]=_0x3fd3d4['id'];return db[_0x175c('0x8e')]['find']({'where':_0x5a79c4})['then'](function(_0xc003dd){if(_0xc003dd){return[_0xc003dd,![]];}return db[_0x175c('0x8e')][_0x175c('0x6b')](_0x369e2c)['then'](function(_0xa7ecc4){return[_0xa7ecc4,!![]];});});}})[_0x175c('0x90')](function(_0x476f6c,_0x688258){if(_0x476f6c){_0x49da56=_0x688258;if(!_0x688258){var _0x3b3d57={'from':(_0x181ddd[_0x175c('0x91')]['firstName']||'')+'\x20'+(_0x181ddd['contact'][_0x175c('0x8b')]||'')};if(_0x2bfcc7['body'][_0x175c('0x8c')]&&_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x92')]&&_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x8c')]!=_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x92')]){_0x3b3d57[_0x175c('0x8c')]=_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x92')];}return _0x476f6c[_0x175c('0x37')](_0x3b3d57);}else{return _0x476f6c;}}})[_0x175c('0x21')](function(_0x3a6d13){_0x181ddd['interaction']=_0x3a6d13[_0x175c('0x39')]({'plain':!![]});_0x181ddd['interaction'][_0x175c('0x93')]=_0x49da56;if(_0x181ddd[_0x175c('0x94')][_0x175c('0x93')]){if(_0x181ddd[_0x175c('0x83')][_0x175c('0x95')]){_0x181ddd[_0x175c('0x84')][_0x175c('0x96')]({'id':0x0,'priority':_0x181ddd[_0x175c('0x84')][_0x175c('0x4c')]+0x1,'app':_0x175c('0x97'),'appdata':_0x175c('0x98'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0x175c('0x6b')]({'body':_0x2bfcc7[_0x175c('0x5f')][_0x175c('0x5f')],'OpenchannelAccountId':_0x2bfcc7[_0x175c('0x5c')]['id'],'OpenchannelInteractionId':_0x3a6d13['id'],'direction':'in','ContactId':_0x181ddd[_0x175c('0x91')]['id'],'AttachmentId':_0x2bfcc7[_0x175c('0x5f')]['AttachmentId']});})[_0x175c('0x21')](function(_0x494a7a){_0x181ddd[_0x175c('0x2a')]=_0x494a7a;if(_0x181ddd['interaction'][_0x175c('0x99')]){return db[_0x175c('0x9a')]['find']({'attributes':['id',_0x175c('0x3d')],'where':{'id':_0x181ddd[_0x175c('0x94')]['UserId']}})[_0x175c('0x21')](function(_0x37984c){if(_0x37984c){_0x181ddd[_0x175c('0x84')][_0x175c('0x9b')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x37984c[_0x175c('0x3d')]+','+(_0x181ddd[_0x175c('0x83')][_0x175c('0x9c')]||0xa),'interval':_0x175c('0x9d')});_0x181ddd[_0x175c('0x9e')]=![];}return respondWithRpcPromise(_0x175c('0x9f'),_0x175c('0xa0'),_0x181ddd);});}return respondWithRpcPromise(_0x175c('0x9f'),_0x175c('0xa0'),_0x181ddd);})['then'](function(_0x34c32d){respondWithRpcPromise(_0x175c('0xa1'),_0x175c('0xa1'),{'event':'notify','message':_0x34c32d},client9002);return _0x34c32d;})['then'](respondWithResult(_0x17215f,null))[_0x175c('0x2c')](handleError(_0x17215f,null));};exports[_0x175c('0xa2')]=function(_0xfd3b25,_0x3cbdd7,_0x44b38a){return db[_0x175c('0x43')]['findOne']({'where':{'id':_0xfd3b25[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x3cbdd7,null))[_0x175c('0x21')](function(_0x4618d){if(_0x4618d){return db[_0x175c('0xa3')][_0x175c('0xa4')](function(_0x3fdb76){return db[_0x175c('0xa5')]['destroy']({'where':{'OpenchannelAccountId':_0xfd3b25[_0x175c('0x5c')]['id']},'transaction':_0x3fdb76})['then'](function(_0x38edc8){var _0x2d2a6d=_[_0x175c('0x42')](_0xfd3b25[_0x175c('0x5f')],function(_0x430850){_0x430850['OpenchannelAccountId']=_0xfd3b25['params']['id'];return _0x430850;});return db[_0x175c('0xa5')]['bulkCreate'](_0x2d2a6d,{'transaction':_0x3fdb76});});})[_0x175c('0x21')](function(){return db[_0x175c('0xa5')][_0x175c('0xa6')]({'where':{'OpenchannelAccountId':_0xfd3b25[_0x175c('0x5c')]['id']},'order':_0x175c('0x87')});});}})[_0x175c('0x21')](respondWithResult(_0x3cbdd7,null))[_0x175c('0x2c')](handleError(_0x3cbdd7,null));};exports[_0x175c('0xa7')]=function(_0x9ac2cd,_0x30c95f,_0x2a165a){var _0x22a637={};var _0x1de2c7={};var _0x303b56;var _0x210357;return db[_0x175c('0x43')]['findOne']({'where':{'id':_0x9ac2cd[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x30c95f,null))[_0x175c('0x21')](function(_0x2e7b91){if(_0x2e7b91){_0x303b56=_0x2e7b91;_0x1de2c7[_0x175c('0x47')]=_[_0x175c('0x5d')](db[_0x175c('0xa5')][_0x175c('0x44')]);_0x1de2c7[_0x175c('0x48')]=_[_0x175c('0x5d')](_0x9ac2cd['query']);_0x1de2c7[_0x175c('0x53')]=_[_0x175c('0x49')](_0x1de2c7['model'],_0x1de2c7['query']);_0x22a637[_0x175c('0x4a')]=_[_0x175c('0x49')](_0x1de2c7[_0x175c('0x47')],qs['fields'](_0x9ac2cd[_0x175c('0x48')][_0x175c('0x4b')]));_0x22a637[_0x175c('0x4a')]=_0x22a637['attributes'][_0x175c('0x4c')]?_0x22a637[_0x175c('0x4a')]:_0x1de2c7[_0x175c('0x47')];_0x22a637['order']=qs['sort'](_0x9ac2cd[_0x175c('0x48')][_0x175c('0x51')]);_0x22a637['where']=qs[_0x175c('0x53')](_['pick'](_0x9ac2cd[_0x175c('0x48')],_0x1de2c7[_0x175c('0x53')]));if(_0x9ac2cd['query'][_0x175c('0x54')]){_0x22a637[_0x175c('0x52')]=_[_0x175c('0x55')](_0x22a637[_0x175c('0x52')],{'$or':_[_0x175c('0x42')](_0x22a637[_0x175c('0x4a')],function(_0xf8f80f){var _0x3ec93a={};_0x3ec93a[_0xf8f80f]={'$like':'%'+_0x9ac2cd['query'][_0x175c('0x54')]+'%'};return _0x3ec93a;})});}_0x22a637=_[_0x175c('0x55')]({},_0x22a637,_0x9ac2cd[_0x175c('0x57')]);return _0x303b56[_0x175c('0xa7')](_0x22a637);}})['then'](function(_0x2c338c){if(_0x2c338c){_0x210357=_0x2c338c[_0x175c('0x4c')];if(!_0x9ac2cd['query'][_0x175c('0x4d')](_0x175c('0x4e'))){_0x22a637[_0x175c('0x4f')]=qs['limit'](_0x9ac2cd['query']['limit']);_0x22a637[_0x175c('0x30')]=qs[_0x175c('0x30')](_0x9ac2cd[_0x175c('0x48')][_0x175c('0x30')]);}return _0x303b56[_0x175c('0xa7')](_0x22a637);}})[_0x175c('0x21')](function(_0xaba29d){if(_0xaba29d){return _0xaba29d?{'count':_0x210357,'rows':_0xaba29d}:null;}})[_0x175c('0x21')](respondWithResult(_0x30c95f,null))['catch'](handleError(_0x30c95f,null));};exports[_0x175c('0xa8')]=function(_0xa0d6d2,_0x4f7b45,_0x1d47a1){var _0x26a0a1={'raw':![],'where':{}};var _0x568a22={};var _0x268add={'count':0x0,'rows':[]};return db[_0x175c('0x43')][_0x175c('0x70')]({'where':{'id':_0xa0d6d2['params']['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x4f7b45,null))[_0x175c('0x21')](function(_0x4cb3a7){if(_0x4cb3a7){_0x568a22[_0x175c('0x47')]=_[_0x175c('0x5d')](db[_0x175c('0x8e')][_0x175c('0x44')]);_0x568a22[_0x175c('0x48')]=_['keys'](_0xa0d6d2[_0x175c('0x48')]);_0x568a22['filters']=_['intersection'](_0x568a22['model'],_0x568a22[_0x175c('0x48')]);_0x26a0a1['attributes']=_[_0x175c('0x49')](_0x568a22[_0x175c('0x47')],qs['fields'](_0xa0d6d2['query'][_0x175c('0x4b')]));_0x26a0a1[_0x175c('0x4a')]=_0x26a0a1[_0x175c('0x4a')]['length']?_0x26a0a1[_0x175c('0x4a')]:_0x568a22[_0x175c('0x47')];if(!_0xa0d6d2[_0x175c('0x48')][_0x175c('0x4d')](_0x175c('0x4e'))){_0x26a0a1['limit']=qs[_0x175c('0x4f')](_0xa0d6d2['query'][_0x175c('0x4f')]);_0x26a0a1['offset']=qs['offset'](_0xa0d6d2[_0x175c('0x48')]['offset']);}_0x26a0a1[_0x175c('0x50')]=qs[_0x175c('0x51')](_0xa0d6d2[_0x175c('0x48')][_0x175c('0x51')]);_0x26a0a1[_0x175c('0x52')]=qs[_0x175c('0x53')](_[_0x175c('0x6c')](_0xa0d6d2['query'],_0x568a22[_0x175c('0x53')]));_0x26a0a1[_0x175c('0x52')][_0x175c('0x69')]=_0x4cb3a7['id'];if(_0xa0d6d2[_0x175c('0x48')][_0x175c('0x54')]){_0x26a0a1[_0x175c('0x52')]=_['merge'](_0x26a0a1[_0x175c('0x52')],{'$or':_[_0x175c('0x42')](_0x26a0a1[_0x175c('0x4a')],function(_0x174210){var _0x5246e0={};_0x5246e0[_0x174210]={'$like':'%'+_0xa0d6d2[_0x175c('0x48')][_0x175c('0x54')]+'%'};return _0x5246e0;})});}_0x26a0a1=_['merge']({},_0x26a0a1,_0xa0d6d2[_0x175c('0x57')]);return db['OpenchannelInteraction']['count']({'where':_0x26a0a1[_0x175c('0x52')]})[_0x175c('0x21')](function(_0x5cb977){_0x268add[_0x175c('0x32')]=_0x5cb977;if(_0xa0d6d2['query'][_0x175c('0x5e')]){_0x26a0a1[_0x175c('0x58')]=[{'model':db[_0x175c('0x7f')],'as':'Contact','required':![]},{'model':db[_0x175c('0x9a')],'as':_0x175c('0xa9'),'attributes':[_0x175c('0x3d'),_0x175c('0xaa'),'internal'],'required':![]},{'model':db[_0x175c('0xab')],'as':_0x175c('0xac'),'attributes':['id',_0x175c('0x3d'),'color'],'where':_0xa0d6d2[_0x175c('0x48')][_0x175c('0xad')]?{'id':_0xa0d6d2['query'][_0x175c('0xad')]}:undefined,'required':_0xa0d6d2[_0x175c('0x48')][_0x175c('0xad')]?!![]:![]}];}return db['OpenchannelInteraction'][_0x175c('0x59')](_0x26a0a1);})[_0x175c('0x21')](function(_0xb4c0d){_0x268add[_0x175c('0x5a')]=_0xb4c0d;return _0x268add;});}})['then'](respondWithFilteredResult(_0x4f7b45,_0x26a0a1))[_0x175c('0x2c')](handleError(_0x4f7b45,null));};exports[_0x175c('0xae')]=function(_0x4b50eb,_0x442cf2,_0x46f50a){return db[_0x175c('0x43')][_0x175c('0x64')]({'where':{'id':_0x4b50eb[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x442cf2,null))[_0x175c('0x21')](function(_0x1634ad){if(_0x1634ad){return _0x1634ad['addAgents'](_0x4b50eb[_0x175c('0x5f')][_0x175c('0xaf')],_[_0x175c('0xb0')](_0x4b50eb[_0x175c('0x5f')],[_0x175c('0xaf'),'id'])||{})[_0x175c('0x90')](function(_0x2131f7){for(var _0x2dea95=0x0;_0x2dea95<_0x4b50eb[_0x175c('0x5f')][_0x175c('0xaf')][_0x175c('0x4c')];_0x2dea95+=0x1){socket[_0x175c('0xb1')](_0x175c('0xb2'),{'UserId':Number(_0x4b50eb['body']['ids'][_0x2dea95]),'OpenchannelAccountId':Number(_0x4b50eb['params']['id'])});}return _0x2131f7;});}})[_0x175c('0x21')](respondWithResult(_0x442cf2,null))[_0x175c('0x2c')](handleError(_0x442cf2,null));};exports[_0x175c('0xb3')]=function(_0x198911,_0x328feb,_0x28ff56){return db[_0x175c('0x43')][_0x175c('0x64')]({'where':{'id':_0x198911[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x328feb,null))[_0x175c('0x21')](function(_0x19f012){if(_0x19f012){return _0x19f012[_0x175c('0xb3')](_0x198911[_0x175c('0x48')]['ids'])[_0x175c('0x21')](function(){if(_[_0x175c('0xb4')](_0x198911[_0x175c('0x48')]['ids'])){for(var _0x22d84c=0x0;_0x22d84c<_0x198911['query'][_0x175c('0xaf')][_0x175c('0x4c')];_0x22d84c+=0x1){socket[_0x175c('0xb1')](_0x175c('0xb5'),{'UserId':Number(_0x198911[_0x175c('0x48')]['ids'][_0x22d84c]),'OpenchannelAccountId':Number(_0x198911['params']['id'])});}}else{socket[_0x175c('0xb1')](_0x175c('0xb5'),{'UserId':Number(_0x198911[_0x175c('0x48')][_0x175c('0xaf')]),'OpenchannelAccountId':Number(_0x198911[_0x175c('0x5c')]['id'])});}});}})[_0x175c('0x21')](respondWithStatusCode(_0x328feb,null))[_0x175c('0x2c')](handleError(_0x328feb,null));};exports['getAgents']=function(_0x18793e,_0x555f2e,_0x40d4b2){var _0x14052e={};var _0x17fb7c={};var _0x21d91f;var _0x275da5;return db['OpenchannelAccount'][_0x175c('0x70')]({'where':{'id':_0x18793e[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x555f2e,null))[_0x175c('0x21')](function(_0x1d4659){if(_0x1d4659){_0x21d91f=_0x1d4659;_0x17fb7c[_0x175c('0x47')]=_[_0x175c('0x5d')](db['User'][_0x175c('0x44')]);_0x17fb7c[_0x175c('0x48')]=_[_0x175c('0x5d')](_0x18793e[_0x175c('0x48')]);_0x17fb7c[_0x175c('0x53')]=_['intersection'](_0x17fb7c[_0x175c('0x47')],_0x17fb7c[_0x175c('0x48')]);_0x14052e[_0x175c('0x4a')]=_['intersection'](_0x17fb7c['model'],qs[_0x175c('0x4b')](_0x18793e[_0x175c('0x48')][_0x175c('0x4b')]));_0x14052e[_0x175c('0x4a')]=_0x14052e['attributes'][_0x175c('0x4c')]?_0x14052e[_0x175c('0x4a')]:_0x17fb7c[_0x175c('0x47')];_0x14052e['order']=qs[_0x175c('0x51')](_0x18793e[_0x175c('0x48')][_0x175c('0x51')]);_0x14052e[_0x175c('0x52')]=qs[_0x175c('0x53')](_[_0x175c('0x6c')](_0x18793e[_0x175c('0x48')],_0x17fb7c[_0x175c('0x53')]));if(_0x18793e[_0x175c('0x48')]['filter']){_0x14052e[_0x175c('0x52')]=_[_0x175c('0x55')](_0x14052e['where'],{'$or':_[_0x175c('0x42')](_0x14052e[_0x175c('0x4a')],function(_0x1edf6f){var _0x2d0ac2={};_0x2d0ac2[_0x1edf6f]={'$like':'%'+_0x18793e['query']['filter']+'%'};return _0x2d0ac2;})});}_0x14052e=_[_0x175c('0x55')]({},_0x14052e,_0x18793e['options']);return _0x21d91f[_0x175c('0xb6')](_0x14052e);}})['then'](function(_0x27b90d){if(_0x27b90d){_0x275da5=_0x27b90d[_0x175c('0x4c')];if(!_0x18793e[_0x175c('0x48')][_0x175c('0x4d')](_0x175c('0x4e'))){_0x14052e['limit']=qs[_0x175c('0x4f')](_0x18793e[_0x175c('0x48')][_0x175c('0x4f')]);_0x14052e['offset']=qs[_0x175c('0x30')](_0x18793e[_0x175c('0x48')]['offset']);}return _0x21d91f[_0x175c('0xb6')](_0x14052e);}})[_0x175c('0x21')](function(_0x32cc61){if(_0x32cc61){return _0x32cc61?{'count':_0x275da5,'rows':_0x32cc61}:null;}})[_0x175c('0x21')](respondWithResult(_0x555f2e,null))[_0x175c('0x2c')](handleError(_0x555f2e,null));};exports[_0x175c('0x3e')]=function(_0x21ef67,_0x185f32,_0x9029ca){var _0x5af67c,_0x34573f,_0x40c496;if(_['isNil'](_0x21ef67[_0x175c('0x5f')][_0x175c('0x5f')])||_0x21ef67[_0x175c('0x5f')][_0x175c('0x5f')]===''){throw new db['Sequelize'][(_0x175c('0x74'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x175c('0x79')](_0x21ef67['body']['to'])){}_0x5af67c=_0x21ef67[_0x175c('0x5f')]['to'];return db[_0x175c('0x43')][_0x175c('0x70')]({'where':{'id':_0x21ef67[_0x175c('0x5c')]['id']}})[_0x175c('0x21')](handleEntityNotFound(_0x185f32,null))[_0x175c('0x21')](function(_0x21864c){if(_0x21864c){return db[_0x175c('0x43')][_0x175c('0x64')]({'where':{'id':_0x21864c['id']},'include':[{'model':db[_0x175c('0x7e')],'as':_0x175c('0x82'),'include':[{'model':db[_0x175c('0x7f')],'as':'Contacts','where':{[_0x21864c[_0x175c('0x7b')]]:_0x5af67c},'limit':0x1,'order':[[_0x175c('0x76'),_0x175c('0x80')]]}]}]})[_0x175c('0x21')](handleEntityNotFound(_0x185f32,null))[_0x175c('0x21')](function(_0x48f86f){if(_0x48f86f&&_0x48f86f[_0x175c('0x82')]){_0x34573f=_0x48f86f[_0x175c('0x39')]({'plain':!![]});if(_0x34573f[_0x175c('0x82')]&&_0x34573f[_0x175c('0x82')][_0x175c('0x88')]['length']){return _0x34573f[_0x175c('0x82')][_0x175c('0x88')][0x0];}return db['CmContact'][_0x175c('0x6b')](_[_0x175c('0xb7')](_0x21ef67[_0x175c('0x5f')],{'firstName':_0x5af67c,[_0x48f86f[_0x175c('0x7b')]]:_0x5af67c,'phone':_0x5af67c,'ListId':_0x34573f['ListId']}));}})[_0x175c('0x21')](handleEntityNotFound(_0x185f32,null))[_0x175c('0x21')](function(_0x5efd61){if(_0x5efd61){_0x40c496=_0x5efd61;return db[_0x175c('0x8e')][_0x175c('0x64')]({'where':{'ContactId':_0x40c496['id'],'closed':![],'OpenchannelAccountId':_0x34573f['id']}})['then'](function(_0x24fe18){if(_0x24fe18){return[_0x24fe18,![]];}return db[_0x175c('0x8e')][_0x175c('0x6b')]({'UserId':_0x21ef67['user']['id'],'ContactId':_0x40c496['id'],'OpenchannelAccountId':_0x34573f['id'],'lastMsgDirection':'out','Messages':[_[_0x175c('0x55')](_0x21ef67[_0x175c('0x5f')],{'read':![],'body':_0x21ef67[_0x175c('0x5f')][_0x175c('0x5f')],'OpenchannelAccountId':_0x34573f['id'],'UserId':_0x21ef67['user']['id'],'ContactId':_0x40c496['id']})]},{'include':[{'model':db[_0x175c('0xb8')],'as':_0x175c('0xb9')}]})[_0x175c('0x21')](function(_0x33b936){return[_0x33b936,!![]];});});}})[_0x175c('0x90')](function(_0x27f485,_0xe7f5ad){if(_0xe7f5ad){return _0x27f485;}return db[_0x175c('0xb8')][_0x175c('0x6b')](_[_0x175c('0x55')](_0x21ef67[_0x175c('0x5f')],{'read':![],'body':_0x21ef67[_0x175c('0x5f')][_0x175c('0x5f')],'OpenchannelAccountId':_0x34573f['id'],'OpenchannelInteractionId':_0x27f485['id'],'UserId':_0x21ef67['user']['id'],'ContactId':_0x40c496['id']}))[_0x175c('0x21')](function(_0x560db3){_0x27f485[_0x175c('0xba')][_0x175c('0xb9')]=[];_0x27f485[_0x175c('0xba')]['Messages'][_0x175c('0x96')](_0x560db3[_0x175c('0xba')]);return _0x27f485;});});}})['then'](respondWithResult(_0x185f32,null))[_0x175c('0x2c')](handleError(_0x185f32,null));};
\ No newline at end of file
+var _0x095e=['merge','VIRTUAL','OpenchannelAccount','includeAll','include','rows','show','keys','rawAttributes','fields','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','Disposition','getDispositions','OpenchannelAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','findAll','removeAnswers','openchannel','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','OpenchannelApplication','List','account','applications','orderBy','priority','asc','Applications','Contacts','contact','lastName','threadId','OpenchannelInteraction','externalUrl','firstName','messageId','interaction','created','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','notify','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tags','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','User','CmList','DESC','out','Messages','spread','dataValues','push','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','get','UserProfileResource','end','stack','name','send','Pause','mandatoryDispositionPause','map','fieldName','model','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0xafc681,_0x54af61){var _0x2443fa=function(_0x577a5b){while(--_0x577a5b){_0xafc681['push'](_0xafc681['shift']());}};_0x2443fa(++_0x54af61);}(_0x095e,0x12d));var _0xe095=function(_0x26420e,_0x3300c0){_0x26420e=_0x26420e-0x0;var _0x5c170d=_0x095e[_0x26420e];return _0x5c170d;};'use strict';var emlformat=require(_0xe095('0x0'));var rimraf=require(_0xe095('0x1'));var zipdir=require(_0xe095('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe095('0x3'));var moment=require('moment');var BPromise=require(_0xe095('0x4'));var Mustache=require(_0xe095('0x5'));var util=require(_0xe095('0x6'));var path=require(_0xe095('0x7'));var sox=require(_0xe095('0x8'));var csv=require(_0xe095('0x9'));var ejs=require(_0xe095('0xa'));var fs=require('fs');var fs_extra=require(_0xe095('0xb'));var _=require('lodash');var squel=require(_0xe095('0xc'));var crypto=require(_0xe095('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe095('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe095('0xe'));var qs=require(_0xe095('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe095('0x10'))('api');var utils=require(_0xe095('0x11'));var config=require(_0xe095('0x12'));var licenseUtil=require(_0xe095('0x13'));var db=require(_0xe095('0x14'))['db'];config[_0xe095('0x15')]=_[_0xe095('0x16')](config['redis'],{'host':_0xe095('0x17'),'port':0x18eb});var socket=require(_0xe095('0x18'))(new Redis(config[_0xe095('0x15')]));require(_0xe095('0x19'))[_0xe095('0x1a')](socket);var jayson=require(_0xe095('0x1b'));var client=jayson[_0xe095('0x1c')][_0xe095('0x1d')]({'port':0x232c});var client9002=jayson[_0xe095('0x1c')][_0xe095('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x586a87,_0x28e8f9,_0x44efac,_0x1bdb27){return new BPromise(function(_0x4b2993,_0x13b530){var _0x8a874c=_0x1bdb27||client;return _0x8a874c[_0xe095('0x1e')](_0x586a87,_0x44efac)[_0xe095('0x1f')](function(_0x3b3818){logger[_0xe095('0x20')]('OpenchannelAccount,\x20%s,\x20%s',_0x28e8f9,'request\x20sent');logger[_0xe095('0x21')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x28e8f9,_0xe095('0x22'),JSON[_0xe095('0x23')](_0x3b3818));if(_0x3b3818[_0xe095('0x24')]){if(_0x3b3818[_0xe095('0x24')][_0xe095('0x25')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x28e8f9,_0x3b3818[_0xe095('0x24')][_0xe095('0x26')]);return _0x13b530(_0x3b3818[_0xe095('0x24')][_0xe095('0x26')]);}logger[_0xe095('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x28e8f9,_0x3b3818['error']['message']);return _0x4b2993(_0x3b3818[_0xe095('0x24')][_0xe095('0x26')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x28e8f9,_0xe095('0x22'));_0x4b2993(_0x3b3818[_0xe095('0x27')][_0xe095('0x26')]);}})[_0xe095('0x28')](function(_0x5b6f79){logger[_0xe095('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x28e8f9,_0x5b6f79);_0x13b530(_0x5b6f79);});});}function respondWithStatusCode(_0x278123,_0x2a65a3){_0x2a65a3=_0x2a65a3||0xcc;return function(_0x11e961){if(_0x11e961){return _0x278123[_0xe095('0x29')](_0x2a65a3);}return _0x278123[_0xe095('0x2a')](_0x2a65a3)['end']();};}function respondWithResult(_0x425d8e,_0x37eec3){_0x37eec3=_0x37eec3||0xc8;return function(_0x1285ae){if(_0x1285ae){return _0x425d8e[_0xe095('0x2a')](_0x37eec3)[_0xe095('0x2b')](_0x1285ae);}};}function respondWithFilteredResult(_0x36c465,_0xc4e449){return function(_0x5dafdd){if(_0x5dafdd){var _0x1e5a66=typeof _0xc4e449[_0xe095('0x2c')]==='undefined'&&typeof _0xc4e449['limit']===_0xe095('0x2d');var _0x4fec08=_0x5dafdd[_0xe095('0x2e')];var _0x10c413=_0x1e5a66?0x0:_0xc4e449[_0xe095('0x2c')];var _0x11f29c=_0x1e5a66?_0x5dafdd[_0xe095('0x2e')]:_0xc4e449[_0xe095('0x2c')]+_0xc4e449[_0xe095('0x2f')];var _0x36fc92;if(_0x11f29c>=_0x4fec08){_0x11f29c=_0x4fec08;_0x36fc92=0xc8;}else{_0x36fc92=0xce;}_0x36c465['status'](_0x36fc92);return _0x36c465[_0xe095('0x30')](_0xe095('0x31'),_0x10c413+'-'+_0x11f29c+'/'+_0x4fec08)[_0xe095('0x2b')](_0x5dafdd);}return null;};}function patchUpdates(_0x4f7967){return function(_0x2c7888){try{jsonpatch['apply'](_0x2c7888,_0x4f7967,!![]);}catch(_0x578a0c){return BPromise['reject'](_0x578a0c);}return _0x2c7888['save']();};}function saveUpdates(_0x518844,_0x9d8746){return function(_0x26d861){if(_0x26d861){return _0x26d861[_0xe095('0x32')](_0x518844)[_0xe095('0x1f')](function(_0x5c1dab){return _0x5c1dab;});}return null;};}function removeEntity(_0x3ae3fe,_0x1951bb){return function(_0x1d6af5){if(_0x1d6af5){return _0x1d6af5[_0xe095('0x33')]()['then'](function(){var _0x4241e3=_0x1d6af5[_0xe095('0x34')]({'plain':!![]});var _0x1cbd9f='OpenchannelAccounts';return db[_0xe095('0x35')]['destroy']({'where':{'type':_0x1cbd9f,'resourceId':_0x4241e3['id']}})['then'](function(){return _0x1d6af5;});})[_0xe095('0x1f')](function(){_0x3ae3fe[_0xe095('0x2a')](0xcc)[_0xe095('0x36')]();});}};}function handleEntityNotFound(_0x3837b8,_0x46c215){return function(_0x50fb68){if(!_0x50fb68){_0x3837b8[_0xe095('0x29')](0x194);}return _0x50fb68;};}function handleError(_0x547d5a,_0x3f514a){_0x3f514a=_0x3f514a||0x1f4;return function(_0x3642d2){logger[_0xe095('0x24')](_0x3642d2[_0xe095('0x37')]);if(_0x3642d2['name']){delete _0x3642d2[_0xe095('0x38')];}_0x547d5a[_0xe095('0x2a')](_0x3f514a)[_0xe095('0x39')](_0x3642d2);};}exports['index']=function(_0x3b1d76,_0x3a3bdc){var _0x1702fe={'include':[{'model':db[_0xe095('0x3a')],'as':_0xe095('0x3b')}]},_0x7a1505={},_0x48211a={'count':0x0,'rows':[]};var _0x14d141=_[_0xe095('0x3c')](db['OpenchannelAccount']['rawAttributes'],function(_0x4afa11){return{'name':_0x4afa11[_0xe095('0x3d')],'type':_0x4afa11['type']['key']};});_0x7a1505[_0xe095('0x3e')]=_['map'](_0x14d141,_0xe095('0x38'));_0x7a1505[_0xe095('0x3f')]=_['keys'](_0x3b1d76[_0xe095('0x3f')]);_0x7a1505[_0xe095('0x40')]=_['intersection'](_0x7a1505['model'],_0x7a1505['query']);_0x1702fe[_0xe095('0x41')]=_[_0xe095('0x42')](_0x7a1505[_0xe095('0x3e')],qs['fields'](_0x3b1d76['query']['fields']));_0x1702fe[_0xe095('0x41')]=_0x1702fe[_0xe095('0x41')][_0xe095('0x43')]?_0x1702fe['attributes']:_0x7a1505['model'];if(!_0x3b1d76[_0xe095('0x3f')][_0xe095('0x44')](_0xe095('0x45'))){_0x1702fe[_0xe095('0x2f')]=qs[_0xe095('0x2f')](_0x3b1d76[_0xe095('0x3f')]['limit']);_0x1702fe[_0xe095('0x2c')]=qs['offset'](_0x3b1d76[_0xe095('0x3f')]['offset']);}_0x1702fe[_0xe095('0x46')]=qs['sort'](_0x3b1d76[_0xe095('0x3f')][_0xe095('0x47')]);_0x1702fe[_0xe095('0x48')]=qs['filters'](_[_0xe095('0x49')](_0x3b1d76['query'],_0x7a1505[_0xe095('0x40')]),_0x14d141);if(_0x3b1d76[_0xe095('0x3f')][_0xe095('0x4a')]){_0x1702fe['where']=_[_0xe095('0x4b')](_0x1702fe[_0xe095('0x48')],{'$or':_[_0xe095('0x3c')](_0x14d141,function(_0x2a63c9){if(_0x2a63c9['type']!==_0xe095('0x4c')){var _0x282d3f={};_0x282d3f[_0x2a63c9[_0xe095('0x38')]]={'$like':'%'+_0x3b1d76['query'][_0xe095('0x4a')]+'%'};return _0x282d3f;}})});}_0x1702fe=_[_0xe095('0x4b')]({},_0x1702fe,_0x3b1d76['options']);var _0x3a0874={'where':_0x1702fe['where']};return db[_0xe095('0x4d')][_0xe095('0x2e')](_0x3a0874)[_0xe095('0x1f')](function(_0xf9581){_0x48211a[_0xe095('0x2e')]=_0xf9581;if(_0x3b1d76[_0xe095('0x3f')][_0xe095('0x4e')]){_0x1702fe[_0xe095('0x4f')]=[{'all':!![]}];}return db[_0xe095('0x4d')]['findAll'](_0x1702fe);})[_0xe095('0x1f')](function(_0x47e53c){_0x48211a[_0xe095('0x50')]=_0x47e53c;return _0x48211a;})[_0xe095('0x1f')](respondWithFilteredResult(_0x3a3bdc,_0x1702fe))[_0xe095('0x28')](handleError(_0x3a3bdc,null));};exports[_0xe095('0x51')]=function(_0xeeab0e,_0x2099b5){var _0x2b39a0={'raw':![],'where':{'id':_0xeeab0e['params']['id']},'include':[{'model':db[_0xe095('0x3a')],'as':_0xe095('0x3b')}]},_0x301675={};_0x301675[_0xe095('0x3e')]=_[_0xe095('0x52')](db[_0xe095('0x4d')][_0xe095('0x53')]);_0x301675[_0xe095('0x3f')]=_[_0xe095('0x52')](_0xeeab0e[_0xe095('0x3f')]);_0x301675[_0xe095('0x40')]=_['intersection'](_0x301675[_0xe095('0x3e')],_0x301675[_0xe095('0x3f')]);_0x2b39a0[_0xe095('0x41')]=_['intersection'](_0x301675[_0xe095('0x3e')],qs[_0xe095('0x54')](_0xeeab0e[_0xe095('0x3f')][_0xe095('0x54')]));_0x2b39a0[_0xe095('0x41')]=_0x2b39a0[_0xe095('0x41')][_0xe095('0x43')]?_0x2b39a0[_0xe095('0x41')]:_0x301675[_0xe095('0x3e')];if(_0xeeab0e[_0xe095('0x3f')][_0xe095('0x4e')]){_0x2b39a0[_0xe095('0x4f')]=[{'all':!![]}];}_0x2b39a0=_[_0xe095('0x4b')]({},_0x2b39a0,_0xeeab0e[_0xe095('0x55')]);return db[_0xe095('0x4d')][_0xe095('0x56')](_0x2b39a0)[_0xe095('0x1f')](handleEntityNotFound(_0x2099b5,null))[_0xe095('0x1f')](respondWithResult(_0x2099b5,null))[_0xe095('0x28')](handleError(_0x2099b5,null));};exports[_0xe095('0x57')]=function(_0x48a8a8,_0x526ae){return db[_0xe095('0x4d')][_0xe095('0x57')](_0x48a8a8[_0xe095('0x58')],{})[_0xe095('0x1f')](function(_0x2cecd5){var _0x380952=_0x48a8a8[_0xe095('0x59')][_0xe095('0x34')]({'plain':!![]});if(!_0x380952)throw new Error(_0xe095('0x5a'));if(_0x380952[_0xe095('0x5b')]===_0xe095('0x59')){var _0x46cd78=_0x2cecd5[_0xe095('0x34')]({'plain':!![]});var _0x33903c=_0xe095('0x5c');return db[_0xe095('0x5d')][_0xe095('0x56')]({'where':{'name':_0x33903c,'userProfileId':_0x380952[_0xe095('0x5e')]},'raw':!![]})[_0xe095('0x1f')](function(_0x467440){if(_0x467440&&_0x467440[_0xe095('0x5f')]===0x0){return db[_0xe095('0x35')][_0xe095('0x57')]({'name':_0x46cd78[_0xe095('0x38')],'resourceId':_0x46cd78['id'],'type':_0x467440['name'],'sectionId':_0x467440['id']},{})['then'](function(){return _0x2cecd5;});}else{return _0x2cecd5;}})[_0xe095('0x28')](function(_0x2434ad){logger[_0xe095('0x24')](_0xe095('0x60'),_0x2434ad);throw _0x2434ad;});}return _0x2cecd5;})[_0xe095('0x1f')](respondWithResult(_0x526ae,0xc9))[_0xe095('0x28')](handleError(_0x526ae,null));};exports[_0xe095('0x32')]=function(_0x33b52c,_0x1d764e){if(_0x33b52c['body']['id']){delete _0x33b52c[_0xe095('0x58')]['id'];}return db[_0xe095('0x4d')][_0xe095('0x56')]({'where':{'id':_0x33b52c['params']['id']},'include':[{'model':db[_0xe095('0x3a')],'as':_0xe095('0x3b')}]})['then'](handleEntityNotFound(_0x1d764e,null))[_0xe095('0x1f')](saveUpdates(_0x33b52c[_0xe095('0x58')],null))['then'](respondWithResult(_0x1d764e,null))[_0xe095('0x28')](handleError(_0x1d764e,null));};exports[_0xe095('0x33')]=function(_0x4804b7,_0x569d70){return db[_0xe095('0x4d')][_0xe095('0x56')]({'where':{'id':_0x4804b7[_0xe095('0x61')]['id']}})['then'](handleEntityNotFound(_0x569d70,null))[_0xe095('0x1f')](removeEntity(_0x569d70,null))[_0xe095('0x28')](handleError(_0x569d70,null));};exports[_0xe095('0x62')]=function(_0x1763dc,_0x25a961){return db[_0xe095('0x4d')][_0xe095('0x62')]()[_0xe095('0x1f')](respondWithResult(_0x25a961,null))[_0xe095('0x28')](handleError(_0x25a961,null));};exports[_0xe095('0x63')]=function(_0x58952e,_0x2c4ffd,_0x572dfd){if(_0x58952e[_0xe095('0x58')]['id']){delete _0x58952e[_0xe095('0x58')]['id'];}return db[_0xe095('0x4d')][_0xe095('0x56')]({'where':{'id':_0x58952e['params']['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x2c4ffd,null))[_0xe095('0x1f')](function(_0xf51430){if(_0xf51430){_0x58952e[_0xe095('0x58')]['OpenchannelAccountId']=_0xf51430['id'];return db[_0xe095('0x64')][_0xe095('0x57')](_0x58952e[_0xe095('0x58')]);}})[_0xe095('0x1f')](respondWithResult(_0x2c4ffd,null))[_0xe095('0x28')](handleError(_0x2c4ffd,null));};exports[_0xe095('0x65')]=function(_0x2fdbb0,_0x52783b,_0x4d928b){var _0x210e16={'raw':![],'where':{}};var _0x3b86dd={};var _0x32931f={'count':0x0,'rows':[]};return db[_0xe095('0x4d')]['findOne']({'where':{'id':_0x2fdbb0[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x52783b,null))[_0xe095('0x1f')](function(_0xe448e1){if(_0xe448e1){_0x3b86dd['model']=_[_0xe095('0x52')](db[_0xe095('0x64')][_0xe095('0x53')]);_0x3b86dd[_0xe095('0x3f')]=_[_0xe095('0x52')](_0x2fdbb0[_0xe095('0x3f')]);_0x3b86dd[_0xe095('0x40')]=_[_0xe095('0x42')](_0x3b86dd[_0xe095('0x3e')],_0x3b86dd[_0xe095('0x3f')]);_0x210e16['attributes']=_[_0xe095('0x42')](_0x3b86dd[_0xe095('0x3e')],qs[_0xe095('0x54')](_0x2fdbb0[_0xe095('0x3f')][_0xe095('0x54')]));_0x210e16[_0xe095('0x41')]=_0x210e16[_0xe095('0x41')][_0xe095('0x43')]?_0x210e16[_0xe095('0x41')]:_0x3b86dd[_0xe095('0x3e')];if(!_0x2fdbb0[_0xe095('0x3f')][_0xe095('0x44')](_0xe095('0x45'))){_0x210e16[_0xe095('0x2f')]=qs[_0xe095('0x2f')](_0x2fdbb0[_0xe095('0x3f')][_0xe095('0x2f')]);_0x210e16[_0xe095('0x2c')]=qs[_0xe095('0x2c')](_0x2fdbb0[_0xe095('0x3f')][_0xe095('0x2c')]);}_0x210e16['order']=qs[_0xe095('0x47')](_0x2fdbb0[_0xe095('0x3f')][_0xe095('0x47')]);_0x210e16[_0xe095('0x48')]=qs[_0xe095('0x40')](_[_0xe095('0x49')](_0x2fdbb0['query'],_0x3b86dd['filters']));_0x210e16['where'][_0xe095('0x66')]=_0xe448e1['id'];if(_0x2fdbb0['query'][_0xe095('0x4a')]){_0x210e16[_0xe095('0x48')]=_[_0xe095('0x4b')](_0x210e16[_0xe095('0x48')],{'$or':_[_0xe095('0x3c')](_0x210e16[_0xe095('0x41')],function(_0x286c74){var _0x3838a5={};_0x3838a5[_0x286c74]={'$like':'%'+_0x2fdbb0[_0xe095('0x3f')][_0xe095('0x4a')]+'%'};return _0x3838a5;})});}_0x210e16=_[_0xe095('0x4b')]({},_0x210e16,_0x2fdbb0['options']);return db[_0xe095('0x64')][_0xe095('0x2e')]({'where':_0x210e16[_0xe095('0x48')]})[_0xe095('0x1f')](function(_0x5687d8){_0x32931f[_0xe095('0x2e')]=_0x5687d8;if(_0x2fdbb0[_0xe095('0x3f')]['includeAll']){_0x210e16['include']=[{'all':!![]}];}return db[_0xe095('0x64')]['findAll'](_0x210e16);})['then'](function(_0x6d3cb0){_0x32931f[_0xe095('0x50')]=_0x6d3cb0;return _0x32931f;});}})[_0xe095('0x1f')](respondWithFilteredResult(_0x52783b,_0x210e16))[_0xe095('0x28')](handleError(_0x52783b,null));};exports['removeDispositions']=function(_0xafef70,_0xab8349,_0x3fe99c){return db['OpenchannelAccount'][_0xe095('0x56')]({'where':{'id':_0xafef70[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0xab8349,null))[_0xe095('0x1f')](function(_0x204e36){if(_0x204e36){return _0x204e36[_0xe095('0x67')](_0xafef70[_0xe095('0x3f')][_0xe095('0x68')]);}})[_0xe095('0x1f')](respondWithStatusCode(_0xab8349,null))['catch'](handleError(_0xab8349,null));};exports[_0xe095('0x69')]=function(_0x278aea,_0x589539,_0x438b58){if(_0x278aea[_0xe095('0x58')]['id']){delete _0x278aea[_0xe095('0x58')]['id'];}return db[_0xe095('0x4d')]['find']({'where':{'id':_0x278aea[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x589539,null))[_0xe095('0x1f')](function(_0x509cca){if(_0x509cca){_0x278aea[_0xe095('0x58')]['OpenchannelAccountId']=_0x509cca['id'];return db[_0xe095('0x6a')][_0xe095('0x57')](_0x278aea[_0xe095('0x58')]);}})[_0xe095('0x1f')](respondWithResult(_0x589539,null))[_0xe095('0x28')](handleError(_0x589539,null));};exports[_0xe095('0x6b')]=function(_0x43978d,_0x212b27,_0x3348eb){var _0x57e79a={'raw':![],'where':{}};var _0xc4863c={};var _0x41edc2={'count':0x0,'rows':[]};return db[_0xe095('0x4d')][_0xe095('0x6c')]({'where':{'id':_0x43978d['params']['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x212b27,null))['then'](function(_0x455e89){if(_0x455e89){_0xc4863c['model']=_[_0xe095('0x52')](db[_0xe095('0x6a')]['rawAttributes']);_0xc4863c[_0xe095('0x3f')]=_[_0xe095('0x52')](_0x43978d['query']);_0xc4863c[_0xe095('0x40')]=_[_0xe095('0x42')](_0xc4863c['model'],_0xc4863c['query']);_0x57e79a[_0xe095('0x41')]=_[_0xe095('0x42')](_0xc4863c['model'],qs[_0xe095('0x54')](_0x43978d[_0xe095('0x3f')][_0xe095('0x54')]));_0x57e79a[_0xe095('0x41')]=_0x57e79a[_0xe095('0x41')][_0xe095('0x43')]?_0x57e79a[_0xe095('0x41')]:_0xc4863c['model'];if(!_0x43978d[_0xe095('0x3f')][_0xe095('0x44')](_0xe095('0x45'))){_0x57e79a[_0xe095('0x2f')]=qs['limit'](_0x43978d[_0xe095('0x3f')][_0xe095('0x2f')]);_0x57e79a['offset']=qs[_0xe095('0x2c')](_0x43978d[_0xe095('0x3f')]['offset']);}_0x57e79a[_0xe095('0x46')]=qs[_0xe095('0x47')](_0x43978d[_0xe095('0x3f')][_0xe095('0x47')]);_0x57e79a['where']=qs[_0xe095('0x40')](_[_0xe095('0x49')](_0x43978d[_0xe095('0x3f')],_0xc4863c[_0xe095('0x40')]));_0x57e79a[_0xe095('0x48')][_0xe095('0x66')]=_0x455e89['id'];if(_0x43978d[_0xe095('0x3f')][_0xe095('0x4a')]){_0x57e79a[_0xe095('0x48')]=_['merge'](_0x57e79a[_0xe095('0x48')],{'$or':_[_0xe095('0x3c')](_0x57e79a[_0xe095('0x41')],function(_0xece4f){var _0x367d37={};_0x367d37[_0xece4f]={'$like':'%'+_0x43978d[_0xe095('0x3f')][_0xe095('0x4a')]+'%'};return _0x367d37;})});}_0x57e79a=_[_0xe095('0x4b')]({},_0x57e79a,_0x43978d[_0xe095('0x55')]);return db['CannedAnswer']['count']({'where':_0x57e79a[_0xe095('0x48')]})[_0xe095('0x1f')](function(_0x3be01d){_0x41edc2['count']=_0x3be01d;if(_0x43978d[_0xe095('0x3f')]['includeAll']){_0x57e79a[_0xe095('0x4f')]=[{'all':!![]}];}return db[_0xe095('0x6a')][_0xe095('0x6d')](_0x57e79a);})[_0xe095('0x1f')](function(_0x2039bc){_0x41edc2[_0xe095('0x50')]=_0x2039bc;return _0x41edc2;});}})[_0xe095('0x1f')](respondWithFilteredResult(_0x212b27,_0x57e79a))[_0xe095('0x28')](handleError(_0x212b27,null));};exports[_0xe095('0x6e')]=function(_0x5beb01,_0x3d45f7,_0x1c5bca){return db[_0xe095('0x4d')][_0xe095('0x56')]({'where':{'id':_0x5beb01['params']['id']}})['then'](handleEntityNotFound(_0x3d45f7,null))[_0xe095('0x1f')](function(_0x4b95be){if(_0x4b95be){return _0x4b95be[_0xe095('0x6e')](_0x5beb01[_0xe095('0x3f')][_0xe095('0x68')]);}})[_0xe095('0x1f')](respondWithStatusCode(_0x3d45f7,null))['catch'](handleError(_0x3d45f7,null));};exports['notify']=function(_0x1ba015,_0x5a5ba5,_0x5dae04){var _0x2dbea9={'body':_0x1ba015[_0xe095('0x58')],'channel':_0xe095('0x6f')};var _0x9d0c60=[];var _0x153c2b=[];var _0x24e997={};var _0x19583f=![];return db[_0xe095('0x70')][_0xe095('0x62')]()[_0xe095('0x1f')](function(_0x474603){if(!_0x474603){throw new db[(_0xe095('0x71'))][(_0xe095('0x72'))](_0xe095('0x73'));}_0x9d0c60=_[_0xe095('0x74')](_[_0xe095('0x52')](_0x474603),[_0xe095('0x75'),_0xe095('0x76')]);_0x153c2b=_[_0xe095('0x74')](_[_0xe095('0x52')](_0x474603),[_0xe095('0x75'),_0xe095('0x76'),_0xe095('0x77'),_0xe095('0x78')]);if(_0x1ba015[_0xe095('0x58')]['id']){delete _0x1ba015[_0xe095('0x58')]['id'];}if(_[_0xe095('0x79')](_0x1ba015['body'][_0xe095('0x7a')])){throw new db[(_0xe095('0x71'))][(_0xe095('0x72'))](_0xe095('0x7b'));}if(_[_0xe095('0x79')](_0x1ba015[_0xe095('0x58')][_0xe095('0x58')])||_0x1ba015[_0xe095('0x58')][_0xe095('0x58')]===''){throw new db[(_0xe095('0x71'))][(_0xe095('0x72'))](_0xe095('0x7c'));}if(_['isNil'](_0x1ba015[_0xe095('0x58')][_0xe095('0x7d')])){throw new db[(_0xe095('0x71'))][(_0xe095('0x72'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x153c2b);}if(!_[_0xe095('0x7e')](_0x153c2b,_0x1ba015[_0xe095('0x58')][_0xe095('0x7d')])){throw new db['Sequelize'][(_0xe095('0x72'))](_0xe095('0x7f')+_0x153c2b);}_0x24e997[_0x1ba015['body'][_0xe095('0x7d')]]=_0x1ba015['body'][_0xe095('0x7a')];})[_0xe095('0x1f')](function(){return db[_0xe095('0x4d')][_0xe095('0x56')]({'where':{'id':_0x1ba015[_0xe095('0x61')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xe095('0x70')],'as':'Contacts','where':_0x24e997,'limit':0x1,'order':[[_0xe095('0x76'),'DESC']]}]},{'model':db[_0xe095('0x80')],'as':'Applications'}]});})[_0xe095('0x1f')](handleEntityNotFound(_0x5a5ba5,null))[_0xe095('0x1f')](function(_0x14d013){if(_0x14d013&&_0x14d013[_0xe095('0x81')]){_0x2dbea9[_0xe095('0x82')]=_0x14d013;_0x2dbea9[_0xe095('0x83')]=_0x14d013['Applications'];_0x2dbea9['list']=_0x14d013[_0xe095('0x81')];_0x2dbea9[_0xe095('0x83')]=_[_0xe095('0x84')](_0x2dbea9[_0xe095('0x83')],[_0xe095('0x85')],[_0xe095('0x86')]);if(_0x2dbea9[_0xe095('0x82')][_0xe095('0x87')]){delete _0x2dbea9['account']['Applications'];}if(_0x2dbea9[_0xe095('0x82')]['List']&&_0x2dbea9[_0xe095('0x82')][_0xe095('0x81')][_0xe095('0x88')][_0xe095('0x43')]){return _0x2dbea9[_0xe095('0x82')]['List'][_0xe095('0x88')][0x0];}var _0x4a01d4=_['defaults'](_0x1ba015[_0xe095('0x58')],{'firstName':_0x1ba015[_0xe095('0x58')][_0xe095('0x7a')],'ListId':_0x14d013[_0xe095('0x78')]});_0x4a01d4[_0x1ba015[_0xe095('0x58')]['mapKey']]=_0x1ba015[_0xe095('0x58')][_0xe095('0x7a')];return db['CmContact'][_0xe095('0x57')](_0x4a01d4,{'fields':_0x9d0c60,'raw':!![]});}})[_0xe095('0x1f')](handleEntityNotFound(_0x5a5ba5,null))['then'](function(_0x162c93){_0x2dbea9[_0xe095('0x89')]=_0x162c93;if(_0x162c93){var _0x38b21c={'ContactId':_0x162c93['id'],'OpenchannelAccountId':_0x1ba015[_0xe095('0x61')]['id'],'from':(_0x162c93['firstName']||'')+'\x20'+(_0x162c93[_0xe095('0x8a')]||'')};var _0x327ab1={'OpenchannelAccountId':_0x1ba015[_0xe095('0x61')]['id'],'closed':![]};if(_0x1ba015[_0xe095('0x58')][_0xe095('0x8b')]){_0x327ab1[_0xe095('0x8b')]=_0x1ba015[_0xe095('0x58')]['threadId'];return db[_0xe095('0x8c')][_0xe095('0x56')]({'where':_0x327ab1})[_0xe095('0x1f')](function(_0x4d28dc){if(_0x4d28dc){return[_0x4d28dc,![]];}_0x38b21c[_0xe095('0x8b')]=_0x1ba015['body'][_0xe095('0x8b')];_0x38b21c[_0xe095('0x8d')]=_0x1ba015[_0xe095('0x58')][_0xe095('0x8d')];return db[_0xe095('0x8c')]['create'](_0x38b21c)['then'](function(_0x1d5d02){return[_0x1d5d02,!![]];});});}else{_0x327ab1[_0xe095('0x8b')]=null;}_0x327ab1['ContactId']=_0x162c93['id'];return db[_0xe095('0x8c')][_0xe095('0x56')]({'where':_0x327ab1})['then'](function(_0x3ed79d){if(_0x3ed79d){return[_0x3ed79d,![]];}return db[_0xe095('0x8c')]['create'](_0x38b21c)['then'](function(_0xe40a99){return[_0xe40a99,!![]];});});}})['spread'](function(_0x3c7219,_0x36eab7){if(_0x3c7219){_0x19583f=_0x36eab7;if(!_0x36eab7){var _0x555432={'from':(_0x2dbea9['contact'][_0xe095('0x8e')]||'')+'\x20'+(_0x2dbea9['contact'][_0xe095('0x8a')]||'')};if(_0x1ba015[_0xe095('0x58')]['threadId']&&_0x1ba015['body'][_0xe095('0x8f')]&&_0x1ba015['body'][_0xe095('0x8b')]!=_0x1ba015[_0xe095('0x58')][_0xe095('0x8f')]){_0x555432['threadId']=_0x1ba015['body']['messageId'];}return _0x3c7219[_0xe095('0x32')](_0x555432);}else{return _0x3c7219;}}})['then'](function(_0x47b945){_0x2dbea9[_0xe095('0x90')]=_0x47b945['get']({'plain':!![]});_0x2dbea9[_0xe095('0x90')][_0xe095('0x91')]=_0x19583f;if(_0x2dbea9[_0xe095('0x90')][_0xe095('0x91')]){if(_0x2dbea9[_0xe095('0x82')]['autoclose']){_0x2dbea9['applications']['push']({'id':0x0,'priority':_0x2dbea9[_0xe095('0x83')][_0xe095('0x43')]+0x1,'app':_0xe095('0x92'),'appdata':_0xe095('0x93'),'interval':_0xe095('0x94')});}}return db[_0xe095('0x95')][_0xe095('0x57')]({'body':_0x1ba015['body']['body'],'OpenchannelAccountId':_0x1ba015[_0xe095('0x61')]['id'],'OpenchannelInteractionId':_0x47b945['id'],'direction':'in','ContactId':_0x2dbea9[_0xe095('0x89')]['id'],'AttachmentId':_0x1ba015['body'][_0xe095('0x96')]});})[_0xe095('0x1f')](function(_0x55e99b){_0x2dbea9[_0xe095('0x26')]=_0x55e99b;if(_0x2dbea9[_0xe095('0x90')]['UserId']){return db['User'][_0xe095('0x56')]({'attributes':['id',_0xe095('0x38')],'where':{'id':_0x2dbea9['interaction'][_0xe095('0x97')]}})[_0xe095('0x1f')](function(_0x2eb679){if(_0x2eb679){_0x2dbea9[_0xe095('0x83')][_0xe095('0x98')]({'id':0x0,'priority':0x0,'app':_0xe095('0x99'),'appdata':_0x2eb679[_0xe095('0x38')]+','+(_0x2dbea9[_0xe095('0x82')][_0xe095('0x9a')]||0xa),'interval':_0xe095('0x94')});_0x2dbea9[_0xe095('0x9b')]=![];}return respondWithRpcPromise('Start',_0xe095('0x9c'),_0x2dbea9);});}return respondWithRpcPromise(_0xe095('0x9d'),_0xe095('0x9c'),_0x2dbea9);})[_0xe095('0x1f')](function(_0x25bdf4){respondWithRpcPromise(_0xe095('0x9e'),_0xe095('0x9e'),{'event':_0xe095('0x9f'),'message':_0x25bdf4},client9002);return _0x25bdf4;})['then'](respondWithResult(_0x5a5ba5,null))[_0xe095('0x28')](handleError(_0x5a5ba5,null));};exports['addApplications']=function(_0x2c084d,_0x458d94,_0x5107d9){return db['OpenchannelAccount'][_0xe095('0x6c')]({'where':{'id':_0x2c084d[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x458d94,null))[_0xe095('0x1f')](function(_0x45b273){if(_0x45b273){return db[_0xe095('0xa0')][_0xe095('0xa1')](function(_0xbc5332){return db[_0xe095('0x80')]['destroy']({'where':{'OpenchannelAccountId':_0x2c084d[_0xe095('0x61')]['id']},'transaction':_0xbc5332})['then'](function(_0x5a5b54){var _0x4e7528=_['map'](_0x2c084d['body'],function(_0x15fbed){_0x15fbed['OpenchannelAccountId']=_0x2c084d[_0xe095('0x61')]['id'];return _0x15fbed;});return db['OpenchannelApplication'][_0xe095('0xa2')](_0x4e7528,{'transaction':_0xbc5332});});})[_0xe095('0x1f')](function(){return db['OpenchannelApplication'][_0xe095('0xa3')]({'where':{'OpenchannelAccountId':_0x2c084d[_0xe095('0x61')]['id']},'order':_0xe095('0x85')});});}})[_0xe095('0x1f')](respondWithResult(_0x458d94,null))[_0xe095('0x28')](handleError(_0x458d94,null));};exports['getApplications']=function(_0x3f4e7c,_0x3d8a08,_0x23120a){var _0x4af4a7={};var _0x311073={};var _0x5ac484;var _0x1541b3;return db[_0xe095('0x4d')][_0xe095('0x6c')]({'where':{'id':_0x3f4e7c[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x3d8a08,null))[_0xe095('0x1f')](function(_0x2a404e){if(_0x2a404e){_0x5ac484=_0x2a404e;_0x311073[_0xe095('0x3e')]=_[_0xe095('0x52')](db[_0xe095('0x80')][_0xe095('0x53')]);_0x311073[_0xe095('0x3f')]=_['keys'](_0x3f4e7c[_0xe095('0x3f')]);_0x311073[_0xe095('0x40')]=_[_0xe095('0x42')](_0x311073[_0xe095('0x3e')],_0x311073[_0xe095('0x3f')]);_0x4af4a7['attributes']=_[_0xe095('0x42')](_0x311073[_0xe095('0x3e')],qs[_0xe095('0x54')](_0x3f4e7c['query'][_0xe095('0x54')]));_0x4af4a7[_0xe095('0x41')]=_0x4af4a7[_0xe095('0x41')]['length']?_0x4af4a7['attributes']:_0x311073[_0xe095('0x3e')];_0x4af4a7[_0xe095('0x46')]=qs['sort'](_0x3f4e7c[_0xe095('0x3f')][_0xe095('0x47')]);_0x4af4a7['where']=qs[_0xe095('0x40')](_[_0xe095('0x49')](_0x3f4e7c[_0xe095('0x3f')],_0x311073[_0xe095('0x40')]));if(_0x3f4e7c[_0xe095('0x3f')][_0xe095('0x4a')]){_0x4af4a7[_0xe095('0x48')]=_['merge'](_0x4af4a7[_0xe095('0x48')],{'$or':_['map'](_0x4af4a7[_0xe095('0x41')],function(_0x1c0ac7){var _0x5e0b54={};_0x5e0b54[_0x1c0ac7]={'$like':'%'+_0x3f4e7c['query'][_0xe095('0x4a')]+'%'};return _0x5e0b54;})});}_0x4af4a7=_[_0xe095('0x4b')]({},_0x4af4a7,_0x3f4e7c[_0xe095('0x55')]);return _0x5ac484[_0xe095('0xa4')](_0x4af4a7);}})[_0xe095('0x1f')](function(_0x1f0124){if(_0x1f0124){_0x1541b3=_0x1f0124[_0xe095('0x43')];if(!_0x3f4e7c[_0xe095('0x3f')]['hasOwnProperty'](_0xe095('0x45'))){_0x4af4a7[_0xe095('0x2f')]=qs[_0xe095('0x2f')](_0x3f4e7c[_0xe095('0x3f')]['limit']);_0x4af4a7['offset']=qs[_0xe095('0x2c')](_0x3f4e7c['query'][_0xe095('0x2c')]);}return _0x5ac484[_0xe095('0xa4')](_0x4af4a7);}})['then'](function(_0x24f1e2){if(_0x24f1e2){return _0x24f1e2?{'count':_0x1541b3,'rows':_0x24f1e2}:null;}})['then'](respondWithResult(_0x3d8a08,null))[_0xe095('0x28')](handleError(_0x3d8a08,null));};exports[_0xe095('0xa5')]=function(_0x3f8cdd,_0x259e88,_0x457619){var _0x362e72={'raw':![],'where':{}};var _0x274fa5={};var _0x309b76={'count':0x0,'rows':[]};return db[_0xe095('0x4d')][_0xe095('0x6c')]({'where':{'id':_0x3f8cdd[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0x259e88,null))[_0xe095('0x1f')](function(_0x168c1d){if(_0x168c1d){_0x274fa5[_0xe095('0x3e')]=_[_0xe095('0x52')](db[_0xe095('0x8c')]['rawAttributes']);_0x274fa5[_0xe095('0x3f')]=_['keys'](_0x3f8cdd['query']);_0x274fa5[_0xe095('0x40')]=_[_0xe095('0x42')](_0x274fa5['model'],_0x274fa5[_0xe095('0x3f')]);_0x362e72[_0xe095('0x41')]=_[_0xe095('0x42')](_0x274fa5[_0xe095('0x3e')],qs[_0xe095('0x54')](_0x3f8cdd['query'][_0xe095('0x54')]));_0x362e72['attributes']=_0x362e72[_0xe095('0x41')]['length']?_0x362e72[_0xe095('0x41')]:_0x274fa5[_0xe095('0x3e')];if(!_0x3f8cdd[_0xe095('0x3f')]['hasOwnProperty'](_0xe095('0x45'))){_0x362e72[_0xe095('0x2f')]=qs[_0xe095('0x2f')](_0x3f8cdd[_0xe095('0x3f')]['limit']);_0x362e72[_0xe095('0x2c')]=qs[_0xe095('0x2c')](_0x3f8cdd[_0xe095('0x3f')]['offset']);}_0x362e72[_0xe095('0x46')]=qs[_0xe095('0x47')](_0x3f8cdd['query'][_0xe095('0x47')]);_0x362e72[_0xe095('0x48')]=qs['filters'](_[_0xe095('0x49')](_0x3f8cdd[_0xe095('0x3f')],_0x274fa5[_0xe095('0x40')]));_0x362e72[_0xe095('0x48')][_0xe095('0x66')]=_0x168c1d['id'];if(_0x3f8cdd[_0xe095('0x3f')][_0xe095('0x4a')]){_0x362e72['where']=_[_0xe095('0x4b')](_0x362e72['where'],{'$or':_['map'](_0x362e72[_0xe095('0x41')],function(_0x406b96){var _0x50217e={};_0x50217e[_0x406b96]={'$like':'%'+_0x3f8cdd['query'][_0xe095('0x4a')]+'%'};return _0x50217e;})});}_0x362e72=_[_0xe095('0x4b')]({},_0x362e72,_0x3f8cdd[_0xe095('0x55')]);return db[_0xe095('0x8c')][_0xe095('0x2e')]({'where':_0x362e72[_0xe095('0x48')]})[_0xe095('0x1f')](function(_0x4f5a4a){_0x309b76['count']=_0x4f5a4a;if(_0x3f8cdd[_0xe095('0x3f')][_0xe095('0x4e')]){_0x362e72[_0xe095('0x4f')]=[{'model':db[_0xe095('0x70')],'as':_0xe095('0xa6'),'required':![]},{'model':db['User'],'as':_0xe095('0xa7'),'attributes':[_0xe095('0x38'),_0xe095('0xa8'),_0xe095('0xa9')],'required':![]},{'model':db['Tag'],'as':_0xe095('0xaa'),'attributes':['id',_0xe095('0x38'),'color'],'where':_0x3f8cdd['query'][_0xe095('0xab')]?{'id':_0x3f8cdd['query']['tag']}:undefined,'required':_0x3f8cdd[_0xe095('0x3f')][_0xe095('0xab')]?!![]:![]}];}return db[_0xe095('0x8c')][_0xe095('0x6d')](_0x362e72);})[_0xe095('0x1f')](function(_0x237648){_0x309b76['rows']=_0x237648;return _0x309b76;});}})[_0xe095('0x1f')](respondWithFilteredResult(_0x259e88,_0x362e72))[_0xe095('0x28')](handleError(_0x259e88,null));};exports[_0xe095('0xac')]=function(_0x2fa38a,_0x25242f,_0x319bf3){return db[_0xe095('0x4d')]['find']({'where':{'id':_0x2fa38a[_0xe095('0x61')]['id']}})['then'](handleEntityNotFound(_0x25242f,null))['then'](function(_0x44cc46){if(_0x44cc46){return _0x44cc46[_0xe095('0xac')](_0x2fa38a[_0xe095('0x58')][_0xe095('0x68')],_[_0xe095('0xad')](_0x2fa38a[_0xe095('0x58')],[_0xe095('0x68'),'id'])||{})['spread'](function(_0x2ee0d3){for(var _0x4b7df3=0x0;_0x4b7df3<_0x2fa38a[_0xe095('0x58')][_0xe095('0x68')]['length'];_0x4b7df3+=0x1){socket['emit'](_0xe095('0xae'),{'UserId':Number(_0x2fa38a[_0xe095('0x58')][_0xe095('0x68')][_0x4b7df3]),'OpenchannelAccountId':Number(_0x2fa38a['params']['id'])});}return _0x2ee0d3;});}})['then'](respondWithResult(_0x25242f,null))[_0xe095('0x28')](handleError(_0x25242f,null));};exports[_0xe095('0xaf')]=function(_0x2c37ca,_0xc1fb7a,_0x101a88){return db[_0xe095('0x4d')]['find']({'where':{'id':_0x2c37ca[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0xc1fb7a,null))[_0xe095('0x1f')](function(_0x8f76fc){if(_0x8f76fc){return _0x8f76fc['removeAgents'](_0x2c37ca[_0xe095('0x3f')][_0xe095('0x68')])[_0xe095('0x1f')](function(){if(_[_0xe095('0xb0')](_0x2c37ca[_0xe095('0x3f')][_0xe095('0x68')])){for(var _0x5e8323=0x0;_0x5e8323<_0x2c37ca[_0xe095('0x3f')][_0xe095('0x68')]['length'];_0x5e8323+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x2c37ca[_0xe095('0x3f')]['ids'][_0x5e8323]),'OpenchannelAccountId':Number(_0x2c37ca[_0xe095('0x61')]['id'])});}}else{socket[_0xe095('0xb1')](_0xe095('0xb2'),{'UserId':Number(_0x2c37ca[_0xe095('0x3f')][_0xe095('0x68')]),'OpenchannelAccountId':Number(_0x2c37ca[_0xe095('0x61')]['id'])});}});}})[_0xe095('0x1f')](respondWithStatusCode(_0xc1fb7a,null))['catch'](handleError(_0xc1fb7a,null));};exports[_0xe095('0xb3')]=function(_0x90200d,_0xa4720b,_0x11cd4f){var _0x4294ad={};var _0x197061={};var _0x12a9bd;var _0x3aee63;return db['OpenchannelAccount'][_0xe095('0x6c')]({'where':{'id':_0x90200d[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0xa4720b,null))[_0xe095('0x1f')](function(_0x4eaf60){if(_0x4eaf60){_0x12a9bd=_0x4eaf60;_0x197061[_0xe095('0x3e')]=_['keys'](db[_0xe095('0xb4')]['rawAttributes']);_0x197061[_0xe095('0x3f')]=_[_0xe095('0x52')](_0x90200d[_0xe095('0x3f')]);_0x197061[_0xe095('0x40')]=_[_0xe095('0x42')](_0x197061[_0xe095('0x3e')],_0x197061[_0xe095('0x3f')]);_0x4294ad[_0xe095('0x41')]=_[_0xe095('0x42')](_0x197061[_0xe095('0x3e')],qs[_0xe095('0x54')](_0x90200d[_0xe095('0x3f')]['fields']));_0x4294ad[_0xe095('0x41')]=_0x4294ad['attributes'][_0xe095('0x43')]?_0x4294ad['attributes']:_0x197061[_0xe095('0x3e')];_0x4294ad[_0xe095('0x46')]=qs[_0xe095('0x47')](_0x90200d[_0xe095('0x3f')][_0xe095('0x47')]);_0x4294ad[_0xe095('0x48')]=qs[_0xe095('0x40')](_[_0xe095('0x49')](_0x90200d[_0xe095('0x3f')],_0x197061['filters']));if(_0x90200d[_0xe095('0x3f')][_0xe095('0x4a')]){_0x4294ad[_0xe095('0x48')]=_['merge'](_0x4294ad['where'],{'$or':_[_0xe095('0x3c')](_0x4294ad[_0xe095('0x41')],function(_0x58622c){var _0x13ae00={};_0x13ae00[_0x58622c]={'$like':'%'+_0x90200d[_0xe095('0x3f')][_0xe095('0x4a')]+'%'};return _0x13ae00;})});}_0x4294ad=_['merge']({},_0x4294ad,_0x90200d[_0xe095('0x55')]);return _0x12a9bd['getAgents'](_0x4294ad);}})['then'](function(_0x2ca190){if(_0x2ca190){_0x3aee63=_0x2ca190[_0xe095('0x43')];if(!_0x90200d['query'][_0xe095('0x44')](_0xe095('0x45'))){_0x4294ad[_0xe095('0x2f')]=qs[_0xe095('0x2f')](_0x90200d[_0xe095('0x3f')][_0xe095('0x2f')]);_0x4294ad[_0xe095('0x2c')]=qs[_0xe095('0x2c')](_0x90200d[_0xe095('0x3f')][_0xe095('0x2c')]);}return _0x12a9bd[_0xe095('0xb3')](_0x4294ad);}})[_0xe095('0x1f')](function(_0x1b0df8){if(_0x1b0df8){return _0x1b0df8?{'count':_0x3aee63,'rows':_0x1b0df8}:null;}})[_0xe095('0x1f')](respondWithResult(_0xa4720b,null))[_0xe095('0x28')](handleError(_0xa4720b,null));};exports[_0xe095('0x39')]=function(_0x420621,_0xe6ec42,_0x1dcb68){var _0x54a10f,_0x54e7bf,_0x4a9a17;if(_[_0xe095('0x79')](_0x420621[_0xe095('0x58')][_0xe095('0x58')])||_0x420621[_0xe095('0x58')]['body']===''){throw new db[(_0xe095('0x71'))][(_0xe095('0x72'))](_0xe095('0x7c'));}if(_[_0xe095('0x79')](_0x420621[_0xe095('0x58')]['to'])){}_0x54a10f=_0x420621[_0xe095('0x58')]['to'];return db['OpenchannelAccount']['findOne']({'where':{'id':_0x420621[_0xe095('0x61')]['id']}})[_0xe095('0x1f')](handleEntityNotFound(_0xe6ec42,null))[_0xe095('0x1f')](function(_0x56357f){if(_0x56357f){return db[_0xe095('0x4d')][_0xe095('0x56')]({'where':{'id':_0x56357f['id']},'include':[{'model':db[_0xe095('0xb5')],'as':_0xe095('0x81'),'include':[{'model':db[_0xe095('0x70')],'as':_0xe095('0x88'),'where':{[_0x56357f['mapKey']]:_0x54a10f},'limit':0x1,'order':[[_0xe095('0x76'),_0xe095('0xb6')]]}]}]})[_0xe095('0x1f')](handleEntityNotFound(_0xe6ec42,null))[_0xe095('0x1f')](function(_0x146d93){if(_0x146d93&&_0x146d93[_0xe095('0x81')]){_0x54e7bf=_0x146d93[_0xe095('0x34')]({'plain':!![]});if(_0x54e7bf[_0xe095('0x81')]&&_0x54e7bf['List'][_0xe095('0x88')][_0xe095('0x43')]){return _0x54e7bf[_0xe095('0x81')][_0xe095('0x88')][0x0];}return db[_0xe095('0x70')]['create'](_[_0xe095('0x16')](_0x420621[_0xe095('0x58')],{'firstName':_0x54a10f,[_0x146d93[_0xe095('0x7d')]]:_0x54a10f,'phone':_0x54a10f,'ListId':_0x54e7bf[_0xe095('0x78')]}));}})[_0xe095('0x1f')](handleEntityNotFound(_0xe6ec42,null))[_0xe095('0x1f')](function(_0x1565dc){if(_0x1565dc){_0x4a9a17=_0x1565dc;return db[_0xe095('0x8c')][_0xe095('0x56')]({'where':{'ContactId':_0x4a9a17['id'],'closed':![],'OpenchannelAccountId':_0x54e7bf['id']}})[_0xe095('0x1f')](function(_0x436e2c){if(_0x436e2c){return[_0x436e2c,![]];}return db[_0xe095('0x8c')][_0xe095('0x57')]({'UserId':_0x420621[_0xe095('0x59')]['id'],'ContactId':_0x4a9a17['id'],'OpenchannelAccountId':_0x54e7bf['id'],'lastMsgDirection':_0xe095('0xb7'),'Messages':[_[_0xe095('0x4b')](_0x420621[_0xe095('0x58')],{'read':![],'body':_0x420621[_0xe095('0x58')]['body'],'OpenchannelAccountId':_0x54e7bf['id'],'UserId':_0x420621[_0xe095('0x59')]['id'],'ContactId':_0x4a9a17['id']})]},{'include':[{'model':db[_0xe095('0x95')],'as':_0xe095('0xb8')}]})[_0xe095('0x1f')](function(_0x57ea51){return[_0x57ea51,!![]];});});}})[_0xe095('0xb9')](function(_0x20d777,_0x59b2f5){if(_0x59b2f5){return _0x20d777;}return db[_0xe095('0x95')]['create'](_[_0xe095('0x4b')](_0x420621[_0xe095('0x58')],{'read':![],'body':_0x420621['body'][_0xe095('0x58')],'OpenchannelAccountId':_0x54e7bf['id'],'OpenchannelInteractionId':_0x20d777['id'],'UserId':_0x420621[_0xe095('0x59')]['id'],'ContactId':_0x4a9a17['id']}))['then'](function(_0x22c9be){_0x20d777[_0xe095('0xba')][_0xe095('0xb8')]=[];_0x20d777['dataValues']['Messages'][_0xe095('0xbb')](_0x22c9be[_0xe095('0xba')]);return _0x20d777;});});}})[_0xe095('0x1f')](respondWithResult(_0xe6ec42,null))[_0xe095('0x28')](handleError(_0xe6ec42,null));};
\ No newline at end of file
index 71dbf10..53122aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['../../mysqldb','OpenchannelAccount','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4483,0x1a3));var _0x3448=function(_0x4f8c3a,_0xb71f3a){_0x4f8c3a=_0x4f8c3a-0x0;var _0x26ecaa=_0x4483[_0x4f8c3a];return _0x26ecaa;};'use strict';var EventEmitter=require(_0x3448('0x0'));var OpenchannelAccount=require(_0x3448('0x1'))['db'][_0x3448('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3448('0x3'),'afterUpdate':_0x3448('0x4'),'afterDestroy':_0x3448('0x5')};function emitEvent(_0x3a7178){return function(_0xef1a93,_0x5f5163,_0xeb5b8){OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178+':'+_0xef1a93['id'],_0xef1a93);OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178,_0xef1a93);_0xeb5b8(null);};}for(var e in events){if(events[_0x3448('0x7')](e)){var event=events[e];OpenchannelAccount[_0x3448('0x8')](e,emitEvent(event));}}module[_0x3448('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xe706=['hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelAccount','save','update','remove','emit'];(function(_0xac0cba,_0x416eef){var _0x44603e=function(_0x2a465b){while(--_0x2a465b){_0xac0cba['push'](_0xac0cba['shift']());}};_0x44603e(++_0x416eef);}(_0xe706,0xa3));var _0x6e70=function(_0x164df2,_0x4083ee){_0x164df2=_0x164df2-0x0;var _0x4abfa1=_0xe706[_0x164df2];return _0x4abfa1;};'use strict';var EventEmitter=require(_0x6e70('0x0'));var OpenchannelAccount=require(_0x6e70('0x1'))['db'][_0x6e70('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6e70('0x3'),'afterUpdate':_0x6e70('0x4'),'afterDestroy':_0x6e70('0x5')};function emitEvent(_0x7dfbc3){return function(_0x142c27,_0x2164a4,_0x376a8d){OpenchannelAccountEvents[_0x6e70('0x6')](_0x7dfbc3+':'+_0x142c27['id'],_0x142c27);OpenchannelAccountEvents[_0x6e70('0x6')](_0x7dfbc3,_0x142c27);_0x376a8d(null);};}for(var e in events){if(events[_0x6e70('0x7')](e)){var event=events[e];OpenchannelAccount[_0x6e70('0x8')](e,emitEvent(event));}}module[_0x6e70('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
index d8c50fb..ac15ddb 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(_0x21b67b,_0x25abc0){var _0x43a833=function(_0xdd7c8f){while(--_0xdd7c8f){_0x21b67b['push'](_0x21b67b['shift']());}};_0x43a833(++_0x25abc0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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(_0x4e35c8,_0x3f680b){var _0x49f719=function(_0x565707){while(--_0x565707){_0x4e35c8['push'](_0x4e35c8['shift']());}};_0x49f719(++_0x3f680b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 100b6f8..63f06c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['socket.io-emitter','./openchannelAccount.socket','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x5f2c5a,_0x4fe656){var _0x3391c7=function(_0x5190bf){while(--_0x5190bf){_0x5f2c5a['push'](_0x5f2c5a['shift']());}};_0x3391c7(++_0x4fe656);}(_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 moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});config[_0x3071('0xb')]=_[_0x3071('0xc')](config[_0x3071('0xb')],{'host':_0x3071('0xd'),'port':0x18eb});var socket=require(_0x3071('0xe'))(new Redis(config[_0x3071('0xb')]));require(_0x3071('0xf'))['register'](socket);function respondWithRpcPromise(_0x3457cd,_0x2610b4,_0x937259){return new BPromise(function(_0xff9a29,_0x1ce844){return client['request'](_0x3457cd,_0x937259)[_0x3071('0x10')](function(_0x11a7ee){logger[_0x3071('0x11')](_0x3071('0x12'),_0x2610b4,_0x3071('0x13'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x2610b4,_0x3071('0x13'),JSON['stringify'](_0x11a7ee));if(_0x11a7ee[_0x3071('0x14')]){if(_0x11a7ee[_0x3071('0x14')]['code']===0x1f4){logger[_0x3071('0x14')]('OpenchannelAccount,\x20%s,\x20%s',_0x2610b4,_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);return _0x1ce844(_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);}logger[_0x3071('0x14')](_0x3071('0x12'),_0x2610b4,_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);return _0xff9a29(_0x11a7ee[_0x3071('0x14')][_0x3071('0x15')]);}else{logger['info'](_0x3071('0x12'),_0x2610b4,_0x3071('0x13'));_0xff9a29(_0x11a7ee[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x17aee2){logger[_0x3071('0x14')](_0x3071('0x12'),_0x2610b4,_0x17aee2);_0x1ce844(_0x17aee2);});});}
\ No newline at end of file
+var _0x5ec6=['stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','defaults','redis','socket.io-emitter','./openchannelAccount.socket','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s'];(function(_0x54f7c0,_0x27af83){var _0x245d03=function(_0x1ad6c4){while(--_0x1ad6c4){_0x54f7c0['push'](_0x54f7c0['shift']());}};_0x245d03(++_0x27af83);}(_0x5ec6,0x7f));var _0x65ec=function(_0x1799b7,_0x64a16){_0x1799b7=_0x1799b7-0x0;var _0x2baed1=_0x5ec6[_0x1799b7];return _0x2baed1;};'use strict';var _=require(_0x65ec('0x0'));var util=require(_0x65ec('0x1'));var moment=require(_0x65ec('0x2'));var BPromise=require('bluebird');var rs=require(_0x65ec('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x65ec('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x65ec('0x5'))('rpc');var config=require(_0x65ec('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x65ec('0x7')][_0x65ec('0x8')]({'port':0x232a});config['redis']=_[_0x65ec('0x9')](config[_0x65ec('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x65ec('0xb'))(new Redis(config[_0x65ec('0xa')]));require(_0x65ec('0xc'))['register'](socket);function respondWithRpcPromise(_0x49aacd,_0x3cf126,_0x5e78f8){return new BPromise(function(_0x136928,_0x28fe68){return client['request'](_0x49aacd,_0x5e78f8)[_0x65ec('0xd')](function(_0xd7cf80){logger['info'](_0x65ec('0xe'),_0x3cf126,_0x65ec('0xf'));logger['debug'](_0x65ec('0x10'),_0x3cf126,_0x65ec('0xf'),JSON[_0x65ec('0x11')](_0xd7cf80));if(_0xd7cf80[_0x65ec('0x12')]){if(_0xd7cf80[_0x65ec('0x12')][_0x65ec('0x13')]===0x1f4){logger[_0x65ec('0x12')](_0x65ec('0xe'),_0x3cf126,_0xd7cf80['error'][_0x65ec('0x14')]);return _0x28fe68(_0xd7cf80[_0x65ec('0x12')][_0x65ec('0x14')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x3cf126,_0xd7cf80[_0x65ec('0x12')][_0x65ec('0x14')]);return _0x136928(_0xd7cf80[_0x65ec('0x12')]['message']);}else{logger[_0x65ec('0x15')](_0x65ec('0xe'),_0x3cf126,_0x65ec('0xf'));_0x136928(_0xd7cf80[_0x65ec('0x16')][_0x65ec('0x14')]);}})[_0x65ec('0x17')](function(_0x37c494){logger[_0x65ec('0x12')](_0x65ec('0xe'),_0x3cf126,_0x37c494);_0x28fe68(_0x37c494);});});}
\ No newline at end of file
index d8ee073..038a4a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaa4=['update','emit','removeListener','openchannelAccount:','./openchannelAccount.events','save','remove'];(function(_0x40292b,_0x3a5a7b){var _0x5e7b74=function(_0x1d085f){while(--_0x1d085f){_0x40292b['push'](_0x40292b['shift']());}};_0x5e7b74(++_0x3a5a7b);}(_0xfaa4,0x1a8));var _0x4faa=function(_0x3e2b20,_0x3c6432){_0x3e2b20=_0x3e2b20-0x0;var _0x174bcf=_0xfaa4[_0x3e2b20];return _0x174bcf;};'use strict';var OpenchannelAccountEvents=require(_0x4faa('0x0'));var events=[_0x4faa('0x1'),_0x4faa('0x2'),_0x4faa('0x3')];function createListener(_0x122c51,_0x1f79b7){return function(_0x5141d1){_0x1f79b7[_0x4faa('0x4')](_0x122c51,_0x5141d1);};}function removeListener(_0x819149,_0x144600){return function(){OpenchannelAccountEvents[_0x4faa('0x5')](_0x819149,_0x144600);};}exports['register']=function(_0x8117c3){for(var _0x6df371=0x0,_0xa46a7d=events['length'];_0x6df371<_0xa46a7d;_0x6df371++){var _0x528871=events[_0x6df371];var _0x5d476f=createListener(_0x4faa('0x6')+_0x528871,_0x8117c3);OpenchannelAccountEvents['on'](_0x528871,_0x5d476f);}};
\ No newline at end of file
+var _0xa1b9=['openchannelAccount:','./openchannelAccount.events','remove','update','emit','removeListener','register','length'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xa1b9,0x71));var _0x9a1b=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa1b9[_0xf0bcac];return _0x4e4c65;};'use strict';var OpenchannelAccountEvents=require(_0x9a1b('0x0'));var events=['save',_0x9a1b('0x1'),_0x9a1b('0x2')];function createListener(_0x52aa17,_0x3515cf){return function(_0x353bb4){_0x3515cf[_0x9a1b('0x3')](_0x52aa17,_0x353bb4);};}function removeListener(_0x226928,_0x59f846){return function(){OpenchannelAccountEvents[_0x9a1b('0x4')](_0x226928,_0x59f846);};}exports[_0x9a1b('0x5')]=function(_0x36712b){for(var _0x16ad8e=0x0,_0x47cb95=events[_0x9a1b('0x6')];_0x16ad8e<_0x47cb95;_0x16ad8e++){var _0x534151=events[_0x16ad8e];var _0x17b671=createListener(_0x9a1b('0x7')+_0x534151,_0x36712b);OpenchannelAccountEvents['on'](_0x534151,_0x17b671);}};
\ No newline at end of file
index bf4c9f9..990dcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a66=['./openchannelApplication.controller','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x6a66,0x13d));var _0x66a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6a66[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x66a6('0x0'));var util=require(_0x66a6('0x1'));var path=require(_0x66a6('0x2'));var timeout=require(_0x66a6('0x3'));var express=require(_0x66a6('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x66a6('0x5'));var interaction=require(_0x66a6('0x6'));var config=require('../../config/environment');var controller=require(_0x66a6('0x7'));router[_0x66a6('0x8')]('/',auth[_0x66a6('0x9')](),controller[_0x66a6('0xa')]);router[_0x66a6('0x8')](_0x66a6('0xb'),auth['isAuthenticated'](),controller[_0x66a6('0xc')]);router['post']('/',auth[_0x66a6('0x9')](),controller['create']);router[_0x66a6('0xd')](_0x66a6('0xb'),auth['isAuthenticated'](),controller[_0x66a6('0xe')]);router[_0x66a6('0xf')](_0x66a6('0xb'),auth[_0x66a6('0x9')](),controller[_0x66a6('0x10')]);module[_0x66a6('0x11')]=router;
\ No newline at end of file
+var _0x779c=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','post','create','put','/:id','update','delete','destroy','exports','util'];(function(_0x4c1ec2,_0x4f42b7){var _0x3f6f1c=function(_0xc82652){while(--_0xc82652){_0x4c1ec2['push'](_0x4c1ec2['shift']());}};_0x3f6f1c(++_0x4f42b7);}(_0x779c,0xef));var _0xc779=function(_0x2960a2,_0x586e48){_0x2960a2=_0x2960a2-0x0;var _0x34765f=_0x779c[_0x2960a2];return _0x34765f;};'use strict';var multer=require('multer');var util=require(_0xc779('0x0'));var path=require(_0xc779('0x1'));var timeout=require(_0xc779('0x2'));var express=require(_0xc779('0x3'));var router=express[_0xc779('0x4')]();var fs_extra=require(_0xc779('0x5'));var auth=require(_0xc779('0x6'));var interaction=require(_0xc779('0x7'));var config=require(_0xc779('0x8'));var controller=require('./openchannelApplication.controller');router[_0xc779('0x9')]('/',auth['isAuthenticated'](),controller[_0xc779('0xa')]);router[_0xc779('0x9')]('/:id',auth[_0xc779('0xb')](),controller['show']);router[_0xc779('0xc')]('/',auth[_0xc779('0xb')](),controller[_0xc779('0xd')]);router[_0xc779('0xe')](_0xc779('0xf'),auth[_0xc779('0xb')](),controller[_0xc779('0x10')]);router[_0xc779('0x11')](_0xc779('0xf'),auth[_0xc779('0xb')](),controller[_0xc779('0x12')]);module[_0xc779('0x13')]=router;
\ No newline at end of file
index 2c63b41..3a8c5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x517b=['TEXT','STRING','*,*,*,*','sequelize','INTEGER','noop'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x517b,0x8d));var _0xb517=function(_0x586586,_0x35596a){_0x586586=_0x586586-0x0;var _0x23b87e=_0x517b[_0x586586];return _0x23b87e;};'use strict';var Sequelize=require(_0xb517('0x0'));module['exports']={'priority':{'type':Sequelize[_0xb517('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb517('0x2')},'appdata':{'type':Sequelize[_0xb517('0x3')]()},'description':{'type':Sequelize[_0xb517('0x4')]},'interval':{'type':Sequelize[_0xb517('0x4')],'defaultValue':_0xb517('0x5')}};
\ No newline at end of file
+var _0x8a82=['exports','noop','STRING','*,*,*,*'];(function(_0x32e35d,_0x423109){var _0x8e0b30=function(_0x753005){while(--_0x753005){_0x32e35d['push'](_0x32e35d['shift']());}};_0x8e0b30(++_0x423109);}(_0x8a82,0x16c));var _0x28a8=function(_0xfb71e6,_0x3f137c){_0xfb71e6=_0xfb71e6-0x0;var _0x5befad=_0x8a82[_0xfb71e6];return _0x5befad;};'use strict';var Sequelize=require('sequelize');module[_0x28a8('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x28a8('0x1')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x28a8('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x28a8('0x3')}};
\ No newline at end of file
index 9e1c8df..8998f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc24=['limit','undefined','Content-Range','apply','reject','save','then','destroy','error','name','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','update','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x4a8e2e,_0x926de0){var _0x160d08=function(_0x3f9cbf){while(--_0x3f9cbf){_0x4a8e2e['push'](_0x4a8e2e['shift']());}};_0x160d08(++_0x926de0);}(_0xbc24,0x1ca));var _0x4bc2=function(_0x5e0114,_0x23cd90){_0x5e0114=_0x5e0114-0x0;var _0x9702cf=_0xbc24[_0x5e0114];return _0x9702cf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4bc2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4bc2('0x1'));var moment=require(_0x4bc2('0x2'));var BPromise=require(_0x4bc2('0x3'));var Mustache=require(_0x4bc2('0x4'));var util=require('util');var path=require('path');var sox=require(_0x4bc2('0x5'));var csv=require(_0x4bc2('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4bc2('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4bc2('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x4bc2('0x9'));var toCsv=require(_0x4bc2('0x6'));var querystring=require('querystring');var Papa=require(_0x4bc2('0xa'));var Redis=require(_0x4bc2('0xb'));var authService=require(_0x4bc2('0xc'));var qs=require(_0x4bc2('0xd'));var as=require(_0x4bc2('0xe'));var hardwareService=require(_0x4bc2('0xf'));var logger=require(_0x4bc2('0x10'))(_0x4bc2('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4bc2('0x12'));var db=require(_0x4bc2('0x13'))['db'];function respondWithStatusCode(_0x4878a9,_0x2b8189){_0x2b8189=_0x2b8189||0xcc;return function(_0x23cb23){if(_0x23cb23){return _0x4878a9[_0x4bc2('0x14')](_0x2b8189);}return _0x4878a9[_0x4bc2('0x15')](_0x2b8189)[_0x4bc2('0x16')]();};}function respondWithResult(_0x274613,_0x2b96bf){_0x2b96bf=_0x2b96bf||0xc8;return function(_0x2719d1){if(_0x2719d1){return _0x274613[_0x4bc2('0x15')](_0x2b96bf)[_0x4bc2('0x17')](_0x2719d1);}};}function respondWithFilteredResult(_0x249e82,_0x4fa391){return function(_0x3c7ae4){if(_0x3c7ae4){var _0x36bc96=typeof _0x4fa391[_0x4bc2('0x18')]==='undefined'&&typeof _0x4fa391[_0x4bc2('0x19')]===_0x4bc2('0x1a');var _0x8c364f=_0x3c7ae4['count'];var _0x4e6780=_0x36bc96?0x0:_0x4fa391[_0x4bc2('0x18')];var _0x4c91f5=_0x36bc96?_0x3c7ae4['count']:_0x4fa391['offset']+_0x4fa391[_0x4bc2('0x19')];var _0x1b0736;if(_0x4c91f5>=_0x8c364f){_0x4c91f5=_0x8c364f;_0x1b0736=0xc8;}else{_0x1b0736=0xce;}_0x249e82[_0x4bc2('0x15')](_0x1b0736);return _0x249e82['set'](_0x4bc2('0x1b'),_0x4e6780+'-'+_0x4c91f5+'/'+_0x8c364f)[_0x4bc2('0x17')](_0x3c7ae4);}return null;};}function patchUpdates(_0x2ebf5b){return function(_0x2f97c6){try{jsonpatch[_0x4bc2('0x1c')](_0x2f97c6,_0x2ebf5b,!![]);}catch(_0x2adb36){return BPromise[_0x4bc2('0x1d')](_0x2adb36);}return _0x2f97c6[_0x4bc2('0x1e')]();};}function saveUpdates(_0x144648,_0x5eb4ba){return function(_0x30d95a){if(_0x30d95a){return _0x30d95a['update'](_0x144648)[_0x4bc2('0x1f')](function(_0x515665){return _0x515665;});}return null;};}function removeEntity(_0x25d88e,_0x3e705b){return function(_0x29796d){if(_0x29796d){return _0x29796d[_0x4bc2('0x20')]()[_0x4bc2('0x1f')](function(){_0x25d88e[_0x4bc2('0x15')](0xcc)[_0x4bc2('0x16')]();});}};}function handleEntityNotFound(_0x5bf30d,_0x120a3d){return function(_0x401083){if(!_0x401083){_0x5bf30d['sendStatus'](0x194);}return _0x401083;};}function handleError(_0x4899cd,_0x38a860){_0x38a860=_0x38a860||0x1f4;return function(_0x48e354){logger[_0x4bc2('0x21')](_0x48e354['stack']);if(_0x48e354[_0x4bc2('0x22')]){delete _0x48e354[_0x4bc2('0x22')];}_0x4899cd[_0x4bc2('0x15')](_0x38a860)['send'](_0x48e354);};}exports[_0x4bc2('0x23')]=function(_0x2d0022,_0x4785fd){var _0x2d8781={},_0x5f20bf={},_0x2c0728={'count':0x0,'rows':[]};var _0xf962c7=_[_0x4bc2('0x24')](db[_0x4bc2('0x25')][_0x4bc2('0x26')],function(_0x16e95b){return{'name':_0x16e95b[_0x4bc2('0x27')],'type':_0x16e95b[_0x4bc2('0x28')][_0x4bc2('0x29')]};});_0x5f20bf['model']=_[_0x4bc2('0x24')](_0xf962c7,_0x4bc2('0x22'));_0x5f20bf[_0x4bc2('0x2a')]=_['keys'](_0x2d0022[_0x4bc2('0x2a')]);_0x5f20bf[_0x4bc2('0x2b')]=_[_0x4bc2('0x2c')](_0x5f20bf[_0x4bc2('0x2d')],_0x5f20bf[_0x4bc2('0x2a')]);_0x2d8781[_0x4bc2('0x2e')]=_['intersection'](_0x5f20bf[_0x4bc2('0x2d')],qs[_0x4bc2('0x2f')](_0x2d0022[_0x4bc2('0x2a')][_0x4bc2('0x2f')]));_0x2d8781[_0x4bc2('0x2e')]=_0x2d8781['attributes'][_0x4bc2('0x30')]?_0x2d8781['attributes']:_0x5f20bf[_0x4bc2('0x2d')];if(!_0x2d0022['query'][_0x4bc2('0x31')]('nolimit')){_0x2d8781['limit']=qs[_0x4bc2('0x19')](_0x2d0022[_0x4bc2('0x2a')]['limit']);_0x2d8781['offset']=qs[_0x4bc2('0x18')](_0x2d0022[_0x4bc2('0x2a')][_0x4bc2('0x18')]);}_0x2d8781[_0x4bc2('0x32')]=qs['sort'](_0x2d0022['query'][_0x4bc2('0x33')]);_0x2d8781[_0x4bc2('0x34')]=qs['filters'](_[_0x4bc2('0x35')](_0x2d0022['query'],_0x5f20bf[_0x4bc2('0x2b')]),_0xf962c7);if(_0x2d0022[_0x4bc2('0x2a')][_0x4bc2('0x36')]){_0x2d8781['where']=_[_0x4bc2('0x37')](_0x2d8781[_0x4bc2('0x34')],{'$or':_[_0x4bc2('0x24')](_0xf962c7,function(_0x495cec){if(_0x495cec[_0x4bc2('0x28')]!==_0x4bc2('0x38')){var _0x55865e={};_0x55865e[_0x495cec['name']]={'$like':'%'+_0x2d0022[_0x4bc2('0x2a')][_0x4bc2('0x36')]+'%'};return _0x55865e;}})});}_0x2d8781=_['merge']({},_0x2d8781,_0x2d0022[_0x4bc2('0x39')]);var _0x3f85a0={'where':_0x2d8781[_0x4bc2('0x34')]};return db[_0x4bc2('0x25')]['count'](_0x3f85a0)[_0x4bc2('0x1f')](function(_0x1972d4){_0x2c0728['count']=_0x1972d4;if(_0x2d0022['query'][_0x4bc2('0x3a')]){_0x2d8781[_0x4bc2('0x3b')]=[{'all':!![]}];}return db[_0x4bc2('0x25')][_0x4bc2('0x3c')](_0x2d8781);})['then'](function(_0x1e2f04){_0x2c0728['rows']=_0x1e2f04;return _0x2c0728;})[_0x4bc2('0x1f')](respondWithFilteredResult(_0x4785fd,_0x2d8781))[_0x4bc2('0x3d')](handleError(_0x4785fd,null));};exports[_0x4bc2('0x3e')]=function(_0x1830c3,_0x346ccd){var _0x28e3bc={'raw':!![],'where':{'id':_0x1830c3[_0x4bc2('0x3f')]['id']}},_0x3c6966={};_0x3c6966[_0x4bc2('0x2d')]=_['keys'](db[_0x4bc2('0x25')][_0x4bc2('0x26')]);_0x3c6966[_0x4bc2('0x2a')]=_[_0x4bc2('0x40')](_0x1830c3[_0x4bc2('0x2a')]);_0x3c6966[_0x4bc2('0x2b')]=_[_0x4bc2('0x2c')](_0x3c6966[_0x4bc2('0x2d')],_0x3c6966['query']);_0x28e3bc['attributes']=_['intersection'](_0x3c6966[_0x4bc2('0x2d')],qs[_0x4bc2('0x2f')](_0x1830c3[_0x4bc2('0x2a')]['fields']));_0x28e3bc[_0x4bc2('0x2e')]=_0x28e3bc['attributes'][_0x4bc2('0x30')]?_0x28e3bc['attributes']:_0x3c6966['model'];if(_0x1830c3[_0x4bc2('0x2a')][_0x4bc2('0x3a')]){_0x28e3bc['include']=[{'all':!![]}];}_0x28e3bc=_[_0x4bc2('0x37')]({},_0x28e3bc,_0x1830c3[_0x4bc2('0x39')]);return db[_0x4bc2('0x25')][_0x4bc2('0x41')](_0x28e3bc)[_0x4bc2('0x1f')](handleEntityNotFound(_0x346ccd,null))[_0x4bc2('0x1f')](respondWithResult(_0x346ccd,null))[_0x4bc2('0x3d')](handleError(_0x346ccd,null));};exports[_0x4bc2('0x42')]=function(_0x4f8db8,_0x1feca6){return db['OpenchannelApplication'][_0x4bc2('0x42')](_0x4f8db8[_0x4bc2('0x43')],{})['then'](respondWithResult(_0x1feca6,0xc9))['catch'](handleError(_0x1feca6,null));};exports[_0x4bc2('0x44')]=function(_0x3aff1a,_0x2548b7){if(_0x3aff1a[_0x4bc2('0x43')]['id']){delete _0x3aff1a[_0x4bc2('0x43')]['id'];}return db[_0x4bc2('0x25')][_0x4bc2('0x41')]({'where':{'id':_0x3aff1a[_0x4bc2('0x3f')]['id']}})[_0x4bc2('0x1f')](handleEntityNotFound(_0x2548b7,null))[_0x4bc2('0x1f')](saveUpdates(_0x3aff1a[_0x4bc2('0x43')],null))[_0x4bc2('0x1f')](respondWithResult(_0x2548b7,null))[_0x4bc2('0x3d')](handleError(_0x2548b7,null));};exports['destroy']=function(_0x204cf5,_0x11dde4){return db[_0x4bc2('0x25')]['find']({'where':{'id':_0x204cf5[_0x4bc2('0x3f')]['id']}})[_0x4bc2('0x1f')](handleEntityNotFound(_0x11dde4,null))['then'](removeEntity(_0x11dde4,null))[_0x4bc2('0x3d')](handleError(_0x11dde4,null));};
\ No newline at end of file
+var _0x7e76=['offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','error','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','pick','where','VIRTUAL','filter','options','includeAll','include','findAll','catch','params','merge','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x3f5210,_0x32f195){var _0x53c3ab=function(_0x341fa0){while(--_0x341fa0){_0x3f5210['push'](_0x3f5210['shift']());}};_0x53c3ab(++_0x32f195);}(_0x7e76,0x1ed));var _0x67e7=function(_0x39fe14,_0x598352){_0x39fe14=_0x39fe14-0x0;var _0x2fab0a=_0x7e76[_0x39fe14];return _0x2fab0a;};'use strict';var emlformat=require(_0x67e7('0x0'));var rimraf=require(_0x67e7('0x1'));var zipdir=require(_0x67e7('0x2'));var jsonpatch=require(_0x67e7('0x3'));var rp=require(_0x67e7('0x4'));var moment=require(_0x67e7('0x5'));var BPromise=require(_0x67e7('0x6'));var Mustache=require(_0x67e7('0x7'));var util=require(_0x67e7('0x8'));var path=require(_0x67e7('0x9'));var sox=require(_0x67e7('0xa'));var csv=require('to-csv');var ejs=require(_0x67e7('0xb'));var fs=require('fs');var fs_extra=require(_0x67e7('0xc'));var _=require(_0x67e7('0xd'));var squel=require(_0x67e7('0xe'));var crypto=require(_0x67e7('0xf'));var jsforce=require(_0x67e7('0x10'));var deskjs=require(_0x67e7('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x67e7('0x12'));var Redis=require(_0x67e7('0x13'));var authService=require(_0x67e7('0x14'));var qs=require(_0x67e7('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x67e7('0x16'));var logger=require(_0x67e7('0x17'))('api');var utils=require(_0x67e7('0x18'));var config=require(_0x67e7('0x19'));var licenseUtil=require(_0x67e7('0x1a'));var db=require(_0x67e7('0x1b'))['db'];function respondWithStatusCode(_0x12b4dc,_0x38d738){_0x38d738=_0x38d738||0xcc;return function(_0x18cdb0){if(_0x18cdb0){return _0x12b4dc[_0x67e7('0x1c')](_0x38d738);}return _0x12b4dc[_0x67e7('0x1d')](_0x38d738)[_0x67e7('0x1e')]();};}function respondWithResult(_0x4d4f04,_0x1b724b){_0x1b724b=_0x1b724b||0xc8;return function(_0x5abce9){if(_0x5abce9){return _0x4d4f04[_0x67e7('0x1d')](_0x1b724b)[_0x67e7('0x1f')](_0x5abce9);}};}function respondWithFilteredResult(_0x11bf29,_0x49a4f6){return function(_0xd0fb49){if(_0xd0fb49){var _0x25d98f=typeof _0x49a4f6[_0x67e7('0x20')]===_0x67e7('0x21')&&typeof _0x49a4f6['limit']===_0x67e7('0x21');var _0x4e626a=_0xd0fb49[_0x67e7('0x22')];var _0xbe472c=_0x25d98f?0x0:_0x49a4f6[_0x67e7('0x20')];var _0x4ea346=_0x25d98f?_0xd0fb49[_0x67e7('0x22')]:_0x49a4f6['offset']+_0x49a4f6[_0x67e7('0x23')];var _0x4e8fec;if(_0x4ea346>=_0x4e626a){_0x4ea346=_0x4e626a;_0x4e8fec=0xc8;}else{_0x4e8fec=0xce;}_0x11bf29[_0x67e7('0x1d')](_0x4e8fec);return _0x11bf29[_0x67e7('0x24')](_0x67e7('0x25'),_0xbe472c+'-'+_0x4ea346+'/'+_0x4e626a)[_0x67e7('0x1f')](_0xd0fb49);}return null;};}function patchUpdates(_0x244bef){return function(_0x3cb721){try{jsonpatch[_0x67e7('0x26')](_0x3cb721,_0x244bef,!![]);}catch(_0x134722){return BPromise['reject'](_0x134722);}return _0x3cb721['save']();};}function saveUpdates(_0x14f051,_0x13b49b){return function(_0x3d1d56){if(_0x3d1d56){return _0x3d1d56[_0x67e7('0x27')](_0x14f051)[_0x67e7('0x28')](function(_0x1f273b){return _0x1f273b;});}return null;};}function removeEntity(_0x9c5da0,_0x325397){return function(_0x8a342f){if(_0x8a342f){return _0x8a342f[_0x67e7('0x29')]()[_0x67e7('0x28')](function(){_0x9c5da0[_0x67e7('0x1d')](0xcc)[_0x67e7('0x1e')]();});}};}function handleEntityNotFound(_0x490f78,_0x49852a){return function(_0x45b1bf){if(!_0x45b1bf){_0x490f78[_0x67e7('0x1c')](0x194);}return _0x45b1bf;};}function handleError(_0x25360e,_0x1d5e1c){_0x1d5e1c=_0x1d5e1c||0x1f4;return function(_0x5e14d2){logger[_0x67e7('0x2a')](_0x5e14d2['stack']);if(_0x5e14d2[_0x67e7('0x2b')]){delete _0x5e14d2['name'];}_0x25360e[_0x67e7('0x1d')](_0x1d5e1c)[_0x67e7('0x2c')](_0x5e14d2);};}exports[_0x67e7('0x2d')]=function(_0x5ba8cc,_0x44edcb){var _0x2d8747={},_0x90d7d4={},_0x9b67c={'count':0x0,'rows':[]};var _0xb1ef6e=_[_0x67e7('0x2e')](db[_0x67e7('0x2f')][_0x67e7('0x30')],function(_0x97d96f){return{'name':_0x97d96f[_0x67e7('0x31')],'type':_0x97d96f[_0x67e7('0x32')]['key']};});_0x90d7d4[_0x67e7('0x33')]=_[_0x67e7('0x2e')](_0xb1ef6e,_0x67e7('0x2b'));_0x90d7d4[_0x67e7('0x34')]=_[_0x67e7('0x35')](_0x5ba8cc[_0x67e7('0x34')]);_0x90d7d4[_0x67e7('0x36')]=_[_0x67e7('0x37')](_0x90d7d4['model'],_0x90d7d4['query']);_0x2d8747[_0x67e7('0x38')]=_[_0x67e7('0x37')](_0x90d7d4[_0x67e7('0x33')],qs[_0x67e7('0x39')](_0x5ba8cc['query'][_0x67e7('0x39')]));_0x2d8747['attributes']=_0x2d8747[_0x67e7('0x38')][_0x67e7('0x3a')]?_0x2d8747[_0x67e7('0x38')]:_0x90d7d4[_0x67e7('0x33')];if(!_0x5ba8cc[_0x67e7('0x34')]['hasOwnProperty'](_0x67e7('0x3b'))){_0x2d8747[_0x67e7('0x23')]=qs[_0x67e7('0x23')](_0x5ba8cc[_0x67e7('0x34')][_0x67e7('0x23')]);_0x2d8747[_0x67e7('0x20')]=qs['offset'](_0x5ba8cc[_0x67e7('0x34')][_0x67e7('0x20')]);}_0x2d8747[_0x67e7('0x3c')]=qs['sort'](_0x5ba8cc[_0x67e7('0x34')]['sort']);_0x2d8747['where']=qs[_0x67e7('0x36')](_[_0x67e7('0x3d')](_0x5ba8cc[_0x67e7('0x34')],_0x90d7d4[_0x67e7('0x36')]),_0xb1ef6e);if(_0x5ba8cc[_0x67e7('0x34')]['filter']){_0x2d8747[_0x67e7('0x3e')]=_['merge'](_0x2d8747['where'],{'$or':_[_0x67e7('0x2e')](_0xb1ef6e,function(_0x596e77){if(_0x596e77['type']!==_0x67e7('0x3f')){var _0x189c30={};_0x189c30[_0x596e77[_0x67e7('0x2b')]]={'$like':'%'+_0x5ba8cc[_0x67e7('0x34')][_0x67e7('0x40')]+'%'};return _0x189c30;}})});}_0x2d8747=_['merge']({},_0x2d8747,_0x5ba8cc[_0x67e7('0x41')]);var _0x7bfb28={'where':_0x2d8747[_0x67e7('0x3e')]};return db[_0x67e7('0x2f')][_0x67e7('0x22')](_0x7bfb28)[_0x67e7('0x28')](function(_0x352e17){_0x9b67c[_0x67e7('0x22')]=_0x352e17;if(_0x5ba8cc[_0x67e7('0x34')][_0x67e7('0x42')]){_0x2d8747[_0x67e7('0x43')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0x67e7('0x44')](_0x2d8747);})[_0x67e7('0x28')](function(_0x277d38){_0x9b67c['rows']=_0x277d38;return _0x9b67c;})[_0x67e7('0x28')](respondWithFilteredResult(_0x44edcb,_0x2d8747))[_0x67e7('0x45')](handleError(_0x44edcb,null));};exports['show']=function(_0x5c8f72,_0x3d84fd){var _0x457e97={'raw':!![],'where':{'id':_0x5c8f72[_0x67e7('0x46')]['id']}},_0x328ac2={};_0x328ac2['model']=_['keys'](db[_0x67e7('0x2f')][_0x67e7('0x30')]);_0x328ac2['query']=_[_0x67e7('0x35')](_0x5c8f72['query']);_0x328ac2['filters']=_['intersection'](_0x328ac2[_0x67e7('0x33')],_0x328ac2[_0x67e7('0x34')]);_0x457e97[_0x67e7('0x38')]=_[_0x67e7('0x37')](_0x328ac2[_0x67e7('0x33')],qs['fields'](_0x5c8f72['query'][_0x67e7('0x39')]));_0x457e97[_0x67e7('0x38')]=_0x457e97[_0x67e7('0x38')][_0x67e7('0x3a')]?_0x457e97['attributes']:_0x328ac2[_0x67e7('0x33')];if(_0x5c8f72[_0x67e7('0x34')][_0x67e7('0x42')]){_0x457e97[_0x67e7('0x43')]=[{'all':!![]}];}_0x457e97=_[_0x67e7('0x47')]({},_0x457e97,_0x5c8f72[_0x67e7('0x41')]);return db['OpenchannelApplication'][_0x67e7('0x48')](_0x457e97)[_0x67e7('0x28')](handleEntityNotFound(_0x3d84fd,null))[_0x67e7('0x28')](respondWithResult(_0x3d84fd,null))['catch'](handleError(_0x3d84fd,null));};exports[_0x67e7('0x49')]=function(_0x2a8d17,_0x307110){return db[_0x67e7('0x2f')][_0x67e7('0x49')](_0x2a8d17[_0x67e7('0x4a')],{})[_0x67e7('0x28')](respondWithResult(_0x307110,0xc9))['catch'](handleError(_0x307110,null));};exports[_0x67e7('0x27')]=function(_0x12c0ae,_0x217afc){if(_0x12c0ae[_0x67e7('0x4a')]['id']){delete _0x12c0ae['body']['id'];}return db[_0x67e7('0x2f')][_0x67e7('0x48')]({'where':{'id':_0x12c0ae[_0x67e7('0x46')]['id']}})[_0x67e7('0x28')](handleEntityNotFound(_0x217afc,null))[_0x67e7('0x28')](saveUpdates(_0x12c0ae[_0x67e7('0x4a')],null))['then'](respondWithResult(_0x217afc,null))[_0x67e7('0x45')](handleError(_0x217afc,null));};exports[_0x67e7('0x29')]=function(_0x3ab156,_0x549a4d){return db[_0x67e7('0x2f')][_0x67e7('0x48')]({'where':{'id':_0x3ab156['params']['id']}})[_0x67e7('0x28')](handleEntityNotFound(_0x549a4d,null))[_0x67e7('0x28')](removeEntity(_0x549a4d,null))[_0x67e7('0x45')](handleError(_0x549a4d,null));};
\ No newline at end of file
index c7aed74..ecba940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0a=['OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','./openchannelApplication.attributes'];(function(_0x41cfd9,_0xf93b64){var _0x247c7f=function(_0x19aed7){while(--_0x19aed7){_0x41cfd9['push'](_0x41cfd9['shift']());}};_0x247c7f(++_0xf93b64);}(_0xec0a,0x180));var _0xaec0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xec0a[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xaec0('0x0'));var util=require('util');var logger=require(_0xaec0('0x1'))(_0xaec0('0x2'));var moment=require(_0xaec0('0x3'));var BPromise=require('bluebird');var rp=require(_0xaec0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xaec0('0x5'));module['exports']=function(_0x5c0351,_0x1c81a3){return _0x5c0351['define'](_0xaec0('0x6'),attributes,{'tableName':_0xaec0('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaec0('0x8'),'collate':_0xaec0('0x9')});};
\ No newline at end of file
+var _0xde13=['openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication'];(function(_0x53156a,_0x233431){var _0xe03e5d=function(_0x299452){while(--_0x299452){_0x53156a['push'](_0x53156a['shift']());}};_0xe03e5d(++_0x233431);}(_0xde13,0x143));var _0x3de1=function(_0x218b5f,_0x43a463){_0x218b5f=_0x218b5f-0x0;var _0x2a3332=_0xde13[_0x218b5f];return _0x2a3332;};'use strict';var _=require(_0x3de1('0x0'));var util=require(_0x3de1('0x1'));var logger=require(_0x3de1('0x2'))(_0x3de1('0x3'));var moment=require(_0x3de1('0x4'));var BPromise=require(_0x3de1('0x5'));var rp=require(_0x3de1('0x6'));var fs=require('fs');var path=require(_0x3de1('0x7'));var rimraf=require('rimraf');var config=require(_0x3de1('0x8'));var attributes=require(_0x3de1('0x9'));module[_0x3de1('0xa')]=function(_0x45dff1,_0x56fcbe){return _0x45dff1[_0x3de1('0xb')](_0x3de1('0xc'),attributes,{'tableName':_0x3de1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3de1('0xe'),'collate':_0x3de1('0xf')});};
\ No newline at end of file
index cc62a69..5ee65a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4345=['attributes','limit','then','debug','UpdateOpenchannelApplication','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','OpenchannelApplication','body','options'];(function(_0x5989df,_0x50629e){var _0x3a6465=function(_0x37e794){while(--_0x37e794){_0x5989df['push'](_0x5989df['shift']());}};_0x3a6465(++_0x50629e);}(_0x4345,0x11e));var _0x5434=function(_0x230053,_0x568e2b){_0x230053=_0x230053-0x0;var _0x5b740d=_0x4345[_0x230053];return _0x5b740d;};'use strict';var _=require('lodash');var util=require(_0x5434('0x0'));var moment=require(_0x5434('0x1'));var BPromise=require(_0x5434('0x2'));var rs=require(_0x5434('0x3'));var fs=require('fs');var Redis=require(_0x5434('0x4'));var db=require(_0x5434('0x5'))['db'];var utils=require(_0x5434('0x6'));var logger=require(_0x5434('0x7'))(_0x5434('0x8'));var config=require(_0x5434('0x9'));var jayson=require(_0x5434('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x228d57,_0x49f30a,_0x3f29e1){return new BPromise(function(_0xf6eae1,_0x121c97){return client['request'](_0x228d57,_0x3f29e1)['then'](function(_0x891a08){logger[_0x5434('0xb')](_0x5434('0xc'),_0x49f30a,_0x5434('0xd'));logger['debug'](_0x5434('0xe'),_0x49f30a,_0x5434('0xd'),JSON[_0x5434('0xf')](_0x891a08));if(_0x891a08[_0x5434('0x10')]){if(_0x891a08['error']['code']===0x1f4){logger['error'](_0x5434('0xc'),_0x49f30a,_0x891a08[_0x5434('0x10')][_0x5434('0x11')]);return _0x121c97(_0x891a08[_0x5434('0x10')][_0x5434('0x11')]);}logger[_0x5434('0x10')](_0x5434('0xc'),_0x49f30a,_0x891a08[_0x5434('0x10')]['message']);return _0xf6eae1(_0x891a08[_0x5434('0x10')][_0x5434('0x11')]);}else{logger['info'](_0x5434('0xc'),_0x49f30a,_0x5434('0xd'));_0xf6eae1(_0x891a08[_0x5434('0x12')][_0x5434('0x11')]);}})['catch'](function(_0x37aa67){logger[_0x5434('0x10')](_0x5434('0xc'),_0x49f30a,_0x37aa67);_0x121c97(_0x37aa67);});});}exports['UpdateOpenchannelApplication']=function(_0x5969f2){var _0x132624=this;return new Promise(function(_0x256960,_0x41fe16){return db[_0x5434('0x13')]['update'](_0x5969f2[_0x5434('0x14')],{'raw':_0x5969f2[_0x5434('0x15')]?_0x5969f2['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5969f2[_0x5434('0x15')]?_0x5969f2[_0x5434('0x15')]['where']||null:null,'attributes':_0x5969f2[_0x5434('0x15')]?_0x5969f2[_0x5434('0x15')][_0x5434('0x16')]||null:null,'limit':_0x5969f2['options']?_0x5969f2['options'][_0x5434('0x17')]||null:null})[_0x5434('0x18')](function(_0x13c9cb){logger[_0x5434('0xb')]('UpdateOpenchannelApplication',_0x5969f2);logger[_0x5434('0x19')](_0x5434('0x1a'),_0x5969f2,JSON[_0x5434('0xf')](_0x13c9cb));_0x256960(_0x13c9cb);})[_0x5434('0x1b')](function(_0x3ec81f){logger[_0x5434('0x10')]('UpdateOpenchannelApplication',_0x3ec81f[_0x5434('0x11')],_0x5969f2);_0x41fe16(_0x132624[_0x5434('0x10')](0x1f4,_0x3ec81f[_0x5434('0x11')]));});});};
\ No newline at end of file
+var _0xe6ea=['stringify','error','message','OpenchannelApplication,\x20%s,\x20%s','result','OpenchannelApplication','update','options','where','attributes','then','UpdateOpenchannelApplication','debug','catch','moment','randomstring','ioredis','../../config/logger','rpc','request','info','request\x20sent'];(function(_0x6d6a66,_0x2924af){var _0x11eb6e=function(_0x52e55a){while(--_0x52e55a){_0x6d6a66['push'](_0x6d6a66['shift']());}};_0x11eb6e(++_0x2924af);}(_0xe6ea,0x116));var _0xae6e=function(_0x2f56a0,_0x11f0a1){_0x2f56a0=_0x2f56a0-0x0;var _0x2ce8e9=_0xe6ea[_0x2f56a0];return _0x2ce8e9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xae6e('0x0'));var BPromise=require('bluebird');var rs=require(_0xae6e('0x1'));var fs=require('fs');var Redis=require(_0xae6e('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xae6e('0x3'))(_0xae6e('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x438093,_0x4e58c6,_0x4d5095){return new BPromise(function(_0x55c6a0,_0xf6f2a0){return client[_0xae6e('0x5')](_0x438093,_0x4d5095)['then'](function(_0x29d4ee){logger[_0xae6e('0x6')]('OpenchannelApplication,\x20%s,\x20%s',_0x4e58c6,'request\x20sent');logger['debug']('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x4e58c6,_0xae6e('0x7'),JSON[_0xae6e('0x8')](_0x29d4ee));if(_0x29d4ee['error']){if(_0x29d4ee[_0xae6e('0x9')]['code']===0x1f4){logger[_0xae6e('0x9')]('OpenchannelApplication,\x20%s,\x20%s',_0x4e58c6,_0x29d4ee[_0xae6e('0x9')][_0xae6e('0xa')]);return _0xf6f2a0(_0x29d4ee['error'][_0xae6e('0xa')]);}logger['error'](_0xae6e('0xb'),_0x4e58c6,_0x29d4ee[_0xae6e('0x9')]['message']);return _0x55c6a0(_0x29d4ee['error']['message']);}else{logger['info'](_0xae6e('0xb'),_0x4e58c6,'request\x20sent');_0x55c6a0(_0x29d4ee[_0xae6e('0xc')][_0xae6e('0xa')]);}})['catch'](function(_0x325e7b){logger[_0xae6e('0x9')]('OpenchannelApplication,\x20%s,\x20%s',_0x4e58c6,_0x325e7b);_0xf6f2a0(_0x325e7b);});});}exports['UpdateOpenchannelApplication']=function(_0x1bd38d){var _0x39f09c=this;return new Promise(function(_0x36f71e,_0xbe5940){return db[_0xae6e('0xd')][_0xae6e('0xe')](_0x1bd38d['body'],{'raw':_0x1bd38d[_0xae6e('0xf')]?_0x1bd38d[_0xae6e('0xf')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1bd38d[_0xae6e('0xf')]?_0x1bd38d['options'][_0xae6e('0x10')]||null:null,'attributes':_0x1bd38d[_0xae6e('0xf')]?_0x1bd38d[_0xae6e('0xf')][_0xae6e('0x11')]||null:null,'limit':_0x1bd38d[_0xae6e('0xf')]?_0x1bd38d[_0xae6e('0xf')]['limit']||null:null})[_0xae6e('0x12')](function(_0x4304b8){logger[_0xae6e('0x6')](_0xae6e('0x13'),_0x1bd38d);logger[_0xae6e('0x14')]('UpdateOpenchannelApplication',_0x1bd38d,JSON[_0xae6e('0x8')](_0x4304b8));_0x36f71e(_0x4304b8);})[_0xae6e('0x15')](function(_0x22e4ba){logger['error']('UpdateOpenchannelApplication',_0x22e4ba[_0xae6e('0xa')],_0x1bd38d);_0xbe5940(_0x39f09c[_0xae6e('0x9')](0x1f4,_0x22e4ba[_0xae6e('0xa')]));});});};
\ No newline at end of file
index a2539a1..2e289ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefa0=['describe','/:id/messages','/:id/download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','update','delete','/:id','openchannelinteraction:destroy','destroy','exports','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe'];(function(_0x2b6814,_0x39a2cf){var _0x488c4c=function(_0x1722a5){while(--_0x1722a5){_0x2b6814['push'](_0x2b6814['shift']());}};_0x488c4c(++_0x39a2cf);}(_0xefa0,0xcf));var _0x0efa=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xefa0[_0x42cae2];return _0x5f256f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0efa('0x0'));var timeout=require(_0x0efa('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0efa('0x2'));var auth=require(_0x0efa('0x3'));var interaction=require(_0x0efa('0x4'));var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router['get']('/',auth[_0x0efa('0x5')](),controller[_0x0efa('0x6')]);router[_0x0efa('0x7')](_0x0efa('0x8'),auth['isAuthenticated'](),controller[_0x0efa('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x0efa('0x7')](_0x0efa('0xa'),auth[_0x0efa('0x5')](),controller['getMessages']);router[_0x0efa('0x7')](_0x0efa('0xb'),auth['isAuthenticated'](),controller['download']);router[_0x0efa('0xc')]('/',auth[_0x0efa('0x5')](),controller[_0x0efa('0xd')]);router['post']('/:id/messages',auth[_0x0efa('0x5')](),controller[_0x0efa('0xe')]);router[_0x0efa('0xc')](_0x0efa('0xf'),auth[_0x0efa('0x5')](),interaction[_0x0efa('0x10')](_0x0efa('0x11'),_0x0efa('0x12')),controller[_0x0efa('0x13')]);router[_0x0efa('0x14')]('/:id',auth['isAuthenticated'](),interaction[_0x0efa('0x10')]('openchannel','openchannelinteraction:update'),controller[_0x0efa('0x15')]);router[_0x0efa('0x16')](_0x0efa('0x17'),auth[_0x0efa('0x5')](),interaction[_0x0efa('0x10')]('openchannel',_0x0efa('0x18')),controller[_0x0efa('0x19')]);router[_0x0efa('0x16')](_0x0efa('0xf'),auth[_0x0efa('0x5')](),controller['removeTags']);module[_0x0efa('0x1a')]=router;
\ No newline at end of file
+var _0x4464=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','get','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','openchannel','addTags','put','openchannelinteraction:update','update','delete','tracked','openchannelinteraction:destroy','/:id/tags','exports','util','path','connect-timeout'];(function(_0x44d70e,_0x3e1b2c){var _0x17f69f=function(_0x3450fd){while(--_0x3450fd){_0x44d70e['push'](_0x44d70e['shift']());}};_0x17f69f(++_0x3e1b2c);}(_0x4464,0x159));var _0x4446=function(_0xe565bf,_0x4059ea){_0xe565bf=_0xe565bf-0x0;var _0x1a8eb2=_0x4464[_0xe565bf];return _0x1a8eb2;};'use strict';var multer=require('multer');var util=require(_0x4446('0x0'));var path=require(_0x4446('0x1'));var timeout=require(_0x4446('0x2'));var express=require(_0x4446('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4446('0x4'));var interaction=require(_0x4446('0x5'));var config=require(_0x4446('0x6'));var controller=require('./openchannelInteraction.controller');router['get']('/',auth[_0x4446('0x7')](),controller[_0x4446('0x8')]);router['get'](_0x4446('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x4446('0xa')](_0x4446('0xb'),auth['isAuthenticated'](),controller[_0x4446('0xc')]);router[_0x4446('0xa')](_0x4446('0xd'),auth['isAuthenticated'](),controller[_0x4446('0xe')]);router[_0x4446('0xa')](_0x4446('0xf'),auth[_0x4446('0x7')](),controller[_0x4446('0x10')]);router[_0x4446('0x11')]('/',auth['isAuthenticated'](),controller[_0x4446('0x12')]);router[_0x4446('0x11')]('/:id/messages',auth[_0x4446('0x7')](),controller['addMessage']);router['post']('/:id/tags',auth[_0x4446('0x7')](),interaction['tracked'](_0x4446('0x13'),'openchannelinteraction:addtags'),controller[_0x4446('0x14')]);router[_0x4446('0x15')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x4446('0x13'),_0x4446('0x16')),controller[_0x4446('0x17')]);router[_0x4446('0x18')]('/:id',auth[_0x4446('0x7')](),interaction[_0x4446('0x19')](_0x4446('0x13'),_0x4446('0x1a')),controller['destroy']);router[_0x4446('0x18')](_0x4446('0x1b'),auth['isAuthenticated'](),controller['removeTags']);module[_0x4446('0x1c')]=router;
\ No newline at end of file
index 5747a2b..90a35f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04d0=['STRING','ENUM','BOOLEAN','DATE'];(function(_0x586bdd,_0x5c7c24){var _0x40dd38=function(_0x59321b){while(--_0x59321b){_0x586bdd['push'](_0x586bdd['shift']());}};_0x40dd38(++_0x5c7c24);}(_0x04d0,0x10a));var _0x004d=function(_0x474334,_0x4c9b2f){_0x474334=_0x474334-0x0;var _0x5aff9c=_0x04d0[_0x474334];return _0x5aff9c;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0x004d('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x004d('0x1')]},'disposition':{'type':Sequelize[_0x004d('0x2')]},'secondDisposition':{'type':Sequelize[_0x004d('0x2')]},'thirdDisposition':{'type':Sequelize[_0x004d('0x2')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x004d('0x2')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x004d('0x1')]},'lastMsgDirection':{'type':Sequelize[_0x004d('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x004d('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0x004d('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf181=['sequelize','exports','BOOLEAN','STRING','DATE','ENUM'];(function(_0x533cbd,_0x23b614){var _0x5c7156=function(_0x276c50){while(--_0x276c50){_0x533cbd['push'](_0x533cbd['shift']());}};_0x5c7156(++_0x23b614);}(_0xf181,0x6c));var _0x1f18=function(_0x5625d7,_0x203f58){_0x5625d7=_0x5625d7-0x0;var _0x1d6e86=_0xf181[_0x5625d7];return _0x1d6e86;};'use strict';var Sequelize=require(_0x1f18('0x0'));module[_0x1f18('0x1')]={'closed':{'type':Sequelize[_0x1f18('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x1f18('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1f18('0x3')]},'note':{'type':Sequelize[_0x1f18('0x3')]},'read1stAt':{'type':Sequelize[_0x1f18('0x4')]},'threadId':{'type':Sequelize[_0x1f18('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x1f18('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x1f18('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x1f18('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x1f18('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 2ae9596..2758759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1286=['a.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.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','options','create','describe','OpenchannelMessage','addMessage','ids','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','addTags','setTags','omit','spread','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','User','CmContact','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','Openchannel','N.A.','closedAt','disposition','threadId','Public','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','firstName','lastName','renderFile','downloadInteraction.ejs','transcript-','.pdf','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','ui.OpenchannelInteractionId','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','split','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','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','isEmpty','OpenchannelAccountId','concat','createdAt','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','i.from\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','a.key'];(function(_0x32d4ff,_0x53af88){var _0x3f0e32=function(_0x569ffa){while(--_0x569ffa){_0x32d4ff['push'](_0x32d4ff['shift']());}};_0x3f0e32(++_0x53af88);}(_0x1286,0x14f));var _0x6128=function(_0x148879,_0x5b4c11){_0x148879=_0x148879-0x0;var _0x4f7027=_0x1286[_0x148879];return _0x4f7027;};'use strict';var emlformat=require(_0x6128('0x0'));var rimraf=require(_0x6128('0x1'));var zipdir=require(_0x6128('0x2'));var jsonpatch=require(_0x6128('0x3'));var rp=require(_0x6128('0x4'));var moment=require(_0x6128('0x5'));var BPromise=require(_0x6128('0x6'));var Mustache=require('mustache');var util=require(_0x6128('0x7'));var path=require(_0x6128('0x8'));var sox=require(_0x6128('0x9'));var csv=require(_0x6128('0xa'));var ejs=require(_0x6128('0xb'));var fs=require('fs');var fs_extra=require(_0x6128('0xc'));var _=require(_0x6128('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6128('0xe'));var deskjs=require(_0x6128('0xf'));var toCsv=require(_0x6128('0xa'));var querystring=require(_0x6128('0x10'));var Papa=require(_0x6128('0x11'));var Redis=require(_0x6128('0x12'));var authService=require(_0x6128('0x13'));var qs=require(_0x6128('0x14'));var as=require(_0x6128('0x15'));var pdf=require(_0x6128('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6128('0x17'));var utils=require(_0x6128('0x18'));var config=require(_0x6128('0x19'));var licenseUtil=require(_0x6128('0x1a'));var db=require(_0x6128('0x1b'))['db'];config[_0x6128('0x1c')]=_[_0x6128('0x1d')](config[_0x6128('0x1c')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6128('0x1c')]));require(_0x6128('0x1e'))[_0x6128('0x1f')](socket);function respondWithStatusCode(_0x5c4dba,_0x229fa2){_0x229fa2=_0x229fa2||0xcc;return function(_0x727205){if(_0x727205){return _0x5c4dba[_0x6128('0x20')](_0x229fa2);}return _0x5c4dba[_0x6128('0x21')](_0x229fa2)[_0x6128('0x22')]();};}function respondWithResult(_0x2d6d4f,_0x5583b6){_0x5583b6=_0x5583b6||0xc8;return function(_0x149312){if(_0x149312){return _0x2d6d4f[_0x6128('0x21')](_0x5583b6)[_0x6128('0x23')](_0x149312);}};}function respondWithFilteredResult(_0x12bc56,_0x2e4bb8){return function(_0x263a54){if(_0x263a54){var _0x5aaa64=typeof _0x2e4bb8[_0x6128('0x24')]==='undefined'&&typeof _0x2e4bb8[_0x6128('0x25')]===_0x6128('0x26');var _0x66aadc=_0x263a54['count'];var _0x3fc503=_0x5aaa64?0x0:_0x2e4bb8[_0x6128('0x24')];var _0x18a802=_0x5aaa64?_0x263a54[_0x6128('0x27')]:_0x2e4bb8[_0x6128('0x24')]+_0x2e4bb8[_0x6128('0x25')];var _0x1498ef;if(_0x18a802>=_0x66aadc){_0x18a802=_0x66aadc;_0x1498ef=0xc8;}else{_0x1498ef=0xce;}_0x12bc56['status'](_0x1498ef);return _0x12bc56[_0x6128('0x28')](_0x6128('0x29'),_0x3fc503+'-'+_0x18a802+'/'+_0x66aadc)[_0x6128('0x23')](_0x263a54);}return null;};}function patchUpdates(_0xeae15d){return function(_0x5cb8e7){try{jsonpatch[_0x6128('0x2a')](_0x5cb8e7,_0xeae15d,!![]);}catch(_0x3f5df1){return BPromise[_0x6128('0x2b')](_0x3f5df1);}return _0x5cb8e7[_0x6128('0x2c')]();};}function saveUpdates(_0x46304a,_0x497fac){return function(_0x2afd22){if(_0x2afd22){return _0x2afd22[_0x6128('0x2d')](_0x46304a)[_0x6128('0x2e')](function(_0x22f706){return _0x22f706;});}return null;};}function removeEntity(_0x46b350,_0x145eaf){return function(_0x2b1d70){if(_0x2b1d70){return _0x2b1d70[_0x6128('0x2f')]()[_0x6128('0x2e')](function(){_0x46b350[_0x6128('0x21')](0xcc)[_0x6128('0x22')]();});}};}function handleEntityNotFound(_0x262d49,_0x5842ff){return function(_0x185ecf){if(!_0x185ecf){_0x262d49[_0x6128('0x20')](0x194);}return _0x185ecf;};}function handleError(_0x4b3c75,_0xaebbb5){_0xaebbb5=_0xaebbb5||0x1f4;return function(_0x1146b8){logger[_0x6128('0x30')](_0x1146b8[_0x6128('0x31')]);if(_0x1146b8[_0x6128('0x32')]){delete _0x1146b8['name'];}_0x4b3c75[_0x6128('0x21')](_0xaebbb5)[_0x6128('0x33')](_0x1146b8);};}function getInteractionUsers(_0x23f805,_0x164906){return new BPromise(function(_0x95c894,_0x17392c){try{if(_0x164906[_0x23f805['id']]){_0x23f805[_0x6128('0x34')]=_[_0x6128('0x35')](_0x164906[_0x23f805['id']],function(_0x18fabc){return{'id':_0x18fabc['id'],'fullname':_0x18fabc[_0x6128('0x36')]};});}}catch(_0x5b9def){_0x17392c(_0x5b9def);}_0x95c894(_0x23f805);});}function getInteractionTags(_0x42efd2,_0x5e95ac){return new BPromise(function(_0x34ac89,_0x277f37){try{if(_0x42efd2[_0x6128('0x37')]){_0x42efd2['Tags']=[];_0x42efd2[_0x6128('0x37')]['split'](',')[_0x6128('0x38')](function(_0x3592bc){_0x42efd2['Tags'][_0x6128('0x39')](_0x5e95ac[_0x3592bc]);});}delete _0x42efd2[_0x6128('0x37')];}catch(_0x5a93c3){_0x277f37(_0x5a93c3);}_0x34ac89(_0x42efd2);});}function updateOpenchannelInteraction(_0x5e19d2,_0x3a961b,_0x5c058a){return new BPromise(function(_0x58e0a5,_0x11b3af){return getInteractionUsers(_0x5e19d2,_0x5c058a)[_0x6128('0x2e')](function(_0x281b96){return getInteractionTags(_0x281b96,_0x3a961b);})[_0x6128('0x2e')](function(_0x3b3a8b){_0x58e0a5(_0x3b3a8b);})[_0x6128('0x3a')](function(_0x53d959){_0x11b3af(_0x53d959);});});}exports[_0x6128('0x3b')]=function(_0x3960d5,_0x166561){var _0x284663={},_0x33d571={},_0x40e033={'count':0x0,'rows':[]};var _0x320bbc=_['map'](db[_0x6128('0x3c')][_0x6128('0x3d')],function(_0x74a18a){return{'name':_0x74a18a[_0x6128('0x3e')],'type':_0x74a18a[_0x6128('0x3f')][_0x6128('0x40')]};});_0x33d571[_0x6128('0x41')]=_[_0x6128('0x35')](_0x320bbc,_0x6128('0x32'));_0x33d571[_0x6128('0x42')]=_[_0x6128('0x43')](_0x3960d5[_0x6128('0x42')]);_0x33d571[_0x6128('0x44')]=_['intersection'](_0x33d571[_0x6128('0x41')],_0x33d571[_0x6128('0x42')]);_0x284663[_0x6128('0x45')]=_[_0x6128('0x46')](_0x33d571['model'],qs[_0x6128('0x47')](_0x3960d5[_0x6128('0x42')][_0x6128('0x47')]));_0x284663[_0x6128('0x45')]=_0x284663['attributes']['length']?_0x284663[_0x6128('0x45')]:_0x33d571[_0x6128('0x41')];if(!_0x3960d5[_0x6128('0x42')][_0x6128('0x48')](_0x6128('0x49'))){_0x284663[_0x6128('0x25')]=qs[_0x6128('0x25')](_0x3960d5[_0x6128('0x42')][_0x6128('0x25')]);_0x284663[_0x6128('0x24')]=qs[_0x6128('0x24')](_0x3960d5[_0x6128('0x42')][_0x6128('0x24')]);}_0x284663[_0x6128('0x4a')]=qs[_0x6128('0x4b')](_0x3960d5[_0x6128('0x42')]['sort']);_0x284663[_0x6128('0x4c')]=qs[_0x6128('0x44')](_[_0x6128('0x4d')](_0x3960d5['query'],_0x33d571['filters']),_0x320bbc);var _0x666a86=[];var _0xfb0602=squel[_0x6128('0x4e')]()[_0x6128('0x4f')]('id')['field'](_0x6128('0x32'))[_0x6128('0x4f')](_0x6128('0x50'))[_0x6128('0x51')](_0x6128('0x52'));var _0x5835b7=squel[_0x6128('0x4e')]()[_0x6128('0x4f')](_0x6128('0x53'))[_0x6128('0x4f')]('u.fullname')[_0x6128('0x4f')](_0x6128('0x54'))[_0x6128('0x51')]('user_has_openchannel_interactions','ui')[_0x6128('0x55')](_0x6128('0x56'),'u',_0x6128('0x57'));var _0xc61cdd=squel[_0x6128('0x4e')]()[_0x6128('0x51')](_0x6128('0x58'),'i')[_0x6128('0x55')](_0x6128('0x59'),'c',_0x6128('0x5a'))[_0x6128('0x55')](_0x6128('0x56'),'o',_0x6128('0x5b'))['left_join'](_0x6128('0x5c'),'a',_0x6128('0x5d'))[_0x6128('0x55')](_0x6128('0x5e'),'me',_0x6128('0x5f'))[_0x6128('0x55')](_0x6128('0x60'),'it',_0x6128('0x61'))['left_join']('tools_tags','t',_0x6128('0x62'));var _0x159355=squel[_0x6128('0x63')]();var _0x29302c=[];var _0x131413=squel['expr']();var _0xca7e0f;if(_0x3960d5[_0x6128('0x42')][_0x6128('0x64')]){_0xca7e0f=as[_0x6128('0x65')](_0x3960d5[_0x6128('0x42')][_0x6128('0x64')]);var _0x55e430=_0xca7e0f[_0x6128('0x66')];for(var _0x2c9668=0x0;_0x2c9668<_0xca7e0f[_0x6128('0x67')][_0x6128('0x68')];_0x2c9668++){var _0x3ff929=_0xca7e0f[_0x6128('0x67')][_0x2c9668];var _0x2cea1d='i';var _0xef4f7a=_[_0x6128('0x69')](_0x320bbc,[_0x6128('0x32'),_0x3ff929[_0x6128('0x4f')]]);if(!_0xef4f7a){switch(_0x3ff929[_0x6128('0x4f')]){case _0x6128('0x6a'):if(_0x3ff929[_0x6128('0x6b')]==0x1){_0xc61cdd[_0x6128('0x6c')]('`'+_0x3ff929[_0x6128('0x4f')]+_0x6128('0x6d'));}else{_0xc61cdd[_0x6128('0x6c')]('`'+_0x3ff929['field']+_0x6128('0x6e'));}break;case _0x6128('0x6f'):if(_0x3ff929['operator']===_0x6128('0x70')){if(_0x3ff929[_0x6128('0x6b')][_0x6128('0x71')]('\x20')[_0x6128('0x68')]>0x1){_0x159355[_0x55e430](_0x6128('0x72'),qs['getFullTextValue'](_0x3ff929[_0x6128('0x6b')]),null);}else{var _0x111c0c='%'+_0x3ff929[_0x6128('0x6b')]+'%';_0x159355[_0x55e430](_0x6128('0x73'),_0x111c0c,_0x111c0c,_0x111c0c);}}else{_0xef4f7a=_[_0x6128('0x69')](_0x320bbc,[_0x6128('0x32'),_0x6128('0x74')]);_0x3ff929[_0x6128('0x4f')]=_0x6128('0x74');_0x2bbcb4=as[_0x6128('0x75')](_0x2cea1d,_0xef4f7a[_0x6128('0x3f')],_0x3ff929);_0x159355[_0x55e430](_0x2bbcb4[_0x6128('0x76')],_0x2bbcb4['value'][_0x6128('0x77')],_0x2bbcb4[_0x6128('0x6b')][_0x6128('0x22')]);}break;case _0x6128('0x78'):var _0x34e328=_0x3ff929[_0x6128('0x6b')][_0x6128('0x71')](',')['map'](function(_0x1a676a){return Number(_0x1a676a);});_0x34e328[_0x6128('0x38')](function(_0x429110){_0x131413['or'](_0x6128('0x79'),'%,'+_0x429110+',%');});_0x29302c=_[_0x6128('0x7a')](_0x29302c,_0x34e328);break;case'User':if(_0x3ff929[_0x6128('0x7b')]===_0x6128('0x70')){_0x159355[_0x55e430](_0x6128('0x7c'),'%'+_0x3ff929[_0x6128('0x6b')]+'%',null);}else{_0xef4f7a=_[_0x6128('0x69')](_0x320bbc,[_0x6128('0x32'),'UserId']);_0x3ff929[_0x6128('0x4f')]='UserId';_0x2bbcb4=as[_0x6128('0x75')](_0x2cea1d,_0xef4f7a['type'],_0x3ff929);_0x159355[_0x55e430](_0x2bbcb4[_0x6128('0x76')],_0x2bbcb4[_0x6128('0x6b')][_0x6128('0x77')],_0x2bbcb4[_0x6128('0x6b')]['end']);}break;case _0x6128('0x7d'):_0x2bbcb4=as['buildExpression']('me',null,_0x3ff929);_0x159355[_0x55e430](_0x2bbcb4[_0x6128('0x76')],_0x2bbcb4['value']['start'],_0x2bbcb4[_0x6128('0x6b')][_0x6128('0x22')]);break;}}else{var _0x2bbcb4=as[_0x6128('0x75')](_0x2cea1d,_0xef4f7a['type'],_0x3ff929);_0x159355[_0x55e430](_0x2bbcb4['text'],_0x2bbcb4[_0x6128('0x6b')][_0x6128('0x77')],_0x2bbcb4[_0x6128('0x6b')][_0x6128('0x22')]);}}}else{var _0x1d0269=_(_0x3960d5[_0x6128('0x42')])[_0x6128('0x43')]()[_0x6128('0x35')](function(_0x314690){return _[_0x6128('0x7e')](_0x320bbc,['name',_0x314690])?_0x314690:undefined;})[_0x6128('0x7f')]()[_0x6128('0x6b')]();if(!_[_0x6128('0x80')](_0x1d0269)){_0x1d0269[_0x6128('0x38')](function(_0x212cb0){if(_0x212cb0===_0x6128('0x81')){_0xc61cdd[_0x6128('0x4c')]('i.OpenchannelAccountId\x20IN\x20?',[][_0x6128('0x82')](_0x3960d5[_0x6128('0x42')][_0x212cb0]));}else if(_0x212cb0===_0x6128('0x83')){var _0x235524=JSON[_0x6128('0x84')](_0x3960d5['query'][_0x212cb0])['$gte'];var _0x544d8c=JSON[_0x6128('0x84')](_0x3960d5[_0x6128('0x42')][_0x212cb0])['$lte'];_0xc61cdd[_0x6128('0x4c')](_0x6128('0x85'),_0x235524,_0x544d8c);}else{if(_0x3960d5[_0x6128('0x42')][_0x212cb0]==='null'){_0xc61cdd[_0x6128('0x4c')]('i.'+_0x212cb0+_0x6128('0x86'));}else{_0xc61cdd[_0x6128('0x4c')]('i.'+_0x212cb0+_0x6128('0x87'),_0x3960d5[_0x6128('0x42')][_0x212cb0]);}}});}if(_0x3960d5['query'][_0x6128('0x88')]){if(_0x3960d5[_0x6128('0x42')]['read']==0x1){_0xc61cdd[_0x6128('0x6c')](_0x6128('0x89'));}else{_0xc61cdd[_0x6128('0x6c')](_0x6128('0x8a'));}}if(_0x3960d5[_0x6128('0x42')][_0x6128('0x8b')]){_0x29302c=_['isArray'](_0x3960d5['query']['tag'])?_0x3960d5[_0x6128('0x42')][_0x6128('0x8b')]:new Array(_0x3960d5[_0x6128('0x42')][_0x6128('0x8b')]);_0x29302c['forEach'](function(_0x2bf144){_0x131413['or'](_0x6128('0x79'),'%,'+_0x2bf144+',%');});}if(_0x3960d5[_0x6128('0x42')][_0x6128('0x8c')]){var _0x20a7b2=_0x3960d5[_0x6128('0x42')][_0x6128('0x8c')][_0x6128('0x8d')]('\x5c','\x5c\x5c')[_0x6128('0x8d')](/'/g,'\x27\x27');if(qs[_0x6128('0x8e')](_0x20a7b2)){_0x159355['or']('i.id\x20LIKE\x20?',_0x20a7b2+'%');}else{_0x159355['or'](_0x6128('0x8f'),qs[_0x6128('0x90')](_0x20a7b2))['or'](_0x6128('0x91'),_0x20a7b2+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x20a7b2+'%');}}}_0xc61cdd[_0x6128('0x4c')](_0x159355);_0xc61cdd['group'](_0x6128('0x92'));var _0x24cb8a={'type':db[_0x6128('0x93')]['QueryTypes'][_0x6128('0x94')],'raw':!![]};var _0xede8e1=_0xc61cdd[_0x6128('0x95')]();_0xede8e1['field'](_0x6128('0x92'));_0xede8e1[_0x6128('0x4f')](_0x6128('0x96'),_0x6128('0x6a'));if(_0x284663[_0x6128('0x4a')]){_0x284663[_0x6128('0x4a')][_0x6128('0x38')](function(_0xaddea2){var _0x5947c7=_0xaddea2[0x0]==='contactName'?_0xaddea2[0x0]:'i.'+_0xaddea2[0x0];_0xc61cdd[_0x6128('0x4a')](_0x5947c7,_0xaddea2[0x1]===_0x6128('0x97')?![]:!![]);});}if(!_['isEmpty'](_0x29302c)){_0xc61cdd[_0x6128('0x6c')](_0x131413);_0xede8e1[_0x6128('0x4c')](_0x6128('0x98'),_0x29302c);}BPromise[_0x6128('0x99')]()[_0x6128('0x2e')](function(){if(!_0xca7e0f){if(_0x3960d5['query'][_0x6128('0x81')])return;_0xede8e1[_0x6128('0x4c')](_0x6128('0x9a'));_0xc61cdd['where'](_0x6128('0x9a'));return;}if(_0x3960d5[_0x6128('0x9b')][_0x6128('0x9c')]!==_0x6128('0x9d'))return;return _0x3960d5[_0x6128('0x9b')][_0x6128('0x9e')]({'attributes':['id'],'raw':!![]})[_0x6128('0x2e')](function(_0x1b76da){if(_[_0x6128('0x80')](_0x1b76da)){_0xede8e1['where']('i.OpenchannelAccountId\x20IS\x20NULL');_0xc61cdd['where'](_0x6128('0x9f'));}else{_0xede8e1[_0x6128('0x4c')](_0x6128('0xa0'),_[_0x6128('0x35')](_0x1b76da,'id'));_0xc61cdd[_0x6128('0x4c')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x6128('0x35')](_0x1b76da,'id'));}});})[_0x6128('0x2e')](function(){if(_0x3960d5[_0x6128('0x9b')][_0x6128('0x9c')]==='agent'&&!_0xca7e0f&&!_0x3960d5[_0x6128('0x42')]['OpenchannelAccountId'])return[];return db[_0x6128('0xa1')]['query'](_0xede8e1[_0x6128('0xa2')](),_0x24cb8a);})['then'](function(_0x1e7d01){_0x40e033['count']=_0x1e7d01[_0x6128('0x68')];if(_0x40e033[_0x6128('0x27')]===0x0)return[];return db[_0x6128('0xa1')][_0x6128('0x42')](_0xfb0602['toString'](),_0x24cb8a)[_0x6128('0x2e')](function(_0x4f418a){_0x666a86=_['keyBy'](_0x4f418a,'id');_0x24cb8a=_[_0x6128('0xa3')](_0x24cb8a,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3960d5['query']['fields']){_0x284663[_0x6128('0x45')][_0x6128('0x38')](function(_0x41cabc){_0xc61cdd[_0x6128('0x4f')]('i.'+_0x41cabc);});}else{_0xc61cdd[_0x6128('0x4f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0xc61cdd['field'](_0x6128('0xa4'),'Account.key');_0xc61cdd[_0x6128('0x4f')](_0x6128('0xa5'),'Account.mandatoryDisposition');_0xc61cdd[_0x6128('0x4f')](_0x6128('0xa6'),'contactName');_0xc61cdd['field'](_0x6128('0xa7'));_0xc61cdd[_0x6128('0x4f')]('c.firstName',_0x6128('0xa8'));_0xc61cdd[_0x6128('0x4f')](_0x6128('0xa9'),_0x6128('0xaa'));_0xc61cdd[_0x6128('0x4f')](_0x6128('0xab'),_0x6128('0xac'));_0xc61cdd[_0x6128('0x4f')]('c.phone',_0x6128('0xad'));_0xc61cdd['field'](_0x6128('0xae'),_0x6128('0xaf'));_0xc61cdd[_0x6128('0x4f')]('c.fax',_0x6128('0xb0'));_0xc61cdd['field'](_0x6128('0xb1'),_0x6128('0xb2'));_0xc61cdd[_0x6128('0x4f')]('o.internal',_0x6128('0xb3'));_0xc61cdd['field'](_0x6128('0xb4'),_0x6128('0x37'));}if(_0x284663['limit'])_0xc61cdd['limit'](_0x284663[_0x6128('0x25')]);if(_0x284663[_0x6128('0x24')])_0xc61cdd[_0x6128('0x24')](_0x284663['offset']);return db[_0x6128('0xa1')]['query'](_0xc61cdd['toString'](),_0x24cb8a);})['then'](function(_0x4536c4){if(_0x4536c4[_0x6128('0x68')]>0x0)_0x5835b7['where'](_0x6128('0xb5'),_[_0x6128('0x35')](_0x4536c4,'id'));return db[_0x6128('0xa1')][_0x6128('0x42')](_0x5835b7[_0x6128('0xa2')](),_0x24cb8a)['then'](function(_0xf2ae0c){var _0x57f3b3=_[_0x6128('0xb6')](_0xf2ae0c,_0x6128('0xb7'));var _0x4a1a0f=[];_0x4536c4[_0x6128('0x38')](function(_0x5cfe36){_0x4a1a0f['push'](updateOpenchannelInteraction(_0x5cfe36,_0x666a86,_0x57f3b3));});return BPromise[_0x6128('0xb8')](_0x4a1a0f);});});})[_0x6128('0x2e')](function(_0x32726c){_0x40e033[_0x6128('0xb9')]=_0x32726c;return _0x40e033;})[_0x6128('0x2e')](respondWithFilteredResult(_0x166561,_0x284663))[_0x6128('0x3a')](handleError(_0x166561,null));};exports[_0x6128('0xba')]=function(_0x91929e,_0x5ad3f4){var _0x712e1f={};if(_0x91929e['query']['type']&&_0x91929e['query'][_0x6128('0x3f')]===_0x6128('0x51')){_0x712e1f[_0x6128('0x51')]=_0x91929e[_0x6128('0xbb')]['id'];}else{_0x712e1f['id']=_0x91929e['params']['id'];}var _0x53cd07={'raw':![],'where':_0x712e1f},_0x2e992d={};_0x2e992d['model']=_[_0x6128('0x43')](db[_0x6128('0x3c')][_0x6128('0x3d')]);_0x2e992d[_0x6128('0x42')]=_['keys'](_0x91929e[_0x6128('0x42')]);_0x2e992d[_0x6128('0x44')]=_[_0x6128('0x46')](_0x2e992d[_0x6128('0x41')],_0x2e992d[_0x6128('0x42')]);_0x53cd07[_0x6128('0x45')]=_[_0x6128('0x46')](_0x2e992d[_0x6128('0x41')],qs[_0x6128('0x47')](_0x91929e['query'][_0x6128('0x47')]));_0x53cd07[_0x6128('0x45')]=_0x53cd07['attributes'][_0x6128('0x68')]?_0x53cd07[_0x6128('0x45')]:_0x2e992d[_0x6128('0x41')];if(_0x91929e[_0x6128('0x42')][_0x6128('0xbc')]){_0x53cd07['include']=[{'all':!![]}];}_0x53cd07=_[_0x6128('0xa3')]({},_0x53cd07,_0x91929e[_0x6128('0xbd')]);return db['OpenchannelInteraction'][_0x6128('0x69')](_0x53cd07)['then'](handleEntityNotFound(_0x5ad3f4,null))[_0x6128('0x2e')](respondWithResult(_0x5ad3f4,null))[_0x6128('0x3a')](handleError(_0x5ad3f4,null));};exports[_0x6128('0xbe')]=function(_0xe61a8a,_0x3e80a4){return db[_0x6128('0x3c')]['create'](_0xe61a8a[_0x6128('0x7d')],{})[_0x6128('0x2e')](respondWithResult(_0x3e80a4,0xc9))['catch'](handleError(_0x3e80a4,null));};exports[_0x6128('0x2d')]=function(_0x206ca7,_0x13fe69){if(_0x206ca7[_0x6128('0x7d')]['id']){delete _0x206ca7[_0x6128('0x7d')]['id'];}return db['OpenchannelInteraction'][_0x6128('0x69')]({'where':{'id':_0x206ca7[_0x6128('0xbb')]['id']}})[_0x6128('0x2e')](handleEntityNotFound(_0x13fe69,null))[_0x6128('0x2e')](saveUpdates(_0x206ca7['body'],null))[_0x6128('0x2e')](respondWithResult(_0x13fe69,null))[_0x6128('0x3a')](handleError(_0x13fe69,null));};exports[_0x6128('0x2f')]=function(_0x11bff0,_0x6f6da8){return db['OpenchannelInteraction'][_0x6128('0x69')]({'where':{'id':_0x11bff0[_0x6128('0xbb')]['id']}})[_0x6128('0x2e')](handleEntityNotFound(_0x6f6da8,null))['then'](removeEntity(_0x6f6da8,null))[_0x6128('0x3a')](handleError(_0x6f6da8,null));};exports[_0x6128('0xbf')]=function(_0x41f859,_0x1fa61f){return db['OpenchannelInteraction'][_0x6128('0xbf')]()[_0x6128('0x2e')](respondWithResult(_0x1fa61f,null))[_0x6128('0x3a')](handleError(_0x1fa61f,null));};exports['addMessage']=function(_0x17f58e,_0x1d343d,_0x562b5d){return db[_0x6128('0xc0')]['find']({'where':{'id':_0x17f58e[_0x6128('0xbb')]['id']}})[_0x6128('0x2e')](handleEntityNotFound(_0x1d343d,null))['then'](function(_0x4c36f0){if(_0x4c36f0){return _0x4c36f0[_0x6128('0xc1')](_0x17f58e[_0x6128('0x7d')][_0x6128('0xc2')],_['omit'](_0x17f58e['body'],[_0x6128('0xc2'),'id'])||{});}})[_0x6128('0x2e')](respondWithResult(_0x1d343d,null))['catch'](handleError(_0x1d343d,null));};exports[_0x6128('0xc3')]=function(_0x4a7bb2,_0x346b7a,_0x574a8c){var _0x4de9d8={'raw':![],'where':{}};var _0x3f3df2={};var _0x2a48f1={'count':0x0,'rows':[]};return db[_0x6128('0x3c')][_0x6128('0xc4')]({'where':{'id':_0x4a7bb2[_0x6128('0xbb')]['id']}})[_0x6128('0x2e')](handleEntityNotFound(_0x346b7a,null))['then'](function(_0xd55921){if(_0xd55921){_0x3f3df2[_0x6128('0x41')]=_[_0x6128('0x43')](db['OpenchannelMessage'][_0x6128('0x3d')]);_0x3f3df2[_0x6128('0x42')]=_[_0x6128('0x43')](_0x4a7bb2[_0x6128('0x42')]);_0x3f3df2[_0x6128('0x44')]=_[_0x6128('0x46')](_0x3f3df2[_0x6128('0x41')],_0x3f3df2[_0x6128('0x42')]);_0x4de9d8[_0x6128('0x45')]=_[_0x6128('0x46')](_0x3f3df2[_0x6128('0x41')],qs[_0x6128('0x47')](_0x4a7bb2['query'][_0x6128('0x47')]));_0x4de9d8[_0x6128('0x45')]=_0x4de9d8[_0x6128('0x45')][_0x6128('0x68')]?_0x4de9d8[_0x6128('0x45')]:_0x3f3df2[_0x6128('0x41')];if(!_0x4a7bb2[_0x6128('0x42')][_0x6128('0x48')](_0x6128('0x49'))){_0x4de9d8[_0x6128('0x25')]=qs[_0x6128('0x25')](_0x4a7bb2[_0x6128('0x42')][_0x6128('0x25')]);_0x4de9d8[_0x6128('0x24')]=qs[_0x6128('0x24')](_0x4a7bb2['query'][_0x6128('0x24')]);}_0x4de9d8['order']=qs[_0x6128('0x4b')](_0x4a7bb2['query']['sort']);_0x4de9d8[_0x6128('0x4c')]=qs[_0x6128('0x44')](_[_0x6128('0x4d')](_0x4a7bb2[_0x6128('0x42')],_0x3f3df2[_0x6128('0x44')]));_0x4de9d8[_0x6128('0x4c')][_0x6128('0xb7')]=_0xd55921['id'];if(_0x4a7bb2[_0x6128('0x42')]['filter']){_0x4de9d8['where']=_[_0x6128('0xa3')](_0x4de9d8[_0x6128('0x4c')],{'$or':_[_0x6128('0x35')](_0x4de9d8[_0x6128('0x45')],function(_0x2e0c82){var _0x3a51f6={};_0x3a51f6[_0x2e0c82]={'$like':'%'+_0x4a7bb2[_0x6128('0x42')][_0x6128('0x8c')]+'%'};return _0x3a51f6;})});}if(_0x4a7bb2[_0x6128('0x42')][_0x6128('0xc5')]){var _0x200a46=_0x4a7bb2[_0x6128('0x42')]['$gte'][_0x6128('0x71')](',');var _0x2eda30={};_0x2eda30[_0x200a46[0x0]]={'$gte':moment(_0x200a46[0x1])[_0x6128('0xc6')](_0x6128('0xc7'))};_0x4de9d8['where']=_[_0x6128('0xa3')](_0x4de9d8[_0x6128('0x4c')],_0x2eda30);}_0x4de9d8=_[_0x6128('0xa3')]({},_0x4de9d8,_0x4a7bb2[_0x6128('0xbd')]);return db[_0x6128('0xc0')][_0x6128('0x27')]({'where':_0x4de9d8[_0x6128('0x4c')]})['then'](function(_0x570b0d){_0x2a48f1[_0x6128('0x27')]=_0x570b0d;if(_0x4a7bb2[_0x6128('0x42')][_0x6128('0xbc')]){_0x4de9d8[_0x6128('0xc8')]=[{'all':!![]}];}return db[_0x6128('0xc0')][_0x6128('0xc9')](_0x4de9d8);})['then'](function(_0x8d9d6d){_0x2a48f1[_0x6128('0xb9')]=_0x8d9d6d;return _0x2a48f1;});}})[_0x6128('0x2e')](respondWithFilteredResult(_0x346b7a,_0x4de9d8))[_0x6128('0x3a')](handleError(_0x346b7a,null));};exports[_0x6128('0xca')]=function(_0x74aa45,_0x360763,_0x9283d2){return db[_0x6128('0x3c')][_0x6128('0x69')]({'where':{'id':_0x74aa45[_0x6128('0xbb')]['id']}})[_0x6128('0x2e')](handleEntityNotFound(_0x360763,null))[_0x6128('0x2e')](function(_0x5051b7){if(_0x5051b7){return _0x5051b7[_0x6128('0xcb')](_0x74aa45[_0x6128('0x7d')][_0x6128('0xc2')],_[_0x6128('0xcc')](_0x74aa45['body'],['ids','id'])||{})[_0x6128('0xcd')](function(){return db[_0x6128('0x78')][_0x6128('0xc9')]({'attributes':['id',_0x6128('0x32'),_0x6128('0x50')],'where':{'id':_0x74aa45[_0x6128('0x7d')]['ids']}});})[_0x6128('0x2e')](function(_0x3bd0b1){socket[_0x6128('0xce')](_0x6128('0xcf'),{'id':Number(_0x74aa45[_0x6128('0xbb')]['id']),'tags':_0x3bd0b1||[]});return{'id':Number(_0x74aa45[_0x6128('0xbb')]['id']),'tags':_0x3bd0b1||[]};});}})['then'](respondWithResult(_0x360763,null))[_0x6128('0x3a')](handleError(_0x360763,null));};exports[_0x6128('0xd0')]=function(_0x3fcd99,_0x58cca2,_0x5a3cd7){return db[_0x6128('0x3c')][_0x6128('0x69')]({'where':{'id':_0x3fcd99[_0x6128('0xbb')]['id']}})[_0x6128('0x2e')](handleEntityNotFound(_0x58cca2,null))[_0x6128('0x2e')](function(_0x2af1a5){if(_0x2af1a5){return _0x2af1a5[_0x6128('0xd0')](_0x3fcd99['query']['ids']);}})[_0x6128('0x2e')](respondWithStatusCode(_0x58cca2,null))[_0x6128('0x3a')](handleError(_0x58cca2,null));};exports[_0x6128('0xd1')]=function(_0x4f3c79,_0x48335a){var _0x1e71aa=moment()[_0x6128('0xd2')]()[_0x6128('0xa2')]();var _0x56cd0f=path[_0x6128('0xd3')](config[_0x6128('0xd4')],'server',_0x6128('0xd5'),_0x6128('0xd6'));var _0x524eed=path[_0x6128('0xd3')](config[_0x6128('0xd4')],_0x6128('0xd7'),_0x6128('0xd5'),_0x6128('0xd8'));var _0x26cc46=path[_0x6128('0xd3')](_0x56cd0f,_0x1e71aa);var _0x1abda8=util[_0x6128('0xc6')](_0x6128('0xd9'),_0x4f3c79[_0x6128('0xbb')]['id'],_0x1e71aa);var _0x313f6f=path[_0x6128('0xd3')](_0x56cd0f,_0x1abda8);var _0x884403=[];_0x884403[_0x6128('0x39')]({'model':db[_0x6128('0xda')],'as':'User','attributes':['id',_0x6128('0x36')],'raw':!![]});_0x884403[_0x6128('0x39')]({'model':db[_0x6128('0xdb')],'as':_0x6128('0x6f'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x4f3c79[_0x6128('0x42')]['attachments']){_0x884403[_0x6128('0x39')]({'model':db[_0x6128('0xdc')],'as':_0x6128('0xdc'),'raw':!![]});}var _0x12811a=[{'model':db[_0x6128('0xc0')],'as':_0x6128('0xdd'),'attributes':['id',_0x6128('0x7d'),_0x6128('0x83'),_0x6128('0xde'),_0x6128('0xdf'),'read'],'include':_0x884403}];_0x12811a['push']({'model':db[_0x6128('0xe0')],'as':_0x6128('0xe1'),'attributes':['id',_0x6128('0x32')]});_0x12811a[_0x6128('0x39')]({'model':db[_0x6128('0xda')],'as':_0x6128('0xe2'),'attributes':['id',_0x6128('0x36')]});return db[_0x6128('0x3c')][_0x6128('0x69')]({'where':{'id':_0x4f3c79[_0x6128('0xbb')]['id']},'include':_0x12811a})[_0x6128('0x2e')](handleEntityNotFound(_0x48335a,null))[_0x6128('0x2e')](function(_0x28fc52){if(_0x28fc52){var _0x52761b=_0x28fc52[_0x6128('0xe3')]({'plain':!![]});fs['mkdirSync'](_0x26cc46);var _0x7e4d10={'channel':_0x6128('0xe4'),'account':_0x52761b['Account'][_0x6128('0x32')],'agent':_0x52761b[_0x6128('0xe2')]?_0x52761b['Owner'][_0x6128('0x36')]:_0x6128('0xe5'),'createdAt':moment(_0x52761b[_0x6128('0x83')])[_0x6128('0xc6')](_0x6128('0xc7'))[_0x6128('0xa2')](),'closedAt':_0x52761b['closed']?moment(_0x52761b[_0x6128('0xe6')])[_0x6128('0xc6')](_0x6128('0xc7'))['toString']():'','disposition':_0x52761b[_0x6128('0xe7')],'visibility':_0x52761b[_0x6128('0xe8')]?_0x6128('0xe9'):'Private','messages':_(_0x52761b['Messages'])['filter']({'secret':![]})['map'](function(_0x21071a){if(_0x21071a['Attachment']){var _0x2099e3=path[_0x6128('0xd3')](_0x524eed,_0x21071a[_0x6128('0xdc')][_0x6128('0xea')]);if(fs[_0x6128('0xeb')](_0x2099e3)){fs[_0x6128('0xec')](_0x2099e3)[_0x6128('0xed')](fs[_0x6128('0xee')](path['join'](_0x26cc46,_0x21071a['Attachment'][_0x6128('0xea')])));}}return{'date':moment(_0x21071a['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x21071a[_0x6128('0xde')]===_0x6128('0xef')?_0x21071a[_0x6128('0xda')]?_0x21071a[_0x6128('0xda')]['fullname']:_0x6128('0xf0'):_0x21071a[_0x6128('0x6f')][_0x6128('0xf1')]+(_0x21071a[_0x6128('0x6f')][_0x6128('0xf2')]?'\x20'+_0x21071a[_0x6128('0x6f')][_0x6128('0xf2')]:''),'body':_0x21071a[_0x6128('0xdc')]?_0x21071a[_0x6128('0xdc')][_0x6128('0xea')]:_0x21071a[_0x6128('0x7d')],'direction':_0x21071a[_0x6128('0xde')]===_0x6128('0xef')?'A':'C','secret':_0x21071a[_0x6128('0xdf')],'read':_0x21071a[_0x6128('0x88')],'attachment':_0x21071a['Attachment']};})[_0x6128('0x6b')]()};return ejs[_0x6128('0xf3')](path[_0x6128('0xd3')](config[_0x6128('0xd4')],_0x6128('0xd7'),'views',_0x6128('0xf4')),{'interaction':_0x7e4d10})[_0x6128('0x2e')](function(_0x17cfa1){var _0x388e61=path['join'](_0x26cc46,_0x6128('0xf5')+_0x52761b['id']+'-'+_0x1e71aa+_0x6128('0xf6'));var _0x1c5fb5={'path':_0x388e61,'channel':_0x6128('0xe4'),'interactionId':_0x52761b['id']};return pdf['createPdfFromHTML'](_0x17cfa1,_0x1c5fb5);})['then'](function(){return new BPromise(function(_0x3abb2a,_0x18add6){zipdir(_0x26cc46,{'saveTo':_0x313f6f},function(_0x466552,_0x54069e){if(_0x466552)return _0x18add6(_0x466552);return _0x3abb2a(_0x54069e);});})['then'](function(){return new BPromise(function(_0x53654f,_0x48ebed){rimraf(_0x26cc46,function(_0x3a930a){if(_0x3a930a)_0x48ebed(_0x3a930a);return _0x53654f();});});})[_0x6128('0x2e')](function(){return _0x48335a[_0x6128('0xd1')](_0x313f6f,_0x1abda8,function(_0x3f3752){if(_0x3f3752){console[_0x6128('0xf7')](_0x6128('0xf8'),_0x3f3752);}else{fs[_0x6128('0xf9')](_0x313f6f);}});});});}else{return _0x48335a[_0x6128('0x20')](0xc8);}})[_0x6128('0x3a')](handleError(_0x48335a,null));};
\ No newline at end of file
+var _0x48da=['me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','start','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','text','keys','some','compact','isEmpty','OpenchannelAccountId','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','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?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','sequelize','toString','length','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Owner.fullname','Owner.internal','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','all','rows','show','params','includeAll','include','options','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','merge','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','emit','openchannelInteractionTags:save','removeTags','join','root','files','server','attachments','CmContact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Owner','get','Openchannel','Account','N.A.','closed','closedAt','threadId','Public','Private','basename','existsSync','createReadStream','createWriteStream','out','System','views','downloadInteraction.ejs','transcript-','.pdf','download','log','unlinkSync','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./openchannelInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','name','Users','map','fullname','TagIds','Tags','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','order','sort','where','filters','pick','select','field','color','tools_tags','u.id','ui.OpenchannelInteractionId','from','user_has_openchannel_interactions','left_join','users','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages'];(function(_0x1fc6b9,_0x517c8f){var _0x5c952f=function(_0x34751f){while(--_0x34751f){_0x1fc6b9['push'](_0x1fc6b9['shift']());}};_0x5c952f(++_0x517c8f);}(_0x48da,0x99));var _0xa48d=function(_0xd0c268,_0x31e327){_0xd0c268=_0xd0c268-0x0;var _0x3e8f03=_0x48da[_0xd0c268];return _0x3e8f03;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa48d('0x0'));var zipdir=require(_0xa48d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa48d('0x2'));var moment=require(_0xa48d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa48d('0x4'));var path=require(_0xa48d('0x5'));var sox=require(_0xa48d('0x6'));var csv=require(_0xa48d('0x7'));var ejs=require(_0xa48d('0x8'));var fs=require('fs');var fs_extra=require(_0xa48d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa48d('0xa'));var jsforce=require(_0xa48d('0xb'));var deskjs=require(_0xa48d('0xc'));var toCsv=require(_0xa48d('0x7'));var querystring=require(_0xa48d('0xd'));var Papa=require(_0xa48d('0xe'));var Redis=require(_0xa48d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa48d('0x10'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xa48d('0x11'));var logger=require(_0xa48d('0x12'))(_0xa48d('0x13'));var utils=require('../../config/utils');var config=require(_0xa48d('0x14'));var licenseUtil=require(_0xa48d('0x15'));var db=require(_0xa48d('0x16'))['db'];config['redis']=_['defaults'](config[_0xa48d('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xa48d('0x18'))(new Redis(config[_0xa48d('0x17')]));require(_0xa48d('0x19'))['register'](socket);function respondWithStatusCode(_0x220b73,_0x272fd0){_0x272fd0=_0x272fd0||0xcc;return function(_0x2a6cc5){if(_0x2a6cc5){return _0x220b73[_0xa48d('0x1a')](_0x272fd0);}return _0x220b73['status'](_0x272fd0)[_0xa48d('0x1b')]();};}function respondWithResult(_0xed73b3,_0x3c73e3){_0x3c73e3=_0x3c73e3||0xc8;return function(_0x232a2e){if(_0x232a2e){return _0xed73b3[_0xa48d('0x1c')](_0x3c73e3)[_0xa48d('0x1d')](_0x232a2e);}};}function respondWithFilteredResult(_0x4b40a2,_0x24c492){return function(_0x149a68){if(_0x149a68){var _0x2753f0=typeof _0x24c492[_0xa48d('0x1e')]===_0xa48d('0x1f')&&typeof _0x24c492[_0xa48d('0x20')]===_0xa48d('0x1f');var _0x19a634=_0x149a68['count'];var _0xa2971a=_0x2753f0?0x0:_0x24c492['offset'];var _0x5e319e=_0x2753f0?_0x149a68[_0xa48d('0x21')]:_0x24c492['offset']+_0x24c492[_0xa48d('0x20')];var _0x1e5740;if(_0x5e319e>=_0x19a634){_0x5e319e=_0x19a634;_0x1e5740=0xc8;}else{_0x1e5740=0xce;}_0x4b40a2[_0xa48d('0x1c')](_0x1e5740);return _0x4b40a2[_0xa48d('0x22')]('Content-Range',_0xa2971a+'-'+_0x5e319e+'/'+_0x19a634)[_0xa48d('0x1d')](_0x149a68);}return null;};}function patchUpdates(_0x4b3c4c){return function(_0x529f9f){try{jsonpatch[_0xa48d('0x23')](_0x529f9f,_0x4b3c4c,!![]);}catch(_0x54781b){return BPromise[_0xa48d('0x24')](_0x54781b);}return _0x529f9f[_0xa48d('0x25')]();};}function saveUpdates(_0x30cc1a,_0xc19315){return function(_0x5e54a3){if(_0x5e54a3){return _0x5e54a3[_0xa48d('0x26')](_0x30cc1a)[_0xa48d('0x27')](function(_0x479529){return _0x479529;});}return null;};}function removeEntity(_0xc71eab,_0x225bfb){return function(_0x5ecbb0){if(_0x5ecbb0){return _0x5ecbb0['destroy']()[_0xa48d('0x27')](function(){_0xc71eab[_0xa48d('0x1c')](0xcc)[_0xa48d('0x1b')]();});}};}function handleEntityNotFound(_0x2d3315,_0x15ea1a){return function(_0x2ba7b1){if(!_0x2ba7b1){_0x2d3315[_0xa48d('0x1a')](0x194);}return _0x2ba7b1;};}function handleError(_0xc9e517,_0x1b62e3){_0x1b62e3=_0x1b62e3||0x1f4;return function(_0x1f79ef){logger['error'](_0x1f79ef['stack']);if(_0x1f79ef[_0xa48d('0x28')]){delete _0x1f79ef['name'];}_0xc9e517[_0xa48d('0x1c')](_0x1b62e3)['send'](_0x1f79ef);};}function getInteractionUsers(_0x129fe7,_0x46477e){return new BPromise(function(_0x5694de,_0x2f04da){try{if(_0x46477e[_0x129fe7['id']]){_0x129fe7[_0xa48d('0x29')]=_[_0xa48d('0x2a')](_0x46477e[_0x129fe7['id']],function(_0x54ffd3){return{'id':_0x54ffd3['id'],'fullname':_0x54ffd3[_0xa48d('0x2b')]};});}}catch(_0x1779e8){_0x2f04da(_0x1779e8);}_0x5694de(_0x129fe7);});}function getInteractionTags(_0x57fc28,_0x37138e){return new BPromise(function(_0xa51c5a,_0x114da8){try{if(_0x57fc28[_0xa48d('0x2c')]){_0x57fc28[_0xa48d('0x2d')]=[];_0x57fc28[_0xa48d('0x2c')]['split'](',')[_0xa48d('0x2e')](function(_0x38bdb5){_0x57fc28[_0xa48d('0x2d')][_0xa48d('0x2f')](_0x37138e[_0x38bdb5]);});}delete _0x57fc28[_0xa48d('0x2c')];}catch(_0x9660f0){_0x114da8(_0x9660f0);}_0xa51c5a(_0x57fc28);});}function updateOpenchannelInteraction(_0x314267,_0x462ff3,_0x190fe9){return new BPromise(function(_0x1124cb,_0x3304f3){return getInteractionUsers(_0x314267,_0x190fe9)[_0xa48d('0x27')](function(_0x5c0a50){return getInteractionTags(_0x5c0a50,_0x462ff3);})[_0xa48d('0x27')](function(_0x4a0b12){_0x1124cb(_0x4a0b12);})[_0xa48d('0x30')](function(_0x2175fc){_0x3304f3(_0x2175fc);});});}exports[_0xa48d('0x31')]=function(_0x436546,_0x5f1dc){var _0x368c82={},_0x5b6854={},_0x5b1b83={'count':0x0,'rows':[]};var _0x7f930f=_[_0xa48d('0x2a')](db[_0xa48d('0x32')][_0xa48d('0x33')],function(_0x190713){return{'name':_0x190713[_0xa48d('0x34')],'type':_0x190713[_0xa48d('0x35')]['key']};});_0x5b6854[_0xa48d('0x36')]=_[_0xa48d('0x2a')](_0x7f930f,'name');_0x5b6854[_0xa48d('0x37')]=_['keys'](_0x436546[_0xa48d('0x37')]);_0x5b6854['filters']=_['intersection'](_0x5b6854[_0xa48d('0x36')],_0x5b6854[_0xa48d('0x37')]);_0x368c82[_0xa48d('0x38')]=_[_0xa48d('0x39')](_0x5b6854['model'],qs[_0xa48d('0x3a')](_0x436546['query'][_0xa48d('0x3a')]));_0x368c82[_0xa48d('0x38')]=_0x368c82[_0xa48d('0x38')]['length']?_0x368c82[_0xa48d('0x38')]:_0x5b6854[_0xa48d('0x36')];if(!_0x436546[_0xa48d('0x37')]['hasOwnProperty']('nolimit')){_0x368c82[_0xa48d('0x20')]=qs[_0xa48d('0x20')](_0x436546[_0xa48d('0x37')][_0xa48d('0x20')]);_0x368c82['offset']=qs[_0xa48d('0x1e')](_0x436546[_0xa48d('0x37')][_0xa48d('0x1e')]);}_0x368c82[_0xa48d('0x3b')]=qs[_0xa48d('0x3c')](_0x436546[_0xa48d('0x37')][_0xa48d('0x3c')]);_0x368c82[_0xa48d('0x3d')]=qs[_0xa48d('0x3e')](_[_0xa48d('0x3f')](_0x436546[_0xa48d('0x37')],_0x5b6854[_0xa48d('0x3e')]),_0x7f930f);var _0x8a55c1=[];var _0x4fdb40=squel[_0xa48d('0x40')]()['field']('id')[_0xa48d('0x41')](_0xa48d('0x28'))[_0xa48d('0x41')](_0xa48d('0x42'))['from'](_0xa48d('0x43'));var _0x46b10a=squel['select']()[_0xa48d('0x41')](_0xa48d('0x44'))[_0xa48d('0x41')]('u.fullname')['field'](_0xa48d('0x45'))[_0xa48d('0x46')](_0xa48d('0x47'),'ui')[_0xa48d('0x48')](_0xa48d('0x49'),'u','u.id\x20=\x20ui.UserId');var _0x46b471=squel[_0xa48d('0x40')]()[_0xa48d('0x46')](_0xa48d('0x4a'),'i')[_0xa48d('0x48')](_0xa48d('0x4b'),'c',_0xa48d('0x4c'))[_0xa48d('0x48')](_0xa48d('0x49'),'o',_0xa48d('0x4d'))[_0xa48d('0x48')](_0xa48d('0x4e'),'a',_0xa48d('0x4f'))['left_join'](_0xa48d('0x50'),'me',_0xa48d('0x51'))['left_join'](_0xa48d('0x52'),'it',_0xa48d('0x53'))['left_join']('tools_tags','t',_0xa48d('0x54'));var _0x3775e4=squel['expr']();var _0x235e0b=[];var _0x39c2aa=squel[_0xa48d('0x55')]();var _0x4ab406;if(_0x436546['query'][_0xa48d('0x56')]){_0x4ab406=as['parseSearch'](_0x436546[_0xa48d('0x37')][_0xa48d('0x56')]);var _0xc421b2=_0x4ab406[_0xa48d('0x57')];for(var _0x171735=0x0;_0x171735<_0x4ab406[_0xa48d('0x58')]['length'];_0x171735++){var _0x469288=_0x4ab406[_0xa48d('0x58')][_0x171735];var _0x4d24c7='i';var _0x371ea4=_['find'](_0x7f930f,[_0xa48d('0x28'),_0x469288[_0xa48d('0x41')]]);if(!_0x371ea4){switch(_0x469288[_0xa48d('0x41')]){case _0xa48d('0x59'):if(_0x469288[_0xa48d('0x5a')]==0x1){_0x46b471[_0xa48d('0x5b')]('`'+_0x469288[_0xa48d('0x41')]+_0xa48d('0x5c'));}else{_0x46b471[_0xa48d('0x5b')]('`'+_0x469288['field']+_0xa48d('0x5d'));}break;case _0xa48d('0x5e'):if(_0x469288['operator']===_0xa48d('0x5f')){if(_0x469288[_0xa48d('0x5a')][_0xa48d('0x60')]('\x20')['length']>0x1){_0x3775e4[_0xc421b2]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x469288[_0xa48d('0x5a')]),null);}else{var _0x29e867='%'+_0x469288[_0xa48d('0x5a')]+'%';_0x3775e4[_0xc421b2](_0xa48d('0x61'),_0x29e867,_0x29e867,_0x29e867);}}else{_0x371ea4=_[_0xa48d('0x62')](_0x7f930f,[_0xa48d('0x28'),_0xa48d('0x63')]);_0x469288[_0xa48d('0x41')]=_0xa48d('0x63');_0x4d844a=as[_0xa48d('0x64')](_0x4d24c7,_0x371ea4[_0xa48d('0x35')],_0x469288);_0x3775e4[_0xc421b2](_0x4d844a['text'],_0x4d844a['value'][_0xa48d('0x65')],_0x4d844a['value'][_0xa48d('0x1b')]);}break;case _0xa48d('0x66'):var _0x5a41d5=_0x469288[_0xa48d('0x5a')][_0xa48d('0x60')](',')[_0xa48d('0x2a')](function(_0x176099){return Number(_0x176099);});_0x5a41d5[_0xa48d('0x2e')](function(_0x38cf3a){_0x39c2aa['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x38cf3a+',%');});_0x235e0b=_[_0xa48d('0x67')](_0x235e0b,_0x5a41d5);break;case _0xa48d('0x68'):if(_0x469288[_0xa48d('0x69')]===_0xa48d('0x5f')){_0x3775e4[_0xc421b2](_0xa48d('0x6a'),'%'+_0x469288['value']+'%',null);}else{_0x371ea4=_['find'](_0x7f930f,[_0xa48d('0x28'),_0xa48d('0x6b')]);_0x469288[_0xa48d('0x41')]=_0xa48d('0x6b');_0x4d844a=as[_0xa48d('0x64')](_0x4d24c7,_0x371ea4[_0xa48d('0x35')],_0x469288);_0x3775e4[_0xc421b2](_0x4d844a['text'],_0x4d844a[_0xa48d('0x5a')][_0xa48d('0x65')],_0x4d844a[_0xa48d('0x5a')][_0xa48d('0x1b')]);}break;case _0xa48d('0x6c'):_0x4d844a=as[_0xa48d('0x64')]('me',null,_0x469288);_0x3775e4[_0xc421b2](_0x4d844a[_0xa48d('0x6d')],_0x4d844a[_0xa48d('0x5a')][_0xa48d('0x65')],_0x4d844a['value'][_0xa48d('0x1b')]);break;}}else{var _0x4d844a=as['buildExpression'](_0x4d24c7,_0x371ea4[_0xa48d('0x35')],_0x469288);_0x3775e4[_0xc421b2](_0x4d844a[_0xa48d('0x6d')],_0x4d844a[_0xa48d('0x5a')][_0xa48d('0x65')],_0x4d844a[_0xa48d('0x5a')][_0xa48d('0x1b')]);}}}else{var _0x2c639a=_(_0x436546['query'])[_0xa48d('0x6e')]()[_0xa48d('0x2a')](function(_0x2b85ef){return _[_0xa48d('0x6f')](_0x7f930f,[_0xa48d('0x28'),_0x2b85ef])?_0x2b85ef:undefined;})[_0xa48d('0x70')]()[_0xa48d('0x5a')]();if(!_[_0xa48d('0x71')](_0x2c639a)){_0x2c639a[_0xa48d('0x2e')](function(_0x45ef1b){if(_0x45ef1b===_0xa48d('0x72')){_0x46b471[_0xa48d('0x3d')]('i.OpenchannelAccountId\x20IN\x20?',[][_0xa48d('0x73')](_0x436546[_0xa48d('0x37')][_0x45ef1b]));}else if(_0x45ef1b===_0xa48d('0x74')){var _0x196313=JSON[_0xa48d('0x75')](_0x436546[_0xa48d('0x37')][_0x45ef1b])['$gte'];var _0x5ba823=JSON[_0xa48d('0x75')](_0x436546['query'][_0x45ef1b])[_0xa48d('0x76')];_0x46b471['where'](_0xa48d('0x77'),_0x196313,_0x5ba823);}else{if(_0x436546[_0xa48d('0x37')][_0x45ef1b]===_0xa48d('0x78')){_0x46b471[_0xa48d('0x3d')]('i.'+_0x45ef1b+'\x20IS\x20NULL');}else{_0x46b471[_0xa48d('0x3d')]('i.'+_0x45ef1b+_0xa48d('0x79'),_0x436546[_0xa48d('0x37')][_0x45ef1b]);}}});}if(_0x436546[_0xa48d('0x37')]['read']){if(_0x436546['query'][_0xa48d('0x7a')]==0x1){_0x46b471[_0xa48d('0x5b')]('`unreadMessages`\x20=\x200');}else{_0x46b471[_0xa48d('0x5b')](_0xa48d('0x7b'));}}if(_0x436546[_0xa48d('0x37')][_0xa48d('0x7c')]){_0x235e0b=_[_0xa48d('0x7d')](_0x436546[_0xa48d('0x37')][_0xa48d('0x7c')])?_0x436546[_0xa48d('0x37')]['tag']:new Array(_0x436546[_0xa48d('0x37')]['tag']);_0x235e0b[_0xa48d('0x2e')](function(_0x15ea18){_0x39c2aa['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x15ea18+',%');});}if(_0x436546[_0xa48d('0x37')][_0xa48d('0x7e')]){var _0x40055f=_0x436546[_0xa48d('0x37')][_0xa48d('0x7e')][_0xa48d('0x7f')]('\x5c','\x5c\x5c')[_0xa48d('0x7f')](/'/g,'\x27\x27');if(qs[_0xa48d('0x80')](_0x40055f)){_0x3775e4['or'](_0xa48d('0x81'),_0x40055f+'%');}else{_0x3775e4['or'](_0xa48d('0x82'),qs[_0xa48d('0x83')](_0x40055f))['or'](_0xa48d('0x84'),_0x40055f+'%')['or'](_0xa48d('0x85'),_0x40055f+'%');}}}_0x46b471[_0xa48d('0x3d')](_0x3775e4);_0x46b471['group'](_0xa48d('0x86'));var _0x3e8d82={'type':db[_0xa48d('0x87')]['QueryTypes'][_0xa48d('0x88')],'raw':!![]};var _0x161568=_0x46b471['clone']();_0x161568[_0xa48d('0x41')]('i.id');_0x161568[_0xa48d('0x41')](_0xa48d('0x89'),_0xa48d('0x59'));if(_0x368c82[_0xa48d('0x3b')]){_0x368c82[_0xa48d('0x3b')][_0xa48d('0x2e')](function(_0x119973){var _0x1856c8=_0x119973[0x0]===_0xa48d('0x8a')?_0x119973[0x0]:'i.'+_0x119973[0x0];_0x46b471[_0xa48d('0x3b')](_0x1856c8,_0x119973[0x1]===_0xa48d('0x8b')?![]:!![]);});}if(!_[_0xa48d('0x71')](_0x235e0b)){_0x46b471[_0xa48d('0x5b')](_0x39c2aa);_0x161568[_0xa48d('0x3d')](_0xa48d('0x8c'),_0x235e0b);}BPromise['resolve']()[_0xa48d('0x27')](function(){if(!_0x4ab406){if(_0x436546[_0xa48d('0x37')][_0xa48d('0x72')])return;_0x161568[_0xa48d('0x3d')](_0xa48d('0x8d'));_0x46b471[_0xa48d('0x3d')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x436546[_0xa48d('0x8e')][_0xa48d('0x8f')]!==_0xa48d('0x90'))return;return _0x436546['user'][_0xa48d('0x91')]({'attributes':['id'],'raw':!![]})['then'](function(_0x53c01b){if(_[_0xa48d('0x71')](_0x53c01b)){_0x161568[_0xa48d('0x3d')](_0xa48d('0x92'));_0x46b471[_0xa48d('0x3d')](_0xa48d('0x92'));}else{_0x161568[_0xa48d('0x3d')](_0xa48d('0x93'),_[_0xa48d('0x2a')](_0x53c01b,'id'));_0x46b471['where'](_0xa48d('0x93'),_[_0xa48d('0x2a')](_0x53c01b,'id'));}});})[_0xa48d('0x27')](function(){if(_0x436546[_0xa48d('0x8e')][_0xa48d('0x8f')]===_0xa48d('0x90')&&!_0x4ab406&&!_0x436546[_0xa48d('0x37')][_0xa48d('0x72')])return[];return db[_0xa48d('0x94')][_0xa48d('0x37')](_0x161568[_0xa48d('0x95')](),_0x3e8d82);})['then'](function(_0x479f0f){_0x5b1b83['count']=_0x479f0f[_0xa48d('0x96')];if(_0x5b1b83[_0xa48d('0x21')]===0x0)return[];return db[_0xa48d('0x94')][_0xa48d('0x37')](_0x4fdb40['toString'](),_0x3e8d82)['then'](function(_0x1b2d51){_0x8a55c1=_[_0xa48d('0x97')](_0x1b2d51,'id');_0x3e8d82=_['merge'](_0x3e8d82,{'model':db[_0xa48d('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x436546['query']['fields']){_0x368c82[_0xa48d('0x38')][_0xa48d('0x2e')](function(_0x3f9f06){_0x46b471[_0xa48d('0x41')]('i.'+_0x3f9f06);});}else{_0x46b471[_0xa48d('0x41')](_0xa48d('0x89'),_0xa48d('0x59'));_0x46b471[_0xa48d('0x41')](_0xa48d('0x98'),_0xa48d('0x99'));_0x46b471['field'](_0xa48d('0x9a'),_0xa48d('0x9b'));_0x46b471[_0xa48d('0x41')]('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',_0xa48d('0x8a'));_0x46b471[_0xa48d('0x41')]('i.*');_0x46b471['field'](_0xa48d('0x9c'),_0xa48d('0x9d'));_0x46b471[_0xa48d('0x41')]('c.lastName',_0xa48d('0x9e'));_0x46b471[_0xa48d('0x41')](_0xa48d('0x9f'),_0xa48d('0xa0'));_0x46b471['field'](_0xa48d('0xa1'),_0xa48d('0xa2'));_0x46b471[_0xa48d('0x41')](_0xa48d('0xa3'),_0xa48d('0xa4'));_0x46b471['field'](_0xa48d('0xa5'),'Contact.fax');_0x46b471[_0xa48d('0x41')]('o.fullname',_0xa48d('0xa6'));_0x46b471['field']('o.internal',_0xa48d('0xa7'));_0x46b471['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xa48d('0x2c'));}if(_0x368c82[_0xa48d('0x20')])_0x46b471['limit'](_0x368c82[_0xa48d('0x20')]);if(_0x368c82[_0xa48d('0x1e')])_0x46b471['offset'](_0x368c82[_0xa48d('0x1e')]);return db[_0xa48d('0x94')][_0xa48d('0x37')](_0x46b471[_0xa48d('0x95')](),_0x3e8d82);})[_0xa48d('0x27')](function(_0x50c4ad){if(_0x50c4ad[_0xa48d('0x96')]>0x0)_0x46b10a[_0xa48d('0x3d')](_0xa48d('0xa8'),_[_0xa48d('0x2a')](_0x50c4ad,'id'));return db[_0xa48d('0x94')][_0xa48d('0x37')](_0x46b10a[_0xa48d('0x95')](),_0x3e8d82)['then'](function(_0x43dd88){var _0xdc1abf=_['groupBy'](_0x43dd88,_0xa48d('0xa9'));var _0x49496e=[];_0x50c4ad[_0xa48d('0x2e')](function(_0x570c03){_0x49496e['push'](updateOpenchannelInteraction(_0x570c03,_0x8a55c1,_0xdc1abf));});return BPromise[_0xa48d('0xaa')](_0x49496e);});});})[_0xa48d('0x27')](function(_0x562fbf){_0x5b1b83[_0xa48d('0xab')]=_0x562fbf;return _0x5b1b83;})[_0xa48d('0x27')](respondWithFilteredResult(_0x5f1dc,_0x368c82))[_0xa48d('0x30')](handleError(_0x5f1dc,null));};exports[_0xa48d('0xac')]=function(_0x312505,_0x4ba698){var _0x2950be={};if(_0x312505[_0xa48d('0x37')][_0xa48d('0x35')]&&_0x312505[_0xa48d('0x37')]['type']===_0xa48d('0x46')){_0x2950be['from']=_0x312505[_0xa48d('0xad')]['id'];}else{_0x2950be['id']=_0x312505['params']['id'];}var _0x523353={'raw':![],'where':_0x2950be},_0x135893={};_0x135893[_0xa48d('0x36')]=_['keys'](db[_0xa48d('0x32')][_0xa48d('0x33')]);_0x135893[_0xa48d('0x37')]=_[_0xa48d('0x6e')](_0x312505['query']);_0x135893[_0xa48d('0x3e')]=_[_0xa48d('0x39')](_0x135893[_0xa48d('0x36')],_0x135893['query']);_0x523353[_0xa48d('0x38')]=_['intersection'](_0x135893[_0xa48d('0x36')],qs[_0xa48d('0x3a')](_0x312505['query'][_0xa48d('0x3a')]));_0x523353[_0xa48d('0x38')]=_0x523353[_0xa48d('0x38')][_0xa48d('0x96')]?_0x523353[_0xa48d('0x38')]:_0x135893[_0xa48d('0x36')];if(_0x312505['query'][_0xa48d('0xae')]){_0x523353[_0xa48d('0xaf')]=[{'all':!![]}];}_0x523353=_['merge']({},_0x523353,_0x312505[_0xa48d('0xb0')]);return db['OpenchannelInteraction'][_0xa48d('0x62')](_0x523353)['then'](handleEntityNotFound(_0x4ba698,null))['then'](respondWithResult(_0x4ba698,null))['catch'](handleError(_0x4ba698,null));};exports['create']=function(_0x5dfbf7,_0x40cd64){return db['OpenchannelInteraction'][_0xa48d('0xb1')](_0x5dfbf7[_0xa48d('0x6c')],{})[_0xa48d('0x27')](respondWithResult(_0x40cd64,0xc9))['catch'](handleError(_0x40cd64,null));};exports[_0xa48d('0x26')]=function(_0x3a991f,_0x22d0b6){if(_0x3a991f[_0xa48d('0x6c')]['id']){delete _0x3a991f[_0xa48d('0x6c')]['id'];}return db[_0xa48d('0x32')][_0xa48d('0x62')]({'where':{'id':_0x3a991f['params']['id']}})[_0xa48d('0x27')](handleEntityNotFound(_0x22d0b6,null))[_0xa48d('0x27')](saveUpdates(_0x3a991f[_0xa48d('0x6c')],null))[_0xa48d('0x27')](respondWithResult(_0x22d0b6,null))[_0xa48d('0x30')](handleError(_0x22d0b6,null));};exports['destroy']=function(_0x21011e,_0xa187a1){return db['OpenchannelInteraction']['find']({'where':{'id':_0x21011e[_0xa48d('0xad')]['id']}})[_0xa48d('0x27')](handleEntityNotFound(_0xa187a1,null))['then'](removeEntity(_0xa187a1,null))[_0xa48d('0x30')](handleError(_0xa187a1,null));};exports[_0xa48d('0xb2')]=function(_0x1f698d,_0x2460ae){return db[_0xa48d('0x32')][_0xa48d('0xb2')]()[_0xa48d('0x27')](respondWithResult(_0x2460ae,null))[_0xa48d('0x30')](handleError(_0x2460ae,null));};exports[_0xa48d('0xb3')]=function(_0x4bc1f9,_0x52e606,_0x5ae1f7){return db[_0xa48d('0xb4')]['find']({'where':{'id':_0x4bc1f9[_0xa48d('0xad')]['id']}})['then'](handleEntityNotFound(_0x52e606,null))[_0xa48d('0x27')](function(_0x27dbdf){if(_0x27dbdf){return _0x27dbdf[_0xa48d('0xb3')](_0x4bc1f9[_0xa48d('0x6c')][_0xa48d('0xb5')],_[_0xa48d('0xb6')](_0x4bc1f9['body'],[_0xa48d('0xb5'),'id'])||{});}})[_0xa48d('0x27')](respondWithResult(_0x52e606,null))[_0xa48d('0x30')](handleError(_0x52e606,null));};exports[_0xa48d('0xb7')]=function(_0x1eb4ef,_0x1feadf,_0x526e4){var _0x557ef6={'raw':![],'where':{}};var _0x1e8cbb={};var _0xb74f6a={'count':0x0,'rows':[]};return db[_0xa48d('0x32')][_0xa48d('0xb8')]({'where':{'id':_0x1eb4ef[_0xa48d('0xad')]['id']}})['then'](handleEntityNotFound(_0x1feadf,null))['then'](function(_0x1150bf){if(_0x1150bf){_0x1e8cbb[_0xa48d('0x36')]=_[_0xa48d('0x6e')](db[_0xa48d('0xb4')][_0xa48d('0x33')]);_0x1e8cbb[_0xa48d('0x37')]=_['keys'](_0x1eb4ef[_0xa48d('0x37')]);_0x1e8cbb[_0xa48d('0x3e')]=_[_0xa48d('0x39')](_0x1e8cbb[_0xa48d('0x36')],_0x1e8cbb['query']);_0x557ef6[_0xa48d('0x38')]=_[_0xa48d('0x39')](_0x1e8cbb['model'],qs[_0xa48d('0x3a')](_0x1eb4ef[_0xa48d('0x37')]['fields']));_0x557ef6[_0xa48d('0x38')]=_0x557ef6[_0xa48d('0x38')][_0xa48d('0x96')]?_0x557ef6[_0xa48d('0x38')]:_0x1e8cbb[_0xa48d('0x36')];if(!_0x1eb4ef[_0xa48d('0x37')][_0xa48d('0xb9')](_0xa48d('0xba'))){_0x557ef6[_0xa48d('0x20')]=qs['limit'](_0x1eb4ef['query'][_0xa48d('0x20')]);_0x557ef6[_0xa48d('0x1e')]=qs[_0xa48d('0x1e')](_0x1eb4ef[_0xa48d('0x37')]['offset']);}_0x557ef6[_0xa48d('0x3b')]=qs['sort'](_0x1eb4ef[_0xa48d('0x37')][_0xa48d('0x3c')]);_0x557ef6[_0xa48d('0x3d')]=qs[_0xa48d('0x3e')](_[_0xa48d('0x3f')](_0x1eb4ef['query'],_0x1e8cbb[_0xa48d('0x3e')]));_0x557ef6[_0xa48d('0x3d')][_0xa48d('0xa9')]=_0x1150bf['id'];if(_0x1eb4ef['query']['filter']){_0x557ef6[_0xa48d('0x3d')]=_[_0xa48d('0xbb')](_0x557ef6[_0xa48d('0x3d')],{'$or':_[_0xa48d('0x2a')](_0x557ef6[_0xa48d('0x38')],function(_0x522684){var _0x341746={};_0x341746[_0x522684]={'$like':'%'+_0x1eb4ef[_0xa48d('0x37')]['filter']+'%'};return _0x341746;})});}if(_0x1eb4ef[_0xa48d('0x37')][_0xa48d('0xbc')]){var _0x237133=_0x1eb4ef[_0xa48d('0x37')]['$gte'][_0xa48d('0x60')](',');var _0x5d71ed={};_0x5d71ed[_0x237133[0x0]]={'$gte':moment(_0x237133[0x1])[_0xa48d('0xbd')](_0xa48d('0xbe'))};_0x557ef6[_0xa48d('0x3d')]=_['merge'](_0x557ef6['where'],_0x5d71ed);}_0x557ef6=_[_0xa48d('0xbb')]({},_0x557ef6,_0x1eb4ef[_0xa48d('0xb0')]);return db[_0xa48d('0xb4')][_0xa48d('0x21')]({'where':_0x557ef6[_0xa48d('0x3d')]})[_0xa48d('0x27')](function(_0x225d2a){_0xb74f6a['count']=_0x225d2a;if(_0x1eb4ef[_0xa48d('0x37')][_0xa48d('0xae')]){_0x557ef6[_0xa48d('0xaf')]=[{'all':!![]}];}return db[_0xa48d('0xb4')][_0xa48d('0xbf')](_0x557ef6);})[_0xa48d('0x27')](function(_0x55c741){_0xb74f6a[_0xa48d('0xab')]=_0x55c741;return _0xb74f6a;});}})[_0xa48d('0x27')](respondWithFilteredResult(_0x1feadf,_0x557ef6))['catch'](handleError(_0x1feadf,null));};exports[_0xa48d('0xc0')]=function(_0x4edf87,_0x18115c,_0x58280f){return db[_0xa48d('0x32')][_0xa48d('0x62')]({'where':{'id':_0x4edf87['params']['id']}})[_0xa48d('0x27')](handleEntityNotFound(_0x18115c,null))[_0xa48d('0x27')](function(_0x427dcf){if(_0x427dcf){return _0x427dcf[_0xa48d('0xc1')](_0x4edf87[_0xa48d('0x6c')]['ids'],_[_0xa48d('0xb6')](_0x4edf87['body'],[_0xa48d('0xb5'),'id'])||{})[_0xa48d('0xc2')](function(){return db['Tag'][_0xa48d('0xbf')]({'attributes':['id',_0xa48d('0x28'),_0xa48d('0x42')],'where':{'id':_0x4edf87[_0xa48d('0x6c')][_0xa48d('0xb5')]}});})[_0xa48d('0x27')](function(_0x47b362){socket[_0xa48d('0xc3')](_0xa48d('0xc4'),{'id':Number(_0x4edf87[_0xa48d('0xad')]['id']),'tags':_0x47b362||[]});return{'id':Number(_0x4edf87[_0xa48d('0xad')]['id']),'tags':_0x47b362||[]};});}})[_0xa48d('0x27')](respondWithResult(_0x18115c,null))[_0xa48d('0x30')](handleError(_0x18115c,null));};exports['removeTags']=function(_0x748cc1,_0x3c3298,_0x1ab6d7){return db[_0xa48d('0x32')]['find']({'where':{'id':_0x748cc1['params']['id']}})[_0xa48d('0x27')](handleEntityNotFound(_0x3c3298,null))['then'](function(_0x3002f7){if(_0x3002f7){return _0x3002f7[_0xa48d('0xc5')](_0x748cc1[_0xa48d('0x37')][_0xa48d('0xb5')]);}})[_0xa48d('0x27')](respondWithStatusCode(_0x3c3298,null))[_0xa48d('0x30')](handleError(_0x3c3298,null));};exports['download']=function(_0x3d2cbe,_0x1efd36){var _0xcabc2d=moment()['unix']()[_0xa48d('0x95')]();var _0x5a7fd9=path[_0xa48d('0xc6')](config[_0xa48d('0xc7')],'server',_0xa48d('0xc8'),'tmp');var _0x1d8e54=path[_0xa48d('0xc6')](config['root'],_0xa48d('0xc9'),_0xa48d('0xc8'),_0xa48d('0xca'));var _0x5d7827=path['join'](_0x5a7fd9,_0xcabc2d);var _0x3785ba=util[_0xa48d('0xbd')]('transcript-%d-%s.zip',_0x3d2cbe['params']['id'],_0xcabc2d);var _0x459846=path[_0xa48d('0xc6')](_0x5a7fd9,_0x3785ba);var _0x4543e7=[];_0x4543e7[_0xa48d('0x2f')]({'model':db[_0xa48d('0x68')],'as':_0xa48d('0x68'),'attributes':['id',_0xa48d('0x2b')],'raw':!![]});_0x4543e7['push']({'model':db[_0xa48d('0xcb')],'as':_0xa48d('0x5e'),'attributes':['id',_0xa48d('0xcc'),_0xa48d('0xcd')],'raw':!![]});if(_0x3d2cbe[_0xa48d('0x37')][_0xa48d('0xca')]){_0x4543e7[_0xa48d('0x2f')]({'model':db[_0xa48d('0xce')],'as':_0xa48d('0xce'),'raw':!![]});}var _0x190155=[{'model':db[_0xa48d('0xb4')],'as':_0xa48d('0xcf'),'attributes':['id','body','createdAt',_0xa48d('0xd0'),_0xa48d('0xd1'),_0xa48d('0x7a')],'include':_0x4543e7}];_0x190155[_0xa48d('0x2f')]({'model':db[_0xa48d('0xd2')],'as':'Account','attributes':['id',_0xa48d('0x28')]});_0x190155[_0xa48d('0x2f')]({'model':db[_0xa48d('0x68')],'as':_0xa48d('0xd3'),'attributes':['id',_0xa48d('0x2b')]});return db['OpenchannelInteraction'][_0xa48d('0x62')]({'where':{'id':_0x3d2cbe['params']['id']},'include':_0x190155})['then'](handleEntityNotFound(_0x1efd36,null))[_0xa48d('0x27')](function(_0x1b0f05){if(_0x1b0f05){var _0x4f6be5=_0x1b0f05[_0xa48d('0xd4')]({'plain':!![]});fs['mkdirSync'](_0x5d7827);var _0xfa1ac9={'channel':_0xa48d('0xd5'),'account':_0x4f6be5[_0xa48d('0xd6')][_0xa48d('0x28')],'agent':_0x4f6be5[_0xa48d('0xd3')]?_0x4f6be5[_0xa48d('0xd3')][_0xa48d('0x2b')]:_0xa48d('0xd7'),'createdAt':moment(_0x4f6be5[_0xa48d('0x74')])[_0xa48d('0xbd')](_0xa48d('0xbe'))[_0xa48d('0x95')](),'closedAt':_0x4f6be5[_0xa48d('0xd8')]?moment(_0x4f6be5[_0xa48d('0xd9')])['format'](_0xa48d('0xbe'))[_0xa48d('0x95')]():'','disposition':_0x4f6be5['disposition'],'visibility':_0x4f6be5[_0xa48d('0xda')]?_0xa48d('0xdb'):_0xa48d('0xdc'),'messages':_(_0x4f6be5[_0xa48d('0xcf')])[_0xa48d('0x7e')]({'secret':![]})[_0xa48d('0x2a')](function(_0x4d35d6){if(_0x4d35d6[_0xa48d('0xce')]){var _0x4bd593=path[_0xa48d('0xc6')](_0x1d8e54,_0x4d35d6['Attachment'][_0xa48d('0xdd')]);if(fs[_0xa48d('0xde')](_0x4bd593)){fs[_0xa48d('0xdf')](_0x4bd593)['pipe'](fs[_0xa48d('0xe0')](path['join'](_0x5d7827,_0x4d35d6['Attachment'][_0xa48d('0xdd')])));}}return{'date':moment(_0x4d35d6[_0xa48d('0x74')])['format'](_0xa48d('0xbe'))[_0xa48d('0x95')](),'sender':_0x4d35d6['direction']===_0xa48d('0xe1')?_0x4d35d6['User']?_0x4d35d6[_0xa48d('0x68')][_0xa48d('0x2b')]:_0xa48d('0xe2'):_0x4d35d6[_0xa48d('0x5e')][_0xa48d('0xcc')]+(_0x4d35d6[_0xa48d('0x5e')][_0xa48d('0xcd')]?'\x20'+_0x4d35d6[_0xa48d('0x5e')][_0xa48d('0xcd')]:''),'body':_0x4d35d6[_0xa48d('0xce')]?_0x4d35d6[_0xa48d('0xce')][_0xa48d('0xdd')]:_0x4d35d6[_0xa48d('0x6c')],'direction':_0x4d35d6[_0xa48d('0xd0')]===_0xa48d('0xe1')?'A':'C','secret':_0x4d35d6[_0xa48d('0xd1')],'read':_0x4d35d6['read'],'attachment':_0x4d35d6[_0xa48d('0xce')]};})[_0xa48d('0x5a')]()};return ejs['renderFile'](path['join'](config[_0xa48d('0xc7')],_0xa48d('0xc9'),_0xa48d('0xe3'),_0xa48d('0xe4')),{'interaction':_0xfa1ac9})[_0xa48d('0x27')](function(_0x1178e9){var _0x229011=path[_0xa48d('0xc6')](_0x5d7827,_0xa48d('0xe5')+_0x4f6be5['id']+'-'+_0xcabc2d+_0xa48d('0xe6'));var _0x410d75={'path':_0x229011,'channel':_0xa48d('0xd5'),'interactionId':_0x4f6be5['id']};return pdf['createPdfFromHTML'](_0x1178e9,_0x410d75);})[_0xa48d('0x27')](function(){return new BPromise(function(_0x5b4598,_0x127308){zipdir(_0x5d7827,{'saveTo':_0x459846},function(_0x112400,_0x4977f2){if(_0x112400)return _0x127308(_0x112400);return _0x5b4598(_0x4977f2);});})[_0xa48d('0x27')](function(){return new BPromise(function(_0x2714df,_0x448b9a){rimraf(_0x5d7827,function(_0x23960e){if(_0x23960e)_0x448b9a(_0x23960e);return _0x2714df();});});})[_0xa48d('0x27')](function(){return _0x1efd36[_0xa48d('0xe7')](_0x459846,_0x3785ba,function(_0x196a7f){if(_0x196a7f){console[_0xa48d('0xe8')]('err',_0x196a7f);}else{fs[_0xa48d('0xe9')](_0x459846);}});});});}else{return _0x1efd36[_0xa48d('0x1a')](0xc8);}})[_0xa48d('0x30')](handleError(_0x1efd36,null));};
\ No newline at end of file
index b1a94e1..cebd9d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21df=['../../mysqldb','OpenchannelMessage','setMaxListeners','save','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x2f79f3,_0x15c4e4){var _0x1a8f1a=function(_0x1ea92a){while(--_0x1ea92a){_0x2f79f3['push'](_0x2f79f3['shift']());}};_0x1a8f1a(++_0x15c4e4);}(_0x21df,0x7d));var _0xf21d=function(_0xe67194,_0x2d452d){_0xe67194=_0xe67194-0x0;var _0x53c676=_0x21df[_0xe67194];return _0x53c676;};'use strict';var EventEmitter=require(_0xf21d('0x0'));var OpenchannelInteraction=require(_0xf21d('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db'][_0xf21d('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xf21d('0x3')](0x0);var events={'afterCreate':_0xf21d('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xdf4533){return function(_0x24ced9,_0x182ba0,_0x228c35){_0x24ced9[_0xf21d('0x5')]({'attributes':['id'],'raw':!![]})[_0xf21d('0x6')](function(_0x4d60c6){_0x24ced9['setDataValue'](_0xf21d('0x7'),_0x4d60c6[_0xf21d('0x8')](function(_0x3b2226){return{'id':_0x3b2226['id']};}));return OpenchannelMessage[_0xf21d('0x9')]({'where':{'OpenchannelInteractionId':_0x24ced9['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf21d('0x6')](function(_0x5d23cb){_0x24ced9[_0xf21d('0xa')](_0xf21d('0xb'),_0x5d23cb[_0xf21d('0xc')]);OpenchannelInteractionEvents[_0xf21d('0xd')](_0xdf4533+':'+_0x24ced9['id'],_0x24ced9);OpenchannelInteractionEvents[_0xf21d('0xd')](_0xdf4533,_0x24ced9);_0x228c35(null);})[_0xf21d('0xe')](_0x228c35(null));};}for(var e in events){if(events[_0xf21d('0xf')](e)){var event=events[e];OpenchannelInteraction[_0xf21d('0x10')](e,emitEvent(event));}}module[_0xf21d('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x9c66=['length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','update','getUsers','then','setDataValue','Users','map','findAll'];(function(_0x4906ca,_0x7cb8c0){var _0x493642=function(_0x3624fa){while(--_0x3624fa){_0x4906ca['push'](_0x4906ca['shift']());}};_0x493642(++_0x7cb8c0);}(_0x9c66,0x127));var _0x69c6=function(_0x368e09,_0x2c1517){_0x368e09=_0x368e09-0x0;var _0x14b7df=_0x9c66[_0x368e09];return _0x14b7df;};'use strict';var EventEmitter=require(_0x69c6('0x0'));var OpenchannelInteraction=require(_0x69c6('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x69c6('0x1'))['db'][_0x69c6('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x69c6('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x69c6('0x4'),'afterDestroy':'remove'};function emitEvent(_0x21cec0){return function(_0x1baa36,_0x2f75cd,_0x1cec6e){_0x1baa36[_0x69c6('0x5')]({'attributes':['id'],'raw':!![]})[_0x69c6('0x6')](function(_0x269928){_0x1baa36[_0x69c6('0x7')](_0x69c6('0x8'),_0x269928[_0x69c6('0x9')](function(_0x3d542f){return{'id':_0x3d542f['id']};}));return OpenchannelMessage[_0x69c6('0xa')]({'where':{'OpenchannelInteractionId':_0x1baa36['id'],'direction':'in','read':![]},'raw':!![]});})[_0x69c6('0x6')](function(_0x478a92){_0x1baa36[_0x69c6('0x7')]('unreadMessages',_0x478a92[_0x69c6('0xb')]);OpenchannelInteractionEvents[_0x69c6('0xc')](_0x21cec0+':'+_0x1baa36['id'],_0x1baa36);OpenchannelInteractionEvents[_0x69c6('0xc')](_0x21cec0,_0x1baa36);_0x1cec6e(null);})[_0x69c6('0xd')](_0x1cec6e(null));};}for(var e in events){if(events[_0x69c6('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x69c6('0xf')](e,emitEvent(event));}}module[_0x69c6('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
index cbb6d13..20bd742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b70=['utf8mb4','utf8mb4_unicode_ci','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','OpenchannelInteraction','openchannel_interactions'];(function(_0x3fd712,_0x2e6ad5){var _0x2d6583=function(_0xc23d43){while(--_0xc23d43){_0x3fd712['push'](_0x3fd712['shift']());}};_0x2d6583(++_0x2e6ad5);}(_0x1b70,0x115));var _0x01b7=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x1b70[_0x12f688];return _0x59c3de;};'use strict';var _=require(_0x01b7('0x0'));var util=require(_0x01b7('0x1'));var logger=require(_0x01b7('0x2'))(_0x01b7('0x3'));var moment=require(_0x01b7('0x4'));var BPromise=require(_0x01b7('0x5'));var rp=require(_0x01b7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x01b7('0x7'));var attributes=require('./openchannelInteraction.attributes');module[_0x01b7('0x8')]=function(_0x2452bb,_0xb0e5ca){return _0x2452bb[_0x01b7('0x9')](_0x01b7('0xa'),attributes,{'tableName':_0x01b7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x01b7('0xc'),'collate':_0x01b7('0xd'),'hooks':{'beforeUpdate':function(_0x1f01db,_0x3bf5b8,_0x24a9a4){if(_0x1f01db['changed']('closed')){_0x1f01db[_0x01b7('0xe')]=moment()[_0x01b7('0xf')](_0x01b7('0x10'));}_0x24a9a4(null,_0x1f01db);}}});};
\ No newline at end of file
+var _0xdb2f=['openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','OpenchannelInteraction'];(function(_0x15fb82,_0x42b1e5){var _0x495f54=function(_0x31e0b9){while(--_0x31e0b9){_0x15fb82['push'](_0x15fb82['shift']());}};_0x495f54(++_0x42b1e5);}(_0xdb2f,0x1d8));var _0xfdb2=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xdb2f[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0xfdb2('0x0'));var logger=require(_0xfdb2('0x1'))(_0xfdb2('0x2'));var moment=require('moment');var BPromise=require(_0xfdb2('0x3'));var rp=require(_0xfdb2('0x4'));var fs=require('fs');var path=require(_0xfdb2('0x5'));var rimraf=require('rimraf');var config=require(_0xfdb2('0x6'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x300564,_0x180f80){return _0x300564['define'](_0xfdb2('0x7'),attributes,{'tableName':_0xfdb2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfdb2('0x9'),'collate':_0xfdb2('0xa'),'hooks':{'beforeUpdate':function(_0x293428,_0x4d78db,_0x4c8641){if(_0x293428[_0xfdb2('0xb')](_0xfdb2('0xc'))){_0x293428['closedAt']=moment()[_0xfdb2('0xd')](_0xfdb2('0xe'));}_0x4c8641(null,_0x293428);}}});};
\ No newline at end of file
index f7dffe2..6c7383d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8349=['ids','spread','AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','OpenchannelInteraction','update','body','options','raw','where','attributes','then','UpdateOpenchannelInteraction','AddTagsToOpenchannelInteraction','find','addTags'];(function(_0x556510,_0x16b29c){var _0x6cc001=function(_0x37cca3){while(--_0x37cca3){_0x556510['push'](_0x556510['shift']());}};_0x6cc001(++_0x16b29c);}(_0x8349,0x9b));var _0x9834=function(_0x53b8e0,_0x55d46e){_0x53b8e0=_0x53b8e0-0x0;var _0x10630c=_0x8349[_0x53b8e0];return _0x10630c;};'use strict';var _=require(_0x9834('0x0'));var util=require('util');var moment=require(_0x9834('0x1'));var BPromise=require('bluebird');var rs=require(_0x9834('0x2'));var fs=require('fs');var Redis=require(_0x9834('0x3'));var db=require(_0x9834('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9834('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9834('0x6'));var client=jayson[_0x9834('0x7')][_0x9834('0x8')]({'port':0x232a});config[_0x9834('0x9')]=_[_0x9834('0xa')](config[_0x9834('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x9834('0xb'))(new Redis(config[_0x9834('0x9')]));require(_0x9834('0xc'))['register'](socket);function respondWithRpcPromise(_0x42613b,_0xf4f463,_0x5e221a){return new BPromise(function(_0x4db152,_0xce3827){return client[_0x9834('0xd')](_0x42613b,_0x5e221a)['then'](function(_0x30eccd){logger[_0x9834('0xe')](_0x9834('0xf'),_0xf4f463,_0x9834('0x10'));logger[_0x9834('0x11')](_0x9834('0x12'),_0xf4f463,_0x9834('0x10'),JSON[_0x9834('0x13')](_0x30eccd));if(_0x30eccd[_0x9834('0x14')]){if(_0x30eccd['error']['code']===0x1f4){logger['error'](_0x9834('0xf'),_0xf4f463,_0x30eccd[_0x9834('0x14')][_0x9834('0x15')]);return _0xce3827(_0x30eccd[_0x9834('0x14')]['message']);}logger['error'](_0x9834('0xf'),_0xf4f463,_0x30eccd[_0x9834('0x14')]['message']);return _0x4db152(_0x30eccd[_0x9834('0x14')]['message']);}else{logger[_0x9834('0xe')](_0x9834('0xf'),_0xf4f463,'request\x20sent');_0x4db152(_0x30eccd['result'][_0x9834('0x15')]);}})[_0x9834('0x16')](function(_0x5deb4d){logger[_0x9834('0x14')](_0x9834('0xf'),_0xf4f463,_0x5deb4d);_0xce3827(_0x5deb4d);});});}exports['UpdateOpenchannelInteraction']=function(_0x244fc7){var _0x29accc=this;return new Promise(function(_0x32354f,_0x1134ed){return db[_0x9834('0x17')][_0x9834('0x18')](_0x244fc7[_0x9834('0x19')],{'raw':_0x244fc7[_0x9834('0x1a')]?_0x244fc7[_0x9834('0x1a')][_0x9834('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x244fc7[_0x9834('0x1a')]?_0x244fc7[_0x9834('0x1a')][_0x9834('0x1c')]||null:null,'attributes':_0x244fc7['options']?_0x244fc7['options'][_0x9834('0x1d')]||null:null,'limit':_0x244fc7[_0x9834('0x1a')]?_0x244fc7[_0x9834('0x1a')]['limit']||null:null})[_0x9834('0x1e')](function(_0x1d6ebb){logger[_0x9834('0xe')](_0x9834('0x1f'),_0x244fc7);logger['debug']('UpdateOpenchannelInteraction',_0x244fc7,JSON[_0x9834('0x13')](_0x1d6ebb));_0x32354f(_0x1d6ebb);})[_0x9834('0x16')](function(_0x204e8d){logger[_0x9834('0x14')](_0x9834('0x1f'),_0x204e8d[_0x9834('0x15')],_0x244fc7);_0x1134ed(_0x29accc[_0x9834('0x14')](0x1f4,_0x204e8d[_0x9834('0x15')]));});});};exports[_0x9834('0x20')]=function(_0x181021){return new Promise(function(_0x49204f,_0x24be4b){return db['OpenchannelInteraction'][_0x9834('0x21')]({'where':_0x181021['options']?_0x181021[_0x9834('0x1a')][_0x9834('0x1c')]||null:null})['then'](function(_0x59e970){if(_0x59e970){return _0x59e970[_0x9834('0x22')](_0x181021[_0x9834('0x19')][_0x9834('0x23')],_['omit'](_0x181021[_0x9834('0x19')],['ids','id'])||{});}})[_0x9834('0x24')](function(_0x23cf66){logger[_0x9834('0xe')]('AddTags',_0x181021);logger[_0x9834('0x11')](_0x9834('0x25'),_0x181021,JSON[_0x9834('0x13')](_0x23cf66));_0x49204f(_0x23cf66);})['catch'](function(_0x145dd4){logger[_0x9834('0x14')](_0x9834('0x25'),_0x145dd4[_0x9834('0x15')],_0x181021);_0x24be4b(_this[_0x9834('0x14')](0x1f4,_0x145dd4[_0x9834('0x15')]));});});};
\ No newline at end of file
+var _0x52d3=['register','request','then','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','result','catch','UpdateOpenchannelInteraction','update','body','options','where','limit','stringify','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','omit','ids','spread','AddTags','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket'];(function(_0x230524,_0x4c8e1b){var _0x456865=function(_0x23d40b){while(--_0x23d40b){_0x230524['push'](_0x230524['shift']());}};_0x456865(++_0x4c8e1b);}(_0x52d3,0x99));var _0x352d=function(_0x38bf3c,_0x1eb960){_0x38bf3c=_0x38bf3c-0x0;var _0x3fca71=_0x52d3[_0x38bf3c];return _0x3fca71;};'use strict';var _=require('lodash');var util=require(_0x352d('0x0'));var moment=require(_0x352d('0x1'));var BPromise=require('bluebird');var rs=require(_0x352d('0x2'));var fs=require('fs');var Redis=require(_0x352d('0x3'));var db=require(_0x352d('0x4'))['db'];var utils=require(_0x352d('0x5'));var logger=require(_0x352d('0x6'))(_0x352d('0x7'));var config=require(_0x352d('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x352d('0x9')]({'port':0x232a});config[_0x352d('0xa')]=_[_0x352d('0xb')](config['redis'],{'host':_0x352d('0xc'),'port':0x18eb});var socket=require(_0x352d('0xd'))(new Redis(config[_0x352d('0xa')]));require(_0x352d('0xe'))[_0x352d('0xf')](socket);function respondWithRpcPromise(_0x3955c9,_0x45c782,_0x34990c){return new BPromise(function(_0x8d522c,_0x36cc29){return client[_0x352d('0x10')](_0x3955c9,_0x34990c)[_0x352d('0x11')](function(_0x515c81){logger['info'](_0x352d('0x12'),_0x45c782,'request\x20sent');logger[_0x352d('0x13')](_0x352d('0x14'),_0x45c782,'request\x20sent',JSON['stringify'](_0x515c81));if(_0x515c81[_0x352d('0x15')]){if(_0x515c81[_0x352d('0x15')][_0x352d('0x16')]===0x1f4){logger[_0x352d('0x15')](_0x352d('0x12'),_0x45c782,_0x515c81['error']['message']);return _0x36cc29(_0x515c81['error'][_0x352d('0x17')]);}logger[_0x352d('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x45c782,_0x515c81['error'][_0x352d('0x17')]);return _0x8d522c(_0x515c81[_0x352d('0x15')][_0x352d('0x17')]);}else{logger[_0x352d('0x18')](_0x352d('0x12'),_0x45c782,_0x352d('0x19'));_0x8d522c(_0x515c81[_0x352d('0x1a')][_0x352d('0x17')]);}})[_0x352d('0x1b')](function(_0xab687f){logger[_0x352d('0x15')](_0x352d('0x12'),_0x45c782,_0xab687f);_0x36cc29(_0xab687f);});});}exports[_0x352d('0x1c')]=function(_0x379cd5){var _0x166ad6=this;return new Promise(function(_0x509112,_0x4c8dfc){return db['OpenchannelInteraction'][_0x352d('0x1d')](_0x379cd5[_0x352d('0x1e')],{'raw':_0x379cd5[_0x352d('0x1f')]?_0x379cd5['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x379cd5[_0x352d('0x1f')]?_0x379cd5[_0x352d('0x1f')][_0x352d('0x20')]||null:null,'attributes':_0x379cd5[_0x352d('0x1f')]?_0x379cd5[_0x352d('0x1f')]['attributes']||null:null,'limit':_0x379cd5[_0x352d('0x1f')]?_0x379cd5[_0x352d('0x1f')][_0x352d('0x21')]||null:null})[_0x352d('0x11')](function(_0xb4a4a7){logger[_0x352d('0x18')]('UpdateOpenchannelInteraction',_0x379cd5);logger[_0x352d('0x13')]('UpdateOpenchannelInteraction',_0x379cd5,JSON[_0x352d('0x22')](_0xb4a4a7));_0x509112(_0xb4a4a7);})[_0x352d('0x1b')](function(_0x2de129){logger['error'](_0x352d('0x1c'),_0x2de129[_0x352d('0x17')],_0x379cd5);_0x4c8dfc(_0x166ad6[_0x352d('0x15')](0x1f4,_0x2de129[_0x352d('0x17')]));});});};exports[_0x352d('0x23')]=function(_0x4d3c54){return new Promise(function(_0x1e953f,_0x51a624){return db[_0x352d('0x24')][_0x352d('0x25')]({'where':_0x4d3c54[_0x352d('0x1f')]?_0x4d3c54[_0x352d('0x1f')][_0x352d('0x20')]||null:null})['then'](function(_0x3ff51f){if(_0x3ff51f){return _0x3ff51f['addTags'](_0x4d3c54['body']['ids'],_[_0x352d('0x26')](_0x4d3c54['body'],[_0x352d('0x27'),'id'])||{});}})[_0x352d('0x28')](function(_0x50566b){logger[_0x352d('0x18')]('AddTags',_0x4d3c54);logger[_0x352d('0x13')](_0x352d('0x29'),_0x4d3c54,JSON[_0x352d('0x22')](_0x50566b));_0x1e953f(_0x50566b);})[_0x352d('0x1b')](function(_0x223710){logger[_0x352d('0x15')](_0x352d('0x29'),_0x223710[_0x352d('0x17')],_0x4d3c54);_0x51a624(_this[_0x352d('0x15')](0x1f4,_0x223710[_0x352d('0x17')]));});});};
\ No newline at end of file
index bdf803b..469e992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d52=['removeListener','register','openchannelInteraction:','./openchannelInteraction.events','save','remove','update'];(function(_0x5dbba4,_0x1ff3de){var _0x1002e1=function(_0x1edb71){while(--_0x1edb71){_0x5dbba4['push'](_0x5dbba4['shift']());}};_0x1002e1(++_0x1ff3de);}(_0x0d52,0x184));var _0x20d5=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x0d52[_0x12fc8d];return _0x3f9d04;};'use strict';var OpenchannelInteractionEvents=require(_0x20d5('0x0'));var events=[_0x20d5('0x1'),_0x20d5('0x2'),_0x20d5('0x3')];function createListener(_0x22b0bc,_0x28e046){return function(_0xbc8de9){_0x28e046['emit'](_0x22b0bc,_0xbc8de9);};}function removeListener(_0x1d087e,_0x25a032){return function(){OpenchannelInteractionEvents[_0x20d5('0x4')](_0x1d087e,_0x25a032);};}exports[_0x20d5('0x5')]=function(_0x43357b){for(var _0x4e6572=0x0,_0x1a0e6a=events['length'];_0x4e6572<_0x1a0e6a;_0x4e6572++){var _0x41e0f8=events[_0x4e6572];var _0x141802=createListener(_0x20d5('0x6')+_0x41e0f8,_0x43357b);OpenchannelInteractionEvents['on'](_0x41e0f8,_0x141802);}};
\ No newline at end of file
+var _0x4bef=['openchannelInteraction:','./openchannelInteraction.events','save','remove','update','emit','removeListener','register','length'];(function(_0x516e65,_0x1ca26d){var _0x5d503f=function(_0x443e30){while(--_0x443e30){_0x516e65['push'](_0x516e65['shift']());}};_0x5d503f(++_0x1ca26d);}(_0x4bef,0x1c3));var _0xf4be=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x4bef[_0xe66cf2];return _0x2d84e7;};'use strict';var OpenchannelInteractionEvents=require(_0xf4be('0x0'));var events=[_0xf4be('0x1'),_0xf4be('0x2'),_0xf4be('0x3')];function createListener(_0x27f7d9,_0x3a9ab4){return function(_0x3ae702){_0x3a9ab4[_0xf4be('0x4')](_0x27f7d9,_0x3ae702);};}function removeListener(_0x149e2a,_0x320073){return function(){OpenchannelInteractionEvents[_0xf4be('0x5')](_0x149e2a,_0x320073);};}exports[_0xf4be('0x6')]=function(_0x1fcd1c){for(var _0x578a8f=0x0,_0x6d7331=events[_0xf4be('0x7')];_0x578a8f<_0x6d7331;_0x578a8f++){var _0x1c8b24=events[_0x578a8f];var _0x1fe0bc=createListener(_0xf4be('0x8')+_0x1c8b24,_0x1fcd1c);OpenchannelInteractionEvents['on'](_0x1c8b24,_0x1fe0bc);}};
\ No newline at end of file
index b1843ae..e9bbda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x321728,_0x1fbc48){var _0x211876=function(_0x5bf9fc){while(--_0x5bf9fc){_0x321728['push'](_0x321728['shift']());}};_0x211876(++_0x1fbc48);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x54b283,_0x5eb8a6){_0x54b283=_0x54b283-0x0;var _0x2462b3=_0xcb91[_0x54b283];return _0x2462b3;};'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');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x3ce3ca,_0x22d8a1){var _0x33bc5b=function(_0x3bfea2){while(--_0x3bfea2){_0x3ce3ca['push'](_0x3ce3ca['shift']());}};_0x33bc5b(++_0x22d8a1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
index 31b61ed..ab97b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc87=['STRING','TEXT','sequelize','medium','BOOLEAN','out','DATE'];(function(_0x3f86ba,_0xe97e00){var _0x11e596=function(_0x35a316){while(--_0x35a316){_0x3f86ba['push'](_0x3f86ba['shift']());}};_0x11e596(++_0xe97e00);}(_0xbc87,0x144));var _0x7bc8=function(_0xe2a4a1,_0x55d6f0){_0xe2a4a1=_0xe2a4a1-0x0;var _0x1a967c=_0xbc87[_0xe2a4a1];return _0x1a967c;};'use strict';var Sequelize=require(_0x7bc8('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x7bc8('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x7bc8('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x7bc8('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x7bc8('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x7bc8('0x4')]},'providerName':{'type':Sequelize[_0x7bc8('0x5')]},'providerResponse':{'type':Sequelize[_0x7bc8('0x6')]}};
\ No newline at end of file
+var _0x1cc3=['out','DATE','STRING','TEXT','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x31e9a5,_0x520323){var _0x96859d=function(_0x4a5606){while(--_0x4a5606){_0x31e9a5['push'](_0x31e9a5['shift']());}};_0x96859d(++_0x520323);}(_0x1cc3,0x11b));var _0x31cc=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x1cc3[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x31cc('0x0'));module[_0x31cc('0x1')]={'body':{'type':Sequelize['TEXT'](_0x31cc('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x31cc('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x31cc('0x4')]('in',_0x31cc('0x5')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x31cc('0x6')]},'providerName':{'type':Sequelize[_0x31cc('0x7')]},'providerResponse':{'type':Sequelize[_0x31cc('0x8')]}};
\ No newline at end of file
index 7146e0f..7a8207c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea5=['hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','findAll','show','params','includeAll','create','body','find','describe','../../config/logger','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','null','AcceptMessage','acceptMessage','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','defaults','redis','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','stack','name','send','map','OpenchannelMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x190148,_0xda6bdd){var _0x5009de=function(_0x19c769){while(--_0x19c769){_0x190148['push'](_0x190148['shift']());}};_0x5009de(++_0xda6bdd);}(_0xbea5,0x13c));var _0x5bea=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0xbea5[_0x2e3dfc];return _0x4b1245;};'use strict';var emlformat=require(_0x5bea('0x0'));var rimraf=require(_0x5bea('0x1'));var zipdir=require(_0x5bea('0x2'));var jsonpatch=require(_0x5bea('0x3'));var rp=require(_0x5bea('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5bea('0x5'));var path=require(_0x5bea('0x6'));var sox=require(_0x5bea('0x7'));var csv=require(_0x5bea('0x8'));var ejs=require(_0x5bea('0x9'));var fs=require('fs');var fs_extra=require(_0x5bea('0xa'));var _=require(_0x5bea('0xb'));var squel=require(_0x5bea('0xc'));var crypto=require(_0x5bea('0xd'));var jsforce=require(_0x5bea('0xe'));var deskjs=require(_0x5bea('0xf'));var toCsv=require(_0x5bea('0x8'));var querystring=require('querystring');var Papa=require(_0x5bea('0x10'));var Redis=require(_0x5bea('0x11'));var authService=require(_0x5bea('0x12'));var qs=require(_0x5bea('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5bea('0x14'));var logger=require('../../config/logger')(_0x5bea('0x15'));var utils=require(_0x5bea('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5bea('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x5bea('0x18')](config[_0x5bea('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x5bea('0x1a'))(new Redis(config['redis']));require(_0x5bea('0x1b'))[_0x5bea('0x1c')](socket);var jayson=require(_0x5bea('0x1d'));var client=jayson[_0x5bea('0x1e')][_0x5bea('0x1f')]({'port':0x232c});var client9002=jayson[_0x5bea('0x1e')][_0x5bea('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x31820a,_0x5ab9b2,_0x2cdecc,_0x1a1e9b){return new BPromise(function(_0x3f9723,_0x3a183a){var _0x16e520=_0x1a1e9b||client;return _0x16e520[_0x5bea('0x20')](_0x31820a,_0x2cdecc)[_0x5bea('0x21')](function(_0x151024){logger[_0x5bea('0x22')](_0x5bea('0x23'),_0x5ab9b2,_0x5bea('0x24'));logger['debug'](_0x5bea('0x25'),_0x5ab9b2,'request\x20sent',JSON['stringify'](_0x151024));if(_0x151024['error']){if(_0x151024['error']['code']===0x1f4){logger[_0x5bea('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0x5ab9b2,_0x151024[_0x5bea('0x26')][_0x5bea('0x27')]);return _0x3a183a(_0x151024[_0x5bea('0x26')][_0x5bea('0x27')]);}logger['error'](_0x5bea('0x23'),_0x5ab9b2,_0x151024['error'][_0x5bea('0x27')]);return _0x3f9723(_0x151024[_0x5bea('0x26')][_0x5bea('0x27')]);}else{logger[_0x5bea('0x22')](_0x5bea('0x23'),_0x5ab9b2,'request\x20sent');_0x3f9723(_0x151024[_0x5bea('0x28')][_0x5bea('0x27')]);}})[_0x5bea('0x29')](function(_0x4fba1c){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x5ab9b2,_0x4fba1c);_0x3a183a(_0x4fba1c);});});}function respondWithStatusCode(_0x72aa91,_0x227f60){_0x227f60=_0x227f60||0xcc;return function(_0x4f9b98){if(_0x4f9b98){return _0x72aa91['sendStatus'](_0x227f60);}return _0x72aa91['status'](_0x227f60)[_0x5bea('0x2a')]();};}function respondWithResult(_0xba619d,_0x485264){_0x485264=_0x485264||0xc8;return function(_0xe9dbf3){if(_0xe9dbf3){return _0xba619d[_0x5bea('0x2b')](_0x485264)[_0x5bea('0x2c')](_0xe9dbf3);}};}function respondWithFilteredResult(_0x1b078d,_0x11d2ee){return function(_0x39a9ae){if(_0x39a9ae){var _0x4bc790=typeof _0x11d2ee['offset']===_0x5bea('0x2d')&&typeof _0x11d2ee[_0x5bea('0x2e')]==='undefined';var _0xd90752=_0x39a9ae[_0x5bea('0x2f')];var _0x48a28e=_0x4bc790?0x0:_0x11d2ee[_0x5bea('0x30')];var _0x737561=_0x4bc790?_0x39a9ae[_0x5bea('0x2f')]:_0x11d2ee[_0x5bea('0x30')]+_0x11d2ee[_0x5bea('0x2e')];var _0x7d431;if(_0x737561>=_0xd90752){_0x737561=_0xd90752;_0x7d431=0xc8;}else{_0x7d431=0xce;}_0x1b078d['status'](_0x7d431);return _0x1b078d[_0x5bea('0x31')](_0x5bea('0x32'),_0x48a28e+'-'+_0x737561+'/'+_0xd90752)[_0x5bea('0x2c')](_0x39a9ae);}return null;};}function patchUpdates(_0x530616){return function(_0x40c54c){try{jsonpatch[_0x5bea('0x33')](_0x40c54c,_0x530616,!![]);}catch(_0x2f38e3){return BPromise[_0x5bea('0x34')](_0x2f38e3);}return _0x40c54c['save']();};}function saveUpdates(_0x178e9d,_0x283298){return function(_0x493cfb){if(_0x493cfb){return _0x493cfb[_0x5bea('0x35')](_0x178e9d)[_0x5bea('0x21')](function(_0x3d546c){return _0x3d546c;});}return null;};}function removeEntity(_0x12b0e8,_0x6ca69f){return function(_0x384e20){if(_0x384e20){return _0x384e20[_0x5bea('0x36')]()[_0x5bea('0x21')](function(){_0x12b0e8[_0x5bea('0x2b')](0xcc)[_0x5bea('0x2a')]();});}};}function handleEntityNotFound(_0x3bd462,_0x3e341f){return function(_0x2aadf1){if(!_0x2aadf1){_0x3bd462['sendStatus'](0x194);}return _0x2aadf1;};}function handleError(_0x2a1b6a,_0x4fda5c){_0x4fda5c=_0x4fda5c||0x1f4;return function(_0x2e4f4f){logger[_0x5bea('0x26')](_0x2e4f4f[_0x5bea('0x37')]);if(_0x2e4f4f[_0x5bea('0x38')]){delete _0x2e4f4f['name'];}_0x2a1b6a[_0x5bea('0x2b')](_0x4fda5c)[_0x5bea('0x39')](_0x2e4f4f);};}exports['index']=function(_0x32f680,_0xcfdadd){var _0x328d17={},_0x48b1b8={},_0x417d02={'count':0x0,'rows':[]};var _0x56abab=_[_0x5bea('0x3a')](db[_0x5bea('0x3b')]['rawAttributes'],function(_0x3f4a64){return{'name':_0x3f4a64[_0x5bea('0x3c')],'type':_0x3f4a64[_0x5bea('0x3d')][_0x5bea('0x3e')]};});_0x48b1b8[_0x5bea('0x3f')]=_['map'](_0x56abab,_0x5bea('0x38'));_0x48b1b8[_0x5bea('0x40')]=_[_0x5bea('0x41')](_0x32f680[_0x5bea('0x40')]);_0x48b1b8[_0x5bea('0x42')]=_[_0x5bea('0x43')](_0x48b1b8['model'],_0x48b1b8['query']);_0x328d17[_0x5bea('0x44')]=_[_0x5bea('0x43')](_0x48b1b8[_0x5bea('0x3f')],qs[_0x5bea('0x45')](_0x32f680['query'][_0x5bea('0x45')]));_0x328d17[_0x5bea('0x44')]=_0x328d17[_0x5bea('0x44')][_0x5bea('0x46')]?_0x328d17[_0x5bea('0x44')]:_0x48b1b8[_0x5bea('0x3f')];if(!_0x32f680[_0x5bea('0x40')][_0x5bea('0x47')]('nolimit')){_0x328d17[_0x5bea('0x2e')]=qs[_0x5bea('0x2e')](_0x32f680[_0x5bea('0x40')][_0x5bea('0x2e')]);_0x328d17[_0x5bea('0x30')]=qs['offset'](_0x32f680[_0x5bea('0x40')][_0x5bea('0x30')]);}_0x328d17[_0x5bea('0x48')]=qs[_0x5bea('0x49')](_0x32f680[_0x5bea('0x40')][_0x5bea('0x49')]);_0x328d17[_0x5bea('0x4a')]=qs[_0x5bea('0x42')](_['pick'](_0x32f680[_0x5bea('0x40')],_0x48b1b8['filters']),_0x56abab);if(_0x32f680[_0x5bea('0x40')][_0x5bea('0x4b')]){_0x328d17[_0x5bea('0x4a')]=_[_0x5bea('0x4c')](_0x328d17['where'],{'$or':_[_0x5bea('0x3a')](_0x56abab,function(_0x2d69fb){if(_0x2d69fb['type']!==_0x5bea('0x4d')){var _0x4c96a1={};_0x4c96a1[_0x2d69fb['name']]={'$like':'%'+_0x32f680[_0x5bea('0x40')][_0x5bea('0x4b')]+'%'};return _0x4c96a1;}})});}_0x328d17=_[_0x5bea('0x4c')]({},_0x328d17,_0x32f680[_0x5bea('0x4e')]);var _0xac1990={'where':_0x328d17[_0x5bea('0x4a')]};return db[_0x5bea('0x3b')][_0x5bea('0x2f')](_0xac1990)['then'](function(_0x489572){_0x417d02[_0x5bea('0x2f')]=_0x489572;if(_0x32f680[_0x5bea('0x40')]['includeAll']){_0x328d17['include']=[{'all':!![]}];}return db[_0x5bea('0x3b')][_0x5bea('0x4f')](_0x328d17);})[_0x5bea('0x21')](function(_0x327c7e){_0x417d02['rows']=_0x327c7e;return _0x417d02;})['then'](respondWithFilteredResult(_0xcfdadd,_0x328d17))[_0x5bea('0x29')](handleError(_0xcfdadd,null));};exports[_0x5bea('0x50')]=function(_0x70813d,_0x679d6){var _0x9abfd={'raw':!![],'where':{'id':_0x70813d[_0x5bea('0x51')]['id']}},_0x544f4c={};_0x544f4c[_0x5bea('0x3f')]=_[_0x5bea('0x41')](db[_0x5bea('0x3b')]['rawAttributes']);_0x544f4c['query']=_[_0x5bea('0x41')](_0x70813d[_0x5bea('0x40')]);_0x544f4c[_0x5bea('0x42')]=_[_0x5bea('0x43')](_0x544f4c[_0x5bea('0x3f')],_0x544f4c[_0x5bea('0x40')]);_0x9abfd['attributes']=_[_0x5bea('0x43')](_0x544f4c['model'],qs[_0x5bea('0x45')](_0x70813d[_0x5bea('0x40')][_0x5bea('0x45')]));_0x9abfd[_0x5bea('0x44')]=_0x9abfd[_0x5bea('0x44')][_0x5bea('0x46')]?_0x9abfd[_0x5bea('0x44')]:_0x544f4c[_0x5bea('0x3f')];if(_0x70813d[_0x5bea('0x40')][_0x5bea('0x52')]){_0x9abfd['include']=[{'all':!![]}];}_0x9abfd=_['merge']({},_0x9abfd,_0x70813d[_0x5bea('0x4e')]);return db[_0x5bea('0x3b')]['find'](_0x9abfd)[_0x5bea('0x21')](handleEntityNotFound(_0x679d6,null))['then'](respondWithResult(_0x679d6,null))[_0x5bea('0x29')](handleError(_0x679d6,null));};exports[_0x5bea('0x53')]=function(_0x27cdc4,_0x11d929){return db[_0x5bea('0x3b')][_0x5bea('0x53')](_0x27cdc4[_0x5bea('0x54')],{})[_0x5bea('0x21')](respondWithResult(_0x11d929,0xc9))[_0x5bea('0x29')](handleError(_0x11d929,null));};exports[_0x5bea('0x35')]=function(_0x4515c1,_0x563065){if(_0x4515c1[_0x5bea('0x54')]['id']){delete _0x4515c1[_0x5bea('0x54')]['id'];}return db[_0x5bea('0x3b')][_0x5bea('0x55')]({'where':{'id':_0x4515c1[_0x5bea('0x51')]['id']}})[_0x5bea('0x21')](handleEntityNotFound(_0x563065,null))[_0x5bea('0x21')](saveUpdates(_0x4515c1[_0x5bea('0x54')],null))['then'](respondWithResult(_0x563065,null))[_0x5bea('0x29')](handleError(_0x563065,null));};exports[_0x5bea('0x36')]=function(_0xd62cf4,_0x7401c3){return db['OpenchannelMessage'][_0x5bea('0x55')]({'where':{'id':_0xd62cf4['params']['id']}})['then'](handleEntityNotFound(_0x7401c3,null))[_0x5bea('0x21')](removeEntity(_0x7401c3,null))[_0x5bea('0x29')](handleError(_0x7401c3,null));};exports['describe']=function(_0x5537bb,_0x4fb6ce){return db[_0x5bea('0x3b')][_0x5bea('0x56')]()[_0x5bea('0x21')](respondWithResult(_0x4fb6ce,null))['catch'](handleError(_0x4fb6ce,null));};var interaction_log=require(_0x5bea('0x57'))(_0x5bea('0x58'));exports[_0x5bea('0x59')]=function(_0xd8369b,_0x3cbe42,_0x34e7c3){var _0x49bced={'agent':{},'channel':_0x5bea('0x5a')};if(_0xd8369b[_0x5bea('0x54')]['id']){delete _0xd8369b[_0x5bea('0x54')]['id'];}_0xd8369b[_0x5bea('0x54')]['read']=!![];_0xd8369b['body'][_0x5bea('0x5b')]=moment()[_0x5bea('0x5c')](_0x5bea('0x5d'));_0xd8369b['body'][_0x5bea('0x5e')]=_0xd8369b[_0x5bea('0x54')][_0x5bea('0x5e')]||_0xd8369b[_0x5bea('0x5f')]['id'];_0x49bced[_0x5bea('0x60')]['id']=_0xd8369b[_0x5bea('0x54')][_0x5bea('0x5e')];return db[_0x5bea('0x3b')]['find']({'where':{'id':_0xd8369b[_0x5bea('0x51')]['id'],'UserId':null}})[_0x5bea('0x21')](handleEntityNotFound(_0x3cbe42,null))[_0x5bea('0x21')](saveUpdates(_0xd8369b['body'],null))[_0x5bea('0x21')](function(_0x59b7d2){if(_0x59b7d2){_0x49bced[_0x5bea('0x27')]=_0x59b7d2[_0x5bea('0x61')]({'plain':!![]});return db[_0x5bea('0x62')][_0x5bea('0x55')]({'where':{'id':_0x59b7d2[_0x5bea('0x63')]}});}return null;})[_0x5bea('0x21')](handleEntityNotFound(_0x3cbe42,null))[_0x5bea('0x21')](function(_0x2f3338){if(_0x2f3338){return _0x2f3338[_0x5bea('0x35')]({'UserId':_0xd8369b[_0x5bea('0x54')][_0x5bea('0x5e')],'read1stAt':_[_0x5bea('0x64')](_0x2f3338[_0x5bea('0x65')])?moment()[_0x5bea('0x5c')](_0x5bea('0x5d')):undefined});}return null;})[_0x5bea('0x21')](function(_0x47e1d1){if(_0x47e1d1){_0x49bced['interaction']=_0x47e1d1[_0x5bea('0x61')]({'plain':!![]});interaction_log['info'](_0x5bea('0x66'),_0xd8369b[_0x5bea('0x5f')]['id'],_0xd8369b['user'][_0x5bea('0x38')],_0xd8369b[_0x5bea('0x5f')][_0x5bea('0x67')],_0x49bced[_0x5bea('0x68')]['id'],_0xd8369b['body']?JSON[_0x5bea('0x69')](_0xd8369b['body']):_0x5bea('0x6a'));return respondWithRpcPromise(_0x5bea('0x6b'),_0x5bea('0x6c'),_0x49bced);}return null;})['then'](function(_0x5859bc){var _0x48850e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5859bc['message']['ContactId'];return db[_0x5bea('0x6d')][_0x5bea('0x40')](_0x48850e,{'type':db['Sequelize'][_0x5bea('0x6e')][_0x5bea('0x6f')],'raw':!![]})['then'](function(_0x592c6e){return _0x592c6e;});})['then'](function(_0x23174a){if(_0x23174a){_0x49bced[_0x5bea('0x27')][_0x5bea('0x70')]=_0x23174a[0x0];if(!_0xd8369b[_0x5bea('0x54')][_0x5bea('0x5e')])return;return db[_0x5bea('0x71')][_0x5bea('0x55')]({'where':{'id':_0xd8369b[_0x5bea('0x54')][_0x5bea('0x5e')],'role':_0x5bea('0x60')},'attributes':['id',_0x5bea('0x38'),_0x5bea('0x72'),_0x5bea('0x73'),_0x5bea('0x74')],'raw':!![]});}return null;})[_0x5bea('0x21')](function(_0x1efb69){if(!_0x1efb69)return null;_0x49bced[_0x5bea('0x27')][_0x5bea('0x60')]=_0x1efb69;return _0x49bced;})[_0x5bea('0x21')](function(_0x415faa){if(_0x415faa){if(_0xd8369b['body']['manual']){_0x49bced[_0x5bea('0x27')][_0x5bea('0x75')]=util[_0x5bea('0x5c')](_0x5bea('0x76'),_0xd8369b[_0x5bea('0x5f')]['name']);_0x49bced[_0x5bea('0x27')][_0x5bea('0x77')]=_0x49bced[_0x5bea('0x77')];_0x49bced['message'][_0x5bea('0x78')]=_0x49bced[_0x5bea('0x77')];_0x49bced[_0x5bea('0x27')][_0x5bea('0x79')]=_0x5bea('0x59');return respondWithRpcPromise(_0x5bea('0x7a'),_0x5bea('0x7a'),{'event':'acceptmessage','message':_0x49bced[_0x5bea('0x27')]},client9002)[_0x5bea('0x21')](function(){return _0x49bced;});}return _0x49bced;}return null;})[_0x5bea('0x21')](respondWithResult(_0x3cbe42,null))[_0x5bea('0x29')](handleError(_0x3cbe42,null));};var interaction_log=require('../../config/logger')(_0x5bea('0x58'));exports[_0x5bea('0x34')]=function(_0x1dbf92,_0x5123c8,_0x399733){var _0x5a3066={'agent':{},'channel':_0x5bea('0x5a')};if(_0x1dbf92['body']['id']){delete _0x1dbf92[_0x5bea('0x54')]['id'];}_0x1dbf92[_0x5bea('0x54')][_0x5bea('0x5e')]=_0x1dbf92[_0x5bea('0x54')][_0x5bea('0x5e')]||_0x1dbf92[_0x5bea('0x5f')]['id'];_0x5a3066['agent']['id']=_0x1dbf92[_0x5bea('0x54')][_0x5bea('0x5e')];return db[_0x5bea('0x3b')][_0x5bea('0x55')]({'where':{'id':_0x1dbf92[_0x5bea('0x51')]['id'],'UserId':null}})[_0x5bea('0x21')](handleEntityNotFound(_0x5123c8,null))['then'](function(_0x4652f4){if(_0x4652f4){_0x5a3066[_0x5bea('0x27')]=_0x4652f4['get']({'plain':!![]});return db[_0x5bea('0x62')]['find']({'where':{'id':_0x4652f4[_0x5bea('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x5123c8,null))['then'](function(_0x470d2f){if(_0x470d2f){_0x5a3066[_0x5bea('0x68')]=_0x470d2f[_0x5bea('0x61')]({'plain':!![]});interaction_log[_0x5bea('0x22')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1dbf92[_0x5bea('0x5f')]['id'],_0x1dbf92[_0x5bea('0x5f')][_0x5bea('0x38')],_0x1dbf92[_0x5bea('0x5f')][_0x5bea('0x67')],_0x5a3066[_0x5bea('0x68')]['id'],_0x1dbf92['body']?JSON[_0x5bea('0x69')](_0x1dbf92[_0x5bea('0x54')]):_0x5bea('0x6a'));return respondWithRpcPromise(_0x5bea('0x7b'),_0x5bea('0x7c'),_0x5a3066);}return null;})['then'](function(_0x1c5065){var _0x5e020c=_0x5bea('0x7d')+_0x1c5065['message'][_0x5bea('0x7e')];return db[_0x5bea('0x6d')][_0x5bea('0x40')](_0x5e020c,{'type':db[_0x5bea('0x7f')][_0x5bea('0x6e')][_0x5bea('0x6f')],'raw':!![]})[_0x5bea('0x21')](function(_0x376332){return _0x376332;});})[_0x5bea('0x21')](function(_0x1554e8){if(_0x1554e8){_0x5a3066[_0x5bea('0x27')][_0x5bea('0x70')]=_0x1554e8[0x0];if(!_0x1dbf92[_0x5bea('0x54')]['UserId'])return;return db[_0x5bea('0x71')][_0x5bea('0x55')]({'where':{'id':_0x1dbf92[_0x5bea('0x54')][_0x5bea('0x5e')],'role':'agent'},'attributes':['id',_0x5bea('0x38'),'fullname',_0x5bea('0x73'),_0x5bea('0x74')],'raw':!![]});}return null;})[_0x5bea('0x21')](function(_0x3fc09b){if(!_0x3fc09b)return null;_0x5a3066[_0x5bea('0x27')][_0x5bea('0x60')]=_0x3fc09b;return _0x5a3066;})['then'](function(_0x29d197){if(_0x29d197){_0x29d197[_0x5bea('0x27')][_0x5bea('0x75')]=util[_0x5bea('0x5c')](_0x5bea('0x76'),_0x1dbf92['user'][_0x5bea('0x38')]);_0x29d197['message']['channel']=_0x5a3066[_0x5bea('0x77')];_0x29d197[_0x5bea('0x27')][_0x5bea('0x78')]=_0x5a3066[_0x5bea('0x77')];_0x29d197[_0x5bea('0x27')][_0x5bea('0x79')]='reject';respondWithRpcPromise(_0x5bea('0x7a'),'EventManager',{'event':_0x5bea('0x80'),'message':_0x29d197[_0x5bea('0x27')]},client9002);return _0x5a3066;}return null;})[_0x5bea('0x21')](respondWithResult(_0x5123c8,null))[_0x5bea('0x29')](handleError(_0x5123c8,null));};
\ No newline at end of file
+var _0xf0f4=['redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','pick','filter','where','VIRTUAL','options','OpenchannelMessage','includeAll','findAll','rows','show','params','length','include','merge','find','create','body','describe','openchannel-interactions','openchannel','read','readAt','format','UserId','agent','get','OpenchannelInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','user','role','interaction','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','../../config/logger','OpenchannelInteraction','RejectMessage','rejectMessage','SELECT','reject','rejectmessage','rimraf','request-promise','moment','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x53afdb,_0x2e743a){var _0x1cb9f3=function(_0x50213d){while(--_0x50213d){_0x53afdb['push'](_0x53afdb['shift']());}};_0x1cb9f3(++_0x2e743a);}(_0xf0f4,0x182));var _0x4f0f=function(_0x55bafe,_0xeed005){_0x55bafe=_0x55bafe-0x0;var _0x4de1da=_0xf0f4[_0x55bafe];return _0x4de1da;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4f0f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4f0f('0x1'));var moment=require(_0x4f0f('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x4f0f('0x3'));var util=require(_0x4f0f('0x4'));var path=require(_0x4f0f('0x5'));var sox=require(_0x4f0f('0x6'));var csv=require(_0x4f0f('0x7'));var ejs=require(_0x4f0f('0x8'));var fs=require('fs');var fs_extra=require(_0x4f0f('0x9'));var _=require('lodash');var squel=require(_0x4f0f('0xa'));var crypto=require(_0x4f0f('0xb'));var jsforce=require(_0x4f0f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4f0f('0x7'));var querystring=require(_0x4f0f('0xd'));var Papa=require(_0x4f0f('0xe'));var Redis=require(_0x4f0f('0xf'));var authService=require(_0x4f0f('0x10'));var qs=require(_0x4f0f('0x11'));var as=require(_0x4f0f('0x12'));var hardwareService=require(_0x4f0f('0x13'));var logger=require('../../config/logger')(_0x4f0f('0x14'));var utils=require(_0x4f0f('0x15'));var config=require(_0x4f0f('0x16'));var licenseUtil=require(_0x4f0f('0x17'));var db=require(_0x4f0f('0x18'))['db'];config[_0x4f0f('0x19')]=_[_0x4f0f('0x1a')](config[_0x4f0f('0x19')],{'host':_0x4f0f('0x1b'),'port':0x18eb});var socket=require(_0x4f0f('0x1c'))(new Redis(config[_0x4f0f('0x19')]));require('./openchannelMessage.socket')[_0x4f0f('0x1d')](socket);var jayson=require(_0x4f0f('0x1e'));var client=jayson[_0x4f0f('0x1f')][_0x4f0f('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x4f0f('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x46d7cf,_0x5783,_0x1c0aa1,_0x4038fd){return new BPromise(function(_0x5f171b,_0x238cb8){var _0x1942cf=_0x4038fd||client;return _0x1942cf[_0x4f0f('0x21')](_0x46d7cf,_0x1c0aa1)['then'](function(_0x2ca0b3){logger[_0x4f0f('0x22')](_0x4f0f('0x23'),_0x5783,'request\x20sent');logger[_0x4f0f('0x24')](_0x4f0f('0x25'),_0x5783,_0x4f0f('0x26'),JSON[_0x4f0f('0x27')](_0x2ca0b3));if(_0x2ca0b3[_0x4f0f('0x28')]){if(_0x2ca0b3[_0x4f0f('0x28')]['code']===0x1f4){logger[_0x4f0f('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0x5783,_0x2ca0b3[_0x4f0f('0x28')][_0x4f0f('0x29')]);return _0x238cb8(_0x2ca0b3['error']['message']);}logger[_0x4f0f('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0x5783,_0x2ca0b3[_0x4f0f('0x28')][_0x4f0f('0x29')]);return _0x5f171b(_0x2ca0b3[_0x4f0f('0x28')][_0x4f0f('0x29')]);}else{logger[_0x4f0f('0x22')](_0x4f0f('0x23'),_0x5783,'request\x20sent');_0x5f171b(_0x2ca0b3[_0x4f0f('0x2a')][_0x4f0f('0x29')]);}})[_0x4f0f('0x2b')](function(_0x3bc77d){logger[_0x4f0f('0x28')](_0x4f0f('0x23'),_0x5783,_0x3bc77d);_0x238cb8(_0x3bc77d);});});}function respondWithStatusCode(_0x166ea6,_0x419986){_0x419986=_0x419986||0xcc;return function(_0x17cf17){if(_0x17cf17){return _0x166ea6[_0x4f0f('0x2c')](_0x419986);}return _0x166ea6[_0x4f0f('0x2d')](_0x419986)[_0x4f0f('0x2e')]();};}function respondWithResult(_0x381329,_0x5c13d1){_0x5c13d1=_0x5c13d1||0xc8;return function(_0x1e6941){if(_0x1e6941){return _0x381329[_0x4f0f('0x2d')](_0x5c13d1)[_0x4f0f('0x2f')](_0x1e6941);}};}function respondWithFilteredResult(_0x58ec43,_0xa8a240){return function(_0x4e5f0d){if(_0x4e5f0d){var _0x449788=typeof _0xa8a240[_0x4f0f('0x30')]==='undefined'&&typeof _0xa8a240['limit']===_0x4f0f('0x31');var _0x4bf387=_0x4e5f0d[_0x4f0f('0x32')];var _0x9319c0=_0x449788?0x0:_0xa8a240['offset'];var _0x3d3762=_0x449788?_0x4e5f0d[_0x4f0f('0x32')]:_0xa8a240[_0x4f0f('0x30')]+_0xa8a240[_0x4f0f('0x33')];var _0x4db575;if(_0x3d3762>=_0x4bf387){_0x3d3762=_0x4bf387;_0x4db575=0xc8;}else{_0x4db575=0xce;}_0x58ec43[_0x4f0f('0x2d')](_0x4db575);return _0x58ec43[_0x4f0f('0x34')](_0x4f0f('0x35'),_0x9319c0+'-'+_0x3d3762+'/'+_0x4bf387)[_0x4f0f('0x2f')](_0x4e5f0d);}return null;};}function patchUpdates(_0x5ea512){return function(_0xd987c4){try{jsonpatch[_0x4f0f('0x36')](_0xd987c4,_0x5ea512,!![]);}catch(_0x1c85cb){return BPromise['reject'](_0x1c85cb);}return _0xd987c4[_0x4f0f('0x37')]();};}function saveUpdates(_0x797230,_0x5d9fde){return function(_0x1a57b6){if(_0x1a57b6){return _0x1a57b6[_0x4f0f('0x38')](_0x797230)[_0x4f0f('0x39')](function(_0x341c6c){return _0x341c6c;});}return null;};}function removeEntity(_0x57e133,_0x2231cb){return function(_0x2a4bbc){if(_0x2a4bbc){return _0x2a4bbc[_0x4f0f('0x3a')]()[_0x4f0f('0x39')](function(){_0x57e133[_0x4f0f('0x2d')](0xcc)[_0x4f0f('0x2e')]();});}};}function handleEntityNotFound(_0x58d19,_0x3f87e8){return function(_0x5d8289){if(!_0x5d8289){_0x58d19[_0x4f0f('0x2c')](0x194);}return _0x5d8289;};}function handleError(_0x247898,_0x107b9b){_0x107b9b=_0x107b9b||0x1f4;return function(_0x3d2f46){logger[_0x4f0f('0x28')](_0x3d2f46[_0x4f0f('0x3b')]);if(_0x3d2f46[_0x4f0f('0x3c')]){delete _0x3d2f46['name'];}_0x247898[_0x4f0f('0x2d')](_0x107b9b)[_0x4f0f('0x3d')](_0x3d2f46);};}exports[_0x4f0f('0x3e')]=function(_0x563847,_0x171e41){var _0x47b3fc={},_0x18d57e={},_0x58da38={'count':0x0,'rows':[]};var _0x103a2f=_[_0x4f0f('0x3f')](db['OpenchannelMessage'][_0x4f0f('0x40')],function(_0x2d58b0){return{'name':_0x2d58b0[_0x4f0f('0x41')],'type':_0x2d58b0['type'][_0x4f0f('0x42')]};});_0x18d57e[_0x4f0f('0x43')]=_[_0x4f0f('0x3f')](_0x103a2f,_0x4f0f('0x3c'));_0x18d57e[_0x4f0f('0x44')]=_[_0x4f0f('0x45')](_0x563847[_0x4f0f('0x44')]);_0x18d57e[_0x4f0f('0x46')]=_[_0x4f0f('0x47')](_0x18d57e[_0x4f0f('0x43')],_0x18d57e[_0x4f0f('0x44')]);_0x47b3fc['attributes']=_[_0x4f0f('0x47')](_0x18d57e[_0x4f0f('0x43')],qs[_0x4f0f('0x48')](_0x563847[_0x4f0f('0x44')][_0x4f0f('0x48')]));_0x47b3fc[_0x4f0f('0x49')]=_0x47b3fc[_0x4f0f('0x49')]['length']?_0x47b3fc[_0x4f0f('0x49')]:_0x18d57e[_0x4f0f('0x43')];if(!_0x563847[_0x4f0f('0x44')][_0x4f0f('0x4a')](_0x4f0f('0x4b'))){_0x47b3fc[_0x4f0f('0x33')]=qs['limit'](_0x563847[_0x4f0f('0x44')][_0x4f0f('0x33')]);_0x47b3fc['offset']=qs['offset'](_0x563847[_0x4f0f('0x44')][_0x4f0f('0x30')]);}_0x47b3fc[_0x4f0f('0x4c')]=qs['sort'](_0x563847[_0x4f0f('0x44')]['sort']);_0x47b3fc['where']=qs[_0x4f0f('0x46')](_[_0x4f0f('0x4d')](_0x563847[_0x4f0f('0x44')],_0x18d57e[_0x4f0f('0x46')]),_0x103a2f);if(_0x563847[_0x4f0f('0x44')][_0x4f0f('0x4e')]){_0x47b3fc['where']=_['merge'](_0x47b3fc[_0x4f0f('0x4f')],{'$or':_[_0x4f0f('0x3f')](_0x103a2f,function(_0x2df090){if(_0x2df090['type']!==_0x4f0f('0x50')){var _0x34d113={};_0x34d113[_0x2df090[_0x4f0f('0x3c')]]={'$like':'%'+_0x563847['query'][_0x4f0f('0x4e')]+'%'};return _0x34d113;}})});}_0x47b3fc=_['merge']({},_0x47b3fc,_0x563847[_0x4f0f('0x51')]);var _0x5231e5={'where':_0x47b3fc[_0x4f0f('0x4f')]};return db[_0x4f0f('0x52')][_0x4f0f('0x32')](_0x5231e5)[_0x4f0f('0x39')](function(_0x56c354){_0x58da38['count']=_0x56c354;if(_0x563847['query'][_0x4f0f('0x53')]){_0x47b3fc['include']=[{'all':!![]}];}return db[_0x4f0f('0x52')][_0x4f0f('0x54')](_0x47b3fc);})[_0x4f0f('0x39')](function(_0x204a1b){_0x58da38[_0x4f0f('0x55')]=_0x204a1b;return _0x58da38;})[_0x4f0f('0x39')](respondWithFilteredResult(_0x171e41,_0x47b3fc))[_0x4f0f('0x2b')](handleError(_0x171e41,null));};exports[_0x4f0f('0x56')]=function(_0x5b7a20,_0x37ce22){var _0x2ffb4d={'raw':!![],'where':{'id':_0x5b7a20[_0x4f0f('0x57')]['id']}},_0x175c03={};_0x175c03[_0x4f0f('0x43')]=_[_0x4f0f('0x45')](db[_0x4f0f('0x52')][_0x4f0f('0x40')]);_0x175c03[_0x4f0f('0x44')]=_[_0x4f0f('0x45')](_0x5b7a20['query']);_0x175c03[_0x4f0f('0x46')]=_['intersection'](_0x175c03[_0x4f0f('0x43')],_0x175c03[_0x4f0f('0x44')]);_0x2ffb4d['attributes']=_[_0x4f0f('0x47')](_0x175c03[_0x4f0f('0x43')],qs[_0x4f0f('0x48')](_0x5b7a20[_0x4f0f('0x44')][_0x4f0f('0x48')]));_0x2ffb4d[_0x4f0f('0x49')]=_0x2ffb4d[_0x4f0f('0x49')][_0x4f0f('0x58')]?_0x2ffb4d[_0x4f0f('0x49')]:_0x175c03['model'];if(_0x5b7a20[_0x4f0f('0x44')][_0x4f0f('0x53')]){_0x2ffb4d[_0x4f0f('0x59')]=[{'all':!![]}];}_0x2ffb4d=_[_0x4f0f('0x5a')]({},_0x2ffb4d,_0x5b7a20[_0x4f0f('0x51')]);return db[_0x4f0f('0x52')][_0x4f0f('0x5b')](_0x2ffb4d)['then'](handleEntityNotFound(_0x37ce22,null))['then'](respondWithResult(_0x37ce22,null))[_0x4f0f('0x2b')](handleError(_0x37ce22,null));};exports[_0x4f0f('0x5c')]=function(_0x374cd3,_0x2c99d9){return db[_0x4f0f('0x52')][_0x4f0f('0x5c')](_0x374cd3[_0x4f0f('0x5d')],{})[_0x4f0f('0x39')](respondWithResult(_0x2c99d9,0xc9))[_0x4f0f('0x2b')](handleError(_0x2c99d9,null));};exports[_0x4f0f('0x38')]=function(_0x18cfac,_0x1992c8){if(_0x18cfac['body']['id']){delete _0x18cfac[_0x4f0f('0x5d')]['id'];}return db['OpenchannelMessage'][_0x4f0f('0x5b')]({'where':{'id':_0x18cfac[_0x4f0f('0x57')]['id']}})['then'](handleEntityNotFound(_0x1992c8,null))['then'](saveUpdates(_0x18cfac['body'],null))[_0x4f0f('0x39')](respondWithResult(_0x1992c8,null))[_0x4f0f('0x2b')](handleError(_0x1992c8,null));};exports[_0x4f0f('0x3a')]=function(_0x54f9fb,_0x5df4e0){return db['OpenchannelMessage'][_0x4f0f('0x5b')]({'where':{'id':_0x54f9fb[_0x4f0f('0x57')]['id']}})[_0x4f0f('0x39')](handleEntityNotFound(_0x5df4e0,null))[_0x4f0f('0x39')](removeEntity(_0x5df4e0,null))[_0x4f0f('0x2b')](handleError(_0x5df4e0,null));};exports[_0x4f0f('0x5e')]=function(_0x25ec74,_0x4952b0){return db['OpenchannelMessage'][_0x4f0f('0x5e')]()[_0x4f0f('0x39')](respondWithResult(_0x4952b0,null))[_0x4f0f('0x2b')](handleError(_0x4952b0,null));};var interaction_log=require('../../config/logger')(_0x4f0f('0x5f'));exports['accept']=function(_0x39b6d7,_0x528568,_0x17a9b8){var _0x52f5c8={'agent':{},'channel':_0x4f0f('0x60')};if(_0x39b6d7[_0x4f0f('0x5d')]['id']){delete _0x39b6d7[_0x4f0f('0x5d')]['id'];}_0x39b6d7[_0x4f0f('0x5d')][_0x4f0f('0x61')]=!![];_0x39b6d7[_0x4f0f('0x5d')][_0x4f0f('0x62')]=moment()[_0x4f0f('0x63')]('YYYY-MM-DD\x20HH:mm:ss');_0x39b6d7[_0x4f0f('0x5d')][_0x4f0f('0x64')]=_0x39b6d7[_0x4f0f('0x5d')][_0x4f0f('0x64')]||_0x39b6d7['user']['id'];_0x52f5c8[_0x4f0f('0x65')]['id']=_0x39b6d7[_0x4f0f('0x5d')]['UserId'];return db['OpenchannelMessage'][_0x4f0f('0x5b')]({'where':{'id':_0x39b6d7[_0x4f0f('0x57')]['id'],'UserId':null}})[_0x4f0f('0x39')](handleEntityNotFound(_0x528568,null))[_0x4f0f('0x39')](saveUpdates(_0x39b6d7[_0x4f0f('0x5d')],null))['then'](function(_0x1ad24a){if(_0x1ad24a){_0x52f5c8[_0x4f0f('0x29')]=_0x1ad24a[_0x4f0f('0x66')]({'plain':!![]});return db['OpenchannelInteraction'][_0x4f0f('0x5b')]({'where':{'id':_0x1ad24a[_0x4f0f('0x67')]}});}return null;})[_0x4f0f('0x39')](handleEntityNotFound(_0x528568,null))['then'](function(_0xad5d7){if(_0xad5d7){return _0xad5d7[_0x4f0f('0x38')]({'UserId':_0x39b6d7['body'][_0x4f0f('0x64')],'read1stAt':_[_0x4f0f('0x68')](_0xad5d7[_0x4f0f('0x69')])?moment()[_0x4f0f('0x63')](_0x4f0f('0x6a')):undefined});}return null;})[_0x4f0f('0x39')](function(_0x47c182){if(_0x47c182){_0x52f5c8['interaction']=_0x47c182['get']({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x39b6d7[_0x4f0f('0x6b')]['id'],_0x39b6d7[_0x4f0f('0x6b')][_0x4f0f('0x3c')],_0x39b6d7[_0x4f0f('0x6b')][_0x4f0f('0x6c')],_0x52f5c8[_0x4f0f('0x6d')]['id'],_0x39b6d7[_0x4f0f('0x5d')]?JSON[_0x4f0f('0x27')](_0x39b6d7[_0x4f0f('0x5d')]):_0x4f0f('0x6e'));return respondWithRpcPromise(_0x4f0f('0x6f'),_0x4f0f('0x70'),_0x52f5c8);}return null;})[_0x4f0f('0x39')](function(_0x9cd96e){var _0xa068e3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x9cd96e[_0x4f0f('0x29')][_0x4f0f('0x71')];return db[_0x4f0f('0x72')][_0x4f0f('0x44')](_0xa068e3,{'type':db[_0x4f0f('0x73')][_0x4f0f('0x74')]['SELECT'],'raw':!![]})[_0x4f0f('0x39')](function(_0x52211c){return _0x52211c;});})[_0x4f0f('0x39')](function(_0x51d4c0){if(_0x51d4c0){_0x52f5c8[_0x4f0f('0x29')][_0x4f0f('0x75')]=_0x51d4c0[0x0];if(!_0x39b6d7[_0x4f0f('0x5d')]['UserId'])return;return db[_0x4f0f('0x76')][_0x4f0f('0x5b')]({'where':{'id':_0x39b6d7[_0x4f0f('0x5d')][_0x4f0f('0x64')],'role':_0x4f0f('0x65')},'attributes':['id','name',_0x4f0f('0x77'),_0x4f0f('0x78'),_0x4f0f('0x79')],'raw':!![]});}return null;})[_0x4f0f('0x39')](function(_0x469774){if(!_0x469774)return null;_0x52f5c8[_0x4f0f('0x29')][_0x4f0f('0x65')]=_0x469774;return _0x52f5c8;})[_0x4f0f('0x39')](function(_0x516704){if(_0x516704){if(_0x39b6d7[_0x4f0f('0x5d')][_0x4f0f('0x7a')]){_0x52f5c8['message'][_0x4f0f('0x7b')]=util[_0x4f0f('0x63')](_0x4f0f('0x7c'),_0x39b6d7['user'][_0x4f0f('0x3c')]);_0x52f5c8['message'][_0x4f0f('0x7d')]=_0x52f5c8[_0x4f0f('0x7d')];_0x52f5c8['message'][_0x4f0f('0x7e')]=_0x4f0f('0x7f');return respondWithRpcPromise(_0x4f0f('0x80'),'EventManager',{'event':_0x4f0f('0x81'),'message':_0x52f5c8[_0x4f0f('0x29')]},client9002)[_0x4f0f('0x39')](function(){return _0x52f5c8;});}return _0x52f5c8;}return null;})['then'](respondWithResult(_0x528568,null))[_0x4f0f('0x2b')](handleError(_0x528568,null));};var interaction_log=require(_0x4f0f('0x82'))('openchannel-interactions');exports['reject']=function(_0x11ae04,_0x19ddee,_0x5b893f){var _0x3ec559={'agent':{},'channel':_0x4f0f('0x60')};if(_0x11ae04[_0x4f0f('0x5d')]['id']){delete _0x11ae04[_0x4f0f('0x5d')]['id'];}_0x11ae04[_0x4f0f('0x5d')]['UserId']=_0x11ae04['body'][_0x4f0f('0x64')]||_0x11ae04['user']['id'];_0x3ec559[_0x4f0f('0x65')]['id']=_0x11ae04[_0x4f0f('0x5d')][_0x4f0f('0x64')];return db[_0x4f0f('0x52')]['find']({'where':{'id':_0x11ae04[_0x4f0f('0x57')]['id'],'UserId':null}})[_0x4f0f('0x39')](handleEntityNotFound(_0x19ddee,null))['then'](function(_0x126c15){if(_0x126c15){_0x3ec559[_0x4f0f('0x29')]=_0x126c15[_0x4f0f('0x66')]({'plain':!![]});return db[_0x4f0f('0x83')]['find']({'where':{'id':_0x126c15['OpenchannelInteractionId']}});}return null;})[_0x4f0f('0x39')](handleEntityNotFound(_0x19ddee,null))[_0x4f0f('0x39')](function(_0x4540b5){if(_0x4540b5){_0x3ec559['interaction']=_0x4540b5[_0x4f0f('0x66')]({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x11ae04[_0x4f0f('0x6b')]['id'],_0x11ae04[_0x4f0f('0x6b')][_0x4f0f('0x3c')],_0x11ae04[_0x4f0f('0x6b')]['role'],_0x3ec559[_0x4f0f('0x6d')]['id'],_0x11ae04[_0x4f0f('0x5d')]?JSON['stringify'](_0x11ae04['body']):'null');return respondWithRpcPromise(_0x4f0f('0x84'),_0x4f0f('0x85'),_0x3ec559);}return null;})['then'](function(_0x31b97f){var _0x167237='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x31b97f[_0x4f0f('0x29')][_0x4f0f('0x71')];return db[_0x4f0f('0x72')]['query'](_0x167237,{'type':db[_0x4f0f('0x73')][_0x4f0f('0x74')][_0x4f0f('0x86')],'raw':!![]})[_0x4f0f('0x39')](function(_0x1ee736){return _0x1ee736;});})[_0x4f0f('0x39')](function(_0x707a6){if(_0x707a6){_0x3ec559['message'][_0x4f0f('0x75')]=_0x707a6[0x0];if(!_0x11ae04['body']['UserId'])return;return db['User']['find']({'where':{'id':_0x11ae04[_0x4f0f('0x5d')][_0x4f0f('0x64')],'role':_0x4f0f('0x65')},'attributes':['id',_0x4f0f('0x3c'),'fullname',_0x4f0f('0x78'),_0x4f0f('0x79')],'raw':!![]});}return null;})['then'](function(_0x5699d4){if(!_0x5699d4)return null;_0x3ec559[_0x4f0f('0x29')][_0x4f0f('0x65')]=_0x5699d4;return _0x3ec559;})[_0x4f0f('0x39')](function(_0x1c3ec2){if(_0x1c3ec2){_0x1c3ec2[_0x4f0f('0x29')]['interface']=util[_0x4f0f('0x63')]('SIP/%s',_0x11ae04[_0x4f0f('0x6b')][_0x4f0f('0x3c')]);_0x1c3ec2[_0x4f0f('0x29')]['channel']=_0x3ec559[_0x4f0f('0x7d')];_0x1c3ec2[_0x4f0f('0x29')][_0x4f0f('0x7e')]=_0x4f0f('0x87');respondWithRpcPromise(_0x4f0f('0x80'),_0x4f0f('0x80'),{'event':_0x4f0f('0x88'),'message':_0x1c3ec2[_0x4f0f('0x29')]},client9002);return _0x3ec559;}return null;})[_0x4f0f('0x39')](respondWithResult(_0x19ddee,null))[_0x4f0f('0x2b')](handleError(_0x19ddee,null));};
\ No newline at end of file
index 910f145..3051ebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0de=['hook','events','OpenchannelMessage','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x1e5492,_0x498821){var _0x41e7be=function(_0x57b25b){while(--_0x57b25b){_0x1e5492['push'](_0x1e5492['shift']());}};_0x41e7be(++_0x498821);}(_0xe0de,0x1f2));var _0xee0d=function(_0x3c10bf,_0x271113){_0x3c10bf=_0x3c10bf-0x0;var _0x534d5b=_0xe0de[_0x3c10bf];return _0x534d5b;};'use strict';var EventEmitter=require(_0xee0d('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0xee0d('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xee0d('0x2')](0x0);var events={'afterCreate':_0xee0d('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xac0ab9){return function(_0x56d61d,_0x5dfa6f,_0x31ea90){OpenchannelMessageEvents[_0xee0d('0x4')](_0xac0ab9+':'+_0x56d61d['id'],_0x56d61d);OpenchannelMessageEvents[_0xee0d('0x4')](_0xac0ab9,_0x56d61d);_0x31ea90(null);};}for(var e in events){if(events[_0xee0d('0x5')](e)){var event=events[e];OpenchannelMessage[_0xee0d('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x7d80=['events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x51b4a8,_0x2b39b3){var _0xb6ca3d=function(_0x17f9b4){while(--_0x17f9b4){_0x51b4a8['push'](_0x51b4a8['shift']());}};_0xb6ca3d(++_0x2b39b3);}(_0x7d80,0xc8));var _0x07d8=function(_0x2a7d70,_0x486de1){_0x2a7d70=_0x2a7d70-0x0;var _0x5be880=_0x7d80[_0x2a7d70];return _0x5be880;};'use strict';var EventEmitter=require(_0x07d8('0x0'));var OpenchannelMessage=require(_0x07d8('0x1'))['db'][_0x07d8('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x07d8('0x3')](0x0);var events={'afterCreate':_0x07d8('0x4'),'afterUpdate':'update','afterDestroy':_0x07d8('0x5')};function emitEvent(_0x322878){return function(_0x22c493,_0x2751b5,_0x5a25db){OpenchannelMessageEvents[_0x07d8('0x6')](_0x322878+':'+_0x22c493['id'],_0x22c493);OpenchannelMessageEvents[_0x07d8('0x6')](_0x322878,_0x22c493);_0x5a25db(null);};}for(var e in events){if(events[_0x07d8('0x7')](e)){var event=events[e];OpenchannelMessage[_0x07d8('0x8')](e,emitEvent(event));}}module[_0x07d8('0x9')]=OpenchannelMessageEvents;
\ No newline at end of file
index 03e838e..ad79476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelMessage.attributes','define','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','findOne','OpenchannelInteractionId','createdAt','catch','error','OpenchannelAccount','find','OpenchannelAccountId','CmContact','Contact','keys','then','info','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','Interactions','length','Interaction','omit','method','POST','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','OpenchannelInteraction','update','inspect','finally','utf8mb4','utf8mb4_unicode_ci'];(function(_0x31f1b9,_0x2f44a2){var _0x44cf1a=function(_0x4ed894){while(--_0x4ed894){_0x31f1b9['push'](_0x31f1b9['shift']());}};_0x44cf1a(++_0x2f44a2);}(_0x3266,0x6a));var _0x6326=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x3266[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x6326('0x0'));var util=require(_0x6326('0x1'));var logger=require(_0x6326('0x2'))(_0x6326('0x3'));var moment=require(_0x6326('0x4'));var BPromise=require(_0x6326('0x5'));var rp=require(_0x6326('0x6'));var fs=require('fs');var path=require(_0x6326('0x7'));var rimraf=require(_0x6326('0x8'));var config=require('../../config/environment');var attributes=require(_0x6326('0x9'));module['exports']=function(_0x25ecd8,_0x44460c){return _0x25ecd8[_0x6326('0xa')]('OpenchannelMessage',attributes,{'tableName':_0x6326('0xb'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x6326('0xc')],'type':_0x6326('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x249eca,_0x1aee60,_0x37a23d){var _0x53c3e1=_0x25ecd8[_0x6326('0xe')];var _0x464a36=_0x249eca[_0x6326('0xf')]({'plain':!![]});if(_0x464a36[_0x6326('0x10')][_0x6326('0x11')]()==='in'||_0x464a36[_0x6326('0x10')][_0x6326('0x11')]()===_0x6326('0x12')&&!_0x464a36[_0x6326('0x13')]&&!_[_0x6326('0x14')](_0x464a36['UserId'])){_0x53c3e1['OpenchannelInteraction'][_0x6326('0x15')]({'where':{'id':_0x464a36[_0x6326('0x16')]}})['then'](function(_0x425878){if(_0x425878){_0x425878['update']({'lastMsgAt':_0x464a36[_0x6326('0x17')],'lastMsgDirection':_0x464a36[_0x6326('0x10')][_0x6326('0x11')]()});}})[_0x6326('0x18')](function(_0x1ed3a3){console[_0x6326('0x19')](_0x1ed3a3);});}if(_0x464a36['direction']===_0x6326('0x12')&&!_0x464a36['secret']){var _0x5945ee;_0x53c3e1['CmContact']['describe']()['then'](function(_0x58e960){return _0x53c3e1[_0x6326('0x1a')][_0x6326('0x1b')]({'where':{'id':_0x464a36[_0x6326('0x1c')]},'include':[{'model':_0x53c3e1['OpenchannelInteraction'],'as':'Interactions','where':{'id':_0x464a36[_0x6326('0x16')]},'limit':0x1,'include':[{'model':_0x53c3e1[_0x6326('0x1d')],'as':_0x6326('0x1e'),'attributes':_[_0x6326('0x1f')](_0x58e960)}]}]});})[_0x6326('0x20')](function(_0x25957a){_0x5945ee=_0x25957a[_0x6326('0xf')]({'plain':!![]});if(_0x5945ee&&_0x5945ee['replyUri']){logger[_0x6326('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0x6326('0x22'),util[_0x6326('0x23')](_0x6326('0x24'),_0x464a36['id'],_0x5945ee[_0x6326('0x25')]));if(_0x5945ee[_0x6326('0x26')]&&_0x5945ee[_0x6326('0x26')][_0x6326('0x27')]){_0x464a36[_0x6326('0x28')]=_[_0x6326('0x29')](_0x5945ee[_0x6326('0x26')][0x0],_0x6326('0x1e'));_0x464a36['Contact']=_0x5945ee[_0x6326('0x26')][0x0][_0x6326('0x1e')];}var _0x1aee60={'method':'POST','uri':encodeURI(_0x5945ee['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1aee60[_0x6326('0x2a')]){case'GET':_0x1aee60['qs']=_0x464a36;break;case _0x6326('0x2b'):_0x1aee60[_0x6326('0xc')]=_0x464a36;break;}return rp(_0x1aee60)['then'](function(_0x15e33d){logger[_0x6326('0x21')](_0x6326('0x2c'),_0x6326('0x22'),util[_0x6326('0x23')](_0x6326('0x2d'),_0x464a36['id'],_0x5945ee[_0x6326('0x25')]));if(_0x15e33d[_0x6326('0xc')][_0x6326('0x2e')]&&_0x15e33d[_0x6326('0xc')][_0x6326('0x2e')]!=_0x464a36[_0x6326('0x28')][_0x6326('0x2e')]){return _0x53c3e1[_0x6326('0x2f')][_0x6326('0x30')]({'threadId':_0x15e33d[_0x6326('0xc')]['threadId']},{'logging':!![],'where':{'id':_0x464a36[_0x6326('0x28')]['id']}});}else{return;}})[_0x6326('0x20')](function(){return _0x249eca[_0x6326('0x30')]({'read':!![]});})['catch'](function(_0x1bd9a6){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x6326('0x22'),util[_0x6326('0x31')](_0x1bd9a6,{'showHidden':![],'depth':null}));_0x37a23d();});}else{_0x37a23d();}})[_0x6326('0x32')](function(){_0x37a23d();});}else{_0x37a23d();}}},'charset':_0x6326('0x33'),'collate':_0x6326('0x34')});};
\ No newline at end of file
+var _0x7708=['update','createdAt','catch','error','describe','OpenchannelAccount','Interactions','CmContact','Contact','replyUri','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','method','GET','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','OpenchannelMessage,\x20%s,\x20%s','finally','utf8mb4_unicode_ci','lodash','util','api','rimraf','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then'];(function(_0x384a13,_0x1fbf5f){var _0xb302e8=function(_0x17c759){while(--_0x17c759){_0x384a13['push'](_0x384a13['shift']());}};_0xb302e8(++_0x1fbf5f);}(_0x7708,0x188));var _0x8770=function(_0x152136,_0x4f14f1){_0x152136=_0x152136-0x0;var _0x20df44=_0x7708[_0x152136];return _0x20df44;};'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('./openchannelMessage.attributes');module[_0x8770('0x5')]=function(_0x50bab7,_0x31390d){return _0x50bab7[_0x8770('0x6')](_0x8770('0x7'),attributes,{'tableName':_0x8770('0x8'),'paranoid':![],'indexes':[{'name':_0x8770('0x9'),'fields':[_0x8770('0xa')],'type':_0x8770('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4fc512,_0x396322,_0x2ca830){var _0x3f357a=_0x50bab7['models'];var _0x390af0=_0x4fc512[_0x8770('0xc')]({'plain':!![]});if(_0x390af0[_0x8770('0xd')][_0x8770('0xe')]()==='in'||_0x390af0['direction'][_0x8770('0xe')]()===_0x8770('0xf')&&!_0x390af0[_0x8770('0x10')]&&!_['isNil'](_0x390af0[_0x8770('0x11')])){_0x3f357a[_0x8770('0x12')][_0x8770('0x13')]({'where':{'id':_0x390af0[_0x8770('0x14')]}})[_0x8770('0x15')](function(_0x12a06f){if(_0x12a06f){_0x12a06f[_0x8770('0x16')]({'lastMsgAt':_0x390af0[_0x8770('0x17')],'lastMsgDirection':_0x390af0['direction'][_0x8770('0xe')]()});}})[_0x8770('0x18')](function(_0x5dd4e7){console[_0x8770('0x19')](_0x5dd4e7);});}if(_0x390af0['direction']===_0x8770('0xf')&&!_0x390af0['secret']){var _0x5b4716;_0x3f357a['CmContact'][_0x8770('0x1a')]()[_0x8770('0x15')](function(_0x17b634){return _0x3f357a[_0x8770('0x1b')]['find']({'where':{'id':_0x390af0['OpenchannelAccountId']},'include':[{'model':_0x3f357a[_0x8770('0x12')],'as':_0x8770('0x1c'),'where':{'id':_0x390af0[_0x8770('0x14')]},'limit':0x1,'include':[{'model':_0x3f357a[_0x8770('0x1d')],'as':_0x8770('0x1e'),'attributes':_['keys'](_0x17b634)}]}]});})[_0x8770('0x15')](function(_0x1234dd){_0x5b4716=_0x1234dd[_0x8770('0xc')]({'plain':!![]});if(_0x5b4716&&_0x5b4716[_0x8770('0x1f')]){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x8770('0x20'),util[_0x8770('0x21')](_0x8770('0x22'),_0x390af0['id'],_0x5b4716[_0x8770('0x1f')]));if(_0x5b4716[_0x8770('0x1c')]&&_0x5b4716[_0x8770('0x1c')]['length']){_0x390af0[_0x8770('0x23')]=_[_0x8770('0x24')](_0x5b4716[_0x8770('0x1c')][0x0],_0x8770('0x1e'));_0x390af0['Contact']=_0x5b4716[_0x8770('0x1c')][0x0]['Contact'];}var _0x396322={'method':_0x8770('0x25'),'uri':encodeURI(_0x5b4716[_0x8770('0x1f')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x396322[_0x8770('0x26')]){case _0x8770('0x27'):_0x396322['qs']=_0x390af0;break;case _0x8770('0x25'):_0x396322[_0x8770('0xa')]=_0x390af0;break;}return rp(_0x396322)[_0x8770('0x15')](function(_0xb3f4aa){logger[_0x8770('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0x8770('0x20'),util[_0x8770('0x21')](_0x8770('0x29'),_0x390af0['id'],_0x5b4716[_0x8770('0x1f')]));if(_0xb3f4aa[_0x8770('0xa')][_0x8770('0x2a')]&&_0xb3f4aa['body']['threadId']!=_0x390af0[_0x8770('0x23')][_0x8770('0x2a')]){return _0x3f357a[_0x8770('0x12')][_0x8770('0x16')]({'threadId':_0xb3f4aa[_0x8770('0xa')]['threadId']},{'logging':!![],'where':{'id':_0x390af0['Interaction']['id']}});}else{return;}})[_0x8770('0x15')](function(){return _0x4fc512[_0x8770('0x16')]({'read':!![]});})[_0x8770('0x18')](function(_0x2c2c77){logger['error'](_0x8770('0x2b'),'afterCreate',util['inspect'](_0x2c2c77,{'showHidden':![],'depth':null}));_0x2ca830();});}else{_0x2ca830();}})[_0x8770('0x2c')](function(){_0x2ca830();});}else{_0x2ca830();}}},'charset':'utf8mb4','collate':_0x8770('0x2d')});};
\ No newline at end of file
index af3f2ff..c15b5f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2a0dda,_0xf4d31e){var _0x29c498=function(_0x3fa34d){while(--_0x3fa34d){_0x2a0dda['push'](_0x2a0dda['shift']());}};_0x29c498(++_0xf4d31e);}(_0x1261,0x144));var _0x1126=function(_0x4f0e62,_0x28e44f){_0x4f0e62=_0x4f0e62-0x0;var _0x117ab8=_0x1261[_0x4f0e62];return _0x117ab8;};'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});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ 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(_0x2338ae,_0x1896f8){var _0x4adad9=function(_0x1f6ed1){while(--_0x1f6ed1){_0x2338ae['push'](_0x2338ae['shift']());}};_0x4adad9(++_0x1896f8);}(_0xdb28,0x106));var _0x8db2=function(_0x2a2960,_0x57e804){_0x2a2960=_0x2a2960-0x0;var _0x21e3c3=_0xdb28[_0x2a2960];return _0x21e3c3;};'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 791dfb0..51c67a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb848=['update','removeListener','length','openchannelMessage:','remove'];(function(_0x484c03,_0x13c1d2){var _0x294127=function(_0x45a834){while(--_0x45a834){_0x484c03['push'](_0x484c03['shift']());}};_0x294127(++_0x13c1d2);}(_0xb848,0x1ad));var _0x8b84=function(_0x532121,_0xd00d31){_0x532121=_0x532121-0x0;var _0x5a4251=_0xb848[_0x532121];return _0x5a4251;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=['save',_0x8b84('0x0'),_0x8b84('0x1')];function createListener(_0x3f1e3d,_0x4dd212){return function(_0x460820){_0x4dd212['emit'](_0x3f1e3d,_0x460820);};}function removeListener(_0x3847f3,_0x30303a){return function(){OpenchannelMessageEvents[_0x8b84('0x2')](_0x3847f3,_0x30303a);};}exports['register']=function(_0x56909f){for(var _0x3af7b2=0x0,_0x15d481=events[_0x8b84('0x3')];_0x3af7b2<_0x15d481;_0x3af7b2++){var _0x18bcf4=events[_0x3af7b2];var _0x51d7b2=createListener(_0x8b84('0x4')+_0x18bcf4,_0x56909f);OpenchannelMessageEvents['on'](_0x18bcf4,_0x51d7b2);}};
\ No newline at end of file
+var _0x3974=['register','openchannelMessage:','./openchannelMessage.events','save','remove','emit'];(function(_0x25f1fc,_0x1e5b04){var _0x40f372=function(_0x47989b){while(--_0x47989b){_0x25f1fc['push'](_0x25f1fc['shift']());}};_0x40f372(++_0x1e5b04);}(_0x3974,0xbc));var _0x4397=function(_0x3299a9,_0x54e5d6){_0x3299a9=_0x3299a9-0x0;var _0x18cf32=_0x3974[_0x3299a9];return _0x18cf32;};'use strict';var OpenchannelMessageEvents=require(_0x4397('0x0'));var events=[_0x4397('0x1'),_0x4397('0x2'),'update'];function createListener(_0x5f33b7,_0x160396){return function(_0x258182){_0x160396[_0x4397('0x3')](_0x5f33b7,_0x258182);};}function removeListener(_0x1337be,_0x3eefc4){return function(){OpenchannelMessageEvents['removeListener'](_0x1337be,_0x3eefc4);};}exports[_0x4397('0x4')]=function(_0x2bf887){for(var _0x32f617=0x0,_0x391ea0=events['length'];_0x32f617<_0x391ea0;_0x32f617++){var _0x37eeef=events[_0x32f617];var _0x429564=createListener(_0x4397('0x5')+_0x37eeef,_0x2bf887);OpenchannelMessageEvents['on'](_0x37eeef,_0x429564);}};
\ No newline at end of file
index 033a944..bea2971 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c1=['getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members'];(function(_0x1663ae,_0x10484a){var _0x30ffb8=function(_0x21e006){while(--_0x21e006){_0x1663ae['push'](_0x1663ae['shift']());}};_0x30ffb8(++_0x10484a);}(_0xc8c1,0x87));var _0x1c8c=function(_0x5d1be9,_0x196ad8){_0x5d1be9=_0x5d1be9-0x0;var _0x47c3de=_0xc8c1[_0x5d1be9];return _0x47c3de;};'use strict';var multer=require(_0x1c8c('0x0'));var util=require(_0x1c8c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1c8c('0x2'));var router=express['Router']();var fs_extra=require(_0x1c8c('0x3'));var auth=require(_0x1c8c('0x4'));var interaction=require(_0x1c8c('0x5'));var config=require(_0x1c8c('0x6'));var controller=require(_0x1c8c('0x7'));router[_0x1c8c('0x8')]('/',auth[_0x1c8c('0x9')](),controller['index']);router[_0x1c8c('0x8')](_0x1c8c('0xa'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0xb')]);router['get'](_0x1c8c('0xc'),auth['isAuthenticated'](),controller[_0x1c8c('0xd')]);router['get'](_0x1c8c('0xe'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0xf')]);router[_0x1c8c('0x8')](_0x1c8c('0x10'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x11')]);router[_0x1c8c('0x8')](_0x1c8c('0x12'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x13')]);router[_0x1c8c('0x14')]('/',auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x15')]);router[_0x1c8c('0x14')](_0x1c8c('0x10'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x16')]);router['post'](_0x1c8c('0x12'),auth['isAuthenticated'](),controller[_0x1c8c('0x17')]);router[_0x1c8c('0x18')](_0x1c8c('0xc'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x19')]);router[_0x1c8c('0x1a')](_0x1c8c('0xc'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x1b')]);router[_0x1c8c('0x1a')](_0x1c8c('0x10'),auth[_0x1c8c('0x9')](),controller[_0x1c8c('0x1c')]);router[_0x1c8c('0x1a')](_0x1c8c('0x12'),auth[_0x1c8c('0x9')](),controller['removeAgents']);module[_0x1c8c('0x1d')]=router;
\ No newline at end of file
+var _0xdf63=['get','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdf63,0x116));var _0x3df6=function(_0x5ca0cd,_0x6a360a){_0x5ca0cd=_0x5ca0cd-0x0;var _0x1f2ee4=_0xdf63[_0x5ca0cd];return _0x1f2ee4;};'use strict';var multer=require(_0x3df6('0x0'));var util=require(_0x3df6('0x1'));var path=require('path');var timeout=require(_0x3df6('0x2'));var express=require(_0x3df6('0x3'));var router=express[_0x3df6('0x4')]();var fs_extra=require(_0x3df6('0x5'));var auth=require(_0x3df6('0x6'));var interaction=require(_0x3df6('0x7'));var config=require(_0x3df6('0x8'));var controller=require(_0x3df6('0x9'));router[_0x3df6('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x3df6('0xb'),auth[_0x3df6('0xc')](),controller[_0x3df6('0xd')]);router[_0x3df6('0xa')](_0x3df6('0xe'),auth[_0x3df6('0xc')](),controller[_0x3df6('0xf')]);router[_0x3df6('0xa')](_0x3df6('0x10'),auth[_0x3df6('0xc')](),controller[_0x3df6('0x11')]);router[_0x3df6('0xa')](_0x3df6('0x12'),auth[_0x3df6('0xc')](),controller[_0x3df6('0x13')]);router[_0x3df6('0xa')](_0x3df6('0x14'),auth['isAuthenticated'](),controller[_0x3df6('0x15')]);router[_0x3df6('0x16')]('/',auth['isAuthenticated'](),controller[_0x3df6('0x17')]);router[_0x3df6('0x16')](_0x3df6('0x12'),auth[_0x3df6('0xc')](),controller[_0x3df6('0x18')]);router['post']('/:id/users',auth[_0x3df6('0xc')](),controller[_0x3df6('0x19')]);router[_0x3df6('0x1a')](_0x3df6('0xe'),auth[_0x3df6('0xc')](),controller[_0x3df6('0x1b')]);router[_0x3df6('0x1c')](_0x3df6('0xe'),auth[_0x3df6('0xc')](),controller[_0x3df6('0x1d')]);router[_0x3df6('0x1c')]('/:id/teams',auth[_0x3df6('0xc')](),controller[_0x3df6('0x1e')]);router[_0x3df6('0x1c')](_0x3df6('0x14'),auth[_0x3df6('0xc')](),controller[_0x3df6('0x1f')]);module['exports']=router;
\ No newline at end of file
index 35bc78f..5ee7ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07fa=['sequelize','exports','STRING','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x5a6d4f,_0x19573b){var _0x279592=function(_0x2411d9){while(--_0x2411d9){_0x5a6d4f['push'](_0x5a6d4f['shift']());}};_0x279592(++_0x19573b);}(_0x07fa,0xc4));var _0xa07f=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x07fa[_0x599f41];return _0x2e4d58;};'use strict';var Sequelize=require(_0xa07f('0x0'));module[_0xa07f('0x1')]={'name':{'type':Sequelize[_0xa07f('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xa07f('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xa07f('0x4'),_0xa07f('0x5'),_0xa07f('0x6'))}};
\ No newline at end of file
+var _0xa9f1=['sequelize','exports','STRING','name','INTEGER','rrmemory','beepall'];(function(_0x5690e0,_0x35425a){var _0xf2f33c=function(_0x40e203){while(--_0x40e203){_0x5690e0['push'](_0x5690e0['shift']());}};_0xf2f33c(++_0x35425a);}(_0xa9f1,0xc4));var _0x1a9f=function(_0x3b0d69,_0x2a55a1){_0x3b0d69=_0x3b0d69-0x0;var _0x19e75f=_0xa9f1[_0x3b0d69];return _0x19e75f;};'use strict';var Sequelize=require(_0x1a9f('0x0'));module[_0x1a9f('0x1')]={'name':{'type':Sequelize[_0x1a9f('0x2')],'unique':_0x1a9f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x1a9f('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x1a9f('0x5'),_0x1a9f('0x6'),'roundrobin')}};
\ No newline at end of file
index a265a1f..310b17e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0370=['getMembers','UserOpenchannelQueue','order','map','User','UserId','openchannelPause','updatedAt','createdAt','%s/%s','SIP','getTeams','findOne','Team','addTeams','online','interface','flatMap','Agents','sequelize','transaction','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','ids','select','field','team_has_openchannel_queues','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','all','union','compact','isEmpty','removeAgents','forEach','addAgents','omit','spread','isArray','userOpenchannelQueue:remove','getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','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','redis','localhost','socket.io-emitter','./openchannelQueue.socket','sendStatus','end','status','json','undefined','count','offset','limit','set','reject','save','update','destroy','then','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','OpenchannelQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','rawAttributes','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'];(function(_0x29e450,_0x5a1d8b){var _0xc907de=function(_0x40fcfb){while(--_0x40fcfb){_0x29e450['push'](_0x29e450['shift']());}};_0xc907de(++_0x5a1d8b);}(_0x0370,0x14a));var _0x0037=function(_0x3fcd47,_0x595d85){_0x3fcd47=_0x3fcd47-0x0;var _0x558551=_0x0370[_0x3fcd47];return _0x558551;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0037('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0037('0x1'));var rp=require(_0x0037('0x2'));var moment=require(_0x0037('0x3'));var BPromise=require(_0x0037('0x4'));var Mustache=require(_0x0037('0x5'));var util=require(_0x0037('0x6'));var path=require(_0x0037('0x7'));var sox=require('sox');var csv=require(_0x0037('0x8'));var ejs=require(_0x0037('0x9'));var fs=require('fs');var fs_extra=require(_0x0037('0xa'));var _=require(_0x0037('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0037('0xc'));var deskjs=require(_0x0037('0xd'));var toCsv=require(_0x0037('0x8'));var querystring=require(_0x0037('0xe'));var Papa=require(_0x0037('0xf'));var Redis=require(_0x0037('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0037('0x11'));var as=require(_0x0037('0x12'));var hardwareService=require(_0x0037('0x13'));var logger=require(_0x0037('0x14'))(_0x0037('0x15'));var utils=require(_0x0037('0x16'));var config=require(_0x0037('0x17'));var licenseUtil=require(_0x0037('0x18'));var db=require(_0x0037('0x19'))['db'];config[_0x0037('0x1a')]=_['defaults'](config[_0x0037('0x1a')],{'host':_0x0037('0x1b'),'port':0x18eb});var socket=require(_0x0037('0x1c'))(new Redis(config[_0x0037('0x1a')]));require(_0x0037('0x1d'))['register'](socket);function respondWithStatusCode(_0x464a40,_0x56c58d){_0x56c58d=_0x56c58d||0xcc;return function(_0x16cc08){if(_0x16cc08){return _0x464a40[_0x0037('0x1e')](_0x56c58d);}return _0x464a40['status'](_0x56c58d)[_0x0037('0x1f')]();};}function respondWithResult(_0xd6c27b,_0x1425b8){_0x1425b8=_0x1425b8||0xc8;return function(_0x3f7f6b){if(_0x3f7f6b){return _0xd6c27b[_0x0037('0x20')](_0x1425b8)[_0x0037('0x21')](_0x3f7f6b);}};}function respondWithFilteredResult(_0x3f986d,_0x15afab){return function(_0xc2547a){if(_0xc2547a){var _0x54bacd=typeof _0x15afab['offset']===_0x0037('0x22')&&typeof _0x15afab['limit']===_0x0037('0x22');var _0x40e15f=_0xc2547a[_0x0037('0x23')];var _0x40272a=_0x54bacd?0x0:_0x15afab[_0x0037('0x24')];var _0x181286=_0x54bacd?_0xc2547a['count']:_0x15afab[_0x0037('0x24')]+_0x15afab[_0x0037('0x25')];var _0x22d06d;if(_0x181286>=_0x40e15f){_0x181286=_0x40e15f;_0x22d06d=0xc8;}else{_0x22d06d=0xce;}_0x3f986d[_0x0037('0x20')](_0x22d06d);return _0x3f986d[_0x0037('0x26')]('Content-Range',_0x40272a+'-'+_0x181286+'/'+_0x40e15f)[_0x0037('0x21')](_0xc2547a);}return null;};}function patchUpdates(_0x40150e){return function(_0x52272b){try{jsonpatch['apply'](_0x52272b,_0x40150e,!![]);}catch(_0xa4d962){return BPromise[_0x0037('0x27')](_0xa4d962);}return _0x52272b[_0x0037('0x28')]();};}function saveUpdates(_0x21ee4e,_0x397149){return function(_0x554113){if(_0x554113){return _0x554113[_0x0037('0x29')](_0x21ee4e)['then'](function(_0x324ad8){return _0x324ad8;});}return null;};}function removeEntity(_0x2111c9,_0x412215){return function(_0x1f121a){if(_0x1f121a){return _0x1f121a[_0x0037('0x2a')]()[_0x0037('0x2b')](function(){var _0x54cb8e=_0x1f121a[_0x0037('0x2c')]({'plain':!![]});var _0x2ab203=_0x0037('0x2d');return db[_0x0037('0x2e')][_0x0037('0x2a')]({'where':{'type':_0x2ab203,'resourceId':_0x54cb8e['id']}})[_0x0037('0x2b')](function(){return _0x1f121a;});})[_0x0037('0x2b')](function(){_0x2111c9[_0x0037('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16410b,_0x52775a){return function(_0x5ba77b){if(!_0x5ba77b){_0x16410b['sendStatus'](0x194);}return _0x5ba77b;};}function handleError(_0x28bba0,_0x19b734){_0x19b734=_0x19b734||0x1f4;return function(_0x2e01ad){logger[_0x0037('0x2f')](_0x2e01ad[_0x0037('0x30')]);if(_0x2e01ad[_0x0037('0x31')]){delete _0x2e01ad[_0x0037('0x31')];}_0x28bba0[_0x0037('0x20')](_0x19b734)[_0x0037('0x32')](_0x2e01ad);};}exports['index']=function(_0x5bea30,_0x345fb0){var _0x357d4e={},_0x263085={},_0x44bc1c={'count':0x0,'rows':[]};var _0x34cd66=_['map'](db[_0x0037('0x33')]['rawAttributes'],function(_0x4b0ee6){return{'name':_0x4b0ee6[_0x0037('0x34')],'type':_0x4b0ee6[_0x0037('0x35')][_0x0037('0x36')]};});_0x263085[_0x0037('0x37')]=_['map'](_0x34cd66,'name');_0x263085[_0x0037('0x38')]=_[_0x0037('0x39')](_0x5bea30[_0x0037('0x38')]);_0x263085[_0x0037('0x3a')]=_[_0x0037('0x3b')](_0x263085[_0x0037('0x37')],_0x263085[_0x0037('0x38')]);_0x357d4e[_0x0037('0x3c')]=_[_0x0037('0x3b')](_0x263085[_0x0037('0x37')],qs[_0x0037('0x3d')](_0x5bea30[_0x0037('0x38')][_0x0037('0x3d')]));_0x357d4e['attributes']=_0x357d4e[_0x0037('0x3c')][_0x0037('0x3e')]?_0x357d4e[_0x0037('0x3c')]:_0x263085[_0x0037('0x37')];if(!_0x5bea30['query'][_0x0037('0x3f')](_0x0037('0x40'))){_0x357d4e[_0x0037('0x25')]=qs[_0x0037('0x25')](_0x5bea30[_0x0037('0x38')][_0x0037('0x25')]);_0x357d4e[_0x0037('0x24')]=qs[_0x0037('0x24')](_0x5bea30[_0x0037('0x38')]['offset']);}_0x357d4e['order']=qs[_0x0037('0x41')](_0x5bea30[_0x0037('0x38')]['sort']);_0x357d4e[_0x0037('0x42')]=qs[_0x0037('0x3a')](_[_0x0037('0x43')](_0x5bea30['query'],_0x263085['filters']),_0x34cd66);if(_0x5bea30[_0x0037('0x38')]['filter']){_0x357d4e[_0x0037('0x42')]=_[_0x0037('0x44')](_0x357d4e[_0x0037('0x42')],{'$or':_['map'](_0x34cd66,function(_0x25b6e6){if(_0x25b6e6[_0x0037('0x35')]!==_0x0037('0x45')){var _0x188c30={};_0x188c30[_0x25b6e6[_0x0037('0x31')]]={'$like':'%'+_0x5bea30['query'][_0x0037('0x46')]+'%'};return _0x188c30;}})});}_0x357d4e=_[_0x0037('0x44')]({},_0x357d4e,_0x5bea30[_0x0037('0x47')]);var _0x26a557={'where':_0x357d4e[_0x0037('0x42')]};return db[_0x0037('0x33')][_0x0037('0x23')](_0x26a557)[_0x0037('0x2b')](function(_0x3c24fa){_0x44bc1c[_0x0037('0x23')]=_0x3c24fa;if(_0x5bea30[_0x0037('0x38')][_0x0037('0x48')]){_0x357d4e[_0x0037('0x49')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x0037('0x4a')](_0x357d4e);})['then'](function(_0x37e0bd){_0x44bc1c[_0x0037('0x4b')]=_0x37e0bd;return _0x44bc1c;})[_0x0037('0x2b')](respondWithFilteredResult(_0x345fb0,_0x357d4e))[_0x0037('0x4c')](handleError(_0x345fb0,null));};exports['show']=function(_0x129031,_0xb8305d){var _0x49b0c6={'raw':!![],'where':{'id':_0x129031[_0x0037('0x4d')]['id']}},_0x4500a4={};_0x4500a4['model']=_[_0x0037('0x39')](db['OpenchannelQueue'][_0x0037('0x4e')]);_0x4500a4[_0x0037('0x38')]=_['keys'](_0x129031[_0x0037('0x38')]);_0x4500a4[_0x0037('0x3a')]=_[_0x0037('0x3b')](_0x4500a4['model'],_0x4500a4['query']);_0x49b0c6[_0x0037('0x3c')]=_[_0x0037('0x3b')](_0x4500a4[_0x0037('0x37')],qs[_0x0037('0x3d')](_0x129031[_0x0037('0x38')][_0x0037('0x3d')]));_0x49b0c6['attributes']=_0x49b0c6[_0x0037('0x3c')]['length']?_0x49b0c6[_0x0037('0x3c')]:_0x4500a4[_0x0037('0x37')];if(_0x129031['query'][_0x0037('0x48')]){_0x49b0c6['include']=[{'all':!![]}];}_0x49b0c6=_[_0x0037('0x44')]({},_0x49b0c6,_0x129031[_0x0037('0x47')]);return db[_0x0037('0x33')][_0x0037('0x4f')](_0x49b0c6)[_0x0037('0x2b')](handleEntityNotFound(_0xb8305d,null))[_0x0037('0x2b')](respondWithResult(_0xb8305d,null))[_0x0037('0x4c')](handleError(_0xb8305d,null));};exports[_0x0037('0x50')]=function(_0x4e26b9,_0x1a539c){return db[_0x0037('0x33')]['create'](_0x4e26b9[_0x0037('0x51')],{})[_0x0037('0x2b')](function(_0x105060){var _0x1b3ba4=_0x4e26b9[_0x0037('0x52')][_0x0037('0x2c')]({'plain':!![]});if(!_0x1b3ba4)throw new Error(_0x0037('0x53'));if(_0x1b3ba4[_0x0037('0x54')]===_0x0037('0x52')){var _0x253f74=_0x105060['get']({'plain':!![]});var _0x333584=_0x0037('0x2d');return db[_0x0037('0x55')][_0x0037('0x4f')]({'where':{'name':_0x333584,'userProfileId':_0x1b3ba4[_0x0037('0x56')]},'raw':!![]})[_0x0037('0x2b')](function(_0x45483b){if(_0x45483b&&_0x45483b[_0x0037('0x57')]===0x0){return db[_0x0037('0x2e')]['create']({'name':_0x253f74[_0x0037('0x31')],'resourceId':_0x253f74['id'],'type':_0x45483b[_0x0037('0x31')],'sectionId':_0x45483b['id']},{})[_0x0037('0x2b')](function(){return _0x105060;});}else{return _0x105060;}})[_0x0037('0x4c')](function(_0x29633c){logger[_0x0037('0x2f')](_0x0037('0x58'),_0x29633c);throw _0x29633c;});}return _0x105060;})[_0x0037('0x2b')](respondWithResult(_0x1a539c,0xc9))[_0x0037('0x4c')](handleError(_0x1a539c,null));};exports[_0x0037('0x29')]=function(_0x17ec11,_0x5cecee){if(_0x17ec11[_0x0037('0x51')]['id']){delete _0x17ec11['body']['id'];}return db[_0x0037('0x33')][_0x0037('0x4f')]({'where':{'id':_0x17ec11[_0x0037('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5cecee,null))['then'](saveUpdates(_0x17ec11['body'],null))[_0x0037('0x2b')](respondWithResult(_0x5cecee,null))[_0x0037('0x4c')](handleError(_0x5cecee,null));};exports[_0x0037('0x2a')]=function(_0x4bd2d5,_0x22fe9e){return db[_0x0037('0x33')][_0x0037('0x4f')]({'where':{'id':_0x4bd2d5[_0x0037('0x4d')]['id']}})[_0x0037('0x2b')](handleEntityNotFound(_0x22fe9e,null))[_0x0037('0x2b')](removeEntity(_0x22fe9e,null))['catch'](handleError(_0x22fe9e,null));};exports[_0x0037('0x59')]=function(_0x5801fa,_0x2e92f8){return db[_0x0037('0x33')][_0x0037('0x59')]()[_0x0037('0x2b')](respondWithResult(_0x2e92f8,null))[_0x0037('0x4c')](handleError(_0x2e92f8,null));};exports[_0x0037('0x5a')]=function(_0x5574c0,_0x53c409,_0xd97aa1){var _0x41c04a={'raw':!![],'where':{}},_0x40e363={},_0x56584d;return db[_0x0037('0x33')]['findOne']({'where':{'id':_0x5574c0[_0x0037('0x4d')]['id']}})[_0x0037('0x2b')](handleEntityNotFound(_0x53c409,null))['then'](function(_0x11b602){if(_0x11b602){_0x56584d=_0x11b602[_0x0037('0x2c')]({'plain':!![]});_0x40e363[_0x0037('0x37')]=_[_0x0037('0x39')](db[_0x0037('0x5b')][_0x0037('0x4e')]);_0x40e363[_0x0037('0x38')]=_[_0x0037('0x39')](_0x5574c0[_0x0037('0x38')]);_0x40e363[_0x0037('0x3a')]=_[_0x0037('0x3b')](_0x40e363['model'],_0x40e363[_0x0037('0x38')]);_0x41c04a[_0x0037('0x3c')]=_[_0x0037('0x3b')](_0x40e363[_0x0037('0x37')],qs[_0x0037('0x3d')](_0x5574c0['query'][_0x0037('0x3d')]));_0x41c04a[_0x0037('0x3c')]=_0x41c04a['attributes']['length']?_0x41c04a[_0x0037('0x3c')]:_0x40e363[_0x0037('0x37')];if(!_0x5574c0[_0x0037('0x38')][_0x0037('0x3f')]('nolimit')){_0x41c04a[_0x0037('0x25')]=qs['limit'](_0x5574c0[_0x0037('0x38')]['limit']);_0x41c04a[_0x0037('0x24')]=qs[_0x0037('0x24')](_0x5574c0[_0x0037('0x38')][_0x0037('0x24')]);}_0x41c04a[_0x0037('0x5c')]=qs['sort'](_0x5574c0[_0x0037('0x38')][_0x0037('0x41')]);_0x41c04a['where']=qs[_0x0037('0x3a')](_[_0x0037('0x43')](_0x5574c0[_0x0037('0x38')],_0x40e363[_0x0037('0x3a')]));_0x41c04a['where']['OpenchannelQueueId']=_0x11b602['id'];if(_0x5574c0[_0x0037('0x38')][_0x0037('0x46')]){_0x41c04a[_0x0037('0x42')]=_['merge'](_0x41c04a[_0x0037('0x42')],{'$or':_[_0x0037('0x5d')](_0x41c04a[_0x0037('0x3c')],function(_0x2e435a){var _0x25fee4={};_0x25fee4[_0x2e435a]={'$like':'%'+_0x5574c0[_0x0037('0x38')][_0x0037('0x46')]+'%'};return _0x25fee4;})});}_0x41c04a=_[_0x0037('0x44')]({},_0x41c04a,_0x5574c0['options']);return db[_0x0037('0x5b')][_0x0037('0x4a')](_0x41c04a);}})['then'](function(_0x52d3eb){if(_0x52d3eb){return db[_0x0037('0x5e')]['findAndCountAll']({'where':{'id':_[_0x0037('0x5d')](_0x52d3eb,_0x0037('0x5f')),'role':'agent'},'attributes':['id',_0x0037('0x31'),_0x0037('0x60'),_0x0037('0x61'),_0x0037('0x62')]});}})[_0x0037('0x2b')](function(_0x20ee34){if(_0x20ee34){return{'count':_0x20ee34['count'],'rows':_[_0x0037('0x5d')](_0x20ee34[_0x0037('0x4b')],function(_0x1b3220){return{'membername':_0x1b3220['name'],'UserId':_0x1b3220['id'],'queue_name':_0x56584d[_0x0037('0x31')],'OpenchannelQueueId':_0x56584d['id'],'interface':util['format'](_0x0037('0x63'),_0x0037('0x64'),_0x1b3220[_0x0037('0x31')]),'penalty':0x0,'paused':_0x1b3220[_0x0037('0x60')],'createdAt':_0x1b3220[_0x0037('0x62')],'updatedAt':_0x1b3220[_0x0037('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x0037('0x2b')](respondWithFilteredResult(_0x53c409,_0x41c04a))['catch'](handleError(_0x53c409,null));};exports[_0x0037('0x65')]=function(_0x254046,_0x1aab50,_0x247218){var _0x8d5c54={};var _0x257437={};var _0x34c0a9;var _0xa5feaf;return db[_0x0037('0x33')][_0x0037('0x66')]({'where':{'id':_0x254046[_0x0037('0x4d')]['id']}})[_0x0037('0x2b')](handleEntityNotFound(_0x1aab50,null))['then'](function(_0xaba3c5){if(_0xaba3c5){_0x34c0a9=_0xaba3c5;_0x257437[_0x0037('0x37')]=_[_0x0037('0x39')](db[_0x0037('0x67')][_0x0037('0x4e')]);_0x257437[_0x0037('0x38')]=_[_0x0037('0x39')](_0x254046['query']);_0x257437[_0x0037('0x3a')]=_[_0x0037('0x3b')](_0x257437[_0x0037('0x37')],_0x257437[_0x0037('0x38')]);_0x8d5c54[_0x0037('0x3c')]=_[_0x0037('0x3b')](_0x257437[_0x0037('0x37')],qs[_0x0037('0x3d')](_0x254046[_0x0037('0x38')][_0x0037('0x3d')]));_0x8d5c54[_0x0037('0x3c')]=_0x8d5c54[_0x0037('0x3c')]['length']?_0x8d5c54['attributes']:_0x257437[_0x0037('0x37')];_0x8d5c54[_0x0037('0x5c')]=qs['sort'](_0x254046[_0x0037('0x38')][_0x0037('0x41')]);_0x8d5c54[_0x0037('0x42')]=qs[_0x0037('0x3a')](_[_0x0037('0x43')](_0x254046[_0x0037('0x38')],_0x257437['filters']));if(_0x254046[_0x0037('0x38')]['filter']){_0x8d5c54['where']=_[_0x0037('0x44')](_0x8d5c54[_0x0037('0x42')],{'$or':_[_0x0037('0x5d')](_0x8d5c54[_0x0037('0x3c')],function(_0x1ae3fd){var _0x3da570={};_0x3da570[_0x1ae3fd]={'$like':'%'+_0x254046['query'][_0x0037('0x46')]+'%'};return _0x3da570;})});}_0x8d5c54=_['merge']({},_0x8d5c54,_0x254046[_0x0037('0x47')]);return _0x34c0a9['getTeams'](_0x8d5c54);}})[_0x0037('0x2b')](function(_0x42e96f){if(_0x42e96f){_0xa5feaf=_0x42e96f['length'];if(!_0x254046['query']['hasOwnProperty'](_0x0037('0x40'))){_0x8d5c54[_0x0037('0x25')]=qs['limit'](_0x254046[_0x0037('0x38')][_0x0037('0x25')]);_0x8d5c54[_0x0037('0x24')]=qs['offset'](_0x254046[_0x0037('0x38')][_0x0037('0x24')]);}return _0x34c0a9[_0x0037('0x65')](_0x8d5c54);}})[_0x0037('0x2b')](function(_0x391c0b){if(_0x391c0b){return _0x391c0b?{'count':_0xa5feaf,'rows':_0x391c0b}:null;}})[_0x0037('0x2b')](respondWithResult(_0x1aab50,null))[_0x0037('0x4c')](handleError(_0x1aab50,null));};exports[_0x0037('0x68')]=function(_0x3117f6,_0x37543d,_0x259b67){var _0x26f722=_0x3117f6[_0x0037('0x51')]['ids'];return db[_0x0037('0x67')][_0x0037('0x4a')]({'where':{'id':_0x26f722},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x0037('0x31'),_0x0037('0x69'),'voicePause',_0x0037('0x6a')],'raw':!![]}]})[_0x0037('0x2b')](function(_0x36d47c){if(_0x36d47c){var _0x5870e3=_[_0x0037('0x6b')](_0x36d47c,function(_0x326bcc){var _0x4958f8=_0x326bcc[_0x0037('0x2c')]({'plain':!![]});return _0x4958f8[_0x0037('0x6c')];});return db[_0x0037('0x33')][_0x0037('0x4f')]({'where':{'id':_0x3117f6[_0x0037('0x4d')]['id']}})[_0x0037('0x2b')](function(_0x57f140){return db[_0x0037('0x6d')][_0x0037('0x6e')](function(_0x4c1b11){return _0x57f140[_0x0037('0x68')](_0x26f722,{'transaction':_0x4c1b11})[_0x0037('0x2b')](function(){return BPromise['each'](_0x5870e3,function(_0x25da6a){return db[_0x0037('0x5b')][_0x0037('0x6f')]({'where':{'UserId':_0x25da6a['id'],'OpenchannelQueueId':_0x3117f6['params']['id']},'transaction':_0x4c1b11});});})['then'](function(){_0x5870e3['forEach'](function(_0x2518d5){socket[_0x0037('0x70')](_0x0037('0x71'),{'UserId':_0x2518d5['id'],'OpenchannelQueueId':_0x57f140['id']});});});});});}})['then'](respondWithStatusCode(_0x37543d,null))['catch'](handleError(_0x37543d,null));};exports[_0x0037('0x72')]=function(_0x191965,_0x304e82,_0x46ea52){return db[_0x0037('0x67')][_0x0037('0x4a')]({'where':{'id':_0x191965['query'][_0x0037('0x73')]},'attributes':['id'],'include':[{'model':db[_0x0037('0x5e')],'as':_0x0037('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x0037('0x2b')](handleEntityNotFound(_0x304e82,null))[_0x0037('0x2b')](function(_0x183856){var _0x138f8d=_[_0x0037('0x5d')](_0x183856,'id');var _0x4f5d9b=[];var _0x359194=[];var _0x46b740=squel[_0x0037('0x74')]();_0x46b740[_0x0037('0x75')]('tq.TeamId')['from'](_0x0037('0x76'),'tq')['join']('user_has_teams','ut',_0x0037('0x77'))['where'](_0x0037('0x78'),_0x191965[_0x0037('0x4d')]['id']);for(var _0x5256ae=0x0;_0x5256ae<_0x183856[_0x0037('0x3e')];_0x5256ae+=0x1){let _0xf8143=_0x183856[_0x5256ae];for(var _0x38bc88=0x0;_0x38bc88<_0xf8143['Agents']['length'];_0x38bc88+=0x1){let _0x262b09=_0xf8143[_0x0037('0x6c')][_0x38bc88];var _0x591c35=_0x46b740[_0x0037('0x79')]();_0x591c35[_0x0037('0x42')](_0x0037('0x7a'),_0x262b09['id']);_0x359194[_0x0037('0x7b')](db[_0x0037('0x6d')]['query'](_0x591c35[_0x0037('0x7c')](),{'type':db[_0x0037('0x6d')]['QueryTypes'][_0x0037('0x7d')]})[_0x0037('0x2b')](function(_0x2026ed){if(_0x2026ed['length']===0x1){return _0x262b09['id'];}else{var _0xc0a680=_[_0x0037('0x7e')](_['map'](_0x2026ed,_0x0037('0x7f')),function(_0x4f9a15){return _['includes'](_0x138f8d,_0x4f9a15);});if(_0xc0a680){return _0x262b09['id'];}}}));}}return BPromise[_0x0037('0x80')](_0x359194)[_0x0037('0x2b')](function(_0x1590bb){_0x4f5d9b=_(_0x4f5d9b)[_0x0037('0x81')](_0x1590bb)[_0x0037('0x82')]()['value']();return db['OpenchannelQueue'][_0x0037('0x4f')]({'where':{'id':_0x191965[_0x0037('0x4d')]['id']}})[_0x0037('0x2b')](function(_0x49bf59){return db[_0x0037('0x6d')][_0x0037('0x6e')](function(_0x30361f){return _0x49bf59[_0x0037('0x72')](_0x191965[_0x0037('0x38')][_0x0037('0x73')],{'transaction':_0x30361f})[_0x0037('0x2b')](function(){if(!_[_0x0037('0x83')](_0x4f5d9b)){return _0x49bf59[_0x0037('0x84')](_0x4f5d9b,{'transaction':_0x30361f});}})[_0x0037('0x2b')](function(){_0x4f5d9b[_0x0037('0x85')](function(_0x107922){socket[_0x0037('0x70')]('userOpenchannelQueue:remove',{'UserId':_0x107922,'OpenchannelQueueId':_0x49bf59['id']});});});});});});})['then'](respondWithStatusCode(_0x304e82,null))[_0x0037('0x4c')](handleError(_0x304e82,null));};exports[_0x0037('0x86')]=function(_0x4c6a2d,_0x1e1591,_0xa7ca81){return db['OpenchannelQueue'][_0x0037('0x4f')]({'where':{'id':_0x4c6a2d[_0x0037('0x4d')]['id']}})[_0x0037('0x2b')](handleEntityNotFound(_0x1e1591,null))[_0x0037('0x2b')](function(_0x2a9b16){if(_0x2a9b16){return _0x2a9b16[_0x0037('0x86')](_0x4c6a2d[_0x0037('0x51')][_0x0037('0x73')],_[_0x0037('0x87')](_0x4c6a2d[_0x0037('0x51')],[_0x0037('0x73'),'id'])||{})[_0x0037('0x88')](function(_0x4a8b2c){for(var _0x173c11=0x0;_0x173c11<_0x4c6a2d['body']['ids']['length'];_0x173c11+=0x1){socket[_0x0037('0x70')](_0x0037('0x71'),{'UserId':Number(_0x4c6a2d[_0x0037('0x51')][_0x0037('0x73')][_0x173c11]),'OpenchannelQueueId':Number(_0x4c6a2d[_0x0037('0x4d')]['id'])});}return _0x4a8b2c;});}})[_0x0037('0x2b')](respondWithResult(_0x1e1591,null))[_0x0037('0x4c')](handleError(_0x1e1591,null));};exports['removeAgents']=function(_0x43b542,_0x2b9ada,_0x220230){return db[_0x0037('0x33')][_0x0037('0x4f')]({'where':{'id':_0x43b542['params']['id']}})[_0x0037('0x2b')](handleEntityNotFound(_0x2b9ada,null))['then'](function(_0x33cd06){if(_0x33cd06){return _0x33cd06[_0x0037('0x84')](_0x43b542[_0x0037('0x38')][_0x0037('0x73')])[_0x0037('0x2b')](function(){if(_[_0x0037('0x89')](_0x43b542[_0x0037('0x38')][_0x0037('0x73')])){for(var _0x367154=0x0;_0x367154<_0x43b542[_0x0037('0x38')]['ids'][_0x0037('0x3e')];_0x367154+=0x1){socket[_0x0037('0x70')](_0x0037('0x8a'),{'UserId':Number(_0x43b542['query']['ids'][_0x367154]),'OpenchannelQueueId':Number(_0x43b542[_0x0037('0x4d')]['id'])});}}else{socket[_0x0037('0x70')](_0x0037('0x8a'),{'UserId':Number(_0x43b542['query']['ids']),'OpenchannelQueueId':Number(_0x43b542[_0x0037('0x4d')]['id'])});}});}})[_0x0037('0x2b')](respondWithStatusCode(_0x2b9ada,null))[_0x0037('0x4c')](handleError(_0x2b9ada,null));};exports[_0x0037('0x8b')]=function(_0x1b4c75,_0x2d7611,_0x344e03){var _0x4daeed={};var _0x5742f7={};var _0x11797f;var _0x29d0fa;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x1b4c75['params']['id']}})['then'](handleEntityNotFound(_0x2d7611,null))[_0x0037('0x2b')](function(_0x5a4fae){if(_0x5a4fae){_0x11797f=_0x5a4fae;_0x5742f7[_0x0037('0x37')]=_['keys'](db[_0x0037('0x5e')]['rawAttributes']);_0x5742f7['query']=_['keys'](_0x1b4c75[_0x0037('0x38')]);_0x5742f7['filters']=_[_0x0037('0x3b')](_0x5742f7[_0x0037('0x37')],_0x5742f7[_0x0037('0x38')]);_0x4daeed['attributes']=_[_0x0037('0x3b')](_0x5742f7[_0x0037('0x37')],qs[_0x0037('0x3d')](_0x1b4c75[_0x0037('0x38')]['fields']));_0x4daeed['attributes']=_0x4daeed[_0x0037('0x3c')][_0x0037('0x3e')]?_0x4daeed[_0x0037('0x3c')]:_0x5742f7[_0x0037('0x37')];_0x4daeed[_0x0037('0x5c')]=qs[_0x0037('0x41')](_0x1b4c75[_0x0037('0x38')][_0x0037('0x41')]);_0x4daeed['where']=qs[_0x0037('0x3a')](_[_0x0037('0x43')](_0x1b4c75[_0x0037('0x38')],_0x5742f7[_0x0037('0x3a')]));if(_0x1b4c75[_0x0037('0x38')][_0x0037('0x46')]){_0x4daeed['where']=_[_0x0037('0x44')](_0x4daeed[_0x0037('0x42')],{'$or':_[_0x0037('0x5d')](_0x4daeed['attributes'],function(_0xd04610){var _0xcf3253={};_0xcf3253[_0xd04610]={'$like':'%'+_0x1b4c75['query'][_0x0037('0x46')]+'%'};return _0xcf3253;})});}_0x4daeed=_[_0x0037('0x44')]({},_0x4daeed,_0x1b4c75[_0x0037('0x47')]);return _0x11797f[_0x0037('0x8b')](_0x4daeed);}})[_0x0037('0x2b')](function(_0x4416a1){if(_0x4416a1){_0x29d0fa=_0x4416a1[_0x0037('0x3e')];if(!_0x1b4c75[_0x0037('0x38')][_0x0037('0x3f')](_0x0037('0x40'))){_0x4daeed[_0x0037('0x25')]=qs['limit'](_0x1b4c75['query']['limit']);_0x4daeed['offset']=qs[_0x0037('0x24')](_0x1b4c75[_0x0037('0x38')]['offset']);}return _0x11797f[_0x0037('0x8b')](_0x4daeed);}})[_0x0037('0x2b')](function(_0x418ea2){if(_0x418ea2){return _0x418ea2?{'count':_0x29d0fa,'rows':_0x418ea2}:null;}})['then'](respondWithResult(_0x2d7611,null))['catch'](handleError(_0x2d7611,null));};
\ No newline at end of file
+var _0xddbc=['%s/%s','SIP','getTeams','ids','Team','online','voicePause','interface','flatMap','Agents','sequelize','transaction','addTeams','each','forEach','emit','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','userOpenchannelQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','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','../../mysqldb','redis','defaults','localhost','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','OpenchannelQueue','rawAttributes','fieldName','model','map','keys','query','filters','intersection','attributes','fields','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','length','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserOpenchannelQueue','hasOwnProperty','nolimit','pick','OpenchannelQueueId','User','findAndCountAll','UserId','openchannelPause','updatedAt','rows','format'];(function(_0xc64699,_0x1b3076){var _0x40732e=function(_0x23d369){while(--_0x23d369){_0xc64699['push'](_0xc64699['shift']());}};_0x40732e(++_0x1b3076);}(_0xddbc,0x1dd));var _0xcddb=function(_0x370110,_0x428192){_0x370110=_0x370110-0x0;var _0xa73406=_0xddbc[_0x370110];return _0xa73406;};'use strict';var emlformat=require(_0xcddb('0x0'));var rimraf=require(_0xcddb('0x1'));var zipdir=require(_0xcddb('0x2'));var jsonpatch=require(_0xcddb('0x3'));var rp=require(_0xcddb('0x4'));var moment=require(_0xcddb('0x5'));var BPromise=require(_0xcddb('0x6'));var Mustache=require(_0xcddb('0x7'));var util=require('util');var path=require(_0xcddb('0x8'));var sox=require(_0xcddb('0x9'));var csv=require('to-csv');var ejs=require(_0xcddb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcddb('0xb'));var squel=require(_0xcddb('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcddb('0xd'));var querystring=require(_0xcddb('0xe'));var Papa=require(_0xcddb('0xf'));var Redis=require(_0xcddb('0x10'));var authService=require(_0xcddb('0x11'));var qs=require(_0xcddb('0x12'));var as=require(_0xcddb('0x13'));var hardwareService=require(_0xcddb('0x14'));var logger=require(_0xcddb('0x15'))(_0xcddb('0x16'));var utils=require(_0xcddb('0x17'));var config=require(_0xcddb('0x18'));var licenseUtil=require(_0xcddb('0x19'));var db=require(_0xcddb('0x1a'))['db'];config[_0xcddb('0x1b')]=_[_0xcddb('0x1c')](config[_0xcddb('0x1b')],{'host':_0xcddb('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelQueue.socket')['register'](socket);function respondWithStatusCode(_0x348cd1,_0x232e1a){_0x232e1a=_0x232e1a||0xcc;return function(_0x276b35){if(_0x276b35){return _0x348cd1[_0xcddb('0x1e')](_0x232e1a);}return _0x348cd1[_0xcddb('0x1f')](_0x232e1a)[_0xcddb('0x20')]();};}function respondWithResult(_0x50b1c6,_0x141f2f){_0x141f2f=_0x141f2f||0xc8;return function(_0x9414e4){if(_0x9414e4){return _0x50b1c6[_0xcddb('0x1f')](_0x141f2f)[_0xcddb('0x21')](_0x9414e4);}};}function respondWithFilteredResult(_0x2a4503,_0x356a69){return function(_0x364600){if(_0x364600){var _0x91994d=typeof _0x356a69[_0xcddb('0x22')]==='undefined'&&typeof _0x356a69[_0xcddb('0x23')]==='undefined';var _0x212897=_0x364600[_0xcddb('0x24')];var _0x3d71c0=_0x91994d?0x0:_0x356a69[_0xcddb('0x22')];var _0x32b8f0=_0x91994d?_0x364600[_0xcddb('0x24')]:_0x356a69[_0xcddb('0x22')]+_0x356a69[_0xcddb('0x23')];var _0x22260d;if(_0x32b8f0>=_0x212897){_0x32b8f0=_0x212897;_0x22260d=0xc8;}else{_0x22260d=0xce;}_0x2a4503['status'](_0x22260d);return _0x2a4503[_0xcddb('0x25')](_0xcddb('0x26'),_0x3d71c0+'-'+_0x32b8f0+'/'+_0x212897)['json'](_0x364600);}return null;};}function patchUpdates(_0xa015ad){return function(_0x37aedb){try{jsonpatch[_0xcddb('0x27')](_0x37aedb,_0xa015ad,!![]);}catch(_0x963e7c){return BPromise[_0xcddb('0x28')](_0x963e7c);}return _0x37aedb['save']();};}function saveUpdates(_0x3188b6,_0x239166){return function(_0x5a7e8b){if(_0x5a7e8b){return _0x5a7e8b['update'](_0x3188b6)[_0xcddb('0x29')](function(_0x460aef){return _0x460aef;});}return null;};}function removeEntity(_0x41abe4,_0x4c13c0){return function(_0x47c03c){if(_0x47c03c){return _0x47c03c[_0xcddb('0x2a')]()[_0xcddb('0x29')](function(){var _0x533896=_0x47c03c[_0xcddb('0x2b')]({'plain':!![]});var _0x510c7f=_0xcddb('0x2c');return db[_0xcddb('0x2d')]['destroy']({'where':{'type':_0x510c7f,'resourceId':_0x533896['id']}})['then'](function(){return _0x47c03c;});})[_0xcddb('0x29')](function(){_0x41abe4[_0xcddb('0x1f')](0xcc)[_0xcddb('0x20')]();});}};}function handleEntityNotFound(_0xe7f3b2,_0xb0adb1){return function(_0x5a8101){if(!_0x5a8101){_0xe7f3b2[_0xcddb('0x1e')](0x194);}return _0x5a8101;};}function handleError(_0x4b6dff,_0x5f2bdd){_0x5f2bdd=_0x5f2bdd||0x1f4;return function(_0x48363d){logger[_0xcddb('0x2e')](_0x48363d[_0xcddb('0x2f')]);if(_0x48363d[_0xcddb('0x30')]){delete _0x48363d[_0xcddb('0x30')];}_0x4b6dff[_0xcddb('0x1f')](_0x5f2bdd)[_0xcddb('0x31')](_0x48363d);};}exports[_0xcddb('0x32')]=function(_0x5db6d7,_0x5ced3f){var _0x7c1f9b={},_0x4a5d8b={},_0x2851c8={'count':0x0,'rows':[]};var _0x5c6c94=_['map'](db[_0xcddb('0x33')][_0xcddb('0x34')],function(_0x429d2f){return{'name':_0x429d2f[_0xcddb('0x35')],'type':_0x429d2f['type']['key']};});_0x4a5d8b[_0xcddb('0x36')]=_[_0xcddb('0x37')](_0x5c6c94,_0xcddb('0x30'));_0x4a5d8b['query']=_[_0xcddb('0x38')](_0x5db6d7[_0xcddb('0x39')]);_0x4a5d8b[_0xcddb('0x3a')]=_[_0xcddb('0x3b')](_0x4a5d8b[_0xcddb('0x36')],_0x4a5d8b[_0xcddb('0x39')]);_0x7c1f9b[_0xcddb('0x3c')]=_[_0xcddb('0x3b')](_0x4a5d8b['model'],qs[_0xcddb('0x3d')](_0x5db6d7[_0xcddb('0x39')]['fields']));_0x7c1f9b[_0xcddb('0x3c')]=_0x7c1f9b[_0xcddb('0x3c')]['length']?_0x7c1f9b['attributes']:_0x4a5d8b['model'];if(!_0x5db6d7[_0xcddb('0x39')]['hasOwnProperty']('nolimit')){_0x7c1f9b[_0xcddb('0x23')]=qs[_0xcddb('0x23')](_0x5db6d7[_0xcddb('0x39')][_0xcddb('0x23')]);_0x7c1f9b[_0xcddb('0x22')]=qs[_0xcddb('0x22')](_0x5db6d7[_0xcddb('0x39')][_0xcddb('0x22')]);}_0x7c1f9b[_0xcddb('0x3e')]=qs[_0xcddb('0x3f')](_0x5db6d7[_0xcddb('0x39')][_0xcddb('0x3f')]);_0x7c1f9b[_0xcddb('0x40')]=qs[_0xcddb('0x3a')](_['pick'](_0x5db6d7[_0xcddb('0x39')],_0x4a5d8b[_0xcddb('0x3a')]),_0x5c6c94);if(_0x5db6d7[_0xcddb('0x39')][_0xcddb('0x41')]){_0x7c1f9b[_0xcddb('0x40')]=_[_0xcddb('0x42')](_0x7c1f9b[_0xcddb('0x40')],{'$or':_[_0xcddb('0x37')](_0x5c6c94,function(_0x51dae1){if(_0x51dae1[_0xcddb('0x43')]!==_0xcddb('0x44')){var _0x2be511={};_0x2be511[_0x51dae1[_0xcddb('0x30')]]={'$like':'%'+_0x5db6d7['query'][_0xcddb('0x41')]+'%'};return _0x2be511;}})});}_0x7c1f9b=_[_0xcddb('0x42')]({},_0x7c1f9b,_0x5db6d7[_0xcddb('0x45')]);var _0x18825f={'where':_0x7c1f9b['where']};return db[_0xcddb('0x33')][_0xcddb('0x24')](_0x18825f)[_0xcddb('0x29')](function(_0x1f2728){_0x2851c8[_0xcddb('0x24')]=_0x1f2728;if(_0x5db6d7[_0xcddb('0x39')][_0xcddb('0x46')]){_0x7c1f9b['include']=[{'all':!![]}];}return db[_0xcddb('0x33')][_0xcddb('0x47')](_0x7c1f9b);})[_0xcddb('0x29')](function(_0x19085e){_0x2851c8['rows']=_0x19085e;return _0x2851c8;})[_0xcddb('0x29')](respondWithFilteredResult(_0x5ced3f,_0x7c1f9b))[_0xcddb('0x48')](handleError(_0x5ced3f,null));};exports[_0xcddb('0x49')]=function(_0x382d60,_0x4188ab){var _0xa5b021={'raw':!![],'where':{'id':_0x382d60[_0xcddb('0x4a')]['id']}},_0x22f21d={};_0x22f21d['model']=_['keys'](db['OpenchannelQueue'][_0xcddb('0x34')]);_0x22f21d['query']=_['keys'](_0x382d60[_0xcddb('0x39')]);_0x22f21d['filters']=_['intersection'](_0x22f21d['model'],_0x22f21d[_0xcddb('0x39')]);_0xa5b021[_0xcddb('0x3c')]=_[_0xcddb('0x3b')](_0x22f21d['model'],qs[_0xcddb('0x3d')](_0x382d60[_0xcddb('0x39')]['fields']));_0xa5b021[_0xcddb('0x3c')]=_0xa5b021[_0xcddb('0x3c')][_0xcddb('0x4b')]?_0xa5b021['attributes']:_0x22f21d[_0xcddb('0x36')];if(_0x382d60[_0xcddb('0x39')][_0xcddb('0x46')]){_0xa5b021[_0xcddb('0x4c')]=[{'all':!![]}];}_0xa5b021=_['merge']({},_0xa5b021,_0x382d60[_0xcddb('0x45')]);return db[_0xcddb('0x33')]['find'](_0xa5b021)[_0xcddb('0x29')](handleEntityNotFound(_0x4188ab,null))[_0xcddb('0x29')](respondWithResult(_0x4188ab,null))[_0xcddb('0x48')](handleError(_0x4188ab,null));};exports[_0xcddb('0x4d')]=function(_0xa5fdbb,_0x40bb32){return db[_0xcddb('0x33')][_0xcddb('0x4d')](_0xa5fdbb[_0xcddb('0x4e')],{})['then'](function(_0x4e5152){var _0x39c205=_0xa5fdbb[_0xcddb('0x4f')][_0xcddb('0x2b')]({'plain':!![]});if(!_0x39c205)throw new Error(_0xcddb('0x50'));if(_0x39c205[_0xcddb('0x51')]===_0xcddb('0x4f')){var _0x2e3610=_0x4e5152[_0xcddb('0x2b')]({'plain':!![]});var _0x3bb2de=_0xcddb('0x2c');return db[_0xcddb('0x52')][_0xcddb('0x53')]({'where':{'name':_0x3bb2de,'userProfileId':_0x39c205[_0xcddb('0x54')]},'raw':!![]})[_0xcddb('0x29')](function(_0xb846d6){if(_0xb846d6&&_0xb846d6[_0xcddb('0x55')]===0x0){return db['UserProfileResource'][_0xcddb('0x4d')]({'name':_0x2e3610[_0xcddb('0x30')],'resourceId':_0x2e3610['id'],'type':_0xb846d6[_0xcddb('0x30')],'sectionId':_0xb846d6['id']},{})[_0xcddb('0x29')](function(){return _0x4e5152;});}else{return _0x4e5152;}})[_0xcddb('0x48')](function(_0xbeff8d){logger[_0xcddb('0x2e')](_0xcddb('0x56'),_0xbeff8d);throw _0xbeff8d;});}return _0x4e5152;})[_0xcddb('0x29')](respondWithResult(_0x40bb32,0xc9))['catch'](handleError(_0x40bb32,null));};exports[_0xcddb('0x57')]=function(_0x4d7734,_0x2019e4){if(_0x4d7734[_0xcddb('0x4e')]['id']){delete _0x4d7734[_0xcddb('0x4e')]['id'];}return db['OpenchannelQueue'][_0xcddb('0x53')]({'where':{'id':_0x4d7734[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x2019e4,null))[_0xcddb('0x29')](saveUpdates(_0x4d7734[_0xcddb('0x4e')],null))[_0xcddb('0x29')](respondWithResult(_0x2019e4,null))[_0xcddb('0x48')](handleError(_0x2019e4,null));};exports[_0xcddb('0x2a')]=function(_0x37f5f6,_0x23bb38){return db[_0xcddb('0x33')]['find']({'where':{'id':_0x37f5f6[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x23bb38,null))['then'](removeEntity(_0x23bb38,null))[_0xcddb('0x48')](handleError(_0x23bb38,null));};exports[_0xcddb('0x58')]=function(_0x3a2030,_0x29d44a){return db[_0xcddb('0x33')]['describe']()[_0xcddb('0x29')](respondWithResult(_0x29d44a,null))[_0xcddb('0x48')](handleError(_0x29d44a,null));};exports[_0xcddb('0x59')]=function(_0x1398fc,_0x4be7a1,_0x529712){var _0xcf3a3={'raw':!![],'where':{}},_0x227024={},_0xc98863;return db[_0xcddb('0x33')][_0xcddb('0x5a')]({'where':{'id':_0x1398fc['params']['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x4be7a1,null))[_0xcddb('0x29')](function(_0x2f7dd8){if(_0x2f7dd8){_0xc98863=_0x2f7dd8[_0xcddb('0x2b')]({'plain':!![]});_0x227024['model']=_[_0xcddb('0x38')](db[_0xcddb('0x5b')][_0xcddb('0x34')]);_0x227024[_0xcddb('0x39')]=_['keys'](_0x1398fc[_0xcddb('0x39')]);_0x227024[_0xcddb('0x3a')]=_[_0xcddb('0x3b')](_0x227024[_0xcddb('0x36')],_0x227024['query']);_0xcf3a3[_0xcddb('0x3c')]=_[_0xcddb('0x3b')](_0x227024[_0xcddb('0x36')],qs['fields'](_0x1398fc[_0xcddb('0x39')][_0xcddb('0x3d')]));_0xcf3a3[_0xcddb('0x3c')]=_0xcf3a3[_0xcddb('0x3c')][_0xcddb('0x4b')]?_0xcf3a3['attributes']:_0x227024['model'];if(!_0x1398fc[_0xcddb('0x39')][_0xcddb('0x5c')](_0xcddb('0x5d'))){_0xcf3a3[_0xcddb('0x23')]=qs[_0xcddb('0x23')](_0x1398fc[_0xcddb('0x39')][_0xcddb('0x23')]);_0xcf3a3[_0xcddb('0x22')]=qs[_0xcddb('0x22')](_0x1398fc[_0xcddb('0x39')][_0xcddb('0x22')]);}_0xcf3a3[_0xcddb('0x3e')]=qs[_0xcddb('0x3f')](_0x1398fc[_0xcddb('0x39')][_0xcddb('0x3f')]);_0xcf3a3['where']=qs[_0xcddb('0x3a')](_[_0xcddb('0x5e')](_0x1398fc[_0xcddb('0x39')],_0x227024['filters']));_0xcf3a3[_0xcddb('0x40')][_0xcddb('0x5f')]=_0x2f7dd8['id'];if(_0x1398fc['query'][_0xcddb('0x41')]){_0xcf3a3[_0xcddb('0x40')]=_[_0xcddb('0x42')](_0xcf3a3[_0xcddb('0x40')],{'$or':_[_0xcddb('0x37')](_0xcf3a3[_0xcddb('0x3c')],function(_0x2e9d4){var _0x4dcc27={};_0x4dcc27[_0x2e9d4]={'$like':'%'+_0x1398fc[_0xcddb('0x39')][_0xcddb('0x41')]+'%'};return _0x4dcc27;})});}_0xcf3a3=_[_0xcddb('0x42')]({},_0xcf3a3,_0x1398fc['options']);return db['UserOpenchannelQueue'][_0xcddb('0x47')](_0xcf3a3);}})[_0xcddb('0x29')](function(_0x43b65f){if(_0x43b65f){return db[_0xcddb('0x60')][_0xcddb('0x61')]({'where':{'id':_[_0xcddb('0x37')](_0x43b65f,_0xcddb('0x62')),'role':'agent'},'attributes':['id',_0xcddb('0x30'),_0xcddb('0x63'),_0xcddb('0x64'),'createdAt']});}})['then'](function(_0x54763b){if(_0x54763b){return{'count':_0x54763b[_0xcddb('0x24')],'rows':_[_0xcddb('0x37')](_0x54763b[_0xcddb('0x65')],function(_0x2fbfe8){return{'membername':_0x2fbfe8[_0xcddb('0x30')],'UserId':_0x2fbfe8['id'],'queue_name':_0xc98863['name'],'OpenchannelQueueId':_0xc98863['id'],'interface':util[_0xcddb('0x66')](_0xcddb('0x67'),_0xcddb('0x68'),_0x2fbfe8[_0xcddb('0x30')]),'penalty':0x0,'paused':_0x2fbfe8[_0xcddb('0x63')],'createdAt':_0x2fbfe8['createdAt'],'updatedAt':_0x2fbfe8[_0xcddb('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4be7a1,_0xcf3a3))[_0xcddb('0x48')](handleError(_0x4be7a1,null));};exports[_0xcddb('0x69')]=function(_0x2150be,_0x514a08,_0x377f6d){var _0x543f2e={};var _0x193f85={};var _0x34c183;var _0x3cd6ca;return db[_0xcddb('0x33')]['findOne']({'where':{'id':_0x2150be['params']['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x514a08,null))[_0xcddb('0x29')](function(_0x29c7ba){if(_0x29c7ba){_0x34c183=_0x29c7ba;_0x193f85['model']=_[_0xcddb('0x38')](db['Team'][_0xcddb('0x34')]);_0x193f85[_0xcddb('0x39')]=_[_0xcddb('0x38')](_0x2150be['query']);_0x193f85['filters']=_[_0xcddb('0x3b')](_0x193f85[_0xcddb('0x36')],_0x193f85[_0xcddb('0x39')]);_0x543f2e['attributes']=_[_0xcddb('0x3b')](_0x193f85[_0xcddb('0x36')],qs[_0xcddb('0x3d')](_0x2150be[_0xcddb('0x39')]['fields']));_0x543f2e[_0xcddb('0x3c')]=_0x543f2e[_0xcddb('0x3c')][_0xcddb('0x4b')]?_0x543f2e[_0xcddb('0x3c')]:_0x193f85[_0xcddb('0x36')];_0x543f2e[_0xcddb('0x3e')]=qs['sort'](_0x2150be[_0xcddb('0x39')][_0xcddb('0x3f')]);_0x543f2e[_0xcddb('0x40')]=qs[_0xcddb('0x3a')](_[_0xcddb('0x5e')](_0x2150be[_0xcddb('0x39')],_0x193f85['filters']));if(_0x2150be[_0xcddb('0x39')]['filter']){_0x543f2e[_0xcddb('0x40')]=_[_0xcddb('0x42')](_0x543f2e['where'],{'$or':_[_0xcddb('0x37')](_0x543f2e['attributes'],function(_0x416064){var _0x3e1af8={};_0x3e1af8[_0x416064]={'$like':'%'+_0x2150be[_0xcddb('0x39')][_0xcddb('0x41')]+'%'};return _0x3e1af8;})});}_0x543f2e=_[_0xcddb('0x42')]({},_0x543f2e,_0x2150be[_0xcddb('0x45')]);return _0x34c183[_0xcddb('0x69')](_0x543f2e);}})[_0xcddb('0x29')](function(_0x18f4e6){if(_0x18f4e6){_0x3cd6ca=_0x18f4e6[_0xcddb('0x4b')];if(!_0x2150be[_0xcddb('0x39')][_0xcddb('0x5c')]('nolimit')){_0x543f2e[_0xcddb('0x23')]=qs[_0xcddb('0x23')](_0x2150be[_0xcddb('0x39')][_0xcddb('0x23')]);_0x543f2e[_0xcddb('0x22')]=qs['offset'](_0x2150be[_0xcddb('0x39')]['offset']);}return _0x34c183['getTeams'](_0x543f2e);}})['then'](function(_0x486ae8){if(_0x486ae8){return _0x486ae8?{'count':_0x3cd6ca,'rows':_0x486ae8}:null;}})[_0xcddb('0x29')](respondWithResult(_0x514a08,null))[_0xcddb('0x48')](handleError(_0x514a08,null));};exports['addTeams']=function(_0x578d8e,_0x44239c,_0xf4f60b){var _0x165d44=_0x578d8e[_0xcddb('0x4e')][_0xcddb('0x6a')];return db[_0xcddb('0x6b')][_0xcddb('0x47')]({'where':{'id':_0x165d44},'attributes':['id'],'include':[{'model':db[_0xcddb('0x60')],'as':'Agents','attributes':['id',_0xcddb('0x30'),_0xcddb('0x6c'),_0xcddb('0x6d'),_0xcddb('0x6e')],'raw':!![]}]})['then'](function(_0x115698){if(_0x115698){var _0x48be0d=_[_0xcddb('0x6f')](_0x115698,function(_0x1a09b9){var _0x588a79=_0x1a09b9[_0xcddb('0x2b')]({'plain':!![]});return _0x588a79[_0xcddb('0x70')];});return db[_0xcddb('0x33')][_0xcddb('0x53')]({'where':{'id':_0x578d8e[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](function(_0x1eb6cb){return db[_0xcddb('0x71')][_0xcddb('0x72')](function(_0x59698e){return _0x1eb6cb[_0xcddb('0x73')](_0x165d44,{'transaction':_0x59698e})[_0xcddb('0x29')](function(){return BPromise[_0xcddb('0x74')](_0x48be0d,function(_0x3d35e9){return db[_0xcddb('0x5b')]['findOrCreate']({'where':{'UserId':_0x3d35e9['id'],'OpenchannelQueueId':_0x578d8e[_0xcddb('0x4a')]['id']},'transaction':_0x59698e});});})[_0xcddb('0x29')](function(){_0x48be0d[_0xcddb('0x75')](function(_0x57d2a4){socket[_0xcddb('0x76')]('userOpenchannelQueue:save',{'UserId':_0x57d2a4['id'],'OpenchannelQueueId':_0x1eb6cb['id']});});});});});}})['then'](respondWithStatusCode(_0x44239c,null))['catch'](handleError(_0x44239c,null));};exports[_0xcddb('0x77')]=function(_0x22020a,_0x49b737,_0x40c175){return db[_0xcddb('0x6b')][_0xcddb('0x47')]({'where':{'id':_0x22020a['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xcddb('0x60')],'as':_0xcddb('0x70'),'attributes':['id'],'raw':!![]}]})[_0xcddb('0x29')](handleEntityNotFound(_0x49b737,null))['then'](function(_0x1ab07b){var _0x2ef09f=_[_0xcddb('0x37')](_0x1ab07b,'id');var _0x5f3a04=[];var _0x182f0a=[];var _0x45fb3a=squel[_0xcddb('0x78')]();_0x45fb3a[_0xcddb('0x79')](_0xcddb('0x7a'))[_0xcddb('0x7b')]('team_has_openchannel_queues','tq')[_0xcddb('0x7c')](_0xcddb('0x7d'),'ut',_0xcddb('0x7e'))[_0xcddb('0x40')]('OpenchannelQueueId\x20=\x20?',_0x22020a['params']['id']);for(var _0xdb66a3=0x0;_0xdb66a3<_0x1ab07b['length'];_0xdb66a3+=0x1){let _0x32e153=_0x1ab07b[_0xdb66a3];for(var _0x9aaed4=0x0;_0x9aaed4<_0x32e153[_0xcddb('0x70')][_0xcddb('0x4b')];_0x9aaed4+=0x1){let _0x5f5718=_0x32e153[_0xcddb('0x70')][_0x9aaed4];var _0x51c8f9=_0x45fb3a[_0xcddb('0x7f')]();_0x51c8f9[_0xcddb('0x40')](_0xcddb('0x80'),_0x5f5718['id']);_0x182f0a[_0xcddb('0x81')](db[_0xcddb('0x71')][_0xcddb('0x39')](_0x51c8f9['toString'](),{'type':db[_0xcddb('0x71')]['QueryTypes'][_0xcddb('0x82')]})['then'](function(_0x3def67){if(_0x3def67[_0xcddb('0x4b')]===0x1){return _0x5f5718['id'];}else{var _0x1816a9=_[_0xcddb('0x83')](_['map'](_0x3def67,_0xcddb('0x84')),function(_0x381a79){return _[_0xcddb('0x85')](_0x2ef09f,_0x381a79);});if(_0x1816a9){return _0x5f5718['id'];}}}));}}return BPromise[_0xcddb('0x86')](_0x182f0a)[_0xcddb('0x29')](function(_0x2fed8e){_0x5f3a04=_(_0x5f3a04)[_0xcddb('0x87')](_0x2fed8e)[_0xcddb('0x88')]()[_0xcddb('0x89')]();return db[_0xcddb('0x33')]['find']({'where':{'id':_0x22020a[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](function(_0xd07997){return db[_0xcddb('0x71')][_0xcddb('0x72')](function(_0x516137){return _0xd07997[_0xcddb('0x77')](_0x22020a[_0xcddb('0x39')][_0xcddb('0x6a')],{'transaction':_0x516137})[_0xcddb('0x29')](function(){if(!_[_0xcddb('0x8a')](_0x5f3a04)){return _0xd07997['removeAgents'](_0x5f3a04,{'transaction':_0x516137});}})[_0xcddb('0x29')](function(){_0x5f3a04[_0xcddb('0x75')](function(_0x3e5a62){socket[_0xcddb('0x76')](_0xcddb('0x8b'),{'UserId':_0x3e5a62,'OpenchannelQueueId':_0xd07997['id']});});});});});});})[_0xcddb('0x29')](respondWithStatusCode(_0x49b737,null))[_0xcddb('0x48')](handleError(_0x49b737,null));};exports[_0xcddb('0x8c')]=function(_0x1f2d7f,_0x549403,_0x387eb8){return db[_0xcddb('0x33')][_0xcddb('0x53')]({'where':{'id':_0x1f2d7f[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x549403,null))[_0xcddb('0x29')](function(_0x45527a){if(_0x45527a){return _0x45527a['addAgents'](_0x1f2d7f[_0xcddb('0x4e')][_0xcddb('0x6a')],_[_0xcddb('0x8d')](_0x1f2d7f[_0xcddb('0x4e')],[_0xcddb('0x6a'),'id'])||{})['spread'](function(_0x219d2a){for(var _0x40c178=0x0;_0x40c178<_0x1f2d7f[_0xcddb('0x4e')][_0xcddb('0x6a')]['length'];_0x40c178+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x1f2d7f[_0xcddb('0x4e')]['ids'][_0x40c178]),'OpenchannelQueueId':Number(_0x1f2d7f[_0xcddb('0x4a')]['id'])});}return _0x219d2a;});}})[_0xcddb('0x29')](respondWithResult(_0x549403,null))[_0xcddb('0x48')](handleError(_0x549403,null));};exports[_0xcddb('0x8e')]=function(_0x247b49,_0x71b57a,_0x59ed86){return db['OpenchannelQueue'][_0xcddb('0x53')]({'where':{'id':_0x247b49[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x71b57a,null))['then'](function(_0x40c156){if(_0x40c156){return _0x40c156[_0xcddb('0x8e')](_0x247b49['query'][_0xcddb('0x6a')])['then'](function(){if(_[_0xcddb('0x8f')](_0x247b49[_0xcddb('0x39')][_0xcddb('0x6a')])){for(var _0x2ed722=0x0;_0x2ed722<_0x247b49[_0xcddb('0x39')][_0xcddb('0x6a')][_0xcddb('0x4b')];_0x2ed722+=0x1){socket[_0xcddb('0x76')]('userOpenchannelQueue:remove',{'UserId':Number(_0x247b49[_0xcddb('0x39')][_0xcddb('0x6a')][_0x2ed722]),'OpenchannelQueueId':Number(_0x247b49[_0xcddb('0x4a')]['id'])});}}else{socket[_0xcddb('0x76')](_0xcddb('0x8b'),{'UserId':Number(_0x247b49['query'][_0xcddb('0x6a')]),'OpenchannelQueueId':Number(_0x247b49[_0xcddb('0x4a')]['id'])});}});}})[_0xcddb('0x29')](respondWithStatusCode(_0x71b57a,null))['catch'](handleError(_0x71b57a,null));};exports['getAgents']=function(_0x54bcc7,_0x117ba3,_0x3bbaa0){var _0x5edbc6={};var _0x59052a={};var _0xfe5f7b;var _0x8a1c41;return db[_0xcddb('0x33')][_0xcddb('0x5a')]({'where':{'id':_0x54bcc7[_0xcddb('0x4a')]['id']}})[_0xcddb('0x29')](handleEntityNotFound(_0x117ba3,null))[_0xcddb('0x29')](function(_0xdfc3d0){if(_0xdfc3d0){_0xfe5f7b=_0xdfc3d0;_0x59052a[_0xcddb('0x36')]=_[_0xcddb('0x38')](db[_0xcddb('0x60')][_0xcddb('0x34')]);_0x59052a[_0xcddb('0x39')]=_['keys'](_0x54bcc7['query']);_0x59052a[_0xcddb('0x3a')]=_[_0xcddb('0x3b')](_0x59052a[_0xcddb('0x36')],_0x59052a[_0xcddb('0x39')]);_0x5edbc6[_0xcddb('0x3c')]=_['intersection'](_0x59052a[_0xcddb('0x36')],qs[_0xcddb('0x3d')](_0x54bcc7[_0xcddb('0x39')]['fields']));_0x5edbc6[_0xcddb('0x3c')]=_0x5edbc6[_0xcddb('0x3c')][_0xcddb('0x4b')]?_0x5edbc6['attributes']:_0x59052a[_0xcddb('0x36')];_0x5edbc6[_0xcddb('0x3e')]=qs[_0xcddb('0x3f')](_0x54bcc7[_0xcddb('0x39')][_0xcddb('0x3f')]);_0x5edbc6[_0xcddb('0x40')]=qs['filters'](_[_0xcddb('0x5e')](_0x54bcc7[_0xcddb('0x39')],_0x59052a[_0xcddb('0x3a')]));if(_0x54bcc7[_0xcddb('0x39')][_0xcddb('0x41')]){_0x5edbc6[_0xcddb('0x40')]=_[_0xcddb('0x42')](_0x5edbc6[_0xcddb('0x40')],{'$or':_['map'](_0x5edbc6[_0xcddb('0x3c')],function(_0x42189d){var _0x1cf75c={};_0x1cf75c[_0x42189d]={'$like':'%'+_0x54bcc7['query'][_0xcddb('0x41')]+'%'};return _0x1cf75c;})});}_0x5edbc6=_[_0xcddb('0x42')]({},_0x5edbc6,_0x54bcc7[_0xcddb('0x45')]);return _0xfe5f7b[_0xcddb('0x90')](_0x5edbc6);}})[_0xcddb('0x29')](function(_0x3077f9){if(_0x3077f9){_0x8a1c41=_0x3077f9['length'];if(!_0x54bcc7['query'][_0xcddb('0x5c')](_0xcddb('0x5d'))){_0x5edbc6[_0xcddb('0x23')]=qs[_0xcddb('0x23')](_0x54bcc7[_0xcddb('0x39')][_0xcddb('0x23')]);_0x5edbc6[_0xcddb('0x22')]=qs[_0xcddb('0x22')](_0x54bcc7[_0xcddb('0x39')][_0xcddb('0x22')]);}return _0xfe5f7b[_0xcddb('0x90')](_0x5edbc6);}})['then'](function(_0x426581){if(_0x426581){return _0x426581?{'count':_0x8a1c41,'rows':_0x426581}:null;}})[_0xcddb('0x29')](respondWithResult(_0x117ba3,null))['catch'](handleError(_0x117ba3,null));};
\ No newline at end of file
index c7a0d91..2057bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc68b=['hasOwnProperty','hook','../../mysqldb','OpenchannelQueue','setMaxListeners','save','update','emit'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xc68b,0x14a));var _0xbc68=function(_0x247845,_0x152acd){_0x247845=_0x247845-0x0;var _0x2b45fe=_0xc68b[_0x247845];return _0x2b45fe;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xbc68('0x0'))['db'][_0xbc68('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xbc68('0x2')](0x0);var events={'afterCreate':_0xbc68('0x3'),'afterUpdate':_0xbc68('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3baa35){return function(_0x3c4a91,_0xe82b1c,_0x1da4e7){OpenchannelQueueEvents[_0xbc68('0x5')](_0x3baa35+':'+_0x3c4a91['id'],_0x3c4a91);OpenchannelQueueEvents[_0xbc68('0x5')](_0x3baa35,_0x3c4a91);_0x1da4e7(null);};}for(var e in events){if(events[_0xbc68('0x6')](e)){var event=events[e];OpenchannelQueue[_0xbc68('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x71bc=['save','update','emit','hasOwnProperty','exports','setMaxListeners'];(function(_0x192fa0,_0x2943a9){var _0xf60b4c=function(_0x4978ba){while(--_0x4978ba){_0x192fa0['push'](_0x192fa0['shift']());}};_0xf60b4c(++_0x2943a9);}(_0x71bc,0x1bb));var _0xc71b=function(_0xa21860,_0x20f7e6){_0xa21860=_0xa21860-0x0;var _0x422289=_0x71bc[_0xa21860];return _0x422289;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xc71b('0x0')](0x0);var events={'afterCreate':_0xc71b('0x1'),'afterUpdate':_0xc71b('0x2'),'afterDestroy':'remove'};function emitEvent(_0x117155){return function(_0x2faada,_0x3fbcf5,_0x2b7fc7){OpenchannelQueueEvents[_0xc71b('0x3')](_0x117155+':'+_0x2faada['id'],_0x2faada);OpenchannelQueueEvents[_0xc71b('0x3')](_0x117155,_0x2faada);_0x2b7fc7(null);};}for(var e in events){if(events[_0xc71b('0x4')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0xc71b('0x5')]=OpenchannelQueueEvents;
\ No newline at end of file
index 8f78428..dee1dd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6844=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueue.attributes','define','OpenchannelQueue','openchannel_queues','lodash','util'];(function(_0x1fc1f9,_0x454fb2){var _0x4987ca=function(_0x5e90dd){while(--_0x5e90dd){_0x1fc1f9['push'](_0x1fc1f9['shift']());}};_0x4987ca(++_0x454fb2);}(_0x6844,0x15d));var _0x4684=function(_0x5be920,_0x24a226){_0x5be920=_0x5be920-0x0;var _0x3a5d05=_0x6844[_0x5be920];return _0x3a5d05;};'use strict';var _=require(_0x4684('0x0'));var util=require(_0x4684('0x1'));var logger=require(_0x4684('0x2'))(_0x4684('0x3'));var moment=require(_0x4684('0x4'));var BPromise=require(_0x4684('0x5'));var rp=require(_0x4684('0x6'));var fs=require('fs');var path=require(_0x4684('0x7'));var rimraf=require('rimraf');var config=require(_0x4684('0x8'));var attributes=require(_0x4684('0x9'));module['exports']=function(_0x36c6f3,_0x5226bb){return _0x36c6f3[_0x4684('0xa')](_0x4684('0xb'),attributes,{'tableName':_0x4684('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6da5=['api','bluebird','request-promise','rimraf','../../config/environment','define','OpenchannelQueue','openchannel_queues','lodash'];(function(_0x155459,_0x20ad61){var _0xf0db7c=function(_0x3eb4ee){while(--_0x3eb4ee){_0x155459['push'](_0x155459['shift']());}};_0xf0db7c(++_0x20ad61);}(_0x6da5,0x1c1));var _0x56da=function(_0x30ec9c,_0x2411ff){_0x30ec9c=_0x30ec9c-0x0;var _0x9075d8=_0x6da5[_0x30ec9c];return _0x9075d8;};'use strict';var _=require(_0x56da('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x56da('0x1'));var moment=require('moment');var BPromise=require(_0x56da('0x2'));var rp=require(_0x56da('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x56da('0x4'));var config=require(_0x56da('0x5'));var attributes=require('./openchannelQueue.attributes');module['exports']=function(_0x43027b,_0x4d9ae5){return _0x43027b[_0x56da('0x6')](_0x56da('0x7'),attributes,{'tableName':_0x56da('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a2274f..3125791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe480=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','include','map','model','ShowOpenchannelQueue','find','lodash','util','moment'];(function(_0x57db2a,_0x197737){var _0x4f151b=function(_0x342a7f){while(--_0x342a7f){_0x57db2a['push'](_0x57db2a['shift']());}};_0x4f151b(++_0x197737);}(_0xe480,0x6f));var _0x0e48=function(_0x219962,_0x60d33d){_0x219962=_0x219962-0x0;var _0x403820=_0xe480[_0x219962];return _0x403820;};'use strict';var _=require(_0x0e48('0x0'));var util=require(_0x0e48('0x1'));var moment=require(_0x0e48('0x2'));var BPromise=require(_0x0e48('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e48('0x4'));var db=require(_0x0e48('0x5'))['db'];var utils=require(_0x0e48('0x6'));var logger=require(_0x0e48('0x7'))('rpc');var config=require(_0x0e48('0x8'));var jayson=require(_0x0e48('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x0e48('0xa')]=_['defaults'](config[_0x0e48('0xa')],{'host':_0x0e48('0xb'),'port':0x18eb});var socket=require(_0x0e48('0xc'))(new Redis(config[_0x0e48('0xa')]));require(_0x0e48('0xd'))['register'](socket);function respondWithRpcPromise(_0x178a32,_0x42b2b7,_0x40ef03){return new BPromise(function(_0x231f31,_0x3f8311){return client[_0x0e48('0xe')](_0x178a32,_0x40ef03)[_0x0e48('0xf')](function(_0x29b06c){logger[_0x0e48('0x10')](_0x0e48('0x11'),_0x42b2b7,_0x0e48('0x12'));logger[_0x0e48('0x13')](_0x0e48('0x14'),_0x42b2b7,_0x0e48('0x12'),JSON[_0x0e48('0x15')](_0x29b06c));if(_0x29b06c[_0x0e48('0x16')]){if(_0x29b06c[_0x0e48('0x16')][_0x0e48('0x17')]===0x1f4){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x42b2b7,_0x29b06c[_0x0e48('0x16')][_0x0e48('0x18')]);return _0x3f8311(_0x29b06c[_0x0e48('0x16')][_0x0e48('0x18')]);}logger[_0x0e48('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x42b2b7,_0x29b06c[_0x0e48('0x16')][_0x0e48('0x18')]);return _0x231f31(_0x29b06c[_0x0e48('0x16')][_0x0e48('0x18')]);}else{logger['info'](_0x0e48('0x11'),_0x42b2b7,_0x0e48('0x12'));_0x231f31(_0x29b06c['result']['message']);}})[_0x0e48('0x19')](function(_0x4c2007){logger['error'](_0x0e48('0x11'),_0x42b2b7,_0x4c2007);_0x3f8311(_0x4c2007);});});}exports[_0x0e48('0x1a')]=function(_0x536649){var _0x39e578=this;return new Promise(function(_0x3cf8d9,_0x265d78){return db[_0x0e48('0x1b')][_0x0e48('0x1c')]({'raw':_0x536649[_0x0e48('0x1d')]?_0x536649[_0x0e48('0x1d')][_0x0e48('0x1e')]===undefined?!![]:![]:!![],'where':_0x536649[_0x0e48('0x1d')]?_0x536649['options'][_0x0e48('0x1f')]||null:null,'attributes':_0x536649[_0x0e48('0x1d')]?_0x536649['options'][_0x0e48('0x20')]||null:null,'limit':_0x536649[_0x0e48('0x1d')]?_0x536649[_0x0e48('0x1d')]['limit']||null:null,'include':_0x536649[_0x0e48('0x1d')]?_0x536649[_0x0e48('0x1d')][_0x0e48('0x21')]?_[_0x0e48('0x22')](_0x536649[_0x0e48('0x1d')][_0x0e48('0x21')],function(_0x35cee4){return{'model':db[_0x35cee4['model']],'as':_0x35cee4['as'],'attributes':_0x35cee4[_0x0e48('0x20')],'include':_0x35cee4['include']?_[_0x0e48('0x22')](_0x35cee4[_0x0e48('0x21')],function(_0x562444){return{'model':db[_0x562444[_0x0e48('0x23')]],'as':_0x562444['as'],'attributes':_0x562444[_0x0e48('0x20')],'include':_0x562444[_0x0e48('0x21')]?_[_0x0e48('0x22')](_0x562444['include'],function(_0x8cbe10){return{'model':db[_0x8cbe10['model']],'as':_0x8cbe10['as'],'attributes':_0x8cbe10[_0x0e48('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x594bed){logger[_0x0e48('0x10')](_0x0e48('0x1a'),_0x536649);logger[_0x0e48('0x13')](_0x0e48('0x1a'),_0x536649,JSON[_0x0e48('0x15')](_0x594bed));_0x3cf8d9(_0x594bed);})[_0x0e48('0x19')](function(_0x25e4b0){logger[_0x0e48('0x16')]('GetOpenchannelQueue',_0x25e4b0['message'],_0x536649);_0x265d78(_0x39e578['error'](0x1f4,_0x25e4b0[_0x0e48('0x18')]));});});};exports[_0x0e48('0x24')]=function(_0x57772f){var _0xd4a2bb=this;return new Promise(function(_0x42ad25,_0xb4c261){return db[_0x0e48('0x1b')][_0x0e48('0x25')]({'raw':_0x57772f[_0x0e48('0x1d')]?_0x57772f[_0x0e48('0x1d')][_0x0e48('0x1e')]===undefined?!![]:![]:!![],'where':_0x57772f['options']?_0x57772f[_0x0e48('0x1d')][_0x0e48('0x1f')]||null:null,'attributes':_0x57772f[_0x0e48('0x1d')]?_0x57772f['options']['attributes']||null:null,'include':_0x57772f['options']?_0x57772f[_0x0e48('0x1d')][_0x0e48('0x21')]?_[_0x0e48('0x22')](_0x57772f['options'][_0x0e48('0x21')],function(_0x7e2a42){return{'model':db[_0x7e2a42[_0x0e48('0x23')]],'as':_0x7e2a42['as'],'attributes':_0x7e2a42['attributes'],'include':_0x7e2a42[_0x0e48('0x21')]?_[_0x0e48('0x22')](_0x7e2a42['include'],function(_0x46441c){return{'model':db[_0x46441c['model']],'as':_0x46441c['as'],'attributes':_0x46441c[_0x0e48('0x20')],'include':_0x46441c[_0x0e48('0x21')]?_[_0x0e48('0x22')](_0x46441c['include'],function(_0x5b0e98){return{'model':db[_0x5b0e98[_0x0e48('0x23')]],'as':_0x5b0e98['as'],'attributes':_0x5b0e98[_0x0e48('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf2a998){logger['info'](_0x0e48('0x24'),_0x57772f);logger['debug'](_0x0e48('0x24'),_0x57772f,JSON[_0x0e48('0x15')](_0xf2a998));_0x42ad25(_0xf2a998);})[_0x0e48('0x19')](function(_0x1f7c00){logger[_0x0e48('0x16')]('ShowOpenchannelQueue',_0x1f7c00[_0x0e48('0x18')],_0x57772f);_0xb4c261(_0xd4a2bb[_0x0e48('0x16')](0x1f4,_0x1f7c00[_0x0e48('0x18')]));});});};
\ No newline at end of file
+var _0x9c88=['defaults','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','limit','include','model','map','debug','catch','ShowOpenchannelQueue','find','where','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis'];(function(_0x528497,_0x147e87){var _0x392d59=function(_0x47d9ec){while(--_0x47d9ec){_0x528497['push'](_0x528497['shift']());}};_0x392d59(++_0x147e87);}(_0x9c88,0x96));var _0x89c8=function(_0x263a8a,_0x5c088d){_0x263a8a=_0x263a8a-0x0;var _0x226a79=_0x9c88[_0x263a8a];return _0x226a79;};'use strict';var _=require(_0x89c8('0x0'));var util=require('util');var moment=require(_0x89c8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x89c8('0x2'));var db=require(_0x89c8('0x3'))['db'];var utils=require(_0x89c8('0x4'));var logger=require(_0x89c8('0x5'))('rpc');var config=require(_0x89c8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x89c8('0x7')][_0x89c8('0x8')]({'port':0x232a});config[_0x89c8('0x9')]=_[_0x89c8('0xa')](config[_0x89c8('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x89c8('0xb'))(new Redis(config[_0x89c8('0x9')]));require(_0x89c8('0xc'))[_0x89c8('0xd')](socket);function respondWithRpcPromise(_0x12fde9,_0x19015f,_0x4f595d){return new BPromise(function(_0x141e4f,_0x4d3c39){return client[_0x89c8('0xe')](_0x12fde9,_0x4f595d)[_0x89c8('0xf')](function(_0x238b96){logger[_0x89c8('0x10')](_0x89c8('0x11'),_0x19015f,_0x89c8('0x12'));logger['debug'](_0x89c8('0x13'),_0x19015f,_0x89c8('0x12'),JSON[_0x89c8('0x14')](_0x238b96));if(_0x238b96[_0x89c8('0x15')]){if(_0x238b96['error'][_0x89c8('0x16')]===0x1f4){logger[_0x89c8('0x15')](_0x89c8('0x11'),_0x19015f,_0x238b96[_0x89c8('0x15')][_0x89c8('0x17')]);return _0x4d3c39(_0x238b96[_0x89c8('0x15')][_0x89c8('0x17')]);}logger[_0x89c8('0x15')](_0x89c8('0x11'),_0x19015f,_0x238b96[_0x89c8('0x15')][_0x89c8('0x17')]);return _0x141e4f(_0x238b96['error'][_0x89c8('0x17')]);}else{logger[_0x89c8('0x10')](_0x89c8('0x11'),_0x19015f,'request\x20sent');_0x141e4f(_0x238b96[_0x89c8('0x18')][_0x89c8('0x17')]);}})['catch'](function(_0x506575){logger[_0x89c8('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x19015f,_0x506575);_0x4d3c39(_0x506575);});});}exports[_0x89c8('0x19')]=function(_0xc85634){var _0x171466=this;return new Promise(function(_0xb1a853,_0x1c15f3){return db[_0x89c8('0x1a')][_0x89c8('0x1b')]({'raw':_0xc85634[_0x89c8('0x1c')]?_0xc85634[_0x89c8('0x1c')][_0x89c8('0x1d')]===undefined?!![]:![]:!![],'where':_0xc85634[_0x89c8('0x1c')]?_0xc85634['options']['where']||null:null,'attributes':_0xc85634['options']?_0xc85634[_0x89c8('0x1c')][_0x89c8('0x1e')]||null:null,'limit':_0xc85634[_0x89c8('0x1c')]?_0xc85634['options'][_0x89c8('0x1f')]||null:null,'include':_0xc85634[_0x89c8('0x1c')]?_0xc85634[_0x89c8('0x1c')][_0x89c8('0x20')]?_['map'](_0xc85634[_0x89c8('0x1c')]['include'],function(_0x4935e0){return{'model':db[_0x4935e0[_0x89c8('0x21')]],'as':_0x4935e0['as'],'attributes':_0x4935e0[_0x89c8('0x1e')],'include':_0x4935e0[_0x89c8('0x20')]?_[_0x89c8('0x22')](_0x4935e0[_0x89c8('0x20')],function(_0x27dec2){return{'model':db[_0x27dec2[_0x89c8('0x21')]],'as':_0x27dec2['as'],'attributes':_0x27dec2['attributes'],'include':_0x27dec2[_0x89c8('0x20')]?_[_0x89c8('0x22')](_0x27dec2['include'],function(_0x2a6bfa){return{'model':db[_0x2a6bfa[_0x89c8('0x21')]],'as':_0x2a6bfa['as'],'attributes':_0x2a6bfa[_0x89c8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x89c8('0xf')](function(_0x34f7bc){logger[_0x89c8('0x10')](_0x89c8('0x19'),_0xc85634);logger[_0x89c8('0x23')]('GetOpenchannelQueue',_0xc85634,JSON[_0x89c8('0x14')](_0x34f7bc));_0xb1a853(_0x34f7bc);})[_0x89c8('0x24')](function(_0x49f3a1){logger[_0x89c8('0x15')]('GetOpenchannelQueue',_0x49f3a1['message'],_0xc85634);_0x1c15f3(_0x171466[_0x89c8('0x15')](0x1f4,_0x49f3a1[_0x89c8('0x17')]));});});};exports[_0x89c8('0x25')]=function(_0x1087ff){var _0x5aaec5=this;return new Promise(function(_0x2639cf,_0x2e73de){return db['OpenchannelQueue'][_0x89c8('0x26')]({'raw':_0x1087ff['options']?_0x1087ff['options']['raw']===undefined?!![]:![]:!![],'where':_0x1087ff['options']?_0x1087ff[_0x89c8('0x1c')][_0x89c8('0x27')]||null:null,'attributes':_0x1087ff[_0x89c8('0x1c')]?_0x1087ff[_0x89c8('0x1c')][_0x89c8('0x1e')]||null:null,'include':_0x1087ff[_0x89c8('0x1c')]?_0x1087ff['options'][_0x89c8('0x20')]?_['map'](_0x1087ff[_0x89c8('0x1c')][_0x89c8('0x20')],function(_0x4eb2f3){return{'model':db[_0x4eb2f3[_0x89c8('0x21')]],'as':_0x4eb2f3['as'],'attributes':_0x4eb2f3[_0x89c8('0x1e')],'include':_0x4eb2f3['include']?_[_0x89c8('0x22')](_0x4eb2f3['include'],function(_0x9d360e){return{'model':db[_0x9d360e[_0x89c8('0x21')]],'as':_0x9d360e['as'],'attributes':_0x9d360e[_0x89c8('0x1e')],'include':_0x9d360e[_0x89c8('0x20')]?_[_0x89c8('0x22')](_0x9d360e['include'],function(_0xe83c9f){return{'model':db[_0xe83c9f[_0x89c8('0x21')]],'as':_0xe83c9f['as'],'attributes':_0xe83c9f[_0x89c8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x89c8('0xf')](function(_0x3b1d0b){logger[_0x89c8('0x10')](_0x89c8('0x25'),_0x1087ff);logger[_0x89c8('0x23')](_0x89c8('0x25'),_0x1087ff,JSON[_0x89c8('0x14')](_0x3b1d0b));_0x2639cf(_0x3b1d0b);})[_0x89c8('0x24')](function(_0x482c85){logger[_0x89c8('0x15')](_0x89c8('0x25'),_0x482c85[_0x89c8('0x17')],_0x1087ff);_0x2e73de(_0x5aaec5[_0x89c8('0x15')](0x1f4,_0x482c85[_0x89c8('0x17')]));});});};
\ No newline at end of file
index 4d29af2..196c6ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b91=['register','length','openchannelQueue:','./openchannelQueue.events','save','removeListener'];(function(_0x49d6e4,_0x1af05e){var _0x3a142f=function(_0xe69ceb){while(--_0xe69ceb){_0x49d6e4['push'](_0x49d6e4['shift']());}};_0x3a142f(++_0x1af05e);}(_0x0b91,0xe7));var _0x10b9=function(_0x4b4830,_0xafcadc){_0x4b4830=_0x4b4830-0x0;var _0x3d693e=_0x0b91[_0x4b4830];return _0x3d693e;};'use strict';var OpenchannelQueueEvents=require(_0x10b9('0x0'));var events=[_0x10b9('0x1'),'remove','update'];function createListener(_0x2e43c8,_0x41b7b3){return function(_0x43b32c){_0x41b7b3['emit'](_0x2e43c8,_0x43b32c);};}function removeListener(_0x1bafef,_0x33d490){return function(){OpenchannelQueueEvents[_0x10b9('0x2')](_0x1bafef,_0x33d490);};}exports[_0x10b9('0x3')]=function(_0x1ad187){for(var _0x344ba0=0x0,_0x3ee20a=events[_0x10b9('0x4')];_0x344ba0<_0x3ee20a;_0x344ba0++){var _0x954929=events[_0x344ba0];var _0x138f08=createListener(_0x10b9('0x5')+_0x954929,_0x1ad187);OpenchannelQueueEvents['on'](_0x954929,_0x138f08);}};
\ No newline at end of file
+var _0xd3cc=['emit','removeListener','register','openchannelQueue:','./openchannelQueue.events','save','remove','update'];(function(_0x4037c7,_0x4e3c38){var _0x267d2a=function(_0x469a87){while(--_0x469a87){_0x4037c7['push'](_0x4037c7['shift']());}};_0x267d2a(++_0x4e3c38);}(_0xd3cc,0xd4));var _0xcd3c=function(_0x5ae7f4,_0x4f6748){_0x5ae7f4=_0x5ae7f4-0x0;var _0x27175e=_0xd3cc[_0x5ae7f4];return _0x27175e;};'use strict';var OpenchannelQueueEvents=require(_0xcd3c('0x0'));var events=[_0xcd3c('0x1'),_0xcd3c('0x2'),_0xcd3c('0x3')];function createListener(_0x375370,_0x68ffda){return function(_0x48693f){_0x68ffda[_0xcd3c('0x4')](_0x375370,_0x48693f);};}function removeListener(_0x1f919f,_0x3a0cfa){return function(){OpenchannelQueueEvents[_0xcd3c('0x5')](_0x1f919f,_0x3a0cfa);};}exports[_0xcd3c('0x6')]=function(_0x408b19){for(var _0x4dc71c=0x0,_0x92f491=events['length'];_0x4dc71c<_0x92f491;_0x4dc71c++){var _0x26f4e4=events[_0x4dc71c];var _0x2c42a6=createListener(_0xcd3c('0x7')+_0x26f4e4,_0x408b19);OpenchannelQueueEvents['on'](_0x26f4e4,_0x2c42a6);}};
\ No newline at end of file
index de2d8f6..6fa19d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd11e=['destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./openchannelQueueReport.controller','isAuthenticated','get','describe','/:id','post','put'];(function(_0x3b35f2,_0x3689b8){var _0x3ea6ff=function(_0x514182){while(--_0x514182){_0x3b35f2['push'](_0x3b35f2['shift']());}};_0x3ea6ff(++_0x3689b8);}(_0xd11e,0x6a));var _0xed11=function(_0x29eb10,_0x190cb3){_0x29eb10=_0x29eb10-0x0;var _0x5371a2=_0xd11e[_0x29eb10];return _0x5371a2;};'use strict';var multer=require('multer');var util=require(_0xed11('0x0'));var path=require(_0xed11('0x1'));var timeout=require(_0xed11('0x2'));var express=require(_0xed11('0x3'));var router=express[_0xed11('0x4')]();var fs_extra=require(_0xed11('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xed11('0x6'));var config=require('../../config/environment');var controller=require(_0xed11('0x7'));router['get']('/',auth[_0xed11('0x8')](),controller['index']);router[_0xed11('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xed11('0xa')]);router[_0xed11('0x9')](_0xed11('0xb'),auth[_0xed11('0x8')](),controller['show']);router[_0xed11('0xc')]('/',auth[_0xed11('0x8')](),controller['create']);router[_0xed11('0xd')](_0xed11('0xb'),auth[_0xed11('0x8')](),controller['update']);router['delete'](_0xed11('0xb'),auth['isAuthenticated'](),controller[_0xed11('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x5f8f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','show','post','create','destroy','exports','multer','util','path'];(function(_0x5416bc,_0x4949a4){var _0x5d565d=function(_0x216dfa){while(--_0x216dfa){_0x5416bc['push'](_0x5416bc['shift']());}};_0x5d565d(++_0x4949a4);}(_0x5f8f,0xe1));var _0xf5f8=function(_0x5b0bcc,_0x6eebb7){_0x5b0bcc=_0x5b0bcc-0x0;var _0x49fd82=_0x5f8f[_0x5b0bcc];return _0x49fd82;};'use strict';var multer=require(_0xf5f8('0x0'));var util=require(_0xf5f8('0x1'));var path=require(_0xf5f8('0x2'));var timeout=require(_0xf5f8('0x3'));var express=require(_0xf5f8('0x4'));var router=express[_0xf5f8('0x5')]();var fs_extra=require(_0xf5f8('0x6'));var auth=require(_0xf5f8('0x7'));var interaction=require(_0xf5f8('0x8'));var config=require(_0xf5f8('0x9'));var controller=require('./openchannelQueueReport.controller');router[_0xf5f8('0xa')]('/',auth[_0xf5f8('0xb')](),controller['index']);router[_0xf5f8('0xa')](_0xf5f8('0xc'),auth[_0xf5f8('0xb')](),controller[_0xf5f8('0xd')]);router[_0xf5f8('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xf5f8('0xe')]);router[_0xf5f8('0xf')]('/',auth[_0xf5f8('0xb')](),controller[_0xf5f8('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xf5f8('0xb')](),controller[_0xf5f8('0x11')]);module[_0xf5f8('0x12')]=router;
\ No newline at end of file
index c657b0a..3ae3fc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63b7=['STRING','DATE','sequelize'];(function(_0xa43ea8,_0x3a5813){var _0xcd0fbd=function(_0x31c0f0){while(--_0x31c0f0){_0xa43ea8['push'](_0xa43ea8['shift']());}};_0xcd0fbd(++_0x3a5813);}(_0x63b7,0x1e2));var _0x763b=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x63b7[_0x220dbb];return _0x2b77de;};'use strict';var moment=require('moment');var Sequelize=require(_0x763b('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x763b('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x763b('0x1')]},'joinAt':{'type':Sequelize[_0x763b('0x2')]},'leaveAt':{'type':Sequelize[_0x763b('0x2')]},'acceptAt':{'type':Sequelize[_0x763b('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x763b('0x1')]}};
\ No newline at end of file
+var _0x8366=['DATE','moment','sequelize','exports','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8366,0xf1));var _0x6836=function(_0x5a031a,_0x5114f5){_0x5a031a=_0x5a031a-0x0;var _0x1775e9=_0x8366[_0x5a031a];return _0x1775e9;};'use strict';var moment=require(_0x6836('0x0'));var Sequelize=require(_0x6836('0x1'));module[_0x6836('0x2')]={'uniqueid':{'type':Sequelize[_0x6836('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x6836('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x6836('0x4')]},'acceptAt':{'type':Sequelize[_0x6836('0x4')]},'exitAt':{'type':Sequelize[_0x6836('0x4')]},'reason':{'type':Sequelize[_0x6836('0x3')]}};
\ No newline at end of file
index bab5653..bc29e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2461=['../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','includeAll','options','find','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','../../components/auth/service','api'];(function(_0x4ead06,_0x16a009){var _0x55de37=function(_0x13b170){while(--_0x13b170){_0x4ead06['push'](_0x4ead06['shift']());}};_0x55de37(++_0x16a009);}(_0x2461,0x7e));var _0x1246=function(_0x262f58,_0x2bfa29){_0x262f58=_0x262f58-0x0;var _0x141f53=_0x2461[_0x262f58];return _0x141f53;};'use strict';var emlformat=require(_0x1246('0x0'));var rimraf=require(_0x1246('0x1'));var zipdir=require(_0x1246('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1246('0x3'));var moment=require(_0x1246('0x4'));var BPromise=require(_0x1246('0x5'));var Mustache=require(_0x1246('0x6'));var util=require(_0x1246('0x7'));var path=require(_0x1246('0x8'));var sox=require(_0x1246('0x9'));var csv=require('to-csv');var ejs=require(_0x1246('0xa'));var fs=require('fs');var fs_extra=require(_0x1246('0xb'));var _=require(_0x1246('0xc'));var squel=require('squel');var crypto=require(_0x1246('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1246('0xe'));var querystring=require(_0x1246('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1246('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1246('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1246('0x12'));var db=require(_0x1246('0x13'))['db'];function respondWithStatusCode(_0x5b6052,_0x4ce713){_0x4ce713=_0x4ce713||0xcc;return function(_0x9ab618){if(_0x9ab618){return _0x5b6052[_0x1246('0x14')](_0x4ce713);}return _0x5b6052[_0x1246('0x15')](_0x4ce713)[_0x1246('0x16')]();};}function respondWithResult(_0x39b492,_0x555e1a){_0x555e1a=_0x555e1a||0xc8;return function(_0x4cc000){if(_0x4cc000){return _0x39b492[_0x1246('0x15')](_0x555e1a)['json'](_0x4cc000);}};}function respondWithFilteredResult(_0x3412e8,_0x2a2cb3){return function(_0x4a5b93){if(_0x4a5b93){var _0x191df6=typeof _0x2a2cb3[_0x1246('0x17')]===_0x1246('0x18')&&typeof _0x2a2cb3['limit']===_0x1246('0x18');var _0x163de6=_0x4a5b93[_0x1246('0x19')];var _0x608d54=_0x191df6?0x0:_0x2a2cb3[_0x1246('0x17')];var _0x1780a8=_0x191df6?_0x4a5b93[_0x1246('0x19')]:_0x2a2cb3[_0x1246('0x17')]+_0x2a2cb3[_0x1246('0x1a')];var _0x4a49a9;if(_0x1780a8>=_0x163de6){_0x1780a8=_0x163de6;_0x4a49a9=0xc8;}else{_0x4a49a9=0xce;}_0x3412e8[_0x1246('0x15')](_0x4a49a9);return _0x3412e8[_0x1246('0x1b')](_0x1246('0x1c'),_0x608d54+'-'+_0x1780a8+'/'+_0x163de6)[_0x1246('0x1d')](_0x4a5b93);}return null;};}function patchUpdates(_0x16541c){return function(_0x21b7b9){try{jsonpatch[_0x1246('0x1e')](_0x21b7b9,_0x16541c,!![]);}catch(_0x2d937b){return BPromise['reject'](_0x2d937b);}return _0x21b7b9[_0x1246('0x1f')]();};}function saveUpdates(_0x21fd94,_0x7a5eda){return function(_0x47df26){if(_0x47df26){return _0x47df26[_0x1246('0x20')](_0x21fd94)[_0x1246('0x21')](function(_0x40a6a1){return _0x40a6a1;});}return null;};}function removeEntity(_0x3602c2,_0x16c32f){return function(_0x33b5a3){if(_0x33b5a3){return _0x33b5a3[_0x1246('0x22')]()['then'](function(){_0x3602c2[_0x1246('0x15')](0xcc)[_0x1246('0x16')]();});}};}function handleEntityNotFound(_0x152a6d,_0x7c265a){return function(_0x553fe2){if(!_0x553fe2){_0x152a6d[_0x1246('0x14')](0x194);}return _0x553fe2;};}function handleError(_0x244a18,_0x4ab8a8){_0x4ab8a8=_0x4ab8a8||0x1f4;return function(_0x454ed2){logger[_0x1246('0x23')](_0x454ed2[_0x1246('0x24')]);if(_0x454ed2['name']){delete _0x454ed2[_0x1246('0x25')];}_0x244a18[_0x1246('0x15')](_0x4ab8a8)[_0x1246('0x26')](_0x454ed2);};}exports[_0x1246('0x27')]=function(_0x5485ea,_0x52fcae){var _0x327b72={},_0x28d6f1={},_0x14d07e={'count':0x0,'rows':[]};var _0x5ac64a=_[_0x1246('0x28')](db[_0x1246('0x29')][_0x1246('0x2a')],function(_0x152c07){return{'name':_0x152c07[_0x1246('0x2b')],'type':_0x152c07[_0x1246('0x2c')]['key']};});_0x28d6f1[_0x1246('0x2d')]=_['map'](_0x5ac64a,'name');_0x28d6f1[_0x1246('0x2e')]=_[_0x1246('0x2f')](_0x5485ea[_0x1246('0x2e')]);_0x28d6f1['filters']=_[_0x1246('0x30')](_0x28d6f1[_0x1246('0x2d')],_0x28d6f1[_0x1246('0x2e')]);_0x327b72[_0x1246('0x31')]=_['intersection'](_0x28d6f1[_0x1246('0x2d')],qs[_0x1246('0x32')](_0x5485ea['query'][_0x1246('0x32')]));_0x327b72[_0x1246('0x31')]=_0x327b72[_0x1246('0x31')][_0x1246('0x33')]?_0x327b72[_0x1246('0x31')]:_0x28d6f1[_0x1246('0x2d')];if(!_0x5485ea[_0x1246('0x2e')][_0x1246('0x34')](_0x1246('0x35'))){_0x327b72[_0x1246('0x1a')]=qs['limit'](_0x5485ea['query'][_0x1246('0x1a')]);_0x327b72[_0x1246('0x17')]=qs[_0x1246('0x17')](_0x5485ea['query'][_0x1246('0x17')]);}_0x327b72[_0x1246('0x36')]=qs['sort'](_0x5485ea[_0x1246('0x2e')][_0x1246('0x37')]);_0x327b72[_0x1246('0x38')]=qs[_0x1246('0x39')](_[_0x1246('0x3a')](_0x5485ea[_0x1246('0x2e')],_0x28d6f1[_0x1246('0x39')]),_0x5ac64a);if(_0x5485ea['query']['filter']){_0x327b72['where']=_[_0x1246('0x3b')](_0x327b72[_0x1246('0x38')],{'$or':_[_0x1246('0x28')](_0x5ac64a,function(_0x331916){if(_0x331916[_0x1246('0x2c')]!==_0x1246('0x3c')){var _0x489ffe={};_0x489ffe[_0x331916[_0x1246('0x25')]]={'$like':'%'+_0x5485ea['query'][_0x1246('0x3d')]+'%'};return _0x489ffe;}})});}_0x327b72=_['merge']({},_0x327b72,_0x5485ea['options']);var _0x18cb8e={'where':_0x327b72['where']};return db['OpenchannelQueueReport'][_0x1246('0x19')](_0x18cb8e)['then'](function(_0x637e7d){_0x14d07e[_0x1246('0x19')]=_0x637e7d;if(_0x5485ea[_0x1246('0x2e')]['includeAll']){_0x327b72[_0x1246('0x3e')]=[{'all':!![]}];}return db[_0x1246('0x29')][_0x1246('0x3f')](_0x327b72);})[_0x1246('0x21')](function(_0x1a5085){_0x14d07e[_0x1246('0x40')]=_0x1a5085;return _0x14d07e;})[_0x1246('0x21')](respondWithFilteredResult(_0x52fcae,_0x327b72))[_0x1246('0x41')](handleError(_0x52fcae,null));};exports['show']=function(_0x374b4c,_0x462978){var _0x3e4caa={'raw':!![],'where':{'id':_0x374b4c['params']['id']}},_0x3f5f3c={};_0x3f5f3c['model']=_['keys'](db[_0x1246('0x29')][_0x1246('0x2a')]);_0x3f5f3c[_0x1246('0x2e')]=_[_0x1246('0x2f')](_0x374b4c[_0x1246('0x2e')]);_0x3f5f3c[_0x1246('0x39')]=_['intersection'](_0x3f5f3c[_0x1246('0x2d')],_0x3f5f3c[_0x1246('0x2e')]);_0x3e4caa[_0x1246('0x31')]=_[_0x1246('0x30')](_0x3f5f3c[_0x1246('0x2d')],qs[_0x1246('0x32')](_0x374b4c[_0x1246('0x2e')]['fields']));_0x3e4caa[_0x1246('0x31')]=_0x3e4caa[_0x1246('0x31')][_0x1246('0x33')]?_0x3e4caa[_0x1246('0x31')]:_0x3f5f3c[_0x1246('0x2d')];if(_0x374b4c[_0x1246('0x2e')][_0x1246('0x42')]){_0x3e4caa[_0x1246('0x3e')]=[{'all':!![]}];}_0x3e4caa=_[_0x1246('0x3b')]({},_0x3e4caa,_0x374b4c[_0x1246('0x43')]);return db['OpenchannelQueueReport'][_0x1246('0x44')](_0x3e4caa)[_0x1246('0x21')](handleEntityNotFound(_0x462978,null))['then'](respondWithResult(_0x462978,null))['catch'](handleError(_0x462978,null));};exports['create']=function(_0x503e5d,_0x5a1266){return db[_0x1246('0x29')]['create'](_0x503e5d[_0x1246('0x45')],{})[_0x1246('0x21')](respondWithResult(_0x5a1266,0xc9))[_0x1246('0x41')](handleError(_0x5a1266,null));};exports[_0x1246('0x20')]=function(_0x507760,_0x582da0){if(_0x507760[_0x1246('0x45')]['id']){delete _0x507760[_0x1246('0x45')]['id'];}return db[_0x1246('0x29')][_0x1246('0x44')]({'where':{'id':_0x507760[_0x1246('0x46')]['id']}})[_0x1246('0x21')](handleEntityNotFound(_0x582da0,null))[_0x1246('0x21')](saveUpdates(_0x507760[_0x1246('0x45')],null))['then'](respondWithResult(_0x582da0,null))[_0x1246('0x41')](handleError(_0x582da0,null));};exports[_0x1246('0x22')]=function(_0x3841f1,_0x7212f0){return db[_0x1246('0x29')]['find']({'where':{'id':_0x3841f1['params']['id']}})[_0x1246('0x21')](handleEntityNotFound(_0x7212f0,null))['then'](removeEntity(_0x7212f0,null))[_0x1246('0x41')](handleError(_0x7212f0,null));};exports[_0x1246('0x47')]=function(_0x45afaf,_0x169b6a){return db[_0x1246('0x29')]['describe']()[_0x1246('0x21')](respondWithResult(_0x169b6a,null))[_0x1246('0x41')](handleError(_0x169b6a,null));};
\ No newline at end of file
+var _0x5a82=['lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','order','sort','pick','filter','where','merge','VIRTUAL','options','OpenchannelQueueReport','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','destroy','describe','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','to-csv'];(function(_0x162c96,_0x2cc77c){var _0x3ae40c=function(_0x520409){while(--_0x520409){_0x162c96['push'](_0x162c96['shift']());}};_0x3ae40c(++_0x2cc77c);}(_0x5a82,0x120));var _0x25a8=function(_0x3079df,_0x5c8474){_0x3079df=_0x3079df-0x0;var _0x5e5e78=_0x5a82[_0x3079df];return _0x5e5e78;};'use strict';var emlformat=require(_0x25a8('0x0'));var rimraf=require(_0x25a8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x25a8('0x2'));var moment=require('moment');var BPromise=require(_0x25a8('0x3'));var Mustache=require(_0x25a8('0x4'));var util=require(_0x25a8('0x5'));var path=require('path');var sox=require(_0x25a8('0x6'));var csv=require(_0x25a8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x25a8('0x8'));var squel=require(_0x25a8('0x9'));var crypto=require('crypto');var jsforce=require(_0x25a8('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x25a8('0x7'));var querystring=require(_0x25a8('0xb'));var Papa=require('papaparse');var Redis=require(_0x25a8('0xc'));var authService=require(_0x25a8('0xd'));var qs=require(_0x25a8('0xe'));var as=require(_0x25a8('0xf'));var hardwareService=require(_0x25a8('0x10'));var logger=require(_0x25a8('0x11'))(_0x25a8('0x12'));var utils=require('../../config/utils');var config=require(_0x25a8('0x13'));var licenseUtil=require(_0x25a8('0x14'));var db=require(_0x25a8('0x15'))['db'];function respondWithStatusCode(_0x24828f,_0x460c39){_0x460c39=_0x460c39||0xcc;return function(_0x9bd579){if(_0x9bd579){return _0x24828f['sendStatus'](_0x460c39);}return _0x24828f['status'](_0x460c39)['end']();};}function respondWithResult(_0x420484,_0x31ff4a){_0x31ff4a=_0x31ff4a||0xc8;return function(_0x2628a2){if(_0x2628a2){return _0x420484[_0x25a8('0x16')](_0x31ff4a)['json'](_0x2628a2);}};}function respondWithFilteredResult(_0x1b0647,_0x1adff7){return function(_0x2f0232){if(_0x2f0232){var _0xc6fb27=typeof _0x1adff7[_0x25a8('0x17')]===_0x25a8('0x18')&&typeof _0x1adff7[_0x25a8('0x19')]===_0x25a8('0x18');var _0x421749=_0x2f0232[_0x25a8('0x1a')];var _0x374e26=_0xc6fb27?0x0:_0x1adff7[_0x25a8('0x17')];var _0x3eafac=_0xc6fb27?_0x2f0232[_0x25a8('0x1a')]:_0x1adff7['offset']+_0x1adff7[_0x25a8('0x19')];var _0x35c3ff;if(_0x3eafac>=_0x421749){_0x3eafac=_0x421749;_0x35c3ff=0xc8;}else{_0x35c3ff=0xce;}_0x1b0647[_0x25a8('0x16')](_0x35c3ff);return _0x1b0647[_0x25a8('0x1b')]('Content-Range',_0x374e26+'-'+_0x3eafac+'/'+_0x421749)[_0x25a8('0x1c')](_0x2f0232);}return null;};}function patchUpdates(_0x2d8090){return function(_0x90c553){try{jsonpatch[_0x25a8('0x1d')](_0x90c553,_0x2d8090,!![]);}catch(_0x562cc0){return BPromise[_0x25a8('0x1e')](_0x562cc0);}return _0x90c553[_0x25a8('0x1f')]();};}function saveUpdates(_0x212b4f,_0x58bca9){return function(_0x5c0cea){if(_0x5c0cea){return _0x5c0cea[_0x25a8('0x20')](_0x212b4f)[_0x25a8('0x21')](function(_0x88376){return _0x88376;});}return null;};}function removeEntity(_0x44add7,_0xa48a9a){return function(_0x5afa22){if(_0x5afa22){return _0x5afa22['destroy']()['then'](function(){_0x44add7[_0x25a8('0x16')](0xcc)[_0x25a8('0x22')]();});}};}function handleEntityNotFound(_0x307cab,_0xf5e5ae){return function(_0x39ba60){if(!_0x39ba60){_0x307cab['sendStatus'](0x194);}return _0x39ba60;};}function handleError(_0x1c240c,_0x214608){_0x214608=_0x214608||0x1f4;return function(_0x1be2b0){logger[_0x25a8('0x23')](_0x1be2b0[_0x25a8('0x24')]);if(_0x1be2b0[_0x25a8('0x25')]){delete _0x1be2b0[_0x25a8('0x25')];}_0x1c240c[_0x25a8('0x16')](_0x214608)[_0x25a8('0x26')](_0x1be2b0);};}exports[_0x25a8('0x27')]=function(_0x352a0e,_0x566082){var _0x2aa4af={},_0x7e9877={},_0x374930={'count':0x0,'rows':[]};var _0x2a081f=_['map'](db['OpenchannelQueueReport'][_0x25a8('0x28')],function(_0x488d02){return{'name':_0x488d02[_0x25a8('0x29')],'type':_0x488d02[_0x25a8('0x2a')][_0x25a8('0x2b')]};});_0x7e9877[_0x25a8('0x2c')]=_[_0x25a8('0x2d')](_0x2a081f,_0x25a8('0x25'));_0x7e9877[_0x25a8('0x2e')]=_[_0x25a8('0x2f')](_0x352a0e['query']);_0x7e9877[_0x25a8('0x30')]=_[_0x25a8('0x31')](_0x7e9877[_0x25a8('0x2c')],_0x7e9877[_0x25a8('0x2e')]);_0x2aa4af[_0x25a8('0x32')]=_[_0x25a8('0x31')](_0x7e9877[_0x25a8('0x2c')],qs[_0x25a8('0x33')](_0x352a0e[_0x25a8('0x2e')][_0x25a8('0x33')]));_0x2aa4af[_0x25a8('0x32')]=_0x2aa4af[_0x25a8('0x32')]['length']?_0x2aa4af['attributes']:_0x7e9877[_0x25a8('0x2c')];if(!_0x352a0e[_0x25a8('0x2e')]['hasOwnProperty']('nolimit')){_0x2aa4af['limit']=qs[_0x25a8('0x19')](_0x352a0e[_0x25a8('0x2e')][_0x25a8('0x19')]);_0x2aa4af[_0x25a8('0x17')]=qs[_0x25a8('0x17')](_0x352a0e['query'][_0x25a8('0x17')]);}_0x2aa4af[_0x25a8('0x34')]=qs['sort'](_0x352a0e['query'][_0x25a8('0x35')]);_0x2aa4af['where']=qs[_0x25a8('0x30')](_[_0x25a8('0x36')](_0x352a0e[_0x25a8('0x2e')],_0x7e9877['filters']),_0x2a081f);if(_0x352a0e[_0x25a8('0x2e')][_0x25a8('0x37')]){_0x2aa4af[_0x25a8('0x38')]=_[_0x25a8('0x39')](_0x2aa4af['where'],{'$or':_[_0x25a8('0x2d')](_0x2a081f,function(_0x5d0733){if(_0x5d0733[_0x25a8('0x2a')]!==_0x25a8('0x3a')){var _0x1c5eb6={};_0x1c5eb6[_0x5d0733[_0x25a8('0x25')]]={'$like':'%'+_0x352a0e['query'][_0x25a8('0x37')]+'%'};return _0x1c5eb6;}})});}_0x2aa4af=_[_0x25a8('0x39')]({},_0x2aa4af,_0x352a0e[_0x25a8('0x3b')]);var _0x37bd35={'where':_0x2aa4af['where']};return db[_0x25a8('0x3c')][_0x25a8('0x1a')](_0x37bd35)[_0x25a8('0x21')](function(_0x4aef0c){_0x374930['count']=_0x4aef0c;if(_0x352a0e[_0x25a8('0x2e')][_0x25a8('0x3d')]){_0x2aa4af[_0x25a8('0x3e')]=[{'all':!![]}];}return db[_0x25a8('0x3c')][_0x25a8('0x3f')](_0x2aa4af);})[_0x25a8('0x21')](function(_0x609a01){_0x374930[_0x25a8('0x40')]=_0x609a01;return _0x374930;})['then'](respondWithFilteredResult(_0x566082,_0x2aa4af))[_0x25a8('0x41')](handleError(_0x566082,null));};exports[_0x25a8('0x42')]=function(_0xf49fd3,_0x547276){var _0x3ca014={'raw':!![],'where':{'id':_0xf49fd3[_0x25a8('0x43')]['id']}},_0x740e37={};_0x740e37[_0x25a8('0x2c')]=_[_0x25a8('0x2f')](db[_0x25a8('0x3c')]['rawAttributes']);_0x740e37[_0x25a8('0x2e')]=_['keys'](_0xf49fd3[_0x25a8('0x2e')]);_0x740e37[_0x25a8('0x30')]=_['intersection'](_0x740e37[_0x25a8('0x2c')],_0x740e37[_0x25a8('0x2e')]);_0x3ca014[_0x25a8('0x32')]=_[_0x25a8('0x31')](_0x740e37['model'],qs[_0x25a8('0x33')](_0xf49fd3['query'][_0x25a8('0x33')]));_0x3ca014[_0x25a8('0x32')]=_0x3ca014[_0x25a8('0x32')][_0x25a8('0x44')]?_0x3ca014[_0x25a8('0x32')]:_0x740e37[_0x25a8('0x2c')];if(_0xf49fd3['query']['includeAll']){_0x3ca014['include']=[{'all':!![]}];}_0x3ca014=_['merge']({},_0x3ca014,_0xf49fd3[_0x25a8('0x3b')]);return db['OpenchannelQueueReport']['find'](_0x3ca014)[_0x25a8('0x21')](handleEntityNotFound(_0x547276,null))[_0x25a8('0x21')](respondWithResult(_0x547276,null))['catch'](handleError(_0x547276,null));};exports[_0x25a8('0x45')]=function(_0x511e41,_0x20f7b6){return db[_0x25a8('0x3c')][_0x25a8('0x45')](_0x511e41[_0x25a8('0x46')],{})['then'](respondWithResult(_0x20f7b6,0xc9))[_0x25a8('0x41')](handleError(_0x20f7b6,null));};exports['update']=function(_0x128758,_0x3b0c2d){if(_0x128758[_0x25a8('0x46')]['id']){delete _0x128758[_0x25a8('0x46')]['id'];}return db['OpenchannelQueueReport'][_0x25a8('0x47')]({'where':{'id':_0x128758['params']['id']}})['then'](handleEntityNotFound(_0x3b0c2d,null))['then'](saveUpdates(_0x128758[_0x25a8('0x46')],null))[_0x25a8('0x21')](respondWithResult(_0x3b0c2d,null))[_0x25a8('0x41')](handleError(_0x3b0c2d,null));};exports[_0x25a8('0x48')]=function(_0x28ae35,_0x1ba563){return db['OpenchannelQueueReport']['find']({'where':{'id':_0x28ae35[_0x25a8('0x43')]['id']}})[_0x25a8('0x21')](handleEntityNotFound(_0x1ba563,null))[_0x25a8('0x21')](removeEntity(_0x1ba563,null))[_0x25a8('0x41')](handleError(_0x1ba563,null));};exports['describe']=function(_0x2ba9ac,_0x3e02be){return db['OpenchannelQueueReport'][_0x25a8('0x49')]()[_0x25a8('0x21')](respondWithResult(_0x3e02be,null))['catch'](handleError(_0x3e02be,null));};
\ No newline at end of file
index b5ae27e..2c3383c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x814b,0x1a2));var _0xb814=function(_0x36f243,_0x188505){_0x36f243=_0x36f243-0x0;var _0x426436=_0x814b[_0x36f243];return _0x426436;};'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
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x1cede8,_0x59ae15){var _0x2d83c3=function(_0x4b5e7a){while(--_0x4b5e7a){_0x1cede8['push'](_0x1cede8['shift']());}};_0x2d83c3(++_0x59ae15);}(_0x326f,0xd1));var _0xf326=function(_0x3625ab,_0x180bb3){_0x3625ab=_0x3625ab-0x0;var _0x2fe8f9=_0x326f[_0x3625ab];return _0x2fe8f9;};'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 d7ed658..29f23e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793b=['debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','stringify','UpdateOpenchannelQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x793b,0x189));var _0xb793=function(_0xa84f25,_0x585f6e){_0xa84f25=_0xa84f25-0x0;var _0x44104d=_0x793b[_0xa84f25];return _0x44104d;};'use strict';var _=require(_0xb793('0x0'));var util=require(_0xb793('0x1'));var moment=require(_0xb793('0x2'));var BPromise=require(_0xb793('0x3'));var rs=require(_0xb793('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb793('0x5'))['db'];var utils=require(_0xb793('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb793('0x7'));var jayson=require(_0xb793('0x8'));var client=jayson[_0xb793('0x9')][_0xb793('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39f110,_0x42d0c7,_0x134ac4){return new BPromise(function(_0x23a718,_0x149720){return client[_0xb793('0xb')](_0x39f110,_0x134ac4)[_0xb793('0xc')](function(_0x22c9ea){logger[_0xb793('0xd')](_0xb793('0xe'),_0x42d0c7,'request\x20sent');logger[_0xb793('0xf')](_0xb793('0x10'),_0x42d0c7,'request\x20sent',JSON['stringify'](_0x22c9ea));if(_0x22c9ea[_0xb793('0x11')]){if(_0x22c9ea[_0xb793('0x11')]['code']===0x1f4){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea['error'][_0xb793('0x12')]);return _0x149720(_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);}logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);return _0x23a718(_0x22c9ea['error'][_0xb793('0x12')]);}else{logger['info']('OpenchannelQueueReport,\x20%s,\x20%s',_0x42d0c7,_0xb793('0x13'));_0x23a718(_0x22c9ea[_0xb793('0x14')][_0xb793('0x12')]);}})[_0xb793('0x15')](function(_0x38d9f2){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x38d9f2);_0x149720(_0x38d9f2);});});}exports[_0xb793('0x16')]=function(_0x977026){var _0x2914a2=this;return new Promise(function(_0x2c9e87,_0x101162){return db[_0xb793('0x17')][_0xb793('0x18')](_0x977026[_0xb793('0x19')],{'raw':_0x977026[_0xb793('0x1a')]?_0x977026['options'][_0xb793('0x1b')]===undefined?!![]:![]:!![]})[_0xb793('0xc')](function(_0x54bfd4){logger[_0xb793('0xd')](_0xb793('0x16'),_0x977026);logger[_0xb793('0xf')](_0xb793('0x16'),_0x977026,JSON[_0xb793('0x1c')](_0x54bfd4));_0x2c9e87(_0x54bfd4);})['catch'](function(_0x5ecf9c){logger[_0xb793('0x11')](_0xb793('0x16'),_0x5ecf9c[_0xb793('0x12')],_0x977026);_0x101162(_0x2914a2[_0xb793('0x11')](0x1f4,_0x5ecf9c[_0xb793('0x12')]));});});};exports[_0xb793('0x1d')]=function(_0x4d4544){var _0x1e470c=this;return new Promise(function(_0x503d69,_0x10947e){return db[_0xb793('0x17')][_0xb793('0x1e')](_0x4d4544[_0xb793('0x19')],{'raw':_0x4d4544[_0xb793('0x1a')]?_0x4d4544[_0xb793('0x1a')][_0xb793('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d4544['options']?_0x4d4544[_0xb793('0x1a')][_0xb793('0x1f')]||null:null,'attributes':_0x4d4544[_0xb793('0x1a')]?_0x4d4544[_0xb793('0x1a')][_0xb793('0x20')]||null:null,'limit':_0x4d4544[_0xb793('0x1a')]?_0x4d4544['options'][_0xb793('0x21')]||null:null})[_0xb793('0xc')](function(_0x107d78){logger['info'](_0xb793('0x1d'),_0x4d4544);logger[_0xb793('0xf')](_0xb793('0x1d'),_0x4d4544,JSON[_0xb793('0x1c')](_0x107d78));_0x503d69(_0x107d78);})['catch'](function(_0x493a8c){logger[_0xb793('0x11')]('UpdateOpenchannelQueueReport',_0x493a8c['message'],_0x4d4544);_0x10947e(_0x1e470c[_0xb793('0x11')](0x1f4,_0x493a8c[_0xb793('0x12')]));});});};
\ No newline at end of file
+var _0xf65d=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','http','request','then','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','stringify','UpdateOpenchannelQueueReport','update','raw','attributes','limit','lodash'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xf65d,0x9f));var _0xdf65=function(_0x49c5b0,_0xca8692){_0x49c5b0=_0x49c5b0-0x0;var _0x4efb64=_0xf65d[_0x49c5b0];return _0x4efb64;};'use strict';var _=require(_0xdf65('0x0'));var util=require('util');var moment=require(_0xdf65('0x1'));var BPromise=require(_0xdf65('0x2'));var rs=require(_0xdf65('0x3'));var fs=require('fs');var Redis=require(_0xdf65('0x4'));var db=require(_0xdf65('0x5'))['db'];var utils=require(_0xdf65('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xdf65('0x7'));var client=jayson['client'][_0xdf65('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33efa2,_0x4c4054,_0x40cc08){return new BPromise(function(_0x3f5cae,_0x97292b){return client[_0xdf65('0x9')](_0x33efa2,_0x40cc08)[_0xdf65('0xa')](function(_0x46a70d){logger['info'](_0xdf65('0xb'),_0x4c4054,'request\x20sent');logger[_0xdf65('0xc')](_0xdf65('0xd'),_0x4c4054,_0xdf65('0xe'),JSON['stringify'](_0x46a70d));if(_0x46a70d['error']){if(_0x46a70d[_0xdf65('0xf')][_0xdf65('0x10')]===0x1f4){logger[_0xdf65('0xf')](_0xdf65('0xb'),_0x4c4054,_0x46a70d[_0xdf65('0xf')][_0xdf65('0x11')]);return _0x97292b(_0x46a70d['error'][_0xdf65('0x11')]);}logger[_0xdf65('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4c4054,_0x46a70d['error']['message']);return _0x3f5cae(_0x46a70d[_0xdf65('0xf')][_0xdf65('0x11')]);}else{logger[_0xdf65('0x12')](_0xdf65('0xb'),_0x4c4054,_0xdf65('0xe'));_0x3f5cae(_0x46a70d[_0xdf65('0x13')][_0xdf65('0x11')]);}})[_0xdf65('0x14')](function(_0x208b93){logger[_0xdf65('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4c4054,_0x208b93);_0x97292b(_0x208b93);});});}exports[_0xdf65('0x15')]=function(_0x532215){var _0x28fcd1=this;return new Promise(function(_0x3a175b,_0x2337da){return db[_0xdf65('0x16')][_0xdf65('0x17')](_0x532215[_0xdf65('0x18')],{'raw':_0x532215['options']?_0x532215[_0xdf65('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xdf65('0xa')](function(_0x299ed3){logger[_0xdf65('0x12')](_0xdf65('0x15'),_0x532215);logger[_0xdf65('0xc')]('CreateOpenchannelQueueReport',_0x532215,JSON[_0xdf65('0x1a')](_0x299ed3));_0x3a175b(_0x299ed3);})[_0xdf65('0x14')](function(_0x5ee78d){logger[_0xdf65('0xf')](_0xdf65('0x15'),_0x5ee78d[_0xdf65('0x11')],_0x532215);_0x2337da(_0x28fcd1[_0xdf65('0xf')](0x1f4,_0x5ee78d['message']));});});};exports[_0xdf65('0x1b')]=function(_0x2eff40){var _0x5cfe90=this;return new Promise(function(_0x5ae6a3,_0x14a54c){return db[_0xdf65('0x16')][_0xdf65('0x1c')](_0x2eff40['body'],{'raw':_0x2eff40['options']?_0x2eff40[_0xdf65('0x19')][_0xdf65('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2eff40['options']?_0x2eff40['options']['where']||null:null,'attributes':_0x2eff40[_0xdf65('0x19')]?_0x2eff40['options'][_0xdf65('0x1e')]||null:null,'limit':_0x2eff40['options']?_0x2eff40[_0xdf65('0x19')][_0xdf65('0x1f')]||null:null})[_0xdf65('0xa')](function(_0x2cca76){logger[_0xdf65('0x12')](_0xdf65('0x1b'),_0x2eff40);logger[_0xdf65('0xc')](_0xdf65('0x1b'),_0x2eff40,JSON[_0xdf65('0x1a')](_0x2cca76));_0x5ae6a3(_0x2cca76);})[_0xdf65('0x14')](function(_0x4507f1){logger['error']('UpdateOpenchannelQueueReport',_0x4507f1[_0xdf65('0x11')],_0x2eff40);_0x14a54c(_0x5cfe90[_0xdf65('0xf')](0x1f4,_0x4507f1[_0xdf65('0x11')]));});});};
\ No newline at end of file
index efd2d20..a6af9e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe93f=['../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra'];(function(_0x48d6a3,_0x37c848){var _0x38bfa0=function(_0x3fba2e){while(--_0x3fba2e){_0x48d6a3['push'](_0x48d6a3['shift']());}};_0x38bfa0(++_0x37c848);}(_0xe93f,0x175));var _0xfe93=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe93f[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xfe93('0x0'));var util=require(_0xfe93('0x1'));var path=require(_0xfe93('0x2'));var timeout=require(_0xfe93('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xfe93('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe93('0x5'));var config=require(_0xfe93('0x6'));var controller=require(_0xfe93('0x7'));router[_0xfe93('0x8')]('/',auth[_0xfe93('0x9')](),controller[_0xfe93('0xa')]);router[_0xfe93('0x8')](_0xfe93('0xb'),auth[_0xfe93('0x9')](),controller[_0xfe93('0xc')]);router['get'](_0xfe93('0xd'),auth[_0xfe93('0x9')](),controller[_0xfe93('0xe')]);router[_0xfe93('0xf')]('/',auth[_0xfe93('0x9')](),controller[_0xfe93('0x10')]);router[_0xfe93('0x11')](_0xfe93('0xd'),auth[_0xfe93('0x9')](),controller['update']);router[_0xfe93('0x12')](_0xfe93('0xd'),auth[_0xfe93('0x9')](),controller[_0xfe93('0x13')]);module[_0xfe93('0x14')]=router;
\ No newline at end of file
+var _0xae20=['delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','./openchannelTransferReport.controller','get','/describe','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x200eb7,_0x54c3fd){var _0x922a49=function(_0x2caa33){while(--_0x2caa33){_0x200eb7['push'](_0x200eb7['shift']());}};_0x922a49(++_0x54c3fd);}(_0xae20,0x123));var _0x0ae2=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xae20[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0x0ae2('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0ae2('0x1'));var router=express[_0x0ae2('0x2')]();var fs_extra=require(_0x0ae2('0x3'));var auth=require(_0x0ae2('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0ae2('0x5'));router[_0x0ae2('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0ae2('0x6')](_0x0ae2('0x7'),auth[_0x0ae2('0x8')](),controller['describe']);router[_0x0ae2('0x6')](_0x0ae2('0x9'),auth['isAuthenticated'](),controller[_0x0ae2('0xa')]);router[_0x0ae2('0xb')]('/',auth[_0x0ae2('0x8')](),controller[_0x0ae2('0xc')]);router[_0x0ae2('0xd')](_0x0ae2('0x9'),auth[_0x0ae2('0x8')](),controller[_0x0ae2('0xe')]);router[_0x0ae2('0xf')](_0x0ae2('0x9'),auth['isAuthenticated'](),controller[_0x0ae2('0x10')]);module[_0x0ae2('0x11')]=router;
\ No newline at end of file
index 0656889..659d20f 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(_0x9851cd,_0x3bd125){var _0x2d5ba6=function(_0x282953){while(--_0x282953){_0x9851cd['push'](_0x9851cd['shift']());}};_0x2d5ba6(++_0x3bd125);}(_0xe706,0xa3));var _0x6e70=function(_0x4bb593,_0x272ed0){_0x4bb593=_0x4bb593-0x0;var _0x2da2d8=_0xe706[_0x4bb593];return _0x2da2d8;};'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 _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x139a25,_0x1707d7){var _0x330a62=function(_0x3092b4){while(--_0x3092b4){_0x139a25['push'](_0x139a25['shift']());}};_0x330a62(++_0x1707d7);}(_0x008c,0x188));var _0xc008=function(_0xdaab62,_0x2728ab){_0xdaab62=_0xdaab62-0x0;var _0x13d767=_0x008c[_0xdaab62];return _0x13d767;};'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
index 523fc7c..7ba401a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd5e=['hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','name','filter','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','zip-dir','request-promise','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','error','send','index','map','OpenchannelTransferReport','key','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x460d01,_0x1883ed){var _0x7aabd=function(_0x14fc63){while(--_0x14fc63){_0x460d01['push'](_0x460d01['shift']());}};_0x7aabd(++_0x1883ed);}(_0xdd5e,0x173));var _0xedd5=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xdd5e[_0x3899d1];return _0xeb4a7d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xedd5('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xedd5('0x1'));var moment=require('moment');var BPromise=require(_0xedd5('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0xedd5('0x3'));var sox=require(_0xedd5('0x4'));var csv=require(_0xedd5('0x5'));var ejs=require(_0xedd5('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xedd5('0x7'));var squel=require(_0xedd5('0x8'));var crypto=require(_0xedd5('0x9'));var jsforce=require(_0xedd5('0xa'));var deskjs=require(_0xedd5('0xb'));var toCsv=require(_0xedd5('0x5'));var querystring=require(_0xedd5('0xc'));var Papa=require(_0xedd5('0xd'));var Redis=require(_0xedd5('0xe'));var authService=require(_0xedd5('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xedd5('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xedd5('0x11'));var config=require(_0xedd5('0x12'));var licenseUtil=require(_0xedd5('0x13'));var db=require(_0xedd5('0x14'))['db'];function respondWithStatusCode(_0x2fa104,_0x55648d){_0x55648d=_0x55648d||0xcc;return function(_0x4a722b){if(_0x4a722b){return _0x2fa104[_0xedd5('0x15')](_0x55648d);}return _0x2fa104[_0xedd5('0x16')](_0x55648d)[_0xedd5('0x17')]();};}function respondWithResult(_0x18e975,_0x543763){_0x543763=_0x543763||0xc8;return function(_0x581597){if(_0x581597){return _0x18e975['status'](_0x543763)['json'](_0x581597);}};}function respondWithFilteredResult(_0x557474,_0x1300be){return function(_0x35f2a0){if(_0x35f2a0){var _0x3a9427=typeof _0x1300be[_0xedd5('0x18')]===_0xedd5('0x19')&&typeof _0x1300be[_0xedd5('0x1a')]===_0xedd5('0x19');var _0x1063f7=_0x35f2a0[_0xedd5('0x1b')];var _0x27af3f=_0x3a9427?0x0:_0x1300be[_0xedd5('0x18')];var _0x3a93e4=_0x3a9427?_0x35f2a0[_0xedd5('0x1b')]:_0x1300be[_0xedd5('0x18')]+_0x1300be['limit'];var _0x3a9625;if(_0x3a93e4>=_0x1063f7){_0x3a93e4=_0x1063f7;_0x3a9625=0xc8;}else{_0x3a9625=0xce;}_0x557474[_0xedd5('0x16')](_0x3a9625);return _0x557474[_0xedd5('0x1c')](_0xedd5('0x1d'),_0x27af3f+'-'+_0x3a93e4+'/'+_0x1063f7)[_0xedd5('0x1e')](_0x35f2a0);}return null;};}function patchUpdates(_0x4983f6){return function(_0x10bc5f){try{jsonpatch[_0xedd5('0x1f')](_0x10bc5f,_0x4983f6,!![]);}catch(_0x58523d){return BPromise[_0xedd5('0x20')](_0x58523d);}return _0x10bc5f['save']();};}function saveUpdates(_0x4adc1c,_0xa773ea){return function(_0x4b2d2b){if(_0x4b2d2b){return _0x4b2d2b[_0xedd5('0x21')](_0x4adc1c)[_0xedd5('0x22')](function(_0x1a9960){return _0x1a9960;});}return null;};}function removeEntity(_0x14ec60,_0x311126){return function(_0x4d2550){if(_0x4d2550){return _0x4d2550['destroy']()['then'](function(){_0x14ec60[_0xedd5('0x16')](0xcc)[_0xedd5('0x17')]();});}};}function handleEntityNotFound(_0x515c69,_0x2be135){return function(_0x354547){if(!_0x354547){_0x515c69['sendStatus'](0x194);}return _0x354547;};}function handleError(_0x20bf04,_0x854e3e){_0x854e3e=_0x854e3e||0x1f4;return function(_0x2a41b1){logger[_0xedd5('0x23')](_0x2a41b1['stack']);if(_0x2a41b1['name']){delete _0x2a41b1['name'];}_0x20bf04[_0xedd5('0x16')](_0x854e3e)[_0xedd5('0x24')](_0x2a41b1);};}exports[_0xedd5('0x25')]=function(_0x5af25e,_0x5606b3){var _0x26e909={},_0x3774b3={},_0x588d69={'count':0x0,'rows':[]};var _0x31595d=_[_0xedd5('0x26')](db[_0xedd5('0x27')]['rawAttributes'],function(_0x139347){return{'name':_0x139347['fieldName'],'type':_0x139347['type'][_0xedd5('0x28')]};});_0x3774b3[_0xedd5('0x29')]=_[_0xedd5('0x26')](_0x31595d,'name');_0x3774b3['query']=_[_0xedd5('0x2a')](_0x5af25e[_0xedd5('0x2b')]);_0x3774b3[_0xedd5('0x2c')]=_[_0xedd5('0x2d')](_0x3774b3[_0xedd5('0x29')],_0x3774b3[_0xedd5('0x2b')]);_0x26e909[_0xedd5('0x2e')]=_[_0xedd5('0x2d')](_0x3774b3[_0xedd5('0x29')],qs[_0xedd5('0x2f')](_0x5af25e[_0xedd5('0x2b')][_0xedd5('0x2f')]));_0x26e909[_0xedd5('0x2e')]=_0x26e909[_0xedd5('0x2e')][_0xedd5('0x30')]?_0x26e909['attributes']:_0x3774b3[_0xedd5('0x29')];if(!_0x5af25e[_0xedd5('0x2b')][_0xedd5('0x31')](_0xedd5('0x32'))){_0x26e909[_0xedd5('0x1a')]=qs[_0xedd5('0x1a')](_0x5af25e['query'][_0xedd5('0x1a')]);_0x26e909[_0xedd5('0x18')]=qs[_0xedd5('0x18')](_0x5af25e[_0xedd5('0x2b')][_0xedd5('0x18')]);}_0x26e909['order']=qs[_0xedd5('0x33')](_0x5af25e['query'][_0xedd5('0x33')]);_0x26e909[_0xedd5('0x34')]=qs['filters'](_['pick'](_0x5af25e[_0xedd5('0x2b')],_0x3774b3[_0xedd5('0x2c')]),_0x31595d);if(_0x5af25e[_0xedd5('0x2b')]['filter']){_0x26e909[_0xedd5('0x34')]=_[_0xedd5('0x35')](_0x26e909[_0xedd5('0x34')],{'$or':_['map'](_0x31595d,function(_0x246c8b){if(_0x246c8b[_0xedd5('0x36')]!==_0xedd5('0x37')){var _0x504fd3={};_0x504fd3[_0x246c8b[_0xedd5('0x38')]]={'$like':'%'+_0x5af25e['query'][_0xedd5('0x39')]+'%'};return _0x504fd3;}})});}_0x26e909=_['merge']({},_0x26e909,_0x5af25e[_0xedd5('0x3a')]);var _0x25dc21={'where':_0x26e909[_0xedd5('0x34')]};return db['OpenchannelTransferReport']['count'](_0x25dc21)['then'](function(_0x349698){_0x588d69['count']=_0x349698;if(_0x5af25e[_0xedd5('0x2b')][_0xedd5('0x3b')]){_0x26e909['include']=[{'all':!![]}];}return db[_0xedd5('0x27')][_0xedd5('0x3c')](_0x26e909);})[_0xedd5('0x22')](function(_0x41391c){_0x588d69[_0xedd5('0x3d')]=_0x41391c;return _0x588d69;})[_0xedd5('0x22')](respondWithFilteredResult(_0x5606b3,_0x26e909))[_0xedd5('0x3e')](handleError(_0x5606b3,null));};exports[_0xedd5('0x3f')]=function(_0x5d9aac,_0x13925f){var _0x52d98b={'raw':!![],'where':{'id':_0x5d9aac[_0xedd5('0x40')]['id']}},_0x40ff19={};_0x40ff19['model']=_[_0xedd5('0x2a')](db[_0xedd5('0x27')]['rawAttributes']);_0x40ff19[_0xedd5('0x2b')]=_['keys'](_0x5d9aac['query']);_0x40ff19['filters']=_[_0xedd5('0x2d')](_0x40ff19['model'],_0x40ff19[_0xedd5('0x2b')]);_0x52d98b[_0xedd5('0x2e')]=_[_0xedd5('0x2d')](_0x40ff19[_0xedd5('0x29')],qs[_0xedd5('0x2f')](_0x5d9aac[_0xedd5('0x2b')]['fields']));_0x52d98b['attributes']=_0x52d98b[_0xedd5('0x2e')][_0xedd5('0x30')]?_0x52d98b[_0xedd5('0x2e')]:_0x40ff19[_0xedd5('0x29')];if(_0x5d9aac['query'][_0xedd5('0x3b')]){_0x52d98b[_0xedd5('0x41')]=[{'all':!![]}];}_0x52d98b=_[_0xedd5('0x35')]({},_0x52d98b,_0x5d9aac['options']);return db[_0xedd5('0x27')][_0xedd5('0x42')](_0x52d98b)[_0xedd5('0x22')](handleEntityNotFound(_0x13925f,null))[_0xedd5('0x22')](respondWithResult(_0x13925f,null))[_0xedd5('0x3e')](handleError(_0x13925f,null));};exports[_0xedd5('0x43')]=function(_0x35d4f1,_0x28245e){return db[_0xedd5('0x27')]['create'](_0x35d4f1[_0xedd5('0x44')],{})[_0xedd5('0x22')](respondWithResult(_0x28245e,0xc9))[_0xedd5('0x3e')](handleError(_0x28245e,null));};exports[_0xedd5('0x21')]=function(_0xc3c9f2,_0x3e671e){if(_0xc3c9f2[_0xedd5('0x44')]['id']){delete _0xc3c9f2[_0xedd5('0x44')]['id'];}return db[_0xedd5('0x27')][_0xedd5('0x42')]({'where':{'id':_0xc3c9f2[_0xedd5('0x40')]['id']}})[_0xedd5('0x22')](handleEntityNotFound(_0x3e671e,null))['then'](saveUpdates(_0xc3c9f2[_0xedd5('0x44')],null))[_0xedd5('0x22')](respondWithResult(_0x3e671e,null))[_0xedd5('0x3e')](handleError(_0x3e671e,null));};exports['destroy']=function(_0x5ad27d,_0x571b72){return db[_0xedd5('0x27')][_0xedd5('0x42')]({'where':{'id':_0x5ad27d[_0xedd5('0x40')]['id']}})['then'](handleEntityNotFound(_0x571b72,null))[_0xedd5('0x22')](removeEntity(_0x571b72,null))[_0xedd5('0x3e')](handleError(_0x571b72,null));};exports['describe']=function(_0x27c6fc,_0x3f8e0d){return db['OpenchannelTransferReport'][_0xedd5('0x45')]()[_0xedd5('0x22')](respondWithResult(_0x3f8e0d,null))['catch'](handleError(_0x3f8e0d,null));};
\ No newline at end of file
+var _0xed41=['type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','pick','filter','where','merge','OpenchannelTransferReport','then','includeAll','include','rows','catch','show','params','length','options','find','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','destroy','error','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0x191c44,_0x20a896){var _0x1086cd=function(_0x2e2cac){while(--_0x2e2cac){_0x191c44['push'](_0x191c44['shift']());}};_0x1086cd(++_0x20a896);}(_0xed41,0x65));var _0x1ed4=function(_0x522c99,_0x5919e1){_0x522c99=_0x522c99-0x0;var _0x29b899=_0xed41[_0x522c99];return _0x29b899;};'use strict';var emlformat=require(_0x1ed4('0x0'));var rimraf=require(_0x1ed4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1ed4('0x2'));var rp=require(_0x1ed4('0x3'));var moment=require(_0x1ed4('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1ed4('0x5'));var path=require(_0x1ed4('0x6'));var sox=require(_0x1ed4('0x7'));var csv=require(_0x1ed4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ed4('0x9'));var _=require(_0x1ed4('0xa'));var squel=require('squel');var crypto=require(_0x1ed4('0xb'));var jsforce=require(_0x1ed4('0xc'));var deskjs=require(_0x1ed4('0xd'));var toCsv=require(_0x1ed4('0x8'));var querystring=require(_0x1ed4('0xe'));var Papa=require(_0x1ed4('0xf'));var Redis=require('ioredis');var authService=require(_0x1ed4('0x10'));var qs=require(_0x1ed4('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1ed4('0x12'));var logger=require(_0x1ed4('0x13'))(_0x1ed4('0x14'));var utils=require('../../config/utils');var config=require(_0x1ed4('0x15'));var licenseUtil=require(_0x1ed4('0x16'));var db=require(_0x1ed4('0x17'))['db'];function respondWithStatusCode(_0x402f07,_0x4cb040){_0x4cb040=_0x4cb040||0xcc;return function(_0x3cfe24){if(_0x3cfe24){return _0x402f07[_0x1ed4('0x18')](_0x4cb040);}return _0x402f07[_0x1ed4('0x19')](_0x4cb040)[_0x1ed4('0x1a')]();};}function respondWithResult(_0x1e47e1,_0x3d48de){_0x3d48de=_0x3d48de||0xc8;return function(_0x2e53f2){if(_0x2e53f2){return _0x1e47e1['status'](_0x3d48de)['json'](_0x2e53f2);}};}function respondWithFilteredResult(_0x49834a,_0x5083e4){return function(_0x430332){if(_0x430332){var _0x4673ae=typeof _0x5083e4[_0x1ed4('0x1b')]===_0x1ed4('0x1c')&&typeof _0x5083e4[_0x1ed4('0x1d')]===_0x1ed4('0x1c');var _0x172950=_0x430332[_0x1ed4('0x1e')];var _0x3175b1=_0x4673ae?0x0:_0x5083e4['offset'];var _0x4ecf45=_0x4673ae?_0x430332[_0x1ed4('0x1e')]:_0x5083e4[_0x1ed4('0x1b')]+_0x5083e4[_0x1ed4('0x1d')];var _0x8f1cfa;if(_0x4ecf45>=_0x172950){_0x4ecf45=_0x172950;_0x8f1cfa=0xc8;}else{_0x8f1cfa=0xce;}_0x49834a[_0x1ed4('0x19')](_0x8f1cfa);return _0x49834a[_0x1ed4('0x1f')]('Content-Range',_0x3175b1+'-'+_0x4ecf45+'/'+_0x172950)[_0x1ed4('0x20')](_0x430332);}return null;};}function patchUpdates(_0x481678){return function(_0x573f00){try{jsonpatch[_0x1ed4('0x21')](_0x573f00,_0x481678,!![]);}catch(_0xa8ff7b){return BPromise[_0x1ed4('0x22')](_0xa8ff7b);}return _0x573f00[_0x1ed4('0x23')]();};}function saveUpdates(_0x5a8a72,_0x23f0d6){return function(_0x415893){if(_0x415893){return _0x415893['update'](_0x5a8a72)['then'](function(_0x5cd8e7){return _0x5cd8e7;});}return null;};}function removeEntity(_0x218a68,_0x3b590d){return function(_0x1078ba){if(_0x1078ba){return _0x1078ba[_0x1ed4('0x24')]()['then'](function(){_0x218a68[_0x1ed4('0x19')](0xcc)[_0x1ed4('0x1a')]();});}};}function handleEntityNotFound(_0xb443aa,_0x7bb508){return function(_0x52bdc3){if(!_0x52bdc3){_0xb443aa[_0x1ed4('0x18')](0x194);}return _0x52bdc3;};}function handleError(_0xea5371,_0x374999){_0x374999=_0x374999||0x1f4;return function(_0x4a39c){logger[_0x1ed4('0x25')](_0x4a39c[_0x1ed4('0x26')]);if(_0x4a39c[_0x1ed4('0x27')]){delete _0x4a39c[_0x1ed4('0x27')];}_0xea5371['status'](_0x374999)[_0x1ed4('0x28')](_0x4a39c);};}exports[_0x1ed4('0x29')]=function(_0xa582f2,_0x36f210){var _0x5148cb={},_0xb3257d={},_0x46f3ea={'count':0x0,'rows':[]};var _0x42de8b=_[_0x1ed4('0x2a')](db['OpenchannelTransferReport'][_0x1ed4('0x2b')],function(_0x53f504){return{'name':_0x53f504[_0x1ed4('0x2c')],'type':_0x53f504[_0x1ed4('0x2d')][_0x1ed4('0x2e')]};});_0xb3257d[_0x1ed4('0x2f')]=_[_0x1ed4('0x2a')](_0x42de8b,_0x1ed4('0x27'));_0xb3257d['query']=_[_0x1ed4('0x30')](_0xa582f2[_0x1ed4('0x31')]);_0xb3257d[_0x1ed4('0x32')]=_[_0x1ed4('0x33')](_0xb3257d[_0x1ed4('0x2f')],_0xb3257d[_0x1ed4('0x31')]);_0x5148cb[_0x1ed4('0x34')]=_[_0x1ed4('0x33')](_0xb3257d[_0x1ed4('0x2f')],qs[_0x1ed4('0x35')](_0xa582f2[_0x1ed4('0x31')][_0x1ed4('0x35')]));_0x5148cb[_0x1ed4('0x34')]=_0x5148cb[_0x1ed4('0x34')]['length']?_0x5148cb[_0x1ed4('0x34')]:_0xb3257d[_0x1ed4('0x2f')];if(!_0xa582f2[_0x1ed4('0x31')][_0x1ed4('0x36')]('nolimit')){_0x5148cb[_0x1ed4('0x1d')]=qs[_0x1ed4('0x1d')](_0xa582f2[_0x1ed4('0x31')][_0x1ed4('0x1d')]);_0x5148cb[_0x1ed4('0x1b')]=qs[_0x1ed4('0x1b')](_0xa582f2[_0x1ed4('0x31')][_0x1ed4('0x1b')]);}_0x5148cb['order']=qs['sort'](_0xa582f2['query']['sort']);_0x5148cb['where']=qs['filters'](_[_0x1ed4('0x37')](_0xa582f2[_0x1ed4('0x31')],_0xb3257d[_0x1ed4('0x32')]),_0x42de8b);if(_0xa582f2['query'][_0x1ed4('0x38')]){_0x5148cb[_0x1ed4('0x39')]=_[_0x1ed4('0x3a')](_0x5148cb[_0x1ed4('0x39')],{'$or':_['map'](_0x42de8b,function(_0x6e0bce){if(_0x6e0bce['type']!=='VIRTUAL'){var _0x584147={};_0x584147[_0x6e0bce['name']]={'$like':'%'+_0xa582f2['query'][_0x1ed4('0x38')]+'%'};return _0x584147;}})});}_0x5148cb=_[_0x1ed4('0x3a')]({},_0x5148cb,_0xa582f2['options']);var _0x477d0d={'where':_0x5148cb[_0x1ed4('0x39')]};return db[_0x1ed4('0x3b')]['count'](_0x477d0d)[_0x1ed4('0x3c')](function(_0x118165){_0x46f3ea['count']=_0x118165;if(_0xa582f2[_0x1ed4('0x31')][_0x1ed4('0x3d')]){_0x5148cb[_0x1ed4('0x3e')]=[{'all':!![]}];}return db[_0x1ed4('0x3b')]['findAll'](_0x5148cb);})['then'](function(_0x2f35f3){_0x46f3ea[_0x1ed4('0x3f')]=_0x2f35f3;return _0x46f3ea;})[_0x1ed4('0x3c')](respondWithFilteredResult(_0x36f210,_0x5148cb))[_0x1ed4('0x40')](handleError(_0x36f210,null));};exports[_0x1ed4('0x41')]=function(_0x141895,_0x10509e){var _0x34edb6={'raw':!![],'where':{'id':_0x141895[_0x1ed4('0x42')]['id']}},_0x4d6418={};_0x4d6418[_0x1ed4('0x2f')]=_[_0x1ed4('0x30')](db[_0x1ed4('0x3b')][_0x1ed4('0x2b')]);_0x4d6418['query']=_[_0x1ed4('0x30')](_0x141895['query']);_0x4d6418[_0x1ed4('0x32')]=_[_0x1ed4('0x33')](_0x4d6418[_0x1ed4('0x2f')],_0x4d6418['query']);_0x34edb6['attributes']=_[_0x1ed4('0x33')](_0x4d6418[_0x1ed4('0x2f')],qs[_0x1ed4('0x35')](_0x141895[_0x1ed4('0x31')][_0x1ed4('0x35')]));_0x34edb6['attributes']=_0x34edb6[_0x1ed4('0x34')][_0x1ed4('0x43')]?_0x34edb6[_0x1ed4('0x34')]:_0x4d6418['model'];if(_0x141895['query'][_0x1ed4('0x3d')]){_0x34edb6['include']=[{'all':!![]}];}_0x34edb6=_[_0x1ed4('0x3a')]({},_0x34edb6,_0x141895[_0x1ed4('0x44')]);return db[_0x1ed4('0x3b')][_0x1ed4('0x45')](_0x34edb6)[_0x1ed4('0x3c')](handleEntityNotFound(_0x10509e,null))[_0x1ed4('0x3c')](respondWithResult(_0x10509e,null))[_0x1ed4('0x40')](handleError(_0x10509e,null));};exports['create']=function(_0x3a1bc8,_0x11e77d){return db['OpenchannelTransferReport']['create'](_0x3a1bc8[_0x1ed4('0x46')],{})[_0x1ed4('0x3c')](respondWithResult(_0x11e77d,0xc9))[_0x1ed4('0x40')](handleError(_0x11e77d,null));};exports[_0x1ed4('0x47')]=function(_0x214087,_0x6f9607){if(_0x214087[_0x1ed4('0x46')]['id']){delete _0x214087[_0x1ed4('0x46')]['id'];}return db[_0x1ed4('0x3b')][_0x1ed4('0x45')]({'where':{'id':_0x214087['params']['id']}})[_0x1ed4('0x3c')](handleEntityNotFound(_0x6f9607,null))['then'](saveUpdates(_0x214087[_0x1ed4('0x46')],null))['then'](respondWithResult(_0x6f9607,null))[_0x1ed4('0x40')](handleError(_0x6f9607,null));};exports[_0x1ed4('0x24')]=function(_0x2ee3a4,_0x2bc00d){return db[_0x1ed4('0x3b')][_0x1ed4('0x45')]({'where':{'id':_0x2ee3a4[_0x1ed4('0x42')]['id']}})[_0x1ed4('0x3c')](handleEntityNotFound(_0x2bc00d,null))[_0x1ed4('0x3c')](removeEntity(_0x2bc00d,null))[_0x1ed4('0x40')](handleError(_0x2bc00d,null));};exports[_0x1ed4('0x48')]=function(_0x35005c,_0x5bd602){return db[_0x1ed4('0x3b')]['describe']()[_0x1ed4('0x3c')](respondWithResult(_0x5bd602,null))[_0x1ed4('0x40')](handleError(_0x5bd602,null));};
\ No newline at end of file
index ca38879..847638d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf08f=['define','OpenchannelTransferReport','uniqueid','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf08f,0x1d7));var _0xff08=function(_0x2dacca,_0x3b55a5){_0x2dacca=_0x2dacca-0x0;var _0x4e8745=_0xf08f[_0x2dacca];return _0x4e8745;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xff08('0x0'))(_0xff08('0x1'));var moment=require(_0xff08('0x2'));var BPromise=require('bluebird');var rp=require(_0xff08('0x3'));var fs=require('fs');var path=require(_0xff08('0x4'));var rimraf=require(_0xff08('0x5'));var config=require(_0xff08('0x6'));var attributes=require(_0xff08('0x7'));module[_0xff08('0x8')]=function(_0x2e0ed8,_0x3e259e){return _0x2e0ed8[_0xff08('0x9')](_0xff08('0xa'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xff08('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x12dd=['path','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','util','api','moment','bluebird','request-promise'];(function(_0x53110b,_0x5279bf){var _0x4ee197=function(_0x3e3a1a){while(--_0x3e3a1a){_0x53110b['push'](_0x53110b['shift']());}};_0x4ee197(++_0x5279bf);}(_0x12dd,0x1b5));var _0xd12d=function(_0x45ae8c,_0x368f13){_0x45ae8c=_0x45ae8c-0x0;var _0x4a34e0=_0x12dd[_0x45ae8c];return _0x4a34e0;};'use strict';var _=require('lodash');var util=require(_0xd12d('0x0'));var logger=require('../../config/logger')(_0xd12d('0x1'));var moment=require(_0xd12d('0x2'));var BPromise=require(_0xd12d('0x3'));var rp=require(_0xd12d('0x4'));var fs=require('fs');var path=require(_0xd12d('0x5'));var rimraf=require(_0xd12d('0x6'));var config=require(_0xd12d('0x7'));var attributes=require(_0xd12d('0x8'));module['exports']=function(_0x29be29,_0x5b9692){return _0x29be29[_0xd12d('0x9')](_0xd12d('0xa'),attributes,{'tableName':_0xd12d('0xb'),'paranoid':![],'indexes':[{'name':_0xd12d('0xc'),'fields':[_0xd12d('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 540f596..9bbe10c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xf494,0x1c6));var _0x4f49=function(_0x5b76fe,_0x156f0f){_0x5b76fe=_0x5b76fe-0x0;var _0x54ed48=_0xf494[_0x5b76fe];return _0x54ed48;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f49('0x3'));var fs=require('fs');var Redis=require(_0x4f49('0x4'));var db=require(_0x4f49('0x5'))['db'];var utils=require(_0x4f49('0x6'));var logger=require(_0x4f49('0x7'))(_0x4f49('0x8'));var config=require(_0x4f49('0x9'));var jayson=require(_0x4f49('0xa'));var client=jayson[_0x4f49('0xb')][_0x4f49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){return client[_0x4f49('0xd')](_0x42b0e8,_0x58e9a0)[_0x4f49('0xe')](function(_0x185174){logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,_0x4f49('0x11'));logger['debug'](_0x4f49('0x12'),_0x5eb186,_0x4f49('0x11'),JSON['stringify'](_0x185174));if(_0x185174[_0x4f49('0x13')]){if(_0x185174['error']['code']===0x1f4){logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174['error'][_0x4f49('0x14')]);return _0x327bd5(_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);}logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);return _0x169c95(_0x185174['error'][_0x4f49('0x14')]);}else{logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,'request\x20sent');_0x169c95(_0x185174['result'][_0x4f49('0x14')]);}})[_0x4f49('0x15')](function(_0x74886e){logger['error'](_0x4f49('0x10'),_0x5eb186,_0x74886e);_0x327bd5(_0x74886e);});});}
\ No newline at end of file
+var _0x16a6=['OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','then','info'];(function(_0x131a9f,_0x2b1f05){var _0x2a32db=function(_0x1c4c9f){while(--_0x1c4c9f){_0x131a9f['push'](_0x131a9f['shift']());}};_0x2a32db(++_0x2b1f05);}(_0x16a6,0x15c));var _0x616a=function(_0x349148,_0x31eabb){_0x349148=_0x349148-0x0;var _0x2f2b0f=_0x16a6[_0x349148];return _0x2f2b0f;};'use strict';var _=require(_0x616a('0x0'));var util=require(_0x616a('0x1'));var moment=require('moment');var BPromise=require(_0x616a('0x2'));var rs=require(_0x616a('0x3'));var fs=require('fs');var Redis=require(_0x616a('0x4'));var db=require(_0x616a('0x5'))['db'];var utils=require(_0x616a('0x6'));var logger=require(_0x616a('0x7'))('rpc');var config=require(_0x616a('0x8'));var jayson=require(_0x616a('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x938824,_0x455029,_0x574141){return new BPromise(function(_0x4ef45c,_0x19ecf9){return client['request'](_0x938824,_0x574141)[_0x616a('0xa')](function(_0x54dbce){logger[_0x616a('0xb')](_0x616a('0xc'),_0x455029,_0x616a('0xd'));logger['debug'](_0x616a('0xe'),_0x455029,_0x616a('0xd'),JSON[_0x616a('0xf')](_0x54dbce));if(_0x54dbce[_0x616a('0x10')]){if(_0x54dbce[_0x616a('0x10')][_0x616a('0x11')]===0x1f4){logger[_0x616a('0x10')](_0x616a('0xc'),_0x455029,_0x54dbce['error'][_0x616a('0x12')]);return _0x19ecf9(_0x54dbce[_0x616a('0x10')][_0x616a('0x12')]);}logger[_0x616a('0x10')](_0x616a('0xc'),_0x455029,_0x54dbce['error'][_0x616a('0x12')]);return _0x4ef45c(_0x54dbce[_0x616a('0x10')][_0x616a('0x12')]);}else{logger[_0x616a('0xb')](_0x616a('0xc'),_0x455029,'request\x20sent');_0x4ef45c(_0x54dbce[_0x616a('0x13')][_0x616a('0x12')]);}})['catch'](function(_0x5d1981){logger[_0x616a('0x10')](_0x616a('0xc'),_0x455029,_0x5d1981);_0x19ecf9(_0x5d1981);});});}
\ No newline at end of file
index 5e736f1..1099ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682e=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','/:id','show','isAuthenticated','create','put','update','delete','exports','multer','util'];(function(_0xe421c0,_0x51fe86){var _0x12317d=function(_0x185762){while(--_0x185762){_0xe421c0['push'](_0xe421c0['shift']());}};_0x12317d(++_0x51fe86);}(_0x682e,0x8a));var _0xe682=function(_0x2d1e2b,_0x3389e0){_0x2d1e2b=_0x2d1e2b-0x0;var _0x3b2fe3=_0x682e[_0x2d1e2b];return _0x3b2fe3;};'use strict';var multer=require(_0xe682('0x0'));var util=require(_0xe682('0x1'));var path=require(_0xe682('0x2'));var timeout=require(_0xe682('0x3'));var express=require(_0xe682('0x4'));var router=express[_0xe682('0x5')]();var fs_extra=require(_0xe682('0x6'));var auth=require(_0xe682('0x7'));var interaction=require(_0xe682('0x8'));var config=require(_0xe682('0x9'));var controller=require(_0xe682('0xa'));router[_0xe682('0xb')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe682('0xc'),auth['isAuthenticated'](),controller[_0xe682('0xd')]);router['post']('/',auth[_0xe682('0xe')](),controller[_0xe682('0xf')]);router[_0xe682('0x10')]('/:id',auth[_0xe682('0xe')](),controller[_0xe682('0x11')]);router[_0xe682('0x12')](_0xe682('0xc'),auth[_0xe682('0xe')](),controller['destroy']);module[_0xe682('0x13')]=router;
\ No newline at end of file
+var _0x4fef=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','create','/:id','update','delete'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x4fef,0x1d6));var _0xf4fe=function(_0x57be2c,_0x46b390){_0x57be2c=_0x57be2c-0x0;var _0x1119f2=_0x4fef[_0x57be2c];return _0x1119f2;};'use strict';var multer=require(_0xf4fe('0x0'));var util=require(_0xf4fe('0x1'));var path=require(_0xf4fe('0x2'));var timeout=require(_0xf4fe('0x3'));var express=require(_0xf4fe('0x4'));var router=express[_0xf4fe('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf4fe('0x6'));var interaction=require(_0xf4fe('0x7'));var config=require(_0xf4fe('0x8'));var controller=require(_0xf4fe('0x9'));router[_0xf4fe('0xa')]('/',auth[_0xf4fe('0xb')](),controller['index']);router['get']('/:id',auth[_0xf4fe('0xb')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xf4fe('0xc')]);router['put'](_0xf4fe('0xd'),auth[_0xf4fe('0xb')](),controller[_0xf4fe('0xe')]);router[_0xf4fe('0xf')](_0xf4fe('0xd'),auth[_0xf4fe('0xb')](),controller[_0xf4fe('0x10')]);module[_0xf4fe('0x11')]=router;
\ No newline at end of file
index fa9e672..f38a60b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee40=['name','STRING','sequelize','exports'];(function(_0x1ec57e,_0x5eb669){var _0x51f8be=function(_0x326307){while(--_0x326307){_0x1ec57e['push'](_0x1ec57e['shift']());}};_0x51f8be(++_0x5eb669);}(_0xee40,0xf2));var _0x0ee4=function(_0x47e8b5,_0x41f7b5){_0x47e8b5=_0x47e8b5-0x0;var _0x4c9fcc=_0xee40[_0x47e8b5];return _0x4c9fcc;};'use strict';var Sequelize=require(_0x0ee4('0x0'));module[_0x0ee4('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0ee4('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x0ee4('0x3')]}};
\ No newline at end of file
+var _0x6512=['STRING','sequelize','exports'];(function(_0x227cc3,_0x1fec50){var _0x23e1a9=function(_0x4d9993){while(--_0x4d9993){_0x227cc3['push'](_0x227cc3['shift']());}};_0x23e1a9(++_0x1fec50);}(_0x6512,0x1c0));var _0x2651=function(_0xc493ca,_0x297601){_0xc493ca=_0xc493ca-0x0;var _0x1dcf7a=_0x6512[_0xc493ca];return _0x1dcf7a;};'use strict';var Sequelize=require(_0x2651('0x0'));module[_0x2651('0x1')]={'name':{'type':Sequelize[_0x2651('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x2651('0x2')]}};
\ No newline at end of file
index f37e5ae..6a878c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a52=['find','userProfileId','autoAssociation','rimraf','fast-json-patch','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','Pauses','UserProfileResource','sendStatus','error','name','send','index','map','fieldName','type','query','keys','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','count','includeAll','include','Pause','findAll','rows','show','params','rawAttributes','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection'];(function(_0x3bcf9e,_0x148a5d){var _0x1bb37c=function(_0xcaf5da){while(--_0xcaf5da){_0x3bcf9e['push'](_0x3bcf9e['shift']());}};_0x1bb37c(++_0x148a5d);}(_0x6a52,0x1e3));var _0x26a5=function(_0xd13a88,_0x3c5269){_0xd13a88=_0xd13a88-0x0;var _0x1c993c=_0x6a52[_0xd13a88];return _0x1c993c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x26a5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x26a5('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x26a5('0x2'));var Mustache=require(_0x26a5('0x3'));var util=require('util');var path=require('path');var sox=require(_0x26a5('0x4'));var csv=require(_0x26a5('0x5'));var ejs=require(_0x26a5('0x6'));var fs=require('fs');var fs_extra=require(_0x26a5('0x7'));var _=require(_0x26a5('0x8'));var squel=require(_0x26a5('0x9'));var crypto=require(_0x26a5('0xa'));var jsforce=require(_0x26a5('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x26a5('0xc'));var Redis=require(_0x26a5('0xd'));var authService=require(_0x26a5('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x26a5('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x26a5('0x10'))(_0x26a5('0x11'));var utils=require(_0x26a5('0x12'));var config=require(_0x26a5('0x13'));var licenseUtil=require(_0x26a5('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xad0ef9,_0x94a1d){_0x94a1d=_0x94a1d||0xcc;return function(_0x43afe2){if(_0x43afe2){return _0xad0ef9['sendStatus'](_0x94a1d);}return _0xad0ef9[_0x26a5('0x15')](_0x94a1d)[_0x26a5('0x16')]();};}function respondWithResult(_0x22671b,_0x49ebba){_0x49ebba=_0x49ebba||0xc8;return function(_0xe25e2b){if(_0xe25e2b){return _0x22671b[_0x26a5('0x15')](_0x49ebba)[_0x26a5('0x17')](_0xe25e2b);}};}function respondWithFilteredResult(_0x7b2201,_0x27e00e){return function(_0x134101){if(_0x134101){var _0x133682=typeof _0x27e00e[_0x26a5('0x18')]==='undefined'&&typeof _0x27e00e['limit']===_0x26a5('0x19');var _0x30ee4c=_0x134101['count'];var _0xf9aa1b=_0x133682?0x0:_0x27e00e[_0x26a5('0x18')];var _0x4ad78f=_0x133682?_0x134101['count']:_0x27e00e[_0x26a5('0x18')]+_0x27e00e[_0x26a5('0x1a')];var _0x2d149a;if(_0x4ad78f>=_0x30ee4c){_0x4ad78f=_0x30ee4c;_0x2d149a=0xc8;}else{_0x2d149a=0xce;}_0x7b2201[_0x26a5('0x15')](_0x2d149a);return _0x7b2201[_0x26a5('0x1b')]('Content-Range',_0xf9aa1b+'-'+_0x4ad78f+'/'+_0x30ee4c)[_0x26a5('0x17')](_0x134101);}return null;};}function patchUpdates(_0x575f06){return function(_0x318571){try{jsonpatch[_0x26a5('0x1c')](_0x318571,_0x575f06,!![]);}catch(_0x5e9f04){return BPromise[_0x26a5('0x1d')](_0x5e9f04);}return _0x318571[_0x26a5('0x1e')]();};}function saveUpdates(_0x4ed2f9,_0x22eb4e){return function(_0x4693a2){if(_0x4693a2){return _0x4693a2[_0x26a5('0x1f')](_0x4ed2f9)[_0x26a5('0x20')](function(_0x9317eb){return _0x9317eb;});}return null;};}function removeEntity(_0x36dd43,_0x33ffeb){return function(_0x10d600){if(_0x10d600){return _0x10d600[_0x26a5('0x21')]()[_0x26a5('0x20')](function(){var _0xd72b00=_0x10d600['get']({'plain':!![]});var _0x335661=_0x26a5('0x22');return db[_0x26a5('0x23')][_0x26a5('0x21')]({'where':{'type':_0x335661,'resourceId':_0xd72b00['id']}})[_0x26a5('0x20')](function(){return _0x10d600;});})[_0x26a5('0x20')](function(){_0x36dd43[_0x26a5('0x15')](0xcc)[_0x26a5('0x16')]();});}};}function handleEntityNotFound(_0x1294f8,_0x5002ba){return function(_0x565b46){if(!_0x565b46){_0x1294f8[_0x26a5('0x24')](0x194);}return _0x565b46;};}function handleError(_0x17d43a,_0x28b5b8){_0x28b5b8=_0x28b5b8||0x1f4;return function(_0x446c7c){logger[_0x26a5('0x25')](_0x446c7c['stack']);if(_0x446c7c[_0x26a5('0x26')]){delete _0x446c7c['name'];}_0x17d43a['status'](_0x28b5b8)[_0x26a5('0x27')](_0x446c7c);};}exports[_0x26a5('0x28')]=function(_0x1e7745,_0x428ccc){var _0x25a370={},_0x11e32d={},_0x41c17b={'count':0x0,'rows':[]};var _0x48ce65=_[_0x26a5('0x29')](db['Pause']['rawAttributes'],function(_0x13ad2e){return{'name':_0x13ad2e[_0x26a5('0x2a')],'type':_0x13ad2e[_0x26a5('0x2b')]['key']};});_0x11e32d['model']=_[_0x26a5('0x29')](_0x48ce65,'name');_0x11e32d[_0x26a5('0x2c')]=_[_0x26a5('0x2d')](_0x1e7745[_0x26a5('0x2c')]);_0x11e32d['filters']=_[_0x26a5('0x2e')](_0x11e32d['model'],_0x11e32d[_0x26a5('0x2c')]);_0x25a370['attributes']=_['intersection'](_0x11e32d['model'],qs[_0x26a5('0x2f')](_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x2f')]));_0x25a370[_0x26a5('0x30')]=_0x25a370[_0x26a5('0x30')][_0x26a5('0x31')]?_0x25a370[_0x26a5('0x30')]:_0x11e32d[_0x26a5('0x32')];if(!_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x33')](_0x26a5('0x34'))){_0x25a370[_0x26a5('0x1a')]=qs['limit'](_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x1a')]);_0x25a370['offset']=qs[_0x26a5('0x18')](_0x1e7745['query'][_0x26a5('0x18')]);}_0x25a370['order']=qs[_0x26a5('0x35')](_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x35')]);_0x25a370[_0x26a5('0x36')]=qs[_0x26a5('0x37')](_[_0x26a5('0x38')](_0x1e7745['query'],_0x11e32d[_0x26a5('0x37')]),_0x48ce65);if(_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x39')]){_0x25a370['where']=_['merge'](_0x25a370[_0x26a5('0x36')],{'$or':_['map'](_0x48ce65,function(_0x2430f8){if(_0x2430f8[_0x26a5('0x2b')]!==_0x26a5('0x3a')){var _0x5e8c59={};_0x5e8c59[_0x2430f8[_0x26a5('0x26')]]={'$like':'%'+_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x39')]+'%'};return _0x5e8c59;}})});}_0x25a370=_[_0x26a5('0x3b')]({},_0x25a370,_0x1e7745[_0x26a5('0x3c')]);var _0x21c4ca={'where':_0x25a370[_0x26a5('0x36')]};return db['Pause'][_0x26a5('0x3d')](_0x21c4ca)['then'](function(_0x332de1){_0x41c17b[_0x26a5('0x3d')]=_0x332de1;if(_0x1e7745[_0x26a5('0x2c')][_0x26a5('0x3e')]){_0x25a370[_0x26a5('0x3f')]=[{'all':!![]}];}return db[_0x26a5('0x40')][_0x26a5('0x41')](_0x25a370);})['then'](function(_0x1a142d){_0x41c17b[_0x26a5('0x42')]=_0x1a142d;return _0x41c17b;})['then'](respondWithFilteredResult(_0x428ccc,_0x25a370))['catch'](handleError(_0x428ccc,null));};exports[_0x26a5('0x43')]=function(_0x457b1c,_0xb3f2ac){var _0x2f8c41={'raw':!![],'where':{'id':_0x457b1c[_0x26a5('0x44')]['id']}},_0x390070={};_0x390070['model']=_[_0x26a5('0x2d')](db[_0x26a5('0x40')][_0x26a5('0x45')]);_0x390070[_0x26a5('0x2c')]=_['keys'](_0x457b1c[_0x26a5('0x2c')]);_0x390070[_0x26a5('0x37')]=_['intersection'](_0x390070[_0x26a5('0x32')],_0x390070['query']);_0x2f8c41[_0x26a5('0x30')]=_['intersection'](_0x390070[_0x26a5('0x32')],qs['fields'](_0x457b1c['query']['fields']));_0x2f8c41[_0x26a5('0x30')]=_0x2f8c41[_0x26a5('0x30')][_0x26a5('0x31')]?_0x2f8c41[_0x26a5('0x30')]:_0x390070['model'];if(_0x457b1c[_0x26a5('0x2c')][_0x26a5('0x3e')]){_0x2f8c41[_0x26a5('0x3f')]=[{'all':!![]}];}_0x2f8c41=_[_0x26a5('0x3b')]({},_0x2f8c41,_0x457b1c[_0x26a5('0x3c')]);return db['Pause']['find'](_0x2f8c41)[_0x26a5('0x20')](handleEntityNotFound(_0xb3f2ac,null))[_0x26a5('0x20')](respondWithResult(_0xb3f2ac,null))[_0x26a5('0x46')](handleError(_0xb3f2ac,null));};exports[_0x26a5('0x47')]=function(_0x26bef5,_0x1f6025){return db['Pause'][_0x26a5('0x47')](_0x26bef5[_0x26a5('0x48')],{})[_0x26a5('0x20')](function(_0x5c7085){var _0x25a368=_0x26bef5['user'][_0x26a5('0x49')]({'plain':!![]});if(!_0x25a368)throw new Error(_0x26a5('0x4a'));if(_0x25a368['role']===_0x26a5('0x4b')){var _0x4e3977=_0x5c7085['get']({'plain':!![]});var _0x982a71=_0x26a5('0x22');return db[_0x26a5('0x4c')][_0x26a5('0x4d')]({'where':{'name':_0x982a71,'userProfileId':_0x25a368[_0x26a5('0x4e')]},'raw':!![]})[_0x26a5('0x20')](function(_0x371001){if(_0x371001&&_0x371001[_0x26a5('0x4f')]===0x0){return db[_0x26a5('0x23')][_0x26a5('0x47')]({'name':_0x4e3977['name'],'resourceId':_0x4e3977['id'],'type':_0x371001[_0x26a5('0x26')],'sectionId':_0x371001['id']},{})['then'](function(){return _0x5c7085;});}else{return _0x5c7085;}})[_0x26a5('0x46')](function(_0x294ed3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x294ed3);throw _0x294ed3;});}return _0x5c7085;})[_0x26a5('0x20')](respondWithResult(_0x1f6025,0xc9))[_0x26a5('0x46')](handleError(_0x1f6025,null));};exports[_0x26a5('0x1f')]=function(_0x43d6ae,_0x29cee4){if(_0x43d6ae[_0x26a5('0x48')]['id']){delete _0x43d6ae['body']['id'];}return db['Pause'][_0x26a5('0x4d')]({'where':{'id':_0x43d6ae[_0x26a5('0x44')]['id']}})[_0x26a5('0x20')](handleEntityNotFound(_0x29cee4,null))['then'](saveUpdates(_0x43d6ae[_0x26a5('0x48')],null))[_0x26a5('0x20')](respondWithResult(_0x29cee4,null))[_0x26a5('0x46')](handleError(_0x29cee4,null));};exports[_0x26a5('0x21')]=function(_0x4b703e,_0x245865){return db[_0x26a5('0x40')][_0x26a5('0x4d')]({'where':{'id':_0x4b703e[_0x26a5('0x44')]['id']}})[_0x26a5('0x20')](handleEntityNotFound(_0x245865,null))[_0x26a5('0x20')](removeEntity(_0x245865,null))[_0x26a5('0x46')](handleError(_0x245865,null));};
\ No newline at end of file
+var _0x9207=['path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','Pauses','end','name','send','index','map','Pause','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','include','catch','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util'];(function(_0x2fe0ac,_0xe8ad2a){var _0x5e3977=function(_0xbe8ba5){while(--_0xbe8ba5){_0x2fe0ac['push'](_0x2fe0ac['shift']());}};_0x5e3977(++_0xe8ad2a);}(_0x9207,0xec));var _0x7920=function(_0x215863,_0x44609a){_0x215863=_0x215863-0x0;var _0x4d5f5c=_0x9207[_0x215863];return _0x4d5f5c;};'use strict';var emlformat=require(_0x7920('0x0'));var rimraf=require(_0x7920('0x1'));var zipdir=require(_0x7920('0x2'));var jsonpatch=require(_0x7920('0x3'));var rp=require('request-promise');var moment=require(_0x7920('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7920('0x5'));var util=require(_0x7920('0x6'));var path=require(_0x7920('0x7'));var sox=require(_0x7920('0x8'));var csv=require(_0x7920('0x9'));var ejs=require(_0x7920('0xa'));var fs=require('fs');var fs_extra=require(_0x7920('0xb'));var _=require(_0x7920('0xc'));var squel=require('squel');var crypto=require(_0x7920('0xd'));var jsforce=require(_0x7920('0xe'));var deskjs=require(_0x7920('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7920('0x10'));var Redis=require(_0x7920('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x7920('0x12'));var as=require(_0x7920('0x13'));var hardwareService=require(_0x7920('0x14'));var logger=require('../../config/logger')(_0x7920('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7920('0x16'));var db=require(_0x7920('0x17'))['db'];function respondWithStatusCode(_0x1335f4,_0x482fb7){_0x482fb7=_0x482fb7||0xcc;return function(_0x4924c8){if(_0x4924c8){return _0x1335f4[_0x7920('0x18')](_0x482fb7);}return _0x1335f4[_0x7920('0x19')](_0x482fb7)['end']();};}function respondWithResult(_0x4171e7,_0x1e0bc5){_0x1e0bc5=_0x1e0bc5||0xc8;return function(_0x2aae3c){if(_0x2aae3c){return _0x4171e7[_0x7920('0x19')](_0x1e0bc5)[_0x7920('0x1a')](_0x2aae3c);}};}function respondWithFilteredResult(_0x5cdd46,_0x24f4e5){return function(_0x1da287){if(_0x1da287){var _0x6dbd92=typeof _0x24f4e5['offset']===_0x7920('0x1b')&&typeof _0x24f4e5['limit']===_0x7920('0x1b');var _0x18f59f=_0x1da287[_0x7920('0x1c')];var _0x1255bd=_0x6dbd92?0x0:_0x24f4e5[_0x7920('0x1d')];var _0x4d76fb=_0x6dbd92?_0x1da287[_0x7920('0x1c')]:_0x24f4e5[_0x7920('0x1d')]+_0x24f4e5[_0x7920('0x1e')];var _0x28d3b0;if(_0x4d76fb>=_0x18f59f){_0x4d76fb=_0x18f59f;_0x28d3b0=0xc8;}else{_0x28d3b0=0xce;}_0x5cdd46[_0x7920('0x19')](_0x28d3b0);return _0x5cdd46[_0x7920('0x1f')](_0x7920('0x20'),_0x1255bd+'-'+_0x4d76fb+'/'+_0x18f59f)[_0x7920('0x1a')](_0x1da287);}return null;};}function patchUpdates(_0x46679c){return function(_0x3d7844){try{jsonpatch[_0x7920('0x21')](_0x3d7844,_0x46679c,!![]);}catch(_0x7f741e){return BPromise[_0x7920('0x22')](_0x7f741e);}return _0x3d7844[_0x7920('0x23')]();};}function saveUpdates(_0x5e85d4,_0x38173e){return function(_0x2227b1){if(_0x2227b1){return _0x2227b1['update'](_0x5e85d4)[_0x7920('0x24')](function(_0x1b4e29){return _0x1b4e29;});}return null;};}function removeEntity(_0x27f6fa,_0x4b4ec7){return function(_0x56e94e){if(_0x56e94e){return _0x56e94e[_0x7920('0x25')]()[_0x7920('0x24')](function(){var _0x2d1a79=_0x56e94e[_0x7920('0x26')]({'plain':!![]});var _0x4bf580=_0x7920('0x27');return db['UserProfileResource'][_0x7920('0x25')]({'where':{'type':_0x4bf580,'resourceId':_0x2d1a79['id']}})[_0x7920('0x24')](function(){return _0x56e94e;});})[_0x7920('0x24')](function(){_0x27f6fa[_0x7920('0x19')](0xcc)[_0x7920('0x28')]();});}};}function handleEntityNotFound(_0x53b8f3,_0xb0c556){return function(_0x39c932){if(!_0x39c932){_0x53b8f3[_0x7920('0x18')](0x194);}return _0x39c932;};}function handleError(_0x220ec1,_0x17fddb){_0x17fddb=_0x17fddb||0x1f4;return function(_0x59d2e3){logger['error'](_0x59d2e3['stack']);if(_0x59d2e3[_0x7920('0x29')]){delete _0x59d2e3[_0x7920('0x29')];}_0x220ec1[_0x7920('0x19')](_0x17fddb)[_0x7920('0x2a')](_0x59d2e3);};}exports[_0x7920('0x2b')]=function(_0x3d2196,_0x4670bb){var _0x539cc7={},_0x34704c={},_0x19f018={'count':0x0,'rows':[]};var _0x39304f=_[_0x7920('0x2c')](db[_0x7920('0x2d')][_0x7920('0x2e')],function(_0x582133){return{'name':_0x582133[_0x7920('0x2f')],'type':_0x582133[_0x7920('0x30')]['key']};});_0x34704c[_0x7920('0x31')]=_[_0x7920('0x2c')](_0x39304f,_0x7920('0x29'));_0x34704c[_0x7920('0x32')]=_['keys'](_0x3d2196[_0x7920('0x32')]);_0x34704c[_0x7920('0x33')]=_[_0x7920('0x34')](_0x34704c[_0x7920('0x31')],_0x34704c[_0x7920('0x32')]);_0x539cc7['attributes']=_[_0x7920('0x34')](_0x34704c[_0x7920('0x31')],qs[_0x7920('0x35')](_0x3d2196[_0x7920('0x32')][_0x7920('0x35')]));_0x539cc7['attributes']=_0x539cc7[_0x7920('0x36')][_0x7920('0x37')]?_0x539cc7[_0x7920('0x36')]:_0x34704c['model'];if(!_0x3d2196[_0x7920('0x32')][_0x7920('0x38')](_0x7920('0x39'))){_0x539cc7['limit']=qs['limit'](_0x3d2196['query'][_0x7920('0x1e')]);_0x539cc7['offset']=qs[_0x7920('0x1d')](_0x3d2196['query'][_0x7920('0x1d')]);}_0x539cc7[_0x7920('0x3a')]=qs[_0x7920('0x3b')](_0x3d2196['query'][_0x7920('0x3b')]);_0x539cc7[_0x7920('0x3c')]=qs[_0x7920('0x33')](_['pick'](_0x3d2196[_0x7920('0x32')],_0x34704c['filters']),_0x39304f);if(_0x3d2196['query'][_0x7920('0x3d')]){_0x539cc7[_0x7920('0x3c')]=_[_0x7920('0x3e')](_0x539cc7[_0x7920('0x3c')],{'$or':_[_0x7920('0x2c')](_0x39304f,function(_0x39fd52){if(_0x39fd52[_0x7920('0x30')]!==_0x7920('0x3f')){var _0x10ccad={};_0x10ccad[_0x39fd52['name']]={'$like':'%'+_0x3d2196[_0x7920('0x32')][_0x7920('0x3d')]+'%'};return _0x10ccad;}})});}_0x539cc7=_[_0x7920('0x3e')]({},_0x539cc7,_0x3d2196['options']);var _0x27582f={'where':_0x539cc7[_0x7920('0x3c')]};return db[_0x7920('0x2d')]['count'](_0x27582f)[_0x7920('0x24')](function(_0x4f62f8){_0x19f018[_0x7920('0x1c')]=_0x4f62f8;if(_0x3d2196['query']['includeAll']){_0x539cc7[_0x7920('0x40')]=[{'all':!![]}];}return db[_0x7920('0x2d')]['findAll'](_0x539cc7);})[_0x7920('0x24')](function(_0x1fb514){_0x19f018['rows']=_0x1fb514;return _0x19f018;})['then'](respondWithFilteredResult(_0x4670bb,_0x539cc7))[_0x7920('0x41')](handleError(_0x4670bb,null));};exports[_0x7920('0x42')]=function(_0x565995,_0x1fbae8){var _0x31a21f={'raw':!![],'where':{'id':_0x565995['params']['id']}},_0x3aa833={};_0x3aa833['model']=_['keys'](db[_0x7920('0x2d')][_0x7920('0x2e')]);_0x3aa833['query']=_[_0x7920('0x43')](_0x565995[_0x7920('0x32')]);_0x3aa833[_0x7920('0x33')]=_['intersection'](_0x3aa833['model'],_0x3aa833[_0x7920('0x32')]);_0x31a21f[_0x7920('0x36')]=_['intersection'](_0x3aa833['model'],qs['fields'](_0x565995[_0x7920('0x32')]['fields']));_0x31a21f[_0x7920('0x36')]=_0x31a21f['attributes'][_0x7920('0x37')]?_0x31a21f['attributes']:_0x3aa833['model'];if(_0x565995[_0x7920('0x32')]['includeAll']){_0x31a21f[_0x7920('0x40')]=[{'all':!![]}];}_0x31a21f=_[_0x7920('0x3e')]({},_0x31a21f,_0x565995['options']);return db[_0x7920('0x2d')][_0x7920('0x44')](_0x31a21f)[_0x7920('0x24')](handleEntityNotFound(_0x1fbae8,null))[_0x7920('0x24')](respondWithResult(_0x1fbae8,null))[_0x7920('0x41')](handleError(_0x1fbae8,null));};exports[_0x7920('0x45')]=function(_0x405b1a,_0x23cdf6){return db[_0x7920('0x2d')][_0x7920('0x45')](_0x405b1a[_0x7920('0x46')],{})[_0x7920('0x24')](function(_0x30f4a2){var _0x4cdfcf=_0x405b1a[_0x7920('0x47')][_0x7920('0x26')]({'plain':!![]});if(!_0x4cdfcf)throw new Error(_0x7920('0x48'));if(_0x4cdfcf[_0x7920('0x49')]===_0x7920('0x47')){var _0x4a9ee7=_0x30f4a2['get']({'plain':!![]});var _0x491a5e=_0x7920('0x27');return db[_0x7920('0x4a')][_0x7920('0x44')]({'where':{'name':_0x491a5e,'userProfileId':_0x4cdfcf[_0x7920('0x4b')]},'raw':!![]})[_0x7920('0x24')](function(_0x175d7d){if(_0x175d7d&&_0x175d7d[_0x7920('0x4c')]===0x0){return db[_0x7920('0x4d')][_0x7920('0x45')]({'name':_0x4a9ee7[_0x7920('0x29')],'resourceId':_0x4a9ee7['id'],'type':_0x175d7d[_0x7920('0x29')],'sectionId':_0x175d7d['id']},{})['then'](function(){return _0x30f4a2;});}else{return _0x30f4a2;}})[_0x7920('0x41')](function(_0x3061b6){logger[_0x7920('0x4e')](_0x7920('0x4f'),_0x3061b6);throw _0x3061b6;});}return _0x30f4a2;})[_0x7920('0x24')](respondWithResult(_0x23cdf6,0xc9))[_0x7920('0x41')](handleError(_0x23cdf6,null));};exports['update']=function(_0x5723dc,_0x51950c){if(_0x5723dc[_0x7920('0x46')]['id']){delete _0x5723dc[_0x7920('0x46')]['id'];}return db[_0x7920('0x2d')][_0x7920('0x44')]({'where':{'id':_0x5723dc[_0x7920('0x50')]['id']}})['then'](handleEntityNotFound(_0x51950c,null))['then'](saveUpdates(_0x5723dc[_0x7920('0x46')],null))['then'](respondWithResult(_0x51950c,null))[_0x7920('0x41')](handleError(_0x51950c,null));};exports[_0x7920('0x25')]=function(_0x186ec4,_0x1f3c8a){return db[_0x7920('0x2d')]['find']({'where':{'id':_0x186ec4[_0x7920('0x50')]['id']}})[_0x7920('0x24')](handleEntityNotFound(_0x1f3c8a,null))[_0x7920('0x24')](removeEntity(_0x1f3c8a,null))[_0x7920('0x41')](handleError(_0x1f3c8a,null));};
\ No newline at end of file
index a6ed940..9093dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','Pause'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x5b1c50,_0x56e694){_0x5b1c50=_0x5b1c50-0x0;var _0x2d379b=_0x7fbe[_0x5b1c50];return _0x2d379b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./pause.attributes','exports','define','tools_pauses','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x55ca,0x126));var _0xa55c=function(_0x20c47c,_0x443272){_0x20c47c=_0x20c47c-0x0;var _0x1cfcd7=_0x55ca[_0x20c47c];return _0x1cfcd7;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Pause',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7e44a2..6a8d122 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(_0x68be35,_0x2d011c){var _0x1c4091=function(_0x5c61af){while(--_0x5c61af){_0x68be35['push'](_0x68be35['shift']());}};_0x1c4091(++_0x2d011c);}(_0x7a54,0x106));var _0x47a5=function(_0x2804e2,_0x17b83f){_0x2804e2=_0x2804e2-0x0;var _0x430d56=_0x7a54[_0x2804e2];return _0x430d56;};'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(_0x8ce83e,_0x5b874b){var _0x315361=function(_0x3ac3b9){while(--_0x3ac3b9){_0x8ce83e['push'](_0x8ce83e['shift']());}};_0x315361(++_0x5b874b);}(_0xb10b,0x12a));var _0xbb10=function(_0x47d1ae,_0x41e056){_0x47d1ae=_0x47d1ae-0x0;var _0x47328a=_0xb10b[_0x47d1ae];return _0x47328a;};'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 d3750a7..e57bcf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d9=['/:id/download','join','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','file','upload','/webhook','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','index','webhookGet','get','/:id','isAuthenticated','show'];(function(_0x1f1a97,_0xadfc15){var _0x29fc6a=function(_0x38c180){while(--_0x38c180){_0x1f1a97['push'](_0x1f1a97['shift']());}};_0x29fc6a(++_0xadfc15);}(_0x80d9,0x15c));var _0x980d=function(_0x55e2b5,_0x41bb0b){_0x55e2b5=_0x55e2b5-0x0;var _0x3411bf=_0x80d9[_0x55e2b5];return _0x3411bf;};'use strict';var multer=require(_0x980d('0x0'));var util=require('util');var path=require(_0x980d('0x1'));var timeout=require(_0x980d('0x2'));var express=require(_0x980d('0x3'));var router=express['Router']();var fs_extra=require(_0x980d('0x4'));var auth=require(_0x980d('0x5'));var interaction=require(_0x980d('0x6'));var config=require(_0x980d('0x7'));var controller=require(_0x980d('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x980d('0x9')]);router['get']('/webhook',controller[_0x980d('0xa')]);router[_0x980d('0xb')](_0x980d('0xc'),auth[_0x980d('0xd')](),controller[_0x980d('0xe')]);router[_0x980d('0xb')](_0x980d('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x43a0d8,_0x10872c,_0x4a9536){_0x4a9536(null,path[_0x980d('0x10')](config['root'],_0x980d('0x11')));},'filename':function(_0x52cd18,_0xc0168a,_0x19cb9b){_0xc0168a[_0x980d('0x12')]=_0xc0168a[_0x980d('0x12')][_0x980d('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x19cb9b(null,util[_0x980d('0x14')](_0x980d('0x15'),path[_0x980d('0x16')](_0xc0168a['originalname'],path[_0x980d('0x17')](_0xc0168a[_0x980d('0x12')])),Date[_0x980d('0x18')](),path[_0x980d('0x17')](_0xc0168a[_0x980d('0x12')])));}})});router[_0x980d('0x19')]('/',upload['single'](_0x980d('0x1a')),controller[_0x980d('0x1b')]);router['post'](_0x980d('0x1c'),controller['webhookPost']);router[_0x980d('0x1d')](_0x980d('0xc'),auth[_0x980d('0xd')](),controller[_0x980d('0x1e')]);router[_0x980d('0x1f')](_0x980d('0xc'),auth[_0x980d('0xd')](),controller[_0x980d('0x1f')]);module[_0x980d('0x20')]=router;
\ No newline at end of file
+var _0x2123=['join','root','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','single','file','upload','post','webhookPost','put','update','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','isAuthenticated','show','/:id/download','diskStorage'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2123,0x190));var _0x3212=function(_0x23c7b0,_0x56884f){_0x23c7b0=_0x23c7b0-0x0;var _0xa543e1=_0x2123[_0x23c7b0];return _0xa543e1;};'use strict';var multer=require(_0x3212('0x0'));var util=require(_0x3212('0x1'));var path=require(_0x3212('0x2'));var timeout=require(_0x3212('0x3'));var express=require(_0x3212('0x4'));var router=express[_0x3212('0x5')]();var fs_extra=require(_0x3212('0x6'));var auth=require(_0x3212('0x7'));var interaction=require(_0x3212('0x8'));var config=require(_0x3212('0x9'));var controller=require(_0x3212('0xa'));router[_0x3212('0xb')]('/',auth['isAuthenticated'](),controller[_0x3212('0xc')]);router[_0x3212('0xb')](_0x3212('0xd'),controller['webhookGet']);router[_0x3212('0xb')]('/:id',auth[_0x3212('0xe')](),controller[_0x3212('0xf')]);router[_0x3212('0xb')](_0x3212('0x10'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer[_0x3212('0x11')]({'destination':function(_0xf166c2,_0x1a3b2f,_0x23f7e3){_0x23f7e3(null,path[_0x3212('0x12')](config[_0x3212('0x13')],_0x3212('0x14')));},'filename':function(_0x359cef,_0x26c1c8,_0x2d5fce){_0x26c1c8[_0x3212('0x15')]=_0x26c1c8[_0x3212('0x15')][_0x3212('0x16')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2d5fce(null,util[_0x3212('0x17')](_0x3212('0x18'),path[_0x3212('0x19')](_0x26c1c8[_0x3212('0x15')],path[_0x3212('0x1a')](_0x26c1c8[_0x3212('0x15')])),Date[_0x3212('0x1b')](),path[_0x3212('0x1a')](_0x26c1c8[_0x3212('0x15')])));}})});router['post']('/',upload[_0x3212('0x1c')](_0x3212('0x1d')),controller[_0x3212('0x1e')]);router[_0x3212('0x1f')](_0x3212('0xd'),controller[_0x3212('0x20')]);router[_0x3212('0x21')]('/:id',auth['isAuthenticated'](),controller[_0x3212('0x22')]);router['delete'](_0x3212('0x23'),auth[_0x3212('0xe')](),controller[_0x3212('0x24')]);module[_0x3212('0x25')]=router;
\ No newline at end of file
index b078283..4717fc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432e=['BOOLEAN','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','TEXT'];(function(_0x30d1c0,_0x20b616){var _0x15bae4=function(_0x5a3e84){while(--_0x5a3e84){_0x30d1c0['push'](_0x30d1c0['shift']());}};_0x15bae4(++_0x20b616);}(_0x432e,0x7e));var _0xe432=function(_0x38bdd6,_0x230f2e){_0x38bdd6=_0x38bdd6-0x0;var _0x45ac90=_0x432e[_0x38bdd6];return _0x45ac90;};'use strict';var Sequelize=require(_0xe432('0x0'));module[_0xe432('0x1')]={'name':{'type':Sequelize[_0xe432('0x2')]},'type':{'type':Sequelize[_0xe432('0x3')](_0xe432('0x4'),'script')},'description':{'type':Sequelize[_0xe432('0x5')]},'version':{'type':Sequelize[_0xe432('0x5')]},'path':{'type':Sequelize['STRING'],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xe432('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0xe432('0x3')](_0xe432('0x7'),_0xe432('0x8'),_0xe432('0x9'),_0xe432('0xa')),'defaultValue':'always','comment':_0xe432('0xb')},'icon':{'type':Sequelize[_0xe432('0x2')]},'adminUrl':{'type':Sequelize[_0xe432('0x2')]},'agentUrl':{'type':Sequelize[_0xe432('0x2')]},'scriptName':{'type':Sequelize[_0xe432('0x2')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf495=['The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','script','TEXT'];(function(_0xec74fe,_0x2dce88){var _0x50bda2=function(_0x538a6d){while(--_0x538a6d){_0xec74fe['push'](_0xec74fe['shift']());}};_0x50bda2(++_0x2dce88);}(_0xf495,0x124));var _0x5f49=function(_0x2abb21,_0x4765b5){_0x2abb21=_0x2abb21-0x0;var _0x1b978f=_0xf495[_0x2abb21];return _0x1b978f;};'use strict';var Sequelize=require(_0x5f49('0x0'));module[_0x5f49('0x1')]={'name':{'type':Sequelize[_0x5f49('0x2')]},'type':{'type':Sequelize[_0x5f49('0x3')](_0x5f49('0x4'),_0x5f49('0x5'))},'description':{'type':Sequelize[_0x5f49('0x6')]},'version':{'type':Sequelize[_0x5f49('0x6')]},'path':{'type':Sequelize[_0x5f49('0x2')],'comment':_0x5f49('0x7')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x5f49('0x8')},'sidebar':{'type':Sequelize[_0x5f49('0x3')]('adminOnly',_0x5f49('0x9'),_0x5f49('0xa'),_0x5f49('0xb')),'defaultValue':_0x5f49('0xa'),'comment':_0x5f49('0xc')},'icon':{'type':Sequelize[_0x5f49('0x2')]},'adminUrl':{'type':Sequelize[_0x5f49('0x2')]},'agentUrl':{'type':Sequelize[_0x5f49('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 94c22ce..f247146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8a7=['file','filename','extname','root','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','length','Invalid\x20plugin\x20structure','isFile','isDirectory','some','Plugin\x20manifest\x20missing','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','icon-apps','version','html','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptName','scriptPath','body','role','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','statusCode','webhookPost','resolve','\x27PORT\x27\x20parameter\x20not\x20specified','%s%s','send','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','extract-zip','archiver','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','limit','undefined','count','offset','set','Content-Range','json','apply','reject','then','destroy','get','Plugins','end','error','name','index','map','Plugin','rawAttributes','fieldName','type','key','keys','query','model','attributes','intersection','fields','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','merge','options','find','join','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','code','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','dirname','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','download','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Temporary\x20file\x20removed','upload'];(function(_0x26e1e5,_0x53c6e0){var _0x53a20b=function(_0x495553){while(--_0x495553){_0x26e1e5['push'](_0x26e1e5['shift']());}};_0x53a20b(++_0x53c6e0);}(_0xb8a7,0xf1));var _0x7b8a=function(_0x3a4fc6,_0x459929){_0x3a4fc6=_0x3a4fc6-0x0;var _0x271260=_0xb8a7[_0x3a4fc6];return _0x271260;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7b8a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7b8a('0x1'));var rp=require(_0x7b8a('0x2'));var moment=require(_0x7b8a('0x3'));var BPromise=require(_0x7b8a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7b8a('0x5'));var sox=require(_0x7b8a('0x6'));var csv=require(_0x7b8a('0x7'));var ejs=require(_0x7b8a('0x8'));var fs=require('fs');var fs_extra=require(_0x7b8a('0x9'));var _=require(_0x7b8a('0xa'));var squel=require('squel');var crypto=require(_0x7b8a('0xb'));var jsforce=require(_0x7b8a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7b8a('0x7'));var querystring=require(_0x7b8a('0xd'));var Papa=require(_0x7b8a('0xe'));var extract=require(_0x7b8a('0xf'));var rimraf=require(_0x7b8a('0x0'));var archiver=require(_0x7b8a('0x10'));var Redis=require(_0x7b8a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x7b8a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b8a('0x13'));var logger=require('../../config/logger')(_0x7b8a('0x14'));var utils=require(_0x7b8a('0x15'));var config=require(_0x7b8a('0x16'));var licenseUtil=require(_0x7b8a('0x17'));var db=require(_0x7b8a('0x18'))['db'];config[_0x7b8a('0x19')]=_['defaults'](config[_0x7b8a('0x19')],{'host':_0x7b8a('0x1a'),'port':0x18eb});var socket=require(_0x7b8a('0x1b'))(new Redis(config[_0x7b8a('0x19')]));require(_0x7b8a('0x1c'))['register'](socket);function respondWithStatusCode(_0x106685,_0x300fdf){_0x300fdf=_0x300fdf||0xcc;return function(_0x2d6ef9){if(_0x2d6ef9){return _0x106685[_0x7b8a('0x1d')](_0x300fdf);}return _0x106685['status'](_0x300fdf)['end']();};}function respondWithResult(_0x6f8ae5,_0x52826f){_0x52826f=_0x52826f||0xc8;return function(_0x14ad82){if(_0x14ad82){return _0x6f8ae5[_0x7b8a('0x1e')](_0x52826f)['json'](_0x14ad82);}};}function respondWithFilteredResult(_0x305ecd,_0x5a7def){return function(_0x3c1957){if(_0x3c1957){var _0x3d3f4a=typeof _0x5a7def['offset']==='undefined'&&typeof _0x5a7def[_0x7b8a('0x1f')]===_0x7b8a('0x20');var _0x249ba1=_0x3c1957[_0x7b8a('0x21')];var _0x2314c9=_0x3d3f4a?0x0:_0x5a7def[_0x7b8a('0x22')];var _0xf6e98d=_0x3d3f4a?_0x3c1957[_0x7b8a('0x21')]:_0x5a7def[_0x7b8a('0x22')]+_0x5a7def[_0x7b8a('0x1f')];var _0xeaa289;if(_0xf6e98d>=_0x249ba1){_0xf6e98d=_0x249ba1;_0xeaa289=0xc8;}else{_0xeaa289=0xce;}_0x305ecd[_0x7b8a('0x1e')](_0xeaa289);return _0x305ecd[_0x7b8a('0x23')](_0x7b8a('0x24'),_0x2314c9+'-'+_0xf6e98d+'/'+_0x249ba1)[_0x7b8a('0x25')](_0x3c1957);}return null;};}function patchUpdates(_0x48ce51){return function(_0x1f7e7c){try{jsonpatch[_0x7b8a('0x26')](_0x1f7e7c,_0x48ce51,!![]);}catch(_0x4699c2){return BPromise[_0x7b8a('0x27')](_0x4699c2);}return _0x1f7e7c['save']();};}function saveUpdates(_0x23e804,_0x34436b){return function(_0x16420a){if(_0x16420a){return _0x16420a['update'](_0x23e804)[_0x7b8a('0x28')](function(_0x311e24){return _0x311e24;});}return null;};}function removeEntity(_0x232af0,_0x29cf9f){return function(_0x1b5284){if(_0x1b5284){return _0x1b5284[_0x7b8a('0x29')]()[_0x7b8a('0x28')](function(){var _0x353a78=_0x1b5284[_0x7b8a('0x2a')]({'plain':!![]});var _0x25c7fb=_0x7b8a('0x2b');return db['UserProfileResource']['destroy']({'where':{'type':_0x25c7fb,'resourceId':_0x353a78['id']}})['then'](function(){return _0x1b5284;});})[_0x7b8a('0x28')](function(){_0x232af0[_0x7b8a('0x1e')](0xcc)[_0x7b8a('0x2c')]();});}};}function handleEntityNotFound(_0x130cac,_0x358bdc){return function(_0x55e806){if(!_0x55e806){_0x130cac[_0x7b8a('0x1d')](0x194);}return _0x55e806;};}function handleError(_0x143138,_0x2b8dd4){_0x2b8dd4=_0x2b8dd4||0x1f4;return function(_0x425eba){logger[_0x7b8a('0x2d')](_0x425eba['stack']);if(_0x425eba[_0x7b8a('0x2e')]){delete _0x425eba[_0x7b8a('0x2e')];}_0x143138[_0x7b8a('0x1e')](_0x2b8dd4)['send'](_0x425eba);};}exports[_0x7b8a('0x2f')]=function(_0x1866c5,_0x277669){var _0x14d3c2={},_0x64b9f0={},_0x41052f={'count':0x0,'rows':[]};var _0x57fbdf=_[_0x7b8a('0x30')](db[_0x7b8a('0x31')][_0x7b8a('0x32')],function(_0x3f48d0){return{'name':_0x3f48d0[_0x7b8a('0x33')],'type':_0x3f48d0[_0x7b8a('0x34')][_0x7b8a('0x35')]};});_0x64b9f0['model']=_[_0x7b8a('0x30')](_0x57fbdf,_0x7b8a('0x2e'));_0x64b9f0['query']=_[_0x7b8a('0x36')](_0x1866c5[_0x7b8a('0x37')]);_0x64b9f0['filters']=_['intersection'](_0x64b9f0[_0x7b8a('0x38')],_0x64b9f0[_0x7b8a('0x37')]);_0x14d3c2[_0x7b8a('0x39')]=_[_0x7b8a('0x3a')](_0x64b9f0[_0x7b8a('0x38')],qs['fields'](_0x1866c5['query'][_0x7b8a('0x3b')]));_0x14d3c2[_0x7b8a('0x39')]=_0x14d3c2['attributes']['length']?_0x14d3c2[_0x7b8a('0x39')]:_0x64b9f0['model'];if(!_0x1866c5[_0x7b8a('0x37')]['hasOwnProperty'](_0x7b8a('0x3c'))){_0x14d3c2['limit']=qs['limit'](_0x1866c5['query'][_0x7b8a('0x1f')]);_0x14d3c2[_0x7b8a('0x22')]=qs['offset'](_0x1866c5[_0x7b8a('0x37')][_0x7b8a('0x22')]);}_0x14d3c2[_0x7b8a('0x3d')]=qs[_0x7b8a('0x3e')](_0x1866c5['query'][_0x7b8a('0x3e')]);_0x14d3c2[_0x7b8a('0x3f')]=qs[_0x7b8a('0x40')](_[_0x7b8a('0x41')](_0x1866c5['query'],_0x64b9f0['filters']),_0x57fbdf);if(_0x1866c5[_0x7b8a('0x37')][_0x7b8a('0x42')]){_0x14d3c2[_0x7b8a('0x3f')]=_['merge'](_0x14d3c2[_0x7b8a('0x3f')],{'$or':_[_0x7b8a('0x30')](_0x57fbdf,function(_0x511e40){if(_0x511e40['type']!==_0x7b8a('0x43')){var _0x367132={};_0x367132[_0x511e40[_0x7b8a('0x2e')]]={'$like':'%'+_0x1866c5[_0x7b8a('0x37')][_0x7b8a('0x42')]+'%'};return _0x367132;}})});}_0x14d3c2=_['merge']({},_0x14d3c2,_0x1866c5['options']);var _0xf287a4={'where':_0x14d3c2[_0x7b8a('0x3f')]};return db[_0x7b8a('0x31')][_0x7b8a('0x21')](_0xf287a4)[_0x7b8a('0x28')](function(_0x1956f7){_0x41052f[_0x7b8a('0x21')]=_0x1956f7;if(_0x1866c5[_0x7b8a('0x37')][_0x7b8a('0x44')]){_0x14d3c2[_0x7b8a('0x45')]=[{'all':!![]}];}return db['Plugin'][_0x7b8a('0x46')](_0x14d3c2);})[_0x7b8a('0x28')](function(_0x495e90){_0x41052f[_0x7b8a('0x47')]=_0x495e90;return _0x41052f;})[_0x7b8a('0x28')](respondWithFilteredResult(_0x277669,_0x14d3c2))[_0x7b8a('0x48')](handleError(_0x277669,null));};exports[_0x7b8a('0x49')]=function(_0xe12f36,_0x45c866){var _0x3016d9={'raw':!![],'where':{'id':_0xe12f36[_0x7b8a('0x4a')]['id']}},_0x57963a={};_0x57963a[_0x7b8a('0x38')]=_[_0x7b8a('0x36')](db[_0x7b8a('0x31')][_0x7b8a('0x32')]);_0x57963a[_0x7b8a('0x37')]=_[_0x7b8a('0x36')](_0xe12f36['query']);_0x57963a['filters']=_[_0x7b8a('0x3a')](_0x57963a[_0x7b8a('0x38')],_0x57963a[_0x7b8a('0x37')]);_0x3016d9[_0x7b8a('0x39')]=_['intersection'](_0x57963a['model'],qs[_0x7b8a('0x3b')](_0xe12f36[_0x7b8a('0x37')]['fields']));_0x3016d9[_0x7b8a('0x39')]=_0x3016d9[_0x7b8a('0x39')]['length']?_0x3016d9[_0x7b8a('0x39')]:_0x57963a['model'];if(_0xe12f36['query']['includeAll']){_0x3016d9[_0x7b8a('0x45')]=[{'all':!![]}];}_0x3016d9=_[_0x7b8a('0x4b')]({},_0x3016d9,_0xe12f36[_0x7b8a('0x4c')]);return db[_0x7b8a('0x31')][_0x7b8a('0x4d')](_0x3016d9)[_0x7b8a('0x28')](handleEntityNotFound(_0x45c866,null))[_0x7b8a('0x28')](respondWithResult(_0x45c866,null))[_0x7b8a('0x48')](handleError(_0x45c866,null));};exports['download']=function(_0x2ee681,_0x43d007,_0x6333de){return db[_0x7b8a('0x31')][_0x7b8a('0x4d')]({'where':{'id':_0x2ee681[_0x7b8a('0x4a')]['id']},'attributes':[_0x7b8a('0x2e'),'path'],'raw':!![]})[_0x7b8a('0x28')](handleEntityNotFound(_0x43d007,null))[_0x7b8a('0x28')](function(_0x3c7352){if(_0x3c7352){var _0x4da220=path[_0x7b8a('0x4e')](config['root'],_0x7b8a('0x4f'),util[_0x7b8a('0x50')](_0x7b8a('0x51'),path[_0x7b8a('0x52')](_0x3c7352['path'])));var _0x283dcd=fs[_0x7b8a('0x53')](_0x4da220);var _0x180c27=archiver(_0x7b8a('0x54'),{'zlib':{'level':0x9}});_0x180c27['on'](_0x7b8a('0x55'),function(_0x678f7a){if(_0x678f7a[_0x7b8a('0x56')]==='ENOENT'){logger[_0x7b8a('0x2d')](_0x678f7a);}else{throw new db[(_0x7b8a('0x57'))]['Error'](_0x7b8a('0x58'));}});_0x180c27['on']('error',function(_0x1c1c2e){throw new db['Sequelize'][(_0x7b8a('0x59'))](_0x7b8a('0x58'));});_0x180c27[_0x7b8a('0x5a')](_0x283dcd);_0x180c27[_0x7b8a('0x5b')](_0x7b8a('0x5c'),{'cwd':path['join'](config['root'],_0x7b8a('0x4f'),path[_0x7b8a('0x5d')](_0x3c7352['path'])),'ignore':[path[_0x7b8a('0x4e')](path[_0x7b8a('0x52')](_0x3c7352[_0x7b8a('0x5')]),'node_modules/**/*'),path[_0x7b8a('0x4e')](path[_0x7b8a('0x52')](_0x3c7352[_0x7b8a('0x5')]),_0x7b8a('0x5e'))],'nodir':!![]})[_0x7b8a('0x5f')]();_0x283dcd['on'](_0x7b8a('0x60'),function(){if(!fs[_0x7b8a('0x61')](_0x4da220)){throw new db[(_0x7b8a('0x57'))][(_0x7b8a('0x59'))](_0x7b8a('0x62'));}return _0x43d007[_0x7b8a('0x63')](_0x4da220,util[_0x7b8a('0x50')](_0x7b8a('0x51'),path[_0x7b8a('0x52')](_0x3c7352[_0x7b8a('0x5')])),function(_0x3d70fc){if(_0x3d70fc){throw new db[(_0x7b8a('0x57'))][(_0x7b8a('0x59'))](_0x7b8a('0x64'));}fs[_0x7b8a('0x65')](_0x4da220);logger['info']('Download\x20completed');logger[_0x7b8a('0x66')](_0x7b8a('0x67'));});});}return null;})['catch'](handleError(_0x43d007,null));};exports[_0x7b8a('0x68')]=function(_0x2f8fba,_0x372e5c,_0x29a131){var _0x539772=path[_0x7b8a('0x52')](_0x2f8fba[_0x7b8a('0x69')][_0x7b8a('0x6a')],path[_0x7b8a('0x6b')](_0x2f8fba[_0x7b8a('0x69')][_0x7b8a('0x6a')]));var _0x5c1d72=path[_0x7b8a('0x4e')](config[_0x7b8a('0x6c')],_0x7b8a('0x4f'),_0x2f8fba[_0x7b8a('0x69')][_0x7b8a('0x6a')]);var _0x23c60c=path['join'](config[_0x7b8a('0x6c')],_0x7b8a('0x4f'),_0x539772);logger[_0x7b8a('0x66')]('Plugin\x20upload\x20filepath:\x20%s',_0x5c1d72);logger[_0x7b8a('0x66')](_0x7b8a('0x6d'),_0x23c60c);try{fs['chmodSync'](_0x5c1d72,parseInt(_0x7b8a('0x6e'),0x8));extract(_0x5c1d72,{'dir':_0x23c60c},function(_0x10160a){if(_0x10160a){logger[_0x7b8a('0x2d')](_0x10160a);handleError(_0x10160a,!![]);};var _0x1e2c78=fs[_0x7b8a('0x6f')](_0x23c60c);if(_0x1e2c78[_0x7b8a('0x70')]>0x1){removeReferences(_0x5c1d72,_0x23c60c);logger[_0x7b8a('0x2d')]('Invalid\x20plugin\x20structure');return _0x29a131(new Error(_0x7b8a('0x71')));}var _0x3ff2f7=fs['lstatSync'](path[_0x7b8a('0x4e')](_0x23c60c,_0x1e2c78[0x0]));if(_0x3ff2f7[_0x7b8a('0x72')]()){removeReferences(_0x5c1d72,_0x23c60c);logger[_0x7b8a('0x2d')](_0x7b8a('0x71'));return _0x29a131(new Error('Invalid\x20plugin\x20structure'));}if(_0x3ff2f7[_0x7b8a('0x73')]()){var _0x218eff=fs[_0x7b8a('0x6f')](path[_0x7b8a('0x4e')](_0x23c60c,_0x1e2c78[0x0]));if(_0x218eff['length']===0x0){removeReferences(_0x5c1d72,_0x23c60c);logger[_0x7b8a('0x2d')](_0x7b8a('0x71'));return _0x29a131(new Error(_0x7b8a('0x71')));}var _0x784781=_0x218eff[_0x7b8a('0x74')](function(_0x507cd9){return _0x507cd9==='manifest.json';});if(!_0x784781){return _0x29a131(new Error(_0x7b8a('0x75')));}var _0x5700c6=fs[_0x7b8a('0x76')](path[_0x7b8a('0x4e')](_0x23c60c,_0x1e2c78[0x0],_0x7b8a('0x77')));var _0x3f096c=JSON[_0x7b8a('0x78')](_0x5700c6);if('undefined'==typeof _0x3f096c[_0x7b8a('0x2e')]){return _0x29a131(new Error(_0x7b8a('0x79')));}if(_0x7b8a('0x20')==typeof _0x3f096c[_0x7b8a('0x34')]){return _0x29a131(new Error(_0x7b8a('0x7a')));}if(_0x7b8a('0x20')==typeof _0x3f096c['version']){return _0x29a131(new Error(_0x7b8a('0x7b')));}if('undefined'==typeof _0x3f096c[_0x7b8a('0x7c')]){return _0x29a131(new Error(_0x7b8a('0x7d')));}if(_0x3f096c[_0x7b8a('0x34')]==='html'){if(_0x7b8a('0x20')==typeof _0x3f096c['parameters'][_0x7b8a('0x7e')]){return _0x29a131(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x7b8a('0x20')==typeof _0x3f096c[_0x7b8a('0x7c')][_0x7b8a('0x7e')][_0x7b8a('0x7f')]&&_0x7b8a('0x20')==typeof _0x3f096c[_0x7b8a('0x7c')][_0x7b8a('0x7e')][_0x7b8a('0x80')]){return _0x29a131(new Error(_0x7b8a('0x81')));}}else if(_0x3f096c[_0x7b8a('0x34')]===_0x7b8a('0x82')){if(_0x7b8a('0x20')==typeof _0x3f096c['parameters']['scriptName']){return _0x29a131(new Error(_0x7b8a('0x83')));}if(_0x7b8a('0x20')==typeof _0x3f096c[_0x7b8a('0x7c')]['scriptPath']){return _0x29a131(new Error(_0x7b8a('0x84')));}}else{return _0x29a131(new Error(_0x7b8a('0x85')));}var _0x4bffbd=_0x3f096c[_0x7b8a('0x2e')];var _0x460745=_0x3f096c['description'];var _0x50d786=_0x3f096c[_0x7b8a('0x34')];var _0x365203=_0x3f096c[_0x7b8a('0x86')]?_0x3f096c[_0x7b8a('0x86')]:_0x7b8a('0x87');var _0x154a2c=_0x3f096c[_0x7b8a('0x88')]?_0x3f096c[_0x7b8a('0x88')]:_0x7b8a('0x89');var _0x11e53b='';var _0x5d171f='';var _0xaa2a5e='';var _0x28a98a='';var _0x244594=_0x3f096c[_0x7b8a('0x8a')];if(_0x50d786===_0x7b8a('0x8b')){if(_0x7b8a('0x20')!=typeof _0x3f096c['parameters']['views']['admin']){var _0x793cd7=_0x3f096c[_0x7b8a('0x7c')][_0x7b8a('0x7e')][_0x7b8a('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x7b8a('0x8c')](_0x793cd7)){_0x11e53b=path[_0x7b8a('0x4e')](_0x7b8a('0x8d'),_0x539772,_0x1e2c78[0x0],_0x793cd7);}else{_0x11e53b=_0x793cd7;}}else{logger[_0x7b8a('0x66')](_0x7b8a('0x8e'));}if('undefined'!=typeof _0x3f096c[_0x7b8a('0x7c')]['views']['agent']){var _0x261545=_0x3f096c[_0x7b8a('0x7c')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x261545)){_0x5d171f=path[_0x7b8a('0x4e')](_0x7b8a('0x8d'),_0x539772,_0x1e2c78[0x0],_0x261545);}else{_0x5d171f=_0x261545;}}else{logger[_0x7b8a('0x66')](_0x7b8a('0x8f'));}}else if(_0x50d786===_0x7b8a('0x82')){_0xaa2a5e=_0x3f096c[_0x7b8a('0x7c')][_0x7b8a('0x90')];_0x28a98a=_0x3f096c[_0x7b8a('0x7c')][_0x7b8a('0x91')];if(_0x7b8a('0x20')!=typeof _0x3f096c[_0x7b8a('0x7c')][_0x7b8a('0x7e')]){if(_0x7b8a('0x20')!=typeof _0x3f096c[_0x7b8a('0x7c')]['views'][_0x7b8a('0x7f')]){var _0x793cd7=_0x3f096c[_0x7b8a('0x7c')]['views'][_0x7b8a('0x7f')];if(!/^(f|ht)tps?:\/\//i['test'](_0x793cd7)){_0x11e53b=path[_0x7b8a('0x4e')](_0x7b8a('0x8d'),_0x539772,_0x1e2c78[0x0],_0x793cd7);}else{_0x11e53b=_0x793cd7;}}if('undefined'!=typeof _0x3f096c[_0x7b8a('0x7c')]['views'][_0x7b8a('0x80')]){var _0x261545=_0x3f096c['parameters'][_0x7b8a('0x7e')][_0x7b8a('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x7b8a('0x8c')](_0x261545)){_0x5d171f=path['join'](_0x7b8a('0x8d'),_0x539772,_0x1e2c78[0x0],_0x261545);}else{_0x5d171f=_0x261545;}}}}var _0x486a43={'name':_0x4bffbd,'description':_0x460745,'path':path[_0x7b8a('0x4e')](_0x539772,_0x1e2c78[0x0]),'type':_0x50d786,'sidebar':_0x365203,'icon':_0x154a2c,'adminUrl':_0x11e53b,'agentUrl':_0x5d171f,'scriptName':_0xaa2a5e,'scriptPath':_0x28a98a,'version':_0x244594};removeReferences(_0x5c1d72,null);return db[_0x7b8a('0x31')]['create'](_0x486a43)[_0x7b8a('0x28')](function(_0x2eadf7){var _0x5ed7c7={'role':_0x2f8fba['body']['role'],'userProfileId':_0x2f8fba[_0x7b8a('0x92')]['userProfileId']};if(!_0x5ed7c7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5ed7c7[_0x7b8a('0x93')]==='user'){var _0x506be1=_0x2eadf7[_0x7b8a('0x2a')]({'plain':!![]});return db['UserProfileSection'][_0x7b8a('0x4d')]({'where':{'name':_0x7b8a('0x2b'),'userProfileId':_0x5ed7c7['userProfileId']},'raw':!![]})['then'](function(_0x2688fc){if(_0x2688fc&&_0x2688fc[_0x7b8a('0x94')]===0x0){return db[_0x7b8a('0x95')][_0x7b8a('0x96')]({'name':_0x506be1[_0x7b8a('0x2e')],'resourceId':_0x506be1['id'],'type':_0x2688fc[_0x7b8a('0x2e')],'sectionId':_0x2688fc['id']},{})[_0x7b8a('0x28')](function(){return _0x2eadf7;});}else{return _0x2eadf7;}})[_0x7b8a('0x48')](function(_0x532055){logger['error'](_0x7b8a('0x97'),_0x532055);throw _0x532055;});}return _0x2eadf7;})[_0x7b8a('0x28')](respondWithResult(_0x372e5c,null))['catch'](handleError(_0x372e5c,null));}});}catch(_0x599d7a){_0x372e5c[_0x7b8a('0x1e')](0x1f4)['send'](_0x599d7a);}};function removeReferences(_0x53cfeb,_0x4ced1d){try{if(_0x53cfeb){fs[_0x7b8a('0x65')](_0x53cfeb);logger[_0x7b8a('0x66')](_0x7b8a('0x98'));}if(_0x4ced1d){rimraf(_0x4ced1d,function(){});logger[_0x7b8a('0x66')](_0x7b8a('0x99'));}}catch(_0x19671b){logger[_0x7b8a('0x2d')](_0x19671b);}}exports[_0x7b8a('0x9a')]=function(_0x56260b,_0x3a1037,_0x43e758){return db[_0x7b8a('0x31')][_0x7b8a('0x4d')]({'where':{'id':_0x56260b['params']['id']}})[_0x7b8a('0x28')](handleEntityNotFound(_0x3a1037,null))[_0x7b8a('0x28')](saveUpdates(_0x56260b['body'],null))[_0x7b8a('0x28')](respondWithResult(_0x3a1037,null))[_0x7b8a('0x48')](handleError(_0x3a1037,null));};exports[_0x7b8a('0x9b')]=function(_0x40f11c,_0x399acc,_0x4b829c){return db[_0x7b8a('0x31')][_0x7b8a('0x4d')]({'where':{'id':_0x40f11c[_0x7b8a('0x4a')]['id']}})[_0x7b8a('0x28')](function(_0x9a32f7){if(_0x9a32f7){return _0x9a32f7[_0x7b8a('0x29')]();}})[_0x7b8a('0x28')](function(_0x50f071){rimraf(path[_0x7b8a('0x4e')](config[_0x7b8a('0x6c')],_0x7b8a('0x4f'),path['dirname'](_0x50f071[_0x7b8a('0x5')])),function(){});return _0x50f071;})['then'](handleEntityNotFound(_0x399acc,null))[_0x7b8a('0x28')](respondWithStatusCode(_0x399acc,null))['catch'](handleError(_0x399acc,null));};exports[_0x7b8a('0x9c')]=function(_0x49d896,_0x4fde9b,_0x578ab0){return BPromise['resolve']()['then'](function(){if(!_0x49d896[_0x7b8a('0x37')][_0x7b8a('0x5')]){throw new Error(_0x7b8a('0x9d'));}if(!_0x49d896['query']['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x39c71c=_0x49d896[_0x7b8a('0x37')]['hostname']?_0x49d896[_0x7b8a('0x37')][_0x7b8a('0x9e')]+':'+_0x49d896[_0x7b8a('0x37')][_0x7b8a('0x9f')]:_0x7b8a('0xa0')+_0x49d896[_0x7b8a('0x37')]['port'];var _0x1e008e=_0x49d896['query'][_0x7b8a('0x25')]?_0x49d896[_0x7b8a('0x37')]['json']:!![];var _0x4b4565=_0x49d896[_0x7b8a('0x37')]['encoding']?_0x49d896['query'][_0x7b8a('0xa1')]:null;var _0x4aa3dc={'method':_0x49d896[_0x7b8a('0xa2')],'uri':util[_0x7b8a('0x50')]('%s%s',_0x39c71c,_0x49d896['query'][_0x7b8a('0x5')]),'json':_0x1e008e,'resolveWithFullResponse':!![],'encoding':_0x4b4565,'qs':_0x49d896[_0x7b8a('0x37')]};if(_0x49d896[_0x7b8a('0xa3')]){_0x4aa3dc['headers']=_0x49d896[_0x7b8a('0xa3')];if(_0x4aa3dc[_0x7b8a('0xa3')][_0x7b8a('0xa4')]){delete _0x4aa3dc[_0x7b8a('0xa3')][_0x7b8a('0xa4')];}}if(_0x4aa3dc[_0x7b8a('0xa3')][_0x7b8a('0xa5')]){delete _0x4aa3dc[_0x7b8a('0xa3')]['content-type'];}return rp(_0x4aa3dc);})['then'](function(_0x452ca6){if(_0x452ca6){_0x4fde9b['set'](_0x452ca6[_0x7b8a('0xa3')]);logger['info'](_0x452ca6['body']);if(_[_0x7b8a('0xa6')](_0x49d896[_0x7b8a('0x37')][_0x7b8a('0x5')],_0x7b8a('0x63'))&&_0x452ca6[_0x7b8a('0xa7')]==0x1f4){return _0x4fde9b[_0x7b8a('0x1d')](_0x452ca6['statusCode']);}else{return _0x4fde9b['status'](_0x452ca6[_0x7b8a('0xa7')])['send'](_0x452ca6[_0x7b8a('0x92')]);}}else{return _0x4fde9b['sendStatus'](0xc8);}})[_0x7b8a('0x48')](handleError(_0x4fde9b,null));};exports[_0x7b8a('0xa8')]=function(_0x19aa60,_0x4781b3,_0x19b8ce){return BPromise[_0x7b8a('0xa9')]()[_0x7b8a('0x28')](function(){if(!_0x19aa60[_0x7b8a('0x37')][_0x7b8a('0x5')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x19aa60[_0x7b8a('0x37')][_0x7b8a('0x9f')]){throw new Error(_0x7b8a('0xaa'));}var _0x4a2e44=_0x19aa60[_0x7b8a('0x37')][_0x7b8a('0x9e')]?_0x19aa60['query']['hostname']+':'+_0x19aa60['query'][_0x7b8a('0x9f')]:_0x7b8a('0xa0')+_0x19aa60['query'][_0x7b8a('0x9f')];var _0x3ec39c=_0x19aa60[_0x7b8a('0x37')][_0x7b8a('0x25')]?_0x19aa60[_0x7b8a('0x37')]['json']:!![];var _0x3c9f17=_0x19aa60[_0x7b8a('0x37')][_0x7b8a('0xa1')]?_0x19aa60['query'][_0x7b8a('0xa1')]:null;var _0x15a988={'method':_0x19aa60[_0x7b8a('0xa2')],'uri':util[_0x7b8a('0x50')](_0x7b8a('0xab'),_0x4a2e44,_0x19aa60[_0x7b8a('0x37')][_0x7b8a('0x5')]),'json':_0x3ec39c,'resolveWithFullResponse':!![],'encoding':_0x3c9f17,'body':_0x19aa60['body']};if(_0x19aa60['headers']){_0x15a988[_0x7b8a('0xa3')]=_0x19aa60[_0x7b8a('0xa3')];if(_0x15a988['headers'][_0x7b8a('0xa4')]){delete _0x15a988[_0x7b8a('0xa3')][_0x7b8a('0xa4')];}}if(_0x15a988[_0x7b8a('0xa3')][_0x7b8a('0xa5')]){delete _0x15a988['headers'][_0x7b8a('0xa5')];}return rp(_0x15a988);})['then'](function(_0x553db5){if(_0x553db5){_0x4781b3[_0x7b8a('0x23')](_0x553db5[_0x7b8a('0xa3')]);logger[_0x7b8a('0x66')](_0x553db5[_0x7b8a('0x92')]);return _0x4781b3[_0x7b8a('0x1e')](_0x553db5[_0x7b8a('0xa7')])[_0x7b8a('0xac')](_0x553db5[_0x7b8a('0x92')]);}else{return _0x4781b3[_0x7b8a('0x1d')](0xc8);}})[_0x7b8a('0x48')](handleError(_0x4781b3,null));};
\ No newline at end of file
+var _0xea2e=['agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','version','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptPath','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','%s%s','headers','content-length','endsWith','statusCode','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','method','content-type','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','rimraf','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','register','sendStatus','status','json','undefined','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','Plugins','UserProfileResource','stack','name','send','index','map','Plugin','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','rawAttributes','includeAll','include','find','download','params','server/files/plugins','format','%s.zip','basename','zip','warning','code','ENOENT','error','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','join','dirname','node_modules/**/*','attachments/**/*','finalize','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Temporary\x20file\x20removed','upload','file','extname','root','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','Plugin\x20manifest\x20missing','readFileSync','manifest.json','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin'];(function(_0x41bcc8,_0x30a80b){var _0x167cec=function(_0x2b3c4c){while(--_0x2b3c4c){_0x41bcc8['push'](_0x41bcc8['shift']());}};_0x167cec(++_0x30a80b);}(_0xea2e,0x193));var _0xeea2=function(_0x1e5393,_0x439f51){_0x1e5393=_0x1e5393-0x0;var _0x24174b=_0xea2e[_0x1e5393];return _0x24174b;};'use strict';var emlformat=require(_0xeea2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeea2('0x1'));var jsonpatch=require(_0xeea2('0x2'));var rp=require(_0xeea2('0x3'));var moment=require(_0xeea2('0x4'));var BPromise=require(_0xeea2('0x5'));var Mustache=require(_0xeea2('0x6'));var util=require('util');var path=require(_0xeea2('0x7'));var sox=require(_0xeea2('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeea2('0x9'));var _=require(_0xeea2('0xa'));var squel=require(_0xeea2('0xb'));var crypto=require(_0xeea2('0xc'));var jsforce=require(_0xeea2('0xd'));var deskjs=require(_0xeea2('0xe'));var toCsv=require(_0xeea2('0xf'));var querystring=require('querystring');var Papa=require(_0xeea2('0x10'));var extract=require('extract-zip');var rimraf=require(_0xeea2('0x11'));var archiver=require('archiver');var Redis=require(_0xeea2('0x12'));var authService=require(_0xeea2('0x13'));var qs=require(_0xeea2('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xeea2('0x15'))('api');var utils=require(_0xeea2('0x16'));var config=require(_0xeea2('0x17'));var licenseUtil=require(_0xeea2('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xeea2('0x19')],{'host':_0xeea2('0x1a'),'port':0x18eb});var socket=require(_0xeea2('0x1b'))(new Redis(config[_0xeea2('0x19')]));require('./plugin.socket')[_0xeea2('0x1c')](socket);function respondWithStatusCode(_0x3860ca,_0x132dd8){_0x132dd8=_0x132dd8||0xcc;return function(_0x4507e9){if(_0x4507e9){return _0x3860ca[_0xeea2('0x1d')](_0x132dd8);}return _0x3860ca['status'](_0x132dd8)['end']();};}function respondWithResult(_0x83a2a4,_0x4eb11c){_0x4eb11c=_0x4eb11c||0xc8;return function(_0x4aae7b){if(_0x4aae7b){return _0x83a2a4[_0xeea2('0x1e')](_0x4eb11c)[_0xeea2('0x1f')](_0x4aae7b);}};}function respondWithFilteredResult(_0x432719,_0x456312){return function(_0x3f6dac){if(_0x3f6dac){var _0x5753f8=typeof _0x456312['offset']===_0xeea2('0x20')&&typeof _0x456312['limit']===_0xeea2('0x20');var _0xb1f36=_0x3f6dac['count'];var _0x4e8e8f=_0x5753f8?0x0:_0x456312[_0xeea2('0x21')];var _0x1032d0=_0x5753f8?_0x3f6dac[_0xeea2('0x22')]:_0x456312[_0xeea2('0x21')]+_0x456312['limit'];var _0x117aa3;if(_0x1032d0>=_0xb1f36){_0x1032d0=_0xb1f36;_0x117aa3=0xc8;}else{_0x117aa3=0xce;}_0x432719['status'](_0x117aa3);return _0x432719[_0xeea2('0x23')](_0xeea2('0x24'),_0x4e8e8f+'-'+_0x1032d0+'/'+_0xb1f36)[_0xeea2('0x1f')](_0x3f6dac);}return null;};}function patchUpdates(_0x3bfa12){return function(_0xf073a2){try{jsonpatch[_0xeea2('0x25')](_0xf073a2,_0x3bfa12,!![]);}catch(_0x4b9751){return BPromise[_0xeea2('0x26')](_0x4b9751);}return _0xf073a2[_0xeea2('0x27')]();};}function saveUpdates(_0x414752,_0x54dec5){return function(_0x79eca9){if(_0x79eca9){return _0x79eca9[_0xeea2('0x28')](_0x414752)[_0xeea2('0x29')](function(_0xeb7844){return _0xeb7844;});}return null;};}function removeEntity(_0x16dd5a,_0x2f5222){return function(_0x367f4f){if(_0x367f4f){return _0x367f4f[_0xeea2('0x2a')]()[_0xeea2('0x29')](function(){var _0x32b8cd=_0x367f4f['get']({'plain':!![]});var _0x4d6698=_0xeea2('0x2b');return db[_0xeea2('0x2c')][_0xeea2('0x2a')]({'where':{'type':_0x4d6698,'resourceId':_0x32b8cd['id']}})[_0xeea2('0x29')](function(){return _0x367f4f;});})['then'](function(){_0x16dd5a[_0xeea2('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23a33e,_0x3d5414){return function(_0x37aeb7){if(!_0x37aeb7){_0x23a33e['sendStatus'](0x194);}return _0x37aeb7;};}function handleError(_0xdb9ca3,_0x5761ca){_0x5761ca=_0x5761ca||0x1f4;return function(_0x43a42b){logger['error'](_0x43a42b[_0xeea2('0x2d')]);if(_0x43a42b[_0xeea2('0x2e')]){delete _0x43a42b[_0xeea2('0x2e')];}_0xdb9ca3[_0xeea2('0x1e')](_0x5761ca)[_0xeea2('0x2f')](_0x43a42b);};}exports[_0xeea2('0x30')]=function(_0x114f89,_0x3a9a65){var _0x383aab={},_0x30e832={},_0x58d49a={'count':0x0,'rows':[]};var _0x24d363=_[_0xeea2('0x31')](db[_0xeea2('0x32')]['rawAttributes'],function(_0x3a7f60){return{'name':_0x3a7f60[_0xeea2('0x33')],'type':_0x3a7f60[_0xeea2('0x34')][_0xeea2('0x35')]};});_0x30e832[_0xeea2('0x36')]=_['map'](_0x24d363,'name');_0x30e832[_0xeea2('0x37')]=_[_0xeea2('0x38')](_0x114f89['query']);_0x30e832[_0xeea2('0x39')]=_[_0xeea2('0x3a')](_0x30e832[_0xeea2('0x36')],_0x30e832['query']);_0x383aab['attributes']=_[_0xeea2('0x3a')](_0x30e832['model'],qs[_0xeea2('0x3b')](_0x114f89[_0xeea2('0x37')][_0xeea2('0x3b')]));_0x383aab[_0xeea2('0x3c')]=_0x383aab[_0xeea2('0x3c')][_0xeea2('0x3d')]?_0x383aab[_0xeea2('0x3c')]:_0x30e832['model'];if(!_0x114f89[_0xeea2('0x37')][_0xeea2('0x3e')](_0xeea2('0x3f'))){_0x383aab['limit']=qs[_0xeea2('0x40')](_0x114f89[_0xeea2('0x37')][_0xeea2('0x40')]);_0x383aab[_0xeea2('0x21')]=qs[_0xeea2('0x21')](_0x114f89[_0xeea2('0x37')]['offset']);}_0x383aab[_0xeea2('0x41')]=qs[_0xeea2('0x42')](_0x114f89[_0xeea2('0x37')]['sort']);_0x383aab[_0xeea2('0x43')]=qs[_0xeea2('0x39')](_[_0xeea2('0x44')](_0x114f89['query'],_0x30e832['filters']),_0x24d363);if(_0x114f89['query']['filter']){_0x383aab[_0xeea2('0x43')]=_[_0xeea2('0x45')](_0x383aab[_0xeea2('0x43')],{'$or':_[_0xeea2('0x31')](_0x24d363,function(_0x39dc15){if(_0x39dc15[_0xeea2('0x34')]!==_0xeea2('0x46')){var _0x190504={};_0x190504[_0x39dc15[_0xeea2('0x2e')]]={'$like':'%'+_0x114f89['query'][_0xeea2('0x47')]+'%'};return _0x190504;}})});}_0x383aab=_[_0xeea2('0x45')]({},_0x383aab,_0x114f89[_0xeea2('0x48')]);var _0x534591={'where':_0x383aab['where']};return db[_0xeea2('0x32')][_0xeea2('0x22')](_0x534591)[_0xeea2('0x29')](function(_0x3970f){_0x58d49a['count']=_0x3970f;if(_0x114f89['query']['includeAll']){_0x383aab['include']=[{'all':!![]}];}return db['Plugin'][_0xeea2('0x49')](_0x383aab);})[_0xeea2('0x29')](function(_0x1e7627){_0x58d49a[_0xeea2('0x4a')]=_0x1e7627;return _0x58d49a;})[_0xeea2('0x29')](respondWithFilteredResult(_0x3a9a65,_0x383aab))[_0xeea2('0x4b')](handleError(_0x3a9a65,null));};exports['show']=function(_0x15f352,_0x420361){var _0x10282f={'raw':!![],'where':{'id':_0x15f352['params']['id']}},_0x1fa91b={};_0x1fa91b[_0xeea2('0x36')]=_[_0xeea2('0x38')](db[_0xeea2('0x32')][_0xeea2('0x4c')]);_0x1fa91b[_0xeea2('0x37')]=_['keys'](_0x15f352[_0xeea2('0x37')]);_0x1fa91b['filters']=_[_0xeea2('0x3a')](_0x1fa91b[_0xeea2('0x36')],_0x1fa91b[_0xeea2('0x37')]);_0x10282f[_0xeea2('0x3c')]=_['intersection'](_0x1fa91b['model'],qs[_0xeea2('0x3b')](_0x15f352[_0xeea2('0x37')][_0xeea2('0x3b')]));_0x10282f[_0xeea2('0x3c')]=_0x10282f['attributes'][_0xeea2('0x3d')]?_0x10282f[_0xeea2('0x3c')]:_0x1fa91b[_0xeea2('0x36')];if(_0x15f352['query'][_0xeea2('0x4d')]){_0x10282f[_0xeea2('0x4e')]=[{'all':!![]}];}_0x10282f=_[_0xeea2('0x45')]({},_0x10282f,_0x15f352['options']);return db[_0xeea2('0x32')][_0xeea2('0x4f')](_0x10282f)[_0xeea2('0x29')](handleEntityNotFound(_0x420361,null))[_0xeea2('0x29')](respondWithResult(_0x420361,null))[_0xeea2('0x4b')](handleError(_0x420361,null));};exports[_0xeea2('0x50')]=function(_0x1f321b,_0x5783a0,_0xa005){return db[_0xeea2('0x32')][_0xeea2('0x4f')]({'where':{'id':_0x1f321b[_0xeea2('0x51')]['id']},'attributes':[_0xeea2('0x2e'),_0xeea2('0x7')],'raw':!![]})[_0xeea2('0x29')](handleEntityNotFound(_0x5783a0,null))[_0xeea2('0x29')](function(_0x305b53){if(_0x305b53){var _0x3b616f=path['join'](config['root'],_0xeea2('0x52'),util[_0xeea2('0x53')](_0xeea2('0x54'),path[_0xeea2('0x55')](_0x305b53['path'])));var _0x455ec5=fs['createWriteStream'](_0x3b616f);var _0x59bbe9=archiver(_0xeea2('0x56'),{'zlib':{'level':0x9}});_0x59bbe9['on'](_0xeea2('0x57'),function(_0x3c5fa9){if(_0x3c5fa9[_0xeea2('0x58')]===_0xeea2('0x59')){logger[_0xeea2('0x5a')](_0x3c5fa9);}else{throw new db[(_0xeea2('0x5b'))][(_0xeea2('0x5c'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x59bbe9['on'](_0xeea2('0x5a'),function(_0x1f7eee){throw new db['Sequelize'][(_0xeea2('0x5c'))](_0xeea2('0x5d'));});_0x59bbe9[_0xeea2('0x5e')](_0x455ec5);_0x59bbe9[_0xeea2('0x5f')](_0xeea2('0x60'),{'cwd':path[_0xeea2('0x61')](config['root'],_0xeea2('0x52'),path[_0xeea2('0x62')](_0x305b53['path'])),'ignore':[path[_0xeea2('0x61')](path[_0xeea2('0x55')](_0x305b53[_0xeea2('0x7')]),_0xeea2('0x63')),path['join'](path['basename'](_0x305b53[_0xeea2('0x7')]),_0xeea2('0x64'))],'nodir':!![]})[_0xeea2('0x65')]();_0x455ec5['on']('close',function(){if(!fs[_0xeea2('0x66')](_0x3b616f)){throw new db[(_0xeea2('0x5b'))][(_0xeea2('0x5c'))](_0xeea2('0x67'));}return _0x5783a0[_0xeea2('0x50')](_0x3b616f,util[_0xeea2('0x53')](_0xeea2('0x54'),path[_0xeea2('0x55')](_0x305b53[_0xeea2('0x7')])),function(_0x29eac3){if(_0x29eac3){throw new db[(_0xeea2('0x5b'))][(_0xeea2('0x5c'))](_0xeea2('0x68'));}fs[_0xeea2('0x69')](_0x3b616f);logger[_0xeea2('0x6a')]('Download\x20completed');logger[_0xeea2('0x6a')](_0xeea2('0x6b'));});});}return null;})['catch'](handleError(_0x5783a0,null));};exports[_0xeea2('0x6c')]=function(_0x40bb63,_0x4de7df,_0x4aae2b){var _0x3d7fd9=path[_0xeea2('0x55')](_0x40bb63[_0xeea2('0x6d')]['filename'],path[_0xeea2('0x6e')](_0x40bb63[_0xeea2('0x6d')]['filename']));var _0x576f4=path[_0xeea2('0x61')](config[_0xeea2('0x6f')],_0xeea2('0x52'),_0x40bb63['file'][_0xeea2('0x70')]);var _0x3267cb=path[_0xeea2('0x61')](config[_0xeea2('0x6f')],_0xeea2('0x52'),_0x3d7fd9);logger[_0xeea2('0x6a')](_0xeea2('0x71'),_0x576f4);logger[_0xeea2('0x6a')](_0xeea2('0x72'),_0x3267cb);try{fs['chmodSync'](_0x576f4,parseInt(_0xeea2('0x73'),0x8));extract(_0x576f4,{'dir':_0x3267cb},function(_0x170bae){if(_0x170bae){logger[_0xeea2('0x5a')](_0x170bae);handleError(_0x170bae,!![]);};var _0x4cd18a=fs[_0xeea2('0x74')](_0x3267cb);if(_0x4cd18a['length']>0x1){removeReferences(_0x576f4,_0x3267cb);logger['error'](_0xeea2('0x75'));return _0x4aae2b(new Error(_0xeea2('0x75')));}var _0x350f62=fs[_0xeea2('0x76')](path[_0xeea2('0x61')](_0x3267cb,_0x4cd18a[0x0]));if(_0x350f62[_0xeea2('0x77')]()){removeReferences(_0x576f4,_0x3267cb);logger['error'](_0xeea2('0x75'));return _0x4aae2b(new Error(_0xeea2('0x75')));}if(_0x350f62[_0xeea2('0x78')]()){var _0x12b5ba=fs['readdirSync'](path['join'](_0x3267cb,_0x4cd18a[0x0]));if(_0x12b5ba['length']===0x0){removeReferences(_0x576f4,_0x3267cb);logger[_0xeea2('0x5a')]('Invalid\x20plugin\x20structure');return _0x4aae2b(new Error(_0xeea2('0x75')));}var _0x4a7949=_0x12b5ba[_0xeea2('0x79')](function(_0x1ae995){return _0x1ae995==='manifest.json';});if(!_0x4a7949){return _0x4aae2b(new Error(_0xeea2('0x7a')));}var _0x5e3fd8=fs[_0xeea2('0x7b')](path[_0xeea2('0x61')](_0x3267cb,_0x4cd18a[0x0],_0xeea2('0x7c')));var _0x1fa577=JSON['parse'](_0x5e3fd8);if('undefined'==typeof _0x1fa577['name']){return _0x4aae2b(new Error(_0xeea2('0x7d')));}if(_0xeea2('0x20')==typeof _0x1fa577[_0xeea2('0x34')]){return _0x4aae2b(new Error(_0xeea2('0x7e')));}if(_0xeea2('0x20')==typeof _0x1fa577['version']){return _0x4aae2b(new Error(_0xeea2('0x7f')));}if(_0xeea2('0x20')==typeof _0x1fa577[_0xeea2('0x80')]){return _0x4aae2b(new Error(_0xeea2('0x81')));}if(_0x1fa577[_0xeea2('0x34')]===_0xeea2('0x82')){if('undefined'==typeof _0x1fa577[_0xeea2('0x80')][_0xeea2('0x83')]){return _0x4aae2b(new Error(_0xeea2('0x84')));}if('undefined'==typeof _0x1fa577[_0xeea2('0x80')]['views'][_0xeea2('0x85')]&&_0xeea2('0x20')==typeof _0x1fa577['parameters']['views'][_0xeea2('0x86')]){return _0x4aae2b(new Error(_0xeea2('0x87')));}}else if(_0x1fa577[_0xeea2('0x34')]===_0xeea2('0x88')){if(_0xeea2('0x20')==typeof _0x1fa577[_0xeea2('0x80')][_0xeea2('0x89')]){return _0x4aae2b(new Error(_0xeea2('0x8a')));}if('undefined'==typeof _0x1fa577[_0xeea2('0x80')]['scriptPath']){return _0x4aae2b(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x4aae2b(new Error(_0xeea2('0x8b')));}var _0x35716e=_0x1fa577[_0xeea2('0x2e')];var _0x45b02d=_0x1fa577[_0xeea2('0x8c')];var _0x34a567=_0x1fa577[_0xeea2('0x34')];var _0x1832cd=_0x1fa577['sidebar']?_0x1fa577[_0xeea2('0x8d')]:_0xeea2('0x8e');var _0x50ce2e=_0x1fa577[_0xeea2('0x8f')]?_0x1fa577[_0xeea2('0x8f')]:'icon-apps';var _0x429ca5='';var _0x3ff058='';var _0x57e845='';var _0xcc4e3a='';var _0x3989c6=_0x1fa577[_0xeea2('0x90')];if(_0x34a567==='html'){if(_0xeea2('0x20')!=typeof _0x1fa577['parameters'][_0xeea2('0x83')][_0xeea2('0x85')]){var _0x49dcd5=_0x1fa577[_0xeea2('0x80')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i[_0xeea2('0x91')](_0x49dcd5)){_0x429ca5=path[_0xeea2('0x61')](_0xeea2('0x92'),_0x3d7fd9,_0x4cd18a[0x0],_0x49dcd5);}else{_0x429ca5=_0x49dcd5;}}else{logger[_0xeea2('0x6a')](_0xeea2('0x93'));}if(_0xeea2('0x20')!=typeof _0x1fa577[_0xeea2('0x80')]['views'][_0xeea2('0x86')]){var _0x7deb68=_0x1fa577[_0xeea2('0x80')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0xeea2('0x91')](_0x7deb68)){_0x3ff058=path[_0xeea2('0x61')]('plugins',_0x3d7fd9,_0x4cd18a[0x0],_0x7deb68);}else{_0x3ff058=_0x7deb68;}}else{logger[_0xeea2('0x6a')](_0xeea2('0x94'));}}else if(_0x34a567===_0xeea2('0x88')){_0x57e845=_0x1fa577[_0xeea2('0x80')][_0xeea2('0x89')];_0xcc4e3a=_0x1fa577[_0xeea2('0x80')][_0xeea2('0x95')];if(_0xeea2('0x20')!=typeof _0x1fa577[_0xeea2('0x80')]['views']){if('undefined'!=typeof _0x1fa577[_0xeea2('0x80')][_0xeea2('0x83')][_0xeea2('0x85')]){var _0x49dcd5=_0x1fa577[_0xeea2('0x80')][_0xeea2('0x83')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xeea2('0x91')](_0x49dcd5)){_0x429ca5=path[_0xeea2('0x61')](_0xeea2('0x92'),_0x3d7fd9,_0x4cd18a[0x0],_0x49dcd5);}else{_0x429ca5=_0x49dcd5;}}if(_0xeea2('0x20')!=typeof _0x1fa577[_0xeea2('0x80')][_0xeea2('0x83')][_0xeea2('0x86')]){var _0x7deb68=_0x1fa577[_0xeea2('0x80')][_0xeea2('0x83')][_0xeea2('0x86')];if(!/^(f|ht)tps?:\/\//i[_0xeea2('0x91')](_0x7deb68)){_0x3ff058=path[_0xeea2('0x61')](_0xeea2('0x92'),_0x3d7fd9,_0x4cd18a[0x0],_0x7deb68);}else{_0x3ff058=_0x7deb68;}}}}var _0xf595a9={'name':_0x35716e,'description':_0x45b02d,'path':path[_0xeea2('0x61')](_0x3d7fd9,_0x4cd18a[0x0]),'type':_0x34a567,'sidebar':_0x1832cd,'icon':_0x50ce2e,'adminUrl':_0x429ca5,'agentUrl':_0x3ff058,'scriptName':_0x57e845,'scriptPath':_0xcc4e3a,'version':_0x3989c6};removeReferences(_0x576f4,null);return db[_0xeea2('0x32')][_0xeea2('0x96')](_0xf595a9)['then'](function(_0x460ae0){var _0x266703={'role':_0x40bb63[_0xeea2('0x97')][_0xeea2('0x98')],'userProfileId':_0x40bb63['body'][_0xeea2('0x99')]};if(!_0x266703)throw new Error(_0xeea2('0x9a'));if(_0x266703[_0xeea2('0x98')]===_0xeea2('0x9b')){var _0x31d3e5=_0x460ae0[_0xeea2('0x9c')]({'plain':!![]});return db[_0xeea2('0x9d')][_0xeea2('0x4f')]({'where':{'name':_0xeea2('0x2b'),'userProfileId':_0x266703[_0xeea2('0x99')]},'raw':!![]})[_0xeea2('0x29')](function(_0x88d417){if(_0x88d417&&_0x88d417[_0xeea2('0x9e')]===0x0){return db[_0xeea2('0x2c')][_0xeea2('0x96')]({'name':_0x31d3e5[_0xeea2('0x2e')],'resourceId':_0x31d3e5['id'],'type':_0x88d417[_0xeea2('0x2e')],'sectionId':_0x88d417['id']},{})[_0xeea2('0x29')](function(){return _0x460ae0;});}else{return _0x460ae0;}})[_0xeea2('0x4b')](function(_0x167636){logger[_0xeea2('0x5a')](_0xeea2('0x9f'),_0x167636);throw _0x167636;});}return _0x460ae0;})['then'](respondWithResult(_0x4de7df,null))[_0xeea2('0x4b')](handleError(_0x4de7df,null));}});}catch(_0x2452e5){_0x4de7df[_0xeea2('0x1e')](0x1f4)['send'](_0x2452e5);}};function removeReferences(_0x19dd0a,_0x4d0eba){try{if(_0x19dd0a){fs[_0xeea2('0x69')](_0x19dd0a);logger[_0xeea2('0x6a')](_0xeea2('0xa0'));}if(_0x4d0eba){rimraf(_0x4d0eba,function(){});logger[_0xeea2('0x6a')](_0xeea2('0xa1'));}}catch(_0x24c82f){logger['error'](_0x24c82f);}}exports[_0xeea2('0x28')]=function(_0xc434,_0x2da384,_0x185912){return db['Plugin'][_0xeea2('0x4f')]({'where':{'id':_0xc434[_0xeea2('0x51')]['id']}})[_0xeea2('0x29')](handleEntityNotFound(_0x2da384,null))[_0xeea2('0x29')](saveUpdates(_0xc434[_0xeea2('0x97')],null))[_0xeea2('0x29')](respondWithResult(_0x2da384,null))[_0xeea2('0x4b')](handleError(_0x2da384,null));};exports[_0xeea2('0xa2')]=function(_0x281925,_0x5c6998,_0x2eaf68){return db[_0xeea2('0x32')][_0xeea2('0x4f')]({'where':{'id':_0x281925[_0xeea2('0x51')]['id']}})[_0xeea2('0x29')](function(_0x2c5798){if(_0x2c5798){return _0x2c5798[_0xeea2('0x2a')]();}})[_0xeea2('0x29')](function(_0x15ddcd){rimraf(path[_0xeea2('0x61')](config['root'],'server/files/plugins',path[_0xeea2('0x62')](_0x15ddcd[_0xeea2('0x7')])),function(){});return _0x15ddcd;})[_0xeea2('0x29')](handleEntityNotFound(_0x5c6998,null))['then'](respondWithStatusCode(_0x5c6998,null))[_0xeea2('0x4b')](handleError(_0x5c6998,null));};exports[_0xeea2('0xa3')]=function(_0x166793,_0x39943c,_0x230537){return BPromise[_0xeea2('0xa4')]()[_0xeea2('0x29')](function(){if(!_0x166793['query'][_0xeea2('0x7')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x166793[_0xeea2('0x37')][_0xeea2('0xa5')]){throw new Error(_0xeea2('0xa6'));}var _0x30f20a=_0x166793[_0xeea2('0x37')][_0xeea2('0xa7')]?_0x166793[_0xeea2('0x37')][_0xeea2('0xa7')]+':'+_0x166793[_0xeea2('0x37')][_0xeea2('0xa5')]:_0xeea2('0xa8')+_0x166793[_0xeea2('0x37')][_0xeea2('0xa5')];var _0x19edc1=_0x166793[_0xeea2('0x37')]['json']?_0x166793[_0xeea2('0x37')][_0xeea2('0x1f')]:!![];var _0x5a1bb8=_0x166793[_0xeea2('0x37')][_0xeea2('0xa9')]?_0x166793[_0xeea2('0x37')]['encoding']:null;var _0x5ec6e2={'method':_0x166793['method'],'uri':util[_0xeea2('0x53')](_0xeea2('0xaa'),_0x30f20a,_0x166793[_0xeea2('0x37')]['path']),'json':_0x19edc1,'resolveWithFullResponse':!![],'encoding':_0x5a1bb8,'qs':_0x166793[_0xeea2('0x37')]};if(_0x166793[_0xeea2('0xab')]){_0x5ec6e2[_0xeea2('0xab')]=_0x166793[_0xeea2('0xab')];if(_0x5ec6e2[_0xeea2('0xab')]['content-length']){delete _0x5ec6e2[_0xeea2('0xab')][_0xeea2('0xac')];}}if(_0x5ec6e2[_0xeea2('0xab')]['content-type']){delete _0x5ec6e2[_0xeea2('0xab')]['content-type'];}return rp(_0x5ec6e2);})[_0xeea2('0x29')](function(_0x19eea1){if(_0x19eea1){_0x39943c[_0xeea2('0x23')](_0x19eea1[_0xeea2('0xab')]);logger['info'](_0x19eea1[_0xeea2('0x97')]);if(_[_0xeea2('0xad')](_0x166793[_0xeea2('0x37')][_0xeea2('0x7')],'download')&&_0x19eea1[_0xeea2('0xae')]==0x1f4){return _0x39943c[_0xeea2('0x1d')](_0x19eea1[_0xeea2('0xae')]);}else{return _0x39943c[_0xeea2('0x1e')](_0x19eea1[_0xeea2('0xae')])[_0xeea2('0x2f')](_0x19eea1[_0xeea2('0x97')]);}}else{return _0x39943c[_0xeea2('0x1d')](0xc8);}})[_0xeea2('0x4b')](handleError(_0x39943c,null));};exports[_0xeea2('0xaf')]=function(_0x456ff3,_0x4f20fc,_0x31b4ce){return BPromise['resolve']()[_0xeea2('0x29')](function(){if(!_0x456ff3[_0xeea2('0x37')][_0xeea2('0x7')]){throw new Error(_0xeea2('0xb0'));}if(!_0x456ff3[_0xeea2('0x37')][_0xeea2('0xa5')]){throw new Error(_0xeea2('0xa6'));}var _0x3115aa=_0x456ff3['query'][_0xeea2('0xa7')]?_0x456ff3['query'][_0xeea2('0xa7')]+':'+_0x456ff3[_0xeea2('0x37')][_0xeea2('0xa5')]:'http://localhost:'+_0x456ff3[_0xeea2('0x37')][_0xeea2('0xa5')];var _0x6c2787=_0x456ff3[_0xeea2('0x37')]['json']?_0x456ff3[_0xeea2('0x37')][_0xeea2('0x1f')]:!![];var _0x48c9d2=_0x456ff3[_0xeea2('0x37')][_0xeea2('0xa9')]?_0x456ff3[_0xeea2('0x37')][_0xeea2('0xa9')]:null;var _0x3a7649={'method':_0x456ff3[_0xeea2('0xb1')],'uri':util['format'](_0xeea2('0xaa'),_0x3115aa,_0x456ff3[_0xeea2('0x37')]['path']),'json':_0x6c2787,'resolveWithFullResponse':!![],'encoding':_0x48c9d2,'body':_0x456ff3['body']};if(_0x456ff3[_0xeea2('0xab')]){_0x3a7649[_0xeea2('0xab')]=_0x456ff3[_0xeea2('0xab')];if(_0x3a7649[_0xeea2('0xab')]['content-length']){delete _0x3a7649[_0xeea2('0xab')][_0xeea2('0xac')];}}if(_0x3a7649[_0xeea2('0xab')][_0xeea2('0xb2')]){delete _0x3a7649['headers'][_0xeea2('0xb2')];}return rp(_0x3a7649);})[_0xeea2('0x29')](function(_0x5247aa){if(_0x5247aa){_0x4f20fc[_0xeea2('0x23')](_0x5247aa[_0xeea2('0xab')]);logger['info'](_0x5247aa['body']);return _0x4f20fc['status'](_0x5247aa[_0xeea2('0xae')])[_0xeea2('0x2f')](_0x5247aa[_0xeea2('0x97')]);}else{return _0x4f20fc['sendStatus'](0xc8);}})['catch'](handleError(_0x4f20fc,null));};
\ No newline at end of file
index 8a4c82f..0151e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1224=['../../mysqldb','Plugin','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x29414b,_0x83687c){var _0x336dc6=function(_0x224241){while(--_0x224241){_0x29414b['push'](_0x29414b['shift']());}};_0x336dc6(++_0x83687c);}(_0x1224,0x10d));var _0x4122=function(_0x4227f7,_0x5e2633){_0x4227f7=_0x4227f7-0x0;var _0x4d394e=_0x1224[_0x4227f7];return _0x4d394e;};'use strict';var EventEmitter=require(_0x4122('0x0'));var Plugin=require(_0x4122('0x1'))['db'][_0x4122('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x4122('0x3')](0x0);var events={'afterCreate':_0x4122('0x4'),'afterUpdate':_0x4122('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1b3b05){return function(_0x1f1533,_0x2f506b,_0x4d5e5b){PluginEvents[_0x4122('0x6')](_0x1b3b05+':'+_0x1f1533['id'],_0x1f1533);PluginEvents[_0x4122('0x6')](_0x1b3b05,_0x1f1533);_0x4d5e5b(null);};}for(var e in events){if(events[_0x4122('0x7')](e)){var event=events[e];Plugin[_0x4122('0x8')](e,emitEvent(event));}}module[_0x4122('0x9')]=PluginEvents;
\ No newline at end of file
+var _0x9bd9=['events','../../mysqldb','Plugin','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x3c2bfe,_0x550be9){var _0x1f7cd2=function(_0x369ada){while(--_0x369ada){_0x3c2bfe['push'](_0x3c2bfe['shift']());}};_0x1f7cd2(++_0x550be9);}(_0x9bd9,0x1a4));var _0x99bd=function(_0x19115e,_0x507bab){_0x19115e=_0x19115e-0x0;var _0x45bbd4=_0x9bd9[_0x19115e];return _0x45bbd4;};'use strict';var EventEmitter=require(_0x99bd('0x0'));var Plugin=require(_0x99bd('0x1'))['db'][_0x99bd('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x99bd('0x3')](0x0);var events={'afterCreate':_0x99bd('0x4'),'afterUpdate':_0x99bd('0x5'),'afterDestroy':'remove'};function emitEvent(_0x34aff7){return function(_0x4a0491,_0x204fbb,_0x1b3141){PluginEvents['emit'](_0x34aff7+':'+_0x4a0491['id'],_0x4a0491);PluginEvents[_0x99bd('0x6')](_0x34aff7,_0x4a0491);_0x1b3141(null);};}for(var e in events){if(events[_0x99bd('0x7')](e)){var event=events[e];Plugin[_0x99bd('0x8')](e,emitEvent(event));}}module[_0x99bd('0x9')]=PluginEvents;
\ No newline at end of file
index 08d945e..4b9a74c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7f4=['exports','define','Plugin','plugins','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x25ae8e,_0x75fcf){var _0x10822f=function(_0x5bf24f){while(--_0x5bf24f){_0x25ae8e['push'](_0x25ae8e['shift']());}};_0x10822f(++_0x75fcf);}(_0xb7f4,0x160));var _0x4b7f=function(_0x56267f,_0xf291f2){_0x56267f=_0x56267f-0x0;var _0x152bad=_0xb7f4[_0x56267f];return _0x152bad;};'use strict';var _=require(_0x4b7f('0x0'));var util=require(_0x4b7f('0x1'));var logger=require('../../config/logger')(_0x4b7f('0x2'));var moment=require(_0x4b7f('0x3'));var BPromise=require('bluebird');var rp=require(_0x4b7f('0x4'));var fs=require('fs');var path=require(_0x4b7f('0x5'));var rimraf=require(_0x4b7f('0x6'));var config=require(_0x4b7f('0x7'));var attributes=require('./plugin.attributes');module[_0x4b7f('0x8')]=function(_0x535285,_0x57ffff){return _0x535285[_0x4b7f('0x9')](_0x4b7f('0xa'),attributes,{'tableName':_0x4b7f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2395=['request-promise','rimraf','../../config/environment','./plugin.attributes','define','plugins','util','../../config/logger','api','bluebird'];(function(_0x215c73,_0x272244){var _0x3287b2=function(_0x59c9bc){while(--_0x59c9bc){_0x215c73['push'](_0x215c73['shift']());}};_0x3287b2(++_0x272244);}(_0x2395,0x114));var _0x5239=function(_0x51e4a4,_0x35e6d7){_0x51e4a4=_0x51e4a4-0x0;var _0x185ad6=_0x2395[_0x51e4a4];return _0x185ad6;};'use strict';var _=require('lodash');var util=require(_0x5239('0x0'));var logger=require(_0x5239('0x1'))(_0x5239('0x2'));var moment=require('moment');var BPromise=require(_0x5239('0x3'));var rp=require(_0x5239('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5239('0x5'));var config=require(_0x5239('0x6'));var attributes=require(_0x5239('0x7'));module['exports']=function(_0x5c4428,_0x30e7b5){return _0x5c4428[_0x5239('0x8')]('Plugin',attributes,{'tableName':_0x5239('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f47ada4..113c844 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x082e=['debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreatePlugin','Plugin','create','body','options','raw','catch','lodash','util','moment','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent'];(function(_0xb26507,_0x18921f){var _0x3f2016=function(_0x62d9f3){while(--_0x62d9f3){_0xb26507['push'](_0xb26507['shift']());}};_0x3f2016(++_0x18921f);}(_0x082e,0x116));var _0xe082=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x082e[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xe082('0x0'));var util=require(_0xe082('0x1'));var moment=require(_0xe082('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe082('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe082('0x4'));var logger=require('../../config/logger')(_0xe082('0x5'));var config=require(_0xe082('0x6'));var jayson=require(_0xe082('0x7'));var client=jayson['client'][_0xe082('0x8')]({'port':0x232a});config[_0xe082('0x9')]=_[_0xe082('0xa')](config[_0xe082('0x9')],{'host':_0xe082('0xb'),'port':0x18eb});var socket=require(_0xe082('0xc'))(new Redis(config['redis']));require(_0xe082('0xd'))['register'](socket);function respondWithRpcPromise(_0x1d6877,_0x277a32,_0x42f541){return new BPromise(function(_0x200ae9,_0x4752fa){return client[_0xe082('0xe')](_0x1d6877,_0x42f541)[_0xe082('0xf')](function(_0x2bafe8){logger[_0xe082('0x10')](_0xe082('0x11'),_0x277a32,_0xe082('0x12'));logger[_0xe082('0x13')](_0xe082('0x14'),_0x277a32,_0xe082('0x12'),JSON[_0xe082('0x15')](_0x2bafe8));if(_0x2bafe8[_0xe082('0x16')]){if(_0x2bafe8[_0xe082('0x16')][_0xe082('0x17')]===0x1f4){logger[_0xe082('0x16')]('Plugin,\x20%s,\x20%s',_0x277a32,_0x2bafe8[_0xe082('0x16')]['message']);return _0x4752fa(_0x2bafe8[_0xe082('0x16')][_0xe082('0x18')]);}logger[_0xe082('0x16')](_0xe082('0x11'),_0x277a32,_0x2bafe8['error']['message']);return _0x200ae9(_0x2bafe8[_0xe082('0x16')]['message']);}else{logger['info']('Plugin,\x20%s,\x20%s',_0x277a32,_0xe082('0x12'));_0x200ae9(_0x2bafe8[_0xe082('0x19')][_0xe082('0x18')]);}})['catch'](function(_0x5be84){logger['error'](_0xe082('0x11'),_0x277a32,_0x5be84);_0x4752fa(_0x5be84);});});}exports[_0xe082('0x1a')]=function(_0x4c5bde){var _0xb60631=this;return new Promise(function(_0x238cd4,_0x2659dd){return db[_0xe082('0x1b')][_0xe082('0x1c')](_0x4c5bde[_0xe082('0x1d')],{'raw':_0x4c5bde['options']?_0x4c5bde[_0xe082('0x1e')][_0xe082('0x1f')]===undefined?!![]:![]:!![]})[_0xe082('0xf')](function(_0x4dd58a){logger[_0xe082('0x10')](_0xe082('0x1a'),_0x4c5bde);logger[_0xe082('0x13')](_0xe082('0x1a'),_0x4c5bde,JSON[_0xe082('0x15')](_0x4dd58a));_0x238cd4(_0x4dd58a);})[_0xe082('0x20')](function(_0x43e217){logger[_0xe082('0x16')](_0xe082('0x1a'),_0x43e217[_0xe082('0x18')],_0x4c5bde);_0x2659dd(_0xb60631[_0xe082('0x16')](0x1f4,_0x43e217[_0xe082('0x18')]));});});};
\ No newline at end of file
+var _0x90c1=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','debug','Plugin,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','Plugin','create','body','options','raw','CreatePlugin','stringify'];(function(_0x49c999,_0x16b088){var _0xedc343=function(_0x2df668){while(--_0x2df668){_0x49c999['push'](_0x49c999['shift']());}};_0xedc343(++_0x16b088);}(_0x90c1,0x131));var _0x190c=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x90c1[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x190c('0x0'));var util=require(_0x190c('0x1'));var moment=require(_0x190c('0x2'));var BPromise=require('bluebird');var rs=require(_0x190c('0x3'));var fs=require('fs');var Redis=require(_0x190c('0x4'));var db=require(_0x190c('0x5'))['db'];var utils=require(_0x190c('0x6'));var logger=require(_0x190c('0x7'))(_0x190c('0x8'));var config=require(_0x190c('0x9'));var jayson=require(_0x190c('0xa'));var client=jayson[_0x190c('0xb')][_0x190c('0xc')]({'port':0x232a});config[_0x190c('0xd')]=_[_0x190c('0xe')](config[_0x190c('0xd')],{'host':_0x190c('0xf'),'port':0x18eb});var socket=require(_0x190c('0x10'))(new Redis(config[_0x190c('0xd')]));require(_0x190c('0x11'))[_0x190c('0x12')](socket);function respondWithRpcPromise(_0x4286f6,_0x1cc15a,_0x45d26d){return new BPromise(function(_0x431964,_0x331e82){return client[_0x190c('0x13')](_0x4286f6,_0x45d26d)[_0x190c('0x14')](function(_0x4036ea){logger[_0x190c('0x15')](_0x190c('0x16'),_0x1cc15a,'request\x20sent');logger[_0x190c('0x17')](_0x190c('0x18'),_0x1cc15a,'request\x20sent',JSON['stringify'](_0x4036ea));if(_0x4036ea['error']){if(_0x4036ea[_0x190c('0x19')][_0x190c('0x1a')]===0x1f4){logger[_0x190c('0x19')](_0x190c('0x16'),_0x1cc15a,_0x4036ea[_0x190c('0x19')][_0x190c('0x1b')]);return _0x331e82(_0x4036ea[_0x190c('0x19')][_0x190c('0x1b')]);}logger[_0x190c('0x19')](_0x190c('0x16'),_0x1cc15a,_0x4036ea[_0x190c('0x19')][_0x190c('0x1b')]);return _0x431964(_0x4036ea['error'][_0x190c('0x1b')]);}else{logger[_0x190c('0x15')](_0x190c('0x16'),_0x1cc15a,_0x190c('0x1c'));_0x431964(_0x4036ea[_0x190c('0x1d')][_0x190c('0x1b')]);}})['catch'](function(_0x46ec2a){logger[_0x190c('0x19')](_0x190c('0x16'),_0x1cc15a,_0x46ec2a);_0x331e82(_0x46ec2a);});});}exports['CreatePlugin']=function(_0x42ae5a){var _0x515792=this;return new Promise(function(_0xfd2364,_0x3de37e){return db[_0x190c('0x1e')][_0x190c('0x1f')](_0x42ae5a[_0x190c('0x20')],{'raw':_0x42ae5a['options']?_0x42ae5a[_0x190c('0x21')][_0x190c('0x22')]===undefined?!![]:![]:!![]})[_0x190c('0x14')](function(_0x40402e){logger[_0x190c('0x15')](_0x190c('0x23'),_0x42ae5a);logger[_0x190c('0x17')]('CreatePlugin',_0x42ae5a,JSON[_0x190c('0x24')](_0x40402e));_0xfd2364(_0x40402e);})[_0x190c('0x25')](function(_0x3eec95){logger[_0x190c('0x19')]('CreatePlugin',_0x3eec95[_0x190c('0x1b')],_0x42ae5a);_0x3de37e(_0x515792[_0x190c('0x19')](0x1f4,_0x3eec95[_0x190c('0x1b')]));});});};
\ No newline at end of file
index 2e2320e..449c58a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x322b=['removeListener','register','remove'];(function(_0x588a56,_0x4adb69){var _0x5666ea=function(_0x36b175){while(--_0x36b175){_0x588a56['push'](_0x588a56['shift']());}};_0x5666ea(++_0x4adb69);}(_0x322b,0xb9));var _0xb322=function(_0x45d7d3,_0x1b3ffa){_0x45d7d3=_0x45d7d3-0x0;var _0x1fee81=_0x322b[_0x45d7d3];return _0x1fee81;};'use strict';var PluginEvents=require('./plugin.events');var events=['save',_0xb322('0x0'),'update'];function createListener(_0x80e8da,_0x546c48){return function(_0x22a1ae){_0x546c48['emit'](_0x80e8da,_0x22a1ae);};}function removeListener(_0x3b926b,_0xd4426a){return function(){PluginEvents[_0xb322('0x1')](_0x3b926b,_0xd4426a);};}exports[_0xb322('0x2')]=function(_0x1b0002){for(var _0xa38bc8=0x0,_0x1bea51=events['length'];_0xa38bc8<_0x1bea51;_0xa38bc8++){var _0x13be0=events[_0xa38bc8];var _0x3450e7=createListener('plugin:'+_0x13be0,_0x1b0002);PluginEvents['on'](_0x13be0,_0x3450e7);}};
\ No newline at end of file
+var _0xbecc=['plugin:','./plugin.events','save','remove','update','emit','removeListener','register','length'];(function(_0x53b7ca,_0x7b041d){var _0x4a64bd=function(_0x2f2d03){while(--_0x2f2d03){_0x53b7ca['push'](_0x53b7ca['shift']());}};_0x4a64bd(++_0x7b041d);}(_0xbecc,0x169));var _0xcbec=function(_0x1e12e2,_0x475be1){_0x1e12e2=_0x1e12e2-0x0;var _0x1e778c=_0xbecc[_0x1e12e2];return _0x1e778c;};'use strict';var PluginEvents=require(_0xcbec('0x0'));var events=[_0xcbec('0x1'),_0xcbec('0x2'),_0xcbec('0x3')];function createListener(_0x4e1d7f,_0x34ae10){return function(_0x4745df){_0x34ae10[_0xcbec('0x4')](_0x4e1d7f,_0x4745df);};}function removeListener(_0x2d3c95,_0xf01708){return function(){PluginEvents[_0xcbec('0x5')](_0x2d3c95,_0xf01708);};}exports[_0xcbec('0x6')]=function(_0x415663){for(var _0x41bf49=0x0,_0x14a3fa=events[_0xcbec('0x7')];_0x41bf49<_0x14a3fa;_0x41bf49++){var _0x445b27=events[_0x41bf49];var _0x5bc272=createListener(_0xcbec('0x8')+_0x445b27,_0x415663);PluginEvents['on'](_0x445b27,_0x5bc272);}};
\ No newline at end of file
index 911eb1b..ce19629 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(_0xaa975d,_0x1e4f8b){var _0x169d7a=function(_0xcd97ce){while(--_0xcd97ce){_0xaa975d['push'](_0xaa975d['shift']());}};_0x169d7a(++_0x1e4f8b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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(_0x297954,_0x34e5d7){var _0x2c7852=function(_0x5b8c4d){while(--_0x5b8c4d){_0x297954['push'](_0x297954['shift']());}};_0x2c7852(++_0x34e5d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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 9d82e48..02d7aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['../../config/pm2','../../config/logger','api','child_process','exec','bluebird','sendStatus','json','info','error','name','express','motion2','length','show','describe','params','then','create','body','script','join','../../files/plugins','cwd','chdir','start','dump','catch','status','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','send','Unknown\x20status','destroy','delete','lodash'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb903,0x185));var _0x3b90=function(_0x547291,_0x59ac00){_0x547291=_0x547291-0x0;var _0x2ebe97=_0xb903[_0x547291];return _0x2ebe97;};'use strict';var _=require(_0x3b90('0x0'));var pm2=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var path=require('path');var exec=require(_0x3b90('0x4'))[_0x3b90('0x5')];var BPromise=require(_0x3b90('0x6'));function handleEntityNotFound(_0x1cd5d8,_0x30d8db){return function(_0x40f726){if(!_0x40f726){_0x1cd5d8[_0x3b90('0x7')](0x194);;}return _0x40f726;};}function respondWithResult(_0x5acd76,_0x15b68f){_0x15b68f=_0x15b68f||0xc8;return function(_0x5e845a){if(_0x5e845a){return _0x5acd76['status'](_0x15b68f)[_0x3b90('0x8')](_0x5e845a);}return null;};}function handleError(_0x2e4c06,_0x42efe8){_0x42efe8=_0x42efe8||0x1f4;return function(_0x1b1fbf){logger['error'](_0x1b1fbf['stack']);if(_0x1b1fbf['name']){delete _0x1b1fbf['name'];}_0x2e4c06['status'](_0x42efe8)['send'](_0x1b1fbf);};}function execChildProcess(){return new BPromise(function(_0x336913,_0x5af39c){exec('npm\x20install',function(_0x30c49c,_0x233509,_0x4bb8f4){logger[_0x3b90('0x9')](_0x233509);logger[_0x3b90('0x9')](_0x4bb8f4);if(_0x30c49c){logger[_0x3b90('0xa')](_0x30c49c);return _0x5af39c(_0x30c49c);}return _0x336913(_0x233509);});});}exports['index']=function(_0x5447df,_0x58c4d1){return pm2['list']()['then'](function(_0x3a0a55){if(_0x3a0a55){var _0x2c72fb=_['reject'](_0x3a0a55,function(_0x51fb66){return _0x51fb66[_0x3b90('0xb')]===_0x3b90('0xc')||_0x51fb66[_0x3b90('0xb')]===_0x3b90('0xd');});return{'rows':_0x2c72fb,'count':_0x2c72fb[_0x3b90('0xe')]};}return null;})['then'](respondWithResult(_0x58c4d1,null))['catch'](handleError(_0x58c4d1,null));};exports[_0x3b90('0xf')]=function(_0x5420dc,_0x4e9120){return pm2[_0x3b90('0x10')](_0x5420dc[_0x3b90('0x11')]['id'])[_0x3b90('0x12')](respondWithResult(_0x4e9120,null))[_0x3b90('0x12')](handleEntityNotFound(_0x4e9120,null))['catch'](handleError(_0x4e9120,null));};exports[_0x3b90('0x13')]=function(_0x5d140f,_0xd8d873){if(_0x5d140f[_0x3b90('0x14')]['name']&&_0x5d140f[_0x3b90('0x14')][_0x3b90('0x15')]){var _0x3642c0=path[_0x3b90('0x16')](__dirname,_0x3b90('0x17'),_0x5d140f[_0x3b90('0x14')][_0x3b90('0x15')]);var _0x2f4270=process[_0x3b90('0x18')]();process[_0x3b90('0x19')](path['dirname'](_0x3642c0));return execChildProcess()[_0x3b90('0x12')](function(_0x36b93e){process[_0x3b90('0x19')](_0x2f4270);return pm2[_0x3b90('0x1a')]({'name':_0x5d140f[_0x3b90('0x14')][_0x3b90('0xb')],'script':_0x3642c0});})['then'](function(_0x4b308c){pm2[_0x3b90('0x1b')]();return _0x4b308c[0x0];})[_0x3b90('0x12')](respondWithResult(_0xd8d873,0xc9))[_0x3b90('0x1c')](handleError(_0xd8d873,null));}else{return _0xd8d873[_0x3b90('0x1d')](0x1f4)['send']({'message':_0x3b90('0x1e')});}};exports[_0x3b90('0x1f')]=function(_0x1787d1,_0x4caead){if(_0x1787d1[_0x3b90('0x14')]['id']){delete _0x1787d1[_0x3b90('0x14')]['id'];}var _0x17ec7f={'online':_0x3b90('0x20'),'stopped':_0x3b90('0x21')};if(_0x17ec7f[_0x3b90('0x22')](_0x1787d1['body'][_0x3b90('0x1d')])){return pm2[_0x17ec7f[_0x1787d1['body'][_0x3b90('0x1d')]]](_0x1787d1[_0x3b90('0x11')]['id'])[_0x3b90('0x12')](respondWithResult(_0x4caead,0xc8))[_0x3b90('0x1c')](handleError(_0x4caead,null));}else{return _0x4caead[_0x3b90('0x1d')](0x1f4)[_0x3b90('0x23')]({'message':_0x3b90('0x24')});}};exports[_0x3b90('0x25')]=function(_0x500ceb,_0x4d1f31){if(_0x500ceb[_0x3b90('0x14')]['id']){delete _0x500ceb[_0x3b90('0x14')]['id'];}if(_0x500ceb[_0x3b90('0x11')]['id']){return pm2[_0x3b90('0x26')](_0x500ceb['params']['id'])['then'](function(_0xd33ac9){pm2[_0x3b90('0x1b')]();return _0xd33ac9[0x0];})[_0x3b90('0x12')](respondWithResult(_0x4d1f31,null))['catch'](handleError(_0x4d1f31,null));}else{return _0x4d1f31[_0x3b90('0x1d')](0x1f4)['send']({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0xa902=['then','catch','show','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','status','update','stop','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','exec','sendStatus','json','error','stack','name','send','npm\x20install','info','list','reject','express','motion2','length'];(function(_0x3dafdc,_0x585c6d){var _0x53a921=function(_0x9e85a0){while(--_0x9e85a0){_0x3dafdc['push'](_0x3dafdc['shift']());}};_0x53a921(++_0x585c6d);}(_0xa902,0x8d));var _0x2a90=function(_0x2d98a3,_0x5697b2){_0x2d98a3=_0x2d98a3-0x0;var _0x57265f=_0xa902[_0x2d98a3];return _0x57265f;};'use strict';var _=require(_0x2a90('0x0'));var pm2=require(_0x2a90('0x1'));var logger=require(_0x2a90('0x2'))(_0x2a90('0x3'));var path=require(_0x2a90('0x4'));var exec=require('child_process')[_0x2a90('0x5')];var BPromise=require('bluebird');function handleEntityNotFound(_0x4961c2,_0x169808){return function(_0x2b40c0){if(!_0x2b40c0){_0x4961c2[_0x2a90('0x6')](0x194);;}return _0x2b40c0;};}function respondWithResult(_0x21e1d2,_0x4a32c7){_0x4a32c7=_0x4a32c7||0xc8;return function(_0x25bcfc){if(_0x25bcfc){return _0x21e1d2['status'](_0x4a32c7)[_0x2a90('0x7')](_0x25bcfc);}return null;};}function handleError(_0x570659,_0x5ec2b9){_0x5ec2b9=_0x5ec2b9||0x1f4;return function(_0xc75b6e){logger[_0x2a90('0x8')](_0xc75b6e[_0x2a90('0x9')]);if(_0xc75b6e[_0x2a90('0xa')]){delete _0xc75b6e[_0x2a90('0xa')];}_0x570659['status'](_0x5ec2b9)[_0x2a90('0xb')](_0xc75b6e);};}function execChildProcess(){return new BPromise(function(_0x3dadc2,_0x43c56d){exec(_0x2a90('0xc'),function(_0x541e22,_0x40e6aa,_0x52391c){logger[_0x2a90('0xd')](_0x40e6aa);logger['info'](_0x52391c);if(_0x541e22){logger[_0x2a90('0x8')](_0x541e22);return _0x43c56d(_0x541e22);}return _0x3dadc2(_0x40e6aa);});});}exports['index']=function(_0x407ce5,_0x30e166){return pm2[_0x2a90('0xe')]()['then'](function(_0x56d1b8){if(_0x56d1b8){var _0x57227c=_[_0x2a90('0xf')](_0x56d1b8,function(_0x3a42df){return _0x3a42df['name']===_0x2a90('0x10')||_0x3a42df[_0x2a90('0xa')]===_0x2a90('0x11');});return{'rows':_0x57227c,'count':_0x57227c[_0x2a90('0x12')]};}return null;})[_0x2a90('0x13')](respondWithResult(_0x30e166,null))[_0x2a90('0x14')](handleError(_0x30e166,null));};exports[_0x2a90('0x15')]=function(_0x10cf94,_0x43eea5){return pm2['describe'](_0x10cf94[_0x2a90('0x16')]['id'])[_0x2a90('0x13')](respondWithResult(_0x43eea5,null))[_0x2a90('0x13')](handleEntityNotFound(_0x43eea5,null))['catch'](handleError(_0x43eea5,null));};exports[_0x2a90('0x17')]=function(_0x1f51a6,_0x148d18){if(_0x1f51a6[_0x2a90('0x18')][_0x2a90('0xa')]&&_0x1f51a6[_0x2a90('0x18')][_0x2a90('0x19')]){var _0x114d42=path[_0x2a90('0x1a')](__dirname,_0x2a90('0x1b'),_0x1f51a6[_0x2a90('0x18')][_0x2a90('0x19')]);var _0x4fdd62=process[_0x2a90('0x1c')]();process[_0x2a90('0x1d')](path[_0x2a90('0x1e')](_0x114d42));return execChildProcess()[_0x2a90('0x13')](function(_0x5912fd){process[_0x2a90('0x1d')](_0x4fdd62);return pm2[_0x2a90('0x1f')]({'name':_0x1f51a6['body'][_0x2a90('0xa')],'script':_0x114d42});})[_0x2a90('0x13')](function(_0x10a6dd){pm2[_0x2a90('0x20')]();return _0x10a6dd[0x0];})[_0x2a90('0x13')](respondWithResult(_0x148d18,0xc9))[_0x2a90('0x14')](handleError(_0x148d18,null));}else{return _0x148d18[_0x2a90('0x21')](0x1f4)[_0x2a90('0xb')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x2a90('0x22')]=function(_0x17f978,_0x3934d4){if(_0x17f978[_0x2a90('0x18')]['id']){delete _0x17f978[_0x2a90('0x18')]['id'];}var _0x5208d8={'online':'restart','stopped':_0x2a90('0x23')};if(_0x5208d8['hasOwnProperty'](_0x17f978['body']['status'])){return pm2[_0x5208d8[_0x17f978[_0x2a90('0x18')][_0x2a90('0x21')]]](_0x17f978['params']['id'])['then'](respondWithResult(_0x3934d4,0xc8))[_0x2a90('0x14')](handleError(_0x3934d4,null));}else{return _0x3934d4['status'](0x1f4)[_0x2a90('0xb')]({'message':_0x2a90('0x24')});}};exports[_0x2a90('0x25')]=function(_0x27b6b6,_0xf18d11){if(_0x27b6b6[_0x2a90('0x18')]['id']){delete _0x27b6b6[_0x2a90('0x18')]['id'];}if(_0x27b6b6['params']['id']){return pm2[_0x2a90('0x26')](_0x27b6b6[_0x2a90('0x16')]['id'])[_0x2a90('0x13')](function(_0x5cdeb4){pm2[_0x2a90('0x20')]();return _0x5cdeb4[0x0];})[_0x2a90('0x13')](respondWithResult(_0xf18d11,null))[_0x2a90('0x14')](handleError(_0xf18d11,null));}else{return _0xf18d11[_0x2a90('0x21')](0x1f4)['send']({'message':_0x2a90('0x27')});}};
\ No newline at end of file
index de0d3c3..d756bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3b=['../../components/auth/service','get','/queues','isAuthenticated','getQueues','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a3b,0x83));var _0xb1a3=function(_0x5049f1,_0x57c25b){_0x5049f1=_0x5049f1-0x0;var _0x50d3fd=_0x1a3b[_0x5049f1];return _0x50d3fd;};'use strict';var express=require(_0xb1a3('0x0'));var router=express[_0xb1a3('0x1')]();var auth=require(_0xb1a3('0x2'));var controller=require('./realtime.controller');router[_0xb1a3('0x3')](_0xb1a3('0x4'),auth[_0xb1a3('0x5')](),controller[_0xb1a3('0x6')]);module['exports']=router;
\ No newline at end of file
+var _0x58e6=['express','Router','/queues','getQueues','exports'];(function(_0x1a2a46,_0x16329a){var _0x46df79=function(_0xcdded){while(--_0xcdded){_0x1a2a46['push'](_0x1a2a46['shift']());}};_0x46df79(++_0x16329a);}(_0x58e6,0x1c2));var _0x658e=function(_0x464551,_0xbfb310){_0x464551=_0x464551-0x0;var _0x4571bc=_0x58e6[_0x464551];return _0x4571bc;};'use strict';var express=require(_0x658e('0x0'));var router=express[_0x658e('0x1')]();var auth=require('../../components/auth/service');var controller=require('./realtime.controller');router['get'](_0x658e('0x2'),auth['isAuthenticated'](),controller[_0x658e('0x3')]);module[_0x658e('0x4')]=router;
\ No newline at end of file
index 4cf16b7..a088b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['limit','count','status','set','Content-Range','json','error','name','send','getQueues','mail','chat','sms','fax','whatsapp','resolve','then','query','includes','toLowerCase','Invalid\x20channel','startCase','map','rawAttributes','fieldName','key','getOptions','user','userProfileId','voice','type','outbound','QueueCampaigns','Queues','getResources','findAndCountAll','request','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','available','waiting','talking','paused','pTalking','originated','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','loggedIn','agents','find','merge','pick','length','push','User','Queue','Pause','findAll','QueueId','online','UserId','agent','all','catch','util','lodash','../../config/logger','api','../../mysqldb','http','client','offset','undefined'];(function(_0x5448a9,_0x4764da){var _0x1924af=function(_0x34f9bf){while(--_0x34f9bf){_0x5448a9['push'](_0x5448a9['shift']());}};_0x1924af(++_0x4764da);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x3bc875,_0x3e3e1a){_0x3bc875=_0x3bc875-0x0;var _0x48772b=_0xa6b0[_0x3bc875];return _0x48772b;};'use strict';var util=require(_0x0a6b('0x0'));var _=require(_0x0a6b('0x1'));var jayson=require('jayson/promise');var qs=require('../../components/parsers/qs');var logger=require(_0x0a6b('0x2'))(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var client=jayson['client'][_0x0a6b('0x5')]({'port':0x232a});var routingClient=jayson[_0x0a6b('0x6')][_0x0a6b('0x5')]({'port':0x232c});function respondWithFilteredResult(_0xc7140c,_0x3dc2b0){return function(_0x3b6967){if(_0x3b6967){var _0x1b5fb5=typeof _0x3dc2b0[_0x0a6b('0x7')]===_0x0a6b('0x8')&&typeof _0x3dc2b0[_0x0a6b('0x9')]===_0x0a6b('0x8');var _0xdcc3e5=_0x3b6967['count'];var _0x493948=_0x1b5fb5?0x0:_0x3dc2b0[_0x0a6b('0x7')];var _0x100da8=_0x1b5fb5?_0x3b6967[_0x0a6b('0xa')]:_0x3dc2b0[_0x0a6b('0x7')]+_0x3dc2b0[_0x0a6b('0x9')];var _0xe681c9;if(_0x100da8>=_0xdcc3e5){_0x100da8=_0xdcc3e5;_0xe681c9=0xc8;}else{_0xe681c9=0xce;}_0xc7140c[_0x0a6b('0xb')](_0xe681c9);return _0xc7140c[_0x0a6b('0xc')](_0x0a6b('0xd'),_0x493948+'-'+_0x100da8+'/'+_0xdcc3e5)[_0x0a6b('0xe')](_0x3b6967);}return null;};}function handleError(_0x391fe6,_0x890493){_0x890493=_0x890493||0x1f4;return function(_0x244a7d){logger[_0x0a6b('0xf')](_0x244a7d['stack']);if(_0x244a7d['name']){delete _0x244a7d[_0x0a6b('0x10')];}_0x391fe6[_0x0a6b('0xb')](_0x890493)[_0x0a6b('0x11')](_0x244a7d);};}exports[_0x0a6b('0x12')]=function(_0x8bbc03,_0x45fc9f){var _0x9bb98e=[_0x0a6b('0x13'),_0x0a6b('0x14'),_0x0a6b('0x15'),'openchannel',_0x0a6b('0x16'),_0x0a6b('0x17'),'voice'];var _0x290f7f={'count':0x0,'rows':[]},_0x4d0e3b={},_0xcb412;Promise[_0x0a6b('0x18')]()[_0x0a6b('0x19')](function(){if(_0x8bbc03[_0x0a6b('0x1a')]['channel']){if(!_[_0x0a6b('0x1b')](_0x9bb98e,_0x8bbc03[_0x0a6b('0x1a')]['channel'][_0x0a6b('0x1c')]()))throw new Error(_0x0a6b('0x1d'));_0xcb412=_0x8bbc03[_0x0a6b('0x1a')]['channel'][_0x0a6b('0x1c')]();}var _0x93a465=_[_0x0a6b('0x1e')](_0xcb412)+'Queue';var _0x220d3e=_[_0x0a6b('0x1f')](db[_0x93a465][_0x0a6b('0x20')],function(_0x5e8206){return{'name':_0x5e8206[_0x0a6b('0x21')],'type':_0x5e8206['type'][_0x0a6b('0x22')]};});_0x4d0e3b=qs[_0x0a6b('0x23')](_0x220d3e,_0x8bbc03);if(_0x8bbc03[_0x0a6b('0x24')]['role']===_0x0a6b('0x24')){var _0x2e58fd={'params':{'id':_0x8bbc03[_0x0a6b('0x24')][_0x0a6b('0x25')]},'query':{'section':_0xcb412===_0x0a6b('0x26')&&_0x8bbc03['query'][_0x0a6b('0x27')]===_0x0a6b('0x28')?_0x0a6b('0x29'):_['startCase'](_0xcb412)+_0x0a6b('0x2a'),'type':_0x8bbc03['query'][_0x0a6b('0x27')],'nolimit':!![],'sort':_0x0a6b('0x10'),'filter':_0x8bbc03[_0x0a6b('0x1a')]['filter']}};return db['UserProfile'][_0x0a6b('0x2b')](_0x2e58fd);}return db[_0x93a465][_0x0a6b('0x2c')](_0x4d0e3b);})[_0x0a6b('0x19')](function(_0x3d649e){_0x290f7f[_0x0a6b('0xa')]=_0x3d649e[_0x0a6b('0xa')];var _0x486f0d=_0xcb412===_0x0a6b('0x26')?client:routingClient;return _0x486f0d[_0x0a6b('0x2d')](_['startCase'](_0xcb412)+_0x0a6b('0x2a'),_0x8bbc03)['then'](function(_0x4eb516){if(_0x4eb516[_0x0a6b('0xf')])throw new Error(util[_0x0a6b('0x2e')](_0x0a6b('0x2f'),_0xcb412));var _0x10dad1=_0x4eb516[_0x0a6b('0x30')];var _0x55cbd3=['loggedIn',_0x0a6b('0x31'),_0x0a6b('0x32'),_0x0a6b('0x33'),_0x0a6b('0x34')];if(_0xcb412==='voice'&&_0x8bbc03[_0x0a6b('0x1a')][_0x0a6b('0x27')]==='outbound'){_0x55cbd3['push'](_0x0a6b('0x35'),_0x0a6b('0x36'),'message',_0x0a6b('0x37'),_0x0a6b('0x38'),_0x0a6b('0x39'),_0x0a6b('0x3a'),_0x0a6b('0x3b'),_0x0a6b('0x3c'),_0x0a6b('0x3d'),_0x0a6b('0x3e'),_0x0a6b('0x3f'),_0x0a6b('0x40'),_0x0a6b('0x41'),_0x0a6b('0x42'),'predictiveIntervalAvailable',_0x0a6b('0x43'),_0x0a6b('0x44'),'predictiveIntervalDroppedCallsTimeout',_0x0a6b('0x45'),_0x0a6b('0x46'),_0x0a6b('0x47'));}var _0x10981f=_0x3d649e[_0x0a6b('0x48')][_0x0a6b('0x1f')](function(_0x28bc13){var _0x3f1be6=_0x28bc13[_0x0a6b('0x49')]({'plain':!![]});_0x3f1be6['paused']=0x0;_0x3f1be6[_0x0a6b('0x4a')]=0x0;_0x3f1be6[_0x0a6b('0x4b')]=0x0;_0x3f1be6[_0x0a6b('0x31')]=0x0;_0x3f1be6[_0x0a6b('0x34')]=0x0;_0x3f1be6[_0x0a6b('0x32')]=0x0;if(_0xcb412===_0x0a6b('0x26')){_0x3f1be6[_0x0a6b('0x33')]=0x0;if(_0x8bbc03[_0x0a6b('0x1a')][_0x0a6b('0x27')]==='outbound'){_0x3f1be6[_0x0a6b('0x35')]=0x0;_0x3f1be6[_0x0a6b('0x36')]=0x0;}}_0x3f1be6[_0x0a6b('0x4c')]=[];var _0x39df98=_[_0x0a6b('0x4d')](_0x10dad1[_0x0a6b('0x48')],['id',_0x3f1be6['id']]);if(_0x39df98)_[_0x0a6b('0x4e')](_0x3f1be6,_[_0x0a6b('0x4f')](_0x39df98,_0x55cbd3));if(_0xcb412===_0x0a6b('0x26')){return _0x28bc13['getAgents']({'attributes':['id',_0x0a6b('0x10'),'online'],'joinTableAttributes':[],'raw':!![]})['then'](function(_0xb7a7d8){return _0x28bc13['getMembers']({'raw':!![]})['then'](function(_0x2f1221){for(var _0x1f756d=0x0;_0x1f756d<_0xb7a7d8[_0x0a6b('0x50')];_0x1f756d++){var _0x4fdfeb=_[_0x0a6b('0x4d')](_0x2f1221,['UserId',_0xb7a7d8[_0x1f756d]['id']]);var _0x531f94={'id':_0xb7a7d8[_0x1f756d]['id'],'name':_0xb7a7d8[_0x1f756d][_0x0a6b('0x10')],'online':Boolean(_0xb7a7d8[_0x1f756d]['online']),'paused':_0x4fdfeb?Boolean(_0x4fdfeb[_0x0a6b('0x34')]):![]};if(_0x531f94['online'])_0x3f1be6[_0x0a6b('0x4a')]++;if(_0x531f94['paused'])_0x3f1be6['paused']++;_0x3f1be6[_0x0a6b('0x4c')][_0x0a6b('0x51')](_0x531f94);}return _0x3f1be6;});});}else{var _0x2b937c=_0x0a6b('0x52')+_['startCase'](_0xcb412)+_0x0a6b('0x53');var _0xf92e0f=_0xcb412+_0x0a6b('0x54');return db[_0x2b937c][_0x0a6b('0x55')]({'where':{[_[_0x0a6b('0x1e')](_0xcb412)+_0x0a6b('0x56')]:_0x28bc13['id']},'raw':!![]})[_0x0a6b('0x19')](function(_0x5f373b){return db[_0x0a6b('0x52')][_0x0a6b('0x55')]({'attributes':['id',_0x0a6b('0x10'),_0x0a6b('0x57'),_0xf92e0f],'where':{'id':_[_0x0a6b('0x1f')](_0x5f373b,_0x0a6b('0x58')),'role':_0x0a6b('0x59')},'raw':!![]});})[_0x0a6b('0x19')](function(_0xa20567){for(var _0x5ab75f=0x0;_0x5ab75f<_0xa20567[_0x0a6b('0x50')];_0x5ab75f++){var _0x12953b={'id':_0xa20567[_0x5ab75f]['id'],'name':_0xa20567[_0x5ab75f][_0x0a6b('0x10')],'online':Boolean(_0xa20567[_0x5ab75f][_0x0a6b('0x57')]),'paused':Boolean(_0xa20567[_0x5ab75f][_0xf92e0f])};if(_0x12953b[_0x0a6b('0x57')])_0x3f1be6[_0x0a6b('0x4a')]++;if(_0x12953b[_0x0a6b('0x34')])_0x3f1be6['paused']++;_0x3f1be6['agents'][_0x0a6b('0x51')](_0x12953b);}return _0x3f1be6;});}});return Promise[_0x0a6b('0x5a')](_0x10981f);});})[_0x0a6b('0x19')](function(_0x46352e){_0x290f7f[_0x0a6b('0x48')]=_0x46352e;return _0x290f7f;})[_0x0a6b('0x19')](respondWithFilteredResult(_0x45fc9f,_0x4d0e3b))[_0x0a6b('0x5b')](handleError(_0x45fc9f,null));};
\ No newline at end of file
+var _0xf072=['online','getMembers','length','UserId','loggedInDb','User','startCase','Pause','findAll','QueueId','agent','all','catch','util','lodash','jayson/promise','../../config/logger','../../mysqldb','client','http','offset','undefined','limit','count','status','set','error','stack','name','send','getQueues','chat','openchannel','fax','whatsapp','voice','resolve','query','includes','channel','toLowerCase','Invalid\x20channel','Queue','map','fieldName','type','key','user','role','userProfileId','QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','then','request','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','talking','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','paused','waiting','agents','find','merge','pick'];(function(_0x59a8ef,_0x3df38f){var _0xbf5809=function(_0x7a78){while(--_0x7a78){_0x59a8ef['push'](_0x59a8ef['shift']());}};_0xbf5809(++_0x3df38f);}(_0xf072,0x1cf));var _0x2f07=function(_0x1a95c5,_0x1aa82f){_0x1a95c5=_0x1a95c5-0x0;var _0x2bfdb6=_0xf072[_0x1a95c5];return _0x2bfdb6;};'use strict';var util=require(_0x2f07('0x0'));var _=require(_0x2f07('0x1'));var jayson=require(_0x2f07('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0x2f07('0x3'))('api');var db=require(_0x2f07('0x4'))['db'];var client=jayson[_0x2f07('0x5')][_0x2f07('0x6')]({'port':0x232a});var routingClient=jayson['client'][_0x2f07('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x14d6e6,_0x3643bb){return function(_0x2e6422){if(_0x2e6422){var _0x235418=typeof _0x3643bb[_0x2f07('0x7')]===_0x2f07('0x8')&&typeof _0x3643bb[_0x2f07('0x9')]===_0x2f07('0x8');var _0x2e167=_0x2e6422[_0x2f07('0xa')];var _0x2e372c=_0x235418?0x0:_0x3643bb[_0x2f07('0x7')];var _0x18fe13=_0x235418?_0x2e6422[_0x2f07('0xa')]:_0x3643bb['offset']+_0x3643bb[_0x2f07('0x9')];var _0x2f464b;if(_0x18fe13>=_0x2e167){_0x18fe13=_0x2e167;_0x2f464b=0xc8;}else{_0x2f464b=0xce;}_0x14d6e6[_0x2f07('0xb')](_0x2f464b);return _0x14d6e6[_0x2f07('0xc')]('Content-Range',_0x2e372c+'-'+_0x18fe13+'/'+_0x2e167)['json'](_0x2e6422);}return null;};}function handleError(_0x3dd0cf,_0x1e291d){_0x1e291d=_0x1e291d||0x1f4;return function(_0x58549c){logger[_0x2f07('0xd')](_0x58549c[_0x2f07('0xe')]);if(_0x58549c[_0x2f07('0xf')]){delete _0x58549c['name'];}_0x3dd0cf[_0x2f07('0xb')](_0x1e291d)[_0x2f07('0x10')](_0x58549c);};}exports[_0x2f07('0x11')]=function(_0xe2ffb7,_0x254dbb){var _0x309908=['mail',_0x2f07('0x12'),'sms',_0x2f07('0x13'),_0x2f07('0x14'),_0x2f07('0x15'),_0x2f07('0x16')];var _0x1ec70d={'count':0x0,'rows':[]},_0x46c9b4={},_0x1a6135;Promise[_0x2f07('0x17')]()['then'](function(){if(_0xe2ffb7[_0x2f07('0x18')]['channel']){if(!_[_0x2f07('0x19')](_0x309908,_0xe2ffb7[_0x2f07('0x18')][_0x2f07('0x1a')][_0x2f07('0x1b')]()))throw new Error(_0x2f07('0x1c'));_0x1a6135=_0xe2ffb7['query'][_0x2f07('0x1a')]['toLowerCase']();}var _0x5db56b=_['startCase'](_0x1a6135)+_0x2f07('0x1d');var _0x51c285=_[_0x2f07('0x1e')](db[_0x5db56b]['rawAttributes'],function(_0x354ee2){return{'name':_0x354ee2[_0x2f07('0x1f')],'type':_0x354ee2[_0x2f07('0x20')][_0x2f07('0x21')]};});_0x46c9b4=qs['getOptions'](_0x51c285,_0xe2ffb7);if(_0xe2ffb7[_0x2f07('0x22')][_0x2f07('0x23')]===_0x2f07('0x22')){var _0x5cfa32={'params':{'id':_0xe2ffb7[_0x2f07('0x22')][_0x2f07('0x24')]},'query':{'section':_0x1a6135==='voice'&&_0xe2ffb7[_0x2f07('0x18')][_0x2f07('0x20')]==='outbound'?_0x2f07('0x25'):_['startCase'](_0x1a6135)+_0x2f07('0x26'),'type':_0xe2ffb7[_0x2f07('0x18')][_0x2f07('0x20')],'nolimit':!![],'sort':_0x2f07('0xf'),'filter':_0xe2ffb7[_0x2f07('0x18')][_0x2f07('0x27')]}};return db[_0x2f07('0x28')][_0x2f07('0x29')](_0x5cfa32);}return db[_0x5db56b][_0x2f07('0x2a')](_0x46c9b4);})[_0x2f07('0x2b')](function(_0x3b4e2f){_0x1ec70d[_0x2f07('0xa')]=_0x3b4e2f['count'];var _0x1accef=_0x1a6135===_0x2f07('0x16')?client:routingClient;return _0x1accef[_0x2f07('0x2c')](_['startCase'](_0x1a6135)+_0x2f07('0x26'),_0xe2ffb7)[_0x2f07('0x2b')](function(_0x115c97){if(_0x115c97['error'])throw new Error(util[_0x2f07('0x2d')](_0x2f07('0x2e'),_0x1a6135));var _0xee6a27=_0x115c97[_0x2f07('0x2f')];var _0x3802b9=[_0x2f07('0x30'),_0x2f07('0x31'),'waiting',_0x2f07('0x32'),'paused'];if(_0x1a6135===_0x2f07('0x16')&&_0xe2ffb7[_0x2f07('0x18')][_0x2f07('0x20')]===_0x2f07('0x33')){_0x3802b9[_0x2f07('0x34')](_0x2f07('0x35'),_0x2f07('0x36'),_0x2f07('0x37'),_0x2f07('0x38'),_0x2f07('0x39'),_0x2f07('0x3a'),_0x2f07('0x3b'),_0x2f07('0x3c'),_0x2f07('0x3d'),_0x2f07('0x3e'),_0x2f07('0x3f'),'erlangBusyFactor','dialPredictiveInterval',_0x2f07('0x40'),_0x2f07('0x41'),_0x2f07('0x42'),'predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls',_0x2f07('0x43'),'predictiveIntervalDroppedCallsCallersExit',_0x2f07('0x44'),_0x2f07('0x45'));}var _0xb62610=_0x3b4e2f[_0x2f07('0x46')][_0x2f07('0x1e')](function(_0x52ead8){var _0x45fe2f=_0x52ead8['get']({'plain':!![]});_0x45fe2f[_0x2f07('0x47')]=0x0;_0x45fe2f['loggedInDb']=0x0;_0x45fe2f[_0x2f07('0x30')]=0x0;_0x45fe2f['available']=0x0;_0x45fe2f['paused']=0x0;_0x45fe2f[_0x2f07('0x48')]=0x0;if(_0x1a6135===_0x2f07('0x16')){_0x45fe2f['talking']=0x0;if(_0xe2ffb7[_0x2f07('0x18')][_0x2f07('0x20')]===_0x2f07('0x33')){_0x45fe2f['pTalking']=0x0;_0x45fe2f[_0x2f07('0x36')]=0x0;}}_0x45fe2f[_0x2f07('0x49')]=[];var _0x42e6da=_[_0x2f07('0x4a')](_0xee6a27[_0x2f07('0x46')],['id',_0x45fe2f['id']]);if(_0x42e6da)_[_0x2f07('0x4b')](_0x45fe2f,_[_0x2f07('0x4c')](_0x42e6da,_0x3802b9));if(_0x1a6135===_0x2f07('0x16')){return _0x52ead8['getAgents']({'attributes':['id',_0x2f07('0xf'),_0x2f07('0x4d')],'joinTableAttributes':[],'raw':!![]})[_0x2f07('0x2b')](function(_0x3f1b6b){return _0x52ead8[_0x2f07('0x4e')]({'raw':!![]})[_0x2f07('0x2b')](function(_0x5129c){for(var _0x5879ce=0x0;_0x5879ce<_0x3f1b6b[_0x2f07('0x4f')];_0x5879ce++){var _0xb43346=_[_0x2f07('0x4a')](_0x5129c,[_0x2f07('0x50'),_0x3f1b6b[_0x5879ce]['id']]);var _0x3db7ad={'id':_0x3f1b6b[_0x5879ce]['id'],'name':_0x3f1b6b[_0x5879ce][_0x2f07('0xf')],'online':Boolean(_0x3f1b6b[_0x5879ce]['online']),'paused':_0xb43346?Boolean(_0xb43346[_0x2f07('0x47')]):![]};if(_0x3db7ad[_0x2f07('0x4d')])_0x45fe2f[_0x2f07('0x51')]++;if(_0x3db7ad[_0x2f07('0x47')])_0x45fe2f['paused']++;_0x45fe2f['agents'][_0x2f07('0x34')](_0x3db7ad);}return _0x45fe2f;});});}else{var _0x437e94=_0x2f07('0x52')+_[_0x2f07('0x53')](_0x1a6135)+'Queue';var _0x312299=_0x1a6135+_0x2f07('0x54');return db[_0x437e94][_0x2f07('0x55')]({'where':{[_[_0x2f07('0x53')](_0x1a6135)+_0x2f07('0x56')]:_0x52ead8['id']},'raw':!![]})[_0x2f07('0x2b')](function(_0x9c7076){return db[_0x2f07('0x52')][_0x2f07('0x55')]({'attributes':['id',_0x2f07('0xf'),'online',_0x312299],'where':{'id':_['map'](_0x9c7076,'UserId'),'role':_0x2f07('0x57')},'raw':!![]});})[_0x2f07('0x2b')](function(_0x5a4963){for(var _0x97c166=0x0;_0x97c166<_0x5a4963['length'];_0x97c166++){var _0x3a7159={'id':_0x5a4963[_0x97c166]['id'],'name':_0x5a4963[_0x97c166][_0x2f07('0xf')],'online':Boolean(_0x5a4963[_0x97c166][_0x2f07('0x4d')]),'paused':Boolean(_0x5a4963[_0x97c166][_0x312299])};if(_0x3a7159['online'])_0x45fe2f[_0x2f07('0x51')]++;if(_0x3a7159[_0x2f07('0x47')])_0x45fe2f['paused']++;_0x45fe2f['agents'][_0x2f07('0x34')](_0x3a7159);}return _0x45fe2f;});}});return Promise[_0x2f07('0x58')](_0xb62610);});})[_0x2f07('0x2b')](function(_0x363245){_0x1ec70d[_0x2f07('0x46')]=_0x363245;return _0x1ec70d;})[_0x2f07('0x2b')](respondWithFilteredResult(_0x254dbb,_0x46c9b4))[_0x2f07('0x59')](handleError(_0x254dbb,null));};
\ No newline at end of file
index be4e138..2e7ab9b 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(_0x3f36c1,_0x1f1c05){var _0x1bc7b8=function(_0x4d7b66){while(--_0x4d7b66){_0x3f36c1['push'](_0x3f36c1['shift']());}};_0x1bc7b8(++_0x1f1c05);}(_0xe706,0xa3));var _0x6e70=function(_0x3ea3ae,_0x29dd29){_0x3ea3ae=_0x3ea3ae-0x0;var _0x2aa587=_0xe706[_0x3ea3ae];return _0x2aa587;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x27bd9b,_0x206238){var _0xbd6219=function(_0x3c1577){while(--_0x3c1577){_0x27bd9b['push'](_0x27bd9b['shift']());}};_0xbd6219(++_0x206238);}(_0x9c44,0x178));var _0x49c4=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x9c44[_0x13e741];return _0x3f8bb3;};'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
index 0c9c6b9..b7ed43e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29eb=['INTEGER','DATE','STRING','sequelize','exports'];(function(_0x46b1c9,_0x169f87){var _0x17569c=function(_0x4b7c45){while(--_0x4b7c45){_0x46b1c9['push'](_0x46b1c9['shift']());}};_0x17569c(++_0x169f87);}(_0x29eb,0x1c5));var _0xb29e=function(_0x5317bf,_0x2e8fab){_0x5317bf=_0x5317bf-0x0;var _0x1894b4=_0x29eb[_0x5317bf];return _0x1894b4;};'use strict';var Sequelize=require(_0xb29e('0x0'));module[_0xb29e('0x1')]={'state':{'type':Sequelize[_0xb29e('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xb29e('0x3')]},'uniqueid':{'type':Sequelize[_0xb29e('0x4')]},'starttime':{'type':Sequelize[_0xb29e('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xb29e('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xb29e('0x4')]},'membername':{'type':Sequelize[_0xb29e('0x4')]}};
\ No newline at end of file
+var _0x5fc3=['sequelize','exports','STRING','DATE'];(function(_0x45201d,_0x4876da){var _0x22a996=function(_0x30e3f6){while(--_0x30e3f6){_0x45201d['push'](_0x45201d['shift']());}};_0x22a996(++_0x4876da);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x5fc3[_0x1992f1];return _0x413dfe;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x35fc('0x2')]},'scheduledat':{'type':Sequelize[_0x35fc('0x3')]},'uniqueid':{'type':Sequelize[_0x35fc('0x2')]},'starttime':{'type':Sequelize[_0x35fc('0x3')]},'responsetime':{'type':Sequelize[_0x35fc('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x35fc('0x2')]},'campaigntype':{'type':Sequelize[_0x35fc('0x2')]},'membername':{'type':Sequelize[_0x35fc('0x2')]}};
\ No newline at end of file
index 1d5fcc1..39efd24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f1=['path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','util','../../config/logger','api','moment','request-promise'];(function(_0x33bce6,_0x567177){var _0x40396b=function(_0x27bd05){while(--_0x27bd05){_0x33bce6['push'](_0x33bce6['shift']());}};_0x40396b(++_0x567177);}(_0xf2f1,0x166));var _0x1f2f=function(_0x567703,_0x4b1cfa){_0x567703=_0x567703-0x0;var _0x1cd94a=_0xf2f1[_0x567703];return _0x1cd94a;};'use strict';var _=require('lodash');var util=require(_0x1f2f('0x0'));var logger=require(_0x1f2f('0x1'))(_0x1f2f('0x2'));var moment=require(_0x1f2f('0x3'));var BPromise=require('bluebird');var rp=require(_0x1f2f('0x4'));var fs=require('fs');var path=require(_0x1f2f('0x5'));var rimraf=require(_0x1f2f('0x6'));var config=require(_0x1f2f('0x7'));var attributes=require(_0x1f2f('0x8'));module[_0x1f2f('0x9')]=function(_0x205077,_0xe32612){return _0x205077[_0x1f2f('0xa')]('ReportAgentPreview',attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc30=['report_agent_preview','lodash','../../config/logger','moment','request-promise','path','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xcc30,0x14b));var _0x0cc3=function(_0x546aaf,_0x1ed138){_0x546aaf=_0x546aaf-0x0;var _0x1cbf6d=_0xcc30[_0x546aaf];return _0x1cbf6d;};'use strict';var _=require(_0x0cc3('0x0'));var util=require('util');var logger=require(_0x0cc3('0x1'))('api');var moment=require(_0x0cc3('0x2'));var BPromise=require('bluebird');var rp=require(_0x0cc3('0x3'));var fs=require('fs');var path=require(_0x0cc3('0x4'));var rimraf=require('rimraf');var config=require(_0x0cc3('0x5'));var attributes=require(_0x0cc3('0x6'));module[_0x0cc3('0x7')]=function(_0x4efa9f,_0x53afe6){return _0x4efa9f[_0x0cc3('0x8')](_0x0cc3('0x9'),attributes,{'tableName':_0x0cc3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ee1249..24e7a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2028=['jayson/promise','client','http','request','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','create','body','options','raw','then','CreateReportAgentPreview','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x17f891,_0x34c577){var _0x5bf2d4=function(_0x208a07){while(--_0x208a07){_0x17f891['push'](_0x17f891['shift']());}};_0x5bf2d4(++_0x34c577);}(_0x2028,0x1e0));var _0x8202=function(_0x4b41bc,_0x2da7d0){_0x4b41bc=_0x4b41bc-0x0;var _0xc2eb50=_0x2028[_0x4b41bc];return _0xc2eb50;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8202('0x0'));var BPromise=require('bluebird');var rs=require(_0x8202('0x1'));var fs=require('fs');var Redis=require(_0x8202('0x2'));var db=require(_0x8202('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x8202('0x4'))('rpc');var config=require(_0x8202('0x5'));var jayson=require(_0x8202('0x6'));var client=jayson[_0x8202('0x7')][_0x8202('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x58a92f,_0x4ee81e,_0x20594b){return new BPromise(function(_0x34ca0b,_0x245b68){return client[_0x8202('0x9')](_0x58a92f,_0x20594b)['then'](function(_0x11a777){logger[_0x8202('0xa')](_0x8202('0xb'),_0x4ee81e,_0x8202('0xc'));logger[_0x8202('0xd')](_0x8202('0xe'),_0x4ee81e,'request\x20sent',JSON[_0x8202('0xf')](_0x11a777));if(_0x11a777[_0x8202('0x10')]){if(_0x11a777[_0x8202('0x10')][_0x8202('0x11')]===0x1f4){logger['error'](_0x8202('0xb'),_0x4ee81e,_0x11a777[_0x8202('0x10')]['message']);return _0x245b68(_0x11a777[_0x8202('0x10')][_0x8202('0x12')]);}logger['error'](_0x8202('0xb'),_0x4ee81e,_0x11a777[_0x8202('0x10')]['message']);return _0x34ca0b(_0x11a777['error']['message']);}else{logger['info'](_0x8202('0xb'),_0x4ee81e,_0x8202('0xc'));_0x34ca0b(_0x11a777[_0x8202('0x13')][_0x8202('0x12')]);}})[_0x8202('0x14')](function(_0xca0e7e){logger[_0x8202('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x4ee81e,_0xca0e7e);_0x245b68(_0xca0e7e);});});}exports['CreateReportAgentPreview']=function(_0x4702c5){var _0x34e49a=this;return new Promise(function(_0x546f83,_0x2a40aa){return db['ReportAgentPreview'][_0x8202('0x15')](_0x4702c5[_0x8202('0x16')],{'raw':_0x4702c5[_0x8202('0x17')]?_0x4702c5[_0x8202('0x17')][_0x8202('0x18')]===undefined?!![]:![]:!![]})[_0x8202('0x19')](function(_0x3a6c35){logger[_0x8202('0xa')]('CreateReportAgentPreview',_0x4702c5);logger[_0x8202('0xd')]('CreateReportAgentPreview',_0x4702c5,JSON['stringify'](_0x3a6c35));_0x546f83(_0x3a6c35);})[_0x8202('0x14')](function(_0x1726bf){logger[_0x8202('0x10')](_0x8202('0x1a'),_0x1726bf['message'],_0x4702c5);_0x2a40aa(_0x34e49a[_0x8202('0x10')](0x1f4,_0x1726bf['message']));});});};
\ No newline at end of file
+var _0xf505=['ReportAgentPreview','create','body','options','raw','debug','stringify','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateReportAgentPreview'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xf505,0x14b));var _0x5f50=function(_0x221272,_0x29146a){_0x221272=_0x221272-0x0;var _0xe0a9d7=_0xf505[_0x221272];return _0xe0a9d7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5f50('0x0'));var BPromise=require(_0x5f50('0x1'));var rs=require(_0x5f50('0x2'));var fs=require('fs');var Redis=require(_0x5f50('0x3'));var db=require(_0x5f50('0x4'))['db'];var utils=require(_0x5f50('0x5'));var logger=require('../../config/logger')(_0x5f50('0x6'));var config=require(_0x5f50('0x7'));var jayson=require(_0x5f50('0x8'));var client=jayson[_0x5f50('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x146287,_0x5c9f01,_0x35cf34){return new BPromise(function(_0x2ce60d,_0x1565c2){return client[_0x5f50('0xa')](_0x146287,_0x35cf34)[_0x5f50('0xb')](function(_0x55909){logger[_0x5f50('0xc')](_0x5f50('0xd'),_0x5c9f01,_0x5f50('0xe'));logger['debug']('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x5c9f01,_0x5f50('0xe'),JSON['stringify'](_0x55909));if(_0x55909['error']){if(_0x55909[_0x5f50('0xf')][_0x5f50('0x10')]===0x1f4){logger[_0x5f50('0xf')](_0x5f50('0xd'),_0x5c9f01,_0x55909[_0x5f50('0xf')][_0x5f50('0x11')]);return _0x1565c2(_0x55909[_0x5f50('0xf')][_0x5f50('0x11')]);}logger[_0x5f50('0xf')](_0x5f50('0xd'),_0x5c9f01,_0x55909['error'][_0x5f50('0x11')]);return _0x2ce60d(_0x55909[_0x5f50('0xf')][_0x5f50('0x11')]);}else{logger[_0x5f50('0xc')]('ReportAgentPreview,\x20%s,\x20%s',_0x5c9f01,'request\x20sent');_0x2ce60d(_0x55909[_0x5f50('0x12')]['message']);}})['catch'](function(_0x1e650a){logger[_0x5f50('0xf')]('ReportAgentPreview,\x20%s,\x20%s',_0x5c9f01,_0x1e650a);_0x1565c2(_0x1e650a);});});}exports[_0x5f50('0x13')]=function(_0x10e37b){var _0xb89625=this;return new Promise(function(_0x3b478f,_0x31dc31){return db[_0x5f50('0x14')][_0x5f50('0x15')](_0x10e37b[_0x5f50('0x16')],{'raw':_0x10e37b['options']?_0x10e37b[_0x5f50('0x17')][_0x5f50('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x368fe6){logger[_0x5f50('0xc')](_0x5f50('0x13'),_0x10e37b);logger[_0x5f50('0x19')]('CreateReportAgentPreview',_0x10e37b,JSON[_0x5f50('0x1a')](_0x368fe6));_0x3b478f(_0x368fe6);})['catch'](function(_0x315954){logger[_0x5f50('0xf')]('CreateReportAgentPreview',_0x315954['message'],_0x10e37b);_0x31dc31(_0xb89625[_0x5f50('0xf')](0x1f4,_0x315954[_0x5f50('0x11')]));});});};
\ No newline at end of file
index fae576d..b962a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cb1=['/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','path','express','Router','../../components/auth/service','./rpc.controller','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','put','/voice/queues/:id','/outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','/telephones','telephones','/trunks','/campaigns','campaigns','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail'];(function(_0x4fa7b2,_0x3f436e){var _0x138bd3=function(_0x22d2a9){while(--_0x22d2a9){_0x4fa7b2['push'](_0x4fa7b2['shift']());}};_0x138bd3(++_0x3f436e);}(_0x4cb1,0x167));var _0x14cb=function(_0x1dc641,_0x2d22dd){_0x1dc641=_0x1dc641-0x0;var _0x1cf1a1=_0x4cb1[_0x1dc641];return _0x1cf1a1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x14cb('0x0'));var express=require(_0x14cb('0x1'));var router=express[_0x14cb('0x2')]();var auth=require(_0x14cb('0x3'));var controller=require(_0x14cb('0x4'));router['get']('/voice/channels',auth['isAuthenticated'](),controller[_0x14cb('0x5')]);router[_0x14cb('0x6')](_0x14cb('0x7'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x9')]);router[_0x14cb('0x6')](_0x14cb('0xa'),auth[_0x14cb('0x8')](),controller[_0x14cb('0xb')]);router[_0x14cb('0x6')](_0x14cb('0xc'),auth['isAuthenticated'](),controller[_0x14cb('0xd')]);router['get']('/chat/queues',auth[_0x14cb('0x8')](),controller[_0x14cb('0xe')]);router[_0x14cb('0x6')](_0x14cb('0xf'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x10')]);router[_0x14cb('0x6')]('/mail/accounts',auth[_0x14cb('0x8')](),controller[_0x14cb('0x11')]);router[_0x14cb('0x6')](_0x14cb('0x12'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x13')]);router[_0x14cb('0x6')](_0x14cb('0x14'),auth['isAuthenticated'](),controller[_0x14cb('0x15')]);router[_0x14cb('0x6')](_0x14cb('0x16'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x17')]);router[_0x14cb('0x6')](_0x14cb('0x18'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x19')]);router['get'](_0x14cb('0x1a'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x1b')]);router['get'](_0x14cb('0x1c'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x1d')]);router['get'](_0x14cb('0x1e'),auth[_0x14cb('0x8')](),controller['voiceQueuesChannel']);router[_0x14cb('0x6')](_0x14cb('0x1f'),auth['isAuthenticated'](),controller[_0x14cb('0x20')]);router[_0x14cb('0x6')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x14cb('0x8')](),controller['voiceQueuesChannelRedirect']);router['get']('/voice/queues/:id',auth['isAuthenticated'](),controller['showVoiceQueues']);router[_0x14cb('0x21')](_0x14cb('0x22'),auth[_0x14cb('0x8')](),controller['updateVoiceQueue']);router[_0x14cb('0x6')](_0x14cb('0x23'),auth['isAuthenticated'](),controller['outbound']);router['get'](_0x14cb('0x24'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x25')]);router[_0x14cb('0x6')](_0x14cb('0x26'),auth['isAuthenticated'](),controller['agents']);router[_0x14cb('0x21')](_0x14cb('0x27'),auth[_0x14cb('0x8')](),controller['agentCapacity']);router[_0x14cb('0x6')](_0x14cb('0x28'),auth['isAuthenticated'](),controller[_0x14cb('0x29')]);router[_0x14cb('0x6')](_0x14cb('0x2a'),auth['isAuthenticated'](),controller['trunks']);router[_0x14cb('0x6')](_0x14cb('0x2b'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x2c')]);router[_0x14cb('0x6')]('/fax/accounts',auth[_0x14cb('0x8')](),controller['faxAccounts']);router['get'](_0x14cb('0x2d'),auth['isAuthenticated'](),controller[_0x14cb('0x2e')]);router['get'](_0x14cb('0x2f'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x30')]);router[_0x14cb('0x6')](_0x14cb('0x31'),auth[_0x14cb('0x8')](),controller['openchannelQueuesWaitingInteractions']);router[_0x14cb('0x6')](_0x14cb('0x32'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x33')]);router[_0x14cb('0x6')](_0x14cb('0x34'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x35')]);router[_0x14cb('0x6')](_0x14cb('0x36'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x37')]);router['get']('/fax/queues/waitinginteractions',auth[_0x14cb('0x8')](),controller[_0x14cb('0x38')]);router[_0x14cb('0x39')](_0x14cb('0x3a'),auth['isAuthenticated'](),controller[_0x14cb('0x3b')](_0x14cb('0x3c')));router['get'](_0x14cb('0x3d'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x3e')]);router['post'](_0x14cb('0x3f'),auth['isAuthenticated'](),controller['queueNotify'](_0x14cb('0x40')));router['get'](_0x14cb('0x41'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x42')]);router[_0x14cb('0x39')](_0x14cb('0x43'),auth['isAuthenticated'](),controller[_0x14cb('0x3b')]('fax'));router[_0x14cb('0x6')](_0x14cb('0x44'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x45')]);router[_0x14cb('0x39')](_0x14cb('0x46'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x3b')](_0x14cb('0x47')));router[_0x14cb('0x6')](_0x14cb('0x48'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x49')]);router['post'](_0x14cb('0x4a'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x3b')](_0x14cb('0x4b')));router[_0x14cb('0x39')](_0x14cb('0x4c'),auth['isAuthenticated'](),controller[_0x14cb('0x3b')](_0x14cb('0x4d')));router[_0x14cb('0x6')](_0x14cb('0x4e'),auth[_0x14cb('0x8')](),controller['showSmsQueues']);router['get'](_0x14cb('0x4f'),auth['isAuthenticated'](),controller[_0x14cb('0x50')]);router[_0x14cb('0x39')](_0x14cb('0x51'),auth[_0x14cb('0x8')](),controller[_0x14cb('0x52')]);module[_0x14cb('0x53')]=router;
\ No newline at end of file
+var _0xf5fe=['voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','openchannel','/openchannel/queues/:id','post','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','./rpc.controller','get','/voice/channels','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/whatsapp/queues','whatsappQueues','faxQueues','/voice/queues/preview/:id'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xf5fe,0x1da));var _0xef5f=function(_0x14884f,_0x382384){_0x14884f=_0x14884f-0x0;var _0x36acae=_0xf5fe[_0x14884f];return _0x36acae;};'use strict';var multer=require(_0xef5f('0x0'));var util=require(_0xef5f('0x1'));var path=require(_0xef5f('0x2'));var express=require(_0xef5f('0x3'));var router=express[_0xef5f('0x4')]();var auth=require('../../components/auth/service');var controller=require(_0xef5f('0x5'));router[_0xef5f('0x6')](_0xef5f('0x7'),auth[_0xef5f('0x8')](),controller['voiceChannels']);router[_0xef5f('0x6')](_0xef5f('0x9'),auth['isAuthenticated'](),controller[_0xef5f('0xa')]);router['get']('/voice/channels/:uniqueid/stopmixmonitor',auth[_0xef5f('0x8')](),controller[_0xef5f('0xb')]);router[_0xef5f('0x6')](_0xef5f('0xc'),auth[_0xef5f('0x8')](),controller[_0xef5f('0xd')]);router[_0xef5f('0x6')](_0xef5f('0xe'),auth[_0xef5f('0x8')](),controller[_0xef5f('0xf')]);router[_0xef5f('0x6')](_0xef5f('0x10'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x11')]);router['get'](_0xef5f('0x12'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x13')]);router[_0xef5f('0x6')]('/openchannel/queues',auth[_0xef5f('0x8')](),controller['openchannelQueues']);router[_0xef5f('0x6')]('/sms/queues',auth['isAuthenticated'](),controller['smsQueues']);router['get'](_0xef5f('0x14'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x15')]);router[_0xef5f('0x6')]('/fax/queues',auth[_0xef5f('0x8')](),controller[_0xef5f('0x16')]);router[_0xef5f('0x6')](_0xef5f('0x17'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x18')]);router[_0xef5f('0x6')](_0xef5f('0x19'),auth['isAuthenticated'](),controller[_0xef5f('0x1a')]);router[_0xef5f('0x6')](_0xef5f('0x1b'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x1c')]);router[_0xef5f('0x6')](_0xef5f('0x1d'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x1e')]);router[_0xef5f('0x6')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0xef5f('0x8')](),controller['voiceQueuesChannelRedirect']);router[_0xef5f('0x6')](_0xef5f('0x1f'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x20')]);router[_0xef5f('0x21')](_0xef5f('0x1f'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x22')]);router['get']('/outbound',auth['isAuthenticated'](),controller['outbound']);router[_0xef5f('0x6')]('/outbound/channels',auth[_0xef5f('0x8')](),controller[_0xef5f('0x23')]);router[_0xef5f('0x6')](_0xef5f('0x24'),auth['isAuthenticated'](),controller[_0xef5f('0x25')]);router[_0xef5f('0x21')](_0xef5f('0x26'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x27')]);router[_0xef5f('0x6')](_0xef5f('0x28'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x29')]);router[_0xef5f('0x6')]('/trunks',auth[_0xef5f('0x8')](),controller[_0xef5f('0x2a')]);router[_0xef5f('0x6')]('/campaigns',auth['isAuthenticated'](),controller[_0xef5f('0x2b')]);router[_0xef5f('0x6')](_0xef5f('0x2c'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x2d')]);router[_0xef5f('0x6')](_0xef5f('0x2e'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x2f')]);router['get'](_0xef5f('0x30'),auth[_0xef5f('0x8')](),controller['mailQueuesWaitingInteractions']);router[_0xef5f('0x6')](_0xef5f('0x31'),auth['isAuthenticated'](),controller['openchannelQueuesWaitingInteractions']);router[_0xef5f('0x6')](_0xef5f('0x32'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x33')]);router[_0xef5f('0x6')](_0xef5f('0x34'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x35')]);router[_0xef5f('0x6')]('/whatsapp/queues/waitinginteractions',auth[_0xef5f('0x8')](),controller[_0xef5f('0x36')]);router[_0xef5f('0x6')](_0xef5f('0x37'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x38')]);router['post'](_0xef5f('0x39'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x3a')](_0xef5f('0x3b')));router[_0xef5f('0x6')](_0xef5f('0x3c'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x3d')]);router['post'](_0xef5f('0x3e'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x3a')](_0xef5f('0x3f')));router[_0xef5f('0x6')](_0xef5f('0x40'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x41')]);router['post'](_0xef5f('0x42'),auth['isAuthenticated'](),controller[_0xef5f('0x3a')](_0xef5f('0x43')));router[_0xef5f('0x6')](_0xef5f('0x44'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x45')]);router['post']('/openchannel/queues/:id/notify',auth[_0xef5f('0x8')](),controller[_0xef5f('0x3a')](_0xef5f('0x46')));router[_0xef5f('0x6')](_0xef5f('0x47'),auth[_0xef5f('0x8')](),controller['showOpenchannelQueues']);router[_0xef5f('0x48')](_0xef5f('0x49'),auth[_0xef5f('0x8')](),controller[_0xef5f('0x3a')](_0xef5f('0x4a')));router[_0xef5f('0x48')](_0xef5f('0x4b'),auth[_0xef5f('0x8')](),controller['queueNotify'](_0xef5f('0x4c')));router['get'](_0xef5f('0x4d'),auth['isAuthenticated'](),controller[_0xef5f('0x4e')]);router[_0xef5f('0x6')](_0xef5f('0x4f'),auth[_0xef5f('0x8')](),controller['showWhatsappQueues']);router['post'](_0xef5f('0x50'),auth['isAuthenticated'](),controller[_0xef5f('0x51')]);module[_0xef5f('0x52')]=router;
\ No newline at end of file
index ba9db05..f1378b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['whatsappQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','Account','QueueId','TransferReport','create','Start','queueTransferTimeout','agentNotify','channel','Channel\x20field\x20is\x20mandatory','chat','User','Agent\x20not\x20found','agentTransferTimeout','*,*,*,*','bluebird','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','catch','status','sendStatus','stack','name','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','params','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','OutboundChannels','Agents','user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','format','SIP/%s','interface','agent','internal','capacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','SmsQueues'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x458259,_0x56f026){_0x458259=_0x458259-0x0;var _0x5a8560=_0x3eea[_0x458259];return _0x5a8560;};'use strict';var BPromise=require(_0xa3ee('0x0'));var moment=require('moment');var _=require(_0xa3ee('0x1'));var util=require(_0xa3ee('0x2'));var db=require(_0xa3ee('0x3'))['db'];var logger=require(_0xa3ee('0x4'))(_0xa3ee('0x5'));var jayson=require(_0xa3ee('0x6'));var amiClient=jayson[_0xa3ee('0x7')][_0xa3ee('0x8')]({'port':0x232a});var mailClient=jayson[_0xa3ee('0x7')][_0xa3ee('0x8')]({'port':0x232b});var routingClient=jayson[_0xa3ee('0x7')]['http']({'port':0x232c});function respondWithRpcPromise(_0x538bf9,_0x4183ee,_0x4e4588){return new BPromise(function(_0x37a3f0,_0x56f37b){var _0x1eeb5b=_0x4e4588?_0x4e4588:amiClient;return _0x1eeb5b['request'](_0x538bf9,_0x4183ee)[_0xa3ee('0x9')](function(_0x5ef236){if(_0x5ef236[_0xa3ee('0xa')]){if(_0x5ef236[_0xa3ee('0xa')][_0xa3ee('0xb')]===0x1f4){return _0x56f37b(_0x5ef236['error'][_0xa3ee('0xc')]);}return _0x37a3f0(_0x5ef236[_0xa3ee('0xa')]['message']);}else{_0x37a3f0(_0x5ef236['result']);}})[_0xa3ee('0xd')](function(_0x30e652){_0x56f37b(_0x30e652);});});}function respondWithResult(_0x403518,_0x4363d1){_0x4363d1=_0x4363d1||0xc8;return function(_0x594c88){if(_0x594c88){return _0x403518[_0xa3ee('0xe')](_0x4363d1)['json'](_0x594c88);}return _0x403518[_0xa3ee('0xf')](0x194);};}function handleError(_0x20535f,_0x2c34cf){_0x2c34cf=_0x2c34cf||0x1f4;return function(_0x150e20){logger['error'](_0x150e20[_0xa3ee('0x10')]);if(_0x150e20[_0xa3ee('0x11')]){delete _0x150e20['name'];}_0x20535f['status'](_0x2c34cf)['send'](_0x150e20);};}function findById(_0x40decb){return function(_0x7277cd){if(!_[_0xa3ee('0x12')](_0x40decb)&&!_[_0xa3ee('0x12')](_0x7277cd)&&!_['isNil'](_0x7277cd[_0xa3ee('0x13')])){return _[_0xa3ee('0x14')](_0x7277cd[_0xa3ee('0x13')],function(_0x299b1e){return _0x299b1e['id']==_0x40decb;});}return null;};}exports[_0xa3ee('0x15')]=function(_0x4aac0e,_0x377b9d){return respondWithRpcPromise(_0xa3ee('0x16'),_0x4aac0e[_0xa3ee('0x17')])[_0xa3ee('0x9')](respondWithResult(_0x377b9d,null))[_0xa3ee('0xd')](handleError(_0x377b9d,null));};exports[_0xa3ee('0x18')]=function(_0x4f8c56,_0x3f5d70){return respondWithRpcPromise(_0xa3ee('0x19'),_['merge'](_0x4f8c56[_0xa3ee('0x17')],_0x4f8c56['params']))[_0xa3ee('0x9')](respondWithResult(_0x3f5d70,null))[_0xa3ee('0xd')](handleError(_0x3f5d70,null));};exports[_0xa3ee('0x1a')]=function(_0x1bd196,_0x60b899){return respondWithRpcPromise(_0xa3ee('0x1b'),_[_0xa3ee('0x1c')](_0x1bd196[_0xa3ee('0x17')],_0x1bd196[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x60b899,null))['catch'](handleError(_0x60b899,null));};exports[_0xa3ee('0x1e')]=function(_0x1dca29,_0x157071){return respondWithRpcPromise(_0xa3ee('0x1f'),_0x1dca29[_0xa3ee('0x17')])['then'](respondWithResult(_0x157071,null))[_0xa3ee('0xd')](handleError(_0x157071,null));};exports[_0xa3ee('0x20')]=function(_0x146493,_0xd9a7f8){return respondWithRpcPromise(_0xa3ee('0x1f'),_0x146493[_0xa3ee('0x17')])[_0xa3ee('0x9')](findById(_0x146493[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0xd9a7f8,null))[_0xa3ee('0xd')](handleError(_0xd9a7f8,null));};exports['updateVoiceQueue']=function(_0x5ba571,_0x4abf49){return respondWithRpcPromise(_0xa3ee('0x21'),_['merge'](_0x5ba571[_0xa3ee('0x22')],_0x5ba571[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x4abf49,null))[_0xa3ee('0xd')](handleError(_0x4abf49,null));};exports[_0xa3ee('0x23')]=function(_0x14547d,_0x30ba4e){return respondWithRpcPromise(_0xa3ee('0x24'),_[_0xa3ee('0x1c')](_0x14547d[_0xa3ee('0x17')],_0x14547d['params']))[_0xa3ee('0x9')](respondWithResult(_0x30ba4e,null))['catch'](handleError(_0x30ba4e,null));};exports[_0xa3ee('0x25')]=function(_0x332d61,_0x496839){return respondWithRpcPromise(_0xa3ee('0x26'),_0x332d61['query'])[_0xa3ee('0x9')](respondWithResult(_0x496839,null))['catch'](handleError(_0x496839,null));};exports[_0xa3ee('0x27')]=function(_0x299099,_0x2f803c){return respondWithRpcPromise(_0xa3ee('0x28'),_[_0xa3ee('0x1c')](_0x299099['query'],_0x299099[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x2f803c,null))[_0xa3ee('0xd')](handleError(_0x2f803c,null));};exports['voiceQueuesChannelHangup']=function(_0x1599e4,_0x531f58){return respondWithRpcPromise(_0xa3ee('0x29'),_['merge'](_0x1599e4[_0xa3ee('0x17')],_0x1599e4['params']))[_0xa3ee('0x9')](respondWithResult(_0x531f58,null))[_0xa3ee('0xd')](handleError(_0x531f58,null));};exports[_0xa3ee('0x2a')]=function(_0x45be9b,_0x1717ba){return respondWithRpcPromise(_0xa3ee('0x2b'),_[_0xa3ee('0x1c')](_0x45be9b[_0xa3ee('0x17')],_0x45be9b[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x1717ba,null))[_0xa3ee('0xd')](handleError(_0x1717ba,null));};exports[_0xa3ee('0x2c')]=function(_0x447efd,_0x595b55){return respondWithRpcPromise(_0xa3ee('0x2d'),_0x447efd[_0xa3ee('0x17')])[_0xa3ee('0x9')](respondWithResult(_0x595b55,null))[_0xa3ee('0xd')](handleError(_0x595b55,null));};exports['outboundChannels']=function(_0x257627,_0x11a721){return respondWithRpcPromise(_0xa3ee('0x2e'),_0x257627['query'])[_0xa3ee('0x9')](respondWithResult(_0x11a721,null))[_0xa3ee('0xd')](handleError(_0x11a721,null));};exports['agents']=function(_0x319c26,_0x3ecbe6){var _0x4ef99a;return respondWithRpcPromise(_0xa3ee('0x2f'),_0x319c26[_0xa3ee('0x17')])[_0xa3ee('0x9')](function(_0x2c8873){_0x4ef99a=_0x2c8873;return respondWithRpcPromise(_0xa3ee('0x2f'),_0x319c26[_0xa3ee('0x17')],routingClient);})[_0xa3ee('0x9')](function(_0x3e0eec){return _[_0xa3ee('0x1c')]({},_0x3e0eec,_0x4ef99a);})[_0xa3ee('0x9')](respondWithResult(_0x3ecbe6,null))[_0xa3ee('0xd')](handleError(_0x3ecbe6,null));};exports['agentCapacity']=function(_0x5aa4b3,_0x548534){if(_0x5aa4b3[_0xa3ee('0x22')]&&_0x5aa4b3[_0xa3ee('0x22')]['interaction']&&_0x5aa4b3[_0xa3ee('0x30')]&&_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')]){for(var _0x55f47f in _0x5aa4b3[_0xa3ee('0x22')]['interaction']){if(_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0xa3ee('0x32')](_0x55f47f)){db[_0xa3ee('0x33')][_0xa3ee('0x34')]({'where':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')],'type':_0xa3ee('0x35'),'exitAt':null,'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f]&&_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0xa3ee('0x36')]?{'$notIn':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f]}:{'$ne':null}}})[_0xa3ee('0x9')](function(_0x25e0fe){var _0x4594e1=moment()['format'](_0xa3ee('0x37'));for(var _0xdca412=0x0,_0x112e80=_0x25e0fe[_0xa3ee('0x36')];_0xdca412<_0x112e80;_0xdca412+=0x1){_0x25e0fe[_0xdca412]['updateAttributes']({'exitAt':_0x4594e1});}});for(var _0x30fcf1=0x0;_0x30fcf1<_0x5aa4b3['body'][_0xa3ee('0x31')][_0x55f47f][_0xa3ee('0x36')];_0x30fcf1+=0x1){db[_0xa3ee('0x33')][_0xa3ee('0x38')]({'where':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')],'type':_0xa3ee('0x35'),'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0x30fcf1],'exitAt':null},'defaults':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')]['name'],'interface':_[_0xa3ee('0x12')](_0x5aa4b3['user']['interface'])?util[_0xa3ee('0x39')](_0xa3ee('0x3a'),_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')]):_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x3b')],'type':_0xa3ee('0x35'),'enterAt':moment()['format'](_0xa3ee('0x37')),'role':_0xa3ee('0x3c'),'internal':_0x5aa4b3['user'][_0xa3ee('0x3d')],'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0x30fcf1]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x5aa4b3['params']['id'],'capacity':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x3e')]},routingClient)[_0xa3ee('0x9')](respondWithResult(_0x548534,null))[_0xa3ee('0xd')](handleError(_0x548534,null));};exports[_0xa3ee('0x3f')]=function(_0x57e654,_0x55678e){return respondWithRpcPromise(_0xa3ee('0x40'),_0x57e654[_0xa3ee('0x17')])['then'](respondWithResult(_0x55678e,null))[_0xa3ee('0xd')](handleError(_0x55678e,null));};exports[_0xa3ee('0x41')]=function(_0x13cd8b,_0x579ec8){return respondWithRpcPromise('Trunks',_0x13cd8b[_0xa3ee('0x17')])['then'](respondWithResult(_0x579ec8,null))[_0xa3ee('0xd')](handleError(_0x579ec8,null));};exports[_0xa3ee('0x42')]=function(_0x5b8e79,_0x4232e0){return respondWithRpcPromise(_0xa3ee('0x43'),_0x5b8e79[_0xa3ee('0x17')])['then'](respondWithResult(_0x4232e0,null))[_0xa3ee('0xd')](handleError(_0x4232e0,null));};exports[_0xa3ee('0x44')]=function(_0x594034,_0x1d832c){return respondWithRpcPromise(_0xa3ee('0x45'),_0x594034[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x1d832c,null))['catch'](handleError(_0x1d832c,null));};exports[_0xa3ee('0x46')]=function(_0x17ac07,_0x4a1a2f){return respondWithRpcPromise(_0xa3ee('0x45'),_0x17ac07[_0xa3ee('0x17')],routingClient)['then'](findById(_0x17ac07['params']['id']))[_0xa3ee('0x9')](respondWithResult(_0x4a1a2f,null))[_0xa3ee('0xd')](handleError(_0x4a1a2f,null));};exports[_0xa3ee('0x47')]=function(_0x52b824,_0x11fb6e){return respondWithRpcPromise(_0xa3ee('0x48'),_0x52b824[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x11fb6e,null))[_0xa3ee('0xd')](handleError(_0x11fb6e,null));};exports[_0xa3ee('0x49')]=function(_0x497be4,_0x10f508){return respondWithRpcPromise(_0xa3ee('0x48'),_0x497be4['query'],routingClient)[_0xa3ee('0x9')](findById(_0x497be4[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0x10f508,null))[_0xa3ee('0xd')](handleError(_0x10f508,null));};exports[_0xa3ee('0x4a')]=function(_0x330778,_0x4a2255){return respondWithRpcPromise(_0xa3ee('0x4b'),_0x330778[_0xa3ee('0x17')],mailClient)[_0xa3ee('0x9')](respondWithResult(_0x4a2255,null))['catch'](handleError(_0x4a2255,null));};exports[_0xa3ee('0x4c')]=function(_0x13b81b,_0x519f10){return respondWithRpcPromise('OpenchannelQueues',_0x13b81b['query'],routingClient)['then'](respondWithResult(_0x519f10,null))[_0xa3ee('0xd')](handleError(_0x519f10,null));};exports[_0xa3ee('0x4d')]=function(_0x3adafb,_0x2f0424){return respondWithRpcPromise(_0xa3ee('0x4e'),_0x3adafb[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x3adafb['params']['id']))[_0xa3ee('0x9')](respondWithResult(_0x2f0424,null))[_0xa3ee('0xd')](handleError(_0x2f0424,null));};exports[_0xa3ee('0x4f')]=function(_0xaff641,_0x147024){return respondWithRpcPromise('SmsQueues',_0xaff641['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x147024,null))[_0xa3ee('0xd')](handleError(_0x147024,null));};exports[_0xa3ee('0x50')]=function(_0x24613d,_0x16aabe){return respondWithRpcPromise(_0xa3ee('0x51'),_0x24613d[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x24613d[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0x16aabe,null))[_0xa3ee('0xd')](handleError(_0x16aabe,null));};exports[_0xa3ee('0x52')]=function(_0x64f353,_0x224790){return respondWithRpcPromise(_0xa3ee('0x53'),_0x64f353['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x224790,null))['catch'](handleError(_0x224790,null));};exports['showWhatsappQueues']=function(_0x2b1c6e,_0x49daf9){return respondWithRpcPromise(_0xa3ee('0x53'),_0x2b1c6e[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x2b1c6e[_0xa3ee('0x1d')]['id']))['then'](respondWithResult(_0x49daf9,null))[_0xa3ee('0xd')](handleError(_0x49daf9,null));};exports[_0xa3ee('0x54')]=function(_0x179ae2,_0x370e3e){return respondWithRpcPromise('FaxQueues',_0x179ae2[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x370e3e,null))['catch'](handleError(_0x370e3e,null));};exports[_0xa3ee('0x55')]=function(_0x52a066,_0x4f3aac){return respondWithRpcPromise(_0xa3ee('0x56'),_0x52a066['query'],routingClient)['then'](findById(_0x52a066[_0xa3ee('0x1d')]['id']))['then'](respondWithResult(_0x4f3aac,null))['catch'](handleError(_0x4f3aac,null));};exports[_0xa3ee('0x57')]=function(_0xf8689f,_0x538a9b){return respondWithRpcPromise('FaxAccounts',_0xf8689f['query'])[_0xa3ee('0x9')](respondWithResult(_0x538a9b,null))[_0xa3ee('0xd')](handleError(_0x538a9b,null));};exports[_0xa3ee('0x58')]=function(_0x7844ae,_0x389547){return respondWithRpcPromise(_0xa3ee('0x59'),_0x7844ae['query'],routingClient)['then'](respondWithResult(_0x389547,null))[_0xa3ee('0xd')](handleError(_0x389547,null));};exports[_0xa3ee('0x5a')]=function(_0x42a79e,_0x5675fb){return respondWithRpcPromise(_0xa3ee('0x5b'),_0x42a79e[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x5675fb,null))[_0xa3ee('0xd')](handleError(_0x5675fb,null));};exports[_0xa3ee('0x5c')]=function(_0x3be877,_0x2ad745){return respondWithRpcPromise(_0xa3ee('0x5d'),_0x3be877['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x2ad745,null))[_0xa3ee('0xd')](handleError(_0x2ad745,null));};exports[_0xa3ee('0x5e')]=function(_0x37e1c2,_0xbfb429){return respondWithRpcPromise(_0xa3ee('0x5d'),_0x37e1c2[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](function(_0x448f14){if(_0x37e1c2['query']['type']!==undefined){var _0x228671=_(_0x448f14['rows'])[_0xa3ee('0x5f')]([_0x37e1c2[_0xa3ee('0x17')][_0xa3ee('0x60')],_0x37e1c2[_0xa3ee('0x1d')]['id']])['map'](_0xa3ee('0x61'))[_0xa3ee('0x62')]()[_0xa3ee('0x63')]();return _0x448f14[_0xa3ee('0x13')][_0xa3ee('0x5f')](function(_0x4e9473){return _0x228671[_0xa3ee('0x64')](_0x4e9473[_0xa3ee('0x61')])>-0x1;});}else{return _0x448f14[_0xa3ee('0x13')]['filter'](function(_0x3ca523){return _0x3ca523['queue_id']===parseInt(_0x37e1c2[_0xa3ee('0x1d')]['id']);});}})['then'](respondWithResult(_0xbfb429,null))[_0xa3ee('0xd')](handleError(_0xbfb429,null));};exports[_0xa3ee('0x65')]=function(_0x119c3d,_0x140ee0){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x119c3d[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x140ee0,null))['catch'](handleError(_0x140ee0,null));};exports[_0xa3ee('0x66')]=function(_0xa82482,_0x44b084){return respondWithRpcPromise(_0xa3ee('0x67'),_0xa82482[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x44b084,null))[_0xa3ee('0xd')](handleError(_0x44b084,null));};exports[_0xa3ee('0x68')]=function(_0x55a6b7,_0x2535ef){return respondWithRpcPromise(_0xa3ee('0x69'),_0x55a6b7[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x2535ef,null))[_0xa3ee('0xd')](handleError(_0x2535ef,null));};exports[_0xa3ee('0x6a')]=function(_0x31d3ca){return function(_0x329e32,_0x37bde3){var _0x25334c,_0x4f7ace;var _0x21fd56=_[_0xa3ee('0x6b')](_0x31d3ca);var _0x26a124=_0x31d3ca==='chat'?_0xa3ee('0x6c'):'Account';return db[_0x21fd56+_0xa3ee('0x6d')][_0xa3ee('0x6e')]({'raw':!![],'where':{'id':_0x329e32['params']['id']}})[_0xa3ee('0x9')](function(_0x44f27b){if(_['isNil'](_0x44f27b)){throw new Error(_0x21fd56+_0xa3ee('0x6f'));}_0x25334c=_0x44f27b;return db[_0x21fd56+_0xa3ee('0x70')][_0xa3ee('0x6e')]({'where':{'id':_0x329e32[_0xa3ee('0x22')][_0xa3ee('0x71')]},'include':[{'model':db[_0x21fd56+_0xa3ee('0x72')],'as':'Interaction'},{'model':db[_0x21fd56+_0x26a124],'as':'Account'}]});})['then'](function(_0x27454a){if(_['isNil'](_0x27454a)){throw new Error(_0x21fd56+_0xa3ee('0x73'));}_0x4f7ace=_0x27454a;return _0x27454a[_0xa3ee('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa3ee('0x9')](function(){var _0x312ad8={'uniqueid':_0x31d3ca+'.'+_0x4f7ace['id']+'.'+_0x4f7ace[_0xa3ee('0x72')]['id'],'FromUserId':_0x329e32[_0xa3ee('0x30')]['id'],'type':_0xa3ee('0x75')};_0x312ad8[_0x21fd56+_0xa3ee('0x76')]=_0x4f7ace['id'];_0x312ad8[_0x21fd56+_0xa3ee('0x77')]=_0x4f7ace[_0xa3ee('0x72')]['id'];_0x312ad8[_0xa3ee('0x78')+_0x21fd56+_0x26a124+'Id']=_0x4f7ace[_0xa3ee('0x79')]['id'];_0x312ad8['To'+_0x21fd56+_0xa3ee('0x7a')]=_0x25334c['id'];return db[_0x21fd56+_0xa3ee('0x7b')][_0xa3ee('0x7c')](_0x312ad8);})[_0xa3ee('0x9')](function(){return respondWithRpcPromise(_0xa3ee('0x7d'),{'channel':_0x31d3ca,'interaction':_0x4f7ace[_0xa3ee('0x72')],'message':_0x4f7ace,'account':_0x4f7ace[_0xa3ee('0x79')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x25334c[_0xa3ee('0x11')]+','+(_0x4f7ace[_0xa3ee('0x79')][_0xa3ee('0x7e')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x37bde3,null))[_0xa3ee('0xd')](handleError(_0x37bde3,null));};};exports[_0xa3ee('0x7f')]=function(_0x591bfa,_0x5b53f1){var _0x24cbc9,_0x157436;if(_[_0xa3ee('0x12')](_0x591bfa[_0xa3ee('0x22')][_0xa3ee('0x80')])){throw new Error(_0xa3ee('0x81'));}var _0x18a74b=_0x591bfa[_0xa3ee('0x22')][_0xa3ee('0x80')];var _0x3e6657=_[_0xa3ee('0x6b')](_0x18a74b);var _0x3236b3=_0x18a74b===_0xa3ee('0x82')?'Website':_0xa3ee('0x79');return db[_0xa3ee('0x83')][_0xa3ee('0x6e')]({'raw':!![],'where':{'id':_0x591bfa[_0xa3ee('0x1d')]['id'],'role':_0xa3ee('0x3c')}})[_0xa3ee('0x9')](function(_0x4cc5e5){if(_['isNil'](_0x4cc5e5)){throw new Error(_0xa3ee('0x84'));}_0x24cbc9=_0x4cc5e5;return db[_0x3e6657+_0xa3ee('0x70')][_0xa3ee('0x6e')]({'where':{'id':_0x591bfa['body'][_0xa3ee('0x71')]},'include':[{'model':db[_0x3e6657+'Interaction'],'as':_0xa3ee('0x72')},{'model':db[_0x3e6657+_0x3236b3],'as':_0xa3ee('0x79')}]});})[_0xa3ee('0x9')](function(_0x10ec99){if(_[_0xa3ee('0x12')](_0x10ec99)){throw new Error(_0x3e6657+_0xa3ee('0x73'));}_0x157436=_0x10ec99;return _0x10ec99[_0xa3ee('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa3ee('0x9')](function(){var _0x116de1={'uniqueid':_0x18a74b+'.'+_0x157436['id']+'.'+_0x157436[_0xa3ee('0x72')]['id'],'FromUserId':_0x591bfa['user']['id'],'type':'queue','ToUserId':_0x24cbc9['id']};_0x116de1[_0x3e6657+'MessageId']=_0x157436['id'];_0x116de1[_0x3e6657+_0xa3ee('0x77')]=_0x157436['Interaction']['id'];_0x116de1[_0xa3ee('0x78')+_0x3e6657+_0x3236b3+'Id']=_0x157436[_0xa3ee('0x79')]['id'];return db[_0x3e6657+_0xa3ee('0x7b')][_0xa3ee('0x7c')](_0x116de1);})[_0xa3ee('0x9')](function(){return respondWithRpcPromise(_0xa3ee('0x7d'),{'channel':_0x18a74b,'interaction':_0x157436[_0xa3ee('0x72')],'message':_0x157436,'account':_0x157436[_0xa3ee('0x79')],'applications':[{'id':0x0,'priority':0x1,'app':_0xa3ee('0x3c'),'appdata':_0x24cbc9['name']+','+(_0x157436['Account'][_0xa3ee('0x85')]||0x12c),'interval':_0xa3ee('0x86')}]},routingClient);})[_0xa3ee('0x9')](respondWithResult(_0x5b53f1,null))[_0xa3ee('0xd')](handleError(_0x5b53f1,null));};
\ No newline at end of file
+var _0xb4c7=['query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','user','interaction','MemberReport','findAll','INTERACTION','length','updateAttributes','findOrCreate','format','SIP/%s','interface','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','showChatQueues','ChatQueues','mailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','indexOf','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','Message','findOne','Interaction','update','MessageId','From','QueueId','TransferReport','create','queueTransferTimeout','*,*,*,*','agentNotify','channel','User','messageId','queue','InteractionId','Start','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','api','jayson/promise','client','http','request','then','error','code','message','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels'];(function(_0x3919b2,_0x111275){var _0x482d98=function(_0x2e29cb){while(--_0x2e29cb){_0x3919b2['push'](_0x3919b2['shift']());}};_0x482d98(++_0x111275);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x32178d,_0x2e3b79){_0x32178d=_0x32178d-0x0;var _0xaa88d=_0xb4c7[_0x32178d];return _0xaa88d;};'use strict';var BPromise=require(_0x7b4c('0x0'));var moment=require(_0x7b4c('0x1'));var _=require(_0x7b4c('0x2'));var util=require(_0x7b4c('0x3'));var db=require(_0x7b4c('0x4'))['db'];var logger=require('../../config/logger')(_0x7b4c('0x5'));var jayson=require(_0x7b4c('0x6'));var amiClient=jayson[_0x7b4c('0x7')][_0x7b4c('0x8')]({'port':0x232a});var mailClient=jayson[_0x7b4c('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0x7b4c('0x7')][_0x7b4c('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x2dd5c7,_0x4bf85d,_0x2d7b7e){return new BPromise(function(_0x21687f,_0x570daa){var _0x433aa2=_0x2d7b7e?_0x2d7b7e:amiClient;return _0x433aa2[_0x7b4c('0x9')](_0x2dd5c7,_0x4bf85d)[_0x7b4c('0xa')](function(_0x237e28){if(_0x237e28[_0x7b4c('0xb')]){if(_0x237e28[_0x7b4c('0xb')][_0x7b4c('0xc')]===0x1f4){return _0x570daa(_0x237e28[_0x7b4c('0xb')][_0x7b4c('0xd')]);}return _0x21687f(_0x237e28[_0x7b4c('0xb')]['message']);}else{_0x21687f(_0x237e28['result']);}})[_0x7b4c('0xe')](function(_0x18342b){_0x570daa(_0x18342b);});});}function respondWithResult(_0x38656b,_0x1722ad){_0x1722ad=_0x1722ad||0xc8;return function(_0x3e1558){if(_0x3e1558){return _0x38656b[_0x7b4c('0xf')](_0x1722ad)[_0x7b4c('0x10')](_0x3e1558);}return _0x38656b[_0x7b4c('0x11')](0x194);};}function handleError(_0x25b90b,_0x387488){_0x387488=_0x387488||0x1f4;return function(_0x593a19){logger[_0x7b4c('0xb')](_0x593a19[_0x7b4c('0x12')]);if(_0x593a19[_0x7b4c('0x13')]){delete _0x593a19[_0x7b4c('0x13')];}_0x25b90b[_0x7b4c('0xf')](_0x387488)[_0x7b4c('0x14')](_0x593a19);};}function findById(_0x1642e1){return function(_0x22c409){if(!_['isNil'](_0x1642e1)&&!_[_0x7b4c('0x15')](_0x22c409)&&!_[_0x7b4c('0x15')](_0x22c409[_0x7b4c('0x16')])){return _[_0x7b4c('0x17')](_0x22c409['rows'],function(_0x3ce10c){return _0x3ce10c['id']==_0x1642e1;});}return null;};}exports[_0x7b4c('0x18')]=function(_0x32110e,_0x380b79){return respondWithRpcPromise(_0x7b4c('0x19'),_0x32110e[_0x7b4c('0x1a')])[_0x7b4c('0xa')](respondWithResult(_0x380b79,null))[_0x7b4c('0xe')](handleError(_0x380b79,null));};exports[_0x7b4c('0x1b')]=function(_0x55e3df,_0x1f06ec){return respondWithRpcPromise(_0x7b4c('0x1c'),_[_0x7b4c('0x1d')](_0x55e3df[_0x7b4c('0x1a')],_0x55e3df[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x1f06ec,null))[_0x7b4c('0xe')](handleError(_0x1f06ec,null));};exports[_0x7b4c('0x1f')]=function(_0x2ab9e1,_0x2c267c){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x7b4c('0x1d')](_0x2ab9e1[_0x7b4c('0x1a')],_0x2ab9e1[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x2c267c,null))[_0x7b4c('0xe')](handleError(_0x2c267c,null));};exports[_0x7b4c('0x20')]=function(_0x37c059,_0x459eb4){return respondWithRpcPromise(_0x7b4c('0x21'),_0x37c059[_0x7b4c('0x1a')])[_0x7b4c('0xa')](respondWithResult(_0x459eb4,null))[_0x7b4c('0xe')](handleError(_0x459eb4,null));};exports[_0x7b4c('0x22')]=function(_0x501f75,_0x27f361){return respondWithRpcPromise(_0x7b4c('0x21'),_0x501f75[_0x7b4c('0x1a')])[_0x7b4c('0xa')](findById(_0x501f75[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x27f361,null))[_0x7b4c('0xe')](handleError(_0x27f361,null));};exports[_0x7b4c('0x23')]=function(_0x3e4a46,_0x9a799b){return respondWithRpcPromise(_0x7b4c('0x24'),_[_0x7b4c('0x1d')](_0x3e4a46[_0x7b4c('0x25')],_0x3e4a46[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x9a799b,null))[_0x7b4c('0xe')](handleError(_0x9a799b,null));};exports[_0x7b4c('0x26')]=function(_0xce5781,_0x9d3d31){return respondWithRpcPromise('VoiceQueuesPreview',_['merge'](_0xce5781['query'],_0xce5781[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x9d3d31,null))[_0x7b4c('0xe')](handleError(_0x9d3d31,null));};exports[_0x7b4c('0x27')]=function(_0x498391,_0x6e66e3){return respondWithRpcPromise(_0x7b4c('0x28'),_0x498391['query'])[_0x7b4c('0xa')](respondWithResult(_0x6e66e3,null))['catch'](handleError(_0x6e66e3,null));};exports[_0x7b4c('0x29')]=function(_0x3b9149,_0x159001){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x7b4c('0x1d')](_0x3b9149[_0x7b4c('0x1a')],_0x3b9149['params']))[_0x7b4c('0xa')](respondWithResult(_0x159001,null))[_0x7b4c('0xe')](handleError(_0x159001,null));};exports[_0x7b4c('0x2a')]=function(_0x2e0835,_0x56ff38){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x7b4c('0x1d')](_0x2e0835[_0x7b4c('0x1a')],_0x2e0835['params']))[_0x7b4c('0xa')](respondWithResult(_0x56ff38,null))['catch'](handleError(_0x56ff38,null));};exports['voiceQueuesChannelRedirect']=function(_0x11ca38,_0x16ae89){return respondWithRpcPromise(_0x7b4c('0x2b'),_[_0x7b4c('0x1d')](_0x11ca38['query'],_0x11ca38[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x16ae89,null))[_0x7b4c('0xe')](handleError(_0x16ae89,null));};exports[_0x7b4c('0x2c')]=function(_0x346e0c,_0xddd16){return respondWithRpcPromise(_0x7b4c('0x2d'),_0x346e0c['query'])['then'](respondWithResult(_0xddd16,null))[_0x7b4c('0xe')](handleError(_0xddd16,null));};exports[_0x7b4c('0x2e')]=function(_0x31ef1e,_0x123a3a){return respondWithRpcPromise(_0x7b4c('0x2f'),_0x31ef1e['query'])[_0x7b4c('0xa')](respondWithResult(_0x123a3a,null))[_0x7b4c('0xe')](handleError(_0x123a3a,null));};exports[_0x7b4c('0x30')]=function(_0x26346a,_0x22f71b){var _0x25659d;return respondWithRpcPromise(_0x7b4c('0x31'),_0x26346a[_0x7b4c('0x1a')])[_0x7b4c('0xa')](function(_0x54cd10){_0x25659d=_0x54cd10;return respondWithRpcPromise(_0x7b4c('0x31'),_0x26346a['query'],routingClient);})[_0x7b4c('0xa')](function(_0x4dc71f){return _[_0x7b4c('0x1d')]({},_0x4dc71f,_0x25659d);})[_0x7b4c('0xa')](respondWithResult(_0x22f71b,null))['catch'](handleError(_0x22f71b,null));};exports['agentCapacity']=function(_0x354578,_0x4314b6){if(_0x354578[_0x7b4c('0x25')]&&_0x354578[_0x7b4c('0x25')]['interaction']&&_0x354578[_0x7b4c('0x32')]&&_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')]){for(var _0x5d4ed8 in _0x354578[_0x7b4c('0x25')]['interaction']){if(_0x354578['body'][_0x7b4c('0x33')]['hasOwnProperty'](_0x5d4ed8)){db[_0x7b4c('0x34')][_0x7b4c('0x35')]({'where':{'channel':_0x5d4ed8,'membername':_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')],'type':_0x7b4c('0x36'),'exitAt':null,'uniqueid':_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8]&&_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8]['length']?{'$notIn':_0x354578[_0x7b4c('0x25')]['interaction'][_0x5d4ed8]}:{'$ne':null}}})['then'](function(_0x23372c){var _0x1f1653=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x255cca=0x0,_0x2ce694=_0x23372c[_0x7b4c('0x37')];_0x255cca<_0x2ce694;_0x255cca+=0x1){_0x23372c[_0x255cca][_0x7b4c('0x38')]({'exitAt':_0x1f1653});}});for(var _0x8ebf9b=0x0;_0x8ebf9b<_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8][_0x7b4c('0x37')];_0x8ebf9b+=0x1){db['MemberReport'][_0x7b4c('0x39')]({'where':{'channel':_0x5d4ed8,'membername':_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')],'type':_0x7b4c('0x36'),'uniqueid':_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8][_0x8ebf9b],'exitAt':null},'defaults':{'channel':_0x5d4ed8,'membername':_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')],'interface':_[_0x7b4c('0x15')](_0x354578['user']['interface'])?util[_0x7b4c('0x3a')](_0x7b4c('0x3b'),_0x354578[_0x7b4c('0x32')]['name']):_0x354578[_0x7b4c('0x32')][_0x7b4c('0x3c')],'type':'INTERACTION','enterAt':moment()[_0x7b4c('0x3a')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x7b4c('0x3d'),'internal':_0x354578['user'][_0x7b4c('0x3e')],'uniqueid':_0x354578['body'][_0x7b4c('0x33')][_0x5d4ed8][_0x8ebf9b]}});}}}}return respondWithRpcPromise(_0x7b4c('0x3f'),{'id':_0x354578['params']['id'],'capacity':_0x354578['body'][_0x7b4c('0x40')]},routingClient)[_0x7b4c('0xa')](respondWithResult(_0x4314b6,null))[_0x7b4c('0xe')](handleError(_0x4314b6,null));};exports['telephones']=function(_0x56233b,_0x2fc5b5){return respondWithRpcPromise(_0x7b4c('0x41'),_0x56233b['query'])['then'](respondWithResult(_0x2fc5b5,null))[_0x7b4c('0xe')](handleError(_0x2fc5b5,null));};exports[_0x7b4c('0x42')]=function(_0x166fd1,_0x4b2207){return respondWithRpcPromise(_0x7b4c('0x43'),_0x166fd1[_0x7b4c('0x1a')])['then'](respondWithResult(_0x4b2207,null))['catch'](handleError(_0x4b2207,null));};exports[_0x7b4c('0x44')]=function(_0x4d8491,_0x59db20){return respondWithRpcPromise(_0x7b4c('0x45'),_0x4d8491['query'])['then'](respondWithResult(_0x59db20,null))[_0x7b4c('0xe')](handleError(_0x59db20,null));};exports[_0x7b4c('0x46')]=function(_0xde9f5,_0x17af17){return respondWithRpcPromise('ChatQueues',_0xde9f5['query'],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x17af17,null))[_0x7b4c('0xe')](handleError(_0x17af17,null));};exports[_0x7b4c('0x47')]=function(_0x59b358,_0x255262){return respondWithRpcPromise(_0x7b4c('0x48'),_0x59b358[_0x7b4c('0x1a')],routingClient)['then'](findById(_0x59b358[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x255262,null))['catch'](handleError(_0x255262,null));};exports[_0x7b4c('0x49')]=function(_0x186e7d,_0x30de26){return respondWithRpcPromise(_0x7b4c('0x4a'),_0x186e7d[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x30de26,null))[_0x7b4c('0xe')](handleError(_0x30de26,null));};exports['showMailQueues']=function(_0x4443d0,_0x2dc79a){return respondWithRpcPromise('MailQueues',_0x4443d0[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0x4443d0[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x2dc79a,null))['catch'](handleError(_0x2dc79a,null));};exports[_0x7b4c('0x4b')]=function(_0x4e84a3,_0x542b85){return respondWithRpcPromise(_0x7b4c('0x4c'),_0x4e84a3[_0x7b4c('0x1a')],mailClient)[_0x7b4c('0xa')](respondWithResult(_0x542b85,null))[_0x7b4c('0xe')](handleError(_0x542b85,null));};exports[_0x7b4c('0x4d')]=function(_0x5b24f6,_0x4fcc9d){return respondWithRpcPromise(_0x7b4c('0x4e'),_0x5b24f6[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x4fcc9d,null))['catch'](handleError(_0x4fcc9d,null));};exports[_0x7b4c('0x4f')]=function(_0xc4dae0,_0x36fc5d){return respondWithRpcPromise('OpenchannelQueues',_0xc4dae0[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0xc4dae0[_0x7b4c('0x1e')]['id']))['then'](respondWithResult(_0x36fc5d,null))[_0x7b4c('0xe')](handleError(_0x36fc5d,null));};exports[_0x7b4c('0x50')]=function(_0x4ac03e,_0x1c64d5){return respondWithRpcPromise('SmsQueues',_0x4ac03e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x1c64d5,null))[_0x7b4c('0xe')](handleError(_0x1c64d5,null));};exports['showSmsQueues']=function(_0x5af2af,_0x237921){return respondWithRpcPromise(_0x7b4c('0x51'),_0x5af2af[_0x7b4c('0x1a')],routingClient)['then'](findById(_0x5af2af[_0x7b4c('0x1e')]['id']))['then'](respondWithResult(_0x237921,null))[_0x7b4c('0xe')](handleError(_0x237921,null));};exports[_0x7b4c('0x52')]=function(_0x1315bd,_0x5f3ed5){return respondWithRpcPromise(_0x7b4c('0x53'),_0x1315bd['query'],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x5f3ed5,null))[_0x7b4c('0xe')](handleError(_0x5f3ed5,null));};exports['showWhatsappQueues']=function(_0x7a38e,_0x13a882){return respondWithRpcPromise(_0x7b4c('0x53'),_0x7a38e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0x7a38e[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x13a882,null))[_0x7b4c('0xe')](handleError(_0x13a882,null));};exports['faxQueues']=function(_0x10d5b3,_0x2dc9a4){return respondWithRpcPromise(_0x7b4c('0x54'),_0x10d5b3[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x2dc9a4,null))[_0x7b4c('0xe')](handleError(_0x2dc9a4,null));};exports[_0x7b4c('0x55')]=function(_0x2a5f6e,_0x34fce4){return respondWithRpcPromise(_0x7b4c('0x54'),_0x2a5f6e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0x2a5f6e[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x34fce4,null))[_0x7b4c('0xe')](handleError(_0x34fce4,null));};exports[_0x7b4c('0x56')]=function(_0x168aa1,_0x36c7d9){return respondWithRpcPromise(_0x7b4c('0x57'),_0x168aa1[_0x7b4c('0x1a')])['then'](respondWithResult(_0x36c7d9,null))['catch'](handleError(_0x36c7d9,null));};exports[_0x7b4c('0x58')]=function(_0x15033e,_0x50069b){return respondWithRpcPromise(_0x7b4c('0x59'),_0x15033e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x50069b,null))[_0x7b4c('0xe')](handleError(_0x50069b,null));};exports[_0x7b4c('0x5a')]=function(_0x15df66,_0x22a254){return respondWithRpcPromise(_0x7b4c('0x5b'),_0x15df66[_0x7b4c('0x1a')],routingClient)['then'](respondWithResult(_0x22a254,null))[_0x7b4c('0xe')](handleError(_0x22a254,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x35067f,_0x5477e3){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x35067f[_0x7b4c('0x1a')],routingClient)['then'](respondWithResult(_0x5477e3,null))['catch'](handleError(_0x5477e3,null));};exports[_0x7b4c('0x5c')]=function(_0x2d17ed,_0x328948){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x2d17ed[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](function(_0x10e789){if(_0x2d17ed[_0x7b4c('0x1a')][_0x7b4c('0x5d')]!==undefined){var _0x2837aa=_(_0x10e789[_0x7b4c('0x16')])[_0x7b4c('0x5e')]([_0x2d17ed[_0x7b4c('0x1a')][_0x7b4c('0x5d')],_0x2d17ed[_0x7b4c('0x1e')]['id']])[_0x7b4c('0x5f')](_0x7b4c('0x60'))[_0x7b4c('0x61')]()['value']();return _0x10e789[_0x7b4c('0x16')][_0x7b4c('0x5e')](function(_0x35e94a){return _0x2837aa[_0x7b4c('0x62')](_0x35e94a['queue_id'])>-0x1;});}else{return _0x10e789[_0x7b4c('0x16')][_0x7b4c('0x5e')](function(_0x149d53){return _0x149d53[_0x7b4c('0x60')]===parseInt(_0x2d17ed[_0x7b4c('0x1e')]['id']);});}})[_0x7b4c('0xa')](respondWithResult(_0x328948,null))[_0x7b4c('0xe')](handleError(_0x328948,null));};exports['smsQueuesWaitingInteractions']=function(_0x11c809,_0x108c99){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x11c809['query'],routingClient)['then'](respondWithResult(_0x108c99,null))[_0x7b4c('0xe')](handleError(_0x108c99,null));};exports[_0x7b4c('0x63')]=function(_0x24d4f9,_0x19804d){return respondWithRpcPromise(_0x7b4c('0x64'),_0x24d4f9[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x19804d,null))[_0x7b4c('0xe')](handleError(_0x19804d,null));};exports[_0x7b4c('0x65')]=function(_0x2bc889,_0x83e8bb){return respondWithRpcPromise(_0x7b4c('0x66'),_0x2bc889[_0x7b4c('0x1a')],routingClient)['then'](respondWithResult(_0x83e8bb,null))[_0x7b4c('0xe')](handleError(_0x83e8bb,null));};exports[_0x7b4c('0x67')]=function(_0x2afaa0){return function(_0x5dc6e6,_0x39c01d){var _0x392656,_0x1faa6f;var _0x3999bf=_[_0x7b4c('0x68')](_0x2afaa0);var _0x57f1a0=_0x2afaa0===_0x7b4c('0x69')?_0x7b4c('0x6a'):_0x7b4c('0x6b');return db[_0x3999bf+_0x7b4c('0x6c')]['findOne']({'raw':!![],'where':{'id':_0x5dc6e6[_0x7b4c('0x1e')]['id']}})[_0x7b4c('0xa')](function(_0xdfa0bc){if(_['isNil'](_0xdfa0bc)){throw new Error(_0x3999bf+_0x7b4c('0x6d'));}_0x392656=_0xdfa0bc;return db[_0x3999bf+_0x7b4c('0x6e')][_0x7b4c('0x6f')]({'where':{'id':_0x5dc6e6[_0x7b4c('0x25')]['messageId']},'include':[{'model':db[_0x3999bf+_0x7b4c('0x70')],'as':_0x7b4c('0x70')},{'model':db[_0x3999bf+_0x57f1a0],'as':_0x7b4c('0x6b')}]});})[_0x7b4c('0xa')](function(_0x50c382){if(_[_0x7b4c('0x15')](_0x50c382)){throw new Error(_0x3999bf+'\x20Message\x20not\x20found');}_0x1faa6f=_0x50c382;return _0x50c382[_0x7b4c('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x24690a={'uniqueid':_0x2afaa0+'.'+_0x1faa6f['id']+'.'+_0x1faa6f[_0x7b4c('0x70')]['id'],'FromUserId':_0x5dc6e6[_0x7b4c('0x32')]['id'],'type':'queue'};_0x24690a[_0x3999bf+_0x7b4c('0x72')]=_0x1faa6f['id'];_0x24690a[_0x3999bf+'InteractionId']=_0x1faa6f[_0x7b4c('0x70')]['id'];_0x24690a[_0x7b4c('0x73')+_0x3999bf+_0x57f1a0+'Id']=_0x1faa6f['Account']['id'];_0x24690a['To'+_0x3999bf+_0x7b4c('0x74')]=_0x392656['id'];return db[_0x3999bf+_0x7b4c('0x75')][_0x7b4c('0x76')](_0x24690a);})[_0x7b4c('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x2afaa0,'interaction':_0x1faa6f[_0x7b4c('0x70')],'message':_0x1faa6f,'account':_0x1faa6f[_0x7b4c('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x392656[_0x7b4c('0x13')]+','+(_0x1faa6f[_0x7b4c('0x6b')][_0x7b4c('0x77')]||0x12c),'interval':_0x7b4c('0x78')}]},routingClient);})[_0x7b4c('0xa')](respondWithResult(_0x39c01d,null))[_0x7b4c('0xe')](handleError(_0x39c01d,null));};};exports[_0x7b4c('0x79')]=function(_0x4e9781,_0x5ec399){var _0xdb202,_0x433d74;if(_[_0x7b4c('0x15')](_0x4e9781[_0x7b4c('0x25')][_0x7b4c('0x7a')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x228b2b=_0x4e9781[_0x7b4c('0x25')][_0x7b4c('0x7a')];var _0x331db1=_['capitalize'](_0x228b2b);var _0x56ba6f=_0x228b2b===_0x7b4c('0x69')?_0x7b4c('0x6a'):_0x7b4c('0x6b');return db[_0x7b4c('0x7b')][_0x7b4c('0x6f')]({'raw':!![],'where':{'id':_0x4e9781['params']['id'],'role':_0x7b4c('0x3d')}})[_0x7b4c('0xa')](function(_0x450eca){if(_[_0x7b4c('0x15')](_0x450eca)){throw new Error('Agent\x20not\x20found');}_0xdb202=_0x450eca;return db[_0x331db1+'Message']['findOne']({'where':{'id':_0x4e9781[_0x7b4c('0x25')][_0x7b4c('0x7c')]},'include':[{'model':db[_0x331db1+_0x7b4c('0x70')],'as':'Interaction'},{'model':db[_0x331db1+_0x56ba6f],'as':_0x7b4c('0x6b')}]});})['then'](function(_0x530030){if(_[_0x7b4c('0x15')](_0x530030)){throw new Error(_0x331db1+'\x20Message\x20not\x20found');}_0x433d74=_0x530030;return _0x530030[_0x7b4c('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x7b4c('0xa')](function(){var _0x5e444a={'uniqueid':_0x228b2b+'.'+_0x433d74['id']+'.'+_0x433d74['Interaction']['id'],'FromUserId':_0x4e9781[_0x7b4c('0x32')]['id'],'type':_0x7b4c('0x7d'),'ToUserId':_0xdb202['id']};_0x5e444a[_0x331db1+_0x7b4c('0x72')]=_0x433d74['id'];_0x5e444a[_0x331db1+_0x7b4c('0x7e')]=_0x433d74['Interaction']['id'];_0x5e444a['From'+_0x331db1+_0x56ba6f+'Id']=_0x433d74[_0x7b4c('0x6b')]['id'];return db[_0x331db1+_0x7b4c('0x75')][_0x7b4c('0x76')](_0x5e444a);})[_0x7b4c('0xa')](function(){return respondWithRpcPromise(_0x7b4c('0x7f'),{'channel':_0x228b2b,'interaction':_0x433d74[_0x7b4c('0x70')],'message':_0x433d74,'account':_0x433d74[_0x7b4c('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0xdb202[_0x7b4c('0x13')]+','+(_0x433d74[_0x7b4c('0x6b')][_0x7b4c('0x80')]||0x12c),'interval':_0x7b4c('0x78')}]},routingClient);})[_0x7b4c('0xa')](respondWithResult(_0x5ec399,null))[_0x7b4c('0xe')](handleError(_0x5ec399,null));};
\ No newline at end of file
index aecc046..29c4f70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x911c=['index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports','express','Router','../../components/interaction/service','./schedule.controller','get'];(function(_0xb4cc12,_0x41436e){var _0x8593b5=function(_0x13b840){while(--_0x13b840){_0xb4cc12['push'](_0xb4cc12['shift']());}};_0x8593b5(++_0x41436e);}(_0x911c,0x1ab));var _0xc911=function(_0x269094,_0x4701b3){_0x269094=_0x269094-0x0;var _0x10344f=_0x911c[_0x269094];return _0x10344f;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc911('0x0'));var router=express[_0xc911('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc911('0x2'));var config=require('../../config/environment');var controller=require(_0xc911('0x3'));router[_0xc911('0x4')]('/',auth['isAuthenticated'](),controller[_0xc911('0x5')]);router[_0xc911('0x4')]('/:id',auth[_0xc911('0x6')](),controller[_0xc911('0x7')]);router[_0xc911('0x4')]('/:id/run',auth['isAuthenticated'](),controller['run']);router[_0xc911('0x8')]('/',auth[_0xc911('0x6')](),controller[_0xc911('0x9')]);router[_0xc911('0xa')](_0xc911('0xb'),auth[_0xc911('0x6')](),controller[_0xc911('0xc')]);router[_0xc911('0xd')](_0xc911('0xb'),auth[_0xc911('0x6')](),controller[_0xc911('0xe')]);module[_0xc911('0xf')]=router;
\ No newline at end of file
+var _0x44b8=['update','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','isAuthenticated','get','/:id','show','/:id/run','run','post','create','put'];(function(_0x16fb52,_0xd7d1bd){var _0x2bb121=function(_0x3d18ab){while(--_0x3d18ab){_0x16fb52['push'](_0x16fb52['shift']());}};_0x2bb121(++_0xd7d1bd);}(_0x44b8,0x67));var _0x844b=function(_0x4384b8,_0x29f859){_0x4384b8=_0x4384b8-0x0;var _0x5ffbc0=_0x44b8[_0x4384b8];return _0x5ffbc0;};'use strict';var multer=require('multer');var util=require(_0x844b('0x0'));var path=require(_0x844b('0x1'));var timeout=require('connect-timeout');var express=require(_0x844b('0x2'));var router=express['Router']();var fs_extra=require(_0x844b('0x3'));var auth=require(_0x844b('0x4'));var interaction=require(_0x844b('0x5'));var config=require(_0x844b('0x6'));var controller=require(_0x844b('0x7'));router['get']('/',auth[_0x844b('0x8')](),controller['index']);router[_0x844b('0x9')](_0x844b('0xa'),auth['isAuthenticated'](),controller[_0x844b('0xb')]);router[_0x844b('0x9')](_0x844b('0xc'),auth[_0x844b('0x8')](),controller[_0x844b('0xd')]);router[_0x844b('0xe')]('/',auth[_0x844b('0x8')](),controller[_0x844b('0xf')]);router[_0x844b('0x10')](_0x844b('0xa'),auth['isAuthenticated'](),controller[_0x844b('0x11')]);router['delete'](_0x844b('0xa'),auth['isAuthenticated'](),controller[_0x844b('0x12')]);module[_0x844b('0x13')]=router;
\ No newline at end of file
index 387bbc8..7e5d71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f62=['years','quarters','months','hours','days','csv','pdf','xlsx','custom','TEXT','BOOLEAN','exports','STRING','0\x200\x20*\x20*\x20*','DATE','ENUM'];(function(_0x4c94d1,_0x573a4f){var _0x48c2c3=function(_0x326bcc){while(--_0x326bcc){_0x4c94d1['push'](_0x4c94d1['shift']());}};_0x48c2c3(++_0x573a4f);}(_0x1f62,0x6b));var _0x21f6=function(_0x6a0266,_0x1552d6){_0x6a0266=_0x6a0266-0x0;var _0x309e00=_0x1f62[_0x6a0266];return _0x309e00;};'use strict';var Sequelize=require('sequelize');module[_0x21f6('0x0')]={'name':{'type':Sequelize[_0x21f6('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x21f6('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x21f6('0x2')},'startAt':{'type':Sequelize[_0x21f6('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0x21f6('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x21f6('0x4')](_0x21f6('0x5'),_0x21f6('0x6'),_0x21f6('0x7'),'weeks','days',_0x21f6('0x8'),'minutes'),'allowNull':![],'defaultValue':_0x21f6('0x9')},'output':{'type':Sequelize[_0x21f6('0x4')](_0x21f6('0xa'),_0x21f6('0xb'),_0x21f6('0xc')),'allowNull':![],'defaultValue':_0x21f6('0xa')},'type':{'type':Sequelize[_0x21f6('0x4')](_0x21f6('0xd'),'default'),'allowNull':![],'defaultValue':_0x21f6('0xd')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x21f6('0x1')]},'cc':{'type':Sequelize[_0x21f6('0xe')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0x21f6('0xf')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2525=['weeks','days','hours','minutes','csv','custom','TEXT','sequelize','exports','STRING','BOOLEAN','DATE','INTEGER','ENUM','quarters','months'];(function(_0x5c551,_0x4dd324){var _0xbdec84=function(_0xac73df){while(--_0xac73df){_0x5c551['push'](_0x5c551['shift']());}};_0xbdec84(++_0x4dd324);}(_0x2525,0x147));var _0x5252=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0x2525[_0x36dfbd];return _0x4ecad9;};'use strict';var Sequelize=require(_0x5252('0x0'));module[_0x5252('0x1')]={'name':{'type':Sequelize[_0x5252('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5252('0x2')]},'active':{'type':Sequelize[_0x5252('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x5252('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x5252('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x5252('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x5252('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x5252('0x6')]('years',_0x5252('0x7'),_0x5252('0x8'),_0x5252('0x9'),_0x5252('0xa'),_0x5252('0xb'),_0x5252('0xc')),'allowNull':![],'defaultValue':_0x5252('0xa')},'output':{'type':Sequelize[_0x5252('0x6')](_0x5252('0xd'),'pdf','xlsx'),'allowNull':![],'defaultValue':_0x5252('0xd')},'type':{'type':Sequelize[_0x5252('0x6')](_0x5252('0xe'),'default'),'allowNull':![],'defaultValue':_0x5252('0xe')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x5252('0xf')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0x5252('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 87aadf1..ceef0e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb0=['crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','then','destroy','UserProfileResource','error','name','send','index','Schedule','type','key','map','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','filter','where','merge','options','count','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','userProfileId','autoAssociation','update','../../config/schedule','run','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','fs-extra','lodash','squel'];(function(_0x2fb71e,_0xcc208b){var _0x1d6ef3=function(_0x5ec397){while(--_0x5ec397){_0x2fb71e['push'](_0x2fb71e['shift']());}};_0x1d6ef3(++_0xcc208b);}(_0xcbb0,0x93));var _0x0cbb=function(_0x36bce7,_0x4ee93d){_0x36bce7=_0x36bce7-0x0;var _0x128d0d=_0xcbb0[_0x36bce7];return _0x128d0d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0cbb('0x0'));var zipdir=require(_0x0cbb('0x1'));var jsonpatch=require(_0x0cbb('0x2'));var rp=require(_0x0cbb('0x3'));var moment=require(_0x0cbb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0cbb('0x5'));var util=require(_0x0cbb('0x6'));var path=require('path');var sox=require(_0x0cbb('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0cbb('0x8'));var _=require(_0x0cbb('0x9'));var squel=require(_0x0cbb('0xa'));var crypto=require(_0x0cbb('0xb'));var jsforce=require(_0x0cbb('0xc'));var deskjs=require(_0x0cbb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x0cbb('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0cbb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0cbb('0x10'));var hardwareService=require(_0x0cbb('0x11'));var logger=require('../../config/logger')(_0x0cbb('0x12'));var utils=require(_0x0cbb('0x13'));var config=require(_0x0cbb('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8ea8f2,_0x5bd242){_0x5bd242=_0x5bd242||0xcc;return function(_0x233c22){if(_0x233c22){return _0x8ea8f2[_0x0cbb('0x15')](_0x5bd242);}return _0x8ea8f2[_0x0cbb('0x16')](_0x5bd242)[_0x0cbb('0x17')]();};}function respondWithResult(_0x5b22e2,_0x4b6c4b){_0x4b6c4b=_0x4b6c4b||0xc8;return function(_0x4a0cba){if(_0x4a0cba){return _0x5b22e2[_0x0cbb('0x16')](_0x4b6c4b)[_0x0cbb('0x18')](_0x4a0cba);}};}function respondWithFilteredResult(_0x557fe7,_0x12512a){return function(_0x110a0c){if(_0x110a0c){var _0xfb0179=typeof _0x12512a[_0x0cbb('0x19')]===_0x0cbb('0x1a')&&typeof _0x12512a[_0x0cbb('0x1b')]===_0x0cbb('0x1a');var _0x5c0340=_0x110a0c['count'];var _0x3a09a6=_0xfb0179?0x0:_0x12512a[_0x0cbb('0x19')];var _0x158e23=_0xfb0179?_0x110a0c['count']:_0x12512a['offset']+_0x12512a[_0x0cbb('0x1b')];var _0x5df810;if(_0x158e23>=_0x5c0340){_0x158e23=_0x5c0340;_0x5df810=0xc8;}else{_0x5df810=0xce;}_0x557fe7['status'](_0x5df810);return _0x557fe7['set'](_0x0cbb('0x1c'),_0x3a09a6+'-'+_0x158e23+'/'+_0x5c0340)[_0x0cbb('0x18')](_0x110a0c);}return null;};}function patchUpdates(_0x5c360f){return function(_0x3229ac){try{jsonpatch[_0x0cbb('0x1d')](_0x3229ac,_0x5c360f,!![]);}catch(_0x59caf5){return BPromise[_0x0cbb('0x1e')](_0x59caf5);}return _0x3229ac[_0x0cbb('0x1f')]();};}function saveUpdates(_0x2deee3,_0x4f3342){return function(_0x2d124d){if(_0x2d124d){return _0x2d124d['update'](_0x2deee3)[_0x0cbb('0x20')](function(_0x2df663){return _0x2df663;});}return null;};}function removeEntity(_0x54e2d4,_0x261c6f){return function(_0x561960){if(_0x561960){return _0x561960[_0x0cbb('0x21')]()[_0x0cbb('0x20')](function(){var _0x450c06=_0x561960['get']({'plain':!![]});var _0x1c4b11='Scheduler';return db[_0x0cbb('0x22')][_0x0cbb('0x21')]({'where':{'type':_0x1c4b11,'resourceId':_0x450c06['id']}})['then'](function(){return _0x561960;});})[_0x0cbb('0x20')](function(){_0x54e2d4['status'](0xcc)[_0x0cbb('0x17')]();});}};}function handleEntityNotFound(_0x5add3a,_0x4d40a2){return function(_0x184a32){if(!_0x184a32){_0x5add3a[_0x0cbb('0x15')](0x194);}return _0x184a32;};}function handleError(_0x3cb6e1,_0x5b9b5c){_0x5b9b5c=_0x5b9b5c||0x1f4;return function(_0x2da687){logger[_0x0cbb('0x23')](_0x2da687['stack']);if(_0x2da687['name']){delete _0x2da687[_0x0cbb('0x24')];}_0x3cb6e1[_0x0cbb('0x16')](_0x5b9b5c)[_0x0cbb('0x25')](_0x2da687);};}exports[_0x0cbb('0x26')]=function(_0x564752,_0x3074a4){var _0x57d31e={},_0x88c0e0={},_0x12a9b5={'count':0x0,'rows':[]};var _0x5f4e9e=_['map'](db[_0x0cbb('0x27')]['rawAttributes'],function(_0x36960f){return{'name':_0x36960f['fieldName'],'type':_0x36960f[_0x0cbb('0x28')][_0x0cbb('0x29')]};});_0x88c0e0['model']=_[_0x0cbb('0x2a')](_0x5f4e9e,_0x0cbb('0x24'));_0x88c0e0[_0x0cbb('0x2b')]=_[_0x0cbb('0x2c')](_0x564752[_0x0cbb('0x2b')]);_0x88c0e0[_0x0cbb('0x2d')]=_[_0x0cbb('0x2e')](_0x88c0e0[_0x0cbb('0x2f')],_0x88c0e0['query']);_0x57d31e[_0x0cbb('0x30')]=_[_0x0cbb('0x2e')](_0x88c0e0['model'],qs[_0x0cbb('0x31')](_0x564752[_0x0cbb('0x2b')][_0x0cbb('0x31')]));_0x57d31e['attributes']=_0x57d31e[_0x0cbb('0x30')]['length']?_0x57d31e['attributes']:_0x88c0e0[_0x0cbb('0x2f')];if(!_0x564752[_0x0cbb('0x2b')]['hasOwnProperty'](_0x0cbb('0x32'))){_0x57d31e['limit']=qs[_0x0cbb('0x1b')](_0x564752[_0x0cbb('0x2b')][_0x0cbb('0x1b')]);_0x57d31e[_0x0cbb('0x19')]=qs[_0x0cbb('0x19')](_0x564752[_0x0cbb('0x2b')][_0x0cbb('0x19')]);}_0x57d31e['order']=qs['sort'](_0x564752[_0x0cbb('0x2b')][_0x0cbb('0x33')]);_0x57d31e['where']=qs[_0x0cbb('0x2d')](_['pick'](_0x564752[_0x0cbb('0x2b')],_0x88c0e0['filters']),_0x5f4e9e);if(_0x564752[_0x0cbb('0x2b')][_0x0cbb('0x34')]){_0x57d31e[_0x0cbb('0x35')]=_[_0x0cbb('0x36')](_0x57d31e[_0x0cbb('0x35')],{'$or':_[_0x0cbb('0x2a')](_0x5f4e9e,function(_0x9eaf87){if(_0x9eaf87[_0x0cbb('0x28')]!=='VIRTUAL'){var _0x3b7671={};_0x3b7671[_0x9eaf87[_0x0cbb('0x24')]]={'$like':'%'+_0x564752[_0x0cbb('0x2b')]['filter']+'%'};return _0x3b7671;}})});}_0x57d31e=_['merge']({},_0x57d31e,_0x564752[_0x0cbb('0x37')]);var _0x2206b4={'where':_0x57d31e['where']};return db[_0x0cbb('0x27')][_0x0cbb('0x38')](_0x2206b4)[_0x0cbb('0x20')](function(_0x29fa1d){_0x12a9b5[_0x0cbb('0x38')]=_0x29fa1d;if(_0x564752[_0x0cbb('0x2b')]['includeAll']){_0x57d31e[_0x0cbb('0x39')]=[{'all':!![]}];}return db['Schedule'][_0x0cbb('0x3a')](_0x57d31e);})[_0x0cbb('0x20')](function(_0x683dc4){_0x12a9b5[_0x0cbb('0x3b')]=_0x683dc4;return _0x12a9b5;})[_0x0cbb('0x20')](respondWithFilteredResult(_0x3074a4,_0x57d31e))[_0x0cbb('0x3c')](handleError(_0x3074a4,null));};exports[_0x0cbb('0x3d')]=function(_0x2d2dfa,_0x2d3548){var _0x304912={'raw':![],'where':{'id':_0x2d2dfa[_0x0cbb('0x3e')]['id']}},_0x3b44f6={};_0x3b44f6[_0x0cbb('0x2f')]=_[_0x0cbb('0x2c')](db[_0x0cbb('0x27')][_0x0cbb('0x3f')]);_0x3b44f6[_0x0cbb('0x2b')]=_[_0x0cbb('0x2c')](_0x2d2dfa[_0x0cbb('0x2b')]);_0x3b44f6[_0x0cbb('0x2d')]=_[_0x0cbb('0x2e')](_0x3b44f6['model'],_0x3b44f6['query']);_0x304912[_0x0cbb('0x30')]=_[_0x0cbb('0x2e')](_0x3b44f6[_0x0cbb('0x2f')],qs[_0x0cbb('0x31')](_0x2d2dfa['query'][_0x0cbb('0x31')]));_0x304912[_0x0cbb('0x30')]=_0x304912[_0x0cbb('0x30')]['length']?_0x304912[_0x0cbb('0x30')]:_0x3b44f6[_0x0cbb('0x2f')];if(_0x2d2dfa[_0x0cbb('0x2b')][_0x0cbb('0x40')]){_0x304912[_0x0cbb('0x39')]=[{'all':!![]}];}_0x304912=_[_0x0cbb('0x36')]({},_0x304912,_0x2d2dfa[_0x0cbb('0x37')]);return db['Schedule'][_0x0cbb('0x41')](_0x304912)[_0x0cbb('0x20')](handleEntityNotFound(_0x2d3548,null))[_0x0cbb('0x20')](respondWithResult(_0x2d3548,null))[_0x0cbb('0x3c')](handleError(_0x2d3548,null));};exports[_0x0cbb('0x42')]=function(_0x430dd2,_0x219d76){return db[_0x0cbb('0x27')]['create'](_0x430dd2[_0x0cbb('0x43')],{})[_0x0cbb('0x20')](function(_0x4ea14c){var _0x48fbaa=_0x430dd2[_0x0cbb('0x44')][_0x0cbb('0x45')]({'plain':!![]});if(!_0x48fbaa)throw new Error(_0x0cbb('0x46'));if(_0x48fbaa[_0x0cbb('0x47')]===_0x0cbb('0x44')){var _0x2f68eb=_0x4ea14c['get']({'plain':!![]});var _0x3aaaaa=_0x0cbb('0x48');return db[_0x0cbb('0x49')][_0x0cbb('0x41')]({'where':{'name':_0x3aaaaa,'userProfileId':_0x48fbaa[_0x0cbb('0x4a')]},'raw':!![]})[_0x0cbb('0x20')](function(_0x502ada){if(_0x502ada&&_0x502ada[_0x0cbb('0x4b')]===0x0){return db[_0x0cbb('0x22')][_0x0cbb('0x42')]({'name':_0x2f68eb[_0x0cbb('0x24')],'resourceId':_0x2f68eb['id'],'type':_0x502ada[_0x0cbb('0x24')],'sectionId':_0x502ada['id']},{})[_0x0cbb('0x20')](function(){return _0x4ea14c;});}else{return _0x4ea14c;}})['catch'](function(_0x245320){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x245320);throw _0x245320;});}return _0x4ea14c;})[_0x0cbb('0x20')](respondWithResult(_0x219d76,0xc9))[_0x0cbb('0x3c')](handleError(_0x219d76,null));};exports[_0x0cbb('0x4c')]=function(_0x83e0fd,_0x14165b){if(_0x83e0fd[_0x0cbb('0x43')]['id']){delete _0x83e0fd[_0x0cbb('0x43')]['id'];}return db[_0x0cbb('0x27')]['find']({'where':{'id':_0x83e0fd[_0x0cbb('0x3e')]['id']}})['then'](handleEntityNotFound(_0x14165b,null))[_0x0cbb('0x20')](saveUpdates(_0x83e0fd[_0x0cbb('0x43')],null))[_0x0cbb('0x20')](respondWithResult(_0x14165b,null))[_0x0cbb('0x3c')](handleError(_0x14165b,null));};exports[_0x0cbb('0x21')]=function(_0x2e8a25,_0x36da09){return db['Schedule'][_0x0cbb('0x41')]({'where':{'id':_0x2e8a25[_0x0cbb('0x3e')]['id']}})[_0x0cbb('0x20')](handleEntityNotFound(_0x36da09,null))[_0x0cbb('0x20')](removeEntity(_0x36da09,null))[_0x0cbb('0x3c')](handleError(_0x36da09,null));};exports['run']=function(_0xc7b226,_0x5a22a1,_0x3fe139){var _0x2769aa=require(_0x0cbb('0x4d'));return db[_0x0cbb('0x27')]['find']({'where':{'id':_0xc7b226['params']['id']},'raw':!![]})[_0x0cbb('0x20')](handleEntityNotFound(_0x5a22a1,null))['then'](function(){_0x2769aa[_0x0cbb('0x4e')](_0xc7b226[_0x0cbb('0x3e')]['id']);})['then'](respondWithStatusCode(_0x5a22a1,null))[_0x0cbb('0x3c')](handleError(_0x5a22a1,null));};
\ No newline at end of file
+var _0x34bd=['send','index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','Schedule','includeAll','findAll','rows','catch','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Scheduler','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','zip-dir','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','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','limit','undefined','count','offset','Content-Range','json','apply','reject','update','destroy','then','get','UserProfileResource','error','stack','name'];(function(_0x375dbb,_0x5e4dd7){var _0x5bf0f3=function(_0x1d0ea8){while(--_0x1d0ea8){_0x375dbb['push'](_0x375dbb['shift']());}};_0x5bf0f3(++_0x5e4dd7);}(_0x34bd,0x7f));var _0xd34b=function(_0x22808b,_0x329b6a){_0x22808b=_0x22808b-0x0;var _0x42cbd2=_0x34bd[_0x22808b];return _0x42cbd2;};'use strict';var emlformat=require(_0xd34b('0x0'));var rimraf=require(_0xd34b('0x1'));var zipdir=require(_0xd34b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd34b('0x3'));var moment=require('moment');var BPromise=require(_0xd34b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd34b('0x5'));var sox=require(_0xd34b('0x6'));var csv=require(_0xd34b('0x7'));var ejs=require(_0xd34b('0x8'));var fs=require('fs');var fs_extra=require(_0xd34b('0x9'));var _=require(_0xd34b('0xa'));var squel=require(_0xd34b('0xb'));var crypto=require(_0xd34b('0xc'));var jsforce=require(_0xd34b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd34b('0x7'));var querystring=require(_0xd34b('0xe'));var Papa=require(_0xd34b('0xf'));var Redis=require(_0xd34b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd34b('0x11'));var as=require(_0xd34b('0x12'));var hardwareService=require(_0xd34b('0x13'));var logger=require(_0xd34b('0x14'))(_0xd34b('0x15'));var utils=require(_0xd34b('0x16'));var config=require(_0xd34b('0x17'));var licenseUtil=require(_0xd34b('0x18'));var db=require(_0xd34b('0x19'))['db'];function respondWithStatusCode(_0x2b8d51,_0x5748e6){_0x5748e6=_0x5748e6||0xcc;return function(_0x159cab){if(_0x159cab){return _0x2b8d51[_0xd34b('0x1a')](_0x5748e6);}return _0x2b8d51[_0xd34b('0x1b')](_0x5748e6)[_0xd34b('0x1c')]();};}function respondWithResult(_0x4190a3,_0x157c9a){_0x157c9a=_0x157c9a||0xc8;return function(_0x222b9b){if(_0x222b9b){return _0x4190a3[_0xd34b('0x1b')](_0x157c9a)['json'](_0x222b9b);}};}function respondWithFilteredResult(_0x4ac704,_0x2a2e8b){return function(_0x41e87a){if(_0x41e87a){var _0x4f3e85=typeof _0x2a2e8b['offset']==='undefined'&&typeof _0x2a2e8b[_0xd34b('0x1d')]===_0xd34b('0x1e');var _0x518654=_0x41e87a[_0xd34b('0x1f')];var _0x31ed26=_0x4f3e85?0x0:_0x2a2e8b[_0xd34b('0x20')];var _0x2e2e14=_0x4f3e85?_0x41e87a[_0xd34b('0x1f')]:_0x2a2e8b['offset']+_0x2a2e8b[_0xd34b('0x1d')];var _0x46e440;if(_0x2e2e14>=_0x518654){_0x2e2e14=_0x518654;_0x46e440=0xc8;}else{_0x46e440=0xce;}_0x4ac704['status'](_0x46e440);return _0x4ac704['set'](_0xd34b('0x21'),_0x31ed26+'-'+_0x2e2e14+'/'+_0x518654)[_0xd34b('0x22')](_0x41e87a);}return null;};}function patchUpdates(_0x351f62){return function(_0xbca979){try{jsonpatch[_0xd34b('0x23')](_0xbca979,_0x351f62,!![]);}catch(_0xb8bd7f){return BPromise[_0xd34b('0x24')](_0xb8bd7f);}return _0xbca979['save']();};}function saveUpdates(_0x534a21,_0x386557){return function(_0x2a2616){if(_0x2a2616){return _0x2a2616[_0xd34b('0x25')](_0x534a21)['then'](function(_0x31c87c){return _0x31c87c;});}return null;};}function removeEntity(_0x30132b,_0xa160eb){return function(_0x53ed48){if(_0x53ed48){return _0x53ed48[_0xd34b('0x26')]()[_0xd34b('0x27')](function(){var _0x2a9a05=_0x53ed48[_0xd34b('0x28')]({'plain':!![]});var _0x131f9e='Scheduler';return db[_0xd34b('0x29')][_0xd34b('0x26')]({'where':{'type':_0x131f9e,'resourceId':_0x2a9a05['id']}})[_0xd34b('0x27')](function(){return _0x53ed48;});})[_0xd34b('0x27')](function(){_0x30132b[_0xd34b('0x1b')](0xcc)[_0xd34b('0x1c')]();});}};}function handleEntityNotFound(_0x340a0d,_0x4db45d){return function(_0x3ed305){if(!_0x3ed305){_0x340a0d[_0xd34b('0x1a')](0x194);}return _0x3ed305;};}function handleError(_0x3035c0,_0x55fce8){_0x55fce8=_0x55fce8||0x1f4;return function(_0x34c276){logger[_0xd34b('0x2a')](_0x34c276[_0xd34b('0x2b')]);if(_0x34c276[_0xd34b('0x2c')]){delete _0x34c276['name'];}_0x3035c0[_0xd34b('0x1b')](_0x55fce8)[_0xd34b('0x2d')](_0x34c276);};}exports[_0xd34b('0x2e')]=function(_0x56a858,_0x489165){var _0x28bbcd={},_0x738715={},_0x3d252a={'count':0x0,'rows':[]};var _0x29380d=_['map'](db['Schedule'][_0xd34b('0x2f')],function(_0x452e22){return{'name':_0x452e22['fieldName'],'type':_0x452e22[_0xd34b('0x30')][_0xd34b('0x31')]};});_0x738715[_0xd34b('0x32')]=_[_0xd34b('0x33')](_0x29380d,_0xd34b('0x2c'));_0x738715[_0xd34b('0x34')]=_[_0xd34b('0x35')](_0x56a858[_0xd34b('0x34')]);_0x738715[_0xd34b('0x36')]=_[_0xd34b('0x37')](_0x738715['model'],_0x738715['query']);_0x28bbcd[_0xd34b('0x38')]=_[_0xd34b('0x37')](_0x738715[_0xd34b('0x32')],qs[_0xd34b('0x39')](_0x56a858[_0xd34b('0x34')][_0xd34b('0x39')]));_0x28bbcd[_0xd34b('0x38')]=_0x28bbcd[_0xd34b('0x38')][_0xd34b('0x3a')]?_0x28bbcd[_0xd34b('0x38')]:_0x738715[_0xd34b('0x32')];if(!_0x56a858[_0xd34b('0x34')][_0xd34b('0x3b')]('nolimit')){_0x28bbcd[_0xd34b('0x1d')]=qs[_0xd34b('0x1d')](_0x56a858['query'][_0xd34b('0x1d')]);_0x28bbcd[_0xd34b('0x20')]=qs['offset'](_0x56a858[_0xd34b('0x34')]['offset']);}_0x28bbcd[_0xd34b('0x3c')]=qs[_0xd34b('0x3d')](_0x56a858[_0xd34b('0x34')][_0xd34b('0x3d')]);_0x28bbcd[_0xd34b('0x3e')]=qs[_0xd34b('0x36')](_[_0xd34b('0x3f')](_0x56a858[_0xd34b('0x34')],_0x738715[_0xd34b('0x36')]),_0x29380d);if(_0x56a858['query'][_0xd34b('0x40')]){_0x28bbcd['where']=_[_0xd34b('0x41')](_0x28bbcd[_0xd34b('0x3e')],{'$or':_[_0xd34b('0x33')](_0x29380d,function(_0x4b0350){if(_0x4b0350['type']!==_0xd34b('0x42')){var _0xaf7957={};_0xaf7957[_0x4b0350[_0xd34b('0x2c')]]={'$like':'%'+_0x56a858[_0xd34b('0x34')][_0xd34b('0x40')]+'%'};return _0xaf7957;}})});}_0x28bbcd=_[_0xd34b('0x41')]({},_0x28bbcd,_0x56a858['options']);var _0x5f3d79={'where':_0x28bbcd[_0xd34b('0x3e')]};return db[_0xd34b('0x43')]['count'](_0x5f3d79)[_0xd34b('0x27')](function(_0x46b4ed){_0x3d252a['count']=_0x46b4ed;if(_0x56a858[_0xd34b('0x34')][_0xd34b('0x44')]){_0x28bbcd['include']=[{'all':!![]}];}return db[_0xd34b('0x43')][_0xd34b('0x45')](_0x28bbcd);})[_0xd34b('0x27')](function(_0x26a23c){_0x3d252a[_0xd34b('0x46')]=_0x26a23c;return _0x3d252a;})['then'](respondWithFilteredResult(_0x489165,_0x28bbcd))[_0xd34b('0x47')](handleError(_0x489165,null));};exports[_0xd34b('0x48')]=function(_0x3897e5,_0x1ec14b){var _0x57a987={'raw':![],'where':{'id':_0x3897e5[_0xd34b('0x49')]['id']}},_0x4498a1={};_0x4498a1[_0xd34b('0x32')]=_[_0xd34b('0x35')](db[_0xd34b('0x43')]['rawAttributes']);_0x4498a1[_0xd34b('0x34')]=_[_0xd34b('0x35')](_0x3897e5[_0xd34b('0x34')]);_0x4498a1[_0xd34b('0x36')]=_[_0xd34b('0x37')](_0x4498a1[_0xd34b('0x32')],_0x4498a1[_0xd34b('0x34')]);_0x57a987[_0xd34b('0x38')]=_[_0xd34b('0x37')](_0x4498a1[_0xd34b('0x32')],qs[_0xd34b('0x39')](_0x3897e5['query'][_0xd34b('0x39')]));_0x57a987[_0xd34b('0x38')]=_0x57a987[_0xd34b('0x38')]['length']?_0x57a987[_0xd34b('0x38')]:_0x4498a1[_0xd34b('0x32')];if(_0x3897e5['query']['includeAll']){_0x57a987['include']=[{'all':!![]}];}_0x57a987=_[_0xd34b('0x41')]({},_0x57a987,_0x3897e5[_0xd34b('0x4a')]);return db[_0xd34b('0x43')][_0xd34b('0x4b')](_0x57a987)['then'](handleEntityNotFound(_0x1ec14b,null))[_0xd34b('0x27')](respondWithResult(_0x1ec14b,null))['catch'](handleError(_0x1ec14b,null));};exports[_0xd34b('0x4c')]=function(_0x3d0b8c,_0x3e1b5e){return db['Schedule'][_0xd34b('0x4c')](_0x3d0b8c[_0xd34b('0x4d')],{})[_0xd34b('0x27')](function(_0x5a7281){var _0x57b8cb=_0x3d0b8c[_0xd34b('0x4e')][_0xd34b('0x28')]({'plain':!![]});if(!_0x57b8cb)throw new Error(_0xd34b('0x4f'));if(_0x57b8cb['role']===_0xd34b('0x4e')){var _0x4521c3=_0x5a7281[_0xd34b('0x28')]({'plain':!![]});var _0x5cf59b=_0xd34b('0x50');return db[_0xd34b('0x51')][_0xd34b('0x4b')]({'where':{'name':_0x5cf59b,'userProfileId':_0x57b8cb['userProfileId']},'raw':!![]})[_0xd34b('0x27')](function(_0xd7f86d){if(_0xd7f86d&&_0xd7f86d[_0xd34b('0x52')]===0x0){return db['UserProfileResource'][_0xd34b('0x4c')]({'name':_0x4521c3['name'],'resourceId':_0x4521c3['id'],'type':_0xd7f86d[_0xd34b('0x2c')],'sectionId':_0xd7f86d['id']},{})[_0xd34b('0x27')](function(){return _0x5a7281;});}else{return _0x5a7281;}})['catch'](function(_0x223656){logger[_0xd34b('0x2a')](_0xd34b('0x53'),_0x223656);throw _0x223656;});}return _0x5a7281;})[_0xd34b('0x27')](respondWithResult(_0x3e1b5e,0xc9))[_0xd34b('0x47')](handleError(_0x3e1b5e,null));};exports['update']=function(_0x1d5959,_0x3a9ef1){if(_0x1d5959[_0xd34b('0x4d')]['id']){delete _0x1d5959[_0xd34b('0x4d')]['id'];}return db[_0xd34b('0x43')][_0xd34b('0x4b')]({'where':{'id':_0x1d5959[_0xd34b('0x49')]['id']}})[_0xd34b('0x27')](handleEntityNotFound(_0x3a9ef1,null))[_0xd34b('0x27')](saveUpdates(_0x1d5959[_0xd34b('0x4d')],null))[_0xd34b('0x27')](respondWithResult(_0x3a9ef1,null))[_0xd34b('0x47')](handleError(_0x3a9ef1,null));};exports[_0xd34b('0x26')]=function(_0x304ca9,_0xbea04b){return db[_0xd34b('0x43')]['find']({'where':{'id':_0x304ca9['params']['id']}})[_0xd34b('0x27')](handleEntityNotFound(_0xbea04b,null))['then'](removeEntity(_0xbea04b,null))[_0xd34b('0x47')](handleError(_0xbea04b,null));};exports[_0xd34b('0x54')]=function(_0x4dfede,_0x5cd597,_0x364ebd){var _0x346042=require(_0xd34b('0x55'));return db[_0xd34b('0x43')][_0xd34b('0x4b')]({'where':{'id':_0x4dfede[_0xd34b('0x49')]['id']},'raw':!![]})[_0xd34b('0x27')](handleEntityNotFound(_0x5cd597,null))['then'](function(){_0x346042[_0xd34b('0x54')](_0x4dfede[_0xd34b('0x49')]['id']);})['then'](respondWithStatusCode(_0x5cd597,null))[_0xd34b('0x47')](handleError(_0x5cd597,null));};
\ No newline at end of file
index 8fb3079..2366072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ba=['path','rimraf','./schedule.attributes','exports','define','Schedule','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x26ba,0x165));var _0xa26b=function(_0x24e7b0,_0x23104f){_0x24e7b0=_0x24e7b0-0x0;var _0x1b09a1=_0x26ba[_0x24e7b0];return _0x1b09a1;};'use strict';var _=require(_0xa26b('0x0'));var util=require(_0xa26b('0x1'));var logger=require(_0xa26b('0x2'))(_0xa26b('0x3'));var moment=require(_0xa26b('0x4'));var BPromise=require(_0xa26b('0x5'));var rp=require(_0xa26b('0x6'));var fs=require('fs');var path=require(_0xa26b('0x7'));var rimraf=require(_0xa26b('0x8'));var config=require('../../config/environment');var attributes=require(_0xa26b('0x9'));module[_0xa26b('0xa')]=function(_0x2e044a,_0x2098a3){return _0x2e044a[_0xa26b('0xb')](_0xa26b('0xc'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1820=['rimraf','./schedule.attributes','exports','Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','path'];(function(_0x5e7062,_0x5bf853){var _0x4b2556=function(_0x309e11){while(--_0x309e11){_0x5e7062['push'](_0x5e7062['shift']());}};_0x4b2556(++_0x5bf853);}(_0x1820,0x9f));var _0x0182=function(_0x4dab14,_0x164ea0){_0x4dab14=_0x4dab14-0x0;var _0xf41aa=_0x1820[_0x4dab14];return _0xf41aa;};'use strict';var _=require(_0x0182('0x0'));var util=require(_0x0182('0x1'));var logger=require(_0x0182('0x2'))(_0x0182('0x3'));var moment=require(_0x0182('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0182('0x5'));var rimraf=require(_0x0182('0x6'));var config=require('../../config/environment');var attributes=require(_0x0182('0x7'));module[_0x0182('0x8')]=function(_0x5ec3a9,_0x4c929f){return _0x5ec3a9['define'](_0x0182('0x9'),attributes,{'tableName':_0x0182('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb85354..3c861dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a0=['request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http'];(function(_0x74c1ee,_0x533e4f){var _0x43f6dc=function(_0x16a0b2){while(--_0x16a0b2){_0x74c1ee['push'](_0x74c1ee['shift']());}};_0x43f6dc(++_0x533e4f);}(_0xc4a0,0x9c));var _0x0c4a=function(_0x41ec7c,_0x52abf9){_0x41ec7c=_0x41ec7c-0x0;var _0x1ac907=_0xc4a0[_0x41ec7c];return _0x1ac907;};'use strict';var _=require(_0x0c4a('0x0'));var util=require(_0x0c4a('0x1'));var moment=require(_0x0c4a('0x2'));var BPromise=require(_0x0c4a('0x3'));var rs=require(_0x0c4a('0x4'));var fs=require('fs');var Redis=require(_0x0c4a('0x5'));var db=require(_0x0c4a('0x6'))['db'];var utils=require(_0x0c4a('0x7'));var logger=require('../../config/logger')(_0x0c4a('0x8'));var config=require(_0x0c4a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0c4a('0xa')][_0x0c4a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4358fe,_0x3469d7,_0xc6b63c){return new BPromise(function(_0x1b2d10,_0x34f600){return client[_0x0c4a('0xc')](_0x4358fe,_0xc6b63c)[_0x0c4a('0xd')](function(_0x2eb862){logger[_0x0c4a('0xe')](_0x0c4a('0xf'),_0x3469d7,_0x0c4a('0x10'));logger[_0x0c4a('0x11')](_0x0c4a('0x12'),_0x3469d7,_0x0c4a('0x10'),JSON[_0x0c4a('0x13')](_0x2eb862));if(_0x2eb862[_0x0c4a('0x14')]){if(_0x2eb862['error'][_0x0c4a('0x15')]===0x1f4){logger[_0x0c4a('0x14')](_0x0c4a('0xf'),_0x3469d7,_0x2eb862[_0x0c4a('0x14')][_0x0c4a('0x16')]);return _0x34f600(_0x2eb862[_0x0c4a('0x14')][_0x0c4a('0x16')]);}logger[_0x0c4a('0x14')]('Schedule,\x20%s,\x20%s',_0x3469d7,_0x2eb862[_0x0c4a('0x14')][_0x0c4a('0x16')]);return _0x1b2d10(_0x2eb862[_0x0c4a('0x14')][_0x0c4a('0x16')]);}else{logger[_0x0c4a('0xe')](_0x0c4a('0xf'),_0x3469d7,_0x0c4a('0x10'));_0x1b2d10(_0x2eb862[_0x0c4a('0x17')][_0x0c4a('0x16')]);}})['catch'](function(_0x3cb39d){logger[_0x0c4a('0x14')](_0x0c4a('0xf'),_0x3469d7,_0x3cb39d);_0x34f600(_0x3cb39d);});});}
\ No newline at end of file
+var _0xb47a=['code','message','Schedule,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','info','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0xacf25a,_0x49ccba){var _0x464c29=function(_0x406cd3){while(--_0x406cd3){_0xacf25a['push'](_0xacf25a['shift']());}};_0x464c29(++_0x49ccba);}(_0xb47a,0xe1));var _0xab47=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0xb47a[_0x20589d];return _0x422de9;};'use strict';var _=require(_0xab47('0x0'));var util=require(_0xab47('0x1'));var moment=require('moment');var BPromise=require(_0xab47('0x2'));var rs=require(_0xab47('0x3'));var fs=require('fs');var Redis=require(_0xab47('0x4'));var db=require(_0xab47('0x5'))['db'];var utils=require(_0xab47('0x6'));var logger=require(_0xab47('0x7'))(_0xab47('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xab47('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5010ad,_0x43d4d1,_0x5dcf72){return new BPromise(function(_0x2031a7,_0x11736d){return client[_0xab47('0xa')](_0x5010ad,_0x5dcf72)[_0xab47('0xb')](function(_0x3dd9e7){logger[_0xab47('0xc')]('Schedule,\x20%s,\x20%s',_0x43d4d1,'request\x20sent');logger['debug'](_0xab47('0xd'),_0x43d4d1,_0xab47('0xe'),JSON[_0xab47('0xf')](_0x3dd9e7));if(_0x3dd9e7[_0xab47('0x10')]){if(_0x3dd9e7[_0xab47('0x10')][_0xab47('0x11')]===0x1f4){logger[_0xab47('0x10')]('Schedule,\x20%s,\x20%s',_0x43d4d1,_0x3dd9e7[_0xab47('0x10')][_0xab47('0x12')]);return _0x11736d(_0x3dd9e7[_0xab47('0x10')][_0xab47('0x12')]);}logger['error'](_0xab47('0x13'),_0x43d4d1,_0x3dd9e7[_0xab47('0x10')][_0xab47('0x12')]);return _0x2031a7(_0x3dd9e7['error']['message']);}else{logger[_0xab47('0xc')](_0xab47('0x13'),_0x43d4d1,'request\x20sent');_0x2031a7(_0x3dd9e7[_0xab47('0x14')][_0xab47('0x12')]);}})[_0xab47('0x15')](function(_0x2255a8){logger['error'](_0xab47('0x13'),_0x43d4d1,_0x2255a8);_0x11736d(_0x2255a8);});});}
\ No newline at end of file
index 904f7a5..8f8803e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7890=['describe','/:id','show','/:id/download','download','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./screenRecording.controller','get','/describe','isAuthenticated'];(function(_0x5cf3c0,_0x4363c1){var _0x39a680=function(_0x2a10f1){while(--_0x2a10f1){_0x5cf3c0['push'](_0x5cf3c0['shift']());}};_0x39a680(++_0x4363c1);}(_0x7890,0x1c3));var _0x0789=function(_0x165816,_0xcd6531){_0x165816=_0x165816-0x0;var _0x1cbaf4=_0x7890[_0x165816];return _0x1cbaf4;};'use strict';var multer=require(_0x0789('0x0'));var util=require(_0x0789('0x1'));var path=require(_0x0789('0x2'));var timeout=require('connect-timeout');var express=require(_0x0789('0x3'));var router=express[_0x0789('0x4')]();var fs_extra=require(_0x0789('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0789('0x6'));var controller=require(_0x0789('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x0789('0x8')](_0x0789('0x9'),auth[_0x0789('0xa')](),controller[_0x0789('0xb')]);router[_0x0789('0x8')](_0x0789('0xc'),auth[_0x0789('0xa')](),controller[_0x0789('0xd')]);router['get'](_0x0789('0xe'),auth['isAuthenticated'](),controller[_0x0789('0xf')]);router['post']('/',auth[_0x0789('0xa')](),controller['create']);router[_0x0789('0x10')](_0x0789('0xc'),auth[_0x0789('0xa')](),controller[_0x0789('0x11')]);router[_0x0789('0x12')](_0x0789('0xc'),auth[_0x0789('0xa')](),controller[_0x0789('0x13')]);module[_0x0789('0x14')]=router;
\ No newline at end of file
+var _0x4da0=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','post','create','put','update','delete','destroy','exports','path'];(function(_0xf21187,_0x390099){var _0x18356d=function(_0x2a78a2){while(--_0x2a78a2){_0xf21187['push'](_0xf21187['shift']());}};_0x18356d(++_0x390099);}(_0x4da0,0x15f));var _0x04da=function(_0x45cef6,_0xf01b03){_0x45cef6=_0x45cef6-0x0;var _0x58ccb9=_0x4da0[_0x45cef6];return _0x58ccb9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x04da('0x0'));var timeout=require(_0x04da('0x1'));var express=require(_0x04da('0x2'));var router=express['Router']();var fs_extra=require(_0x04da('0x3'));var auth=require(_0x04da('0x4'));var interaction=require(_0x04da('0x5'));var config=require(_0x04da('0x6'));var controller=require('./screenRecording.controller');router[_0x04da('0x7')]('/',auth[_0x04da('0x8')](),controller[_0x04da('0x9')]);router['get'](_0x04da('0xa'),auth['isAuthenticated'](),controller[_0x04da('0xb')]);router['get'](_0x04da('0xc'),auth['isAuthenticated'](),controller[_0x04da('0xd')]);router['get'](_0x04da('0xe'),auth[_0x04da('0x8')](),controller['download']);router[_0x04da('0xf')]('/',auth[_0x04da('0x8')](),controller[_0x04da('0x10')]);router[_0x04da('0x11')](_0x04da('0xc'),auth[_0x04da('0x8')](),controller[_0x04da('0x12')]);router[_0x04da('0x13')](_0x04da('0xc'),auth[_0x04da('0x8')](),controller[_0x04da('0x14')]);module[_0x04da('0x15')]=router;
\ No newline at end of file
index c572b73..3e64917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9fc=['toString','sequelize','moment','path','../../config/environment','exports','getDataValue','extname','STRING','replace','setDataValue','value','INTEGER','subtract','closedAt','DATE','format','MM-DD-YYYY\x20HH:mm'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0xa9fc,0x19f));var _0xca9f=function(_0x59e821,_0x86c723){_0x59e821=_0x59e821-0x0;var _0x5333f6=_0xa9fc[_0x59e821];return _0x5333f6;};'use strict';var Sequelize=require(_0xca9f('0x0'));var moment=require(_0xca9f('0x1'));var path=require(_0xca9f('0x2'));var config=require(_0xca9f('0x3'));module[_0xca9f('0x4')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xca9f('0x5')]('value')?path[_0xca9f('0x6')](this[_0xca9f('0x5')]('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xca9f('0x7')],'set':function(_0x48f9ca){var _0x39963d=_0x48f9ca[_0xca9f('0x8')](/\\/g,'/');this[_0xca9f('0x9')](_0xca9f('0xa'),_0x39963d);}},'rating':{'type':Sequelize[_0xca9f('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xca9f('0xb')],'set':function(_0x4713f0){this[_0xca9f('0x9')]('startedAt',moment()[_0xca9f('0xc')](_0x4713f0,'ms'));this[_0xca9f('0x9')](_0xca9f('0xd'),moment());this[_0xca9f('0x9')]('duration',_0x4713f0);}},'startedAt':{'type':Sequelize[_0xca9f('0xe')],'get':function(){return moment(this[_0xca9f('0x5')]('startedAt'))[_0xca9f('0xf')](_0xca9f('0x10'))[_0xca9f('0x11')]();}},'closedAt':{'type':Sequelize[_0xca9f('0xe')],'get':function(){return moment(this[_0xca9f('0x5')](_0xca9f('0xd')))[_0xca9f('0xf')](_0xca9f('0x10'))[_0xca9f('0x11')]();}},'createdAt':{'type':Sequelize[_0xca9f('0xe')],'get':function(){return moment(this['getDataValue']('createdAt'))[_0xca9f('0xf')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'updatedAt':{'type':Sequelize[_0xca9f('0xe')],'get':function(){return moment(this[_0xca9f('0x5')]('updatedAt'))[_0xca9f('0xf')]('MM-DD-YYYY\x20HH:mm')[_0xca9f('0x11')]();}}};
\ No newline at end of file
+var _0x160c=['duration','DATE','MM-DD-YYYY\x20HH:mm','toString','format','createdAt','updatedAt','moment','path','../../config/environment','value','getDataValue','STRING','setDataValue','INTEGER','startedAt','subtract','closedAt'];(function(_0x3fe393,_0x234a3a){var _0x534d14=function(_0x277fab){while(--_0x277fab){_0x3fe393['push'](_0x3fe393['shift']());}};_0x534d14(++_0x234a3a);}(_0x160c,0x181));var _0xc160=function(_0x303c6c,_0x55d570){_0x303c6c=_0x303c6c-0x0;var _0x283fae=_0x160c[_0x303c6c];return _0x283fae;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc160('0x0'));var path=require(_0xc160('0x1'));var config=require(_0xc160('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0xc160('0x3'))?path['extname'](this[_0xc160('0x4')](_0xc160('0x3'))):undefined;}},'interactionid':{'type':Sequelize[_0xc160('0x5')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xc160('0x5')],'set':function(_0x5dfb45){var _0x26e1f4=_0x5dfb45['replace'](/\\/g,'/');this[_0xc160('0x6')](_0xc160('0x3'),_0x26e1f4);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xc160('0x7')],'set':function(_0x208643){this['setDataValue'](_0xc160('0x8'),moment()[_0xc160('0x9')](_0x208643,'ms'));this[_0xc160('0x6')](_0xc160('0xa'),moment());this[_0xc160('0x6')](_0xc160('0xb'),_0x208643);}},'startedAt':{'type':Sequelize[_0xc160('0xc')],'get':function(){return moment(this[_0xc160('0x4')](_0xc160('0x8')))['format'](_0xc160('0xd'))[_0xc160('0xe')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc160('0x4')](_0xc160('0xa')))[_0xc160('0xf')]('MM-DD-YYYY\x20HH:mm')[_0xc160('0xe')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc160('0x4')](_0xc160('0x10')))['format'](_0xc160('0xd'))['toString']();}},'updatedAt':{'type':Sequelize[_0xc160('0xc')],'get':function(){return moment(this[_0xc160('0x4')](_0xc160('0x11')))['format']('MM-DD-YYYY\x20HH:mm')[_0xc160('0xe')]();}}};
\ No newline at end of file
index 3d2afd2..a5dd146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['options','includeAll','include','findAll','rows','catch','show','params','keys','length','create','body','duration','createdAt','value','describe','../../components/encryptor','uniqueid','find','join','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','root','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','ScreenRecording','rawAttributes','fieldName','type','model','format','filters','intersection','query','attributes','fields','nolimit','order','sort','where','pick','filter','merge'];(function(_0x299a2d,_0x235615){var _0x3fd5ca=function(_0x13e746){while(--_0x13e746){_0x299a2d['push'](_0x299a2d['shift']());}};_0x3fd5ca(++_0x235615);}(_0xeec6,0x1c2));var _0x6eec=function(_0x567bcb,_0x4978c1){_0x567bcb=_0x567bcb-0x0;var _0x4eebc2=_0xeec6[_0x567bcb];return _0x4eebc2;};'use strict';var emlformat=require(_0x6eec('0x0'));var rimraf=require(_0x6eec('0x1'));var zipdir=require(_0x6eec('0x2'));var jsonpatch=require(_0x6eec('0x3'));var rp=require('request-promise');var moment=require(_0x6eec('0x4'));var BPromise=require(_0x6eec('0x5'));var Mustache=require(_0x6eec('0x6'));var util=require(_0x6eec('0x7'));var path=require(_0x6eec('0x8'));var sox=require(_0x6eec('0x9'));var csv=require('to-csv');var ejs=require(_0x6eec('0xa'));var fs=require('fs');var fs_extra=require(_0x6eec('0xb'));var _=require('lodash');var squel=require(_0x6eec('0xc'));var crypto=require(_0x6eec('0xd'));var jsforce=require(_0x6eec('0xe'));var deskjs=require(_0x6eec('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6eec('0x10'));var Papa=require(_0x6eec('0x11'));var Redis=require(_0x6eec('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6eec('0x13'));var logger=require(_0x6eec('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x6eec('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6eec('0x16'))['db'];function respondWithStatusCode(_0x3387c2,_0x162db1){_0x162db1=_0x162db1||0xcc;return function(_0x3fe94b){if(_0x3fe94b){return _0x3387c2[_0x6eec('0x17')](_0x162db1);}return _0x3387c2['status'](_0x162db1)[_0x6eec('0x18')]();};}function respondWithResult(_0x3b2972,_0x462dbb){_0x462dbb=_0x462dbb||0xc8;return function(_0xc35914){if(_0xc35914){return _0x3b2972[_0x6eec('0x19')](_0x462dbb)[_0x6eec('0x1a')](_0xc35914);}};}function respondWithFilteredResult(_0x345852,_0x393271){return function(_0x34a7fc){if(_0x34a7fc){var _0x2ac797=typeof _0x393271['offset']===_0x6eec('0x1b')&&typeof _0x393271['limit']===_0x6eec('0x1b');var _0x45aa3f=_0x34a7fc['count'];var _0x3ee353=_0x2ac797?0x0:_0x393271[_0x6eec('0x1c')];var _0xb1eab7=_0x2ac797?_0x34a7fc['count']:_0x393271[_0x6eec('0x1c')]+_0x393271[_0x6eec('0x1d')];var _0x3c7152;if(_0xb1eab7>=_0x45aa3f){_0xb1eab7=_0x45aa3f;_0x3c7152=0xc8;}else{_0x3c7152=0xce;}_0x345852[_0x6eec('0x19')](_0x3c7152);return _0x345852[_0x6eec('0x1e')](_0x6eec('0x1f'),_0x3ee353+'-'+_0xb1eab7+'/'+_0x45aa3f)['json'](_0x34a7fc);}return null;};}function patchUpdates(_0x328693){return function(_0x2f843e){try{jsonpatch[_0x6eec('0x20')](_0x2f843e,_0x328693,!![]);}catch(_0x34522a){return BPromise[_0x6eec('0x21')](_0x34522a);}return _0x2f843e[_0x6eec('0x22')]();};}function saveUpdates(_0x52f941,_0x6e40b3){return function(_0x852d08){if(_0x852d08){return _0x852d08[_0x6eec('0x23')](_0x52f941)[_0x6eec('0x24')](function(_0x409b26){return _0x409b26;});}return null;};}function removeEntity(_0x13863c,_0x573249){return function(_0x384586){if(_0x384586){return _0x384586[_0x6eec('0x25')]()[_0x6eec('0x24')](function(){_0x13863c[_0x6eec('0x19')](0xcc)[_0x6eec('0x18')]();});}};}function handleEntityNotFound(_0x1f386c,_0x29879c){return function(_0x20bed3){if(!_0x20bed3){_0x1f386c[_0x6eec('0x17')](0x194);}return _0x20bed3;};}function handleError(_0x58f95c,_0x1d750c){_0x1d750c=_0x1d750c||0x1f4;return function(_0x44b31c){logger[_0x6eec('0x26')](_0x44b31c[_0x6eec('0x27')]);if(_0x44b31c['name']){delete _0x44b31c[_0x6eec('0x28')];}_0x58f95c[_0x6eec('0x19')](_0x1d750c)['send'](_0x44b31c);};}exports['index']=function(_0x3240c3,_0x47ed95){var _0x20a130={},_0xede270={},_0x3bbdf8={'count':0x0,'rows':[]};var _0x34bdea=_[_0x6eec('0x29')](db[_0x6eec('0x2a')][_0x6eec('0x2b')],function(_0x33e4a1){return{'name':_0x33e4a1[_0x6eec('0x2c')],'type':_0x33e4a1[_0x6eec('0x2d')]['key']};});_0xede270[_0x6eec('0x2e')]=_['differenceBy'](_[_0x6eec('0x29')](_0x34bdea,_0x6eec('0x28')),[_0x6eec('0x2f')]);_0xede270['query']=_['keys'](_0x3240c3['query']);_0xede270[_0x6eec('0x30')]=_[_0x6eec('0x31')](_0xede270[_0x6eec('0x2e')],_0xede270[_0x6eec('0x32')]);_0x20a130[_0x6eec('0x33')]=_[_0x6eec('0x31')](_0xede270[_0x6eec('0x2e')],qs[_0x6eec('0x34')](_0x3240c3[_0x6eec('0x32')][_0x6eec('0x34')]));_0x20a130[_0x6eec('0x33')]=_0x20a130[_0x6eec('0x33')]['length']?_0x20a130[_0x6eec('0x33')]:_0xede270[_0x6eec('0x2e')];if(!_0x3240c3[_0x6eec('0x32')]['hasOwnProperty'](_0x6eec('0x35'))){_0x20a130[_0x6eec('0x1d')]=qs[_0x6eec('0x1d')](_0x3240c3[_0x6eec('0x32')][_0x6eec('0x1d')]);_0x20a130[_0x6eec('0x1c')]=qs['offset'](_0x3240c3[_0x6eec('0x32')][_0x6eec('0x1c')]);}_0x20a130[_0x6eec('0x36')]=qs['sort'](_0x3240c3['query'][_0x6eec('0x37')]);_0x20a130[_0x6eec('0x38')]=qs[_0x6eec('0x30')](_[_0x6eec('0x39')](_0x3240c3[_0x6eec('0x32')],_0xede270['filters']),_0x34bdea);if(_0x3240c3[_0x6eec('0x32')][_0x6eec('0x3a')]){_0x20a130[_0x6eec('0x38')]=_[_0x6eec('0x3b')](_0x20a130[_0x6eec('0x38')],{'$or':_[_0x6eec('0x29')](_0x34bdea,function(_0x36cfe1){if(_0x36cfe1[_0x6eec('0x2d')]!=='VIRTUAL'){var _0x2f7a75={};_0x2f7a75[_0x36cfe1[_0x6eec('0x28')]]={'$like':'%'+_0x3240c3['query']['filter']+'%'};return _0x2f7a75;}})});}_0x20a130=_[_0x6eec('0x3b')]({},_0x20a130,_0x3240c3[_0x6eec('0x3c')]);var _0xf056e0={'where':_0x20a130[_0x6eec('0x38')]};return db['ScreenRecording']['count'](_0xf056e0)[_0x6eec('0x24')](function(_0x48fbf6){_0x3bbdf8['count']=_0x48fbf6;if(_0x3240c3[_0x6eec('0x32')][_0x6eec('0x3d')]){_0x20a130[_0x6eec('0x3e')]=[{'all':!![]}];}return db[_0x6eec('0x2a')][_0x6eec('0x3f')](_0x20a130);})['then'](function(_0x931bcf){_0x3bbdf8[_0x6eec('0x40')]=_0x931bcf;return _0x3bbdf8;})['then'](respondWithFilteredResult(_0x47ed95,_0x20a130))[_0x6eec('0x41')](handleError(_0x47ed95,null));};exports[_0x6eec('0x42')]=function(_0x5028a2,_0x2d39bf){var _0x44d75d={'raw':![],'where':{'id':_0x5028a2[_0x6eec('0x43')]['id']}},_0x4e3b1e={};_0x4e3b1e[_0x6eec('0x2e')]=_[_0x6eec('0x44')](db[_0x6eec('0x2a')]['rawAttributes']);_0x4e3b1e[_0x6eec('0x32')]=_[_0x6eec('0x44')](_0x5028a2[_0x6eec('0x32')]);_0x4e3b1e[_0x6eec('0x30')]=_[_0x6eec('0x31')](_0x4e3b1e['model'],_0x4e3b1e['query']);_0x44d75d[_0x6eec('0x33')]=_[_0x6eec('0x31')](_0x4e3b1e[_0x6eec('0x2e')],qs[_0x6eec('0x34')](_0x5028a2[_0x6eec('0x32')]['fields']));_0x44d75d[_0x6eec('0x33')]=_0x44d75d['attributes'][_0x6eec('0x45')]?_0x44d75d[_0x6eec('0x33')]:_0x4e3b1e[_0x6eec('0x2e')];if(_0x5028a2['query'][_0x6eec('0x3d')]){_0x44d75d[_0x6eec('0x3e')]=[{'all':!![]}];}_0x44d75d=_[_0x6eec('0x3b')]({},_0x44d75d,_0x5028a2[_0x6eec('0x3c')]);return db[_0x6eec('0x2a')]['find'](_0x44d75d)[_0x6eec('0x24')](handleEntityNotFound(_0x2d39bf,null))['then'](respondWithResult(_0x2d39bf,null))['catch'](handleError(_0x2d39bf,null));};exports[_0x6eec('0x46')]=function(_0x535d96,_0x245a1b){return db[_0x6eec('0x2a')][_0x6eec('0x46')](_0x535d96['body'],{})['then'](respondWithResult(_0x245a1b,0xc9))[_0x6eec('0x41')](handleError(_0x245a1b,null));};exports[_0x6eec('0x23')]=function(_0x1d6626,_0x2d0fc0){if(_0x1d6626[_0x6eec('0x47')]['id']){delete _0x1d6626[_0x6eec('0x47')]['id'];}delete _0x1d6626[_0x6eec('0x47')][_0x6eec('0x48')];delete _0x1d6626[_0x6eec('0x47')][_0x6eec('0x49')];delete _0x1d6626['body']['closedAt'];delete _0x1d6626[_0x6eec('0x47')][_0x6eec('0x4a')];return db[_0x6eec('0x2a')]['find']({'where':{'id':_0x1d6626[_0x6eec('0x43')]['id']}})[_0x6eec('0x24')](handleEntityNotFound(_0x2d0fc0,null))[_0x6eec('0x24')](saveUpdates(_0x1d6626[_0x6eec('0x47')],null))[_0x6eec('0x24')](respondWithResult(_0x2d0fc0,null))[_0x6eec('0x41')](handleError(_0x2d0fc0,null));};exports[_0x6eec('0x4b')]=function(_0x413de9,_0x5a6e05){return db[_0x6eec('0x2a')][_0x6eec('0x4b')]()[_0x6eec('0x24')](respondWithResult(_0x5a6e05,null))[_0x6eec('0x41')](handleError(_0x5a6e05,null));};exports['download']=function(_0x51fd37,_0x50436d,_0x36c49b){var _0x32b289=require(_0x6eec('0x4c'));var _0x1de626=![];var _0x5178f5={};if(_0x51fd37['query'][_0x6eec('0x2d')]&&_0x51fd37[_0x6eec('0x32')][_0x6eec('0x2d')]==='uniqueid'){_0x5178f5[_0x6eec('0x4d')]=_0x51fd37[_0x6eec('0x43')]['id'];}else{_0x5178f5['id']=_0x51fd37[_0x6eec('0x43')]['id'];}return db[_0x6eec('0x2a')][_0x6eec('0x4e')]({'where':_0x5178f5,'attributes':['id',_0x6eec('0x4a')],'raw':!![]})[_0x6eec('0x24')](handleEntityNotFound(_0x50436d,null))[_0x6eec('0x24')](function(_0x45fed3){if(_0x45fed3){var _0x4e921a=path[_0x6eec('0x4f')](config['root'],_0x6eec('0x50'),_0x45fed3[_0x6eec('0x4a')]);var _0x424962=util[_0x6eec('0x2f')](_0x6eec('0x51'),_0x4e921a);if(fs[_0x6eec('0x52')](_0x424962)){_0x1de626=!![];return _0x32b289[_0x6eec('0x53')](_0x424962,_0x4e921a,config['secrets'][_0x6eec('0x54')])['then'](function(){return _0x45fed3;});}return _0x45fed3;}})[_0x6eec('0x24')](function(_0x5c905f){if(_0x5c905f){var _0x237324=path[_0x6eec('0x4f')](config[_0x6eec('0x55')],_0x6eec('0x50'),_0x5c905f[_0x6eec('0x4a')]);if(!fs[_0x6eec('0x52')](_0x237324)){throw new db[(_0x6eec('0x56'))][(_0x6eec('0x57'))](_0x6eec('0x58'));}if(_0x5c905f[_0x6eec('0x59')]){return _0x50436d['download'](_0x237324,_0x5c905f['filename']+path[_0x6eec('0x5a')](_0x237324),function(){if(_0x1de626){fs[_0x6eec('0x5b')](_0x237324);}});}else{return _0x50436d[_0x6eec('0x5c')](_0x237324,function(_0x2c0644){if(_0x1de626){fs[_0x6eec('0x5b')](_0x237324);}});}}})['catch'](function(_0x1d8fb1){if(_0x1d8fb1[_0x6eec('0x5d')]==='ScreenRecording\x20not\x20found'){_0x50436d['status'](0x194)['send'](_0x6eec('0x5e'));}else{return handleError(_0x50436d,null);}});};exports[_0x6eec('0x25')]=function(_0x4cf859,_0x1d2baf){return db[_0x6eec('0x2a')]['find']({'where':{'id':_0x4cf859[_0x6eec('0x43')]['id']}})[_0x6eec('0x24')](function(_0xc852b3){if(_[_0x6eec('0x5f')](_0xc852b3)){throw new ReferenceError('Entity\x20not\x20found');}return _0xc852b3;})['then'](function(_0x54fcd0){var _0x1230fc=path[_0x6eec('0x4f')](config[_0x6eec('0x55')],_0x6eec('0x50'),_0x54fcd0[_0x6eec('0x4a')]);logger[_0x6eec('0x60')](_0x6eec('0x61'),_0x1230fc);if(!_[_0x6eec('0x5f')](_0x54fcd0[_0x6eec('0x4a')])&&fs[_0x6eec('0x52')](_0x1230fc)){logger[_0x6eec('0x60')](_0x6eec('0x62')+_0x1230fc+_0x6eec('0x63'));fs[_0x6eec('0x64')](_0x1230fc);}_0x1230fc=_0x1230fc+_0x6eec('0x65');if(!_[_0x6eec('0x5f')](_0x54fcd0['value'])&&fs[_0x6eec('0x52')](_0x1230fc)){logger[_0x6eec('0x60')]('File:\x20\x22'+_0x1230fc+_0x6eec('0x63'));fs[_0x6eec('0x64')](_0x1230fc);}return _0x54fcd0;})['then'](function(_0x7dd727){if(!_0x7dd727)throw new InternalError();return _0x7dd727[_0x6eec('0x25')]();})[_0x6eec('0x24')](function(){_0x1d2baf[_0x6eec('0x19')](0xcc)['end']();})[_0x6eec('0x41')](handleError(_0x1d2baf,null));};
\ No newline at end of file
+var _0x1cb9=['ValidationError','filename','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','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','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','findAll','rows','catch','show','keys','length','include','options','find','create','body','duration','createdAt','value','params','describe','download','../../components/encryptor','uniqueid','join','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','root','Sequelize'];(function(_0x17b23c,_0x423472){var _0x3af1b4=function(_0x34e307){while(--_0x34e307){_0x17b23c['push'](_0x17b23c['shift']());}};_0x3af1b4(++_0x423472);}(_0x1cb9,0x14e));var _0x91cb=function(_0x1fedf8,_0x2f797b){_0x1fedf8=_0x1fedf8-0x0;var _0x34202d=_0x1cb9[_0x1fedf8];return _0x34202d;};'use strict';var emlformat=require(_0x91cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x91cb('0x1'));var jsonpatch=require(_0x91cb('0x2'));var rp=require(_0x91cb('0x3'));var moment=require(_0x91cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x91cb('0x5'));var util=require(_0x91cb('0x6'));var path=require('path');var sox=require(_0x91cb('0x7'));var csv=require(_0x91cb('0x8'));var ejs=require(_0x91cb('0x9'));var fs=require('fs');var fs_extra=require(_0x91cb('0xa'));var _=require(_0x91cb('0xb'));var squel=require(_0x91cb('0xc'));var crypto=require('crypto');var jsforce=require(_0x91cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x91cb('0x8'));var querystring=require('querystring');var Papa=require(_0x91cb('0xe'));var Redis=require(_0x91cb('0xf'));var authService=require(_0x91cb('0x10'));var qs=require(_0x91cb('0x11'));var as=require(_0x91cb('0x12'));var hardwareService=require(_0x91cb('0x13'));var logger=require(_0x91cb('0x14'))(_0x91cb('0x15'));var utils=require(_0x91cb('0x16'));var config=require(_0x91cb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91cb('0x18'))['db'];function respondWithStatusCode(_0x366f09,_0x4ba2f2){_0x4ba2f2=_0x4ba2f2||0xcc;return function(_0x20e6e0){if(_0x20e6e0){return _0x366f09[_0x91cb('0x19')](_0x4ba2f2);}return _0x366f09[_0x91cb('0x1a')](_0x4ba2f2)[_0x91cb('0x1b')]();};}function respondWithResult(_0x4a7d45,_0x4cc6ef){_0x4cc6ef=_0x4cc6ef||0xc8;return function(_0x4aae25){if(_0x4aae25){return _0x4a7d45[_0x91cb('0x1a')](_0x4cc6ef)['json'](_0x4aae25);}};}function respondWithFilteredResult(_0x528f73,_0x576369){return function(_0xc3629e){if(_0xc3629e){var _0x347980=typeof _0x576369['offset']===_0x91cb('0x1c')&&typeof _0x576369[_0x91cb('0x1d')]==='undefined';var _0xc594e3=_0xc3629e[_0x91cb('0x1e')];var _0x1cd34b=_0x347980?0x0:_0x576369[_0x91cb('0x1f')];var _0x5cc1c3=_0x347980?_0xc3629e[_0x91cb('0x1e')]:_0x576369[_0x91cb('0x1f')]+_0x576369['limit'];var _0x123847;if(_0x5cc1c3>=_0xc594e3){_0x5cc1c3=_0xc594e3;_0x123847=0xc8;}else{_0x123847=0xce;}_0x528f73['status'](_0x123847);return _0x528f73['set'](_0x91cb('0x20'),_0x1cd34b+'-'+_0x5cc1c3+'/'+_0xc594e3)[_0x91cb('0x21')](_0xc3629e);}return null;};}function patchUpdates(_0x56e409){return function(_0x51a1d5){try{jsonpatch['apply'](_0x51a1d5,_0x56e409,!![]);}catch(_0x438162){return BPromise[_0x91cb('0x22')](_0x438162);}return _0x51a1d5[_0x91cb('0x23')]();};}function saveUpdates(_0x1dbee2,_0x5c6a15){return function(_0x45c4b3){if(_0x45c4b3){return _0x45c4b3[_0x91cb('0x24')](_0x1dbee2)[_0x91cb('0x25')](function(_0x55fa78){return _0x55fa78;});}return null;};}function removeEntity(_0x26f18f,_0x1a7a54){return function(_0x2447e7){if(_0x2447e7){return _0x2447e7[_0x91cb('0x26')]()[_0x91cb('0x25')](function(){_0x26f18f[_0x91cb('0x1a')](0xcc)[_0x91cb('0x1b')]();});}};}function handleEntityNotFound(_0x423c4f,_0x264e9b){return function(_0x4c8438){if(!_0x4c8438){_0x423c4f['sendStatus'](0x194);}return _0x4c8438;};}function handleError(_0x234eb1,_0x554350){_0x554350=_0x554350||0x1f4;return function(_0x1c67d2){logger[_0x91cb('0x27')](_0x1c67d2[_0x91cb('0x28')]);if(_0x1c67d2['name']){delete _0x1c67d2[_0x91cb('0x29')];}_0x234eb1['status'](_0x554350)[_0x91cb('0x2a')](_0x1c67d2);};}exports[_0x91cb('0x2b')]=function(_0x3b3ee6,_0x2fb473){var _0x468908={},_0x504275={},_0x2f04a3={'count':0x0,'rows':[]};var _0x52670a=_[_0x91cb('0x2c')](db[_0x91cb('0x2d')][_0x91cb('0x2e')],function(_0x4944bd){return{'name':_0x4944bd[_0x91cb('0x2f')],'type':_0x4944bd[_0x91cb('0x30')][_0x91cb('0x31')]};});_0x504275[_0x91cb('0x32')]=_[_0x91cb('0x33')](_[_0x91cb('0x2c')](_0x52670a,_0x91cb('0x29')),[_0x91cb('0x34')]);_0x504275[_0x91cb('0x35')]=_['keys'](_0x3b3ee6[_0x91cb('0x35')]);_0x504275[_0x91cb('0x36')]=_[_0x91cb('0x37')](_0x504275[_0x91cb('0x32')],_0x504275[_0x91cb('0x35')]);_0x468908['attributes']=_[_0x91cb('0x37')](_0x504275[_0x91cb('0x32')],qs[_0x91cb('0x38')](_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x38')]));_0x468908['attributes']=_0x468908[_0x91cb('0x39')]['length']?_0x468908['attributes']:_0x504275['model'];if(!_0x3b3ee6[_0x91cb('0x35')]['hasOwnProperty'](_0x91cb('0x3a'))){_0x468908['limit']=qs['limit'](_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x1d')]);_0x468908[_0x91cb('0x1f')]=qs[_0x91cb('0x1f')](_0x3b3ee6[_0x91cb('0x35')]['offset']);}_0x468908[_0x91cb('0x3b')]=qs[_0x91cb('0x3c')](_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x3c')]);_0x468908['where']=qs['filters'](_[_0x91cb('0x3d')](_0x3b3ee6[_0x91cb('0x35')],_0x504275['filters']),_0x52670a);if(_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x3e')]){_0x468908['where']=_[_0x91cb('0x3f')](_0x468908[_0x91cb('0x40')],{'$or':_['map'](_0x52670a,function(_0x43d4fe){if(_0x43d4fe['type']!==_0x91cb('0x41')){var _0xabe6a3={};_0xabe6a3[_0x43d4fe[_0x91cb('0x29')]]={'$like':'%'+_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x3e')]+'%'};return _0xabe6a3;}})});}_0x468908=_[_0x91cb('0x3f')]({},_0x468908,_0x3b3ee6['options']);var _0xa90111={'where':_0x468908[_0x91cb('0x40')]};return db['ScreenRecording'][_0x91cb('0x1e')](_0xa90111)['then'](function(_0x2c6102){_0x2f04a3[_0x91cb('0x1e')]=_0x2c6102;if(_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x42')]){_0x468908['include']=[{'all':!![]}];}return db[_0x91cb('0x2d')][_0x91cb('0x43')](_0x468908);})[_0x91cb('0x25')](function(_0x37e777){_0x2f04a3[_0x91cb('0x44')]=_0x37e777;return _0x2f04a3;})[_0x91cb('0x25')](respondWithFilteredResult(_0x2fb473,_0x468908))[_0x91cb('0x45')](handleError(_0x2fb473,null));};exports[_0x91cb('0x46')]=function(_0x325dca,_0x3cc4c1){var _0x49bc42={'raw':![],'where':{'id':_0x325dca['params']['id']}},_0x16993f={};_0x16993f[_0x91cb('0x32')]=_['keys'](db[_0x91cb('0x2d')]['rawAttributes']);_0x16993f[_0x91cb('0x35')]=_[_0x91cb('0x47')](_0x325dca[_0x91cb('0x35')]);_0x16993f[_0x91cb('0x36')]=_['intersection'](_0x16993f[_0x91cb('0x32')],_0x16993f[_0x91cb('0x35')]);_0x49bc42['attributes']=_[_0x91cb('0x37')](_0x16993f[_0x91cb('0x32')],qs[_0x91cb('0x38')](_0x325dca[_0x91cb('0x35')][_0x91cb('0x38')]));_0x49bc42[_0x91cb('0x39')]=_0x49bc42[_0x91cb('0x39')][_0x91cb('0x48')]?_0x49bc42[_0x91cb('0x39')]:_0x16993f['model'];if(_0x325dca[_0x91cb('0x35')][_0x91cb('0x42')]){_0x49bc42[_0x91cb('0x49')]=[{'all':!![]}];}_0x49bc42=_[_0x91cb('0x3f')]({},_0x49bc42,_0x325dca[_0x91cb('0x4a')]);return db[_0x91cb('0x2d')][_0x91cb('0x4b')](_0x49bc42)[_0x91cb('0x25')](handleEntityNotFound(_0x3cc4c1,null))['then'](respondWithResult(_0x3cc4c1,null))[_0x91cb('0x45')](handleError(_0x3cc4c1,null));};exports[_0x91cb('0x4c')]=function(_0x2b8b7f,_0x3b8cfd){return db['ScreenRecording'][_0x91cb('0x4c')](_0x2b8b7f[_0x91cb('0x4d')],{})['then'](respondWithResult(_0x3b8cfd,0xc9))[_0x91cb('0x45')](handleError(_0x3b8cfd,null));};exports['update']=function(_0x2c419b,_0x4c0acd){if(_0x2c419b['body']['id']){delete _0x2c419b['body']['id'];}delete _0x2c419b[_0x91cb('0x4d')][_0x91cb('0x4e')];delete _0x2c419b[_0x91cb('0x4d')][_0x91cb('0x4f')];delete _0x2c419b[_0x91cb('0x4d')]['closedAt'];delete _0x2c419b['body'][_0x91cb('0x50')];return db[_0x91cb('0x2d')][_0x91cb('0x4b')]({'where':{'id':_0x2c419b[_0x91cb('0x51')]['id']}})['then'](handleEntityNotFound(_0x4c0acd,null))['then'](saveUpdates(_0x2c419b['body'],null))[_0x91cb('0x25')](respondWithResult(_0x4c0acd,null))['catch'](handleError(_0x4c0acd,null));};exports[_0x91cb('0x52')]=function(_0x4aa670,_0x21463a){return db[_0x91cb('0x2d')][_0x91cb('0x52')]()[_0x91cb('0x25')](respondWithResult(_0x21463a,null))[_0x91cb('0x45')](handleError(_0x21463a,null));};exports[_0x91cb('0x53')]=function(_0x3ec250,_0x30fd4e,_0xff7c3f){var _0x20fc0a=require(_0x91cb('0x54'));var _0x5752ed=![];var _0x1e445a={};if(_0x3ec250[_0x91cb('0x35')]['type']&&_0x3ec250[_0x91cb('0x35')][_0x91cb('0x30')]==='uniqueid'){_0x1e445a[_0x91cb('0x55')]=_0x3ec250[_0x91cb('0x51')]['id'];}else{_0x1e445a['id']=_0x3ec250[_0x91cb('0x51')]['id'];}return db[_0x91cb('0x2d')][_0x91cb('0x4b')]({'where':_0x1e445a,'attributes':['id',_0x91cb('0x50')],'raw':!![]})[_0x91cb('0x25')](handleEntityNotFound(_0x30fd4e,null))[_0x91cb('0x25')](function(_0x3320bd){if(_0x3320bd){var _0x93ef52=path[_0x91cb('0x56')](config['root'],_0x91cb('0x57'),_0x3320bd['value']);var _0x37221e=util['format'](_0x91cb('0x58'),_0x93ef52);if(fs[_0x91cb('0x59')](_0x37221e)){_0x5752ed=!![];return _0x20fc0a[_0x91cb('0x5a')](_0x37221e,_0x93ef52,config['secrets'][_0x91cb('0x5b')])[_0x91cb('0x25')](function(){return _0x3320bd;});}return _0x3320bd;}})['then'](function(_0xef4754){if(_0xef4754){var _0x102025=path[_0x91cb('0x56')](config[_0x91cb('0x5c')],'server/files/screen_recordings',_0xef4754[_0x91cb('0x50')]);if(!fs[_0x91cb('0x59')](_0x102025)){throw new db[(_0x91cb('0x5d'))][(_0x91cb('0x5e'))]('ScreenRecording\x20not\x20found');}if(_0xef4754[_0x91cb('0x5f')]){return _0x30fd4e[_0x91cb('0x53')](_0x102025,_0xef4754['filename']+path['extname'](_0x102025),function(){if(_0x5752ed){fs[_0x91cb('0x60')](_0x102025);}});}else{return _0x30fd4e['download'](_0x102025,function(_0x1180ac){if(_0x5752ed){fs[_0x91cb('0x60')](_0x102025);}});}}})['catch'](function(_0x4f19c8){if(_0x4f19c8[_0x91cb('0x61')]==='ScreenRecording\x20not\x20found'){_0x30fd4e[_0x91cb('0x1a')](0x194)[_0x91cb('0x2a')](_0x91cb('0x62'));}else{return handleError(_0x30fd4e,null);}});};exports['destroy']=function(_0x22fea8,_0x524400){return db[_0x91cb('0x2d')][_0x91cb('0x4b')]({'where':{'id':_0x22fea8[_0x91cb('0x51')]['id']}})[_0x91cb('0x25')](function(_0x483172){if(_[_0x91cb('0x63')](_0x483172)){throw new ReferenceError(_0x91cb('0x64'));}return _0x483172;})[_0x91cb('0x25')](function(_0x443c72){var _0xaf70c5=path[_0x91cb('0x56')](config[_0x91cb('0x5c')],_0x91cb('0x57'),_0x443c72[_0x91cb('0x50')]);logger[_0x91cb('0x65')](_0x91cb('0x66'),_0xaf70c5);if(!_[_0x91cb('0x63')](_0x443c72['value'])&&fs[_0x91cb('0x59')](_0xaf70c5)){logger[_0x91cb('0x65')](_0x91cb('0x67')+_0xaf70c5+_0x91cb('0x68'));fs[_0x91cb('0x69')](_0xaf70c5);}_0xaf70c5=_0xaf70c5+_0x91cb('0x6a');if(!_[_0x91cb('0x63')](_0x443c72['value'])&&fs[_0x91cb('0x59')](_0xaf70c5)){logger['info'](_0x91cb('0x67')+_0xaf70c5+_0x91cb('0x68'));fs[_0x91cb('0x69')](_0xaf70c5);}return _0x443c72;})[_0x91cb('0x25')](function(_0x48fcfe){if(!_0x48fcfe)throw new InternalError();return _0x48fcfe[_0x91cb('0x26')]();})[_0x91cb('0x25')](function(){_0x524400[_0x91cb('0x1a')](0xcc)[_0x91cb('0x1b')]();})[_0x91cb('0x45')](handleError(_0x524400,null));};
\ No newline at end of file
index 3e5ac08..1974318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x533e=['interactionid','lodash','util','../../config/logger','api','path','rimraf','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings'];(function(_0x3730b1,_0x28a04b){var _0x2a75db=function(_0x348b9b){while(--_0x348b9b){_0x3730b1['push'](_0x3730b1['shift']());}};_0x2a75db(++_0x28a04b);}(_0x533e,0x105));var _0xe533=function(_0x4b84df,_0x21d1ce){_0x4b84df=_0x4b84df-0x0;var _0x4d31fe=_0x533e[_0x4b84df];return _0x4d31fe;};'use strict';var _=require(_0xe533('0x0'));var util=require(_0xe533('0x1'));var logger=require(_0xe533('0x2'))(_0xe533('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe533('0x4'));var rimraf=require(_0xe533('0x5'));var config=require(_0xe533('0x6'));var attributes=require(_0xe533('0x7'));module[_0xe533('0x8')]=function(_0x340579,_0x65ca58){return _0x340579[_0xe533('0x9')](_0xe533('0xa'),attributes,{'tableName':_0xe533('0xb'),'paranoid':![],'indexes':[{'name':_0xe533('0xc'),'fields':[_0xe533('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b3c=['rimraf','../../config/environment','define','screen_recordings','interactionid','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x42bbcf,_0x16568b){var _0x2475ec=function(_0x3460e2){while(--_0x3460e2){_0x42bbcf['push'](_0x42bbcf['shift']());}};_0x2475ec(++_0x16568b);}(_0x9b3c,0xc0));var _0xc9b3=function(_0x138440,_0x3131da){_0x138440=_0x138440-0x0;var _0x36a081=_0x9b3c[_0x138440];return _0x36a081;};'use strict';var _=require(_0xc9b3('0x0'));var util=require(_0xc9b3('0x1'));var logger=require(_0xc9b3('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc9b3('0x3'));var rp=require(_0xc9b3('0x4'));var fs=require('fs');var path=require(_0xc9b3('0x5'));var rimraf=require(_0xc9b3('0x6'));var config=require(_0xc9b3('0x7'));var attributes=require('./screenRecording.attributes');module['exports']=function(_0x4a2b87,_0x335d5){return _0x4a2b87[_0xc9b3('0x8')]('ScreenRecording',attributes,{'tableName':_0xc9b3('0x9'),'paranoid':![],'indexes':[{'name':_0xc9b3('0xa'),'fields':[_0xc9b3('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 0c99c22..42f4b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x850c=['moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','ScreenRecording,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','util'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x850c,0x1b7));var _0xc850=function(_0x5b5219,_0x1674be){_0x5b5219=_0x5b5219-0x0;var _0x3028c7=_0x850c[_0x5b5219];return _0x3028c7;};'use strict';var _=require('lodash');var util=require(_0xc850('0x0'));var moment=require(_0xc850('0x1'));var BPromise=require(_0xc850('0x2'));var rs=require(_0xc850('0x3'));var fs=require('fs');var Redis=require(_0xc850('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc850('0x5'));var logger=require('../../config/logger')(_0xc850('0x6'));var config=require(_0xc850('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc850('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x542c65,_0x2afe76,_0xe1123){return new BPromise(function(_0x5c424e,_0x4e9bba){return client[_0xc850('0x9')](_0x542c65,_0xe1123)[_0xc850('0xa')](function(_0x93921e){logger[_0xc850('0xb')](_0xc850('0xc'),_0x2afe76,'request\x20sent');logger[_0xc850('0xd')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x2afe76,_0xc850('0xe'),JSON[_0xc850('0xf')](_0x93921e));if(_0x93921e['error']){if(_0x93921e[_0xc850('0x10')][_0xc850('0x11')]===0x1f4){logger[_0xc850('0x10')](_0xc850('0xc'),_0x2afe76,_0x93921e[_0xc850('0x10')][_0xc850('0x12')]);return _0x4e9bba(_0x93921e[_0xc850('0x10')][_0xc850('0x12')]);}logger[_0xc850('0x10')](_0xc850('0xc'),_0x2afe76,_0x93921e['error'][_0xc850('0x12')]);return _0x5c424e(_0x93921e[_0xc850('0x10')]['message']);}else{logger[_0xc850('0xb')](_0xc850('0xc'),_0x2afe76,_0xc850('0xe'));_0x5c424e(_0x93921e[_0xc850('0x13')][_0xc850('0x12')]);}})['catch'](function(_0x386fc2){logger['error'](_0xc850('0xc'),_0x2afe76,_0x386fc2);_0x4e9bba(_0x386fc2);});});}
\ No newline at end of file
+var _0x2aae=['then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x5cee66,_0x43b5da){var _0x382f90=function(_0x47239a){while(--_0x47239a){_0x5cee66['push'](_0x5cee66['shift']());}};_0x382f90(++_0x43b5da);}(_0x2aae,0x1a8));var _0xe2aa=function(_0x1635a2,_0x59d7dd){_0x1635a2=_0x1635a2-0x0;var _0x356ddb=_0x2aae[_0x1635a2];return _0x356ddb;};'use strict';var _=require(_0xe2aa('0x0'));var util=require(_0xe2aa('0x1'));var moment=require(_0xe2aa('0x2'));var BPromise=require(_0xe2aa('0x3'));var rs=require(_0xe2aa('0x4'));var fs=require('fs');var Redis=require(_0xe2aa('0x5'));var db=require(_0xe2aa('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe2aa('0x7'))('rpc');var config=require(_0xe2aa('0x8'));var jayson=require(_0xe2aa('0x9'));var client=jayson[_0xe2aa('0xa')][_0xe2aa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d4a67,_0x4c56f3,_0x4f3e78){return new BPromise(function(_0x189325,_0xabd855){return client[_0xe2aa('0xc')](_0x2d4a67,_0x4f3e78)[_0xe2aa('0xd')](function(_0x2df5c5){logger[_0xe2aa('0xe')](_0xe2aa('0xf'),_0x4c56f3,_0xe2aa('0x10'));logger[_0xe2aa('0x11')](_0xe2aa('0x12'),_0x4c56f3,_0xe2aa('0x10'),JSON[_0xe2aa('0x13')](_0x2df5c5));if(_0x2df5c5['error']){if(_0x2df5c5[_0xe2aa('0x14')]['code']===0x1f4){logger[_0xe2aa('0x14')](_0xe2aa('0xf'),_0x4c56f3,_0x2df5c5[_0xe2aa('0x14')][_0xe2aa('0x15')]);return _0xabd855(_0x2df5c5[_0xe2aa('0x14')][_0xe2aa('0x15')]);}logger[_0xe2aa('0x14')](_0xe2aa('0xf'),_0x4c56f3,_0x2df5c5['error'][_0xe2aa('0x15')]);return _0x189325(_0x2df5c5[_0xe2aa('0x14')][_0xe2aa('0x15')]);}else{logger['info'](_0xe2aa('0xf'),_0x4c56f3,'request\x20sent');_0x189325(_0x2df5c5['result'][_0xe2aa('0x15')]);}})[_0xe2aa('0x16')](function(_0x31c00d){logger['error'](_0xe2aa('0xf'),_0x4c56f3,_0x31c00d);_0xabd855(_0x31c00d);});});}
\ No newline at end of file
index 6986a0f..980ac14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8c6=['%s%s','extname','originalname','single','file','addLogo','logologin','preferred','favicon','addFavicon','update','exports','multer','connect-timeout','express','fs-extra','../../components/interaction/service','./setting.controller','get','isAuthenticated','index','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','/:id/preferred','getFavicon','diskStorage','join','root','server/files/images/logos/','format'];(function(_0xa92cd5,_0x28dd41){var _0x5670d3=function(_0x390da4){while(--_0x390da4){_0xa92cd5['push'](_0xa92cd5['shift']());}};_0x5670d3(++_0x28dd41);}(_0xb8c6,0x12c));var _0x6b8c=function(_0x41e018,_0x54cb55){_0x41e018=_0x41e018-0x0;var _0x52327d=_0xb8c6[_0x41e018];return _0x52327d;};'use strict';var multer=require(_0x6b8c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6b8c('0x1'));var express=require(_0x6b8c('0x2'));var router=express['Router']();var fs_extra=require(_0x6b8c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x6b8c('0x4'));var config=require('../../config/environment');var controller=require(_0x6b8c('0x5'));router[_0x6b8c('0x6')]('/',auth[_0x6b8c('0x7')](),controller[_0x6b8c('0x8')]);router[_0x6b8c('0x6')]('/now',controller[_0x6b8c('0x9')]);router[_0x6b8c('0x6')](_0x6b8c('0xa'),controller[_0x6b8c('0xb')]);router[_0x6b8c('0x6')](_0x6b8c('0xc'),controller[_0x6b8c('0xd')]);router['get'](_0x6b8c('0xe'),controller[_0x6b8c('0xf')]);router[_0x6b8c('0x6')](_0x6b8c('0x10'),controller['gdpr']);router[_0x6b8c('0x6')](_0x6b8c('0x11'),controller['getPreferred']);router['get']('/:id/favicon',controller[_0x6b8c('0x12')]);var upload=multer({'storage':multer[_0x6b8c('0x13')]({'destination':function(_0x54b512,_0x46d2d4,_0xc56952){_0xc56952(null,path[_0x6b8c('0x14')](config[_0x6b8c('0x15')],_0x6b8c('0x16')));},'filename':function(_0x723348,_0x1e8aa0,_0xcbdd73){_0xcbdd73(null,util[_0x6b8c('0x17')](_0x6b8c('0x18'),'logo',path[_0x6b8c('0x19')](_0x1e8aa0[_0x6b8c('0x1a')])));}})});router['post'](_0x6b8c('0xc'),upload[_0x6b8c('0x1b')](_0x6b8c('0x1c')),controller[_0x6b8c('0x1d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3080eb,_0x4563ce,_0x467cf8){_0x467cf8(null,path[_0x6b8c('0x14')](config[_0x6b8c('0x15')],_0x6b8c('0x16')));},'filename':function(_0x2aa81f,_0x364db9,_0x22b2b5){_0x22b2b5(null,util['format'](_0x6b8c('0x18'),_0x6b8c('0x1e'),path['extname'](_0x364db9['originalname'])));}})});router['post'](_0x6b8c('0xe'),upload[_0x6b8c('0x1b')](_0x6b8c('0x1c')),controller['addLogoLogin']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x8b04,_0x19fd44,_0x6116a1){_0x6116a1(null,path['join'](config[_0x6b8c('0x15')],_0x6b8c('0x16')));},'filename':function(_0x345a5b,_0xc51ef3,_0x174554){_0x174554(null,util['format'](_0x6b8c('0x18'),_0x6b8c('0x1f'),path[_0x6b8c('0x19')](_0xc51ef3[_0x6b8c('0x1a')])));}})});router['post']('/:id/preferred',upload['single'](_0x6b8c('0x1c')),controller['addPreferred']);var upload=multer({'storage':multer[_0x6b8c('0x13')]({'destination':function(_0x5b6df5,_0x118719,_0x8940e2){_0x8940e2(null,path[_0x6b8c('0x14')](config['root'],_0x6b8c('0x16')));},'filename':function(_0x14f315,_0x3af590,_0xd00e68){_0xd00e68(null,util[_0x6b8c('0x17')](_0x6b8c('0x18'),_0x6b8c('0x20'),path[_0x6b8c('0x19')](_0x3af590[_0x6b8c('0x1a')])));}})});router['post']('/:id/favicon',upload[_0x6b8c('0x1b')](_0x6b8c('0x1c')),controller[_0x6b8c('0x21')]);router['put'](_0x6b8c('0xa'),auth['isAuthenticated'](),controller[_0x6b8c('0x22')]);module[_0x6b8c('0x23')]=router;
\ No newline at end of file
+var _0xb156=['originalname','post','single','addLogo','logologin','file','addLogoLogin','diskStorage','preferred','addPreferred','/:id/favicon','addFavicon','isAuthenticated','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','./setting.controller','get','index','/now','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','/:id/preferred','getPreferred','join','root','server/files/images/logos/','format','%s%s','logo'];(function(_0x2cc3cc,_0x897ef){var _0xe708de=function(_0x1d9615){while(--_0x1d9615){_0x2cc3cc['push'](_0x2cc3cc['shift']());}};_0xe708de(++_0x897ef);}(_0xb156,0x18a));var _0x6b15=function(_0x3c28e7,_0x169024){_0x3c28e7=_0x3c28e7-0x0;var _0x557b3a=_0xb156[_0x3c28e7];return _0x557b3a;};'use strict';var multer=require('multer');var util=require(_0x6b15('0x0'));var path=require(_0x6b15('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6b15('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6b15('0x3'));var interaction=require(_0x6b15('0x4'));var config=require('../../config/environment');var controller=require(_0x6b15('0x5'));router[_0x6b15('0x6')]('/',auth['isAuthenticated'](),controller[_0x6b15('0x7')]);router[_0x6b15('0x6')](_0x6b15('0x8'),controller[_0x6b15('0x9')]);router['get'](_0x6b15('0xa'),controller[_0x6b15('0xb')]);router[_0x6b15('0x6')](_0x6b15('0xc'),controller['getLogo']);router[_0x6b15('0x6')](_0x6b15('0xd'),controller[_0x6b15('0xe')]);router[_0x6b15('0x6')](_0x6b15('0xf'),controller['gdpr']);router['get'](_0x6b15('0x10'),controller[_0x6b15('0x11')]);router[_0x6b15('0x6')]('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x186054,_0x2e757a,_0x126706){_0x126706(null,path[_0x6b15('0x12')](config[_0x6b15('0x13')],_0x6b15('0x14')));},'filename':function(_0x30e5da,_0x298c66,_0x4e1dbd){_0x4e1dbd(null,util[_0x6b15('0x15')](_0x6b15('0x16'),_0x6b15('0x17'),path['extname'](_0x298c66[_0x6b15('0x18')])));}})});router[_0x6b15('0x19')](_0x6b15('0xc'),upload[_0x6b15('0x1a')]('file'),controller[_0x6b15('0x1b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1c0a2e,_0x27cafb,_0x254e94){_0x254e94(null,path['join'](config[_0x6b15('0x13')],_0x6b15('0x14')));},'filename':function(_0x98200,_0x3ce1d7,_0x32688a){_0x32688a(null,util[_0x6b15('0x15')]('%s%s',_0x6b15('0x1c'),path['extname'](_0x3ce1d7[_0x6b15('0x18')])));}})});router[_0x6b15('0x19')](_0x6b15('0xd'),upload[_0x6b15('0x1a')](_0x6b15('0x1d')),controller[_0x6b15('0x1e')]);var upload=multer({'storage':multer[_0x6b15('0x1f')]({'destination':function(_0x540d36,_0x5dbb90,_0x25b12b){_0x25b12b(null,path[_0x6b15('0x12')](config[_0x6b15('0x13')],_0x6b15('0x14')));},'filename':function(_0x1dabfe,_0x423612,_0x1ee7b6){_0x1ee7b6(null,util[_0x6b15('0x15')](_0x6b15('0x16'),_0x6b15('0x20'),path['extname'](_0x423612[_0x6b15('0x18')])));}})});router[_0x6b15('0x19')](_0x6b15('0x10'),upload[_0x6b15('0x1a')](_0x6b15('0x1d')),controller[_0x6b15('0x21')]);var upload=multer({'storage':multer[_0x6b15('0x1f')]({'destination':function(_0x5479a6,_0x99779c,_0x2cdd7e){_0x2cdd7e(null,path[_0x6b15('0x12')](config[_0x6b15('0x13')],_0x6b15('0x14')));},'filename':function(_0x94d3bb,_0x4caa0a,_0x204dd4){_0x204dd4(null,util['format']('%s%s','favicon',path['extname'](_0x4caa0a['originalname'])));}})});router['post'](_0x6b15('0x22'),upload[_0x6b15('0x1a')]('file'),controller[_0x6b15('0x23')]);router['put']('/:id',auth[_0x6b15('0x24')](),controller['update']);module[_0x6b15('0x25')]=router;
\ No newline at end of file
index 6efafd5..b2f7d0c 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(_0x38c7f9,_0x577704){var _0xce8aff=function(_0x3dae4b){while(--_0x3dae4b){_0x38c7f9['push'](_0x38c7f9['shift']());}};_0xce8aff(++_0x577704);}(_0x7a54,0x106));var _0x47a5=function(_0x3440bb,_0x99d3b9){_0x3440bb=_0x3440bb-0x0;var _0x197535=_0x7a54[_0x3440bb];return _0x197535;};'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 _0x1261=['exports','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0x249f8c,_0xfb3946){var _0x5e224a=function(_0xd4c5a1){while(--_0xd4c5a1){_0x249f8c['push'](_0x249f8c['shift']());}};_0x5e224a(++_0xfb3946);}(_0x1261,0x144));var _0x1126=function(_0x2f8805,_0x2f1d21){_0x2f8805=_0x2f8805-0x0;var _0xa16375=_0x1261[_0x2f8805];return _0xa16375;};'use strict';var Sequelize=require('sequelize');module[_0x1126('0x0')]={'min_internal':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x5')},'logo':{'type':Sequelize[_0x1126('0x4')]},'defaultLogo':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x1126('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x1126('0x4')]},'turnaddr':{'type':Sequelize[_0x1126('0x4')]},'turnusername':{'type':Sequelize[_0x1126('0x4')]},'turnpassword':{'type':Sequelize[_0x1126('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x1126('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x7')},'chatTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x1126('0x4')]},'defaultPreferred':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x1126('0x4')]},'defaultFavicon':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x1126('0x1')]},'transcribeRegion':{'type':Sequelize[_0x1126('0x4')]},'sentiment':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x1126('0x1')]},'sentimentRegion':{'type':Sequelize[_0x1126('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x1126('0x1')](0x2)[_0x1126('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 0c1e6b1..9bdf729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dbe=['apply','reject','update','destroy','stack','index','map','Setting','rawAttributes','key','model','name','keys','filters','intersection','query','attributes','fields','nolimit','order','sort','where','pick','merge','type','filter','then','includeAll','include','params','length','body','addLogo','file','filename','find','addLogoLogin','getLogo','server/files/images/logos','getLicense','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','logo','join','toLower','root','default_logo.svg','default','existsSync','Sequelize','upperFirst','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','custom','ValidationError','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','Setting,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range'];(function(_0x4bc820,_0x291096){var _0x336570=function(_0x48ae22){while(--_0x48ae22){_0x4bc820['push'](_0x4bc820['shift']());}};_0x336570(++_0x291096);}(_0x9dbe,0x1c4));var _0xe9db=function(_0x462d4b,_0x597689){_0x462d4b=_0x462d4b-0x0;var _0x606afe=_0x9dbe[_0x462d4b];return _0x606afe;};'use strict';var emlformat=require(_0xe9db('0x0'));var rimraf=require(_0xe9db('0x1'));var zipdir=require(_0xe9db('0x2'));var jsonpatch=require(_0xe9db('0x3'));var rp=require(_0xe9db('0x4'));var moment=require(_0xe9db('0x5'));var BPromise=require(_0xe9db('0x6'));var Mustache=require(_0xe9db('0x7'));var util=require('util');var path=require(_0xe9db('0x8'));var sox=require(_0xe9db('0x9'));var csv=require(_0xe9db('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9db('0xb'));var _=require(_0xe9db('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe9db('0xd'));var deskjs=require(_0xe9db('0xe'));var toCsv=require(_0xe9db('0xa'));var querystring=require(_0xe9db('0xf'));var Papa=require(_0xe9db('0x10'));var Redis=require(_0xe9db('0x11'));var authService=require(_0xe9db('0x12'));var qs=require(_0xe9db('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe9db('0x14'));var logger=require(_0xe9db('0x15'))(_0xe9db('0x16'));var utils=require(_0xe9db('0x17'));var config=require(_0xe9db('0x18'));var licenseUtil=require(_0xe9db('0x19'));var db=require(_0xe9db('0x1a'))['db'];var jayson=require(_0xe9db('0x1b'));var client=jayson[_0xe9db('0x1c')][_0xe9db('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x564cb8,_0x1c83d0,_0x589917,_0x8034f8){return new BPromise(function(_0x4f6d72,_0x2684bb){var _0x35c12e=_0x8034f8||client;return _0x35c12e[_0xe9db('0x1e')](_0x564cb8,_0x589917)['then'](function(_0x5d1468){logger[_0xe9db('0x1f')]('Setting,\x20%s,\x20%s',_0x1c83d0,_0xe9db('0x20'));logger[_0xe9db('0x21')](_0xe9db('0x22'),_0x1c83d0,_0xe9db('0x20'),JSON[_0xe9db('0x23')](_0x5d1468));if(_0x5d1468[_0xe9db('0x24')]){if(_0x5d1468[_0xe9db('0x24')][_0xe9db('0x25')]===0x1f4){logger[_0xe9db('0x24')](_0xe9db('0x26'),_0x1c83d0,_0x5d1468[_0xe9db('0x24')][_0xe9db('0x27')]);return _0x2684bb(_0x5d1468[_0xe9db('0x24')][_0xe9db('0x27')]);}logger[_0xe9db('0x24')](_0xe9db('0x26'),_0x1c83d0,_0x5d1468[_0xe9db('0x24')][_0xe9db('0x27')]);return _0x4f6d72(_0x5d1468['error'][_0xe9db('0x27')]);}else{logger['info'](_0xe9db('0x26'),_0x1c83d0,_0xe9db('0x20'));_0x4f6d72(_0x5d1468[_0xe9db('0x28')][_0xe9db('0x27')]);}})[_0xe9db('0x29')](function(_0x11746c){logger['error'](_0xe9db('0x26'),_0x1c83d0,_0x11746c);_0x2684bb(_0x11746c);});});}function respondWithStatusCode(_0x149db9,_0x4768c2){_0x4768c2=_0x4768c2||0xcc;return function(_0x2e978c){if(_0x2e978c){return _0x149db9[_0xe9db('0x2a')](_0x4768c2);}return _0x149db9[_0xe9db('0x2b')](_0x4768c2)[_0xe9db('0x2c')]();};}function respondWithResult(_0x35f2fd,_0x1efa63){_0x1efa63=_0x1efa63||0xc8;return function(_0x5889a5){if(_0x5889a5){return _0x35f2fd[_0xe9db('0x2b')](_0x1efa63)[_0xe9db('0x2d')](_0x5889a5);}};}function respondWithFilteredResult(_0x3d2422,_0x5d6484){return function(_0x10c8a1){if(_0x10c8a1){var _0x4fefa6=typeof _0x5d6484['offset']==='undefined'&&typeof _0x5d6484[_0xe9db('0x2e')]===_0xe9db('0x2f');var _0x3806f5=_0x10c8a1[_0xe9db('0x30')];var _0x3883c6=_0x4fefa6?0x0:_0x5d6484['offset'];var _0x276448=_0x4fefa6?_0x10c8a1[_0xe9db('0x30')]:_0x5d6484[_0xe9db('0x31')]+_0x5d6484[_0xe9db('0x2e')];var _0x3c85e5;if(_0x276448>=_0x3806f5){_0x276448=_0x3806f5;_0x3c85e5=0xc8;}else{_0x3c85e5=0xce;}_0x3d2422[_0xe9db('0x2b')](_0x3c85e5);return _0x3d2422[_0xe9db('0x32')](_0xe9db('0x33'),_0x3883c6+'-'+_0x276448+'/'+_0x3806f5)[_0xe9db('0x2d')](_0x10c8a1);}return null;};}function patchUpdates(_0x302b12){return function(_0x2b46b5){try{jsonpatch[_0xe9db('0x34')](_0x2b46b5,_0x302b12,!![]);}catch(_0x5ac90c){return BPromise[_0xe9db('0x35')](_0x5ac90c);}return _0x2b46b5['save']();};}function saveUpdates(_0xf6f44b,_0x392daf){return function(_0x11ce05){if(_0x11ce05){return _0x11ce05[_0xe9db('0x36')](_0xf6f44b)['then'](function(_0x27e4a5){return _0x27e4a5;});}return null;};}function removeEntity(_0x59562a,_0x149a56){return function(_0xcbc84c){if(_0xcbc84c){return _0xcbc84c[_0xe9db('0x37')]()['then'](function(){_0x59562a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x42f8b8,_0x258f9e){return function(_0x1462a9){if(!_0x1462a9){_0x42f8b8['sendStatus'](0x194);}return _0x1462a9;};}function handleError(_0x40b85d,_0x46219b){_0x46219b=_0x46219b||0x1f4;return function(_0x22c6a9){logger['error'](_0x22c6a9[_0xe9db('0x38')]);if(_0x22c6a9['name']){delete _0x22c6a9['name'];}_0x40b85d[_0xe9db('0x2b')](_0x46219b)['send'](_0x22c6a9);};}exports[_0xe9db('0x39')]=function(_0x496ce3,_0x2c3bab){var _0x10a013={},_0x3b7c70={},_0x2e5dad={'count':0x0,'rows':[]};var _0x4cc4d9=_[_0xe9db('0x3a')](db[_0xe9db('0x3b')][_0xe9db('0x3c')],function(_0x35c76f){return{'name':_0x35c76f['fieldName'],'type':_0x35c76f['type'][_0xe9db('0x3d')]};});_0x3b7c70[_0xe9db('0x3e')]=_[_0xe9db('0x3a')](_0x4cc4d9,_0xe9db('0x3f'));_0x3b7c70['query']=_[_0xe9db('0x40')](_0x496ce3['query']);_0x3b7c70[_0xe9db('0x41')]=_[_0xe9db('0x42')](_0x3b7c70[_0xe9db('0x3e')],_0x3b7c70[_0xe9db('0x43')]);_0x10a013[_0xe9db('0x44')]=_[_0xe9db('0x42')](_0x3b7c70[_0xe9db('0x3e')],qs[_0xe9db('0x45')](_0x496ce3[_0xe9db('0x43')][_0xe9db('0x45')]));_0x10a013[_0xe9db('0x44')]=_0x10a013[_0xe9db('0x44')]['length']?_0x10a013[_0xe9db('0x44')]:_0x3b7c70[_0xe9db('0x3e')];if(!_0x496ce3[_0xe9db('0x43')]['hasOwnProperty'](_0xe9db('0x46'))){_0x10a013[_0xe9db('0x2e')]=qs[_0xe9db('0x2e')](_0x496ce3[_0xe9db('0x43')][_0xe9db('0x2e')]);_0x10a013[_0xe9db('0x31')]=qs[_0xe9db('0x31')](_0x496ce3[_0xe9db('0x43')]['offset']);}_0x10a013[_0xe9db('0x47')]=qs[_0xe9db('0x48')](_0x496ce3[_0xe9db('0x43')][_0xe9db('0x48')]);_0x10a013[_0xe9db('0x49')]=qs[_0xe9db('0x41')](_[_0xe9db('0x4a')](_0x496ce3[_0xe9db('0x43')],_0x3b7c70[_0xe9db('0x41')]),_0x4cc4d9);if(_0x496ce3[_0xe9db('0x43')]['filter']){_0x10a013[_0xe9db('0x49')]=_[_0xe9db('0x4b')](_0x10a013[_0xe9db('0x49')],{'$or':_['map'](_0x4cc4d9,function(_0x3b382d){if(_0x3b382d[_0xe9db('0x4c')]!=='VIRTUAL'){var _0x5bc132={};_0x5bc132[_0x3b382d[_0xe9db('0x3f')]]={'$like':'%'+_0x496ce3['query'][_0xe9db('0x4d')]+'%'};return _0x5bc132;}})});}_0x10a013=_[_0xe9db('0x4b')]({},_0x10a013,_0x496ce3['options']);var _0x24ddfb={'where':_0x10a013[_0xe9db('0x49')]};return db[_0xe9db('0x3b')][_0xe9db('0x30')](_0x24ddfb)[_0xe9db('0x4e')](function(_0x576a27){_0x2e5dad[_0xe9db('0x30')]=_0x576a27;if(_0x496ce3[_0xe9db('0x43')][_0xe9db('0x4f')]){_0x10a013[_0xe9db('0x50')]=[{'all':!![]}];}return db[_0xe9db('0x3b')]['findAll'](_0x10a013);})[_0xe9db('0x4e')](function(_0x14abe4){_0x2e5dad['rows']=_0x14abe4;return _0x2e5dad;})[_0xe9db('0x4e')](respondWithFilteredResult(_0x2c3bab,_0x10a013))['catch'](handleError(_0x2c3bab,null));};exports['show']=function(_0x3bfa7a,_0x3d45de){var _0x24d298={'raw':![],'where':{'id':_0x3bfa7a[_0xe9db('0x51')]['id']}},_0x212d28={};_0x212d28['model']=_[_0xe9db('0x40')](db[_0xe9db('0x3b')][_0xe9db('0x3c')]);_0x212d28[_0xe9db('0x43')]=_[_0xe9db('0x40')](_0x3bfa7a[_0xe9db('0x43')]);_0x212d28[_0xe9db('0x41')]=_[_0xe9db('0x42')](_0x212d28[_0xe9db('0x3e')],_0x212d28[_0xe9db('0x43')]);_0x24d298[_0xe9db('0x44')]=_[_0xe9db('0x42')](_0x212d28[_0xe9db('0x3e')],qs['fields'](_0x3bfa7a[_0xe9db('0x43')]['fields']));_0x24d298[_0xe9db('0x44')]=_0x24d298[_0xe9db('0x44')][_0xe9db('0x52')]?_0x24d298[_0xe9db('0x44')]:_0x212d28['model'];if(_0x3bfa7a['query'][_0xe9db('0x4f')]){_0x24d298[_0xe9db('0x50')]=[{'all':!![]}];}_0x24d298=_['merge']({},_0x24d298,_0x3bfa7a['options']);return db[_0xe9db('0x3b')]['find'](_0x24d298)[_0xe9db('0x4e')](handleEntityNotFound(_0x3d45de,null))[_0xe9db('0x4e')](respondWithResult(_0x3d45de,null))[_0xe9db('0x29')](handleError(_0x3d45de,null));};exports[_0xe9db('0x36')]=function(_0x1bc426,_0x3133eb){if(_0x1bc426[_0xe9db('0x53')]['id']){delete _0x1bc426['body']['id'];}return db[_0xe9db('0x3b')]['find']({'where':{'id':_0x1bc426[_0xe9db('0x51')]['id']}})[_0xe9db('0x4e')](handleEntityNotFound(_0x3133eb,null))[_0xe9db('0x4e')](saveUpdates(_0x1bc426[_0xe9db('0x53')],null))[_0xe9db('0x4e')](respondWithResult(_0x3133eb,null))[_0xe9db('0x29')](handleError(_0x3133eb,null));};exports[_0xe9db('0x54')]=function(_0x21bfa1,_0x40973d,_0x551db8){if(_0x21bfa1[_0xe9db('0x55')]&&_0x21bfa1[_0xe9db('0x55')][_0xe9db('0x56')]){_0x21bfa1['body']['logo']=_0x21bfa1[_0xe9db('0x55')][_0xe9db('0x56')];}return db[_0xe9db('0x3b')][_0xe9db('0x57')]({'where':{'id':_0x21bfa1[_0xe9db('0x51')]['id']}})['then'](handleEntityNotFound(_0x40973d,null))[_0xe9db('0x4e')](saveUpdates(_0x21bfa1[_0xe9db('0x53')],null))['then'](respondWithResult(_0x40973d,null))[_0xe9db('0x29')](handleError(_0x40973d,null));};exports[_0xe9db('0x58')]=function(_0x24bb03,_0x19a873,_0x3d29aa){if(_0x24bb03[_0xe9db('0x55')]&&_0x24bb03[_0xe9db('0x55')][_0xe9db('0x56')]){_0x24bb03[_0xe9db('0x53')]['loginLogo']=_0x24bb03['file'][_0xe9db('0x56')];}return db['Setting'][_0xe9db('0x57')]({'where':{'id':_0x24bb03[_0xe9db('0x51')]['id']}})['then'](handleEntityNotFound(_0x19a873,null))[_0xe9db('0x4e')](saveUpdates(_0x24bb03[_0xe9db('0x53')],null))[_0xe9db('0x4e')](respondWithResult(_0x19a873,null))[_0xe9db('0x29')](handleError(_0x19a873,null));};var utilLicense=require('../../config/license/util');exports[_0xe9db('0x59')]=function(_0x12e5cf,_0x454e9c,_0x2a1c6f){var _0x53c5ae=_0xe9db('0x5a');var _0x30ccd6={'custom':![]};return utilLicense[_0xe9db('0x5b')]()[_0xe9db('0x4e')](function(_0x58f982){if(_0x58f982){_0x30ccd6=_0x58f982;}return db[_0xe9db('0x3b')]['find']({'where':{'id':_0x12e5cf['params']['id']},'attributes':['logo',_0xe9db('0x5c'),_0xe9db('0x5d'),_0xe9db('0x5e'),_0xe9db('0x5f'),_0xe9db('0x60'),_0xe9db('0x61'),_0xe9db('0x62')],'raw':!![]});})[_0xe9db('0x4e')](handleEntityNotFound(_0x454e9c,null))[_0xe9db('0x4e')](function(_0xda1582){if(_0xda1582){var _0x2cc0df=_0xda1582[_0xe9db('0x63')]&&fs['existsSync'](path[_0xe9db('0x64')](config['root'],_0x53c5ae,_[_0xe9db('0x65')](_0xda1582['logo'])))?path[_0xe9db('0x64')](config['root'],_0x53c5ae,_[_0xe9db('0x65')](_0xda1582[_0xe9db('0x63')])):path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0x53c5ae,_['toLower'](_0xe9db('0x67')));var _0x5eca0b=_0xe9db('0x68')+_['upperFirst']('logo');if(_0xda1582[_0x5eca0b]||!_0x30ccd6['custom']){_0x2cc0df=path[_0xe9db('0x64')](config['root'],_0x53c5ae,_[_0xe9db('0x65')]('default_logo.svg'));}if(!fs[_0xe9db('0x69')](_0x2cc0df)){throw new db[(_0xe9db('0x6a'))]['ValidationError'](_[_0xe9db('0x6b')](_0xe9db('0x63'))+_0xe9db('0x6c'));}return _0x454e9c[_0xe9db('0x6d')](_0x2cc0df);}})[_0xe9db('0x29')](handleError(_0x454e9c,null));};var utilLicense=require(_0xe9db('0x19'));exports[_0xe9db('0x6e')]=function(_0x1e0fad,_0x51eeec,_0x4983f4){var _0xade15e='server/files/images/logos';var _0x32788e={'custom':![]};return utilLicense[_0xe9db('0x5b')]()[_0xe9db('0x4e')](function(_0x1ea5c2){if(_0x1ea5c2){_0x32788e=_0x1ea5c2;}return db[_0xe9db('0x3b')][_0xe9db('0x57')]({'where':{'id':_0x1e0fad[_0xe9db('0x51')]['id']},'attributes':[_0xe9db('0x63'),_0xe9db('0x5c'),_0xe9db('0x5d'),_0xe9db('0x5e'),_0xe9db('0x5f'),_0xe9db('0x60'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0xe9db('0x4e')](handleEntityNotFound(_0x51eeec,null))[_0xe9db('0x4e')](function(_0x2713cf){if(_0x2713cf){var _0x3b843d=_0x2713cf['loginLogo']&&fs[_0xe9db('0x69')](path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0xade15e,_['toLower'](_0x2713cf[_0xe9db('0x5c')])))?path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0xade15e,_[_0xe9db('0x65')](_0x2713cf[_0xe9db('0x5c')])):path['join'](config['root'],_0xade15e,_[_0xe9db('0x65')](_0xe9db('0x6f')));var _0x2a9c03=_0xe9db('0x68')+_[_0xe9db('0x6b')](_0xe9db('0x5c'));if(_0x2713cf[_0x2a9c03]||!_0x32788e[_0xe9db('0x70')]){_0x3b843d=path['join'](config[_0xe9db('0x66')],_0xade15e,_[_0xe9db('0x65')](_0xe9db('0x6f')));}if(!fs[_0xe9db('0x69')](_0x3b843d)){throw new db[(_0xe9db('0x6a'))][(_0xe9db('0x71'))](_[_0xe9db('0x6b')](_0xe9db('0x5c'))+_0xe9db('0x6c'));}return _0x51eeec[_0xe9db('0x6d')](_0x3b843d);}})[_0xe9db('0x29')](handleError(_0x51eeec,null));};exports[_0xe9db('0x72')]=function(_0x2b27db,_0x1d1d0e){return db[_0xe9db('0x3b')][_0xe9db('0x57')]({'where':{'id':_0x2b27db[_0xe9db('0x51')]['id']},'attributes':[_0xe9db('0x73')]})[_0xe9db('0x4e')](respondWithResult(_0x1d1d0e,null))['catch'](handleError(_0x1d1d0e,null));};exports[_0xe9db('0x74')]=function(_0x4907ca,_0x5e865f,_0x66418b){if(_0x4907ca['file']&&_0x4907ca[_0xe9db('0x55')][_0xe9db('0x56')]){_0x4907ca['body'][_0xe9db('0x5d')]=_0x4907ca[_0xe9db('0x55')]['filename'];}return db[_0xe9db('0x3b')]['find']({'where':{'id':_0x4907ca[_0xe9db('0x51')]['id']}})[_0xe9db('0x4e')](handleEntityNotFound(_0x5e865f,null))[_0xe9db('0x4e')](saveUpdates(_0x4907ca[_0xe9db('0x53')],null))['then'](respondWithResult(_0x5e865f,null))[_0xe9db('0x29')](handleError(_0x5e865f,null));};var utilLicense=require(_0xe9db('0x19'));exports[_0xe9db('0x75')]=function(_0x2a3156,_0x3a3412,_0x522f7a){var _0x4ee194='server/files/images/logos';var _0x2fb216={'custom':![]};return utilLicense[_0xe9db('0x5b')]()['then'](function(_0x443940){if(_0x443940){_0x2fb216=_0x443940;}return db['Setting'][_0xe9db('0x57')]({'where':{'id':_0x2a3156[_0xe9db('0x51')]['id']},'attributes':[_0xe9db('0x63'),_0xe9db('0x5c'),_0xe9db('0x5d'),_0xe9db('0x5e'),_0xe9db('0x5f'),'defaultLoginLogo',_0xe9db('0x61'),_0xe9db('0x62')],'raw':!![]});})[_0xe9db('0x4e')](handleEntityNotFound(_0x3a3412,null))[_0xe9db('0x4e')](function(_0x1d0349){if(_0x1d0349){var _0x21d1a2=_0x1d0349[_0xe9db('0x5d')]&&fs[_0xe9db('0x69')](path[_0xe9db('0x64')](config['root'],_0x4ee194,_[_0xe9db('0x65')](_0x1d0349['preferred'])))?path['join'](config[_0xe9db('0x66')],_0x4ee194,_[_0xe9db('0x65')](_0x1d0349[_0xe9db('0x5d')])):path['join'](config[_0xe9db('0x66')],_0x4ee194,_[_0xe9db('0x65')](_0xe9db('0x76')));var _0x133392='default'+_[_0xe9db('0x6b')]('preferred');if(_0x1d0349[_0x133392]||!_0x2fb216[_0xe9db('0x70')]||!_0x2fb216['preferred']){_0x21d1a2=path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0x4ee194,_[_0xe9db('0x65')](_0xe9db('0x76')));}if(!fs['existsSync'](_0x21d1a2)){throw new db['Sequelize'][(_0xe9db('0x71'))](_[_0xe9db('0x6b')](_0xe9db('0x5d'))+_0xe9db('0x6c'));}return _0x3a3412['download'](_0x21d1a2);}})[_0xe9db('0x29')](handleError(_0x3a3412,null));};exports[_0xe9db('0x77')]=function(_0x34d9d0,_0x243a17,_0x24d0ba){if(_0x34d9d0[_0xe9db('0x55')]&&_0x34d9d0['file'][_0xe9db('0x56')]){_0x34d9d0[_0xe9db('0x53')][_0xe9db('0x5e')]=_0x34d9d0[_0xe9db('0x55')][_0xe9db('0x56')];}return db[_0xe9db('0x3b')][_0xe9db('0x57')]({'where':{'id':_0x34d9d0[_0xe9db('0x51')]['id']}})[_0xe9db('0x4e')](handleEntityNotFound(_0x243a17,null))[_0xe9db('0x4e')](saveUpdates(_0x34d9d0[_0xe9db('0x53')],null))['then'](respondWithResult(_0x243a17,null))[_0xe9db('0x29')](handleError(_0x243a17,null));};var utilLicense=require(_0xe9db('0x19'));exports['getFavicon']=function(_0x52bfa4,_0x576c57,_0x407894){var _0x49001b=_0xe9db('0x5a');var _0x372675={'custom':![]};return utilLicense[_0xe9db('0x5b')]()[_0xe9db('0x4e')](function(_0x3d7641){if(_0x3d7641){_0x372675=_0x3d7641;}return db[_0xe9db('0x3b')][_0xe9db('0x57')]({'where':{'id':_0x52bfa4[_0xe9db('0x51')]['id']},'attributes':[_0xe9db('0x63'),_0xe9db('0x5c'),_0xe9db('0x5d'),_0xe9db('0x5e'),_0xe9db('0x5f'),'defaultLoginLogo',_0xe9db('0x61'),_0xe9db('0x62')],'raw':!![]});})[_0xe9db('0x4e')](handleEntityNotFound(_0x576c57,null))[_0xe9db('0x4e')](function(_0x45a345){if(_0x45a345){var _0x2959b4=_0x45a345[_0xe9db('0x5e')]&&fs['existsSync'](path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0x49001b,_['toLower'](_0x45a345[_0xe9db('0x5e')])))?path[_0xe9db('0x64')](config['root'],_0x49001b,_[_0xe9db('0x65')](_0x45a345['favicon'])):path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0x49001b,_['toLower'](_0xe9db('0x78')));var _0x5cd13f='default'+_[_0xe9db('0x6b')](_0xe9db('0x5e'));if(_0x45a345[_0x5cd13f]||!_0x372675[_0xe9db('0x70')]){_0x2959b4=path[_0xe9db('0x64')](config[_0xe9db('0x66')],_0x49001b,_[_0xe9db('0x65')](_0xe9db('0x78')));}if(!fs[_0xe9db('0x69')](_0x2959b4)){throw new db['Sequelize'][(_0xe9db('0x71'))](_['upperFirst'](_0xe9db('0x5e'))+_0xe9db('0x6c'));}return _0x576c57['download'](_0x2959b4);}})[_0xe9db('0x29')](handleError(_0x576c57,null));};exports[_0xe9db('0x79')]=function(_0x36e879,_0x1c4fb9){var _0x5a9e38={'offset':moment()[_0xe9db('0x7a')]()};_0x5a9e38[_0xe9db('0x7b')]=moment()['utcOffset'](_0x5a9e38['offset'])['format'](_0xe9db('0x7c'));return _0x1c4fb9[_0xe9db('0x2b')](0xc8)[_0xe9db('0x7d')](_0x5a9e38);};
\ No newline at end of file
+var _0x8996=['moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','client','request','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','send','index','Setting','rawAttributes','fieldName','type','key','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','merge','filter','options','includeAll','include','rows','params','body','addLogo','file','filename','addLogoLogin','find','getLogo','server/files/images/logos','getLicense','logo','loginLogo','preferred','defaultLogo','defaultPreferred','defaultFavicon','join','root','toLower','default_logo.svg','upperFirst','existsSync','Sequelize','\x20not\x20found','download','getLogoLogin','favicon','defaultLoginLogo','default_loginLogo.svg','ValidationError','gdpr','securePassword','addPreferred','../../config/license/util','default_preferred.png','default','custom','addFavicon','default_favicon.ico','now','format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x584f10,_0x26709a){var _0xc705db=function(_0x26531f){while(--_0x26531f){_0x584f10['push'](_0x584f10['shift']());}};_0xc705db(++_0x26709a);}(_0x8996,0x1d3));var _0x6899=function(_0x2c9ec7,_0x4ab90e){_0x2c9ec7=_0x2c9ec7-0x0;var _0x516eac=_0x8996[_0x2c9ec7];return _0x516eac;};'use strict';var emlformat=require(_0x6899('0x0'));var rimraf=require(_0x6899('0x1'));var zipdir=require(_0x6899('0x2'));var jsonpatch=require(_0x6899('0x3'));var rp=require(_0x6899('0x4'));var moment=require(_0x6899('0x5'));var BPromise=require(_0x6899('0x6'));var Mustache=require(_0x6899('0x7'));var util=require('util');var path=require('path');var sox=require(_0x6899('0x8'));var csv=require('to-csv');var ejs=require(_0x6899('0x9'));var fs=require('fs');var fs_extra=require(_0x6899('0xa'));var _=require(_0x6899('0xb'));var squel=require(_0x6899('0xc'));var crypto=require('crypto');var jsforce=require(_0x6899('0xd'));var deskjs=require(_0x6899('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6899('0xf'));var Papa=require('papaparse');var Redis=require(_0x6899('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6899('0x11'));var hardwareService=require(_0x6899('0x12'));var logger=require(_0x6899('0x13'))(_0x6899('0x14'));var utils=require(_0x6899('0x15'));var config=require(_0x6899('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x6899('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x6899('0x18')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13025f,_0x3443e8,_0x733499,_0x3fd772){return new BPromise(function(_0x2d41fc,_0x3a1651){var _0x4a92d5=_0x3fd772||client;return _0x4a92d5[_0x6899('0x19')](_0x13025f,_0x733499)['then'](function(_0x529c23){logger['info'](_0x6899('0x1a'),_0x3443e8,'request\x20sent');logger[_0x6899('0x1b')](_0x6899('0x1c'),_0x3443e8,_0x6899('0x1d'),JSON['stringify'](_0x529c23));if(_0x529c23['error']){if(_0x529c23[_0x6899('0x1e')][_0x6899('0x1f')]===0x1f4){logger['error'](_0x6899('0x1a'),_0x3443e8,_0x529c23['error']['message']);return _0x3a1651(_0x529c23[_0x6899('0x1e')][_0x6899('0x20')]);}logger[_0x6899('0x1e')](_0x6899('0x1a'),_0x3443e8,_0x529c23['error']['message']);return _0x2d41fc(_0x529c23[_0x6899('0x1e')][_0x6899('0x20')]);}else{logger[_0x6899('0x21')](_0x6899('0x1a'),_0x3443e8,_0x6899('0x1d'));_0x2d41fc(_0x529c23[_0x6899('0x22')][_0x6899('0x20')]);}})[_0x6899('0x23')](function(_0x8a8093){logger['error']('Setting,\x20%s,\x20%s',_0x3443e8,_0x8a8093);_0x3a1651(_0x8a8093);});});}function respondWithStatusCode(_0x442457,_0x3d91c5){_0x3d91c5=_0x3d91c5||0xcc;return function(_0xaa1bb1){if(_0xaa1bb1){return _0x442457[_0x6899('0x24')](_0x3d91c5);}return _0x442457[_0x6899('0x25')](_0x3d91c5)[_0x6899('0x26')]();};}function respondWithResult(_0x250ebb,_0x54ab2a){_0x54ab2a=_0x54ab2a||0xc8;return function(_0x21a13e){if(_0x21a13e){return _0x250ebb['status'](_0x54ab2a)[_0x6899('0x27')](_0x21a13e);}};}function respondWithFilteredResult(_0x14e3aa,_0x591c83){return function(_0x350fd5){if(_0x350fd5){var _0x19584d=typeof _0x591c83[_0x6899('0x28')]===_0x6899('0x29')&&typeof _0x591c83[_0x6899('0x2a')]===_0x6899('0x29');var _0x370c7c=_0x350fd5[_0x6899('0x2b')];var _0x259a94=_0x19584d?0x0:_0x591c83[_0x6899('0x28')];var _0x51171d=_0x19584d?_0x350fd5[_0x6899('0x2b')]:_0x591c83[_0x6899('0x28')]+_0x591c83[_0x6899('0x2a')];var _0x492ef0;if(_0x51171d>=_0x370c7c){_0x51171d=_0x370c7c;_0x492ef0=0xc8;}else{_0x492ef0=0xce;}_0x14e3aa[_0x6899('0x25')](_0x492ef0);return _0x14e3aa[_0x6899('0x2c')](_0x6899('0x2d'),_0x259a94+'-'+_0x51171d+'/'+_0x370c7c)[_0x6899('0x27')](_0x350fd5);}return null;};}function patchUpdates(_0x493362){return function(_0xb1fc9){try{jsonpatch[_0x6899('0x2e')](_0xb1fc9,_0x493362,!![]);}catch(_0x49ea75){return BPromise['reject'](_0x49ea75);}return _0xb1fc9[_0x6899('0x2f')]();};}function saveUpdates(_0x5b0814,_0x479f71){return function(_0x14dc8a){if(_0x14dc8a){return _0x14dc8a[_0x6899('0x30')](_0x5b0814)[_0x6899('0x31')](function(_0x12a085){return _0x12a085;});}return null;};}function removeEntity(_0x36738b,_0x375c54){return function(_0x494f2d){if(_0x494f2d){return _0x494f2d['destroy']()['then'](function(){_0x36738b[_0x6899('0x25')](0xcc)[_0x6899('0x26')]();});}};}function handleEntityNotFound(_0x47e7bb,_0x17dca6){return function(_0x1bddab){if(!_0x1bddab){_0x47e7bb['sendStatus'](0x194);}return _0x1bddab;};}function handleError(_0x57b0ff,_0xfc5716){_0xfc5716=_0xfc5716||0x1f4;return function(_0x3ecae6){logger[_0x6899('0x1e')](_0x3ecae6[_0x6899('0x32')]);if(_0x3ecae6['name']){delete _0x3ecae6[_0x6899('0x33')];}_0x57b0ff['status'](_0xfc5716)[_0x6899('0x34')](_0x3ecae6);};}exports[_0x6899('0x35')]=function(_0x100fba,_0x5a8f46){var _0x320c4b={},_0x4685df={},_0x539f6d={'count':0x0,'rows':[]};var _0x18c5bb=_['map'](db[_0x6899('0x36')][_0x6899('0x37')],function(_0x946eba){return{'name':_0x946eba[_0x6899('0x38')],'type':_0x946eba[_0x6899('0x39')][_0x6899('0x3a')]};});_0x4685df['model']=_['map'](_0x18c5bb,'name');_0x4685df['query']=_[_0x6899('0x3b')](_0x100fba[_0x6899('0x3c')]);_0x4685df[_0x6899('0x3d')]=_['intersection'](_0x4685df[_0x6899('0x3e')],_0x4685df[_0x6899('0x3c')]);_0x320c4b[_0x6899('0x3f')]=_[_0x6899('0x40')](_0x4685df[_0x6899('0x3e')],qs[_0x6899('0x41')](_0x100fba[_0x6899('0x3c')]['fields']));_0x320c4b[_0x6899('0x3f')]=_0x320c4b[_0x6899('0x3f')][_0x6899('0x42')]?_0x320c4b[_0x6899('0x3f')]:_0x4685df[_0x6899('0x3e')];if(!_0x100fba['query'][_0x6899('0x43')](_0x6899('0x44'))){_0x320c4b[_0x6899('0x2a')]=qs[_0x6899('0x2a')](_0x100fba[_0x6899('0x3c')][_0x6899('0x2a')]);_0x320c4b[_0x6899('0x28')]=qs[_0x6899('0x28')](_0x100fba['query'][_0x6899('0x28')]);}_0x320c4b['order']=qs[_0x6899('0x45')](_0x100fba[_0x6899('0x3c')][_0x6899('0x45')]);_0x320c4b[_0x6899('0x46')]=qs[_0x6899('0x3d')](_['pick'](_0x100fba[_0x6899('0x3c')],_0x4685df['filters']),_0x18c5bb);if(_0x100fba[_0x6899('0x3c')]['filter']){_0x320c4b[_0x6899('0x46')]=_[_0x6899('0x47')](_0x320c4b[_0x6899('0x46')],{'$or':_['map'](_0x18c5bb,function(_0x3d00e6){if(_0x3d00e6[_0x6899('0x39')]!=='VIRTUAL'){var _0x32fedd={};_0x32fedd[_0x3d00e6[_0x6899('0x33')]]={'$like':'%'+_0x100fba['query'][_0x6899('0x48')]+'%'};return _0x32fedd;}})});}_0x320c4b=_[_0x6899('0x47')]({},_0x320c4b,_0x100fba[_0x6899('0x49')]);var _0x3ed21f={'where':_0x320c4b[_0x6899('0x46')]};return db[_0x6899('0x36')]['count'](_0x3ed21f)['then'](function(_0x104587){_0x539f6d['count']=_0x104587;if(_0x100fba['query'][_0x6899('0x4a')]){_0x320c4b[_0x6899('0x4b')]=[{'all':!![]}];}return db[_0x6899('0x36')]['findAll'](_0x320c4b);})['then'](function(_0x30e5f6){_0x539f6d[_0x6899('0x4c')]=_0x30e5f6;return _0x539f6d;})['then'](respondWithFilteredResult(_0x5a8f46,_0x320c4b))[_0x6899('0x23')](handleError(_0x5a8f46,null));};exports['show']=function(_0x44fc04,_0x5aecc5){var _0x838106={'raw':![],'where':{'id':_0x44fc04['params']['id']}},_0x90375d={};_0x90375d['model']=_[_0x6899('0x3b')](db[_0x6899('0x36')][_0x6899('0x37')]);_0x90375d[_0x6899('0x3c')]=_[_0x6899('0x3b')](_0x44fc04[_0x6899('0x3c')]);_0x90375d[_0x6899('0x3d')]=_[_0x6899('0x40')](_0x90375d[_0x6899('0x3e')],_0x90375d[_0x6899('0x3c')]);_0x838106['attributes']=_['intersection'](_0x90375d[_0x6899('0x3e')],qs[_0x6899('0x41')](_0x44fc04[_0x6899('0x3c')][_0x6899('0x41')]));_0x838106[_0x6899('0x3f')]=_0x838106[_0x6899('0x3f')]['length']?_0x838106['attributes']:_0x90375d['model'];if(_0x44fc04[_0x6899('0x3c')][_0x6899('0x4a')]){_0x838106[_0x6899('0x4b')]=[{'all':!![]}];}_0x838106=_[_0x6899('0x47')]({},_0x838106,_0x44fc04['options']);return db['Setting']['find'](_0x838106)[_0x6899('0x31')](handleEntityNotFound(_0x5aecc5,null))['then'](respondWithResult(_0x5aecc5,null))['catch'](handleError(_0x5aecc5,null));};exports['update']=function(_0x1cc110,_0x9bbc17){if(_0x1cc110['body']['id']){delete _0x1cc110['body']['id'];}return db['Setting']['find']({'where':{'id':_0x1cc110[_0x6899('0x4d')]['id']}})['then'](handleEntityNotFound(_0x9bbc17,null))[_0x6899('0x31')](saveUpdates(_0x1cc110[_0x6899('0x4e')],null))[_0x6899('0x31')](respondWithResult(_0x9bbc17,null))[_0x6899('0x23')](handleError(_0x9bbc17,null));};exports[_0x6899('0x4f')]=function(_0x4adc55,_0x5c0a49,_0x22e212){if(_0x4adc55['file']&&_0x4adc55[_0x6899('0x50')][_0x6899('0x51')]){_0x4adc55[_0x6899('0x4e')]['logo']=_0x4adc55[_0x6899('0x50')][_0x6899('0x51')];}return db[_0x6899('0x36')]['find']({'where':{'id':_0x4adc55[_0x6899('0x4d')]['id']}})[_0x6899('0x31')](handleEntityNotFound(_0x5c0a49,null))[_0x6899('0x31')](saveUpdates(_0x4adc55[_0x6899('0x4e')],null))['then'](respondWithResult(_0x5c0a49,null))[_0x6899('0x23')](handleError(_0x5c0a49,null));};exports[_0x6899('0x52')]=function(_0x1ffcc5,_0x316f52,_0x5346d2){if(_0x1ffcc5[_0x6899('0x50')]&&_0x1ffcc5[_0x6899('0x50')][_0x6899('0x51')]){_0x1ffcc5[_0x6899('0x4e')]['loginLogo']=_0x1ffcc5[_0x6899('0x50')]['filename'];}return db[_0x6899('0x36')][_0x6899('0x53')]({'where':{'id':_0x1ffcc5[_0x6899('0x4d')]['id']}})[_0x6899('0x31')](handleEntityNotFound(_0x316f52,null))[_0x6899('0x31')](saveUpdates(_0x1ffcc5[_0x6899('0x4e')],null))['then'](respondWithResult(_0x316f52,null))[_0x6899('0x23')](handleError(_0x316f52,null));};var utilLicense=require('../../config/license/util');exports[_0x6899('0x54')]=function(_0x124a8e,_0x31c022,_0x59a2a1){var _0xc026d1=_0x6899('0x55');var _0x1142f5={'custom':![]};return utilLicense[_0x6899('0x56')]()[_0x6899('0x31')](function(_0xd66c6d){if(_0xd66c6d){_0x1142f5=_0xd66c6d;}return db[_0x6899('0x36')][_0x6899('0x53')]({'where':{'id':_0x124a8e[_0x6899('0x4d')]['id']},'attributes':[_0x6899('0x57'),_0x6899('0x58'),_0x6899('0x59'),'favicon',_0x6899('0x5a'),'defaultLoginLogo',_0x6899('0x5b'),_0x6899('0x5c')],'raw':!![]});})['then'](handleEntityNotFound(_0x31c022,null))['then'](function(_0x38f2e7){if(_0x38f2e7){var _0x534217=_0x38f2e7[_0x6899('0x57')]&&fs['existsSync'](path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0xc026d1,_[_0x6899('0x5f')](_0x38f2e7['logo'])))?path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0xc026d1,_[_0x6899('0x5f')](_0x38f2e7[_0x6899('0x57')])):path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0xc026d1,_['toLower'](_0x6899('0x60')));var _0x355c99='default'+_[_0x6899('0x61')](_0x6899('0x57'));if(_0x38f2e7[_0x355c99]||!_0x1142f5['custom']){_0x534217=path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0xc026d1,_[_0x6899('0x5f')](_0x6899('0x60')));}if(!fs[_0x6899('0x62')](_0x534217)){throw new db[(_0x6899('0x63'))]['ValidationError'](_[_0x6899('0x61')](_0x6899('0x57'))+_0x6899('0x64'));}return _0x31c022[_0x6899('0x65')](_0x534217);}})[_0x6899('0x23')](handleError(_0x31c022,null));};var utilLicense=require('../../config/license/util');exports[_0x6899('0x66')]=function(_0x3ee2fb,_0x4dbd4a,_0x1b3750){var _0x3082ff=_0x6899('0x55');var _0x32975d={'custom':![]};return utilLicense['getLicense']()[_0x6899('0x31')](function(_0x2815ba){if(_0x2815ba){_0x32975d=_0x2815ba;}return db['Setting'][_0x6899('0x53')]({'where':{'id':_0x3ee2fb[_0x6899('0x4d')]['id']},'attributes':[_0x6899('0x57'),_0x6899('0x58'),'preferred',_0x6899('0x67'),_0x6899('0x5a'),_0x6899('0x68'),_0x6899('0x5b'),_0x6899('0x5c')],'raw':!![]});})[_0x6899('0x31')](handleEntityNotFound(_0x4dbd4a,null))[_0x6899('0x31')](function(_0x586240){if(_0x586240){var _0x303748=_0x586240[_0x6899('0x58')]&&fs[_0x6899('0x62')](path[_0x6899('0x5d')](config['root'],_0x3082ff,_[_0x6899('0x5f')](_0x586240['loginLogo'])))?path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x3082ff,_[_0x6899('0x5f')](_0x586240[_0x6899('0x58')])):path['join'](config[_0x6899('0x5e')],_0x3082ff,_[_0x6899('0x5f')]('default_loginLogo.svg'));var _0x2c4d0e='default'+_[_0x6899('0x61')]('loginLogo');if(_0x586240[_0x2c4d0e]||!_0x32975d['custom']){_0x303748=path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x3082ff,_['toLower'](_0x6899('0x69')));}if(!fs[_0x6899('0x62')](_0x303748)){throw new db[(_0x6899('0x63'))][(_0x6899('0x6a'))](_[_0x6899('0x61')](_0x6899('0x58'))+'\x20not\x20found');}return _0x4dbd4a[_0x6899('0x65')](_0x303748);}})[_0x6899('0x23')](handleError(_0x4dbd4a,null));};exports[_0x6899('0x6b')]=function(_0x4c1612,_0x417fd3){return db[_0x6899('0x36')]['find']({'where':{'id':_0x4c1612[_0x6899('0x4d')]['id']},'attributes':[_0x6899('0x6c')]})[_0x6899('0x31')](respondWithResult(_0x417fd3,null))['catch'](handleError(_0x417fd3,null));};exports[_0x6899('0x6d')]=function(_0x20b993,_0x173397,_0x52f51b){if(_0x20b993['file']&&_0x20b993['file']['filename']){_0x20b993[_0x6899('0x4e')][_0x6899('0x59')]=_0x20b993['file'][_0x6899('0x51')];}return db['Setting'][_0x6899('0x53')]({'where':{'id':_0x20b993[_0x6899('0x4d')]['id']}})['then'](handleEntityNotFound(_0x173397,null))[_0x6899('0x31')](saveUpdates(_0x20b993[_0x6899('0x4e')],null))[_0x6899('0x31')](respondWithResult(_0x173397,null))[_0x6899('0x23')](handleError(_0x173397,null));};var utilLicense=require(_0x6899('0x6e'));exports['getPreferred']=function(_0x1c7a61,_0x49f311,_0x1e0c5b){var _0x442854=_0x6899('0x55');var _0x4bf7a4={'custom':![]};return utilLicense[_0x6899('0x56')]()[_0x6899('0x31')](function(_0xee9f02){if(_0xee9f02){_0x4bf7a4=_0xee9f02;}return db[_0x6899('0x36')]['find']({'where':{'id':_0x1c7a61['params']['id']},'attributes':[_0x6899('0x57'),_0x6899('0x58'),_0x6899('0x59'),'favicon','defaultLogo','defaultLoginLogo',_0x6899('0x5b'),_0x6899('0x5c')],'raw':!![]});})[_0x6899('0x31')](handleEntityNotFound(_0x49f311,null))[_0x6899('0x31')](function(_0x261fd8){if(_0x261fd8){var _0x39ec4e=_0x261fd8[_0x6899('0x59')]&&fs[_0x6899('0x62')](path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x442854,_[_0x6899('0x5f')](_0x261fd8[_0x6899('0x59')])))?path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x442854,_[_0x6899('0x5f')](_0x261fd8[_0x6899('0x59')])):path[_0x6899('0x5d')](config['root'],_0x442854,_[_0x6899('0x5f')](_0x6899('0x6f')));var _0x1805c8=_0x6899('0x70')+_[_0x6899('0x61')](_0x6899('0x59'));if(_0x261fd8[_0x1805c8]||!_0x4bf7a4[_0x6899('0x71')]||!_0x4bf7a4[_0x6899('0x59')]){_0x39ec4e=path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x442854,_['toLower']('default_preferred.png'));}if(!fs[_0x6899('0x62')](_0x39ec4e)){throw new db[(_0x6899('0x63'))][(_0x6899('0x6a'))](_[_0x6899('0x61')](_0x6899('0x59'))+_0x6899('0x64'));}return _0x49f311[_0x6899('0x65')](_0x39ec4e);}})['catch'](handleError(_0x49f311,null));};exports[_0x6899('0x72')]=function(_0x463c78,_0x2c873b,_0x254bd8){if(_0x463c78[_0x6899('0x50')]&&_0x463c78[_0x6899('0x50')][_0x6899('0x51')]){_0x463c78[_0x6899('0x4e')][_0x6899('0x67')]=_0x463c78[_0x6899('0x50')][_0x6899('0x51')];}return db[_0x6899('0x36')]['find']({'where':{'id':_0x463c78[_0x6899('0x4d')]['id']}})[_0x6899('0x31')](handleEntityNotFound(_0x2c873b,null))[_0x6899('0x31')](saveUpdates(_0x463c78[_0x6899('0x4e')],null))[_0x6899('0x31')](respondWithResult(_0x2c873b,null))[_0x6899('0x23')](handleError(_0x2c873b,null));};var utilLicense=require(_0x6899('0x6e'));exports['getFavicon']=function(_0x49f454,_0x24a3fa,_0x2fd590){var _0x3ca975=_0x6899('0x55');var _0x3d9719={'custom':![]};return utilLicense[_0x6899('0x56')]()[_0x6899('0x31')](function(_0x58a5e4){if(_0x58a5e4){_0x3d9719=_0x58a5e4;}return db['Setting'][_0x6899('0x53')]({'where':{'id':_0x49f454['params']['id']},'attributes':[_0x6899('0x57'),'loginLogo',_0x6899('0x59'),_0x6899('0x67'),_0x6899('0x5a'),_0x6899('0x68'),_0x6899('0x5b'),_0x6899('0x5c')],'raw':!![]});})[_0x6899('0x31')](handleEntityNotFound(_0x24a3fa,null))[_0x6899('0x31')](function(_0x5e2c5c){if(_0x5e2c5c){var _0x28bc23=_0x5e2c5c['favicon']&&fs[_0x6899('0x62')](path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x3ca975,_[_0x6899('0x5f')](_0x5e2c5c[_0x6899('0x67')])))?path[_0x6899('0x5d')](config[_0x6899('0x5e')],_0x3ca975,_['toLower'](_0x5e2c5c['favicon'])):path[_0x6899('0x5d')](config['root'],_0x3ca975,_[_0x6899('0x5f')](_0x6899('0x73')));var _0x42fdfb=_0x6899('0x70')+_[_0x6899('0x61')](_0x6899('0x67'));if(_0x5e2c5c[_0x42fdfb]||!_0x3d9719[_0x6899('0x71')]){_0x28bc23=path[_0x6899('0x5d')](config['root'],_0x3ca975,_[_0x6899('0x5f')](_0x6899('0x73')));}if(!fs[_0x6899('0x62')](_0x28bc23)){throw new db[(_0x6899('0x63'))][(_0x6899('0x6a'))](_[_0x6899('0x61')](_0x6899('0x67'))+_0x6899('0x64'));}return _0x24a3fa['download'](_0x28bc23);}})['catch'](handleError(_0x24a3fa,null));};exports['getDate']=function(_0x3c1f9c,_0x5924a5){var _0x13ae7c={'offset':moment()['utcOffset']()};_0x13ae7c[_0x6899('0x74')]=moment()['utcOffset'](_0x13ae7c[_0x6899('0x28')])[_0x6899('0x75')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x5924a5[_0x6899('0x25')](0xc8)['send'](_0x13ae7c);};
\ No newline at end of file
index 2aca217..070fef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x27a900,_0x1cc305){var _0xea9b1f=function(_0xaddd55){while(--_0xaddd55){_0x27a900['push'](_0x27a900['shift']());}};_0xea9b1f(++_0x1cc305);}(_0x008c,0x188));var _0xc008=function(_0x4f0f9b,_0x4e963e){_0x4f0f9b=_0x4f0f9b-0x0;var _0x970f94=_0x008c[_0x4f0f9b];return _0x970f94;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('Setting',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./setting.attributes','exports','define','settings','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x18b344,_0x271f68){var _0x5ef6bb=function(_0x3345b3){while(--_0x3345b3){_0x18b344['push'](_0x18b344['shift']());}};_0x5ef6bb(++_0x271f68);}(_0x55ca,0x126));var _0xa55c=function(_0x33c638,_0x462bff){_0x33c638=_0x33c638-0x0;var _0x18a079=_0x55ca[_0x33c638];return _0x18a079;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Setting',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index acbcf59..c126b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b8=['Setting','find','raw','options','where','include','map','attributes','model','ShowSetting','catch','util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1d8617,_0x56f18a){var _0x2c39c3=function(_0xef7919){while(--_0xef7919){_0x1d8617['push'](_0x1d8617['shift']());}};_0x2c39c3(++_0x56f18a);}(_0x99b8,0xbf));var _0x899b=function(_0x2c94f9,_0x205cc3){_0x2c94f9=_0x2c94f9-0x0;var _0x1e0cdc=_0x99b8[_0x2c94f9];return _0x1e0cdc;};'use strict';var _=require('lodash');var util=require(_0x899b('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x899b('0x1'));var fs=require('fs');var Redis=require(_0x899b('0x2'));var db=require(_0x899b('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x899b('0x4'));var config=require(_0x899b('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x899b('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x49d0fe,_0x26c61f,_0x33298a){return new BPromise(function(_0x22d7f2,_0x6d6a70){return client[_0x899b('0x7')](_0x49d0fe,_0x33298a)[_0x899b('0x8')](function(_0xb7de8f){logger[_0x899b('0x9')](_0x899b('0xa'),_0x26c61f,_0x899b('0xb'));logger[_0x899b('0xc')](_0x899b('0xd'),_0x26c61f,_0x899b('0xb'),JSON[_0x899b('0xe')](_0xb7de8f));if(_0xb7de8f[_0x899b('0xf')]){if(_0xb7de8f[_0x899b('0xf')][_0x899b('0x10')]===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x26c61f,_0xb7de8f[_0x899b('0xf')][_0x899b('0x11')]);return _0x6d6a70(_0xb7de8f[_0x899b('0xf')]['message']);}logger[_0x899b('0xf')](_0x899b('0xa'),_0x26c61f,_0xb7de8f[_0x899b('0xf')][_0x899b('0x11')]);return _0x22d7f2(_0xb7de8f[_0x899b('0xf')][_0x899b('0x11')]);}else{logger[_0x899b('0x9')](_0x899b('0xa'),_0x26c61f,_0x899b('0xb'));_0x22d7f2(_0xb7de8f[_0x899b('0x12')]['message']);}})['catch'](function(_0x1cb292){logger['error']('Setting,\x20%s,\x20%s',_0x26c61f,_0x1cb292);_0x6d6a70(_0x1cb292);});});}exports['ShowSetting']=function(_0x5bb8bd){var _0x3ea3e6=this;return new Promise(function(_0x194721,_0x26d366){return db[_0x899b('0x13')][_0x899b('0x14')]({'raw':_0x5bb8bd['options']?_0x5bb8bd['options'][_0x899b('0x15')]===undefined?!![]:![]:!![],'where':_0x5bb8bd[_0x899b('0x16')]?_0x5bb8bd[_0x899b('0x16')][_0x899b('0x17')]||null:null,'attributes':_0x5bb8bd[_0x899b('0x16')]?_0x5bb8bd[_0x899b('0x16')]['attributes']||null:null,'include':_0x5bb8bd[_0x899b('0x16')]?_0x5bb8bd[_0x899b('0x16')][_0x899b('0x18')]?_[_0x899b('0x19')](_0x5bb8bd[_0x899b('0x16')][_0x899b('0x18')],function(_0x251942){return{'model':db[_0x251942['model']],'as':_0x251942['as'],'attributes':_0x251942[_0x899b('0x1a')],'include':_0x251942[_0x899b('0x18')]?_[_0x899b('0x19')](_0x251942[_0x899b('0x18')],function(_0x4a3bd8){return{'model':db[_0x4a3bd8[_0x899b('0x1b')]],'as':_0x4a3bd8['as'],'attributes':_0x4a3bd8['attributes'],'include':_0x4a3bd8[_0x899b('0x18')]?_[_0x899b('0x19')](_0x4a3bd8[_0x899b('0x18')],function(_0x5b296e){return{'model':db[_0x5b296e[_0x899b('0x1b')]],'as':_0x5b296e['as'],'attributes':_0x5b296e[_0x899b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xcca21f){logger[_0x899b('0x9')](_0x899b('0x1c'),_0x5bb8bd);logger[_0x899b('0xc')](_0x899b('0x1c'),_0x5bb8bd,JSON[_0x899b('0xe')](_0xcca21f));_0x194721(_0xcca21f);})[_0x899b('0x1d')](function(_0x465456){logger[_0x899b('0xf')](_0x899b('0x1c'),_0x465456['message'],_0x5bb8bd);_0x26d366(_0x3ea3e6['error'](0x1f4,_0x465456[_0x899b('0x11')]));});});};
\ No newline at end of file
+var _0x9859=['then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','message','result','ShowSetting','Setting','find','options','where','include','map','model','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x4eb495,_0x5ea974){var _0x14b03=function(_0x2b9785){while(--_0x2b9785){_0x4eb495['push'](_0x4eb495['shift']());}};_0x14b03(++_0x5ea974);}(_0x9859,0x1f2));var _0x9985=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x9859[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0x9985('0x0'));var util=require(_0x9985('0x1'));var moment=require(_0x9985('0x2'));var BPromise=require(_0x9985('0x3'));var rs=require(_0x9985('0x4'));var fs=require('fs');var Redis=require(_0x9985('0x5'));var db=require(_0x9985('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9985('0x7'))(_0x9985('0x8'));var config=require(_0x9985('0x9'));var jayson=require(_0x9985('0xa'));var client=jayson[_0x9985('0xb')][_0x9985('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x576c7e,_0x788113,_0x9ab1e8){return new BPromise(function(_0x4b5cd9,_0x31d3e0){return client[_0x9985('0xd')](_0x576c7e,_0x9ab1e8)[_0x9985('0xe')](function(_0x14fda3){logger[_0x9985('0xf')](_0x9985('0x10'),_0x788113,_0x9985('0x11'));logger[_0x9985('0x12')](_0x9985('0x13'),_0x788113,_0x9985('0x11'),JSON['stringify'](_0x14fda3));if(_0x14fda3[_0x9985('0x14')]){if(_0x14fda3[_0x9985('0x14')]['code']===0x1f4){logger[_0x9985('0x14')](_0x9985('0x10'),_0x788113,_0x14fda3[_0x9985('0x14')]['message']);return _0x31d3e0(_0x14fda3[_0x9985('0x14')][_0x9985('0x15')]);}logger[_0x9985('0x14')]('Setting,\x20%s,\x20%s',_0x788113,_0x14fda3[_0x9985('0x14')][_0x9985('0x15')]);return _0x4b5cd9(_0x14fda3[_0x9985('0x14')][_0x9985('0x15')]);}else{logger['info'](_0x9985('0x10'),_0x788113,'request\x20sent');_0x4b5cd9(_0x14fda3[_0x9985('0x16')]['message']);}})['catch'](function(_0x3d49b9){logger[_0x9985('0x14')](_0x9985('0x10'),_0x788113,_0x3d49b9);_0x31d3e0(_0x3d49b9);});});}exports[_0x9985('0x17')]=function(_0x148c11){var _0x26eaf5=this;return new Promise(function(_0x1cd282,_0x5b073b){return db[_0x9985('0x18')][_0x9985('0x19')]({'raw':_0x148c11['options']?_0x148c11[_0x9985('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x148c11[_0x9985('0x1a')]?_0x148c11[_0x9985('0x1a')][_0x9985('0x1b')]||null:null,'attributes':_0x148c11[_0x9985('0x1a')]?_0x148c11['options']['attributes']||null:null,'include':_0x148c11[_0x9985('0x1a')]?_0x148c11[_0x9985('0x1a')][_0x9985('0x1c')]?_[_0x9985('0x1d')](_0x148c11[_0x9985('0x1a')]['include'],function(_0x292b3f){return{'model':db[_0x292b3f['model']],'as':_0x292b3f['as'],'attributes':_0x292b3f['attributes'],'include':_0x292b3f[_0x9985('0x1c')]?_[_0x9985('0x1d')](_0x292b3f[_0x9985('0x1c')],function(_0x30785e){return{'model':db[_0x30785e[_0x9985('0x1e')]],'as':_0x30785e['as'],'attributes':_0x30785e['attributes'],'include':_0x30785e[_0x9985('0x1c')]?_[_0x9985('0x1d')](_0x30785e['include'],function(_0x268f99){return{'model':db[_0x268f99[_0x9985('0x1e')]],'as':_0x268f99['as'],'attributes':_0x268f99[_0x9985('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9985('0xe')](function(_0x5b7a82){logger['info'](_0x9985('0x17'),_0x148c11);logger[_0x9985('0x12')](_0x9985('0x17'),_0x148c11,JSON['stringify'](_0x5b7a82));_0x1cd282(_0x5b7a82);})['catch'](function(_0x17b0ef){logger[_0x9985('0x14')](_0x9985('0x17'),_0x17b0ef[_0x9985('0x15')],_0x148c11);_0x5b073b(_0x26eaf5[_0x9985('0x14')](0x1f4,_0x17b0ef[_0x9985('0x15')]));});});};
\ No newline at end of file
index 8d08301..6aca9ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['/:id/send','status','put','update','delete','removeDispositions','removeAnswers','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','create','post','/:id/notify','notify','addApplications'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x7217,0x19e));var _0x7721=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0x7217[_0x934425];return _0x31d596;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getApplications']);router[_0x7721('0x8')](_0x7721('0x14'),auth['isAuthenticated'](),controller[_0x7721('0x15')]);router[_0x7721('0x8')](_0x7721('0x16'),controller[_0x7721('0x17')]);router['get'](_0x7721('0x18'),auth[_0x7721('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x1a')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller['addDisposition']);router[_0x7721('0x1a')]('/:id/canned_answers',auth[_0x7721('0x9')](),controller['addAnswer']);router[_0x7721('0x1a')](_0x7721('0x1b'),controller[_0x7721('0x1c')]);router[_0x7721('0x1a')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1d')]);router[_0x7721('0x1a')](_0x7721('0x1e'),auth[_0x7721('0x9')](),controller['send']);router[_0x7721('0x1a')](_0x7721('0x16'),controller[_0x7721('0x1f')]);router[_0x7721('0x1a')]('/:id/users',auth[_0x7721('0x9')](),controller['addAgents']);router[_0x7721('0x20')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x21')]);router[_0x7721('0x22')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller['destroy']);router[_0x7721('0x22')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller[_0x7721('0x23')]);router[_0x7721('0x22')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x24')]);router[_0x7721('0x22')]('/:id/users',auth[_0x7721('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xf494=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','getAgents','post','/:id/applications','addApplications','/:id/send','send','/:id/users','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf494,0x1c6));var _0x4f49=function(_0x16c972,_0x5bb7b2){_0x16c972=_0x16c972-0x0;var _0x1fe4b1=_0xf494[_0x16c972];return _0x1fe4b1;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0xa')](_0x4f49('0x10'),auth[_0x4f49('0xb')](),controller['getDispositions']);router[_0x4f49('0xa')](_0x4f49('0x11'),auth['isAuthenticated'](),controller[_0x4f49('0x12')]);router['get']('/:id/applications',auth[_0x4f49('0xb')](),controller[_0x4f49('0x13')]);router['get'](_0x4f49('0x14'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x15')]);router[_0x4f49('0xa')](_0x4f49('0x16'),controller[_0x4f49('0x17')]);router[_0x4f49('0xa')]('/:id/users',auth[_0x4f49('0xb')](),controller[_0x4f49('0x18')]);router[_0x4f49('0x19')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4f49('0x19')](_0x4f49('0x10'),auth[_0x4f49('0xb')](),controller['addDisposition']);router[_0x4f49('0x19')](_0x4f49('0x11'),auth[_0x4f49('0xb')](),controller['addAnswer']);router['post']('/:id/notify',controller['notify']);router[_0x4f49('0x19')](_0x4f49('0x1a'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x1b')]);router['post'](_0x4f49('0x1c'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x1d')]);router[_0x4f49('0x19')](_0x4f49('0x16'),controller['status']);router[_0x4f49('0x19')](_0x4f49('0x1e'),auth[_0x4f49('0xb')](),controller['addAgents']);router[_0x4f49('0x1f')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x20')]);router[_0x4f49('0x21')](_0x4f49('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0x4f49('0x21')](_0x4f49('0x10'),auth['isAuthenticated'](),controller[_0x4f49('0x22')]);router[_0x4f49('0x21')](_0x4f49('0x11'),auth['isAuthenticated'](),controller[_0x4f49('0x23')]);router[_0x4f49('0x21')](_0x4f49('0x1e'),auth[_0x4f49('0xb')](),controller[_0x4f49('0x24')]);module[_0x4f49('0x25')]=router;
\ No newline at end of file
index 7e11524..d2e7274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc708=['clicksend','clickatell','bandwidth','csc','intelepeer','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','setDataValue','mandatoryDisposition','exports','STRING','name','generate','ENUM','twilio','skebby','connectel'];(function(_0x26a351,_0x5dd04c){var _0x1ef7fe=function(_0x4ea269){while(--_0x4ea269){_0x26a351['push'](_0x26a351['shift']());}};_0x1ef7fe(++_0x5dd04c);}(_0xc708,0xc9));var _0x8c70=function(_0x2c6810,_0x23c079){_0x2c6810=_0x2c6810-0x0;var _0x213881=_0xc708[_0x2c6810];return _0x213881;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x8c70('0x0')]={'name':{'type':Sequelize[_0x8c70('0x1')],'unique':_0x8c70('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x8c70('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x8c70('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0x8c70('0x1')],'defaultValue':function(){return rs[_0x8c70('0x3')]();}},'phone':{'type':Sequelize[_0x8c70('0x1')]},'type':{'type':Sequelize[_0x8c70('0x4')](_0x8c70('0x5'),_0x8c70('0x6'),_0x8c70('0x7'),_0x8c70('0x8'),'plivo',_0x8c70('0x9'),_0x8c70('0xa'),_0x8c70('0xb'),'infobip',_0x8c70('0xc'))},'accountSid':{'type':Sequelize[_0x8c70('0x1')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x8c70('0x1')]},'smsMethod':{'type':Sequelize[_0x8c70('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x8c70('0x1')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x8c70('0x1')]},'applicationId':{'type':Sequelize[_0x8c70('0x1')]},'accountId':{'type':Sequelize[_0x8c70('0x1')]},'senderString':{'type':Sequelize[_0x8c70('0x1')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x8c70('0x1')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x8c70('0xd');}},'notificationSound':{'type':Sequelize[_0x8c70('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x8c70('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8c70('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8c70('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8c70('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8c70('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x8c70('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8c70('0xf')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x8c70('0xe')],'defaultValue':![],'comment':_0x8c70('0x10'),'set':function(_0x153372){if(!_0x153372)this[_0x8c70('0x11')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x8c70('0x12'),_0x153372);}}};
\ No newline at end of file
+var _0xe25d=['intelepeer','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','ENUM','twilio','skebby','connectel','plivo','clickatell','csc','infobip'];(function(_0x51cbc7,_0x70e604){var _0x1ec150=function(_0x5e9d32){while(--_0x5e9d32){_0x51cbc7['push'](_0x51cbc7['shift']());}};_0x1ec150(++_0x70e604);}(_0xe25d,0xcc));var _0xde25=function(_0x2875b7,_0xe7d993){_0x2875b7=_0x2875b7-0x0;var _0x34f543=_0xe25d[_0x2875b7];return _0x34f543;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xde25('0x0'));module[_0xde25('0x1')]={'name':{'type':Sequelize[_0xde25('0x2')],'unique':_0xde25('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xde25('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0xde25('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xde25('0x2')]},'type':{'type':Sequelize[_0xde25('0x4')](_0xde25('0x5'),_0xde25('0x6'),_0xde25('0x7'),'clicksend',_0xde25('0x8'),_0xde25('0x9'),'bandwidth',_0xde25('0xa'),_0xde25('0xb'),_0xde25('0xc'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0xde25('0x2')]},'authToken':{'type':Sequelize[_0xde25('0x2')]},'smsMethod':{'type':Sequelize[_0xde25('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0xde25('0x2')]},'password':{'type':Sequelize[_0xde25('0x2')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0xde25('0x2')]},'accountId':{'type':Sequelize[_0xde25('0x2')]},'senderString':{'type':Sequelize[_0xde25('0x2')]},'deliveryReport':{'type':Sequelize[_0xde25('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0xde25('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xde25('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xde25('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xde25('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xde25('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xde25('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xde25('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xde25('0xe')],'comment':_0xde25('0xf')},'mandatoryDisposition':{'type':Sequelize[_0xde25('0xd')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xe3ac11){if(!_0xe3ac11)this[_0xde25('0x10')]('mandatoryDispositionPauseId',null);this[_0xde25('0x10')](_0xde25('0x11'),_0xe3ac11);}}};
\ No newline at end of file
index 0c12731..af74084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc182=['includeAll','include','findAll','rows','params','intersection','find','create','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','SmsAccountId','getDispositions','findOne','Disposition','order','removeDispositions','CannedAnswer','getAnswers','removeAnswers','ids','notify','sms','SmsApplication','Applications','applications','orderBy','priority','asc','account','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','twilio','from','From','messageId','MessageSid','skebby','sender','connectel','clicksend','message_id','plivo','MessageUUID','results','segmentedMessage','fromNumber','replyMessageId','bandwidth','text','intelepeer','refid','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','list','omit','Contacts','SmsInteraction','spread','interaction','push','close','unmanaged','*,*,*,*','created','SmsMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','to\x20is\x20mandatory','List','DESC','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','infobip','groupName','DELIVERED','clickatell','redif','error_code','message-delivered','statusGet','csc','message-id','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./smsAccount.socket','client','info','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','SmsAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','count'];(function(_0x5a93f0,_0x172b1b){var _0x53844d=function(_0x19ba69){while(--_0x19ba69){_0x5a93f0['push'](_0x5a93f0['shift']());}};_0x53844d(++_0x172b1b);}(_0xc182,0x86));var _0x2c18=function(_0x12c37d,_0x1f14f2){_0x12c37d=_0x12c37d-0x0;var _0x8df8e9=_0xc182[_0x12c37d];return _0x8df8e9;};'use strict';var emlformat=require(_0x2c18('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2c18('0x1'));var jsonpatch=require(_0x2c18('0x2'));var rp=require(_0x2c18('0x3'));var moment=require(_0x2c18('0x4'));var BPromise=require(_0x2c18('0x5'));var Mustache=require(_0x2c18('0x6'));var util=require(_0x2c18('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2c18('0x8'));var ejs=require(_0x2c18('0x9'));var fs=require('fs');var fs_extra=require(_0x2c18('0xa'));var _=require(_0x2c18('0xb'));var squel=require(_0x2c18('0xc'));var crypto=require('crypto');var jsforce=require(_0x2c18('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2c18('0x8'));var querystring=require(_0x2c18('0xe'));var Papa=require(_0x2c18('0xf'));var Redis=require(_0x2c18('0x10'));var authService=require(_0x2c18('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2c18('0x12'));var hardwareService=require(_0x2c18('0x13'));var logger=require(_0x2c18('0x14'))(_0x2c18('0x15'));var utils=require(_0x2c18('0x16'));var config=require(_0x2c18('0x17'));var licenseUtil=require(_0x2c18('0x18'));var db=require(_0x2c18('0x19'))['db'];config['redis']=_[_0x2c18('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2c18('0x1b')]));require(_0x2c18('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x2c18('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x14fecc,_0x144200,_0x50c197,_0x399d18){return new BPromise(function(_0x135b6f,_0x2485b2){var _0x1b6372=_0x399d18||client;return _0x1b6372['request'](_0x14fecc,_0x50c197)['then'](function(_0x230a50){logger[_0x2c18('0x1e')]('SmsAccount,\x20%s,\x20%s',_0x144200,'request\x20sent');logger[_0x2c18('0x1f')](_0x2c18('0x20'),_0x144200,_0x2c18('0x21'),JSON[_0x2c18('0x22')](_0x230a50));if(_0x230a50[_0x2c18('0x23')]){if(_0x230a50[_0x2c18('0x23')][_0x2c18('0x24')]===0x1f4){logger[_0x2c18('0x23')](_0x2c18('0x25'),_0x144200,_0x230a50[_0x2c18('0x23')][_0x2c18('0x26')]);return _0x2485b2(_0x230a50[_0x2c18('0x23')][_0x2c18('0x26')]);}logger[_0x2c18('0x23')](_0x2c18('0x25'),_0x144200,_0x230a50['error'][_0x2c18('0x26')]);return _0x135b6f(_0x230a50[_0x2c18('0x23')][_0x2c18('0x26')]);}else{logger['info'](_0x2c18('0x25'),_0x144200,_0x2c18('0x21'));_0x135b6f(_0x230a50['result'][_0x2c18('0x26')]);}})[_0x2c18('0x27')](function(_0x2a3298){logger[_0x2c18('0x23')]('SmsAccount,\x20%s,\x20%s',_0x144200,_0x2a3298);_0x2485b2(_0x2a3298);});});}function respondWithStatusCode(_0x2e324a,_0x5d91af){_0x5d91af=_0x5d91af||0xcc;return function(_0x2fa039){if(_0x2fa039){return _0x2e324a[_0x2c18('0x28')](_0x5d91af);}return _0x2e324a[_0x2c18('0x29')](_0x5d91af)[_0x2c18('0x2a')]();};}function respondWithResult(_0x4a15b0,_0x4b893b){_0x4b893b=_0x4b893b||0xc8;return function(_0x13f9cf){if(_0x13f9cf){return _0x4a15b0['status'](_0x4b893b)[_0x2c18('0x2b')](_0x13f9cf);}};}function respondWithFilteredResult(_0x36f5ff,_0x49d55e){return function(_0x228d7a){if(_0x228d7a){var _0x4ec63c=typeof _0x49d55e[_0x2c18('0x2c')]===_0x2c18('0x2d')&&typeof _0x49d55e[_0x2c18('0x2e')]===_0x2c18('0x2d');var _0x31f158=_0x228d7a['count'];var _0x29a484=_0x4ec63c?0x0:_0x49d55e[_0x2c18('0x2c')];var _0x31fe51=_0x4ec63c?_0x228d7a['count']:_0x49d55e[_0x2c18('0x2c')]+_0x49d55e[_0x2c18('0x2e')];var _0x26a536;if(_0x31fe51>=_0x31f158){_0x31fe51=_0x31f158;_0x26a536=0xc8;}else{_0x26a536=0xce;}_0x36f5ff['status'](_0x26a536);return _0x36f5ff[_0x2c18('0x2f')](_0x2c18('0x30'),_0x29a484+'-'+_0x31fe51+'/'+_0x31f158)['json'](_0x228d7a);}return null;};}function patchUpdates(_0x401513){return function(_0xfbdcc4){try{jsonpatch[_0x2c18('0x31')](_0xfbdcc4,_0x401513,!![]);}catch(_0x519c42){return BPromise[_0x2c18('0x32')](_0x519c42);}return _0xfbdcc4[_0x2c18('0x33')]();};}function saveUpdates(_0x309be0,_0x323ab6){return function(_0x2b2031){if(_0x2b2031){return _0x2b2031[_0x2c18('0x34')](_0x309be0)[_0x2c18('0x35')](function(_0xccffea){return _0xccffea;});}return null;};}function removeEntity(_0x4383cb,_0x318eb8){return function(_0x5604be){if(_0x5604be){return _0x5604be[_0x2c18('0x36')]()[_0x2c18('0x35')](function(){var _0x5eb93c=_0x5604be[_0x2c18('0x37')]({'plain':!![]});var _0x21ab92=_0x2c18('0x38');return db[_0x2c18('0x39')][_0x2c18('0x36')]({'where':{'type':_0x21ab92,'resourceId':_0x5eb93c['id']}})['then'](function(){return _0x5604be;});})[_0x2c18('0x35')](function(){_0x4383cb[_0x2c18('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf729f2,_0x21bb48){return function(_0x27ffd6){if(!_0x27ffd6){_0xf729f2[_0x2c18('0x28')](0x194);}return _0x27ffd6;};}function handleError(_0x38138d,_0x13844f){_0x13844f=_0x13844f||0x1f4;return function(_0x1f0306){logger[_0x2c18('0x23')](_0x1f0306[_0x2c18('0x3a')]);if(_0x1f0306[_0x2c18('0x3b')]){delete _0x1f0306['name'];}_0x38138d[_0x2c18('0x29')](_0x13844f)[_0x2c18('0x3c')](_0x1f0306);};}exports[_0x2c18('0x3d')]=function(_0x616d39,_0x3f2006){var _0x232bfc={'include':[{'model':db[_0x2c18('0x3e')],'as':_0x2c18('0x3f')}]},_0x247277={},_0x16321d={'count':0x0,'rows':[]};var _0x7daa57=_[_0x2c18('0x40')](db[_0x2c18('0x41')][_0x2c18('0x42')],function(_0x2118d6){return{'name':_0x2118d6[_0x2c18('0x43')],'type':_0x2118d6[_0x2c18('0x44')][_0x2c18('0x45')]};});_0x247277[_0x2c18('0x46')]=_[_0x2c18('0x40')](_0x7daa57,_0x2c18('0x3b'));_0x247277[_0x2c18('0x47')]=_[_0x2c18('0x48')](_0x616d39['query']);_0x247277[_0x2c18('0x49')]=_['intersection'](_0x247277[_0x2c18('0x46')],_0x247277[_0x2c18('0x47')]);_0x232bfc[_0x2c18('0x4a')]=_['intersection'](_0x247277[_0x2c18('0x46')],qs[_0x2c18('0x4b')](_0x616d39[_0x2c18('0x47')][_0x2c18('0x4b')]));_0x232bfc[_0x2c18('0x4a')]=_0x232bfc[_0x2c18('0x4a')][_0x2c18('0x4c')]?_0x232bfc[_0x2c18('0x4a')]:_0x247277[_0x2c18('0x46')];if(!_0x616d39[_0x2c18('0x47')][_0x2c18('0x4d')](_0x2c18('0x4e'))){_0x232bfc[_0x2c18('0x2e')]=qs[_0x2c18('0x2e')](_0x616d39['query'][_0x2c18('0x2e')]);_0x232bfc[_0x2c18('0x2c')]=qs[_0x2c18('0x2c')](_0x616d39[_0x2c18('0x47')][_0x2c18('0x2c')]);}_0x232bfc['order']=qs[_0x2c18('0x4f')](_0x616d39[_0x2c18('0x47')]['sort']);_0x232bfc['where']=qs[_0x2c18('0x49')](_[_0x2c18('0x50')](_0x616d39[_0x2c18('0x47')],_0x247277[_0x2c18('0x49')]),_0x7daa57);if(_0x616d39['query'][_0x2c18('0x51')]){_0x232bfc[_0x2c18('0x52')]=_[_0x2c18('0x53')](_0x232bfc[_0x2c18('0x52')],{'$or':_['map'](_0x7daa57,function(_0x44d520){if(_0x44d520['type']!==_0x2c18('0x54')){var _0xf4e898={};_0xf4e898[_0x44d520[_0x2c18('0x3b')]]={'$like':'%'+_0x616d39[_0x2c18('0x47')]['filter']+'%'};return _0xf4e898;}})});}_0x232bfc=_[_0x2c18('0x53')]({},_0x232bfc,_0x616d39[_0x2c18('0x55')]);var _0x30eefe={'where':_0x232bfc['where']};return db[_0x2c18('0x41')][_0x2c18('0x56')](_0x30eefe)[_0x2c18('0x35')](function(_0x4e45c3){_0x16321d[_0x2c18('0x56')]=_0x4e45c3;if(_0x616d39[_0x2c18('0x47')][_0x2c18('0x57')]){_0x232bfc[_0x2c18('0x58')]=[{'all':!![]}];}return db[_0x2c18('0x41')][_0x2c18('0x59')](_0x232bfc);})[_0x2c18('0x35')](function(_0x375172){_0x16321d[_0x2c18('0x5a')]=_0x375172;return _0x16321d;})[_0x2c18('0x35')](respondWithFilteredResult(_0x3f2006,_0x232bfc))[_0x2c18('0x27')](handleError(_0x3f2006,null));};exports['show']=function(_0x3bf41b,_0x24ccad){var _0x410b22={'raw':![],'where':{'id':_0x3bf41b[_0x2c18('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x2c18('0x3f')}]},_0x5536a0={};_0x5536a0[_0x2c18('0x46')]=_[_0x2c18('0x48')](db['SmsAccount'][_0x2c18('0x42')]);_0x5536a0[_0x2c18('0x47')]=_[_0x2c18('0x48')](_0x3bf41b[_0x2c18('0x47')]);_0x5536a0['filters']=_[_0x2c18('0x5c')](_0x5536a0[_0x2c18('0x46')],_0x5536a0[_0x2c18('0x47')]);_0x410b22[_0x2c18('0x4a')]=_[_0x2c18('0x5c')](_0x5536a0[_0x2c18('0x46')],qs[_0x2c18('0x4b')](_0x3bf41b[_0x2c18('0x47')][_0x2c18('0x4b')]));_0x410b22[_0x2c18('0x4a')]=_0x410b22[_0x2c18('0x4a')][_0x2c18('0x4c')]?_0x410b22[_0x2c18('0x4a')]:_0x5536a0['model'];if(_0x3bf41b[_0x2c18('0x47')]['includeAll']){_0x410b22[_0x2c18('0x58')]=[{'all':!![]}];}_0x410b22=_[_0x2c18('0x53')]({},_0x410b22,_0x3bf41b[_0x2c18('0x55')]);return db['SmsAccount'][_0x2c18('0x5d')](_0x410b22)[_0x2c18('0x35')](handleEntityNotFound(_0x24ccad,null))[_0x2c18('0x35')](respondWithResult(_0x24ccad,null))[_0x2c18('0x27')](handleError(_0x24ccad,null));};exports[_0x2c18('0x5e')]=function(_0x2908fa,_0x4c9db4){return db['SmsAccount'][_0x2c18('0x5e')](_0x2908fa['body'],{})[_0x2c18('0x35')](function(_0x1bd2ce){var _0x4375d6=_0x2908fa[_0x2c18('0x5f')][_0x2c18('0x37')]({'plain':!![]});if(!_0x4375d6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4375d6[_0x2c18('0x60')]===_0x2c18('0x5f')){var _0x180035=_0x1bd2ce[_0x2c18('0x37')]({'plain':!![]});var _0x198575=_0x2c18('0x38');return db[_0x2c18('0x61')][_0x2c18('0x5d')]({'where':{'name':_0x198575,'userProfileId':_0x4375d6[_0x2c18('0x62')]},'raw':!![]})['then'](function(_0x3cb422){if(_0x3cb422&&_0x3cb422['autoAssociation']===0x0){return db[_0x2c18('0x39')][_0x2c18('0x5e')]({'name':_0x180035['name'],'resourceId':_0x180035['id'],'type':_0x3cb422[_0x2c18('0x3b')],'sectionId':_0x3cb422['id']},{})[_0x2c18('0x35')](function(){return _0x1bd2ce;});}else{return _0x1bd2ce;}})[_0x2c18('0x27')](function(_0xec7581){logger[_0x2c18('0x23')](_0x2c18('0x63'),_0xec7581);throw _0xec7581;});}return _0x1bd2ce;})[_0x2c18('0x35')](respondWithResult(_0x4c9db4,0xc9))['catch'](handleError(_0x4c9db4,null));};exports['update']=function(_0x31f85c,_0x50064f){if(_0x31f85c['body']['id']){delete _0x31f85c[_0x2c18('0x64')]['id'];}return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x31f85c[_0x2c18('0x5b')]['id']},'include':[{'model':db[_0x2c18('0x3e')],'as':_0x2c18('0x3f')}]})[_0x2c18('0x35')](handleEntityNotFound(_0x50064f,null))['then'](saveUpdates(_0x31f85c['body'],null))[_0x2c18('0x35')](respondWithResult(_0x50064f,null))[_0x2c18('0x27')](handleError(_0x50064f,null));};exports['destroy']=function(_0x1de649,_0x9b22ac){return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x1de649[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x9b22ac,null))[_0x2c18('0x35')](removeEntity(_0x9b22ac,null))[_0x2c18('0x27')](handleError(_0x9b22ac,null));};exports[_0x2c18('0x65')]=function(_0x1e2ab7,_0x47100){return db[_0x2c18('0x41')][_0x2c18('0x65')]()[_0x2c18('0x35')](respondWithResult(_0x47100,null))['catch'](handleError(_0x47100,null));};exports[_0x2c18('0x66')]=function(_0x4b5f16,_0x9abe42,_0x2ffdda){if(_0x4b5f16[_0x2c18('0x64')]['id']){delete _0x4b5f16[_0x2c18('0x64')]['id'];}return db['SmsAccount'][_0x2c18('0x5d')]({'where':{'id':_0x4b5f16[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x9abe42,null))[_0x2c18('0x35')](function(_0x39a0ad){if(_0x39a0ad){_0x4b5f16[_0x2c18('0x64')][_0x2c18('0x67')]=_0x39a0ad['id'];return db['Disposition'][_0x2c18('0x5e')](_0x4b5f16[_0x2c18('0x64')]);}})[_0x2c18('0x35')](respondWithResult(_0x9abe42,null))[_0x2c18('0x27')](handleError(_0x9abe42,null));};exports[_0x2c18('0x68')]=function(_0x58e6f2,_0x11f03a,_0x20cfbc){var _0x2da3f4={'raw':![],'where':{}};var _0xa42748={};var _0x90addc={'count':0x0,'rows':[]};return db['SmsAccount'][_0x2c18('0x69')]({'where':{'id':_0x58e6f2[_0x2c18('0x5b')]['id']}})['then'](handleEntityNotFound(_0x11f03a,null))['then'](function(_0x1e589c){if(_0x1e589c){_0xa42748[_0x2c18('0x46')]=_['keys'](db[_0x2c18('0x6a')][_0x2c18('0x42')]);_0xa42748['query']=_[_0x2c18('0x48')](_0x58e6f2[_0x2c18('0x47')]);_0xa42748[_0x2c18('0x49')]=_[_0x2c18('0x5c')](_0xa42748['model'],_0xa42748['query']);_0x2da3f4[_0x2c18('0x4a')]=_[_0x2c18('0x5c')](_0xa42748[_0x2c18('0x46')],qs[_0x2c18('0x4b')](_0x58e6f2[_0x2c18('0x47')][_0x2c18('0x4b')]));_0x2da3f4[_0x2c18('0x4a')]=_0x2da3f4['attributes'][_0x2c18('0x4c')]?_0x2da3f4[_0x2c18('0x4a')]:_0xa42748[_0x2c18('0x46')];if(!_0x58e6f2[_0x2c18('0x47')][_0x2c18('0x4d')](_0x2c18('0x4e'))){_0x2da3f4[_0x2c18('0x2e')]=qs[_0x2c18('0x2e')](_0x58e6f2[_0x2c18('0x47')][_0x2c18('0x2e')]);_0x2da3f4[_0x2c18('0x2c')]=qs[_0x2c18('0x2c')](_0x58e6f2[_0x2c18('0x47')][_0x2c18('0x2c')]);}_0x2da3f4[_0x2c18('0x6b')]=qs['sort'](_0x58e6f2[_0x2c18('0x47')]['sort']);_0x2da3f4[_0x2c18('0x52')]=qs[_0x2c18('0x49')](_[_0x2c18('0x50')](_0x58e6f2['query'],_0xa42748[_0x2c18('0x49')]));_0x2da3f4[_0x2c18('0x52')]['SmsAccountId']=_0x1e589c['id'];if(_0x58e6f2['query'][_0x2c18('0x51')]){_0x2da3f4[_0x2c18('0x52')]=_[_0x2c18('0x53')](_0x2da3f4[_0x2c18('0x52')],{'$or':_[_0x2c18('0x40')](_0x2da3f4[_0x2c18('0x4a')],function(_0x2d5885){var _0x3cbb68={};_0x3cbb68[_0x2d5885]={'$like':'%'+_0x58e6f2[_0x2c18('0x47')]['filter']+'%'};return _0x3cbb68;})});}_0x2da3f4=_[_0x2c18('0x53')]({},_0x2da3f4,_0x58e6f2[_0x2c18('0x55')]);return db[_0x2c18('0x6a')][_0x2c18('0x56')]({'where':_0x2da3f4['where']})['then'](function(_0x127b6f){_0x90addc[_0x2c18('0x56')]=_0x127b6f;if(_0x58e6f2['query']['includeAll']){_0x2da3f4[_0x2c18('0x58')]=[{'all':!![]}];}return db[_0x2c18('0x6a')][_0x2c18('0x59')](_0x2da3f4);})[_0x2c18('0x35')](function(_0x23c2df){_0x90addc[_0x2c18('0x5a')]=_0x23c2df;return _0x90addc;});}})[_0x2c18('0x35')](respondWithFilteredResult(_0x11f03a,_0x2da3f4))['catch'](handleError(_0x11f03a,null));};exports[_0x2c18('0x6c')]=function(_0x316a8b,_0x22f252,_0x28c385){return db['SmsAccount'][_0x2c18('0x5d')]({'where':{'id':_0x316a8b[_0x2c18('0x5b')]['id']}})['then'](handleEntityNotFound(_0x22f252,null))[_0x2c18('0x35')](function(_0x41d1c2){if(_0x41d1c2){return _0x41d1c2[_0x2c18('0x6c')](_0x316a8b[_0x2c18('0x47')]['ids']);}})['then'](respondWithStatusCode(_0x22f252,null))[_0x2c18('0x27')](handleError(_0x22f252,null));};exports['addAnswer']=function(_0x318722,_0x240460,_0x4da523){if(_0x318722[_0x2c18('0x64')]['id']){delete _0x318722['body']['id'];}return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x318722[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x240460,null))[_0x2c18('0x35')](function(_0x2d077b){if(_0x2d077b){_0x318722[_0x2c18('0x64')][_0x2c18('0x67')]=_0x2d077b['id'];return db[_0x2c18('0x6d')][_0x2c18('0x5e')](_0x318722[_0x2c18('0x64')]);}})['then'](respondWithResult(_0x240460,null))[_0x2c18('0x27')](handleError(_0x240460,null));};exports[_0x2c18('0x6e')]=function(_0x3cf9c7,_0x4a7066,_0x546610){var _0x42f631={'raw':![],'where':{}};var _0x3f3099={};var _0x239897={'count':0x0,'rows':[]};return db[_0x2c18('0x41')][_0x2c18('0x69')]({'where':{'id':_0x3cf9c7[_0x2c18('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4a7066,null))[_0x2c18('0x35')](function(_0x2f5a8e){if(_0x2f5a8e){_0x3f3099[_0x2c18('0x46')]=_[_0x2c18('0x48')](db[_0x2c18('0x6d')][_0x2c18('0x42')]);_0x3f3099[_0x2c18('0x47')]=_['keys'](_0x3cf9c7[_0x2c18('0x47')]);_0x3f3099[_0x2c18('0x49')]=_[_0x2c18('0x5c')](_0x3f3099[_0x2c18('0x46')],_0x3f3099[_0x2c18('0x47')]);_0x42f631[_0x2c18('0x4a')]=_[_0x2c18('0x5c')](_0x3f3099[_0x2c18('0x46')],qs[_0x2c18('0x4b')](_0x3cf9c7[_0x2c18('0x47')][_0x2c18('0x4b')]));_0x42f631['attributes']=_0x42f631[_0x2c18('0x4a')]['length']?_0x42f631[_0x2c18('0x4a')]:_0x3f3099[_0x2c18('0x46')];if(!_0x3cf9c7[_0x2c18('0x47')]['hasOwnProperty'](_0x2c18('0x4e'))){_0x42f631[_0x2c18('0x2e')]=qs[_0x2c18('0x2e')](_0x3cf9c7[_0x2c18('0x47')][_0x2c18('0x2e')]);_0x42f631[_0x2c18('0x2c')]=qs[_0x2c18('0x2c')](_0x3cf9c7[_0x2c18('0x47')]['offset']);}_0x42f631[_0x2c18('0x6b')]=qs['sort'](_0x3cf9c7[_0x2c18('0x47')][_0x2c18('0x4f')]);_0x42f631[_0x2c18('0x52')]=qs[_0x2c18('0x49')](_[_0x2c18('0x50')](_0x3cf9c7[_0x2c18('0x47')],_0x3f3099[_0x2c18('0x49')]));_0x42f631[_0x2c18('0x52')]['SmsAccountId']=_0x2f5a8e['id'];if(_0x3cf9c7[_0x2c18('0x47')]['filter']){_0x42f631[_0x2c18('0x52')]=_[_0x2c18('0x53')](_0x42f631[_0x2c18('0x52')],{'$or':_[_0x2c18('0x40')](_0x42f631[_0x2c18('0x4a')],function(_0x470438){var _0x3d3618={};_0x3d3618[_0x470438]={'$like':'%'+_0x3cf9c7[_0x2c18('0x47')][_0x2c18('0x51')]+'%'};return _0x3d3618;})});}_0x42f631=_[_0x2c18('0x53')]({},_0x42f631,_0x3cf9c7[_0x2c18('0x55')]);return db[_0x2c18('0x6d')][_0x2c18('0x56')]({'where':_0x42f631[_0x2c18('0x52')]})[_0x2c18('0x35')](function(_0x5e569a){_0x239897[_0x2c18('0x56')]=_0x5e569a;if(_0x3cf9c7['query'][_0x2c18('0x57')]){_0x42f631[_0x2c18('0x58')]=[{'all':!![]}];}return db[_0x2c18('0x6d')]['findAll'](_0x42f631);})['then'](function(_0x1b1851){_0x239897[_0x2c18('0x5a')]=_0x1b1851;return _0x239897;});}})[_0x2c18('0x35')](respondWithFilteredResult(_0x4a7066,_0x42f631))['catch'](handleError(_0x4a7066,null));};exports[_0x2c18('0x6f')]=function(_0x5262d2,_0x19076b,_0x39af0a){return db[_0x2c18('0x41')]['find']({'where':{'id':_0x5262d2['params']['id']}})['then'](handleEntityNotFound(_0x19076b,null))[_0x2c18('0x35')](function(_0x479411){if(_0x479411){return _0x479411[_0x2c18('0x6f')](_0x5262d2[_0x2c18('0x47')][_0x2c18('0x70')]);}})[_0x2c18('0x35')](respondWithStatusCode(_0x19076b,null))[_0x2c18('0x27')](handleError(_0x19076b,null));};exports[_0x2c18('0x71')]=function(_0x2cfd5a,_0x3c515d,_0x44074c){var _0x16c2da={'channel':_0x2c18('0x72')};var _0x35e78e=[];var _0x5adba0=[];var _0x30555f={};return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x2cfd5a[_0x2c18('0x5b')]['id']},'include':[{'model':db[_0x2c18('0x73')],'as':_0x2c18('0x74')}]})[_0x2c18('0x35')](handleEntityNotFound(_0x3c515d,null))[_0x2c18('0x35')](function(_0x747aec){_0x16c2da['account']=_0x747aec;_0x16c2da[_0x2c18('0x75')]=_[_0x2c18('0x76')](_0x747aec['Applications'],[_0x2c18('0x77')],[_0x2c18('0x78')]);if(_0x16c2da[_0x2c18('0x79')][_0x2c18('0x74')]){delete _0x16c2da[_0x2c18('0x79')][_0x2c18('0x74')];}return db[_0x2c18('0x7a')][_0x2c18('0x65')]();})[_0x2c18('0x35')](function(_0x3edde6){if(!_0x3edde6){throw new db[(_0x2c18('0x7b'))][(_0x2c18('0x7c'))](_0x2c18('0x7d'));}_0x35e78e=_[_0x2c18('0x7e')](_[_0x2c18('0x48')](_0x3edde6),[_0x2c18('0x7f'),_0x2c18('0x80')]);_0x5adba0=_['difference'](_[_0x2c18('0x48')](_0x3edde6),[_0x2c18('0x7f'),'updatedAt',_0x2c18('0x81'),'ListId']);_0x16c2da[_0x2c18('0x64')]={'mapKey':'mobile'};if(_0x16c2da[_0x2c18('0x79')][_0x2c18('0x44')]){switch(_0x16c2da[_0x2c18('0x79')][_0x2c18('0x44')]){case _0x2c18('0x82'):_0x16c2da['body'][_0x2c18('0x83')]=_0x2cfd5a['body'][_0x2c18('0x84')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')]['Body'];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x85')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x86')];break;case _0x2c18('0x87'):_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')]='+'+_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x88')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a['body']['text'];break;case _0x2c18('0x89'):_0x16c2da[_0x2c18('0x64')]['from']=_0x2cfd5a['body'][_0x2c18('0x83')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x26')];break;case _0x2c18('0x8a'):_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')]=_0x2cfd5a['body'][_0x2c18('0x83')];_0x16c2da['body'][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x64')];_0x16c2da[_0x2c18('0x64')]['messageId']=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x8b')];break;case _0x2c18('0x8c'):_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x84')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')]['Text'];_0x16c2da['body']['messageId']=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x8d')];break;case'infobip':_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')]='+'+_0x2cfd5a['body'][_0x2c18('0x8e')][0x0]['from'];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x8e')][0x0]['text'];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x85')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x8e')][0x0][_0x2c18('0x85')];break;case'csc':_0x16c2da['body']['from']=_0x2cfd5a[_0x2c18('0x64')]['originatingAddress'];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x8f')][_0x2c18('0x26')];break;case'clickatell':_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x90')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')]['text'];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x85')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x91')];break;case _0x2c18('0x92'):_0x16c2da[_0x2c18('0x64')]['messageId']=_0x2cfd5a[_0x2c18('0x64')][0x0][_0x2c18('0x26')]['id'];_0x16c2da['body'][_0x2c18('0x83')]=_0x2cfd5a[_0x2c18('0x64')][0x0][_0x2c18('0x26')][_0x2c18('0x83')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')][0x0][_0x2c18('0x26')][_0x2c18('0x93')];break;case _0x2c18('0x94'):_0x16c2da['body'][_0x2c18('0x83')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x83')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x26')];_0x16c2da[_0x2c18('0x64')][_0x2c18('0x85')]=_0x2cfd5a[_0x2c18('0x64')][_0x2c18('0x95')];break;}}if(_0x16c2da[_0x2c18('0x64')]['id']){delete _0x16c2da[_0x2c18('0x64')]['id'];}if(_['isNil'](_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')])){throw new db[(_0x2c18('0x7b'))]['ValidationError'](_0x2c18('0x96'));}if(_['isNil'](_0x16c2da[_0x2c18('0x64')][_0x2c18('0x64')])||_0x16c2da['body'][_0x2c18('0x64')]===''){throw new db['Sequelize'][(_0x2c18('0x7c'))](_0x2c18('0x97'));}if(_[_0x2c18('0x98')](_0x16c2da['body'][_0x2c18('0x99')])){throw new db[(_0x2c18('0x7b'))][(_0x2c18('0x7c'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5adba0);}if(!_[_0x2c18('0x9a')](_0x5adba0,_0x16c2da[_0x2c18('0x64')]['mapKey'])){throw new db[(_0x2c18('0x7b'))][(_0x2c18('0x7c'))](_0x2c18('0x9b')+_0x5adba0);}_0x30555f[_0x16c2da[_0x2c18('0x64')][_0x2c18('0x99')]]=_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')];return db[_0x2c18('0x9c')]['find']({'where':{'id':_0x16c2da['account']['ListId']},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x30555f,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x2c18('0x35')](handleEntityNotFound(_0x3c515d,null))[_0x2c18('0x35')](function(_0x172347){if(_0x172347){_0x16c2da[_0x2c18('0x9d')]=_[_0x2c18('0x9e')](_0x172347,['Contacts']);if(_0x172347[_0x2c18('0x9f')][_0x2c18('0x4c')]){return _0x172347[_0x2c18('0x9f')][0x0];}var _0x3ba600=_[_0x2c18('0x1a')](_0x16c2da[_0x2c18('0x64')],{'firstName':_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')],'ListId':_0x172347['id']});_0x3ba600[_0x16c2da[_0x2c18('0x64')][_0x2c18('0x99')]]=_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')];return db[_0x2c18('0x7a')][_0x2c18('0x5e')](_0x3ba600,{'fields':_0x35e78e,'raw':!![]});}})['then'](handleEntityNotFound(_0x3c515d,null))[_0x2c18('0x35')](function(_0x43ad2c){if(_0x43ad2c){_0x16c2da['contact']=_0x43ad2c;var _0x4468f4={'ContactId':_0x43ad2c['id'],'phone':_0x16c2da[_0x2c18('0x64')][_0x2c18('0x83')],'SmsAccountId':_0x2cfd5a['params']['id']};var _0x43ee5f={'ContactId':_0x43ad2c['id'],'SmsAccountId':_0x2cfd5a[_0x2c18('0x5b')]['id'],'closed':![]};return db[_0x2c18('0xa0')][_0x2c18('0x5d')]({'where':_0x43ee5f})[_0x2c18('0x35')](function(_0x5dbbc6){if(_0x5dbbc6){return[_0x5dbbc6,![]];}return db[_0x2c18('0xa0')]['create'](_0x4468f4)['then'](function(_0x238be5){return[_0x238be5,!![]];});});}})[_0x2c18('0xa1')](function(_0x37c71e,_0x30d0bf){_0x16c2da['interaction']=_0x37c71e[_0x2c18('0x37')]({'plain':!![]});_0x16c2da[_0x2c18('0xa2')]['created']=![];if(_0x30d0bf){if(_0x16c2da[_0x2c18('0x79')]['autoclose']){_0x16c2da[_0x2c18('0x75')][_0x2c18('0xa3')]({'id':0x0,'priority':_0x16c2da[_0x2c18('0x75')][_0x2c18('0x4c')]+0x1,'app':_0x2c18('0xa4'),'appdata':_0x2c18('0xa5'),'interval':_0x2c18('0xa6')});}_0x16c2da['interaction'][_0x2c18('0xa7')]=!![];}return db[_0x2c18('0xa8')]['create']({'phone':_0x16c2da[_0x2c18('0x64')]['from'],'messageId':_0x16c2da['body'][_0x2c18('0x85')],'body':_0x16c2da['body'][_0x2c18('0x64')],'SmsAccountId':_0x2cfd5a[_0x2c18('0x5b')]['id'],'SmsInteractionId':_0x37c71e['id'],'direction':'in','ContactId':_0x37c71e['ContactId'],'AttachmentId':_0x16c2da[_0x2c18('0x64')][_0x2c18('0xa9')]});})[_0x2c18('0x35')](function(_0x32d918){_0x16c2da[_0x2c18('0x26')]=_0x32d918;if(_0x16c2da[_0x2c18('0xa2')][_0x2c18('0xaa')]){return db[_0x2c18('0xab')][_0x2c18('0x5d')]({'attributes':['id',_0x2c18('0x3b')],'where':{'id':_0x16c2da['interaction']['UserId']}})['then'](function(_0x392c32){if(_0x392c32){_0x16c2da[_0x2c18('0x75')][_0x2c18('0xac')]({'id':0x0,'priority':0x0,'app':_0x2c18('0xad'),'appdata':_0x392c32['name']+','+(_0x16c2da[_0x2c18('0x79')][_0x2c18('0xae')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x2c18('0xaf'),_0x2c18('0xb0'),_0x16c2da);});}return respondWithRpcPromise(_0x2c18('0xaf'),_0x2c18('0xb0'),_0x16c2da);})[_0x2c18('0x35')](function(_0x4fd2bc){if(_0x4fd2bc){var _0x24d0a3=0xc8;var _0x4f6380=_0x2c18('0xb1');logger[_0x2c18('0x1e')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x4f6380,_0x24d0a3,'entity\x20found');logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x4f6380,_0x24d0a3,_0x2c18('0xb2'),JSON[_0x2c18('0x22')](_0x4fd2bc));if(_0x16c2da[_0x2c18('0x79')][_0x2c18('0x44')]===_0x2c18('0x82')){return _0x3c515d['status'](_0x24d0a3)[_0x2c18('0x2f')](_0x2c18('0xb3'),_0x2c18('0xb4'))['send'](_0x2c18('0xb5'));}else{return _0x3c515d[_0x2c18('0x29')](_0x24d0a3)[_0x2c18('0x2b')](_0x4fd2bc);}}})[_0x2c18('0x27')](handleError(_0x3c515d,null));};exports[_0x2c18('0xb6')]=function(_0x1989c2,_0x508229,_0x56e634){return db[_0x2c18('0x41')]['findOne']({'where':{'id':_0x1989c2['params']['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x508229,null))[_0x2c18('0x35')](function(_0x2149b8){if(_0x2149b8){return db[_0x2c18('0xb7')]['transaction'](function(_0x34414e){return db[_0x2c18('0x73')][_0x2c18('0x36')]({'where':{'SmsAccountId':_0x1989c2[_0x2c18('0x5b')]['id']},'transaction':_0x34414e})['then'](function(_0x2570d2){var _0x1651c5=_[_0x2c18('0x40')](_0x1989c2[_0x2c18('0x64')],function(_0x26dbdd){_0x26dbdd[_0x2c18('0x67')]=_0x1989c2[_0x2c18('0x5b')]['id'];return _0x26dbdd;});return db['SmsApplication']['bulkCreate'](_0x1651c5,{'transaction':_0x34414e});});})[_0x2c18('0x35')](function(){return db[_0x2c18('0x73')]['findAndCountAll']({'where':{'SmsAccountId':_0x1989c2[_0x2c18('0x5b')]['id']},'order':_0x2c18('0x77')});});}})['then'](respondWithResult(_0x508229,null))[_0x2c18('0x27')](handleError(_0x508229,null));};exports['getApplications']=function(_0x507bb6,_0x834d54,_0x4220f8){var _0xe30dee={};var _0x2126c0={};var _0x4ec46a;var _0x381d20;return db[_0x2c18('0x41')]['findOne']({'where':{'id':_0x507bb6['params']['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x834d54,null))[_0x2c18('0x35')](function(_0x51f5fd){if(_0x51f5fd){_0x4ec46a=_0x51f5fd;_0x2126c0[_0x2c18('0x46')]=_[_0x2c18('0x48')](db[_0x2c18('0x73')][_0x2c18('0x42')]);_0x2126c0[_0x2c18('0x47')]=_[_0x2c18('0x48')](_0x507bb6[_0x2c18('0x47')]);_0x2126c0['filters']=_['intersection'](_0x2126c0['model'],_0x2126c0[_0x2c18('0x47')]);_0xe30dee[_0x2c18('0x4a')]=_['intersection'](_0x2126c0['model'],qs['fields'](_0x507bb6[_0x2c18('0x47')][_0x2c18('0x4b')]));_0xe30dee[_0x2c18('0x4a')]=_0xe30dee['attributes'][_0x2c18('0x4c')]?_0xe30dee['attributes']:_0x2126c0[_0x2c18('0x46')];_0xe30dee[_0x2c18('0x6b')]=qs[_0x2c18('0x4f')](_0x507bb6[_0x2c18('0x47')]['sort']);_0xe30dee[_0x2c18('0x52')]=qs[_0x2c18('0x49')](_[_0x2c18('0x50')](_0x507bb6['query'],_0x2126c0['filters']));if(_0x507bb6[_0x2c18('0x47')][_0x2c18('0x51')]){_0xe30dee[_0x2c18('0x52')]=_[_0x2c18('0x53')](_0xe30dee[_0x2c18('0x52')],{'$or':_[_0x2c18('0x40')](_0xe30dee['attributes'],function(_0x209350){var _0x354477={};_0x354477[_0x209350]={'$like':'%'+_0x507bb6[_0x2c18('0x47')][_0x2c18('0x51')]+'%'};return _0x354477;})});}_0xe30dee=_['merge']({},_0xe30dee,_0x507bb6['options']);return _0x4ec46a[_0x2c18('0xb8')](_0xe30dee);}})[_0x2c18('0x35')](function(_0x4f9865){if(_0x4f9865){_0x381d20=_0x4f9865[_0x2c18('0x4c')];if(!_0x507bb6[_0x2c18('0x47')][_0x2c18('0x4d')](_0x2c18('0x4e'))){_0xe30dee['limit']=qs['limit'](_0x507bb6[_0x2c18('0x47')][_0x2c18('0x2e')]);_0xe30dee['offset']=qs[_0x2c18('0x2c')](_0x507bb6[_0x2c18('0x47')][_0x2c18('0x2c')]);}return _0x4ec46a['getApplications'](_0xe30dee);}})[_0x2c18('0x35')](function(_0x267eb3){if(_0x267eb3){return _0x267eb3?{'count':_0x381d20,'rows':_0x267eb3}:null;}})[_0x2c18('0x35')](respondWithResult(_0x834d54,null))['catch'](handleError(_0x834d54,null));};exports[_0x2c18('0xb9')]=function(_0x3c8704,_0x47077e,_0x3059b4){var _0x281afe={'raw':![],'where':{}};var _0x2133ea={};var _0x25ca4c={'count':0x0,'rows':[]};return db[_0x2c18('0x41')][_0x2c18('0x69')]({'where':{'id':_0x3c8704[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x47077e,null))[_0x2c18('0x35')](function(_0x34f5ce){if(_0x34f5ce){_0x2133ea[_0x2c18('0x46')]=_['keys'](db[_0x2c18('0xa0')][_0x2c18('0x42')]);_0x2133ea[_0x2c18('0x47')]=_[_0x2c18('0x48')](_0x3c8704[_0x2c18('0x47')]);_0x2133ea[_0x2c18('0x49')]=_[_0x2c18('0x5c')](_0x2133ea[_0x2c18('0x46')],_0x2133ea['query']);_0x281afe[_0x2c18('0x4a')]=_[_0x2c18('0x5c')](_0x2133ea[_0x2c18('0x46')],qs[_0x2c18('0x4b')](_0x3c8704[_0x2c18('0x47')]['fields']));_0x281afe[_0x2c18('0x4a')]=_0x281afe[_0x2c18('0x4a')][_0x2c18('0x4c')]?_0x281afe[_0x2c18('0x4a')]:_0x2133ea['model'];if(!_0x3c8704[_0x2c18('0x47')][_0x2c18('0x4d')](_0x2c18('0x4e'))){_0x281afe[_0x2c18('0x2e')]=qs['limit'](_0x3c8704[_0x2c18('0x47')][_0x2c18('0x2e')]);_0x281afe[_0x2c18('0x2c')]=qs[_0x2c18('0x2c')](_0x3c8704[_0x2c18('0x47')]['offset']);}_0x281afe[_0x2c18('0x6b')]=qs['sort'](_0x3c8704[_0x2c18('0x47')]['sort']);_0x281afe['where']=qs[_0x2c18('0x49')](_[_0x2c18('0x50')](_0x3c8704[_0x2c18('0x47')],_0x2133ea['filters']));_0x281afe[_0x2c18('0x52')][_0x2c18('0x67')]=_0x34f5ce['id'];if(_0x3c8704['query'][_0x2c18('0x51')]){_0x281afe[_0x2c18('0x52')]=_[_0x2c18('0x53')](_0x281afe[_0x2c18('0x52')],{'$or':_[_0x2c18('0x40')](_0x281afe[_0x2c18('0x4a')],function(_0x34612f){var _0x24860f={};_0x24860f[_0x34612f]={'$like':'%'+_0x3c8704['query']['filter']+'%'};return _0x24860f;})});}_0x281afe=_[_0x2c18('0x53')]({},_0x281afe,_0x3c8704[_0x2c18('0x55')]);return db[_0x2c18('0xa0')]['count']({'where':_0x281afe[_0x2c18('0x52')]})[_0x2c18('0x35')](function(_0x186f0c){_0x25ca4c[_0x2c18('0x56')]=_0x186f0c;if(_0x3c8704[_0x2c18('0x47')]['includeAll']){_0x281afe['include']=[{'model':db[_0x2c18('0x7a')],'as':_0x2c18('0xba'),'required':![]},{'model':db[_0x2c18('0xab')],'as':_0x2c18('0xbb'),'attributes':[_0x2c18('0x3b'),_0x2c18('0xbc'),_0x2c18('0xbd')],'required':![]},{'model':db[_0x2c18('0xbe')],'as':_0x2c18('0xbf'),'attributes':['id','name','color'],'where':_0x3c8704[_0x2c18('0x47')][_0x2c18('0xc0')]?{'id':_0x3c8704['query'][_0x2c18('0xc0')]}:undefined,'required':_0x3c8704[_0x2c18('0x47')][_0x2c18('0xc0')]?!![]:![]}];}return db[_0x2c18('0xa0')][_0x2c18('0x59')](_0x281afe);})[_0x2c18('0x35')](function(_0x20b569){_0x25ca4c['rows']=_0x20b569;return _0x25ca4c;});}})[_0x2c18('0x35')](respondWithFilteredResult(_0x47077e,_0x281afe))[_0x2c18('0x27')](handleError(_0x47077e,null));};exports[_0x2c18('0x3c')]=function(_0x2dfb68,_0x56ce36,_0x1beb07){var _0x1688b5,_0x6ac554,_0x277093;if(_[_0x2c18('0x98')](_0x2dfb68['body'][_0x2c18('0x64')])||_0x2dfb68['body'][_0x2c18('0x64')]===''){throw new db[(_0x2c18('0x7b'))]['ValidationError'](_0x2c18('0x97'));}if(_[_0x2c18('0x98')](_0x2dfb68[_0x2c18('0x64')]['to'])){throw new db[(_0x2c18('0x7b'))][(_0x2c18('0x7c'))](_0x2c18('0xc1'));}_0x1688b5=_0x2dfb68[_0x2c18('0x64')]['to'];return db['SmsAccount'][_0x2c18('0x5d')]({'where':{'id':_0x2dfb68[_0x2c18('0x5b')]['id']},'include':[{'model':db[_0x2c18('0x9c')],'as':_0x2c18('0xc2'),'include':[{'model':db[_0x2c18('0x7a')],'as':_0x2c18('0x9f'),'where':{'mobile':_0x1688b5},'limit':0x1,'order':[[_0x2c18('0x80'),_0x2c18('0xc3')]]}]}]})[_0x2c18('0x35')](handleEntityNotFound(_0x56ce36,null))[_0x2c18('0x35')](function(_0x4bc62f){if(_0x4bc62f&&_0x4bc62f[_0x2c18('0xc2')]){_0x6ac554=_0x4bc62f[_0x2c18('0x37')]({'plain':!![]});if(_0x6ac554['List']&&_0x6ac554[_0x2c18('0xc2')]['Contacts']['length']){return _0x6ac554['List'][_0x2c18('0x9f')][0x0];}return db[_0x2c18('0x7a')][_0x2c18('0x5e')](_[_0x2c18('0x1a')](_0x2dfb68[_0x2c18('0x64')],{'firstName':_0x1688b5,'mobile':_0x1688b5,'phone':_0x1688b5,'ListId':_0x6ac554['ListId']}));}})[_0x2c18('0x35')](handleEntityNotFound(_0x56ce36,null))[_0x2c18('0x35')](function(_0xfc7d49){if(_0xfc7d49){_0x277093=_0xfc7d49;return db[_0x2c18('0xa0')]['find']({'where':{'ContactId':_0x277093['id'],'closed':![],'SmsAccountId':_0x6ac554['id']}})[_0x2c18('0x35')](function(_0xb4ea05){if(_0xb4ea05){return[_0xb4ea05,![]];}return db[_0x2c18('0xa0')][_0x2c18('0x5e')]({'UserId':_0x2dfb68[_0x2c18('0x5f')]['id'],'ContactId':_0x277093['id'],'SmsAccountId':_0x6ac554['id'],'phone':_0x1688b5,'firstMsgDirection':'out','Messages':[_[_0x2c18('0x53')](_0x2dfb68[_0x2c18('0x64')],{'read':![],'body':_0x2dfb68['body'][_0x2c18('0x64')],'phone':_0x1688b5,'SmsAccountId':_0x6ac554['id'],'UserId':_0x2dfb68[_0x2c18('0x5f')]['id'],'ContactId':_0x277093['id']})]},{'include':[{'model':db[_0x2c18('0xa8')],'as':_0x2c18('0xc4')}]})[_0x2c18('0x35')](function(_0x236431){return[_0x236431,!![]];});});}})[_0x2c18('0xa1')](function(_0x549c89,_0x134ff3){if(_0x134ff3){return _0x549c89;}return db[_0x2c18('0xa8')][_0x2c18('0x5e')](_[_0x2c18('0x53')](_0x2dfb68[_0x2c18('0x64')],{'read':![],'body':_0x2dfb68['body'][_0x2c18('0x64')],'phone':_0x1688b5,'SmsAccountId':_0x6ac554['id'],'SmsInteractionId':_0x549c89['id'],'UserId':_0x2dfb68[_0x2c18('0x5f')]['id'],'ContactId':_0x277093['id']}))[_0x2c18('0x35')](function(_0x155aa4){_0x549c89['dataValues']['Messages']=[];_0x549c89[_0x2c18('0xc5')]['Messages'][_0x2c18('0xa3')](_0x155aa4[_0x2c18('0xc5')]);return _0x549c89;});})['then'](respondWithResult(_0x56ce36,null))[_0x2c18('0x27')](handleError(_0x56ce36,null));};exports[_0x2c18('0x29')]=function(_0x5dd238,_0x5382bf,_0x3586dc){if(_0x5dd238[_0x2c18('0x64')]['id']){delete _0x5dd238[_0x2c18('0x64')]['id'];}var _0x399cff,_0x3dc96a,_0x4a2cc5;return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x5dd238[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x5382bf,null))[_0x2c18('0x35')](function(_0x277adb){if(_0x277adb){_0x4a2cc5=_0x277adb;logger[_0x2c18('0x1f')](_0x2c18('0x20'),'status',_0x2c18('0xc6'),_0x277adb[_0x2c18('0x44')],util[_0x2c18('0xc7')](_0x5dd238[_0x2c18('0x64')],{'showHidden':![],'depth':null}));switch(_0x277adb[_0x2c18('0x44')]){case'skebby':if(_0x5dd238[_0x2c18('0x64')][_0x2c18('0xc8')]&&_0x5dd238[_0x2c18('0x64')]['status']){_0x3dc96a=_0x5dd238[_0x2c18('0x64')]['status'];return db[_0x2c18('0xa8')]['find']({'where':{'messageId':_0x5dd238[_0x2c18('0x64')]['skebby_dispatch_id']}});}break;case _0x2c18('0x89'):if(_0x5dd238[_0x2c18('0x64')]['requestid']&&_0x5dd238['body'][_0x2c18('0xc9')]){_0x3dc96a=_0x5dd238[_0x2c18('0x64')][_0x2c18('0xc9')];return db[_0x2c18('0xa8')][_0x2c18('0x5d')]({'where':{'messageId':_0x5dd238[_0x2c18('0x64')][_0x2c18('0xca')]}});}break;case'clicksend':if(_0x5dd238['body']['message_id']&&_0x5dd238[_0x2c18('0x64')]['status_code']){_0x3dc96a=_0x5dd238['body'][_0x2c18('0xcb')];return db['SmsMessage'][_0x2c18('0x5d')]({'where':{'messageId':_0x5dd238[_0x2c18('0x64')][_0x2c18('0x8b')]}});}break;case _0x2c18('0xcc'):var _0x431cbd=_0x5dd238[_0x2c18('0x64')][_0x2c18('0x8e')][0x0];if(_0x431cbd[_0x2c18('0x85')]&&_0x431cbd[_0x2c18('0x29')][_0x2c18('0xcd')]===_0x2c18('0xce')){_0x3dc96a=_0x431cbd[_0x2c18('0x29')][_0x2c18('0xcd')];return db[_0x2c18('0xa8')]['find']({'where':{'messageId':_0x431cbd[_0x2c18('0x85')]}});}break;case _0x2c18('0xcf'):if(_0x5dd238[_0x2c18('0x64')]['messageId']&&_0x5dd238[_0x2c18('0x64')][_0x2c18('0x29')]){_0x3dc96a=_0x5dd238[_0x2c18('0x64')]['status'];return db['SmsMessage'][_0x2c18('0x5d')]({'where':{'messageId':_0x5dd238['body'][_0x2c18('0x85')]}});}break;case _0x2c18('0x92'):if(_0x5dd238[_0x2c18('0x64')][0x0][_0x2c18('0x26')]['id']){_0x3dc96a=_0x5dd238[_0x2c18('0x64')][0x0]['type'];return db[_0x2c18('0xa8')][_0x2c18('0x5d')]({'where':{'messageId':_0x5dd238[_0x2c18('0x64')][0x0][_0x2c18('0x26')]['id']}});}break;case _0x2c18('0x94'):if(_0x5dd238[_0x2c18('0x64')][_0x2c18('0xd0')]&&_0x5dd238[_0x2c18('0x64')][_0x2c18('0x29')]){_0x3dc96a=_0x5dd238[_0x2c18('0x64')][_0x2c18('0x29')];return db[_0x2c18('0xa8')]['find']({'where':{'messageId':_0x5dd238[_0x2c18('0x64')][_0x2c18('0xd0')]}});}break;}}})['then'](handleEntityNotFound(_0x5382bf,null))[_0x2c18('0x35')](function(_0x5bcf34){if(_0x5bcf34){_0x399cff=_0x5bcf34;switch(_0x4a2cc5['type']){case _0x2c18('0x87'):if(_0x3dc96a===_0x2c18('0xce')){return _0x399cff[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')](_0x2c18('0x20'),_0x2c18('0x29'),'skebby',util['inspect'](_0x5dd238[_0x2c18('0x64')],{'showHidden':![],'depth':null}));}break;case _0x2c18('0x89'):if(_0x3dc96a==='1'){return _0x399cff[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')](_0x2c18('0x20'),_0x2c18('0x29'),_0x2c18('0x87'),util[_0x2c18('0xc7')](_0x5dd238[_0x2c18('0x64')],{'showHidden':![],'depth':null}));}break;case _0x2c18('0x8a'):if(!_0x5dd238['body'][_0x2c18('0xd1')]&&_0x3dc96a>=0xc8&&_0x3dc96a<=0xce){return _0x399cff[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')](_0x2c18('0x20'),_0x2c18('0x29'),_0x2c18('0x8a'),util[_0x2c18('0xc7')](_0x5dd238[_0x2c18('0x64')],{'showHidden':![],'depth':null}));}break;case _0x2c18('0xcc'):var _0x4007d1=_0x5dd238[_0x2c18('0x64')][_0x2c18('0x8e')][0x0];if(_0x4007d1[_0x2c18('0x29')]['groupName']===_0x2c18('0xce')){return _0x399cff['update']({'read':!![]});}else{logger[_0x2c18('0x23')](_0x2c18('0x20'),_0x2c18('0x29'),_0x2c18('0xcc'),util[_0x2c18('0xc7')](_0x5dd238['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x3dc96a=='DELIVERED_TO_GATEWAY'||_0x3dc96a=='RECEIVED_BY_RECIPIENT'){return _0x399cff[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2c18('0x29'),_0x2c18('0xcf'),util[_0x2c18('0xc7')](_0x5dd238[_0x2c18('0x64')],{'showHidden':![],'depth':null}));}break;case _0x2c18('0x92'):if(_0x3dc96a==_0x2c18('0xd2')){return _0x399cff[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x2c18('0x92'),util[_0x2c18('0xc7')](_0x5dd238[_0x2c18('0x64')],{'showHidden':![],'depth':null}));}break;case _0x2c18('0x94'):if(_0x3dc96a==='DELIVRD'||_0x3dc96a==='ACCEPTD'){return _0x399cff[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')](_0x2c18('0x20'),_0x2c18('0x29'),_0x2c18('0x94'),util[_0x2c18('0xc7')](_0x5dd238['body'],{'showHidden':![],'depth':null}));}break;}return _0x399cff;}})[_0x2c18('0x35')](respondWithResult(_0x5382bf,null))[_0x2c18('0x27')](handleError(_0x5382bf,null));};exports[_0x2c18('0xd3')]=function(_0x59474d,_0x59d690,_0x41b192){var _0xfe1d71,_0x46018e,_0x16aa9f;return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x59474d[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x59d690,null))[_0x2c18('0x35')](function(_0xbe56f1){if(_0xbe56f1){_0x16aa9f=_0xbe56f1;logger[_0x2c18('0x1f')](_0x2c18('0x20'),_0x2c18('0x29'),_0x2c18('0xc6'),_0xbe56f1['type'],util[_0x2c18('0xc7')](_0x59474d['query'],{'showHidden':![],'depth':null}));switch(_0xbe56f1[_0x2c18('0x44')]){case _0x2c18('0xd4'):if(_0x59474d[_0x2c18('0x47')][_0x2c18('0xd5')]&&_0x59474d[_0x2c18('0x47')]['state']){_0x46018e=_0x59474d['query']['state'];return db[_0x2c18('0xa8')][_0x2c18('0x5d')]({'where':{'messageId':_0x59474d[_0x2c18('0x47')][_0x2c18('0xd5')]}});}break;}}})[_0x2c18('0x35')](handleEntityNotFound(_0x59d690,null))[_0x2c18('0x35')](function(_0x5da62a){if(_0x5da62a){_0xfe1d71=_0x5da62a;switch(_0x16aa9f[_0x2c18('0x44')]){case _0x2c18('0xd4'):if(_0x46018e==='2'||_0x46018e==='6'){return _0xfe1d71[_0x2c18('0x34')]({'read':!![]});}else{logger[_0x2c18('0x23')](_0x2c18('0x20'),_0x2c18('0x29'),_0x2c18('0xd4'),util[_0x2c18('0xc7')](_0x59474d[_0x2c18('0x47')],{'showHidden':![],'depth':null}));};break;}return _0xfe1d71;}})['then'](respondWithResult(_0x59d690,null))[_0x2c18('0x27')](handleError(_0x59d690,null));};exports[_0x2c18('0xd6')]=function(_0x590767,_0x47cb6b,_0xb66d30){return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x590767[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x47cb6b,null))[_0x2c18('0x35')](function(_0x426c2c){if(_0x426c2c){return _0x426c2c[_0x2c18('0xd6')](_0x590767[_0x2c18('0x64')][_0x2c18('0x70')],_[_0x2c18('0x9e')](_0x590767['body'],[_0x2c18('0x70'),'id'])||{})[_0x2c18('0xa1')](function(_0x45e018){for(var _0x10e311=0x0;_0x10e311<_0x590767['body']['ids'][_0x2c18('0x4c')];_0x10e311+=0x1){socket[_0x2c18('0xd7')](_0x2c18('0xd8'),{'UserId':Number(_0x590767[_0x2c18('0x64')][_0x2c18('0x70')][_0x10e311]),'SmsAccountId':Number(_0x590767['params']['id'])});}return _0x45e018;});}})[_0x2c18('0x35')](respondWithResult(_0x47cb6b,null))[_0x2c18('0x27')](handleError(_0x47cb6b,null));};exports[_0x2c18('0xd9')]=function(_0x9f0ed0,_0x1ed789,_0xfebc5){return db[_0x2c18('0x41')][_0x2c18('0x5d')]({'where':{'id':_0x9f0ed0[_0x2c18('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1ed789,null))[_0x2c18('0x35')](function(_0x1ac699){if(_0x1ac699){return _0x1ac699[_0x2c18('0xd9')](_0x9f0ed0[_0x2c18('0x47')]['ids'])[_0x2c18('0x35')](function(){if(_[_0x2c18('0xda')](_0x9f0ed0[_0x2c18('0x47')][_0x2c18('0x70')])){for(var _0x3cc697=0x0;_0x3cc697<_0x9f0ed0[_0x2c18('0x47')][_0x2c18('0x70')][_0x2c18('0x4c')];_0x3cc697+=0x1){socket[_0x2c18('0xd7')]('userSmsAccount:remove',{'UserId':Number(_0x9f0ed0['query'][_0x2c18('0x70')][_0x3cc697]),'SmsAccountId':Number(_0x9f0ed0[_0x2c18('0x5b')]['id'])});}}else{socket['emit'](_0x2c18('0xdb'),{'UserId':Number(_0x9f0ed0[_0x2c18('0x47')][_0x2c18('0x70')]),'SmsAccountId':Number(_0x9f0ed0['params']['id'])});}});}})[_0x2c18('0x35')](respondWithStatusCode(_0x1ed789,null))[_0x2c18('0x27')](handleError(_0x1ed789,null));};exports['getAgents']=function(_0x47994a,_0x430807,_0xc77d0){var _0x5265e1={};var _0x33a162={};var _0x5c1196;var _0x12cb58;return db[_0x2c18('0x41')][_0x2c18('0x69')]({'where':{'id':_0x47994a[_0x2c18('0x5b')]['id']}})[_0x2c18('0x35')](handleEntityNotFound(_0x430807,null))[_0x2c18('0x35')](function(_0x166c33){if(_0x166c33){_0x5c1196=_0x166c33;_0x33a162['model']=_[_0x2c18('0x48')](db[_0x2c18('0xab')][_0x2c18('0x42')]);_0x33a162[_0x2c18('0x47')]=_[_0x2c18('0x48')](_0x47994a[_0x2c18('0x47')]);_0x33a162[_0x2c18('0x49')]=_[_0x2c18('0x5c')](_0x33a162[_0x2c18('0x46')],_0x33a162[_0x2c18('0x47')]);_0x5265e1[_0x2c18('0x4a')]=_['intersection'](_0x33a162[_0x2c18('0x46')],qs[_0x2c18('0x4b')](_0x47994a[_0x2c18('0x47')]['fields']));_0x5265e1[_0x2c18('0x4a')]=_0x5265e1[_0x2c18('0x4a')][_0x2c18('0x4c')]?_0x5265e1[_0x2c18('0x4a')]:_0x33a162[_0x2c18('0x46')];_0x5265e1['order']=qs[_0x2c18('0x4f')](_0x47994a[_0x2c18('0x47')][_0x2c18('0x4f')]);_0x5265e1['where']=qs[_0x2c18('0x49')](_[_0x2c18('0x50')](_0x47994a[_0x2c18('0x47')],_0x33a162[_0x2c18('0x49')]));if(_0x47994a[_0x2c18('0x47')][_0x2c18('0x51')]){_0x5265e1[_0x2c18('0x52')]=_[_0x2c18('0x53')](_0x5265e1[_0x2c18('0x52')],{'$or':_['map'](_0x5265e1[_0x2c18('0x4a')],function(_0x52a3e6){var _0xcd53aa={};_0xcd53aa[_0x52a3e6]={'$like':'%'+_0x47994a['query'][_0x2c18('0x51')]+'%'};return _0xcd53aa;})});}_0x5265e1=_[_0x2c18('0x53')]({},_0x5265e1,_0x47994a[_0x2c18('0x55')]);return _0x5c1196[_0x2c18('0xdc')](_0x5265e1);}})[_0x2c18('0x35')](function(_0x2ff083){if(_0x2ff083){_0x12cb58=_0x2ff083[_0x2c18('0x4c')];if(!_0x47994a[_0x2c18('0x47')][_0x2c18('0x4d')](_0x2c18('0x4e'))){_0x5265e1[_0x2c18('0x2e')]=qs[_0x2c18('0x2e')](_0x47994a[_0x2c18('0x47')][_0x2c18('0x2e')]);_0x5265e1['offset']=qs[_0x2c18('0x2c')](_0x47994a[_0x2c18('0x47')][_0x2c18('0x2c')]);}return _0x5c1196[_0x2c18('0xdc')](_0x5265e1);}})['then'](function(_0x53397b){if(_0x53397b){return _0x53397b?{'count':_0x12cb58,'rows':_0x53397b}:null;}})['then'](respondWithResult(_0x430807,null))[_0x2c18('0x27')](handleError(_0x430807,null));};
\ No newline at end of file
+var _0x5db5=['info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','error','message','catch','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','SmsAccounts','UserProfileResource','sendStatus','stack','name','send','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','type','model','keys','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','rows','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','params','describe','addDisposition','Disposition','getDispositions','findOne','order','pick','SmsAccountId','removeDispositions','ids','addAnswer','CannedAnswer','hasOwnProperty','removeAnswers','notify','account','orderBy','Applications','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','ListId','mobile','twilio','From','Body','messageId','MessageSid','from','sender','text','message_id','plivo','Text','infobip','results','csc','originatingAddress','clickatell','replyMessageId','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','updatedAt','Contacts','defaults','contact','SmsInteraction','interaction','created','applications','unmanaged','*,*,*,*','SmsMessage','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','SmsApplication','bulkCreate','findAndCountAll','getApplications','getInteractions','User','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','DESC','out','spread','dataValues','Messages','push','inspect','skebby','skebby_dispatch_id','connectel','statusInt','requestid','clicksend','status_code','groupName','DELIVERED','redif','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','omit','userSmsAccount:save','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','util','path','to-csv','ejs','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./smsAccount.socket','register','jayson/promise','client','http','request','then'];(function(_0x16e47f,_0x183f9b){var _0x249258=function(_0x2dda6a){while(--_0x2dda6a){_0x16e47f['push'](_0x16e47f['shift']());}};_0x249258(++_0x183f9b);}(_0x5db5,0xbe));var _0x55db=function(_0x1bdbbd,_0x5a2bbb){_0x1bdbbd=_0x1bdbbd-0x0;var _0x48619e=_0x5db5[_0x1bdbbd];return _0x48619e;};'use strict';var emlformat=require(_0x55db('0x0'));var rimraf=require(_0x55db('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x55db('0x2'));var rp=require('request-promise');var moment=require(_0x55db('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x55db('0x4'));var path=require(_0x55db('0x5'));var sox=require('sox');var csv=require(_0x55db('0x6'));var ejs=require(_0x55db('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x55db('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x55db('0x6'));var querystring=require(_0x55db('0x9'));var Papa=require(_0x55db('0xa'));var Redis=require('ioredis');var authService=require(_0x55db('0xb'));var qs=require(_0x55db('0xc'));var as=require(_0x55db('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x55db('0xe'))('api');var utils=require(_0x55db('0xf'));var config=require(_0x55db('0x10'));var licenseUtil=require(_0x55db('0x11'));var db=require(_0x55db('0x12'))['db'];config['redis']=_['defaults'](config[_0x55db('0x13')],{'host':_0x55db('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x55db('0x13')]));require(_0x55db('0x15'))[_0x55db('0x16')](socket);var jayson=require(_0x55db('0x17'));var client=jayson[_0x55db('0x18')][_0x55db('0x19')]({'port':0x232c});function respondWithRpcPromise(_0x4f3810,_0x5ddf16,_0x3ece16,_0x40da9d){return new BPromise(function(_0x3950cd,_0x21a0a7){var _0x308fb9=_0x40da9d||client;return _0x308fb9[_0x55db('0x1a')](_0x4f3810,_0x3ece16)[_0x55db('0x1b')](function(_0x2c9b44){logger[_0x55db('0x1c')](_0x55db('0x1d'),_0x5ddf16,_0x55db('0x1e'));logger['debug'](_0x55db('0x1f'),_0x5ddf16,_0x55db('0x1e'),JSON['stringify'](_0x2c9b44));if(_0x2c9b44[_0x55db('0x20')]){if(_0x2c9b44['error']['code']===0x1f4){logger[_0x55db('0x20')](_0x55db('0x1d'),_0x5ddf16,_0x2c9b44[_0x55db('0x20')][_0x55db('0x21')]);return _0x21a0a7(_0x2c9b44['error'][_0x55db('0x21')]);}logger[_0x55db('0x20')](_0x55db('0x1d'),_0x5ddf16,_0x2c9b44[_0x55db('0x20')]['message']);return _0x3950cd(_0x2c9b44[_0x55db('0x20')][_0x55db('0x21')]);}else{logger[_0x55db('0x1c')]('SmsAccount,\x20%s,\x20%s',_0x5ddf16,_0x55db('0x1e'));_0x3950cd(_0x2c9b44['result']['message']);}})[_0x55db('0x22')](function(_0x584f21){logger[_0x55db('0x20')](_0x55db('0x1d'),_0x5ddf16,_0x584f21);_0x21a0a7(_0x584f21);});});}function respondWithStatusCode(_0x5010b5,_0x408d4a){_0x408d4a=_0x408d4a||0xcc;return function(_0x238a54){if(_0x238a54){return _0x5010b5['sendStatus'](_0x408d4a);}return _0x5010b5[_0x55db('0x23')](_0x408d4a)[_0x55db('0x24')]();};}function respondWithResult(_0x547027,_0x273d33){_0x273d33=_0x273d33||0xc8;return function(_0x206010){if(_0x206010){return _0x547027[_0x55db('0x23')](_0x273d33)[_0x55db('0x25')](_0x206010);}};}function respondWithFilteredResult(_0x11e599,_0x33d23f){return function(_0x123b98){if(_0x123b98){var _0x185f42=typeof _0x33d23f['offset']===_0x55db('0x26')&&typeof _0x33d23f['limit']==='undefined';var _0x3650a7=_0x123b98['count'];var _0x412368=_0x185f42?0x0:_0x33d23f[_0x55db('0x27')];var _0x418fe3=_0x185f42?_0x123b98[_0x55db('0x28')]:_0x33d23f[_0x55db('0x27')]+_0x33d23f[_0x55db('0x29')];var _0x1c498c;if(_0x418fe3>=_0x3650a7){_0x418fe3=_0x3650a7;_0x1c498c=0xc8;}else{_0x1c498c=0xce;}_0x11e599[_0x55db('0x23')](_0x1c498c);return _0x11e599[_0x55db('0x2a')](_0x55db('0x2b'),_0x412368+'-'+_0x418fe3+'/'+_0x3650a7)[_0x55db('0x25')](_0x123b98);}return null;};}function patchUpdates(_0x212cbb){return function(_0xcb8fe){try{jsonpatch[_0x55db('0x2c')](_0xcb8fe,_0x212cbb,!![]);}catch(_0x509e93){return BPromise[_0x55db('0x2d')](_0x509e93);}return _0xcb8fe[_0x55db('0x2e')]();};}function saveUpdates(_0x576dfa,_0x1d8fa1){return function(_0xd4cf73){if(_0xd4cf73){return _0xd4cf73[_0x55db('0x2f')](_0x576dfa)[_0x55db('0x1b')](function(_0x50ddf3){return _0x50ddf3;});}return null;};}function removeEntity(_0x15323e,_0x491f0b){return function(_0x50360b){if(_0x50360b){return _0x50360b[_0x55db('0x30')]()['then'](function(){var _0x3f9141=_0x50360b[_0x55db('0x31')]({'plain':!![]});var _0x2afe4b=_0x55db('0x32');return db[_0x55db('0x33')][_0x55db('0x30')]({'where':{'type':_0x2afe4b,'resourceId':_0x3f9141['id']}})[_0x55db('0x1b')](function(){return _0x50360b;});})['then'](function(){_0x15323e[_0x55db('0x23')](0xcc)[_0x55db('0x24')]();});}};}function handleEntityNotFound(_0x44a998,_0x43a0cd){return function(_0x3fed53){if(!_0x3fed53){_0x44a998[_0x55db('0x34')](0x194);}return _0x3fed53;};}function handleError(_0x5dee79,_0x4814f2){_0x4814f2=_0x4814f2||0x1f4;return function(_0x5c1fc2){logger[_0x55db('0x20')](_0x5c1fc2[_0x55db('0x35')]);if(_0x5c1fc2[_0x55db('0x36')]){delete _0x5c1fc2[_0x55db('0x36')];}_0x5dee79[_0x55db('0x23')](_0x4814f2)[_0x55db('0x37')](_0x5c1fc2);};}exports['index']=function(_0x5dc47f,_0x2cc94d){var _0x58d872={'include':[{'model':db[_0x55db('0x38')],'as':_0x55db('0x39')}]},_0x2ed5b3={},_0x169037={'count':0x0,'rows':[]};var _0x2a1ab1=_[_0x55db('0x3a')](db[_0x55db('0x3b')][_0x55db('0x3c')],function(_0x42a122){return{'name':_0x42a122['fieldName'],'type':_0x42a122[_0x55db('0x3d')]['key']};});_0x2ed5b3[_0x55db('0x3e')]=_[_0x55db('0x3a')](_0x2a1ab1,_0x55db('0x36'));_0x2ed5b3['query']=_[_0x55db('0x3f')](_0x5dc47f[_0x55db('0x40')]);_0x2ed5b3['filters']=_[_0x55db('0x41')](_0x2ed5b3[_0x55db('0x3e')],_0x2ed5b3['query']);_0x58d872[_0x55db('0x42')]=_[_0x55db('0x41')](_0x2ed5b3['model'],qs[_0x55db('0x43')](_0x5dc47f[_0x55db('0x40')][_0x55db('0x43')]));_0x58d872[_0x55db('0x42')]=_0x58d872[_0x55db('0x42')][_0x55db('0x44')]?_0x58d872[_0x55db('0x42')]:_0x2ed5b3[_0x55db('0x3e')];if(!_0x5dc47f[_0x55db('0x40')]['hasOwnProperty'](_0x55db('0x45'))){_0x58d872[_0x55db('0x29')]=qs['limit'](_0x5dc47f[_0x55db('0x40')]['limit']);_0x58d872[_0x55db('0x27')]=qs['offset'](_0x5dc47f['query']['offset']);}_0x58d872['order']=qs[_0x55db('0x46')](_0x5dc47f[_0x55db('0x40')][_0x55db('0x46')]);_0x58d872[_0x55db('0x47')]=qs[_0x55db('0x48')](_['pick'](_0x5dc47f[_0x55db('0x40')],_0x2ed5b3[_0x55db('0x48')]),_0x2a1ab1);if(_0x5dc47f[_0x55db('0x40')][_0x55db('0x49')]){_0x58d872['where']=_[_0x55db('0x4a')](_0x58d872[_0x55db('0x47')],{'$or':_[_0x55db('0x3a')](_0x2a1ab1,function(_0x989dc4){if(_0x989dc4[_0x55db('0x3d')]!==_0x55db('0x4b')){var _0x4de5aa={};_0x4de5aa[_0x989dc4[_0x55db('0x36')]]={'$like':'%'+_0x5dc47f[_0x55db('0x40')]['filter']+'%'};return _0x4de5aa;}})});}_0x58d872=_['merge']({},_0x58d872,_0x5dc47f[_0x55db('0x4c')]);var _0x4993e3={'where':_0x58d872['where']};return db[_0x55db('0x3b')]['count'](_0x4993e3)['then'](function(_0x42fad8){_0x169037[_0x55db('0x28')]=_0x42fad8;if(_0x5dc47f['query']['includeAll']){_0x58d872[_0x55db('0x4d')]=[{'all':!![]}];}return db[_0x55db('0x3b')][_0x55db('0x4e')](_0x58d872);})[_0x55db('0x1b')](function(_0x30f9e6){_0x169037[_0x55db('0x4f')]=_0x30f9e6;return _0x169037;})[_0x55db('0x1b')](respondWithFilteredResult(_0x2cc94d,_0x58d872))[_0x55db('0x22')](handleError(_0x2cc94d,null));};exports[_0x55db('0x50')]=function(_0x5c88d6,_0x392343){var _0x1257c6={'raw':![],'where':{'id':_0x5c88d6['params']['id']},'include':[{'model':db['Pause'],'as':_0x55db('0x39')}]},_0xdcf28d={};_0xdcf28d['model']=_[_0x55db('0x3f')](db[_0x55db('0x3b')]['rawAttributes']);_0xdcf28d['query']=_[_0x55db('0x3f')](_0x5c88d6['query']);_0xdcf28d[_0x55db('0x48')]=_['intersection'](_0xdcf28d['model'],_0xdcf28d['query']);_0x1257c6[_0x55db('0x42')]=_[_0x55db('0x41')](_0xdcf28d[_0x55db('0x3e')],qs['fields'](_0x5c88d6[_0x55db('0x40')][_0x55db('0x43')]));_0x1257c6['attributes']=_0x1257c6['attributes'][_0x55db('0x44')]?_0x1257c6[_0x55db('0x42')]:_0xdcf28d[_0x55db('0x3e')];if(_0x5c88d6['query'][_0x55db('0x51')]){_0x1257c6[_0x55db('0x4d')]=[{'all':!![]}];}_0x1257c6=_['merge']({},_0x1257c6,_0x5c88d6[_0x55db('0x4c')]);return db[_0x55db('0x3b')][_0x55db('0x52')](_0x1257c6)[_0x55db('0x1b')](handleEntityNotFound(_0x392343,null))[_0x55db('0x1b')](respondWithResult(_0x392343,null))['catch'](handleError(_0x392343,null));};exports[_0x55db('0x53')]=function(_0x3dc3e6,_0x3f7fd2){return db[_0x55db('0x3b')]['create'](_0x3dc3e6[_0x55db('0x54')],{})['then'](function(_0x4b630b){var _0x192b72=_0x3dc3e6[_0x55db('0x55')]['get']({'plain':!![]});if(!_0x192b72)throw new Error(_0x55db('0x56'));if(_0x192b72['role']==='user'){var _0xbfbaf1=_0x4b630b['get']({'plain':!![]});var _0x15f068=_0x55db('0x32');return db[_0x55db('0x57')]['find']({'where':{'name':_0x15f068,'userProfileId':_0x192b72['userProfileId']},'raw':!![]})['then'](function(_0x13859c){if(_0x13859c&&_0x13859c[_0x55db('0x58')]===0x0){return db[_0x55db('0x33')][_0x55db('0x53')]({'name':_0xbfbaf1[_0x55db('0x36')],'resourceId':_0xbfbaf1['id'],'type':_0x13859c[_0x55db('0x36')],'sectionId':_0x13859c['id']},{})[_0x55db('0x1b')](function(){return _0x4b630b;});}else{return _0x4b630b;}})['catch'](function(_0x270361){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x270361);throw _0x270361;});}return _0x4b630b;})[_0x55db('0x1b')](respondWithResult(_0x3f7fd2,0xc9))[_0x55db('0x22')](handleError(_0x3f7fd2,null));};exports[_0x55db('0x2f')]=function(_0x3cd053,_0x29a005){if(_0x3cd053[_0x55db('0x54')]['id']){delete _0x3cd053[_0x55db('0x54')]['id'];}return db['SmsAccount'][_0x55db('0x52')]({'where':{'id':_0x3cd053[_0x55db('0x59')]['id']},'include':[{'model':db[_0x55db('0x38')],'as':_0x55db('0x39')}]})[_0x55db('0x1b')](handleEntityNotFound(_0x29a005,null))['then'](saveUpdates(_0x3cd053[_0x55db('0x54')],null))[_0x55db('0x1b')](respondWithResult(_0x29a005,null))[_0x55db('0x22')](handleError(_0x29a005,null));};exports['destroy']=function(_0x24ed5b,_0x1937a5){return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x24ed5b[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x1937a5,null))[_0x55db('0x1b')](removeEntity(_0x1937a5,null))['catch'](handleError(_0x1937a5,null));};exports[_0x55db('0x5a')]=function(_0x4f6f96,_0xeeee4f){return db['SmsAccount'][_0x55db('0x5a')]()[_0x55db('0x1b')](respondWithResult(_0xeeee4f,null))[_0x55db('0x22')](handleError(_0xeeee4f,null));};exports[_0x55db('0x5b')]=function(_0x4e6a77,_0x475d20,_0x25a6ec){if(_0x4e6a77[_0x55db('0x54')]['id']){delete _0x4e6a77[_0x55db('0x54')]['id'];}return db[_0x55db('0x3b')]['find']({'where':{'id':_0x4e6a77[_0x55db('0x59')]['id']}})['then'](handleEntityNotFound(_0x475d20,null))[_0x55db('0x1b')](function(_0x2196f2){if(_0x2196f2){_0x4e6a77[_0x55db('0x54')]['SmsAccountId']=_0x2196f2['id'];return db[_0x55db('0x5c')][_0x55db('0x53')](_0x4e6a77[_0x55db('0x54')]);}})[_0x55db('0x1b')](respondWithResult(_0x475d20,null))[_0x55db('0x22')](handleError(_0x475d20,null));};exports[_0x55db('0x5d')]=function(_0x5928ce,_0x404558,_0x2044ac){var _0x319ca0={'raw':![],'where':{}};var _0x3d4e7a={};var _0x219ca4={'count':0x0,'rows':[]};return db[_0x55db('0x3b')][_0x55db('0x5e')]({'where':{'id':_0x5928ce['params']['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x404558,null))[_0x55db('0x1b')](function(_0x5e2f4a){if(_0x5e2f4a){_0x3d4e7a[_0x55db('0x3e')]=_[_0x55db('0x3f')](db[_0x55db('0x5c')]['rawAttributes']);_0x3d4e7a[_0x55db('0x40')]=_[_0x55db('0x3f')](_0x5928ce['query']);_0x3d4e7a[_0x55db('0x48')]=_['intersection'](_0x3d4e7a[_0x55db('0x3e')],_0x3d4e7a['query']);_0x319ca0[_0x55db('0x42')]=_[_0x55db('0x41')](_0x3d4e7a[_0x55db('0x3e')],qs['fields'](_0x5928ce['query'][_0x55db('0x43')]));_0x319ca0[_0x55db('0x42')]=_0x319ca0[_0x55db('0x42')][_0x55db('0x44')]?_0x319ca0[_0x55db('0x42')]:_0x3d4e7a[_0x55db('0x3e')];if(!_0x5928ce[_0x55db('0x40')]['hasOwnProperty']('nolimit')){_0x319ca0[_0x55db('0x29')]=qs[_0x55db('0x29')](_0x5928ce[_0x55db('0x40')]['limit']);_0x319ca0['offset']=qs[_0x55db('0x27')](_0x5928ce['query'][_0x55db('0x27')]);}_0x319ca0[_0x55db('0x5f')]=qs[_0x55db('0x46')](_0x5928ce[_0x55db('0x40')][_0x55db('0x46')]);_0x319ca0[_0x55db('0x47')]=qs[_0x55db('0x48')](_[_0x55db('0x60')](_0x5928ce[_0x55db('0x40')],_0x3d4e7a[_0x55db('0x48')]));_0x319ca0[_0x55db('0x47')][_0x55db('0x61')]=_0x5e2f4a['id'];if(_0x5928ce[_0x55db('0x40')]['filter']){_0x319ca0['where']=_[_0x55db('0x4a')](_0x319ca0[_0x55db('0x47')],{'$or':_['map'](_0x319ca0[_0x55db('0x42')],function(_0x5a98c2){var _0x3129ae={};_0x3129ae[_0x5a98c2]={'$like':'%'+_0x5928ce['query'][_0x55db('0x49')]+'%'};return _0x3129ae;})});}_0x319ca0=_[_0x55db('0x4a')]({},_0x319ca0,_0x5928ce[_0x55db('0x4c')]);return db[_0x55db('0x5c')][_0x55db('0x28')]({'where':_0x319ca0[_0x55db('0x47')]})[_0x55db('0x1b')](function(_0x3f5432){_0x219ca4[_0x55db('0x28')]=_0x3f5432;if(_0x5928ce[_0x55db('0x40')][_0x55db('0x51')]){_0x319ca0[_0x55db('0x4d')]=[{'all':!![]}];}return db[_0x55db('0x5c')][_0x55db('0x4e')](_0x319ca0);})['then'](function(_0x2e45a3){_0x219ca4[_0x55db('0x4f')]=_0x2e45a3;return _0x219ca4;});}})[_0x55db('0x1b')](respondWithFilteredResult(_0x404558,_0x319ca0))[_0x55db('0x22')](handleError(_0x404558,null));};exports[_0x55db('0x62')]=function(_0x5b3d2a,_0xdd13fc,_0x3cfea6){return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x5b3d2a['params']['id']}})['then'](handleEntityNotFound(_0xdd13fc,null))[_0x55db('0x1b')](function(_0x14d533){if(_0x14d533){return _0x14d533[_0x55db('0x62')](_0x5b3d2a[_0x55db('0x40')][_0x55db('0x63')]);}})[_0x55db('0x1b')](respondWithStatusCode(_0xdd13fc,null))['catch'](handleError(_0xdd13fc,null));};exports[_0x55db('0x64')]=function(_0x25e43a,_0xd066e,_0x127ca2){if(_0x25e43a[_0x55db('0x54')]['id']){delete _0x25e43a[_0x55db('0x54')]['id'];}return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x25e43a['params']['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0xd066e,null))[_0x55db('0x1b')](function(_0x429593){if(_0x429593){_0x25e43a['body'][_0x55db('0x61')]=_0x429593['id'];return db[_0x55db('0x65')][_0x55db('0x53')](_0x25e43a[_0x55db('0x54')]);}})[_0x55db('0x1b')](respondWithResult(_0xd066e,null))[_0x55db('0x22')](handleError(_0xd066e,null));};exports['getAnswers']=function(_0x30875d,_0x530607,_0x4ca33e){var _0x3cf7fc={'raw':![],'where':{}};var _0x2863e1={};var _0x34411d={'count':0x0,'rows':[]};return db[_0x55db('0x3b')]['findOne']({'where':{'id':_0x30875d['params']['id']}})['then'](handleEntityNotFound(_0x530607,null))[_0x55db('0x1b')](function(_0x5699e9){if(_0x5699e9){_0x2863e1[_0x55db('0x3e')]=_[_0x55db('0x3f')](db[_0x55db('0x65')][_0x55db('0x3c')]);_0x2863e1[_0x55db('0x40')]=_['keys'](_0x30875d[_0x55db('0x40')]);_0x2863e1[_0x55db('0x48')]=_[_0x55db('0x41')](_0x2863e1['model'],_0x2863e1[_0x55db('0x40')]);_0x3cf7fc['attributes']=_[_0x55db('0x41')](_0x2863e1['model'],qs[_0x55db('0x43')](_0x30875d['query'][_0x55db('0x43')]));_0x3cf7fc[_0x55db('0x42')]=_0x3cf7fc[_0x55db('0x42')][_0x55db('0x44')]?_0x3cf7fc[_0x55db('0x42')]:_0x2863e1['model'];if(!_0x30875d['query'][_0x55db('0x66')](_0x55db('0x45'))){_0x3cf7fc[_0x55db('0x29')]=qs[_0x55db('0x29')](_0x30875d['query']['limit']);_0x3cf7fc[_0x55db('0x27')]=qs[_0x55db('0x27')](_0x30875d[_0x55db('0x40')][_0x55db('0x27')]);}_0x3cf7fc['order']=qs[_0x55db('0x46')](_0x30875d[_0x55db('0x40')][_0x55db('0x46')]);_0x3cf7fc[_0x55db('0x47')]=qs['filters'](_['pick'](_0x30875d[_0x55db('0x40')],_0x2863e1[_0x55db('0x48')]));_0x3cf7fc[_0x55db('0x47')][_0x55db('0x61')]=_0x5699e9['id'];if(_0x30875d[_0x55db('0x40')][_0x55db('0x49')]){_0x3cf7fc[_0x55db('0x47')]=_[_0x55db('0x4a')](_0x3cf7fc[_0x55db('0x47')],{'$or':_[_0x55db('0x3a')](_0x3cf7fc[_0x55db('0x42')],function(_0x56a536){var _0x5db6f2={};_0x5db6f2[_0x56a536]={'$like':'%'+_0x30875d[_0x55db('0x40')][_0x55db('0x49')]+'%'};return _0x5db6f2;})});}_0x3cf7fc=_['merge']({},_0x3cf7fc,_0x30875d[_0x55db('0x4c')]);return db[_0x55db('0x65')]['count']({'where':_0x3cf7fc[_0x55db('0x47')]})[_0x55db('0x1b')](function(_0x2ad582){_0x34411d[_0x55db('0x28')]=_0x2ad582;if(_0x30875d[_0x55db('0x40')][_0x55db('0x51')]){_0x3cf7fc[_0x55db('0x4d')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x3cf7fc);})[_0x55db('0x1b')](function(_0x3b8b67){_0x34411d['rows']=_0x3b8b67;return _0x34411d;});}})[_0x55db('0x1b')](respondWithFilteredResult(_0x530607,_0x3cf7fc))['catch'](handleError(_0x530607,null));};exports[_0x55db('0x67')]=function(_0x3f0ff9,_0x28dd6f,_0x5c6372){return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x3f0ff9[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x28dd6f,null))[_0x55db('0x1b')](function(_0x17f72a){if(_0x17f72a){return _0x17f72a['removeAnswers'](_0x3f0ff9[_0x55db('0x40')]['ids']);}})[_0x55db('0x1b')](respondWithStatusCode(_0x28dd6f,null))[_0x55db('0x22')](handleError(_0x28dd6f,null));};exports[_0x55db('0x68')]=function(_0x31ff45,_0x83937b,_0x473830){var _0x1709dd={'channel':'sms'};var _0x1e5b14=[];var _0x270aec=[];var _0x446a7f={};return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x31ff45[_0x55db('0x59')]['id']},'include':[{'model':db['SmsApplication'],'as':'Applications'}]})[_0x55db('0x1b')](handleEntityNotFound(_0x83937b,null))[_0x55db('0x1b')](function(_0x43b79f){_0x1709dd[_0x55db('0x69')]=_0x43b79f;_0x1709dd['applications']=_[_0x55db('0x6a')](_0x43b79f[_0x55db('0x6b')],[_0x55db('0x6c')],[_0x55db('0x6d')]);if(_0x1709dd[_0x55db('0x69')][_0x55db('0x6b')]){delete _0x1709dd[_0x55db('0x69')][_0x55db('0x6b')];}return db[_0x55db('0x6e')][_0x55db('0x5a')]();})[_0x55db('0x1b')](function(_0x530c0b){if(!_0x530c0b){throw new db[(_0x55db('0x6f'))][(_0x55db('0x70'))](_0x55db('0x71'));}_0x1e5b14=_[_0x55db('0x72')](_[_0x55db('0x3f')](_0x530c0b),[_0x55db('0x73'),'updatedAt']);_0x270aec=_[_0x55db('0x72')](_[_0x55db('0x3f')](_0x530c0b),[_0x55db('0x73'),'updatedAt','CompanyId',_0x55db('0x74')]);_0x1709dd[_0x55db('0x54')]={'mapKey':_0x55db('0x75')};if(_0x1709dd['account'][_0x55db('0x3d')]){switch(_0x1709dd[_0x55db('0x69')][_0x55db('0x3d')]){case _0x55db('0x76'):_0x1709dd[_0x55db('0x54')]['from']=_0x31ff45[_0x55db('0x54')][_0x55db('0x77')];_0x1709dd['body'][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x78')];_0x1709dd[_0x55db('0x54')][_0x55db('0x79')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x7a')];break;case'skebby':_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')]='+'+_0x31ff45[_0x55db('0x54')][_0x55db('0x7c')];_0x1709dd['body']['body']=_0x31ff45['body'][_0x55db('0x7d')];break;case'connectel':_0x1709dd['body'][_0x55db('0x7b')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x7b')];_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x21')];break;case'clicksend':_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')]=_0x31ff45[_0x55db('0x54')]['from'];_0x1709dd['body'][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x54')];_0x1709dd['body'][_0x55db('0x79')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x7e')];break;case _0x55db('0x7f'):_0x1709dd['body']['from']=_0x31ff45['body'][_0x55db('0x77')];_0x1709dd[_0x55db('0x54')]['body']=_0x31ff45[_0x55db('0x54')][_0x55db('0x80')];_0x1709dd['body'][_0x55db('0x79')]=_0x31ff45[_0x55db('0x54')]['MessageUUID'];break;case _0x55db('0x81'):_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')]='+'+_0x31ff45[_0x55db('0x54')][_0x55db('0x82')][0x0][_0x55db('0x7b')];_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]=_0x31ff45['body'][_0x55db('0x82')][0x0][_0x55db('0x7d')];_0x1709dd[_0x55db('0x54')][_0x55db('0x79')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x82')][0x0][_0x55db('0x79')];break;case _0x55db('0x83'):_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x84')];_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')]['segmentedMessage'][_0x55db('0x21')];break;case _0x55db('0x85'):_0x1709dd[_0x55db('0x54')]['from']=_0x31ff45[_0x55db('0x54')]['fromNumber'];_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x7d')];_0x1709dd['body'][_0x55db('0x79')]=_0x31ff45[_0x55db('0x54')][_0x55db('0x86')];break;case _0x55db('0x87'):_0x1709dd[_0x55db('0x54')]['messageId']=_0x31ff45[_0x55db('0x54')][0x0][_0x55db('0x21')]['id'];_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')]=_0x31ff45[_0x55db('0x54')][0x0]['message'][_0x55db('0x7b')];_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')][0x0][_0x55db('0x21')][_0x55db('0x7d')];break;case _0x55db('0x88'):_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')]=_0x31ff45['body'][_0x55db('0x7b')];_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]=_0x31ff45[_0x55db('0x54')]['message'];_0x1709dd[_0x55db('0x54')]['messageId']=_0x31ff45['body']['refid'];break;}}if(_0x1709dd['body']['id']){delete _0x1709dd[_0x55db('0x54')]['id'];}if(_[_0x55db('0x89')](_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')])){throw new db[(_0x55db('0x6f'))][(_0x55db('0x70'))](_0x55db('0x8a'));}if(_[_0x55db('0x89')](_0x1709dd[_0x55db('0x54')][_0x55db('0x54')])||_0x1709dd[_0x55db('0x54')][_0x55db('0x54')]===''){throw new db['Sequelize'][(_0x55db('0x70'))](_0x55db('0x8b'));}if(_[_0x55db('0x89')](_0x1709dd[_0x55db('0x54')]['mapKey'])){throw new db[(_0x55db('0x6f'))][(_0x55db('0x70'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x270aec);}if(!_[_0x55db('0x8c')](_0x270aec,_0x1709dd[_0x55db('0x54')][_0x55db('0x8d')])){throw new db['Sequelize'][(_0x55db('0x70'))](_0x55db('0x8e')+_0x270aec);}_0x446a7f[_0x1709dd[_0x55db('0x54')][_0x55db('0x8d')]]=_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')];return db[_0x55db('0x8f')][_0x55db('0x52')]({'where':{'id':_0x1709dd[_0x55db('0x69')]['ListId']},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x446a7f,'limit':0x1,'order':[[_0x55db('0x90'),'DESC']]}]});})[_0x55db('0x1b')](handleEntityNotFound(_0x83937b,null))['then'](function(_0x63a8c1){if(_0x63a8c1){_0x1709dd['list']=_['omit'](_0x63a8c1,[_0x55db('0x91')]);if(_0x63a8c1[_0x55db('0x91')][_0x55db('0x44')]){return _0x63a8c1['Contacts'][0x0];}var _0xea5d67=_[_0x55db('0x92')](_0x1709dd[_0x55db('0x54')],{'firstName':_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')],'ListId':_0x63a8c1['id']});_0xea5d67[_0x1709dd[_0x55db('0x54')][_0x55db('0x8d')]]=_0x1709dd['body']['from'];return db[_0x55db('0x6e')][_0x55db('0x53')](_0xea5d67,{'fields':_0x1e5b14,'raw':!![]});}})['then'](handleEntityNotFound(_0x83937b,null))[_0x55db('0x1b')](function(_0x438dc3){if(_0x438dc3){_0x1709dd[_0x55db('0x93')]=_0x438dc3;var _0x37f42a={'ContactId':_0x438dc3['id'],'phone':_0x1709dd['body'][_0x55db('0x7b')],'SmsAccountId':_0x31ff45[_0x55db('0x59')]['id']};var _0x38af52={'ContactId':_0x438dc3['id'],'SmsAccountId':_0x31ff45[_0x55db('0x59')]['id'],'closed':![]};return db[_0x55db('0x94')][_0x55db('0x52')]({'where':_0x38af52})[_0x55db('0x1b')](function(_0x20d863){if(_0x20d863){return[_0x20d863,![]];}return db[_0x55db('0x94')][_0x55db('0x53')](_0x37f42a)[_0x55db('0x1b')](function(_0x350f4a){return[_0x350f4a,!![]];});});}})['spread'](function(_0x1ac5e5,_0x2d326c){_0x1709dd[_0x55db('0x95')]=_0x1ac5e5[_0x55db('0x31')]({'plain':!![]});_0x1709dd[_0x55db('0x95')][_0x55db('0x96')]=![];if(_0x2d326c){if(_0x1709dd[_0x55db('0x69')]['autoclose']){_0x1709dd[_0x55db('0x97')]['push']({'id':0x0,'priority':_0x1709dd[_0x55db('0x97')][_0x55db('0x44')]+0x1,'app':'close','appdata':_0x55db('0x98'),'interval':_0x55db('0x99')});}_0x1709dd[_0x55db('0x95')][_0x55db('0x96')]=!![];}return db[_0x55db('0x9a')][_0x55db('0x53')]({'phone':_0x1709dd[_0x55db('0x54')][_0x55db('0x7b')],'messageId':_0x1709dd[_0x55db('0x54')][_0x55db('0x79')],'body':_0x1709dd[_0x55db('0x54')][_0x55db('0x54')],'SmsAccountId':_0x31ff45[_0x55db('0x59')]['id'],'SmsInteractionId':_0x1ac5e5['id'],'direction':'in','ContactId':_0x1ac5e5[_0x55db('0x9b')],'AttachmentId':_0x1709dd[_0x55db('0x54')]['AttachmentId']});})[_0x55db('0x1b')](function(_0x2f008){_0x1709dd['message']=_0x2f008;if(_0x1709dd[_0x55db('0x95')]['UserId']){return db['User']['find']({'attributes':['id','name'],'where':{'id':_0x1709dd[_0x55db('0x95')][_0x55db('0x9c')]}})['then'](function(_0x44b699){if(_0x44b699){_0x1709dd[_0x55db('0x97')][_0x55db('0x9d')]({'id':0x0,'priority':0x0,'app':_0x55db('0x9e'),'appdata':_0x44b699[_0x55db('0x36')]+','+(_0x1709dd[_0x55db('0x69')][_0x55db('0x9f')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x55db('0xa0'),_0x55db('0xa1'),_0x1709dd);});}return respondWithRpcPromise(_0x55db('0xa0'),_0x55db('0xa1'),_0x1709dd);})[_0x55db('0x1b')](function(_0x330bfb){if(_0x330bfb){var _0x315516=0xc8;var _0x3c9165='receiveMessage';logger['info'](_0x55db('0x1f'),_0x3c9165,_0x315516,_0x55db('0xa2'));logger[_0x55db('0xa3')](_0x55db('0xa4'),_0x3c9165,_0x315516,'entity\x20found',JSON[_0x55db('0xa5')](_0x330bfb));if(_0x1709dd['account'][_0x55db('0x3d')]===_0x55db('0x76')){return _0x83937b[_0x55db('0x23')](_0x315516)[_0x55db('0x2a')](_0x55db('0xa6'),_0x55db('0xa7'))[_0x55db('0x37')](_0x55db('0xa8'));}else{return _0x83937b[_0x55db('0x23')](_0x315516)['json'](_0x330bfb);}}})[_0x55db('0x22')](handleError(_0x83937b,null));};exports[_0x55db('0xa9')]=function(_0x25d3bd,_0x51403a,_0x3274e6){return db[_0x55db('0x3b')][_0x55db('0x5e')]({'where':{'id':_0x25d3bd[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x51403a,null))['then'](function(_0x400adb){if(_0x400adb){return db[_0x55db('0xaa')][_0x55db('0xab')](function(_0x2af623){return db[_0x55db('0xac')]['destroy']({'where':{'SmsAccountId':_0x25d3bd['params']['id']},'transaction':_0x2af623})[_0x55db('0x1b')](function(_0x33b616){var _0x1f3eaa=_[_0x55db('0x3a')](_0x25d3bd[_0x55db('0x54')],function(_0x1dab35){_0x1dab35[_0x55db('0x61')]=_0x25d3bd[_0x55db('0x59')]['id'];return _0x1dab35;});return db['SmsApplication'][_0x55db('0xad')](_0x1f3eaa,{'transaction':_0x2af623});});})['then'](function(){return db[_0x55db('0xac')][_0x55db('0xae')]({'where':{'SmsAccountId':_0x25d3bd[_0x55db('0x59')]['id']},'order':'priority'});});}})[_0x55db('0x1b')](respondWithResult(_0x51403a,null))[_0x55db('0x22')](handleError(_0x51403a,null));};exports[_0x55db('0xaf')]=function(_0x54e55d,_0xa11f99,_0x5d71de){var _0x45f6e3={};var _0x3fbbe7={};var _0x4cba27;var _0x4414e0;return db[_0x55db('0x3b')]['findOne']({'where':{'id':_0x54e55d[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0xa11f99,null))[_0x55db('0x1b')](function(_0x145c3c){if(_0x145c3c){_0x4cba27=_0x145c3c;_0x3fbbe7[_0x55db('0x3e')]=_[_0x55db('0x3f')](db[_0x55db('0xac')][_0x55db('0x3c')]);_0x3fbbe7[_0x55db('0x40')]=_['keys'](_0x54e55d[_0x55db('0x40')]);_0x3fbbe7[_0x55db('0x48')]=_['intersection'](_0x3fbbe7[_0x55db('0x3e')],_0x3fbbe7[_0x55db('0x40')]);_0x45f6e3[_0x55db('0x42')]=_[_0x55db('0x41')](_0x3fbbe7[_0x55db('0x3e')],qs['fields'](_0x54e55d['query']['fields']));_0x45f6e3[_0x55db('0x42')]=_0x45f6e3[_0x55db('0x42')][_0x55db('0x44')]?_0x45f6e3[_0x55db('0x42')]:_0x3fbbe7[_0x55db('0x3e')];_0x45f6e3[_0x55db('0x5f')]=qs[_0x55db('0x46')](_0x54e55d[_0x55db('0x40')][_0x55db('0x46')]);_0x45f6e3[_0x55db('0x47')]=qs['filters'](_[_0x55db('0x60')](_0x54e55d[_0x55db('0x40')],_0x3fbbe7[_0x55db('0x48')]));if(_0x54e55d[_0x55db('0x40')][_0x55db('0x49')]){_0x45f6e3[_0x55db('0x47')]=_[_0x55db('0x4a')](_0x45f6e3[_0x55db('0x47')],{'$or':_[_0x55db('0x3a')](_0x45f6e3[_0x55db('0x42')],function(_0x3c7ef5){var _0x25f0bd={};_0x25f0bd[_0x3c7ef5]={'$like':'%'+_0x54e55d[_0x55db('0x40')][_0x55db('0x49')]+'%'};return _0x25f0bd;})});}_0x45f6e3=_['merge']({},_0x45f6e3,_0x54e55d[_0x55db('0x4c')]);return _0x4cba27[_0x55db('0xaf')](_0x45f6e3);}})[_0x55db('0x1b')](function(_0x4b83ae){if(_0x4b83ae){_0x4414e0=_0x4b83ae['length'];if(!_0x54e55d[_0x55db('0x40')][_0x55db('0x66')](_0x55db('0x45'))){_0x45f6e3['limit']=qs[_0x55db('0x29')](_0x54e55d[_0x55db('0x40')]['limit']);_0x45f6e3['offset']=qs['offset'](_0x54e55d[_0x55db('0x40')][_0x55db('0x27')]);}return _0x4cba27[_0x55db('0xaf')](_0x45f6e3);}})[_0x55db('0x1b')](function(_0x141095){if(_0x141095){return _0x141095?{'count':_0x4414e0,'rows':_0x141095}:null;}})[_0x55db('0x1b')](respondWithResult(_0xa11f99,null))[_0x55db('0x22')](handleError(_0xa11f99,null));};exports[_0x55db('0xb0')]=function(_0x23d9a8,_0x4646c9,_0x3f272a){var _0x3ed4ee={'raw':![],'where':{}};var _0xead941={};var _0x56cc9c={'count':0x0,'rows':[]};return db[_0x55db('0x3b')]['findOne']({'where':{'id':_0x23d9a8['params']['id']}})['then'](handleEntityNotFound(_0x4646c9,null))[_0x55db('0x1b')](function(_0x3d0932){if(_0x3d0932){_0xead941[_0x55db('0x3e')]=_['keys'](db[_0x55db('0x94')]['rawAttributes']);_0xead941[_0x55db('0x40')]=_[_0x55db('0x3f')](_0x23d9a8['query']);_0xead941[_0x55db('0x48')]=_[_0x55db('0x41')](_0xead941[_0x55db('0x3e')],_0xead941[_0x55db('0x40')]);_0x3ed4ee[_0x55db('0x42')]=_[_0x55db('0x41')](_0xead941[_0x55db('0x3e')],qs[_0x55db('0x43')](_0x23d9a8[_0x55db('0x40')]['fields']));_0x3ed4ee[_0x55db('0x42')]=_0x3ed4ee['attributes'][_0x55db('0x44')]?_0x3ed4ee[_0x55db('0x42')]:_0xead941[_0x55db('0x3e')];if(!_0x23d9a8[_0x55db('0x40')]['hasOwnProperty'](_0x55db('0x45'))){_0x3ed4ee[_0x55db('0x29')]=qs[_0x55db('0x29')](_0x23d9a8[_0x55db('0x40')][_0x55db('0x29')]);_0x3ed4ee[_0x55db('0x27')]=qs[_0x55db('0x27')](_0x23d9a8[_0x55db('0x40')][_0x55db('0x27')]);}_0x3ed4ee[_0x55db('0x5f')]=qs['sort'](_0x23d9a8[_0x55db('0x40')][_0x55db('0x46')]);_0x3ed4ee[_0x55db('0x47')]=qs[_0x55db('0x48')](_[_0x55db('0x60')](_0x23d9a8[_0x55db('0x40')],_0xead941[_0x55db('0x48')]));_0x3ed4ee[_0x55db('0x47')][_0x55db('0x61')]=_0x3d0932['id'];if(_0x23d9a8['query']['filter']){_0x3ed4ee[_0x55db('0x47')]=_['merge'](_0x3ed4ee[_0x55db('0x47')],{'$or':_[_0x55db('0x3a')](_0x3ed4ee[_0x55db('0x42')],function(_0x3ff77f){var _0x1d46a={};_0x1d46a[_0x3ff77f]={'$like':'%'+_0x23d9a8['query']['filter']+'%'};return _0x1d46a;})});}_0x3ed4ee=_[_0x55db('0x4a')]({},_0x3ed4ee,_0x23d9a8[_0x55db('0x4c')]);return db['SmsInteraction'][_0x55db('0x28')]({'where':_0x3ed4ee[_0x55db('0x47')]})[_0x55db('0x1b')](function(_0xa03f50){_0x56cc9c['count']=_0xa03f50;if(_0x23d9a8[_0x55db('0x40')][_0x55db('0x51')]){_0x3ed4ee['include']=[{'model':db[_0x55db('0x6e')],'as':'Contact','required':![]},{'model':db[_0x55db('0xb1')],'as':_0x55db('0xb2'),'attributes':['name',_0x55db('0xb3'),_0x55db('0xb4')],'required':![]},{'model':db[_0x55db('0xb5')],'as':_0x55db('0xb6'),'attributes':['id',_0x55db('0x36'),_0x55db('0xb7')],'where':_0x23d9a8['query']['tag']?{'id':_0x23d9a8[_0x55db('0x40')][_0x55db('0xb8')]}:undefined,'required':_0x23d9a8['query'][_0x55db('0xb8')]?!![]:![]}];}return db['SmsInteraction'][_0x55db('0x4e')](_0x3ed4ee);})[_0x55db('0x1b')](function(_0x73cee6){_0x56cc9c['rows']=_0x73cee6;return _0x56cc9c;});}})[_0x55db('0x1b')](respondWithFilteredResult(_0x4646c9,_0x3ed4ee))[_0x55db('0x22')](handleError(_0x4646c9,null));};exports['send']=function(_0x3ec8b2,_0x49878d,_0x226be2){var _0x694e1a,_0x465ecc,_0x558a4f;if(_[_0x55db('0x89')](_0x3ec8b2['body'][_0x55db('0x54')])||_0x3ec8b2[_0x55db('0x54')][_0x55db('0x54')]===''){throw new db[(_0x55db('0x6f'))][(_0x55db('0x70'))](_0x55db('0x8b'));}if(_[_0x55db('0x89')](_0x3ec8b2['body']['to'])){throw new db[(_0x55db('0x6f'))][(_0x55db('0x70'))](_0x55db('0xb9'));}_0x694e1a=_0x3ec8b2[_0x55db('0x54')]['to'];return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x3ec8b2['params']['id']},'include':[{'model':db[_0x55db('0x8f')],'as':_0x55db('0xba'),'include':[{'model':db[_0x55db('0x6e')],'as':_0x55db('0x91'),'where':{'mobile':_0x694e1a},'limit':0x1,'order':[['updatedAt',_0x55db('0xbb')]]}]}]})[_0x55db('0x1b')](handleEntityNotFound(_0x49878d,null))['then'](function(_0x17a998){if(_0x17a998&&_0x17a998[_0x55db('0xba')]){_0x465ecc=_0x17a998[_0x55db('0x31')]({'plain':!![]});if(_0x465ecc[_0x55db('0xba')]&&_0x465ecc[_0x55db('0xba')]['Contacts']['length']){return _0x465ecc[_0x55db('0xba')][_0x55db('0x91')][0x0];}return db['CmContact'][_0x55db('0x53')](_[_0x55db('0x92')](_0x3ec8b2['body'],{'firstName':_0x694e1a,'mobile':_0x694e1a,'phone':_0x694e1a,'ListId':_0x465ecc[_0x55db('0x74')]}));}})['then'](handleEntityNotFound(_0x49878d,null))[_0x55db('0x1b')](function(_0x342689){if(_0x342689){_0x558a4f=_0x342689;return db[_0x55db('0x94')]['find']({'where':{'ContactId':_0x558a4f['id'],'closed':![],'SmsAccountId':_0x465ecc['id']}})[_0x55db('0x1b')](function(_0x5e8b1b){if(_0x5e8b1b){return[_0x5e8b1b,![]];}return db[_0x55db('0x94')][_0x55db('0x53')]({'UserId':_0x3ec8b2[_0x55db('0x55')]['id'],'ContactId':_0x558a4f['id'],'SmsAccountId':_0x465ecc['id'],'phone':_0x694e1a,'firstMsgDirection':_0x55db('0xbc'),'Messages':[_[_0x55db('0x4a')](_0x3ec8b2[_0x55db('0x54')],{'read':![],'body':_0x3ec8b2['body']['body'],'phone':_0x694e1a,'SmsAccountId':_0x465ecc['id'],'UserId':_0x3ec8b2[_0x55db('0x55')]['id'],'ContactId':_0x558a4f['id']})]},{'include':[{'model':db[_0x55db('0x9a')],'as':'Messages'}]})[_0x55db('0x1b')](function(_0x6334b0){return[_0x6334b0,!![]];});});}})[_0x55db('0xbd')](function(_0x5b8b6f,_0x39ce98){if(_0x39ce98){return _0x5b8b6f;}return db[_0x55db('0x9a')]['create'](_[_0x55db('0x4a')](_0x3ec8b2['body'],{'read':![],'body':_0x3ec8b2[_0x55db('0x54')][_0x55db('0x54')],'phone':_0x694e1a,'SmsAccountId':_0x465ecc['id'],'SmsInteractionId':_0x5b8b6f['id'],'UserId':_0x3ec8b2[_0x55db('0x55')]['id'],'ContactId':_0x558a4f['id']}))[_0x55db('0x1b')](function(_0x5b3993){_0x5b8b6f[_0x55db('0xbe')][_0x55db('0xbf')]=[];_0x5b8b6f['dataValues'][_0x55db('0xbf')][_0x55db('0xc0')](_0x5b3993['dataValues']);return _0x5b8b6f;});})[_0x55db('0x1b')](respondWithResult(_0x49878d,null))[_0x55db('0x22')](handleError(_0x49878d,null));};exports[_0x55db('0x23')]=function(_0x326eed,_0x27f5f0,_0x1a8a34){if(_0x326eed[_0x55db('0x54')]['id']){delete _0x326eed[_0x55db('0x54')]['id'];}var _0x1dc441,_0x38bdbc,_0x5a9ce9;return db[_0x55db('0x3b')][_0x55db('0x52')]({'where':{'id':_0x326eed[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x27f5f0,null))['then'](function(_0x4f6a65){if(_0x4f6a65){_0x5a9ce9=_0x4f6a65;logger[_0x55db('0xa3')](_0x55db('0x1f'),_0x55db('0x23'),'received\x20delivery\x20report\x20from',_0x4f6a65[_0x55db('0x3d')],util[_0x55db('0xc1')](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));switch(_0x4f6a65['type']){case _0x55db('0xc2'):if(_0x326eed[_0x55db('0x54')][_0x55db('0xc3')]&&_0x326eed[_0x55db('0x54')][_0x55db('0x23')]){_0x38bdbc=_0x326eed['body']['status'];return db[_0x55db('0x9a')]['find']({'where':{'messageId':_0x326eed[_0x55db('0x54')][_0x55db('0xc3')]}});}break;case _0x55db('0xc4'):if(_0x326eed[_0x55db('0x54')]['requestid']&&_0x326eed['body'][_0x55db('0xc5')]){_0x38bdbc=_0x326eed[_0x55db('0x54')]['statusInt'];return db['SmsMessage']['find']({'where':{'messageId':_0x326eed[_0x55db('0x54')][_0x55db('0xc6')]}});}break;case _0x55db('0xc7'):if(_0x326eed[_0x55db('0x54')][_0x55db('0x7e')]&&_0x326eed[_0x55db('0x54')][_0x55db('0xc8')]){_0x38bdbc=_0x326eed[_0x55db('0x54')][_0x55db('0xc8')];return db[_0x55db('0x9a')][_0x55db('0x52')]({'where':{'messageId':_0x326eed[_0x55db('0x54')]['message_id']}});}break;case _0x55db('0x81'):var _0x2edc4e=_0x326eed[_0x55db('0x54')][_0x55db('0x82')][0x0];if(_0x2edc4e[_0x55db('0x79')]&&_0x2edc4e[_0x55db('0x23')][_0x55db('0xc9')]===_0x55db('0xca')){_0x38bdbc=_0x2edc4e[_0x55db('0x23')][_0x55db('0xc9')];return db['SmsMessage'][_0x55db('0x52')]({'where':{'messageId':_0x2edc4e[_0x55db('0x79')]}});}break;case _0x55db('0x85'):if(_0x326eed[_0x55db('0x54')][_0x55db('0x79')]&&_0x326eed[_0x55db('0x54')][_0x55db('0x23')]){_0x38bdbc=_0x326eed[_0x55db('0x54')]['status'];return db[_0x55db('0x9a')][_0x55db('0x52')]({'where':{'messageId':_0x326eed[_0x55db('0x54')][_0x55db('0x79')]}});}break;case _0x55db('0x87'):if(_0x326eed[_0x55db('0x54')][0x0][_0x55db('0x21')]['id']){_0x38bdbc=_0x326eed[_0x55db('0x54')][0x0][_0x55db('0x3d')];return db[_0x55db('0x9a')][_0x55db('0x52')]({'where':{'messageId':_0x326eed['body'][0x0]['message']['id']}});}break;case _0x55db('0x88'):if(_0x326eed[_0x55db('0x54')][_0x55db('0xcb')]&&_0x326eed['body'][_0x55db('0x23')]){_0x38bdbc=_0x326eed[_0x55db('0x54')][_0x55db('0x23')];return db[_0x55db('0x9a')][_0x55db('0x52')]({'where':{'messageId':_0x326eed[_0x55db('0x54')][_0x55db('0xcb')]}});}break;}}})[_0x55db('0x1b')](handleEntityNotFound(_0x27f5f0,null))[_0x55db('0x1b')](function(_0x930366){if(_0x930366){_0x1dc441=_0x930366;switch(_0x5a9ce9[_0x55db('0x3d')]){case _0x55db('0xc2'):if(_0x38bdbc===_0x55db('0xca')){return _0x1dc441[_0x55db('0x2f')]({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),'status',_0x55db('0xc2'),util[_0x55db('0xc1')](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;case _0x55db('0xc4'):if(_0x38bdbc==='1'){return _0x1dc441['update']({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),_0x55db('0x23'),_0x55db('0xc2'),util['inspect'](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x326eed[_0x55db('0x54')]['error_code']&&_0x38bdbc>=0xc8&&_0x38bdbc<=0xce){return _0x1dc441['update']({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),_0x55db('0x23'),_0x55db('0xc7'),util['inspect'](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;case _0x55db('0x81'):var _0x1d9c04=_0x326eed[_0x55db('0x54')][_0x55db('0x82')][0x0];if(_0x1d9c04[_0x55db('0x23')][_0x55db('0xc9')]===_0x55db('0xca')){return _0x1dc441[_0x55db('0x2f')]({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),_0x55db('0x23'),_0x55db('0x81'),util[_0x55db('0xc1')](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;case _0x55db('0x85'):if(_0x38bdbc=='DELIVERED_TO_GATEWAY'||_0x38bdbc==_0x55db('0xcc')){return _0x1dc441[_0x55db('0x2f')]({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),_0x55db('0x23'),_0x55db('0x85'),util[_0x55db('0xc1')](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;case _0x55db('0x87'):if(_0x38bdbc=='message-delivered'){return _0x1dc441[_0x55db('0x2f')]({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),_0x55db('0x23'),_0x55db('0x87'),util[_0x55db('0xc1')](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x38bdbc===_0x55db('0xcd')||_0x38bdbc===_0x55db('0xce')){return _0x1dc441['update']({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),_0x55db('0x23'),_0x55db('0x88'),util[_0x55db('0xc1')](_0x326eed[_0x55db('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x1dc441;}})[_0x55db('0x1b')](respondWithResult(_0x27f5f0,null))[_0x55db('0x22')](handleError(_0x27f5f0,null));};exports[_0x55db('0xcf')]=function(_0x21b06f,_0x31c0d8,_0x40db19){var _0x2d4d92,_0xec3ae3,_0x2d6368;return db[_0x55db('0x3b')]['find']({'where':{'id':_0x21b06f[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x31c0d8,null))[_0x55db('0x1b')](function(_0x505749){if(_0x505749){_0x2d6368=_0x505749;logger[_0x55db('0xa3')](_0x55db('0x1f'),_0x55db('0x23'),'received\x20delivery\x20report\x20from',_0x505749[_0x55db('0x3d')],util['inspect'](_0x21b06f[_0x55db('0x40')],{'showHidden':![],'depth':null}));switch(_0x505749['type']){case'csc':if(_0x21b06f['query'][_0x55db('0xd0')]&&_0x21b06f[_0x55db('0x40')][_0x55db('0xd1')]){_0xec3ae3=_0x21b06f['query'][_0x55db('0xd1')];return db['SmsMessage']['find']({'where':{'messageId':_0x21b06f['query'][_0x55db('0xd0')]}});}break;}}})[_0x55db('0x1b')](handleEntityNotFound(_0x31c0d8,null))[_0x55db('0x1b')](function(_0x3174ab){if(_0x3174ab){_0x2d4d92=_0x3174ab;switch(_0x2d6368['type']){case _0x55db('0x83'):if(_0xec3ae3==='2'||_0xec3ae3==='6'){return _0x2d4d92[_0x55db('0x2f')]({'read':!![]});}else{logger[_0x55db('0x20')](_0x55db('0x1f'),'status',_0x55db('0x83'),util['inspect'](_0x21b06f[_0x55db('0x40')],{'showHidden':![],'depth':null}));};break;}return _0x2d4d92;}})[_0x55db('0x1b')](respondWithResult(_0x31c0d8,null))[_0x55db('0x22')](handleError(_0x31c0d8,null));};exports[_0x55db('0xd2')]=function(_0x4c9aba,_0x2df6bd,_0x26abb0){return db[_0x55db('0x3b')]['find']({'where':{'id':_0x4c9aba['params']['id']}})['then'](handleEntityNotFound(_0x2df6bd,null))['then'](function(_0x38ece1){if(_0x38ece1){return _0x38ece1[_0x55db('0xd2')](_0x4c9aba[_0x55db('0x54')][_0x55db('0x63')],_[_0x55db('0xd3')](_0x4c9aba['body'],[_0x55db('0x63'),'id'])||{})[_0x55db('0xbd')](function(_0x51a232){for(var _0x33b666=0x0;_0x33b666<_0x4c9aba[_0x55db('0x54')][_0x55db('0x63')][_0x55db('0x44')];_0x33b666+=0x1){socket['emit'](_0x55db('0xd4'),{'UserId':Number(_0x4c9aba['body'][_0x55db('0x63')][_0x33b666]),'SmsAccountId':Number(_0x4c9aba[_0x55db('0x59')]['id'])});}return _0x51a232;});}})[_0x55db('0x1b')](respondWithResult(_0x2df6bd,null))[_0x55db('0x22')](handleError(_0x2df6bd,null));};exports[_0x55db('0xd5')]=function(_0x196a66,_0x14ffc3,_0x2e1f7c){return db['SmsAccount']['find']({'where':{'id':_0x196a66['params']['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x14ffc3,null))[_0x55db('0x1b')](function(_0xb32a73){if(_0xb32a73){return _0xb32a73['removeAgents'](_0x196a66[_0x55db('0x40')]['ids'])[_0x55db('0x1b')](function(){if(_[_0x55db('0xd6')](_0x196a66[_0x55db('0x40')][_0x55db('0x63')])){for(var _0x3d2959=0x0;_0x3d2959<_0x196a66[_0x55db('0x40')][_0x55db('0x63')][_0x55db('0x44')];_0x3d2959+=0x1){socket[_0x55db('0xd7')](_0x55db('0xd8'),{'UserId':Number(_0x196a66[_0x55db('0x40')][_0x55db('0x63')][_0x3d2959]),'SmsAccountId':Number(_0x196a66[_0x55db('0x59')]['id'])});}}else{socket[_0x55db('0xd7')](_0x55db('0xd8'),{'UserId':Number(_0x196a66[_0x55db('0x40')][_0x55db('0x63')]),'SmsAccountId':Number(_0x196a66[_0x55db('0x59')]['id'])});}});}})[_0x55db('0x1b')](respondWithStatusCode(_0x14ffc3,null))['catch'](handleError(_0x14ffc3,null));};exports[_0x55db('0xd9')]=function(_0x41e443,_0x2ab8e2,_0x47b405){var _0x20b70e={};var _0x1d8d3b={};var _0x2914d6;var _0x214bbb;return db[_0x55db('0x3b')]['findOne']({'where':{'id':_0x41e443[_0x55db('0x59')]['id']}})[_0x55db('0x1b')](handleEntityNotFound(_0x2ab8e2,null))[_0x55db('0x1b')](function(_0x5a5c3f){if(_0x5a5c3f){_0x2914d6=_0x5a5c3f;_0x1d8d3b[_0x55db('0x3e')]=_[_0x55db('0x3f')](db[_0x55db('0xb1')]['rawAttributes']);_0x1d8d3b['query']=_[_0x55db('0x3f')](_0x41e443['query']);_0x1d8d3b[_0x55db('0x48')]=_[_0x55db('0x41')](_0x1d8d3b[_0x55db('0x3e')],_0x1d8d3b[_0x55db('0x40')]);_0x20b70e['attributes']=_[_0x55db('0x41')](_0x1d8d3b[_0x55db('0x3e')],qs[_0x55db('0x43')](_0x41e443[_0x55db('0x40')]['fields']));_0x20b70e['attributes']=_0x20b70e['attributes'][_0x55db('0x44')]?_0x20b70e[_0x55db('0x42')]:_0x1d8d3b['model'];_0x20b70e[_0x55db('0x5f')]=qs[_0x55db('0x46')](_0x41e443['query'][_0x55db('0x46')]);_0x20b70e[_0x55db('0x47')]=qs['filters'](_[_0x55db('0x60')](_0x41e443['query'],_0x1d8d3b[_0x55db('0x48')]));if(_0x41e443[_0x55db('0x40')][_0x55db('0x49')]){_0x20b70e[_0x55db('0x47')]=_[_0x55db('0x4a')](_0x20b70e[_0x55db('0x47')],{'$or':_[_0x55db('0x3a')](_0x20b70e['attributes'],function(_0x456d6c){var _0x53e428={};_0x53e428[_0x456d6c]={'$like':'%'+_0x41e443[_0x55db('0x40')][_0x55db('0x49')]+'%'};return _0x53e428;})});}_0x20b70e=_['merge']({},_0x20b70e,_0x41e443['options']);return _0x2914d6[_0x55db('0xd9')](_0x20b70e);}})[_0x55db('0x1b')](function(_0x1e1cc8){if(_0x1e1cc8){_0x214bbb=_0x1e1cc8['length'];if(!_0x41e443['query'][_0x55db('0x66')](_0x55db('0x45'))){_0x20b70e[_0x55db('0x29')]=qs[_0x55db('0x29')](_0x41e443['query']['limit']);_0x20b70e['offset']=qs[_0x55db('0x27')](_0x41e443['query'][_0x55db('0x27')]);}return _0x2914d6[_0x55db('0xd9')](_0x20b70e);}})['then'](function(_0x25e600){if(_0x25e600){return _0x25e600?{'count':_0x214bbb,'rows':_0x25e600}:null;}})[_0x55db('0x1b')](respondWithResult(_0x2ab8e2,null))['catch'](handleError(_0x2ab8e2,null));};
\ No newline at end of file
index 5325968..9745b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dfc=['hook','exports','events','SmsAccount','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5dfc,0x1c4));var _0xc5df=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x5dfc[_0x5b561d];return _0x431060;};'use strict';var EventEmitter=require(_0xc5df('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0xc5df('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xc5df('0x2')](0x0);var events={'afterCreate':_0xc5df('0x3'),'afterUpdate':_0xc5df('0x4'),'afterDestroy':'remove'};function emitEvent(_0x525a65){return function(_0x8c94a0,_0x8c1679,_0x30ad52){SmsAccountEvents[_0xc5df('0x5')](_0x525a65+':'+_0x8c94a0['id'],_0x8c94a0);SmsAccountEvents[_0xc5df('0x5')](_0x525a65,_0x8c94a0);_0x30ad52(null);};}for(var e in events){if(events[_0xc5df('0x6')](e)){var event=events[e];SmsAccount[_0xc5df('0x7')](e,emitEvent(event));}}module[_0xc5df('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0xf477=['save','update','remove','emit','exports','../../mysqldb','setMaxListeners'];(function(_0x7dfeae,_0x54a972){var _0x35f861=function(_0x31860a){while(--_0x31860a){_0x7dfeae['push'](_0x7dfeae['shift']());}};_0x35f861(++_0x54a972);}(_0xf477,0x12b));var _0x7f47=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xf477[_0x1d1779];return _0x2377e9;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0x7f47('0x0'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x7f47('0x1')](0x0);var events={'afterCreate':_0x7f47('0x2'),'afterUpdate':_0x7f47('0x3'),'afterDestroy':_0x7f47('0x4')};function emitEvent(_0x26c59b){return function(_0x1098b9,_0xffead9,_0x31ed88){SmsAccountEvents[_0x7f47('0x5')](_0x26c59b+':'+_0x1098b9['id'],_0x1098b9);SmsAccountEvents[_0x7f47('0x5')](_0x26c59b,_0x1098b9);_0x31ed88(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x7f47('0x6')]=SmsAccountEvents;
\ No newline at end of file
index 13cfed4..ae74bd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f6=['exports','SmsAccount','sms_accounts','lodash','util','api','path','rimraf'];(function(_0x22ca4c,_0x1d8edb){var _0x2e8a7b=function(_0x178fca){while(--_0x178fca){_0x22ca4c['push'](_0x22ca4c['shift']());}};_0x2e8a7b(++_0x1d8edb);}(_0x97f6,0x18b));var _0x697f=function(_0x4664a7,_0x18136f){_0x4664a7=_0x4664a7-0x0;var _0xa40489=_0x97f6[_0x4664a7];return _0xa40489;};'use strict';var _=require(_0x697f('0x0'));var util=require(_0x697f('0x1'));var logger=require('../../config/logger')(_0x697f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x697f('0x3'));var rimraf=require(_0x697f('0x4'));var config=require('../../config/environment');var attributes=require('./smsAccount.attributes');module[_0x697f('0x5')]=function(_0x3a9ea0,_0x343a14){return _0x3a9ea0['define'](_0x697f('0x6'),attributes,{'tableName':_0x697f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1091=['SmsAccount','sms_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x1091,0x106));var _0x1109=function(_0x369b10,_0x18c239){_0x369b10=_0x369b10-0x0;var _0x218d6e=_0x1091[_0x369b10];return _0x218d6e;};'use strict';var _=require(_0x1109('0x0'));var util=require(_0x1109('0x1'));var logger=require('../../config/logger')(_0x1109('0x2'));var moment=require(_0x1109('0x3'));var BPromise=require(_0x1109('0x4'));var rp=require(_0x1109('0x5'));var fs=require('fs');var path=require(_0x1109('0x6'));var rimraf=require(_0x1109('0x7'));var config=require(_0x1109('0x8'));var attributes=require(_0x1109('0x9'));module[_0x1109('0xa')]=function(_0x45a550,_0x41e9b0){return _0x45a550['define'](_0x1109('0xb'),attributes,{'tableName':_0x1109('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ba041c..4cb01a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef87=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','map','include','model','attributes'];(function(_0x4c321c,_0x3e9da0){var _0x25accb=function(_0x21bf7a){while(--_0x21bf7a){_0x4c321c['push'](_0x4c321c['shift']());}};_0x25accb(++_0x3e9da0);}(_0xef87,0xfc));var _0x7ef8=function(_0x566e29,_0x3aa23c){_0x566e29=_0x566e29-0x0;var _0x4e8612=_0xef87[_0x566e29];return _0x4e8612;};'use strict';var _=require(_0x7ef8('0x0'));var util=require(_0x7ef8('0x1'));var moment=require(_0x7ef8('0x2'));var BPromise=require(_0x7ef8('0x3'));var rs=require(_0x7ef8('0x4'));var fs=require('fs');var Redis=require(_0x7ef8('0x5'));var db=require(_0x7ef8('0x6'))['db'];var utils=require(_0x7ef8('0x7'));var logger=require(_0x7ef8('0x8'))(_0x7ef8('0x9'));var config=require(_0x7ef8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x7ef8('0xb')][_0x7ef8('0xc')]({'port':0x232a});config[_0x7ef8('0xd')]=_[_0x7ef8('0xe')](config[_0x7ef8('0xd')],{'host':_0x7ef8('0xf'),'port':0x18eb});var socket=require(_0x7ef8('0x10'))(new Redis(config['redis']));require(_0x7ef8('0x11'))[_0x7ef8('0x12')](socket);function respondWithRpcPromise(_0x189d74,_0xb7090b,_0x177ff7){return new BPromise(function(_0x76a0e0,_0x5445e5){return client[_0x7ef8('0x13')](_0x189d74,_0x177ff7)[_0x7ef8('0x14')](function(_0x494384){logger[_0x7ef8('0x15')](_0x7ef8('0x16'),_0xb7090b,_0x7ef8('0x17'));logger[_0x7ef8('0x18')](_0x7ef8('0x19'),_0xb7090b,_0x7ef8('0x17'),JSON[_0x7ef8('0x1a')](_0x494384));if(_0x494384[_0x7ef8('0x1b')]){if(_0x494384[_0x7ef8('0x1b')][_0x7ef8('0x1c')]===0x1f4){logger[_0x7ef8('0x1b')](_0x7ef8('0x16'),_0xb7090b,_0x494384[_0x7ef8('0x1b')]['message']);return _0x5445e5(_0x494384[_0x7ef8('0x1b')][_0x7ef8('0x1d')]);}logger[_0x7ef8('0x1b')](_0x7ef8('0x16'),_0xb7090b,_0x494384[_0x7ef8('0x1b')][_0x7ef8('0x1d')]);return _0x76a0e0(_0x494384['error'][_0x7ef8('0x1d')]);}else{logger['info'](_0x7ef8('0x16'),_0xb7090b,'request\x20sent');_0x76a0e0(_0x494384[_0x7ef8('0x1e')][_0x7ef8('0x1d')]);}})[_0x7ef8('0x1f')](function(_0x2861c1){logger['error'](_0x7ef8('0x16'),_0xb7090b,_0x2861c1);_0x5445e5(_0x2861c1);});});}exports[_0x7ef8('0x20')]=function(_0x937701){var _0x51625f=this;return new Promise(function(_0x520b08,_0x3257e8){return db[_0x7ef8('0x21')][_0x7ef8('0x22')]({'raw':_0x937701[_0x7ef8('0x23')]?_0x937701[_0x7ef8('0x23')][_0x7ef8('0x24')]===undefined?!![]:![]:!![],'where':_0x937701[_0x7ef8('0x23')]?_0x937701['options'][_0x7ef8('0x25')]||null:null,'attributes':_0x937701[_0x7ef8('0x23')]?_0x937701[_0x7ef8('0x23')]['attributes']||null:null,'include':_0x937701[_0x7ef8('0x23')]?_0x937701[_0x7ef8('0x23')]['include']?_[_0x7ef8('0x26')](_0x937701[_0x7ef8('0x23')][_0x7ef8('0x27')],function(_0x11ccd9){return{'model':db[_0x11ccd9[_0x7ef8('0x28')]],'as':_0x11ccd9['as'],'attributes':_0x11ccd9[_0x7ef8('0x29')],'include':_0x11ccd9[_0x7ef8('0x27')]?_[_0x7ef8('0x26')](_0x11ccd9[_0x7ef8('0x27')],function(_0x3b294f){return{'model':db[_0x3b294f[_0x7ef8('0x28')]],'as':_0x3b294f['as'],'attributes':_0x3b294f[_0x7ef8('0x29')],'include':_0x3b294f[_0x7ef8('0x27')]?_[_0x7ef8('0x26')](_0x3b294f[_0x7ef8('0x27')],function(_0x48a872){return{'model':db[_0x48a872[_0x7ef8('0x28')]],'as':_0x48a872['as'],'attributes':_0x48a872[_0x7ef8('0x29')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x824ba3){logger[_0x7ef8('0x15')]('ShowSmsAccount',_0x937701);logger[_0x7ef8('0x18')](_0x7ef8('0x20'),_0x937701,JSON['stringify'](_0x824ba3));_0x520b08(_0x824ba3);})[_0x7ef8('0x1f')](function(_0x1a17ab){logger[_0x7ef8('0x1b')]('ShowSmsAccount',_0x1a17ab[_0x7ef8('0x1d')],_0x937701);_0x3257e8(_0x51625f[_0x7ef8('0x1b')](0x1f4,_0x1a17ab['message']));});});};
\ No newline at end of file
+var _0x25db=['localhost','socket.io-emitter','./smsAccount.socket','register','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','defaults','redis'];(function(_0x10a546,_0x5ea132){var _0x30e897=function(_0x54964b){while(--_0x54964b){_0x10a546['push'](_0x10a546['shift']());}};_0x30e897(++_0x5ea132);}(_0x25db,0xad));var _0xb25d=function(_0x25d5ec,_0x4efe2d){_0x25d5ec=_0x25d5ec-0x0;var _0x440d6f=_0x25db[_0x25d5ec];return _0x440d6f;};'use strict';var _=require(_0xb25d('0x0'));var util=require(_0xb25d('0x1'));var moment=require(_0xb25d('0x2'));var BPromise=require(_0xb25d('0x3'));var rs=require(_0xb25d('0x4'));var fs=require('fs');var Redis=require(_0xb25d('0x5'));var db=require(_0xb25d('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb25d('0x7'));var config=require('../../config/environment');var jayson=require(_0xb25d('0x8'));var client=jayson['client'][_0xb25d('0x9')]({'port':0x232a});config['redis']=_[_0xb25d('0xa')](config[_0xb25d('0xb')],{'host':_0xb25d('0xc'),'port':0x18eb});var socket=require(_0xb25d('0xd'))(new Redis(config[_0xb25d('0xb')]));require(_0xb25d('0xe'))[_0xb25d('0xf')](socket);function respondWithRpcPromise(_0x24aad2,_0x812d6b,_0x2bc2ea){return new BPromise(function(_0xe46e21,_0x29ca7a){return client[_0xb25d('0x10')](_0x24aad2,_0x2bc2ea)['then'](function(_0x62efae){logger[_0xb25d('0x11')](_0xb25d('0x12'),_0x812d6b,_0xb25d('0x13'));logger[_0xb25d('0x14')](_0xb25d('0x15'),_0x812d6b,'request\x20sent',JSON[_0xb25d('0x16')](_0x62efae));if(_0x62efae[_0xb25d('0x17')]){if(_0x62efae[_0xb25d('0x17')][_0xb25d('0x18')]===0x1f4){logger[_0xb25d('0x17')](_0xb25d('0x12'),_0x812d6b,_0x62efae[_0xb25d('0x17')][_0xb25d('0x19')]);return _0x29ca7a(_0x62efae[_0xb25d('0x17')]['message']);}logger[_0xb25d('0x17')](_0xb25d('0x12'),_0x812d6b,_0x62efae['error'][_0xb25d('0x19')]);return _0xe46e21(_0x62efae[_0xb25d('0x17')][_0xb25d('0x19')]);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x812d6b,_0xb25d('0x13'));_0xe46e21(_0x62efae[_0xb25d('0x1a')][_0xb25d('0x19')]);}})[_0xb25d('0x1b')](function(_0x2d7869){logger[_0xb25d('0x17')](_0xb25d('0x12'),_0x812d6b,_0x2d7869);_0x29ca7a(_0x2d7869);});});}exports[_0xb25d('0x1c')]=function(_0x5f3d25){var _0x51d643=this;return new Promise(function(_0x372fc5,_0x4293ae){return db[_0xb25d('0x1d')][_0xb25d('0x1e')]({'raw':_0x5f3d25['options']?_0x5f3d25[_0xb25d('0x1f')][_0xb25d('0x20')]===undefined?!![]:![]:!![],'where':_0x5f3d25[_0xb25d('0x1f')]?_0x5f3d25['options']['where']||null:null,'attributes':_0x5f3d25[_0xb25d('0x1f')]?_0x5f3d25[_0xb25d('0x1f')][_0xb25d('0x21')]||null:null,'include':_0x5f3d25['options']?_0x5f3d25[_0xb25d('0x1f')][_0xb25d('0x22')]?_[_0xb25d('0x23')](_0x5f3d25[_0xb25d('0x1f')][_0xb25d('0x22')],function(_0x53bb68){return{'model':db[_0x53bb68['model']],'as':_0x53bb68['as'],'attributes':_0x53bb68[_0xb25d('0x21')],'include':_0x53bb68[_0xb25d('0x22')]?_[_0xb25d('0x23')](_0x53bb68[_0xb25d('0x22')],function(_0x17bd61){return{'model':db[_0x17bd61[_0xb25d('0x24')]],'as':_0x17bd61['as'],'attributes':_0x17bd61[_0xb25d('0x21')],'include':_0x17bd61[_0xb25d('0x22')]?_[_0xb25d('0x23')](_0x17bd61['include'],function(_0x470885){return{'model':db[_0x470885[_0xb25d('0x24')]],'as':_0x470885['as'],'attributes':_0x470885[_0xb25d('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ecd3b){logger['info']('ShowSmsAccount',_0x5f3d25);logger['debug'](_0xb25d('0x1c'),_0x5f3d25,JSON[_0xb25d('0x16')](_0x4ecd3b));_0x372fc5(_0x4ecd3b);})[_0xb25d('0x1b')](function(_0x468dba){logger[_0xb25d('0x17')](_0xb25d('0x1c'),_0x468dba[_0xb25d('0x19')],_0x5f3d25);_0x4293ae(_0x51d643[_0xb25d('0x17')](0x1f4,_0x468dba[_0xb25d('0x19')]));});});};
\ No newline at end of file
index e306a46..cf0ec86 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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 963856f..1aef5f3 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(_0x561935,_0x5a6071){var _0x4f01b2=function(_0x45a82f){while(--_0x45a82f){_0x561935['push'](_0x561935['shift']());}};_0x4f01b2(++_0x5a6071);}(_0x3e74,0x175));var _0x43e7=function(_0x254786,_0x46a340){_0x254786=_0x254786-0x0;var _0x14504e=_0x3e74[_0x254786];return _0x14504e;};'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 _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x49385d,_0x19e364){var _0x47709b=function(_0x49c8d3){while(--_0x49c8d3){_0x49385d['push'](_0x49385d['shift']());}};_0x47709b(++_0x19e364);}(_0x55ca,0x126));var _0xa55c=function(_0x786e9,_0x1a029){_0x786e9=_0x786e9-0x0;var _0x1f891b=_0x55ca[_0x786e9];return _0x1f891b;};'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['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
index 0c81901..eafad16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8949=['exports','STRING','noop','TEXT'];(function(_0x1a7fb8,_0x2d89b0){var _0x55c96b=function(_0x114195){while(--_0x114195){_0x1a7fb8['push'](_0x1a7fb8['shift']());}};_0x55c96b(++_0x2d89b0);}(_0x8949,0x1b4));var _0x9894=function(_0x101237,_0x448f24){_0x101237=_0x101237-0x0;var _0x50ede4=_0x8949[_0x101237];return _0x50ede4;};'use strict';var Sequelize=require('sequelize');module[_0x9894('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x9894('0x1')],'allowNull':![],'defaultValue':_0x9894('0x2')},'appdata':{'type':Sequelize[_0x9894('0x3')]()},'description':{'type':Sequelize[_0x9894('0x1')]},'interval':{'type':Sequelize[_0x9894('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xc476=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x4238ce,_0x35cdc2){var _0xcf6a7e=function(_0x5403c8){while(--_0x5403c8){_0x4238ce['push'](_0x4238ce['shift']());}};_0xcf6a7e(++_0x35cdc2);}(_0xc476,0xb0));var _0x6c47=function(_0x602242,_0x3ecec6){_0x602242=_0x602242-0x0;var _0x37e751=_0xc476[_0x602242];return _0x37e751;};'use strict';var Sequelize=require(_0x6c47('0x0'));module[_0x6c47('0x1')]={'priority':{'type':Sequelize[_0x6c47('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x6c47('0x3')],'allowNull':![],'defaultValue':_0x6c47('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x6c47('0x3')]},'interval':{'type':Sequelize[_0x6c47('0x3')],'defaultValue':_0x6c47('0x5')}};
\ No newline at end of file
index e9d6dad..43d9171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd782=['pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','SmsApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort'];(function(_0x50d563,_0x4bae37){var _0x19c3f8=function(_0x4d7842){while(--_0x4d7842){_0x50d563['push'](_0x50d563['shift']());}};_0x19c3f8(++_0x4bae37);}(_0xd782,0x13f));var _0x2d78=function(_0x407769,_0x4363f4){_0x407769=_0x407769-0x0;var _0x168c9a=_0xd782[_0x407769];return _0x168c9a;};'use strict';var emlformat=require(_0x2d78('0x0'));var rimraf=require(_0x2d78('0x1'));var zipdir=require(_0x2d78('0x2'));var jsonpatch=require(_0x2d78('0x3'));var rp=require(_0x2d78('0x4'));var moment=require(_0x2d78('0x5'));var BPromise=require(_0x2d78('0x6'));var Mustache=require(_0x2d78('0x7'));var util=require('util');var path=require(_0x2d78('0x8'));var sox=require('sox');var csv=require(_0x2d78('0x9'));var ejs=require(_0x2d78('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2d78('0xb'));var squel=require('squel');var crypto=require(_0x2d78('0xc'));var jsforce=require(_0x2d78('0xd'));var deskjs=require(_0x2d78('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2d78('0xf'));var Papa=require(_0x2d78('0x10'));var Redis=require('ioredis');var authService=require(_0x2d78('0x11'));var qs=require(_0x2d78('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2d78('0x13'));var logger=require(_0x2d78('0x14'))(_0x2d78('0x15'));var utils=require(_0x2d78('0x16'));var config=require(_0x2d78('0x17'));var licenseUtil=require(_0x2d78('0x18'));var db=require(_0x2d78('0x19'))['db'];function respondWithStatusCode(_0x379eec,_0xa9ef55){_0xa9ef55=_0xa9ef55||0xcc;return function(_0x2db532){if(_0x2db532){return _0x379eec['sendStatus'](_0xa9ef55);}return _0x379eec[_0x2d78('0x1a')](_0xa9ef55)[_0x2d78('0x1b')]();};}function respondWithResult(_0x75097c,_0x745c73){_0x745c73=_0x745c73||0xc8;return function(_0x331b93){if(_0x331b93){return _0x75097c[_0x2d78('0x1a')](_0x745c73)['json'](_0x331b93);}};}function respondWithFilteredResult(_0xa24c35,_0x3cdae4){return function(_0x4f88e2){if(_0x4f88e2){var _0x4b6ecc=typeof _0x3cdae4[_0x2d78('0x1c')]===_0x2d78('0x1d')&&typeof _0x3cdae4['limit']===_0x2d78('0x1d');var _0x4d82e7=_0x4f88e2[_0x2d78('0x1e')];var _0x224ffb=_0x4b6ecc?0x0:_0x3cdae4['offset'];var _0x233f40=_0x4b6ecc?_0x4f88e2[_0x2d78('0x1e')]:_0x3cdae4[_0x2d78('0x1c')]+_0x3cdae4[_0x2d78('0x1f')];var _0x37844f;if(_0x233f40>=_0x4d82e7){_0x233f40=_0x4d82e7;_0x37844f=0xc8;}else{_0x37844f=0xce;}_0xa24c35[_0x2d78('0x1a')](_0x37844f);return _0xa24c35[_0x2d78('0x20')](_0x2d78('0x21'),_0x224ffb+'-'+_0x233f40+'/'+_0x4d82e7)['json'](_0x4f88e2);}return null;};}function patchUpdates(_0x5d052d){return function(_0x2536b5){try{jsonpatch[_0x2d78('0x22')](_0x2536b5,_0x5d052d,!![]);}catch(_0x165ab9){return BPromise[_0x2d78('0x23')](_0x165ab9);}return _0x2536b5[_0x2d78('0x24')]();};}function saveUpdates(_0x54f3e3,_0x437e18){return function(_0x35980c){if(_0x35980c){return _0x35980c[_0x2d78('0x25')](_0x54f3e3)[_0x2d78('0x26')](function(_0x312253){return _0x312253;});}return null;};}function removeEntity(_0x594bdc,_0x463b64){return function(_0x54a2e5){if(_0x54a2e5){return _0x54a2e5[_0x2d78('0x27')]()[_0x2d78('0x26')](function(){_0x594bdc['status'](0xcc)[_0x2d78('0x1b')]();});}};}function handleEntityNotFound(_0x5d79d8,_0x151b42){return function(_0x2e3730){if(!_0x2e3730){_0x5d79d8[_0x2d78('0x28')](0x194);}return _0x2e3730;};}function handleError(_0x33cb20,_0xc25693){_0xc25693=_0xc25693||0x1f4;return function(_0x55750f){logger[_0x2d78('0x29')](_0x55750f[_0x2d78('0x2a')]);if(_0x55750f[_0x2d78('0x2b')]){delete _0x55750f[_0x2d78('0x2b')];}_0x33cb20[_0x2d78('0x1a')](_0xc25693)['send'](_0x55750f);};}exports[_0x2d78('0x2c')]=function(_0x1abbc0,_0x19a316){var _0x1fdabb={},_0x3bc3f4={},_0x3f3ed3={'count':0x0,'rows':[]};var _0x22e282=_[_0x2d78('0x2d')](db[_0x2d78('0x2e')][_0x2d78('0x2f')],function(_0x444e97){return{'name':_0x444e97[_0x2d78('0x30')],'type':_0x444e97[_0x2d78('0x31')]['key']};});_0x3bc3f4[_0x2d78('0x32')]=_[_0x2d78('0x2d')](_0x22e282,_0x2d78('0x2b'));_0x3bc3f4[_0x2d78('0x33')]=_[_0x2d78('0x34')](_0x1abbc0[_0x2d78('0x33')]);_0x3bc3f4[_0x2d78('0x35')]=_[_0x2d78('0x36')](_0x3bc3f4[_0x2d78('0x32')],_0x3bc3f4[_0x2d78('0x33')]);_0x1fdabb[_0x2d78('0x37')]=_['intersection'](_0x3bc3f4[_0x2d78('0x32')],qs[_0x2d78('0x38')](_0x1abbc0[_0x2d78('0x33')]['fields']));_0x1fdabb[_0x2d78('0x37')]=_0x1fdabb['attributes'][_0x2d78('0x39')]?_0x1fdabb[_0x2d78('0x37')]:_0x3bc3f4['model'];if(!_0x1abbc0[_0x2d78('0x33')]['hasOwnProperty'](_0x2d78('0x3a'))){_0x1fdabb[_0x2d78('0x1f')]=qs[_0x2d78('0x1f')](_0x1abbc0[_0x2d78('0x33')][_0x2d78('0x1f')]);_0x1fdabb[_0x2d78('0x1c')]=qs['offset'](_0x1abbc0[_0x2d78('0x33')]['offset']);}_0x1fdabb[_0x2d78('0x3b')]=qs[_0x2d78('0x3c')](_0x1abbc0['query'][_0x2d78('0x3c')]);_0x1fdabb['where']=qs['filters'](_[_0x2d78('0x3d')](_0x1abbc0[_0x2d78('0x33')],_0x3bc3f4[_0x2d78('0x35')]),_0x22e282);if(_0x1abbc0[_0x2d78('0x33')]['filter']){_0x1fdabb[_0x2d78('0x3e')]=_[_0x2d78('0x3f')](_0x1fdabb['where'],{'$or':_[_0x2d78('0x2d')](_0x22e282,function(_0xc79053){if(_0xc79053[_0x2d78('0x31')]!==_0x2d78('0x40')){var _0x3c165c={};_0x3c165c[_0xc79053[_0x2d78('0x2b')]]={'$like':'%'+_0x1abbc0[_0x2d78('0x33')][_0x2d78('0x41')]+'%'};return _0x3c165c;}})});}_0x1fdabb=_[_0x2d78('0x3f')]({},_0x1fdabb,_0x1abbc0['options']);var _0x2ad5ee={'where':_0x1fdabb[_0x2d78('0x3e')]};return db['SmsApplication'][_0x2d78('0x1e')](_0x2ad5ee)[_0x2d78('0x26')](function(_0x480b44){_0x3f3ed3[_0x2d78('0x1e')]=_0x480b44;if(_0x1abbc0['query'][_0x2d78('0x42')]){_0x1fdabb[_0x2d78('0x43')]=[{'all':!![]}];}return db[_0x2d78('0x2e')][_0x2d78('0x44')](_0x1fdabb);})[_0x2d78('0x26')](function(_0x1b7126){_0x3f3ed3['rows']=_0x1b7126;return _0x3f3ed3;})[_0x2d78('0x26')](respondWithFilteredResult(_0x19a316,_0x1fdabb))[_0x2d78('0x45')](handleError(_0x19a316,null));};exports[_0x2d78('0x46')]=function(_0xa2c518,_0x144074){var _0x52204d={'raw':!![],'where':{'id':_0xa2c518[_0x2d78('0x47')]['id']}},_0x26d3f9={};_0x26d3f9['model']=_['keys'](db['SmsApplication']['rawAttributes']);_0x26d3f9[_0x2d78('0x33')]=_['keys'](_0xa2c518[_0x2d78('0x33')]);_0x26d3f9[_0x2d78('0x35')]=_[_0x2d78('0x36')](_0x26d3f9[_0x2d78('0x32')],_0x26d3f9[_0x2d78('0x33')]);_0x52204d[_0x2d78('0x37')]=_[_0x2d78('0x36')](_0x26d3f9['model'],qs[_0x2d78('0x38')](_0xa2c518[_0x2d78('0x33')][_0x2d78('0x38')]));_0x52204d[_0x2d78('0x37')]=_0x52204d[_0x2d78('0x37')]['length']?_0x52204d[_0x2d78('0x37')]:_0x26d3f9[_0x2d78('0x32')];if(_0xa2c518[_0x2d78('0x33')][_0x2d78('0x42')]){_0x52204d['include']=[{'all':!![]}];}_0x52204d=_[_0x2d78('0x3f')]({},_0x52204d,_0xa2c518[_0x2d78('0x48')]);return db[_0x2d78('0x2e')][_0x2d78('0x49')](_0x52204d)[_0x2d78('0x26')](handleEntityNotFound(_0x144074,null))[_0x2d78('0x26')](respondWithResult(_0x144074,null))[_0x2d78('0x45')](handleError(_0x144074,null));};exports['create']=function(_0x2b4e20,_0x46efcc){return db[_0x2d78('0x2e')][_0x2d78('0x4a')](_0x2b4e20['body'],{})[_0x2d78('0x26')](respondWithResult(_0x46efcc,0xc9))[_0x2d78('0x45')](handleError(_0x46efcc,null));};exports['update']=function(_0x577311,_0x4518eb){if(_0x577311['body']['id']){delete _0x577311[_0x2d78('0x4b')]['id'];}return db[_0x2d78('0x2e')][_0x2d78('0x49')]({'where':{'id':_0x577311[_0x2d78('0x47')]['id']}})[_0x2d78('0x26')](handleEntityNotFound(_0x4518eb,null))['then'](saveUpdates(_0x577311['body'],null))['then'](respondWithResult(_0x4518eb,null))[_0x2d78('0x45')](handleError(_0x4518eb,null));};exports[_0x2d78('0x27')]=function(_0x301fc9,_0x33299b){return db[_0x2d78('0x2e')][_0x2d78('0x49')]({'where':{'id':_0x301fc9[_0x2d78('0x47')]['id']}})[_0x2d78('0x26')](handleEntityNotFound(_0x33299b,null))['then'](removeEntity(_0x33299b,null))[_0x2d78('0x45')](handleError(_0x33299b,null));};
\ No newline at end of file
+var _0x5f2a=['../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','index','SmsApplication','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','length','find','create','update','body','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5f2a,0x1a2));var _0xa5f2=function(_0x259f53,_0x10867e){_0x259f53=_0x259f53-0x0;var _0x45dc84=_0x5f2a[_0x259f53];return _0x45dc84;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa5f2('0x0'));var jsonpatch=require(_0xa5f2('0x1'));var rp=require('request-promise');var moment=require(_0xa5f2('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xa5f2('0x3'));var util=require('util');var path=require(_0xa5f2('0x4'));var sox=require(_0xa5f2('0x5'));var csv=require(_0xa5f2('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa5f2('0x7'));var _=require(_0xa5f2('0x8'));var squel=require(_0xa5f2('0x9'));var crypto=require('crypto');var jsforce=require(_0xa5f2('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa5f2('0xb'));var Papa=require(_0xa5f2('0xc'));var Redis=require(_0xa5f2('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa5f2('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa5f2('0xf'));var utils=require(_0xa5f2('0x10'));var config=require(_0xa5f2('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xa5f2('0x12'))['db'];function respondWithStatusCode(_0x4791fa,_0x359b78){_0x359b78=_0x359b78||0xcc;return function(_0xd48a02){if(_0xd48a02){return _0x4791fa['sendStatus'](_0x359b78);}return _0x4791fa[_0xa5f2('0x13')](_0x359b78)[_0xa5f2('0x14')]();};}function respondWithResult(_0x471d9d,_0x35d41f){_0x35d41f=_0x35d41f||0xc8;return function(_0x472bef){if(_0x472bef){return _0x471d9d[_0xa5f2('0x13')](_0x35d41f)[_0xa5f2('0x15')](_0x472bef);}};}function respondWithFilteredResult(_0x2fc23a,_0x3c8974){return function(_0x17a907){if(_0x17a907){var _0x5a60c4=typeof _0x3c8974[_0xa5f2('0x16')]===_0xa5f2('0x17')&&typeof _0x3c8974[_0xa5f2('0x18')]===_0xa5f2('0x17');var _0x403229=_0x17a907[_0xa5f2('0x19')];var _0x5713f9=_0x5a60c4?0x0:_0x3c8974[_0xa5f2('0x16')];var _0x2d2048=_0x5a60c4?_0x17a907['count']:_0x3c8974[_0xa5f2('0x16')]+_0x3c8974['limit'];var _0x179b0a;if(_0x2d2048>=_0x403229){_0x2d2048=_0x403229;_0x179b0a=0xc8;}else{_0x179b0a=0xce;}_0x2fc23a['status'](_0x179b0a);return _0x2fc23a[_0xa5f2('0x1a')](_0xa5f2('0x1b'),_0x5713f9+'-'+_0x2d2048+'/'+_0x403229)[_0xa5f2('0x15')](_0x17a907);}return null;};}function patchUpdates(_0x3e0a3a){return function(_0x3a68c5){try{jsonpatch[_0xa5f2('0x1c')](_0x3a68c5,_0x3e0a3a,!![]);}catch(_0x5f42c0){return BPromise[_0xa5f2('0x1d')](_0x5f42c0);}return _0x3a68c5[_0xa5f2('0x1e')]();};}function saveUpdates(_0x350d6f,_0x464c35){return function(_0x15265f){if(_0x15265f){return _0x15265f['update'](_0x350d6f)[_0xa5f2('0x1f')](function(_0x42ed0b){return _0x42ed0b;});}return null;};}function removeEntity(_0x5b88c3,_0x262d08){return function(_0x30643b){if(_0x30643b){return _0x30643b[_0xa5f2('0x20')]()[_0xa5f2('0x1f')](function(){_0x5b88c3[_0xa5f2('0x13')](0xcc)[_0xa5f2('0x14')]();});}};}function handleEntityNotFound(_0x1df8d4,_0x1aa84d){return function(_0x32957a){if(!_0x32957a){_0x1df8d4[_0xa5f2('0x21')](0x194);}return _0x32957a;};}function handleError(_0x1430dc,_0x316734){_0x316734=_0x316734||0x1f4;return function(_0x3609da){logger[_0xa5f2('0x22')](_0x3609da['stack']);if(_0x3609da[_0xa5f2('0x23')]){delete _0x3609da[_0xa5f2('0x23')];}_0x1430dc[_0xa5f2('0x13')](_0x316734)[_0xa5f2('0x24')](_0x3609da);};}exports[_0xa5f2('0x25')]=function(_0x3e5461,_0x5e3c54){var _0x24783d={},_0x57d402={},_0x14adce={'count':0x0,'rows':[]};var _0x3300f6=_['map'](db[_0xa5f2('0x26')][_0xa5f2('0x27')],function(_0x1cd695){return{'name':_0x1cd695[_0xa5f2('0x28')],'type':_0x1cd695['type']['key']};});_0x57d402[_0xa5f2('0x29')]=_['map'](_0x3300f6,_0xa5f2('0x23'));_0x57d402[_0xa5f2('0x2a')]=_[_0xa5f2('0x2b')](_0x3e5461['query']);_0x57d402[_0xa5f2('0x2c')]=_[_0xa5f2('0x2d')](_0x57d402['model'],_0x57d402['query']);_0x24783d[_0xa5f2('0x2e')]=_[_0xa5f2('0x2d')](_0x57d402['model'],qs['fields'](_0x3e5461[_0xa5f2('0x2a')]['fields']));_0x24783d[_0xa5f2('0x2e')]=_0x24783d[_0xa5f2('0x2e')]['length']?_0x24783d[_0xa5f2('0x2e')]:_0x57d402['model'];if(!_0x3e5461['query'][_0xa5f2('0x2f')](_0xa5f2('0x30'))){_0x24783d[_0xa5f2('0x18')]=qs[_0xa5f2('0x18')](_0x3e5461['query'][_0xa5f2('0x18')]);_0x24783d[_0xa5f2('0x16')]=qs[_0xa5f2('0x16')](_0x3e5461[_0xa5f2('0x2a')][_0xa5f2('0x16')]);}_0x24783d[_0xa5f2('0x31')]=qs['sort'](_0x3e5461[_0xa5f2('0x2a')][_0xa5f2('0x32')]);_0x24783d['where']=qs[_0xa5f2('0x2c')](_[_0xa5f2('0x33')](_0x3e5461[_0xa5f2('0x2a')],_0x57d402[_0xa5f2('0x2c')]),_0x3300f6);if(_0x3e5461[_0xa5f2('0x2a')][_0xa5f2('0x34')]){_0x24783d[_0xa5f2('0x35')]=_[_0xa5f2('0x36')](_0x24783d['where'],{'$or':_[_0xa5f2('0x37')](_0x3300f6,function(_0x1d84ed){if(_0x1d84ed[_0xa5f2('0x38')]!==_0xa5f2('0x39')){var _0x441027={};_0x441027[_0x1d84ed[_0xa5f2('0x23')]]={'$like':'%'+_0x3e5461['query']['filter']+'%'};return _0x441027;}})});}_0x24783d=_[_0xa5f2('0x36')]({},_0x24783d,_0x3e5461[_0xa5f2('0x3a')]);var _0x2cd756={'where':_0x24783d[_0xa5f2('0x35')]};return db[_0xa5f2('0x26')][_0xa5f2('0x19')](_0x2cd756)[_0xa5f2('0x1f')](function(_0x4c2da5){_0x14adce['count']=_0x4c2da5;if(_0x3e5461[_0xa5f2('0x2a')][_0xa5f2('0x3b')]){_0x24783d[_0xa5f2('0x3c')]=[{'all':!![]}];}return db[_0xa5f2('0x26')][_0xa5f2('0x3d')](_0x24783d);})[_0xa5f2('0x1f')](function(_0x34d514){_0x14adce[_0xa5f2('0x3e')]=_0x34d514;return _0x14adce;})[_0xa5f2('0x1f')](respondWithFilteredResult(_0x5e3c54,_0x24783d))[_0xa5f2('0x3f')](handleError(_0x5e3c54,null));};exports[_0xa5f2('0x40')]=function(_0x2ccc5e,_0x120d84){var _0x47f256={'raw':!![],'where':{'id':_0x2ccc5e[_0xa5f2('0x41')]['id']}},_0x38a221={};_0x38a221[_0xa5f2('0x29')]=_[_0xa5f2('0x2b')](db[_0xa5f2('0x26')]['rawAttributes']);_0x38a221[_0xa5f2('0x2a')]=_[_0xa5f2('0x2b')](_0x2ccc5e[_0xa5f2('0x2a')]);_0x38a221[_0xa5f2('0x2c')]=_[_0xa5f2('0x2d')](_0x38a221[_0xa5f2('0x29')],_0x38a221['query']);_0x47f256[_0xa5f2('0x2e')]=_['intersection'](_0x38a221[_0xa5f2('0x29')],qs[_0xa5f2('0x42')](_0x2ccc5e[_0xa5f2('0x2a')][_0xa5f2('0x42')]));_0x47f256[_0xa5f2('0x2e')]=_0x47f256[_0xa5f2('0x2e')][_0xa5f2('0x43')]?_0x47f256[_0xa5f2('0x2e')]:_0x38a221[_0xa5f2('0x29')];if(_0x2ccc5e[_0xa5f2('0x2a')][_0xa5f2('0x3b')]){_0x47f256[_0xa5f2('0x3c')]=[{'all':!![]}];}_0x47f256=_[_0xa5f2('0x36')]({},_0x47f256,_0x2ccc5e['options']);return db[_0xa5f2('0x26')][_0xa5f2('0x44')](_0x47f256)[_0xa5f2('0x1f')](handleEntityNotFound(_0x120d84,null))['then'](respondWithResult(_0x120d84,null))[_0xa5f2('0x3f')](handleError(_0x120d84,null));};exports[_0xa5f2('0x45')]=function(_0x4dbfd7,_0x12c79c){return db['SmsApplication'][_0xa5f2('0x45')](_0x4dbfd7['body'],{})[_0xa5f2('0x1f')](respondWithResult(_0x12c79c,0xc9))[_0xa5f2('0x3f')](handleError(_0x12c79c,null));};exports[_0xa5f2('0x46')]=function(_0x50d7cc,_0x51d349){if(_0x50d7cc['body']['id']){delete _0x50d7cc[_0xa5f2('0x47')]['id'];}return db[_0xa5f2('0x26')][_0xa5f2('0x44')]({'where':{'id':_0x50d7cc[_0xa5f2('0x41')]['id']}})[_0xa5f2('0x1f')](handleEntityNotFound(_0x51d349,null))[_0xa5f2('0x1f')](saveUpdates(_0x50d7cc['body'],null))['then'](respondWithResult(_0x51d349,null))[_0xa5f2('0x3f')](handleError(_0x51d349,null));};exports['destroy']=function(_0x31cdf4,_0x5c3eeb){return db[_0xa5f2('0x26')][_0xa5f2('0x44')]({'where':{'id':_0x31cdf4[_0xa5f2('0x41')]['id']}})[_0xa5f2('0x1f')](handleEntityNotFound(_0x5c3eeb,null))['then'](removeEntity(_0x5c3eeb,null))[_0xa5f2('0x3f')](handleError(_0x5c3eeb,null));};
\ No newline at end of file
index 9511dcf..07a7d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02d1=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x5459b0,_0x35e57e){var _0xde7d25=function(_0x52bff0){while(--_0x52bff0){_0x5459b0['push'](_0x5459b0['shift']());}};_0xde7d25(++_0x35e57e);}(_0x02d1,0xa8));var _0x102d=function(_0x338c61,_0x489b38){_0x338c61=_0x338c61-0x0;var _0x19bfe6=_0x02d1[_0x338c61];return _0x19bfe6;};'use strict';var _=require(_0x102d('0x0'));var util=require('util');var logger=require(_0x102d('0x1'))(_0x102d('0x2'));var moment=require(_0x102d('0x3'));var BPromise=require(_0x102d('0x4'));var rp=require(_0x102d('0x5'));var fs=require('fs');var path=require(_0x102d('0x6'));var rimraf=require('rimraf');var config=require(_0x102d('0x7'));var attributes=require(_0x102d('0x8'));module['exports']=function(_0x5c0458,_0x327dad){return _0x5c0458[_0x102d('0x9')](_0x102d('0xa'),attributes,{'tableName':_0x102d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x102d('0xc'),'collate':_0x102d('0xd')});};
\ No newline at end of file
+var _0xbbea=['request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x182d7d,_0x434167){var _0x59748e=function(_0x3ec3d4){while(--_0x3ec3d4){_0x182d7d['push'](_0x182d7d['shift']());}};_0x59748e(++_0x434167);}(_0xbbea,0xda));var _0xabbe=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xbbea[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xabbe('0x0'));var util=require(_0xabbe('0x1'));var logger=require(_0xabbe('0x2'))(_0xabbe('0x3'));var moment=require(_0xabbe('0x4'));var BPromise=require(_0xabbe('0x5'));var rp=require(_0xabbe('0x6'));var fs=require('fs');var path=require(_0xabbe('0x7'));var rimraf=require(_0xabbe('0x8'));var config=require(_0xabbe('0x9'));var attributes=require(_0xabbe('0xa'));module['exports']=function(_0x575a28,_0x253dcd){return _0x575a28[_0xabbe('0xb')](_0xabbe('0xc'),attributes,{'tableName':_0xabbe('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xabbe('0xe'),'collate':_0xabbe('0xf')});};
\ No newline at end of file
index a1b5f7a..a3e7014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c19=['message','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','SmsApplication,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x16ca34,_0x3c2a3b){var _0x1f45c4=function(_0x2fab33){while(--_0x2fab33){_0x16ca34['push'](_0x16ca34['shift']());}};_0x1f45c4(++_0x3c2a3b);}(_0x0c19,0xf5));var _0x90c1=function(_0x43808f,_0x25d201){_0x43808f=_0x43808f-0x0;var _0x1fa9d0=_0x0c19[_0x43808f];return _0x1fa9d0;};'use strict';var _=require(_0x90c1('0x0'));var util=require(_0x90c1('0x1'));var moment=require(_0x90c1('0x2'));var BPromise=require(_0x90c1('0x3'));var rs=require(_0x90c1('0x4'));var fs=require('fs');var Redis=require(_0x90c1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x90c1('0x6'));var logger=require(_0x90c1('0x7'))(_0x90c1('0x8'));var config=require('../../config/environment');var jayson=require(_0x90c1('0x9'));var client=jayson[_0x90c1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x440f7a,_0x954ac4,_0x37d247){return new BPromise(function(_0x2ed328,_0x351d07){return client[_0x90c1('0xb')](_0x440f7a,_0x37d247)[_0x90c1('0xc')](function(_0x4895b5){logger[_0x90c1('0xd')](_0x90c1('0xe'),_0x954ac4,'request\x20sent');logger[_0x90c1('0xf')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x954ac4,'request\x20sent',JSON[_0x90c1('0x10')](_0x4895b5));if(_0x4895b5['error']){if(_0x4895b5[_0x90c1('0x11')][_0x90c1('0x12')]===0x1f4){logger[_0x90c1('0x11')](_0x90c1('0xe'),_0x954ac4,_0x4895b5['error']['message']);return _0x351d07(_0x4895b5[_0x90c1('0x11')][_0x90c1('0x13')]);}logger[_0x90c1('0x11')](_0x90c1('0xe'),_0x954ac4,_0x4895b5['error'][_0x90c1('0x13')]);return _0x2ed328(_0x4895b5[_0x90c1('0x11')][_0x90c1('0x13')]);}else{logger[_0x90c1('0xd')](_0x90c1('0xe'),_0x954ac4,_0x90c1('0x14'));_0x2ed328(_0x4895b5['result'][_0x90c1('0x13')]);}})[_0x90c1('0x15')](function(_0x45a64c){logger[_0x90c1('0x11')](_0x90c1('0xe'),_0x954ac4,_0x45a64c);_0x351d07(_0x45a64c);});});}
\ No newline at end of file
+var _0xf55c=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4175c9,_0x25cd54){var _0x5458ee=function(_0x179080){while(--_0x179080){_0x4175c9['push'](_0x4175c9['shift']());}};_0x5458ee(++_0x25cd54);}(_0xf55c,0x1e7));var _0xcf55=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xf55c[_0x298ed3];return _0x5aad28;};'use strict';var _=require(_0xcf55('0x0'));var util=require('util');var moment=require(_0xcf55('0x1'));var BPromise=require(_0xcf55('0x2'));var rs=require(_0xcf55('0x3'));var fs=require('fs');var Redis=require(_0xcf55('0x4'));var db=require(_0xcf55('0x5'))['db'];var utils=require(_0xcf55('0x6'));var logger=require(_0xcf55('0x7'))('rpc');var config=require(_0xcf55('0x8'));var jayson=require(_0xcf55('0x9'));var client=jayson[_0xcf55('0xa')][_0xcf55('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b3453,_0x29566b,_0x53deb4){return new BPromise(function(_0x7003f1,_0x3018aa){return client['request'](_0x4b3453,_0x53deb4)[_0xcf55('0xc')](function(_0x3ce5d2){logger[_0xcf55('0xd')](_0xcf55('0xe'),_0x29566b,_0xcf55('0xf'));logger[_0xcf55('0x10')](_0xcf55('0x11'),_0x29566b,'request\x20sent',JSON[_0xcf55('0x12')](_0x3ce5d2));if(_0x3ce5d2[_0xcf55('0x13')]){if(_0x3ce5d2['error']['code']===0x1f4){logger[_0xcf55('0x13')](_0xcf55('0xe'),_0x29566b,_0x3ce5d2[_0xcf55('0x13')][_0xcf55('0x14')]);return _0x3018aa(_0x3ce5d2[_0xcf55('0x13')][_0xcf55('0x14')]);}logger[_0xcf55('0x13')](_0xcf55('0xe'),_0x29566b,_0x3ce5d2[_0xcf55('0x13')][_0xcf55('0x14')]);return _0x7003f1(_0x3ce5d2[_0xcf55('0x13')][_0xcf55('0x14')]);}else{logger['info'](_0xcf55('0xe'),_0x29566b,_0xcf55('0xf'));_0x7003f1(_0x3ce5d2[_0xcf55('0x15')][_0xcf55('0x14')]);}})[_0xcf55('0x16')](function(_0x4b0c1a){logger[_0xcf55('0x13')](_0xcf55('0xe'),_0x29566b,_0x4b0c1a);_0x3018aa(_0x4b0c1a);});});}
\ No newline at end of file
index ad5e39c..1a70b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['put','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','/:id/download','download','create','post','tracked','sms','smsinteraction:addtags','addTags'];(function(_0xe92119,_0xce0059){var _0x1f6151=function(_0x7babb){while(--_0x7babb){_0xe92119['push'](_0xe92119['shift']());}};_0x1f6151(++_0xce0059);}(_0xea28,0x13a));var _0x8ea2=function(_0x3c22d4,_0x27a9d0){_0x3c22d4=_0x3c22d4-0x0;var _0x2ec7d7=_0xea28[_0x3c22d4];return _0x2ec7d7;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xa')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0xa')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['getMessages']);router['get'](_0x8ea2('0x12'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);router['post']('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x14')]);router[_0x8ea2('0x15')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['addMessage']);router[_0x8ea2('0x15')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x8ea2('0x18')),controller[_0x8ea2('0x19')]);router[_0x8ea2('0x1a')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),interaction[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x8ea2('0x1b')),controller[_0x8ea2('0x1c')]);router[_0x8ea2('0x1d')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),interaction[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x8ea2('0x1e')),controller[_0x8ea2('0x1f')]);router[_0x8ea2('0x1d')](_0x8ea2('0x20'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0x087b=['sms','smsinteraction:addtags','addTags','put','update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked'];(function(_0x5b22e5,_0x50a727){var _0x50aa89=function(_0x391c4e){while(--_0x391c4e){_0x5b22e5['push'](_0x5b22e5['shift']());}};_0x50aa89(++_0x50a727);}(_0x087b,0x11a));var _0xb087=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0x087b[_0x307d86];return _0x361745;};'use strict';var multer=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb087('0x2'));var router=express['Router']();var fs_extra=require(_0xb087('0x3'));var auth=require(_0xb087('0x4'));var interaction=require(_0xb087('0x5'));var config=require(_0xb087('0x6'));var controller=require(_0xb087('0x7'));router[_0xb087('0x8')]('/',auth[_0xb087('0x9')](),controller[_0xb087('0xa')]);router[_0xb087('0x8')](_0xb087('0xb'),auth[_0xb087('0x9')](),controller[_0xb087('0xc')]);router[_0xb087('0x8')](_0xb087('0xd'),auth[_0xb087('0x9')](),controller[_0xb087('0xe')]);router[_0xb087('0x8')]('/:id/messages',auth[_0xb087('0x9')](),controller[_0xb087('0xf')]);router[_0xb087('0x8')](_0xb087('0x10'),auth[_0xb087('0x9')](),controller[_0xb087('0x11')]);router[_0xb087('0x12')]('/',auth['isAuthenticated'](),controller[_0xb087('0x13')]);router[_0xb087('0x12')](_0xb087('0x14'),auth['isAuthenticated'](),controller[_0xb087('0x15')]);router[_0xb087('0x12')](_0xb087('0x16'),auth[_0xb087('0x9')](),interaction[_0xb087('0x17')](_0xb087('0x18'),_0xb087('0x19')),controller[_0xb087('0x1a')]);router[_0xb087('0x1b')](_0xb087('0xd'),auth['isAuthenticated'](),interaction[_0xb087('0x17')](_0xb087('0x18'),'smsinteraction:update'),controller[_0xb087('0x1c')]);router[_0xb087('0x1d')](_0xb087('0xd'),auth['isAuthenticated'](),interaction[_0xb087('0x17')](_0xb087('0x18'),_0xb087('0x1e')),controller[_0xb087('0x1f')]);router['delete'](_0xb087('0x16'),auth[_0xb087('0x9')](),controller[_0xb087('0x20')]);module[_0xb087('0x21')]=router;
\ No newline at end of file
index 0fbf198..1f3b93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['out','sequelize','moment','exports','BOOLEAN','STRING','DATE','ENUM'];(function(_0x55f0cf,_0x99653d){var _0x4a0f8b=function(_0x146e8d){while(--_0x146e8d){_0x55f0cf['push'](_0x55f0cf['shift']());}};_0x4a0f8b(++_0x99653d);}(_0xd8fb,0x99));var _0xbd8f=function(_0x17bd42,_0x51a85a){_0x17bd42=_0x17bd42-0x0;var _0x241b35=_0xd8fb[_0x17bd42];return _0x241b35;};'use strict';var Sequelize=require(_0xbd8f('0x0'));var moment=require(_0xbd8f('0x1'));module[_0xbd8f('0x2')]={'closed':{'type':Sequelize[_0xbd8f('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xbd8f('0x4')]},'note':{'type':Sequelize[_0xbd8f('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xbd8f('0x5')]},'firstMsgDirection':{'type':Sequelize[_0xbd8f('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xbd8f('0x5')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xbd8f('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd5b2=['moment','exports','DATE','STRING','out'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0xd5b2,0x10e));var _0x2d5b=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xd5b2[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x2d5b('0x0'));module[_0x2d5b('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2d5b('0x2')]},'disposition':{'type':Sequelize[_0x2d5b('0x3')]},'secondDisposition':{'type':Sequelize[_0x2d5b('0x3')]},'thirdDisposition':{'type':Sequelize[_0x2d5b('0x3')]},'note':{'type':Sequelize[_0x2d5b('0x3')]},'phone':{'type':Sequelize[_0x2d5b('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2d5b('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x2d5b('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 9ade7ef..64af049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb989=['from','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','o.id\x20=\x20i.UserId','sms_accounts','it.SmsInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','$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?','find','ContactId','buildExpression','text','start','Tag','forEach','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','some','isEmpty','SmsAccountId','where','i.SmsAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','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','clone','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','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','agent','toString','merge','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','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','sequelize','groupBy','SmsInteractionId','all','rows','catch','show','rawAttributes','includeAll','include','options','body','params','describe','addMessage','SmsMessage','ids','omit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','unix','join','root','tmp','server','files','attachments','transcript-%d-%s.zip','CmContact','firstName','Messages','direction','secret','Account','Owner','mkdirSync','Sms','N.A.','createdAt','closed','closedAt','disposition','out','System','lastName','renderFile','views','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','fast-json-patch','request-promise','mustache','path','fs-extra','lodash','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','error','name','send','map','fullname','TagIds','Tags','split','push','then','SmsInteraction','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','filters','select','field','tools_tags','u.id','u.fullname','ui.SmsInteractionId'];(function(_0x2a15ff,_0x37a68a){var _0x128ba1=function(_0xfe8fc1){while(--_0xfe8fc1){_0x2a15ff['push'](_0x2a15ff['shift']());}};_0x128ba1(++_0x37a68a);}(_0xb989,0x180));var _0x9b98=function(_0xb83ec2,_0x18e73b){_0xb83ec2=_0xb83ec2-0x0;var _0x4d2fbf=_0xb989[_0xb83ec2];return _0x4d2fbf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9b98('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9b98('0x1'));var rp=require(_0x9b98('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9b98('0x3'));var util=require('util');var path=require(_0x9b98('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9b98('0x5'));var _=require(_0x9b98('0x6'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9b98('0x7'));var toCsv=require(_0x9b98('0x8'));var querystring=require('querystring');var Papa=require(_0x9b98('0x9'));var Redis=require(_0x9b98('0xa'));var authService=require(_0x9b98('0xb'));var qs=require(_0x9b98('0xc'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x9b98('0xd'));var hardwareService=require(_0x9b98('0xe'));var logger=require(_0x9b98('0xf'))(_0x9b98('0x10'));var utils=require(_0x9b98('0x11'));var config=require(_0x9b98('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b98('0x13'))['db'];config[_0x9b98('0x14')]=_['defaults'](config[_0x9b98('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x9b98('0x15'))(new Redis(config['redis']));require(_0x9b98('0x16'))[_0x9b98('0x17')](socket);function respondWithStatusCode(_0x240119,_0x34e3a1){_0x34e3a1=_0x34e3a1||0xcc;return function(_0x1d5053){if(_0x1d5053){return _0x240119[_0x9b98('0x18')](_0x34e3a1);}return _0x240119['status'](_0x34e3a1)[_0x9b98('0x19')]();};}function respondWithResult(_0x1b38e2,_0xf917cb){_0xf917cb=_0xf917cb||0xc8;return function(_0x1974c5){if(_0x1974c5){return _0x1b38e2[_0x9b98('0x1a')](_0xf917cb)[_0x9b98('0x1b')](_0x1974c5);}};}function respondWithFilteredResult(_0x38c009,_0x54a167){return function(_0x4d3014){if(_0x4d3014){var _0x296c94=typeof _0x54a167[_0x9b98('0x1c')]===_0x9b98('0x1d')&&typeof _0x54a167[_0x9b98('0x1e')]===_0x9b98('0x1d');var _0x300f19=_0x4d3014[_0x9b98('0x1f')];var _0x3e018d=_0x296c94?0x0:_0x54a167[_0x9b98('0x1c')];var _0x8b5562=_0x296c94?_0x4d3014[_0x9b98('0x1f')]:_0x54a167[_0x9b98('0x1c')]+_0x54a167[_0x9b98('0x1e')];var _0x5682b3;if(_0x8b5562>=_0x300f19){_0x8b5562=_0x300f19;_0x5682b3=0xc8;}else{_0x5682b3=0xce;}_0x38c009[_0x9b98('0x1a')](_0x5682b3);return _0x38c009['set'](_0x9b98('0x20'),_0x3e018d+'-'+_0x8b5562+'/'+_0x300f19)['json'](_0x4d3014);}return null;};}function patchUpdates(_0x21c52e){return function(_0x32ea14){try{jsonpatch[_0x9b98('0x21')](_0x32ea14,_0x21c52e,!![]);}catch(_0x4e62df){return BPromise['reject'](_0x4e62df);}return _0x32ea14[_0x9b98('0x22')]();};}function saveUpdates(_0x31c27e,_0x435e39){return function(_0x3a99ba){if(_0x3a99ba){return _0x3a99ba[_0x9b98('0x23')](_0x31c27e)['then'](function(_0x632338){return _0x632338;});}return null;};}function removeEntity(_0x541d12,_0x151182){return function(_0x7e328d){if(_0x7e328d){return _0x7e328d[_0x9b98('0x24')]()['then'](function(){_0x541d12[_0x9b98('0x1a')](0xcc)[_0x9b98('0x19')]();});}};}function handleEntityNotFound(_0x2d6c88,_0x164276){return function(_0x589e1f){if(!_0x589e1f){_0x2d6c88[_0x9b98('0x18')](0x194);}return _0x589e1f;};}function handleError(_0x2b5a24,_0x1ab889){_0x1ab889=_0x1ab889||0x1f4;return function(_0x268d06){logger[_0x9b98('0x25')](_0x268d06['stack']);if(_0x268d06['name']){delete _0x268d06[_0x9b98('0x26')];}_0x2b5a24[_0x9b98('0x1a')](_0x1ab889)[_0x9b98('0x27')](_0x268d06);};}function getInteractionUsers(_0x47f234,_0xf7eaa5){return new BPromise(function(_0x3d96ad,_0x527a3d){try{if(_0xf7eaa5[_0x47f234['id']]){_0x47f234['Users']=_[_0x9b98('0x28')](_0xf7eaa5[_0x47f234['id']],function(_0x32c589){return{'id':_0x32c589['id'],'fullname':_0x32c589[_0x9b98('0x29')]};});}}catch(_0x360d03){_0x527a3d(_0x360d03);}_0x3d96ad(_0x47f234);});}function getInteractionTags(_0x5d9e5e,_0x2cad16){return new BPromise(function(_0x4420af,_0x3939c6){try{if(_0x5d9e5e[_0x9b98('0x2a')]){_0x5d9e5e[_0x9b98('0x2b')]=[];_0x5d9e5e[_0x9b98('0x2a')][_0x9b98('0x2c')](',')['forEach'](function(_0x4f8e73){_0x5d9e5e[_0x9b98('0x2b')][_0x9b98('0x2d')](_0x2cad16[_0x4f8e73]);});}delete _0x5d9e5e[_0x9b98('0x2a')];}catch(_0x4607ae){_0x3939c6(_0x4607ae);}_0x4420af(_0x5d9e5e);});}function updateSmsInteraction(_0x47b220,_0x10e833,_0x450f2f){return new BPromise(function(_0x52ac8f,_0x299e20){return getInteractionUsers(_0x47b220,_0x450f2f)[_0x9b98('0x2e')](function(_0x541d48){return getInteractionTags(_0x541d48,_0x10e833);})['then'](function(_0x516749){_0x52ac8f(_0x516749);})['catch'](function(_0xc8fb48){_0x299e20(_0xc8fb48);});});}exports['index']=function(_0x2264a3,_0x3687b8){var _0x232309={},_0x3a9ed9={},_0x425711={'count':0x0,'rows':[]};var _0x183430=_[_0x9b98('0x28')](db[_0x9b98('0x2f')]['rawAttributes'],function(_0x3b0b8a){return{'name':_0x3b0b8a[_0x9b98('0x30')],'type':_0x3b0b8a[_0x9b98('0x31')][_0x9b98('0x32')]};});_0x3a9ed9[_0x9b98('0x33')]=_[_0x9b98('0x28')](_0x183430,_0x9b98('0x26'));_0x3a9ed9['query']=_[_0x9b98('0x34')](_0x2264a3[_0x9b98('0x35')]);_0x3a9ed9['filters']=_['intersection'](_0x3a9ed9[_0x9b98('0x33')],_0x3a9ed9[_0x9b98('0x35')]);_0x232309[_0x9b98('0x36')]=_[_0x9b98('0x37')](_0x3a9ed9[_0x9b98('0x33')],qs[_0x9b98('0x38')](_0x2264a3[_0x9b98('0x35')][_0x9b98('0x38')]));_0x232309['attributes']=_0x232309[_0x9b98('0x36')][_0x9b98('0x39')]?_0x232309[_0x9b98('0x36')]:_0x3a9ed9[_0x9b98('0x33')];if(!_0x2264a3[_0x9b98('0x35')][_0x9b98('0x3a')](_0x9b98('0x3b'))){_0x232309[_0x9b98('0x1e')]=qs[_0x9b98('0x1e')](_0x2264a3[_0x9b98('0x35')][_0x9b98('0x1e')]);_0x232309['offset']=qs[_0x9b98('0x1c')](_0x2264a3[_0x9b98('0x35')][_0x9b98('0x1c')]);}_0x232309['order']=qs[_0x9b98('0x3c')](_0x2264a3[_0x9b98('0x35')][_0x9b98('0x3c')]);_0x232309['where']=qs[_0x9b98('0x3d')](_['pick'](_0x2264a3[_0x9b98('0x35')],_0x3a9ed9[_0x9b98('0x3d')]),_0x183430);var _0x3ac90c=[];var _0x2ee958=squel[_0x9b98('0x3e')]()[_0x9b98('0x3f')]('id')[_0x9b98('0x3f')](_0x9b98('0x26'))['field']('color')['from'](_0x9b98('0x40'));var _0x616f18=squel[_0x9b98('0x3e')]()['field'](_0x9b98('0x41'))[_0x9b98('0x3f')](_0x9b98('0x42'))['field'](_0x9b98('0x43'))[_0x9b98('0x44')](_0x9b98('0x45'),'ui')[_0x9b98('0x46')](_0x9b98('0x47'),'u',_0x9b98('0x48'));var _0x1407f7=squel[_0x9b98('0x3e')]()[_0x9b98('0x44')](_0x9b98('0x49'),'i')[_0x9b98('0x46')](_0x9b98('0x4a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x9b98('0x46')](_0x9b98('0x47'),'o',_0x9b98('0x4b'))[_0x9b98('0x46')](_0x9b98('0x4c'),'a','a.id\x20=\x20i.SmsAccountId')[_0x9b98('0x46')]('sms_messages','me','me.SmsInteractionId\x20=\x20i.id')[_0x9b98('0x46')]('sms_interaction_has_tags','it',_0x9b98('0x4d'))[_0x9b98('0x46')](_0x9b98('0x40'),'t','t.id\x20=\x20it.TagId');var _0x43b124=squel[_0x9b98('0x4e')]();var _0x2055d7=[];var _0xedcd41=squel[_0x9b98('0x4e')]();var _0x4c5e14;if(_0x2264a3[_0x9b98('0x35')][_0x9b98('0x4f')]){_0x4c5e14=as[_0x9b98('0x50')](_0x2264a3['query']['search']);var _0x2dae0c=_0x4c5e14[_0x9b98('0x51')];for(var _0x405053=0x0;_0x405053<_0x4c5e14[_0x9b98('0x52')]['length'];_0x405053++){var _0x26ec54=_0x4c5e14[_0x9b98('0x52')][_0x405053];var _0x323511='i';var _0x122f7c=_['find'](_0x183430,['name',_0x26ec54['field']]);if(!_0x122f7c){switch(_0x26ec54[_0x9b98('0x3f')]){case _0x9b98('0x53'):if(_0x26ec54[_0x9b98('0x54')]==0x1){_0x1407f7['having']('`'+_0x26ec54[_0x9b98('0x3f')]+_0x9b98('0x55'));}else{_0x1407f7[_0x9b98('0x56')]('`'+_0x26ec54[_0x9b98('0x3f')]+_0x9b98('0x57'));}break;case _0x9b98('0x58'):if(_0x26ec54['operator']===_0x9b98('0x59')){if(_0x26ec54[_0x9b98('0x54')][_0x9b98('0x2c')]('\x20')['length']>0x1){_0x43b124[_0x2dae0c](_0x9b98('0x5a'),qs[_0x9b98('0x5b')](_0x26ec54['value']),null);}else{var _0x19da0b='%'+_0x26ec54[_0x9b98('0x54')]+'%';_0x43b124[_0x2dae0c](_0x9b98('0x5c'),_0x19da0b,_0x19da0b,_0x19da0b);}}else{_0x122f7c=_[_0x9b98('0x5d')](_0x183430,[_0x9b98('0x26'),_0x9b98('0x5e')]);_0x26ec54[_0x9b98('0x3f')]='ContactId';_0x4ba93a=as[_0x9b98('0x5f')](_0x323511,_0x122f7c['type'],_0x26ec54);_0x43b124[_0x2dae0c](_0x4ba93a[_0x9b98('0x60')],_0x4ba93a['value'][_0x9b98('0x61')],_0x4ba93a['value'][_0x9b98('0x19')]);}break;case _0x9b98('0x62'):var _0x1c2c43=_0x26ec54['value'][_0x9b98('0x2c')](',')[_0x9b98('0x28')](function(_0x3e5eda){return Number(_0x3e5eda);});_0x1c2c43[_0x9b98('0x63')](function(_0x314e7f){_0xedcd41['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x314e7f+',%');});_0x2055d7=_['union'](_0x2055d7,_0x1c2c43);break;case _0x9b98('0x64'):if(_0x26ec54[_0x9b98('0x65')]===_0x9b98('0x59')){_0x43b124[_0x2dae0c](_0x9b98('0x66'),'%'+_0x26ec54['value']+'%',null);}else{_0x122f7c=_[_0x9b98('0x5d')](_0x183430,[_0x9b98('0x26'),_0x9b98('0x67')]);_0x26ec54[_0x9b98('0x3f')]='UserId';_0x4ba93a=as['buildExpression'](_0x323511,_0x122f7c[_0x9b98('0x31')],_0x26ec54);_0x43b124[_0x2dae0c](_0x4ba93a['text'],_0x4ba93a['value'][_0x9b98('0x61')],_0x4ba93a[_0x9b98('0x54')]['end']);}break;case'body':_0x4ba93a=as['buildExpression']('me',null,_0x26ec54);_0x43b124[_0x2dae0c](_0x4ba93a['text'],_0x4ba93a[_0x9b98('0x54')][_0x9b98('0x61')],_0x4ba93a[_0x9b98('0x54')][_0x9b98('0x19')]);break;}}else{var _0x4ba93a=as['buildExpression'](_0x323511,_0x122f7c[_0x9b98('0x31')],_0x26ec54);_0x43b124[_0x2dae0c](_0x4ba93a[_0x9b98('0x60')],_0x4ba93a[_0x9b98('0x54')]['start'],_0x4ba93a['value'][_0x9b98('0x19')]);}}}else{var _0x20c13e=_(_0x2264a3['query'])[_0x9b98('0x34')]()['map'](function(_0x40e551){return _[_0x9b98('0x68')](_0x183430,[_0x9b98('0x26'),_0x40e551])?_0x40e551:undefined;})['compact']()[_0x9b98('0x54')]();if(!_[_0x9b98('0x69')](_0x20c13e)){_0x20c13e[_0x9b98('0x63')](function(_0x3a985d){if(_0x3a985d===_0x9b98('0x6a')){_0x1407f7[_0x9b98('0x6b')](_0x9b98('0x6c'),[][_0x9b98('0x6d')](_0x2264a3['query'][_0x3a985d]));}else if(_0x3a985d==='createdAt'){var _0x8a705b=JSON['parse'](_0x2264a3['query'][_0x3a985d])['$gte'];var _0x5dffe7=JSON[_0x9b98('0x6e')](_0x2264a3['query'][_0x3a985d])[_0x9b98('0x6f')];_0x1407f7[_0x9b98('0x6b')](_0x9b98('0x70'),_0x8a705b,_0x5dffe7);}else{if(_0x2264a3[_0x9b98('0x35')][_0x3a985d]===_0x9b98('0x71')){_0x1407f7['where']('i.'+_0x3a985d+_0x9b98('0x72'));}else{_0x1407f7[_0x9b98('0x6b')]('i.'+_0x3a985d+_0x9b98('0x73'),_0x2264a3[_0x9b98('0x35')][_0x3a985d]);}}});}if(_0x2264a3[_0x9b98('0x35')]['read']){if(_0x2264a3[_0x9b98('0x35')][_0x9b98('0x74')]==0x1){_0x1407f7[_0x9b98('0x56')]('`unreadMessages`\x20=\x200');}else{_0x1407f7[_0x9b98('0x56')]('`unreadMessages`\x20>\x200');}}if(_0x2264a3[_0x9b98('0x35')][_0x9b98('0x75')]){_0x2055d7=_[_0x9b98('0x76')](_0x2264a3[_0x9b98('0x35')]['tag'])?_0x2264a3[_0x9b98('0x35')][_0x9b98('0x75')]:new Array(_0x2264a3[_0x9b98('0x35')][_0x9b98('0x75')]);_0x2055d7[_0x9b98('0x63')](function(_0x3c7502){_0xedcd41['or'](_0x9b98('0x77'),'%,'+_0x3c7502+',%');});}if(_0x2264a3[_0x9b98('0x35')][_0x9b98('0x78')]){var _0x1d1eaf=_0x2264a3['query'][_0x9b98('0x78')][_0x9b98('0x79')]('\x5c','\x5c\x5c')[_0x9b98('0x79')](/'/g,'\x27\x27');if(qs[_0x9b98('0x7a')](_0x1d1eaf)){_0x43b124['or']('i.id\x20LIKE\x20?',_0x1d1eaf+'%')['or']('i.phone\x20LIKE\x20?',_0x1d1eaf+'%');}else{_0x43b124['or'](_0x9b98('0x7b'),qs[_0x9b98('0x5b')](_0x1d1eaf))['or'](_0x9b98('0x7c'),_0x1d1eaf+'%');}}}_0x1407f7['where'](_0x43b124);_0x1407f7[_0x9b98('0x7d')](_0x9b98('0x7e'));var _0x278107={'type':db[_0x9b98('0x7f')][_0x9b98('0x80')][_0x9b98('0x81')],'raw':!![]};var _0x37723c=_0x1407f7[_0x9b98('0x82')]();_0x37723c[_0x9b98('0x3f')]('i.id');_0x37723c['field'](_0x9b98('0x83'),_0x9b98('0x53'));if(_0x232309['order']){_0x232309[_0x9b98('0x84')][_0x9b98('0x63')](function(_0x3b1902){var _0x5f5a6a=_0x3b1902[0x0]===_0x9b98('0x85')?_0x3b1902[0x0]:'i.'+_0x3b1902[0x0];_0x1407f7[_0x9b98('0x84')](_0x5f5a6a,_0x3b1902[0x1]===_0x9b98('0x86')?![]:!![]);});}if(!_['isEmpty'](_0x2055d7)){_0x1407f7[_0x9b98('0x56')](_0xedcd41);_0x37723c[_0x9b98('0x6b')](_0x9b98('0x87'),_0x2055d7);}BPromise[_0x9b98('0x88')]()['then'](function(){if(!_0x4c5e14){if(_0x2264a3['query'][_0x9b98('0x6a')])return;_0x37723c['where'](_0x9b98('0x89'));_0x1407f7['where'](_0x9b98('0x89'));return;}if(_0x2264a3[_0x9b98('0x8a')][_0x9b98('0x8b')]!=='agent')return;return _0x2264a3[_0x9b98('0x8a')][_0x9b98('0x8c')]({'attributes':['id'],'raw':!![]})[_0x9b98('0x2e')](function(_0x5cc005){if(_['isEmpty'](_0x5cc005)){_0x37723c[_0x9b98('0x6b')](_0x9b98('0x8d'));_0x1407f7['where']('i.SmsAccountId\x20IS\x20NULL');}else{_0x37723c['where']('i.SmsAccountId\x20IN\x20?',_[_0x9b98('0x28')](_0x5cc005,'id'));_0x1407f7[_0x9b98('0x6b')](_0x9b98('0x6c'),_['map'](_0x5cc005,'id'));}});})['then'](function(){if(_0x2264a3[_0x9b98('0x8a')][_0x9b98('0x8b')]===_0x9b98('0x8e')&&!_0x4c5e14&&!_0x2264a3[_0x9b98('0x35')]['SmsAccountId'])return[];return db['sequelize']['query'](_0x37723c[_0x9b98('0x8f')](),_0x278107);})[_0x9b98('0x2e')](function(_0x342442){_0x425711[_0x9b98('0x1f')]=_0x342442[_0x9b98('0x39')];if(_0x425711['count']===0x0)return[];return db['sequelize'][_0x9b98('0x35')](_0x2ee958[_0x9b98('0x8f')](),_0x278107)[_0x9b98('0x2e')](function(_0x459e15){_0x3ac90c=_['keyBy'](_0x459e15,'id');_0x278107=_[_0x9b98('0x90')](_0x278107,{'model':db[_0x9b98('0x2f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2264a3[_0x9b98('0x35')]['fields']){_0x232309[_0x9b98('0x36')][_0x9b98('0x63')](function(_0x266079){_0x1407f7[_0x9b98('0x3f')]('i.'+_0x266079);});}else{_0x1407f7[_0x9b98('0x3f')](_0x9b98('0x83'),_0x9b98('0x53'));_0x1407f7['field']('a.key','Account.key');_0x1407f7[_0x9b98('0x3f')](_0x9b98('0x91'),_0x9b98('0x92'));_0x1407f7['field'](_0x9b98('0x93'),_0x9b98('0x85'));_0x1407f7[_0x9b98('0x3f')](_0x9b98('0x94'));_0x1407f7[_0x9b98('0x3f')](_0x9b98('0x95'),_0x9b98('0x96'));_0x1407f7['field'](_0x9b98('0x97'),'Contact.lastName');_0x1407f7[_0x9b98('0x3f')](_0x9b98('0x98'),_0x9b98('0x99'));_0x1407f7['field'](_0x9b98('0x9a'),'Contact.phone');_0x1407f7['field'](_0x9b98('0x9b'),_0x9b98('0x9c'));_0x1407f7[_0x9b98('0x3f')]('c.fax','Contact.fax');_0x1407f7[_0x9b98('0x3f')](_0x9b98('0x9d'),_0x9b98('0x9e'));_0x1407f7['field'](_0x9b98('0x9f'),_0x9b98('0xa0'));_0x1407f7[_0x9b98('0x3f')](_0x9b98('0xa1'),'TagIds');}if(_0x232309[_0x9b98('0x1e')])_0x1407f7['limit'](_0x232309[_0x9b98('0x1e')]);if(_0x232309['offset'])_0x1407f7[_0x9b98('0x1c')](_0x232309[_0x9b98('0x1c')]);return db['sequelize'][_0x9b98('0x35')](_0x1407f7[_0x9b98('0x8f')](),_0x278107);})[_0x9b98('0x2e')](function(_0x3de868){if(_0x3de868[_0x9b98('0x39')]>0x0)_0x616f18[_0x9b98('0x6b')](_0x9b98('0xa2'),_['map'](_0x3de868,'id'));return db[_0x9b98('0xa3')][_0x9b98('0x35')](_0x616f18[_0x9b98('0x8f')](),_0x278107)[_0x9b98('0x2e')](function(_0x4c70fd){var _0x52d467=_[_0x9b98('0xa4')](_0x4c70fd,_0x9b98('0xa5'));var _0x14b4f2=[];_0x3de868[_0x9b98('0x63')](function(_0x25f5f3){_0x14b4f2[_0x9b98('0x2d')](updateSmsInteraction(_0x25f5f3,_0x3ac90c,_0x52d467));});return BPromise[_0x9b98('0xa6')](_0x14b4f2);});});})['then'](function(_0x37767b){_0x425711[_0x9b98('0xa7')]=_0x37767b;return _0x425711;})[_0x9b98('0x2e')](respondWithFilteredResult(_0x3687b8,_0x232309))[_0x9b98('0xa8')](handleError(_0x3687b8,null));};exports[_0x9b98('0xa9')]=function(_0x22309e,_0x5a9398){var _0x4cdc2e={'raw':![],'where':{'id':_0x22309e['params']['id']}},_0x1e910f={};_0x1e910f[_0x9b98('0x33')]=_[_0x9b98('0x34')](db[_0x9b98('0x2f')][_0x9b98('0xaa')]);_0x1e910f[_0x9b98('0x35')]=_[_0x9b98('0x34')](_0x22309e['query']);_0x1e910f['filters']=_[_0x9b98('0x37')](_0x1e910f['model'],_0x1e910f[_0x9b98('0x35')]);_0x4cdc2e[_0x9b98('0x36')]=_[_0x9b98('0x37')](_0x1e910f[_0x9b98('0x33')],qs['fields'](_0x22309e[_0x9b98('0x35')][_0x9b98('0x38')]));_0x4cdc2e[_0x9b98('0x36')]=_0x4cdc2e[_0x9b98('0x36')][_0x9b98('0x39')]?_0x4cdc2e['attributes']:_0x1e910f['model'];if(_0x22309e[_0x9b98('0x35')][_0x9b98('0xab')]){_0x4cdc2e[_0x9b98('0xac')]=[{'all':!![]}];}_0x4cdc2e=_[_0x9b98('0x90')]({},_0x4cdc2e,_0x22309e[_0x9b98('0xad')]);return db['SmsInteraction']['find'](_0x4cdc2e)[_0x9b98('0x2e')](handleEntityNotFound(_0x5a9398,null))[_0x9b98('0x2e')](respondWithResult(_0x5a9398,null))[_0x9b98('0xa8')](handleError(_0x5a9398,null));};exports['create']=function(_0x1e83c1,_0x3b1f63){return db[_0x9b98('0x2f')]['create'](_0x1e83c1['body'],{})[_0x9b98('0x2e')](respondWithResult(_0x3b1f63,0xc9))[_0x9b98('0xa8')](handleError(_0x3b1f63,null));};exports[_0x9b98('0x23')]=function(_0x2c8c8e,_0x28acb5){if(_0x2c8c8e[_0x9b98('0xae')]['id']){delete _0x2c8c8e['body']['id'];}return db[_0x9b98('0x2f')][_0x9b98('0x5d')]({'where':{'id':_0x2c8c8e[_0x9b98('0xaf')]['id']}})[_0x9b98('0x2e')](handleEntityNotFound(_0x28acb5,null))[_0x9b98('0x2e')](saveUpdates(_0x2c8c8e[_0x9b98('0xae')],null))[_0x9b98('0x2e')](respondWithResult(_0x28acb5,null))[_0x9b98('0xa8')](handleError(_0x28acb5,null));};exports['destroy']=function(_0x14e4f3,_0x326a84){return db['SmsInteraction'][_0x9b98('0x5d')]({'where':{'id':_0x14e4f3[_0x9b98('0xaf')]['id']}})[_0x9b98('0x2e')](handleEntityNotFound(_0x326a84,null))['then'](removeEntity(_0x326a84,null))['catch'](handleError(_0x326a84,null));};exports[_0x9b98('0xb0')]=function(_0x12c7e6,_0xaa1519){return db[_0x9b98('0x2f')][_0x9b98('0xb0')]()[_0x9b98('0x2e')](respondWithResult(_0xaa1519,null))[_0x9b98('0xa8')](handleError(_0xaa1519,null));};exports[_0x9b98('0xb1')]=function(_0xb9b0a9,_0x86ef4e,_0x157a0f){return db[_0x9b98('0xb2')][_0x9b98('0x5d')]({'where':{'id':_0xb9b0a9[_0x9b98('0xaf')]['id']}})[_0x9b98('0x2e')](handleEntityNotFound(_0x86ef4e,null))[_0x9b98('0x2e')](function(_0x4d9101){if(_0x4d9101){return _0x4d9101[_0x9b98('0xb1')](_0xb9b0a9[_0x9b98('0xae')][_0x9b98('0xb3')],_[_0x9b98('0xb4')](_0xb9b0a9['body'],[_0x9b98('0xb3'),'id'])||{});}})['then'](respondWithResult(_0x86ef4e,null))[_0x9b98('0xa8')](handleError(_0x86ef4e,null));};exports['getMessages']=function(_0x151cb6,_0x50d860,_0xb3a714){var _0xc24440={'raw':![],'where':{}};var _0x1be074={};var _0x319292={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x151cb6[_0x9b98('0xaf')]['id']}})[_0x9b98('0x2e')](handleEntityNotFound(_0x50d860,null))[_0x9b98('0x2e')](function(_0x321e9c){if(_0x321e9c){_0x1be074['model']=_['keys'](db['SmsMessage']['rawAttributes']);_0x1be074['query']=_['keys'](_0x151cb6['query']);_0x1be074[_0x9b98('0x3d')]=_[_0x9b98('0x37')](_0x1be074[_0x9b98('0x33')],_0x1be074[_0x9b98('0x35')]);_0xc24440['attributes']=_['intersection'](_0x1be074[_0x9b98('0x33')],qs[_0x9b98('0x38')](_0x151cb6[_0x9b98('0x35')]['fields']));_0xc24440[_0x9b98('0x36')]=_0xc24440['attributes']['length']?_0xc24440[_0x9b98('0x36')]:_0x1be074[_0x9b98('0x33')];if(!_0x151cb6[_0x9b98('0x35')][_0x9b98('0x3a')](_0x9b98('0x3b'))){_0xc24440['limit']=qs[_0x9b98('0x1e')](_0x151cb6[_0x9b98('0x35')]['limit']);_0xc24440[_0x9b98('0x1c')]=qs[_0x9b98('0x1c')](_0x151cb6['query'][_0x9b98('0x1c')]);}_0xc24440['order']=qs[_0x9b98('0x3c')](_0x151cb6[_0x9b98('0x35')][_0x9b98('0x3c')]);_0xc24440['where']=qs['filters'](_[_0x9b98('0xb5')](_0x151cb6[_0x9b98('0x35')],_0x1be074[_0x9b98('0x3d')]));_0xc24440[_0x9b98('0x6b')]['SmsInteractionId']=_0x321e9c['id'];if(_0x151cb6[_0x9b98('0x35')][_0x9b98('0x78')]){_0xc24440[_0x9b98('0x6b')]=_[_0x9b98('0x90')](_0xc24440[_0x9b98('0x6b')],{'$or':_[_0x9b98('0x28')](_0xc24440[_0x9b98('0x36')],function(_0x167370){var _0x320d70={};_0x320d70[_0x167370]={'$like':'%'+_0x151cb6['query'][_0x9b98('0x78')]+'%'};return _0x320d70;})});}if(_0x151cb6[_0x9b98('0x35')][_0x9b98('0xb6')]){var _0x766a17=_0x151cb6[_0x9b98('0x35')][_0x9b98('0xb6')][_0x9b98('0x2c')](',');var _0x479911={};_0x479911[_0x766a17[0x0]]={'$gte':moment(_0x766a17[0x1])[_0x9b98('0xb7')](_0x9b98('0xb8'))};_0xc24440[_0x9b98('0x6b')]=_['merge'](_0xc24440[_0x9b98('0x6b')],_0x479911);}_0xc24440=_['merge']({},_0xc24440,_0x151cb6['options']);return db[_0x9b98('0xb2')]['count']({'where':_0xc24440['where']})['then'](function(_0x3dffc4){_0x319292[_0x9b98('0x1f')]=_0x3dffc4;if(_0x151cb6[_0x9b98('0x35')][_0x9b98('0xab')]){_0xc24440[_0x9b98('0xac')]=[{'all':!![]}];}return db[_0x9b98('0xb2')][_0x9b98('0xb9')](_0xc24440);})[_0x9b98('0x2e')](function(_0x1af532){_0x319292['rows']=_0x1af532;return _0x319292;});}})['then'](respondWithFilteredResult(_0x50d860,_0xc24440))[_0x9b98('0xa8')](handleError(_0x50d860,null));};exports[_0x9b98('0xba')]=function(_0x678df5,_0x3d2b5a,_0xd85b02){return db[_0x9b98('0x2f')]['find']({'where':{'id':_0x678df5[_0x9b98('0xaf')]['id']}})[_0x9b98('0x2e')](handleEntityNotFound(_0x3d2b5a,null))[_0x9b98('0x2e')](function(_0x5787e5){if(_0x5787e5){return _0x5787e5[_0x9b98('0xbb')](_0x678df5[_0x9b98('0xae')][_0x9b98('0xb3')],_['omit'](_0x678df5[_0x9b98('0xae')],['ids','id'])||{})[_0x9b98('0xbc')](function(){return db[_0x9b98('0x62')][_0x9b98('0xb9')]({'attributes':['id','name',_0x9b98('0xbd')],'where':{'id':_0x678df5['body']['ids']}});})[_0x9b98('0x2e')](function(_0x58a254){socket[_0x9b98('0xbe')](_0x9b98('0xbf'),{'id':Number(_0x678df5[_0x9b98('0xaf')]['id']),'tags':_0x58a254||[]});return{'id':Number(_0x678df5['params']['id']),'tags':_0x58a254||[]};});}})[_0x9b98('0x2e')](respondWithResult(_0x3d2b5a,null))[_0x9b98('0xa8')](handleError(_0x3d2b5a,null));};exports[_0x9b98('0xc0')]=function(_0x20f4ee,_0x27e428,_0x3c8728){return db[_0x9b98('0x2f')][_0x9b98('0x5d')]({'where':{'id':_0x20f4ee[_0x9b98('0xaf')]['id']}})[_0x9b98('0x2e')](handleEntityNotFound(_0x27e428,null))[_0x9b98('0x2e')](function(_0x42397a){if(_0x42397a){return _0x42397a[_0x9b98('0xc0')](_0x20f4ee[_0x9b98('0x35')][_0x9b98('0xb3')]);}})['then'](respondWithStatusCode(_0x27e428,null))['catch'](handleError(_0x27e428,null));};exports[_0x9b98('0xc1')]=function(_0x590a5f,_0x396f11){var _0x11bd8c=moment()[_0x9b98('0xc2')]()[_0x9b98('0x8f')]();var _0x282756=path[_0x9b98('0xc3')](config[_0x9b98('0xc4')],'server','files',_0x9b98('0xc5'));var _0x24fa4d=path[_0x9b98('0xc3')](config[_0x9b98('0xc4')],_0x9b98('0xc6'),_0x9b98('0xc7'),_0x9b98('0xc8'));var _0x417ca7=path[_0x9b98('0xc3')](_0x282756,_0x11bd8c);var _0x1c1420=util['format'](_0x9b98('0xc9'),_0x590a5f[_0x9b98('0xaf')]['id'],_0x11bd8c);var _0x4d8bca=path[_0x9b98('0xc3')](_0x282756,_0x1c1420);var _0x7748d9=[];_0x7748d9['push']({'model':db[_0x9b98('0x64')],'as':_0x9b98('0x64'),'attributes':['id',_0x9b98('0x29')],'raw':!![]});_0x7748d9[_0x9b98('0x2d')]({'model':db[_0x9b98('0xca')],'as':_0x9b98('0x58'),'attributes':['id',_0x9b98('0xcb'),'lastName'],'raw':!![]});var _0xccfea5=[{'model':db[_0x9b98('0xb2')],'as':_0x9b98('0xcc'),'attributes':['id','body','createdAt',_0x9b98('0xcd'),_0x9b98('0xce'),_0x9b98('0x74')],'include':_0x7748d9}];_0xccfea5['push']({'model':db['SmsAccount'],'as':_0x9b98('0xcf'),'attributes':['id',_0x9b98('0x26')]});_0xccfea5['push']({'model':db[_0x9b98('0x64')],'as':_0x9b98('0xd0'),'attributes':['id',_0x9b98('0x29')]});return db[_0x9b98('0x2f')]['find']({'where':{'id':_0x590a5f[_0x9b98('0xaf')]['id']},'include':_0xccfea5})[_0x9b98('0x2e')](handleEntityNotFound(_0x396f11,null))[_0x9b98('0x2e')](function(_0x306ba1){if(_0x306ba1){var _0x10456d=_0x306ba1['get']({'plain':!![]});fs[_0x9b98('0xd1')](_0x417ca7);var _0x2fd08f={'channel':_0x9b98('0xd2'),'account':_0x10456d[_0x9b98('0xcf')][_0x9b98('0x26')],'agent':_0x10456d[_0x9b98('0xd0')]?_0x10456d[_0x9b98('0xd0')]['fullname']:_0x9b98('0xd3'),'createdAt':moment(_0x10456d[_0x9b98('0xd4')])[_0x9b98('0xb7')](_0x9b98('0xb8'))[_0x9b98('0x8f')](),'closedAt':_0x10456d[_0x9b98('0xd5')]?moment(_0x10456d[_0x9b98('0xd6')])[_0x9b98('0xb7')](_0x9b98('0xb8'))[_0x9b98('0x8f')]():'','disposition':_0x10456d[_0x9b98('0xd7')],'messages':_(_0x10456d[_0x9b98('0xcc')])[_0x9b98('0x78')]({'secret':![]})['map'](function(_0x53be35){return{'date':moment(_0x53be35[_0x9b98('0xd4')])[_0x9b98('0xb7')](_0x9b98('0xb8'))[_0x9b98('0x8f')](),'sender':_0x53be35['direction']===_0x9b98('0xd8')?_0x53be35[_0x9b98('0x64')]?_0x53be35[_0x9b98('0x64')][_0x9b98('0x29')]:_0x9b98('0xd9'):_0x53be35[_0x9b98('0x58')][_0x9b98('0xcb')]+(_0x53be35['Contact'][_0x9b98('0xda')]?'\x20'+_0x53be35[_0x9b98('0x58')][_0x9b98('0xda')]:''),'body':_0x53be35[_0x9b98('0xae')],'direction':_0x53be35[_0x9b98('0xcd')]==='out'?'A':'C','secret':_0x53be35[_0x9b98('0xce')],'read':_0x53be35['read']};})['value']()};return ejs[_0x9b98('0xdb')](path['join'](config[_0x9b98('0xc4')],_0x9b98('0xc6'),_0x9b98('0xdc'),'downloadInteraction.ejs'),{'interaction':_0x2fd08f})[_0x9b98('0x2e')](function(_0x2558d2){var _0xbeb4bb=path[_0x9b98('0xc3')](_0x417ca7,_0x9b98('0xdd')+_0x10456d['id']+'-'+_0x11bd8c+_0x9b98('0xde'));var _0x5e981a={'path':_0xbeb4bb,'channel':_0x9b98('0xd2'),'interactionId':_0x10456d['id']};return pdf[_0x9b98('0xdf')](_0x2558d2,_0x5e981a);})[_0x9b98('0x2e')](function(){return new BPromise(function(_0x596269,_0xa8a095){zipdir(_0x417ca7,{'saveTo':_0x4d8bca},function(_0x3f887a,_0x218599){if(_0x3f887a)return _0xa8a095(_0x3f887a);return _0x596269(_0x218599);});})['then'](function(){return new BPromise(function(_0x32d19e,_0x3e3bf7){rimraf(_0x417ca7,function(_0x5dc0f8){if(_0x5dc0f8)_0x3e3bf7(_0x5dc0f8);return _0x32d19e();});});})['then'](function(){return _0x396f11['download'](_0x4d8bca,_0x1c1420,function(_0x13b56a){if(_0x13b56a){console['log'](_0x9b98('0xe0'),_0x13b56a);}else{fs[_0x9b98('0xe1')](_0x4d8bca);}});});});}else{return _0x396f11[_0x9b98('0x18')](0xc8);}})[_0x9b98('0xa8')](handleError(_0x396f11,null));};
\ No newline at end of file
+var _0x315b=['body','some','compact','isEmpty','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','resolve','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','Account.key','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.*','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','ui.SmsInteractionId\x20IN\x20?','all','rows','show','include','merge','options','create','update','params','describe','addMessage','SmsMessage','ids','getMessages','nolimit','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','setTags','omit','spread','smsInteractionTags:save','removeTags','download','unix','join','server','files','root','attachments','transcript-%d-%s.zip','CmContact','Contact','firstName','Messages','direction','secret','SmsAccount','Account','Owner','get','mkdirSync','N.A.','closedAt','disposition','out','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','undefined','limit','offset','count','set','json','reject','save','destroy','then','error','name','send','Users','map','fullname','split','forEach','Tags','push','TagIds','catch','index','SmsInteraction','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','select','field','color','from','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','u.id\x20=\x20ui.UserId','left_join','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_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','conditions','find','unreadMessages','value','having','`\x20>\x200','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0x315b,0x162));var _0xb315=function(_0x4730fa,_0x52b06e){_0x4730fa=_0x4730fa-0x0;var _0x44d10b=_0x315b[_0x4730fa];return _0x44d10b;};'use strict';var emlformat=require(_0xb315('0x0'));var rimraf=require(_0xb315('0x1'));var zipdir=require(_0xb315('0x2'));var jsonpatch=require(_0xb315('0x3'));var rp=require(_0xb315('0x4'));var moment=require('moment');var BPromise=require(_0xb315('0x5'));var Mustache=require(_0xb315('0x6'));var util=require(_0xb315('0x7'));var path=require(_0xb315('0x8'));var sox=require(_0xb315('0x9'));var csv=require(_0xb315('0xa'));var ejs=require(_0xb315('0xb'));var fs=require('fs');var fs_extra=require(_0xb315('0xc'));var _=require('lodash');var squel=require(_0xb315('0xd'));var crypto=require(_0xb315('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb315('0xf'));var toCsv=require(_0xb315('0xa'));var querystring=require(_0xb315('0x10'));var Papa=require(_0xb315('0x11'));var Redis=require(_0xb315('0x12'));var authService=require(_0xb315('0x13'));var qs=require(_0xb315('0x14'));var as=require(_0xb315('0x15'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xb315('0x16'));var logger=require(_0xb315('0x17'))(_0xb315('0x18'));var utils=require('../../config/utils');var config=require(_0xb315('0x19'));var licenseUtil=require(_0xb315('0x1a'));var db=require(_0xb315('0x1b'))['db'];config['redis']=_[_0xb315('0x1c')](config[_0xb315('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0xb315('0x1e'))(new Redis(config[_0xb315('0x1d')]));require(_0xb315('0x1f'))[_0xb315('0x20')](socket);function respondWithStatusCode(_0x377031,_0x3df791){_0x3df791=_0x3df791||0xcc;return function(_0x2f97ed){if(_0x2f97ed){return _0x377031[_0xb315('0x21')](_0x3df791);}return _0x377031[_0xb315('0x22')](_0x3df791)[_0xb315('0x23')]();};}function respondWithResult(_0x3e4df2,_0x22788a){_0x22788a=_0x22788a||0xc8;return function(_0x5aa716){if(_0x5aa716){return _0x3e4df2[_0xb315('0x22')](_0x22788a)['json'](_0x5aa716);}};}function respondWithFilteredResult(_0x49a00f,_0x4257ee){return function(_0x3d3d0f){if(_0x3d3d0f){var _0x530e47=typeof _0x4257ee['offset']===_0xb315('0x24')&&typeof _0x4257ee[_0xb315('0x25')]==='undefined';var _0x1cd7fa=_0x3d3d0f['count'];var _0x5d5ef9=_0x530e47?0x0:_0x4257ee[_0xb315('0x26')];var _0x3fa0c9=_0x530e47?_0x3d3d0f[_0xb315('0x27')]:_0x4257ee[_0xb315('0x26')]+_0x4257ee[_0xb315('0x25')];var _0x805207;if(_0x3fa0c9>=_0x1cd7fa){_0x3fa0c9=_0x1cd7fa;_0x805207=0xc8;}else{_0x805207=0xce;}_0x49a00f[_0xb315('0x22')](_0x805207);return _0x49a00f[_0xb315('0x28')]('Content-Range',_0x5d5ef9+'-'+_0x3fa0c9+'/'+_0x1cd7fa)[_0xb315('0x29')](_0x3d3d0f);}return null;};}function patchUpdates(_0x35e274){return function(_0x23f05f){try{jsonpatch['apply'](_0x23f05f,_0x35e274,!![]);}catch(_0x4ca1d4){return BPromise[_0xb315('0x2a')](_0x4ca1d4);}return _0x23f05f[_0xb315('0x2b')]();};}function saveUpdates(_0x54ac23,_0x3b0ec9){return function(_0x1ebbfd){if(_0x1ebbfd){return _0x1ebbfd['update'](_0x54ac23)['then'](function(_0x45708d){return _0x45708d;});}return null;};}function removeEntity(_0x1f1d6c,_0xa8aaa6){return function(_0x19c566){if(_0x19c566){return _0x19c566[_0xb315('0x2c')]()[_0xb315('0x2d')](function(){_0x1f1d6c[_0xb315('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x19de56,_0x37216d){return function(_0x2eec47){if(!_0x2eec47){_0x19de56[_0xb315('0x21')](0x194);}return _0x2eec47;};}function handleError(_0x560500,_0x3b214f){_0x3b214f=_0x3b214f||0x1f4;return function(_0x56c9eb){logger[_0xb315('0x2e')](_0x56c9eb['stack']);if(_0x56c9eb['name']){delete _0x56c9eb[_0xb315('0x2f')];}_0x560500[_0xb315('0x22')](_0x3b214f)[_0xb315('0x30')](_0x56c9eb);};}function getInteractionUsers(_0x4418fb,_0x321e42){return new BPromise(function(_0x5ba220,_0x10c7b5){try{if(_0x321e42[_0x4418fb['id']]){_0x4418fb[_0xb315('0x31')]=_[_0xb315('0x32')](_0x321e42[_0x4418fb['id']],function(_0x2b790c){return{'id':_0x2b790c['id'],'fullname':_0x2b790c[_0xb315('0x33')]};});}}catch(_0x27657f){_0x10c7b5(_0x27657f);}_0x5ba220(_0x4418fb);});}function getInteractionTags(_0x3674c3,_0x28f227){return new BPromise(function(_0x5daab7,_0x29f143){try{if(_0x3674c3['TagIds']){_0x3674c3['Tags']=[];_0x3674c3['TagIds'][_0xb315('0x34')](',')[_0xb315('0x35')](function(_0x5bad83){_0x3674c3[_0xb315('0x36')][_0xb315('0x37')](_0x28f227[_0x5bad83]);});}delete _0x3674c3[_0xb315('0x38')];}catch(_0x5422f5){_0x29f143(_0x5422f5);}_0x5daab7(_0x3674c3);});}function updateSmsInteraction(_0x1872f6,_0xe2e1c,_0x5b1493){return new BPromise(function(_0x3f83b2,_0x1f5edf){return getInteractionUsers(_0x1872f6,_0x5b1493)[_0xb315('0x2d')](function(_0x4bc24a){return getInteractionTags(_0x4bc24a,_0xe2e1c);})['then'](function(_0x3876a3){_0x3f83b2(_0x3876a3);})[_0xb315('0x39')](function(_0x45b418){_0x1f5edf(_0x45b418);});});}exports[_0xb315('0x3a')]=function(_0x238aef,_0x2c1b92){var _0x4cbf7e={},_0x31770c={},_0x218e53={'count':0x0,'rows':[]};var _0x4226d9=_[_0xb315('0x32')](db[_0xb315('0x3b')][_0xb315('0x3c')],function(_0x52e372){return{'name':_0x52e372[_0xb315('0x3d')],'type':_0x52e372[_0xb315('0x3e')][_0xb315('0x3f')]};});_0x31770c['model']=_[_0xb315('0x32')](_0x4226d9,_0xb315('0x2f'));_0x31770c[_0xb315('0x40')]=_[_0xb315('0x41')](_0x238aef['query']);_0x31770c[_0xb315('0x42')]=_[_0xb315('0x43')](_0x31770c['model'],_0x31770c['query']);_0x4cbf7e['attributes']=_[_0xb315('0x43')](_0x31770c[_0xb315('0x44')],qs['fields'](_0x238aef[_0xb315('0x40')][_0xb315('0x45')]));_0x4cbf7e['attributes']=_0x4cbf7e[_0xb315('0x46')][_0xb315('0x47')]?_0x4cbf7e['attributes']:_0x31770c[_0xb315('0x44')];if(!_0x238aef[_0xb315('0x40')][_0xb315('0x48')]('nolimit')){_0x4cbf7e[_0xb315('0x25')]=qs[_0xb315('0x25')](_0x238aef[_0xb315('0x40')]['limit']);_0x4cbf7e[_0xb315('0x26')]=qs[_0xb315('0x26')](_0x238aef[_0xb315('0x40')][_0xb315('0x26')]);}_0x4cbf7e['order']=qs[_0xb315('0x49')](_0x238aef['query']['sort']);_0x4cbf7e[_0xb315('0x4a')]=qs[_0xb315('0x42')](_[_0xb315('0x4b')](_0x238aef[_0xb315('0x40')],_0x31770c[_0xb315('0x42')]),_0x4226d9);var _0x625652=[];var _0x1cc361=squel[_0xb315('0x4c')]()[_0xb315('0x4d')]('id')[_0xb315('0x4d')]('name')[_0xb315('0x4d')](_0xb315('0x4e'))[_0xb315('0x4f')]('tools_tags');var _0x396994=squel[_0xb315('0x4c')]()[_0xb315('0x4d')](_0xb315('0x50'))[_0xb315('0x4d')](_0xb315('0x51'))['field'](_0xb315('0x52'))['from'](_0xb315('0x53'),'ui')['left_join']('users','u',_0xb315('0x54'));var _0x19615e=squel[_0xb315('0x4c')]()[_0xb315('0x4f')]('sms_interactions','i')[_0xb315('0x55')](_0xb315('0x56'),'c',_0xb315('0x57'))[_0xb315('0x55')]('users','o',_0xb315('0x58'))[_0xb315('0x55')](_0xb315('0x59'),'a',_0xb315('0x5a'))[_0xb315('0x55')]('sms_messages','me','me.SmsInteractionId\x20=\x20i.id')['left_join'](_0xb315('0x5b'),'it','it.SmsInteractionId\x20=\x20i.id')[_0xb315('0x55')](_0xb315('0x5c'),'t',_0xb315('0x5d'));var _0x3ae304=squel['expr']();var _0x2ab8a2=[];var _0x4594a5=squel[_0xb315('0x5e')]();var _0x2392e2;if(_0x238aef[_0xb315('0x40')][_0xb315('0x5f')]){_0x2392e2=as['parseSearch'](_0x238aef[_0xb315('0x40')]['search']);var _0x96f96e=_0x2392e2['sqlOperator'];for(var _0x447afa=0x0;_0x447afa<_0x2392e2['conditions'][_0xb315('0x47')];_0x447afa++){var _0x4c89ae=_0x2392e2[_0xb315('0x60')][_0x447afa];var _0x58b6a1='i';var _0x37fba8=_[_0xb315('0x61')](_0x4226d9,[_0xb315('0x2f'),_0x4c89ae[_0xb315('0x4d')]]);if(!_0x37fba8){switch(_0x4c89ae[_0xb315('0x4d')]){case _0xb315('0x62'):if(_0x4c89ae[_0xb315('0x63')]==0x1){_0x19615e[_0xb315('0x64')]('`'+_0x4c89ae[_0xb315('0x4d')]+'`\x20=\x200');}else{_0x19615e['having']('`'+_0x4c89ae[_0xb315('0x4d')]+_0xb315('0x65'));}break;case'Contact':if(_0x4c89ae[_0xb315('0x66')]===_0xb315('0x67')){if(_0x4c89ae['value'][_0xb315('0x34')]('\x20')[_0xb315('0x47')]>0x1){_0x3ae304[_0x96f96e]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb315('0x68')](_0x4c89ae['value']),null);}else{var _0x3ee697='%'+_0x4c89ae[_0xb315('0x63')]+'%';_0x3ae304[_0x96f96e](_0xb315('0x69'),_0x3ee697,_0x3ee697,_0x3ee697);}}else{_0x37fba8=_[_0xb315('0x61')](_0x4226d9,[_0xb315('0x2f'),_0xb315('0x6a')]);_0x4c89ae[_0xb315('0x4d')]=_0xb315('0x6a');_0x38919b=as[_0xb315('0x6b')](_0x58b6a1,_0x37fba8[_0xb315('0x3e')],_0x4c89ae);_0x3ae304[_0x96f96e](_0x38919b[_0xb315('0x6c')],_0x38919b[_0xb315('0x63')][_0xb315('0x6d')],_0x38919b['value'][_0xb315('0x23')]);}break;case _0xb315('0x6e'):var _0x9fc419=_0x4c89ae['value'][_0xb315('0x34')](',')[_0xb315('0x32')](function(_0x39800a){return Number(_0x39800a);});_0x9fc419[_0xb315('0x35')](function(_0x530989){_0x4594a5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x530989+',%');});_0x2ab8a2=_['union'](_0x2ab8a2,_0x9fc419);break;case _0xb315('0x6f'):if(_0x4c89ae[_0xb315('0x66')]==='$substring'){_0x3ae304[_0x96f96e](_0xb315('0x70'),'%'+_0x4c89ae['value']+'%',null);}else{_0x37fba8=_[_0xb315('0x61')](_0x4226d9,['name',_0xb315('0x71')]);_0x4c89ae['field']=_0xb315('0x71');_0x38919b=as[_0xb315('0x6b')](_0x58b6a1,_0x37fba8['type'],_0x4c89ae);_0x3ae304[_0x96f96e](_0x38919b[_0xb315('0x6c')],_0x38919b[_0xb315('0x63')][_0xb315('0x6d')],_0x38919b[_0xb315('0x63')][_0xb315('0x23')]);}break;case _0xb315('0x72'):_0x38919b=as[_0xb315('0x6b')]('me',null,_0x4c89ae);_0x3ae304[_0x96f96e](_0x38919b[_0xb315('0x6c')],_0x38919b[_0xb315('0x63')]['start'],_0x38919b[_0xb315('0x63')]['end']);break;}}else{var _0x38919b=as[_0xb315('0x6b')](_0x58b6a1,_0x37fba8[_0xb315('0x3e')],_0x4c89ae);_0x3ae304[_0x96f96e](_0x38919b['text'],_0x38919b[_0xb315('0x63')][_0xb315('0x6d')],_0x38919b[_0xb315('0x63')]['end']);}}}else{var _0x319714=_(_0x238aef['query'])[_0xb315('0x41')]()['map'](function(_0x27255a){return _[_0xb315('0x73')](_0x4226d9,[_0xb315('0x2f'),_0x27255a])?_0x27255a:undefined;})[_0xb315('0x74')]()[_0xb315('0x63')]();if(!_[_0xb315('0x75')](_0x319714)){_0x319714['forEach'](function(_0x501844){if(_0x501844==='SmsAccountId'){_0x19615e[_0xb315('0x4a')](_0xb315('0x76'),[][_0xb315('0x77')](_0x238aef[_0xb315('0x40')][_0x501844]));}else if(_0x501844===_0xb315('0x78')){var _0x1a723a=JSON['parse'](_0x238aef['query'][_0x501844])['$gte'];var _0x58e41d=JSON[_0xb315('0x79')](_0x238aef[_0xb315('0x40')][_0x501844])['$lte'];_0x19615e[_0xb315('0x4a')](_0xb315('0x7a'),_0x1a723a,_0x58e41d);}else{if(_0x238aef[_0xb315('0x40')][_0x501844]===_0xb315('0x7b')){_0x19615e[_0xb315('0x4a')]('i.'+_0x501844+_0xb315('0x7c'));}else{_0x19615e[_0xb315('0x4a')]('i.'+_0x501844+_0xb315('0x7d'),_0x238aef[_0xb315('0x40')][_0x501844]);}}});}if(_0x238aef['query'][_0xb315('0x7e')]){if(_0x238aef[_0xb315('0x40')][_0xb315('0x7e')]==0x1){_0x19615e['having'](_0xb315('0x7f'));}else{_0x19615e[_0xb315('0x64')](_0xb315('0x80'));}}if(_0x238aef['query'][_0xb315('0x81')]){_0x2ab8a2=_[_0xb315('0x82')](_0x238aef[_0xb315('0x40')][_0xb315('0x81')])?_0x238aef[_0xb315('0x40')][_0xb315('0x81')]:new Array(_0x238aef[_0xb315('0x40')][_0xb315('0x81')]);_0x2ab8a2[_0xb315('0x35')](function(_0x10c61b){_0x4594a5['or'](_0xb315('0x83'),'%,'+_0x10c61b+',%');});}if(_0x238aef[_0xb315('0x40')][_0xb315('0x84')]){var _0x3566b3=_0x238aef[_0xb315('0x40')][_0xb315('0x84')][_0xb315('0x85')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xb315('0x86')](_0x3566b3)){_0x3ae304['or'](_0xb315('0x87'),_0x3566b3+'%')['or'](_0xb315('0x88'),_0x3566b3+'%');}else{_0x3ae304['or'](_0xb315('0x89'),qs['getFullTextValue'](_0x3566b3))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3566b3+'%');}}}_0x19615e[_0xb315('0x4a')](_0x3ae304);_0x19615e['group'](_0xb315('0x8a'));var _0x4d48fa={'type':db[_0xb315('0x8b')][_0xb315('0x8c')][_0xb315('0x8d')],'raw':!![]};var _0x2624ca=_0x19615e[_0xb315('0x8e')]();_0x2624ca['field'](_0xb315('0x8a'));_0x2624ca['field'](_0xb315('0x8f'),_0xb315('0x62'));if(_0x4cbf7e[_0xb315('0x90')]){_0x4cbf7e[_0xb315('0x90')][_0xb315('0x35')](function(_0x564f2b){var _0x474a6b=_0x564f2b[0x0]===_0xb315('0x91')?_0x564f2b[0x0]:'i.'+_0x564f2b[0x0];_0x19615e['order'](_0x474a6b,_0x564f2b[0x1]===_0xb315('0x92')?![]:!![]);});}if(!_[_0xb315('0x75')](_0x2ab8a2)){_0x19615e[_0xb315('0x64')](_0x4594a5);_0x2624ca[_0xb315('0x4a')](_0xb315('0x93'),_0x2ab8a2);}BPromise[_0xb315('0x94')]()[_0xb315('0x2d')](function(){if(!_0x2392e2){if(_0x238aef[_0xb315('0x40')][_0xb315('0x95')])return;_0x2624ca[_0xb315('0x4a')](_0xb315('0x96'));_0x19615e[_0xb315('0x4a')](_0xb315('0x96'));return;}if(_0x238aef[_0xb315('0x97')][_0xb315('0x98')]!==_0xb315('0x99'))return;return _0x238aef[_0xb315('0x97')][_0xb315('0x9a')]({'attributes':['id'],'raw':!![]})[_0xb315('0x2d')](function(_0x3422c0){if(_[_0xb315('0x75')](_0x3422c0)){_0x2624ca[_0xb315('0x4a')](_0xb315('0x9b'));_0x19615e[_0xb315('0x4a')](_0xb315('0x9b'));}else{_0x2624ca[_0xb315('0x4a')](_0xb315('0x76'),_['map'](_0x3422c0,'id'));_0x19615e[_0xb315('0x4a')](_0xb315('0x76'),_[_0xb315('0x32')](_0x3422c0,'id'));}});})[_0xb315('0x2d')](function(){if(_0x238aef[_0xb315('0x97')]['role']==='agent'&&!_0x2392e2&&!_0x238aef[_0xb315('0x40')][_0xb315('0x95')])return[];return db[_0xb315('0x9c')]['query'](_0x2624ca[_0xb315('0x9d')](),_0x4d48fa);})[_0xb315('0x2d')](function(_0xae5899){_0x218e53['count']=_0xae5899['length'];if(_0x218e53['count']===0x0)return[];return db[_0xb315('0x9c')][_0xb315('0x40')](_0x1cc361[_0xb315('0x9d')](),_0x4d48fa)[_0xb315('0x2d')](function(_0xf7f43){_0x625652=_[_0xb315('0x9e')](_0xf7f43,'id');_0x4d48fa=_['merge'](_0x4d48fa,{'model':db[_0xb315('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x238aef['query'][_0xb315('0x45')]){_0x4cbf7e[_0xb315('0x46')][_0xb315('0x35')](function(_0x11ba55){_0x19615e[_0xb315('0x4d')]('i.'+_0x11ba55);});}else{_0x19615e['field'](_0xb315('0x8f'),'unreadMessages');_0x19615e['field']('a.key',_0xb315('0x9f'));_0x19615e['field']('a.mandatoryDisposition',_0xb315('0xa0'));_0x19615e[_0xb315('0x4d')](_0xb315('0xa1'),_0xb315('0x91'));_0x19615e[_0xb315('0x4d')](_0xb315('0xa2'));_0x19615e[_0xb315('0x4d')]('c.firstName',_0xb315('0xa3'));_0x19615e['field'](_0xb315('0xa4'),_0xb315('0xa5'));_0x19615e[_0xb315('0x4d')]('c.email',_0xb315('0xa6'));_0x19615e[_0xb315('0x4d')](_0xb315('0xa7'),_0xb315('0xa8'));_0x19615e[_0xb315('0x4d')](_0xb315('0xa9'),'Contact.mobile');_0x19615e[_0xb315('0x4d')](_0xb315('0xaa'),_0xb315('0xab'));_0x19615e[_0xb315('0x4d')](_0xb315('0xac'),_0xb315('0xad'));_0x19615e[_0xb315('0x4d')](_0xb315('0xae'),'Owner.internal');_0x19615e['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xb315('0x38'));}if(_0x4cbf7e['limit'])_0x19615e[_0xb315('0x25')](_0x4cbf7e[_0xb315('0x25')]);if(_0x4cbf7e[_0xb315('0x26')])_0x19615e[_0xb315('0x26')](_0x4cbf7e[_0xb315('0x26')]);return db[_0xb315('0x9c')][_0xb315('0x40')](_0x19615e[_0xb315('0x9d')](),_0x4d48fa);})['then'](function(_0x3eeb66){if(_0x3eeb66[_0xb315('0x47')]>0x0)_0x396994[_0xb315('0x4a')](_0xb315('0xaf'),_[_0xb315('0x32')](_0x3eeb66,'id'));return db[_0xb315('0x9c')][_0xb315('0x40')](_0x396994[_0xb315('0x9d')](),_0x4d48fa)[_0xb315('0x2d')](function(_0x26e3c9){var _0x1e3304=_['groupBy'](_0x26e3c9,'SmsInteractionId');var _0x43aba6=[];_0x3eeb66[_0xb315('0x35')](function(_0x2d9084){_0x43aba6['push'](updateSmsInteraction(_0x2d9084,_0x625652,_0x1e3304));});return BPromise[_0xb315('0xb0')](_0x43aba6);});});})[_0xb315('0x2d')](function(_0x3345f7){_0x218e53[_0xb315('0xb1')]=_0x3345f7;return _0x218e53;})['then'](respondWithFilteredResult(_0x2c1b92,_0x4cbf7e))[_0xb315('0x39')](handleError(_0x2c1b92,null));};exports[_0xb315('0xb2')]=function(_0x5c6696,_0x597416){var _0x46db98={'raw':![],'where':{'id':_0x5c6696['params']['id']}},_0x4b5c22={};_0x4b5c22[_0xb315('0x44')]=_[_0xb315('0x41')](db[_0xb315('0x3b')][_0xb315('0x3c')]);_0x4b5c22[_0xb315('0x40')]=_[_0xb315('0x41')](_0x5c6696['query']);_0x4b5c22['filters']=_[_0xb315('0x43')](_0x4b5c22[_0xb315('0x44')],_0x4b5c22[_0xb315('0x40')]);_0x46db98[_0xb315('0x46')]=_['intersection'](_0x4b5c22[_0xb315('0x44')],qs['fields'](_0x5c6696[_0xb315('0x40')][_0xb315('0x45')]));_0x46db98[_0xb315('0x46')]=_0x46db98[_0xb315('0x46')][_0xb315('0x47')]?_0x46db98[_0xb315('0x46')]:_0x4b5c22[_0xb315('0x44')];if(_0x5c6696[_0xb315('0x40')]['includeAll']){_0x46db98[_0xb315('0xb3')]=[{'all':!![]}];}_0x46db98=_[_0xb315('0xb4')]({},_0x46db98,_0x5c6696[_0xb315('0xb5')]);return db[_0xb315('0x3b')][_0xb315('0x61')](_0x46db98)[_0xb315('0x2d')](handleEntityNotFound(_0x597416,null))[_0xb315('0x2d')](respondWithResult(_0x597416,null))[_0xb315('0x39')](handleError(_0x597416,null));};exports[_0xb315('0xb6')]=function(_0x5d8c81,_0x27872d){return db[_0xb315('0x3b')][_0xb315('0xb6')](_0x5d8c81[_0xb315('0x72')],{})[_0xb315('0x2d')](respondWithResult(_0x27872d,0xc9))[_0xb315('0x39')](handleError(_0x27872d,null));};exports[_0xb315('0xb7')]=function(_0x19ffd4,_0x1ac1b3){if(_0x19ffd4[_0xb315('0x72')]['id']){delete _0x19ffd4[_0xb315('0x72')]['id'];}return db[_0xb315('0x3b')][_0xb315('0x61')]({'where':{'id':_0x19ffd4['params']['id']}})[_0xb315('0x2d')](handleEntityNotFound(_0x1ac1b3,null))[_0xb315('0x2d')](saveUpdates(_0x19ffd4[_0xb315('0x72')],null))['then'](respondWithResult(_0x1ac1b3,null))[_0xb315('0x39')](handleError(_0x1ac1b3,null));};exports['destroy']=function(_0x2a52bb,_0x433d19){return db[_0xb315('0x3b')][_0xb315('0x61')]({'where':{'id':_0x2a52bb[_0xb315('0xb8')]['id']}})[_0xb315('0x2d')](handleEntityNotFound(_0x433d19,null))[_0xb315('0x2d')](removeEntity(_0x433d19,null))[_0xb315('0x39')](handleError(_0x433d19,null));};exports[_0xb315('0xb9')]=function(_0xc14055,_0x1f78ef){return db[_0xb315('0x3b')][_0xb315('0xb9')]()['then'](respondWithResult(_0x1f78ef,null))['catch'](handleError(_0x1f78ef,null));};exports[_0xb315('0xba')]=function(_0x3e9422,_0xb3909b,_0x3e0d17){return db[_0xb315('0xbb')][_0xb315('0x61')]({'where':{'id':_0x3e9422[_0xb315('0xb8')]['id']}})[_0xb315('0x2d')](handleEntityNotFound(_0xb3909b,null))['then'](function(_0xbaad80){if(_0xbaad80){return _0xbaad80['addMessage'](_0x3e9422['body'][_0xb315('0xbc')],_['omit'](_0x3e9422[_0xb315('0x72')],[_0xb315('0xbc'),'id'])||{});}})[_0xb315('0x2d')](respondWithResult(_0xb3909b,null))[_0xb315('0x39')](handleError(_0xb3909b,null));};exports[_0xb315('0xbd')]=function(_0x58a751,_0x52a576,_0x347a24){var _0x34c1dc={'raw':![],'where':{}};var _0x32a8ae={};var _0x419ed0={'count':0x0,'rows':[]};return db[_0xb315('0x3b')]['findOne']({'where':{'id':_0x58a751[_0xb315('0xb8')]['id']}})[_0xb315('0x2d')](handleEntityNotFound(_0x52a576,null))['then'](function(_0x534b04){if(_0x534b04){_0x32a8ae['model']=_[_0xb315('0x41')](db[_0xb315('0xbb')][_0xb315('0x3c')]);_0x32a8ae['query']=_[_0xb315('0x41')](_0x58a751[_0xb315('0x40')]);_0x32a8ae[_0xb315('0x42')]=_[_0xb315('0x43')](_0x32a8ae[_0xb315('0x44')],_0x32a8ae[_0xb315('0x40')]);_0x34c1dc[_0xb315('0x46')]=_[_0xb315('0x43')](_0x32a8ae[_0xb315('0x44')],qs[_0xb315('0x45')](_0x58a751[_0xb315('0x40')][_0xb315('0x45')]));_0x34c1dc[_0xb315('0x46')]=_0x34c1dc['attributes']['length']?_0x34c1dc[_0xb315('0x46')]:_0x32a8ae[_0xb315('0x44')];if(!_0x58a751[_0xb315('0x40')][_0xb315('0x48')](_0xb315('0xbe'))){_0x34c1dc['limit']=qs[_0xb315('0x25')](_0x58a751[_0xb315('0x40')][_0xb315('0x25')]);_0x34c1dc[_0xb315('0x26')]=qs['offset'](_0x58a751[_0xb315('0x40')][_0xb315('0x26')]);}_0x34c1dc[_0xb315('0x90')]=qs['sort'](_0x58a751[_0xb315('0x40')][_0xb315('0x49')]);_0x34c1dc[_0xb315('0x4a')]=qs[_0xb315('0x42')](_[_0xb315('0x4b')](_0x58a751[_0xb315('0x40')],_0x32a8ae[_0xb315('0x42')]));_0x34c1dc['where']['SmsInteractionId']=_0x534b04['id'];if(_0x58a751['query'][_0xb315('0x84')]){_0x34c1dc[_0xb315('0x4a')]=_[_0xb315('0xb4')](_0x34c1dc[_0xb315('0x4a')],{'$or':_[_0xb315('0x32')](_0x34c1dc['attributes'],function(_0x29dc04){var _0x561d98={};_0x561d98[_0x29dc04]={'$like':'%'+_0x58a751[_0xb315('0x40')][_0xb315('0x84')]+'%'};return _0x561d98;})});}if(_0x58a751['query'][_0xb315('0xbf')]){var _0x59c240=_0x58a751['query'][_0xb315('0xbf')][_0xb315('0x34')](',');var _0x241738={};_0x241738[_0x59c240[0x0]]={'$gte':moment(_0x59c240[0x1])[_0xb315('0xc0')](_0xb315('0xc1'))};_0x34c1dc['where']=_[_0xb315('0xb4')](_0x34c1dc['where'],_0x241738);}_0x34c1dc=_[_0xb315('0xb4')]({},_0x34c1dc,_0x58a751[_0xb315('0xb5')]);return db[_0xb315('0xbb')][_0xb315('0x27')]({'where':_0x34c1dc['where']})['then'](function(_0x329e95){_0x419ed0['count']=_0x329e95;if(_0x58a751[_0xb315('0x40')][_0xb315('0xc2')]){_0x34c1dc[_0xb315('0xb3')]=[{'all':!![]}];}return db[_0xb315('0xbb')][_0xb315('0xc3')](_0x34c1dc);})[_0xb315('0x2d')](function(_0x54db10){_0x419ed0[_0xb315('0xb1')]=_0x54db10;return _0x419ed0;});}})[_0xb315('0x2d')](respondWithFilteredResult(_0x52a576,_0x34c1dc))[_0xb315('0x39')](handleError(_0x52a576,null));};exports['addTags']=function(_0x541fff,_0x562f79,_0x2f6187){return db[_0xb315('0x3b')][_0xb315('0x61')]({'where':{'id':_0x541fff[_0xb315('0xb8')]['id']}})[_0xb315('0x2d')](handleEntityNotFound(_0x562f79,null))['then'](function(_0x366fdf){if(_0x366fdf){return _0x366fdf[_0xb315('0xc4')](_0x541fff['body']['ids'],_[_0xb315('0xc5')](_0x541fff[_0xb315('0x72')],[_0xb315('0xbc'),'id'])||{})[_0xb315('0xc6')](function(){return db['Tag']['findAll']({'attributes':['id',_0xb315('0x2f'),'color'],'where':{'id':_0x541fff[_0xb315('0x72')][_0xb315('0xbc')]}});})['then'](function(_0x914903){socket['emit'](_0xb315('0xc7'),{'id':Number(_0x541fff[_0xb315('0xb8')]['id']),'tags':_0x914903||[]});return{'id':Number(_0x541fff['params']['id']),'tags':_0x914903||[]};});}})['then'](respondWithResult(_0x562f79,null))['catch'](handleError(_0x562f79,null));};exports[_0xb315('0xc8')]=function(_0xeb71bd,_0x3318a1,_0x290f69){return db[_0xb315('0x3b')][_0xb315('0x61')]({'where':{'id':_0xeb71bd['params']['id']}})[_0xb315('0x2d')](handleEntityNotFound(_0x3318a1,null))[_0xb315('0x2d')](function(_0x1b690d){if(_0x1b690d){return _0x1b690d['removeTags'](_0xeb71bd['query'][_0xb315('0xbc')]);}})[_0xb315('0x2d')](respondWithStatusCode(_0x3318a1,null))[_0xb315('0x39')](handleError(_0x3318a1,null));};exports[_0xb315('0xc9')]=function(_0x11b98f,_0x533cd5){var _0x3153d2=moment()[_0xb315('0xca')]()['toString']();var _0x2ee214=path[_0xb315('0xcb')](config['root'],_0xb315('0xcc'),_0xb315('0xcd'),'tmp');var _0x2af367=path[_0xb315('0xcb')](config[_0xb315('0xce')],_0xb315('0xcc'),'files',_0xb315('0xcf'));var _0x404515=path['join'](_0x2ee214,_0x3153d2);var _0x339b93=util['format'](_0xb315('0xd0'),_0x11b98f[_0xb315('0xb8')]['id'],_0x3153d2);var _0x38075b=path[_0xb315('0xcb')](_0x2ee214,_0x339b93);var _0x1da12a=[];_0x1da12a[_0xb315('0x37')]({'model':db[_0xb315('0x6f')],'as':_0xb315('0x6f'),'attributes':['id',_0xb315('0x33')],'raw':!![]});_0x1da12a[_0xb315('0x37')]({'model':db[_0xb315('0xd1')],'as':_0xb315('0xd2'),'attributes':['id',_0xb315('0xd3'),'lastName'],'raw':!![]});var _0xe8e86b=[{'model':db[_0xb315('0xbb')],'as':_0xb315('0xd4'),'attributes':['id',_0xb315('0x72'),_0xb315('0x78'),_0xb315('0xd5'),_0xb315('0xd6'),'read'],'include':_0x1da12a}];_0xe8e86b['push']({'model':db[_0xb315('0xd7')],'as':_0xb315('0xd8'),'attributes':['id','name']});_0xe8e86b['push']({'model':db[_0xb315('0x6f')],'as':_0xb315('0xd9'),'attributes':['id',_0xb315('0x33')]});return db[_0xb315('0x3b')][_0xb315('0x61')]({'where':{'id':_0x11b98f[_0xb315('0xb8')]['id']},'include':_0xe8e86b})[_0xb315('0x2d')](handleEntityNotFound(_0x533cd5,null))[_0xb315('0x2d')](function(_0x5b1bd6){if(_0x5b1bd6){var _0x4d0380=_0x5b1bd6[_0xb315('0xda')]({'plain':!![]});fs[_0xb315('0xdb')](_0x404515);var _0x57e9e5={'channel':'Sms','account':_0x4d0380[_0xb315('0xd8')][_0xb315('0x2f')],'agent':_0x4d0380['Owner']?_0x4d0380[_0xb315('0xd9')]['fullname']:_0xb315('0xdc'),'createdAt':moment(_0x4d0380[_0xb315('0x78')])[_0xb315('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')[_0xb315('0x9d')](),'closedAt':_0x4d0380['closed']?moment(_0x4d0380[_0xb315('0xdd')])[_0xb315('0xc0')](_0xb315('0xc1'))['toString']():'','disposition':_0x4d0380[_0xb315('0xde')],'messages':_(_0x4d0380[_0xb315('0xd4')])[_0xb315('0x84')]({'secret':![]})[_0xb315('0x32')](function(_0x187aa2){return{'date':moment(_0x187aa2[_0xb315('0x78')])[_0xb315('0xc0')](_0xb315('0xc1'))['toString'](),'sender':_0x187aa2[_0xb315('0xd5')]===_0xb315('0xdf')?_0x187aa2['User']?_0x187aa2[_0xb315('0x6f')][_0xb315('0x33')]:'System':_0x187aa2[_0xb315('0xd2')]['firstName']+(_0x187aa2['Contact'][_0xb315('0xe0')]?'\x20'+_0x187aa2['Contact'][_0xb315('0xe0')]:''),'body':_0x187aa2[_0xb315('0x72')],'direction':_0x187aa2[_0xb315('0xd5')]===_0xb315('0xdf')?'A':'C','secret':_0x187aa2[_0xb315('0xd6')],'read':_0x187aa2[_0xb315('0x7e')]};})[_0xb315('0x63')]()};return ejs[_0xb315('0xe1')](path['join'](config['root'],_0xb315('0xcc'),_0xb315('0xe2'),_0xb315('0xe3')),{'interaction':_0x57e9e5})[_0xb315('0x2d')](function(_0xc03e55){var _0xa45ddd=path[_0xb315('0xcb')](_0x404515,_0xb315('0xe4')+_0x4d0380['id']+'-'+_0x3153d2+_0xb315('0xe5'));var _0x442728={'path':_0xa45ddd,'channel':_0xb315('0xe6'),'interactionId':_0x4d0380['id']};return pdf[_0xb315('0xe7')](_0xc03e55,_0x442728);})[_0xb315('0x2d')](function(){return new BPromise(function(_0x49dbfa,_0x4d4f51){zipdir(_0x404515,{'saveTo':_0x38075b},function(_0x4d3276,_0x1eb614){if(_0x4d3276)return _0x4d4f51(_0x4d3276);return _0x49dbfa(_0x1eb614);});})['then'](function(){return new BPromise(function(_0x1a75a3,_0x15ea9a){rimraf(_0x404515,function(_0x251e70){if(_0x251e70)_0x15ea9a(_0x251e70);return _0x1a75a3();});});})['then'](function(){return _0x533cd5[_0xb315('0xc9')](_0x38075b,_0x339b93,function(_0x146806){if(_0x146806){console['log'](_0xb315('0xe8'),_0x146806);}else{fs[_0xb315('0xe9')](_0x38075b);}});});});}else{return _0x533cd5[_0xb315('0x21')](0xc8);}})[_0xb315('0x39')](handleError(_0x533cd5,null));};
\ No newline at end of file
index 3d7e8d8..3c22ae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','update'];(function(_0x338581,_0x85c756){var _0x306123=function(_0x127017){while(--_0x127017){_0x338581['push'](_0x338581['shift']());}};_0x306123(++_0x85c756);}(_0xd4a2,0x173));var _0x2d4a=function(_0x3c709e,_0x2a83ca){_0x3c709e=_0x3c709e-0x0;var _0x366969=_0xd4a2[_0x3c709e];return _0x366969;};'use strict';var EventEmitter=require(_0x2d4a('0x0'));var SmsInteraction=require('../../mysqldb')['db']['SmsInteraction'];var SmsMessage=require(_0x2d4a('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x2d4a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2d4a('0x3'),'afterDestroy':'remove'};function emitEvent(_0x32af9e){return function(_0x40d744,_0x2624b5,_0x3a88e2){_0x40d744[_0x2d4a('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x45fefb){_0x40d744[_0x2d4a('0x5')](_0x2d4a('0x6'),_0x45fefb[_0x2d4a('0x7')](function(_0x3b8d7b){return{'id':_0x3b8d7b['id']};}));return SmsMessage[_0x2d4a('0x8')]({'where':{'SmsInteractionId':_0x40d744['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2d4a('0x9')](function(_0x113839){_0x40d744[_0x2d4a('0x5')](_0x2d4a('0xa'),_0x113839[_0x2d4a('0xb')]);SmsInteractionEvents[_0x2d4a('0xc')](_0x32af9e+':'+_0x40d744['id'],_0x40d744);SmsInteractionEvents['emit'](_0x32af9e,_0x40d744);_0x3a88e2(null);})['catch'](_0x3a88e2(null));};}for(var e in events){if(events[_0x2d4a('0xd')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x2d4a('0xe')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x4cf8=['unreadMessages','length','emit','catch','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','findAll'];(function(_0x550519,_0x4cd80f){var _0x1ea3c8=function(_0x4426b3){while(--_0x4426b3){_0x550519['push'](_0x550519['shift']());}};_0x1ea3c8(++_0x4cd80f);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x44caf2,_0x8ffb16){_0x44caf2=_0x44caf2-0x0;var _0x25978d=_0x4cf8[_0x44caf2];return _0x25978d;};'use strict';var EventEmitter=require(_0x84cf('0x0'));var SmsInteraction=require(_0x84cf('0x1'))['db'][_0x84cf('0x2')];var SmsMessage=require(_0x84cf('0x1'))['db'][_0x84cf('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x84cf('0x4')](0x0);var events={'afterCreate':_0x84cf('0x5'),'afterUpdate':_0x84cf('0x6'),'afterDestroy':_0x84cf('0x7')};function emitEvent(_0x2d38c0){return function(_0x5844d7,_0x2c613d,_0x50ade2){_0x5844d7['getUsers']({'attributes':['id'],'raw':!![]})[_0x84cf('0x8')](function(_0x56c5cc){_0x5844d7[_0x84cf('0x9')](_0x84cf('0xa'),_0x56c5cc['map'](function(_0x2e0b79){return{'id':_0x2e0b79['id']};}));return SmsMessage[_0x84cf('0xb')]({'where':{'SmsInteractionId':_0x5844d7['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xfb5398){_0x5844d7[_0x84cf('0x9')](_0x84cf('0xc'),_0xfb5398[_0x84cf('0xd')]);SmsInteractionEvents['emit'](_0x2d38c0+':'+_0x5844d7['id'],_0x5844d7);SmsInteractionEvents[_0x84cf('0xe')](_0x2d38c0,_0x5844d7);_0x50ade2(null);})[_0x84cf('0xf')](_0x50ade2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x84cf('0x10')]=SmsInteractionEvents;
\ No newline at end of file
index 600ee49..8064731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa18f=['define','SmsInteraction','sms_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./smsInteraction.attributes','exports'];(function(_0x455df1,_0x3219d2){var _0x564834=function(_0x3971b1){while(--_0x3971b1){_0x455df1['push'](_0x455df1['shift']());}};_0x564834(++_0x3219d2);}(_0xa18f,0x1e7));var _0xfa18=function(_0x28039d,_0x24ad7a){_0x28039d=_0x28039d-0x0;var _0x36a557=_0xa18f[_0x28039d];return _0x36a557;};'use strict';var _=require(_0xfa18('0x0'));var util=require(_0xfa18('0x1'));var logger=require(_0xfa18('0x2'))(_0xfa18('0x3'));var moment=require(_0xfa18('0x4'));var BPromise=require('bluebird');var rp=require(_0xfa18('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfa18('0x6'));var config=require('../../config/environment');var attributes=require(_0xfa18('0x7'));module[_0xfa18('0x8')]=function(_0xdc40b9,_0x71a304){return _0xdc40b9[_0xfa18('0x9')](_0xfa18('0xa'),attributes,{'tableName':_0xfa18('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x58216f,_0x4e6d80,_0x490ab5){if(_0x58216f[_0xfa18('0xc')]('closed')){_0x58216f[_0xfa18('0xd')]=moment()[_0xfa18('0xe')](_0xfa18('0xf'));}_0x490ab5(null,_0x58216f);}}});};
\ No newline at end of file
+var _0xc320=['closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','api','moment','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define'];(function(_0x3f6622,_0x46e95c){var _0x28a3de=function(_0x2026a3){while(--_0x2026a3){_0x3f6622['push'](_0x3f6622['shift']());}};_0x28a3de(++_0x46e95c);}(_0xc320,0x87));var _0x0c32=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0xc320[_0xef8146];return _0x5a6cb0;};'use strict';var _=require(_0x0c32('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0c32('0x1'));var moment=require(_0x0c32('0x2'));var BPromise=require('bluebird');var rp=require(_0x0c32('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c32('0x4'));var config=require(_0x0c32('0x5'));var attributes=require(_0x0c32('0x6'));module[_0x0c32('0x7')]=function(_0x33f922,_0x3a5010){return _0x33f922[_0x0c32('0x8')]('SmsInteraction',attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x31ab14,_0x365692,_0x7abf04){if(_0x31ab14['changed'](_0x0c32('0x9'))){_0x31ab14['closedAt']=moment()[_0x0c32('0xa')](_0x0c32('0xb'));}_0x7abf04(null,_0x31ab14);}}});};
\ No newline at end of file
index 7c600a2..5f5657e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf319=['./smsInteraction.socket','register','then','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsInteraction,\x20%s,\x20%s','message','result','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','catch','find','ids','omit','AddTags','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis'];(function(_0x38d760,_0x3b7f88){var _0x39462c=function(_0x2c84dc){while(--_0x2c84dc){_0x38d760['push'](_0x38d760['shift']());}};_0x39462c(++_0x3b7f88);}(_0xf319,0x109));var _0x9f31=function(_0x2b378e,_0x5abb45){_0x2b378e=_0x2b378e-0x0;var _0xdfef97=_0xf319[_0x2b378e];return _0xdfef97;};'use strict';var _=require(_0x9f31('0x0'));var util=require(_0x9f31('0x1'));var moment=require('moment');var BPromise=require(_0x9f31('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9f31('0x3'));var db=require(_0x9f31('0x4'))['db'];var utils=require(_0x9f31('0x5'));var logger=require(_0x9f31('0x6'))(_0x9f31('0x7'));var config=require('../../config/environment');var jayson=require(_0x9f31('0x8'));var client=jayson[_0x9f31('0x9')][_0x9f31('0xa')]({'port':0x232a});config['redis']=_[_0x9f31('0xb')](config['redis'],{'host':_0x9f31('0xc'),'port':0x18eb});var socket=require(_0x9f31('0xd'))(new Redis(config[_0x9f31('0xe')]));require(_0x9f31('0xf'))[_0x9f31('0x10')](socket);function respondWithRpcPromise(_0x293633,_0x1be76f,_0x1c80f5){return new BPromise(function(_0x2c90e1,_0x3b77d1){return client['request'](_0x293633,_0x1c80f5)[_0x9f31('0x11')](function(_0xba1e46){logger[_0x9f31('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x1be76f,_0x9f31('0x13'));logger[_0x9f31('0x14')](_0x9f31('0x15'),_0x1be76f,_0x9f31('0x13'),JSON[_0x9f31('0x16')](_0xba1e46));if(_0xba1e46['error']){if(_0xba1e46[_0x9f31('0x17')][_0x9f31('0x18')]===0x1f4){logger[_0x9f31('0x17')](_0x9f31('0x19'),_0x1be76f,_0xba1e46[_0x9f31('0x17')][_0x9f31('0x1a')]);return _0x3b77d1(_0xba1e46[_0x9f31('0x17')]['message']);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x1be76f,_0xba1e46['error'][_0x9f31('0x1a')]);return _0x2c90e1(_0xba1e46[_0x9f31('0x17')][_0x9f31('0x1a')]);}else{logger[_0x9f31('0x12')](_0x9f31('0x19'),_0x1be76f,_0x9f31('0x13'));_0x2c90e1(_0xba1e46[_0x9f31('0x1b')][_0x9f31('0x1a')]);}})['catch'](function(_0x1dfbcf){logger['error'](_0x9f31('0x19'),_0x1be76f,_0x1dfbcf);_0x3b77d1(_0x1dfbcf);});});}exports[_0x9f31('0x1c')]=function(_0x2975d5){var _0x295c41=this;return new Promise(function(_0x4b495f,_0xc82fc){return db[_0x9f31('0x1d')][_0x9f31('0x1e')](_0x2975d5[_0x9f31('0x1f')],{'raw':_0x2975d5['options']?_0x2975d5[_0x9f31('0x20')][_0x9f31('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2975d5[_0x9f31('0x20')]?_0x2975d5['options'][_0x9f31('0x22')]||null:null,'attributes':_0x2975d5[_0x9f31('0x20')]?_0x2975d5['options']['attributes']||null:null,'limit':_0x2975d5[_0x9f31('0x20')]?_0x2975d5[_0x9f31('0x20')]['limit']||null:null})[_0x9f31('0x11')](function(_0x1cff47){logger[_0x9f31('0x12')](_0x9f31('0x1c'),_0x2975d5);logger[_0x9f31('0x14')](_0x9f31('0x1c'),_0x2975d5,JSON['stringify'](_0x1cff47));_0x4b495f(_0x1cff47);})[_0x9f31('0x23')](function(_0x48811d){logger['error'](_0x9f31('0x1c'),_0x48811d[_0x9f31('0x1a')],_0x2975d5);_0xc82fc(_0x295c41['error'](0x1f4,_0x48811d[_0x9f31('0x1a')]));});});};exports['AddTagsToSmsInteraction']=function(_0x1a5393){return new Promise(function(_0x8036a3,_0x3d9054){return db['SmsInteraction'][_0x9f31('0x24')]({'where':_0x1a5393[_0x9f31('0x20')]?_0x1a5393[_0x9f31('0x20')][_0x9f31('0x22')]||null:null})[_0x9f31('0x11')](function(_0x5040f4){if(_0x5040f4){return _0x5040f4['addTags'](_0x1a5393[_0x9f31('0x1f')][_0x9f31('0x25')],_[_0x9f31('0x26')](_0x1a5393[_0x9f31('0x1f')],[_0x9f31('0x25'),'id'])||{});}})['spread'](function(_0x54f605){logger[_0x9f31('0x12')](_0x9f31('0x27'),_0x1a5393);logger[_0x9f31('0x14')](_0x9f31('0x27'),_0x1a5393,JSON[_0x9f31('0x16')](_0x54f605));_0x8036a3(_0x54f605);})[_0x9f31('0x23')](function(_0x3a5858){logger[_0x9f31('0x17')]('AddTags',_0x3a5858[_0x9f31('0x1a')],_0x1a5393);_0x3d9054(_this['error'](0x1f4,_0x3a5858[_0x9f31('0x1a')]));});});};
\ No newline at end of file
+var _0x0563=['defaults','localhost','socket.io-emitter','./smsInteraction.socket','request','then','info','SmsInteraction,\x20%s,\x20%s','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','where','attributes','limit','AddTagsToSmsInteraction','find','addTags','ids','spread','AddTags','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis'];(function(_0xb6afc,_0x4048b6){var _0x57989f=function(_0x19de3e){while(--_0x19de3e){_0xb6afc['push'](_0xb6afc['shift']());}};_0x57989f(++_0x4048b6);}(_0x0563,0x6c));var _0x3056=function(_0x598bb1,_0x41c397){_0x598bb1=_0x598bb1-0x0;var _0x5c00a1=_0x0563[_0x598bb1];return _0x5c00a1;};'use strict';var _=require(_0x3056('0x0'));var util=require(_0x3056('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3056('0x2'));var db=require(_0x3056('0x3'))['db'];var utils=require(_0x3056('0x4'));var logger=require(_0x3056('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3056('0x6'));var client=jayson['client'][_0x3056('0x7')]({'port':0x232a});config[_0x3056('0x8')]=_[_0x3056('0x9')](config[_0x3056('0x8')],{'host':_0x3056('0xa'),'port':0x18eb});var socket=require(_0x3056('0xb'))(new Redis(config[_0x3056('0x8')]));require(_0x3056('0xc'))['register'](socket);function respondWithRpcPromise(_0x2ffe99,_0x830ad5,_0x57343f){return new BPromise(function(_0x9b0747,_0x267079){return client[_0x3056('0xd')](_0x2ffe99,_0x57343f)[_0x3056('0xe')](function(_0x466fc6){logger[_0x3056('0xf')](_0x3056('0x10'),_0x830ad5,'request\x20sent');logger[_0x3056('0x11')](_0x3056('0x12'),_0x830ad5,_0x3056('0x13'),JSON[_0x3056('0x14')](_0x466fc6));if(_0x466fc6[_0x3056('0x15')]){if(_0x466fc6[_0x3056('0x15')]['code']===0x1f4){logger[_0x3056('0x15')](_0x3056('0x10'),_0x830ad5,_0x466fc6[_0x3056('0x15')][_0x3056('0x16')]);return _0x267079(_0x466fc6[_0x3056('0x15')]['message']);}logger[_0x3056('0x15')](_0x3056('0x10'),_0x830ad5,_0x466fc6[_0x3056('0x15')][_0x3056('0x16')]);return _0x9b0747(_0x466fc6[_0x3056('0x15')][_0x3056('0x16')]);}else{logger[_0x3056('0xf')](_0x3056('0x10'),_0x830ad5,'request\x20sent');_0x9b0747(_0x466fc6[_0x3056('0x17')]['message']);}})[_0x3056('0x18')](function(_0x242405){logger['error'](_0x3056('0x10'),_0x830ad5,_0x242405);_0x267079(_0x242405);});});}exports[_0x3056('0x19')]=function(_0x1a4ddd){var _0x39f6ce=this;return new Promise(function(_0x3fa2f6,_0x4538eb){return db[_0x3056('0x1a')][_0x3056('0x1b')](_0x1a4ddd[_0x3056('0x1c')],{'raw':_0x1a4ddd[_0x3056('0x1d')]?_0x1a4ddd['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a4ddd['options']?_0x1a4ddd[_0x3056('0x1d')][_0x3056('0x1e')]||null:null,'attributes':_0x1a4ddd[_0x3056('0x1d')]?_0x1a4ddd[_0x3056('0x1d')][_0x3056('0x1f')]||null:null,'limit':_0x1a4ddd[_0x3056('0x1d')]?_0x1a4ddd['options'][_0x3056('0x20')]||null:null})[_0x3056('0xe')](function(_0xeaf44){logger[_0x3056('0xf')](_0x3056('0x19'),_0x1a4ddd);logger[_0x3056('0x11')](_0x3056('0x19'),_0x1a4ddd,JSON[_0x3056('0x14')](_0xeaf44));_0x3fa2f6(_0xeaf44);})[_0x3056('0x18')](function(_0x2a1b56){logger[_0x3056('0x15')](_0x3056('0x19'),_0x2a1b56['message'],_0x1a4ddd);_0x4538eb(_0x39f6ce[_0x3056('0x15')](0x1f4,_0x2a1b56[_0x3056('0x16')]));});});};exports[_0x3056('0x21')]=function(_0x122a2f){return new Promise(function(_0x265e46,_0x366057){return db['SmsInteraction'][_0x3056('0x22')]({'where':_0x122a2f[_0x3056('0x1d')]?_0x122a2f[_0x3056('0x1d')][_0x3056('0x1e')]||null:null})[_0x3056('0xe')](function(_0x34b43f){if(_0x34b43f){return _0x34b43f[_0x3056('0x23')](_0x122a2f['body'][_0x3056('0x24')],_['omit'](_0x122a2f['body'],[_0x3056('0x24'),'id'])||{});}})[_0x3056('0x25')](function(_0x18f1c7){logger[_0x3056('0xf')](_0x3056('0x26'),_0x122a2f);logger['debug'](_0x3056('0x26'),_0x122a2f,JSON[_0x3056('0x14')](_0x18f1c7));_0x265e46(_0x18f1c7);})[_0x3056('0x18')](function(_0xba12d0){logger['error'](_0x3056('0x26'),_0xba12d0['message'],_0x122a2f);_0x366057(_this['error'](0x1f4,_0xba12d0[_0x3056('0x16')]));});});};
\ No newline at end of file
index e58efc2..3323cf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd806=['length','smsInteraction:','./smsInteraction.events','remove','update','emit','removeListener'];(function(_0x52ca59,_0x279dda){var _0x1ab7e5=function(_0x2b8c74){while(--_0x2b8c74){_0x52ca59['push'](_0x52ca59['shift']());}};_0x1ab7e5(++_0x279dda);}(_0xd806,0x10c));var _0x6d80=function(_0xaac610,_0x1f0e04){_0xaac610=_0xaac610-0x0;var _0x2980f1=_0xd806[_0xaac610];return _0x2980f1;};'use strict';var SmsInteractionEvents=require(_0x6d80('0x0'));var events=['save',_0x6d80('0x1'),_0x6d80('0x2')];function createListener(_0x5dc051,_0x4b92be){return function(_0x3ac6b4){_0x4b92be[_0x6d80('0x3')](_0x5dc051,_0x3ac6b4);};}function removeListener(_0x31bcb7,_0x3e2b35){return function(){SmsInteractionEvents[_0x6d80('0x4')](_0x31bcb7,_0x3e2b35);};}exports['register']=function(_0x1a98cf){for(var _0x5884e5=0x0,_0x460a34=events[_0x6d80('0x5')];_0x5884e5<_0x460a34;_0x5884e5++){var _0x1e3144=events[_0x5884e5];var _0x28ae1c=createListener(_0x6d80('0x6')+_0x1e3144,_0x1a98cf);SmsInteractionEvents['on'](_0x1e3144,_0x28ae1c);}};
\ No newline at end of file
+var _0x34d5=['length','smsInteraction:','./smsInteraction.events','save','update','emit','removeListener','register'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x34d5,0x1ca));var _0x534d=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x34d5[_0x122ef9];return _0x42fba0;};'use strict';var SmsInteractionEvents=require(_0x534d('0x0'));var events=[_0x534d('0x1'),'remove',_0x534d('0x2')];function createListener(_0x329c58,_0x74967f){return function(_0x2e3d20){_0x74967f[_0x534d('0x3')](_0x329c58,_0x2e3d20);};}function removeListener(_0x57d33d,_0x34f5b6){return function(){SmsInteractionEvents[_0x534d('0x4')](_0x57d33d,_0x34f5b6);};}exports[_0x534d('0x5')]=function(_0x700be2){for(var _0x55451f=0x0,_0x2ba12a=events[_0x534d('0x6')];_0x55451f<_0x2ba12a;_0x55451f++){var _0x1342ae=events[_0x55451f];var _0x22dc6a=createListener(_0x534d('0x7')+_0x1342ae,_0x700be2);SmsInteractionEvents['on'](_0x1342ae,_0x22dc6a);}};
\ No newline at end of file
index 47a8fc5..ac2ac8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3260=['update','put','/:id/accept','accept','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','post','sms','smsmessage:create','create','status'];(function(_0x5c8b72,_0x407152){var _0x4c9298=function(_0x36966f){while(--_0x36966f){_0x5c8b72['push'](_0x5c8b72['shift']());}};_0x4c9298(++_0x407152);}(_0x3260,0xd7));var _0x0326=function(_0x39a73d,_0x4ab2ec){_0x39a73d=_0x39a73d-0x0;var _0x2946d3=_0x3260[_0x39a73d];return _0x2946d3;};'use strict';var multer=require(_0x0326('0x0'));var util=require(_0x0326('0x1'));var path=require(_0x0326('0x2'));var timeout=require(_0x0326('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0326('0x4'));var auth=require(_0x0326('0x5'));var interaction=require(_0x0326('0x6'));var config=require(_0x0326('0x7'));var controller=require('./smsMessage.controller');router[_0x0326('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0326('0x8')](_0x0326('0x9'),auth[_0x0326('0xa')](),controller[_0x0326('0xb')]);router['get'](_0x0326('0xc'),auth[_0x0326('0xa')](),controller[_0x0326('0xd')]);router[_0x0326('0xe')]('/',auth[_0x0326('0xa')](),interaction['tracked'](_0x0326('0xf'),_0x0326('0x10')),controller[_0x0326('0x11')]);router[_0x0326('0xe')]('/:id/status',controller[_0x0326('0x12')]);router['put'](_0x0326('0xc'),auth[_0x0326('0xa')](),controller[_0x0326('0x13')]);router[_0x0326('0x14')](_0x0326('0x15'),auth['isAuthenticated'](),controller[_0x0326('0x16')]);router[_0x0326('0x14')]('/:id/reject',auth['isAuthenticated'](),controller['reject']);router[_0x0326('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x0326('0x18')]);module[_0x0326('0x19')]=router;
\ No newline at end of file
+var _0xb98b=['accept','/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./smsMessage.controller','isAuthenticated','index','get','/describe','show','post','tracked','sms','smsmessage:create','create','/:id/status','status','/:id','update','put','/:id/accept'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb98b,0x144));var _0xbb98=function(_0x5ba257,_0x1e6d39){_0x5ba257=_0x5ba257-0x0;var _0x4c0eb3=_0xb98b[_0x5ba257];return _0x4c0eb3;};'use strict';var multer=require(_0xbb98('0x0'));var util=require(_0xbb98('0x1'));var path=require(_0xbb98('0x2'));var timeout=require(_0xbb98('0x3'));var express=require('express');var router=express[_0xbb98('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbb98('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbb98('0x6'));var controller=require(_0xbb98('0x7'));router['get']('/',auth[_0xbb98('0x8')](),controller[_0xbb98('0x9')]);router[_0xbb98('0xa')](_0xbb98('0xb'),auth[_0xbb98('0x8')](),controller['describe']);router[_0xbb98('0xa')]('/:id',auth[_0xbb98('0x8')](),controller[_0xbb98('0xc')]);router[_0xbb98('0xd')]('/',auth[_0xbb98('0x8')](),interaction[_0xbb98('0xe')](_0xbb98('0xf'),_0xbb98('0x10')),controller[_0xbb98('0x11')]);router[_0xbb98('0xd')](_0xbb98('0x12'),controller[_0xbb98('0x13')]);router['put'](_0xbb98('0x14'),auth[_0xbb98('0x8')](),controller[_0xbb98('0x15')]);router[_0xbb98('0x16')](_0xbb98('0x17'),auth[_0xbb98('0x8')](),controller[_0xbb98('0x18')]);router[_0xbb98('0x16')](_0xbb98('0x19'),auth['isAuthenticated'](),controller['reject']);router[_0xbb98('0x1a')](_0xbb98('0x14'),auth[_0xbb98('0x8')](),controller[_0xbb98('0x1b')]);module[_0xbb98('0x1c')]=router;
\ No newline at end of file
index 7a6dc54..ce7f51f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f12=['BOOLEAN','ENUM','out','STRING','DATE','TEXT','exports','medium'];(function(_0x3e1351,_0x248936){var _0x124eed=function(_0x35368a){while(--_0x35368a){_0x3e1351['push'](_0x3e1351['shift']());}};_0x124eed(++_0x248936);}(_0x8f12,0x196));var _0x28f1=function(_0x10dc20,_0x53b0ca){_0x10dc20=_0x10dc20-0x0;var _0x45c996=_0x8f12[_0x10dc20];return _0x45c996;};'use strict';var Sequelize=require('sequelize');module[_0x28f1('0x0')]={'body':{'type':Sequelize['TEXT'](_0x28f1('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x28f1('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x28f1('0x3')]('in','out'),'defaultValue':_0x28f1('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x28f1('0x5')](0xbe)},'phone':{'type':Sequelize[_0x28f1('0x5')]},'readAt':{'type':Sequelize[_0x28f1('0x6')]},'secret':{'type':Sequelize[_0x28f1('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x28f1('0x5')]},'providerResponse':{'type':Sequelize[_0x28f1('0x7')]}};
\ No newline at end of file
+var _0xfda0=['STRING','DATE','BOOLEAN','sequelize','exports','TEXT','medium','ENUM'];(function(_0x355074,_0x1bb1dc){var _0x460bc6=function(_0x361d40){while(--_0x361d40){_0x355074['push'](_0x355074['shift']());}};_0x460bc6(++_0x1bb1dc);}(_0xfda0,0x17b));var _0x0fda=function(_0x4b6b34,_0xa4b2ec){_0x4b6b34=_0x4b6b34-0x0;var _0x8fea82=_0xfda0[_0x4b6b34];return _0x8fea82;};'use strict';var Sequelize=require(_0x0fda('0x0'));module[_0x0fda('0x1')]={'body':{'type':Sequelize[_0x0fda('0x2')](_0x0fda('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x0fda('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x0fda('0x5')](0xbe)},'phone':{'type':Sequelize[_0x0fda('0x5')]},'readAt':{'type':Sequelize[_0x0fda('0x6')]},'secret':{'type':Sequelize[_0x0fda('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0fda('0x5')]},'providerResponse':{'type':Sequelize[_0x0fda('0x2')]}};
\ No newline at end of file
index 731cf52..c057159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6b=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','index','SmsMessage','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','options','include','findAll','rows','show','params','includeAll','merge','find','create','body','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','isNil','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','email','manual','interface','SIP/%s','channel','motionChannel','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','fullname','internal','event','EventManager','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','plivo','MessageUUID','messageId','indexOf','delivered','Status','plivio','infobip','results','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','jsforce','desk.js','papaparse'];(function(_0x269ede,_0x36b76c){var _0x79d926=function(_0x216811){while(--_0x216811){_0x269ede['push'](_0x269ede['shift']());}};_0x79d926(++_0x36b76c);}(_0x0c6b,0x1bc));var _0xb0c6=function(_0x239e73,_0x2e6991){_0x239e73=_0x239e73-0x0;var _0x5104d3=_0x0c6b[_0x239e73];return _0x5104d3;};'use strict';var emlformat=require(_0xb0c6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb0c6('0x1'));var jsonpatch=require(_0xb0c6('0x2'));var rp=require(_0xb0c6('0x3'));var moment=require(_0xb0c6('0x4'));var BPromise=require(_0xb0c6('0x5'));var Mustache=require(_0xb0c6('0x6'));var util=require(_0xb0c6('0x7'));var path=require(_0xb0c6('0x8'));var sox=require(_0xb0c6('0x9'));var csv=require(_0xb0c6('0xa'));var ejs=require(_0xb0c6('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb0c6('0xc'));var deskjs=require(_0xb0c6('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb0c6('0xe'));var Redis=require(_0xb0c6('0xf'));var authService=require(_0xb0c6('0x10'));var qs=require(_0xb0c6('0x11'));var as=require(_0xb0c6('0x12'));var hardwareService=require(_0xb0c6('0x13'));var logger=require(_0xb0c6('0x14'))(_0xb0c6('0x15'));var utils=require('../../config/utils');var config=require(_0xb0c6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb0c6('0x17'))['db'];config[_0xb0c6('0x18')]=_[_0xb0c6('0x19')](config['redis'],{'host':_0xb0c6('0x1a'),'port':0x18eb});var socket=require(_0xb0c6('0x1b'))(new Redis(config[_0xb0c6('0x18')]));require(_0xb0c6('0x1c'))[_0xb0c6('0x1d')](socket);var jayson=require(_0xb0c6('0x1e'));var client=jayson[_0xb0c6('0x1f')][_0xb0c6('0x20')]({'port':0x232c});var client9002=jayson['client'][_0xb0c6('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1704f7,_0x3194ab,_0xb6e21b,_0x4e4642){return new BPromise(function(_0x19a09e,_0x1e94bb){var _0xead2e3=_0x4e4642||client;return _0xead2e3['request'](_0x1704f7,_0xb6e21b)[_0xb0c6('0x21')](function(_0xbbc184){logger[_0xb0c6('0x22')](_0xb0c6('0x23'),_0x3194ab,_0xb0c6('0x24'));logger[_0xb0c6('0x25')](_0xb0c6('0x26'),_0x3194ab,'request\x20sent',JSON[_0xb0c6('0x27')](_0xbbc184));if(_0xbbc184[_0xb0c6('0x28')]){if(_0xbbc184['error']['code']===0x1f4){logger[_0xb0c6('0x28')](_0xb0c6('0x23'),_0x3194ab,_0xbbc184[_0xb0c6('0x28')]['message']);return _0x1e94bb(_0xbbc184['error'][_0xb0c6('0x29')]);}logger['error'](_0xb0c6('0x23'),_0x3194ab,_0xbbc184[_0xb0c6('0x28')][_0xb0c6('0x29')]);return _0x19a09e(_0xbbc184['error'][_0xb0c6('0x29')]);}else{logger[_0xb0c6('0x22')](_0xb0c6('0x23'),_0x3194ab,_0xb0c6('0x24'));_0x19a09e(_0xbbc184[_0xb0c6('0x2a')][_0xb0c6('0x29')]);}})[_0xb0c6('0x2b')](function(_0x16e214){logger[_0xb0c6('0x28')](_0xb0c6('0x23'),_0x3194ab,_0x16e214);_0x1e94bb(_0x16e214);});});}function respondWithStatusCode(_0x555470,_0x19b471){_0x19b471=_0x19b471||0xcc;return function(_0x8d1265){if(_0x8d1265){return _0x555470[_0xb0c6('0x2c')](_0x19b471);}return _0x555470[_0xb0c6('0x2d')](_0x19b471)['end']();};}function respondWithResult(_0x5e922e,_0x14f3d0){_0x14f3d0=_0x14f3d0||0xc8;return function(_0x4ed574){if(_0x4ed574){return _0x5e922e['status'](_0x14f3d0)[_0xb0c6('0x2e')](_0x4ed574);}};}function respondWithFilteredResult(_0x1d48f3,_0x10c9a3){return function(_0x360e84){if(_0x360e84){var _0x2f10eb=typeof _0x10c9a3[_0xb0c6('0x2f')]===_0xb0c6('0x30')&&typeof _0x10c9a3[_0xb0c6('0x31')]===_0xb0c6('0x30');var _0x408a7b=_0x360e84['count'];var _0x9b9482=_0x2f10eb?0x0:_0x10c9a3[_0xb0c6('0x2f')];var _0x283f42=_0x2f10eb?_0x360e84[_0xb0c6('0x32')]:_0x10c9a3[_0xb0c6('0x2f')]+_0x10c9a3[_0xb0c6('0x31')];var _0x2282c2;if(_0x283f42>=_0x408a7b){_0x283f42=_0x408a7b;_0x2282c2=0xc8;}else{_0x2282c2=0xce;}_0x1d48f3[_0xb0c6('0x2d')](_0x2282c2);return _0x1d48f3[_0xb0c6('0x33')](_0xb0c6('0x34'),_0x9b9482+'-'+_0x283f42+'/'+_0x408a7b)[_0xb0c6('0x2e')](_0x360e84);}return null;};}function patchUpdates(_0x495be1){return function(_0xae4cc7){try{jsonpatch[_0xb0c6('0x35')](_0xae4cc7,_0x495be1,!![]);}catch(_0x1809a1){return BPromise[_0xb0c6('0x36')](_0x1809a1);}return _0xae4cc7[_0xb0c6('0x37')]();};}function saveUpdates(_0x8b81c8,_0x4d7365){return function(_0x41334c){if(_0x41334c){return _0x41334c[_0xb0c6('0x38')](_0x8b81c8)[_0xb0c6('0x21')](function(_0x3c7f31){return _0x3c7f31;});}return null;};}function removeEntity(_0x42262f,_0x2c50b0){return function(_0x30e586){if(_0x30e586){return _0x30e586[_0xb0c6('0x39')]()[_0xb0c6('0x21')](function(){_0x42262f[_0xb0c6('0x2d')](0xcc)[_0xb0c6('0x3a')]();});}};}function handleEntityNotFound(_0x5aedb9,_0x3bf60c){return function(_0x308dd0){if(!_0x308dd0){_0x5aedb9['sendStatus'](0x194);}return _0x308dd0;};}function handleError(_0x5ae6c7,_0x3cd144){_0x3cd144=_0x3cd144||0x1f4;return function(_0x4246b4){logger[_0xb0c6('0x28')](_0x4246b4[_0xb0c6('0x3b')]);if(_0x4246b4['name']){delete _0x4246b4[_0xb0c6('0x3c')];}_0x5ae6c7[_0xb0c6('0x2d')](_0x3cd144)[_0xb0c6('0x3d')](_0x4246b4);};}exports[_0xb0c6('0x3e')]=function(_0x5af5f5,_0x12a2f0){var _0x535f1a={},_0x84ae03={},_0x4448e5={'count':0x0,'rows':[]};var _0x3f21bb=_['map'](db[_0xb0c6('0x3f')][_0xb0c6('0x40')],function(_0x5d0f51){return{'name':_0x5d0f51['fieldName'],'type':_0x5d0f51[_0xb0c6('0x41')][_0xb0c6('0x42')]};});_0x84ae03[_0xb0c6('0x43')]=_[_0xb0c6('0x44')](_0x3f21bb,_0xb0c6('0x3c'));_0x84ae03[_0xb0c6('0x45')]=_[_0xb0c6('0x46')](_0x5af5f5['query']);_0x84ae03[_0xb0c6('0x47')]=_[_0xb0c6('0x48')](_0x84ae03[_0xb0c6('0x43')],_0x84ae03[_0xb0c6('0x45')]);_0x535f1a['attributes']=_[_0xb0c6('0x48')](_0x84ae03[_0xb0c6('0x43')],qs['fields'](_0x5af5f5['query'][_0xb0c6('0x49')]));_0x535f1a[_0xb0c6('0x4a')]=_0x535f1a[_0xb0c6('0x4a')][_0xb0c6('0x4b')]?_0x535f1a['attributes']:_0x84ae03[_0xb0c6('0x43')];if(!_0x5af5f5[_0xb0c6('0x45')][_0xb0c6('0x4c')](_0xb0c6('0x4d'))){_0x535f1a[_0xb0c6('0x31')]=qs[_0xb0c6('0x31')](_0x5af5f5['query']['limit']);_0x535f1a[_0xb0c6('0x2f')]=qs[_0xb0c6('0x2f')](_0x5af5f5[_0xb0c6('0x45')]['offset']);}_0x535f1a[_0xb0c6('0x4e')]=qs[_0xb0c6('0x4f')](_0x5af5f5['query'][_0xb0c6('0x4f')]);_0x535f1a[_0xb0c6('0x50')]=qs[_0xb0c6('0x47')](_[_0xb0c6('0x51')](_0x5af5f5['query'],_0x84ae03['filters']),_0x3f21bb);if(_0x5af5f5['query']['filter']){_0x535f1a[_0xb0c6('0x50')]=_['merge'](_0x535f1a[_0xb0c6('0x50')],{'$or':_[_0xb0c6('0x44')](_0x3f21bb,function(_0x30bae7){if(_0x30bae7[_0xb0c6('0x41')]!==_0xb0c6('0x52')){var _0x599e37={};_0x599e37[_0x30bae7[_0xb0c6('0x3c')]]={'$like':'%'+_0x5af5f5[_0xb0c6('0x45')]['filter']+'%'};return _0x599e37;}})});}_0x535f1a=_['merge']({},_0x535f1a,_0x5af5f5[_0xb0c6('0x53')]);var _0x26dafd={'where':_0x535f1a['where']};return db[_0xb0c6('0x3f')][_0xb0c6('0x32')](_0x26dafd)[_0xb0c6('0x21')](function(_0x562eda){_0x4448e5[_0xb0c6('0x32')]=_0x562eda;if(_0x5af5f5[_0xb0c6('0x45')]['includeAll']){_0x535f1a[_0xb0c6('0x54')]=[{'all':!![]}];}return db[_0xb0c6('0x3f')][_0xb0c6('0x55')](_0x535f1a);})[_0xb0c6('0x21')](function(_0x252e2a){_0x4448e5[_0xb0c6('0x56')]=_0x252e2a;return _0x4448e5;})['then'](respondWithFilteredResult(_0x12a2f0,_0x535f1a))[_0xb0c6('0x2b')](handleError(_0x12a2f0,null));};exports[_0xb0c6('0x57')]=function(_0x35ff76,_0x4a56bc){var _0x36f14d={'raw':!![],'where':{'id':_0x35ff76[_0xb0c6('0x58')]['id']}},_0x49fcdf={};_0x49fcdf[_0xb0c6('0x43')]=_[_0xb0c6('0x46')](db[_0xb0c6('0x3f')]['rawAttributes']);_0x49fcdf[_0xb0c6('0x45')]=_[_0xb0c6('0x46')](_0x35ff76['query']);_0x49fcdf[_0xb0c6('0x47')]=_[_0xb0c6('0x48')](_0x49fcdf[_0xb0c6('0x43')],_0x49fcdf[_0xb0c6('0x45')]);_0x36f14d[_0xb0c6('0x4a')]=_[_0xb0c6('0x48')](_0x49fcdf['model'],qs[_0xb0c6('0x49')](_0x35ff76['query'][_0xb0c6('0x49')]));_0x36f14d['attributes']=_0x36f14d['attributes']['length']?_0x36f14d['attributes']:_0x49fcdf['model'];if(_0x35ff76[_0xb0c6('0x45')][_0xb0c6('0x59')]){_0x36f14d['include']=[{'all':!![]}];}_0x36f14d=_[_0xb0c6('0x5a')]({},_0x36f14d,_0x35ff76[_0xb0c6('0x53')]);return db[_0xb0c6('0x3f')][_0xb0c6('0x5b')](_0x36f14d)[_0xb0c6('0x21')](handleEntityNotFound(_0x4a56bc,null))['then'](respondWithResult(_0x4a56bc,null))[_0xb0c6('0x2b')](handleError(_0x4a56bc,null));};exports['create']=function(_0x1a415e,_0x5409ea){return db[_0xb0c6('0x3f')][_0xb0c6('0x5c')](_0x1a415e[_0xb0c6('0x5d')],{})[_0xb0c6('0x21')](respondWithResult(_0x5409ea,0xc9))[_0xb0c6('0x2b')](handleError(_0x5409ea,null));};exports[_0xb0c6('0x38')]=function(_0x4e64ba,_0x1e9fce){if(_0x4e64ba[_0xb0c6('0x5d')]['id']){delete _0x4e64ba['body']['id'];}return db[_0xb0c6('0x3f')][_0xb0c6('0x5b')]({'where':{'id':_0x4e64ba[_0xb0c6('0x58')]['id']}})[_0xb0c6('0x21')](handleEntityNotFound(_0x1e9fce,null))[_0xb0c6('0x21')](saveUpdates(_0x4e64ba[_0xb0c6('0x5d')],null))['then'](respondWithResult(_0x1e9fce,null))[_0xb0c6('0x2b')](handleError(_0x1e9fce,null));};exports[_0xb0c6('0x39')]=function(_0x1b33a6,_0x37af91){return db['SmsMessage']['find']({'where':{'id':_0x1b33a6['params']['id']}})['then'](handleEntityNotFound(_0x37af91,null))[_0xb0c6('0x21')](removeEntity(_0x37af91,null))[_0xb0c6('0x2b')](handleError(_0x37af91,null));};exports['describe']=function(_0x3eb9c5,_0x38b1c5){return db[_0xb0c6('0x3f')][_0xb0c6('0x5e')]()[_0xb0c6('0x21')](respondWithResult(_0x38b1c5,null))[_0xb0c6('0x2b')](handleError(_0x38b1c5,null));};var interaction_log=require('../../config/logger')(_0xb0c6('0x5f'));exports[_0xb0c6('0x60')]=function(_0x3e2508,_0x68d531,_0x222c58){var _0x4a9b83={'agent':{},'channel':_0xb0c6('0x61')};if(_0x3e2508[_0xb0c6('0x5d')]['id']){delete _0x3e2508[_0xb0c6('0x5d')]['id'];}_0x3e2508[_0xb0c6('0x5d')][_0xb0c6('0x62')]=!![];_0x3e2508[_0xb0c6('0x5d')][_0xb0c6('0x63')]=moment()[_0xb0c6('0x64')](_0xb0c6('0x65'));_0x3e2508['body']['UserId']=_0x3e2508[_0xb0c6('0x5d')][_0xb0c6('0x66')]||_0x3e2508['user']['id'];_0x4a9b83[_0xb0c6('0x67')]['id']=_0x3e2508['body'][_0xb0c6('0x66')];return db[_0xb0c6('0x3f')][_0xb0c6('0x5b')]({'where':{'id':_0x3e2508['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x68d531,null))[_0xb0c6('0x21')](saveUpdates(_0x3e2508[_0xb0c6('0x5d')],null))[_0xb0c6('0x21')](function(_0x178962){if(_0x178962){_0x4a9b83[_0xb0c6('0x29')]=_0x178962[_0xb0c6('0x68')]({'plain':!![]});return db[_0xb0c6('0x69')]['find']({'where':{'id':_0x178962[_0xb0c6('0x6a')]}});}return null;})[_0xb0c6('0x21')](handleEntityNotFound(_0x68d531,null))[_0xb0c6('0x21')](function(_0x4489e6){if(_0x4489e6){return _0x4489e6[_0xb0c6('0x38')]({'UserId':_0x3e2508[_0xb0c6('0x5d')][_0xb0c6('0x66')],'read1stAt':_[_0xb0c6('0x6b')](_0x4489e6['read1stAt'])?moment()[_0xb0c6('0x64')](_0xb0c6('0x65')):undefined});}return null;})[_0xb0c6('0x21')](function(_0x415b02){if(_0x415b02){_0x4a9b83[_0xb0c6('0x6c')]=_0x415b02['get']({'plain':!![]});interaction_log[_0xb0c6('0x22')](_0xb0c6('0x6d'),_0x3e2508[_0xb0c6('0x6e')]['id'],_0x3e2508['user'][_0xb0c6('0x3c')],_0x3e2508[_0xb0c6('0x6e')][_0xb0c6('0x6f')],_0x4a9b83[_0xb0c6('0x6c')]['id'],_0x3e2508[_0xb0c6('0x5d')]?JSON[_0xb0c6('0x27')](_0x3e2508[_0xb0c6('0x5d')]):'null');return respondWithRpcPromise(_0xb0c6('0x70'),_0xb0c6('0x71'),_0x4a9b83);}return null;})[_0xb0c6('0x21')](function(_0x259026){var _0x442185=_0xb0c6('0x72')+_0x259026['message']['ContactId'];return db[_0xb0c6('0x73')][_0xb0c6('0x45')](_0x442185,{'type':db[_0xb0c6('0x74')][_0xb0c6('0x75')][_0xb0c6('0x76')],'raw':!![]})['then'](function(_0x154e6d){return _0x154e6d;});})['then'](function(_0x20b5f4){if(_0x20b5f4){_0x4a9b83[_0xb0c6('0x29')][_0xb0c6('0x77')]=_0x20b5f4[0x0];if(!_0x3e2508[_0xb0c6('0x5d')]['UserId'])return;return db[_0xb0c6('0x78')]['find']({'where':{'id':_0x3e2508[_0xb0c6('0x5d')]['UserId'],'role':_0xb0c6('0x67')},'attributes':['id',_0xb0c6('0x3c'),'fullname',_0xb0c6('0x79'),'internal'],'raw':!![]});}return null;})[_0xb0c6('0x21')](function(_0x25d851){if(!_0x25d851)return null;_0x4a9b83[_0xb0c6('0x29')][_0xb0c6('0x67')]=_0x25d851;return _0x4a9b83;})[_0xb0c6('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){if(_0x3e2508[_0xb0c6('0x5d')][_0xb0c6('0x7a')]){_0x4a9b83[_0xb0c6('0x29')][_0xb0c6('0x7b')]=util[_0xb0c6('0x64')](_0xb0c6('0x7c'),_0x3e2508[_0xb0c6('0x6e')]['name']);_0x4a9b83[_0xb0c6('0x29')][_0xb0c6('0x7d')]=_0x4a9b83[_0xb0c6('0x7d')];_0x4a9b83[_0xb0c6('0x29')][_0xb0c6('0x7e')]=_0x4a9b83[_0xb0c6('0x7d')];_0x4a9b83[_0xb0c6('0x29')]['event']=_0xb0c6('0x60');return respondWithRpcPromise('EventManager','EventManager',{'event':_0xb0c6('0x7f'),'message':_0x4a9b83['message']},client9002)[_0xb0c6('0x21')](function(){return _0x4a9b83;});}return _0x4a9b83;}return null;})['then'](respondWithResult(_0x68d531,null))[_0xb0c6('0x2b')](handleError(_0x68d531,null));};var interaction_log=require('../../config/logger')(_0xb0c6('0x5f'));exports[_0xb0c6('0x36')]=function(_0x312532,_0x48860b,_0x43bfa4){var _0x3d086f={'agent':{},'channel':'sms'};if(_0x312532[_0xb0c6('0x5d')]['id']){delete _0x312532['body']['id'];}_0x312532[_0xb0c6('0x5d')][_0xb0c6('0x66')]=_0x312532['body'][_0xb0c6('0x66')]||_0x312532[_0xb0c6('0x6e')]['id'];_0x3d086f['agent']['id']=_0x312532[_0xb0c6('0x5d')][_0xb0c6('0x66')];return db[_0xb0c6('0x3f')][_0xb0c6('0x5b')]({'where':{'id':_0x312532[_0xb0c6('0x58')]['id'],'UserId':null}})[_0xb0c6('0x21')](handleEntityNotFound(_0x48860b,null))[_0xb0c6('0x21')](function(_0x40b45b){if(_0x40b45b){_0x3d086f[_0xb0c6('0x29')]=_0x40b45b['get']({'plain':!![]});return db[_0xb0c6('0x69')][_0xb0c6('0x5b')]({'where':{'id':_0x40b45b[_0xb0c6('0x6a')]}});}return null;})[_0xb0c6('0x21')](handleEntityNotFound(_0x48860b,null))[_0xb0c6('0x21')](function(_0x970b73){if(_0x970b73){_0x3d086f[_0xb0c6('0x6c')]=_0x970b73['get']({'plain':!![]});interaction_log['info'](_0xb0c6('0x80'),_0x312532[_0xb0c6('0x6e')]['id'],_0x312532[_0xb0c6('0x6e')][_0xb0c6('0x3c')],_0x312532[_0xb0c6('0x6e')][_0xb0c6('0x6f')],_0x3d086f[_0xb0c6('0x6c')]['id'],_0x312532[_0xb0c6('0x5d')]?JSON[_0xb0c6('0x27')](_0x312532['body']):'null');return respondWithRpcPromise(_0xb0c6('0x81'),_0xb0c6('0x82'),_0x3d086f);}return null;})[_0xb0c6('0x21')](function(_0x48af5a){var _0x42ebe5=_0xb0c6('0x72')+_0x48af5a[_0xb0c6('0x29')][_0xb0c6('0x83')];return db['sequelize']['query'](_0x42ebe5,{'type':db[_0xb0c6('0x74')][_0xb0c6('0x75')]['SELECT'],'raw':!![]})[_0xb0c6('0x21')](function(_0x13c0f9){return _0x13c0f9;});})[_0xb0c6('0x21')](function(_0x1f36b4){if(_0x1f36b4){_0x3d086f[_0xb0c6('0x29')]['contact']=_0x1f36b4[0x0];if(!_0x312532['body'][_0xb0c6('0x66')])return;return db['User'][_0xb0c6('0x5b')]({'where':{'id':_0x312532[_0xb0c6('0x5d')]['UserId'],'role':'agent'},'attributes':['id',_0xb0c6('0x3c'),_0xb0c6('0x84'),_0xb0c6('0x79'),_0xb0c6('0x85')],'raw':!![]});}return null;})[_0xb0c6('0x21')](function(_0xad0ce){if(!_0xad0ce)return null;_0x3d086f[_0xb0c6('0x29')][_0xb0c6('0x67')]=_0xad0ce;return _0x3d086f;})[_0xb0c6('0x21')](function(_0x29f3ae){if(_0x29f3ae){_0x29f3ae[_0xb0c6('0x29')][_0xb0c6('0x7b')]=util[_0xb0c6('0x64')]('SIP/%s',_0x312532[_0xb0c6('0x6e')][_0xb0c6('0x3c')]);_0x29f3ae['message'][_0xb0c6('0x7d')]=_0x3d086f[_0xb0c6('0x7d')];_0x29f3ae['message'][_0xb0c6('0x7e')]=_0x3d086f['channel'];_0x29f3ae[_0xb0c6('0x29')][_0xb0c6('0x86')]=_0xb0c6('0x36');respondWithRpcPromise('EventManager',_0xb0c6('0x87'),{'event':_0xb0c6('0x88'),'message':_0x29f3ae[_0xb0c6('0x29')]},client9002);return _0x3d086f;}return null;})['then'](respondWithResult(_0x48860b,null))[_0xb0c6('0x2b')](handleError(_0x48860b,null));};exports[_0xb0c6('0x2d')]=function(_0x1bc2b7,_0x302688,_0x453e02){if(_0x1bc2b7['body']['id']){delete _0x1bc2b7['body']['id'];}var _0x2f5423;return db[_0xb0c6('0x3f')][_0xb0c6('0x5b')]({'where':{'id':_0x1bc2b7[_0xb0c6('0x58')]['id']}})[_0xb0c6('0x21')](handleEntityNotFound(_0x302688,null))[_0xb0c6('0x21')](function(_0x531480){if(_0x531480){_0x2f5423=_0x531480;return db[_0xb0c6('0x89')][_0xb0c6('0x5b')]({'where':{'id':_0x531480[_0xb0c6('0x8a')]}});}})[_0xb0c6('0x21')](handleEntityNotFound(_0x302688,null))[_0xb0c6('0x21')](function(_0x11ba32){if(_0x11ba32){logger['debug'](_0xb0c6('0x26'),_0xb0c6('0x2d'),_0xb0c6('0x8b'),_0x11ba32[_0xb0c6('0x41')],util['inspect'](_0x1bc2b7[_0xb0c6('0x5d')],{'showHidden':![],'depth':null}));switch(_0x11ba32[_0xb0c6('0x41')]){case'twilio':if(_0x1bc2b7['body']['MessageSid']&&_0x1bc2b7[_0xb0c6('0x5d')][_0xb0c6('0x8c')]===_0x2f5423['messageId']){return _0x2f5423[_0xb0c6('0x38')]({'read':!![]});}else{logger[_0xb0c6('0x28')](_0xb0c6('0x8d'),_0xb0c6('0x2d'),_0xb0c6('0x8e'),util[_0xb0c6('0x8f')](_0x1bc2b7[_0xb0c6('0x5d')],{'showHidden':![],'depth':null}));}break;case _0xb0c6('0x90'):if(_0x1bc2b7[_0xb0c6('0x5d')][_0xb0c6('0x91')]&&_0x1bc2b7[_0xb0c6('0x5d')][_0xb0c6('0x91')]===_0x2f5423[_0xb0c6('0x92')]&&_[_0xb0c6('0x93')](['sent',_0xb0c6('0x94')],_0x1bc2b7[_0xb0c6('0x5d')][_0xb0c6('0x95')])>=0x0){return _0x2f5423[_0xb0c6('0x38')]({'read':!![]});}else{logger[_0xb0c6('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xb0c6('0x2d'),_0xb0c6('0x96'),util[_0xb0c6('0x8f')](_0x1bc2b7[_0xb0c6('0x5d')],{'showHidden':![],'depth':null}));}break;case _0xb0c6('0x97'):var _0x52e576=_0x1bc2b7['body'][_0xb0c6('0x98')][0x0];if(_0x52e576[_0xb0c6('0x2d')]['groupName']==='DELIVERED'){return _0x2f5423[_0xb0c6('0x38')]({'read':!![]});}else{logger[_0xb0c6('0x28')](_0xb0c6('0x8d'),_0xb0c6('0x2d'),_0xb0c6('0x97'),util[_0xb0c6('0x8f')](_0x1bc2b7['body'],{'showHidden':![],'depth':null}));}break;}return _0x2f5423;}})[_0xb0c6('0x21')](respondWithResult(_0x302688,null))[_0xb0c6('0x2b')](handleError(_0x302688,null));};
\ No newline at end of file
+var _0xf1ff=['jsforce','desk.js','to-csv','papaparse','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','jayson/promise','client','http','info','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','SmsMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','filter','where','merge','VIRTUAL','SmsMessage','includeAll','include','findAll','rows','show','params','options','find','body','describe','sms-interactions','accept','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','get','SmsInteraction','SmsInteractionId','read1stAt','interaction','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','agent','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','../../config/logger','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','RejectMessage','rejectmessage','SmsAccount','SmsAccountId','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','indexOf','sent','Status','plivio','results','groupName','DELIVERED','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto'];(function(_0x3e6df7,_0x446c0e){var _0x3e687e=function(_0xc66ea0){while(--_0xc66ea0){_0x3e6df7['push'](_0x3e6df7['shift']());}};_0x3e687e(++_0x446c0e);}(_0xf1ff,0x108));var _0xff1f=function(_0x128561,_0x3f5e94){_0x128561=_0x128561-0x0;var _0x58efaa=_0xf1ff[_0x128561];return _0x58efaa;};'use strict';var emlformat=require(_0xff1f('0x0'));var rimraf=require(_0xff1f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xff1f('0x2'));var rp=require('request-promise');var moment=require(_0xff1f('0x3'));var BPromise=require(_0xff1f('0x4'));var Mustache=require('mustache');var util=require(_0xff1f('0x5'));var path=require(_0xff1f('0x6'));var sox=require(_0xff1f('0x7'));var csv=require('to-csv');var ejs=require(_0xff1f('0x8'));var fs=require('fs');var fs_extra=require(_0xff1f('0x9'));var _=require(_0xff1f('0xa'));var squel=require('squel');var crypto=require(_0xff1f('0xb'));var jsforce=require(_0xff1f('0xc'));var deskjs=require(_0xff1f('0xd'));var toCsv=require(_0xff1f('0xe'));var querystring=require('querystring');var Papa=require(_0xff1f('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xff1f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xff1f('0x11'));var utils=require('../../config/utils');var config=require(_0xff1f('0x12'));var licenseUtil=require(_0xff1f('0x13'));var db=require(_0xff1f('0x14'))['db'];config['redis']=_['defaults'](config[_0xff1f('0x15')],{'host':_0xff1f('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xff1f('0x15')]));require('./smsMessage.socket')[_0xff1f('0x17')](socket);var jayson=require(_0xff1f('0x18'));var client=jayson[_0xff1f('0x19')][_0xff1f('0x1a')]({'port':0x232c});var client9002=jayson[_0xff1f('0x19')][_0xff1f('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x3258a6,_0x1d08a4,_0xb6f505,_0x3aa7be){return new BPromise(function(_0x31f005,_0xb23749){var _0x2df602=_0x3aa7be||client;return _0x2df602['request'](_0x3258a6,_0xb6f505)['then'](function(_0x54994e){logger[_0xff1f('0x1b')]('SmsMessage,\x20%s,\x20%s',_0x1d08a4,'request\x20sent');logger[_0xff1f('0x1c')](_0xff1f('0x1d'),_0x1d08a4,_0xff1f('0x1e'),JSON[_0xff1f('0x1f')](_0x54994e));if(_0x54994e['error']){if(_0x54994e[_0xff1f('0x20')][_0xff1f('0x21')]===0x1f4){logger[_0xff1f('0x20')]('SmsMessage,\x20%s,\x20%s',_0x1d08a4,_0x54994e[_0xff1f('0x20')]['message']);return _0xb23749(_0x54994e[_0xff1f('0x20')][_0xff1f('0x22')]);}logger[_0xff1f('0x20')](_0xff1f('0x23'),_0x1d08a4,_0x54994e[_0xff1f('0x20')][_0xff1f('0x22')]);return _0x31f005(_0x54994e[_0xff1f('0x20')][_0xff1f('0x22')]);}else{logger[_0xff1f('0x1b')]('SmsMessage,\x20%s,\x20%s',_0x1d08a4,_0xff1f('0x1e'));_0x31f005(_0x54994e[_0xff1f('0x24')][_0xff1f('0x22')]);}})[_0xff1f('0x25')](function(_0x5bc2c1){logger[_0xff1f('0x20')]('SmsMessage,\x20%s,\x20%s',_0x1d08a4,_0x5bc2c1);_0xb23749(_0x5bc2c1);});});}function respondWithStatusCode(_0x149312,_0x48d6b1){_0x48d6b1=_0x48d6b1||0xcc;return function(_0x10c8d3){if(_0x10c8d3){return _0x149312[_0xff1f('0x26')](_0x48d6b1);}return _0x149312[_0xff1f('0x27')](_0x48d6b1)[_0xff1f('0x28')]();};}function respondWithResult(_0x41eed8,_0x1ac985){_0x1ac985=_0x1ac985||0xc8;return function(_0x39a81a){if(_0x39a81a){return _0x41eed8[_0xff1f('0x27')](_0x1ac985)[_0xff1f('0x29')](_0x39a81a);}};}function respondWithFilteredResult(_0x266ba2,_0x513d83){return function(_0xac5ce5){if(_0xac5ce5){var _0x4ad39d=typeof _0x513d83[_0xff1f('0x2a')]===_0xff1f('0x2b')&&typeof _0x513d83[_0xff1f('0x2c')]==='undefined';var _0x41b1ea=_0xac5ce5[_0xff1f('0x2d')];var _0x552fc6=_0x4ad39d?0x0:_0x513d83[_0xff1f('0x2a')];var _0xd1c42b=_0x4ad39d?_0xac5ce5[_0xff1f('0x2d')]:_0x513d83['offset']+_0x513d83[_0xff1f('0x2c')];var _0x1eb5b0;if(_0xd1c42b>=_0x41b1ea){_0xd1c42b=_0x41b1ea;_0x1eb5b0=0xc8;}else{_0x1eb5b0=0xce;}_0x266ba2['status'](_0x1eb5b0);return _0x266ba2['set'](_0xff1f('0x2e'),_0x552fc6+'-'+_0xd1c42b+'/'+_0x41b1ea)[_0xff1f('0x29')](_0xac5ce5);}return null;};}function patchUpdates(_0x33f95c){return function(_0xecb7de){try{jsonpatch['apply'](_0xecb7de,_0x33f95c,!![]);}catch(_0x9b0df){return BPromise[_0xff1f('0x2f')](_0x9b0df);}return _0xecb7de['save']();};}function saveUpdates(_0x220d89,_0x447044){return function(_0x50f70b){if(_0x50f70b){return _0x50f70b[_0xff1f('0x30')](_0x220d89)[_0xff1f('0x31')](function(_0x378466){return _0x378466;});}return null;};}function removeEntity(_0x2cf299,_0x58f3b3){return function(_0x193e12){if(_0x193e12){return _0x193e12[_0xff1f('0x32')]()['then'](function(){_0x2cf299[_0xff1f('0x27')](0xcc)[_0xff1f('0x28')]();});}};}function handleEntityNotFound(_0x138ec4,_0x4d0573){return function(_0x1cd049){if(!_0x1cd049){_0x138ec4[_0xff1f('0x26')](0x194);}return _0x1cd049;};}function handleError(_0x17e4ce,_0x2935f2){_0x2935f2=_0x2935f2||0x1f4;return function(_0x547555){logger[_0xff1f('0x20')](_0x547555['stack']);if(_0x547555[_0xff1f('0x33')]){delete _0x547555[_0xff1f('0x33')];}_0x17e4ce[_0xff1f('0x27')](_0x2935f2)[_0xff1f('0x34')](_0x547555);};}exports['index']=function(_0x18b45d,_0x398e7a){var _0x118a2d={},_0x5b0fc4={},_0x2ea8cc={'count':0x0,'rows':[]};var _0x1126cf=_['map'](db['SmsMessage'][_0xff1f('0x35')],function(_0x1029eb){return{'name':_0x1029eb[_0xff1f('0x36')],'type':_0x1029eb[_0xff1f('0x37')][_0xff1f('0x38')]};});_0x5b0fc4[_0xff1f('0x39')]=_[_0xff1f('0x3a')](_0x1126cf,_0xff1f('0x33'));_0x5b0fc4[_0xff1f('0x3b')]=_[_0xff1f('0x3c')](_0x18b45d[_0xff1f('0x3b')]);_0x5b0fc4[_0xff1f('0x3d')]=_[_0xff1f('0x3e')](_0x5b0fc4[_0xff1f('0x39')],_0x5b0fc4[_0xff1f('0x3b')]);_0x118a2d[_0xff1f('0x3f')]=_[_0xff1f('0x3e')](_0x5b0fc4['model'],qs[_0xff1f('0x40')](_0x18b45d[_0xff1f('0x3b')]['fields']));_0x118a2d['attributes']=_0x118a2d[_0xff1f('0x3f')][_0xff1f('0x41')]?_0x118a2d[_0xff1f('0x3f')]:_0x5b0fc4[_0xff1f('0x39')];if(!_0x18b45d[_0xff1f('0x3b')][_0xff1f('0x42')](_0xff1f('0x43'))){_0x118a2d[_0xff1f('0x2c')]=qs[_0xff1f('0x2c')](_0x18b45d['query'][_0xff1f('0x2c')]);_0x118a2d['offset']=qs[_0xff1f('0x2a')](_0x18b45d[_0xff1f('0x3b')][_0xff1f('0x2a')]);}_0x118a2d['order']=qs['sort'](_0x18b45d[_0xff1f('0x3b')]['sort']);_0x118a2d['where']=qs['filters'](_['pick'](_0x18b45d[_0xff1f('0x3b')],_0x5b0fc4[_0xff1f('0x3d')]),_0x1126cf);if(_0x18b45d[_0xff1f('0x3b')][_0xff1f('0x44')]){_0x118a2d[_0xff1f('0x45')]=_[_0xff1f('0x46')](_0x118a2d[_0xff1f('0x45')],{'$or':_[_0xff1f('0x3a')](_0x1126cf,function(_0x39b016){if(_0x39b016[_0xff1f('0x37')]!==_0xff1f('0x47')){var _0x48b677={};_0x48b677[_0x39b016[_0xff1f('0x33')]]={'$like':'%'+_0x18b45d['query']['filter']+'%'};return _0x48b677;}})});}_0x118a2d=_[_0xff1f('0x46')]({},_0x118a2d,_0x18b45d['options']);var _0x567d87={'where':_0x118a2d[_0xff1f('0x45')]};return db[_0xff1f('0x48')][_0xff1f('0x2d')](_0x567d87)['then'](function(_0x5d7f88){_0x2ea8cc[_0xff1f('0x2d')]=_0x5d7f88;if(_0x18b45d['query'][_0xff1f('0x49')]){_0x118a2d[_0xff1f('0x4a')]=[{'all':!![]}];}return db[_0xff1f('0x48')][_0xff1f('0x4b')](_0x118a2d);})['then'](function(_0x481a65){_0x2ea8cc[_0xff1f('0x4c')]=_0x481a65;return _0x2ea8cc;})['then'](respondWithFilteredResult(_0x398e7a,_0x118a2d))[_0xff1f('0x25')](handleError(_0x398e7a,null));};exports[_0xff1f('0x4d')]=function(_0x24941d,_0x422bbc){var _0x1fe553={'raw':!![],'where':{'id':_0x24941d[_0xff1f('0x4e')]['id']}},_0x10b383={};_0x10b383[_0xff1f('0x39')]=_[_0xff1f('0x3c')](db[_0xff1f('0x48')][_0xff1f('0x35')]);_0x10b383[_0xff1f('0x3b')]=_[_0xff1f('0x3c')](_0x24941d[_0xff1f('0x3b')]);_0x10b383[_0xff1f('0x3d')]=_[_0xff1f('0x3e')](_0x10b383[_0xff1f('0x39')],_0x10b383[_0xff1f('0x3b')]);_0x1fe553['attributes']=_[_0xff1f('0x3e')](_0x10b383[_0xff1f('0x39')],qs[_0xff1f('0x40')](_0x24941d['query'][_0xff1f('0x40')]));_0x1fe553['attributes']=_0x1fe553[_0xff1f('0x3f')][_0xff1f('0x41')]?_0x1fe553['attributes']:_0x10b383['model'];if(_0x24941d[_0xff1f('0x3b')][_0xff1f('0x49')]){_0x1fe553[_0xff1f('0x4a')]=[{'all':!![]}];}_0x1fe553=_[_0xff1f('0x46')]({},_0x1fe553,_0x24941d[_0xff1f('0x4f')]);return db[_0xff1f('0x48')][_0xff1f('0x50')](_0x1fe553)['then'](handleEntityNotFound(_0x422bbc,null))[_0xff1f('0x31')](respondWithResult(_0x422bbc,null))['catch'](handleError(_0x422bbc,null));};exports['create']=function(_0x3eebbc,_0x2f67a2){return db[_0xff1f('0x48')]['create'](_0x3eebbc[_0xff1f('0x51')],{})[_0xff1f('0x31')](respondWithResult(_0x2f67a2,0xc9))[_0xff1f('0x25')](handleError(_0x2f67a2,null));};exports[_0xff1f('0x30')]=function(_0x30b3b2,_0x2d35a6){if(_0x30b3b2[_0xff1f('0x51')]['id']){delete _0x30b3b2[_0xff1f('0x51')]['id'];}return db['SmsMessage'][_0xff1f('0x50')]({'where':{'id':_0x30b3b2[_0xff1f('0x4e')]['id']}})[_0xff1f('0x31')](handleEntityNotFound(_0x2d35a6,null))[_0xff1f('0x31')](saveUpdates(_0x30b3b2[_0xff1f('0x51')],null))['then'](respondWithResult(_0x2d35a6,null))[_0xff1f('0x25')](handleError(_0x2d35a6,null));};exports[_0xff1f('0x32')]=function(_0xece231,_0x4e0f4b){return db['SmsMessage'][_0xff1f('0x50')]({'where':{'id':_0xece231[_0xff1f('0x4e')]['id']}})[_0xff1f('0x31')](handleEntityNotFound(_0x4e0f4b,null))[_0xff1f('0x31')](removeEntity(_0x4e0f4b,null))[_0xff1f('0x25')](handleError(_0x4e0f4b,null));};exports[_0xff1f('0x52')]=function(_0x1ee4ba,_0x503877){return db[_0xff1f('0x48')][_0xff1f('0x52')]()[_0xff1f('0x31')](respondWithResult(_0x503877,null))[_0xff1f('0x25')](handleError(_0x503877,null));};var interaction_log=require('../../config/logger')(_0xff1f('0x53'));exports[_0xff1f('0x54')]=function(_0x58ce7d,_0x101ce9,_0x216f38){var _0x4d235c={'agent':{},'channel':_0xff1f('0x55')};if(_0x58ce7d[_0xff1f('0x51')]['id']){delete _0x58ce7d['body']['id'];}_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x56')]=!![];_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x57')]=moment()['format'](_0xff1f('0x58'));_0x58ce7d['body'][_0xff1f('0x59')]=_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x59')]||_0x58ce7d['user']['id'];_0x4d235c['agent']['id']=_0x58ce7d['body']['UserId'];return db[_0xff1f('0x48')][_0xff1f('0x50')]({'where':{'id':_0x58ce7d[_0xff1f('0x4e')]['id'],'UserId':null}})[_0xff1f('0x31')](handleEntityNotFound(_0x101ce9,null))[_0xff1f('0x31')](saveUpdates(_0x58ce7d['body'],null))[_0xff1f('0x31')](function(_0x11f9f8){if(_0x11f9f8){_0x4d235c[_0xff1f('0x22')]=_0x11f9f8[_0xff1f('0x5a')]({'plain':!![]});return db[_0xff1f('0x5b')][_0xff1f('0x50')]({'where':{'id':_0x11f9f8[_0xff1f('0x5c')]}});}return null;})[_0xff1f('0x31')](handleEntityNotFound(_0x101ce9,null))[_0xff1f('0x31')](function(_0x566173){if(_0x566173){return _0x566173['update']({'UserId':_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x59')],'read1stAt':_['isNil'](_0x566173[_0xff1f('0x5d')])?moment()['format'](_0xff1f('0x58')):undefined});}return null;})[_0xff1f('0x31')](function(_0x4f490a){if(_0x4f490a){_0x4d235c[_0xff1f('0x5e')]=_0x4f490a[_0xff1f('0x5a')]({'plain':!![]});interaction_log[_0xff1f('0x1b')]('[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x58ce7d['user']['id'],_0x58ce7d['user'][_0xff1f('0x33')],_0x58ce7d['user'][_0xff1f('0x5f')],_0x4d235c[_0xff1f('0x5e')]['id'],_0x58ce7d['body']?JSON[_0xff1f('0x1f')](_0x58ce7d[_0xff1f('0x51')]):_0xff1f('0x60'));return respondWithRpcPromise(_0xff1f('0x61'),'acceptMessage',_0x4d235c);}return null;})[_0xff1f('0x31')](function(_0x25111f){var _0x3907bc=_0xff1f('0x62')+_0x25111f[_0xff1f('0x22')][_0xff1f('0x63')];return db[_0xff1f('0x64')]['query'](_0x3907bc,{'type':db[_0xff1f('0x65')][_0xff1f('0x66')][_0xff1f('0x67')],'raw':!![]})['then'](function(_0x25a59c){return _0x25a59c;});})[_0xff1f('0x31')](function(_0x522ce6){if(_0x522ce6){_0x4d235c[_0xff1f('0x22')][_0xff1f('0x68')]=_0x522ce6[0x0];if(!_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x59')])return;return db[_0xff1f('0x69')]['find']({'where':{'id':_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x59')],'role':'agent'},'attributes':['id',_0xff1f('0x33'),_0xff1f('0x6a'),_0xff1f('0x6b'),_0xff1f('0x6c')],'raw':!![]});}return null;})[_0xff1f('0x31')](function(_0x3af2ad){if(!_0x3af2ad)return null;_0x4d235c[_0xff1f('0x22')][_0xff1f('0x6d')]=_0x3af2ad;return _0x4d235c;})[_0xff1f('0x31')](function(_0x4de7e0){if(_0x4de7e0){if(_0x58ce7d[_0xff1f('0x51')][_0xff1f('0x6e')]){_0x4d235c['message'][_0xff1f('0x6f')]=util['format'](_0xff1f('0x70'),_0x58ce7d['user']['name']);_0x4d235c[_0xff1f('0x22')]['channel']=_0x4d235c[_0xff1f('0x71')];_0x4d235c[_0xff1f('0x22')][_0xff1f('0x72')]=_0xff1f('0x54');return respondWithRpcPromise(_0xff1f('0x73'),_0xff1f('0x73'),{'event':_0xff1f('0x74'),'message':_0x4d235c['message']},client9002)[_0xff1f('0x31')](function(){return _0x4d235c;});}return _0x4d235c;}return null;})[_0xff1f('0x31')](respondWithResult(_0x101ce9,null))['catch'](handleError(_0x101ce9,null));};var interaction_log=require(_0xff1f('0x75'))(_0xff1f('0x53'));exports[_0xff1f('0x2f')]=function(_0x3c8198,_0x3a4987,_0x516b88){var _0x5e5df6={'agent':{},'channel':_0xff1f('0x55')};if(_0x3c8198[_0xff1f('0x51')]['id']){delete _0x3c8198[_0xff1f('0x51')]['id'];}_0x3c8198[_0xff1f('0x51')][_0xff1f('0x59')]=_0x3c8198['body'][_0xff1f('0x59')]||_0x3c8198['user']['id'];_0x5e5df6['agent']['id']=_0x3c8198['body'][_0xff1f('0x59')];return db['SmsMessage'][_0xff1f('0x50')]({'where':{'id':_0x3c8198[_0xff1f('0x4e')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3a4987,null))['then'](function(_0x3de8f3){if(_0x3de8f3){_0x5e5df6[_0xff1f('0x22')]=_0x3de8f3[_0xff1f('0x5a')]({'plain':!![]});return db[_0xff1f('0x5b')][_0xff1f('0x50')]({'where':{'id':_0x3de8f3[_0xff1f('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x3a4987,null))[_0xff1f('0x31')](function(_0x2dcccd){if(_0x2dcccd){_0x5e5df6[_0xff1f('0x5e')]=_0x2dcccd[_0xff1f('0x5a')]({'plain':!![]});interaction_log['info'](_0xff1f('0x76'),_0x3c8198[_0xff1f('0x77')]['id'],_0x3c8198[_0xff1f('0x77')][_0xff1f('0x33')],_0x3c8198[_0xff1f('0x77')]['role'],_0x5e5df6[_0xff1f('0x5e')]['id'],_0x3c8198['body']?JSON[_0xff1f('0x1f')](_0x3c8198[_0xff1f('0x51')]):'null');return respondWithRpcPromise(_0xff1f('0x78'),'rejectMessage',_0x5e5df6);}return null;})[_0xff1f('0x31')](function(_0x20f129){var _0x535c3f=_0xff1f('0x62')+_0x20f129[_0xff1f('0x22')][_0xff1f('0x63')];return db[_0xff1f('0x64')][_0xff1f('0x3b')](_0x535c3f,{'type':db[_0xff1f('0x65')][_0xff1f('0x66')][_0xff1f('0x67')],'raw':!![]})['then'](function(_0x55a346){return _0x55a346;});})['then'](function(_0x39c937){if(_0x39c937){_0x5e5df6[_0xff1f('0x22')]['contact']=_0x39c937[0x0];if(!_0x3c8198['body'][_0xff1f('0x59')])return;return db[_0xff1f('0x69')]['find']({'where':{'id':_0x3c8198[_0xff1f('0x51')]['UserId'],'role':_0xff1f('0x6d')},'attributes':['id','name',_0xff1f('0x6a'),_0xff1f('0x6b'),_0xff1f('0x6c')],'raw':!![]});}return null;})['then'](function(_0x5d6e1e){if(!_0x5d6e1e)return null;_0x5e5df6[_0xff1f('0x22')][_0xff1f('0x6d')]=_0x5d6e1e;return _0x5e5df6;})[_0xff1f('0x31')](function(_0x2e4845){if(_0x2e4845){_0x2e4845['message'][_0xff1f('0x6f')]=util['format'](_0xff1f('0x70'),_0x3c8198[_0xff1f('0x77')][_0xff1f('0x33')]);_0x2e4845[_0xff1f('0x22')]['channel']=_0x5e5df6['channel'];_0x2e4845['message'][_0xff1f('0x72')]='reject';respondWithRpcPromise(_0xff1f('0x73'),'EventManager',{'event':_0xff1f('0x79'),'message':_0x2e4845[_0xff1f('0x22')]},client9002);return _0x5e5df6;}return null;})['then'](respondWithResult(_0x3a4987,null))['catch'](handleError(_0x3a4987,null));};exports[_0xff1f('0x27')]=function(_0xf88507,_0x3b16ca,_0xd2742){if(_0xf88507[_0xff1f('0x51')]['id']){delete _0xf88507[_0xff1f('0x51')]['id'];}var _0x412459;return db[_0xff1f('0x48')][_0xff1f('0x50')]({'where':{'id':_0xf88507[_0xff1f('0x4e')]['id']}})[_0xff1f('0x31')](handleEntityNotFound(_0x3b16ca,null))[_0xff1f('0x31')](function(_0x33737a){if(_0x33737a){_0x412459=_0x33737a;return db[_0xff1f('0x7a')][_0xff1f('0x50')]({'where':{'id':_0x33737a[_0xff1f('0x7b')]}});}})[_0xff1f('0x31')](handleEntityNotFound(_0x3b16ca,null))[_0xff1f('0x31')](function(_0x56245a){if(_0x56245a){logger[_0xff1f('0x1c')](_0xff1f('0x1d'),_0xff1f('0x27'),'received\x20delivery\x20report\x20from',_0x56245a[_0xff1f('0x37')],util['inspect'](_0xf88507['body'],{'showHidden':![],'depth':null}));switch(_0x56245a[_0xff1f('0x37')]){case _0xff1f('0x7c'):if(_0xf88507[_0xff1f('0x51')][_0xff1f('0x7d')]&&_0xf88507[_0xff1f('0x51')][_0xff1f('0x7d')]===_0x412459[_0xff1f('0x7e')]){return _0x412459[_0xff1f('0x30')]({'read':!![]});}else{logger[_0xff1f('0x20')](_0xff1f('0x7f'),_0xff1f('0x27'),_0xff1f('0x7c'),util[_0xff1f('0x80')](_0xf88507['body'],{'showHidden':![],'depth':null}));}break;case _0xff1f('0x81'):if(_0xf88507[_0xff1f('0x51')][_0xff1f('0x82')]&&_0xf88507[_0xff1f('0x51')][_0xff1f('0x82')]===_0x412459[_0xff1f('0x7e')]&&_[_0xff1f('0x83')]([_0xff1f('0x84'),'delivered'],_0xf88507['body'][_0xff1f('0x85')])>=0x0){return _0x412459[_0xff1f('0x30')]({'read':!![]});}else{logger[_0xff1f('0x20')](_0xff1f('0x7f'),_0xff1f('0x27'),_0xff1f('0x86'),util['inspect'](_0xf88507['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x10c53b=_0xf88507[_0xff1f('0x51')][_0xff1f('0x87')][0x0];if(_0x10c53b[_0xff1f('0x27')][_0xff1f('0x88')]===_0xff1f('0x89')){return _0x412459[_0xff1f('0x30')]({'read':!![]});}else{logger['error'](_0xff1f('0x7f'),_0xff1f('0x27'),'infobip',util[_0xff1f('0x80')](_0xf88507['body'],{'showHidden':![],'depth':null}));}break;}return _0x412459;}})['then'](respondWithResult(_0x3b16ca,null))[_0xff1f('0x25')](handleError(_0x3b16ca,null));};
\ No newline at end of file
index b8e146e..8fe36bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12da=['remove','emit','exports','events','../../mysqldb','SmsMessage','save','update'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x12da,0xa3));var _0xa12d=function(_0x1db2a6,_0x3f45b7){_0x1db2a6=_0x1db2a6-0x0;var _0x31905a=_0x12da[_0x1db2a6];return _0x31905a;};'use strict';var EventEmitter=require(_0xa12d('0x0'));var SmsMessage=require(_0xa12d('0x1'))['db'][_0xa12d('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa12d('0x3'),'afterUpdate':_0xa12d('0x4'),'afterDestroy':_0xa12d('0x5')};function emitEvent(_0x37890a){return function(_0x3e9453,_0x278a80,_0x9ba26){SmsMessageEvents['emit'](_0x37890a+':'+_0x3e9453['id'],_0x3e9453);SmsMessageEvents[_0xa12d('0x6')](_0x37890a,_0x3e9453);_0x9ba26(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xa12d('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x8ab4=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','../../mysqldb','SmsMessage'];(function(_0x502c93,_0x327d72){var _0x441540=function(_0x44211a){while(--_0x44211a){_0x502c93['push'](_0x502c93['shift']());}};_0x441540(++_0x327d72);}(_0x8ab4,0xb2));var _0x48ab=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x8ab4[_0x45d3f0];return _0x314b79;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0x48ab('0x0'))['db'][_0x48ab('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x48ab('0x2')](0x0);var events={'afterCreate':_0x48ab('0x3'),'afterUpdate':_0x48ab('0x4'),'afterDestroy':_0x48ab('0x5')};function emitEvent(_0x421216){return function(_0x2acfe5,_0x38cf92,_0x21571b){SmsMessageEvents[_0x48ab('0x6')](_0x421216+':'+_0x2acfe5['id'],_0x2acfe5);SmsMessageEvents['emit'](_0x421216,_0x2acfe5);_0x21571b(null);};}for(var e in events){if(events[_0x48ab('0x7')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0x48ab('0x8')]=SmsMessageEvents;
\ No newline at end of file
index 67f6eca..de08a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['https://api.intelepeer.com/_rest/v4/app/sms/send','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','message','status','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','models','get','direction','toLowerCase','out','secret','isNil','SmsInteractionId','update','createdAt','catch','error','SmsAccount','then','type','twilio','accountSid','authToken','phone','create','body','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','Missing\x20parameters:\x20authToken','username','xCALLY\x20Motion','%s:%s','format','Basic\x20%s','toString','base64','http_code','data','head','messages','message_id','clickSend','plivo','authId','senderString','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','text','keys','sort','apiKey','createHash','md5','digest','hex','signature=','clickatell','https://platform.clickatell.com/messages','uuid','apiMessageId','Missing\x20parameters:\x20apiKey','bandwidth','/messages','intelepeer'];(function(_0x386525,_0xefae6){var _0x14d015=function(_0x4a45c1){while(--_0x4a45c1){_0x386525['push'](_0x386525['shift']());}};_0x14d015(++_0xefae6);}(_0xadb8,0x1d0));var _0x8adb=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0xadb8[_0x5678b5];return _0x4c09a5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8adb('0x0'))('api');var moment=require(_0x8adb('0x1'));var BPromise=require(_0x8adb('0x2'));var rp=require(_0x8adb('0x3'));var fs=require('fs');var path=require(_0x8adb('0x4'));var rimraf=require(_0x8adb('0x5'));var config=require(_0x8adb('0x6'));var attributes=require(_0x8adb('0x7'));module['exports']=function(_0x15bc63,_0x1a5f36){return _0x15bc63[_0x8adb('0x8')](_0x8adb('0x9'),attributes,{'tableName':_0x8adb('0xa'),'paranoid':![],'indexes':[{'name':_0x8adb('0xb'),'fields':[_0x8adb('0xb')]},{'name':'fti_sms_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4695c6,_0x5be2f4,_0x4d986d){var _0x52f6c3=_0x15bc63[_0x8adb('0xc')];var _0x628c45=_0x4695c6[_0x8adb('0xd')]({'plain':!![]});if(_0x628c45[_0x8adb('0xe')][_0x8adb('0xf')]()==='in'||_0x628c45[_0x8adb('0xe')][_0x8adb('0xf')]()===_0x8adb('0x10')&&!_0x628c45[_0x8adb('0x11')]&&!_[_0x8adb('0x12')](_0x628c45['UserId'])){_0x52f6c3['SmsInteraction']['findOne']({'where':{'id':_0x628c45[_0x8adb('0x13')]}})['then'](function(_0xe9280c){if(_0xe9280c){_0xe9280c[_0x8adb('0x14')]({'lastMsgAt':_0x628c45[_0x8adb('0x15')],'lastMsgDirection':_0x628c45['direction'][_0x8adb('0xf')]()});}})[_0x8adb('0x16')](function(_0x1096fb){console[_0x8adb('0x17')](_0x1096fb);});}if(_0x628c45[_0x8adb('0xe')]===_0x8adb('0x10')&&!_0x628c45['secret']){var _0xc01052;_0x52f6c3[_0x8adb('0x18')]['find']({'where':{'id':_0x628c45['SmsAccountId']},'raw':!![]})[_0x8adb('0x19')](function(_0x30ef5a){_0xc01052=_0x30ef5a;if(_0xc01052&&_0xc01052[_0x8adb('0x1a')]){switch(_0xc01052[_0x8adb('0x1a')]){case _0x8adb('0x1b'):var _0x3c1720=require(_0x8adb('0x1b'));if(_0xc01052[_0x8adb('0x1c')]&&_0xc01052[_0x8adb('0x1d')]&&_0xc01052[_0x8adb('0x1e')]){var _0x36c62a=new _0x3c1720(_0xc01052[_0x8adb('0x1c')],_0xc01052['authToken']);_0x36c62a['messages'][_0x8adb('0x1f')]({'body':_0x628c45[_0x8adb('0x20')],'to':_0x628c45['phone'],'from':_0xc01052[_0x8adb('0x1e')],'statusCallback':_0xc01052[_0x8adb('0x21')]+_0x8adb('0x22')+_0x628c45['id']+_0x8adb('0x23')+_0xc01052[_0x8adb('0x24')]})[_0x8adb('0x19')](function(_0x542156){if(_0x542156[_0x8adb('0x25')]){return _0x4695c6[_0x8adb('0x14')]({'messageId':_0x542156[_0x8adb('0x25')]});}})['catch'](function(_0x5c8c18){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x1b'),util[_0x8adb('0x28')](_0x5c8c18,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x1b'),_0x8adb('0x29'));}break;case _0x8adb('0x2a'):var _0x4aca77=_0x8adb('0x2b');if(_0xc01052['username']&&_0xc01052[_0x8adb('0x2c')]){var _0x3b6c55={'recipient':[_0x628c45[_0x8adb('0x1e')]],'message':_0x628c45[_0x8adb('0x20')],'message_type':_0xc01052['smsMethod']};if(_0xc01052[_0x8adb('0x2d')]&&_0xc01052['smsMethod']!=='SI'){_0x3b6c55[_0x8adb('0x2e')]=_0xc01052[_0x8adb('0x1e')];}var _0x47e337={'url':_0x4aca77+_0x8adb('0x2f')+_0xc01052['username']+_0x8adb('0x30')+_0xc01052['password'],'method':_0x8adb('0x31')};rp(_0x47e337)['then'](function(_0x1d4962){var _0x1661a3=_0x1d4962[_0x8adb('0x32')](';');var _0x1cb97c={'user_key':_0x1661a3[0x0],'session_key':_0x1661a3[0x1]};_0x47e337={'url':_0x4aca77+_0x8adb('0x33'),'method':_0x8adb('0x34'),'headers':{'user_key':_0x1cb97c['user_key'],'Session_key':_0x1cb97c['session_key']},'json':!![],'body':_0x3b6c55};return rp(_0x47e337);})[_0x8adb('0x19')](function(_0x46fc72){if(_0x46fc72[_0x8adb('0x35')]>=0x1){var _0x77e99f={'messageId':_0x46fc72[_0x8adb('0x36')]};if(_0xc01052[_0x8adb('0x2d')]!=='GP'||!_0xc01052[_0x8adb('0x37')]){_0x77e99f[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x77e99f);}else{return logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x2a'),util['inspect'](_0x46fc72,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x420ae0){return logger['error'](_0x8adb('0x26'),'afterCreate',_0x8adb('0x2a'),util[_0x8adb('0x28')](_0x420ae0,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'skebby',_0x8adb('0x39'));}break;case'connectel':if(_0xc01052[_0x8adb('0x1d')]){var _0x1fcbd4={'recipient':_0x628c45['phone'],'message':_0x628c45[_0x8adb('0x20')],'sender':_0xc01052['senderString']||_0xc01052[_0x8adb('0x1e')],'authorization':_0xc01052['authToken']};var _0x5be2f4={'method':_0x8adb('0x34'),'uri':_0x8adb('0x3a'),'body':_0x1fcbd4,'json':!![]};rp(_0x5be2f4)['then'](function(_0x54aab3){var _0x182c4b={'messageId':_0x54aab3[_0x8adb('0x3b')]};if(!_0xc01052['deliveryReport']){_0x182c4b[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x182c4b);})[_0x8adb('0x16')](function(_0x3872c9){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x3c'),util['inspect'](_0x3872c9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x3c'),_0x8adb('0x3d'));}break;case'clicksend':if(_0xc01052[_0x8adb('0x3e')]&&_0xc01052['password']){var _0x1fcbd4={'messages':[{'source':_0x8adb('0x3f'),'to':_0x628c45[_0x8adb('0x1e')],'body':_0x628c45[_0x8adb('0x20')],'from':_0xc01052['senderString']||_0xc01052['phone']}]};var _0x1ae4a2=util['format'](_0x8adb('0x40'),_0xc01052['username'],_0xc01052['password']);var _0x5be2f4={'method':_0x8adb('0x34'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x1fcbd4,'headers':{'Authorization':util[_0x8adb('0x41')](_0x8adb('0x42'),new Buffer(_0x1ae4a2)[_0x8adb('0x43')](_0x8adb('0x44')))},'json':!![]};rp(_0x5be2f4)[_0x8adb('0x19')](function(_0x54f741){if(_0x54f741[_0x8adb('0x45')]>=0xc8&&_0x54f741['http_code']<=0xce){if(_0x54f741[_0x8adb('0x46')]&&_0x54f741[_0x8adb('0x46')]['queued_count']>0x0){var _0x53953e=_[_0x8adb('0x47')](_0x54f741['data'][_0x8adb('0x48')]);var _0x1ade43={'messageId':_0x53953e[_0x8adb('0x49')]};if(!_0xc01052[_0x8adb('0x37')]){_0x1ade43['read']=!![];}return _0x4695c6[_0x8adb('0x14')](_0x1ade43);}else{logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8adb('0x4a'),util[_0x8adb('0x28')](_0x54f741,{'showHidden':![],'depth':null}));}}else{logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8adb('0x27'),_0x8adb('0x4a'),util[_0x8adb('0x28')](_0x54f741,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x2f6031){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x4a'),util[_0x8adb('0x28')](_0x2f6031,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate',_0x8adb('0x4a'),_0x8adb('0x39'));}break;case _0x8adb('0x4b'):if(_0xc01052[_0x8adb('0x4c')]&&_0xc01052[_0x8adb('0x1d')]){var _0x1fcbd4={'dst':_0x628c45[_0x8adb('0x1e')],'text':_0x628c45[_0x8adb('0x20')],'src':_0xc01052[_0x8adb('0x4d')]||_0xc01052[_0x8adb('0x1e')],'url':_0xc01052['remote']+_0x8adb('0x22')+_0x628c45['id']+_0x8adb('0x23')+_0xc01052[_0x8adb('0x24')]};var _0x1ae4a2=util[_0x8adb('0x41')](_0x8adb('0x40'),_0xc01052[_0x8adb('0x4c')],_0xc01052[_0x8adb('0x1d')]);var _0x5be2f4={'method':_0x8adb('0x34'),'uri':util[_0x8adb('0x41')](_0x8adb('0x4e'),_0xc01052[_0x8adb('0x4c')]),'body':_0x1fcbd4,'headers':{'Authorization':util['format'](_0x8adb('0x42'),new Buffer(_0x1ae4a2)[_0x8adb('0x43')](_0x8adb('0x44')))},'json':!![]};rp(_0x5be2f4)[_0x8adb('0x19')](function(_0x549a7a){var _0x415dc0={'messageId':_0x549a7a[_0x8adb('0x4f')][0x0]};return _0x4695c6[_0x8adb('0x14')](_0x415dc0);})[_0x8adb('0x16')](function(_0x3ede2b){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x4b'),util[_0x8adb('0x28')](_0x3ede2b,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate',_0x8adb('0x4b'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0xc01052[_0x8adb('0x3e')]&&_0xc01052[_0x8adb('0x2c')]){if(_0xc01052['baseUrl']){var _0x272899={'method':_0x8adb('0x34'),'uri':_0xc01052[_0x8adb('0x50')]+_0x8adb('0x51'),'body':{'username':_0xc01052['username'],'password':_0xc01052[_0x8adb('0x2c')]},'json':!![]};return rp(_0x272899)['then'](function(_0x26d693){var _0x43b78a={'method':_0x8adb('0x34'),'uri':_0xc01052['baseUrl']+_0x8adb('0x52'),'body':{'messages':[{'from':_0xc01052['phone'],'destinations':[{'to':_0x628c45[_0x8adb('0x1e')]}],'text':_0x628c45[_0x8adb('0x20')],'notifyUrl':_0xc01052[_0x8adb('0x21')]+'/api/sms/messages/'+_0x628c45['id']+_0x8adb('0x23')+_0xc01052[_0x8adb('0x24')],'notifyContentType':_0x8adb('0x53'),'callbackData':_0xc01052[_0x8adb('0x1e')]+';'+_0x628c45['body']}]},'headers':{'Authorization':_0x8adb('0x54')+_0x26d693[_0x8adb('0x24')]},'json':!![]};return rp(_0x43b78a)['then'](function(_0x1f1961){if(_0x1f1961[_0x8adb('0x48')]){var _0x43730e={'messageId':_0x1f1961['messages'][0x0][_0x8adb('0xb')]};if(!_0xc01052[_0x8adb('0x37')]){_0x43730e[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x43730e);}else{return logger['error'](_0x8adb('0x26'),'afterCreate','infobip',util['inspect'](_0x1f1961,{'showHidden':![],'depth':null}));}});})[_0x8adb('0x16')](function(_0x3ea3b9){return logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8adb('0x27'),'infobip',util[_0x8adb('0x28')](_0x3ea3b9,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x55'),_0x8adb('0x56'));}}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'infobip',_0x8adb('0x39'));}break;case _0x8adb('0x57'):var _0x4659ee=require(_0x8adb('0x58'));if(_0xc01052['apiKey']){var _0x30d2a7={};_0x30d2a7['login']=_0xc01052[_0x8adb('0x3e')];_0x30d2a7[_0x8adb('0x1e')]=_0x628c45[_0x8adb('0x1e')];_0x30d2a7[_0x8adb('0x2e')]=_0xc01052['phone'];_0x30d2a7[_0x8adb('0x59')]=_0x628c45[_0x8adb('0x20')];_0x30d2a7['timestamp']=+new Date();var _0x4f47fb='';var _0x504ab2='';var _0x366b92=Object[_0x8adb('0x5a')](_0x30d2a7);_0x366b92[_0x8adb('0x5b')]();for(var _0x551dd9=0x0;_0x551dd9<_0x366b92['length'];_0x551dd9++){if(_0x4f47fb!=''){_0x4f47fb+='&';}_0x4f47fb+=_0x366b92[_0x551dd9]+'='+encodeURIComponent(_0x30d2a7[_0x366b92[_0x551dd9]]);_0x504ab2+=_0x30d2a7[_0x366b92[_0x551dd9]];}_0x504ab2+=_0xc01052[_0x8adb('0x5c')];_0x504ab2=_0x4659ee[_0x8adb('0x5d')](_0x8adb('0x5e'))['update'](_0x504ab2)[_0x8adb('0x5f')](_0x8adb('0x60'));if(_0x4f47fb!==''){_0x4f47fb+='&';}_0x4f47fb+=_0x8adb('0x61')+_0x504ab2;var _0x47e337={'method':_0x8adb('0x31'),'uri':_0xc01052[_0x8adb('0x50')]+'/external/get/send.php?'+_0x4f47fb,'json':!![]};return rp(_0x47e337)[_0x8adb('0x19')](function(_0x53078f){var _0x5d17d4=Object[_0x8adb('0x5a')](_0x53078f);if(_0x53078f[_0x5d17d4[0x0]][_0x8adb('0x17')]&&parseInt(_0x53078f[_0x5d17d4[0x0]][_0x8adb('0x17')])===0x0){var _0x572cdc={'messageId':_0x53078f[_0x5d17d4[0x0]]['id_sms']};if(!_0xc01052[_0x8adb('0x37')]){_0x572cdc[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x572cdc);}else{return logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate',_0x8adb('0x57'),util['inspect'](_0x53078f['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x3e1149){return logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x57'),util['inspect'](_0x3e1149,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'csc','Missing\x20parameters:\x20apiKey');}break;case _0x8adb('0x62'):if(_0xc01052[_0x8adb('0x5c')]){var _0x1e623e={'method':_0x8adb('0x34'),'uri':_0x8adb('0x63'),'headers':{'Authorization':_0xc01052['apiKey']},'body':{'content':_0x628c45[_0x8adb('0x20')],'to':[_0x628c45[_0x8adb('0x1e')]],'from':_0xc01052[_0x8adb('0x1e')],'binary':![],'clientMessageId':_0x8adb('0x64'),'charset':'UTF-8'},'json':!![]};rp(_0x1e623e)[_0x8adb('0x19')](function(_0x3b897d){if(!_0x3b897d[_0x8adb('0x17')]){var _0x3353ae={'messageId':_0x3b897d[_0x8adb('0x48')][0x0][_0x8adb('0x65')]};if(!_0xc01052['deliveryReport']){_0x3353ae[_0x8adb('0x38')]=!![];}return _0x4695c6[_0x8adb('0x14')](_0x3353ae);}else{return logger['error'](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x62'),util[_0x8adb('0x28')](_0x3b897d[_0x8adb('0x17')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x15e8b){return logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x62'),util['inspect'](_0x15e8b,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'clickatell',_0x8adb('0x66'));}break;case _0x8adb('0x67'):if(_0xc01052[_0x8adb('0x3e')]&&_0xc01052['password']){var _0x1ae4a2=util[_0x8adb('0x41')](_0x8adb('0x40'),_0xc01052[_0x8adb('0x3e')],_0xc01052[_0x8adb('0x2c')]);var _0x5be2f4={'method':_0x8adb('0x34'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0xc01052['accountId']+_0x8adb('0x68'),'body':{'to':[_0x628c45[_0x8adb('0x1e')]],'text':_0x628c45[_0x8adb('0x20')],'from':_0xc01052[_0x8adb('0x1e')],'applicationId':_0xc01052['applicationId']},'headers':{'Authorization':util[_0x8adb('0x41')](_0x8adb('0x42'),new Buffer(_0x1ae4a2)[_0x8adb('0x43')](_0x8adb('0x44')))},'json':!![]};rp(_0x5be2f4)[_0x8adb('0x19')](function(_0x37bd3c){if(_0x37bd3c['id']){var _0x12089f={'messageId':_0x37bd3c['id']};return _0x4695c6[_0x8adb('0x14')](_0x12089f);}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'bandwidth',util[_0x8adb('0x28')](_0x37bd3c,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x323d88){logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'bandwidth',util['inspect'](_0x323d88,{'showHidden':![],'depth':null}));});}else{logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),_0x8adb('0x67'),_0x8adb('0x39'));}break;case _0x8adb('0x69'):if(_0xc01052[_0x8adb('0x5c')]){var _0x449dc5={};var _0x47e337={'method':'POST','uri':_0x8adb('0x6a'),'headers':{'Authorization':'Bearer\x20'+_0xc01052['apiKey'],'Content-Type':'application/json'},'body':{'from':_0xc01052[_0x8adb('0x1e')],'to':_0x628c45['phone'],'text':_0x628c45[_0x8adb('0x20')]},'json':!![]};return rp(_0x47e337)[_0x8adb('0x19')](function(_0x4bc2b4){if(_0x4bc2b4['code']==0xca){_0x449dc5['message']=_0x4bc2b4;var _0x59d565={'method':_0x8adb('0x34'),'uri':_0x8adb('0x6b'),'headers':{'Authorization':_0x8adb('0x6c')+_0xc01052[_0x8adb('0x5c')],'Content-Type':_0x8adb('0x53')},'body':{'refid':_0x449dc5[_0x8adb('0x6d')]['refid']},'json':!![]};return rp(_0x59d565)[_0x8adb('0x19')](function(_0x266009){_0x449dc5[_0x8adb('0x6e')]=_0x266009;var _0x176cef={'messageId':_0x449dc5[_0x8adb('0x6d')]['refid'],'read':!![]};return _0x4695c6['update'](_0x176cef);});}else{return logger[_0x8adb('0x17')](_0x8adb('0x26'),'afterCreate','intelepeer',util[_0x8adb('0x28')](_0x4bc2b4,{'showHidden':![],'depth':null}));}})[_0x8adb('0x16')](function(_0x3413d7){return logger[_0x8adb('0x17')](_0x8adb('0x26'),_0x8adb('0x27'),'intelepeer',util[_0x8adb('0x28')](_0x3413d7,{'showHidden':![],'depth':null}));});}else{return logger[_0x8adb('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8adb('0x27'),_0x8adb('0x69'),'Token\x20not\x20received');}break;}}})[_0x8adb('0x6f')](function(){_0x4d986d();});}else{_0x4d986d();}}},'charset':_0x8adb('0x70'),'collate':_0x8adb('0x71')});};
\ No newline at end of file
+var _0x2f38=['baseUrl','/sms/2/text/advanced','token','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','crypto','apiKey','login','text','timestamp','sort','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','keys','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','Bearer\x20','refid','Token\x20not\x20received','finally','utf8mb4_unicode_ci','util','api','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','direction','toLowerCase','out','UserId','SmsInteraction','SmsInteractionId','then','update','createdAt','catch','error','secret','find','SmsAccountId','type','twilio','accountSid','authToken','messages','create','phone','/api/sms/messages/','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','read','Missing\x20parameters:\x20authToken','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','remote','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip'];(function(_0xc85fbd,_0x21d671){var _0x64f2d9=function(_0x4eb22d){while(--_0x4eb22d){_0xc85fbd['push'](_0xc85fbd['shift']());}};_0x64f2d9(++_0x21d671);}(_0x2f38,0x1a7));var _0x82f3=function(_0x369a75,_0x4f0abd){_0x369a75=_0x369a75-0x0;var _0x45bef2=_0x2f38[_0x369a75];return _0x45bef2;};'use strict';var _=require('lodash');var util=require(_0x82f3('0x0'));var logger=require('../../config/logger')(_0x82f3('0x1'));var moment=require(_0x82f3('0x2'));var BPromise=require(_0x82f3('0x3'));var rp=require(_0x82f3('0x4'));var fs=require('fs');var path=require(_0x82f3('0x5'));var rimraf=require(_0x82f3('0x6'));var config=require('../../config/environment');var attributes=require(_0x82f3('0x7'));module['exports']=function(_0x5e4ca6,_0x3a7717){return _0x5e4ca6[_0x82f3('0x8')](_0x82f3('0x9'),attributes,{'tableName':_0x82f3('0xa'),'paranoid':![],'indexes':[{'name':_0x82f3('0xb'),'fields':[_0x82f3('0xb')]},{'name':_0x82f3('0xc'),'fields':[_0x82f3('0xd')],'type':_0x82f3('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1e31df,_0x2d92aa,_0x181366){var _0x6e0886=_0x5e4ca6['models'];var _0x43f58a=_0x1e31df[_0x82f3('0xf')]({'plain':!![]});if(_0x43f58a[_0x82f3('0x10')][_0x82f3('0x11')]()==='in'||_0x43f58a[_0x82f3('0x10')][_0x82f3('0x11')]()===_0x82f3('0x12')&&!_0x43f58a['secret']&&!_['isNil'](_0x43f58a[_0x82f3('0x13')])){_0x6e0886[_0x82f3('0x14')]['findOne']({'where':{'id':_0x43f58a[_0x82f3('0x15')]}})[_0x82f3('0x16')](function(_0x3d34b2){if(_0x3d34b2){_0x3d34b2[_0x82f3('0x17')]({'lastMsgAt':_0x43f58a[_0x82f3('0x18')],'lastMsgDirection':_0x43f58a[_0x82f3('0x10')]['toLowerCase']()});}})[_0x82f3('0x19')](function(_0x2cafd6){console[_0x82f3('0x1a')](_0x2cafd6);});}if(_0x43f58a[_0x82f3('0x10')]===_0x82f3('0x12')&&!_0x43f58a[_0x82f3('0x1b')]){var _0x4ad7c3;_0x6e0886['SmsAccount'][_0x82f3('0x1c')]({'where':{'id':_0x43f58a[_0x82f3('0x1d')]},'raw':!![]})[_0x82f3('0x16')](function(_0x404019){_0x4ad7c3=_0x404019;if(_0x4ad7c3&&_0x4ad7c3[_0x82f3('0x1e')]){switch(_0x4ad7c3[_0x82f3('0x1e')]){case'twilio':var _0x5e0eb7=require(_0x82f3('0x1f'));if(_0x4ad7c3[_0x82f3('0x20')]&&_0x4ad7c3['authToken']&&_0x4ad7c3['phone']){var _0xe0c596=new _0x5e0eb7(_0x4ad7c3[_0x82f3('0x20')],_0x4ad7c3[_0x82f3('0x21')]);_0xe0c596[_0x82f3('0x22')][_0x82f3('0x23')]({'body':_0x43f58a[_0x82f3('0xd')],'to':_0x43f58a[_0x82f3('0x24')],'from':_0x4ad7c3[_0x82f3('0x24')],'statusCallback':_0x4ad7c3['remote']+_0x82f3('0x25')+_0x43f58a['id']+_0x82f3('0x26')+_0x4ad7c3['token']})['then'](function(_0x2144a7){if(_0x2144a7['sid']){return _0x1e31df[_0x82f3('0x17')]({'messageId':_0x2144a7[_0x82f3('0x27')]});}})[_0x82f3('0x19')](function(_0x4d861b){logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x1f'),util[_0x82f3('0x2a')](_0x4d861b,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x82f3('0x2b'):var _0x411ccc=_0x82f3('0x2c');if(_0x4ad7c3[_0x82f3('0x2d')]&&_0x4ad7c3[_0x82f3('0x2e')]){var _0x11141f={'recipient':[_0x43f58a[_0x82f3('0x24')]],'message':_0x43f58a[_0x82f3('0xd')],'message_type':_0x4ad7c3[_0x82f3('0x2f')]};if(_0x4ad7c3[_0x82f3('0x2f')]&&_0x4ad7c3[_0x82f3('0x2f')]!=='SI'){_0x11141f[_0x82f3('0x30')]=_0x4ad7c3[_0x82f3('0x24')];}var _0x26ab5a={'url':_0x411ccc+_0x82f3('0x31')+_0x4ad7c3[_0x82f3('0x2d')]+_0x82f3('0x32')+_0x4ad7c3[_0x82f3('0x2e')],'method':_0x82f3('0x33')};rp(_0x26ab5a)['then'](function(_0x29a715){var _0x4b7ac9=_0x29a715[_0x82f3('0x34')](';');var _0x33e188={'user_key':_0x4b7ac9[0x0],'session_key':_0x4b7ac9[0x1]};_0x26ab5a={'url':_0x411ccc+_0x82f3('0x35'),'method':_0x82f3('0x36'),'headers':{'user_key':_0x33e188[_0x82f3('0x37')],'Session_key':_0x33e188['session_key']},'json':!![],'body':_0x11141f};return rp(_0x26ab5a);})[_0x82f3('0x16')](function(_0x3e082a){if(_0x3e082a[_0x82f3('0x38')]>=0x1){var _0xe7046f={'messageId':_0x3e082a[_0x82f3('0x39')]};if(_0x4ad7c3['smsMethod']!=='GP'||!_0x4ad7c3[_0x82f3('0x3a')]){_0xe7046f['read']=!![];}return _0x1e31df[_0x82f3('0x17')](_0xe7046f);}else{return logger['error'](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x2b'),util['inspect'](_0x3e082a,{'showHidden':![],'depth':null}));}})['catch'](function(_0x517862){return logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x2b'),util[_0x82f3('0x2a')](_0x517862,{'showHidden':![],'depth':null}));});}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),'skebby',_0x82f3('0x3b'));}break;case _0x82f3('0x3c'):if(_0x4ad7c3[_0x82f3('0x21')]){var _0x4bd7bf={'recipient':_0x43f58a[_0x82f3('0x24')],'message':_0x43f58a[_0x82f3('0xd')],'sender':_0x4ad7c3[_0x82f3('0x3d')]||_0x4ad7c3[_0x82f3('0x24')],'authorization':_0x4ad7c3['authToken']};var _0x2d92aa={'method':_0x82f3('0x36'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x4bd7bf,'json':!![]};rp(_0x2d92aa)[_0x82f3('0x16')](function(_0x4f36c5){var _0x1035f8={'messageId':_0x4f36c5[_0x82f3('0x3e')]};if(!_0x4ad7c3[_0x82f3('0x3a')]){_0x1035f8[_0x82f3('0x3f')]=!![];}return _0x1e31df[_0x82f3('0x17')](_0x1035f8);})[_0x82f3('0x19')](function(_0x19ac5b){logger[_0x82f3('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),'connectel',util['inspect'](_0x19ac5b,{'showHidden':![],'depth':null}));});}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),'connectel',_0x82f3('0x40'));}break;case _0x82f3('0x41'):if(_0x4ad7c3[_0x82f3('0x2d')]&&_0x4ad7c3[_0x82f3('0x2e')]){var _0x4bd7bf={'messages':[{'source':'xCALLY\x20Motion','to':_0x43f58a[_0x82f3('0x24')],'body':_0x43f58a[_0x82f3('0xd')],'from':_0x4ad7c3[_0x82f3('0x3d')]||_0x4ad7c3[_0x82f3('0x24')]}]};var _0x1b3a86=util[_0x82f3('0x42')](_0x82f3('0x43'),_0x4ad7c3[_0x82f3('0x2d')],_0x4ad7c3[_0x82f3('0x2e')]);var _0x2d92aa={'method':_0x82f3('0x36'),'uri':_0x82f3('0x44'),'body':_0x4bd7bf,'headers':{'Authorization':util[_0x82f3('0x42')]('Basic\x20%s',new Buffer(_0x1b3a86)[_0x82f3('0x45')](_0x82f3('0x46')))},'json':!![]};rp(_0x2d92aa)[_0x82f3('0x16')](function(_0x26e280){if(_0x26e280['http_code']>=0xc8&&_0x26e280[_0x82f3('0x47')]<=0xce){if(_0x26e280[_0x82f3('0x48')]&&_0x26e280['data'][_0x82f3('0x49')]>0x0){var _0x507c9d=_[_0x82f3('0x4a')](_0x26e280[_0x82f3('0x48')][_0x82f3('0x22')]);var _0x2589bb={'messageId':_0x507c9d[_0x82f3('0x4b')]};if(!_0x4ad7c3[_0x82f3('0x3a')]){_0x2589bb[_0x82f3('0x3f')]=!![];}return _0x1e31df[_0x82f3('0x17')](_0x2589bb);}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x4c'),util[_0x82f3('0x2a')](_0x26e280,{'showHidden':![],'depth':null}));}}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),'clickSend',util['inspect'](_0x26e280,{'showHidden':![],'depth':null}));}})['catch'](function(_0x4dae22){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x82f3('0x4c'),util[_0x82f3('0x2a')](_0x4dae22,{'showHidden':![],'depth':null}));});}else{logger[_0x82f3('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),_0x82f3('0x4c'),_0x82f3('0x3b'));}break;case _0x82f3('0x4d'):if(_0x4ad7c3[_0x82f3('0x4e')]&&_0x4ad7c3[_0x82f3('0x21')]){var _0x4bd7bf={'dst':_0x43f58a[_0x82f3('0x24')],'text':_0x43f58a[_0x82f3('0xd')],'src':_0x4ad7c3[_0x82f3('0x3d')]||_0x4ad7c3['phone'],'url':_0x4ad7c3[_0x82f3('0x4f')]+_0x82f3('0x25')+_0x43f58a['id']+_0x82f3('0x26')+_0x4ad7c3['token']};var _0x1b3a86=util[_0x82f3('0x42')](_0x82f3('0x43'),_0x4ad7c3[_0x82f3('0x4e')],_0x4ad7c3[_0x82f3('0x21')]);var _0x2d92aa={'method':_0x82f3('0x36'),'uri':util[_0x82f3('0x42')](_0x82f3('0x50'),_0x4ad7c3[_0x82f3('0x4e')]),'body':_0x4bd7bf,'headers':{'Authorization':util[_0x82f3('0x42')](_0x82f3('0x51'),new Buffer(_0x1b3a86)[_0x82f3('0x45')](_0x82f3('0x46')))},'json':!![]};rp(_0x2d92aa)[_0x82f3('0x16')](function(_0x5df2e1){var _0x2549ad={'messageId':_0x5df2e1[_0x82f3('0x52')][0x0]};return _0x1e31df[_0x82f3('0x17')](_0x2549ad);})[_0x82f3('0x19')](function(_0x51212c){logger['error'](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x4d'),util['inspect'](_0x51212c,{'showHidden':![],'depth':null}));});}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),'plivo',_0x82f3('0x53'));}break;case _0x82f3('0x54'):if(_0x4ad7c3['username']&&_0x4ad7c3[_0x82f3('0x2e')]){if(_0x4ad7c3[_0x82f3('0x55')]){var _0x320168={'method':_0x82f3('0x36'),'uri':_0x4ad7c3[_0x82f3('0x55')]+'/auth/1/session','body':{'username':_0x4ad7c3[_0x82f3('0x2d')],'password':_0x4ad7c3[_0x82f3('0x2e')]},'json':!![]};return rp(_0x320168)[_0x82f3('0x16')](function(_0x5667c9){var _0x1fd414={'method':'POST','uri':_0x4ad7c3[_0x82f3('0x55')]+_0x82f3('0x56'),'body':{'messages':[{'from':_0x4ad7c3['phone'],'destinations':[{'to':_0x43f58a['phone']}],'text':_0x43f58a[_0x82f3('0xd')],'notifyUrl':_0x4ad7c3[_0x82f3('0x4f')]+_0x82f3('0x25')+_0x43f58a['id']+_0x82f3('0x26')+_0x4ad7c3[_0x82f3('0x57')],'notifyContentType':_0x82f3('0x58'),'callbackData':_0x4ad7c3[_0x82f3('0x24')]+';'+_0x43f58a[_0x82f3('0xd')]}]},'headers':{'Authorization':_0x82f3('0x59')+_0x5667c9[_0x82f3('0x57')]},'json':!![]};return rp(_0x1fd414)[_0x82f3('0x16')](function(_0x563f36){if(_0x563f36[_0x82f3('0x22')]){var _0x2af692={'messageId':_0x563f36[_0x82f3('0x22')][0x0]['messageId']};if(!_0x4ad7c3['deliveryReport']){_0x2af692[_0x82f3('0x3f')]=!![];}return _0x1e31df[_0x82f3('0x17')](_0x2af692);}else{return logger[_0x82f3('0x1a')](_0x82f3('0x28'),'afterCreate',_0x82f3('0x54'),util[_0x82f3('0x2a')](_0x563f36,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x241f9b){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),_0x82f3('0x54'),util['inspect'](_0x241f9b,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),_0x82f3('0x54'),_0x82f3('0x5a'));}}else{logger[_0x82f3('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),_0x82f3('0x54'),_0x82f3('0x3b'));}break;case'csc':var _0x15a956=require(_0x82f3('0x5b'));if(_0x4ad7c3[_0x82f3('0x5c')]){var _0x165143={};_0x165143[_0x82f3('0x5d')]=_0x4ad7c3[_0x82f3('0x2d')];_0x165143[_0x82f3('0x24')]=_0x43f58a[_0x82f3('0x24')];_0x165143['sender']=_0x4ad7c3[_0x82f3('0x24')];_0x165143[_0x82f3('0x5e')]=_0x43f58a[_0x82f3('0xd')];_0x165143[_0x82f3('0x5f')]=+new Date();var _0x24c248='';var _0x34490b='';var _0x423a72=Object['keys'](_0x165143);_0x423a72[_0x82f3('0x60')]();for(var _0x1c4f38=0x0;_0x1c4f38<_0x423a72[_0x82f3('0x61')];_0x1c4f38++){if(_0x24c248!=''){_0x24c248+='&';}_0x24c248+=_0x423a72[_0x1c4f38]+'='+encodeURIComponent(_0x165143[_0x423a72[_0x1c4f38]]);_0x34490b+=_0x165143[_0x423a72[_0x1c4f38]];}_0x34490b+=_0x4ad7c3['apiKey'];_0x34490b=_0x15a956[_0x82f3('0x62')](_0x82f3('0x63'))[_0x82f3('0x17')](_0x34490b)[_0x82f3('0x64')](_0x82f3('0x65'));if(_0x24c248!==''){_0x24c248+='&';}_0x24c248+=_0x82f3('0x66')+_0x34490b;var _0x26ab5a={'method':_0x82f3('0x33'),'uri':_0x4ad7c3['baseUrl']+_0x82f3('0x67')+_0x24c248,'json':!![]};return rp(_0x26ab5a)[_0x82f3('0x16')](function(_0x33bbfe){var _0x5ea46a=Object[_0x82f3('0x68')](_0x33bbfe);if(_0x33bbfe[_0x5ea46a[0x0]][_0x82f3('0x1a')]&&parseInt(_0x33bbfe[_0x5ea46a[0x0]][_0x82f3('0x1a')])===0x0){var _0x3e0bad={'messageId':_0x33bbfe[_0x5ea46a[0x0]][_0x82f3('0x69')]};if(!_0x4ad7c3[_0x82f3('0x3a')]){_0x3e0bad[_0x82f3('0x3f')]=!![];}return _0x1e31df[_0x82f3('0x17')](_0x3e0bad);}else{return logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x6a'),util[_0x82f3('0x2a')](_0x33bbfe[_0x82f3('0x1a')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x500f09){return logger[_0x82f3('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),_0x82f3('0x6a'),util[_0x82f3('0x2a')](_0x500f09,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x6a'),_0x82f3('0x6b'));}break;case _0x82f3('0x6c'):if(_0x4ad7c3[_0x82f3('0x5c')]){var _0x180387={'method':_0x82f3('0x36'),'uri':_0x82f3('0x6d'),'headers':{'Authorization':_0x4ad7c3[_0x82f3('0x5c')]},'body':{'content':_0x43f58a[_0x82f3('0xd')],'to':[_0x43f58a[_0x82f3('0x24')]],'from':_0x4ad7c3[_0x82f3('0x24')],'binary':![],'clientMessageId':_0x82f3('0x6e'),'charset':_0x82f3('0x6f')},'json':!![]};rp(_0x180387)['then'](function(_0x2c556a){if(!_0x2c556a[_0x82f3('0x1a')]){var _0x2288e0={'messageId':_0x2c556a[_0x82f3('0x22')][0x0][_0x82f3('0x70')]};if(!_0x4ad7c3[_0x82f3('0x3a')]){_0x2288e0[_0x82f3('0x3f')]=!![];}return _0x1e31df[_0x82f3('0x17')](_0x2288e0);}else{return logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x6c'),util[_0x82f3('0x2a')](_0x2c556a['error'],{'showHidden':![],'depth':null}));}})[_0x82f3('0x19')](function(_0x494183){return logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),'clickatell',util[_0x82f3('0x2a')](_0x494183,{'showHidden':![],'depth':null}));});}else{logger[_0x82f3('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x82f3('0x6c'),_0x82f3('0x6b'));}break;case _0x82f3('0x71'):if(_0x4ad7c3['username']&&_0x4ad7c3[_0x82f3('0x2e')]){var _0x1b3a86=util[_0x82f3('0x42')](_0x82f3('0x43'),_0x4ad7c3[_0x82f3('0x2d')],_0x4ad7c3['password']);var _0x2d92aa={'method':'POST','uri':_0x82f3('0x72')+_0x4ad7c3[_0x82f3('0x73')]+_0x82f3('0x74'),'body':{'to':[_0x43f58a[_0x82f3('0x24')]],'text':_0x43f58a[_0x82f3('0xd')],'from':_0x4ad7c3['phone'],'applicationId':_0x4ad7c3[_0x82f3('0x75')]},'headers':{'Authorization':util[_0x82f3('0x42')](_0x82f3('0x51'),new Buffer(_0x1b3a86)[_0x82f3('0x45')]('base64'))},'json':!![]};rp(_0x2d92aa)[_0x82f3('0x16')](function(_0x1eaf78){if(_0x1eaf78['id']){var _0x2bee86={'messageId':_0x1eaf78['id']};return _0x1e31df[_0x82f3('0x17')](_0x2bee86);}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),'afterCreate','bandwidth',util[_0x82f3('0x2a')](_0x1eaf78,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5bea0a){logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x71'),util[_0x82f3('0x2a')](_0x5bea0a,{'showHidden':![],'depth':null}));});}else{logger[_0x82f3('0x1a')](_0x82f3('0x28'),'afterCreate',_0x82f3('0x71'),_0x82f3('0x3b'));}break;case _0x82f3('0x76'):if(_0x4ad7c3[_0x82f3('0x5c')]){var _0x181c70={};var _0x26ab5a={'method':_0x82f3('0x36'),'uri':_0x82f3('0x77'),'headers':{'Authorization':'Bearer\x20'+_0x4ad7c3[_0x82f3('0x5c')],'Content-Type':_0x82f3('0x58')},'body':{'from':_0x4ad7c3[_0x82f3('0x24')],'to':_0x43f58a[_0x82f3('0x24')],'text':_0x43f58a[_0x82f3('0xd')]},'json':!![]};return rp(_0x26ab5a)['then'](function(_0x2dbae2){if(_0x2dbae2[_0x82f3('0x78')]==0xca){_0x181c70[_0x82f3('0x79')]=_0x2dbae2;var _0x1302e2={'method':_0x82f3('0x36'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x82f3('0x7a')+_0x4ad7c3['apiKey'],'Content-Type':'application/json'},'body':{'refid':_0x181c70['message'][_0x82f3('0x7b')]},'json':!![]};return rp(_0x1302e2)[_0x82f3('0x16')](function(_0x8e388e){_0x181c70['status']=_0x8e388e;var _0x350f8d={'messageId':_0x181c70[_0x82f3('0x79')]['refid'],'read':!![]};return _0x1e31df['update'](_0x350f8d);});}else{return logger[_0x82f3('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x82f3('0x29'),_0x82f3('0x76'),util[_0x82f3('0x2a')](_0x2dbae2,{'showHidden':![],'depth':null}));}})[_0x82f3('0x19')](function(_0x3eac68){return logger['error'](_0x82f3('0x28'),_0x82f3('0x29'),_0x82f3('0x76'),util['inspect'](_0x3eac68,{'showHidden':![],'depth':null}));});}else{return logger[_0x82f3('0x1a')](_0x82f3('0x28'),_0x82f3('0x29'),'intelepeer',_0x82f3('0x7c'));}break;}}})[_0x82f3('0x7d')](function(){_0x181366();});}else{_0x181366();}}},'charset':'utf8mb4','collate':_0x82f3('0x7e')});};
\ No newline at end of file
index acb796c..9c66ea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55b6=['code','message','catch','SmsMessage','create','body','options','raw','debug','CreateSmsMessage','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','request','info','SmsMessage,\x20%s,\x20%s','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1dc24d,_0x541fa4){var _0x5d7fb2=function(_0x7ccd26){while(--_0x7ccd26){_0x1dc24d['push'](_0x1dc24d['shift']());}};_0x5d7fb2(++_0x541fa4);}(_0x55b6,0xaf));var _0x655b=function(_0x7757c7,_0x45b088){_0x7757c7=_0x7757c7-0x0;var _0x1e8f05=_0x55b6[_0x7757c7];return _0x1e8f05;};'use strict';var _=require(_0x655b('0x0'));var util=require(_0x655b('0x1'));var moment=require(_0x655b('0x2'));var BPromise=require('bluebird');var rs=require(_0x655b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x655b('0x4'))['db'];var utils=require(_0x655b('0x5'));var logger=require(_0x655b('0x6'))(_0x655b('0x7'));var config=require(_0x655b('0x8'));var jayson=require(_0x655b('0x9'));var client=jayson[_0x655b('0xa')][_0x655b('0xb')]({'port':0x232a});config['redis']=_[_0x655b('0xc')](config[_0x655b('0xd')],{'host':_0x655b('0xe'),'port':0x18eb});var socket=require(_0x655b('0xf'))(new Redis(config['redis']));require('./smsMessage.socket')['register'](socket);function respondWithRpcPromise(_0x25afa2,_0x3a18ce,_0x4b4a6d){return new BPromise(function(_0x10783e,_0x2bdaeb){return client[_0x655b('0x10')](_0x25afa2,_0x4b4a6d)['then'](function(_0x249e23){logger[_0x655b('0x11')](_0x655b('0x12'),_0x3a18ce,'request\x20sent');logger['debug'](_0x655b('0x13'),_0x3a18ce,_0x655b('0x14'),JSON[_0x655b('0x15')](_0x249e23));if(_0x249e23['error']){if(_0x249e23[_0x655b('0x16')][_0x655b('0x17')]===0x1f4){logger['error'](_0x655b('0x12'),_0x3a18ce,_0x249e23['error'][_0x655b('0x18')]);return _0x2bdaeb(_0x249e23[_0x655b('0x16')][_0x655b('0x18')]);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x3a18ce,_0x249e23[_0x655b('0x16')][_0x655b('0x18')]);return _0x10783e(_0x249e23[_0x655b('0x16')][_0x655b('0x18')]);}else{logger['info'](_0x655b('0x12'),_0x3a18ce,_0x655b('0x14'));_0x10783e(_0x249e23['result'][_0x655b('0x18')]);}})[_0x655b('0x19')](function(_0x1bcfab){logger[_0x655b('0x16')](_0x655b('0x12'),_0x3a18ce,_0x1bcfab);_0x2bdaeb(_0x1bcfab);});});}exports['CreateSmsMessage']=function(_0x5329e5){var _0x47f60d=this;return new Promise(function(_0x42d6d0,_0x3dda89){return db[_0x655b('0x1a')][_0x655b('0x1b')](_0x5329e5[_0x655b('0x1c')],{'raw':_0x5329e5[_0x655b('0x1d')]?_0x5329e5['options'][_0x655b('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x1a6319){logger[_0x655b('0x11')]('CreateSmsMessage',_0x5329e5);logger[_0x655b('0x1f')](_0x655b('0x20'),_0x5329e5,JSON[_0x655b('0x15')](_0x1a6319));_0x42d6d0(_0x1a6319);})[_0x655b('0x19')](function(_0x6c1a3){logger[_0x655b('0x16')](_0x655b('0x20'),_0x6c1a3[_0x655b('0x18')],_0x5329e5);_0x3dda89(_0x47f60d[_0x655b('0x16')](0x1f4,_0x6c1a3[_0x655b('0x18')]));});});};
\ No newline at end of file
+var _0x39f5=['request\x20sent','CreateSmsMessage','SmsMessage','create','body','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','then','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x1ff5ef,_0x2e26dc){var _0x1a261a=function(_0x5b3828){while(--_0x5b3828){_0x1ff5ef['push'](_0x1ff5ef['shift']());}};_0x1a261a(++_0x2e26dc);}(_0x39f5,0x69));var _0x539f=function(_0x19a19,_0x3ed13b){_0x19a19=_0x19a19-0x0;var _0x5e943b=_0x39f5[_0x19a19];return _0x5e943b;};'use strict';var _=require(_0x539f('0x0'));var util=require(_0x539f('0x1'));var moment=require(_0x539f('0x2'));var BPromise=require(_0x539f('0x3'));var rs=require(_0x539f('0x4'));var fs=require('fs');var Redis=require(_0x539f('0x5'));var db=require(_0x539f('0x6'))['db'];var utils=require(_0x539f('0x7'));var logger=require('../../config/logger')(_0x539f('0x8'));var config=require(_0x539f('0x9'));var jayson=require(_0x539f('0xa'));var client=jayson[_0x539f('0xb')]['http']({'port':0x232a});config[_0x539f('0xc')]=_[_0x539f('0xd')](config[_0x539f('0xc')],{'host':_0x539f('0xe'),'port':0x18eb});var socket=require(_0x539f('0xf'))(new Redis(config[_0x539f('0xc')]));require(_0x539f('0x10'))[_0x539f('0x11')](socket);function respondWithRpcPromise(_0x456d92,_0x554104,_0x50e1fe){return new BPromise(function(_0x59eec4,_0x55f42b){return client['request'](_0x456d92,_0x50e1fe)[_0x539f('0x12')](function(_0xa55955){logger['info'](_0x539f('0x13'),_0x554104,'request\x20sent');logger[_0x539f('0x14')](_0x539f('0x15'),_0x554104,'request\x20sent',JSON[_0x539f('0x16')](_0xa55955));if(_0xa55955[_0x539f('0x17')]){if(_0xa55955['error'][_0x539f('0x18')]===0x1f4){logger[_0x539f('0x17')](_0x539f('0x13'),_0x554104,_0xa55955['error']['message']);return _0x55f42b(_0xa55955['error'][_0x539f('0x19')]);}logger[_0x539f('0x17')](_0x539f('0x13'),_0x554104,_0xa55955[_0x539f('0x17')][_0x539f('0x19')]);return _0x59eec4(_0xa55955[_0x539f('0x17')][_0x539f('0x19')]);}else{logger[_0x539f('0x1a')](_0x539f('0x13'),_0x554104,_0x539f('0x1b'));_0x59eec4(_0xa55955['result'][_0x539f('0x19')]);}})['catch'](function(_0x3e4057){logger[_0x539f('0x17')](_0x539f('0x13'),_0x554104,_0x3e4057);_0x55f42b(_0x3e4057);});});}exports[_0x539f('0x1c')]=function(_0x2014be){var _0x25cb90=this;return new Promise(function(_0x41e8a5,_0x4fbef9){return db[_0x539f('0x1d')][_0x539f('0x1e')](_0x2014be[_0x539f('0x1f')],{'raw':_0x2014be['options']?_0x2014be['options'][_0x539f('0x20')]===undefined?!![]:![]:!![]})[_0x539f('0x12')](function(_0x139c81){logger[_0x539f('0x1a')](_0x539f('0x1c'),_0x2014be);logger[_0x539f('0x14')](_0x539f('0x1c'),_0x2014be,JSON['stringify'](_0x139c81));_0x41e8a5(_0x139c81);})['catch'](function(_0x1b74ea){logger[_0x539f('0x17')](_0x539f('0x1c'),_0x1b74ea['message'],_0x2014be);_0x4fbef9(_0x25cb90[_0x539f('0x17')](0x1f4,_0x1b74ea[_0x539f('0x19')]));});});};
\ No newline at end of file
index 8b94f57..53676a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30f9=['register','length','smsMessage:','./smsMessage.events','remove','update','emit','removeListener'];(function(_0x31f5c2,_0x530230){var _0x19eb8d=function(_0x1e8f20){while(--_0x1e8f20){_0x31f5c2['push'](_0x31f5c2['shift']());}};_0x19eb8d(++_0x530230);}(_0x30f9,0xdb));var _0x930f=function(_0x22de84,_0x56142b){_0x22de84=_0x22de84-0x0;var _0x54fc49=_0x30f9[_0x22de84];return _0x54fc49;};'use strict';var SmsMessageEvents=require(_0x930f('0x0'));var events=['save',_0x930f('0x1'),_0x930f('0x2')];function createListener(_0x588b34,_0x12ea24){return function(_0x7aebff){_0x12ea24[_0x930f('0x3')](_0x588b34,_0x7aebff);};}function removeListener(_0x106ccc,_0x1204e3){return function(){SmsMessageEvents[_0x930f('0x4')](_0x106ccc,_0x1204e3);};}exports[_0x930f('0x5')]=function(_0x4b3929){for(var _0x128823=0x0,_0x248e3f=events[_0x930f('0x6')];_0x128823<_0x248e3f;_0x128823++){var _0x4002b4=events[_0x128823];var _0x31f834=createListener(_0x930f('0x7')+_0x4002b4,_0x4b3929);SmsMessageEvents['on'](_0x4002b4,_0x31f834);}};
\ No newline at end of file
+var _0xa18a=['remove','emit','removeListener','register','length','smsMessage:','./smsMessage.events'];(function(_0x2decb1,_0x5b4df9){var _0x221137=function(_0x1aa5cd){while(--_0x1aa5cd){_0x2decb1['push'](_0x2decb1['shift']());}};_0x221137(++_0x5b4df9);}(_0xa18a,0xfb));var _0xaa18=function(_0x2a3681,_0x368fcf){_0x2a3681=_0x2a3681-0x0;var _0x108a16=_0xa18a[_0x2a3681];return _0x108a16;};'use strict';var SmsMessageEvents=require(_0xaa18('0x0'));var events=['save',_0xaa18('0x1'),'update'];function createListener(_0x5207e3,_0xf3d49b){return function(_0x83bacd){_0xf3d49b[_0xaa18('0x2')](_0x5207e3,_0x83bacd);};}function removeListener(_0x434282,_0x46a4e8){return function(){SmsMessageEvents[_0xaa18('0x3')](_0x434282,_0x46a4e8);};}exports[_0xaa18('0x4')]=function(_0x1995bc){for(var _0x2ec217=0x0,_0x1b40f7=events[_0xaa18('0x5')];_0x2ec217<_0x1b40f7;_0x2ec217++){var _0x5d4c48=events[_0x2ec217];var _0x1c5307=createListener(_0xaa18('0x6')+_0x5d4c48,_0x1995bc);SmsMessageEvents['on'](_0x5d4c48,_0x1c5307);}};
\ No newline at end of file
index 098d92d..b4fb98e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa04d=['describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','/:id','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated','index'];(function(_0x424519,_0x24b999){var _0x4edd1b=function(_0x4c89e0){while(--_0x4c89e0){_0x424519['push'](_0x424519['shift']());}};_0x4edd1b(++_0x24b999);}(_0xa04d,0x198));var _0xda04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa04d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xda04('0x0'));var util=require(_0xda04('0x1'));var path=require(_0xda04('0x2'));var timeout=require(_0xda04('0x3'));var express=require(_0xda04('0x4'));var router=express[_0xda04('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xda04('0x6'));var interaction=require(_0xda04('0x7'));var config=require('../../config/environment');var controller=require(_0xda04('0x8'));router[_0xda04('0x9')]('/',auth[_0xda04('0xa')](),controller[_0xda04('0xb')]);router[_0xda04('0x9')]('/describe',auth[_0xda04('0xa')](),controller[_0xda04('0xc')]);router[_0xda04('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xda04('0xd')]);router['get'](_0xda04('0xe'),auth[_0xda04('0xa')](),controller['getMembers']);router[_0xda04('0x9')](_0xda04('0xf'),auth[_0xda04('0xa')](),controller[_0xda04('0x10')]);router[_0xda04('0x9')](_0xda04('0x11'),auth[_0xda04('0xa')](),controller[_0xda04('0x12')]);router[_0xda04('0x13')]('/',auth['isAuthenticated'](),controller[_0xda04('0x14')]);router[_0xda04('0x13')](_0xda04('0xf'),auth[_0xda04('0xa')](),controller[_0xda04('0x15')]);router[_0xda04('0x13')]('/:id/users',auth['isAuthenticated'](),controller[_0xda04('0x16')]);router['put'](_0xda04('0x17'),auth[_0xda04('0xa')](),controller[_0xda04('0x18')]);router[_0xda04('0x19')](_0xda04('0x17'),auth[_0xda04('0xa')](),controller['destroy']);router[_0xda04('0x19')](_0xda04('0xf'),auth[_0xda04('0xa')](),controller[_0xda04('0x1a')]);router[_0xda04('0x19')](_0xda04('0x11'),auth[_0xda04('0xa')](),controller[_0xda04('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xbb9c=['/:id/users','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','index','get','/describe','isAuthenticated','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams'];(function(_0x3f93b8,_0x3f803c){var _0x4427ea=function(_0x212162){while(--_0x212162){_0x3f93b8['push'](_0x3f93b8['shift']());}};_0x4427ea(++_0x3f803c);}(_0xbb9c,0x18f));var _0xcbb9=function(_0x5027b1,_0x1409a5){_0x5027b1=_0x5027b1-0x0;var _0x4a46cf=_0xbb9c[_0x5027b1];return _0x4a46cf;};'use strict';var multer=require(_0xcbb9('0x0'));var util=require(_0xcbb9('0x1'));var path=require(_0xcbb9('0x2'));var timeout=require(_0xcbb9('0x3'));var express=require('express');var router=express[_0xcbb9('0x4')]();var fs_extra=require(_0xcbb9('0x5'));var auth=require(_0xcbb9('0x6'));var interaction=require(_0xcbb9('0x7'));var config=require(_0xcbb9('0x8'));var controller=require(_0xcbb9('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xcbb9('0xa')]);router[_0xcbb9('0xb')](_0xcbb9('0xc'),auth[_0xcbb9('0xd')](),controller[_0xcbb9('0xe')]);router['get'](_0xcbb9('0xf'),auth[_0xcbb9('0xd')](),controller['show']);router[_0xcbb9('0xb')](_0xcbb9('0x10'),auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x11')]);router[_0xcbb9('0xb')](_0xcbb9('0x12'),auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x13')]);router[_0xcbb9('0xb')]('/:id/users',auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x14')]);router[_0xcbb9('0x15')]('/',auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x16')]);router[_0xcbb9('0x15')](_0xcbb9('0x12'),auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x17')]);router[_0xcbb9('0x15')]('/:id/users',auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x18')]);router[_0xcbb9('0x19')](_0xcbb9('0xf'),auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x1a')]);router[_0xcbb9('0x1b')]('/:id',auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x1c')]);router[_0xcbb9('0x1b')](_0xcbb9('0x12'),auth[_0xcbb9('0xd')](),controller[_0xcbb9('0x1d')]);router[_0xcbb9('0x1b')](_0xcbb9('0x1e'),auth['isAuthenticated'](),controller[_0xcbb9('0x1f')]);module[_0xcbb9('0x20')]=router;
\ No newline at end of file
index 7e8bd62..72c1dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bab=['exports','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x3bbd6b,_0x498df1){var _0x1d27fc=function(_0x2d7be7){while(--_0x2d7be7){_0x3bbd6b['push'](_0x3bbd6b['shift']());}};_0x1d27fc(++_0x498df1);}(_0x8bab,0x177));var _0xb8ba=function(_0x5cb2a5,_0x41997c){_0x5cb2a5=_0x5cb2a5-0x0;var _0x3756ec=_0x8bab[_0x5cb2a5];return _0x3756ec;};'use strict';var Sequelize=require(_0xb8ba('0x0'));module[_0xb8ba('0x1')]={'name':{'type':Sequelize[_0xb8ba('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb8ba('0x2')]},'timeout':{'type':Sequelize[_0xb8ba('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb8ba('0x4')](_0xb8ba('0x5'),_0xb8ba('0x6'),_0xb8ba('0x7'))}};
\ No newline at end of file
+var _0xf6bd=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xf6bd,0xdb));var _0xdf6b=function(_0x294b6,_0x2907ae){_0x294b6=_0x294b6-0x0;var _0x38bb97=_0xf6bd[_0x294b6];return _0x38bb97;};'use strict';var Sequelize=require(_0xdf6b('0x0'));module[_0xdf6b('0x1')]={'name':{'type':Sequelize[_0xdf6b('0x2')],'unique':_0xdf6b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xdf6b('0x2')]},'timeout':{'type':Sequelize[_0xdf6b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xdf6b('0x5')](_0xdf6b('0x6'),_0xdf6b('0x7'),_0xdf6b('0x8'))}};
\ No newline at end of file
index 622b9a8..dddf447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x696e=['userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','lodash','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','defaults','localhost','redis','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','SmsQueues','name','index','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','params','keys','include','find','catch','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserSmsQueue','hasOwnProperty','order','SmsQueueId','findAndCountAll','UserId','agent','smsPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','findOne','addTeams','ids','Team','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit'];(function(_0x2242bd,_0x87d7b1){var _0x5c14f8=function(_0x3a693d){while(--_0x3a693d){_0x2242bd['push'](_0x2242bd['shift']());}};_0x5c14f8(++_0x87d7b1);}(_0x696e,0x1d1));var _0xe696=function(_0x18a7cf,_0x22928a){_0x18a7cf=_0x18a7cf-0x0;var _0x55d9b5=_0x696e[_0x18a7cf];return _0x55d9b5;};'use strict';var emlformat=require(_0xe696('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe696('0x1'));var jsonpatch=require(_0xe696('0x2'));var rp=require('request-promise');var moment=require(_0xe696('0x3'));var BPromise=require(_0xe696('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe696('0x5'));var sox=require(_0xe696('0x6'));var csv=require('to-csv');var ejs=require(_0xe696('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe696('0x8'));var squel=require(_0xe696('0x9'));var crypto=require(_0xe696('0xa'));var jsforce=require(_0xe696('0xb'));var deskjs=require(_0xe696('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe696('0xd'));var Papa=require(_0xe696('0xe'));var Redis=require(_0xe696('0xf'));var authService=require(_0xe696('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe696('0x11'));var hardwareService=require(_0xe696('0x12'));var logger=require('../../config/logger')(_0xe696('0x13'));var utils=require(_0xe696('0x14'));var config=require(_0xe696('0x15'));var licenseUtil=require(_0xe696('0x16'));var db=require(_0xe696('0x17'))['db'];config['redis']=_[_0xe696('0x18')](config['redis'],{'host':_0xe696('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe696('0x1a')]));require(_0xe696('0x1b'))[_0xe696('0x1c')](socket);function respondWithStatusCode(_0x4e3489,_0x455d39){_0x455d39=_0x455d39||0xcc;return function(_0x188c67){if(_0x188c67){return _0x4e3489[_0xe696('0x1d')](_0x455d39);}return _0x4e3489[_0xe696('0x1e')](_0x455d39)[_0xe696('0x1f')]();};}function respondWithResult(_0x507b34,_0x31aef8){_0x31aef8=_0x31aef8||0xc8;return function(_0x3c48e2){if(_0x3c48e2){return _0x507b34[_0xe696('0x1e')](_0x31aef8)[_0xe696('0x20')](_0x3c48e2);}};}function respondWithFilteredResult(_0x581c32,_0x2e1f29){return function(_0x9bebbc){if(_0x9bebbc){var _0x5a9577=typeof _0x2e1f29[_0xe696('0x21')]===_0xe696('0x22')&&typeof _0x2e1f29['limit']===_0xe696('0x22');var _0x35f079=_0x9bebbc[_0xe696('0x23')];var _0x28e200=_0x5a9577?0x0:_0x2e1f29[_0xe696('0x21')];var _0x48b999=_0x5a9577?_0x9bebbc[_0xe696('0x23')]:_0x2e1f29[_0xe696('0x21')]+_0x2e1f29[_0xe696('0x24')];var _0x536eb8;if(_0x48b999>=_0x35f079){_0x48b999=_0x35f079;_0x536eb8=0xc8;}else{_0x536eb8=0xce;}_0x581c32['status'](_0x536eb8);return _0x581c32[_0xe696('0x25')](_0xe696('0x26'),_0x28e200+'-'+_0x48b999+'/'+_0x35f079)[_0xe696('0x20')](_0x9bebbc);}return null;};}function patchUpdates(_0x5d252b){return function(_0xea1e54){try{jsonpatch[_0xe696('0x27')](_0xea1e54,_0x5d252b,!![]);}catch(_0x52a6df){return BPromise[_0xe696('0x28')](_0x52a6df);}return _0xea1e54[_0xe696('0x29')]();};}function saveUpdates(_0x259156,_0x18b265){return function(_0x3ff58c){if(_0x3ff58c){return _0x3ff58c[_0xe696('0x2a')](_0x259156)[_0xe696('0x2b')](function(_0x53542c){return _0x53542c;});}return null;};}function removeEntity(_0x5ad63b,_0x584f0d){return function(_0x4eaf46){if(_0x4eaf46){return _0x4eaf46[_0xe696('0x2c')]()[_0xe696('0x2b')](function(){var _0x5213aa=_0x4eaf46['get']({'plain':!![]});var _0x4d27da=_0xe696('0x2d');return db['UserProfileResource']['destroy']({'where':{'type':_0x4d27da,'resourceId':_0x5213aa['id']}})[_0xe696('0x2b')](function(){return _0x4eaf46;});})[_0xe696('0x2b')](function(){_0x5ad63b[_0xe696('0x1e')](0xcc)[_0xe696('0x1f')]();});}};}function handleEntityNotFound(_0x59b55b,_0x328537){return function(_0x156a00){if(!_0x156a00){_0x59b55b[_0xe696('0x1d')](0x194);}return _0x156a00;};}function handleError(_0x1750ac,_0x356b0c){_0x356b0c=_0x356b0c||0x1f4;return function(_0x2403c2){logger['error'](_0x2403c2['stack']);if(_0x2403c2[_0xe696('0x2e')]){delete _0x2403c2[_0xe696('0x2e')];}_0x1750ac[_0xe696('0x1e')](_0x356b0c)['send'](_0x2403c2);};}exports[_0xe696('0x2f')]=function(_0x3ce1bc,_0x55fc40){var _0x33c49b={},_0x84a855={},_0x5d2b1f={'count':0x0,'rows':[]};var _0x1fed29=_[_0xe696('0x30')](db[_0xe696('0x31')][_0xe696('0x32')],function(_0x4342ed){return{'name':_0x4342ed[_0xe696('0x33')],'type':_0x4342ed[_0xe696('0x34')][_0xe696('0x35')]};});_0x84a855[_0xe696('0x36')]=_[_0xe696('0x30')](_0x1fed29,'name');_0x84a855['query']=_['keys'](_0x3ce1bc[_0xe696('0x37')]);_0x84a855[_0xe696('0x38')]=_[_0xe696('0x39')](_0x84a855[_0xe696('0x36')],_0x84a855[_0xe696('0x37')]);_0x33c49b[_0xe696('0x3a')]=_['intersection'](_0x84a855['model'],qs[_0xe696('0x3b')](_0x3ce1bc[_0xe696('0x37')][_0xe696('0x3b')]));_0x33c49b[_0xe696('0x3a')]=_0x33c49b[_0xe696('0x3a')][_0xe696('0x3c')]?_0x33c49b[_0xe696('0x3a')]:_0x84a855[_0xe696('0x36')];if(!_0x3ce1bc['query']['hasOwnProperty'](_0xe696('0x3d'))){_0x33c49b[_0xe696('0x24')]=qs[_0xe696('0x24')](_0x3ce1bc[_0xe696('0x37')]['limit']);_0x33c49b[_0xe696('0x21')]=qs[_0xe696('0x21')](_0x3ce1bc[_0xe696('0x37')][_0xe696('0x21')]);}_0x33c49b['order']=qs[_0xe696('0x3e')](_0x3ce1bc[_0xe696('0x37')][_0xe696('0x3e')]);_0x33c49b[_0xe696('0x3f')]=qs['filters'](_[_0xe696('0x40')](_0x3ce1bc[_0xe696('0x37')],_0x84a855[_0xe696('0x38')]),_0x1fed29);if(_0x3ce1bc['query'][_0xe696('0x41')]){_0x33c49b[_0xe696('0x3f')]=_['merge'](_0x33c49b[_0xe696('0x3f')],{'$or':_[_0xe696('0x30')](_0x1fed29,function(_0x22669e){if(_0x22669e[_0xe696('0x34')]!==_0xe696('0x42')){var _0x451551={};_0x451551[_0x22669e[_0xe696('0x2e')]]={'$like':'%'+_0x3ce1bc[_0xe696('0x37')][_0xe696('0x41')]+'%'};return _0x451551;}})});}_0x33c49b=_[_0xe696('0x43')]({},_0x33c49b,_0x3ce1bc[_0xe696('0x44')]);var _0x8f0ae8={'where':_0x33c49b[_0xe696('0x3f')]};return db['SmsQueue'][_0xe696('0x23')](_0x8f0ae8)['then'](function(_0x2d6612){_0x5d2b1f[_0xe696('0x23')]=_0x2d6612;if(_0x3ce1bc['query'][_0xe696('0x45')]){_0x33c49b['include']=[{'all':!![]}];}return db['SmsQueue'][_0xe696('0x46')](_0x33c49b);})[_0xe696('0x2b')](function(_0x5219cc){_0x5d2b1f[_0xe696('0x47')]=_0x5219cc;return _0x5d2b1f;})[_0xe696('0x2b')](respondWithFilteredResult(_0x55fc40,_0x33c49b))['catch'](handleError(_0x55fc40,null));};exports['show']=function(_0x5d54e3,_0xed557d){var _0x38c15d={'raw':!![],'where':{'id':_0x5d54e3[_0xe696('0x48')]['id']}},_0x506bf7={};_0x506bf7[_0xe696('0x36')]=_[_0xe696('0x49')](db['SmsQueue'][_0xe696('0x32')]);_0x506bf7[_0xe696('0x37')]=_[_0xe696('0x49')](_0x5d54e3[_0xe696('0x37')]);_0x506bf7[_0xe696('0x38')]=_[_0xe696('0x39')](_0x506bf7['model'],_0x506bf7[_0xe696('0x37')]);_0x38c15d['attributes']=_[_0xe696('0x39')](_0x506bf7['model'],qs[_0xe696('0x3b')](_0x5d54e3[_0xe696('0x37')]['fields']));_0x38c15d[_0xe696('0x3a')]=_0x38c15d[_0xe696('0x3a')][_0xe696('0x3c')]?_0x38c15d['attributes']:_0x506bf7[_0xe696('0x36')];if(_0x5d54e3['query']['includeAll']){_0x38c15d[_0xe696('0x4a')]=[{'all':!![]}];}_0x38c15d=_[_0xe696('0x43')]({},_0x38c15d,_0x5d54e3[_0xe696('0x44')]);return db[_0xe696('0x31')][_0xe696('0x4b')](_0x38c15d)['then'](handleEntityNotFound(_0xed557d,null))[_0xe696('0x2b')](respondWithResult(_0xed557d,null))[_0xe696('0x4c')](handleError(_0xed557d,null));};exports['create']=function(_0x9e6ce6,_0x4dd711){return db['SmsQueue']['create'](_0x9e6ce6[_0xe696('0x4d')],{})[_0xe696('0x2b')](function(_0x5373e1){var _0x7103aa=_0x9e6ce6[_0xe696('0x4e')][_0xe696('0x4f')]({'plain':!![]});if(!_0x7103aa)throw new Error(_0xe696('0x50'));if(_0x7103aa[_0xe696('0x51')]===_0xe696('0x4e')){var _0x565736=_0x5373e1[_0xe696('0x4f')]({'plain':!![]});var _0x52f29f='SmsQueues';return db[_0xe696('0x52')][_0xe696('0x4b')]({'where':{'name':_0x52f29f,'userProfileId':_0x7103aa[_0xe696('0x53')]},'raw':!![]})[_0xe696('0x2b')](function(_0x434093){if(_0x434093&&_0x434093[_0xe696('0x54')]===0x0){return db['UserProfileResource'][_0xe696('0x55')]({'name':_0x565736[_0xe696('0x2e')],'resourceId':_0x565736['id'],'type':_0x434093[_0xe696('0x2e')],'sectionId':_0x434093['id']},{})[_0xe696('0x2b')](function(){return _0x5373e1;});}else{return _0x5373e1;}})[_0xe696('0x4c')](function(_0x1c1b1d){logger[_0xe696('0x56')](_0xe696('0x57'),_0x1c1b1d);throw _0x1c1b1d;});}return _0x5373e1;})[_0xe696('0x2b')](respondWithResult(_0x4dd711,0xc9))[_0xe696('0x4c')](handleError(_0x4dd711,null));};exports[_0xe696('0x2a')]=function(_0x1933ce,_0x25da9b){if(_0x1933ce[_0xe696('0x4d')]['id']){delete _0x1933ce[_0xe696('0x4d')]['id'];}return db[_0xe696('0x31')][_0xe696('0x4b')]({'where':{'id':_0x1933ce[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0x25da9b,null))[_0xe696('0x2b')](saveUpdates(_0x1933ce[_0xe696('0x4d')],null))['then'](respondWithResult(_0x25da9b,null))[_0xe696('0x4c')](handleError(_0x25da9b,null));};exports[_0xe696('0x2c')]=function(_0x5046d8,_0x49505d){return db[_0xe696('0x31')][_0xe696('0x4b')]({'where':{'id':_0x5046d8[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0x49505d,null))['then'](removeEntity(_0x49505d,null))['catch'](handleError(_0x49505d,null));};exports[_0xe696('0x58')]=function(_0x2e8bed,_0x226100){return db['SmsQueue'][_0xe696('0x58')]()[_0xe696('0x2b')](respondWithResult(_0x226100,null))['catch'](handleError(_0x226100,null));};exports[_0xe696('0x59')]=function(_0x4845a3,_0xf09502,_0x33d1a0){var _0x3d92dc={'raw':!![],'where':{}},_0x1d3c41={},_0x41bb50;return db[_0xe696('0x31')]['findOne']({'where':{'id':_0x4845a3[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0xf09502,null))['then'](function(_0x551492){if(_0x551492){_0x41bb50=_0x551492['get']({'plain':!![]});_0x1d3c41[_0xe696('0x36')]=_['keys'](db[_0xe696('0x5a')][_0xe696('0x32')]);_0x1d3c41[_0xe696('0x37')]=_[_0xe696('0x49')](_0x4845a3[_0xe696('0x37')]);_0x1d3c41['filters']=_[_0xe696('0x39')](_0x1d3c41['model'],_0x1d3c41['query']);_0x3d92dc['attributes']=_[_0xe696('0x39')](_0x1d3c41[_0xe696('0x36')],qs[_0xe696('0x3b')](_0x4845a3['query'][_0xe696('0x3b')]));_0x3d92dc[_0xe696('0x3a')]=_0x3d92dc[_0xe696('0x3a')][_0xe696('0x3c')]?_0x3d92dc[_0xe696('0x3a')]:_0x1d3c41[_0xe696('0x36')];if(!_0x4845a3['query'][_0xe696('0x5b')]('nolimit')){_0x3d92dc[_0xe696('0x24')]=qs[_0xe696('0x24')](_0x4845a3['query']['limit']);_0x3d92dc[_0xe696('0x21')]=qs[_0xe696('0x21')](_0x4845a3[_0xe696('0x37')][_0xe696('0x21')]);}_0x3d92dc[_0xe696('0x5c')]=qs[_0xe696('0x3e')](_0x4845a3[_0xe696('0x37')][_0xe696('0x3e')]);_0x3d92dc[_0xe696('0x3f')]=qs[_0xe696('0x38')](_[_0xe696('0x40')](_0x4845a3[_0xe696('0x37')],_0x1d3c41['filters']));_0x3d92dc[_0xe696('0x3f')][_0xe696('0x5d')]=_0x551492['id'];if(_0x4845a3[_0xe696('0x37')][_0xe696('0x41')]){_0x3d92dc['where']=_[_0xe696('0x43')](_0x3d92dc['where'],{'$or':_[_0xe696('0x30')](_0x3d92dc['attributes'],function(_0x6eb0ae){var _0x3fdcc2={};_0x3fdcc2[_0x6eb0ae]={'$like':'%'+_0x4845a3[_0xe696('0x37')]['filter']+'%'};return _0x3fdcc2;})});}_0x3d92dc=_['merge']({},_0x3d92dc,_0x4845a3[_0xe696('0x44')]);return db[_0xe696('0x5a')][_0xe696('0x46')](_0x3d92dc);}})[_0xe696('0x2b')](function(_0x363311){if(_0x363311){return db['User'][_0xe696('0x5e')]({'where':{'id':_[_0xe696('0x30')](_0x363311,_0xe696('0x5f')),'role':_0xe696('0x60')},'attributes':['id',_0xe696('0x2e'),_0xe696('0x61'),'updatedAt',_0xe696('0x62')]});}})[_0xe696('0x2b')](function(_0x3e88d6){if(_0x3e88d6){return{'count':_0x3e88d6['count'],'rows':_[_0xe696('0x30')](_0x3e88d6['rows'],function(_0x1f339b){return{'membername':_0x1f339b[_0xe696('0x2e')],'UserId':_0x1f339b['id'],'queue_name':_0x41bb50[_0xe696('0x2e')],'SmsQueueId':_0x41bb50['id'],'interface':util[_0xe696('0x63')](_0xe696('0x64'),_0xe696('0x65'),_0x1f339b[_0xe696('0x2e')]),'penalty':0x0,'paused':_0x1f339b[_0xe696('0x61')],'createdAt':_0x1f339b[_0xe696('0x62')],'updatedAt':_0x1f339b[_0xe696('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe696('0x2b')](respondWithFilteredResult(_0xf09502,_0x3d92dc))[_0xe696('0x4c')](handleError(_0xf09502,null));};exports[_0xe696('0x67')]=function(_0x1255f7,_0x5804c9,_0x3b43cc){var _0x3558a3={};var _0x185047={};var _0x2f2cff;var _0x3e58b7;return db[_0xe696('0x31')][_0xe696('0x68')]({'where':{'id':_0x1255f7[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0x5804c9,null))['then'](function(_0x6546a1){if(_0x6546a1){_0x2f2cff=_0x6546a1;_0x185047['model']=_[_0xe696('0x49')](db['Team'][_0xe696('0x32')]);_0x185047['query']=_[_0xe696('0x49')](_0x1255f7[_0xe696('0x37')]);_0x185047[_0xe696('0x38')]=_[_0xe696('0x39')](_0x185047[_0xe696('0x36')],_0x185047[_0xe696('0x37')]);_0x3558a3[_0xe696('0x3a')]=_[_0xe696('0x39')](_0x185047[_0xe696('0x36')],qs[_0xe696('0x3b')](_0x1255f7[_0xe696('0x37')][_0xe696('0x3b')]));_0x3558a3['attributes']=_0x3558a3[_0xe696('0x3a')]['length']?_0x3558a3[_0xe696('0x3a')]:_0x185047[_0xe696('0x36')];_0x3558a3[_0xe696('0x5c')]=qs['sort'](_0x1255f7[_0xe696('0x37')]['sort']);_0x3558a3[_0xe696('0x3f')]=qs[_0xe696('0x38')](_[_0xe696('0x40')](_0x1255f7[_0xe696('0x37')],_0x185047[_0xe696('0x38')]));if(_0x1255f7[_0xe696('0x37')][_0xe696('0x41')]){_0x3558a3[_0xe696('0x3f')]=_['merge'](_0x3558a3['where'],{'$or':_[_0xe696('0x30')](_0x3558a3[_0xe696('0x3a')],function(_0x18c9f8){var _0x6d6840={};_0x6d6840[_0x18c9f8]={'$like':'%'+_0x1255f7[_0xe696('0x37')][_0xe696('0x41')]+'%'};return _0x6d6840;})});}_0x3558a3=_['merge']({},_0x3558a3,_0x1255f7[_0xe696('0x44')]);return _0x2f2cff['getTeams'](_0x3558a3);}})[_0xe696('0x2b')](function(_0x2ac4b0){if(_0x2ac4b0){_0x3e58b7=_0x2ac4b0[_0xe696('0x3c')];if(!_0x1255f7[_0xe696('0x37')][_0xe696('0x5b')](_0xe696('0x3d'))){_0x3558a3['limit']=qs['limit'](_0x1255f7[_0xe696('0x37')][_0xe696('0x24')]);_0x3558a3[_0xe696('0x21')]=qs['offset'](_0x1255f7[_0xe696('0x37')][_0xe696('0x21')]);}return _0x2f2cff[_0xe696('0x67')](_0x3558a3);}})[_0xe696('0x2b')](function(_0x5496d3){if(_0x5496d3){return _0x5496d3?{'count':_0x3e58b7,'rows':_0x5496d3}:null;}})[_0xe696('0x2b')](respondWithResult(_0x5804c9,null))['catch'](handleError(_0x5804c9,null));};exports[_0xe696('0x69')]=function(_0x22b83a,_0x37cced,_0x124b73){var _0x494002=_0x22b83a['body'][_0xe696('0x6a')];return db[_0xe696('0x6b')][_0xe696('0x46')]({'where':{'id':_0x494002},'attributes':['id'],'include':[{'model':db[_0xe696('0x6c')],'as':_0xe696('0x6d'),'attributes':['id',_0xe696('0x2e'),_0xe696('0x6e'),_0xe696('0x6f'),_0xe696('0x70')],'raw':!![]}]})['then'](function(_0x3b2f8d){if(_0x3b2f8d){var _0x48c0fe=_[_0xe696('0x71')](_0x3b2f8d,function(_0x5e1eb2){var _0x3849ce=_0x5e1eb2[_0xe696('0x4f')]({'plain':!![]});return _0x3849ce[_0xe696('0x6d')];});return db[_0xe696('0x31')][_0xe696('0x4b')]({'where':{'id':_0x22b83a[_0xe696('0x48')]['id']}})['then'](function(_0xdd4f04){return db[_0xe696('0x72')][_0xe696('0x73')](function(_0x30f855){return _0xdd4f04['addTeams'](_0x494002,{'transaction':_0x30f855})[_0xe696('0x2b')](function(){return BPromise['each'](_0x48c0fe,function(_0x4227e7){return db[_0xe696('0x5a')][_0xe696('0x74')]({'where':{'UserId':_0x4227e7['id'],'SmsQueueId':_0x22b83a[_0xe696('0x48')]['id']},'transaction':_0x30f855});});})[_0xe696('0x2b')](function(){_0x48c0fe[_0xe696('0x75')](function(_0x572e1f){socket[_0xe696('0x76')](_0xe696('0x77'),{'UserId':_0x572e1f['id'],'SmsQueueId':_0xdd4f04['id']});});});});});}})[_0xe696('0x2b')](respondWithStatusCode(_0x37cced,null))[_0xe696('0x4c')](handleError(_0x37cced,null));};exports[_0xe696('0x78')]=function(_0x1b24d6,_0x439454,_0x49c223){return db[_0xe696('0x6b')][_0xe696('0x46')]({'where':{'id':_0x1b24d6[_0xe696('0x37')][_0xe696('0x6a')]},'attributes':['id'],'include':[{'model':db[_0xe696('0x6c')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x439454,null))['then'](function(_0x508039){var _0x311f70=_[_0xe696('0x30')](_0x508039,'id');var _0x1ea27b=[];var _0x27bad5=[];var _0x51b595=squel[_0xe696('0x79')]();_0x51b595[_0xe696('0x7a')](_0xe696('0x7b'))[_0xe696('0x7c')](_0xe696('0x7d'),'tq')[_0xe696('0x7e')](_0xe696('0x7f'),'ut',_0xe696('0x80'))[_0xe696('0x3f')]('SmsQueueId\x20=\x20?',_0x1b24d6[_0xe696('0x48')]['id']);for(var _0x329f32=0x0;_0x329f32<_0x508039['length'];_0x329f32+=0x1){let _0x20a902=_0x508039[_0x329f32];for(var _0xd1e447=0x0;_0xd1e447<_0x20a902['Agents'][_0xe696('0x3c')];_0xd1e447+=0x1){let _0x14d954=_0x20a902[_0xe696('0x6d')][_0xd1e447];var _0x212f52=_0x51b595[_0xe696('0x81')]();_0x212f52[_0xe696('0x3f')](_0xe696('0x82'),_0x14d954['id']);_0x27bad5[_0xe696('0x83')](db['sequelize'][_0xe696('0x37')](_0x212f52[_0xe696('0x84')](),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0xe696('0x2b')](function(_0x2cd0e7){if(_0x2cd0e7['length']===0x1){return _0x14d954['id'];}else{var _0x41fd5e=_[_0xe696('0x85')](_[_0xe696('0x30')](_0x2cd0e7,_0xe696('0x86')),function(_0x3139f0){return _[_0xe696('0x87')](_0x311f70,_0x3139f0);});if(_0x41fd5e){return _0x14d954['id'];}}}));}}return BPromise[_0xe696('0x88')](_0x27bad5)[_0xe696('0x2b')](function(_0x2b8da0){_0x1ea27b=_(_0x1ea27b)['union'](_0x2b8da0)[_0xe696('0x89')]()[_0xe696('0x8a')]();return db[_0xe696('0x31')][_0xe696('0x4b')]({'where':{'id':_0x1b24d6[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](function(_0x55503c){return db[_0xe696('0x72')][_0xe696('0x73')](function(_0x5005bd){return _0x55503c['removeTeams'](_0x1b24d6[_0xe696('0x37')][_0xe696('0x6a')],{'transaction':_0x5005bd})[_0xe696('0x2b')](function(){if(!_[_0xe696('0x8b')](_0x1ea27b)){return _0x55503c[_0xe696('0x8c')](_0x1ea27b,{'transaction':_0x5005bd});}})[_0xe696('0x2b')](function(){_0x1ea27b[_0xe696('0x75')](function(_0x2dc6c2){socket['emit'](_0xe696('0x8d'),{'UserId':_0x2dc6c2,'SmsQueueId':_0x55503c['id']});});});});});});})[_0xe696('0x2b')](respondWithStatusCode(_0x439454,null))[_0xe696('0x4c')](handleError(_0x439454,null));};exports[_0xe696('0x8e')]=function(_0x117728,_0x59dc72,_0x1756b8){return db[_0xe696('0x31')][_0xe696('0x4b')]({'where':{'id':_0x117728[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0x59dc72,null))[_0xe696('0x2b')](function(_0x606c7f){if(_0x606c7f){return _0x606c7f[_0xe696('0x8e')](_0x117728[_0xe696('0x4d')][_0xe696('0x6a')],_[_0xe696('0x8f')](_0x117728[_0xe696('0x4d')],[_0xe696('0x6a'),'id'])||{})[_0xe696('0x90')](function(_0x1a5751){for(var _0x20f6e1=0x0;_0x20f6e1<_0x117728[_0xe696('0x4d')][_0xe696('0x6a')][_0xe696('0x3c')];_0x20f6e1+=0x1){socket[_0xe696('0x76')](_0xe696('0x77'),{'UserId':Number(_0x117728[_0xe696('0x4d')][_0xe696('0x6a')][_0x20f6e1]),'SmsQueueId':Number(_0x117728['params']['id'])});}return _0x1a5751;});}})['then'](respondWithResult(_0x59dc72,null))[_0xe696('0x4c')](handleError(_0x59dc72,null));};exports[_0xe696('0x8c')]=function(_0x4ce0e8,_0x10a1a5,_0x155d4d){return db[_0xe696('0x31')]['find']({'where':{'id':_0x4ce0e8[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0x10a1a5,null))[_0xe696('0x2b')](function(_0x38c479){if(_0x38c479){return _0x38c479['removeAgents'](_0x4ce0e8['query'][_0xe696('0x6a')])[_0xe696('0x2b')](function(){if(_['isArray'](_0x4ce0e8[_0xe696('0x37')]['ids'])){for(var _0x114001=0x0;_0x114001<_0x4ce0e8['query']['ids'][_0xe696('0x3c')];_0x114001+=0x1){socket[_0xe696('0x76')]('userSmsQueue:remove',{'UserId':Number(_0x4ce0e8[_0xe696('0x37')]['ids'][_0x114001]),'SmsQueueId':Number(_0x4ce0e8[_0xe696('0x48')]['id'])});}}else{socket[_0xe696('0x76')]('userSmsQueue:remove',{'UserId':Number(_0x4ce0e8[_0xe696('0x37')]['ids']),'SmsQueueId':Number(_0x4ce0e8[_0xe696('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x10a1a5,null))[_0xe696('0x4c')](handleError(_0x10a1a5,null));};exports[_0xe696('0x91')]=function(_0x5ebe92,_0x22c432,_0x35446a){var _0x4aa372={};var _0x55a2bb={};var _0x375c74;var _0x4a5a46;return db[_0xe696('0x31')][_0xe696('0x68')]({'where':{'id':_0x5ebe92[_0xe696('0x48')]['id']}})[_0xe696('0x2b')](handleEntityNotFound(_0x22c432,null))['then'](function(_0x5e465a){if(_0x5e465a){_0x375c74=_0x5e465a;_0x55a2bb['model']=_['keys'](db[_0xe696('0x6c')][_0xe696('0x32')]);_0x55a2bb['query']=_['keys'](_0x5ebe92[_0xe696('0x37')]);_0x55a2bb[_0xe696('0x38')]=_[_0xe696('0x39')](_0x55a2bb[_0xe696('0x36')],_0x55a2bb[_0xe696('0x37')]);_0x4aa372[_0xe696('0x3a')]=_['intersection'](_0x55a2bb[_0xe696('0x36')],qs['fields'](_0x5ebe92[_0xe696('0x37')][_0xe696('0x3b')]));_0x4aa372[_0xe696('0x3a')]=_0x4aa372[_0xe696('0x3a')][_0xe696('0x3c')]?_0x4aa372[_0xe696('0x3a')]:_0x55a2bb[_0xe696('0x36')];_0x4aa372[_0xe696('0x5c')]=qs[_0xe696('0x3e')](_0x5ebe92[_0xe696('0x37')][_0xe696('0x3e')]);_0x4aa372[_0xe696('0x3f')]=qs['filters'](_[_0xe696('0x40')](_0x5ebe92['query'],_0x55a2bb[_0xe696('0x38')]));if(_0x5ebe92[_0xe696('0x37')][_0xe696('0x41')]){_0x4aa372[_0xe696('0x3f')]=_[_0xe696('0x43')](_0x4aa372[_0xe696('0x3f')],{'$or':_[_0xe696('0x30')](_0x4aa372[_0xe696('0x3a')],function(_0x3fe49d){var _0x126750={};_0x126750[_0x3fe49d]={'$like':'%'+_0x5ebe92[_0xe696('0x37')][_0xe696('0x41')]+'%'};return _0x126750;})});}_0x4aa372=_['merge']({},_0x4aa372,_0x5ebe92[_0xe696('0x44')]);return _0x375c74['getAgents'](_0x4aa372);}})[_0xe696('0x2b')](function(_0x633c){if(_0x633c){_0x4a5a46=_0x633c[_0xe696('0x3c')];if(!_0x5ebe92[_0xe696('0x37')]['hasOwnProperty'](_0xe696('0x3d'))){_0x4aa372['limit']=qs[_0xe696('0x24')](_0x5ebe92[_0xe696('0x37')][_0xe696('0x24')]);_0x4aa372['offset']=qs[_0xe696('0x21')](_0x5ebe92[_0xe696('0x37')][_0xe696('0x21')]);}return _0x375c74[_0xe696('0x91')](_0x4aa372);}})[_0xe696('0x2b')](function(_0xaed48b){if(_0xaed48b){return _0xaed48b?{'count':_0x4a5a46,'rows':_0xaed48b}:null;}})[_0xe696('0x2b')](respondWithResult(_0x22c432,null))[_0xe696('0x4c')](handleError(_0x22c432,null));};
\ No newline at end of file
+var _0x7e3b=['length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','SmsQueue','includeAll','include','rows','catch','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','body','describe','getMembers','findOne','UserSmsQueue','nolimit','findAll','agent','smsPause','updatedAt','createdAt','format','getTeams','Team','User','online','voicePause','interface','Agents','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','userSmsQueue:save','ids','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','all','union','compact','removeTeams','removeAgents','userSmsQueue:remove','addAgents','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','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','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','fields','attributes'];(function(_0x40b2eb,_0x43ab4f){var _0x24b1e3=function(_0x1a523f){while(--_0x1a523f){_0x40b2eb['push'](_0x40b2eb['shift']());}};_0x24b1e3(++_0x43ab4f);}(_0x7e3b,0xd8));var _0xb7e3=function(_0x3dd018,_0x5a6a6f){_0x3dd018=_0x3dd018-0x0;var _0x5c09d2=_0x7e3b[_0x3dd018];return _0x5c09d2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb7e3('0x0'));var zipdir=require(_0xb7e3('0x1'));var jsonpatch=require(_0xb7e3('0x2'));var rp=require(_0xb7e3('0x3'));var moment=require(_0xb7e3('0x4'));var BPromise=require(_0xb7e3('0x5'));var Mustache=require(_0xb7e3('0x6'));var util=require(_0xb7e3('0x7'));var path=require(_0xb7e3('0x8'));var sox=require(_0xb7e3('0x9'));var csv=require('to-csv');var ejs=require(_0xb7e3('0xa'));var fs=require('fs');var fs_extra=require(_0xb7e3('0xb'));var _=require('lodash');var squel=require(_0xb7e3('0xc'));var crypto=require('crypto');var jsforce=require(_0xb7e3('0xd'));var deskjs=require(_0xb7e3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb7e3('0xf'));var Papa=require('papaparse');var Redis=require(_0xb7e3('0x10'));var authService=require(_0xb7e3('0x11'));var qs=require(_0xb7e3('0x12'));var as=require(_0xb7e3('0x13'));var hardwareService=require(_0xb7e3('0x14'));var logger=require(_0xb7e3('0x15'))(_0xb7e3('0x16'));var utils=require('../../config/utils');var config=require(_0xb7e3('0x17'));var licenseUtil=require(_0xb7e3('0x18'));var db=require(_0xb7e3('0x19'))['db'];config['redis']=_[_0xb7e3('0x1a')](config[_0xb7e3('0x1b')],{'host':_0xb7e3('0x1c'),'port':0x18eb});var socket=require(_0xb7e3('0x1d'))(new Redis(config['redis']));require('./smsQueue.socket')[_0xb7e3('0x1e')](socket);function respondWithStatusCode(_0x49f815,_0x1416ca){_0x1416ca=_0x1416ca||0xcc;return function(_0x2363e1){if(_0x2363e1){return _0x49f815['sendStatus'](_0x1416ca);}return _0x49f815[_0xb7e3('0x1f')](_0x1416ca)[_0xb7e3('0x20')]();};}function respondWithResult(_0x4a1ab0,_0x4aaa9a){_0x4aaa9a=_0x4aaa9a||0xc8;return function(_0x18511a){if(_0x18511a){return _0x4a1ab0[_0xb7e3('0x1f')](_0x4aaa9a)[_0xb7e3('0x21')](_0x18511a);}};}function respondWithFilteredResult(_0x190614,_0x1432e7){return function(_0x338455){if(_0x338455){var _0x4dcb5c=typeof _0x1432e7[_0xb7e3('0x22')]==='undefined'&&typeof _0x1432e7[_0xb7e3('0x23')]===_0xb7e3('0x24');var _0x500d33=_0x338455[_0xb7e3('0x25')];var _0xcc6a8=_0x4dcb5c?0x0:_0x1432e7[_0xb7e3('0x22')];var _0x5268e6=_0x4dcb5c?_0x338455[_0xb7e3('0x25')]:_0x1432e7[_0xb7e3('0x22')]+_0x1432e7[_0xb7e3('0x23')];var _0x34459c;if(_0x5268e6>=_0x500d33){_0x5268e6=_0x500d33;_0x34459c=0xc8;}else{_0x34459c=0xce;}_0x190614[_0xb7e3('0x1f')](_0x34459c);return _0x190614[_0xb7e3('0x26')](_0xb7e3('0x27'),_0xcc6a8+'-'+_0x5268e6+'/'+_0x500d33)['json'](_0x338455);}return null;};}function patchUpdates(_0x47e195){return function(_0x15c3fd){try{jsonpatch['apply'](_0x15c3fd,_0x47e195,!![]);}catch(_0x8f51b2){return BPromise[_0xb7e3('0x28')](_0x8f51b2);}return _0x15c3fd[_0xb7e3('0x29')]();};}function saveUpdates(_0x529db3,_0x4cbd7b){return function(_0x36d5b3){if(_0x36d5b3){return _0x36d5b3[_0xb7e3('0x2a')](_0x529db3)[_0xb7e3('0x2b')](function(_0x2a4a2a){return _0x2a4a2a;});}return null;};}function removeEntity(_0x1aa5aa,_0x46212e){return function(_0x90879c){if(_0x90879c){return _0x90879c[_0xb7e3('0x2c')]()['then'](function(){var _0x30e03a=_0x90879c[_0xb7e3('0x2d')]({'plain':!![]});var _0x5626cb=_0xb7e3('0x2e');return db[_0xb7e3('0x2f')]['destroy']({'where':{'type':_0x5626cb,'resourceId':_0x30e03a['id']}})[_0xb7e3('0x2b')](function(){return _0x90879c;});})['then'](function(){_0x1aa5aa['status'](0xcc)[_0xb7e3('0x20')]();});}};}function handleEntityNotFound(_0x2e5427,_0x3cff90){return function(_0x2a3dd4){if(!_0x2a3dd4){_0x2e5427['sendStatus'](0x194);}return _0x2a3dd4;};}function handleError(_0x51685d,_0x37a79e){_0x37a79e=_0x37a79e||0x1f4;return function(_0x3f5440){logger[_0xb7e3('0x30')](_0x3f5440[_0xb7e3('0x31')]);if(_0x3f5440[_0xb7e3('0x32')]){delete _0x3f5440[_0xb7e3('0x32')];}_0x51685d[_0xb7e3('0x1f')](_0x37a79e)['send'](_0x3f5440);};}exports[_0xb7e3('0x33')]=function(_0x136e64,_0x3d74bd){var _0x2919b8={},_0x523cf9={},_0x87eeff={'count':0x0,'rows':[]};var _0x3bd832=_['map'](db['SmsQueue'][_0xb7e3('0x34')],function(_0x49a9d1){return{'name':_0x49a9d1[_0xb7e3('0x35')],'type':_0x49a9d1[_0xb7e3('0x36')][_0xb7e3('0x37')]};});_0x523cf9['model']=_[_0xb7e3('0x38')](_0x3bd832,_0xb7e3('0x32'));_0x523cf9[_0xb7e3('0x39')]=_[_0xb7e3('0x3a')](_0x136e64[_0xb7e3('0x39')]);_0x523cf9[_0xb7e3('0x3b')]=_[_0xb7e3('0x3c')](_0x523cf9['model'],_0x523cf9['query']);_0x2919b8['attributes']=_[_0xb7e3('0x3c')](_0x523cf9[_0xb7e3('0x3d')],qs[_0xb7e3('0x3e')](_0x136e64[_0xb7e3('0x39')]['fields']));_0x2919b8['attributes']=_0x2919b8[_0xb7e3('0x3f')][_0xb7e3('0x40')]?_0x2919b8[_0xb7e3('0x3f')]:_0x523cf9[_0xb7e3('0x3d')];if(!_0x136e64[_0xb7e3('0x39')][_0xb7e3('0x41')]('nolimit')){_0x2919b8[_0xb7e3('0x23')]=qs[_0xb7e3('0x23')](_0x136e64[_0xb7e3('0x39')][_0xb7e3('0x23')]);_0x2919b8[_0xb7e3('0x22')]=qs['offset'](_0x136e64[_0xb7e3('0x39')]['offset']);}_0x2919b8[_0xb7e3('0x42')]=qs['sort'](_0x136e64[_0xb7e3('0x39')][_0xb7e3('0x43')]);_0x2919b8[_0xb7e3('0x44')]=qs[_0xb7e3('0x3b')](_[_0xb7e3('0x45')](_0x136e64['query'],_0x523cf9['filters']),_0x3bd832);if(_0x136e64[_0xb7e3('0x39')][_0xb7e3('0x46')]){_0x2919b8[_0xb7e3('0x44')]=_['merge'](_0x2919b8[_0xb7e3('0x44')],{'$or':_['map'](_0x3bd832,function(_0x20d39b){if(_0x20d39b['type']!==_0xb7e3('0x47')){var _0x43398b={};_0x43398b[_0x20d39b[_0xb7e3('0x32')]]={'$like':'%'+_0x136e64[_0xb7e3('0x39')]['filter']+'%'};return _0x43398b;}})});}_0x2919b8=_[_0xb7e3('0x48')]({},_0x2919b8,_0x136e64[_0xb7e3('0x49')]);var _0x3c7570={'where':_0x2919b8['where']};return db[_0xb7e3('0x4a')]['count'](_0x3c7570)[_0xb7e3('0x2b')](function(_0x5d3ecb){_0x87eeff[_0xb7e3('0x25')]=_0x5d3ecb;if(_0x136e64[_0xb7e3('0x39')][_0xb7e3('0x4b')]){_0x2919b8[_0xb7e3('0x4c')]=[{'all':!![]}];}return db[_0xb7e3('0x4a')]['findAll'](_0x2919b8);})[_0xb7e3('0x2b')](function(_0x4f6528){_0x87eeff[_0xb7e3('0x4d')]=_0x4f6528;return _0x87eeff;})[_0xb7e3('0x2b')](respondWithFilteredResult(_0x3d74bd,_0x2919b8))[_0xb7e3('0x4e')](handleError(_0x3d74bd,null));};exports['show']=function(_0x3d8ce1,_0x1ca2b2){var _0x56c797={'raw':!![],'where':{'id':_0x3d8ce1[_0xb7e3('0x4f')]['id']}},_0x2522b7={};_0x2522b7['model']=_[_0xb7e3('0x3a')](db['SmsQueue'][_0xb7e3('0x34')]);_0x2522b7['query']=_[_0xb7e3('0x3a')](_0x3d8ce1[_0xb7e3('0x39')]);_0x2522b7[_0xb7e3('0x3b')]=_['intersection'](_0x2522b7[_0xb7e3('0x3d')],_0x2522b7[_0xb7e3('0x39')]);_0x56c797[_0xb7e3('0x3f')]=_['intersection'](_0x2522b7[_0xb7e3('0x3d')],qs['fields'](_0x3d8ce1['query']['fields']));_0x56c797[_0xb7e3('0x3f')]=_0x56c797['attributes']['length']?_0x56c797[_0xb7e3('0x3f')]:_0x2522b7['model'];if(_0x3d8ce1[_0xb7e3('0x39')][_0xb7e3('0x4b')]){_0x56c797[_0xb7e3('0x4c')]=[{'all':!![]}];}_0x56c797=_['merge']({},_0x56c797,_0x3d8ce1[_0xb7e3('0x49')]);return db[_0xb7e3('0x4a')][_0xb7e3('0x50')](_0x56c797)['then'](handleEntityNotFound(_0x1ca2b2,null))[_0xb7e3('0x2b')](respondWithResult(_0x1ca2b2,null))['catch'](handleError(_0x1ca2b2,null));};exports[_0xb7e3('0x51')]=function(_0x58ab82,_0x2e3485){return db[_0xb7e3('0x4a')][_0xb7e3('0x51')](_0x58ab82['body'],{})['then'](function(_0x177271){var _0x5bee92=_0x58ab82[_0xb7e3('0x52')]['get']({'plain':!![]});if(!_0x5bee92)throw new Error(_0xb7e3('0x53'));if(_0x5bee92[_0xb7e3('0x54')]===_0xb7e3('0x52')){var _0x5176f5=_0x177271[_0xb7e3('0x2d')]({'plain':!![]});var _0x327d2e=_0xb7e3('0x2e');return db[_0xb7e3('0x55')]['find']({'where':{'name':_0x327d2e,'userProfileId':_0x5bee92[_0xb7e3('0x56')]},'raw':!![]})[_0xb7e3('0x2b')](function(_0x57044b){if(_0x57044b&&_0x57044b['autoAssociation']===0x0){return db['UserProfileResource'][_0xb7e3('0x51')]({'name':_0x5176f5[_0xb7e3('0x32')],'resourceId':_0x5176f5['id'],'type':_0x57044b['name'],'sectionId':_0x57044b['id']},{})[_0xb7e3('0x2b')](function(){return _0x177271;});}else{return _0x177271;}})[_0xb7e3('0x4e')](function(_0x1f9c94){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1f9c94);throw _0x1f9c94;});}return _0x177271;})['then'](respondWithResult(_0x2e3485,0xc9))['catch'](handleError(_0x2e3485,null));};exports[_0xb7e3('0x2a')]=function(_0x4e4092,_0x21c662){if(_0x4e4092[_0xb7e3('0x57')]['id']){delete _0x4e4092[_0xb7e3('0x57')]['id'];}return db[_0xb7e3('0x4a')][_0xb7e3('0x50')]({'where':{'id':_0x4e4092['params']['id']}})['then'](handleEntityNotFound(_0x21c662,null))[_0xb7e3('0x2b')](saveUpdates(_0x4e4092[_0xb7e3('0x57')],null))[_0xb7e3('0x2b')](respondWithResult(_0x21c662,null))[_0xb7e3('0x4e')](handleError(_0x21c662,null));};exports[_0xb7e3('0x2c')]=function(_0x3e53c6,_0x5ecf43){return db['SmsQueue']['find']({'where':{'id':_0x3e53c6[_0xb7e3('0x4f')]['id']}})[_0xb7e3('0x2b')](handleEntityNotFound(_0x5ecf43,null))[_0xb7e3('0x2b')](removeEntity(_0x5ecf43,null))[_0xb7e3('0x4e')](handleError(_0x5ecf43,null));};exports[_0xb7e3('0x58')]=function(_0x171b11,_0x5aacc7){return db[_0xb7e3('0x4a')][_0xb7e3('0x58')]()['then'](respondWithResult(_0x5aacc7,null))[_0xb7e3('0x4e')](handleError(_0x5aacc7,null));};exports[_0xb7e3('0x59')]=function(_0x3fb5e4,_0x237fb2,_0xe0b2ac){var _0x3e5294={'raw':!![],'where':{}},_0x71b8b9={},_0x166034;return db['SmsQueue'][_0xb7e3('0x5a')]({'where':{'id':_0x3fb5e4[_0xb7e3('0x4f')]['id']}})['then'](handleEntityNotFound(_0x237fb2,null))[_0xb7e3('0x2b')](function(_0x118190){if(_0x118190){_0x166034=_0x118190[_0xb7e3('0x2d')]({'plain':!![]});_0x71b8b9['model']=_[_0xb7e3('0x3a')](db[_0xb7e3('0x5b')]['rawAttributes']);_0x71b8b9['query']=_[_0xb7e3('0x3a')](_0x3fb5e4[_0xb7e3('0x39')]);_0x71b8b9[_0xb7e3('0x3b')]=_['intersection'](_0x71b8b9[_0xb7e3('0x3d')],_0x71b8b9['query']);_0x3e5294['attributes']=_[_0xb7e3('0x3c')](_0x71b8b9['model'],qs['fields'](_0x3fb5e4[_0xb7e3('0x39')][_0xb7e3('0x3e')]));_0x3e5294['attributes']=_0x3e5294[_0xb7e3('0x3f')][_0xb7e3('0x40')]?_0x3e5294['attributes']:_0x71b8b9[_0xb7e3('0x3d')];if(!_0x3fb5e4[_0xb7e3('0x39')][_0xb7e3('0x41')](_0xb7e3('0x5c'))){_0x3e5294[_0xb7e3('0x23')]=qs['limit'](_0x3fb5e4[_0xb7e3('0x39')][_0xb7e3('0x23')]);_0x3e5294['offset']=qs['offset'](_0x3fb5e4[_0xb7e3('0x39')][_0xb7e3('0x22')]);}_0x3e5294[_0xb7e3('0x42')]=qs[_0xb7e3('0x43')](_0x3fb5e4[_0xb7e3('0x39')]['sort']);_0x3e5294[_0xb7e3('0x44')]=qs[_0xb7e3('0x3b')](_[_0xb7e3('0x45')](_0x3fb5e4['query'],_0x71b8b9[_0xb7e3('0x3b')]));_0x3e5294[_0xb7e3('0x44')]['SmsQueueId']=_0x118190['id'];if(_0x3fb5e4['query'][_0xb7e3('0x46')]){_0x3e5294[_0xb7e3('0x44')]=_['merge'](_0x3e5294[_0xb7e3('0x44')],{'$or':_['map'](_0x3e5294[_0xb7e3('0x3f')],function(_0x315e2b){var _0x37a701={};_0x37a701[_0x315e2b]={'$like':'%'+_0x3fb5e4['query']['filter']+'%'};return _0x37a701;})});}_0x3e5294=_[_0xb7e3('0x48')]({},_0x3e5294,_0x3fb5e4[_0xb7e3('0x49')]);return db['UserSmsQueue'][_0xb7e3('0x5d')](_0x3e5294);}})[_0xb7e3('0x2b')](function(_0x11519c){if(_0x11519c){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x11519c,'UserId'),'role':_0xb7e3('0x5e')},'attributes':['id',_0xb7e3('0x32'),_0xb7e3('0x5f'),_0xb7e3('0x60'),_0xb7e3('0x61')]});}})[_0xb7e3('0x2b')](function(_0x21bfe6){if(_0x21bfe6){return{'count':_0x21bfe6[_0xb7e3('0x25')],'rows':_['map'](_0x21bfe6[_0xb7e3('0x4d')],function(_0x1c6cfb){return{'membername':_0x1c6cfb[_0xb7e3('0x32')],'UserId':_0x1c6cfb['id'],'queue_name':_0x166034[_0xb7e3('0x32')],'SmsQueueId':_0x166034['id'],'interface':util[_0xb7e3('0x62')]('%s/%s','SIP',_0x1c6cfb[_0xb7e3('0x32')]),'penalty':0x0,'paused':_0x1c6cfb[_0xb7e3('0x5f')],'createdAt':_0x1c6cfb[_0xb7e3('0x61')],'updatedAt':_0x1c6cfb[_0xb7e3('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x237fb2,_0x3e5294))[_0xb7e3('0x4e')](handleError(_0x237fb2,null));};exports[_0xb7e3('0x63')]=function(_0x2d9e39,_0x3aac40,_0x24aba5){var _0x4bf7df={};var _0x5670c6={};var _0x3111e2;var _0x5b485f;return db[_0xb7e3('0x4a')][_0xb7e3('0x5a')]({'where':{'id':_0x2d9e39[_0xb7e3('0x4f')]['id']}})[_0xb7e3('0x2b')](handleEntityNotFound(_0x3aac40,null))[_0xb7e3('0x2b')](function(_0x5ef806){if(_0x5ef806){_0x3111e2=_0x5ef806;_0x5670c6[_0xb7e3('0x3d')]=_[_0xb7e3('0x3a')](db[_0xb7e3('0x64')]['rawAttributes']);_0x5670c6[_0xb7e3('0x39')]=_['keys'](_0x2d9e39[_0xb7e3('0x39')]);_0x5670c6[_0xb7e3('0x3b')]=_['intersection'](_0x5670c6[_0xb7e3('0x3d')],_0x5670c6['query']);_0x4bf7df[_0xb7e3('0x3f')]=_[_0xb7e3('0x3c')](_0x5670c6[_0xb7e3('0x3d')],qs[_0xb7e3('0x3e')](_0x2d9e39[_0xb7e3('0x39')][_0xb7e3('0x3e')]));_0x4bf7df[_0xb7e3('0x3f')]=_0x4bf7df[_0xb7e3('0x3f')][_0xb7e3('0x40')]?_0x4bf7df['attributes']:_0x5670c6[_0xb7e3('0x3d')];_0x4bf7df[_0xb7e3('0x42')]=qs['sort'](_0x2d9e39[_0xb7e3('0x39')][_0xb7e3('0x43')]);_0x4bf7df['where']=qs[_0xb7e3('0x3b')](_[_0xb7e3('0x45')](_0x2d9e39[_0xb7e3('0x39')],_0x5670c6[_0xb7e3('0x3b')]));if(_0x2d9e39[_0xb7e3('0x39')]['filter']){_0x4bf7df[_0xb7e3('0x44')]=_['merge'](_0x4bf7df['where'],{'$or':_['map'](_0x4bf7df['attributes'],function(_0xf73737){var _0xf5dd59={};_0xf5dd59[_0xf73737]={'$like':'%'+_0x2d9e39[_0xb7e3('0x39')][_0xb7e3('0x46')]+'%'};return _0xf5dd59;})});}_0x4bf7df=_[_0xb7e3('0x48')]({},_0x4bf7df,_0x2d9e39[_0xb7e3('0x49')]);return _0x3111e2[_0xb7e3('0x63')](_0x4bf7df);}})[_0xb7e3('0x2b')](function(_0x512031){if(_0x512031){_0x5b485f=_0x512031[_0xb7e3('0x40')];if(!_0x2d9e39[_0xb7e3('0x39')][_0xb7e3('0x41')]('nolimit')){_0x4bf7df[_0xb7e3('0x23')]=qs[_0xb7e3('0x23')](_0x2d9e39[_0xb7e3('0x39')][_0xb7e3('0x23')]);_0x4bf7df[_0xb7e3('0x22')]=qs['offset'](_0x2d9e39['query']['offset']);}return _0x3111e2[_0xb7e3('0x63')](_0x4bf7df);}})[_0xb7e3('0x2b')](function(_0x595b6a){if(_0x595b6a){return _0x595b6a?{'count':_0x5b485f,'rows':_0x595b6a}:null;}})[_0xb7e3('0x2b')](respondWithResult(_0x3aac40,null))[_0xb7e3('0x4e')](handleError(_0x3aac40,null));};exports['addTeams']=function(_0x255561,_0x3d57ba,_0x483b13){var _0xee2c4c=_0x255561[_0xb7e3('0x57')]['ids'];return db[_0xb7e3('0x64')]['findAll']({'where':{'id':_0xee2c4c},'attributes':['id'],'include':[{'model':db[_0xb7e3('0x65')],'as':'Agents','attributes':['id',_0xb7e3('0x32'),_0xb7e3('0x66'),_0xb7e3('0x67'),_0xb7e3('0x68')],'raw':!![]}]})[_0xb7e3('0x2b')](function(_0x195c24){if(_0x195c24){var _0x52a79f=_['flatMap'](_0x195c24,function(_0x36e282){var _0x355dc9=_0x36e282[_0xb7e3('0x2d')]({'plain':!![]});return _0x355dc9[_0xb7e3('0x69')];});return db[_0xb7e3('0x4a')][_0xb7e3('0x50')]({'where':{'id':_0x255561[_0xb7e3('0x4f')]['id']}})['then'](function(_0x58f9ba){return db[_0xb7e3('0x6a')][_0xb7e3('0x6b')](function(_0x5e0972){return _0x58f9ba[_0xb7e3('0x6c')](_0xee2c4c,{'transaction':_0x5e0972})['then'](function(){return BPromise[_0xb7e3('0x6d')](_0x52a79f,function(_0x5c2eb3){return db[_0xb7e3('0x5b')][_0xb7e3('0x6e')]({'where':{'UserId':_0x5c2eb3['id'],'SmsQueueId':_0x255561[_0xb7e3('0x4f')]['id']},'transaction':_0x5e0972});});})[_0xb7e3('0x2b')](function(){_0x52a79f[_0xb7e3('0x6f')](function(_0x194731){socket[_0xb7e3('0x70')](_0xb7e3('0x71'),{'UserId':_0x194731['id'],'SmsQueueId':_0x58f9ba['id']});});});});});}})['then'](respondWithStatusCode(_0x3d57ba,null))[_0xb7e3('0x4e')](handleError(_0x3d57ba,null));};exports['removeTeams']=function(_0x34d7d7,_0x2bc4d8,_0xdc32b3){return db[_0xb7e3('0x64')][_0xb7e3('0x5d')]({'where':{'id':_0x34d7d7[_0xb7e3('0x39')][_0xb7e3('0x72')]},'attributes':['id'],'include':[{'model':db[_0xb7e3('0x65')],'as':_0xb7e3('0x69'),'attributes':['id'],'raw':!![]}]})[_0xb7e3('0x2b')](handleEntityNotFound(_0x2bc4d8,null))[_0xb7e3('0x2b')](function(_0x3a194a){var _0xf139e3=_[_0xb7e3('0x38')](_0x3a194a,'id');var _0x495058=[];var _0xfb2d98=[];var _0x2849cc=squel[_0xb7e3('0x73')]();_0x2849cc[_0xb7e3('0x74')](_0xb7e3('0x75'))[_0xb7e3('0x76')]('team_has_sms_queues','tq')[_0xb7e3('0x77')](_0xb7e3('0x78'),'ut',_0xb7e3('0x79'))[_0xb7e3('0x44')]('SmsQueueId\x20=\x20?',_0x34d7d7[_0xb7e3('0x4f')]['id']);for(var _0xcc9ef1=0x0;_0xcc9ef1<_0x3a194a[_0xb7e3('0x40')];_0xcc9ef1+=0x1){let _0x441291=_0x3a194a[_0xcc9ef1];for(var _0x2197b0=0x0;_0x2197b0<_0x441291[_0xb7e3('0x69')][_0xb7e3('0x40')];_0x2197b0+=0x1){let _0x41d833=_0x441291[_0xb7e3('0x69')][_0x2197b0];var _0x53e57c=_0x2849cc[_0xb7e3('0x7a')]();_0x53e57c[_0xb7e3('0x44')](_0xb7e3('0x7b'),_0x41d833['id']);_0xfb2d98[_0xb7e3('0x7c')](db[_0xb7e3('0x6a')][_0xb7e3('0x39')](_0x53e57c[_0xb7e3('0x7d')](),{'type':db['sequelize']['QueryTypes'][_0xb7e3('0x7e')]})[_0xb7e3('0x2b')](function(_0x64625a){if(_0x64625a['length']===0x1){return _0x41d833['id'];}else{var _0x3e0e24=_[_0xb7e3('0x7f')](_[_0xb7e3('0x38')](_0x64625a,_0xb7e3('0x80')),function(_0x45b4c7){return _[_0xb7e3('0x81')](_0xf139e3,_0x45b4c7);});if(_0x3e0e24){return _0x41d833['id'];}}}));}}return BPromise[_0xb7e3('0x82')](_0xfb2d98)[_0xb7e3('0x2b')](function(_0x897d4b){_0x495058=_(_0x495058)[_0xb7e3('0x83')](_0x897d4b)[_0xb7e3('0x84')]()['value']();return db[_0xb7e3('0x4a')]['find']({'where':{'id':_0x34d7d7['params']['id']}})['then'](function(_0x239e43){return db['sequelize']['transaction'](function(_0x582d8e){return _0x239e43[_0xb7e3('0x85')](_0x34d7d7[_0xb7e3('0x39')][_0xb7e3('0x72')],{'transaction':_0x582d8e})['then'](function(){if(!_['isEmpty'](_0x495058)){return _0x239e43[_0xb7e3('0x86')](_0x495058,{'transaction':_0x582d8e});}})[_0xb7e3('0x2b')](function(){_0x495058['forEach'](function(_0x48de70){socket[_0xb7e3('0x70')](_0xb7e3('0x87'),{'UserId':_0x48de70,'SmsQueueId':_0x239e43['id']});});});});});});})[_0xb7e3('0x2b')](respondWithStatusCode(_0x2bc4d8,null))['catch'](handleError(_0x2bc4d8,null));};exports[_0xb7e3('0x88')]=function(_0x1c56c7,_0x2ffe65,_0x3b789b){return db[_0xb7e3('0x4a')][_0xb7e3('0x50')]({'where':{'id':_0x1c56c7['params']['id']}})[_0xb7e3('0x2b')](handleEntityNotFound(_0x2ffe65,null))[_0xb7e3('0x2b')](function(_0x3db3ea){if(_0x3db3ea){return _0x3db3ea[_0xb7e3('0x88')](_0x1c56c7[_0xb7e3('0x57')][_0xb7e3('0x72')],_['omit'](_0x1c56c7[_0xb7e3('0x57')],[_0xb7e3('0x72'),'id'])||{})[_0xb7e3('0x89')](function(_0x36d421){for(var _0x2877b6=0x0;_0x2877b6<_0x1c56c7[_0xb7e3('0x57')][_0xb7e3('0x72')]['length'];_0x2877b6+=0x1){socket[_0xb7e3('0x70')]('userSmsQueue:save',{'UserId':Number(_0x1c56c7['body'][_0xb7e3('0x72')][_0x2877b6]),'SmsQueueId':Number(_0x1c56c7[_0xb7e3('0x4f')]['id'])});}return _0x36d421;});}})['then'](respondWithResult(_0x2ffe65,null))[_0xb7e3('0x4e')](handleError(_0x2ffe65,null));};exports[_0xb7e3('0x86')]=function(_0x48ebae,_0x59bf45,_0x1f4ce2){return db[_0xb7e3('0x4a')][_0xb7e3('0x50')]({'where':{'id':_0x48ebae[_0xb7e3('0x4f')]['id']}})[_0xb7e3('0x2b')](handleEntityNotFound(_0x59bf45,null))['then'](function(_0x3929ae){if(_0x3929ae){return _0x3929ae['removeAgents'](_0x48ebae[_0xb7e3('0x39')][_0xb7e3('0x72')])[_0xb7e3('0x2b')](function(){if(_[_0xb7e3('0x8a')](_0x48ebae[_0xb7e3('0x39')][_0xb7e3('0x72')])){for(var _0x15022a=0x0;_0x15022a<_0x48ebae[_0xb7e3('0x39')][_0xb7e3('0x72')]['length'];_0x15022a+=0x1){socket['emit']('userSmsQueue:remove',{'UserId':Number(_0x48ebae[_0xb7e3('0x39')][_0xb7e3('0x72')][_0x15022a]),'SmsQueueId':Number(_0x48ebae[_0xb7e3('0x4f')]['id'])});}}else{socket[_0xb7e3('0x70')](_0xb7e3('0x87'),{'UserId':Number(_0x48ebae[_0xb7e3('0x39')]['ids']),'SmsQueueId':Number(_0x48ebae[_0xb7e3('0x4f')]['id'])});}});}})[_0xb7e3('0x2b')](respondWithStatusCode(_0x59bf45,null))['catch'](handleError(_0x59bf45,null));};exports[_0xb7e3('0x8b')]=function(_0x381c7b,_0x88ae4d,_0x16e850){var _0x432214={};var _0x327362={};var _0x41c8ea;var _0x5328da;return db[_0xb7e3('0x4a')][_0xb7e3('0x5a')]({'where':{'id':_0x381c7b[_0xb7e3('0x4f')]['id']}})[_0xb7e3('0x2b')](handleEntityNotFound(_0x88ae4d,null))[_0xb7e3('0x2b')](function(_0x36291a){if(_0x36291a){_0x41c8ea=_0x36291a;_0x327362['model']=_[_0xb7e3('0x3a')](db['User']['rawAttributes']);_0x327362[_0xb7e3('0x39')]=_[_0xb7e3('0x3a')](_0x381c7b['query']);_0x327362['filters']=_[_0xb7e3('0x3c')](_0x327362[_0xb7e3('0x3d')],_0x327362['query']);_0x432214[_0xb7e3('0x3f')]=_[_0xb7e3('0x3c')](_0x327362[_0xb7e3('0x3d')],qs['fields'](_0x381c7b[_0xb7e3('0x39')][_0xb7e3('0x3e')]));_0x432214['attributes']=_0x432214[_0xb7e3('0x3f')]['length']?_0x432214[_0xb7e3('0x3f')]:_0x327362['model'];_0x432214[_0xb7e3('0x42')]=qs['sort'](_0x381c7b['query'][_0xb7e3('0x43')]);_0x432214[_0xb7e3('0x44')]=qs[_0xb7e3('0x3b')](_[_0xb7e3('0x45')](_0x381c7b[_0xb7e3('0x39')],_0x327362[_0xb7e3('0x3b')]));if(_0x381c7b[_0xb7e3('0x39')][_0xb7e3('0x46')]){_0x432214['where']=_[_0xb7e3('0x48')](_0x432214['where'],{'$or':_[_0xb7e3('0x38')](_0x432214[_0xb7e3('0x3f')],function(_0x3521b9){var _0x212eb0={};_0x212eb0[_0x3521b9]={'$like':'%'+_0x381c7b[_0xb7e3('0x39')]['filter']+'%'};return _0x212eb0;})});}_0x432214=_[_0xb7e3('0x48')]({},_0x432214,_0x381c7b[_0xb7e3('0x49')]);return _0x41c8ea['getAgents'](_0x432214);}})['then'](function(_0x3068f7){if(_0x3068f7){_0x5328da=_0x3068f7[_0xb7e3('0x40')];if(!_0x381c7b[_0xb7e3('0x39')]['hasOwnProperty'](_0xb7e3('0x5c'))){_0x432214[_0xb7e3('0x23')]=qs[_0xb7e3('0x23')](_0x381c7b['query'][_0xb7e3('0x23')]);_0x432214[_0xb7e3('0x22')]=qs['offset'](_0x381c7b['query'][_0xb7e3('0x22')]);}return _0x41c8ea[_0xb7e3('0x8b')](_0x432214);}})[_0xb7e3('0x2b')](function(_0x16b72e){if(_0x16b72e){return _0x16b72e?{'count':_0x5328da,'rows':_0x16b72e}:null;}})[_0xb7e3('0x2b')](respondWithResult(_0x88ae4d,null))[_0xb7e3('0x4e')](handleError(_0x88ae4d,null));};
\ No newline at end of file
index e4372f8..f533620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1206=['exports','events','../../mysqldb','SmsQueue','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x591df1,_0xd2030b){var _0x28f068=function(_0x38bbd8){while(--_0x38bbd8){_0x591df1['push'](_0x591df1['shift']());}};_0x28f068(++_0xd2030b);}(_0x1206,0x19f));var _0x6120=function(_0x4e37bc,_0x8174e7){_0x4e37bc=_0x4e37bc-0x0;var _0x48a8b7=_0x1206[_0x4e37bc];return _0x48a8b7;};'use strict';var EventEmitter=require(_0x6120('0x0'));var SmsQueue=require(_0x6120('0x1'))['db'][_0x6120('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x6120('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6120('0x4'),'afterDestroy':_0x6120('0x5')};function emitEvent(_0x291ce2){return function(_0x2cc11b,_0x3995e0,_0x45a6d6){SmsQueueEvents['emit'](_0x291ce2+':'+_0x2cc11b['id'],_0x2cc11b);SmsQueueEvents[_0x6120('0x6')](_0x291ce2,_0x2cc11b);_0x45a6d6(null);};}for(var e in events){if(events[_0x6120('0x7')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x6120('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0x492b=['remove','emit','hook','exports','SmsQueue','save','update'];(function(_0x5a383c,_0x2773cf){var _0x289826=function(_0x45ed41){while(--_0x45ed41){_0x5a383c['push'](_0x5a383c['shift']());}};_0x289826(++_0x2773cf);}(_0x492b,0x1bd));var _0xb492=function(_0x115c95,_0x5df580){_0x115c95=_0x115c95-0x0;var _0x4d6ced=_0x492b[_0x115c95];return _0x4d6ced;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0xb492('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb492('0x1'),'afterUpdate':_0xb492('0x2'),'afterDestroy':_0xb492('0x3')};function emitEvent(_0x13c1d7){return function(_0x105237,_0x55eb91,_0x108c54){SmsQueueEvents[_0xb492('0x4')](_0x13c1d7+':'+_0x105237['id'],_0x105237);SmsQueueEvents['emit'](_0x13c1d7,_0x105237);_0x108c54(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0xb492('0x5')](e,emitEvent(event));}}module[_0xb492('0x6')]=SmsQueueEvents;
\ No newline at end of file
index 8ae7bf6..10c736f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc234=['lodash','util','api','moment','bluebird','request-promise','./smsQueue.attributes','define','SmsQueue','sms_queues'];(function(_0x387e33,_0x549f31){var _0x95be8f=function(_0x757d24){while(--_0x757d24){_0x387e33['push'](_0x387e33['shift']());}};_0x95be8f(++_0x549f31);}(_0xc234,0x12c));var _0x4c23=function(_0x2b7e06,_0x1e6b95){_0x2b7e06=_0x2b7e06-0x0;var _0x12cf46=_0xc234[_0x2b7e06];return _0x12cf46;};'use strict';var _=require(_0x4c23('0x0'));var util=require(_0x4c23('0x1'));var logger=require('../../config/logger')(_0x4c23('0x2'));var moment=require(_0x4c23('0x3'));var BPromise=require(_0x4c23('0x4'));var rp=require(_0x4c23('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4c23('0x6'));module['exports']=function(_0x6754f3,_0x56e751){return _0x6754f3[_0x4c23('0x7')](_0x4c23('0x8'),attributes,{'tableName':_0x4c23('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe5a9=['lodash','util','api','moment','request-promise','path','../../config/environment','./smsQueue.attributes','define','SmsQueue'];(function(_0x116254,_0x458d54){var _0x426d80=function(_0x1cfbad){while(--_0x1cfbad){_0x116254['push'](_0x116254['shift']());}};_0x426d80(++_0x458d54);}(_0xe5a9,0xbe));var _0x9e5a=function(_0x282f96,_0x2be4be){_0x282f96=_0x282f96-0x0;var _0x12d02b=_0xe5a9[_0x282f96];return _0x12d02b;};'use strict';var _=require(_0x9e5a('0x0'));var util=require(_0x9e5a('0x1'));var logger=require('../../config/logger')(_0x9e5a('0x2'));var moment=require(_0x9e5a('0x3'));var BPromise=require('bluebird');var rp=require(_0x9e5a('0x4'));var fs=require('fs');var path=require(_0x9e5a('0x5'));var rimraf=require('rimraf');var config=require(_0x9e5a('0x6'));var attributes=require(_0x9e5a('0x7'));module['exports']=function(_0x3733e2,_0x2fbe57){return _0x3733e2[_0x9e5a('0x8')](_0x9e5a('0x9'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b96c0c..bf7fb5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd331=['findAll','options','raw','where','attributes','map','include','model','stringify','ShowSmsQueue','find','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./smsQueue.socket','request','then','info','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','SmsQueue,\x20%s,\x20%s','message','result','GetSmsQueue','SmsQueue'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xd331,0xa4));var _0x1d33=function(_0x6a63f,_0x41ed14){_0x6a63f=_0x6a63f-0x0;var _0x3103cb=_0xd331[_0x6a63f];return _0x3103cb;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x1d33('0x0'));var rs=require(_0x1d33('0x1'));var fs=require('fs');var Redis=require(_0x1d33('0x2'));var db=require(_0x1d33('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1d33('0x4'))(_0x1d33('0x5'));var config=require(_0x1d33('0x6'));var jayson=require(_0x1d33('0x7'));var client=jayson[_0x1d33('0x8')][_0x1d33('0x9')]({'port':0x232a});config[_0x1d33('0xa')]=_[_0x1d33('0xb')](config[_0x1d33('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1d33('0xc'))['register'](socket);function respondWithRpcPromise(_0x5c4db2,_0x42a8a2,_0x58db05){return new BPromise(function(_0x847764,_0x1bc3ce){return client[_0x1d33('0xd')](_0x5c4db2,_0x58db05)[_0x1d33('0xe')](function(_0x4ae631){logger[_0x1d33('0xf')]('SmsQueue,\x20%s,\x20%s',_0x42a8a2,_0x1d33('0x10'));logger[_0x1d33('0x11')](_0x1d33('0x12'),_0x42a8a2,'request\x20sent',JSON['stringify'](_0x4ae631));if(_0x4ae631['error']){if(_0x4ae631[_0x1d33('0x13')][_0x1d33('0x14')]===0x1f4){logger[_0x1d33('0x13')](_0x1d33('0x15'),_0x42a8a2,_0x4ae631[_0x1d33('0x13')][_0x1d33('0x16')]);return _0x1bc3ce(_0x4ae631['error'][_0x1d33('0x16')]);}logger['error'](_0x1d33('0x15'),_0x42a8a2,_0x4ae631[_0x1d33('0x13')][_0x1d33('0x16')]);return _0x847764(_0x4ae631['error'][_0x1d33('0x16')]);}else{logger['info'](_0x1d33('0x15'),_0x42a8a2,_0x1d33('0x10'));_0x847764(_0x4ae631[_0x1d33('0x17')][_0x1d33('0x16')]);}})['catch'](function(_0x3636e4){logger[_0x1d33('0x13')](_0x1d33('0x15'),_0x42a8a2,_0x3636e4);_0x1bc3ce(_0x3636e4);});});}exports[_0x1d33('0x18')]=function(_0x3d5096){var _0x5a3bde=this;return new Promise(function(_0xf7a396,_0x2e0f38){return db[_0x1d33('0x19')][_0x1d33('0x1a')]({'raw':_0x3d5096[_0x1d33('0x1b')]?_0x3d5096[_0x1d33('0x1b')][_0x1d33('0x1c')]===undefined?!![]:![]:!![],'where':_0x3d5096['options']?_0x3d5096[_0x1d33('0x1b')][_0x1d33('0x1d')]||null:null,'attributes':_0x3d5096[_0x1d33('0x1b')]?_0x3d5096[_0x1d33('0x1b')][_0x1d33('0x1e')]||null:null,'limit':_0x3d5096[_0x1d33('0x1b')]?_0x3d5096[_0x1d33('0x1b')]['limit']||null:null,'include':_0x3d5096[_0x1d33('0x1b')]?_0x3d5096[_0x1d33('0x1b')]['include']?_[_0x1d33('0x1f')](_0x3d5096[_0x1d33('0x1b')][_0x1d33('0x20')],function(_0x26fc17){return{'model':db[_0x26fc17[_0x1d33('0x21')]],'as':_0x26fc17['as'],'attributes':_0x26fc17[_0x1d33('0x1e')],'include':_0x26fc17[_0x1d33('0x20')]?_[_0x1d33('0x1f')](_0x26fc17['include'],function(_0x282b6c){return{'model':db[_0x282b6c[_0x1d33('0x21')]],'as':_0x282b6c['as'],'attributes':_0x282b6c[_0x1d33('0x1e')],'include':_0x282b6c['include']?_[_0x1d33('0x1f')](_0x282b6c[_0x1d33('0x20')],function(_0x19acd1){return{'model':db[_0x19acd1[_0x1d33('0x21')]],'as':_0x19acd1['as'],'attributes':_0x19acd1[_0x1d33('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1d33('0xe')](function(_0xdd7c35){logger[_0x1d33('0xf')](_0x1d33('0x18'),_0x3d5096);logger[_0x1d33('0x11')](_0x1d33('0x18'),_0x3d5096,JSON[_0x1d33('0x22')](_0xdd7c35));_0xf7a396(_0xdd7c35);})['catch'](function(_0x3ed527){logger[_0x1d33('0x13')](_0x1d33('0x18'),_0x3ed527[_0x1d33('0x16')],_0x3d5096);_0x2e0f38(_0x5a3bde[_0x1d33('0x13')](0x1f4,_0x3ed527['message']));});});};exports[_0x1d33('0x23')]=function(_0x17f03c){var _0x1e0fae=this;return new Promise(function(_0x33422a,_0x439ae2){return db['SmsQueue'][_0x1d33('0x24')]({'raw':_0x17f03c[_0x1d33('0x1b')]?_0x17f03c[_0x1d33('0x1b')][_0x1d33('0x1c')]===undefined?!![]:![]:!![],'where':_0x17f03c['options']?_0x17f03c[_0x1d33('0x1b')][_0x1d33('0x1d')]||null:null,'attributes':_0x17f03c[_0x1d33('0x1b')]?_0x17f03c[_0x1d33('0x1b')][_0x1d33('0x1e')]||null:null,'include':_0x17f03c[_0x1d33('0x1b')]?_0x17f03c['options']['include']?_[_0x1d33('0x1f')](_0x17f03c['options']['include'],function(_0x3ad889){return{'model':db[_0x3ad889['model']],'as':_0x3ad889['as'],'attributes':_0x3ad889[_0x1d33('0x1e')],'include':_0x3ad889[_0x1d33('0x20')]?_[_0x1d33('0x1f')](_0x3ad889[_0x1d33('0x20')],function(_0x3d6b6c){return{'model':db[_0x3d6b6c[_0x1d33('0x21')]],'as':_0x3d6b6c['as'],'attributes':_0x3d6b6c['attributes'],'include':_0x3d6b6c[_0x1d33('0x20')]?_[_0x1d33('0x1f')](_0x3d6b6c[_0x1d33('0x20')],function(_0x5399ef){return{'model':db[_0x5399ef[_0x1d33('0x21')]],'as':_0x5399ef['as'],'attributes':_0x5399ef[_0x1d33('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1d33('0xe')](function(_0x28c9d9){logger[_0x1d33('0xf')]('ShowSmsQueue',_0x17f03c);logger[_0x1d33('0x11')](_0x1d33('0x23'),_0x17f03c,JSON[_0x1d33('0x22')](_0x28c9d9));_0x33422a(_0x28c9d9);})[_0x1d33('0x25')](function(_0x33dd23){logger[_0x1d33('0x13')]('ShowSmsQueue',_0x33dd23[_0x1d33('0x16')],_0x17f03c);_0x439ae2(_0x1e0fae[_0x1d33('0x13')](0x1f4,_0x33dd23[_0x1d33('0x16')]));});});};
\ No newline at end of file
+var _0x0ac7=['./smsQueue.socket','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','SmsQueue','findAll','options','where','attributes','limit','include','model','map','GetSmsQueue','stringify','ShowSmsQueue','find','raw','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter'];(function(_0x5cc655,_0x4b6145){var _0x244379=function(_0x30d2c5){while(--_0x30d2c5){_0x5cc655['push'](_0x5cc655['shift']());}};_0x244379(++_0x4b6145);}(_0x0ac7,0xdf));var _0x70ac=function(_0x3767b7,_0x566f18){_0x3767b7=_0x3767b7-0x0;var _0x1f31fb=_0x0ac7[_0x3767b7];return _0x1f31fb;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x70ac('0x0'));var fs=require('fs');var Redis=require(_0x70ac('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x70ac('0x2'));var logger=require(_0x70ac('0x3'))(_0x70ac('0x4'));var config=require(_0x70ac('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x70ac('0x6')]['http']({'port':0x232a});config[_0x70ac('0x7')]=_[_0x70ac('0x8')](config[_0x70ac('0x7')],{'host':_0x70ac('0x9'),'port':0x18eb});var socket=require(_0x70ac('0xa'))(new Redis(config['redis']));require(_0x70ac('0xb'))[_0x70ac('0xc')](socket);function respondWithRpcPromise(_0x3efe45,_0x460de3,_0x404877){return new BPromise(function(_0x371ae2,_0x5e8142){return client[_0x70ac('0xd')](_0x3efe45,_0x404877)[_0x70ac('0xe')](function(_0xa1be1){logger['info'](_0x70ac('0xf'),_0x460de3,_0x70ac('0x10'));logger[_0x70ac('0x11')](_0x70ac('0x12'),_0x460de3,_0x70ac('0x10'),JSON['stringify'](_0xa1be1));if(_0xa1be1[_0x70ac('0x13')]){if(_0xa1be1[_0x70ac('0x13')][_0x70ac('0x14')]===0x1f4){logger[_0x70ac('0x13')]('SmsQueue,\x20%s,\x20%s',_0x460de3,_0xa1be1[_0x70ac('0x13')]['message']);return _0x5e8142(_0xa1be1[_0x70ac('0x13')][_0x70ac('0x15')]);}logger[_0x70ac('0x13')](_0x70ac('0xf'),_0x460de3,_0xa1be1[_0x70ac('0x13')][_0x70ac('0x15')]);return _0x371ae2(_0xa1be1[_0x70ac('0x13')][_0x70ac('0x15')]);}else{logger[_0x70ac('0x16')]('SmsQueue,\x20%s,\x20%s',_0x460de3,'request\x20sent');_0x371ae2(_0xa1be1[_0x70ac('0x17')]['message']);}})[_0x70ac('0x18')](function(_0x313767){logger[_0x70ac('0x13')]('SmsQueue,\x20%s,\x20%s',_0x460de3,_0x313767);_0x5e8142(_0x313767);});});}exports['GetSmsQueue']=function(_0x3a2dc0){var _0x4b6d7f=this;return new Promise(function(_0x2048d5,_0x476598){return db[_0x70ac('0x19')][_0x70ac('0x1a')]({'raw':_0x3a2dc0[_0x70ac('0x1b')]?_0x3a2dc0[_0x70ac('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3a2dc0[_0x70ac('0x1b')]?_0x3a2dc0[_0x70ac('0x1b')][_0x70ac('0x1c')]||null:null,'attributes':_0x3a2dc0[_0x70ac('0x1b')]?_0x3a2dc0['options'][_0x70ac('0x1d')]||null:null,'limit':_0x3a2dc0[_0x70ac('0x1b')]?_0x3a2dc0[_0x70ac('0x1b')][_0x70ac('0x1e')]||null:null,'include':_0x3a2dc0[_0x70ac('0x1b')]?_0x3a2dc0['options'][_0x70ac('0x1f')]?_['map'](_0x3a2dc0[_0x70ac('0x1b')]['include'],function(_0x57d7d7){return{'model':db[_0x57d7d7[_0x70ac('0x20')]],'as':_0x57d7d7['as'],'attributes':_0x57d7d7[_0x70ac('0x1d')],'include':_0x57d7d7['include']?_['map'](_0x57d7d7[_0x70ac('0x1f')],function(_0x160709){return{'model':db[_0x160709[_0x70ac('0x20')]],'as':_0x160709['as'],'attributes':_0x160709[_0x70ac('0x1d')],'include':_0x160709[_0x70ac('0x1f')]?_[_0x70ac('0x21')](_0x160709[_0x70ac('0x1f')],function(_0x3be59f){return{'model':db[_0x3be59f[_0x70ac('0x20')]],'as':_0x3be59f['as'],'attributes':_0x3be59f['attributes']};}):[]};}):[]};}):[]:[]})[_0x70ac('0xe')](function(_0x4cfffa){logger[_0x70ac('0x16')](_0x70ac('0x22'),_0x3a2dc0);logger['debug'](_0x70ac('0x22'),_0x3a2dc0,JSON[_0x70ac('0x23')](_0x4cfffa));_0x2048d5(_0x4cfffa);})[_0x70ac('0x18')](function(_0x3690c1){logger['error'](_0x70ac('0x22'),_0x3690c1[_0x70ac('0x15')],_0x3a2dc0);_0x476598(_0x4b6d7f[_0x70ac('0x13')](0x1f4,_0x3690c1[_0x70ac('0x15')]));});});};exports[_0x70ac('0x24')]=function(_0x23852a){var _0x44f4b9=this;return new Promise(function(_0x1ef8f6,_0x50b4ee){return db['SmsQueue'][_0x70ac('0x25')]({'raw':_0x23852a[_0x70ac('0x1b')]?_0x23852a[_0x70ac('0x1b')][_0x70ac('0x26')]===undefined?!![]:![]:!![],'where':_0x23852a[_0x70ac('0x1b')]?_0x23852a[_0x70ac('0x1b')][_0x70ac('0x1c')]||null:null,'attributes':_0x23852a[_0x70ac('0x1b')]?_0x23852a[_0x70ac('0x1b')][_0x70ac('0x1d')]||null:null,'include':_0x23852a[_0x70ac('0x1b')]?_0x23852a[_0x70ac('0x1b')]['include']?_[_0x70ac('0x21')](_0x23852a[_0x70ac('0x1b')][_0x70ac('0x1f')],function(_0x1044a3){return{'model':db[_0x1044a3[_0x70ac('0x20')]],'as':_0x1044a3['as'],'attributes':_0x1044a3['attributes'],'include':_0x1044a3[_0x70ac('0x1f')]?_['map'](_0x1044a3['include'],function(_0x1686b5){return{'model':db[_0x1686b5[_0x70ac('0x20')]],'as':_0x1686b5['as'],'attributes':_0x1686b5['attributes'],'include':_0x1686b5[_0x70ac('0x1f')]?_['map'](_0x1686b5['include'],function(_0x1356d8){return{'model':db[_0x1356d8[_0x70ac('0x20')]],'as':_0x1356d8['as'],'attributes':_0x1356d8[_0x70ac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x70ac('0xe')](function(_0x168e22){logger['info'](_0x70ac('0x24'),_0x23852a);logger['debug'](_0x70ac('0x24'),_0x23852a,JSON[_0x70ac('0x23')](_0x168e22));_0x1ef8f6(_0x168e22);})['catch'](function(_0x3f76de){logger[_0x70ac('0x13')](_0x70ac('0x24'),_0x3f76de[_0x70ac('0x15')],_0x23852a);_0x50b4ee(_0x44f4b9[_0x70ac('0x13')](0x1f4,_0x3f76de[_0x70ac('0x15')]));});});};
\ No newline at end of file
index 6f240de..3f3203e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2961=['smsQueue:','./smsQueue.events','remove','update','emit','register'];(function(_0xe6894,_0x5a1755){var _0x4e2ea7=function(_0x535e0a){while(--_0x535e0a){_0xe6894['push'](_0xe6894['shift']());}};_0x4e2ea7(++_0x5a1755);}(_0x2961,0x16f));var _0x1296=function(_0x5e2475,_0x1a6d1b){_0x5e2475=_0x5e2475-0x0;var _0x17926d=_0x2961[_0x5e2475];return _0x17926d;};'use strict';var SmsQueueEvents=require(_0x1296('0x0'));var events=['save',_0x1296('0x1'),_0x1296('0x2')];function createListener(_0x492a9f,_0x11a119){return function(_0x24c17d){_0x11a119[_0x1296('0x3')](_0x492a9f,_0x24c17d);};}function removeListener(_0x120468,_0x3e761c){return function(){SmsQueueEvents['removeListener'](_0x120468,_0x3e761c);};}exports[_0x1296('0x4')]=function(_0x58e1dd){for(var _0x358703=0x0,_0x4f754f=events['length'];_0x358703<_0x4f754f;_0x358703++){var _0x59f307=events[_0x358703];var _0x16b44f=createListener(_0x1296('0x5')+_0x59f307,_0x58e1dd);SmsQueueEvents['on'](_0x59f307,_0x16b44f);}};
\ No newline at end of file
+var _0xcff1=['emit','removeListener','smsQueue:','./smsQueue.events','save','remove','update'];(function(_0x4227eb,_0x128fbb){var _0x4f2af4=function(_0x2c7160){while(--_0x2c7160){_0x4227eb['push'](_0x4227eb['shift']());}};_0x4f2af4(++_0x128fbb);}(_0xcff1,0x81));var _0x1cff=function(_0x421196,_0x1cbd94){_0x421196=_0x421196-0x0;var _0x2738af=_0xcff1[_0x421196];return _0x2738af;};'use strict';var SmsQueueEvents=require(_0x1cff('0x0'));var events=[_0x1cff('0x1'),_0x1cff('0x2'),_0x1cff('0x3')];function createListener(_0x1a37a4,_0x3f9aa4){return function(_0x34be79){_0x3f9aa4[_0x1cff('0x4')](_0x1a37a4,_0x34be79);};}function removeListener(_0x3f2579,_0x3ffd14){return function(){SmsQueueEvents[_0x1cff('0x5')](_0x3f2579,_0x3ffd14);};}exports['register']=function(_0x1fab4a){for(var _0x470feb=0x0,_0x338d29=events['length'];_0x470feb<_0x338d29;_0x470feb++){var _0x2976ec=events[_0x470feb];var _0x48cd1f=createListener(_0x1cff('0x6')+_0x2976ec,_0x1fab4a);SmsQueueEvents['on'](_0x2976ec,_0x48cd1f);}};
\ No newline at end of file
index 7ad5ec6..79febfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50fe=['/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index'];(function(_0x3f465d,_0xbd2037){var _0x121ad1=function(_0x5b13d6){while(--_0x5b13d6){_0x3f465d['push'](_0x3f465d['shift']());}};_0x121ad1(++_0xbd2037);}(_0x50fe,0x12a));var _0xe50f=function(_0x3c2b27,_0x43ac1a){_0x3c2b27=_0x3c2b27-0x0;var _0x4b046b=_0x50fe[_0x3c2b27];return _0x4b046b;};'use strict';var multer=require(_0xe50f('0x0'));var util=require(_0xe50f('0x1'));var path=require(_0xe50f('0x2'));var timeout=require(_0xe50f('0x3'));var express=require(_0xe50f('0x4'));var router=express[_0xe50f('0x5')]();var fs_extra=require(_0xe50f('0x6'));var auth=require(_0xe50f('0x7'));var interaction=require(_0xe50f('0x8'));var config=require(_0xe50f('0x9'));var controller=require(_0xe50f('0xa'));router[_0xe50f('0xb')]('/',auth[_0xe50f('0xc')](),controller[_0xe50f('0xd')]);router[_0xe50f('0xb')](_0xe50f('0xe'),auth['isAuthenticated'](),controller[_0xe50f('0xf')]);router['get'](_0xe50f('0x10'),auth['isAuthenticated'](),controller[_0xe50f('0x11')]);router[_0xe50f('0x12')]('/',auth[_0xe50f('0xc')](),controller[_0xe50f('0x13')]);router[_0xe50f('0x14')]('/:id',auth[_0xe50f('0xc')](),controller[_0xe50f('0x15')]);router['delete']('/:id',auth[_0xe50f('0xc')](),controller[_0xe50f('0x16')]);module[_0xe50f('0x17')]=router;
\ No newline at end of file
+var _0xeea5=['Router','fs-extra','../../config/environment','./smsQueueReport.controller','get','index','isAuthenticated','describe','post','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x30f01c,_0x4bb3a6){var _0x204c8d=function(_0x2e365a){while(--_0x2e365a){_0x30f01c['push'](_0x30f01c['shift']());}};_0x204c8d(++_0x4bb3a6);}(_0xeea5,0x177));var _0x5eea=function(_0xced007,_0x5df21b){_0xced007=_0xced007-0x0;var _0x6b9735=_0xeea5[_0xced007];return _0x6b9735;};'use strict';var multer=require(_0x5eea('0x0'));var util=require(_0x5eea('0x1'));var path=require(_0x5eea('0x2'));var timeout=require(_0x5eea('0x3'));var express=require(_0x5eea('0x4'));var router=express[_0x5eea('0x5')]();var fs_extra=require(_0x5eea('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5eea('0x7'));var controller=require(_0x5eea('0x8'));router[_0x5eea('0x9')]('/',auth['isAuthenticated'](),controller[_0x5eea('0xa')]);router['get']('/describe',auth[_0x5eea('0xb')](),controller[_0x5eea('0xc')]);router[_0x5eea('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5eea('0xd')]('/',auth[_0x5eea('0xb')](),controller[_0x5eea('0xe')]);router['put'](_0x5eea('0xf'),auth['isAuthenticated'](),controller[_0x5eea('0x10')]);router[_0x5eea('0x11')]('/:id',auth[_0x5eea('0xb')](),controller[_0x5eea('0x12')]);module[_0x5eea('0x13')]=router;
\ No newline at end of file
index b4f679c..8b9f7be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafd1=['moment','sequelize','exports','STRING','DATE'];(function(_0x37d4a5,_0x273ef8){var _0x28ba07=function(_0x54645f){while(--_0x54645f){_0x37d4a5['push'](_0x37d4a5['shift']());}};_0x28ba07(++_0x273ef8);}(_0xafd1,0x1c2));var _0x1afd=function(_0x3fcc20,_0x57c31b){_0x3fcc20=_0x3fcc20-0x0;var _0x15d3ce=_0xafd1[_0x3fcc20];return _0x15d3ce;};'use strict';var moment=require(_0x1afd('0x0'));var Sequelize=require(_0x1afd('0x1'));module[_0x1afd('0x2')]={'uniqueid':{'type':Sequelize[_0x1afd('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x1afd('0x3')]},'joinAt':{'type':Sequelize[_0x1afd('0x4')]},'leaveAt':{'type':Sequelize[_0x1afd('0x4')]},'acceptAt':{'type':Sequelize[_0x1afd('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x1afd('0x3')]}};
\ No newline at end of file
+var _0xe811=['moment','sequelize','STRING','DATE'];(function(_0x3c7869,_0x207240){var _0x23bc0b=function(_0x1d5f28){while(--_0x1d5f28){_0x3c7869['push'](_0x3c7869['shift']());}};_0x23bc0b(++_0x207240);}(_0xe811,0x1a8));var _0x1e81=function(_0x44ed51,_0x2a6528){_0x44ed51=_0x44ed51-0x0;var _0x43c11e=_0xe811[_0x44ed51];return _0x43c11e;};'use strict';var moment=require(_0x1e81('0x0'));var Sequelize=require(_0x1e81('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x1e81('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x1e81('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x1e81('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x1e81('0x3')]},'reason':{'type':Sequelize[_0x1e81('0x2')]}};
\ No newline at end of file
index a69dede..7839329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa83a=['offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','type','key','model','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','intersection','merge','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json'];(function(_0x31122e,_0x24fbf7){var _0x54922b=function(_0x142778){while(--_0x142778){_0x31122e['push'](_0x31122e['shift']());}};_0x54922b(++_0x24fbf7);}(_0xa83a,0x1a9));var _0xaa83=function(_0x54632a,_0x2c68b1){_0x54632a=_0x54632a-0x0;var _0x4ca5aa=_0xa83a[_0x54632a];return _0x4ca5aa;};'use strict';var emlformat=require(_0xaa83('0x0'));var rimraf=require(_0xaa83('0x1'));var zipdir=require(_0xaa83('0x2'));var jsonpatch=require(_0xaa83('0x3'));var rp=require(_0xaa83('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xaa83('0x5'));var util=require(_0xaa83('0x6'));var path=require(_0xaa83('0x7'));var sox=require(_0xaa83('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa83('0x9'));var _=require(_0xaa83('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xaa83('0xb'));var deskjs=require(_0xaa83('0xc'));var toCsv=require('to-csv');var querystring=require(_0xaa83('0xd'));var Papa=require(_0xaa83('0xe'));var Redis=require(_0xaa83('0xf'));var authService=require(_0xaa83('0x10'));var qs=require(_0xaa83('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa83('0x12'))(_0xaa83('0x13'));var utils=require(_0xaa83('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaa83('0x15'))['db'];function respondWithStatusCode(_0x3cd83e,_0x2211d){_0x2211d=_0x2211d||0xcc;return function(_0x52e4cd){if(_0x52e4cd){return _0x3cd83e['sendStatus'](_0x2211d);}return _0x3cd83e[_0xaa83('0x16')](_0x2211d)[_0xaa83('0x17')]();};}function respondWithResult(_0x407441,_0x3f368c){_0x3f368c=_0x3f368c||0xc8;return function(_0x2e1e7e){if(_0x2e1e7e){return _0x407441[_0xaa83('0x16')](_0x3f368c)[_0xaa83('0x18')](_0x2e1e7e);}};}function respondWithFilteredResult(_0x427fb1,_0x442b8a){return function(_0x27c0b2){if(_0x27c0b2){var _0x389f4e=typeof _0x442b8a[_0xaa83('0x19')]===_0xaa83('0x1a')&&typeof _0x442b8a['limit']==='undefined';var _0x4d7319=_0x27c0b2[_0xaa83('0x1b')];var _0x950b4c=_0x389f4e?0x0:_0x442b8a['offset'];var _0x2537c3=_0x389f4e?_0x27c0b2[_0xaa83('0x1b')]:_0x442b8a[_0xaa83('0x19')]+_0x442b8a[_0xaa83('0x1c')];var _0x4605d6;if(_0x2537c3>=_0x4d7319){_0x2537c3=_0x4d7319;_0x4605d6=0xc8;}else{_0x4605d6=0xce;}_0x427fb1['status'](_0x4605d6);return _0x427fb1[_0xaa83('0x1d')](_0xaa83('0x1e'),_0x950b4c+'-'+_0x2537c3+'/'+_0x4d7319)[_0xaa83('0x18')](_0x27c0b2);}return null;};}function patchUpdates(_0x13903b){return function(_0x23f537){try{jsonpatch[_0xaa83('0x1f')](_0x23f537,_0x13903b,!![]);}catch(_0x2be540){return BPromise['reject'](_0x2be540);}return _0x23f537[_0xaa83('0x20')]();};}function saveUpdates(_0x22d9d4,_0x213545){return function(_0x341c2e){if(_0x341c2e){return _0x341c2e[_0xaa83('0x21')](_0x22d9d4)[_0xaa83('0x22')](function(_0x4e90b5){return _0x4e90b5;});}return null;};}function removeEntity(_0x5a08f6,_0x401ef0){return function(_0x28351f){if(_0x28351f){return _0x28351f[_0xaa83('0x23')]()[_0xaa83('0x22')](function(){_0x5a08f6[_0xaa83('0x16')](0xcc)[_0xaa83('0x17')]();});}};}function handleEntityNotFound(_0x144d71,_0x55b846){return function(_0x3ff06f){if(!_0x3ff06f){_0x144d71[_0xaa83('0x24')](0x194);}return _0x3ff06f;};}function handleError(_0x3b1894,_0x1ad8b3){_0x1ad8b3=_0x1ad8b3||0x1f4;return function(_0x302130){logger[_0xaa83('0x25')](_0x302130[_0xaa83('0x26')]);if(_0x302130[_0xaa83('0x27')]){delete _0x302130[_0xaa83('0x27')];}_0x3b1894[_0xaa83('0x16')](_0x1ad8b3)[_0xaa83('0x28')](_0x302130);};}exports[_0xaa83('0x29')]=function(_0x5f57d3,_0x5927c1){var _0x57f1c0={},_0x130d7b={},_0x5d2289={'count':0x0,'rows':[]};var _0x328836=_[_0xaa83('0x2a')](db[_0xaa83('0x2b')][_0xaa83('0x2c')],function(_0xefb3f3){return{'name':_0xefb3f3['fieldName'],'type':_0xefb3f3[_0xaa83('0x2d')][_0xaa83('0x2e')]};});_0x130d7b[_0xaa83('0x2f')]=_[_0xaa83('0x2a')](_0x328836,'name');_0x130d7b['query']=_[_0xaa83('0x30')](_0x5f57d3[_0xaa83('0x31')]);_0x130d7b[_0xaa83('0x32')]=_['intersection'](_0x130d7b[_0xaa83('0x2f')],_0x130d7b[_0xaa83('0x31')]);_0x57f1c0['attributes']=_['intersection'](_0x130d7b[_0xaa83('0x2f')],qs['fields'](_0x5f57d3[_0xaa83('0x31')][_0xaa83('0x33')]));_0x57f1c0[_0xaa83('0x34')]=_0x57f1c0[_0xaa83('0x34')][_0xaa83('0x35')]?_0x57f1c0[_0xaa83('0x34')]:_0x130d7b[_0xaa83('0x2f')];if(!_0x5f57d3[_0xaa83('0x31')][_0xaa83('0x36')](_0xaa83('0x37'))){_0x57f1c0[_0xaa83('0x1c')]=qs['limit'](_0x5f57d3[_0xaa83('0x31')][_0xaa83('0x1c')]);_0x57f1c0[_0xaa83('0x19')]=qs[_0xaa83('0x19')](_0x5f57d3[_0xaa83('0x31')]['offset']);}_0x57f1c0[_0xaa83('0x38')]=qs[_0xaa83('0x39')](_0x5f57d3['query'][_0xaa83('0x39')]);_0x57f1c0[_0xaa83('0x3a')]=qs['filters'](_[_0xaa83('0x3b')](_0x5f57d3[_0xaa83('0x31')],_0x130d7b[_0xaa83('0x32')]),_0x328836);if(_0x5f57d3[_0xaa83('0x31')][_0xaa83('0x3c')]){_0x57f1c0[_0xaa83('0x3a')]=_['merge'](_0x57f1c0['where'],{'$or':_[_0xaa83('0x2a')](_0x328836,function(_0x13bf2f){if(_0x13bf2f['type']!==_0xaa83('0x3d')){var _0x3b4e20={};_0x3b4e20[_0x13bf2f[_0xaa83('0x27')]]={'$like':'%'+_0x5f57d3[_0xaa83('0x31')][_0xaa83('0x3c')]+'%'};return _0x3b4e20;}})});}_0x57f1c0=_['merge']({},_0x57f1c0,_0x5f57d3[_0xaa83('0x3e')]);var _0x176b56={'where':_0x57f1c0['where']};return db[_0xaa83('0x2b')]['count'](_0x176b56)[_0xaa83('0x22')](function(_0x58ceb){_0x5d2289[_0xaa83('0x1b')]=_0x58ceb;if(_0x5f57d3['query'][_0xaa83('0x3f')]){_0x57f1c0[_0xaa83('0x40')]=[{'all':!![]}];}return db[_0xaa83('0x2b')][_0xaa83('0x41')](_0x57f1c0);})[_0xaa83('0x22')](function(_0x226875){_0x5d2289[_0xaa83('0x42')]=_0x226875;return _0x5d2289;})['then'](respondWithFilteredResult(_0x5927c1,_0x57f1c0))[_0xaa83('0x43')](handleError(_0x5927c1,null));};exports['show']=function(_0x126e5b,_0x3bc17b){var _0x4419c6={'raw':!![],'where':{'id':_0x126e5b[_0xaa83('0x44')]['id']}},_0x33ddf6={};_0x33ddf6['model']=_[_0xaa83('0x30')](db[_0xaa83('0x2b')][_0xaa83('0x2c')]);_0x33ddf6[_0xaa83('0x31')]=_['keys'](_0x126e5b[_0xaa83('0x31')]);_0x33ddf6[_0xaa83('0x32')]=_[_0xaa83('0x45')](_0x33ddf6[_0xaa83('0x2f')],_0x33ddf6[_0xaa83('0x31')]);_0x4419c6[_0xaa83('0x34')]=_[_0xaa83('0x45')](_0x33ddf6[_0xaa83('0x2f')],qs['fields'](_0x126e5b[_0xaa83('0x31')]['fields']));_0x4419c6[_0xaa83('0x34')]=_0x4419c6[_0xaa83('0x34')][_0xaa83('0x35')]?_0x4419c6[_0xaa83('0x34')]:_0x33ddf6[_0xaa83('0x2f')];if(_0x126e5b[_0xaa83('0x31')][_0xaa83('0x3f')]){_0x4419c6[_0xaa83('0x40')]=[{'all':!![]}];}_0x4419c6=_[_0xaa83('0x46')]({},_0x4419c6,_0x126e5b['options']);return db[_0xaa83('0x2b')][_0xaa83('0x47')](_0x4419c6)['then'](handleEntityNotFound(_0x3bc17b,null))[_0xaa83('0x22')](respondWithResult(_0x3bc17b,null))[_0xaa83('0x43')](handleError(_0x3bc17b,null));};exports[_0xaa83('0x48')]=function(_0x5bf311,_0x796e2d){return db[_0xaa83('0x2b')][_0xaa83('0x48')](_0x5bf311[_0xaa83('0x49')],{})[_0xaa83('0x22')](respondWithResult(_0x796e2d,0xc9))[_0xaa83('0x43')](handleError(_0x796e2d,null));};exports[_0xaa83('0x21')]=function(_0x1cd82f,_0x505fc4){if(_0x1cd82f[_0xaa83('0x49')]['id']){delete _0x1cd82f[_0xaa83('0x49')]['id'];}return db[_0xaa83('0x2b')]['find']({'where':{'id':_0x1cd82f[_0xaa83('0x44')]['id']}})[_0xaa83('0x22')](handleEntityNotFound(_0x505fc4,null))[_0xaa83('0x22')](saveUpdates(_0x1cd82f[_0xaa83('0x49')],null))['then'](respondWithResult(_0x505fc4,null))[_0xaa83('0x43')](handleError(_0x505fc4,null));};exports[_0xaa83('0x23')]=function(_0x20015b,_0x4626d1){return db[_0xaa83('0x2b')][_0xaa83('0x47')]({'where':{'id':_0x20015b[_0xaa83('0x44')]['id']}})[_0xaa83('0x22')](handleEntityNotFound(_0x4626d1,null))[_0xaa83('0x22')](removeEntity(_0x4626d1,null))['catch'](handleError(_0x4626d1,null));};exports['describe']=function(_0x5e5274,_0x2ddc3e){return db[_0xaa83('0x2b')][_0xaa83('0x4a')]()[_0xaa83('0x22')](respondWithResult(_0x2ddc3e,null))[_0xaa83('0x43')](handleError(_0x2ddc3e,null));};
\ No newline at end of file
+var _0xfda2=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','stack','name','index','SmsQueueReport','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','count','findAll','rows','catch','params','rawAttributes','includeAll','include','options','body','find','describe','eml-format','rimraf'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xfda2,0x90));var _0x2fda=function(_0x35d35a,_0x3c0178){_0x35d35a=_0x35d35a-0x0;var _0x13b82b=_0xfda2[_0x35d35a];return _0x13b82b;};'use strict';var emlformat=require(_0x2fda('0x0'));var rimraf=require(_0x2fda('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2fda('0x2'));var rp=require(_0x2fda('0x3'));var moment=require(_0x2fda('0x4'));var BPromise=require(_0x2fda('0x5'));var Mustache=require(_0x2fda('0x6'));var util=require(_0x2fda('0x7'));var path=require(_0x2fda('0x8'));var sox=require(_0x2fda('0x9'));var csv=require(_0x2fda('0xa'));var ejs=require(_0x2fda('0xb'));var fs=require('fs');var fs_extra=require(_0x2fda('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2fda('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2fda('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2fda('0xf'));var Redis=require(_0x2fda('0x10'));var authService=require(_0x2fda('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2fda('0x12'));var hardwareService=require(_0x2fda('0x13'));var logger=require(_0x2fda('0x14'))('api');var utils=require(_0x2fda('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2fda('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc7578d,_0x4c6e63){_0x4c6e63=_0x4c6e63||0xcc;return function(_0x667182){if(_0x667182){return _0xc7578d[_0x2fda('0x17')](_0x4c6e63);}return _0xc7578d[_0x2fda('0x18')](_0x4c6e63)[_0x2fda('0x19')]();};}function respondWithResult(_0x1e2380,_0x21f450){_0x21f450=_0x21f450||0xc8;return function(_0x389bec){if(_0x389bec){return _0x1e2380[_0x2fda('0x18')](_0x21f450)[_0x2fda('0x1a')](_0x389bec);}};}function respondWithFilteredResult(_0xe8a69e,_0x291544){return function(_0x4548d6){if(_0x4548d6){var _0x48ef1b=typeof _0x291544[_0x2fda('0x1b')]===_0x2fda('0x1c')&&typeof _0x291544['limit']===_0x2fda('0x1c');var _0x131fe7=_0x4548d6['count'];var _0x2acc21=_0x48ef1b?0x0:_0x291544['offset'];var _0x324b9e=_0x48ef1b?_0x4548d6['count']:_0x291544[_0x2fda('0x1b')]+_0x291544[_0x2fda('0x1d')];var _0x1a9b27;if(_0x324b9e>=_0x131fe7){_0x324b9e=_0x131fe7;_0x1a9b27=0xc8;}else{_0x1a9b27=0xce;}_0xe8a69e[_0x2fda('0x18')](_0x1a9b27);return _0xe8a69e[_0x2fda('0x1e')]('Content-Range',_0x2acc21+'-'+_0x324b9e+'/'+_0x131fe7)[_0x2fda('0x1a')](_0x4548d6);}return null;};}function patchUpdates(_0x146db0){return function(_0x1c0b8f){try{jsonpatch[_0x2fda('0x1f')](_0x1c0b8f,_0x146db0,!![]);}catch(_0x594930){return BPromise[_0x2fda('0x20')](_0x594930);}return _0x1c0b8f[_0x2fda('0x21')]();};}function saveUpdates(_0x307a73,_0x5e8544){return function(_0x450327){if(_0x450327){return _0x450327[_0x2fda('0x22')](_0x307a73)[_0x2fda('0x23')](function(_0x4a73f2){return _0x4a73f2;});}return null;};}function removeEntity(_0x3d3a36,_0x121eec){return function(_0xbd1b78){if(_0xbd1b78){return _0xbd1b78[_0x2fda('0x24')]()[_0x2fda('0x23')](function(){_0x3d3a36['status'](0xcc)[_0x2fda('0x19')]();});}};}function handleEntityNotFound(_0xda807,_0x51db05){return function(_0x19698c){if(!_0x19698c){_0xda807[_0x2fda('0x17')](0x194);}return _0x19698c;};}function handleError(_0x247cdb,_0x8c01da){_0x8c01da=_0x8c01da||0x1f4;return function(_0x2c3ce7){logger['error'](_0x2c3ce7[_0x2fda('0x25')]);if(_0x2c3ce7[_0x2fda('0x26')]){delete _0x2c3ce7[_0x2fda('0x26')];}_0x247cdb[_0x2fda('0x18')](_0x8c01da)['send'](_0x2c3ce7);};}exports[_0x2fda('0x27')]=function(_0x1556d8,_0x10791d){var _0x4c4ecb={},_0x160821={},_0x3bdb95={'count':0x0,'rows':[]};var _0x17e087=_['map'](db[_0x2fda('0x28')]['rawAttributes'],function(_0x2c0df3){return{'name':_0x2c0df3[_0x2fda('0x29')],'type':_0x2c0df3[_0x2fda('0x2a')][_0x2fda('0x2b')]};});_0x160821[_0x2fda('0x2c')]=_[_0x2fda('0x2d')](_0x17e087,'name');_0x160821[_0x2fda('0x2e')]=_[_0x2fda('0x2f')](_0x1556d8[_0x2fda('0x2e')]);_0x160821[_0x2fda('0x30')]=_['intersection'](_0x160821['model'],_0x160821[_0x2fda('0x2e')]);_0x4c4ecb['attributes']=_[_0x2fda('0x31')](_0x160821['model'],qs[_0x2fda('0x32')](_0x1556d8[_0x2fda('0x2e')][_0x2fda('0x32')]));_0x4c4ecb[_0x2fda('0x33')]=_0x4c4ecb[_0x2fda('0x33')][_0x2fda('0x34')]?_0x4c4ecb[_0x2fda('0x33')]:_0x160821[_0x2fda('0x2c')];if(!_0x1556d8['query']['hasOwnProperty'](_0x2fda('0x35'))){_0x4c4ecb[_0x2fda('0x1d')]=qs[_0x2fda('0x1d')](_0x1556d8[_0x2fda('0x2e')][_0x2fda('0x1d')]);_0x4c4ecb[_0x2fda('0x1b')]=qs[_0x2fda('0x1b')](_0x1556d8[_0x2fda('0x2e')][_0x2fda('0x1b')]);}_0x4c4ecb[_0x2fda('0x36')]=qs['sort'](_0x1556d8[_0x2fda('0x2e')][_0x2fda('0x37')]);_0x4c4ecb['where']=qs[_0x2fda('0x30')](_[_0x2fda('0x38')](_0x1556d8[_0x2fda('0x2e')],_0x160821[_0x2fda('0x30')]),_0x17e087);if(_0x1556d8[_0x2fda('0x2e')][_0x2fda('0x39')]){_0x4c4ecb[_0x2fda('0x3a')]=_[_0x2fda('0x3b')](_0x4c4ecb[_0x2fda('0x3a')],{'$or':_['map'](_0x17e087,function(_0x5eb909){if(_0x5eb909[_0x2fda('0x2a')]!==_0x2fda('0x3c')){var _0x237493={};_0x237493[_0x5eb909[_0x2fda('0x26')]]={'$like':'%'+_0x1556d8['query'][_0x2fda('0x39')]+'%'};return _0x237493;}})});}_0x4c4ecb=_[_0x2fda('0x3b')]({},_0x4c4ecb,_0x1556d8['options']);var _0x2aeaf4={'where':_0x4c4ecb[_0x2fda('0x3a')]};return db[_0x2fda('0x28')]['count'](_0x2aeaf4)['then'](function(_0x2b6f6b){_0x3bdb95[_0x2fda('0x3d')]=_0x2b6f6b;if(_0x1556d8['query']['includeAll']){_0x4c4ecb['include']=[{'all':!![]}];}return db[_0x2fda('0x28')][_0x2fda('0x3e')](_0x4c4ecb);})['then'](function(_0x590cbc){_0x3bdb95[_0x2fda('0x3f')]=_0x590cbc;return _0x3bdb95;})[_0x2fda('0x23')](respondWithFilteredResult(_0x10791d,_0x4c4ecb))[_0x2fda('0x40')](handleError(_0x10791d,null));};exports['show']=function(_0x412a0f,_0x44aced){var _0x35ef31={'raw':!![],'where':{'id':_0x412a0f[_0x2fda('0x41')]['id']}},_0x1e5a46={};_0x1e5a46[_0x2fda('0x2c')]=_[_0x2fda('0x2f')](db[_0x2fda('0x28')][_0x2fda('0x42')]);_0x1e5a46[_0x2fda('0x2e')]=_[_0x2fda('0x2f')](_0x412a0f[_0x2fda('0x2e')]);_0x1e5a46[_0x2fda('0x30')]=_[_0x2fda('0x31')](_0x1e5a46[_0x2fda('0x2c')],_0x1e5a46[_0x2fda('0x2e')]);_0x35ef31['attributes']=_['intersection'](_0x1e5a46[_0x2fda('0x2c')],qs['fields'](_0x412a0f['query'][_0x2fda('0x32')]));_0x35ef31[_0x2fda('0x33')]=_0x35ef31[_0x2fda('0x33')]['length']?_0x35ef31[_0x2fda('0x33')]:_0x1e5a46[_0x2fda('0x2c')];if(_0x412a0f[_0x2fda('0x2e')][_0x2fda('0x43')]){_0x35ef31[_0x2fda('0x44')]=[{'all':!![]}];}_0x35ef31=_[_0x2fda('0x3b')]({},_0x35ef31,_0x412a0f[_0x2fda('0x45')]);return db[_0x2fda('0x28')]['find'](_0x35ef31)[_0x2fda('0x23')](handleEntityNotFound(_0x44aced,null))['then'](respondWithResult(_0x44aced,null))['catch'](handleError(_0x44aced,null));};exports['create']=function(_0x1bcf5d,_0x38f27e){return db['SmsQueueReport']['create'](_0x1bcf5d[_0x2fda('0x46')],{})[_0x2fda('0x23')](respondWithResult(_0x38f27e,0xc9))[_0x2fda('0x40')](handleError(_0x38f27e,null));};exports['update']=function(_0x2307c4,_0x18e646){if(_0x2307c4[_0x2fda('0x46')]['id']){delete _0x2307c4['body']['id'];}return db[_0x2fda('0x28')]['find']({'where':{'id':_0x2307c4[_0x2fda('0x41')]['id']}})[_0x2fda('0x23')](handleEntityNotFound(_0x18e646,null))['then'](saveUpdates(_0x2307c4['body'],null))['then'](respondWithResult(_0x18e646,null))[_0x2fda('0x40')](handleError(_0x18e646,null));};exports['destroy']=function(_0x489804,_0x2f2add){return db[_0x2fda('0x28')][_0x2fda('0x47')]({'where':{'id':_0x489804[_0x2fda('0x41')]['id']}})['then'](handleEntityNotFound(_0x2f2add,null))[_0x2fda('0x23')](removeEntity(_0x2f2add,null))[_0x2fda('0x40')](handleError(_0x2f2add,null));};exports[_0x2fda('0x48')]=function(_0xbbf1f,_0x16f7bd){return db[_0x2fda('0x28')][_0x2fda('0x48')]()[_0x2fda('0x23')](respondWithResult(_0x16f7bd,null))['catch'](handleError(_0x16f7bd,null));};
\ No newline at end of file
index 7302291..c1e2a5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x51a31e,_0x4ff13f){var _0x4ea0ce=function(_0x1a70da){while(--_0x1a70da){_0x51a31e['push'](_0x51a31e['shift']());}};_0x4ea0ce(++_0x4ff13f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0xcb91[_0x5a95fa];return _0x1a61b8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x36610e,_0xf221ae){var _0x311676=function(_0x58c5f3){while(--_0x58c5f3){_0x36610e['push'](_0x36610e['shift']());}};_0x311676(++_0xf221ae);}(_0xb7e7,0x121));var _0x7b7e=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xb7e7[_0x138adb];return _0x1b27f2;};'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
index 66b4b9e..4247fe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x344c=['request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','debug','UpdateSmsQueueReport','attributes','limit','lodash','util','bluebird','ioredis','../../config/logger','rpc','jayson/promise','client'];(function(_0x1027f8,_0x114cfd){var _0x622021=function(_0x1ffa7a){while(--_0x1ffa7a){_0x1027f8['push'](_0x1027f8['shift']());}};_0x622021(++_0x114cfd);}(_0x344c,0x6c));var _0xc344=function(_0x38f960,_0x1803b5){_0x38f960=_0x38f960-0x0;var _0xfd2511=_0x344c[_0x38f960];return _0xfd2511;};'use strict';var _=require(_0xc344('0x0'));var util=require(_0xc344('0x1'));var moment=require('moment');var BPromise=require(_0xc344('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc344('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc344('0x4'))(_0xc344('0x5'));var config=require('../../config/environment');var jayson=require(_0xc344('0x6'));var client=jayson[_0xc344('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3649bd,_0x53144a,_0x10f0ba){return new BPromise(function(_0x1145fd,_0xfdd847){return client[_0xc344('0x8')](_0x3649bd,_0x10f0ba)[_0xc344('0x9')](function(_0x71ece0){logger[_0xc344('0xa')](_0xc344('0xb'),_0x53144a,_0xc344('0xc'));logger['debug'](_0xc344('0xd'),_0x53144a,_0xc344('0xc'),JSON[_0xc344('0xe')](_0x71ece0));if(_0x71ece0[_0xc344('0xf')]){if(_0x71ece0[_0xc344('0xf')]['code']===0x1f4){logger[_0xc344('0xf')](_0xc344('0xb'),_0x53144a,_0x71ece0[_0xc344('0xf')][_0xc344('0x10')]);return _0xfdd847(_0x71ece0['error'][_0xc344('0x10')]);}logger['error'](_0xc344('0xb'),_0x53144a,_0x71ece0['error'][_0xc344('0x10')]);return _0x1145fd(_0x71ece0[_0xc344('0xf')][_0xc344('0x10')]);}else{logger[_0xc344('0xa')](_0xc344('0xb'),_0x53144a,'request\x20sent');_0x1145fd(_0x71ece0[_0xc344('0x11')][_0xc344('0x10')]);}})[_0xc344('0x12')](function(_0x55aad6){logger[_0xc344('0xf')](_0xc344('0xb'),_0x53144a,_0x55aad6);_0xfdd847(_0x55aad6);});});}exports[_0xc344('0x13')]=function(_0xf0fb4e){var _0x24921e=this;return new Promise(function(_0x89b705,_0x11c350){return db[_0xc344('0x14')][_0xc344('0x15')](_0xf0fb4e[_0xc344('0x16')],{'raw':_0xf0fb4e[_0xc344('0x17')]?_0xf0fb4e[_0xc344('0x17')][_0xc344('0x18')]===undefined?!![]:![]:!![]})[_0xc344('0x9')](function(_0x3efca9){logger['info']('CreateSmsQueueReport',_0xf0fb4e);logger[_0xc344('0x19')](_0xc344('0x13'),_0xf0fb4e,JSON['stringify'](_0x3efca9));_0x89b705(_0x3efca9);})[_0xc344('0x12')](function(_0x4853e9){logger[_0xc344('0xf')](_0xc344('0x13'),_0x4853e9[_0xc344('0x10')],_0xf0fb4e);_0x11c350(_0x24921e['error'](0x1f4,_0x4853e9[_0xc344('0x10')]));});});};exports[_0xc344('0x1a')]=function(_0x130ad0){var _0x4c2454=this;return new Promise(function(_0x1e49e2,_0x345fbb){return db[_0xc344('0x14')]['update'](_0x130ad0[_0xc344('0x16')],{'raw':_0x130ad0[_0xc344('0x17')]?_0x130ad0[_0xc344('0x17')][_0xc344('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x130ad0[_0xc344('0x17')]?_0x130ad0[_0xc344('0x17')]['where']||null:null,'attributes':_0x130ad0[_0xc344('0x17')]?_0x130ad0[_0xc344('0x17')][_0xc344('0x1b')]||null:null,'limit':_0x130ad0[_0xc344('0x17')]?_0x130ad0[_0xc344('0x17')][_0xc344('0x1c')]||null:null})[_0xc344('0x9')](function(_0x2f2a0f){logger[_0xc344('0xa')](_0xc344('0x1a'),_0x130ad0);logger['debug'](_0xc344('0x1a'),_0x130ad0,JSON[_0xc344('0xe')](_0x2f2a0f));_0x1e49e2(_0x2f2a0f);})['catch'](function(_0x2e8e12){logger['error'](_0xc344('0x1a'),_0x2e8e12[_0xc344('0x10')],_0x130ad0);_0x345fbb(_0x4c2454[_0xc344('0xf')](0x1f4,_0x2e8e12[_0xc344('0x10')]));});});};
\ No newline at end of file
+var _0x2f4b=['SmsQueueReport,\x20%s,\x20%s,\x20%s','error','message','result','CreateSmsQueueReport','SmsQueueReport','create','options','stringify','catch','update','body','raw','where','attributes','UpdateSmsQueueReport','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x3cfa1e,_0x15e00b){var _0xdcbef9=function(_0x6615e1){while(--_0x6615e1){_0x3cfa1e['push'](_0x3cfa1e['shift']());}};_0xdcbef9(++_0x15e00b);}(_0x2f4b,0x1b4));var _0xb2f4=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2f4b[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0xb2f4('0x0'));var moment=require(_0xb2f4('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb2f4('0x2'));var db=require(_0xb2f4('0x3'))['db'];var utils=require(_0xb2f4('0x4'));var logger=require(_0xb2f4('0x5'))('rpc');var config=require(_0xb2f4('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2674fe,_0x4ceec7,_0x21cc32){return new BPromise(function(_0x226112,_0x480554){return client[_0xb2f4('0x7')](_0x2674fe,_0x21cc32)[_0xb2f4('0x8')](function(_0x16ad3b){logger[_0xb2f4('0x9')](_0xb2f4('0xa'),_0x4ceec7,_0xb2f4('0xb'));logger['debug'](_0xb2f4('0xc'),_0x4ceec7,_0xb2f4('0xb'),JSON['stringify'](_0x16ad3b));if(_0x16ad3b[_0xb2f4('0xd')]){if(_0x16ad3b[_0xb2f4('0xd')]['code']===0x1f4){logger[_0xb2f4('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x4ceec7,_0x16ad3b[_0xb2f4('0xd')]['message']);return _0x480554(_0x16ad3b[_0xb2f4('0xd')][_0xb2f4('0xe')]);}logger[_0xb2f4('0xd')](_0xb2f4('0xa'),_0x4ceec7,_0x16ad3b[_0xb2f4('0xd')][_0xb2f4('0xe')]);return _0x226112(_0x16ad3b[_0xb2f4('0xd')]['message']);}else{logger['info'](_0xb2f4('0xa'),_0x4ceec7,_0xb2f4('0xb'));_0x226112(_0x16ad3b[_0xb2f4('0xf')][_0xb2f4('0xe')]);}})['catch'](function(_0x43daf9){logger[_0xb2f4('0xd')](_0xb2f4('0xa'),_0x4ceec7,_0x43daf9);_0x480554(_0x43daf9);});});}exports[_0xb2f4('0x10')]=function(_0x301857){var _0x528507=this;return new Promise(function(_0x5416bb,_0x57efe8){return db[_0xb2f4('0x11')][_0xb2f4('0x12')](_0x301857['body'],{'raw':_0x301857['options']?_0x301857[_0xb2f4('0x13')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x29a42b){logger['info'](_0xb2f4('0x10'),_0x301857);logger['debug'](_0xb2f4('0x10'),_0x301857,JSON[_0xb2f4('0x14')](_0x29a42b));_0x5416bb(_0x29a42b);})[_0xb2f4('0x15')](function(_0x2feae7){logger['error'](_0xb2f4('0x10'),_0x2feae7['message'],_0x301857);_0x57efe8(_0x528507[_0xb2f4('0xd')](0x1f4,_0x2feae7[_0xb2f4('0xe')]));});});};exports['UpdateSmsQueueReport']=function(_0x2bbb20){var _0x1e624e=this;return new Promise(function(_0x30efab,_0x43c889){return db['SmsQueueReport'][_0xb2f4('0x16')](_0x2bbb20[_0xb2f4('0x17')],{'raw':_0x2bbb20[_0xb2f4('0x13')]?_0x2bbb20[_0xb2f4('0x13')][_0xb2f4('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bbb20['options']?_0x2bbb20[_0xb2f4('0x13')][_0xb2f4('0x19')]||null:null,'attributes':_0x2bbb20[_0xb2f4('0x13')]?_0x2bbb20[_0xb2f4('0x13')][_0xb2f4('0x1a')]||null:null,'limit':_0x2bbb20[_0xb2f4('0x13')]?_0x2bbb20['options']['limit']||null:null})[_0xb2f4('0x8')](function(_0xb406b2){logger[_0xb2f4('0x9')](_0xb2f4('0x1b'),_0x2bbb20);logger['debug'](_0xb2f4('0x1b'),_0x2bbb20,JSON[_0xb2f4('0x14')](_0xb406b2));_0x30efab(_0xb406b2);})[_0xb2f4('0x15')](function(_0x32e0ce){logger['error'](_0xb2f4('0x1b'),_0x32e0ce[_0xb2f4('0xe')],_0x2bbb20);_0x43c889(_0x1e624e[_0xb2f4('0xd')](0x1f4,_0x32e0ce[_0xb2f4('0xe')]));});});};
\ No newline at end of file
index 0e4a339..11e7271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbacd=['get','isAuthenticated','index','/describe','describe','/:id','show','create','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0xbacd,0x1c5));var _0xdbac=function(_0x530fe1,_0x6f5f8c){_0x530fe1=_0x530fe1-0x0;var _0x168b77=_0xbacd[_0x530fe1];return _0x168b77;};'use strict';var multer=require(_0xdbac('0x0'));var util=require(_0xdbac('0x1'));var path=require('path');var timeout=require(_0xdbac('0x2'));var express=require(_0xdbac('0x3'));var router=express[_0xdbac('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xdbac('0x5'));var interaction=require(_0xdbac('0x6'));var config=require(_0xdbac('0x7'));var controller=require(_0xdbac('0x8'));router[_0xdbac('0x9')]('/',auth[_0xdbac('0xa')](),controller[_0xdbac('0xb')]);router[_0xdbac('0x9')](_0xdbac('0xc'),auth[_0xdbac('0xa')](),controller[_0xdbac('0xd')]);router[_0xdbac('0x9')](_0xdbac('0xe'),auth[_0xdbac('0xa')](),controller[_0xdbac('0xf')]);router['post']('/',auth[_0xdbac('0xa')](),controller[_0xdbac('0x10')]);router['put'](_0xdbac('0xe'),auth['isAuthenticated'](),controller[_0xdbac('0x11')]);router[_0xdbac('0x12')](_0xdbac('0xe'),auth[_0xdbac('0xa')](),controller[_0xdbac('0x13')]);module[_0xdbac('0x14')]=router;
\ No newline at end of file
+var _0x0c02=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','index','/:id','show','post','delete','destroy','util','path','express','Router'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x20c0('0x0'));var path=require(_0x20c0('0x1'));var timeout=require('connect-timeout');var express=require(_0x20c0('0x2'));var router=express[_0x20c0('0x3')]();var fs_extra=require(_0x20c0('0x4'));var auth=require(_0x20c0('0x5'));var interaction=require(_0x20c0('0x6'));var config=require(_0x20c0('0x7'));var controller=require(_0x20c0('0x8'));router[_0x20c0('0x9')]('/',auth[_0x20c0('0xa')](),controller[_0x20c0('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x20c0('0x9')](_0x20c0('0xc'),auth[_0x20c0('0xa')](),controller[_0x20c0('0xd')]);router[_0x20c0('0xe')]('/',auth[_0x20c0('0xa')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x20c0('0xf')](_0x20c0('0xc'),auth[_0x20c0('0xa')](),controller[_0x20c0('0x10')]);module['exports']=router;
\ No newline at end of file
index ee0bd5d..755fb9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x22868f,_0x450f48){var _0x97bc75=function(_0x447cb4){while(--_0x447cb4){_0x22868f['push'](_0x22868f['shift']());}};_0x97bc75(++_0x450f48);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2b7d32,_0x3064a1){_0x2b7d32=_0x2b7d32-0x0;var _0x2b47ef=_0xb43b[_0x2b7d32];return _0x2b47ef;};'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
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x25ab51,_0x4f84f5){var _0x3b4aa0=function(_0x23dd86){while(--_0x23dd86){_0x25ab51['push'](_0x25ab51['shift']());}};_0x3b4aa0(++_0x4f84f5);}(_0x34e8,0x12c));var _0x834e=function(_0x422795,_0x1dd264){_0x422795=_0x422795-0x0;var _0x44ff8d=_0x34e8[_0x422795];return _0x44ff8d;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index 667d48d..6d63489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe17=['filter','merge','type','VIRTUAL','options','SmsTransferReport','includeAll','include','rows','catch','show','params','keys','length','find','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','reject','update','destroy','then','error','name','send','index','map','rawAttributes','fieldName','key','query','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x1bb47b,_0x54e02e){var _0x566418=function(_0x4ceb66){while(--_0x4ceb66){_0x1bb47b['push'](_0x1bb47b['shift']());}};_0x566418(++_0x54e02e);}(_0xbe17,0x146));var _0x7be1=function(_0x294880,_0xa34ef1){_0x294880=_0x294880-0x0;var _0x23dbe1=_0xbe17[_0x294880];return _0x23dbe1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7be1('0x0'));var zipdir=require(_0x7be1('0x1'));var jsonpatch=require(_0x7be1('0x2'));var rp=require(_0x7be1('0x3'));var moment=require(_0x7be1('0x4'));var BPromise=require(_0x7be1('0x5'));var Mustache=require(_0x7be1('0x6'));var util=require('util');var path=require(_0x7be1('0x7'));var sox=require(_0x7be1('0x8'));var csv=require(_0x7be1('0x9'));var ejs=require(_0x7be1('0xa'));var fs=require('fs');var fs_extra=require(_0x7be1('0xb'));var _=require(_0x7be1('0xc'));var squel=require(_0x7be1('0xd'));var crypto=require(_0x7be1('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7be1('0xf'));var toCsv=require(_0x7be1('0x9'));var querystring=require('querystring');var Papa=require(_0x7be1('0x10'));var Redis=require(_0x7be1('0x11'));var authService=require(_0x7be1('0x12'));var qs=require(_0x7be1('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7be1('0x14'))(_0x7be1('0x15'));var utils=require(_0x7be1('0x16'));var config=require(_0x7be1('0x17'));var licenseUtil=require(_0x7be1('0x18'));var db=require(_0x7be1('0x19'))['db'];function respondWithStatusCode(_0x1be8a3,_0x30a38e){_0x30a38e=_0x30a38e||0xcc;return function(_0x2a39a8){if(_0x2a39a8){return _0x1be8a3[_0x7be1('0x1a')](_0x30a38e);}return _0x1be8a3[_0x7be1('0x1b')](_0x30a38e)[_0x7be1('0x1c')]();};}function respondWithResult(_0x272d9f,_0x10bcd9){_0x10bcd9=_0x10bcd9||0xc8;return function(_0x32e4b0){if(_0x32e4b0){return _0x272d9f[_0x7be1('0x1b')](_0x10bcd9)['json'](_0x32e4b0);}};}function respondWithFilteredResult(_0x275296,_0x3eb11c){return function(_0x34587f){if(_0x34587f){var _0xd2b778=typeof _0x3eb11c['offset']===_0x7be1('0x1d')&&typeof _0x3eb11c[_0x7be1('0x1e')]===_0x7be1('0x1d');var _0x530be1=_0x34587f[_0x7be1('0x1f')];var _0x531b6a=_0xd2b778?0x0:_0x3eb11c[_0x7be1('0x20')];var _0x5b8f2c=_0xd2b778?_0x34587f[_0x7be1('0x1f')]:_0x3eb11c['offset']+_0x3eb11c[_0x7be1('0x1e')];var _0xb7e1cf;if(_0x5b8f2c>=_0x530be1){_0x5b8f2c=_0x530be1;_0xb7e1cf=0xc8;}else{_0xb7e1cf=0xce;}_0x275296[_0x7be1('0x1b')](_0xb7e1cf);return _0x275296[_0x7be1('0x21')]('Content-Range',_0x531b6a+'-'+_0x5b8f2c+'/'+_0x530be1)[_0x7be1('0x22')](_0x34587f);}return null;};}function patchUpdates(_0x18c69f){return function(_0x407c61){try{jsonpatch['apply'](_0x407c61,_0x18c69f,!![]);}catch(_0x4d5bee){return BPromise[_0x7be1('0x23')](_0x4d5bee);}return _0x407c61['save']();};}function saveUpdates(_0xb20587,_0x3b3959){return function(_0x5c33ea){if(_0x5c33ea){return _0x5c33ea[_0x7be1('0x24')](_0xb20587)['then'](function(_0x8409aa){return _0x8409aa;});}return null;};}function removeEntity(_0x1666e2,_0x51f86b){return function(_0x3e4a75){if(_0x3e4a75){return _0x3e4a75[_0x7be1('0x25')]()[_0x7be1('0x26')](function(){_0x1666e2[_0x7be1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c7ba7,_0x15ab0e){return function(_0x13836f){if(!_0x13836f){_0x1c7ba7[_0x7be1('0x1a')](0x194);}return _0x13836f;};}function handleError(_0x5ef6f4,_0xd0b096){_0xd0b096=_0xd0b096||0x1f4;return function(_0x310150){logger[_0x7be1('0x27')](_0x310150['stack']);if(_0x310150[_0x7be1('0x28')]){delete _0x310150[_0x7be1('0x28')];}_0x5ef6f4[_0x7be1('0x1b')](_0xd0b096)[_0x7be1('0x29')](_0x310150);};}exports[_0x7be1('0x2a')]=function(_0x3e191e,_0x285ac0){var _0xb8df1={},_0x3dde88={},_0x1063f1={'count':0x0,'rows':[]};var _0x5935a4=_[_0x7be1('0x2b')](db['SmsTransferReport'][_0x7be1('0x2c')],function(_0x5b20f2){return{'name':_0x5b20f2[_0x7be1('0x2d')],'type':_0x5b20f2['type'][_0x7be1('0x2e')]};});_0x3dde88['model']=_[_0x7be1('0x2b')](_0x5935a4,_0x7be1('0x28'));_0x3dde88[_0x7be1('0x2f')]=_['keys'](_0x3e191e[_0x7be1('0x2f')]);_0x3dde88[_0x7be1('0x30')]=_['intersection'](_0x3dde88[_0x7be1('0x31')],_0x3dde88[_0x7be1('0x2f')]);_0xb8df1['attributes']=_[_0x7be1('0x32')](_0x3dde88['model'],qs['fields'](_0x3e191e[_0x7be1('0x2f')][_0x7be1('0x33')]));_0xb8df1[_0x7be1('0x34')]=_0xb8df1[_0x7be1('0x34')]['length']?_0xb8df1[_0x7be1('0x34')]:_0x3dde88[_0x7be1('0x31')];if(!_0x3e191e['query'][_0x7be1('0x35')](_0x7be1('0x36'))){_0xb8df1[_0x7be1('0x1e')]=qs[_0x7be1('0x1e')](_0x3e191e[_0x7be1('0x2f')][_0x7be1('0x1e')]);_0xb8df1[_0x7be1('0x20')]=qs[_0x7be1('0x20')](_0x3e191e[_0x7be1('0x2f')][_0x7be1('0x20')]);}_0xb8df1[_0x7be1('0x37')]=qs[_0x7be1('0x38')](_0x3e191e[_0x7be1('0x2f')][_0x7be1('0x38')]);_0xb8df1[_0x7be1('0x39')]=qs[_0x7be1('0x30')](_[_0x7be1('0x3a')](_0x3e191e['query'],_0x3dde88[_0x7be1('0x30')]),_0x5935a4);if(_0x3e191e[_0x7be1('0x2f')][_0x7be1('0x3b')]){_0xb8df1['where']=_[_0x7be1('0x3c')](_0xb8df1[_0x7be1('0x39')],{'$or':_[_0x7be1('0x2b')](_0x5935a4,function(_0x2f84b2){if(_0x2f84b2[_0x7be1('0x3d')]!==_0x7be1('0x3e')){var _0x590924={};_0x590924[_0x2f84b2['name']]={'$like':'%'+_0x3e191e[_0x7be1('0x2f')]['filter']+'%'};return _0x590924;}})});}_0xb8df1=_[_0x7be1('0x3c')]({},_0xb8df1,_0x3e191e[_0x7be1('0x3f')]);var _0x3ac826={'where':_0xb8df1[_0x7be1('0x39')]};return db[_0x7be1('0x40')][_0x7be1('0x1f')](_0x3ac826)[_0x7be1('0x26')](function(_0x324a2e){_0x1063f1[_0x7be1('0x1f')]=_0x324a2e;if(_0x3e191e[_0x7be1('0x2f')][_0x7be1('0x41')]){_0xb8df1[_0x7be1('0x42')]=[{'all':!![]}];}return db[_0x7be1('0x40')]['findAll'](_0xb8df1);})['then'](function(_0x4dfa42){_0x1063f1[_0x7be1('0x43')]=_0x4dfa42;return _0x1063f1;})['then'](respondWithFilteredResult(_0x285ac0,_0xb8df1))[_0x7be1('0x44')](handleError(_0x285ac0,null));};exports[_0x7be1('0x45')]=function(_0x9945ec,_0x33171a){var _0x4aa2cc={'raw':!![],'where':{'id':_0x9945ec[_0x7be1('0x46')]['id']}},_0x3efb28={};_0x3efb28[_0x7be1('0x31')]=_['keys'](db[_0x7be1('0x40')][_0x7be1('0x2c')]);_0x3efb28[_0x7be1('0x2f')]=_[_0x7be1('0x47')](_0x9945ec[_0x7be1('0x2f')]);_0x3efb28[_0x7be1('0x30')]=_[_0x7be1('0x32')](_0x3efb28[_0x7be1('0x31')],_0x3efb28[_0x7be1('0x2f')]);_0x4aa2cc[_0x7be1('0x34')]=_[_0x7be1('0x32')](_0x3efb28[_0x7be1('0x31')],qs[_0x7be1('0x33')](_0x9945ec['query']['fields']));_0x4aa2cc[_0x7be1('0x34')]=_0x4aa2cc[_0x7be1('0x34')][_0x7be1('0x48')]?_0x4aa2cc[_0x7be1('0x34')]:_0x3efb28[_0x7be1('0x31')];if(_0x9945ec[_0x7be1('0x2f')][_0x7be1('0x41')]){_0x4aa2cc[_0x7be1('0x42')]=[{'all':!![]}];}_0x4aa2cc=_[_0x7be1('0x3c')]({},_0x4aa2cc,_0x9945ec[_0x7be1('0x3f')]);return db[_0x7be1('0x40')][_0x7be1('0x49')](_0x4aa2cc)[_0x7be1('0x26')](handleEntityNotFound(_0x33171a,null))[_0x7be1('0x26')](respondWithResult(_0x33171a,null))[_0x7be1('0x44')](handleError(_0x33171a,null));};exports[_0x7be1('0x4a')]=function(_0x18a3da,_0x5efd7b){return db[_0x7be1('0x40')][_0x7be1('0x4a')](_0x18a3da[_0x7be1('0x4b')],{})[_0x7be1('0x26')](respondWithResult(_0x5efd7b,0xc9))[_0x7be1('0x44')](handleError(_0x5efd7b,null));};exports[_0x7be1('0x24')]=function(_0x307694,_0x5a50d3){if(_0x307694[_0x7be1('0x4b')]['id']){delete _0x307694[_0x7be1('0x4b')]['id'];}return db[_0x7be1('0x40')][_0x7be1('0x49')]({'where':{'id':_0x307694[_0x7be1('0x46')]['id']}})[_0x7be1('0x26')](handleEntityNotFound(_0x5a50d3,null))[_0x7be1('0x26')](saveUpdates(_0x307694[_0x7be1('0x4b')],null))[_0x7be1('0x26')](respondWithResult(_0x5a50d3,null))[_0x7be1('0x44')](handleError(_0x5a50d3,null));};exports[_0x7be1('0x25')]=function(_0x423c0e,_0x29ff51){return db[_0x7be1('0x40')][_0x7be1('0x49')]({'where':{'id':_0x423c0e[_0x7be1('0x46')]['id']}})[_0x7be1('0x26')](handleEntityNotFound(_0x29ff51,null))[_0x7be1('0x26')](removeEntity(_0x29ff51,null))['catch'](handleError(_0x29ff51,null));};exports[_0x7be1('0x4c')]=function(_0x569aba,_0x20f1f6){return db[_0x7be1('0x40')]['describe']()['then'](respondWithResult(_0x20f1f6,null))[_0x7be1('0x44')](handleError(_0x20f1f6,null));};
\ No newline at end of file
+var _0x67c7=['merge','filter','options','includeAll','include','rows','catch','params','fields','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','index','map','SmsTransferReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x28cdfb,_0x4c825d){var _0x428edc=function(_0x4d230d){while(--_0x4d230d){_0x28cdfb['push'](_0x28cdfb['shift']());}};_0x428edc(++_0x4c825d);}(_0x67c7,0x95));var _0x767c=function(_0x296754,_0x5befe9){_0x296754=_0x296754-0x0;var _0x1d9f1d=_0x67c7[_0x296754];return _0x1d9f1d;};'use strict';var emlformat=require(_0x767c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x767c('0x1'));var jsonpatch=require(_0x767c('0x2'));var rp=require('request-promise');var moment=require(_0x767c('0x3'));var BPromise=require(_0x767c('0x4'));var Mustache=require('mustache');var util=require(_0x767c('0x5'));var path=require('path');var sox=require(_0x767c('0x6'));var csv=require(_0x767c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x767c('0x8'));var _=require(_0x767c('0x9'));var squel=require(_0x767c('0xa'));var crypto=require(_0x767c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x767c('0xc'));var toCsv=require(_0x767c('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x767c('0xd'));var authService=require(_0x767c('0xe'));var qs=require(_0x767c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x767c('0x10'))(_0x767c('0x11'));var utils=require(_0x767c('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x767c('0x13'));var db=require(_0x767c('0x14'))['db'];function respondWithStatusCode(_0x1a9a04,_0x419e9a){_0x419e9a=_0x419e9a||0xcc;return function(_0x59f84a){if(_0x59f84a){return _0x1a9a04[_0x767c('0x15')](_0x419e9a);}return _0x1a9a04[_0x767c('0x16')](_0x419e9a)[_0x767c('0x17')]();};}function respondWithResult(_0x364fa8,_0x40b7dc){_0x40b7dc=_0x40b7dc||0xc8;return function(_0x48d1fe){if(_0x48d1fe){return _0x364fa8['status'](_0x40b7dc)[_0x767c('0x18')](_0x48d1fe);}};}function respondWithFilteredResult(_0x483b15,_0x1ceb1f){return function(_0x45e733){if(_0x45e733){var _0x2d83b0=typeof _0x1ceb1f[_0x767c('0x19')]===_0x767c('0x1a')&&typeof _0x1ceb1f[_0x767c('0x1b')]===_0x767c('0x1a');var _0x2ab497=_0x45e733['count'];var _0x3a4741=_0x2d83b0?0x0:_0x1ceb1f[_0x767c('0x19')];var _0x4e20d0=_0x2d83b0?_0x45e733[_0x767c('0x1c')]:_0x1ceb1f['offset']+_0x1ceb1f[_0x767c('0x1b')];var _0x4043f9;if(_0x4e20d0>=_0x2ab497){_0x4e20d0=_0x2ab497;_0x4043f9=0xc8;}else{_0x4043f9=0xce;}_0x483b15[_0x767c('0x16')](_0x4043f9);return _0x483b15[_0x767c('0x1d')](_0x767c('0x1e'),_0x3a4741+'-'+_0x4e20d0+'/'+_0x2ab497)[_0x767c('0x18')](_0x45e733);}return null;};}function patchUpdates(_0x56778c){return function(_0x11e9bc){try{jsonpatch[_0x767c('0x1f')](_0x11e9bc,_0x56778c,!![]);}catch(_0x5d99eb){return BPromise[_0x767c('0x20')](_0x5d99eb);}return _0x11e9bc[_0x767c('0x21')]();};}function saveUpdates(_0x4c86e2,_0x105714){return function(_0x5dda12){if(_0x5dda12){return _0x5dda12[_0x767c('0x22')](_0x4c86e2)['then'](function(_0x4e7979){return _0x4e7979;});}return null;};}function removeEntity(_0x14eb86,_0x2a616a){return function(_0x16927f){if(_0x16927f){return _0x16927f[_0x767c('0x23')]()[_0x767c('0x24')](function(){_0x14eb86[_0x767c('0x16')](0xcc)[_0x767c('0x17')]();});}};}function handleEntityNotFound(_0x327441,_0x5472e2){return function(_0x42cc01){if(!_0x42cc01){_0x327441['sendStatus'](0x194);}return _0x42cc01;};}function handleError(_0x3c249d,_0x23f8d2){_0x23f8d2=_0x23f8d2||0x1f4;return function(_0x5d7bc4){logger['error'](_0x5d7bc4['stack']);if(_0x5d7bc4[_0x767c('0x25')]){delete _0x5d7bc4[_0x767c('0x25')];}_0x3c249d[_0x767c('0x16')](_0x23f8d2)['send'](_0x5d7bc4);};}exports[_0x767c('0x26')]=function(_0x572a47,_0x5de81b){var _0x208e92={},_0x4c3630={},_0x2e0cb7={'count':0x0,'rows':[]};var _0x58f95d=_[_0x767c('0x27')](db[_0x767c('0x28')][_0x767c('0x29')],function(_0x464816){return{'name':_0x464816['fieldName'],'type':_0x464816[_0x767c('0x2a')]['key']};});_0x4c3630[_0x767c('0x2b')]=_[_0x767c('0x27')](_0x58f95d,_0x767c('0x25'));_0x4c3630[_0x767c('0x2c')]=_[_0x767c('0x2d')](_0x572a47['query']);_0x4c3630[_0x767c('0x2e')]=_[_0x767c('0x2f')](_0x4c3630[_0x767c('0x2b')],_0x4c3630[_0x767c('0x2c')]);_0x208e92[_0x767c('0x30')]=_['intersection'](_0x4c3630[_0x767c('0x2b')],qs['fields'](_0x572a47[_0x767c('0x2c')]['fields']));_0x208e92[_0x767c('0x30')]=_0x208e92[_0x767c('0x30')][_0x767c('0x31')]?_0x208e92[_0x767c('0x30')]:_0x4c3630[_0x767c('0x2b')];if(!_0x572a47[_0x767c('0x2c')][_0x767c('0x32')](_0x767c('0x33'))){_0x208e92[_0x767c('0x1b')]=qs['limit'](_0x572a47[_0x767c('0x2c')][_0x767c('0x1b')]);_0x208e92[_0x767c('0x19')]=qs[_0x767c('0x19')](_0x572a47['query'][_0x767c('0x19')]);}_0x208e92['order']=qs['sort'](_0x572a47[_0x767c('0x2c')][_0x767c('0x34')]);_0x208e92[_0x767c('0x35')]=qs[_0x767c('0x2e')](_[_0x767c('0x36')](_0x572a47[_0x767c('0x2c')],_0x4c3630['filters']),_0x58f95d);if(_0x572a47[_0x767c('0x2c')]['filter']){_0x208e92[_0x767c('0x35')]=_[_0x767c('0x37')](_0x208e92[_0x767c('0x35')],{'$or':_['map'](_0x58f95d,function(_0x219cee){if(_0x219cee['type']!=='VIRTUAL'){var _0x185659={};_0x185659[_0x219cee[_0x767c('0x25')]]={'$like':'%'+_0x572a47['query'][_0x767c('0x38')]+'%'};return _0x185659;}})});}_0x208e92=_[_0x767c('0x37')]({},_0x208e92,_0x572a47[_0x767c('0x39')]);var _0x518455={'where':_0x208e92['where']};return db['SmsTransferReport'][_0x767c('0x1c')](_0x518455)[_0x767c('0x24')](function(_0x40bea8){_0x2e0cb7[_0x767c('0x1c')]=_0x40bea8;if(_0x572a47[_0x767c('0x2c')][_0x767c('0x3a')]){_0x208e92[_0x767c('0x3b')]=[{'all':!![]}];}return db[_0x767c('0x28')]['findAll'](_0x208e92);})[_0x767c('0x24')](function(_0x233aa4){_0x2e0cb7[_0x767c('0x3c')]=_0x233aa4;return _0x2e0cb7;})[_0x767c('0x24')](respondWithFilteredResult(_0x5de81b,_0x208e92))[_0x767c('0x3d')](handleError(_0x5de81b,null));};exports['show']=function(_0x2981aa,_0x268ee4){var _0xb4c957={'raw':!![],'where':{'id':_0x2981aa[_0x767c('0x3e')]['id']}},_0x9f1f9a={};_0x9f1f9a['model']=_[_0x767c('0x2d')](db[_0x767c('0x28')]['rawAttributes']);_0x9f1f9a[_0x767c('0x2c')]=_['keys'](_0x2981aa[_0x767c('0x2c')]);_0x9f1f9a[_0x767c('0x2e')]=_['intersection'](_0x9f1f9a['model'],_0x9f1f9a[_0x767c('0x2c')]);_0xb4c957[_0x767c('0x30')]=_[_0x767c('0x2f')](_0x9f1f9a[_0x767c('0x2b')],qs[_0x767c('0x3f')](_0x2981aa['query'][_0x767c('0x3f')]));_0xb4c957[_0x767c('0x30')]=_0xb4c957[_0x767c('0x30')]['length']?_0xb4c957[_0x767c('0x30')]:_0x9f1f9a[_0x767c('0x2b')];if(_0x2981aa[_0x767c('0x2c')][_0x767c('0x3a')]){_0xb4c957[_0x767c('0x3b')]=[{'all':!![]}];}_0xb4c957=_[_0x767c('0x37')]({},_0xb4c957,_0x2981aa[_0x767c('0x39')]);return db[_0x767c('0x28')][_0x767c('0x40')](_0xb4c957)[_0x767c('0x24')](handleEntityNotFound(_0x268ee4,null))[_0x767c('0x24')](respondWithResult(_0x268ee4,null))[_0x767c('0x3d')](handleError(_0x268ee4,null));};exports[_0x767c('0x41')]=function(_0x139572,_0x296069){return db['SmsTransferReport'][_0x767c('0x41')](_0x139572['body'],{})[_0x767c('0x24')](respondWithResult(_0x296069,0xc9))[_0x767c('0x3d')](handleError(_0x296069,null));};exports[_0x767c('0x22')]=function(_0x3cdb8e,_0x232406){if(_0x3cdb8e[_0x767c('0x42')]['id']){delete _0x3cdb8e[_0x767c('0x42')]['id'];}return db['SmsTransferReport'][_0x767c('0x40')]({'where':{'id':_0x3cdb8e[_0x767c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x232406,null))[_0x767c('0x24')](saveUpdates(_0x3cdb8e[_0x767c('0x42')],null))[_0x767c('0x24')](respondWithResult(_0x232406,null))['catch'](handleError(_0x232406,null));};exports[_0x767c('0x23')]=function(_0x1bfa58,_0x281deb){return db[_0x767c('0x28')][_0x767c('0x40')]({'where':{'id':_0x1bfa58[_0x767c('0x3e')]['id']}})[_0x767c('0x24')](handleEntityNotFound(_0x281deb,null))['then'](removeEntity(_0x281deb,null))[_0x767c('0x3d')](handleError(_0x281deb,null));};exports[_0x767c('0x43')]=function(_0x508012,_0x2958a3){return db[_0x767c('0x28')][_0x767c('0x43')]()[_0x767c('0x24')](respondWithResult(_0x2958a3,null))[_0x767c('0x3d')](handleError(_0x2958a3,null));};
\ No newline at end of file
index 8efd576..319eed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55fd=['util','../../config/logger','api','bluebird','request-promise','rimraf','./smsTransferReport.attributes','exports','define','report_sms_transfer','uniqueid','lodash'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x55fd,0xbf));var _0xd55f=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0x55fd[_0x54d4fe];return _0x1ab5bb;};'use strict';var _=require(_0xd55f('0x0'));var util=require(_0xd55f('0x1'));var logger=require(_0xd55f('0x2'))(_0xd55f('0x3'));var moment=require('moment');var BPromise=require(_0xd55f('0x4'));var rp=require(_0xd55f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd55f('0x6'));var config=require('../../config/environment');var attributes=require(_0xd55f('0x7'));module[_0xd55f('0x8')]=function(_0x26982d,_0x242227){return _0x26982d[_0xd55f('0x9')]('SmsTransferReport',attributes,{'tableName':_0xd55f('0xa'),'paranoid':![],'indexes':[{'name':_0xd55f('0xb'),'fields':[_0xd55f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7dfc=['./smsTransferReport.attributes','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x7dfc,0x19b));var _0xc7df=function(_0x576b27,_0x4e4822){_0x576b27=_0x576b27-0x0;var _0x3e806d=_0x7dfc[_0x576b27];return _0x3e806d;};'use strict';var _=require(_0xc7df('0x0'));var util=require(_0xc7df('0x1'));var logger=require('../../config/logger')(_0xc7df('0x2'));var moment=require(_0xc7df('0x3'));var BPromise=require(_0xc7df('0x4'));var rp=require(_0xc7df('0x5'));var fs=require('fs');var path=require(_0xc7df('0x6'));var rimraf=require(_0xc7df('0x7'));var config=require(_0xc7df('0x8'));var attributes=require(_0xc7df('0x9'));module['exports']=function(_0x3ba6d3,_0x343fb0){return _0x3ba6d3[_0xc7df('0xa')](_0xc7df('0xb'),attributes,{'tableName':_0xc7df('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc7df('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 9e1bf11..f1e2948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe41f=['info','result','catch','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','SmsTransferReport,\x20%s,\x20%s','message'];(function(_0x2f1b37,_0x51b909){var _0x77b9ad=function(_0x360247){while(--_0x360247){_0x2f1b37['push'](_0x2f1b37['shift']());}};_0x77b9ad(++_0x51b909);}(_0xe41f,0x13e));var _0xfe41=function(_0x3c4878,_0x194421){_0x3c4878=_0x3c4878-0x0;var _0x53178c=_0xe41f[_0x3c4878];return _0x53178c;};'use strict';var _=require(_0xfe41('0x0'));var util=require(_0xfe41('0x1'));var moment=require(_0xfe41('0x2'));var BPromise=require(_0xfe41('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfe41('0x4'));var logger=require(_0xfe41('0x5'))(_0xfe41('0x6'));var config=require(_0xfe41('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfe41('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x519fb6,_0xf28c37,_0x224ed7){return new BPromise(function(_0x4f92d3,_0x224a23){return client[_0xfe41('0x9')](_0x519fb6,_0x224ed7)[_0xfe41('0xa')](function(_0x4c39e9){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0xf28c37,'request\x20sent');logger[_0xfe41('0xb')](_0xfe41('0xc'),_0xf28c37,_0xfe41('0xd'),JSON['stringify'](_0x4c39e9));if(_0x4c39e9[_0xfe41('0xe')]){if(_0x4c39e9[_0xfe41('0xe')][_0xfe41('0xf')]===0x1f4){logger['error'](_0xfe41('0x10'),_0xf28c37,_0x4c39e9[_0xfe41('0xe')]['message']);return _0x224a23(_0x4c39e9[_0xfe41('0xe')][_0xfe41('0x11')]);}logger[_0xfe41('0xe')](_0xfe41('0x10'),_0xf28c37,_0x4c39e9[_0xfe41('0xe')]['message']);return _0x4f92d3(_0x4c39e9[_0xfe41('0xe')][_0xfe41('0x11')]);}else{logger[_0xfe41('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0xf28c37,'request\x20sent');_0x4f92d3(_0x4c39e9[_0xfe41('0x13')][_0xfe41('0x11')]);}})[_0xfe41('0x14')](function(_0x199644){logger['error'](_0xfe41('0x10'),_0xf28c37,_0x199644);_0x224a23(_0x199644);});});}
\ No newline at end of file
+var _0x8d0a=['SmsTransferReport,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x34c4e9,_0x2b4d90){var _0x144dd4=function(_0x86304f){while(--_0x86304f){_0x34c4e9['push'](_0x34c4e9['shift']());}};_0x144dd4(++_0x2b4d90);}(_0x8d0a,0x65));var _0xa8d0=function(_0x13a5a4,_0x6bfd1a){_0x13a5a4=_0x13a5a4-0x0;var _0x442837=_0x8d0a[_0x13a5a4];return _0x442837;};'use strict';var _=require(_0xa8d0('0x0'));var util=require('util');var moment=require(_0xa8d0('0x1'));var BPromise=require(_0xa8d0('0x2'));var rs=require(_0xa8d0('0x3'));var fs=require('fs');var Redis=require(_0xa8d0('0x4'));var db=require(_0xa8d0('0x5'))['db'];var utils=require(_0xa8d0('0x6'));var logger=require(_0xa8d0('0x7'))(_0xa8d0('0x8'));var config=require(_0xa8d0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa8d0('0xa')][_0xa8d0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f95a7,_0x1f8b78,_0x3ee6b4){return new BPromise(function(_0x55ffc0,_0x508238){return client[_0xa8d0('0xc')](_0x1f95a7,_0x3ee6b4)[_0xa8d0('0xd')](function(_0x49e137){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x1f8b78,_0xa8d0('0xe'));logger['debug'](_0xa8d0('0xf'),_0x1f8b78,_0xa8d0('0xe'),JSON[_0xa8d0('0x10')](_0x49e137));if(_0x49e137[_0xa8d0('0x11')]){if(_0x49e137[_0xa8d0('0x11')][_0xa8d0('0x12')]===0x1f4){logger[_0xa8d0('0x11')](_0xa8d0('0x13'),_0x1f8b78,_0x49e137[_0xa8d0('0x11')][_0xa8d0('0x14')]);return _0x508238(_0x49e137[_0xa8d0('0x11')]['message']);}logger[_0xa8d0('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x1f8b78,_0x49e137['error'][_0xa8d0('0x14')]);return _0x55ffc0(_0x49e137[_0xa8d0('0x11')]['message']);}else{logger[_0xa8d0('0x15')](_0xa8d0('0x13'),_0x1f8b78,_0xa8d0('0xe'));_0x55ffc0(_0x49e137[_0xa8d0('0x16')][_0xa8d0('0x14')]);}})[_0xa8d0('0x17')](function(_0x4ef7bf){logger[_0xa8d0('0x11')](_0xa8d0('0x13'),_0x1f8b78,_0x4ef7bf);_0x508238(_0x4ef7bf);});});}
\ No newline at end of file
index e201eab..e4a98ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad1d=['path','connect-timeout','express','Router','../../components/interaction/service','./sound.controller','get','index','/:id','isAuthenticated','show','join','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','file','create','put','update','exports'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xad1d,0x180));var _0xdad1=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0xad1d[_0x1992f1];return _0x413dfe;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdad1('0x0'));var timeout=require(_0xdad1('0x1'));var express=require(_0xdad1('0x2'));var router=express[_0xdad1('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdad1('0x4'));var config=require('../../config/environment');var controller=require(_0xdad1('0x5'));router[_0xdad1('0x6')]('/',auth['isAuthenticated'](),controller[_0xdad1('0x7')]);router[_0xdad1('0x6')](_0xdad1('0x8'),auth[_0xdad1('0x9')](),controller[_0xdad1('0xa')]);router[_0xdad1('0x6')]('/:id/download',auth[_0xdad1('0x9')](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x328593,_0x40513f,_0x2f7383){_0x2f7383(null,path[_0xdad1('0xb')](config['root'],_0xdad1('0xc')));},'filename':function(_0x57281e,_0x25b879,_0x256e80){_0x25b879[_0xdad1('0xd')]=_0x25b879[_0xdad1('0xd')][_0xdad1('0xe')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x256e80(null,util[_0xdad1('0xf')](_0xdad1('0x10'),path[_0xdad1('0x11')](_0x25b879[_0xdad1('0xd')],path[_0xdad1('0x12')](_0x25b879[_0xdad1('0xd')])),Date['now'](),path[_0xdad1('0x12')](_0x25b879[_0xdad1('0xd')])));}})});router['post']('/',upload['single'](_0xdad1('0x13')),controller[_0xdad1('0x14')]);router[_0xdad1('0x15')](_0xdad1('0x8'),auth['isAuthenticated'](),controller[_0xdad1('0x16')]);router['delete'](_0xdad1('0x8'),auth['isAuthenticated'](),controller['delete']);module[_0xdad1('0x17')]=router;
\ No newline at end of file
+var _0x6a04=['format','basename','extname','now','post','single','create','put','update','delete','exports','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','originalname','replace'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x6a04,0x167));var _0x46a0=function(_0xb6ccc9,_0x31c11e){_0xb6ccc9=_0xb6ccc9-0x0;var _0x158ff7=_0x6a04[_0xb6ccc9];return _0x158ff7;};'use strict';var multer=require('multer');var util=require(_0x46a0('0x0'));var path=require('path');var timeout=require(_0x46a0('0x1'));var express=require(_0x46a0('0x2'));var router=express[_0x46a0('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x46a0('0x4'));var config=require(_0x46a0('0x5'));var controller=require('./sound.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x46a0('0x6')]);router[_0x46a0('0x7')](_0x46a0('0x8'),auth[_0x46a0('0x9')](),controller[_0x46a0('0xa')]);router[_0x46a0('0x7')](_0x46a0('0xb'),auth[_0x46a0('0x9')](),controller[_0x46a0('0xc')]);var upload=multer({'storage':multer[_0x46a0('0xd')]({'destination':function(_0x37421f,_0x2507fa,_0x358591){_0x358591(null,path[_0x46a0('0xe')](config[_0x46a0('0xf')],'server/files/sounds/original/'));},'filename':function(_0xba4231,_0x4bc5b4,_0x1bed3f){_0x4bc5b4[_0x46a0('0x10')]=_0x4bc5b4[_0x46a0('0x10')][_0x46a0('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1bed3f(null,util[_0x46a0('0x12')]('%s-%s%s',path[_0x46a0('0x13')](_0x4bc5b4[_0x46a0('0x10')],path[_0x46a0('0x14')](_0x4bc5b4[_0x46a0('0x10')])),Date[_0x46a0('0x15')](),path[_0x46a0('0x14')](_0x4bc5b4[_0x46a0('0x10')])));}})});router[_0x46a0('0x16')]('/',upload[_0x46a0('0x17')]('file'),controller[_0x46a0('0x18')]);router[_0x46a0('0x19')](_0x46a0('0x8'),auth[_0x46a0('0x9')](),controller[_0x46a0('0x1a')]);router[_0x46a0('0x1b')](_0x46a0('0x8'),auth[_0x46a0('0x9')](),controller[_0x46a0('0x1b')]);module[_0x46a0('0x1c')]=router;
\ No newline at end of file
index 5e84b5f..328e186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd5b=['BIGINT','INTEGER','exports','STRING','FLOAT'];(function(_0x442fdf,_0x83c788){var _0x29432f=function(_0x30ff4a){while(--_0x30ff4a){_0x442fdf['push'](_0x442fdf['shift']());}};_0x29432f(++_0x83c788);}(_0xbd5b,0x124));var _0xbbd5=function(_0x1709e7,_0x2ced21){_0x1709e7=_0x1709e7-0x0;var _0x402819=_0xbd5b[_0x1709e7];return _0x402819;};'use strict';var Sequelize=require('sequelize');module[_0xbbd5('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xbbd5('0x1')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0xbbd5('0x1')]},'original_format':{'type':Sequelize[_0xbbd5('0x1')]},'original_duration':{'type':Sequelize[_0xbbd5('0x2')]},'original_sampleCount':{'type':Sequelize[_0xbbd5('0x3')]},'original_channelCount':{'type':Sequelize[_0xbbd5('0x4')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0xbbd5('0x4')]},'converted_format':{'type':Sequelize[_0xbbd5('0x1')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0xbbd5('0x3')]},'converted_channelCount':{'type':Sequelize[_0xbbd5('0x4')]},'converted_bitRate':{'type':Sequelize[_0xbbd5('0x3')]},'converted_sampleRate':{'type':Sequelize[_0xbbd5('0x4')]}};
\ No newline at end of file
+var _0x47d5=['INTEGER','sequelize','STRING','name','FLOAT','BIGINT'];(function(_0xfbdff6,_0x2af690){var _0x4cb9be=function(_0x4022d8){while(--_0x4022d8){_0xfbdff6['push'](_0xfbdff6['shift']());}};_0x4cb9be(++_0x2af690);}(_0x47d5,0x1cf));var _0x547d=function(_0x181a0c,_0x57d89e){_0x181a0c=_0x181a0c-0x0;var _0x5a5bd3=_0x47d5[_0x181a0c];return _0x5a5bd3;};'use strict';var Sequelize=require(_0x547d('0x0'));module['exports']={'name':{'type':Sequelize[_0x547d('0x1')],'unique':_0x547d('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x547d('0x1')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x547d('0x1')]},'original_duration':{'type':Sequelize[_0x547d('0x3')]},'original_sampleCount':{'type':Sequelize[_0x547d('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0x547d('0x4')]},'original_sampleRate':{'type':Sequelize[_0x547d('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x547d('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x547d('0x4')]},'converted_channelCount':{'type':Sequelize[_0x547d('0x5')]},'converted_bitRate':{'type':Sequelize[_0x547d('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x547d('0x5')]}};
\ No newline at end of file
index d3fe87b..68d36cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4523=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','update','destroy','then','get','Sounds','UserProfileResource','error','stack','send','index','map','Sound','rawAttributes','fieldName','type','model','name','query','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','includeAll','include','findAll','rows','catch','show','params','merge','download','find','converted_format','existsSync','join','server/files/sounds/converted','root','format','%s.%s','save_name','create','file','originalname','extname','filename','substring','wav','server/files/sounds/original','basename','info','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','src','original_duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','0777','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','start','description','delete','original_format','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x10dcf6,_0x3c2973){var _0x1444b8=function(_0x380904){while(--_0x380904){_0x10dcf6['push'](_0x10dcf6['shift']());}};_0x1444b8(++_0x3c2973);}(_0x4523,0x163));var _0x3452=function(_0x5d5894,_0x13a21f){_0x5d5894=_0x5d5894-0x0;var _0x2ff0a6=_0x4523[_0x5d5894];return _0x2ff0a6;};'use strict';var emlformat=require(_0x3452('0x0'));var rimraf=require(_0x3452('0x1'));var zipdir=require(_0x3452('0x2'));var jsonpatch=require(_0x3452('0x3'));var rp=require(_0x3452('0x4'));var moment=require('moment');var BPromise=require(_0x3452('0x5'));var Mustache=require(_0x3452('0x6'));var util=require(_0x3452('0x7'));var path=require(_0x3452('0x8'));var sox=require(_0x3452('0x9'));var csv=require('to-csv');var ejs=require(_0x3452('0xa'));var fs=require('fs');var fs_extra=require(_0x3452('0xb'));var _=require(_0x3452('0xc'));var squel=require('squel');var crypto=require(_0x3452('0xd'));var jsforce=require(_0x3452('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3452('0xf'));var querystring=require(_0x3452('0x10'));var Papa=require('papaparse');var Redis=require(_0x3452('0x11'));var authService=require(_0x3452('0x12'));var qs=require(_0x3452('0x13'));var as=require(_0x3452('0x14'));var hardwareService=require(_0x3452('0x15'));var logger=require(_0x3452('0x16'))(_0x3452('0x17'));var utils=require(_0x3452('0x18'));var config=require(_0x3452('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x3452('0x1a'))['db'];function respondWithStatusCode(_0x55c8b2,_0x18c5da){_0x18c5da=_0x18c5da||0xcc;return function(_0xe3b6a3){if(_0xe3b6a3){return _0x55c8b2[_0x3452('0x1b')](_0x18c5da);}return _0x55c8b2[_0x3452('0x1c')](_0x18c5da)[_0x3452('0x1d')]();};}function respondWithResult(_0xf5303b,_0x58d6d4){_0x58d6d4=_0x58d6d4||0xc8;return function(_0x251967){if(_0x251967){return _0xf5303b[_0x3452('0x1c')](_0x58d6d4)[_0x3452('0x1e')](_0x251967);}};}function respondWithFilteredResult(_0x4b3bcd,_0x230426){return function(_0x334ccf){if(_0x334ccf){var _0x594feb=typeof _0x230426[_0x3452('0x1f')]==='undefined'&&typeof _0x230426[_0x3452('0x20')]==='undefined';var _0x171600=_0x334ccf[_0x3452('0x21')];var _0x14c8ff=_0x594feb?0x0:_0x230426[_0x3452('0x1f')];var _0x1e0b7c=_0x594feb?_0x334ccf[_0x3452('0x21')]:_0x230426['offset']+_0x230426[_0x3452('0x20')];var _0x44b2ce;if(_0x1e0b7c>=_0x171600){_0x1e0b7c=_0x171600;_0x44b2ce=0xc8;}else{_0x44b2ce=0xce;}_0x4b3bcd[_0x3452('0x1c')](_0x44b2ce);return _0x4b3bcd['set'](_0x3452('0x22'),_0x14c8ff+'-'+_0x1e0b7c+'/'+_0x171600)['json'](_0x334ccf);}return null;};}function patchUpdates(_0x441d14){return function(_0x2e6117){try{jsonpatch[_0x3452('0x23')](_0x2e6117,_0x441d14,!![]);}catch(_0x1dd30f){return BPromise[_0x3452('0x24')](_0x1dd30f);}return _0x2e6117['save']();};}function saveUpdates(_0x4e561f,_0x504618){return function(_0x23e71f){if(_0x23e71f){return _0x23e71f[_0x3452('0x25')](_0x4e561f)['then'](function(_0x526188){return _0x526188;});}return null;};}function removeEntity(_0x279a37,_0xeb9908){return function(_0x2e3db9){if(_0x2e3db9){return _0x2e3db9[_0x3452('0x26')]()[_0x3452('0x27')](function(){var _0x448da4=_0x2e3db9[_0x3452('0x28')]({'plain':!![]});var _0x4c1c69=_0x3452('0x29');return db[_0x3452('0x2a')][_0x3452('0x26')]({'where':{'type':_0x4c1c69,'resourceId':_0x448da4['id']}})[_0x3452('0x27')](function(){return _0x2e3db9;});})[_0x3452('0x27')](function(){_0x279a37[_0x3452('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x100611,_0x26ffa9){return function(_0x11424b){if(!_0x11424b){_0x100611[_0x3452('0x1b')](0x194);}return _0x11424b;};}function handleError(_0x295b4f,_0x44f9eb){_0x44f9eb=_0x44f9eb||0x1f4;return function(_0x1b9242){logger[_0x3452('0x2b')](_0x1b9242[_0x3452('0x2c')]);if(_0x1b9242['name']){delete _0x1b9242['name'];}_0x295b4f['status'](_0x44f9eb)[_0x3452('0x2d')](_0x1b9242);};}exports[_0x3452('0x2e')]=function(_0x4ef255,_0x47e05b){var _0x3022da={},_0x150f6f={},_0x3f72ee={'count':0x0,'rows':[]};var _0x3b3c3b=_[_0x3452('0x2f')](db[_0x3452('0x30')][_0x3452('0x31')],function(_0x1591a1){return{'name':_0x1591a1[_0x3452('0x32')],'type':_0x1591a1[_0x3452('0x33')]['key']};});_0x150f6f[_0x3452('0x34')]=_['map'](_0x3b3c3b,_0x3452('0x35'));_0x150f6f[_0x3452('0x36')]=_['keys'](_0x4ef255[_0x3452('0x36')]);_0x150f6f[_0x3452('0x37')]=_[_0x3452('0x38')](_0x150f6f[_0x3452('0x34')],_0x150f6f[_0x3452('0x36')]);_0x3022da[_0x3452('0x39')]=_[_0x3452('0x38')](_0x150f6f[_0x3452('0x34')],qs['fields'](_0x4ef255[_0x3452('0x36')][_0x3452('0x3a')]));_0x3022da[_0x3452('0x39')]=_0x3022da[_0x3452('0x39')][_0x3452('0x3b')]?_0x3022da[_0x3452('0x39')]:_0x150f6f[_0x3452('0x34')];if(!_0x4ef255[_0x3452('0x36')]['hasOwnProperty'](_0x3452('0x3c'))){_0x3022da[_0x3452('0x20')]=qs[_0x3452('0x20')](_0x4ef255[_0x3452('0x36')][_0x3452('0x20')]);_0x3022da[_0x3452('0x1f')]=qs[_0x3452('0x1f')](_0x4ef255['query']['offset']);}_0x3022da[_0x3452('0x3d')]=qs['sort'](_0x4ef255[_0x3452('0x36')]['sort']);_0x3022da[_0x3452('0x3e')]=qs[_0x3452('0x37')](_[_0x3452('0x3f')](_0x4ef255[_0x3452('0x36')],_0x150f6f[_0x3452('0x37')]),_0x3b3c3b);if(_0x4ef255['query'][_0x3452('0x40')]){_0x3022da[_0x3452('0x3e')]=_['merge'](_0x3022da[_0x3452('0x3e')],{'$or':_['map'](_0x3b3c3b,function(_0x34e32f){if(_0x34e32f['type']!=='VIRTUAL'){var _0x5e1ce9={};_0x5e1ce9[_0x34e32f['name']]={'$like':'%'+_0x4ef255[_0x3452('0x36')][_0x3452('0x40')]+'%'};return _0x5e1ce9;}})});}_0x3022da=_['merge']({},_0x3022da,_0x4ef255['options']);var _0x51eaa9={'where':_0x3022da[_0x3452('0x3e')]};return db[_0x3452('0x30')][_0x3452('0x21')](_0x51eaa9)['then'](function(_0xd2dffc){_0x3f72ee[_0x3452('0x21')]=_0xd2dffc;if(_0x4ef255[_0x3452('0x36')][_0x3452('0x41')]){_0x3022da[_0x3452('0x42')]=[{'all':!![]}];}return db['Sound'][_0x3452('0x43')](_0x3022da);})[_0x3452('0x27')](function(_0x1fb8bb){_0x3f72ee[_0x3452('0x44')]=_0x1fb8bb;return _0x3f72ee;})[_0x3452('0x27')](respondWithFilteredResult(_0x47e05b,_0x3022da))[_0x3452('0x45')](handleError(_0x47e05b,null));};exports[_0x3452('0x46')]=function(_0x546986,_0x38fe4c){var _0xa16af7={'raw':!![],'where':{'id':_0x546986[_0x3452('0x47')]['id']}},_0x27f7d2={};_0x27f7d2[_0x3452('0x34')]=_['keys'](db[_0x3452('0x30')][_0x3452('0x31')]);_0x27f7d2['query']=_['keys'](_0x546986[_0x3452('0x36')]);_0x27f7d2[_0x3452('0x37')]=_[_0x3452('0x38')](_0x27f7d2[_0x3452('0x34')],_0x27f7d2[_0x3452('0x36')]);_0xa16af7[_0x3452('0x39')]=_[_0x3452('0x38')](_0x27f7d2['model'],qs[_0x3452('0x3a')](_0x546986[_0x3452('0x36')][_0x3452('0x3a')]));_0xa16af7[_0x3452('0x39')]=_0xa16af7[_0x3452('0x39')][_0x3452('0x3b')]?_0xa16af7[_0x3452('0x39')]:_0x27f7d2['model'];if(_0x546986['query'][_0x3452('0x41')]){_0xa16af7[_0x3452('0x42')]=[{'all':!![]}];}_0xa16af7=_[_0x3452('0x48')]({},_0xa16af7,_0x546986['options']);return db[_0x3452('0x30')]['find'](_0xa16af7)[_0x3452('0x27')](handleEntityNotFound(_0x38fe4c,null))[_0x3452('0x27')](respondWithResult(_0x38fe4c,null))[_0x3452('0x45')](handleError(_0x38fe4c,null));};exports[_0x3452('0x49')]=function(_0x964593,_0x43fb95,_0x344abe){return db['Sound'][_0x3452('0x4a')]({'where':{'id':_0x964593[_0x3452('0x47')]['id']},'attributes':[_0x3452('0x35'),'save_name',_0x3452('0x4b')],'raw':!![]})[_0x3452('0x27')](handleEntityNotFound(_0x43fb95,null))[_0x3452('0x27')](function(_0xc3dadf){if(_0xc3dadf){if(!fs[_0x3452('0x4c')](path[_0x3452('0x4d')](config['root'],_0x3452('0x4e'),_0xc3dadf['save_name']+'.'+_0xc3dadf[_0x3452('0x4b')]))){throw new db['Sequelize']['ValidationError']('Sound\x20not\x20found');}return _0x43fb95[_0x3452('0x49')](path[_0x3452('0x4d')](config[_0x3452('0x4f')],'server/files/sounds/converted',util[_0x3452('0x50')](_0x3452('0x51'),_0xc3dadf[_0x3452('0x52')],_0xc3dadf[_0x3452('0x4b')])),util[_0x3452('0x50')](_0x3452('0x51'),_0xc3dadf[_0x3452('0x35')],_0xc3dadf['converted_format']));}return null;})['catch'](handleError(_0x43fb95,null));};exports[_0x3452('0x53')]=function(_0x11b07d,_0x22f7c0,_0x92e330){var _0x49abd2={'name':path['basename'](_0x11b07d[_0x3452('0x54')][_0x3452('0x55')],path[_0x3452('0x56')](_0x11b07d[_0x3452('0x54')][_0x3452('0x55')])),'save_name':path['basename'](_0x11b07d[_0x3452('0x54')]['filename'],path[_0x3452('0x56')](_0x11b07d[_0x3452('0x54')][_0x3452('0x57')])),'original_format':path['extname'](_0x11b07d['file'][_0x3452('0x55')])[_0x3452('0x58')](0x1),'converted_format':_0x3452('0x59')};var _0x5e027d=path[_0x3452('0x4d')](config[_0x3452('0x4f')],_0x3452('0x5a'),_0x11b07d[_0x3452('0x54')]['filename']);var _0x192c86=path['join'](config[_0x3452('0x4f')],_0x3452('0x4e'),util[_0x3452('0x50')](_0x3452('0x51'),path[_0x3452('0x5b')](_0x11b07d[_0x3452('0x54')][_0x3452('0x57')],path[_0x3452('0x56')](_0x11b07d['file'][_0x3452('0x57')])),_0x49abd2[_0x3452('0x4b')]));logger[_0x3452('0x5c')]('Sound\x20upload\x20filepath:\x20%s',_0x5e027d);logger[_0x3452('0x5c')](_0x3452('0x5d'),_0x192c86);try{fs[_0x3452('0x5e')](_0x5e027d,parseInt('0777',0x8));var _0x5677e5=sox[_0x3452('0x5f')](_0x5e027d,_0x192c86,{'sampleRate':0x1f40,'format':_0x3452('0x59'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5677e5['on'](_0x3452('0x2b'),function(_0xe463c7){fs['unlinkSync'](_0x5e027d);_0x22f7c0[_0x3452('0x1c')](0x1f4)[_0x3452('0x2d')](_0xe463c7);});_0x5677e5['on'](_0x3452('0x60'),function(_0x38c822){_0x49abd2[_0x3452('0x61')]=isNaN(_0x38c822['duration'])?null:_0x38c822['duration']*0x3e8;_0x49abd2[_0x3452('0x62')]=isNaN(_0x38c822['sampleCount'])?null:_0x38c822[_0x3452('0x63')];_0x49abd2[_0x3452('0x64')]=isNaN(_0x38c822[_0x3452('0x65')])?null:_0x38c822[_0x3452('0x65')];_0x49abd2[_0x3452('0x66')]=isNaN(_0x38c822[_0x3452('0x67')])?null:_0x38c822['bitRate'];_0x49abd2[_0x3452('0x68')]=isNaN(_0x38c822[_0x3452('0x69')])?null:_0x38c822[_0x3452('0x69')];});_0x5677e5['on'](_0x3452('0x6a'),function(_0x472f76){_0x49abd2[_0x3452('0x6b')]=isNaN(_0x472f76[_0x3452('0x6c')])?null:_0x472f76[_0x3452('0x6c')]*0x3e8;_0x49abd2[_0x3452('0x6d')]=isNaN(_0x472f76['sampleCount'])?null:_0x472f76[_0x3452('0x63')];_0x49abd2[_0x3452('0x6e')]=isNaN(_0x472f76['channelCount'])?null:_0x472f76[_0x3452('0x65')];_0x49abd2[_0x3452('0x6f')]=isNaN(_0x472f76['bitRate'])?null:_0x472f76['bitRate'];_0x49abd2[_0x3452('0x70')]=isNaN(_0x472f76['sampleRate'])?null:_0x472f76['sampleRate'];});_0x5677e5['on'](_0x3452('0x1d'),function(){fs[_0x3452('0x5e')](_0x192c86,parseInt(_0x3452('0x71'),0x8));return db[_0x3452('0x30')]['create'](_0x49abd2)[_0x3452('0x27')](function(_0x1a1416){var _0x591372={'role':_0x11b07d[_0x3452('0x72')][_0x3452('0x73')],'userProfileId':_0x11b07d[_0x3452('0x72')]['userProfileId']};if(!_0x591372)throw new Error(_0x3452('0x74'));if(_0x591372[_0x3452('0x73')]===_0x3452('0x75')){var _0x53540d=_0x1a1416[_0x3452('0x28')]({'plain':!![]});return db[_0x3452('0x76')][_0x3452('0x4a')]({'where':{'name':'Sounds','userProfileId':_0x591372['userProfileId']},'raw':!![]})['then'](function(_0x5a39b3){if(_0x5a39b3&&_0x5a39b3[_0x3452('0x77')]===0x0){return db[_0x3452('0x2a')][_0x3452('0x53')]({'name':_0x53540d['name'],'resourceId':_0x53540d['id'],'type':_0x5a39b3[_0x3452('0x35')],'sectionId':_0x5a39b3['id']},{})[_0x3452('0x27')](function(){return _0x1a1416;});}else{return _0x1a1416;}})[_0x3452('0x45')](function(_0x1eba23){logger[_0x3452('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1eba23);throw _0x1eba23;});}return _0x1a1416;})[_0x3452('0x27')](respondWithResult(_0x22f7c0,null))[_0x3452('0x45')](handleError(_0x22f7c0,null));});_0x5677e5[_0x3452('0x78')]();}catch(_0x199dfe){_0x22f7c0[_0x3452('0x1c')](0x1f4)[_0x3452('0x2d')](_0x199dfe);}};exports[_0x3452('0x25')]=function(_0x5c18ca,_0x472178,_0x267d4b){return db[_0x3452('0x30')][_0x3452('0x4a')]({'where':{'id':_0x5c18ca[_0x3452('0x47')]['id']}})['then'](handleEntityNotFound(_0x472178,null))['then'](saveUpdates(_['pick'](_0x5c18ca[_0x3452('0x72')],[_0x3452('0x35'),_0x3452('0x79')]),null))[_0x3452('0x27')](respondWithResult(_0x472178,null))[_0x3452('0x45')](handleError(_0x472178,null));};exports[_0x3452('0x7a')]=function(_0x5b1a1f,_0xeac66,_0x2582d4){return db['Sound']['find']({'where':{'id':_0x5b1a1f['params']['id']}})[_0x3452('0x27')](function(_0x25a333){if(_0x25a333){return _0x25a333['destroy']();}})[_0x3452('0x27')](function(_0x45daa1){var _0x45ca7d=path[_0x3452('0x4d')](config[_0x3452('0x4f')],_0x3452('0x5a'),util[_0x3452('0x50')](_0x3452('0x51'),_0x45daa1['save_name'],_0x45daa1[_0x3452('0x7b')]));var _0x421648=path[_0x3452('0x4d')](config[_0x3452('0x4f')],_0x3452('0x4e'),util[_0x3452('0x50')](_0x3452('0x51'),_0x45daa1['save_name'],_0x45daa1[_0x3452('0x4b')]));fs[_0x3452('0x7c')](_0x45ca7d);fs[_0x3452('0x7c')](_0x421648);return _0x45daa1;})['then'](function(_0x52ed5e){if(_0x52ed5e){return _0xeac66['status'](0xcc)[_0x3452('0x1d')]();}})[_0x3452('0x27')](handleEntityNotFound(_0xeac66,null))['catch'](handleError(_0xeac66,null));};
\ No newline at end of file
+var _0xa42d=['UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','description','delete','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','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','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','get','Sounds','UserProfileResource','destroy','error','stack','name','send','map','Sound','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','rawAttributes','options','download','find','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','format','%s.%s','create','file','originalname','extname','basename','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','0777','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x5944f3,_0x2120e1){var _0x26f22f=function(_0x1ab7bd){while(--_0x1ab7bd){_0x5944f3['push'](_0x5944f3['shift']());}};_0x26f22f(++_0x2120e1);}(_0xa42d,0x109));var _0xda42=function(_0x1418a4,_0x1910a3){_0x1418a4=_0x1418a4-0x0;var _0x5135fe=_0xa42d[_0x1418a4];return _0x5135fe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xda42('0x0'));var zipdir=require(_0xda42('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xda42('0x2'));var BPromise=require(_0xda42('0x3'));var Mustache=require(_0xda42('0x4'));var util=require(_0xda42('0x5'));var path=require(_0xda42('0x6'));var sox=require(_0xda42('0x7'));var csv=require('to-csv');var ejs=require(_0xda42('0x8'));var fs=require('fs');var fs_extra=require(_0xda42('0x9'));var _=require('lodash');var squel=require(_0xda42('0xa'));var crypto=require(_0xda42('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xda42('0xc'));var toCsv=require(_0xda42('0xd'));var querystring=require(_0xda42('0xe'));var Papa=require(_0xda42('0xf'));var Redis=require(_0xda42('0x10'));var authService=require(_0xda42('0x11'));var qs=require(_0xda42('0x12'));var as=require(_0xda42('0x13'));var hardwareService=require(_0xda42('0x14'));var logger=require(_0xda42('0x15'))('api');var utils=require(_0xda42('0x16'));var config=require(_0xda42('0x17'));var licenseUtil=require(_0xda42('0x18'));var db=require(_0xda42('0x19'))['db'];function respondWithStatusCode(_0x12a20f,_0x914f13){_0x914f13=_0x914f13||0xcc;return function(_0x41ff19){if(_0x41ff19){return _0x12a20f[_0xda42('0x1a')](_0x914f13);}return _0x12a20f[_0xda42('0x1b')](_0x914f13)[_0xda42('0x1c')]();};}function respondWithResult(_0x56fe9b,_0x83a090){_0x83a090=_0x83a090||0xc8;return function(_0x41dcd5){if(_0x41dcd5){return _0x56fe9b['status'](_0x83a090)[_0xda42('0x1d')](_0x41dcd5);}};}function respondWithFilteredResult(_0x26fc02,_0x57ecb5){return function(_0x123f33){if(_0x123f33){var _0x38203a=typeof _0x57ecb5[_0xda42('0x1e')]==='undefined'&&typeof _0x57ecb5[_0xda42('0x1f')]===_0xda42('0x20');var _0x58e75e=_0x123f33[_0xda42('0x21')];var _0x2bca2c=_0x38203a?0x0:_0x57ecb5[_0xda42('0x1e')];var _0x10f155=_0x38203a?_0x123f33[_0xda42('0x21')]:_0x57ecb5['offset']+_0x57ecb5[_0xda42('0x1f')];var _0x222ce7;if(_0x10f155>=_0x58e75e){_0x10f155=_0x58e75e;_0x222ce7=0xc8;}else{_0x222ce7=0xce;}_0x26fc02['status'](_0x222ce7);return _0x26fc02[_0xda42('0x22')](_0xda42('0x23'),_0x2bca2c+'-'+_0x10f155+'/'+_0x58e75e)['json'](_0x123f33);}return null;};}function patchUpdates(_0x1a3fbe){return function(_0x30959b){try{jsonpatch[_0xda42('0x24')](_0x30959b,_0x1a3fbe,!![]);}catch(_0x331389){return BPromise[_0xda42('0x25')](_0x331389);}return _0x30959b[_0xda42('0x26')]();};}function saveUpdates(_0x43304c,_0x20c1c0){return function(_0xc04c09){if(_0xc04c09){return _0xc04c09[_0xda42('0x27')](_0x43304c)[_0xda42('0x28')](function(_0x27e22f){return _0x27e22f;});}return null;};}function removeEntity(_0x417a80,_0x21b5ea){return function(_0x21b3c2){if(_0x21b3c2){return _0x21b3c2['destroy']()['then'](function(){var _0x19877e=_0x21b3c2[_0xda42('0x29')]({'plain':!![]});var _0x52d4ec=_0xda42('0x2a');return db[_0xda42('0x2b')][_0xda42('0x2c')]({'where':{'type':_0x52d4ec,'resourceId':_0x19877e['id']}})['then'](function(){return _0x21b3c2;});})[_0xda42('0x28')](function(){_0x417a80[_0xda42('0x1b')](0xcc)[_0xda42('0x1c')]();});}};}function handleEntityNotFound(_0x15cde7,_0x31d1da){return function(_0x327f84){if(!_0x327f84){_0x15cde7[_0xda42('0x1a')](0x194);}return _0x327f84;};}function handleError(_0x5eec3b,_0x52767e){_0x52767e=_0x52767e||0x1f4;return function(_0x425f2b){logger[_0xda42('0x2d')](_0x425f2b[_0xda42('0x2e')]);if(_0x425f2b['name']){delete _0x425f2b[_0xda42('0x2f')];}_0x5eec3b[_0xda42('0x1b')](_0x52767e)[_0xda42('0x30')](_0x425f2b);};}exports['index']=function(_0x28dcf3,_0x384fec){var _0x130ef0={},_0x26d4b4={},_0x1edf6f={'count':0x0,'rows':[]};var _0x17fc54=_[_0xda42('0x31')](db[_0xda42('0x32')]['rawAttributes'],function(_0x4da6ca){return{'name':_0x4da6ca[_0xda42('0x33')],'type':_0x4da6ca[_0xda42('0x34')][_0xda42('0x35')]};});_0x26d4b4['model']=_['map'](_0x17fc54,'name');_0x26d4b4[_0xda42('0x36')]=_[_0xda42('0x37')](_0x28dcf3[_0xda42('0x36')]);_0x26d4b4[_0xda42('0x38')]=_[_0xda42('0x39')](_0x26d4b4[_0xda42('0x3a')],_0x26d4b4['query']);_0x130ef0[_0xda42('0x3b')]=_[_0xda42('0x39')](_0x26d4b4[_0xda42('0x3a')],qs[_0xda42('0x3c')](_0x28dcf3[_0xda42('0x36')][_0xda42('0x3c')]));_0x130ef0[_0xda42('0x3b')]=_0x130ef0[_0xda42('0x3b')][_0xda42('0x3d')]?_0x130ef0[_0xda42('0x3b')]:_0x26d4b4[_0xda42('0x3a')];if(!_0x28dcf3[_0xda42('0x36')][_0xda42('0x3e')](_0xda42('0x3f'))){_0x130ef0['limit']=qs[_0xda42('0x1f')](_0x28dcf3[_0xda42('0x36')]['limit']);_0x130ef0['offset']=qs['offset'](_0x28dcf3[_0xda42('0x36')][_0xda42('0x1e')]);}_0x130ef0['order']=qs[_0xda42('0x40')](_0x28dcf3[_0xda42('0x36')][_0xda42('0x40')]);_0x130ef0[_0xda42('0x41')]=qs[_0xda42('0x38')](_[_0xda42('0x42')](_0x28dcf3[_0xda42('0x36')],_0x26d4b4[_0xda42('0x38')]),_0x17fc54);if(_0x28dcf3[_0xda42('0x36')][_0xda42('0x43')]){_0x130ef0['where']=_[_0xda42('0x44')](_0x130ef0[_0xda42('0x41')],{'$or':_[_0xda42('0x31')](_0x17fc54,function(_0x45dda5){if(_0x45dda5[_0xda42('0x34')]!==_0xda42('0x45')){var _0x50e6e1={};_0x50e6e1[_0x45dda5['name']]={'$like':'%'+_0x28dcf3[_0xda42('0x36')]['filter']+'%'};return _0x50e6e1;}})});}_0x130ef0=_['merge']({},_0x130ef0,_0x28dcf3['options']);var _0x4891a5={'where':_0x130ef0[_0xda42('0x41')]};return db[_0xda42('0x32')][_0xda42('0x21')](_0x4891a5)[_0xda42('0x28')](function(_0x530663){_0x1edf6f['count']=_0x530663;if(_0x28dcf3[_0xda42('0x36')][_0xda42('0x46')]){_0x130ef0[_0xda42('0x47')]=[{'all':!![]}];}return db[_0xda42('0x32')]['findAll'](_0x130ef0);})[_0xda42('0x28')](function(_0x5979d0){_0x1edf6f[_0xda42('0x48')]=_0x5979d0;return _0x1edf6f;})[_0xda42('0x28')](respondWithFilteredResult(_0x384fec,_0x130ef0))[_0xda42('0x49')](handleError(_0x384fec,null));};exports[_0xda42('0x4a')]=function(_0x5d622c,_0x1a138c){var _0x5588c0={'raw':!![],'where':{'id':_0x5d622c['params']['id']}},_0x2fe3a2={};_0x2fe3a2['model']=_[_0xda42('0x37')](db[_0xda42('0x32')][_0xda42('0x4b')]);_0x2fe3a2[_0xda42('0x36')]=_[_0xda42('0x37')](_0x5d622c[_0xda42('0x36')]);_0x2fe3a2[_0xda42('0x38')]=_[_0xda42('0x39')](_0x2fe3a2['model'],_0x2fe3a2[_0xda42('0x36')]);_0x5588c0[_0xda42('0x3b')]=_[_0xda42('0x39')](_0x2fe3a2['model'],qs['fields'](_0x5d622c['query'][_0xda42('0x3c')]));_0x5588c0[_0xda42('0x3b')]=_0x5588c0['attributes'][_0xda42('0x3d')]?_0x5588c0['attributes']:_0x2fe3a2[_0xda42('0x3a')];if(_0x5d622c[_0xda42('0x36')][_0xda42('0x46')]){_0x5588c0[_0xda42('0x47')]=[{'all':!![]}];}_0x5588c0=_[_0xda42('0x44')]({},_0x5588c0,_0x5d622c[_0xda42('0x4c')]);return db[_0xda42('0x32')]['find'](_0x5588c0)[_0xda42('0x28')](handleEntityNotFound(_0x1a138c,null))[_0xda42('0x28')](respondWithResult(_0x1a138c,null))[_0xda42('0x49')](handleError(_0x1a138c,null));};exports[_0xda42('0x4d')]=function(_0x5c7b1c,_0x56e98e,_0x5a32a2){return db['Sound'][_0xda42('0x4e')]({'where':{'id':_0x5c7b1c['params']['id']},'attributes':[_0xda42('0x2f'),_0xda42('0x4f'),_0xda42('0x50')],'raw':!![]})[_0xda42('0x28')](handleEntityNotFound(_0x56e98e,null))[_0xda42('0x28')](function(_0x1600cf){if(_0x1600cf){if(!fs[_0xda42('0x51')](path[_0xda42('0x52')](config[_0xda42('0x53')],_0xda42('0x54'),_0x1600cf['save_name']+'.'+_0x1600cf[_0xda42('0x50')]))){throw new db[(_0xda42('0x55'))][(_0xda42('0x56'))]('Sound\x20not\x20found');}return _0x56e98e[_0xda42('0x4d')](path[_0xda42('0x52')](config[_0xda42('0x53')],_0xda42('0x54'),util[_0xda42('0x57')](_0xda42('0x58'),_0x1600cf[_0xda42('0x4f')],_0x1600cf[_0xda42('0x50')])),util[_0xda42('0x57')](_0xda42('0x58'),_0x1600cf['name'],_0x1600cf[_0xda42('0x50')]));}return null;})[_0xda42('0x49')](handleError(_0x56e98e,null));};exports[_0xda42('0x59')]=function(_0x5785fc,_0x39f581,_0x2120ba){var _0x4ba59a={'name':path['basename'](_0x5785fc[_0xda42('0x5a')][_0xda42('0x5b')],path[_0xda42('0x5c')](_0x5785fc[_0xda42('0x5a')][_0xda42('0x5b')])),'save_name':path[_0xda42('0x5d')](_0x5785fc[_0xda42('0x5a')][_0xda42('0x5e')],path[_0xda42('0x5c')](_0x5785fc[_0xda42('0x5a')][_0xda42('0x5e')])),'original_format':path[_0xda42('0x5c')](_0x5785fc[_0xda42('0x5a')][_0xda42('0x5b')])[_0xda42('0x5f')](0x1),'converted_format':_0xda42('0x60')};var _0x4ff67d=path['join'](config[_0xda42('0x53')],_0xda42('0x61'),_0x5785fc[_0xda42('0x5a')]['filename']);var _0x57af91=path['join'](config[_0xda42('0x53')],_0xda42('0x54'),util[_0xda42('0x57')](_0xda42('0x58'),path[_0xda42('0x5d')](_0x5785fc[_0xda42('0x5a')]['filename'],path[_0xda42('0x5c')](_0x5785fc[_0xda42('0x5a')][_0xda42('0x5e')])),_0x4ba59a[_0xda42('0x50')]));logger[_0xda42('0x62')](_0xda42('0x63'),_0x4ff67d);logger[_0xda42('0x62')](_0xda42('0x64'),_0x57af91);try{fs[_0xda42('0x65')](_0x4ff67d,parseInt('0777',0x8));var _0x2e92a5=sox[_0xda42('0x66')](_0x4ff67d,_0x57af91,{'sampleRate':0x1f40,'format':_0xda42('0x60'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2e92a5['on'](_0xda42('0x2d'),function(_0xebd02f){fs[_0xda42('0x67')](_0x4ff67d);_0x39f581[_0xda42('0x1b')](0x1f4)[_0xda42('0x30')](_0xebd02f);});_0x2e92a5['on'](_0xda42('0x68'),function(_0x1f9e7d){_0x4ba59a[_0xda42('0x69')]=isNaN(_0x1f9e7d[_0xda42('0x6a')])?null:_0x1f9e7d['duration']*0x3e8;_0x4ba59a[_0xda42('0x6b')]=isNaN(_0x1f9e7d[_0xda42('0x6c')])?null:_0x1f9e7d['sampleCount'];_0x4ba59a[_0xda42('0x6d')]=isNaN(_0x1f9e7d[_0xda42('0x6e')])?null:_0x1f9e7d[_0xda42('0x6e')];_0x4ba59a['original_bitRate']=isNaN(_0x1f9e7d[_0xda42('0x6f')])?null:_0x1f9e7d['bitRate'];_0x4ba59a[_0xda42('0x70')]=isNaN(_0x1f9e7d['sampleRate'])?null:_0x1f9e7d[_0xda42('0x71')];});_0x2e92a5['on'](_0xda42('0x72'),function(_0x41fec5){_0x4ba59a[_0xda42('0x73')]=isNaN(_0x41fec5[_0xda42('0x6a')])?null:_0x41fec5[_0xda42('0x6a')]*0x3e8;_0x4ba59a[_0xda42('0x74')]=isNaN(_0x41fec5['sampleCount'])?null:_0x41fec5[_0xda42('0x6c')];_0x4ba59a['converted_channelCount']=isNaN(_0x41fec5[_0xda42('0x6e')])?null:_0x41fec5['channelCount'];_0x4ba59a[_0xda42('0x75')]=isNaN(_0x41fec5['bitRate'])?null:_0x41fec5[_0xda42('0x6f')];_0x4ba59a[_0xda42('0x76')]=isNaN(_0x41fec5[_0xda42('0x71')])?null:_0x41fec5['sampleRate'];});_0x2e92a5['on'](_0xda42('0x1c'),function(){fs[_0xda42('0x65')](_0x57af91,parseInt(_0xda42('0x77'),0x8));return db[_0xda42('0x32')][_0xda42('0x59')](_0x4ba59a)['then'](function(_0x2ced10){var _0x4281f8={'role':_0x5785fc['body'][_0xda42('0x78')],'userProfileId':_0x5785fc[_0xda42('0x79')][_0xda42('0x7a')]};if(!_0x4281f8)throw new Error(_0xda42('0x7b'));if(_0x4281f8[_0xda42('0x78')]===_0xda42('0x7c')){var _0x306846=_0x2ced10[_0xda42('0x29')]({'plain':!![]});return db[_0xda42('0x7d')]['find']({'where':{'name':'Sounds','userProfileId':_0x4281f8[_0xda42('0x7a')]},'raw':!![]})['then'](function(_0xc545a4){if(_0xc545a4&&_0xc545a4['autoAssociation']===0x0){return db['UserProfileResource'][_0xda42('0x59')]({'name':_0x306846[_0xda42('0x2f')],'resourceId':_0x306846['id'],'type':_0xc545a4[_0xda42('0x2f')],'sectionId':_0xc545a4['id']},{})['then'](function(){return _0x2ced10;});}else{return _0x2ced10;}})[_0xda42('0x49')](function(_0xb88fee){logger['error'](_0xda42('0x7e'),_0xb88fee);throw _0xb88fee;});}return _0x2ced10;})[_0xda42('0x28')](respondWithResult(_0x39f581,null))[_0xda42('0x49')](handleError(_0x39f581,null));});_0x2e92a5['start']();}catch(_0x539c40){_0x39f581[_0xda42('0x1b')](0x1f4)[_0xda42('0x30')](_0x539c40);}};exports[_0xda42('0x27')]=function(_0x28eee2,_0x1588f3,_0x1ae050){return db[_0xda42('0x32')][_0xda42('0x4e')]({'where':{'id':_0x28eee2[_0xda42('0x7f')]['id']}})[_0xda42('0x28')](handleEntityNotFound(_0x1588f3,null))[_0xda42('0x28')](saveUpdates(_['pick'](_0x28eee2[_0xda42('0x79')],[_0xda42('0x2f'),_0xda42('0x80')]),null))['then'](respondWithResult(_0x1588f3,null))[_0xda42('0x49')](handleError(_0x1588f3,null));};exports[_0xda42('0x81')]=function(_0xb08a01,_0x21f2e4,_0x27af13){return db[_0xda42('0x32')][_0xda42('0x4e')]({'where':{'id':_0xb08a01['params']['id']}})[_0xda42('0x28')](function(_0x4e2b02){if(_0x4e2b02){return _0x4e2b02[_0xda42('0x2c')]();}})[_0xda42('0x28')](function(_0x10d1fd){var _0xd0a0a2=path['join'](config['root'],'server/files/sounds/original',util[_0xda42('0x57')](_0xda42('0x58'),_0x10d1fd[_0xda42('0x4f')],_0x10d1fd['original_format']));var _0x306f0d=path['join'](config[_0xda42('0x53')],_0xda42('0x54'),util[_0xda42('0x57')](_0xda42('0x58'),_0x10d1fd[_0xda42('0x4f')],_0x10d1fd['converted_format']));fs[_0xda42('0x67')](_0xd0a0a2);fs[_0xda42('0x67')](_0x306f0d);return _0x10d1fd;})[_0xda42('0x28')](function(_0x573b95){if(_0x573b95){return _0x21f2e4[_0xda42('0x1b')](0xcc)[_0xda42('0x1c')]();}})[_0xda42('0x28')](handleEntityNotFound(_0x21f2e4,null))[_0xda42('0x49')](handleError(_0x21f2e4,null));};
\ No newline at end of file
index 073f0d4..f4ab80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x711c=['bluebird','../../config/environment','./sound.attributes','Sound','tools_sounds','util','../../config/logger','api','moment'];(function(_0x49093c,_0x2b7075){var _0x27fb5=function(_0x236ce1){while(--_0x236ce1){_0x49093c['push'](_0x49093c['shift']());}};_0x27fb5(++_0x2b7075);}(_0x711c,0x8c));var _0xc711=function(_0x31c421,_0x305720){_0x31c421=_0x31c421-0x0;var _0x403e17=_0x711c[_0x31c421];return _0x403e17;};'use strict';var _=require('lodash');var util=require(_0xc711('0x0'));var logger=require(_0xc711('0x1'))(_0xc711('0x2'));var moment=require(_0xc711('0x3'));var BPromise=require(_0xc711('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc711('0x5'));var attributes=require(_0xc711('0x6'));module['exports']=function(_0x45bd50,_0x4d139a){return _0x45bd50['define'](_0xc711('0x7'),attributes,{'tableName':_0xc711('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2fa2=['moment','bluebird','request-promise','path','rimraf','./sound.attributes','exports','define','tools_sounds','util','../../config/logger','api'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2fa2,0x165));var _0x22fa=function(_0x323419,_0x2a6172){_0x323419=_0x323419-0x0;var _0x4c0be7=_0x2fa2[_0x323419];return _0x4c0be7;};'use strict';var _=require('lodash');var util=require(_0x22fa('0x0'));var logger=require(_0x22fa('0x1'))(_0x22fa('0x2'));var moment=require(_0x22fa('0x3'));var BPromise=require(_0x22fa('0x4'));var rp=require(_0x22fa('0x5'));var fs=require('fs');var path=require(_0x22fa('0x6'));var rimraf=require(_0x22fa('0x7'));var config=require('../../config/environment');var attributes=require(_0x22fa('0x8'));module[_0x22fa('0x9')]=function(_0x51a2f4,_0x5acbd5){return _0x51a2f4[_0x22fa('0xa')]('Sound',attributes,{'tableName':_0x22fa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22a961e..ab5405c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3ec=['message','result','catch','Sound','options','raw','where','attributes','include','map','model','ShowSound','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','then','info','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x5b6604,_0x22cc92){var _0x1f3f06=function(_0xb703e9){while(--_0xb703e9){_0x5b6604['push'](_0x5b6604['shift']());}};_0x1f3f06(++_0x22cc92);}(_0xf3ec,0x138));var _0xcf3e=function(_0xe3984f,_0x4aae9b){_0xe3984f=_0xe3984f-0x0;var _0x1cfa6d=_0xf3ec[_0xe3984f];return _0x1cfa6d;};'use strict';var _=require(_0xcf3e('0x0'));var util=require(_0xcf3e('0x1'));var moment=require(_0xcf3e('0x2'));var BPromise=require(_0xcf3e('0x3'));var rs=require(_0xcf3e('0x4'));var fs=require('fs');var Redis=require(_0xcf3e('0x5'));var db=require(_0xcf3e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xcf3e('0x7'))(_0xcf3e('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xcf3e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f4600,_0x56ed25,_0x580410){return new BPromise(function(_0x44e091,_0x32b1fd){return client['request'](_0x4f4600,_0x580410)[_0xcf3e('0xa')](function(_0x2ebd8b){logger[_0xcf3e('0xb')](_0xcf3e('0xc'),_0x56ed25,'request\x20sent');logger[_0xcf3e('0xd')](_0xcf3e('0xe'),_0x56ed25,_0xcf3e('0xf'),JSON[_0xcf3e('0x10')](_0x2ebd8b));if(_0x2ebd8b[_0xcf3e('0x11')]){if(_0x2ebd8b[_0xcf3e('0x11')]['code']===0x1f4){logger[_0xcf3e('0x11')](_0xcf3e('0xc'),_0x56ed25,_0x2ebd8b[_0xcf3e('0x11')][_0xcf3e('0x12')]);return _0x32b1fd(_0x2ebd8b[_0xcf3e('0x11')][_0xcf3e('0x12')]);}logger[_0xcf3e('0x11')]('Sound,\x20%s,\x20%s',_0x56ed25,_0x2ebd8b[_0xcf3e('0x11')][_0xcf3e('0x12')]);return _0x44e091(_0x2ebd8b[_0xcf3e('0x11')]['message']);}else{logger[_0xcf3e('0xb')](_0xcf3e('0xc'),_0x56ed25,_0xcf3e('0xf'));_0x44e091(_0x2ebd8b[_0xcf3e('0x13')]['message']);}})[_0xcf3e('0x14')](function(_0x4af479){logger['error'](_0xcf3e('0xc'),_0x56ed25,_0x4af479);_0x32b1fd(_0x4af479);});});}exports['ShowSound']=function(_0x39ee36){var _0x362624=this;return new Promise(function(_0xd22ea1,_0x52e90a){return db[_0xcf3e('0x15')]['find']({'raw':_0x39ee36[_0xcf3e('0x16')]?_0x39ee36[_0xcf3e('0x16')][_0xcf3e('0x17')]===undefined?!![]:![]:!![],'where':_0x39ee36['options']?_0x39ee36['options'][_0xcf3e('0x18')]||null:null,'attributes':_0x39ee36[_0xcf3e('0x16')]?_0x39ee36['options'][_0xcf3e('0x19')]||null:null,'include':_0x39ee36[_0xcf3e('0x16')]?_0x39ee36[_0xcf3e('0x16')][_0xcf3e('0x1a')]?_[_0xcf3e('0x1b')](_0x39ee36[_0xcf3e('0x16')][_0xcf3e('0x1a')],function(_0x7a2270){return{'model':db[_0x7a2270[_0xcf3e('0x1c')]],'as':_0x7a2270['as'],'attributes':_0x7a2270[_0xcf3e('0x19')],'include':_0x7a2270['include']?_[_0xcf3e('0x1b')](_0x7a2270[_0xcf3e('0x1a')],function(_0x234a7d){return{'model':db[_0x234a7d[_0xcf3e('0x1c')]],'as':_0x234a7d['as'],'attributes':_0x234a7d[_0xcf3e('0x19')],'include':_0x234a7d[_0xcf3e('0x1a')]?_[_0xcf3e('0x1b')](_0x234a7d['include'],function(_0x46713){return{'model':db[_0x46713[_0xcf3e('0x1c')]],'as':_0x46713['as'],'attributes':_0x46713[_0xcf3e('0x19')]};}):[]};}):[]};}):[]:[]})[_0xcf3e('0xa')](function(_0x56a84a){logger['info'](_0xcf3e('0x1d'),_0x39ee36);logger['debug'](_0xcf3e('0x1d'),_0x39ee36,JSON[_0xcf3e('0x10')](_0x56a84a));_0xd22ea1(_0x56a84a);})[_0xcf3e('0x14')](function(_0x267c0a){logger[_0xcf3e('0x11')](_0xcf3e('0x1d'),_0x267c0a[_0xcf3e('0x12')],_0x39ee36);_0x52e90a(_0x362624['error'](0x1f4,_0x267c0a[_0xcf3e('0x12')]));});});};
\ No newline at end of file
+var _0xe418=['info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x32fde2,_0x100cdc){var _0xfc6c3d=function(_0xa6ceda){while(--_0xa6ceda){_0x32fde2['push'](_0x32fde2['shift']());}};_0xfc6c3d(++_0x100cdc);}(_0xe418,0x124));var _0x8e41=function(_0x14a3aa,_0x5bf99e){_0x14a3aa=_0x14a3aa-0x0;var _0x17a455=_0xe418[_0x14a3aa];return _0x17a455;};'use strict';var _=require(_0x8e41('0x0'));var util=require(_0x8e41('0x1'));var moment=require(_0x8e41('0x2'));var BPromise=require(_0x8e41('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8e41('0x4'));var db=require(_0x8e41('0x5'))['db'];var utils=require(_0x8e41('0x6'));var logger=require('../../config/logger')(_0x8e41('0x7'));var config=require(_0x8e41('0x8'));var jayson=require(_0x8e41('0x9'));var client=jayson[_0x8e41('0xa')][_0x8e41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa2f549,_0x47eafd,_0x423c84){return new BPromise(function(_0x43f9ff,_0x15884a){return client[_0x8e41('0xc')](_0xa2f549,_0x423c84)[_0x8e41('0xd')](function(_0x1ca17e){logger[_0x8e41('0xe')](_0x8e41('0xf'),_0x47eafd,_0x8e41('0x10'));logger[_0x8e41('0x11')](_0x8e41('0x12'),_0x47eafd,_0x8e41('0x10'),JSON[_0x8e41('0x13')](_0x1ca17e));if(_0x1ca17e[_0x8e41('0x14')]){if(_0x1ca17e['error'][_0x8e41('0x15')]===0x1f4){logger[_0x8e41('0x14')](_0x8e41('0xf'),_0x47eafd,_0x1ca17e[_0x8e41('0x14')][_0x8e41('0x16')]);return _0x15884a(_0x1ca17e['error'][_0x8e41('0x16')]);}logger[_0x8e41('0x14')]('Sound,\x20%s,\x20%s',_0x47eafd,_0x1ca17e[_0x8e41('0x14')][_0x8e41('0x16')]);return _0x43f9ff(_0x1ca17e[_0x8e41('0x14')][_0x8e41('0x16')]);}else{logger['info'](_0x8e41('0xf'),_0x47eafd,_0x8e41('0x10'));_0x43f9ff(_0x1ca17e[_0x8e41('0x17')][_0x8e41('0x16')]);}})[_0x8e41('0x18')](function(_0x2099eb){logger[_0x8e41('0x14')]('Sound,\x20%s,\x20%s',_0x47eafd,_0x2099eb);_0x15884a(_0x2099eb);});});}exports[_0x8e41('0x19')]=function(_0x378efd){var _0x3b89d6=this;return new Promise(function(_0x580859,_0x40561f){return db['Sound'][_0x8e41('0x1a')]({'raw':_0x378efd[_0x8e41('0x1b')]?_0x378efd[_0x8e41('0x1b')][_0x8e41('0x1c')]===undefined?!![]:![]:!![],'where':_0x378efd[_0x8e41('0x1b')]?_0x378efd[_0x8e41('0x1b')][_0x8e41('0x1d')]||null:null,'attributes':_0x378efd[_0x8e41('0x1b')]?_0x378efd[_0x8e41('0x1b')][_0x8e41('0x1e')]||null:null,'include':_0x378efd[_0x8e41('0x1b')]?_0x378efd[_0x8e41('0x1b')][_0x8e41('0x1f')]?_['map'](_0x378efd[_0x8e41('0x1b')][_0x8e41('0x1f')],function(_0x3c617e){return{'model':db[_0x3c617e['model']],'as':_0x3c617e['as'],'attributes':_0x3c617e['attributes'],'include':_0x3c617e[_0x8e41('0x1f')]?_[_0x8e41('0x20')](_0x3c617e['include'],function(_0x184ba5){return{'model':db[_0x184ba5[_0x8e41('0x21')]],'as':_0x184ba5['as'],'attributes':_0x184ba5[_0x8e41('0x1e')],'include':_0x184ba5['include']?_[_0x8e41('0x20')](_0x184ba5[_0x8e41('0x1f')],function(_0x7294b4){return{'model':db[_0x7294b4['model']],'as':_0x7294b4['as'],'attributes':_0x7294b4[_0x8e41('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8e41('0xd')](function(_0x52c140){logger[_0x8e41('0xe')](_0x8e41('0x19'),_0x378efd);logger['debug'](_0x8e41('0x19'),_0x378efd,JSON[_0x8e41('0x13')](_0x52c140));_0x580859(_0x52c140);})[_0x8e41('0x18')](function(_0x5256bc){logger[_0x8e41('0x14')](_0x8e41('0x19'),_0x5256bc[_0x8e41('0x16')],_0x378efd);_0x40561f(_0x3b89d6[_0x8e41('0x14')](0x1f4,_0x5256bc[_0x8e41('0x16')]));});});};
\ No newline at end of file
index 11a0edf..ca78374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x20a83b,_0xc6e626){var _0x4815e7=function(_0x5713e4){while(--_0x5713e4){_0x20a83b['push'](_0x20a83b['shift']());}};_0x4815e7(++_0xc6e626);}(_0x2032,0xd9));var _0x2203=function(_0x32ce00,_0x269136){_0x32ce00=_0x32ce00-0x0;var _0x246728=_0x2032[_0x32ce00];return _0x246728;};'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('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
+var _0x5eb8=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports','path','connect-timeout','express','Router'];(function(_0x4613be,_0x2dfbdd){var _0x223b82=function(_0x12e704){while(--_0x12e704){_0x4613be['push'](_0x4613be['shift']());}};_0x223b82(++_0x2dfbdd);}(_0x5eb8,0xb0));var _0x85eb=function(_0x5a7cbc,_0x573d85){_0x5a7cbc=_0x5a7cbc-0x0;var _0x44d2cc=_0x5eb8[_0x5a7cbc];return _0x44d2cc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['post']('/',auth[_0x85eb('0xa')](),controller['create']);router[_0x85eb('0xe')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xf')]);router[_0x85eb('0x10')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller['destroy']);module[_0x85eb('0x11')]=router;
\ No newline at end of file
index cfa14ee..caa8a74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e2a=['TEXT','sequelize','exports','STRING','out'];(function(_0x1da2e7,_0x3d5700){var _0x15074b=function(_0x20b066){while(--_0x20b066){_0x1da2e7['push'](_0x1da2e7['shift']());}};_0x15074b(++_0x3d5700);}(_0x7e2a,0x164));var _0xa7e2=function(_0x4ded65,_0xc8d7c1){_0x4ded65=_0x4ded65-0x0;var _0x5864fb=_0x7e2a[_0x4ded65];return _0x5864fb;};'use strict';var Sequelize=require(_0xa7e2('0x0'));module[_0xa7e2('0x1')]={'uniqueid':{'type':Sequelize[_0xa7e2('0x2')]},'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0xa7e2('0x3')),'defaultValue':_0xa7e2('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0xa7e2('0x2')]},'providerResponse':{'type':Sequelize[_0xa7e2('0x4')]}};
\ No newline at end of file
+var _0x7fa8=['TEXT','medium','ENUM','out','sequelize','STRING'];(function(_0x3bdf48,_0x1979a2){var _0x8b4812=function(_0x44d545){while(--_0x44d545){_0x3bdf48['push'](_0x3bdf48['shift']());}};_0x8b4812(++_0x1979a2);}(_0x7fa8,0x70));var _0x87fa=function(_0x3233c3,_0x15e5fa){_0x3233c3=_0x3233c3-0x0;var _0x36029b=_0x7fa8[_0x3233c3];return _0x36029b;};'use strict';var Sequelize=require(_0x87fa('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x87fa('0x1')]},'body':{'type':Sequelize[_0x87fa('0x2')](_0x87fa('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x87fa('0x4')]('in',_0x87fa('0x5')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x87fa('0x1')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 13afde8..e1e1487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf1=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','status','json','limit','undefined','offset','count','set','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','map','SquareMessage','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','catch','show','params','include','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x70690b,_0x1272ac){var _0x384e9b=function(_0x797e){while(--_0x797e){_0x70690b['push'](_0x70690b['shift']());}};_0x384e9b(++_0x1272ac);}(_0xcaf1,0x82));var _0x1caf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcaf1[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1caf('0x0'));var zipdir=require(_0x1caf('0x1'));var jsonpatch=require(_0x1caf('0x2'));var rp=require(_0x1caf('0x3'));var moment=require(_0x1caf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1caf('0x5'));var path=require(_0x1caf('0x6'));var sox=require(_0x1caf('0x7'));var csv=require(_0x1caf('0x8'));var ejs=require(_0x1caf('0x9'));var fs=require('fs');var fs_extra=require(_0x1caf('0xa'));var _=require(_0x1caf('0xb'));var squel=require(_0x1caf('0xc'));var crypto=require(_0x1caf('0xd'));var jsforce=require(_0x1caf('0xe'));var deskjs=require(_0x1caf('0xf'));var toCsv=require('to-csv');var querystring=require(_0x1caf('0x10'));var Papa=require(_0x1caf('0x11'));var Redis=require(_0x1caf('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1caf('0x13'));var as=require(_0x1caf('0x14'));var hardwareService=require(_0x1caf('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x1caf('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1caf('0x17'))['db'];function respondWithStatusCode(_0x520e72,_0x594b8a){_0x594b8a=_0x594b8a||0xcc;return function(_0x35df6b){if(_0x35df6b){return _0x520e72['sendStatus'](_0x594b8a);}return _0x520e72[_0x1caf('0x18')](_0x594b8a)['end']();};}function respondWithResult(_0x567b29,_0x1d94df){_0x1d94df=_0x1d94df||0xc8;return function(_0x188136){if(_0x188136){return _0x567b29[_0x1caf('0x18')](_0x1d94df)[_0x1caf('0x19')](_0x188136);}};}function respondWithFilteredResult(_0x45cef2,_0xd8d88d){return function(_0xd222a9){if(_0xd222a9){var _0xd8e58c=typeof _0xd8d88d['offset']==='undefined'&&typeof _0xd8d88d[_0x1caf('0x1a')]===_0x1caf('0x1b');var _0x50fe4b=_0xd222a9['count'];var _0x48feed=_0xd8e58c?0x0:_0xd8d88d[_0x1caf('0x1c')];var _0x1d1ae7=_0xd8e58c?_0xd222a9[_0x1caf('0x1d')]:_0xd8d88d[_0x1caf('0x1c')]+_0xd8d88d[_0x1caf('0x1a')];var _0x3b0bd6;if(_0x1d1ae7>=_0x50fe4b){_0x1d1ae7=_0x50fe4b;_0x3b0bd6=0xc8;}else{_0x3b0bd6=0xce;}_0x45cef2[_0x1caf('0x18')](_0x3b0bd6);return _0x45cef2[_0x1caf('0x1e')]('Content-Range',_0x48feed+'-'+_0x1d1ae7+'/'+_0x50fe4b)[_0x1caf('0x19')](_0xd222a9);}return null;};}function patchUpdates(_0x13cf9b){return function(_0x3bd436){try{jsonpatch[_0x1caf('0x1f')](_0x3bd436,_0x13cf9b,!![]);}catch(_0x4c12cb){return BPromise[_0x1caf('0x20')](_0x4c12cb);}return _0x3bd436[_0x1caf('0x21')]();};}function saveUpdates(_0x1105b8,_0x5280d3){return function(_0x2d4003){if(_0x2d4003){return _0x2d4003[_0x1caf('0x22')](_0x1105b8)['then'](function(_0x36e18b){return _0x36e18b;});}return null;};}function removeEntity(_0x3e892c,_0x28338c){return function(_0x452bf0){if(_0x452bf0){return _0x452bf0[_0x1caf('0x23')]()[_0x1caf('0x24')](function(){_0x3e892c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d1a05,_0x2c51bc){return function(_0x3a8a5a){if(!_0x3a8a5a){_0x4d1a05[_0x1caf('0x25')](0x194);}return _0x3a8a5a;};}function handleError(_0x3a4678,_0x4213d5){_0x4213d5=_0x4213d5||0x1f4;return function(_0x58b574){logger[_0x1caf('0x26')](_0x58b574[_0x1caf('0x27')]);if(_0x58b574['name']){delete _0x58b574[_0x1caf('0x28')];}_0x3a4678[_0x1caf('0x18')](_0x4213d5)[_0x1caf('0x29')](_0x58b574);};}exports['index']=function(_0xeb2dcf,_0x1e5155){var _0x3743af={},_0x5343bd={},_0x18c8c5={'count':0x0,'rows':[]};var _0x56227a=_[_0x1caf('0x2a')](db[_0x1caf('0x2b')][_0x1caf('0x2c')],function(_0x1d0254){return{'name':_0x1d0254[_0x1caf('0x2d')],'type':_0x1d0254['type'][_0x1caf('0x2e')]};});_0x5343bd[_0x1caf('0x2f')]=_['map'](_0x56227a,_0x1caf('0x28'));_0x5343bd[_0x1caf('0x30')]=_[_0x1caf('0x31')](_0xeb2dcf['query']);_0x5343bd[_0x1caf('0x32')]=_[_0x1caf('0x33')](_0x5343bd[_0x1caf('0x2f')],_0x5343bd[_0x1caf('0x30')]);_0x3743af[_0x1caf('0x34')]=_[_0x1caf('0x33')](_0x5343bd[_0x1caf('0x2f')],qs[_0x1caf('0x35')](_0xeb2dcf[_0x1caf('0x30')]['fields']));_0x3743af[_0x1caf('0x34')]=_0x3743af[_0x1caf('0x34')][_0x1caf('0x36')]?_0x3743af[_0x1caf('0x34')]:_0x5343bd[_0x1caf('0x2f')];if(!_0xeb2dcf['query'][_0x1caf('0x37')](_0x1caf('0x38'))){_0x3743af[_0x1caf('0x1a')]=qs['limit'](_0xeb2dcf[_0x1caf('0x30')][_0x1caf('0x1a')]);_0x3743af['offset']=qs[_0x1caf('0x1c')](_0xeb2dcf[_0x1caf('0x30')][_0x1caf('0x1c')]);}_0x3743af[_0x1caf('0x39')]=qs[_0x1caf('0x3a')](_0xeb2dcf[_0x1caf('0x30')]['sort']);_0x3743af[_0x1caf('0x3b')]=qs[_0x1caf('0x32')](_[_0x1caf('0x3c')](_0xeb2dcf['query'],_0x5343bd[_0x1caf('0x32')]),_0x56227a);if(_0xeb2dcf['query'][_0x1caf('0x3d')]){_0x3743af['where']=_['merge'](_0x3743af['where'],{'$or':_['map'](_0x56227a,function(_0x275eb0){if(_0x275eb0[_0x1caf('0x3e')]!==_0x1caf('0x3f')){var _0x25df90={};_0x25df90[_0x275eb0[_0x1caf('0x28')]]={'$like':'%'+_0xeb2dcf[_0x1caf('0x30')][_0x1caf('0x3d')]+'%'};return _0x25df90;}})});}_0x3743af=_[_0x1caf('0x40')]({},_0x3743af,_0xeb2dcf[_0x1caf('0x41')]);var _0x4668f7={'where':_0x3743af[_0x1caf('0x3b')]};return db[_0x1caf('0x2b')][_0x1caf('0x1d')](_0x4668f7)[_0x1caf('0x24')](function(_0x221a73){_0x18c8c5[_0x1caf('0x1d')]=_0x221a73;if(_0xeb2dcf[_0x1caf('0x30')][_0x1caf('0x42')]){_0x3743af['include']=[{'all':!![]}];}return db['SquareMessage'][_0x1caf('0x43')](_0x3743af);})[_0x1caf('0x24')](function(_0x4505b8){_0x18c8c5['rows']=_0x4505b8;return _0x18c8c5;})[_0x1caf('0x24')](respondWithFilteredResult(_0x1e5155,_0x3743af))[_0x1caf('0x44')](handleError(_0x1e5155,null));};exports[_0x1caf('0x45')]=function(_0x1caf07,_0x124488){var _0x27e685={'raw':!![],'where':{'id':_0x1caf07[_0x1caf('0x46')]['id']}},_0x4b654e={};_0x4b654e['model']=_[_0x1caf('0x31')](db[_0x1caf('0x2b')][_0x1caf('0x2c')]);_0x4b654e['query']=_['keys'](_0x1caf07[_0x1caf('0x30')]);_0x4b654e[_0x1caf('0x32')]=_[_0x1caf('0x33')](_0x4b654e['model'],_0x4b654e[_0x1caf('0x30')]);_0x27e685[_0x1caf('0x34')]=_[_0x1caf('0x33')](_0x4b654e[_0x1caf('0x2f')],qs['fields'](_0x1caf07[_0x1caf('0x30')][_0x1caf('0x35')]));_0x27e685['attributes']=_0x27e685[_0x1caf('0x34')][_0x1caf('0x36')]?_0x27e685[_0x1caf('0x34')]:_0x4b654e[_0x1caf('0x2f')];if(_0x1caf07['query'][_0x1caf('0x42')]){_0x27e685[_0x1caf('0x47')]=[{'all':!![]}];}_0x27e685=_[_0x1caf('0x40')]({},_0x27e685,_0x1caf07[_0x1caf('0x41')]);return db[_0x1caf('0x2b')]['find'](_0x27e685)[_0x1caf('0x24')](handleEntityNotFound(_0x124488,null))['then'](respondWithResult(_0x124488,null))[_0x1caf('0x44')](handleError(_0x124488,null));};exports[_0x1caf('0x48')]=function(_0x2ec600,_0xff57df){return db['SquareMessage'][_0x1caf('0x48')](_0x2ec600[_0x1caf('0x49')],{})[_0x1caf('0x24')](respondWithResult(_0xff57df,0xc9))[_0x1caf('0x44')](handleError(_0xff57df,null));};exports[_0x1caf('0x22')]=function(_0x2af073,_0x325dbc){if(_0x2af073[_0x1caf('0x49')]['id']){delete _0x2af073[_0x1caf('0x49')]['id'];}return db[_0x1caf('0x2b')]['find']({'where':{'id':_0x2af073[_0x1caf('0x46')]['id']}})[_0x1caf('0x24')](handleEntityNotFound(_0x325dbc,null))[_0x1caf('0x24')](saveUpdates(_0x2af073[_0x1caf('0x49')],null))[_0x1caf('0x24')](respondWithResult(_0x325dbc,null))[_0x1caf('0x44')](handleError(_0x325dbc,null));};exports[_0x1caf('0x23')]=function(_0x5a2b45,_0x47e133){return db['SquareMessage'][_0x1caf('0x4a')]({'where':{'id':_0x5a2b45[_0x1caf('0x46')]['id']}})[_0x1caf('0x24')](handleEntityNotFound(_0x47e133,null))[_0x1caf('0x24')](removeEntity(_0x47e133,null))[_0x1caf('0x44')](handleError(_0x47e133,null));};
\ No newline at end of file
+var _0xd2b0=['nolimit','order','sort','where','pick','filter','type','merge','SquareMessage','includeAll','include','catch','show','keys','options','create','body','find','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../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','stack','name','send','index','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x341d0b,_0x3de069){var _0x505bb0=function(_0xb84878){while(--_0xb84878){_0x341d0b['push'](_0x341d0b['shift']());}};_0x505bb0(++_0x3de069);}(_0xd2b0,0x13b));var _0x0d2b=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xd2b0[_0xf71120];return _0xbe2fd3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0d2b('0x0'));var jsonpatch=require(_0x0d2b('0x1'));var rp=require(_0x0d2b('0x2'));var moment=require(_0x0d2b('0x3'));var BPromise=require(_0x0d2b('0x4'));var Mustache=require(_0x0d2b('0x5'));var util=require(_0x0d2b('0x6'));var path=require(_0x0d2b('0x7'));var sox=require(_0x0d2b('0x8'));var csv=require(_0x0d2b('0x9'));var ejs=require(_0x0d2b('0xa'));var fs=require('fs');var fs_extra=require(_0x0d2b('0xb'));var _=require('lodash');var squel=require(_0x0d2b('0xc'));var crypto=require(_0x0d2b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0d2b('0xe'));var toCsv=require(_0x0d2b('0x9'));var querystring=require(_0x0d2b('0xf'));var Papa=require(_0x0d2b('0x10'));var Redis=require('ioredis');var authService=require(_0x0d2b('0x11'));var qs=require(_0x0d2b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0d2b('0x13'));var logger=require('../../config/logger')(_0x0d2b('0x14'));var utils=require(_0x0d2b('0x15'));var config=require(_0x0d2b('0x16'));var licenseUtil=require(_0x0d2b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a61e3,_0x4ce599){_0x4ce599=_0x4ce599||0xcc;return function(_0x31058d){if(_0x31058d){return _0x3a61e3[_0x0d2b('0x18')](_0x4ce599);}return _0x3a61e3[_0x0d2b('0x19')](_0x4ce599)[_0x0d2b('0x1a')]();};}function respondWithResult(_0x53d82c,_0x20aa2c){_0x20aa2c=_0x20aa2c||0xc8;return function(_0x30a9cb){if(_0x30a9cb){return _0x53d82c[_0x0d2b('0x19')](_0x20aa2c)[_0x0d2b('0x1b')](_0x30a9cb);}};}function respondWithFilteredResult(_0x187a54,_0x462232){return function(_0x5e1121){if(_0x5e1121){var _0x3edab6=typeof _0x462232[_0x0d2b('0x1c')]==='undefined'&&typeof _0x462232[_0x0d2b('0x1d')]===_0x0d2b('0x1e');var _0x1dff75=_0x5e1121[_0x0d2b('0x1f')];var _0x305832=_0x3edab6?0x0:_0x462232[_0x0d2b('0x1c')];var _0x29df8f=_0x3edab6?_0x5e1121[_0x0d2b('0x1f')]:_0x462232['offset']+_0x462232[_0x0d2b('0x1d')];var _0x564c7a;if(_0x29df8f>=_0x1dff75){_0x29df8f=_0x1dff75;_0x564c7a=0xc8;}else{_0x564c7a=0xce;}_0x187a54[_0x0d2b('0x19')](_0x564c7a);return _0x187a54[_0x0d2b('0x20')]('Content-Range',_0x305832+'-'+_0x29df8f+'/'+_0x1dff75)[_0x0d2b('0x1b')](_0x5e1121);}return null;};}function patchUpdates(_0x4a01e3){return function(_0x25df18){try{jsonpatch[_0x0d2b('0x21')](_0x25df18,_0x4a01e3,!![]);}catch(_0x3e9c22){return BPromise[_0x0d2b('0x22')](_0x3e9c22);}return _0x25df18[_0x0d2b('0x23')]();};}function saveUpdates(_0xf3c4e4,_0x18a371){return function(_0x4c1ab3){if(_0x4c1ab3){return _0x4c1ab3[_0x0d2b('0x24')](_0xf3c4e4)['then'](function(_0x54801e){return _0x54801e;});}return null;};}function removeEntity(_0x3b3a67,_0x5009f){return function(_0x2b60b2){if(_0x2b60b2){return _0x2b60b2[_0x0d2b('0x25')]()[_0x0d2b('0x26')](function(){_0x3b3a67[_0x0d2b('0x19')](0xcc)[_0x0d2b('0x1a')]();});}};}function handleEntityNotFound(_0x489f4e,_0x13a082){return function(_0x4124b1){if(!_0x4124b1){_0x489f4e['sendStatus'](0x194);}return _0x4124b1;};}function handleError(_0x3f6a48,_0x259d35){_0x259d35=_0x259d35||0x1f4;return function(_0x8a65bd){logger[_0x0d2b('0x27')](_0x8a65bd[_0x0d2b('0x28')]);if(_0x8a65bd[_0x0d2b('0x29')]){delete _0x8a65bd[_0x0d2b('0x29')];}_0x3f6a48['status'](_0x259d35)[_0x0d2b('0x2a')](_0x8a65bd);};}exports[_0x0d2b('0x2b')]=function(_0x650aad,_0x2890ae){var _0x3b4121={},_0x9d911a={},_0x3abe25={'count':0x0,'rows':[]};var _0x14247f=_[_0x0d2b('0x2c')](db['SquareMessage'][_0x0d2b('0x2d')],function(_0x50c728){return{'name':_0x50c728['fieldName'],'type':_0x50c728['type'][_0x0d2b('0x2e')]};});_0x9d911a[_0x0d2b('0x2f')]=_[_0x0d2b('0x2c')](_0x14247f,_0x0d2b('0x29'));_0x9d911a[_0x0d2b('0x30')]=_['keys'](_0x650aad[_0x0d2b('0x30')]);_0x9d911a[_0x0d2b('0x31')]=_[_0x0d2b('0x32')](_0x9d911a[_0x0d2b('0x2f')],_0x9d911a['query']);_0x3b4121[_0x0d2b('0x33')]=_[_0x0d2b('0x32')](_0x9d911a[_0x0d2b('0x2f')],qs[_0x0d2b('0x34')](_0x650aad[_0x0d2b('0x30')][_0x0d2b('0x34')]));_0x3b4121[_0x0d2b('0x33')]=_0x3b4121[_0x0d2b('0x33')][_0x0d2b('0x35')]?_0x3b4121['attributes']:_0x9d911a[_0x0d2b('0x2f')];if(!_0x650aad['query'][_0x0d2b('0x36')](_0x0d2b('0x37'))){_0x3b4121[_0x0d2b('0x1d')]=qs[_0x0d2b('0x1d')](_0x650aad['query'][_0x0d2b('0x1d')]);_0x3b4121['offset']=qs['offset'](_0x650aad[_0x0d2b('0x30')][_0x0d2b('0x1c')]);}_0x3b4121[_0x0d2b('0x38')]=qs['sort'](_0x650aad[_0x0d2b('0x30')][_0x0d2b('0x39')]);_0x3b4121[_0x0d2b('0x3a')]=qs[_0x0d2b('0x31')](_[_0x0d2b('0x3b')](_0x650aad[_0x0d2b('0x30')],_0x9d911a['filters']),_0x14247f);if(_0x650aad['query'][_0x0d2b('0x3c')]){_0x3b4121[_0x0d2b('0x3a')]=_['merge'](_0x3b4121[_0x0d2b('0x3a')],{'$or':_['map'](_0x14247f,function(_0x330f5d){if(_0x330f5d[_0x0d2b('0x3d')]!=='VIRTUAL'){var _0x3aee39={};_0x3aee39[_0x330f5d[_0x0d2b('0x29')]]={'$like':'%'+_0x650aad[_0x0d2b('0x30')][_0x0d2b('0x3c')]+'%'};return _0x3aee39;}})});}_0x3b4121=_[_0x0d2b('0x3e')]({},_0x3b4121,_0x650aad['options']);var _0xb8ed54={'where':_0x3b4121['where']};return db[_0x0d2b('0x3f')][_0x0d2b('0x1f')](_0xb8ed54)[_0x0d2b('0x26')](function(_0x26a70a){_0x3abe25[_0x0d2b('0x1f')]=_0x26a70a;if(_0x650aad[_0x0d2b('0x30')][_0x0d2b('0x40')]){_0x3b4121[_0x0d2b('0x41')]=[{'all':!![]}];}return db['SquareMessage']['findAll'](_0x3b4121);})['then'](function(_0x476a94){_0x3abe25['rows']=_0x476a94;return _0x3abe25;})[_0x0d2b('0x26')](respondWithFilteredResult(_0x2890ae,_0x3b4121))[_0x0d2b('0x42')](handleError(_0x2890ae,null));};exports[_0x0d2b('0x43')]=function(_0x47ca91,_0x1d99c7){var _0x5511ee={'raw':!![],'where':{'id':_0x47ca91['params']['id']}},_0x1037bb={};_0x1037bb[_0x0d2b('0x2f')]=_[_0x0d2b('0x44')](db[_0x0d2b('0x3f')]['rawAttributes']);_0x1037bb[_0x0d2b('0x30')]=_['keys'](_0x47ca91[_0x0d2b('0x30')]);_0x1037bb[_0x0d2b('0x31')]=_[_0x0d2b('0x32')](_0x1037bb[_0x0d2b('0x2f')],_0x1037bb[_0x0d2b('0x30')]);_0x5511ee[_0x0d2b('0x33')]=_[_0x0d2b('0x32')](_0x1037bb[_0x0d2b('0x2f')],qs[_0x0d2b('0x34')](_0x47ca91[_0x0d2b('0x30')]['fields']));_0x5511ee['attributes']=_0x5511ee[_0x0d2b('0x33')][_0x0d2b('0x35')]?_0x5511ee[_0x0d2b('0x33')]:_0x1037bb[_0x0d2b('0x2f')];if(_0x47ca91[_0x0d2b('0x30')][_0x0d2b('0x40')]){_0x5511ee[_0x0d2b('0x41')]=[{'all':!![]}];}_0x5511ee=_[_0x0d2b('0x3e')]({},_0x5511ee,_0x47ca91[_0x0d2b('0x45')]);return db[_0x0d2b('0x3f')]['find'](_0x5511ee)[_0x0d2b('0x26')](handleEntityNotFound(_0x1d99c7,null))[_0x0d2b('0x26')](respondWithResult(_0x1d99c7,null))['catch'](handleError(_0x1d99c7,null));};exports[_0x0d2b('0x46')]=function(_0x3a8439,_0x105779){return db[_0x0d2b('0x3f')][_0x0d2b('0x46')](_0x3a8439['body'],{})[_0x0d2b('0x26')](respondWithResult(_0x105779,0xc9))[_0x0d2b('0x42')](handleError(_0x105779,null));};exports[_0x0d2b('0x24')]=function(_0x43d5c7,_0x23d57f){if(_0x43d5c7['body']['id']){delete _0x43d5c7[_0x0d2b('0x47')]['id'];}return db[_0x0d2b('0x3f')][_0x0d2b('0x48')]({'where':{'id':_0x43d5c7[_0x0d2b('0x49')]['id']}})[_0x0d2b('0x26')](handleEntityNotFound(_0x23d57f,null))['then'](saveUpdates(_0x43d5c7[_0x0d2b('0x47')],null))['then'](respondWithResult(_0x23d57f,null))[_0x0d2b('0x42')](handleError(_0x23d57f,null));};exports[_0x0d2b('0x25')]=function(_0x3bbd4e,_0xf2c037){return db[_0x0d2b('0x3f')][_0x0d2b('0x48')]({'where':{'id':_0x3bbd4e[_0x0d2b('0x49')]['id']}})['then'](handleEntityNotFound(_0xf2c037,null))[_0x0d2b('0x26')](removeEntity(_0xf2c037,null))[_0x0d2b('0x42')](handleError(_0xf2c037,null));};
\ No newline at end of file
index 10b5928..f1b94af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb067=['../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2ae908,_0x2d6085){var _0x315429=function(_0x55acc1){while(--_0x55acc1){_0x2ae908['push'](_0x2ae908['shift']());}};_0x315429(++_0x2d6085);}(_0xb067,0x199));var _0x7b06=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb067[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x7b06('0x0'));var logger=require(_0x7b06('0x1'))(_0x7b06('0x2'));var moment=require(_0x7b06('0x3'));var BPromise=require(_0x7b06('0x4'));var rp=require(_0x7b06('0x5'));var fs=require('fs');var path=require(_0x7b06('0x6'));var rimraf=require('rimraf');var config=require(_0x7b06('0x7'));var attributes=require(_0x7b06('0x8'));module[_0x7b06('0x9')]=function(_0x289c29,_0x11428b){return _0x289c29[_0x7b06('0xa')](_0x7b06('0xb'),attributes,{'tableName':_0x7b06('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xefb7=['path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x12de61,_0x4b56a4){var _0xb3684f=function(_0x27fa50){while(--_0x27fa50){_0x12de61['push'](_0x12de61['shift']());}};_0xb3684f(++_0x4b56a4);}(_0xefb7,0x107));var _0x7efb=function(_0x576d8a,_0x2d7bde){_0x576d8a=_0x576d8a-0x0;var _0x3dc3ef=_0xefb7[_0x576d8a];return _0x3dc3ef;};'use strict';var _=require(_0x7efb('0x0'));var util=require(_0x7efb('0x1'));var logger=require(_0x7efb('0x2'))(_0x7efb('0x3'));var moment=require(_0x7efb('0x4'));var BPromise=require(_0x7efb('0x5'));var rp=require(_0x7efb('0x6'));var fs=require('fs');var path=require(_0x7efb('0x7'));var rimraf=require(_0x7efb('0x8'));var config=require(_0x7efb('0x9'));var attributes=require(_0x7efb('0xa'));module[_0x7efb('0xb')]=function(_0x42cd11,_0x2fea1e){return _0x42cd11[_0x7efb('0xc')](_0x7efb('0xd'),attributes,{'tableName':_0x7efb('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7a26b40..897e248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e3=['../../config/logger','rpc','jayson/promise','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareMessage','create','body','options','raw','CreateSquareMessage','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x5c1102,_0x58265c){var _0xf5bd4d=function(_0x222945){while(--_0x222945){_0x5c1102['push'](_0x5c1102['shift']());}};_0xf5bd4d(++_0x58265c);}(_0x26e3,0x125));var _0x326e=function(_0x4a93bb,_0x495404){_0x4a93bb=_0x4a93bb-0x0;var _0x208468=_0x26e3[_0x4a93bb];return _0x208468;};'use strict';var _=require(_0x326e('0x0'));var util=require(_0x326e('0x1'));var moment=require(_0x326e('0x2'));var BPromise=require('bluebird');var rs=require(_0x326e('0x3'));var fs=require('fs');var Redis=require(_0x326e('0x4'));var db=require(_0x326e('0x5'))['db'];var utils=require(_0x326e('0x6'));var logger=require(_0x326e('0x7'))(_0x326e('0x8'));var config=require('../../config/environment');var jayson=require(_0x326e('0x9'));var client=jayson['client'][_0x326e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa80c24,_0x1e12d6,_0x33d08c){return new BPromise(function(_0x34a2f2,_0x40f15e){return client[_0x326e('0xb')](_0xa80c24,_0x33d08c)[_0x326e('0xc')](function(_0x24e566){logger[_0x326e('0xd')](_0x326e('0xe'),_0x1e12d6,_0x326e('0xf'));logger[_0x326e('0x10')](_0x326e('0x11'),_0x1e12d6,'request\x20sent',JSON[_0x326e('0x12')](_0x24e566));if(_0x24e566['error']){if(_0x24e566[_0x326e('0x13')][_0x326e('0x14')]===0x1f4){logger['error'](_0x326e('0xe'),_0x1e12d6,_0x24e566[_0x326e('0x13')][_0x326e('0x15')]);return _0x40f15e(_0x24e566['error'][_0x326e('0x15')]);}logger['error'](_0x326e('0xe'),_0x1e12d6,_0x24e566[_0x326e('0x13')][_0x326e('0x15')]);return _0x34a2f2(_0x24e566[_0x326e('0x13')]['message']);}else{logger[_0x326e('0xd')](_0x326e('0xe'),_0x1e12d6,_0x326e('0xf'));_0x34a2f2(_0x24e566[_0x326e('0x16')][_0x326e('0x15')]);}})[_0x326e('0x17')](function(_0x1595bf){logger[_0x326e('0x13')]('SquareMessage,\x20%s,\x20%s',_0x1e12d6,_0x1595bf);_0x40f15e(_0x1595bf);});});}exports['CreateSquareMessage']=function(_0x38bb2d){var _0x408203=this;return new Promise(function(_0x3e4057,_0x450e89){return db[_0x326e('0x18')][_0x326e('0x19')](_0x38bb2d[_0x326e('0x1a')],{'raw':_0x38bb2d[_0x326e('0x1b')]?_0x38bb2d[_0x326e('0x1b')][_0x326e('0x1c')]===undefined?!![]:![]:!![]})[_0x326e('0xc')](function(_0x20cdd7){logger[_0x326e('0xd')](_0x326e('0x1d'),_0x38bb2d);logger[_0x326e('0x10')](_0x326e('0x1d'),_0x38bb2d,JSON['stringify'](_0x20cdd7));_0x3e4057(_0x20cdd7);})[_0x326e('0x17')](function(_0x32f858){logger[_0x326e('0x13')](_0x326e('0x1d'),_0x32f858['message'],_0x38bb2d);_0x450e89(_0x408203['error'](0x1f4,_0x32f858[_0x326e('0x15')]));});});};
\ No newline at end of file
+var _0x1bb4=['../../config/environment','jayson/promise','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareMessage','create','options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x53dcc2,_0x13c7fa){var _0x13288c=function(_0x316d46){while(--_0x316d46){_0x53dcc2['push'](_0x53dcc2['shift']());}};_0x13288c(++_0x13c7fa);}(_0x1bb4,0x153));var _0x41bb=function(_0x1cd3cb,_0x5b43b2){_0x1cd3cb=_0x1cd3cb-0x0;var _0x526b44=_0x1bb4[_0x1cd3cb];return _0x526b44;};'use strict';var _=require(_0x41bb('0x0'));var util=require(_0x41bb('0x1'));var moment=require(_0x41bb('0x2'));var BPromise=require(_0x41bb('0x3'));var rs=require(_0x41bb('0x4'));var fs=require('fs');var Redis=require(_0x41bb('0x5'));var db=require(_0x41bb('0x6'))['db'];var utils=require(_0x41bb('0x7'));var logger=require('../../config/logger')(_0x41bb('0x8'));var config=require(_0x41bb('0x9'));var jayson=require(_0x41bb('0xa'));var client=jayson[_0x41bb('0xb')][_0x41bb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4e83a4,_0x1be35b,_0x14a00f){return new BPromise(function(_0x2a91d4,_0x1fa95e){return client[_0x41bb('0xd')](_0x4e83a4,_0x14a00f)[_0x41bb('0xe')](function(_0x2f1e16){logger[_0x41bb('0xf')](_0x41bb('0x10'),_0x1be35b,_0x41bb('0x11'));logger[_0x41bb('0x12')](_0x41bb('0x13'),_0x1be35b,_0x41bb('0x11'),JSON[_0x41bb('0x14')](_0x2f1e16));if(_0x2f1e16[_0x41bb('0x15')]){if(_0x2f1e16[_0x41bb('0x15')][_0x41bb('0x16')]===0x1f4){logger[_0x41bb('0x15')](_0x41bb('0x10'),_0x1be35b,_0x2f1e16[_0x41bb('0x15')][_0x41bb('0x17')]);return _0x1fa95e(_0x2f1e16['error'][_0x41bb('0x17')]);}logger[_0x41bb('0x15')](_0x41bb('0x10'),_0x1be35b,_0x2f1e16[_0x41bb('0x15')]['message']);return _0x2a91d4(_0x2f1e16[_0x41bb('0x15')][_0x41bb('0x17')]);}else{logger['info'](_0x41bb('0x10'),_0x1be35b,_0x41bb('0x11'));_0x2a91d4(_0x2f1e16[_0x41bb('0x18')][_0x41bb('0x17')]);}})[_0x41bb('0x19')](function(_0xff5819){logger[_0x41bb('0x15')](_0x41bb('0x10'),_0x1be35b,_0xff5819);_0x1fa95e(_0xff5819);});});}exports[_0x41bb('0x1a')]=function(_0x16370a){var _0x58cd72=this;return new Promise(function(_0x299671,_0x39dbf8){return db['SquareMessage'][_0x41bb('0x1b')](_0x16370a['body'],{'raw':_0x16370a['options']?_0x16370a[_0x41bb('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x41bb('0xe')](function(_0x4197c4){logger['info']('CreateSquareMessage',_0x16370a);logger[_0x41bb('0x12')]('CreateSquareMessage',_0x16370a,JSON[_0x41bb('0x14')](_0x4197c4));_0x299671(_0x4197c4);})['catch'](function(_0x15c66e){logger[_0x41bb('0x15')](_0x41bb('0x1a'),_0x15c66e[_0x41bb('0x17')],_0x16370a);_0x39dbf8(_0x58cd72[_0x41bb('0x15')](0x1f4,_0x15c66e['message']));});});};
\ No newline at end of file
index 48cc27c..e0ea3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09c5=['isAuthenticated','/:id','show','15s','test','create','put','update','delete','destroy','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get'];(function(_0x58311a,_0x324f5e){var _0x428c7a=function(_0x4ba388){while(--_0x4ba388){_0x58311a['push'](_0x58311a['shift']());}};_0x428c7a(++_0x324f5e);}(_0x09c5,0xd0));var _0x509c=function(_0x9731b4,_0x26aac3){_0x9731b4=_0x9731b4-0x0;var _0x3d7a66=_0x09c5[_0x9731b4];return _0x3d7a66;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x509c('0x0'));var timeout=require(_0x509c('0x1'));var express=require(_0x509c('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x509c('0x3'));var interaction=require(_0x509c('0x4'));var config=require(_0x509c('0x5'));var controller=require(_0x509c('0x6'));router[_0x509c('0x7')]('/',auth[_0x509c('0x8')](),controller['index']);router[_0x509c('0x7')](_0x509c('0x9'),auth['isAuthenticated'](),controller[_0x509c('0xa')]);router[_0x509c('0x7')]('/:id/test',auth[_0x509c('0x8')](),timeout(_0x509c('0xb')),controller[_0x509c('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x509c('0xd')]);router[_0x509c('0xe')](_0x509c('0x9'),auth['isAuthenticated'](),controller[_0x509c('0xf')]);router[_0x509c('0x10')](_0x509c('0x9'),auth[_0x509c('0x8')](),controller[_0x509c('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6cfb=['Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','/:id/test','test','post','create','put','/:id','destroy','util','express'];(function(_0x5b3ea6,_0x28e1ac){var _0x29a08a=function(_0x5923e8){while(--_0x5923e8){_0x5b3ea6['push'](_0x5b3ea6['shift']());}};_0x29a08a(++_0x28e1ac);}(_0x6cfb,0x64));var _0xb6cf=function(_0x1dfa63,_0x362bd4){_0x1dfa63=_0x1dfa63-0x0;var _0x26f2a9=_0x6cfb[_0x1dfa63];return _0x26f2a9;};'use strict';var multer=require('multer');var util=require(_0xb6cf('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb6cf('0x1'));var router=express[_0xb6cf('0x2')]();var fs_extra=require(_0xb6cf('0x3'));var auth=require(_0xb6cf('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb6cf('0x5'));var controller=require('./squareOdbc.controller');router[_0xb6cf('0x6')]('/',auth[_0xb6cf('0x7')](),controller[_0xb6cf('0x8')]);router[_0xb6cf('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xb6cf('0x9')]);router[_0xb6cf('0x6')](_0xb6cf('0xa'),auth[_0xb6cf('0x7')](),timeout('15s'),controller[_0xb6cf('0xb')]);router[_0xb6cf('0xc')]('/',auth[_0xb6cf('0x7')](),controller[_0xb6cf('0xd')]);router[_0xb6cf('0xe')](_0xb6cf('0xf'),auth[_0xb6cf('0x7')](),controller['update']);router['delete'](_0xb6cf('0xf'),auth[_0xb6cf('0x7')](),controller[_0xb6cf('0x10')]);module['exports']=router;
\ No newline at end of file
index 7bb02d5..65f103f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4abf=['STRING','name','sequelize'];(function(_0x1ebed7,_0x4318a1){var _0x263d02=function(_0x3c349c){while(--_0x3c349c){_0x1ebed7['push'](_0x1ebed7['shift']());}};_0x263d02(++_0x4318a1);}(_0x4abf,0x65));var _0xf4ab=function(_0x236029,_0x5d4c17){_0x236029=_0x236029-0x0;var _0x350df5=_0x4abf[_0x236029];return _0x350df5;};'use strict';var Sequelize=require(_0xf4ab('0x0'));module['exports']={'name':{'type':Sequelize[_0xf4ab('0x1')],'unique':_0xf4ab('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0xf4ab('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9ba6=['sequelize','exports','STRING','name'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x9ba6,0x158));var _0x69ba=function(_0x3e5732,_0xf6f2fd){_0x3e5732=_0x3e5732-0x0;var _0x2bf7fc=_0x9ba6[_0x3e5732];return _0x2bf7fc;};'use strict';var Sequelize=require(_0x69ba('0x0'));module[_0x69ba('0x1')]={'name':{'type':Sequelize[_0x69ba('0x2')],'unique':_0x69ba('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 863fef1..8631c52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7786=['includeAll','find','create','user','get','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','test','odbc','openSync','dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','save','update','then','destroy','ODBC','UserProfileResource','error','stack','name','send','index','map','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','SquareOdbc','include','findAll','rows','catch','show','params','rawAttributes','length'];(function(_0x558462,_0x314ff8){var _0x24ef0a=function(_0x414d08){while(--_0x414d08){_0x558462['push'](_0x558462['shift']());}};_0x24ef0a(++_0x314ff8);}(_0x7786,0x1cc));var _0x6778=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7786[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6778('0x0'));var rimraf=require(_0x6778('0x1'));var zipdir=require(_0x6778('0x2'));var jsonpatch=require(_0x6778('0x3'));var rp=require(_0x6778('0x4'));var moment=require(_0x6778('0x5'));var BPromise=require(_0x6778('0x6'));var Mustache=require(_0x6778('0x7'));var util=require(_0x6778('0x8'));var path=require(_0x6778('0x9'));var sox=require('sox');var csv=require(_0x6778('0xa'));var ejs=require(_0x6778('0xb'));var fs=require('fs');var fs_extra=require(_0x6778('0xc'));var _=require('lodash');var squel=require(_0x6778('0xd'));var crypto=require(_0x6778('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x6778('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6778('0x10'));var Papa=require(_0x6778('0x11'));var Redis=require(_0x6778('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6778('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6778('0x14'));var logger=require(_0x6778('0x15'))(_0x6778('0x16'));var utils=require(_0x6778('0x17'));var config=require(_0x6778('0x18'));var licenseUtil=require(_0x6778('0x19'));var db=require(_0x6778('0x1a'))['db'];function respondWithStatusCode(_0x2aaa8a,_0x463fde){_0x463fde=_0x463fde||0xcc;return function(_0xc91c63){if(_0xc91c63){return _0x2aaa8a[_0x6778('0x1b')](_0x463fde);}return _0x2aaa8a[_0x6778('0x1c')](_0x463fde)[_0x6778('0x1d')]();};}function respondWithResult(_0x6da0ec,_0x439ecd){_0x439ecd=_0x439ecd||0xc8;return function(_0x10831a){if(_0x10831a){return _0x6da0ec[_0x6778('0x1c')](_0x439ecd)['json'](_0x10831a);}};}function respondWithFilteredResult(_0x3cf9b3,_0x4e0665){return function(_0x154f8f){if(_0x154f8f){var _0x43befb=typeof _0x4e0665[_0x6778('0x1e')]===_0x6778('0x1f')&&typeof _0x4e0665[_0x6778('0x20')]===_0x6778('0x1f');var _0x91e9cf=_0x154f8f[_0x6778('0x21')];var _0xb896cb=_0x43befb?0x0:_0x4e0665['offset'];var _0x5388c7=_0x43befb?_0x154f8f[_0x6778('0x21')]:_0x4e0665[_0x6778('0x1e')]+_0x4e0665[_0x6778('0x20')];var _0x1f2dfd;if(_0x5388c7>=_0x91e9cf){_0x5388c7=_0x91e9cf;_0x1f2dfd=0xc8;}else{_0x1f2dfd=0xce;}_0x3cf9b3[_0x6778('0x1c')](_0x1f2dfd);return _0x3cf9b3['set']('Content-Range',_0xb896cb+'-'+_0x5388c7+'/'+_0x91e9cf)[_0x6778('0x22')](_0x154f8f);}return null;};}function patchUpdates(_0x4652b0){return function(_0x25f5c8){try{jsonpatch[_0x6778('0x23')](_0x25f5c8,_0x4652b0,!![]);}catch(_0x31160f){return BPromise[_0x6778('0x24')](_0x31160f);}return _0x25f5c8[_0x6778('0x25')]();};}function saveUpdates(_0x753f02,_0x4eb4e8){return function(_0x2ca2d1){if(_0x2ca2d1){return _0x2ca2d1[_0x6778('0x26')](_0x753f02)[_0x6778('0x27')](function(_0x22f456){return _0x22f456;});}return null;};}function removeEntity(_0x2290c4,_0x5c853a){return function(_0x3556f3){if(_0x3556f3){return _0x3556f3[_0x6778('0x28')]()[_0x6778('0x27')](function(){var _0x414660=_0x3556f3['get']({'plain':!![]});var _0xe205e6=_0x6778('0x29');return db[_0x6778('0x2a')][_0x6778('0x28')]({'where':{'type':_0xe205e6,'resourceId':_0x414660['id']}})[_0x6778('0x27')](function(){return _0x3556f3;});})['then'](function(){_0x2290c4[_0x6778('0x1c')](0xcc)[_0x6778('0x1d')]();});}};}function handleEntityNotFound(_0xaf259b,_0x599258){return function(_0x220ed7){if(!_0x220ed7){_0xaf259b[_0x6778('0x1b')](0x194);}return _0x220ed7;};}function handleError(_0x68934,_0x4a1a42){_0x4a1a42=_0x4a1a42||0x1f4;return function(_0xac24c9){logger[_0x6778('0x2b')](_0xac24c9[_0x6778('0x2c')]);if(_0xac24c9[_0x6778('0x2d')]){delete _0xac24c9[_0x6778('0x2d')];}_0x68934[_0x6778('0x1c')](_0x4a1a42)[_0x6778('0x2e')](_0xac24c9);};}exports[_0x6778('0x2f')]=function(_0x7058fa,_0xa86a6c){var _0x450714={},_0x30cade={},_0x269ddc={'count':0x0,'rows':[]};var _0x6ef64a=_[_0x6778('0x30')](db['SquareOdbc']['rawAttributes'],function(_0x600664){return{'name':_0x600664[_0x6778('0x31')],'type':_0x600664['type']['key']};});_0x30cade[_0x6778('0x32')]=_['map'](_0x6ef64a,_0x6778('0x2d'));_0x30cade[_0x6778('0x33')]=_[_0x6778('0x34')](_0x7058fa[_0x6778('0x33')]);_0x30cade[_0x6778('0x35')]=_[_0x6778('0x36')](_0x30cade['model'],_0x30cade['query']);_0x450714[_0x6778('0x37')]=_[_0x6778('0x36')](_0x30cade[_0x6778('0x32')],qs['fields'](_0x7058fa[_0x6778('0x33')][_0x6778('0x38')]));_0x450714['attributes']=_0x450714['attributes']['length']?_0x450714[_0x6778('0x37')]:_0x30cade[_0x6778('0x32')];if(!_0x7058fa['query'][_0x6778('0x39')](_0x6778('0x3a'))){_0x450714[_0x6778('0x20')]=qs[_0x6778('0x20')](_0x7058fa['query'][_0x6778('0x20')]);_0x450714[_0x6778('0x1e')]=qs[_0x6778('0x1e')](_0x7058fa[_0x6778('0x33')]['offset']);}_0x450714[_0x6778('0x3b')]=qs[_0x6778('0x3c')](_0x7058fa[_0x6778('0x33')][_0x6778('0x3c')]);_0x450714[_0x6778('0x3d')]=qs['filters'](_['pick'](_0x7058fa['query'],_0x30cade[_0x6778('0x35')]),_0x6ef64a);if(_0x7058fa[_0x6778('0x33')]['filter']){_0x450714[_0x6778('0x3d')]=_[_0x6778('0x3e')](_0x450714[_0x6778('0x3d')],{'$or':_[_0x6778('0x30')](_0x6ef64a,function(_0x33ed7d){if(_0x33ed7d['type']!=='VIRTUAL'){var _0x1f8b73={};_0x1f8b73[_0x33ed7d[_0x6778('0x2d')]]={'$like':'%'+_0x7058fa[_0x6778('0x33')][_0x6778('0x3f')]+'%'};return _0x1f8b73;}})});}_0x450714=_[_0x6778('0x3e')]({},_0x450714,_0x7058fa[_0x6778('0x40')]);var _0x2aeec9={'where':_0x450714[_0x6778('0x3d')]};return db[_0x6778('0x41')][_0x6778('0x21')](_0x2aeec9)['then'](function(_0x1c3472){_0x269ddc[_0x6778('0x21')]=_0x1c3472;if(_0x7058fa[_0x6778('0x33')]['includeAll']){_0x450714[_0x6778('0x42')]=[{'all':!![]}];}return db[_0x6778('0x41')][_0x6778('0x43')](_0x450714);})[_0x6778('0x27')](function(_0x566d0a){_0x269ddc[_0x6778('0x44')]=_0x566d0a;return _0x269ddc;})[_0x6778('0x27')](respondWithFilteredResult(_0xa86a6c,_0x450714))[_0x6778('0x45')](handleError(_0xa86a6c,null));};exports[_0x6778('0x46')]=function(_0x586feb,_0x575b94){var _0x1f4e36={'raw':!![],'where':{'id':_0x586feb[_0x6778('0x47')]['id']}},_0x351a01={};_0x351a01['model']=_[_0x6778('0x34')](db[_0x6778('0x41')][_0x6778('0x48')]);_0x351a01[_0x6778('0x33')]=_[_0x6778('0x34')](_0x586feb[_0x6778('0x33')]);_0x351a01[_0x6778('0x35')]=_['intersection'](_0x351a01['model'],_0x351a01[_0x6778('0x33')]);_0x1f4e36[_0x6778('0x37')]=_[_0x6778('0x36')](_0x351a01['model'],qs['fields'](_0x586feb[_0x6778('0x33')]['fields']));_0x1f4e36[_0x6778('0x37')]=_0x1f4e36[_0x6778('0x37')][_0x6778('0x49')]?_0x1f4e36[_0x6778('0x37')]:_0x351a01['model'];if(_0x586feb[_0x6778('0x33')][_0x6778('0x4a')]){_0x1f4e36[_0x6778('0x42')]=[{'all':!![]}];}_0x1f4e36=_[_0x6778('0x3e')]({},_0x1f4e36,_0x586feb['options']);return db[_0x6778('0x41')][_0x6778('0x4b')](_0x1f4e36)['then'](handleEntityNotFound(_0x575b94,null))[_0x6778('0x27')](respondWithResult(_0x575b94,null))[_0x6778('0x45')](handleError(_0x575b94,null));};exports[_0x6778('0x4c')]=function(_0x1ed265,_0xf79251){return db[_0x6778('0x41')]['create'](_0x1ed265['body'],{})['then'](function(_0x34c69e){var _0x2f1044=_0x1ed265[_0x6778('0x4d')][_0x6778('0x4e')]({'plain':!![]});if(!_0x2f1044)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f1044[_0x6778('0x4f')]==='user'){var _0x37f6d2=_0x34c69e['get']({'plain':!![]});var _0x5d2807=_0x6778('0x29');return db[_0x6778('0x50')][_0x6778('0x4b')]({'where':{'name':_0x5d2807,'userProfileId':_0x2f1044['userProfileId']},'raw':!![]})[_0x6778('0x27')](function(_0x35baac){if(_0x35baac&&_0x35baac[_0x6778('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x37f6d2[_0x6778('0x2d')],'resourceId':_0x37f6d2['id'],'type':_0x35baac['name'],'sectionId':_0x35baac['id']},{})[_0x6778('0x27')](function(){return _0x34c69e;});}else{return _0x34c69e;}})[_0x6778('0x45')](function(_0x344beb){logger[_0x6778('0x2b')](_0x6778('0x52'),_0x344beb);throw _0x344beb;});}return _0x34c69e;})[_0x6778('0x27')](respondWithResult(_0xf79251,0xc9))['catch'](handleError(_0xf79251,null));};exports[_0x6778('0x26')]=function(_0x208449,_0x5e4b4a){if(_0x208449[_0x6778('0x53')]['id']){delete _0x208449[_0x6778('0x53')]['id'];}return db[_0x6778('0x41')][_0x6778('0x4b')]({'where':{'id':_0x208449[_0x6778('0x47')]['id']}})[_0x6778('0x27')](handleEntityNotFound(_0x5e4b4a,null))[_0x6778('0x27')](saveUpdates(_0x208449[_0x6778('0x53')],null))[_0x6778('0x27')](respondWithResult(_0x5e4b4a,null))[_0x6778('0x45')](handleError(_0x5e4b4a,null));};exports[_0x6778('0x28')]=function(_0x3849f7,_0x568574){return db[_0x6778('0x41')][_0x6778('0x4b')]({'where':{'id':_0x3849f7[_0x6778('0x47')]['id']}})[_0x6778('0x27')](handleEntityNotFound(_0x568574,null))[_0x6778('0x27')](removeEntity(_0x568574,null))[_0x6778('0x45')](handleError(_0x568574,null));};exports[_0x6778('0x54')]=function(_0x423a25,_0x42bb6c,_0x73be0b){var _0x15556d;return db[_0x6778('0x41')][_0x6778('0x4b')]({'where':{'id':_0x423a25[_0x6778('0x47')]['id']},'attributes':['id','dsn']})[_0x6778('0x27')](handleEntityNotFound(_0x42bb6c,null))[_0x6778('0x27')](function(_0x1cf159){if(_0x1cf159){var _0x42dbc2=require(_0x6778('0x55'))();_0x42dbc2[_0x6778('0x56')](_0x1cf159[_0x6778('0x57')]);_0x42dbc2[_0x6778('0x58')]();return _0x1cf159;}})[_0x6778('0x27')](respondWithResult(_0x42bb6c,null))[_0x6778('0x45')](handleError(_0x42bb6c,null));};
\ No newline at end of file
+var _0xd2f2=['map','SquareOdbc','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','rows','catch','params','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','odbc','openSync','dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','ODBC','UserProfileResource','sendStatus','error','stack','name','send','index'];(function(_0xf666ea,_0x531100){var _0x567d92=function(_0x504dc1){while(--_0x504dc1){_0xf666ea['push'](_0xf666ea['shift']());}};_0x567d92(++_0x531100);}(_0xd2f2,0x1d5));var _0x2d2f=function(_0x19dbc0,_0x180cad){_0x19dbc0=_0x19dbc0-0x0;var _0xf0b964=_0xd2f2[_0x19dbc0];return _0xf0b964;};'use strict';var emlformat=require(_0x2d2f('0x0'));var rimraf=require(_0x2d2f('0x1'));var zipdir=require(_0x2d2f('0x2'));var jsonpatch=require(_0x2d2f('0x3'));var rp=require(_0x2d2f('0x4'));var moment=require('moment');var BPromise=require(_0x2d2f('0x5'));var Mustache=require(_0x2d2f('0x6'));var util=require(_0x2d2f('0x7'));var path=require(_0x2d2f('0x8'));var sox=require(_0x2d2f('0x9'));var csv=require('to-csv');var ejs=require(_0x2d2f('0xa'));var fs=require('fs');var fs_extra=require(_0x2d2f('0xb'));var _=require('lodash');var squel=require(_0x2d2f('0xc'));var crypto=require(_0x2d2f('0xd'));var jsforce=require(_0x2d2f('0xe'));var deskjs=require(_0x2d2f('0xf'));var toCsv=require(_0x2d2f('0x10'));var querystring=require('querystring');var Papa=require(_0x2d2f('0x11'));var Redis=require(_0x2d2f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x2d2f('0x13'));var as=require(_0x2d2f('0x14'));var hardwareService=require(_0x2d2f('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x2d2f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2d2f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d30ed,_0x4eb2b6){_0x4eb2b6=_0x4eb2b6||0xcc;return function(_0x1d236a){if(_0x1d236a){return _0x3d30ed['sendStatus'](_0x4eb2b6);}return _0x3d30ed['status'](_0x4eb2b6)[_0x2d2f('0x18')]();};}function respondWithResult(_0x16777b,_0x16b170){_0x16b170=_0x16b170||0xc8;return function(_0x38c8cf){if(_0x38c8cf){return _0x16777b[_0x2d2f('0x19')](_0x16b170)[_0x2d2f('0x1a')](_0x38c8cf);}};}function respondWithFilteredResult(_0x5911ca,_0x133c33){return function(_0x2be02f){if(_0x2be02f){var _0x20a5ea=typeof _0x133c33['offset']===_0x2d2f('0x1b')&&typeof _0x133c33[_0x2d2f('0x1c')]===_0x2d2f('0x1b');var _0x594b96=_0x2be02f[_0x2d2f('0x1d')];var _0x364392=_0x20a5ea?0x0:_0x133c33[_0x2d2f('0x1e')];var _0x5c0c3f=_0x20a5ea?_0x2be02f[_0x2d2f('0x1d')]:_0x133c33[_0x2d2f('0x1e')]+_0x133c33[_0x2d2f('0x1c')];var _0x2c2ba3;if(_0x5c0c3f>=_0x594b96){_0x5c0c3f=_0x594b96;_0x2c2ba3=0xc8;}else{_0x2c2ba3=0xce;}_0x5911ca[_0x2d2f('0x19')](_0x2c2ba3);return _0x5911ca[_0x2d2f('0x1f')](_0x2d2f('0x20'),_0x364392+'-'+_0x5c0c3f+'/'+_0x594b96)[_0x2d2f('0x1a')](_0x2be02f);}return null;};}function patchUpdates(_0x85ed50){return function(_0xdc6272){try{jsonpatch[_0x2d2f('0x21')](_0xdc6272,_0x85ed50,!![]);}catch(_0x5ebd04){return BPromise[_0x2d2f('0x22')](_0x5ebd04);}return _0xdc6272['save']();};}function saveUpdates(_0x55dcce,_0x392627){return function(_0xbdecc3){if(_0xbdecc3){return _0xbdecc3[_0x2d2f('0x23')](_0x55dcce)[_0x2d2f('0x24')](function(_0x309a61){return _0x309a61;});}return null;};}function removeEntity(_0x5d4bcd,_0xd4acee){return function(_0xecdb50){if(_0xecdb50){return _0xecdb50[_0x2d2f('0x25')]()['then'](function(){var _0x2858e0=_0xecdb50[_0x2d2f('0x26')]({'plain':!![]});var _0x458561=_0x2d2f('0x27');return db[_0x2d2f('0x28')][_0x2d2f('0x25')]({'where':{'type':_0x458561,'resourceId':_0x2858e0['id']}})[_0x2d2f('0x24')](function(){return _0xecdb50;});})[_0x2d2f('0x24')](function(){_0x5d4bcd[_0x2d2f('0x19')](0xcc)[_0x2d2f('0x18')]();});}};}function handleEntityNotFound(_0x53e1be,_0x4d02f3){return function(_0x313e1d){if(!_0x313e1d){_0x53e1be[_0x2d2f('0x29')](0x194);}return _0x313e1d;};}function handleError(_0x3ba729,_0x4e5a5d){_0x4e5a5d=_0x4e5a5d||0x1f4;return function(_0x57b971){logger[_0x2d2f('0x2a')](_0x57b971[_0x2d2f('0x2b')]);if(_0x57b971[_0x2d2f('0x2c')]){delete _0x57b971[_0x2d2f('0x2c')];}_0x3ba729['status'](_0x4e5a5d)[_0x2d2f('0x2d')](_0x57b971);};}exports[_0x2d2f('0x2e')]=function(_0x5442ce,_0x411e19){var _0x948b0c={},_0x3b6403={},_0x5de0b0={'count':0x0,'rows':[]};var _0x3744e4=_[_0x2d2f('0x2f')](db[_0x2d2f('0x30')][_0x2d2f('0x31')],function(_0xaac13c){return{'name':_0xaac13c[_0x2d2f('0x32')],'type':_0xaac13c['type'][_0x2d2f('0x33')]};});_0x3b6403[_0x2d2f('0x34')]=_['map'](_0x3744e4,_0x2d2f('0x2c'));_0x3b6403['query']=_[_0x2d2f('0x35')](_0x5442ce[_0x2d2f('0x36')]);_0x3b6403[_0x2d2f('0x37')]=_['intersection'](_0x3b6403[_0x2d2f('0x34')],_0x3b6403[_0x2d2f('0x36')]);_0x948b0c['attributes']=_[_0x2d2f('0x38')](_0x3b6403[_0x2d2f('0x34')],qs[_0x2d2f('0x39')](_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x39')]));_0x948b0c[_0x2d2f('0x3a')]=_0x948b0c[_0x2d2f('0x3a')][_0x2d2f('0x3b')]?_0x948b0c['attributes']:_0x3b6403['model'];if(!_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x3c')](_0x2d2f('0x3d'))){_0x948b0c[_0x2d2f('0x1c')]=qs[_0x2d2f('0x1c')](_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x1c')]);_0x948b0c[_0x2d2f('0x1e')]=qs[_0x2d2f('0x1e')](_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x1e')]);}_0x948b0c['order']=qs['sort'](_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x3e')]);_0x948b0c[_0x2d2f('0x3f')]=qs[_0x2d2f('0x37')](_['pick'](_0x5442ce[_0x2d2f('0x36')],_0x3b6403[_0x2d2f('0x37')]),_0x3744e4);if(_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x40')]){_0x948b0c['where']=_[_0x2d2f('0x41')](_0x948b0c[_0x2d2f('0x3f')],{'$or':_[_0x2d2f('0x2f')](_0x3744e4,function(_0xe09a93){if(_0xe09a93['type']!=='VIRTUAL'){var _0x4d4dc5={};_0x4d4dc5[_0xe09a93[_0x2d2f('0x2c')]]={'$like':'%'+_0x5442ce['query'][_0x2d2f('0x40')]+'%'};return _0x4d4dc5;}})});}_0x948b0c=_['merge']({},_0x948b0c,_0x5442ce[_0x2d2f('0x42')]);var _0x2457a9={'where':_0x948b0c[_0x2d2f('0x3f')]};return db['SquareOdbc'][_0x2d2f('0x1d')](_0x2457a9)['then'](function(_0x41510a){_0x5de0b0[_0x2d2f('0x1d')]=_0x41510a;if(_0x5442ce[_0x2d2f('0x36')][_0x2d2f('0x43')]){_0x948b0c[_0x2d2f('0x44')]=[{'all':!![]}];}return db[_0x2d2f('0x30')]['findAll'](_0x948b0c);})[_0x2d2f('0x24')](function(_0x1b1b46){_0x5de0b0[_0x2d2f('0x45')]=_0x1b1b46;return _0x5de0b0;})[_0x2d2f('0x24')](respondWithFilteredResult(_0x411e19,_0x948b0c))[_0x2d2f('0x46')](handleError(_0x411e19,null));};exports['show']=function(_0x27f3f9,_0x384995){var _0x2defb6={'raw':!![],'where':{'id':_0x27f3f9[_0x2d2f('0x47')]['id']}},_0x24286b={};_0x24286b[_0x2d2f('0x34')]=_[_0x2d2f('0x35')](db[_0x2d2f('0x30')][_0x2d2f('0x31')]);_0x24286b[_0x2d2f('0x36')]=_[_0x2d2f('0x35')](_0x27f3f9[_0x2d2f('0x36')]);_0x24286b['filters']=_[_0x2d2f('0x38')](_0x24286b['model'],_0x24286b['query']);_0x2defb6[_0x2d2f('0x3a')]=_['intersection'](_0x24286b['model'],qs[_0x2d2f('0x39')](_0x27f3f9[_0x2d2f('0x36')][_0x2d2f('0x39')]));_0x2defb6['attributes']=_0x2defb6[_0x2d2f('0x3a')][_0x2d2f('0x3b')]?_0x2defb6[_0x2d2f('0x3a')]:_0x24286b['model'];if(_0x27f3f9[_0x2d2f('0x36')]['includeAll']){_0x2defb6[_0x2d2f('0x44')]=[{'all':!![]}];}_0x2defb6=_['merge']({},_0x2defb6,_0x27f3f9['options']);return db[_0x2d2f('0x30')][_0x2d2f('0x48')](_0x2defb6)['then'](handleEntityNotFound(_0x384995,null))['then'](respondWithResult(_0x384995,null))['catch'](handleError(_0x384995,null));};exports[_0x2d2f('0x49')]=function(_0x453020,_0x55a97e){return db[_0x2d2f('0x30')][_0x2d2f('0x49')](_0x453020[_0x2d2f('0x4a')],{})['then'](function(_0x5eeb93){var _0xce7c63=_0x453020[_0x2d2f('0x4b')]['get']({'plain':!![]});if(!_0xce7c63)throw new Error(_0x2d2f('0x4c'));if(_0xce7c63[_0x2d2f('0x4d')]===_0x2d2f('0x4b')){var _0x39036a=_0x5eeb93[_0x2d2f('0x26')]({'plain':!![]});var _0x359025=_0x2d2f('0x27');return db[_0x2d2f('0x4e')][_0x2d2f('0x48')]({'where':{'name':_0x359025,'userProfileId':_0xce7c63[_0x2d2f('0x4f')]},'raw':!![]})[_0x2d2f('0x24')](function(_0x4b8900){if(_0x4b8900&&_0x4b8900[_0x2d2f('0x50')]===0x0){return db[_0x2d2f('0x28')][_0x2d2f('0x49')]({'name':_0x39036a[_0x2d2f('0x2c')],'resourceId':_0x39036a['id'],'type':_0x4b8900[_0x2d2f('0x2c')],'sectionId':_0x4b8900['id']},{})[_0x2d2f('0x24')](function(){return _0x5eeb93;});}else{return _0x5eeb93;}})[_0x2d2f('0x46')](function(_0x45e315){logger[_0x2d2f('0x2a')](_0x2d2f('0x51'),_0x45e315);throw _0x45e315;});}return _0x5eeb93;})['then'](respondWithResult(_0x55a97e,0xc9))['catch'](handleError(_0x55a97e,null));};exports[_0x2d2f('0x23')]=function(_0x36939b,_0x1e3f28){if(_0x36939b[_0x2d2f('0x4a')]['id']){delete _0x36939b[_0x2d2f('0x4a')]['id'];}return db['SquareOdbc'][_0x2d2f('0x48')]({'where':{'id':_0x36939b[_0x2d2f('0x47')]['id']}})[_0x2d2f('0x24')](handleEntityNotFound(_0x1e3f28,null))[_0x2d2f('0x24')](saveUpdates(_0x36939b[_0x2d2f('0x4a')],null))[_0x2d2f('0x24')](respondWithResult(_0x1e3f28,null))[_0x2d2f('0x46')](handleError(_0x1e3f28,null));};exports[_0x2d2f('0x25')]=function(_0x323163,_0xf6caa6){return db[_0x2d2f('0x30')][_0x2d2f('0x48')]({'where':{'id':_0x323163[_0x2d2f('0x47')]['id']}})[_0x2d2f('0x24')](handleEntityNotFound(_0xf6caa6,null))[_0x2d2f('0x24')](removeEntity(_0xf6caa6,null))[_0x2d2f('0x46')](handleError(_0xf6caa6,null));};exports['test']=function(_0x23ef6f,_0x5708b8,_0x4635fa){var _0x5f2b4c;return db['SquareOdbc'][_0x2d2f('0x48')]({'where':{'id':_0x23ef6f[_0x2d2f('0x47')]['id']},'attributes':['id','dsn']})[_0x2d2f('0x24')](handleEntityNotFound(_0x5708b8,null))['then'](function(_0x14fe35){if(_0x14fe35){var _0x407b93=require(_0x2d2f('0x52'))();_0x407b93[_0x2d2f('0x53')](_0x14fe35[_0x2d2f('0x54')]);_0x407b93[_0x2d2f('0x55')]();return _0x14fe35;}})[_0x2d2f('0x24')](respondWithResult(_0x5708b8,null))[_0x2d2f('0x46')](handleError(_0x5708b8,null));};
\ No newline at end of file
index 7091f91..31e3bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa6=['util','../../config/logger','moment','bluebird','request-promise','rimraf','./squareOdbc.attributes','exports','define','SquareOdbc','lodash'];(function(_0x3e4573,_0x12c10a){var _0x1ed6ca=function(_0x30fde8){while(--_0x30fde8){_0x3e4573['push'](_0x3e4573['shift']());}};_0x1ed6ca(++_0x12c10a);}(_0xeaa6,0x6d));var _0x6eaa=function(_0x40aa95,_0x311817){_0x40aa95=_0x40aa95-0x0;var _0x24415b=_0xeaa6[_0x40aa95];return _0x24415b;};'use strict';var _=require(_0x6eaa('0x0'));var util=require(_0x6eaa('0x1'));var logger=require(_0x6eaa('0x2'))('api');var moment=require(_0x6eaa('0x3'));var BPromise=require(_0x6eaa('0x4'));var rp=require(_0x6eaa('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6eaa('0x6'));var config=require('../../config/environment');var attributes=require(_0x6eaa('0x7'));module[_0x6eaa('0x8')]=function(_0x165541,_0x5037b8){return _0x165541[_0x6eaa('0x9')](_0x6eaa('0xa'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72b5=['moment','bluebird','request-promise','path','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash','util','../../config/logger'];(function(_0x3f3bad,_0x193f06){var _0x4f0801=function(_0x5cfd32){while(--_0x5cfd32){_0x3f3bad['push'](_0x3f3bad['shift']());}};_0x4f0801(++_0x193f06);}(_0x72b5,0x142));var _0x572b=function(_0x41d4fd,_0xb30046){_0x41d4fd=_0x41d4fd-0x0;var _0x1f773b=_0x72b5[_0x41d4fd];return _0x1f773b;};'use strict';var _=require(_0x572b('0x0'));var util=require(_0x572b('0x1'));var logger=require(_0x572b('0x2'))('api');var moment=require(_0x572b('0x3'));var BPromise=require(_0x572b('0x4'));var rp=require(_0x572b('0x5'));var fs=require('fs');var path=require(_0x572b('0x6'));var rimraf=require('rimraf');var config=require(_0x572b('0x7'));var attributes=require(_0x572b('0x8'));module[_0x572b('0x9')]=function(_0x57d203,_0x365b4e){return _0x57d203[_0x572b('0xa')](_0x572b('0xb'),attributes,{'tableName':_0x572b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4cf6c4..ee79845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd50=['message','result','catch','ShowSquareOdbc','SquareOdbc','options','raw','where','attributes','include','map','model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x5ca1c8,_0x4d173a){var _0x486166=function(_0x1e9fb1){while(--_0x1e9fb1){_0x5ca1c8['push'](_0x5ca1c8['shift']());}};_0x486166(++_0x4d173a);}(_0xcd50,0xc7));var _0x0cd5=function(_0x3b7a09,_0x22a780){_0x3b7a09=_0x3b7a09-0x0;var _0x16b968=_0xcd50[_0x3b7a09];return _0x16b968;};'use strict';var _=require(_0x0cd5('0x0'));var util=require(_0x0cd5('0x1'));var moment=require(_0x0cd5('0x2'));var BPromise=require(_0x0cd5('0x3'));var rs=require(_0x0cd5('0x4'));var fs=require('fs');var Redis=require(_0x0cd5('0x5'));var db=require(_0x0cd5('0x6'))['db'];var utils=require(_0x0cd5('0x7'));var logger=require('../../config/logger')(_0x0cd5('0x8'));var config=require(_0x0cd5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0cd5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x42485a,_0x143910,_0x5d20ca){return new BPromise(function(_0x2c5ca9,_0x2482ad){return client[_0x0cd5('0xb')](_0x42485a,_0x5d20ca)[_0x0cd5('0xc')](function(_0x3cf52c){logger[_0x0cd5('0xd')](_0x0cd5('0xe'),_0x143910,_0x0cd5('0xf'));logger[_0x0cd5('0x10')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x143910,_0x0cd5('0xf'),JSON['stringify'](_0x3cf52c));if(_0x3cf52c[_0x0cd5('0x11')]){if(_0x3cf52c[_0x0cd5('0x11')]['code']===0x1f4){logger[_0x0cd5('0x11')]('SquareOdbc,\x20%s,\x20%s',_0x143910,_0x3cf52c[_0x0cd5('0x11')][_0x0cd5('0x12')]);return _0x2482ad(_0x3cf52c[_0x0cd5('0x11')][_0x0cd5('0x12')]);}logger[_0x0cd5('0x11')](_0x0cd5('0xe'),_0x143910,_0x3cf52c['error'][_0x0cd5('0x12')]);return _0x2c5ca9(_0x3cf52c[_0x0cd5('0x11')][_0x0cd5('0x12')]);}else{logger['info'](_0x0cd5('0xe'),_0x143910,_0x0cd5('0xf'));_0x2c5ca9(_0x3cf52c[_0x0cd5('0x13')][_0x0cd5('0x12')]);}})[_0x0cd5('0x14')](function(_0x261452){logger[_0x0cd5('0x11')](_0x0cd5('0xe'),_0x143910,_0x261452);_0x2482ad(_0x261452);});});}exports[_0x0cd5('0x15')]=function(_0x47fd92){var _0x201bff=this;return new Promise(function(_0x5472d6,_0x35d5a0){return db[_0x0cd5('0x16')]['find']({'raw':_0x47fd92['options']?_0x47fd92[_0x0cd5('0x17')][_0x0cd5('0x18')]===undefined?!![]:![]:!![],'where':_0x47fd92[_0x0cd5('0x17')]?_0x47fd92[_0x0cd5('0x17')][_0x0cd5('0x19')]||null:null,'attributes':_0x47fd92[_0x0cd5('0x17')]?_0x47fd92['options'][_0x0cd5('0x1a')]||null:null,'include':_0x47fd92[_0x0cd5('0x17')]?_0x47fd92[_0x0cd5('0x17')][_0x0cd5('0x1b')]?_[_0x0cd5('0x1c')](_0x47fd92['options'][_0x0cd5('0x1b')],function(_0x199049){return{'model':db[_0x199049[_0x0cd5('0x1d')]],'as':_0x199049['as'],'attributes':_0x199049[_0x0cd5('0x1a')],'include':_0x199049[_0x0cd5('0x1b')]?_['map'](_0x199049[_0x0cd5('0x1b')],function(_0x55362a){return{'model':db[_0x55362a['model']],'as':_0x55362a['as'],'attributes':_0x55362a[_0x0cd5('0x1a')],'include':_0x55362a[_0x0cd5('0x1b')]?_[_0x0cd5('0x1c')](_0x55362a[_0x0cd5('0x1b')],function(_0x2706dc){return{'model':db[_0x2706dc[_0x0cd5('0x1d')]],'as':_0x2706dc['as'],'attributes':_0x2706dc[_0x0cd5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0cd5('0xc')](function(_0x1f07af){logger[_0x0cd5('0xd')]('ShowSquareOdbc',_0x47fd92);logger['debug'](_0x0cd5('0x15'),_0x47fd92,JSON[_0x0cd5('0x1e')](_0x1f07af));_0x5472d6(_0x1f07af);})[_0x0cd5('0x14')](function(_0x59067c){logger['error']('ShowSquareOdbc',_0x59067c[_0x0cd5('0x12')],_0x47fd92);_0x35d5a0(_0x201bff['error'](0x1f4,_0x59067c[_0x0cd5('0x12')]));});});};
\ No newline at end of file
+var _0x1d61=['code','error','message','info','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','map','attributes','then','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x53369b,_0x4c18a1){var _0x49a2e3=function(_0x7dc92b){while(--_0x7dc92b){_0x53369b['push'](_0x53369b['shift']());}};_0x49a2e3(++_0x4c18a1);}(_0x1d61,0x127));var _0x11d6=function(_0x2a5b77,_0x3a7914){_0x2a5b77=_0x2a5b77-0x0;var _0x636061=_0x1d61[_0x2a5b77];return _0x636061;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x11d6('0x0'));var BPromise=require('bluebird');var rs=require(_0x11d6('0x1'));var fs=require('fs');var Redis=require(_0x11d6('0x2'));var db=require(_0x11d6('0x3'))['db'];var utils=require(_0x11d6('0x4'));var logger=require(_0x11d6('0x5'))(_0x11d6('0x6'));var config=require(_0x11d6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x11d6('0x8')][_0x11d6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14f3e3,_0x1fcbfb,_0x29899a){return new BPromise(function(_0x4c1e7d,_0x1c1d62){return client[_0x11d6('0xa')](_0x14f3e3,_0x29899a)['then'](function(_0x7f818f){logger['info'](_0x11d6('0xb'),_0x1fcbfb,_0x11d6('0xc'));logger[_0x11d6('0xd')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x1fcbfb,_0x11d6('0xc'),JSON[_0x11d6('0xe')](_0x7f818f));if(_0x7f818f['error']){if(_0x7f818f['error'][_0x11d6('0xf')]===0x1f4){logger[_0x11d6('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x1fcbfb,_0x7f818f[_0x11d6('0x10')]['message']);return _0x1c1d62(_0x7f818f[_0x11d6('0x10')][_0x11d6('0x11')]);}logger[_0x11d6('0x10')](_0x11d6('0xb'),_0x1fcbfb,_0x7f818f[_0x11d6('0x10')][_0x11d6('0x11')]);return _0x4c1e7d(_0x7f818f[_0x11d6('0x10')]['message']);}else{logger[_0x11d6('0x12')](_0x11d6('0xb'),_0x1fcbfb,_0x11d6('0xc'));_0x4c1e7d(_0x7f818f[_0x11d6('0x13')][_0x11d6('0x11')]);}})['catch'](function(_0x1cd870){logger[_0x11d6('0x10')](_0x11d6('0xb'),_0x1fcbfb,_0x1cd870);_0x1c1d62(_0x1cd870);});});}exports[_0x11d6('0x14')]=function(_0xfe3ae1){var _0x30a5f9=this;return new Promise(function(_0x1e4167,_0x17cacb){return db[_0x11d6('0x15')][_0x11d6('0x16')]({'raw':_0xfe3ae1['options']?_0xfe3ae1[_0x11d6('0x17')][_0x11d6('0x18')]===undefined?!![]:![]:!![],'where':_0xfe3ae1[_0x11d6('0x17')]?_0xfe3ae1[_0x11d6('0x17')][_0x11d6('0x19')]||null:null,'attributes':_0xfe3ae1['options']?_0xfe3ae1[_0x11d6('0x17')]['attributes']||null:null,'include':_0xfe3ae1[_0x11d6('0x17')]?_0xfe3ae1[_0x11d6('0x17')][_0x11d6('0x1a')]?_[_0x11d6('0x1b')](_0xfe3ae1[_0x11d6('0x17')]['include'],function(_0x16dd64){return{'model':db[_0x16dd64['model']],'as':_0x16dd64['as'],'attributes':_0x16dd64[_0x11d6('0x1c')],'include':_0x16dd64['include']?_[_0x11d6('0x1b')](_0x16dd64[_0x11d6('0x1a')],function(_0x594efb){return{'model':db[_0x594efb['model']],'as':_0x594efb['as'],'attributes':_0x594efb['attributes'],'include':_0x594efb['include']?_[_0x11d6('0x1b')](_0x594efb[_0x11d6('0x1a')],function(_0x439315){return{'model':db[_0x439315['model']],'as':_0x439315['as'],'attributes':_0x439315[_0x11d6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x11d6('0x1d')](function(_0x783def){logger['info']('ShowSquareOdbc',_0xfe3ae1);logger[_0x11d6('0xd')](_0x11d6('0x14'),_0xfe3ae1,JSON[_0x11d6('0xe')](_0x783def));_0x1e4167(_0x783def);})[_0x11d6('0x1e')](function(_0x50e7cb){logger[_0x11d6('0x10')](_0x11d6('0x14'),_0x50e7cb[_0x11d6('0x11')],_0xfe3ae1);_0x17cacb(_0x30a5f9[_0x11d6('0x10')](0x1f4,_0x50e7cb[_0x11d6('0x11')]));});});};
\ No newline at end of file
index 34fa082..7c8b07a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e82=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./squareProject.controller','isAuthenticated','index','get','/:id','show','/:id/users','getUsers','post','create','put','update','destroy','removeUsers'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1e82,0x8b));var _0x21e8=function(_0x134374,_0x4d677c){_0x134374=_0x134374-0x0;var _0x9922b2=_0x1e82[_0x134374];return _0x9922b2;};'use strict';var multer=require(_0x21e8('0x0'));var util=require(_0x21e8('0x1'));var path=require(_0x21e8('0x2'));var timeout=require(_0x21e8('0x3'));var express=require(_0x21e8('0x4'));var router=express[_0x21e8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x21e8('0x6'));var interaction=require(_0x21e8('0x7'));var config=require('../../config/environment');var controller=require(_0x21e8('0x8'));router['get']('/',auth[_0x21e8('0x9')](),controller[_0x21e8('0xa')]);router[_0x21e8('0xb')](_0x21e8('0xc'),auth['isAuthenticated'](),controller[_0x21e8('0xd')]);router[_0x21e8('0xb')](_0x21e8('0xe'),auth['isAuthenticated'](),controller[_0x21e8('0xf')]);router[_0x21e8('0x10')]('/',auth[_0x21e8('0x9')](),controller[_0x21e8('0x11')]);router['post']('/:id/users',auth[_0x21e8('0x9')](),controller['addUsers']);router[_0x21e8('0x12')](_0x21e8('0xc'),auth['isAuthenticated'](),controller[_0x21e8('0x13')]);router['delete'](_0x21e8('0xc'),auth[_0x21e8('0x9')](),controller[_0x21e8('0x14')]);router['delete'](_0x21e8('0xe'),auth['isAuthenticated'](),controller[_0x21e8('0x15')]);module[_0x21e8('0x16')]=router;
\ No newline at end of file
+var _0xa547=['util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','/:id/users','getUsers','post','addUsers','put','update','delete','destroy','removeUsers','exports'];(function(_0x33d9a2,_0x5bf33c){var _0x4ac4ea=function(_0x167f4d){while(--_0x167f4d){_0x33d9a2['push'](_0x33d9a2['shift']());}};_0x4ac4ea(++_0x5bf33c);}(_0xa547,0xb0));var _0x7a54=function(_0x4e1edd,_0x3a5b0f){_0x4e1edd=_0x4e1edd-0x0;var _0x5ed706=_0xa547[_0x4e1edd];return _0x5ed706;};'use strict';var multer=require('multer');var util=require(_0x7a54('0x0'));var path=require('path');var timeout=require(_0x7a54('0x1'));var express=require('express');var router=express[_0x7a54('0x2')]();var fs_extra=require(_0x7a54('0x3'));var auth=require(_0x7a54('0x4'));var interaction=require(_0x7a54('0x5'));var config=require(_0x7a54('0x6'));var controller=require(_0x7a54('0x7'));router['get']('/',auth[_0x7a54('0x8')](),controller[_0x7a54('0x9')]);router[_0x7a54('0xa')](_0x7a54('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x7a54('0xa')](_0x7a54('0xc'),auth[_0x7a54('0x8')](),controller[_0x7a54('0xd')]);router[_0x7a54('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x7a54('0xc'),auth[_0x7a54('0x8')](),controller[_0x7a54('0xf')]);router[_0x7a54('0x10')](_0x7a54('0xb'),auth[_0x7a54('0x8')](),controller[_0x7a54('0x11')]);router[_0x7a54('0x12')](_0x7a54('0xb'),auth[_0x7a54('0x8')](),controller[_0x7a54('0x13')]);router[_0x7a54('0x12')]('/:id/users',auth[_0x7a54('0x8')](),controller[_0x7a54('0x14')]);module[_0x7a54('0x15')]=router;
\ No newline at end of file
index a6c7bc1..14480d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e2=['sequelize','STRING','TEXT','BLOB','long','preproduction','getDataValue','toString','utf8','production','DATE'];(function(_0x2c7341,_0x293a18){var _0x23f3fc=function(_0x5ca3f1){while(--_0x5ca3f1){_0x2c7341['push'](_0x2c7341['shift']());}};_0x23f3fc(++_0x293a18);}(_0x28e2,0xf2));var _0x228e=function(_0x11fef9,_0x296cb5){_0x11fef9=_0x11fef9-0x0;var _0x4febea=_0x28e2[_0x11fef9];return _0x4febea;};'use strict';var Sequelize=require(_0x228e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x228e('0x1')]},'notes':{'type':Sequelize[_0x228e('0x2')]},'preproduction':{'type':Sequelize[_0x228e('0x3')](_0x228e('0x4')),'get':function(){if(this['getDataValue'](_0x228e('0x5'))){return this[_0x228e('0x6')](_0x228e('0x5'))[_0x228e('0x7')](_0x228e('0x8'));}}},'production':{'type':Sequelize[_0x228e('0x3')](_0x228e('0x4')),'get':function(){if(this[_0x228e('0x6')](_0x228e('0x9'))){return this[_0x228e('0x6')](_0x228e('0x9'))[_0x228e('0x7')](_0x228e('0x8'));}}},'savedAt':{'type':Sequelize[_0x228e('0xa')]},'publishedAt':{'type':Sequelize[_0x228e('0xa')]}};
\ No newline at end of file
+var _0xd668=['getDataValue','DATE','sequelize','STRING','name','TEXT','BLOB','toString','utf8','long','production'];(function(_0x50ffbb,_0x21a925){var _0x576a1c=function(_0x8e27e6){while(--_0x8e27e6){_0x50ffbb['push'](_0x50ffbb['shift']());}};_0x576a1c(++_0x21a925);}(_0xd668,0x18e));var _0x8d66=function(_0x21db1b,_0x335697){_0x21db1b=_0x21db1b-0x0;var _0x321f93=_0xd668[_0x21db1b];return _0x321f93;};'use strict';var Sequelize=require(_0x8d66('0x0'));module['exports']={'name':{'type':Sequelize[_0x8d66('0x1')],'unique':_0x8d66('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x8d66('0x1')]},'notes':{'type':Sequelize[_0x8d66('0x3')]},'preproduction':{'type':Sequelize[_0x8d66('0x4')]('long'),'get':function(){if(this['getDataValue']('preproduction')){return this['getDataValue']('preproduction')[_0x8d66('0x5')](_0x8d66('0x6'));}}},'production':{'type':Sequelize['BLOB'](_0x8d66('0x7')),'get':function(){if(this['getDataValue'](_0x8d66('0x8'))){return this[_0x8d66('0x9')](_0x8d66('0x8'))[_0x8d66('0x5')]('utf8');}}},'savedAt':{'type':Sequelize[_0x8d66('0xa')]},'publishedAt':{'type':Sequelize[_0x8d66('0xa')]}};
\ No newline at end of file
index e5429bd..9cc27a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fab=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','destroy','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','User','order','nolimit','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','SquareProjects','UserProfileResource','error','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','SquareProject','includeAll','include','findAll','rows','catch','show','params','fields','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x7f4c04,_0xedbd21){var _0x53c7f2=function(_0x3dba5b){while(--_0x3dba5b){_0x7f4c04['push'](_0x7f4c04['shift']());}};_0x53c7f2(++_0xedbd21);}(_0x3fab,0x1a4));var _0xb3fa=function(_0x53438e,_0xf803bc){_0x53438e=_0x53438e-0x0;var _0x724f6d=_0x3fab[_0x53438e];return _0x724f6d;};'use strict';var emlformat=require(_0xb3fa('0x0'));var rimraf=require(_0xb3fa('0x1'));var zipdir=require(_0xb3fa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb3fa('0x3'));var moment=require(_0xb3fa('0x4'));var BPromise=require(_0xb3fa('0x5'));var Mustache=require(_0xb3fa('0x6'));var util=require('util');var path=require(_0xb3fa('0x7'));var sox=require(_0xb3fa('0x8'));var csv=require(_0xb3fa('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb3fa('0xa'));var _=require('lodash');var squel=require(_0xb3fa('0xb'));var crypto=require('crypto');var jsforce=require(_0xb3fa('0xc'));var deskjs=require(_0xb3fa('0xd'));var toCsv=require(_0xb3fa('0x9'));var querystring=require('querystring');var Papa=require(_0xb3fa('0xe'));var Redis=require(_0xb3fa('0xf'));var authService=require(_0xb3fa('0x10'));var qs=require(_0xb3fa('0x11'));var as=require(_0xb3fa('0x12'));var hardwareService=require(_0xb3fa('0x13'));var logger=require(_0xb3fa('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xb3fa('0x15'));var licenseUtil=require(_0xb3fa('0x16'));var db=require(_0xb3fa('0x17'))['db'];config[_0xb3fa('0x18')]=_[_0xb3fa('0x19')](config[_0xb3fa('0x18')],{'host':_0xb3fa('0x1a'),'port':0x18eb});var socket=require(_0xb3fa('0x1b'))(new Redis(config[_0xb3fa('0x18')]));require(_0xb3fa('0x1c'))[_0xb3fa('0x1d')](socket);function respondWithStatusCode(_0x1bd562,_0x16f712){_0x16f712=_0x16f712||0xcc;return function(_0x54fa20){if(_0x54fa20){return _0x1bd562[_0xb3fa('0x1e')](_0x16f712);}return _0x1bd562[_0xb3fa('0x1f')](_0x16f712)['end']();};}function respondWithResult(_0x57a888,_0x3e5cd5){_0x3e5cd5=_0x3e5cd5||0xc8;return function(_0x45eaf0){if(_0x45eaf0){return _0x57a888[_0xb3fa('0x1f')](_0x3e5cd5)[_0xb3fa('0x20')](_0x45eaf0);}};}function respondWithFilteredResult(_0x50675c,_0x28f717){return function(_0x2cec4a){if(_0x2cec4a){var _0x414e99=typeof _0x28f717[_0xb3fa('0x21')]===_0xb3fa('0x22')&&typeof _0x28f717[_0xb3fa('0x23')]===_0xb3fa('0x22');var _0x38af5c=_0x2cec4a[_0xb3fa('0x24')];var _0x280171=_0x414e99?0x0:_0x28f717[_0xb3fa('0x21')];var _0x3bc1e0=_0x414e99?_0x2cec4a[_0xb3fa('0x24')]:_0x28f717[_0xb3fa('0x21')]+_0x28f717[_0xb3fa('0x23')];var _0x1201a9;if(_0x3bc1e0>=_0x38af5c){_0x3bc1e0=_0x38af5c;_0x1201a9=0xc8;}else{_0x1201a9=0xce;}_0x50675c[_0xb3fa('0x1f')](_0x1201a9);return _0x50675c[_0xb3fa('0x25')](_0xb3fa('0x26'),_0x280171+'-'+_0x3bc1e0+'/'+_0x38af5c)['json'](_0x2cec4a);}return null;};}function patchUpdates(_0x36a8e1){return function(_0x26457a){try{jsonpatch[_0xb3fa('0x27')](_0x26457a,_0x36a8e1,!![]);}catch(_0x16a62e){return BPromise[_0xb3fa('0x28')](_0x16a62e);}return _0x26457a[_0xb3fa('0x29')]();};}function saveUpdates(_0x1742cc,_0x2e5323){return function(_0x14b5f3){if(_0x14b5f3){return _0x14b5f3['update'](_0x1742cc)[_0xb3fa('0x2a')](function(_0x5ec884){return _0x5ec884;});}return null;};}function removeEntity(_0x4aee60,_0x48c5a9){return function(_0x57acf5){if(_0x57acf5){return _0x57acf5['destroy']()[_0xb3fa('0x2a')](function(){var _0x3454a2=_0x57acf5[_0xb3fa('0x2b')]({'plain':!![]});var _0x50f8e5=_0xb3fa('0x2c');return db[_0xb3fa('0x2d')]['destroy']({'where':{'type':_0x50f8e5,'resourceId':_0x3454a2['id']}})[_0xb3fa('0x2a')](function(){return _0x57acf5;});})[_0xb3fa('0x2a')](function(){_0x4aee60[_0xb3fa('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b4931,_0x526639){return function(_0x51b00d){if(!_0x51b00d){_0x5b4931['sendStatus'](0x194);}return _0x51b00d;};}function handleError(_0xa610fd,_0x2c6fb9){_0x2c6fb9=_0x2c6fb9||0x1f4;return function(_0x2c65aa){logger[_0xb3fa('0x2e')](_0x2c65aa['stack']);if(_0x2c65aa[_0xb3fa('0x2f')]){delete _0x2c65aa[_0xb3fa('0x2f')];}_0xa610fd[_0xb3fa('0x1f')](_0x2c6fb9)['send'](_0x2c65aa);};}exports[_0xb3fa('0x30')]=function(_0xab4c56,_0x152a5e){var _0x2a6b06={},_0x35c9be={},_0x51a7ef={'count':0x0,'rows':[]};var _0x5530e3=_[_0xb3fa('0x31')](db['SquareProject'][_0xb3fa('0x32')],function(_0x303cf0){return{'name':_0x303cf0[_0xb3fa('0x33')],'type':_0x303cf0[_0xb3fa('0x34')][_0xb3fa('0x35')]};});_0x35c9be[_0xb3fa('0x36')]=_[_0xb3fa('0x31')](_0x5530e3,_0xb3fa('0x2f'));_0x35c9be[_0xb3fa('0x37')]=_[_0xb3fa('0x38')](_0xab4c56['query']);_0x35c9be[_0xb3fa('0x39')]=_[_0xb3fa('0x3a')](_0x35c9be[_0xb3fa('0x36')],_0x35c9be[_0xb3fa('0x37')]);_0x2a6b06[_0xb3fa('0x3b')]=_[_0xb3fa('0x3a')](_0x35c9be[_0xb3fa('0x36')],qs['fields'](_0xab4c56[_0xb3fa('0x37')]['fields']));_0x2a6b06[_0xb3fa('0x3b')]=_0x2a6b06['attributes']['length']?_0x2a6b06[_0xb3fa('0x3b')]:_0x35c9be[_0xb3fa('0x36')];if(!_0xab4c56[_0xb3fa('0x37')][_0xb3fa('0x3c')]('nolimit')){_0x2a6b06['limit']=qs[_0xb3fa('0x23')](_0xab4c56[_0xb3fa('0x37')][_0xb3fa('0x23')]);_0x2a6b06[_0xb3fa('0x21')]=qs['offset'](_0xab4c56[_0xb3fa('0x37')][_0xb3fa('0x21')]);}_0x2a6b06['order']=qs['sort'](_0xab4c56['query'][_0xb3fa('0x3d')]);_0x2a6b06[_0xb3fa('0x3e')]=qs[_0xb3fa('0x39')](_[_0xb3fa('0x3f')](_0xab4c56[_0xb3fa('0x37')],_0x35c9be[_0xb3fa('0x39')]),_0x5530e3);if(_0xab4c56[_0xb3fa('0x37')][_0xb3fa('0x40')]){_0x2a6b06[_0xb3fa('0x3e')]=_[_0xb3fa('0x41')](_0x2a6b06[_0xb3fa('0x3e')],{'$or':_[_0xb3fa('0x31')](_0x5530e3,function(_0xc88e7a){if(_0xc88e7a[_0xb3fa('0x34')]!==_0xb3fa('0x42')){var _0x1b2445={};_0x1b2445[_0xc88e7a[_0xb3fa('0x2f')]]={'$like':'%'+_0xab4c56[_0xb3fa('0x37')][_0xb3fa('0x40')]+'%'};return _0x1b2445;}})});}_0x2a6b06=_[_0xb3fa('0x41')]({},_0x2a6b06,_0xab4c56[_0xb3fa('0x43')]);var _0x4ff41d={'where':_0x2a6b06['where']};return db[_0xb3fa('0x44')]['count'](_0x4ff41d)[_0xb3fa('0x2a')](function(_0x481bda){_0x51a7ef['count']=_0x481bda;if(_0xab4c56[_0xb3fa('0x37')][_0xb3fa('0x45')]){_0x2a6b06[_0xb3fa('0x46')]=[{'all':!![]}];}return db['SquareProject'][_0xb3fa('0x47')](_0x2a6b06);})[_0xb3fa('0x2a')](function(_0x4713d8){_0x51a7ef[_0xb3fa('0x48')]=_0x4713d8;return _0x51a7ef;})[_0xb3fa('0x2a')](respondWithFilteredResult(_0x152a5e,_0x2a6b06))[_0xb3fa('0x49')](handleError(_0x152a5e,null));};exports[_0xb3fa('0x4a')]=function(_0x1fba1e,_0x2bd7ad){var _0x24ed37={'raw':![],'where':{'id':_0x1fba1e[_0xb3fa('0x4b')]['id']}},_0x7470fd={};_0x7470fd[_0xb3fa('0x36')]=_[_0xb3fa('0x38')](db['SquareProject']['rawAttributes']);_0x7470fd[_0xb3fa('0x37')]=_[_0xb3fa('0x38')](_0x1fba1e[_0xb3fa('0x37')]);_0x7470fd['filters']=_[_0xb3fa('0x3a')](_0x7470fd[_0xb3fa('0x36')],_0x7470fd[_0xb3fa('0x37')]);_0x24ed37[_0xb3fa('0x3b')]=_[_0xb3fa('0x3a')](_0x7470fd[_0xb3fa('0x36')],qs[_0xb3fa('0x4c')](_0x1fba1e[_0xb3fa('0x37')][_0xb3fa('0x4c')]));_0x24ed37[_0xb3fa('0x3b')]=_0x24ed37[_0xb3fa('0x3b')][_0xb3fa('0x4d')]?_0x24ed37[_0xb3fa('0x3b')]:_0x7470fd[_0xb3fa('0x36')];if(_0x1fba1e[_0xb3fa('0x37')][_0xb3fa('0x45')]){_0x24ed37[_0xb3fa('0x46')]=[{'all':!![]}];}_0x24ed37=_[_0xb3fa('0x41')]({},_0x24ed37,_0x1fba1e[_0xb3fa('0x43')]);return db[_0xb3fa('0x44')][_0xb3fa('0x4e')](_0x24ed37)[_0xb3fa('0x2a')](handleEntityNotFound(_0x2bd7ad,null))[_0xb3fa('0x2a')](respondWithResult(_0x2bd7ad,null))[_0xb3fa('0x49')](handleError(_0x2bd7ad,null));};exports[_0xb3fa('0x4f')]=function(_0x39023d,_0x2bd58d){return db[_0xb3fa('0x44')][_0xb3fa('0x4f')](_0x39023d['body'],{})['then'](function(_0x25fb09){var _0x579ea7=_0x39023d[_0xb3fa('0x50')][_0xb3fa('0x2b')]({'plain':!![]});if(!_0x579ea7)throw new Error(_0xb3fa('0x51'));if(_0x579ea7[_0xb3fa('0x52')]===_0xb3fa('0x50')){var _0xf886e7=_0x25fb09[_0xb3fa('0x2b')]({'plain':!![]});var _0x626723=_0xb3fa('0x2c');return db[_0xb3fa('0x53')][_0xb3fa('0x4e')]({'where':{'name':_0x626723,'userProfileId':_0x579ea7[_0xb3fa('0x54')]},'raw':!![]})[_0xb3fa('0x2a')](function(_0x37234b){if(_0x37234b&&_0x37234b[_0xb3fa('0x55')]===0x0){return db[_0xb3fa('0x2d')][_0xb3fa('0x4f')]({'name':_0xf886e7[_0xb3fa('0x2f')],'resourceId':_0xf886e7['id'],'type':_0x37234b['name'],'sectionId':_0x37234b['id']},{})[_0xb3fa('0x2a')](function(){return _0x25fb09;});}else{return _0x25fb09;}})[_0xb3fa('0x49')](function(_0x27fb3f){logger['error'](_0xb3fa('0x56'),_0x27fb3f);throw _0x27fb3f;});}return _0x25fb09;})[_0xb3fa('0x2a')](respondWithResult(_0x2bd58d,0xc9))[_0xb3fa('0x49')](handleError(_0x2bd58d,null));};exports[_0xb3fa('0x57')]=function(_0x4e8dfe,_0x45a2f7){if(_0x4e8dfe[_0xb3fa('0x58')]['id']){delete _0x4e8dfe[_0xb3fa('0x58')]['id'];}return db['SquareProject'][_0xb3fa('0x4e')]({'where':{'id':_0x4e8dfe['params']['id']}})[_0xb3fa('0x2a')](handleEntityNotFound(_0x45a2f7,null))['then'](saveUpdates(_0x4e8dfe[_0xb3fa('0x58')],null))[_0xb3fa('0x2a')](respondWithResult(_0x45a2f7,null))['catch'](handleError(_0x45a2f7,null));};exports[_0xb3fa('0x59')]=function(_0x559ae8,_0x266bbd){return db[_0xb3fa('0x44')][_0xb3fa('0x4e')]({'where':{'id':_0x559ae8[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x2a')](handleEntityNotFound(_0x266bbd,null))[_0xb3fa('0x2a')](removeEntity(_0x266bbd,null))[_0xb3fa('0x49')](handleError(_0x266bbd,null));};exports[_0xb3fa('0x5a')]=function(_0x5cb545,_0x5a56f8,_0x1e9a20){return db[_0xb3fa('0x44')]['find']({'where':{'id':_0x5cb545[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x2a')](handleEntityNotFound(_0x5a56f8,null))[_0xb3fa('0x2a')](function(_0x4f3b41){if(_0x4f3b41){return _0x4f3b41['addUsers'](_0x5cb545['body'][_0xb3fa('0x5b')],_[_0xb3fa('0x5c')](_0x5cb545[_0xb3fa('0x58')],[_0xb3fa('0x5b'),'id'])||{});}})[_0xb3fa('0x2a')](respondWithResult(_0x5a56f8,null))[_0xb3fa('0x49')](handleError(_0x5a56f8,null));};exports['removeUsers']=function(_0x324c2a,_0x2ee4ea,_0x1d3922){return db[_0xb3fa('0x44')][_0xb3fa('0x4e')]({'where':{'id':_0x324c2a[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x2a')](handleEntityNotFound(_0x2ee4ea,null))[_0xb3fa('0x2a')](function(_0x274598){if(_0x274598){return _0x274598[_0xb3fa('0x5d')](_0x324c2a[_0xb3fa('0x37')][_0xb3fa('0x5b')])[_0xb3fa('0x2a')](function(){if(_[_0xb3fa('0x5e')](_0x324c2a[_0xb3fa('0x37')][_0xb3fa('0x5b')])){for(var _0x5a47fd=0x0;_0x5a47fd<_0x324c2a[_0xb3fa('0x37')]['ids'][_0xb3fa('0x4d')];_0x5a47fd+=0x1){socket[_0xb3fa('0x5f')]('userSquareProject:remove',{'UserId':Number(_0x324c2a[_0xb3fa('0x37')][_0xb3fa('0x5b')][_0x5a47fd]),'SquareProjectId':Number(_0x324c2a[_0xb3fa('0x4b')]['id'])});}}else{socket['emit'](_0xb3fa('0x60'),{'UserId':Number(_0x324c2a['query'][_0xb3fa('0x5b')]),'SquareProjectId':Number(_0x324c2a[_0xb3fa('0x4b')]['id'])});}});}})[_0xb3fa('0x2a')](respondWithStatusCode(_0x2ee4ea,null))[_0xb3fa('0x49')](handleError(_0x2ee4ea,null));};exports[_0xb3fa('0x61')]=function(_0x533241,_0x16aabe,_0x5ac6c6){var _0x4d8aa1={};var _0x49dbf1={};var _0x118a00;var _0x110c5f;return db[_0xb3fa('0x44')]['findOne']({'where':{'id':_0x533241[_0xb3fa('0x4b')]['id']}})[_0xb3fa('0x2a')](handleEntityNotFound(_0x16aabe,null))['then'](function(_0x575d29){if(_0x575d29){_0x118a00=_0x575d29;_0x49dbf1[_0xb3fa('0x36')]=_[_0xb3fa('0x38')](db[_0xb3fa('0x62')][_0xb3fa('0x32')]);_0x49dbf1[_0xb3fa('0x37')]=_['keys'](_0x533241[_0xb3fa('0x37')]);_0x49dbf1[_0xb3fa('0x39')]=_[_0xb3fa('0x3a')](_0x49dbf1[_0xb3fa('0x36')],_0x49dbf1['query']);_0x4d8aa1[_0xb3fa('0x3b')]=_['intersection'](_0x49dbf1['model'],qs['fields'](_0x533241[_0xb3fa('0x37')]['fields']));_0x4d8aa1[_0xb3fa('0x3b')]=_0x4d8aa1[_0xb3fa('0x3b')][_0xb3fa('0x4d')]?_0x4d8aa1[_0xb3fa('0x3b')]:_0x49dbf1[_0xb3fa('0x36')];_0x4d8aa1[_0xb3fa('0x63')]=qs[_0xb3fa('0x3d')](_0x533241[_0xb3fa('0x37')][_0xb3fa('0x3d')]);_0x4d8aa1[_0xb3fa('0x3e')]=qs[_0xb3fa('0x39')](_[_0xb3fa('0x3f')](_0x533241[_0xb3fa('0x37')],_0x49dbf1[_0xb3fa('0x39')]));if(_0x533241[_0xb3fa('0x37')][_0xb3fa('0x40')]){_0x4d8aa1[_0xb3fa('0x3e')]=_[_0xb3fa('0x41')](_0x4d8aa1['where'],{'$or':_['map'](_0x4d8aa1[_0xb3fa('0x3b')],function(_0x28014c){var _0x28837d={};_0x28837d[_0x28014c]={'$like':'%'+_0x533241[_0xb3fa('0x37')]['filter']+'%'};return _0x28837d;})});}_0x4d8aa1=_['merge']({},_0x4d8aa1,_0x533241[_0xb3fa('0x43')]);return _0x118a00[_0xb3fa('0x61')](_0x4d8aa1);}})[_0xb3fa('0x2a')](function(_0x13e0fe){if(_0x13e0fe){_0x110c5f=_0x13e0fe[_0xb3fa('0x4d')];if(!_0x533241['query'][_0xb3fa('0x3c')](_0xb3fa('0x64'))){_0x4d8aa1[_0xb3fa('0x23')]=qs[_0xb3fa('0x23')](_0x533241[_0xb3fa('0x37')][_0xb3fa('0x23')]);_0x4d8aa1['offset']=qs[_0xb3fa('0x21')](_0x533241[_0xb3fa('0x37')]['offset']);}return _0x118a00['getUsers'](_0x4d8aa1);}})['then'](function(_0x1eb738){if(_0x1eb738){return _0x1eb738?{'count':_0x110c5f,'rows':_0x1eb738}:null;}})[_0xb3fa('0x2a')](respondWithResult(_0x16aabe,null))[_0xb3fa('0x49')](handleError(_0x16aabe,null));};
\ No newline at end of file
+var _0xd23f=['json','reject','save','update','then','get','SquareProjects','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','SquareProject','includeAll','include','rows','catch','show','params','rawAttributes','fields','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','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','end','offset','undefined','limit','count','status','set','Content-Range'];(function(_0xff493f,_0xfdad0f){var _0x2e4b20=function(_0x1608dd){while(--_0x1608dd){_0xff493f['push'](_0xff493f['shift']());}};_0x2e4b20(++_0xfdad0f);}(_0xd23f,0xa5));var _0xfd23=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xd23f[_0x3054be];return _0x3df150;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfd23('0x0'));var zipdir=require(_0xfd23('0x1'));var jsonpatch=require(_0xfd23('0x2'));var rp=require(_0xfd23('0x3'));var moment=require(_0xfd23('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfd23('0x5'));var util=require(_0xfd23('0x6'));var path=require(_0xfd23('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfd23('0x8'));var fs=require('fs');var fs_extra=require(_0xfd23('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfd23('0xa'));var jsforce=require(_0xfd23('0xb'));var deskjs=require(_0xfd23('0xc'));var toCsv=require(_0xfd23('0xd'));var querystring=require(_0xfd23('0xe'));var Papa=require(_0xfd23('0xf'));var Redis=require(_0xfd23('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfd23('0x11'));var as=require(_0xfd23('0x12'));var hardwareService=require(_0xfd23('0x13'));var logger=require(_0xfd23('0x14'))(_0xfd23('0x15'));var utils=require(_0xfd23('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xfd23('0x17'));var db=require('../../mysqldb')['db'];config[_0xfd23('0x18')]=_[_0xfd23('0x19')](config[_0xfd23('0x18')],{'host':_0xfd23('0x1a'),'port':0x18eb});var socket=require(_0xfd23('0x1b'))(new Redis(config[_0xfd23('0x18')]));require('./squareProject.socket')[_0xfd23('0x1c')](socket);function respondWithStatusCode(_0x489968,_0x4977e0){_0x4977e0=_0x4977e0||0xcc;return function(_0x211169){if(_0x211169){return _0x489968['sendStatus'](_0x4977e0);}return _0x489968['status'](_0x4977e0)[_0xfd23('0x1d')]();};}function respondWithResult(_0x13b7c1,_0x178f4e){_0x178f4e=_0x178f4e||0xc8;return function(_0x4a0081){if(_0x4a0081){return _0x13b7c1['status'](_0x178f4e)['json'](_0x4a0081);}};}function respondWithFilteredResult(_0x454445,_0x2ddd58){return function(_0x34a1bd){if(_0x34a1bd){var _0x5b10f1=typeof _0x2ddd58[_0xfd23('0x1e')]===_0xfd23('0x1f')&&typeof _0x2ddd58[_0xfd23('0x20')]===_0xfd23('0x1f');var _0x1d1d1a=_0x34a1bd['count'];var _0x3d5be8=_0x5b10f1?0x0:_0x2ddd58[_0xfd23('0x1e')];var _0xeced77=_0x5b10f1?_0x34a1bd[_0xfd23('0x21')]:_0x2ddd58['offset']+_0x2ddd58[_0xfd23('0x20')];var _0x7878f8;if(_0xeced77>=_0x1d1d1a){_0xeced77=_0x1d1d1a;_0x7878f8=0xc8;}else{_0x7878f8=0xce;}_0x454445[_0xfd23('0x22')](_0x7878f8);return _0x454445[_0xfd23('0x23')](_0xfd23('0x24'),_0x3d5be8+'-'+_0xeced77+'/'+_0x1d1d1a)[_0xfd23('0x25')](_0x34a1bd);}return null;};}function patchUpdates(_0x5cb6fc){return function(_0x1c75a1){try{jsonpatch['apply'](_0x1c75a1,_0x5cb6fc,!![]);}catch(_0x325bc9){return BPromise[_0xfd23('0x26')](_0x325bc9);}return _0x1c75a1[_0xfd23('0x27')]();};}function saveUpdates(_0x4c6582,_0x4a11fd){return function(_0x51dc16){if(_0x51dc16){return _0x51dc16[_0xfd23('0x28')](_0x4c6582)['then'](function(_0x1272f8){return _0x1272f8;});}return null;};}function removeEntity(_0x257bb7,_0x2a7a94){return function(_0x1f2ace){if(_0x1f2ace){return _0x1f2ace['destroy']()[_0xfd23('0x29')](function(){var _0x31a14f=_0x1f2ace[_0xfd23('0x2a')]({'plain':!![]});var _0x1df4b8=_0xfd23('0x2b');return db[_0xfd23('0x2c')][_0xfd23('0x2d')]({'where':{'type':_0x1df4b8,'resourceId':_0x31a14f['id']}})['then'](function(){return _0x1f2ace;});})[_0xfd23('0x29')](function(){_0x257bb7[_0xfd23('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x202a70,_0x5a5fc3){return function(_0x54d34a){if(!_0x54d34a){_0x202a70[_0xfd23('0x2e')](0x194);}return _0x54d34a;};}function handleError(_0x36b0fc,_0x2c921b){_0x2c921b=_0x2c921b||0x1f4;return function(_0x4047a8){logger[_0xfd23('0x2f')](_0x4047a8[_0xfd23('0x30')]);if(_0x4047a8[_0xfd23('0x31')]){delete _0x4047a8[_0xfd23('0x31')];}_0x36b0fc[_0xfd23('0x22')](_0x2c921b)[_0xfd23('0x32')](_0x4047a8);};}exports[_0xfd23('0x33')]=function(_0x50a724,_0x118c19){var _0x167d71={},_0x12f89f={},_0x2e4d0d={'count':0x0,'rows':[]};var _0x5460d2=_[_0xfd23('0x34')](db['SquareProject']['rawAttributes'],function(_0x29515d){return{'name':_0x29515d[_0xfd23('0x35')],'type':_0x29515d['type'][_0xfd23('0x36')]};});_0x12f89f[_0xfd23('0x37')]=_[_0xfd23('0x34')](_0x5460d2,_0xfd23('0x31'));_0x12f89f[_0xfd23('0x38')]=_[_0xfd23('0x39')](_0x50a724[_0xfd23('0x38')]);_0x12f89f[_0xfd23('0x3a')]=_[_0xfd23('0x3b')](_0x12f89f[_0xfd23('0x37')],_0x12f89f[_0xfd23('0x38')]);_0x167d71[_0xfd23('0x3c')]=_[_0xfd23('0x3b')](_0x12f89f[_0xfd23('0x37')],qs['fields'](_0x50a724[_0xfd23('0x38')]['fields']));_0x167d71['attributes']=_0x167d71[_0xfd23('0x3c')][_0xfd23('0x3d')]?_0x167d71[_0xfd23('0x3c')]:_0x12f89f[_0xfd23('0x37')];if(!_0x50a724[_0xfd23('0x38')][_0xfd23('0x3e')]('nolimit')){_0x167d71['limit']=qs['limit'](_0x50a724[_0xfd23('0x38')][_0xfd23('0x20')]);_0x167d71['offset']=qs[_0xfd23('0x1e')](_0x50a724[_0xfd23('0x38')]['offset']);}_0x167d71[_0xfd23('0x3f')]=qs[_0xfd23('0x40')](_0x50a724['query'][_0xfd23('0x40')]);_0x167d71[_0xfd23('0x41')]=qs[_0xfd23('0x3a')](_[_0xfd23('0x42')](_0x50a724['query'],_0x12f89f['filters']),_0x5460d2);if(_0x50a724[_0xfd23('0x38')][_0xfd23('0x43')]){_0x167d71[_0xfd23('0x41')]=_[_0xfd23('0x44')](_0x167d71[_0xfd23('0x41')],{'$or':_[_0xfd23('0x34')](_0x5460d2,function(_0x3f5d71){if(_0x3f5d71[_0xfd23('0x45')]!=='VIRTUAL'){var _0x195279={};_0x195279[_0x3f5d71[_0xfd23('0x31')]]={'$like':'%'+_0x50a724[_0xfd23('0x38')][_0xfd23('0x43')]+'%'};return _0x195279;}})});}_0x167d71=_[_0xfd23('0x44')]({},_0x167d71,_0x50a724[_0xfd23('0x46')]);var _0x30cc4c={'where':_0x167d71[_0xfd23('0x41')]};return db[_0xfd23('0x47')][_0xfd23('0x21')](_0x30cc4c)['then'](function(_0x4bf32f){_0x2e4d0d[_0xfd23('0x21')]=_0x4bf32f;if(_0x50a724['query'][_0xfd23('0x48')]){_0x167d71[_0xfd23('0x49')]=[{'all':!![]}];}return db[_0xfd23('0x47')]['findAll'](_0x167d71);})['then'](function(_0x694962){_0x2e4d0d[_0xfd23('0x4a')]=_0x694962;return _0x2e4d0d;})[_0xfd23('0x29')](respondWithFilteredResult(_0x118c19,_0x167d71))[_0xfd23('0x4b')](handleError(_0x118c19,null));};exports[_0xfd23('0x4c')]=function(_0x1f4a2b,_0x58b7e7){var _0x3f376b={'raw':![],'where':{'id':_0x1f4a2b[_0xfd23('0x4d')]['id']}},_0x25a72f={};_0x25a72f[_0xfd23('0x37')]=_[_0xfd23('0x39')](db['SquareProject'][_0xfd23('0x4e')]);_0x25a72f['query']=_[_0xfd23('0x39')](_0x1f4a2b[_0xfd23('0x38')]);_0x25a72f[_0xfd23('0x3a')]=_['intersection'](_0x25a72f[_0xfd23('0x37')],_0x25a72f[_0xfd23('0x38')]);_0x3f376b[_0xfd23('0x3c')]=_['intersection'](_0x25a72f[_0xfd23('0x37')],qs[_0xfd23('0x4f')](_0x1f4a2b[_0xfd23('0x38')]['fields']));_0x3f376b[_0xfd23('0x3c')]=_0x3f376b['attributes'][_0xfd23('0x3d')]?_0x3f376b[_0xfd23('0x3c')]:_0x25a72f[_0xfd23('0x37')];if(_0x1f4a2b[_0xfd23('0x38')][_0xfd23('0x48')]){_0x3f376b[_0xfd23('0x49')]=[{'all':!![]}];}_0x3f376b=_[_0xfd23('0x44')]({},_0x3f376b,_0x1f4a2b[_0xfd23('0x46')]);return db[_0xfd23('0x47')][_0xfd23('0x50')](_0x3f376b)[_0xfd23('0x29')](handleEntityNotFound(_0x58b7e7,null))[_0xfd23('0x29')](respondWithResult(_0x58b7e7,null))[_0xfd23('0x4b')](handleError(_0x58b7e7,null));};exports[_0xfd23('0x51')]=function(_0x494ca2,_0x472433){return db['SquareProject'][_0xfd23('0x51')](_0x494ca2[_0xfd23('0x52')],{})['then'](function(_0x459f36){var _0x1377ec=_0x494ca2[_0xfd23('0x53')][_0xfd23('0x2a')]({'plain':!![]});if(!_0x1377ec)throw new Error(_0xfd23('0x54'));if(_0x1377ec[_0xfd23('0x55')]===_0xfd23('0x53')){var _0x4ec070=_0x459f36[_0xfd23('0x2a')]({'plain':!![]});var _0x1c78bc=_0xfd23('0x2b');return db[_0xfd23('0x56')][_0xfd23('0x50')]({'where':{'name':_0x1c78bc,'userProfileId':_0x1377ec[_0xfd23('0x57')]},'raw':!![]})['then'](function(_0x2f767c){if(_0x2f767c&&_0x2f767c[_0xfd23('0x58')]===0x0){return db[_0xfd23('0x2c')]['create']({'name':_0x4ec070['name'],'resourceId':_0x4ec070['id'],'type':_0x2f767c[_0xfd23('0x31')],'sectionId':_0x2f767c['id']},{})[_0xfd23('0x29')](function(){return _0x459f36;});}else{return _0x459f36;}})[_0xfd23('0x4b')](function(_0x43ed77){logger[_0xfd23('0x2f')](_0xfd23('0x59'),_0x43ed77);throw _0x43ed77;});}return _0x459f36;})[_0xfd23('0x29')](respondWithResult(_0x472433,0xc9))[_0xfd23('0x4b')](handleError(_0x472433,null));};exports[_0xfd23('0x28')]=function(_0x18d917,_0x3dc6f8){if(_0x18d917[_0xfd23('0x52')]['id']){delete _0x18d917[_0xfd23('0x52')]['id'];}return db['SquareProject'][_0xfd23('0x50')]({'where':{'id':_0x18d917[_0xfd23('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3dc6f8,null))[_0xfd23('0x29')](saveUpdates(_0x18d917['body'],null))[_0xfd23('0x29')](respondWithResult(_0x3dc6f8,null))['catch'](handleError(_0x3dc6f8,null));};exports[_0xfd23('0x2d')]=function(_0x24b064,_0x11add1){return db[_0xfd23('0x47')][_0xfd23('0x50')]({'where':{'id':_0x24b064[_0xfd23('0x4d')]['id']}})[_0xfd23('0x29')](handleEntityNotFound(_0x11add1,null))[_0xfd23('0x29')](removeEntity(_0x11add1,null))[_0xfd23('0x4b')](handleError(_0x11add1,null));};exports['addUsers']=function(_0x4543e4,_0x35f797,_0x436736){return db['SquareProject'][_0xfd23('0x50')]({'where':{'id':_0x4543e4[_0xfd23('0x4d')]['id']}})['then'](handleEntityNotFound(_0x35f797,null))[_0xfd23('0x29')](function(_0x1d8f3e){if(_0x1d8f3e){return _0x1d8f3e[_0xfd23('0x5a')](_0x4543e4[_0xfd23('0x52')][_0xfd23('0x5b')],_[_0xfd23('0x5c')](_0x4543e4[_0xfd23('0x52')],[_0xfd23('0x5b'),'id'])||{});}})[_0xfd23('0x29')](respondWithResult(_0x35f797,null))[_0xfd23('0x4b')](handleError(_0x35f797,null));};exports[_0xfd23('0x5d')]=function(_0x2f04f9,_0xdfd6f6,_0x413dcc){return db[_0xfd23('0x47')]['find']({'where':{'id':_0x2f04f9[_0xfd23('0x4d')]['id']}})[_0xfd23('0x29')](handleEntityNotFound(_0xdfd6f6,null))[_0xfd23('0x29')](function(_0x453e44){if(_0x453e44){return _0x453e44[_0xfd23('0x5d')](_0x2f04f9[_0xfd23('0x38')]['ids'])[_0xfd23('0x29')](function(){if(_[_0xfd23('0x5e')](_0x2f04f9[_0xfd23('0x38')][_0xfd23('0x5b')])){for(var _0x1869d4=0x0;_0x1869d4<_0x2f04f9['query'][_0xfd23('0x5b')][_0xfd23('0x3d')];_0x1869d4+=0x1){socket[_0xfd23('0x5f')](_0xfd23('0x60'),{'UserId':Number(_0x2f04f9[_0xfd23('0x38')][_0xfd23('0x5b')][_0x1869d4]),'SquareProjectId':Number(_0x2f04f9['params']['id'])});}}else{socket[_0xfd23('0x5f')](_0xfd23('0x60'),{'UserId':Number(_0x2f04f9[_0xfd23('0x38')][_0xfd23('0x5b')]),'SquareProjectId':Number(_0x2f04f9['params']['id'])});}});}})['then'](respondWithStatusCode(_0xdfd6f6,null))[_0xfd23('0x4b')](handleError(_0xdfd6f6,null));};exports[_0xfd23('0x61')]=function(_0x495f68,_0x2a03c4,_0x231f98){var _0x489274={};var _0x44da03={};var _0x29e17e;var _0x13f802;return db[_0xfd23('0x47')][_0xfd23('0x62')]({'where':{'id':_0x495f68['params']['id']}})[_0xfd23('0x29')](handleEntityNotFound(_0x2a03c4,null))[_0xfd23('0x29')](function(_0x17eae9){if(_0x17eae9){_0x29e17e=_0x17eae9;_0x44da03[_0xfd23('0x37')]=_[_0xfd23('0x39')](db[_0xfd23('0x63')]['rawAttributes']);_0x44da03[_0xfd23('0x38')]=_[_0xfd23('0x39')](_0x495f68['query']);_0x44da03[_0xfd23('0x3a')]=_[_0xfd23('0x3b')](_0x44da03[_0xfd23('0x37')],_0x44da03[_0xfd23('0x38')]);_0x489274[_0xfd23('0x3c')]=_[_0xfd23('0x3b')](_0x44da03['model'],qs['fields'](_0x495f68[_0xfd23('0x38')][_0xfd23('0x4f')]));_0x489274['attributes']=_0x489274[_0xfd23('0x3c')]['length']?_0x489274[_0xfd23('0x3c')]:_0x44da03['model'];_0x489274[_0xfd23('0x3f')]=qs[_0xfd23('0x40')](_0x495f68[_0xfd23('0x38')]['sort']);_0x489274[_0xfd23('0x41')]=qs[_0xfd23('0x3a')](_[_0xfd23('0x42')](_0x495f68['query'],_0x44da03[_0xfd23('0x3a')]));if(_0x495f68['query'][_0xfd23('0x43')]){_0x489274['where']=_[_0xfd23('0x44')](_0x489274['where'],{'$or':_[_0xfd23('0x34')](_0x489274[_0xfd23('0x3c')],function(_0x38cf50){var _0x4149af={};_0x4149af[_0x38cf50]={'$like':'%'+_0x495f68[_0xfd23('0x38')][_0xfd23('0x43')]+'%'};return _0x4149af;})});}_0x489274=_[_0xfd23('0x44')]({},_0x489274,_0x495f68[_0xfd23('0x46')]);return _0x29e17e[_0xfd23('0x61')](_0x489274);}})[_0xfd23('0x29')](function(_0x4e9b7c){if(_0x4e9b7c){_0x13f802=_0x4e9b7c[_0xfd23('0x3d')];if(!_0x495f68['query'][_0xfd23('0x3e')](_0xfd23('0x64'))){_0x489274[_0xfd23('0x20')]=qs[_0xfd23('0x20')](_0x495f68[_0xfd23('0x38')][_0xfd23('0x20')]);_0x489274[_0xfd23('0x1e')]=qs[_0xfd23('0x1e')](_0x495f68['query']['offset']);}return _0x29e17e['getUsers'](_0x489274);}})[_0xfd23('0x29')](function(_0x16c006){if(_0x16c006){return _0x16c006?{'count':_0x13f802,'rows':_0x16c006}:null;}})[_0xfd23('0x29')](respondWithResult(_0x2a03c4,null))[_0xfd23('0x4b')](handleError(_0x2a03c4,null));};
\ No newline at end of file
index 388f64f..1608052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c6=['events','../../mysqldb','SquareProject','setMaxListeners','save','update','emit','hasOwnProperty','exports'];(function(_0x336a6e,_0x4c454f){var _0x4c0b21=function(_0x3590a0){while(--_0x3590a0){_0x336a6e['push'](_0x336a6e['shift']());}};_0x4c0b21(++_0x4c454f);}(_0xf2c6,0x129));var _0x6f2c=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xf2c6[_0x31e29a];return _0x32d892;};'use strict';var EventEmitter=require(_0x6f2c('0x0'));var SquareProject=require(_0x6f2c('0x1'))['db'][_0x6f2c('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x6f2c('0x3')](0x0);var events={'afterCreate':_0x6f2c('0x4'),'afterUpdate':_0x6f2c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4c7af6){return function(_0x4b89a8,_0x158860,_0x16d12a){SquareProjectEvents[_0x6f2c('0x6')](_0x4c7af6+':'+_0x4b89a8['id'],_0x4b89a8);SquareProjectEvents['emit'](_0x4c7af6,_0x4b89a8);_0x16d12a(null);};}for(var e in events){if(events[_0x6f2c('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x6f2c('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0x9c21=['save','update','remove','emit','hook','events','SquareProject','setMaxListeners'];(function(_0x3d905,_0x7b688d){var _0x3a990b=function(_0x5b79a6){while(--_0x5b79a6){_0x3d905['push'](_0x3d905['shift']());}};_0x3a990b(++_0x7b688d);}(_0x9c21,0x1c5));var _0x19c2=function(_0x279930,_0x4e4e3f){_0x279930=_0x279930-0x0;var _0xea4b2b=_0x9c21[_0x279930];return _0xea4b2b;};'use strict';var EventEmitter=require(_0x19c2('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x19c2('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x19c2('0x2')](0x0);var events={'afterCreate':_0x19c2('0x3'),'afterUpdate':_0x19c2('0x4'),'afterDestroy':_0x19c2('0x5')};function emitEvent(_0x511331){return function(_0x3436e5,_0x1815fc,_0x2c419e){SquareProjectEvents[_0x19c2('0x6')](_0x511331+':'+_0x3436e5['id'],_0x3436e5);SquareProjectEvents['emit'](_0x511331,_0x3436e5);_0x2c419e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0x19c2('0x7')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index 151e02c..e211d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8002=['square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./squareProject.attributes','exports','define'];(function(_0x4ecbf5,_0x237497){var _0x49c70f=function(_0x22ae4b){while(--_0x22ae4b){_0x4ecbf5['push'](_0x4ecbf5['shift']());}};_0x49c70f(++_0x237497);}(_0x8002,0x16e));var _0x2800=function(_0x4d6dc0,_0x78d1b6){_0x4d6dc0=_0x4d6dc0-0x0;var _0x37d76b=_0x8002[_0x4d6dc0];return _0x37d76b;};'use strict';var _=require(_0x2800('0x0'));var util=require(_0x2800('0x1'));var logger=require(_0x2800('0x2'))(_0x2800('0x3'));var moment=require(_0x2800('0x4'));var BPromise=require(_0x2800('0x5'));var rp=require(_0x2800('0x6'));var fs=require('fs');var path=require(_0x2800('0x7'));var rimraf=require(_0x2800('0x8'));var config=require('../../config/environment');var attributes=require(_0x2800('0x9'));module[_0x2800('0xa')]=function(_0xd3a2d0,_0x3942f2){return _0xd3a2d0[_0x2800('0xb')]('SquareProject',attributes,{'tableName':_0x2800('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1c4196,_0x127395,_0x195f08){if(_0x1c4196[_0x2800('0xd')](_0x2800('0xe'))){_0x1c4196[_0x2800('0xf')]=moment()[_0x2800('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x1c4196['changed']('production')){_0x1c4196['publishedAt']=moment()[_0x2800('0x10')](_0x2800('0x11'));}_0x195f08(null,_0x1c4196);}}});};
\ No newline at end of file
+var _0x5f56=['moment','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','production','publishedAt','lodash','../../config/logger'];(function(_0xa9c7a8,_0x34d9ea){var _0x25da6e=function(_0xb04e5f){while(--_0xb04e5f){_0xa9c7a8['push'](_0xa9c7a8['shift']());}};_0x25da6e(++_0x34d9ea);}(_0x5f56,0x130));var _0x65f5=function(_0x5b6cf1,_0x32fdcd){_0x5b6cf1=_0x5b6cf1-0x0;var _0x46278c=_0x5f56[_0x5b6cf1];return _0x46278c;};'use strict';var _=require(_0x65f5('0x0'));var util=require('util');var logger=require(_0x65f5('0x1'))('api');var moment=require(_0x65f5('0x2'));var BPromise=require('bluebird');var rp=require(_0x65f5('0x3'));var fs=require('fs');var path=require(_0x65f5('0x4'));var rimraf=require(_0x65f5('0x5'));var config=require(_0x65f5('0x6'));var attributes=require(_0x65f5('0x7'));module[_0x65f5('0x8')]=function(_0x426fc6,_0xd268f0){return _0x426fc6[_0x65f5('0x9')](_0x65f5('0xa'),attributes,{'tableName':_0x65f5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x156826,_0x224a3b,_0x5376b8){if(_0x156826['changed']('preproduction')){_0x156826[_0x65f5('0xc')]=moment()[_0x65f5('0xd')](_0x65f5('0xe'));}if(_0x156826[_0x65f5('0xf')](_0x65f5('0x10'))){_0x156826[_0x65f5('0x11')]=moment()[_0x65f5('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5376b8(null,_0x156826);}}});};
\ No newline at end of file
index 7d16deb..9968202 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1d5=['../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./squareProject.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','SquareProject,\x20%s,\x20%s','message','result','catch','SquareProject','find','options','raw','where','attributes','include','map','model','ShowSquareProject','lodash','moment','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x364ee5,_0x1587fb){var _0x3d287c=function(_0x11bbc8){while(--_0x11bbc8){_0x364ee5['push'](_0x364ee5['shift']());}};_0x3d287c(++_0x1587fb);}(_0xa1d5,0x191));var _0x5a1d=function(_0x3da143,_0x71b28b){_0x3da143=_0x3da143-0x0;var _0x299878=_0xa1d5[_0x3da143];return _0x299878;};'use strict';var _=require(_0x5a1d('0x0'));var util=require('util');var moment=require(_0x5a1d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5a1d('0x2'));var db=require(_0x5a1d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5a1d('0x4'))(_0x5a1d('0x5'));var config=require(_0x5a1d('0x6'));var jayson=require(_0x5a1d('0x7'));var client=jayson[_0x5a1d('0x8')][_0x5a1d('0x9')]({'port':0x232a});config[_0x5a1d('0xa')]=_[_0x5a1d('0xb')](config[_0x5a1d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x5a1d('0xc'))(new Redis(config[_0x5a1d('0xa')]));require(_0x5a1d('0xd'))[_0x5a1d('0xe')](socket);function respondWithRpcPromise(_0x353622,_0x35ac37,_0x1006ce){return new BPromise(function(_0x48140c,_0x486dfc){return client[_0x5a1d('0xf')](_0x353622,_0x1006ce)[_0x5a1d('0x10')](function(_0x2f59f7){logger[_0x5a1d('0x11')]('SquareProject,\x20%s,\x20%s',_0x35ac37,_0x5a1d('0x12'));logger[_0x5a1d('0x13')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x35ac37,_0x5a1d('0x12'),JSON[_0x5a1d('0x14')](_0x2f59f7));if(_0x2f59f7[_0x5a1d('0x15')]){if(_0x2f59f7[_0x5a1d('0x15')][_0x5a1d('0x16')]===0x1f4){logger['error'](_0x5a1d('0x17'),_0x35ac37,_0x2f59f7[_0x5a1d('0x15')][_0x5a1d('0x18')]);return _0x486dfc(_0x2f59f7[_0x5a1d('0x15')]['message']);}logger[_0x5a1d('0x15')](_0x5a1d('0x17'),_0x35ac37,_0x2f59f7[_0x5a1d('0x15')][_0x5a1d('0x18')]);return _0x48140c(_0x2f59f7['error'][_0x5a1d('0x18')]);}else{logger[_0x5a1d('0x11')](_0x5a1d('0x17'),_0x35ac37,_0x5a1d('0x12'));_0x48140c(_0x2f59f7[_0x5a1d('0x19')][_0x5a1d('0x18')]);}})[_0x5a1d('0x1a')](function(_0x279109){logger[_0x5a1d('0x15')](_0x5a1d('0x17'),_0x35ac37,_0x279109);_0x486dfc(_0x279109);});});}exports['ShowSquareProject']=function(_0x3e071a){var _0xf52510=this;return new Promise(function(_0x367384,_0x47c846){return db[_0x5a1d('0x1b')][_0x5a1d('0x1c')]({'raw':_0x3e071a[_0x5a1d('0x1d')]?_0x3e071a[_0x5a1d('0x1d')][_0x5a1d('0x1e')]===undefined?!![]:![]:!![],'where':_0x3e071a[_0x5a1d('0x1d')]?_0x3e071a['options'][_0x5a1d('0x1f')]||null:null,'attributes':_0x3e071a[_0x5a1d('0x1d')]?_0x3e071a[_0x5a1d('0x1d')][_0x5a1d('0x20')]||null:null,'include':_0x3e071a[_0x5a1d('0x1d')]?_0x3e071a[_0x5a1d('0x1d')][_0x5a1d('0x21')]?_[_0x5a1d('0x22')](_0x3e071a[_0x5a1d('0x1d')]['include'],function(_0x40f1b8){return{'model':db[_0x40f1b8[_0x5a1d('0x23')]],'as':_0x40f1b8['as'],'attributes':_0x40f1b8[_0x5a1d('0x20')],'include':_0x40f1b8['include']?_['map'](_0x40f1b8[_0x5a1d('0x21')],function(_0x5b90e4){return{'model':db[_0x5b90e4[_0x5a1d('0x23')]],'as':_0x5b90e4['as'],'attributes':_0x5b90e4[_0x5a1d('0x20')],'include':_0x5b90e4[_0x5a1d('0x21')]?_['map'](_0x5b90e4[_0x5a1d('0x21')],function(_0x1c66fd){return{'model':db[_0x1c66fd['model']],'as':_0x1c66fd['as'],'attributes':_0x1c66fd['attributes']};}):[]};}):[]};}):[]:[]})[_0x5a1d('0x10')](function(_0x32fd61){logger[_0x5a1d('0x11')](_0x5a1d('0x24'),_0x3e071a);logger['debug']('ShowSquareProject',_0x3e071a,JSON[_0x5a1d('0x14')](_0x32fd61));_0x367384(_0x32fd61);})[_0x5a1d('0x1a')](function(_0x364470){logger['error'](_0x5a1d('0x24'),_0x364470['message'],_0x3e071a);_0x47c846(_0xf52510[_0x5a1d('0x15')](0x1f4,_0x364470[_0x5a1d('0x18')]));});});};
\ No newline at end of file
+var _0xb40e=['ShowSquareProject','SquareProject','find','options','raw','where','attributes','map','include','then','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','register','request','SquareProject,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch'];(function(_0x3fb4b0,_0x48a839){var _0x52acb8=function(_0x5d5284){while(--_0x5d5284){_0x3fb4b0['push'](_0x3fb4b0['shift']());}};_0x52acb8(++_0x48a839);}(_0xb40e,0x6d));var _0xeb40=function(_0x4aba15,_0x4e90aa){_0x4aba15=_0x4aba15-0x0;var _0x1c8122=_0xb40e[_0x4aba15];return _0x1c8122;};'use strict';var _=require(_0xeb40('0x0'));var util=require(_0xeb40('0x1'));var moment=require(_0xeb40('0x2'));var BPromise=require(_0xeb40('0x3'));var rs=require(_0xeb40('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeb40('0x5'));var logger=require(_0xeb40('0x6'))(_0xeb40('0x7'));var config=require('../../config/environment');var jayson=require(_0xeb40('0x8'));var client=jayson['client'][_0xeb40('0x9')]({'port':0x232a});config[_0xeb40('0xa')]=_[_0xeb40('0xb')](config[_0xeb40('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xeb40('0xc'))(new Redis(config[_0xeb40('0xa')]));require('./squareProject.socket')[_0xeb40('0xd')](socket);function respondWithRpcPromise(_0x873124,_0x2c1e21,_0x5351b2){return new BPromise(function(_0x3aa8e6,_0x2d648b){return client[_0xeb40('0xe')](_0x873124,_0x5351b2)['then'](function(_0x132f11){logger['info'](_0xeb40('0xf'),_0x2c1e21,'request\x20sent');logger[_0xeb40('0x10')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x2c1e21,_0xeb40('0x11'),JSON[_0xeb40('0x12')](_0x132f11));if(_0x132f11[_0xeb40('0x13')]){if(_0x132f11[_0xeb40('0x13')]['code']===0x1f4){logger[_0xeb40('0x13')](_0xeb40('0xf'),_0x2c1e21,_0x132f11['error'][_0xeb40('0x14')]);return _0x2d648b(_0x132f11['error']['message']);}logger[_0xeb40('0x13')](_0xeb40('0xf'),_0x2c1e21,_0x132f11[_0xeb40('0x13')]['message']);return _0x3aa8e6(_0x132f11['error'][_0xeb40('0x14')]);}else{logger['info'](_0xeb40('0xf'),_0x2c1e21,_0xeb40('0x11'));_0x3aa8e6(_0x132f11[_0xeb40('0x15')][_0xeb40('0x14')]);}})[_0xeb40('0x16')](function(_0x57b403){logger[_0xeb40('0x13')](_0xeb40('0xf'),_0x2c1e21,_0x57b403);_0x2d648b(_0x57b403);});});}exports[_0xeb40('0x17')]=function(_0x13439e){var _0x2e907b=this;return new Promise(function(_0x5dbb6c,_0x49fa1a){return db[_0xeb40('0x18')][_0xeb40('0x19')]({'raw':_0x13439e['options']?_0x13439e[_0xeb40('0x1a')][_0xeb40('0x1b')]===undefined?!![]:![]:!![],'where':_0x13439e[_0xeb40('0x1a')]?_0x13439e[_0xeb40('0x1a')][_0xeb40('0x1c')]||null:null,'attributes':_0x13439e[_0xeb40('0x1a')]?_0x13439e['options'][_0xeb40('0x1d')]||null:null,'include':_0x13439e[_0xeb40('0x1a')]?_0x13439e['options']['include']?_[_0xeb40('0x1e')](_0x13439e['options'][_0xeb40('0x1f')],function(_0x119302){return{'model':db[_0x119302['model']],'as':_0x119302['as'],'attributes':_0x119302[_0xeb40('0x1d')],'include':_0x119302[_0xeb40('0x1f')]?_[_0xeb40('0x1e')](_0x119302[_0xeb40('0x1f')],function(_0x3fdb77){return{'model':db[_0x3fdb77['model']],'as':_0x3fdb77['as'],'attributes':_0x3fdb77['attributes'],'include':_0x3fdb77[_0xeb40('0x1f')]?_[_0xeb40('0x1e')](_0x3fdb77[_0xeb40('0x1f')],function(_0x73129f){return{'model':db[_0x73129f['model']],'as':_0x73129f['as'],'attributes':_0x73129f[_0xeb40('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xeb40('0x20')](function(_0x3c361a){logger['info'](_0xeb40('0x17'),_0x13439e);logger[_0xeb40('0x10')](_0xeb40('0x17'),_0x13439e,JSON[_0xeb40('0x12')](_0x3c361a));_0x5dbb6c(_0x3c361a);})[_0xeb40('0x16')](function(_0x10159a){logger[_0xeb40('0x13')]('ShowSquareProject',_0x10159a[_0xeb40('0x14')],_0x13439e);_0x49fa1a(_0x2e907b[_0xeb40('0x13')](0x1f4,_0x10159a[_0xeb40('0x14')]));});});};
\ No newline at end of file
index ca438c2..427500f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ce=['emit','removeListener','register','length','./squareProject.events','save','remove'];(function(_0x316ecc,_0x4197cd){var _0x568f44=function(_0x18ada9){while(--_0x18ada9){_0x316ecc['push'](_0x316ecc['shift']());}};_0x568f44(++_0x4197cd);}(_0x54ce,0x1e0));var _0xe54c=function(_0x55439e,_0x18e18d){_0x55439e=_0x55439e-0x0;var _0x3f0f3d=_0x54ce[_0x55439e];return _0x3f0f3d;};'use strict';var SquareProjectEvents=require(_0xe54c('0x0'));var events=[_0xe54c('0x1'),_0xe54c('0x2'),'update'];function createListener(_0x5e15b4,_0x303892){return function(_0x11db6f){_0x303892[_0xe54c('0x3')](_0x5e15b4,_0x11db6f);};}function removeListener(_0x3c679f,_0xc13e74){return function(){SquareProjectEvents[_0xe54c('0x4')](_0x3c679f,_0xc13e74);};}exports[_0xe54c('0x5')]=function(_0x30c8fc){for(var _0x1f3c08=0x0,_0x37d52c=events[_0xe54c('0x6')];_0x1f3c08<_0x37d52c;_0x1f3c08++){var _0x1e9443=events[_0x1f3c08];var _0x50ce7a=createListener('squareProject:'+_0x1e9443,_0x30c8fc);SquareProjectEvents['on'](_0x1e9443,_0x50ce7a);}};
\ No newline at end of file
+var _0x48b2=['removeListener','squareProject:','./squareProject.events','save','update'];(function(_0x50e153,_0x4e8ede){var _0x3f76e1=function(_0x53a366){while(--_0x53a366){_0x50e153['push'](_0x50e153['shift']());}};_0x3f76e1(++_0x4e8ede);}(_0x48b2,0x84));var _0x248b=function(_0xb6cea2,_0x1a06e1){_0xb6cea2=_0xb6cea2-0x0;var _0x163d2a=_0x48b2[_0xb6cea2];return _0x163d2a;};'use strict';var SquareProjectEvents=require(_0x248b('0x0'));var events=[_0x248b('0x1'),'remove',_0x248b('0x2')];function createListener(_0x3ea387,_0x2a8278){return function(_0x265ac9){_0x2a8278['emit'](_0x3ea387,_0x265ac9);};}function removeListener(_0x2c1901,_0x10c9ef){return function(){SquareProjectEvents[_0x248b('0x3')](_0x2c1901,_0x10c9ef);};}exports['register']=function(_0x3ca3eb){for(var _0x475f4b=0x0,_0x4543d3=events['length'];_0x475f4b<_0x4543d3;_0x475f4b++){var _0x56d509=events[_0x475f4b];var _0x283460=createListener(_0x248b('0x4')+_0x56d509,_0x3ca3eb);SquareProjectEvents['on'](_0x56d509,_0x283460);}};
\ No newline at end of file
index 9083f0f..8068f4b 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(_0x370ebf,_0x2da982){var _0x435454=function(_0x53f9c6){while(--_0x53f9c6){_0x370ebf['push'](_0x370ebf['shift']());}};_0x435454(++_0x2da982);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xc4aa[_0x4a747d];return _0x3a5b5c;};'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 _0x5fc3=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','show','/:id/download','download','post','create','put','update','/:id','multer','util','connect-timeout'];(function(_0x30215b,_0x1cfc5d){var _0x25d89c=function(_0xc118ab){while(--_0xc118ab){_0x30215b['push'](_0x30215b['shift']());}};_0x25d89c(++_0x1cfc5d);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1e175d,_0x41ff45){_0x1e175d=_0x1e175d-0x0;var _0x3a3ce5=_0x5fc3[_0x1e175d];return _0x3a3ce5;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0xe')]('/',auth['isAuthenticated'](),controller[_0x35fc('0xf')]);router[_0x35fc('0x10')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router['delete'](_0x35fc('0x12'),auth[_0x35fc('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d11f3f2..40ef8b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['getDataValue','sequelize','STRING','VIRTUAL'];(function(_0x2508db,_0x4ee279){var _0x4a548c=function(_0x2e2472){while(--_0x2e2472){_0x2508db['push'](_0x2508db['shift']());}};_0x4a548c(++_0x4ee279);}(_0x326f,0xd1));var _0xf326=function(_0x37ed3e,_0x3ef4bf){_0x37ed3e=_0x37ed3e-0x0;var _0x35024e=_0x326f[_0x37ed3e];return _0x35024e;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xf326('0x1')]},'calleridname':{'type':Sequelize[_0xf326('0x1')]},'context':{'type':Sequelize[_0xf326('0x1')]},'extension':{'type':Sequelize[_0xf326('0x1')]},'priority':{'type':Sequelize[_0xf326('0x1')]},'accountcode':{'type':Sequelize[_0xf326('0x1')]},'dnid':{'type':Sequelize[_0xf326('0x1')]},'projectName':{'type':Sequelize[_0xf326('0x1')]},'saveName':{'type':Sequelize[_0xf326('0x1')]},'filename':{'type':Sequelize[_0xf326('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xf326('0x2')],'get':function(){var _0x3851eb='';var _0x165f95=this[_0xf326('0x3')]('savePath');if(_0x165f95){_0x3851eb=_0x165f95['substring'](_0x165f95['lastIndexOf']('.'));}return _0x3851eb;}}};
\ No newline at end of file
+var _0x2bd8=['STRING','VIRTUAL','getDataValue','substring','sequelize'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x2bd8,0x130));var _0x82bd=function(_0x3d5565,_0x47f0f5){_0x3d5565=_0x3d5565-0x0;var _0x30b143=_0x2bd8[_0x3d5565];return _0x30b143;};'use strict';var Sequelize=require(_0x82bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x82bd('0x1')]},'callerid':{'type':Sequelize[_0x82bd('0x1')]},'calleridname':{'type':Sequelize[_0x82bd('0x1')]},'context':{'type':Sequelize[_0x82bd('0x1')]},'extension':{'type':Sequelize[_0x82bd('0x1')]},'priority':{'type':Sequelize[_0x82bd('0x1')]},'accountcode':{'type':Sequelize[_0x82bd('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x82bd('0x1')]},'saveName':{'type':Sequelize[_0x82bd('0x1')]},'filename':{'type':Sequelize[_0x82bd('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x82bd('0x2')],'get':function(){var _0x77d7a9='';var _0x226f60=this[_0x82bd('0x3')]('savePath');if(_0x226f60){_0x77d7a9=_0x226f60[_0x82bd('0x4')](_0x226f60['lastIndexOf']('.'));}return _0x77d7a9;}}};
\ No newline at end of file
index 6b863f8..9903353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf5=['\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','send','rawAttributes','fieldName','type','key','model','map','name','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','options','where','SquareRecording','includeAll','findAll','show','params','keys','length','catch','create','body','find','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22'];(function(_0x5b9db8,_0x398711){var _0x34c35f=function(_0x3bd297){while(--_0x3bd297){_0x5b9db8['push'](_0x5b9db8['shift']());}};_0x34c35f(++_0x398711);}(_0xecf5,0x187));var _0x5ecf=function(_0x3908be,_0x465535){_0x3908be=_0x3908be-0x0;var _0x32be8c=_0xecf5[_0x3908be];return _0x32be8c;};'use strict';var emlformat=require(_0x5ecf('0x0'));var rimraf=require(_0x5ecf('0x1'));var zipdir=require(_0x5ecf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5ecf('0x3'));var moment=require(_0x5ecf('0x4'));var BPromise=require(_0x5ecf('0x5'));var Mustache=require(_0x5ecf('0x6'));var util=require('util');var path=require(_0x5ecf('0x7'));var sox=require(_0x5ecf('0x8'));var csv=require(_0x5ecf('0x9'));var ejs=require(_0x5ecf('0xa'));var fs=require('fs');var fs_extra=require(_0x5ecf('0xb'));var _=require(_0x5ecf('0xc'));var squel=require(_0x5ecf('0xd'));var crypto=require(_0x5ecf('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5ecf('0x9'));var querystring=require('querystring');var Papa=require(_0x5ecf('0xf'));var Redis=require(_0x5ecf('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5ecf('0x11'));var as=require(_0x5ecf('0x12'));var hardwareService=require(_0x5ecf('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x5ecf('0x14'));var licenseUtil=require(_0x5ecf('0x15'));var db=require(_0x5ecf('0x16'))['db'];function respondWithStatusCode(_0x1aaa7c,_0x3255cf){_0x3255cf=_0x3255cf||0xcc;return function(_0x4a58dd){if(_0x4a58dd){return _0x1aaa7c[_0x5ecf('0x17')](_0x3255cf);}return _0x1aaa7c[_0x5ecf('0x18')](_0x3255cf)[_0x5ecf('0x19')]();};}function respondWithResult(_0x56752e,_0x5e7a08){_0x5e7a08=_0x5e7a08||0xc8;return function(_0x2c697b){if(_0x2c697b){return _0x56752e['status'](_0x5e7a08)[_0x5ecf('0x1a')](_0x2c697b);}};}function respondWithFilteredResult(_0xde5f4d,_0x290580){return function(_0x376d8c){if(_0x376d8c){var _0x1ec049=typeof _0x290580[_0x5ecf('0x1b')]===_0x5ecf('0x1c')&&typeof _0x290580['limit']===_0x5ecf('0x1c');var _0x13e78c=_0x376d8c[_0x5ecf('0x1d')];var _0x1976eb=_0x1ec049?0x0:_0x290580[_0x5ecf('0x1b')];var _0x34a251=_0x1ec049?_0x376d8c[_0x5ecf('0x1d')]:_0x290580[_0x5ecf('0x1b')]+_0x290580[_0x5ecf('0x1e')];var _0x3fdbb7;if(_0x34a251>=_0x13e78c){_0x34a251=_0x13e78c;_0x3fdbb7=0xc8;}else{_0x3fdbb7=0xce;}_0xde5f4d[_0x5ecf('0x18')](_0x3fdbb7);return _0xde5f4d[_0x5ecf('0x1f')](_0x5ecf('0x20'),_0x1976eb+'-'+_0x34a251+'/'+_0x13e78c)[_0x5ecf('0x1a')](_0x376d8c);}return null;};}function patchUpdates(_0x438dde){return function(_0x5c8492){try{jsonpatch[_0x5ecf('0x21')](_0x5c8492,_0x438dde,!![]);}catch(_0x20ec59){return BPromise[_0x5ecf('0x22')](_0x20ec59);}return _0x5c8492[_0x5ecf('0x23')]();};}function saveUpdates(_0x2faf8e,_0x16875a){return function(_0x10f0b8){if(_0x10f0b8){return _0x10f0b8['update'](_0x2faf8e)[_0x5ecf('0x24')](function(_0x2010b8){return _0x2010b8;});}return null;};}function removeEntity(_0x3adf6d,_0x13d7dd){return function(_0x5a0ead){if(_0x5a0ead){return _0x5a0ead[_0x5ecf('0x25')]()[_0x5ecf('0x24')](function(){_0x3adf6d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ff650,_0x567cdb){return function(_0x3f7cf2){if(!_0x3f7cf2){_0x5ff650[_0x5ecf('0x17')](0x194);}return _0x3f7cf2;};}function handleError(_0x210e8e,_0x1cdadb){_0x1cdadb=_0x1cdadb||0x1f4;return function(_0x5a7bce){logger[_0x5ecf('0x26')](_0x5a7bce['stack']);if(_0x5a7bce['name']){delete _0x5a7bce['name'];}_0x210e8e[_0x5ecf('0x18')](_0x1cdadb)[_0x5ecf('0x27')](_0x5a7bce);};}exports['index']=function(_0x2c3f47,_0x1f3db7){var _0x24f54f={},_0x1ab26={},_0x3ad116={'count':0x0,'rows':[]};var _0x2efeb8=_['map'](db['SquareRecording'][_0x5ecf('0x28')],function(_0x45328){return{'name':_0x45328[_0x5ecf('0x29')],'type':_0x45328[_0x5ecf('0x2a')][_0x5ecf('0x2b')]};});_0x1ab26[_0x5ecf('0x2c')]=_[_0x5ecf('0x2d')](_0x2efeb8,_0x5ecf('0x2e'));_0x1ab26[_0x5ecf('0x2f')]=_['keys'](_0x2c3f47['query']);_0x1ab26['filters']=_[_0x5ecf('0x30')](_0x1ab26[_0x5ecf('0x2c')],_0x1ab26[_0x5ecf('0x2f')]);_0x24f54f[_0x5ecf('0x31')]=_['intersection'](_0x1ab26[_0x5ecf('0x2c')],qs[_0x5ecf('0x32')](_0x2c3f47['query']['fields']));_0x24f54f[_0x5ecf('0x31')]=_0x24f54f[_0x5ecf('0x31')]['length']?_0x24f54f['attributes']:_0x1ab26[_0x5ecf('0x2c')];if(!_0x2c3f47[_0x5ecf('0x2f')][_0x5ecf('0x33')](_0x5ecf('0x34'))){_0x24f54f[_0x5ecf('0x1e')]=qs['limit'](_0x2c3f47[_0x5ecf('0x2f')]['limit']);_0x24f54f[_0x5ecf('0x1b')]=qs[_0x5ecf('0x1b')](_0x2c3f47[_0x5ecf('0x2f')][_0x5ecf('0x1b')]);}_0x24f54f[_0x5ecf('0x35')]=qs['sort'](_0x2c3f47[_0x5ecf('0x2f')][_0x5ecf('0x36')]);_0x24f54f['where']=qs[_0x5ecf('0x37')](_[_0x5ecf('0x38')](_0x2c3f47[_0x5ecf('0x2f')],_0x1ab26[_0x5ecf('0x37')]),_0x2efeb8);if(_0x2c3f47[_0x5ecf('0x2f')][_0x5ecf('0x39')]){_0x24f54f['where']=_[_0x5ecf('0x3a')](_0x24f54f['where'],{'$or':_['map'](_0x2efeb8,function(_0x18a0fe){if(_0x18a0fe[_0x5ecf('0x2a')]!==_0x5ecf('0x3b')){var _0x417ea4={};_0x417ea4[_0x18a0fe['name']]={'$like':'%'+_0x2c3f47['query'][_0x5ecf('0x39')]+'%'};return _0x417ea4;}})});}_0x24f54f=_[_0x5ecf('0x3a')]({},_0x24f54f,_0x2c3f47[_0x5ecf('0x3c')]);var _0x40c97e={'where':_0x24f54f[_0x5ecf('0x3d')]};return db[_0x5ecf('0x3e')][_0x5ecf('0x1d')](_0x40c97e)[_0x5ecf('0x24')](function(_0x102642){_0x3ad116['count']=_0x102642;if(_0x2c3f47[_0x5ecf('0x2f')][_0x5ecf('0x3f')]){_0x24f54f['include']=[{'all':!![]}];}return db[_0x5ecf('0x3e')][_0x5ecf('0x40')](_0x24f54f);})[_0x5ecf('0x24')](function(_0x23b6b1){_0x3ad116['rows']=_0x23b6b1;return _0x3ad116;})['then'](respondWithFilteredResult(_0x1f3db7,_0x24f54f))['catch'](handleError(_0x1f3db7,null));};exports[_0x5ecf('0x41')]=function(_0x30e4a5,_0x129059){var _0x4a7fa4={'raw':!![],'where':{'id':_0x30e4a5[_0x5ecf('0x42')]['id']}},_0x1e1758={};_0x1e1758[_0x5ecf('0x2c')]=_[_0x5ecf('0x43')](db[_0x5ecf('0x3e')][_0x5ecf('0x28')]);_0x1e1758['query']=_['keys'](_0x30e4a5[_0x5ecf('0x2f')]);_0x1e1758['filters']=_[_0x5ecf('0x30')](_0x1e1758[_0x5ecf('0x2c')],_0x1e1758['query']);_0x4a7fa4[_0x5ecf('0x31')]=_[_0x5ecf('0x30')](_0x1e1758[_0x5ecf('0x2c')],qs[_0x5ecf('0x32')](_0x30e4a5[_0x5ecf('0x2f')]['fields']));_0x4a7fa4[_0x5ecf('0x31')]=_0x4a7fa4[_0x5ecf('0x31')][_0x5ecf('0x44')]?_0x4a7fa4['attributes']:_0x1e1758[_0x5ecf('0x2c')];if(_0x30e4a5[_0x5ecf('0x2f')][_0x5ecf('0x3f')]){_0x4a7fa4['include']=[{'all':!![]}];}_0x4a7fa4=_[_0x5ecf('0x3a')]({},_0x4a7fa4,_0x30e4a5['options']);return db[_0x5ecf('0x3e')]['find'](_0x4a7fa4)[_0x5ecf('0x24')](handleEntityNotFound(_0x129059,null))[_0x5ecf('0x24')](respondWithResult(_0x129059,null))[_0x5ecf('0x45')](handleError(_0x129059,null));};exports[_0x5ecf('0x46')]=function(_0x51f44b,_0x4744a2){return db[_0x5ecf('0x3e')][_0x5ecf('0x46')](_0x51f44b[_0x5ecf('0x47')],{})[_0x5ecf('0x24')](respondWithResult(_0x4744a2,0xc9))[_0x5ecf('0x45')](handleError(_0x4744a2,null));};exports['update']=function(_0x5585ce,_0x2557a5){if(_0x5585ce['body']['id']){delete _0x5585ce['body']['id'];}return db[_0x5ecf('0x3e')][_0x5ecf('0x48')]({'where':{'id':_0x5585ce['params']['id']}})['then'](handleEntityNotFound(_0x2557a5,null))[_0x5ecf('0x24')](saveUpdates(_0x5585ce[_0x5ecf('0x47')],null))['then'](respondWithResult(_0x2557a5,null))[_0x5ecf('0x45')](handleError(_0x2557a5,null));};exports[_0x5ecf('0x49')]=function(_0x23c327,_0x4e33c0,_0x3f71e8){var _0x52e1b1=require(_0x5ecf('0x4a'));var _0x4aabdd=![];var _0x2e1f21={};if(_0x23c327[_0x5ecf('0x2f')][_0x5ecf('0x2a')]&&_0x23c327[_0x5ecf('0x2f')][_0x5ecf('0x2a')]===_0x5ecf('0x4b')){_0x2e1f21['uniqueid']=_0x23c327['params']['id'];}else{_0x2e1f21['id']=_0x23c327[_0x5ecf('0x42')]['id'];}return db['SquareRecording']['find']({'where':_0x2e1f21,'attributes':['id',_0x5ecf('0x4c'),_0x5ecf('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x4e33c0,null))[_0x5ecf('0x24')](function(_0x52308e){if(_0x52308e){var _0x3e31a8=_0x52308e['savePath'];var _0x5895e8=util[_0x5ecf('0x4e')](_0x5ecf('0x4f'),_0x3e31a8);if(fs[_0x5ecf('0x50')](_0x5895e8)){_0x4aabdd=!![];return _0x52e1b1[_0x5ecf('0x51')](_0x5895e8,_0x3e31a8,config['secrets'][_0x5ecf('0x52')])[_0x5ecf('0x24')](function(){return _0x52308e;});}return _0x52308e;}})[_0x5ecf('0x24')](function(_0x57f771){if(_0x57f771){var _0x25ccda=_0x57f771['savePath'];if(!fs[_0x5ecf('0x50')](_0x25ccda)){throw new db[(_0x5ecf('0x53'))][(_0x5ecf('0x54'))](_0x5ecf('0x55'));}if(_0x57f771[_0x5ecf('0x4d')]){return _0x4e33c0[_0x5ecf('0x49')](_0x25ccda,_0x57f771['filename']+path[_0x5ecf('0x56')](_0x25ccda),function(){if(_0x4aabdd){fs['unlink'](_0x25ccda);}});}else{return _0x4e33c0[_0x5ecf('0x49')](_0x25ccda,function(_0x136cf0){if(_0x4aabdd){fs[_0x5ecf('0x57')](_0x25ccda);}});}}})[_0x5ecf('0x45')](function(_0x28af17){if(_0x28af17['message']===_0x5ecf('0x55')){_0x4e33c0[_0x5ecf('0x18')](0x194)[_0x5ecf('0x27')](_0x5ecf('0x58'));}else{return handleError(_0x4e33c0,null);}});};exports[_0x5ecf('0x25')]=function(_0x211ffc,_0x3509e4){return db[_0x5ecf('0x3e')][_0x5ecf('0x48')]({'where':{'id':_0x211ffc[_0x5ecf('0x42')]['id']}})[_0x5ecf('0x24')](function(_0x217429){if(_[_0x5ecf('0x59')](_0x217429)){throw new ReferenceError(_0x5ecf('0x5a'));}return _0x217429;})[_0x5ecf('0x24')](function(_0x5728d8){var _0x126343=_0x5728d8['savePath'];logger[_0x5ecf('0x5b')](_0x5ecf('0x5c'),_0x126343);if(!_[_0x5ecf('0x59')](_0x5728d8[_0x5ecf('0x4c')])&&fs[_0x5ecf('0x50')](_0x126343)){logger['info'](_0x5ecf('0x5d')+_0x126343+_0x5ecf('0x5e'));fs[_0x5ecf('0x5f')](_0x126343);}_0x126343=_0x126343+_0x5ecf('0x60');if(!_[_0x5ecf('0x59')](_0x5728d8[_0x5ecf('0x4c')])&&fs[_0x5ecf('0x50')](_0x126343)){logger['info'](_0x5ecf('0x5d')+_0x126343+_0x5ecf('0x5e'));fs[_0x5ecf('0x5f')](_0x126343);}return _0x5728d8;})[_0x5ecf('0x24')](function(_0x3be795){if(!_0x3be795)throw new InternalError();return _0x3be795[_0x5ecf('0x25')]();})['then'](function(){_0x3509e4[_0x5ecf('0x18')](0xcc)[_0x5ecf('0x19')]();})[_0x5ecf('0x45')](handleError(_0x3509e4,null));};
\ No newline at end of file
+var _0xa844=['download','unlink','message','send','info','cancellazione\x20fisica\x20documento\x20%s','isNil','unlinkSync','.cypher','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../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','reject','save','update','destroy','then','stack','name','index','map','SquareRecording','rawAttributes','fieldName','type','key','query','keys','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filters','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','body','../../components/encryptor','uniqueid','filename','%s.cypher','decryptFile','recording','savePath','existsSync','Sequelize','ValidationError','SquareRecording\x20not\x20found'];(function(_0x68323b,_0x187a82){var _0x46373a=function(_0x13b82){while(--_0x13b82){_0x68323b['push'](_0x68323b['shift']());}};_0x46373a(++_0x187a82);}(_0xa844,0x1f0));var _0x4a84=function(_0x983059,_0x4e7046){_0x983059=_0x983059-0x0;var _0x43dd81=_0xa844[_0x983059];return _0x43dd81;};'use strict';var emlformat=require(_0x4a84('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4a84('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4a84('0x2'));var moment=require(_0x4a84('0x3'));var BPromise=require(_0x4a84('0x4'));var Mustache=require('mustache');var util=require(_0x4a84('0x5'));var path=require(_0x4a84('0x6'));var sox=require(_0x4a84('0x7'));var csv=require(_0x4a84('0x8'));var ejs=require(_0x4a84('0x9'));var fs=require('fs');var fs_extra=require(_0x4a84('0xa'));var _=require(_0x4a84('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4a84('0xc'));var deskjs=require(_0x4a84('0xd'));var toCsv=require(_0x4a84('0x8'));var querystring=require(_0x4a84('0xe'));var Papa=require('papaparse');var Redis=require(_0x4a84('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4a84('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4a84('0x11'));var logger=require(_0x4a84('0x12'))(_0x4a84('0x13'));var utils=require(_0x4a84('0x14'));var config=require(_0x4a84('0x15'));var licenseUtil=require(_0x4a84('0x16'));var db=require(_0x4a84('0x17'))['db'];function respondWithStatusCode(_0x344cf2,_0x4503da){_0x4503da=_0x4503da||0xcc;return function(_0x55c3d8){if(_0x55c3d8){return _0x344cf2[_0x4a84('0x18')](_0x4503da);}return _0x344cf2[_0x4a84('0x19')](_0x4503da)[_0x4a84('0x1a')]();};}function respondWithResult(_0x428bb9,_0x770618){_0x770618=_0x770618||0xc8;return function(_0x3802d7){if(_0x3802d7){return _0x428bb9[_0x4a84('0x19')](_0x770618)[_0x4a84('0x1b')](_0x3802d7);}};}function respondWithFilteredResult(_0x4e2c64,_0x3c5aef){return function(_0x28fde9){if(_0x28fde9){var _0x532fb0=typeof _0x3c5aef[_0x4a84('0x1c')]===_0x4a84('0x1d')&&typeof _0x3c5aef[_0x4a84('0x1e')]===_0x4a84('0x1d');var _0x282d3d=_0x28fde9['count'];var _0x485d1f=_0x532fb0?0x0:_0x3c5aef['offset'];var _0x1104df=_0x532fb0?_0x28fde9[_0x4a84('0x1f')]:_0x3c5aef[_0x4a84('0x1c')]+_0x3c5aef['limit'];var _0x1bcb4d;if(_0x1104df>=_0x282d3d){_0x1104df=_0x282d3d;_0x1bcb4d=0xc8;}else{_0x1bcb4d=0xce;}_0x4e2c64[_0x4a84('0x19')](_0x1bcb4d);return _0x4e2c64[_0x4a84('0x20')](_0x4a84('0x21'),_0x485d1f+'-'+_0x1104df+'/'+_0x282d3d)[_0x4a84('0x1b')](_0x28fde9);}return null;};}function patchUpdates(_0x15073a){return function(_0x4df121){try{jsonpatch['apply'](_0x4df121,_0x15073a,!![]);}catch(_0x5b7b25){return BPromise[_0x4a84('0x22')](_0x5b7b25);}return _0x4df121[_0x4a84('0x23')]();};}function saveUpdates(_0x2369a8,_0x421267){return function(_0x33e92b){if(_0x33e92b){return _0x33e92b[_0x4a84('0x24')](_0x2369a8)['then'](function(_0x54020e){return _0x54020e;});}return null;};}function removeEntity(_0x40ca3f,_0x5be459){return function(_0x13d589){if(_0x13d589){return _0x13d589[_0x4a84('0x25')]()[_0x4a84('0x26')](function(){_0x40ca3f[_0x4a84('0x19')](0xcc)[_0x4a84('0x1a')]();});}};}function handleEntityNotFound(_0x532582,_0x3aff1a){return function(_0x313aa7){if(!_0x313aa7){_0x532582[_0x4a84('0x18')](0x194);}return _0x313aa7;};}function handleError(_0x5ddc51,_0x67c5bb){_0x67c5bb=_0x67c5bb||0x1f4;return function(_0x46fb27){logger['error'](_0x46fb27[_0x4a84('0x27')]);if(_0x46fb27[_0x4a84('0x28')]){delete _0x46fb27[_0x4a84('0x28')];}_0x5ddc51[_0x4a84('0x19')](_0x67c5bb)['send'](_0x46fb27);};}exports[_0x4a84('0x29')]=function(_0x71ae60,_0x4a7201){var _0x5917ba={},_0x1e5cd1={},_0x270211={'count':0x0,'rows':[]};var _0x3b04b2=_[_0x4a84('0x2a')](db[_0x4a84('0x2b')][_0x4a84('0x2c')],function(_0x15f44a){return{'name':_0x15f44a[_0x4a84('0x2d')],'type':_0x15f44a[_0x4a84('0x2e')][_0x4a84('0x2f')]};});_0x1e5cd1['model']=_[_0x4a84('0x2a')](_0x3b04b2,_0x4a84('0x28'));_0x1e5cd1[_0x4a84('0x30')]=_[_0x4a84('0x31')](_0x71ae60['query']);_0x1e5cd1['filters']=_['intersection'](_0x1e5cd1['model'],_0x1e5cd1[_0x4a84('0x30')]);_0x5917ba['attributes']=_['intersection'](_0x1e5cd1[_0x4a84('0x32')],qs['fields'](_0x71ae60[_0x4a84('0x30')][_0x4a84('0x33')]));_0x5917ba[_0x4a84('0x34')]=_0x5917ba['attributes'][_0x4a84('0x35')]?_0x5917ba['attributes']:_0x1e5cd1[_0x4a84('0x32')];if(!_0x71ae60['query'][_0x4a84('0x36')](_0x4a84('0x37'))){_0x5917ba['limit']=qs[_0x4a84('0x1e')](_0x71ae60[_0x4a84('0x30')]['limit']);_0x5917ba[_0x4a84('0x1c')]=qs['offset'](_0x71ae60[_0x4a84('0x30')][_0x4a84('0x1c')]);}_0x5917ba[_0x4a84('0x38')]=qs[_0x4a84('0x39')](_0x71ae60[_0x4a84('0x30')]['sort']);_0x5917ba['where']=qs['filters'](_[_0x4a84('0x3a')](_0x71ae60[_0x4a84('0x30')],_0x1e5cd1[_0x4a84('0x3b')]),_0x3b04b2);if(_0x71ae60[_0x4a84('0x30')]['filter']){_0x5917ba['where']=_['merge'](_0x5917ba[_0x4a84('0x3c')],{'$or':_['map'](_0x3b04b2,function(_0x452945){if(_0x452945[_0x4a84('0x2e')]!==_0x4a84('0x3d')){var _0x5c1bd4={};_0x5c1bd4[_0x452945['name']]={'$like':'%'+_0x71ae60[_0x4a84('0x30')][_0x4a84('0x3e')]+'%'};return _0x5c1bd4;}})});}_0x5917ba=_[_0x4a84('0x3f')]({},_0x5917ba,_0x71ae60[_0x4a84('0x40')]);var _0x5cbfd1={'where':_0x5917ba['where']};return db['SquareRecording'][_0x4a84('0x1f')](_0x5cbfd1)[_0x4a84('0x26')](function(_0x2f75d2){_0x270211[_0x4a84('0x1f')]=_0x2f75d2;if(_0x71ae60[_0x4a84('0x30')][_0x4a84('0x41')]){_0x5917ba[_0x4a84('0x42')]=[{'all':!![]}];}return db[_0x4a84('0x2b')][_0x4a84('0x43')](_0x5917ba);})[_0x4a84('0x26')](function(_0x2c1882){_0x270211[_0x4a84('0x44')]=_0x2c1882;return _0x270211;})[_0x4a84('0x26')](respondWithFilteredResult(_0x4a7201,_0x5917ba))[_0x4a84('0x45')](handleError(_0x4a7201,null));};exports[_0x4a84('0x46')]=function(_0x556944,_0x361a39){var _0x3a5c8a={'raw':!![],'where':{'id':_0x556944[_0x4a84('0x47')]['id']}},_0x198ee6={};_0x198ee6[_0x4a84('0x32')]=_[_0x4a84('0x31')](db[_0x4a84('0x2b')][_0x4a84('0x2c')]);_0x198ee6[_0x4a84('0x30')]=_['keys'](_0x556944[_0x4a84('0x30')]);_0x198ee6['filters']=_[_0x4a84('0x48')](_0x198ee6['model'],_0x198ee6[_0x4a84('0x30')]);_0x3a5c8a[_0x4a84('0x34')]=_[_0x4a84('0x48')](_0x198ee6[_0x4a84('0x32')],qs[_0x4a84('0x33')](_0x556944['query'][_0x4a84('0x33')]));_0x3a5c8a[_0x4a84('0x34')]=_0x3a5c8a[_0x4a84('0x34')][_0x4a84('0x35')]?_0x3a5c8a[_0x4a84('0x34')]:_0x198ee6['model'];if(_0x556944[_0x4a84('0x30')]['includeAll']){_0x3a5c8a[_0x4a84('0x42')]=[{'all':!![]}];}_0x3a5c8a=_['merge']({},_0x3a5c8a,_0x556944['options']);return db['SquareRecording'][_0x4a84('0x49')](_0x3a5c8a)[_0x4a84('0x26')](handleEntityNotFound(_0x361a39,null))[_0x4a84('0x26')](respondWithResult(_0x361a39,null))[_0x4a84('0x45')](handleError(_0x361a39,null));};exports['create']=function(_0x251fc2,_0x229665){return db['SquareRecording']['create'](_0x251fc2[_0x4a84('0x4a')],{})[_0x4a84('0x26')](respondWithResult(_0x229665,0xc9))[_0x4a84('0x45')](handleError(_0x229665,null));};exports[_0x4a84('0x24')]=function(_0x382c92,_0x4f824e){if(_0x382c92['body']['id']){delete _0x382c92[_0x4a84('0x4a')]['id'];}return db[_0x4a84('0x2b')][_0x4a84('0x49')]({'where':{'id':_0x382c92[_0x4a84('0x47')]['id']}})['then'](handleEntityNotFound(_0x4f824e,null))[_0x4a84('0x26')](saveUpdates(_0x382c92[_0x4a84('0x4a')],null))[_0x4a84('0x26')](respondWithResult(_0x4f824e,null))[_0x4a84('0x45')](handleError(_0x4f824e,null));};exports['download']=function(_0xc36ce3,_0x1ade20,_0x24d1c5){var _0x5975d6=require(_0x4a84('0x4b'));var _0x1b6398=![];var _0x2bd697={};if(_0xc36ce3[_0x4a84('0x30')]['type']&&_0xc36ce3['query'][_0x4a84('0x2e')]===_0x4a84('0x4c')){_0x2bd697['uniqueid']=_0xc36ce3[_0x4a84('0x47')]['id'];}else{_0x2bd697['id']=_0xc36ce3['params']['id'];}return db[_0x4a84('0x2b')][_0x4a84('0x49')]({'where':_0x2bd697,'attributes':['id','savePath',_0x4a84('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x1ade20,null))[_0x4a84('0x26')](function(_0x12f1f9){if(_0x12f1f9){var _0x2cfa1e=_0x12f1f9['savePath'];var _0x4461c8=util['format'](_0x4a84('0x4e'),_0x2cfa1e);if(fs['existsSync'](_0x4461c8)){_0x1b6398=!![];return _0x5975d6[_0x4a84('0x4f')](_0x4461c8,_0x2cfa1e,config['secrets'][_0x4a84('0x50')])['then'](function(){return _0x12f1f9;});}return _0x12f1f9;}})[_0x4a84('0x26')](function(_0x2ffd09){if(_0x2ffd09){var _0x26ad61=_0x2ffd09[_0x4a84('0x51')];if(!fs[_0x4a84('0x52')](_0x26ad61)){throw new db[(_0x4a84('0x53'))][(_0x4a84('0x54'))](_0x4a84('0x55'));}if(_0x2ffd09[_0x4a84('0x4d')]){return _0x1ade20[_0x4a84('0x56')](_0x26ad61,_0x2ffd09[_0x4a84('0x4d')]+path['extname'](_0x26ad61),function(){if(_0x1b6398){fs[_0x4a84('0x57')](_0x26ad61);}});}else{return _0x1ade20[_0x4a84('0x56')](_0x26ad61,function(_0x2cc25a){if(_0x1b6398){fs[_0x4a84('0x57')](_0x26ad61);}});}}})['catch'](function(_0x4b35d3){if(_0x4b35d3[_0x4a84('0x58')]===_0x4a84('0x55')){_0x1ade20[_0x4a84('0x19')](0x194)[_0x4a84('0x59')]('Not\x20found');}else{return handleError(_0x1ade20,null);}});};exports[_0x4a84('0x25')]=function(_0x5e404f,_0x28999e){return db[_0x4a84('0x2b')][_0x4a84('0x49')]({'where':{'id':_0x5e404f['params']['id']}})[_0x4a84('0x26')](function(_0x5922b){if(_['isNil'](_0x5922b)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5922b;})[_0x4a84('0x26')](function(_0x4844a6){var _0x23f475=_0x4844a6[_0x4a84('0x51')];logger[_0x4a84('0x5a')](_0x4a84('0x5b'),_0x23f475);if(!_[_0x4a84('0x5c')](_0x4844a6['savePath'])&&fs['existsSync'](_0x23f475)){logger[_0x4a84('0x5a')]('File:\x20\x22'+_0x23f475+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x4a84('0x5d')](_0x23f475);}_0x23f475=_0x23f475+_0x4a84('0x5e');if(!_['isNil'](_0x4844a6[_0x4a84('0x51')])&&fs['existsSync'](_0x23f475)){logger[_0x4a84('0x5a')](_0x4a84('0x5f')+_0x23f475+_0x4a84('0x60'));fs['unlinkSync'](_0x23f475);}return _0x4844a6;})['then'](function(_0x285a84){if(!_0x285a84)throw new InternalError();return _0x285a84['destroy']();})['then'](function(){_0x28999e['status'](0xcc)[_0x4a84('0x1a')]();})[_0x4a84('0x45')](handleError(_0x28999e,null));};
\ No newline at end of file
index eab27fa..8153a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce04=['exports','define','square_recordings','lodash','../../config/logger','api','moment','request-promise','./squareRecording.attributes'];(function(_0x7387fc,_0x303032){var _0xcdc16e=function(_0x1dc0b8){while(--_0x1dc0b8){_0x7387fc['push'](_0x7387fc['shift']());}};_0xcdc16e(++_0x303032);}(_0xce04,0xc0));var _0x4ce0=function(_0x488456,_0x1e6819){_0x488456=_0x488456-0x0;var _0x1e85c6=_0xce04[_0x488456];return _0x1e85c6;};'use strict';var _=require(_0x4ce0('0x0'));var util=require('util');var logger=require(_0x4ce0('0x1'))(_0x4ce0('0x2'));var moment=require(_0x4ce0('0x3'));var BPromise=require('bluebird');var rp=require(_0x4ce0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4ce0('0x5'));module[_0x4ce0('0x6')]=function(_0x5b4bd7,_0x14cef0){return _0x5b4bd7[_0x4ce0('0x7')]('SquareRecording',attributes,{'tableName':_0x4ce0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe9ef=['bluebird','path','rimraf','../../config/environment','./squareRecording.attributes','square_recordings','lodash','../../config/logger','api'];(function(_0x1d3a3b,_0x49e405){var _0x59b26f=function(_0x386d32){while(--_0x386d32){_0x1d3a3b['push'](_0x1d3a3b['shift']());}};_0x59b26f(++_0x49e405);}(_0xe9ef,0x16e));var _0xfe9e=function(_0x368fb9,_0x1a9895){_0x368fb9=_0x368fb9-0x0;var _0x4892fb=_0xe9ef[_0x368fb9];return _0x4892fb;};'use strict';var _=require(_0xfe9e('0x0'));var util=require('util');var logger=require(_0xfe9e('0x1'))(_0xfe9e('0x2'));var moment=require('moment');var BPromise=require(_0xfe9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfe9e('0x4'));var rimraf=require(_0xfe9e('0x5'));var config=require(_0xfe9e('0x6'));var attributes=require(_0xfe9e('0x7'));module['exports']=function(_0x448c5b,_0x929d6d){return _0x448c5b['define']('SquareRecording',attributes,{'tableName':_0xfe9e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69d2ae2..04b3bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x237d=['../../mysqldb','../../config/logger','jayson/promise','client','http','request','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','code','error','message','result','CreateSquareRecording','SquareRecording','create','body','options','raw','stringify','lodash','moment','bluebird','ioredis'];(function(_0x15ea1a,_0x5b6792){var _0x28d2c4=function(_0x5c4aef){while(--_0x5c4aef){_0x15ea1a['push'](_0x15ea1a['shift']());}};_0x28d2c4(++_0x5b6792);}(_0x237d,0x1ea));var _0xd237=function(_0x1e230d,_0x117d45){_0x1e230d=_0x1e230d-0x0;var _0x5a413f=_0x237d[_0x1e230d];return _0x5a413f;};'use strict';var _=require(_0xd237('0x0'));var util=require('util');var moment=require(_0xd237('0x1'));var BPromise=require(_0xd237('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd237('0x3'));var db=require(_0xd237('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd237('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd237('0x6'));var client=jayson[_0xd237('0x7')][_0xd237('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4b6f45,_0x3dbd3c,_0x480836){return new BPromise(function(_0x321b5f,_0x23ca5d){return client[_0xd237('0x9')](_0x4b6f45,_0x480836)['then'](function(_0x38e071){logger[_0xd237('0xa')](_0xd237('0xb'),_0x3dbd3c,_0xd237('0xc'));logger[_0xd237('0xd')](_0xd237('0xe'),_0x3dbd3c,_0xd237('0xc'),JSON['stringify'](_0x38e071));if(_0x38e071['error']){if(_0x38e071['error'][_0xd237('0xf')]===0x1f4){logger[_0xd237('0x10')](_0xd237('0xb'),_0x3dbd3c,_0x38e071[_0xd237('0x10')][_0xd237('0x11')]);return _0x23ca5d(_0x38e071[_0xd237('0x10')][_0xd237('0x11')]);}logger[_0xd237('0x10')]('SquareRecording,\x20%s,\x20%s',_0x3dbd3c,_0x38e071[_0xd237('0x10')][_0xd237('0x11')]);return _0x321b5f(_0x38e071[_0xd237('0x10')][_0xd237('0x11')]);}else{logger[_0xd237('0xa')](_0xd237('0xb'),_0x3dbd3c,_0xd237('0xc'));_0x321b5f(_0x38e071[_0xd237('0x12')][_0xd237('0x11')]);}})['catch'](function(_0x365d97){logger[_0xd237('0x10')](_0xd237('0xb'),_0x3dbd3c,_0x365d97);_0x23ca5d(_0x365d97);});});}exports[_0xd237('0x13')]=function(_0x1475bc){var _0x2cf6de=this;return new Promise(function(_0x120d2b,_0x17933f){return db[_0xd237('0x14')][_0xd237('0x15')](_0x1475bc[_0xd237('0x16')],{'raw':_0x1475bc[_0xd237('0x17')]?_0x1475bc['options'][_0xd237('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x446e9d){logger['info'](_0xd237('0x13'),_0x1475bc);logger['debug'](_0xd237('0x13'),_0x1475bc,JSON[_0xd237('0x19')](_0x446e9d));_0x120d2b(_0x446e9d);})['catch'](function(_0x4679d4){logger[_0xd237('0x10')](_0xd237('0x13'),_0x4679d4[_0xd237('0x11')],_0x1475bc);_0x17933f(_0x2cf6de[_0xd237('0x10')](0x1f4,_0x4679d4['message']));});});};
\ No newline at end of file
+var _0xc675=['catch','CreateSquareRecording','create','body','options','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0xd75273,_0x5c6da2){var _0x47742c=function(_0x2aa6a5){while(--_0x2aa6a5){_0xd75273['push'](_0xd75273['shift']());}};_0x47742c(++_0x5c6da2);}(_0xc675,0x72));var _0x5c67=function(_0x42d044,_0x2eaace){_0x42d044=_0x42d044-0x0;var _0x18d965=_0xc675[_0x42d044];return _0x18d965;};'use strict';var _=require(_0x5c67('0x0'));var util=require(_0x5c67('0x1'));var moment=require(_0x5c67('0x2'));var BPromise=require(_0x5c67('0x3'));var rs=require(_0x5c67('0x4'));var fs=require('fs');var Redis=require(_0x5c67('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5c67('0x6'));var logger=require(_0x5c67('0x7'))(_0x5c67('0x8'));var config=require(_0x5c67('0x9'));var jayson=require(_0x5c67('0xa'));var client=jayson[_0x5c67('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a5f73,_0x47724,_0x5e4da0){return new BPromise(function(_0x8a1428,_0x1960f7){return client[_0x5c67('0xc')](_0x2a5f73,_0x5e4da0)[_0x5c67('0xd')](function(_0x52039a){logger[_0x5c67('0xe')](_0x5c67('0xf'),_0x47724,_0x5c67('0x10'));logger[_0x5c67('0x11')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x47724,_0x5c67('0x10'),JSON['stringify'](_0x52039a));if(_0x52039a[_0x5c67('0x12')]){if(_0x52039a[_0x5c67('0x12')][_0x5c67('0x13')]===0x1f4){logger[_0x5c67('0x12')]('SquareRecording,\x20%s,\x20%s',_0x47724,_0x52039a[_0x5c67('0x12')][_0x5c67('0x14')]);return _0x1960f7(_0x52039a[_0x5c67('0x12')][_0x5c67('0x14')]);}logger[_0x5c67('0x12')](_0x5c67('0xf'),_0x47724,_0x52039a[_0x5c67('0x12')][_0x5c67('0x14')]);return _0x8a1428(_0x52039a[_0x5c67('0x12')]['message']);}else{logger[_0x5c67('0xe')](_0x5c67('0xf'),_0x47724,_0x5c67('0x10'));_0x8a1428(_0x52039a['result'][_0x5c67('0x14')]);}})[_0x5c67('0x15')](function(_0x49ebd6){logger['error'](_0x5c67('0xf'),_0x47724,_0x49ebd6);_0x1960f7(_0x49ebd6);});});}exports[_0x5c67('0x16')]=function(_0x18a299){var _0x34deae=this;return new Promise(function(_0x2946b5,_0x3d679f){return db['SquareRecording'][_0x5c67('0x17')](_0x18a299[_0x5c67('0x18')],{'raw':_0x18a299[_0x5c67('0x19')]?_0x18a299[_0x5c67('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x5c67('0xd')](function(_0x55e634){logger[_0x5c67('0xe')](_0x5c67('0x16'),_0x18a299);logger[_0x5c67('0x11')](_0x5c67('0x16'),_0x18a299,JSON[_0x5c67('0x1a')](_0x55e634));_0x2946b5(_0x55e634);})[_0x5c67('0x15')](function(_0x3fc3ba){logger[_0x5c67('0x12')](_0x5c67('0x16'),_0x3fc3ba['message'],_0x18a299);_0x3d679f(_0x34deae['error'](0x1f4,_0x3fc3ba[_0x5c67('0x14')]));});});};
\ No newline at end of file
index f477317..4fb9416 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(_0x21a2b3,_0x5d6564){var _0x4651a7=function(_0x285f59){while(--_0x285f59){_0x21a2b3['push'](_0x21a2b3['shift']());}};_0x4651a7(++_0x5d6564);}(_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'));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(_0xfc0976,_0x33776f){var _0x23579f=function(_0x4143d9){while(--_0x4143d9){_0xfc0976['push'](_0xfc0976['shift']());}};_0x23579f(++_0x33776f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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 df5f5b6..13b91cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a18=['STRING','DATE','BOOLEAN','sequelize','exports'];(function(_0x2be2ec,_0x52bc98){var _0x5cf7ed=function(_0x54c401){while(--_0x54c401){_0x2be2ec['push'](_0x2be2ec['shift']());}};_0x5cf7ed(++_0x52bc98);}(_0x8a18,0x12a));var _0x88a1=function(_0x143702,_0x33a458){_0x143702=_0x143702-0x0;var _0xf53928=_0x8a18[_0x143702];return _0xf53928;};'use strict';var Sequelize=require(_0x88a1('0x0'));module[_0x88a1('0x1')]={'network':{'type':Sequelize[_0x88a1('0x2')]},'network_script':{'type':Sequelize[_0x88a1('0x2')]},'request':{'type':Sequelize[_0x88a1('0x2')]},'channel':{'type':Sequelize[_0x88a1('0x2')]},'language':{'type':Sequelize[_0x88a1('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x88a1('0x2')]},'version':{'type':Sequelize[_0x88a1('0x2')]},'callerid':{'type':Sequelize[_0x88a1('0x2')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x88a1('0x2')]},'callingani2':{'type':Sequelize[_0x88a1('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x88a1('0x2')]},'dnid':{'type':Sequelize[_0x88a1('0x2')]},'rdnis':{'type':Sequelize[_0x88a1('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x88a1('0x2')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x88a1('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x88a1('0x2')]},'joinAt':{'type':Sequelize[_0x88a1('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x88a1('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0821=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0821,0xd3));var _0x1082=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x0821[_0xae7c2f];return _0x5d7001;};'use strict';var Sequelize=require(_0x1082('0x0'));module[_0x1082('0x1')]={'network':{'type':Sequelize[_0x1082('0x2')]},'network_script':{'type':Sequelize[_0x1082('0x2')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x1082('0x2')]},'type':{'type':Sequelize[_0x1082('0x2')]},'uniqueid':{'type':Sequelize[_0x1082('0x2')]},'version':{'type':Sequelize[_0x1082('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x1082('0x2')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x1082('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x1082('0x2')]},'dnid':{'type':Sequelize[_0x1082('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x1082('0x2')]},'extension':{'type':Sequelize[_0x1082('0x2')]},'priority':{'type':Sequelize[_0x1082('0x2')]},'enhanced':{'type':Sequelize[_0x1082('0x2')]},'accountcode':{'type':Sequelize[_0x1082('0x2')]},'threadid':{'type':Sequelize[_0x1082('0x2')]},'project_name':{'type':Sequelize[_0x1082('0x2')]},'joinAt':{'type':Sequelize[_0x1082('0x3')]},'leaveAt':{'type':Sequelize[_0x1082('0x3')]},'bot':{'type':Sequelize[_0x1082('0x4')],'defaultValue':![]}};
\ No newline at end of file
index b9e9f4b..9cc9257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa274=['count','set','apply','save','update','destroy','then','error','stack','name','map','SquareReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa274,0x109));var _0x4a27=function(_0x4702ee,_0xaf6a45){_0x4702ee=_0x4702ee-0x0;var _0x62ca7d=_0xa274[_0x4702ee];return _0x62ca7d;};'use strict';var emlformat=require(_0x4a27('0x0'));var rimraf=require(_0x4a27('0x1'));var zipdir=require(_0x4a27('0x2'));var jsonpatch=require(_0x4a27('0x3'));var rp=require(_0x4a27('0x4'));var moment=require(_0x4a27('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4a27('0x6'));var path=require(_0x4a27('0x7'));var sox=require(_0x4a27('0x8'));var csv=require(_0x4a27('0x9'));var ejs=require(_0x4a27('0xa'));var fs=require('fs');var fs_extra=require(_0x4a27('0xb'));var _=require(_0x4a27('0xc'));var squel=require(_0x4a27('0xd'));var crypto=require(_0x4a27('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4a27('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4a27('0xf'));var authService=require(_0x4a27('0x10'));var qs=require(_0x4a27('0x11'));var as=require(_0x4a27('0x12'));var hardwareService=require(_0x4a27('0x13'));var logger=require(_0x4a27('0x14'))('api');var utils=require(_0x4a27('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4a27('0x16'));var db=require(_0x4a27('0x17'))['db'];function respondWithStatusCode(_0xadbe3f,_0x5c60b2){_0x5c60b2=_0x5c60b2||0xcc;return function(_0x5cee25){if(_0x5cee25){return _0xadbe3f[_0x4a27('0x18')](_0x5c60b2);}return _0xadbe3f['status'](_0x5c60b2)[_0x4a27('0x19')]();};}function respondWithResult(_0x45e538,_0x41d524){_0x41d524=_0x41d524||0xc8;return function(_0x1b29ba){if(_0x1b29ba){return _0x45e538[_0x4a27('0x1a')](_0x41d524)[_0x4a27('0x1b')](_0x1b29ba);}};}function respondWithFilteredResult(_0x40e3f0,_0x5a6591){return function(_0x3a5971){if(_0x3a5971){var _0x493c33=typeof _0x5a6591[_0x4a27('0x1c')]===_0x4a27('0x1d')&&typeof _0x5a6591[_0x4a27('0x1e')]==='undefined';var _0x24c674=_0x3a5971[_0x4a27('0x1f')];var _0x61ee14=_0x493c33?0x0:_0x5a6591['offset'];var _0x3e4c96=_0x493c33?_0x3a5971[_0x4a27('0x1f')]:_0x5a6591[_0x4a27('0x1c')]+_0x5a6591[_0x4a27('0x1e')];var _0x1b418f;if(_0x3e4c96>=_0x24c674){_0x3e4c96=_0x24c674;_0x1b418f=0xc8;}else{_0x1b418f=0xce;}_0x40e3f0[_0x4a27('0x1a')](_0x1b418f);return _0x40e3f0[_0x4a27('0x20')]('Content-Range',_0x61ee14+'-'+_0x3e4c96+'/'+_0x24c674)[_0x4a27('0x1b')](_0x3a5971);}return null;};}function patchUpdates(_0x3b5633){return function(_0x4e2bc3){try{jsonpatch[_0x4a27('0x21')](_0x4e2bc3,_0x3b5633,!![]);}catch(_0xb7024d){return BPromise['reject'](_0xb7024d);}return _0x4e2bc3[_0x4a27('0x22')]();};}function saveUpdates(_0x2afff8,_0x214256){return function(_0x13b9c8){if(_0x13b9c8){return _0x13b9c8[_0x4a27('0x23')](_0x2afff8)['then'](function(_0x70a6dc){return _0x70a6dc;});}return null;};}function removeEntity(_0x27b5a2,_0x2ba739){return function(_0xf94266){if(_0xf94266){return _0xf94266[_0x4a27('0x24')]()[_0x4a27('0x25')](function(){_0x27b5a2[_0x4a27('0x1a')](0xcc)[_0x4a27('0x19')]();});}};}function handleEntityNotFound(_0x248533,_0x1341b8){return function(_0x6ab517){if(!_0x6ab517){_0x248533[_0x4a27('0x18')](0x194);}return _0x6ab517;};}function handleError(_0x3e323e,_0x4a4d52){_0x4a4d52=_0x4a4d52||0x1f4;return function(_0x37cbf1){logger[_0x4a27('0x26')](_0x37cbf1[_0x4a27('0x27')]);if(_0x37cbf1['name']){delete _0x37cbf1[_0x4a27('0x28')];}_0x3e323e['status'](_0x4a4d52)['send'](_0x37cbf1);};}exports['index']=function(_0xb2fa76,_0x325028){var _0x39162a={},_0x3cfd28={},_0x576e7a={'count':0x0,'rows':[]};var _0x1ddffe=_[_0x4a27('0x29')](db[_0x4a27('0x2a')][_0x4a27('0x2b')],function(_0x15a537){return{'name':_0x15a537[_0x4a27('0x2c')],'type':_0x15a537['type'][_0x4a27('0x2d')]};});_0x3cfd28[_0x4a27('0x2e')]=_['map'](_0x1ddffe,_0x4a27('0x28'));_0x3cfd28[_0x4a27('0x2f')]=_[_0x4a27('0x30')](_0xb2fa76[_0x4a27('0x2f')]);_0x3cfd28[_0x4a27('0x31')]=_[_0x4a27('0x32')](_0x3cfd28[_0x4a27('0x2e')],_0x3cfd28[_0x4a27('0x2f')]);_0x39162a[_0x4a27('0x33')]=_['intersection'](_0x3cfd28[_0x4a27('0x2e')],qs['fields'](_0xb2fa76[_0x4a27('0x2f')][_0x4a27('0x34')]));_0x39162a[_0x4a27('0x33')]=_0x39162a[_0x4a27('0x33')][_0x4a27('0x35')]?_0x39162a[_0x4a27('0x33')]:_0x3cfd28[_0x4a27('0x2e')];if(!_0xb2fa76[_0x4a27('0x2f')]['hasOwnProperty'](_0x4a27('0x36'))){_0x39162a['limit']=qs['limit'](_0xb2fa76[_0x4a27('0x2f')][_0x4a27('0x1e')]);_0x39162a[_0x4a27('0x1c')]=qs[_0x4a27('0x1c')](_0xb2fa76['query'][_0x4a27('0x1c')]);}_0x39162a['order']=qs[_0x4a27('0x37')](_0xb2fa76['query']['sort']);_0x39162a['where']=qs[_0x4a27('0x31')](_[_0x4a27('0x38')](_0xb2fa76[_0x4a27('0x2f')],_0x3cfd28['filters']),_0x1ddffe);if(_0xb2fa76[_0x4a27('0x2f')][_0x4a27('0x39')]){_0x39162a[_0x4a27('0x3a')]=_[_0x4a27('0x3b')](_0x39162a['where'],{'$or':_[_0x4a27('0x29')](_0x1ddffe,function(_0x2b5a0d){if(_0x2b5a0d[_0x4a27('0x3c')]!==_0x4a27('0x3d')){var _0x503551={};_0x503551[_0x2b5a0d[_0x4a27('0x28')]]={'$like':'%'+_0xb2fa76['query'][_0x4a27('0x39')]+'%'};return _0x503551;}})});}_0x39162a=_['merge']({},_0x39162a,_0xb2fa76[_0x4a27('0x3e')]);var _0x4fa616={'where':_0x39162a[_0x4a27('0x3a')]};return db[_0x4a27('0x2a')]['count'](_0x4fa616)[_0x4a27('0x25')](function(_0x26dea8){_0x576e7a[_0x4a27('0x1f')]=_0x26dea8;if(_0xb2fa76[_0x4a27('0x2f')][_0x4a27('0x3f')]){_0x39162a[_0x4a27('0x40')]=[{'all':!![]}];}return db[_0x4a27('0x2a')][_0x4a27('0x41')](_0x39162a);})[_0x4a27('0x25')](function(_0xc5ad1f){_0x576e7a[_0x4a27('0x42')]=_0xc5ad1f;return _0x576e7a;})[_0x4a27('0x25')](respondWithFilteredResult(_0x325028,_0x39162a))[_0x4a27('0x43')](handleError(_0x325028,null));};exports[_0x4a27('0x44')]=function(_0x3e834e,_0xcedc33){var _0x4d002f={'raw':!![],'where':{'id':_0x3e834e[_0x4a27('0x45')]['id']}},_0x2cd156={};_0x2cd156[_0x4a27('0x2e')]=_[_0x4a27('0x30')](db[_0x4a27('0x2a')][_0x4a27('0x2b')]);_0x2cd156['query']=_[_0x4a27('0x30')](_0x3e834e[_0x4a27('0x2f')]);_0x2cd156['filters']=_['intersection'](_0x2cd156[_0x4a27('0x2e')],_0x2cd156[_0x4a27('0x2f')]);_0x4d002f['attributes']=_[_0x4a27('0x32')](_0x2cd156[_0x4a27('0x2e')],qs[_0x4a27('0x34')](_0x3e834e['query'][_0x4a27('0x34')]));_0x4d002f[_0x4a27('0x33')]=_0x4d002f[_0x4a27('0x33')][_0x4a27('0x35')]?_0x4d002f[_0x4a27('0x33')]:_0x2cd156[_0x4a27('0x2e')];if(_0x3e834e[_0x4a27('0x2f')][_0x4a27('0x3f')]){_0x4d002f[_0x4a27('0x40')]=[{'all':!![]}];}_0x4d002f=_[_0x4a27('0x3b')]({},_0x4d002f,_0x3e834e['options']);return db['SquareReport']['find'](_0x4d002f)['then'](handleEntityNotFound(_0xcedc33,null))[_0x4a27('0x25')](respondWithResult(_0xcedc33,null))['catch'](handleError(_0xcedc33,null));};exports[_0x4a27('0x46')]=function(_0x17bb76,_0xbfb0a4){return db[_0x4a27('0x2a')]['create'](_0x17bb76[_0x4a27('0x47')],{})[_0x4a27('0x25')](respondWithResult(_0xbfb0a4,0xc9))['catch'](handleError(_0xbfb0a4,null));};exports[_0x4a27('0x23')]=function(_0x2a321f,_0x4f04a6){if(_0x2a321f[_0x4a27('0x47')]['id']){delete _0x2a321f[_0x4a27('0x47')]['id'];}return db[_0x4a27('0x2a')]['find']({'where':{'id':_0x2a321f[_0x4a27('0x45')]['id']}})[_0x4a27('0x25')](handleEntityNotFound(_0x4f04a6,null))[_0x4a27('0x25')](saveUpdates(_0x2a321f[_0x4a27('0x47')],null))[_0x4a27('0x25')](respondWithResult(_0x4f04a6,null))['catch'](handleError(_0x4f04a6,null));};exports['destroy']=function(_0x6e96ac,_0x37edf5){return db[_0x4a27('0x2a')][_0x4a27('0x48')]({'where':{'id':_0x6e96ac['params']['id']}})['then'](handleEntityNotFound(_0x37edf5,null))['then'](removeEntity(_0x37edf5,null))[_0x4a27('0x43')](handleError(_0x37edf5,null));};exports[_0x4a27('0x49')]=function(_0x9dd4e4,_0x228c9a){return db[_0x4a27('0x2a')][_0x4a27('0x49')]()[_0x4a27('0x25')](respondWithResult(_0x228c9a,null))['catch'](handleError(_0x228c9a,null));};
\ No newline at end of file
+var _0x6bf8=['name','send','index','map','SquareReport','rawAttributes','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','show','params','fields','options','catch','create','body','update','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','offset','limit','undefined','count','status','Content-Range','reject','save','then','destroy','error'];(function(_0x314603,_0x1b54fa){var _0x44d18e=function(_0x413d7b){while(--_0x413d7b){_0x314603['push'](_0x314603['shift']());}};_0x44d18e(++_0x1b54fa);}(_0x6bf8,0x1c6));var _0x86bf=function(_0x282d1f,_0x42e463){_0x282d1f=_0x282d1f-0x0;var _0x12c2af=_0x6bf8[_0x282d1f];return _0x12c2af;};'use strict';var emlformat=require(_0x86bf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x86bf('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x86bf('0x2'));var moment=require(_0x86bf('0x3'));var BPromise=require(_0x86bf('0x4'));var Mustache=require(_0x86bf('0x5'));var util=require(_0x86bf('0x6'));var path=require('path');var sox=require(_0x86bf('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x86bf('0x8'));var _=require(_0x86bf('0x9'));var squel=require(_0x86bf('0xa'));var crypto=require(_0x86bf('0xb'));var jsforce=require(_0x86bf('0xc'));var deskjs=require(_0x86bf('0xd'));var toCsv=require(_0x86bf('0xe'));var querystring=require(_0x86bf('0xf'));var Papa=require('papaparse');var Redis=require(_0x86bf('0x10'));var authService=require(_0x86bf('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x86bf('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x86bf('0x13'));var config=require(_0x86bf('0x14'));var licenseUtil=require(_0x86bf('0x15'));var db=require(_0x86bf('0x16'))['db'];function respondWithStatusCode(_0x1e6509,_0x8dc697){_0x8dc697=_0x8dc697||0xcc;return function(_0x220630){if(_0x220630){return _0x1e6509['sendStatus'](_0x8dc697);}return _0x1e6509['status'](_0x8dc697)[_0x86bf('0x17')]();};}function respondWithResult(_0x49f7e7,_0x33d525){_0x33d525=_0x33d525||0xc8;return function(_0x12746f){if(_0x12746f){return _0x49f7e7['status'](_0x33d525)[_0x86bf('0x18')](_0x12746f);}};}function respondWithFilteredResult(_0x2b3014,_0x3eaa24){return function(_0x239918){if(_0x239918){var _0xcaa2c7=typeof _0x3eaa24[_0x86bf('0x19')]==='undefined'&&typeof _0x3eaa24[_0x86bf('0x1a')]===_0x86bf('0x1b');var _0x28c571=_0x239918[_0x86bf('0x1c')];var _0x286d98=_0xcaa2c7?0x0:_0x3eaa24[_0x86bf('0x19')];var _0x189e46=_0xcaa2c7?_0x239918[_0x86bf('0x1c')]:_0x3eaa24['offset']+_0x3eaa24[_0x86bf('0x1a')];var _0x3d4121;if(_0x189e46>=_0x28c571){_0x189e46=_0x28c571;_0x3d4121=0xc8;}else{_0x3d4121=0xce;}_0x2b3014[_0x86bf('0x1d')](_0x3d4121);return _0x2b3014['set'](_0x86bf('0x1e'),_0x286d98+'-'+_0x189e46+'/'+_0x28c571)['json'](_0x239918);}return null;};}function patchUpdates(_0x54a25b){return function(_0x56acf1){try{jsonpatch['apply'](_0x56acf1,_0x54a25b,!![]);}catch(_0x149089){return BPromise[_0x86bf('0x1f')](_0x149089);}return _0x56acf1[_0x86bf('0x20')]();};}function saveUpdates(_0x55aee8,_0x3c7772){return function(_0x2cff71){if(_0x2cff71){return _0x2cff71['update'](_0x55aee8)[_0x86bf('0x21')](function(_0x4b694a){return _0x4b694a;});}return null;};}function removeEntity(_0x19cc16,_0x1f2dfd){return function(_0x135a18){if(_0x135a18){return _0x135a18[_0x86bf('0x22')]()[_0x86bf('0x21')](function(){_0x19cc16[_0x86bf('0x1d')](0xcc)[_0x86bf('0x17')]();});}};}function handleEntityNotFound(_0x13a2d3,_0xc3cd5b){return function(_0x309ca5){if(!_0x309ca5){_0x13a2d3['sendStatus'](0x194);}return _0x309ca5;};}function handleError(_0x1f9797,_0x3bcd32){_0x3bcd32=_0x3bcd32||0x1f4;return function(_0x232cec){logger[_0x86bf('0x23')](_0x232cec['stack']);if(_0x232cec[_0x86bf('0x24')]){delete _0x232cec['name'];}_0x1f9797[_0x86bf('0x1d')](_0x3bcd32)[_0x86bf('0x25')](_0x232cec);};}exports[_0x86bf('0x26')]=function(_0x404c53,_0x396bba){var _0x453df2={},_0x238c3a={},_0x3c4c76={'count':0x0,'rows':[]};var _0x5b9ff6=_[_0x86bf('0x27')](db[_0x86bf('0x28')][_0x86bf('0x29')],function(_0x5eb97a){return{'name':_0x5eb97a['fieldName'],'type':_0x5eb97a['type'][_0x86bf('0x2a')]};});_0x238c3a[_0x86bf('0x2b')]=_[_0x86bf('0x27')](_0x5b9ff6,_0x86bf('0x24'));_0x238c3a[_0x86bf('0x2c')]=_[_0x86bf('0x2d')](_0x404c53[_0x86bf('0x2c')]);_0x238c3a['filters']=_[_0x86bf('0x2e')](_0x238c3a[_0x86bf('0x2b')],_0x238c3a['query']);_0x453df2[_0x86bf('0x2f')]=_[_0x86bf('0x2e')](_0x238c3a['model'],qs['fields'](_0x404c53[_0x86bf('0x2c')]['fields']));_0x453df2[_0x86bf('0x2f')]=_0x453df2[_0x86bf('0x2f')][_0x86bf('0x30')]?_0x453df2[_0x86bf('0x2f')]:_0x238c3a['model'];if(!_0x404c53[_0x86bf('0x2c')][_0x86bf('0x31')](_0x86bf('0x32'))){_0x453df2['limit']=qs[_0x86bf('0x1a')](_0x404c53[_0x86bf('0x2c')][_0x86bf('0x1a')]);_0x453df2['offset']=qs[_0x86bf('0x19')](_0x404c53['query'][_0x86bf('0x19')]);}_0x453df2[_0x86bf('0x33')]=qs[_0x86bf('0x34')](_0x404c53[_0x86bf('0x2c')][_0x86bf('0x34')]);_0x453df2[_0x86bf('0x35')]=qs[_0x86bf('0x36')](_[_0x86bf('0x37')](_0x404c53[_0x86bf('0x2c')],_0x238c3a[_0x86bf('0x36')]),_0x5b9ff6);if(_0x404c53[_0x86bf('0x2c')][_0x86bf('0x38')]){_0x453df2['where']=_[_0x86bf('0x39')](_0x453df2['where'],{'$or':_['map'](_0x5b9ff6,function(_0x43b011){if(_0x43b011[_0x86bf('0x3a')]!==_0x86bf('0x3b')){var _0x30e198={};_0x30e198[_0x43b011[_0x86bf('0x24')]]={'$like':'%'+_0x404c53[_0x86bf('0x2c')][_0x86bf('0x38')]+'%'};return _0x30e198;}})});}_0x453df2=_[_0x86bf('0x39')]({},_0x453df2,_0x404c53['options']);var _0x208e0f={'where':_0x453df2['where']};return db[_0x86bf('0x28')][_0x86bf('0x1c')](_0x208e0f)['then'](function(_0x154fc){_0x3c4c76[_0x86bf('0x1c')]=_0x154fc;if(_0x404c53['query'][_0x86bf('0x3c')]){_0x453df2[_0x86bf('0x3d')]=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x453df2);})[_0x86bf('0x21')](function(_0x1f529e){_0x3c4c76['rows']=_0x1f529e;return _0x3c4c76;})[_0x86bf('0x21')](respondWithFilteredResult(_0x396bba,_0x453df2))['catch'](handleError(_0x396bba,null));};exports[_0x86bf('0x3e')]=function(_0x445c76,_0x4fd36d){var _0x5dac53={'raw':!![],'where':{'id':_0x445c76[_0x86bf('0x3f')]['id']}},_0x4902d1={};_0x4902d1[_0x86bf('0x2b')]=_[_0x86bf('0x2d')](db[_0x86bf('0x28')][_0x86bf('0x29')]);_0x4902d1['query']=_['keys'](_0x445c76[_0x86bf('0x2c')]);_0x4902d1['filters']=_[_0x86bf('0x2e')](_0x4902d1['model'],_0x4902d1[_0x86bf('0x2c')]);_0x5dac53['attributes']=_[_0x86bf('0x2e')](_0x4902d1['model'],qs['fields'](_0x445c76[_0x86bf('0x2c')][_0x86bf('0x40')]));_0x5dac53['attributes']=_0x5dac53[_0x86bf('0x2f')]['length']?_0x5dac53[_0x86bf('0x2f')]:_0x4902d1[_0x86bf('0x2b')];if(_0x445c76['query'][_0x86bf('0x3c')]){_0x5dac53[_0x86bf('0x3d')]=[{'all':!![]}];}_0x5dac53=_[_0x86bf('0x39')]({},_0x5dac53,_0x445c76[_0x86bf('0x41')]);return db[_0x86bf('0x28')]['find'](_0x5dac53)[_0x86bf('0x21')](handleEntityNotFound(_0x4fd36d,null))[_0x86bf('0x21')](respondWithResult(_0x4fd36d,null))[_0x86bf('0x42')](handleError(_0x4fd36d,null));};exports['create']=function(_0x408231,_0x2f648a){return db[_0x86bf('0x28')][_0x86bf('0x43')](_0x408231[_0x86bf('0x44')],{})[_0x86bf('0x21')](respondWithResult(_0x2f648a,0xc9))['catch'](handleError(_0x2f648a,null));};exports[_0x86bf('0x45')]=function(_0x3fca01,_0x4154b3){if(_0x3fca01[_0x86bf('0x44')]['id']){delete _0x3fca01[_0x86bf('0x44')]['id'];}return db['SquareReport']['find']({'where':{'id':_0x3fca01[_0x86bf('0x3f')]['id']}})[_0x86bf('0x21')](handleEntityNotFound(_0x4154b3,null))[_0x86bf('0x21')](saveUpdates(_0x3fca01['body'],null))[_0x86bf('0x21')](respondWithResult(_0x4154b3,null))[_0x86bf('0x42')](handleError(_0x4154b3,null));};exports['destroy']=function(_0x3d0b8c,_0x4b30b6){return db[_0x86bf('0x28')]['find']({'where':{'id':_0x3d0b8c[_0x86bf('0x3f')]['id']}})[_0x86bf('0x21')](handleEntityNotFound(_0x4b30b6,null))['then'](removeEntity(_0x4b30b6,null))[_0x86bf('0x42')](handleError(_0x4b30b6,null));};exports['describe']=function(_0x1a56b7,_0x1069ec){return db['SquareReport']['describe']()[_0x86bf('0x21')](respondWithResult(_0x1069ec,null))[_0x86bf('0x42')](handleError(_0x1069ec,null));};
\ No newline at end of file
index 0c28f8d..bffa473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d8a=['./squareReport.attributes','exports','SquareReport','uid_pname','uniqueid','project_name','leaveAt','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3f25b2,_0x412bd4){var _0xd8caeb=function(_0x52d252){while(--_0x52d252){_0x3f25b2['push'](_0x3f25b2['shift']());}};_0xd8caeb(++_0x412bd4);}(_0x8d8a,0xe8));var _0xa8d8=function(_0x4ba9eb,_0x496ce9){_0x4ba9eb=_0x4ba9eb-0x0;var _0x5818fb=_0x8d8a[_0x4ba9eb];return _0x5818fb;};'use strict';var _=require('lodash');var util=require(_0xa8d8('0x0'));var logger=require(_0xa8d8('0x1'))(_0xa8d8('0x2'));var moment=require(_0xa8d8('0x3'));var BPromise=require(_0xa8d8('0x4'));var rp=require(_0xa8d8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa8d8('0x6'));var config=require(_0xa8d8('0x7'));var attributes=require(_0xa8d8('0x8'));module[_0xa8d8('0x9')]=function(_0x1765ab,_0x49de2f){return _0x1765ab['define'](_0xa8d8('0xa'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0xa8d8('0xb'),'fields':[_0xa8d8('0xc'),_0xa8d8('0xd')]},{'name':'leaveAt','fields':[_0xa8d8('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xada6=['util','../../config/logger','request-promise','path','rimraf','./squareReport.attributes','SquareReport','uid_pname','project_name','leaveAt','lodash'];(function(_0x25270c,_0x549aca){var _0x4c3ba2=function(_0x36473e){while(--_0x36473e){_0x25270c['push'](_0x25270c['shift']());}};_0x4c3ba2(++_0x549aca);}(_0xada6,0x154));var _0x6ada=function(_0x4b7fbe,_0x53b570){_0x4b7fbe=_0x4b7fbe-0x0;var _0x11921f=_0xada6[_0x4b7fbe];return _0x11921f;};'use strict';var _=require(_0x6ada('0x0'));var util=require(_0x6ada('0x1'));var logger=require(_0x6ada('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6ada('0x3'));var fs=require('fs');var path=require(_0x6ada('0x4'));var rimraf=require(_0x6ada('0x5'));var config=require('../../config/environment');var attributes=require(_0x6ada('0x6'));module['exports']=function(_0x35b843,_0x4832bf){return _0x35b843['define'](_0x6ada('0x7'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x6ada('0x8'),'fields':['uniqueid',_0x6ada('0x9')]},{'name':_0x6ada('0xa'),'fields':[_0x6ada('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index f4b87c1..e965be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a66=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareReport','create','body','options','stringify','UpdateSquareReport','SquareReport','update','raw','where','limit','lodash'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5a66,0x1ee));var _0x65a6=function(_0x116406,_0x3c9f54){_0x116406=_0x116406-0x0;var _0x11e16d=_0x5a66[_0x116406];return _0x11e16d;};'use strict';var _=require(_0x65a6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x65a6('0x1'));var rs=require(_0x65a6('0x2'));var fs=require('fs');var Redis=require(_0x65a6('0x3'));var db=require(_0x65a6('0x4'))['db'];var utils=require(_0x65a6('0x5'));var logger=require('../../config/logger')(_0x65a6('0x6'));var config=require(_0x65a6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x65a6('0x8')][_0x65a6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x404b4b,_0x236864,_0x33892e){return new BPromise(function(_0x581c1e,_0x59bdef){return client[_0x65a6('0xa')](_0x404b4b,_0x33892e)[_0x65a6('0xb')](function(_0x509f7b){logger[_0x65a6('0xc')](_0x65a6('0xd'),_0x236864,_0x65a6('0xe'));logger[_0x65a6('0xf')](_0x65a6('0x10'),_0x236864,_0x65a6('0xe'),JSON['stringify'](_0x509f7b));if(_0x509f7b[_0x65a6('0x11')]){if(_0x509f7b[_0x65a6('0x11')][_0x65a6('0x12')]===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x236864,_0x509f7b[_0x65a6('0x11')][_0x65a6('0x13')]);return _0x59bdef(_0x509f7b[_0x65a6('0x11')][_0x65a6('0x13')]);}logger[_0x65a6('0x11')](_0x65a6('0xd'),_0x236864,_0x509f7b['error'][_0x65a6('0x13')]);return _0x581c1e(_0x509f7b[_0x65a6('0x11')][_0x65a6('0x13')]);}else{logger[_0x65a6('0xc')](_0x65a6('0xd'),_0x236864,'request\x20sent');_0x581c1e(_0x509f7b[_0x65a6('0x14')][_0x65a6('0x13')]);}})[_0x65a6('0x15')](function(_0x5daceb){logger['error'](_0x65a6('0xd'),_0x236864,_0x5daceb);_0x59bdef(_0x5daceb);});});}exports[_0x65a6('0x16')]=function(_0x49a4d5){var _0x2cf28c=this;return new Promise(function(_0x37af7c,_0x5564be){return db['SquareReport'][_0x65a6('0x17')](_0x49a4d5[_0x65a6('0x18')],{'raw':_0x49a4d5['options']?_0x49a4d5[_0x65a6('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x65a6('0xb')](function(_0x22c224){logger[_0x65a6('0xc')](_0x65a6('0x16'),_0x49a4d5);logger[_0x65a6('0xf')]('CreateSquareReport',_0x49a4d5,JSON[_0x65a6('0x1a')](_0x22c224));_0x37af7c(_0x22c224);})['catch'](function(_0x41fdde){logger[_0x65a6('0x11')]('CreateSquareReport',_0x41fdde[_0x65a6('0x13')],_0x49a4d5);_0x5564be(_0x2cf28c[_0x65a6('0x11')](0x1f4,_0x41fdde[_0x65a6('0x13')]));});});};exports[_0x65a6('0x1b')]=function(_0x421294){var _0x559c0d=this;return new Promise(function(_0x59abe3,_0x5a06ce){return db[_0x65a6('0x1c')][_0x65a6('0x1d')](_0x421294['body'],{'raw':_0x421294[_0x65a6('0x19')]?_0x421294[_0x65a6('0x19')][_0x65a6('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x421294['options']?_0x421294[_0x65a6('0x19')][_0x65a6('0x1f')]||null:null,'attributes':_0x421294[_0x65a6('0x19')]?_0x421294[_0x65a6('0x19')]['attributes']||null:null,'limit':_0x421294['options']?_0x421294['options'][_0x65a6('0x20')]||null:null})[_0x65a6('0xb')](function(_0x257097){logger[_0x65a6('0xc')](_0x65a6('0x1b'),_0x421294);logger['debug'](_0x65a6('0x1b'),_0x421294,JSON[_0x65a6('0x1a')](_0x257097));_0x59abe3(_0x257097);})[_0x65a6('0x15')](function(_0x42c85a){logger['error'](_0x65a6('0x1b'),_0x42c85a['message'],_0x421294);_0x5a06ce(_0x559c0d['error'](0x1f4,_0x42c85a[_0x65a6('0x13')]));});});};
\ No newline at end of file
+var _0xd48a=['debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','CreateSquareReport','SquareReport','create','options','UpdateSquareReport','body','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','SquareReport,\x20%s,\x20%s'];(function(_0xee7ead,_0x5ccfb9){var _0x4d9c47=function(_0x1252eb){while(--_0x1252eb){_0xee7ead['push'](_0xee7ead['shift']());}};_0x4d9c47(++_0x5ccfb9);}(_0xd48a,0x171));var _0xad48=function(_0x58a578,_0x464100){_0x58a578=_0x58a578-0x0;var _0xe735ff=_0xd48a[_0x58a578];return _0xe735ff;};'use strict';var _=require(_0xad48('0x0'));var util=require(_0xad48('0x1'));var moment=require(_0xad48('0x2'));var BPromise=require(_0xad48('0x3'));var rs=require(_0xad48('0x4'));var fs=require('fs');var Redis=require(_0xad48('0x5'));var db=require(_0xad48('0x6'))['db'];var utils=require(_0xad48('0x7'));var logger=require(_0xad48('0x8'))('rpc');var config=require(_0xad48('0x9'));var jayson=require(_0xad48('0xa'));var client=jayson[_0xad48('0xb')][_0xad48('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x542227,_0x135e09,_0xa876f3){return new BPromise(function(_0x2e7611,_0x30cbc9){return client[_0xad48('0xd')](_0x542227,_0xa876f3)[_0xad48('0xe')](function(_0x5086cf){logger['info'](_0xad48('0xf'),_0x135e09,'request\x20sent');logger[_0xad48('0x10')](_0xad48('0x11'),_0x135e09,_0xad48('0x12'),JSON[_0xad48('0x13')](_0x5086cf));if(_0x5086cf[_0xad48('0x14')]){if(_0x5086cf[_0xad48('0x14')][_0xad48('0x15')]===0x1f4){logger[_0xad48('0x14')]('SquareReport,\x20%s,\x20%s',_0x135e09,_0x5086cf['error'][_0xad48('0x16')]);return _0x30cbc9(_0x5086cf['error'][_0xad48('0x16')]);}logger['error'](_0xad48('0xf'),_0x135e09,_0x5086cf[_0xad48('0x14')][_0xad48('0x16')]);return _0x2e7611(_0x5086cf['error']['message']);}else{logger[_0xad48('0x17')](_0xad48('0xf'),_0x135e09,_0xad48('0x12'));_0x2e7611(_0x5086cf[_0xad48('0x18')]['message']);}})[_0xad48('0x19')](function(_0x585221){logger['error']('SquareReport,\x20%s,\x20%s',_0x135e09,_0x585221);_0x30cbc9(_0x585221);});});}exports[_0xad48('0x1a')]=function(_0x3f0175){var _0x5e27ca=this;return new Promise(function(_0x119a4e,_0x20d1d3){return db[_0xad48('0x1b')][_0xad48('0x1c')](_0x3f0175['body'],{'raw':_0x3f0175[_0xad48('0x1d')]?_0x3f0175[_0xad48('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0xad48('0xe')](function(_0x3762a8){logger[_0xad48('0x17')](_0xad48('0x1a'),_0x3f0175);logger[_0xad48('0x10')]('CreateSquareReport',_0x3f0175,JSON[_0xad48('0x13')](_0x3762a8));_0x119a4e(_0x3762a8);})[_0xad48('0x19')](function(_0x525bfd){logger[_0xad48('0x14')](_0xad48('0x1a'),_0x525bfd[_0xad48('0x16')],_0x3f0175);_0x20d1d3(_0x5e27ca[_0xad48('0x14')](0x1f4,_0x525bfd[_0xad48('0x16')]));});});};exports[_0xad48('0x1e')]=function(_0x11f545){var _0x1be3ea=this;return new Promise(function(_0x30c477,_0x508516){return db[_0xad48('0x1b')]['update'](_0x11f545[_0xad48('0x1f')],{'raw':_0x11f545['options']?_0x11f545[_0xad48('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11f545['options']?_0x11f545[_0xad48('0x1d')][_0xad48('0x20')]||null:null,'attributes':_0x11f545['options']?_0x11f545[_0xad48('0x1d')][_0xad48('0x21')]||null:null,'limit':_0x11f545[_0xad48('0x1d')]?_0x11f545[_0xad48('0x1d')][_0xad48('0x22')]||null:null})[_0xad48('0xe')](function(_0x5761d1){logger['info'](_0xad48('0x1e'),_0x11f545);logger[_0xad48('0x10')](_0xad48('0x1e'),_0x11f545,JSON['stringify'](_0x5761d1));_0x30c477(_0x5761d1);})['catch'](function(_0x687b6){logger[_0xad48('0x14')](_0xad48('0x1e'),_0x687b6[_0xad48('0x16')],_0x11f545);_0x508516(_0x1be3ea[_0xad48('0x14')](0x1f4,_0x687b6['message']));});});};
\ No newline at end of file
index da5f504..45dc2b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe36=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0xd026f9,_0x5a314e){var _0x3962ed=function(_0xacc457){while(--_0xacc457){_0xd026f9['push'](_0xd026f9['shift']());}};_0x3962ed(++_0x5a314e);}(_0xbe36,0x1c7));var _0x6be3=function(_0x50443d,_0x2a0b15){_0x50443d=_0x50443d-0x0;var _0x45013b=_0xbe36[_0x50443d];return _0x45013b;};'use strict';var multer=require(_0x6be3('0x0'));var util=require(_0x6be3('0x1'));var path=require(_0x6be3('0x2'));var timeout=require(_0x6be3('0x3'));var express=require(_0x6be3('0x4'));var router=express['Router']();var fs_extra=require(_0x6be3('0x5'));var auth=require(_0x6be3('0x6'));var interaction=require(_0x6be3('0x7'));var config=require(_0x6be3('0x8'));var controller=require('./squareReportDetail.controller');router[_0x6be3('0x9')]('/',auth[_0x6be3('0xa')](),controller[_0x6be3('0xb')]);router[_0x6be3('0x9')](_0x6be3('0xc'),auth[_0x6be3('0xa')](),controller[_0x6be3('0xd')]);router[_0x6be3('0x9')](_0x6be3('0xe'),auth[_0x6be3('0xa')](),controller[_0x6be3('0xf')]);router[_0x6be3('0x10')]('/',auth[_0x6be3('0xa')](),controller[_0x6be3('0x11')]);router[_0x6be3('0x12')](_0x6be3('0xe'),auth[_0x6be3('0xa')](),controller[_0x6be3('0x13')]);router[_0x6be3('0x14')](_0x6be3('0xe'),auth['isAuthenticated'](),controller[_0x6be3('0x15')]);module[_0x6be3('0x16')]=router;
\ No newline at end of file
+var _0x800b=['../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','index','get','/describe','isAuthenticated','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra'];(function(_0x1b4b4d,_0x42cb3a){var _0x1efc63=function(_0x379632){while(--_0x379632){_0x1b4b4d['push'](_0x1b4b4d['shift']());}};_0x1efc63(++_0x42cb3a);}(_0x800b,0x121));var _0xb800=function(_0x16e57d,_0x2cb7ba){_0x16e57d=_0x16e57d-0x0;var _0x40239c=_0x800b[_0x16e57d];return _0x40239c;};'use strict';var multer=require(_0xb800('0x0'));var util=require(_0xb800('0x1'));var path=require(_0xb800('0x2'));var timeout=require(_0xb800('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb800('0x4'));var auth=require(_0xb800('0x5'));var interaction=require(_0xb800('0x6'));var config=require(_0xb800('0x7'));var controller=require(_0xb800('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xb800('0x9')]);router[_0xb800('0xa')](_0xb800('0xb'),auth[_0xb800('0xc')](),controller['describe']);router['get'](_0xb800('0xd'),auth[_0xb800('0xc')](),controller[_0xb800('0xe')]);router[_0xb800('0xf')]('/',auth[_0xb800('0xc')](),controller['create']);router[_0xb800('0x10')](_0xb800('0xd'),auth['isAuthenticated'](),controller[_0xb800('0x11')]);router[_0xb800('0x12')]('/:id',auth[_0xb800('0xc')](),controller[_0xb800('0x13')]);module[_0xb800('0x14')]=router;
\ No newline at end of file
index dded7aa..f39dcd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd63=['TEXT','sequelize','exports','STRING'];(function(_0x1b8d87,_0x4168fb){var _0x182b74=function(_0x12b570){while(--_0x12b570){_0x1b8d87['push'](_0x1b8d87['shift']());}};_0x182b74(++_0x4168fb);}(_0xbd63,0x199));var _0x3bd6=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xbd63[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x3bd6('0x0'));module[_0x3bd6('0x1')]={'uniqueid':{'type':Sequelize[_0x3bd6('0x2')]},'node':{'type':Sequelize[_0x3bd6('0x2')]},'application':{'type':Sequelize[_0x3bd6('0x2')]},'data':{'type':Sequelize[_0x3bd6('0x3')]},'project_name':{'type':Sequelize[_0x3bd6('0x2')]},'callerid':{'type':Sequelize[_0x3bd6('0x2')]}};
\ No newline at end of file
+var _0xff30=['sequelize','exports','STRING','TEXT'];(function(_0x11dd55,_0x1e91c9){var _0x13b49f=function(_0x1ddd56){while(--_0x1ddd56){_0x11dd55['push'](_0x11dd55['shift']());}};_0x13b49f(++_0x1e91c9);}(_0xff30,0x104));var _0x0ff3=function(_0x190814,_0x590463){_0x190814=_0x190814-0x0;var _0x5cafc8=_0xff30[_0x190814];return _0x5cafc8;};'use strict';var Sequelize=require(_0x0ff3('0x0'));module[_0x0ff3('0x1')]={'uniqueid':{'type':Sequelize[_0x0ff3('0x2')]},'node':{'type':Sequelize[_0x0ff3('0x2')]},'application':{'type':Sequelize[_0x0ff3('0x2')]},'data':{'type':Sequelize[_0x0ff3('0x3')]},'project_name':{'type':Sequelize[_0x0ff3('0x2')]},'callerid':{'type':Sequelize[_0x0ff3('0x2')]}};
\ No newline at end of file
index 87504e6..24d9d21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb31=['order','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x513683,_0x56bd88){var _0x6028e=function(_0x595044){while(--_0x595044){_0x513683['push'](_0x513683['shift']());}};_0x6028e(++_0x56bd88);}(_0xbb31,0x1ef));var _0x1bb3=function(_0x582263,_0x245633){_0x582263=_0x582263-0x0;var _0x1bb3e3=_0xbb31[_0x582263];return _0x1bb3e3;};'use strict';var emlformat=require(_0x1bb3('0x0'));var rimraf=require(_0x1bb3('0x1'));var zipdir=require(_0x1bb3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1bb3('0x3'));var moment=require(_0x1bb3('0x4'));var BPromise=require(_0x1bb3('0x5'));var Mustache=require(_0x1bb3('0x6'));var util=require(_0x1bb3('0x7'));var path=require(_0x1bb3('0x8'));var sox=require('sox');var csv=require(_0x1bb3('0x9'));var ejs=require(_0x1bb3('0xa'));var fs=require('fs');var fs_extra=require(_0x1bb3('0xb'));var _=require(_0x1bb3('0xc'));var squel=require(_0x1bb3('0xd'));var crypto=require(_0x1bb3('0xe'));var jsforce=require(_0x1bb3('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x1bb3('0x9'));var querystring=require(_0x1bb3('0x10'));var Papa=require(_0x1bb3('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1bb3('0x12'));var as=require(_0x1bb3('0x13'));var hardwareService=require(_0x1bb3('0x14'));var logger=require(_0x1bb3('0x15'))(_0x1bb3('0x16'));var utils=require(_0x1bb3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1bb3('0x18'));var db=require(_0x1bb3('0x19'))['db'];function respondWithStatusCode(_0x48a860,_0x2181cc){_0x2181cc=_0x2181cc||0xcc;return function(_0x56e39a){if(_0x56e39a){return _0x48a860['sendStatus'](_0x2181cc);}return _0x48a860[_0x1bb3('0x1a')](_0x2181cc)[_0x1bb3('0x1b')]();};}function respondWithResult(_0x358436,_0x42ade9){_0x42ade9=_0x42ade9||0xc8;return function(_0x53b5c3){if(_0x53b5c3){return _0x358436[_0x1bb3('0x1a')](_0x42ade9)[_0x1bb3('0x1c')](_0x53b5c3);}};}function respondWithFilteredResult(_0x5241c4,_0xd09733){return function(_0x4eda21){if(_0x4eda21){var _0x5a0165=typeof _0xd09733[_0x1bb3('0x1d')]===_0x1bb3('0x1e')&&typeof _0xd09733['limit']===_0x1bb3('0x1e');var _0x3bacf1=_0x4eda21[_0x1bb3('0x1f')];var _0x59a7fb=_0x5a0165?0x0:_0xd09733[_0x1bb3('0x1d')];var _0x1d0dd4=_0x5a0165?_0x4eda21['count']:_0xd09733[_0x1bb3('0x1d')]+_0xd09733[_0x1bb3('0x20')];var _0x460f38;if(_0x1d0dd4>=_0x3bacf1){_0x1d0dd4=_0x3bacf1;_0x460f38=0xc8;}else{_0x460f38=0xce;}_0x5241c4[_0x1bb3('0x1a')](_0x460f38);return _0x5241c4[_0x1bb3('0x21')](_0x1bb3('0x22'),_0x59a7fb+'-'+_0x1d0dd4+'/'+_0x3bacf1)[_0x1bb3('0x1c')](_0x4eda21);}return null;};}function patchUpdates(_0x606ee3){return function(_0x15ef2a){try{jsonpatch[_0x1bb3('0x23')](_0x15ef2a,_0x606ee3,!![]);}catch(_0x2896e4){return BPromise[_0x1bb3('0x24')](_0x2896e4);}return _0x15ef2a[_0x1bb3('0x25')]();};}function saveUpdates(_0x2612c3,_0x4e67cc){return function(_0x233661){if(_0x233661){return _0x233661[_0x1bb3('0x26')](_0x2612c3)['then'](function(_0x342c97){return _0x342c97;});}return null;};}function removeEntity(_0x188a32,_0x39d3cd){return function(_0x377098){if(_0x377098){return _0x377098['destroy']()[_0x1bb3('0x27')](function(){_0x188a32[_0x1bb3('0x1a')](0xcc)[_0x1bb3('0x1b')]();});}};}function handleEntityNotFound(_0x274008,_0x2373af){return function(_0x4d3d56){if(!_0x4d3d56){_0x274008[_0x1bb3('0x28')](0x194);}return _0x4d3d56;};}function handleError(_0x260b2b,_0x5338a2){_0x5338a2=_0x5338a2||0x1f4;return function(_0x27f6dd){logger[_0x1bb3('0x29')](_0x27f6dd[_0x1bb3('0x2a')]);if(_0x27f6dd[_0x1bb3('0x2b')]){delete _0x27f6dd['name'];}_0x260b2b['status'](_0x5338a2)[_0x1bb3('0x2c')](_0x27f6dd);};}exports[_0x1bb3('0x2d')]=function(_0x52d4bd,_0x1d43bf){var _0x31f23a={},_0x465c13={},_0x777501={'count':0x0,'rows':[]};var _0x2b3113=_[_0x1bb3('0x2e')](db[_0x1bb3('0x2f')][_0x1bb3('0x30')],function(_0x5eeec7){return{'name':_0x5eeec7[_0x1bb3('0x31')],'type':_0x5eeec7['type']['key']};});_0x465c13[_0x1bb3('0x32')]=_['map'](_0x2b3113,'name');_0x465c13['query']=_['keys'](_0x52d4bd[_0x1bb3('0x33')]);_0x465c13[_0x1bb3('0x34')]=_[_0x1bb3('0x35')](_0x465c13[_0x1bb3('0x32')],_0x465c13[_0x1bb3('0x33')]);_0x31f23a[_0x1bb3('0x36')]=_[_0x1bb3('0x35')](_0x465c13['model'],qs[_0x1bb3('0x37')](_0x52d4bd['query'][_0x1bb3('0x37')]));_0x31f23a[_0x1bb3('0x36')]=_0x31f23a[_0x1bb3('0x36')]['length']?_0x31f23a[_0x1bb3('0x36')]:_0x465c13[_0x1bb3('0x32')];if(!_0x52d4bd[_0x1bb3('0x33')][_0x1bb3('0x38')](_0x1bb3('0x39'))){_0x31f23a[_0x1bb3('0x20')]=qs['limit'](_0x52d4bd[_0x1bb3('0x33')]['limit']);_0x31f23a[_0x1bb3('0x1d')]=qs[_0x1bb3('0x1d')](_0x52d4bd[_0x1bb3('0x33')][_0x1bb3('0x1d')]);}_0x31f23a[_0x1bb3('0x3a')]=qs[_0x1bb3('0x3b')](_0x52d4bd['query'][_0x1bb3('0x3b')]);_0x31f23a['where']=qs[_0x1bb3('0x34')](_[_0x1bb3('0x3c')](_0x52d4bd[_0x1bb3('0x33')],_0x465c13[_0x1bb3('0x34')]),_0x2b3113);if(_0x52d4bd[_0x1bb3('0x33')]['filter']){_0x31f23a[_0x1bb3('0x3d')]=_['merge'](_0x31f23a[_0x1bb3('0x3d')],{'$or':_[_0x1bb3('0x2e')](_0x2b3113,function(_0x569391){if(_0x569391['type']!==_0x1bb3('0x3e')){var _0x2f9a70={};_0x2f9a70[_0x569391[_0x1bb3('0x2b')]]={'$like':'%'+_0x52d4bd[_0x1bb3('0x33')][_0x1bb3('0x3f')]+'%'};return _0x2f9a70;}})});}_0x31f23a=_[_0x1bb3('0x40')]({},_0x31f23a,_0x52d4bd[_0x1bb3('0x41')]);var _0x5be531={'where':_0x31f23a['where']};return db[_0x1bb3('0x2f')][_0x1bb3('0x1f')](_0x5be531)['then'](function(_0x154faf){_0x777501['count']=_0x154faf;if(_0x52d4bd[_0x1bb3('0x33')][_0x1bb3('0x42')]){_0x31f23a[_0x1bb3('0x43')]=[{'all':!![]}];}return db[_0x1bb3('0x2f')][_0x1bb3('0x44')](_0x31f23a);})['then'](function(_0x340efc){_0x777501[_0x1bb3('0x45')]=_0x340efc;return _0x777501;})[_0x1bb3('0x27')](respondWithFilteredResult(_0x1d43bf,_0x31f23a))[_0x1bb3('0x46')](handleError(_0x1d43bf,null));};exports[_0x1bb3('0x47')]=function(_0x39bafa,_0x2b2713){var _0x556727={'raw':!![],'where':{'id':_0x39bafa[_0x1bb3('0x48')]['id']}},_0x584bb4={};_0x584bb4[_0x1bb3('0x32')]=_['keys'](db[_0x1bb3('0x2f')][_0x1bb3('0x30')]);_0x584bb4['query']=_[_0x1bb3('0x49')](_0x39bafa[_0x1bb3('0x33')]);_0x584bb4[_0x1bb3('0x34')]=_[_0x1bb3('0x35')](_0x584bb4[_0x1bb3('0x32')],_0x584bb4['query']);_0x556727[_0x1bb3('0x36')]=_[_0x1bb3('0x35')](_0x584bb4[_0x1bb3('0x32')],qs['fields'](_0x39bafa[_0x1bb3('0x33')][_0x1bb3('0x37')]));_0x556727[_0x1bb3('0x36')]=_0x556727['attributes']['length']?_0x556727[_0x1bb3('0x36')]:_0x584bb4['model'];if(_0x39bafa[_0x1bb3('0x33')][_0x1bb3('0x42')]){_0x556727[_0x1bb3('0x43')]=[{'all':!![]}];}_0x556727=_[_0x1bb3('0x40')]({},_0x556727,_0x39bafa[_0x1bb3('0x41')]);return db[_0x1bb3('0x2f')][_0x1bb3('0x4a')](_0x556727)[_0x1bb3('0x27')](handleEntityNotFound(_0x2b2713,null))[_0x1bb3('0x27')](respondWithResult(_0x2b2713,null))[_0x1bb3('0x46')](handleError(_0x2b2713,null));};exports[_0x1bb3('0x4b')]=function(_0x34f0b9,_0x64fd77){return db['SquareDetailsReport'][_0x1bb3('0x4b')](_0x34f0b9['body'],{})[_0x1bb3('0x27')](respondWithResult(_0x64fd77,0xc9))[_0x1bb3('0x46')](handleError(_0x64fd77,null));};exports['update']=function(_0x1f434f,_0x93bfd5){if(_0x1f434f[_0x1bb3('0x4c')]['id']){delete _0x1f434f[_0x1bb3('0x4c')]['id'];}return db[_0x1bb3('0x2f')][_0x1bb3('0x4a')]({'where':{'id':_0x1f434f[_0x1bb3('0x48')]['id']}})[_0x1bb3('0x27')](handleEntityNotFound(_0x93bfd5,null))['then'](saveUpdates(_0x1f434f[_0x1bb3('0x4c')],null))[_0x1bb3('0x27')](respondWithResult(_0x93bfd5,null))[_0x1bb3('0x46')](handleError(_0x93bfd5,null));};exports[_0x1bb3('0x4d')]=function(_0x5eb9be,_0x34ddd9){return db['SquareDetailsReport']['find']({'where':{'id':_0x5eb9be[_0x1bb3('0x48')]['id']}})[_0x1bb3('0x27')](handleEntityNotFound(_0x34ddd9,null))[_0x1bb3('0x27')](removeEntity(_0x34ddd9,null))['catch'](handleError(_0x34ddd9,null));};exports['describe']=function(_0x2fb283,_0x12d428){return db[_0x1bb3('0x2f')][_0x1bb3('0x4e')]()[_0x1bb3('0x27')](respondWithResult(_0x12d428,null))['catch'](handleError(_0x12d428,null));};
\ No newline at end of file
+var _0x437d=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL','filter','options','SquareDetailsReport','include','rows','show','params','rawAttributes','includeAll','find','catch','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x437d,0x87));var _0xd437=function(_0x24ddfa,_0x334629){_0x24ddfa=_0x24ddfa-0x0;var _0x5f2983=_0x437d[_0x24ddfa];return _0x5f2983;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd437('0x0'));var zipdir=require(_0xd437('0x1'));var jsonpatch=require(_0xd437('0x2'));var rp=require('request-promise');var moment=require(_0xd437('0x3'));var BPromise=require(_0xd437('0x4'));var Mustache=require(_0xd437('0x5'));var util=require(_0xd437('0x6'));var path=require(_0xd437('0x7'));var sox=require(_0xd437('0x8'));var csv=require('to-csv');var ejs=require(_0xd437('0x9'));var fs=require('fs');var fs_extra=require(_0xd437('0xa'));var _=require(_0xd437('0xb'));var squel=require(_0xd437('0xc'));var crypto=require('crypto');var jsforce=require(_0xd437('0xd'));var deskjs=require(_0xd437('0xe'));var toCsv=require(_0xd437('0xf'));var querystring=require(_0xd437('0x10'));var Papa=require(_0xd437('0x11'));var Redis=require('ioredis');var authService=require(_0xd437('0x12'));var qs=require(_0xd437('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd437('0x14'))(_0xd437('0x15'));var utils=require(_0xd437('0x16'));var config=require(_0xd437('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd437('0x18'))['db'];function respondWithStatusCode(_0x376545,_0x1fe815){_0x1fe815=_0x1fe815||0xcc;return function(_0x30aab8){if(_0x30aab8){return _0x376545[_0xd437('0x19')](_0x1fe815);}return _0x376545[_0xd437('0x1a')](_0x1fe815)['end']();};}function respondWithResult(_0x20424e,_0x5af8e4){_0x5af8e4=_0x5af8e4||0xc8;return function(_0x1d152a){if(_0x1d152a){return _0x20424e[_0xd437('0x1a')](_0x5af8e4)[_0xd437('0x1b')](_0x1d152a);}};}function respondWithFilteredResult(_0x1e6fcd,_0x3ae44a){return function(_0x515a86){if(_0x515a86){var _0x4ab13e=typeof _0x3ae44a[_0xd437('0x1c')]===_0xd437('0x1d')&&typeof _0x3ae44a[_0xd437('0x1e')]==='undefined';var _0x47023e=_0x515a86['count'];var _0x467535=_0x4ab13e?0x0:_0x3ae44a['offset'];var _0x276cdb=_0x4ab13e?_0x515a86[_0xd437('0x1f')]:_0x3ae44a[_0xd437('0x1c')]+_0x3ae44a[_0xd437('0x1e')];var _0x55fc71;if(_0x276cdb>=_0x47023e){_0x276cdb=_0x47023e;_0x55fc71=0xc8;}else{_0x55fc71=0xce;}_0x1e6fcd[_0xd437('0x1a')](_0x55fc71);return _0x1e6fcd[_0xd437('0x20')](_0xd437('0x21'),_0x467535+'-'+_0x276cdb+'/'+_0x47023e)[_0xd437('0x1b')](_0x515a86);}return null;};}function patchUpdates(_0x2af32e){return function(_0x577416){try{jsonpatch[_0xd437('0x22')](_0x577416,_0x2af32e,!![]);}catch(_0x5ecb30){return BPromise[_0xd437('0x23')](_0x5ecb30);}return _0x577416[_0xd437('0x24')]();};}function saveUpdates(_0x32a45a,_0x46a2f7){return function(_0x310cdf){if(_0x310cdf){return _0x310cdf[_0xd437('0x25')](_0x32a45a)[_0xd437('0x26')](function(_0x148286){return _0x148286;});}return null;};}function removeEntity(_0x3bbe70,_0x4aaf69){return function(_0x172e36){if(_0x172e36){return _0x172e36['destroy']()['then'](function(){_0x3bbe70['status'](0xcc)[_0xd437('0x27')]();});}};}function handleEntityNotFound(_0x31c134,_0x20f476){return function(_0x318e34){if(!_0x318e34){_0x31c134[_0xd437('0x19')](0x194);}return _0x318e34;};}function handleError(_0x3c6ee4,_0x22ee0a){_0x22ee0a=_0x22ee0a||0x1f4;return function(_0x408661){logger['error'](_0x408661[_0xd437('0x28')]);if(_0x408661[_0xd437('0x29')]){delete _0x408661[_0xd437('0x29')];}_0x3c6ee4[_0xd437('0x1a')](_0x22ee0a)[_0xd437('0x2a')](_0x408661);};}exports[_0xd437('0x2b')]=function(_0x15dd6f,_0x27e2fe){var _0x63926d={},_0x18962a={},_0x416093={'count':0x0,'rows':[]};var _0x5eae96=_[_0xd437('0x2c')](db['SquareDetailsReport']['rawAttributes'],function(_0xef836e){return{'name':_0xef836e[_0xd437('0x2d')],'type':_0xef836e[_0xd437('0x2e')][_0xd437('0x2f')]};});_0x18962a[_0xd437('0x30')]=_[_0xd437('0x2c')](_0x5eae96,'name');_0x18962a[_0xd437('0x31')]=_[_0xd437('0x32')](_0x15dd6f[_0xd437('0x31')]);_0x18962a[_0xd437('0x33')]=_[_0xd437('0x34')](_0x18962a[_0xd437('0x30')],_0x18962a['query']);_0x63926d[_0xd437('0x35')]=_[_0xd437('0x34')](_0x18962a['model'],qs[_0xd437('0x36')](_0x15dd6f[_0xd437('0x31')][_0xd437('0x36')]));_0x63926d[_0xd437('0x35')]=_0x63926d[_0xd437('0x35')][_0xd437('0x37')]?_0x63926d[_0xd437('0x35')]:_0x18962a['model'];if(!_0x15dd6f[_0xd437('0x31')][_0xd437('0x38')](_0xd437('0x39'))){_0x63926d[_0xd437('0x1e')]=qs['limit'](_0x15dd6f[_0xd437('0x31')]['limit']);_0x63926d[_0xd437('0x1c')]=qs[_0xd437('0x1c')](_0x15dd6f[_0xd437('0x31')][_0xd437('0x1c')]);}_0x63926d['order']=qs[_0xd437('0x3a')](_0x15dd6f[_0xd437('0x31')][_0xd437('0x3a')]);_0x63926d['where']=qs[_0xd437('0x33')](_[_0xd437('0x3b')](_0x15dd6f[_0xd437('0x31')],_0x18962a['filters']),_0x5eae96);if(_0x15dd6f[_0xd437('0x31')]['filter']){_0x63926d['where']=_[_0xd437('0x3c')](_0x63926d[_0xd437('0x3d')],{'$or':_[_0xd437('0x2c')](_0x5eae96,function(_0xef2917){if(_0xef2917['type']!==_0xd437('0x3e')){var _0x13fd86={};_0x13fd86[_0xef2917['name']]={'$like':'%'+_0x15dd6f[_0xd437('0x31')][_0xd437('0x3f')]+'%'};return _0x13fd86;}})});}_0x63926d=_['merge']({},_0x63926d,_0x15dd6f[_0xd437('0x40')]);var _0x410140={'where':_0x63926d[_0xd437('0x3d')]};return db[_0xd437('0x41')][_0xd437('0x1f')](_0x410140)[_0xd437('0x26')](function(_0x2951ce){_0x416093[_0xd437('0x1f')]=_0x2951ce;if(_0x15dd6f[_0xd437('0x31')]['includeAll']){_0x63926d[_0xd437('0x42')]=[{'all':!![]}];}return db[_0xd437('0x41')]['findAll'](_0x63926d);})[_0xd437('0x26')](function(_0x1e0388){_0x416093[_0xd437('0x43')]=_0x1e0388;return _0x416093;})[_0xd437('0x26')](respondWithFilteredResult(_0x27e2fe,_0x63926d))['catch'](handleError(_0x27e2fe,null));};exports[_0xd437('0x44')]=function(_0x21a97b,_0x3ec298){var _0x15ea94={'raw':!![],'where':{'id':_0x21a97b[_0xd437('0x45')]['id']}},_0x4f93bc={};_0x4f93bc['model']=_[_0xd437('0x32')](db['SquareDetailsReport'][_0xd437('0x46')]);_0x4f93bc['query']=_['keys'](_0x21a97b[_0xd437('0x31')]);_0x4f93bc[_0xd437('0x33')]=_['intersection'](_0x4f93bc[_0xd437('0x30')],_0x4f93bc['query']);_0x15ea94['attributes']=_[_0xd437('0x34')](_0x4f93bc[_0xd437('0x30')],qs['fields'](_0x21a97b[_0xd437('0x31')][_0xd437('0x36')]));_0x15ea94[_0xd437('0x35')]=_0x15ea94[_0xd437('0x35')][_0xd437('0x37')]?_0x15ea94[_0xd437('0x35')]:_0x4f93bc[_0xd437('0x30')];if(_0x21a97b[_0xd437('0x31')][_0xd437('0x47')]){_0x15ea94[_0xd437('0x42')]=[{'all':!![]}];}_0x15ea94=_[_0xd437('0x3c')]({},_0x15ea94,_0x21a97b[_0xd437('0x40')]);return db['SquareDetailsReport'][_0xd437('0x48')](_0x15ea94)[_0xd437('0x26')](handleEntityNotFound(_0x3ec298,null))[_0xd437('0x26')](respondWithResult(_0x3ec298,null))[_0xd437('0x49')](handleError(_0x3ec298,null));};exports[_0xd437('0x4a')]=function(_0x1d35a6,_0x61f646){return db[_0xd437('0x41')][_0xd437('0x4a')](_0x1d35a6['body'],{})['then'](respondWithResult(_0x61f646,0xc9))[_0xd437('0x49')](handleError(_0x61f646,null));};exports[_0xd437('0x25')]=function(_0x4393dc,_0x3b7ebe){if(_0x4393dc['body']['id']){delete _0x4393dc['body']['id'];}return db['SquareDetailsReport'][_0xd437('0x48')]({'where':{'id':_0x4393dc['params']['id']}})[_0xd437('0x26')](handleEntityNotFound(_0x3b7ebe,null))[_0xd437('0x26')](saveUpdates(_0x4393dc[_0xd437('0x4b')],null))[_0xd437('0x26')](respondWithResult(_0x3b7ebe,null))[_0xd437('0x49')](handleError(_0x3b7ebe,null));};exports[_0xd437('0x4c')]=function(_0x56f8d1,_0x148d00){return db[_0xd437('0x41')][_0xd437('0x48')]({'where':{'id':_0x56f8d1[_0xd437('0x45')]['id']}})[_0xd437('0x26')](handleEntityNotFound(_0x148d00,null))[_0xd437('0x26')](removeEntity(_0x148d00,null))[_0xd437('0x49')](handleError(_0x148d00,null));};exports[_0xd437('0x4d')]=function(_0x5bba88,_0x4a97dd){return db['SquareDetailsReport']['describe']()['then'](respondWithResult(_0x4a97dd,null))[_0xd437('0x49')](handleError(_0x4a97dd,null));};
\ No newline at end of file
index eb90010..342ac55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7318=['../../config/environment','./squareReportDetail.attributes','report_square_details','lodash','util','moment','bluebird','path'];(function(_0x5a3ff3,_0x407c3f){var _0x141917=function(_0x2276e8){while(--_0x2276e8){_0x5a3ff3['push'](_0x5a3ff3['shift']());}};_0x141917(++_0x407c3f);}(_0x7318,0x14b));var _0x8731=function(_0x266511,_0x13b0f9){_0x266511=_0x266511-0x0;var _0x362438=_0x7318[_0x266511];return _0x362438;};'use strict';var _=require(_0x8731('0x0'));var util=require(_0x8731('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8731('0x2'));var BPromise=require(_0x8731('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8731('0x4'));var rimraf=require('rimraf');var config=require(_0x8731('0x5'));var attributes=require(_0x8731('0x6'));module['exports']=function(_0x456182,_0x57132f){return _0x456182['define']('SquareDetailsReport',attributes,{'tableName':_0x8731('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0db4=['api','moment','bluebird','request-promise','../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','util'];(function(_0x129968,_0x2111e1){var _0x41e22d=function(_0x579681){while(--_0x579681){_0x129968['push'](_0x129968['shift']());}};_0x41e22d(++_0x2111e1);}(_0x0db4,0x13f));var _0x40db=function(_0x313c96,_0x3cee6e){_0x313c96=_0x313c96-0x0;var _0x522f53=_0x0db4[_0x313c96];return _0x522f53;};'use strict';var _=require('lodash');var util=require(_0x40db('0x0'));var logger=require('../../config/logger')(_0x40db('0x1'));var moment=require(_0x40db('0x2'));var BPromise=require(_0x40db('0x3'));var rp=require(_0x40db('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x40db('0x5'));var attributes=require(_0x40db('0x6'));module[_0x40db('0x7')]=function(_0x502206,_0x547105){return _0x502206['define'](_0x40db('0x8'),attributes,{'tableName':_0x40db('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 45be74f..86a3e3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['message','info','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','SquareDetailsReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code'];(function(_0x9aaca8,_0x222c1a){var _0x1a77bd=function(_0x1b319a){while(--_0x1b319a){_0x9aaca8['push'](_0x9aaca8['shift']());}};_0x1a77bd(++_0x222c1a);}(_0x896e,0x1e9));var _0xe896=function(_0x1c93f7,_0x3e04af){_0x1c93f7=_0x1c93f7-0x0;var _0x2cfbf2=_0x896e[_0x1c93f7];return _0x2cfbf2;};'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')]('SquareDetailsReport,\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')]('SquareDetailsReport,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}exports[_0xe896('0x18')]=function(_0x32f86d){var _0x2d4cf0=this;return new Promise(function(_0x5dc89d,_0x782813){return db[_0xe896('0x19')][_0xe896('0x1a')](_0x32f86d[_0xe896('0x1b')],{'raw':_0x32f86d[_0xe896('0x1c')]?_0x32f86d[_0xe896('0x1c')][_0xe896('0x1d')]===undefined?!![]:![]:!![]})[_0xe896('0xe')](function(_0x49547b){logger[_0xe896('0x16')]('CreateSquareDetailsReport',_0x32f86d);logger['debug'](_0xe896('0x18'),_0x32f86d,JSON[_0xe896('0x12')](_0x49547b));_0x5dc89d(_0x49547b);})[_0xe896('0x17')](function(_0xeeec7c){logger['error'](_0xe896('0x18'),_0xeeec7c['message'],_0x32f86d);_0x782813(_0x2d4cf0['error'](0x1f4,_0xeeec7c[_0xe896('0x15')]));});});};
\ No newline at end of file
+var _0x7462=['request\x20sent','debug','stringify','error','code','message','catch','CreateSquareDetailsReport','create','options','raw','info','lodash','util','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','SquareDetailsReport,\x20%s,\x20%s'];(function(_0x2cc303,_0x2c4a2a){var _0x82a2ca=function(_0x3d9eae){while(--_0x3d9eae){_0x2cc303['push'](_0x2cc303['shift']());}};_0x82a2ca(++_0x2c4a2a);}(_0x7462,0x165));var _0x2746=function(_0x7feb90,_0x28e700){_0x7feb90=_0x7feb90-0x0;var _0x3c5b33=_0x7462[_0x7feb90];return _0x3c5b33;};'use strict';var _=require(_0x2746('0x0'));var util=require(_0x2746('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2746('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2746('0x3'));var logger=require(_0x2746('0x4'))('rpc');var config=require(_0x2746('0x5'));var jayson=require(_0x2746('0x6'));var client=jayson[_0x2746('0x7')][_0x2746('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a2f42,_0x2940d8,_0x1447bc){return new BPromise(function(_0x40ad2b,_0x283327){return client['request'](_0x2a2f42,_0x1447bc)[_0x2746('0x9')](function(_0x2e4713){logger['info'](_0x2746('0xa'),_0x2940d8,_0x2746('0xb'));logger[_0x2746('0xc')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x2940d8,_0x2746('0xb'),JSON[_0x2746('0xd')](_0x2e4713));if(_0x2e4713[_0x2746('0xe')]){if(_0x2e4713[_0x2746('0xe')][_0x2746('0xf')]===0x1f4){logger[_0x2746('0xe')](_0x2746('0xa'),_0x2940d8,_0x2e4713[_0x2746('0xe')][_0x2746('0x10')]);return _0x283327(_0x2e4713[_0x2746('0xe')][_0x2746('0x10')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x2940d8,_0x2e4713[_0x2746('0xe')][_0x2746('0x10')]);return _0x40ad2b(_0x2e4713[_0x2746('0xe')][_0x2746('0x10')]);}else{logger['info'](_0x2746('0xa'),_0x2940d8,_0x2746('0xb'));_0x40ad2b(_0x2e4713['result']['message']);}})[_0x2746('0x11')](function(_0x43f06c){logger[_0x2746('0xe')](_0x2746('0xa'),_0x2940d8,_0x43f06c);_0x283327(_0x43f06c);});});}exports[_0x2746('0x12')]=function(_0x232108){var _0x3556b5=this;return new Promise(function(_0x6102f3,_0x25c122){return db['SquareDetailsReport'][_0x2746('0x13')](_0x232108['body'],{'raw':_0x232108[_0x2746('0x14')]?_0x232108[_0x2746('0x14')][_0x2746('0x15')]===undefined?!![]:![]:!![]})[_0x2746('0x9')](function(_0xa64e76){logger[_0x2746('0x16')](_0x2746('0x12'),_0x232108);logger[_0x2746('0xc')](_0x2746('0x12'),_0x232108,JSON['stringify'](_0xa64e76));_0x6102f3(_0xa64e76);})['catch'](function(_0x7390b3){logger[_0x2746('0xe')](_0x2746('0x12'),_0x7390b3['message'],_0x232108);_0x25c122(_0x3556b5[_0x2746('0xe')](0x1f4,_0x7390b3[_0x2746('0x10')]));});});};
\ No newline at end of file
index 65427d4..3d3c3f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d7=['get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','../../components/auth/service','./system.controller'];(function(_0x48e1ec,_0x35f468){var _0x3b33eb=function(_0x507bf9){while(--_0x507bf9){_0x48e1ec['push'](_0x48e1ec['shift']());}};_0x3b33eb(++_0x35f468);}(_0x94d7,0x146));var _0x794d=function(_0x1c206c,_0x30bdcf){_0x1c206c=_0x1c206c-0x0;var _0x188aaa=_0x94d7[_0x1c206c];return _0x188aaa;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x794d('0x0'));var controller=require(_0x794d('0x1'));router[_0x794d('0x2')]('/',auth[_0x794d('0x3')](),controller[_0x794d('0x4')]);router['get'](_0x794d('0x5'),auth[_0x794d('0x3')](),controller[_0x794d('0x6')]);module[_0x794d('0x7')]=router;
\ No newline at end of file
+var _0x27d1=['./system.controller','get','isAuthenticated','index','/process/:pid/kill','express','Router','../../components/auth/service'];(function(_0x4bd2ba,_0x300226){var _0x32b6e2=function(_0x548de4){while(--_0x548de4){_0x4bd2ba['push'](_0x4bd2ba['shift']());}};_0x32b6e2(++_0x300226);}(_0x27d1,0x95));var _0x127d=function(_0xf59c76,_0x462dd5){_0xf59c76=_0xf59c76-0x0;var _0x263792=_0x27d1[_0xf59c76];return _0x263792;};'use strict';var express=require(_0x127d('0x0'));var router=express[_0x127d('0x1')]();var auth=require(_0x127d('0x2'));var controller=require(_0x127d('0x3'));router[_0x127d('0x4')]('/',auth[_0x127d('0x5')](),controller[_0x127d('0x6')]);router[_0x127d('0x4')](_0x127d('0x7'),auth[_0x127d('0x5')](),controller['killProcess']);module['exports']=router;
\ No newline at end of file
index e717411..5f9beed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e9=['name','index','getAllData','then','status','catch','json','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','bluebird','error','inspect'];(function(_0x416a38,_0x5004e0){var _0xec6c28=function(_0xf771cd){while(--_0xf771cd){_0x416a38['push'](_0x416a38['shift']());}};_0xec6c28(++_0x5004e0);}(_0x10e9,0x84));var _0x910e=function(_0x44f781,_0x1b984e){_0x44f781=_0x44f781-0x0;var _0x1b0b31=_0x10e9[_0x44f781];return _0x1b0b31;};'use strict';var info=require('systeminformation');var exec=require(_0x910e('0x0'))[_0x910e('0x1')];var logger=require(_0x910e('0x2'))('api');var util=require('util');var BPromise=require(_0x910e('0x3'));var _=require('lodash');function handleError(_0x312003,_0x4c8fd6,_0x549d5d){_0x4c8fd6=_0x4c8fd6||0x1f4;return function(_0x450e46){logger[_0x910e('0x4')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x549d5d,_0x4c8fd6,util[_0x910e('0x5')](_0x450e46,{'showHidden':![],'depth':null}));delete _0x450e46[_0x910e('0x6')];_0x312003['status'](_0x4c8fd6)['send'](_0x450e46);};}exports[_0x910e('0x7')]=function(_0x5503e6,_0x181d94){return info[_0x910e('0x8')]()[_0x910e('0x9')](function(_0x8425d0){return _0x181d94[_0x910e('0xa')](0xc8)['json'](_0x8425d0);})[_0x910e('0xb')](function(_0xc8af7a){return _0x181d94[_0x910e('0xa')](0x1f4)[_0x910e('0xc')](_0xc8af7a);});};exports['killProcess']=function(_0x5a3e45,_0x541846){var _0x5b33eb=[_0x910e('0xd')];return new BPromise(function(_0x1cb18b,_0x1cce44){return exec(util[_0x910e('0xe')](_0x910e('0xf'),_0x5a3e45[_0x910e('0x10')][_0x910e('0x11')]),function(_0x407526,_0x302a59,_0x18c6b7){if(_0x407526){return _0x1cce44(_0x407526);}return _0x1cb18b(_0x302a59);});})['then'](function(_0x25500f){var _0x1e0de4=![];var _0x19a80f=_0x25500f[_0x910e('0x12')](/\n/);for(var _0x1b944f=0x0,_0x2f85d3=_0x5b33eb['length'];_0x1b944f<_0x2f85d3,_0x1e0de4===![];_0x1b944f+=0x1){if(_0x25500f[_0x910e('0x13')](_0x5b33eb[_0x1b944f])>=0x0){_0x1e0de4=!![];}}if(!_0x1e0de4){throw new Error(util['format'](_0x910e('0x14'),_0x5a3e45[_0x910e('0x10')]['pid']));}process[_0x910e('0x15')](_0x5a3e45[_0x910e('0x10')][_0x910e('0x11')],'SIGINT');return _0x541846[_0x910e('0xa')](0xc8)[_0x910e('0xc')]({'message':util['format'](_0x910e('0x16'),_0x5a3e45['params'][_0x910e('0x11')])});})[_0x910e('0xb')](handleError(_0x541846,null,'killProcess'));};
\ No newline at end of file
+var _0xa958=['lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','index','getAllData','then','status','catch','killProcess','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','format','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','json','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','../../config/logger','api','util','bluebird'];(function(_0x34d900,_0x48b934){var _0xd2a284=function(_0x9a9ca){while(--_0x9a9ca){_0x34d900['push'](_0x34d900['shift']());}};_0xd2a284(++_0x48b934);}(_0xa958,0xbd));var _0x8a95=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xa958[_0x334841];return _0x5beb4b;};'use strict';var info=require(_0x8a95('0x0'));var exec=require(_0x8a95('0x1'))[_0x8a95('0x2')];var logger=require(_0x8a95('0x3'))(_0x8a95('0x4'));var util=require(_0x8a95('0x5'));var BPromise=require(_0x8a95('0x6'));var _=require(_0x8a95('0x7'));function handleError(_0x3f14ad,_0x482faf,_0x4bc0e2){_0x482faf=_0x482faf||0x1f4;return function(_0x568737){logger[_0x8a95('0x8')](_0x8a95('0x9'),_0x4bc0e2,_0x482faf,util[_0x8a95('0xa')](_0x568737,{'showHidden':![],'depth':null}));delete _0x568737['name'];_0x3f14ad['status'](_0x482faf)['send'](_0x568737);};}exports[_0x8a95('0xb')]=function(_0x59b348,_0x1c6b47){return info[_0x8a95('0xc')]()[_0x8a95('0xd')](function(_0x226381){return _0x1c6b47[_0x8a95('0xe')](0xc8)['json'](_0x226381);})[_0x8a95('0xf')](function(_0x358f1f){return _0x1c6b47[_0x8a95('0xe')](0x1f4)['json'](_0x358f1f);});};exports[_0x8a95('0x10')]=function(_0x3cfcab,_0x3678ef){var _0x265ca1=['components/import/cm'];return new BPromise(function(_0xecedd4,_0x1f83d1){return exec(util['format'](_0x8a95('0x11'),_0x3cfcab[_0x8a95('0x12')][_0x8a95('0x13')]),function(_0x1b1745,_0x132af1,_0x2b13b8){if(_0x1b1745){return _0x1f83d1(_0x1b1745);}return _0xecedd4(_0x132af1);});})[_0x8a95('0xd')](function(_0x3bcce4){var _0x141eb0=![];var _0xc7a908=_0x3bcce4[_0x8a95('0x14')](/\n/);for(var _0x2142b7=0x0,_0x1cd527=_0x265ca1[_0x8a95('0x15')];_0x2142b7<_0x1cd527,_0x141eb0===![];_0x2142b7+=0x1){if(_0x3bcce4['indexOf'](_0x265ca1[_0x2142b7])>=0x0){_0x141eb0=!![];}}if(!_0x141eb0){throw new Error(util[_0x8a95('0x16')](_0x8a95('0x17'),_0x3cfcab[_0x8a95('0x12')][_0x8a95('0x13')]));}process[_0x8a95('0x18')](_0x3cfcab['params'][_0x8a95('0x13')],_0x8a95('0x19'));return _0x3678ef[_0x8a95('0xe')](0xc8)[_0x8a95('0x1a')]({'message':util[_0x8a95('0x16')](_0x8a95('0x1b'),_0x3cfcab[_0x8a95('0x12')][_0x8a95('0x13')])});})[_0x8a95('0xf')](handleError(_0x3678ef,null,_0x8a95('0x10')));};
\ No newline at end of file
index 897605d..a8f7633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2593=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router'];(function(_0x430469,_0x20e783){var _0x1ca55e=function(_0x42e6e6){while(--_0x42e6e6){_0x430469['push'](_0x430469['shift']());}};_0x1ca55e(++_0x20e783);}(_0x2593,0x1e1));var _0x3259=function(_0x3cec8c,_0x3f6c1d){_0x3cec8c=_0x3cec8c-0x0;var _0x38032e=_0x2593[_0x3cec8c];return _0x38032e;};'use strict';var multer=require(_0x3259('0x0'));var util=require(_0x3259('0x1'));var path=require(_0x3259('0x2'));var timeout=require(_0x3259('0x3'));var express=require('express');var router=express[_0x3259('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3259('0x5'));var interaction=require(_0x3259('0x6'));var config=require(_0x3259('0x7'));var controller=require('./tag.controller');router[_0x3259('0x8')]('/',auth[_0x3259('0x9')](),controller['index']);router['get'](_0x3259('0xa'),auth[_0x3259('0x9')](),controller[_0x3259('0xb')]);router[_0x3259('0xc')]('/',auth['isAuthenticated'](),controller[_0x3259('0xd')]);router[_0x3259('0xe')](_0x3259('0xa'),auth[_0x3259('0x9')](),controller[_0x3259('0xf')]);router[_0x3259('0x10')](_0x3259('0xa'),auth[_0x3259('0x9')](),controller[_0x3259('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x80e6=['./tag.controller','get','isAuthenticated','index','/:id','show','post','create','put','destroy','exports','util','path','express','Router','../../components/auth/service','../../config/environment'];(function(_0x1efec1,_0x3e9c92){var _0x2547bf=function(_0x3b0644){while(--_0x3b0644){_0x1efec1['push'](_0x1efec1['shift']());}};_0x2547bf(++_0x3e9c92);}(_0x80e6,0x1e7));var _0x680e=function(_0x37abbe,_0x22b8c3){_0x37abbe=_0x37abbe-0x0;var _0x405344=_0x80e6[_0x37abbe];return _0x405344;};'use strict';var multer=require('multer');var util=require(_0x680e('0x0'));var path=require(_0x680e('0x1'));var timeout=require('connect-timeout');var express=require(_0x680e('0x2'));var router=express[_0x680e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x680e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x680e('0x5'));var controller=require(_0x680e('0x6'));router[_0x680e('0x7')]('/',auth[_0x680e('0x8')](),controller[_0x680e('0x9')]);router[_0x680e('0x7')](_0x680e('0xa'),auth[_0x680e('0x8')](),controller[_0x680e('0xb')]);router[_0x680e('0xc')]('/',auth[_0x680e('0x8')](),controller[_0x680e('0xd')]);router[_0x680e('0xe')](_0x680e('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x680e('0xa'),auth[_0x680e('0x8')](),controller[_0x680e('0xf')]);module[_0x680e('0x10')]=router;
\ No newline at end of file
index 38aa3f0..2ca29f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3e2=['sequelize','exports','STRING','name','#0091EA'];(function(_0x4e6dbc,_0x4d961a){var _0x54bfc2=function(_0x27ec5b){while(--_0x27ec5b){_0x4e6dbc['push'](_0x4e6dbc['shift']());}};_0x54bfc2(++_0x4d961a);}(_0xf3e2,0x168));var _0x2f3e=function(_0x59eefb,_0x2151ce){_0x59eefb=_0x59eefb-0x0;var _0x1a49e8=_0xf3e2[_0x59eefb];return _0x1a49e8;};'use strict';var Sequelize=require(_0x2f3e('0x0'));module[_0x2f3e('0x1')]={'name':{'type':Sequelize[_0x2f3e('0x2')],'unique':_0x2f3e('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x2f3e('0x2')],'defaultValue':_0x2f3e('0x4')},'description':{'type':Sequelize[_0x2f3e('0x2')]}};
\ No newline at end of file
+var _0xf53d=['exports','name','STRING','#0091EA','sequelize'];(function(_0x368a2b,_0x18cc3b){var _0x2e3a86=function(_0x3050e0){while(--_0x3050e0){_0x368a2b['push'](_0x368a2b['shift']());}};_0x2e3a86(++_0x18cc3b);}(_0xf53d,0x199));var _0xdf53=function(_0x53384e,_0x596d43){_0x53384e=_0x53384e-0x0;var _0x1456de=_0xf53d[_0x53384e];return _0x1456de;};'use strict';var Sequelize=require(_0xdf53('0x0'));module[_0xdf53('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xdf53('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xdf53('0x3')],'defaultValue':_0xdf53('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1cd96e4..adfa9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe812=['userProfileId','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','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','status','json','offset','limit','count','set','Content-Range','apply','reject','save','then','get','Tags','UserProfileResource','destroy','name','send','index','Tag','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xe812,0x1f2));var _0x2e81=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe812[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2e81('0x0'));var zipdir=require(_0x2e81('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2e81('0x2'));var BPromise=require(_0x2e81('0x3'));var Mustache=require('mustache');var util=require(_0x2e81('0x4'));var path=require(_0x2e81('0x5'));var sox=require('sox');var csv=require(_0x2e81('0x6'));var ejs=require(_0x2e81('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2e81('0x8'));var squel=require(_0x2e81('0x9'));var crypto=require(_0x2e81('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x2e81('0xb'));var toCsv=require(_0x2e81('0x6'));var querystring=require(_0x2e81('0xc'));var Papa=require(_0x2e81('0xd'));var Redis=require('ioredis');var authService=require(_0x2e81('0xe'));var qs=require(_0x2e81('0xf'));var as=require(_0x2e81('0x10'));var hardwareService=require(_0x2e81('0x11'));var logger=require(_0x2e81('0x12'))(_0x2e81('0x13'));var utils=require(_0x2e81('0x14'));var config=require(_0x2e81('0x15'));var licenseUtil=require(_0x2e81('0x16'));var db=require(_0x2e81('0x17'))['db'];function respondWithStatusCode(_0x4284f3,_0x5c58a2){_0x5c58a2=_0x5c58a2||0xcc;return function(_0x30a730){if(_0x30a730){return _0x4284f3[_0x2e81('0x18')](_0x5c58a2);}return _0x4284f3['status'](_0x5c58a2)[_0x2e81('0x19')]();};}function respondWithResult(_0x5598a9,_0x2a4411){_0x2a4411=_0x2a4411||0xc8;return function(_0x2b24f0){if(_0x2b24f0){return _0x5598a9[_0x2e81('0x1a')](_0x2a4411)[_0x2e81('0x1b')](_0x2b24f0);}};}function respondWithFilteredResult(_0x1bb937,_0x3a8c05){return function(_0x53da62){if(_0x53da62){var _0xc4d315=typeof _0x3a8c05[_0x2e81('0x1c')]==='undefined'&&typeof _0x3a8c05[_0x2e81('0x1d')]==='undefined';var _0x2cc0c6=_0x53da62[_0x2e81('0x1e')];var _0x4c1b11=_0xc4d315?0x0:_0x3a8c05[_0x2e81('0x1c')];var _0x2bb9b6=_0xc4d315?_0x53da62[_0x2e81('0x1e')]:_0x3a8c05[_0x2e81('0x1c')]+_0x3a8c05[_0x2e81('0x1d')];var _0x1f20bf;if(_0x2bb9b6>=_0x2cc0c6){_0x2bb9b6=_0x2cc0c6;_0x1f20bf=0xc8;}else{_0x1f20bf=0xce;}_0x1bb937[_0x2e81('0x1a')](_0x1f20bf);return _0x1bb937[_0x2e81('0x1f')](_0x2e81('0x20'),_0x4c1b11+'-'+_0x2bb9b6+'/'+_0x2cc0c6)[_0x2e81('0x1b')](_0x53da62);}return null;};}function patchUpdates(_0x524694){return function(_0x10b77e){try{jsonpatch[_0x2e81('0x21')](_0x10b77e,_0x524694,!![]);}catch(_0x9ddf6b){return BPromise[_0x2e81('0x22')](_0x9ddf6b);}return _0x10b77e[_0x2e81('0x23')]();};}function saveUpdates(_0x386721,_0x18b9be){return function(_0x39ffa8){if(_0x39ffa8){return _0x39ffa8['update'](_0x386721)[_0x2e81('0x24')](function(_0x49e9f1){return _0x49e9f1;});}return null;};}function removeEntity(_0x2d50af,_0x4fe130){return function(_0x1d09cb){if(_0x1d09cb){return _0x1d09cb['destroy']()['then'](function(){var _0x123d3d=_0x1d09cb[_0x2e81('0x25')]({'plain':!![]});var _0x4a75ff=_0x2e81('0x26');return db[_0x2e81('0x27')][_0x2e81('0x28')]({'where':{'type':_0x4a75ff,'resourceId':_0x123d3d['id']}})[_0x2e81('0x24')](function(){return _0x1d09cb;});})[_0x2e81('0x24')](function(){_0x2d50af[_0x2e81('0x1a')](0xcc)[_0x2e81('0x19')]();});}};}function handleEntityNotFound(_0x4669aa,_0x1b34db){return function(_0x1bf5a6){if(!_0x1bf5a6){_0x4669aa[_0x2e81('0x18')](0x194);}return _0x1bf5a6;};}function handleError(_0xc0720f,_0x8edf9c){_0x8edf9c=_0x8edf9c||0x1f4;return function(_0x3ec91d){logger['error'](_0x3ec91d['stack']);if(_0x3ec91d[_0x2e81('0x29')]){delete _0x3ec91d[_0x2e81('0x29')];}_0xc0720f[_0x2e81('0x1a')](_0x8edf9c)[_0x2e81('0x2a')](_0x3ec91d);};}exports[_0x2e81('0x2b')]=function(_0x2a78bb,_0x243b20){var _0x13612b={},_0x26ec2a={},_0x1c37d1={'count':0x0,'rows':[]};var _0x392c5b=_['map'](db[_0x2e81('0x2c')][_0x2e81('0x2d')],function(_0x1d0437){return{'name':_0x1d0437[_0x2e81('0x2e')],'type':_0x1d0437[_0x2e81('0x2f')][_0x2e81('0x30')]};});_0x26ec2a[_0x2e81('0x31')]=_[_0x2e81('0x32')](_0x392c5b,_0x2e81('0x29'));_0x26ec2a[_0x2e81('0x33')]=_[_0x2e81('0x34')](_0x2a78bb[_0x2e81('0x33')]);_0x26ec2a[_0x2e81('0x35')]=_[_0x2e81('0x36')](_0x26ec2a[_0x2e81('0x31')],_0x26ec2a[_0x2e81('0x33')]);_0x13612b[_0x2e81('0x37')]=_['intersection'](_0x26ec2a[_0x2e81('0x31')],qs[_0x2e81('0x38')](_0x2a78bb['query'][_0x2e81('0x38')]));_0x13612b[_0x2e81('0x37')]=_0x13612b['attributes'][_0x2e81('0x39')]?_0x13612b[_0x2e81('0x37')]:_0x26ec2a[_0x2e81('0x31')];if(!_0x2a78bb['query'][_0x2e81('0x3a')](_0x2e81('0x3b'))){_0x13612b[_0x2e81('0x1d')]=qs[_0x2e81('0x1d')](_0x2a78bb[_0x2e81('0x33')]['limit']);_0x13612b['offset']=qs['offset'](_0x2a78bb['query'][_0x2e81('0x1c')]);}_0x13612b['order']=qs['sort'](_0x2a78bb[_0x2e81('0x33')][_0x2e81('0x3c')]);_0x13612b[_0x2e81('0x3d')]=qs['filters'](_[_0x2e81('0x3e')](_0x2a78bb[_0x2e81('0x33')],_0x26ec2a[_0x2e81('0x35')]),_0x392c5b);if(_0x2a78bb[_0x2e81('0x33')][_0x2e81('0x3f')]){_0x13612b['where']=_['merge'](_0x13612b[_0x2e81('0x3d')],{'$or':_[_0x2e81('0x32')](_0x392c5b,function(_0x35d1c0){if(_0x35d1c0['type']!==_0x2e81('0x40')){var _0x44d10c={};_0x44d10c[_0x35d1c0[_0x2e81('0x29')]]={'$like':'%'+_0x2a78bb['query'][_0x2e81('0x3f')]+'%'};return _0x44d10c;}})});}_0x13612b=_[_0x2e81('0x41')]({},_0x13612b,_0x2a78bb[_0x2e81('0x42')]);var _0x10e240={'where':_0x13612b[_0x2e81('0x3d')]};return db[_0x2e81('0x2c')][_0x2e81('0x1e')](_0x10e240)[_0x2e81('0x24')](function(_0x5508f0){_0x1c37d1['count']=_0x5508f0;if(_0x2a78bb[_0x2e81('0x33')]['includeAll']){_0x13612b[_0x2e81('0x43')]=[{'all':!![]}];}return db[_0x2e81('0x2c')][_0x2e81('0x44')](_0x13612b);})[_0x2e81('0x24')](function(_0x3c5fbb){_0x1c37d1[_0x2e81('0x45')]=_0x3c5fbb;return _0x1c37d1;})['then'](respondWithFilteredResult(_0x243b20,_0x13612b))['catch'](handleError(_0x243b20,null));};exports[_0x2e81('0x46')]=function(_0x2bc2a7,_0x1a8233){var _0x53bb7c={'raw':!![],'where':{'id':_0x2bc2a7[_0x2e81('0x47')]['id']}},_0x4499b7={};_0x4499b7['model']=_[_0x2e81('0x34')](db['Tag'][_0x2e81('0x2d')]);_0x4499b7[_0x2e81('0x33')]=_[_0x2e81('0x34')](_0x2bc2a7[_0x2e81('0x33')]);_0x4499b7['filters']=_[_0x2e81('0x36')](_0x4499b7['model'],_0x4499b7[_0x2e81('0x33')]);_0x53bb7c[_0x2e81('0x37')]=_['intersection'](_0x4499b7[_0x2e81('0x31')],qs[_0x2e81('0x38')](_0x2bc2a7[_0x2e81('0x33')][_0x2e81('0x38')]));_0x53bb7c[_0x2e81('0x37')]=_0x53bb7c[_0x2e81('0x37')][_0x2e81('0x39')]?_0x53bb7c['attributes']:_0x4499b7[_0x2e81('0x31')];if(_0x2bc2a7['query']['includeAll']){_0x53bb7c[_0x2e81('0x43')]=[{'all':!![]}];}_0x53bb7c=_['merge']({},_0x53bb7c,_0x2bc2a7['options']);return db[_0x2e81('0x2c')][_0x2e81('0x48')](_0x53bb7c)[_0x2e81('0x24')](handleEntityNotFound(_0x1a8233,null))['then'](respondWithResult(_0x1a8233,null))['catch'](handleError(_0x1a8233,null));};exports[_0x2e81('0x49')]=function(_0x1dd4d7,_0x16ed11){return db[_0x2e81('0x2c')]['create'](_0x1dd4d7['body'],{})[_0x2e81('0x24')](function(_0x4056e8){var _0x5631b6=_0x1dd4d7['user'][_0x2e81('0x25')]({'plain':!![]});if(!_0x5631b6)throw new Error(_0x2e81('0x4a'));if(_0x5631b6['role']===_0x2e81('0x4b')){var _0x33a4d7=_0x4056e8[_0x2e81('0x25')]({'plain':!![]});var _0x3402b3=_0x2e81('0x26');return db['UserProfileSection'][_0x2e81('0x48')]({'where':{'name':_0x3402b3,'userProfileId':_0x5631b6[_0x2e81('0x4c')]},'raw':!![]})[_0x2e81('0x24')](function(_0xb4decd){if(_0xb4decd&&_0xb4decd['autoAssociation']===0x0){return db['UserProfileResource'][_0x2e81('0x49')]({'name':_0x33a4d7[_0x2e81('0x29')],'resourceId':_0x33a4d7['id'],'type':_0xb4decd[_0x2e81('0x29')],'sectionId':_0xb4decd['id']},{})[_0x2e81('0x24')](function(){return _0x4056e8;});}else{return _0x4056e8;}})[_0x2e81('0x4d')](function(_0x482888){logger[_0x2e81('0x4e')](_0x2e81('0x4f'),_0x482888);throw _0x482888;});}return _0x4056e8;})[_0x2e81('0x24')](respondWithResult(_0x16ed11,0xc9))[_0x2e81('0x4d')](handleError(_0x16ed11,null));};exports[_0x2e81('0x50')]=function(_0x4aa5e5,_0x44db7f){if(_0x4aa5e5[_0x2e81('0x51')]['id']){delete _0x4aa5e5['body']['id'];}return db['Tag'][_0x2e81('0x48')]({'where':{'id':_0x4aa5e5['params']['id']}})[_0x2e81('0x24')](handleEntityNotFound(_0x44db7f,null))[_0x2e81('0x24')](saveUpdates(_0x4aa5e5[_0x2e81('0x51')],null))[_0x2e81('0x24')](respondWithResult(_0x44db7f,null))[_0x2e81('0x4d')](handleError(_0x44db7f,null));};exports[_0x2e81('0x28')]=function(_0x18beeb,_0x1570c1){return db['Tag'][_0x2e81('0x48')]({'where':{'id':_0x18beeb['params']['id']}})[_0x2e81('0x24')](handleEntityNotFound(_0x1570c1,null))[_0x2e81('0x24')](removeEntity(_0x1570c1,null))['catch'](handleError(_0x1570c1,null));};
\ No newline at end of file
+var _0xda55=['filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','role','user','Tags','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','then','get','error','stack','name','send','index','map','Tag','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x23c1db,_0x3d5f68){var _0x3c4686=function(_0x3fedc9){while(--_0x3fedc9){_0x23c1db['push'](_0x23c1db['shift']());}};_0x3c4686(++_0x3d5f68);}(_0xda55,0x6d));var _0x5da5=function(_0x184b1d,_0x1dea81){_0x184b1d=_0x184b1d-0x0;var _0x36ae4e=_0xda55[_0x184b1d];return _0x36ae4e;};'use strict';var emlformat=require(_0x5da5('0x0'));var rimraf=require(_0x5da5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5da5('0x2'));var moment=require(_0x5da5('0x3'));var BPromise=require(_0x5da5('0x4'));var Mustache=require(_0x5da5('0x5'));var util=require(_0x5da5('0x6'));var path=require('path');var sox=require(_0x5da5('0x7'));var csv=require('to-csv');var ejs=require(_0x5da5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5da5('0x9'));var squel=require(_0x5da5('0xa'));var crypto=require(_0x5da5('0xb'));var jsforce=require(_0x5da5('0xc'));var deskjs=require(_0x5da5('0xd'));var toCsv=require(_0x5da5('0xe'));var querystring=require(_0x5da5('0xf'));var Papa=require(_0x5da5('0x10'));var Redis=require('ioredis');var authService=require(_0x5da5('0x11'));var qs=require(_0x5da5('0x12'));var as=require(_0x5da5('0x13'));var hardwareService=require(_0x5da5('0x14'));var logger=require(_0x5da5('0x15'))(_0x5da5('0x16'));var utils=require(_0x5da5('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5da5('0x18'));var db=require(_0x5da5('0x19'))['db'];function respondWithStatusCode(_0x4f813b,_0x37aeb0){_0x37aeb0=_0x37aeb0||0xcc;return function(_0x31366e){if(_0x31366e){return _0x4f813b[_0x5da5('0x1a')](_0x37aeb0);}return _0x4f813b[_0x5da5('0x1b')](_0x37aeb0)[_0x5da5('0x1c')]();};}function respondWithResult(_0x440b8f,_0x481562){_0x481562=_0x481562||0xc8;return function(_0x489b60){if(_0x489b60){return _0x440b8f['status'](_0x481562)[_0x5da5('0x1d')](_0x489b60);}};}function respondWithFilteredResult(_0x126fc8,_0x13c701){return function(_0x665ce8){if(_0x665ce8){var _0x11bd3=typeof _0x13c701[_0x5da5('0x1e')]===_0x5da5('0x1f')&&typeof _0x13c701['limit']===_0x5da5('0x1f');var _0x290136=_0x665ce8[_0x5da5('0x20')];var _0x16b11f=_0x11bd3?0x0:_0x13c701[_0x5da5('0x1e')];var _0x428b07=_0x11bd3?_0x665ce8['count']:_0x13c701[_0x5da5('0x1e')]+_0x13c701[_0x5da5('0x21')];var _0x3d3d26;if(_0x428b07>=_0x290136){_0x428b07=_0x290136;_0x3d3d26=0xc8;}else{_0x3d3d26=0xce;}_0x126fc8[_0x5da5('0x1b')](_0x3d3d26);return _0x126fc8[_0x5da5('0x22')]('Content-Range',_0x16b11f+'-'+_0x428b07+'/'+_0x290136)[_0x5da5('0x1d')](_0x665ce8);}return null;};}function patchUpdates(_0x3372fc){return function(_0x42a3cb){try{jsonpatch['apply'](_0x42a3cb,_0x3372fc,!![]);}catch(_0x3e0b28){return BPromise[_0x5da5('0x23')](_0x3e0b28);}return _0x42a3cb[_0x5da5('0x24')]();};}function saveUpdates(_0x2e68d5,_0xec69f2){return function(_0x436960){if(_0x436960){return _0x436960['update'](_0x2e68d5)[_0x5da5('0x25')](function(_0x568ddf){return _0x568ddf;});}return null;};}function removeEntity(_0x1b67c4,_0x716ab7){return function(_0x2dd138){if(_0x2dd138){return _0x2dd138['destroy']()[_0x5da5('0x25')](function(){var _0x236bf3=_0x2dd138[_0x5da5('0x26')]({'plain':!![]});var _0x21e795='Tags';return db['UserProfileResource']['destroy']({'where':{'type':_0x21e795,'resourceId':_0x236bf3['id']}})[_0x5da5('0x25')](function(){return _0x2dd138;});})['then'](function(){_0x1b67c4['status'](0xcc)[_0x5da5('0x1c')]();});}};}function handleEntityNotFound(_0x3974d8,_0x5740a7){return function(_0x1798ae){if(!_0x1798ae){_0x3974d8[_0x5da5('0x1a')](0x194);}return _0x1798ae;};}function handleError(_0x558b12,_0x3b815e){_0x3b815e=_0x3b815e||0x1f4;return function(_0x27de55){logger[_0x5da5('0x27')](_0x27de55[_0x5da5('0x28')]);if(_0x27de55[_0x5da5('0x29')]){delete _0x27de55['name'];}_0x558b12[_0x5da5('0x1b')](_0x3b815e)[_0x5da5('0x2a')](_0x27de55);};}exports[_0x5da5('0x2b')]=function(_0x15a0c0,_0x55e2bf){var _0x5ee7f2={},_0x4cb022={},_0x245273={'count':0x0,'rows':[]};var _0x27ed41=_[_0x5da5('0x2c')](db[_0x5da5('0x2d')]['rawAttributes'],function(_0x585298){return{'name':_0x585298[_0x5da5('0x2e')],'type':_0x585298['type']['key']};});_0x4cb022[_0x5da5('0x2f')]=_['map'](_0x27ed41,_0x5da5('0x29'));_0x4cb022[_0x5da5('0x30')]=_[_0x5da5('0x31')](_0x15a0c0[_0x5da5('0x30')]);_0x4cb022[_0x5da5('0x32')]=_[_0x5da5('0x33')](_0x4cb022[_0x5da5('0x2f')],_0x4cb022[_0x5da5('0x30')]);_0x5ee7f2['attributes']=_[_0x5da5('0x33')](_0x4cb022['model'],qs[_0x5da5('0x34')](_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x34')]));_0x5ee7f2[_0x5da5('0x35')]=_0x5ee7f2[_0x5da5('0x35')][_0x5da5('0x36')]?_0x5ee7f2[_0x5da5('0x35')]:_0x4cb022[_0x5da5('0x2f')];if(!_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x37')](_0x5da5('0x38'))){_0x5ee7f2[_0x5da5('0x21')]=qs[_0x5da5('0x21')](_0x15a0c0['query'][_0x5da5('0x21')]);_0x5ee7f2['offset']=qs[_0x5da5('0x1e')](_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x1e')]);}_0x5ee7f2[_0x5da5('0x39')]=qs['sort'](_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x3a')]);_0x5ee7f2[_0x5da5('0x3b')]=qs['filters'](_[_0x5da5('0x3c')](_0x15a0c0[_0x5da5('0x30')],_0x4cb022['filters']),_0x27ed41);if(_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x3d')]){_0x5ee7f2[_0x5da5('0x3b')]=_[_0x5da5('0x3e')](_0x5ee7f2[_0x5da5('0x3b')],{'$or':_[_0x5da5('0x2c')](_0x27ed41,function(_0x52a902){if(_0x52a902[_0x5da5('0x3f')]!==_0x5da5('0x40')){var _0x14c3f5={};_0x14c3f5[_0x52a902[_0x5da5('0x29')]]={'$like':'%'+_0x15a0c0[_0x5da5('0x30')]['filter']+'%'};return _0x14c3f5;}})});}_0x5ee7f2=_[_0x5da5('0x3e')]({},_0x5ee7f2,_0x15a0c0[_0x5da5('0x41')]);var _0x5a189e={'where':_0x5ee7f2[_0x5da5('0x3b')]};return db['Tag']['count'](_0x5a189e)[_0x5da5('0x25')](function(_0x21c579){_0x245273[_0x5da5('0x20')]=_0x21c579;if(_0x15a0c0[_0x5da5('0x30')][_0x5da5('0x42')]){_0x5ee7f2[_0x5da5('0x43')]=[{'all':!![]}];}return db[_0x5da5('0x2d')][_0x5da5('0x44')](_0x5ee7f2);})[_0x5da5('0x25')](function(_0x2a2814){_0x245273[_0x5da5('0x45')]=_0x2a2814;return _0x245273;})[_0x5da5('0x25')](respondWithFilteredResult(_0x55e2bf,_0x5ee7f2))[_0x5da5('0x46')](handleError(_0x55e2bf,null));};exports[_0x5da5('0x47')]=function(_0x284d40,_0x30be40){var _0x1fc965={'raw':!![],'where':{'id':_0x284d40[_0x5da5('0x48')]['id']}},_0x4464a7={};_0x4464a7[_0x5da5('0x2f')]=_['keys'](db['Tag'][_0x5da5('0x49')]);_0x4464a7[_0x5da5('0x30')]=_['keys'](_0x284d40[_0x5da5('0x30')]);_0x4464a7[_0x5da5('0x32')]=_[_0x5da5('0x33')](_0x4464a7[_0x5da5('0x2f')],_0x4464a7[_0x5da5('0x30')]);_0x1fc965[_0x5da5('0x35')]=_[_0x5da5('0x33')](_0x4464a7[_0x5da5('0x2f')],qs[_0x5da5('0x34')](_0x284d40[_0x5da5('0x30')]['fields']));_0x1fc965[_0x5da5('0x35')]=_0x1fc965['attributes']['length']?_0x1fc965[_0x5da5('0x35')]:_0x4464a7[_0x5da5('0x2f')];if(_0x284d40[_0x5da5('0x30')][_0x5da5('0x42')]){_0x1fc965[_0x5da5('0x43')]=[{'all':!![]}];}_0x1fc965=_[_0x5da5('0x3e')]({},_0x1fc965,_0x284d40['options']);return db[_0x5da5('0x2d')]['find'](_0x1fc965)['then'](handleEntityNotFound(_0x30be40,null))[_0x5da5('0x25')](respondWithResult(_0x30be40,null))[_0x5da5('0x46')](handleError(_0x30be40,null));};exports['create']=function(_0x419d74,_0x322b08){return db[_0x5da5('0x2d')][_0x5da5('0x4a')](_0x419d74[_0x5da5('0x4b')],{})['then'](function(_0x225792){var _0x5277bc=_0x419d74['user'][_0x5da5('0x26')]({'plain':!![]});if(!_0x5277bc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5277bc[_0x5da5('0x4c')]===_0x5da5('0x4d')){var _0x17581a=_0x225792[_0x5da5('0x26')]({'plain':!![]});var _0x2cc43f=_0x5da5('0x4e');return db['UserProfileSection']['find']({'where':{'name':_0x2cc43f,'userProfileId':_0x5277bc[_0x5da5('0x4f')]},'raw':!![]})[_0x5da5('0x25')](function(_0x520830){if(_0x520830&&_0x520830['autoAssociation']===0x0){return db[_0x5da5('0x50')]['create']({'name':_0x17581a[_0x5da5('0x29')],'resourceId':_0x17581a['id'],'type':_0x520830['name'],'sectionId':_0x520830['id']},{})['then'](function(){return _0x225792;});}else{return _0x225792;}})[_0x5da5('0x46')](function(_0x323655){logger[_0x5da5('0x27')](_0x5da5('0x51'),_0x323655);throw _0x323655;});}return _0x225792;})['then'](respondWithResult(_0x322b08,0xc9))[_0x5da5('0x46')](handleError(_0x322b08,null));};exports[_0x5da5('0x52')]=function(_0xa1d591,_0x56523b){if(_0xa1d591[_0x5da5('0x4b')]['id']){delete _0xa1d591[_0x5da5('0x4b')]['id'];}return db[_0x5da5('0x2d')][_0x5da5('0x53')]({'where':{'id':_0xa1d591[_0x5da5('0x48')]['id']}})[_0x5da5('0x25')](handleEntityNotFound(_0x56523b,null))[_0x5da5('0x25')](saveUpdates(_0xa1d591[_0x5da5('0x4b')],null))[_0x5da5('0x25')](respondWithResult(_0x56523b,null))[_0x5da5('0x46')](handleError(_0x56523b,null));};exports[_0x5da5('0x54')]=function(_0x283ba5,_0x211b80){return db[_0x5da5('0x2d')][_0x5da5('0x53')]({'where':{'id':_0x283ba5[_0x5da5('0x48')]['id']}})[_0x5da5('0x25')](handleEntityNotFound(_0x211b80,null))[_0x5da5('0x25')](removeEntity(_0x211b80,null))[_0x5da5('0x46')](handleError(_0x211b80,null));};
\ No newline at end of file
index 4544ee0..40b7ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb331=['bluebird','path','rimraf','./tag.attributes','define','Tag','tools_tags','lodash','util','../../config/logger','api','moment'];(function(_0x4d0662,_0x145963){var _0x6eea6d=function(_0x2def06){while(--_0x2def06){_0x4d0662['push'](_0x4d0662['shift']());}};_0x6eea6d(++_0x145963);}(_0xb331,0x1cf));var _0x1b33=function(_0x3ee08c,_0x361ebb){_0x3ee08c=_0x3ee08c-0x0;var _0x2c9d83=_0xb331[_0x3ee08c];return _0x2c9d83;};'use strict';var _=require(_0x1b33('0x0'));var util=require(_0x1b33('0x1'));var logger=require(_0x1b33('0x2'))(_0x1b33('0x3'));var moment=require(_0x1b33('0x4'));var BPromise=require(_0x1b33('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1b33('0x6'));var rimraf=require(_0x1b33('0x7'));var config=require('../../config/environment');var attributes=require(_0x1b33('0x8'));module['exports']=function(_0x107242,_0x1460d0){return _0x107242[_0x1b33('0x9')](_0x1b33('0xa'),attributes,{'tableName':_0x1b33('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xca3e=['request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag','lodash','api','moment','bluebird'];(function(_0x511b76,_0x4727fa){var _0x5424ff=function(_0x24b7c0){while(--_0x24b7c0){_0x511b76['push'](_0x511b76['shift']());}};_0x5424ff(++_0x4727fa);}(_0xca3e,0x1c4));var _0xeca3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xca3e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xeca3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeca3('0x1'));var moment=require(_0xeca3('0x2'));var BPromise=require(_0xeca3('0x3'));var rp=require(_0xeca3('0x4'));var fs=require('fs');var path=require(_0xeca3('0x5'));var rimraf=require(_0xeca3('0x6'));var config=require(_0xeca3('0x7'));var attributes=require(_0xeca3('0x8'));module[_0xeca3('0x9')]=function(_0x49972f,_0x758762){return _0x49972f[_0xeca3('0xa')](_0xeca3('0xb'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed57579..e9dc22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c3=['code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Tag,\x20%s,\x20%s','debug','Tag,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x31eb67,_0x9bc8c0){var _0x2a8cb8=function(_0xac1c5d){while(--_0xac1c5d){_0x31eb67['push'](_0x31eb67['shift']());}};_0x2a8cb8(++_0x9bc8c0);}(_0x07c3,0x1bf));var _0x307c=function(_0x1df7b8,_0x2fe5e5){_0x1df7b8=_0x1df7b8-0x0;var _0x29d911=_0x07c3[_0x1df7b8];return _0x29d911;};'use strict';var _=require(_0x307c('0x0'));var util=require(_0x307c('0x1'));var moment=require(_0x307c('0x2'));var BPromise=require(_0x307c('0x3'));var rs=require(_0x307c('0x4'));var fs=require('fs');var Redis=require(_0x307c('0x5'));var db=require(_0x307c('0x6'))['db'];var utils=require(_0x307c('0x7'));var logger=require('../../config/logger')(_0x307c('0x8'));var config=require(_0x307c('0x9'));var jayson=require(_0x307c('0xa'));var client=jayson[_0x307c('0xb')][_0x307c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x410ae8,_0x39af52,_0x3f5d08){return new BPromise(function(_0xfb14bf,_0x166467){return client[_0x307c('0xd')](_0x410ae8,_0x3f5d08)[_0x307c('0xe')](function(_0x1af97f){logger[_0x307c('0xf')](_0x307c('0x10'),_0x39af52,'request\x20sent');logger[_0x307c('0x11')](_0x307c('0x12'),_0x39af52,_0x307c('0x13'),JSON[_0x307c('0x14')](_0x1af97f));if(_0x1af97f['error']){if(_0x1af97f['error'][_0x307c('0x15')]===0x1f4){logger['error'](_0x307c('0x10'),_0x39af52,_0x1af97f[_0x307c('0x16')]['message']);return _0x166467(_0x1af97f[_0x307c('0x16')][_0x307c('0x17')]);}logger[_0x307c('0x16')](_0x307c('0x10'),_0x39af52,_0x1af97f[_0x307c('0x16')][_0x307c('0x17')]);return _0xfb14bf(_0x1af97f[_0x307c('0x16')][_0x307c('0x17')]);}else{logger[_0x307c('0xf')](_0x307c('0x10'),_0x39af52,_0x307c('0x13'));_0xfb14bf(_0x1af97f[_0x307c('0x18')]['message']);}})[_0x307c('0x19')](function(_0x364441){logger[_0x307c('0x16')](_0x307c('0x10'),_0x39af52,_0x364441);_0x166467(_0x364441);});});}
\ No newline at end of file
+var _0x2123=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','Tag,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Tag,\x20%s,\x20%s','message','catch'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x2123,0x190));var _0x3212=function(_0x207db1,_0x19c38c){_0x207db1=_0x207db1-0x0;var _0x3744e1=_0x2123[_0x207db1];return _0x3744e1;};'use strict';var _=require(_0x3212('0x0'));var util=require(_0x3212('0x1'));var moment=require(_0x3212('0x2'));var BPromise=require(_0x3212('0x3'));var rs=require(_0x3212('0x4'));var fs=require('fs');var Redis=require(_0x3212('0x5'));var db=require(_0x3212('0x6'))['db'];var utils=require(_0x3212('0x7'));var logger=require(_0x3212('0x8'))(_0x3212('0x9'));var config=require(_0x3212('0xa'));var jayson=require(_0x3212('0xb'));var client=jayson['client'][_0x3212('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2b1302,_0x1fec5d,_0x4b35e9){return new BPromise(function(_0x3e17a3,_0x56c38f){return client[_0x3212('0xd')](_0x2b1302,_0x4b35e9)[_0x3212('0xe')](function(_0x8ca483){logger[_0x3212('0xf')]('Tag,\x20%s,\x20%s',_0x1fec5d,'request\x20sent');logger[_0x3212('0x10')](_0x3212('0x11'),_0x1fec5d,_0x3212('0x12'),JSON[_0x3212('0x13')](_0x8ca483));if(_0x8ca483[_0x3212('0x14')]){if(_0x8ca483[_0x3212('0x14')][_0x3212('0x15')]===0x1f4){logger[_0x3212('0x14')](_0x3212('0x16'),_0x1fec5d,_0x8ca483[_0x3212('0x14')][_0x3212('0x17')]);return _0x56c38f(_0x8ca483[_0x3212('0x14')][_0x3212('0x17')]);}logger[_0x3212('0x14')](_0x3212('0x16'),_0x1fec5d,_0x8ca483[_0x3212('0x14')][_0x3212('0x17')]);return _0x3e17a3(_0x8ca483[_0x3212('0x14')][_0x3212('0x17')]);}else{logger[_0x3212('0xf')](_0x3212('0x16'),_0x1fec5d,_0x3212('0x12'));_0x3e17a3(_0x8ca483['result'][_0x3212('0x17')]);}})[_0x3212('0x18')](function(_0x2720c6){logger[_0x3212('0x14')](_0x3212('0x16'),_0x1fec5d,_0x2720c6);_0x56c38f(_0x2720c6);});});}
\ No newline at end of file
index 4e07eef..d37dc9d 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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'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(_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
index 5121130..22a234f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x13da36,_0x19984b){var _0x2e110a=function(_0x17ab2e){while(--_0x17ab2e){_0x13da36['push'](_0x13da36['shift']());}};_0x2e110a(++_0x19984b);}(_0xb10b,0x12a));var _0xbb10=function(_0x152a03,_0x41a4fe){_0x152a03=_0x152a03-0x0;var _0x3ccbd0=_0xb10b[_0x152a03];return _0x3ccbd0;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x4f195c,_0x59e7c9){var _0xae91c9=function(_0x221cc6){while(--_0x221cc6){_0x4f195c['push'](_0x4f195c['shift']());}};_0xae91c9(++_0x59e7c9);}(_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 d0787a9..760acd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['voicePause','all','TeamVoicePrefix','UserVoicePrefix','upsert','VoicePrefixId','spread','Openchannel','removeAgents','getAgents','options','hasOwnProperty','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','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','Teams','UserProfileResource','error','stack','name','send','map','Team','fieldName','keys','filters','intersection','model','query','fields','attributes','length','nolimit','limit','order','sort','where','pick','filter','merge','findAll','catch','show','includeAll','find','create','body','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getQueues','findOne','channel','isValidChannel','Sequelize','ValidationError','Unknown\x20channel','capitalize','rawAttributes','toLowerCase','Queues','addQueues','add','ids','remove','addAgents','isArray','Voice','Chat','Mail','Sms','Fax','Whatsapp','sequelize','transaction','through','QueueId','penalty','User','Queue','findOrCreate','Queue:save','online','interface','UserVoiceQueueRt','isNil','format','SIP/%s'];(function(_0x45b5bb,_0x37dee7){var _0x37cef4=function(_0x522804){while(--_0x522804){_0x45b5bb['push'](_0x45b5bb['shift']());}};_0x37cef4(++_0x37dee7);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'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'];config[_0x7995('0x1b')]=_[_0x7995('0x1c')](config[_0x7995('0x1b')],{'host':_0x7995('0x1d'),'port':0x18eb});var socket=require(_0x7995('0x1e'))(new Redis(config['redis']));require('./team.socket')[_0x7995('0x1f')](socket);function respondWithStatusCode(_0x2233dd,_0x24b5bb){_0x24b5bb=_0x24b5bb||0xcc;return function(_0x321ae8){if(_0x321ae8){return _0x2233dd[_0x7995('0x20')](_0x24b5bb);}return _0x2233dd[_0x7995('0x21')](_0x24b5bb)[_0x7995('0x22')]();};}function respondWithResult(_0x41cbf0,_0x5377e5){_0x5377e5=_0x5377e5||0xc8;return function(_0x2eeacc){if(_0x2eeacc){return _0x41cbf0['status'](_0x5377e5)[_0x7995('0x23')](_0x2eeacc);}};}function respondWithFilteredResult(_0x37f297,_0x43d4b8){return function(_0x291317){if(_0x291317){var _0x1e1415=typeof _0x43d4b8[_0x7995('0x24')]==='undefined'&&typeof _0x43d4b8['limit']===_0x7995('0x25');var _0x5e6f90=_0x291317['count'];var _0x3ec178=_0x1e1415?0x0:_0x43d4b8[_0x7995('0x24')];var _0x4cbe10=_0x1e1415?_0x291317[_0x7995('0x26')]:_0x43d4b8['offset']+_0x43d4b8['limit'];var _0x3e4c54;if(_0x4cbe10>=_0x5e6f90){_0x4cbe10=_0x5e6f90;_0x3e4c54=0xc8;}else{_0x3e4c54=0xce;}_0x37f297[_0x7995('0x21')](_0x3e4c54);return _0x37f297[_0x7995('0x27')](_0x7995('0x28'),_0x3ec178+'-'+_0x4cbe10+'/'+_0x5e6f90)[_0x7995('0x23')](_0x291317);}return null;};}function patchUpdates(_0x1c278a){return function(_0x5d40ae){try{jsonpatch[_0x7995('0x29')](_0x5d40ae,_0x1c278a,!![]);}catch(_0x46ee4b){return BPromise[_0x7995('0x2a')](_0x46ee4b);}return _0x5d40ae[_0x7995('0x2b')]();};}function saveUpdates(_0x563799,_0x13bc35){return function(_0x475351){if(_0x475351){return _0x475351[_0x7995('0x2c')](_0x563799)['then'](function(_0x39df42){return _0x39df42;});}return null;};}function removeEntity(_0x34e70c,_0x401dc3){return function(_0x268ce7){if(_0x268ce7){return _0x268ce7[_0x7995('0x2d')]()[_0x7995('0x2e')](function(){var _0x56691a=_0x268ce7[_0x7995('0x2f')]({'plain':!![]});var _0x5911c3=_0x7995('0x30');return db[_0x7995('0x31')][_0x7995('0x2d')]({'where':{'type':_0x5911c3,'resourceId':_0x56691a['id']}})[_0x7995('0x2e')](function(){return _0x268ce7;});})[_0x7995('0x2e')](function(){_0x34e70c['status'](0xcc)[_0x7995('0x22')]();});}};}function handleEntityNotFound(_0x514445,_0x456a28){return function(_0x3250e0){if(!_0x3250e0){_0x514445[_0x7995('0x20')](0x194);}return _0x3250e0;};}function handleError(_0x574574,_0x530611){_0x530611=_0x530611||0x1f4;return function(_0x48e573){logger[_0x7995('0x32')](_0x48e573[_0x7995('0x33')]);if(_0x48e573[_0x7995('0x34')]){delete _0x48e573[_0x7995('0x34')];}_0x574574[_0x7995('0x21')](_0x530611)[_0x7995('0x35')](_0x48e573);};}exports['index']=function(_0x481c74,_0xfa8f15){var _0x5524af={},_0x553671={},_0x3eb566={'count':0x0,'rows':[]};var _0x29fac5=_[_0x7995('0x36')](db[_0x7995('0x37')]['rawAttributes'],function(_0x44309d){return{'name':_0x44309d[_0x7995('0x38')],'type':_0x44309d['type']['key']};});_0x553671['model']=_[_0x7995('0x36')](_0x29fac5,_0x7995('0x34'));_0x553671['query']=_[_0x7995('0x39')](_0x481c74['query']);_0x553671[_0x7995('0x3a')]=_[_0x7995('0x3b')](_0x553671[_0x7995('0x3c')],_0x553671['query']);_0x5524af['attributes']=_[_0x7995('0x3b')](_0x553671['model'],qs['fields'](_0x481c74[_0x7995('0x3d')][_0x7995('0x3e')]));_0x5524af['attributes']=_0x5524af[_0x7995('0x3f')][_0x7995('0x40')]?_0x5524af[_0x7995('0x3f')]:_0x553671[_0x7995('0x3c')];if(!_0x481c74[_0x7995('0x3d')]['hasOwnProperty'](_0x7995('0x41'))){_0x5524af[_0x7995('0x42')]=qs[_0x7995('0x42')](_0x481c74[_0x7995('0x3d')]['limit']);_0x5524af[_0x7995('0x24')]=qs[_0x7995('0x24')](_0x481c74[_0x7995('0x3d')][_0x7995('0x24')]);}_0x5524af[_0x7995('0x43')]=qs[_0x7995('0x44')](_0x481c74['query'][_0x7995('0x44')]);_0x5524af[_0x7995('0x45')]=qs[_0x7995('0x3a')](_[_0x7995('0x46')](_0x481c74[_0x7995('0x3d')],_0x553671[_0x7995('0x3a')]),_0x29fac5);if(_0x481c74[_0x7995('0x3d')][_0x7995('0x47')]){_0x5524af[_0x7995('0x45')]=_[_0x7995('0x48')](_0x5524af[_0x7995('0x45')],{'$or':_[_0x7995('0x36')](_0x29fac5,function(_0x7b4e67){if(_0x7b4e67['type']!=='VIRTUAL'){var _0x334dff={};_0x334dff[_0x7b4e67[_0x7995('0x34')]]={'$like':'%'+_0x481c74['query']['filter']+'%'};return _0x334dff;}})});}_0x5524af=_[_0x7995('0x48')]({},_0x5524af,_0x481c74['options']);var _0x504a33={'where':_0x5524af[_0x7995('0x45')]};return db[_0x7995('0x37')][_0x7995('0x26')](_0x504a33)['then'](function(_0x46ac4f){_0x3eb566['count']=_0x46ac4f;if(_0x481c74[_0x7995('0x3d')]['includeAll']){_0x5524af['include']=[{'all':!![]}];}return db[_0x7995('0x37')][_0x7995('0x49')](_0x5524af);})[_0x7995('0x2e')](function(_0x3f1c35){_0x3eb566['rows']=_0x3f1c35;return _0x3eb566;})[_0x7995('0x2e')](respondWithFilteredResult(_0xfa8f15,_0x5524af))[_0x7995('0x4a')](handleError(_0xfa8f15,null));};exports[_0x7995('0x4b')]=function(_0x6c7bec,_0x4e09b7){var _0x5f28e7={'raw':![],'where':{'id':_0x6c7bec['params']['id']}},_0x1c37c6={};_0x1c37c6[_0x7995('0x3c')]=_['keys'](db[_0x7995('0x37')]['rawAttributes']);_0x1c37c6[_0x7995('0x3d')]=_[_0x7995('0x39')](_0x6c7bec['query']);_0x1c37c6[_0x7995('0x3a')]=_[_0x7995('0x3b')](_0x1c37c6[_0x7995('0x3c')],_0x1c37c6[_0x7995('0x3d')]);_0x5f28e7['attributes']=_[_0x7995('0x3b')](_0x1c37c6[_0x7995('0x3c')],qs[_0x7995('0x3e')](_0x6c7bec['query'][_0x7995('0x3e')]));_0x5f28e7[_0x7995('0x3f')]=_0x5f28e7[_0x7995('0x3f')][_0x7995('0x40')]?_0x5f28e7[_0x7995('0x3f')]:_0x1c37c6['model'];if(_0x6c7bec[_0x7995('0x3d')][_0x7995('0x4c')]){_0x5f28e7['include']=[{'all':!![]}];}_0x5f28e7=_[_0x7995('0x48')]({},_0x5f28e7,_0x6c7bec['options']);return db[_0x7995('0x37')][_0x7995('0x4d')](_0x5f28e7)[_0x7995('0x2e')](handleEntityNotFound(_0x4e09b7,null))[_0x7995('0x2e')](respondWithResult(_0x4e09b7,null))[_0x7995('0x4a')](handleError(_0x4e09b7,null));};exports[_0x7995('0x4e')]=function(_0x1579b9,_0x4d46bc){return db[_0x7995('0x37')][_0x7995('0x4e')](_0x1579b9[_0x7995('0x4f')],{})['then'](function(_0x19da63){var _0x1fe77e=_0x1579b9[_0x7995('0x50')]['get']({'plain':!![]});if(!_0x1fe77e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1fe77e['role']===_0x7995('0x50')){var _0x1fd1ca=_0x19da63['get']({'plain':!![]});var _0x1cd85=_0x7995('0x30');return db[_0x7995('0x51')][_0x7995('0x4d')]({'where':{'name':_0x1cd85,'userProfileId':_0x1fe77e[_0x7995('0x52')]},'raw':!![]})['then'](function(_0x29ee32){if(_0x29ee32&&_0x29ee32['autoAssociation']===0x0){return db[_0x7995('0x31')][_0x7995('0x4e')]({'name':_0x1fd1ca[_0x7995('0x34')],'resourceId':_0x1fd1ca['id'],'type':_0x29ee32['name'],'sectionId':_0x29ee32['id']},{})['then'](function(){return _0x19da63;});}else{return _0x19da63;}})['catch'](function(_0x563f8e){logger[_0x7995('0x32')](_0x7995('0x53'),_0x563f8e);throw _0x563f8e;});}return _0x19da63;})[_0x7995('0x2e')](respondWithResult(_0x4d46bc,0xc9))[_0x7995('0x4a')](handleError(_0x4d46bc,null));};exports[_0x7995('0x2c')]=function(_0x357e60,_0x1f4270){if(_0x357e60[_0x7995('0x4f')]['id']){delete _0x357e60[_0x7995('0x4f')]['id'];}return db[_0x7995('0x37')][_0x7995('0x4d')]({'where':{'id':_0x357e60[_0x7995('0x54')]['id']}})[_0x7995('0x2e')](handleEntityNotFound(_0x1f4270,null))[_0x7995('0x2e')](saveUpdates(_0x357e60[_0x7995('0x4f')],null))[_0x7995('0x2e')](respondWithResult(_0x1f4270,null))[_0x7995('0x4a')](handleError(_0x1f4270,null));};exports[_0x7995('0x2d')]=function(_0x45e86e,_0x50b7c2){return db[_0x7995('0x37')][_0x7995('0x4d')]({'where':{'id':_0x45e86e[_0x7995('0x54')]['id']}})[_0x7995('0x2e')](handleEntityNotFound(_0x50b7c2,null))['then'](removeEntity(_0x50b7c2,null))['catch'](handleError(_0x50b7c2,null));};exports[_0x7995('0x55')]=function(_0x197b52,_0x5b9467,_0x332a85){return db['Team'][_0x7995('0x56')]({'where':{'id':_0x197b52[_0x7995('0x54')]['id']}})[_0x7995('0x2e')](handleEntityNotFound(_0x5b9467,null))[_0x7995('0x2e')](function(_0x502d43){if(!_0x197b52['query'][_0x7995('0x57')]||!utils[_0x7995('0x58')](_0x197b52[_0x7995('0x3d')][_0x7995('0x57')])){throw new db[(_0x7995('0x59'))][(_0x7995('0x5a'))](_0x7995('0x5b'));}var _0x1e2206={};var _0x984c23={};_0x984c23['model']=_[_0x7995('0x39')](db[_[_0x7995('0x5c')](_0x197b52[_0x7995('0x3d')][_0x7995('0x57')]['toLowerCase']())+'Queue'][_0x7995('0x5d')]);_0x984c23[_0x7995('0x3d')]=_['keys'](_0x197b52[_0x7995('0x3d')]);_0x984c23[_0x7995('0x3a')]=_[_0x7995('0x3b')](_0x984c23[_0x7995('0x3c')],_0x984c23[_0x7995('0x3d')]);_0x1e2206['attributes']=_[_0x7995('0x3b')](_0x984c23['model'],qs[_0x7995('0x3e')](_0x197b52[_0x7995('0x3d')][_0x7995('0x3e')]));_0x1e2206[_0x7995('0x3f')]=_0x1e2206[_0x7995('0x3f')][_0x7995('0x40')]?_0x1e2206[_0x7995('0x3f')]:_0x984c23[_0x7995('0x3c')];_0x1e2206[_0x7995('0x42')]=qs[_0x7995('0x42')](_0x197b52[_0x7995('0x3d')][_0x7995('0x42')]);_0x1e2206['offset']=qs[_0x7995('0x24')](_0x197b52[_0x7995('0x3d')][_0x7995('0x24')]);_0x1e2206[_0x7995('0x43')]=qs[_0x7995('0x44')](_0x197b52['query']['sort']);_0x1e2206[_0x7995('0x45')]=qs[_0x7995('0x3a')](_[_0x7995('0x46')](_0x197b52[_0x7995('0x3d')],_0x984c23['filters']));_0x1e2206=_[_0x7995('0x48')]({},_0x1e2206,_0x197b52['options']);return _0x502d43['get'+_[_0x7995('0x5c')](_0x197b52[_0x7995('0x3d')][_0x7995('0x57')][_0x7995('0x5e')]())+_0x7995('0x5f')](_0x1e2206);})[_0x7995('0x2e')](respondWithResult(_0x5b9467,null))[_0x7995('0x4a')](handleError(_0x5b9467,null));};exports[_0x7995('0x60')]=function(_0x3fde86,_0x2466df,_0x560b0a){return db[_0x7995('0x37')][_0x7995('0x56')]({'where':{'id':_0x3fde86[_0x7995('0x54')]['id']}})['then'](function(_0x1fe1cb){if(_0x1fe1cb){if(!_0x3fde86[_0x7995('0x4f')][_0x7995('0x57')]||!utils[_0x7995('0x58')](_0x3fde86[_0x7995('0x4f')][_0x7995('0x57')])){throw new db[(_0x7995('0x59'))][(_0x7995('0x5a'))](_0x7995('0x5b'));}return _0x1fe1cb[_0x7995('0x61')+_[_0x7995('0x5c')](_0x3fde86['body']['channel'][_0x7995('0x5e')]())+_0x7995('0x5f')](_0x3fde86[_0x7995('0x4f')][_0x7995('0x62')]);}return null;})['then'](handleEntityNotFound(_0x2466df,null))[_0x7995('0x2e')](respondWithStatusCode(_0x2466df,null))[_0x7995('0x4a')](handleError(_0x2466df,null));};exports['removeQueues']=function(_0x480fdb,_0x3253b5,_0x305b5a){return db['Team'][_0x7995('0x56')]({'where':{'id':_0x480fdb['params']['id']}})[_0x7995('0x2e')](function(_0xea9aba){if(_0xea9aba){if(!_0x480fdb['query']['channel']||!utils[_0x7995('0x58')](_0x480fdb['query'][_0x7995('0x57')])){throw new db[(_0x7995('0x59'))][(_0x7995('0x5a'))](_0x7995('0x5b'));}return _0xea9aba[_0x7995('0x63')+_[_0x7995('0x5c')](_0x480fdb[_0x7995('0x3d')][_0x7995('0x57')][_0x7995('0x5e')]())+_0x7995('0x5f')](_0x480fdb[_0x7995('0x3d')][_0x7995('0x62')]);}return null;})[_0x7995('0x2e')](handleEntityNotFound(_0x3253b5,null))[_0x7995('0x2e')](respondWithStatusCode(_0x3253b5,null))[_0x7995('0x4a')](handleError(_0x3253b5,null));};exports[_0x7995('0x64')]=function(_0x6ad274,_0x251490){var _0x2ff7ba=_[_0x7995('0x65')](_0x6ad274[_0x7995('0x4f')][_0x7995('0x62')])?_0x6ad274[_0x7995('0x4f')][_0x7995('0x62')]:[_0x6ad274[_0x7995('0x4f')][_0x7995('0x62')]];var _0x2f7f51=_0x6ad274[_0x7995('0x54')]['id'];return db['Team'][_0x7995('0x4d')]({'where':{'id':_0x2f7f51}})[_0x7995('0x2e')](handleEntityNotFound(_0x251490,null))['then'](function(_0x4c85cb){if(_0x4c85cb){var _0x15e8d1=[_0x7995('0x66'),_0x7995('0x67'),_0x7995('0x68'),_0x7995('0x69'),_0x7995('0x6a'),'Openchannel',_0x7995('0x6b')];return db[_0x7995('0x6c')][_0x7995('0x6d')](function(_0x77b03f){var _0x7d9c6e=_[_0x7995('0x36')](_0x15e8d1,function(_0x151d99){var _0xc93dcb={'attributes':['id','name']};if(_0x151d99===_0x7995('0x66')){_0xc93dcb[_0x7995('0x6e')]={'attributes':['penalty']};}return _0x4c85cb['get'+_0x151d99+_0x7995('0x5f')](_0xc93dcb)[_0x7995('0x2e')](function(_0x18e1a2){var _0x3db7a9=_[_0x7995('0x36')](_0x18e1a2,function(_0x4a02ea){var _0x35f6cb=_[_0x7995('0x36')](_0x2ff7ba,function(_0x528b22){var _0x209977={'where':{'UserId':_0x528b22,[_0x151d99+_0x7995('0x6f')]:_0x4a02ea['id']},'transaction':_0x77b03f};if(_0x151d99==='Voice'){_0x209977[_0x7995('0x1c')]={'penalty':_0x4a02ea['TeamVoiceQueue'][_0x7995('0x70')]};}return db[_0x7995('0x71')+_0x151d99+_0x7995('0x72')][_0x7995('0x73')](_0x209977)[_0x7995('0x2e')](function(){socket['emit'](_0x7995('0x50')+_0x151d99+_0x7995('0x74'),{'UserId':_0x528b22,[_0x151d99+_0x7995('0x6f')]:_0x4a02ea['id']});if(_0x151d99!=='Voice'){return;}return db[_0x7995('0x71')][_0x7995('0x49')]({'where':{'id':_0x2ff7ba,'online':0x1},'attributes':['id',_0x7995('0x34'),_0x7995('0x75'),'voicePause',_0x7995('0x76')],'raw':!![]})[_0x7995('0x2e')](function(_0x3a5f5e){var _0x4aafa3=_['map'](_0x3a5f5e,function(_0x3fc10){return db[_0x7995('0x77')]['upsert']({'membername':_0x3fc10['name'],'UserId':_0x3fc10['id'],'queue_name':_0x4a02ea[_0x7995('0x34')],'VoiceQueueId':_0x4a02ea['id'],'interface':_[_0x7995('0x78')](_0x3fc10[_0x7995('0x76')])?util[_0x7995('0x79')](_0x7995('0x7a'),_0x3fc10['name']):_0x3fc10['interface'],'paused':_0x3fc10[_0x7995('0x7b')]||![],'penalty':_0x4a02ea['TeamVoiceQueue']['penalty']},{'transaction':_0x77b03f});});return Promise[_0x7995('0x7c')](_0x4aafa3);});});});return Promise[_0x7995('0x7c')](_0x35f6cb);});return Promise[_0x7995('0x7c')](_0x3db7a9);})['then'](function(){return db[_0x7995('0x7d')][_0x7995('0x56')]({'where':{'teamId':_0x2f7f51}})[_0x7995('0x2e')](function(_0x27889a){if(_0x27889a){var _0x267a7f=_['map'](_0x2ff7ba,function(_0x279037){db[_0x7995('0x7e')][_0x7995('0x7f')]({'UserId':_0x279037,'VoicePrefixId':_0x27889a[_0x7995('0x80')]});});return Promise['all'](_0x267a7f);}});});});return Promise[_0x7995('0x7c')](_0x7d9c6e)[_0x7995('0x2e')](function(){return _0x4c85cb['addAgents'](_0x2ff7ba,{'transaction':_0x77b03f})[_0x7995('0x81')](function(_0x20683e){return _0x20683e;});});});}})['then'](respondWithResult(_0x251490,null))[_0x7995('0x4a')](handleError(_0x251490,null));};exports['removeAgents']=function(_0x1b4b34,_0x51e7d7){var _0x21f496=_['isArray'](_0x1b4b34[_0x7995('0x3d')][_0x7995('0x62')])?_0x1b4b34['query'][_0x7995('0x62')]:[_0x1b4b34['query']['ids']];var _0x7b9e26=_0x1b4b34[_0x7995('0x54')]['id'];return db[_0x7995('0x37')][_0x7995('0x4d')]({'where':{'id':_0x7b9e26}})['then'](handleEntityNotFound(_0x51e7d7,null))[_0x7995('0x2e')](function(_0x35044a){if(_0x35044a){var _0x4bd29f=['Voice',_0x7995('0x67'),'Mail',_0x7995('0x69'),_0x7995('0x6a'),_0x7995('0x82'),'Whatsapp'];return db['sequelize'][_0x7995('0x6d')](function(_0x553c71){var _0x12e9d9=_[_0x7995('0x36')](_0x4bd29f,function(_0x14449c){var _0x38bd35={'attributes':['id','name']};return _0x35044a['get'+_0x14449c+'Queues'](_0x38bd35)[_0x7995('0x2e')](function(_0x340a57){var _0x23b4c3=_[_0x7995('0x36')](_0x340a57,function(_0x265f07){return _0x265f07[_0x7995('0x83')](_0x21f496,{'transaction':_0x553c71})['then'](function(){var _0x53cbec=_[_0x7995('0x36')](_0x21f496,function(_0x5254e4){socket['emit'](_0x7995('0x50')+_0x14449c+'Queue:remove',{'UserId':Number(_0x5254e4),[_0x14449c+'QueueId']:_0x265f07['id']});if(_0x14449c!==_0x7995('0x66')){return;}return db[_0x7995('0x77')][_0x7995('0x2d')]({'where':{'VoiceQueueId':_0x265f07['id'],'UserId':_0x5254e4},'transaction':_0x553c71});});return Promise['all'](_0x53cbec);});});return Promise[_0x7995('0x7c')](_0x23b4c3);});});return Promise[_0x7995('0x7c')](_0x12e9d9)[_0x7995('0x2e')](function(){return _0x35044a[_0x7995('0x83')](_0x21f496,{'transaction':_0x553c71});})[_0x7995('0x2e')](function(){return db[_0x7995('0x7d')][_0x7995('0x56')]({'where':{'teamId':_0x7b9e26}})[_0x7995('0x2e')](function(_0x19d746){if(_0x19d746){var _0x570b71=_[_0x7995('0x36')](_0x21f496,function(_0x87a539){db[_0x7995('0x7e')][_0x7995('0x2d')]({'where':{'UserId':_0x87a539,'VoicePrefixId':_0x19d746[_0x7995('0x80')]}});});return Promise['all'](_0x570b71);}});});});}})[_0x7995('0x2e')](respondWithStatusCode(_0x51e7d7,null))[_0x7995('0x4a')](handleError(_0x51e7d7,null));};exports[_0x7995('0x84')]=function(_0x58ca6f,_0x4c554d,_0x5e04ed){var _0xb28dea={};var _0x17f7d6={};var _0x9daa49;var _0x1d52cf;return db[_0x7995('0x37')][_0x7995('0x56')]({'where':{'id':_0x58ca6f['params']['id']}})[_0x7995('0x2e')](handleEntityNotFound(_0x4c554d,null))['then'](function(_0x40a151){if(_0x40a151){_0x9daa49=_0x40a151;_0x17f7d6[_0x7995('0x3c')]=_[_0x7995('0x39')](db[_0x7995('0x71')][_0x7995('0x5d')]);_0x17f7d6[_0x7995('0x3d')]=_[_0x7995('0x39')](_0x58ca6f[_0x7995('0x3d')]);_0x17f7d6[_0x7995('0x3a')]=_[_0x7995('0x3b')](_0x17f7d6[_0x7995('0x3c')],_0x17f7d6['query']);_0xb28dea[_0x7995('0x3f')]=_['intersection'](_0x17f7d6[_0x7995('0x3c')],qs[_0x7995('0x3e')](_0x58ca6f['query']['fields']));_0xb28dea[_0x7995('0x3f')]=_0xb28dea[_0x7995('0x3f')][_0x7995('0x40')]?_0xb28dea[_0x7995('0x3f')]:_0x17f7d6[_0x7995('0x3c')];_0xb28dea[_0x7995('0x43')]=qs[_0x7995('0x44')](_0x58ca6f[_0x7995('0x3d')][_0x7995('0x44')]);_0xb28dea[_0x7995('0x45')]=qs[_0x7995('0x3a')](_[_0x7995('0x46')](_0x58ca6f['query'],_0x17f7d6['filters']));if(_0x58ca6f[_0x7995('0x3d')][_0x7995('0x47')]){_0xb28dea[_0x7995('0x45')]=_[_0x7995('0x48')](_0xb28dea[_0x7995('0x45')],{'$or':_['map'](_0xb28dea[_0x7995('0x3f')],function(_0x459777){var _0x5ebf5e={};_0x5ebf5e[_0x459777]={'$like':'%'+_0x58ca6f[_0x7995('0x3d')]['filter']+'%'};return _0x5ebf5e;})});}_0xb28dea=_[_0x7995('0x48')]({},_0xb28dea,_0x58ca6f[_0x7995('0x85')]);return _0x9daa49[_0x7995('0x84')](_0xb28dea);}})['then'](function(_0x3501ac){if(_0x3501ac){_0x1d52cf=_0x3501ac[_0x7995('0x40')];if(!_0x58ca6f[_0x7995('0x3d')][_0x7995('0x86')](_0x7995('0x41'))){_0xb28dea[_0x7995('0x42')]=qs[_0x7995('0x42')](_0x58ca6f['query']['limit']);_0xb28dea['offset']=qs[_0x7995('0x24')](_0x58ca6f[_0x7995('0x3d')]['offset']);}return _0x9daa49['getAgents'](_0xb28dea);}})[_0x7995('0x2e')](function(_0xe4389c){if(_0xe4389c){return _0xe4389c?{'count':_0x1d52cf,'rows':_0xe4389c}:null;}})['then'](respondWithResult(_0x4c554d,null))['catch'](handleError(_0x4c554d,null));};
\ No newline at end of file
+var _0x2b04=['Queue:remove','removeAgents','getAgents','hasOwnProperty','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','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','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','Teams','UserProfileResource','stack','name','send','Team','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','options','includeAll','findAll','then','rows','catch','show','params','rawAttributes','create','user','get','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','destroy','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','Queue','pick','toLowerCase','Queues','addQueues','Sequelize','add','ids','removeQueues','remove','addAgents','Voice','Chat','Openchannel','transaction','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','UserVoiceQueueRt','upsert','isNil','interface','SIP/%s','all','spread','Mail','Sms','Fax','Whatsapp','sequelize','parse'];(function(_0x38c632,_0x14e8e6){var _0x12737e=function(_0x3e0fe4){while(--_0x3e0fe4){_0x38c632['push'](_0x38c632['shift']());}};_0x12737e(++_0x14e8e6);}(_0x2b04,0x10a));var _0x42b0=function(_0x54635c,_0x5300e8){_0x54635c=_0x54635c-0x0;var _0x7c59d7=_0x2b04[_0x54635c];return _0x7c59d7;};'use strict';var emlformat=require(_0x42b0('0x0'));var rimraf=require(_0x42b0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x42b0('0x2'));var rp=require('request-promise');var moment=require(_0x42b0('0x3'));var BPromise=require(_0x42b0('0x4'));var Mustache=require(_0x42b0('0x5'));var util=require(_0x42b0('0x6'));var path=require(_0x42b0('0x7'));var sox=require(_0x42b0('0x8'));var csv=require(_0x42b0('0x9'));var ejs=require(_0x42b0('0xa'));var fs=require('fs');var fs_extra=require(_0x42b0('0xb'));var _=require(_0x42b0('0xc'));var squel=require(_0x42b0('0xd'));var crypto=require(_0x42b0('0xe'));var jsforce=require(_0x42b0('0xf'));var deskjs=require(_0x42b0('0x10'));var toCsv=require(_0x42b0('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x42b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x42b0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x42b0('0x13'))(_0x42b0('0x14'));var utils=require(_0x42b0('0x15'));var config=require(_0x42b0('0x16'));var licenseUtil=require(_0x42b0('0x17'));var db=require(_0x42b0('0x18'))['db'];config['redis']=_[_0x42b0('0x19')](config[_0x42b0('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x42b0('0x1b'))(new Redis(config[_0x42b0('0x1a')]));require(_0x42b0('0x1c'))[_0x42b0('0x1d')](socket);function respondWithStatusCode(_0x4f0d59,_0x2336af){_0x2336af=_0x2336af||0xcc;return function(_0x4e0132){if(_0x4e0132){return _0x4f0d59[_0x42b0('0x1e')](_0x2336af);}return _0x4f0d59[_0x42b0('0x1f')](_0x2336af)[_0x42b0('0x20')]();};}function respondWithResult(_0x53d5fd,_0x20f62e){_0x20f62e=_0x20f62e||0xc8;return function(_0x51a6ed){if(_0x51a6ed){return _0x53d5fd[_0x42b0('0x1f')](_0x20f62e)[_0x42b0('0x21')](_0x51a6ed);}};}function respondWithFilteredResult(_0xcd83b8,_0x5c95e9){return function(_0x2394c0){if(_0x2394c0){var _0x1ebec3=typeof _0x5c95e9[_0x42b0('0x22')]===_0x42b0('0x23')&&typeof _0x5c95e9[_0x42b0('0x24')]===_0x42b0('0x23');var _0x3f72a1=_0x2394c0['count'];var _0x21ebda=_0x1ebec3?0x0:_0x5c95e9[_0x42b0('0x22')];var _0x30d730=_0x1ebec3?_0x2394c0[_0x42b0('0x25')]:_0x5c95e9['offset']+_0x5c95e9[_0x42b0('0x24')];var _0x25b92f;if(_0x30d730>=_0x3f72a1){_0x30d730=_0x3f72a1;_0x25b92f=0xc8;}else{_0x25b92f=0xce;}_0xcd83b8[_0x42b0('0x1f')](_0x25b92f);return _0xcd83b8[_0x42b0('0x26')](_0x42b0('0x27'),_0x21ebda+'-'+_0x30d730+'/'+_0x3f72a1)[_0x42b0('0x21')](_0x2394c0);}return null;};}function patchUpdates(_0x18ef80){return function(_0x26052c){try{jsonpatch['apply'](_0x26052c,_0x18ef80,!![]);}catch(_0x7a6373){return BPromise[_0x42b0('0x28')](_0x7a6373);}return _0x26052c['save']();};}function saveUpdates(_0x5bd16c,_0x14bfef){return function(_0x2750c4){if(_0x2750c4){return _0x2750c4['update'](_0x5bd16c)['then'](function(_0x65fac1){return _0x65fac1;});}return null;};}function removeEntity(_0x74cdd9,_0x231809){return function(_0x59a23b){if(_0x59a23b){return _0x59a23b['destroy']()['then'](function(){var _0x9dea5b=_0x59a23b['get']({'plain':!![]});var _0x2d10d8=_0x42b0('0x29');return db[_0x42b0('0x2a')]['destroy']({'where':{'type':_0x2d10d8,'resourceId':_0x9dea5b['id']}})['then'](function(){return _0x59a23b;});})['then'](function(){_0x74cdd9[_0x42b0('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39b1de,_0x3bd8f0){return function(_0x359a95){if(!_0x359a95){_0x39b1de[_0x42b0('0x1e')](0x194);}return _0x359a95;};}function handleError(_0x6b3b79,_0x4d642d){_0x4d642d=_0x4d642d||0x1f4;return function(_0x7acba7){logger['error'](_0x7acba7[_0x42b0('0x2b')]);if(_0x7acba7[_0x42b0('0x2c')]){delete _0x7acba7[_0x42b0('0x2c')];}_0x6b3b79[_0x42b0('0x1f')](_0x4d642d)[_0x42b0('0x2d')](_0x7acba7);};}exports['index']=function(_0x4950e9,_0x5ac53b){var _0x14c5c0={},_0x5be675={},_0x2ff71d={'count':0x0,'rows':[]};var _0x2c9145=_['map'](db[_0x42b0('0x2e')]['rawAttributes'],function(_0x8d04aa){return{'name':_0x8d04aa[_0x42b0('0x2f')],'type':_0x8d04aa[_0x42b0('0x30')][_0x42b0('0x31')]};});_0x5be675[_0x42b0('0x32')]=_[_0x42b0('0x33')](_0x2c9145,'name');_0x5be675[_0x42b0('0x34')]=_[_0x42b0('0x35')](_0x4950e9['query']);_0x5be675[_0x42b0('0x36')]=_[_0x42b0('0x37')](_0x5be675[_0x42b0('0x32')],_0x5be675['query']);_0x14c5c0[_0x42b0('0x38')]=_[_0x42b0('0x37')](_0x5be675[_0x42b0('0x32')],qs['fields'](_0x4950e9['query'][_0x42b0('0x39')]));_0x14c5c0['attributes']=_0x14c5c0[_0x42b0('0x38')][_0x42b0('0x3a')]?_0x14c5c0[_0x42b0('0x38')]:_0x5be675[_0x42b0('0x32')];if(!_0x4950e9[_0x42b0('0x34')]['hasOwnProperty']('nolimit')){_0x14c5c0['limit']=qs[_0x42b0('0x24')](_0x4950e9[_0x42b0('0x34')][_0x42b0('0x24')]);_0x14c5c0['offset']=qs[_0x42b0('0x22')](_0x4950e9['query'][_0x42b0('0x22')]);}_0x14c5c0[_0x42b0('0x3b')]=qs['sort'](_0x4950e9[_0x42b0('0x34')][_0x42b0('0x3c')]);_0x14c5c0[_0x42b0('0x3d')]=qs[_0x42b0('0x36')](_['pick'](_0x4950e9[_0x42b0('0x34')],_0x5be675['filters']),_0x2c9145);if(_0x4950e9['query'][_0x42b0('0x3e')]){_0x14c5c0[_0x42b0('0x3d')]=_[_0x42b0('0x3f')](_0x14c5c0[_0x42b0('0x3d')],{'$or':_[_0x42b0('0x33')](_0x2c9145,function(_0xf3f7ba){if(_0xf3f7ba['type']!=='VIRTUAL'){var _0x3fcdf6={};_0x3fcdf6[_0xf3f7ba[_0x42b0('0x2c')]]={'$like':'%'+_0x4950e9['query']['filter']+'%'};return _0x3fcdf6;}})});}_0x14c5c0=_['merge']({},_0x14c5c0,_0x4950e9[_0x42b0('0x40')]);var _0x448ece={'where':_0x14c5c0[_0x42b0('0x3d')]};return db[_0x42b0('0x2e')][_0x42b0('0x25')](_0x448ece)['then'](function(_0x367052){_0x2ff71d['count']=_0x367052;if(_0x4950e9['query'][_0x42b0('0x41')]){_0x14c5c0['include']=[{'all':!![]}];}return db[_0x42b0('0x2e')][_0x42b0('0x42')](_0x14c5c0);})[_0x42b0('0x43')](function(_0x3b891c){_0x2ff71d[_0x42b0('0x44')]=_0x3b891c;return _0x2ff71d;})[_0x42b0('0x43')](respondWithFilteredResult(_0x5ac53b,_0x14c5c0))[_0x42b0('0x45')](handleError(_0x5ac53b,null));};exports[_0x42b0('0x46')]=function(_0x17d903,_0x58bcc9){var _0x55c554={'raw':![],'where':{'id':_0x17d903[_0x42b0('0x47')]['id']}},_0x439974={};_0x439974[_0x42b0('0x32')]=_[_0x42b0('0x35')](db[_0x42b0('0x2e')][_0x42b0('0x48')]);_0x439974['query']=_['keys'](_0x17d903[_0x42b0('0x34')]);_0x439974[_0x42b0('0x36')]=_['intersection'](_0x439974[_0x42b0('0x32')],_0x439974[_0x42b0('0x34')]);_0x55c554[_0x42b0('0x38')]=_[_0x42b0('0x37')](_0x439974[_0x42b0('0x32')],qs[_0x42b0('0x39')](_0x17d903[_0x42b0('0x34')][_0x42b0('0x39')]));_0x55c554[_0x42b0('0x38')]=_0x55c554[_0x42b0('0x38')]['length']?_0x55c554['attributes']:_0x439974[_0x42b0('0x32')];if(_0x17d903[_0x42b0('0x34')]['includeAll']){_0x55c554['include']=[{'all':!![]}];}_0x55c554=_[_0x42b0('0x3f')]({},_0x55c554,_0x17d903[_0x42b0('0x40')]);return db['Team']['find'](_0x55c554)['then'](handleEntityNotFound(_0x58bcc9,null))[_0x42b0('0x43')](respondWithResult(_0x58bcc9,null))['catch'](handleError(_0x58bcc9,null));};exports[_0x42b0('0x49')]=function(_0x58adc0,_0x31d3de){return db[_0x42b0('0x2e')][_0x42b0('0x49')](_0x58adc0['body'],{})[_0x42b0('0x43')](function(_0x37222c){var _0x1381b3=_0x58adc0[_0x42b0('0x4a')][_0x42b0('0x4b')]({'plain':!![]});if(!_0x1381b3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1381b3[_0x42b0('0x4c')]===_0x42b0('0x4a')){var _0x48c582=_0x37222c[_0x42b0('0x4b')]({'plain':!![]});var _0x1843f1=_0x42b0('0x29');return db['UserProfileSection'][_0x42b0('0x4d')]({'where':{'name':_0x1843f1,'userProfileId':_0x1381b3[_0x42b0('0x4e')]},'raw':!![]})[_0x42b0('0x43')](function(_0x3a1d88){if(_0x3a1d88&&_0x3a1d88[_0x42b0('0x4f')]===0x0){return db[_0x42b0('0x2a')][_0x42b0('0x49')]({'name':_0x48c582[_0x42b0('0x2c')],'resourceId':_0x48c582['id'],'type':_0x3a1d88[_0x42b0('0x2c')],'sectionId':_0x3a1d88['id']},{})[_0x42b0('0x43')](function(){return _0x37222c;});}else{return _0x37222c;}})[_0x42b0('0x45')](function(_0x1c5e54){logger['error'](_0x42b0('0x50'),_0x1c5e54);throw _0x1c5e54;});}return _0x37222c;})[_0x42b0('0x43')](respondWithResult(_0x31d3de,0xc9))[_0x42b0('0x45')](handleError(_0x31d3de,null));};exports[_0x42b0('0x51')]=function(_0xf183d,_0x28ad3e){if(_0xf183d[_0x42b0('0x52')]['id']){delete _0xf183d['body']['id'];}return db[_0x42b0('0x2e')][_0x42b0('0x4d')]({'where':{'id':_0xf183d[_0x42b0('0x47')]['id']}})['then'](handleEntityNotFound(_0x28ad3e,null))[_0x42b0('0x43')](saveUpdates(_0xf183d['body'],null))[_0x42b0('0x43')](respondWithResult(_0x28ad3e,null))[_0x42b0('0x45')](handleError(_0x28ad3e,null));};exports[_0x42b0('0x53')]=function(_0x425051,_0x16cec3){return db[_0x42b0('0x2e')]['find']({'where':{'id':_0x425051[_0x42b0('0x47')]['id']}})[_0x42b0('0x43')](handleEntityNotFound(_0x16cec3,null))[_0x42b0('0x43')](removeEntity(_0x16cec3,null))[_0x42b0('0x45')](handleError(_0x16cec3,null));};exports['getQueues']=function(_0x512354,_0x7874ac,_0x2d2a9c){return db['Team'][_0x42b0('0x54')]({'where':{'id':_0x512354['params']['id']}})[_0x42b0('0x43')](handleEntityNotFound(_0x7874ac,null))[_0x42b0('0x43')](function(_0x3c6b30){if(!_0x512354[_0x42b0('0x34')][_0x42b0('0x55')]||!utils[_0x42b0('0x56')](_0x512354[_0x42b0('0x34')]['channel'])){throw new db['Sequelize'][(_0x42b0('0x57'))](_0x42b0('0x58'));}var _0x4499e7={};var _0x5a1995={};_0x5a1995[_0x42b0('0x32')]=_[_0x42b0('0x35')](db[_['capitalize'](_0x512354[_0x42b0('0x34')][_0x42b0('0x55')]['toLowerCase']())+_0x42b0('0x59')][_0x42b0('0x48')]);_0x5a1995[_0x42b0('0x34')]=_[_0x42b0('0x35')](_0x512354[_0x42b0('0x34')]);_0x5a1995['filters']=_['intersection'](_0x5a1995['model'],_0x5a1995['query']);_0x4499e7[_0x42b0('0x38')]=_['intersection'](_0x5a1995[_0x42b0('0x32')],qs['fields'](_0x512354['query']['fields']));_0x4499e7[_0x42b0('0x38')]=_0x4499e7[_0x42b0('0x38')][_0x42b0('0x3a')]?_0x4499e7['attributes']:_0x5a1995[_0x42b0('0x32')];_0x4499e7[_0x42b0('0x24')]=qs['limit'](_0x512354['query'][_0x42b0('0x24')]);_0x4499e7[_0x42b0('0x22')]=qs[_0x42b0('0x22')](_0x512354[_0x42b0('0x34')][_0x42b0('0x22')]);_0x4499e7[_0x42b0('0x3b')]=qs['sort'](_0x512354[_0x42b0('0x34')][_0x42b0('0x3c')]);_0x4499e7[_0x42b0('0x3d')]=qs[_0x42b0('0x36')](_[_0x42b0('0x5a')](_0x512354[_0x42b0('0x34')],_0x5a1995[_0x42b0('0x36')]));_0x4499e7=_['merge']({},_0x4499e7,_0x512354[_0x42b0('0x40')]);return _0x3c6b30[_0x42b0('0x4b')+_['capitalize'](_0x512354[_0x42b0('0x34')][_0x42b0('0x55')][_0x42b0('0x5b')]())+_0x42b0('0x5c')](_0x4499e7);})[_0x42b0('0x43')](respondWithResult(_0x7874ac,null))['catch'](handleError(_0x7874ac,null));};exports[_0x42b0('0x5d')]=function(_0x172427,_0x4304d3,_0x209e84){return db[_0x42b0('0x2e')][_0x42b0('0x54')]({'where':{'id':_0x172427['params']['id']}})[_0x42b0('0x43')](function(_0x304354){if(_0x304354){if(!_0x172427['body'][_0x42b0('0x55')]||!utils[_0x42b0('0x56')](_0x172427[_0x42b0('0x52')][_0x42b0('0x55')])){throw new db[(_0x42b0('0x5e'))][(_0x42b0('0x57'))](_0x42b0('0x58'));}return _0x304354[_0x42b0('0x5f')+_['capitalize'](_0x172427['body']['channel']['toLowerCase']())+'Queues'](_0x172427[_0x42b0('0x52')][_0x42b0('0x60')]);}return null;})['then'](handleEntityNotFound(_0x4304d3,null))[_0x42b0('0x43')](respondWithStatusCode(_0x4304d3,null))[_0x42b0('0x45')](handleError(_0x4304d3,null));};exports[_0x42b0('0x61')]=function(_0x1ef8e2,_0x2483df,_0x52bb9a){return db[_0x42b0('0x2e')][_0x42b0('0x54')]({'where':{'id':_0x1ef8e2[_0x42b0('0x47')]['id']}})['then'](function(_0x121ec7){if(_0x121ec7){if(!_0x1ef8e2[_0x42b0('0x34')][_0x42b0('0x55')]||!utils[_0x42b0('0x56')](_0x1ef8e2[_0x42b0('0x34')][_0x42b0('0x55')])){throw new db['Sequelize']['ValidationError'](_0x42b0('0x58'));}return _0x121ec7[_0x42b0('0x62')+_['capitalize'](_0x1ef8e2[_0x42b0('0x34')][_0x42b0('0x55')][_0x42b0('0x5b')]())+_0x42b0('0x5c')](_0x1ef8e2[_0x42b0('0x34')][_0x42b0('0x60')]);}return null;})[_0x42b0('0x43')](handleEntityNotFound(_0x2483df,null))[_0x42b0('0x43')](respondWithStatusCode(_0x2483df,null))[_0x42b0('0x45')](handleError(_0x2483df,null));};exports[_0x42b0('0x63')]=function(_0x21ecaa,_0x298ebd){return db[_0x42b0('0x2e')]['find']({'where':{'id':_0x21ecaa[_0x42b0('0x47')]['id']}})[_0x42b0('0x43')](handleEntityNotFound(_0x298ebd,null))[_0x42b0('0x43')](function(_0x443d49){if(_0x443d49){var _0x2ce891=[_0x42b0('0x64'),_0x42b0('0x65'),'Mail','Sms','Fax',_0x42b0('0x66'),'Whatsapp'];return db['sequelize'][_0x42b0('0x67')](function(_0x494c97){var _0x570bc0=_[_0x42b0('0x33')](_0x2ce891,function(_0x4adfa5){var _0x4e17c0={'attributes':['id',_0x42b0('0x2c')]};if(_0x4adfa5==='Voice'){_0x4e17c0[_0x42b0('0x68')]={'attributes':[_0x42b0('0x69')]};}return _0x443d49['get'+_0x4adfa5+_0x42b0('0x5c')](_0x4e17c0)['then'](function(_0x8e56d5){var _0x1efd45=_[_0x42b0('0x33')](_0x8e56d5,function(_0x53b43f){var _0x47df2d=_[_0x42b0('0x33')](_0x21ecaa[_0x42b0('0x52')][_0x42b0('0x60')],function(_0x3f6b8c){var _0x2d2d43={'where':{'UserId':_0x3f6b8c,[_0x4adfa5+_0x42b0('0x6a')]:_0x53b43f['id']},'transaction':_0x494c97};if(_0x4adfa5===_0x42b0('0x64')){_0x2d2d43[_0x42b0('0x19')]={'penalty':_0x53b43f[_0x42b0('0x6b')]['penalty']};}return db[_0x42b0('0x6c')+_0x4adfa5+_0x42b0('0x59')][_0x42b0('0x6d')](_0x2d2d43)['then'](function(){socket[_0x42b0('0x6e')](_0x42b0('0x4a')+_0x4adfa5+_0x42b0('0x6f'),{'UserId':_0x3f6b8c,[_0x4adfa5+_0x42b0('0x6a')]:_0x53b43f['id']});if(_0x4adfa5!==_0x42b0('0x64'))return;return db[_0x42b0('0x6c')][_0x42b0('0x42')]({'where':{'id':_0x21ecaa[_0x42b0('0x52')][_0x42b0('0x60')],'online':0x1},'attributes':['id',_0x42b0('0x2c'),_0x42b0('0x70'),_0x42b0('0x71'),'interface'],'raw':!![]})[_0x42b0('0x43')](function(_0x22bfa3){var _0x3882cb=_['map'](_0x22bfa3,function(_0x2e41d9){return db[_0x42b0('0x72')][_0x42b0('0x73')]({'membername':_0x2e41d9[_0x42b0('0x2c')],'UserId':_0x2e41d9['id'],'queue_name':_0x53b43f[_0x42b0('0x2c')],'VoiceQueueId':_0x53b43f['id'],'interface':_[_0x42b0('0x74')](_0x2e41d9[_0x42b0('0x75')])?util['format'](_0x42b0('0x76'),_0x2e41d9[_0x42b0('0x2c')]):_0x2e41d9[_0x42b0('0x75')],'paused':_0x2e41d9[_0x42b0('0x71')]||![],'penalty':_0x53b43f[_0x42b0('0x6b')][_0x42b0('0x69')]},{'transaction':_0x494c97});});return Promise[_0x42b0('0x77')](_0x3882cb);});});});return Promise[_0x42b0('0x77')](_0x47df2d);});return Promise['all'](_0x1efd45);});});return Promise[_0x42b0('0x77')](_0x570bc0)[_0x42b0('0x43')](function(){return _0x443d49[_0x42b0('0x63')](_0x21ecaa['body'][_0x42b0('0x60')],{'transaction':_0x494c97})[_0x42b0('0x78')](function(_0x408202){return _0x408202;});});});}})[_0x42b0('0x43')](respondWithResult(_0x298ebd,null))[_0x42b0('0x45')](handleError(_0x298ebd,null));};exports['removeAgents']=function(_0x4fdc11,_0x20389c){return db[_0x42b0('0x2e')][_0x42b0('0x4d')]({'where':{'id':_0x4fdc11[_0x42b0('0x47')]['id']}})[_0x42b0('0x43')](handleEntityNotFound(_0x20389c,null))[_0x42b0('0x43')](function(_0x26260b){if(_0x26260b){var _0x1604d9=[_0x42b0('0x64'),'Chat',_0x42b0('0x79'),_0x42b0('0x7a'),_0x42b0('0x7b'),_0x42b0('0x66'),_0x42b0('0x7c')];return db[_0x42b0('0x7d')][_0x42b0('0x67')](function(_0x23ffda){var _0x48baec=_[_0x42b0('0x33')](_0x1604d9,function(_0x2d23f){var _0x5c4ea7={'attributes':['id',_0x42b0('0x2c')]};return _0x26260b[_0x42b0('0x4b')+_0x2d23f+_0x42b0('0x5c')](_0x5c4ea7)['then'](function(_0x2045c7){var _0xda412f=_[_0x42b0('0x33')](_0x2045c7,function(_0x45c4fa){return _0x45c4fa['removeAgents'](_0x4fdc11[_0x42b0('0x34')][_0x42b0('0x60')],{'transaction':_0x23ffda})[_0x42b0('0x43')](function(){var _0x18a463=JSON[_0x42b0('0x7e')]('['+_0x4fdc11[_0x42b0('0x34')]['ids']+']');var _0x4da217=_[_0x42b0('0x33')](_0x18a463,function(_0x58b7ba){socket['emit'](_0x42b0('0x4a')+_0x2d23f+_0x42b0('0x7f'),{'UserId':Number(_0x58b7ba),[_0x2d23f+_0x42b0('0x6a')]:_0x45c4fa['id']});if(_0x2d23f!==_0x42b0('0x64'))return;return db[_0x42b0('0x72')][_0x42b0('0x53')]({'where':{'VoiceQueueId':_0x45c4fa['id'],'UserId':_0x58b7ba},'transaction':_0x23ffda});});return Promise[_0x42b0('0x77')](_0x4da217);});});return Promise['all'](_0xda412f);});});return Promise['all'](_0x48baec)[_0x42b0('0x43')](function(){return _0x26260b[_0x42b0('0x80')](_0x4fdc11[_0x42b0('0x34')][_0x42b0('0x60')],{'transaction':_0x23ffda});});});}})[_0x42b0('0x43')](respondWithStatusCode(_0x20389c,null))[_0x42b0('0x45')](handleError(_0x20389c,null));};exports['getAgents']=function(_0xc45b09,_0x3ab6ec,_0xd5d977){var _0x5579f4={};var _0x33774e={};var _0x1d2a9e;var _0x212a9a;return db[_0x42b0('0x2e')][_0x42b0('0x54')]({'where':{'id':_0xc45b09[_0x42b0('0x47')]['id']}})[_0x42b0('0x43')](handleEntityNotFound(_0x3ab6ec,null))[_0x42b0('0x43')](function(_0x32911e){if(_0x32911e){_0x1d2a9e=_0x32911e;_0x33774e[_0x42b0('0x32')]=_[_0x42b0('0x35')](db[_0x42b0('0x6c')][_0x42b0('0x48')]);_0x33774e[_0x42b0('0x34')]=_[_0x42b0('0x35')](_0xc45b09[_0x42b0('0x34')]);_0x33774e[_0x42b0('0x36')]=_[_0x42b0('0x37')](_0x33774e[_0x42b0('0x32')],_0x33774e[_0x42b0('0x34')]);_0x5579f4['attributes']=_['intersection'](_0x33774e[_0x42b0('0x32')],qs[_0x42b0('0x39')](_0xc45b09[_0x42b0('0x34')][_0x42b0('0x39')]));_0x5579f4[_0x42b0('0x38')]=_0x5579f4[_0x42b0('0x38')][_0x42b0('0x3a')]?_0x5579f4['attributes']:_0x33774e[_0x42b0('0x32')];_0x5579f4['order']=qs['sort'](_0xc45b09['query'][_0x42b0('0x3c')]);_0x5579f4[_0x42b0('0x3d')]=qs[_0x42b0('0x36')](_[_0x42b0('0x5a')](_0xc45b09[_0x42b0('0x34')],_0x33774e[_0x42b0('0x36')]));if(_0xc45b09[_0x42b0('0x34')][_0x42b0('0x3e')]){_0x5579f4[_0x42b0('0x3d')]=_[_0x42b0('0x3f')](_0x5579f4['where'],{'$or':_[_0x42b0('0x33')](_0x5579f4[_0x42b0('0x38')],function(_0x598a9a){var _0x2d1720={};_0x2d1720[_0x598a9a]={'$like':'%'+_0xc45b09[_0x42b0('0x34')][_0x42b0('0x3e')]+'%'};return _0x2d1720;})});}_0x5579f4=_[_0x42b0('0x3f')]({},_0x5579f4,_0xc45b09['options']);return _0x1d2a9e[_0x42b0('0x81')](_0x5579f4);}})['then'](function(_0xe142fc){if(_0xe142fc){_0x212a9a=_0xe142fc[_0x42b0('0x3a')];if(!_0xc45b09[_0x42b0('0x34')][_0x42b0('0x82')]('nolimit')){_0x5579f4[_0x42b0('0x24')]=qs[_0x42b0('0x24')](_0xc45b09[_0x42b0('0x34')]['limit']);_0x5579f4[_0x42b0('0x22')]=qs[_0x42b0('0x22')](_0xc45b09[_0x42b0('0x34')]['offset']);}return _0x1d2a9e[_0x42b0('0x81')](_0x5579f4);}})[_0x42b0('0x43')](function(_0x525689){if(_0x525689){return _0x525689?{'count':_0x212a9a,'rows':_0x525689}:null;}})[_0x42b0('0x43')](respondWithResult(_0x3ab6ec,null))[_0x42b0('0x45')](handleError(_0x3ab6ec,null));};
\ No newline at end of file
index eae06ee..047b04e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e0=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','events','../../mysqldb','Team'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xf6e0,0xd5));var _0x0f6e=function(_0x2b29d3,_0x5dc631){_0x2b29d3=_0x2b29d3-0x0;var _0x12ef78=_0xf6e0[_0x2b29d3];return _0x12ef78;};'use strict';var EventEmitter=require(_0x0f6e('0x0'));var Team=require(_0x0f6e('0x1'))['db'][_0x0f6e('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x0f6e('0x3')](0x0);var events={'afterCreate':_0x0f6e('0x4'),'afterUpdate':'update','afterDestroy':_0x0f6e('0x5')};function emitEvent(_0x499870){return function(_0x37c731,_0x53836b,_0x1df0f3){TeamEvents['emit'](_0x499870+':'+_0x37c731['id'],_0x37c731);TeamEvents[_0x0f6e('0x6')](_0x499870,_0x37c731);_0x1df0f3(null);};}for(var e in events){if(events[_0x0f6e('0x7')](e)){var event=events[e];Team[_0x0f6e('0x8')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x7b27=['update','remove','emit','events','Team'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x7b27,0xee));var _0x77b2=function(_0x1e0505,_0x2f0620){_0x1e0505=_0x1e0505-0x0;var _0x71a7fc=_0x7b27[_0x1e0505];return _0x71a7fc;};'use strict';var EventEmitter=require(_0x77b2('0x0'));var Team=require('../../mysqldb')['db'][_0x77b2('0x1')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x77b2('0x2'),'afterDestroy':_0x77b2('0x3')};function emitEvent(_0x3e16fa){return function(_0x35badd,_0xa69f8,_0x345725){TeamEvents[_0x77b2('0x4')](_0x3e16fa+':'+_0x35badd['id'],_0x35badd);TeamEvents[_0x77b2('0x4')](_0x3e16fa,_0x35badd);_0x345725(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index a28c9ad..33f3149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf971=['../../config/environment','./team.attributes','exports','define','teams','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf971,0x19d));var _0x1f97=function(_0x29b3b1,_0x651126){_0x29b3b1=_0x29b3b1-0x0;var _0x1b3602=_0xf971[_0x29b3b1];return _0x1b3602;};'use strict';var _=require(_0x1f97('0x0'));var util=require(_0x1f97('0x1'));var logger=require(_0x1f97('0x2'))(_0x1f97('0x3'));var moment=require(_0x1f97('0x4'));var BPromise=require(_0x1f97('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1f97('0x6'));var rimraf=require('rimraf');var config=require(_0x1f97('0x7'));var attributes=require(_0x1f97('0x8'));module[_0x1f97('0x9')]=function(_0x5d216c,_0x577831){return _0x5d216c[_0x1f97('0xa')]('Team',attributes,{'tableName':_0x1f97('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x603b=['define','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./team.attributes'];(function(_0x14444d,_0x558cda){var _0xcd9b00=function(_0xe21660){while(--_0xe21660){_0x14444d['push'](_0x14444d['shift']());}};_0xcd9b00(++_0x558cda);}(_0x603b,0x12a));var _0xb603=function(_0x482d2e,_0x20ef45){_0x482d2e=_0x482d2e-0x0;var _0x3750b3=_0x603b[_0x482d2e];return _0x3750b3;};'use strict';var _=require('lodash');var util=require(_0xb603('0x0'));var logger=require('../../config/logger')(_0xb603('0x1'));var moment=require(_0xb603('0x2'));var BPromise=require(_0xb603('0x3'));var rp=require(_0xb603('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb603('0x5'));var config=require(_0xb603('0x6'));var attributes=require(_0xb603('0x7'));module['exports']=function(_0x439912,_0x4abc35){return _0x439912[_0xb603('0x8')]('Team',attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44644f6..71ee248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d0c=['redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9d0c,0xb9));var _0xc9d0=function(_0x25a19a,_0x536079){_0x25a19a=_0x25a19a-0x0;var _0x9d8a38=_0x9d0c[_0x25a19a];return _0x9d8a38;};'use strict';var _=require(_0xc9d0('0x0'));var util=require(_0xc9d0('0x1'));var moment=require(_0xc9d0('0x2'));var BPromise=require(_0xc9d0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc9d0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc9d0('0x5'));var logger=require(_0xc9d0('0x6'))(_0xc9d0('0x7'));var config=require(_0xc9d0('0x8'));var jayson=require(_0xc9d0('0x9'));var client=jayson['client'][_0xc9d0('0xa')]({'port':0x232a});config[_0xc9d0('0xb')]=_[_0xc9d0('0xc')](config[_0xc9d0('0xb')],{'host':_0xc9d0('0xd'),'port':0x18eb});var socket=require(_0xc9d0('0xe'))(new Redis(config[_0xc9d0('0xb')]));require(_0xc9d0('0xf'))[_0xc9d0('0x10')](socket);function respondWithRpcPromise(_0x46502f,_0x30ec67,_0x100481){return new BPromise(function(_0x3f6c46,_0x1b55c7){return client[_0xc9d0('0x11')](_0x46502f,_0x100481)[_0xc9d0('0x12')](function(_0x1e0821){logger[_0xc9d0('0x13')](_0xc9d0('0x14'),_0x30ec67,_0xc9d0('0x15'));logger[_0xc9d0('0x16')](_0xc9d0('0x17'),_0x30ec67,_0xc9d0('0x15'),JSON['stringify'](_0x1e0821));if(_0x1e0821['error']){if(_0x1e0821[_0xc9d0('0x18')][_0xc9d0('0x19')]===0x1f4){logger[_0xc9d0('0x18')](_0xc9d0('0x14'),_0x30ec67,_0x1e0821[_0xc9d0('0x18')][_0xc9d0('0x1a')]);return _0x1b55c7(_0x1e0821[_0xc9d0('0x18')][_0xc9d0('0x1a')]);}logger[_0xc9d0('0x18')](_0xc9d0('0x14'),_0x30ec67,_0x1e0821[_0xc9d0('0x18')][_0xc9d0('0x1a')]);return _0x3f6c46(_0x1e0821[_0xc9d0('0x18')][_0xc9d0('0x1a')]);}else{logger['info'](_0xc9d0('0x14'),_0x30ec67,'request\x20sent');_0x3f6c46(_0x1e0821['result'][_0xc9d0('0x1a')]);}})[_0xc9d0('0x1b')](function(_0x4c439c){logger[_0xc9d0('0x18')](_0xc9d0('0x14'),_0x30ec67,_0x4c439c);_0x1b55c7(_0x4c439c);});});}
\ No newline at end of file
+var _0xf6f0=['error','code','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./team.socket','register','then','Team,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x5c7c31,_0x22aa86){var _0x193fdf=function(_0x271ade){while(--_0x271ade){_0x5c7c31['push'](_0x5c7c31['shift']());}};_0x193fdf(++_0x22aa86);}(_0xf6f0,0x157));var _0x0f6f=function(_0x4a2707,_0x56a7aa){_0x4a2707=_0x4a2707-0x0;var _0x2eb468=_0xf6f0[_0x4a2707];return _0x2eb468;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0f6f('0x0'));var rs=require(_0x0f6f('0x1'));var fs=require('fs');var Redis=require(_0x0f6f('0x2'));var db=require(_0x0f6f('0x3'))['db'];var utils=require(_0x0f6f('0x4'));var logger=require(_0x0f6f('0x5'))(_0x0f6f('0x6'));var config=require(_0x0f6f('0x7'));var jayson=require(_0x0f6f('0x8'));var client=jayson[_0x0f6f('0x9')][_0x0f6f('0xa')]({'port':0x232a});config[_0x0f6f('0xb')]=_[_0x0f6f('0xc')](config[_0x0f6f('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0f6f('0xd'))(new Redis(config[_0x0f6f('0xb')]));require(_0x0f6f('0xe'))[_0x0f6f('0xf')](socket);function respondWithRpcPromise(_0x278e2c,_0x4a40a0,_0x37ae12){return new BPromise(function(_0x54b080,_0xbc5417){return client['request'](_0x278e2c,_0x37ae12)[_0x0f6f('0x10')](function(_0x3f6526){logger['info'](_0x0f6f('0x11'),_0x4a40a0,_0x0f6f('0x12'));logger[_0x0f6f('0x13')]('Team,\x20%s,\x20%s,\x20%s',_0x4a40a0,_0x0f6f('0x12'),JSON[_0x0f6f('0x14')](_0x3f6526));if(_0x3f6526[_0x0f6f('0x15')]){if(_0x3f6526['error'][_0x0f6f('0x16')]===0x1f4){logger[_0x0f6f('0x15')](_0x0f6f('0x11'),_0x4a40a0,_0x3f6526[_0x0f6f('0x15')][_0x0f6f('0x17')]);return _0xbc5417(_0x3f6526[_0x0f6f('0x15')][_0x0f6f('0x17')]);}logger[_0x0f6f('0x15')]('Team,\x20%s,\x20%s',_0x4a40a0,_0x3f6526[_0x0f6f('0x15')][_0x0f6f('0x17')]);return _0x54b080(_0x3f6526[_0x0f6f('0x15')][_0x0f6f('0x17')]);}else{logger['info'](_0x0f6f('0x11'),_0x4a40a0,_0x0f6f('0x12'));_0x54b080(_0x3f6526[_0x0f6f('0x18')][_0x0f6f('0x17')]);}})[_0x0f6f('0x19')](function(_0x48bdc6){logger['error'](_0x0f6f('0x11'),_0x4a40a0,_0x48bdc6);_0xbc5417(_0x48bdc6);});});}
\ No newline at end of file
index 732c8b4..65a2f33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56c6=['remove','update','emit','register','team:','./team.events','save'];(function(_0x10b401,_0x291733){var _0x159c61=function(_0x382859){while(--_0x382859){_0x10b401['push'](_0x10b401['shift']());}};_0x159c61(++_0x291733);}(_0x56c6,0x116));var _0x656c=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x56c6[_0x3b0731];return _0x4204d7;};'use strict';var TeamEvents=require(_0x656c('0x0'));var events=[_0x656c('0x1'),_0x656c('0x2'),_0x656c('0x3')];function createListener(_0x32d50e,_0x52a5e4){return function(_0x31cd9a){_0x52a5e4[_0x656c('0x4')](_0x32d50e,_0x31cd9a);};}function removeListener(_0x3d35cb,_0x3adc5b){return function(){TeamEvents['removeListener'](_0x3d35cb,_0x3adc5b);};}exports[_0x656c('0x5')]=function(_0x4f3d10){for(var _0x298c81=0x0,_0x556cba=events['length'];_0x298c81<_0x556cba;_0x298c81++){var _0x131ec4=events[_0x298c81];var _0x5a1558=createListener(_0x656c('0x6')+_0x131ec4,_0x4f3d10);TeamEvents['on'](_0x131ec4,_0x5a1558);}};
\ No newline at end of file
+var _0xd11e=['update','emit','removeListener','register','length','team:','save','remove'];(function(_0x4aaf41,_0x47d28e){var _0x532133=function(_0x1bac03){while(--_0x1bac03){_0x4aaf41['push'](_0x4aaf41['shift']());}};_0x532133(++_0x47d28e);}(_0xd11e,0xe6));var _0xed11=function(_0x431cf2,_0x1d4456){_0x431cf2=_0x431cf2-0x0;var _0x10c9a7=_0xd11e[_0x431cf2];return _0x10c9a7;};'use strict';var TeamEvents=require('./team.events');var events=[_0xed11('0x0'),_0xed11('0x1'),_0xed11('0x2')];function createListener(_0x62d9b2,_0x2cc134){return function(_0x268785){_0x2cc134[_0xed11('0x3')](_0x62d9b2,_0x268785);};}function removeListener(_0x592408,_0x29db1f){return function(){TeamEvents[_0xed11('0x4')](_0x592408,_0x29db1f);};}exports[_0xed11('0x5')]=function(_0x1f83c7){for(var _0x4d9735=0x0,_0x1e2b9e=events[_0xed11('0x6')];_0x4d9735<_0x1e2b9e;_0x4d9735++){var _0x1160f1=events[_0x4d9735];var _0x7d1bd7=createListener(_0xed11('0x7')+_0x1160f1,_0x1f83c7);TeamEvents['on'](_0x1160f1,_0x7d1bd7);}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
deleted file mode 100644 (file)
index e56b5e6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x18a6=['INTEGER'];(function(_0x4cefbc,_0x3ffa6c){var _0x423c86=function(_0x3554eb){while(--_0x3554eb){_0x4cefbc['push'](_0x4cefbc['shift']());}};_0x423c86(++_0x3ffa6c);}(_0x18a6,0x190));var _0x618a=function(_0x5ca58b,_0x1eb5d7){_0x5ca58b=_0x5ca58b-0x0;var _0x2510ef=_0x18a6[_0x5ca58b];return _0x2510ef;};'use strict';var Sequelize=require('sequelize');module['exports']={'TeamId':{'type':Sequelize[_0x618a('0x0')]},'VoicePrefixId':{'type':Sequelize[_0x618a('0x0')]}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js
deleted file mode 100644 (file)
index 2811725..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x92d7=['team_has_voice_prefixes','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix'];(function(_0x27389d,_0x3d7cdb){var _0x1a4c09=function(_0x4eba94){while(--_0x4eba94){_0x27389d['push'](_0x27389d['shift']());}};_0x1a4c09(++_0x3d7cdb);}(_0x92d7,0x17b));var _0x792d=function(_0x543e26,_0x4f952c){_0x543e26=_0x543e26-0x0;var _0x4e1688=_0x92d7[_0x543e26];return _0x4e1688;};'use strict';var _=require(_0x792d('0x0'));var util=require('util');var logger=require(_0x792d('0x1'))(_0x792d('0x2'));var moment=require(_0x792d('0x3'));var BPromise=require(_0x792d('0x4'));var rp=require(_0x792d('0x5'));var fs=require('fs');var path=require(_0x792d('0x6'));var rimraf=require(_0x792d('0x7'));var config=require(_0x792d('0x8'));var attributes=require(_0x792d('0x9'));module[_0x792d('0xa')]=function(_0x54374f,_0x3e95c4){return _0x54374f[_0x792d('0xb')](_0x792d('0xc'),attributes,{'tableName':_0x792d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dff614c..0547ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x2a94cf,_0x2b970d){var _0x22147f=function(_0xfc71ab){while(--_0xfc71ab){_0x2a94cf['push'](_0x2a94cf['shift']());}};_0x22147f(++_0x2b970d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x835cb7,_0x1e574d){var _0x3ef599=function(_0x2874f2){while(--_0x2874f2){_0x835cb7['push'](_0x835cb7['shift']());}};_0x3ef599(++_0x1e574d);}(_0x9c44,0x178));var _0x49c4=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x9c44[_0x1694f5];return _0x5b4321;};'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
index 1ef27f1..51640a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d3=['INTEGER','sequelize','exports'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xd6d3,0x133));var _0x3d6d=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xd6d3[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x3d6d('0x0'));module[_0x3d6d('0x1')]={'penalty':{'type':Sequelize[_0x3d6d('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8bce=['sequelize','exports','INTEGER'];(function(_0x20f51d,_0x446877){var _0x5b640b=function(_0x2f7caa){while(--_0x2f7caa){_0x20f51d['push'](_0x20f51d['shift']());}};_0x5b640b(++_0x446877);}(_0x8bce,0x1d1));var _0xe8bc=function(_0x35f3cb,_0x114509){_0x35f3cb=_0x35f3cb-0x0;var _0x543d85=_0x8bce[_0x35f3cb];return _0x543d85;};'use strict';var Sequelize=require(_0xe8bc('0x0'));module[_0xe8bc('0x1')]={'penalty':{'type':Sequelize[_0xe8bc('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 55939bf..a9605dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d9=['./teamVoiceQueue.attributes','define','team_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x55e142,_0x5d9b2b){var _0x208c77=function(_0x3665e5){while(--_0x3665e5){_0x55e142['push'](_0x55e142['shift']());}};_0x208c77(++_0x5d9b2b);}(_0xf4d9,0x7c));var _0x9f4d=function(_0x43c7bb,_0x40eba9){_0x43c7bb=_0x43c7bb-0x0;var _0x1533d3=_0xf4d9[_0x43c7bb];return _0x1533d3;};'use strict';var _=require(_0x9f4d('0x0'));var util=require('util');var logger=require(_0x9f4d('0x1'))(_0x9f4d('0x2'));var moment=require(_0x9f4d('0x3'));var BPromise=require(_0x9f4d('0x4'));var rp=require(_0x9f4d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9f4d('0x6'));var config=require(_0x9f4d('0x7'));var attributes=require(_0x9f4d('0x8'));module['exports']=function(_0x191f1c,_0x370059){return _0x191f1c[_0x9f4d('0x9')]('TeamVoiceQueue',attributes,{'tableName':_0x9f4d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x207c=['api','moment','bluebird','request-promise','path','../../config/environment','define','TeamVoiceQueue','util','../../config/logger'];(function(_0x4b4d13,_0x50d646){var _0x3115be=function(_0x19e903){while(--_0x19e903){_0x4b4d13['push'](_0x4b4d13['shift']());}};_0x3115be(++_0x50d646);}(_0x207c,0x1e8));var _0xc207=function(_0x4b6778,_0x505a76){_0x4b6778=_0x4b6778-0x0;var _0x22dbb9=_0x207c[_0x4b6778];return _0x22dbb9;};'use strict';var _=require('lodash');var util=require(_0xc207('0x0'));var logger=require(_0xc207('0x1'))(_0xc207('0x2'));var moment=require(_0xc207('0x3'));var BPromise=require(_0xc207('0x4'));var rp=require(_0xc207('0x5'));var fs=require('fs');var path=require(_0xc207('0x6'));var rimraf=require('rimraf');var config=require(_0xc207('0x7'));var attributes=require('./teamVoiceQueue.attributes');module['exports']=function(_0x55023e,_0xc88789){return _0x55023e[_0xc207('0x8')](_0xc207('0x9'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44eab60..2947a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb846=['stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x33fd03,_0x1fb6e7){var _0x3b27a5=function(_0x137201){while(--_0x137201){_0x33fd03['push'](_0x33fd03['shift']());}};_0x3b27a5(++_0x1fb6e7);}(_0xb846,0x15a));var _0x6b84=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xb846[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x6b84('0x0'));var util=require(_0x6b84('0x1'));var moment=require(_0x6b84('0x2'));var BPromise=require(_0x6b84('0x3'));var rs=require(_0x6b84('0x4'));var fs=require('fs');var Redis=require(_0x6b84('0x5'));var db=require(_0x6b84('0x6'))['db'];var utils=require(_0x6b84('0x7'));var logger=require(_0x6b84('0x8'))(_0x6b84('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5b9149,_0x2f2e43,_0x540d81){return new BPromise(function(_0xdfb541,_0x5a8f01){return client[_0x6b84('0xa')](_0x5b9149,_0x540d81)[_0x6b84('0xb')](function(_0x3b23be){logger['info'](_0x6b84('0xc'),_0x2f2e43,_0x6b84('0xd'));logger[_0x6b84('0xe')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x2f2e43,'request\x20sent',JSON[_0x6b84('0xf')](_0x3b23be));if(_0x3b23be[_0x6b84('0x10')]){if(_0x3b23be[_0x6b84('0x10')][_0x6b84('0x11')]===0x1f4){logger[_0x6b84('0x10')](_0x6b84('0xc'),_0x2f2e43,_0x3b23be['error'][_0x6b84('0x12')]);return _0x5a8f01(_0x3b23be[_0x6b84('0x10')][_0x6b84('0x12')]);}logger[_0x6b84('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2f2e43,_0x3b23be[_0x6b84('0x10')][_0x6b84('0x12')]);return _0xdfb541(_0x3b23be['error'][_0x6b84('0x12')]);}else{logger['info'](_0x6b84('0xc'),_0x2f2e43,_0x6b84('0xd'));_0xdfb541(_0x3b23be['result'][_0x6b84('0x12')]);}})['catch'](function(_0x547873){logger[_0x6b84('0x10')](_0x6b84('0xc'),_0x2f2e43,_0x547873);_0x5a8f01(_0x547873);});});}
\ No newline at end of file
+var _0x6cbf=['result','catch','lodash','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0xda5cb0,_0x7b29e7){var _0x27c4f5=function(_0x3ccfa0){while(--_0x3ccfa0){_0xda5cb0['push'](_0xda5cb0['shift']());}};_0x27c4f5(++_0x7b29e7);}(_0x6cbf,0x122));var _0xf6cb=function(_0x2d23f1,_0x19c0f4){_0x2d23f1=_0x2d23f1-0x0;var _0x54b7f4=_0x6cbf[_0x2d23f1];return _0x54b7f4;};'use strict';var _=require(_0xf6cb('0x0'));var util=require('util');var moment=require(_0xf6cb('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf6cb('0x2'));var db=require(_0xf6cb('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf6cb('0x4'))(_0xf6cb('0x5'));var config=require(_0xf6cb('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf6cb('0x7')][_0xf6cb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xc5bde1,_0x5ab9e2,_0x39ba5e){return new BPromise(function(_0x27cc2d,_0xb73a29){return client['request'](_0xc5bde1,_0x39ba5e)['then'](function(_0x4ab999){logger[_0xf6cb('0x9')](_0xf6cb('0xa'),_0x5ab9e2,_0xf6cb('0xb'));logger['debug']('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x5ab9e2,_0xf6cb('0xb'),JSON[_0xf6cb('0xc')](_0x4ab999));if(_0x4ab999[_0xf6cb('0xd')]){if(_0x4ab999[_0xf6cb('0xd')][_0xf6cb('0xe')]===0x1f4){logger['error'](_0xf6cb('0xa'),_0x5ab9e2,_0x4ab999[_0xf6cb('0xd')][_0xf6cb('0xf')]);return _0xb73a29(_0x4ab999[_0xf6cb('0xd')]['message']);}logger[_0xf6cb('0xd')](_0xf6cb('0xa'),_0x5ab9e2,_0x4ab999[_0xf6cb('0xd')][_0xf6cb('0xf')]);return _0x27cc2d(_0x4ab999[_0xf6cb('0xd')][_0xf6cb('0xf')]);}else{logger[_0xf6cb('0x9')](_0xf6cb('0xa'),_0x5ab9e2,'request\x20sent');_0x27cc2d(_0x4ab999[_0xf6cb('0x10')]['message']);}})[_0xf6cb('0x11')](function(_0x1f3978){logger[_0xf6cb('0xd')](_0xf6cb('0xa'),_0x5ab9e2,_0x1f3978);_0xb73a29(_0x1f3978);});});}
\ No newline at end of file
index cd6afd4..9f2ca7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['index','/:id','isAuthenticated','show','create','update','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','get'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xacf4,0xe7));var _0x4acf=function(_0x371ad4,_0x4e23f0){_0x371ad4=_0x371ad4-0x0;var _0x796c0b=_0xacf4[_0x371ad4];return _0x796c0b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4acf('0x0'));var timeout=require(_0x4acf('0x1'));var express=require(_0x4acf('0x2'));var router=express[_0x4acf('0x3')]();var fs_extra=require(_0x4acf('0x4'));var auth=require(_0x4acf('0x5'));var interaction=require(_0x4acf('0x6'));var config=require('../../config/environment');var controller=require(_0x4acf('0x7'));router[_0x4acf('0x8')]('/',auth['isAuthenticated'](),controller[_0x4acf('0x9')]);router[_0x4acf('0x8')](_0x4acf('0xa'),auth[_0x4acf('0xb')](),controller[_0x4acf('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4acf('0xd')]);router['put'](_0x4acf('0xa'),auth[_0x4acf('0xb')](),controller[_0x4acf('0xe')]);router['delete'](_0x4acf('0xa'),auth[_0x4acf('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1c3d=['index','/:id','post','create','put','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated'];(function(_0x2ab4bd,_0x305c1b){var _0x234c49=function(_0x38c9d0){while(--_0x38c9d0){_0x2ab4bd['push'](_0x2ab4bd['shift']());}};_0x234c49(++_0x305c1b);}(_0x1c3d,0x1b8));var _0xd1c3=function(_0x505b91,_0x39c1a7){_0x505b91=_0x505b91-0x0;var _0x2072bc=_0x1c3d[_0x505b91];return _0x2072bc;};'use strict';var multer=require('multer');var util=require(_0xd1c3('0x0'));var path=require(_0xd1c3('0x1'));var timeout=require(_0xd1c3('0x2'));var express=require(_0xd1c3('0x3'));var router=express[_0xd1c3('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd1c3('0x5'));var config=require(_0xd1c3('0x6'));var controller=require(_0xd1c3('0x7'));router[_0xd1c3('0x8')]('/',auth[_0xd1c3('0x9')](),controller[_0xd1c3('0xa')]);router['get'](_0xd1c3('0xb'),auth[_0xd1c3('0x9')](),controller['show']);router[_0xd1c3('0xc')]('/',auth[_0xd1c3('0x9')](),controller[_0xd1c3('0xd')]);router[_0xd1c3('0xe')](_0xd1c3('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xd1c3('0xf')](_0xd1c3('0xb'),auth[_0xd1c3('0x9')](),controller[_0xd1c3('0x10')]);module[_0xd1c3('0x11')]=router;
\ No newline at end of file
index 1356557..202e683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda8b=['exports','STRING','TEXT'];(function(_0x4e231f,_0x315a9e){var _0x43a501=function(_0x58bdbb){while(--_0x58bdbb){_0x4e231f['push'](_0x4e231f['shift']());}};_0x43a501(++_0x315a9e);}(_0xda8b,0x1cb));var _0xbda8=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xda8b[_0x42245d];return _0x4b211a;};'use strict';var Sequelize=require('sequelize');module[_0xbda8('0x0')]={'name':{'type':Sequelize[_0xbda8('0x1')]},'description':{'type':Sequelize[_0xbda8('0x1')]},'html':{'type':Sequelize[_0xbda8('0x2')]}};
\ No newline at end of file
+var _0x53d3=['exports','STRING','TEXT','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53d3,0x14f));var _0x353d=function(_0x108e41,_0x2f8170){_0x108e41=_0x108e41-0x0;var _0x5069ec=_0x53d3[_0x108e41];return _0x5069ec;};'use strict';var Sequelize=require(_0x353d('0x0'));module[_0x353d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x353d('0x2')]},'html':{'type':Sequelize[_0x353d('0x3')]}};
\ No newline at end of file
index 783a858..55a31b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5926=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','destroy','then','get','Templates','error','stack','name','index','map','Template','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','catch','show','params','includeAll','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0xbeb808,_0x881ddf){var _0x5d6909=function(_0x37d652){while(--_0x37d652){_0xbeb808['push'](_0xbeb808['shift']());}};_0x5d6909(++_0x881ddf);}(_0x5926,0x87));var _0x6592=function(_0x29bbce,_0x50494a){_0x29bbce=_0x29bbce-0x0;var _0x51ae06=_0x5926[_0x29bbce];return _0x51ae06;};'use strict';var emlformat=require(_0x6592('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6592('0x1'));var jsonpatch=require(_0x6592('0x2'));var rp=require('request-promise');var moment=require(_0x6592('0x3'));var BPromise=require(_0x6592('0x4'));var Mustache=require(_0x6592('0x5'));var util=require('util');var path=require(_0x6592('0x6'));var sox=require(_0x6592('0x7'));var csv=require(_0x6592('0x8'));var ejs=require(_0x6592('0x9'));var fs=require('fs');var fs_extra=require(_0x6592('0xa'));var _=require(_0x6592('0xb'));var squel=require(_0x6592('0xc'));var crypto=require(_0x6592('0xd'));var jsforce=require(_0x6592('0xe'));var deskjs=require(_0x6592('0xf'));var toCsv=require(_0x6592('0x8'));var querystring=require(_0x6592('0x10'));var Papa=require(_0x6592('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6592('0x12'));var as=require(_0x6592('0x13'));var hardwareService=require(_0x6592('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x6592('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6592('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16e5f7,_0x2643f2){_0x2643f2=_0x2643f2||0xcc;return function(_0x3d713d){if(_0x3d713d){return _0x16e5f7['sendStatus'](_0x2643f2);}return _0x16e5f7[_0x6592('0x17')](_0x2643f2)[_0x6592('0x18')]();};}function respondWithResult(_0x50e0f1,_0x57fdcf){_0x57fdcf=_0x57fdcf||0xc8;return function(_0x444c67){if(_0x444c67){return _0x50e0f1[_0x6592('0x17')](_0x57fdcf)[_0x6592('0x19')](_0x444c67);}};}function respondWithFilteredResult(_0x581437,_0x273d3){return function(_0x9e0bdd){if(_0x9e0bdd){var _0x212307=typeof _0x273d3[_0x6592('0x1a')]===_0x6592('0x1b')&&typeof _0x273d3[_0x6592('0x1c')]===_0x6592('0x1b');var _0x3c6a34=_0x9e0bdd['count'];var _0x2eb1ed=_0x212307?0x0:_0x273d3[_0x6592('0x1a')];var _0x481db3=_0x212307?_0x9e0bdd[_0x6592('0x1d')]:_0x273d3[_0x6592('0x1a')]+_0x273d3[_0x6592('0x1c')];var _0x285a51;if(_0x481db3>=_0x3c6a34){_0x481db3=_0x3c6a34;_0x285a51=0xc8;}else{_0x285a51=0xce;}_0x581437[_0x6592('0x17')](_0x285a51);return _0x581437['set'](_0x6592('0x1e'),_0x2eb1ed+'-'+_0x481db3+'/'+_0x3c6a34)[_0x6592('0x19')](_0x9e0bdd);}return null;};}function patchUpdates(_0x4059e5){return function(_0x643911){try{jsonpatch['apply'](_0x643911,_0x4059e5,!![]);}catch(_0x284e42){return BPromise[_0x6592('0x1f')](_0x284e42);}return _0x643911[_0x6592('0x20')]();};}function saveUpdates(_0x471745,_0x601f41){return function(_0x40d0a2){if(_0x40d0a2){return _0x40d0a2['update'](_0x471745)['then'](function(_0x3ad6b4){return _0x3ad6b4;});}return null;};}function removeEntity(_0x10031c,_0x3b9329){return function(_0x73ca9f){if(_0x73ca9f){return _0x73ca9f[_0x6592('0x21')]()[_0x6592('0x22')](function(){var _0x5ec694=_0x73ca9f[_0x6592('0x23')]({'plain':!![]});var _0x3e5ff1=_0x6592('0x24');return db['UserProfileResource'][_0x6592('0x21')]({'where':{'type':_0x3e5ff1,'resourceId':_0x5ec694['id']}})[_0x6592('0x22')](function(){return _0x73ca9f;});})[_0x6592('0x22')](function(){_0x10031c[_0x6592('0x17')](0xcc)[_0x6592('0x18')]();});}};}function handleEntityNotFound(_0x183f5b,_0x4609b0){return function(_0x37cfe7){if(!_0x37cfe7){_0x183f5b['sendStatus'](0x194);}return _0x37cfe7;};}function handleError(_0x2a5dae,_0x580f74){_0x580f74=_0x580f74||0x1f4;return function(_0x2a997b){logger[_0x6592('0x25')](_0x2a997b[_0x6592('0x26')]);if(_0x2a997b[_0x6592('0x27')]){delete _0x2a997b[_0x6592('0x27')];}_0x2a5dae[_0x6592('0x17')](_0x580f74)['send'](_0x2a997b);};}exports[_0x6592('0x28')]=function(_0x3ce998,_0x509ac7){var _0x44872c={},_0x1d32ac={},_0x422c94={'count':0x0,'rows':[]};var _0x29170f=_[_0x6592('0x29')](db[_0x6592('0x2a')]['rawAttributes'],function(_0x4ccc3a){return{'name':_0x4ccc3a['fieldName'],'type':_0x4ccc3a[_0x6592('0x2b')][_0x6592('0x2c')]};});_0x1d32ac[_0x6592('0x2d')]=_[_0x6592('0x29')](_0x29170f,'name');_0x1d32ac[_0x6592('0x2e')]=_[_0x6592('0x2f')](_0x3ce998['query']);_0x1d32ac[_0x6592('0x30')]=_[_0x6592('0x31')](_0x1d32ac[_0x6592('0x2d')],_0x1d32ac[_0x6592('0x2e')]);_0x44872c[_0x6592('0x32')]=_['intersection'](_0x1d32ac[_0x6592('0x2d')],qs[_0x6592('0x33')](_0x3ce998[_0x6592('0x2e')]['fields']));_0x44872c[_0x6592('0x32')]=_0x44872c['attributes'][_0x6592('0x34')]?_0x44872c['attributes']:_0x1d32ac[_0x6592('0x2d')];if(!_0x3ce998['query'][_0x6592('0x35')](_0x6592('0x36'))){_0x44872c['limit']=qs[_0x6592('0x1c')](_0x3ce998['query'][_0x6592('0x1c')]);_0x44872c[_0x6592('0x1a')]=qs[_0x6592('0x1a')](_0x3ce998[_0x6592('0x2e')]['offset']);}_0x44872c['order']=qs[_0x6592('0x37')](_0x3ce998[_0x6592('0x2e')]['sort']);_0x44872c[_0x6592('0x38')]=qs['filters'](_[_0x6592('0x39')](_0x3ce998[_0x6592('0x2e')],_0x1d32ac[_0x6592('0x30')]),_0x29170f);if(_0x3ce998[_0x6592('0x2e')][_0x6592('0x3a')]){_0x44872c[_0x6592('0x38')]=_[_0x6592('0x3b')](_0x44872c[_0x6592('0x38')],{'$or':_[_0x6592('0x29')](_0x29170f,function(_0xc4a2a6){if(_0xc4a2a6[_0x6592('0x2b')]!==_0x6592('0x3c')){var _0x57f0f9={};_0x57f0f9[_0xc4a2a6[_0x6592('0x27')]]={'$like':'%'+_0x3ce998[_0x6592('0x2e')]['filter']+'%'};return _0x57f0f9;}})});}_0x44872c=_['merge']({},_0x44872c,_0x3ce998[_0x6592('0x3d')]);var _0x577f1f={'where':_0x44872c['where']};return db[_0x6592('0x2a')][_0x6592('0x1d')](_0x577f1f)[_0x6592('0x22')](function(_0x44e8ae){_0x422c94[_0x6592('0x1d')]=_0x44e8ae;if(_0x3ce998[_0x6592('0x2e')]['includeAll']){_0x44872c['include']=[{'all':!![]}];}return db['Template']['findAll'](_0x44872c);})[_0x6592('0x22')](function(_0x29e6ad){_0x422c94['rows']=_0x29e6ad;return _0x422c94;})[_0x6592('0x22')](respondWithFilteredResult(_0x509ac7,_0x44872c))[_0x6592('0x3e')](handleError(_0x509ac7,null));};exports[_0x6592('0x3f')]=function(_0x5a4eec,_0x4b547c){var _0x20ab44={'raw':!![],'where':{'id':_0x5a4eec[_0x6592('0x40')]['id']}},_0x3aa740={};_0x3aa740['model']=_[_0x6592('0x2f')](db[_0x6592('0x2a')]['rawAttributes']);_0x3aa740[_0x6592('0x2e')]=_[_0x6592('0x2f')](_0x5a4eec[_0x6592('0x2e')]);_0x3aa740['filters']=_[_0x6592('0x31')](_0x3aa740[_0x6592('0x2d')],_0x3aa740[_0x6592('0x2e')]);_0x20ab44[_0x6592('0x32')]=_[_0x6592('0x31')](_0x3aa740['model'],qs[_0x6592('0x33')](_0x5a4eec['query'][_0x6592('0x33')]));_0x20ab44['attributes']=_0x20ab44[_0x6592('0x32')]['length']?_0x20ab44[_0x6592('0x32')]:_0x3aa740[_0x6592('0x2d')];if(_0x5a4eec[_0x6592('0x2e')][_0x6592('0x41')]){_0x20ab44[_0x6592('0x42')]=[{'all':!![]}];}_0x20ab44=_[_0x6592('0x3b')]({},_0x20ab44,_0x5a4eec[_0x6592('0x3d')]);return db['Template'][_0x6592('0x43')](_0x20ab44)[_0x6592('0x22')](handleEntityNotFound(_0x4b547c,null))[_0x6592('0x22')](respondWithResult(_0x4b547c,null))['catch'](handleError(_0x4b547c,null));};exports[_0x6592('0x44')]=function(_0x5d2f97,_0x532567){return db[_0x6592('0x2a')][_0x6592('0x44')](_0x5d2f97[_0x6592('0x45')],{})[_0x6592('0x22')](function(_0x4384cb){var _0xec1889=_0x5d2f97[_0x6592('0x46')][_0x6592('0x23')]({'plain':!![]});if(!_0xec1889)throw new Error(_0x6592('0x47'));if(_0xec1889[_0x6592('0x48')]===_0x6592('0x46')){var _0x3060de=_0x4384cb[_0x6592('0x23')]({'plain':!![]});var _0x1d88e1='Templates';return db['UserProfileSection'][_0x6592('0x43')]({'where':{'name':_0x1d88e1,'userProfileId':_0xec1889[_0x6592('0x49')]},'raw':!![]})['then'](function(_0x2f028a){if(_0x2f028a&&_0x2f028a[_0x6592('0x4a')]===0x0){return db['UserProfileResource'][_0x6592('0x44')]({'name':_0x3060de[_0x6592('0x27')],'resourceId':_0x3060de['id'],'type':_0x2f028a[_0x6592('0x27')],'sectionId':_0x2f028a['id']},{})['then'](function(){return _0x4384cb;});}else{return _0x4384cb;}})[_0x6592('0x3e')](function(_0x1c3f33){logger[_0x6592('0x25')](_0x6592('0x4b'),_0x1c3f33);throw _0x1c3f33;});}return _0x4384cb;})['then'](respondWithResult(_0x532567,0xc9))[_0x6592('0x3e')](handleError(_0x532567,null));};exports['update']=function(_0x209d7e,_0x158602){if(_0x209d7e[_0x6592('0x45')]['id']){delete _0x209d7e[_0x6592('0x45')]['id'];}return db[_0x6592('0x2a')][_0x6592('0x43')]({'where':{'id':_0x209d7e['params']['id']}})[_0x6592('0x22')](handleEntityNotFound(_0x158602,null))['then'](saveUpdates(_0x209d7e[_0x6592('0x45')],null))[_0x6592('0x22')](respondWithResult(_0x158602,null))[_0x6592('0x3e')](handleError(_0x158602,null));};exports[_0x6592('0x21')]=function(_0x2c0325,_0xaaa5a0){return db[_0x6592('0x2a')][_0x6592('0x43')]({'where':{'id':_0x2c0325[_0x6592('0x40')]['id']}})[_0x6592('0x22')](handleEntityNotFound(_0xaaa5a0,null))['then'](removeEntity(_0xaaa5a0,null))['catch'](handleError(_0xaaa5a0,null));};
\ No newline at end of file
+var _0xa786=['lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','Templates','UserProfileResource','error','stack','name','send','map','Template','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','includeAll','findAll','rows','catch','params','include','options','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','eml-format','rimraf','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra'];(function(_0x441014,_0x222e94){var _0x174974=function(_0x441c6f){while(--_0x441c6f){_0x441014['push'](_0x441014['shift']());}};_0x174974(++_0x222e94);}(_0xa786,0x136));var _0x6a78=function(_0x4e67fc,_0x20078d){_0x4e67fc=_0x4e67fc-0x0;var _0x166524=_0xa786[_0x4e67fc];return _0x166524;};'use strict';var emlformat=require(_0x6a78('0x0'));var rimraf=require(_0x6a78('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6a78('0x2'));var rp=require('request-promise');var moment=require(_0x6a78('0x3'));var BPromise=require(_0x6a78('0x4'));var Mustache=require('mustache');var util=require(_0x6a78('0x5'));var path=require('path');var sox=require(_0x6a78('0x6'));var csv=require(_0x6a78('0x7'));var ejs=require(_0x6a78('0x8'));var fs=require('fs');var fs_extra=require(_0x6a78('0x9'));var _=require(_0x6a78('0xa'));var squel=require(_0x6a78('0xb'));var crypto=require(_0x6a78('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6a78('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6a78('0xe'));var Papa=require(_0x6a78('0xf'));var Redis=require(_0x6a78('0x10'));var authService=require(_0x6a78('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6a78('0x12'))(_0x6a78('0x13'));var utils=require('../../config/utils');var config=require(_0x6a78('0x14'));var licenseUtil=require(_0x6a78('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x229ee1,_0x451e9f){_0x451e9f=_0x451e9f||0xcc;return function(_0x4d6f51){if(_0x4d6f51){return _0x229ee1[_0x6a78('0x16')](_0x451e9f);}return _0x229ee1[_0x6a78('0x17')](_0x451e9f)[_0x6a78('0x18')]();};}function respondWithResult(_0x4eda2f,_0x528986){_0x528986=_0x528986||0xc8;return function(_0x413b73){if(_0x413b73){return _0x4eda2f[_0x6a78('0x17')](_0x528986)[_0x6a78('0x19')](_0x413b73);}};}function respondWithFilteredResult(_0x2766e7,_0x5520b5){return function(_0x24a017){if(_0x24a017){var _0x34eebd=typeof _0x5520b5[_0x6a78('0x1a')]==='undefined'&&typeof _0x5520b5[_0x6a78('0x1b')]===_0x6a78('0x1c');var _0x451377=_0x24a017[_0x6a78('0x1d')];var _0x439bf3=_0x34eebd?0x0:_0x5520b5[_0x6a78('0x1a')];var _0x443259=_0x34eebd?_0x24a017[_0x6a78('0x1d')]:_0x5520b5[_0x6a78('0x1a')]+_0x5520b5['limit'];var _0x213e5d;if(_0x443259>=_0x451377){_0x443259=_0x451377;_0x213e5d=0xc8;}else{_0x213e5d=0xce;}_0x2766e7[_0x6a78('0x17')](_0x213e5d);return _0x2766e7[_0x6a78('0x1e')]('Content-Range',_0x439bf3+'-'+_0x443259+'/'+_0x451377)[_0x6a78('0x19')](_0x24a017);}return null;};}function patchUpdates(_0x4c4f61){return function(_0x5787ae){try{jsonpatch[_0x6a78('0x1f')](_0x5787ae,_0x4c4f61,!![]);}catch(_0x41a14f){return BPromise[_0x6a78('0x20')](_0x41a14f);}return _0x5787ae[_0x6a78('0x21')]();};}function saveUpdates(_0xe3bea3,_0xc46b40){return function(_0x2860ba){if(_0x2860ba){return _0x2860ba[_0x6a78('0x22')](_0xe3bea3)[_0x6a78('0x23')](function(_0x4ce2d9){return _0x4ce2d9;});}return null;};}function removeEntity(_0x4c1f97,_0x14ac24){return function(_0x1af5ba){if(_0x1af5ba){return _0x1af5ba[_0x6a78('0x24')]()[_0x6a78('0x23')](function(){var _0x10969f=_0x1af5ba[_0x6a78('0x25')]({'plain':!![]});var _0x3496bb=_0x6a78('0x26');return db[_0x6a78('0x27')][_0x6a78('0x24')]({'where':{'type':_0x3496bb,'resourceId':_0x10969f['id']}})[_0x6a78('0x23')](function(){return _0x1af5ba;});})['then'](function(){_0x4c1f97[_0x6a78('0x17')](0xcc)[_0x6a78('0x18')]();});}};}function handleEntityNotFound(_0x5be6a2,_0x2c2825){return function(_0x52f134){if(!_0x52f134){_0x5be6a2[_0x6a78('0x16')](0x194);}return _0x52f134;};}function handleError(_0x4fa41b,_0x577596){_0x577596=_0x577596||0x1f4;return function(_0x49bbfc){logger[_0x6a78('0x28')](_0x49bbfc[_0x6a78('0x29')]);if(_0x49bbfc[_0x6a78('0x2a')]){delete _0x49bbfc['name'];}_0x4fa41b[_0x6a78('0x17')](_0x577596)[_0x6a78('0x2b')](_0x49bbfc);};}exports['index']=function(_0x1c247,_0x3528fc){var _0x4c02a2={},_0x51f582={},_0x18587e={'count':0x0,'rows':[]};var _0x4c51e7=_[_0x6a78('0x2c')](db[_0x6a78('0x2d')][_0x6a78('0x2e')],function(_0xeb3ca6){return{'name':_0xeb3ca6[_0x6a78('0x2f')],'type':_0xeb3ca6[_0x6a78('0x30')]['key']};});_0x51f582['model']=_[_0x6a78('0x2c')](_0x4c51e7,_0x6a78('0x2a'));_0x51f582[_0x6a78('0x31')]=_[_0x6a78('0x32')](_0x1c247['query']);_0x51f582[_0x6a78('0x33')]=_[_0x6a78('0x34')](_0x51f582[_0x6a78('0x35')],_0x51f582['query']);_0x4c02a2[_0x6a78('0x36')]=_['intersection'](_0x51f582['model'],qs[_0x6a78('0x37')](_0x1c247[_0x6a78('0x31')][_0x6a78('0x37')]));_0x4c02a2['attributes']=_0x4c02a2[_0x6a78('0x36')][_0x6a78('0x38')]?_0x4c02a2['attributes']:_0x51f582[_0x6a78('0x35')];if(!_0x1c247['query']['hasOwnProperty'](_0x6a78('0x39'))){_0x4c02a2[_0x6a78('0x1b')]=qs[_0x6a78('0x1b')](_0x1c247[_0x6a78('0x31')]['limit']);_0x4c02a2[_0x6a78('0x1a')]=qs[_0x6a78('0x1a')](_0x1c247[_0x6a78('0x31')][_0x6a78('0x1a')]);}_0x4c02a2[_0x6a78('0x3a')]=qs[_0x6a78('0x3b')](_0x1c247[_0x6a78('0x31')]['sort']);_0x4c02a2[_0x6a78('0x3c')]=qs[_0x6a78('0x33')](_['pick'](_0x1c247[_0x6a78('0x31')],_0x51f582['filters']),_0x4c51e7);if(_0x1c247[_0x6a78('0x31')][_0x6a78('0x3d')]){_0x4c02a2[_0x6a78('0x3c')]=_[_0x6a78('0x3e')](_0x4c02a2[_0x6a78('0x3c')],{'$or':_[_0x6a78('0x2c')](_0x4c51e7,function(_0x4a5a6e){if(_0x4a5a6e[_0x6a78('0x30')]!=='VIRTUAL'){var _0x40d7a7={};_0x40d7a7[_0x4a5a6e[_0x6a78('0x2a')]]={'$like':'%'+_0x1c247[_0x6a78('0x31')][_0x6a78('0x3d')]+'%'};return _0x40d7a7;}})});}_0x4c02a2=_['merge']({},_0x4c02a2,_0x1c247['options']);var _0xccabe={'where':_0x4c02a2[_0x6a78('0x3c')]};return db[_0x6a78('0x2d')][_0x6a78('0x1d')](_0xccabe)[_0x6a78('0x23')](function(_0x54fb6b){_0x18587e[_0x6a78('0x1d')]=_0x54fb6b;if(_0x1c247['query'][_0x6a78('0x3f')]){_0x4c02a2['include']=[{'all':!![]}];}return db['Template'][_0x6a78('0x40')](_0x4c02a2);})[_0x6a78('0x23')](function(_0x5d6873){_0x18587e[_0x6a78('0x41')]=_0x5d6873;return _0x18587e;})[_0x6a78('0x23')](respondWithFilteredResult(_0x3528fc,_0x4c02a2))[_0x6a78('0x42')](handleError(_0x3528fc,null));};exports['show']=function(_0x4708c2,_0xe9704f){var _0x36b7f7={'raw':!![],'where':{'id':_0x4708c2[_0x6a78('0x43')]['id']}},_0x4c0ef9={};_0x4c0ef9['model']=_[_0x6a78('0x32')](db['Template'][_0x6a78('0x2e')]);_0x4c0ef9['query']=_[_0x6a78('0x32')](_0x4708c2[_0x6a78('0x31')]);_0x4c0ef9[_0x6a78('0x33')]=_[_0x6a78('0x34')](_0x4c0ef9[_0x6a78('0x35')],_0x4c0ef9[_0x6a78('0x31')]);_0x36b7f7['attributes']=_[_0x6a78('0x34')](_0x4c0ef9[_0x6a78('0x35')],qs[_0x6a78('0x37')](_0x4708c2['query']['fields']));_0x36b7f7['attributes']=_0x36b7f7[_0x6a78('0x36')]['length']?_0x36b7f7[_0x6a78('0x36')]:_0x4c0ef9['model'];if(_0x4708c2['query'][_0x6a78('0x3f')]){_0x36b7f7[_0x6a78('0x44')]=[{'all':!![]}];}_0x36b7f7=_['merge']({},_0x36b7f7,_0x4708c2[_0x6a78('0x45')]);return db[_0x6a78('0x2d')]['find'](_0x36b7f7)[_0x6a78('0x23')](handleEntityNotFound(_0xe9704f,null))[_0x6a78('0x23')](respondWithResult(_0xe9704f,null))[_0x6a78('0x42')](handleError(_0xe9704f,null));};exports[_0x6a78('0x46')]=function(_0x5971cb,_0x5ab63c){return db[_0x6a78('0x2d')][_0x6a78('0x46')](_0x5971cb[_0x6a78('0x47')],{})[_0x6a78('0x23')](function(_0x5adf86){var _0x59fafc=_0x5971cb['user']['get']({'plain':!![]});if(!_0x59fafc)throw new Error(_0x6a78('0x48'));if(_0x59fafc[_0x6a78('0x49')]===_0x6a78('0x4a')){var _0x116300=_0x5adf86[_0x6a78('0x25')]({'plain':!![]});var _0x2ee984=_0x6a78('0x26');return db[_0x6a78('0x4b')][_0x6a78('0x4c')]({'where':{'name':_0x2ee984,'userProfileId':_0x59fafc[_0x6a78('0x4d')]},'raw':!![]})['then'](function(_0x5d1afd){if(_0x5d1afd&&_0x5d1afd[_0x6a78('0x4e')]===0x0){return db[_0x6a78('0x27')][_0x6a78('0x46')]({'name':_0x116300[_0x6a78('0x2a')],'resourceId':_0x116300['id'],'type':_0x5d1afd[_0x6a78('0x2a')],'sectionId':_0x5d1afd['id']},{})[_0x6a78('0x23')](function(){return _0x5adf86;});}else{return _0x5adf86;}})[_0x6a78('0x42')](function(_0xa07791){logger[_0x6a78('0x28')](_0x6a78('0x4f'),_0xa07791);throw _0xa07791;});}return _0x5adf86;})[_0x6a78('0x23')](respondWithResult(_0x5ab63c,0xc9))['catch'](handleError(_0x5ab63c,null));};exports[_0x6a78('0x22')]=function(_0x18829c,_0xa35644){if(_0x18829c[_0x6a78('0x47')]['id']){delete _0x18829c[_0x6a78('0x47')]['id'];}return db['Template']['find']({'where':{'id':_0x18829c[_0x6a78('0x43')]['id']}})[_0x6a78('0x23')](handleEntityNotFound(_0xa35644,null))[_0x6a78('0x23')](saveUpdates(_0x18829c['body'],null))[_0x6a78('0x23')](respondWithResult(_0xa35644,null))[_0x6a78('0x42')](handleError(_0xa35644,null));};exports['destroy']=function(_0x1f5026,_0x4ea6a1){return db['Template']['find']({'where':{'id':_0x1f5026[_0x6a78('0x43')]['id']}})[_0x6a78('0x23')](handleEntityNotFound(_0x4ea6a1,null))['then'](removeEntity(_0x4ea6a1,null))[_0x6a78('0x42')](handleError(_0x4ea6a1,null));};
\ No newline at end of file
index b70d8eb..32523c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x490c=['util','api','request-promise','path','../../config/environment','./template.attributes','tools_templates'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0x490c,0x1ab));var _0xc490=function(_0x2c1114,_0x2a5c50){_0x2c1114=_0x2c1114-0x0;var _0x2b877c=_0x490c[_0x2c1114];return _0x2b877c;};'use strict';var _=require('lodash');var util=require(_0xc490('0x0'));var logger=require('../../config/logger')(_0xc490('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc490('0x2'));var fs=require('fs');var path=require(_0xc490('0x3'));var rimraf=require('rimraf');var config=require(_0xc490('0x4'));var attributes=require(_0xc490('0x5'));module['exports']=function(_0xb5af7e,_0x30d9ed){return _0xb5af7e['define']('Template',attributes,{'tableName':_0xc490('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd5b=['api','moment','bluebird','rimraf','../../config/environment','./template.attributes','exports','define','Template','util'];(function(_0x2a5099,_0x329e92){var _0x2802f1=function(_0x53f99b){while(--_0x53f99b){_0x2a5099['push'](_0x2a5099['shift']());}};_0x2802f1(++_0x329e92);}(_0xdd5b,0x6d));var _0xbdd5=function(_0x2b3c9d,_0x220b50){_0x2b3c9d=_0x2b3c9d-0x0;var _0x52135a=_0xdd5b[_0x2b3c9d];return _0x52135a;};'use strict';var _=require('lodash');var util=require(_0xbdd5('0x0'));var logger=require('../../config/logger')(_0xbdd5('0x1'));var moment=require(_0xbdd5('0x2'));var BPromise=require(_0xbdd5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbdd5('0x4'));var config=require(_0xbdd5('0x5'));var attributes=require(_0xbdd5('0x6'));module[_0xbdd5('0x7')]=function(_0x4c3c16,_0x235eb5){return _0x4c3c16[_0xbdd5('0x8')](_0xbdd5('0x9'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 50ee629..96e00d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe03=['options','where','attributes','limit','include','map','model','stringify','GetTemplate','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','debug','Template,\x20%s,\x20%s,\x20%s','error','code','Template,\x20%s,\x20%s','message','request\x20sent','catch','Template','findAll','raw'];(function(_0x4536a5,_0x4cbae1){var _0x4ed53a=function(_0x194805){while(--_0x194805){_0x4536a5['push'](_0x4536a5['shift']());}};_0x4ed53a(++_0x4cbae1);}(_0xbe03,0x1b6));var _0x3be0=function(_0x56eb24,_0x17d595){_0x56eb24=_0x56eb24-0x0;var _0x5b9aac=_0xbe03[_0x56eb24];return _0x5b9aac;};'use strict';var _=require(_0x3be0('0x0'));var util=require(_0x3be0('0x1'));var moment=require(_0x3be0('0x2'));var BPromise=require(_0x3be0('0x3'));var rs=require(_0x3be0('0x4'));var fs=require('fs');var Redis=require(_0x3be0('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3be0('0x6'))(_0x3be0('0x7'));var config=require(_0x3be0('0x8'));var jayson=require(_0x3be0('0x9'));var client=jayson['client'][_0x3be0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e3abf,_0x55e824,_0x58fdc2){return new BPromise(function(_0x413849,_0x40e5d4){return client['request'](_0x5e3abf,_0x58fdc2)[_0x3be0('0xb')](function(_0x15f8b4){logger[_0x3be0('0xc')]('Template,\x20%s,\x20%s',_0x55e824,'request\x20sent');logger[_0x3be0('0xd')](_0x3be0('0xe'),_0x55e824,'request\x20sent',JSON['stringify'](_0x15f8b4));if(_0x15f8b4[_0x3be0('0xf')]){if(_0x15f8b4[_0x3be0('0xf')][_0x3be0('0x10')]===0x1f4){logger[_0x3be0('0xf')](_0x3be0('0x11'),_0x55e824,_0x15f8b4[_0x3be0('0xf')][_0x3be0('0x12')]);return _0x40e5d4(_0x15f8b4['error'][_0x3be0('0x12')]);}logger[_0x3be0('0xf')](_0x3be0('0x11'),_0x55e824,_0x15f8b4[_0x3be0('0xf')][_0x3be0('0x12')]);return _0x413849(_0x15f8b4[_0x3be0('0xf')]['message']);}else{logger['info']('Template,\x20%s,\x20%s',_0x55e824,_0x3be0('0x13'));_0x413849(_0x15f8b4['result']['message']);}})[_0x3be0('0x14')](function(_0x81f8c){logger[_0x3be0('0xf')](_0x3be0('0x11'),_0x55e824,_0x81f8c);_0x40e5d4(_0x81f8c);});});}exports['GetTemplate']=function(_0x505d0c){var _0x1eeca0=this;return new Promise(function(_0x4a0d27,_0x5b4561){return db[_0x3be0('0x15')][_0x3be0('0x16')]({'raw':_0x505d0c['options']?_0x505d0c['options'][_0x3be0('0x17')]===undefined?!![]:![]:!![],'where':_0x505d0c[_0x3be0('0x18')]?_0x505d0c[_0x3be0('0x18')][_0x3be0('0x19')]||null:null,'attributes':_0x505d0c['options']?_0x505d0c[_0x3be0('0x18')][_0x3be0('0x1a')]||null:null,'limit':_0x505d0c[_0x3be0('0x18')]?_0x505d0c['options'][_0x3be0('0x1b')]||null:null,'include':_0x505d0c[_0x3be0('0x18')]?_0x505d0c['options'][_0x3be0('0x1c')]?_[_0x3be0('0x1d')](_0x505d0c[_0x3be0('0x18')][_0x3be0('0x1c')],function(_0x5298d2){return{'model':db[_0x5298d2[_0x3be0('0x1e')]],'as':_0x5298d2['as'],'attributes':_0x5298d2[_0x3be0('0x1a')],'include':_0x5298d2[_0x3be0('0x1c')]?_[_0x3be0('0x1d')](_0x5298d2['include'],function(_0x207a6e){return{'model':db[_0x207a6e[_0x3be0('0x1e')]],'as':_0x207a6e['as'],'attributes':_0x207a6e['attributes'],'include':_0x207a6e[_0x3be0('0x1c')]?_[_0x3be0('0x1d')](_0x207a6e[_0x3be0('0x1c')],function(_0x36888f){return{'model':db[_0x36888f['model']],'as':_0x36888f['as'],'attributes':_0x36888f['attributes']};}):[]};}):[]};}):[]:[]})[_0x3be0('0xb')](function(_0x306e92){logger[_0x3be0('0xc')]('GetTemplate',_0x505d0c);logger[_0x3be0('0xd')]('GetTemplate',_0x505d0c,JSON[_0x3be0('0x1f')](_0x306e92));_0x4a0d27(_0x306e92);})['catch'](function(_0x1cbc4b){logger[_0x3be0('0xf')](_0x3be0('0x20'),_0x1cbc4b[_0x3be0('0x12')],_0x505d0c);_0x5b4561(_0x1eeca0[_0x3be0('0xf')](0x1f4,_0x1cbc4b['message']));});});};
\ No newline at end of file
+var _0x2717=['catch','GetTemplate','Template','findAll','options','where','attributes','limit','include','map','model','info','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Template,\x20%s,\x20%s','debug','request\x20sent','error','message','result'];(function(_0x5750c8,_0x8a7d66){var _0x1b2b4a=function(_0x3d618a){while(--_0x3d618a){_0x5750c8['push'](_0x5750c8['shift']());}};_0x1b2b4a(++_0x8a7d66);}(_0x2717,0x157));var _0x7271=function(_0x4dbb84,_0x540b16){_0x4dbb84=_0x4dbb84-0x0;var _0x454633=_0x2717[_0x4dbb84];return _0x454633;};'use strict';var _=require(_0x7271('0x0'));var util=require(_0x7271('0x1'));var moment=require('moment');var BPromise=require(_0x7271('0x2'));var rs=require(_0x7271('0x3'));var fs=require('fs');var Redis=require(_0x7271('0x4'));var db=require(_0x7271('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7271('0x6'))(_0x7271('0x7'));var config=require(_0x7271('0x8'));var jayson=require(_0x7271('0x9'));var client=jayson[_0x7271('0xa')][_0x7271('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x406e24,_0x238ea0,_0x653872){return new BPromise(function(_0x2d08ae,_0x335d39){return client[_0x7271('0xc')](_0x406e24,_0x653872)[_0x7271('0xd')](function(_0x7e7e23){logger['info'](_0x7271('0xe'),_0x238ea0,'request\x20sent');logger[_0x7271('0xf')]('Template,\x20%s,\x20%s,\x20%s',_0x238ea0,_0x7271('0x10'),JSON['stringify'](_0x7e7e23));if(_0x7e7e23[_0x7271('0x11')]){if(_0x7e7e23[_0x7271('0x11')]['code']===0x1f4){logger[_0x7271('0x11')]('Template,\x20%s,\x20%s',_0x238ea0,_0x7e7e23[_0x7271('0x11')]['message']);return _0x335d39(_0x7e7e23[_0x7271('0x11')]['message']);}logger[_0x7271('0x11')](_0x7271('0xe'),_0x238ea0,_0x7e7e23['error'][_0x7271('0x12')]);return _0x2d08ae(_0x7e7e23['error'][_0x7271('0x12')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x238ea0,_0x7271('0x10'));_0x2d08ae(_0x7e7e23[_0x7271('0x13')][_0x7271('0x12')]);}})[_0x7271('0x14')](function(_0x50cd2c){logger[_0x7271('0x11')](_0x7271('0xe'),_0x238ea0,_0x50cd2c);_0x335d39(_0x50cd2c);});});}exports[_0x7271('0x15')]=function(_0x3699f6){var _0x18a697=this;return new Promise(function(_0x5ac2f0,_0x3dac08){return db[_0x7271('0x16')][_0x7271('0x17')]({'raw':_0x3699f6['options']?_0x3699f6[_0x7271('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x3699f6[_0x7271('0x18')]?_0x3699f6[_0x7271('0x18')][_0x7271('0x19')]||null:null,'attributes':_0x3699f6[_0x7271('0x18')]?_0x3699f6[_0x7271('0x18')][_0x7271('0x1a')]||null:null,'limit':_0x3699f6[_0x7271('0x18')]?_0x3699f6[_0x7271('0x18')][_0x7271('0x1b')]||null:null,'include':_0x3699f6[_0x7271('0x18')]?_0x3699f6[_0x7271('0x18')][_0x7271('0x1c')]?_[_0x7271('0x1d')](_0x3699f6[_0x7271('0x18')][_0x7271('0x1c')],function(_0xbce02f){return{'model':db[_0xbce02f['model']],'as':_0xbce02f['as'],'attributes':_0xbce02f[_0x7271('0x1a')],'include':_0xbce02f['include']?_[_0x7271('0x1d')](_0xbce02f[_0x7271('0x1c')],function(_0x39054f){return{'model':db[_0x39054f[_0x7271('0x1e')]],'as':_0x39054f['as'],'attributes':_0x39054f[_0x7271('0x1a')],'include':_0x39054f[_0x7271('0x1c')]?_[_0x7271('0x1d')](_0x39054f['include'],function(_0x3a64fd){return{'model':db[_0x3a64fd[_0x7271('0x1e')]],'as':_0x3a64fd['as'],'attributes':_0x3a64fd[_0x7271('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x436c76){logger[_0x7271('0x1f')](_0x7271('0x15'),_0x3699f6);logger[_0x7271('0xf')](_0x7271('0x15'),_0x3699f6,JSON[_0x7271('0x20')](_0x436c76));_0x5ac2f0(_0x436c76);})['catch'](function(_0x555530){logger[_0x7271('0x11')]('GetTemplate',_0x555530[_0x7271('0x12')],_0x3699f6);_0x3dac08(_0x18a697['error'](0x1f4,_0x555530[_0x7271('0x12')]));});});};
\ No newline at end of file
index e16ef3b..49fbf31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba6e=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/all_conditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAction','put','update'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xba6e,0x107));var _0xeba6=function(_0x341bc1,_0x1e185e){_0x341bc1=_0x341bc1-0x0;var _0x4b01c6=_0xba6e[_0x341bc1];return _0x4b01c6;};'use strict';var multer=require(_0xeba6('0x0'));var util=require(_0xeba6('0x1'));var path=require('path');var timeout=require(_0xeba6('0x2'));var express=require(_0xeba6('0x3'));var router=express[_0xeba6('0x4')]();var fs_extra=require(_0xeba6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xeba6('0x6'));var config=require(_0xeba6('0x7'));var controller=require('./trigger.controller');router[_0xeba6('0x8')]('/',auth[_0xeba6('0x9')](),controller[_0xeba6('0xa')]);router[_0xeba6('0x8')](_0xeba6('0xb'),auth[_0xeba6('0x9')](),controller[_0xeba6('0xc')]);router['get'](_0xeba6('0xd'),auth[_0xeba6('0x9')](),controller['getAllConditions']);router[_0xeba6('0x8')](_0xeba6('0xe'),auth[_0xeba6('0x9')](),controller[_0xeba6('0xf')]);router[_0xeba6('0x8')](_0xeba6('0x10'),auth[_0xeba6('0x9')](),controller[_0xeba6('0x11')]);router[_0xeba6('0x12')]('/',auth[_0xeba6('0x9')](),controller[_0xeba6('0x13')]);router['post']('/:id/all_conditions',auth[_0xeba6('0x9')](),controller['addAllCondition']);router[_0xeba6('0x12')](_0xeba6('0xe'),auth[_0xeba6('0x9')](),controller['addAnyCondition']);router[_0xeba6('0x12')](_0xeba6('0x10'),auth[_0xeba6('0x9')](),controller[_0xeba6('0x14')]);router[_0xeba6('0x15')]('/:id',auth[_0xeba6('0x9')](),controller[_0xeba6('0x16')]);router[_0xeba6('0x17')](_0xeba6('0xb'),auth['isAuthenticated'](),controller[_0xeba6('0x18')]);module[_0xeba6('0x19')]=router;
\ No newline at end of file
+var _0xbf1c=['./trigger.controller','get','isAuthenticated','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAnyCondition','addAction','put','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x44d515,_0x1b31b4){var _0x461b12=function(_0x356480){while(--_0x356480){_0x44d515['push'](_0x44d515['shift']());}};_0x461b12(++_0x1b31b4);}(_0xbf1c,0x1a1));var _0xcbf1=function(_0x1f0819,_0x5bfb70){_0x1f0819=_0x1f0819-0x0;var _0x5a769f=_0xbf1c[_0x1f0819];return _0x5a769f;};'use strict';var multer=require(_0xcbf1('0x0'));var util=require(_0xcbf1('0x1'));var path=require(_0xcbf1('0x2'));var timeout=require(_0xcbf1('0x3'));var express=require(_0xcbf1('0x4'));var router=express[_0xcbf1('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcbf1('0x6'));var config=require(_0xcbf1('0x7'));var controller=require(_0xcbf1('0x8'));router[_0xcbf1('0x9')]('/',auth[_0xcbf1('0xa')](),controller['index']);router[_0xcbf1('0x9')](_0xcbf1('0xb'),auth['isAuthenticated'](),controller[_0xcbf1('0xc')]);router[_0xcbf1('0x9')](_0xcbf1('0xd'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0xe')]);router['get'](_0xcbf1('0xf'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x10')]);router[_0xcbf1('0x9')](_0xcbf1('0x11'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x12')]);router['post']('/',auth[_0xcbf1('0xa')](),controller['create']);router['post']('/:id/all_conditions',auth[_0xcbf1('0xa')](),controller['addAllCondition']);router[_0xcbf1('0x13')](_0xcbf1('0xf'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x14')]);router[_0xcbf1('0x13')](_0xcbf1('0x11'),auth[_0xcbf1('0xa')](),controller[_0xcbf1('0x15')]);router[_0xcbf1('0x16')]('/:id',auth[_0xcbf1('0xa')](),controller['update']);router[_0xcbf1('0x17')](_0xcbf1('0xb'),auth[_0xcbf1('0xa')](),controller['destroy']);module[_0xcbf1('0x18')]=router;
\ No newline at end of file
index 1824ac4..fb217f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x743d=['BOOLEAN','STRING'];(function(_0x247144,_0x44f6db){var _0x26788f=function(_0x52e744){while(--_0x52e744){_0x247144['push'](_0x247144['shift']());}};_0x26788f(++_0x44f6db);}(_0x743d,0xa1));var _0xd743=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x743d[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd743('0x0')]},'channel':{'type':Sequelize[_0xd743('0x0')]},'description':{'type':Sequelize[_0xd743('0x0')]},'status':{'type':Sequelize[_0xd743('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x49d7=['BOOLEAN','STRING'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x49d7,0x133));var _0x749d=function(_0xf55e73,_0x3fecc5){_0xf55e73=_0xf55e73-0x0;var _0x116b99=_0x49d7[_0xf55e73];return _0x116b99;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x749d('0x0')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x749d('0x0')]},'status':{'type':Sequelize[_0x749d('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 8ed9727..db7106d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa362=['save','update','then','get','Triggers','UserProfileResource','destroy','sendStatus','error','name','send','index','map','Trigger','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','length','includeAll','include','find','create','body','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','getAnyConditions','addAction','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','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','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x59ab75,_0x5e4461){var _0x5cbf14=function(_0x40b79a){while(--_0x40b79a){_0x59ab75['push'](_0x59ab75['shift']());}};_0x5cbf14(++_0x5e4461);}(_0xa362,0x1b3));var _0x2a36=function(_0x14f0f4,_0x28fe04){_0x14f0f4=_0x14f0f4-0x0;var _0x52aec3=_0xa362[_0x14f0f4];return _0x52aec3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2a36('0x0'));var zipdir=require(_0x2a36('0x1'));var jsonpatch=require(_0x2a36('0x2'));var rp=require(_0x2a36('0x3'));var moment=require('moment');var BPromise=require(_0x2a36('0x4'));var Mustache=require(_0x2a36('0x5'));var util=require(_0x2a36('0x6'));var path=require('path');var sox=require(_0x2a36('0x7'));var csv=require(_0x2a36('0x8'));var ejs=require(_0x2a36('0x9'));var fs=require('fs');var fs_extra=require(_0x2a36('0xa'));var _=require(_0x2a36('0xb'));var squel=require(_0x2a36('0xc'));var crypto=require('crypto');var jsforce=require(_0x2a36('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2a36('0x8'));var querystring=require('querystring');var Papa=require(_0x2a36('0xe'));var Redis=require(_0x2a36('0xf'));var authService=require(_0x2a36('0x10'));var qs=require(_0x2a36('0x11'));var as=require(_0x2a36('0x12'));var hardwareService=require(_0x2a36('0x13'));var logger=require(_0x2a36('0x14'))(_0x2a36('0x15'));var utils=require(_0x2a36('0x16'));var config=require(_0x2a36('0x17'));var licenseUtil=require(_0x2a36('0x18'));var db=require(_0x2a36('0x19'))['db'];function respondWithStatusCode(_0x2683f4,_0x3b9af3){_0x3b9af3=_0x3b9af3||0xcc;return function(_0x2ae185){if(_0x2ae185){return _0x2683f4['sendStatus'](_0x3b9af3);}return _0x2683f4['status'](_0x3b9af3)[_0x2a36('0x1a')]();};}function respondWithResult(_0x4345e5,_0x59bbb8){_0x59bbb8=_0x59bbb8||0xc8;return function(_0x20f9ad){if(_0x20f9ad){return _0x4345e5[_0x2a36('0x1b')](_0x59bbb8)[_0x2a36('0x1c')](_0x20f9ad);}};}function respondWithFilteredResult(_0x6b82b5,_0x11f7c0){return function(_0x161c28){if(_0x161c28){var _0x31da7c=typeof _0x11f7c0[_0x2a36('0x1d')]===_0x2a36('0x1e')&&typeof _0x11f7c0[_0x2a36('0x1f')]===_0x2a36('0x1e');var _0x54ea38=_0x161c28[_0x2a36('0x20')];var _0x5f1b55=_0x31da7c?0x0:_0x11f7c0['offset'];var _0x34b9d6=_0x31da7c?_0x161c28[_0x2a36('0x20')]:_0x11f7c0[_0x2a36('0x1d')]+_0x11f7c0[_0x2a36('0x1f')];var _0x4ce6b7;if(_0x34b9d6>=_0x54ea38){_0x34b9d6=_0x54ea38;_0x4ce6b7=0xc8;}else{_0x4ce6b7=0xce;}_0x6b82b5[_0x2a36('0x1b')](_0x4ce6b7);return _0x6b82b5[_0x2a36('0x21')](_0x2a36('0x22'),_0x5f1b55+'-'+_0x34b9d6+'/'+_0x54ea38)[_0x2a36('0x1c')](_0x161c28);}return null;};}function patchUpdates(_0xc541e8){return function(_0x65182b){try{jsonpatch['apply'](_0x65182b,_0xc541e8,!![]);}catch(_0x333513){return BPromise['reject'](_0x333513);}return _0x65182b[_0x2a36('0x23')]();};}function saveUpdates(_0xdd15b2,_0x21cdf9){return function(_0x158e32){if(_0x158e32){return _0x158e32[_0x2a36('0x24')](_0xdd15b2)[_0x2a36('0x25')](function(_0x3db2e8){return _0x3db2e8;});}return null;};}function removeEntity(_0x21e025,_0xabc1a5){return function(_0x493f8d){if(_0x493f8d){return _0x493f8d['destroy']()[_0x2a36('0x25')](function(){var _0x818cfa=_0x493f8d[_0x2a36('0x26')]({'plain':!![]});var _0x5e323c=_0x2a36('0x27');return db[_0x2a36('0x28')][_0x2a36('0x29')]({'where':{'type':_0x5e323c,'resourceId':_0x818cfa['id']}})[_0x2a36('0x25')](function(){return _0x493f8d;});})['then'](function(){_0x21e025[_0x2a36('0x1b')](0xcc)[_0x2a36('0x1a')]();});}};}function handleEntityNotFound(_0xcd55d2,_0x5f239c){return function(_0x17aece){if(!_0x17aece){_0xcd55d2[_0x2a36('0x2a')](0x194);}return _0x17aece;};}function handleError(_0x56dd0f,_0xebb060){_0xebb060=_0xebb060||0x1f4;return function(_0x45536d){logger[_0x2a36('0x2b')](_0x45536d['stack']);if(_0x45536d['name']){delete _0x45536d[_0x2a36('0x2c')];}_0x56dd0f[_0x2a36('0x1b')](_0xebb060)[_0x2a36('0x2d')](_0x45536d);};}exports[_0x2a36('0x2e')]=function(_0x26f01b,_0x43a947){var _0x110eb2={},_0x176679={},_0x506dc={'count':0x0,'rows':[]};var _0x1342b5=_[_0x2a36('0x2f')](db[_0x2a36('0x30')][_0x2a36('0x31')],function(_0x192ba9){return{'name':_0x192ba9['fieldName'],'type':_0x192ba9['type'][_0x2a36('0x32')]};});_0x176679['model']=_[_0x2a36('0x2f')](_0x1342b5,'name');_0x176679[_0x2a36('0x33')]=_[_0x2a36('0x34')](_0x26f01b[_0x2a36('0x33')]);_0x176679[_0x2a36('0x35')]=_[_0x2a36('0x36')](_0x176679[_0x2a36('0x37')],_0x176679[_0x2a36('0x33')]);_0x110eb2[_0x2a36('0x38')]=_[_0x2a36('0x36')](_0x176679['model'],qs[_0x2a36('0x39')](_0x26f01b['query']['fields']));_0x110eb2[_0x2a36('0x38')]=_0x110eb2[_0x2a36('0x38')]['length']?_0x110eb2['attributes']:_0x176679[_0x2a36('0x37')];if(!_0x26f01b[_0x2a36('0x33')][_0x2a36('0x3a')](_0x2a36('0x3b'))){_0x110eb2[_0x2a36('0x1f')]=qs['limit'](_0x26f01b[_0x2a36('0x33')][_0x2a36('0x1f')]);_0x110eb2[_0x2a36('0x1d')]=qs[_0x2a36('0x1d')](_0x26f01b[_0x2a36('0x33')][_0x2a36('0x1d')]);}_0x110eb2[_0x2a36('0x3c')]=qs[_0x2a36('0x3d')](_0x26f01b[_0x2a36('0x33')][_0x2a36('0x3d')]);_0x110eb2[_0x2a36('0x3e')]=qs[_0x2a36('0x35')](_[_0x2a36('0x3f')](_0x26f01b[_0x2a36('0x33')],_0x176679['filters']),_0x1342b5);if(_0x26f01b[_0x2a36('0x33')][_0x2a36('0x40')]){_0x110eb2[_0x2a36('0x3e')]=_[_0x2a36('0x41')](_0x110eb2[_0x2a36('0x3e')],{'$or':_[_0x2a36('0x2f')](_0x1342b5,function(_0x48ade7){if(_0x48ade7['type']!==_0x2a36('0x42')){var _0x3227a5={};_0x3227a5[_0x48ade7[_0x2a36('0x2c')]]={'$like':'%'+_0x26f01b[_0x2a36('0x33')][_0x2a36('0x40')]+'%'};return _0x3227a5;}})});}_0x110eb2=_[_0x2a36('0x41')]({},_0x110eb2,_0x26f01b[_0x2a36('0x43')]);var _0x2d1476={'where':_0x110eb2[_0x2a36('0x3e')]};return db['Trigger'][_0x2a36('0x20')](_0x2d1476)[_0x2a36('0x25')](function(_0x4f0704){_0x506dc[_0x2a36('0x20')]=_0x4f0704;if(_0x26f01b['query']['includeAll']){_0x110eb2['include']=[{'all':!![]}];}return db[_0x2a36('0x30')][_0x2a36('0x44')](_0x110eb2);})['then'](function(_0xf83a82){_0x506dc[_0x2a36('0x45')]=_0xf83a82;return _0x506dc;})['then'](respondWithFilteredResult(_0x43a947,_0x110eb2))[_0x2a36('0x46')](handleError(_0x43a947,null));};exports[_0x2a36('0x47')]=function(_0x48d112,_0x4128df){var _0x89a3ab={'raw':![],'where':{'id':_0x48d112[_0x2a36('0x48')]['id']}},_0xe87c48={};_0xe87c48[_0x2a36('0x37')]=_[_0x2a36('0x34')](db[_0x2a36('0x30')][_0x2a36('0x31')]);_0xe87c48[_0x2a36('0x33')]=_[_0x2a36('0x34')](_0x48d112[_0x2a36('0x33')]);_0xe87c48[_0x2a36('0x35')]=_['intersection'](_0xe87c48[_0x2a36('0x37')],_0xe87c48[_0x2a36('0x33')]);_0x89a3ab[_0x2a36('0x38')]=_[_0x2a36('0x36')](_0xe87c48['model'],qs[_0x2a36('0x39')](_0x48d112['query'][_0x2a36('0x39')]));_0x89a3ab[_0x2a36('0x38')]=_0x89a3ab[_0x2a36('0x38')][_0x2a36('0x49')]?_0x89a3ab[_0x2a36('0x38')]:_0xe87c48[_0x2a36('0x37')];if(_0x48d112[_0x2a36('0x33')][_0x2a36('0x4a')]){_0x89a3ab[_0x2a36('0x4b')]=[{'all':!![]}];}_0x89a3ab=_[_0x2a36('0x41')]({},_0x89a3ab,_0x48d112[_0x2a36('0x43')]);return db[_0x2a36('0x30')][_0x2a36('0x4c')](_0x89a3ab)[_0x2a36('0x25')](handleEntityNotFound(_0x4128df,null))[_0x2a36('0x25')](respondWithResult(_0x4128df,null))[_0x2a36('0x46')](handleError(_0x4128df,null));};exports[_0x2a36('0x4d')]=function(_0x3bfab1,_0x4e108a){return db[_0x2a36('0x30')][_0x2a36('0x4d')](_0x3bfab1[_0x2a36('0x4e')],{})['then'](function(_0x9db640){var _0x5dbf78=_0x3bfab1[_0x2a36('0x4f')][_0x2a36('0x26')]({'plain':!![]});if(!_0x5dbf78)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5dbf78[_0x2a36('0x50')]===_0x2a36('0x4f')){var _0x123d4e=_0x9db640[_0x2a36('0x26')]({'plain':!![]});var _0x3324bf=_0x2a36('0x27');return db[_0x2a36('0x51')][_0x2a36('0x4c')]({'where':{'name':_0x3324bf,'userProfileId':_0x5dbf78['userProfileId']},'raw':!![]})[_0x2a36('0x25')](function(_0x3361d0){if(_0x3361d0&&_0x3361d0[_0x2a36('0x52')]===0x0){return db['UserProfileResource'][_0x2a36('0x4d')]({'name':_0x123d4e['name'],'resourceId':_0x123d4e['id'],'type':_0x3361d0[_0x2a36('0x2c')],'sectionId':_0x3361d0['id']},{})['then'](function(){return _0x9db640;});}else{return _0x9db640;}})['catch'](function(_0x3d87e2){logger[_0x2a36('0x2b')](_0x2a36('0x53'),_0x3d87e2);throw _0x3d87e2;});}return _0x9db640;})['then'](respondWithResult(_0x4e108a,0xc9))[_0x2a36('0x46')](handleError(_0x4e108a,null));};exports[_0x2a36('0x24')]=function(_0x1399eb,_0x4d0924){if(_0x1399eb[_0x2a36('0x4e')]['id']){delete _0x1399eb[_0x2a36('0x4e')]['id'];}return db[_0x2a36('0x30')]['find']({'where':{'id':_0x1399eb[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x4d0924,null))[_0x2a36('0x25')](saveUpdates(_0x1399eb[_0x2a36('0x4e')],null))[_0x2a36('0x25')](respondWithResult(_0x4d0924,null))['catch'](handleError(_0x4d0924,null));};exports[_0x2a36('0x29')]=function(_0x272ce6,_0x333fb2){return db[_0x2a36('0x30')][_0x2a36('0x4c')]({'where':{'id':_0x272ce6[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x333fb2,null))[_0x2a36('0x25')](removeEntity(_0x333fb2,null))['catch'](handleError(_0x333fb2,null));};exports[_0x2a36('0x54')]=function(_0x28bec6,_0x3a1e58,_0x6ffe1a){if(_0x28bec6[_0x2a36('0x4e')]['id']){delete _0x28bec6[_0x2a36('0x4e')]['id'];}return db['Trigger'][_0x2a36('0x4c')]({'where':{'id':_0x28bec6[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x3a1e58,null))[_0x2a36('0x25')](function(_0x119dd2){if(_0x119dd2){_0x28bec6['body'][_0x2a36('0x55')]=_0x119dd2['id'];return db[_0x2a36('0x56')][_0x2a36('0x4d')](_0x28bec6[_0x2a36('0x4e')]);}})['then'](respondWithResult(_0x3a1e58,null))['catch'](handleError(_0x3a1e58,null));};exports['addAnyCondition']=function(_0x5128c1,_0x9cfba4,_0x18963c){if(_0x5128c1[_0x2a36('0x4e')]['id']){delete _0x5128c1[_0x2a36('0x4e')]['id'];}return db[_0x2a36('0x30')][_0x2a36('0x4c')]({'where':{'id':_0x5128c1[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x9cfba4,null))['then'](function(_0x1cfa33){if(_0x1cfa33){_0x5128c1['body'][_0x2a36('0x57')]=_0x1cfa33['id'];return db[_0x2a36('0x56')][_0x2a36('0x4d')](_0x5128c1['body']);}})[_0x2a36('0x25')](respondWithResult(_0x9cfba4,null))['catch'](handleError(_0x9cfba4,null));};exports[_0x2a36('0x58')]=function(_0xd5539f,_0x54747b,_0x2248a3){var _0x72c7fd={};var _0x3c71f0={};var _0x23c6ef;var _0xaf2f5c;return db[_0x2a36('0x30')][_0x2a36('0x59')]({'where':{'id':_0xd5539f[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x54747b,null))[_0x2a36('0x25')](function(_0x40c651){if(_0x40c651){_0x23c6ef=_0x40c651;_0x3c71f0[_0x2a36('0x37')]=_['keys'](db[_0x2a36('0x56')]['rawAttributes']);_0x3c71f0['query']=_[_0x2a36('0x34')](_0xd5539f[_0x2a36('0x33')]);_0x3c71f0[_0x2a36('0x35')]=_['intersection'](_0x3c71f0[_0x2a36('0x37')],_0x3c71f0[_0x2a36('0x33')]);_0x72c7fd[_0x2a36('0x38')]=_['intersection'](_0x3c71f0[_0x2a36('0x37')],qs[_0x2a36('0x39')](_0xd5539f[_0x2a36('0x33')][_0x2a36('0x39')]));_0x72c7fd[_0x2a36('0x38')]=_0x72c7fd[_0x2a36('0x38')][_0x2a36('0x49')]?_0x72c7fd[_0x2a36('0x38')]:_0x3c71f0['model'];_0x72c7fd[_0x2a36('0x3c')]=qs[_0x2a36('0x3d')](_0xd5539f['query'][_0x2a36('0x3d')]);_0x72c7fd[_0x2a36('0x3e')]=qs['filters'](_[_0x2a36('0x3f')](_0xd5539f[_0x2a36('0x33')],_0x3c71f0[_0x2a36('0x35')]));if(_0xd5539f[_0x2a36('0x33')]['filter']){_0x72c7fd[_0x2a36('0x3e')]=_[_0x2a36('0x41')](_0x72c7fd['where'],{'$or':_[_0x2a36('0x2f')](_0x72c7fd['attributes'],function(_0x12703f){var _0x12fae3={};_0x12fae3[_0x12703f]={'$like':'%'+_0xd5539f['query'][_0x2a36('0x40')]+'%'};return _0x12fae3;})});}_0x72c7fd=_[_0x2a36('0x41')]({},_0x72c7fd,_0xd5539f[_0x2a36('0x43')]);return _0x23c6ef[_0x2a36('0x58')](_0x72c7fd);}})['then'](function(_0x126e5a){if(_0x126e5a){_0xaf2f5c=_0x126e5a[_0x2a36('0x49')];if(!_0xd5539f[_0x2a36('0x33')][_0x2a36('0x3a')](_0x2a36('0x3b'))){_0x72c7fd[_0x2a36('0x1f')]=qs[_0x2a36('0x1f')](_0xd5539f[_0x2a36('0x33')][_0x2a36('0x1f')]);_0x72c7fd[_0x2a36('0x1d')]=qs[_0x2a36('0x1d')](_0xd5539f[_0x2a36('0x33')][_0x2a36('0x1d')]);}return _0x23c6ef['getAllConditions'](_0x72c7fd);}})[_0x2a36('0x25')](function(_0x5c568b){if(_0x5c568b){return _0x5c568b?{'count':_0xaf2f5c,'rows':_0x5c568b}:null;}})[_0x2a36('0x25')](respondWithResult(_0x54747b,null))['catch'](handleError(_0x54747b,null));};exports[_0x2a36('0x5a')]=function(_0x137dea,_0x355882,_0x4c4ff6){var _0x1f1c21={};var _0x552b83={};var _0x3d0d8e;var _0x3fbf50;return db[_0x2a36('0x30')][_0x2a36('0x59')]({'where':{'id':_0x137dea['params']['id']}})['then'](handleEntityNotFound(_0x355882,null))[_0x2a36('0x25')](function(_0x4d958c){if(_0x4d958c){_0x3d0d8e=_0x4d958c;_0x552b83[_0x2a36('0x37')]=_[_0x2a36('0x34')](db[_0x2a36('0x56')]['rawAttributes']);_0x552b83[_0x2a36('0x33')]=_[_0x2a36('0x34')](_0x137dea[_0x2a36('0x33')]);_0x552b83[_0x2a36('0x35')]=_[_0x2a36('0x36')](_0x552b83[_0x2a36('0x37')],_0x552b83[_0x2a36('0x33')]);_0x1f1c21[_0x2a36('0x38')]=_[_0x2a36('0x36')](_0x552b83[_0x2a36('0x37')],qs[_0x2a36('0x39')](_0x137dea[_0x2a36('0x33')][_0x2a36('0x39')]));_0x1f1c21[_0x2a36('0x38')]=_0x1f1c21['attributes'][_0x2a36('0x49')]?_0x1f1c21[_0x2a36('0x38')]:_0x552b83[_0x2a36('0x37')];_0x1f1c21[_0x2a36('0x3c')]=qs[_0x2a36('0x3d')](_0x137dea[_0x2a36('0x33')][_0x2a36('0x3d')]);_0x1f1c21[_0x2a36('0x3e')]=qs[_0x2a36('0x35')](_['pick'](_0x137dea[_0x2a36('0x33')],_0x552b83[_0x2a36('0x35')]));if(_0x137dea[_0x2a36('0x33')][_0x2a36('0x40')]){_0x1f1c21['where']=_[_0x2a36('0x41')](_0x1f1c21['where'],{'$or':_['map'](_0x1f1c21[_0x2a36('0x38')],function(_0x242b9c){var _0xb1ba76={};_0xb1ba76[_0x242b9c]={'$like':'%'+_0x137dea[_0x2a36('0x33')][_0x2a36('0x40')]+'%'};return _0xb1ba76;})});}_0x1f1c21=_[_0x2a36('0x41')]({},_0x1f1c21,_0x137dea['options']);return _0x3d0d8e[_0x2a36('0x5a')](_0x1f1c21);}})[_0x2a36('0x25')](function(_0x2d481c){if(_0x2d481c){_0x3fbf50=_0x2d481c[_0x2a36('0x49')];if(!_0x137dea[_0x2a36('0x33')][_0x2a36('0x3a')]('nolimit')){_0x1f1c21[_0x2a36('0x1f')]=qs[_0x2a36('0x1f')](_0x137dea[_0x2a36('0x33')][_0x2a36('0x1f')]);_0x1f1c21['offset']=qs['offset'](_0x137dea['query'][_0x2a36('0x1d')]);}return _0x3d0d8e[_0x2a36('0x5a')](_0x1f1c21);}})['then'](function(_0x2748f4){if(_0x2748f4){return _0x2748f4?{'count':_0x3fbf50,'rows':_0x2748f4}:null;}})[_0x2a36('0x25')](respondWithResult(_0x355882,null))[_0x2a36('0x46')](handleError(_0x355882,null));};exports[_0x2a36('0x5b')]=function(_0x51eeec,_0x29b65d,_0x44808f){if(_0x51eeec['body']['id']){delete _0x51eeec[_0x2a36('0x4e')]['id'];}return db[_0x2a36('0x30')]['find']({'where':{'id':_0x51eeec[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x29b65d,null))[_0x2a36('0x25')](function(_0x5351f6){if(_0x5351f6){_0x51eeec[_0x2a36('0x4e')]['TriggerId']=_0x5351f6['id'];return db[_0x2a36('0x5c')][_0x2a36('0x4d')](_0x51eeec[_0x2a36('0x4e')]);}})[_0x2a36('0x25')](respondWithResult(_0x29b65d,null))[_0x2a36('0x46')](handleError(_0x29b65d,null));};exports[_0x2a36('0x5d')]=function(_0x4fffb1,_0x460e53,_0x2e0658){var _0x4f1023={};var _0x254693={};var _0x2b5fb0;var _0x1291f5;return db[_0x2a36('0x30')]['findOne']({'where':{'id':_0x4fffb1[_0x2a36('0x48')]['id']}})[_0x2a36('0x25')](handleEntityNotFound(_0x460e53,null))[_0x2a36('0x25')](function(_0x63695e){if(_0x63695e){_0x2b5fb0=_0x63695e;_0x254693[_0x2a36('0x37')]=_[_0x2a36('0x34')](db['Action']['rawAttributes']);_0x254693[_0x2a36('0x33')]=_[_0x2a36('0x34')](_0x4fffb1[_0x2a36('0x33')]);_0x254693[_0x2a36('0x35')]=_[_0x2a36('0x36')](_0x254693[_0x2a36('0x37')],_0x254693['query']);_0x4f1023[_0x2a36('0x38')]=_[_0x2a36('0x36')](_0x254693[_0x2a36('0x37')],qs[_0x2a36('0x39')](_0x4fffb1[_0x2a36('0x33')][_0x2a36('0x39')]));_0x4f1023['attributes']=_0x4f1023[_0x2a36('0x38')]['length']?_0x4f1023[_0x2a36('0x38')]:_0x254693['model'];_0x4f1023[_0x2a36('0x3c')]=qs[_0x2a36('0x3d')](_0x4fffb1[_0x2a36('0x33')][_0x2a36('0x3d')]);_0x4f1023['where']=qs[_0x2a36('0x35')](_['pick'](_0x4fffb1['query'],_0x254693['filters']));if(_0x4fffb1['query'][_0x2a36('0x40')]){_0x4f1023[_0x2a36('0x3e')]=_['merge'](_0x4f1023[_0x2a36('0x3e')],{'$or':_[_0x2a36('0x2f')](_0x4f1023[_0x2a36('0x38')],function(_0x2e0c12){var _0x14ba30={};_0x14ba30[_0x2e0c12]={'$like':'%'+_0x4fffb1[_0x2a36('0x33')][_0x2a36('0x40')]+'%'};return _0x14ba30;})});}_0x4f1023=_[_0x2a36('0x41')]({},_0x4f1023,_0x4fffb1[_0x2a36('0x43')]);return _0x2b5fb0[_0x2a36('0x5d')](_0x4f1023);}})[_0x2a36('0x25')](function(_0x3562e7){if(_0x3562e7){_0x1291f5=_0x3562e7['length'];if(!_0x4fffb1[_0x2a36('0x33')][_0x2a36('0x3a')](_0x2a36('0x3b'))){_0x4f1023[_0x2a36('0x1f')]=qs[_0x2a36('0x1f')](_0x4fffb1[_0x2a36('0x33')][_0x2a36('0x1f')]);_0x4f1023['offset']=qs[_0x2a36('0x1d')](_0x4fffb1['query'][_0x2a36('0x1d')]);}return _0x2b5fb0['getActions'](_0x4f1023);}})[_0x2a36('0x25')](function(_0x17785a){if(_0x17785a){return _0x17785a?{'count':_0x1291f5,'rows':_0x17785a}:null;}})[_0x2a36('0x25')](respondWithResult(_0x460e53,null))[_0x2a36('0x46')](handleError(_0x460e53,null));};
\ No newline at end of file
+var _0x5a9b=['intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','Trigger','includeAll','include','findAll','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAllId','addAnyCondition','Condition','getAllConditions','findOne','order','getAnyConditions','addAction','getActions','hasOwnProperty','eml-format','rimraf','zip-dir','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','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','Triggers','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','query','filters'];(function(_0x4fe6f,_0x512570){var _0x23faad=function(_0x35da7a){while(--_0x35da7a){_0x4fe6f['push'](_0x4fe6f['shift']());}};_0x23faad(++_0x512570);}(_0x5a9b,0xe7));var _0xb5a9=function(_0x2dea14,_0x5470ed){_0x2dea14=_0x2dea14-0x0;var _0x383bb7=_0x5a9b[_0x2dea14];return _0x383bb7;};'use strict';var emlformat=require(_0xb5a9('0x0'));var rimraf=require(_0xb5a9('0x1'));var zipdir=require(_0xb5a9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb5a9('0x3'));var moment=require(_0xb5a9('0x4'));var BPromise=require(_0xb5a9('0x5'));var Mustache=require(_0xb5a9('0x6'));var util=require(_0xb5a9('0x7'));var path=require(_0xb5a9('0x8'));var sox=require(_0xb5a9('0x9'));var csv=require(_0xb5a9('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb5a9('0xb'));var _=require(_0xb5a9('0xc'));var squel=require(_0xb5a9('0xd'));var crypto=require(_0xb5a9('0xe'));var jsforce=require(_0xb5a9('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb5a9('0x10'));var Papa=require(_0xb5a9('0x11'));var Redis=require(_0xb5a9('0x12'));var authService=require(_0xb5a9('0x13'));var qs=require(_0xb5a9('0x14'));var as=require(_0xb5a9('0x15'));var hardwareService=require(_0xb5a9('0x16'));var logger=require('../../config/logger')(_0xb5a9('0x17'));var utils=require(_0xb5a9('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb5a9('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x389981,_0x25cd14){_0x25cd14=_0x25cd14||0xcc;return function(_0xe813e){if(_0xe813e){return _0x389981[_0xb5a9('0x1a')](_0x25cd14);}return _0x389981[_0xb5a9('0x1b')](_0x25cd14)[_0xb5a9('0x1c')]();};}function respondWithResult(_0x373a0d,_0x314bb6){_0x314bb6=_0x314bb6||0xc8;return function(_0x1acb91){if(_0x1acb91){return _0x373a0d[_0xb5a9('0x1b')](_0x314bb6)[_0xb5a9('0x1d')](_0x1acb91);}};}function respondWithFilteredResult(_0x1f6ec6,_0x6a4084){return function(_0x2f260f){if(_0x2f260f){var _0x10ba70=typeof _0x6a4084['offset']==='undefined'&&typeof _0x6a4084['limit']===_0xb5a9('0x1e');var _0x103a6f=_0x2f260f[_0xb5a9('0x1f')];var _0x1062c2=_0x10ba70?0x0:_0x6a4084[_0xb5a9('0x20')];var _0x23c6af=_0x10ba70?_0x2f260f[_0xb5a9('0x1f')]:_0x6a4084[_0xb5a9('0x20')]+_0x6a4084[_0xb5a9('0x21')];var _0x5474bf;if(_0x23c6af>=_0x103a6f){_0x23c6af=_0x103a6f;_0x5474bf=0xc8;}else{_0x5474bf=0xce;}_0x1f6ec6[_0xb5a9('0x1b')](_0x5474bf);return _0x1f6ec6[_0xb5a9('0x22')](_0xb5a9('0x23'),_0x1062c2+'-'+_0x23c6af+'/'+_0x103a6f)['json'](_0x2f260f);}return null;};}function patchUpdates(_0x27dbae){return function(_0x531e15){try{jsonpatch[_0xb5a9('0x24')](_0x531e15,_0x27dbae,!![]);}catch(_0x16c1c0){return BPromise[_0xb5a9('0x25')](_0x16c1c0);}return _0x531e15[_0xb5a9('0x26')]();};}function saveUpdates(_0x449893,_0x54041b){return function(_0x43a615){if(_0x43a615){return _0x43a615['update'](_0x449893)[_0xb5a9('0x27')](function(_0x2a92a){return _0x2a92a;});}return null;};}function removeEntity(_0x51f4eb,_0x4aa909){return function(_0x477c2f){if(_0x477c2f){return _0x477c2f[_0xb5a9('0x28')]()[_0xb5a9('0x27')](function(){var _0x95b148=_0x477c2f[_0xb5a9('0x29')]({'plain':!![]});var _0x192194=_0xb5a9('0x2a');return db[_0xb5a9('0x2b')]['destroy']({'where':{'type':_0x192194,'resourceId':_0x95b148['id']}})[_0xb5a9('0x27')](function(){return _0x477c2f;});})['then'](function(){_0x51f4eb[_0xb5a9('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32ce0b,_0x1459cd){return function(_0x596245){if(!_0x596245){_0x32ce0b[_0xb5a9('0x1a')](0x194);}return _0x596245;};}function handleError(_0x3c09d1,_0x19fedb){_0x19fedb=_0x19fedb||0x1f4;return function(_0x184980){logger[_0xb5a9('0x2c')](_0x184980[_0xb5a9('0x2d')]);if(_0x184980[_0xb5a9('0x2e')]){delete _0x184980[_0xb5a9('0x2e')];}_0x3c09d1[_0xb5a9('0x1b')](_0x19fedb)[_0xb5a9('0x2f')](_0x184980);};}exports[_0xb5a9('0x30')]=function(_0x36d19a,_0xc79598){var _0x3b93fe={},_0xb0767b={},_0x25cf09={'count':0x0,'rows':[]};var _0x453fa4=_['map'](db['Trigger'][_0xb5a9('0x31')],function(_0x2c4726){return{'name':_0x2c4726[_0xb5a9('0x32')],'type':_0x2c4726[_0xb5a9('0x33')][_0xb5a9('0x34')]};});_0xb0767b[_0xb5a9('0x35')]=_['map'](_0x453fa4,_0xb5a9('0x2e'));_0xb0767b['query']=_[_0xb5a9('0x36')](_0x36d19a[_0xb5a9('0x37')]);_0xb0767b[_0xb5a9('0x38')]=_[_0xb5a9('0x39')](_0xb0767b[_0xb5a9('0x35')],_0xb0767b[_0xb5a9('0x37')]);_0x3b93fe[_0xb5a9('0x3a')]=_[_0xb5a9('0x39')](_0xb0767b[_0xb5a9('0x35')],qs[_0xb5a9('0x3b')](_0x36d19a[_0xb5a9('0x37')][_0xb5a9('0x3b')]));_0x3b93fe[_0xb5a9('0x3a')]=_0x3b93fe['attributes']['length']?_0x3b93fe[_0xb5a9('0x3a')]:_0xb0767b['model'];if(!_0x36d19a[_0xb5a9('0x37')]['hasOwnProperty'](_0xb5a9('0x3c'))){_0x3b93fe[_0xb5a9('0x21')]=qs['limit'](_0x36d19a[_0xb5a9('0x37')]['limit']);_0x3b93fe[_0xb5a9('0x20')]=qs[_0xb5a9('0x20')](_0x36d19a[_0xb5a9('0x37')]['offset']);}_0x3b93fe['order']=qs[_0xb5a9('0x3d')](_0x36d19a['query']['sort']);_0x3b93fe[_0xb5a9('0x3e')]=qs['filters'](_[_0xb5a9('0x3f')](_0x36d19a[_0xb5a9('0x37')],_0xb0767b[_0xb5a9('0x38')]),_0x453fa4);if(_0x36d19a[_0xb5a9('0x37')][_0xb5a9('0x40')]){_0x3b93fe[_0xb5a9('0x3e')]=_[_0xb5a9('0x41')](_0x3b93fe[_0xb5a9('0x3e')],{'$or':_[_0xb5a9('0x42')](_0x453fa4,function(_0x36dd1b){if(_0x36dd1b[_0xb5a9('0x33')]!==_0xb5a9('0x43')){var _0x5c88a3={};_0x5c88a3[_0x36dd1b[_0xb5a9('0x2e')]]={'$like':'%'+_0x36d19a[_0xb5a9('0x37')][_0xb5a9('0x40')]+'%'};return _0x5c88a3;}})});}_0x3b93fe=_[_0xb5a9('0x41')]({},_0x3b93fe,_0x36d19a[_0xb5a9('0x44')]);var _0xc6e7ca={'where':_0x3b93fe[_0xb5a9('0x3e')]};return db[_0xb5a9('0x45')][_0xb5a9('0x1f')](_0xc6e7ca)[_0xb5a9('0x27')](function(_0x3c3994){_0x25cf09[_0xb5a9('0x1f')]=_0x3c3994;if(_0x36d19a[_0xb5a9('0x37')][_0xb5a9('0x46')]){_0x3b93fe[_0xb5a9('0x47')]=[{'all':!![]}];}return db[_0xb5a9('0x45')][_0xb5a9('0x48')](_0x3b93fe);})[_0xb5a9('0x27')](function(_0x400cd8){_0x25cf09['rows']=_0x400cd8;return _0x25cf09;})['then'](respondWithFilteredResult(_0xc79598,_0x3b93fe))[_0xb5a9('0x49')](handleError(_0xc79598,null));};exports[_0xb5a9('0x4a')]=function(_0x16a8c9,_0x16f12a){var _0x4e3a0d={'raw':![],'where':{'id':_0x16a8c9[_0xb5a9('0x4b')]['id']}},_0x854bbf={};_0x854bbf[_0xb5a9('0x35')]=_['keys'](db[_0xb5a9('0x45')][_0xb5a9('0x31')]);_0x854bbf[_0xb5a9('0x37')]=_['keys'](_0x16a8c9['query']);_0x854bbf['filters']=_[_0xb5a9('0x39')](_0x854bbf[_0xb5a9('0x35')],_0x854bbf[_0xb5a9('0x37')]);_0x4e3a0d[_0xb5a9('0x3a')]=_['intersection'](_0x854bbf['model'],qs[_0xb5a9('0x3b')](_0x16a8c9[_0xb5a9('0x37')][_0xb5a9('0x3b')]));_0x4e3a0d[_0xb5a9('0x3a')]=_0x4e3a0d[_0xb5a9('0x3a')][_0xb5a9('0x4c')]?_0x4e3a0d[_0xb5a9('0x3a')]:_0x854bbf[_0xb5a9('0x35')];if(_0x16a8c9[_0xb5a9('0x37')][_0xb5a9('0x46')]){_0x4e3a0d[_0xb5a9('0x47')]=[{'all':!![]}];}_0x4e3a0d=_['merge']({},_0x4e3a0d,_0x16a8c9[_0xb5a9('0x44')]);return db[_0xb5a9('0x45')][_0xb5a9('0x4d')](_0x4e3a0d)[_0xb5a9('0x27')](handleEntityNotFound(_0x16f12a,null))[_0xb5a9('0x27')](respondWithResult(_0x16f12a,null))[_0xb5a9('0x49')](handleError(_0x16f12a,null));};exports[_0xb5a9('0x4e')]=function(_0x176742,_0x34e724){return db[_0xb5a9('0x45')]['create'](_0x176742[_0xb5a9('0x4f')],{})[_0xb5a9('0x27')](function(_0x31b927){var _0x44b512=_0x176742[_0xb5a9('0x50')][_0xb5a9('0x29')]({'plain':!![]});if(!_0x44b512)throw new Error(_0xb5a9('0x51'));if(_0x44b512[_0xb5a9('0x52')]==='user'){var _0x5a6a87=_0x31b927['get']({'plain':!![]});var _0x130dc0=_0xb5a9('0x2a');return db['UserProfileSection'][_0xb5a9('0x4d')]({'where':{'name':_0x130dc0,'userProfileId':_0x44b512['userProfileId']},'raw':!![]})[_0xb5a9('0x27')](function(_0x10a8d6){if(_0x10a8d6&&_0x10a8d6['autoAssociation']===0x0){return db[_0xb5a9('0x2b')][_0xb5a9('0x4e')]({'name':_0x5a6a87[_0xb5a9('0x2e')],'resourceId':_0x5a6a87['id'],'type':_0x10a8d6['name'],'sectionId':_0x10a8d6['id']},{})['then'](function(){return _0x31b927;});}else{return _0x31b927;}})[_0xb5a9('0x49')](function(_0x233b32){logger['error'](_0xb5a9('0x53'),_0x233b32);throw _0x233b32;});}return _0x31b927;})['then'](respondWithResult(_0x34e724,0xc9))[_0xb5a9('0x49')](handleError(_0x34e724,null));};exports[_0xb5a9('0x54')]=function(_0x34109b,_0x2ef629){if(_0x34109b[_0xb5a9('0x4f')]['id']){delete _0x34109b[_0xb5a9('0x4f')]['id'];}return db[_0xb5a9('0x45')]['find']({'where':{'id':_0x34109b['params']['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x2ef629,null))[_0xb5a9('0x27')](saveUpdates(_0x34109b[_0xb5a9('0x4f')],null))[_0xb5a9('0x27')](respondWithResult(_0x2ef629,null))[_0xb5a9('0x49')](handleError(_0x2ef629,null));};exports[_0xb5a9('0x28')]=function(_0xf241bb,_0x17f1a6){return db[_0xb5a9('0x45')][_0xb5a9('0x4d')]({'where':{'id':_0xf241bb[_0xb5a9('0x4b')]['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x17f1a6,null))['then'](removeEntity(_0x17f1a6,null))[_0xb5a9('0x49')](handleError(_0x17f1a6,null));};exports[_0xb5a9('0x55')]=function(_0x105688,_0x3ccf20,_0x34e51f){if(_0x105688[_0xb5a9('0x4f')]['id']){delete _0x105688['body']['id'];}return db[_0xb5a9('0x45')][_0xb5a9('0x4d')]({'where':{'id':_0x105688[_0xb5a9('0x4b')]['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x3ccf20,null))[_0xb5a9('0x27')](function(_0x5e4a75){if(_0x5e4a75){_0x105688[_0xb5a9('0x4f')][_0xb5a9('0x56')]=_0x5e4a75['id'];return db['Condition'][_0xb5a9('0x4e')](_0x105688[_0xb5a9('0x4f')]);}})[_0xb5a9('0x27')](respondWithResult(_0x3ccf20,null))[_0xb5a9('0x49')](handleError(_0x3ccf20,null));};exports[_0xb5a9('0x57')]=function(_0x1476d3,_0x32de02,_0x327727){if(_0x1476d3[_0xb5a9('0x4f')]['id']){delete _0x1476d3[_0xb5a9('0x4f')]['id'];}return db['Trigger']['find']({'where':{'id':_0x1476d3[_0xb5a9('0x4b')]['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x32de02,null))[_0xb5a9('0x27')](function(_0xbabbc0){if(_0xbabbc0){_0x1476d3[_0xb5a9('0x4f')]['TriggerAnyId']=_0xbabbc0['id'];return db[_0xb5a9('0x58')]['create'](_0x1476d3[_0xb5a9('0x4f')]);}})[_0xb5a9('0x27')](respondWithResult(_0x32de02,null))['catch'](handleError(_0x32de02,null));};exports[_0xb5a9('0x59')]=function(_0x29689b,_0x491ba4,_0x1922d5){var _0xcbd26a={};var _0x108503={};var _0x3ac2f0;var _0x31b4bf;return db[_0xb5a9('0x45')][_0xb5a9('0x5a')]({'where':{'id':_0x29689b[_0xb5a9('0x4b')]['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x491ba4,null))[_0xb5a9('0x27')](function(_0x4ae3fe){if(_0x4ae3fe){_0x3ac2f0=_0x4ae3fe;_0x108503[_0xb5a9('0x35')]=_['keys'](db[_0xb5a9('0x58')]['rawAttributes']);_0x108503[_0xb5a9('0x37')]=_[_0xb5a9('0x36')](_0x29689b[_0xb5a9('0x37')]);_0x108503[_0xb5a9('0x38')]=_[_0xb5a9('0x39')](_0x108503[_0xb5a9('0x35')],_0x108503['query']);_0xcbd26a[_0xb5a9('0x3a')]=_[_0xb5a9('0x39')](_0x108503[_0xb5a9('0x35')],qs['fields'](_0x29689b[_0xb5a9('0x37')][_0xb5a9('0x3b')]));_0xcbd26a[_0xb5a9('0x3a')]=_0xcbd26a[_0xb5a9('0x3a')][_0xb5a9('0x4c')]?_0xcbd26a['attributes']:_0x108503['model'];_0xcbd26a[_0xb5a9('0x5b')]=qs[_0xb5a9('0x3d')](_0x29689b['query'][_0xb5a9('0x3d')]);_0xcbd26a[_0xb5a9('0x3e')]=qs['filters'](_[_0xb5a9('0x3f')](_0x29689b[_0xb5a9('0x37')],_0x108503[_0xb5a9('0x38')]));if(_0x29689b[_0xb5a9('0x37')][_0xb5a9('0x40')]){_0xcbd26a[_0xb5a9('0x3e')]=_['merge'](_0xcbd26a[_0xb5a9('0x3e')],{'$or':_['map'](_0xcbd26a[_0xb5a9('0x3a')],function(_0x35dcf7){var _0x424257={};_0x424257[_0x35dcf7]={'$like':'%'+_0x29689b[_0xb5a9('0x37')][_0xb5a9('0x40')]+'%'};return _0x424257;})});}_0xcbd26a=_[_0xb5a9('0x41')]({},_0xcbd26a,_0x29689b[_0xb5a9('0x44')]);return _0x3ac2f0[_0xb5a9('0x59')](_0xcbd26a);}})['then'](function(_0x483323){if(_0x483323){_0x31b4bf=_0x483323['length'];if(!_0x29689b[_0xb5a9('0x37')]['hasOwnProperty'](_0xb5a9('0x3c'))){_0xcbd26a['limit']=qs[_0xb5a9('0x21')](_0x29689b[_0xb5a9('0x37')][_0xb5a9('0x21')]);_0xcbd26a[_0xb5a9('0x20')]=qs[_0xb5a9('0x20')](_0x29689b[_0xb5a9('0x37')]['offset']);}return _0x3ac2f0['getAllConditions'](_0xcbd26a);}})[_0xb5a9('0x27')](function(_0xe3bc8d){if(_0xe3bc8d){return _0xe3bc8d?{'count':_0x31b4bf,'rows':_0xe3bc8d}:null;}})[_0xb5a9('0x27')](respondWithResult(_0x491ba4,null))[_0xb5a9('0x49')](handleError(_0x491ba4,null));};exports[_0xb5a9('0x5c')]=function(_0x2c2128,_0x295105,_0x561e27){var _0x5f3fba={};var _0x199685={};var _0x1869e0;var _0x28d22d;return db[_0xb5a9('0x45')][_0xb5a9('0x5a')]({'where':{'id':_0x2c2128['params']['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x295105,null))[_0xb5a9('0x27')](function(_0x273808){if(_0x273808){_0x1869e0=_0x273808;_0x199685[_0xb5a9('0x35')]=_[_0xb5a9('0x36')](db[_0xb5a9('0x58')][_0xb5a9('0x31')]);_0x199685[_0xb5a9('0x37')]=_[_0xb5a9('0x36')](_0x2c2128[_0xb5a9('0x37')]);_0x199685[_0xb5a9('0x38')]=_['intersection'](_0x199685['model'],_0x199685[_0xb5a9('0x37')]);_0x5f3fba['attributes']=_[_0xb5a9('0x39')](_0x199685[_0xb5a9('0x35')],qs[_0xb5a9('0x3b')](_0x2c2128['query'][_0xb5a9('0x3b')]));_0x5f3fba['attributes']=_0x5f3fba[_0xb5a9('0x3a')]['length']?_0x5f3fba[_0xb5a9('0x3a')]:_0x199685['model'];_0x5f3fba[_0xb5a9('0x5b')]=qs['sort'](_0x2c2128[_0xb5a9('0x37')][_0xb5a9('0x3d')]);_0x5f3fba[_0xb5a9('0x3e')]=qs['filters'](_['pick'](_0x2c2128[_0xb5a9('0x37')],_0x199685[_0xb5a9('0x38')]));if(_0x2c2128[_0xb5a9('0x37')]['filter']){_0x5f3fba['where']=_[_0xb5a9('0x41')](_0x5f3fba[_0xb5a9('0x3e')],{'$or':_[_0xb5a9('0x42')](_0x5f3fba['attributes'],function(_0x67da25){var _0x1bb12d={};_0x1bb12d[_0x67da25]={'$like':'%'+_0x2c2128[_0xb5a9('0x37')][_0xb5a9('0x40')]+'%'};return _0x1bb12d;})});}_0x5f3fba=_[_0xb5a9('0x41')]({},_0x5f3fba,_0x2c2128[_0xb5a9('0x44')]);return _0x1869e0[_0xb5a9('0x5c')](_0x5f3fba);}})[_0xb5a9('0x27')](function(_0x1f177a){if(_0x1f177a){_0x28d22d=_0x1f177a['length'];if(!_0x2c2128[_0xb5a9('0x37')]['hasOwnProperty'](_0xb5a9('0x3c'))){_0x5f3fba['limit']=qs['limit'](_0x2c2128[_0xb5a9('0x37')]['limit']);_0x5f3fba[_0xb5a9('0x20')]=qs[_0xb5a9('0x20')](_0x2c2128['query'][_0xb5a9('0x20')]);}return _0x1869e0[_0xb5a9('0x5c')](_0x5f3fba);}})[_0xb5a9('0x27')](function(_0x3f5cd7){if(_0x3f5cd7){return _0x3f5cd7?{'count':_0x28d22d,'rows':_0x3f5cd7}:null;}})[_0xb5a9('0x27')](respondWithResult(_0x295105,null))[_0xb5a9('0x49')](handleError(_0x295105,null));};exports[_0xb5a9('0x5d')]=function(_0x1d9adf,_0x4b40cd,_0x2d93ee){if(_0x1d9adf['body']['id']){delete _0x1d9adf[_0xb5a9('0x4f')]['id'];}return db[_0xb5a9('0x45')][_0xb5a9('0x4d')]({'where':{'id':_0x1d9adf[_0xb5a9('0x4b')]['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x4b40cd,null))[_0xb5a9('0x27')](function(_0x1b66aa){if(_0x1b66aa){_0x1d9adf['body']['TriggerId']=_0x1b66aa['id'];return db['Action'][_0xb5a9('0x4e')](_0x1d9adf['body']);}})[_0xb5a9('0x27')](respondWithResult(_0x4b40cd,null))[_0xb5a9('0x49')](handleError(_0x4b40cd,null));};exports['getActions']=function(_0x1db998,_0x4742c7,_0x12055e){var _0x181e8e={};var _0x357722={};var _0x984a40;var _0x305663;return db[_0xb5a9('0x45')][_0xb5a9('0x5a')]({'where':{'id':_0x1db998[_0xb5a9('0x4b')]['id']}})[_0xb5a9('0x27')](handleEntityNotFound(_0x4742c7,null))[_0xb5a9('0x27')](function(_0x3934ff){if(_0x3934ff){_0x984a40=_0x3934ff;_0x357722[_0xb5a9('0x35')]=_[_0xb5a9('0x36')](db['Action']['rawAttributes']);_0x357722[_0xb5a9('0x37')]=_[_0xb5a9('0x36')](_0x1db998[_0xb5a9('0x37')]);_0x357722['filters']=_['intersection'](_0x357722[_0xb5a9('0x35')],_0x357722[_0xb5a9('0x37')]);_0x181e8e[_0xb5a9('0x3a')]=_[_0xb5a9('0x39')](_0x357722['model'],qs[_0xb5a9('0x3b')](_0x1db998[_0xb5a9('0x37')][_0xb5a9('0x3b')]));_0x181e8e[_0xb5a9('0x3a')]=_0x181e8e['attributes'][_0xb5a9('0x4c')]?_0x181e8e[_0xb5a9('0x3a')]:_0x357722['model'];_0x181e8e['order']=qs['sort'](_0x1db998[_0xb5a9('0x37')][_0xb5a9('0x3d')]);_0x181e8e['where']=qs[_0xb5a9('0x38')](_[_0xb5a9('0x3f')](_0x1db998[_0xb5a9('0x37')],_0x357722[_0xb5a9('0x38')]));if(_0x1db998[_0xb5a9('0x37')][_0xb5a9('0x40')]){_0x181e8e[_0xb5a9('0x3e')]=_[_0xb5a9('0x41')](_0x181e8e[_0xb5a9('0x3e')],{'$or':_[_0xb5a9('0x42')](_0x181e8e[_0xb5a9('0x3a')],function(_0x784151){var _0x49eb86={};_0x49eb86[_0x784151]={'$like':'%'+_0x1db998[_0xb5a9('0x37')]['filter']+'%'};return _0x49eb86;})});}_0x181e8e=_['merge']({},_0x181e8e,_0x1db998[_0xb5a9('0x44')]);return _0x984a40[_0xb5a9('0x5e')](_0x181e8e);}})['then'](function(_0x599227){if(_0x599227){_0x305663=_0x599227[_0xb5a9('0x4c')];if(!_0x1db998[_0xb5a9('0x37')][_0xb5a9('0x5f')](_0xb5a9('0x3c'))){_0x181e8e[_0xb5a9('0x21')]=qs['limit'](_0x1db998[_0xb5a9('0x37')][_0xb5a9('0x21')]);_0x181e8e['offset']=qs[_0xb5a9('0x20')](_0x1db998[_0xb5a9('0x37')][_0xb5a9('0x20')]);}return _0x984a40[_0xb5a9('0x5e')](_0x181e8e);}})[_0xb5a9('0x27')](function(_0x19bee6){if(_0x19bee6){return _0x19bee6?{'count':_0x305663,'rows':_0x19bee6}:null;}})['then'](respondWithResult(_0x4742c7,null))[_0xb5a9('0x49')](handleError(_0x4742c7,null));};
\ No newline at end of file
index ac87859..5d82bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46fc=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','Trigger','tools_triggers','lodash'];(function(_0xa3463d,_0x32f8da){var _0x50fd67=function(_0xb984fd){while(--_0xb984fd){_0xa3463d['push'](_0xa3463d['shift']());}};_0x50fd67(++_0x32f8da);}(_0x46fc,0x103));var _0xc46f=function(_0x3b3f80,_0x26f16a){_0x3b3f80=_0x3b3f80-0x0;var _0x5348cc=_0x46fc[_0x3b3f80];return _0x5348cc;};'use strict';var _=require(_0xc46f('0x0'));var util=require(_0xc46f('0x1'));var logger=require(_0xc46f('0x2'))(_0xc46f('0x3'));var moment=require(_0xc46f('0x4'));var BPromise=require(_0xc46f('0x5'));var rp=require(_0xc46f('0x6'));var fs=require('fs');var path=require(_0xc46f('0x7'));var rimraf=require(_0xc46f('0x8'));var config=require('../../config/environment');var attributes=require('./trigger.attributes');module[_0xc46f('0x9')]=function(_0x176c6f,_0x30ca8d){return _0x176c6f[_0xc46f('0xa')](_0xc46f('0xb'),attributes,{'tableName':_0xc46f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./trigger.attributes','define','Trigger','tools_triggers','../../config/logger','api','moment','bluebird'];(function(_0x28812e,_0xd6124b){var _0x3ff0bf=function(_0x3f3f72){while(--_0x3f3f72){_0x28812e['push'](_0x28812e['shift']());}};_0x3ff0bf(++_0xd6124b);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7963221..f2c86bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae84=['request\x20sent','stringify','error','code','message','info','catch','GetTrigger','Trigger','findAll','options','where','attributes','limit','include','map','model','ShowTrigger','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s'];(function(_0x273235,_0x377f9a){var _0x360339=function(_0x5da624){while(--_0x5da624){_0x273235['push'](_0x273235['shift']());}};_0x360339(++_0x377f9a);}(_0xae84,0x160));var _0x4ae8=function(_0x4cc405,_0xee814d){_0x4cc405=_0x4cc405-0x0;var _0x220213=_0xae84[_0x4cc405];return _0x220213;};'use strict';var _=require(_0x4ae8('0x0'));var util=require(_0x4ae8('0x1'));var moment=require(_0x4ae8('0x2'));var BPromise=require(_0x4ae8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ae8('0x4'));var db=require(_0x4ae8('0x5'))['db'];var utils=require(_0x4ae8('0x6'));var logger=require(_0x4ae8('0x7'))(_0x4ae8('0x8'));var config=require(_0x4ae8('0x9'));var jayson=require(_0x4ae8('0xa'));var client=jayson[_0x4ae8('0xb')][_0x4ae8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x299a15,_0x51ea13,_0x3c6c8c){return new BPromise(function(_0x5471fd,_0x2ee342){return client[_0x4ae8('0xd')](_0x299a15,_0x3c6c8c)[_0x4ae8('0xe')](function(_0x2fa9a6){logger['info'](_0x4ae8('0xf'),_0x51ea13,'request\x20sent');logger[_0x4ae8('0x10')](_0x4ae8('0x11'),_0x51ea13,_0x4ae8('0x12'),JSON[_0x4ae8('0x13')](_0x2fa9a6));if(_0x2fa9a6[_0x4ae8('0x14')]){if(_0x2fa9a6['error'][_0x4ae8('0x15')]===0x1f4){logger['error'](_0x4ae8('0xf'),_0x51ea13,_0x2fa9a6['error'][_0x4ae8('0x16')]);return _0x2ee342(_0x2fa9a6[_0x4ae8('0x14')][_0x4ae8('0x16')]);}logger[_0x4ae8('0x14')](_0x4ae8('0xf'),_0x51ea13,_0x2fa9a6[_0x4ae8('0x14')][_0x4ae8('0x16')]);return _0x5471fd(_0x2fa9a6[_0x4ae8('0x14')][_0x4ae8('0x16')]);}else{logger[_0x4ae8('0x17')]('Trigger,\x20%s,\x20%s',_0x51ea13,_0x4ae8('0x12'));_0x5471fd(_0x2fa9a6['result'][_0x4ae8('0x16')]);}})[_0x4ae8('0x18')](function(_0x4959e2){logger[_0x4ae8('0x14')](_0x4ae8('0xf'),_0x51ea13,_0x4959e2);_0x2ee342(_0x4959e2);});});}exports[_0x4ae8('0x19')]=function(_0x41a2a9){var _0x3e2dce=this;return new Promise(function(_0x20d329,_0x8b8768){return db[_0x4ae8('0x1a')][_0x4ae8('0x1b')]({'raw':_0x41a2a9['options']?_0x41a2a9[_0x4ae8('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x41a2a9['options']?_0x41a2a9[_0x4ae8('0x1c')][_0x4ae8('0x1d')]||null:null,'attributes':_0x41a2a9[_0x4ae8('0x1c')]?_0x41a2a9[_0x4ae8('0x1c')][_0x4ae8('0x1e')]||null:null,'limit':_0x41a2a9[_0x4ae8('0x1c')]?_0x41a2a9[_0x4ae8('0x1c')][_0x4ae8('0x1f')]||null:null,'include':_0x41a2a9[_0x4ae8('0x1c')]?_0x41a2a9['options'][_0x4ae8('0x20')]?_[_0x4ae8('0x21')](_0x41a2a9[_0x4ae8('0x1c')][_0x4ae8('0x20')],function(_0x3c0644){return{'model':db[_0x3c0644[_0x4ae8('0x22')]],'as':_0x3c0644['as'],'attributes':_0x3c0644[_0x4ae8('0x1e')],'include':_0x3c0644['include']?_[_0x4ae8('0x21')](_0x3c0644[_0x4ae8('0x20')],function(_0xc4345f){return{'model':db[_0xc4345f['model']],'as':_0xc4345f['as'],'attributes':_0xc4345f[_0x4ae8('0x1e')],'include':_0xc4345f[_0x4ae8('0x20')]?_[_0x4ae8('0x21')](_0xc4345f[_0x4ae8('0x20')],function(_0x120aa8){return{'model':db[_0x120aa8[_0x4ae8('0x22')]],'as':_0x120aa8['as'],'attributes':_0x120aa8[_0x4ae8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4ae8('0xe')](function(_0x4ad251){logger[_0x4ae8('0x17')](_0x4ae8('0x19'),_0x41a2a9);logger[_0x4ae8('0x10')](_0x4ae8('0x19'),_0x41a2a9,JSON['stringify'](_0x4ad251));_0x20d329(_0x4ad251);})['catch'](function(_0x263529){logger[_0x4ae8('0x14')](_0x4ae8('0x19'),_0x263529[_0x4ae8('0x16')],_0x41a2a9);_0x8b8768(_0x3e2dce['error'](0x1f4,_0x263529['message']));});});};exports[_0x4ae8('0x23')]=function(_0x266733){var _0x10334c=this;return new Promise(function(_0x2a5b9a,_0x4dc005){return db[_0x4ae8('0x1a')][_0x4ae8('0x24')]({'raw':_0x266733[_0x4ae8('0x1c')]?_0x266733['options']['raw']===undefined?!![]:![]:!![],'where':_0x266733['options']?_0x266733[_0x4ae8('0x1c')][_0x4ae8('0x1d')]||null:null,'attributes':_0x266733[_0x4ae8('0x1c')]?_0x266733[_0x4ae8('0x1c')][_0x4ae8('0x1e')]||null:null,'include':_0x266733[_0x4ae8('0x1c')]?_0x266733[_0x4ae8('0x1c')][_0x4ae8('0x20')]?_[_0x4ae8('0x21')](_0x266733['options']['include'],function(_0x1cc391){return{'model':db[_0x1cc391[_0x4ae8('0x22')]],'as':_0x1cc391['as'],'attributes':_0x1cc391[_0x4ae8('0x1e')],'include':_0x1cc391[_0x4ae8('0x20')]?_[_0x4ae8('0x21')](_0x1cc391[_0x4ae8('0x20')],function(_0x25349c){return{'model':db[_0x25349c[_0x4ae8('0x22')]],'as':_0x25349c['as'],'attributes':_0x25349c[_0x4ae8('0x1e')],'include':_0x25349c[_0x4ae8('0x20')]?_[_0x4ae8('0x21')](_0x25349c['include'],function(_0x61d677){return{'model':db[_0x61d677[_0x4ae8('0x22')]],'as':_0x61d677['as'],'attributes':_0x61d677[_0x4ae8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4ae8('0xe')](function(_0x38524d){logger['info'](_0x4ae8('0x23'),_0x266733);logger['debug'](_0x4ae8('0x23'),_0x266733,JSON[_0x4ae8('0x13')](_0x38524d));_0x2a5b9a(_0x38524d);})[_0x4ae8('0x18')](function(_0x108788){logger[_0x4ae8('0x14')]('ShowTrigger',_0x108788[_0x4ae8('0x16')],_0x266733);_0x4dc005(_0x10334c[_0x4ae8('0x14')](0x1f4,_0x108788['message']));});});};
\ No newline at end of file
+var _0xfe69=['client','http','request','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Trigger','findAll','options','raw','where','limit','map','include','model','attributes','then','GetTrigger','ShowTrigger','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x24c405,_0x56d6fb){var _0x383aef=function(_0x20da69){while(--_0x20da69){_0x24c405['push'](_0x24c405['shift']());}};_0x383aef(++_0x56d6fb);}(_0xfe69,0x1b3));var _0x9fe6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfe69[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9fe6('0x0'));var util=require(_0x9fe6('0x1'));var moment=require('moment');var BPromise=require(_0x9fe6('0x2'));var rs=require(_0x9fe6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9fe6('0x4'))['db'];var utils=require(_0x9fe6('0x5'));var logger=require(_0x9fe6('0x6'))(_0x9fe6('0x7'));var config=require(_0x9fe6('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9fe6('0x9')][_0x9fe6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf878d8,_0x525c09,_0x362e51){return new BPromise(function(_0xee2730,_0x2f6d7e){return client[_0x9fe6('0xb')](_0xf878d8,_0x362e51)['then'](function(_0x170431){logger[_0x9fe6('0xc')](_0x9fe6('0xd'),_0x525c09,_0x9fe6('0xe'));logger[_0x9fe6('0xf')](_0x9fe6('0x10'),_0x525c09,_0x9fe6('0xe'),JSON[_0x9fe6('0x11')](_0x170431));if(_0x170431[_0x9fe6('0x12')]){if(_0x170431['error'][_0x9fe6('0x13')]===0x1f4){logger[_0x9fe6('0x12')](_0x9fe6('0xd'),_0x525c09,_0x170431[_0x9fe6('0x12')][_0x9fe6('0x14')]);return _0x2f6d7e(_0x170431['error']['message']);}logger[_0x9fe6('0x12')](_0x9fe6('0xd'),_0x525c09,_0x170431[_0x9fe6('0x12')]['message']);return _0xee2730(_0x170431['error']['message']);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x525c09,_0x9fe6('0xe'));_0xee2730(_0x170431[_0x9fe6('0x15')][_0x9fe6('0x14')]);}})[_0x9fe6('0x16')](function(_0x18df3b){logger[_0x9fe6('0x12')](_0x9fe6('0xd'),_0x525c09,_0x18df3b);_0x2f6d7e(_0x18df3b);});});}exports['GetTrigger']=function(_0x4e5e51){var _0x23c355=this;return new Promise(function(_0x42c15e,_0x3dfe7a){return db[_0x9fe6('0x17')][_0x9fe6('0x18')]({'raw':_0x4e5e51[_0x9fe6('0x19')]?_0x4e5e51[_0x9fe6('0x19')][_0x9fe6('0x1a')]===undefined?!![]:![]:!![],'where':_0x4e5e51[_0x9fe6('0x19')]?_0x4e5e51[_0x9fe6('0x19')][_0x9fe6('0x1b')]||null:null,'attributes':_0x4e5e51[_0x9fe6('0x19')]?_0x4e5e51[_0x9fe6('0x19')]['attributes']||null:null,'limit':_0x4e5e51[_0x9fe6('0x19')]?_0x4e5e51[_0x9fe6('0x19')][_0x9fe6('0x1c')]||null:null,'include':_0x4e5e51[_0x9fe6('0x19')]?_0x4e5e51['options']['include']?_[_0x9fe6('0x1d')](_0x4e5e51[_0x9fe6('0x19')][_0x9fe6('0x1e')],function(_0x34d267){return{'model':db[_0x34d267[_0x9fe6('0x1f')]],'as':_0x34d267['as'],'attributes':_0x34d267[_0x9fe6('0x20')],'include':_0x34d267[_0x9fe6('0x1e')]?_[_0x9fe6('0x1d')](_0x34d267[_0x9fe6('0x1e')],function(_0x505cc6){return{'model':db[_0x505cc6[_0x9fe6('0x1f')]],'as':_0x505cc6['as'],'attributes':_0x505cc6[_0x9fe6('0x20')],'include':_0x505cc6[_0x9fe6('0x1e')]?_[_0x9fe6('0x1d')](_0x505cc6[_0x9fe6('0x1e')],function(_0x5ac3cd){return{'model':db[_0x5ac3cd[_0x9fe6('0x1f')]],'as':_0x5ac3cd['as'],'attributes':_0x5ac3cd[_0x9fe6('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9fe6('0x21')](function(_0x130ada){logger[_0x9fe6('0xc')]('GetTrigger',_0x4e5e51);logger[_0x9fe6('0xf')](_0x9fe6('0x22'),_0x4e5e51,JSON['stringify'](_0x130ada));_0x42c15e(_0x130ada);})[_0x9fe6('0x16')](function(_0x9815ba){logger[_0x9fe6('0x12')](_0x9fe6('0x22'),_0x9815ba[_0x9fe6('0x14')],_0x4e5e51);_0x3dfe7a(_0x23c355['error'](0x1f4,_0x9815ba[_0x9fe6('0x14')]));});});};exports[_0x9fe6('0x23')]=function(_0x36f6f5){var _0x15b5b5=this;return new Promise(function(_0x117311,_0x952a90){return db[_0x9fe6('0x17')][_0x9fe6('0x24')]({'raw':_0x36f6f5[_0x9fe6('0x19')]?_0x36f6f5['options']['raw']===undefined?!![]:![]:!![],'where':_0x36f6f5[_0x9fe6('0x19')]?_0x36f6f5[_0x9fe6('0x19')][_0x9fe6('0x1b')]||null:null,'attributes':_0x36f6f5['options']?_0x36f6f5[_0x9fe6('0x19')][_0x9fe6('0x20')]||null:null,'include':_0x36f6f5[_0x9fe6('0x19')]?_0x36f6f5[_0x9fe6('0x19')][_0x9fe6('0x1e')]?_[_0x9fe6('0x1d')](_0x36f6f5['options']['include'],function(_0x15b7dc){return{'model':db[_0x15b7dc[_0x9fe6('0x1f')]],'as':_0x15b7dc['as'],'attributes':_0x15b7dc['attributes'],'include':_0x15b7dc[_0x9fe6('0x1e')]?_[_0x9fe6('0x1d')](_0x15b7dc[_0x9fe6('0x1e')],function(_0x2cc5f4){return{'model':db[_0x2cc5f4[_0x9fe6('0x1f')]],'as':_0x2cc5f4['as'],'attributes':_0x2cc5f4['attributes'],'include':_0x2cc5f4[_0x9fe6('0x1e')]?_[_0x9fe6('0x1d')](_0x2cc5f4[_0x9fe6('0x1e')],function(_0x56b0a2){return{'model':db[_0x56b0a2[_0x9fe6('0x1f')]],'as':_0x56b0a2['as'],'attributes':_0x56b0a2[_0x9fe6('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9fe6('0x21')](function(_0x5ad2eb){logger[_0x9fe6('0xc')](_0x9fe6('0x23'),_0x36f6f5);logger['debug']('ShowTrigger',_0x36f6f5,JSON[_0x9fe6('0x11')](_0x5ad2eb));_0x117311(_0x5ad2eb);})[_0x9fe6('0x16')](function(_0x491971){logger[_0x9fe6('0x12')](_0x9fe6('0x23'),_0x491971['message'],_0x36f6f5);_0x952a90(_0x15b5b5['error'](0x1f4,_0x491971[_0x9fe6('0x14')]));});});};
\ No newline at end of file
index bf1d861..672653e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a60=['isAuthenticated','show','post','/:id/clone','clone','create','put','/:id','update','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get'];(function(_0x373b45,_0x3fa078){var _0x5801f8=function(_0x250bda){while(--_0x250bda){_0x373b45['push'](_0x373b45['shift']());}};_0x5801f8(++_0x3fa078);}(_0x0a60,0x185));var _0x00a6=function(_0x1dcb84,_0x4facf7){_0x1dcb84=_0x1dcb84-0x0;var _0x1eaa5a=_0x0a60[_0x1dcb84];return _0x1eaa5a;};'use strict';var multer=require(_0x00a6('0x0'));var util=require(_0x00a6('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x00a6('0x2'));var router=express[_0x00a6('0x3')]();var fs_extra=require(_0x00a6('0x4'));var auth=require(_0x00a6('0x5'));var interaction=require(_0x00a6('0x6'));var config=require(_0x00a6('0x7'));var controller=require(_0x00a6('0x8'));router[_0x00a6('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x00a6('0xa')](),controller[_0x00a6('0xb')]);router[_0x00a6('0xc')](_0x00a6('0xd'),auth[_0x00a6('0xa')](),controller[_0x00a6('0xe')]);router[_0x00a6('0xc')]('/',auth[_0x00a6('0xa')](),controller[_0x00a6('0xf')]);router[_0x00a6('0x10')](_0x00a6('0x11'),auth[_0x00a6('0xa')](),controller[_0x00a6('0x12')]);router['delete'](_0x00a6('0x11'),auth['isAuthenticated'](),controller[_0x00a6('0x13')]);module[_0x00a6('0x14')]=router;
\ No newline at end of file
+var _0x501a=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./trunk.controller','get','isAuthenticated','index','/:id','clone','post','put','delete','destroy','exports','multer','util','path'];(function(_0x1e004c,_0x5500ea){var _0x2736a=function(_0x64ed81){while(--_0x64ed81){_0x1e004c['push'](_0x1e004c['shift']());}};_0x2736a(++_0x5500ea);}(_0x501a,0x75));var _0xa501=function(_0x5afa42,_0x30a006){_0x5afa42=_0x5afa42-0x0;var _0x10e567=_0x501a[_0x5afa42];return _0x10e567;};'use strict';var multer=require(_0xa501('0x0'));var util=require(_0xa501('0x1'));var path=require(_0xa501('0x2'));var timeout=require(_0xa501('0x3'));var express=require(_0xa501('0x4'));var router=express[_0xa501('0x5')]();var fs_extra=require(_0xa501('0x6'));var auth=require(_0xa501('0x7'));var interaction=require(_0xa501('0x8'));var config=require('../../config/environment');var controller=require(_0xa501('0x9'));router[_0xa501('0xa')]('/',auth[_0xa501('0xb')](),controller[_0xa501('0xc')]);router[_0xa501('0xa')](_0xa501('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/:id/clone',auth[_0xa501('0xb')](),controller[_0xa501('0xe')]);router[_0xa501('0xf')]('/',auth[_0xa501('0xb')](),controller['create']);router[_0xa501('0x10')](_0xa501('0xd'),auth[_0xa501('0xb')](),controller['update']);router[_0xa501('0x11')]('/:id',auth[_0xa501('0xb')](),controller[_0xa501('0x12')]);module[_0xa501('0x13')]=router;
\ No newline at end of file
index f0fa9f5..146c93b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffae=['pai','fingerprint','certificate','passive','actpass','nonat','update,nonat','exports','STRING','ENUM','friend','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','update','outgoing','yes','force_rport,comedia','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','refuse','uac','uas'];(function(_0x5e5f5a,_0x5cb19a){var _0x4141ae=function(_0x4bb2ea){while(--_0x4bb2ea){_0x5e5f5a['push'](_0x5e5f5a['shift']());}};_0x4141ae(++_0x5cb19a);}(_0xffae,0x1f1));var _0xeffa=function(_0x5e6ae3,_0x16e352){_0x5e6ae3=_0x5e6ae3-0x0;var _0x23c80b=_0xffae[_0x5e6ae3];return _0x23c80b;};'use strict';var Sequelize=require('sequelize');module[_0xeffa('0x0')]={'name':{'type':Sequelize[_0xeffa('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x3'),_0xeffa('0x4'),'peer'),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xeffa('0x1')],'allowNull':![],'defaultValue':_0xeffa('0x5')},'callingpres':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x6'),'ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN',_0xeffa('0x7'),'PROHIB_NOT_SCREENED',_0xeffa('0x8'),_0xeffa('0x9'),_0xeffa('0xa'))},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0xeffa('0x1')]},'secret':{'type':Sequelize[_0xeffa('0x1')]},'md5secret':{'type':Sequelize[_0xeffa('0x1')]},'remotesecret':{'type':Sequelize[_0xeffa('0x1')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xeffa('0xb'),'set':function(_0x2ad9b7){this[_0xeffa('0xc')](_0xeffa('0xd'),_0x2ad9b7?_0x2ad9b7['join'](','):null);},'get':function(){return this[_0xeffa('0xe')]('transport')?this['getDataValue']('transport')[_0xeffa('0xf')](','):null;},'comment':_0xeffa('0x10')},'dtmfmode':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x11'),_0xeffa('0x12'),_0xeffa('0x13'),_0xeffa('0x14'),_0xeffa('0x15')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xeffa('0x2')]('yes','no','nonat',_0xeffa('0x16'),_0xeffa('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xeffa('0x1')]},'directmediadeny':{'type':Sequelize[_0xeffa('0x1')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xeffa('0x19'),'set':function(_0x3764b1){this[_0xeffa('0xc')](_0xeffa('0x1a'),_0x3764b1?_0x3764b1[_0xeffa('0x1b')](','):null);},'get':function(){return this['getDataValue'](_0xeffa('0x1a'))?this[_0xeffa('0xe')]('nat')['split'](','):null;},'comment':_0xeffa('0x1c')},'callgroup':{'type':Sequelize[_0xeffa('0x1')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xeffa('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xeffa('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xeffa('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xeffa('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0xeffa('0x1')],'allowNull':![],'defaultValue':_0xeffa('0x1d'),'set':function(_0x11839e){this[_0xeffa('0xc')](_0xeffa('0x1e'),_0x11839e?_0x11839e['join'](';'):_0xeffa('0x1d'));},'get':function(){return this[_0xeffa('0xe')](_0xeffa('0x1e'))?this[_0xeffa('0xe')]('allow')[_0xeffa('0xf')](';'):null;},'comment':_0xeffa('0x1f')},'autoframing':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'insecure':{'type':Sequelize[_0xeffa('0x1')],'defaultValue':_0xeffa('0x20'),'set':function(_0x523a56){this['setDataValue'](_0xeffa('0x21'),_0x523a56?_0x523a56[_0xeffa('0x1b')](','):null);},'get':function(){return this[_0xeffa('0xe')](_0xeffa('0x21'))?this[_0xeffa('0xe')](_0xeffa('0x21'))['split'](','):null;},'comment':_0xeffa('0x22')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no',_0xeffa('0x23'))},'promiscredir':{'type':Sequelize['ENUM'](_0xeffa('0x18'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0xeffa('0x18'),'no')},'accountcode':{'type':Sequelize[_0xeffa('0x24')](0xb)},'setvar':{'type':Sequelize[_0xeffa('0x1')]},'callerid':{'type':Sequelize[_0xeffa('0x1')],'defaultValue':_0xeffa('0x25')},'amaflags':{'type':Sequelize[_0xeffa('0x1')]},'callcounter':{'type':Sequelize['ENUM'](_0xeffa('0x18'),'no'),'defaultValue':_0xeffa('0x18')},'busylevel':{'type':Sequelize[_0xeffa('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'allowtransfer':{'type':Sequelize[_0xeffa('0x2')]('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xeffa('0x18'),'no')},'subscribecontext':{'type':Sequelize[_0xeffa('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no',_0xeffa('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no')},'mailbox':{'type':Sequelize[_0xeffa('0x1')]},'session_timers':{'type':Sequelize[_0xeffa('0x2')]('accept',_0xeffa('0x27'),'originate')},'session_expires':{'type':Sequelize[_0xeffa('0x24')](0xb)},'session_minse':{'type':Sequelize[_0xeffa('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x28'),_0xeffa('0x29')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xeffa('0x1')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xeffa('0x24')](0x5)},'qualify':{'type':Sequelize[_0xeffa('0x2')]('yes','no'),'defaultValue':_0xeffa('0x18')},'keepalive':{'type':Sequelize[_0xeffa('0x24')](0xb)},'defaultip':{'type':Sequelize[_0xeffa('0x1')]},'defaultuser':{'type':Sequelize[_0xeffa('0x1')]},'rtptimeout':{'type':Sequelize[_0xeffa('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xeffa('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xeffa('0x24')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0xeffa('0x18'),'no',_0xeffa('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeffa('0x1')]},'callbackextension':{'type':Sequelize[_0xeffa('0x1')]},'timert1':{'type':Sequelize[_0xeffa('0x24')](0xb)},'timerb':{'type':Sequelize[_0xeffa('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0xeffa('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0xeffa('0x1')]},'contactdeny':{'type':Sequelize[_0xeffa('0x1')]},'contactacl':{'type':Sequelize[_0xeffa('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0xeffa('0x1')]},'use_q850_reason':{'type':Sequelize[_0xeffa('0x1')]},'maxforwards':{'type':Sequelize[_0xeffa('0x24')](0xb)},'encryption':{'type':Sequelize[_0xeffa('0x2')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xeffa('0x2')]('yes','no')},'force_avp':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'icesupport':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'dtlsenable':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'dtlsverify':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no',_0xeffa('0x2b'),_0xeffa('0x2c'))},'dtlsrekey':{'type':Sequelize[_0xeffa('0x24')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0xeffa('0x1')]},'dtlscipher':{'type':Sequelize[_0xeffa('0x1')]},'dtlscafile':{'type':Sequelize[_0xeffa('0x1')]},'dtlscapath':{'type':Sequelize[_0xeffa('0x1')]},'dtlssetup':{'type':Sequelize[_0xeffa('0x2')]('active',_0xeffa('0x2d'),_0xeffa('0x2e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xeffa('0x1')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM']('yes','no')},'subscribemwi':{'type':Sequelize[_0xeffa('0x2')](_0xeffa('0x18'),'no')},'vmexten':{'type':Sequelize[_0xeffa('0x1')]},'mohinterpret':{'type':Sequelize[_0xeffa('0x1')]},'mohsuggest':{'type':Sequelize[_0xeffa('0x1')]},'parkinglot':{'type':Sequelize[_0xeffa('0x1')]},'description':{'type':Sequelize[_0xeffa('0x1')]},'host':{'type':Sequelize[_0xeffa('0x1')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xeffa('0x2')]('yes','no',_0xeffa('0x2f'),_0xeffa('0x16'),_0xeffa('0x30')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xeffa('0x1')]},'otherFields':{'type':Sequelize[_0xeffa('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xeffa('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xe64f=['String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','auto','yes','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','accept','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','transport','join','getDataValue','split'];(function(_0x5f3905,_0x43a651){var _0x2923b1=function(_0x3c72d8){while(--_0x3c72d8){_0x5f3905['push'](_0x5f3905['shift']());}};_0x2923b1(++_0x43a651);}(_0xe64f,0x185));var _0xfe64=function(_0x4e54d2,_0x42f371){_0x4e54d2=_0x4e54d2-0x0;var _0xcc1eea=_0xe64f[_0x4e54d2];return _0xcc1eea;};'use strict';var Sequelize=require(_0xfe64('0x0'));module[_0xfe64('0x1')]={'name':{'type':Sequelize[_0xfe64('0x2')],'allowNull':![],'unique':_0xfe64('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x5'),'user',_0xfe64('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xfe64('0x2')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x7'),_0xfe64('0x8'),_0xfe64('0x9'),'ALLOWED',_0xfe64('0xa'),_0xfe64('0xb'),'PROHIB_FAILED_SCREEN',_0xfe64('0xc'))},'deny':{'type':Sequelize[_0xfe64('0x2')]},'permit':{'type':Sequelize[_0xfe64('0x2')]},'secret':{'type':Sequelize[_0xfe64('0x2')]},'md5secret':{'type':Sequelize[_0xfe64('0x2')]},'remotesecret':{'type':Sequelize[_0xfe64('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xfe64('0xd'),'set':function(_0x289828){this[_0xfe64('0xe')](_0xfe64('0xf'),_0x289828?_0x289828[_0xfe64('0x10')](','):null);},'get':function(){return this[_0xfe64('0x11')](_0xfe64('0xf'))?this[_0xfe64('0x11')]('transport')[_0xfe64('0x12')](','):null;},'comment':_0xfe64('0x13')},'dtmfmode':{'type':Sequelize['ENUM'](_0xfe64('0x14'),_0xfe64('0x15'),_0xfe64('0x16'),'inband',_0xfe64('0x17')),'defaultValue':_0xfe64('0x14')},'directmedia':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no','nonat',_0xfe64('0x19'),_0xfe64('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xfe64('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':_0xfe64('0x1b'),'set':function(_0xadc61e){this[_0xfe64('0xe')](_0xfe64('0x1c'),_0xadc61e?_0xadc61e[_0xfe64('0x10')](','):null);},'get':function(){return this[_0xfe64('0x11')]('nat')?this['getDataValue'](_0xfe64('0x1c'))[_0xfe64('0x12')](','):null;},'comment':_0xfe64('0x1d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xfe64('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xfe64('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xfe64('0x1e')},'allow':{'type':Sequelize[_0xfe64('0x2')],'allowNull':![],'defaultValue':_0xfe64('0x1f'),'set':function(_0x58ccd9){this[_0xfe64('0xe')](_0xfe64('0x20'),_0x58ccd9?_0x58ccd9[_0xfe64('0x10')](';'):_0xfe64('0x1f'));},'get':function(){return this[_0xfe64('0x11')](_0xfe64('0x20'))?this[_0xfe64('0x11')]('allow')[_0xfe64('0x12')](';'):null;},'comment':_0xfe64('0x21')},'autoframing':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'insecure':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':_0xfe64('0x22'),'set':function(_0x109a95){this[_0xfe64('0xe')](_0xfe64('0x23'),_0x109a95?_0x109a95['join'](','):null);},'get':function(){return this[_0xfe64('0x11')](_0xfe64('0x23'))?this['getDataValue'](_0xfe64('0x23'))[_0xfe64('0x12')](','):null;},'comment':_0xfe64('0x24')},'trustrpid':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no',_0xfe64('0x25'))},'promiscredir':{'type':Sequelize['ENUM'](_0xfe64('0x18'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0xfe64('0x18'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xfe64('0x2')]},'callerid':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':_0xfe64('0x26')},'amaflags':{'type':Sequelize[_0xfe64('0x2')]},'callcounter':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no'),'defaultValue':_0xfe64('0x18')},'busylevel':{'type':Sequelize[_0xfe64('0x27')](0xb)},'allowoverlap':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'allowtransfer':{'type':Sequelize[_0xfe64('0x4')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0xfe64('0x2')]},'videosupport':{'type':Sequelize['ENUM'](_0xfe64('0x18'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xfe64('0x27')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xfe64('0x18'),'no')},'mailbox':{'type':Sequelize[_0xfe64('0x2')]},'session_timers':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x28'),'refuse',_0xfe64('0x29'))},'session_expires':{'type':Sequelize[_0xfe64('0x27')](0xb)},'session_minse':{'type':Sequelize[_0xfe64('0x27')](0xb)},'session_refresher':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x2a'),_0xfe64('0x2b')),'defaultValue':_0xfe64('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0xfe64('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xfe64('0x2')]},'port':{'type':Sequelize[_0xfe64('0x27')](0x5)},'qualify':{'type':Sequelize[_0xfe64('0x4')]('yes','no'),'defaultValue':_0xfe64('0x18')},'keepalive':{'type':Sequelize[_0xfe64('0x27')](0xb)},'defaultip':{'type':Sequelize[_0xfe64('0x2')]},'defaultuser':{'type':Sequelize[_0xfe64('0x2')]},'rtptimeout':{'type':Sequelize[_0xfe64('0x27')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xfe64('0x27')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xfe64('0x27')](0xb)},'sendrpid':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xfe64('0x2')]},'callbackextension':{'type':Sequelize[_0xfe64('0x2')]},'timert1':{'type':Sequelize[_0xfe64('0x27')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0xfe64('0x2')]},'contactdeny':{'type':Sequelize[_0xfe64('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0xfe64('0x27')](0xb)},'encryption':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'force_avp':{'type':Sequelize[_0xfe64('0x4')]('yes','no')},'icesupport':{'type':Sequelize[_0xfe64('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xfe64('0x18'),'no')},'dtlsverify':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no',_0xfe64('0x2c'),_0xfe64('0x2d'))},'dtlsrekey':{'type':Sequelize[_0xfe64('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0xfe64('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xfe64('0x2')]},'dtlscipher':{'type':Sequelize[_0xfe64('0x2')]},'dtlscafile':{'type':Sequelize[_0xfe64('0x2')]},'dtlscapath':{'type':Sequelize[_0xfe64('0x2')]},'dtlssetup':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x2e'),_0xfe64('0x2f'),_0xfe64('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0xfe64('0x4')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0xfe64('0x27')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0xfe64('0x4')](_0xfe64('0x18'),'no')},'vmexten':{'type':Sequelize[_0xfe64('0x2')]},'mohinterpret':{'type':Sequelize[_0xfe64('0x2')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xfe64('0x2')]},'description':{'type':Sequelize[_0xfe64('0x2')]},'host':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize['ENUM'](_0xfe64('0x18'),'no','nonat',_0xfe64('0x19'),_0xfe64('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xfe64('0x2')]},'otherFields':{'type':Sequelize[_0xfe64('0x2')]},'active':{'type':Sequelize[_0xfe64('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xfe64('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 8648cf2..0c11de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','update','server/files/templates/trunk.ejs','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','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','UserProfileResource','name','index','Trunk','rawAttributes','fieldName','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','clone','find','get','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/registry.ejs','utf8','writeFileSync'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x81bd,0x7c));var _0xd81b=function(_0x58321f,_0x5730b9){_0x58321f=_0x58321f-0x0;var _0x3728ea=_0x81bd[_0x58321f];return _0x3728ea;};'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'];var jayson=require(_0xd81b('0x1b'));var client=jayson['client'][_0xd81b('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xe75568,_0x5f0b6b,_0x35a053,_0x47dd04){return new BPromise(function(_0x13dd00,_0x41bf7a){var _0x6c6041=_0x47dd04||client;return _0x6c6041[_0xd81b('0x1d')](_0xe75568,_0x35a053)[_0xd81b('0x1e')](function(_0x552215){logger[_0xd81b('0x1f')](_0xd81b('0x20'),_0x5f0b6b,'request\x20sent');logger[_0xd81b('0x21')](_0xd81b('0x22'),_0x5f0b6b,_0xd81b('0x23'),JSON[_0xd81b('0x24')](_0x552215));if(_0x552215[_0xd81b('0x25')]){if(_0x552215[_0xd81b('0x25')][_0xd81b('0x26')]===0x1f4){logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0x552215[_0xd81b('0x25')][_0xd81b('0x27')]);return _0x41bf7a(_0x552215[_0xd81b('0x25')][_0xd81b('0x27')]);}logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0x552215[_0xd81b('0x25')]['message']);return _0x13dd00(_0x552215['error'][_0xd81b('0x27')]);}else{logger[_0xd81b('0x1f')](_0xd81b('0x20'),_0x5f0b6b,'request\x20sent');_0x13dd00(_0x552215[_0xd81b('0x28')][_0xd81b('0x27')]);}})['catch'](function(_0xcd6474){logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0xcd6474);_0x41bf7a(_0xcd6474);});});}function respondWithStatusCode(_0x1ad65c,_0x279176){_0x279176=_0x279176||0xcc;return function(_0xcb4f91){if(_0xcb4f91){return _0x1ad65c[_0xd81b('0x29')](_0x279176);}return _0x1ad65c[_0xd81b('0x2a')](_0x279176)[_0xd81b('0x2b')]();};}function respondWithResult(_0x212c4e,_0x2ccedf){_0x2ccedf=_0x2ccedf||0xc8;return function(_0x1bf351){if(_0x1bf351){return _0x212c4e['status'](_0x2ccedf)[_0xd81b('0x2c')](_0x1bf351);}};}function respondWithFilteredResult(_0x99dbc9,_0xe3637a){return function(_0x31b9fd){if(_0x31b9fd){var _0x3266c2=typeof _0xe3637a[_0xd81b('0x2d')]===_0xd81b('0x2e')&&typeof _0xe3637a[_0xd81b('0x2f')]===_0xd81b('0x2e');var _0x483a3d=_0x31b9fd[_0xd81b('0x30')];var _0x4e2eff=_0x3266c2?0x0:_0xe3637a['offset'];var _0xb9ff9f=_0x3266c2?_0x31b9fd[_0xd81b('0x30')]:_0xe3637a['offset']+_0xe3637a['limit'];var _0x4093c8;if(_0xb9ff9f>=_0x483a3d){_0xb9ff9f=_0x483a3d;_0x4093c8=0xc8;}else{_0x4093c8=0xce;}_0x99dbc9[_0xd81b('0x2a')](_0x4093c8);return _0x99dbc9[_0xd81b('0x31')](_0xd81b('0x32'),_0x4e2eff+'-'+_0xb9ff9f+'/'+_0x483a3d)[_0xd81b('0x2c')](_0x31b9fd);}return null;};}function patchUpdates(_0x4654ba){return function(_0x5527ed){try{jsonpatch[_0xd81b('0x33')](_0x5527ed,_0x4654ba,!![]);}catch(_0x26f629){return BPromise['reject'](_0x26f629);}return _0x5527ed['save']();};}function saveUpdates(_0x165892,_0x1966b1){return function(_0x50472a){if(_0x50472a){return _0x50472a['update'](_0x165892)['then'](function(_0x322991){return _0x322991;});}return null;};}function removeEntity(_0x3ead68,_0x1d2f46){return function(_0x1c4cf7){if(_0x1c4cf7){return _0x1c4cf7[_0xd81b('0x34')]()[_0xd81b('0x1e')](function(){var _0x29aabf=_0x1c4cf7['get']({'plain':!![]});var _0x28782f='Trunks';return db[_0xd81b('0x35')][_0xd81b('0x34')]({'where':{'type':_0x28782f,'resourceId':_0x29aabf['id']}})[_0xd81b('0x1e')](function(){return _0x1c4cf7;});})[_0xd81b('0x1e')](function(){_0x3ead68[_0xd81b('0x2a')](0xcc)[_0xd81b('0x2b')]();});}};}function handleEntityNotFound(_0x1c20d3,_0x2d23b9){return function(_0xf9d1a5){if(!_0xf9d1a5){_0x1c20d3[_0xd81b('0x29')](0x194);}return _0xf9d1a5;};}function handleError(_0x1be4e2,_0x3c8371){_0x3c8371=_0x3c8371||0x1f4;return function(_0x346038){logger['error'](_0x346038['stack']);if(_0x346038[_0xd81b('0x36')]){delete _0x346038[_0xd81b('0x36')];}_0x1be4e2[_0xd81b('0x2a')](_0x3c8371)['send'](_0x346038);};}exports[_0xd81b('0x37')]=function(_0x37ba34,_0x5a236a){var _0x46f058={},_0xaa9e97={},_0x512e39={'count':0x0,'rows':[]};var _0xed5272=_['map'](db[_0xd81b('0x38')][_0xd81b('0x39')],function(_0x203365){return{'name':_0x203365[_0xd81b('0x3a')],'type':_0x203365['type'][_0xd81b('0x3b')]};});_0xaa9e97[_0xd81b('0x3c')]=_[_0xd81b('0x3d')](_0xed5272,_0xd81b('0x36'));_0xaa9e97[_0xd81b('0x3e')]=_[_0xd81b('0x3f')](_0x37ba34[_0xd81b('0x3e')]);_0xaa9e97['filters']=_[_0xd81b('0x40')](_0xaa9e97[_0xd81b('0x3c')],_0xaa9e97[_0xd81b('0x3e')]);_0x46f058['attributes']=_[_0xd81b('0x40')](_0xaa9e97[_0xd81b('0x3c')],qs[_0xd81b('0x41')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x41')]));_0x46f058['attributes']=_0x46f058[_0xd81b('0x42')][_0xd81b('0x43')]?_0x46f058[_0xd81b('0x42')]:_0xaa9e97[_0xd81b('0x3c')];if(!_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x44')](_0xd81b('0x45'))){_0x46f058[_0xd81b('0x2f')]=qs[_0xd81b('0x2f')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x2f')]);_0x46f058['offset']=qs[_0xd81b('0x2d')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x2d')]);}_0x46f058[_0xd81b('0x46')]=qs[_0xd81b('0x47')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x47')]);_0x46f058[_0xd81b('0x48')]=qs['filters'](_['pick'](_0x37ba34[_0xd81b('0x3e')],_0xaa9e97[_0xd81b('0x49')]),_0xed5272);if(_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4a')]){_0x46f058[_0xd81b('0x48')]=_[_0xd81b('0x4b')](_0x46f058[_0xd81b('0x48')],{'$or':_[_0xd81b('0x3d')](_0xed5272,function(_0x2fa588){if(_0x2fa588[_0xd81b('0x4c')]!==_0xd81b('0x4d')){var _0x38e436={};_0x38e436[_0x2fa588['name']]={'$like':'%'+_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4a')]+'%'};return _0x38e436;}})});}_0x46f058=_[_0xd81b('0x4b')]({},_0x46f058,_0x37ba34[_0xd81b('0x4e')]);var _0x105a48={'where':_0x46f058[_0xd81b('0x48')]};return db[_0xd81b('0x38')][_0xd81b('0x30')](_0x105a48)[_0xd81b('0x1e')](function(_0x53ea36){_0x512e39[_0xd81b('0x30')]=_0x53ea36;if(_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x46f058[_0xd81b('0x50')]=[{'all':!![]}];}return db['Trunk'][_0xd81b('0x51')](_0x46f058);})[_0xd81b('0x1e')](function(_0x15030b){_0x512e39[_0xd81b('0x52')]=_0x15030b;return _0x512e39;})[_0xd81b('0x1e')](respondWithFilteredResult(_0x5a236a,_0x46f058))[_0xd81b('0x53')](handleError(_0x5a236a,null));};exports[_0xd81b('0x54')]=function(_0x43d7ce,_0x133a76){var _0x49cba6={'raw':![],'where':{'id':_0x43d7ce[_0xd81b('0x55')]['id']}},_0x534d10={};_0x534d10[_0xd81b('0x3c')]=_[_0xd81b('0x3f')](db[_0xd81b('0x38')][_0xd81b('0x39')]);_0x534d10[_0xd81b('0x3e')]=_[_0xd81b('0x3f')](_0x43d7ce[_0xd81b('0x3e')]);_0x534d10['filters']=_[_0xd81b('0x40')](_0x534d10[_0xd81b('0x3c')],_0x534d10[_0xd81b('0x3e')]);_0x49cba6[_0xd81b('0x42')]=_[_0xd81b('0x40')](_0x534d10['model'],qs[_0xd81b('0x41')](_0x43d7ce[_0xd81b('0x3e')]['fields']));_0x49cba6[_0xd81b('0x42')]=_0x49cba6[_0xd81b('0x42')][_0xd81b('0x43')]?_0x49cba6[_0xd81b('0x42')]:_0x534d10[_0xd81b('0x3c')];if(_0x43d7ce[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x49cba6[_0xd81b('0x50')]=[{'all':!![]}];}_0x49cba6=_[_0xd81b('0x4b')]({},_0x49cba6,_0x43d7ce[_0xd81b('0x4e')]);return db[_0xd81b('0x38')]['find'](_0x49cba6)[_0xd81b('0x1e')](handleEntityNotFound(_0x133a76,null))['then'](respondWithResult(_0x133a76,null))[_0xd81b('0x53')](handleError(_0x133a76,null));};exports[_0xd81b('0x56')]=function(_0x390db6,_0x3c2a9f){var _0x34d2a2={'where':{'id':_0x390db6['params']['id']}},_0x1e9f73={};_0x1e9f73[_0xd81b('0x3c')]=_[_0xd81b('0x3f')](db['Trunk']['rawAttributes']);_0x34d2a2[_0xd81b('0x42')]=_['intersection'](_0x1e9f73[_0xd81b('0x3c')],qs['fields'](_0x390db6[_0xd81b('0x3e')][_0xd81b('0x41')]));_0x34d2a2[_0xd81b('0x42')]=_0x34d2a2['attributes'][_0xd81b('0x43')]?_0x34d2a2[_0xd81b('0x42')]:_0x1e9f73['model'];if(_0x390db6[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x34d2a2['include']=[{'all':!![]}];}_0x34d2a2=_[_0xd81b('0x4b')]({},_0x34d2a2,_0x390db6['options']);return db[_0xd81b('0x38')][_0xd81b('0x57')](_0x34d2a2)[_0xd81b('0x1e')](handleEntityNotFound(_0x3c2a9f,null))[_0xd81b('0x1e')](function(_0x4add79){if(_0x4add79){var _0x32eab4=_0x4add79[_0xd81b('0x58')]({'plain':!![]});_0x32eab4=qs[_0xd81b('0x59')](_0x32eab4,['id',_0xd81b('0x5a'),_0xd81b('0x5b')]);_0x390db6['body']=_[_0xd81b('0x59')](_0x390db6[_0xd81b('0x5c')],['id',_0xd81b('0x5a'),_0xd81b('0x5b')]);return db[_0xd81b('0x38')][_0xd81b('0x5d')](_[_0xd81b('0x4b')](_0x32eab4,_0x390db6['body']),{'include':_0x390db6['query']['includeAll']?[{'all':!![]}]:undefined})[_0xd81b('0x1e')](function(_0x12b0bf){var _0x37507e=_0x390db6[_0xd81b('0x5e')][_0xd81b('0x58')]({'plain':!![]});if(!_0x37507e)throw new Error(_0xd81b('0x5f'));if(_0x37507e[_0xd81b('0x60')]==='user'){var _0x3fcd8c=_0x12b0bf[_0xd81b('0x58')]({'plain':!![]});var _0x35c9cf=_0xd81b('0x61');return db[_0xd81b('0x62')][_0xd81b('0x57')]({'where':{'name':_0x35c9cf,'userProfileId':_0x37507e[_0xd81b('0x63')]},'raw':!![]})['then'](function(_0x14b187){if(_0x14b187&&_0x14b187[_0xd81b('0x64')]===0x0){return db[_0xd81b('0x35')][_0xd81b('0x5d')]({'name':_0x3fcd8c[_0xd81b('0x36')],'resourceId':_0x3fcd8c['id'],'type':_0x14b187[_0xd81b('0x36')],'sectionId':_0x14b187['id']},{})[_0xd81b('0x1e')](function(){return _0x12b0bf;});}else{return _0x12b0bf;}})[_0xd81b('0x53')](function(_0x8fa8cd){logger[_0xd81b('0x25')](_0xd81b('0x65'),_0x8fa8cd);throw _0x8fa8cd;});}return _0x12b0bf;});}})[_0xd81b('0x1e')](respondWithResult(_0x3c2a9f,0xc9))['catch'](handleError(_0x3c2a9f,null));};exports[_0xd81b('0x5d')]=function(_0x5358a6,_0x2e7141,_0x6fa974){var _0x414f40;return db[_0xd81b('0x38')][_0xd81b('0x5d')](_0x5358a6[_0xd81b('0x5c')],{'raw':!![]})[_0xd81b('0x1e')](function(_0x18f2ac){_0x414f40=_0x18f2ac;return db[_0xd81b('0x38')][_0xd81b('0x51')]({'raw':!![]});})['then'](function(_0xfa2a13){var _0x344c32=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],'server/files/templates/trunk.ejs'),'utf8');var _0x3274d2=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],_0xd81b('0x69')),_0xd81b('0x6a'));var _0xaee7e3=ejs['render'](_0x344c32,{'trunks':_0xfa2a13||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6c'),_0xaee7e3);if(_0x414f40[_0xd81b('0x6d')]){var _0x1c6ec8=ejs[_0xd81b('0x6e')](_0x3274d2,{'trunks':_0xfa2a13||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x1c6ec8);}})[_0xd81b('0x1e')](function(){return respondWithRpcPromise(_0xd81b('0x70'),'create',{'module':_0xd81b('0x71')});})[_0xd81b('0x1e')](function(){var _0x3858eb=_0x5358a6[_0xd81b('0x5e')][_0xd81b('0x58')]({'plain':!![]});if(!_0x3858eb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3858eb[_0xd81b('0x60')]===_0xd81b('0x5e')){var _0x4cc440=_0x414f40[_0xd81b('0x58')]({'plain':!![]});return db[_0xd81b('0x62')]['find']({'where':{'name':_0xd81b('0x61'),'userProfileId':_0x3858eb[_0xd81b('0x63')]},'raw':!![]})[_0xd81b('0x1e')](function(_0x483026){if(_0x483026&&_0x483026[_0xd81b('0x64')]===0x0){return db[_0xd81b('0x35')][_0xd81b('0x5d')]({'name':_0x4cc440['name'],'resourceId':_0x4cc440['id'],'type':_0x483026['name'],'sectionId':_0x483026['id']},{})[_0xd81b('0x1e')](function(){return _0x414f40;});}else{return _0x414f40;}})[_0xd81b('0x53')](function(_0x36c694){logger['error'](_0xd81b('0x65'),_0x36c694);throw _0x36c694;});}return _0x414f40;})[_0xd81b('0x1e')](respondWithResult(_0x2e7141,0xc9))[_0xd81b('0x53')](handleError(_0x2e7141,null));};exports[_0xd81b('0x72')]=function(_0x524196,_0x4f69a7,_0x42ae01){var _0x256696;return db[_0xd81b('0x38')][_0xd81b('0x57')]({'where':{'id':_0x524196['params']['id']}})[_0xd81b('0x1e')](handleEntityNotFound(_0x4f69a7,null))[_0xd81b('0x1e')](saveUpdates(_0x524196['body'],null))[_0xd81b('0x1e')](function(_0x4e5bf4){if(_0x4e5bf4){_0x256696=_0x4e5bf4;return db[_0xd81b('0x38')][_0xd81b('0x51')]({'raw':!![]});}})['then'](function(_0x1be0e6){if(_0x1be0e6){var _0x9a9634=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],'server/files/templates/trunk.ejs'),_0xd81b('0x6a'));var _0xc0e137=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],_0xd81b('0x69')),'utf8');var _0x5c8ea0=ejs[_0xd81b('0x6e')](_0x9a9634,{'trunks':_0x1be0e6||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6c'),_0x5c8ea0);var _0x15aed5=ejs['render'](_0xc0e137,{'trunks':_0x1be0e6||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x15aed5);return respondWithRpcPromise(_0xd81b('0x70'),_0xd81b('0x72'),{'module':_0xd81b('0x71')});}return null;})['then'](function(_0x3744bf){if(_0x3744bf){return _0x256696;}})[_0xd81b('0x1e')](respondWithResult(_0x4f69a7,null))[_0xd81b('0x53')](handleError(_0x4f69a7,null));};exports[_0xd81b('0x34')]=function(_0x1d596c,_0x288124,_0x402eb9){var _0x57179a;return db[_0xd81b('0x38')][_0xd81b('0x57')]({'where':{'id':_0x1d596c[_0xd81b('0x55')]['id']}})[_0xd81b('0x1e')](handleEntityNotFound(_0x288124,null))[_0xd81b('0x1e')](removeEntity(_0x288124,null))[_0xd81b('0x1e')](function(){return db['Trunk'][_0xd81b('0x51')]({'raw':!![]});})['then'](function(_0x11e590){var _0x9e6e05=fs[_0xd81b('0x66')](path['join'](config[_0xd81b('0x68')],_0xd81b('0x73')),_0xd81b('0x6a'));var _0x5060dc=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config['root'],_0xd81b('0x69')),'utf8');var _0x5f5514=ejs[_0xd81b('0x6e')](_0x9e6e05,{'trunks':_0x11e590});var _0x428317=ejs[_0xd81b('0x6e')](_0x5060dc,{'trunks':_0x11e590});fs['writeFileSync'](_0xd81b('0x6c'),_0x5f5514);fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x428317);return respondWithRpcPromise(_0xd81b('0x70'),_0xd81b('0x34'),{'module':_0xd81b('0x71')});})['catch'](handleError(_0x288124,null));};
\ No newline at end of file
+var _0x55ca=['catch','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','get','UserProfileResource','end','stack','name','send','Trunk','rawAttributes','type','model','map','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','length','options','find','clone','omit','updatedAt','body','createdAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','render','Reload','chan_sip.so','readFileSync','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x42a909,_0x38d65a){var _0x5eb74e=function(_0x5584f0){while(--_0x5584f0){_0x42a909['push'](_0x42a909['shift']());}};_0x5eb74e(++_0x38d65a);}(_0x55ca,0x126));var _0xa55c=function(_0x5b6fe5,_0x5ddf47){_0x5b6fe5=_0x5b6fe5-0x0;var _0x5928d4=_0x55ca[_0x5b6fe5];return _0x5928d4;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa55c('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x576044,_0x5a3672,_0x59ea8d,_0x18ee85){return new BPromise(function(_0x3930e4,_0x462cd6){var _0x938bd6=_0x18ee85||client;return _0x938bd6[_0xa55c('0x19')](_0x576044,_0x59ea8d)[_0xa55c('0x1a')](function(_0x4e0b2f){logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,_0xa55c('0x1d'));logger[_0xa55c('0x1e')](_0xa55c('0x1f'),_0x5a3672,_0xa55c('0x1d'),JSON[_0xa55c('0x20')](_0x4e0b2f));if(_0x4e0b2f[_0xa55c('0x21')]){if(_0x4e0b2f[_0xa55c('0x21')]['code']===0x1f4){logger[_0xa55c('0x21')](_0xa55c('0x1c'),_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x462cd6(_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x3930e4(_0x4e0b2f[_0xa55c('0x21')]['message']);}else{logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,'request\x20sent');_0x3930e4(_0x4e0b2f[_0xa55c('0x23')][_0xa55c('0x22')]);}})[_0xa55c('0x24')](function(_0x1965f1){logger[_0xa55c('0x21')]('Trunk,\x20%s,\x20%s',_0x5a3672,_0x1965f1);_0x462cd6(_0x1965f1);});});}function respondWithStatusCode(_0x1fc828,_0x504c24){_0x504c24=_0x504c24||0xcc;return function(_0x5ba836){if(_0x5ba836){return _0x1fc828['sendStatus'](_0x504c24);}return _0x1fc828[_0xa55c('0x25')](_0x504c24)['end']();};}function respondWithResult(_0x3ecbe7,_0x190757){_0x190757=_0x190757||0xc8;return function(_0x3f64de){if(_0x3f64de){return _0x3ecbe7[_0xa55c('0x25')](_0x190757)[_0xa55c('0x26')](_0x3f64de);}};}function respondWithFilteredResult(_0x170ba4,_0x1da633){return function(_0x11e7f7){if(_0x11e7f7){var _0x192df2=typeof _0x1da633[_0xa55c('0x27')]===_0xa55c('0x28')&&typeof _0x1da633['limit']===_0xa55c('0x28');var _0x28814f=_0x11e7f7[_0xa55c('0x29')];var _0x906caa=_0x192df2?0x0:_0x1da633['offset'];var _0x1377b0=_0x192df2?_0x11e7f7[_0xa55c('0x29')]:_0x1da633[_0xa55c('0x27')]+_0x1da633[_0xa55c('0x2a')];var _0x45ee8d;if(_0x1377b0>=_0x28814f){_0x1377b0=_0x28814f;_0x45ee8d=0xc8;}else{_0x45ee8d=0xce;}_0x170ba4[_0xa55c('0x25')](_0x45ee8d);return _0x170ba4['set'](_0xa55c('0x2b'),_0x906caa+'-'+_0x1377b0+'/'+_0x28814f)['json'](_0x11e7f7);}return null;};}function patchUpdates(_0x35c9c2){return function(_0x1d730b){try{jsonpatch[_0xa55c('0x2c')](_0x1d730b,_0x35c9c2,!![]);}catch(_0x223813){return BPromise['reject'](_0x223813);}return _0x1d730b[_0xa55c('0x2d')]();};}function saveUpdates(_0x2096ae,_0x331e58){return function(_0x20da31){if(_0x20da31){return _0x20da31[_0xa55c('0x2e')](_0x2096ae)[_0xa55c('0x1a')](function(_0x29748a){return _0x29748a;});}return null;};}function removeEntity(_0x24d44d,_0x2808e9){return function(_0xcbaf2e){if(_0xcbaf2e){return _0xcbaf2e[_0xa55c('0x2f')]()['then'](function(){var _0x54ca97=_0xcbaf2e[_0xa55c('0x30')]({'plain':!![]});var _0x19733e='Trunks';return db[_0xa55c('0x31')][_0xa55c('0x2f')]({'where':{'type':_0x19733e,'resourceId':_0x54ca97['id']}})[_0xa55c('0x1a')](function(){return _0xcbaf2e;});})[_0xa55c('0x1a')](function(){_0x24d44d[_0xa55c('0x25')](0xcc)[_0xa55c('0x32')]();});}};}function handleEntityNotFound(_0x3ce1b3,_0x222d4b){return function(_0x3959e3){if(!_0x3959e3){_0x3ce1b3['sendStatus'](0x194);}return _0x3959e3;};}function handleError(_0x5f3e99,_0x4b23d3){_0x4b23d3=_0x4b23d3||0x1f4;return function(_0x3fd75f){logger[_0xa55c('0x21')](_0x3fd75f[_0xa55c('0x33')]);if(_0x3fd75f['name']){delete _0x3fd75f[_0xa55c('0x34')];}_0x5f3e99['status'](_0x4b23d3)[_0xa55c('0x35')](_0x3fd75f);};}exports['index']=function(_0x18c6f1,_0x39267c){var _0x3c0ec1={},_0x4d3eb5={},_0x7c4a47={'count':0x0,'rows':[]};var _0x30f23b=_['map'](db[_0xa55c('0x36')][_0xa55c('0x37')],function(_0x4d9083){return{'name':_0x4d9083['fieldName'],'type':_0x4d9083[_0xa55c('0x38')]['key']};});_0x4d3eb5[_0xa55c('0x39')]=_[_0xa55c('0x3a')](_0x30f23b,'name');_0x4d3eb5['query']=_['keys'](_0x18c6f1['query']);_0x4d3eb5[_0xa55c('0x3b')]=_[_0xa55c('0x3c')](_0x4d3eb5[_0xa55c('0x39')],_0x4d3eb5[_0xa55c('0x3d')]);_0x3c0ec1[_0xa55c('0x3e')]=_['intersection'](_0x4d3eb5[_0xa55c('0x39')],qs[_0xa55c('0x3f')](_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x3f')]));_0x3c0ec1[_0xa55c('0x3e')]=_0x3c0ec1[_0xa55c('0x3e')]['length']?_0x3c0ec1[_0xa55c('0x3e')]:_0x4d3eb5['model'];if(!_0x18c6f1['query'][_0xa55c('0x40')](_0xa55c('0x41'))){_0x3c0ec1['limit']=qs[_0xa55c('0x2a')](_0x18c6f1['query']['limit']);_0x3c0ec1[_0xa55c('0x27')]=qs[_0xa55c('0x27')](_0x18c6f1[_0xa55c('0x3d')]['offset']);}_0x3c0ec1[_0xa55c('0x42')]=qs[_0xa55c('0x43')](_0x18c6f1['query'][_0xa55c('0x43')]);_0x3c0ec1['where']=qs[_0xa55c('0x3b')](_[_0xa55c('0x44')](_0x18c6f1['query'],_0x4d3eb5[_0xa55c('0x3b')]),_0x30f23b);if(_0x18c6f1[_0xa55c('0x3d')]['filter']){_0x3c0ec1[_0xa55c('0x45')]=_[_0xa55c('0x46')](_0x3c0ec1[_0xa55c('0x45')],{'$or':_['map'](_0x30f23b,function(_0x334f52){if(_0x334f52['type']!==_0xa55c('0x47')){var _0x3a8af4={};_0x3a8af4[_0x334f52[_0xa55c('0x34')]]={'$like':'%'+_0x18c6f1['query'][_0xa55c('0x48')]+'%'};return _0x3a8af4;}})});}_0x3c0ec1=_[_0xa55c('0x46')]({},_0x3c0ec1,_0x18c6f1['options']);var _0x3d19f5={'where':_0x3c0ec1[_0xa55c('0x45')]};return db['Trunk'][_0xa55c('0x29')](_0x3d19f5)[_0xa55c('0x1a')](function(_0x52f9a7){_0x7c4a47[_0xa55c('0x29')]=_0x52f9a7;if(_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x49')]){_0x3c0ec1[_0xa55c('0x4a')]=[{'all':!![]}];}return db['Trunk'][_0xa55c('0x4b')](_0x3c0ec1);})['then'](function(_0x2157d6){_0x7c4a47[_0xa55c('0x4c')]=_0x2157d6;return _0x7c4a47;})[_0xa55c('0x1a')](respondWithFilteredResult(_0x39267c,_0x3c0ec1))['catch'](handleError(_0x39267c,null));};exports[_0xa55c('0x4d')]=function(_0x250b00,_0x574fe9){var _0x5be06={'raw':![],'where':{'id':_0x250b00[_0xa55c('0x4e')]['id']}},_0x34de95={};_0x34de95[_0xa55c('0x39')]=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x34de95[_0xa55c('0x3d')]=_[_0xa55c('0x4f')](_0x250b00[_0xa55c('0x3d')]);_0x34de95['filters']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],_0x34de95[_0xa55c('0x3d')]);_0x5be06['attributes']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],qs['fields'](_0x250b00[_0xa55c('0x3d')]['fields']));_0x5be06[_0xa55c('0x3e')]=_0x5be06[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x5be06[_0xa55c('0x3e')]:_0x34de95[_0xa55c('0x39')];if(_0x250b00['query'][_0xa55c('0x49')]){_0x5be06[_0xa55c('0x4a')]=[{'all':!![]}];}_0x5be06=_['merge']({},_0x5be06,_0x250b00[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x5be06)[_0xa55c('0x1a')](handleEntityNotFound(_0x574fe9,null))['then'](respondWithResult(_0x574fe9,null))['catch'](handleError(_0x574fe9,null));};exports[_0xa55c('0x53')]=function(_0x250dea,_0x3ca5b8){var _0x44ac57={'where':{'id':_0x250dea[_0xa55c('0x4e')]['id']}},_0x54cbde={};_0x54cbde['model']=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x44ac57[_0xa55c('0x3e')]=_[_0xa55c('0x3c')](_0x54cbde['model'],qs[_0xa55c('0x3f')](_0x250dea['query'][_0xa55c('0x3f')]));_0x44ac57[_0xa55c('0x3e')]=_0x44ac57[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x44ac57[_0xa55c('0x3e')]:_0x54cbde[_0xa55c('0x39')];if(_0x250dea[_0xa55c('0x3d')]['includeAll']){_0x44ac57[_0xa55c('0x4a')]=[{'all':!![]}];}_0x44ac57=_[_0xa55c('0x46')]({},_0x44ac57,_0x250dea[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x44ac57)['then'](handleEntityNotFound(_0x3ca5b8,null))[_0xa55c('0x1a')](function(_0x3cd40d){if(_0x3cd40d){var _0x28bac4=_0x3cd40d[_0xa55c('0x30')]({'plain':!![]});_0x28bac4=qs[_0xa55c('0x54')](_0x28bac4,['id','createdAt',_0xa55c('0x55')]);_0x250dea[_0xa55c('0x56')]=_[_0xa55c('0x54')](_0x250dea[_0xa55c('0x56')],['id',_0xa55c('0x57'),'updatedAt']);return db[_0xa55c('0x36')]['create'](_[_0xa55c('0x46')](_0x28bac4,_0x250dea['body']),{'include':_0x250dea[_0xa55c('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0xa55c('0x1a')](function(_0x1333da){var _0x21d6b4=_0x250dea[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x21d6b4)throw new Error(_0xa55c('0x59'));if(_0x21d6b4[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0x14b515=_0x1333da[_0xa55c('0x30')]({'plain':!![]});var _0x51c736=_0xa55c('0x5b');return db[_0xa55c('0x5c')]['find']({'where':{'name':_0x51c736,'userProfileId':_0x21d6b4[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x3e3b4b){if(_0x3e3b4b&&_0x3e3b4b[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')][_0xa55c('0x5f')]({'name':_0x14b515[_0xa55c('0x34')],'resourceId':_0x14b515['id'],'type':_0x3e3b4b[_0xa55c('0x34')],'sectionId':_0x3e3b4b['id']},{})['then'](function(){return _0x1333da;});}else{return _0x1333da;}})[_0xa55c('0x24')](function(_0x475131){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x475131);throw _0x475131;});}return _0x1333da;});}})[_0xa55c('0x1a')](respondWithResult(_0x3ca5b8,0xc9))[_0xa55c('0x24')](handleError(_0x3ca5b8,null));};exports[_0xa55c('0x5f')]=function(_0x4249c1,_0x25d5a1,_0x4a08ca){var _0x347562;return db[_0xa55c('0x36')][_0xa55c('0x5f')](_0x4249c1[_0xa55c('0x56')],{'raw':!![]})[_0xa55c('0x1a')](function(_0x10e711){_0x347562=_0x10e711;return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x3178a6){var _0x3bbc4b=fs['readFileSync'](path[_0xa55c('0x61')](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0x129bb4=fs['readFileSync'](path['join'](config[_0xa55c('0x64')],_0xa55c('0x65')),_0xa55c('0x63'));var _0x42529f=ejs['render'](_0x3bbc4b,{'trunks':_0x3178a6||[]});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x42529f);if(_0x347562[_0xa55c('0x68')]){var _0x3a9910=ejs[_0xa55c('0x69')](_0x129bb4,{'trunks':_0x3178a6||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x3a9910);}})[_0xa55c('0x1a')](function(){return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x5f'),{'module':_0xa55c('0x6b')});})[_0xa55c('0x1a')](function(){var _0x4b2032=_0x4249c1[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x4b2032)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b2032[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0xa340fb=_0x347562['get']({'plain':!![]});return db[_0xa55c('0x5c')][_0xa55c('0x52')]({'where':{'name':_0xa55c('0x5b'),'userProfileId':_0x4b2032[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x506f74){if(_0x506f74&&_0x506f74[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')]['create']({'name':_0xa340fb['name'],'resourceId':_0xa340fb['id'],'type':_0x506f74[_0xa55c('0x34')],'sectionId':_0x506f74['id']},{})['then'](function(){return _0x347562;});}else{return _0x347562;}})[_0xa55c('0x24')](function(_0x5ca0bc){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x5ca0bc);throw _0x5ca0bc;});}return _0x347562;})[_0xa55c('0x1a')](respondWithResult(_0x25d5a1,0xc9))[_0xa55c('0x24')](handleError(_0x25d5a1,null));};exports[_0xa55c('0x2e')]=function(_0xff7b1c,_0x16dfc6,_0x5d8551){var _0x463195;return db[_0xa55c('0x36')][_0xa55c('0x52')]({'where':{'id':_0xff7b1c[_0xa55c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x16dfc6,null))[_0xa55c('0x1a')](saveUpdates(_0xff7b1c[_0xa55c('0x56')],null))[_0xa55c('0x1a')](function(_0x2298ac){if(_0x2298ac){_0x463195=_0x2298ac;return db['Trunk']['findAll']({'raw':!![]});}})[_0xa55c('0x1a')](function(_0x428872){if(_0x428872){var _0x12e3a8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0xd33c9c=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x65')),'utf8');var _0x19497b=ejs['render'](_0x12e3a8,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x19497b);var _0x36ded7=ejs[_0xa55c('0x69')](_0xd33c9c,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x36ded7);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2e'),{'module':_0xa55c('0x6b')});}return null;})[_0xa55c('0x1a')](function(_0x576a1b){if(_0x576a1b){return _0x463195;}})['then'](respondWithResult(_0x16dfc6,null))[_0xa55c('0x24')](handleError(_0x16dfc6,null));};exports[_0xa55c('0x2f')]=function(_0xc2ad5c,_0x256db0,_0x1622cb){var _0x137728;return db['Trunk'][_0xa55c('0x52')]({'where':{'id':_0xc2ad5c[_0xa55c('0x4e')]['id']}})[_0xa55c('0x1a')](handleEntityNotFound(_0x256db0,null))[_0xa55c('0x1a')](removeEntity(_0x256db0,null))[_0xa55c('0x1a')](function(){return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x58b670){var _0x25d09d=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x62')),'utf8');var _0x2685d8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x65')),_0xa55c('0x63'));var _0x5c2229=ejs['render'](_0x25d09d,{'trunks':_0x58b670});var _0x579726=ejs['render'](_0x2685d8,{'trunks':_0x58b670});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x5c2229);fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x579726);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2f'),{'module':'chan_sip.so'});})[_0xa55c('0x24')](handleError(_0x256db0,null));};
\ No newline at end of file
index db23a5b..38d6f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f91=['request-promise','../../config/environment','./trunk.attributes','exports','define','Trunk','tools_trunks','util','../../config/logger','api','moment','bluebird'];(function(_0x181350,_0x29de05){var _0x5aae1b=function(_0x1ab8d3){while(--_0x1ab8d3){_0x181350['push'](_0x181350['shift']());}};_0x5aae1b(++_0x29de05);}(_0x2f91,0x1e7));var _0x12f9=function(_0x1602fb,_0x113d09){_0x1602fb=_0x1602fb-0x0;var _0x45c757=_0x2f91[_0x1602fb];return _0x45c757;};'use strict';var _=require('lodash');var util=require(_0x12f9('0x0'));var logger=require(_0x12f9('0x1'))(_0x12f9('0x2'));var moment=require(_0x12f9('0x3'));var BPromise=require(_0x12f9('0x4'));var rp=require(_0x12f9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x12f9('0x6'));var attributes=require(_0x12f9('0x7'));module[_0x12f9('0x8')]=function(_0x4210f2,_0x3c16c0){return _0x4210f2[_0x12f9('0x9')](_0x12f9('0xa'),attributes,{'tableName':_0x12f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcfb=['api','bluebird','request-promise','path','rimraf','./trunk.attributes','exports','Trunk','lodash','../../config/logger'];(function(_0x2c3255,_0x4e00ae){var _0x282aba=function(_0x5721d5){while(--_0x5721d5){_0x2c3255['push'](_0x2c3255['shift']());}};_0x282aba(++_0x4e00ae);}(_0xfcfb,0x9e));var _0xbfcf=function(_0x42bfc9,_0x92ccf5){_0x42bfc9=_0x42bfc9-0x0;var _0x645e2b=_0xfcfb[_0x42bfc9];return _0x645e2b;};'use strict';var _=require(_0xbfcf('0x0'));var util=require('util');var logger=require(_0xbfcf('0x1'))(_0xbfcf('0x2'));var moment=require('moment');var BPromise=require(_0xbfcf('0x3'));var rp=require(_0xbfcf('0x4'));var fs=require('fs');var path=require(_0xbfcf('0x5'));var rimraf=require(_0xbfcf('0x6'));var config=require('../../config/environment');var attributes=require(_0xbfcf('0x7'));module[_0xbfcf('0x8')]=function(_0x2f6c2f,_0x26cf31){return _0x2f6c2f['define'](_0xbfcf('0x9'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6c89ec..6dd5fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967c=['jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrunk','Trunk','findAll','options','raw','where','attributes','map','model','include','ShowTrunk','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment'];(function(_0x4b8e63,_0x5cb5a9){var _0x28e347=function(_0x5be7ae){while(--_0x5be7ae){_0x4b8e63['push'](_0x4b8e63['shift']());}};_0x28e347(++_0x5cb5a9);}(_0x967c,0xed));var _0xc967=function(_0x283dc7,_0x207381){_0x283dc7=_0x283dc7-0x0;var _0x4ef79c=_0x967c[_0x283dc7];return _0x4ef79c;};'use strict';var _=require('lodash');var util=require(_0xc967('0x0'));var moment=require(_0xc967('0x1'));var BPromise=require(_0xc967('0x2'));var rs=require(_0xc967('0x3'));var fs=require('fs');var Redis=require(_0xc967('0x4'));var db=require(_0xc967('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc967('0x6'));var config=require(_0xc967('0x7'));var jayson=require(_0xc967('0x8'));var client=jayson[_0xc967('0x9')][_0xc967('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x148519,_0x56ac41,_0x4aeb4c){return new BPromise(function(_0x1931ae,_0x5795ff){return client['request'](_0x148519,_0x4aeb4c)[_0xc967('0xb')](function(_0x48cfee){logger[_0xc967('0xc')](_0xc967('0xd'),_0x56ac41,_0xc967('0xe'));logger[_0xc967('0xf')](_0xc967('0x10'),_0x56ac41,_0xc967('0xe'),JSON[_0xc967('0x11')](_0x48cfee));if(_0x48cfee[_0xc967('0x12')]){if(_0x48cfee[_0xc967('0x12')][_0xc967('0x13')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x56ac41,_0x48cfee[_0xc967('0x12')]['message']);return _0x5795ff(_0x48cfee[_0xc967('0x12')][_0xc967('0x14')]);}logger[_0xc967('0x12')](_0xc967('0xd'),_0x56ac41,_0x48cfee['error'][_0xc967('0x14')]);return _0x1931ae(_0x48cfee['error'][_0xc967('0x14')]);}else{logger[_0xc967('0xc')](_0xc967('0xd'),_0x56ac41,_0xc967('0xe'));_0x1931ae(_0x48cfee[_0xc967('0x15')][_0xc967('0x14')]);}})[_0xc967('0x16')](function(_0x308660){logger[_0xc967('0x12')](_0xc967('0xd'),_0x56ac41,_0x308660);_0x5795ff(_0x308660);});});}exports[_0xc967('0x17')]=function(_0x333627){var _0x1e2c0e=this;return new Promise(function(_0x37cf08,_0x149d2b){return db[_0xc967('0x18')][_0xc967('0x19')]({'raw':_0x333627[_0xc967('0x1a')]?_0x333627[_0xc967('0x1a')][_0xc967('0x1b')]===undefined?!![]:![]:!![],'where':_0x333627[_0xc967('0x1a')]?_0x333627['options'][_0xc967('0x1c')]||null:null,'attributes':_0x333627['options']?_0x333627[_0xc967('0x1a')][_0xc967('0x1d')]||null:null,'limit':_0x333627[_0xc967('0x1a')]?_0x333627['options']['limit']||null:null,'include':_0x333627[_0xc967('0x1a')]?_0x333627['options']['include']?_[_0xc967('0x1e')](_0x333627['options']['include'],function(_0x50b91a){return{'model':db[_0x50b91a[_0xc967('0x1f')]],'as':_0x50b91a['as'],'attributes':_0x50b91a[_0xc967('0x1d')],'include':_0x50b91a[_0xc967('0x20')]?_[_0xc967('0x1e')](_0x50b91a[_0xc967('0x20')],function(_0x4f8b21){return{'model':db[_0x4f8b21[_0xc967('0x1f')]],'as':_0x4f8b21['as'],'attributes':_0x4f8b21['attributes'],'include':_0x4f8b21['include']?_['map'](_0x4f8b21[_0xc967('0x20')],function(_0x1d7441){return{'model':db[_0x1d7441[_0xc967('0x1f')]],'as':_0x1d7441['as'],'attributes':_0x1d7441[_0xc967('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc967('0xb')](function(_0x439a70){logger[_0xc967('0xc')](_0xc967('0x17'),_0x333627);logger[_0xc967('0xf')](_0xc967('0x17'),_0x333627,JSON['stringify'](_0x439a70));_0x37cf08(_0x439a70);})[_0xc967('0x16')](function(_0x2528ae){logger[_0xc967('0x12')](_0xc967('0x17'),_0x2528ae['message'],_0x333627);_0x149d2b(_0x1e2c0e['error'](0x1f4,_0x2528ae[_0xc967('0x14')]));});});};exports[_0xc967('0x21')]=function(_0x5e3f83){var _0x2d0d2d=this;return new Promise(function(_0x20bebb,_0x27cf4a){return db[_0xc967('0x18')][_0xc967('0x22')]({'raw':_0x5e3f83[_0xc967('0x1a')]?_0x5e3f83[_0xc967('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x5e3f83[_0xc967('0x1a')]?_0x5e3f83[_0xc967('0x1a')]['where']||null:null,'attributes':_0x5e3f83[_0xc967('0x1a')]?_0x5e3f83[_0xc967('0x1a')]['attributes']||null:null,'include':_0x5e3f83['options']?_0x5e3f83[_0xc967('0x1a')][_0xc967('0x20')]?_[_0xc967('0x1e')](_0x5e3f83[_0xc967('0x1a')][_0xc967('0x20')],function(_0x86f9f9){return{'model':db[_0x86f9f9['model']],'as':_0x86f9f9['as'],'attributes':_0x86f9f9[_0xc967('0x1d')],'include':_0x86f9f9[_0xc967('0x20')]?_[_0xc967('0x1e')](_0x86f9f9[_0xc967('0x20')],function(_0x46b2d4){return{'model':db[_0x46b2d4['model']],'as':_0x46b2d4['as'],'attributes':_0x46b2d4[_0xc967('0x1d')],'include':_0x46b2d4['include']?_['map'](_0x46b2d4[_0xc967('0x20')],function(_0x55f5d9){return{'model':db[_0x55f5d9[_0xc967('0x1f')]],'as':_0x55f5d9['as'],'attributes':_0x55f5d9[_0xc967('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc967('0xb')](function(_0x51e304){logger[_0xc967('0xc')]('ShowTrunk',_0x5e3f83);logger[_0xc967('0xf')]('ShowTrunk',_0x5e3f83,JSON[_0xc967('0x11')](_0x51e304));_0x20bebb(_0x51e304);})[_0xc967('0x16')](function(_0x387c77){logger['error'](_0xc967('0x21'),_0x387c77[_0xc967('0x14')],_0x5e3f83);_0x27cf4a(_0x2d0d2d[_0xc967('0x12')](0x1f4,_0x387c77[_0xc967('0x14')]));});});};
\ No newline at end of file
+var _0x356d=['info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','Trunk','options','limit','include','model','attributes','map','then','GetTrunk','catch','raw','where','ShowTrunk','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','request'];(function(_0x4bfd20,_0x535ae2){var _0x5e1eaa=function(_0x20180a){while(--_0x20180a){_0x4bfd20['push'](_0x4bfd20['shift']());}};_0x5e1eaa(++_0x535ae2);}(_0x356d,0xd1));var _0xd356=function(_0x274939,_0x2a2cb8){_0x274939=_0x274939-0x0;var _0x28478e=_0x356d[_0x274939];return _0x28478e;};'use strict';var _=require(_0xd356('0x0'));var util=require('util');var moment=require(_0xd356('0x1'));var BPromise=require(_0xd356('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd356('0x3'));var db=require(_0xd356('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd356('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd356('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2ba7ab,_0x4df048,_0x16c77e){return new BPromise(function(_0x4d022c,_0x15ce8d){return client[_0xd356('0x7')](_0x2ba7ab,_0x16c77e)['then'](function(_0x1a4922){logger[_0xd356('0x8')]('Trunk,\x20%s,\x20%s',_0x4df048,_0xd356('0x9'));logger[_0xd356('0xa')](_0xd356('0xb'),_0x4df048,_0xd356('0x9'),JSON[_0xd356('0xc')](_0x1a4922));if(_0x1a4922[_0xd356('0xd')]){if(_0x1a4922['error'][_0xd356('0xe')]===0x1f4){logger['error'](_0xd356('0xf'),_0x4df048,_0x1a4922[_0xd356('0xd')][_0xd356('0x10')]);return _0x15ce8d(_0x1a4922['error']['message']);}logger[_0xd356('0xd')]('Trunk,\x20%s,\x20%s',_0x4df048,_0x1a4922['error'][_0xd356('0x10')]);return _0x4d022c(_0x1a4922[_0xd356('0xd')][_0xd356('0x10')]);}else{logger[_0xd356('0x8')](_0xd356('0xf'),_0x4df048,_0xd356('0x9'));_0x4d022c(_0x1a4922[_0xd356('0x11')][_0xd356('0x10')]);}})['catch'](function(_0x5e6199){logger[_0xd356('0xd')](_0xd356('0xf'),_0x4df048,_0x5e6199);_0x15ce8d(_0x5e6199);});});}exports['GetTrunk']=function(_0x240bb2){var _0x348540=this;return new Promise(function(_0x1c6206,_0x148121){return db[_0xd356('0x12')]['findAll']({'raw':_0x240bb2[_0xd356('0x13')]?_0x240bb2[_0xd356('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x240bb2[_0xd356('0x13')]?_0x240bb2[_0xd356('0x13')]['where']||null:null,'attributes':_0x240bb2['options']?_0x240bb2[_0xd356('0x13')]['attributes']||null:null,'limit':_0x240bb2[_0xd356('0x13')]?_0x240bb2['options'][_0xd356('0x14')]||null:null,'include':_0x240bb2[_0xd356('0x13')]?_0x240bb2[_0xd356('0x13')][_0xd356('0x15')]?_['map'](_0x240bb2['options']['include'],function(_0x3b4602){return{'model':db[_0x3b4602[_0xd356('0x16')]],'as':_0x3b4602['as'],'attributes':_0x3b4602[_0xd356('0x17')],'include':_0x3b4602['include']?_[_0xd356('0x18')](_0x3b4602[_0xd356('0x15')],function(_0x21fdd7){return{'model':db[_0x21fdd7[_0xd356('0x16')]],'as':_0x21fdd7['as'],'attributes':_0x21fdd7[_0xd356('0x17')],'include':_0x21fdd7[_0xd356('0x15')]?_[_0xd356('0x18')](_0x21fdd7[_0xd356('0x15')],function(_0x3d7fa9){return{'model':db[_0x3d7fa9[_0xd356('0x16')]],'as':_0x3d7fa9['as'],'attributes':_0x3d7fa9[_0xd356('0x17')]};}):[]};}):[]};}):[]:[]})[_0xd356('0x19')](function(_0x1932f8){logger[_0xd356('0x8')](_0xd356('0x1a'),_0x240bb2);logger[_0xd356('0xa')](_0xd356('0x1a'),_0x240bb2,JSON[_0xd356('0xc')](_0x1932f8));_0x1c6206(_0x1932f8);})[_0xd356('0x1b')](function(_0x5cf05b){logger['error'](_0xd356('0x1a'),_0x5cf05b[_0xd356('0x10')],_0x240bb2);_0x148121(_0x348540['error'](0x1f4,_0x5cf05b[_0xd356('0x10')]));});});};exports['ShowTrunk']=function(_0x344701){var _0x4de5d4=this;return new Promise(function(_0x5f3449,_0x1d8496){return db['Trunk']['find']({'raw':_0x344701[_0xd356('0x13')]?_0x344701[_0xd356('0x13')][_0xd356('0x1c')]===undefined?!![]:![]:!![],'where':_0x344701[_0xd356('0x13')]?_0x344701[_0xd356('0x13')][_0xd356('0x1d')]||null:null,'attributes':_0x344701[_0xd356('0x13')]?_0x344701[_0xd356('0x13')][_0xd356('0x17')]||null:null,'include':_0x344701[_0xd356('0x13')]?_0x344701[_0xd356('0x13')]['include']?_[_0xd356('0x18')](_0x344701[_0xd356('0x13')][_0xd356('0x15')],function(_0x4d0502){return{'model':db[_0x4d0502[_0xd356('0x16')]],'as':_0x4d0502['as'],'attributes':_0x4d0502[_0xd356('0x17')],'include':_0x4d0502[_0xd356('0x15')]?_[_0xd356('0x18')](_0x4d0502['include'],function(_0xa2911d){return{'model':db[_0xa2911d[_0xd356('0x16')]],'as':_0xa2911d['as'],'attributes':_0xa2911d[_0xd356('0x17')],'include':_0xa2911d['include']?_[_0xd356('0x18')](_0xa2911d[_0xd356('0x15')],function(_0x4dd222){return{'model':db[_0x4dd222['model']],'as':_0x4dd222['as'],'attributes':_0x4dd222[_0xd356('0x17')]};}):[]};}):[]};}):[]:[]})[_0xd356('0x19')](function(_0x2d22f6){logger['info']('ShowTrunk',_0x344701);logger[_0xd356('0xa')]('ShowTrunk',_0x344701,JSON['stringify'](_0x2d22f6));_0x5f3449(_0x2d22f6);})['catch'](function(_0x3c954f){logger[_0xd356('0xd')](_0xd356('0x1e'),_0x3c954f['message'],_0x344701);_0x1d8496(_0x4de5d4[_0xd356('0xd')](0x1f4,_0x3c954f['message']));});});};
\ No newline at end of file
index 65f015e..02700bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f5d=['addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','update','put','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','/:id/api_key','removeApiKey','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./user.controller','isAuthenticated','index','get','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','/:id/queues','getQueues','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/square_projects','getSquareProjects','getScheduledCalls','getApiKey','post','addContacts','/create_many','bulkCreate','addQueues','diskStorage','root','format','now','originalname','single','file','/:id/login','login','logout','/:id/pause','/:id/unpause','unpause','addTeams','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addMailAccounts'];(function(_0x59236f,_0x1bfd46){var _0x17c6a7=function(_0x47a129){while(--_0x47a129){_0x59236f['push'](_0x59236f['shift']());}};_0x17c6a7(++_0x1bfd46);}(_0x1f5d,0x8e));var _0xd1f5=function(_0x1deee5,_0x1d4485){_0x1deee5=_0x1deee5-0x0;var _0x1d6c3a=_0x1f5d[_0x1deee5];return _0x1d6c3a;};'use strict';var multer=require('multer');var util=require(_0xd1f5('0x0'));var path=require('path');var timeout=require(_0xd1f5('0x1'));var express=require(_0xd1f5('0x2'));var router=express[_0xd1f5('0x3')]();var fs_extra=require(_0xd1f5('0x4'));var auth=require(_0xd1f5('0x5'));var interaction=require(_0xd1f5('0x6'));var config=require('../../config/environment');var controller=require(_0xd1f5('0x7'));router['get']('/',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x9')]);router[_0xd1f5('0xa')](_0xd1f5('0xb'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0xc')]);router[_0xd1f5('0xa')](_0xd1f5('0xd'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0xe')]);router[_0xd1f5('0xa')](_0xd1f5('0xf'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x10')]);router[_0xd1f5('0xa')](_0xd1f5('0x11'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x12')]);router['get'](_0xd1f5('0x13'),controller[_0xd1f5('0x14')]);router[_0xd1f5('0xa')](_0xd1f5('0x15'),auth['isAuthenticated'](),controller[_0xd1f5('0x16')]);router[_0xd1f5('0xa')](_0xd1f5('0x17'),auth[_0xd1f5('0x8')](),controller['getContacts']);router[_0xd1f5('0xa')](_0xd1f5('0x18'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x19')]);router[_0xd1f5('0xa')]('/:id/queues_rt',auth[_0xd1f5('0x8')](),controller['getVoiceQueuesRt']);router[_0xd1f5('0xa')](_0xd1f5('0x1a'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x1b')]);router[_0xd1f5('0xa')]('/:id/recordings',auth['isAuthenticated'](),controller[_0xd1f5('0x1c')]);router[_0xd1f5('0xa')](_0xd1f5('0x1d'),auth['isAuthenticated'](),controller['getScreenRecordings']);router['get'](_0xd1f5('0x1e'),auth['isAuthenticated'](),controller[_0xd1f5('0x1f')]);router['get'](_0xd1f5('0x20'),auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router[_0xd1f5('0xa')]('/:id/mail/interactions',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x21')]);router[_0xd1f5('0xa')](_0xd1f5('0x22'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x23')]);router[_0xd1f5('0xa')](_0xd1f5('0x24'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x25')]);router[_0xd1f5('0xa')]('/:id/whatsapp/interactions',auth[_0xd1f5('0x8')](),controller['getWhatsappInteractions']);router['get'](_0xd1f5('0x26'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x27')]);router[_0xd1f5('0xa')](_0xd1f5('0x28'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x29')]);router[_0xd1f5('0xa')](_0xd1f5('0x2a'),auth['isAuthenticated'](),controller['getAgents']);router[_0xd1f5('0xa')](_0xd1f5('0x2b'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x2c')]);router[_0xd1f5('0xa')](_0xd1f5('0x2d'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x2e')]);router[_0xd1f5('0xa')](_0xd1f5('0x2f'),auth['isAuthenticated'](),controller[_0xd1f5('0x30')]);router[_0xd1f5('0xa')](_0xd1f5('0x31'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x32')]);router['get'](_0xd1f5('0x33'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x34')]);router[_0xd1f5('0xa')](_0xd1f5('0x35'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x36')]);router['get'](_0xd1f5('0x37'),auth[_0xd1f5('0x8')](),controller['getWhatsappAccounts']);router[_0xd1f5('0xa')](_0xd1f5('0x38'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x39')]);router[_0xd1f5('0xa')]('/:id/scheduled_calls',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x3a')]);router[_0xd1f5('0xa')]('/:id/api_key',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x3b')]);router[_0xd1f5('0x3c')](_0xd1f5('0x17'),auth['isAuthenticated'](),controller[_0xd1f5('0x3d')]);router[_0xd1f5('0x3c')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xd1f5('0x3e'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x3f')]);router[_0xd1f5('0x3c')](_0xd1f5('0x18'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x40')]);var upload=multer({'storage':multer[_0xd1f5('0x41')]({'destination':function(_0x3b4076,_0x5ac403,_0x2600ca){_0x2600ca(null,path['join'](config[_0xd1f5('0x42')],'server/files/images/'));},'filename':function(_0x4600b3,_0x13b779,_0x1809be){_0x1809be(null,util[_0xd1f5('0x43')]('%s-%s',Date[_0xd1f5('0x44')](),_0x13b779[_0xd1f5('0x45')]));}})});router['post']('/:id/avatar',upload[_0xd1f5('0x46')](_0xd1f5('0x47')),controller['addAvatar']);router[_0xd1f5('0x3c')](_0xd1f5('0x48'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x49')]);router[_0xd1f5('0x3c')]('/:id/logout',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x4a')]);router['post'](_0xd1f5('0x4b'),auth[_0xd1f5('0x8')](),controller['pause']);router[_0xd1f5('0x3c')](_0xd1f5('0x4c'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x4d')]);router[_0xd1f5('0x3c')]('/:id/teams',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x4e')]);router['post']('/:id/chat_interactions',auth[_0xd1f5('0x8')](),controller['addChatInteractions']);router['post'](_0xd1f5('0x4f'),auth['isAuthenticated'](),controller[_0xd1f5('0x50')]);router[_0xd1f5('0x3c')]('/:id/fax_interactions',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x51')]);router[_0xd1f5('0x3c')](_0xd1f5('0x52'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x53')]);router[_0xd1f5('0x3c')](_0xd1f5('0x54'),auth['isAuthenticated'](),controller[_0xd1f5('0x55')]);router[_0xd1f5('0x3c')](_0xd1f5('0x56'),auth[_0xd1f5('0x8')](),controller['addWhatsappInteractions']);router[_0xd1f5('0x3c')]('/:id/fax_accounts',auth[_0xd1f5('0x8')](),controller['addFaxAccounts']);router['post'](_0xd1f5('0x2f'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x57')]);router['post'](_0xd1f5('0x31'),auth['isAuthenticated'](),controller['addOpenchannelAccounts']);router['post'](_0xd1f5('0x33'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x58')]);router[_0xd1f5('0x3c')]('/:id/chat_websites',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x59')]);router['post'](_0xd1f5('0x37'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x5a')]);router['post'](_0xd1f5('0x38'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x5b')]);router[_0xd1f5('0x3c')]('/:id/api_key',auth['isAuthenticated'](),controller[_0xd1f5('0x5c')]);router['put'](_0xd1f5('0x11'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x5d')]);router[_0xd1f5('0x5e')](_0xd1f5('0x5f'),auth['isAuthenticated'](),controller[_0xd1f5('0x60')]);router[_0xd1f5('0x61')]('/:id/queues',auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x62')]);router[_0xd1f5('0x61')](_0xd1f5('0x26'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x63')]);router[_0xd1f5('0x61')](_0xd1f5('0x11'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x64')]);router[_0xd1f5('0x61')](_0xd1f5('0x65'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x66')]);router[_0xd1f5('0x61')](_0xd1f5('0x4f'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x67')]);router[_0xd1f5('0x61')](_0xd1f5('0x68'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x69')]);router['delete'](_0xd1f5('0x52'),auth[_0xd1f5('0x8')](),controller['removeSmsInteractions']);router[_0xd1f5('0x61')]('/:id/openchannel_interactions',auth[_0xd1f5('0x8')](),controller['removeOpenchannelInteractions']);router[_0xd1f5('0x61')](_0xd1f5('0x56'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x6a')]);router[_0xd1f5('0x61')](_0xd1f5('0x2d'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x6b')]);router[_0xd1f5('0x61')](_0xd1f5('0x2f'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x6c')]);router[_0xd1f5('0x61')](_0xd1f5('0x31'),auth[_0xd1f5('0x8')](),controller['removeOpenchannelAccounts']);router[_0xd1f5('0x61')](_0xd1f5('0x33'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x6d')]);router[_0xd1f5('0x61')](_0xd1f5('0x35'),auth['isAuthenticated'](),controller[_0xd1f5('0x6e')]);router[_0xd1f5('0x61')](_0xd1f5('0x37'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x6f')]);router[_0xd1f5('0x61')](_0xd1f5('0x38'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x70')]);router[_0xd1f5('0x61')](_0xd1f5('0x71'),auth[_0xd1f5('0x8')](),controller[_0xd1f5('0x72')]);module['exports']=router;
\ No newline at end of file
+var _0x633c=['removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','/describe','describe','isAuthenticated','whoami','/presence','show','/:id/avatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','getTeams','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','post','create','/create_many','bulkCreate','diskStorage','join','root','server/files/images/','now','originalname','single','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','/:id/teams','addChatInteractions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','/:id/square_projects','addSquareProjects','/:id/api_key','createApiKey','update','put','changePassword','delete','removeTeams','/:id','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x633c,0xf0));var _0xc633=function(_0x251ce0,_0x420ef4){_0x251ce0=_0x251ce0-0x0;var _0x4e0503=_0x633c[_0x251ce0];return _0x4e0503;};'use strict';var multer=require(_0xc633('0x0'));var util=require(_0xc633('0x1'));var path=require(_0xc633('0x2'));var timeout=require('connect-timeout');var express=require(_0xc633('0x3'));var router=express[_0xc633('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc633('0x5'));var interaction=require(_0xc633('0x6'));var config=require(_0xc633('0x7'));var controller=require(_0xc633('0x8'));router[_0xc633('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc633('0x9')](_0xc633('0xa'),auth['isAuthenticated'](),controller[_0xc633('0xb')]);router[_0xc633('0x9')]('/whoami',auth[_0xc633('0xc')](),controller[_0xc633('0xd')]);router['get'](_0xc633('0xe'),auth[_0xc633('0xc')](),controller['getPresence']);router[_0xc633('0x9')]('/:id',auth[_0xc633('0xc')](),controller[_0xc633('0xf')]);router[_0xc633('0x9')](_0xc633('0x10'),controller['getAvatar']);router['get']('/:id/open_tabs',auth[_0xc633('0xc')](),controller[_0xc633('0x11')]);router[_0xc633('0x9')](_0xc633('0x12'),auth['isAuthenticated'](),controller[_0xc633('0x13')]);router[_0xc633('0x9')](_0xc633('0x14'),auth[_0xc633('0xc')](),controller[_0xc633('0x15')]);router[_0xc633('0x9')](_0xc633('0x16'),auth[_0xc633('0xc')](),controller[_0xc633('0x17')]);router[_0xc633('0x9')](_0xc633('0x18'),auth['isAuthenticated'](),controller['getGroups']);router[_0xc633('0x9')](_0xc633('0x19'),auth['isAuthenticated'](),controller[_0xc633('0x1a')]);router[_0xc633('0x9')](_0xc633('0x1b'),auth[_0xc633('0xc')](),controller[_0xc633('0x1c')]);router['get'](_0xc633('0x1d'),auth[_0xc633('0xc')](),controller[_0xc633('0x1e')]);router[_0xc633('0x9')](_0xc633('0x1f'),auth[_0xc633('0xc')](),controller[_0xc633('0x20')]);router[_0xc633('0x9')](_0xc633('0x21'),auth[_0xc633('0xc')](),controller['getMailInteractions']);router[_0xc633('0x9')](_0xc633('0x22'),auth[_0xc633('0xc')](),controller[_0xc633('0x23')]);router[_0xc633('0x9')](_0xc633('0x24'),auth['isAuthenticated'](),controller['getFaxInteractions']);router[_0xc633('0x9')](_0xc633('0x25'),auth['isAuthenticated'](),controller[_0xc633('0x26')]);router[_0xc633('0x9')]('/:id/teams',auth[_0xc633('0xc')](),controller[_0xc633('0x27')]);router[_0xc633('0x9')]('/:id/lists',auth[_0xc633('0xc')](),controller[_0xc633('0x28')]);router['get'](_0xc633('0x29'),auth[_0xc633('0xc')](),controller[_0xc633('0x2a')]);router[_0xc633('0x9')](_0xc633('0x2b'),auth[_0xc633('0xc')](),controller[_0xc633('0x2c')]);router[_0xc633('0x9')](_0xc633('0x2d'),auth[_0xc633('0xc')](),controller[_0xc633('0x2e')]);router[_0xc633('0x9')](_0xc633('0x2f'),auth[_0xc633('0xc')](),controller['getMailAccounts']);router[_0xc633('0x9')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0xc633('0x30')]);router[_0xc633('0x9')](_0xc633('0x31'),auth[_0xc633('0xc')](),controller[_0xc633('0x32')]);router[_0xc633('0x9')](_0xc633('0x33'),auth[_0xc633('0xc')](),controller[_0xc633('0x34')]);router['get'](_0xc633('0x35'),auth[_0xc633('0xc')](),controller[_0xc633('0x36')]);router[_0xc633('0x9')]('/:id/square_projects',auth[_0xc633('0xc')](),controller[_0xc633('0x37')]);router[_0xc633('0x9')](_0xc633('0x38'),auth[_0xc633('0xc')](),controller['getScheduledCalls']);router[_0xc633('0x9')]('/:id/api_key',auth['isAuthenticated'](),controller['getApiKey']);router[_0xc633('0x39')](_0xc633('0x12'),auth['isAuthenticated'](),controller['addContacts']);router[_0xc633('0x39')]('/',auth[_0xc633('0xc')](),controller[_0xc633('0x3a')]);router[_0xc633('0x39')](_0xc633('0x3b'),auth[_0xc633('0xc')](),controller[_0xc633('0x3c')]);router[_0xc633('0x39')](_0xc633('0x14'),auth[_0xc633('0xc')](),controller['addQueues']);var upload=multer({'storage':multer[_0xc633('0x3d')]({'destination':function(_0x40afc3,_0x3445c7,_0x1b5a08){_0x1b5a08(null,path[_0xc633('0x3e')](config[_0xc633('0x3f')],_0xc633('0x40')));},'filename':function(_0x3ac18f,_0x29e388,_0x455752){_0x455752(null,util['format']('%s-%s',Date[_0xc633('0x41')](),_0x29e388[_0xc633('0x42')]));}})});router['post'](_0xc633('0x10'),upload[_0xc633('0x43')]('file'),controller[_0xc633('0x44')]);router['post'](_0xc633('0x45'),auth[_0xc633('0xc')](),controller[_0xc633('0x46')]);router['post'](_0xc633('0x47'),auth['isAuthenticated'](),controller[_0xc633('0x48')]);router[_0xc633('0x39')](_0xc633('0x49'),auth['isAuthenticated'](),controller[_0xc633('0x4a')]);router[_0xc633('0x39')](_0xc633('0x4b'),auth[_0xc633('0xc')](),controller['unpause']);router[_0xc633('0x39')](_0xc633('0x4c'),auth[_0xc633('0xc')](),controller['addTeams']);router[_0xc633('0x39')]('/:id/chat_interactions',auth[_0xc633('0xc')](),controller[_0xc633('0x4d')]);router[_0xc633('0x39')]('/:id/mail_interactions',auth[_0xc633('0xc')](),controller[_0xc633('0x4e')]);router[_0xc633('0x39')](_0xc633('0x4f'),auth[_0xc633('0xc')](),controller['addFaxInteractions']);router[_0xc633('0x39')](_0xc633('0x50'),auth['isAuthenticated'](),controller[_0xc633('0x51')]);router[_0xc633('0x39')](_0xc633('0x52'),auth[_0xc633('0xc')](),controller[_0xc633('0x53')]);router['post'](_0xc633('0x54'),auth[_0xc633('0xc')](),controller[_0xc633('0x55')]);router[_0xc633('0x39')](_0xc633('0x2d'),auth[_0xc633('0xc')](),controller['addFaxAccounts']);router[_0xc633('0x39')](_0xc633('0x2f'),auth[_0xc633('0xc')](),controller[_0xc633('0x56')]);router[_0xc633('0x39')]('/:id/openchannel_accounts',auth[_0xc633('0xc')](),controller[_0xc633('0x57')]);router[_0xc633('0x39')](_0xc633('0x31'),auth[_0xc633('0xc')](),controller[_0xc633('0x58')]);router[_0xc633('0x39')](_0xc633('0x33'),auth[_0xc633('0xc')](),controller[_0xc633('0x59')]);router[_0xc633('0x39')]('/:id/whatsapp_accounts',auth[_0xc633('0xc')](),controller[_0xc633('0x5a')]);router[_0xc633('0x39')](_0xc633('0x5b'),auth[_0xc633('0xc')](),controller[_0xc633('0x5c')]);router[_0xc633('0x39')](_0xc633('0x5d'),auth[_0xc633('0xc')](),controller[_0xc633('0x5e')]);router['put']('/:id',auth[_0xc633('0xc')](),controller[_0xc633('0x5f')]);router[_0xc633('0x60')]('/:id/password',auth[_0xc633('0xc')](),controller[_0xc633('0x61')]);router[_0xc633('0x62')]('/:id/queues',auth[_0xc633('0xc')](),controller['removeQueues']);router[_0xc633('0x62')](_0xc633('0x4c'),auth[_0xc633('0xc')](),controller[_0xc633('0x63')]);router[_0xc633('0x62')](_0xc633('0x64'),auth[_0xc633('0xc')](),controller[_0xc633('0x65')]);router[_0xc633('0x62')](_0xc633('0x66'),auth[_0xc633('0xc')](),controller[_0xc633('0x67')]);router[_0xc633('0x62')]('/:id/mail_interactions',auth[_0xc633('0xc')](),controller[_0xc633('0x68')]);router[_0xc633('0x62')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0xc633('0x69')]);router[_0xc633('0x62')](_0xc633('0x50'),auth['isAuthenticated'](),controller[_0xc633('0x6a')]);router[_0xc633('0x62')](_0xc633('0x52'),auth[_0xc633('0xc')](),controller[_0xc633('0x6b')]);router[_0xc633('0x62')](_0xc633('0x54'),auth[_0xc633('0xc')](),controller[_0xc633('0x6c')]);router[_0xc633('0x62')](_0xc633('0x2d'),auth[_0xc633('0xc')](),controller['removeFaxAccounts']);router[_0xc633('0x62')](_0xc633('0x2f'),auth[_0xc633('0xc')](),controller[_0xc633('0x6d')]);router[_0xc633('0x62')]('/:id/openchannel_accounts',auth[_0xc633('0xc')](),controller['removeOpenchannelAccounts']);router[_0xc633('0x62')](_0xc633('0x31'),auth[_0xc633('0xc')](),controller['removeSmsAccounts']);router['delete'](_0xc633('0x33'),auth[_0xc633('0xc')](),controller[_0xc633('0x6e')]);router[_0xc633('0x62')](_0xc633('0x35'),auth[_0xc633('0xc')](),controller[_0xc633('0x6f')]);router[_0xc633('0x62')](_0xc633('0x5b'),auth['isAuthenticated'](),controller[_0xc633('0x70')]);router[_0xc633('0x62')](_0xc633('0x5d'),auth[_0xc633('0xc')](),controller[_0xc633('0x71')]);module[_0xc633('0x72')]=router;
\ No newline at end of file
index 3fbb76a..1151eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e0c=['originate','uac','uas','fingerprint','certificate','active','passive','actpass','showWebBar','get','wss','avpf','icesupport','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','force_avp','dtlsenable','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','callerid','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','admin','user','agent','telephone','local','INTEGER','accountcode','getDataValue','fullname','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','peer','from-sip','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','nonat','update','yes','force_rport,comedia','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','refuse'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x5e0c,0x19f));var _0xc5e0=function(_0x91ed5c,_0xdb6b34){_0x91ed5c=_0x91ed5c-0x0;var _0x2387d8=_0x5e0c[_0x91ed5c];return _0x2387d8;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc5e0('0x0'));var util=require(_0xc5e0('0x1'));var _=require(_0xc5e0('0x2'));module[_0xc5e0('0x3')]={'name':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':![],'unique':_0xc5e0('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x4adda8){this[_0xc5e0('0x6')](_0xc5e0('0x5'),_0x4adda8);this[_0xc5e0('0x6')](_0xc5e0('0x7'),_0x4adda8);},'comment':_0xc5e0('0x8')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x4b46de){this[_0xc5e0('0x6')]('fullname',_0x4b46de);this[_0xc5e0('0x6')](_0xc5e0('0x9'),util[_0xc5e0('0xa')](_0xc5e0('0xb'),_0x4b46de,this['getDataValue'](_0xc5e0('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':![],'unique':_0xc5e0('0xd'),'validate':{'isEmail':!![]},'set':function(_0x1d3618){if(_0x1d3618){this[_0xc5e0('0x6')](_0xc5e0('0xd'),_0x1d3618[_0xc5e0('0xe')]());}}},'role':{'type':Sequelize['ENUM'](_0xc5e0('0xf'),_0xc5e0('0x10'),_0xc5e0('0x11'),_0xc5e0('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xc5e0('0x13')},'internal':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':![],'unique':'internal','set':function(_0x55e389){this[_0xc5e0('0x6')]('internal',_0x55e389);this['setDataValue'](_0xc5e0('0x15'),_0x55e389);this[_0xc5e0('0x6')](_0xc5e0('0x9'),util[_0xc5e0('0xa')](_0xc5e0('0xb'),this[_0xc5e0('0x16')](_0xc5e0('0x17')),_0x55e389));}},'salt':{'type':Sequelize[_0xc5e0('0x4')]},'phone':{'type':Sequelize[_0xc5e0('0x4')]},'mobile':{'type':Sequelize[_0xc5e0('0x4')]},'address':{'type':Sequelize[_0xc5e0('0x4')]},'zipcode':{'type':Sequelize[_0xc5e0('0x4')]},'userpic':{'type':Sequelize[_0xc5e0('0x4')]},'city':{'type':Sequelize[_0xc5e0('0x4')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xc5e0('0x18')]},'voicePause':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xc5e0('0x1a')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xc5e0('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xc5e0('0x1b')},'ipaddr':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend','user',_0xc5e0('0x1c')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![],'defaultValue':_0xc5e0('0x1d')},'callingpres':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x1f'),'ALLOWED_PASSED_SCREEN',_0xc5e0('0x20'),_0xc5e0('0x21'),'PROHIB_NOT_SCREENED',_0xc5e0('0x22'),_0xc5e0('0x23'),_0xc5e0('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![],'defaultValue':_0xc5e0('0x25'),'set':function(_0x31b449){this[_0xc5e0('0x6')]('transport',_0x31b449?_0x31b449['join'](','):null);},'get':function(){return this[_0xc5e0('0x16')]('transport')?this[_0xc5e0('0x16')](_0xc5e0('0x26'))[_0xc5e0('0x27')](','):null;},'comment':_0xc5e0('0x28')},'dtmfmode':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x29'),'info',_0xc5e0('0x2a'),_0xc5e0('0x2b'),_0xc5e0('0x2c')),'allowNull':!![],'defaultValue':_0xc5e0('0x29')},'directmedia':{'type':Sequelize[_0xc5e0('0x1e')]('yes','no',_0xc5e0('0x2d'),_0xc5e0('0x2e'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![],'defaultValue':_0xc5e0('0x30'),'set':function(_0x3d1145){this[_0xc5e0('0x6')](_0xc5e0('0x31'),_0x3d1145?_0x3d1145[_0xc5e0('0x32')](','):null);},'get':function(){return this[_0xc5e0('0x16')](_0xc5e0('0x31'))?this[_0xc5e0('0x16')](_0xc5e0('0x31'))[_0xc5e0('0x27')](','):null;},'comment':_0xc5e0('0x33')},'callgroup':{'type':Sequelize[_0xc5e0('0x4')]},'namedcallgroup':{'type':Sequelize[_0xc5e0('0x4')]},'pickupgroup':{'type':Sequelize[_0xc5e0('0x4')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xc5e0('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xc5e0('0x4')]},'disallow':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':![],'defaultValue':_0xc5e0('0x34')},'allow':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x2a9a9d){this[_0xc5e0('0x6')](_0xc5e0('0x35'),_0x2a9a9d?_0x2a9a9d[_0xc5e0('0x32')](';'):_0xc5e0('0x36'));},'get':function(){return this[_0xc5e0('0x16')]('allow')?this[_0xc5e0('0x16')]('allow')[_0xc5e0('0x27')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0x4a1982){this[_0xc5e0('0x6')](_0xc5e0('0x37'),_0x4a1982?_0x4a1982['join'](','):null);},'get':function(){return this['getDataValue'](_0xc5e0('0x37'))?this[_0xc5e0('0x16')](_0xc5e0('0x37'))[_0xc5e0('0x27')](','):null;},'comment':_0xc5e0('0x38')},'trustrpid':{'type':Sequelize[_0xc5e0('0x1e')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![],'defaultValue':_0xc5e0('0x39')},'amaflags':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xc5e0('0x1e')]('yes','no'),'allowNull':!![],'defaultValue':_0xc5e0('0x2f')},'busylevel':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no',_0xc5e0('0x3a')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xc5e0('0x1e')]('accept',_0xc5e0('0x3b'),_0xc5e0('0x3c')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x3d'),_0xc5e0('0x3e')),'allowNull':!![],'defaultValue':_0xc5e0('0x3e')},'t38pt_usertpsource':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![],'defaultValue':_0xc5e0('0x2f')},'keepalive':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xc5e0('0x1e')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no',_0xc5e0('0x3f'),_0xc5e0('0x40')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x41'),_0xc5e0('0x42'),_0xc5e0('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0xc5e0('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xc5e0('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no','nonat',_0xc5e0('0x2e'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xc5e0('0x4')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0xc5e0('0x18')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0,'set':function(_0x565ace){this[_0xc5e0('0x6')](_0xc5e0('0x44'),_0x565ace);var _0x569b35=this[_0xc5e0('0x45')]({'plain':!![]});switch(_0x565ace){case 0x0:case 0x1:var _0x5a7d55=_0x569b35[_0xc5e0('0x26')]?_['isArray'](_0x569b35[_0xc5e0('0x26')])?_0x569b35['transport'][_0xc5e0('0x32')]():_0x569b35['transport']:_0xc5e0('0x25');if(_0x5a7d55===_0xc5e0('0x46')){_0x5a7d55=_0xc5e0('0x25');}this['setDataValue']('transport',_0x5a7d55);this[_0xc5e0('0x6')]('encryption','no');this[_0xc5e0('0x6')](_0xc5e0('0x47'),null);this[_0xc5e0('0x6')]('force_avp',null);this[_0xc5e0('0x6')](_0xc5e0('0x48'),null);this[_0xc5e0('0x6')]('dtlsenable',null);this[_0xc5e0('0x6')](_0xc5e0('0x49'),null);this['setDataValue'](_0xc5e0('0x4a'),null);this['setDataValue'](_0xc5e0('0x4b'),null);this['setDataValue'](_0xc5e0('0x4c'),null);this[_0xc5e0('0x6')](_0xc5e0('0x4d'),'no');break;case 0x2:this[_0xc5e0('0x6')]('transport',_0xc5e0('0x46'));this[_0xc5e0('0x6')](_0xc5e0('0x4e'),_0xc5e0('0x2f'));this['setDataValue']('avpf','yes');this[_0xc5e0('0x6')](_0xc5e0('0x4f'),_0xc5e0('0x2f'));this[_0xc5e0('0x6')]('icesupport',_0xc5e0('0x2f'));this[_0xc5e0('0x6')](_0xc5e0('0x50'),'yes');this['setDataValue'](_0xc5e0('0x49'),'no');this[_0xc5e0('0x6')](_0xc5e0('0x4a'),_0xc5e0('0x43'));this[_0xc5e0('0x6')](_0xc5e0('0x4b'),_0x569b35[_0xc5e0('0x4b')]||_0xc5e0('0x51'));this[_0xc5e0('0x6')]('dtlsprivatekey',_0x569b35[_0xc5e0('0x4c')]||_0xc5e0('0x52'));this[_0xc5e0('0x6')](_0xc5e0('0x4d'),_0xc5e0('0x2f'));break;default:}}},'permissions':{'type':Sequelize[_0xc5e0('0x53')],'set':function(_0x51917b){this['setDataValue'](_0xc5e0('0x54'),_0x51917b?_0x51917b[_0xc5e0('0x32')](','):[]);},'get':function(){return this[_0xc5e0('0x16')](_0xc5e0('0x54'))?_[_0xc5e0('0x55')](this['getDataValue'](_0xc5e0('0x54'))['split'](','),function(_0x36e867){return parseInt(_0x36e867,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xc5e0('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xc5e0('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0xc5e0('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xc5e0('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xc5e0('0x1e')](_0xc5e0('0x2f'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xc5e0('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xc5e0('0x16')](_0xc5e0('0x56'))?this[_0xc5e0('0x16')](_0xc5e0('0x56')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'interface':{'type':Sequelize[_0xc5e0('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xc5e0('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x2eeca8){if(typeof _0x2eeca8===_0xc5e0('0x57')){var _0x47e606=_0x2eeca8==='1'?!![]:_0x2eeca8==='0'?![]:_0x2eeca8===_0xc5e0('0x58')?!![]:_0x2eeca8===_0xc5e0('0x59')?![]:![];this[_0xc5e0('0x6')](_0xc5e0('0x5a'),_0x47e606);}else{this[_0xc5e0('0x6')](_0xc5e0('0x5a'),_0x2eeca8);}}},'blocked':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![],'set':function(_0x5f0ff8){this[_0xc5e0('0x6')](_0xc5e0('0x5b'),_0x5f0ff8);if(_0x5f0ff8===!![]){this[_0xc5e0('0x6')](_0xc5e0('0x5c'),moment());this[_0xc5e0('0x6')](_0xc5e0('0x5d'),0x0);}else{this[_0xc5e0('0x6')](_0xc5e0('0x5c'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xc5e0('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xc5e0('0x14')](0x5)[_0xc5e0('0x5e')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xc5e0('0x19')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x0755=['all','allow','ulaw;alaw;gsm','insecure','never','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','passive','nonat','update,nonat','TEXT','showWebBar','get','wss','encryption','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','actpass','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','phoneBarEnableScreenRecordingByAgent','string','blockedAt','loginAttempts','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','callerid','format','getDataValue','email','toLowerCase','admin','agent','telephone','local','INTEGER','internal','accountcode','\x22%s\x22\x20<%s>','fullname','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','user','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','ENUM','info','rfc2833','yes','update','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'];(function(_0x3074f3,_0x4f2c03){var _0x53f112=function(_0x4a17af){while(--_0x4a17af){_0x3074f3['push'](_0x3074f3['shift']());}};_0x53f112(++_0x4f2c03);}(_0x0755,0x7c));var _0x5075=function(_0x540701,_0x20df75){_0x540701=_0x540701-0x0;var _0xce5aa5=_0x0755[_0x540701];return _0xce5aa5;};'use strict';var Sequelize=require(_0x5075('0x0'));var moment=require(_0x5075('0x1'));var util=require(_0x5075('0x2'));var _=require(_0x5075('0x3'));module[_0x5075('0x4')]={'name':{'type':Sequelize[_0x5075('0x5')],'allowNull':![],'unique':_0x5075('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x87c82d){this[_0x5075('0x7')](_0x5075('0x6'),_0x87c82d);this['setDataValue'](_0x5075('0x8'),_0x87c82d);},'comment':_0x5075('0x9')},'fullname':{'type':Sequelize[_0x5075('0x5')],'allowNull':![],'set':function(_0x2e39f4){this['setDataValue']('fullname',_0x2e39f4);this['setDataValue'](_0x5075('0xa'),util[_0x5075('0xb')]('\x22%s\x22\x20<%s>',_0x2e39f4,this[_0x5075('0xc')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x5075('0x5')],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x537da8){if(_0x537da8){this[_0x5075('0x7')](_0x5075('0xd'),_0x537da8[_0x5075('0xe')]());}}},'role':{'type':Sequelize['ENUM'](_0x5075('0xf'),'user',_0x5075('0x10'),_0x5075('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x5075('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x5075('0x5')],'defaultValue':_0x5075('0x12')},'internal':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':![],'unique':_0x5075('0x14'),'set':function(_0x32b1a1){this[_0x5075('0x7')](_0x5075('0x14'),_0x32b1a1);this[_0x5075('0x7')](_0x5075('0x15'),_0x32b1a1);this[_0x5075('0x7')]('callerid',util[_0x5075('0xb')](_0x5075('0x16'),this[_0x5075('0xc')](_0x5075('0x17')),_0x32b1a1));}},'salt':{'type':Sequelize[_0x5075('0x5')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x5075('0x5')]},'address':{'type':Sequelize[_0x5075('0x5')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x5075('0x5')]},'city':{'type':Sequelize[_0x5075('0x5')]},'country':{'type':Sequelize[_0x5075('0x5')]},'online':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x5075('0x19')},'lastPauseAt':{'type':Sequelize[_0x5075('0x1a')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x5075('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![],'defaultValue':_0x5075('0x1b')},'ipaddr':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'port':{'type':Sequelize[_0x5075('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x5075('0x1c'),_0x5075('0x1d'),_0x5075('0x1e')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize['ENUM'](_0x5075('0x1f'),_0x5075('0x20'),_0x5075('0x21'),_0x5075('0x22'),'PROHIB_NOT_SCREENED',_0x5075('0x23'),_0x5075('0x24'),_0x5075('0x25')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'secret':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x5075('0x26'),'set':function(_0x1ace0f){this[_0x5075('0x7')]('transport',_0x1ace0f?_0x1ace0f[_0x5075('0x27')](','):null);},'get':function(){return this[_0x5075('0xc')](_0x5075('0x28'))?this[_0x5075('0xc')](_0x5075('0x28'))['split'](','):null;},'comment':_0x5075('0x29')},'dtmfmode':{'type':Sequelize[_0x5075('0x2a')]('rfc2833',_0x5075('0x2b'),'shortinfo','inband','auto'),'allowNull':!![],'defaultValue':_0x5075('0x2c')},'directmedia':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no','nonat',_0x5075('0x2e'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'nat':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x453aa7){this[_0x5075('0x7')](_0x5075('0x2f'),_0x453aa7?_0x453aa7['join'](','):null);},'get':function(){return this[_0x5075('0xc')](_0x5075('0x2f'))?this[_0x5075('0xc')](_0x5075('0x2f'))[_0x5075('0x30')](','):null;},'comment':_0x5075('0x31')},'callgroup':{'type':Sequelize[_0x5075('0x5')]},'namedcallgroup':{'type':Sequelize[_0x5075('0x5')]},'pickupgroup':{'type':Sequelize[_0x5075('0x5')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x5075('0x5')]},'disallow':{'type':Sequelize[_0x5075('0x5')],'allowNull':![],'defaultValue':_0x5075('0x32')},'allow':{'type':Sequelize[_0x5075('0x5')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x63b935){this[_0x5075('0x7')](_0x5075('0x33'),_0x63b935?_0x63b935[_0x5075('0x27')](';'):_0x5075('0x34'));},'get':function(){return this[_0x5075('0xc')](_0x5075('0x33'))?this['getDataValue']('allow')['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![],'set':function(_0x5074d5){this[_0x5075('0x7')]('insecure',_0x5074d5?_0x5074d5[_0x5075('0x27')](','):null);},'get':function(){return this[_0x5075('0xc')](_0x5075('0x35'))?this[_0x5075('0xc')](_0x5075('0x35'))[_0x5075('0x30')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x5075('0x2a')]('yes','no',_0x5075('0x36')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![],'defaultValue':_0x5075('0x37')},'amaflags':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x5075('0x2d')},'busylevel':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x5075('0x2a')]('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x5075('0x2a')]('yes','no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x5075('0x38'),_0x5075('0x39'),_0x5075('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x3b'),_0x5075('0x3c')),'allowNull':!![],'defaultValue':_0x5075('0x3c')},'t38pt_usertpsource':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0x5075('0x2a')]('yes','no'),'allowNull':!![],'defaultValue':_0x5075('0x2d')},'keepalive':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no',_0x5075('0x3d'),_0x5075('0x3e')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x5075('0x2a')]('active',_0x5075('0x3f'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x5075('0x13')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x5075('0x2a')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x5075('0x2a')](_0x5075('0x2d'),'no',_0x5075('0x40'),_0x5075('0x2e'),_0x5075('0x41')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x5075('0x5')]},'resetPasswordExpires':{'type':Sequelize[_0x5075('0x1a')]},'passwordResetAt':{'type':Sequelize[_0x5075('0x1a')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x5075('0x42')]},'showWebBar':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x0,'set':function(_0x548a40){this[_0x5075('0x7')](_0x5075('0x43'),_0x548a40);var _0x278b41=this[_0x5075('0x44')]({'plain':!![]});switch(_0x548a40){case 0x0:case 0x1:var _0x8374a8=_0x278b41[_0x5075('0x28')]?_['isArray'](_0x278b41[_0x5075('0x28')])?_0x278b41[_0x5075('0x28')][_0x5075('0x27')]():_0x278b41[_0x5075('0x28')]:'udp';if(_0x8374a8===_0x5075('0x45')){_0x8374a8=_0x5075('0x26');}this['setDataValue']('transport',_0x8374a8);this['setDataValue'](_0x5075('0x46'),'no');this[_0x5075('0x7')]('avpf',null);this[_0x5075('0x7')](_0x5075('0x47'),null);this[_0x5075('0x7')](_0x5075('0x48'),null);this[_0x5075('0x7')](_0x5075('0x49'),null);this[_0x5075('0x7')](_0x5075('0x4a'),null);this[_0x5075('0x7')](_0x5075('0x4b'),null);this[_0x5075('0x7')](_0x5075('0x4c'),null);this['setDataValue']('dtlsprivatekey',null);this[_0x5075('0x7')](_0x5075('0x4d'),'no');break;case 0x2:this['setDataValue'](_0x5075('0x28'),_0x5075('0x45'));this[_0x5075('0x7')](_0x5075('0x46'),_0x5075('0x2d'));this[_0x5075('0x7')]('avpf','yes');this[_0x5075('0x7')](_0x5075('0x47'),'yes');this[_0x5075('0x7')](_0x5075('0x48'),_0x5075('0x2d'));this['setDataValue'](_0x5075('0x49'),_0x5075('0x2d'));this['setDataValue'](_0x5075('0x4a'),'no');this['setDataValue'](_0x5075('0x4b'),_0x5075('0x4e'));this[_0x5075('0x7')](_0x5075('0x4c'),_0x278b41[_0x5075('0x4c')]||_0x5075('0x4f'));this[_0x5075('0x7')](_0x5075('0x50'),_0x278b41[_0x5075('0x50')]||'/etc/pki/tls/private/motion.key');this[_0x5075('0x7')](_0x5075('0x4d'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x5075('0x42')],'set':function(_0x38d9ec){this['setDataValue'](_0x5075('0x51'),_0x38d9ec?_0x38d9ec[_0x5075('0x27')](','):[]);},'get':function(){return this[_0x5075('0xc')](_0x5075('0x51'))?_[_0x5075('0x52')](this[_0x5075('0xc')](_0x5075('0x51'))[_0x5075('0x30')](','),function(_0x16da50){return parseInt(_0x16da50,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x5075('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x5075('0x5')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x5075('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x5075('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x5075('0x5')]},'phoneBarEnableJaws':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('phoneBarEnableScreenRecordingByAgent')?this[_0x5075('0xc')](_0x5075('0x53')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x5075('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x5075('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![],'set':function(_0x47c71c){if(typeof _0x47c71c===_0x5075('0x54')){var _0x376eb0=_0x47c71c==='1'?!![]:_0x47c71c==='0'?![]:_0x47c71c==='true'?!![]:_0x47c71c==='false'?![]:![];this[_0x5075('0x7')]('screenrecording',_0x376eb0);}else{this['setDataValue']('screenrecording',_0x47c71c);}}},'blocked':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![],'set':function(_0x2ab0c5){this[_0x5075('0x7')]('blocked',_0x2ab0c5);if(_0x2ab0c5===!![]){this[_0x5075('0x7')](_0x5075('0x55'),moment());this[_0x5075('0x7')](_0x5075('0x56'),0x0);}else{this['setDataValue'](_0x5075('0x55'),null);}}},'blockedAt':{'type':Sequelize[_0x5075('0x1a')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x5075('0x13')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x5075('0x18')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x5075('0x13')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5075('0x18')],'defaultValue':!![]}};
\ No newline at end of file
index 9eabf98..960998f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3970=['$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','firstName','lastName','CmContact','Contact','dialActive','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','getAgents','lower','col','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','pause','idle','unknown','ringing','voiceStatus','busy','slice','charAt','QueryTypes','select','field','InteractionId','ui.createdAt','user_has_','_interactions','toString','OpenTabs','moment','bluebird','path','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','register','redis','defaults','localhost','client','http','request','info','request\x20sent','User,\x20%s,\x20%s,\x20%s','error','code','message','User,\x20%s,\x20%s','result','catch','status','end','json','offset','undefined','count','limit','Content-Range','update','then','destroy','get','role','Users','user','Agents','agent','Telephones','telephone','value','includes','find','UserProfileResource','sendStatus','stack','name','send','index','rawAttributes','map','fieldName','type','key','filter','salt','getOptions','where','User','query','includeAll','attributes','push','rows','true','length','chat','sms','dataValues','fax','mail','whatsapp','show','params','model','differenceBy','keys','password','intersection','fields','include','merge','options','openTabs','openchannel','all','body','describe','ids','omit','internal','findById','securePassword','max','isNil','min_internal','sequelize','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)','SELECT','from','voicemail','mailbox','fullname','email','permissions','101','102','103','113','110','104','105','107','108','109','100','114','115','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','VoiceMail','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','UserProfileSection','findAll','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','ValidationError','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','enforcePasswordHistory','validatePasswordPattern','validatePasswordHistory','previousPasswords','passwordHistoryLimit','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','add','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','isValidChannel','Unknown\x20channel','remove','Queue:remove','addAvatar','userpic','file','join','root','server/files/images/logos/default_profile.png','download','server/files/images/','getOpenTabs','ChatOpenTabs','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','getContacts','findOne','filters','order','sort','hasOwnProperty','Tags','tag','nolimit','getQueues','pick','Queue','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','UserId','ScreenRecording','ChatInteraction','getChatInteractions','OpenchannelInteraction','getOpenchannelInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','intrf','user:%s','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','PAUSE','concat','resolve','logout','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','unpause','manual','%s%s','Pause','getTeams','addTeams','Team','setDataValue','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','transaction','getDataValue','Voice','TeamVoicePrefix','VoicePrefixId','removeTeams','UserVoicePrefix','getLists','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','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$or','$gt','$gte'];(function(_0x29ae80,_0x3579f1){var _0x5d6d71=function(_0xfaffe2){while(--_0xfaffe2){_0x29ae80['push'](_0x29ae80['shift']());}};_0x5d6d71(++_0x3579f1);}(_0x3970,0x1d4));var _0x0397=function(_0x1c8cc6,_0x411e5c){_0x1c8cc6=_0x1c8cc6-0x0;var _0x522936=_0x3970[_0x1c8cc6];return _0x522936;};'use strict';var moment=require(_0x0397('0x0'));var BPromise=require(_0x0397('0x1'));var util=require('util');var path=require(_0x0397('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0x0397('0x3'));var jayson=require(_0x0397('0x4'));var Redis=require(_0x0397('0x5'));var authService=require(_0x0397('0x6'));var qs=require(_0x0397('0x7'));var logger=require('../../config/logger')(_0x0397('0x8'));var utils=require(_0x0397('0x9'));var config=require(_0x0397('0xa'));var licenseUtil=require(_0x0397('0xb'));var db=require(_0x0397('0xc'))['db'];var socket=require(_0x0397('0xd'))(new Redis(config['redis']));require('./user.socket')[_0x0397('0xe')](socket);config[_0x0397('0xf')]=_[_0x0397('0x10')](config['redis'],{'host':_0x0397('0x11'),'port':0x18eb});var client=jayson[_0x0397('0x12')][_0x0397('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x546324,_0x38fb53,_0x187321,_0xd10906){return new BPromise(function(_0x53abb0,_0x1f5abc){var _0x39bd87=_0xd10906||client;return _0x39bd87[_0x0397('0x14')](_0x546324,_0x187321)['then'](function(_0x5033ad){logger[_0x0397('0x15')]('User,\x20%s,\x20%s',_0x38fb53,_0x0397('0x16'));logger['debug'](_0x0397('0x17'),_0x38fb53,_0x0397('0x16'),JSON['stringify'](_0x5033ad));if(_0x5033ad[_0x0397('0x18')]){if(_0x5033ad[_0x0397('0x18')][_0x0397('0x19')]===0x1f4){logger[_0x0397('0x18')]('User,\x20%s,\x20%s',_0x38fb53,_0x5033ad['error'][_0x0397('0x1a')]);return _0x1f5abc(_0x5033ad[_0x0397('0x18')][_0x0397('0x1a')]);}logger['error'](_0x0397('0x1b'),_0x38fb53,_0x5033ad[_0x0397('0x18')][_0x0397('0x1a')]);return _0x53abb0(_0x5033ad['error']['message']);}else{logger['info']('User,\x20%s,\x20%s',_0x38fb53,_0x0397('0x16'));_0x53abb0(_0x5033ad[_0x0397('0x1c')][_0x0397('0x1a')]);}})[_0x0397('0x1d')](function(_0x11e9c8){logger[_0x0397('0x18')](_0x0397('0x1b'),_0x38fb53,_0x11e9c8);_0x1f5abc(_0x11e9c8);});});}function respondWithStatusCode(_0x65d8d9,_0x436cfd){_0x436cfd=_0x436cfd||0xcc;return function(_0xb4a13e){if(_0xb4a13e){return _0x65d8d9['sendStatus'](_0x436cfd);}return _0x65d8d9[_0x0397('0x1e')](_0x436cfd)[_0x0397('0x1f')]();};}function respondWithResult(_0x2c6308,_0x3d43f0){_0x3d43f0=_0x3d43f0||0xc8;return function(_0x4c32cf){if(_0x4c32cf){return _0x2c6308['status'](_0x3d43f0)[_0x0397('0x20')](_0x4c32cf);}};}function respondWithFilteredResult(_0x305759,_0x38a949){return function(_0x4a03b6){if(_0x4a03b6){var _0x25d255=typeof _0x38a949[_0x0397('0x21')]===_0x0397('0x22')&&typeof _0x38a949['limit']===_0x0397('0x22');var _0x1101fc=_0x4a03b6['count'];var _0x865357=_0x25d255?0x0:_0x38a949[_0x0397('0x21')];var _0x54e21=_0x25d255?_0x4a03b6[_0x0397('0x23')]:_0x38a949['offset']+_0x38a949[_0x0397('0x24')];var _0x163fe4;if(_0x54e21>=_0x1101fc){_0x54e21=_0x1101fc;_0x163fe4=0xc8;}else{_0x163fe4=0xce;}_0x305759['status'](_0x163fe4);return _0x305759['set'](_0x0397('0x25'),_0x865357+'-'+_0x54e21+'/'+_0x1101fc)[_0x0397('0x20')](_0x4a03b6);}return null;};}function saveUpdates(_0x4d13ab){return function(_0x2e91cf){if(_0x2e91cf){return _0x2e91cf[_0x0397('0x26')](_0x4d13ab)[_0x0397('0x27')](function(_0x217752){return _0x217752;});}return null;};}function removeEntity(_0x44d521){return function(_0x467990){if(_0x467990){return _0x467990[_0x0397('0x28')]()[_0x0397('0x27')](function(){var _0x3b881f=_0x467990[_0x0397('0x29')]({'plain':!![]});if(_0x3b881f[_0x0397('0x2a')]==='admin')return;var _0x46ef19=[{'name':_0x0397('0x2b'),'value':_0x0397('0x2c'),'ignore':!![]},{'name':_0x0397('0x2d'),'value':_0x0397('0x2e'),'ignore':![]},{'name':_0x0397('0x2f'),'value':_0x0397('0x30'),'ignore':![]}];var _0x2be48c=_(_0x46ef19)['filter']('ignore')['map'](_0x0397('0x31'))[_0x0397('0x31')]();if(_[_0x0397('0x32')](_0x2be48c,_0x3b881f['role'])){return;}var _0x4737f0=_[_0x0397('0x33')](_0x46ef19,[_0x0397('0x31'),_0x3b881f[_0x0397('0x2a')]])['name'];return db[_0x0397('0x34')]['destroy']({'where':{'type':_0x4737f0,'resourceId':_0x3b881f['id']}})[_0x0397('0x27')](function(){return _0x467990;});})[_0x0397('0x27')](function(){_0x44d521[_0x0397('0x1e')](0xcc)[_0x0397('0x1f')]();});}};}function handleEntityNotFound(_0x55d5fd){return function(_0xe232c3){if(!_0xe232c3){_0x55d5fd[_0x0397('0x35')](0x194);}return _0xe232c3;};}function handleError(_0x4f12f9,_0x1cd4e4){_0x1cd4e4=_0x1cd4e4||0x1f4;return function(_0xdb452b){logger[_0x0397('0x18')](_0xdb452b[_0x0397('0x36')]);if(_0xdb452b[_0x0397('0x37')]){delete _0xdb452b['name'];}_0x4f12f9['status'](_0x1cd4e4)[_0x0397('0x38')](_0xdb452b);};}exports[_0x0397('0x39')]=function(_0x1fc753,_0x4906c0){var _0x266460={},_0x1bb0fe={'count':0x0,'rows':[]};var _0xa02c97=_(db['User'][_0x0397('0x3a')])[_0x0397('0x3b')](function(_0x38285e){return{'name':_0x38285e[_0x0397('0x3c')],'type':_0x38285e[_0x0397('0x3d')][_0x0397('0x3e')]};})[_0x0397('0x3f')](function(_0x27be3c){return!_[_0x0397('0x32')](['password',_0x0397('0x40')],_0x27be3c[_0x0397('0x37')]);})['value']();_0x266460=qs[_0x0397('0x41')](_0xa02c97,_0x1fc753);var _0x59e46d={'where':_0x266460[_0x0397('0x42')]};return db[_0x0397('0x43')][_0x0397('0x23')](_0x59e46d)[_0x0397('0x27')](function(_0x397a47){_0x1bb0fe['count']=_0x397a47;if(_0x1fc753[_0x0397('0x44')][_0x0397('0x45')]){_0x266460['include']=[{'all':!![]}];}if(!_[_0x0397('0x32')](_0x266460[_0x0397('0x46')],'id')){_0x266460[_0x0397('0x46')][_0x0397('0x47')]('id');}return db[_0x0397('0x43')]['findAll'](_0x266460);})[_0x0397('0x27')](function(_0x4c51fc){_0x1bb0fe[_0x0397('0x48')]=_0x4c51fc;if(_0x1fc753['query']['openTabs']===_0x0397('0x49')){var _0x5a1453=[];for(var _0x4eb320=0x0;_0x4eb320<_0x1bb0fe[_0x0397('0x48')][_0x0397('0x4a')];_0x4eb320++){_0x5a1453['push'](get_open_tabs(_0x0397('0x4b'),_0x1bb0fe['rows'][_0x4eb320]['dataValues']));_0x5a1453[_0x0397('0x47')](get_open_tabs(_0x0397('0x4c'),_0x1bb0fe['rows'][_0x4eb320][_0x0397('0x4d')]));_0x5a1453[_0x0397('0x47')](get_open_tabs(_0x0397('0x4e'),_0x1bb0fe['rows'][_0x4eb320]['dataValues']));_0x5a1453[_0x0397('0x47')](get_open_tabs(_0x0397('0x4f'),_0x1bb0fe[_0x0397('0x48')][_0x4eb320]['dataValues']));_0x5a1453[_0x0397('0x47')](get_open_tabs('openchannel',_0x1bb0fe['rows'][_0x4eb320][_0x0397('0x4d')]));_0x5a1453['push'](get_open_tabs(_0x0397('0x50'),_0x1bb0fe[_0x0397('0x48')][_0x4eb320]['dataValues']));}return BPromise['all'](_0x5a1453)[_0x0397('0x27')](function(_0x5ea2fc){return _0x1bb0fe;});}else{return _0x1bb0fe;}})['then'](respondWithFilteredResult(_0x4906c0,_0x266460))[_0x0397('0x1d')](handleError(_0x4906c0,null));};exports[_0x0397('0x51')]=function(_0x317d09,_0x19944a){var _0x47cbbf={'raw':![],'where':{'id':_0x317d09[_0x0397('0x52')]['id']}},_0x4b8b60={};_0x4b8b60[_0x0397('0x53')]=_[_0x0397('0x54')](_[_0x0397('0x55')](db[_0x0397('0x43')][_0x0397('0x3a')]),[_0x0397('0x56'),_0x0397('0x40')]);_0x4b8b60['query']=_[_0x0397('0x55')](_0x317d09[_0x0397('0x44')]);_0x4b8b60['filters']=_[_0x0397('0x57')](_0x4b8b60[_0x0397('0x53')],_0x4b8b60[_0x0397('0x44')]);_0x47cbbf[_0x0397('0x46')]=_[_0x0397('0x57')](_0x4b8b60[_0x0397('0x53')],qs[_0x0397('0x58')](_0x317d09[_0x0397('0x44')][_0x0397('0x58')]));_0x47cbbf['attributes']=_0x47cbbf[_0x0397('0x46')][_0x0397('0x4a')]?_0x47cbbf['attributes']:_0x4b8b60[_0x0397('0x53')];if(_0x317d09[_0x0397('0x44')][_0x0397('0x45')]){_0x47cbbf[_0x0397('0x59')]=[{'all':!![]}];}_0x47cbbf=_[_0x0397('0x5a')]({},_0x47cbbf,_0x317d09[_0x0397('0x5b')]);if(!_[_0x0397('0x32')](_0x47cbbf['attributes'],'id')){_0x47cbbf[_0x0397('0x46')][_0x0397('0x47')]('id');}return db[_0x0397('0x43')][_0x0397('0x33')](_0x47cbbf)['then'](handleEntityNotFound(_0x19944a,null))[_0x0397('0x27')](function(_0x5588ac){var _0x274358=[];values=_0x5588ac;if(_0x317d09[_0x0397('0x44')][_0x0397('0x5c')]===_0x0397('0x49')){_0x274358[_0x0397('0x47')](get_open_tabs(_0x0397('0x4b'),_0x5588ac[_0x0397('0x4d')]));_0x274358['push'](get_open_tabs(_0x0397('0x4c'),_0x5588ac[_0x0397('0x4d')]));_0x274358[_0x0397('0x47')](get_open_tabs(_0x0397('0x5d'),_0x5588ac[_0x0397('0x4d')]));_0x274358['push'](get_open_tabs(_0x0397('0x50'),_0x5588ac[_0x0397('0x4d')]));_0x274358['push'](get_open_tabs(_0x0397('0x4e'),_0x5588ac['dataValues']));_0x274358[_0x0397('0x47')](get_open_tabs(_0x0397('0x4f'),_0x5588ac[_0x0397('0x4d')]));return BPromise[_0x0397('0x5e')](_0x274358);}else{return values;}})[_0x0397('0x27')](function(_0x24cdfc){return values;})[_0x0397('0x27')](respondWithResult(_0x19944a,null))[_0x0397('0x1d')](handleError(_0x19944a,null));};exports[_0x0397('0x26')]=function(_0x11075f,_0x6ccadf){if(_0x11075f[_0x0397('0x5f')]['id']){delete _0x11075f[_0x0397('0x5f')]['id'];}delete _0x11075f[_0x0397('0x5f')][_0x0397('0x2a')];return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x11075f[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x6ccadf,null))[_0x0397('0x27')](saveUpdates(_0x11075f[_0x0397('0x5f')],null))['then'](respondWithResult(_0x6ccadf,null))[_0x0397('0x1d')](handleError(_0x6ccadf,null));};exports[_0x0397('0x60')]=function(_0x4299ea,_0x4222ff){return db[_0x0397('0x43')]['describe']()['then'](respondWithResult(_0x4222ff,null))['catch'](handleError(_0x4222ff,null));};exports['addContacts']=function(_0x4dafd1,_0x19083f){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x4dafd1[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x19083f,null))[_0x0397('0x27')](function(_0x4500ff){if(_0x4500ff){return _0x4500ff['addContacts'](_0x4dafd1[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x4dafd1[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{});}})['then'](respondWithResult(_0x19083f,null))['catch'](handleError(_0x19083f,null));};function validateUser(_0x34dba1){return new BPromise(function(_0x3e76b9,_0x3e3a01){if(_0x34dba1[_0x0397('0x63')])return _0x3e76b9(_0x34dba1);return db['Setting'][_0x0397('0x64')](0x1)[_0x0397('0x27')](function(_0x56a7ff){if(_0x56a7ff[_0x0397('0x65')])authService['validatePasswordPattern'](_0x34dba1[_0x0397('0x56')]);db['User'][_0x0397('0x66')](_0x0397('0x63'))['then'](function(_0x3aa5ab){if(_['isNil'](_0x3aa5ab)){_0x34dba1[_0x0397('0x63')]=_0x56a7ff['min_internal']||0x1;return;}if(_[_0x0397('0x67')](_0x56a7ff[_0x0397('0x68')])||_0x56a7ff[_0x0397('0x68')]===_0x3aa5ab){_0x34dba1[_0x0397('0x63')]=_0x3aa5ab+0x1;return;}if(_0x56a7ff[_0x0397('0x68')]>_0x3aa5ab){_0x34dba1['internal']=_0x56a7ff[_0x0397('0x68')];return;}return db[_0x0397('0x69')][_0x0397('0x44')](_0x0397('0x6a'),{'type':db['sequelize']['QueryTypes'][_0x0397('0x6b')]})['then'](function(_0x1656af){if(_0x1656af&&_0x1656af[_0x0397('0x4a')]){for(var _0x3a3b19=0x0,_0x2e14c9=_0x1656af[_0x0397('0x4a')];_0x3a3b19<_0x2e14c9&&_['isNil'](_0x34dba1[_0x0397('0x63')]);_0x3a3b19++){if(_0x56a7ff[_0x0397('0x68')]<=_0x1656af[_0x3a3b19][_0x0397('0x6c')]){_0x34dba1['internal']=_0x1656af[_0x3a3b19][_0x0397('0x6c')];}else if(_0x56a7ff[_0x0397('0x68')]>_0x1656af[_0x3a3b19][_0x0397('0x6c')]&&_0x56a7ff['min_internal']<=_0x1656af[_0x3a3b19]['to']){_0x34dba1[_0x0397('0x63')]=_0x56a7ff[_0x0397('0x68')];}}}if(_[_0x0397('0x67')](_0x34dba1[_0x0397('0x63')])){_0x34dba1[_0x0397('0x63')]=_0x3aa5ab+0x1;}return _0x3e76b9(_0x34dba1);});});})[_0x0397('0x1d')](function(_0x4dfc3f){_0x3e3a01(_0x4dfc3f);});});}function updateUser(_0x232550){return new BPromise(function(_0x2b874d,_0x12c1f6){try{if(_0x232550[_0x0397('0x6d')]){_0x232550[_0x0397('0x6e')]=_0x232550[_0x0397('0x63')];_0x232550['VoiceMail']={'mailbox':_0x232550['internal'],'password':_0x232550['password'],'fullname':_0x232550[_0x0397('0x6f')],'email':_0x232550[_0x0397('0x70')]};}if(_0x232550['role']===_0x0397('0x2e')){if(!_0x232550[_0x0397('0x71')])_0x232550[_0x0397('0x71')]=[_0x0397('0x72'),_0x0397('0x73'),_0x0397('0x74'),_0x0397('0x75'),_0x0397('0x76'),_0x0397('0x77'),_0x0397('0x78'),'106',_0x0397('0x79'),_0x0397('0x7a'),_0x0397('0x7b'),_0x0397('0x7c'),'111',_0x0397('0x7d'),_0x0397('0x7e')];}_0x2b874d(_0x232550);}catch(_0x5ab922){_0x12c1f6(_0x5ab922);}});}exports['create']=function(_0x538d7a,_0x1b681f){if(_0x538d7a[_0x0397('0x2c')][_0x0397('0x2a')]===_0x0397('0x2e'))throw new Error(_0x0397('0x7f'));if(_0x538d7a[_0x0397('0x5f')][_0x0397('0x2a')]==='user'&&_0x538d7a[_0x0397('0x2c')][_0x0397('0x2a')]!==_0x0397('0x80')){throw new Error(_0x0397('0x81'));}if(_0x538d7a[_0x0397('0x5f')]['role']===_0x0397('0x80')&&_0x538d7a[_0x0397('0x2c')][_0x0397('0x2a')]!==_0x0397('0x80')){throw new Error(_0x0397('0x82'));}return licenseUtil[_0x0397('0x83')]([_0x538d7a[_0x0397('0x5f')]])[_0x0397('0x27')](function(){return validateUser(_0x538d7a[_0x0397('0x5f')]);})[_0x0397('0x27')](function(_0x311621){return updateUser(_0x311621)[_0x0397('0x27')](function(_0x53aab4){if(_0x53aab4['role']===_0x0397('0x80')){_0x53aab4[_0x0397('0x84')]=_0x538d7a[_0x0397('0x2c')][_0x0397('0x84')];delete _0x53aab4[_0x0397('0x85')];}return _0x53aab4;});})[_0x0397('0x27')](function(_0xee33ef){return db[_0x0397('0x43')][_0x0397('0x86')](_0xee33ef,{'include':[{'model':db[_0x0397('0x87')],'as':_0x0397('0x87')}]});})[_0x0397('0x27')](function(_0x9e39ed){if(_0x538d7a[_0x0397('0x5f')][_0x0397('0x2a')]===_0x0397('0x2c'))return _0x9e39ed;if(_0x538d7a['user'][_0x0397('0x2a')]!=='user')return _0x9e39ed;return db['UserProfileSection'][_0x0397('0x33')]({'where':{'name':_0x9e39ed[_0x0397('0x2a')]===_0x0397('0x2e')?_0x0397('0x2d'):_0x0397('0x2f'),'userProfileId':_0x538d7a['user']['userProfileId']},'raw':!![]})['then'](function(_0x55b199){if(!_0x55b199||_0x55b199[_0x0397('0x88')]!=0x0)return _0x9e39ed;return db[_0x0397('0x34')][_0x0397('0x86')]({'name':_0x9e39ed[_0x0397('0x37')],'resourceId':_0x9e39ed['id'],'type':_0x55b199[_0x0397('0x37')],'sectionId':_0x55b199['id']},{})[_0x0397('0x27')](function(){return _0x9e39ed;});})[_0x0397('0x1d')](function(_0x5e5a34){logger[_0x0397('0x18')](_0x0397('0x89'),_0x5e5a34);throw _0x5e5a34;});})[_0x0397('0x27')](respondWithResult(_0x1b681f,0xc9))[_0x0397('0x1d')](handleError(_0x1b681f,null));};exports[_0x0397('0x8a')]=function(_0xfe6398,_0x46cc5b){var _0x41827d=_0xfe6398[_0x0397('0x5f')];var _0x522216=[];if(_0xfe6398[_0x0397('0x2c')][_0x0397('0x2a')]===_0x0397('0x2e'))throw new Error(_0x0397('0x7f'));if(_[_0x0397('0x8b')](_0x41827d,[_0x0397('0x2a'),'user'])&&_0xfe6398[_0x0397('0x2c')][_0x0397('0x2a')]!==_0x0397('0x80')){throw new Error(_0x0397('0x81'));}if(_[_0x0397('0x8b')](_0x41827d,['role','admin'])&&_0xfe6398[_0x0397('0x2c')][_0x0397('0x2a')]!==_0x0397('0x80')){throw new Error(_0x0397('0x8c'));}return licenseUtil[_0x0397('0x83')](_0x41827d)[_0x0397('0x27')](function(){return validateUser(_0x41827d[0x0]);})[_0x0397('0x27')](function(){for(var _0x3e5d58=0x1;_0x3e5d58<_0x41827d[_0x0397('0x4a')];_0x3e5d58++){var _0x58ca20=_0x41827d[_0x3e5d58-0x1][_0x0397('0x63')];if(!_0x41827d[_0x3e5d58][_0x0397('0x63')])_0x41827d[_0x3e5d58]['internal']=_0x58ca20+0x1;_0x522216[_0x0397('0x47')](validateUser(_0x41827d[_0x3e5d58]));}return BPromise['all'](_0x522216);})['then'](function(){_0x522216=[];for(var _0x31133b=0x0;_0x31133b<_0x41827d[_0x0397('0x4a')];_0x31133b++){_0x522216[_0x0397('0x47')](updateUser(_0x41827d[_0x31133b]));}return BPromise[_0x0397('0x5e')](_0x522216);})[_0x0397('0x27')](function(){return BPromise[_0x0397('0x8d')](_0x41827d,function(_0x14374c){return db[_0x0397('0x43')][_0x0397('0x86')](_0x14374c,{'include':[{'model':db[_0x0397('0x87')],'as':_0x0397('0x87')}]})['then'](function(_0x3cc0d8){_0x14374c['id']=_0x3cc0d8['id'];return _0x14374c;});});})[_0x0397('0x27')](function(_0x5c6d05){if(_0xfe6398[_0x0397('0x5f')][_0x0397('0x2a')]==='user')return _0x5c6d05;if(_0xfe6398[_0x0397('0x2c')]['role']!==_0x0397('0x2c'))return _0x5c6d05;var _0x345c02=_[_0x0397('0x8b')](_0x5c6d05,function(_0x591ce7){return _0x591ce7['role']===_0x0397('0x2e')||_0x591ce7[_0x0397('0x2a')]===_0x0397('0x30');});if(!_0x345c02)return _0x5c6d05;return db[_0x0397('0x8e')][_0x0397('0x8f')]({'where':{'name':{'$or':[_0x0397('0x2d'),'Telephones']},'userProfileId':_0xfe6398[_0x0397('0x2c')][_0x0397('0x85')]},'raw':!![]})['then'](function(_0x37cc1d){if(_[_0x0397('0x90')](_0x37cc1d)||!_[_0x0397('0x8b')](_0x37cc1d,[_0x0397('0x88'),0x0]))return _0x5c6d05;_0x522216=[];var _0x120592=_(_0x37cc1d)[_0x0397('0x3b')](function(_0x1cfb22){if(_0x1cfb22['autoAssociation']===0x1)return;return _0x1cfb22[_0x0397('0x37')]==='Agents'?_0x0397('0x2e'):_0x0397('0x30');})[_0x0397('0x91')]()['value']();for(var _0x9398fc=0x0;_0x9398fc<_0x5c6d05[_0x0397('0x4a')];_0x9398fc++){if(!_[_0x0397('0x32')](_0x120592,_0x5c6d05[_0x9398fc][_0x0397('0x2a')]))return;var _0x54a015=_0x5c6d05[_0x9398fc][_0x0397('0x2a')]===_0x0397('0x2e')?_0x0397('0x2d'):'Telephones';_0x522216[_0x0397('0x47')](db[_0x0397('0x34')]['create']({'name':_0x5c6d05[_0x9398fc][_0x0397('0x37')],'resourceId':_0x5c6d05[_0x9398fc]['id'],'type':_0x54a015,'sectionId':_[_0x0397('0x33')](_0x37cc1d,[_0x0397('0x37'),_0x54a015])['id']},{}));}return BPromise['all'](_0x522216);});})['then'](respondWithResult(_0x46cc5b,0xc9))[_0x0397('0x1d')](handleError(_0x46cc5b,null));};exports[_0x0397('0x92')]=function(_0x58f820,_0xce6ca9){if(_0x58f820[_0x0397('0x5f')]['id']){delete _0x58f820[_0x0397('0x5f')]['id'];}return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x58f820['params']['id']}})['then'](function(_0x3beb65){if(!_0x3beb65)return null;if(_0x3beb65['id']===_0x58f820['user']['id']){if(!_0x58f820[_0x0397('0x5f')][_0x0397('0x93')]||!_0x58f820[_0x0397('0x5f')][_0x0397('0x94')]){throw new db[(_0x0397('0x95'))]['ValidationError'](_0x0397('0x96'));}if(!_0x3beb65[_0x0397('0x97')](_0x58f820['body'][_0x0397('0x93')])){throw new db[(_0x0397('0x95'))]['ValidationError'](_0x0397('0x98'));}if(_0x58f820['body']['oldPassword']===_0x58f820[_0x0397('0x5f')]['newPassword']){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0x9a'));}}else if(_0x58f820[_0x0397('0x2c')][_0x0397('0x2a')]==='admin'){if(!_0x58f820[_0x0397('0x5f')][_0x0397('0x94')]){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0x9b'));}}else if(_0x58f820[_0x0397('0x2c')][_0x0397('0x2a')]===_0x0397('0x2c')){if(!_0x58f820[_0x0397('0x5f')]['newPassword']){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0x9b'));}if(_0x3beb65['role']!==_0x0397('0x2e')){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0x7f'));}}else{throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0x7f'));}return _0x3beb65;})[_0x0397('0x27')](handleEntityNotFound(_0xce6ca9,null))[_0x0397('0x27')](function(_0x2be8a1){return db[_0x0397('0x9c')]['findOne']({'attributes':['id',_0x0397('0x65'),_0x0397('0x9d'),'passwordHistoryLimit']})['then'](function(_0x519dfd){if(_0x519dfd[_0x0397('0x65')])authService[_0x0397('0x9e')](_0x58f820['body'][_0x0397('0x94')]);if(!_0x519dfd[_0x0397('0x9d')]||!_0x2be8a1['previousPasswords'])return _0x2be8a1;authService[_0x0397('0x9f')](_0x58f820[_0x0397('0x5f')]['newPassword'],_0x2be8a1[_0x0397('0xa0')],_0x519dfd[_0x0397('0xa1')]);return _0x2be8a1;})[_0x0397('0x27')](saveUpdates({'password':_0x58f820[_0x0397('0x5f')][_0x0397('0x94')],'passwordResetAt':_0x58f820[_0x0397('0x2c')]['id']==_0x58f820[_0x0397('0x52')]['id']?moment():null,'previousPasswords':authService[_0x0397('0xa2')](_0x58f820[_0x0397('0x5f')]['newPassword'],_0x2be8a1['previousPasswords'])},null));})[_0x0397('0x27')](respondWithResult(_0xce6ca9,null))[_0x0397('0x1d')](handleError(_0xce6ca9,null));};exports[_0x0397('0xa3')]=function(_0x51ff25,_0x41f48f){var _0x2c407a=_0x51ff25[_0x0397('0x5f')][_0x0397('0xa4')];return db['User']['find']({'where':{'id':_0x51ff25[_0x0397('0x52')]['id']},'attributes':['id',_0x0397('0x37'),_0x0397('0x2a'),_0x0397('0xa5'),_0x0397('0xa6'),_0x0397('0xa7'),_0x0397('0xa8')]})[_0x0397('0x27')](handleEntityNotFound(_0x41f48f,null))[_0x0397('0x27')](function(_0x42842d){if(_0x42842d){if(!utils['isValidChannel'](_0x2c407a)){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))]('Unknown\x20channel');}return _0x42842d[_0x0397('0xa9')+_[_0x0397('0xaa')](_0x2c407a[_0x0397('0xab')]())+_0x0397('0xac')](_0x51ff25['body'][_0x0397('0x61')],{'penalty':_0x51ff25[_0x0397('0x5f')][_0x0397('0xad')]||0x0})[_0x0397('0xae')](function(_0x4e65c6){for(var _0x2bda02=0x0;_0x2bda02<_0x51ff25[_0x0397('0x5f')][_0x0397('0x61')][_0x0397('0x4a')];_0x2bda02+=0x1){var _0x3b9d66={'UserId':Number(_0x51ff25[_0x0397('0x52')]['id'])};_0x3b9d66[_[_0x0397('0xaa')](_0x2c407a[_0x0397('0xab')]())+_0x0397('0xaf')]=Number(_0x51ff25[_0x0397('0x5f')]['ids'][_0x2bda02]);socket[_0x0397('0xb0')]('user'+_[_0x0397('0xaa')](_0x2c407a[_0x0397('0xab')]())+_0x0397('0xb1'),_0x3b9d66);}return _0x4e65c6;})[_0x0397('0x27')](function(){if(_0x2c407a===_0x0397('0xb2')){return db[_0x0397('0xb3')][_0x0397('0x8f')]({'where':{'id':_0x51ff25['body']['ids']||[]},'raw':!![],'attributes':['id',_0x0397('0x37')]});}})[_0x0397('0x27')](function(_0x18e282){var _0x54684f=_0x42842d[_0x0397('0x29')]({'plain':!![]});var _0x5f0850=[];if(_0x2c407a===_0x0397('0xb2')&&_0x54684f[_0x0397('0x2a')]===_0x0397('0x2e')&&_0x54684f[_0x0397('0xa5')]){for(var _0x2b4ad6=0x0;_0x2b4ad6<_0x18e282[_0x0397('0x4a')];_0x2b4ad6+=0x1){_0x5f0850['push']({'membername':_0x54684f[_0x0397('0x37')],'UserId':_0x54684f['id'],'queue_name':_0x18e282[_0x2b4ad6]['name'],'VoiceQueueId':_0x18e282[_0x2b4ad6]['id'],'interface':_[_0x0397('0x67')](_0x54684f[_0x0397('0xa8')])?util[_0x0397('0xb4')](_0x0397('0xb5'),_0x54684f[_0x0397('0x37')]):_0x54684f[_0x0397('0xa8')],'paused':_0x54684f['voicePause']||![],'penalty':_0x51ff25[_0x0397('0x5f')][_0x0397('0xad')]||0x0});}return BPromise[_0x0397('0x8d')](_0x5f0850,function(_0x2bf580){return db[_0x0397('0xb6')][_0x0397('0xb7')](_0x2bf580);});}return _0x42842d;});}})[_0x0397('0x27')](respondWithStatusCode(_0x41f48f,null))[_0x0397('0x1d')](handleError(_0x41f48f,null));};exports[_0x0397('0xb8')]=function(_0x3f4a98,_0x3df00b){var _0xdcbdba;return db[_0x0397('0x43')]['find']({'where':{'id':_0x3f4a98['params']['id']},'attributes':['id',_0x0397('0x37'),_0x0397('0x2a')]})[_0x0397('0x27')](handleEntityNotFound(_0x3df00b,null))['then'](function(_0x5eecf5){if(_0x5eecf5){_0xdcbdba=_0x5eecf5;if(!_0x3f4a98[_0x0397('0x44')][_0x0397('0xa4')]||!utils[_0x0397('0xb9')](_0x3f4a98['query'][_0x0397('0xa4')])){throw new db[(_0x0397('0x95'))]['ValidationError'](_0x0397('0xba'));}return _0x5eecf5[_0x0397('0xbb')+_['capitalize'](_0x3f4a98[_0x0397('0x44')]['channel'][_0x0397('0xab')]())+'Queues'](_0x3f4a98[_0x0397('0x44')][_0x0397('0x61')]);}})['then'](function(_0x51d0e9){if(_['isArray'](_0x3f4a98['query'][_0x0397('0x61')])){for(var _0x14f9eb=0x0;_0x14f9eb<_0x3f4a98[_0x0397('0x44')][_0x0397('0x61')][_0x0397('0x4a')];_0x14f9eb+=0x1){var _0x38ecf2={'UserId':Number(_0x3f4a98[_0x0397('0x52')]['id'])};_0x38ecf2[_['capitalize'](_0x3f4a98[_0x0397('0x44')][_0x0397('0xa4')][_0x0397('0xab')]())+_0x0397('0xaf')]=Number(_0x3f4a98[_0x0397('0x44')][_0x0397('0x61')][_0x14f9eb]);socket['emit'](_0x0397('0x2c')+_['capitalize'](_0x3f4a98[_0x0397('0x44')][_0x0397('0xa4')][_0x0397('0xab')]())+_0x0397('0xbc'),_0x38ecf2);}}else{var _0x38ecf2={'UserId':Number(_0x3f4a98[_0x0397('0x52')]['id'])};_0x38ecf2[_[_0x0397('0xaa')](_0x3f4a98[_0x0397('0x44')][_0x0397('0xa4')][_0x0397('0xab')]())+_0x0397('0xaf')]=Number(_0x3f4a98[_0x0397('0x44')]['ids']);socket[_0x0397('0xb0')](_0x0397('0x2c')+_[_0x0397('0xaa')](_0x3f4a98['query'][_0x0397('0xa4')]['toLowerCase']())+_0x0397('0xbc'),_0x38ecf2);}return _0x51d0e9;})[_0x0397('0x27')](function(){if(_0x3f4a98[_0x0397('0x44')][_0x0397('0xa4')]===_0x0397('0xb2')){return db['UserVoiceQueueRt']['destroy']({'where':{'UserId':_0x3f4a98['params']['id'],'VoiceQueueId':_0x3f4a98[_0x0397('0x44')]['ids']},'individualHooks':!![]})['then'](function(){return _0xdcbdba;});}return _0xdcbdba;})[_0x0397('0x27')](respondWithStatusCode(_0x3df00b,null))[_0x0397('0x1d')](handleError(_0x3df00b,null));};exports[_0x0397('0xbd')]=function(_0x4076db,_0x3e7128){_0x4076db[_0x0397('0x5f')][_0x0397('0xbe')]=_0x4076db[_0x0397('0xbf')]['filename'];return db[_0x0397('0x43')]['find']({'where':{'id':_0x4076db['params']['id']}})['then'](handleEntityNotFound(_0x3e7128,null))['then'](saveUpdates(_0x4076db[_0x0397('0x5f')],null))[_0x0397('0x27')](respondWithResult(_0x3e7128,null))[_0x0397('0x1d')](handleError(_0x3e7128,null));};exports['getAvatar']=function(_0x5cc11d,_0x2ddd40){var _0x726a71=path[_0x0397('0xc0')](config[_0x0397('0xc1')],_0x0397('0xc2'));return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x5cc11d[_0x0397('0x52')]['id']},'attributes':['id',_0x0397('0xbe')],'raw':!![]})['then'](handleEntityNotFound(_0x2ddd40,null))[_0x0397('0x27')](function(_0x260a26){if(_0x260a26){if(_[_0x0397('0x67')](_0x260a26[_0x0397('0xbe')])){return _0x2ddd40[_0x0397('0xc3')](_0x726a71);}else{if(!fs['existsSync'](path[_0x0397('0xc0')](config[_0x0397('0xc1')],_0x0397('0xc4'),_0x260a26[_0x0397('0xbe')]))){return _0x2ddd40[_0x0397('0xc3')](_0x726a71);}return _0x2ddd40[_0x0397('0xc3')](path[_0x0397('0xc0')](config['root'],'server/files/images/',_0x260a26[_0x0397('0xbe')]));}}})['catch'](handleError(_0x2ddd40,null));};exports[_0x0397('0xc5')]=function(_0x2c843f,_0x25f5bf){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x2c843f[_0x0397('0x52')]['id']},'attributes':['id']})[_0x0397('0x27')](handleEntityNotFound(_0x25f5bf,null))[_0x0397('0x27')](function(_0x54eeda){var _0xf4b944=[];values=_0x54eeda[_0x0397('0x4d')];_0xf4b944[_0x0397('0x47')](get_open_tabs('chat',_0x54eeda[_0x0397('0x4d')]));_0xf4b944['push'](get_open_tabs('sms',_0x54eeda[_0x0397('0x4d')]));_0xf4b944[_0x0397('0x47')](get_open_tabs(_0x0397('0x5d'),_0x54eeda[_0x0397('0x4d')]));_0xf4b944[_0x0397('0x47')](get_open_tabs(_0x0397('0x50'),_0x54eeda[_0x0397('0x4d')]));_0xf4b944[_0x0397('0x47')](get_open_tabs(_0x0397('0x4e'),_0x54eeda[_0x0397('0x4d')]));_0xf4b944['push'](get_open_tabs(_0x0397('0x4f'),_0x54eeda['dataValues']));return BPromise[_0x0397('0x5e')](_0xf4b944);})['then'](function(_0x2be961){var _0x1f1b3e=[];if(_0x2be961){for(var _0x5052ae=0x0;_0x5052ae<values['ChatOpenTabs'][_0x0397('0x4a')];_0x5052ae++){var _0x3bb140=values[_0x0397('0xc6')][_0x5052ae];_0x1f1b3e[_0x0397('0x47')]({'channel':'CHAT','id':_0x3bb140['id'],'createdAt':_0x3bb140[_0x0397('0xc7')]});}for(var _0x5052ae=0x0;_0x5052ae<values[_0x0397('0xc8')][_0x0397('0x4a')];_0x5052ae++){var _0x3bb140=values[_0x0397('0xc8')][_0x5052ae];_0x1f1b3e['push']({'channel':_0x0397('0xc9'),'id':_0x3bb140['id'],'createdAt':_0x3bb140['createdAt']});}for(var _0x5052ae=0x0;_0x5052ae<values[_0x0397('0xca')][_0x0397('0x4a')];_0x5052ae++){var _0x3bb140=values[_0x0397('0xca')][_0x5052ae];_0x1f1b3e['push']({'channel':_0x0397('0xcb'),'id':_0x3bb140['id'],'createdAt':_0x3bb140[_0x0397('0xc7')]});}for(var _0x5052ae=0x0;_0x5052ae<values['MailOpenTabs'][_0x0397('0x4a')];_0x5052ae++){var _0x3bb140=values[_0x0397('0xcc')][_0x5052ae];_0x1f1b3e[_0x0397('0x47')]({'channel':_0x0397('0xcd'),'id':_0x3bb140['id'],'createdAt':_0x3bb140[_0x0397('0xc7')]});}for(var _0x5052ae=0x0;_0x5052ae<values['SmsOpenTabs'][_0x0397('0x4a')];_0x5052ae++){var _0x3bb140=values[_0x0397('0xce')][_0x5052ae];_0x1f1b3e['push']({'channel':'SMS','id':_0x3bb140['id'],'createdAt':_0x3bb140['createdAt']});}for(var _0x5052ae=0x0;_0x5052ae<values['WhatsappOpenTabs']['length'];_0x5052ae++){var _0x3bb140=values[_0x0397('0xcf')][_0x5052ae];_0x1f1b3e[_0x0397('0x47')]({'channel':_0x0397('0xd0'),'id':_0x3bb140['id'],'createdAt':_0x3bb140[_0x0397('0xc7')]});}var _0x50e93c={'count':_0x1f1b3e[_0x0397('0x4a')],'rows':_0x1f1b3e};return _0x50e93c;}else return null;})[_0x0397('0x27')](respondWithResult(_0x25f5bf,null))['catch'](handleError(_0x25f5bf,null));};exports[_0x0397('0xd1')]=function(_0x4bd6ff,_0x4dcabf){var _0x1156c6={};var _0x384027={};var _0x334cab;var _0x494ba1;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x4bd6ff['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x4dcabf,null))['then'](function(_0x168cc4){if(_0x168cc4){_0x334cab=_0x168cc4;_0x384027[_0x0397('0x53')]=_[_0x0397('0x55')](db['CmContact']['rawAttributes']);_0x384027[_0x0397('0x44')]=_[_0x0397('0x55')](_0x4bd6ff[_0x0397('0x44')]);_0x384027[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x384027[_0x0397('0x53')],_0x384027[_0x0397('0x44')]);_0x1156c6[_0x0397('0x46')]=_[_0x0397('0x57')](_0x384027['model'],qs['fields'](_0x4bd6ff[_0x0397('0x44')][_0x0397('0x58')]));_0x1156c6['attributes']=_0x1156c6['attributes'][_0x0397('0x4a')]?_0x1156c6[_0x0397('0x46')]:_0x384027[_0x0397('0x53')];_0x1156c6[_0x0397('0xd4')]=qs['sort'](_0x4bd6ff[_0x0397('0x44')][_0x0397('0xd5')]);_0x1156c6[_0x0397('0x42')]=qs['filters'](_['pick'](_0x4bd6ff['query'],_0x384027['filters']));if(_0x4bd6ff[_0x0397('0x44')]['filter']){_0x1156c6[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x1156c6[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x1156c6[_0x0397('0x46')],function(_0x38004f){var _0x3c42a0={};_0x3c42a0[_0x38004f]={'$like':'%'+_0x4bd6ff[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x3c42a0;})});}_0x1156c6=_[_0x0397('0x5a')]({},_0x1156c6,_0x4bd6ff[_0x0397('0x5b')]);return _0x334cab[_0x0397('0xd1')](_0x1156c6);}})[_0x0397('0x27')](function(_0x1ce4ae){if(_0x1ce4ae){_0x494ba1=_0x1ce4ae[_0x0397('0x4a')];if(_0x4bd6ff['query'][_0x0397('0xd6')](_0x0397('0x45'))){_0x1156c6[_0x0397('0x59')]=[{'model':db['CmList'],'as':'List','required':![]},{'model':db['Tag'],'as':_0x0397('0xd7'),'attributes':['id',_0x0397('0x37'),'color'],'where':_0x4bd6ff[_0x0397('0x44')][_0x0397('0xd8')]?{'id':_0x4bd6ff['query'][_0x0397('0xd8')]}:undefined,'required':_0x4bd6ff[_0x0397('0x44')][_0x0397('0xd8')]?!![]:![]}];}if(!_0x4bd6ff[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x1156c6[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x4bd6ff[_0x0397('0x44')][_0x0397('0x24')]);_0x1156c6[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x4bd6ff[_0x0397('0x44')][_0x0397('0x21')]);}return _0x334cab['getContacts'](_0x1156c6);}})['then'](function(_0x59c38c){if(_0x59c38c){return _0x59c38c?{'count':_0x494ba1,'rows':_0x59c38c}:null;}})[_0x0397('0x27')](respondWithResult(_0x4dcabf,null))[_0x0397('0x1d')](handleError(_0x4dcabf,null));};exports[_0x0397('0xda')]=function(_0x1750e6,_0x5ba8c8){var _0x3a630c;var _0x31d60a;var _0x2fd952={};var _0x4e2402;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x1750e6[_0x0397('0x52')]['id']},'attributes':['id',_0x0397('0x37'),_0x0397('0x2a')]})['then'](handleEntityNotFound(_0x5ba8c8,null))[_0x0397('0x27')](function(_0x4b7553){if(!utils[_0x0397('0xb9')](_0x1750e6[_0x0397('0x44')][_0x0397('0xa4')])){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0xba'));}_0x3a630c=_0x4b7553;var _0x1aa999={};_0x1aa999['model']=_[_0x0397('0x55')](db[_[_0x0397('0xaa')](_0x1750e6[_0x0397('0x44')]['channel'])+'Queue'][_0x0397('0x3a')]);_0x1aa999[_0x0397('0x44')]=_[_0x0397('0x55')](_0x1750e6[_0x0397('0x44')]);_0x1aa999[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x1aa999[_0x0397('0x53')],_0x1aa999[_0x0397('0x44')]);_0x2fd952[_0x0397('0x46')]=_['intersection'](_0x1aa999['model'],qs['fields'](_0x1750e6[_0x0397('0x44')][_0x0397('0x58')]));_0x2fd952[_0x0397('0x46')]=_0x2fd952[_0x0397('0x46')]['length']?_0x2fd952[_0x0397('0x46')]:_0x1aa999[_0x0397('0x53')];_0x2fd952[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x1750e6['query'][_0x0397('0xd5')]);_0x2fd952[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x1750e6[_0x0397('0x44')],_0x1aa999[_0x0397('0xd3')]));if(_0x1750e6[_0x0397('0x44')][_0x0397('0x3f')]){_0x2fd952[_0x0397('0x42')]=_['merge'](_0x2fd952[_0x0397('0x42')],{'$or':_['map'](_0x2fd952['attributes'],function(_0x3858e5){var _0x5997fd={};_0x5997fd[_0x3858e5]={'$like':'%'+_0x1750e6[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x5997fd;})});}_0x2fd952=_['merge']({},_0x2fd952,_0x1750e6[_0x0397('0x5b')]);switch(_0x3a630c[_0x0397('0x2a')]){case _0x0397('0x80'):return db[_[_0x0397('0xaa')](_0x1750e6[_0x0397('0x44')][_0x0397('0xa4')])+'Queue'][_0x0397('0x8f')](_0x2fd952);case _0x0397('0x2c'):case'agent':return _0x3a630c['get'+_['capitalize'](_0x1750e6[_0x0397('0x44')]['channel'])+_0x0397('0xac')](_0x2fd952);default:throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))]('Unknown\x20role');}})[_0x0397('0x27')](function(_0x498b8){_0x4e2402=_0x498b8['length'];if(!_0x1750e6[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x2fd952[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x1750e6[_0x0397('0x44')][_0x0397('0x24')]);_0x2fd952['offset']=qs[_0x0397('0x21')](_0x1750e6[_0x0397('0x44')][_0x0397('0x21')]);}switch(_0x3a630c[_0x0397('0x2a')]){case _0x0397('0x80'):return db[_['capitalize'](_0x1750e6['query'][_0x0397('0xa4')])+_0x0397('0xdc')][_0x0397('0x8f')](_0x2fd952);case _0x0397('0x2c'):case _0x0397('0x2e'):return _0x3a630c[_0x0397('0x29')+_[_0x0397('0xaa')](_0x1750e6['query'][_0x0397('0xa4')])+_0x0397('0xac')](_0x2fd952);}})['then'](function(_0x42e9da){return{'count':_0x4e2402,'rows':_0x42e9da};})[_0x0397('0x27')](respondWithResult(_0x5ba8c8,null))['catch'](handleError(_0x5ba8c8,null));};exports['getVoiceQueuesRt']=function(_0x3b6f98,_0x29b0fe){var _0x1b6b36={};var _0x2b50f2={};var _0x3e6628;var _0x42fea3;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x3b6f98['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x29b0fe,null))[_0x0397('0x27')](function(_0x5b5f2e){if(_0x5b5f2e){_0x3e6628=_0x5b5f2e;_0x2b50f2[_0x0397('0x53')]=_[_0x0397('0x55')](db['UserVoiceQueueRt'][_0x0397('0x3a')]);_0x2b50f2[_0x0397('0x44')]=_[_0x0397('0x55')](_0x3b6f98[_0x0397('0x44')]);_0x2b50f2[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x2b50f2[_0x0397('0x53')],_0x2b50f2['query']);_0x1b6b36[_0x0397('0x46')]=_['intersection'](_0x2b50f2[_0x0397('0x53')],qs[_0x0397('0x58')](_0x3b6f98[_0x0397('0x44')][_0x0397('0x58')]));_0x1b6b36[_0x0397('0x46')]=_0x1b6b36[_0x0397('0x46')][_0x0397('0x4a')]?_0x1b6b36[_0x0397('0x46')]:_0x2b50f2['model'];_0x1b6b36['order']=qs[_0x0397('0xd5')](_0x3b6f98[_0x0397('0x44')][_0x0397('0xd5')]);_0x1b6b36[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x3b6f98[_0x0397('0x44')],_0x2b50f2[_0x0397('0xd3')]));if(_0x3b6f98['query'][_0x0397('0x3f')]){_0x1b6b36[_0x0397('0x42')]=_['merge'](_0x1b6b36[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x1b6b36['attributes'],function(_0x322ff8){var _0x2beeec={};_0x2beeec[_0x322ff8]={'$like':'%'+_0x3b6f98[_0x0397('0x44')]['filter']+'%'};return _0x2beeec;})});}_0x1b6b36=_[_0x0397('0x5a')]({},_0x1b6b36,_0x3b6f98[_0x0397('0x5b')]);return _0x3e6628[_0x0397('0xdd')](_0x1b6b36);}})['then'](function(_0x4bcf53){if(_0x4bcf53){_0x42fea3=_0x4bcf53[_0x0397('0x4a')];if(!_0x3b6f98[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x1b6b36[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x3b6f98[_0x0397('0x44')]['limit']);_0x1b6b36[_0x0397('0x21')]=qs['offset'](_0x3b6f98[_0x0397('0x44')][_0x0397('0x21')]);}return _0x3e6628[_0x0397('0xdd')](_0x1b6b36);}})[_0x0397('0x27')](function(_0x26d132){if(_0x26d132){return _0x26d132?{'count':_0x42fea3,'rows':_0x26d132}:null;}})['then'](respondWithResult(_0x29b0fe,null))[_0x0397('0x1d')](handleError(_0x29b0fe,null));};exports[_0x0397('0xde')]=function(_0x21fa49,_0x590313){var _0xf8121b={};var _0x12789f={};var _0x5df539;var _0x85c19;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x21fa49[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x590313,null))[_0x0397('0x27')](function(_0x2ded64){if(_0x2ded64){_0x5df539=_0x2ded64;_0x12789f[_0x0397('0x53')]=_['keys'](db[_0x0397('0xdf')][_0x0397('0x3a')]);_0x12789f[_0x0397('0x44')]=_['keys'](_0x21fa49['query']);_0x12789f[_0x0397('0xd3')]=_['intersection'](_0x12789f[_0x0397('0x53')],_0x12789f[_0x0397('0x44')]);_0xf8121b[_0x0397('0x46')]=_[_0x0397('0x57')](_0x12789f[_0x0397('0x53')],qs[_0x0397('0x58')](_0x21fa49[_0x0397('0x44')][_0x0397('0x58')]));_0xf8121b[_0x0397('0x46')]=_0xf8121b[_0x0397('0x46')][_0x0397('0x4a')]?_0xf8121b[_0x0397('0x46')]:_0x12789f[_0x0397('0x53')];_0xf8121b[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x21fa49[_0x0397('0x44')][_0x0397('0xd5')]);_0xf8121b[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x21fa49[_0x0397('0x44')],_0x12789f[_0x0397('0xd3')]));if(_0x21fa49[_0x0397('0x44')][_0x0397('0x3f')]){_0xf8121b[_0x0397('0x42')]=_[_0x0397('0x5a')](_0xf8121b[_0x0397('0x42')],{'$or':_['map'](_0xf8121b[_0x0397('0x46')],function(_0x223887){var _0x262c5a={};_0x262c5a[_0x223887]={'$like':'%'+_0x21fa49[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x262c5a;})});}_0xf8121b=_[_0x0397('0x5a')]({},_0xf8121b,_0x21fa49[_0x0397('0x5b')]);return _0x5df539['getGroups'](_0xf8121b);}})[_0x0397('0x27')](function(_0x3250fb){if(_0x3250fb){_0x85c19=_0x3250fb[_0x0397('0x4a')];if(!_0x21fa49['query'][_0x0397('0xd6')](_0x0397('0xd9'))){_0xf8121b['limit']=qs[_0x0397('0x24')](_0x21fa49[_0x0397('0x44')]['limit']);_0xf8121b[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x21fa49[_0x0397('0x44')][_0x0397('0x21')]);}return _0x5df539[_0x0397('0xde')](_0xf8121b);}})['then'](function(_0x52d174){if(_0x52d174){return _0x52d174?{'count':_0x85c19,'rows':_0x52d174}:null;}})[_0x0397('0x27')](respondWithResult(_0x590313,null))[_0x0397('0x1d')](handleError(_0x590313,null));};exports['getRecordings']=function(_0x31dd47,_0x51022d){var _0x138615={'raw':!![],'where':{}};var _0x22e940={};var _0x54688c={'count':0x0,'rows':[]};return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x31dd47[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x51022d,null))[_0x0397('0x27')](function(_0x2ca1ad){if(_0x2ca1ad){_0x22e940[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0xe0')][_0x0397('0x3a')]);_0x22e940[_0x0397('0x44')]=_[_0x0397('0x55')](_0x31dd47[_0x0397('0x44')]);_0x22e940[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x22e940[_0x0397('0x53')],_0x22e940[_0x0397('0x44')]);_0x138615[_0x0397('0x46')]=_[_0x0397('0x57')](_0x22e940[_0x0397('0x53')],qs[_0x0397('0x58')](_0x31dd47['query'][_0x0397('0x58')]));_0x138615[_0x0397('0x46')]=_0x138615[_0x0397('0x46')]['length']?_0x138615[_0x0397('0x46')]:_0x22e940[_0x0397('0x53')];if(!_0x31dd47[_0x0397('0x44')]['hasOwnProperty'](_0x0397('0xd9'))){_0x138615[_0x0397('0x24')]=qs['limit'](_0x31dd47[_0x0397('0x44')][_0x0397('0x24')]);_0x138615[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x31dd47[_0x0397('0x44')][_0x0397('0x21')]);}_0x138615['order']=qs[_0x0397('0xd5')](_0x31dd47[_0x0397('0x44')][_0x0397('0xd5')]);_0x138615['where']=qs['filters'](_[_0x0397('0xdb')](_0x31dd47[_0x0397('0x44')],_0x22e940[_0x0397('0xd3')]));_0x138615[_0x0397('0x42')][_0x0397('0xe1')]=_0x2ca1ad['id'];if(_0x31dd47[_0x0397('0x44')][_0x0397('0x3f')]){_0x138615[_0x0397('0x42')]=_['merge'](_0x138615[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x138615[_0x0397('0x46')],function(_0x3688c6){var _0x13b2f7={};_0x13b2f7[_0x3688c6]={'$like':'%'+_0x31dd47[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x13b2f7;})});}_0x138615=_[_0x0397('0x5a')]({},_0x138615,_0x31dd47['options']);return db[_0x0397('0xe0')][_0x0397('0x23')]({'where':_0x138615[_0x0397('0x42')]})[_0x0397('0x27')](function(_0xb9f473){_0x54688c['count']=_0xb9f473;if(_0x31dd47[_0x0397('0x44')][_0x0397('0x45')]){_0x138615[_0x0397('0x59')]=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x138615);})[_0x0397('0x27')](function(_0x391998){_0x54688c[_0x0397('0x48')]=_0x391998;return _0x54688c;});}})[_0x0397('0x27')](respondWithFilteredResult(_0x51022d,_0x138615))[_0x0397('0x1d')](handleError(_0x51022d,null));};exports['getScreenRecordings']=function(_0x78fdc9,_0x22883f){var _0x409a11={'raw':!![],'where':{}};var _0xec2be4={};var _0x1b4b3={'count':0x0,'rows':[]};return db[_0x0397('0x43')]['findOne']({'where':{'id':_0x78fdc9[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x22883f,null))[_0x0397('0x27')](function(_0x15fb27){if(_0x15fb27){_0xec2be4[_0x0397('0x53')]=_[_0x0397('0x55')](db['ScreenRecording'][_0x0397('0x3a')]);_0xec2be4[_0x0397('0x44')]=_[_0x0397('0x55')](_0x78fdc9[_0x0397('0x44')]);_0xec2be4[_0x0397('0xd3')]=_[_0x0397('0x57')](_0xec2be4[_0x0397('0x53')],_0xec2be4['query']);_0x409a11['attributes']=_[_0x0397('0x57')](_0xec2be4[_0x0397('0x53')],qs[_0x0397('0x58')](_0x78fdc9[_0x0397('0x44')]['fields']));_0x409a11['attributes']=_0x409a11[_0x0397('0x46')][_0x0397('0x4a')]?_0x409a11[_0x0397('0x46')]:_0xec2be4[_0x0397('0x53')];if(!_0x78fdc9[_0x0397('0x44')][_0x0397('0xd6')]('nolimit')){_0x409a11[_0x0397('0x24')]=qs['limit'](_0x78fdc9[_0x0397('0x44')][_0x0397('0x24')]);_0x409a11['offset']=qs[_0x0397('0x21')](_0x78fdc9[_0x0397('0x44')][_0x0397('0x21')]);}_0x409a11[_0x0397('0xd4')]=qs['sort'](_0x78fdc9[_0x0397('0x44')][_0x0397('0xd5')]);_0x409a11[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x78fdc9[_0x0397('0x44')],_0xec2be4[_0x0397('0xd3')]));_0x409a11[_0x0397('0x42')][_0x0397('0xe1')]=_0x15fb27['id'];if(_0x78fdc9[_0x0397('0x44')]['filter']){_0x409a11[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x409a11['where'],{'$or':_[_0x0397('0x3b')](_0x409a11[_0x0397('0x46')],function(_0x3159d6){var _0x3263ee={};_0x3263ee[_0x3159d6]={'$like':'%'+_0x78fdc9[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x3263ee;})});}_0x409a11=_[_0x0397('0x5a')]({},_0x409a11,_0x78fdc9[_0x0397('0x5b')]);return db[_0x0397('0xe2')][_0x0397('0x23')]({'where':_0x409a11[_0x0397('0x42')]})[_0x0397('0x27')](function(_0x2ec631){_0x1b4b3[_0x0397('0x23')]=_0x2ec631;if(_0x78fdc9[_0x0397('0x44')][_0x0397('0x45')]){_0x409a11['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x0397('0x8f')](_0x409a11);})['then'](function(_0x3a2fa5){_0x1b4b3[_0x0397('0x48')]=_0x3a2fa5;return _0x1b4b3;});}})['then'](respondWithFilteredResult(_0x22883f,_0x409a11))[_0x0397('0x1d')](handleError(_0x22883f,null));};exports['getChatInteractions']=function(_0x4e6d20,_0x1c08ed){var _0x2d32f5={};var _0x1e769e={};var _0x1b3463;var _0x295379;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x4e6d20[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x1c08ed,null))['then'](function(_0x6f7cf7){if(_0x6f7cf7){_0x1b3463=_0x6f7cf7;_0x1e769e[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0xe3')][_0x0397('0x3a')]);_0x1e769e[_0x0397('0x44')]=_['keys'](_0x4e6d20[_0x0397('0x44')]);_0x1e769e[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x1e769e['model'],_0x1e769e['query']);_0x2d32f5[_0x0397('0x46')]=_[_0x0397('0x57')](_0x1e769e[_0x0397('0x53')],qs[_0x0397('0x58')](_0x4e6d20[_0x0397('0x44')][_0x0397('0x58')]));_0x2d32f5[_0x0397('0x46')]=_0x2d32f5[_0x0397('0x46')][_0x0397('0x4a')]?_0x2d32f5[_0x0397('0x46')]:_0x1e769e[_0x0397('0x53')];_0x2d32f5[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x4e6d20[_0x0397('0x44')]['sort']);_0x2d32f5[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x4e6d20[_0x0397('0x44')],_0x1e769e['filters']));if(_0x4e6d20[_0x0397('0x44')][_0x0397('0x3f')]){_0x2d32f5[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x2d32f5['where'],{'$or':_['map'](_0x2d32f5[_0x0397('0x46')],function(_0x29a475){var _0x2b5e04={};_0x2b5e04[_0x29a475]={'$like':'%'+_0x4e6d20['query'][_0x0397('0x3f')]+'%'};return _0x2b5e04;})});}_0x2d32f5=_[_0x0397('0x5a')]({},_0x2d32f5,_0x4e6d20[_0x0397('0x5b')]);return _0x1b3463[_0x0397('0xe4')](_0x2d32f5);}})[_0x0397('0x27')](function(_0xf0de1a){if(_0xf0de1a){_0x295379=_0xf0de1a[_0x0397('0x4a')];if(!_0x4e6d20['query']['hasOwnProperty'](_0x0397('0xd9'))){_0x2d32f5[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x4e6d20[_0x0397('0x44')]['limit']);_0x2d32f5[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x4e6d20[_0x0397('0x44')]['offset']);}return _0x1b3463[_0x0397('0xe4')](_0x2d32f5);}})[_0x0397('0x27')](function(_0x1037fc){if(_0x1037fc){return _0x1037fc?{'count':_0x295379,'rows':_0x1037fc}:null;}})[_0x0397('0x27')](respondWithResult(_0x1c08ed,null))[_0x0397('0x1d')](handleError(_0x1c08ed,null));};exports['getOpenchannelInteractions']=function(_0x4a2e86,_0x2a9e3b){var _0x35aa1d={};var _0x397549={};var _0xcb2b2c;var _0x4694f3;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x4a2e86['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x2a9e3b,null))[_0x0397('0x27')](function(_0x1d055d){if(_0x1d055d){_0xcb2b2c=_0x1d055d;_0x397549[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0xe5')][_0x0397('0x3a')]);_0x397549['query']=_[_0x0397('0x55')](_0x4a2e86['query']);_0x397549[_0x0397('0xd3')]=_['intersection'](_0x397549[_0x0397('0x53')],_0x397549['query']);_0x35aa1d[_0x0397('0x46')]=_['intersection'](_0x397549[_0x0397('0x53')],qs[_0x0397('0x58')](_0x4a2e86[_0x0397('0x44')][_0x0397('0x58')]));_0x35aa1d['attributes']=_0x35aa1d[_0x0397('0x46')][_0x0397('0x4a')]?_0x35aa1d[_0x0397('0x46')]:_0x397549[_0x0397('0x53')];_0x35aa1d[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x4a2e86[_0x0397('0x44')][_0x0397('0xd5')]);_0x35aa1d[_0x0397('0x42')]=qs[_0x0397('0xd3')](_['pick'](_0x4a2e86[_0x0397('0x44')],_0x397549[_0x0397('0xd3')]));if(_0x4a2e86['query'][_0x0397('0x3f')]){_0x35aa1d[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x35aa1d[_0x0397('0x42')],{'$or':_['map'](_0x35aa1d[_0x0397('0x46')],function(_0x4ca00d){var _0x1db5ab={};_0x1db5ab[_0x4ca00d]={'$like':'%'+_0x4a2e86[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x1db5ab;})});}_0x35aa1d=_[_0x0397('0x5a')]({},_0x35aa1d,_0x4a2e86[_0x0397('0x5b')]);return _0xcb2b2c[_0x0397('0xe6')](_0x35aa1d);}})[_0x0397('0x27')](function(_0x497230){if(_0x497230){_0x4694f3=_0x497230[_0x0397('0x4a')];if(!_0x4a2e86[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x35aa1d[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x4a2e86[_0x0397('0x44')][_0x0397('0x24')]);_0x35aa1d[_0x0397('0x21')]=qs['offset'](_0x4a2e86[_0x0397('0x44')][_0x0397('0x21')]);}return _0xcb2b2c[_0x0397('0xe6')](_0x35aa1d);}})[_0x0397('0x27')](function(_0x19526f){if(_0x19526f){return _0x19526f?{'count':_0x4694f3,'rows':_0x19526f}:null;}})['then'](respondWithResult(_0x2a9e3b,null))['catch'](handleError(_0x2a9e3b,null));};exports['getMailInteractions']=function(_0x51b232,_0x103fc8){var _0x306a3e={'raw':!![],'where':{}};var _0x3e9865={};var _0x229c51={'count':0x0,'rows':[]};return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x51b232[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x103fc8,null))['then'](function(_0xb4d6d6){if(_0xb4d6d6){_0x3e9865[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0xe7')][_0x0397('0x3a')]);_0x3e9865[_0x0397('0x44')]=_[_0x0397('0x55')](_0x51b232[_0x0397('0x44')]);_0x3e9865[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x3e9865[_0x0397('0x53')],_0x3e9865[_0x0397('0x44')]);_0x306a3e[_0x0397('0x46')]=_[_0x0397('0x57')](_0x3e9865[_0x0397('0x53')],qs[_0x0397('0x58')](_0x51b232[_0x0397('0x44')][_0x0397('0x58')]));_0x306a3e['attributes']=_0x306a3e[_0x0397('0x46')][_0x0397('0x4a')]?_0x306a3e[_0x0397('0x46')]:_0x3e9865[_0x0397('0x53')];if(!_0x51b232[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x306a3e[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x51b232[_0x0397('0x44')][_0x0397('0x24')]);_0x306a3e[_0x0397('0x21')]=qs['offset'](_0x51b232[_0x0397('0x44')][_0x0397('0x21')]);}_0x306a3e[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x51b232[_0x0397('0x44')][_0x0397('0xd5')]);_0x306a3e[_0x0397('0x42')]=qs['filters'](_[_0x0397('0xdb')](_0x51b232[_0x0397('0x44')],_0x3e9865[_0x0397('0xd3')]));_0x306a3e[_0x0397('0x42')][_0x0397('0xe1')]=_0xb4d6d6['id'];if(_0x51b232[_0x0397('0x44')][_0x0397('0x3f')]){_0x306a3e[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x306a3e[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x306a3e[_0x0397('0x46')],function(_0x4d2d06){var _0x2ef4c1={};_0x2ef4c1[_0x4d2d06]={'$like':'%'+_0x51b232[_0x0397('0x44')]['filter']+'%'};return _0x2ef4c1;})});}_0x306a3e=_['merge']({},_0x306a3e,_0x51b232[_0x0397('0x5b')]);return db['MailInteraction'][_0x0397('0x23')]({'where':_0x306a3e[_0x0397('0x42')]})[_0x0397('0x27')](function(_0xf71268){_0x229c51[_0x0397('0x23')]=_0xf71268;if(_0x51b232[_0x0397('0x44')]['includeAll']){_0x306a3e[_0x0397('0x59')]=[{'all':!![]}];}return db['MailInteraction'][_0x0397('0x8f')](_0x306a3e);})['then'](function(_0xa21790){_0x229c51[_0x0397('0x48')]=_0xa21790;return _0x229c51;});}})[_0x0397('0x27')](respondWithFilteredResult(_0x103fc8,_0x306a3e))[_0x0397('0x1d')](handleError(_0x103fc8,null));};exports['getSmsInteractions']=function(_0x378b19,_0x4114c5){var _0x1ca205={};var _0xbbf310={};var _0x1c3a54;var _0x2676b3;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x378b19[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x4114c5,null))[_0x0397('0x27')](function(_0x5caaaa){if(_0x5caaaa){_0x1c3a54=_0x5caaaa;_0xbbf310[_0x0397('0x53')]=_[_0x0397('0x55')](db['SmsInteraction'][_0x0397('0x3a')]);_0xbbf310[_0x0397('0x44')]=_[_0x0397('0x55')](_0x378b19['query']);_0xbbf310[_0x0397('0xd3')]=_['intersection'](_0xbbf310['model'],_0xbbf310[_0x0397('0x44')]);_0x1ca205[_0x0397('0x46')]=_[_0x0397('0x57')](_0xbbf310[_0x0397('0x53')],qs[_0x0397('0x58')](_0x378b19['query'][_0x0397('0x58')]));_0x1ca205[_0x0397('0x46')]=_0x1ca205[_0x0397('0x46')][_0x0397('0x4a')]?_0x1ca205[_0x0397('0x46')]:_0xbbf310['model'];_0x1ca205[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x378b19[_0x0397('0x44')][_0x0397('0xd5')]);_0x1ca205[_0x0397('0x42')]=qs[_0x0397('0xd3')](_['pick'](_0x378b19[_0x0397('0x44')],_0xbbf310[_0x0397('0xd3')]));if(_0x378b19[_0x0397('0x44')][_0x0397('0x3f')]){_0x1ca205[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x1ca205[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x1ca205[_0x0397('0x46')],function(_0x1cfe00){var _0x46850e={};_0x46850e[_0x1cfe00]={'$like':'%'+_0x378b19[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x46850e;})});}_0x1ca205=_[_0x0397('0x5a')]({},_0x1ca205,_0x378b19[_0x0397('0x5b')]);return _0x1c3a54[_0x0397('0xe8')](_0x1ca205);}})[_0x0397('0x27')](function(_0xce3076){if(_0xce3076){_0x2676b3=_0xce3076[_0x0397('0x4a')];if(!_0x378b19[_0x0397('0x44')][_0x0397('0xd6')]('nolimit')){_0x1ca205['limit']=qs[_0x0397('0x24')](_0x378b19[_0x0397('0x44')][_0x0397('0x24')]);_0x1ca205[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x378b19['query'][_0x0397('0x21')]);}return _0x1c3a54['getSmsInteractions'](_0x1ca205);}})[_0x0397('0x27')](function(_0x982370){if(_0x982370){return _0x982370?{'count':_0x2676b3,'rows':_0x982370}:null;}})['then'](respondWithResult(_0x4114c5,null))[_0x0397('0x1d')](handleError(_0x4114c5,null));};exports[_0x0397('0xe9')]=function(_0x112c47,_0x443c2b){var _0x1c1aab={};var _0x1b2cc5={};var _0x4c9b9c;var _0x5ad83c;return db['User']['findOne']({'where':{'id':_0x112c47[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x443c2b,null))[_0x0397('0x27')](function(_0xcdd736){if(_0xcdd736){_0x4c9b9c=_0xcdd736;_0x1b2cc5['model']=_[_0x0397('0x55')](db[_0x0397('0xea')][_0x0397('0x3a')]);_0x1b2cc5['query']=_[_0x0397('0x55')](_0x112c47[_0x0397('0x44')]);_0x1b2cc5['filters']=_[_0x0397('0x57')](_0x1b2cc5[_0x0397('0x53')],_0x1b2cc5[_0x0397('0x44')]);_0x1c1aab[_0x0397('0x46')]=_[_0x0397('0x57')](_0x1b2cc5[_0x0397('0x53')],qs[_0x0397('0x58')](_0x112c47[_0x0397('0x44')][_0x0397('0x58')]));_0x1c1aab[_0x0397('0x46')]=_0x1c1aab[_0x0397('0x46')][_0x0397('0x4a')]?_0x1c1aab[_0x0397('0x46')]:_0x1b2cc5['model'];_0x1c1aab[_0x0397('0xd4')]=qs['sort'](_0x112c47['query'][_0x0397('0xd5')]);_0x1c1aab['where']=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x112c47['query'],_0x1b2cc5[_0x0397('0xd3')]));if(_0x112c47['query'][_0x0397('0x3f')]){_0x1c1aab[_0x0397('0x42')]=_['merge'](_0x1c1aab[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x1c1aab['attributes'],function(_0x3a7018){var _0x4a5ba4={};_0x4a5ba4[_0x3a7018]={'$like':'%'+_0x112c47['query']['filter']+'%'};return _0x4a5ba4;})});}_0x1c1aab=_[_0x0397('0x5a')]({},_0x1c1aab,_0x112c47[_0x0397('0x5b')]);return _0x4c9b9c[_0x0397('0xe9')](_0x1c1aab);}})[_0x0397('0x27')](function(_0x5edf7f){if(_0x5edf7f){_0x5ad83c=_0x5edf7f['length'];if(!_0x112c47[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x1c1aab[_0x0397('0x24')]=qs['limit'](_0x112c47[_0x0397('0x44')][_0x0397('0x24')]);_0x1c1aab[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x112c47[_0x0397('0x44')][_0x0397('0x21')]);}return _0x4c9b9c[_0x0397('0xe9')](_0x1c1aab);}})['then'](function(_0x13b5fa){if(_0x13b5fa){return _0x13b5fa?{'count':_0x5ad83c,'rows':_0x13b5fa}:null;}})[_0x0397('0x27')](respondWithResult(_0x443c2b,null))['catch'](handleError(_0x443c2b,null));};exports['getWhatsappInteractions']=function(_0x4b0692,_0x538656){var _0x37e3c8={};var _0x4cb452={};var _0x183ea4;var _0x253b9e;return db['User'][_0x0397('0xd2')]({'where':{'id':_0x4b0692['params']['id']}})['then'](handleEntityNotFound(_0x538656,null))[_0x0397('0x27')](function(_0x57190b){if(_0x57190b){_0x183ea4=_0x57190b;_0x4cb452[_0x0397('0x53')]=_[_0x0397('0x55')](db['WhatsappInteraction'][_0x0397('0x3a')]);_0x4cb452['query']=_[_0x0397('0x55')](_0x4b0692[_0x0397('0x44')]);_0x4cb452['filters']=_['intersection'](_0x4cb452[_0x0397('0x53')],_0x4cb452[_0x0397('0x44')]);_0x37e3c8[_0x0397('0x46')]=_['intersection'](_0x4cb452[_0x0397('0x53')],qs[_0x0397('0x58')](_0x4b0692['query'][_0x0397('0x58')]));_0x37e3c8[_0x0397('0x46')]=_0x37e3c8[_0x0397('0x46')][_0x0397('0x4a')]?_0x37e3c8[_0x0397('0x46')]:_0x4cb452['model'];_0x37e3c8[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x4b0692[_0x0397('0x44')][_0x0397('0xd5')]);_0x37e3c8[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x4b0692[_0x0397('0x44')],_0x4cb452[_0x0397('0xd3')]));if(_0x4b0692[_0x0397('0x44')][_0x0397('0x3f')]){_0x37e3c8[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x37e3c8[_0x0397('0x42')],{'$or':_['map'](_0x37e3c8[_0x0397('0x46')],function(_0x3f9b47){var _0x2bddc7={};_0x2bddc7[_0x3f9b47]={'$like':'%'+_0x4b0692[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x2bddc7;})});}_0x37e3c8=_['merge']({},_0x37e3c8,_0x4b0692[_0x0397('0x5b')]);return _0x183ea4[_0x0397('0xeb')](_0x37e3c8);}})[_0x0397('0x27')](function(_0x5d979f){if(_0x5d979f){_0x253b9e=_0x5d979f[_0x0397('0x4a')];if(!_0x4b0692[_0x0397('0x44')]['hasOwnProperty'](_0x0397('0xd9'))){_0x37e3c8[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x4b0692['query'][_0x0397('0x24')]);_0x37e3c8['offset']=qs['offset'](_0x4b0692[_0x0397('0x44')][_0x0397('0x21')]);}return _0x183ea4['getWhatsappInteractions'](_0x37e3c8);}})['then'](function(_0x20aa11){if(_0x20aa11){return _0x20aa11?{'count':_0x253b9e,'rows':_0x20aa11}:null;}})[_0x0397('0x27')](respondWithResult(_0x538656,null))[_0x0397('0x1d')](handleError(_0x538656,null));};exports[_0x0397('0xec')]=function(_0x56d74b,_0x1aa8e6,_0x39b570){var _0x1183bb;var _0x3f24d5;var _0x3a85d6;var _0x1a73b7=!_[_0x0397('0x67')](_0x56d74b[_0x0397('0x52')]['id'])?_0x56d74b['params']['id']:!_[_0x0397('0x67')](_0x56d74b['user']['id'])?_0x56d74b['user']['id']:null;return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x1a73b7,'role':{'$or':[_0x0397('0x80'),_0x0397('0x2c'),_0x0397('0x2e')]}},'attributes':['id','name',_0x0397('0xed'),'mobile','role',_0x0397('0x63'),_0x0397('0xa6')]})[_0x0397('0x27')](function(_0x59af60){if(_0x59af60){if(_0x59af60[_0x0397('0x2a')]===_0x0397('0x2e')){_0x1183bb=_0x59af60;if(_0x56d74b[_0x0397('0x5f')][_0x0397('0xa8')]){_0x3a85d6=util[_0x0397('0xb4')]('LOCAL/%s@from-sip/n',_0x1183bb[_0x56d74b[_0x0397('0x5f')]['interface']]);}else if(_0x56d74b[_0x0397('0x5f')][_0x0397('0xee')]){_0x3a85d6=util[_0x0397('0xb4')](_0x0397('0xb5'),_0x56d74b[_0x0397('0x5f')][_0x0397('0xee')]);}else{_0x3a85d6=util['format'](_0x0397('0xb5'),_0x1183bb[_0x0397('0x37')]);}socket['to'](util[_0x0397('0xb4')](_0x0397('0xef'),_0x1183bb[_0x0397('0x37')]))[_0x0397('0xb0')]('user:forcelogout',{'user':{'id':_0x1183bb['id'],'name':_0x1183bb['name']},'ip':_0x56d74b[_0x0397('0xf0')][_0x0397('0xf1')]||_0x56d74b[_0x0397('0xf2')][_0x0397('0xf3')]||_0x56d74b[_0x0397('0xf4')][_0x0397('0xf3')]||_0x56d74b[_0x0397('0xf2')][_0x0397('0xf4')][_0x0397('0xf3')]});return db[_0x0397('0xb6')]['destroy']({'where':{'membername':_0x1183bb[_0x0397('0x37')]},'individualHooks':!![]});}}else{throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0xf5'));}})[_0x0397('0x27')](function(){if(_0x1183bb){return _0x1183bb[_0x0397('0xf6')]({'raw':!![]});}})[_0x0397('0x27')](function(_0x59d090){if(_0x1183bb){var _0x201a2f=[];if(_0x59d090){_0x3f24d5=_0x59d090;if(_0x3f24d5[_0x0397('0x4a')]){for(var _0x26eb03=0x0;_0x26eb03<_0x3f24d5[_0x0397('0x4a')];_0x26eb03++){_0x201a2f[_0x0397('0x47')]({'membername':_0x1183bb['name'],'UserId':_0x1183bb['id'],'queue_name':_0x3f24d5[_0x26eb03][_0x0397('0x37')],'VoiceQueueId':_0x3f24d5[_0x26eb03]['id'],'interface':_0x3a85d6,'paused':_0x1183bb[_0x0397('0xa6')]||![],'penalty':_0x3f24d5[_0x26eb03][_0x0397('0xf7')]||0x0});}return BPromise[_0x0397('0x8d')](_0x201a2f,function(_0x4af783){return db['UserVoiceQueueRt'][_0x0397('0xb7')](_0x4af783);});}}}})['then'](function(){if(_0x1183bb){return db[_0x0397('0xf8')]['findAll']({'where':{'membername':_0x1183bb['name'],'exitAt':null}});}})['then'](function(_0x1fc7c4){if(_0x1183bb){var _0x9a0664=[];_0x1fc7c4[_0x0397('0xf9')](function(_0x428f1a){_0x9a0664[_0x0397('0x47')](_0x428f1a[_0x0397('0x26')]({'exitAt':moment()[_0x0397('0xb4')](_0x0397('0xfa'))}));});return BPromise[_0x0397('0x5e')](_0x9a0664);}})[_0x0397('0x27')](function(){if(_0x1183bb){var _0x604c65=[];var _0x31fa3a=[];var _0x409c2f=utils['getChannels']();var _0x30f1bd={'membername':_0x1183bb[_0x0397('0x37')],'interface':_0x3a85d6,'enterAt':moment()['format'](_0x0397('0xfa')),'role':_0x1183bb[_0x0397('0x2a')],'internal':_0x1183bb['internal']};_0x409c2f['forEach'](function(_0x5676d3){_0x604c65[_0x0397('0x47')](_['merge']({'channel':_0x5676d3,'type':_0x0397('0xfb'),'data1':_0x56d74b['body']['device'],'data2':_0x3a85d6},_0x30f1bd));if(_0x1183bb[_0x0397('0xa6')]){_0x31fa3a[_0x0397('0x47')](_[_0x0397('0x5a')]({'channel':_0x5676d3,'type':_0x0397('0xfc'),'data1':'LOGININPAUSE'},_0x30f1bd));}});return db[_0x0397('0xf8')]['bulkCreate'](_0x604c65[_0x0397('0xfd')](_0x31fa3a),{'individualHooks':!![]});}})[_0x0397('0x27')](function(){if(_0x1183bb){return _0x1183bb[_0x0397('0x26')]({'online':!![],'lastLoginAt':moment()['format'](_0x0397('0xfa')),'voicePause':_0x1183bb[_0x0397('0xa6')]||![],'mailPause':_0x1183bb[_0x0397('0xa6')]||![],'chatPause':_0x1183bb['loginInPause']||![],'faxPause':_0x1183bb['loginInPause']||![],'smsPause':_0x1183bb[_0x0397('0xa6')]||![],'openchannelPause':_0x1183bb['loginInPause']||![],'whatsappPause':_0x1183bb[_0x0397('0xa6')]||![],'pauseType':_0x1183bb[_0x0397('0xa6')]?'LOGININPAUSE':null,'interface':_0x3a85d6,'lastPauseAt':moment()[_0x0397('0xb4')](_0x0397('0xfa'))});}})['then'](function(_0xd2f8cd){if(_0x56d74b['isMiddleware']){return _0x39b570();}else{return BPromise[_0x0397('0xfe')](_0xd2f8cd)['then'](respondWithResult(_0x1aa8e6,null));}})[_0x0397('0x1d')](handleError(_0x1aa8e6,null));};exports[_0x0397('0xff')]=function(_0x4bf0f0,_0x488229){var _0x1ba9ea;return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x4bf0f0[_0x0397('0x52')]['id'],'role':_0x0397('0x2e')},'attributes':['id','name',_0x0397('0x2a')]})['then'](handleEntityNotFound(_0x488229,null))[_0x0397('0x27')](function(_0x2246f8){if(_0x2246f8){_0x1ba9ea=_0x2246f8;return db[_0x0397('0xb6')]['destroy']({'where':{'membername':_0x1ba9ea['name']},'individualHooks':!![]});}})['then'](function(){return db[_0x0397('0xf8')][_0x0397('0x8f')]({'where':{'membername':_0x1ba9ea[_0x0397('0x37')],'exitAt':null}});})[_0x0397('0x27')](function(_0x18eb70){var _0x52d7ca=[];_0x18eb70[_0x0397('0xf9')](function(_0x583038){_0x52d7ca[_0x0397('0x47')](_0x583038[_0x0397('0x26')]({'exitAt':moment()[_0x0397('0xb4')](_0x0397('0xfa'))}));});return BPromise[_0x0397('0x5e')](_0x52d7ca);})[_0x0397('0x27')](function(){return _0x1ba9ea[_0x0397('0x26')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x0397('0x27')](respondWithResult(_0x488229,null))[_0x0397('0x1d')](handleError(_0x488229,null));};exports['pause']=function(_0x4d642d,_0x104c04){var _0x974062;return db['UserVoiceQueueRt'][_0x0397('0x26')]({'paused':0x1},{'where':{'UserId':_0x4d642d[_0x0397('0x52')]['id']},'individualHooks':!![]})[_0x0397('0x27')](function(){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x4d642d[_0x0397('0x52')]['id'],'role':_0x0397('0x2e')},'attributes':['id',_0x0397('0x37'),'role',_0x0397('0x63'),_0x0397('0xa8')]});})[_0x0397('0x27')](handleEntityNotFound(_0x104c04,null))['then'](function(_0x33f7c5){if(_0x33f7c5){_0x974062=_0x33f7c5;return respondWithRpcPromise(_0x0397('0x100'),'pause',{'id':_0x974062['id'],'name':_0x974062[_0x0397('0x37')],'pause':!![]});}})[_0x0397('0x27')](function(){if(_0x974062){return db['MemberReport'][_0x0397('0x8f')]({'where':{'membername':_0x974062[_0x0397('0x37')],'type':_0x0397('0xfc'),'exitAt':null}});}})[_0x0397('0x27')](function(_0x3b9221){if(_0x3b9221[_0x0397('0x4a')]){var _0x242658=moment()['format'](_0x0397('0xfa'));for(var _0x37aebd=0x0,_0x4afbdc=_0x3b9221[_0x0397('0x4a')];_0x37aebd<_0x4afbdc;_0x37aebd++){_0x3b9221[_0x37aebd][_0x0397('0x101')]({'exitAt':_0x242658});}}})[_0x0397('0x27')](function(){var _0x3b7cd4=[];var _0x1a40ac=utils[_0x0397('0x102')]();_0x1a40ac['forEach'](function(_0x4a1df7){_0x3b7cd4[_0x0397('0x47')]({'channel':_0x4a1df7,'membername':_0x974062[_0x0397('0x37')],'interface':_[_0x0397('0x67')](_0x974062[_0x0397('0xa8')])?util['format'](_0x0397('0xb5'),_0x974062[_0x0397('0x37')]):_0x974062[_0x0397('0xa8')],'type':_0x0397('0xfc'),'enterAt':moment()[_0x0397('0xb4')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x4d642d[_0x0397('0x5f')]['type']||_0x0397('0x103'),'role':_0x974062[_0x0397('0x2a')],'internal':_0x974062['internal']});});return db['MemberReport']['bulkCreate'](_0x3b7cd4,{'individualHooks':!![]});})[_0x0397('0x27')](function(){return _0x974062['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x4d642d[_0x0397('0x5f')]['type']||_0x0397('0x103'),'lastPauseAt':moment()['format'](_0x0397('0xfa'))});})['then'](respondWithResult(_0x104c04,null))['catch'](handleError(_0x104c04,null));};exports['unpause']=function(_0x5264e6,_0xee265){var _0x1b79e2;return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x5264e6[_0x0397('0x52')]['id']},'attributes':['id',_0x0397('0x37'),_0x0397('0x2a'),_0x0397('0xa7'),_0x0397('0x104'),_0x0397('0x105'),_0x0397('0x106'),_0x0397('0x107'),_0x0397('0x108'),_0x0397('0x109'),_0x0397('0x10a'),_0x0397('0x10b')]})[_0x0397('0x27')](handleEntityNotFound(_0xee265,null))[_0x0397('0x27')](function(_0xfb6a2b){if(_0xfb6a2b){_0x1b79e2=_0xfb6a2b;if(_0x5264e6[_0x0397('0x5f')][_0x0397('0xa4')]&&!utils['isValidChannel'](_0x5264e6['body']['channel'])){throw new db[(_0x0397('0x95'))][(_0x0397('0x99'))](_0x0397('0xba'));}switch(_0x5264e6[_0x0397('0x5f')][_0x0397('0xa4')]){case'voice':return respondWithRpcPromise(_0x0397('0x100'),_0x0397('0x10c'),{'id':_0x1b79e2['id'],'name':_0x1b79e2['name'],'pause':![]})[_0x0397('0x27')](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x1b79e2['id']},'individualHooks':!![]});})['then'](function(){return db['MemberReport'][_0x0397('0x33')]({'where':{'channel':_0x5264e6[_0x0397('0x5f')][_0x0397('0xa4')],'membername':_0x1b79e2[_0x0397('0x37')],'type':'PAUSE','exitAt':null}});})[_0x0397('0x27')](function(_0x4a5b4b){if(_0x4a5b4b){return _0x4a5b4b[_0x0397('0x26')]({'exitAt':moment()[_0x0397('0xb4')](_0x0397('0xfa')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x0397('0x27')](function(){return _0x1b79e2[_0x0397('0x26')]({'voicePause':![]});});case _0x0397('0x4f'):case _0x0397('0x4b'):case _0x0397('0x4e'):case _0x0397('0x4c'):case _0x0397('0x50'):case _0x0397('0x5d'):return db[_0x0397('0xf8')][_0x0397('0x33')]({'where':{'channel':_0x5264e6['body'][_0x0397('0xa4')],'membername':_0x1b79e2['name'],'type':'PAUSE','exitAt':null}})[_0x0397('0x27')](function(_0x2eda17){if(_0x2eda17){return _0x2eda17[_0x0397('0x26')]({'exitAt':moment()[_0x0397('0xb4')](_0x0397('0xfa')),'data2':_0x0397('0x10d')},{'individualHooks':!![]});}return null;})[_0x0397('0x27')](function(){var _0x19dfd7={};_['set'](_0x19dfd7,util[_0x0397('0xb4')](_0x0397('0x10e'),_0x5264e6[_0x0397('0x5f')][_0x0397('0xa4')],_0x0397('0x10f')),![]);return _0x1b79e2[_0x0397('0x26')](_0x19dfd7);});default:return respondWithRpcPromise('QueuePause','unpause',{'id':_0x1b79e2['id'],'name':_0x1b79e2[_0x0397('0x37')],'pause':![]})[_0x0397('0x27')](function(){return db[_0x0397('0xb6')][_0x0397('0x26')]({'paused':0x0},{'where':{'UserId':_0x1b79e2['id']}});})[_0x0397('0x27')](function(){return db[_0x0397('0xf8')][_0x0397('0x8f')]({'where':{'membername':_0x1b79e2['name'],'type':_0x0397('0xfc'),'exitAt':null}});})[_0x0397('0x27')](function(_0x5ea268){var _0x3e0842=[];_0x5ea268[_0x0397('0xf9')](function(_0x4a230f){_0x3e0842[_0x0397('0x47')](_0x4a230f['update']({'exitAt':moment()[_0x0397('0xb4')](_0x0397('0xfa')),'data2':'manual'}));});return BPromise[_0x0397('0x5e')](_0x3e0842);})[_0x0397('0x27')](function(){return _0x1b79e2[_0x0397('0x26')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x0397('0x27')](respondWithResult(_0xee265,null))[_0x0397('0x1d')](handleError(_0xee265,null));};exports[_0x0397('0x110')]=function(_0x355b38,_0x171f79){var _0x2674a1={};var _0x291bee={};var _0x554394;var _0x5d0c81;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x355b38[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x171f79,null))[_0x0397('0x27')](function(_0x4ca51d){if(_0x4ca51d){_0x554394=_0x4ca51d;_0x291bee[_0x0397('0x53')]=_[_0x0397('0x55')](db['Team']['rawAttributes']);_0x291bee[_0x0397('0x44')]=_['keys'](_0x355b38['query']);_0x291bee['filters']=_[_0x0397('0x57')](_0x291bee[_0x0397('0x53')],_0x291bee[_0x0397('0x44')]);_0x2674a1['attributes']=_[_0x0397('0x57')](_0x291bee['model'],qs[_0x0397('0x58')](_0x355b38[_0x0397('0x44')]['fields']));_0x2674a1[_0x0397('0x46')]=_0x2674a1[_0x0397('0x46')][_0x0397('0x4a')]?_0x2674a1[_0x0397('0x46')]:_0x291bee['model'];_0x2674a1[_0x0397('0xd4')]=qs['sort'](_0x355b38['query'][_0x0397('0xd5')]);_0x2674a1['where']=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x355b38['query'],_0x291bee['filters']));if(_0x355b38[_0x0397('0x44')]['filter']){_0x2674a1[_0x0397('0x42')]=_['merge'](_0x2674a1[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x2674a1[_0x0397('0x46')],function(_0x262c67){var _0x4b8c21={};_0x4b8c21[_0x262c67]={'$like':'%'+_0x355b38[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x4b8c21;})});}_0x2674a1=_[_0x0397('0x5a')]({},_0x2674a1,_0x355b38[_0x0397('0x5b')]);return _0x554394[_0x0397('0x110')](_0x2674a1);}})[_0x0397('0x27')](function(_0x1f51b0){if(_0x1f51b0){_0x5d0c81=_0x1f51b0[_0x0397('0x4a')];if(!_0x355b38[_0x0397('0x44')][_0x0397('0xd6')]('nolimit')){_0x2674a1['limit']=qs[_0x0397('0x24')](_0x355b38[_0x0397('0x44')][_0x0397('0x24')]);_0x2674a1['offset']=qs[_0x0397('0x21')](_0x355b38[_0x0397('0x44')][_0x0397('0x21')]);}return _0x554394[_0x0397('0x110')](_0x2674a1);}})[_0x0397('0x27')](function(_0x2b9593){if(_0x2b9593){return _0x2b9593?{'count':_0x5d0c81,'rows':_0x2b9593}:null;}})[_0x0397('0x27')](respondWithResult(_0x171f79,null))[_0x0397('0x1d')](handleError(_0x171f79,null));};exports[_0x0397('0x111')]=function(_0x148c7d,_0x51d98e){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x148c7d[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x51d98e,null))[_0x0397('0x27')](function(_0xa1c3e6){if(_0xa1c3e6){var _0x56db0e=_0xa1c3e6[_0x0397('0x29')]({'plain':!![]});return _0xa1c3e6[_0x0397('0x111')](_0x148c7d[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x148c7d[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{})[_0x0397('0x27')](function(){for(var _0x193417=0x0;_0x193417<_0x148c7d[_0x0397('0x5f')]['ids'][_0x0397('0x4a')];_0x193417++){var _0x18b78d=[];var _0xf082b3={};db[_0x0397('0x112')]['findOne']({'where':{'id':_0x148c7d[_0x0397('0x5f')][_0x0397('0x61')][_0x193417]}})[_0x0397('0x27')](function(_0x1ddd90){_0xf082b3=_0x1ddd90['dataValues'];_0x18b78d['push'](_0x1ddd90['getVoiceQueues']()[_0x0397('0x27')](function(_0x9d7a5d){for(var _0x1d91c9=0x0;_0x1d91c9<_0x9d7a5d['length'];_0x1d91c9++){_0x9d7a5d[_0x1d91c9][_0x0397('0x113')](_0x0397('0xa4'),'Voice');}return _0x9d7a5d;}));_0x18b78d[_0x0397('0x47')](_0x1ddd90[_0x0397('0x114')]()['then'](function(_0x49f1f2){for(var _0x52e40a=0x0;_0x52e40a<_0x49f1f2[_0x0397('0x4a')];_0x52e40a++){_0x49f1f2[_0x52e40a][_0x0397('0x113')](_0x0397('0xa4'),_0x0397('0x115'));}return _0x49f1f2;}));_0x18b78d[_0x0397('0x47')](_0x1ddd90[_0x0397('0x116')]()[_0x0397('0x27')](function(_0x420cf7){for(var _0x3ebbf4=0x0;_0x3ebbf4<_0x420cf7['length'];_0x3ebbf4++){_0x420cf7[_0x3ebbf4][_0x0397('0x113')](_0x0397('0xa4'),_0x0397('0x117'));}return _0x420cf7;}));_0x18b78d['push'](_0x1ddd90[_0x0397('0x118')]()[_0x0397('0x27')](function(_0x2d8346){for(var _0x2ef199=0x0;_0x2ef199<_0x2d8346['length'];_0x2ef199++){_0x2d8346[_0x2ef199]['setDataValue'](_0x0397('0xa4'),_0x0397('0x119'));}return _0x2d8346;}));_0x18b78d['push'](_0x1ddd90[_0x0397('0x11a')]()[_0x0397('0x27')](function(_0x1aa5df){for(var _0x2d6f0e=0x0;_0x2d6f0e<_0x1aa5df[_0x0397('0x4a')];_0x2d6f0e++){_0x1aa5df[_0x2d6f0e]['setDataValue']('channel',_0x0397('0x11b'));}return _0x1aa5df;}));_0x18b78d[_0x0397('0x47')](_0x1ddd90[_0x0397('0x11c')]()[_0x0397('0x27')](function(_0x30fde5){for(var _0x2b818c=0x0;_0x2b818c<_0x30fde5[_0x0397('0x4a')];_0x2b818c++){_0x30fde5[_0x2b818c][_0x0397('0x113')](_0x0397('0xa4'),_0x0397('0x11d'));}return _0x30fde5;}));_0x18b78d[_0x0397('0x47')](_0x1ddd90[_0x0397('0x11e')]()['then'](function(_0x2d9c72){for(var _0x3aea69=0x0;_0x3aea69<_0x2d9c72[_0x0397('0x4a')];_0x3aea69++){_0x2d9c72[_0x3aea69]['setDataValue'](_0x0397('0xa4'),_0x0397('0x11f'));}return _0x2d9c72;}));return BPromise['all'](_0x18b78d);})[_0x0397('0x27')](function(_0x5fde5c){var _0x526b56=_[_0x0397('0x120')](_0x5fde5c);_0x18b78d=[];return db[_0x0397('0x69')][_0x0397('0x121')](function(_0x53c680){for(var _0x3dbe99=0x0;_0x3dbe99<_0x526b56['length'];_0x3dbe99++){_0x18b78d[_0x0397('0x47')](_0x526b56[_0x3dbe99]['addAgent'](_0x56db0e['id']),{'transaction':_0x53c680});}return BPromise[_0x0397('0x5e')](_0x18b78d)['then'](function(){if(_0x56db0e[_0x0397('0xa5')]){return BPromise['each'](_[_0x0397('0x3f')](_0x526b56,function(_0x256fe3){return _0x256fe3[_0x0397('0x122')](_0x0397('0xa4'))===_0x0397('0x123');}),function(_0x6aa7b8){return db[_0x0397('0xb6')][_0x0397('0xb7')]({'membername':_0x56db0e[_0x0397('0x37')],'UserId':_0x56db0e['id'],'queue_name':_0x6aa7b8[_0x0397('0x37')],'VoiceQueueId':_0x6aa7b8['id'],'interface':_[_0x0397('0x67')](_0x56db0e[_0x0397('0xa8')])?util['format'](_0x0397('0xb5'),_0x56db0e[_0x0397('0x37')]):_0x56db0e['interface'],'paused':_0x56db0e[_0x0397('0xa7')]||![],'penalty':_0x56db0e[_0x0397('0xad')]},{'transaction':_0x53c680});});}else{return;}})[_0x0397('0x27')](function(){for(var _0x1e1013=0x0;_0x1e1013<_0x526b56['length'];_0x1e1013++){var _0x352417=_0x526b56[_0x1e1013][_0x0397('0x122')](_0x0397('0xa4'));var _0x47c30d=_0x352417+_0x0397('0xaf');socket[_0x0397('0xb0')](_0x0397('0x2c')+_0x352417+_0x0397('0xb1'),{'UserId':_0x56db0e['id'],['queueField']:_0x526b56[_0x1e1013]['id']});}});});})[_0x0397('0x27')](function(){db[_0x0397('0x124')][_0x0397('0xd2')]({'where':{'teamId':_0xf082b3['id']}})[_0x0397('0x27')](function(_0x354601){if(_0x354601){db['UserVoicePrefix'][_0x0397('0x86')]({'UserId':_0x148c7d['params']['id'],'VoicePrefixId':_0x354601[_0x0397('0x125')]});}});});}});}})['then'](respondWithStatusCode(_0x51d98e,null))[_0x0397('0x1d')](handleError(_0x51d98e,null));};exports[_0x0397('0x126')]=function(_0x57cdd0,_0x2c0c98){return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x57cdd0['params']['id']}})['then'](handleEntityNotFound(_0x2c0c98,null))[_0x0397('0x27')](function(_0x2a508b){if(_0x2a508b){var _0x5ac124=_0x2a508b[_0x0397('0x29')]({'plain':!![]});var _0x31e71d=_0x57cdd0[_0x0397('0x44')][_0x0397('0x61')];return _0x2a508b[_0x0397('0x126')](_0x31e71d)[_0x0397('0x27')](function(){for(var _0x45062e=0x0;_0x45062e<_0x31e71d['length'];_0x45062e++){var _0x4dff40=[];var _0x1618e8={};db['Team'][_0x0397('0xd2')]({'where':{'id':_0x31e71d[_0x45062e]}})['then'](function(_0x2376ec){_0x1618e8=_0x2376ec[_0x0397('0x4d')];_0x4dff40['push'](_0x2376ec[_0x0397('0xf6')]()[_0x0397('0x27')](function(_0x3c1a61){for(var _0x3f3571=0x0;_0x3f3571<_0x3c1a61[_0x0397('0x4a')];_0x3f3571++){_0x3c1a61[_0x3f3571][_0x0397('0x113')]('channel',_0x0397('0x123'));}return _0x3c1a61;}));_0x4dff40[_0x0397('0x47')](_0x2376ec['getChatQueues']()[_0x0397('0x27')](function(_0x3bda5b){for(var _0x4d7d2a=0x0;_0x4d7d2a<_0x3bda5b[_0x0397('0x4a')];_0x4d7d2a++){_0x3bda5b[_0x4d7d2a]['setDataValue']('channel',_0x0397('0x115'));}return _0x3bda5b;}));_0x4dff40[_0x0397('0x47')](_0x2376ec['getMailQueues']()['then'](function(_0x7c23ba){for(var _0x215579=0x0;_0x215579<_0x7c23ba[_0x0397('0x4a')];_0x215579++){_0x7c23ba[_0x215579]['setDataValue']('channel','Mail');}return _0x7c23ba;}));_0x4dff40[_0x0397('0x47')](_0x2376ec['getSmsQueues']()['then'](function(_0x4e5909){for(var _0x13ba2f=0x0;_0x13ba2f<_0x4e5909['length'];_0x13ba2f++){_0x4e5909[_0x13ba2f][_0x0397('0x113')]('channel',_0x0397('0x119'));}return _0x4e5909;}));_0x4dff40[_0x0397('0x47')](_0x2376ec['getWhatsappQueues']()['then'](function(_0x6fb41c){for(var _0x4df1ec=0x0;_0x4df1ec<_0x6fb41c[_0x0397('0x4a')];_0x4df1ec++){_0x6fb41c[_0x4df1ec]['setDataValue'](_0x0397('0xa4'),_0x0397('0x11b'));}return _0x6fb41c;}));_0x4dff40[_0x0397('0x47')](_0x2376ec[_0x0397('0x11c')]()['then'](function(_0x5f44b5){for(var _0x5bf759=0x0;_0x5bf759<_0x5f44b5[_0x0397('0x4a')];_0x5bf759++){_0x5f44b5[_0x5bf759][_0x0397('0x113')]('channel',_0x0397('0x11d'));}return _0x5f44b5;}));_0x4dff40[_0x0397('0x47')](_0x2376ec[_0x0397('0x11e')]()[_0x0397('0x27')](function(_0x277497){for(var _0x8cdfa8=0x0;_0x8cdfa8<_0x277497[_0x0397('0x4a')];_0x8cdfa8++){_0x277497[_0x8cdfa8]['setDataValue']('channel',_0x0397('0x11f'));}return _0x277497;}));return BPromise[_0x0397('0x5e')](_0x4dff40);})[_0x0397('0x27')](function(_0x5d073d){var _0x5e7a6d=_[_0x0397('0x120')](_0x5d073d);_0x4dff40=[];return db[_0x0397('0x69')][_0x0397('0x121')](function(_0x2c940f){for(var _0x196f59=0x0;_0x196f59<_0x5e7a6d[_0x0397('0x4a')];_0x196f59++){_0x4dff40[_0x0397('0x47')](_0x5e7a6d[_0x196f59]['removeAgent'](_0x5ac124['id']),{'transaction':_0x2c940f});}return BPromise[_0x0397('0x5e')](_0x4dff40)[_0x0397('0x27')](function(){if(_0x5ac124[_0x0397('0xa5')]){return BPromise[_0x0397('0x8d')](_[_0x0397('0x3f')](_0x5e7a6d,function(_0x3dd35a){return _0x3dd35a[_0x0397('0x122')](_0x0397('0xa4'))===_0x0397('0x123');}),function(_0x2140a1){return db[_0x0397('0xb6')][_0x0397('0x28')]({'where':{'VoiceQueueId':_0x2140a1['id'],'UserId':_0x5ac124['id']},'transaction':_0x2c940f});});}else{return;}})[_0x0397('0x27')](function(){db[_0x0397('0x124')][_0x0397('0xd2')]({'where':{'teamId':_0x1618e8['id']}})[_0x0397('0x27')](function(_0x4eb9eb){if(_0x4eb9eb){return db[_0x0397('0x127')][_0x0397('0x28')]({'where':{'UserId':_0x5ac124['id'],'VoicePrefixId':_0x4eb9eb[_0x0397('0x4d')][_0x0397('0x125')]}});}});})[_0x0397('0x27')](function(){for(var _0x2c3796=0x0;_0x2c3796<_0x5e7a6d['length'];_0x2c3796++){var _0x4f9ca3=_0x5e7a6d[_0x2c3796][_0x0397('0x122')](_0x0397('0xa4'));var _0x564de6=_0x4f9ca3+_0x0397('0xaf');socket[_0x0397('0xb0')](_0x0397('0x2c')+_0x4f9ca3+_0x0397('0xbc'),{'UserId':_0x5ac124['id'],['queueField']:_0x5e7a6d[_0x2c3796]['id']});}});});});}});}})['then'](respondWithStatusCode(_0x2c0c98,null))[_0x0397('0x1d')](handleError(_0x2c0c98,null));};exports[_0x0397('0x128')]=function(_0x3f5b9d,_0x2e9394){var _0x1ab452={};var _0x2aff7e={};var _0x2fbefa;var _0x7a07cf;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x3f5b9d['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x2e9394,null))['then'](function(_0x4d61cb){if(_0x4d61cb){_0x2fbefa=_0x4d61cb;_0x2aff7e[_0x0397('0x53')]=_[_0x0397('0x55')](db['CmList']['rawAttributes']);_0x2aff7e[_0x0397('0x44')]=_[_0x0397('0x55')](_0x3f5b9d[_0x0397('0x44')]);_0x2aff7e[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x2aff7e[_0x0397('0x53')],_0x2aff7e[_0x0397('0x44')]);_0x1ab452[_0x0397('0x46')]=_[_0x0397('0x57')](_0x2aff7e[_0x0397('0x53')],qs[_0x0397('0x58')](_0x3f5b9d[_0x0397('0x44')]['fields']));_0x1ab452[_0x0397('0x46')]=_0x1ab452['attributes'][_0x0397('0x4a')]?_0x1ab452[_0x0397('0x46')]:_0x2aff7e[_0x0397('0x53')];_0x1ab452[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x3f5b9d[_0x0397('0x44')][_0x0397('0xd5')]);_0x1ab452['where']=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x3f5b9d[_0x0397('0x44')],_0x2aff7e['filters']));if(_0x3f5b9d[_0x0397('0x44')]['filter']){_0x1ab452[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x1ab452[_0x0397('0x42')],{'$or':_['map'](_0x1ab452[_0x0397('0x46')],function(_0x365ba2){var _0x2c04fa={};_0x2c04fa[_0x365ba2]={'$like':'%'+_0x3f5b9d[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x2c04fa;})});}_0x1ab452=_[_0x0397('0x5a')]({},_0x1ab452,_0x3f5b9d[_0x0397('0x5b')]);return _0x2fbefa['getLists'](_0x1ab452);}})[_0x0397('0x27')](function(_0x3114b0){if(_0x3114b0){_0x7a07cf=_0x3114b0[_0x0397('0x4a')];if(!_0x3f5b9d[_0x0397('0x44')]['hasOwnProperty'](_0x0397('0xd9'))){_0x1ab452[_0x0397('0x24')]=qs['limit'](_0x3f5b9d[_0x0397('0x44')]['limit']);_0x1ab452[_0x0397('0x21')]=qs['offset'](_0x3f5b9d[_0x0397('0x44')]['offset']);}return _0x2fbefa[_0x0397('0x128')](_0x1ab452);}})[_0x0397('0x27')](function(_0x2ffacf){if(_0x2ffacf){return _0x2ffacf?{'count':_0x7a07cf,'rows':_0x2ffacf}:null;}})[_0x0397('0x27')](respondWithResult(_0x2e9394,null))['catch'](handleError(_0x2e9394,null));};exports['getAgents']=function(_0x1dbece,_0x4195a2){var _0x8618a1={};var _0x45da75={};var _0x2ae946;var _0x5393a4;return db['User']['findOne']({'where':{'id':_0x1dbece[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x4195a2,null))['then'](function(_0x342ece){if(_0x342ece){_0x2ae946=_0x342ece;_0x45da75[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0x43')][_0x0397('0x3a')]);_0x45da75[_0x0397('0x44')]=_[_0x0397('0x55')](_0x1dbece[_0x0397('0x44')]);_0x45da75[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x45da75[_0x0397('0x53')],_0x45da75[_0x0397('0x44')]);_0x8618a1[_0x0397('0x46')]=_[_0x0397('0x57')](_0x45da75[_0x0397('0x53')],qs['fields'](_0x1dbece[_0x0397('0x44')][_0x0397('0x58')]));_0x8618a1[_0x0397('0x46')]=_0x8618a1[_0x0397('0x46')]['length']?_0x8618a1[_0x0397('0x46')]:_0x45da75[_0x0397('0x53')];_0x8618a1[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x1dbece[_0x0397('0x44')]['sort']);_0x8618a1['where']=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x1dbece[_0x0397('0x44')],_0x45da75[_0x0397('0xd3')]));if(_0x1dbece[_0x0397('0x44')][_0x0397('0x3f')]){_0x8618a1[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x8618a1[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x8618a1[_0x0397('0x46')],function(_0x2b60fe){var _0x4b93ac={};_0x4b93ac[_0x2b60fe]={'$like':'%'+_0x1dbece[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x4b93ac;})});}_0x8618a1['model']=db[_0x0397('0x43')];_0x8618a1['as']=_0x0397('0x2d');_0x8618a1=_[_0x0397('0x5a')]({},_0x8618a1,_0x1dbece[_0x0397('0x5b')]);return _0x2ae946['getVoiceQueues']({'include':[_0x8618a1]});}})['then'](function(_0x46203e){if(_0x46203e){var _0x207b61={},_0x34a2e4=[],_0x129528=0x0;for(var _0x40d464=0x0;_0x40d464<_0x46203e['length'];_0x40d464+=0x1){for(var _0x302d0a=0x0,_0x27186b;_0x302d0a<_0x46203e[_0x40d464][_0x0397('0x2d')][_0x0397('0x4a')];_0x302d0a+=0x1){_0x27186b=_0x46203e[_0x40d464][_0x0397('0x2d')][_0x302d0a][_0x0397('0x29')]({'plain':!![]});_0x207b61[_0x27186b['id']]=_0x27186b;}}_0x207b61=_['values'](_0x207b61);for(var _0x483a77=qs[_0x0397('0x21')](_0x1dbece[_0x0397('0x44')][_0x0397('0x21')]);_0x483a77<_0x207b61[_0x0397('0x4a')]&&_0x34a2e4[_0x0397('0x4a')]<qs[_0x0397('0x24')](_0x1dbece[_0x0397('0x44')][_0x0397('0x24')]);_0x483a77+=0x1){if(_0x207b61[_0x483a77]){_0x34a2e4[_0x0397('0x47')](_0x207b61[_0x483a77]);}}return{'count':_0x207b61[_0x0397('0x4a')],'rows':_0x34a2e4};}})['then'](respondWithResult(_0x4195a2,null))['catch'](handleError(_0x4195a2,null));};exports['destroy']=function(_0xd32f03,_0x1e344b){if(_0xd32f03['user']['id']==_0xd32f03[_0x0397('0x52')]['id']){return _0x1e344b['status'](0x1f4)[_0x0397('0x38')]({'message':_0x0397('0x129')});}return db['User'][_0x0397('0x33')]({'where':{'id':_0xd32f03[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x1e344b,null))[_0x0397('0x27')](removeEntity(_0x1e344b,null))[_0x0397('0x1d')](handleError(_0x1e344b,null));};exports[_0x0397('0x12a')]=function(_0x904bbf,_0x35667d){return db[_0x0397('0x43')]['find']({'where':{'id':_0x904bbf[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x35667d,null))['then'](function(_0x156e3f){if(_0x156e3f){return _0x156e3f['addChatInteractions'](_0x904bbf[_0x0397('0x5f')]['ids'],_['omit'](_0x904bbf[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{})[_0x0397('0xae')](function(){for(var _0x37aa22=0x0;_0x37aa22<_0x904bbf[_0x0397('0x5f')][_0x0397('0x61')][_0x0397('0x4a')];_0x37aa22+=0x1){socket[_0x0397('0xb0')](_0x0397('0x12b'),{'ChatInteractionId':Number(_0x904bbf[_0x0397('0x5f')][_0x0397('0x61')][_0x37aa22]),'UserId':Number(_0x904bbf['params']['id'])});}return _0x904bbf[_0x0397('0x5f')][_0x0397('0x61')];});}})[_0x0397('0x27')](respondWithResult(_0x35667d,null))[_0x0397('0x1d')](handleError(_0x35667d,null));};exports['removeChatInteractions']=function(_0x596330,_0x3bf981){return db[_0x0397('0x43')]['find']({'where':{'id':_0x596330[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x3bf981,null))[_0x0397('0x27')](function(_0x25115f){if(_0x25115f){return _0x25115f[_0x0397('0x12c')](_0x596330[_0x0397('0x44')][_0x0397('0x61')])['then'](function(){if(_[_0x0397('0x12d')](_0x596330[_0x0397('0x44')][_0x0397('0x61')])){for(var _0x39b80a=0x0;_0x39b80a<_0x596330[_0x0397('0x44')][_0x0397('0x61')][_0x0397('0x4a')];_0x39b80a+=0x1){socket[_0x0397('0xb0')](_0x0397('0x12e'),{'ChatInteractionId':Number(_0x596330[_0x0397('0x44')][_0x0397('0x61')][_0x39b80a]),'UserId':Number(_0x596330[_0x0397('0x52')]['id'])});}}else{socket[_0x0397('0xb0')](_0x0397('0x12e'),{'ChatInteractionId':Number(_0x596330['query']['ids']),'UserId':Number(_0x596330[_0x0397('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x3bf981,null))[_0x0397('0x1d')](handleError(_0x3bf981,null));};exports['addMailInteractions']=function(_0x560a1a,_0xf2adbe){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x560a1a['params']['id']}})['then'](handleEntityNotFound(_0xf2adbe,null))[_0x0397('0x27')](function(_0x4665fc){if(_0x4665fc){return _0x4665fc[_0x0397('0x12f')](_0x560a1a[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x560a1a[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{})[_0x0397('0xae')](function(){for(var _0x59f4df=0x0;_0x59f4df<_0x560a1a[_0x0397('0x5f')][_0x0397('0x61')][_0x0397('0x4a')];_0x59f4df+=0x1){socket[_0x0397('0xb0')](_0x0397('0x130'),{'MailInteractionId':Number(_0x560a1a[_0x0397('0x5f')][_0x0397('0x61')][_0x59f4df]),'UserId':Number(_0x560a1a[_0x0397('0x52')]['id'])});}return _0x560a1a[_0x0397('0x5f')][_0x0397('0x61')];});}})[_0x0397('0x27')](respondWithResult(_0xf2adbe,null))[_0x0397('0x1d')](handleError(_0xf2adbe,null));};exports['removeMailInteractions']=function(_0x549932,_0x2a8922){return db['User']['find']({'where':{'id':_0x549932[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x2a8922,null))['then'](function(_0x556153){if(_0x556153){return _0x556153[_0x0397('0x131')](_0x549932[_0x0397('0x44')][_0x0397('0x61')])[_0x0397('0x27')](function(){if(_['isArray'](_0x549932[_0x0397('0x44')][_0x0397('0x61')])){for(var _0x7c2aa7=0x0;_0x7c2aa7<_0x549932[_0x0397('0x44')]['ids'][_0x0397('0x4a')];_0x7c2aa7+=0x1){socket['emit'](_0x0397('0x132'),{'MailInteractionId':Number(_0x549932['query']['ids'][_0x7c2aa7]),'UserId':Number(_0x549932[_0x0397('0x52')]['id'])});}}else{socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x549932['query'][_0x0397('0x61')]),'UserId':Number(_0x549932[_0x0397('0x52')]['id'])});}});}})[_0x0397('0x27')](respondWithStatusCode(_0x2a8922,null))['catch'](handleError(_0x2a8922,null));};exports['addFaxInteractions']=function(_0x30d5dc,_0x1c92ef){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x30d5dc[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x1c92ef,null))[_0x0397('0x27')](function(_0x4e182a){if(_0x4e182a){return _0x4e182a['addFaxInteractions'](_0x30d5dc['body'][_0x0397('0x61')],_['omit'](_0x30d5dc[_0x0397('0x5f')],['ids','id'])||{})[_0x0397('0xae')](function(){for(var _0x7c2406=0x0;_0x7c2406<_0x30d5dc['body'][_0x0397('0x61')][_0x0397('0x4a')];_0x7c2406+=0x1){socket['emit']('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x30d5dc[_0x0397('0x5f')]['ids'][_0x7c2406]),'UserId':Number(_0x30d5dc[_0x0397('0x52')]['id'])});}return _0x30d5dc[_0x0397('0x5f')][_0x0397('0x61')];});}})['then'](respondWithResult(_0x1c92ef,null))[_0x0397('0x1d')](handleError(_0x1c92ef,null));};exports[_0x0397('0x133')]=function(_0x366771,_0x41dae0){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x366771[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x41dae0,null))['then'](function(_0x463e14){if(_0x463e14){return _0x463e14[_0x0397('0x133')](_0x366771[_0x0397('0x44')]['ids'])[_0x0397('0x27')](function(){if(_[_0x0397('0x12d')](_0x366771[_0x0397('0x44')][_0x0397('0x61')])){for(var _0x12dae8=0x0;_0x12dae8<_0x366771[_0x0397('0x44')][_0x0397('0x61')]['length'];_0x12dae8+=0x1){socket[_0x0397('0xb0')](_0x0397('0x134'),{'FaxInteractionId':Number(_0x366771['query'][_0x0397('0x61')][_0x12dae8]),'UserId':Number(_0x366771['params']['id'])});}}else{socket[_0x0397('0xb0')](_0x0397('0x134'),{'FaxInteractionId':Number(_0x366771[_0x0397('0x44')][_0x0397('0x61')]),'UserId':Number(_0x366771[_0x0397('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x41dae0,null))['catch'](handleError(_0x41dae0,null));};exports['addSmsInteractions']=function(_0x502005,_0x255d87){return db['User'][_0x0397('0x33')]({'where':{'id':_0x502005['params']['id']}})['then'](handleEntityNotFound(_0x255d87,null))[_0x0397('0x27')](function(_0x959352){if(_0x959352){return _0x959352[_0x0397('0x135')](_0x502005[_0x0397('0x5f')]['ids'],_[_0x0397('0x62')](_0x502005[_0x0397('0x5f')],['ids','id'])||{})[_0x0397('0xae')](function(){for(var _0x36b6ae=0x0;_0x36b6ae<_0x502005[_0x0397('0x5f')]['ids'][_0x0397('0x4a')];_0x36b6ae+=0x1){socket[_0x0397('0xb0')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x502005['body']['ids'][_0x36b6ae]),'UserId':Number(_0x502005[_0x0397('0x52')]['id'])});}return _0x502005[_0x0397('0x5f')][_0x0397('0x61')];});}})[_0x0397('0x27')](respondWithResult(_0x255d87,null))[_0x0397('0x1d')](handleError(_0x255d87,null));};exports[_0x0397('0x136')]=function(_0x357015,_0xa8cf38){return db[_0x0397('0x43')]['find']({'where':{'id':_0x357015['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0xa8cf38,null))['then'](function(_0x32ed29){if(_0x32ed29){return _0x32ed29[_0x0397('0x136')](_0x357015[_0x0397('0x44')]['ids'])[_0x0397('0x27')](function(){if(_[_0x0397('0x12d')](_0x357015[_0x0397('0x44')][_0x0397('0x61')])){for(var _0x1ae808=0x0;_0x1ae808<_0x357015[_0x0397('0x44')]['ids']['length'];_0x1ae808+=0x1){socket[_0x0397('0xb0')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x357015[_0x0397('0x44')][_0x0397('0x61')][_0x1ae808]),'UserId':Number(_0x357015[_0x0397('0x52')]['id'])});}}else{socket[_0x0397('0xb0')](_0x0397('0x137'),{'SmsInteractionId':Number(_0x357015['query']['ids']),'UserId':Number(_0x357015[_0x0397('0x52')]['id'])});}});}})[_0x0397('0x27')](respondWithStatusCode(_0xa8cf38,null))[_0x0397('0x1d')](handleError(_0xa8cf38,null));};exports['addOpenchannelInteractions']=function(_0x27d5cc,_0x18490c){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x27d5cc[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x18490c,null))[_0x0397('0x27')](function(_0x1d1923){if(_0x1d1923){return _0x1d1923[_0x0397('0x138')](_0x27d5cc['body'][_0x0397('0x61')],_[_0x0397('0x62')](_0x27d5cc[_0x0397('0x5f')],['ids','id'])||{})[_0x0397('0xae')](function(){for(var _0x405978=0x0;_0x405978<_0x27d5cc[_0x0397('0x5f')]['ids'][_0x0397('0x4a')];_0x405978+=0x1){socket['emit'](_0x0397('0x139'),{'OpenchannelInteractionId':Number(_0x27d5cc[_0x0397('0x5f')][_0x0397('0x61')][_0x405978]),'UserId':Number(_0x27d5cc[_0x0397('0x52')]['id'])});}return _0x27d5cc[_0x0397('0x5f')][_0x0397('0x61')];});}})[_0x0397('0x27')](respondWithResult(_0x18490c,null))[_0x0397('0x1d')](handleError(_0x18490c,null));};exports[_0x0397('0x13a')]=function(_0x1831e9,_0x25e540){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x1831e9[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x25e540,null))['then'](function(_0x5e73d0){if(_0x5e73d0){return _0x5e73d0[_0x0397('0x13a')](_0x1831e9['query'][_0x0397('0x61')])[_0x0397('0x27')](function(){if(_[_0x0397('0x12d')](_0x1831e9[_0x0397('0x44')][_0x0397('0x61')])){for(var _0x1a6b20=0x0;_0x1a6b20<_0x1831e9['query']['ids'][_0x0397('0x4a')];_0x1a6b20+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1831e9[_0x0397('0x44')][_0x0397('0x61')][_0x1a6b20]),'UserId':Number(_0x1831e9[_0x0397('0x52')]['id'])});}}else{socket[_0x0397('0xb0')](_0x0397('0x13b'),{'OpenchannelInteractionId':Number(_0x1831e9[_0x0397('0x44')]['ids']),'UserId':Number(_0x1831e9['params']['id'])});}});}})[_0x0397('0x27')](respondWithStatusCode(_0x25e540,null))['catch'](handleError(_0x25e540,null));};exports[_0x0397('0x13c')]=function(_0x41114a,_0x1f152b){return db[_0x0397('0x43')]['find']({'where':{'id':_0x41114a[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x1f152b,null))[_0x0397('0x27')](function(_0x2f5aa4){if(_0x2f5aa4){return _0x2f5aa4[_0x0397('0x13c')](_0x41114a[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x41114a['body'],['ids','id'])||{})[_0x0397('0xae')](function(){for(var _0x2ba1b5=0x0;_0x2ba1b5<_0x41114a[_0x0397('0x5f')][_0x0397('0x61')][_0x0397('0x4a')];_0x2ba1b5+=0x1){socket[_0x0397('0xb0')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x41114a[_0x0397('0x5f')][_0x0397('0x61')][_0x2ba1b5]),'UserId':Number(_0x41114a[_0x0397('0x52')]['id'])});}return _0x41114a['body'][_0x0397('0x61')];});}})['then'](respondWithResult(_0x1f152b,null))[_0x0397('0x1d')](handleError(_0x1f152b,null));};exports['removeWhatsappInteractions']=function(_0x551a8f,_0x320f0c){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x551a8f[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x320f0c,null))[_0x0397('0x27')](function(_0x5746c4){if(_0x5746c4){return _0x5746c4[_0x0397('0x13d')](_0x551a8f[_0x0397('0x44')]['ids']);}})['then'](respondWithStatusCode(_0x320f0c,null))[_0x0397('0x1d')](handleError(_0x320f0c,null));};exports[_0x0397('0x13e')]=function(_0x3fd180,_0x537f15){var _0x1403bf={};var _0x956c18={};var _0x5a3237;var _0x2ea333;return db['User'][_0x0397('0xd2')]({'where':{'id':_0x3fd180[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x537f15,null))[_0x0397('0x27')](function(_0x46d81a){if(_0x46d81a){_0x5a3237=_0x46d81a;_0x956c18['model']=_[_0x0397('0x55')](db['VoicePrefix']['rawAttributes']);_0x956c18[_0x0397('0x44')]=_['keys'](_0x3fd180['query']);_0x956c18[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x956c18['model'],_0x956c18[_0x0397('0x44')]);_0x1403bf[_0x0397('0x46')]=_[_0x0397('0x57')](_0x956c18[_0x0397('0x53')],qs[_0x0397('0x58')](_0x3fd180[_0x0397('0x44')]['fields']));_0x1403bf[_0x0397('0x46')]=_0x1403bf[_0x0397('0x46')]['length']?_0x1403bf[_0x0397('0x46')]:_0x956c18[_0x0397('0x53')];_0x1403bf[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x3fd180[_0x0397('0x44')][_0x0397('0xd5')]);_0x1403bf['where']=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x3fd180[_0x0397('0x44')],_0x956c18['filters']));if(_0x3fd180[_0x0397('0x44')]['filter']){_0x1403bf[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x1403bf['where'],{'$or':_[_0x0397('0x3b')](_0x1403bf[_0x0397('0x46')],function(_0x2323d4){var _0x3bb24b={};_0x3bb24b[_0x2323d4]={'$like':'%'+_0x3fd180[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x3bb24b;})});}_0x1403bf=_[_0x0397('0x5a')]({},_0x1403bf,_0x3fd180[_0x0397('0x5b')]);return _0x5a3237[_0x0397('0x13e')](_0x1403bf);}})['then'](function(_0x311b3d){if(_0x311b3d){_0x2ea333=_0x311b3d[_0x0397('0x4a')];if(!_0x3fd180[_0x0397('0x44')]['hasOwnProperty']('nolimit')){_0x1403bf['limit']=qs[_0x0397('0x24')](_0x3fd180[_0x0397('0x44')][_0x0397('0x24')]);_0x1403bf[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x3fd180[_0x0397('0x44')][_0x0397('0x21')]);}return _0x5a3237[_0x0397('0x13e')](_0x1403bf);}})['then'](function(_0x57fc74){if(_0x57fc74){return _0x57fc74?{'count':_0x2ea333,'rows':_0x57fc74}:null;}})[_0x0397('0x27')](respondWithResult(_0x537f15,null))[_0x0397('0x1d')](handleError(_0x537f15,null));};exports[_0x0397('0x13f')]=function(_0x5c7580,_0x34d599){var _0xeae133={};var _0x2c3522={};var _0x5423a8;var _0x3e665d;return db[_0x0397('0x43')]['findOne']({'where':{'id':_0x5c7580['params']['id']}})['then'](handleEntityNotFound(_0x34d599,null))['then'](function(_0x3d85a7){if(_0x3d85a7){_0x5423a8=_0x3d85a7;_0x2c3522[_0x0397('0x53')]=_[_0x0397('0x55')](db['FaxAccount'][_0x0397('0x3a')]);_0x2c3522['query']=_[_0x0397('0x55')](_0x5c7580['query']);_0x2c3522[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x2c3522[_0x0397('0x53')],_0x2c3522[_0x0397('0x44')]);_0xeae133[_0x0397('0x46')]=_['intersection'](_0x2c3522[_0x0397('0x53')],qs[_0x0397('0x58')](_0x5c7580[_0x0397('0x44')][_0x0397('0x58')]));_0xeae133[_0x0397('0x46')]=_0xeae133['attributes'][_0x0397('0x4a')]?_0xeae133[_0x0397('0x46')]:_0x2c3522[_0x0397('0x53')];_0xeae133[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x5c7580['query'][_0x0397('0xd5')]);_0xeae133[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x5c7580[_0x0397('0x44')],_0x2c3522['filters']));if(_0x5c7580[_0x0397('0x44')][_0x0397('0x3f')]){_0xeae133[_0x0397('0x42')]=_[_0x0397('0x5a')](_0xeae133[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0xeae133[_0x0397('0x46')],function(_0x2a58bf){var _0x525df7={};_0x525df7[_0x2a58bf]={'$like':'%'+_0x5c7580['query'][_0x0397('0x3f')]+'%'};return _0x525df7;})});}_0xeae133=_[_0x0397('0x5a')]({},_0xeae133,_0x5c7580['options']);return _0x5423a8['getFaxAccounts'](_0xeae133);}})[_0x0397('0x27')](function(_0x1e2472){if(_0x1e2472){_0x3e665d=_0x1e2472[_0x0397('0x4a')];if(!_0x5c7580[_0x0397('0x44')]['hasOwnProperty'](_0x0397('0xd9'))){_0xeae133['limit']=qs['limit'](_0x5c7580[_0x0397('0x44')][_0x0397('0x24')]);_0xeae133[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x5c7580[_0x0397('0x44')][_0x0397('0x21')]);}return _0x5423a8['getFaxAccounts'](_0xeae133);}})[_0x0397('0x27')](function(_0x264361){if(_0x264361){return _0x264361?{'count':_0x3e665d,'rows':_0x264361}:null;}})[_0x0397('0x27')](respondWithResult(_0x34d599,null))['catch'](handleError(_0x34d599,null));};exports['addFaxAccounts']=function(_0x2390fd,_0x193485){return db['User']['find']({'where':{'id':_0x2390fd[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x193485,null))[_0x0397('0x27')](function(_0x564633){if(_0x564633){return _0x564633[_0x0397('0x140')](_0x2390fd[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x2390fd[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x193485,null))[_0x0397('0x1d')](handleError(_0x193485,null));};exports['removeFaxAccounts']=function(_0x5b110d,_0x275b25){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x5b110d[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x275b25,null))[_0x0397('0x27')](function(_0x1b173b){if(_0x1b173b){return _0x1b173b[_0x0397('0x141')](_0x5b110d['query'][_0x0397('0x61')]);}})[_0x0397('0x27')](respondWithStatusCode(_0x275b25,null))['catch'](handleError(_0x275b25,null));};exports[_0x0397('0x142')]=function(_0x1c08fa,_0x132558){var _0x5f1fe4={};var _0x2f2020={};var _0x33c232;var _0x2ba6ff;return db['User'][_0x0397('0xd2')]({'where':{'id':_0x1c08fa['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x132558,null))[_0x0397('0x27')](function(_0x490166){if(_0x490166){_0x33c232=_0x490166;_0x2f2020[_0x0397('0x53')]=_['keys'](db['MailAccount'][_0x0397('0x3a')]);_0x2f2020[_0x0397('0x44')]=_[_0x0397('0x55')](_0x1c08fa[_0x0397('0x44')]);_0x2f2020[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x2f2020[_0x0397('0x53')],_0x2f2020[_0x0397('0x44')]);_0x5f1fe4['attributes']=_[_0x0397('0x57')](_0x2f2020[_0x0397('0x53')],qs[_0x0397('0x58')](_0x1c08fa[_0x0397('0x44')][_0x0397('0x58')]));_0x5f1fe4[_0x0397('0x46')]=_0x5f1fe4[_0x0397('0x46')][_0x0397('0x4a')]?_0x5f1fe4[_0x0397('0x46')]:_0x2f2020['model'];_0x5f1fe4[_0x0397('0xd4')]=qs['sort'](_0x1c08fa[_0x0397('0x44')][_0x0397('0xd5')]);_0x5f1fe4['where']=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x1c08fa[_0x0397('0x44')],_0x2f2020[_0x0397('0xd3')]));if(_0x1c08fa[_0x0397('0x44')][_0x0397('0x3f')]){_0x5f1fe4[_0x0397('0x42')]=_['merge'](_0x5f1fe4[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x5f1fe4['attributes'],function(_0x3386dc){var _0x4b3900={};_0x4b3900[_0x3386dc]={'$like':'%'+_0x1c08fa['query'][_0x0397('0x3f')]+'%'};return _0x4b3900;})});}_0x5f1fe4=_[_0x0397('0x5a')]({},_0x5f1fe4,_0x1c08fa['options']);return _0x33c232[_0x0397('0x142')](_0x5f1fe4);}})['then'](function(_0x4fa125){if(_0x4fa125){_0x2ba6ff=_0x4fa125['length'];if(!_0x1c08fa[_0x0397('0x44')][_0x0397('0xd6')]('nolimit')){_0x5f1fe4[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x1c08fa[_0x0397('0x44')][_0x0397('0x24')]);_0x5f1fe4[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x1c08fa['query'][_0x0397('0x21')]);}return _0x33c232[_0x0397('0x142')](_0x5f1fe4);}})[_0x0397('0x27')](function(_0x45b734){if(_0x45b734){return _0x45b734?{'count':_0x2ba6ff,'rows':_0x45b734}:null;}})[_0x0397('0x27')](respondWithResult(_0x132558,null))[_0x0397('0x1d')](handleError(_0x132558,null));};exports[_0x0397('0x143')]=function(_0x4b0ac8,_0x667036){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x4b0ac8[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x667036,null))[_0x0397('0x27')](function(_0x1c6b07){if(_0x1c6b07){return _0x1c6b07['addMailAccounts'](_0x4b0ac8[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x4b0ac8['body'],[_0x0397('0x61'),'id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x667036,null))[_0x0397('0x1d')](handleError(_0x667036,null));};exports[_0x0397('0x144')]=function(_0x2194fe,_0x1f0d31){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x2194fe['params']['id']}})['then'](handleEntityNotFound(_0x1f0d31,null))[_0x0397('0x27')](function(_0x56a3f7){if(_0x56a3f7){return _0x56a3f7[_0x0397('0x144')](_0x2194fe[_0x0397('0x44')][_0x0397('0x61')]);}})[_0x0397('0x27')](respondWithStatusCode(_0x1f0d31,null))[_0x0397('0x1d')](handleError(_0x1f0d31,null));};exports[_0x0397('0x145')]=function(_0x28deee,_0x383d01){var _0xde1e10={};var _0x481909={};var _0x1c7c30;var _0x4f3f1c;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x28deee[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x383d01,null))[_0x0397('0x27')](function(_0x4f5993){if(_0x4f5993){_0x1c7c30=_0x4f5993;_0x481909[_0x0397('0x53')]=_[_0x0397('0x55')](db['OpenchannelAccount']['rawAttributes']);_0x481909[_0x0397('0x44')]=_['keys'](_0x28deee[_0x0397('0x44')]);_0x481909[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x481909[_0x0397('0x53')],_0x481909[_0x0397('0x44')]);_0xde1e10['attributes']=_[_0x0397('0x57')](_0x481909['model'],qs[_0x0397('0x58')](_0x28deee[_0x0397('0x44')]['fields']));_0xde1e10[_0x0397('0x46')]=_0xde1e10[_0x0397('0x46')][_0x0397('0x4a')]?_0xde1e10[_0x0397('0x46')]:_0x481909['model'];_0xde1e10[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x28deee[_0x0397('0x44')][_0x0397('0xd5')]);_0xde1e10[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x28deee['query'],_0x481909['filters']));if(_0x28deee[_0x0397('0x44')][_0x0397('0x3f')]){_0xde1e10[_0x0397('0x42')]=_[_0x0397('0x5a')](_0xde1e10[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0xde1e10['attributes'],function(_0x2f8c05){var _0x5aaed7={};_0x5aaed7[_0x2f8c05]={'$like':'%'+_0x28deee['query'][_0x0397('0x3f')]+'%'};return _0x5aaed7;})});}_0xde1e10=_[_0x0397('0x5a')]({},_0xde1e10,_0x28deee[_0x0397('0x5b')]);return _0x1c7c30[_0x0397('0x145')](_0xde1e10);}})[_0x0397('0x27')](function(_0x32256b){if(_0x32256b){_0x4f3f1c=_0x32256b[_0x0397('0x4a')];if(!_0x28deee[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0xde1e10[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x28deee[_0x0397('0x44')][_0x0397('0x24')]);_0xde1e10[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x28deee['query'][_0x0397('0x21')]);}return _0x1c7c30[_0x0397('0x145')](_0xde1e10);}})['then'](function(_0x444b0f){if(_0x444b0f){return _0x444b0f?{'count':_0x4f3f1c,'rows':_0x444b0f}:null;}})['then'](respondWithResult(_0x383d01,null))[_0x0397('0x1d')](handleError(_0x383d01,null));};exports[_0x0397('0x146')]=function(_0x1ec88c,_0x566e48){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x1ec88c['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x566e48,null))[_0x0397('0x27')](function(_0x503e1b){if(_0x503e1b){return _0x503e1b[_0x0397('0x146')](_0x1ec88c[_0x0397('0x5f')][_0x0397('0x61')],_[_0x0397('0x62')](_0x1ec88c['body'],['ids','id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x566e48,null))[_0x0397('0x1d')](handleError(_0x566e48,null));};exports['removeOpenchannelAccounts']=function(_0x417883,_0x41cf05){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x417883[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x41cf05,null))[_0x0397('0x27')](function(_0x19a1ff){if(_0x19a1ff){return _0x19a1ff[_0x0397('0x147')](_0x417883[_0x0397('0x44')][_0x0397('0x61')]);}})[_0x0397('0x27')](respondWithStatusCode(_0x41cf05,null))[_0x0397('0x1d')](handleError(_0x41cf05,null));};exports[_0x0397('0x148')]=function(_0x1dcd7b,_0x1f0f16){var _0x273fe7={};var _0x27e309={};var _0x3d2131;var _0x526320;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x1dcd7b[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x1f0f16,null))[_0x0397('0x27')](function(_0x206180){if(_0x206180){_0x3d2131=_0x206180;_0x27e309[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0x149')]['rawAttributes']);_0x27e309[_0x0397('0x44')]=_['keys'](_0x1dcd7b[_0x0397('0x44')]);_0x27e309[_0x0397('0xd3')]=_['intersection'](_0x27e309[_0x0397('0x53')],_0x27e309[_0x0397('0x44')]);_0x273fe7[_0x0397('0x46')]=_[_0x0397('0x57')](_0x27e309[_0x0397('0x53')],qs[_0x0397('0x58')](_0x1dcd7b[_0x0397('0x44')][_0x0397('0x58')]));_0x273fe7[_0x0397('0x46')]=_0x273fe7[_0x0397('0x46')]['length']?_0x273fe7[_0x0397('0x46')]:_0x27e309[_0x0397('0x53')];_0x273fe7[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x1dcd7b[_0x0397('0x44')][_0x0397('0xd5')]);_0x273fe7[_0x0397('0x42')]=qs['filters'](_[_0x0397('0xdb')](_0x1dcd7b[_0x0397('0x44')],_0x27e309['filters']));if(_0x1dcd7b[_0x0397('0x44')][_0x0397('0x3f')]){_0x273fe7[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x273fe7['where'],{'$or':_[_0x0397('0x3b')](_0x273fe7[_0x0397('0x46')],function(_0x5a54e6){var _0x5d4a03={};_0x5d4a03[_0x5a54e6]={'$like':'%'+_0x1dcd7b['query']['filter']+'%'};return _0x5d4a03;})});}_0x273fe7=_['merge']({},_0x273fe7,_0x1dcd7b['options']);return _0x3d2131[_0x0397('0x148')](_0x273fe7);}})[_0x0397('0x27')](function(_0x4e97a9){if(_0x4e97a9){_0x526320=_0x4e97a9[_0x0397('0x4a')];if(!_0x1dcd7b['query'][_0x0397('0xd6')](_0x0397('0xd9'))){_0x273fe7['limit']=qs[_0x0397('0x24')](_0x1dcd7b[_0x0397('0x44')][_0x0397('0x24')]);_0x273fe7[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x1dcd7b[_0x0397('0x44')][_0x0397('0x21')]);}return _0x3d2131['getSmsAccounts'](_0x273fe7);}})[_0x0397('0x27')](function(_0x3e9d90){if(_0x3e9d90){return _0x3e9d90?{'count':_0x526320,'rows':_0x3e9d90}:null;}})['then'](respondWithResult(_0x1f0f16,null))[_0x0397('0x1d')](handleError(_0x1f0f16,null));};exports[_0x0397('0x14a')]=function(_0x19199c,_0x1ef422){return db[_0x0397('0x43')]['find']({'where':{'id':_0x19199c[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x1ef422,null))[_0x0397('0x27')](function(_0xad7ca0){if(_0xad7ca0){return _0xad7ca0['addSmsAccounts'](_0x19199c['body'][_0x0397('0x61')],_[_0x0397('0x62')](_0x19199c['body'],['ids','id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x1ef422,null))[_0x0397('0x1d')](handleError(_0x1ef422,null));};exports[_0x0397('0x14b')]=function(_0x1f1f69,_0x4ba231){return db[_0x0397('0x43')]['find']({'where':{'id':_0x1f1f69[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x4ba231,null))[_0x0397('0x27')](function(_0x5a05aa){if(_0x5a05aa){return _0x5a05aa[_0x0397('0x14b')](_0x1f1f69['query'][_0x0397('0x61')]);}})[_0x0397('0x27')](respondWithStatusCode(_0x4ba231,null))[_0x0397('0x1d')](handleError(_0x4ba231,null));};exports[_0x0397('0x14c')]=function(_0x29033b,_0x35814c){var _0xaf1ca={};var _0x4d98c2={};var _0x52f0d2;var _0x2a39bd;return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x29033b[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x35814c,null))[_0x0397('0x27')](function(_0x18568f){if(_0x18568f){_0x52f0d2=_0x18568f;_0x4d98c2[_0x0397('0x53')]=_[_0x0397('0x55')](db[_0x0397('0x14d')]['rawAttributes']);_0x4d98c2[_0x0397('0x44')]=_[_0x0397('0x55')](_0x29033b[_0x0397('0x44')]);_0x4d98c2['filters']=_['intersection'](_0x4d98c2[_0x0397('0x53')],_0x4d98c2[_0x0397('0x44')]);_0xaf1ca['attributes']=_[_0x0397('0x57')](_0x4d98c2[_0x0397('0x53')],qs[_0x0397('0x58')](_0x29033b['query'][_0x0397('0x58')]));_0xaf1ca[_0x0397('0x46')]=_0xaf1ca[_0x0397('0x46')][_0x0397('0x4a')]?_0xaf1ca[_0x0397('0x46')]:_0x4d98c2[_0x0397('0x53')];_0xaf1ca[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x29033b['query'][_0x0397('0xd5')]);_0xaf1ca[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x29033b[_0x0397('0x44')],_0x4d98c2[_0x0397('0xd3')]));if(_0x29033b[_0x0397('0x44')][_0x0397('0x3f')]){_0xaf1ca['where']=_[_0x0397('0x5a')](_0xaf1ca['where'],{'$or':_[_0x0397('0x3b')](_0xaf1ca[_0x0397('0x46')],function(_0x212eec){var _0x5cd8cc={};_0x5cd8cc[_0x212eec]={'$like':'%'+_0x29033b[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x5cd8cc;})});}_0xaf1ca=_[_0x0397('0x5a')]({},_0xaf1ca,_0x29033b[_0x0397('0x5b')]);return _0x52f0d2[_0x0397('0x14c')](_0xaf1ca);}})[_0x0397('0x27')](function(_0x1cefa2){if(_0x1cefa2){_0x2a39bd=_0x1cefa2[_0x0397('0x4a')];if(!_0x29033b[_0x0397('0x44')]['hasOwnProperty']('nolimit')){_0xaf1ca['limit']=qs[_0x0397('0x24')](_0x29033b[_0x0397('0x44')][_0x0397('0x24')]);_0xaf1ca['offset']=qs['offset'](_0x29033b['query'][_0x0397('0x21')]);}return _0x52f0d2[_0x0397('0x14c')](_0xaf1ca);}})[_0x0397('0x27')](function(_0x3059c6){if(_0x3059c6){return _0x3059c6?{'count':_0x2a39bd,'rows':_0x3059c6}:null;}})[_0x0397('0x27')](respondWithResult(_0x35814c,null))[_0x0397('0x1d')](handleError(_0x35814c,null));};exports[_0x0397('0x14e')]=function(_0x3551b7,_0x46b2c4){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x3551b7['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x46b2c4,null))[_0x0397('0x27')](function(_0x595ee4){if(_0x595ee4){return _0x595ee4[_0x0397('0x14e')](_0x3551b7[_0x0397('0x5f')][_0x0397('0x61')],_['omit'](_0x3551b7[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x46b2c4,null))[_0x0397('0x1d')](handleError(_0x46b2c4,null));};exports[_0x0397('0x14f')]=function(_0x40d66e,_0x33aeb1){return db['User'][_0x0397('0x33')]({'where':{'id':_0x40d66e['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x33aeb1,null))[_0x0397('0x27')](function(_0x511b29){if(_0x511b29){return _0x511b29[_0x0397('0x14f')](_0x40d66e['query'][_0x0397('0x61')]);}})[_0x0397('0x27')](respondWithStatusCode(_0x33aeb1,null))[_0x0397('0x1d')](handleError(_0x33aeb1,null));};exports[_0x0397('0x150')]=function(_0x4450aa,_0x41d78f){var _0x45ac78={};var _0x450393={};var _0x420bc5;var _0x3aa8e1;return db[_0x0397('0x43')]['findOne']({'where':{'id':_0x4450aa[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x41d78f,null))[_0x0397('0x27')](function(_0x5a6dc3){if(_0x5a6dc3){_0x420bc5=_0x5a6dc3;_0x450393['model']=_[_0x0397('0x55')](db[_0x0397('0x151')][_0x0397('0x3a')]);_0x450393[_0x0397('0x44')]=_[_0x0397('0x55')](_0x4450aa[_0x0397('0x44')]);_0x450393['filters']=_[_0x0397('0x57')](_0x450393[_0x0397('0x53')],_0x450393[_0x0397('0x44')]);_0x45ac78[_0x0397('0x46')]=_['intersection'](_0x450393[_0x0397('0x53')],qs[_0x0397('0x58')](_0x4450aa[_0x0397('0x44')][_0x0397('0x58')]));_0x45ac78[_0x0397('0x46')]=_0x45ac78[_0x0397('0x46')]['length']?_0x45ac78['attributes']:_0x450393[_0x0397('0x53')];_0x45ac78[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x4450aa['query']['sort']);_0x45ac78[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x4450aa['query'],_0x450393[_0x0397('0xd3')]));if(_0x4450aa['query'][_0x0397('0x3f')]){_0x45ac78[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x45ac78[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x45ac78[_0x0397('0x46')],function(_0x194902){var _0x294cdc={};_0x294cdc[_0x194902]={'$like':'%'+_0x4450aa[_0x0397('0x44')][_0x0397('0x3f')]+'%'};return _0x294cdc;})});}_0x45ac78=_[_0x0397('0x5a')]({},_0x45ac78,_0x4450aa['options']);return _0x420bc5[_0x0397('0x150')](_0x45ac78);}})[_0x0397('0x27')](function(_0xcad9ba){if(_0xcad9ba){_0x3aa8e1=_0xcad9ba[_0x0397('0x4a')];if(!_0x4450aa[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x45ac78['limit']=qs[_0x0397('0x24')](_0x4450aa['query'][_0x0397('0x24')]);_0x45ac78[_0x0397('0x21')]=qs['offset'](_0x4450aa[_0x0397('0x44')][_0x0397('0x21')]);}return _0x420bc5[_0x0397('0x150')](_0x45ac78);}})[_0x0397('0x27')](function(_0x1bbd94){if(_0x1bbd94){return _0x1bbd94?{'count':_0x3aa8e1,'rows':_0x1bbd94}:null;}})[_0x0397('0x27')](respondWithResult(_0x41d78f,null))[_0x0397('0x1d')](handleError(_0x41d78f,null));};exports[_0x0397('0x152')]=function(_0xb4be9a,_0x26c374){return db['User'][_0x0397('0x33')]({'where':{'id':_0xb4be9a[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x26c374,null))[_0x0397('0x27')](function(_0x10ffe6){if(_0x10ffe6){return _0x10ffe6[_0x0397('0x152')](_0xb4be9a[_0x0397('0x5f')][_0x0397('0x61')],_['omit'](_0xb4be9a['body'],[_0x0397('0x61'),'id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x26c374,null))[_0x0397('0x1d')](handleError(_0x26c374,null));};exports['removeWhatsappAccounts']=function(_0x3a5284,_0x18f36f){return db[_0x0397('0x43')][_0x0397('0x33')]({'where':{'id':_0x3a5284[_0x0397('0x52')]['id']}})['then'](handleEntityNotFound(_0x18f36f,null))['then'](function(_0x19baf3){if(_0x19baf3){return _0x19baf3['removeWhatsappAccounts'](_0x3a5284[_0x0397('0x44')]['ids']);}})[_0x0397('0x27')](respondWithStatusCode(_0x18f36f,null))[_0x0397('0x1d')](handleError(_0x18f36f,null));};exports[_0x0397('0x153')]=function(_0x1782e2,_0x20633e){var _0x396c03={};var _0x368b03={};var _0xa9adde;var _0x45dbb0;return db[_0x0397('0x43')]['findOne']({'where':{'id':_0x1782e2['params']['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x20633e,null))[_0x0397('0x27')](function(_0x2dcb9c){if(_0x2dcb9c){_0xa9adde=_0x2dcb9c;_0x368b03[_0x0397('0x53')]=_['keys'](db[_0x0397('0x154')][_0x0397('0x3a')]);_0x368b03[_0x0397('0x44')]=_[_0x0397('0x55')](_0x1782e2['query']);_0x368b03[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x368b03['model'],_0x368b03['query']);_0x396c03[_0x0397('0x46')]=_[_0x0397('0x57')](_0x368b03['model'],qs[_0x0397('0x58')](_0x1782e2[_0x0397('0x44')][_0x0397('0x58')]));_0x396c03[_0x0397('0x46')]=_0x396c03['attributes'][_0x0397('0x4a')]?_0x396c03[_0x0397('0x46')]:_0x368b03[_0x0397('0x53')];_0x396c03[_0x0397('0xd4')]=qs['sort'](_0x1782e2[_0x0397('0x44')][_0x0397('0xd5')]);_0x396c03[_0x0397('0x42')]=qs[_0x0397('0xd3')](_[_0x0397('0xdb')](_0x1782e2[_0x0397('0x44')],_0x368b03['filters']));if(_0x1782e2[_0x0397('0x44')]['filter']){_0x396c03[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x396c03[_0x0397('0x42')],{'$or':_['map'](_0x396c03[_0x0397('0x46')],function(_0x536bc5){var _0x296ae6={};_0x296ae6[_0x536bc5]={'$like':'%'+_0x1782e2['query'][_0x0397('0x3f')]+'%'};return _0x296ae6;})});}_0x396c03=_[_0x0397('0x5a')]({},_0x396c03,_0x1782e2[_0x0397('0x5b')]);return _0xa9adde['getSquareProjects'](_0x396c03);}})[_0x0397('0x27')](function(_0x3d37ea){if(_0x3d37ea){_0x45dbb0=_0x3d37ea[_0x0397('0x4a')];if(!_0x1782e2[_0x0397('0x44')][_0x0397('0xd6')]('nolimit')){_0x396c03[_0x0397('0x24')]=qs['limit'](_0x1782e2[_0x0397('0x44')][_0x0397('0x24')]);_0x396c03[_0x0397('0x21')]=qs['offset'](_0x1782e2['query'][_0x0397('0x21')]);}return _0xa9adde[_0x0397('0x153')](_0x396c03);}})[_0x0397('0x27')](function(_0x58540f){if(_0x58540f){return _0x58540f?{'count':_0x45dbb0,'rows':_0x58540f}:null;}})[_0x0397('0x27')](respondWithResult(_0x20633e,null))['catch'](handleError(_0x20633e,null));};exports[_0x0397('0x155')]=function(_0x54e5ed,_0x57e01a){return db[_0x0397('0x43')]['find']({'where':{'id':_0x54e5ed[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x57e01a,null))[_0x0397('0x27')](function(_0x59a95e){if(_0x59a95e){return _0x59a95e['addSquareProjects'](_0x54e5ed[_0x0397('0x5f')]['ids'],_[_0x0397('0x62')](_0x54e5ed[_0x0397('0x5f')],[_0x0397('0x61'),'id'])||{});}})[_0x0397('0x27')](respondWithResult(_0x57e01a,null))[_0x0397('0x1d')](handleError(_0x57e01a,null));};exports[_0x0397('0x156')]=function(_0x44d9a4,_0x4cbc0e){return db['User'][_0x0397('0x33')]({'where':{'id':_0x44d9a4[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x4cbc0e,null))[_0x0397('0x27')](function(_0x218b4c){if(_0x218b4c){return _0x218b4c[_0x0397('0x156')](_0x44d9a4[_0x0397('0x44')][_0x0397('0x61')]);}})[_0x0397('0x27')](respondWithStatusCode(_0x4cbc0e,null))[_0x0397('0x1d')](handleError(_0x4cbc0e,null));};exports[_0x0397('0x157')]=function(_0x20a9d9,_0xd60be6){var _0x438f73={},_0x3cea43={},_0x5578f2={'count':0x0,'rows':[]};var _0x5359db=db[_0x0397('0x158')][_0x0397('0x3a')];_0x3cea43[_0x0397('0x53')]=_[_0x0397('0x55')](_0x5359db);_0x3cea43['query']=_['keys'](_0x20a9d9['query']);_0x3cea43[_0x0397('0xd3')]=_[_0x0397('0x57')](_0x3cea43[_0x0397('0x53')],_0x3cea43['query']);_0x3cea43[_0x0397('0xd3')]=_[_0x0397('0xfd')](_0x3cea43[_0x0397('0xd3')],['$and',_0x0397('0x159'),_0x0397('0x15a'),_0x0397('0x15b'),'$lt',_0x0397('0x15c'),_0x0397('0x15d'),_0x0397('0x15e'),_0x0397('0x15f'),'$between',_0x0397('0x160'),_0x0397('0x161'),_0x0397('0x162'),_0x0397('0x163'),_0x0397('0x164'),_0x0397('0x165'),_0x0397('0x166'),_0x0397('0x163'),'$overlap',_0x0397('0x167'),_0x0397('0x168'),_0x0397('0x169')]);_0x438f73['attributes']=_['intersection'](_0x3cea43[_0x0397('0x53')],qs[_0x0397('0x58')](_0x20a9d9[_0x0397('0x44')][_0x0397('0x58')]));_0x438f73[_0x0397('0x46')]=_0x438f73[_0x0397('0x46')][_0x0397('0x4a')]?_0x438f73['attributes']:_0x3cea43['model'];if(!_0x20a9d9[_0x0397('0x44')][_0x0397('0xd6')](_0x0397('0xd9'))){_0x438f73[_0x0397('0x24')]=qs[_0x0397('0x24')](_0x20a9d9['query'][_0x0397('0x24')]);_0x438f73[_0x0397('0x21')]=qs[_0x0397('0x21')](_0x20a9d9[_0x0397('0x44')][_0x0397('0x21')]);}_0x438f73[_0x0397('0xd4')]=qs[_0x0397('0xd5')](_0x20a9d9['query']['sort']);_0x438f73['where']=qs['filters'](_['pick'](_0x20a9d9[_0x0397('0x44')],_0x3cea43[_0x0397('0xd3')]));if(_0x20a9d9['query'][_0x0397('0x3f')]){_0x438f73[_0x0397('0x42')]=_[_0x0397('0x5a')](_0x438f73[_0x0397('0x42')],{'$or':_[_0x0397('0x3b')](_0x438f73['attributes'],function(_0x502397){var _0x1ea576={};_0x1ea576[_0x502397]={'$like':'%'+_0x20a9d9['query'][_0x0397('0x3f')]+'%'};return _0x1ea576;})});}_0x438f73['where']={'$and':[_0x438f73[_0x0397('0x42')],{'$or':[{'UserId':_0x20a9d9[_0x0397('0x52')]['id']},{'OwnerId':_0x20a9d9[_0x0397('0x52')]['id']}]}]};_0x438f73=_[_0x0397('0x5a')]({},_0x438f73,_0x20a9d9[_0x0397('0x5b')]);var _0x1594c5={'where':_0x438f73[_0x0397('0x42')]};return db[_0x0397('0x158')][_0x0397('0x23')](_0x1594c5)[_0x0397('0x27')](function(_0x1402c2){_0x5578f2['count']=_0x1402c2;if(_0x20a9d9[_0x0397('0x44')][_0x0397('0x45')]){_0x438f73[_0x0397('0x59')]=[{'attributes':['id',_0x0397('0x16a'),_0x0397('0x16b'),_0x0397('0xed')],'model':db[_0x0397('0x16c')],'as':_0x0397('0x16d')},{'attributes':['id',_0x0397('0x37'),_0x0397('0x16e')],'model':db['VoiceQueue'],'as':_0x0397('0xdc')}];}return db['CmHopper'][_0x0397('0x8f')](_0x438f73);})[_0x0397('0x27')](function(_0x431fe2){_0x5578f2[_0x0397('0x48')]=_0x431fe2;return _0x5578f2;})[_0x0397('0x27')](respondWithFilteredResult(_0xd60be6,_0x438f73))[_0x0397('0x1d')](handleError(_0xd60be6,null));};exports[_0x0397('0x16f')]=function(_0x35789e,_0x383727){if(!_[_0x0397('0x67')](_0x35789e[_0x0397('0x2c')]['id'])&&(_0x35789e['user']['role']==_0x0397('0x80')||_0x35789e['user'][_0x0397('0x2a')]==_0x0397('0x2c'))){return db[_0x0397('0x43')][_0x0397('0xd2')]({'where':{'id':_0x35789e['params']['id']},'raw':!![]})[_0x0397('0x27')](function(_0x3f8a3e){return authService[_0x0397('0x170')](_0x3f8a3e);})[_0x0397('0x27')](function(_0x23e172){if(_0x23e172){return _0x383727[_0x0397('0x1e')](0xc8)[_0x0397('0x20')]({'api_key':_0x23e172['token']});}else{return _0x383727['status'](0xcc)[_0x0397('0x20')]({'message':_0x0397('0x171')});}})[_0x0397('0x1d')](handleError(_0x383727,0x193));}else{return _0x383727[_0x0397('0x1e')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['createApiKey']=function(_0x59d46b,_0x405048){if(!_[_0x0397('0x67')](_0x59d46b['user']['id'])&&(_0x59d46b[_0x0397('0x2c')]['role']=='admin'||_0x59d46b[_0x0397('0x2c')]['role']==_0x0397('0x2c'))){return db['User'][_0x0397('0x33')]({'where':{'id':_0x59d46b[_0x0397('0x52')]['id']}})[_0x0397('0x27')](function(_0xfa0790){return authService['generateApiKey'](_0xfa0790);})[_0x0397('0x27')](function(_0x5bf12d){return db['User'][_0x0397('0x26')]({'apiKeyIat':_0x5bf12d[_0x0397('0x172')],'apiKeyNonce':_0x5bf12d[_0x0397('0x173')]},{'where':{'id':_0x59d46b[_0x0397('0x52')]['id']}})[_0x0397('0x27')](function(){return _0x405048[_0x0397('0x1e')](0xc8)[_0x0397('0x20')]({'api_key':_0x5bf12d['token']});});})[_0x0397('0x1d')](handleError(_0x405048,0x193));}else{return _0x405048['status'](0x191)['json']({'message':_0x0397('0x174')});}};exports[_0x0397('0x175')]=function(_0x4f2ee9,_0x5c8362){if(!_[_0x0397('0x67')](_0x4f2ee9['user']['id'])&&(_0x4f2ee9[_0x0397('0x2c')][_0x0397('0x2a')]==_0x0397('0x80')||_0x4f2ee9[_0x0397('0x2c')][_0x0397('0x2a')]=='user')){return db['User'][_0x0397('0x33')]({'where':{'id':_0x4f2ee9[_0x0397('0x52')]['id']}})[_0x0397('0x27')](handleEntityNotFound(_0x5c8362,null))['then'](function(_0x25135c){if(_0x25135c&&_0x25135c[_0x0397('0x176')]&&_0x25135c[_0x0397('0x177')])return _0x25135c;else throw{'message':_0x0397('0x178')};})[_0x0397('0x27')](function(_0x1a84d7){return db[_0x0397('0x43')][_0x0397('0x26')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4f2ee9[_0x0397('0x52')]['id']}});})[_0x0397('0x27')](respondWithStatusCode(_0x5c8362,0xc8))[_0x0397('0x1d')](handleError(_0x5c8362,0x193));}else{return _0x5c8362[_0x0397('0x1e')](0x191)[_0x0397('0x20')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['whoami']=function(_0x5a3b3f,_0x590341){var _0x4d8036=_0x5a3b3f['user'][_0x0397('0x29')]({'plain':!![]});if(!_0x4d8036){return _0x590341['status'](0x191)['send'](_0x0397('0x179'));}else{return _0x590341[_0x0397('0x1e')](0xc8)[_0x0397('0x20')](_0x4d8036);}};exports[_0x0397('0x17a')]=function(_0xd3033a,_0x19ef29){var _0x5ddae2={'offset':0x0},_0x557d66={'count':0x0,'rows':[]};Promise['resolve']()[_0x0397('0x27')](function(){if(!_0xd3033a[_0x0397('0x44')][_0x0397('0x3f')]&&!_0xd3033a['query'][_0x0397('0x17b')]&&!_0xd3033a[_0x0397('0x44')][_0x0397('0x17c')])return[];return Promise[_0x0397('0xfe')]()[_0x0397('0x27')](function(){var _0x5df07a=[];if(!_[_0x0397('0x90')](_0xd3033a[_0x0397('0x44')][_0x0397('0x17b')])){_0x5df07a[_0x0397('0x47')](db[_0x0397('0x112')][_0x0397('0x8f')]({'attributes':['id',_0x0397('0x37')],'where':{'id':_0xd3033a[_0x0397('0x44')][_0x0397('0x17b')]}}));}if(!_[_0x0397('0x90')](_0xd3033a[_0x0397('0x44')][_0x0397('0x17c')])){_0x5df07a['push'](db[_0x0397('0xb3')][_0x0397('0x8f')]({'attributes':['id','name'],'type':'inbound','where':{'id':_0xd3033a[_0x0397('0x44')][_0x0397('0x17c')]}}));}return Promise[_0x0397('0x5e')](_0x5df07a);})['then'](function(_0xd00b){var _0x210937=_[_0x0397('0x120')](_0xd00b)[_0x0397('0x3b')](function(_0x14d019){return _0x14d019[_0x0397('0x17d')]({'attributes':['id','name',_0x0397('0x63'),'online'],'raw':!![]});});return Promise['all'](_0x210937);})[_0x0397('0x27')](function(_0x50c88a){var _0x4dbc9d=_[_0x0397('0x120')](_0x50c88a);if(!_0xd3033a['query']['filter'])return _0x4dbc9d;if(_[_0x0397('0x90')](_0x4dbc9d)){return db[_0x0397('0x43')]['findAll']({'attributes':['id',_0x0397('0x37'),_0x0397('0x63'),_0x0397('0xa5')],'where':{'role':_0x0397('0x2e'),'$or':[db['sequelize'][_0x0397('0x42')](db[_0x0397('0x69')]['fn'](_0x0397('0x17e'),db[_0x0397('0x69')][_0x0397('0x17f')](_0x0397('0x37'))),{'$like':'%'+_0xd3033a[_0x0397('0x44')][_0x0397('0x3f')][_0x0397('0xab')]()+'%'}),{'internal':{'$like':'%'+_0xd3033a['query']['filter']+'%'}}]},'raw':!![]});}else{return _(_0x4dbc9d)['flatten']()[_0x0397('0x3f')](function(_0x223ea9){return _0x223ea9[_0x0397('0x37')][_0x0397('0xab')]()[_0x0397('0x32')](_0xd3033a[_0x0397('0x44')][_0x0397('0x3f')][_0x0397('0xab')]())||_0x223ea9[_0x0397('0x63')]['toString']()['includes'](_0xd3033a['query'][_0x0397('0x3f')]);})[_0x0397('0x31')]();}})[_0x0397('0x27')](function(_0x4a1995){var _0x16c5cf=_0x0397('0x37');var _0x4b4230=_0x0397('0x180');if(_0xd3033a[_0x0397('0x44')][_0x0397('0xd5')]){var _0x4b4230=_0xd3033a[_0x0397('0x44')][_0x0397('0xd5')][0x0]==='-'?_0x0397('0x181'):_0x0397('0x180');var _0x16c5cf=_0x4b4230===_0x0397('0x180')?_0xd3033a[_0x0397('0x44')][_0x0397('0xd5')]:_0xd3033a[_0x0397('0x44')][_0x0397('0xd5')][_0x0397('0x182')](0x1);}return _(_0x4a1995)['uniqBy']('id')[_0x0397('0x183')]([function(_0x5d29bc){return _0x16c5cf===_0x0397('0x37')?_0x5d29bc[_0x16c5cf][_0x0397('0xab')]():_0x5d29bc[_0x16c5cf];}],[_0x4b4230])[_0x0397('0x3b')](function(_0x3e4020){return _[_0x0397('0xdb')](_0x3e4020,['id',_0x0397('0x37'),_0x0397('0x63'),_0x0397('0xa5')]);})[_0x0397('0x31')]();})[_0x0397('0x27')](function(_0x11f275){return client[_0x0397('0x14')]('Agents',_0xd3033a)[_0x0397('0x27')](function(_0x392704){if(_0x392704[_0x0397('0x18')])throw new Error(_0x0397('0x184'));var _0x4c3aca=_0x392704['result'];var _0x2c42f5=jayson['client'][_0x0397('0x13')]({'port':0x232c});return _0x2c42f5[_0x0397('0x14')](_0x0397('0x2d'),_0xd3033a)[_0x0397('0x27')](function(_0x1c71c8){if(_0x1c71c8[_0x0397('0x18')])throw new Error(_0x0397('0x185'));var _0x30db1b=_0x1c71c8[_0x0397('0x1c')];return _['merge']({},_0x30db1b,_0x4c3aca);});})['then'](function(_0x44a63){return _[_0x0397('0x3b')](_0x11f275,function(_0x3eed08){var _0x74b560=_[_0x0397('0x33')](_0x44a63[_0x0397('0x48')],['id',_0x3eed08['id']]);if(!_0x74b560||!_0x3eed08[_0x0397('0xa5')]){_0x3eed08[_0x0397('0x1e')]=_0x0397('0x186');}else if(_0x74b560[_0x0397('0xa7')]){_0x3eed08['status']=_0x0397('0x187');}else{_0x3eed08['status']=_[_0x0397('0x32')]([_0x0397('0x188'),_0x0397('0x189'),'unavailable',_0x0397('0x18a'),null,undefined],_0x74b560[_0x0397('0x18b')])?_0x0397('0xa5'):_0x0397('0x18c');}return _0x3eed08;});});});})[_0x0397('0x27')](function(_0xc05809){if(!_0xd3033a[_0x0397('0x44')][_0x0397('0xd6')]('nolimit')){_0x5ddae2[_0x0397('0x24')]=qs[_0x0397('0x24')](_0xd3033a['query'][_0x0397('0x24')]||0xa);_0x5ddae2[_0x0397('0x21')]=qs[_0x0397('0x21')](_0xd3033a[_0x0397('0x44')][_0x0397('0x21')]);}_0x557d66['count']=_0xc05809[_0x0397('0x4a')];_0x557d66[_0x0397('0x48')]=_0x5ddae2['limit']?_0xc05809[_0x0397('0x18d')](_0x5ddae2[_0x0397('0x21')],_0x5ddae2[_0x0397('0x21')]+_0x5ddae2[_0x0397('0x24')]):_0xc05809;return _0x557d66;})[_0x0397('0x27')](respondWithFilteredResult(_0x19ef29,_0x5ddae2))[_0x0397('0x1d')](handleError(_0x19ef29,null));};function get_open_tabs(_0x6a25f0,_0x533479){var _0x2254c5=_0x6a25f0[_0x0397('0x18e')](0x0)['toUpperCase']()+_0x6a25f0[_0x0397('0x18d')](0x1);var _0x5e9c87={'type':db['Sequelize'][_0x0397('0x18f')][_0x0397('0x6b')],'raw':!![]};return new BPromise(function(_0x4803b4,_0x452c30){var _0x5f3f95=squel[_0x0397('0x190')]()[_0x0397('0x191')]('ui.'+_0x2254c5+_0x0397('0x192'),'id')[_0x0397('0x191')](_0x0397('0x193'))['from'](_0x0397('0x194')+_0x6a25f0+_0x0397('0x195'),'ui')[_0x0397('0x42')]('ui.UserId\x20=\x20?',_0x533479['id']);return db[_0x0397('0x69')][_0x0397('0x44')](_0x5f3f95[_0x0397('0x196')](),_0x5e9c87)['then'](function(_0x21b353){_0x533479[_0x2254c5+_0x0397('0x197')]=_0x21b353;_0x4803b4(_0x21b353);})[_0x0397('0x1d')](function(_0x4f7fdf){_0x452c30(_0x4f7fdf);});});};
\ No newline at end of file
+var _0x7033=['uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','unavailable','busy','charAt','toUpperCase','slice','field','ui.','InteractionId','ui.createdAt','user_has_','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','./user.socket','register','redis','defaults','client','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','end','json','undefined','count','offset','limit','set','destroy','get','role','admin','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','fieldName','password','salt','getOptions','where','query','include','attributes','push','findAll','openTabs','rows','length','chat','dataValues','sms','mail','openchannel','whatsapp','show','params','model','keys','intersection','fields','options','true','all','update','body','describe','addContacts','ids','omit','Setting','internal','isNil','min_internal','sequelize','QueryTypes','from','fullname','email','permissions','101','102','113','104','105','106','107','108','109','100','111','114','create','Unauthorized','checkUserLimits','settingsEnabled','userProfileId','VoiceMail','UserProfileSection','autoAssociation','bulkCreate','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','isEmpty','compact','changePassword','oldPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Sequelize','findOne','enforcePasswordHistory','passwordHistoryLimit','securePassword','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','interface','isValidChannel','Unknown\x20channel','add','toLowerCase','Queues','penalty','spread','capitalize','QueueId','emit','voice','VoiceQueue','SIP/%s','voicePause','UserVoiceQueueRt','removeQueues','remove','isArray','Queue:remove','addAvatar','userpic','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','fax','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','filters','sort','pick','merge','hasOwnProperty','includeAll','CmList','Tag','Tags','color','tag','Queue','order','nolimit','getVoiceQueuesRt','getGroups','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','FaxInteraction','getFaxInteractions','WhatsappInteraction','getWhatsappInteractions','login','mobile','LOCAL/%s@from-sip/n','intrf','format','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','LOGININPAUSE','concat','isMiddleware','QueuePause','pause','updateAttributes','type','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','smsPause','whatsapppause','pauseType','lastPauseAt','PAUSE','manual','%s%s','Pause','getTeams','Team','setDataValue','getChatQueues','Chat','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','flatten','transaction','addAgent','getDataValue','Queue:save','removeTeams','Voice','getFaxQueues','getOpenchannelQueues','Openchannel','removeAgent','getLists','getAgents','values','addChatInteractions','removeChatInteractions','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','user_has_openchannel_interactions:save','removeOpenchannelInteractions','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$gte','$lt','$lte','$ne','$not','$between','$notIn','$like','$overlap','$contained','$any','firstName','phone','Contact','dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','resolve','teams','queues','lower','toString','asc','desc','substring'];(function(_0xa67ae,_0x407be8){var _0x937486=function(_0x56dffd){while(--_0x56dffd){_0xa67ae['push'](_0xa67ae['shift']());}};_0x937486(++_0x407be8);}(_0x7033,0x19e));var _0x3703=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x7033[_0x1d1779];return _0x2377e9;};'use strict';var moment=require(_0x3703('0x0'));var BPromise=require(_0x3703('0x1'));var util=require(_0x3703('0x2'));var path=require(_0x3703('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x3703('0x4'));var jayson=require(_0x3703('0x5'));var Redis=require(_0x3703('0x6'));var authService=require(_0x3703('0x7'));var qs=require(_0x3703('0x8'));var logger=require(_0x3703('0x9'))(_0x3703('0xa'));var utils=require(_0x3703('0xb'));var config=require(_0x3703('0xc'));var licenseUtil=require(_0x3703('0xd'));var db=require('../../mysqldb')['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3703('0xe'))[_0x3703('0xf')](socket);config[_0x3703('0x10')]=_[_0x3703('0x11')](config[_0x3703('0x10')],{'host':'localhost','port':0x18eb});var client=jayson[_0x3703('0x12')][_0x3703('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x28e18d,_0x5a3547,_0x4c443c,_0x3a3a0f){return new BPromise(function(_0x5b898d,_0x3074ab){var _0x21361e=_0x3a3a0f||client;return _0x21361e[_0x3703('0x14')](_0x28e18d,_0x4c443c)[_0x3703('0x15')](function(_0x520ce3){logger['info'](_0x3703('0x16'),_0x5a3547,_0x3703('0x17'));logger[_0x3703('0x18')](_0x3703('0x19'),_0x5a3547,_0x3703('0x17'),JSON[_0x3703('0x1a')](_0x520ce3));if(_0x520ce3[_0x3703('0x1b')]){if(_0x520ce3[_0x3703('0x1b')][_0x3703('0x1c')]===0x1f4){logger[_0x3703('0x1b')](_0x3703('0x16'),_0x5a3547,_0x520ce3[_0x3703('0x1b')][_0x3703('0x1d')]);return _0x3074ab(_0x520ce3[_0x3703('0x1b')]['message']);}logger[_0x3703('0x1b')]('User,\x20%s,\x20%s',_0x5a3547,_0x520ce3[_0x3703('0x1b')]['message']);return _0x5b898d(_0x520ce3[_0x3703('0x1b')]['message']);}else{logger[_0x3703('0x1e')](_0x3703('0x16'),_0x5a3547,'request\x20sent');_0x5b898d(_0x520ce3[_0x3703('0x1f')][_0x3703('0x1d')]);}})[_0x3703('0x20')](function(_0x67686e){logger[_0x3703('0x1b')]('User,\x20%s,\x20%s',_0x5a3547,_0x67686e);_0x3074ab(_0x67686e);});});}function respondWithStatusCode(_0x46af1e,_0xc45c46){_0xc45c46=_0xc45c46||0xcc;return function(_0x40f850){if(_0x40f850){return _0x46af1e['sendStatus'](_0xc45c46);}return _0x46af1e[_0x3703('0x21')](_0xc45c46)[_0x3703('0x22')]();};}function respondWithResult(_0x10c74d,_0x58c53f){_0x58c53f=_0x58c53f||0xc8;return function(_0x4dcc6d){if(_0x4dcc6d){return _0x10c74d['status'](_0x58c53f)[_0x3703('0x23')](_0x4dcc6d);}};}function respondWithFilteredResult(_0x34aaf8,_0x306905){return function(_0x33d963){if(_0x33d963){var _0x5bdcbd=typeof _0x306905['offset']===_0x3703('0x24')&&typeof _0x306905['limit']==='undefined';var _0x45dccc=_0x33d963[_0x3703('0x25')];var _0x480df6=_0x5bdcbd?0x0:_0x306905[_0x3703('0x26')];var _0x35d577=_0x5bdcbd?_0x33d963[_0x3703('0x25')]:_0x306905[_0x3703('0x26')]+_0x306905[_0x3703('0x27')];var _0x59c6ca;if(_0x35d577>=_0x45dccc){_0x35d577=_0x45dccc;_0x59c6ca=0xc8;}else{_0x59c6ca=0xce;}_0x34aaf8['status'](_0x59c6ca);return _0x34aaf8[_0x3703('0x28')]('Content-Range',_0x480df6+'-'+_0x35d577+'/'+_0x45dccc)[_0x3703('0x23')](_0x33d963);}return null;};}function saveUpdates(_0x1b8211){return function(_0x5f31df){if(_0x5f31df){return _0x5f31df['update'](_0x1b8211)[_0x3703('0x15')](function(_0x216818){return _0x216818;});}return null;};}function removeEntity(_0x14ba08){return function(_0x78bf62){if(_0x78bf62){return _0x78bf62[_0x3703('0x29')]()[_0x3703('0x15')](function(){var _0x465bca=_0x78bf62[_0x3703('0x2a')]({'plain':!![]});if(_0x465bca[_0x3703('0x2b')]===_0x3703('0x2c'))return;var _0x309d6b=[{'name':'Users','value':_0x3703('0x2d'),'ignore':!![]},{'name':_0x3703('0x2e'),'value':_0x3703('0x2f'),'ignore':![]},{'name':_0x3703('0x30'),'value':_0x3703('0x31'),'ignore':![]}];var _0x3bf605=_(_0x309d6b)[_0x3703('0x32')](_0x3703('0x33'))[_0x3703('0x34')](_0x3703('0x35'))[_0x3703('0x35')]();if(_[_0x3703('0x36')](_0x3bf605,_0x465bca[_0x3703('0x2b')])){return;}var _0x308f32=_[_0x3703('0x37')](_0x309d6b,[_0x3703('0x35'),_0x465bca[_0x3703('0x2b')]])[_0x3703('0x38')];return db[_0x3703('0x39')][_0x3703('0x29')]({'where':{'type':_0x308f32,'resourceId':_0x465bca['id']}})[_0x3703('0x15')](function(){return _0x78bf62;});})[_0x3703('0x15')](function(){_0x14ba08['status'](0xcc)[_0x3703('0x22')]();});}};}function handleEntityNotFound(_0x5ebf97){return function(_0x11974a){if(!_0x11974a){_0x5ebf97['sendStatus'](0x194);}return _0x11974a;};}function handleError(_0x2edd28,_0x31d160){_0x31d160=_0x31d160||0x1f4;return function(_0x23e0a4){logger[_0x3703('0x1b')](_0x23e0a4[_0x3703('0x3a')]);if(_0x23e0a4['name']){delete _0x23e0a4[_0x3703('0x38')];}_0x2edd28['status'](_0x31d160)[_0x3703('0x3b')](_0x23e0a4);};}exports[_0x3703('0x3c')]=function(_0x30ff35,_0x50e650){var _0xe71a26={},_0x5ee335={'count':0x0,'rows':[]};var _0xd5de36=_(db[_0x3703('0x3d')][_0x3703('0x3e')])[_0x3703('0x34')](function(_0x2cfd59){return{'name':_0x2cfd59[_0x3703('0x3f')],'type':_0x2cfd59['type']['key']};})[_0x3703('0x32')](function(_0x3c51b3){return!_['includes']([_0x3703('0x40'),_0x3703('0x41')],_0x3c51b3[_0x3703('0x38')]);})[_0x3703('0x35')]();_0xe71a26=qs[_0x3703('0x42')](_0xd5de36,_0x30ff35);var _0x2c3032={'where':_0xe71a26[_0x3703('0x43')]};return db[_0x3703('0x3d')][_0x3703('0x25')](_0x2c3032)['then'](function(_0x5dd19b){_0x5ee335[_0x3703('0x25')]=_0x5dd19b;if(_0x30ff35[_0x3703('0x44')]['includeAll']){_0xe71a26[_0x3703('0x45')]=[{'all':!![]}];}if(!_[_0x3703('0x36')](_0xe71a26[_0x3703('0x46')],'id')){_0xe71a26[_0x3703('0x46')][_0x3703('0x47')]('id');}return db[_0x3703('0x3d')][_0x3703('0x48')](_0xe71a26);})[_0x3703('0x15')](function(_0x1d39c7){_0x5ee335['rows']=_0x1d39c7;if(_0x30ff35['query'][_0x3703('0x49')]==='true'){var _0x535d21=[];for(var _0x17d1ca=0x0;_0x17d1ca<_0x5ee335[_0x3703('0x4a')][_0x3703('0x4b')];_0x17d1ca++){_0x535d21[_0x3703('0x47')](get_open_tabs(_0x3703('0x4c'),_0x5ee335[_0x3703('0x4a')][_0x17d1ca][_0x3703('0x4d')]));_0x535d21['push'](get_open_tabs(_0x3703('0x4e'),_0x5ee335[_0x3703('0x4a')][_0x17d1ca][_0x3703('0x4d')]));_0x535d21[_0x3703('0x47')](get_open_tabs('fax',_0x5ee335['rows'][_0x17d1ca][_0x3703('0x4d')]));_0x535d21[_0x3703('0x47')](get_open_tabs(_0x3703('0x4f'),_0x5ee335[_0x3703('0x4a')][_0x17d1ca][_0x3703('0x4d')]));_0x535d21[_0x3703('0x47')](get_open_tabs(_0x3703('0x50'),_0x5ee335['rows'][_0x17d1ca][_0x3703('0x4d')]));_0x535d21[_0x3703('0x47')](get_open_tabs(_0x3703('0x51'),_0x5ee335[_0x3703('0x4a')][_0x17d1ca]['dataValues']));}return BPromise['all'](_0x535d21)['then'](function(_0x55bd5b){return _0x5ee335;});}else{return _0x5ee335;}})[_0x3703('0x15')](respondWithFilteredResult(_0x50e650,_0xe71a26))[_0x3703('0x20')](handleError(_0x50e650,null));};exports[_0x3703('0x52')]=function(_0x53a56e,_0x272242){var _0x4d824d={'raw':![],'where':{'id':_0x53a56e[_0x3703('0x53')]['id']}},_0x31e455={};_0x31e455[_0x3703('0x54')]=_['differenceBy'](_[_0x3703('0x55')](db[_0x3703('0x3d')][_0x3703('0x3e')]),[_0x3703('0x40'),'salt']);_0x31e455['query']=_['keys'](_0x53a56e[_0x3703('0x44')]);_0x31e455['filters']=_[_0x3703('0x56')](_0x31e455['model'],_0x31e455[_0x3703('0x44')]);_0x4d824d['attributes']=_[_0x3703('0x56')](_0x31e455[_0x3703('0x54')],qs[_0x3703('0x57')](_0x53a56e['query'][_0x3703('0x57')]));_0x4d824d[_0x3703('0x46')]=_0x4d824d[_0x3703('0x46')][_0x3703('0x4b')]?_0x4d824d[_0x3703('0x46')]:_0x31e455['model'];if(_0x53a56e[_0x3703('0x44')]['includeAll']){_0x4d824d[_0x3703('0x45')]=[{'all':!![]}];}_0x4d824d=_['merge']({},_0x4d824d,_0x53a56e[_0x3703('0x58')]);if(!_[_0x3703('0x36')](_0x4d824d[_0x3703('0x46')],'id')){_0x4d824d[_0x3703('0x46')]['push']('id');}return db['User'][_0x3703('0x37')](_0x4d824d)[_0x3703('0x15')](handleEntityNotFound(_0x272242,null))[_0x3703('0x15')](function(_0x21369b){var _0x38ef4d=[];values=_0x21369b;if(_0x53a56e['query'][_0x3703('0x49')]===_0x3703('0x59')){_0x38ef4d[_0x3703('0x47')](get_open_tabs(_0x3703('0x4c'),_0x21369b[_0x3703('0x4d')]));_0x38ef4d[_0x3703('0x47')](get_open_tabs('sms',_0x21369b[_0x3703('0x4d')]));_0x38ef4d[_0x3703('0x47')](get_open_tabs(_0x3703('0x50'),_0x21369b[_0x3703('0x4d')]));_0x38ef4d[_0x3703('0x47')](get_open_tabs(_0x3703('0x51'),_0x21369b[_0x3703('0x4d')]));_0x38ef4d[_0x3703('0x47')](get_open_tabs('fax',_0x21369b[_0x3703('0x4d')]));_0x38ef4d[_0x3703('0x47')](get_open_tabs(_0x3703('0x4f'),_0x21369b[_0x3703('0x4d')]));return BPromise[_0x3703('0x5a')](_0x38ef4d);}else{return values;}})[_0x3703('0x15')](function(_0xc00cc4){return values;})['then'](respondWithResult(_0x272242,null))[_0x3703('0x20')](handleError(_0x272242,null));};exports[_0x3703('0x5b')]=function(_0x6d3dab,_0x263a7c){if(_0x6d3dab[_0x3703('0x5c')]['id']){delete _0x6d3dab[_0x3703('0x5c')]['id'];}delete _0x6d3dab[_0x3703('0x5c')][_0x3703('0x2b')];return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x6d3dab[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x263a7c,null))['then'](saveUpdates(_0x6d3dab[_0x3703('0x5c')],null))[_0x3703('0x15')](respondWithResult(_0x263a7c,null))[_0x3703('0x20')](handleError(_0x263a7c,null));};exports['describe']=function(_0x432741,_0x3ef093){return db['User'][_0x3703('0x5d')]()['then'](respondWithResult(_0x3ef093,null))[_0x3703('0x20')](handleError(_0x3ef093,null));};exports[_0x3703('0x5e')]=function(_0xf39e13,_0x599b8b){return db['User'][_0x3703('0x37')]({'where':{'id':_0xf39e13['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x599b8b,null))[_0x3703('0x15')](function(_0x373ec9){if(_0x373ec9){return _0x373ec9[_0x3703('0x5e')](_0xf39e13[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0xf39e13[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})[_0x3703('0x15')](respondWithResult(_0x599b8b,null))[_0x3703('0x20')](handleError(_0x599b8b,null));};function validateUser(_0x5b89de){return new BPromise(function(_0x555e45,_0x436d5a){if(_0x5b89de['internal'])return _0x555e45(_0x5b89de);return db[_0x3703('0x61')]['findById'](0x1)['then'](function(_0x152691){if(_0x152691['securePassword'])authService['validatePasswordPattern'](_0x5b89de[_0x3703('0x40')]);db[_0x3703('0x3d')]['max'](_0x3703('0x62'))['then'](function(_0x2a0fca){if(_['isNil'](_0x2a0fca)){_0x5b89de[_0x3703('0x62')]=_0x152691['min_internal']||0x1;return;}if(_[_0x3703('0x63')](_0x152691[_0x3703('0x64')])||_0x152691[_0x3703('0x64')]===_0x2a0fca){_0x5b89de[_0x3703('0x62')]=_0x2a0fca+0x1;return;}if(_0x152691['min_internal']>_0x2a0fca){_0x5b89de[_0x3703('0x62')]=_0x152691[_0x3703('0x64')];return;}return db[_0x3703('0x65')][_0x3703('0x44')]('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['sequelize'][_0x3703('0x66')]['SELECT']})[_0x3703('0x15')](function(_0x2602ab){if(_0x2602ab&&_0x2602ab['length']){for(var _0x5250c4=0x0,_0x5cfb32=_0x2602ab['length'];_0x5250c4<_0x5cfb32&&_['isNil'](_0x5b89de[_0x3703('0x62')]);_0x5250c4++){if(_0x152691[_0x3703('0x64')]<=_0x2602ab[_0x5250c4][_0x3703('0x67')]){_0x5b89de[_0x3703('0x62')]=_0x2602ab[_0x5250c4][_0x3703('0x67')];}else if(_0x152691[_0x3703('0x64')]>_0x2602ab[_0x5250c4][_0x3703('0x67')]&&_0x152691[_0x3703('0x64')]<=_0x2602ab[_0x5250c4]['to']){_0x5b89de[_0x3703('0x62')]=_0x152691[_0x3703('0x64')];}}}if(_['isNil'](_0x5b89de[_0x3703('0x62')])){_0x5b89de['internal']=_0x2a0fca+0x1;}return _0x555e45(_0x5b89de);});});})[_0x3703('0x20')](function(_0x33075d){_0x436d5a(_0x33075d);});});}function updateUser(_0x1b3ed5){return new BPromise(function(_0x38970f,_0x154085){try{if(_0x1b3ed5['voicemail']){_0x1b3ed5['mailbox']=_0x1b3ed5[_0x3703('0x62')];_0x1b3ed5['VoiceMail']={'mailbox':_0x1b3ed5['internal'],'password':_0x1b3ed5[_0x3703('0x40')],'fullname':_0x1b3ed5[_0x3703('0x68')],'email':_0x1b3ed5[_0x3703('0x69')]};}if(_0x1b3ed5['role']===_0x3703('0x2f')){if(!_0x1b3ed5[_0x3703('0x6a')])_0x1b3ed5[_0x3703('0x6a')]=[_0x3703('0x6b'),_0x3703('0x6c'),'103',_0x3703('0x6d'),'110',_0x3703('0x6e'),_0x3703('0x6f'),_0x3703('0x70'),_0x3703('0x71'),_0x3703('0x72'),_0x3703('0x73'),_0x3703('0x74'),_0x3703('0x75'),_0x3703('0x76'),'115'];}_0x38970f(_0x1b3ed5);}catch(_0x489f64){_0x154085(_0x489f64);}});}exports[_0x3703('0x77')]=function(_0x4f1c50,_0x1014da){if(_0x4f1c50[_0x3703('0x2d')]['role']===_0x3703('0x2f'))throw new Error(_0x3703('0x78'));if(_0x4f1c50[_0x3703('0x5c')][_0x3703('0x2b')]==='user'&&_0x4f1c50[_0x3703('0x2d')][_0x3703('0x2b')]!==_0x3703('0x2c')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x4f1c50[_0x3703('0x5c')]['role']===_0x3703('0x2c')&&_0x4f1c50['user'][_0x3703('0x2b')]!==_0x3703('0x2c')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x3703('0x79')]([_0x4f1c50['body']])['then'](function(){return validateUser(_0x4f1c50[_0x3703('0x5c')]);})[_0x3703('0x15')](function(_0x5c851f){return updateUser(_0x5c851f)['then'](function(_0xfc1b50){if(_0xfc1b50['role']===_0x3703('0x2c')){_0xfc1b50[_0x3703('0x7a')]=_0x4f1c50['user'][_0x3703('0x7a')];delete _0xfc1b50[_0x3703('0x7b')];}return _0xfc1b50;});})['then'](function(_0x48f08b){return db[_0x3703('0x3d')][_0x3703('0x77')](_0x48f08b,{'include':[{'model':db[_0x3703('0x7c')],'as':'VoiceMail'}]});})[_0x3703('0x15')](function(_0x45b55f){if(_0x4f1c50[_0x3703('0x5c')][_0x3703('0x2b')]===_0x3703('0x2d'))return _0x45b55f;if(_0x4f1c50[_0x3703('0x2d')][_0x3703('0x2b')]!==_0x3703('0x2d'))return _0x45b55f;return db[_0x3703('0x7d')][_0x3703('0x37')]({'where':{'name':_0x45b55f[_0x3703('0x2b')]===_0x3703('0x2f')?'Agents':_0x3703('0x30'),'userProfileId':_0x4f1c50[_0x3703('0x2d')][_0x3703('0x7b')]},'raw':!![]})['then'](function(_0x3b84a3){if(!_0x3b84a3||_0x3b84a3[_0x3703('0x7e')]!=0x0)return _0x45b55f;return db[_0x3703('0x39')][_0x3703('0x77')]({'name':_0x45b55f[_0x3703('0x38')],'resourceId':_0x45b55f['id'],'type':_0x3b84a3[_0x3703('0x38')],'sectionId':_0x3b84a3['id']},{})['then'](function(){return _0x45b55f;});})[_0x3703('0x20')](function(_0x7b4662){logger[_0x3703('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x7b4662);throw _0x7b4662;});})['then'](respondWithResult(_0x1014da,0xc9))[_0x3703('0x20')](handleError(_0x1014da,null));};exports[_0x3703('0x7f')]=function(_0x43ba6c,_0x20011b){var _0x10ef8b=_0x43ba6c['body'];var _0x4e3c29=[];if(_0x43ba6c[_0x3703('0x2d')][_0x3703('0x2b')]===_0x3703('0x2f'))throw new Error(_0x3703('0x78'));if(_['some'](_0x10ef8b,[_0x3703('0x2b'),'user'])&&_0x43ba6c[_0x3703('0x2d')][_0x3703('0x2b')]!==_0x3703('0x2c')){throw new Error(_0x3703('0x80'));}if(_[_0x3703('0x81')](_0x10ef8b,[_0x3703('0x2b'),'admin'])&&_0x43ba6c[_0x3703('0x2d')][_0x3703('0x2b')]!=='admin'){throw new Error(_0x3703('0x82'));}return licenseUtil[_0x3703('0x79')](_0x10ef8b)['then'](function(){return validateUser(_0x10ef8b[0x0]);})[_0x3703('0x15')](function(){for(var _0x504853=0x1;_0x504853<_0x10ef8b[_0x3703('0x4b')];_0x504853++){var _0x29e85e=_0x10ef8b[_0x504853-0x1][_0x3703('0x62')];if(!_0x10ef8b[_0x504853][_0x3703('0x62')])_0x10ef8b[_0x504853][_0x3703('0x62')]=_0x29e85e+0x1;_0x4e3c29['push'](validateUser(_0x10ef8b[_0x504853]));}return BPromise[_0x3703('0x5a')](_0x4e3c29);})[_0x3703('0x15')](function(){_0x4e3c29=[];for(var _0x5b417d=0x0;_0x5b417d<_0x10ef8b[_0x3703('0x4b')];_0x5b417d++){_0x4e3c29['push'](updateUser(_0x10ef8b[_0x5b417d]));}return BPromise[_0x3703('0x5a')](_0x4e3c29);})[_0x3703('0x15')](function(){return BPromise[_0x3703('0x83')](_0x10ef8b,function(_0x3a0c16){return db[_0x3703('0x3d')]['create'](_0x3a0c16,{'include':[{'model':db['VoiceMail'],'as':_0x3703('0x7c')}]})[_0x3703('0x15')](function(_0x38118a){_0x3a0c16['id']=_0x38118a['id'];return _0x3a0c16;});});})[_0x3703('0x15')](function(_0x5e14e8){if(_0x43ba6c['body']['role']===_0x3703('0x2d'))return _0x5e14e8;if(_0x43ba6c[_0x3703('0x2d')][_0x3703('0x2b')]!==_0x3703('0x2d'))return _0x5e14e8;var _0x3ed476=_[_0x3703('0x81')](_0x5e14e8,function(_0x296231){return _0x296231[_0x3703('0x2b')]===_0x3703('0x2f')||_0x296231['role']===_0x3703('0x31');});if(!_0x3ed476)return _0x5e14e8;return db[_0x3703('0x7d')][_0x3703('0x48')]({'where':{'name':{'$or':[_0x3703('0x2e'),_0x3703('0x30')]},'userProfileId':_0x43ba6c[_0x3703('0x2d')][_0x3703('0x7b')]},'raw':!![]})[_0x3703('0x15')](function(_0x4d42a6){if(_[_0x3703('0x84')](_0x4d42a6)||!_[_0x3703('0x81')](_0x4d42a6,['autoAssociation',0x0]))return _0x5e14e8;_0x4e3c29=[];var _0x5ba040=_(_0x4d42a6)[_0x3703('0x34')](function(_0x2dbdd2){if(_0x2dbdd2['autoAssociation']===0x1)return;return _0x2dbdd2[_0x3703('0x38')]===_0x3703('0x2e')?_0x3703('0x2f'):_0x3703('0x31');})[_0x3703('0x85')]()[_0x3703('0x35')]();for(var _0x5725eb=0x0;_0x5725eb<_0x5e14e8[_0x3703('0x4b')];_0x5725eb++){if(!_[_0x3703('0x36')](_0x5ba040,_0x5e14e8[_0x5725eb][_0x3703('0x2b')]))return;var _0x1111f0=_0x5e14e8[_0x5725eb][_0x3703('0x2b')]===_0x3703('0x2f')?_0x3703('0x2e'):'Telephones';_0x4e3c29[_0x3703('0x47')](db[_0x3703('0x39')]['create']({'name':_0x5e14e8[_0x5725eb][_0x3703('0x38')],'resourceId':_0x5e14e8[_0x5725eb]['id'],'type':_0x1111f0,'sectionId':_[_0x3703('0x37')](_0x4d42a6,[_0x3703('0x38'),_0x1111f0])['id']},{}));}return BPromise[_0x3703('0x5a')](_0x4e3c29);});})[_0x3703('0x15')](respondWithResult(_0x20011b,0xc9))['catch'](handleError(_0x20011b,null));};exports[_0x3703('0x86')]=function(_0x4d448c,_0x47645c){if(_0x4d448c[_0x3703('0x5c')]['id']){delete _0x4d448c[_0x3703('0x5c')]['id'];}return db[_0x3703('0x3d')]['find']({'where':{'id':_0x4d448c[_0x3703('0x53')]['id']}})[_0x3703('0x15')](function(_0x17c836){if(!_0x17c836)return null;if(_0x17c836['id']===_0x4d448c['user']['id']){if(!_0x4d448c[_0x3703('0x5c')][_0x3703('0x87')]||!_0x4d448c[_0x3703('0x5c')]['newPassword']){throw new db['Sequelize'][(_0x3703('0x88'))](_0x3703('0x89'));}if(!_0x17c836[_0x3703('0x8a')](_0x4d448c[_0x3703('0x5c')][_0x3703('0x87')])){throw new db['Sequelize'][(_0x3703('0x88'))]('Wrong\x20credentials');}if(_0x4d448c[_0x3703('0x5c')]['oldPassword']===_0x4d448c[_0x3703('0x5c')][_0x3703('0x8b')]){throw new db['Sequelize']['ValidationError'](_0x3703('0x8c'));}}else if(_0x4d448c[_0x3703('0x2d')][_0x3703('0x2b')]===_0x3703('0x2c')){if(!_0x4d448c[_0x3703('0x5c')][_0x3703('0x8b')]){throw new db['Sequelize'][(_0x3703('0x88'))](_0x3703('0x8d'));}}else if(_0x4d448c[_0x3703('0x2d')][_0x3703('0x2b')]===_0x3703('0x2d')){if(!_0x4d448c['body']['newPassword']){throw new db[(_0x3703('0x8e'))][(_0x3703('0x88'))](_0x3703('0x8d'));}if(_0x17c836[_0x3703('0x2b')]!==_0x3703('0x2f')){throw new db[(_0x3703('0x8e'))]['ValidationError'](_0x3703('0x78'));}}else{throw new db[(_0x3703('0x8e'))][(_0x3703('0x88'))](_0x3703('0x78'));}return _0x17c836;})['then'](handleEntityNotFound(_0x47645c,null))['then'](function(_0x34c791){return db[_0x3703('0x61')][_0x3703('0x8f')]({'attributes':['id','securePassword',_0x3703('0x90'),_0x3703('0x91')]})[_0x3703('0x15')](function(_0x1c74cb){if(_0x1c74cb[_0x3703('0x92')])authService['validatePasswordPattern'](_0x4d448c['body']['newPassword']);if(!_0x1c74cb[_0x3703('0x90')]||!_0x34c791[_0x3703('0x93')])return _0x34c791;authService[_0x3703('0x94')](_0x4d448c[_0x3703('0x5c')][_0x3703('0x8b')],_0x34c791[_0x3703('0x93')],_0x1c74cb[_0x3703('0x91')]);return _0x34c791;})[_0x3703('0x15')](saveUpdates({'password':_0x4d448c[_0x3703('0x5c')][_0x3703('0x8b')],'passwordResetAt':_0x4d448c[_0x3703('0x2d')]['id']==_0x4d448c[_0x3703('0x53')]['id']?moment():null,'previousPasswords':authService[_0x3703('0x95')](_0x4d448c[_0x3703('0x5c')][_0x3703('0x8b')],_0x34c791[_0x3703('0x93')])},null));})['then'](respondWithResult(_0x47645c,null))[_0x3703('0x20')](handleError(_0x47645c,null));};exports['addQueues']=function(_0x3fdca1,_0x4a5619){var _0x3dde43=_0x3fdca1[_0x3703('0x5c')][_0x3703('0x96')];return db[_0x3703('0x3d')]['find']({'where':{'id':_0x3fdca1['params']['id']},'attributes':['id',_0x3703('0x38'),_0x3703('0x2b'),_0x3703('0x97'),_0x3703('0x98'),'voicePause',_0x3703('0x99')]})[_0x3703('0x15')](handleEntityNotFound(_0x4a5619,null))[_0x3703('0x15')](function(_0x2857c2){if(_0x2857c2){if(!utils[_0x3703('0x9a')](_0x3dde43)){throw new db[(_0x3703('0x8e'))][(_0x3703('0x88'))](_0x3703('0x9b'));}return _0x2857c2[_0x3703('0x9c')+_['capitalize'](_0x3dde43[_0x3703('0x9d')]())+_0x3703('0x9e')](_0x3fdca1[_0x3703('0x5c')]['ids'],{'penalty':_0x3fdca1[_0x3703('0x5c')][_0x3703('0x9f')]||0x0})[_0x3703('0xa0')](function(_0xc01dcd){for(var _0x3b5e22=0x0;_0x3b5e22<_0x3fdca1[_0x3703('0x5c')][_0x3703('0x5f')]['length'];_0x3b5e22+=0x1){var _0x380e1d={'UserId':Number(_0x3fdca1['params']['id'])};_0x380e1d[_[_0x3703('0xa1')](_0x3dde43[_0x3703('0x9d')]())+_0x3703('0xa2')]=Number(_0x3fdca1['body'][_0x3703('0x5f')][_0x3b5e22]);socket[_0x3703('0xa3')]('user'+_[_0x3703('0xa1')](_0x3dde43[_0x3703('0x9d')]())+'Queue:save',_0x380e1d);}return _0xc01dcd;})[_0x3703('0x15')](function(){if(_0x3dde43===_0x3703('0xa4')){return db[_0x3703('0xa5')]['findAll']({'where':{'id':_0x3fdca1[_0x3703('0x5c')][_0x3703('0x5f')]||[]},'raw':!![],'attributes':['id',_0x3703('0x38')]});}})[_0x3703('0x15')](function(_0x1050a0){var _0x1ff376=_0x2857c2[_0x3703('0x2a')]({'plain':!![]});var _0x576ee7=[];if(_0x3dde43===_0x3703('0xa4')&&_0x1ff376['role']===_0x3703('0x2f')&&_0x1ff376[_0x3703('0x97')]){for(var _0x16be4f=0x0;_0x16be4f<_0x1050a0[_0x3703('0x4b')];_0x16be4f+=0x1){_0x576ee7[_0x3703('0x47')]({'membername':_0x1ff376[_0x3703('0x38')],'UserId':_0x1ff376['id'],'queue_name':_0x1050a0[_0x16be4f][_0x3703('0x38')],'VoiceQueueId':_0x1050a0[_0x16be4f]['id'],'interface':_['isNil'](_0x1ff376[_0x3703('0x99')])?util['format'](_0x3703('0xa6'),_0x1ff376[_0x3703('0x38')]):_0x1ff376[_0x3703('0x99')],'paused':_0x1ff376[_0x3703('0xa7')]||![],'penalty':_0x3fdca1[_0x3703('0x5c')][_0x3703('0x9f')]||0x0});}return BPromise[_0x3703('0x83')](_0x576ee7,function(_0x3ca29e){return db[_0x3703('0xa8')]['upsert'](_0x3ca29e);});}return _0x2857c2;});}})[_0x3703('0x15')](respondWithStatusCode(_0x4a5619,null))['catch'](handleError(_0x4a5619,null));};exports[_0x3703('0xa9')]=function(_0x1c4056,_0x277e1f){var _0x48f4cd;return db[_0x3703('0x3d')]['find']({'where':{'id':_0x1c4056[_0x3703('0x53')]['id']},'attributes':['id',_0x3703('0x38'),_0x3703('0x2b')]})[_0x3703('0x15')](handleEntityNotFound(_0x277e1f,null))[_0x3703('0x15')](function(_0x50e39f){if(_0x50e39f){_0x48f4cd=_0x50e39f;if(!_0x1c4056[_0x3703('0x44')][_0x3703('0x96')]||!utils[_0x3703('0x9a')](_0x1c4056[_0x3703('0x44')][_0x3703('0x96')])){throw new db[(_0x3703('0x8e'))][(_0x3703('0x88'))](_0x3703('0x9b'));}return _0x50e39f[_0x3703('0xaa')+_[_0x3703('0xa1')](_0x1c4056[_0x3703('0x44')][_0x3703('0x96')]['toLowerCase']())+_0x3703('0x9e')](_0x1c4056['query']['ids']);}})[_0x3703('0x15')](function(_0x15e67f){if(_[_0x3703('0xab')](_0x1c4056[_0x3703('0x44')][_0x3703('0x5f')])){for(var _0x300756=0x0;_0x300756<_0x1c4056[_0x3703('0x44')]['ids'][_0x3703('0x4b')];_0x300756+=0x1){var _0x3a4b61={'UserId':Number(_0x1c4056[_0x3703('0x53')]['id'])};_0x3a4b61[_['capitalize'](_0x1c4056[_0x3703('0x44')][_0x3703('0x96')]['toLowerCase']())+_0x3703('0xa2')]=Number(_0x1c4056[_0x3703('0x44')]['ids'][_0x300756]);socket[_0x3703('0xa3')](_0x3703('0x2d')+_['capitalize'](_0x1c4056['query']['channel'][_0x3703('0x9d')]())+_0x3703('0xac'),_0x3a4b61);}}else{var _0x3a4b61={'UserId':Number(_0x1c4056[_0x3703('0x53')]['id'])};_0x3a4b61[_['capitalize'](_0x1c4056['query'][_0x3703('0x96')][_0x3703('0x9d')]())+_0x3703('0xa2')]=Number(_0x1c4056[_0x3703('0x44')]['ids']);socket[_0x3703('0xa3')]('user'+_['capitalize'](_0x1c4056[_0x3703('0x44')][_0x3703('0x96')][_0x3703('0x9d')]())+'Queue:remove',_0x3a4b61);}return _0x15e67f;})['then'](function(){if(_0x1c4056[_0x3703('0x44')][_0x3703('0x96')]==='voice'){return db[_0x3703('0xa8')]['destroy']({'where':{'UserId':_0x1c4056[_0x3703('0x53')]['id'],'VoiceQueueId':_0x1c4056[_0x3703('0x44')][_0x3703('0x5f')]},'individualHooks':!![]})[_0x3703('0x15')](function(){return _0x48f4cd;});}return _0x48f4cd;})[_0x3703('0x15')](respondWithStatusCode(_0x277e1f,null))[_0x3703('0x20')](handleError(_0x277e1f,null));};exports[_0x3703('0xad')]=function(_0x18b1b8,_0x133eac){_0x18b1b8[_0x3703('0x5c')][_0x3703('0xae')]=_0x18b1b8['file'][_0x3703('0xaf')];return db[_0x3703('0x3d')]['find']({'where':{'id':_0x18b1b8[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x133eac,null))[_0x3703('0x15')](saveUpdates(_0x18b1b8['body'],null))[_0x3703('0x15')](respondWithResult(_0x133eac,null))[_0x3703('0x20')](handleError(_0x133eac,null));};exports[_0x3703('0xb0')]=function(_0x4db72d,_0x1fbfdd){var _0x63f40e=path[_0x3703('0xb1')](config[_0x3703('0xb2')],_0x3703('0xb3'));return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x4db72d[_0x3703('0x53')]['id']},'attributes':['id',_0x3703('0xae')],'raw':!![]})['then'](handleEntityNotFound(_0x1fbfdd,null))[_0x3703('0x15')](function(_0x490810){if(_0x490810){if(_[_0x3703('0x63')](_0x490810['userpic'])){return _0x1fbfdd[_0x3703('0xb4')](_0x63f40e);}else{if(!fs[_0x3703('0xb5')](path[_0x3703('0xb1')](config[_0x3703('0xb2')],_0x3703('0xb6'),_0x490810[_0x3703('0xae')]))){return _0x1fbfdd[_0x3703('0xb4')](_0x63f40e);}return _0x1fbfdd['download'](path[_0x3703('0xb1')](config[_0x3703('0xb2')],_0x3703('0xb6'),_0x490810[_0x3703('0xae')]));}}})[_0x3703('0x20')](handleError(_0x1fbfdd,null));};exports[_0x3703('0xb7')]=function(_0x425c7f,_0x52e59d){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x425c7f[_0x3703('0x53')]['id']},'attributes':['id']})[_0x3703('0x15')](handleEntityNotFound(_0x52e59d,null))[_0x3703('0x15')](function(_0x1e6840){var _0x10ca97=[];values=_0x1e6840[_0x3703('0x4d')];_0x10ca97[_0x3703('0x47')](get_open_tabs(_0x3703('0x4c'),_0x1e6840[_0x3703('0x4d')]));_0x10ca97[_0x3703('0x47')](get_open_tabs(_0x3703('0x4e'),_0x1e6840[_0x3703('0x4d')]));_0x10ca97['push'](get_open_tabs('openchannel',_0x1e6840['dataValues']));_0x10ca97['push'](get_open_tabs(_0x3703('0x51'),_0x1e6840['dataValues']));_0x10ca97[_0x3703('0x47')](get_open_tabs(_0x3703('0xb8'),_0x1e6840[_0x3703('0x4d')]));_0x10ca97[_0x3703('0x47')](get_open_tabs(_0x3703('0x4f'),_0x1e6840[_0x3703('0x4d')]));return BPromise['all'](_0x10ca97);})[_0x3703('0x15')](function(_0x42ca2a){var _0x5a2cbb=[];if(_0x42ca2a){for(var _0x223255=0x0;_0x223255<values[_0x3703('0xb9')][_0x3703('0x4b')];_0x223255++){var _0x3c82bb=values[_0x3703('0xb9')][_0x223255];_0x5a2cbb[_0x3703('0x47')]({'channel':_0x3703('0xba'),'id':_0x3c82bb['id'],'createdAt':_0x3c82bb[_0x3703('0xbb')]});}for(var _0x223255=0x0;_0x223255<values[_0x3703('0xbc')][_0x3703('0x4b')];_0x223255++){var _0x3c82bb=values[_0x3703('0xbc')][_0x223255];_0x5a2cbb['push']({'channel':_0x3703('0xbd'),'id':_0x3c82bb['id'],'createdAt':_0x3c82bb[_0x3703('0xbb')]});}for(var _0x223255=0x0;_0x223255<values[_0x3703('0xbe')][_0x3703('0x4b')];_0x223255++){var _0x3c82bb=values[_0x3703('0xbe')][_0x223255];_0x5a2cbb['push']({'channel':'OPENCHANNEL','id':_0x3c82bb['id'],'createdAt':_0x3c82bb[_0x3703('0xbb')]});}for(var _0x223255=0x0;_0x223255<values[_0x3703('0xbf')][_0x3703('0x4b')];_0x223255++){var _0x3c82bb=values['MailOpenTabs'][_0x223255];_0x5a2cbb[_0x3703('0x47')]({'channel':_0x3703('0xc0'),'id':_0x3c82bb['id'],'createdAt':_0x3c82bb[_0x3703('0xbb')]});}for(var _0x223255=0x0;_0x223255<values['SmsOpenTabs']['length'];_0x223255++){var _0x3c82bb=values['SmsOpenTabs'][_0x223255];_0x5a2cbb['push']({'channel':_0x3703('0xc1'),'id':_0x3c82bb['id'],'createdAt':_0x3c82bb[_0x3703('0xbb')]});}for(var _0x223255=0x0;_0x223255<values[_0x3703('0xc2')][_0x3703('0x4b')];_0x223255++){var _0x3c82bb=values['WhatsappOpenTabs'][_0x223255];_0x5a2cbb[_0x3703('0x47')]({'channel':_0x3703('0xc3'),'id':_0x3c82bb['id'],'createdAt':_0x3c82bb[_0x3703('0xbb')]});}var _0x5df9c0={'count':_0x5a2cbb['length'],'rows':_0x5a2cbb};return _0x5df9c0;}else return null;})[_0x3703('0x15')](respondWithResult(_0x52e59d,null))[_0x3703('0x20')](handleError(_0x52e59d,null));};exports[_0x3703('0xc4')]=function(_0x463fc2,_0x57b98a){var _0x22f1df={};var _0x2a0e9d={};var _0x204c47;var _0x3d8210;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x463fc2[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x57b98a,null))[_0x3703('0x15')](function(_0x4078){if(_0x4078){_0x204c47=_0x4078;_0x2a0e9d[_0x3703('0x54')]=_['keys'](db[_0x3703('0xc5')][_0x3703('0x3e')]);_0x2a0e9d['query']=_[_0x3703('0x55')](_0x463fc2['query']);_0x2a0e9d[_0x3703('0xc6')]=_['intersection'](_0x2a0e9d[_0x3703('0x54')],_0x2a0e9d[_0x3703('0x44')]);_0x22f1df[_0x3703('0x46')]=_[_0x3703('0x56')](_0x2a0e9d[_0x3703('0x54')],qs[_0x3703('0x57')](_0x463fc2[_0x3703('0x44')][_0x3703('0x57')]));_0x22f1df[_0x3703('0x46')]=_0x22f1df[_0x3703('0x46')][_0x3703('0x4b')]?_0x22f1df[_0x3703('0x46')]:_0x2a0e9d['model'];_0x22f1df['order']=qs[_0x3703('0xc7')](_0x463fc2['query'][_0x3703('0xc7')]);_0x22f1df[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x463fc2[_0x3703('0x44')],_0x2a0e9d[_0x3703('0xc6')]));if(_0x463fc2[_0x3703('0x44')][_0x3703('0x32')]){_0x22f1df[_0x3703('0x43')]=_['merge'](_0x22f1df[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x22f1df[_0x3703('0x46')],function(_0x46ea00){var _0x8d7731={};_0x8d7731[_0x46ea00]={'$like':'%'+_0x463fc2[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x8d7731;})});}_0x22f1df=_[_0x3703('0xc9')]({},_0x22f1df,_0x463fc2[_0x3703('0x58')]);return _0x204c47[_0x3703('0xc4')](_0x22f1df);}})[_0x3703('0x15')](function(_0x42f4c5){if(_0x42f4c5){_0x3d8210=_0x42f4c5['length'];if(_0x463fc2[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xcb'))){_0x22f1df[_0x3703('0x45')]=[{'model':db[_0x3703('0xcc')],'as':'List','required':![]},{'model':db[_0x3703('0xcd')],'as':_0x3703('0xce'),'attributes':['id',_0x3703('0x38'),_0x3703('0xcf')],'where':_0x463fc2[_0x3703('0x44')][_0x3703('0xd0')]?{'id':_0x463fc2[_0x3703('0x44')]['tag']}:undefined,'required':_0x463fc2[_0x3703('0x44')]['tag']?!![]:![]}];}if(!_0x463fc2[_0x3703('0x44')]['hasOwnProperty']('nolimit')){_0x22f1df[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x463fc2[_0x3703('0x44')][_0x3703('0x27')]);_0x22f1df[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x463fc2[_0x3703('0x44')]['offset']);}return _0x204c47[_0x3703('0xc4')](_0x22f1df);}})['then'](function(_0x5417ea){if(_0x5417ea){return _0x5417ea?{'count':_0x3d8210,'rows':_0x5417ea}:null;}})[_0x3703('0x15')](respondWithResult(_0x57b98a,null))['catch'](handleError(_0x57b98a,null));};exports['getQueues']=function(_0xd5ac19,_0x3053b1){var _0x3cb864;var _0x217dc7;var _0x4fecd7={};var _0x32e2f3;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0xd5ac19[_0x3703('0x53')]['id']},'attributes':['id',_0x3703('0x38'),_0x3703('0x2b')]})[_0x3703('0x15')](handleEntityNotFound(_0x3053b1,null))[_0x3703('0x15')](function(_0x32a24b){if(!utils[_0x3703('0x9a')](_0xd5ac19[_0x3703('0x44')][_0x3703('0x96')])){throw new db[(_0x3703('0x8e'))]['ValidationError']('Unknown\x20channel');}_0x3cb864=_0x32a24b;var _0x1aba01={};_0x1aba01[_0x3703('0x54')]=_[_0x3703('0x55')](db[_[_0x3703('0xa1')](_0xd5ac19[_0x3703('0x44')][_0x3703('0x96')])+_0x3703('0xd1')][_0x3703('0x3e')]);_0x1aba01['query']=_['keys'](_0xd5ac19[_0x3703('0x44')]);_0x1aba01[_0x3703('0xc6')]=_['intersection'](_0x1aba01[_0x3703('0x54')],_0x1aba01[_0x3703('0x44')]);_0x4fecd7['attributes']=_[_0x3703('0x56')](_0x1aba01['model'],qs[_0x3703('0x57')](_0xd5ac19[_0x3703('0x44')]['fields']));_0x4fecd7[_0x3703('0x46')]=_0x4fecd7[_0x3703('0x46')][_0x3703('0x4b')]?_0x4fecd7[_0x3703('0x46')]:_0x1aba01[_0x3703('0x54')];_0x4fecd7[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0xd5ac19[_0x3703('0x44')][_0x3703('0xc7')]);_0x4fecd7[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0xd5ac19[_0x3703('0x44')],_0x1aba01[_0x3703('0xc6')]));if(_0xd5ac19['query']['filter']){_0x4fecd7[_0x3703('0x43')]=_['merge'](_0x4fecd7[_0x3703('0x43')],{'$or':_['map'](_0x4fecd7[_0x3703('0x46')],function(_0x40b895){var _0xacf7d1={};_0xacf7d1[_0x40b895]={'$like':'%'+_0xd5ac19[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0xacf7d1;})});}_0x4fecd7=_[_0x3703('0xc9')]({},_0x4fecd7,_0xd5ac19['options']);switch(_0x3cb864[_0x3703('0x2b')]){case _0x3703('0x2c'):return db[_[_0x3703('0xa1')](_0xd5ac19[_0x3703('0x44')][_0x3703('0x96')])+'Queue']['findAll'](_0x4fecd7);case _0x3703('0x2d'):case'agent':return _0x3cb864[_0x3703('0x2a')+_[_0x3703('0xa1')](_0xd5ac19[_0x3703('0x44')]['channel'])+_0x3703('0x9e')](_0x4fecd7);default:throw new db[(_0x3703('0x8e'))][(_0x3703('0x88'))]('Unknown\x20role');}})[_0x3703('0x15')](function(_0x48124d){_0x32e2f3=_0x48124d['length'];if(!_0xd5ac19[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x4fecd7['limit']=qs[_0x3703('0x27')](_0xd5ac19[_0x3703('0x44')]['limit']);_0x4fecd7[_0x3703('0x26')]=qs[_0x3703('0x26')](_0xd5ac19['query']['offset']);}switch(_0x3cb864['role']){case _0x3703('0x2c'):return db[_[_0x3703('0xa1')](_0xd5ac19[_0x3703('0x44')][_0x3703('0x96')])+_0x3703('0xd1')][_0x3703('0x48')](_0x4fecd7);case'user':case _0x3703('0x2f'):return _0x3cb864[_0x3703('0x2a')+_[_0x3703('0xa1')](_0xd5ac19[_0x3703('0x44')]['channel'])+_0x3703('0x9e')](_0x4fecd7);}})['then'](function(_0x38970b){return{'count':_0x32e2f3,'rows':_0x38970b};})[_0x3703('0x15')](respondWithResult(_0x3053b1,null))['catch'](handleError(_0x3053b1,null));};exports[_0x3703('0xd4')]=function(_0x40ac25,_0x79f315){var _0x55861e={};var _0x3988ce={};var _0x329a4a;var _0x34832b;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x40ac25[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x79f315,null))['then'](function(_0x438866){if(_0x438866){_0x329a4a=_0x438866;_0x3988ce[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xa8')][_0x3703('0x3e')]);_0x3988ce['query']=_[_0x3703('0x55')](_0x40ac25[_0x3703('0x44')]);_0x3988ce['filters']=_[_0x3703('0x56')](_0x3988ce[_0x3703('0x54')],_0x3988ce['query']);_0x55861e[_0x3703('0x46')]=_[_0x3703('0x56')](_0x3988ce[_0x3703('0x54')],qs['fields'](_0x40ac25[_0x3703('0x44')][_0x3703('0x57')]));_0x55861e[_0x3703('0x46')]=_0x55861e[_0x3703('0x46')][_0x3703('0x4b')]?_0x55861e[_0x3703('0x46')]:_0x3988ce[_0x3703('0x54')];_0x55861e[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x40ac25[_0x3703('0x44')][_0x3703('0xc7')]);_0x55861e[_0x3703('0x43')]=qs[_0x3703('0xc6')](_['pick'](_0x40ac25[_0x3703('0x44')],_0x3988ce[_0x3703('0xc6')]));if(_0x40ac25['query'][_0x3703('0x32')]){_0x55861e[_0x3703('0x43')]=_['merge'](_0x55861e[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x55861e[_0x3703('0x46')],function(_0x4c120f){var _0x316d19={};_0x316d19[_0x4c120f]={'$like':'%'+_0x40ac25[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x316d19;})});}_0x55861e=_[_0x3703('0xc9')]({},_0x55861e,_0x40ac25[_0x3703('0x58')]);return _0x329a4a[_0x3703('0xd4')](_0x55861e);}})['then'](function(_0x373920){if(_0x373920){_0x34832b=_0x373920[_0x3703('0x4b')];if(!_0x40ac25[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x55861e[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x40ac25[_0x3703('0x44')][_0x3703('0x27')]);_0x55861e[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x40ac25[_0x3703('0x44')]['offset']);}return _0x329a4a[_0x3703('0xd4')](_0x55861e);}})[_0x3703('0x15')](function(_0x1765ae){if(_0x1765ae){return _0x1765ae?{'count':_0x34832b,'rows':_0x1765ae}:null;}})[_0x3703('0x15')](respondWithResult(_0x79f315,null))[_0x3703('0x20')](handleError(_0x79f315,null));};exports[_0x3703('0xd5')]=function(_0x22705e,_0xba6963){var _0x26781f={};var _0x115b51={};var _0x199318;var _0x307826;return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x22705e[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0xba6963,null))['then'](function(_0xd889a3){if(_0xd889a3){_0x199318=_0xd889a3;_0x115b51['model']=_[_0x3703('0x55')](db['ChatGroup'][_0x3703('0x3e')]);_0x115b51[_0x3703('0x44')]=_['keys'](_0x22705e['query']);_0x115b51['filters']=_[_0x3703('0x56')](_0x115b51['model'],_0x115b51[_0x3703('0x44')]);_0x26781f[_0x3703('0x46')]=_['intersection'](_0x115b51[_0x3703('0x54')],qs[_0x3703('0x57')](_0x22705e[_0x3703('0x44')][_0x3703('0x57')]));_0x26781f[_0x3703('0x46')]=_0x26781f['attributes'][_0x3703('0x4b')]?_0x26781f[_0x3703('0x46')]:_0x115b51[_0x3703('0x54')];_0x26781f[_0x3703('0xd2')]=qs['sort'](_0x22705e['query']['sort']);_0x26781f[_0x3703('0x43')]=qs['filters'](_[_0x3703('0xc8')](_0x22705e[_0x3703('0x44')],_0x115b51[_0x3703('0xc6')]));if(_0x22705e['query'][_0x3703('0x32')]){_0x26781f[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x26781f[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x26781f[_0x3703('0x46')],function(_0x471b4d){var _0x2ad598={};_0x2ad598[_0x471b4d]={'$like':'%'+_0x22705e[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x2ad598;})});}_0x26781f=_[_0x3703('0xc9')]({},_0x26781f,_0x22705e[_0x3703('0x58')]);return _0x199318['getGroups'](_0x26781f);}})[_0x3703('0x15')](function(_0x5ad252){if(_0x5ad252){_0x307826=_0x5ad252[_0x3703('0x4b')];if(!_0x22705e[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x26781f['limit']=qs[_0x3703('0x27')](_0x22705e['query'][_0x3703('0x27')]);_0x26781f[_0x3703('0x26')]=qs['offset'](_0x22705e[_0x3703('0x44')][_0x3703('0x26')]);}return _0x199318[_0x3703('0xd5')](_0x26781f);}})[_0x3703('0x15')](function(_0x33b29c){if(_0x33b29c){return _0x33b29c?{'count':_0x307826,'rows':_0x33b29c}:null;}})['then'](respondWithResult(_0xba6963,null))[_0x3703('0x20')](handleError(_0xba6963,null));};exports[_0x3703('0xd6')]=function(_0x3bfc64,_0x497505){var _0x54b3ba={'raw':!![],'where':{}};var _0x12cb14={};var _0x5995b6={'count':0x0,'rows':[]};return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x3bfc64['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x497505,null))[_0x3703('0x15')](function(_0x26096b){if(_0x26096b){_0x12cb14[_0x3703('0x54')]=_[_0x3703('0x55')](db['VoiceRecording'][_0x3703('0x3e')]);_0x12cb14[_0x3703('0x44')]=_[_0x3703('0x55')](_0x3bfc64['query']);_0x12cb14['filters']=_['intersection'](_0x12cb14['model'],_0x12cb14[_0x3703('0x44')]);_0x54b3ba['attributes']=_[_0x3703('0x56')](_0x12cb14['model'],qs['fields'](_0x3bfc64['query'][_0x3703('0x57')]));_0x54b3ba['attributes']=_0x54b3ba[_0x3703('0x46')][_0x3703('0x4b')]?_0x54b3ba[_0x3703('0x46')]:_0x12cb14[_0x3703('0x54')];if(!_0x3bfc64['query'][_0x3703('0xca')]('nolimit')){_0x54b3ba['limit']=qs['limit'](_0x3bfc64[_0x3703('0x44')][_0x3703('0x27')]);_0x54b3ba[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x3bfc64[_0x3703('0x44')]['offset']);}_0x54b3ba[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x3bfc64[_0x3703('0x44')]['sort']);_0x54b3ba[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x3bfc64[_0x3703('0x44')],_0x12cb14[_0x3703('0xc6')]));_0x54b3ba[_0x3703('0x43')]['UserId']=_0x26096b['id'];if(_0x3bfc64[_0x3703('0x44')][_0x3703('0x32')]){_0x54b3ba[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x54b3ba[_0x3703('0x43')],{'$or':_['map'](_0x54b3ba[_0x3703('0x46')],function(_0x456fd5){var _0x3d3fc3={};_0x3d3fc3[_0x456fd5]={'$like':'%'+_0x3bfc64[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x3d3fc3;})});}_0x54b3ba=_[_0x3703('0xc9')]({},_0x54b3ba,_0x3bfc64['options']);return db['VoiceRecording'][_0x3703('0x25')]({'where':_0x54b3ba['where']})[_0x3703('0x15')](function(_0x2cc0be){_0x5995b6[_0x3703('0x25')]=_0x2cc0be;if(_0x3bfc64[_0x3703('0x44')][_0x3703('0xcb')]){_0x54b3ba[_0x3703('0x45')]=[{'all':!![]}];}return db[_0x3703('0xd7')][_0x3703('0x48')](_0x54b3ba);})[_0x3703('0x15')](function(_0x428816){_0x5995b6[_0x3703('0x4a')]=_0x428816;return _0x5995b6;});}})['then'](respondWithFilteredResult(_0x497505,_0x54b3ba))[_0x3703('0x20')](handleError(_0x497505,null));};exports['getScreenRecordings']=function(_0x46d6c8,_0xb6e14c){var _0x41dc3e={'raw':!![],'where':{}};var _0x101622={};var _0x57f537={'count':0x0,'rows':[]};return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x46d6c8[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0xb6e14c,null))[_0x3703('0x15')](function(_0x1a54fd){if(_0x1a54fd){_0x101622[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xd8')][_0x3703('0x3e')]);_0x101622['query']=_['keys'](_0x46d6c8[_0x3703('0x44')]);_0x101622[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x101622[_0x3703('0x54')],_0x101622[_0x3703('0x44')]);_0x41dc3e[_0x3703('0x46')]=_['intersection'](_0x101622['model'],qs[_0x3703('0x57')](_0x46d6c8[_0x3703('0x44')]['fields']));_0x41dc3e[_0x3703('0x46')]=_0x41dc3e[_0x3703('0x46')][_0x3703('0x4b')]?_0x41dc3e['attributes']:_0x101622['model'];if(!_0x46d6c8['query'][_0x3703('0xca')](_0x3703('0xd3'))){_0x41dc3e[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x46d6c8[_0x3703('0x44')][_0x3703('0x27')]);_0x41dc3e[_0x3703('0x26')]=qs['offset'](_0x46d6c8['query'][_0x3703('0x26')]);}_0x41dc3e[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x46d6c8[_0x3703('0x44')]['sort']);_0x41dc3e['where']=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x46d6c8[_0x3703('0x44')],_0x101622[_0x3703('0xc6')]));_0x41dc3e['where'][_0x3703('0xd9')]=_0x1a54fd['id'];if(_0x46d6c8[_0x3703('0x44')][_0x3703('0x32')]){_0x41dc3e[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x41dc3e['where'],{'$or':_[_0x3703('0x34')](_0x41dc3e[_0x3703('0x46')],function(_0x463e77){var _0x280ee6={};_0x280ee6[_0x463e77]={'$like':'%'+_0x46d6c8[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x280ee6;})});}_0x41dc3e=_[_0x3703('0xc9')]({},_0x41dc3e,_0x46d6c8['options']);return db[_0x3703('0xd8')][_0x3703('0x25')]({'where':_0x41dc3e[_0x3703('0x43')]})[_0x3703('0x15')](function(_0x2d8def){_0x57f537[_0x3703('0x25')]=_0x2d8def;if(_0x46d6c8[_0x3703('0x44')][_0x3703('0xcb')]){_0x41dc3e['include']=[{'all':!![]}];}return db[_0x3703('0xd8')][_0x3703('0x48')](_0x41dc3e);})[_0x3703('0x15')](function(_0x2ec58a){_0x57f537[_0x3703('0x4a')]=_0x2ec58a;return _0x57f537;});}})[_0x3703('0x15')](respondWithFilteredResult(_0xb6e14c,_0x41dc3e))[_0x3703('0x20')](handleError(_0xb6e14c,null));};exports[_0x3703('0xda')]=function(_0xe20779,_0x2dddee){var _0x222ecb={};var _0x1e8687={};var _0x49b364;var _0x1361a6;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0xe20779[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x2dddee,null))[_0x3703('0x15')](function(_0x3cc431){if(_0x3cc431){_0x49b364=_0x3cc431;_0x1e8687[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xdb')][_0x3703('0x3e')]);_0x1e8687[_0x3703('0x44')]=_[_0x3703('0x55')](_0xe20779[_0x3703('0x44')]);_0x1e8687[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x1e8687['model'],_0x1e8687[_0x3703('0x44')]);_0x222ecb[_0x3703('0x46')]=_['intersection'](_0x1e8687[_0x3703('0x54')],qs[_0x3703('0x57')](_0xe20779[_0x3703('0x44')][_0x3703('0x57')]));_0x222ecb['attributes']=_0x222ecb[_0x3703('0x46')][_0x3703('0x4b')]?_0x222ecb[_0x3703('0x46')]:_0x1e8687[_0x3703('0x54')];_0x222ecb[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0xe20779[_0x3703('0x44')][_0x3703('0xc7')]);_0x222ecb[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0xe20779[_0x3703('0x44')],_0x1e8687[_0x3703('0xc6')]));if(_0xe20779[_0x3703('0x44')][_0x3703('0x32')]){_0x222ecb[_0x3703('0x43')]=_['merge'](_0x222ecb[_0x3703('0x43')],{'$or':_['map'](_0x222ecb[_0x3703('0x46')],function(_0x5d4c31){var _0x46ea7f={};_0x46ea7f[_0x5d4c31]={'$like':'%'+_0xe20779[_0x3703('0x44')]['filter']+'%'};return _0x46ea7f;})});}_0x222ecb=_[_0x3703('0xc9')]({},_0x222ecb,_0xe20779['options']);return _0x49b364[_0x3703('0xda')](_0x222ecb);}})[_0x3703('0x15')](function(_0x1436d5){if(_0x1436d5){_0x1361a6=_0x1436d5[_0x3703('0x4b')];if(!_0xe20779[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x222ecb['limit']=qs[_0x3703('0x27')](_0xe20779[_0x3703('0x44')][_0x3703('0x27')]);_0x222ecb['offset']=qs[_0x3703('0x26')](_0xe20779[_0x3703('0x44')][_0x3703('0x26')]);}return _0x49b364[_0x3703('0xda')](_0x222ecb);}})[_0x3703('0x15')](function(_0x3548e9){if(_0x3548e9){return _0x3548e9?{'count':_0x1361a6,'rows':_0x3548e9}:null;}})[_0x3703('0x15')](respondWithResult(_0x2dddee,null))[_0x3703('0x20')](handleError(_0x2dddee,null));};exports[_0x3703('0xdc')]=function(_0x216829,_0x5ebd19){var _0xd7f610={};var _0x4464a8={};var _0x6ea86;var _0x4d9770;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x216829['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x5ebd19,null))[_0x3703('0x15')](function(_0x24df9c){if(_0x24df9c){_0x6ea86=_0x24df9c;_0x4464a8[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xdd')]['rawAttributes']);_0x4464a8[_0x3703('0x44')]=_[_0x3703('0x55')](_0x216829[_0x3703('0x44')]);_0x4464a8[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x4464a8[_0x3703('0x54')],_0x4464a8[_0x3703('0x44')]);_0xd7f610[_0x3703('0x46')]=_['intersection'](_0x4464a8[_0x3703('0x54')],qs[_0x3703('0x57')](_0x216829[_0x3703('0x44')]['fields']));_0xd7f610['attributes']=_0xd7f610['attributes'][_0x3703('0x4b')]?_0xd7f610[_0x3703('0x46')]:_0x4464a8[_0x3703('0x54')];_0xd7f610[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x216829['query'][_0x3703('0xc7')]);_0xd7f610[_0x3703('0x43')]=qs[_0x3703('0xc6')](_['pick'](_0x216829['query'],_0x4464a8['filters']));if(_0x216829[_0x3703('0x44')][_0x3703('0x32')]){_0xd7f610[_0x3703('0x43')]=_[_0x3703('0xc9')](_0xd7f610['where'],{'$or':_[_0x3703('0x34')](_0xd7f610[_0x3703('0x46')],function(_0x24923b){var _0x126dfb={};_0x126dfb[_0x24923b]={'$like':'%'+_0x216829[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x126dfb;})});}_0xd7f610=_[_0x3703('0xc9')]({},_0xd7f610,_0x216829[_0x3703('0x58')]);return _0x6ea86[_0x3703('0xdc')](_0xd7f610);}})[_0x3703('0x15')](function(_0x3f7c60){if(_0x3f7c60){_0x4d9770=_0x3f7c60[_0x3703('0x4b')];if(!_0x216829[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0xd7f610[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x216829['query'][_0x3703('0x27')]);_0xd7f610[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x216829['query']['offset']);}return _0x6ea86[_0x3703('0xdc')](_0xd7f610);}})[_0x3703('0x15')](function(_0x599598){if(_0x599598){return _0x599598?{'count':_0x4d9770,'rows':_0x599598}:null;}})['then'](respondWithResult(_0x5ebd19,null))[_0x3703('0x20')](handleError(_0x5ebd19,null));};exports[_0x3703('0xde')]=function(_0x3017a4,_0x16db5a){var _0x14d7b6={'raw':!![],'where':{}};var _0x14d6d1={};var _0x5a94d5={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x3017a4[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x16db5a,null))[_0x3703('0x15')](function(_0x599445){if(_0x599445){_0x14d6d1[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xdf')][_0x3703('0x3e')]);_0x14d6d1[_0x3703('0x44')]=_[_0x3703('0x55')](_0x3017a4[_0x3703('0x44')]);_0x14d6d1[_0x3703('0xc6')]=_['intersection'](_0x14d6d1['model'],_0x14d6d1[_0x3703('0x44')]);_0x14d7b6['attributes']=_[_0x3703('0x56')](_0x14d6d1['model'],qs[_0x3703('0x57')](_0x3017a4[_0x3703('0x44')]['fields']));_0x14d7b6[_0x3703('0x46')]=_0x14d7b6['attributes'][_0x3703('0x4b')]?_0x14d7b6[_0x3703('0x46')]:_0x14d6d1[_0x3703('0x54')];if(!_0x3017a4['query'][_0x3703('0xca')]('nolimit')){_0x14d7b6['limit']=qs[_0x3703('0x27')](_0x3017a4['query'][_0x3703('0x27')]);_0x14d7b6[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x3017a4[_0x3703('0x44')]['offset']);}_0x14d7b6[_0x3703('0xd2')]=qs['sort'](_0x3017a4[_0x3703('0x44')]['sort']);_0x14d7b6[_0x3703('0x43')]=qs['filters'](_[_0x3703('0xc8')](_0x3017a4[_0x3703('0x44')],_0x14d6d1[_0x3703('0xc6')]));_0x14d7b6['where'][_0x3703('0xd9')]=_0x599445['id'];if(_0x3017a4['query'][_0x3703('0x32')]){_0x14d7b6['where']=_[_0x3703('0xc9')](_0x14d7b6[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x14d7b6['attributes'],function(_0x202a08){var _0x398fe0={};_0x398fe0[_0x202a08]={'$like':'%'+_0x3017a4[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x398fe0;})});}_0x14d7b6=_[_0x3703('0xc9')]({},_0x14d7b6,_0x3017a4[_0x3703('0x58')]);return db['MailInteraction'][_0x3703('0x25')]({'where':_0x14d7b6[_0x3703('0x43')]})['then'](function(_0x9a2873){_0x5a94d5[_0x3703('0x25')]=_0x9a2873;if(_0x3017a4[_0x3703('0x44')][_0x3703('0xcb')]){_0x14d7b6[_0x3703('0x45')]=[{'all':!![]}];}return db['MailInteraction'][_0x3703('0x48')](_0x14d7b6);})[_0x3703('0x15')](function(_0x192489){_0x5a94d5['rows']=_0x192489;return _0x5a94d5;});}})[_0x3703('0x15')](respondWithFilteredResult(_0x16db5a,_0x14d7b6))[_0x3703('0x20')](handleError(_0x16db5a,null));};exports[_0x3703('0xe0')]=function(_0x583b99,_0x1ded64){var _0x40b344={};var _0x493ca2={};var _0x5f533f;var _0x28499f;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x583b99[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x1ded64,null))[_0x3703('0x15')](function(_0x159455){if(_0x159455){_0x5f533f=_0x159455;_0x493ca2[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xe1')][_0x3703('0x3e')]);_0x493ca2[_0x3703('0x44')]=_['keys'](_0x583b99[_0x3703('0x44')]);_0x493ca2[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x493ca2[_0x3703('0x54')],_0x493ca2[_0x3703('0x44')]);_0x40b344[_0x3703('0x46')]=_[_0x3703('0x56')](_0x493ca2[_0x3703('0x54')],qs[_0x3703('0x57')](_0x583b99[_0x3703('0x44')][_0x3703('0x57')]));_0x40b344[_0x3703('0x46')]=_0x40b344[_0x3703('0x46')]['length']?_0x40b344[_0x3703('0x46')]:_0x493ca2[_0x3703('0x54')];_0x40b344[_0x3703('0xd2')]=qs['sort'](_0x583b99[_0x3703('0x44')][_0x3703('0xc7')]);_0x40b344[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x583b99[_0x3703('0x44')],_0x493ca2[_0x3703('0xc6')]));if(_0x583b99[_0x3703('0x44')]['filter']){_0x40b344[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x40b344[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x40b344[_0x3703('0x46')],function(_0x49aece){var _0x5966fd={};_0x5966fd[_0x49aece]={'$like':'%'+_0x583b99[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x5966fd;})});}_0x40b344=_['merge']({},_0x40b344,_0x583b99[_0x3703('0x58')]);return _0x5f533f[_0x3703('0xe0')](_0x40b344);}})[_0x3703('0x15')](function(_0x400e9b){if(_0x400e9b){_0x28499f=_0x400e9b['length'];if(!_0x583b99['query'][_0x3703('0xca')](_0x3703('0xd3'))){_0x40b344[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x583b99['query']['limit']);_0x40b344[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x583b99[_0x3703('0x44')]['offset']);}return _0x5f533f[_0x3703('0xe0')](_0x40b344);}})['then'](function(_0x5105ff){if(_0x5105ff){return _0x5105ff?{'count':_0x28499f,'rows':_0x5105ff}:null;}})[_0x3703('0x15')](respondWithResult(_0x1ded64,null))[_0x3703('0x20')](handleError(_0x1ded64,null));};exports['getFaxInteractions']=function(_0xa01719,_0x40effb){var _0x1eb54e={};var _0x2af4e6={};var _0x326348;var _0xf1ac0c;return db['User'][_0x3703('0x8f')]({'where':{'id':_0xa01719[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x40effb,null))['then'](function(_0x2fe18e){if(_0x2fe18e){_0x326348=_0x2fe18e;_0x2af4e6[_0x3703('0x54')]=_['keys'](db[_0x3703('0xe2')][_0x3703('0x3e')]);_0x2af4e6[_0x3703('0x44')]=_[_0x3703('0x55')](_0xa01719['query']);_0x2af4e6['filters']=_['intersection'](_0x2af4e6[_0x3703('0x54')],_0x2af4e6[_0x3703('0x44')]);_0x1eb54e['attributes']=_[_0x3703('0x56')](_0x2af4e6['model'],qs['fields'](_0xa01719[_0x3703('0x44')][_0x3703('0x57')]));_0x1eb54e[_0x3703('0x46')]=_0x1eb54e['attributes']['length']?_0x1eb54e['attributes']:_0x2af4e6['model'];_0x1eb54e['order']=qs[_0x3703('0xc7')](_0xa01719[_0x3703('0x44')]['sort']);_0x1eb54e[_0x3703('0x43')]=qs[_0x3703('0xc6')](_['pick'](_0xa01719[_0x3703('0x44')],_0x2af4e6['filters']));if(_0xa01719[_0x3703('0x44')][_0x3703('0x32')]){_0x1eb54e[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x1eb54e['where'],{'$or':_[_0x3703('0x34')](_0x1eb54e[_0x3703('0x46')],function(_0x24903d){var _0x4f3995={};_0x4f3995[_0x24903d]={'$like':'%'+_0xa01719['query'][_0x3703('0x32')]+'%'};return _0x4f3995;})});}_0x1eb54e=_[_0x3703('0xc9')]({},_0x1eb54e,_0xa01719['options']);return _0x326348[_0x3703('0xe3')](_0x1eb54e);}})['then'](function(_0x4ec349){if(_0x4ec349){_0xf1ac0c=_0x4ec349['length'];if(!_0xa01719[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x1eb54e[_0x3703('0x27')]=qs[_0x3703('0x27')](_0xa01719['query'][_0x3703('0x27')]);_0x1eb54e[_0x3703('0x26')]=qs[_0x3703('0x26')](_0xa01719['query']['offset']);}return _0x326348[_0x3703('0xe3')](_0x1eb54e);}})[_0x3703('0x15')](function(_0x149beb){if(_0x149beb){return _0x149beb?{'count':_0xf1ac0c,'rows':_0x149beb}:null;}})[_0x3703('0x15')](respondWithResult(_0x40effb,null))[_0x3703('0x20')](handleError(_0x40effb,null));};exports['getWhatsappInteractions']=function(_0x47a187,_0x5869f5){var _0x3ad7c9={};var _0x53fd83={};var _0xdc33bd;var _0x574aab;return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x47a187['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x5869f5,null))[_0x3703('0x15')](function(_0x3759d6){if(_0x3759d6){_0xdc33bd=_0x3759d6;_0x53fd83[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0xe4')]['rawAttributes']);_0x53fd83['query']=_[_0x3703('0x55')](_0x47a187['query']);_0x53fd83[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x53fd83[_0x3703('0x54')],_0x53fd83[_0x3703('0x44')]);_0x3ad7c9['attributes']=_[_0x3703('0x56')](_0x53fd83[_0x3703('0x54')],qs[_0x3703('0x57')](_0x47a187[_0x3703('0x44')][_0x3703('0x57')]));_0x3ad7c9[_0x3703('0x46')]=_0x3ad7c9[_0x3703('0x46')][_0x3703('0x4b')]?_0x3ad7c9[_0x3703('0x46')]:_0x53fd83['model'];_0x3ad7c9[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x47a187[_0x3703('0x44')][_0x3703('0xc7')]);_0x3ad7c9[_0x3703('0x43')]=qs[_0x3703('0xc6')](_['pick'](_0x47a187['query'],_0x53fd83[_0x3703('0xc6')]));if(_0x47a187['query']['filter']){_0x3ad7c9[_0x3703('0x43')]=_['merge'](_0x3ad7c9['where'],{'$or':_['map'](_0x3ad7c9['attributes'],function(_0x4d678e){var _0x1b018e={};_0x1b018e[_0x4d678e]={'$like':'%'+_0x47a187['query']['filter']+'%'};return _0x1b018e;})});}_0x3ad7c9=_[_0x3703('0xc9')]({},_0x3ad7c9,_0x47a187[_0x3703('0x58')]);return _0xdc33bd[_0x3703('0xe5')](_0x3ad7c9);}})['then'](function(_0x4e8691){if(_0x4e8691){_0x574aab=_0x4e8691[_0x3703('0x4b')];if(!_0x47a187[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x3ad7c9[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x47a187[_0x3703('0x44')][_0x3703('0x27')]);_0x3ad7c9[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x47a187['query'][_0x3703('0x26')]);}return _0xdc33bd[_0x3703('0xe5')](_0x3ad7c9);}})['then'](function(_0x512794){if(_0x512794){return _0x512794?{'count':_0x574aab,'rows':_0x512794}:null;}})[_0x3703('0x15')](respondWithResult(_0x5869f5,null))[_0x3703('0x20')](handleError(_0x5869f5,null));};exports[_0x3703('0xe6')]=function(_0x28482a,_0x1f2425,_0x27f39b){var _0x387eca;var _0x38fd73;var _0x3884c9;var _0x118254=!_[_0x3703('0x63')](_0x28482a[_0x3703('0x53')]['id'])?_0x28482a[_0x3703('0x53')]['id']:!_[_0x3703('0x63')](_0x28482a[_0x3703('0x2d')]['id'])?_0x28482a['user']['id']:null;return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x118254,'role':{'$or':[_0x3703('0x2c'),_0x3703('0x2d'),_0x3703('0x2f')]}},'attributes':['id',_0x3703('0x38'),'phone',_0x3703('0xe7'),_0x3703('0x2b'),_0x3703('0x62'),_0x3703('0x98')]})[_0x3703('0x15')](function(_0x59c01d){if(_0x59c01d){if(_0x59c01d[_0x3703('0x2b')]==='agent'){_0x387eca=_0x59c01d;if(_0x28482a[_0x3703('0x5c')][_0x3703('0x99')]){_0x3884c9=util['format'](_0x3703('0xe8'),_0x387eca[_0x28482a[_0x3703('0x5c')][_0x3703('0x99')]]);}else if(_0x28482a['body'][_0x3703('0xe9')]){_0x3884c9=util[_0x3703('0xea')]('SIP/%s',_0x28482a[_0x3703('0x5c')]['intrf']);}else{_0x3884c9=util[_0x3703('0xea')](_0x3703('0xa6'),_0x387eca['name']);}socket['to'](util[_0x3703('0xea')](_0x3703('0xeb'),_0x387eca[_0x3703('0x38')]))[_0x3703('0xa3')](_0x3703('0xec'),{'user':{'id':_0x387eca['id'],'name':_0x387eca[_0x3703('0x38')]},'ip':_0x28482a[_0x3703('0xed')][_0x3703('0xee')]||_0x28482a[_0x3703('0xef')][_0x3703('0xf0')]||_0x28482a[_0x3703('0xf1')][_0x3703('0xf0')]||_0x28482a[_0x3703('0xef')]['socket'][_0x3703('0xf0')]});return db[_0x3703('0xa8')][_0x3703('0x29')]({'where':{'membername':_0x387eca[_0x3703('0x38')]},'individualHooks':!![]});}}else{throw new db[(_0x3703('0x8e'))]['ValidationError'](_0x3703('0xf2'));}})['then'](function(){if(_0x387eca){return _0x387eca[_0x3703('0xf3')]({'raw':!![]});}})[_0x3703('0x15')](function(_0x1c87e4){if(_0x387eca){var _0x386e26=[];if(_0x1c87e4){_0x38fd73=_0x1c87e4;if(_0x38fd73[_0x3703('0x4b')]){for(var _0xbf3fb1=0x0;_0xbf3fb1<_0x38fd73['length'];_0xbf3fb1++){_0x386e26[_0x3703('0x47')]({'membername':_0x387eca[_0x3703('0x38')],'UserId':_0x387eca['id'],'queue_name':_0x38fd73[_0xbf3fb1][_0x3703('0x38')],'VoiceQueueId':_0x38fd73[_0xbf3fb1]['id'],'interface':_0x3884c9,'paused':_0x387eca['loginInPause']||![],'penalty':_0x38fd73[_0xbf3fb1][_0x3703('0xf4')]||0x0});}return BPromise['each'](_0x386e26,function(_0x543e87){return db[_0x3703('0xa8')][_0x3703('0xf5')](_0x543e87);});}}}})[_0x3703('0x15')](function(){if(_0x387eca){return db[_0x3703('0xf6')][_0x3703('0x48')]({'where':{'membername':_0x387eca[_0x3703('0x38')],'exitAt':null}});}})[_0x3703('0x15')](function(_0x5855f9){if(_0x387eca){var _0x5efc61=[];_0x5855f9[_0x3703('0xf7')](function(_0x40321f){_0x5efc61[_0x3703('0x47')](_0x40321f['update']({'exitAt':moment()['format'](_0x3703('0xf8'))}));});return BPromise[_0x3703('0x5a')](_0x5efc61);}})[_0x3703('0x15')](function(){if(_0x387eca){var _0x4b2290=[];var _0xcb0518=[];var _0x3046e5=utils['getChannels']();var _0x369932={'membername':_0x387eca[_0x3703('0x38')],'interface':_0x3884c9,'enterAt':moment()[_0x3703('0xea')](_0x3703('0xf8')),'role':_0x387eca[_0x3703('0x2b')],'internal':_0x387eca[_0x3703('0x62')]};_0x3046e5[_0x3703('0xf7')](function(_0x5c0c08){_0x4b2290[_0x3703('0x47')](_[_0x3703('0xc9')]({'channel':_0x5c0c08,'type':_0x3703('0xf9'),'data1':_0x28482a['body'][_0x3703('0xfa')],'data2':_0x3884c9},_0x369932));if(_0x387eca[_0x3703('0x98')]){_0xcb0518[_0x3703('0x47')](_[_0x3703('0xc9')]({'channel':_0x5c0c08,'type':'PAUSE','data1':_0x3703('0xfb')},_0x369932));}});return db[_0x3703('0xf6')]['bulkCreate'](_0x4b2290[_0x3703('0xfc')](_0xcb0518),{'individualHooks':!![]});}})[_0x3703('0x15')](function(){if(_0x387eca){return _0x387eca['update']({'online':!![],'lastLoginAt':moment()[_0x3703('0xea')](_0x3703('0xf8')),'voicePause':_0x387eca['loginInPause']||![],'mailPause':_0x387eca[_0x3703('0x98')]||![],'chatPause':_0x387eca[_0x3703('0x98')]||![],'faxPause':_0x387eca[_0x3703('0x98')]||![],'smsPause':_0x387eca[_0x3703('0x98')]||![],'openchannelPause':_0x387eca[_0x3703('0x98')]||![],'whatsappPause':_0x387eca[_0x3703('0x98')]||![],'pauseType':_0x387eca[_0x3703('0x98')]?'LOGININPAUSE':null,'interface':_0x3884c9,'lastPauseAt':moment()[_0x3703('0xea')](_0x3703('0xf8'))});}})[_0x3703('0x15')](function(_0x4fd3d7){if(_0x28482a[_0x3703('0xfd')]){return _0x27f39b();}else{return BPromise['resolve'](_0x4fd3d7)[_0x3703('0x15')](respondWithResult(_0x1f2425,null));}})[_0x3703('0x20')](handleError(_0x1f2425,null));};exports['logout']=function(_0x57f41c,_0x39310c){var _0x206dde;return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x57f41c['params']['id'],'role':'agent'},'attributes':['id',_0x3703('0x38'),_0x3703('0x2b')]})['then'](handleEntityNotFound(_0x39310c,null))['then'](function(_0x65ec3){if(_0x65ec3){_0x206dde=_0x65ec3;return db[_0x3703('0xa8')][_0x3703('0x29')]({'where':{'membername':_0x206dde['name']},'individualHooks':!![]});}})[_0x3703('0x15')](function(){return db[_0x3703('0xf6')][_0x3703('0x48')]({'where':{'membername':_0x206dde['name'],'exitAt':null}});})[_0x3703('0x15')](function(_0x10f4f5){var _0x3c5216=[];_0x10f4f5[_0x3703('0xf7')](function(_0x535cdf){_0x3c5216[_0x3703('0x47')](_0x535cdf['update']({'exitAt':moment()[_0x3703('0xea')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x3c5216);})[_0x3703('0x15')](function(){return _0x206dde[_0x3703('0x5b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x3703('0x15')](respondWithResult(_0x39310c,null))['catch'](handleError(_0x39310c,null));};exports['pause']=function(_0x54058b,_0x2b6039){var _0x439aa8;return db[_0x3703('0xa8')][_0x3703('0x5b')]({'paused':0x1},{'where':{'UserId':_0x54058b[_0x3703('0x53')]['id']},'individualHooks':!![]})[_0x3703('0x15')](function(){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x54058b[_0x3703('0x53')]['id'],'role':_0x3703('0x2f')},'attributes':['id',_0x3703('0x38'),_0x3703('0x2b'),'internal',_0x3703('0x99')]});})[_0x3703('0x15')](handleEntityNotFound(_0x2b6039,null))[_0x3703('0x15')](function(_0x557793){if(_0x557793){_0x439aa8=_0x557793;return respondWithRpcPromise(_0x3703('0xfe'),_0x3703('0xff'),{'id':_0x439aa8['id'],'name':_0x439aa8[_0x3703('0x38')],'pause':!![]});}})[_0x3703('0x15')](function(){if(_0x439aa8){return db[_0x3703('0xf6')][_0x3703('0x48')]({'where':{'membername':_0x439aa8[_0x3703('0x38')],'type':'PAUSE','exitAt':null}});}})[_0x3703('0x15')](function(_0x74efd0){if(_0x74efd0['length']){var _0x3ca5cc=moment()[_0x3703('0xea')](_0x3703('0xf8'));for(var _0x9af72=0x0,_0x4ade54=_0x74efd0[_0x3703('0x4b')];_0x9af72<_0x4ade54;_0x9af72++){_0x74efd0[_0x9af72][_0x3703('0x100')]({'exitAt':_0x3ca5cc});}}})[_0x3703('0x15')](function(){var _0x56a860=[];var _0x43b02d=utils['getChannels']();_0x43b02d['forEach'](function(_0x282b14){_0x56a860[_0x3703('0x47')]({'channel':_0x282b14,'membername':_0x439aa8[_0x3703('0x38')],'interface':_[_0x3703('0x63')](_0x439aa8[_0x3703('0x99')])?util['format'](_0x3703('0xa6'),_0x439aa8['name']):_0x439aa8['interface'],'type':'PAUSE','enterAt':moment()[_0x3703('0xea')](_0x3703('0xf8')),'data1':_0x54058b[_0x3703('0x5c')][_0x3703('0x101')]||_0x3703('0x102'),'role':_0x439aa8[_0x3703('0x2b')],'internal':_0x439aa8[_0x3703('0x62')]});});return db['MemberReport']['bulkCreate'](_0x56a860,{'individualHooks':!![]});})[_0x3703('0x15')](function(){return _0x439aa8[_0x3703('0x5b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x54058b['body'][_0x3703('0x101')]||_0x3703('0x102'),'lastPauseAt':moment()[_0x3703('0xea')](_0x3703('0xf8'))});})[_0x3703('0x15')](respondWithResult(_0x2b6039,null))[_0x3703('0x20')](handleError(_0x2b6039,null));};exports['unpause']=function(_0x2a61f5,_0x31e24a){var _0x3b9b93;return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x2a61f5['params']['id']},'attributes':['id','name','role',_0x3703('0xa7'),_0x3703('0x103'),_0x3703('0x104'),_0x3703('0x105'),'openchannelPause',_0x3703('0x106'),_0x3703('0x107'),_0x3703('0x108'),_0x3703('0x109')]})[_0x3703('0x15')](handleEntityNotFound(_0x31e24a,null))[_0x3703('0x15')](function(_0x3c8e5e){if(_0x3c8e5e){_0x3b9b93=_0x3c8e5e;if(_0x2a61f5[_0x3703('0x5c')][_0x3703('0x96')]&&!utils[_0x3703('0x9a')](_0x2a61f5['body'][_0x3703('0x96')])){throw new db['Sequelize']['ValidationError'](_0x3703('0x9b'));}switch(_0x2a61f5['body']['channel']){case'voice':return respondWithRpcPromise(_0x3703('0xfe'),'unpause',{'id':_0x3b9b93['id'],'name':_0x3b9b93[_0x3703('0x38')],'pause':![]})[_0x3703('0x15')](function(){return db[_0x3703('0xa8')][_0x3703('0x5b')]({'paused':0x0},{'where':{'UserId':_0x3b9b93['id']},'individualHooks':!![]});})['then'](function(){return db[_0x3703('0xf6')][_0x3703('0x37')]({'where':{'channel':_0x2a61f5[_0x3703('0x5c')][_0x3703('0x96')],'membername':_0x3b9b93[_0x3703('0x38')],'type':_0x3703('0x10a'),'exitAt':null}});})['then'](function(_0x123f8c){if(_0x123f8c){return _0x123f8c['update']({'exitAt':moment()[_0x3703('0xea')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x3703('0x10b')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x3b9b93['update']({'voicePause':![]});});case _0x3703('0x4f'):case _0x3703('0x4c'):case _0x3703('0xb8'):case _0x3703('0x4e'):case _0x3703('0x51'):case _0x3703('0x50'):return db[_0x3703('0xf6')][_0x3703('0x37')]({'where':{'channel':_0x2a61f5[_0x3703('0x5c')][_0x3703('0x96')],'membername':_0x3b9b93[_0x3703('0x38')],'type':_0x3703('0x10a'),'exitAt':null}})['then'](function(_0x3a71f1){if(_0x3a71f1){return _0x3a71f1[_0x3703('0x5b')]({'exitAt':moment()[_0x3703('0xea')](_0x3703('0xf8')),'data2':_0x3703('0x10b')},{'individualHooks':!![]});}return null;})[_0x3703('0x15')](function(){var _0x17e432={};_['set'](_0x17e432,util[_0x3703('0xea')](_0x3703('0x10c'),_0x2a61f5['body']['channel'],_0x3703('0x10d')),![]);return _0x3b9b93[_0x3703('0x5b')](_0x17e432);});default:return respondWithRpcPromise('QueuePause','unpause',{'id':_0x3b9b93['id'],'name':_0x3b9b93[_0x3703('0x38')],'pause':![]})[_0x3703('0x15')](function(){return db[_0x3703('0xa8')][_0x3703('0x5b')]({'paused':0x0},{'where':{'UserId':_0x3b9b93['id']}});})[_0x3703('0x15')](function(){return db[_0x3703('0xf6')]['findAll']({'where':{'membername':_0x3b9b93['name'],'type':_0x3703('0x10a'),'exitAt':null}});})[_0x3703('0x15')](function(_0x15efcd){var _0xaf3557=[];_0x15efcd[_0x3703('0xf7')](function(_0x9fff56){_0xaf3557[_0x3703('0x47')](_0x9fff56['update']({'exitAt':moment()[_0x3703('0xea')](_0x3703('0xf8')),'data2':_0x3703('0x10b')}));});return BPromise[_0x3703('0x5a')](_0xaf3557);})[_0x3703('0x15')](function(){return _0x3b9b93[_0x3703('0x5b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x31e24a,null))[_0x3703('0x20')](handleError(_0x31e24a,null));};exports[_0x3703('0x10e')]=function(_0x18db52,_0xed5e0d){var _0x430ce2={};var _0x58edad={};var _0x1f0a73;var _0x56bd88;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x18db52[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0xed5e0d,null))[_0x3703('0x15')](function(_0x9407f5){if(_0x9407f5){_0x1f0a73=_0x9407f5;_0x58edad[_0x3703('0x54')]=_['keys'](db['Team'][_0x3703('0x3e')]);_0x58edad[_0x3703('0x44')]=_[_0x3703('0x55')](_0x18db52['query']);_0x58edad[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x58edad['model'],_0x58edad[_0x3703('0x44')]);_0x430ce2[_0x3703('0x46')]=_[_0x3703('0x56')](_0x58edad[_0x3703('0x54')],qs['fields'](_0x18db52[_0x3703('0x44')][_0x3703('0x57')]));_0x430ce2[_0x3703('0x46')]=_0x430ce2['attributes'][_0x3703('0x4b')]?_0x430ce2[_0x3703('0x46')]:_0x58edad[_0x3703('0x54')];_0x430ce2[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x18db52[_0x3703('0x44')][_0x3703('0xc7')]);_0x430ce2[_0x3703('0x43')]=qs['filters'](_[_0x3703('0xc8')](_0x18db52[_0x3703('0x44')],_0x58edad[_0x3703('0xc6')]));if(_0x18db52[_0x3703('0x44')][_0x3703('0x32')]){_0x430ce2[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x430ce2['where'],{'$or':_[_0x3703('0x34')](_0x430ce2['attributes'],function(_0x40d51e){var _0x2a86d3={};_0x2a86d3[_0x40d51e]={'$like':'%'+_0x18db52['query'][_0x3703('0x32')]+'%'};return _0x2a86d3;})});}_0x430ce2=_[_0x3703('0xc9')]({},_0x430ce2,_0x18db52[_0x3703('0x58')]);return _0x1f0a73[_0x3703('0x10e')](_0x430ce2);}})['then'](function(_0x2c5b7f){if(_0x2c5b7f){_0x56bd88=_0x2c5b7f[_0x3703('0x4b')];if(!_0x18db52[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x430ce2['limit']=qs[_0x3703('0x27')](_0x18db52[_0x3703('0x44')][_0x3703('0x27')]);_0x430ce2['offset']=qs[_0x3703('0x26')](_0x18db52[_0x3703('0x44')][_0x3703('0x26')]);}return _0x1f0a73[_0x3703('0x10e')](_0x430ce2);}})[_0x3703('0x15')](function(_0xaee771){if(_0xaee771){return _0xaee771?{'count':_0x56bd88,'rows':_0xaee771}:null;}})[_0x3703('0x15')](respondWithResult(_0xed5e0d,null))[_0x3703('0x20')](handleError(_0xed5e0d,null));};exports['addTeams']=function(_0x314c2a,_0x36f0de){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x314c2a[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x36f0de,null))['then'](function(_0x3e15f9){if(_0x3e15f9){var _0x2bcf2d=_0x3e15f9[_0x3703('0x2a')]({'plain':!![]});return _0x3e15f9['addTeams'](_0x314c2a[_0x3703('0x5c')]['ids'],_[_0x3703('0x60')](_0x314c2a[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})[_0x3703('0x15')](function(){for(var _0xeba766=0x0;_0xeba766<_0x314c2a[_0x3703('0x5c')][_0x3703('0x5f')][_0x3703('0x4b')];_0xeba766++){var _0x4161d3=[];db[_0x3703('0x10f')]['findOne']({'where':{'id':_0x314c2a['body'][_0x3703('0x5f')][_0xeba766]}})[_0x3703('0x15')](function(_0x51c4c2){_0x4161d3[_0x3703('0x47')](_0x51c4c2[_0x3703('0xf3')]()[_0x3703('0x15')](function(_0x55acdd){for(var _0x259713=0x0;_0x259713<_0x55acdd[_0x3703('0x4b')];_0x259713++){_0x55acdd[_0x259713][_0x3703('0x110')]('channel','Voice');}return _0x55acdd;}));_0x4161d3['push'](_0x51c4c2[_0x3703('0x111')]()[_0x3703('0x15')](function(_0x1df051){for(var _0x43d34e=0x0;_0x43d34e<_0x1df051[_0x3703('0x4b')];_0x43d34e++){_0x1df051[_0x43d34e][_0x3703('0x110')](_0x3703('0x96'),_0x3703('0x112'));}return _0x1df051;}));_0x4161d3[_0x3703('0x47')](_0x51c4c2['getMailQueues']()[_0x3703('0x15')](function(_0x2931d3){for(var _0x488858=0x0;_0x488858<_0x2931d3[_0x3703('0x4b')];_0x488858++){_0x2931d3[_0x488858][_0x3703('0x110')](_0x3703('0x96'),_0x3703('0x113'));}return _0x2931d3;}));_0x4161d3[_0x3703('0x47')](_0x51c4c2[_0x3703('0x114')]()[_0x3703('0x15')](function(_0x2af33e){for(var _0x183fda=0x0;_0x183fda<_0x2af33e['length'];_0x183fda++){_0x2af33e[_0x183fda][_0x3703('0x110')](_0x3703('0x96'),_0x3703('0x115'));}return _0x2af33e;}));_0x4161d3[_0x3703('0x47')](_0x51c4c2[_0x3703('0x116')]()['then'](function(_0x27455b){for(var _0x282eff=0x0;_0x282eff<_0x27455b[_0x3703('0x4b')];_0x282eff++){_0x27455b[_0x282eff][_0x3703('0x110')]('channel',_0x3703('0x117'));}return _0x27455b;}));_0x4161d3[_0x3703('0x47')](_0x51c4c2['getFaxQueues']()[_0x3703('0x15')](function(_0x2876a5){for(var _0x3d8443=0x0;_0x3d8443<_0x2876a5[_0x3703('0x4b')];_0x3d8443++){_0x2876a5[_0x3d8443][_0x3703('0x110')]('channel',_0x3703('0x118'));}return _0x2876a5;}));_0x4161d3[_0x3703('0x47')](_0x51c4c2['getOpenchannelQueues']()[_0x3703('0x15')](function(_0x244486){for(var _0x9a0e5d=0x0;_0x9a0e5d<_0x244486['length'];_0x9a0e5d++){_0x244486[_0x9a0e5d][_0x3703('0x110')](_0x3703('0x96'),'Openchannel');}return _0x244486;}));return BPromise[_0x3703('0x5a')](_0x4161d3);})[_0x3703('0x15')](function(_0x51a4b7){var _0x13c522=_[_0x3703('0x119')](_0x51a4b7);_0x4161d3=[];return db[_0x3703('0x65')][_0x3703('0x11a')](function(_0x48054e){for(var _0x4aa0dd=0x0;_0x4aa0dd<_0x13c522[_0x3703('0x4b')];_0x4aa0dd++){_0x4161d3[_0x3703('0x47')](_0x13c522[_0x4aa0dd][_0x3703('0x11b')](_0x2bcf2d['id']),{'transaction':_0x48054e});}return BPromise[_0x3703('0x5a')](_0x4161d3)[_0x3703('0x15')](function(){if(_0x2bcf2d['online']){return BPromise[_0x3703('0x83')](_[_0x3703('0x32')](_0x13c522,function(_0x4ecafc){return _0x4ecafc[_0x3703('0x11c')](_0x3703('0x96'))==='Voice';}),function(_0x384baf){return db[_0x3703('0xa8')][_0x3703('0xf5')]({'membername':_0x2bcf2d[_0x3703('0x38')],'UserId':_0x2bcf2d['id'],'queue_name':_0x384baf['name'],'VoiceQueueId':_0x384baf['id'],'interface':_[_0x3703('0x63')](_0x2bcf2d[_0x3703('0x99')])?util['format'](_0x3703('0xa6'),_0x2bcf2d[_0x3703('0x38')]):_0x2bcf2d['interface'],'paused':_0x2bcf2d[_0x3703('0xa7')]||![],'penalty':_0x2bcf2d[_0x3703('0x9f')]},{'transaction':_0x48054e});});}else{return;}})['then'](function(){for(var _0x2da936=0x0;_0x2da936<_0x13c522[_0x3703('0x4b')];_0x2da936++){var _0x6865eb=_0x13c522[_0x2da936][_0x3703('0x11c')](_0x3703('0x96'));var _0x3fe98c=_0x6865eb+_0x3703('0xa2');socket[_0x3703('0xa3')](_0x3703('0x2d')+_0x6865eb+_0x3703('0x11d'),{'UserId':_0x2bcf2d['id'],['queueField']:_0x13c522[_0x2da936]['id']});}});});});}});}})['then'](respondWithStatusCode(_0x36f0de,null))[_0x3703('0x20')](handleError(_0x36f0de,null));};exports[_0x3703('0x11e')]=function(_0x37a60d,_0x100cf6){return db['User'][_0x3703('0x8f')]({'where':{'id':_0x37a60d[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x100cf6,null))['then'](function(_0x315392){if(_0x315392){var _0x31e579=_0x315392['get']({'plain':!![]});var _0x36c95d=_0x37a60d[_0x3703('0x44')][_0x3703('0x5f')];return _0x315392[_0x3703('0x11e')](_0x36c95d)[_0x3703('0x15')](function(){for(var _0x472e2e=0x0;_0x472e2e<_0x36c95d[_0x3703('0x4b')];_0x472e2e++){var _0x4448bf=[];db[_0x3703('0x10f')][_0x3703('0x8f')]({'where':{'id':_0x36c95d[_0x472e2e]}})[_0x3703('0x15')](function(_0x4f38ee){_0x4448bf[_0x3703('0x47')](_0x4f38ee[_0x3703('0xf3')]()['then'](function(_0x5526d1){for(var _0x2b4a24=0x0;_0x2b4a24<_0x5526d1[_0x3703('0x4b')];_0x2b4a24++){_0x5526d1[_0x2b4a24][_0x3703('0x110')](_0x3703('0x96'),_0x3703('0x11f'));}return _0x5526d1;}));_0x4448bf[_0x3703('0x47')](_0x4f38ee[_0x3703('0x111')]()['then'](function(_0x168cbb){for(var _0xc70e09=0x0;_0xc70e09<_0x168cbb[_0x3703('0x4b')];_0xc70e09++){_0x168cbb[_0xc70e09]['setDataValue'](_0x3703('0x96'),_0x3703('0x112'));}return _0x168cbb;}));_0x4448bf[_0x3703('0x47')](_0x4f38ee['getMailQueues']()[_0x3703('0x15')](function(_0x326356){for(var _0x4f9445=0x0;_0x4f9445<_0x326356[_0x3703('0x4b')];_0x4f9445++){_0x326356[_0x4f9445][_0x3703('0x110')]('channel','Mail');}return _0x326356;}));_0x4448bf['push'](_0x4f38ee[_0x3703('0x114')]()[_0x3703('0x15')](function(_0x3fd7ef){for(var _0x369603=0x0;_0x369603<_0x3fd7ef[_0x3703('0x4b')];_0x369603++){_0x3fd7ef[_0x369603][_0x3703('0x110')](_0x3703('0x96'),_0x3703('0x115'));}return _0x3fd7ef;}));_0x4448bf['push'](_0x4f38ee[_0x3703('0x116')]()[_0x3703('0x15')](function(_0x71da05){for(var _0x11f9a8=0x0;_0x11f9a8<_0x71da05[_0x3703('0x4b')];_0x11f9a8++){_0x71da05[_0x11f9a8][_0x3703('0x110')](_0x3703('0x96'),_0x3703('0x117'));}return _0x71da05;}));_0x4448bf[_0x3703('0x47')](_0x4f38ee[_0x3703('0x120')]()[_0x3703('0x15')](function(_0x4f5f58){for(var _0x23b861=0x0;_0x23b861<_0x4f5f58['length'];_0x23b861++){_0x4f5f58[_0x23b861][_0x3703('0x110')]('channel',_0x3703('0x118'));}return _0x4f5f58;}));_0x4448bf[_0x3703('0x47')](_0x4f38ee[_0x3703('0x121')]()[_0x3703('0x15')](function(_0x36dbe7){for(var _0x1f5842=0x0;_0x1f5842<_0x36dbe7[_0x3703('0x4b')];_0x1f5842++){_0x36dbe7[_0x1f5842]['setDataValue']('channel',_0x3703('0x122'));}return _0x36dbe7;}));return BPromise['all'](_0x4448bf);})[_0x3703('0x15')](function(_0x170ff8){var _0x5a2e23=_[_0x3703('0x119')](_0x170ff8);_0x4448bf=[];return db[_0x3703('0x65')][_0x3703('0x11a')](function(_0x36d515){for(var _0x4d8676=0x0;_0x4d8676<_0x5a2e23['length'];_0x4d8676++){_0x4448bf[_0x3703('0x47')](_0x5a2e23[_0x4d8676][_0x3703('0x123')](_0x31e579['id']),{'transaction':_0x36d515});}return BPromise['all'](_0x4448bf)[_0x3703('0x15')](function(){if(_0x31e579[_0x3703('0x97')]){return BPromise[_0x3703('0x83')](_[_0x3703('0x32')](_0x5a2e23,function(_0x15a366){return _0x15a366[_0x3703('0x11c')](_0x3703('0x96'))===_0x3703('0x11f');}),function(_0x4797c4){return db[_0x3703('0xa8')]['destroy']({'where':{'VoiceQueueId':_0x4797c4['id'],'UserId':_0x31e579['id']},'transaction':_0x36d515});});}else{return;}})[_0x3703('0x15')](function(){for(var _0xad50bb=0x0;_0xad50bb<_0x5a2e23['length'];_0xad50bb++){var _0x42287b=_0x5a2e23[_0xad50bb][_0x3703('0x11c')](_0x3703('0x96'));var _0x5b8f13=_0x42287b+_0x3703('0xa2');socket['emit']('user'+_0x42287b+_0x3703('0xac'),{'UserId':_0x31e579['id'],['queueField']:_0x5a2e23[_0xad50bb]['id']});}});});});}});}})[_0x3703('0x15')](respondWithStatusCode(_0x100cf6,null))[_0x3703('0x20')](handleError(_0x100cf6,null));};exports['getLists']=function(_0x349d4b,_0x4ce1dc){var _0xf7d675={};var _0x14026a={};var _0x8dbc93;var _0x471925;return db['User']['findOne']({'where':{'id':_0x349d4b['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x4ce1dc,null))[_0x3703('0x15')](function(_0x426605){if(_0x426605){_0x8dbc93=_0x426605;_0x14026a[_0x3703('0x54')]=_[_0x3703('0x55')](db['CmList'][_0x3703('0x3e')]);_0x14026a['query']=_[_0x3703('0x55')](_0x349d4b[_0x3703('0x44')]);_0x14026a[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x14026a[_0x3703('0x54')],_0x14026a['query']);_0xf7d675[_0x3703('0x46')]=_[_0x3703('0x56')](_0x14026a[_0x3703('0x54')],qs[_0x3703('0x57')](_0x349d4b[_0x3703('0x44')][_0x3703('0x57')]));_0xf7d675[_0x3703('0x46')]=_0xf7d675[_0x3703('0x46')][_0x3703('0x4b')]?_0xf7d675[_0x3703('0x46')]:_0x14026a[_0x3703('0x54')];_0xf7d675[_0x3703('0xd2')]=qs['sort'](_0x349d4b[_0x3703('0x44')][_0x3703('0xc7')]);_0xf7d675[_0x3703('0x43')]=qs['filters'](_['pick'](_0x349d4b['query'],_0x14026a[_0x3703('0xc6')]));if(_0x349d4b[_0x3703('0x44')]['filter']){_0xf7d675[_0x3703('0x43')]=_[_0x3703('0xc9')](_0xf7d675[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0xf7d675['attributes'],function(_0x2fac4e){var _0x3cf485={};_0x3cf485[_0x2fac4e]={'$like':'%'+_0x349d4b[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x3cf485;})});}_0xf7d675=_[_0x3703('0xc9')]({},_0xf7d675,_0x349d4b[_0x3703('0x58')]);return _0x8dbc93[_0x3703('0x124')](_0xf7d675);}})[_0x3703('0x15')](function(_0x280d61){if(_0x280d61){_0x471925=_0x280d61[_0x3703('0x4b')];if(!_0x349d4b[_0x3703('0x44')][_0x3703('0xca')]('nolimit')){_0xf7d675[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x349d4b[_0x3703('0x44')][_0x3703('0x27')]);_0xf7d675[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x349d4b[_0x3703('0x44')][_0x3703('0x26')]);}return _0x8dbc93[_0x3703('0x124')](_0xf7d675);}})[_0x3703('0x15')](function(_0x24aa91){if(_0x24aa91){return _0x24aa91?{'count':_0x471925,'rows':_0x24aa91}:null;}})['then'](respondWithResult(_0x4ce1dc,null))[_0x3703('0x20')](handleError(_0x4ce1dc,null));};exports[_0x3703('0x125')]=function(_0xbcc28e,_0x3ae0bb){var _0xb41917={};var _0x51a5c4={};var _0x25da1e;var _0x1e21a7;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0xbcc28e[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x3ae0bb,null))[_0x3703('0x15')](function(_0x399902){if(_0x399902){_0x25da1e=_0x399902;_0x51a5c4[_0x3703('0x54')]=_['keys'](db[_0x3703('0x3d')][_0x3703('0x3e')]);_0x51a5c4[_0x3703('0x44')]=_[_0x3703('0x55')](_0xbcc28e[_0x3703('0x44')]);_0x51a5c4['filters']=_['intersection'](_0x51a5c4[_0x3703('0x54')],_0x51a5c4[_0x3703('0x44')]);_0xb41917[_0x3703('0x46')]=_['intersection'](_0x51a5c4[_0x3703('0x54')],qs['fields'](_0xbcc28e[_0x3703('0x44')]['fields']));_0xb41917[_0x3703('0x46')]=_0xb41917[_0x3703('0x46')][_0x3703('0x4b')]?_0xb41917[_0x3703('0x46')]:_0x51a5c4[_0x3703('0x54')];_0xb41917['order']=qs[_0x3703('0xc7')](_0xbcc28e[_0x3703('0x44')]['sort']);_0xb41917[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0xbcc28e[_0x3703('0x44')],_0x51a5c4[_0x3703('0xc6')]));if(_0xbcc28e[_0x3703('0x44')][_0x3703('0x32')]){_0xb41917[_0x3703('0x43')]=_[_0x3703('0xc9')](_0xb41917[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0xb41917[_0x3703('0x46')],function(_0x34780e){var _0xfaf805={};_0xfaf805[_0x34780e]={'$like':'%'+_0xbcc28e[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0xfaf805;})});}_0xb41917[_0x3703('0x54')]=db['User'];_0xb41917['as']=_0x3703('0x2e');_0xb41917=_[_0x3703('0xc9')]({},_0xb41917,_0xbcc28e[_0x3703('0x58')]);return _0x25da1e[_0x3703('0xf3')]({'include':[_0xb41917]});}})['then'](function(_0x555630){if(_0x555630){var _0x25eb27={},_0x16b51e=[],_0x5bae5e=0x0;for(var _0x4c9a3a=0x0;_0x4c9a3a<_0x555630['length'];_0x4c9a3a+=0x1){for(var _0x17ba1b=0x0,_0x194c12;_0x17ba1b<_0x555630[_0x4c9a3a]['Agents'][_0x3703('0x4b')];_0x17ba1b+=0x1){_0x194c12=_0x555630[_0x4c9a3a][_0x3703('0x2e')][_0x17ba1b][_0x3703('0x2a')]({'plain':!![]});_0x25eb27[_0x194c12['id']]=_0x194c12;}}_0x25eb27=_[_0x3703('0x126')](_0x25eb27);for(var _0x5cea6b=qs[_0x3703('0x26')](_0xbcc28e[_0x3703('0x44')][_0x3703('0x26')]);_0x5cea6b<_0x25eb27[_0x3703('0x4b')]&&_0x16b51e[_0x3703('0x4b')]<qs[_0x3703('0x27')](_0xbcc28e[_0x3703('0x44')][_0x3703('0x27')]);_0x5cea6b+=0x1){if(_0x25eb27[_0x5cea6b]){_0x16b51e[_0x3703('0x47')](_0x25eb27[_0x5cea6b]);}}return{'count':_0x25eb27[_0x3703('0x4b')],'rows':_0x16b51e};}})[_0x3703('0x15')](respondWithResult(_0x3ae0bb,null))[_0x3703('0x20')](handleError(_0x3ae0bb,null));};exports[_0x3703('0x29')]=function(_0x1013d8,_0x4bd79c){if(_0x1013d8[_0x3703('0x2d')]['id']==_0x1013d8['params']['id']){return _0x4bd79c[_0x3703('0x21')](0x1f4)[_0x3703('0x3b')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db['User'][_0x3703('0x37')]({'where':{'id':_0x1013d8[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x4bd79c,null))[_0x3703('0x15')](removeEntity(_0x4bd79c,null))[_0x3703('0x20')](handleError(_0x4bd79c,null));};exports[_0x3703('0x127')]=function(_0x35806d,_0x399fb6){return db['User'][_0x3703('0x37')]({'where':{'id':_0x35806d[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x399fb6,null))[_0x3703('0x15')](function(_0x2d96aa){if(_0x2d96aa){return _0x2d96aa['addChatInteractions'](_0x35806d[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x35806d[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})[_0x3703('0xa0')](function(){for(var _0x4336d2=0x0;_0x4336d2<_0x35806d['body']['ids'][_0x3703('0x4b')];_0x4336d2+=0x1){socket['emit']('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x35806d[_0x3703('0x5c')][_0x3703('0x5f')][_0x4336d2]),'UserId':Number(_0x35806d[_0x3703('0x53')]['id'])});}return _0x35806d['body'][_0x3703('0x5f')];});}})['then'](respondWithResult(_0x399fb6,null))[_0x3703('0x20')](handleError(_0x399fb6,null));};exports[_0x3703('0x128')]=function(_0x37b74b,_0x3d930a){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x37b74b[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x3d930a,null))[_0x3703('0x15')](function(_0x30d6fa){if(_0x30d6fa){return _0x30d6fa[_0x3703('0x128')](_0x37b74b[_0x3703('0x44')]['ids'])[_0x3703('0x15')](function(){if(_[_0x3703('0xab')](_0x37b74b[_0x3703('0x44')]['ids'])){for(var _0x5a9e86=0x0;_0x5a9e86<_0x37b74b[_0x3703('0x44')][_0x3703('0x5f')]['length'];_0x5a9e86+=0x1){socket[_0x3703('0xa3')](_0x3703('0x129'),{'ChatInteractionId':Number(_0x37b74b[_0x3703('0x44')][_0x3703('0x5f')][_0x5a9e86]),'UserId':Number(_0x37b74b['params']['id'])});}}else{socket[_0x3703('0xa3')](_0x3703('0x129'),{'ChatInteractionId':Number(_0x37b74b[_0x3703('0x44')]['ids']),'UserId':Number(_0x37b74b['params']['id'])});}});}})['then'](respondWithStatusCode(_0x3d930a,null))[_0x3703('0x20')](handleError(_0x3d930a,null));};exports[_0x3703('0x12a')]=function(_0x13b64e,_0x27aefd){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x13b64e['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x27aefd,null))[_0x3703('0x15')](function(_0x50b27f){if(_0x50b27f){return _0x50b27f['addMailInteractions'](_0x13b64e[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x13b64e[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})[_0x3703('0xa0')](function(){for(var _0xf81fda=0x0;_0xf81fda<_0x13b64e[_0x3703('0x5c')][_0x3703('0x5f')][_0x3703('0x4b')];_0xf81fda+=0x1){socket[_0x3703('0xa3')](_0x3703('0x12b'),{'MailInteractionId':Number(_0x13b64e['body'][_0x3703('0x5f')][_0xf81fda]),'UserId':Number(_0x13b64e[_0x3703('0x53')]['id'])});}return _0x13b64e[_0x3703('0x5c')][_0x3703('0x5f')];});}})['then'](respondWithResult(_0x27aefd,null))[_0x3703('0x20')](handleError(_0x27aefd,null));};exports[_0x3703('0x12c')]=function(_0x2a7593,_0x27a0f8){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x2a7593[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x27a0f8,null))[_0x3703('0x15')](function(_0x4c4ba6){if(_0x4c4ba6){return _0x4c4ba6['removeMailInteractions'](_0x2a7593['query']['ids'])[_0x3703('0x15')](function(){if(_[_0x3703('0xab')](_0x2a7593['query'][_0x3703('0x5f')])){for(var _0x160ec2=0x0;_0x160ec2<_0x2a7593[_0x3703('0x44')][_0x3703('0x5f')][_0x3703('0x4b')];_0x160ec2+=0x1){socket[_0x3703('0xa3')](_0x3703('0x12d'),{'MailInteractionId':Number(_0x2a7593[_0x3703('0x44')]['ids'][_0x160ec2]),'UserId':Number(_0x2a7593[_0x3703('0x53')]['id'])});}}else{socket[_0x3703('0xa3')](_0x3703('0x12d'),{'MailInteractionId':Number(_0x2a7593[_0x3703('0x44')][_0x3703('0x5f')]),'UserId':Number(_0x2a7593[_0x3703('0x53')]['id'])});}});}})[_0x3703('0x15')](respondWithStatusCode(_0x27a0f8,null))[_0x3703('0x20')](handleError(_0x27a0f8,null));};exports[_0x3703('0x12e')]=function(_0x535702,_0x36414c){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x535702[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x36414c,null))[_0x3703('0x15')](function(_0x41ea7a){if(_0x41ea7a){return _0x41ea7a[_0x3703('0x12e')](_0x535702[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x535702[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})[_0x3703('0xa0')](function(){for(var _0x52412f=0x0;_0x52412f<_0x535702[_0x3703('0x5c')][_0x3703('0x5f')]['length'];_0x52412f+=0x1){socket[_0x3703('0xa3')](_0x3703('0x12f'),{'FaxInteractionId':Number(_0x535702[_0x3703('0x5c')][_0x3703('0x5f')][_0x52412f]),'UserId':Number(_0x535702[_0x3703('0x53')]['id'])});}return _0x535702[_0x3703('0x5c')][_0x3703('0x5f')];});}})[_0x3703('0x15')](respondWithResult(_0x36414c,null))['catch'](handleError(_0x36414c,null));};exports[_0x3703('0x130')]=function(_0x39347b,_0x37860a){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x39347b[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x37860a,null))[_0x3703('0x15')](function(_0x1d2f9d){if(_0x1d2f9d){return _0x1d2f9d[_0x3703('0x130')](_0x39347b[_0x3703('0x44')][_0x3703('0x5f')])[_0x3703('0x15')](function(){if(_[_0x3703('0xab')](_0x39347b[_0x3703('0x44')][_0x3703('0x5f')])){for(var _0x503877=0x0;_0x503877<_0x39347b[_0x3703('0x44')]['ids'][_0x3703('0x4b')];_0x503877+=0x1){socket[_0x3703('0xa3')](_0x3703('0x131'),{'FaxInteractionId':Number(_0x39347b['query'][_0x3703('0x5f')][_0x503877]),'UserId':Number(_0x39347b['params']['id'])});}}else{socket[_0x3703('0xa3')](_0x3703('0x131'),{'FaxInteractionId':Number(_0x39347b[_0x3703('0x44')][_0x3703('0x5f')]),'UserId':Number(_0x39347b['params']['id'])});}});}})[_0x3703('0x15')](respondWithStatusCode(_0x37860a,null))[_0x3703('0x20')](handleError(_0x37860a,null));};exports['addSmsInteractions']=function(_0x475f91,_0x1e5dda){return db['User'][_0x3703('0x37')]({'where':{'id':_0x475f91[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x1e5dda,null))[_0x3703('0x15')](function(_0x38a0e6){if(_0x38a0e6){return _0x38a0e6[_0x3703('0x132')](_0x475f91[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x475f91[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})['spread'](function(){for(var _0x31c2aa=0x0;_0x31c2aa<_0x475f91[_0x3703('0x5c')][_0x3703('0x5f')][_0x3703('0x4b')];_0x31c2aa+=0x1){socket[_0x3703('0xa3')](_0x3703('0x133'),{'SmsInteractionId':Number(_0x475f91[_0x3703('0x5c')]['ids'][_0x31c2aa]),'UserId':Number(_0x475f91[_0x3703('0x53')]['id'])});}return _0x475f91[_0x3703('0x5c')][_0x3703('0x5f')];});}})['then'](respondWithResult(_0x1e5dda,null))[_0x3703('0x20')](handleError(_0x1e5dda,null));};exports[_0x3703('0x134')]=function(_0x47ff2e,_0x4752ee){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x47ff2e['params']['id']}})['then'](handleEntityNotFound(_0x4752ee,null))[_0x3703('0x15')](function(_0x25a23f){if(_0x25a23f){return _0x25a23f[_0x3703('0x134')](_0x47ff2e[_0x3703('0x44')][_0x3703('0x5f')])[_0x3703('0x15')](function(){if(_[_0x3703('0xab')](_0x47ff2e['query'][_0x3703('0x5f')])){for(var _0x12c530=0x0;_0x12c530<_0x47ff2e[_0x3703('0x44')]['ids'][_0x3703('0x4b')];_0x12c530+=0x1){socket[_0x3703('0xa3')](_0x3703('0x135'),{'SmsInteractionId':Number(_0x47ff2e[_0x3703('0x44')][_0x3703('0x5f')][_0x12c530]),'UserId':Number(_0x47ff2e[_0x3703('0x53')]['id'])});}}else{socket[_0x3703('0xa3')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x47ff2e[_0x3703('0x44')][_0x3703('0x5f')]),'UserId':Number(_0x47ff2e[_0x3703('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x4752ee,null))[_0x3703('0x20')](handleError(_0x4752ee,null));};exports[_0x3703('0x136')]=function(_0x17a6ef,_0x8dee7b){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x17a6ef[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x8dee7b,null))['then'](function(_0x2f332b){if(_0x2f332b){return _0x2f332b[_0x3703('0x136')](_0x17a6ef[_0x3703('0x5c')][_0x3703('0x5f')],_['omit'](_0x17a6ef[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})[_0x3703('0xa0')](function(){for(var _0xf1179d=0x0;_0xf1179d<_0x17a6ef['body'][_0x3703('0x5f')][_0x3703('0x4b')];_0xf1179d+=0x1){socket[_0x3703('0xa3')](_0x3703('0x137'),{'OpenchannelInteractionId':Number(_0x17a6ef[_0x3703('0x5c')]['ids'][_0xf1179d]),'UserId':Number(_0x17a6ef[_0x3703('0x53')]['id'])});}return _0x17a6ef[_0x3703('0x5c')][_0x3703('0x5f')];});}})[_0x3703('0x15')](respondWithResult(_0x8dee7b,null))[_0x3703('0x20')](handleError(_0x8dee7b,null));};exports[_0x3703('0x138')]=function(_0x1f4e6e,_0x20b801){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x1f4e6e[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x20b801,null))['then'](function(_0xa0b296){if(_0xa0b296){return _0xa0b296[_0x3703('0x138')](_0x1f4e6e[_0x3703('0x44')][_0x3703('0x5f')])[_0x3703('0x15')](function(){if(_[_0x3703('0xab')](_0x1f4e6e['query'][_0x3703('0x5f')])){for(var _0x423c68=0x0;_0x423c68<_0x1f4e6e[_0x3703('0x44')][_0x3703('0x5f')]['length'];_0x423c68+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1f4e6e[_0x3703('0x44')]['ids'][_0x423c68]),'UserId':Number(_0x1f4e6e[_0x3703('0x53')]['id'])});}}else{socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1f4e6e[_0x3703('0x44')]['ids']),'UserId':Number(_0x1f4e6e['params']['id'])});}});}})['then'](respondWithStatusCode(_0x20b801,null))['catch'](handleError(_0x20b801,null));};exports[_0x3703('0x139')]=function(_0x35db5e,_0x14948f){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x35db5e[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x14948f,null))[_0x3703('0x15')](function(_0xae1dce){if(_0xae1dce){return _0xae1dce['addWhatsappInteractions'](_0x35db5e[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x35db5e[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{})[_0x3703('0xa0')](function(){for(var _0x2c1656=0x0;_0x2c1656<_0x35db5e['body'][_0x3703('0x5f')][_0x3703('0x4b')];_0x2c1656+=0x1){socket['emit'](_0x3703('0x13a'),{'WhatsappInteractionId':Number(_0x35db5e['body'][_0x3703('0x5f')][_0x2c1656]),'UserId':Number(_0x35db5e[_0x3703('0x53')]['id'])});}return _0x35db5e[_0x3703('0x5c')][_0x3703('0x5f')];});}})['then'](respondWithResult(_0x14948f,null))[_0x3703('0x20')](handleError(_0x14948f,null));};exports[_0x3703('0x13b')]=function(_0x20de75,_0x203bca){return db['User'][_0x3703('0x37')]({'where':{'id':_0x20de75[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x203bca,null))[_0x3703('0x15')](function(_0x39305d){if(_0x39305d){return _0x39305d[_0x3703('0x13b')](_0x20de75['query'][_0x3703('0x5f')]);}})[_0x3703('0x15')](respondWithStatusCode(_0x203bca,null))[_0x3703('0x20')](handleError(_0x203bca,null));};exports[_0x3703('0x13c')]=function(_0x39746f,_0xfacff1){var _0x2c7f0c={};var _0x30d948={};var _0x5734fd;var _0x559d76;return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x39746f[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0xfacff1,null))[_0x3703('0x15')](function(_0x18c5b8){if(_0x18c5b8){_0x5734fd=_0x18c5b8;_0x30d948[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0x13d')]['rawAttributes']);_0x30d948[_0x3703('0x44')]=_[_0x3703('0x55')](_0x39746f[_0x3703('0x44')]);_0x30d948['filters']=_[_0x3703('0x56')](_0x30d948[_0x3703('0x54')],_0x30d948[_0x3703('0x44')]);_0x2c7f0c[_0x3703('0x46')]=_['intersection'](_0x30d948[_0x3703('0x54')],qs[_0x3703('0x57')](_0x39746f['query'][_0x3703('0x57')]));_0x2c7f0c['attributes']=_0x2c7f0c['attributes'][_0x3703('0x4b')]?_0x2c7f0c[_0x3703('0x46')]:_0x30d948[_0x3703('0x54')];_0x2c7f0c['order']=qs['sort'](_0x39746f[_0x3703('0x44')][_0x3703('0xc7')]);_0x2c7f0c['where']=qs['filters'](_[_0x3703('0xc8')](_0x39746f[_0x3703('0x44')],_0x30d948[_0x3703('0xc6')]));if(_0x39746f[_0x3703('0x44')]['filter']){_0x2c7f0c[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x2c7f0c[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x2c7f0c[_0x3703('0x46')],function(_0x4ab8b8){var _0x1f2fb9={};_0x1f2fb9[_0x4ab8b8]={'$like':'%'+_0x39746f[_0x3703('0x44')]['filter']+'%'};return _0x1f2fb9;})});}_0x2c7f0c=_[_0x3703('0xc9')]({},_0x2c7f0c,_0x39746f[_0x3703('0x58')]);return _0x5734fd[_0x3703('0x13c')](_0x2c7f0c);}})[_0x3703('0x15')](function(_0x411a56){if(_0x411a56){_0x559d76=_0x411a56[_0x3703('0x4b')];if(!_0x39746f[_0x3703('0x44')]['hasOwnProperty'](_0x3703('0xd3'))){_0x2c7f0c[_0x3703('0x27')]=qs['limit'](_0x39746f['query'][_0x3703('0x27')]);_0x2c7f0c[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x39746f[_0x3703('0x44')]['offset']);}return _0x5734fd[_0x3703('0x13c')](_0x2c7f0c);}})[_0x3703('0x15')](function(_0x147bcb){if(_0x147bcb){return _0x147bcb?{'count':_0x559d76,'rows':_0x147bcb}:null;}})['then'](respondWithResult(_0xfacff1,null))[_0x3703('0x20')](handleError(_0xfacff1,null));};exports['getFaxAccounts']=function(_0x281b76,_0x49bd06){var _0x52e4c4={};var _0x2dae1e={};var _0x2bfc95;var _0x25b3e6;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x281b76[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x49bd06,null))[_0x3703('0x15')](function(_0x2d1483){if(_0x2d1483){_0x2bfc95=_0x2d1483;_0x2dae1e[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0x13e')][_0x3703('0x3e')]);_0x2dae1e[_0x3703('0x44')]=_[_0x3703('0x55')](_0x281b76[_0x3703('0x44')]);_0x2dae1e[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x2dae1e[_0x3703('0x54')],_0x2dae1e[_0x3703('0x44')]);_0x52e4c4[_0x3703('0x46')]=_[_0x3703('0x56')](_0x2dae1e['model'],qs[_0x3703('0x57')](_0x281b76[_0x3703('0x44')][_0x3703('0x57')]));_0x52e4c4['attributes']=_0x52e4c4[_0x3703('0x46')][_0x3703('0x4b')]?_0x52e4c4['attributes']:_0x2dae1e[_0x3703('0x54')];_0x52e4c4[_0x3703('0xd2')]=qs['sort'](_0x281b76[_0x3703('0x44')]['sort']);_0x52e4c4[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x281b76[_0x3703('0x44')],_0x2dae1e[_0x3703('0xc6')]));if(_0x281b76[_0x3703('0x44')]['filter']){_0x52e4c4['where']=_[_0x3703('0xc9')](_0x52e4c4['where'],{'$or':_[_0x3703('0x34')](_0x52e4c4[_0x3703('0x46')],function(_0x2a2e17){var _0x54cba9={};_0x54cba9[_0x2a2e17]={'$like':'%'+_0x281b76[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x54cba9;})});}_0x52e4c4=_[_0x3703('0xc9')]({},_0x52e4c4,_0x281b76[_0x3703('0x58')]);return _0x2bfc95[_0x3703('0x13f')](_0x52e4c4);}})['then'](function(_0x79fac2){if(_0x79fac2){_0x25b3e6=_0x79fac2[_0x3703('0x4b')];if(!_0x281b76[_0x3703('0x44')]['hasOwnProperty']('nolimit')){_0x52e4c4[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x281b76['query']['limit']);_0x52e4c4[_0x3703('0x26')]=qs['offset'](_0x281b76[_0x3703('0x44')][_0x3703('0x26')]);}return _0x2bfc95[_0x3703('0x13f')](_0x52e4c4);}})[_0x3703('0x15')](function(_0x1445a3){if(_0x1445a3){return _0x1445a3?{'count':_0x25b3e6,'rows':_0x1445a3}:null;}})[_0x3703('0x15')](respondWithResult(_0x49bd06,null))['catch'](handleError(_0x49bd06,null));};exports[_0x3703('0x140')]=function(_0x512748,_0x443252){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x512748[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x443252,null))[_0x3703('0x15')](function(_0x21c37a){if(_0x21c37a){return _0x21c37a[_0x3703('0x140')](_0x512748[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x512748[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})[_0x3703('0x15')](respondWithResult(_0x443252,null))[_0x3703('0x20')](handleError(_0x443252,null));};exports[_0x3703('0x141')]=function(_0x1ebb3d,_0x5bf5a6){return db['User'][_0x3703('0x37')]({'where':{'id':_0x1ebb3d['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x5bf5a6,null))[_0x3703('0x15')](function(_0x5623db){if(_0x5623db){return _0x5623db[_0x3703('0x141')](_0x1ebb3d[_0x3703('0x44')][_0x3703('0x5f')]);}})['then'](respondWithStatusCode(_0x5bf5a6,null))[_0x3703('0x20')](handleError(_0x5bf5a6,null));};exports[_0x3703('0x142')]=function(_0x546eb9,_0x18f9ed){var _0x58b50={};var _0x4e2ad7={};var _0x5a7e6c;var _0x5a2c3a;return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x546eb9['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x18f9ed,null))[_0x3703('0x15')](function(_0x1bbba5){if(_0x1bbba5){_0x5a7e6c=_0x1bbba5;_0x4e2ad7['model']=_[_0x3703('0x55')](db[_0x3703('0x143')][_0x3703('0x3e')]);_0x4e2ad7[_0x3703('0x44')]=_[_0x3703('0x55')](_0x546eb9[_0x3703('0x44')]);_0x4e2ad7[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x4e2ad7[_0x3703('0x54')],_0x4e2ad7['query']);_0x58b50[_0x3703('0x46')]=_[_0x3703('0x56')](_0x4e2ad7[_0x3703('0x54')],qs[_0x3703('0x57')](_0x546eb9['query']['fields']));_0x58b50[_0x3703('0x46')]=_0x58b50[_0x3703('0x46')][_0x3703('0x4b')]?_0x58b50[_0x3703('0x46')]:_0x4e2ad7[_0x3703('0x54')];_0x58b50[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x546eb9[_0x3703('0x44')][_0x3703('0xc7')]);_0x58b50[_0x3703('0x43')]=qs['filters'](_['pick'](_0x546eb9['query'],_0x4e2ad7[_0x3703('0xc6')]));if(_0x546eb9['query']['filter']){_0x58b50['where']=_[_0x3703('0xc9')](_0x58b50['where'],{'$or':_[_0x3703('0x34')](_0x58b50['attributes'],function(_0x2d00d4){var _0x5e993e={};_0x5e993e[_0x2d00d4]={'$like':'%'+_0x546eb9[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x5e993e;})});}_0x58b50=_[_0x3703('0xc9')]({},_0x58b50,_0x546eb9[_0x3703('0x58')]);return _0x5a7e6c[_0x3703('0x142')](_0x58b50);}})['then'](function(_0x3587df){if(_0x3587df){_0x5a2c3a=_0x3587df[_0x3703('0x4b')];if(!_0x546eb9[_0x3703('0x44')]['hasOwnProperty'](_0x3703('0xd3'))){_0x58b50['limit']=qs['limit'](_0x546eb9[_0x3703('0x44')][_0x3703('0x27')]);_0x58b50[_0x3703('0x26')]=qs['offset'](_0x546eb9[_0x3703('0x44')][_0x3703('0x26')]);}return _0x5a7e6c['getMailAccounts'](_0x58b50);}})[_0x3703('0x15')](function(_0x14cea0){if(_0x14cea0){return _0x14cea0?{'count':_0x5a2c3a,'rows':_0x14cea0}:null;}})[_0x3703('0x15')](respondWithResult(_0x18f9ed,null))[_0x3703('0x20')](handleError(_0x18f9ed,null));};exports[_0x3703('0x144')]=function(_0x127ff7,_0x455973){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x127ff7['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x455973,null))[_0x3703('0x15')](function(_0x5dddcd){if(_0x5dddcd){return _0x5dddcd[_0x3703('0x144')](_0x127ff7['body'][_0x3703('0x5f')],_['omit'](_0x127ff7[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})[_0x3703('0x15')](respondWithResult(_0x455973,null))[_0x3703('0x20')](handleError(_0x455973,null));};exports['removeMailAccounts']=function(_0x434aed,_0x5dfd36){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x434aed['params']['id']}})['then'](handleEntityNotFound(_0x5dfd36,null))[_0x3703('0x15')](function(_0x69ef04){if(_0x69ef04){return _0x69ef04[_0x3703('0x145')](_0x434aed[_0x3703('0x44')]['ids']);}})[_0x3703('0x15')](respondWithStatusCode(_0x5dfd36,null))[_0x3703('0x20')](handleError(_0x5dfd36,null));};exports[_0x3703('0x146')]=function(_0x25f9fa,_0x57f618){var _0x438126={};var _0x445c32={};var _0x2a407f;var _0x5ef1d8;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x25f9fa['params']['id']}})['then'](handleEntityNotFound(_0x57f618,null))[_0x3703('0x15')](function(_0x5ca489){if(_0x5ca489){_0x2a407f=_0x5ca489;_0x445c32[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0x147')]['rawAttributes']);_0x445c32[_0x3703('0x44')]=_[_0x3703('0x55')](_0x25f9fa[_0x3703('0x44')]);_0x445c32[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x445c32[_0x3703('0x54')],_0x445c32['query']);_0x438126[_0x3703('0x46')]=_[_0x3703('0x56')](_0x445c32['model'],qs[_0x3703('0x57')](_0x25f9fa['query'][_0x3703('0x57')]));_0x438126[_0x3703('0x46')]=_0x438126[_0x3703('0x46')]['length']?_0x438126[_0x3703('0x46')]:_0x445c32[_0x3703('0x54')];_0x438126[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x25f9fa[_0x3703('0x44')]['sort']);_0x438126[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x25f9fa[_0x3703('0x44')],_0x445c32[_0x3703('0xc6')]));if(_0x25f9fa[_0x3703('0x44')][_0x3703('0x32')]){_0x438126[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x438126['where'],{'$or':_[_0x3703('0x34')](_0x438126['attributes'],function(_0x350b80){var _0x2034d7={};_0x2034d7[_0x350b80]={'$like':'%'+_0x25f9fa['query'][_0x3703('0x32')]+'%'};return _0x2034d7;})});}_0x438126=_[_0x3703('0xc9')]({},_0x438126,_0x25f9fa[_0x3703('0x58')]);return _0x2a407f[_0x3703('0x146')](_0x438126);}})['then'](function(_0x9aa96d){if(_0x9aa96d){_0x5ef1d8=_0x9aa96d[_0x3703('0x4b')];if(!_0x25f9fa[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x438126[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x25f9fa[_0x3703('0x44')]['limit']);_0x438126[_0x3703('0x26')]=qs['offset'](_0x25f9fa[_0x3703('0x44')][_0x3703('0x26')]);}return _0x2a407f[_0x3703('0x146')](_0x438126);}})['then'](function(_0x43429e){if(_0x43429e){return _0x43429e?{'count':_0x5ef1d8,'rows':_0x43429e}:null;}})[_0x3703('0x15')](respondWithResult(_0x57f618,null))[_0x3703('0x20')](handleError(_0x57f618,null));};exports[_0x3703('0x148')]=function(_0x5201f7,_0x4fd571){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x5201f7[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x4fd571,null))[_0x3703('0x15')](function(_0x322a81){if(_0x322a81){return _0x322a81[_0x3703('0x148')](_0x5201f7[_0x3703('0x5c')]['ids'],_[_0x3703('0x60')](_0x5201f7[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})[_0x3703('0x15')](respondWithResult(_0x4fd571,null))[_0x3703('0x20')](handleError(_0x4fd571,null));};exports[_0x3703('0x149')]=function(_0x581fba,_0x4361e8){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x581fba[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x4361e8,null))['then'](function(_0x4efb95){if(_0x4efb95){return _0x4efb95[_0x3703('0x149')](_0x581fba[_0x3703('0x44')]['ids']);}})[_0x3703('0x15')](respondWithStatusCode(_0x4361e8,null))[_0x3703('0x20')](handleError(_0x4361e8,null));};exports[_0x3703('0x14a')]=function(_0x1c3129,_0x26ca2e){var _0x3e7a09={};var _0x1c766a={};var _0x348756;var _0x1b7184;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x1c3129[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x26ca2e,null))[_0x3703('0x15')](function(_0x22911d){if(_0x22911d){_0x348756=_0x22911d;_0x1c766a['model']=_[_0x3703('0x55')](db[_0x3703('0x14b')]['rawAttributes']);_0x1c766a[_0x3703('0x44')]=_['keys'](_0x1c3129[_0x3703('0x44')]);_0x1c766a[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x1c766a[_0x3703('0x54')],_0x1c766a[_0x3703('0x44')]);_0x3e7a09[_0x3703('0x46')]=_[_0x3703('0x56')](_0x1c766a[_0x3703('0x54')],qs[_0x3703('0x57')](_0x1c3129['query'][_0x3703('0x57')]));_0x3e7a09[_0x3703('0x46')]=_0x3e7a09[_0x3703('0x46')]['length']?_0x3e7a09[_0x3703('0x46')]:_0x1c766a[_0x3703('0x54')];_0x3e7a09[_0x3703('0xd2')]=qs[_0x3703('0xc7')](_0x1c3129[_0x3703('0x44')][_0x3703('0xc7')]);_0x3e7a09[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x1c3129[_0x3703('0x44')],_0x1c766a[_0x3703('0xc6')]));if(_0x1c3129[_0x3703('0x44')][_0x3703('0x32')]){_0x3e7a09['where']=_['merge'](_0x3e7a09[_0x3703('0x43')],{'$or':_['map'](_0x3e7a09[_0x3703('0x46')],function(_0x4e2b64){var _0x16f13d={};_0x16f13d[_0x4e2b64]={'$like':'%'+_0x1c3129['query'][_0x3703('0x32')]+'%'};return _0x16f13d;})});}_0x3e7a09=_['merge']({},_0x3e7a09,_0x1c3129[_0x3703('0x58')]);return _0x348756['getSmsAccounts'](_0x3e7a09);}})[_0x3703('0x15')](function(_0x17c9e6){if(_0x17c9e6){_0x1b7184=_0x17c9e6['length'];if(!_0x1c3129[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x3e7a09[_0x3703('0x27')]=qs['limit'](_0x1c3129[_0x3703('0x44')]['limit']);_0x3e7a09[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x1c3129[_0x3703('0x44')][_0x3703('0x26')]);}return _0x348756[_0x3703('0x14a')](_0x3e7a09);}})[_0x3703('0x15')](function(_0x399303){if(_0x399303){return _0x399303?{'count':_0x1b7184,'rows':_0x399303}:null;}})['then'](respondWithResult(_0x26ca2e,null))['catch'](handleError(_0x26ca2e,null));};exports[_0x3703('0x14c')]=function(_0x1a5fc2,_0x53444f){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x1a5fc2['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x53444f,null))[_0x3703('0x15')](function(_0x3d2c84){if(_0x3d2c84){return _0x3d2c84[_0x3703('0x14c')](_0x1a5fc2['body']['ids'],_[_0x3703('0x60')](_0x1a5fc2[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x53444f,null))[_0x3703('0x20')](handleError(_0x53444f,null));};exports[_0x3703('0x14d')]=function(_0x2cbbd7,_0x1cc256){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x2cbbd7['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x1cc256,null))[_0x3703('0x15')](function(_0x129eb7){if(_0x129eb7){return _0x129eb7[_0x3703('0x14d')](_0x2cbbd7[_0x3703('0x44')][_0x3703('0x5f')]);}})[_0x3703('0x15')](respondWithStatusCode(_0x1cc256,null))[_0x3703('0x20')](handleError(_0x1cc256,null));};exports[_0x3703('0x14e')]=function(_0x2a6a51,_0x4e26c2){var _0x11c096={};var _0x1131c1={};var _0x34ac3b;var _0x4a041e;return db['User']['findOne']({'where':{'id':_0x2a6a51[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x4e26c2,null))['then'](function(_0x11bbcd){if(_0x11bbcd){_0x34ac3b=_0x11bbcd;_0x1131c1[_0x3703('0x54')]=_[_0x3703('0x55')](db[_0x3703('0x14f')][_0x3703('0x3e')]);_0x1131c1[_0x3703('0x44')]=_['keys'](_0x2a6a51[_0x3703('0x44')]);_0x1131c1[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x1131c1[_0x3703('0x54')],_0x1131c1[_0x3703('0x44')]);_0x11c096['attributes']=_['intersection'](_0x1131c1[_0x3703('0x54')],qs[_0x3703('0x57')](_0x2a6a51['query']['fields']));_0x11c096[_0x3703('0x46')]=_0x11c096[_0x3703('0x46')][_0x3703('0x4b')]?_0x11c096[_0x3703('0x46')]:_0x1131c1[_0x3703('0x54')];_0x11c096['order']=qs[_0x3703('0xc7')](_0x2a6a51[_0x3703('0x44')]['sort']);_0x11c096[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x2a6a51[_0x3703('0x44')],_0x1131c1[_0x3703('0xc6')]));if(_0x2a6a51[_0x3703('0x44')][_0x3703('0x32')]){_0x11c096[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x11c096[_0x3703('0x43')],{'$or':_['map'](_0x11c096[_0x3703('0x46')],function(_0xbaf23b){var _0x1f50f7={};_0x1f50f7[_0xbaf23b]={'$like':'%'+_0x2a6a51[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x1f50f7;})});}_0x11c096=_[_0x3703('0xc9')]({},_0x11c096,_0x2a6a51[_0x3703('0x58')]);return _0x34ac3b[_0x3703('0x14e')](_0x11c096);}})['then'](function(_0x31d9db){if(_0x31d9db){_0x4a041e=_0x31d9db[_0x3703('0x4b')];if(!_0x2a6a51[_0x3703('0x44')]['hasOwnProperty'](_0x3703('0xd3'))){_0x11c096['limit']=qs[_0x3703('0x27')](_0x2a6a51[_0x3703('0x44')][_0x3703('0x27')]);_0x11c096[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x2a6a51[_0x3703('0x44')]['offset']);}return _0x34ac3b[_0x3703('0x14e')](_0x11c096);}})['then'](function(_0x25e350){if(_0x25e350){return _0x25e350?{'count':_0x4a041e,'rows':_0x25e350}:null;}})['then'](respondWithResult(_0x4e26c2,null))['catch'](handleError(_0x4e26c2,null));};exports[_0x3703('0x150')]=function(_0x5c9683,_0x1362bc){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x5c9683[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x1362bc,null))[_0x3703('0x15')](function(_0x5a138b){if(_0x5a138b){return _0x5a138b[_0x3703('0x150')](_0x5c9683[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x5c9683[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x1362bc,null))[_0x3703('0x20')](handleError(_0x1362bc,null));};exports[_0x3703('0x151')]=function(_0x36be93,_0x563734){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x36be93[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x563734,null))[_0x3703('0x15')](function(_0x2fd359){if(_0x2fd359){return _0x2fd359[_0x3703('0x151')](_0x36be93[_0x3703('0x44')][_0x3703('0x5f')]);}})[_0x3703('0x15')](respondWithStatusCode(_0x563734,null))[_0x3703('0x20')](handleError(_0x563734,null));};exports['getWhatsappAccounts']=function(_0x508fc4,_0x548909){var _0x6ef15b={};var _0x486e6a={};var _0xc45d06;var _0x29e0a4;return db[_0x3703('0x3d')]['findOne']({'where':{'id':_0x508fc4[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x548909,null))[_0x3703('0x15')](function(_0x575f6b){if(_0x575f6b){_0xc45d06=_0x575f6b;_0x486e6a['model']=_['keys'](db['WhatsappAccount']['rawAttributes']);_0x486e6a[_0x3703('0x44')]=_['keys'](_0x508fc4['query']);_0x486e6a[_0x3703('0xc6')]=_['intersection'](_0x486e6a[_0x3703('0x54')],_0x486e6a['query']);_0x6ef15b[_0x3703('0x46')]=_[_0x3703('0x56')](_0x486e6a[_0x3703('0x54')],qs[_0x3703('0x57')](_0x508fc4['query'][_0x3703('0x57')]));_0x6ef15b['attributes']=_0x6ef15b[_0x3703('0x46')][_0x3703('0x4b')]?_0x6ef15b[_0x3703('0x46')]:_0x486e6a[_0x3703('0x54')];_0x6ef15b[_0x3703('0xd2')]=qs['sort'](_0x508fc4[_0x3703('0x44')]['sort']);_0x6ef15b[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x508fc4[_0x3703('0x44')],_0x486e6a['filters']));if(_0x508fc4[_0x3703('0x44')][_0x3703('0x32')]){_0x6ef15b[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x6ef15b[_0x3703('0x43')],{'$or':_[_0x3703('0x34')](_0x6ef15b['attributes'],function(_0x292b04){var _0x3e5436={};_0x3e5436[_0x292b04]={'$like':'%'+_0x508fc4[_0x3703('0x44')][_0x3703('0x32')]+'%'};return _0x3e5436;})});}_0x6ef15b=_[_0x3703('0xc9')]({},_0x6ef15b,_0x508fc4[_0x3703('0x58')]);return _0xc45d06[_0x3703('0x152')](_0x6ef15b);}})[_0x3703('0x15')](function(_0x4f7d41){if(_0x4f7d41){_0x29e0a4=_0x4f7d41[_0x3703('0x4b')];if(!_0x508fc4[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x6ef15b[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x508fc4[_0x3703('0x44')]['limit']);_0x6ef15b[_0x3703('0x26')]=qs['offset'](_0x508fc4[_0x3703('0x44')][_0x3703('0x26')]);}return _0xc45d06['getWhatsappAccounts'](_0x6ef15b);}})['then'](function(_0x3b98e5){if(_0x3b98e5){return _0x3b98e5?{'count':_0x29e0a4,'rows':_0x3b98e5}:null;}})[_0x3703('0x15')](respondWithResult(_0x548909,null))['catch'](handleError(_0x548909,null));};exports['addWhatsappAccounts']=function(_0x2ad512,_0xb9697){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x2ad512[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0xb9697,null))[_0x3703('0x15')](function(_0x104605){if(_0x104605){return _0x104605[_0x3703('0x153')](_0x2ad512[_0x3703('0x5c')][_0x3703('0x5f')],_[_0x3703('0x60')](_0x2ad512[_0x3703('0x5c')],[_0x3703('0x5f'),'id'])||{});}})[_0x3703('0x15')](respondWithResult(_0xb9697,null))[_0x3703('0x20')](handleError(_0xb9697,null));};exports['removeWhatsappAccounts']=function(_0x45bc33,_0x4e2c7d){return db['User'][_0x3703('0x37')]({'where':{'id':_0x45bc33[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x4e2c7d,null))[_0x3703('0x15')](function(_0xbe341d){if(_0xbe341d){return _0xbe341d[_0x3703('0x154')](_0x45bc33['query']['ids']);}})['then'](respondWithStatusCode(_0x4e2c7d,null))[_0x3703('0x20')](handleError(_0x4e2c7d,null));};exports[_0x3703('0x155')]=function(_0x307e5a,_0x9378d2){var _0xb572d6={};var _0x2b4cf1={};var _0x1fd02f;var _0x173bbf;return db[_0x3703('0x3d')][_0x3703('0x8f')]({'where':{'id':_0x307e5a[_0x3703('0x53')]['id']}})['then'](handleEntityNotFound(_0x9378d2,null))[_0x3703('0x15')](function(_0x213806){if(_0x213806){_0x1fd02f=_0x213806;_0x2b4cf1[_0x3703('0x54')]=_[_0x3703('0x55')](db['SquareProject'][_0x3703('0x3e')]);_0x2b4cf1[_0x3703('0x44')]=_[_0x3703('0x55')](_0x307e5a[_0x3703('0x44')]);_0x2b4cf1[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x2b4cf1[_0x3703('0x54')],_0x2b4cf1['query']);_0xb572d6[_0x3703('0x46')]=_['intersection'](_0x2b4cf1[_0x3703('0x54')],qs[_0x3703('0x57')](_0x307e5a[_0x3703('0x44')]['fields']));_0xb572d6[_0x3703('0x46')]=_0xb572d6[_0x3703('0x46')]['length']?_0xb572d6[_0x3703('0x46')]:_0x2b4cf1[_0x3703('0x54')];_0xb572d6['order']=qs[_0x3703('0xc7')](_0x307e5a[_0x3703('0x44')]['sort']);_0xb572d6['where']=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x307e5a[_0x3703('0x44')],_0x2b4cf1[_0x3703('0xc6')]));if(_0x307e5a[_0x3703('0x44')][_0x3703('0x32')]){_0xb572d6[_0x3703('0x43')]=_[_0x3703('0xc9')](_0xb572d6[_0x3703('0x43')],{'$or':_['map'](_0xb572d6[_0x3703('0x46')],function(_0x2c7d05){var _0x250786={};_0x250786[_0x2c7d05]={'$like':'%'+_0x307e5a[_0x3703('0x44')]['filter']+'%'};return _0x250786;})});}_0xb572d6=_['merge']({},_0xb572d6,_0x307e5a[_0x3703('0x58')]);return _0x1fd02f[_0x3703('0x155')](_0xb572d6);}})['then'](function(_0x1b47c9){if(_0x1b47c9){_0x173bbf=_0x1b47c9[_0x3703('0x4b')];if(!_0x307e5a['query'][_0x3703('0xca')](_0x3703('0xd3'))){_0xb572d6[_0x3703('0x27')]=qs['limit'](_0x307e5a[_0x3703('0x44')][_0x3703('0x27')]);_0xb572d6['offset']=qs[_0x3703('0x26')](_0x307e5a[_0x3703('0x44')][_0x3703('0x26')]);}return _0x1fd02f['getSquareProjects'](_0xb572d6);}})[_0x3703('0x15')](function(_0x170b2a){if(_0x170b2a){return _0x170b2a?{'count':_0x173bbf,'rows':_0x170b2a}:null;}})[_0x3703('0x15')](respondWithResult(_0x9378d2,null))[_0x3703('0x20')](handleError(_0x9378d2,null));};exports[_0x3703('0x156')]=function(_0x2f75db,_0x9ae6e9){return db[_0x3703('0x3d')]['find']({'where':{'id':_0x2f75db['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x9ae6e9,null))[_0x3703('0x15')](function(_0x24ed94){if(_0x24ed94){return _0x24ed94[_0x3703('0x156')](_0x2f75db['body'][_0x3703('0x5f')],_[_0x3703('0x60')](_0x2f75db['body'],[_0x3703('0x5f'),'id'])||{});}})[_0x3703('0x15')](respondWithResult(_0x9ae6e9,null))[_0x3703('0x20')](handleError(_0x9ae6e9,null));};exports[_0x3703('0x157')]=function(_0x17638f,_0x2055bc){return db[_0x3703('0x3d')][_0x3703('0x37')]({'where':{'id':_0x17638f['params']['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x2055bc,null))[_0x3703('0x15')](function(_0x56a085){if(_0x56a085){return _0x56a085[_0x3703('0x157')](_0x17638f[_0x3703('0x44')][_0x3703('0x5f')]);}})[_0x3703('0x15')](respondWithStatusCode(_0x2055bc,null))[_0x3703('0x20')](handleError(_0x2055bc,null));};exports[_0x3703('0x158')]=function(_0x22e5d4,_0x29b0c1){var _0x26c6fe={},_0x369678={},_0x5bd359={'count':0x0,'rows':[]};var _0x102774=db[_0x3703('0x159')]['rawAttributes'];_0x369678[_0x3703('0x54')]=_['keys'](_0x102774);_0x369678['query']=_[_0x3703('0x55')](_0x22e5d4['query']);_0x369678[_0x3703('0xc6')]=_[_0x3703('0x56')](_0x369678[_0x3703('0x54')],_0x369678['query']);_0x369678[_0x3703('0xc6')]=_[_0x3703('0xfc')](_0x369678[_0x3703('0xc6')],[_0x3703('0x15a'),'$or','$gt',_0x3703('0x15b'),_0x3703('0x15c'),_0x3703('0x15d'),_0x3703('0x15e'),'$eq',_0x3703('0x15f'),_0x3703('0x160'),'$notBetween','$in',_0x3703('0x161'),_0x3703('0x162'),'$notLike','$iLike','$notILike','$like',_0x3703('0x163'),'$contains',_0x3703('0x164'),_0x3703('0x165')]);_0x26c6fe[_0x3703('0x46')]=_[_0x3703('0x56')](_0x369678[_0x3703('0x54')],qs[_0x3703('0x57')](_0x22e5d4['query'][_0x3703('0x57')]));_0x26c6fe[_0x3703('0x46')]=_0x26c6fe[_0x3703('0x46')]['length']?_0x26c6fe[_0x3703('0x46')]:_0x369678[_0x3703('0x54')];if(!_0x22e5d4[_0x3703('0x44')][_0x3703('0xca')](_0x3703('0xd3'))){_0x26c6fe['limit']=qs[_0x3703('0x27')](_0x22e5d4['query'][_0x3703('0x27')]);_0x26c6fe[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x22e5d4[_0x3703('0x44')]['offset']);}_0x26c6fe[_0x3703('0xd2')]=qs['sort'](_0x22e5d4[_0x3703('0x44')]['sort']);_0x26c6fe[_0x3703('0x43')]=qs[_0x3703('0xc6')](_[_0x3703('0xc8')](_0x22e5d4[_0x3703('0x44')],_0x369678['filters']));if(_0x22e5d4[_0x3703('0x44')][_0x3703('0x32')]){_0x26c6fe[_0x3703('0x43')]=_[_0x3703('0xc9')](_0x26c6fe[_0x3703('0x43')],{'$or':_['map'](_0x26c6fe[_0x3703('0x46')],function(_0x2fc978){var _0x4b001c={};_0x4b001c[_0x2fc978]={'$like':'%'+_0x22e5d4[_0x3703('0x44')]['filter']+'%'};return _0x4b001c;})});}_0x26c6fe[_0x3703('0x43')]={'$and':[_0x26c6fe[_0x3703('0x43')],{'$or':[{'UserId':_0x22e5d4[_0x3703('0x53')]['id']},{'OwnerId':_0x22e5d4[_0x3703('0x53')]['id']}]}]};_0x26c6fe=_['merge']({},_0x26c6fe,_0x22e5d4[_0x3703('0x58')]);var _0x4ecc88={'where':_0x26c6fe[_0x3703('0x43')]};return db['CmHopper'][_0x3703('0x25')](_0x4ecc88)[_0x3703('0x15')](function(_0x4c7363){_0x5bd359[_0x3703('0x25')]=_0x4c7363;if(_0x22e5d4['query']['includeAll']){_0x26c6fe[_0x3703('0x45')]=[{'attributes':['id',_0x3703('0x166'),'lastName',_0x3703('0x167')],'model':db[_0x3703('0xc5')],'as':_0x3703('0x168')},{'attributes':['id',_0x3703('0x38'),_0x3703('0x169')],'model':db[_0x3703('0xa5')],'as':_0x3703('0xd1')}];}return db['CmHopper']['findAll'](_0x26c6fe);})[_0x3703('0x15')](function(_0x443a16){_0x5bd359[_0x3703('0x4a')]=_0x443a16;return _0x5bd359;})[_0x3703('0x15')](respondWithFilteredResult(_0x29b0c1,_0x26c6fe))[_0x3703('0x20')](handleError(_0x29b0c1,null));};exports[_0x3703('0x16a')]=function(_0x4bc234,_0x309507){if(!_[_0x3703('0x63')](_0x4bc234[_0x3703('0x2d')]['id'])&&(_0x4bc234[_0x3703('0x2d')][_0x3703('0x2b')]==_0x3703('0x2c')||_0x4bc234['user']['role']==_0x3703('0x2d'))){return db['User'][_0x3703('0x8f')]({'where':{'id':_0x4bc234[_0x3703('0x53')]['id']},'raw':!![]})[_0x3703('0x15')](function(_0xd7c9bd){return authService[_0x3703('0x16b')](_0xd7c9bd);})['then'](function(_0x56f63d){if(_0x56f63d){return _0x309507[_0x3703('0x21')](0xc8)['json']({'api_key':_0x56f63d[_0x3703('0x16c')]});}else{return _0x309507['status'](0xcc)[_0x3703('0x23')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x3703('0x20')](handleError(_0x309507,0x193));}else{return _0x309507[_0x3703('0x21')](0x191)[_0x3703('0x23')]({'message':_0x3703('0x16d')});}};exports['createApiKey']=function(_0x37a445,_0x54deb1){if(!_[_0x3703('0x63')](_0x37a445[_0x3703('0x2d')]['id'])&&(_0x37a445[_0x3703('0x2d')][_0x3703('0x2b')]==_0x3703('0x2c')||_0x37a445[_0x3703('0x2d')][_0x3703('0x2b')]=='user')){return db['User'][_0x3703('0x37')]({'where':{'id':_0x37a445['params']['id']}})[_0x3703('0x15')](function(_0x23686f){return authService[_0x3703('0x16e')](_0x23686f);})[_0x3703('0x15')](function(_0x3e3b83){return db['User'][_0x3703('0x5b')]({'apiKeyIat':_0x3e3b83[_0x3703('0x16f')],'apiKeyNonce':_0x3e3b83[_0x3703('0x170')]},{'where':{'id':_0x37a445['params']['id']}})[_0x3703('0x15')](function(){return _0x54deb1[_0x3703('0x21')](0xc8)[_0x3703('0x23')]({'api_key':_0x3e3b83[_0x3703('0x16c')]});});})[_0x3703('0x20')](handleError(_0x54deb1,0x193));}else{return _0x54deb1[_0x3703('0x21')](0x191)[_0x3703('0x23')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x3703('0x171')]=function(_0x39551f,_0x52d07f){if(!_[_0x3703('0x63')](_0x39551f[_0x3703('0x2d')]['id'])&&(_0x39551f[_0x3703('0x2d')][_0x3703('0x2b')]=='admin'||_0x39551f[_0x3703('0x2d')]['role']=='user')){return db['User'][_0x3703('0x37')]({'where':{'id':_0x39551f[_0x3703('0x53')]['id']}})[_0x3703('0x15')](handleEntityNotFound(_0x52d07f,null))[_0x3703('0x15')](function(_0x2259c8){if(_0x2259c8&&_0x2259c8[_0x3703('0x172')]&&_0x2259c8[_0x3703('0x173')])return _0x2259c8;else throw{'message':_0x3703('0x174')};})[_0x3703('0x15')](function(_0x312797){return db[_0x3703('0x3d')][_0x3703('0x5b')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x39551f[_0x3703('0x53')]['id']}});})['then'](respondWithStatusCode(_0x52d07f,0xc8))[_0x3703('0x20')](handleError(_0x52d07f,0x193));}else{return _0x52d07f[_0x3703('0x21')](0x191)[_0x3703('0x23')]({'message':_0x3703('0x16d')});}};exports[_0x3703('0x175')]=function(_0x129711,_0x57aba8){var _0x45e014=_0x129711[_0x3703('0x2d')]['get']({'plain':!![]});if(!_0x45e014){return _0x57aba8[_0x3703('0x21')](0x191)[_0x3703('0x3b')](_0x3703('0x176'));}else{return _0x57aba8[_0x3703('0x21')](0xc8)[_0x3703('0x23')](_0x45e014);}};exports[_0x3703('0x177')]=function(_0x505e69,_0x56fbfc){var _0x2ac35f={'offset':0x0},_0x5b2a3b={'count':0x0,'rows':[]};Promise[_0x3703('0x178')]()[_0x3703('0x15')](function(){if(!_0x505e69[_0x3703('0x44')][_0x3703('0x32')]&&!_0x505e69['query'][_0x3703('0x179')]&&!_0x505e69[_0x3703('0x44')][_0x3703('0x17a')])return[];return Promise['resolve']()[_0x3703('0x15')](function(){var _0x5bfca1=[];if(!_['isEmpty'](_0x505e69['query']['teams'])){_0x5bfca1[_0x3703('0x47')](db['Team'][_0x3703('0x48')]({'attributes':['id',_0x3703('0x38')],'where':{'id':_0x505e69[_0x3703('0x44')][_0x3703('0x179')]}}));}if(!_[_0x3703('0x84')](_0x505e69[_0x3703('0x44')][_0x3703('0x17a')])){_0x5bfca1[_0x3703('0x47')](db[_0x3703('0xa5')][_0x3703('0x48')]({'attributes':['id',_0x3703('0x38')],'type':'inbound','where':{'id':_0x505e69[_0x3703('0x44')][_0x3703('0x17a')]}}));}return Promise['all'](_0x5bfca1);})['then'](function(_0x90bbfe){var _0x1ec72f=_[_0x3703('0x119')](_0x90bbfe)[_0x3703('0x34')](function(_0xd4f09c){return _0xd4f09c['getAgents']({'attributes':['id',_0x3703('0x38'),'internal',_0x3703('0x97')],'raw':!![]});});return Promise[_0x3703('0x5a')](_0x1ec72f);})[_0x3703('0x15')](function(_0x4465f2){var _0x253d6d=_[_0x3703('0x119')](_0x4465f2);if(!_0x505e69[_0x3703('0x44')][_0x3703('0x32')])return _0x253d6d;if(_['isEmpty'](_0x253d6d)){return db[_0x3703('0x3d')][_0x3703('0x48')]({'attributes':['id',_0x3703('0x38'),_0x3703('0x62'),_0x3703('0x97')],'where':{'role':_0x3703('0x2f'),'$or':[db[_0x3703('0x65')][_0x3703('0x43')](db[_0x3703('0x65')]['fn'](_0x3703('0x17b'),db[_0x3703('0x65')]['col'](_0x3703('0x38'))),{'$like':'%'+_0x505e69['query'][_0x3703('0x32')][_0x3703('0x9d')]()+'%'}),{'internal':{'$like':'%'+_0x505e69[_0x3703('0x44')][_0x3703('0x32')]+'%'}}]},'raw':!![]});}else{return _(_0x253d6d)[_0x3703('0x119')]()[_0x3703('0x32')](function(_0xadca78){return _0xadca78[_0x3703('0x38')][_0x3703('0x9d')]()[_0x3703('0x36')](_0x505e69['query'][_0x3703('0x32')][_0x3703('0x9d')]())||_0xadca78['internal'][_0x3703('0x17c')]()[_0x3703('0x36')](_0x505e69[_0x3703('0x44')][_0x3703('0x32')]);})[_0x3703('0x35')]();}})[_0x3703('0x15')](function(_0x29731e){var _0x4777b0='name';var _0x5620ca=_0x3703('0x17d');if(_0x505e69[_0x3703('0x44')][_0x3703('0xc7')]){var _0x5620ca=_0x505e69[_0x3703('0x44')][_0x3703('0xc7')][0x0]==='-'?_0x3703('0x17e'):'asc';var _0x4777b0=_0x5620ca==='asc'?_0x505e69['query']['sort']:_0x505e69[_0x3703('0x44')][_0x3703('0xc7')][_0x3703('0x17f')](0x1);}return _(_0x29731e)[_0x3703('0x180')]('id')[_0x3703('0x181')]([function(_0x8e53e2){return _0x4777b0===_0x3703('0x38')?_0x8e53e2[_0x4777b0][_0x3703('0x9d')]():_0x8e53e2[_0x4777b0];}],[_0x5620ca])['map'](function(_0x4087e7){return _[_0x3703('0xc8')](_0x4087e7,['id','name',_0x3703('0x62'),_0x3703('0x97')]);})[_0x3703('0x35')]();})[_0x3703('0x15')](function(_0x204182){return client[_0x3703('0x14')](_0x3703('0x2e'),_0x505e69)[_0x3703('0x15')](function(_0x29dac3){if(_0x29dac3[_0x3703('0x1b')])throw new Error(_0x3703('0x182'));var _0x279bdc=_0x29dac3['result'];var _0x9148bb=jayson[_0x3703('0x12')]['http']({'port':0x232c});return _0x9148bb[_0x3703('0x14')](_0x3703('0x2e'),_0x505e69)[_0x3703('0x15')](function(_0x5edac5){if(_0x5edac5[_0x3703('0x1b')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x1f2ea4=_0x5edac5[_0x3703('0x1f')];return _[_0x3703('0xc9')]({},_0x1f2ea4,_0x279bdc);});})[_0x3703('0x15')](function(_0x28c6ee){return _[_0x3703('0x34')](_0x204182,function(_0x84eed1){var _0x3fdf4b=_[_0x3703('0x37')](_0x28c6ee['rows'],['id',_0x84eed1['id']]);if(!_0x3fdf4b||!_0x84eed1[_0x3703('0x97')]){_0x84eed1[_0x3703('0x21')]='offline';}else if(_0x3fdf4b[_0x3703('0xa7')]){_0x84eed1[_0x3703('0x21')]=_0x3703('0xff');}else{_0x84eed1['status']=_[_0x3703('0x36')](['idle','unknown',_0x3703('0x183'),'ringing',null,undefined],_0x3fdf4b['voiceStatus'])?_0x3703('0x97'):_0x3703('0x184');}return _0x84eed1;});});});})[_0x3703('0x15')](function(_0x181736){if(!_0x505e69[_0x3703('0x44')][_0x3703('0xca')]('nolimit')){_0x2ac35f[_0x3703('0x27')]=qs[_0x3703('0x27')](_0x505e69['query'][_0x3703('0x27')]||0xa);_0x2ac35f[_0x3703('0x26')]=qs[_0x3703('0x26')](_0x505e69[_0x3703('0x44')][_0x3703('0x26')]);}_0x5b2a3b[_0x3703('0x25')]=_0x181736['length'];_0x5b2a3b[_0x3703('0x4a')]=_0x2ac35f['limit']?_0x181736['slice'](_0x2ac35f[_0x3703('0x26')],_0x2ac35f[_0x3703('0x26')]+_0x2ac35f[_0x3703('0x27')]):_0x181736;return _0x5b2a3b;})['then'](respondWithFilteredResult(_0x56fbfc,_0x2ac35f))['catch'](handleError(_0x56fbfc,null));};function get_open_tabs(_0x14566c,_0x59265d){var _0x2863b9=_0x14566c[_0x3703('0x185')](0x0)[_0x3703('0x186')]()+_0x14566c[_0x3703('0x187')](0x1);var _0x5c360e={'type':db[_0x3703('0x8e')][_0x3703('0x66')]['SELECT'],'raw':!![]};return new BPromise(function(_0x9e5d56,_0x1d40f0){var _0x139961=squel['select']()[_0x3703('0x188')](_0x3703('0x189')+_0x2863b9+_0x3703('0x18a'),'id')[_0x3703('0x188')](_0x3703('0x18b'))[_0x3703('0x67')](_0x3703('0x18c')+_0x14566c+'_interactions','ui')[_0x3703('0x43')](_0x3703('0x18d'),_0x59265d['id']);return db[_0x3703('0x65')]['query'](_0x139961[_0x3703('0x17c')](),_0x5c360e)[_0x3703('0x15')](function(_0x2b2085){_0x59265d[_0x2863b9+_0x3703('0x18e')]=_0x2b2085;_0x9e5d56(_0x2b2085);})[_0x3703('0x20')](function(_0x589fc6){_0x1d40f0(_0x589fc6);});});};
\ No newline at end of file
index efbe660..c893538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x778e=['emit','hook','exports','events','../../mysqldb','User','setMaxListeners','save','update','remove'];(function(_0x5ec5b1,_0x352b15){var _0x167de3=function(_0x1c6753){while(--_0x1c6753){_0x5ec5b1['push'](_0x5ec5b1['shift']());}};_0x167de3(++_0x352b15);}(_0x778e,0x7b));var _0xe778=function(_0xba827b,_0x2c8848){_0xba827b=_0xba827b-0x0;var _0x3b9706=_0x778e[_0xba827b];return _0x3b9706;};'use strict';var EventEmitter=require(_0xe778('0x0'));var User=require(_0xe778('0x1'))['db'][_0xe778('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xe778('0x3')](0x0);var events={'afterCreate':_0xe778('0x4'),'afterUpdate':_0xe778('0x5'),'afterDestroy':_0xe778('0x6')};function emitEvent(_0x10d35b){return function(_0x2b0b71,_0x3a6c43,_0x5dd339){UserEvents[_0xe778('0x7')](_0x10d35b+':'+_0x2b0b71['id'],_0x2b0b71);UserEvents[_0xe778('0x7')](_0x10d35b,_0x2b0b71);_0x5dd339(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0xe778('0x8')](e,emitEvent(event));}}module[_0xe778('0x9')]=UserEvents;
\ No newline at end of file
+var _0x8ec1=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','remove','emit'];(function(_0x7abafd,_0x1d190c){var _0x2adae6=function(_0x2fa059){while(--_0x2fa059){_0x7abafd['push'](_0x7abafd['shift']());}};_0x2adae6(++_0x1d190c);}(_0x8ec1,0x143));var _0x18ec=function(_0x505088,_0x23a321){_0x505088=_0x505088-0x0;var _0x3eb2c9=_0x8ec1[_0x505088];return _0x3eb2c9;};'use strict';var EventEmitter=require(_0x18ec('0x0'));var User=require(_0x18ec('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x18ec('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x18ec('0x3')};function emitEvent(_0x1ec4a9){return function(_0x135ecf,_0x2ec741,_0x434249){UserEvents[_0x18ec('0x4')](_0x1ec4a9+':'+_0x135ecf['id'],_0x135ecf);UserEvents['emit'](_0x1ec4a9,_0x135ecf);_0x434249(null);};}for(var e in events){if(events[_0x18ec('0x5')](e)){var event=events[e];User[_0x18ec('0x6')](e,emitEvent(event));}}module[_0x18ec('0x7')]=UserEvents;
\ No newline at end of file
index 4d30472..4c2bcb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac21=['_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','name','Hangup','priority','defaults','VoiceChanSpy','then','internal','concat','catch','exports','models','define','User','users','utf8','userProfileId','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','destroy','password','Missing\x20Callback','toString','base64','salt','pbkdf2','sha1','indexOf','Invalid\x20password','encryptPassword','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','context','from-sip','system','length','format','%s%s','prefix','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','options','join','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x2118f2,_0x294cfa){var _0x4769df=function(_0x220f09){while(--_0x220f09){_0x2118f2['push'](_0x2118f2['shift']());}};_0x4769df(++_0x294cfa);}(_0xac21,0x73));var _0x1ac2=function(_0x304170,_0x59383f){_0x304170=_0x304170-0x0;var _0x4525d7=_0xac21[_0x304170];return _0x4525d7;};'use strict';var BPromise=require(_0x1ac2('0x0'));var crypto=require(_0x1ac2('0x1'));var util=require(_0x1ac2('0x2'));var md5=require(_0x1ac2('0x3'));var _=require(_0x1ac2('0x4'));var attributes=require(_0x1ac2('0x5'));var authTypes=[_0x1ac2('0x6')];var validatePresenceOf=function(_0x41781b){return _0x41781b&&_0x41781b['length'];};var getChanSpyApplications=function(_0x14f287,_0x315e6b,_0x48fcd7){var _0x111363={'context':_0x14f287[_0x1ac2('0x7')]||_0x1ac2('0x8'),'type':_0x1ac2('0x9'),'isApp':![],'UserId':_0x14f287['id']};var _0x243dbd=[];for(var _0x5265a4=0x0,_0x1a9e9b=0x1;_0x5265a4<_0x48fcd7[_0x1ac2('0xa')];_0x5265a4++,_0x1a9e9b=0x1){var _0x34a259={'exten':util[_0x1ac2('0xb')](_0x1ac2('0xc'),_0x48fcd7[_0x5265a4][_0x1ac2('0xd')],_0x315e6b),'ChanSpyId':_0x48fcd7[_0x5265a4]['id']};_0x243dbd[_0x1ac2('0xe')](_[_0x1ac2('0xf')]({'app':_0x1ac2('0x10'),'appdata':util[_0x1ac2('0xb')]('CDR(type)=%s',_0x1ac2('0x11')),'priority':_0x1a9e9b++},_0x111363,_0x34a259));if(_0x48fcd7[_0x5265a4][_0x1ac2('0x12')]){_0x243dbd[_0x1ac2('0xe')](_[_0x1ac2('0xf')]({'app':_0x1ac2('0x13'),'appdata':util[_0x1ac2('0xb')](_0x1ac2('0x14'),_0x48fcd7[_0x5265a4][_0x1ac2('0x15')]),'priority':_0x1a9e9b++},_0x111363,_0x34a259));}if(_0x48fcd7[_0x5265a4][_0x1ac2('0x16')]){_0x243dbd[_0x1ac2('0xe')](_['merge']({'app':_0x1ac2('0x17'),'appdata':_0x48fcd7[_0x5265a4]['password'],'priority':_0x1a9e9b++},_0x111363,_0x34a259));}_0x243dbd['push'](_['merge']({'app':'ChanSpy','appdata':util[_0x1ac2('0xb')]('SIP/%s,%s',_0x14f287['name'],_0x48fcd7[_0x5265a4][_0x1ac2('0x18')]?_0x48fcd7[_0x5265a4][_0x1ac2('0x18')][_0x1ac2('0x19')](''):''),'priority':_0x1a9e9b++},_0x111363,_0x34a259));if(_0x48fcd7[_0x5265a4][_0x1ac2('0x12')]){_0x243dbd[_0x1ac2('0xe')](_[_0x1ac2('0xf')]({'app':_0x1ac2('0x1a'),'priority':_0x1a9e9b++},_0x111363,_0x34a259));}}return _0x243dbd;};var getUserApplications=function(_0x5c5279,_0x56cb55){var _0x222e79=['wav',_0x1ac2('0x1b'),_0x1ac2('0x1c')];var _0xd3118f={'context':_0x5c5279[_0x1ac2('0x7')]||_0x1ac2('0x8'),'exten':_0x56cb55,'type':_0x1ac2('0x9'),'isApp':![],'UserId':_0x5c5279['id']};var _0x220508=[{'app':_0x1ac2('0x10'),'appdata':_0x1ac2('0x1d')}];if(_0x5c5279[_0x1ac2('0x1e')]&&_[_0x1ac2('0x1f')](_0x222e79,_0x5c5279['extensionMonitor'])){_0x220508[_0x1ac2('0xe')]({'app':_0x1ac2('0x10'),'appdata':_0x1ac2('0x20')});_0x220508[_0x1ac2('0xe')]({'app':_0x1ac2('0x10'),'appdata':util[_0x1ac2('0xb')](_0x1ac2('0x21'),_0x5c5279[_0x1ac2('0x1e')])});_0x220508[_0x1ac2('0xe')]({'app':_0x1ac2('0x22'),'appdata':util[_0x1ac2('0xb')](_0x1ac2('0x23'),_0x5c5279['name'])});}else{_0x220508['push']({'app':'Dial','appdata':util['format'](_0x1ac2('0x24'),_0x5c5279[_0x1ac2('0x25')])});}_0x220508[_0x1ac2('0xe')]({'app':_0x1ac2('0x26')});for(var _0x2c3ae9=0x0;_0x2c3ae9<_0x220508[_0x1ac2('0xa')];_0x2c3ae9++){_0x220508[_0x2c3ae9][_0x1ac2('0x27')]=_0x2c3ae9+0x1;_0x220508[_0x2c3ae9]=_[_0x1ac2('0x28')](_0x220508[_0x2c3ae9],_0xd3118f);}return _0x220508;};var getChanSpyPromise=function(_0x2bd698,_0x20a650){return new BPromise(function(_0x5034db,_0x366362){return _0x2bd698[_0x1ac2('0x29')]['findAll']()[_0x1ac2('0x2a')](function(_0x47a21b){if(_0x47a21b){var _0x44b9be=getChanSpyApplications(_0x20a650,_0x20a650[_0x1ac2('0x2b')],_0x47a21b);if(_0x20a650[_0x1ac2('0x2b')]!=_0x20a650['name']){_0x44b9be=_0x44b9be[_0x1ac2('0x2c')](getChanSpyApplications(_0x20a650,_0x20a650[_0x1ac2('0x25')],_0x47a21b));}return _0x5034db(_0x44b9be);}return _0x5034db([]);})[_0x1ac2('0x2d')](function(_0x20532f){_0x366362(_0x20532f);});});};module[_0x1ac2('0x2e')]=function(_0xf4c96f,_0x5d104a){var _0x3a3798=_0xf4c96f[_0x1ac2('0x2f')];return _0xf4c96f[_0x1ac2('0x30')](_0x1ac2('0x31'),attributes,{'tableName':_0x1ac2('0x32'),'charset':_0x1ac2('0x33'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x1beff3,_0x3f4b43,_0x53e1c1){var _0x363a2a=typeof _0x1beff3[_0x1ac2('0x34')]==='undefined'?BPromise[_0x1ac2('0x35')](null):_0x3a3798[_0x1ac2('0x36')][_0x1ac2('0x37')]({'where':{'id':_0x1beff3[_0x1ac2('0x34')]}});_0x363a2a[_0x1ac2('0x2a')](function(_0x16804b){if(_0x16804b){_0x1beff3['privacyEnabled']=_0x16804b[_0x1ac2('0x38')];}})[_0x1ac2('0x2a')](function(){_0x1beff3[_0x1ac2('0x39')]();_0x1beff3[_0x1ac2('0x3a')](_0x53e1c1);})[_0x1ac2('0x2d')](function(_0x4e605b){_0x53e1c1(_0x4e605b);});},'beforeUpdate':function(_0x556194,_0xebd85c,_0x5f3add){Promise[_0x1ac2('0x35')]()[_0x1ac2('0x2a')](function(){if(_0x556194[_0x1ac2('0x3b')](_0x1ac2('0x34'))===![])return;return _0x3a3798['UserProfile']['find']({'where':{'id':_0x556194[_0x1ac2('0x34')]}})[_0x1ac2('0x2a')](function(_0xf9f663){if(_0xf9f663)_0x556194[_0x1ac2('0x38')]=_0xf9f663['privacyEnabled'];return;});})[_0x1ac2('0x2a')](function(){if(_0x556194[_0x1ac2('0x3b')]('password')){_0x556194[_0x1ac2('0x39')]();return _0x556194[_0x1ac2('0x3a')](_0x5f3add);}_0x5f3add();})['catch'](function(_0x64b875){_0x5f3add(_0x64b875);});},'afterCreate':function(_0x4eb7ab,_0x24e240,_0x4ed917){var _0x2ad60f=getUserApplications(_0x4eb7ab,_0x4eb7ab[_0x1ac2('0x2b')]);if(_0x4eb7ab[_0x1ac2('0x2b')]!=_0x4eb7ab[_0x1ac2('0x25')]){_0x2ad60f=_0x2ad60f[_0x1ac2('0x2c')](getUserApplications(_0x4eb7ab,_0x4eb7ab['name']));}return _0x3a3798[_0x1ac2('0x3c')][_0x1ac2('0x3d')](_0x2ad60f)['then'](function(){if(_0x4eb7ab[_0x1ac2('0x11')]){return getChanSpyPromise(_0x3a3798,_0x4eb7ab);}})['then'](function(_0x33cd04){if(_0x33cd04&&_0x33cd04[_0x1ac2('0xa')]){return _0x3a3798['VoiceExtension'][_0x1ac2('0x3d')](_0x33cd04);}})[_0x1ac2('0x2a')](function(){_0x4ed917();})[_0x1ac2('0x2d')](function(_0x4cf2f9){_0x4ed917(_0x4cf2f9);});},'afterUpdate':function(_0x491280,_0x30daf9,_0x5ed4ea){return BPromise['resolve']()[_0x1ac2('0x2a')](function(){if(_0x491280[_0x1ac2('0x3b')](_0x1ac2('0x11'))||_0x491280[_0x1ac2('0x3b')](_0x1ac2('0x7'))){return _0x3a3798['VoiceExtension']['destroy']({'where':{'UserId':_0x491280['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x1ac2('0x2a')](function(){if(_0x491280[_0x1ac2('0x11')]){return getChanSpyPromise(_0x3a3798,_0x491280)['then'](function(_0x54329a){if(_0x54329a&&_0x54329a[_0x1ac2('0xa')]){return _0x3a3798[_0x1ac2('0x3c')][_0x1ac2('0x3d')](_0x54329a);}});}});}})['then'](function(){if(_0x491280['changed'](_0x1ac2('0x1e'))||_0x491280['changed']('context')){return _0x3a3798['VoiceExtension']['destroy']({'where':{'UserId':_0x491280['id'],'type':_0x1ac2('0x9'),'ChanSpyId':null}})[_0x1ac2('0x2a')](function(){var _0x33a9d4=getUserApplications(_0x491280,_0x491280[_0x1ac2('0x2b')]);if(_0x491280['internal']!=_0x491280[_0x1ac2('0x25')]){_0x33a9d4=_0x33a9d4[_0x1ac2('0x2c')](getUserApplications(_0x491280,_0x491280[_0x1ac2('0x25')]));}return _0x3a3798[_0x1ac2('0x3c')]['bulkCreate'](_0x33a9d4);});}})[_0x1ac2('0x2a')](function(){_0x5ed4ea();})[_0x1ac2('0x2d')](function(_0x1e5002){_0x5ed4ea(_0x1e5002);});},'afterDestroy':function(_0x5b366f,_0x30621b){return _0x3a3798[_0x1ac2('0x3c')][_0x1ac2('0x3e')]({'where':{'UserId':_0x5b366f['id'],'type':_0x1ac2('0x9')}});}},'instanceMethods':{'authenticate':function(_0x219763,_0x47f408){if(!_0x47f408){return this[_0x1ac2('0x3f')]===this['encryptPassword'](_0x219763);}var _0x3c3a45=this;this['encryptPassword'](_0x219763,function(_0x491896,_0x531d4e){if(_0x491896){_0x47f408(_0x491896);}if(_0x3c3a45[_0x1ac2('0x3f')]===_0x531d4e){_0x47f408(null,!![]);}else{_0x47f408(null,![]);}});},'makeSalt':function(_0x363355,_0x2b3678){var _0x57fd91=0x10;if(typeof arguments[0x0]==='function'){_0x2b3678=arguments[0x0];_0x363355=_0x57fd91;}else if(typeof arguments[0x1]==='function'){_0x2b3678=arguments[0x1];}else{throw new Error(_0x1ac2('0x40'));}if(!_0x363355){_0x363355=_0x57fd91;}return crypto['randomBytes'](_0x363355,function(_0x518f2b,_0x3742bc){if(_0x518f2b){_0x2b3678(_0x518f2b);}return _0x2b3678(null,_0x3742bc[_0x1ac2('0x41')](_0x1ac2('0x42')));});},'encryptPassword':function(_0x1c13bb,_0x514a44){if(!_0x1c13bb||!this[_0x1ac2('0x43')]){return _0x514a44?_0x514a44(null):null;}var _0x21de17=0x2710;var _0x2b76a9=0x40;var _0x1cb403=new Buffer(this['salt'],_0x1ac2('0x42'));if(!_0x514a44){return crypto['pbkdf2Sync'](_0x1c13bb,_0x1cb403,_0x21de17,_0x2b76a9,'sha1')[_0x1ac2('0x41')](_0x1ac2('0x42'));}return crypto[_0x1ac2('0x44')](_0x1c13bb,_0x1cb403,_0x21de17,_0x2b76a9,_0x1ac2('0x45'),function(_0xbc11e1,_0x2bab12){if(_0xbc11e1){_0x514a44(_0xbc11e1);}return _0x514a44(null,_0x2bab12[_0x1ac2('0x41')](_0x1ac2('0x42')));});},'updatePassword':function(_0x1d966c){if(!this[_0x1ac2('0x3f')]){return _0x1d966c(null);}if(!validatePresenceOf(this[_0x1ac2('0x3f')])&&authTypes[_0x1ac2('0x46')](this['provider'])===-0x1){_0x1d966c(new Error(_0x1ac2('0x47')));}var _0x2daffe=this;this['makeSalt'](function(_0x592b9e,_0x121ede){if(_0x592b9e){return _0x1d966c(_0x592b9e);}_0x2daffe[_0x1ac2('0x43')]=_0x121ede;_0x2daffe[_0x1ac2('0x48')](_0x2daffe['password'],function(_0xce432c,_0x33bd96){if(_0xce432c){_0x1d966c(_0xce432c);}_0x2daffe[_0x1ac2('0x3f')]=_0x33bd96;_0x1d966c(null);});});},'updateMd5Password':function(){this[_0x1ac2('0x49')]=md5(this[_0x1ac2('0x25')]+':asterisk:'+this[_0x1ac2('0x3f')]);return this['md5secret'];}}});};
\ No newline at end of file
+var _0x3ec5=['utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','changed','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','sha1','toString','pbkdf2','indexOf','provider','makeSalt',':asterisk:','md5secret','bluebird','crypto','lodash','./user.attributes','google','context','from-sip','system','length','format','%s%s','merge','Set','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users'];(function(_0x4e3db3,_0x22ab79){var _0x320da8=function(_0x125c83){while(--_0x125c83){_0x4e3db3['push'](_0x4e3db3['shift']());}};_0x320da8(++_0x22ab79);}(_0x3ec5,0x198));var _0x53ec=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3ec5[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require(_0x53ec('0x0'));var crypto=require(_0x53ec('0x1'));var util=require('util');var md5=require('md5');var _=require(_0x53ec('0x2'));var attributes=require(_0x53ec('0x3'));var authTypes=[_0x53ec('0x4')];var validatePresenceOf=function(_0x16e49f){return _0x16e49f&&_0x16e49f['length'];};var getChanSpyApplications=function(_0x26b8f0,_0x5a7d27,_0x21b102){var _0x3b0282={'context':_0x26b8f0[_0x53ec('0x5')]||_0x53ec('0x6'),'type':_0x53ec('0x7'),'isApp':![],'UserId':_0x26b8f0['id']};var _0x222596=[];for(var _0x4c403a=0x0,_0x538bbe=0x1;_0x4c403a<_0x21b102[_0x53ec('0x8')];_0x4c403a++,_0x538bbe=0x1){var _0xb19c12={'exten':util[_0x53ec('0x9')](_0x53ec('0xa'),_0x21b102[_0x4c403a]['prefix'],_0x5a7d27),'ChanSpyId':_0x21b102[_0x4c403a]['id']};_0x222596['push'](_[_0x53ec('0xb')]({'app':_0x53ec('0xc'),'appdata':util[_0x53ec('0x9')]('CDR(type)=%s',_0x53ec('0xd')),'priority':_0x538bbe++},_0x3b0282,_0xb19c12));if(_0x21b102[_0x4c403a][_0x53ec('0xe')]){_0x222596[_0x53ec('0xf')](_[_0x53ec('0xb')]({'app':_0x53ec('0x10'),'appdata':util[_0x53ec('0x9')](_0x53ec('0x11'),_0x21b102[_0x4c403a][_0x53ec('0x12')]),'priority':_0x538bbe++},_0x3b0282,_0xb19c12));}if(_0x21b102[_0x4c403a][_0x53ec('0x13')]){_0x222596[_0x53ec('0xf')](_[_0x53ec('0xb')]({'app':_0x53ec('0x14'),'appdata':_0x21b102[_0x4c403a][_0x53ec('0x15')],'priority':_0x538bbe++},_0x3b0282,_0xb19c12));}_0x222596[_0x53ec('0xf')](_[_0x53ec('0xb')]({'app':_0x53ec('0x16'),'appdata':util[_0x53ec('0x9')](_0x53ec('0x17'),_0x26b8f0['name'],_0x21b102[_0x4c403a]['options']?_0x21b102[_0x4c403a]['options']['join'](''):''),'priority':_0x538bbe++},_0x3b0282,_0xb19c12));if(_0x21b102[_0x4c403a][_0x53ec('0xe')]){_0x222596[_0x53ec('0xf')](_[_0x53ec('0xb')]({'app':_0x53ec('0x18'),'priority':_0x538bbe++},_0x3b0282,_0xb19c12));}}return _0x222596;};var getUserApplications=function(_0x35d9c3,_0x1e573c){var _0x2be740=['wav',_0x53ec('0x19'),_0x53ec('0x1a')];var _0x378a86={'context':_0x35d9c3[_0x53ec('0x5')]||'from-sip','exten':_0x1e573c,'type':'system','isApp':![],'UserId':_0x35d9c3['id']};var _0x2dfd61=[{'app':_0x53ec('0xc'),'appdata':_0x53ec('0x1b')}];if(_0x35d9c3[_0x53ec('0x1c')]&&_[_0x53ec('0x1d')](_0x2be740,_0x35d9c3[_0x53ec('0x1c')])){_0x2dfd61[_0x53ec('0xf')]({'app':'Set','appdata':_0x53ec('0x1e')});_0x2dfd61[_0x53ec('0xf')]({'app':_0x53ec('0xc'),'appdata':util[_0x53ec('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x35d9c3[_0x53ec('0x1c')])});_0x2dfd61[_0x53ec('0xf')]({'app':_0x53ec('0x1f'),'appdata':util[_0x53ec('0x9')](_0x53ec('0x20'),_0x35d9c3[_0x53ec('0x21')])});}else{_0x2dfd61[_0x53ec('0xf')]({'app':'Dial','appdata':util[_0x53ec('0x9')](_0x53ec('0x22'),_0x35d9c3[_0x53ec('0x21')])});}_0x2dfd61[_0x53ec('0xf')]({'app':'Hangup'});for(var _0x25b7a2=0x0;_0x25b7a2<_0x2dfd61['length'];_0x25b7a2++){_0x2dfd61[_0x25b7a2][_0x53ec('0x23')]=_0x25b7a2+0x1;_0x2dfd61[_0x25b7a2]=_[_0x53ec('0x24')](_0x2dfd61[_0x25b7a2],_0x378a86);}return _0x2dfd61;};var getChanSpyPromise=function(_0x59d8dd,_0x26466f){return new BPromise(function(_0x2a9713,_0x1ac097){return _0x59d8dd[_0x53ec('0x25')][_0x53ec('0x26')]()[_0x53ec('0x27')](function(_0x5d9148){if(_0x5d9148){var _0x154d5d=getChanSpyApplications(_0x26466f,_0x26466f[_0x53ec('0x28')],_0x5d9148);if(_0x26466f[_0x53ec('0x28')]!=_0x26466f[_0x53ec('0x21')]){_0x154d5d=_0x154d5d[_0x53ec('0x29')](getChanSpyApplications(_0x26466f,_0x26466f[_0x53ec('0x21')],_0x5d9148));}return _0x2a9713(_0x154d5d);}return _0x2a9713([]);})[_0x53ec('0x2a')](function(_0x38cfeb){_0x1ac097(_0x38cfeb);});});};module[_0x53ec('0x2b')]=function(_0x1ca272,_0x361ebe){var _0xa38eb=_0x1ca272[_0x53ec('0x2c')];return _0x1ca272[_0x53ec('0x2d')](_0x53ec('0x2e'),attributes,{'tableName':_0x53ec('0x2f'),'charset':_0x53ec('0x30'),'collate':_0x53ec('0x31'),'hooks':{'beforeCreate':function(_0x2205fc,_0x5977c1,_0x308156){var _0x5386c5=typeof _0x2205fc['userProfileId']===_0x53ec('0x32')?BPromise[_0x53ec('0x33')](null):_0xa38eb[_0x53ec('0x34')][_0x53ec('0x35')]({'where':{'id':_0x2205fc[_0x53ec('0x36')]}});_0x5386c5[_0x53ec('0x27')](function(_0x451ce9){if(_0x451ce9){_0x2205fc['privacyEnabled']=_0x451ce9[_0x53ec('0x37')];}})[_0x53ec('0x27')](function(){_0x2205fc['updateMd5Password']();_0x2205fc['updatePassword'](_0x308156);})['catch'](function(_0x269893){_0x308156(_0x269893);});},'beforeUpdate':function(_0x28883a,_0x2a12cf,_0x32e082){Promise[_0x53ec('0x33')]()[_0x53ec('0x27')](function(){if(_0x28883a[_0x53ec('0x38')](_0x53ec('0x36'))===![])return;return _0xa38eb[_0x53ec('0x34')][_0x53ec('0x35')]({'where':{'id':_0x28883a[_0x53ec('0x36')]}})['then'](function(_0x3c9ea1){if(_0x3c9ea1)_0x28883a[_0x53ec('0x37')]=_0x3c9ea1[_0x53ec('0x37')];return;});})['then'](function(){if(_0x28883a[_0x53ec('0x38')](_0x53ec('0x15'))){_0x28883a[_0x53ec('0x39')]();return _0x28883a[_0x53ec('0x3a')](_0x32e082);}_0x32e082();})[_0x53ec('0x2a')](function(_0x4aa48e){_0x32e082(_0x4aa48e);});},'afterCreate':function(_0x4f9707,_0x3bf53c,_0x480f00){var _0x5393ed=getUserApplications(_0x4f9707,_0x4f9707[_0x53ec('0x28')]);if(_0x4f9707[_0x53ec('0x28')]!=_0x4f9707[_0x53ec('0x21')]){_0x5393ed=_0x5393ed[_0x53ec('0x29')](getUserApplications(_0x4f9707,_0x4f9707[_0x53ec('0x21')]));}return _0xa38eb[_0x53ec('0x3b')][_0x53ec('0x3c')](_0x5393ed)[_0x53ec('0x27')](function(){if(_0x4f9707[_0x53ec('0xd')]){return getChanSpyPromise(_0xa38eb,_0x4f9707);}})[_0x53ec('0x27')](function(_0x2ff67e){if(_0x2ff67e&&_0x2ff67e[_0x53ec('0x8')]){return _0xa38eb['VoiceExtension'][_0x53ec('0x3c')](_0x2ff67e);}})[_0x53ec('0x27')](function(){_0x480f00();})[_0x53ec('0x2a')](function(_0x14d801){_0x480f00(_0x14d801);});},'afterUpdate':function(_0x57efc6,_0x2005a3,_0x25b205){return BPromise[_0x53ec('0x33')]()[_0x53ec('0x27')](function(){if(_0x57efc6['changed'](_0x53ec('0xd'))||_0x57efc6['changed'](_0x53ec('0x5'))){return _0xa38eb['VoiceExtension'][_0x53ec('0x3d')]({'where':{'UserId':_0x57efc6['id'],'type':_0x53ec('0x7'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x57efc6[_0x53ec('0xd')]){return getChanSpyPromise(_0xa38eb,_0x57efc6)['then'](function(_0x19f446){if(_0x19f446&&_0x19f446['length']){return _0xa38eb[_0x53ec('0x3b')][_0x53ec('0x3c')](_0x19f446);}});}});}})[_0x53ec('0x27')](function(){if(_0x57efc6[_0x53ec('0x38')](_0x53ec('0x1c'))||_0x57efc6[_0x53ec('0x38')](_0x53ec('0x5'))){return _0xa38eb[_0x53ec('0x3b')][_0x53ec('0x3d')]({'where':{'UserId':_0x57efc6['id'],'type':_0x53ec('0x7'),'ChanSpyId':null}})[_0x53ec('0x27')](function(){var _0x1ee181=getUserApplications(_0x57efc6,_0x57efc6['internal']);if(_0x57efc6[_0x53ec('0x28')]!=_0x57efc6[_0x53ec('0x21')]){_0x1ee181=_0x1ee181[_0x53ec('0x29')](getUserApplications(_0x57efc6,_0x57efc6[_0x53ec('0x21')]));}return _0xa38eb[_0x53ec('0x3b')][_0x53ec('0x3c')](_0x1ee181);});}})[_0x53ec('0x27')](function(){_0x25b205();})['catch'](function(_0xaf4da1){_0x25b205(_0xaf4da1);});},'afterDestroy':function(_0x5c0117,_0x3cc3fe){return _0xa38eb[_0x53ec('0x3b')][_0x53ec('0x3d')]({'where':{'UserId':_0x5c0117['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x1bb665,_0x5b9446){if(!_0x5b9446){return this[_0x53ec('0x15')]===this['encryptPassword'](_0x1bb665);}var _0x579eda=this;this[_0x53ec('0x3e')](_0x1bb665,function(_0x2be4c1,_0x13496d){if(_0x2be4c1){_0x5b9446(_0x2be4c1);}if(_0x579eda[_0x53ec('0x15')]===_0x13496d){_0x5b9446(null,!![]);}else{_0x5b9446(null,![]);}});},'makeSalt':function(_0x32d0dc,_0x50e797){var _0x226b01=0x10;if(typeof arguments[0x0]===_0x53ec('0x3f')){_0x50e797=arguments[0x0];_0x32d0dc=_0x226b01;}else if(typeof arguments[0x1]==='function'){_0x50e797=arguments[0x1];}else{throw new Error(_0x53ec('0x40'));}if(!_0x32d0dc){_0x32d0dc=_0x226b01;}return crypto[_0x53ec('0x41')](_0x32d0dc,function(_0x2ba18a,_0x6ec840){if(_0x2ba18a){_0x50e797(_0x2ba18a);}return _0x50e797(null,_0x6ec840['toString'](_0x53ec('0x42')));});},'encryptPassword':function(_0x13e562,_0x421302){if(!_0x13e562||!this[_0x53ec('0x43')]){return _0x421302?_0x421302(null):null;}var _0x2445bb=0x2710;var _0x42e512=0x40;var _0x2ae9e2=new Buffer(this[_0x53ec('0x43')],_0x53ec('0x42'));if(!_0x421302){return crypto['pbkdf2Sync'](_0x13e562,_0x2ae9e2,_0x2445bb,_0x42e512,_0x53ec('0x44'))[_0x53ec('0x45')](_0x53ec('0x42'));}return crypto[_0x53ec('0x46')](_0x13e562,_0x2ae9e2,_0x2445bb,_0x42e512,'sha1',function(_0x33105b,_0x2baaff){if(_0x33105b){_0x421302(_0x33105b);}return _0x421302(null,_0x2baaff['toString'](_0x53ec('0x42')));});},'updatePassword':function(_0x519a04){if(!this[_0x53ec('0x15')]){return _0x519a04(null);}if(!validatePresenceOf(this[_0x53ec('0x15')])&&authTypes[_0x53ec('0x47')](this[_0x53ec('0x48')])===-0x1){_0x519a04(new Error('Invalid\x20password'));}var _0x578609=this;this[_0x53ec('0x49')](function(_0xa36ef0,_0x2e9c50){if(_0xa36ef0){return _0x519a04(_0xa36ef0);}_0x578609[_0x53ec('0x43')]=_0x2e9c50;_0x578609['encryptPassword'](_0x578609['password'],function(_0x5aec90,_0x18bb22){if(_0x5aec90){_0x519a04(_0x5aec90);}_0x578609['password']=_0x18bb22;_0x519a04(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x53ec('0x21')]+_0x53ec('0x4a')+this[_0x53ec('0x15')]);return this[_0x53ec('0x4b')];}}});};
\ No newline at end of file
index 2ff6c68..633aa22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cca=['upsert','loginInPause','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','request','then','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetUser','findAll','options','raw','attributes','include','map','model','ShowUser','User','find','where','info','catch','PauseUser','internal','UserVoiceQueueRt','update','MemberReport','name','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','interface','SIP/%s','body','DEFAULT\x20PAUSE','role','bulkCreate','findOne','channel','Unknown\x20channel','voice','system','mail','chat','fax','sms','openchannel','whatsapp','set','Pause','all','LogoutUser','destroy','mobile','phone','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues'];(function(_0x3d4928,_0xe1ec20){var _0x5a9ed7=function(_0x41de06){while(--_0x41de06){_0x3d4928['push'](_0x3d4928['shift']());}};_0x5a9ed7(++_0xe1ec20);}(_0x6cca,0x11b));var _0xa6cc=function(_0x47e098,_0x3586c1){_0x47e098=_0x47e098-0x0;var _0x329831=_0x6cca[_0x47e098];return _0x329831;};'use strict';var _=require(_0xa6cc('0x0'));var util=require(_0xa6cc('0x1'));var moment=require('moment');var BPromise=require(_0xa6cc('0x2'));var rs=require(_0xa6cc('0x3'));var fs=require('fs');var Redis=require(_0xa6cc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa6cc('0x5'));var logger=require(_0xa6cc('0x6'))(_0xa6cc('0x7'));var config=require(_0xa6cc('0x8'));var jayson=require(_0xa6cc('0x9'));var client=jayson[_0xa6cc('0xa')][_0xa6cc('0xb')]({'port':0x232a});config[_0xa6cc('0xc')]=_[_0xa6cc('0xd')](config[_0xa6cc('0xc')],{'host':_0xa6cc('0xe'),'port':0x18eb});var socket=require(_0xa6cc('0xf'))(new Redis(config['redis']));require(_0xa6cc('0x10'))['register'](socket);function respondWithRpcPromise(_0x33105d,_0x4106b0,_0x23ab34){return new BPromise(function(_0x99bcc1,_0x4b0b06){return client[_0xa6cc('0x11')](_0x33105d,_0x23ab34)[_0xa6cc('0x12')](function(_0x16e9db){logger['info']('User,\x20%s,\x20%s',_0x4106b0,'request\x20sent');logger[_0xa6cc('0x13')](_0xa6cc('0x14'),_0x4106b0,_0xa6cc('0x15'),JSON[_0xa6cc('0x16')](_0x16e9db));if(_0x16e9db[_0xa6cc('0x17')]){if(_0x16e9db[_0xa6cc('0x17')][_0xa6cc('0x18')]===0x1f4){logger[_0xa6cc('0x17')]('User,\x20%s,\x20%s',_0x4106b0,_0x16e9db['error'][_0xa6cc('0x19')]);return _0x4b0b06(_0x16e9db[_0xa6cc('0x17')][_0xa6cc('0x19')]);}logger[_0xa6cc('0x17')]('User,\x20%s,\x20%s',_0x4106b0,_0x16e9db['error'][_0xa6cc('0x19')]);return _0x99bcc1(_0x16e9db[_0xa6cc('0x17')]['message']);}else{logger['info']('User,\x20%s,\x20%s',_0x4106b0,_0xa6cc('0x15'));_0x99bcc1(_0x16e9db[_0xa6cc('0x1a')][_0xa6cc('0x19')]);}})['catch'](function(_0x30e10c){logger[_0xa6cc('0x17')]('User,\x20%s,\x20%s',_0x4106b0,_0x30e10c);_0x4b0b06(_0x30e10c);});});}exports[_0xa6cc('0x1b')]=function(_0x17608f){var _0x3301fb=this;return new Promise(function(_0xf983cc,_0x6e46f){return db['User'][_0xa6cc('0x1c')]({'raw':_0x17608f[_0xa6cc('0x1d')]?_0x17608f[_0xa6cc('0x1d')][_0xa6cc('0x1e')]===undefined?!![]:![]:!![],'where':_0x17608f[_0xa6cc('0x1d')]?_0x17608f[_0xa6cc('0x1d')]['where']||null:null,'attributes':_0x17608f['options']?_0x17608f[_0xa6cc('0x1d')][_0xa6cc('0x1f')]||null:null,'limit':_0x17608f['options']?_0x17608f['options']['limit']||null:null,'include':_0x17608f[_0xa6cc('0x1d')]?_0x17608f[_0xa6cc('0x1d')][_0xa6cc('0x20')]?_[_0xa6cc('0x21')](_0x17608f['options'][_0xa6cc('0x20')],function(_0x24f572){return{'model':db[_0x24f572[_0xa6cc('0x22')]],'as':_0x24f572['as'],'attributes':_0x24f572['attributes'],'include':_0x24f572['include']?_[_0xa6cc('0x21')](_0x24f572[_0xa6cc('0x20')],function(_0xaac62d){return{'model':db[_0xaac62d[_0xa6cc('0x22')]],'as':_0xaac62d['as'],'attributes':_0xaac62d[_0xa6cc('0x1f')],'include':_0xaac62d['include']?_[_0xa6cc('0x21')](_0xaac62d[_0xa6cc('0x20')],function(_0x291add){return{'model':db[_0x291add['model']],'as':_0x291add['as'],'attributes':_0x291add[_0xa6cc('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa6cc('0x12')](function(_0x25ae73){logger['info'](_0xa6cc('0x1b'),_0x17608f);logger[_0xa6cc('0x13')](_0xa6cc('0x1b'),_0x17608f,JSON['stringify'](_0x25ae73));_0xf983cc(_0x25ae73);})['catch'](function(_0x561884){logger[_0xa6cc('0x17')]('GetUser',_0x561884[_0xa6cc('0x19')],_0x17608f);_0x6e46f(_0x3301fb[_0xa6cc('0x17')](0x1f4,_0x561884[_0xa6cc('0x19')]));});});};exports[_0xa6cc('0x23')]=function(_0x488391){var _0x3805ce=this;return new Promise(function(_0x21d134,_0x45e750){return db[_0xa6cc('0x24')][_0xa6cc('0x25')]({'raw':_0x488391[_0xa6cc('0x1d')]?_0x488391[_0xa6cc('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x488391[_0xa6cc('0x1d')]?_0x488391[_0xa6cc('0x1d')][_0xa6cc('0x26')]||null:null,'attributes':_0x488391['options']?_0x488391[_0xa6cc('0x1d')]['attributes']||null:null,'include':_0x488391[_0xa6cc('0x1d')]?_0x488391['options'][_0xa6cc('0x20')]?_['map'](_0x488391[_0xa6cc('0x1d')][_0xa6cc('0x20')],function(_0x49cc1a){return{'model':db[_0x49cc1a[_0xa6cc('0x22')]],'as':_0x49cc1a['as'],'attributes':_0x49cc1a[_0xa6cc('0x1f')],'include':_0x49cc1a[_0xa6cc('0x20')]?_[_0xa6cc('0x21')](_0x49cc1a[_0xa6cc('0x20')],function(_0xd9288){return{'model':db[_0xd9288[_0xa6cc('0x22')]],'as':_0xd9288['as'],'attributes':_0xd9288['attributes'],'include':_0xd9288['include']?_[_0xa6cc('0x21')](_0xd9288[_0xa6cc('0x20')],function(_0x21a42a){return{'model':db[_0x21a42a[_0xa6cc('0x22')]],'as':_0x21a42a['as'],'attributes':_0x21a42a[_0xa6cc('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa6cc('0x12')](function(_0x2ad4f6){logger[_0xa6cc('0x27')]('ShowUser',_0x488391);logger[_0xa6cc('0x13')](_0xa6cc('0x23'),_0x488391,JSON[_0xa6cc('0x16')](_0x2ad4f6));_0x21d134(_0x2ad4f6);})[_0xa6cc('0x28')](function(_0x5f469d){logger[_0xa6cc('0x17')](_0xa6cc('0x23'),_0x5f469d[_0xa6cc('0x19')],_0x488391);_0x45e750(_0x3805ce[_0xa6cc('0x17')](0x1f4,_0x5f469d[_0xa6cc('0x19')]));});});};exports[_0xa6cc('0x29')]=function(_0x39ab5e){var _0x40ec4b=this;return new Promise(function(_0x1cb0a1,_0x4d06c9){var _0x1bcc9d;return db[_0xa6cc('0x24')][_0xa6cc('0x25')]({'where':_0x39ab5e[_0xa6cc('0x1d')][_0xa6cc('0x26')]||{},'attributes':['id','name','role',_0xa6cc('0x2a'),'interface']})['then'](function(_0x3d8546){if(_0x3d8546){_0x1bcc9d=_0x3d8546;return db[_0xa6cc('0x2b')][_0xa6cc('0x2c')]({'paused':0x1},{'where':{'UserId':_0x1bcc9d['id']},'individualHooks':!![]});}})[_0xa6cc('0x12')](function(){if(_0x1bcc9d){return db[_0xa6cc('0x2d')]['findAll']({'where':{'membername':_0x1bcc9d[_0xa6cc('0x2e')],'type':_0xa6cc('0x2f'),'exitAt':null}});}})[_0xa6cc('0x12')](function(_0xda6521){if(_0x1bcc9d){if(_0xda6521&&_0xda6521[_0xa6cc('0x30')]){var _0x302463=moment()[_0xa6cc('0x31')](_0xa6cc('0x32'));for(var _0x2d99f6=0x0,_0x1ca20c=_0xda6521['length'];_0x2d99f6<_0x1ca20c;_0x2d99f6++){_0xda6521[_0x2d99f6][_0xa6cc('0x33')]({'exitAt':_0x302463});}}}})['then'](function(){if(_0x1bcc9d){var _0x206fb5=[];var _0x463853=utils[_0xa6cc('0x34')]();_0x463853[_0xa6cc('0x35')](function(_0x55cf77){_0x206fb5[_0xa6cc('0x36')]({'channel':_0x55cf77,'membername':_0x1bcc9d['name'],'interface':_[_0xa6cc('0x37')](_0x1bcc9d[_0xa6cc('0x38')])?util['format'](_0xa6cc('0x39'),_0x1bcc9d[_0xa6cc('0x2e')]):_0x1bcc9d[_0xa6cc('0x38')],'type':_0xa6cc('0x2f'),'enterAt':moment()[_0xa6cc('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x39ab5e[_0xa6cc('0x3a')]['type']||_0xa6cc('0x3b'),'role':_0x1bcc9d[_0xa6cc('0x3c')],'internal':_0x1bcc9d[_0xa6cc('0x2a')],'uniqueid':_0x39ab5e['body']['uniqueid']||null});});return db['MemberReport'][_0xa6cc('0x3d')](_0x206fb5,{'individualHooks':!![]});}})[_0xa6cc('0x12')](function(){if(_0x1bcc9d){return _0x1bcc9d[_0xa6cc('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x39ab5e[_0xa6cc('0x3a')]['type']||_0xa6cc('0x3b'),'lastPauseAt':moment()[_0xa6cc('0x31')](_0xa6cc('0x32'))});}})[_0xa6cc('0x12')](function(_0x2d66ef){_0x1cb0a1(_0x2d66ef);})['catch'](function(_0x564c4a){_0x4d06c9(_0x40ec4b[_0xa6cc('0x17')](0x1f4,_0x564c4a[_0xa6cc('0x19')]));});});};exports['UnpauseUser']=function(_0x58e74f){var _0x3db1a3=this;return new Promise(function(_0xbef9ee,_0x21c201){var _0x44cfff;return db[_0xa6cc('0x24')][_0xa6cc('0x3e')]({'where':_0x58e74f['options']['where']||{},'attributes':['id',_0xa6cc('0x2e')]})[_0xa6cc('0x12')](function(_0x5a00d0){if(_0x5a00d0){_0x44cfff=_0x5a00d0;if(_0x58e74f[_0xa6cc('0x3a')][_0xa6cc('0x3f')]&&!utils['isValidChannel'](_0x58e74f[_0xa6cc('0x3a')][_0xa6cc('0x3f')])){throw new Error(_0xa6cc('0x40'));}switch(_0x58e74f['body'][_0xa6cc('0x3f')]){case _0xa6cc('0x41'):return db[_0xa6cc('0x2b')][_0xa6cc('0x2c')]({'paused':0x0},{'where':{'UserId':_0x44cfff['id']}})[_0xa6cc('0x12')](function(){return db[_0xa6cc('0x2d')]['find']({'where':{'channel':_0x58e74f['body'][_0xa6cc('0x3f')],'membername':_0x44cfff[_0xa6cc('0x2e')],'type':'PAUSE','exitAt':null}});})['then'](function(_0x5a20cc){if(_0x5a20cc){return _0x5a20cc[_0xa6cc('0x2c')]({'exitAt':moment()[_0xa6cc('0x31')](_0xa6cc('0x32')),'data2':_0xa6cc('0x42')},{'individualHooks':!![]});}return null;})[_0xa6cc('0x12')](function(){return _0x44cfff[_0xa6cc('0x2c')]({'voicePause':![]});});case _0xa6cc('0x43'):case _0xa6cc('0x44'):case _0xa6cc('0x45'):case _0xa6cc('0x46'):case _0xa6cc('0x47'):case _0xa6cc('0x48'):return db['MemberReport']['find']({'where':{'channel':_0x58e74f[_0xa6cc('0x3a')][_0xa6cc('0x3f')],'membername':_0x44cfff[_0xa6cc('0x2e')],'type':_0xa6cc('0x2f'),'exitAt':null}})[_0xa6cc('0x12')](function(_0x523bc8){return _0x523bc8[_0xa6cc('0x2c')]({'exitAt':moment()[_0xa6cc('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xa6cc('0x42')},{'individualHooks':!![]});})['then'](function(){var _0x4031c2={};_[_0xa6cc('0x49')](_0x4031c2,util[_0xa6cc('0x31')]('%s%s',_0x58e74f[_0xa6cc('0x3a')][_0xa6cc('0x3f')],_0xa6cc('0x4a')),![]);return _0x44cfff[_0xa6cc('0x2c')](_0x4031c2);});default:return db['UserVoiceQueueRt'][_0xa6cc('0x2c')]({'paused':0x0},{'where':{'UserId':_0x44cfff['id']}})[_0xa6cc('0x12')](function(){return db[_0xa6cc('0x2d')]['findAll']({'where':{'membername':_0x44cfff[_0xa6cc('0x2e')],'type':_0xa6cc('0x2f'),'exitAt':null}});})[_0xa6cc('0x12')](function(_0x48af1a){var _0xebb461=[];_0x48af1a[_0xa6cc('0x35')](function(_0x2d550d){_0xebb461['push'](_0x2d550d[_0xa6cc('0x2c')]({'exitAt':moment()[_0xa6cc('0x31')](_0xa6cc('0x32')),'data2':'system'}));});return BPromise[_0xa6cc('0x4b')](_0xebb461);})[_0xa6cc('0x12')](function(){return _0x44cfff[_0xa6cc('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xa6cc('0x12')](function(_0x4edec6){_0xbef9ee(_0x4edec6);})[_0xa6cc('0x28')](function(_0x26cde5){_0x21c201(_0x3db1a3[_0xa6cc('0x17')](0x1f4,_0x26cde5[_0xa6cc('0x19')]));});});};exports[_0xa6cc('0x4c')]=function(_0x5670e9){var _0x5f4fad=this;return new Promise(function(_0x2ae592,_0x28fab9){var _0x25ddc4;return db[_0xa6cc('0x24')][_0xa6cc('0x3e')]({'where':_0x5670e9[_0xa6cc('0x1d')][_0xa6cc('0x26')]||{},'attributes':['id',_0xa6cc('0x2e')]})[_0xa6cc('0x12')](function(_0x372260){if(_0x372260){_0x25ddc4=_0x372260;return db[_0xa6cc('0x2b')][_0xa6cc('0x4d')]({'where':{'membername':_0x25ddc4[_0xa6cc('0x2e')]},'individualHooks':!![]});}})[_0xa6cc('0x12')](function(){if(_0x25ddc4){return db[_0xa6cc('0x2d')]['findAll']({'where':{'membername':_0x25ddc4[_0xa6cc('0x2e')],'exitAt':null}});}})[_0xa6cc('0x12')](function(_0x21cb72){if(_0x25ddc4){if(_0x21cb72&&_0x21cb72[_0xa6cc('0x30')]){var _0x68e4df=[];_0x21cb72[_0xa6cc('0x35')](function(_0x424fea){_0x68e4df[_0xa6cc('0x36')](_0x424fea['update']({'exitAt':moment()[_0xa6cc('0x31')](_0xa6cc('0x32'))}));});return BPromise[_0xa6cc('0x4b')](_0x68e4df);}}})[_0xa6cc('0x12')](function(){if(_0x25ddc4){return _0x25ddc4[_0xa6cc('0x2c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xa6cc('0x12')](function(_0x5d8691){_0x2ae592(_0x5d8691);})[_0xa6cc('0x28')](function(_0x3c74c5){_0x28fab9(_0x5f4fad['error'](0x1f4,_0x3c74c5[_0xa6cc('0x19')]));});});};exports['LoginUser']=function(_0x8773e6){var _0x3f9310=this;return new Promise(function(_0x3d28e7,_0xe48255){var _0x47e9af;var _0x3d88e3;var _0x5b73e2;var _0x135dd0;return db[_0xa6cc('0x24')]['findOne']({'where':_0x8773e6[_0xa6cc('0x1d')][_0xa6cc('0x26')]||{},'attributes':['id','name',_0xa6cc('0x3c'),_0xa6cc('0x4e'),_0xa6cc('0x4f'),_0xa6cc('0x2a'),'loginInPause',_0xa6cc('0x38')]})[_0xa6cc('0x12')](function(_0x1a7bd4){if(_0x1a7bd4){_0x47e9af=_0x1a7bd4;_0x135dd0=_0x8773e6[_0xa6cc('0x3a')][_0xa6cc('0x38')]?_0x8773e6[_0xa6cc('0x3a')][_0xa6cc('0x38')]:util[_0xa6cc('0x31')](_0xa6cc('0x39'),_0x47e9af[_0xa6cc('0x2e')]);return db[_0xa6cc('0x24')]['count']({'where':{'role':_0xa6cc('0x50'),'online':!![],'id':{'$ne':_0x47e9af['id']}}});}})[_0xa6cc('0x12')](function(_0x15e60f){if(_0x15e60f){_0x5b73e2=_0x15e60f;return require(_0xa6cc('0x51'))['getLicense']();}})[_0xa6cc('0x12')](function(_0x253faf){if(_0x253faf&&_0x253faf[_0xa6cc('0x52')]&&_0x5b73e2>=_0x253faf[_0xa6cc('0x52')]){throw new Error(_0xa6cc('0x53'));}})['then'](function(){if(_0x47e9af){return db[_0xa6cc('0x2b')][_0xa6cc('0x4d')]({'where':{'membername':_0x47e9af[_0xa6cc('0x2e')]},'individualHooks':!![]});}})['then'](function(){if(_0x47e9af){return _0x47e9af[_0xa6cc('0x54')]({'raw':!![]});}})['then'](function(_0x57cdcf){if(_0x47e9af){if(_0x57cdcf){var _0x1af614=[];_0x3d88e3=_0x57cdcf;if(_0x3d88e3[_0xa6cc('0x30')]){for(var _0x292f1b=0x0;_0x292f1b<_0x3d88e3['length'];_0x292f1b++){_0x1af614[_0xa6cc('0x36')](db[_0xa6cc('0x2b')][_0xa6cc('0x55')]({'membername':_0x47e9af[_0xa6cc('0x2e')],'UserId':_0x47e9af['id'],'queue_name':_0x3d88e3[_0x292f1b][_0xa6cc('0x2e')],'VoiceQueueId':_0x3d88e3[_0x292f1b]['id'],'interface':_0x135dd0,'paused':_0x47e9af[_0xa6cc('0x56')]||![],'penalty':_0x3d88e3[_0x292f1b][_0xa6cc('0x57')]||0x0}));}return BPromise[_0xa6cc('0x4b')](_0x1af614);}}}})[_0xa6cc('0x12')](function(){if(_0x47e9af){return db[_0xa6cc('0x2d')][_0xa6cc('0x1c')]({'where':{'membername':_0x47e9af[_0xa6cc('0x2e')],'exitAt':null}});}})['then'](function(_0x17c678){if(_0x47e9af){if(_0x17c678&&_0x17c678[_0xa6cc('0x30')]){var _0x407e88=[];_0x17c678[_0xa6cc('0x35')](function(_0x7fb31e){_0x407e88[_0xa6cc('0x36')](_0x7fb31e[_0xa6cc('0x2c')]({'exitAt':moment()['format'](_0xa6cc('0x32'))}));});return BPromise[_0xa6cc('0x4b')](_0x407e88);}}})[_0xa6cc('0x12')](function(_0x459cd9){if(_0x47e9af){var _0x4d98be=[];var _0x5e63e=[];var _0x24aad7=utils[_0xa6cc('0x34')]();var _0x3a0e33={'membername':_0x47e9af[_0xa6cc('0x2e')],'interface':_0x135dd0,'enterAt':moment()['format'](_0xa6cc('0x32')),'role':_0x47e9af['role'],'internal':_0x47e9af['internal']};_0x24aad7[_0xa6cc('0x35')](function(_0x15958f){_0x4d98be[_0xa6cc('0x36')](_[_0xa6cc('0x58')]({'channel':_0x15958f,'type':_0xa6cc('0x59'),'data1':_0xa6cc('0x5a'),'data2':_0x135dd0},_0x3a0e33));if(_0x47e9af[_0xa6cc('0x56')]){_0x5e63e[_0xa6cc('0x36')](_['merge']({'channel':_0x15958f,'type':'PAUSE','data1':'LOGININPAUSE'},_0x3a0e33));}});return db[_0xa6cc('0x2d')][_0xa6cc('0x3d')](_0x4d98be['concat'](_0x5e63e),{'individualHooks':!![]});}})['then'](function(){if(_0x47e9af){return _0x47e9af['update']({'online':!![],'lastLoginAt':moment()[_0xa6cc('0x31')](_0xa6cc('0x32')),'voicePause':_0x47e9af[_0xa6cc('0x56')]||![],'mailPause':_0x47e9af[_0xa6cc('0x56')]||![],'chatPause':_0x47e9af['loginInPause']||![],'faxPause':_0x47e9af[_0xa6cc('0x56')]||![],'smsPause':_0x47e9af[_0xa6cc('0x56')]||![],'openchannelPause':_0x47e9af[_0xa6cc('0x56')]||![],'pauseType':_0x47e9af[_0xa6cc('0x56')]?_0xa6cc('0x5b'):null,'lastPauseAt':moment()['format'](_0xa6cc('0x32')),'interface':_0x135dd0});}})[_0xa6cc('0x12')](function(_0xa1eac){_0x3d28e7(_0xa1eac);})[_0xa6cc('0x28')](function(_0x4b25a5){_0xe48255(_0x3f9310[_0xa6cc('0x17')](0x1f4,_0x4b25a5['message']));});});};
\ No newline at end of file
+var _0xc226=['GetUser','findAll','options','raw','where','attributes','include','map','model','ShowUser','User','find','stringify','catch','PauseUser','name','role','internal','PAUSE','length','format','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','MemberReport','update','findOne','channel','Unknown\x20channel','UserVoiceQueueRt','system','mail','fax','sms','whatsapp','all','LogoutUser','destroy','LoginUser','mobile','loginInPause','interface','agent','getLicense','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','bulkCreate','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','./user.socket','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x113588,_0x1a0ce8){var _0x14daa8=function(_0x297f79){while(--_0x297f79){_0x113588['push'](_0x113588['shift']());}};_0x14daa8(++_0x1a0ce8);}(_0xc226,0x19a));var _0x6c22=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xc226[_0x5c3c0b];return _0x52ecd2;};'use strict';var _=require(_0x6c22('0x0'));var util=require(_0x6c22('0x1'));var moment=require(_0x6c22('0x2'));var BPromise=require(_0x6c22('0x3'));var rs=require(_0x6c22('0x4'));var fs=require('fs');var Redis=require(_0x6c22('0x5'));var db=require(_0x6c22('0x6'))['db'];var utils=require(_0x6c22('0x7'));var logger=require(_0x6c22('0x8'))(_0x6c22('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6c22('0xa')]['http']({'port':0x232a});config[_0x6c22('0xb')]=_[_0x6c22('0xc')](config[_0x6c22('0xb')],{'host':_0x6c22('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6c22('0xb')]));require(_0x6c22('0xe'))['register'](socket);function respondWithRpcPromise(_0x3e612e,_0x27ddb1,_0x53fd93){return new BPromise(function(_0x70d059,_0x474016){return client[_0x6c22('0xf')](_0x3e612e,_0x53fd93)[_0x6c22('0x10')](function(_0x11b7f0){logger[_0x6c22('0x11')](_0x6c22('0x12'),_0x27ddb1,_0x6c22('0x13'));logger[_0x6c22('0x14')](_0x6c22('0x15'),_0x27ddb1,_0x6c22('0x13'),JSON['stringify'](_0x11b7f0));if(_0x11b7f0['error']){if(_0x11b7f0[_0x6c22('0x16')]['code']===0x1f4){logger['error'](_0x6c22('0x12'),_0x27ddb1,_0x11b7f0[_0x6c22('0x16')]['message']);return _0x474016(_0x11b7f0[_0x6c22('0x16')][_0x6c22('0x17')]);}logger['error'](_0x6c22('0x12'),_0x27ddb1,_0x11b7f0['error'][_0x6c22('0x17')]);return _0x70d059(_0x11b7f0[_0x6c22('0x16')]['message']);}else{logger['info']('User,\x20%s,\x20%s',_0x27ddb1,_0x6c22('0x13'));_0x70d059(_0x11b7f0[_0x6c22('0x18')][_0x6c22('0x17')]);}})['catch'](function(_0x4b1480){logger['error'](_0x6c22('0x12'),_0x27ddb1,_0x4b1480);_0x474016(_0x4b1480);});});}exports[_0x6c22('0x19')]=function(_0x47524f){var _0x1e03eb=this;return new Promise(function(_0xaf0f2f,_0x351f01){return db['User'][_0x6c22('0x1a')]({'raw':_0x47524f[_0x6c22('0x1b')]?_0x47524f[_0x6c22('0x1b')][_0x6c22('0x1c')]===undefined?!![]:![]:!![],'where':_0x47524f[_0x6c22('0x1b')]?_0x47524f[_0x6c22('0x1b')][_0x6c22('0x1d')]||null:null,'attributes':_0x47524f[_0x6c22('0x1b')]?_0x47524f[_0x6c22('0x1b')][_0x6c22('0x1e')]||null:null,'limit':_0x47524f[_0x6c22('0x1b')]?_0x47524f[_0x6c22('0x1b')]['limit']||null:null,'include':_0x47524f['options']?_0x47524f['options'][_0x6c22('0x1f')]?_[_0x6c22('0x20')](_0x47524f['options'][_0x6c22('0x1f')],function(_0x4f36f7){return{'model':db[_0x4f36f7['model']],'as':_0x4f36f7['as'],'attributes':_0x4f36f7[_0x6c22('0x1e')],'include':_0x4f36f7['include']?_['map'](_0x4f36f7[_0x6c22('0x1f')],function(_0x2f2a78){return{'model':db[_0x2f2a78[_0x6c22('0x21')]],'as':_0x2f2a78['as'],'attributes':_0x2f2a78[_0x6c22('0x1e')],'include':_0x2f2a78[_0x6c22('0x1f')]?_[_0x6c22('0x20')](_0x2f2a78[_0x6c22('0x1f')],function(_0x5c4b3e){return{'model':db[_0x5c4b3e[_0x6c22('0x21')]],'as':_0x5c4b3e['as'],'attributes':_0x5c4b3e[_0x6c22('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6c22('0x10')](function(_0x42a4ed){logger[_0x6c22('0x11')](_0x6c22('0x19'),_0x47524f);logger[_0x6c22('0x14')]('GetUser',_0x47524f,JSON['stringify'](_0x42a4ed));_0xaf0f2f(_0x42a4ed);})['catch'](function(_0x354cc2){logger[_0x6c22('0x16')](_0x6c22('0x19'),_0x354cc2['message'],_0x47524f);_0x351f01(_0x1e03eb[_0x6c22('0x16')](0x1f4,_0x354cc2[_0x6c22('0x17')]));});});};exports[_0x6c22('0x22')]=function(_0x4fd593){var _0x3150a2=this;return new Promise(function(_0x5baf55,_0x116b47){return db[_0x6c22('0x23')][_0x6c22('0x24')]({'raw':_0x4fd593[_0x6c22('0x1b')]?_0x4fd593[_0x6c22('0x1b')][_0x6c22('0x1c')]===undefined?!![]:![]:!![],'where':_0x4fd593[_0x6c22('0x1b')]?_0x4fd593[_0x6c22('0x1b')]['where']||null:null,'attributes':_0x4fd593['options']?_0x4fd593['options'][_0x6c22('0x1e')]||null:null,'include':_0x4fd593['options']?_0x4fd593[_0x6c22('0x1b')]['include']?_['map'](_0x4fd593['options']['include'],function(_0x236094){return{'model':db[_0x236094[_0x6c22('0x21')]],'as':_0x236094['as'],'attributes':_0x236094[_0x6c22('0x1e')],'include':_0x236094[_0x6c22('0x1f')]?_[_0x6c22('0x20')](_0x236094[_0x6c22('0x1f')],function(_0x590d51){return{'model':db[_0x590d51[_0x6c22('0x21')]],'as':_0x590d51['as'],'attributes':_0x590d51['attributes'],'include':_0x590d51[_0x6c22('0x1f')]?_[_0x6c22('0x20')](_0x590d51['include'],function(_0x39616a){return{'model':db[_0x39616a['model']],'as':_0x39616a['as'],'attributes':_0x39616a[_0x6c22('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6c22('0x10')](function(_0x5c69c9){logger[_0x6c22('0x11')](_0x6c22('0x22'),_0x4fd593);logger[_0x6c22('0x14')](_0x6c22('0x22'),_0x4fd593,JSON[_0x6c22('0x25')](_0x5c69c9));_0x5baf55(_0x5c69c9);})[_0x6c22('0x26')](function(_0xaa648d){logger[_0x6c22('0x16')](_0x6c22('0x22'),_0xaa648d[_0x6c22('0x17')],_0x4fd593);_0x116b47(_0x3150a2[_0x6c22('0x16')](0x1f4,_0xaa648d[_0x6c22('0x17')]));});});};exports[_0x6c22('0x27')]=function(_0x1d59ad){var _0x42e0fb=this;return new Promise(function(_0x45785b,_0x168b0b){var _0x57192e;return db['User'][_0x6c22('0x24')]({'where':_0x1d59ad[_0x6c22('0x1b')][_0x6c22('0x1d')]||{},'attributes':['id',_0x6c22('0x28'),_0x6c22('0x29'),_0x6c22('0x2a'),'interface']})[_0x6c22('0x10')](function(_0x469344){if(_0x469344){_0x57192e=_0x469344;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x57192e['id']},'individualHooks':!![]});}})[_0x6c22('0x10')](function(){if(_0x57192e){return db['MemberReport'][_0x6c22('0x1a')]({'where':{'membername':_0x57192e[_0x6c22('0x28')],'type':_0x6c22('0x2b'),'exitAt':null}});}})['then'](function(_0x178a50){if(_0x57192e){if(_0x178a50&&_0x178a50[_0x6c22('0x2c')]){var _0x126115=moment()[_0x6c22('0x2d')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x2d0bc3=0x0,_0x5d131f=_0x178a50[_0x6c22('0x2c')];_0x2d0bc3<_0x5d131f;_0x2d0bc3++){_0x178a50[_0x2d0bc3][_0x6c22('0x2e')]({'exitAt':_0x126115});}}}})[_0x6c22('0x10')](function(){if(_0x57192e){var _0x5bae9b=[];var _0x3b7839=utils[_0x6c22('0x2f')]();_0x3b7839[_0x6c22('0x30')](function(_0x173f61){_0x5bae9b[_0x6c22('0x31')]({'channel':_0x173f61,'membername':_0x57192e[_0x6c22('0x28')],'interface':_[_0x6c22('0x32')](_0x57192e['interface'])?util['format'](_0x6c22('0x33'),_0x57192e[_0x6c22('0x28')]):_0x57192e['interface'],'type':_0x6c22('0x2b'),'enterAt':moment()['format'](_0x6c22('0x34')),'data1':_0x1d59ad[_0x6c22('0x35')][_0x6c22('0x36')]||_0x6c22('0x37'),'role':_0x57192e[_0x6c22('0x29')],'internal':_0x57192e['internal'],'uniqueid':_0x1d59ad[_0x6c22('0x35')][_0x6c22('0x38')]||null});});return db[_0x6c22('0x39')]['bulkCreate'](_0x5bae9b,{'individualHooks':!![]});}})[_0x6c22('0x10')](function(){if(_0x57192e){return _0x57192e[_0x6c22('0x3a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1d59ad[_0x6c22('0x35')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x6c22('0x2d')](_0x6c22('0x34'))});}})[_0x6c22('0x10')](function(_0x4558c5){_0x45785b(_0x4558c5);})[_0x6c22('0x26')](function(_0xdcef15){_0x168b0b(_0x42e0fb[_0x6c22('0x16')](0x1f4,_0xdcef15[_0x6c22('0x17')]));});});};exports['UnpauseUser']=function(_0x447fcc){var _0x3d012d=this;return new Promise(function(_0x44c9b1,_0x450692){var _0x7291cb;return db[_0x6c22('0x23')][_0x6c22('0x3b')]({'where':_0x447fcc[_0x6c22('0x1b')][_0x6c22('0x1d')]||{},'attributes':['id',_0x6c22('0x28')]})['then'](function(_0x2fe5dc){if(_0x2fe5dc){_0x7291cb=_0x2fe5dc;if(_0x447fcc['body'][_0x6c22('0x3c')]&&!utils['isValidChannel'](_0x447fcc[_0x6c22('0x35')][_0x6c22('0x3c')])){throw new Error(_0x6c22('0x3d'));}switch(_0x447fcc[_0x6c22('0x35')][_0x6c22('0x3c')]){case'voice':return db[_0x6c22('0x3e')]['update']({'paused':0x0},{'where':{'UserId':_0x7291cb['id']}})[_0x6c22('0x10')](function(){return db[_0x6c22('0x39')]['find']({'where':{'channel':_0x447fcc[_0x6c22('0x35')]['channel'],'membername':_0x7291cb[_0x6c22('0x28')],'type':_0x6c22('0x2b'),'exitAt':null}});})[_0x6c22('0x10')](function(_0x1551c4){if(_0x1551c4){return _0x1551c4[_0x6c22('0x3a')]({'exitAt':moment()[_0x6c22('0x2d')](_0x6c22('0x34')),'data2':_0x6c22('0x3f')},{'individualHooks':!![]});}return null;})[_0x6c22('0x10')](function(){return _0x7291cb[_0x6c22('0x3a')]({'voicePause':![]});});case _0x6c22('0x40'):case'chat':case _0x6c22('0x41'):case _0x6c22('0x42'):case'openchannel':case _0x6c22('0x43'):return db[_0x6c22('0x39')][_0x6c22('0x24')]({'where':{'channel':_0x447fcc[_0x6c22('0x35')][_0x6c22('0x3c')],'membername':_0x7291cb['name'],'type':_0x6c22('0x2b'),'exitAt':null}})[_0x6c22('0x10')](function(_0x1287fb){return _0x1287fb[_0x6c22('0x3a')]({'exitAt':moment()[_0x6c22('0x2d')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});})[_0x6c22('0x10')](function(){var _0x46466b={};_['set'](_0x46466b,util[_0x6c22('0x2d')]('%s%s',_0x447fcc[_0x6c22('0x35')][_0x6c22('0x3c')],'Pause'),![]);return _0x7291cb[_0x6c22('0x3a')](_0x46466b);});default:return db[_0x6c22('0x3e')]['update']({'paused':0x0},{'where':{'UserId':_0x7291cb['id']}})[_0x6c22('0x10')](function(){return db['MemberReport'][_0x6c22('0x1a')]({'where':{'membername':_0x7291cb[_0x6c22('0x28')],'type':_0x6c22('0x2b'),'exitAt':null}});})['then'](function(_0x11c5a5){var _0x50dc84=[];_0x11c5a5[_0x6c22('0x30')](function(_0x144de4){_0x50dc84[_0x6c22('0x31')](_0x144de4[_0x6c22('0x3a')]({'exitAt':moment()[_0x6c22('0x2d')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x6c22('0x3f')}));});return BPromise[_0x6c22('0x44')](_0x50dc84);})['then'](function(){return _0x7291cb[_0x6c22('0x3a')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x6c22('0x10')](function(_0x1f8474){_0x44c9b1(_0x1f8474);})[_0x6c22('0x26')](function(_0x4aa896){_0x450692(_0x3d012d['error'](0x1f4,_0x4aa896[_0x6c22('0x17')]));});});};exports[_0x6c22('0x45')]=function(_0x1f4ff8){var _0x3fd321=this;return new Promise(function(_0x1e840f,_0x1df763){var _0x31c6da;return db[_0x6c22('0x23')][_0x6c22('0x3b')]({'where':_0x1f4ff8[_0x6c22('0x1b')][_0x6c22('0x1d')]||{},'attributes':['id',_0x6c22('0x28')]})[_0x6c22('0x10')](function(_0x229ff9){if(_0x229ff9){_0x31c6da=_0x229ff9;return db[_0x6c22('0x3e')][_0x6c22('0x46')]({'where':{'membername':_0x31c6da[_0x6c22('0x28')]},'individualHooks':!![]});}})[_0x6c22('0x10')](function(){if(_0x31c6da){return db[_0x6c22('0x39')][_0x6c22('0x1a')]({'where':{'membername':_0x31c6da[_0x6c22('0x28')],'exitAt':null}});}})['then'](function(_0x39d4e8){if(_0x31c6da){if(_0x39d4e8&&_0x39d4e8[_0x6c22('0x2c')]){var _0x78c096=[];_0x39d4e8[_0x6c22('0x30')](function(_0x16b444){_0x78c096[_0x6c22('0x31')](_0x16b444[_0x6c22('0x3a')]({'exitAt':moment()[_0x6c22('0x2d')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x6c22('0x44')](_0x78c096);}}})[_0x6c22('0x10')](function(){if(_0x31c6da){return _0x31c6da[_0x6c22('0x3a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x6c22('0x10')](function(_0x3a55ce){_0x1e840f(_0x3a55ce);})[_0x6c22('0x26')](function(_0x5bd5bb){_0x1df763(_0x3fd321[_0x6c22('0x16')](0x1f4,_0x5bd5bb[_0x6c22('0x17')]));});});};exports[_0x6c22('0x47')]=function(_0x29e029){var _0x577e8c=this;return new Promise(function(_0x1934b5,_0x563cfd){var _0x17ab23;var _0x5afc94;var _0x34908d;var _0xacd043;return db[_0x6c22('0x23')][_0x6c22('0x3b')]({'where':_0x29e029[_0x6c22('0x1b')][_0x6c22('0x1d')]||{},'attributes':['id','name','role',_0x6c22('0x48'),'phone','internal',_0x6c22('0x49'),_0x6c22('0x4a')]})[_0x6c22('0x10')](function(_0x9bd6ba){if(_0x9bd6ba){_0x17ab23=_0x9bd6ba;_0xacd043=_0x29e029[_0x6c22('0x35')]['interface']?_0x29e029[_0x6c22('0x35')][_0x6c22('0x4a')]:util['format'](_0x6c22('0x33'),_0x17ab23['name']);return db[_0x6c22('0x23')]['count']({'where':{'role':_0x6c22('0x4b'),'online':!![],'id':{'$ne':_0x17ab23['id']}}});}})['then'](function(_0x507789){if(_0x507789){_0x34908d=_0x507789;return require('../../config/license/util')[_0x6c22('0x4c')]();}})['then'](function(_0x171385){if(_0x171385&&_0x171385['agents']&&_0x34908d>=_0x171385['agents']){throw new Error(_0x6c22('0x4d'));}})['then'](function(){if(_0x17ab23){return db['UserVoiceQueueRt'][_0x6c22('0x46')]({'where':{'membername':_0x17ab23['name']},'individualHooks':!![]});}})[_0x6c22('0x10')](function(){if(_0x17ab23){return _0x17ab23[_0x6c22('0x4e')]({'raw':!![]});}})[_0x6c22('0x10')](function(_0x6101f4){if(_0x17ab23){if(_0x6101f4){var _0x17d37c=[];_0x5afc94=_0x6101f4;if(_0x5afc94[_0x6c22('0x2c')]){for(var _0x1a8f33=0x0;_0x1a8f33<_0x5afc94['length'];_0x1a8f33++){_0x17d37c[_0x6c22('0x31')](db[_0x6c22('0x3e')][_0x6c22('0x4f')]({'membername':_0x17ab23[_0x6c22('0x28')],'UserId':_0x17ab23['id'],'queue_name':_0x5afc94[_0x1a8f33]['name'],'VoiceQueueId':_0x5afc94[_0x1a8f33]['id'],'interface':_0xacd043,'paused':_0x17ab23['loginInPause']||![],'penalty':_0x5afc94[_0x1a8f33][_0x6c22('0x50')]||0x0}));}return BPromise[_0x6c22('0x44')](_0x17d37c);}}}})[_0x6c22('0x10')](function(){if(_0x17ab23){return db[_0x6c22('0x39')][_0x6c22('0x1a')]({'where':{'membername':_0x17ab23[_0x6c22('0x28')],'exitAt':null}});}})['then'](function(_0x1884a4){if(_0x17ab23){if(_0x1884a4&&_0x1884a4['length']){var _0x18b8d6=[];_0x1884a4[_0x6c22('0x30')](function(_0x4bdb76){_0x18b8d6[_0x6c22('0x31')](_0x4bdb76['update']({'exitAt':moment()[_0x6c22('0x2d')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x6c22('0x44')](_0x18b8d6);}}})[_0x6c22('0x10')](function(_0x921440){if(_0x17ab23){var _0x7e1e84=[];var _0x441b6a=[];var _0x3f39aa=utils[_0x6c22('0x2f')]();var _0x2b17f3={'membername':_0x17ab23[_0x6c22('0x28')],'interface':_0xacd043,'enterAt':moment()[_0x6c22('0x2d')](_0x6c22('0x34')),'role':_0x17ab23[_0x6c22('0x29')],'internal':_0x17ab23[_0x6c22('0x2a')]};_0x3f39aa[_0x6c22('0x30')](function(_0x3745aa){_0x7e1e84[_0x6c22('0x31')](_[_0x6c22('0x51')]({'channel':_0x3745aa,'type':_0x6c22('0x52'),'data1':_0x6c22('0x53'),'data2':_0xacd043},_0x2b17f3));if(_0x17ab23[_0x6c22('0x49')]){_0x441b6a[_0x6c22('0x31')](_['merge']({'channel':_0x3745aa,'type':_0x6c22('0x2b'),'data1':_0x6c22('0x54')},_0x2b17f3));}});return db[_0x6c22('0x39')][_0x6c22('0x55')](_0x7e1e84[_0x6c22('0x56')](_0x441b6a),{'individualHooks':!![]});}})[_0x6c22('0x10')](function(){if(_0x17ab23){return _0x17ab23[_0x6c22('0x3a')]({'online':!![],'lastLoginAt':moment()[_0x6c22('0x2d')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x17ab23[_0x6c22('0x49')]||![],'mailPause':_0x17ab23['loginInPause']||![],'chatPause':_0x17ab23['loginInPause']||![],'faxPause':_0x17ab23['loginInPause']||![],'smsPause':_0x17ab23[_0x6c22('0x49')]||![],'openchannelPause':_0x17ab23['loginInPause']||![],'pauseType':_0x17ab23[_0x6c22('0x49')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x6c22('0x2d')](_0x6c22('0x34')),'interface':_0xacd043});}})[_0x6c22('0x10')](function(_0x3e8dcc){_0x1934b5(_0x3e8dcc);})['catch'](function(_0x4a1cdc){_0x563cfd(_0x577e8c[_0x6c22('0x16')](0x1f4,_0x4a1cdc[_0x6c22('0x17')]));});});};
\ No newline at end of file
index b4a4569..4b51224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6325=['emit','removeListener','length','user:','./user.events','save','remove'];(function(_0x2aa4c9,_0x20b151){var _0x310e1f=function(_0x571b7a){while(--_0x571b7a){_0x2aa4c9['push'](_0x2aa4c9['shift']());}};_0x310e1f(++_0x20b151);}(_0x6325,0x82));var _0x5632=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6325[_0x3bf83f];return _0x22c4a9;};'use strict';var UserEvents=require(_0x5632('0x0'));var events=[_0x5632('0x1'),_0x5632('0x2'),'update'];function createListener(_0x5bd9ed,_0x2efba8){return function(_0x4f3a7b){_0x2efba8[_0x5632('0x3')](_0x5bd9ed,_0x4f3a7b);};}function removeListener(_0x2f7813,_0x233ce9){return function(){UserEvents[_0x5632('0x4')](_0x2f7813,_0x233ce9);};}exports['register']=function(_0x5c957a){for(var _0x248fe9=0x0,_0x16dc7f=events[_0x5632('0x5')];_0x248fe9<_0x16dc7f;_0x248fe9++){var _0x1c69bc=events[_0x248fe9];var _0x1388a8=createListener(_0x5632('0x6')+_0x1c69bc,_0x5c957a);UserEvents['on'](_0x1c69bc,_0x1388a8);}};
\ No newline at end of file
+var _0x58f4=['save','emit','removeListener','user:','./user.events'];(function(_0x33b81a,_0x2e1605){var _0x176e35=function(_0x51d81d){while(--_0x51d81d){_0x33b81a['push'](_0x33b81a['shift']());}};_0x176e35(++_0x2e1605);}(_0x58f4,0x1df));var _0x458f=function(_0x276fdd,_0x195f5d){_0x276fdd=_0x276fdd-0x0;var _0x43d607=_0x58f4[_0x276fdd];return _0x43d607;};'use strict';var UserEvents=require(_0x458f('0x0'));var events=[_0x458f('0x1'),'remove','update'];function createListener(_0x238444,_0x585c55){return function(_0x597752){_0x585c55[_0x458f('0x2')](_0x238444,_0x597752);};}function removeListener(_0x33d60d,_0x4fffcb){return function(){UserEvents[_0x458f('0x3')](_0x33d60d,_0x4fffcb);};}exports['register']=function(_0x3f44a1){for(var _0x4cf3ef=0x0,_0x378bc9=events['length'];_0x4cf3ef<_0x378bc9;_0x4cf3ef++){var _0x76ef0=events[_0x4cf3ef];var _0xb2e9de=createListener(_0x458f('0x4')+_0x76ef0,_0x3f44a1);UserEvents['on'](_0x76ef0,_0xb2e9de);}};
\ No newline at end of file
index 25b4f1e..9938e34 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(_0x1345af,_0x21e12d){var _0x56f530=function(_0x3826e8){while(--_0x3826e8){_0x1345af['push'](_0x1345af['shift']());}};_0x56f530(++_0x21e12d);}(_0xedd9,0xfc));var _0x9edd=function(_0x1730d9,_0x24b3d1){_0x1730d9=_0x1730d9-0x0;var _0x51a83f=_0xedd9[_0x1730d9];return _0x51a83f;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x2eca19,_0x384412){var _0x19a818=function(_0x30da2e){while(--_0x30da2e){_0x2eca19['push'](_0x2eca19['shift']());}};_0x19a818(++_0x384412);}(_0xedd9,0xfc));var _0x9edd=function(_0x1869fa,_0x2c75dc){_0x1869fa=_0x1869fa-0x0;var _0x619360=_0xedd9[_0x1869fa];return _0x619360;};'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
index 13b1c64..135a668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39b4=['INTEGER','sequelize','exports'];(function(_0x8d2218,_0x24eb5e){var _0x1ef5d1=function(_0x4ed05b){while(--_0x4ed05b){_0x8d2218['push'](_0x8d2218['shift']());}};_0x1ef5d1(++_0x24eb5e);}(_0x39b4,0xd3));var _0x439b=function(_0xa589a7,_0x2dfd0a){_0xa589a7=_0xa589a7-0x0;var _0x3f3dbc=_0x39b4[_0xa589a7];return _0x3f3dbc;};'use strict';var Sequelize=require(_0x439b('0x0'));module[_0x439b('0x1')]={'penalty':{'type':Sequelize[_0x439b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xec93=['sequelize','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xec93,0x138));var _0x3ec9=function(_0x4c672b,_0x693f){_0x4c672b=_0x4c672b-0x0;var _0x3c4d63=_0xec93[_0x4c672b];return _0x3c4d63;};'use strict';var Sequelize=require(_0x3ec9('0x0'));module[_0x3ec9('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9ed2e04..35d1e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7734=['lodash','util','moment','request-promise','path','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x7734,0x120));var _0x4773=function(_0x1f3a9c,_0x4d36d8){_0x1f3a9c=_0x1f3a9c-0x0;var _0x1aa8cd=_0x7734[_0x1f3a9c];return _0x1aa8cd;};'use strict';var _=require(_0x4773('0x0'));var util=require(_0x4773('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4773('0x2'));var BPromise=require('bluebird');var rp=require(_0x4773('0x3'));var fs=require('fs');var path=require(_0x4773('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4773('0x5'));module[_0x4773('0x6')]=function(_0x156bc7,_0x1505e4){return _0x156bc7['define'](_0x4773('0x7'),attributes,{'tableName':_0x4773('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c0a=['../../config/environment','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xb3f6a4,_0x4248af){var _0x3773f3=function(_0xb42203){while(--_0xb42203){_0xb3f6a4['push'](_0xb3f6a4['shift']());}};_0x3773f3(++_0x4248af);}(_0x4c0a,0x1d9));var _0xa4c0=function(_0x2c4ab4,_0x2d9c34){_0x2c4ab4=_0x2c4ab4-0x0;var _0x284663=_0x4c0a[_0x2c4ab4];return _0x284663;};'use strict';var _=require(_0xa4c0('0x0'));var util=require(_0xa4c0('0x1'));var logger=require(_0xa4c0('0x2'))(_0xa4c0('0x3'));var moment=require(_0xa4c0('0x4'));var BPromise=require(_0xa4c0('0x5'));var rp=require(_0xa4c0('0x6'));var fs=require('fs');var path=require(_0xa4c0('0x7'));var rimraf=require('rimraf');var config=require(_0xa4c0('0x8'));var attributes=require('./userChatQueue.attributes');module[_0xa4c0('0x9')]=function(_0x57eab7,_0x39249d){return _0x57eab7[_0xa4c0('0xa')](_0xa4c0('0xb'),attributes,{'tableName':_0xa4c0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf19218..7e24b8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5031=['error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','UserChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x5031,0xa0));var _0x1503=function(_0x9c9e0a,_0x330714){_0x9c9e0a=_0x9c9e0a-0x0;var _0x475ae9=_0x5031[_0x9c9e0a];return _0x475ae9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1503('0x0'));var BPromise=require(_0x1503('0x1'));var rs=require(_0x1503('0x2'));var fs=require('fs');var Redis=require(_0x1503('0x3'));var db=require(_0x1503('0x4'))['db'];var utils=require(_0x1503('0x5'));var logger=require(_0x1503('0x6'))(_0x1503('0x7'));var config=require(_0x1503('0x8'));var jayson=require(_0x1503('0x9'));var client=jayson['client'][_0x1503('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x318c33,_0x55b2cd,_0x494b90){return new BPromise(function(_0x45e5b8,_0x30eebf){return client['request'](_0x318c33,_0x494b90)[_0x1503('0xb')](function(_0x30b80d){logger[_0x1503('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x55b2cd,'request\x20sent');logger['debug'](_0x1503('0xd'),_0x55b2cd,_0x1503('0xe'),JSON[_0x1503('0xf')](_0x30b80d));if(_0x30b80d[_0x1503('0x10')]){if(_0x30b80d[_0x1503('0x10')][_0x1503('0x11')]===0x1f4){logger['error'](_0x1503('0x12'),_0x55b2cd,_0x30b80d[_0x1503('0x10')][_0x1503('0x13')]);return _0x30eebf(_0x30b80d[_0x1503('0x10')]['message']);}logger[_0x1503('0x10')](_0x1503('0x12'),_0x55b2cd,_0x30b80d[_0x1503('0x10')]['message']);return _0x45e5b8(_0x30b80d[_0x1503('0x10')][_0x1503('0x13')]);}else{logger[_0x1503('0xc')](_0x1503('0x12'),_0x55b2cd,_0x1503('0xe'));_0x45e5b8(_0x30b80d[_0x1503('0x14')][_0x1503('0x13')]);}})[_0x1503('0x15')](function(_0x57114f){logger[_0x1503('0x10')]('UserChatQueue,\x20%s,\x20%s',_0x55b2cd,_0x57114f);_0x30eebf(_0x57114f);});});}
\ No newline at end of file
+var _0x1c0b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','error','message','catch','util','moment','bluebird'];(function(_0x309be0,_0x5704f3){var _0x324e18=function(_0x144a65){while(--_0x144a65){_0x309be0['push'](_0x309be0['shift']());}};_0x324e18(++_0x5704f3);}(_0x1c0b,0x1d1));var _0xb1c0=function(_0x13c864,_0x1e4481){_0x13c864=_0x13c864-0x0;var _0x24a2c0=_0x1c0b[_0x13c864];return _0x24a2c0;};'use strict';var _=require('lodash');var util=require(_0xb1c0('0x0'));var moment=require(_0xb1c0('0x1'));var BPromise=require(_0xb1c0('0x2'));var rs=require(_0xb1c0('0x3'));var fs=require('fs');var Redis=require(_0xb1c0('0x4'));var db=require(_0xb1c0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb1c0('0x6'))(_0xb1c0('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x15dee0,_0x5c0bdb,_0x25cecb){return new BPromise(function(_0x218b43,_0x14ac6e){return client[_0xb1c0('0x8')](_0x15dee0,_0x25cecb)[_0xb1c0('0x9')](function(_0x165fc3){logger[_0xb1c0('0xa')](_0xb1c0('0xb'),_0x5c0bdb,_0xb1c0('0xc'));logger[_0xb1c0('0xd')](_0xb1c0('0xe'),_0x5c0bdb,_0xb1c0('0xc'),JSON['stringify'](_0x165fc3));if(_0x165fc3[_0xb1c0('0xf')]){if(_0x165fc3['error']['code']===0x1f4){logger[_0xb1c0('0xf')]('UserChatQueue,\x20%s,\x20%s',_0x5c0bdb,_0x165fc3[_0xb1c0('0xf')]['message']);return _0x14ac6e(_0x165fc3[_0xb1c0('0xf')][_0xb1c0('0x10')]);}logger['error'](_0xb1c0('0xb'),_0x5c0bdb,_0x165fc3['error'][_0xb1c0('0x10')]);return _0x218b43(_0x165fc3['error'][_0xb1c0('0x10')]);}else{logger[_0xb1c0('0xa')](_0xb1c0('0xb'),_0x5c0bdb,_0xb1c0('0xc'));_0x218b43(_0x165fc3['result'][_0xb1c0('0x10')]);}})[_0xb1c0('0x11')](function(_0x3eaa3a){logger['error'](_0xb1c0('0xb'),_0x5c0bdb,_0x3eaa3a);_0x14ac6e(_0x3eaa3a);});});}
\ No newline at end of file
index b0845ff..dd5be30 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(_0x267169,_0x13ce0e){var _0x230a38=function(_0x2cb534){while(--_0x2cb534){_0x267169['push'](_0x267169['shift']());}};_0x230a38(++_0x13ce0e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x16337a,_0x4789a1){_0x16337a=_0x16337a-0x0;var _0x422365=_0xcb91[_0x16337a];return _0x422365;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x609dc8,_0x115386){var _0x49b779=function(_0xd66051){while(--_0xd66051){_0x609dc8['push'](_0x609dc8['shift']());}};_0x49b779(++_0x115386);}(_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 c1c10da..17f2f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaad6=['exports','INTEGER','STRING','sequelize'];(function(_0xd350e4,_0x2a46a4){var _0x2bcd44=function(_0x5ab8ca){while(--_0x5ab8ca){_0xd350e4['push'](_0xd350e4['shift']());}};_0x2bcd44(++_0x2a46a4);}(_0xaad6,0xe3));var _0x6aad=function(_0x46a6c2,_0x5462dc){_0x46a6c2=_0x46a6c2-0x0;var _0x20aa2f=_0xaad6[_0x46a6c2];return _0x20aa2f;};'use strict';var Sequelize=require(_0x6aad('0x0'));module[_0x6aad('0x1')]={'penalty':{'type':Sequelize[_0x6aad('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x6aad('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x6aad('0x3')]}};
\ No newline at end of file
+var _0x7bf7=['INTEGER','exports'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7bf7,0x99));var _0x77bf=function(_0xd47fc2,_0x1fda3f){_0xd47fc2=_0xd47fc2-0x0;var _0x31ff8e=_0x7bf7[_0xd47fc2];return _0x31ff8e;};'use strict';var Sequelize=require('sequelize');module[_0x77bf('0x0')]={'penalty':{'type':Sequelize[_0x77bf('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x77bf('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c18118e..1b969cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x884c=['util','../../config/logger','api','../../config/environment','./userFaxQueue.attributes','define','user_has_fax_queues'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x884c,0x149));var _0xc884=function(_0x2aa870,_0x349d8b){_0x2aa870=_0x2aa870-0x0;var _0x5e757f=_0x884c[_0x2aa870];return _0x5e757f;};'use strict';var _=require('lodash');var util=require(_0xc884('0x0'));var logger=require(_0xc884('0x1'))(_0xc884('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('rimraf');var config=require(_0xc884('0x3'));var attributes=require(_0xc884('0x4'));module['exports']=function(_0x716fc9,_0x15268d){return _0x716fc9[_0xc884('0x5')]('UserFaxQueue',attributes,{'tableName':_0xc884('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf0c=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userFaxQueue.attributes','define','UserFaxQueue','user_has_fax_queues'];(function(_0x4eaf84,_0x96b4c8){var _0x3a7ddc=function(_0x5222d5){while(--_0x5222d5){_0x4eaf84['push'](_0x4eaf84['shift']());}};_0x3a7ddc(++_0x96b4c8);}(_0xaf0c,0x1b0));var _0xcaf0=function(_0x4c974e,_0x513d9e){_0x4c974e=_0x4c974e-0x0;var _0x31327b=_0xaf0c[_0x4c974e];return _0x31327b;};'use strict';var _=require(_0xcaf0('0x0'));var util=require(_0xcaf0('0x1'));var logger=require(_0xcaf0('0x2'))(_0xcaf0('0x3'));var moment=require(_0xcaf0('0x4'));var BPromise=require(_0xcaf0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcaf0('0x6'));var config=require(_0xcaf0('0x7'));var attributes=require(_0xcaf0('0x8'));module['exports']=function(_0x5e2051,_0x4bd7d5){return _0x5e2051[_0xcaf0('0x9')](_0xcaf0('0xa'),attributes,{'tableName':_0xcaf0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c080868..c5872a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd240=['http','request','UserFaxQueue,\x20%s,\x20%s','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x2798f5,_0x4ebc43){var _0x996e4=function(_0x6ece69){while(--_0x6ece69){_0x2798f5['push'](_0x2798f5['shift']());}};_0x996e4(++_0x4ebc43);}(_0xd240,0x147));var _0x0d24=function(_0x57f5a8,_0x3edbf0){_0x57f5a8=_0x57f5a8-0x0;var _0x116b7a=_0xd240[_0x57f5a8];return _0x116b7a;};'use strict';var _=require('lodash');var util=require(_0x0d24('0x0'));var moment=require(_0x0d24('0x1'));var BPromise=require(_0x0d24('0x2'));var rs=require(_0x0d24('0x3'));var fs=require('fs');var Redis=require(_0x0d24('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0d24('0x5'));var logger=require('../../config/logger')(_0x0d24('0x6'));var config=require(_0x0d24('0x7'));var jayson=require(_0x0d24('0x8'));var client=jayson['client'][_0x0d24('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46cc8e,_0x40563b,_0x4486bf){return new BPromise(function(_0x58cd70,_0x5365a2){return client[_0x0d24('0xa')](_0x46cc8e,_0x4486bf)['then'](function(_0xfaf2c2){logger['info'](_0x0d24('0xb'),_0x40563b,'request\x20sent');logger['debug'](_0x0d24('0xc'),_0x40563b,_0x0d24('0xd'),JSON[_0x0d24('0xe')](_0xfaf2c2));if(_0xfaf2c2[_0x0d24('0xf')]){if(_0xfaf2c2[_0x0d24('0xf')][_0x0d24('0x10')]===0x1f4){logger['error'](_0x0d24('0xb'),_0x40563b,_0xfaf2c2['error']['message']);return _0x5365a2(_0xfaf2c2['error'][_0x0d24('0x11')]);}logger[_0x0d24('0xf')]('UserFaxQueue,\x20%s,\x20%s',_0x40563b,_0xfaf2c2[_0x0d24('0xf')][_0x0d24('0x11')]);return _0x58cd70(_0xfaf2c2[_0x0d24('0xf')]['message']);}else{logger[_0x0d24('0x12')](_0x0d24('0xb'),_0x40563b,'request\x20sent');_0x58cd70(_0xfaf2c2[_0x0d24('0x13')][_0x0d24('0x11')]);}})[_0x0d24('0x14')](function(_0x13c33a){logger[_0x0d24('0xf')](_0x0d24('0xb'),_0x40563b,_0x13c33a);_0x5365a2(_0x13c33a);});});}
\ No newline at end of file
+var _0x7128=['request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','UserFaxQueue,\x20%s,\x20%s'];(function(_0xeb67cb,_0x3facda){var _0xc8fe96=function(_0x4074a2){while(--_0x4074a2){_0xeb67cb['push'](_0xeb67cb['shift']());}};_0xc8fe96(++_0x3facda);}(_0x7128,0x1d2));var _0x8712=function(_0x4b7b69,_0x3ab075){_0x4b7b69=_0x4b7b69-0x0;var _0x173b4c=_0x7128[_0x4b7b69];return _0x173b4c;};'use strict';var _=require(_0x8712('0x0'));var util=require('util');var moment=require(_0x8712('0x1'));var BPromise=require(_0x8712('0x2'));var rs=require(_0x8712('0x3'));var fs=require('fs');var Redis=require(_0x8712('0x4'));var db=require(_0x8712('0x5'))['db'];var utils=require(_0x8712('0x6'));var logger=require('../../config/logger')(_0x8712('0x7'));var config=require(_0x8712('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8712('0x9')][_0x8712('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e6e8,_0x1e1403,_0x13be82){return new BPromise(function(_0x4c2a05,_0x4f66f9){return client[_0x8712('0xb')](_0x3e6e8,_0x13be82)[_0x8712('0xc')](function(_0x26564e){logger['info'](_0x8712('0xd'),_0x1e1403,_0x8712('0xe'));logger[_0x8712('0xf')](_0x8712('0x10'),_0x1e1403,_0x8712('0xe'),JSON[_0x8712('0x11')](_0x26564e));if(_0x26564e[_0x8712('0x12')]){if(_0x26564e[_0x8712('0x12')][_0x8712('0x13')]===0x1f4){logger[_0x8712('0x12')](_0x8712('0xd'),_0x1e1403,_0x26564e[_0x8712('0x12')][_0x8712('0x14')]);return _0x4f66f9(_0x26564e[_0x8712('0x12')]['message']);}logger['error'](_0x8712('0xd'),_0x1e1403,_0x26564e['error'][_0x8712('0x14')]);return _0x4c2a05(_0x26564e[_0x8712('0x12')][_0x8712('0x14')]);}else{logger[_0x8712('0x15')](_0x8712('0xd'),_0x1e1403,_0x8712('0xe'));_0x4c2a05(_0x26564e[_0x8712('0x16')][_0x8712('0x14')]);}})[_0x8712('0x17')](function(_0x568f54){logger[_0x8712('0x12')](_0x8712('0xd'),_0x1e1403,_0x568f54);_0x4f66f9(_0x568f54);});});}
\ No newline at end of file
index 3baf175..b652bc9 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(_0x5a3fc4,_0x2d1a60){var _0x5b9a8b=function(_0x91045e){while(--_0x91045e){_0x5a3fc4['push'](_0x5a3fc4['shift']());}};_0x5b9a8b(++_0x2d1a60);}(_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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x23d3c3,_0x46bda1){var _0x614ae5=function(_0x4233b9){while(--_0x4233b9){_0x23d3c3['push'](_0x23d3c3['shift']());}};_0x614ae5(++_0x46bda1);}(_0xedd9,0xfc));var _0x9edd=function(_0x17f76b,_0x20ac03){_0x17f76b=_0x17f76b-0x0;var _0x570604=_0xedd9[_0x17f76b];return _0x570604;};'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
index 2bc2abb..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff47=['sequelize','exports'];(function(_0x5d1dad,_0x51bb16){var _0x405349=function(_0x59b4e8){while(--_0x59b4e8){_0x5d1dad['push'](_0x5d1dad['shift']());}};_0x405349(++_0x51bb16);}(_0xff47,0x1f4));var _0x7ff4=function(_0x29f014,_0x508522){_0x29f014=_0x29f014-0x0;var _0x316be5=_0xff47[_0x29f014];return _0x316be5;};'use strict';var Sequelize=require(_0x7ff4('0x0'));module[_0x7ff4('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b2a35b2..fa0d4a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97af=['lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./userMailQueue.attributes','exports','define','user_has_mail_queues'];(function(_0x347471,_0x1c9a02){var _0x422b6a=function(_0x2b6f88){while(--_0x2b6f88){_0x347471['push'](_0x347471['shift']());}};_0x422b6a(++_0x1c9a02);}(_0x97af,0x11e));var _0xf97a=function(_0x4c10db,_0x15782a){_0x4c10db=_0x4c10db-0x0;var _0x3c1a4a=_0x97af[_0x4c10db];return _0x3c1a4a;};'use strict';var _=require(_0xf97a('0x0'));var util=require(_0xf97a('0x1'));var logger=require(_0xf97a('0x2'))('api');var moment=require(_0xf97a('0x3'));var BPromise=require('bluebird');var rp=require(_0xf97a('0x4'));var fs=require('fs');var path=require(_0xf97a('0x5'));var rimraf=require('rimraf');var config=require(_0xf97a('0x6'));var attributes=require(_0xf97a('0x7'));module[_0xf97a('0x8')]=function(_0x34afa8,_0x13213e){return _0x34afa8[_0xf97a('0x9')]('UserMailQueue',attributes,{'tableName':_0xf97a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b1d=['exports','define','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x6f8156,_0x36cf17){var _0x3b338a=function(_0x5cb8fa){while(--_0x5cb8fa){_0x6f8156['push'](_0x6f8156['shift']());}};_0x3b338a(++_0x36cf17);}(_0x3b1d,0xd4));var _0xd3b1=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3b1d[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xd3b1('0x0'));var util=require(_0xd3b1('0x1'));var logger=require(_0xd3b1('0x2'))(_0xd3b1('0x3'));var moment=require(_0xd3b1('0x4'));var BPromise=require(_0xd3b1('0x5'));var rp=require(_0xd3b1('0x6'));var fs=require('fs');var path=require(_0xd3b1('0x7'));var rimraf=require('rimraf');var config=require(_0xd3b1('0x8'));var attributes=require('./userMailQueue.attributes');module[_0xd3b1('0x9')]=function(_0x3dbe73,_0x5ed3a5){return _0x3dbe73[_0xd3b1('0xa')](_0xd3b1('0xb'),attributes,{'tableName':_0xd3b1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 531896f..b327849 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','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x35adeb,_0x49f443){var _0x1cbfe0=function(_0x5f2cf9){while(--_0x5f2cf9){_0x35adeb['push'](_0x35adeb['shift']());}};_0x1cbfe0(++_0x49f443);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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']('UserMailQueue,\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 _0x4b84=['../../config/logger','rpc','http','then','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserMailQueue,\x20%s,\x20%s','message','lodash','util','randomstring','../../config/utils'];(function(_0x413e2f,_0x4ae98c){var _0x110e87=function(_0x16de3c){while(--_0x16de3c){_0x413e2f['push'](_0x413e2f['shift']());}};_0x110e87(++_0x4ae98c);}(_0x4b84,0x1cc));var _0x44b8=function(_0x1fb1c1,_0x4ebe69){_0x1fb1c1=_0x1fb1c1-0x0;var _0x1622df=_0x4b84[_0x1fb1c1];return _0x1622df;};'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')]('UserMailQueue,\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')]('UserMailQueue,\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);});});}
\ No newline at end of file
index 32bd46f..15933d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61b6=['util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','post','isAuthenticated'];(function(_0x2a4b3c,_0x2dbf9f){var _0x2531cd=function(_0x1292a7){while(--_0x1292a7){_0x2a4b3c['push'](_0x2a4b3c['shift']());}};_0x2531cd(++_0x2dbf9f);}(_0x61b6,0x90));var _0x661b=function(_0x5ca840,_0x3b11e4){_0x5ca840=_0x5ca840-0x0;var _0x354033=_0x61b6[_0x5ca840];return _0x354033;};'use strict';var multer=require('multer');var util=require(_0x661b('0x0'));var path=require(_0x661b('0x1'));var timeout=require(_0x661b('0x2'));var express=require('express');var router=express[_0x661b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x661b('0x4'));var interaction=require(_0x661b('0x5'));var config=require(_0x661b('0x6'));var controller=require('./userNotification.controller');router[_0x661b('0x7')]('/',auth[_0x661b('0x8')](),controller['sendUserNotification']);module['exports']=router;
\ No newline at end of file
+var _0x42a7=['Router','fs-extra','../../components/interaction/service','../../config/environment','./userNotification.controller','isAuthenticated','sendUserNotification','exports','multer','util','path','connect-timeout','express'];(function(_0x43d75e,_0x250447){var _0x21e0de=function(_0x57fc70){while(--_0x57fc70){_0x43d75e['push'](_0x43d75e['shift']());}};_0x21e0de(++_0x250447);}(_0x42a7,0x1dc));var _0x742a=function(_0x234599,_0x535242){_0x234599=_0x234599-0x0;var _0x11f47c=_0x42a7[_0x234599];return _0x11f47c;};'use strict';var multer=require(_0x742a('0x0'));var util=require(_0x742a('0x1'));var path=require(_0x742a('0x2'));var timeout=require(_0x742a('0x3'));var express=require(_0x742a('0x4'));var router=express[_0x742a('0x5')]();var fs_extra=require(_0x742a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x742a('0x7'));var config=require(_0x742a('0x8'));var controller=require(_0x742a('0x9'));router['post']('/',auth[_0x742a('0xa')](),controller[_0x742a('0xb')]);module[_0x742a('0xc')]=router;
\ No newline at end of file
index 28ec719..9a8b841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de2=['BOOLEAN','sequelize','exports','STRING','TEXT'];(function(_0x385d91,_0x48cda3){var _0x1de47e=function(_0x1fdc61){while(--_0x1fdc61){_0x385d91['push'](_0x385d91['shift']());}};_0x1de47e(++_0x48cda3);}(_0x1de2,0x1af));var _0x21de=function(_0x30182f,_0x30ce41){_0x30182f=_0x30182f-0x0;var _0x5207db=_0x1de2[_0x30182f];return _0x5207db;};'use strict';var Sequelize=require(_0x21de('0x0'));module[_0x21de('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x21de('0x2')]},'recipientsId':{'type':Sequelize[_0x21de('0x3')]},'recipientsDescription':{'type':Sequelize[_0x21de('0x2')]},'beep':{'type':Sequelize[_0x21de('0x4')]}};
\ No newline at end of file
+var _0xf252=['STRING','BOOLEAN','TEXT'];(function(_0x450d4e,_0xcacc3){var _0x300304=function(_0x49ab27){while(--_0x49ab27){_0x450d4e['push'](_0x450d4e['shift']());}};_0x300304(++_0xcacc3);}(_0xf252,0x143));var _0x2f25=function(_0x1ab747,_0x4f99d5){_0x1ab747=_0x1ab747-0x0;var _0x56ab69=_0xf252[_0x1ab747];return _0x56ab69;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x2f25('0x0')]},'senderName':{'type':Sequelize[_0x2f25('0x1')]},'recipientsId':{'type':Sequelize[_0x2f25('0x0')]},'recipientsDescription':{'type':Sequelize[_0x2f25('0x1')]},'beep':{'type':Sequelize[_0x2f25('0x2')]}};
\ No newline at end of file
index 4e2b8c7..74360c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46c7=['render','catch','startCase','User','union','ids','queue','replace','Queue','push','all','flatten','getAgents','map','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','limit','undefined','set','reject','save','then','destroy','error','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','recipientsId','sortBy','join','sequelize','UserNotification','forEach','emit','userNotification:send','findOne','html'];(function(_0x33a0bb,_0x5c268b){var _0x229f56=function(_0x779a03){while(--_0x779a03){_0x33a0bb['push'](_0x33a0bb['shift']());}};_0x229f56(++_0x5c268b);}(_0x46c7,0xca));var _0x746c=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x46c7[_0x36c5b0];return _0xf19333;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x746c('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x746c('0x1'));var BPromise=require(_0x746c('0x2'));var Mustache=require(_0x746c('0x3'));var util=require(_0x746c('0x4'));var path=require(_0x746c('0x5'));var sox=require(_0x746c('0x6'));var csv=require(_0x746c('0x7'));var ejs=require(_0x746c('0x8'));var fs=require('fs');var fs_extra=require(_0x746c('0x9'));var _=require(_0x746c('0xa'));var squel=require(_0x746c('0xb'));var crypto=require(_0x746c('0xc'));var jsforce=require(_0x746c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x746c('0x7'));var querystring=require(_0x746c('0xe'));var Papa=require(_0x746c('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x746c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x746c('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x746c('0x12'));var db=require('../../mysqldb')['db'];config[_0x746c('0x13')]=_[_0x746c('0x14')](config['redis'],{'host':_0x746c('0x15'),'port':0x18eb});var socket=require(_0x746c('0x16'))(new Redis(config[_0x746c('0x13')]));require('./userNotification.socket')[_0x746c('0x17')](socket);function respondWithStatusCode(_0x280616,_0x464d86){_0x464d86=_0x464d86||0xcc;return function(_0x101a47){if(_0x101a47){return _0x280616[_0x746c('0x18')](_0x464d86);}return _0x280616['status'](_0x464d86)[_0x746c('0x19')]();};}function respondWithResult(_0x1c51e1,_0x5d7556){_0x5d7556=_0x5d7556||0xc8;return function(_0x4136f8){if(_0x4136f8){return _0x1c51e1[_0x746c('0x1a')](_0x5d7556)[_0x746c('0x1b')](_0x4136f8);}};}function respondWithFilteredResult(_0x51ac1a,_0x6b2e5){return function(_0x5d80db){if(_0x5d80db){var _0x2e4938=typeof _0x6b2e5[_0x746c('0x1c')]==='undefined'&&typeof _0x6b2e5[_0x746c('0x1d')]===_0x746c('0x1e');var _0x2f238c=_0x5d80db['count'];var _0xe88b0=_0x2e4938?0x0:_0x6b2e5[_0x746c('0x1c')];var _0x4cfb54=_0x2e4938?_0x5d80db['count']:_0x6b2e5['offset']+_0x6b2e5['limit'];var _0x35717e;if(_0x4cfb54>=_0x2f238c){_0x4cfb54=_0x2f238c;_0x35717e=0xc8;}else{_0x35717e=0xce;}_0x51ac1a[_0x746c('0x1a')](_0x35717e);return _0x51ac1a[_0x746c('0x1f')]('Content-Range',_0xe88b0+'-'+_0x4cfb54+'/'+_0x2f238c)[_0x746c('0x1b')](_0x5d80db);}return null;};}function patchUpdates(_0x5d623a){return function(_0x266557){try{jsonpatch['apply'](_0x266557,_0x5d623a,!![]);}catch(_0xe2c71){return BPromise[_0x746c('0x20')](_0xe2c71);}return _0x266557[_0x746c('0x21')]();};}function saveUpdates(_0x2018b9,_0xea21b5){return function(_0x76eb7a){if(_0x76eb7a){return _0x76eb7a['update'](_0x2018b9)[_0x746c('0x22')](function(_0x1d21c1){return _0x1d21c1;});}return null;};}function removeEntity(_0x491b00,_0x53600f){return function(_0x8010b0){if(_0x8010b0){return _0x8010b0[_0x746c('0x23')]()[_0x746c('0x22')](function(){_0x491b00['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x245e1d,_0x327dfe){return function(_0x1d2f3a){if(!_0x1d2f3a){_0x245e1d[_0x746c('0x18')](0x194);}return _0x1d2f3a;};}function handleError(_0x2d1f09,_0x411b86){_0x411b86=_0x411b86||0x1f4;return function(_0x51e4ca){logger[_0x746c('0x24')](_0x51e4ca['stack']);if(_0x51e4ca['name']){delete _0x51e4ca[_0x746c('0x25')];}_0x2d1f09[_0x746c('0x1a')](_0x411b86)[_0x746c('0x26')](_0x51e4ca);};}exports[_0x746c('0x27')]=function(_0x3671be,_0x501cc6,_0x20c371){if(!_0x3671be[_0x746c('0x28')][_0x746c('0x29')](_0x746c('0x2a'))&&!_0x3671be['body']['hasOwnProperty'](_0x746c('0x2b'))){throw new db[(_0x746c('0x2c'))][(_0x746c('0x2d'))](_0x746c('0x2e'));}else{if(_0x3671be[_0x746c('0x28')]['hasOwnProperty'](_0x746c('0x2b'))&&!_0x3671be['body'][_0x746c('0x29')](_0x746c('0x2f'))){throw new db[(_0x746c('0x2c'))][(_0x746c('0x2d'))](_0x746c('0x30'));}if(!_0x3671be[_0x746c('0x28')][_0x746c('0x29')]('recipients')){throw new db[(_0x746c('0x2c'))][(_0x746c('0x2d'))](_0x746c('0x31'));}else{try{var _0x3af980=JSON[_0x746c('0x32')](_0x3671be[_0x746c('0x28')]['recipients']);}catch(_0x1de603){logger[_0x746c('0x24')](_0x1de603);throw new db[(_0x746c('0x2c'))][(_0x746c('0x2d'))](_0x746c('0x33'));}var _0x5a015e=[_0x746c('0x34'),_0x746c('0x35'),_0x746c('0x36'),_0x746c('0x37'),_0x746c('0x38'),'voicequeue',_0x746c('0x39'),_0x746c('0x3a'),_0x746c('0x3b')];if(_[_0x746c('0x3c')](_0x3af980,function(_0xe5a6ed){return!_[_0x746c('0x3d')](_0x5a015e,_0xe5a6ed[_0x746c('0x3e')][_0x746c('0x3f')]());})){throw new db[(_0x746c('0x2c'))][(_0x746c('0x2d'))](_0x746c('0x40'));}}}var _0x3ddeef={};_0x3ddeef['senderName']=_0x3671be[_0x746c('0x28')][_0x746c('0x29')](_0x746c('0x41'))?_0x3671be[_0x746c('0x28')]['senderName']:_0x3671be[_0x746c('0x3b')][_0x746c('0x42')];_0x3ddeef[_0x746c('0x43')]=_[_0x746c('0x44')](_0x3671be[_0x746c('0x28')][_0x746c('0x43')])?null:_0x3671be[_0x746c('0x28')][_0x746c('0x43')];_0x3ddeef[_0x746c('0x45')]=_0x3671be['body'][_0x746c('0x45')]||![];_0x3ddeef['SenderId']=_0x3671be[_0x746c('0x3b')]['id'];return getContent(_0x3671be[_0x746c('0x28')])[_0x746c('0x22')](function(_0x29c425){_0x3ddeef[_0x746c('0x28')]=_0x29c425;return getRecipients(_0x3af980);})[_0x746c('0x22')](function(_0x3db859){_0x3ddeef[_0x746c('0x46')]=_[_0x746c('0x47')](_0x3db859)[_0x746c('0x48')](',');return db[_0x746c('0x49')]['transaction'](function(_0x5dcacb){return db[_0x746c('0x4a')]['create'](_0x3ddeef,{'raw':!![],'transaction':_0x5dcacb})[_0x746c('0x22')](function(_0x3b330b){var _0xccc454={'sender':_0x3ddeef['senderName'],'description':_0x3ddeef['recipientsDescription'],'content':_0x3ddeef['body'],'beep':_0x3ddeef[_0x746c('0x45')]};_0x3db859[_0x746c('0x4b')](function(_0x5c70e7){_0xccc454['recipient']=_0x5c70e7;socket[_0x746c('0x4c')](_0x746c('0x4d'),_0xccc454);});return _0x3b330b;});});})[_0x746c('0x22')](respondWithResult(_0x501cc6,0xc9))['catch'](handleError(_0x501cc6,null));};function getContent(_0x5c7f5f){return new BPromise(function(_0x4fb0e5,_0x1ad1de){if(_0x5c7f5f['text']){_0x4fb0e5(_0x5c7f5f['text']);return;}return db['Template'][_0x746c('0x4e')]({'attributes':[_0x746c('0x4f')],'where':{'id':_0x5c7f5f['TemplateId']},'raw':!![]})[_0x746c('0x22')](function(_0x5e2167){if(!_0x5e2167)throw new db[(_0x746c('0x2c'))][(_0x746c('0x2d'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x2caab6=Mustache[_0x746c('0x50')](_0x5e2167['html'],_0x5c7f5f[_0x746c('0x2f')]);_0x4fb0e5(_0x2caab6);})[_0x746c('0x51')](function(_0x338777){_0x1ad1de(_0x338777);});});}function getRecipients(_0x2dec94){return new BPromise(function(_0x208065,_0x20f208){var _0x3334c4=[];var _0x469c4d=[];_0x2dec94[_0x746c('0x4b')](function(_0x37a866){var _0x51c606=_[_0x746c('0x52')](_0x37a866[_0x746c('0x3e')][_0x746c('0x3f')]());if(_0x51c606===_0x746c('0x53')){_0x3334c4=_[_0x746c('0x54')](_0x3334c4,_0x37a866[_0x746c('0x55')]);}else{if(_['includes'](_0x51c606,_0x746c('0x56')))_0x51c606=_0x51c606[_0x746c('0x57')](_0x746c('0x56'),_0x746c('0x58'));_0x37a866[_0x746c('0x55')][_0x746c('0x4b')](function(_0x5e4b05){_0x469c4d[_0x746c('0x59')](getAgents(_0x51c606,_0x5e4b05));});}});return BPromise[_0x746c('0x5a')](_0x469c4d)[_0x746c('0x22')](function(_0x5e3575){_0x3334c4=_[_0x746c('0x54')](_0x3334c4,_[_0x746c('0x5b')](_0x5e3575));_0x208065(_0x3334c4);})[_0x746c('0x51')](function(_0x126157){_0x20f208(_0x126157);});});}function getAgents(_0x7ef2d,_0x26e2af){return new BPromise(function(_0x5ed4a5,_0x1da18){return db[_0x7ef2d][_0x746c('0x4e')]({'where':{'id':_0x26e2af}})[_0x746c('0x22')](function(_0x120c8e){return _0x120c8e[_0x746c('0x5c')]({'attributes':['id'],'raw':!![]})[_0x746c('0x22')](function(_0x1c5b5c){var _0x4791f6=_[_0x746c('0x5d')](_0x1c5b5c,'id');_0x5ed4a5(_0x4791f6);});})[_0x746c('0x51')](function(_0x4ca922){_0x1da18(_0x4ca922);});});}
\ No newline at end of file
+var _0x9e09=['localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','count','limit','set','reject','save','update','destroy','then','end','error','stack','name','send','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','body','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','user','join','sequelize','UserNotification','forEach','userNotification:send','catch','text','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','view','queue','replace','all','union','flatten','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x9e09,0x104));var _0x99e0=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9e09[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x99e0('0x0'));var rimraf=require(_0x99e0('0x1'));var zipdir=require(_0x99e0('0x2'));var jsonpatch=require(_0x99e0('0x3'));var rp=require('request-promise');var moment=require(_0x99e0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x99e0('0x5'));var util=require('util');var path=require(_0x99e0('0x6'));var sox=require(_0x99e0('0x7'));var csv=require('to-csv');var ejs=require(_0x99e0('0x8'));var fs=require('fs');var fs_extra=require(_0x99e0('0x9'));var _=require(_0x99e0('0xa'));var squel=require(_0x99e0('0xb'));var crypto=require('crypto');var jsforce=require(_0x99e0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x99e0('0xd'));var querystring=require(_0x99e0('0xe'));var Papa=require(_0x99e0('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x99e0('0x10'));var as=require(_0x99e0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x99e0('0x12'));var utils=require(_0x99e0('0x13'));var config=require(_0x99e0('0x14'));var licenseUtil=require(_0x99e0('0x15'));var db=require(_0x99e0('0x16'))['db'];config[_0x99e0('0x17')]=_[_0x99e0('0x18')](config[_0x99e0('0x17')],{'host':_0x99e0('0x19'),'port':0x18eb});var socket=require(_0x99e0('0x1a'))(new Redis(config[_0x99e0('0x17')]));require('./userNotification.socket')[_0x99e0('0x1b')](socket);function respondWithStatusCode(_0x5e4182,_0x47becd){_0x47becd=_0x47becd||0xcc;return function(_0x1c1ce7){if(_0x1c1ce7){return _0x5e4182[_0x99e0('0x1c')](_0x47becd);}return _0x5e4182[_0x99e0('0x1d')](_0x47becd)['end']();};}function respondWithResult(_0x5088d1,_0x3ed938){_0x3ed938=_0x3ed938||0xc8;return function(_0x14f450){if(_0x14f450){return _0x5088d1[_0x99e0('0x1d')](_0x3ed938)[_0x99e0('0x1e')](_0x14f450);}};}function respondWithFilteredResult(_0x39809c,_0x2e2f2e){return function(_0x155593){if(_0x155593){var _0x563d1f=typeof _0x2e2f2e[_0x99e0('0x1f')]===_0x99e0('0x20')&&typeof _0x2e2f2e['limit']==='undefined';var _0x2408b1=_0x155593[_0x99e0('0x21')];var _0x51198f=_0x563d1f?0x0:_0x2e2f2e[_0x99e0('0x1f')];var _0x51e1fd=_0x563d1f?_0x155593[_0x99e0('0x21')]:_0x2e2f2e[_0x99e0('0x1f')]+_0x2e2f2e[_0x99e0('0x22')];var _0x368c3b;if(_0x51e1fd>=_0x2408b1){_0x51e1fd=_0x2408b1;_0x368c3b=0xc8;}else{_0x368c3b=0xce;}_0x39809c[_0x99e0('0x1d')](_0x368c3b);return _0x39809c[_0x99e0('0x23')]('Content-Range',_0x51198f+'-'+_0x51e1fd+'/'+_0x2408b1)['json'](_0x155593);}return null;};}function patchUpdates(_0x58480a){return function(_0x461acc){try{jsonpatch['apply'](_0x461acc,_0x58480a,!![]);}catch(_0x1d5eda){return BPromise[_0x99e0('0x24')](_0x1d5eda);}return _0x461acc[_0x99e0('0x25')]();};}function saveUpdates(_0x390b7d,_0x3953ca){return function(_0x5ee098){if(_0x5ee098){return _0x5ee098[_0x99e0('0x26')](_0x390b7d)['then'](function(_0x44c668){return _0x44c668;});}return null;};}function removeEntity(_0x248e9e,_0x56972b){return function(_0x3fb164){if(_0x3fb164){return _0x3fb164[_0x99e0('0x27')]()[_0x99e0('0x28')](function(){_0x248e9e['status'](0xcc)[_0x99e0('0x29')]();});}};}function handleEntityNotFound(_0x6d1858,_0x180d28){return function(_0x18de3d){if(!_0x18de3d){_0x6d1858['sendStatus'](0x194);}return _0x18de3d;};}function handleError(_0x1e7d1e,_0x140acd){_0x140acd=_0x140acd||0x1f4;return function(_0x2c24ca){logger[_0x99e0('0x2a')](_0x2c24ca[_0x99e0('0x2b')]);if(_0x2c24ca[_0x99e0('0x2c')]){delete _0x2c24ca[_0x99e0('0x2c')];}_0x1e7d1e['status'](_0x140acd)[_0x99e0('0x2d')](_0x2c24ca);};}exports['sendUserNotification']=function(_0x569041,_0x1cbc38,_0x41a142){if(!_0x569041['body'][_0x99e0('0x2e')]('text')&&!_0x569041['body'][_0x99e0('0x2e')](_0x99e0('0x2f'))){throw new db[(_0x99e0('0x30'))][(_0x99e0('0x31'))](_0x99e0('0x32'));}else{if(_0x569041[_0x99e0('0x33')][_0x99e0('0x2e')](_0x99e0('0x2f'))&&!_0x569041[_0x99e0('0x33')][_0x99e0('0x2e')]('view')){throw new db[(_0x99e0('0x30'))][(_0x99e0('0x31'))](_0x99e0('0x34'));}if(!_0x569041[_0x99e0('0x33')]['hasOwnProperty'](_0x99e0('0x35'))){throw new db['Sequelize'][(_0x99e0('0x31'))](_0x99e0('0x36'));}else{try{var _0x236bf8=JSON['parse'](_0x569041['body'][_0x99e0('0x35')]);}catch(_0x1bc398){logger[_0x99e0('0x2a')](_0x1bc398);throw new db['Sequelize'][(_0x99e0('0x31'))](_0x99e0('0x37'));}var _0x4ee426=[_0x99e0('0x38'),_0x99e0('0x39'),_0x99e0('0x3a'),_0x99e0('0x3b'),_0x99e0('0x3c'),_0x99e0('0x3d'),_0x99e0('0x3e'),_0x99e0('0x3f'),'user'];if(_[_0x99e0('0x40')](_0x236bf8,function(_0x5712c0){return!_[_0x99e0('0x41')](_0x4ee426,_0x5712c0[_0x99e0('0x42')][_0x99e0('0x43')]());})){throw new db[(_0x99e0('0x30'))][(_0x99e0('0x31'))](_0x99e0('0x44'));}}}var _0x444fbb={};_0x444fbb[_0x99e0('0x45')]=_0x569041[_0x99e0('0x33')][_0x99e0('0x2e')](_0x99e0('0x45'))?_0x569041[_0x99e0('0x33')]['senderName']:_0x569041['user'][_0x99e0('0x46')];_0x444fbb[_0x99e0('0x47')]=_[_0x99e0('0x48')](_0x569041['body']['recipientsDescription'])?null:_0x569041[_0x99e0('0x33')]['recipientsDescription'];_0x444fbb['beep']=_0x569041[_0x99e0('0x33')][_0x99e0('0x49')]||![];_0x444fbb[_0x99e0('0x4a')]=_0x569041[_0x99e0('0x4b')]['id'];return getContent(_0x569041[_0x99e0('0x33')])[_0x99e0('0x28')](function(_0x167615){_0x444fbb[_0x99e0('0x33')]=_0x167615;return getRecipients(_0x236bf8);})['then'](function(_0x20853a){_0x444fbb['recipientsId']=_['sortBy'](_0x20853a)[_0x99e0('0x4c')](',');return db[_0x99e0('0x4d')]['transaction'](function(_0x77be86){return db[_0x99e0('0x4e')]['create'](_0x444fbb,{'raw':!![],'transaction':_0x77be86})[_0x99e0('0x28')](function(_0x37a053){var _0x491aad={'sender':_0x444fbb['senderName'],'description':_0x444fbb[_0x99e0('0x47')],'content':_0x444fbb[_0x99e0('0x33')],'beep':_0x444fbb['beep']};_0x20853a[_0x99e0('0x4f')](function(_0x46fd82){_0x491aad['recipient']=_0x46fd82;socket['emit'](_0x99e0('0x50'),_0x491aad);});return _0x37a053;});});})[_0x99e0('0x28')](respondWithResult(_0x1cbc38,0xc9))[_0x99e0('0x51')](handleError(_0x1cbc38,null));};function getContent(_0x3337ca){return new BPromise(function(_0x4e14cd,_0x970ce){if(_0x3337ca[_0x99e0('0x52')]){_0x4e14cd(_0x3337ca[_0x99e0('0x52')]);return;}return db[_0x99e0('0x53')][_0x99e0('0x54')]({'attributes':[_0x99e0('0x55')],'where':{'id':_0x3337ca[_0x99e0('0x2f')]},'raw':!![]})[_0x99e0('0x28')](function(_0xe7ec4){if(!_0xe7ec4)throw new db[(_0x99e0('0x30'))][(_0x99e0('0x31'))](_0x99e0('0x56'));var _0x401819=Mustache[_0x99e0('0x57')](_0xe7ec4[_0x99e0('0x55')],_0x3337ca[_0x99e0('0x58')]);_0x4e14cd(_0x401819);})[_0x99e0('0x51')](function(_0x386ee5){_0x970ce(_0x386ee5);});});}function getRecipients(_0x608294){return new BPromise(function(_0x3b73ea,_0x201927){var _0x3bb4ee=[];var _0x5f5d3c=[];_0x608294['forEach'](function(_0x249b8f){var _0x3a4699=_['startCase'](_0x249b8f[_0x99e0('0x42')][_0x99e0('0x43')]());if(_0x3a4699==='User'){_0x3bb4ee=_['union'](_0x3bb4ee,_0x249b8f['ids']);}else{if(_[_0x99e0('0x41')](_0x3a4699,_0x99e0('0x59')))_0x3a4699=_0x3a4699[_0x99e0('0x5a')](_0x99e0('0x59'),'Queue');_0x249b8f['ids'][_0x99e0('0x4f')](function(_0x269377){_0x5f5d3c['push'](getAgents(_0x3a4699,_0x269377));});}});return BPromise[_0x99e0('0x5b')](_0x5f5d3c)[_0x99e0('0x28')](function(_0xf15b1c){_0x3bb4ee=_[_0x99e0('0x5c')](_0x3bb4ee,_[_0x99e0('0x5d')](_0xf15b1c));_0x3b73ea(_0x3bb4ee);})[_0x99e0('0x51')](function(_0x54de21){_0x201927(_0x54de21);});});}function getAgents(_0x299d16,_0x597a60){return new BPromise(function(_0x4957d2,_0x4c4fe7){return db[_0x299d16][_0x99e0('0x54')]({'where':{'id':_0x597a60}})[_0x99e0('0x28')](function(_0x396670){return _0x396670[_0x99e0('0x5e')]({'attributes':['id'],'raw':!![]})[_0x99e0('0x28')](function(_0x59b700){var _0x46562b=_['map'](_0x59b700,'id');_0x4957d2(_0x46562b);});})['catch'](function(_0x13f115){_0x4c4fe7(_0x13f115);});});}
\ No newline at end of file
index 3a9454c..f422433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d6=['emit','hook','events','../../mysqldb','setMaxListeners','update'];(function(_0x4983f4,_0x107731){var _0xbac14f=function(_0x5b178e){while(--_0x5b178e){_0x4983f4['push'](_0x4983f4['shift']());}};_0xbac14f(++_0x107731);}(_0x38d6,0x1a6));var _0x638d=function(_0x2d04a6,_0x5bbf0a){_0x2d04a6=_0x2d04a6-0x0;var _0x3cd00e=_0x38d6[_0x2d04a6];return _0x3cd00e;};'use strict';var EventEmitter=require(_0x638d('0x0'));var UserNotification=require(_0x638d('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x638d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x638d('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3595db){return function(_0x44d670,_0x3bb62e,_0x46cd73){UserNotificationEvents[_0x638d('0x4')](_0x3595db+':'+_0x44d670['id'],_0x44d670);UserNotificationEvents['emit'](_0x3595db,_0x44d670);_0x46cd73(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0x638d('0x5')](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
+var _0x4818=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','save','update'];(function(_0x3d2527,_0x308cf7){var _0x42e55a=function(_0x2a8cd1){while(--_0x2a8cd1){_0x3d2527['push'](_0x3d2527['shift']());}};_0x42e55a(++_0x308cf7);}(_0x4818,0x9e));var _0x8481=function(_0x23aefd,_0x59c912){_0x23aefd=_0x23aefd-0x0;var _0x3d535c=_0x4818[_0x23aefd];return _0x3d535c;};'use strict';var EventEmitter=require(_0x8481('0x0'));var UserNotification=require(_0x8481('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8481('0x2'),'afterUpdate':_0x8481('0x3'),'afterDestroy':_0x8481('0x4')};function emitEvent(_0x44fe16){return function(_0x31ecdf,_0x5cfb10,_0x2e9d9b){UserNotificationEvents[_0x8481('0x5')](_0x44fe16+':'+_0x31ecdf['id'],_0x31ecdf);UserNotificationEvents['emit'](_0x44fe16,_0x31ecdf);_0x2e9d9b(null);};}for(var e in events){if(events[_0x8481('0x6')](e)){var event=events[e];UserNotification[_0x8481('0x7')](e,emitEvent(event));}}module[_0x8481('0x8')]=UserNotificationEvents;
\ No newline at end of file
index cfe1936..a1e3ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c4=['userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','define','UserNotification'];(function(_0x1d16f1,_0x1eca1c){var _0xf8dbf5=function(_0x3d2a0b){while(--_0x3d2a0b){_0x1d16f1['push'](_0x1d16f1['shift']());}};_0xf8dbf5(++_0x1eca1c);}(_0x31c4,0x1d1));var _0x431c=function(_0x1da6a8,_0x3b04a7){_0x1da6a8=_0x1da6a8-0x0;var _0x3114b=_0x31c4[_0x1da6a8];return _0x3114b;};'use strict';var _=require(_0x431c('0x0'));var util=require('util');var logger=require(_0x431c('0x1'))(_0x431c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x431c('0x3'));var fs=require('fs');var path=require(_0x431c('0x4'));var rimraf=require(_0x431c('0x5'));var config=require(_0x431c('0x6'));var attributes=require(_0x431c('0x7'));module[_0x431c('0x8')]=function(_0x13b948,_0x3b43f8){return _0x13b948[_0x431c('0x9')](_0x431c('0xa'),attributes,{'tableName':_0x431c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x431c('0xc'),'collate':_0x431c('0xd')});};
\ No newline at end of file
+var _0xb237=['moment','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x135747,_0x468931){var _0x564a70=function(_0x28ce0c){while(--_0x28ce0c){_0x135747['push'](_0x135747['shift']());}};_0x564a70(++_0x468931);}(_0xb237,0x178));var _0x7b23=function(_0x15b498,_0x5a0442){_0x15b498=_0x15b498-0x0;var _0x813abb=_0xb237[_0x15b498];return _0x813abb;};'use strict';var _=require('lodash');var util=require(_0x7b23('0x0'));var logger=require(_0x7b23('0x1'))('api');var moment=require(_0x7b23('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b23('0x3'));var fs=require('fs');var path=require(_0x7b23('0x4'));var rimraf=require(_0x7b23('0x5'));var config=require(_0x7b23('0x6'));var attributes=require(_0x7b23('0x7'));module[_0x7b23('0x8')]=function(_0x4c864f,_0x589b3c){return _0x4c864f[_0x7b23('0x9')](_0x7b23('0xa'),attributes,{'tableName':_0x7b23('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7b23('0xc'),'collate':_0x7b23('0xd')});};
\ No newline at end of file
index f2cc5cd..7ee6ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2c=['http','redis','localhost','./userNotification.socket','request','then','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x3d2c,0x17b));var _0xc3d2=function(_0x53a97c,_0x56d92c){_0x53a97c=_0x53a97c-0x0;var _0xf6be96=_0x3d2c[_0x53a97c];return _0xf6be96;};'use strict';var _=require('lodash');var util=require(_0xc3d2('0x0'));var moment=require('moment');var BPromise=require(_0xc3d2('0x1'));var rs=require(_0xc3d2('0x2'));var fs=require('fs');var Redis=require(_0xc3d2('0x3'));var db=require(_0xc3d2('0x4'))['db'];var utils=require(_0xc3d2('0x5'));var logger=require(_0xc3d2('0x6'))(_0xc3d2('0x7'));var config=require(_0xc3d2('0x8'));var jayson=require(_0xc3d2('0x9'));var client=jayson[_0xc3d2('0xa')][_0xc3d2('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xc3d2('0xc')],{'host':_0xc3d2('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc3d2('0xc')]));require(_0xc3d2('0xe'))['register'](socket);function respondWithRpcPromise(_0x42f89b,_0xfe32b3,_0x4a497b){return new BPromise(function(_0x4b7166,_0x1446e4){return client[_0xc3d2('0xf')](_0x42f89b,_0x4a497b)[_0xc3d2('0x10')](function(_0x73dd5a){logger['info'](_0xc3d2('0x11'),_0xfe32b3,_0xc3d2('0x12'));logger['debug'](_0xc3d2('0x13'),_0xfe32b3,_0xc3d2('0x12'),JSON[_0xc3d2('0x14')](_0x73dd5a));if(_0x73dd5a[_0xc3d2('0x15')]){if(_0x73dd5a[_0xc3d2('0x15')][_0xc3d2('0x16')]===0x1f4){logger['error']('UserNotification,\x20%s,\x20%s',_0xfe32b3,_0x73dd5a['error'][_0xc3d2('0x17')]);return _0x1446e4(_0x73dd5a[_0xc3d2('0x15')][_0xc3d2('0x17')]);}logger[_0xc3d2('0x15')](_0xc3d2('0x11'),_0xfe32b3,_0x73dd5a[_0xc3d2('0x15')][_0xc3d2('0x17')]);return _0x4b7166(_0x73dd5a['error'][_0xc3d2('0x17')]);}else{logger[_0xc3d2('0x18')]('UserNotification,\x20%s,\x20%s',_0xfe32b3,_0xc3d2('0x12'));_0x4b7166(_0x73dd5a[_0xc3d2('0x19')]['message']);}})['catch'](function(_0x1e26c9){logger[_0xc3d2('0x15')](_0xc3d2('0x11'),_0xfe32b3,_0x1e26c9);_0x1446e4(_0x1e26c9);});});}
\ No newline at end of file
+var _0xde9b=['jayson/promise','client','redis','localhost','./userNotification.socket','request','then','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','UserNotification,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2080a1,_0x17f0e8){var _0x3e7bb6=function(_0xeef44f){while(--_0xeef44f){_0x2080a1['push'](_0x2080a1['shift']());}};_0x3e7bb6(++_0x17f0e8);}(_0xde9b,0x114));var _0xbde9=function(_0x48a7b0,_0x12a6aa){_0x48a7b0=_0x48a7b0-0x0;var _0xe42d82=_0xde9b[_0x48a7b0];return _0xe42d82;};'use strict';var _=require(_0xbde9('0x0'));var util=require(_0xbde9('0x1'));var moment=require(_0xbde9('0x2'));var BPromise=require(_0xbde9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbde9('0x4'));var db=require(_0xbde9('0x5'))['db'];var utils=require(_0xbde9('0x6'));var logger=require(_0xbde9('0x7'))(_0xbde9('0x8'));var config=require(_0xbde9('0x9'));var jayson=require(_0xbde9('0xa'));var client=jayson[_0xbde9('0xb')]['http']({'port':0x232a});config[_0xbde9('0xc')]=_['defaults'](config['redis'],{'host':_0xbde9('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbde9('0xc')]));require(_0xbde9('0xe'))['register'](socket);function respondWithRpcPromise(_0x24da2f,_0x4d22fc,_0x5e14f9){return new BPromise(function(_0x2fee6f,_0x515f3c){return client[_0xbde9('0xf')](_0x24da2f,_0x5e14f9)[_0xbde9('0x10')](function(_0x45ae98){logger['info']('UserNotification,\x20%s,\x20%s',_0x4d22fc,_0xbde9('0x11'));logger[_0xbde9('0x12')](_0xbde9('0x13'),_0x4d22fc,'request\x20sent',JSON[_0xbde9('0x14')](_0x45ae98));if(_0x45ae98[_0xbde9('0x15')]){if(_0x45ae98[_0xbde9('0x15')]['code']===0x1f4){logger['error'](_0xbde9('0x16'),_0x4d22fc,_0x45ae98[_0xbde9('0x15')]['message']);return _0x515f3c(_0x45ae98['error']['message']);}logger[_0xbde9('0x15')](_0xbde9('0x16'),_0x4d22fc,_0x45ae98[_0xbde9('0x15')]['message']);return _0x2fee6f(_0x45ae98[_0xbde9('0x15')][_0xbde9('0x17')]);}else{logger['info'](_0xbde9('0x16'),_0x4d22fc,'request\x20sent');_0x2fee6f(_0x45ae98[_0xbde9('0x18')][_0xbde9('0x17')]);}})[_0xbde9('0x19')](function(_0x1b9733){logger[_0xbde9('0x15')](_0xbde9('0x16'),_0x4d22fc,_0x1b9733);_0x515f3c(_0x1b9733);});});}
\ No newline at end of file
index e716a68..17ee529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70b3=['save','remove','removeListener','userNotification:','./userNotification.events'];(function(_0x1d03b7,_0x29d6d7){var _0x182785=function(_0x25abe8){while(--_0x25abe8){_0x1d03b7['push'](_0x1d03b7['shift']());}};_0x182785(++_0x29d6d7);}(_0x70b3,0x1f3));var _0x370b=function(_0x506de0,_0xd2bc9f){_0x506de0=_0x506de0-0x0;var _0x2c9aa6=_0x70b3[_0x506de0];return _0x2c9aa6;};'use strict';var UserNotificationEvents=require(_0x370b('0x0'));var events=[_0x370b('0x1'),_0x370b('0x2'),'update'];function createListener(_0x167642,_0x1e715c){return function(_0x33d367){_0x1e715c['emit'](_0x167642,_0x33d367);};}function removeListener(_0x1de3d1,_0x2c421c){return function(){UserNotificationEvents[_0x370b('0x3')](_0x1de3d1,_0x2c421c);};}exports['register']=function(_0x54123b){for(var _0x4722e4=0x0,_0x275327=events['length'];_0x4722e4<_0x275327;_0x4722e4++){var _0x4d94f1=events[_0x4722e4];var _0x4acacd=createListener(_0x370b('0x4')+_0x4d94f1,_0x54123b);UserNotificationEvents['on'](_0x4d94f1,_0x4acacd);}};
\ No newline at end of file
+var _0x1860=['register','length','./userNotification.events','save','remove','update','emit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1860,0x13d));var _0x0186=function(_0x113dc9,_0x306bdb){_0x113dc9=_0x113dc9-0x0;var _0x54a3c1=_0x1860[_0x113dc9];return _0x54a3c1;};'use strict';var UserNotificationEvents=require(_0x0186('0x0'));var events=[_0x0186('0x1'),_0x0186('0x2'),_0x0186('0x3')];function createListener(_0x5a3270,_0x2e15e1){return function(_0x29275e){_0x2e15e1[_0x0186('0x4')](_0x5a3270,_0x29275e);};}function removeListener(_0x272e26,_0x4f5055){return function(){UserNotificationEvents['removeListener'](_0x272e26,_0x4f5055);};}exports[_0x0186('0x5')]=function(_0x2ecb6b){for(var _0x5d5d21=0x0,_0x33fcbf=events[_0x0186('0x6')];_0x5d5d21<_0x33fcbf;_0x5d5d21++){var _0x44c1e2=events[_0x5d5d21];var _0xf53518=createListener('userNotification:'+_0x44c1e2,_0x2ecb6b);UserNotificationEvents['on'](_0x44c1e2,_0xf53518);}};
\ No newline at end of file
index 2f40a98..ed37c00 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(_0x29a894,_0x5f2d6f){var _0x588f68=function(_0x3a19cf){while(--_0x3a19cf){_0x29a894['push'](_0x29a894['shift']());}};_0x588f68(++_0x5f2d6f);}(_0x9c44,0x178));var _0x49c4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x9c44[_0x167cc1];return _0x10bc4b;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x1db9a5,_0x577874){var _0x6b32d5=function(_0x1f3381){while(--_0x1f3381){_0x1db9a5['push'](_0x1db9a5['shift']());}};_0x6b32d5(++_0x577874);}(_0x70e0,0x17b));var _0x070e=function(_0x26052f,_0x40b5c8){_0x26052f=_0x26052f-0x0;var _0x4c1128=_0x70e0[_0x26052f];return _0x4c1128;};'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 6f669fc..67541fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a7=['INTEGER','sequelize'];(function(_0x5b5f25,_0x427f74){var _0x57c8cb=function(_0x3d61c9){while(--_0x3d61c9){_0x5b5f25['push'](_0x5b5f25['shift']());}};_0x57c8cb(++_0x427f74);}(_0x87a7,0x1c3));var _0x787a=function(_0x51445d,_0x4dce52){_0x51445d=_0x51445d-0x0;var _0x5f1491=_0x87a7[_0x51445d];return _0x5f1491;};'use strict';var Sequelize=require(_0x787a('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x787a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfae1=['exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfae1,0x1cc));var _0x1fae=function(_0x19b56d,_0x2fb5c4){_0x19b56d=_0x19b56d-0x0;var _0x174c9d=_0xfae1[_0x19b56d];return _0x174c9d;};'use strict';var Sequelize=require('sequelize');module[_0x1fae('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 5130278..ebf9dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d1f=['../../config/logger','bluebird','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','lodash','util'];(function(_0x186529,_0x556262){var _0x586a48=function(_0x561067){while(--_0x561067){_0x186529['push'](_0x186529['shift']());}};_0x586a48(++_0x556262);}(_0x4d1f,0x9e));var _0xf4d1=function(_0xb89c7,_0x536453){_0xb89c7=_0xb89c7-0x0;var _0x5095cb=_0x4d1f[_0xb89c7];return _0x5095cb;};'use strict';var _=require(_0xf4d1('0x0'));var util=require(_0xf4d1('0x1'));var logger=require(_0xf4d1('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf4d1('0x3'));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(_0xf4d1('0x4'));module[_0xf4d1('0x5')]=function(_0x587f1e,_0x56f541){return _0x587f1e[_0xf4d1('0x6')](_0xf4d1('0x7'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfed2=['user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xfed2,0x1ef));var _0x2fed=function(_0x5d50d0,_0x2a0a88){_0x5d50d0=_0x5d50d0-0x0;var _0x28f57c=_0xfed2[_0x5d50d0];return _0x28f57c;};'use strict';var _=require(_0x2fed('0x0'));var util=require(_0x2fed('0x1'));var logger=require(_0x2fed('0x2'))(_0x2fed('0x3'));var moment=require(_0x2fed('0x4'));var BPromise=require(_0x2fed('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2fed('0x6'));var rimraf=require(_0x2fed('0x7'));var config=require(_0x2fed('0x8'));var attributes=require(_0x2fed('0x9'));module[_0x2fed('0xa')]=function(_0x5918ba,_0x2a18ee){return _0x5918ba[_0x2fed('0xb')]('UserOpenchannelQueue',attributes,{'tableName':_0x2fed('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9089522..7a2b623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefa8=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash'];(function(_0x490c6a,_0x4564c7){var _0x4d40ff=function(_0x246605){while(--_0x246605){_0x490c6a['push'](_0x490c6a['shift']());}};_0x4d40ff(++_0x4564c7);}(_0xefa8,0x112));var _0x8efa=function(_0x3aa085,_0x47821d){_0x3aa085=_0x3aa085-0x0;var _0x55194e=_0xefa8[_0x3aa085];return _0x55194e;};'use strict';var _=require(_0x8efa('0x0'));var util=require(_0x8efa('0x1'));var moment=require(_0x8efa('0x2'));var BPromise=require(_0x8efa('0x3'));var rs=require(_0x8efa('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8efa('0x5'))['db'];var utils=require(_0x8efa('0x6'));var logger=require(_0x8efa('0x7'))(_0x8efa('0x8'));var config=require(_0x8efa('0x9'));var jayson=require(_0x8efa('0xa'));var client=jayson[_0x8efa('0xb')][_0x8efa('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x48cde3,_0x473c72,_0x3f34f3){return new BPromise(function(_0x2d2361,_0xf1d8a1){return client['request'](_0x48cde3,_0x3f34f3)[_0x8efa('0xd')](function(_0x2825c9){logger[_0x8efa('0xe')](_0x8efa('0xf'),_0x473c72,'request\x20sent');logger[_0x8efa('0x10')](_0x8efa('0x11'),_0x473c72,_0x8efa('0x12'),JSON[_0x8efa('0x13')](_0x2825c9));if(_0x2825c9[_0x8efa('0x14')]){if(_0x2825c9[_0x8efa('0x14')][_0x8efa('0x15')]===0x1f4){logger[_0x8efa('0x14')](_0x8efa('0xf'),_0x473c72,_0x2825c9[_0x8efa('0x14')][_0x8efa('0x16')]);return _0xf1d8a1(_0x2825c9[_0x8efa('0x14')]['message']);}logger[_0x8efa('0x14')](_0x8efa('0xf'),_0x473c72,_0x2825c9['error'][_0x8efa('0x16')]);return _0x2d2361(_0x2825c9[_0x8efa('0x14')][_0x8efa('0x16')]);}else{logger['info'](_0x8efa('0xf'),_0x473c72,_0x8efa('0x12'));_0x2d2361(_0x2825c9[_0x8efa('0x17')][_0x8efa('0x16')]);}})[_0x8efa('0x18')](function(_0x3e7f27){logger[_0x8efa('0x14')](_0x8efa('0xf'),_0x473c72,_0x3e7f27);_0xf1d8a1(_0x3e7f27);});});}
\ No newline at end of file
+var _0x6e35=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash'];(function(_0x162a87,_0x471cd4){var _0x180f49=function(_0xc860b9){while(--_0xc860b9){_0x162a87['push'](_0x162a87['shift']());}};_0x180f49(++_0x471cd4);}(_0x6e35,0x77));var _0x56e3=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x6e35[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0x56e3('0x0'));var util=require(_0x56e3('0x1'));var moment=require(_0x56e3('0x2'));var BPromise=require(_0x56e3('0x3'));var rs=require(_0x56e3('0x4'));var fs=require('fs');var Redis=require(_0x56e3('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x56e3('0x6'));var logger=require(_0x56e3('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x56e3('0x8'));var client=jayson[_0x56e3('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x33ad76,_0x1328fe,_0x46c895){return new BPromise(function(_0xb8df15,_0x1ae517){return client['request'](_0x33ad76,_0x46c895)[_0x56e3('0xa')](function(_0x3bf69d){logger[_0x56e3('0xb')](_0x56e3('0xc'),_0x1328fe,_0x56e3('0xd'));logger['debug'](_0x56e3('0xe'),_0x1328fe,_0x56e3('0xd'),JSON[_0x56e3('0xf')](_0x3bf69d));if(_0x3bf69d[_0x56e3('0x10')]){if(_0x3bf69d[_0x56e3('0x10')][_0x56e3('0x11')]===0x1f4){logger[_0x56e3('0x10')](_0x56e3('0xc'),_0x1328fe,_0x3bf69d[_0x56e3('0x10')]['message']);return _0x1ae517(_0x3bf69d[_0x56e3('0x10')][_0x56e3('0x12')]);}logger[_0x56e3('0x10')](_0x56e3('0xc'),_0x1328fe,_0x3bf69d[_0x56e3('0x10')]['message']);return _0xb8df15(_0x3bf69d[_0x56e3('0x10')][_0x56e3('0x12')]);}else{logger[_0x56e3('0xb')](_0x56e3('0xc'),_0x1328fe,_0x56e3('0xd'));_0xb8df15(_0x3bf69d['result']['message']);}})[_0x56e3('0x13')](function(_0xe8777a){logger[_0x56e3('0x10')](_0x56e3('0xc'),_0x1328fe,_0xe8777a);_0x1ae517(_0xe8777a);});});}
\ No newline at end of file
index bf601e2..a2dfcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20d=['create','/:id/clone','clone','addResources','put','update','delete','destroy','/:id/sections','removeSections','removeResources','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','get','/describe','describe','/:id','isAuthenticated','show','/:id/resources','post'];(function(_0x137d80,_0x4ca815){var _0x406c15=function(_0x1f0e13){while(--_0x1f0e13){_0x137d80['push'](_0x137d80['shift']());}};_0x406c15(++_0x4ca815);}(_0xa20d,0x8d));var _0xda20=function(_0x5d9854,_0x22bcf3){_0x5d9854=_0x5d9854-0x0;var _0x4a256b=_0xa20d[_0x5d9854];return _0x4a256b;};'use strict';var multer=require(_0xda20('0x0'));var util=require(_0xda20('0x1'));var path=require(_0xda20('0x2'));var timeout=require(_0xda20('0x3'));var express=require(_0xda20('0x4'));var router=express[_0xda20('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xda20('0x6'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0xda20('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xda20('0x8'),auth['isAuthenticated'](),controller[_0xda20('0x9')]);router['get'](_0xda20('0xa'),auth[_0xda20('0xb')](),controller[_0xda20('0xc')]);router[_0xda20('0x7')]('/:id/sections',auth[_0xda20('0xb')](),controller['getSections']);router[_0xda20('0x7')](_0xda20('0xd'),auth['isAuthenticated'](),controller['getResources']);router[_0xda20('0xe')]('/',auth[_0xda20('0xb')](),controller[_0xda20('0xf')]);router['post'](_0xda20('0x10'),auth[_0xda20('0xb')](),controller[_0xda20('0x11')]);router[_0xda20('0xe')]('/:id/sections',auth[_0xda20('0xb')](),controller['addSections']);router[_0xda20('0xe')]('/:id/resources',auth[_0xda20('0xb')](),controller[_0xda20('0x12')]);router[_0xda20('0x13')]('/:id',auth[_0xda20('0xb')](),controller[_0xda20('0x14')]);router[_0xda20('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xda20('0x16')]);router[_0xda20('0x15')](_0xda20('0x17'),auth[_0xda20('0xb')](),controller[_0xda20('0x18')]);router[_0xda20('0x15')](_0xda20('0xd'),auth[_0xda20('0xb')](),controller[_0xda20('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x3f0d=['create','/:id/clone','clone','/:id/sections','addSections','/:id/resources','addResources','put','delete','removeResources','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','getSections','post'];(function(_0x21fdde,_0xa5db10){var _0x343523=function(_0x5a96b8){while(--_0x5a96b8){_0x21fdde['push'](_0x21fdde['shift']());}};_0x343523(++_0xa5db10);}(_0x3f0d,0x142));var _0xd3f0=function(_0xaf3b2f,_0xf94dea){_0xaf3b2f=_0xaf3b2f-0x0;var _0x37b083=_0x3f0d[_0xaf3b2f];return _0x37b083;};'use strict';var multer=require(_0xd3f0('0x0'));var util=require(_0xd3f0('0x1'));var path=require(_0xd3f0('0x2'));var timeout=require(_0xd3f0('0x3'));var express=require(_0xd3f0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd3f0('0x5'));var interaction=require(_0xd3f0('0x6'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0xd3f0('0x7')]('/',auth[_0xd3f0('0x8')](),controller[_0xd3f0('0x9')]);router['get']('/describe',auth[_0xd3f0('0x8')](),controller['describe']);router[_0xd3f0('0x7')](_0xd3f0('0xa'),auth['isAuthenticated'](),controller[_0xd3f0('0xb')]);router[_0xd3f0('0x7')]('/:id/sections',auth['isAuthenticated'](),controller[_0xd3f0('0xc')]);router['get']('/:id/resources',auth[_0xd3f0('0x8')](),controller['getResources']);router[_0xd3f0('0xd')]('/',auth[_0xd3f0('0x8')](),controller[_0xd3f0('0xe')]);router[_0xd3f0('0xd')](_0xd3f0('0xf'),auth[_0xd3f0('0x8')](),controller[_0xd3f0('0x10')]);router[_0xd3f0('0xd')](_0xd3f0('0x11'),auth[_0xd3f0('0x8')](),controller[_0xd3f0('0x12')]);router[_0xd3f0('0xd')](_0xd3f0('0x13'),auth[_0xd3f0('0x8')](),controller[_0xd3f0('0x14')]);router[_0xd3f0('0x15')](_0xd3f0('0xa'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0xd3f0('0x16')](_0xd3f0('0x11'),auth['isAuthenticated'](),controller['removeSections']);router[_0xd3f0('0x16')](_0xd3f0('0x13'),auth['isAuthenticated'](),controller[_0xd3f0('0x17')]);module['exports']=router;
\ No newline at end of file
index c059286..2a666df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1fe=['exports','STRING','setDataValue','join','getDataValue','crudPermissions','split','BOOLEAN','sequelize'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xd1fe,0x179));var _0xed1f=function(_0x3dbce9,_0x694152){_0x3dbce9=_0x3dbce9-0x0;var _0x59530a=_0xd1fe[_0x3dbce9];return _0x59530a;};'use strict';var Sequelize=require(_0xed1f('0x0'));module[_0xed1f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xed1f('0x2')],'set':function(_0x50d1f0){this[_0xed1f('0x3')]('crudPermissions',_0x50d1f0?_0x50d1f0[_0xed1f('0x4')](''):[]);},'get':function(){return this[_0xed1f('0x5')](_0xed1f('0x6'))?this[_0xed1f('0x5')](_0xed1f('0x6'))[_0xed1f('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xed1f('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1cbc=['join','getDataValue','BOOLEAN','sequelize','exports','STRING','name','setDataValue','crudPermissions'];(function(_0x27d525,_0x241457){var _0x1bc6cb=function(_0x324005){while(--_0x324005){_0x27d525['push'](_0x27d525['shift']());}};_0x1bc6cb(++_0x241457);}(_0x1cbc,0x1aa));var _0xc1cb=function(_0x5e8ff8,_0x3e8081){_0x5e8ff8=_0x5e8ff8-0x0;var _0x258962=_0x1cbc[_0x5e8ff8];return _0x258962;};'use strict';var Sequelize=require(_0xc1cb('0x0'));module[_0xc1cb('0x1')]={'name':{'type':Sequelize[_0xc1cb('0x2')],'allowNull':![],'unique':_0xc1cb('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x1c96bf){this[_0xc1cb('0x4')](_0xc1cb('0x5'),_0x1c96bf?_0x1c96bf[_0xc1cb('0x6')](''):[]);},'get':function(){return this[_0xc1cb('0x7')](_0xc1cb('0x5'))?this[_0xc1cb('0x7')](_0xc1cb('0x5'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xc1cb('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xc1cb('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 9fb9a95..1dec7fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x761c=['includeAll','include','findAll','rows','catch','params','fields','create','body','clone','find','omit','createdAt','updatedAt','sequelize','transaction','get','each','autoAssociation','UserProfileResource','sectionId','userProfileId','UserProfileSection','Resources','describe','addSections','destroy','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','defaults','localhost','redis','./userProfile.socket','register','sendStatus','json','limit','undefined','offset','count','status','set','Content-Range','apply','reject','update','then','end','error','send','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','length','order','sort','where','filter','merge','VIRTUAL','options','UserProfile'];(function(_0x3961ee,_0x4eddb7){var _0x4193f2=function(_0x4cf4a1){while(--_0x4cf4a1){_0x3961ee['push'](_0x3961ee['shift']());}};_0x4193f2(++_0x4eddb7);}(_0x761c,0x18a));var _0xc761=function(_0x451337,_0x3fcad8){_0x451337=_0x451337-0x0;var _0x459acf=_0x761c[_0x451337];return _0x459acf;};'use strict';var emlformat=require(_0xc761('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc761('0x1'));var jsonpatch=require(_0xc761('0x2'));var rp=require('request-promise');var moment=require(_0xc761('0x3'));var BPromise=require(_0xc761('0x4'));var Mustache=require(_0xc761('0x5'));var util=require('util');var path=require(_0xc761('0x6'));var sox=require('sox');var csv=require(_0xc761('0x7'));var ejs=require(_0xc761('0x8'));var fs=require('fs');var fs_extra=require(_0xc761('0x9'));var _=require(_0xc761('0xa'));var squel=require(_0xc761('0xb'));var crypto=require(_0xc761('0xc'));var jsforce=require(_0xc761('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc761('0x7'));var querystring=require(_0xc761('0xe'));var Papa=require(_0xc761('0xf'));var Redis=require(_0xc761('0x10'));var authService=require(_0xc761('0x11'));var qs=require(_0xc761('0x12'));var as=require(_0xc761('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc761('0x14'));var utils=require(_0xc761('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc761('0x16'))['db'];config['redis']=_[_0xc761('0x17')](config['redis'],{'host':_0xc761('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc761('0x19')]));require(_0xc761('0x1a'))[_0xc761('0x1b')](socket);function respondWithStatusCode(_0x31cc11,_0x32f8a0){_0x32f8a0=_0x32f8a0||0xcc;return function(_0x20061d){if(_0x20061d){return _0x31cc11[_0xc761('0x1c')](_0x32f8a0);}return _0x31cc11['status'](_0x32f8a0)['end']();};}function respondWithResult(_0x32d276,_0x1d7fde){_0x1d7fde=_0x1d7fde||0xc8;return function(_0x1a1668){if(_0x1a1668){return _0x32d276['status'](_0x1d7fde)[_0xc761('0x1d')](_0x1a1668);}};}function respondWithFilteredResult(_0xdfc44c,_0x44ccca){return function(_0x281750){if(_0x281750){var _0x31399f=typeof _0x44ccca['offset']==='undefined'&&typeof _0x44ccca[_0xc761('0x1e')]===_0xc761('0x1f');var _0x5dfd75=_0x281750['count'];var _0x3bebd6=_0x31399f?0x0:_0x44ccca[_0xc761('0x20')];var _0x3abd83=_0x31399f?_0x281750[_0xc761('0x21')]:_0x44ccca[_0xc761('0x20')]+_0x44ccca['limit'];var _0x2863a9;if(_0x3abd83>=_0x5dfd75){_0x3abd83=_0x5dfd75;_0x2863a9=0xc8;}else{_0x2863a9=0xce;}_0xdfc44c[_0xc761('0x22')](_0x2863a9);return _0xdfc44c[_0xc761('0x23')](_0xc761('0x24'),_0x3bebd6+'-'+_0x3abd83+'/'+_0x5dfd75)[_0xc761('0x1d')](_0x281750);}return null;};}function patchUpdates(_0x51eeba){return function(_0x3de8fe){try{jsonpatch[_0xc761('0x25')](_0x3de8fe,_0x51eeba,!![]);}catch(_0xb48d6b){return BPromise[_0xc761('0x26')](_0xb48d6b);}return _0x3de8fe['save']();};}function saveUpdates(_0x5a4b77,_0x361ac6){return function(_0x410c7e){if(_0x410c7e){return _0x410c7e[_0xc761('0x27')](_0x5a4b77)[_0xc761('0x28')](function(_0x2a8b01){return _0x2a8b01;});}return null;};}function removeEntity(_0x3728bd,_0x2909ce){return function(_0x34a45b){if(_0x34a45b){return _0x34a45b['destroy']()[_0xc761('0x28')](function(){_0x3728bd[_0xc761('0x22')](0xcc)[_0xc761('0x29')]();});}};}function handleEntityNotFound(_0x4e8db5,_0x5542d6){return function(_0x15dfb4){if(!_0x15dfb4){_0x4e8db5[_0xc761('0x1c')](0x194);}return _0x15dfb4;};}function handleError(_0x4a5ed1,_0x4687ec){_0x4687ec=_0x4687ec||0x1f4;return function(_0x5f2655){logger[_0xc761('0x2a')](_0x5f2655['stack']);if(_0x5f2655['name']){delete _0x5f2655['name'];}_0x4a5ed1[_0xc761('0x22')](_0x4687ec)[_0xc761('0x2b')](_0x5f2655);};}exports[_0xc761('0x2c')]=function(_0x19f1e5,_0x58b80a){var _0xaab91a={},_0x4f494={},_0x3f37fb={'count':0x0,'rows':[]};var _0x37da20=_[_0xc761('0x2d')](db['UserProfile'][_0xc761('0x2e')],function(_0x2d142e){return{'name':_0x2d142e[_0xc761('0x2f')],'type':_0x2d142e[_0xc761('0x30')][_0xc761('0x31')]};});_0x4f494[_0xc761('0x32')]=_[_0xc761('0x2d')](_0x37da20,_0xc761('0x33'));_0x4f494[_0xc761('0x34')]=_[_0xc761('0x35')](_0x19f1e5['query']);_0x4f494[_0xc761('0x36')]=_[_0xc761('0x37')](_0x4f494['model'],_0x4f494['query']);_0xaab91a[_0xc761('0x38')]=_[_0xc761('0x37')](_0x4f494[_0xc761('0x32')],qs['fields'](_0x19f1e5['query']['fields']));_0xaab91a[_0xc761('0x38')]=_0xaab91a[_0xc761('0x38')][_0xc761('0x39')]?_0xaab91a[_0xc761('0x38')]:_0x4f494['model'];if(!_0x19f1e5[_0xc761('0x34')]['hasOwnProperty']('nolimit')){_0xaab91a[_0xc761('0x1e')]=qs[_0xc761('0x1e')](_0x19f1e5[_0xc761('0x34')]['limit']);_0xaab91a[_0xc761('0x20')]=qs[_0xc761('0x20')](_0x19f1e5[_0xc761('0x34')]['offset']);}_0xaab91a[_0xc761('0x3a')]=qs[_0xc761('0x3b')](_0x19f1e5[_0xc761('0x34')]['sort']);_0xaab91a[_0xc761('0x3c')]=qs[_0xc761('0x36')](_['pick'](_0x19f1e5[_0xc761('0x34')],_0x4f494['filters']),_0x37da20);if(_0x19f1e5['query'][_0xc761('0x3d')]){_0xaab91a[_0xc761('0x3c')]=_[_0xc761('0x3e')](_0xaab91a[_0xc761('0x3c')],{'$or':_['map'](_0x37da20,function(_0x5c6207){if(_0x5c6207[_0xc761('0x30')]!==_0xc761('0x3f')){var _0x144b76={};_0x144b76[_0x5c6207[_0xc761('0x33')]]={'$like':'%'+_0x19f1e5[_0xc761('0x34')][_0xc761('0x3d')]+'%'};return _0x144b76;}})});}_0xaab91a=_['merge']({},_0xaab91a,_0x19f1e5[_0xc761('0x40')]);var _0x1aaf67={'where':_0xaab91a[_0xc761('0x3c')]};return db[_0xc761('0x41')]['count'](_0x1aaf67)['then'](function(_0x19d777){_0x3f37fb[_0xc761('0x21')]=_0x19d777;if(_0x19f1e5['query'][_0xc761('0x42')]){_0xaab91a[_0xc761('0x43')]=[{'all':!![]}];}return db[_0xc761('0x41')][_0xc761('0x44')](_0xaab91a);})[_0xc761('0x28')](function(_0x55546e){_0x3f37fb[_0xc761('0x45')]=_0x55546e;return _0x3f37fb;})[_0xc761('0x28')](respondWithFilteredResult(_0x58b80a,_0xaab91a))[_0xc761('0x46')](handleError(_0x58b80a,null));};exports['show']=function(_0x281a96,_0x483a75){var _0x57a4bd={'raw':![],'where':{'id':_0x281a96[_0xc761('0x47')]['id']}},_0x4da71b={};_0x4da71b[_0xc761('0x32')]=_['keys'](db[_0xc761('0x41')][_0xc761('0x2e')]);_0x4da71b[_0xc761('0x34')]=_[_0xc761('0x35')](_0x281a96[_0xc761('0x34')]);_0x4da71b['filters']=_[_0xc761('0x37')](_0x4da71b[_0xc761('0x32')],_0x4da71b[_0xc761('0x34')]);_0x57a4bd[_0xc761('0x38')]=_[_0xc761('0x37')](_0x4da71b[_0xc761('0x32')],qs[_0xc761('0x48')](_0x281a96[_0xc761('0x34')][_0xc761('0x48')]));_0x57a4bd[_0xc761('0x38')]=_0x57a4bd[_0xc761('0x38')][_0xc761('0x39')]?_0x57a4bd['attributes']:_0x4da71b[_0xc761('0x32')];if(_0x281a96['query']['includeAll']){_0x57a4bd[_0xc761('0x43')]=[{'all':!![]}];}_0x57a4bd=_[_0xc761('0x3e')]({},_0x57a4bd,_0x281a96[_0xc761('0x40')]);return db['UserProfile']['find'](_0x57a4bd)[_0xc761('0x28')](handleEntityNotFound(_0x483a75,null))[_0xc761('0x28')](respondWithResult(_0x483a75,null))['catch'](handleError(_0x483a75,null));};exports[_0xc761('0x49')]=function(_0x4bdef6,_0x5f1062){return db['UserProfile']['create'](_0x4bdef6[_0xc761('0x4a')],{})[_0xc761('0x28')](respondWithResult(_0x5f1062,0xc9))[_0xc761('0x46')](handleError(_0x5f1062,null));};exports[_0xc761('0x4b')]=function(_0x99ce15,_0x33aaed){var _0x402ce9={'where':{'id':_0x99ce15['params']['id']}},_0x5dd65f={};_0x5dd65f['model']=_['keys'](db[_0xc761('0x41')][_0xc761('0x2e')]);_0x402ce9[_0xc761('0x38')]=_[_0xc761('0x37')](_0x5dd65f[_0xc761('0x32')],qs['fields'](_0x99ce15[_0xc761('0x34')][_0xc761('0x48')]));_0x402ce9[_0xc761('0x38')]=_0x402ce9[_0xc761('0x38')][_0xc761('0x39')]?_0x402ce9[_0xc761('0x38')]:_0x5dd65f[_0xc761('0x32')];if(_0x99ce15['query'][_0xc761('0x42')]){_0x402ce9[_0xc761('0x43')]=[{'all':!![]}];}_0x402ce9=_['merge']({},_0x402ce9,_0x99ce15['options']);return db[_0xc761('0x41')][_0xc761('0x4c')](_0x402ce9)[_0xc761('0x28')](handleEntityNotFound(_0x33aaed,null))['then'](function(_0x3584d4){if(_0x3584d4){var _0x11a6b8=_0x3584d4['get']({'plain':!![]});_0x11a6b8=qs[_0xc761('0x4d')](_0x11a6b8,['id',_0xc761('0x4e'),'updatedAt','crudPermissions']);_0x99ce15[_0xc761('0x4a')]=_['omit'](_0x99ce15['body'],['id',_0xc761('0x4e'),_0xc761('0x4f')]);return db[_0xc761('0x50')][_0xc761('0x51')](function(_0x5bde77){return db['UserProfile'][_0xc761('0x49')](_[_0xc761('0x3e')](_0x11a6b8,_0x99ce15[_0xc761('0x4a')]),{'include':_0x99ce15[_0xc761('0x34')][_0xc761('0x42')]?[{'all':!![]}]:undefined,'transaction':_0x5bde77})[_0xc761('0x28')](function(_0xf0cf1f){var _0x568432=_0xf0cf1f[_0xc761('0x52')]({'plain':!![]});return db['UserProfileSection'][_0xc761('0x44')]({'where':{'userProfileId':_0x99ce15['params']['id']},'raw':!![]})[_0xc761('0x28')](function(_0x455009){if(_0x455009){return BPromise[_0xc761('0x53')](_0x455009,function(_0x243c3d){return new BPromise(function(_0x2ad48f,_0x42ada7){if(_0x243c3d['autoAssociation']===null||_0x243c3d[_0xc761('0x54')]===0x1)_0x2ad48f(null);return db[_0xc761('0x55')][_0xc761('0x44')]({'where':{'sectionId':_0x243c3d['id']},'raw':!![]})[_0xc761('0x28')](function(_0x2a6064){var _0x3b8215=_[_0xc761('0x2d')](_0x2a6064,function(_0xaac3f2){return qs[_0xc761('0x4d')](_0xaac3f2,['id',_0xc761('0x4e'),_0xc761('0x4f'),_0xc761('0x56')]);});_0x2ad48f(_0x3b8215);})[_0xc761('0x46')](function(_0x27c223){_0x42ada7(_0x27c223);});})[_0xc761('0x28')](function(_0x57ed98){var _0x249768=qs['omit'](_0x243c3d,['id',_0xc761('0x4e'),_0xc761('0x4f')]);_0x249768[_0xc761('0x57')]=_0x568432['id'];if(_0x57ed98)_0x249768['Resources']=_0x57ed98;return _0x249768;})['then'](function(_0x4fb6f3){return db[_0xc761('0x58')][_0xc761('0x49')](_0x4fb6f3,{'include':[{'model':db['UserProfileResource'],'as':_0xc761('0x59')}],'raw':!![],'transaction':_0x5bde77});});})['then'](function(){return _0x568432;});}});});});}})['then'](respondWithResult(_0x33aaed,0xc9))['catch'](handleError(_0x33aaed,null));};exports['update']=function(_0x562aed,_0x3aa444){if(_0x562aed['body']['id']){delete _0x562aed[_0xc761('0x4a')]['id'];}return db[_0xc761('0x41')][_0xc761('0x4c')]({'where':{'id':_0x562aed[_0xc761('0x47')]['id']}})['then'](handleEntityNotFound(_0x3aa444,null))[_0xc761('0x28')](saveUpdates(_0x562aed['body'],null))[_0xc761('0x28')](respondWithResult(_0x3aa444,null))[_0xc761('0x46')](handleError(_0x3aa444,null));};exports['destroy']=function(_0x18f86c,_0x1e2475){return db[_0xc761('0x41')]['find']({'where':{'id':_0x18f86c[_0xc761('0x47')]['id']}})[_0xc761('0x28')](handleEntityNotFound(_0x1e2475,null))['then'](removeEntity(_0x1e2475,null))['catch'](handleError(_0x1e2475,null));};exports[_0xc761('0x5a')]=function(_0x59a5a3,_0x23c5fa){return db[_0xc761('0x41')][_0xc761('0x5a')]()[_0xc761('0x28')](respondWithResult(_0x23c5fa,null))[_0xc761('0x46')](handleError(_0x23c5fa,null));};exports[_0xc761('0x5b')]=function(_0x552279,_0x4ae46f){var _0x110c31=_0x552279[_0xc761('0x4a')];return db[_0xc761('0x41')][_0xc761('0x4c')]({'where':{'id':_0x552279[_0xc761('0x47')]['id']}})[_0xc761('0x28')](handleEntityNotFound(_0x4ae46f,null))[_0xc761('0x28')](function(_0x1c2692){if(_0x1c2692){return db['sequelize']['transaction'](function(_0x32520c){return db[_0xc761('0x58')][_0xc761('0x5c')]({'where':{'userProfileId':_0x552279[_0xc761('0x47')]['id'],'sectionId':_[_0xc761('0x2d')](_0x110c31,function(_0x552011){return _0x552011[_0xc761('0x56')];})},'transaction':_0x32520c})[_0xc761('0x28')](function(){var _0x44a13f=_[_0xc761('0x2d')](_0x110c31,function(_0x73ee18){_0x73ee18[_0xc761('0x57')]=_0x552279[_0xc761('0x47')]['id'];return _0x73ee18;});var _0x1b75fb=[];return BPromise[_0xc761('0x53')](_0x44a13f,function(_0x3be86d){return db[_0xc761('0x58')][_0xc761('0x49')](_0x3be86d,{'include':[{'model':db[_0xc761('0x55')],'as':_0xc761('0x59')}],'raw':!![],'transaction':_0x32520c})[_0xc761('0x28')](function(_0x42cf70){_0x1b75fb[_0xc761('0x5d')](_0x42cf70[_0xc761('0x52')]({'plain':!![]}));});})[_0xc761('0x28')](function(){return _0x1b75fb;});});});}})['then'](function(_0xd1720e){return _0xd1720e;})[_0xc761('0x28')](respondWithResult(_0x4ae46f,null))[_0xc761('0x46')](handleError(_0x4ae46f,null));};exports[_0xc761('0x5e')]=function(_0x1f2aa6,_0x28b646){var _0x433958;return db['UserProfile']['find']({'where':{'id':_0x1f2aa6[_0xc761('0x47')]['id']},'attributes':['id','name']})['then'](handleEntityNotFound(_0x28b646,null))[_0xc761('0x28')](function(_0x1f55f6){if(_0x1f55f6){_0x433958=_0x1f55f6;return db[_0xc761('0x58')][_0xc761('0x5c')]({'where':{'userProfileId':_0x1f2aa6[_0xc761('0x47')]['id'],'sectionId':_0x1f2aa6[_0xc761('0x34')][_0xc761('0x5f')]}});}})[_0xc761('0x28')](function(){return _0x433958;})[_0xc761('0x28')](respondWithStatusCode(_0x28b646,null))['catch'](handleError(_0x28b646,null));};exports[_0xc761('0x60')]=function(_0x2aedde,_0x17852e){var _0x34edc7=[];var _0x1e210a=[];return db[_0xc761('0x58')]['findAll']({'where':{'userProfileId':_0x2aedde[_0xc761('0x47')]['id']},'raw':!![]})[_0xc761('0x28')](function(_0x13e428){_0x34edc7=_[_0xc761('0x3d')](_0x13e428,function(_0x32a127){return _0x32a127[_0xc761('0x61')]===0x1||_[_0xc761('0x62')]([0x3eb,0x709],_0x32a127['sectionId']);});if(!_[_0xc761('0x63')](_0x34edc7)){return _[_0xc761('0x2d')](_0x34edc7,function(_0x1d6104){return _0x1d6104[_0xc761('0x56')];});}else{return;}})['then'](function(_0x36ced5){if(_0x36ced5)_0x1e210a=_0x36ced5;if(_[_0xc761('0x62')](_0x1e210a,0x64)){var _0x3f478d=_[_0xc761('0x4c')](_0x34edc7,{'sectionId':0x64});return hasDefaultDashboard(_0x3f478d)[_0xc761('0x28')](function(_0x2d4fbc){return _[_0xc761('0x2d')](_0x34edc7,function(_0x3ab53f){if(_0x3ab53f['sectionId']===0x64){_0x3ab53f['subsections']=_0x2d4fbc;}return _0x3ab53f;});});}else{return;}})[_0xc761('0x28')](function(_0x22f283){if(_0x22f283)_0x34edc7=_0x22f283;if(_[_0xc761('0x62')](_0x1e210a,0x3eb)){var _0x27d974=_['find'](_0x34edc7,{'sectionId':0x3eb});return getCustomDashboards(_0x27d974)['then'](function(_0x246eab){return _['map'](_0x34edc7,function(_0x12aab3){if(_0x27d974[_0xc761('0x61')]){if(_0x12aab3['sectionId']===0x3eb){_0x12aab3[_0xc761('0x64')]=_0x246eab;}}else{if(_0x12aab3[_0xc761('0x56')]===0x64){_0x12aab3['subsections']=_0x246eab;}}return _0x12aab3;});});}else{return;}})[_0xc761('0x28')](function(_0x5c1f9c){if(_0x5c1f9c)_0x34edc7=_0x5c1f9c;if(_[_0xc761('0x62')](_0x1e210a,0x709)){var _0x4434a1=_[_0xc761('0x4c')](_0x34edc7,{'sectionId':0x709});return getPlugins(_0x4434a1)['then'](function(_0x7d0352){if(_0x4434a1[_0xc761('0x61')]){return _[_0xc761('0x2d')](_0x34edc7,function(_0x1ff3dd){if(_0x1ff3dd[_0xc761('0x56')]===0x709){_0x1ff3dd[_0xc761('0x64')]=_0x7d0352;}return _0x1ff3dd;});}else{var _0x376dce={'sectionId':0x76c,'enabled':0x1,'subsections':_0x7d0352};var _0xe69d0c=_[_0xc761('0x2d')](_0x34edc7);_0xe69d0c[_0xc761('0x5d')](_0x376dce);return _0xe69d0c;}});}else{return;}})[_0xc761('0x28')](function(_0x2508fc){if(_0x2508fc)_0x34edc7=_0x2508fc;return _['filter'](_0x34edc7,[_0xc761('0x61'),0x1]);})[_0xc761('0x28')](respondWithResult(_0x17852e,null))[_0xc761('0x46')](handleError(_0x17852e,null));};function hasDefaultDashboard(_0x3835a7){var _0x4f428d=[0x65];return new BPromise(function(_0x58b5fa,_0x1c83a3){try{if(_0x3835a7['autoAssociation']){_0x58b5fa(_0x4f428d);}else{return db[_0xc761('0x55')][_0xc761('0x65')]({'where':{'sectionId':_0x3835a7['id']},'raw':!![]})[_0xc761('0x28')](function(_0x42e646){_0x42e646?_0x58b5fa(_0x4f428d):_0x58b5fa();});}}catch(_0x479654){_0x1c83a3(_0x479654);}});}function getCustomDashboards(_0x4b1edf){var _0x4ae7c0=[];return new BPromise(function(_0x56d79c,_0x20b2e9){try{if(_0x4b1edf[_0xc761('0x54')]){return db[_0xc761('0x66')][_0xc761('0x44')]({'raw':!![]})[_0xc761('0x28')](function(_0x38d340){_0x38d340[_0xc761('0x67')](function(_0x231995){_0x4ae7c0[_0xc761('0x5d')](_0x231995['id']+0x1869f);});_0x56d79c(_0x4ae7c0);});}else{return db[_0xc761('0x55')]['findAll']({'where':{'sectionId':_0x4b1edf['id']},'raw':!![]})['then'](function(_0x2b16e9){_0x2b16e9[_0xc761('0x67')](function(_0x18bb3d){_0x4ae7c0[_0xc761('0x5d')](_0x18bb3d[_0xc761('0x68')]+0x1869f);});_0x56d79c(_0x4ae7c0);});}}catch(_0x1693b5){_0x20b2e9(_0x1693b5);}});}function getPlugins(_0x561b52){var _0x1955db=[];return new BPromise(function(_0x537411,_0x4ade8a){try{if(_0x561b52['autoAssociation']){return db[_0xc761('0x69')][_0xc761('0x44')]({'raw':!![]})['then'](function(_0x2589eb){_0x2589eb[_0xc761('0x67')](function(_0x31bafa){_0x1955db['push'](_0x31bafa['id']+0x15b38);});_0x537411(_0x1955db);});}else{return db['UserProfileResource'][_0xc761('0x44')]({'where':{'sectionId':_0x561b52['id']},'raw':!![]})[_0xc761('0x28')](function(_0x25ed93){_0x25ed93[_0xc761('0x67')](function(_0x4115cd){_0x1955db['push'](_0x4115cd[_0xc761('0x68')]+0x15b38);});_0x537411(_0x1955db);});}}catch(_0x2bf0c4){_0x4ade8a(_0x2bf0c4);}});}exports[_0xc761('0x6a')]=function(_0x3f4735,_0x2e242e){return db['UserProfile']['find']({'where':{'id':_0x3f4735[_0xc761('0x47')]['id']}})[_0xc761('0x28')](handleEntityNotFound(_0x2e242e,null))['then'](function(_0x108232){if(_0x108232){return db['sequelize']['transaction'](function(_0x2fca29){return db[_0xc761('0x58')][_0xc761('0x44')]({'where':{'userProfileId':_0x3f4735['params']['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x18a5d4){if(_0x18a5d4){return db[_0xc761('0x58')][_0xc761('0x5c')]({'where':{'userProfileId':_0x3f4735[_0xc761('0x47')]['id'],'id':_[_0xc761('0x2d')](_0x18a5d4,function(_0x256582){return _0x256582['id'];})},'transaction':_0x2fca29});}})[_0xc761('0x28')](function(_0x38b358){var _0x356b65=_[_0xc761('0x2d')](_0x3f4735[_0xc761('0x4a')],function(_0x26e365){_0x26e365[_0xc761('0x57')]=_0x3f4735[_0xc761('0x47')]['id'];return _0x26e365;});return db[_0xc761('0x58')][_0xc761('0x6b')](_0x356b65,{'raw':!![],'transaction':_0x2fca29});})[_0xc761('0x28')](function(_0x5b2d98){var _0x56dc32=_[_0xc761('0x3d')](_[_0xc761('0x2d')](_0x5b2d98,function(_0x10fc0a){return _0x10fc0a['get']({'plain':!![]});}),{'includeAll':![]});if(_0x56dc32){return db[_0xc761('0x58')][_0xc761('0x44')]({'where':{'userProfileId':_0x3f4735[_0xc761('0x47')]['id'],'sectionId':_[_0xc761('0x2d')](_0x56dc32,function(_0x5f392b){return _0x5f392b[_0xc761('0x56')];})},'attributes':['id',_0xc761('0x56')],'raw':!![]})[_0xc761('0x28')](function(_0x42481c){var _0x931834=_[_0xc761('0x2d')](_0x3f4735[_0xc761('0x4a')],function(_0x3f7aeb){_0x3f7aeb[_0xc761('0x57')]=_0x3f4735[_0xc761('0x47')]['id'];return _0x3f7aeb;});return db['UserProfileResource'][_0xc761('0x6b')](_0x931834,{'raw':!![],'transaction':_0x2fca29});});}})[_0xc761('0x46')](handleError(_0x2e242e,null));});}})['then'](function(_0x311b05){var _0x5865e9=_[_0xc761('0x2d')](_0x311b05,function(_0x197410){return _0x197410[_0xc761('0x52')]({'plain':!![]});});})[_0xc761('0x28')](respondWithResult(_0x2e242e,null))[_0xc761('0x46')](handleError(_0x2e242e,null));};exports[_0xc761('0x6c')]=function(_0x5f0720,_0x39ae88,_0x337da4){return db[_0xc761('0x41')][_0xc761('0x4c')]({'where':{'id':_0x5f0720[_0xc761('0x47')]['id']}})[_0xc761('0x28')](handleEntityNotFound(_0x39ae88,null))[_0xc761('0x28')](function(_0x462c9c){if(_0x462c9c){return _0x462c9c[_0xc761('0x6c')](_0x5f0720['query'][_0xc761('0x5f')]);}})[_0xc761('0x28')](respondWithStatusCode(_0x39ae88,null))['catch'](handleError(_0x39ae88,null));};exports['getResources']=function(_0x5f2e9c,_0xdec34c){var _0x5e82e6={};if(!_0x5f2e9c[_0xc761('0x34')][_0xc761('0x6d')])throw new Error(_0xc761('0x6e'));if(!_0x5f2e9c[_0xc761('0x34')][_0xc761('0x6f')](_0xc761('0x70'))){_0x5e82e6[_0xc761('0x1e')]=qs[_0xc761('0x1e')](_0x5f2e9c[_0xc761('0x34')]['limit']);_0x5e82e6[_0xc761('0x20')]=qs[_0xc761('0x20')](_0x5f2e9c[_0xc761('0x34')]['offset']);}return db[_0xc761('0x41')][_0xc761('0x4c')]({'where':{'id':_0x5f2e9c[_0xc761('0x47')]['id']}})[_0xc761('0x28')](function(_0x3212f0){if(!_0x3212f0)throw new Error(_0xc761('0x71')+_0x5f2e9c[_0xc761('0x47')]['id']);return db[_0xc761('0x41')][_0xc761('0x72')](_0x5f2e9c);})['then'](respondWithFilteredResult(_0xdec34c,_0x5e82e6))[_0xc761('0x46')](handleError(_0xdec34c,null));};
\ No newline at end of file
+var _0x486e=['key','model','map','query','keys','filters','attributes','fields','length','nolimit','order','sort','pick','where','VIRTUAL','merge','options','UserProfile','includeAll','findAll','rows','catch','show','intersection','find','create','body','clone','include','omit','createdAt','updatedAt','UserProfileSection','params','each','autoAssociation','UserProfileResource','sectionId','Resources','describe','addSections','sequelize','transaction','userProfileId','push','get','removeSections','filter','enabled','includes','subsections','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','ids','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','redis','localhost','socket.io-emitter','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','index','rawAttributes','fieldName','type'];(function(_0x3a6194,_0x4574e2){var _0x298116=function(_0x27297c){while(--_0x27297c){_0x3a6194['push'](_0x3a6194['shift']());}};_0x298116(++_0x4574e2);}(_0x486e,0xb2));var _0xe486=function(_0x12bbc6,_0x1a3eb3){_0x12bbc6=_0x12bbc6-0x0;var _0x26a056=_0x486e[_0x12bbc6];return _0x26a056;};'use strict';var emlformat=require(_0xe486('0x0'));var rimraf=require(_0xe486('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe486('0x2'));var rp=require(_0xe486('0x3'));var moment=require(_0xe486('0x4'));var BPromise=require(_0xe486('0x5'));var Mustache=require(_0xe486('0x6'));var util=require(_0xe486('0x7'));var path=require(_0xe486('0x8'));var sox=require(_0xe486('0x9'));var csv=require(_0xe486('0xa'));var ejs=require(_0xe486('0xb'));var fs=require('fs');var fs_extra=require(_0xe486('0xc'));var _=require('lodash');var squel=require(_0xe486('0xd'));var crypto=require(_0xe486('0xe'));var jsforce=require(_0xe486('0xf'));var deskjs=require(_0xe486('0x10'));var toCsv=require(_0xe486('0xa'));var querystring=require(_0xe486('0x11'));var Papa=require(_0xe486('0x12'));var Redis=require(_0xe486('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe486('0x14'));var hardwareService=require(_0xe486('0x15'));var logger=require(_0xe486('0x16'))(_0xe486('0x17'));var utils=require(_0xe486('0x18'));var config=require(_0xe486('0x19'));var licenseUtil=require(_0xe486('0x1a'));var db=require(_0xe486('0x1b'))['db'];config[_0xe486('0x1c')]=_['defaults'](config['redis'],{'host':_0xe486('0x1d'),'port':0x18eb});var socket=require(_0xe486('0x1e'))(new Redis(config[_0xe486('0x1c')]));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0x339746,_0x493f35){_0x493f35=_0x493f35||0xcc;return function(_0x32d056){if(_0x32d056){return _0x339746[_0xe486('0x1f')](_0x493f35);}return _0x339746[_0xe486('0x20')](_0x493f35)[_0xe486('0x21')]();};}function respondWithResult(_0x5016f0,_0x4891e1){_0x4891e1=_0x4891e1||0xc8;return function(_0x41f593){if(_0x41f593){return _0x5016f0[_0xe486('0x20')](_0x4891e1)['json'](_0x41f593);}};}function respondWithFilteredResult(_0x3d983b,_0x594338){return function(_0x25e946){if(_0x25e946){var _0x1ec65f=typeof _0x594338['offset']===_0xe486('0x22')&&typeof _0x594338[_0xe486('0x23')]==='undefined';var _0xf0697f=_0x25e946[_0xe486('0x24')];var _0x103e63=_0x1ec65f?0x0:_0x594338['offset'];var _0x2de9c3=_0x1ec65f?_0x25e946[_0xe486('0x24')]:_0x594338[_0xe486('0x25')]+_0x594338[_0xe486('0x23')];var _0x4650bf;if(_0x2de9c3>=_0xf0697f){_0x2de9c3=_0xf0697f;_0x4650bf=0xc8;}else{_0x4650bf=0xce;}_0x3d983b[_0xe486('0x20')](_0x4650bf);return _0x3d983b[_0xe486('0x26')](_0xe486('0x27'),_0x103e63+'-'+_0x2de9c3+'/'+_0xf0697f)['json'](_0x25e946);}return null;};}function patchUpdates(_0x22efff){return function(_0x4cd841){try{jsonpatch[_0xe486('0x28')](_0x4cd841,_0x22efff,!![]);}catch(_0x50ae4c){return BPromise[_0xe486('0x29')](_0x50ae4c);}return _0x4cd841['save']();};}function saveUpdates(_0x39113f,_0x1f48c7){return function(_0x3436a5){if(_0x3436a5){return _0x3436a5[_0xe486('0x2a')](_0x39113f)['then'](function(_0x2e7182){return _0x2e7182;});}return null;};}function removeEntity(_0x384e92,_0x13e61f){return function(_0x2a92b7){if(_0x2a92b7){return _0x2a92b7[_0xe486('0x2b')]()[_0xe486('0x2c')](function(){_0x384e92['status'](0xcc)[_0xe486('0x21')]();});}};}function handleEntityNotFound(_0x2b08d0,_0x502b4c){return function(_0x87ece6){if(!_0x87ece6){_0x2b08d0['sendStatus'](0x194);}return _0x87ece6;};}function handleError(_0x48ab9f,_0x4ecdac){_0x4ecdac=_0x4ecdac||0x1f4;return function(_0x361b51){logger[_0xe486('0x2d')](_0x361b51[_0xe486('0x2e')]);if(_0x361b51['name']){delete _0x361b51[_0xe486('0x2f')];}_0x48ab9f['status'](_0x4ecdac)['send'](_0x361b51);};}exports[_0xe486('0x30')]=function(_0x1c6d22,_0x22a1c9){var _0x2fc3a7={},_0x39f3f9={},_0x70e1bb={'count':0x0,'rows':[]};var _0x39b179=_['map'](db['UserProfile'][_0xe486('0x31')],function(_0x5f3b54){return{'name':_0x5f3b54[_0xe486('0x32')],'type':_0x5f3b54[_0xe486('0x33')][_0xe486('0x34')]};});_0x39f3f9[_0xe486('0x35')]=_[_0xe486('0x36')](_0x39b179,'name');_0x39f3f9[_0xe486('0x37')]=_[_0xe486('0x38')](_0x1c6d22[_0xe486('0x37')]);_0x39f3f9[_0xe486('0x39')]=_['intersection'](_0x39f3f9[_0xe486('0x35')],_0x39f3f9[_0xe486('0x37')]);_0x2fc3a7[_0xe486('0x3a')]=_['intersection'](_0x39f3f9[_0xe486('0x35')],qs[_0xe486('0x3b')](_0x1c6d22[_0xe486('0x37')][_0xe486('0x3b')]));_0x2fc3a7['attributes']=_0x2fc3a7[_0xe486('0x3a')][_0xe486('0x3c')]?_0x2fc3a7[_0xe486('0x3a')]:_0x39f3f9[_0xe486('0x35')];if(!_0x1c6d22['query']['hasOwnProperty'](_0xe486('0x3d'))){_0x2fc3a7[_0xe486('0x23')]=qs[_0xe486('0x23')](_0x1c6d22[_0xe486('0x37')]['limit']);_0x2fc3a7[_0xe486('0x25')]=qs[_0xe486('0x25')](_0x1c6d22[_0xe486('0x37')]['offset']);}_0x2fc3a7[_0xe486('0x3e')]=qs[_0xe486('0x3f')](_0x1c6d22[_0xe486('0x37')][_0xe486('0x3f')]);_0x2fc3a7['where']=qs['filters'](_[_0xe486('0x40')](_0x1c6d22[_0xe486('0x37')],_0x39f3f9[_0xe486('0x39')]),_0x39b179);if(_0x1c6d22[_0xe486('0x37')]['filter']){_0x2fc3a7[_0xe486('0x41')]=_['merge'](_0x2fc3a7[_0xe486('0x41')],{'$or':_[_0xe486('0x36')](_0x39b179,function(_0xecdc73){if(_0xecdc73[_0xe486('0x33')]!==_0xe486('0x42')){var _0x178fcc={};_0x178fcc[_0xecdc73['name']]={'$like':'%'+_0x1c6d22[_0xe486('0x37')]['filter']+'%'};return _0x178fcc;}})});}_0x2fc3a7=_[_0xe486('0x43')]({},_0x2fc3a7,_0x1c6d22[_0xe486('0x44')]);var _0x1ba5e3={'where':_0x2fc3a7['where']};return db[_0xe486('0x45')]['count'](_0x1ba5e3)[_0xe486('0x2c')](function(_0x22c5d2){_0x70e1bb[_0xe486('0x24')]=_0x22c5d2;if(_0x1c6d22['query'][_0xe486('0x46')]){_0x2fc3a7['include']=[{'all':!![]}];}return db[_0xe486('0x45')][_0xe486('0x47')](_0x2fc3a7);})['then'](function(_0x312a3a){_0x70e1bb[_0xe486('0x48')]=_0x312a3a;return _0x70e1bb;})[_0xe486('0x2c')](respondWithFilteredResult(_0x22a1c9,_0x2fc3a7))[_0xe486('0x49')](handleError(_0x22a1c9,null));};exports[_0xe486('0x4a')]=function(_0x9d6953,_0x5c4c9c){var _0x20b6b5={'raw':![],'where':{'id':_0x9d6953['params']['id']}},_0x45c705={};_0x45c705[_0xe486('0x35')]=_['keys'](db[_0xe486('0x45')][_0xe486('0x31')]);_0x45c705['query']=_[_0xe486('0x38')](_0x9d6953[_0xe486('0x37')]);_0x45c705[_0xe486('0x39')]=_['intersection'](_0x45c705[_0xe486('0x35')],_0x45c705[_0xe486('0x37')]);_0x20b6b5[_0xe486('0x3a')]=_[_0xe486('0x4b')](_0x45c705['model'],qs[_0xe486('0x3b')](_0x9d6953[_0xe486('0x37')][_0xe486('0x3b')]));_0x20b6b5[_0xe486('0x3a')]=_0x20b6b5[_0xe486('0x3a')][_0xe486('0x3c')]?_0x20b6b5[_0xe486('0x3a')]:_0x45c705['model'];if(_0x9d6953[_0xe486('0x37')][_0xe486('0x46')]){_0x20b6b5['include']=[{'all':!![]}];}_0x20b6b5=_[_0xe486('0x43')]({},_0x20b6b5,_0x9d6953[_0xe486('0x44')]);return db['UserProfile'][_0xe486('0x4c')](_0x20b6b5)[_0xe486('0x2c')](handleEntityNotFound(_0x5c4c9c,null))[_0xe486('0x2c')](respondWithResult(_0x5c4c9c,null))[_0xe486('0x49')](handleError(_0x5c4c9c,null));};exports[_0xe486('0x4d')]=function(_0x10b115,_0x43f2da){return db['UserProfile'][_0xe486('0x4d')](_0x10b115[_0xe486('0x4e')],{})['then'](respondWithResult(_0x43f2da,0xc9))[_0xe486('0x49')](handleError(_0x43f2da,null));};exports[_0xe486('0x4f')]=function(_0x442b16,_0x2dde37){var _0x3f1676={'where':{'id':_0x442b16['params']['id']}},_0x441d77={};_0x441d77[_0xe486('0x35')]=_[_0xe486('0x38')](db['UserProfile'][_0xe486('0x31')]);_0x3f1676[_0xe486('0x3a')]=_[_0xe486('0x4b')](_0x441d77[_0xe486('0x35')],qs[_0xe486('0x3b')](_0x442b16[_0xe486('0x37')][_0xe486('0x3b')]));_0x3f1676[_0xe486('0x3a')]=_0x3f1676[_0xe486('0x3a')][_0xe486('0x3c')]?_0x3f1676['attributes']:_0x441d77[_0xe486('0x35')];if(_0x442b16[_0xe486('0x37')][_0xe486('0x46')]){_0x3f1676[_0xe486('0x50')]=[{'all':!![]}];}_0x3f1676=_[_0xe486('0x43')]({},_0x3f1676,_0x442b16[_0xe486('0x44')]);return db['UserProfile'][_0xe486('0x4c')](_0x3f1676)[_0xe486('0x2c')](handleEntityNotFound(_0x2dde37,null))['then'](function(_0x31e57a){if(_0x31e57a){var _0x4de708=_0x31e57a['get']({'plain':!![]});_0x4de708=qs[_0xe486('0x51')](_0x4de708,['id',_0xe486('0x52'),_0xe486('0x53'),'crudPermissions']);_0x442b16[_0xe486('0x4e')]=_['omit'](_0x442b16[_0xe486('0x4e')],['id','createdAt',_0xe486('0x53')]);return db['sequelize']['transaction'](function(_0x5c05be){return db[_0xe486('0x45')][_0xe486('0x4d')](_[_0xe486('0x43')](_0x4de708,_0x442b16[_0xe486('0x4e')]),{'include':_0x442b16[_0xe486('0x37')][_0xe486('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x5c05be})['then'](function(_0x54ef31){var _0x239cfa=_0x54ef31['get']({'plain':!![]});return db[_0xe486('0x54')][_0xe486('0x47')]({'where':{'userProfileId':_0x442b16[_0xe486('0x55')]['id']},'raw':!![]})['then'](function(_0x589d6a){if(_0x589d6a){return BPromise[_0xe486('0x56')](_0x589d6a,function(_0xf9ad81){return new BPromise(function(_0x265b6d,_0x23d15e){if(_0xf9ad81[_0xe486('0x57')]===null||_0xf9ad81[_0xe486('0x57')]===0x1)_0x265b6d(null);return db[_0xe486('0x58')][_0xe486('0x47')]({'where':{'sectionId':_0xf9ad81['id']},'raw':!![]})[_0xe486('0x2c')](function(_0x53148b){var _0x483b7b=_[_0xe486('0x36')](_0x53148b,function(_0x965c0c){return qs[_0xe486('0x51')](_0x965c0c,['id',_0xe486('0x52'),_0xe486('0x53'),_0xe486('0x59')]);});_0x265b6d(_0x483b7b);})['catch'](function(_0x5c25ea){_0x23d15e(_0x5c25ea);});})[_0xe486('0x2c')](function(_0xb9b391){var _0x35b14a=qs[_0xe486('0x51')](_0xf9ad81,['id',_0xe486('0x52'),_0xe486('0x53')]);_0x35b14a['userProfileId']=_0x239cfa['id'];if(_0xb9b391)_0x35b14a[_0xe486('0x5a')]=_0xb9b391;return _0x35b14a;})[_0xe486('0x2c')](function(_0x3c88fe){return db[_0xe486('0x54')]['create'](_0x3c88fe,{'include':[{'model':db[_0xe486('0x58')],'as':_0xe486('0x5a')}],'raw':!![],'transaction':_0x5c05be});});})['then'](function(){return _0x239cfa;});}});});});}})[_0xe486('0x2c')](respondWithResult(_0x2dde37,0xc9))[_0xe486('0x49')](handleError(_0x2dde37,null));};exports[_0xe486('0x2a')]=function(_0x14bfd9,_0x4feeb5){if(_0x14bfd9[_0xe486('0x4e')]['id']){delete _0x14bfd9[_0xe486('0x4e')]['id'];}return db[_0xe486('0x45')][_0xe486('0x4c')]({'where':{'id':_0x14bfd9['params']['id']}})[_0xe486('0x2c')](handleEntityNotFound(_0x4feeb5,null))[_0xe486('0x2c')](saveUpdates(_0x14bfd9[_0xe486('0x4e')],null))[_0xe486('0x2c')](respondWithResult(_0x4feeb5,null))[_0xe486('0x49')](handleError(_0x4feeb5,null));};exports[_0xe486('0x2b')]=function(_0x448ce3,_0x38fa48){return db['UserProfile'][_0xe486('0x4c')]({'where':{'id':_0x448ce3[_0xe486('0x55')]['id']}})[_0xe486('0x2c')](handleEntityNotFound(_0x38fa48,null))[_0xe486('0x2c')](removeEntity(_0x38fa48,null))[_0xe486('0x49')](handleError(_0x38fa48,null));};exports[_0xe486('0x5b')]=function(_0x5e6162,_0x5022e9){return db[_0xe486('0x45')]['describe']()[_0xe486('0x2c')](respondWithResult(_0x5022e9,null))[_0xe486('0x49')](handleError(_0x5022e9,null));};exports[_0xe486('0x5c')]=function(_0x1dfdc0,_0x2bec02){var _0x22b50d=_0x1dfdc0[_0xe486('0x4e')];return db[_0xe486('0x45')][_0xe486('0x4c')]({'where':{'id':_0x1dfdc0[_0xe486('0x55')]['id']}})[_0xe486('0x2c')](handleEntityNotFound(_0x2bec02,null))[_0xe486('0x2c')](function(_0x437b23){if(_0x437b23){return db[_0xe486('0x5d')][_0xe486('0x5e')](function(_0x4b2c50){return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x1dfdc0[_0xe486('0x55')]['id'],'sectionId':_[_0xe486('0x36')](_0x22b50d,function(_0x52af18){return _0x52af18[_0xe486('0x59')];})},'transaction':_0x4b2c50})[_0xe486('0x2c')](function(){var _0x5a80a5=_['map'](_0x22b50d,function(_0x289718){_0x289718[_0xe486('0x5f')]=_0x1dfdc0['params']['id'];return _0x289718;});var _0x589e40=[];return BPromise[_0xe486('0x56')](_0x5a80a5,function(_0x207f02){return db[_0xe486('0x54')][_0xe486('0x4d')](_0x207f02,{'include':[{'model':db['UserProfileResource'],'as':_0xe486('0x5a')}],'raw':!![],'transaction':_0x4b2c50})[_0xe486('0x2c')](function(_0x92cf4e){_0x589e40[_0xe486('0x60')](_0x92cf4e[_0xe486('0x61')]({'plain':!![]}));});})['then'](function(){return _0x589e40;});});});}})[_0xe486('0x2c')](function(_0x3efca1){return _0x3efca1;})[_0xe486('0x2c')](respondWithResult(_0x2bec02,null))['catch'](handleError(_0x2bec02,null));};exports[_0xe486('0x62')]=function(_0x41628e,_0x5b61ef){var _0x429fce;return db[_0xe486('0x45')]['find']({'where':{'id':_0x41628e['params']['id']},'attributes':['id',_0xe486('0x2f')]})[_0xe486('0x2c')](handleEntityNotFound(_0x5b61ef,null))[_0xe486('0x2c')](function(_0x1a0922){if(_0x1a0922){_0x429fce=_0x1a0922;return db[_0xe486('0x54')][_0xe486('0x2b')]({'where':{'userProfileId':_0x41628e[_0xe486('0x55')]['id'],'sectionId':_0x41628e[_0xe486('0x37')]['ids']}});}})[_0xe486('0x2c')](function(){return _0x429fce;})['then'](respondWithStatusCode(_0x5b61ef,null))[_0xe486('0x49')](handleError(_0x5b61ef,null));};exports['getSections']=function(_0x20ec3d,_0x331556){var _0x193204=[];var _0x403cb1=[];return db[_0xe486('0x54')]['findAll']({'where':{'userProfileId':_0x20ec3d[_0xe486('0x55')]['id']},'raw':!![]})[_0xe486('0x2c')](function(_0x9f6ddd){_0x193204=_[_0xe486('0x63')](_0x9f6ddd,function(_0x5d2e4f){return _0x5d2e4f[_0xe486('0x64')]===0x1||_[_0xe486('0x65')]([0x3eb,0x709],_0x5d2e4f['sectionId']);});if(!_['isEmpty'](_0x193204)){return _['map'](_0x193204,function(_0x36aa58){return _0x36aa58['sectionId'];});}else{return;}})[_0xe486('0x2c')](function(_0x11232a){if(_0x11232a)_0x403cb1=_0x11232a;if(_[_0xe486('0x65')](_0x403cb1,0x64)){var _0x5a1e5e=_[_0xe486('0x4c')](_0x193204,{'sectionId':0x64});return hasDefaultDashboard(_0x5a1e5e)[_0xe486('0x2c')](function(_0x182f14){return _[_0xe486('0x36')](_0x193204,function(_0x4ea43e){if(_0x4ea43e[_0xe486('0x59')]===0x64){_0x4ea43e[_0xe486('0x66')]=_0x182f14;}return _0x4ea43e;});});}else{return;}})[_0xe486('0x2c')](function(_0x394eca){if(_0x394eca)_0x193204=_0x394eca;if(_[_0xe486('0x65')](_0x403cb1,0x3eb)){var _0x6479c1=_[_0xe486('0x4c')](_0x193204,{'sectionId':0x3eb});return getCustomDashboards(_0x6479c1)['then'](function(_0x2e38bf){return _[_0xe486('0x36')](_0x193204,function(_0x189b36){if(_0x6479c1[_0xe486('0x64')]){if(_0x189b36[_0xe486('0x59')]===0x3eb){_0x189b36['subsections']=_0x2e38bf;}}else{if(_0x189b36['sectionId']===0x64){_0x189b36[_0xe486('0x66')]=_0x2e38bf;}}return _0x189b36;});});}else{return;}})[_0xe486('0x2c')](function(_0x171aaf){if(_0x171aaf)_0x193204=_0x171aaf;if(_[_0xe486('0x65')](_0x403cb1,0x709)){var _0xd95c01=_[_0xe486('0x4c')](_0x193204,{'sectionId':0x709});return getPlugins(_0xd95c01)[_0xe486('0x2c')](function(_0x54ada9){if(_0xd95c01[_0xe486('0x64')]){return _[_0xe486('0x36')](_0x193204,function(_0x2d0ad3){if(_0x2d0ad3['sectionId']===0x709){_0x2d0ad3[_0xe486('0x66')]=_0x54ada9;}return _0x2d0ad3;});}else{var _0x4664fe={'sectionId':0x76c,'enabled':0x1,'subsections':_0x54ada9};var _0x3f9e70=_[_0xe486('0x36')](_0x193204);_0x3f9e70[_0xe486('0x60')](_0x4664fe);return _0x3f9e70;}});}else{return;}})[_0xe486('0x2c')](function(_0x187b6f){if(_0x187b6f)_0x193204=_0x187b6f;return _[_0xe486('0x63')](_0x193204,[_0xe486('0x64'),0x1]);})[_0xe486('0x2c')](respondWithResult(_0x331556,null))[_0xe486('0x49')](handleError(_0x331556,null));};function hasDefaultDashboard(_0x1f008f){var _0x465e36=[0x65];return new BPromise(function(_0x1f6a53,_0x26f824){try{if(_0x1f008f['autoAssociation']){_0x1f6a53(_0x465e36);}else{return db[_0xe486('0x58')][_0xe486('0x67')]({'where':{'sectionId':_0x1f008f['id']},'raw':!![]})[_0xe486('0x2c')](function(_0x433360){_0x433360?_0x1f6a53(_0x465e36):_0x1f6a53();});}}catch(_0x12f49d){_0x26f824(_0x12f49d);}});}function getCustomDashboards(_0x2c288a){var _0x129b63=[];return new BPromise(function(_0x3f79c9,_0x4084e4){try{if(_0x2c288a[_0xe486('0x57')]){return db[_0xe486('0x68')][_0xe486('0x47')]({'raw':!![]})[_0xe486('0x2c')](function(_0x2fd61f){_0x2fd61f[_0xe486('0x69')](function(_0x257332){_0x129b63[_0xe486('0x60')](_0x257332['id']+0x1869f);});_0x3f79c9(_0x129b63);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x2c288a['id']},'raw':!![]})['then'](function(_0x312663){_0x312663[_0xe486('0x69')](function(_0x4949f2){_0x129b63[_0xe486('0x60')](_0x4949f2[_0xe486('0x6a')]+0x1869f);});_0x3f79c9(_0x129b63);});}}catch(_0x56f4cc){_0x4084e4(_0x56f4cc);}});}function getPlugins(_0x16d182){var _0x121e4b=[];return new BPromise(function(_0x2b16ed,_0xfdaa59){try{if(_0x16d182[_0xe486('0x57')]){return db[_0xe486('0x6b')][_0xe486('0x47')]({'raw':!![]})['then'](function(_0x147ab0){_0x147ab0[_0xe486('0x69')](function(_0x10678b){_0x121e4b['push'](_0x10678b['id']+0x15b38);});_0x2b16ed(_0x121e4b);});}else{return db[_0xe486('0x58')][_0xe486('0x47')]({'where':{'sectionId':_0x16d182['id']},'raw':!![]})[_0xe486('0x2c')](function(_0x3e2a12){_0x3e2a12['forEach'](function(_0x14bd14){_0x121e4b[_0xe486('0x60')](_0x14bd14[_0xe486('0x6a')]+0x15b38);});_0x2b16ed(_0x121e4b);});}}catch(_0x13b8ec){_0xfdaa59(_0x13b8ec);}});}exports[_0xe486('0x6c')]=function(_0x307492,_0x3b199a){return db[_0xe486('0x45')][_0xe486('0x4c')]({'where':{'id':_0x307492[_0xe486('0x55')]['id']}})[_0xe486('0x2c')](handleEntityNotFound(_0x3b199a,null))[_0xe486('0x2c')](function(_0x565485){if(_0x565485){return db[_0xe486('0x5d')][_0xe486('0x5e')](function(_0x1e7419){return db['UserProfileSection'][_0xe486('0x47')]({'where':{'userProfileId':_0x307492[_0xe486('0x55')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x276748){if(_0x276748){return db[_0xe486('0x54')][_0xe486('0x2b')]({'where':{'userProfileId':_0x307492[_0xe486('0x55')]['id'],'id':_[_0xe486('0x36')](_0x276748,function(_0x123f0e){return _0x123f0e['id'];})},'transaction':_0x1e7419});}})['then'](function(_0x1655a0){var _0x4e7029=_[_0xe486('0x36')](_0x307492[_0xe486('0x4e')],function(_0x3072e8){_0x3072e8['userProfileId']=_0x307492[_0xe486('0x55')]['id'];return _0x3072e8;});return db[_0xe486('0x54')][_0xe486('0x6d')](_0x4e7029,{'raw':!![],'transaction':_0x1e7419});})[_0xe486('0x2c')](function(_0x19e01a){var _0x397b2b=_[_0xe486('0x63')](_[_0xe486('0x36')](_0x19e01a,function(_0x39bb93){return _0x39bb93[_0xe486('0x61')]({'plain':!![]});}),{'includeAll':![]});if(_0x397b2b){return db[_0xe486('0x54')][_0xe486('0x47')]({'where':{'userProfileId':_0x307492[_0xe486('0x55')]['id'],'sectionId':_[_0xe486('0x36')](_0x397b2b,function(_0x45d63d){return _0x45d63d[_0xe486('0x59')];})},'attributes':['id',_0xe486('0x59')],'raw':!![]})[_0xe486('0x2c')](function(_0x568315){var _0x22d5e6=_[_0xe486('0x36')](_0x307492['body'],function(_0x209e75){_0x209e75[_0xe486('0x5f')]=_0x307492[_0xe486('0x55')]['id'];return _0x209e75;});return db['UserProfileResource'][_0xe486('0x6d')](_0x22d5e6,{'raw':!![],'transaction':_0x1e7419});});}})['catch'](handleError(_0x3b199a,null));});}})[_0xe486('0x2c')](function(_0x4537e3){var _0x5957e3=_[_0xe486('0x36')](_0x4537e3,function(_0x3fcd3d){return _0x3fcd3d['get']({'plain':!![]});});})[_0xe486('0x2c')](respondWithResult(_0x3b199a,null))[_0xe486('0x49')](handleError(_0x3b199a,null));};exports['removeResources']=function(_0x1394e5,_0x20e28c,_0x55d569){return db[_0xe486('0x45')][_0xe486('0x4c')]({'where':{'id':_0x1394e5[_0xe486('0x55')]['id']}})['then'](handleEntityNotFound(_0x20e28c,null))[_0xe486('0x2c')](function(_0xc595c0){if(_0xc595c0){return _0xc595c0[_0xe486('0x6e')](_0x1394e5['query'][_0xe486('0x6f')]);}})[_0xe486('0x2c')](respondWithStatusCode(_0x20e28c,null))[_0xe486('0x49')](handleError(_0x20e28c,null));};exports[_0xe486('0x70')]=function(_0x1ef654,_0x2c583f){var _0x4ebc75={};if(!_0x1ef654[_0xe486('0x37')]['section'])throw new Error(_0xe486('0x71'));if(!_0x1ef654['query']['hasOwnProperty'](_0xe486('0x3d'))){_0x4ebc75['limit']=qs[_0xe486('0x23')](_0x1ef654[_0xe486('0x37')][_0xe486('0x23')]);_0x4ebc75[_0xe486('0x25')]=qs[_0xe486('0x25')](_0x1ef654[_0xe486('0x37')][_0xe486('0x25')]);}return db[_0xe486('0x45')][_0xe486('0x4c')]({'where':{'id':_0x1ef654['params']['id']}})[_0xe486('0x2c')](function(_0x5b6e98){if(!_0x5b6e98)throw new Error(_0xe486('0x72')+_0x1ef654[_0xe486('0x55')]['id']);return db[_0xe486('0x45')][_0xe486('0x70')](_0x1ef654);})[_0xe486('0x2c')](respondWithFilteredResult(_0x2c583f,_0x4ebc75))[_0xe486('0x49')](handleError(_0x2c583f,null));};
\ No newline at end of file
index be4596c..520f639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf562=['save','update','remove','emit','hook','exports','events','../../mysqldb','UserProfile','setMaxListeners'];(function(_0x584b37,_0x9717f){var _0x2c38c3=function(_0x47819d){while(--_0x47819d){_0x584b37['push'](_0x584b37['shift']());}};_0x2c38c3(++_0x9717f);}(_0xf562,0x100));var _0x2f56=function(_0xa92c7c,_0xee1c51){_0xa92c7c=_0xa92c7c-0x0;var _0x5ba7e7=_0xf562[_0xa92c7c];return _0x5ba7e7;};'use strict';var EventEmitter=require(_0x2f56('0x0'));var UserProfile=require(_0x2f56('0x1'))['db'][_0x2f56('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x2f56('0x3')](0x0);var events={'afterCreate':_0x2f56('0x4'),'afterUpdate':_0x2f56('0x5'),'afterDestroy':_0x2f56('0x6')};function emitEvent(_0x217301){return function(_0x38a249,_0x55a78f,_0x29e08d){UserProfileEvents['emit'](_0x217301+':'+_0x38a249['id'],_0x38a249);UserProfileEvents[_0x2f56('0x7')](_0x217301,_0x38a249);_0x29e08d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x2f56('0x8')](e,emitEvent(event));}}module[_0x2f56('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0xe714=['hasOwnProperty','hook','events','UserProfile','setMaxListeners','save','update','emit'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xe714,0xe2));var _0x4e71=function(_0x1355bf,_0x586beb){_0x1355bf=_0x1355bf-0x0;var _0xf4bbd3=_0xe714[_0x1355bf];return _0xf4bbd3;};'use strict';var EventEmitter=require(_0x4e71('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x4e71('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x4e71('0x2')](0x0);var events={'afterCreate':_0x4e71('0x3'),'afterUpdate':_0x4e71('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2ae210){return function(_0x59a685,_0xad5224,_0x19e056){UserProfileEvents[_0x4e71('0x5')](_0x2ae210+':'+_0x59a685['id'],_0x59a685);UserProfileEvents[_0x4e71('0x5')](_0x2ae210,_0x59a685);_0x19e056(null);};}for(var e in events){if(events[_0x4e71('0x6')](e)){var event=events[e];UserProfile[_0x4e71('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 63f0c32..52a25ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c4=['Dashboard','Interval','pauses','Pause','scheduler','Schedule','tags','Tag','templates','Template','triggers','Trigger','trunks','variables','Variable','plugins','Plugin','extractedreports','Reports','reportId','AnalyticMetric','charAt','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','ignore','union','autoAssociation','all','rawAttributes','keys','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','filters','pick','merge','VIRTUAL','foreignKey','forEach','includeAll','reportType','default','DefaultReports','CustomReports','count','rows','Tags','tag','ThroughTags','color','include','openTabs','true','chat','sms','dataValues','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','filter','field','value','then','associatedResources','map','catch','model','name','resolve','findAll','AnalyticExtractedReport','resourceId','type','toLowerCase','childModel','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxAccount','inboundroutes','internalroutes','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','Agents','membername','User','role','Telephones','telephone','VoiceQueue','inbound','QueueCampaigns','queue','outbound','VoiceChanSpy','voiceprefixes','VoicePrefix','Campaign','mailqueues','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappAccount','teams','Team','queuecampaigns','users','agents','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','customdashboards'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x82c4,0x1ca));var _0x482c=function(_0x1dda8c,_0x447be5){_0x1dda8c=_0x1dda8c-0x0;var _0x35becd=_0x82c4[_0x1dda8c];return _0x35becd;};'use strict';var _=require(_0x482c('0x0'));var attributes=require(_0x482c('0x1'));var qs=require(_0x482c('0x2'));var squel=require(_0x482c('0x3'));module[_0x482c('0x4')]=function(_0x69706f){var _0x863ea9=_0x69706f['models'];function _0x16b0f8(_0x5f4dee,_0x4556c8){return new Promise(function(_0x47edb6,_0x477cf4){if(!_0x4556c8)return _0x47edb6(null);var _0x5d7c76=_0x4556c8[_0x482c('0x5')]?{[_0x4556c8[_0x482c('0x5')][_0x482c('0x6')]]:_0x4556c8[_0x482c('0x5')][_0x482c('0x7')]}:undefined;return _0x863ea9[_0x5f4dee]['findAll']({'where':_0x5d7c76,'raw':!![]})[_0x482c('0x8')](function(_0x135cc1){_0x4556c8[_0x482c('0x9')]=_[_0x482c('0xa')](_0x135cc1,'id');_0x47edb6(_0x4556c8);})[_0x482c('0xb')](function(_0x17e233){_0x477cf4(_0x17e233);});});}function _0x51967f(_0x4df2a1,_0x2ff3a2){return new Promise(function(_0x1ed3ff,_0x5e3eea){var _0x3f8ed2=_0x4df2a1[_0x482c('0x5')]?{[_0x4df2a1[_0x482c('0x5')]['field']]:_0x4df2a1['filter'][_0x482c('0x7')]}:undefined;return _0x863ea9[_0x4df2a1[_0x482c('0xc')]]['findAll']({'where':_0x3f8ed2,'raw':!![]})['then'](function(_0x14452b){_0x2ff3a2[_0x482c('0x9')]=_[_0x482c('0xa')](_0x14452b,function(_0x3dfbc8){return _0x3dfbc8[_0x482c('0xd')];});_0x1ed3ff(_0x2ff3a2);})[_0x482c('0xb')](function(_0x3beedb){_0x5e3eea(_0x3beedb);});});}function _0xf65563(_0x3fc79c,_0x1758fb,_0x363403){if(!_0x1758fb)return Promise[_0x482c('0xe')](null);return new Promise(function(_0x4bdf15,_0x244bb9){return _0x863ea9['UserProfileResource'][_0x482c('0xf')]({'where':{'sectionId':_0x1758fb['id']},'raw':!![]})[_0x482c('0x8')](function(_0x4af05a){if(_0x3fc79c['field']&&_0x3fc79c[_0x482c('0x6')]!=='id'){_0x1758fb['associatedResources']=_[_0x482c('0xa')](_0x4af05a,function(_0x4784a2){return _0x4784a2[_0x3fc79c[_0x482c('0x6')]];});}else{if(_0x363403===_0x482c('0x10')){_0x1758fb['associatedResources']=_[_0x482c('0xa')](_0x4af05a,function(_0x22eec6){return{'id':_0x22eec6[_0x482c('0x11')],'type':_0x22eec6[_0x482c('0x12')]};});}else{_0x1758fb[_0x482c('0x9')]=_['map'](_0x4af05a,function(_0x4afcd9){return _0x4afcd9[_0x482c('0x11')];});}}_0x4bdf15(_0x1758fb);})[_0x482c('0xb')](function(_0x180feb){_0x244bb9(_0x180feb);});});}function _0x5c4e9c(_0x3d5490,_0x579d2f){var _0x2f3f96={'parentSections':[]};switch(_0x3d5490[_0x482c('0x13')]()){case'squareprojects':_0x2f3f96[_0x482c('0x14')]='SquareProject';break;case'odbc':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x15');break;case _0x482c('0x16'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x17');_0x2f3f96[_0x482c('0x18')]=[{'name':_0x482c('0x19'),'field':'name','foreignKey':_0x482c('0x1a')}];break;case _0x482c('0x1b'):_0x2f3f96['childModel']=_0x482c('0x1c');break;case'contacts':_0x2f3f96['childModel']=_0x482c('0x1d');_0x2f3f96['parentSections']=[{'name':_0x482c('0x1e'),'field':'id','foreignKey':_0x482c('0x1f')}];break;case _0x482c('0x20'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x21');break;case _0x482c('0x22'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x23');break;case _0x482c('0x24'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x25');break;case _0x482c('0x26'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x27');break;case _0x482c('0x28'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x29');break;case _0x482c('0x2a'):_0x2f3f96['childModel']='FaxQueue';break;case'faxaccounts':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x2b');break;case _0x482c('0x2c'):case _0x482c('0x2d'):case'outboundroutes':_0x2f3f96[_0x482c('0x14')]='VoiceExtension';break;case _0x482c('0x2e'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x2f');break;case _0x482c('0x30'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x31');break;case _0x482c('0x32'):_0x2f3f96[_0x482c('0x14')]='VoiceRecording';_0x2f3f96['parentSections']=[{'name':_0x482c('0x33'),'field':'name','foreignKey':_0x482c('0x34'),'model':_0x482c('0x35'),'filter':{'field':_0x482c('0x36'),'value':['agent']}},{'name':_0x482c('0x37'),'field':_0x482c('0xd'),'foreignKey':_0x482c('0x34'),'model':_0x482c('0x35'),'filter':{'field':'role','value':[_0x482c('0x38')]}},{'name':'VoiceQueues','field':_0x482c('0xd'),'foreignKey':'queue','model':_0x482c('0x39'),'filter':{'field':'type','value':[_0x482c('0x3a')]}},{'name':_0x482c('0x3b'),'field':'name','foreignKey':_0x482c('0x3c'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x482c('0x3d')]}}];break;case'musiconholds':_0x2f3f96['childModel']='VoiceMusicOnHold';break;case'chanspies':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x3e');break;case _0x482c('0x3f'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x40');break;case'ivrcampaigns':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x41');break;case _0x482c('0x42'):_0x2f3f96[_0x482c('0x14')]='MailQueue';break;case'mailaccounts':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x43');break;case _0x482c('0x44'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x45');break;case _0x482c('0x46'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x47');break;case _0x482c('0x48'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x49');break;case'smsqueues':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x4a');break;case _0x482c('0x4b'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x4c');break;case _0x482c('0x4d'):_0x2f3f96[_0x482c('0x14')]='WhatsappQueue';break;case'whatsappaccounts':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x4e');break;case _0x482c('0x4f'):_0x2f3f96['childModel']=_0x482c('0x50');break;case'voicequeues':case _0x482c('0x51'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x39');if(_0x579d2f){_0x2f3f96[_0x482c('0x18')]=[{'name':'VoiceQueues'},{'name':_0x482c('0x3b')}];}break;case _0x482c('0x52'):case _0x482c('0x53'):case'telephones':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x35');if(_0x579d2f){_0x2f3f96[_0x482c('0x18')]=[{'name':'Users','filter':{'field':'role','value':['admin','user']},'ignore':!![]},{'name':'Agents'},{'name':'Telephones'}];}break;case _0x482c('0x54'):_0x2f3f96['childModel']=_0x482c('0x55');break;case _0x482c('0x56'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x57');break;case _0x482c('0x58'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x59');break;case _0x482c('0x5a'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x5b');break;case _0x482c('0x5c'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x5d');break;case _0x482c('0x5e'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x5f');break;case _0x482c('0x60'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x35');break;case'cannedanswers':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x61');break;case'dispositions':_0x2f3f96[_0x482c('0x14')]=_0x482c('0x62');break;case _0x482c('0x63'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x64');break;case'intervals':_0x2f3f96['childModel']=_0x482c('0x65');break;case _0x482c('0x66'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x67');break;case _0x482c('0x68'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x69');break;case'sounds':_0x2f3f96['childModel']='Sound';break;case _0x482c('0x6a'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x6b');break;case _0x482c('0x6c'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x6d');break;case _0x482c('0x6e'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x6f');break;case _0x482c('0x70'):_0x2f3f96[_0x482c('0x14')]='Trunk';break;case _0x482c('0x71'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x72');break;case _0x482c('0x73'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x74');break;case _0x482c('0x75'):_0x2f3f96[_0x482c('0x14')]=_0x482c('0x10');_0x2f3f96[_0x482c('0x18')]=[{'name':_0x482c('0x76'),'field':'id','foreignKey':_0x482c('0x77')}];break;case'metrics':_0x2f3f96['childModel']=_0x482c('0x78');break;}return _0x2f3f96;}function _0xe52d69(_0x447cf3,_0x5a75c1){var _0xa5ffff=_0x447cf3[_0x482c('0x79')](0x0)['toUpperCase']()+_0x447cf3[_0x482c('0x7a')](0x1);var _0x732d17={'type':_0x863ea9[_0x482c('0x7b')][_0x482c('0x7c')][_0x482c('0x7d')],'raw':!![]};return new Promise(function(_0x4fcc6a,_0x2c517e){var _0x364597=squel[_0x482c('0x7e')]()[_0x482c('0x6')](_0x482c('0x7f')+_0xa5ffff+_0x482c('0x80'),'id')['field'](_0x482c('0x81'))['from'](_0x482c('0x82')+_0x447cf3+_0x482c('0x83'),'ui')[_0x482c('0x84')](_0x482c('0x85'),_0x5a75c1['id']);return _0x863ea9[_0x482c('0x86')][_0x482c('0x87')](_0x364597['toString'](),_0x732d17)[_0x482c('0x8')](function(_0x337a09){_0x5a75c1[_0xa5ffff+'OpenTabs']=_0x337a09;_0x4fcc6a(_0x337a09);})['catch'](function(_0x390c0a){_0x2c517e(_0x390c0a);});});}return _0x69706f[_0x482c('0x88')]('UserProfile',attributes,{'tableName':_0x482c('0x89'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x438402){var _0x1ca687={'raw':![],'where':{}};var _0x7e7be1={};var _0x495878={'count':0x0,'rows':[]};var _0x31a919=_0x438402[_0x482c('0x87')][_0x482c('0x8a')];var _0x3d67f7=_0x438402[_0x482c('0x87')][_0x482c('0x8b')]||![];var _0x574068=_0x5c4e9c(_0x31a919,_0x3d67f7);if(!_0x574068['childModel'])throw new Error(_0x482c('0x8c')+_0x31a919+'\x27');var _0x254f02=[{'name':_0x31a919}];if(!_[_0x482c('0x8d')](_0x574068['parentSections']))_0x254f02=_0x574068[_0x482c('0x18')];var _0x2b7551=[];for(var _0x48724c=0x0;_0x48724c<_0x254f02[_0x482c('0x8e')];_0x48724c++){_0x2b7551[_0x482c('0x8f')](_0x863ea9[_0x482c('0x90')][_0x482c('0x91')]({'where':{'userProfileId':_0x438402[_0x482c('0x92')]['id'],'name':_0x254f02[_0x48724c][_0x482c('0xd')]},'raw':!![]}));}return Promise['all'](_0x2b7551)['then'](function(_0x6d1e3c){var _0x2099f5=_['filter'](_0x6d1e3c,function(_0x5d11ce){return _0x5d11ce?_0x5d11ce:undefined;});var _0x2475e1=_[_0x482c('0x5')](_0x254f02,[_0x482c('0x93'),!![]]);var _0x55db7a=_['isEmpty'](_0x2099f5)&&_['isEmpty'](_0x2475e1)?null:_[_0x482c('0x94')](_0x2475e1,_0x2099f5);if(!_0x55db7a)return null;var _0x28e00c=[];for(var _0x43aa51=0x0;_0x43aa51<_0x55db7a[_0x482c('0x8e')];_0x43aa51++){var _0x2333da=_[_0x482c('0x91')](_0x254f02,function(_0x4839f2){return _0x55db7a[_0x43aa51]?_0x4839f2['name']===_0x55db7a[_0x43aa51][_0x482c('0xd')]:null;});if(_0x2333da){if(_0x55db7a[_0x43aa51][_0x482c('0x93')]){_0x28e00c[_0x482c('0x8f')](_0x16b0f8(_0x574068[_0x482c('0x14')],_0x55db7a[_0x43aa51]));}else{if(!_0x55db7a[_0x43aa51][_0x482c('0x95')]){_0x28e00c[_0x482c('0x8f')](_0xf65563(_0x2333da,_0x55db7a[_0x43aa51],_0x574068[_0x482c('0x14')]));}else{if(_0x2333da[_0x482c('0xc')]){_0x28e00c[_0x482c('0x8f')](_0x51967f(_0x2333da,_0x55db7a[_0x43aa51]));}}}}}return Promise[_0x482c('0x96')](_0x28e00c);})[_0x482c('0x8')](function(_0x208d8d){var _0x5c3900=_0x208d8d;var _0x20f5cb=null;if(_0x5c3900){_0x20f5cb=_0x5c3900[_0x482c('0x8e')]===0x1?_0x5c3900[0x0]:null;}if(!_0x20f5cb&&!_0x5c3900)return _0x495878;var _0x2d5ca0=_0x863ea9[_0x574068['childModel']][_0x482c('0x97')];_0x7e7be1[_0x482c('0xc')]=_[_0x482c('0x98')](_0x2d5ca0);_0x7e7be1['query']=_[_0x482c('0x98')](_0x438402['query']);_0x7e7be1['filters']=_[_0x482c('0x99')](_0x7e7be1[_0x482c('0xc')],_0x7e7be1[_0x482c('0x87')]);_0x1ca687[_0x482c('0x9a')]=_[_0x482c('0x99')](_0x7e7be1[_0x482c('0xc')],qs[_0x482c('0x9b')](_0x438402['query'][_0x482c('0x9b')]));_0x1ca687[_0x482c('0x9a')]=_0x1ca687['attributes'][_0x482c('0x8e')]?_0x1ca687['attributes']:_0x7e7be1['model'];if(!_0x438402['query'][_0x482c('0x9c')]('nolimit')){_0x1ca687['limit']=qs[_0x482c('0x9d')](_0x438402[_0x482c('0x87')]['limit']);_0x1ca687[_0x482c('0x9e')]=qs['offset'](_0x438402['query']['offset']);}_0x1ca687[_0x482c('0x9f')]=qs[_0x482c('0xa0')](_0x438402['query']['sort']);_0x1ca687['where']=qs[_0x482c('0xa1')](_[_0x482c('0xa2')](_0x438402[_0x482c('0x87')],_0x7e7be1['filters']));if(_0x438402['query'][_0x482c('0x5')]){_0x1ca687['where']=_[_0x482c('0xa3')](_0x1ca687[_0x482c('0x84')],{'$or':_['map'](_0x2d5ca0,function(_0x426e4a){if(_0x426e4a['type']['key']!==_0x482c('0xa4')){var _0x4d6926={};_0x4d6926[_0x426e4a[_0x482c('0x6')]]={'$like':'%'+_0x438402['query'][_0x482c('0x5')]+'%'};return _0x4d6926;}})});}var _0x4efe3c=[];var _0xad514c=null;var _0x14b6ba={};if(_0x20f5cb){_0xad514c=_[_0x482c('0x91')](_0x254f02,['name',_0x20f5cb[_0x482c('0xd')]]);if(_0xad514c[_0x482c('0x6')]){_0x14b6ba={};if(_0x574068[_0x482c('0x14')]==='AnalyticExtractedReport'){_0x14b6ba[_0xad514c[_0x482c('0xa5')]]=_[_0x482c('0xa')](_0x20f5cb[_0x482c('0x9')],'id');}else{_0x14b6ba[_0xad514c[_0x482c('0xa5')]]=_0x20f5cb[_0x482c('0x9')];}_0x4efe3c[_0x482c('0x8f')](_0x14b6ba);}else{_0x1ca687[_0x482c('0x84')]['id']=_0x20f5cb['associatedResources'];}}else{for(var _0x21b701=0x0;_0x21b701<_0x5c3900[_0x482c('0x8e')];_0x21b701++){_0xad514c=_[_0x482c('0x91')](_0x254f02,['name',_0x5c3900[_0x21b701]['name']]);if(_0xad514c['field']){_0x14b6ba={};_0x14b6ba[_0xad514c[_0x482c('0xa5')]]=_0x5c3900[_0x21b701]['associatedResources'];_0x4efe3c['push'](_0x14b6ba);}else{if(!_0x1ca687[_0x482c('0x84')]['id'])_0x1ca687['where']['id']=[];_0x5c3900[_0x21b701][_0x482c('0x9')][_0x482c('0xa6')](function(_0x17be77){_0x1ca687[_0x482c('0x84')]['id']['push'](_0x17be77);});}}}if(!_[_0x482c('0x8d')](_0x4efe3c)){_0x1ca687['where']=_[_0x482c('0xa3')](_0x1ca687[_0x482c('0x84')],{'$and':{'$or':_0x4efe3c}});}_0x1ca687=_[_0x482c('0xa3')]({},_0x1ca687,_0x438402['options']);if(_0x20f5cb&&!_0x20f5cb['autoAssociation']&&_0x574068[_0x482c('0x14')]===_0x482c('0x10')){if(_0x438402['query'][_0x482c('0xa7')]){_0x1ca687['include']=[{'all':!![]}];}return _0x863ea9[_0x574068[_0x482c('0x14')]][_0x482c('0xf')](_0x1ca687)[_0x482c('0x8')](function(_0x549dec){var _0x1f3a94=[];_0x549dec[_0x482c('0xa6')](function(_0x28f28b){var _0x573455;switch(_0x28f28b[_0x482c('0xa8')]){case _0x482c('0xa9'):_0x573455=_[_0x482c('0x91')](_0x20f5cb['associatedResources'],function(_0x4e9d79){return _0x4e9d79['id']===_0x28f28b[_0x482c('0x77')]&&_0x4e9d79[_0x482c('0x12')]===_0x482c('0xaa');});break;case'custom':_0x573455=_[_0x482c('0x91')](_0x20f5cb[_0x482c('0x9')],function(_0x5c49a9){return _0x5c49a9['id']===_0x28f28b[_0x482c('0x77')]&&_0x5c49a9['type']===_0x482c('0xab');});break;}if(_0x573455)_0x1f3a94[_0x482c('0x8f')](_0x28f28b);});_0x495878[_0x482c('0xac')]=_0x1f3a94[_0x482c('0x8e')];_0x495878[_0x482c('0xad')]=_0x1f3a94;return _0x495878;});}else{return _0x863ea9[_0x574068[_0x482c('0x14')]]['count']({'where':_0x1ca687['where']})[_0x482c('0x8')](function(_0x233926){_0x495878[_0x482c('0xac')]=_0x233926;if(_0x438402[_0x482c('0x87')][_0x482c('0xa7')]){if(_0x574068[_0x482c('0x14')]===_0x482c('0x1d')){_0x1ca687['include']=[{'model':_0x863ea9[_0x482c('0x6b')],'as':_0x482c('0xae'),'attributes':['id',_0x482c('0xd'),'color'],'required':_0x438402[_0x482c('0x87')][_0x482c('0xaf')]?!![]:![]},{'model':_0x863ea9[_0x482c('0x6b')],'as':_0x482c('0xb0'),'attributes':['id',_0x482c('0xd'),_0x482c('0xb1')],'through':_0x438402[_0x482c('0x87')]['tag']?{'attributes':[],'where':{'TagId':_0x438402[_0x482c('0x87')][_0x482c('0xaf')]||undefined}}:{},'required':_0x438402[_0x482c('0x87')]['tag']?!![]:![]}];}else{_0x1ca687[_0x482c('0xb2')]=[{'all':!![]}];}}return _0x863ea9[_0x574068['childModel']][_0x482c('0xf')](_0x1ca687);})[_0x482c('0x8')](function(_0x3e00e2){_0x495878[_0x482c('0xad')]=_0x3e00e2;if(_0x31a919==='Agents'&&_0x438402[_0x482c('0x87')][_0x482c('0xb3')]===_0x482c('0xb4')){var _0xf8ac35=[];for(var _0x5e3619=0x0;_0x5e3619<_0x495878[_0x482c('0xad')][_0x482c('0x8e')];_0x5e3619++){_0xf8ac35[_0x482c('0x8f')](_0xe52d69(_0x482c('0xb5'),_0x495878[_0x482c('0xad')][_0x5e3619]['dataValues']));_0xf8ac35[_0x482c('0x8f')](_0xe52d69(_0x482c('0xb6'),_0x495878[_0x482c('0xad')][_0x5e3619][_0x482c('0xb7')]));_0xf8ac35[_0x482c('0x8f')](_0xe52d69('fax',_0x495878[_0x482c('0xad')][_0x5e3619][_0x482c('0xb7')]));_0xf8ac35[_0x482c('0x8f')](_0xe52d69('mail',_0x495878[_0x482c('0xad')][_0x5e3619][_0x482c('0xb7')]));_0xf8ac35[_0x482c('0x8f')](_0xe52d69(_0x482c('0xb8'),_0x495878['rows'][_0x5e3619][_0x482c('0xb7')]));_0xf8ac35[_0x482c('0x8f')](_0xe52d69(_0x482c('0xb9'),_0x495878['rows'][_0x5e3619][_0x482c('0xb7')]));}return Promise[_0x482c('0x96')](_0xf8ac35)[_0x482c('0x8')](function(){return _0x495878;});}return _0x495878;});}});}}});};
\ No newline at end of file
+var _0xe3da=['queuecampaigns','agents','Users','admin','user','zendeskaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Interval','Schedule','sounds','Sound','tags','templates','Template','triggers','Trigger','trunks','Trunk','plugins','extractedreports','Reports','reportId','AnalyticMetric','toUpperCase','slice','select','ui.','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','OpenTabs','define','UserProfile','user_profiles','query','section','mergeResources','isEmpty','length','push','UserProfileSection','find','params','union','autoAssociation','all','rawAttributes','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','sort','filters','pick','key','VIRTUAL','foreignKey','forEach','merge','options','includeAll','include','default','custom','CustomReports','rows','count','Tag','color','tag','ThroughTags','openTabs','chat','dataValues','sms','mail','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','value','associatedResources','map','catch','model','findAll','then','name','resolve','UserProfileResource','field','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','ListId','lists','CmList','companies','CmCompany','globalcustomfields','ChatQueue','chatwebsites','ChatWebsite','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','voicemails','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','Telephones','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','Campaign','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','SmsQueue','smsaccounts','WhatsappQueue','whatsappaccounts','Team','voicequeues'];(function(_0x3187f8,_0x4727a3){var _0x532ecd=function(_0x40fdd4){while(--_0x40fdd4){_0x3187f8['push'](_0x3187f8['shift']());}};_0x532ecd(++_0x4727a3);}(_0xe3da,0x1cd));var _0xae3d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe3da[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xae3d('0x0'));var attributes=require(_0xae3d('0x1'));var qs=require(_0xae3d('0x2'));var squel=require(_0xae3d('0x3'));module[_0xae3d('0x4')]=function(_0x190f0d){var _0x109dca=_0x190f0d[_0xae3d('0x5')];function _0xb2dfd3(_0x22bacf,_0x1b9397){return new Promise(function(_0x26282d,_0xa9a1a){if(!_0x1b9397)return _0x26282d(null);var _0xa54808=_0x1b9397[_0xae3d('0x6')]?{[_0x1b9397[_0xae3d('0x6')]['field']]:_0x1b9397[_0xae3d('0x6')][_0xae3d('0x7')]}:undefined;return _0x109dca[_0x22bacf]['findAll']({'where':_0xa54808,'raw':!![]})['then'](function(_0x459592){_0x1b9397[_0xae3d('0x8')]=_[_0xae3d('0x9')](_0x459592,'id');_0x26282d(_0x1b9397);})[_0xae3d('0xa')](function(_0x2705b8){_0xa9a1a(_0x2705b8);});});}function _0x15d6da(_0x4bd4ec,_0x145762){return new Promise(function(_0x49fe58,_0xc7bd1c){var _0x434643=_0x4bd4ec[_0xae3d('0x6')]?{[_0x4bd4ec[_0xae3d('0x6')]['field']]:_0x4bd4ec[_0xae3d('0x6')][_0xae3d('0x7')]}:undefined;return _0x109dca[_0x4bd4ec[_0xae3d('0xb')]][_0xae3d('0xc')]({'where':_0x434643,'raw':!![]})[_0xae3d('0xd')](function(_0x430659){_0x145762[_0xae3d('0x8')]=_['map'](_0x430659,function(_0x1fb7a9){return _0x1fb7a9[_0xae3d('0xe')];});_0x49fe58(_0x145762);})[_0xae3d('0xa')](function(_0x230afb){_0xc7bd1c(_0x230afb);});});}function _0x192c13(_0x2da957,_0x585160,_0xe925fd){if(!_0x585160)return Promise[_0xae3d('0xf')](null);return new Promise(function(_0x2e31f1,_0x5303c2){return _0x109dca[_0xae3d('0x10')][_0xae3d('0xc')]({'where':{'sectionId':_0x585160['id']},'raw':!![]})['then'](function(_0x4d931d){if(_0x2da957[_0xae3d('0x11')]&&_0x2da957[_0xae3d('0x11')]!=='id'){_0x585160[_0xae3d('0x8')]=_[_0xae3d('0x9')](_0x4d931d,function(_0x39828a){return _0x39828a[_0x2da957['field']];});}else{if(_0xe925fd===_0xae3d('0x12')){_0x585160['associatedResources']=_[_0xae3d('0x9')](_0x4d931d,function(_0x2d138f){return{'id':_0x2d138f[_0xae3d('0x13')],'type':_0x2d138f[_0xae3d('0x14')]};});}else{_0x585160[_0xae3d('0x8')]=_[_0xae3d('0x9')](_0x4d931d,function(_0x26c419){return _0x26c419[_0xae3d('0x13')];});}}_0x2e31f1(_0x585160);})[_0xae3d('0xa')](function(_0x11ecf7){_0x5303c2(_0x11ecf7);});});}function _0x300be8(_0x9bf34a,_0x37f5ff){var _0x1b2acb={'parentSections':[]};switch(_0x9bf34a[_0xae3d('0x15')]()){case _0xae3d('0x16'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x18');break;case _0xae3d('0x19'):_0x1b2acb[_0xae3d('0x17')]='SquareOdbc';break;case _0xae3d('0x1a'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x1b');_0x1b2acb[_0xae3d('0x1c')]=[{'name':_0xae3d('0x1d'),'field':_0xae3d('0xe'),'foreignKey':_0xae3d('0x1e')}];break;case'projects':_0x1b2acb['childModel']=_0xae3d('0x1f');break;case _0xae3d('0x20'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x21');_0x1b2acb[_0xae3d('0x1c')]=[{'name':'Lists','field':'id','foreignKey':_0xae3d('0x22')}];break;case _0xae3d('0x23'):_0x1b2acb['childModel']=_0xae3d('0x24');break;case _0xae3d('0x25'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x26');break;case _0xae3d('0x27'):_0x1b2acb[_0xae3d('0x17')]='CmCustomField';break;case'chatqueues':_0x1b2acb['childModel']=_0xae3d('0x28');break;case _0xae3d('0x29'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x2a');break;case'faxqueues':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x2b');break;case _0xae3d('0x2c'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x2d');break;case _0xae3d('0x2e'):case _0xae3d('0x2f'):case'outboundroutes':_0x1b2acb[_0xae3d('0x17')]='VoiceExtension';break;case'contexts':_0x1b2acb[_0xae3d('0x17')]='VoiceContext';break;case _0xae3d('0x30'):_0x1b2acb['childModel']='VoiceMail';break;case _0xae3d('0x31'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x32');_0x1b2acb['parentSections']=[{'name':_0xae3d('0x33'),'field':'name','foreignKey':_0xae3d('0x34'),'model':_0xae3d('0x35'),'filter':{'field':_0xae3d('0x36'),'value':[_0xae3d('0x37')]}},{'name':_0xae3d('0x38'),'field':_0xae3d('0xe'),'foreignKey':_0xae3d('0x34'),'model':_0xae3d('0x35'),'filter':{'field':_0xae3d('0x36'),'value':[_0xae3d('0x39')]}},{'name':_0xae3d('0x3a'),'field':'name','foreignKey':'queue','model':_0xae3d('0x3b'),'filter':{'field':'type','value':[_0xae3d('0x3c')]}},{'name':_0xae3d('0x3d'),'field':_0xae3d('0xe'),'foreignKey':_0xae3d('0x3e'),'model':_0xae3d('0x3b'),'filter':{'field':_0xae3d('0x14'),'value':[_0xae3d('0x3f')]}}];break;case _0xae3d('0x40'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x41');break;case _0xae3d('0x42'):_0x1b2acb['childModel']=_0xae3d('0x43');break;case _0xae3d('0x44'):_0x1b2acb[_0xae3d('0x17')]='VoicePrefix';break;case'ivrcampaigns':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x45');break;case'mailqueues':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x46');break;case _0xae3d('0x47'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x48');break;case _0xae3d('0x49'):_0x1b2acb['childModel']=_0xae3d('0x4a');break;case _0xae3d('0x4b'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x4c');break;case _0xae3d('0x4d'):_0x1b2acb['childModel']=_0xae3d('0x4e');break;case'smsqueues':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x4f');break;case _0xae3d('0x50'):_0x1b2acb[_0xae3d('0x17')]='SmsAccount';break;case'whatsappqueues':_0x1b2acb['childModel']=_0xae3d('0x51');break;case _0xae3d('0x52'):_0x1b2acb['childModel']='WhatsappAccount';break;case'teams':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x53');break;case _0xae3d('0x54'):case _0xae3d('0x55'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x3b');if(_0x37f5ff){_0x1b2acb[_0xae3d('0x1c')]=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case'users':case _0xae3d('0x56'):case'telephones':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x35');if(_0x37f5ff){_0x1b2acb[_0xae3d('0x1c')]=[{'name':_0xae3d('0x57'),'filter':{'field':_0xae3d('0x36'),'value':[_0xae3d('0x58'),_0xae3d('0x59')]},'ignore':!![]},{'name':_0xae3d('0x33')},{'name':_0xae3d('0x38')}];}break;case _0xae3d('0x5a'):_0x1b2acb[_0xae3d('0x17')]='ZendeskAccount';break;case'salesforceaccounts':_0x1b2acb['childModel']=_0xae3d('0x5b');break;case _0xae3d('0x5c'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x5d');break;case'sugarcrmaccounts':_0x1b2acb['childModel']=_0xae3d('0x5e');break;case _0xae3d('0x5f'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x60');break;case'zohoaccounts':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x61');break;case _0xae3d('0x62'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x35');break;case _0xae3d('0x63'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x64');break;case _0xae3d('0x65'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x66');break;case _0xae3d('0x67'):_0x1b2acb['childModel']='Dashboard';break;case'intervals':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x68');break;case'pauses':_0x1b2acb[_0xae3d('0x17')]='Pause';break;case'scheduler':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x69');break;case _0xae3d('0x6a'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x6b');break;case _0xae3d('0x6c'):_0x1b2acb[_0xae3d('0x17')]='Tag';break;case _0xae3d('0x6d'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x6e');break;case _0xae3d('0x6f'):_0x1b2acb['childModel']=_0xae3d('0x70');break;case _0xae3d('0x71'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x72');break;case'variables':_0x1b2acb['childModel']='Variable';break;case _0xae3d('0x73'):_0x1b2acb['childModel']='Plugin';break;case _0xae3d('0x74'):_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x12');_0x1b2acb[_0xae3d('0x1c')]=[{'name':_0xae3d('0x75'),'field':'id','foreignKey':_0xae3d('0x76')}];break;case'metrics':_0x1b2acb[_0xae3d('0x17')]=_0xae3d('0x77');break;}return _0x1b2acb;}function _0x1f9367(_0x32b524,_0x285889){var _0x91ba60=_0x32b524['charAt'](0x0)[_0xae3d('0x78')]()+_0x32b524[_0xae3d('0x79')](0x1);var _0x444d3c={'type':_0x109dca['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};return new Promise(function(_0x2fd945,_0x44e369){var _0x564d6f=squel[_0xae3d('0x7a')]()[_0xae3d('0x11')](_0xae3d('0x7b')+_0x91ba60+'InteractionId','id')[_0xae3d('0x11')](_0xae3d('0x7c'))[_0xae3d('0x7d')](_0xae3d('0x7e')+_0x32b524+_0xae3d('0x7f'),'ui')[_0xae3d('0x80')](_0xae3d('0x81'),_0x285889['id']);return _0x109dca[_0xae3d('0x82')]['query'](_0x564d6f['toString'](),_0x444d3c)[_0xae3d('0xd')](function(_0x8b9eac){_0x285889[_0x91ba60+_0xae3d('0x83')]=_0x8b9eac;_0x2fd945(_0x8b9eac);})['catch'](function(_0x5a8cf8){_0x44e369(_0x5a8cf8);});});}return _0x190f0d[_0xae3d('0x84')](_0xae3d('0x85'),attributes,{'tableName':_0xae3d('0x86'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x7abbe2){var _0x4dd2f4={'raw':![],'where':{}};var _0xd1951={};var _0xc9fcc9={'count':0x0,'rows':[]};var _0x51d7e6=_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x88')];var _0x1d60df=_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x89')]||![];var _0x1b88a1=_0x300be8(_0x51d7e6,_0x1d60df);if(!_0x1b88a1[_0xae3d('0x17')])throw new Error('Invalid\x20section\x20\x27'+_0x51d7e6+'\x27');var _0xe340c1=[{'name':_0x51d7e6}];if(!_[_0xae3d('0x8a')](_0x1b88a1[_0xae3d('0x1c')]))_0xe340c1=_0x1b88a1[_0xae3d('0x1c')];var _0x2641d3=[];for(var _0x5b8333=0x0;_0x5b8333<_0xe340c1[_0xae3d('0x8b')];_0x5b8333++){_0x2641d3[_0xae3d('0x8c')](_0x109dca[_0xae3d('0x8d')][_0xae3d('0x8e')]({'where':{'userProfileId':_0x7abbe2[_0xae3d('0x8f')]['id'],'name':_0xe340c1[_0x5b8333][_0xae3d('0xe')]},'raw':!![]}));}return Promise['all'](_0x2641d3)[_0xae3d('0xd')](function(_0x18ab27){var _0x51a078=_[_0xae3d('0x6')](_0x18ab27,function(_0x343584){return _0x343584?_0x343584:undefined;});var _0x3fd6b8=_['filter'](_0xe340c1,['ignore',!![]]);var _0x40ee83=_[_0xae3d('0x8a')](_0x51a078)&&_[_0xae3d('0x8a')](_0x3fd6b8)?null:_[_0xae3d('0x90')](_0x3fd6b8,_0x51a078);if(!_0x40ee83)return null;var _0x1963fc=[];for(var _0x1a797a=0x0;_0x1a797a<_0x40ee83[_0xae3d('0x8b')];_0x1a797a++){var _0x5548f9=_[_0xae3d('0x8e')](_0xe340c1,function(_0x2e696d){return _0x40ee83[_0x1a797a]?_0x2e696d['name']===_0x40ee83[_0x1a797a][_0xae3d('0xe')]:null;});if(_0x5548f9){if(_0x40ee83[_0x1a797a]['ignore']){_0x1963fc[_0xae3d('0x8c')](_0xb2dfd3(_0x1b88a1[_0xae3d('0x17')],_0x40ee83[_0x1a797a]));}else{if(!_0x40ee83[_0x1a797a][_0xae3d('0x91')]){_0x1963fc[_0xae3d('0x8c')](_0x192c13(_0x5548f9,_0x40ee83[_0x1a797a],_0x1b88a1[_0xae3d('0x17')]));}else{if(_0x5548f9['model']){_0x1963fc[_0xae3d('0x8c')](_0x15d6da(_0x5548f9,_0x40ee83[_0x1a797a]));}}}}}return Promise[_0xae3d('0x92')](_0x1963fc);})[_0xae3d('0xd')](function(_0x5f1e9c){var _0x546991=_0x5f1e9c;var _0x27c2ec=null;if(_0x546991){_0x27c2ec=_0x546991[_0xae3d('0x8b')]===0x1?_0x546991[0x0]:null;}if(!_0x27c2ec&&!_0x546991)return _0xc9fcc9;var _0x53122a=_0x109dca[_0x1b88a1['childModel']][_0xae3d('0x93')];_0xd1951['model']=_[_0xae3d('0x94')](_0x53122a);_0xd1951['query']=_['keys'](_0x7abbe2['query']);_0xd1951['filters']=_[_0xae3d('0x95')](_0xd1951[_0xae3d('0xb')],_0xd1951['query']);_0x4dd2f4['attributes']=_[_0xae3d('0x95')](_0xd1951[_0xae3d('0xb')],qs[_0xae3d('0x96')](_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x96')]));_0x4dd2f4[_0xae3d('0x97')]=_0x4dd2f4[_0xae3d('0x97')]['length']?_0x4dd2f4[_0xae3d('0x97')]:_0xd1951[_0xae3d('0xb')];if(!_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x98')](_0xae3d('0x99'))){_0x4dd2f4[_0xae3d('0x9a')]=qs['limit'](_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x9a')]);_0x4dd2f4['offset']=qs['offset'](_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x9b')]);}_0x4dd2f4['order']=qs[_0xae3d('0x9c')](_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x9c')]);_0x4dd2f4['where']=qs[_0xae3d('0x9d')](_[_0xae3d('0x9e')](_0x7abbe2['query'],_0xd1951['filters']));if(_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x6')]){_0x4dd2f4[_0xae3d('0x80')]=_['merge'](_0x4dd2f4[_0xae3d('0x80')],{'$or':_[_0xae3d('0x9')](_0x53122a,function(_0x59c747){if(_0x59c747[_0xae3d('0x14')][_0xae3d('0x9f')]!==_0xae3d('0xa0')){var _0x5b4815={};_0x5b4815[_0x59c747[_0xae3d('0x11')]]={'$like':'%'+_0x7abbe2[_0xae3d('0x87')][_0xae3d('0x6')]+'%'};return _0x5b4815;}})});}var _0x53aab6=[];var _0x3a8d20=null;var _0x58b079={};if(_0x27c2ec){_0x3a8d20=_[_0xae3d('0x8e')](_0xe340c1,['name',_0x27c2ec['name']]);if(_0x3a8d20[_0xae3d('0x11')]){_0x58b079={};if(_0x1b88a1['childModel']===_0xae3d('0x12')){_0x58b079[_0x3a8d20[_0xae3d('0xa1')]]=_[_0xae3d('0x9')](_0x27c2ec[_0xae3d('0x8')],'id');}else{_0x58b079[_0x3a8d20['foreignKey']]=_0x27c2ec[_0xae3d('0x8')];}_0x53aab6[_0xae3d('0x8c')](_0x58b079);}else{_0x4dd2f4[_0xae3d('0x80')]['id']=_0x27c2ec[_0xae3d('0x8')];}}else{for(var _0x6afe2e=0x0;_0x6afe2e<_0x546991[_0xae3d('0x8b')];_0x6afe2e++){_0x3a8d20=_[_0xae3d('0x8e')](_0xe340c1,[_0xae3d('0xe'),_0x546991[_0x6afe2e][_0xae3d('0xe')]]);if(_0x3a8d20[_0xae3d('0x11')]){_0x58b079={};_0x58b079[_0x3a8d20[_0xae3d('0xa1')]]=_0x546991[_0x6afe2e][_0xae3d('0x8')];_0x53aab6[_0xae3d('0x8c')](_0x58b079);}else{if(!_0x4dd2f4[_0xae3d('0x80')]['id'])_0x4dd2f4[_0xae3d('0x80')]['id']=[];_0x546991[_0x6afe2e][_0xae3d('0x8')][_0xae3d('0xa2')](function(_0x5c968b){_0x4dd2f4[_0xae3d('0x80')]['id'][_0xae3d('0x8c')](_0x5c968b);});}}}if(!_[_0xae3d('0x8a')](_0x53aab6)){_0x4dd2f4[_0xae3d('0x80')]=_[_0xae3d('0xa3')](_0x4dd2f4['where'],{'$and':{'$or':_0x53aab6}});}_0x4dd2f4=_[_0xae3d('0xa3')]({},_0x4dd2f4,_0x7abbe2[_0xae3d('0xa4')]);if(_0x27c2ec&&!_0x27c2ec[_0xae3d('0x91')]&&_0x1b88a1[_0xae3d('0x17')]===_0xae3d('0x12')){if(_0x7abbe2[_0xae3d('0x87')][_0xae3d('0xa5')]){_0x4dd2f4[_0xae3d('0xa6')]=[{'all':!![]}];}return _0x109dca[_0x1b88a1['childModel']][_0xae3d('0xc')](_0x4dd2f4)[_0xae3d('0xd')](function(_0x3bb676){var _0x52656b=[];_0x3bb676[_0xae3d('0xa2')](function(_0x345934){var _0x95a92e;switch(_0x345934['reportType']){case _0xae3d('0xa7'):_0x95a92e=_[_0xae3d('0x8e')](_0x27c2ec['associatedResources'],function(_0x2974ad){return _0x2974ad['id']===_0x345934['reportId']&&_0x2974ad[_0xae3d('0x14')]==='DefaultReports';});break;case _0xae3d('0xa8'):_0x95a92e=_[_0xae3d('0x8e')](_0x27c2ec[_0xae3d('0x8')],function(_0x39ccc6){return _0x39ccc6['id']===_0x345934[_0xae3d('0x76')]&&_0x39ccc6['type']===_0xae3d('0xa9');});break;}if(_0x95a92e)_0x52656b[_0xae3d('0x8c')](_0x345934);});_0xc9fcc9['count']=_0x52656b['length'];_0xc9fcc9[_0xae3d('0xaa')]=_0x52656b;return _0xc9fcc9;});}else{return _0x109dca[_0x1b88a1[_0xae3d('0x17')]][_0xae3d('0xab')]({'where':_0x4dd2f4[_0xae3d('0x80')]})['then'](function(_0x204bb1){_0xc9fcc9[_0xae3d('0xab')]=_0x204bb1;if(_0x7abbe2[_0xae3d('0x87')]['includeAll']){if(_0x1b88a1['childModel']===_0xae3d('0x21')){_0x4dd2f4['include']=[{'model':_0x109dca[_0xae3d('0xac')],'as':'Tags','attributes':['id',_0xae3d('0xe'),_0xae3d('0xad')],'required':_0x7abbe2[_0xae3d('0x87')][_0xae3d('0xae')]?!![]:![]},{'model':_0x109dca['Tag'],'as':_0xae3d('0xaf'),'attributes':['id',_0xae3d('0xe'),_0xae3d('0xad')],'through':_0x7abbe2['query'][_0xae3d('0xae')]?{'attributes':[],'where':{'TagId':_0x7abbe2['query'][_0xae3d('0xae')]||undefined}}:{},'required':_0x7abbe2[_0xae3d('0x87')]['tag']?!![]:![]}];}else{_0x4dd2f4['include']=[{'all':!![]}];}}return _0x109dca[_0x1b88a1[_0xae3d('0x17')]]['findAll'](_0x4dd2f4);})['then'](function(_0x1e53a9){_0xc9fcc9['rows']=_0x1e53a9;if(_0x51d7e6===_0xae3d('0x33')&&_0x7abbe2['query'][_0xae3d('0xb0')]==='true'){var _0x27c0ff=[];for(var _0x56bf04=0x0;_0x56bf04<_0xc9fcc9[_0xae3d('0xaa')]['length'];_0x56bf04++){_0x27c0ff[_0xae3d('0x8c')](_0x1f9367(_0xae3d('0xb1'),_0xc9fcc9[_0xae3d('0xaa')][_0x56bf04][_0xae3d('0xb2')]));_0x27c0ff[_0xae3d('0x8c')](_0x1f9367(_0xae3d('0xb3'),_0xc9fcc9[_0xae3d('0xaa')][_0x56bf04][_0xae3d('0xb2')]));_0x27c0ff[_0xae3d('0x8c')](_0x1f9367('fax',_0xc9fcc9[_0xae3d('0xaa')][_0x56bf04][_0xae3d('0xb2')]));_0x27c0ff[_0xae3d('0x8c')](_0x1f9367(_0xae3d('0xb4'),_0xc9fcc9[_0xae3d('0xaa')][_0x56bf04]['dataValues']));_0x27c0ff[_0xae3d('0x8c')](_0x1f9367(_0xae3d('0xb5'),_0xc9fcc9[_0xae3d('0xaa')][_0x56bf04]['dataValues']));_0x27c0ff[_0xae3d('0x8c')](_0x1f9367('whatsapp',_0xc9fcc9['rows'][_0x56bf04][_0xae3d('0xb2')]));}return Promise['all'](_0x27c0ff)[_0xae3d('0xd')](function(){return _0xc9fcc9;});}return _0xc9fcc9;});}});}}});};
\ No newline at end of file
index cfa5f7f..eac61e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x960c=['socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','localhost'];(function(_0x5a07c9,_0x3de411){var _0x3c6117=function(_0x5cb2ae){while(--_0x5cb2ae){_0x5a07c9['push'](_0x5a07c9['shift']());}};_0x3c6117(++_0x3de411);}(_0x960c,0x113));var _0xc960=function(_0x26d6a7,_0x263f45){_0x26d6a7=_0x26d6a7-0x0;var _0x4da799=_0x960c[_0x26d6a7];return _0x4da799;};'use strict';var _=require(_0xc960('0x0'));var util=require('util');var moment=require(_0xc960('0x1'));var BPromise=require('bluebird');var rs=require(_0xc960('0x2'));var fs=require('fs');var Redis=require(_0xc960('0x3'));var db=require(_0xc960('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc960('0x5'))(_0xc960('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc960('0x7')][_0xc960('0x8')]({'port':0x232a});config[_0xc960('0x9')]=_['defaults'](config['redis'],{'host':_0xc960('0xa'),'port':0x18eb});var socket=require(_0xc960('0xb'))(new Redis(config['redis']));require('./userProfile.socket')[_0xc960('0xc')](socket);function respondWithRpcPromise(_0x27b0d6,_0x1e999f,_0x465ca0){return new BPromise(function(_0x5a9ace,_0x5358d0){return client[_0xc960('0xd')](_0x27b0d6,_0x465ca0)[_0xc960('0xe')](function(_0x18d8c9){logger[_0xc960('0xf')](_0xc960('0x10'),_0x1e999f,_0xc960('0x11'));logger[_0xc960('0x12')](_0xc960('0x13'),_0x1e999f,_0xc960('0x11'),JSON[_0xc960('0x14')](_0x18d8c9));if(_0x18d8c9[_0xc960('0x15')]){if(_0x18d8c9['error'][_0xc960('0x16')]===0x1f4){logger[_0xc960('0x15')](_0xc960('0x10'),_0x1e999f,_0x18d8c9[_0xc960('0x15')]['message']);return _0x5358d0(_0x18d8c9[_0xc960('0x15')][_0xc960('0x17')]);}logger[_0xc960('0x15')](_0xc960('0x10'),_0x1e999f,_0x18d8c9[_0xc960('0x15')][_0xc960('0x17')]);return _0x5a9ace(_0x18d8c9[_0xc960('0x15')][_0xc960('0x17')]);}else{logger[_0xc960('0xf')](_0xc960('0x10'),_0x1e999f,_0xc960('0x11'));_0x5a9ace(_0x18d8c9[_0xc960('0x18')][_0xc960('0x17')]);}})[_0xc960('0x19')](function(_0x3a23b3){logger['error'](_0xc960('0x10'),_0x1e999f,_0x3a23b3);_0x5358d0(_0x3a23b3);});});}
\ No newline at end of file
+var _0xdded=['defaults','localhost','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x4e2f4b,_0x417cb1){var _0x1d3409=function(_0x1b985d){while(--_0x1b985d){_0x4e2f4b['push'](_0x4e2f4b['shift']());}};_0x1d3409(++_0x417cb1);}(_0xdded,0x17a));var _0xddde=function(_0x502786,_0x1986be){_0x502786=_0x502786-0x0;var _0x37a811=_0xdded[_0x502786];return _0x37a811;};'use strict';var _=require(_0xddde('0x0'));var util=require(_0xddde('0x1'));var moment=require(_0xddde('0x2'));var BPromise=require(_0xddde('0x3'));var rs=require(_0xddde('0x4'));var fs=require('fs');var Redis=require(_0xddde('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xddde('0x6'));var logger=require(_0xddde('0x7'))(_0xddde('0x8'));var config=require(_0xddde('0x9'));var jayson=require(_0xddde('0xa'));var client=jayson[_0xddde('0xb')][_0xddde('0xc')]({'port':0x232a});config[_0xddde('0xd')]=_[_0xddde('0xe')](config[_0xddde('0xd')],{'host':_0xddde('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xddde('0xd')]));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x4820a5,_0x438f74,_0x567859){return new BPromise(function(_0x247097,_0x5a01fc){return client[_0xddde('0x10')](_0x4820a5,_0x567859)[_0xddde('0x11')](function(_0xaaed0c){logger[_0xddde('0x12')](_0xddde('0x13'),_0x438f74,_0xddde('0x14'));logger[_0xddde('0x15')](_0xddde('0x16'),_0x438f74,'request\x20sent',JSON[_0xddde('0x17')](_0xaaed0c));if(_0xaaed0c[_0xddde('0x18')]){if(_0xaaed0c[_0xddde('0x18')][_0xddde('0x19')]===0x1f4){logger[_0xddde('0x18')](_0xddde('0x13'),_0x438f74,_0xaaed0c['error'][_0xddde('0x1a')]);return _0x5a01fc(_0xaaed0c[_0xddde('0x18')][_0xddde('0x1a')]);}logger['error']('UserProfile,\x20%s,\x20%s',_0x438f74,_0xaaed0c[_0xddde('0x18')]['message']);return _0x247097(_0xaaed0c[_0xddde('0x18')][_0xddde('0x1a')]);}else{logger[_0xddde('0x12')](_0xddde('0x13'),_0x438f74,_0xddde('0x14'));_0x247097(_0xaaed0c['result'][_0xddde('0x1a')]);}})[_0xddde('0x1b')](function(_0x4d251c){logger[_0xddde('0x18')](_0xddde('0x13'),_0x438f74,_0x4d251c);_0x5a01fc(_0x4d251c);});});}
\ No newline at end of file
index 8d9b5c7..4b08a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4208=['userProfile:','./userProfile.events','save','remove','update','emit','removeListener','register','length'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x4208,0x13c));var _0x8420=function(_0x3500f2,_0x142fb1){_0x3500f2=_0x3500f2-0x0;var _0x7ad03f=_0x4208[_0x3500f2];return _0x7ad03f;};'use strict';var UserProfileEvents=require(_0x8420('0x0'));var events=[_0x8420('0x1'),_0x8420('0x2'),_0x8420('0x3')];function createListener(_0x146c22,_0x1e23e8){return function(_0x2110ef){_0x1e23e8[_0x8420('0x4')](_0x146c22,_0x2110ef);};}function removeListener(_0x54b100,_0x395888){return function(){UserProfileEvents[_0x8420('0x5')](_0x54b100,_0x395888);};}exports[_0x8420('0x6')]=function(_0x2d65a8){for(var _0x2d85f8=0x0,_0x363a95=events[_0x8420('0x7')];_0x2d85f8<_0x363a95;_0x2d85f8++){var _0x412e09=events[_0x2d85f8];var _0x1e1955=createListener(_0x8420('0x8')+_0x412e09,_0x2d65a8);UserProfileEvents['on'](_0x412e09,_0x1e1955);}};
\ No newline at end of file
+var _0xfbdc=['removeListener','register','./userProfile.events','save','remove','emit'];(function(_0xc46d30,_0x532a36){var _0x23c11f=function(_0x2d4671){while(--_0x2d4671){_0xc46d30['push'](_0xc46d30['shift']());}};_0x23c11f(++_0x532a36);}(_0xfbdc,0x6e));var _0xcfbd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfbdc[_0x3dd15e];return _0x231fd0;};'use strict';var UserProfileEvents=require(_0xcfbd('0x0'));var events=[_0xcfbd('0x1'),_0xcfbd('0x2'),'update'];function createListener(_0x13e046,_0x4c7399){return function(_0x5030c0){_0x4c7399[_0xcfbd('0x3')](_0x13e046,_0x5030c0);};}function removeListener(_0x436461,_0x4e3a62){return function(){UserProfileEvents[_0xcfbd('0x4')](_0x436461,_0x4e3a62);};}exports[_0xcfbd('0x5')]=function(_0x3e893f){for(var _0x42cd1d=0x0,_0x4517c5=events['length'];_0x42cd1d<_0x4517c5;_0x42cd1d++){var _0x71f901=events[_0x42cd1d];var _0x4db92c=createListener('userProfile:'+_0x71f901,_0x3e893f);UserProfileEvents['on'](_0x71f901,_0x4db92c);}};
\ No newline at end of file
index 567fb78..f375e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x701b=['create','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','index','/describe','describe','/:id','isAuthenticated'];(function(_0x1faaa0,_0x25d12a){var _0x2d2f62=function(_0x3a9058){while(--_0x3a9058){_0x1faaa0['push'](_0x1faaa0['shift']());}};_0x2d2f62(++_0x25d12a);}(_0x701b,0x122));var _0xb701=function(_0x461058,_0x4db6b8){_0x461058=_0x461058-0x0;var _0x571917=_0x701b[_0x461058];return _0x571917;};'use strict';var multer=require(_0xb701('0x0'));var util=require(_0xb701('0x1'));var path=require('path');var timeout=require(_0xb701('0x2'));var express=require('express');var router=express[_0xb701('0x3')]();var fs_extra=require(_0xb701('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb701('0x5'));var config=require(_0xb701('0x6'));var controller=require(_0xb701('0x7'));router[_0xb701('0x8')]('/',auth['isAuthenticated'](),controller[_0xb701('0x9')]);router[_0xb701('0x8')](_0xb701('0xa'),auth['isAuthenticated'](),controller[_0xb701('0xb')]);router[_0xb701('0x8')](_0xb701('0xc'),auth[_0xb701('0xd')](),controller['show']);router['post']('/',auth[_0xb701('0xd')](),controller[_0xb701('0xe')]);router[_0xb701('0xf')](_0xb701('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xb701('0x10')]('/:id',auth[_0xb701('0xd')](),controller[_0xb701('0x11')]);module[_0xb701('0x12')]=router;
\ No newline at end of file
+var _0x7948=['./userProfileResource.controller','isAuthenticated','index','get','describe','show','post','create','put','/:id','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2e219c,_0x522f68){var _0x38841f=function(_0x53539a){while(--_0x53539a){_0x2e219c['push'](_0x2e219c['shift']());}};_0x38841f(++_0x522f68);}(_0x7948,0xde));var _0x8794=function(_0x2d2ca2,_0x51873f){_0x2d2ca2=_0x2d2ca2-0x0;var _0x48489d=_0x7948[_0x2d2ca2];return _0x48489d;};'use strict';var multer=require(_0x8794('0x0'));var util=require('util');var path=require(_0x8794('0x1'));var timeout=require(_0x8794('0x2'));var express=require(_0x8794('0x3'));var router=express[_0x8794('0x4')]();var fs_extra=require(_0x8794('0x5'));var auth=require(_0x8794('0x6'));var interaction=require(_0x8794('0x7'));var config=require(_0x8794('0x8'));var controller=require(_0x8794('0x9'));router['get']('/',auth[_0x8794('0xa')](),controller[_0x8794('0xb')]);router[_0x8794('0xc')]('/describe',auth['isAuthenticated'](),controller[_0x8794('0xd')]);router[_0x8794('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x8794('0xe')]);router[_0x8794('0xf')]('/',auth[_0x8794('0xa')](),controller[_0x8794('0x10')]);router[_0x8794('0x11')](_0x8794('0x12'),auth['isAuthenticated'](),controller[_0x8794('0x13')]);router[_0x8794('0x14')](_0x8794('0x12'),auth[_0x8794('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d43f363..9143b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc326=['sequelize','STRING'];(function(_0x257495,_0x18269b){var _0x3849aa=function(_0x1ca94e){while(--_0x1ca94e){_0x257495['push'](_0x257495['shift']());}};_0x3849aa(++_0x18269b);}(_0xc326,0x196));var _0x6c32=function(_0x4e5ef0,_0x4032de){_0x4e5ef0=_0x4e5ef0-0x0;var _0x50814f=_0xc326[_0x4e5ef0];return _0x50814f;};'use strict';var Sequelize=require(_0x6c32('0x0'));module['exports']={'name':{'type':Sequelize[_0x6c32('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x88f2=['exports','STRING','INTEGER'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x88f2,0x72));var _0x288f=function(_0x3695e0,_0x571964){_0x3695e0=_0x3695e0-0x0;var _0x1970fb=_0x88f2[_0x3695e0];return _0x1970fb;};'use strict';var Sequelize=require('sequelize');module[_0x288f('0x0')]={'name':{'type':Sequelize[_0x288f('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x288f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x288f('0x1')],'allowNull':![]}};
\ No newline at end of file
index 52e3fba..def2a33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','UserProfileResource','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','params','keys','rawAttributes','find','create','body','catch','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','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','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range'];(function(_0x417892,_0x5e75a4){var _0x2facfc=function(_0x358a78){while(--_0x358a78){_0x417892['push'](_0x417892['shift']());}};_0x2facfc(++_0x5e75a4);}(_0xef0f,0x168));var _0xfef0=function(_0x3f8630,_0x47f5c9){_0x3f8630=_0x3f8630-0x0;var _0x2a0fe4=_0xef0f[_0x3f8630];return _0x2a0fe4;};'use strict';var emlformat=require(_0xfef0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfef0('0x1'));var jsonpatch=require(_0xfef0('0x2'));var rp=require(_0xfef0('0x3'));var moment=require('moment');var BPromise=require(_0xfef0('0x4'));var Mustache=require(_0xfef0('0x5'));var util=require(_0xfef0('0x6'));var path=require('path');var sox=require(_0xfef0('0x7'));var csv=require(_0xfef0('0x8'));var ejs=require(_0xfef0('0x9'));var fs=require('fs');var fs_extra=require(_0xfef0('0xa'));var _=require(_0xfef0('0xb'));var squel=require(_0xfef0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfef0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfef0('0x8'));var querystring=require(_0xfef0('0xe'));var Papa=require(_0xfef0('0xf'));var Redis=require(_0xfef0('0x10'));var authService=require(_0xfef0('0x11'));var qs=require(_0xfef0('0x12'));var as=require(_0xfef0('0x13'));var hardwareService=require(_0xfef0('0x14'));var logger=require(_0xfef0('0x15'))(_0xfef0('0x16'));var utils=require(_0xfef0('0x17'));var config=require(_0xfef0('0x18'));var licenseUtil=require(_0xfef0('0x19'));var db=require(_0xfef0('0x1a'))['db'];function respondWithStatusCode(_0x546c7a,_0x3135ab){_0x3135ab=_0x3135ab||0xcc;return function(_0x2f4e23){if(_0x2f4e23){return _0x546c7a[_0xfef0('0x1b')](_0x3135ab);}return _0x546c7a[_0xfef0('0x1c')](_0x3135ab)[_0xfef0('0x1d')]();};}function respondWithResult(_0x45599a,_0xa9f040){_0xa9f040=_0xa9f040||0xc8;return function(_0x573ae7){if(_0x573ae7){return _0x45599a[_0xfef0('0x1c')](_0xa9f040)['json'](_0x573ae7);}};}function respondWithFilteredResult(_0x4b5bcf,_0x5acdd0){return function(_0x118b8d){if(_0x118b8d){var _0x284b6d=typeof _0x5acdd0[_0xfef0('0x1e')]===_0xfef0('0x1f')&&typeof _0x5acdd0[_0xfef0('0x20')]===_0xfef0('0x1f');var _0x155833=_0x118b8d[_0xfef0('0x21')];var _0x581459=_0x284b6d?0x0:_0x5acdd0[_0xfef0('0x1e')];var _0x1642cd=_0x284b6d?_0x118b8d[_0xfef0('0x21')]:_0x5acdd0[_0xfef0('0x1e')]+_0x5acdd0[_0xfef0('0x20')];var _0x55912f;if(_0x1642cd>=_0x155833){_0x1642cd=_0x155833;_0x55912f=0xc8;}else{_0x55912f=0xce;}_0x4b5bcf[_0xfef0('0x1c')](_0x55912f);return _0x4b5bcf['set'](_0xfef0('0x22'),_0x581459+'-'+_0x1642cd+'/'+_0x155833)[_0xfef0('0x23')](_0x118b8d);}return null;};}function patchUpdates(_0x28dee1){return function(_0x48408a){try{jsonpatch[_0xfef0('0x24')](_0x48408a,_0x28dee1,!![]);}catch(_0x4c304d){return BPromise[_0xfef0('0x25')](_0x4c304d);}return _0x48408a[_0xfef0('0x26')]();};}function saveUpdates(_0x52b93b,_0x4897af){return function(_0x4b8b22){if(_0x4b8b22){return _0x4b8b22[_0xfef0('0x27')](_0x52b93b)['then'](function(_0x1f9970){return _0x1f9970;});}return null;};}function removeEntity(_0x46b34a,_0x1a8d66){return function(_0x4483f2){if(_0x4483f2){return _0x4483f2[_0xfef0('0x28')]()[_0xfef0('0x29')](function(){_0x46b34a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x316e20,_0x1ffaa4){return function(_0x924f6e){if(!_0x924f6e){_0x316e20[_0xfef0('0x1b')](0x194);}return _0x924f6e;};}function handleError(_0xab231c,_0xf60f2){_0xf60f2=_0xf60f2||0x1f4;return function(_0x5df04f){logger[_0xfef0('0x2a')](_0x5df04f[_0xfef0('0x2b')]);if(_0x5df04f['name']){delete _0x5df04f[_0xfef0('0x2c')];}_0xab231c[_0xfef0('0x1c')](_0xf60f2)[_0xfef0('0x2d')](_0x5df04f);};}exports[_0xfef0('0x2e')]=function(_0x37921f,_0x1ac4a3){var _0x3e3c4c={},_0x3e026a={},_0x26cb9a={'count':0x0,'rows':[]};var _0x213a91=_[_0xfef0('0x2f')](db[_0xfef0('0x30')]['rawAttributes'],function(_0x445625){return{'name':_0x445625['fieldName'],'type':_0x445625['type'][_0xfef0('0x31')]};});_0x3e026a[_0xfef0('0x32')]=_['map'](_0x213a91,'name');_0x3e026a['query']=_['keys'](_0x37921f['query']);_0x3e026a[_0xfef0('0x33')]=_[_0xfef0('0x34')](_0x3e026a[_0xfef0('0x32')],_0x3e026a['query']);_0x3e3c4c['attributes']=_['intersection'](_0x3e026a[_0xfef0('0x32')],qs['fields'](_0x37921f[_0xfef0('0x35')][_0xfef0('0x36')]));_0x3e3c4c[_0xfef0('0x37')]=_0x3e3c4c['attributes'][_0xfef0('0x38')]?_0x3e3c4c['attributes']:_0x3e026a[_0xfef0('0x32')];if(!_0x37921f[_0xfef0('0x35')][_0xfef0('0x39')](_0xfef0('0x3a'))){_0x3e3c4c[_0xfef0('0x20')]=qs[_0xfef0('0x20')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x20')]);_0x3e3c4c['offset']=qs[_0xfef0('0x1e')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x1e')]);}_0x3e3c4c[_0xfef0('0x3b')]=qs[_0xfef0('0x3c')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x3c')]);_0x3e3c4c[_0xfef0('0x3d')]=qs[_0xfef0('0x33')](_[_0xfef0('0x3e')](_0x37921f[_0xfef0('0x35')],_0x3e026a[_0xfef0('0x33')]),_0x213a91);if(_0x37921f[_0xfef0('0x35')]['filter']){_0x3e3c4c[_0xfef0('0x3d')]=_['merge'](_0x3e3c4c[_0xfef0('0x3d')],{'$or':_[_0xfef0('0x2f')](_0x213a91,function(_0x1ddce6){if(_0x1ddce6['type']!==_0xfef0('0x3f')){var _0x29469e={};_0x29469e[_0x1ddce6[_0xfef0('0x2c')]]={'$like':'%'+_0x37921f['query'][_0xfef0('0x40')]+'%'};return _0x29469e;}})});}_0x3e3c4c=_[_0xfef0('0x41')]({},_0x3e3c4c,_0x37921f[_0xfef0('0x42')]);var _0x5577f4={'where':_0x3e3c4c[_0xfef0('0x3d')]};return db['UserProfileResource']['count'](_0x5577f4)[_0xfef0('0x29')](function(_0x547a5d){_0x26cb9a['count']=_0x547a5d;if(_0x37921f[_0xfef0('0x35')][_0xfef0('0x43')]){_0x3e3c4c[_0xfef0('0x44')]=[{'all':!![]}];}return db[_0xfef0('0x30')][_0xfef0('0x45')](_0x3e3c4c);})[_0xfef0('0x29')](function(_0x4dd8f8){_0x26cb9a[_0xfef0('0x46')]=_0x4dd8f8;return _0x26cb9a;})[_0xfef0('0x29')](respondWithFilteredResult(_0x1ac4a3,_0x3e3c4c))['catch'](handleError(_0x1ac4a3,null));};exports['show']=function(_0x1d554e,_0x5dc824){var _0x1fc518={'raw':![],'where':{'id':_0x1d554e[_0xfef0('0x47')]['id']}},_0x22c940={};_0x22c940[_0xfef0('0x32')]=_[_0xfef0('0x48')](db[_0xfef0('0x30')][_0xfef0('0x49')]);_0x22c940[_0xfef0('0x35')]=_['keys'](_0x1d554e[_0xfef0('0x35')]);_0x22c940['filters']=_['intersection'](_0x22c940[_0xfef0('0x32')],_0x22c940[_0xfef0('0x35')]);_0x1fc518['attributes']=_[_0xfef0('0x34')](_0x22c940['model'],qs[_0xfef0('0x36')](_0x1d554e[_0xfef0('0x35')][_0xfef0('0x36')]));_0x1fc518[_0xfef0('0x37')]=_0x1fc518['attributes'][_0xfef0('0x38')]?_0x1fc518[_0xfef0('0x37')]:_0x22c940['model'];if(_0x1d554e['query'][_0xfef0('0x43')]){_0x1fc518['include']=[{'all':!![]}];}_0x1fc518=_[_0xfef0('0x41')]({},_0x1fc518,_0x1d554e[_0xfef0('0x42')]);return db[_0xfef0('0x30')][_0xfef0('0x4a')](_0x1fc518)[_0xfef0('0x29')](handleEntityNotFound(_0x5dc824,null))[_0xfef0('0x29')](respondWithResult(_0x5dc824,null))['catch'](handleError(_0x5dc824,null));};exports[_0xfef0('0x4b')]=function(_0x559a28,_0x5a417e){return db[_0xfef0('0x30')][_0xfef0('0x4b')](_0x559a28[_0xfef0('0x4c')],{})['then'](respondWithResult(_0x5a417e,0xc9))[_0xfef0('0x4d')](handleError(_0x5a417e,null));};exports['update']=function(_0x5dd26b,_0x51f207){if(_0x5dd26b[_0xfef0('0x4c')]['id']){delete _0x5dd26b[_0xfef0('0x4c')]['id'];}return db[_0xfef0('0x30')][_0xfef0('0x4a')]({'where':{'id':_0x5dd26b[_0xfef0('0x47')]['id']}})[_0xfef0('0x29')](handleEntityNotFound(_0x51f207,null))[_0xfef0('0x29')](saveUpdates(_0x5dd26b[_0xfef0('0x4c')],null))[_0xfef0('0x29')](respondWithResult(_0x51f207,null))['catch'](handleError(_0x51f207,null));};exports['destroy']=function(_0x2bebec,_0x18e5ba){return db[_0xfef0('0x30')][_0xfef0('0x4a')]({'where':{'id':_0x2bebec[_0xfef0('0x47')]['id']}})[_0xfef0('0x29')](handleEntityNotFound(_0x18e5ba,null))[_0xfef0('0x29')](removeEntity(_0x18e5ba,null))[_0xfef0('0x4d')](handleError(_0x18e5ba,null));};exports['describe']=function(_0x2466e7,_0x19e449){return db[_0xfef0('0x30')][_0xfef0('0x4e')]()[_0xfef0('0x29')](respondWithResult(_0x19e449,null))['catch'](handleError(_0x19e449,null));};
\ No newline at end of file
+var _0x2542=['json','offset','limit','undefined','count','set','Content-Range','apply','update','then','error','stack','name','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','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/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x2caf9f,_0x431df0){var _0x4b44ee=function(_0x1c3c07){while(--_0x1c3c07){_0x2caf9f['push'](_0x2caf9f['shift']());}};_0x4b44ee(++_0x431df0);}(_0x2542,0x169));var _0x2254=function(_0x42b825,_0x22ca16){_0x42b825=_0x42b825-0x0;var _0x10216c=_0x2542[_0x42b825];return _0x10216c;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];function respondWithStatusCode(_0x116b70,_0xdcb670){_0xdcb670=_0xdcb670||0xcc;return function(_0x3c326b){if(_0x3c326b){return _0x116b70[_0x2254('0x1a')](_0xdcb670);}return _0x116b70['status'](_0xdcb670)[_0x2254('0x1b')]();};}function respondWithResult(_0x7c7ab0,_0x504749){_0x504749=_0x504749||0xc8;return function(_0x2f4de){if(_0x2f4de){return _0x7c7ab0[_0x2254('0x1c')](_0x504749)[_0x2254('0x1d')](_0x2f4de);}};}function respondWithFilteredResult(_0x145272,_0x26285a){return function(_0xbc5548){if(_0xbc5548){var _0x50f137=typeof _0x26285a[_0x2254('0x1e')]==='undefined'&&typeof _0x26285a[_0x2254('0x1f')]===_0x2254('0x20');var _0x170ffa=_0xbc5548[_0x2254('0x21')];var _0x1ae11e=_0x50f137?0x0:_0x26285a[_0x2254('0x1e')];var _0x497724=_0x50f137?_0xbc5548['count']:_0x26285a['offset']+_0x26285a[_0x2254('0x1f')];var _0x3a79f8;if(_0x497724>=_0x170ffa){_0x497724=_0x170ffa;_0x3a79f8=0xc8;}else{_0x3a79f8=0xce;}_0x145272[_0x2254('0x1c')](_0x3a79f8);return _0x145272[_0x2254('0x22')](_0x2254('0x23'),_0x1ae11e+'-'+_0x497724+'/'+_0x170ffa)[_0x2254('0x1d')](_0xbc5548);}return null;};}function patchUpdates(_0x487f72){return function(_0x28381e){try{jsonpatch[_0x2254('0x24')](_0x28381e,_0x487f72,!![]);}catch(_0x906cde){return BPromise['reject'](_0x906cde);}return _0x28381e['save']();};}function saveUpdates(_0x5bd982,_0x1e8a98){return function(_0x559af4){if(_0x559af4){return _0x559af4[_0x2254('0x25')](_0x5bd982)['then'](function(_0x5713e4){return _0x5713e4;});}return null;};}function removeEntity(_0x4d8faf,_0x540020){return function(_0x5e5edb){if(_0x5e5edb){return _0x5e5edb['destroy']()[_0x2254('0x26')](function(){_0x4d8faf[_0x2254('0x1c')](0xcc)[_0x2254('0x1b')]();});}};}function handleEntityNotFound(_0x265467,_0x13522d){return function(_0x1349c9){if(!_0x1349c9){_0x265467['sendStatus'](0x194);}return _0x1349c9;};}function handleError(_0x4a8274,_0x1ada42){_0x1ada42=_0x1ada42||0x1f4;return function(_0x4f6877){logger[_0x2254('0x27')](_0x4f6877[_0x2254('0x28')]);if(_0x4f6877[_0x2254('0x29')]){delete _0x4f6877[_0x2254('0x29')];}_0x4a8274[_0x2254('0x1c')](_0x1ada42)['send'](_0x4f6877);};}exports[_0x2254('0x2a')]=function(_0x2a789b,_0x21285d){var _0x37af8b={},_0x13366a={},_0x377c41={'count':0x0,'rows':[]};var _0x3214a7=_[_0x2254('0x2b')](db[_0x2254('0x2c')][_0x2254('0x2d')],function(_0x21c641){return{'name':_0x21c641[_0x2254('0x2e')],'type':_0x21c641[_0x2254('0x2f')][_0x2254('0x30')]};});_0x13366a[_0x2254('0x31')]=_[_0x2254('0x2b')](_0x3214a7,_0x2254('0x29'));_0x13366a[_0x2254('0x32')]=_[_0x2254('0x33')](_0x2a789b['query']);_0x13366a[_0x2254('0x34')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],_0x13366a[_0x2254('0x32')]);_0x37af8b[_0x2254('0x36')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],qs[_0x2254('0x37')](_0x2a789b[_0x2254('0x32')]['fields']));_0x37af8b[_0x2254('0x36')]=_0x37af8b[_0x2254('0x36')]['length']?_0x37af8b[_0x2254('0x36')]:_0x13366a[_0x2254('0x31')];if(!_0x2a789b[_0x2254('0x32')][_0x2254('0x38')]('nolimit')){_0x37af8b['limit']=qs[_0x2254('0x1f')](_0x2a789b['query'][_0x2254('0x1f')]);_0x37af8b[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0x2a789b[_0x2254('0x32')][_0x2254('0x1e')]);}_0x37af8b[_0x2254('0x39')]=qs[_0x2254('0x3a')](_0x2a789b['query'][_0x2254('0x3a')]);_0x37af8b[_0x2254('0x3b')]=qs[_0x2254('0x34')](_[_0x2254('0x3c')](_0x2a789b[_0x2254('0x32')],_0x13366a[_0x2254('0x34')]),_0x3214a7);if(_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]){_0x37af8b[_0x2254('0x3b')]=_[_0x2254('0x3e')](_0x37af8b['where'],{'$or':_[_0x2254('0x2b')](_0x3214a7,function(_0xde3e4a){if(_0xde3e4a[_0x2254('0x2f')]!==_0x2254('0x3f')){var _0x4c7cc3={};_0x4c7cc3[_0xde3e4a[_0x2254('0x29')]]={'$like':'%'+_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]+'%'};return _0x4c7cc3;}})});}_0x37af8b=_[_0x2254('0x3e')]({},_0x37af8b,_0x2a789b[_0x2254('0x40')]);var _0x2602db={'where':_0x37af8b[_0x2254('0x3b')]};return db[_0x2254('0x2c')]['count'](_0x2602db)[_0x2254('0x26')](function(_0x5c15d7){_0x377c41[_0x2254('0x21')]=_0x5c15d7;if(_0x2a789b[_0x2254('0x32')][_0x2254('0x41')]){_0x37af8b[_0x2254('0x42')]=[{'all':!![]}];}return db[_0x2254('0x2c')][_0x2254('0x43')](_0x37af8b);})[_0x2254('0x26')](function(_0x568ec9){_0x377c41[_0x2254('0x44')]=_0x568ec9;return _0x377c41;})[_0x2254('0x26')](respondWithFilteredResult(_0x21285d,_0x37af8b))[_0x2254('0x45')](handleError(_0x21285d,null));};exports[_0x2254('0x46')]=function(_0x40d4da,_0x57cda2){var _0x22bb98={'raw':![],'where':{'id':_0x40d4da[_0x2254('0x47')]['id']}},_0x1dec43={};_0x1dec43[_0x2254('0x31')]=_[_0x2254('0x33')](db['UserProfileResource'][_0x2254('0x2d')]);_0x1dec43['query']=_[_0x2254('0x33')](_0x40d4da[_0x2254('0x32')]);_0x1dec43[_0x2254('0x34')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],_0x1dec43[_0x2254('0x32')]);_0x22bb98[_0x2254('0x36')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],qs[_0x2254('0x37')](_0x40d4da[_0x2254('0x32')][_0x2254('0x37')]));_0x22bb98[_0x2254('0x36')]=_0x22bb98['attributes'][_0x2254('0x48')]?_0x22bb98[_0x2254('0x36')]:_0x1dec43[_0x2254('0x31')];if(_0x40d4da['query'][_0x2254('0x41')]){_0x22bb98[_0x2254('0x42')]=[{'all':!![]}];}_0x22bb98=_[_0x2254('0x3e')]({},_0x22bb98,_0x40d4da[_0x2254('0x40')]);return db[_0x2254('0x2c')][_0x2254('0x49')](_0x22bb98)[_0x2254('0x26')](handleEntityNotFound(_0x57cda2,null))[_0x2254('0x26')](respondWithResult(_0x57cda2,null))[_0x2254('0x45')](handleError(_0x57cda2,null));};exports['create']=function(_0x239ba0,_0x405eb2){return db[_0x2254('0x2c')][_0x2254('0x4a')](_0x239ba0[_0x2254('0x4b')],{})[_0x2254('0x26')](respondWithResult(_0x405eb2,0xc9))[_0x2254('0x45')](handleError(_0x405eb2,null));};exports[_0x2254('0x25')]=function(_0x3ac691,_0xa103ea){if(_0x3ac691['body']['id']){delete _0x3ac691[_0x2254('0x4b')]['id'];}return db[_0x2254('0x2c')]['find']({'where':{'id':_0x3ac691[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0xa103ea,null))[_0x2254('0x26')](saveUpdates(_0x3ac691[_0x2254('0x4b')],null))['then'](respondWithResult(_0xa103ea,null))[_0x2254('0x45')](handleError(_0xa103ea,null));};exports[_0x2254('0x4c')]=function(_0x4d2c96,_0x26d01a){return db[_0x2254('0x2c')][_0x2254('0x49')]({'where':{'id':_0x4d2c96[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x26d01a,null))[_0x2254('0x26')](removeEntity(_0x26d01a,null))[_0x2254('0x45')](handleError(_0x26d01a,null));};exports[_0x2254('0x4d')]=function(_0x4ba6ef,_0x4cc18a){return db[_0x2254('0x2c')][_0x2254('0x4d')]()['then'](respondWithResult(_0x4cc18a,null))[_0x2254('0x45')](handleError(_0x4cc18a,null));};
\ No newline at end of file
index a3ebc25..5b32ce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc675=['bluebird','request-promise','../../config/environment','exports','define','resourceId','lodash','../../config/logger','moment'];(function(_0x3b2395,_0x1cf2c1){var _0x2e6751=function(_0x4ea274){while(--_0x4ea274){_0x3b2395['push'](_0x3b2395['shift']());}};_0x2e6751(++_0x1cf2c1);}(_0xc675,0xde));var _0x5c67=function(_0x1b58b0,_0x3c302a){_0x1b58b0=_0x1b58b0-0x0;var _0x12190d=_0xc675[_0x1b58b0];return _0x12190d;};'use strict';var _=require(_0x5c67('0x0'));var util=require('util');var logger=require(_0x5c67('0x1'))('api');var moment=require(_0x5c67('0x2'));var BPromise=require(_0x5c67('0x3'));var rp=require(_0x5c67('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5c67('0x5'));var attributes=require('./userProfileResource.attributes');module[_0x5c67('0x6')]=function(_0x1fe46e,_0x261861){return _0x1fe46e[_0x5c67('0x7')]('UserProfileResource',attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x5c67('0x8'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc22=['moment','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','user_profile_has_resources','compositeIndex','sectionId','lodash','../../config/logger','api'];(function(_0x354e9c,_0x6d7b37){var _0x52dcb0=function(_0x188f3d){while(--_0x188f3d){_0x354e9c['push'](_0x354e9c['shift']());}};_0x52dcb0(++_0x6d7b37);}(_0xcc22,0x6d));var _0x2cc2=function(_0x470699,_0x385be3){_0x470699=_0x470699-0x0;var _0x222aa2=_0xcc22[_0x470699];return _0x222aa2;};'use strict';var _=require(_0x2cc2('0x0'));var util=require('util');var logger=require(_0x2cc2('0x1'))(_0x2cc2('0x2'));var moment=require(_0x2cc2('0x3'));var BPromise=require('bluebird');var rp=require(_0x2cc2('0x4'));var fs=require('fs');var path=require(_0x2cc2('0x5'));var rimraf=require(_0x2cc2('0x6'));var config=require(_0x2cc2('0x7'));var attributes=require(_0x2cc2('0x8'));module[_0x2cc2('0x9')]=function(_0x14968e,_0x5f4c58){return _0x14968e[_0x2cc2('0xa')]('UserProfileResource',attributes,{'tableName':_0x2cc2('0xb'),'paranoid':![],'indexes':[{'name':_0x2cc2('0xc'),'fields':['resourceId',_0x2cc2('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 5d028ee..6ac6ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b44=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0xda5316,_0x4a2d41){var _0x36fc6c=function(_0x1af483){while(--_0x1af483){_0xda5316['push'](_0xda5316['shift']());}};_0x36fc6c(++_0x4a2d41);}(_0x2b44,0x84));var _0x42b4=function(_0x4372d4,_0x26b749){_0x4372d4=_0x4372d4-0x0;var _0x35d43f=_0x2b44[_0x4372d4];return _0x35d43f;};'use strict';var _=require(_0x42b4('0x0'));var util=require(_0x42b4('0x1'));var moment=require(_0x42b4('0x2'));var BPromise=require(_0x42b4('0x3'));var rs=require(_0x42b4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x42b4('0x5'))['db'];var utils=require(_0x42b4('0x6'));var logger=require(_0x42b4('0x7'))(_0x42b4('0x8'));var config=require(_0x42b4('0x9'));var jayson=require(_0x42b4('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xb89b1c,_0x4197be,_0x2b98ac){return new BPromise(function(_0x33e4b0,_0x571c2c){return client[_0x42b4('0xb')](_0xb89b1c,_0x2b98ac)[_0x42b4('0xc')](function(_0x4c1f6d){logger[_0x42b4('0xd')](_0x42b4('0xe'),_0x4197be,_0x42b4('0xf'));logger[_0x42b4('0x10')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x4197be,_0x42b4('0xf'),JSON[_0x42b4('0x11')](_0x4c1f6d));if(_0x4c1f6d[_0x42b4('0x12')]){if(_0x4c1f6d[_0x42b4('0x12')][_0x42b4('0x13')]===0x1f4){logger[_0x42b4('0x12')](_0x42b4('0xe'),_0x4197be,_0x4c1f6d['error']['message']);return _0x571c2c(_0x4c1f6d[_0x42b4('0x12')][_0x42b4('0x14')]);}logger[_0x42b4('0x12')](_0x42b4('0xe'),_0x4197be,_0x4c1f6d[_0x42b4('0x12')][_0x42b4('0x14')]);return _0x33e4b0(_0x4c1f6d[_0x42b4('0x12')][_0x42b4('0x14')]);}else{logger[_0x42b4('0xd')](_0x42b4('0xe'),_0x4197be,_0x42b4('0xf'));_0x33e4b0(_0x4c1f6d[_0x42b4('0x15')]['message']);}})[_0x42b4('0x16')](function(_0xfd3df1){logger[_0x42b4('0x12')]('UserProfileResource,\x20%s,\x20%s',_0x4197be,_0xfd3df1);_0x571c2c(_0xfd3df1);});});}
\ No newline at end of file
+var _0x5f33=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','stringify','error','code','UserProfileResource,\x20%s,\x20%s','message','result','util','moment'];(function(_0xe3ef11,_0x4814b5){var _0x28165c=function(_0x263d47){while(--_0x263d47){_0xe3ef11['push'](_0xe3ef11['shift']());}};_0x28165c(++_0x4814b5);}(_0x5f33,0x13e));var _0x35f3=function(_0xd1440a,_0x547ecf){_0xd1440a=_0xd1440a-0x0;var _0x51fba3=_0x5f33[_0xd1440a];return _0x51fba3;};'use strict';var _=require('lodash');var util=require(_0x35f3('0x0'));var moment=require(_0x35f3('0x1'));var BPromise=require('bluebird');var rs=require(_0x35f3('0x2'));var fs=require('fs');var Redis=require(_0x35f3('0x3'));var db=require(_0x35f3('0x4'))['db'];var utils=require(_0x35f3('0x5'));var logger=require(_0x35f3('0x6'))('rpc');var config=require(_0x35f3('0x7'));var jayson=require(_0x35f3('0x8'));var client=jayson['client'][_0x35f3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x494633,_0x326819,_0x19b457){return new BPromise(function(_0x541aac,_0x428856){return client['request'](_0x494633,_0x19b457)[_0x35f3('0xa')](function(_0x2a4b5b){logger[_0x35f3('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x326819,_0x35f3('0xc'));logger[_0x35f3('0xd')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x326819,_0x35f3('0xc'),JSON[_0x35f3('0xe')](_0x2a4b5b));if(_0x2a4b5b[_0x35f3('0xf')]){if(_0x2a4b5b[_0x35f3('0xf')][_0x35f3('0x10')]===0x1f4){logger[_0x35f3('0xf')](_0x35f3('0x11'),_0x326819,_0x2a4b5b[_0x35f3('0xf')][_0x35f3('0x12')]);return _0x428856(_0x2a4b5b['error'][_0x35f3('0x12')]);}logger[_0x35f3('0xf')]('UserProfileResource,\x20%s,\x20%s',_0x326819,_0x2a4b5b[_0x35f3('0xf')]['message']);return _0x541aac(_0x2a4b5b['error'][_0x35f3('0x12')]);}else{logger[_0x35f3('0xb')](_0x35f3('0x11'),_0x326819,_0x35f3('0xc'));_0x541aac(_0x2a4b5b[_0x35f3('0x13')][_0x35f3('0x12')]);}})['catch'](function(_0x3df7cc){logger['error'](_0x35f3('0x11'),_0x326819,_0x3df7cc);_0x428856(_0x3df7cc);});});}
\ No newline at end of file
index ad1e7f4..9d0daa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0324=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/describe','describe','get','/:id','post','create','update','delete','destroy'];(function(_0x2fbcf6,_0x2e7155){var _0x3e7265=function(_0x15a3c3){while(--_0x15a3c3){_0x2fbcf6['push'](_0x2fbcf6['shift']());}};_0x3e7265(++_0x2e7155);}(_0x0324,0xd3));var _0x4032=function(_0x4a142f,_0x3555cc){_0x4a142f=_0x4a142f-0x0;var _0x10202e=_0x0324[_0x4a142f];return _0x10202e;};'use strict';var multer=require(_0x4032('0x0'));var util=require(_0x4032('0x1'));var path=require(_0x4032('0x2'));var timeout=require(_0x4032('0x3'));var express=require(_0x4032('0x4'));var router=express[_0x4032('0x5')]();var fs_extra=require(_0x4032('0x6'));var auth=require(_0x4032('0x7'));var interaction=require(_0x4032('0x8'));var config=require(_0x4032('0x9'));var controller=require('./userProfileSection.controller');router['get']('/',auth[_0x4032('0xa')](),controller['index']);router['get'](_0x4032('0xb'),auth[_0x4032('0xa')](),controller[_0x4032('0xc')]);router[_0x4032('0xd')](_0x4032('0xe'),auth[_0x4032('0xa')](),controller['show']);router[_0x4032('0xf')]('/',auth['isAuthenticated'](),controller[_0x4032('0x10')]);router['put'](_0x4032('0xe'),auth[_0x4032('0xa')](),controller[_0x4032('0x11')]);router[_0x4032('0x12')](_0x4032('0xe'),auth[_0x4032('0xa')](),controller[_0x4032('0x13')]);module[_0x4032('0x14')]=router;
\ No newline at end of file
+var _0x3d43=['post','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','describe','get','show'];(function(_0x2c0dc0,_0x19900d){var _0x4c0990=function(_0x530791){while(--_0x530791){_0x2c0dc0['push'](_0x2c0dc0['shift']());}};_0x4c0990(++_0x19900d);}(_0x3d43,0xf4));var _0x33d4=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0x3d43[_0x298ed3];return _0x5aad28;};'use strict';var multer=require(_0x33d4('0x0'));var util=require('util');var path=require(_0x33d4('0x1'));var timeout=require('connect-timeout');var express=require(_0x33d4('0x2'));var router=express['Router']();var fs_extra=require(_0x33d4('0x3'));var auth=require(_0x33d4('0x4'));var interaction=require(_0x33d4('0x5'));var config=require(_0x33d4('0x6'));var controller=require('./userProfileSection.controller');router['get']('/',auth[_0x33d4('0x7')](),controller[_0x33d4('0x8')]);router['get']('/describe',auth[_0x33d4('0x7')](),controller[_0x33d4('0x9')]);router[_0x33d4('0xa')]('/:id',auth[_0x33d4('0x7')](),controller[_0x33d4('0xb')]);router[_0x33d4('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x33d4('0x7')](),controller['update']);router[_0x33d4('0xd')]('/:id',auth[_0x33d4('0x7')](),controller[_0x33d4('0xe')]);module[_0x33d4('0xf')]=router;
\ No newline at end of file
index e2a9b63..e17676e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['BOOLEAN','crudPermissions','join','getDataValue','split','sequelize','exports','STRING','INTEGER'];(function(_0x52b8ad,_0x425b4b){var _0x4deb5a=function(_0x53f2bf){while(--_0x53f2bf){_0x52b8ad['push'](_0x52b8ad['shift']());}};_0x4deb5a(++_0x425b4b);}(_0x4483,0x1a3));var _0x3448=function(_0x46d30e,_0x5bfc0c){_0x46d30e=_0x46d30e-0x0;var _0x2711cf=_0x4483[_0x46d30e];return _0x2711cf;};'use strict';var Sequelize=require(_0x3448('0x0'));module[_0x3448('0x1')]={'name':{'type':Sequelize[_0x3448('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x3448('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x3448('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x3448('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x3448('0x2')],'set':function(_0xef1a93){this['setDataValue'](_0x3448('0x5'),_0xef1a93?_0xef1a93[_0x3448('0x6')](''):[]);},'get':function(){return this[_0x3448('0x7')](_0x3448('0x5'))?this[_0x3448('0x7')](_0x3448('0x5'))[_0x3448('0x8')](''):[];}}};
\ No newline at end of file
+var _0xb9a7=['getDataValue','split','exports','BOOLEAN','STRING','setDataValue','crudPermissions','join'];(function(_0x2a7c74,_0x1a70ef){var _0x1375ae=function(_0x1d85bb){while(--_0x1d85bb){_0x2a7c74['push'](_0x2a7c74['shift']());}};_0x1375ae(++_0x1a70ef);}(_0xb9a7,0x112));var _0x7b9a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xb9a7[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require('sequelize');module[_0x7b9a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x7b9a('0x1')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x7b9a('0x2')],'set':function(_0x40ef7d){this[_0x7b9a('0x3')](_0x7b9a('0x4'),_0x40ef7d?_0x40ef7d[_0x7b9a('0x5')](''):[]);},'get':function(){return this[_0x7b9a('0x6')](_0x7b9a('0x4'))?this[_0x7b9a('0x6')](_0x7b9a('0x4'))[_0x7b9a('0x7')](''):[];}}};
\ No newline at end of file
index 9eeaf02..b990913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121e=['json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','UserProfileSection','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','include','findAll','rows','show','params','keys','length','includeAll','merge','find','catch','create','body','update','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status'];(function(_0x4e369b,_0x2b126c){var _0x4af7d1=function(_0x127558){while(--_0x127558){_0x4e369b['push'](_0x4e369b['shift']());}};_0x4af7d1(++_0x2b126c);}(_0x121e,0x1a3));var _0xe121=function(_0xf131f3,_0x8cd5a){_0xf131f3=_0xf131f3-0x0;var _0x261525=_0x121e[_0xf131f3];return _0x261525;};'use strict';var emlformat=require(_0xe121('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe121('0x1'));var jsonpatch=require(_0xe121('0x2'));var rp=require(_0xe121('0x3'));var moment=require(_0xe121('0x4'));var BPromise=require(_0xe121('0x5'));var Mustache=require(_0xe121('0x6'));var util=require(_0xe121('0x7'));var path=require(_0xe121('0x8'));var sox=require(_0xe121('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe121('0xa'));var _=require('lodash');var squel=require(_0xe121('0xb'));var crypto=require(_0xe121('0xc'));var jsforce=require(_0xe121('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe121('0xe'));var Redis=require(_0xe121('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe121('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe121('0x11'));var logger=require(_0xe121('0x12'))(_0xe121('0x13'));var utils=require(_0xe121('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe121('0x15'))['db'];function respondWithStatusCode(_0x512dbb,_0x3703cc){_0x3703cc=_0x3703cc||0xcc;return function(_0x2fcc0a){if(_0x2fcc0a){return _0x512dbb[_0xe121('0x16')](_0x3703cc);}return _0x512dbb['status'](_0x3703cc)[_0xe121('0x17')]();};}function respondWithResult(_0x711d00,_0x34a306){_0x34a306=_0x34a306||0xc8;return function(_0x3cf589){if(_0x3cf589){return _0x711d00[_0xe121('0x18')](_0x34a306)[_0xe121('0x19')](_0x3cf589);}};}function respondWithFilteredResult(_0x1c87f3,_0x2cee3e){return function(_0x4fe233){if(_0x4fe233){var _0x40e779=typeof _0x2cee3e['offset']===_0xe121('0x1a')&&typeof _0x2cee3e[_0xe121('0x1b')]==='undefined';var _0x17fb7f=_0x4fe233[_0xe121('0x1c')];var _0x24931c=_0x40e779?0x0:_0x2cee3e[_0xe121('0x1d')];var _0x2a77bd=_0x40e779?_0x4fe233[_0xe121('0x1c')]:_0x2cee3e['offset']+_0x2cee3e[_0xe121('0x1b')];var _0x4629ab;if(_0x2a77bd>=_0x17fb7f){_0x2a77bd=_0x17fb7f;_0x4629ab=0xc8;}else{_0x4629ab=0xce;}_0x1c87f3[_0xe121('0x18')](_0x4629ab);return _0x1c87f3[_0xe121('0x1e')](_0xe121('0x1f'),_0x24931c+'-'+_0x2a77bd+'/'+_0x17fb7f)[_0xe121('0x19')](_0x4fe233);}return null;};}function patchUpdates(_0x1d327b){return function(_0x43420f){try{jsonpatch[_0xe121('0x20')](_0x43420f,_0x1d327b,!![]);}catch(_0x5c47bc){return BPromise[_0xe121('0x21')](_0x5c47bc);}return _0x43420f[_0xe121('0x22')]();};}function saveUpdates(_0x8da4da,_0x58024a){return function(_0x25c559){if(_0x25c559){return _0x25c559['update'](_0x8da4da)[_0xe121('0x23')](function(_0x58ddbd){return _0x58ddbd;});}return null;};}function removeEntity(_0x2bed8a,_0x270f14){return function(_0x1ea5ee){if(_0x1ea5ee){return _0x1ea5ee['destroy']()[_0xe121('0x23')](function(){_0x2bed8a[_0xe121('0x18')](0xcc)[_0xe121('0x17')]();});}};}function handleEntityNotFound(_0x2ab046,_0x198367){return function(_0x5b73c6){if(!_0x5b73c6){_0x2ab046[_0xe121('0x16')](0x194);}return _0x5b73c6;};}function handleError(_0x41f1c4,_0x3c4f8b){_0x3c4f8b=_0x3c4f8b||0x1f4;return function(_0x4a63ec){logger[_0xe121('0x24')](_0x4a63ec[_0xe121('0x25')]);if(_0x4a63ec['name']){delete _0x4a63ec[_0xe121('0x26')];}_0x41f1c4['status'](_0x3c4f8b)[_0xe121('0x27')](_0x4a63ec);};}exports[_0xe121('0x28')]=function(_0x46c758,_0x45427f){var _0x4e4d65={},_0xb1db04={},_0x4ccd3b={'count':0x0,'rows':[]};var _0x47faf6=_['map'](db[_0xe121('0x29')][_0xe121('0x2a')],function(_0x912b9d){return{'name':_0x912b9d['fieldName'],'type':_0x912b9d[_0xe121('0x2b')][_0xe121('0x2c')]};});_0xb1db04[_0xe121('0x2d')]=_[_0xe121('0x2e')](_0x47faf6,_0xe121('0x26'));_0xb1db04[_0xe121('0x2f')]=_['keys'](_0x46c758[_0xe121('0x2f')]);_0xb1db04[_0xe121('0x30')]=_[_0xe121('0x31')](_0xb1db04[_0xe121('0x2d')],_0xb1db04[_0xe121('0x2f')]);_0x4e4d65[_0xe121('0x32')]=_[_0xe121('0x31')](_0xb1db04[_0xe121('0x2d')],qs[_0xe121('0x33')](_0x46c758[_0xe121('0x2f')][_0xe121('0x33')]));_0x4e4d65[_0xe121('0x32')]=_0x4e4d65[_0xe121('0x32')]['length']?_0x4e4d65[_0xe121('0x32')]:_0xb1db04[_0xe121('0x2d')];if(!_0x46c758[_0xe121('0x2f')][_0xe121('0x34')]('nolimit')){_0x4e4d65['limit']=qs[_0xe121('0x1b')](_0x46c758[_0xe121('0x2f')][_0xe121('0x1b')]);_0x4e4d65[_0xe121('0x1d')]=qs[_0xe121('0x1d')](_0x46c758['query'][_0xe121('0x1d')]);}_0x4e4d65['order']=qs[_0xe121('0x35')](_0x46c758[_0xe121('0x2f')]['sort']);_0x4e4d65[_0xe121('0x36')]=qs['filters'](_[_0xe121('0x37')](_0x46c758[_0xe121('0x2f')],_0xb1db04[_0xe121('0x30')]),_0x47faf6);if(_0x46c758[_0xe121('0x2f')][_0xe121('0x38')]){_0x4e4d65[_0xe121('0x36')]=_['merge'](_0x4e4d65['where'],{'$or':_['map'](_0x47faf6,function(_0x191187){if(_0x191187['type']!==_0xe121('0x39')){var _0x3d9fe3={};_0x3d9fe3[_0x191187[_0xe121('0x26')]]={'$like':'%'+_0x46c758[_0xe121('0x2f')]['filter']+'%'};return _0x3d9fe3;}})});}_0x4e4d65=_['merge']({},_0x4e4d65,_0x46c758['options']);var _0x181d67={'where':_0x4e4d65['where']};return db[_0xe121('0x29')][_0xe121('0x1c')](_0x181d67)[_0xe121('0x23')](function(_0x2bd548){_0x4ccd3b[_0xe121('0x1c')]=_0x2bd548;if(_0x46c758['query']['includeAll']){_0x4e4d65[_0xe121('0x3a')]=[{'all':!![]}];}return db[_0xe121('0x29')][_0xe121('0x3b')](_0x4e4d65);})[_0xe121('0x23')](function(_0x382e50){_0x4ccd3b[_0xe121('0x3c')]=_0x382e50;return _0x4ccd3b;})[_0xe121('0x23')](respondWithFilteredResult(_0x45427f,_0x4e4d65))['catch'](handleError(_0x45427f,null));};exports[_0xe121('0x3d')]=function(_0x44bb48,_0x4ca832){var _0x2b6293={'raw':![],'where':{'id':_0x44bb48[_0xe121('0x3e')]['id']}},_0xd1920e={};_0xd1920e[_0xe121('0x2d')]=_[_0xe121('0x3f')](db[_0xe121('0x29')][_0xe121('0x2a')]);_0xd1920e['query']=_[_0xe121('0x3f')](_0x44bb48['query']);_0xd1920e[_0xe121('0x30')]=_[_0xe121('0x31')](_0xd1920e['model'],_0xd1920e[_0xe121('0x2f')]);_0x2b6293[_0xe121('0x32')]=_['intersection'](_0xd1920e[_0xe121('0x2d')],qs[_0xe121('0x33')](_0x44bb48[_0xe121('0x2f')][_0xe121('0x33')]));_0x2b6293['attributes']=_0x2b6293[_0xe121('0x32')][_0xe121('0x40')]?_0x2b6293['attributes']:_0xd1920e[_0xe121('0x2d')];if(_0x44bb48['query'][_0xe121('0x41')]){_0x2b6293['include']=[{'all':!![]}];}_0x2b6293=_[_0xe121('0x42')]({},_0x2b6293,_0x44bb48['options']);return db['UserProfileSection'][_0xe121('0x43')](_0x2b6293)['then'](handleEntityNotFound(_0x4ca832,null))[_0xe121('0x23')](respondWithResult(_0x4ca832,null))[_0xe121('0x44')](handleError(_0x4ca832,null));};exports[_0xe121('0x45')]=function(_0x5e5418,_0xcc4061){return db['UserProfileSection'][_0xe121('0x45')](_0x5e5418[_0xe121('0x46')],{})['then'](respondWithResult(_0xcc4061,0xc9))['catch'](handleError(_0xcc4061,null));};exports[_0xe121('0x47')]=function(_0x19527c,_0x35fc81){if(_0x19527c[_0xe121('0x46')]['id']){delete _0x19527c[_0xe121('0x46')]['id'];}return db['UserProfileSection']['find']({'where':{'id':_0x19527c['params']['id']}})[_0xe121('0x23')](handleEntityNotFound(_0x35fc81,null))['then'](saveUpdates(_0x19527c['body'],null))[_0xe121('0x23')](respondWithResult(_0x35fc81,null))[_0xe121('0x44')](handleError(_0x35fc81,null));};exports[_0xe121('0x48')]=function(_0x12e822,_0x100cda){return db[_0xe121('0x29')][_0xe121('0x43')]({'where':{'id':_0x12e822[_0xe121('0x3e')]['id']}})[_0xe121('0x23')](handleEntityNotFound(_0x100cda,null))[_0xe121('0x23')](removeEntity(_0x100cda,null))[_0xe121('0x44')](handleError(_0x100cda,null));};exports[_0xe121('0x49')]=function(_0x5cbf0c,_0x175774){return db['UserProfileSection']['describe']()[_0xe121('0x23')](respondWithResult(_0x175774,null))[_0xe121('0x44')](handleError(_0x175774,null));};
\ No newline at end of file
+var _0xcf42=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','sendStatus','error','name','send','index','map','UserProfileSection','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','include','catch','params','fields','create','body','find','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcf42,0xcd));var _0x2cf4=function(_0x241e11,_0x128d83){_0x241e11=_0x241e11-0x0;var _0x1593dd=_0xcf42[_0x241e11];return _0x1593dd;};'use strict';var emlformat=require(_0x2cf4('0x0'));var rimraf=require(_0x2cf4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2cf4('0x2'));var rp=require(_0x2cf4('0x3'));var moment=require(_0x2cf4('0x4'));var BPromise=require(_0x2cf4('0x5'));var Mustache=require(_0x2cf4('0x6'));var util=require(_0x2cf4('0x7'));var path=require(_0x2cf4('0x8'));var sox=require(_0x2cf4('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2cf4('0xa'));var _=require(_0x2cf4('0xb'));var squel=require(_0x2cf4('0xc'));var crypto=require(_0x2cf4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2cf4('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2cf4('0xf'));var Papa=require(_0x2cf4('0x10'));var Redis=require(_0x2cf4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2cf4('0x12'));var as=require(_0x2cf4('0x13'));var hardwareService=require(_0x2cf4('0x14'));var logger=require(_0x2cf4('0x15'))(_0x2cf4('0x16'));var utils=require(_0x2cf4('0x17'));var config=require(_0x2cf4('0x18'));var licenseUtil=require(_0x2cf4('0x19'));var db=require(_0x2cf4('0x1a'))['db'];function respondWithStatusCode(_0x18547c,_0x430411){_0x430411=_0x430411||0xcc;return function(_0x32173d){if(_0x32173d){return _0x18547c['sendStatus'](_0x430411);}return _0x18547c[_0x2cf4('0x1b')](_0x430411)['end']();};}function respondWithResult(_0x134e62,_0x14b0b9){_0x14b0b9=_0x14b0b9||0xc8;return function(_0x34edd2){if(_0x34edd2){return _0x134e62[_0x2cf4('0x1b')](_0x14b0b9)['json'](_0x34edd2);}};}function respondWithFilteredResult(_0x594fee,_0x2d3153){return function(_0x43bd27){if(_0x43bd27){var _0x7f080c=typeof _0x2d3153[_0x2cf4('0x1c')]===_0x2cf4('0x1d')&&typeof _0x2d3153[_0x2cf4('0x1e')]===_0x2cf4('0x1d');var _0x45e6fc=_0x43bd27[_0x2cf4('0x1f')];var _0x3ec206=_0x7f080c?0x0:_0x2d3153[_0x2cf4('0x1c')];var _0x391dab=_0x7f080c?_0x43bd27['count']:_0x2d3153['offset']+_0x2d3153[_0x2cf4('0x1e')];var _0x4cb405;if(_0x391dab>=_0x45e6fc){_0x391dab=_0x45e6fc;_0x4cb405=0xc8;}else{_0x4cb405=0xce;}_0x594fee[_0x2cf4('0x1b')](_0x4cb405);return _0x594fee[_0x2cf4('0x20')](_0x2cf4('0x21'),_0x3ec206+'-'+_0x391dab+'/'+_0x45e6fc)[_0x2cf4('0x22')](_0x43bd27);}return null;};}function patchUpdates(_0x16d8df){return function(_0x143425){try{jsonpatch[_0x2cf4('0x23')](_0x143425,_0x16d8df,!![]);}catch(_0x24879d){return BPromise[_0x2cf4('0x24')](_0x24879d);}return _0x143425['save']();};}function saveUpdates(_0x4a6b8f,_0x1835d2){return function(_0xdd02ae){if(_0xdd02ae){return _0xdd02ae[_0x2cf4('0x25')](_0x4a6b8f)[_0x2cf4('0x26')](function(_0x487df2){return _0x487df2;});}return null;};}function removeEntity(_0x4ae44c,_0xf0d7ce){return function(_0x44f848){if(_0x44f848){return _0x44f848['destroy']()[_0x2cf4('0x26')](function(){_0x4ae44c[_0x2cf4('0x1b')](0xcc)[_0x2cf4('0x27')]();});}};}function handleEntityNotFound(_0x2e8515,_0x1f188c){return function(_0x51ad82){if(!_0x51ad82){_0x2e8515[_0x2cf4('0x28')](0x194);}return _0x51ad82;};}function handleError(_0x4f1070,_0x1606f9){_0x1606f9=_0x1606f9||0x1f4;return function(_0x2cbee2){logger[_0x2cf4('0x29')](_0x2cbee2['stack']);if(_0x2cbee2['name']){delete _0x2cbee2[_0x2cf4('0x2a')];}_0x4f1070[_0x2cf4('0x1b')](_0x1606f9)[_0x2cf4('0x2b')](_0x2cbee2);};}exports[_0x2cf4('0x2c')]=function(_0x4da03d,_0x156405){var _0x2de1b0={},_0xa4dfba={},_0x14f65d={'count':0x0,'rows':[]};var _0x6ec3dc=_[_0x2cf4('0x2d')](db[_0x2cf4('0x2e')]['rawAttributes'],function(_0x2a00cb){return{'name':_0x2a00cb[_0x2cf4('0x2f')],'type':_0x2a00cb[_0x2cf4('0x30')][_0x2cf4('0x31')]};});_0xa4dfba[_0x2cf4('0x32')]=_[_0x2cf4('0x2d')](_0x6ec3dc,_0x2cf4('0x2a'));_0xa4dfba[_0x2cf4('0x33')]=_[_0x2cf4('0x34')](_0x4da03d[_0x2cf4('0x33')]);_0xa4dfba['filters']=_[_0x2cf4('0x35')](_0xa4dfba[_0x2cf4('0x32')],_0xa4dfba['query']);_0x2de1b0[_0x2cf4('0x36')]=_[_0x2cf4('0x35')](_0xa4dfba[_0x2cf4('0x32')],qs['fields'](_0x4da03d[_0x2cf4('0x33')]['fields']));_0x2de1b0['attributes']=_0x2de1b0['attributes'][_0x2cf4('0x37')]?_0x2de1b0[_0x2cf4('0x36')]:_0xa4dfba[_0x2cf4('0x32')];if(!_0x4da03d['query'][_0x2cf4('0x38')](_0x2cf4('0x39'))){_0x2de1b0[_0x2cf4('0x1e')]=qs['limit'](_0x4da03d['query']['limit']);_0x2de1b0['offset']=qs[_0x2cf4('0x1c')](_0x4da03d[_0x2cf4('0x33')]['offset']);}_0x2de1b0['order']=qs['sort'](_0x4da03d['query'][_0x2cf4('0x3a')]);_0x2de1b0['where']=qs['filters'](_['pick'](_0x4da03d[_0x2cf4('0x33')],_0xa4dfba[_0x2cf4('0x3b')]),_0x6ec3dc);if(_0x4da03d[_0x2cf4('0x33')][_0x2cf4('0x3c')]){_0x2de1b0[_0x2cf4('0x3d')]=_[_0x2cf4('0x3e')](_0x2de1b0['where'],{'$or':_['map'](_0x6ec3dc,function(_0x10965e){if(_0x10965e[_0x2cf4('0x30')]!==_0x2cf4('0x3f')){var _0x172b67={};_0x172b67[_0x10965e[_0x2cf4('0x2a')]]={'$like':'%'+_0x4da03d[_0x2cf4('0x33')][_0x2cf4('0x3c')]+'%'};return _0x172b67;}})});}_0x2de1b0=_[_0x2cf4('0x3e')]({},_0x2de1b0,_0x4da03d[_0x2cf4('0x40')]);var _0x3b06d5={'where':_0x2de1b0[_0x2cf4('0x3d')]};return db['UserProfileSection'][_0x2cf4('0x1f')](_0x3b06d5)[_0x2cf4('0x26')](function(_0x46f37e){_0x14f65d['count']=_0x46f37e;if(_0x4da03d[_0x2cf4('0x33')][_0x2cf4('0x41')]){_0x2de1b0[_0x2cf4('0x42')]=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x2de1b0);})[_0x2cf4('0x26')](function(_0x54ad81){_0x14f65d['rows']=_0x54ad81;return _0x14f65d;})[_0x2cf4('0x26')](respondWithFilteredResult(_0x156405,_0x2de1b0))[_0x2cf4('0x43')](handleError(_0x156405,null));};exports['show']=function(_0x20d728,_0x27a74f){var _0x1e62ef={'raw':![],'where':{'id':_0x20d728[_0x2cf4('0x44')]['id']}},_0x23cc4f={};_0x23cc4f[_0x2cf4('0x32')]=_[_0x2cf4('0x34')](db[_0x2cf4('0x2e')]['rawAttributes']);_0x23cc4f[_0x2cf4('0x33')]=_['keys'](_0x20d728['query']);_0x23cc4f[_0x2cf4('0x3b')]=_['intersection'](_0x23cc4f[_0x2cf4('0x32')],_0x23cc4f[_0x2cf4('0x33')]);_0x1e62ef[_0x2cf4('0x36')]=_['intersection'](_0x23cc4f[_0x2cf4('0x32')],qs[_0x2cf4('0x45')](_0x20d728[_0x2cf4('0x33')][_0x2cf4('0x45')]));_0x1e62ef[_0x2cf4('0x36')]=_0x1e62ef[_0x2cf4('0x36')]['length']?_0x1e62ef[_0x2cf4('0x36')]:_0x23cc4f[_0x2cf4('0x32')];if(_0x20d728['query'][_0x2cf4('0x41')]){_0x1e62ef[_0x2cf4('0x42')]=[{'all':!![]}];}_0x1e62ef=_['merge']({},_0x1e62ef,_0x20d728[_0x2cf4('0x40')]);return db[_0x2cf4('0x2e')]['find'](_0x1e62ef)[_0x2cf4('0x26')](handleEntityNotFound(_0x27a74f,null))[_0x2cf4('0x26')](respondWithResult(_0x27a74f,null))[_0x2cf4('0x43')](handleError(_0x27a74f,null));};exports['create']=function(_0x259aa2,_0x21f8d4){return db['UserProfileSection'][_0x2cf4('0x46')](_0x259aa2[_0x2cf4('0x47')],{})[_0x2cf4('0x26')](respondWithResult(_0x21f8d4,0xc9))[_0x2cf4('0x43')](handleError(_0x21f8d4,null));};exports['update']=function(_0xe4c764,_0x15bc23){if(_0xe4c764[_0x2cf4('0x47')]['id']){delete _0xe4c764[_0x2cf4('0x47')]['id'];}return db[_0x2cf4('0x2e')][_0x2cf4('0x48')]({'where':{'id':_0xe4c764['params']['id']}})[_0x2cf4('0x26')](handleEntityNotFound(_0x15bc23,null))[_0x2cf4('0x26')](saveUpdates(_0xe4c764[_0x2cf4('0x47')],null))['then'](respondWithResult(_0x15bc23,null))[_0x2cf4('0x43')](handleError(_0x15bc23,null));};exports[_0x2cf4('0x49')]=function(_0x2a9b8c,_0x5cd8e7){return db[_0x2cf4('0x2e')][_0x2cf4('0x48')]({'where':{'id':_0x2a9b8c[_0x2cf4('0x44')]['id']}})[_0x2cf4('0x26')](handleEntityNotFound(_0x5cd8e7,null))[_0x2cf4('0x26')](removeEntity(_0x5cd8e7,null))[_0x2cf4('0x43')](handleError(_0x5cd8e7,null));};exports[_0x2cf4('0x4a')]=function(_0x205443,_0x36874c){return db[_0x2cf4('0x2e')][_0x2cf4('0x4a')]()[_0x2cf4('0x26')](respondWithResult(_0x36874c,null))[_0x2cf4('0x43')](handleError(_0x36874c,null));};
\ No newline at end of file
index 69873fd..96a79ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a5=['UserProfileSection','compositeIndex','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userProfileSection.attributes','exports','define'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0xa2a5,0x84));var _0x5a2a=function(_0x29b54f,_0x210f85){_0x29b54f=_0x29b54f-0x0;var _0x3d76b3=_0xa2a5[_0x29b54f];return _0x3d76b3;};'use strict';var _=require(_0x5a2a('0x0'));var util=require(_0x5a2a('0x1'));var logger=require(_0x5a2a('0x2'))(_0x5a2a('0x3'));var moment=require(_0x5a2a('0x4'));var BPromise=require(_0x5a2a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5a2a('0x6'));var config=require(_0x5a2a('0x7'));var attributes=require(_0x5a2a('0x8'));module[_0x5a2a('0x9')]=function(_0xc79861,_0x44bd64){return _0xc79861[_0x5a2a('0xa')](_0x5a2a('0xb'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x5a2a('0xc'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x43a5=['../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','util','../../config/logger','request-promise','rimraf'];(function(_0x361a0d,_0x161c0f){var _0x2bdbb8=function(_0x1a8419){while(--_0x1a8419){_0x361a0d['push'](_0x361a0d['shift']());}};_0x2bdbb8(++_0x161c0f);}(_0x43a5,0x196));var _0x543a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x43a5[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x543a('0x0'));var logger=require(_0x543a('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x543a('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x543a('0x3'));var config=require(_0x543a('0x4'));var attributes=require(_0x543a('0x5'));module[_0x543a('0x6')]=function(_0x42c77c,_0x4f24e3){return _0x42c77c[_0x543a('0x7')](_0x543a('0x8'),attributes,{'tableName':_0x543a('0x9'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index 9251fba..b35c2e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17bf=['debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','UserProfileSection,\x20%s,\x20%s'];(function(_0x3c25e6,_0x1b1b19){var _0x51f0da=function(_0x4f3d63){while(--_0x4f3d63){_0x3c25e6['push'](_0x3c25e6['shift']());}};_0x51f0da(++_0x1b1b19);}(_0x17bf,0x11d));var _0xf17b=function(_0x83dcb4,_0x8cc29){_0x83dcb4=_0x83dcb4-0x0;var _0x18a830=_0x17bf[_0x83dcb4];return _0x18a830;};'use strict';var _=require(_0xf17b('0x0'));var util=require(_0xf17b('0x1'));var moment=require(_0xf17b('0x2'));var BPromise=require(_0xf17b('0x3'));var rs=require(_0xf17b('0x4'));var fs=require('fs');var Redis=require(_0xf17b('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf17b('0x6'))(_0xf17b('0x7'));var config=require(_0xf17b('0x8'));var jayson=require(_0xf17b('0x9'));var client=jayson[_0xf17b('0xa')][_0xf17b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x594fc9,_0x2c2d88,_0x3c993c){return new BPromise(function(_0x1f5f28,_0x4856a5){return client[_0xf17b('0xc')](_0x594fc9,_0x3c993c)['then'](function(_0xa953c1){logger['info'](_0xf17b('0xd'),_0x2c2d88,'request\x20sent');logger[_0xf17b('0xe')](_0xf17b('0xf'),_0x2c2d88,_0xf17b('0x10'),JSON[_0xf17b('0x11')](_0xa953c1));if(_0xa953c1['error']){if(_0xa953c1[_0xf17b('0x12')][_0xf17b('0x13')]===0x1f4){logger[_0xf17b('0x12')](_0xf17b('0xd'),_0x2c2d88,_0xa953c1[_0xf17b('0x12')][_0xf17b('0x14')]);return _0x4856a5(_0xa953c1[_0xf17b('0x12')][_0xf17b('0x14')]);}logger['error']('UserProfileSection,\x20%s,\x20%s',_0x2c2d88,_0xa953c1[_0xf17b('0x12')][_0xf17b('0x14')]);return _0x1f5f28(_0xa953c1[_0xf17b('0x12')]['message']);}else{logger[_0xf17b('0x15')]('UserProfileSection,\x20%s,\x20%s',_0x2c2d88,'request\x20sent');_0x1f5f28(_0xa953c1[_0xf17b('0x16')][_0xf17b('0x14')]);}})['catch'](function(_0x4db0da){logger['error'](_0xf17b('0xd'),_0x2c2d88,_0x4db0da);_0x4856a5(_0x4db0da);});});}
\ No newline at end of file
+var _0xd8af=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment'];(function(_0x5f1953,_0x3307d2){var _0x59cc75=function(_0x130f36){while(--_0x130f36){_0x5f1953['push'](_0x5f1953['shift']());}};_0x59cc75(++_0x3307d2);}(_0xd8af,0x18d));var _0xfd8a=function(_0x2f3866,_0x38dde3){_0x2f3866=_0x2f3866-0x0;var _0x1b08e3=_0xd8af[_0x2f3866];return _0x1b08e3;};'use strict';var _=require(_0xfd8a('0x0'));var util=require(_0xfd8a('0x1'));var moment=require(_0xfd8a('0x2'));var BPromise=require(_0xfd8a('0x3'));var rs=require(_0xfd8a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfd8a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfd8a('0x6'))(_0xfd8a('0x7'));var config=require(_0xfd8a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfd8a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8b725c,_0xdb72fc,_0x31fdfc){return new BPromise(function(_0x1d1fb4,_0x5d2f8d){return client[_0xfd8a('0xa')](_0x8b725c,_0x31fdfc)[_0xfd8a('0xb')](function(_0x2c7d72){logger[_0xfd8a('0xc')](_0xfd8a('0xd'),_0xdb72fc,_0xfd8a('0xe'));logger['debug']('UserProfileSection,\x20%s,\x20%s,\x20%s',_0xdb72fc,_0xfd8a('0xe'),JSON[_0xfd8a('0xf')](_0x2c7d72));if(_0x2c7d72[_0xfd8a('0x10')]){if(_0x2c7d72['error']['code']===0x1f4){logger['error'](_0xfd8a('0xd'),_0xdb72fc,_0x2c7d72[_0xfd8a('0x10')]['message']);return _0x5d2f8d(_0x2c7d72['error'][_0xfd8a('0x11')]);}logger[_0xfd8a('0x10')](_0xfd8a('0xd'),_0xdb72fc,_0x2c7d72[_0xfd8a('0x10')][_0xfd8a('0x11')]);return _0x1d1fb4(_0x2c7d72[_0xfd8a('0x10')][_0xfd8a('0x11')]);}else{logger[_0xfd8a('0xc')](_0xfd8a('0xd'),_0xdb72fc,_0xfd8a('0xe'));_0x1d1fb4(_0x2c7d72[_0xfd8a('0x12')][_0xfd8a('0x11')]);}})[_0xfd8a('0x13')](function(_0x25eed2){logger[_0xfd8a('0x10')](_0xfd8a('0xd'),_0xdb72fc,_0x25eed2);_0x5d2f8d(_0x25eed2);});});}
\ No newline at end of file
index 4679e3c..563c3a6 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(_0x248521,_0xad6396){var _0xb10e0=function(_0xd70370){while(--_0xd70370){_0x248521['push'](_0x248521['shift']());}};_0xb10e0(++_0xad6396);}(_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(_0x218e3f,_0x3aec3a){var _0x375aa1=function(_0xffb7e){while(--_0xffb7e){_0x218e3f['push'](_0x218e3f['shift']());}};_0x375aa1(++_0x3aec3a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 4f772a0..c1fc012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd98b=['INTEGER','sequelize'];(function(_0x596531,_0x37bc83){var _0x306578=function(_0x3ea64f){while(--_0x3ea64f){_0x596531['push'](_0x596531['shift']());}};_0x306578(++_0x37bc83);}(_0xd98b,0x1d1));var _0xbd98=function(_0x8550ba,_0x57c10d){_0x8550ba=_0x8550ba-0x0;var _0x432399=_0xd98b[_0x8550ba];return _0x432399;};'use strict';var Sequelize=require(_0xbd98('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xbd98('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa55f=['INTEGER','sequelize','exports'];(function(_0x5d3270,_0x5c93a6){var _0x1a0b5e=function(_0x3cc978){while(--_0x3cc978){_0x5d3270['push'](_0x5d3270['shift']());}};_0x1a0b5e(++_0x5c93a6);}(_0xa55f,0x172));var _0xfa55=function(_0x368a4d,_0x4c3718){_0x368a4d=_0x368a4d-0x0;var _0x29c15d=_0xa55f[_0x368a4d];return _0x29c15d;};'use strict';var Sequelize=require(_0xfa55('0x0'));module[_0xfa55('0x1')]={'penalty':{'type':Sequelize[_0xfa55('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 7d7b293..8d45de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf970=['./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x13585b,_0x58d60d){var _0x39cca1=function(_0x257e12){while(--_0x257e12){_0x13585b['push'](_0x13585b['shift']());}};_0x39cca1(++_0x58d60d);}(_0xf970,0x1d9));var _0x0f97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf970[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0f97('0x0'));var util=require('util');var logger=require(_0x0f97('0x1'))(_0x0f97('0x2'));var moment=require(_0x0f97('0x3'));var BPromise=require(_0x0f97('0x4'));var rp=require(_0x0f97('0x5'));var fs=require('fs');var path=require(_0x0f97('0x6'));var rimraf=require(_0x0f97('0x7'));var config=require('../../config/environment');var attributes=require(_0x0f97('0x8'));module[_0x0f97('0x9')]=function(_0x290200,_0xac501){return _0x290200[_0x0f97('0xa')](_0x0f97('0xb'),attributes,{'tableName':_0x0f97('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c60=['define','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','bluebird','./userSmsQueue.attributes','exports'];(function(_0x1d2cb2,_0x5d0788){var _0x44b6b5=function(_0x361d77){while(--_0x361d77){_0x1d2cb2['push'](_0x1d2cb2['shift']());}};_0x44b6b5(++_0x5d0788);}(_0x4c60,0xc1));var _0x04c6=function(_0x265a7c,_0x5daa51){_0x265a7c=_0x265a7c-0x0;var _0x2ebcaa=_0x4c60[_0x265a7c];return _0x2ebcaa;};'use strict';var _=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var logger=require(_0x04c6('0x2'))(_0x04c6('0x3'));var moment=require('moment');var BPromise=require(_0x04c6('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(_0x04c6('0x5'));module[_0x04c6('0x6')]=function(_0x2054da,_0x12bd5d){return _0x2054da[_0x04c6('0x7')](_0x04c6('0x8'),attributes,{'tableName':_0x04c6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f564156..c252204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0ad=['error','code','UserSmsQueue,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','http','request','info','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x52c977,_0x157e52){var _0xf8ac8a=function(_0x4dcb7e){while(--_0x4dcb7e){_0x52c977['push'](_0x52c977['shift']());}};_0xf8ac8a(++_0x157e52);}(_0xa0ad,0x6f));var _0xda0a=function(_0x2fcf18,_0x10009a){_0x2fcf18=_0x2fcf18-0x0;var _0x4c68cc=_0xa0ad[_0x2fcf18];return _0x4c68cc;};'use strict';var _=require(_0xda0a('0x0'));var util=require('util');var moment=require(_0xda0a('0x1'));var BPromise=require(_0xda0a('0x2'));var rs=require(_0xda0a('0x3'));var fs=require('fs');var Redis=require(_0xda0a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xda0a('0x5'));var logger=require(_0xda0a('0x6'))(_0xda0a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xda0a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x106715,_0x2e1a51,_0x37ee8c){return new BPromise(function(_0x4ca5b4,_0x26e9a4){return client[_0xda0a('0x9')](_0x106715,_0x37ee8c)['then'](function(_0x26af5b){logger[_0xda0a('0xa')]('UserSmsQueue,\x20%s,\x20%s',_0x2e1a51,_0xda0a('0xb'));logger[_0xda0a('0xc')](_0xda0a('0xd'),_0x2e1a51,_0xda0a('0xb'),JSON[_0xda0a('0xe')](_0x26af5b));if(_0x26af5b[_0xda0a('0xf')]){if(_0x26af5b[_0xda0a('0xf')][_0xda0a('0x10')]===0x1f4){logger[_0xda0a('0xf')](_0xda0a('0x11'),_0x2e1a51,_0x26af5b[_0xda0a('0xf')]['message']);return _0x26e9a4(_0x26af5b[_0xda0a('0xf')]['message']);}logger[_0xda0a('0xf')](_0xda0a('0x11'),_0x2e1a51,_0x26af5b['error'][_0xda0a('0x12')]);return _0x4ca5b4(_0x26af5b[_0xda0a('0xf')][_0xda0a('0x12')]);}else{logger[_0xda0a('0xa')](_0xda0a('0x11'),_0x2e1a51,'request\x20sent');_0x4ca5b4(_0x26af5b[_0xda0a('0x13')]['message']);}})[_0xda0a('0x14')](function(_0x3e6518){logger[_0xda0a('0xf')](_0xda0a('0x11'),_0x2e1a51,_0x3e6518);_0x26e9a4(_0x3e6518);});});}
\ No newline at end of file
+var _0xcd83=['rpc','../../config/environment','jayson/promise','client','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2538bc,_0x54934e){var _0x4ad0cd=function(_0x423378){while(--_0x423378){_0x2538bc['push'](_0x2538bc['shift']());}};_0x4ad0cd(++_0x54934e);}(_0xcd83,0x1b2));var _0x3cd8=function(_0x358782,_0x238162){_0x358782=_0x358782-0x0;var _0x380f03=_0xcd83[_0x358782];return _0x380f03;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3cd8('0x0'));var BPromise=require(_0x3cd8('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3cd8('0x2'));var db=require(_0x3cd8('0x3'))['db'];var utils=require(_0x3cd8('0x4'));var logger=require(_0x3cd8('0x5'))(_0x3cd8('0x6'));var config=require(_0x3cd8('0x7'));var jayson=require(_0x3cd8('0x8'));var client=jayson[_0x3cd8('0x9')][_0x3cd8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x542a91,_0x35227e,_0x73661c){return new BPromise(function(_0x2ccdb4,_0x1500e5){return client[_0x3cd8('0xb')](_0x542a91,_0x73661c)[_0x3cd8('0xc')](function(_0x2d4fe7){logger['info'](_0x3cd8('0xd'),_0x35227e,_0x3cd8('0xe'));logger[_0x3cd8('0xf')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x35227e,_0x3cd8('0xe'),JSON[_0x3cd8('0x10')](_0x2d4fe7));if(_0x2d4fe7[_0x3cd8('0x11')]){if(_0x2d4fe7[_0x3cd8('0x11')][_0x3cd8('0x12')]===0x1f4){logger[_0x3cd8('0x11')](_0x3cd8('0xd'),_0x35227e,_0x2d4fe7[_0x3cd8('0x11')][_0x3cd8('0x13')]);return _0x1500e5(_0x2d4fe7[_0x3cd8('0x11')][_0x3cd8('0x13')]);}logger[_0x3cd8('0x11')](_0x3cd8('0xd'),_0x35227e,_0x2d4fe7[_0x3cd8('0x11')][_0x3cd8('0x13')]);return _0x2ccdb4(_0x2d4fe7['error'][_0x3cd8('0x13')]);}else{logger[_0x3cd8('0x14')](_0x3cd8('0xd'),_0x35227e,'request\x20sent');_0x2ccdb4(_0x2d4fe7[_0x3cd8('0x15')][_0x3cd8('0x13')]);}})['catch'](function(_0x2abf62){logger[_0x3cd8('0x11')](_0x3cd8('0xd'),_0x35227e,_0x2abf62);_0x1500e5(_0x2abf62);});});}
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js
deleted file mode 100644 (file)
index 25a8fb7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x10e9=['INTEGER','exports'];(function(_0x3f6be8,_0x275e2c){var _0x29663f=function(_0x203b4d){while(--_0x203b4d){_0x3f6be8['push'](_0x3f6be8['shift']());}};_0x29663f(++_0x275e2c);}(_0x10e9,0x1e5));var _0x910e=function(_0x1ef911,_0x32a38b){_0x1ef911=_0x1ef911-0x0;var _0x5297f4=_0x10e9[_0x1ef911];return _0x5297f4;};'use strict';var Sequelize=require('sequelize');module[_0x910e('0x0')]={'UserId':{'type':Sequelize[_0x910e('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js
deleted file mode 100644 (file)
index af100b8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x4b1649,_0x355b2e){var _0x248fb4=function(_0x5c0c40){while(--_0x5c0c40){_0x4b1649['push'](_0x4b1649['shift']());}};_0x248fb4(++_0x355b2e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 ae925e6..5e200cf 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(_0x579c71,_0x485e1f){var _0xb066bf=function(_0x364435){while(--_0x364435){_0x579c71['push'](_0x579c71['shift']());}};_0xb066bf(++_0x485e1f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x541a67,_0x50728d){_0x541a67=_0x541a67-0x0;var _0x45da2a=_0xcb91[_0x541a67];return _0x45da2a;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x568b19,_0x26d5bb){var _0x4cd0eb=function(_0x272048){while(--_0x272048){_0x568b19['push'](_0x568b19['shift']());}};_0x4cd0eb(++_0x26d5bb);}(_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 7b56630..3010625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54a7=['sequelize'];(function(_0x59a795,_0x56f9b5){var _0x57fcc7=function(_0xf44a55){while(--_0xf44a55){_0x59a795['push'](_0x59a795['shift']());}};_0x57fcc7(++_0x56f9b5);}(_0x54a7,0x81));var _0x754a=function(_0x15d666,_0x33821f){_0x15d666=_0x15d666-0x0;var _0x1447c6=_0x54a7[_0x15d666];return _0x1447c6;};'use strict';var Sequelize=require(_0x754a('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4958=['INTEGER','sequelize','exports'];(function(_0x3680c2,_0x57b09a){var _0x108ed1=function(_0x17adb9){while(--_0x17adb9){_0x3680c2['push'](_0x3680c2['shift']());}};_0x108ed1(++_0x57b09a);}(_0x4958,0xca));var _0x8495=function(_0x8eb34b,_0x46cd5f){_0x8eb34b=_0x8eb34b-0x0;var _0x32f8dc=_0x4958[_0x8eb34b];return _0x32f8dc;};'use strict';var Sequelize=require(_0x8495('0x0'));module[_0x8495('0x1')]={'penalty':{'type':Sequelize[_0x8495('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 9d05ae1..882172d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e5=['user_has_voice_queues','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define'];(function(_0x54ebee,_0x4cd320){var _0x10352e=function(_0xf264c9){while(--_0xf264c9){_0x54ebee['push'](_0x54ebee['shift']());}};_0x10352e(++_0x4cd320);}(_0xa1e5,0x177));var _0x5a1e=function(_0x346e9,_0x2136ff){_0x346e9=_0x346e9-0x0;var _0x21f824=_0xa1e5[_0x346e9];return _0x21f824;};'use strict';var _=require('lodash');var util=require(_0x5a1e('0x0'));var logger=require(_0x5a1e('0x1'))('api');var moment=require(_0x5a1e('0x2'));var BPromise=require(_0x5a1e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5a1e('0x4'));var rimraf=require(_0x5a1e('0x5'));var config=require(_0x5a1e('0x6'));var attributes=require(_0x5a1e('0x7'));module[_0x5a1e('0x8')]=function(_0x1dbe33,_0x28d087){return _0x1dbe33[_0x5a1e('0x9')]('UserVoiceQueue',attributes,{'tableName':_0x5a1e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6688=['rimraf','./userVoiceQueue.attributes','exports','UserVoiceQueue','user_has_voice_queues','lodash','util','api','bluebird','request-promise','path'];(function(_0xe5095d,_0x1edc82){var _0x1df548=function(_0x5dbc32){while(--_0x5dbc32){_0xe5095d['push'](_0xe5095d['shift']());}};_0x1df548(++_0x1edc82);}(_0x6688,0x144));var _0x8668=function(_0x2ee365,_0x55e70b){_0x2ee365=_0x2ee365-0x0;var _0x155731=_0x6688[_0x2ee365];return _0x155731;};'use strict';var _=require(_0x8668('0x0'));var util=require(_0x8668('0x1'));var logger=require('../../config/logger')(_0x8668('0x2'));var moment=require('moment');var BPromise=require(_0x8668('0x3'));var rp=require(_0x8668('0x4'));var fs=require('fs');var path=require(_0x8668('0x5'));var rimraf=require(_0x8668('0x6'));var config=require('../../config/environment');var attributes=require(_0x8668('0x7'));module[_0x8668('0x8')]=function(_0x19a023,_0x598eea){return _0x19a023['define'](_0x8668('0x9'),attributes,{'tableName':_0x8668('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d98b56d..113865b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb56f=['error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x4cdfb5,_0x58ce18){var _0x5ca496=function(_0x39e67b){while(--_0x39e67b){_0x4cdfb5['push'](_0x4cdfb5['shift']());}};_0x5ca496(++_0x58ce18);}(_0xb56f,0xf5));var _0xfb56=function(_0x15b5db,_0x461a49){_0x15b5db=_0x15b5db-0x0;var _0x5454cf=_0xb56f[_0x15b5db];return _0x5454cf;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfb56('0x0'));var BPromise=require(_0xfb56('0x1'));var rs=require(_0xfb56('0x2'));var fs=require('fs');var Redis=require(_0xfb56('0x3'));var db=require(_0xfb56('0x4'))['db'];var utils=require(_0xfb56('0x5'));var logger=require(_0xfb56('0x6'))(_0xfb56('0x7'));var config=require('../../config/environment');var jayson=require(_0xfb56('0x8'));var client=jayson[_0xfb56('0x9')][_0xfb56('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33e0b4,_0x50b94f,_0x49ac9c){return new BPromise(function(_0x4d65d2,_0x58ff35){return client[_0xfb56('0xb')](_0x33e0b4,_0x49ac9c)['then'](function(_0x32be45){logger[_0xfb56('0xc')](_0xfb56('0xd'),_0x50b94f,'request\x20sent');logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x50b94f,_0xfb56('0xe'),JSON['stringify'](_0x32be45));if(_0x32be45[_0xfb56('0xf')]){if(_0x32be45['error'][_0xfb56('0x10')]===0x1f4){logger[_0xfb56('0xf')](_0xfb56('0xd'),_0x50b94f,_0x32be45[_0xfb56('0xf')][_0xfb56('0x11')]);return _0x58ff35(_0x32be45['error'][_0xfb56('0x11')]);}logger[_0xfb56('0xf')](_0xfb56('0xd'),_0x50b94f,_0x32be45[_0xfb56('0xf')][_0xfb56('0x11')]);return _0x4d65d2(_0x32be45['error']['message']);}else{logger['info'](_0xfb56('0xd'),_0x50b94f,'request\x20sent');_0x4d65d2(_0x32be45[_0xfb56('0x12')][_0xfb56('0x11')]);}})[_0xfb56('0x13')](function(_0x20d1b7){logger[_0xfb56('0xf')](_0xfb56('0xd'),_0x50b94f,_0x20d1b7);_0x58ff35(_0x20d1b7);});});}
\ No newline at end of file
+var _0x9f63=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','moment','bluebird'];(function(_0x1f1886,_0x393d19){var _0x4c0bb3=function(_0x2ae901){while(--_0x2ae901){_0x1f1886['push'](_0x1f1886['shift']());}};_0x4c0bb3(++_0x393d19);}(_0x9f63,0xac));var _0x39f6=function(_0x29959f,_0x50231d){_0x29959f=_0x29959f-0x0;var _0x315521=_0x9f63[_0x29959f];return _0x315521;};'use strict';var _=require(_0x39f6('0x0'));var util=require(_0x39f6('0x1'));var moment=require(_0x39f6('0x2'));var BPromise=require(_0x39f6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x39f6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x39f6('0x5'));var logger=require(_0x39f6('0x6'))(_0x39f6('0x7'));var config=require(_0x39f6('0x8'));var jayson=require(_0x39f6('0x9'));var client=jayson[_0x39f6('0xa')][_0x39f6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14bde5,_0x173fab,_0xb8aa71){return new BPromise(function(_0x58831b,_0x18697f){return client[_0x39f6('0xc')](_0x14bde5,_0xb8aa71)[_0x39f6('0xd')](function(_0x20a276){logger[_0x39f6('0xe')](_0x39f6('0xf'),_0x173fab,'request\x20sent');logger['debug'](_0x39f6('0x10'),_0x173fab,_0x39f6('0x11'),JSON[_0x39f6('0x12')](_0x20a276));if(_0x20a276['error']){if(_0x20a276[_0x39f6('0x13')][_0x39f6('0x14')]===0x1f4){logger[_0x39f6('0x13')](_0x39f6('0xf'),_0x173fab,_0x20a276[_0x39f6('0x13')][_0x39f6('0x15')]);return _0x18697f(_0x20a276[_0x39f6('0x13')]['message']);}logger[_0x39f6('0x13')](_0x39f6('0xf'),_0x173fab,_0x20a276[_0x39f6('0x13')][_0x39f6('0x15')]);return _0x58831b(_0x20a276[_0x39f6('0x13')][_0x39f6('0x15')]);}else{logger[_0x39f6('0xe')](_0x39f6('0xf'),_0x173fab,_0x39f6('0x11'));_0x58831b(_0x20a276['result']['message']);}})['catch'](function(_0x3d0afd){logger[_0x39f6('0x13')](_0x39f6('0xf'),_0x173fab,_0x3d0afd);_0x18697f(_0x3d0afd);});});}
\ No newline at end of file
index dfe6dff..745a6e4 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(_0x1b6b3e,_0x617767){var _0x542eeb=function(_0x29e30d){while(--_0x29e30d){_0x1b6b3e['push'](_0x1b6b3e['shift']());}};_0x542eeb(++_0x617767);}(_0xedd9,0xfc));var _0x9edd=function(_0xf3cd97,_0x48a4fc){_0xf3cd97=_0xf3cd97-0x0;var _0xa8bbed=_0xedd9[_0xf3cd97];return _0xa8bbed;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5c1f94,_0x4eb1b1){var _0x44f56e=function(_0x41f8f2){while(--_0x41f8f2){_0x5c1f94['push'](_0x5c1f94['shift']());}};_0x44f56e(++_0x4eb1b1);}(_0x70e0,0x17b));var _0x070e=function(_0x3857c1,_0x17bf6a){_0x3857c1=_0x3857c1-0x0;var _0x33e309=_0x70e0[_0x3857c1];return _0x33e309;};'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 69f7382..38ebacb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x597b=['INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface','exports'];(function(_0xf01b8e,_0x469853){var _0x54a236=function(_0x42cb1c){while(--_0x42cb1c){_0xf01b8e['push'](_0xf01b8e['shift']());}};_0x54a236(++_0x469853);}(_0x597b,0xc7));var _0xb597=function(_0x165ee2,_0x4b2a9e){_0x165ee2=_0x165ee2-0x0;var _0x26535f=_0x597b[_0x165ee2];return _0x26535f;};'use strict';var Sequelize=require('sequelize');module[_0xb597('0x0')]={'uniqueid':{'type':Sequelize[_0xb597('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xb597('0x2')},'membername':{'type':Sequelize[_0xb597('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xb597('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb597('0x4'),'comment':_0xb597('0x2')},'VoiceQueueId':{'type':Sequelize[_0xb597('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xb597('0x3')],'allowNull':![],'unique':_0xb597('0x4'),'comment':_0xb597('0x2')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xb597('0x2')},'paused':{'type':Sequelize[_0xb597('0x1')](0xb),'defaultValue':0x0,'comment':_0xb597('0x2')}};
\ No newline at end of file
+var _0x3c7d=['Required\x20by\x20Asterisk','queue_interface','sequelize','INTEGER','STRING'];(function(_0x409b99,_0x139006){var _0xb6a54=function(_0x43a92e){while(--_0x43a92e){_0x409b99['push'](_0x409b99['shift']());}};_0xb6a54(++_0x139006);}(_0x3c7d,0x84));var _0xd3c7=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x3c7d[_0x3511d3];return _0x5d6321;};'use strict';var Sequelize=require(_0xd3c7('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xd3c7('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xd3c7('0x2')],'allowNull':![],'comment':_0xd3c7('0x3')},'UserId':{'type':Sequelize[_0xd3c7('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xd3c7('0x2')],'allowNull':![],'unique':_0xd3c7('0x4'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xd3c7('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xd3c7('0x2')],'allowNull':![],'unique':_0xd3c7('0x4'),'comment':_0xd3c7('0x3')},'penalty':{'type':Sequelize[_0xd3c7('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0xd3c7('0x1')](0xb),'defaultValue':0x0,'comment':_0xd3c7('0x3')}};
\ No newline at end of file
index 75157be..d968152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c7b=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','update'];(function(_0x42651e,_0x456fb5){var _0xd5ee47=function(_0x356b35){while(--_0x356b35){_0x42651e['push'](_0x42651e['shift']());}};_0xd5ee47(++_0x456fb5);}(_0x9c7b,0x82));var _0xb9c7=function(_0x3eebbf,_0xf33e92){_0x3eebbf=_0x3eebbf-0x0;var _0xbc7683=_0x9c7b[_0x3eebbf];return _0xbc7683;};'use strict';var EventEmitter=require(_0xb9c7('0x0'));var UserVoiceQueueRt=require(_0xb9c7('0x1'))['db'][_0xb9c7('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xb9c7('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb9c7('0x4'),'afterDestroy':_0xb9c7('0x5')};function emitEvent(_0xafecc6){return function(_0x4b4d2d,_0x423529,_0x2a8ea7){UserVoiceQueueRtEvents[_0xb9c7('0x6')](_0xafecc6+':'+_0x4b4d2d['id'],_0x4b4d2d);UserVoiceQueueRtEvents[_0xb9c7('0x6')](_0xafecc6,_0x4b4d2d);_0x2a8ea7(null);};}for(var e in events){if(events[_0xb9c7('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0xb9c7('0x8')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x59a6=['exports','events','UserVoiceQueueRt','save','update','remove','emit','hook'];(function(_0x166acc,_0x111e4e){var _0x209f4d=function(_0x354b62){while(--_0x354b62){_0x166acc['push'](_0x166acc['shift']());}};_0x209f4d(++_0x111e4e);}(_0x59a6,0x1c9));var _0x659a=function(_0x530658,_0x5f1550){_0x530658=_0x530658-0x0;var _0x3d20af=_0x59a6[_0x530658];return _0x3d20af;};'use strict';var EventEmitter=require(_0x659a('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x659a('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x659a('0x2'),'afterUpdate':_0x659a('0x3'),'afterDestroy':_0x659a('0x4')};function emitEvent(_0x4c90ab){return function(_0xebf38,_0x489f20,_0x1ef289){UserVoiceQueueRtEvents[_0x659a('0x5')](_0x4c90ab+':'+_0xebf38['id'],_0xebf38);UserVoiceQueueRtEvents[_0x659a('0x5')](_0x4c90ab,_0xebf38);_0x1ef289(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x659a('0x6')](e,emitEvent(event));}}module[_0x659a('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index c72fcea..81ded39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b0=['lodash','../../config/logger','moment','bluebird','request-promise','rimraf','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt'];(function(_0x4208eb,_0x4fd3e7){var _0x452f66=function(_0xa908d1){while(--_0xa908d1){_0x4208eb['push'](_0x4208eb['shift']());}};_0x452f66(++_0x4fd3e7);}(_0xc3b0,0x15e));var _0x0c3b=function(_0x3c1a57,_0xab976){_0x3c1a57=_0x3c1a57-0x0;var _0x418898=_0xc3b0[_0x3c1a57];return _0x418898;};'use strict';var _=require(_0x0c3b('0x0'));var util=require('util');var logger=require(_0x0c3b('0x1'))('api');var moment=require(_0x0c3b('0x2'));var BPromise=require(_0x0c3b('0x3'));var rp=require(_0x0c3b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c3b('0x5'));var config=require('../../config/environment');var attributes=require('./userVoiceQueueRt.attributes');module[_0x0c3b('0x6')]=function(_0x3d9ac8,_0x934a9e){return _0x3d9ac8[_0x0c3b('0x7')](_0x0c3b('0x8'),attributes,{'tableName':_0x0c3b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x15df=['exports','define','UserVoiceQueueRt','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x15df,0xdb));var _0xf15d=function(_0x13c64d,_0x3ab1bb){_0x13c64d=_0x13c64d-0x0;var _0x5cd2cc=_0x15df[_0x13c64d];return _0x5cd2cc;};'use strict';var _=require('lodash');var util=require(_0xf15d('0x0'));var logger=require(_0xf15d('0x1'))(_0xf15d('0x2'));var moment=require(_0xf15d('0x3'));var BPromise=require(_0xf15d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf15d('0x5'));var rimraf=require(_0xf15d('0x6'));var config=require(_0xf15d('0x7'));var attributes=require(_0xf15d('0x8'));module[_0xf15d('0x9')]=function(_0x3d158c,_0x23cf9e){return _0x3d158c[_0xf15d('0xa')](_0xf15d('0xb'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a226169..7cfcfe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2072=['message','catch','GetVoiceQueueRtPauses','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','socket.io-emitter','./userVoiceQueueRt.socket','register','then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code'];(function(_0x8f795f,_0x9f3ac1){var _0x4c5a40=function(_0x5cd458){while(--_0x5cd458){_0x8f795f['push'](_0x8f795f['shift']());}};_0x4c5a40(++_0x9f3ac1);}(_0x2072,0x10c));var _0x2207=function(_0x3b0eb9,_0x5da600){_0x3b0eb9=_0x3b0eb9-0x0;var _0x1aa702=_0x2072[_0x3b0eb9];return _0x1aa702;};'use strict';var _=require('lodash');var util=require(_0x2207('0x0'));var moment=require('moment');var BPromise=require(_0x2207('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2207('0x2'));var db=require(_0x2207('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2207('0x4'));var config=require(_0x2207('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2207('0x6')][_0x2207('0x7')]({'port':0x232a});config[_0x2207('0x8')]=_['defaults'](config[_0x2207('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x2207('0x9'))(new Redis(config[_0x2207('0x8')]));require(_0x2207('0xa'))[_0x2207('0xb')](socket);function respondWithRpcPromise(_0x4c5ebc,_0x1c799e,_0x55f535){return new BPromise(function(_0x27c72f,_0x4894a3){return client['request'](_0x4c5ebc,_0x55f535)[_0x2207('0xc')](function(_0x53c15d){logger[_0x2207('0xd')](_0x2207('0xe'),_0x1c799e,'request\x20sent');logger[_0x2207('0xf')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x1c799e,_0x2207('0x10'),JSON[_0x2207('0x11')](_0x53c15d));if(_0x53c15d[_0x2207('0x12')]){if(_0x53c15d[_0x2207('0x12')][_0x2207('0x13')]===0x1f4){logger[_0x2207('0x12')](_0x2207('0xe'),_0x1c799e,_0x53c15d[_0x2207('0x12')][_0x2207('0x14')]);return _0x4894a3(_0x53c15d[_0x2207('0x12')][_0x2207('0x14')]);}logger[_0x2207('0x12')](_0x2207('0xe'),_0x1c799e,_0x53c15d[_0x2207('0x12')][_0x2207('0x14')]);return _0x27c72f(_0x53c15d[_0x2207('0x12')][_0x2207('0x14')]);}else{logger[_0x2207('0xd')](_0x2207('0xe'),_0x1c799e,'request\x20sent');_0x27c72f(_0x53c15d['result'][_0x2207('0x14')]);}})[_0x2207('0x15')](function(_0x4413ff){logger[_0x2207('0x12')](_0x2207('0xe'),_0x1c799e,_0x4413ff);_0x4894a3(_0x4413ff);});});}exports[_0x2207('0x16')]=function(_0x46cd73){var _0x2137f4=this;return new Promise(function(_0x274648,_0x3f682c){return db['UserVoiceQueueRt'][_0x2207('0x17')]({'raw':_0x46cd73[_0x2207('0x18')]?_0x46cd73[_0x2207('0x18')][_0x2207('0x19')]===undefined?!![]:![]:!![],'where':_0x46cd73[_0x2207('0x18')]?_0x46cd73[_0x2207('0x18')][_0x2207('0x1a')]||null:null,'attributes':[[db[_0x2207('0x1b')]['fn'](_0x2207('0x1c'),db['sequelize']['fn']('IF',db[_0x2207('0x1b')][_0x2207('0x1d')](_0x2207('0x1e')))),_0x2207('0x1f')]]})[_0x2207('0xc')](function(_0x21a20c){logger[_0x2207('0xd')](_0x2207('0x16'),_0x46cd73);logger[_0x2207('0xf')](_0x2207('0x16'),_0x46cd73,JSON[_0x2207('0x11')](_0x21a20c));_0x274648(_0x21a20c);})[_0x2207('0x15')](function(_0x1c1b30){logger[_0x2207('0x12')]('GetVoiceQueueRtPauses',_0x1c1b30[_0x2207('0x14')],_0x46cd73);_0x3f682c(_0x2137f4['error'](0x1f4,_0x1c1b30[_0x2207('0x14')]));});});};
\ No newline at end of file
+var _0xd8e4=['socket.io-emitter','register','request','info','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','result','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd8e4,0x158));var _0x4d8e=function(_0x527fab,_0x35d9b5){_0x527fab=_0x527fab-0x0;var _0x16b711=_0xd8e4[_0x527fab];return _0x16b711;};'use strict';var _=require(_0x4d8e('0x0'));var util=require(_0x4d8e('0x1'));var moment=require(_0x4d8e('0x2'));var BPromise=require(_0x4d8e('0x3'));var rs=require(_0x4d8e('0x4'));var fs=require('fs');var Redis=require(_0x4d8e('0x5'));var db=require(_0x4d8e('0x6'))['db'];var utils=require(_0x4d8e('0x7'));var logger=require(_0x4d8e('0x8'))(_0x4d8e('0x9'));var config=require(_0x4d8e('0xa'));var jayson=require(_0x4d8e('0xb'));var client=jayson[_0x4d8e('0xc')][_0x4d8e('0xd')]({'port':0x232a});config['redis']=_[_0x4d8e('0xe')](config[_0x4d8e('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0x4d8e('0x10'))(new Redis(config[_0x4d8e('0xf')]));require('./userVoiceQueueRt.socket')[_0x4d8e('0x11')](socket);function respondWithRpcPromise(_0x39f10f,_0x43ebf4,_0x3fb11b){return new BPromise(function(_0x4e088b,_0x3c4a7b){return client[_0x4d8e('0x12')](_0x39f10f,_0x3fb11b)['then'](function(_0x36c9d3){logger[_0x4d8e('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x43ebf4,_0x4d8e('0x14'));logger[_0x4d8e('0x15')](_0x4d8e('0x16'),_0x43ebf4,_0x4d8e('0x14'),JSON[_0x4d8e('0x17')](_0x36c9d3));if(_0x36c9d3[_0x4d8e('0x18')]){if(_0x36c9d3['error'][_0x4d8e('0x19')]===0x1f4){logger['error'](_0x4d8e('0x1a'),_0x43ebf4,_0x36c9d3[_0x4d8e('0x18')][_0x4d8e('0x1b')]);return _0x3c4a7b(_0x36c9d3[_0x4d8e('0x18')]['message']);}logger[_0x4d8e('0x18')](_0x4d8e('0x1a'),_0x43ebf4,_0x36c9d3[_0x4d8e('0x18')]['message']);return _0x4e088b(_0x36c9d3[_0x4d8e('0x18')][_0x4d8e('0x1b')]);}else{logger[_0x4d8e('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x43ebf4,_0x4d8e('0x14'));_0x4e088b(_0x36c9d3[_0x4d8e('0x1c')][_0x4d8e('0x1b')]);}})['catch'](function(_0x2af2be){logger[_0x4d8e('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x43ebf4,_0x2af2be);_0x3c4a7b(_0x2af2be);});});}exports['GetVoiceQueueRtPauses']=function(_0x55cbb0){var _0x182ed3=this;return new Promise(function(_0x16891d,_0x16f28b){return db[_0x4d8e('0x1d')][_0x4d8e('0x1e')]({'raw':_0x55cbb0[_0x4d8e('0x1f')]?_0x55cbb0['options'][_0x4d8e('0x20')]===undefined?!![]:![]:!![],'where':_0x55cbb0[_0x4d8e('0x1f')]?_0x55cbb0[_0x4d8e('0x1f')][_0x4d8e('0x21')]||null:null,'attributes':[[db[_0x4d8e('0x22')]['fn'](_0x4d8e('0x23'),db[_0x4d8e('0x22')]['fn']('IF',db[_0x4d8e('0x22')]['literal'](_0x4d8e('0x24')))),_0x4d8e('0x25')]]})['then'](function(_0x37875f){logger['info'](_0x4d8e('0x26'),_0x55cbb0);logger[_0x4d8e('0x15')](_0x4d8e('0x26'),_0x55cbb0,JSON[_0x4d8e('0x17')](_0x37875f));_0x16891d(_0x37875f);})[_0x4d8e('0x27')](function(_0x1c7923){logger[_0x4d8e('0x18')](_0x4d8e('0x26'),_0x1c7923['message'],_0x55cbb0);_0x16f28b(_0x182ed3['error'](0x1f4,_0x1c7923[_0x4d8e('0x1b')]));});});};
\ No newline at end of file
index 201c2f9..361aa85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c75=['length','save','update','emit','register'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0c75,0x6a));var _0x50c7=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0c75[_0x122ef9];return _0x42fba0;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x50c7('0x0'),'remove',_0x50c7('0x1')];function createListener(_0x14220a,_0x2c59b1){return function(_0x23b0ec){_0x2c59b1[_0x50c7('0x2')](_0x14220a,_0x23b0ec);};}function removeListener(_0x344563,_0x3c0314){return function(){UserVoiceQueueRtEvents['removeListener'](_0x344563,_0x3c0314);};}exports[_0x50c7('0x3')]=function(_0x4c062f){for(var _0x29982f=0x0,_0x594830=events[_0x50c7('0x4')];_0x29982f<_0x594830;_0x29982f++){var _0x172856=events[_0x29982f];var _0x44d102=createListener('userVoiceQueueRt:'+_0x172856,_0x4c062f);UserVoiceQueueRtEvents['on'](_0x172856,_0x44d102);}};
\ No newline at end of file
+var _0xc21c=['update','removeListener','register','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x119280,_0x439c3e){var _0x481797=function(_0x4265cb){while(--_0x4265cb){_0x119280['push'](_0x119280['shift']());}};_0x481797(++_0x439c3e);}(_0xc21c,0x166));var _0xcc21=function(_0x13c77,_0x4d8b52){_0x13c77=_0x13c77-0x0;var _0x36c72b=_0xc21c[_0x13c77];return _0x36c72b;};'use strict';var UserVoiceQueueRtEvents=require(_0xcc21('0x0'));var events=[_0xcc21('0x1'),'remove',_0xcc21('0x2')];function createListener(_0x16faaa,_0x298fd5){return function(_0x3f2c61){_0x298fd5['emit'](_0x16faaa,_0x3f2c61);};}function removeListener(_0x3e29df,_0x31bf8b){return function(){UserVoiceQueueRtEvents[_0xcc21('0x3')](_0x3e29df,_0x31bf8b);};}exports[_0xcc21('0x4')]=function(_0x1ff108){for(var _0x2409e5=0x0,_0x33604a=events['length'];_0x2409e5<_0x33604a;_0x2409e5++){var _0x2676fe=events[_0x2409e5];var _0xff4686=createListener(_0xcc21('0x5')+_0x2676fe,_0x1ff108);UserVoiceQueueRtEvents['on'](_0x2676fe,_0xff4686);}};
\ No newline at end of file
index 4d5c1dd..1f93809 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(_0xfedad,_0x52e720){var _0x471142=function(_0x1e032e){while(--_0x1e032e){_0xfedad['push'](_0xfedad['shift']());}};_0x471142(++_0x52e720);}(_0x70e0,0x17b));var _0x070e=function(_0x2223c5,_0x32fa3c){_0x2223c5=_0x2223c5-0x0;var _0x441ac5=_0x70e0[_0x2223c5];return _0x441ac5;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x4157cf,_0x3ff907){var _0x3dacbe=function(_0x503dc3){while(--_0x503dc3){_0x4157cf['push'](_0x4157cf['shift']());}};_0x3dacbe(++_0x3ff907);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'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
index a54aec5..06be1c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc418=['INTEGER','sequelize','exports'];(function(_0x54e631,_0x3b8396){var _0x3c6b6a=function(_0x48cea6){while(--_0x48cea6){_0x54e631['push'](_0x54e631['shift']());}};_0x3c6b6a(++_0x3b8396);}(_0xc418,0xd9));var _0x8c41=function(_0x38e6fa,_0x564365){_0x38e6fa=_0x38e6fa-0x0;var _0x52cb05=_0xc418[_0x38e6fa];return _0x52cb05;};'use strict';var Sequelize=require(_0x8c41('0x0'));module[_0x8c41('0x1')]={'penalty':{'type':Sequelize[_0x8c41('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9f72=['sequelize','exports','INTEGER'];(function(_0x5ed558,_0x5d84c2){var _0x2948d4=function(_0x5f48f0){while(--_0x5f48f0){_0x5ed558['push'](_0x5ed558['shift']());}};_0x2948d4(++_0x5d84c2);}(_0x9f72,0x114));var _0x29f7=function(_0x2988cf,_0x65c85e){_0x2988cf=_0x2988cf-0x0;var _0x29846c=_0x9f72[_0x2988cf];return _0x29846c;};'use strict';var Sequelize=require(_0x29f7('0x0'));module[_0x29f7('0x1')]={'penalty':{'type':Sequelize[_0x29f7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 55c5b32..0907afa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b46=['define','user_has_whatsapp_queues','util','api','moment','bluebird','request-promise','../../config/environment','./userWhatsappQueue.attributes','exports'];(function(_0xb98656,_0x25860b){var _0x546c45=function(_0xd1ce26){while(--_0xd1ce26){_0xb98656['push'](_0xb98656['shift']());}};_0x546c45(++_0x25860b);}(_0x9b46,0xe8));var _0x69b4=function(_0x47f2d6,_0x4e4ec0){_0x47f2d6=_0x47f2d6-0x0;var _0x276830=_0x9b46[_0x47f2d6];return _0x276830;};'use strict';var _=require('lodash');var util=require(_0x69b4('0x0'));var logger=require('../../config/logger')(_0x69b4('0x1'));var moment=require(_0x69b4('0x2'));var BPromise=require(_0x69b4('0x3'));var rp=require(_0x69b4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x69b4('0x5'));var attributes=require(_0x69b4('0x6'));module[_0x69b4('0x7')]=function(_0x306bef,_0x3d6e7c){return _0x306bef[_0x69b4('0x8')]('UserWhatsappQueue',attributes,{'tableName':_0x69b4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1910=['path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x91d4d6,_0xd9d21a){var _0x372803=function(_0x38cdf6){while(--_0x38cdf6){_0x91d4d6['push'](_0x91d4d6['shift']());}};_0x372803(++_0xd9d21a);}(_0x1910,0xf1));var _0x0191=function(_0x36d6cf,_0x31fb70){_0x36d6cf=_0x36d6cf-0x0;var _0x4347cc=_0x1910[_0x36d6cf];return _0x4347cc;};'use strict';var _=require(_0x0191('0x0'));var util=require(_0x0191('0x1'));var logger=require(_0x0191('0x2'))(_0x0191('0x3'));var moment=require(_0x0191('0x4'));var BPromise=require(_0x0191('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0191('0x6'));var rimraf=require(_0x0191('0x7'));var config=require(_0x0191('0x8'));var attributes=require(_0x0191('0x9'));module[_0x0191('0xa')]=function(_0x4c597a,_0x27227c){return _0x4c597a[_0x0191('0xb')](_0x0191('0xc'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c41cda..a7551bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8910=['then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','http','request'];(function(_0x54edc9,_0x345f01){var _0x2ae7a9=function(_0x24a545){while(--_0x24a545){_0x54edc9['push'](_0x54edc9['shift']());}};_0x2ae7a9(++_0x345f01);}(_0x8910,0x88));var _0x0891=function(_0x1a50e5,_0x14accb){_0x1a50e5=_0x1a50e5-0x0;var _0x53b463=_0x8910[_0x1a50e5];return _0x53b463;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0891('0x0'));var BPromise=require(_0x0891('0x1'));var rs=require(_0x0891('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0891('0x3'))['db'];var utils=require(_0x0891('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x0891('0x5'));var client=jayson['client'][_0x0891('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1860de,_0x594718,_0x2ff828){return new BPromise(function(_0x3bca6b,_0x1f3443){return client[_0x0891('0x7')](_0x1860de,_0x2ff828)[_0x0891('0x8')](function(_0x599d91){logger[_0x0891('0x9')](_0x0891('0xa'),_0x594718,_0x0891('0xb'));logger[_0x0891('0xc')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x594718,_0x0891('0xb'),JSON[_0x0891('0xd')](_0x599d91));if(_0x599d91[_0x0891('0xe')]){if(_0x599d91['error'][_0x0891('0xf')]===0x1f4){logger[_0x0891('0xe')](_0x0891('0xa'),_0x594718,_0x599d91[_0x0891('0xe')][_0x0891('0x10')]);return _0x1f3443(_0x599d91[_0x0891('0xe')][_0x0891('0x10')]);}logger[_0x0891('0xe')](_0x0891('0xa'),_0x594718,_0x599d91[_0x0891('0xe')][_0x0891('0x10')]);return _0x3bca6b(_0x599d91[_0x0891('0xe')]['message']);}else{logger[_0x0891('0x9')]('UserWhatsappQueue,\x20%s,\x20%s',_0x594718,_0x0891('0xb'));_0x3bca6b(_0x599d91['result'][_0x0891('0x10')]);}})[_0x0891('0x11')](function(_0x589795){logger[_0x0891('0xe')](_0x0891('0xa'),_0x594718,_0x589795);_0x1f3443(_0x589795);});});}
\ No newline at end of file
+var _0x908e=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','moment','bluebird'];(function(_0x376db5,_0x2b8874){var _0x304c17=function(_0x2dd9ba){while(--_0x2dd9ba){_0x376db5['push'](_0x376db5['shift']());}};_0x304c17(++_0x2b8874);}(_0x908e,0x15d));var _0xe908=function(_0x1e40df,_0x18b1a5){_0x1e40df=_0x1e40df-0x0;var _0x4bfb7b=_0x908e[_0x1e40df];return _0x4bfb7b;};'use strict';var _=require(_0xe908('0x0'));var util=require('util');var moment=require(_0xe908('0x1'));var BPromise=require(_0xe908('0x2'));var rs=require(_0xe908('0x3'));var fs=require('fs');var Redis=require(_0xe908('0x4'));var db=require(_0xe908('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe908('0x6'));var config=require(_0xe908('0x7'));var jayson=require(_0xe908('0x8'));var client=jayson['client'][_0xe908('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cda0a,_0x3fb9b4,_0x32c16b){return new BPromise(function(_0x189614,_0x3d5e96){return client[_0xe908('0xa')](_0x2cda0a,_0x32c16b)[_0xe908('0xb')](function(_0x477545){logger['info'](_0xe908('0xc'),_0x3fb9b4,_0xe908('0xd'));logger[_0xe908('0xe')](_0xe908('0xf'),_0x3fb9b4,_0xe908('0xd'),JSON['stringify'](_0x477545));if(_0x477545[_0xe908('0x10')]){if(_0x477545[_0xe908('0x10')][_0xe908('0x11')]===0x1f4){logger['error'](_0xe908('0xc'),_0x3fb9b4,_0x477545[_0xe908('0x10')][_0xe908('0x12')]);return _0x3d5e96(_0x477545[_0xe908('0x10')]['message']);}logger[_0xe908('0x10')](_0xe908('0xc'),_0x3fb9b4,_0x477545[_0xe908('0x10')][_0xe908('0x12')]);return _0x189614(_0x477545[_0xe908('0x10')]['message']);}else{logger[_0xe908('0x13')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3fb9b4,_0xe908('0xd'));_0x189614(_0x477545[_0xe908('0x14')][_0xe908('0x12')]);}})[_0xe908('0x15')](function(_0x2ed14e){logger[_0xe908('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3fb9b4,_0x2ed14e);_0x3d5e96(_0x2ed14e);});});}
\ No newline at end of file
index 0f1122a..b4670ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1666=['./variable.controller','isAuthenticated','index','get','/:id','create','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4dbb42,_0x52d78d){var _0xbd32b7=function(_0x5f178d){while(--_0x5f178d){_0x4dbb42['push'](_0x4dbb42['shift']());}};_0xbd32b7(++_0x52d78d);}(_0x1666,0x75));var _0x6166=function(_0x302ad1,_0x3d61f2){_0x302ad1=_0x302ad1-0x0;var _0x383cd5=_0x1666[_0x302ad1];return _0x383cd5;};'use strict';var multer=require(_0x6166('0x0'));var util=require(_0x6166('0x1'));var path=require('path');var timeout=require(_0x6166('0x2'));var express=require(_0x6166('0x3'));var router=express[_0x6166('0x4')]();var fs_extra=require(_0x6166('0x5'));var auth=require(_0x6166('0x6'));var interaction=require(_0x6166('0x7'));var config=require(_0x6166('0x8'));var controller=require(_0x6166('0x9'));router['get']('/',auth[_0x6166('0xa')](),controller[_0x6166('0xb')]);router[_0x6166('0xc')](_0x6166('0xd'),auth[_0x6166('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x6166('0xe')]);router['put'](_0x6166('0xd'),auth[_0x6166('0xa')](),controller[_0x6166('0xf')]);router[_0x6166('0x10')](_0x6166('0xd'),auth[_0x6166('0xa')](),controller[_0x6166('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xba6c=['index','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x5ae93d,_0x48a929){var _0x3bc344=function(_0x37d1e8){while(--_0x37d1e8){_0x5ae93d['push'](_0x5ae93d['shift']());}};_0x3bc344(++_0x48a929);}(_0xba6c,0x113));var _0xcba6=function(_0x2ef8f1,_0x1280a3){_0x2ef8f1=_0x2ef8f1-0x0;var _0x17498d=_0xba6c[_0x2ef8f1];return _0x17498d;};'use strict';var multer=require(_0xcba6('0x0'));var util=require('util');var path=require(_0xcba6('0x1'));var timeout=require(_0xcba6('0x2'));var express=require(_0xcba6('0x3'));var router=express[_0xcba6('0x4')]();var fs_extra=require(_0xcba6('0x5'));var auth=require(_0xcba6('0x6'));var interaction=require(_0xcba6('0x7'));var config=require('../../config/environment');var controller=require('./variable.controller');router[_0xcba6('0x8')]('/',auth[_0xcba6('0x9')](),controller[_0xcba6('0xa')]);router[_0xcba6('0x8')](_0xcba6('0xb'),auth[_0xcba6('0x9')](),controller[_0xcba6('0xc')]);router[_0xcba6('0xd')]('/',auth[_0xcba6('0x9')](),controller[_0xcba6('0xe')]);router[_0xcba6('0xf')]('/:id',auth[_0xcba6('0x9')](),controller[_0xcba6('0x10')]);router[_0xcba6('0x11')](_0xcba6('0xb'),auth['isAuthenticated'](),controller[_0xcba6('0x12')]);module['exports']=router;
\ No newline at end of file
index 3c4e5b0..bf05eb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x289f=['STRING','name','sequelize'];(function(_0x30b897,_0x19b112){var _0x57da1b=function(_0x12392e){while(--_0x12392e){_0x30b897['push'](_0x30b897['shift']());}};_0x57da1b(++_0x19b112);}(_0x289f,0x7d));var _0xf289=function(_0x4ed520,_0x21be63){_0x4ed520=_0x4ed520-0x0;var _0x4415a6=_0x289f[_0x4ed520];return _0x4415a6;};'use strict';var Sequelize=require(_0xf289('0x0'));module['exports']={'name':{'type':Sequelize[_0xf289('0x1')],'unique':_0xf289('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9cbb=['sequelize','exports','STRING'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x9cbb,0x165));var _0xb9cb=function(_0x42131c,_0x39a466){_0x42131c=_0x42131c-0x0;var _0x5350c9=_0x9cbb[_0x42131c];return _0x5350c9;};'use strict';var Sequelize=require(_0xb9cb('0x0'));module[_0xb9cb('0x1')]={'name':{'type':Sequelize[_0xb9cb('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index db779bb..800b3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2259=['includeAll','include','findAll','catch','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','limit','count','status','set','json','apply','save','update','destroy','then','get','Variables','UserProfileResource','error','stack','name','send','index','Variable','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','filter','merge','map','VIRTUAL','options'];(function(_0x27dac4,_0x599512){var _0x2730e9=function(_0x943aad){while(--_0x943aad){_0x27dac4['push'](_0x27dac4['shift']());}};_0x2730e9(++_0x599512);}(_0x2259,0x100));var _0x9225=function(_0x341b5f,_0x4bbcf8){_0x341b5f=_0x341b5f-0x0;var _0x4091aa=_0x2259[_0x341b5f];return _0x4091aa;};'use strict';var emlformat=require(_0x9225('0x0'));var rimraf=require(_0x9225('0x1'));var zipdir=require(_0x9225('0x2'));var jsonpatch=require(_0x9225('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9225('0x4'));var Mustache=require('mustache');var util=require(_0x9225('0x5'));var path=require('path');var sox=require(_0x9225('0x6'));var csv=require(_0x9225('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9225('0x8'));var _=require('lodash');var squel=require(_0x9225('0x9'));var crypto=require(_0x9225('0xa'));var jsforce=require(_0x9225('0xb'));var deskjs=require(_0x9225('0xc'));var toCsv=require(_0x9225('0x7'));var querystring=require('querystring');var Papa=require(_0x9225('0xd'));var Redis=require(_0x9225('0xe'));var authService=require(_0x9225('0xf'));var qs=require(_0x9225('0x10'));var as=require(_0x9225('0x11'));var hardwareService=require(_0x9225('0x12'));var logger=require('../../config/logger')(_0x9225('0x13'));var utils=require(_0x9225('0x14'));var config=require(_0x9225('0x15'));var licenseUtil=require(_0x9225('0x16'));var db=require(_0x9225('0x17'))['db'];function respondWithStatusCode(_0x404124,_0x2d754e){_0x2d754e=_0x2d754e||0xcc;return function(_0x9c7c42){if(_0x9c7c42){return _0x404124[_0x9225('0x18')](_0x2d754e);}return _0x404124['status'](_0x2d754e)[_0x9225('0x19')]();};}function respondWithResult(_0x453326,_0x32ea6f){_0x32ea6f=_0x32ea6f||0xc8;return function(_0x513630){if(_0x513630){return _0x453326['status'](_0x32ea6f)['json'](_0x513630);}};}function respondWithFilteredResult(_0x241a7d,_0x57f778){return function(_0x25d344){if(_0x25d344){var _0x2cc279=typeof _0x57f778[_0x9225('0x1a')]==='undefined'&&typeof _0x57f778[_0x9225('0x1b')]==='undefined';var _0x5b13f1=_0x25d344[_0x9225('0x1c')];var _0x276a47=_0x2cc279?0x0:_0x57f778[_0x9225('0x1a')];var _0x5a1e7=_0x2cc279?_0x25d344[_0x9225('0x1c')]:_0x57f778[_0x9225('0x1a')]+_0x57f778['limit'];var _0x408dc9;if(_0x5a1e7>=_0x5b13f1){_0x5a1e7=_0x5b13f1;_0x408dc9=0xc8;}else{_0x408dc9=0xce;}_0x241a7d[_0x9225('0x1d')](_0x408dc9);return _0x241a7d[_0x9225('0x1e')]('Content-Range',_0x276a47+'-'+_0x5a1e7+'/'+_0x5b13f1)[_0x9225('0x1f')](_0x25d344);}return null;};}function patchUpdates(_0x202a83){return function(_0x1a48fe){try{jsonpatch[_0x9225('0x20')](_0x1a48fe,_0x202a83,!![]);}catch(_0x137820){return BPromise['reject'](_0x137820);}return _0x1a48fe[_0x9225('0x21')]();};}function saveUpdates(_0x1b8262,_0x52c29c){return function(_0xad7899){if(_0xad7899){return _0xad7899[_0x9225('0x22')](_0x1b8262)['then'](function(_0x2fcaf0){return _0x2fcaf0;});}return null;};}function removeEntity(_0x4aca1a,_0x589ecd){return function(_0x2e8700){if(_0x2e8700){return _0x2e8700[_0x9225('0x23')]()[_0x9225('0x24')](function(){var _0x8bff23=_0x2e8700[_0x9225('0x25')]({'plain':!![]});var _0xeda202=_0x9225('0x26');return db[_0x9225('0x27')]['destroy']({'where':{'type':_0xeda202,'resourceId':_0x8bff23['id']}})[_0x9225('0x24')](function(){return _0x2e8700;});})[_0x9225('0x24')](function(){_0x4aca1a[_0x9225('0x1d')](0xcc)[_0x9225('0x19')]();});}};}function handleEntityNotFound(_0x40bcf,_0x1ca763){return function(_0x549eb7){if(!_0x549eb7){_0x40bcf[_0x9225('0x18')](0x194);}return _0x549eb7;};}function handleError(_0x4ef301,_0x175d63){_0x175d63=_0x175d63||0x1f4;return function(_0x2ee63e){logger[_0x9225('0x28')](_0x2ee63e[_0x9225('0x29')]);if(_0x2ee63e[_0x9225('0x2a')]){delete _0x2ee63e['name'];}_0x4ef301[_0x9225('0x1d')](_0x175d63)[_0x9225('0x2b')](_0x2ee63e);};}exports[_0x9225('0x2c')]=function(_0x5aeb78,_0xe4a776){var _0x312160={},_0x3ab0f5={},_0x2355f1={'count':0x0,'rows':[]};var _0x2da8a9=_['map'](db[_0x9225('0x2d')][_0x9225('0x2e')],function(_0x67b103){return{'name':_0x67b103['fieldName'],'type':_0x67b103[_0x9225('0x2f')][_0x9225('0x30')]};});_0x3ab0f5[_0x9225('0x31')]=_['map'](_0x2da8a9,'name');_0x3ab0f5['query']=_['keys'](_0x5aeb78[_0x9225('0x32')]);_0x3ab0f5[_0x9225('0x33')]=_['intersection'](_0x3ab0f5[_0x9225('0x31')],_0x3ab0f5['query']);_0x312160[_0x9225('0x34')]=_[_0x9225('0x35')](_0x3ab0f5['model'],qs[_0x9225('0x36')](_0x5aeb78[_0x9225('0x32')][_0x9225('0x36')]));_0x312160[_0x9225('0x34')]=_0x312160[_0x9225('0x34')][_0x9225('0x37')]?_0x312160[_0x9225('0x34')]:_0x3ab0f5[_0x9225('0x31')];if(!_0x5aeb78[_0x9225('0x32')][_0x9225('0x38')]('nolimit')){_0x312160[_0x9225('0x1b')]=qs[_0x9225('0x1b')](_0x5aeb78[_0x9225('0x32')][_0x9225('0x1b')]);_0x312160['offset']=qs[_0x9225('0x1a')](_0x5aeb78[_0x9225('0x32')][_0x9225('0x1a')]);}_0x312160['order']=qs[_0x9225('0x39')](_0x5aeb78[_0x9225('0x32')][_0x9225('0x39')]);_0x312160[_0x9225('0x3a')]=qs[_0x9225('0x33')](_['pick'](_0x5aeb78['query'],_0x3ab0f5[_0x9225('0x33')]),_0x2da8a9);if(_0x5aeb78['query'][_0x9225('0x3b')]){_0x312160['where']=_[_0x9225('0x3c')](_0x312160[_0x9225('0x3a')],{'$or':_[_0x9225('0x3d')](_0x2da8a9,function(_0xcd5d60){if(_0xcd5d60[_0x9225('0x2f')]!==_0x9225('0x3e')){var _0x254752={};_0x254752[_0xcd5d60['name']]={'$like':'%'+_0x5aeb78[_0x9225('0x32')][_0x9225('0x3b')]+'%'};return _0x254752;}})});}_0x312160=_[_0x9225('0x3c')]({},_0x312160,_0x5aeb78[_0x9225('0x3f')]);var _0x3ef880={'where':_0x312160[_0x9225('0x3a')]};return db[_0x9225('0x2d')][_0x9225('0x1c')](_0x3ef880)[_0x9225('0x24')](function(_0x57353a){_0x2355f1[_0x9225('0x1c')]=_0x57353a;if(_0x5aeb78[_0x9225('0x32')][_0x9225('0x40')]){_0x312160[_0x9225('0x41')]=[{'all':!![]}];}return db[_0x9225('0x2d')][_0x9225('0x42')](_0x312160);})['then'](function(_0x438dc9){_0x2355f1['rows']=_0x438dc9;return _0x2355f1;})[_0x9225('0x24')](respondWithFilteredResult(_0xe4a776,_0x312160))[_0x9225('0x43')](handleError(_0xe4a776,null));};exports[_0x9225('0x44')]=function(_0x305d97,_0x45cf8f){var _0x256953={'raw':!![],'where':{'id':_0x305d97['params']['id']}},_0x9e9f35={};_0x9e9f35[_0x9225('0x31')]=_[_0x9225('0x45')](db[_0x9225('0x2d')]['rawAttributes']);_0x9e9f35['query']=_[_0x9225('0x45')](_0x305d97[_0x9225('0x32')]);_0x9e9f35['filters']=_[_0x9225('0x35')](_0x9e9f35[_0x9225('0x31')],_0x9e9f35[_0x9225('0x32')]);_0x256953[_0x9225('0x34')]=_[_0x9225('0x35')](_0x9e9f35[_0x9225('0x31')],qs['fields'](_0x305d97[_0x9225('0x32')][_0x9225('0x36')]));_0x256953['attributes']=_0x256953[_0x9225('0x34')][_0x9225('0x37')]?_0x256953[_0x9225('0x34')]:_0x9e9f35[_0x9225('0x31')];if(_0x305d97[_0x9225('0x32')]['includeAll']){_0x256953[_0x9225('0x41')]=[{'all':!![]}];}_0x256953=_['merge']({},_0x256953,_0x305d97[_0x9225('0x3f')]);return db[_0x9225('0x2d')][_0x9225('0x46')](_0x256953)[_0x9225('0x24')](handleEntityNotFound(_0x45cf8f,null))[_0x9225('0x24')](respondWithResult(_0x45cf8f,null))[_0x9225('0x43')](handleError(_0x45cf8f,null));};exports[_0x9225('0x47')]=function(_0x1624bd,_0x58b23a){return db[_0x9225('0x2d')][_0x9225('0x47')](_0x1624bd[_0x9225('0x48')],{})[_0x9225('0x24')](function(_0x3fe503){var _0x411390=_0x1624bd[_0x9225('0x49')][_0x9225('0x25')]({'plain':!![]});if(!_0x411390)throw new Error(_0x9225('0x4a'));if(_0x411390[_0x9225('0x4b')]==='user'){var _0x5418ff=_0x3fe503['get']({'plain':!![]});var _0x3e9477=_0x9225('0x26');return db[_0x9225('0x4c')][_0x9225('0x46')]({'where':{'name':_0x3e9477,'userProfileId':_0x411390[_0x9225('0x4d')]},'raw':!![]})[_0x9225('0x24')](function(_0x7785a8){if(_0x7785a8&&_0x7785a8['autoAssociation']===0x0){return db['UserProfileResource'][_0x9225('0x47')]({'name':_0x5418ff['name'],'resourceId':_0x5418ff['id'],'type':_0x7785a8['name'],'sectionId':_0x7785a8['id']},{})['then'](function(){return _0x3fe503;});}else{return _0x3fe503;}})[_0x9225('0x43')](function(_0x488b86){logger[_0x9225('0x28')](_0x9225('0x4e'),_0x488b86);throw _0x488b86;});}return _0x3fe503;})[_0x9225('0x24')](respondWithResult(_0x58b23a,0xc9))['catch'](handleError(_0x58b23a,null));};exports['update']=function(_0x2e097b,_0x3fef4f){if(_0x2e097b[_0x9225('0x48')]['id']){delete _0x2e097b[_0x9225('0x48')]['id'];}return db['Variable']['find']({'where':{'id':_0x2e097b[_0x9225('0x4f')]['id']}})[_0x9225('0x24')](handleEntityNotFound(_0x3fef4f,null))[_0x9225('0x24')](saveUpdates(_0x2e097b[_0x9225('0x48')],null))[_0x9225('0x24')](respondWithResult(_0x3fef4f,null))[_0x9225('0x43')](handleError(_0x3fef4f,null));};exports[_0x9225('0x23')]=function(_0x38c4ea,_0x53e4cd){return db['Variable'][_0x9225('0x46')]({'where':{'id':_0x38c4ea[_0x9225('0x4f')]['id']}})['then'](handleEntityNotFound(_0x53e4cd,null))[_0x9225('0x24')](removeEntity(_0x53e4cd,null))['catch'](handleError(_0x53e4cd,null));};
\ No newline at end of file
+var _0x9a7d=['keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','eml-format','rimraf','zip-dir','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','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','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Variables','stack','name','send','index','map','Variable','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params'];(function(_0x5182be,_0x1a14af){var _0x355ea9=function(_0x25042d){while(--_0x25042d){_0x5182be['push'](_0x5182be['shift']());}};_0x355ea9(++_0x1a14af);}(_0x9a7d,0xa9));var _0xd9a7=function(_0x17fd65,_0x556d01){_0x17fd65=_0x17fd65-0x0;var _0x27d033=_0x9a7d[_0x17fd65];return _0x27d033;};'use strict';var emlformat=require(_0xd9a7('0x0'));var rimraf=require(_0xd9a7('0x1'));var zipdir=require(_0xd9a7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd9a7('0x3'));var BPromise=require(_0xd9a7('0x4'));var Mustache=require(_0xd9a7('0x5'));var util=require('util');var path=require('path');var sox=require(_0xd9a7('0x6'));var csv=require(_0xd9a7('0x7'));var ejs=require(_0xd9a7('0x8'));var fs=require('fs');var fs_extra=require(_0xd9a7('0x9'));var _=require(_0xd9a7('0xa'));var squel=require(_0xd9a7('0xb'));var crypto=require(_0xd9a7('0xc'));var jsforce=require(_0xd9a7('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd9a7('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd9a7('0xe'));var authService=require(_0xd9a7('0xf'));var qs=require(_0xd9a7('0x10'));var as=require(_0xd9a7('0x11'));var hardwareService=require(_0xd9a7('0x12'));var logger=require(_0xd9a7('0x13'))(_0xd9a7('0x14'));var utils=require('../../config/utils');var config=require(_0xd9a7('0x15'));var licenseUtil=require(_0xd9a7('0x16'));var db=require(_0xd9a7('0x17'))['db'];function respondWithStatusCode(_0x25d1a2,_0x54ba47){_0x54ba47=_0x54ba47||0xcc;return function(_0x439797){if(_0x439797){return _0x25d1a2[_0xd9a7('0x18')](_0x54ba47);}return _0x25d1a2[_0xd9a7('0x19')](_0x54ba47)[_0xd9a7('0x1a')]();};}function respondWithResult(_0x46eedc,_0x4c9648){_0x4c9648=_0x4c9648||0xc8;return function(_0x34c8ce){if(_0x34c8ce){return _0x46eedc[_0xd9a7('0x19')](_0x4c9648)['json'](_0x34c8ce);}};}function respondWithFilteredResult(_0x1620cc,_0x118daf){return function(_0x292f63){if(_0x292f63){var _0x1cc7df=typeof _0x118daf[_0xd9a7('0x1b')]===_0xd9a7('0x1c')&&typeof _0x118daf[_0xd9a7('0x1d')]==='undefined';var _0x246b2e=_0x292f63[_0xd9a7('0x1e')];var _0x196582=_0x1cc7df?0x0:_0x118daf[_0xd9a7('0x1b')];var _0x331302=_0x1cc7df?_0x292f63[_0xd9a7('0x1e')]:_0x118daf[_0xd9a7('0x1b')]+_0x118daf['limit'];var _0x12c3e2;if(_0x331302>=_0x246b2e){_0x331302=_0x246b2e;_0x12c3e2=0xc8;}else{_0x12c3e2=0xce;}_0x1620cc[_0xd9a7('0x19')](_0x12c3e2);return _0x1620cc[_0xd9a7('0x1f')](_0xd9a7('0x20'),_0x196582+'-'+_0x331302+'/'+_0x246b2e)['json'](_0x292f63);}return null;};}function patchUpdates(_0x457dd4){return function(_0x196d7b){try{jsonpatch[_0xd9a7('0x21')](_0x196d7b,_0x457dd4,!![]);}catch(_0x4e3dc4){return BPromise[_0xd9a7('0x22')](_0x4e3dc4);}return _0x196d7b[_0xd9a7('0x23')]();};}function saveUpdates(_0x3a7394,_0x1ececa){return function(_0x3fcd69){if(_0x3fcd69){return _0x3fcd69[_0xd9a7('0x24')](_0x3a7394)[_0xd9a7('0x25')](function(_0x3be08d){return _0x3be08d;});}return null;};}function removeEntity(_0x30e722,_0x409faa){return function(_0x56caa3){if(_0x56caa3){return _0x56caa3['destroy']()['then'](function(){var _0x3bb766=_0x56caa3[_0xd9a7('0x26')]({'plain':!![]});var _0x299450=_0xd9a7('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x299450,'resourceId':_0x3bb766['id']}})[_0xd9a7('0x25')](function(){return _0x56caa3;});})['then'](function(){_0x30e722[_0xd9a7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a636d,_0x3125cc){return function(_0xf9889e){if(!_0xf9889e){_0x3a636d[_0xd9a7('0x18')](0x194);}return _0xf9889e;};}function handleError(_0xcaacc2,_0x3dd5f4){_0x3dd5f4=_0x3dd5f4||0x1f4;return function(_0x561fdb){logger['error'](_0x561fdb[_0xd9a7('0x28')]);if(_0x561fdb[_0xd9a7('0x29')]){delete _0x561fdb[_0xd9a7('0x29')];}_0xcaacc2[_0xd9a7('0x19')](_0x3dd5f4)[_0xd9a7('0x2a')](_0x561fdb);};}exports[_0xd9a7('0x2b')]=function(_0x4cd9c2,_0x1197fe){var _0x1cf0a8={},_0x25a81e={},_0x4979bd={'count':0x0,'rows':[]};var _0x558a63=_[_0xd9a7('0x2c')](db[_0xd9a7('0x2d')][_0xd9a7('0x2e')],function(_0x302322){return{'name':_0x302322[_0xd9a7('0x2f')],'type':_0x302322['type'][_0xd9a7('0x30')]};});_0x25a81e[_0xd9a7('0x31')]=_[_0xd9a7('0x2c')](_0x558a63,'name');_0x25a81e[_0xd9a7('0x32')]=_['keys'](_0x4cd9c2[_0xd9a7('0x32')]);_0x25a81e[_0xd9a7('0x33')]=_[_0xd9a7('0x34')](_0x25a81e[_0xd9a7('0x31')],_0x25a81e[_0xd9a7('0x32')]);_0x1cf0a8[_0xd9a7('0x35')]=_['intersection'](_0x25a81e[_0xd9a7('0x31')],qs[_0xd9a7('0x36')](_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x36')]));_0x1cf0a8[_0xd9a7('0x35')]=_0x1cf0a8[_0xd9a7('0x35')][_0xd9a7('0x37')]?_0x1cf0a8[_0xd9a7('0x35')]:_0x25a81e[_0xd9a7('0x31')];if(!_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x38')](_0xd9a7('0x39'))){_0x1cf0a8[_0xd9a7('0x1d')]=qs[_0xd9a7('0x1d')](_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x1d')]);_0x1cf0a8['offset']=qs['offset'](_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x1b')]);}_0x1cf0a8[_0xd9a7('0x3a')]=qs['sort'](_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x3b')]);_0x1cf0a8[_0xd9a7('0x3c')]=qs[_0xd9a7('0x33')](_[_0xd9a7('0x3d')](_0x4cd9c2[_0xd9a7('0x32')],_0x25a81e[_0xd9a7('0x33')]),_0x558a63);if(_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x3e')]){_0x1cf0a8[_0xd9a7('0x3c')]=_[_0xd9a7('0x3f')](_0x1cf0a8['where'],{'$or':_[_0xd9a7('0x2c')](_0x558a63,function(_0x52a20e){if(_0x52a20e['type']!=='VIRTUAL'){var _0x4833da={};_0x4833da[_0x52a20e[_0xd9a7('0x29')]]={'$like':'%'+_0x4cd9c2[_0xd9a7('0x32')]['filter']+'%'};return _0x4833da;}})});}_0x1cf0a8=_[_0xd9a7('0x3f')]({},_0x1cf0a8,_0x4cd9c2['options']);var _0x18380f={'where':_0x1cf0a8['where']};return db['Variable'][_0xd9a7('0x1e')](_0x18380f)[_0xd9a7('0x25')](function(_0x4615ea){_0x4979bd[_0xd9a7('0x1e')]=_0x4615ea;if(_0x4cd9c2[_0xd9a7('0x32')][_0xd9a7('0x40')]){_0x1cf0a8[_0xd9a7('0x41')]=[{'all':!![]}];}return db[_0xd9a7('0x2d')][_0xd9a7('0x42')](_0x1cf0a8);})[_0xd9a7('0x25')](function(_0x2b7361){_0x4979bd[_0xd9a7('0x43')]=_0x2b7361;return _0x4979bd;})['then'](respondWithFilteredResult(_0x1197fe,_0x1cf0a8))[_0xd9a7('0x44')](handleError(_0x1197fe,null));};exports[_0xd9a7('0x45')]=function(_0x4cd6f5,_0x374a66){var _0x3dac3b={'raw':!![],'where':{'id':_0x4cd6f5[_0xd9a7('0x46')]['id']}},_0x490770={};_0x490770[_0xd9a7('0x31')]=_[_0xd9a7('0x47')](db[_0xd9a7('0x2d')][_0xd9a7('0x2e')]);_0x490770['query']=_[_0xd9a7('0x47')](_0x4cd6f5['query']);_0x490770[_0xd9a7('0x33')]=_[_0xd9a7('0x34')](_0x490770['model'],_0x490770[_0xd9a7('0x32')]);_0x3dac3b['attributes']=_[_0xd9a7('0x34')](_0x490770['model'],qs[_0xd9a7('0x36')](_0x4cd6f5['query'][_0xd9a7('0x36')]));_0x3dac3b[_0xd9a7('0x35')]=_0x3dac3b[_0xd9a7('0x35')]['length']?_0x3dac3b[_0xd9a7('0x35')]:_0x490770[_0xd9a7('0x31')];if(_0x4cd6f5[_0xd9a7('0x32')][_0xd9a7('0x40')]){_0x3dac3b[_0xd9a7('0x41')]=[{'all':!![]}];}_0x3dac3b=_['merge']({},_0x3dac3b,_0x4cd6f5['options']);return db[_0xd9a7('0x2d')][_0xd9a7('0x48')](_0x3dac3b)[_0xd9a7('0x25')](handleEntityNotFound(_0x374a66,null))['then'](respondWithResult(_0x374a66,null))[_0xd9a7('0x44')](handleError(_0x374a66,null));};exports[_0xd9a7('0x49')]=function(_0x31803c,_0x54c937){return db[_0xd9a7('0x2d')][_0xd9a7('0x49')](_0x31803c[_0xd9a7('0x4a')],{})[_0xd9a7('0x25')](function(_0x2d4f83){var _0x2ada41=_0x31803c['user']['get']({'plain':!![]});if(!_0x2ada41)throw new Error(_0xd9a7('0x4b'));if(_0x2ada41['role']===_0xd9a7('0x4c')){var _0x50a51b=_0x2d4f83[_0xd9a7('0x26')]({'plain':!![]});var _0x4ea60d=_0xd9a7('0x27');return db[_0xd9a7('0x4d')][_0xd9a7('0x48')]({'where':{'name':_0x4ea60d,'userProfileId':_0x2ada41['userProfileId']},'raw':!![]})[_0xd9a7('0x25')](function(_0x31cb03){if(_0x31cb03&&_0x31cb03[_0xd9a7('0x4e')]===0x0){return db[_0xd9a7('0x4f')][_0xd9a7('0x49')]({'name':_0x50a51b[_0xd9a7('0x29')],'resourceId':_0x50a51b['id'],'type':_0x31cb03[_0xd9a7('0x29')],'sectionId':_0x31cb03['id']},{})[_0xd9a7('0x25')](function(){return _0x2d4f83;});}else{return _0x2d4f83;}})[_0xd9a7('0x44')](function(_0x1be651){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1be651);throw _0x1be651;});}return _0x2d4f83;})[_0xd9a7('0x25')](respondWithResult(_0x54c937,0xc9))[_0xd9a7('0x44')](handleError(_0x54c937,null));};exports['update']=function(_0x201f17,_0x11a03f){if(_0x201f17[_0xd9a7('0x4a')]['id']){delete _0x201f17[_0xd9a7('0x4a')]['id'];}return db[_0xd9a7('0x2d')][_0xd9a7('0x48')]({'where':{'id':_0x201f17[_0xd9a7('0x46')]['id']}})[_0xd9a7('0x25')](handleEntityNotFound(_0x11a03f,null))[_0xd9a7('0x25')](saveUpdates(_0x201f17['body'],null))['then'](respondWithResult(_0x11a03f,null))[_0xd9a7('0x44')](handleError(_0x11a03f,null));};exports['destroy']=function(_0x32dae5,_0x429a11){return db['Variable'][_0xd9a7('0x48')]({'where':{'id':_0x32dae5[_0xd9a7('0x46')]['id']}})[_0xd9a7('0x25')](handleEntityNotFound(_0x429a11,null))[_0xd9a7('0x25')](removeEntity(_0x429a11,null))[_0xd9a7('0x44')](handleError(_0x429a11,null));};
\ No newline at end of file
index 15fbb75..89a789e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e35=['exports','Variable','lodash','util','api','moment','path','../../config/environment','./variable.attributes'];(function(_0x3403d5,_0x3d99fc){var _0xf9df4f=function(_0x33d748){while(--_0x33d748){_0x3403d5['push'](_0x3403d5['shift']());}};_0xf9df4f(++_0x3d99fc);}(_0x3e35,0x173));var _0x53e3=function(_0xccc0d4,_0x2f6bf7){_0xccc0d4=_0xccc0d4-0x0;var _0x27a653=_0x3e35[_0xccc0d4];return _0x27a653;};'use strict';var _=require(_0x53e3('0x0'));var util=require(_0x53e3('0x1'));var logger=require('../../config/logger')(_0x53e3('0x2'));var moment=require(_0x53e3('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x53e3('0x4'));var rimraf=require('rimraf');var config=require(_0x53e3('0x5'));var attributes=require(_0x53e3('0x6'));module[_0x53e3('0x7')]=function(_0x428204,_0x507473){return _0x428204['define'](_0x53e3('0x8'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcfe2=['path','rimraf','../../config/environment','exports','tools_variables','lodash','util','moment','request-promise'];(function(_0x28f5cb,_0x37fadc){var _0x27cd13=function(_0x248b27){while(--_0x248b27){_0x28f5cb['push'](_0x28f5cb['shift']());}};_0x27cd13(++_0x37fadc);}(_0xcfe2,0x1a3));var _0x2cfe=function(_0x20b9ac,_0x2b2e46){_0x20b9ac=_0x20b9ac-0x0;var _0x1772c8=_0xcfe2[_0x20b9ac];return _0x1772c8;};'use strict';var _=require(_0x2cfe('0x0'));var util=require(_0x2cfe('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2cfe('0x2'));var BPromise=require('bluebird');var rp=require(_0x2cfe('0x3'));var fs=require('fs');var path=require(_0x2cfe('0x4'));var rimraf=require(_0x2cfe('0x5'));var config=require(_0x2cfe('0x6'));var attributes=require('./variable.attributes');module[_0x2cfe('0x7')]=function(_0x4ba539,_0x441075){return _0x4ba539['define']('Variable',attributes,{'tableName':_0x2cfe('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c90922c..d5afe5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['where','attributes','include','map','model','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','Variable,\x20%s,\x20%s,\x20%s','error','message','catch','ShowVariable','find','options','raw'];(function(_0x1090f8,_0xd83a11){var _0x180524=function(_0x109ab8){while(--_0x109ab8){_0x1090f8['push'](_0x1090f8['shift']());}};_0x180524(++_0xd83a11);}(_0xf494,0x1c6));var _0x4f49=function(_0x5859d3,_0x26b667){_0x5859d3=_0x5859d3-0x0;var _0x1698f0=_0xf494[_0x5859d3];return _0x1698f0;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f49('0x3'));var fs=require('fs');var Redis=require(_0x4f49('0x4'));var db=require(_0x4f49('0x5'))['db'];var utils=require(_0x4f49('0x6'));var logger=require(_0x4f49('0x7'))(_0x4f49('0x8'));var config=require(_0x4f49('0x9'));var jayson=require(_0x4f49('0xa'));var client=jayson[_0x4f49('0xb')][_0x4f49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){return client[_0x4f49('0xd')](_0x42b0e8,_0x58e9a0)[_0x4f49('0xe')](function(_0x185174){logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,_0x4f49('0x11'));logger['debug'](_0x4f49('0x12'),_0x5eb186,_0x4f49('0x11'),JSON['stringify'](_0x185174));if(_0x185174[_0x4f49('0x13')]){if(_0x185174['error']['code']===0x1f4){logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174['error'][_0x4f49('0x14')]);return _0x327bd5(_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);}logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);return _0x169c95(_0x185174['error'][_0x4f49('0x14')]);}else{logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,'request\x20sent');_0x169c95(_0x185174['result'][_0x4f49('0x14')]);}})[_0x4f49('0x15')](function(_0x74886e){logger['error'](_0x4f49('0x10'),_0x5eb186,_0x74886e);_0x327bd5(_0x74886e);});});}exports[_0x4f49('0x16')]=function(_0x4e85df){var _0x49cdaf=this;return new Promise(function(_0x5bb23b,_0x560592){return db['Variable'][_0x4f49('0x17')]({'raw':_0x4e85df[_0x4f49('0x18')]?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x19')]===undefined?!![]:![]:!![],'where':_0x4e85df['options']?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x1a')]||null:null,'attributes':_0x4e85df[_0x4f49('0x18')]?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x1b')]||null:null,'include':_0x4e85df['options']?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x1c')]?_[_0x4f49('0x1d')](_0x4e85df['options'][_0x4f49('0x1c')],function(_0x1d70a7){return{'model':db[_0x1d70a7[_0x4f49('0x1e')]],'as':_0x1d70a7['as'],'attributes':_0x1d70a7[_0x4f49('0x1b')],'include':_0x1d70a7[_0x4f49('0x1c')]?_[_0x4f49('0x1d')](_0x1d70a7['include'],function(_0x4e9041){return{'model':db[_0x4e9041[_0x4f49('0x1e')]],'as':_0x4e9041['as'],'attributes':_0x4e9041[_0x4f49('0x1b')],'include':_0x4e9041['include']?_[_0x4f49('0x1d')](_0x4e9041[_0x4f49('0x1c')],function(_0x35f8e0){return{'model':db[_0x35f8e0['model']],'as':_0x35f8e0['as'],'attributes':_0x35f8e0[_0x4f49('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4f49('0xe')](function(_0x298785){logger[_0x4f49('0xf')](_0x4f49('0x16'),_0x4e85df);logger[_0x4f49('0x1f')]('ShowVariable',_0x4e85df,JSON['stringify'](_0x298785));_0x5bb23b(_0x298785);})[_0x4f49('0x15')](function(_0x2c00ee){logger[_0x4f49('0x13')]('ShowVariable',_0x2c00ee[_0x4f49('0x14')],_0x4e85df);_0x560592(_0x49cdaf[_0x4f49('0x13')](0x1f4,_0x2c00ee[_0x4f49('0x14')]));});});};
\ No newline at end of file
+var _0x9957=['stringify','error','code','message','result','catch','ShowVariable','find','raw','options','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x47075b,_0x29da3a){var _0x111549=function(_0x45d197){while(--_0x45d197){_0x47075b['push'](_0x47075b['shift']());}};_0x111549(++_0x29da3a);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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']('Variable,\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);});});}exports[_0x7995('0x18')]=function(_0x291317){var _0x1e1415=this;return new Promise(function(_0x37a7d4,_0x4faa60){return db['Variable'][_0x7995('0x19')]({'raw':_0x291317['options']?_0x291317['options'][_0x7995('0x1a')]===undefined?!![]:![]:!![],'where':_0x291317[_0x7995('0x1b')]?_0x291317['options'][_0x7995('0x1c')]||null:null,'attributes':_0x291317['options']?_0x291317['options'][_0x7995('0x1d')]||null:null,'include':_0x291317[_0x7995('0x1b')]?_0x291317[_0x7995('0x1b')][_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x291317[_0x7995('0x1b')]['include'],function(_0x32a09a){return{'model':db[_0x32a09a[_0x7995('0x20')]],'as':_0x32a09a['as'],'attributes':_0x32a09a[_0x7995('0x1d')],'include':_0x32a09a[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x32a09a[_0x7995('0x1e')],function(_0x475351){return{'model':db[_0x475351[_0x7995('0x20')]],'as':_0x475351['as'],'attributes':_0x475351['attributes'],'include':_0x475351[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x475351[_0x7995('0x1e')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x20')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47625f){logger['info'](_0x7995('0x18'),_0x291317);logger[_0x7995('0x10')](_0x7995('0x18'),_0x291317,JSON[_0x7995('0x12')](_0x47625f));_0x37a7d4(_0x47625f);})[_0x7995('0x17')](function(_0x4b6f99){logger[_0x7995('0x13')]('ShowVariable',_0x4b6f99[_0x7995('0x15')],_0x291317);_0x4faa60(_0x1e1415[_0x7995('0x13')](0x1f4,_0x4b6f99[_0x7995('0x15')]));});});};
\ No newline at end of file
index 410b1d9..345860e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa90=['exports','Router','./version.controller','get','index','isAuthenticated','fetch','/reset','reset','/pull','canUpdate','pull','restart','/migrations','migrations'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xfa90,0x13c));var _0x0fa9=function(_0x49033c,_0x590a5c){_0x49033c=_0x49033c-0x0;var _0x174583=_0xfa90[_0x49033c];return _0x174583;};'use strict';var express=require('express');var router=express[_0x0fa9('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x0fa9('0x1'));router[_0x0fa9('0x2')]('/',controller[_0x0fa9('0x3')]);router[_0x0fa9('0x2')]('/fetch',auth[_0x0fa9('0x4')](),auth['canUpdate'](),controller[_0x0fa9('0x5')]);router['get'](_0x0fa9('0x6'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x0fa9('0x7')]);router[_0x0fa9('0x2')](_0x0fa9('0x8'),auth['isAuthenticated'](),auth[_0x0fa9('0x9')](),controller[_0x0fa9('0xa')]);router[_0x0fa9('0x2')]('/restart',auth['isAuthenticated'](),controller[_0x0fa9('0xb')]);router[_0x0fa9('0x2')](_0x0fa9('0xc'),controller[_0x0fa9('0xd')]);module[_0x0fa9('0xe')]=router;
\ No newline at end of file
+var _0xa968=['./version.controller','get','/fetch','isAuthenticated','canUpdate','/reset','reset','/pull','pull','/restart','/migrations','migrations','exports','Router'];(function(_0x15aba6,_0x326d0b){var _0x390024=function(_0x3fa403){while(--_0x3fa403){_0x15aba6['push'](_0x15aba6['shift']());}};_0x390024(++_0x326d0b);}(_0xa968,0x195));var _0x8a96=function(_0x359e5f,_0x140165){_0x359e5f=_0x359e5f-0x0;var _0x275f53=_0xa968[_0x359e5f];return _0x275f53;};'use strict';var express=require('express');var router=express[_0x8a96('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x8a96('0x1'));router['get']('/',controller['index']);router[_0x8a96('0x2')](_0x8a96('0x3'),auth[_0x8a96('0x4')](),auth[_0x8a96('0x5')](),controller['fetch']);router[_0x8a96('0x2')](_0x8a96('0x6'),auth[_0x8a96('0x4')](),auth[_0x8a96('0x5')](),controller[_0x8a96('0x7')]);router['get'](_0x8a96('0x8'),auth[_0x8a96('0x4')](),auth['canUpdate'](),controller[_0x8a96('0x9')]);router[_0x8a96('0x2')](_0x8a96('0xa'),auth[_0x8a96('0x4')](),controller['restart']);router['get'](_0x8a96('0xb'),controller[_0x8a96('0xc')]);module[_0x8a96('0xd')]=router;
\ No newline at end of file
index 0256587..fbefef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x638c=['../../config/environment','../../config/pm2','simple-git','root','query','latest','exports','2.0.0','status','master','error','json','info','reset','--hard','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','server','length','replace','.js','push','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.','join','map','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','pkginfo','version','compare-versions','child_process','exec'];(function(_0x3397f2,_0x1b23a4){var _0xa818b1=function(_0x73aac9){while(--_0x73aac9){_0x3397f2['push'](_0x3397f2['shift']());}};_0xa818b1(++_0x1b23a4);}(_0x638c,0x1a9));var _0xc638=function(_0x12d869,_0x432132){_0x12d869=_0x12d869-0x0;var _0x1cfac3=_0x638c[_0x12d869];return _0x1cfac3;};'use strict';var Umzug=require('umzug');var path=require(_0xc638('0x0'));var fs=require('fs');var _=require(_0xc638('0x1'));var pkginfo=require(_0xc638('0x2'))(module,_0xc638('0x3'));var compareVersions=require(_0xc638('0x4'));var exec=require(_0xc638('0x5'))[_0xc638('0x6')];var db=require('../../mysqldb')['db'];var config=require(_0xc638('0x7'));var pm2=require(_0xc638('0x8'));var logger=require('../../config/logger')('update');var git=require(_0xc638('0x9'))(config[_0xc638('0xa')]);exports['index']=function(_0x415627,_0x173ade){var _0xbbdce7={'current':module['exports'][_0xc638('0x3')],'phonebar':0x2};if(_0x415627['query']&&_0x415627[_0xc638('0xb')][_0xc638('0xc')]){return git['fetch']()['tags'](function(_0x5c0ddf,_0x4ae14f){_0xbbdce7[_0xc638('0xc')]=(_0x5c0ddf?module[_0xc638('0xd')]['version']:_0x4ae14f['latest'])||_0xc638('0xe');return _0x173ade[_0xc638('0xf')](0xc8)['json'](_0xbbdce7);});}else{return _0x173ade[_0xc638('0xf')](0xc8)['json'](_0xbbdce7);}};exports['fetch']=function(_0x1b96c4,_0x1b0867){return git['fetch'](['origin',_0xc638('0x10')],function(_0x4b6432){if(_0x4b6432){logger[_0xc638('0x11')](_0x4b6432);return _0x1b0867[_0xc638('0xf')](0x1f4)[_0xc638('0x12')](_0x4b6432);}logger[_0xc638('0x13')]('git\x20fetch');return _0x1b0867[_0xc638('0xf')](0xc8)[_0xc638('0x12')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0xc638('0x14')]=function(_0x5a6794,_0x520de9){return git[_0xc638('0x14')]([_0xc638('0x15'),'FETCH_HEAD'],function(_0x271edf){if(_0x271edf){logger[_0xc638('0x11')](_0x271edf);return _0x520de9[_0xc638('0xf')](0x1f4)[_0xc638('0x12')](_0x271edf);}logger[_0xc638('0x13')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x520de9[_0xc638('0xf')](0xc8)[_0xc638('0x12')]({'output':_0xc638('0x16')});});};exports[_0xc638('0x17')]=function(_0x10a584,_0x5c611c){exec(_0xc638('0x18'),function(_0x42b246,_0xc2cc7a,_0x2e605f){logger['info'](_0xc2cc7a);logger[_0xc638('0x13')](_0x2e605f);if(_0x42b246){logger[_0xc638('0x11')](_0x42b246);return _0x5c611c[_0xc638('0xf')](0x1f4)['json'](_0x42b246);}return _0x5c611c[_0xc638('0xf')](0xc8)[_0xc638('0x12')]({'output':_0xc2cc7a});});};exports['restart']=function(_0x33eb10,_0x3c2543){return pm2[_0xc638('0x19')](_0xc638('0x1a'))['then'](function(_0x530df6){logger['info']('pm2\x20restart\x20motion\x20%s',_0x530df6);return _0x3c2543[_0xc638('0xf')](0xc8)[_0xc638('0x12')]({'output':_0xc638('0x1b')});})[_0xc638('0x1c')](function(_0x1ccdc3){logger['error'](_0x1ccdc3);return _0x3c2543['status'](0x1f4)[_0xc638('0x12')](_0x1ccdc3);});};exports[_0xc638('0x1d')]=function(_0x3f3832,_0x274de3){var _0x204ac2=fs[_0xc638('0x1e')](path['join'](config[_0xc638('0xa')],_0xc638('0x1f'),_0xc638('0x1d')));var _0x6e4c5f=[];for(var _0x455295=0x0;_0x455295<_0x204ac2[_0xc638('0x20')];_0x455295++){var _0x5a9794=_0x204ac2[_0x455295][_0xc638('0x21')](_0xc638('0x22'),'');if(compareVersions(module[_0xc638('0xd')][_0xc638('0x3')],_0x5a9794)===-0x1){_0x6e4c5f[_0xc638('0x23')](_0x5a9794);}}if(_0x6e4c5f['length']){var _0x285e3a=_0x6e4c5f[_0xc638('0x24')](compareVersions);var _0x28922d=new Umzug({'storage':_0xc638('0x25'),'storageOptions':{'model':db[_0xc638('0x26')],'modelName':_0xc638('0x26'),'columnName':_0xc638('0x3')},'migrations':{'params':[db['sequelize'][_0xc638('0x27')](),db[_0xc638('0x25')][_0xc638('0x28')],function(){throw new Error(_0xc638('0x29'));}],'path':path[_0xc638('0x2a')](config['root'],_0xc638('0x1f'),_0xc638('0x1d')),'pattern':/\.js$/}});_0x28922d['up']({'migrations':_[_0xc638('0x2b')](_0x285e3a,function(_0x13e51a){return _0x13e51a+_0xc638('0x22');})})['then'](function(){return _0x274de3['status'](0xc8)[_0xc638('0x12')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xc638('0xd')][_0xc638('0x3')]+_0xc638('0x2c')+_[_0xc638('0x2d')](_0x285e3a),'migrations':_[_0xc638('0x2a')](_0x285e3a)});})[_0xc638('0x1c')](function(_0x37dbd7){if(_0x37dbd7 instanceof db[_0xc638('0x25')][_0xc638('0x2e')]){return _0x274de3[_0xc638('0xf')](0xc8)[_0xc638('0x12')]({'output':_0xc638('0x2f')});}else{return _0x274de3['status'](0x1f4)[_0xc638('0x12')](_0x37dbd7);}});}else{return _0x274de3[_0xc638('0xf')](0xc8)[_0xc638('0x12')]({'output':_0xc638('0x2f')});}};
\ No newline at end of file
+var _0x405f=['compare-versions','child_process','exec','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','json','origin','master','error','status','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','info','restart','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','replace','.js','push','length','sequelize','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','then','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version'];(function(_0x37edc6,_0x4e3e80){var _0x3a406e=function(_0x573da8){while(--_0x573da8){_0x37edc6['push'](_0x37edc6['shift']());}};_0x3a406e(++_0x4e3e80);}(_0x405f,0x6b));var _0xf405=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x405f[_0x4a53d];return _0x27410e;};'use strict';var Umzug=require(_0xf405('0x0'));var path=require(_0xf405('0x1'));var fs=require('fs');var _=require(_0xf405('0x2'));var pkginfo=require(_0xf405('0x3'))(module,_0xf405('0x4'));var compareVersions=require(_0xf405('0x5'));var exec=require(_0xf405('0x6'))[_0xf405('0x7')];var db=require('../../mysqldb')['db'];var config=require(_0xf405('0x8'));var pm2=require(_0xf405('0x9'));var logger=require(_0xf405('0xa'))(_0xf405('0xb'));var git=require(_0xf405('0xc'))(config[_0xf405('0xd')]);exports[_0xf405('0xe')]=function(_0x2fb3d8,_0x400bcf){var _0x144b12={'current':module[_0xf405('0xf')]['version'],'phonebar':0x2};if(_0x2fb3d8[_0xf405('0x10')]&&_0x2fb3d8[_0xf405('0x10')][_0xf405('0x11')]){return git[_0xf405('0x12')]()[_0xf405('0x13')](function(_0x6269ae,_0x322460){_0x144b12['latest']=(_0x6269ae?module[_0xf405('0xf')][_0xf405('0x4')]:_0x322460[_0xf405('0x11')])||_0xf405('0x14');return _0x400bcf['status'](0xc8)[_0xf405('0x15')](_0x144b12);});}else{return _0x400bcf['status'](0xc8)[_0xf405('0x15')](_0x144b12);}};exports[_0xf405('0x12')]=function(_0x30b65c,_0x426296){return git[_0xf405('0x12')]([_0xf405('0x16'),_0xf405('0x17')],function(_0x3ab760){if(_0x3ab760){logger[_0xf405('0x18')](_0x3ab760);return _0x426296[_0xf405('0x19')](0x1f4)['json'](_0x3ab760);}logger['info'](_0xf405('0x1a'));return _0x426296[_0xf405('0x19')](0xc8)[_0xf405('0x15')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0xf405('0x1b')]=function(_0x466ec8,_0x2c6b98){return git['reset']([_0xf405('0x1c'),_0xf405('0x1d')],function(_0x18a4c7){if(_0x18a4c7){logger['error'](_0x18a4c7);return _0x2c6b98[_0xf405('0x19')](0x1f4)[_0xf405('0x15')](_0x18a4c7);}logger['info'](_0xf405('0x1e'));return _0x2c6b98['status'](0xc8)[_0xf405('0x15')]({'output':_0xf405('0x1f')});});};exports['pull']=function(_0x5071eb,_0x4f589a){exec(_0xf405('0x20'),function(_0x44ed1c,_0x500ee4,_0x49e814){logger[_0xf405('0x21')](_0x500ee4);logger[_0xf405('0x21')](_0x49e814);if(_0x44ed1c){logger['error'](_0x44ed1c);return _0x4f589a[_0xf405('0x19')](0x1f4)[_0xf405('0x15')](_0x44ed1c);}return _0x4f589a['status'](0xc8)['json']({'output':_0x500ee4});});};exports[_0xf405('0x22')]=function(_0x573ff4,_0x31b1a3){return pm2[_0xf405('0x22')](_0xf405('0x23'))['then'](function(_0x2bb822){logger[_0xf405('0x21')](_0xf405('0x24'),_0x2bb822);return _0x31b1a3[_0xf405('0x19')](0xc8)['json']({'output':_0xf405('0x25')});})[_0xf405('0x26')](function(_0x26d893){logger['error'](_0x26d893);return _0x31b1a3[_0xf405('0x19')](0x1f4)[_0xf405('0x15')](_0x26d893);});};exports[_0xf405('0x27')]=function(_0x4f0463,_0x2b3b05){var _0x3fa922=fs[_0xf405('0x28')](path[_0xf405('0x29')](config[_0xf405('0xd')],_0xf405('0x2a'),'migrations'));var _0x597895=[];for(var _0x173bad=0x0;_0x173bad<_0x3fa922['length'];_0x173bad++){var _0x3125f6=_0x3fa922[_0x173bad][_0xf405('0x2b')](_0xf405('0x2c'),'');if(compareVersions(module[_0xf405('0xf')][_0xf405('0x4')],_0x3125f6)===-0x1){_0x597895[_0xf405('0x2d')](_0x3125f6);}}if(_0x597895[_0xf405('0x2e')]){var _0x27038c=_0x597895['sort'](compareVersions);var _0x50399c=new Umzug({'storage':_0xf405('0x2f'),'storageOptions':{'model':db[_0xf405('0x30')],'modelName':_0xf405('0x30'),'columnName':_0xf405('0x4')},'migrations':{'params':[db[_0xf405('0x2f')]['getQueryInterface'](),db[_0xf405('0x2f')][_0xf405('0x31')],function(){throw new Error(_0xf405('0x32'));}],'path':path[_0xf405('0x29')](config['root'],_0xf405('0x2a'),_0xf405('0x27')),'pattern':/\.js$/}});_0x50399c['up']({'migrations':_['map'](_0x27038c,function(_0x4b28b2){return _0x4b28b2+_0xf405('0x2c');})})[_0xf405('0x33')](function(){return _0x2b3b05[_0xf405('0x19')](0xc8)[_0xf405('0x15')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xf405('0xf')][_0xf405('0x4')]+_0xf405('0x34')+_[_0xf405('0x35')](_0x27038c),'migrations':_['join'](_0x27038c)});})[_0xf405('0x26')](function(_0xa643c3){if(_0xa643c3 instanceof db[_0xf405('0x2f')][_0xf405('0x36')]){return _0x2b3b05[_0xf405('0x19')](0xc8)[_0xf405('0x15')]({'output':_0xf405('0x37')});}else{return _0x2b3b05[_0xf405('0x19')](0x1f4)[_0xf405('0x15')](_0xa643c3);}});}else{return _0x2b3b05[_0xf405('0x19')](0xc8)[_0xf405('0x15')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index 10e9aa7..9cd5cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd25f=['destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete'];(function(_0x52246c,_0x32403f){var _0x3a690c=function(_0x182b60){while(--_0x182b60){_0x52246c['push'](_0x52246c['shift']());}};_0x3a690c(++_0x32403f);}(_0xd25f,0x1e5));var _0xfd25=function(_0xadd417,_0x207028){_0xadd417=_0xadd417-0x0;var _0x5c79e7=_0xd25f[_0xadd417];return _0x5c79e7;};'use strict';var multer=require(_0xfd25('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfd25('0x1'));var express=require(_0xfd25('0x2'));var router=express[_0xfd25('0x3')]();var fs_extra=require(_0xfd25('0x4'));var auth=require(_0xfd25('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfd25('0x6'));router[_0xfd25('0x7')]('/',auth[_0xfd25('0x8')](),controller[_0xfd25('0x9')]);router['get'](_0xfd25('0xa'),auth[_0xfd25('0x8')](),controller[_0xfd25('0xb')]);router['get'](_0xfd25('0xc'),auth[_0xfd25('0x8')](),controller[_0xfd25('0xd')]);router[_0xfd25('0xe')]('/',auth[_0xfd25('0x8')](),controller[_0xfd25('0xf')]);router[_0xfd25('0x10')](_0xfd25('0xc'),auth[_0xfd25('0x8')](),controller[_0xfd25('0x11')]);router[_0xfd25('0x12')](_0xfd25('0xc'),auth[_0xfd25('0x8')](),controller[_0xfd25('0x13')]);module[_0xfd25('0x14')]=router;
\ No newline at end of file
+var _0x85ed=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','multer','util','path'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x85ed,0x66));var _0xd85e=function(_0x18abd2,_0x22d4b3){_0x18abd2=_0x18abd2-0x0;var _0x1dcad6=_0x85ed[_0x18abd2];return _0x1dcad6;};'use strict';var multer=require(_0xd85e('0x0'));var util=require(_0xd85e('0x1'));var path=require(_0xd85e('0x2'));var timeout=require(_0xd85e('0x3'));var express=require(_0xd85e('0x4'));var router=express[_0xd85e('0x5')]();var fs_extra=require(_0xd85e('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd85e('0x7'));var config=require(_0xd85e('0x8'));var controller=require(_0xd85e('0x9'));router[_0xd85e('0xa')]('/',auth['isAuthenticated'](),controller[_0xd85e('0xb')]);router[_0xd85e('0xa')]('/describe',auth[_0xd85e('0xc')](),controller[_0xd85e('0xd')]);router[_0xd85e('0xa')](_0xd85e('0xe'),auth['isAuthenticated'](),controller[_0xd85e('0xf')]);router[_0xd85e('0x10')]('/',auth[_0xd85e('0xc')](),controller[_0xd85e('0x11')]);router[_0xd85e('0x12')](_0xd85e('0xe'),auth['isAuthenticated'](),controller[_0xd85e('0x13')]);router['delete']('/:id',auth[_0xd85e('0xc')](),controller[_0xd85e('0x14')]);module['exports']=router;
\ No newline at end of file
index da2ae67..aed62f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1678=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x45335d,_0x209a29){var _0x116872=function(_0x1ea175){while(--_0x1ea175){_0x45335d['push'](_0x45335d['shift']());}};_0x116872(++_0x209a29);}(_0x1678,0x17b));var _0x8167=function(_0x269d5a,_0x3a44bc){_0x269d5a=_0x269d5a-0x0;var _0x53efb3=_0x1678[_0x269d5a];return _0x53efb3;};'use strict';var Sequelize=require(_0x8167('0x0'));module[_0x8167('0x1')]={'type':{'type':Sequelize[_0x8167('0x2')]},'uniqueid':{'type':Sequelize[_0x8167('0x2')]},'calleridnum':{'type':Sequelize[_0x8167('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x8167('0x2')]},'membername':{'type':Sequelize[_0x8167('0x2')]},'agentcalledAt':{'type':Sequelize[_0x8167('0x3')]},'agentconnectAt':{'type':Sequelize[_0x8167('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x8167('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x8167('0x3')]},'agentdumpAt':{'type':Sequelize[_0x8167('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x8167('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x8167('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x8167('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x8167('0x5')]},'reason':{'type':Sequelize[_0x8167('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8167('0x2')]},'channelstate':{'type':Sequelize[_0x8167('0x5')]},'channelstatedesc':{'type':Sequelize[_0x8167('0x2')]},'connectedlinenum':{'type':Sequelize[_0x8167('0x2')]},'connectedlinename':{'type':Sequelize[_0x8167('0x2')]},'language':{'type':Sequelize[_0x8167('0x2')]},'accountcode':{'type':Sequelize[_0x8167('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x8167('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x8167('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0x8167('0x2')]},'destcalleridnum':{'type':Sequelize[_0x8167('0x2')]},'destcalleridname':{'type':Sequelize[_0x8167('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x8167('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x8167('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x8167('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x8167('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x8167('0x2')]},'transfer':{'type':Sequelize[_0x8167('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x8167('0x2')],'comment':_0x8167('0x6')},'transferexten':{'type':Sequelize[_0x8167('0x2')]},'transferuniqueid':{'type':Sequelize[_0x8167('0x2')]},'agententerreason':{'type':Sequelize[_0x8167('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xac35=['exports','STRING','DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x11a55c,_0x4eced9){var _0x26c390=function(_0x5b0662){while(--_0x5b0662){_0x11a55c['push'](_0x11a55c['shift']());}};_0x26c390(++_0x4eced9);}(_0xac35,0x141));var _0x5ac3=function(_0x1c6efe,_0x262d82){_0x1c6efe=_0x1c6efe-0x0;var _0x54d3cd=_0xac35[_0x1c6efe];return _0x54d3cd;};'use strict';var Sequelize=require(_0x5ac3('0x0'));module[_0x5ac3('0x1')]={'type':{'type':Sequelize[_0x5ac3('0x2')]},'uniqueid':{'type':Sequelize[_0x5ac3('0x2')]},'calleridnum':{'type':Sequelize[_0x5ac3('0x2')]},'calleridname':{'type':Sequelize[_0x5ac3('0x2')]},'queue':{'type':Sequelize[_0x5ac3('0x2')]},'interface':{'type':Sequelize[_0x5ac3('0x2')]},'membername':{'type':Sequelize[_0x5ac3('0x2')]},'agentcalledAt':{'type':Sequelize[_0x5ac3('0x3')]},'agentconnectAt':{'type':Sequelize[_0x5ac3('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x5ac3('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x5ac3('0x3')]},'agentdumpAt':{'type':Sequelize[_0x5ac3('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x5ac3('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x5ac3('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x5ac3('0x5')]},'agentacw':{'type':Sequelize[_0x5ac3('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x5ac3('0x5')]},'reason':{'type':Sequelize[_0x5ac3('0x2')]},'lastevent':{'type':Sequelize[_0x5ac3('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x5ac3('0x5')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x5ac3('0x2')]},'connectedlinename':{'type':Sequelize[_0x5ac3('0x2')]},'language':{'type':Sequelize[_0x5ac3('0x2')]},'accountcode':{'type':Sequelize[_0x5ac3('0x2')]},'context':{'type':Sequelize[_0x5ac3('0x2')]},'exten':{'type':Sequelize[_0x5ac3('0x2')]},'priority':{'type':Sequelize[_0x5ac3('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x5ac3('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0x5ac3('0x2')]},'destcalleridnum':{'type':Sequelize[_0x5ac3('0x2')]},'destcalleridname':{'type':Sequelize[_0x5ac3('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x5ac3('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x5ac3('0x2')]},'destlanguage':{'type':Sequelize[_0x5ac3('0x2')]},'destaccountcode':{'type':Sequelize[_0x5ac3('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x5ac3('0x2')]},'destuniqueid':{'type':Sequelize[_0x5ac3('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x5ac3('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x5ac3('0x2')],'comment':_0x5ac3('0x6')},'transferexten':{'type':Sequelize[_0x5ac3('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x5ac3('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 028a48d..3f88c4b 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(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 c4e087c..4966c68 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(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x5785,0x119));var _0x5578=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x5785[_0x39096d];return _0x13da4f;};'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 _0x3baf=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','destuniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3baf,0xf7));var _0xf3ba=function(_0x29d5ce,_0x1503e9){_0x29d5ce=_0x29d5ce-0x0;var _0x266f7b=_0x3baf[_0x29d5ce];return _0x266f7b;};'use strict';var _=require(_0xf3ba('0x0'));var util=require(_0xf3ba('0x1'));var logger=require(_0xf3ba('0x2'))(_0xf3ba('0x3'));var moment=require(_0xf3ba('0x4'));var BPromise=require(_0xf3ba('0x5'));var rp=require(_0xf3ba('0x6'));var fs=require('fs');var path=require(_0xf3ba('0x7'));var rimraf=require(_0xf3ba('0x8'));var config=require(_0xf3ba('0x9'));var attributes=require(_0xf3ba('0xa'));module[_0xf3ba('0xb')]=function(_0x475268,_0x2e6df2){return _0x475268[_0xf3ba('0xc')]('VoiceAgentReport',attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':['uniqueid',_0xf3ba('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2ab9321..2b9f72b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc410=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceAgentReport,\x20%s,\x20%s','message','result','CreateVoiceAgentReport','VoiceAgentReport','create','options','raw','debug','catch','UpdateVoiceAgentReport','update','body','where','attributes','limit'];(function(_0x50f288,_0xfecd76){var _0x2a0755=function(_0x48f555){while(--_0x48f555){_0x50f288['push'](_0x50f288['shift']());}};_0x2a0755(++_0xfecd76);}(_0xc410,0xe7));var _0x0c41=function(_0x39868e,_0x4b6da9){_0x39868e=_0x39868e-0x0;var _0x4eadec=_0xc410[_0x39868e];return _0x4eadec;};'use strict';var _=require('lodash');var util=require(_0x0c41('0x0'));var moment=require('moment');var BPromise=require(_0x0c41('0x1'));var rs=require(_0x0c41('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c41('0x3'))['db'];var utils=require(_0x0c41('0x4'));var logger=require(_0x0c41('0x5'))(_0x0c41('0x6'));var config=require('../../config/environment');var jayson=require(_0x0c41('0x7'));var client=jayson[_0x0c41('0x8')][_0x0c41('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb01aec,_0x2fee70,_0x5d8f5b){return new BPromise(function(_0x98c7ac,_0x3c5068){return client[_0x0c41('0xa')](_0xb01aec,_0x5d8f5b)[_0x0c41('0xb')](function(_0x4ad8b0){logger[_0x0c41('0xc')]('VoiceAgentReport,\x20%s,\x20%s',_0x2fee70,_0x0c41('0xd'));logger['debug'](_0x0c41('0xe'),_0x2fee70,_0x0c41('0xd'),JSON[_0x0c41('0xf')](_0x4ad8b0));if(_0x4ad8b0[_0x0c41('0x10')]){if(_0x4ad8b0['error']['code']===0x1f4){logger[_0x0c41('0x10')](_0x0c41('0x11'),_0x2fee70,_0x4ad8b0[_0x0c41('0x10')][_0x0c41('0x12')]);return _0x3c5068(_0x4ad8b0[_0x0c41('0x10')][_0x0c41('0x12')]);}logger[_0x0c41('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x2fee70,_0x4ad8b0[_0x0c41('0x10')][_0x0c41('0x12')]);return _0x98c7ac(_0x4ad8b0[_0x0c41('0x10')][_0x0c41('0x12')]);}else{logger[_0x0c41('0xc')](_0x0c41('0x11'),_0x2fee70,'request\x20sent');_0x98c7ac(_0x4ad8b0[_0x0c41('0x13')][_0x0c41('0x12')]);}})['catch'](function(_0x29a625){logger[_0x0c41('0x10')](_0x0c41('0x11'),_0x2fee70,_0x29a625);_0x3c5068(_0x29a625);});});}exports[_0x0c41('0x14')]=function(_0x3334ab){var _0xd6b7d5=this;return new Promise(function(_0x446a1d,_0x57d190){return db[_0x0c41('0x15')][_0x0c41('0x16')](_0x3334ab['body'],{'raw':_0x3334ab[_0x0c41('0x17')]?_0x3334ab['options'][_0x0c41('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x2c9c4c){logger[_0x0c41('0xc')](_0x0c41('0x14'),_0x3334ab);logger[_0x0c41('0x19')](_0x0c41('0x14'),_0x3334ab,JSON['stringify'](_0x2c9c4c));_0x446a1d(_0x2c9c4c);})[_0x0c41('0x1a')](function(_0xc95016){logger[_0x0c41('0x10')](_0x0c41('0x14'),_0xc95016[_0x0c41('0x12')],_0x3334ab);_0x57d190(_0xd6b7d5[_0x0c41('0x10')](0x1f4,_0xc95016[_0x0c41('0x12')]));});});};exports[_0x0c41('0x1b')]=function(_0x56b3ee){var _0x334967=this;return new Promise(function(_0xf85ae9,_0x48ddd8){return db[_0x0c41('0x15')][_0x0c41('0x1c')](_0x56b3ee[_0x0c41('0x1d')],{'raw':_0x56b3ee['options']?_0x56b3ee[_0x0c41('0x17')][_0x0c41('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b3ee[_0x0c41('0x17')]?_0x56b3ee[_0x0c41('0x17')][_0x0c41('0x1e')]||null:null,'attributes':_0x56b3ee[_0x0c41('0x17')]?_0x56b3ee[_0x0c41('0x17')][_0x0c41('0x1f')]||null:null,'limit':_0x56b3ee[_0x0c41('0x17')]?_0x56b3ee[_0x0c41('0x17')][_0x0c41('0x20')]||null:null})[_0x0c41('0xb')](function(_0x27e48c){logger[_0x0c41('0xc')](_0x0c41('0x1b'),_0x56b3ee);logger[_0x0c41('0x19')](_0x0c41('0x1b'),_0x56b3ee,JSON['stringify'](_0x27e48c));_0xf85ae9(_0x27e48c);})[_0x0c41('0x1a')](function(_0x1d4fdd){logger[_0x0c41('0x10')](_0x0c41('0x1b'),_0x1d4fdd[_0x0c41('0x12')],_0x56b3ee);_0x48ddd8(_0x334967[_0x0c41('0x10')](0x1f4,_0x1d4fdd[_0x0c41('0x12')]));});});};
\ No newline at end of file
+var _0x784d=['catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','debug','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result'];(function(_0x334564,_0x4a14ca){var _0x35f756=function(_0x263ca7){while(--_0x263ca7){_0x334564['push'](_0x334564['shift']());}};_0x35f756(++_0x4a14ca);}(_0x784d,0xb7));var _0xd784=function(_0x4a18a9,_0x239a32){_0x4a18a9=_0x4a18a9-0x0;var _0x25638a=_0x784d[_0x4a18a9];return _0x25638a;};'use strict';var _=require(_0xd784('0x0'));var util=require(_0xd784('0x1'));var moment=require(_0xd784('0x2'));var BPromise=require(_0xd784('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd784('0x4'))['db'];var utils=require(_0xd784('0x5'));var logger=require(_0xd784('0x6'))('rpc');var config=require(_0xd784('0x7'));var jayson=require(_0xd784('0x8'));var client=jayson[_0xd784('0x9')][_0xd784('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46987e,_0x44a5e5,_0x2c5864){return new BPromise(function(_0x474a81,_0x456b2e){return client[_0xd784('0xb')](_0x46987e,_0x2c5864)[_0xd784('0xc')](function(_0x282deb){logger['info'](_0xd784('0xd'),_0x44a5e5,_0xd784('0xe'));logger['debug'](_0xd784('0xf'),_0x44a5e5,_0xd784('0xe'),JSON[_0xd784('0x10')](_0x282deb));if(_0x282deb[_0xd784('0x11')]){if(_0x282deb['error']['code']===0x1f4){logger[_0xd784('0x11')](_0xd784('0xd'),_0x44a5e5,_0x282deb[_0xd784('0x11')][_0xd784('0x12')]);return _0x456b2e(_0x282deb[_0xd784('0x11')][_0xd784('0x12')]);}logger[_0xd784('0x11')](_0xd784('0xd'),_0x44a5e5,_0x282deb[_0xd784('0x11')][_0xd784('0x12')]);return _0x474a81(_0x282deb[_0xd784('0x11')][_0xd784('0x12')]);}else{logger[_0xd784('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x44a5e5,_0xd784('0xe'));_0x474a81(_0x282deb[_0xd784('0x14')][_0xd784('0x12')]);}})[_0xd784('0x15')](function(_0x5ea1e4){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x44a5e5,_0x5ea1e4);_0x456b2e(_0x5ea1e4);});});}exports[_0xd784('0x16')]=function(_0x12387a){var _0x151698=this;return new Promise(function(_0x1d0ad7,_0x39ef81){return db[_0xd784('0x17')][_0xd784('0x18')](_0x12387a[_0xd784('0x19')],{'raw':_0x12387a['options']?_0x12387a[_0xd784('0x1a')][_0xd784('0x1b')]===undefined?!![]:![]:!![]})[_0xd784('0xc')](function(_0x301edc){logger[_0xd784('0x13')](_0xd784('0x16'),_0x12387a);logger[_0xd784('0x1c')]('CreateVoiceAgentReport',_0x12387a,JSON[_0xd784('0x10')](_0x301edc));_0x1d0ad7(_0x301edc);})[_0xd784('0x15')](function(_0x471ba5){logger[_0xd784('0x11')](_0xd784('0x16'),_0x471ba5[_0xd784('0x12')],_0x12387a);_0x39ef81(_0x151698[_0xd784('0x11')](0x1f4,_0x471ba5['message']));});});};exports[_0xd784('0x1d')]=function(_0x4c4e73){var _0x4ffc29=this;return new Promise(function(_0x2cff78,_0x6dc13f){return db['VoiceAgentReport'][_0xd784('0x1e')](_0x4c4e73[_0xd784('0x19')],{'raw':_0x4c4e73[_0xd784('0x1a')]?_0x4c4e73[_0xd784('0x1a')][_0xd784('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c4e73['options']?_0x4c4e73[_0xd784('0x1a')][_0xd784('0x1f')]||null:null,'attributes':_0x4c4e73[_0xd784('0x1a')]?_0x4c4e73[_0xd784('0x1a')][_0xd784('0x20')]||null:null,'limit':_0x4c4e73[_0xd784('0x1a')]?_0x4c4e73[_0xd784('0x1a')][_0xd784('0x21')]||null:null})[_0xd784('0xc')](function(_0x4a1f5e){logger['info'](_0xd784('0x1d'),_0x4c4e73);logger['debug'](_0xd784('0x1d'),_0x4c4e73,JSON[_0xd784('0x10')](_0x4a1f5e));_0x2cff78(_0x4a1f5e);})[_0xd784('0x15')](function(_0x4f0369){logger[_0xd784('0x11')](_0xd784('0x1d'),_0x4f0369[_0xd784('0x12')],_0x4c4e73);_0x6dc13f(_0x4ffc29[_0xd784('0x11')](0x1f4,_0x4f0369[_0xd784('0x12')]));});});};
\ No newline at end of file
index 2f3ef9c..2a6f3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['/describe','describe','/:id','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index'];(function(_0x209ff4,_0x497a6e){var _0x5cfb7a=function(_0x1ac0ab){while(--_0x1ac0ab){_0x209ff4['push'](_0x209ff4['shift']());}};_0x5cfb7a(++_0x497a6e);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x30994d,_0x2cc269){_0x30994d=_0x30994d-0x0;var _0x4554df=_0x7fbe[_0x30994d];return _0x4554df;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['post']('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xf')]);router[_0xe7fb('0x10')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x11')]);router[_0xe7fb('0x12')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x13')]);module[_0xe7fb('0x14')]=router;
\ No newline at end of file
+var _0x1cb9=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x1cdd4e,_0x44243b){var _0x199c1b=function(_0x580ff8){while(--_0x580ff8){_0x1cdd4e['push'](_0x1cdd4e['shift']());}};_0x199c1b(++_0x44243b);}(_0x1cb9,0x14e));var _0x91cb=function(_0x363129,_0x342031){_0x363129=_0x363129-0x0;var _0x1e7a87=_0x1cb9[_0x363129];return _0x1e7a87;};'use strict';var multer=require(_0x91cb('0x0'));var util=require('util');var path=require(_0x91cb('0x1'));var timeout=require(_0x91cb('0x2'));var express=require(_0x91cb('0x3'));var router=express[_0x91cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91cb('0x5'));var interaction=require(_0x91cb('0x6'));var config=require('../../config/environment');var controller=require(_0x91cb('0x7'));router[_0x91cb('0x8')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0xa')]);router[_0x91cb('0x8')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0xc')]);router['get'](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0xe')]);router[_0x91cb('0xf')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0x10')]);router[_0x91cb('0x11')](_0x91cb('0xd'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x13')](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0x14')]);module[_0x91cb('0x15')]=router;
\ No newline at end of file
index 465453d..250d89e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6149=['DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','internal','outbound','inbound-fax','outbound-fax','TEXT'];(function(_0x47c60e,_0x17cc43){var _0x5c6995=function(_0x4e19cc){while(--_0x4e19cc){_0x47c60e['push'](_0x47c60e['shift']());}};_0x5c6995(++_0x17cc43);}(_0x6149,0xaa));var _0x9614=function(_0x22c117,_0x4e1fd2){_0x22c117=_0x22c117-0x0;var _0x15b66f=_0x6149[_0x22c117];return _0x15b66f;};'use strict';var Sequelize=require(_0x9614('0x0'));module[_0x9614('0x1')]={'uniqueid':{'type':Sequelize[_0x9614('0x2')]},'type':{'type':Sequelize[_0x9614('0x3')](_0x9614('0x4'),_0x9614('0x5'),_0x9614('0x6'),_0x9614('0x7'),_0x9614('0x8'),'dialer')},'tag':{'type':Sequelize[_0x9614('0x2')]},'accountcode':{'type':Sequelize[_0x9614('0x2')]},'source':{'type':Sequelize[_0x9614('0x2')]},'destination':{'type':Sequelize[_0x9614('0x2')]},'destinationcontext':{'type':Sequelize[_0x9614('0x2')]},'callerid':{'type':Sequelize[_0x9614('0x2')]},'channel':{'type':Sequelize[_0x9614('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x9614('0x9')]},'starttime':{'type':Sequelize[_0x9614('0xa')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x9614('0xa')]},'endtime':{'type':Sequelize[_0x9614('0xa')]},'duration':{'type':Sequelize[_0x9614('0xb')]},'billableseconds':{'type':Sequelize[_0x9614('0xb')]},'mohtime':{'type':Sequelize[_0x9614('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x9614('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x9614('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x9614('0x2')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x9614('0x2')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x9614('0xb')]},'sipcallid':{'type':Sequelize[_0x9614('0x2')]}};
\ No newline at end of file
+var _0x27d7=['DATE','INTEGER','STRING','ENUM','internal','inbound-fax','outbound-fax','dialer','TEXT'];(function(_0x540bad,_0x3a2be0){var _0x2f8fe7=function(_0x492561){while(--_0x492561){_0x540bad['push'](_0x540bad['shift']());}};_0x2f8fe7(++_0x3a2be0);}(_0x27d7,0xa4));var _0x727d=function(_0x6e7fc0,_0x18b91e){_0x6e7fc0=_0x6e7fc0-0x0;var _0xf69948=_0x27d7[_0x6e7fc0];return _0xf69948;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x727d('0x0')]},'type':{'type':Sequelize[_0x727d('0x1')]('inbound',_0x727d('0x2'),'outbound',_0x727d('0x3'),_0x727d('0x4'),_0x727d('0x5'))},'tag':{'type':Sequelize[_0x727d('0x0')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x727d('0x0')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x727d('0x0')]},'callerid':{'type':Sequelize[_0x727d('0x0')]},'channel':{'type':Sequelize[_0x727d('0x0')]},'destinationchannel':{'type':Sequelize[_0x727d('0x0')]},'lastapplication':{'type':Sequelize[_0x727d('0x0')]},'lastdata':{'type':Sequelize[_0x727d('0x6')]},'starttime':{'type':Sequelize[_0x727d('0x7')]},'systemanswertime':{'type':Sequelize[_0x727d('0x7')]},'answertime':{'type':Sequelize[_0x727d('0x7')]},'endtime':{'type':Sequelize[_0x727d('0x7')]},'duration':{'type':Sequelize[_0x727d('0x8')]},'billableseconds':{'type':Sequelize[_0x727d('0x8')]},'mohtime':{'type':Sequelize[_0x727d('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x727d('0x0')]},'amaflags':{'type':Sequelize[_0x727d('0x0')]},'userfield':{'type':Sequelize[_0x727d('0x0')]},'userDisposition':{'type':Sequelize[_0x727d('0x0')]},'userSecondDisposition':{'type':Sequelize[_0x727d('0x0')]},'userThirdDisposition':{'type':Sequelize[_0x727d('0x0')]},'note':{'type':Sequelize[_0x727d('0x0')]},'prefix':{'type':Sequelize[_0x727d('0x0')]},'routeid':{'type':Sequelize[_0x727d('0x8')]},'sipcallid':{'type':Sequelize[_0x727d('0x0')]}};
\ No newline at end of file
index 2d6ad8b..11dbf3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x5c18ef,_0xa2e81d){var _0x33789d=function(_0x5761a9){while(--_0x5761a9){_0x5c18ef['push'](_0x5c18ef['shift']());}};_0x33789d(++_0xa2e81d);}(_0xb10b,0x12a));var _0xbb10=function(_0x1ca995,_0x458edc){_0x1ca995=_0x1ca995-0x0;var _0x6c1cbb=_0xb10b[_0x1ca995];return _0x6c1cbb;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
+var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','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','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5dea9d,_0x38ffab){_0x5dea9d=_0x5dea9d-0x0;var _0x2058ab=_0x5f2f[_0x5dea9d];return _0x2058ab;};'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')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
index 157b837..726a4a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b23=['util','moment','bluebird','request-promise','path','rimraf','define','VoiceCallReport','report_call','uniqueid','lodash'];(function(_0x56f935,_0xbb3e13){var _0x25ff2f=function(_0x3d0fad){while(--_0x3d0fad){_0x56f935['push'](_0x56f935['shift']());}};_0x25ff2f(++_0xbb3e13);}(_0x6b23,0x13e));var _0x36b2=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x6b23[_0x494d1f];return _0x457b6e;};'use strict';var _=require(_0x36b2('0x0'));var util=require(_0x36b2('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x36b2('0x2'));var BPromise=require(_0x36b2('0x3'));var rp=require(_0x36b2('0x4'));var fs=require('fs');var path=require(_0x36b2('0x5'));var rimraf=require(_0x36b2('0x6'));var config=require('../../config/environment');var attributes=require('./voiceCallReport.attributes');module['exports']=function(_0x3869a2,_0x1f2e96){return _0x3869a2[_0x36b2('0x7')](_0x36b2('0x8'),attributes,{'tableName':_0x36b2('0x9'),'paranoid':![],'indexes':[{'fields':[_0x36b2('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x22ef=['rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','moment','bluebird','path'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x22ef,0xd8));var _0xf22e=function(_0x5114b7,_0x3b85c8){_0x5114b7=_0x5114b7-0x0;var _0x2998b7=_0x22ef[_0x5114b7];return _0x2998b7;};'use strict';var _=require(_0xf22e('0x0'));var util=require(_0xf22e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf22e('0x2'));var BPromise=require(_0xf22e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf22e('0x4'));var rimraf=require(_0xf22e('0x5'));var config=require(_0xf22e('0x6'));var attributes=require(_0xf22e('0x7'));module[_0xf22e('0x8')]=function(_0x3a6ef1,_0x2be8a1){return _0x3a6ef1[_0xf22e('0x9')](_0xf22e('0xa'),attributes,{'tableName':_0xf22e('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf22e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d878196..d9ab244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc8=['limit','include','map','model','attributes','then','GetVoiceCallReport','debug','CreateVoiceCallReport','create','UpdateVoiceCallReport','update','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','message','VoiceCallReport,\x20%s,\x20%s','result','catch','VoiceCallReport','findAll','options','raw','where'];(function(_0x225e8e,_0x298db1){var _0x42ce0d=function(_0x3546d5){while(--_0x3546d5){_0x225e8e['push'](_0x225e8e['shift']());}};_0x42ce0d(++_0x298db1);}(_0x1dc8,0x11d));var _0x81dc=function(_0x2fe150,_0x4594b7){_0x2fe150=_0x2fe150-0x0;var _0x4f5348=_0x1dc8[_0x2fe150];return _0x4f5348;};'use strict';var _=require(_0x81dc('0x0'));var util=require(_0x81dc('0x1'));var moment=require('moment');var BPromise=require(_0x81dc('0x2'));var rs=require(_0x81dc('0x3'));var fs=require('fs');var Redis=require(_0x81dc('0x4'));var db=require(_0x81dc('0x5'))['db'];var utils=require(_0x81dc('0x6'));var logger=require(_0x81dc('0x7'))(_0x81dc('0x8'));var config=require(_0x81dc('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x81dc('0xa')][_0x81dc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12bda9,_0x431c8e,_0x51ae47){return new BPromise(function(_0x147395,_0x44c5e4){return client[_0x81dc('0xc')](_0x12bda9,_0x51ae47)['then'](function(_0x78c4e0){logger[_0x81dc('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x431c8e,_0x81dc('0xe'));logger['debug'](_0x81dc('0xf'),_0x431c8e,'request\x20sent',JSON[_0x81dc('0x10')](_0x78c4e0));if(_0x78c4e0['error']){if(_0x78c4e0[_0x81dc('0x11')]['code']===0x1f4){logger[_0x81dc('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x431c8e,_0x78c4e0[_0x81dc('0x11')][_0x81dc('0x12')]);return _0x44c5e4(_0x78c4e0['error'][_0x81dc('0x12')]);}logger[_0x81dc('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x431c8e,_0x78c4e0[_0x81dc('0x11')][_0x81dc('0x12')]);return _0x147395(_0x78c4e0[_0x81dc('0x11')]['message']);}else{logger['info'](_0x81dc('0x13'),_0x431c8e,'request\x20sent');_0x147395(_0x78c4e0[_0x81dc('0x14')][_0x81dc('0x12')]);}})[_0x81dc('0x15')](function(_0x28caee){logger[_0x81dc('0x11')](_0x81dc('0x13'),_0x431c8e,_0x28caee);_0x44c5e4(_0x28caee);});});}exports['GetVoiceCallReport']=function(_0x5886fd){var _0x140d08=this;return new Promise(function(_0x319057,_0x5c18da){return db[_0x81dc('0x16')][_0x81dc('0x17')]({'raw':_0x5886fd[_0x81dc('0x18')]?_0x5886fd['options'][_0x81dc('0x19')]===undefined?!![]:![]:!![],'where':_0x5886fd[_0x81dc('0x18')]?_0x5886fd[_0x81dc('0x18')][_0x81dc('0x1a')]||null:null,'attributes':_0x5886fd[_0x81dc('0x18')]?_0x5886fd[_0x81dc('0x18')]['attributes']||null:null,'limit':_0x5886fd[_0x81dc('0x18')]?_0x5886fd[_0x81dc('0x18')][_0x81dc('0x1b')]||null:null,'include':_0x5886fd[_0x81dc('0x18')]?_0x5886fd[_0x81dc('0x18')][_0x81dc('0x1c')]?_[_0x81dc('0x1d')](_0x5886fd['options'][_0x81dc('0x1c')],function(_0x2dec58){return{'model':db[_0x2dec58[_0x81dc('0x1e')]],'as':_0x2dec58['as'],'attributes':_0x2dec58[_0x81dc('0x1f')],'include':_0x2dec58['include']?_[_0x81dc('0x1d')](_0x2dec58[_0x81dc('0x1c')],function(_0x1f24e7){return{'model':db[_0x1f24e7[_0x81dc('0x1e')]],'as':_0x1f24e7['as'],'attributes':_0x1f24e7[_0x81dc('0x1f')],'include':_0x1f24e7[_0x81dc('0x1c')]?_[_0x81dc('0x1d')](_0x1f24e7[_0x81dc('0x1c')],function(_0x4d5138){return{'model':db[_0x4d5138['model']],'as':_0x4d5138['as'],'attributes':_0x4d5138[_0x81dc('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x81dc('0x20')](function(_0x576377){logger[_0x81dc('0xd')](_0x81dc('0x21'),_0x5886fd);logger[_0x81dc('0x22')]('GetVoiceCallReport',_0x5886fd,JSON[_0x81dc('0x10')](_0x576377));_0x319057(_0x576377);})[_0x81dc('0x15')](function(_0x321170){logger[_0x81dc('0x11')](_0x81dc('0x21'),_0x321170[_0x81dc('0x12')],_0x5886fd);_0x5c18da(_0x140d08[_0x81dc('0x11')](0x1f4,_0x321170['message']));});});};exports[_0x81dc('0x23')]=function(_0x2bac0d){var _0x3ff29f=this;return new Promise(function(_0x1404b5,_0x3a6ed8){return db['VoiceCallReport'][_0x81dc('0x24')](_0x2bac0d['body'],{'raw':_0x2bac0d[_0x81dc('0x18')]?_0x2bac0d[_0x81dc('0x18')][_0x81dc('0x19')]===undefined?!![]:![]:!![]})[_0x81dc('0x20')](function(_0x2c7266){logger[_0x81dc('0xd')](_0x81dc('0x23'),_0x2bac0d);logger[_0x81dc('0x22')](_0x81dc('0x23'),_0x2bac0d,JSON['stringify'](_0x2c7266));_0x1404b5(_0x2c7266);})['catch'](function(_0x1681c2){logger[_0x81dc('0x11')]('CreateVoiceCallReport',_0x1681c2[_0x81dc('0x12')],_0x2bac0d);_0x3a6ed8(_0x3ff29f['error'](0x1f4,_0x1681c2['message']));});});};exports[_0x81dc('0x25')]=function(_0x5b0a8d){var _0x3af96f=this;return new Promise(function(_0x22ed66,_0x50a500){return db[_0x81dc('0x16')][_0x81dc('0x26')](_0x5b0a8d['body'],{'raw':_0x5b0a8d[_0x81dc('0x18')]?_0x5b0a8d[_0x81dc('0x18')][_0x81dc('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b0a8d[_0x81dc('0x18')]?_0x5b0a8d[_0x81dc('0x18')][_0x81dc('0x1a')]||null:null,'attributes':_0x5b0a8d[_0x81dc('0x18')]?_0x5b0a8d['options'][_0x81dc('0x1f')]||null:null,'limit':_0x5b0a8d['options']?_0x5b0a8d['options'][_0x81dc('0x1b')]||null:null})['then'](function(_0x1f3efe){logger[_0x81dc('0xd')]('UpdateVoiceCallReport',_0x5b0a8d);logger['debug'](_0x81dc('0x25'),_0x5b0a8d,JSON[_0x81dc('0x10')](_0x1f3efe));_0x22ed66(_0x1f3efe);})[_0x81dc('0x15')](function(_0x4b20d7){logger[_0x81dc('0x11')](_0x81dc('0x25'),_0x4b20d7[_0x81dc('0x12')],_0x5b0a8d);_0x50a500(_0x3af96f[_0x81dc('0x11')](0x1f4,_0x4b20d7['message']));});});};
\ No newline at end of file
+var _0x08f5=['lodash','util','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','VoiceCallReport,\x20%s,\x20%s','result','catch','findAll','options','where','attributes','limit','include','map','model','GetVoiceCallReport','CreateVoiceCallReport','VoiceCallReport','create','body','UpdateVoiceCallReport','update','raw'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x08f5,0x172));var _0x508f=function(_0x43de22,_0x1eced6){_0x43de22=_0x43de22-0x0;var _0x4b15ee=_0x08f5[_0x43de22];return _0x4b15ee;};'use strict';var _=require(_0x508f('0x0'));var util=require(_0x508f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x508f('0x2'));var fs=require('fs');var Redis=require(_0x508f('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x508f('0x4'))('rpc');var config=require(_0x508f('0x5'));var jayson=require(_0x508f('0x6'));var client=jayson['client'][_0x508f('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xe9c8f5,_0xb4deb1,_0x1d73b2){return new BPromise(function(_0x4d260a,_0x58a42a){return client[_0x508f('0x8')](_0xe9c8f5,_0x1d73b2)[_0x508f('0x9')](function(_0x5d9fa3){logger[_0x508f('0xa')]('VoiceCallReport,\x20%s,\x20%s',_0xb4deb1,_0x508f('0xb'));logger[_0x508f('0xc')](_0x508f('0xd'),_0xb4deb1,_0x508f('0xb'),JSON[_0x508f('0xe')](_0x5d9fa3));if(_0x5d9fa3['error']){if(_0x5d9fa3['error'][_0x508f('0xf')]===0x1f4){logger[_0x508f('0x10')]('VoiceCallReport,\x20%s,\x20%s',_0xb4deb1,_0x5d9fa3[_0x508f('0x10')][_0x508f('0x11')]);return _0x58a42a(_0x5d9fa3[_0x508f('0x10')]['message']);}logger['error'](_0x508f('0x12'),_0xb4deb1,_0x5d9fa3[_0x508f('0x10')][_0x508f('0x11')]);return _0x4d260a(_0x5d9fa3['error'][_0x508f('0x11')]);}else{logger[_0x508f('0xa')]('VoiceCallReport,\x20%s,\x20%s',_0xb4deb1,_0x508f('0xb'));_0x4d260a(_0x5d9fa3[_0x508f('0x13')][_0x508f('0x11')]);}})[_0x508f('0x14')](function(_0x24f8f9){logger[_0x508f('0x10')](_0x508f('0x12'),_0xb4deb1,_0x24f8f9);_0x58a42a(_0x24f8f9);});});}exports['GetVoiceCallReport']=function(_0x4045d1){var _0x4268ff=this;return new Promise(function(_0x2e991c,_0x5184dc){return db['VoiceCallReport'][_0x508f('0x15')]({'raw':_0x4045d1[_0x508f('0x16')]?_0x4045d1[_0x508f('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x4045d1['options']?_0x4045d1[_0x508f('0x16')][_0x508f('0x17')]||null:null,'attributes':_0x4045d1[_0x508f('0x16')]?_0x4045d1['options'][_0x508f('0x18')]||null:null,'limit':_0x4045d1[_0x508f('0x16')]?_0x4045d1[_0x508f('0x16')][_0x508f('0x19')]||null:null,'include':_0x4045d1['options']?_0x4045d1[_0x508f('0x16')][_0x508f('0x1a')]?_[_0x508f('0x1b')](_0x4045d1[_0x508f('0x16')][_0x508f('0x1a')],function(_0x27b655){return{'model':db[_0x27b655[_0x508f('0x1c')]],'as':_0x27b655['as'],'attributes':_0x27b655[_0x508f('0x18')],'include':_0x27b655[_0x508f('0x1a')]?_[_0x508f('0x1b')](_0x27b655[_0x508f('0x1a')],function(_0x48939f){return{'model':db[_0x48939f['model']],'as':_0x48939f['as'],'attributes':_0x48939f[_0x508f('0x18')],'include':_0x48939f[_0x508f('0x1a')]?_[_0x508f('0x1b')](_0x48939f[_0x508f('0x1a')],function(_0x2c2f74){return{'model':db[_0x2c2f74['model']],'as':_0x2c2f74['as'],'attributes':_0x2c2f74[_0x508f('0x18')]};}):[]};}):[]};}):[]:[]})[_0x508f('0x9')](function(_0x3df705){logger[_0x508f('0xa')]('GetVoiceCallReport',_0x4045d1);logger[_0x508f('0xc')](_0x508f('0x1d'),_0x4045d1,JSON[_0x508f('0xe')](_0x3df705));_0x2e991c(_0x3df705);})['catch'](function(_0x3683c3){logger[_0x508f('0x10')](_0x508f('0x1d'),_0x3683c3[_0x508f('0x11')],_0x4045d1);_0x5184dc(_0x4268ff[_0x508f('0x10')](0x1f4,_0x3683c3['message']));});});};exports[_0x508f('0x1e')]=function(_0x38490a){var _0x8b0b72=this;return new Promise(function(_0x1fc611,_0xf41566){return db[_0x508f('0x1f')][_0x508f('0x20')](_0x38490a[_0x508f('0x21')],{'raw':_0x38490a[_0x508f('0x16')]?_0x38490a['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3039ae){logger[_0x508f('0xa')]('CreateVoiceCallReport',_0x38490a);logger[_0x508f('0xc')](_0x508f('0x1e'),_0x38490a,JSON[_0x508f('0xe')](_0x3039ae));_0x1fc611(_0x3039ae);})[_0x508f('0x14')](function(_0x1bb397){logger['error'](_0x508f('0x1e'),_0x1bb397[_0x508f('0x11')],_0x38490a);_0xf41566(_0x8b0b72[_0x508f('0x10')](0x1f4,_0x1bb397['message']));});});};exports[_0x508f('0x22')]=function(_0x459a0f){var _0x413100=this;return new Promise(function(_0x3b9110,_0x177446){return db[_0x508f('0x1f')][_0x508f('0x23')](_0x459a0f['body'],{'raw':_0x459a0f[_0x508f('0x16')]?_0x459a0f[_0x508f('0x16')][_0x508f('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x459a0f[_0x508f('0x16')]?_0x459a0f['options']['where']||null:null,'attributes':_0x459a0f['options']?_0x459a0f[_0x508f('0x16')][_0x508f('0x18')]||null:null,'limit':_0x459a0f[_0x508f('0x16')]?_0x459a0f['options']['limit']||null:null})[_0x508f('0x9')](function(_0x5bf77e){logger[_0x508f('0xa')](_0x508f('0x22'),_0x459a0f);logger[_0x508f('0xc')]('UpdateVoiceCallReport',_0x459a0f,JSON[_0x508f('0xe')](_0x5bf77e));_0x3b9110(_0x5bf77e);})[_0x508f('0x14')](function(_0x2298cc){logger['error']('UpdateVoiceCallReport',_0x2298cc[_0x508f('0x11')],_0x459a0f);_0x177446(_0x413100[_0x508f('0x10')](0x1f4,_0x2298cc[_0x508f('0x11')]));});});};
\ No newline at end of file
index a5bc022..ca46eb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e93=['multer','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports'];(function(_0x5a2ccb,_0x4e11be){var _0x3c0045=function(_0xe182af){while(--_0xe182af){_0x5a2ccb['push'](_0x5a2ccb['shift']());}};_0x3c0045(++_0x4e11be);}(_0x8e93,0xd8));var _0x38e9=function(_0x817a5b,_0x122f4e){_0x817a5b=_0x817a5b-0x0;var _0x32a967=_0x8e93[_0x817a5b];return _0x32a967;};'use strict';var multer=require(_0x38e9('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x38e9('0x1'));var router=express[_0x38e9('0x2')]();var fs_extra=require(_0x38e9('0x3'));var auth=require(_0x38e9('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x38e9('0x5'));var controller=require(_0x38e9('0x6'));router[_0x38e9('0x7')]('/',auth[_0x38e9('0x8')](),controller[_0x38e9('0x9')]);router[_0x38e9('0x7')](_0x38e9('0xa'),auth[_0x38e9('0x8')](),controller[_0x38e9('0xb')]);router[_0x38e9('0xc')]('/',auth[_0x38e9('0x8')](),controller['create']);router[_0x38e9('0xd')](_0x38e9('0xa'),auth[_0x38e9('0x8')](),controller[_0x38e9('0xe')]);router[_0x38e9('0xf')](_0x38e9('0xa'),auth[_0x38e9('0x8')](),controller[_0x38e9('0x10')]);module[_0x38e9('0x11')]=router;
\ No newline at end of file
+var _0x0c4c=['post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','isAuthenticated','index','get','/:id','show'];(function(_0x341cf7,_0x4f36d3){var _0x1019d0=function(_0x339191){while(--_0x339191){_0x341cf7['push'](_0x341cf7['shift']());}};_0x1019d0(++_0x4f36d3);}(_0x0c4c,0x15d));var _0xc0c4=function(_0x1a28cf,_0x49578f){_0x1a28cf=_0x1a28cf-0x0;var _0x562d38=_0x0c4c[_0x1a28cf];return _0x562d38;};'use strict';var multer=require(_0xc0c4('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc0c4('0x1'));var express=require(_0xc0c4('0x2'));var router=express[_0xc0c4('0x3')]();var fs_extra=require(_0xc0c4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc0c4('0x5'));var config=require('../../config/environment');var controller=require('./voiceChanSpy.controller');router['get']('/',auth[_0xc0c4('0x6')](),controller[_0xc0c4('0x7')]);router[_0xc0c4('0x8')](_0xc0c4('0x9'),auth['isAuthenticated'](),controller[_0xc0c4('0xa')]);router[_0xc0c4('0xb')]('/',auth[_0xc0c4('0x6')](),controller[_0xc0c4('0xc')]);router[_0xc0c4('0xd')](_0xc0c4('0x9'),auth[_0xc0c4('0x6')](),controller[_0xc0c4('0xe')]);router[_0xc0c4('0xf')]('/:id',auth[_0xc0c4('0x6')](),controller[_0xc0c4('0x10')]);module[_0xc0c4('0x11')]=router;
\ No newline at end of file
index 015b578..13a45bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf93=['sequelize','exports','STRING','name','setDataValue','options','join','getDataValue','split','BOOLEAN'];(function(_0x3de590,_0x2edbcd){var _0x3886ad=function(_0x230e4b){while(--_0x230e4b){_0x3de590['push'](_0x3de590['shift']());}};_0x3886ad(++_0x2edbcd);}(_0xaf93,0xdc));var _0x3af9=function(_0xc2b77f,_0x4788ef){_0xc2b77f=_0xc2b77f-0x0;var _0x2cbf84=_0xaf93[_0xc2b77f];return _0x2cbf84;};'use strict';var Sequelize=require(_0x3af9('0x0'));module[_0x3af9('0x1')]={'name':{'type':Sequelize[_0x3af9('0x2')]},'prefix':{'type':Sequelize[_0x3af9('0x2')],'unique':_0x3af9('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x3af9('0x2')],'set':function(_0x215cbc){this[_0x3af9('0x4')](_0x3af9('0x5'),_0x215cbc?_0x215cbc[_0x3af9('0x6')](''):[]);},'get':function(){return this[_0x3af9('0x7')](_0x3af9('0x5'))?this[_0x3af9('0x7')](_0x3af9('0x5'))[_0x3af9('0x8')](''):[];}},'auth':{'type':Sequelize[_0x3af9('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x3af9('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x3af9('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe085=['sequelize','exports','STRING','name','options','join','getDataValue','split','BOOLEAN'];(function(_0x141da6,_0x27d92d){var _0x12cb67=function(_0x58d070){while(--_0x58d070){_0x141da6['push'](_0x141da6['shift']());}};_0x12cb67(++_0x27d92d);}(_0xe085,0x1b9));var _0x5e08=function(_0x3d09e7,_0x6935ec){_0x3d09e7=_0x3d09e7-0x0;var _0x54fd49=_0xe085[_0x3d09e7];return _0x54fd49;};'use strict';var Sequelize=require(_0x5e08('0x0'));module[_0x5e08('0x1')]={'name':{'type':Sequelize[_0x5e08('0x2')]},'prefix':{'type':Sequelize[_0x5e08('0x2')],'unique':_0x5e08('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x1fa2a3){this['setDataValue'](_0x5e08('0x4'),_0x1fa2a3?_0x1fa2a3[_0x5e08('0x5')](''):[]);},'get':function(){return this[_0x5e08('0x6')](_0x5e08('0x4'))?this[_0x5e08('0x6')](_0x5e08('0x4'))[_0x5e08('0x7')](''):[];}},'auth':{'type':Sequelize[_0x5e08('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x5e08('0x2')]},'record':{'type':Sequelize[_0x5e08('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x5e08('0x2')]},'description':{'type':Sequelize[_0x5e08('0x2')]}};
\ No newline at end of file
index 3312981..1dd83b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9f=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','ChanSpies','UserProfileResource','error','stack','name','send','index','map','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','VoiceChanSpy','include','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','update','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x53cae0,_0x4d48e8){var _0x46a1f0=function(_0x3c0799){while(--_0x3c0799){_0x53cae0['push'](_0x53cae0['shift']());}};_0x46a1f0(++_0x4d48e8);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0x4e783c,_0x51a362){_0x4e783c=_0x4e783c-0x0;var _0x2fbd6d=_0x0f9f[_0x4e783c];return _0x2fbd6d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf0f9('0x0'));var zipdir=require(_0xf0f9('0x1'));var jsonpatch=require(_0xf0f9('0x2'));var rp=require('request-promise');var moment=require(_0xf0f9('0x3'));var BPromise=require(_0xf0f9('0x4'));var Mustache=require(_0xf0f9('0x5'));var util=require(_0xf0f9('0x6'));var path=require(_0xf0f9('0x7'));var sox=require(_0xf0f9('0x8'));var csv=require(_0xf0f9('0x9'));var ejs=require(_0xf0f9('0xa'));var fs=require('fs');var fs_extra=require(_0xf0f9('0xb'));var _=require(_0xf0f9('0xc'));var squel=require('squel');var crypto=require(_0xf0f9('0xd'));var jsforce=require(_0xf0f9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf0f9('0x9'));var querystring=require(_0xf0f9('0xf'));var Papa=require(_0xf0f9('0x10'));var Redis=require('ioredis');var authService=require(_0xf0f9('0x11'));var qs=require(_0xf0f9('0x12'));var as=require(_0xf0f9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf0f9('0x14'));var utils=require(_0xf0f9('0x15'));var config=require(_0xf0f9('0x16'));var licenseUtil=require(_0xf0f9('0x17'));var db=require(_0xf0f9('0x18'))['db'];function respondWithStatusCode(_0x32d17f,_0x2360eb){_0x2360eb=_0x2360eb||0xcc;return function(_0x4f27c2){if(_0x4f27c2){return _0x32d17f[_0xf0f9('0x19')](_0x2360eb);}return _0x32d17f[_0xf0f9('0x1a')](_0x2360eb)[_0xf0f9('0x1b')]();};}function respondWithResult(_0x200514,_0x524169){_0x524169=_0x524169||0xc8;return function(_0x51d78a){if(_0x51d78a){return _0x200514[_0xf0f9('0x1a')](_0x524169)[_0xf0f9('0x1c')](_0x51d78a);}};}function respondWithFilteredResult(_0xa7d48c,_0x2e2955){return function(_0x2b05e3){if(_0x2b05e3){var _0x2f5bec=typeof _0x2e2955[_0xf0f9('0x1d')]===_0xf0f9('0x1e')&&typeof _0x2e2955[_0xf0f9('0x1f')]===_0xf0f9('0x1e');var _0x4d3534=_0x2b05e3['count'];var _0x350a48=_0x2f5bec?0x0:_0x2e2955[_0xf0f9('0x1d')];var _0x4c4e17=_0x2f5bec?_0x2b05e3[_0xf0f9('0x20')]:_0x2e2955['offset']+_0x2e2955['limit'];var _0x42c157;if(_0x4c4e17>=_0x4d3534){_0x4c4e17=_0x4d3534;_0x42c157=0xc8;}else{_0x42c157=0xce;}_0xa7d48c[_0xf0f9('0x1a')](_0x42c157);return _0xa7d48c[_0xf0f9('0x21')](_0xf0f9('0x22'),_0x350a48+'-'+_0x4c4e17+'/'+_0x4d3534)[_0xf0f9('0x1c')](_0x2b05e3);}return null;};}function patchUpdates(_0x4ed9ff){return function(_0x5ccbc9){try{jsonpatch['apply'](_0x5ccbc9,_0x4ed9ff,!![]);}catch(_0x102336){return BPromise[_0xf0f9('0x23')](_0x102336);}return _0x5ccbc9[_0xf0f9('0x24')]();};}function saveUpdates(_0x5d87a9,_0x4a8726){return function(_0x209cd4){if(_0x209cd4){return _0x209cd4['update'](_0x5d87a9)[_0xf0f9('0x25')](function(_0x414f87){return _0x414f87;});}return null;};}function removeEntity(_0x173c79,_0x570c68){return function(_0x33dfca){if(_0x33dfca){return _0x33dfca[_0xf0f9('0x26')]()[_0xf0f9('0x25')](function(){var _0x49a2dd=_0x33dfca[_0xf0f9('0x27')]({'plain':!![]});var _0x33f070=_0xf0f9('0x28');return db[_0xf0f9('0x29')][_0xf0f9('0x26')]({'where':{'type':_0x33f070,'resourceId':_0x49a2dd['id']}})[_0xf0f9('0x25')](function(){return _0x33dfca;});})['then'](function(){_0x173c79[_0xf0f9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1288e0,_0x30e85c){return function(_0x519a46){if(!_0x519a46){_0x1288e0['sendStatus'](0x194);}return _0x519a46;};}function handleError(_0x119793,_0x50e7f6){_0x50e7f6=_0x50e7f6||0x1f4;return function(_0x2121b8){logger[_0xf0f9('0x2a')](_0x2121b8[_0xf0f9('0x2b')]);if(_0x2121b8[_0xf0f9('0x2c')]){delete _0x2121b8[_0xf0f9('0x2c')];}_0x119793[_0xf0f9('0x1a')](_0x50e7f6)[_0xf0f9('0x2d')](_0x2121b8);};}exports[_0xf0f9('0x2e')]=function(_0x37c093,_0x4e4e08){var _0x2e79f9={},_0x28da31={},_0x534083={'count':0x0,'rows':[]};var _0x48ef2a=_[_0xf0f9('0x2f')](db['VoiceChanSpy']['rawAttributes'],function(_0x14f3cb){return{'name':_0x14f3cb['fieldName'],'type':_0x14f3cb[_0xf0f9('0x30')][_0xf0f9('0x31')]};});_0x28da31['model']=_['map'](_0x48ef2a,_0xf0f9('0x2c'));_0x28da31[_0xf0f9('0x32')]=_[_0xf0f9('0x33')](_0x37c093[_0xf0f9('0x32')]);_0x28da31[_0xf0f9('0x34')]=_[_0xf0f9('0x35')](_0x28da31[_0xf0f9('0x36')],_0x28da31[_0xf0f9('0x32')]);_0x2e79f9[_0xf0f9('0x37')]=_[_0xf0f9('0x35')](_0x28da31[_0xf0f9('0x36')],qs[_0xf0f9('0x38')](_0x37c093[_0xf0f9('0x32')]['fields']));_0x2e79f9[_0xf0f9('0x37')]=_0x2e79f9['attributes'][_0xf0f9('0x39')]?_0x2e79f9[_0xf0f9('0x37')]:_0x28da31[_0xf0f9('0x36')];if(!_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3a')](_0xf0f9('0x3b'))){_0x2e79f9[_0xf0f9('0x1f')]=qs['limit'](_0x37c093['query'][_0xf0f9('0x1f')]);_0x2e79f9[_0xf0f9('0x1d')]=qs[_0xf0f9('0x1d')](_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x1d')]);}_0x2e79f9['order']=qs[_0xf0f9('0x3c')](_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3c')]);_0x2e79f9[_0xf0f9('0x3d')]=qs[_0xf0f9('0x34')](_['pick'](_0x37c093[_0xf0f9('0x32')],_0x28da31[_0xf0f9('0x34')]),_0x48ef2a);if(_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3e')]){_0x2e79f9[_0xf0f9('0x3d')]=_[_0xf0f9('0x3f')](_0x2e79f9['where'],{'$or':_[_0xf0f9('0x2f')](_0x48ef2a,function(_0x1b84ef){if(_0x1b84ef[_0xf0f9('0x30')]!=='VIRTUAL'){var _0x3b52e3={};_0x3b52e3[_0x1b84ef[_0xf0f9('0x2c')]]={'$like':'%'+_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3e')]+'%'};return _0x3b52e3;}})});}_0x2e79f9=_[_0xf0f9('0x3f')]({},_0x2e79f9,_0x37c093[_0xf0f9('0x40')]);var _0x1e1805={'where':_0x2e79f9[_0xf0f9('0x3d')]};return db[_0xf0f9('0x41')][_0xf0f9('0x20')](_0x1e1805)[_0xf0f9('0x25')](function(_0x149870){_0x534083[_0xf0f9('0x20')]=_0x149870;if(_0x37c093['query']['includeAll']){_0x2e79f9[_0xf0f9('0x42')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x2e79f9);})['then'](function(_0x2cb95d){_0x534083[_0xf0f9('0x43')]=_0x2cb95d;return _0x534083;})[_0xf0f9('0x25')](respondWithFilteredResult(_0x4e4e08,_0x2e79f9))[_0xf0f9('0x44')](handleError(_0x4e4e08,null));};exports[_0xf0f9('0x45')]=function(_0xfef8ad,_0xc0c34c){var _0x2e1556={'raw':![],'where':{'id':_0xfef8ad['params']['id']}},_0x1a3a6b={};_0x1a3a6b[_0xf0f9('0x36')]=_[_0xf0f9('0x33')](db[_0xf0f9('0x41')]['rawAttributes']);_0x1a3a6b[_0xf0f9('0x32')]=_[_0xf0f9('0x33')](_0xfef8ad[_0xf0f9('0x32')]);_0x1a3a6b['filters']=_[_0xf0f9('0x35')](_0x1a3a6b[_0xf0f9('0x36')],_0x1a3a6b['query']);_0x2e1556[_0xf0f9('0x37')]=_[_0xf0f9('0x35')](_0x1a3a6b[_0xf0f9('0x36')],qs[_0xf0f9('0x38')](_0xfef8ad['query'][_0xf0f9('0x38')]));_0x2e1556[_0xf0f9('0x37')]=_0x2e1556[_0xf0f9('0x37')][_0xf0f9('0x39')]?_0x2e1556[_0xf0f9('0x37')]:_0x1a3a6b[_0xf0f9('0x36')];if(_0xfef8ad['query'][_0xf0f9('0x46')]){_0x2e1556['include']=[{'all':!![]}];}_0x2e1556=_[_0xf0f9('0x3f')]({},_0x2e1556,_0xfef8ad[_0xf0f9('0x40')]);return db[_0xf0f9('0x41')][_0xf0f9('0x47')](_0x2e1556)[_0xf0f9('0x25')](handleEntityNotFound(_0xc0c34c,null))[_0xf0f9('0x25')](respondWithResult(_0xc0c34c,null))[_0xf0f9('0x44')](handleError(_0xc0c34c,null));};exports[_0xf0f9('0x48')]=function(_0x1f47fa,_0x13bb13){return db[_0xf0f9('0x41')][_0xf0f9('0x48')](_0x1f47fa[_0xf0f9('0x49')],{})[_0xf0f9('0x25')](function(_0x45a165){var _0x3cb91a=_0x1f47fa[_0xf0f9('0x4a')][_0xf0f9('0x27')]({'plain':!![]});if(!_0x3cb91a)throw new Error(_0xf0f9('0x4b'));if(_0x3cb91a[_0xf0f9('0x4c')]===_0xf0f9('0x4a')){var _0x40711c=_0x45a165[_0xf0f9('0x27')]({'plain':!![]});var _0x37a928='ChanSpies';return db['UserProfileSection'][_0xf0f9('0x47')]({'where':{'name':_0x37a928,'userProfileId':_0x3cb91a['userProfileId']},'raw':!![]})[_0xf0f9('0x25')](function(_0x2c364c){if(_0x2c364c&&_0x2c364c[_0xf0f9('0x4d')]===0x0){return db['UserProfileResource'][_0xf0f9('0x48')]({'name':_0x40711c['name'],'resourceId':_0x40711c['id'],'type':_0x2c364c[_0xf0f9('0x2c')],'sectionId':_0x2c364c['id']},{})[_0xf0f9('0x25')](function(){return _0x45a165;});}else{return _0x45a165;}})[_0xf0f9('0x44')](function(_0xfe9072){logger[_0xf0f9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfe9072);throw _0xfe9072;});}return _0x45a165;})[_0xf0f9('0x25')](respondWithResult(_0x13bb13,0xc9))['catch'](handleError(_0x13bb13,null));};exports[_0xf0f9('0x4e')]=function(_0x1b0186,_0xb3467e){if(_0x1b0186[_0xf0f9('0x49')]['id']){delete _0x1b0186[_0xf0f9('0x49')]['id'];}return db['VoiceChanSpy'][_0xf0f9('0x47')]({'where':{'id':_0x1b0186[_0xf0f9('0x4f')]['id']}})[_0xf0f9('0x25')](handleEntityNotFound(_0xb3467e,null))[_0xf0f9('0x25')](saveUpdates(_0x1b0186[_0xf0f9('0x49')],null))[_0xf0f9('0x25')](respondWithResult(_0xb3467e,null))[_0xf0f9('0x44')](handleError(_0xb3467e,null));};exports[_0xf0f9('0x26')]=function(_0x15f3b3,_0x406b45){return db[_0xf0f9('0x41')][_0xf0f9('0x47')]({'where':{'id':_0x15f3b3[_0xf0f9('0x4f')]['id']}})[_0xf0f9('0x25')](handleEntityNotFound(_0x406b45,null))['then'](removeEntity(_0x406b45,null))[_0xf0f9('0x44')](handleError(_0x406b45,null));};
\ No newline at end of file
+var _0xc3fe=['eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','ChanSpies','UserProfileResource','status','error','stack','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','body','params'];(function(_0x5d59b1,_0x28df24){var _0x55ac7a=function(_0x4312c1){while(--_0x4312c1){_0x5d59b1['push'](_0x5d59b1['shift']());}};_0x55ac7a(++_0x28df24);}(_0xc3fe,0xff));var _0xec3f=function(_0xe346f0,_0x3f5783){_0xe346f0=_0xe346f0-0x0;var _0x442f13=_0xc3fe[_0xe346f0];return _0x442f13;};'use strict';var emlformat=require(_0xec3f('0x0'));var rimraf=require(_0xec3f('0x1'));var zipdir=require(_0xec3f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xec3f('0x3'));var moment=require(_0xec3f('0x4'));var BPromise=require(_0xec3f('0x5'));var Mustache=require('mustache');var util=require(_0xec3f('0x6'));var path=require(_0xec3f('0x7'));var sox=require(_0xec3f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xec3f('0x9'));var _=require(_0xec3f('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xec3f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xec3f('0xc'));var querystring=require(_0xec3f('0xd'));var Papa=require(_0xec3f('0xe'));var Redis=require(_0xec3f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xec3f('0x10'));var as=require(_0xec3f('0x11'));var hardwareService=require(_0xec3f('0x12'));var logger=require(_0xec3f('0x13'))(_0xec3f('0x14'));var utils=require(_0xec3f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xec3f('0x16'));var db=require(_0xec3f('0x17'))['db'];function respondWithStatusCode(_0x367c5e,_0x57891d){_0x57891d=_0x57891d||0xcc;return function(_0x5367df){if(_0x5367df){return _0x367c5e[_0xec3f('0x18')](_0x57891d);}return _0x367c5e['status'](_0x57891d)['end']();};}function respondWithResult(_0x209ffa,_0x4318bd){_0x4318bd=_0x4318bd||0xc8;return function(_0x113d16){if(_0x113d16){return _0x209ffa['status'](_0x4318bd)['json'](_0x113d16);}};}function respondWithFilteredResult(_0x5509ec,_0x5ad65a){return function(_0x37d688){if(_0x37d688){var _0x10ff81=typeof _0x5ad65a['offset']===_0xec3f('0x19')&&typeof _0x5ad65a[_0xec3f('0x1a')]===_0xec3f('0x19');var _0x3b7393=_0x37d688['count'];var _0x7805c=_0x10ff81?0x0:_0x5ad65a[_0xec3f('0x1b')];var _0x2d338=_0x10ff81?_0x37d688[_0xec3f('0x1c')]:_0x5ad65a[_0xec3f('0x1b')]+_0x5ad65a['limit'];var _0x2f8bc8;if(_0x2d338>=_0x3b7393){_0x2d338=_0x3b7393;_0x2f8bc8=0xc8;}else{_0x2f8bc8=0xce;}_0x5509ec['status'](_0x2f8bc8);return _0x5509ec[_0xec3f('0x1d')](_0xec3f('0x1e'),_0x7805c+'-'+_0x2d338+'/'+_0x3b7393)[_0xec3f('0x1f')](_0x37d688);}return null;};}function patchUpdates(_0x47b6f9){return function(_0x526ff){try{jsonpatch[_0xec3f('0x20')](_0x526ff,_0x47b6f9,!![]);}catch(_0x4fdfc3){return BPromise[_0xec3f('0x21')](_0x4fdfc3);}return _0x526ff[_0xec3f('0x22')]();};}function saveUpdates(_0x1f173f,_0x395b9a){return function(_0x4d9598){if(_0x4d9598){return _0x4d9598[_0xec3f('0x23')](_0x1f173f)[_0xec3f('0x24')](function(_0x2f45bb){return _0x2f45bb;});}return null;};}function removeEntity(_0x4e4770,_0xfc9c0d){return function(_0x4b5932){if(_0x4b5932){return _0x4b5932[_0xec3f('0x25')]()['then'](function(){var _0x56ecc3=_0x4b5932[_0xec3f('0x26')]({'plain':!![]});var _0x482bf2=_0xec3f('0x27');return db[_0xec3f('0x28')][_0xec3f('0x25')]({'where':{'type':_0x482bf2,'resourceId':_0x56ecc3['id']}})['then'](function(){return _0x4b5932;});})[_0xec3f('0x24')](function(){_0x4e4770[_0xec3f('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53cc0d,_0x3e5244){return function(_0x48e166){if(!_0x48e166){_0x53cc0d[_0xec3f('0x18')](0x194);}return _0x48e166;};}function handleError(_0x1b3155,_0x358fcd){_0x358fcd=_0x358fcd||0x1f4;return function(_0x2eac8d){logger[_0xec3f('0x2a')](_0x2eac8d[_0xec3f('0x2b')]);if(_0x2eac8d[_0xec3f('0x2c')]){delete _0x2eac8d[_0xec3f('0x2c')];}_0x1b3155['status'](_0x358fcd)[_0xec3f('0x2d')](_0x2eac8d);};}exports[_0xec3f('0x2e')]=function(_0x4bfff2,_0x91c11a){var _0xb6da0={},_0x328284={},_0x185b20={'count':0x0,'rows':[]};var _0x26fb2a=_[_0xec3f('0x2f')](db[_0xec3f('0x30')][_0xec3f('0x31')],function(_0x32a522){return{'name':_0x32a522[_0xec3f('0x32')],'type':_0x32a522[_0xec3f('0x33')][_0xec3f('0x34')]};});_0x328284[_0xec3f('0x35')]=_[_0xec3f('0x2f')](_0x26fb2a,_0xec3f('0x2c'));_0x328284['query']=_[_0xec3f('0x36')](_0x4bfff2[_0xec3f('0x37')]);_0x328284[_0xec3f('0x38')]=_[_0xec3f('0x39')](_0x328284[_0xec3f('0x35')],_0x328284['query']);_0xb6da0[_0xec3f('0x3a')]=_[_0xec3f('0x39')](_0x328284[_0xec3f('0x35')],qs['fields'](_0x4bfff2['query'][_0xec3f('0x3b')]));_0xb6da0['attributes']=_0xb6da0[_0xec3f('0x3a')]['length']?_0xb6da0[_0xec3f('0x3a')]:_0x328284['model'];if(!_0x4bfff2['query'][_0xec3f('0x3c')](_0xec3f('0x3d'))){_0xb6da0[_0xec3f('0x1a')]=qs[_0xec3f('0x1a')](_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x1a')]);_0xb6da0['offset']=qs['offset'](_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x1b')]);}_0xb6da0[_0xec3f('0x3e')]=qs[_0xec3f('0x3f')](_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x3f')]);_0xb6da0[_0xec3f('0x40')]=qs['filters'](_[_0xec3f('0x41')](_0x4bfff2['query'],_0x328284[_0xec3f('0x38')]),_0x26fb2a);if(_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x42')]){_0xb6da0[_0xec3f('0x40')]=_[_0xec3f('0x43')](_0xb6da0[_0xec3f('0x40')],{'$or':_[_0xec3f('0x2f')](_0x26fb2a,function(_0x17722c){if(_0x17722c[_0xec3f('0x33')]!==_0xec3f('0x44')){var _0x38a9e3={};_0x38a9e3[_0x17722c[_0xec3f('0x2c')]]={'$like':'%'+_0x4bfff2[_0xec3f('0x37')]['filter']+'%'};return _0x38a9e3;}})});}_0xb6da0=_[_0xec3f('0x43')]({},_0xb6da0,_0x4bfff2[_0xec3f('0x45')]);var _0x4b416d={'where':_0xb6da0[_0xec3f('0x40')]};return db[_0xec3f('0x30')]['count'](_0x4b416d)[_0xec3f('0x24')](function(_0xae1b8a){_0x185b20[_0xec3f('0x1c')]=_0xae1b8a;if(_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x46')]){_0xb6da0[_0xec3f('0x47')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0xec3f('0x48')](_0xb6da0);})[_0xec3f('0x24')](function(_0x1c6494){_0x185b20[_0xec3f('0x49')]=_0x1c6494;return _0x185b20;})[_0xec3f('0x24')](respondWithFilteredResult(_0x91c11a,_0xb6da0))[_0xec3f('0x4a')](handleError(_0x91c11a,null));};exports[_0xec3f('0x4b')]=function(_0x18c560,_0x42d1ae){var _0x5f4033={'raw':![],'where':{'id':_0x18c560['params']['id']}},_0x8d0f18={};_0x8d0f18[_0xec3f('0x35')]=_[_0xec3f('0x36')](db[_0xec3f('0x30')][_0xec3f('0x31')]);_0x8d0f18[_0xec3f('0x37')]=_[_0xec3f('0x36')](_0x18c560[_0xec3f('0x37')]);_0x8d0f18[_0xec3f('0x38')]=_[_0xec3f('0x39')](_0x8d0f18[_0xec3f('0x35')],_0x8d0f18[_0xec3f('0x37')]);_0x5f4033[_0xec3f('0x3a')]=_['intersection'](_0x8d0f18[_0xec3f('0x35')],qs[_0xec3f('0x3b')](_0x18c560['query'][_0xec3f('0x3b')]));_0x5f4033[_0xec3f('0x3a')]=_0x5f4033[_0xec3f('0x3a')][_0xec3f('0x4c')]?_0x5f4033['attributes']:_0x8d0f18['model'];if(_0x18c560[_0xec3f('0x37')][_0xec3f('0x46')]){_0x5f4033['include']=[{'all':!![]}];}_0x5f4033=_[_0xec3f('0x43')]({},_0x5f4033,_0x18c560[_0xec3f('0x45')]);return db[_0xec3f('0x30')]['find'](_0x5f4033)[_0xec3f('0x24')](handleEntityNotFound(_0x42d1ae,null))['then'](respondWithResult(_0x42d1ae,null))['catch'](handleError(_0x42d1ae,null));};exports['create']=function(_0x97c57d,_0x1b7cf6){return db[_0xec3f('0x30')][_0xec3f('0x4d')](_0x97c57d['body'],{})[_0xec3f('0x24')](function(_0x54673e){var _0x5af435=_0x97c57d[_0xec3f('0x4e')][_0xec3f('0x26')]({'plain':!![]});if(!_0x5af435)throw new Error(_0xec3f('0x4f'));if(_0x5af435[_0xec3f('0x50')]===_0xec3f('0x4e')){var _0x515bf2=_0x54673e[_0xec3f('0x26')]({'plain':!![]});var _0x56e5c2=_0xec3f('0x27');return db['UserProfileSection'][_0xec3f('0x51')]({'where':{'name':_0x56e5c2,'userProfileId':_0x5af435['userProfileId']},'raw':!![]})[_0xec3f('0x24')](function(_0x370660){if(_0x370660&&_0x370660[_0xec3f('0x52')]===0x0){return db[_0xec3f('0x28')][_0xec3f('0x4d')]({'name':_0x515bf2[_0xec3f('0x2c')],'resourceId':_0x515bf2['id'],'type':_0x370660[_0xec3f('0x2c')],'sectionId':_0x370660['id']},{})[_0xec3f('0x24')](function(){return _0x54673e;});}else{return _0x54673e;}})['catch'](function(_0x230aad){logger[_0xec3f('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x230aad);throw _0x230aad;});}return _0x54673e;})[_0xec3f('0x24')](respondWithResult(_0x1b7cf6,0xc9))['catch'](handleError(_0x1b7cf6,null));};exports[_0xec3f('0x23')]=function(_0x4cc474,_0x3d1767){if(_0x4cc474['body']['id']){delete _0x4cc474[_0xec3f('0x53')]['id'];}return db['VoiceChanSpy'][_0xec3f('0x51')]({'where':{'id':_0x4cc474[_0xec3f('0x54')]['id']}})[_0xec3f('0x24')](handleEntityNotFound(_0x3d1767,null))[_0xec3f('0x24')](saveUpdates(_0x4cc474[_0xec3f('0x53')],null))[_0xec3f('0x24')](respondWithResult(_0x3d1767,null))['catch'](handleError(_0x3d1767,null));};exports[_0xec3f('0x25')]=function(_0x584c68,_0x13825e){return db[_0xec3f('0x30')][_0xec3f('0x51')]({'where':{'id':_0x584c68[_0xec3f('0x54')]['id']}})[_0xec3f('0x24')](handleEntityNotFound(_0x13825e,null))[_0xec3f('0x24')](removeEntity(_0x13825e,null))[_0xec3f('0x4a')](handleError(_0x13825e,null));};
\ No newline at end of file
index 3549d64..5b3a629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdafc=['CDR(type)=%s','chanspy','record','merge','MixMonitor','recordingFormat','auth','password','ChanSpy','name','options','StopMixMonitor','concat','internal','User','findAll','then','catch','models','define','VoiceChanSpy','voice_chanspy','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','from-sip','format','%s%s','push','Set'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xdafc,0x155));var _0xcdaf=function(_0x51c547,_0x17aa5f){_0x51c547=_0x51c547-0x0;var _0x2005c0=_0xdafc[_0x51c547];return _0x2005c0;};'use strict';var _=require(_0xcdaf('0x0'));var util=require(_0xcdaf('0x1'));var BPromise=require(_0xcdaf('0x2'));var attributes=require(_0xcdaf('0x3'));var getUserApplications=function(_0x4b9f54,_0x26a0cb,_0x4deaee){var _0x4c9484=0x1;var _0x2485ff=[];var _0x7c2a59={'context':_0x26a0cb['context']||_0xcdaf('0x4'),'exten':util[_0xcdaf('0x5')](_0xcdaf('0x6'),_0x4b9f54['prefix'],_0x4deaee),'type':'system','isApp':![],'ChanSpyId':_0x4b9f54['id'],'UserId':_0x26a0cb['id']};_0x2485ff[_0xcdaf('0x7')](_['merge']({'app':_0xcdaf('0x8'),'appdata':util[_0xcdaf('0x5')](_0xcdaf('0x9'),_0xcdaf('0xa')),'priority':_0x4c9484++},_0x7c2a59));if(_0x4b9f54[_0xcdaf('0xb')]){_0x2485ff['push'](_[_0xcdaf('0xc')]({'app':_0xcdaf('0xd'),'appdata':util[_0xcdaf('0x5')]('${UNIQUEID}.%s,a',_0x4b9f54[_0xcdaf('0xe')]),'priority':_0x4c9484++},_0x7c2a59));}if(_0x4b9f54[_0xcdaf('0xf')]){_0x2485ff[_0xcdaf('0x7')](_[_0xcdaf('0xc')]({'app':'Authenticate','appdata':_0x4b9f54[_0xcdaf('0x10')],'priority':_0x4c9484++},_0x7c2a59));}_0x2485ff[_0xcdaf('0x7')](_[_0xcdaf('0xc')]({'app':_0xcdaf('0x11'),'appdata':util['format']('SIP/%s,%s',_0x26a0cb[_0xcdaf('0x12')],_0x4b9f54[_0xcdaf('0x13')]?_0x4b9f54['options']['join'](''):''),'priority':_0x4c9484++},_0x7c2a59));if(_0x4b9f54[_0xcdaf('0xb')]){_0x2485ff[_0xcdaf('0x7')](_['merge']({'app':_0xcdaf('0x14'),'priority':_0x4c9484++},_0x7c2a59));}return _0x2485ff;};var getChanSpyApplications=function(_0x25eb19,_0x9686e){var _0x3fae50=[];for(var _0x91cbe0=0x0,_0x2b07f1=0x1;_0x91cbe0<_0x9686e['length'];_0x91cbe0++,_0x2b07f1=0x1){_0x3fae50=_0x3fae50[_0xcdaf('0x15')](getUserApplications(_0x25eb19,_0x9686e[_0x91cbe0],_0x9686e[_0x91cbe0][_0xcdaf('0x16')]));if(_0x9686e[_0x91cbe0]['internal']!=_0x9686e[_0x91cbe0][_0xcdaf('0x12')]){_0x3fae50=_0x3fae50[_0xcdaf('0x15')](getUserApplications(_0x25eb19,_0x9686e[_0x91cbe0],_0x9686e[_0x91cbe0][_0xcdaf('0x12')]));}}return _0x3fae50;};var getChanSpyPromise=function(_0x33e7fc,_0x181247){return new BPromise(function(_0x460225,_0x1ec4ea){return _0x33e7fc[_0xcdaf('0x17')][_0xcdaf('0x18')]({'attributes':['id',_0xcdaf('0x12'),'internal'],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0xcdaf('0x19')](function(_0x161858){if(_0x161858){return _0x460225(getChanSpyApplications(_0x181247,_0x161858));}return _0x460225([]);})[_0xcdaf('0x1a')](function(_0x25c1d6){_0x1ec4ea(_0x25c1d6);});});};module['exports']=function(_0x3b72d3,_0x6e51a4){var _0x209284=_0x3b72d3[_0xcdaf('0x1b')];return _0x3b72d3[_0xcdaf('0x1c')](_0xcdaf('0x1d'),attributes,{'tableName':_0xcdaf('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2988d6,_0x1aa2be,_0x5d06e6){return getChanSpyPromise(_0x209284,_0x2988d6)['then'](function(_0x57807e){if(_0x57807e&&_0x57807e[_0xcdaf('0x1f')]){return _0x209284[_0xcdaf('0x20')][_0xcdaf('0x21')](_0x57807e);}})[_0xcdaf('0x19')](function(){_0x5d06e6();})[_0xcdaf('0x1a')](function(_0x1d2d4c){_0x5d06e6(_0x1d2d4c);});},'afterUpdate':function(_0x2115a8,_0x18b102,_0x4f2509){return _0x209284[_0xcdaf('0x20')][_0xcdaf('0x22')]({'where':{'ChanSpyId':_0x2115a8['id']}})['then'](function(){return getChanSpyPromise(_0x209284,_0x2115a8);})[_0xcdaf('0x19')](function(_0x4052a9){if(_0x4052a9&&_0x4052a9['length']){return _0x209284[_0xcdaf('0x20')][_0xcdaf('0x21')](_0x4052a9);}})[_0xcdaf('0x19')](function(){_0x4f2509();})[_0xcdaf('0x1a')](function(_0x1424dc){_0x4f2509(_0x1424dc);});},'afterDestroy':function(_0x4721c4,_0x480187,_0x22192c){return _0x209284[_0xcdaf('0x20')][_0xcdaf('0x22')]({'where':{'ChanSpyId':_0x4721c4['id']}})['then'](function(){_0x22192c();})[_0xcdaf('0x1a')](function(_0x2d27a4){_0x22192c(_0x2d27a4);});}}});};
\ No newline at end of file
+var _0x7c29=['findAll','agent','catch','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension','bulkCreate','destroy','lodash','context','from-sip','format','system','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','Authenticate','name','options','join','length','concat','internal','User'];(function(_0x1a2361,_0x28d24f){var _0x46b9ec=function(_0x2c6a2c){while(--_0x2c6a2c){_0x1a2361['push'](_0x1a2361['shift']());}};_0x46b9ec(++_0x28d24f);}(_0x7c29,0xa5));var _0x97c2=function(_0x2971a4,_0x624215){_0x2971a4=_0x2971a4-0x0;var _0x2e2108=_0x7c29[_0x2971a4];return _0x2e2108;};'use strict';var _=require(_0x97c2('0x0'));var util=require('util');var BPromise=require('bluebird');var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x1173cd,_0x5af384,_0x38cc10){var _0xddb6d6=0x1;var _0x4fc3e0=[];var _0x35dcd3={'context':_0x5af384[_0x97c2('0x1')]||_0x97c2('0x2'),'exten':util[_0x97c2('0x3')]('%s%s',_0x1173cd['prefix'],_0x38cc10),'type':_0x97c2('0x4'),'isApp':![],'ChanSpyId':_0x1173cd['id'],'UserId':_0x5af384['id']};_0x4fc3e0[_0x97c2('0x5')](_[_0x97c2('0x6')]({'app':_0x97c2('0x7'),'appdata':util['format'](_0x97c2('0x8'),_0x97c2('0x9')),'priority':_0xddb6d6++},_0x35dcd3));if(_0x1173cd[_0x97c2('0xa')]){_0x4fc3e0[_0x97c2('0x5')](_['merge']({'app':_0x97c2('0xb'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x1173cd[_0x97c2('0xc')]),'priority':_0xddb6d6++},_0x35dcd3));}if(_0x1173cd['auth']){_0x4fc3e0[_0x97c2('0x5')](_[_0x97c2('0x6')]({'app':_0x97c2('0xd'),'appdata':_0x1173cd['password'],'priority':_0xddb6d6++},_0x35dcd3));}_0x4fc3e0[_0x97c2('0x5')](_[_0x97c2('0x6')]({'app':'ChanSpy','appdata':util[_0x97c2('0x3')]('SIP/%s,%s',_0x5af384[_0x97c2('0xe')],_0x1173cd['options']?_0x1173cd[_0x97c2('0xf')][_0x97c2('0x10')](''):''),'priority':_0xddb6d6++},_0x35dcd3));if(_0x1173cd[_0x97c2('0xa')]){_0x4fc3e0[_0x97c2('0x5')](_[_0x97c2('0x6')]({'app':'StopMixMonitor','priority':_0xddb6d6++},_0x35dcd3));}return _0x4fc3e0;};var getChanSpyApplications=function(_0x502703,_0x358c9a){var _0x43b1a2=[];for(var _0x376bb0=0x0,_0x52dab3=0x1;_0x376bb0<_0x358c9a[_0x97c2('0x11')];_0x376bb0++,_0x52dab3=0x1){_0x43b1a2=_0x43b1a2[_0x97c2('0x12')](getUserApplications(_0x502703,_0x358c9a[_0x376bb0],_0x358c9a[_0x376bb0][_0x97c2('0x13')]));if(_0x358c9a[_0x376bb0][_0x97c2('0x13')]!=_0x358c9a[_0x376bb0][_0x97c2('0xe')]){_0x43b1a2=_0x43b1a2[_0x97c2('0x12')](getUserApplications(_0x502703,_0x358c9a[_0x376bb0],_0x358c9a[_0x376bb0][_0x97c2('0xe')]));}}return _0x43b1a2;};var getChanSpyPromise=function(_0x5d94b8,_0x32a8fb){return new BPromise(function(_0x1baa84,_0x46a6ae){return _0x5d94b8[_0x97c2('0x14')][_0x97c2('0x15')]({'attributes':['id',_0x97c2('0xe'),_0x97c2('0x13')],'where':{'role':_0x97c2('0x16'),'chanspy':!![]},'raw':!![]})['then'](function(_0x2020c2){if(_0x2020c2){return _0x1baa84(getChanSpyApplications(_0x32a8fb,_0x2020c2));}return _0x1baa84([]);})[_0x97c2('0x17')](function(_0x1af7ed){_0x46a6ae(_0x1af7ed);});});};module['exports']=function(_0x2e4d1f,_0x4fd33e){var _0x257246=_0x2e4d1f['models'];return _0x2e4d1f[_0x97c2('0x18')](_0x97c2('0x19'),attributes,{'tableName':_0x97c2('0x1a'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x20752c,_0x179995,_0x1ebb7b){return getChanSpyPromise(_0x257246,_0x20752c)[_0x97c2('0x1b')](function(_0x1e1273){if(_0x1e1273&&_0x1e1273['length']){return _0x257246[_0x97c2('0x1c')][_0x97c2('0x1d')](_0x1e1273);}})[_0x97c2('0x1b')](function(){_0x1ebb7b();})['catch'](function(_0x102c12){_0x1ebb7b(_0x102c12);});},'afterUpdate':function(_0x389487,_0x17bb9d,_0x45f275){return _0x257246[_0x97c2('0x1c')][_0x97c2('0x1e')]({'where':{'ChanSpyId':_0x389487['id']}})[_0x97c2('0x1b')](function(){return getChanSpyPromise(_0x257246,_0x389487);})[_0x97c2('0x1b')](function(_0x1b86db){if(_0x1b86db&&_0x1b86db[_0x97c2('0x11')]){return _0x257246[_0x97c2('0x1c')]['bulkCreate'](_0x1b86db);}})[_0x97c2('0x1b')](function(){_0x45f275();})[_0x97c2('0x17')](function(_0x1c726b){_0x45f275(_0x1c726b);});},'afterDestroy':function(_0x450e34,_0x27d27b,_0x43f8a7){return _0x257246['VoiceExtension'][_0x97c2('0x1e')]({'where':{'ChanSpyId':_0x450e34['id']}})['then'](function(){_0x43f8a7();})[_0x97c2('0x17')](function(_0x77dc28){_0x43f8a7(_0x77dc28);});}}});};
\ No newline at end of file
index c7337bf..4321627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe812=['ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','moment'];(function(_0x4bc0c6,_0x2bd7c7){var _0x7eb06d=function(_0xa59e7){while(--_0xa59e7){_0x4bc0c6['push'](_0x4bc0c6['shift']());}};_0x7eb06d(++_0x2bd7c7);}(_0xe812,0x1f2));var _0x2e81=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xe812[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x2e81('0x0'));var moment=require(_0x2e81('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2e81('0x2'));var db=require(_0x2e81('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2e81('0x4'))(_0x2e81('0x5'));var config=require('../../config/environment');var jayson=require(_0x2e81('0x6'));var client=jayson[_0x2e81('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x36604d,_0x32b221,_0x27f9c6){return new BPromise(function(_0x5559ca,_0x142cab){return client[_0x2e81('0x8')](_0x36604d,_0x27f9c6)[_0x2e81('0x9')](function(_0x11a56b){logger['info'](_0x2e81('0xa'),_0x32b221,_0x2e81('0xb'));logger[_0x2e81('0xc')](_0x2e81('0xd'),_0x32b221,_0x2e81('0xb'),JSON[_0x2e81('0xe')](_0x11a56b));if(_0x11a56b[_0x2e81('0xf')]){if(_0x11a56b[_0x2e81('0xf')][_0x2e81('0x10')]===0x1f4){logger[_0x2e81('0xf')](_0x2e81('0xa'),_0x32b221,_0x11a56b['error'][_0x2e81('0x11')]);return _0x142cab(_0x11a56b[_0x2e81('0xf')]['message']);}logger[_0x2e81('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x32b221,_0x11a56b[_0x2e81('0xf')][_0x2e81('0x11')]);return _0x5559ca(_0x11a56b[_0x2e81('0xf')][_0x2e81('0x11')]);}else{logger[_0x2e81('0x12')](_0x2e81('0xa'),_0x32b221,'request\x20sent');_0x5559ca(_0x11a56b[_0x2e81('0x13')][_0x2e81('0x11')]);}})['catch'](function(_0x330131){logger['error'](_0x2e81('0xa'),_0x32b221,_0x330131);_0x142cab(_0x330131);});});}
\ No newline at end of file
+var _0x8ce3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird'];(function(_0x4212e0,_0x1ee414){var _0x14452d=function(_0x38396e){while(--_0x38396e){_0x4212e0['push'](_0x4212e0['shift']());}};_0x14452d(++_0x1ee414);}(_0x8ce3,0xc3));var _0x38ce=function(_0x44caf2,_0x8ffb16){_0x44caf2=_0x44caf2-0x0;var _0x25978d=_0x8ce3[_0x44caf2];return _0x25978d;};'use strict';var _=require(_0x38ce('0x0'));var util=require(_0x38ce('0x1'));var moment=require('moment');var BPromise=require(_0x38ce('0x2'));var rs=require(_0x38ce('0x3'));var fs=require('fs');var Redis=require(_0x38ce('0x4'));var db=require(_0x38ce('0x5'))['db'];var utils=require(_0x38ce('0x6'));var logger=require(_0x38ce('0x7'))(_0x38ce('0x8'));var config=require(_0x38ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x38ce('0xa')][_0x38ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x58074c,_0x262b13,_0xbe7332){return new BPromise(function(_0x3f8011,_0x482955){return client[_0x38ce('0xc')](_0x58074c,_0xbe7332)['then'](function(_0x725d27){logger['info'](_0x38ce('0xd'),_0x262b13,_0x38ce('0xe'));logger[_0x38ce('0xf')](_0x38ce('0x10'),_0x262b13,_0x38ce('0xe'),JSON[_0x38ce('0x11')](_0x725d27));if(_0x725d27[_0x38ce('0x12')]){if(_0x725d27[_0x38ce('0x12')][_0x38ce('0x13')]===0x1f4){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);return _0x482955(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}logger[_0x38ce('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x262b13,_0x725d27['error'][_0x38ce('0x14')]);return _0x3f8011(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}else{logger['info'](_0x38ce('0xd'),_0x262b13,'request\x20sent');_0x3f8011(_0x725d27[_0x38ce('0x15')][_0x38ce('0x14')]);}})['catch'](function(_0x5fc115){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x5fc115);_0x482955(_0x5fc115);});});}
\ No newline at end of file
index 16aa7a5..96fb76a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c3a=['express','Router','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','get','isAuthenticated','index','create','/:id','update','destroy','exports','multer','path'];(function(_0x44a593,_0x22f21a){var _0x35609a=function(_0x184560){while(--_0x184560){_0x44a593['push'](_0x44a593['shift']());}};_0x35609a(++_0x22f21a);}(_0x4c3a,0x94));var _0xa4c3=function(_0x44d28c,_0x3a197b){_0x44d28c=_0x44d28c-0x0;var _0x754673=_0x4c3a[_0x44d28c];return _0x754673;};'use strict';var multer=require(_0xa4c3('0x0'));var util=require('util');var path=require(_0xa4c3('0x1'));var timeout=require('connect-timeout');var express=require(_0xa4c3('0x2'));var router=express[_0xa4c3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa4c3('0x4'));var interaction=require(_0xa4c3('0x5'));var config=require('../../config/environment');var controller=require(_0xa4c3('0x6'));router[_0xa4c3('0x7')]('/',auth[_0xa4c3('0x8')](),controller[_0xa4c3('0x9')]);router[_0xa4c3('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xa4c3('0xa')]);router['put'](_0xa4c3('0xb'),auth['isAuthenticated'](),controller[_0xa4c3('0xc')]);router['delete'](_0xa4c3('0xb'),auth[_0xa4c3('0x8')](),controller[_0xa4c3('0xd')]);module[_0xa4c3('0xe')]=router;
\ No newline at end of file
+var _0xed75=['post','create','/:id','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','isAuthenticated','show'];(function(_0x33750a,_0xb41772){var _0x3bd53f=function(_0x1950fa){while(--_0x1950fa){_0x33750a['push'](_0x33750a['shift']());}};_0x3bd53f(++_0xb41772);}(_0xed75,0xc8));var _0x5ed7=function(_0xd2c050,_0x34a416){_0xd2c050=_0xd2c050-0x0;var _0x224cab=_0xed75[_0xd2c050];return _0x224cab;};'use strict';var multer=require(_0x5ed7('0x0'));var util=require('util');var path=require(_0x5ed7('0x1'));var timeout=require(_0x5ed7('0x2'));var express=require('express');var router=express[_0x5ed7('0x3')]();var fs_extra=require(_0x5ed7('0x4'));var auth=require(_0x5ed7('0x5'));var interaction=require(_0x5ed7('0x6'));var config=require('../../config/environment');var controller=require(_0x5ed7('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x5ed7('0x8')](),controller[_0x5ed7('0x9')]);router[_0x5ed7('0xa')]('/',auth['isAuthenticated'](),controller[_0x5ed7('0xb')]);router['put'](_0x5ed7('0xc'),auth[_0x5ed7('0x8')](),controller['update']);router[_0x5ed7('0xd')]('/:id',auth[_0x5ed7('0x8')](),controller['destroy']);module[_0x5ed7('0xe')]=router;
\ No newline at end of file
index 1ca766b..bcdb6d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b63=['sequelize','exports','STRING'];(function(_0x46fba4,_0x5f0cbf){var _0x5e6888=function(_0x21f2f8){while(--_0x21f2f8){_0x46fba4['push'](_0x46fba4['shift']());}};_0x5e6888(++_0x5f0cbf);}(_0x8b63,0x108));var _0x38b6=function(_0x19eb58,_0x34c7a3){_0x19eb58=_0x19eb58-0x0;var _0x132fa8=_0x8b63[_0x19eb58];return _0x132fa8;};'use strict';var Sequelize=require(_0x38b6('0x0'));module[_0x38b6('0x1')]={'name':{'type':Sequelize[_0x38b6('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x38b6('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8daa=['exports','STRING','BOOLEAN','sequelize'];(function(_0x37d3f3,_0xca010f){var _0x185c9c=function(_0x5e2bf2){while(--_0x5e2bf2){_0x37d3f3['push'](_0x37d3f3['shift']());}};_0x185c9c(++_0xca010f);}(_0x8daa,0x153));var _0xa8da=function(_0x2742db,_0x58e00c){_0x2742db=_0x2742db-0x0;var _0x18659e=_0x8daa[_0x2742db];return _0x18659e;};'use strict';var Sequelize=require(_0xa8da('0x0'));module[_0xa8da('0x1')]={'name':{'type':Sequelize[_0xa8da('0x2')],'unique':'name'},'description':{'type':Sequelize[_0xa8da('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xa8da('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 0b0124a..b926559 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95b7=['VoiceContext','includeAll','include','findAll','show','params','length','find','create','readFileSync','root','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','join','Reload','render','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../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','catch','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','get','Contexts','end','name','send','map','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL'];(function(_0x1245e0,_0x10ba8c){var _0x31bdd5=function(_0x4c44d2){while(--_0x4c44d2){_0x1245e0['push'](_0x1245e0['shift']());}};_0x31bdd5(++_0x10ba8c);}(_0x95b7,0x14f));var _0x795b=function(_0x1ffff7,_0x2f9ff6){_0x1ffff7=_0x1ffff7-0x0;var _0x49d017=_0x95b7[_0x1ffff7];return _0x49d017;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x795b('0x0'));var zipdir=require(_0x795b('0x1'));var jsonpatch=require(_0x795b('0x2'));var rp=require(_0x795b('0x3'));var moment=require(_0x795b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x795b('0x5'));var util=require(_0x795b('0x6'));var path=require(_0x795b('0x7'));var sox=require(_0x795b('0x8'));var csv=require(_0x795b('0x9'));var ejs=require(_0x795b('0xa'));var fs=require('fs');var fs_extra=require(_0x795b('0xb'));var _=require(_0x795b('0xc'));var squel=require('squel');var crypto=require(_0x795b('0xd'));var jsforce=require(_0x795b('0xe'));var deskjs=require(_0x795b('0xf'));var toCsv=require(_0x795b('0x9'));var querystring=require(_0x795b('0x10'));var Papa=require(_0x795b('0x11'));var Redis=require(_0x795b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x795b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x795b('0x14'))(_0x795b('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x795b('0x16'));var db=require(_0x795b('0x17'))['db'];var jayson=require(_0x795b('0x18'));var client=jayson[_0x795b('0x19')][_0x795b('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x3484ef,_0x1e9f6e,_0x1b19f0,_0x59fd3a){return new BPromise(function(_0x210f97,_0x3a1295){var _0x2afa5e=_0x59fd3a||client;return _0x2afa5e[_0x795b('0x1b')](_0x3484ef,_0x1b19f0)[_0x795b('0x1c')](function(_0x3ebb55){logger['info'](_0x795b('0x1d'),_0x1e9f6e,'request\x20sent');logger[_0x795b('0x1e')](_0x795b('0x1f'),_0x1e9f6e,'request\x20sent',JSON[_0x795b('0x20')](_0x3ebb55));if(_0x3ebb55['error']){if(_0x3ebb55[_0x795b('0x21')][_0x795b('0x22')]===0x1f4){logger[_0x795b('0x21')]('VoiceContext,\x20%s,\x20%s',_0x1e9f6e,_0x3ebb55[_0x795b('0x21')][_0x795b('0x23')]);return _0x3a1295(_0x3ebb55[_0x795b('0x21')][_0x795b('0x23')]);}logger[_0x795b('0x21')]('VoiceContext,\x20%s,\x20%s',_0x1e9f6e,_0x3ebb55['error']['message']);return _0x210f97(_0x3ebb55[_0x795b('0x21')][_0x795b('0x23')]);}else{logger[_0x795b('0x24')](_0x795b('0x1d'),_0x1e9f6e,'request\x20sent');_0x210f97(_0x3ebb55['result'][_0x795b('0x23')]);}})[_0x795b('0x25')](function(_0x24ae52){logger[_0x795b('0x21')](_0x795b('0x1d'),_0x1e9f6e,_0x24ae52);_0x3a1295(_0x24ae52);});});}function respondWithStatusCode(_0x5a75a1,_0x1ba048){_0x1ba048=_0x1ba048||0xcc;return function(_0x16d84a){if(_0x16d84a){return _0x5a75a1[_0x795b('0x26')](_0x1ba048);}return _0x5a75a1[_0x795b('0x27')](_0x1ba048)['end']();};}function respondWithResult(_0x3ccdbb,_0xb0fc02){_0xb0fc02=_0xb0fc02||0xc8;return function(_0x57a156){if(_0x57a156){return _0x3ccdbb[_0x795b('0x27')](_0xb0fc02)[_0x795b('0x28')](_0x57a156);}};}function respondWithFilteredResult(_0x21bea6,_0x390d27){return function(_0x4b5ddc){if(_0x4b5ddc){var _0x22e883=typeof _0x390d27['offset']===_0x795b('0x29')&&typeof _0x390d27[_0x795b('0x2a')]==='undefined';var _0x525cd9=_0x4b5ddc['count'];var _0x59ef48=_0x22e883?0x0:_0x390d27[_0x795b('0x2b')];var _0x1024bd=_0x22e883?_0x4b5ddc[_0x795b('0x2c')]:_0x390d27[_0x795b('0x2b')]+_0x390d27[_0x795b('0x2a')];var _0x23b9d0;if(_0x1024bd>=_0x525cd9){_0x1024bd=_0x525cd9;_0x23b9d0=0xc8;}else{_0x23b9d0=0xce;}_0x21bea6[_0x795b('0x27')](_0x23b9d0);return _0x21bea6[_0x795b('0x2d')](_0x795b('0x2e'),_0x59ef48+'-'+_0x1024bd+'/'+_0x525cd9)[_0x795b('0x28')](_0x4b5ddc);}return null;};}function patchUpdates(_0x1c089e){return function(_0x3eb4e8){try{jsonpatch['apply'](_0x3eb4e8,_0x1c089e,!![]);}catch(_0x2f4697){return BPromise[_0x795b('0x2f')](_0x2f4697);}return _0x3eb4e8[_0x795b('0x30')]();};}function saveUpdates(_0x348cec,_0x172adf){return function(_0x3bac9d){if(_0x3bac9d){return _0x3bac9d[_0x795b('0x31')](_0x348cec)[_0x795b('0x1c')](function(_0x175c0f){return _0x175c0f;});}return null;};}function removeEntity(_0x393b7b,_0x404e5e){return function(_0x2c9818){if(_0x2c9818){return _0x2c9818['destroy']()[_0x795b('0x1c')](function(){var _0x42efb7=_0x2c9818[_0x795b('0x32')]({'plain':!![]});var _0x4545ea=_0x795b('0x33');return db['UserProfileResource']['destroy']({'where':{'type':_0x4545ea,'resourceId':_0x42efb7['id']}})[_0x795b('0x1c')](function(){return _0x2c9818;});})[_0x795b('0x1c')](function(){_0x393b7b[_0x795b('0x27')](0xcc)[_0x795b('0x34')]();});}};}function handleEntityNotFound(_0x50259d,_0x135faa){return function(_0x179c19){if(!_0x179c19){_0x50259d[_0x795b('0x26')](0x194);}return _0x179c19;};}function handleError(_0x5ef494,_0x26b52f){_0x26b52f=_0x26b52f||0x1f4;return function(_0x686726){logger['error'](_0x686726['stack']);if(_0x686726['name']){delete _0x686726[_0x795b('0x35')];}_0x5ef494['status'](_0x26b52f)[_0x795b('0x36')](_0x686726);};}exports['index']=function(_0x1ca79d,_0x569f5e){var _0x24dcaa={},_0x52a164={},_0x34f395={'count':0x0,'rows':[]};var _0x32fc2a=_[_0x795b('0x37')](db['VoiceContext'][_0x795b('0x38')],function(_0xb10a95){return{'name':_0xb10a95[_0x795b('0x39')],'type':_0xb10a95['type']['key']};});_0x52a164[_0x795b('0x3a')]=_['map'](_0x32fc2a,_0x795b('0x35'));_0x52a164[_0x795b('0x3b')]=_[_0x795b('0x3c')](_0x1ca79d['query']);_0x52a164[_0x795b('0x3d')]=_['intersection'](_0x52a164[_0x795b('0x3a')],_0x52a164[_0x795b('0x3b')]);_0x24dcaa[_0x795b('0x3e')]=_[_0x795b('0x3f')](_0x52a164['model'],qs[_0x795b('0x40')](_0x1ca79d[_0x795b('0x3b')][_0x795b('0x40')]));_0x24dcaa['attributes']=_0x24dcaa[_0x795b('0x3e')]['length']?_0x24dcaa[_0x795b('0x3e')]:_0x52a164[_0x795b('0x3a')];if(!_0x1ca79d[_0x795b('0x3b')][_0x795b('0x41')](_0x795b('0x42'))){_0x24dcaa[_0x795b('0x2a')]=qs['limit'](_0x1ca79d['query'][_0x795b('0x2a')]);_0x24dcaa['offset']=qs[_0x795b('0x2b')](_0x1ca79d[_0x795b('0x3b')][_0x795b('0x2b')]);}_0x24dcaa[_0x795b('0x43')]=qs[_0x795b('0x44')](_0x1ca79d['query'][_0x795b('0x44')]);_0x24dcaa[_0x795b('0x45')]=qs[_0x795b('0x3d')](_['pick'](_0x1ca79d[_0x795b('0x3b')],_0x52a164['filters']),_0x32fc2a);if(_0x1ca79d[_0x795b('0x3b')][_0x795b('0x46')]){_0x24dcaa['where']=_[_0x795b('0x47')](_0x24dcaa[_0x795b('0x45')],{'$or':_[_0x795b('0x37')](_0x32fc2a,function(_0x5b0aa2){if(_0x5b0aa2['type']!==_0x795b('0x48')){var _0x45637d={};_0x45637d[_0x5b0aa2['name']]={'$like':'%'+_0x1ca79d['query'][_0x795b('0x46')]+'%'};return _0x45637d;}})});}_0x24dcaa=_[_0x795b('0x47')]({},_0x24dcaa,_0x1ca79d['options']);var _0x4eebc1={'where':_0x24dcaa[_0x795b('0x45')]};return db[_0x795b('0x49')][_0x795b('0x2c')](_0x4eebc1)['then'](function(_0x147a12){_0x34f395['count']=_0x147a12;if(_0x1ca79d[_0x795b('0x3b')][_0x795b('0x4a')]){_0x24dcaa[_0x795b('0x4b')]=[{'all':!![]}];}return db[_0x795b('0x49')][_0x795b('0x4c')](_0x24dcaa);})[_0x795b('0x1c')](function(_0x2d0e4c){_0x34f395['rows']=_0x2d0e4c;return _0x34f395;})[_0x795b('0x1c')](respondWithFilteredResult(_0x569f5e,_0x24dcaa))['catch'](handleError(_0x569f5e,null));};exports[_0x795b('0x4d')]=function(_0x56ccfa,_0x30389d){var _0x1f9b44={'raw':![],'where':{'id':_0x56ccfa[_0x795b('0x4e')]['id']}},_0x9f9ffe={};_0x9f9ffe[_0x795b('0x3a')]=_['keys'](db[_0x795b('0x49')][_0x795b('0x38')]);_0x9f9ffe['query']=_['keys'](_0x56ccfa[_0x795b('0x3b')]);_0x9f9ffe['filters']=_[_0x795b('0x3f')](_0x9f9ffe['model'],_0x9f9ffe['query']);_0x1f9b44[_0x795b('0x3e')]=_[_0x795b('0x3f')](_0x9f9ffe[_0x795b('0x3a')],qs[_0x795b('0x40')](_0x56ccfa['query'][_0x795b('0x40')]));_0x1f9b44[_0x795b('0x3e')]=_0x1f9b44['attributes'][_0x795b('0x4f')]?_0x1f9b44['attributes']:_0x9f9ffe['model'];if(_0x56ccfa[_0x795b('0x3b')][_0x795b('0x4a')]){_0x1f9b44[_0x795b('0x4b')]=[{'all':!![]}];}_0x1f9b44=_[_0x795b('0x47')]({},_0x1f9b44,_0x56ccfa['options']);return db[_0x795b('0x49')][_0x795b('0x50')](_0x1f9b44)[_0x795b('0x1c')](handleEntityNotFound(_0x30389d,null))['then'](respondWithResult(_0x30389d,null))['catch'](handleError(_0x30389d,null));};exports[_0x795b('0x51')]=function(_0x562195,_0x4be76b,_0x135255){var _0x7fa34d;return db['VoiceContext']['create'](_0x562195['body'],{'raw':!![]})['then'](function(_0x2bca1c){_0x7fa34d=_0x2bca1c;return db['VoiceContext'][_0x795b('0x4c')]({'raw':!![]});})[_0x795b('0x1c')](function(_0x330327){var _0x125ffb=fs[_0x795b('0x52')](path['join'](config[_0x795b('0x53')],_0x795b('0x54')),_0x795b('0x55'));var _0x4fbbf6=ejs['render'](_0x125ffb,{'contexts':_0x330327||[]});fs[_0x795b('0x56')](_0x795b('0x57'),_0x4fbbf6);})['then'](function(){return respondWithRpcPromise('Reload',_0x795b('0x51'),{'module':_0x795b('0x58')});})[_0x795b('0x1c')](function(){var _0x3a679c=_0x562195['user'][_0x795b('0x32')]({'plain':!![]});if(!_0x3a679c)throw new Error(_0x795b('0x59'));if(_0x3a679c[_0x795b('0x5a')]===_0x795b('0x5b')){var _0x2c0e96=_0x7fa34d[_0x795b('0x32')]({'plain':!![]});return db[_0x795b('0x5c')][_0x795b('0x50')]({'where':{'name':_0x795b('0x33'),'userProfileId':_0x3a679c[_0x795b('0x5d')]},'raw':!![]})[_0x795b('0x1c')](function(_0x43a8e7){if(_0x43a8e7&&_0x43a8e7[_0x795b('0x5e')]===0x0){return db[_0x795b('0x5f')][_0x795b('0x51')]({'name':_0x2c0e96[_0x795b('0x35')],'resourceId':_0x2c0e96['id'],'type':_0x43a8e7[_0x795b('0x35')],'sectionId':_0x43a8e7['id']},{})['then'](function(){return _0x7fa34d;});}else{return _0x7fa34d;}})[_0x795b('0x25')](function(_0xe97159){logger['error'](_0x795b('0x60'),_0xe97159);throw _0xe97159;});}return _0x7fa34d;})[_0x795b('0x1c')](respondWithResult(_0x4be76b,0xc9))[_0x795b('0x25')](handleError(_0x4be76b,null));};exports['update']=function(_0x4d1176,_0x1397a4,_0xe0f409){var _0x3f0790;return db['VoiceContext'][_0x795b('0x50')]({'where':{'id':_0x4d1176['params']['id']}})[_0x795b('0x1c')](handleEntityNotFound(_0x1397a4,null))[_0x795b('0x1c')](saveUpdates(_0x4d1176[_0x795b('0x61')],null))[_0x795b('0x1c')](function(_0x17ec14){if(_0x17ec14){_0x3f0790=_0x17ec14;return db[_0x795b('0x49')]['findAll']({'raw':!![]});}})[_0x795b('0x1c')](function(_0x456eb0){var _0x1170fa=fs['readFileSync'](path[_0x795b('0x62')](config[_0x795b('0x53')],'server/files/templates/context.ejs'),_0x795b('0x55'));var _0x15337b=ejs['render'](_0x1170fa,{'contexts':_0x456eb0||[]});fs[_0x795b('0x56')](_0x795b('0x57'),_0x15337b);})[_0x795b('0x1c')](function(){return respondWithRpcPromise(_0x795b('0x63'),_0x795b('0x31'),{'module':_0x795b('0x58')});})[_0x795b('0x1c')](function(){return _0x3f0790;})[_0x795b('0x1c')](respondWithResult(_0x1397a4,null))[_0x795b('0x25')](handleError(_0x1397a4,null));};exports['destroy']=function(_0x4494fc,_0xc380c7,_0x1136c7){var _0x184e6f;return db['VoiceContext']['find']({'where':{'id':_0x4494fc[_0x795b('0x4e')]['id']}})[_0x795b('0x1c')](handleEntityNotFound(_0xc380c7,null))['then'](removeEntity(_0xc380c7,null))[_0x795b('0x1c')](function(){return db['VoiceContext'][_0x795b('0x4c')]({'raw':!![]});})['then'](function(_0x517c44){var _0x28a14c=fs[_0x795b('0x52')](path['join'](config['root'],'server/files/templates/context.ejs'),_0x795b('0x55'));var _0x5a0089=ejs[_0x795b('0x64')](_0x28a14c,{'contexts':_0x517c44});fs[_0x795b('0x56')](_0x795b('0x57'),_0x5a0089);return respondWithRpcPromise(_0x795b('0x63'),_0x795b('0x65'),{'module':_0x795b('0x58')});})[_0x795b('0x25')](handleError(_0xc380c7,null));};
\ No newline at end of file
+var _0x9540=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','Contexts','UserProfileResource','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','create','body','readFileSync','join','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','get'];(function(_0x5d19ec,_0x2b6147){var _0x2e6ddd=function(_0x1924d0){while(--_0x1924d0){_0x5d19ec['push'](_0x5d19ec['shift']());}};_0x2e6ddd(++_0x2b6147);}(_0x9540,0x1a6));var _0x0954=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9540[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0954('0x0'));var zipdir=require(_0x0954('0x1'));var jsonpatch=require(_0x0954('0x2'));var rp=require(_0x0954('0x3'));var moment=require(_0x0954('0x4'));var BPromise=require(_0x0954('0x5'));var Mustache=require(_0x0954('0x6'));var util=require(_0x0954('0x7'));var path=require(_0x0954('0x8'));var sox=require(_0x0954('0x9'));var csv=require('to-csv');var ejs=require(_0x0954('0xa'));var fs=require('fs');var fs_extra=require(_0x0954('0xb'));var _=require(_0x0954('0xc'));var squel=require(_0x0954('0xd'));var crypto=require(_0x0954('0xe'));var jsforce=require(_0x0954('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0954('0x10'));var querystring=require(_0x0954('0x11'));var Papa=require('papaparse');var Redis=require(_0x0954('0x12'));var authService=require(_0x0954('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0954('0x14'));var hardwareService=require(_0x0954('0x15'));var logger=require(_0x0954('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x0954('0x17'));var licenseUtil=require(_0x0954('0x18'));var db=require(_0x0954('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x0954('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x2ffa90,_0x3cc91d,_0x50c752,_0x1abeb2){return new BPromise(function(_0x119560,_0x4ac630){var _0x4f7db3=_0x1abeb2||client;return _0x4f7db3[_0x0954('0x1b')](_0x2ffa90,_0x50c752)['then'](function(_0x306db0){logger[_0x0954('0x1c')](_0x0954('0x1d'),_0x3cc91d,_0x0954('0x1e'));logger[_0x0954('0x1f')](_0x0954('0x20'),_0x3cc91d,'request\x20sent',JSON[_0x0954('0x21')](_0x306db0));if(_0x306db0['error']){if(_0x306db0['error'][_0x0954('0x22')]===0x1f4){logger['error'](_0x0954('0x1d'),_0x3cc91d,_0x306db0['error']['message']);return _0x4ac630(_0x306db0[_0x0954('0x23')]['message']);}logger['error'](_0x0954('0x1d'),_0x3cc91d,_0x306db0[_0x0954('0x23')]['message']);return _0x119560(_0x306db0[_0x0954('0x23')][_0x0954('0x24')]);}else{logger[_0x0954('0x1c')](_0x0954('0x1d'),_0x3cc91d,_0x0954('0x1e'));_0x119560(_0x306db0[_0x0954('0x25')][_0x0954('0x24')]);}})[_0x0954('0x26')](function(_0xcdb73a){logger[_0x0954('0x23')](_0x0954('0x1d'),_0x3cc91d,_0xcdb73a);_0x4ac630(_0xcdb73a);});});}function respondWithStatusCode(_0x489236,_0x172634){_0x172634=_0x172634||0xcc;return function(_0x3f2c6f){if(_0x3f2c6f){return _0x489236[_0x0954('0x27')](_0x172634);}return _0x489236[_0x0954('0x28')](_0x172634)[_0x0954('0x29')]();};}function respondWithResult(_0x2670a8,_0x547b2f){_0x547b2f=_0x547b2f||0xc8;return function(_0x1583fc){if(_0x1583fc){return _0x2670a8['status'](_0x547b2f)[_0x0954('0x2a')](_0x1583fc);}};}function respondWithFilteredResult(_0x6ab97d,_0x4ab00e){return function(_0x2a9bec){if(_0x2a9bec){var _0x3433bd=typeof _0x4ab00e[_0x0954('0x2b')]===_0x0954('0x2c')&&typeof _0x4ab00e[_0x0954('0x2d')]==='undefined';var _0x7cce87=_0x2a9bec[_0x0954('0x2e')];var _0x3d5477=_0x3433bd?0x0:_0x4ab00e['offset'];var _0x297df4=_0x3433bd?_0x2a9bec[_0x0954('0x2e')]:_0x4ab00e[_0x0954('0x2b')]+_0x4ab00e[_0x0954('0x2d')];var _0x2c2609;if(_0x297df4>=_0x7cce87){_0x297df4=_0x7cce87;_0x2c2609=0xc8;}else{_0x2c2609=0xce;}_0x6ab97d[_0x0954('0x28')](_0x2c2609);return _0x6ab97d[_0x0954('0x2f')](_0x0954('0x30'),_0x3d5477+'-'+_0x297df4+'/'+_0x7cce87)['json'](_0x2a9bec);}return null;};}function patchUpdates(_0x83a77c){return function(_0x4f6edc){try{jsonpatch['apply'](_0x4f6edc,_0x83a77c,!![]);}catch(_0x4b903d){return BPromise['reject'](_0x4b903d);}return _0x4f6edc[_0x0954('0x31')]();};}function saveUpdates(_0x43a638,_0x3e875e){return function(_0x4fe907){if(_0x4fe907){return _0x4fe907[_0x0954('0x32')](_0x43a638)[_0x0954('0x33')](function(_0xa435de){return _0xa435de;});}return null;};}function removeEntity(_0x50808a,_0xf9f580){return function(_0x42598b){if(_0x42598b){return _0x42598b[_0x0954('0x34')]()[_0x0954('0x33')](function(){var _0x44a5eb=_0x42598b['get']({'plain':!![]});var _0x5a5b1a=_0x0954('0x35');return db[_0x0954('0x36')][_0x0954('0x34')]({'where':{'type':_0x5a5b1a,'resourceId':_0x44a5eb['id']}})['then'](function(){return _0x42598b;});})[_0x0954('0x33')](function(){_0x50808a[_0x0954('0x28')](0xcc)[_0x0954('0x29')]();});}};}function handleEntityNotFound(_0x36269d,_0xf24271){return function(_0x40d185){if(!_0x40d185){_0x36269d[_0x0954('0x27')](0x194);}return _0x40d185;};}function handleError(_0x5ed230,_0x54079f){_0x54079f=_0x54079f||0x1f4;return function(_0x22b1a2){logger[_0x0954('0x23')](_0x22b1a2['stack']);if(_0x22b1a2[_0x0954('0x37')]){delete _0x22b1a2[_0x0954('0x37')];}_0x5ed230['status'](_0x54079f)[_0x0954('0x38')](_0x22b1a2);};}exports[_0x0954('0x39')]=function(_0x3b7510,_0x23e6ba){var _0x26a614={},_0x59bf59={},_0x3d0842={'count':0x0,'rows':[]};var _0x16b658=_[_0x0954('0x3a')](db[_0x0954('0x3b')][_0x0954('0x3c')],function(_0x2ebdbb){return{'name':_0x2ebdbb[_0x0954('0x3d')],'type':_0x2ebdbb[_0x0954('0x3e')][_0x0954('0x3f')]};});_0x59bf59['model']=_[_0x0954('0x3a')](_0x16b658,_0x0954('0x37'));_0x59bf59[_0x0954('0x40')]=_[_0x0954('0x41')](_0x3b7510[_0x0954('0x40')]);_0x59bf59[_0x0954('0x42')]=_['intersection'](_0x59bf59[_0x0954('0x43')],_0x59bf59[_0x0954('0x40')]);_0x26a614[_0x0954('0x44')]=_[_0x0954('0x45')](_0x59bf59['model'],qs[_0x0954('0x46')](_0x3b7510['query'][_0x0954('0x46')]));_0x26a614['attributes']=_0x26a614['attributes']['length']?_0x26a614['attributes']:_0x59bf59[_0x0954('0x43')];if(!_0x3b7510[_0x0954('0x40')]['hasOwnProperty'](_0x0954('0x47'))){_0x26a614['limit']=qs[_0x0954('0x2d')](_0x3b7510[_0x0954('0x40')][_0x0954('0x2d')]);_0x26a614[_0x0954('0x2b')]=qs['offset'](_0x3b7510['query'][_0x0954('0x2b')]);}_0x26a614[_0x0954('0x48')]=qs[_0x0954('0x49')](_0x3b7510[_0x0954('0x40')]['sort']);_0x26a614[_0x0954('0x4a')]=qs[_0x0954('0x42')](_[_0x0954('0x4b')](_0x3b7510[_0x0954('0x40')],_0x59bf59['filters']),_0x16b658);if(_0x3b7510['query'][_0x0954('0x4c')]){_0x26a614[_0x0954('0x4a')]=_[_0x0954('0x4d')](_0x26a614[_0x0954('0x4a')],{'$or':_['map'](_0x16b658,function(_0x552608){if(_0x552608[_0x0954('0x3e')]!==_0x0954('0x4e')){var _0x2c68da={};_0x2c68da[_0x552608[_0x0954('0x37')]]={'$like':'%'+_0x3b7510[_0x0954('0x40')][_0x0954('0x4c')]+'%'};return _0x2c68da;}})});}_0x26a614=_[_0x0954('0x4d')]({},_0x26a614,_0x3b7510[_0x0954('0x4f')]);var _0x3dc53c={'where':_0x26a614[_0x0954('0x4a')]};return db[_0x0954('0x3b')][_0x0954('0x2e')](_0x3dc53c)[_0x0954('0x33')](function(_0x458e67){_0x3d0842[_0x0954('0x2e')]=_0x458e67;if(_0x3b7510[_0x0954('0x40')][_0x0954('0x50')]){_0x26a614[_0x0954('0x51')]=[{'all':!![]}];}return db['VoiceContext'][_0x0954('0x52')](_0x26a614);})[_0x0954('0x33')](function(_0x3fa59a){_0x3d0842[_0x0954('0x53')]=_0x3fa59a;return _0x3d0842;})[_0x0954('0x33')](respondWithFilteredResult(_0x23e6ba,_0x26a614))['catch'](handleError(_0x23e6ba,null));};exports['show']=function(_0xaedc68,_0x398aca){var _0x512cc7={'raw':![],'where':{'id':_0xaedc68[_0x0954('0x54')]['id']}},_0x2fc377={};_0x2fc377[_0x0954('0x43')]=_[_0x0954('0x41')](db[_0x0954('0x3b')][_0x0954('0x3c')]);_0x2fc377['query']=_[_0x0954('0x41')](_0xaedc68[_0x0954('0x40')]);_0x2fc377[_0x0954('0x42')]=_[_0x0954('0x45')](_0x2fc377[_0x0954('0x43')],_0x2fc377[_0x0954('0x40')]);_0x512cc7[_0x0954('0x44')]=_[_0x0954('0x45')](_0x2fc377['model'],qs[_0x0954('0x46')](_0xaedc68[_0x0954('0x40')][_0x0954('0x46')]));_0x512cc7[_0x0954('0x44')]=_0x512cc7[_0x0954('0x44')]['length']?_0x512cc7[_0x0954('0x44')]:_0x2fc377['model'];if(_0xaedc68[_0x0954('0x40')][_0x0954('0x50')]){_0x512cc7['include']=[{'all':!![]}];}_0x512cc7=_[_0x0954('0x4d')]({},_0x512cc7,_0xaedc68[_0x0954('0x4f')]);return db[_0x0954('0x3b')][_0x0954('0x55')](_0x512cc7)[_0x0954('0x33')](handleEntityNotFound(_0x398aca,null))[_0x0954('0x33')](respondWithResult(_0x398aca,null))[_0x0954('0x26')](handleError(_0x398aca,null));};exports['create']=function(_0x1643cf,_0x278c8b,_0x25c523){var _0x46bf69;return db['VoiceContext'][_0x0954('0x56')](_0x1643cf[_0x0954('0x57')],{'raw':!![]})['then'](function(_0x1ecfd5){_0x46bf69=_0x1ecfd5;return db[_0x0954('0x3b')][_0x0954('0x52')]({'raw':!![]});})[_0x0954('0x33')](function(_0x467559){var _0x2c4c13=fs[_0x0954('0x58')](path[_0x0954('0x59')](config['root'],_0x0954('0x5a')),_0x0954('0x5b'));var _0x2a7d3f=ejs[_0x0954('0x5c')](_0x2c4c13,{'contexts':_0x467559||[]});fs[_0x0954('0x5d')](_0x0954('0x5e'),_0x2a7d3f);})['then'](function(){return respondWithRpcPromise('Reload',_0x0954('0x56'),{'module':_0x0954('0x5f')});})[_0x0954('0x33')](function(){var _0x21fcdd=_0x1643cf[_0x0954('0x60')][_0x0954('0x61')]({'plain':!![]});if(!_0x21fcdd)throw new Error(_0x0954('0x62'));if(_0x21fcdd[_0x0954('0x63')]===_0x0954('0x60')){var _0x1e2042=_0x46bf69[_0x0954('0x61')]({'plain':!![]});return db[_0x0954('0x64')][_0x0954('0x55')]({'where':{'name':_0x0954('0x35'),'userProfileId':_0x21fcdd['userProfileId']},'raw':!![]})[_0x0954('0x33')](function(_0x11d037){if(_0x11d037&&_0x11d037[_0x0954('0x65')]===0x0){return db[_0x0954('0x36')]['create']({'name':_0x1e2042[_0x0954('0x37')],'resourceId':_0x1e2042['id'],'type':_0x11d037[_0x0954('0x37')],'sectionId':_0x11d037['id']},{})[_0x0954('0x33')](function(){return _0x46bf69;});}else{return _0x46bf69;}})['catch'](function(_0x30e4da){logger[_0x0954('0x23')](_0x0954('0x66'),_0x30e4da);throw _0x30e4da;});}return _0x46bf69;})[_0x0954('0x33')](respondWithResult(_0x278c8b,0xc9))[_0x0954('0x26')](handleError(_0x278c8b,null));};exports[_0x0954('0x32')]=function(_0xc81670,_0x3714f2,_0x25b73d){var _0x448137;return db['VoiceContext'][_0x0954('0x55')]({'where':{'id':_0xc81670[_0x0954('0x54')]['id']}})[_0x0954('0x33')](handleEntityNotFound(_0x3714f2,null))['then'](saveUpdates(_0xc81670[_0x0954('0x57')],null))[_0x0954('0x33')](function(_0x4ae155){if(_0x4ae155){_0x448137=_0x4ae155;return db[_0x0954('0x3b')][_0x0954('0x52')]({'raw':!![]});}})[_0x0954('0x33')](function(_0x3f2ddf){var _0x2e071c=fs[_0x0954('0x58')](path[_0x0954('0x59')](config['root'],'server/files/templates/context.ejs'),_0x0954('0x5b'));var _0x455a2e=ejs[_0x0954('0x5c')](_0x2e071c,{'contexts':_0x3f2ddf||[]});fs['writeFileSync'](_0x0954('0x5e'),_0x455a2e);})[_0x0954('0x33')](function(){return respondWithRpcPromise(_0x0954('0x67'),_0x0954('0x32'),{'module':_0x0954('0x5f')});})['then'](function(){return _0x448137;})['then'](respondWithResult(_0x3714f2,null))[_0x0954('0x26')](handleError(_0x3714f2,null));};exports[_0x0954('0x34')]=function(_0x3ef85d,_0x2de9b1,_0x143a53){var _0x22b6d9;return db['VoiceContext'][_0x0954('0x55')]({'where':{'id':_0x3ef85d[_0x0954('0x54')]['id']}})[_0x0954('0x33')](handleEntityNotFound(_0x2de9b1,null))['then'](removeEntity(_0x2de9b1,null))['then'](function(){return db[_0x0954('0x3b')]['findAll']({'raw':!![]});})[_0x0954('0x33')](function(_0x1ab994){var _0x2ac709=fs[_0x0954('0x58')](path[_0x0954('0x59')](config['root'],_0x0954('0x5a')),_0x0954('0x5b'));var _0x5e2613=ejs[_0x0954('0x5c')](_0x2ac709,{'contexts':_0x1ab994});fs[_0x0954('0x5d')](_0x0954('0x5e'),_0x5e2613);return respondWithRpcPromise('Reload','destroy',{'module':_0x0954('0x5f')});})[_0x0954('0x26')](handleError(_0x2de9b1,null));};
\ No newline at end of file
index 5851126..e2b4949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f94=['define','VoiceContext','voice_contexts','util','api','moment','bluebird','request-promise','./voiceContext.attributes','exports'];(function(_0x1371ca,_0x431523){var _0x586888=function(_0x365ee7){while(--_0x365ee7){_0x1371ca['push'](_0x1371ca['shift']());}};_0x586888(++_0x431523);}(_0x3f94,0x11b));var _0x43f9=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x3f94[_0x59d89e];return _0x554e93;};'use strict';var _=require('lodash');var util=require(_0x43f9('0x0'));var logger=require('../../config/logger')(_0x43f9('0x1'));var moment=require(_0x43f9('0x2'));var BPromise=require(_0x43f9('0x3'));var rp=require(_0x43f9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x43f9('0x5'));module[_0x43f9('0x6')]=function(_0x15cb08,_0x29a597){return _0x15cb08[_0x43f9('0x7')](_0x43f9('0x8'),attributes,{'tableName':_0x43f9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7b8=['define','VoiceContext','voice_contexts','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./voiceContext.attributes','exports'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0xd7b8,0x18f));var _0x8d7b=function(_0x4f9919,_0x235607){_0x4f9919=_0x4f9919-0x0;var _0x10771e=_0xd7b8[_0x4f9919];return _0x10771e;};'use strict';var _=require(_0x8d7b('0x0'));var util=require('util');var logger=require(_0x8d7b('0x1'))(_0x8d7b('0x2'));var moment=require(_0x8d7b('0x3'));var BPromise=require(_0x8d7b('0x4'));var rp=require(_0x8d7b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8d7b('0x6'));var config=require('../../config/environment');var attributes=require(_0x8d7b('0x7'));module[_0x8d7b('0x8')]=function(_0x51d2d4,_0x1c3e00){return _0x51d2d4[_0x8d7b('0x9')](_0x8d7b('0xa'),attributes,{'tableName':_0x8d7b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ac5b6c..11987f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b37=['randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','bluebird'];(function(_0x57171b,_0xfe67c6){var _0x33a2c8=function(_0x31e60d){while(--_0x31e60d){_0x57171b['push'](_0x57171b['shift']());}};_0x33a2c8(++_0xfe67c6);}(_0x7b37,0xd9));var _0x77b3=function(_0x361cc0,_0x40ea36){_0x361cc0=_0x361cc0-0x0;var _0x1bf3cd=_0x7b37[_0x361cc0];return _0x1bf3cd;};'use strict';var _=require(_0x77b3('0x0'));var util=require(_0x77b3('0x1'));var moment=require('moment');var BPromise=require(_0x77b3('0x2'));var rs=require(_0x77b3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77b3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x77b3('0x5'))(_0x77b3('0x6'));var config=require(_0x77b3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x77b3('0x8')][_0x77b3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x515f06,_0x49aded,_0x2f896b){return new BPromise(function(_0x5b3fb4,_0x35becb){return client[_0x77b3('0xa')](_0x515f06,_0x2f896b)['then'](function(_0x46dc45){logger[_0x77b3('0xb')](_0x77b3('0xc'),_0x49aded,_0x77b3('0xd'));logger[_0x77b3('0xe')](_0x77b3('0xf'),_0x49aded,_0x77b3('0xd'),JSON[_0x77b3('0x10')](_0x46dc45));if(_0x46dc45[_0x77b3('0x11')]){if(_0x46dc45[_0x77b3('0x11')]['code']===0x1f4){logger[_0x77b3('0x11')](_0x77b3('0xc'),_0x49aded,_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);return _0x35becb(_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);}logger[_0x77b3('0x11')](_0x77b3('0xc'),_0x49aded,_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);return _0x5b3fb4(_0x46dc45[_0x77b3('0x11')][_0x77b3('0x12')]);}else{logger['info'](_0x77b3('0xc'),_0x49aded,_0x77b3('0xd'));_0x5b3fb4(_0x46dc45[_0x77b3('0x13')][_0x77b3('0x12')]);}})['catch'](function(_0x224303){logger['error']('VoiceContext,\x20%s,\x20%s',_0x49aded,_0x224303);_0x35becb(_0x224303);});});}
\ No newline at end of file
+var _0x62c0=['request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b22e8,_0x33c7b5){var _0x113413=function(_0x4df70b){while(--_0x4df70b){_0x3b22e8['push'](_0x3b22e8['shift']());}};_0x113413(++_0x33c7b5);}(_0x62c0,0xdb));var _0x062c=function(_0x2becba,_0x4ea656){_0x2becba=_0x2becba-0x0;var _0x90b5dd=_0x62c0[_0x2becba];return _0x90b5dd;};'use strict';var _=require(_0x062c('0x0'));var util=require(_0x062c('0x1'));var moment=require(_0x062c('0x2'));var BPromise=require(_0x062c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x062c('0x4'));var logger=require('../../config/logger')(_0x062c('0x5'));var config=require(_0x062c('0x6'));var jayson=require(_0x062c('0x7'));var client=jayson['client'][_0x062c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x16ef08,_0x5885a6,_0x398f50){return new BPromise(function(_0x47c929,_0x15312a){return client[_0x062c('0x9')](_0x16ef08,_0x398f50)[_0x062c('0xa')](function(_0x3dfecd){logger[_0x062c('0xb')](_0x062c('0xc'),_0x5885a6,_0x062c('0xd'));logger['debug'](_0x062c('0xe'),_0x5885a6,_0x062c('0xd'),JSON[_0x062c('0xf')](_0x3dfecd));if(_0x3dfecd[_0x062c('0x10')]){if(_0x3dfecd['error']['code']===0x1f4){logger[_0x062c('0x10')](_0x062c('0xc'),_0x5885a6,_0x3dfecd[_0x062c('0x10')]['message']);return _0x15312a(_0x3dfecd[_0x062c('0x10')]['message']);}logger[_0x062c('0x10')](_0x062c('0xc'),_0x5885a6,_0x3dfecd[_0x062c('0x10')][_0x062c('0x11')]);return _0x47c929(_0x3dfecd[_0x062c('0x10')][_0x062c('0x11')]);}else{logger['info'](_0x062c('0xc'),_0x5885a6,_0x062c('0xd'));_0x47c929(_0x3dfecd['result']['message']);}})[_0x062c('0x12')](function(_0x778fb3){logger[_0x062c('0x10')](_0x062c('0xc'),_0x5885a6,_0x778fb3);_0x15312a(_0x778fb3);});});}
\ No newline at end of file
index 4816a4b..1526d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x160f=['../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','/:id','post','create','update','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4ded65,_0xc8d7c1){var _0x5864fb=function(_0x40df9d){while(--_0x40df9d){_0x4ded65['push'](_0x4ded65['shift']());}};_0x5864fb(++_0xc8d7c1);}(_0x160f,0x8a));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf160('0x0'));var util=require(_0xf160('0x1'));var path=require('path');var timeout=require(_0xf160('0x2'));var express=require(_0xf160('0x3'));var router=express[_0xf160('0x4')]();var fs_extra=require(_0xf160('0x5'));var auth=require(_0xf160('0x6'));var interaction=require(_0xf160('0x7'));var config=require('../../config/environment');var controller=require('./voiceDialReport.controller');router['get']('/',auth[_0xf160('0x8')](),controller[_0xf160('0x9')]);router[_0xf160('0xa')](_0xf160('0xb'),auth[_0xf160('0x8')](),controller[_0xf160('0xc')]);router[_0xf160('0xa')](_0xf160('0xd'),auth[_0xf160('0x8')](),controller['show']);router[_0xf160('0xe')]('/',auth['isAuthenticated'](),controller[_0xf160('0xf')]);router['put'](_0xf160('0xd'),auth[_0xf160('0x8')](),controller[_0xf160('0x10')]);router['delete'](_0xf160('0xd'),auth[_0xf160('0x8')](),controller['destroy']);module[_0xf160('0x11')]=router;
\ No newline at end of file
+var _0x3189=['/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','./voiceDialReport.controller','get','index','isAuthenticated','describe','show','post'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x3189,0xae));var _0x9318=function(_0xd07a7c,_0x336f87){_0xd07a7c=_0xd07a7c-0x0;var _0x397c71=_0x3189[_0xd07a7c];return _0x397c71;};'use strict';var multer=require(_0x9318('0x0'));var util=require(_0x9318('0x1'));var path=require('path');var timeout=require(_0x9318('0x2'));var express=require(_0x9318('0x3'));var router=express[_0x9318('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9318('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9318('0x6'));router[_0x9318('0x7')]('/',auth['isAuthenticated'](),controller[_0x9318('0x8')]);router['get']('/describe',auth[_0x9318('0x9')](),controller[_0x9318('0xa')]);router[_0x9318('0x7')]('/:id',auth[_0x9318('0x9')](),controller[_0x9318('0xb')]);router[_0x9318('0xc')]('/',auth[_0x9318('0x9')](),controller['create']);router['put'](_0x9318('0xd'),auth['isAuthenticated'](),controller[_0x9318('0xe')]);router[_0x9318('0xf')](_0x9318('0xd'),auth['isAuthenticated'](),controller[_0x9318('0x10')]);module['exports']=router;
\ No newline at end of file
index b4b64e5..706bb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x3b7cc9,_0x18cd9b){var _0x5751ea=function(_0x141c47){while(--_0x141c47){_0x3b7cc9['push'](_0x3b7cc9['shift']());}};_0x5751ea(++_0x18cd9b);}(_0xb821,0xa7));var _0x1b82=function(_0x484942,_0xf8b822){_0x484942=_0x484942-0x0;var _0x4fca8f=_0xb821[_0x484942];return _0x4fca8f;};'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
+var _0x00bb=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x59b4f6,_0x3f7afa){var _0x2ff816=function(_0x50db1a){while(--_0x50db1a){_0x59b4f6['push'](_0x59b4f6['shift']());}};_0x2ff816(++_0x3f7afa);}(_0x00bb,0x1d8));var _0xb00b=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x00bb[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'privilege':{'type':Sequelize[_0xb00b('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xb00b('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb00b('0x2')]},'calleridname':{'type':Sequelize[_0xb00b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'language':{'type':Sequelize[_0xb00b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb00b('0x3')]},'uniqueid':{'type':Sequelize[_0xb00b('0x2')]},'linkedid':{'type':Sequelize[_0xb00b('0x2')]},'destchannel':{'type':Sequelize[_0xb00b('0x2')]},'destchannelstate':{'type':Sequelize[_0xb00b('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xb00b('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xb00b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'destlanguage':{'type':Sequelize[_0xb00b('0x2')]},'destaccountcode':{'type':Sequelize[_0xb00b('0x2')]},'destcontext':{'type':Sequelize[_0xb00b('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb00b('0x3')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0xb00b('0x2')]},'starttime':{'type':Sequelize[_0xb00b('0x4')]},'answertime':{'type':Sequelize[_0xb00b('0x4')]},'endtime':{'type':Sequelize[_0xb00b('0x4')]},'lastevent':{'type':Sequelize[_0xb00b('0x2')],'comment':_0xb00b('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xb00b('0x3')]},'holdtime':{'type':Sequelize[_0xb00b('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index aa8a2af..467ad14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96b2=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','end','sendStatus','error','stack','name','map','VoiceDialReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','rawAttributes','length','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','bluebird','util','sox','to-csv','ejs','fs-extra','crypto','jsforce'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x96b2,0x11d));var _0x296b=function(_0x3314ec,_0x8232ee){_0x3314ec=_0x3314ec-0x0;var _0x2e8d86=_0x96b2[_0x3314ec];return _0x2e8d86;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x296b('0x0'));var zipdir=require(_0x296b('0x1'));var jsonpatch=require(_0x296b('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x296b('0x3'));var Mustache=require('mustache');var util=require(_0x296b('0x4'));var path=require('path');var sox=require(_0x296b('0x5'));var csv=require(_0x296b('0x6'));var ejs=require(_0x296b('0x7'));var fs=require('fs');var fs_extra=require(_0x296b('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x296b('0x9'));var jsforce=require(_0x296b('0xa'));var deskjs=require(_0x296b('0xb'));var toCsv=require(_0x296b('0x6'));var querystring=require(_0x296b('0xc'));var Papa=require(_0x296b('0xd'));var Redis=require('ioredis');var authService=require(_0x296b('0xe'));var qs=require(_0x296b('0xf'));var as=require(_0x296b('0x10'));var hardwareService=require(_0x296b('0x11'));var logger=require(_0x296b('0x12'))(_0x296b('0x13'));var utils=require(_0x296b('0x14'));var config=require(_0x296b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x296b('0x16'))['db'];function respondWithStatusCode(_0x386bff,_0x1a480c){_0x1a480c=_0x1a480c||0xcc;return function(_0xc5dc3){if(_0xc5dc3){return _0x386bff['sendStatus'](_0x1a480c);}return _0x386bff[_0x296b('0x17')](_0x1a480c)['end']();};}function respondWithResult(_0x47388f,_0x346426){_0x346426=_0x346426||0xc8;return function(_0x35a67e){if(_0x35a67e){return _0x47388f['status'](_0x346426)[_0x296b('0x18')](_0x35a67e);}};}function respondWithFilteredResult(_0x9e4de3,_0x2a9021){return function(_0x9bc2bc){if(_0x9bc2bc){var _0x319637=typeof _0x2a9021[_0x296b('0x19')]===_0x296b('0x1a')&&typeof _0x2a9021[_0x296b('0x1b')]==='undefined';var _0x7eb440=_0x9bc2bc['count'];var _0x2425ef=_0x319637?0x0:_0x2a9021[_0x296b('0x19')];var _0x10f135=_0x319637?_0x9bc2bc['count']:_0x2a9021[_0x296b('0x19')]+_0x2a9021['limit'];var _0x2dd0c6;if(_0x10f135>=_0x7eb440){_0x10f135=_0x7eb440;_0x2dd0c6=0xc8;}else{_0x2dd0c6=0xce;}_0x9e4de3[_0x296b('0x17')](_0x2dd0c6);return _0x9e4de3[_0x296b('0x1c')](_0x296b('0x1d'),_0x2425ef+'-'+_0x10f135+'/'+_0x7eb440)[_0x296b('0x18')](_0x9bc2bc);}return null;};}function patchUpdates(_0x3c24b8){return function(_0x57d9bd){try{jsonpatch[_0x296b('0x1e')](_0x57d9bd,_0x3c24b8,!![]);}catch(_0x49805d){return BPromise['reject'](_0x49805d);}return _0x57d9bd[_0x296b('0x1f')]();};}function saveUpdates(_0x46e0f5,_0x4d4bf9){return function(_0x116448){if(_0x116448){return _0x116448[_0x296b('0x20')](_0x46e0f5)[_0x296b('0x21')](function(_0x32f257){return _0x32f257;});}return null;};}function removeEntity(_0x4d4d7c,_0x4d5723){return function(_0x2068dd){if(_0x2068dd){return _0x2068dd['destroy']()[_0x296b('0x21')](function(){_0x4d4d7c['status'](0xcc)[_0x296b('0x22')]();});}};}function handleEntityNotFound(_0x4f0251,_0x2af6ee){return function(_0x207cc6){if(!_0x207cc6){_0x4f0251[_0x296b('0x23')](0x194);}return _0x207cc6;};}function handleError(_0x4af16f,_0x23973f){_0x23973f=_0x23973f||0x1f4;return function(_0x512357){logger[_0x296b('0x24')](_0x512357[_0x296b('0x25')]);if(_0x512357[_0x296b('0x26')]){delete _0x512357[_0x296b('0x26')];}_0x4af16f[_0x296b('0x17')](_0x23973f)['send'](_0x512357);};}exports['index']=function(_0x53e860,_0x134f50){var _0x1357a3={},_0x4072a1={},_0x3f7fa1={'count':0x0,'rows':[]};var _0x79d25e=_[_0x296b('0x27')](db[_0x296b('0x28')]['rawAttributes'],function(_0x9715c9){return{'name':_0x9715c9[_0x296b('0x29')],'type':_0x9715c9[_0x296b('0x2a')][_0x296b('0x2b')]};});_0x4072a1[_0x296b('0x2c')]=_[_0x296b('0x27')](_0x79d25e,'name');_0x4072a1[_0x296b('0x2d')]=_[_0x296b('0x2e')](_0x53e860[_0x296b('0x2d')]);_0x4072a1[_0x296b('0x2f')]=_[_0x296b('0x30')](_0x4072a1['model'],_0x4072a1[_0x296b('0x2d')]);_0x1357a3[_0x296b('0x31')]=_['intersection'](_0x4072a1['model'],qs['fields'](_0x53e860[_0x296b('0x2d')][_0x296b('0x32')]));_0x1357a3[_0x296b('0x31')]=_0x1357a3[_0x296b('0x31')]['length']?_0x1357a3[_0x296b('0x31')]:_0x4072a1[_0x296b('0x2c')];if(!_0x53e860[_0x296b('0x2d')][_0x296b('0x33')](_0x296b('0x34'))){_0x1357a3[_0x296b('0x1b')]=qs['limit'](_0x53e860[_0x296b('0x2d')][_0x296b('0x1b')]);_0x1357a3[_0x296b('0x19')]=qs['offset'](_0x53e860[_0x296b('0x2d')]['offset']);}_0x1357a3[_0x296b('0x35')]=qs[_0x296b('0x36')](_0x53e860[_0x296b('0x2d')][_0x296b('0x36')]);_0x1357a3[_0x296b('0x37')]=qs[_0x296b('0x2f')](_[_0x296b('0x38')](_0x53e860['query'],_0x4072a1[_0x296b('0x2f')]),_0x79d25e);if(_0x53e860[_0x296b('0x2d')][_0x296b('0x39')]){_0x1357a3[_0x296b('0x37')]=_[_0x296b('0x3a')](_0x1357a3[_0x296b('0x37')],{'$or':_['map'](_0x79d25e,function(_0x4dea11){if(_0x4dea11[_0x296b('0x2a')]!==_0x296b('0x3b')){var _0x4a6e1e={};_0x4a6e1e[_0x4dea11[_0x296b('0x26')]]={'$like':'%'+_0x53e860['query'][_0x296b('0x39')]+'%'};return _0x4a6e1e;}})});}_0x1357a3=_[_0x296b('0x3a')]({},_0x1357a3,_0x53e860[_0x296b('0x3c')]);var _0x28babe={'where':_0x1357a3['where']};return db[_0x296b('0x28')]['count'](_0x28babe)[_0x296b('0x21')](function(_0x521fa7){_0x3f7fa1[_0x296b('0x3d')]=_0x521fa7;if(_0x53e860['query'][_0x296b('0x3e')]){_0x1357a3['include']=[{'all':!![]}];}return db[_0x296b('0x28')][_0x296b('0x3f')](_0x1357a3);})[_0x296b('0x21')](function(_0x52aea5){_0x3f7fa1[_0x296b('0x40')]=_0x52aea5;return _0x3f7fa1;})['then'](respondWithFilteredResult(_0x134f50,_0x1357a3))[_0x296b('0x41')](handleError(_0x134f50,null));};exports[_0x296b('0x42')]=function(_0x6af341,_0x509db7){var _0x191cc7={'raw':!![],'where':{'id':_0x6af341['params']['id']}},_0x78f088={};_0x78f088[_0x296b('0x2c')]=_[_0x296b('0x2e')](db[_0x296b('0x28')][_0x296b('0x43')]);_0x78f088[_0x296b('0x2d')]=_[_0x296b('0x2e')](_0x6af341[_0x296b('0x2d')]);_0x78f088[_0x296b('0x2f')]=_[_0x296b('0x30')](_0x78f088['model'],_0x78f088[_0x296b('0x2d')]);_0x191cc7[_0x296b('0x31')]=_[_0x296b('0x30')](_0x78f088[_0x296b('0x2c')],qs[_0x296b('0x32')](_0x6af341[_0x296b('0x2d')][_0x296b('0x32')]));_0x191cc7[_0x296b('0x31')]=_0x191cc7[_0x296b('0x31')][_0x296b('0x44')]?_0x191cc7[_0x296b('0x31')]:_0x78f088['model'];if(_0x6af341['query']['includeAll']){_0x191cc7['include']=[{'all':!![]}];}_0x191cc7=_[_0x296b('0x3a')]({},_0x191cc7,_0x6af341[_0x296b('0x3c')]);return db[_0x296b('0x28')][_0x296b('0x45')](_0x191cc7)['then'](handleEntityNotFound(_0x509db7,null))['then'](respondWithResult(_0x509db7,null))[_0x296b('0x41')](handleError(_0x509db7,null));};exports[_0x296b('0x46')]=function(_0x206ae4,_0x1f69b7){return db['VoiceDialReport'][_0x296b('0x46')](_0x206ae4[_0x296b('0x47')],{})[_0x296b('0x21')](respondWithResult(_0x1f69b7,0xc9))[_0x296b('0x41')](handleError(_0x1f69b7,null));};exports[_0x296b('0x20')]=function(_0x342e35,_0x1124cc){if(_0x342e35[_0x296b('0x47')]['id']){delete _0x342e35['body']['id'];}return db[_0x296b('0x28')][_0x296b('0x45')]({'where':{'id':_0x342e35[_0x296b('0x48')]['id']}})[_0x296b('0x21')](handleEntityNotFound(_0x1124cc,null))[_0x296b('0x21')](saveUpdates(_0x342e35[_0x296b('0x47')],null))[_0x296b('0x21')](respondWithResult(_0x1124cc,null))[_0x296b('0x41')](handleError(_0x1124cc,null));};exports['destroy']=function(_0x206ff4,_0x10cba1){return db[_0x296b('0x28')]['find']({'where':{'id':_0x206ff4[_0x296b('0x48')]['id']}})['then'](handleEntityNotFound(_0x10cba1,null))[_0x296b('0x21')](removeEntity(_0x10cba1,null))[_0x296b('0x41')](handleError(_0x10cba1,null));};exports[_0x296b('0x49')]=function(_0x826a96,_0x8d1bc8){return db[_0x296b('0x28')][_0x296b('0x49')]()['then'](respondWithResult(_0x8d1bc8,null))[_0x296b('0x41')](handleError(_0x8d1bc8,null));};
\ No newline at end of file
+var _0x67b9=['create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','VoiceDialReport','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','findAll','catch','show','params','rawAttributes','includeAll','include'];(function(_0x324716,_0x43ca88){var _0xba05fd=function(_0x23fc98){while(--_0x23fc98){_0x324716['push'](_0x324716['shift']());}};_0xba05fd(++_0x43ca88);}(_0x67b9,0x128));var _0x967b=function(_0x320f5e,_0x3ae930){_0x320f5e=_0x320f5e-0x0;var _0x23e511=_0x67b9[_0x320f5e];return _0x23e511;};'use strict';var emlformat=require(_0x967b('0x0'));var rimraf=require(_0x967b('0x1'));var zipdir=require(_0x967b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x967b('0x3'));var moment=require(_0x967b('0x4'));var BPromise=require(_0x967b('0x5'));var Mustache=require(_0x967b('0x6'));var util=require('util');var path=require(_0x967b('0x7'));var sox=require(_0x967b('0x8'));var csv=require(_0x967b('0x9'));var ejs=require(_0x967b('0xa'));var fs=require('fs');var fs_extra=require(_0x967b('0xb'));var _=require('lodash');var squel=require(_0x967b('0xc'));var crypto=require(_0x967b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x967b('0xe'));var toCsv=require(_0x967b('0x9'));var querystring=require(_0x967b('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x967b('0x10'));var qs=require(_0x967b('0x11'));var as=require(_0x967b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x967b('0x13'))('api');var utils=require(_0x967b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x967b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49fe89,_0x2c13c2){_0x2c13c2=_0x2c13c2||0xcc;return function(_0x5665cf){if(_0x5665cf){return _0x49fe89[_0x967b('0x16')](_0x2c13c2);}return _0x49fe89['status'](_0x2c13c2)['end']();};}function respondWithResult(_0x1f79e1,_0x9ab7b1){_0x9ab7b1=_0x9ab7b1||0xc8;return function(_0xb678a1){if(_0xb678a1){return _0x1f79e1[_0x967b('0x17')](_0x9ab7b1)[_0x967b('0x18')](_0xb678a1);}};}function respondWithFilteredResult(_0x11b401,_0x32f730){return function(_0x272e0d){if(_0x272e0d){var _0x524780=typeof _0x32f730[_0x967b('0x19')]===_0x967b('0x1a')&&typeof _0x32f730[_0x967b('0x1b')]===_0x967b('0x1a');var _0x1b48e7=_0x272e0d[_0x967b('0x1c')];var _0x42b224=_0x524780?0x0:_0x32f730[_0x967b('0x19')];var _0x4e9243=_0x524780?_0x272e0d[_0x967b('0x1c')]:_0x32f730[_0x967b('0x19')]+_0x32f730[_0x967b('0x1b')];var _0x72e916;if(_0x4e9243>=_0x1b48e7){_0x4e9243=_0x1b48e7;_0x72e916=0xc8;}else{_0x72e916=0xce;}_0x11b401[_0x967b('0x17')](_0x72e916);return _0x11b401[_0x967b('0x1d')](_0x967b('0x1e'),_0x42b224+'-'+_0x4e9243+'/'+_0x1b48e7)['json'](_0x272e0d);}return null;};}function patchUpdates(_0x3ae054){return function(_0x5dad33){try{jsonpatch[_0x967b('0x1f')](_0x5dad33,_0x3ae054,!![]);}catch(_0xa4a99d){return BPromise[_0x967b('0x20')](_0xa4a99d);}return _0x5dad33[_0x967b('0x21')]();};}function saveUpdates(_0x28ec5c,_0x17d6fe){return function(_0x3d7c78){if(_0x3d7c78){return _0x3d7c78[_0x967b('0x22')](_0x28ec5c)[_0x967b('0x23')](function(_0x282338){return _0x282338;});}return null;};}function removeEntity(_0x431832,_0x25b97c){return function(_0x45e9e0){if(_0x45e9e0){return _0x45e9e0[_0x967b('0x24')]()[_0x967b('0x23')](function(){_0x431832['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x10e780,_0x5ad8f4){return function(_0x56972d){if(!_0x56972d){_0x10e780[_0x967b('0x16')](0x194);}return _0x56972d;};}function handleError(_0xfc1928,_0x50fdaa){_0x50fdaa=_0x50fdaa||0x1f4;return function(_0x170caa){logger['error'](_0x170caa[_0x967b('0x25')]);if(_0x170caa[_0x967b('0x26')]){delete _0x170caa[_0x967b('0x26')];}_0xfc1928['status'](_0x50fdaa)['send'](_0x170caa);};}exports[_0x967b('0x27')]=function(_0x2e0dda,_0x56e5b3){var _0x1b5452={},_0x7b72d5={},_0x2318aa={'count':0x0,'rows':[]};var _0x5bd9e5=_['map'](db[_0x967b('0x28')]['rawAttributes'],function(_0x34f48d){return{'name':_0x34f48d['fieldName'],'type':_0x34f48d['type'][_0x967b('0x29')]};});_0x7b72d5[_0x967b('0x2a')]=_[_0x967b('0x2b')](_0x5bd9e5,'name');_0x7b72d5[_0x967b('0x2c')]=_[_0x967b('0x2d')](_0x2e0dda[_0x967b('0x2c')]);_0x7b72d5['filters']=_[_0x967b('0x2e')](_0x7b72d5[_0x967b('0x2a')],_0x7b72d5[_0x967b('0x2c')]);_0x1b5452[_0x967b('0x2f')]=_[_0x967b('0x2e')](_0x7b72d5['model'],qs[_0x967b('0x30')](_0x2e0dda['query'][_0x967b('0x30')]));_0x1b5452[_0x967b('0x2f')]=_0x1b5452['attributes'][_0x967b('0x31')]?_0x1b5452[_0x967b('0x2f')]:_0x7b72d5[_0x967b('0x2a')];if(!_0x2e0dda['query'][_0x967b('0x32')](_0x967b('0x33'))){_0x1b5452[_0x967b('0x1b')]=qs['limit'](_0x2e0dda['query']['limit']);_0x1b5452[_0x967b('0x19')]=qs[_0x967b('0x19')](_0x2e0dda[_0x967b('0x2c')][_0x967b('0x19')]);}_0x1b5452[_0x967b('0x34')]=qs[_0x967b('0x35')](_0x2e0dda[_0x967b('0x2c')][_0x967b('0x35')]);_0x1b5452[_0x967b('0x36')]=qs['filters'](_[_0x967b('0x37')](_0x2e0dda[_0x967b('0x2c')],_0x7b72d5[_0x967b('0x38')]),_0x5bd9e5);if(_0x2e0dda[_0x967b('0x2c')][_0x967b('0x39')]){_0x1b5452[_0x967b('0x36')]=_[_0x967b('0x3a')](_0x1b5452[_0x967b('0x36')],{'$or':_[_0x967b('0x2b')](_0x5bd9e5,function(_0x333dd4){if(_0x333dd4[_0x967b('0x3b')]!==_0x967b('0x3c')){var _0x4707e2={};_0x4707e2[_0x333dd4[_0x967b('0x26')]]={'$like':'%'+_0x2e0dda[_0x967b('0x2c')][_0x967b('0x39')]+'%'};return _0x4707e2;}})});}_0x1b5452=_[_0x967b('0x3a')]({},_0x1b5452,_0x2e0dda[_0x967b('0x3d')]);var _0x5befde={'where':_0x1b5452[_0x967b('0x36')]};return db[_0x967b('0x28')][_0x967b('0x1c')](_0x5befde)[_0x967b('0x23')](function(_0x521825){_0x2318aa[_0x967b('0x1c')]=_0x521825;if(_0x2e0dda[_0x967b('0x2c')]['includeAll']){_0x1b5452['include']=[{'all':!![]}];}return db[_0x967b('0x28')][_0x967b('0x3e')](_0x1b5452);})[_0x967b('0x23')](function(_0x427611){_0x2318aa['rows']=_0x427611;return _0x2318aa;})[_0x967b('0x23')](respondWithFilteredResult(_0x56e5b3,_0x1b5452))[_0x967b('0x3f')](handleError(_0x56e5b3,null));};exports[_0x967b('0x40')]=function(_0x418ed4,_0x3e5a64){var _0xc785e8={'raw':!![],'where':{'id':_0x418ed4[_0x967b('0x41')]['id']}},_0x49e3d2={};_0x49e3d2[_0x967b('0x2a')]=_[_0x967b('0x2d')](db[_0x967b('0x28')][_0x967b('0x42')]);_0x49e3d2['query']=_[_0x967b('0x2d')](_0x418ed4[_0x967b('0x2c')]);_0x49e3d2[_0x967b('0x38')]=_['intersection'](_0x49e3d2['model'],_0x49e3d2[_0x967b('0x2c')]);_0xc785e8[_0x967b('0x2f')]=_[_0x967b('0x2e')](_0x49e3d2[_0x967b('0x2a')],qs[_0x967b('0x30')](_0x418ed4[_0x967b('0x2c')][_0x967b('0x30')]));_0xc785e8[_0x967b('0x2f')]=_0xc785e8[_0x967b('0x2f')][_0x967b('0x31')]?_0xc785e8[_0x967b('0x2f')]:_0x49e3d2[_0x967b('0x2a')];if(_0x418ed4[_0x967b('0x2c')][_0x967b('0x43')]){_0xc785e8[_0x967b('0x44')]=[{'all':!![]}];}_0xc785e8=_[_0x967b('0x3a')]({},_0xc785e8,_0x418ed4[_0x967b('0x3d')]);return db[_0x967b('0x28')]['find'](_0xc785e8)[_0x967b('0x23')](handleEntityNotFound(_0x3e5a64,null))['then'](respondWithResult(_0x3e5a64,null))['catch'](handleError(_0x3e5a64,null));};exports[_0x967b('0x45')]=function(_0xd65b06,_0x422e81){return db[_0x967b('0x28')]['create'](_0xd65b06['body'],{})[_0x967b('0x23')](respondWithResult(_0x422e81,0xc9))[_0x967b('0x3f')](handleError(_0x422e81,null));};exports[_0x967b('0x22')]=function(_0x50a90f,_0x129753){if(_0x50a90f[_0x967b('0x46')]['id']){delete _0x50a90f[_0x967b('0x46')]['id'];}return db[_0x967b('0x28')][_0x967b('0x47')]({'where':{'id':_0x50a90f[_0x967b('0x41')]['id']}})[_0x967b('0x23')](handleEntityNotFound(_0x129753,null))[_0x967b('0x23')](saveUpdates(_0x50a90f['body'],null))['then'](respondWithResult(_0x129753,null))[_0x967b('0x3f')](handleError(_0x129753,null));};exports[_0x967b('0x24')]=function(_0x3fae03,_0x291f85){return db[_0x967b('0x28')][_0x967b('0x47')]({'where':{'id':_0x3fae03[_0x967b('0x41')]['id']}})[_0x967b('0x23')](handleEntityNotFound(_0x291f85,null))[_0x967b('0x23')](removeEntity(_0x291f85,null))[_0x967b('0x3f')](handleError(_0x291f85,null));};exports[_0x967b('0x48')]=function(_0x33a908,_0x5134f6){return db['VoiceDialReport'][_0x967b('0x48')]()[_0x967b('0x23')](respondWithResult(_0x5134f6,null))[_0x967b('0x3f')](handleError(_0x5134f6,null));};
\ No newline at end of file
index 891ca71..1e647cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d23=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','define','uniqueid','util','../../config/logger'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4d23,0x82));var _0x34d2=function(_0x350e7a,_0x4c0340){_0x350e7a=_0x350e7a-0x0;var _0xda77db=_0x4d23[_0x350e7a];return _0xda77db;};'use strict';var _=require('lodash');var util=require(_0x34d2('0x0'));var logger=require(_0x34d2('0x1'))(_0x34d2('0x2'));var moment=require(_0x34d2('0x3'));var BPromise=require(_0x34d2('0x4'));var rp=require(_0x34d2('0x5'));var fs=require('fs');var path=require(_0x34d2('0x6'));var rimraf=require(_0x34d2('0x7'));var config=require(_0x34d2('0x8'));var attributes=require(_0x34d2('0x9'));module['exports']=function(_0x5ed50c,_0xe5bf7){return _0x5ed50c[_0x34d2('0xa')]('VoiceDialReport',attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x34d2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x897d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid'];(function(_0x30a6b7,_0x4560c3){var _0x292095=function(_0x3ac257){while(--_0x3ac257){_0x30a6b7['push'](_0x30a6b7['shift']());}};_0x292095(++_0x4560c3);}(_0x897d,0x80));var _0xd897=function(_0x52437a,_0x73bbc1){_0x52437a=_0x52437a-0x0;var _0x2845bb=_0x897d[_0x52437a];return _0x2845bb;};'use strict';var _=require(_0xd897('0x0'));var util=require(_0xd897('0x1'));var logger=require(_0xd897('0x2'))(_0xd897('0x3'));var moment=require(_0xd897('0x4'));var BPromise=require(_0xd897('0x5'));var rp=require(_0xd897('0x6'));var fs=require('fs');var path=require(_0xd897('0x7'));var rimraf=require(_0xd897('0x8'));var config=require(_0xd897('0x9'));var attributes=require(_0xd897('0xa'));module[_0xd897('0xb')]=function(_0x3e1cc5,_0x386bc2){return _0x3e1cc5[_0xd897('0xc')](_0xd897('0xd'),attributes,{'tableName':_0xd897('0xe'),'paranoid':![],'indexes':[{'fields':[_0xd897('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index cd4b905..91fe5db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7184=['../../config/environment','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','then','UpdateVoiceDialReport','attributes','limit','catch','moment','ioredis','../../mysqldb','../../config/logger'];(function(_0x3ce5bb,_0x591448){var _0x3a6d62=function(_0x3c8441){while(--_0x3c8441){_0x3ce5bb['push'](_0x3ce5bb['shift']());}};_0x3a6d62(++_0x591448);}(_0x7184,0x8d));var _0x4718=function(_0x639430,_0x3c1d15){_0x639430=_0x639430-0x0;var _0x282adb=_0x7184[_0x639430];return _0x282adb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4718('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4718('0x1'));var db=require(_0x4718('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x4718('0x3'))('rpc');var config=require(_0x4718('0x4'));var jayson=require(_0x4718('0x5'));var client=jayson[_0x4718('0x6')][_0x4718('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x33f7ba,_0x5b0304,_0x35bdb5){return new BPromise(function(_0x4675f8,_0x3f773d){return client[_0x4718('0x8')](_0x33f7ba,_0x35bdb5)['then'](function(_0x2d8f5e){logger[_0x4718('0x9')](_0x4718('0xa'),_0x5b0304,_0x4718('0xb'));logger[_0x4718('0xc')](_0x4718('0xd'),_0x5b0304,_0x4718('0xb'),JSON[_0x4718('0xe')](_0x2d8f5e));if(_0x2d8f5e[_0x4718('0xf')]){if(_0x2d8f5e[_0x4718('0xf')][_0x4718('0x10')]===0x1f4){logger[_0x4718('0xf')](_0x4718('0xa'),_0x5b0304,_0x2d8f5e[_0x4718('0xf')]['message']);return _0x3f773d(_0x2d8f5e[_0x4718('0xf')][_0x4718('0x11')]);}logger[_0x4718('0xf')](_0x4718('0xa'),_0x5b0304,_0x2d8f5e[_0x4718('0xf')]['message']);return _0x4675f8(_0x2d8f5e[_0x4718('0xf')][_0x4718('0x11')]);}else{logger['info'](_0x4718('0xa'),_0x5b0304,_0x4718('0xb'));_0x4675f8(_0x2d8f5e['result'][_0x4718('0x11')]);}})['catch'](function(_0x3ce1a9){logger[_0x4718('0xf')](_0x4718('0xa'),_0x5b0304,_0x3ce1a9);_0x3f773d(_0x3ce1a9);});});}exports[_0x4718('0x12')]=function(_0x1017a6){var _0x1c25cd=this;return new Promise(function(_0x1cd9f8,_0x1984ac){return db[_0x4718('0x13')][_0x4718('0x14')](_0x1017a6[_0x4718('0x15')],{'raw':_0x1017a6[_0x4718('0x16')]?_0x1017a6[_0x4718('0x16')][_0x4718('0x17')]===undefined?!![]:![]:!![]})[_0x4718('0x18')](function(_0x11fc9c){logger[_0x4718('0x9')](_0x4718('0x12'),_0x1017a6);logger[_0x4718('0xc')](_0x4718('0x12'),_0x1017a6,JSON[_0x4718('0xe')](_0x11fc9c));_0x1cd9f8(_0x11fc9c);})['catch'](function(_0x1850f4){logger[_0x4718('0xf')]('CreateVoiceDialReport',_0x1850f4[_0x4718('0x11')],_0x1017a6);_0x1984ac(_0x1c25cd['error'](0x1f4,_0x1850f4[_0x4718('0x11')]));});});};exports[_0x4718('0x19')]=function(_0xf4bf21){var _0x52fcb9=this;return new Promise(function(_0x16e295,_0x1de58b){return db['VoiceDialReport']['update'](_0xf4bf21[_0x4718('0x15')],{'raw':_0xf4bf21[_0x4718('0x16')]?_0xf4bf21[_0x4718('0x16')][_0x4718('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf4bf21[_0x4718('0x16')]?_0xf4bf21[_0x4718('0x16')]['where']||null:null,'attributes':_0xf4bf21[_0x4718('0x16')]?_0xf4bf21['options'][_0x4718('0x1a')]||null:null,'limit':_0xf4bf21[_0x4718('0x16')]?_0xf4bf21['options'][_0x4718('0x1b')]||null:null})[_0x4718('0x18')](function(_0x45058f){logger[_0x4718('0x9')](_0x4718('0x19'),_0xf4bf21);logger['debug'](_0x4718('0x19'),_0xf4bf21,JSON[_0x4718('0xe')](_0x45058f));_0x16e295(_0x45058f);})[_0x4718('0x1c')](function(_0x577f86){logger[_0x4718('0xf')](_0x4718('0x19'),_0x577f86[_0x4718('0x11')],_0xf4bf21);_0x1de58b(_0x52fcb9['error'](0x1f4,_0x577f86[_0x4718('0x11')]));});});};
\ No newline at end of file
+var _0x875c=['create','body','options','raw','update','where','attributes','limit','UpdateVoiceDialReport','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport'];(function(_0x51ca76,_0x363193){var _0x23226f=function(_0x516bd6){while(--_0x516bd6){_0x51ca76['push'](_0x51ca76['shift']());}};_0x23226f(++_0x363193);}(_0x875c,0x153));var _0xc875=function(_0x261abe,_0x1d673a){_0x261abe=_0x261abe-0x0;var _0x492336=_0x875c[_0x261abe];return _0x492336;};'use strict';var _=require('lodash');var util=require(_0xc875('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc875('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc875('0x2'))['db'];var utils=require(_0xc875('0x3'));var logger=require(_0xc875('0x4'))(_0xc875('0x5'));var config=require(_0xc875('0x6'));var jayson=require(_0xc875('0x7'));var client=jayson[_0xc875('0x8')][_0xc875('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c6309,_0x480695,_0x24fab9){return new BPromise(function(_0x5cd213,_0x2d6f50){return client['request'](_0x4c6309,_0x24fab9)[_0xc875('0xa')](function(_0x4c4a79){logger[_0xc875('0xb')](_0xc875('0xc'),_0x480695,'request\x20sent');logger[_0xc875('0xd')](_0xc875('0xe'),_0x480695,_0xc875('0xf'),JSON[_0xc875('0x10')](_0x4c4a79));if(_0x4c4a79[_0xc875('0x11')]){if(_0x4c4a79[_0xc875('0x11')][_0xc875('0x12')]===0x1f4){logger[_0xc875('0x11')](_0xc875('0xc'),_0x480695,_0x4c4a79[_0xc875('0x11')][_0xc875('0x13')]);return _0x2d6f50(_0x4c4a79[_0xc875('0x11')][_0xc875('0x13')]);}logger[_0xc875('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x480695,_0x4c4a79['error'][_0xc875('0x13')]);return _0x5cd213(_0x4c4a79[_0xc875('0x11')][_0xc875('0x13')]);}else{logger['info'](_0xc875('0xc'),_0x480695,_0xc875('0xf'));_0x5cd213(_0x4c4a79[_0xc875('0x14')][_0xc875('0x13')]);}})[_0xc875('0x15')](function(_0x1e73e0){logger[_0xc875('0x11')](_0xc875('0xc'),_0x480695,_0x1e73e0);_0x2d6f50(_0x1e73e0);});});}exports[_0xc875('0x16')]=function(_0x1c6347){var _0x54dd4d=this;return new Promise(function(_0x4d82b4,_0x79a45c){return db[_0xc875('0x17')][_0xc875('0x18')](_0x1c6347[_0xc875('0x19')],{'raw':_0x1c6347[_0xc875('0x1a')]?_0x1c6347['options'][_0xc875('0x1b')]===undefined?!![]:![]:!![]})[_0xc875('0xa')](function(_0x4bca1b){logger[_0xc875('0xb')](_0xc875('0x16'),_0x1c6347);logger['debug'](_0xc875('0x16'),_0x1c6347,JSON[_0xc875('0x10')](_0x4bca1b));_0x4d82b4(_0x4bca1b);})[_0xc875('0x15')](function(_0x5d3a5c){logger['error'](_0xc875('0x16'),_0x5d3a5c['message'],_0x1c6347);_0x79a45c(_0x54dd4d[_0xc875('0x11')](0x1f4,_0x5d3a5c['message']));});});};exports['UpdateVoiceDialReport']=function(_0x49edd3){var _0xddd438=this;return new Promise(function(_0x59785a,_0x45efdf){return db[_0xc875('0x17')][_0xc875('0x1c')](_0x49edd3[_0xc875('0x19')],{'raw':_0x49edd3[_0xc875('0x1a')]?_0x49edd3[_0xc875('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x49edd3[_0xc875('0x1a')]?_0x49edd3[_0xc875('0x1a')][_0xc875('0x1d')]||null:null,'attributes':_0x49edd3['options']?_0x49edd3[_0xc875('0x1a')][_0xc875('0x1e')]||null:null,'limit':_0x49edd3['options']?_0x49edd3['options'][_0xc875('0x1f')]||null:null})[_0xc875('0xa')](function(_0x37c1ef){logger[_0xc875('0xb')](_0xc875('0x20'),_0x49edd3);logger[_0xc875('0xd')]('UpdateVoiceDialReport',_0x49edd3,JSON[_0xc875('0x10')](_0x37c1ef));_0x59785a(_0x37c1ef);})['catch'](function(_0x1b809d){logger['error'](_0xc875('0x20'),_0x1b809d[_0xc875('0x13')],_0x49edd3);_0x45efdf(_0xddd438[_0xc875('0x11')](0x1f4,_0x1b809d['message']));});});};
\ No newline at end of file
index 696663b..d7a40eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc01=['../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','addApplications','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xbc01,0x8b));var _0x1bc0=function(_0x39c8a6,_0x55b6fc){_0x39c8a6=_0x39c8a6-0x0;var _0x532441=_0xbc01[_0x39c8a6];return _0x532441;};'use strict';var multer=require(_0x1bc0('0x0'));var util=require(_0x1bc0('0x1'));var path=require(_0x1bc0('0x2'));var timeout=require(_0x1bc0('0x3'));var express=require(_0x1bc0('0x4'));var router=express[_0x1bc0('0x5')]();var fs_extra=require(_0x1bc0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1bc0('0x7'));var config=require(_0x1bc0('0x8'));var controller=require(_0x1bc0('0x9'));router[_0x1bc0('0xa')]('/',auth[_0x1bc0('0xb')](),controller[_0x1bc0('0xc')]);router[_0x1bc0('0xa')](_0x1bc0('0xd'),auth['isAuthenticated'](),controller[_0x1bc0('0xe')]);router[_0x1bc0('0xf')]('/',auth[_0x1bc0('0xb')](),controller['create']);router[_0x1bc0('0xf')]('/:id/applications',auth['isAuthenticated'](),controller[_0x1bc0('0x10')]);router['put'](_0x1bc0('0xd'),auth[_0x1bc0('0xb')](),controller[_0x1bc0('0x11')]);router[_0x1bc0('0x12')](_0x1bc0('0xd'),auth[_0x1bc0('0xb')](),controller[_0x1bc0('0x13')]);module[_0x1bc0('0x14')]=router;
\ No newline at end of file
+var _0x4670=['get','isAuthenticated','index','/:id','show','post','/:id/applications','addApplications','put','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/interaction/service','./voiceExtension.controller'];(function(_0x32cf96,_0x7502d5){var _0x125cc1=function(_0x376987){while(--_0x376987){_0x32cf96['push'](_0x32cf96['shift']());}};_0x125cc1(++_0x7502d5);}(_0x4670,0x1d4));var _0x0467=function(_0x1f2019,_0x338db8){_0x1f2019=_0x1f2019-0x0;var _0x21e776=_0x4670[_0x1f2019];return _0x21e776;};'use strict';var multer=require(_0x0467('0x0'));var util=require(_0x0467('0x1'));var path=require(_0x0467('0x2'));var timeout=require('connect-timeout');var express=require(_0x0467('0x3'));var router=express['Router']();var fs_extra=require(_0x0467('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0467('0x5'));var config=require('../../config/environment');var controller=require(_0x0467('0x6'));router[_0x0467('0x7')]('/',auth[_0x0467('0x8')](),controller[_0x0467('0x9')]);router['get'](_0x0467('0xa'),auth['isAuthenticated'](),controller[_0x0467('0xb')]);router[_0x0467('0xc')]('/',auth[_0x0467('0x8')](),controller['create']);router[_0x0467('0xc')](_0x0467('0xd'),auth[_0x0467('0x8')](),controller[_0x0467('0xe')]);router[_0x0467('0xf')](_0x0467('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x0467('0x10')](_0x0467('0xa'),auth[_0x0467('0x8')](),controller[_0x0467('0x11')]);module[_0x0467('0x12')]=router;
\ No newline at end of file
index ecd7406..6e2b05e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b2=['any','*,*,*,*','BOOLEAN','INTEGER','wav','getDataValue','exten','sequelize','compositeIndex','STRING','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system'];(function(_0x4ad310,_0x45bb0c){var _0x1ae3d1=function(_0x495ea7){while(--_0x495ea7){_0x4ad310['push'](_0x4ad310['shift']());}};_0x1ae3d1(++_0x45bb0c);}(_0x52b2,0x97));var _0x252b=function(_0xf8af0f,_0x1323e4){_0xf8af0f=_0xf8af0f-0x0;var _0x448d9c=_0x52b2[_0xf8af0f];return _0x448d9c;};'use strict';var Sequelize=require(_0x252b('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x252b('0x1'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x252b('0x1')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x252b('0x1')},'tag':{'type':Sequelize[_0x252b('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x252b('0x3')},'appdata':{'type':Sequelize[_0x252b('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x252b('0x4')](_0x252b('0x5'),_0x252b('0x6'),_0x252b('0x7'),_0x252b('0x8'),_0x252b('0x9'),_0x252b('0xa'),_0x252b('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x252b('0x2')]},'interval':{'type':Sequelize[_0x252b('0x2')],'allowNull':![],'defaultValue':_0x252b('0xc')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x252b('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x252b('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x252b('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x252b('0xe')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x252b('0xf')},'answer':{'type':Sequelize[_0x252b('0xd')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x3780c4){return this[_0x252b('0x10')](_0x252b('0x11'));}},'alias':{'type':Sequelize[_0x252b('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xa482=['outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','ENUM','inbound','outbound','internal','inbound-fax'];(function(_0x220f66,_0x32eb1){var _0x35b738=function(_0x1c9538){while(--_0x1c9538){_0x220f66['push'](_0x220f66['shift']());}};_0x35b738(++_0x32eb1);}(_0xa482,0xee));var _0x2a48=function(_0x19f06e,_0xa6b17f){_0x19f06e=_0x19f06e-0x0;var _0x129ced=_0xa482[_0x19f06e];return _0x129ced;};'use strict';var Sequelize=require(_0x2a48('0x0'));module[_0x2a48('0x1')]={'context':{'type':Sequelize[_0x2a48('0x2')],'allowNull':![],'unique':_0x2a48('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x2a48('0x3')},'priority':{'type':Sequelize[_0x2a48('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x2a48('0x3')},'tag':{'type':Sequelize[_0x2a48('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x2a48('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x2a48('0x4')](_0x2a48('0x5'),_0x2a48('0x6'),_0x2a48('0x7'),_0x2a48('0x8'),_0x2a48('0x9'),_0x2a48('0xa'),_0x2a48('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x2a48('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2a48('0xc')},'IntervalId':{'type':Sequelize[_0x2a48('0xd')]},'isApp':{'type':Sequelize[_0x2a48('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x2a48('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x2a48('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x2a48('0xd')]},'recordingFormat':{'type':Sequelize[_0x2a48('0x2')],'defaultValue':_0x2a48('0xf')},'answer':{'type':Sequelize[_0x2a48('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0x2a48('0x10')],'get':function(_0x8291ec){return this[_0x2a48('0x11')](_0x2a48('0x12'));}},'alias':{'type':Sequelize[_0x2a48('0x2')],'allowNull':!![]}};
\ No newline at end of file
index dd6c23b..ce671a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a59=['to-csv','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','./voiceExtension.socket','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','get','InboundRoutes','inbound','OutboundRoutes','outbound','filter','ignore','map','value','find','type','name','UserProfileResource','end','error','send','index','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','options','VoiceExtension','include','catch','show','rawAttributes','length','includeAll','params','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InternalRoutes','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','recordingFormat','cutdigits','alias','findOne','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','request-promise','mustache','sox'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4a59,0x196));var _0x94a5=function(_0x376a40,_0x4e5eb4){_0x376a40=_0x376a40-0x0;var _0x2a370c=_0x4a59[_0x376a40];return _0x2a370c;};'use strict';var emlformat=require(_0x94a5('0x0'));var rimraf=require(_0x94a5('0x1'));var zipdir=require(_0x94a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x94a5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x94a5('0x4'));var util=require('util');var path=require('path');var sox=require(_0x94a5('0x5'));var csv=require(_0x94a5('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94a5('0x7'));var _=require(_0x94a5('0x8'));var squel=require(_0x94a5('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x94a5('0x6'));var querystring=require(_0x94a5('0xa'));var Papa=require(_0x94a5('0xb'));var Redis=require('ioredis');var authService=require(_0x94a5('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94a5('0xd'));var logger=require(_0x94a5('0xe'))('api');var utils=require(_0x94a5('0xf'));var config=require(_0x94a5('0x10'));var licenseUtil=require(_0x94a5('0x11'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x94a5('0x12')],{'host':_0x94a5('0x13'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x94a5('0x12')]));require(_0x94a5('0x14'))['register'](socket);function respondWithStatusCode(_0x282106,_0x2a60c5){_0x2a60c5=_0x2a60c5||0xcc;return function(_0x4af542){if(_0x4af542){return _0x282106[_0x94a5('0x15')](_0x2a60c5);}return _0x282106[_0x94a5('0x16')](_0x2a60c5)['end']();};}function respondWithResult(_0xd2d121,_0x266279){_0x266279=_0x266279||0xc8;return function(_0x500e75){if(_0x500e75){return _0xd2d121[_0x94a5('0x16')](_0x266279)['json'](_0x500e75);}};}function respondWithFilteredResult(_0x1bcc42,_0xb8da42){return function(_0x5dc90b){if(_0x5dc90b){var _0xa3d7cf=typeof _0xb8da42[_0x94a5('0x17')]===_0x94a5('0x18')&&typeof _0xb8da42[_0x94a5('0x19')]===_0x94a5('0x18');var _0xffcbed=_0x5dc90b[_0x94a5('0x1a')];var _0x4c9bf7=_0xa3d7cf?0x0:_0xb8da42['offset'];var _0x396153=_0xa3d7cf?_0x5dc90b[_0x94a5('0x1a')]:_0xb8da42[_0x94a5('0x17')]+_0xb8da42[_0x94a5('0x19')];var _0x10640b;if(_0x396153>=_0xffcbed){_0x396153=_0xffcbed;_0x10640b=0xc8;}else{_0x10640b=0xce;}_0x1bcc42[_0x94a5('0x16')](_0x10640b);return _0x1bcc42['set'](_0x94a5('0x1b'),_0x4c9bf7+'-'+_0x396153+'/'+_0xffcbed)[_0x94a5('0x1c')](_0x5dc90b);}return null;};}function patchUpdates(_0x2638bc){return function(_0x5c7623){try{jsonpatch[_0x94a5('0x1d')](_0x5c7623,_0x2638bc,!![]);}catch(_0x4c9f67){return BPromise[_0x94a5('0x1e')](_0x4c9f67);}return _0x5c7623[_0x94a5('0x1f')]();};}function saveUpdates(_0x2e8b09,_0x2146fe){return function(_0x54bd15){if(_0x54bd15){return _0x54bd15[_0x94a5('0x20')](_0x2e8b09)[_0x94a5('0x21')](function(_0x2526da){return _0x2526da;});}return null;};}function removeEntity(_0x4ee719,_0x55f79e){return function(_0x9b0f96){if(_0x9b0f96){return _0x9b0f96[_0x94a5('0x22')]()[_0x94a5('0x21')](function(){var _0x4362c4=_0x9b0f96[_0x94a5('0x23')]({'plain':!![]});var _0x183899=[{'name':_0x94a5('0x24'),'value':_0x94a5('0x25'),'ignore':![]},{'name':_0x94a5('0x26'),'value':_0x94a5('0x27'),'ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x21b712=_(_0x183899)[_0x94a5('0x28')](_0x94a5('0x29'))[_0x94a5('0x2a')]('value')[_0x94a5('0x2b')]();if(_['includes'](_0x21b712,_0x4362c4['type'])){return;}var _0x9b4f31=_[_0x94a5('0x2c')](_0x183899,[_0x94a5('0x2b'),_0x4362c4[_0x94a5('0x2d')]])[_0x94a5('0x2e')];return db[_0x94a5('0x2f')][_0x94a5('0x22')]({'where':{'type':_0x9b4f31,'resourceId':_0x4362c4['id']}})['then'](function(){return _0x9b0f96;});})[_0x94a5('0x21')](function(){_0x4ee719[_0x94a5('0x16')](0xcc)[_0x94a5('0x30')]();});}};}function handleEntityNotFound(_0x49b435,_0x5c5136){return function(_0x4202ca){if(!_0x4202ca){_0x49b435[_0x94a5('0x15')](0x194);}return _0x4202ca;};}function handleError(_0x242741,_0x1d0541){_0x1d0541=_0x1d0541||0x1f4;return function(_0x4d2251){logger[_0x94a5('0x31')](_0x4d2251['stack']);if(_0x4d2251[_0x94a5('0x2e')]){delete _0x4d2251['name'];}_0x242741['status'](_0x1d0541)[_0x94a5('0x32')](_0x4d2251);};}exports[_0x94a5('0x33')]=function(_0xa6e94c,_0xe1be22){var _0x35e6f7={},_0x247302={},_0x24a2a7={'count':0x0,'rows':[]};var _0x1a4046=_[_0x94a5('0x2a')](db['VoiceExtension']['rawAttributes'],function(_0x185f5f){return{'name':_0x185f5f[_0x94a5('0x34')],'type':_0x185f5f['type'][_0x94a5('0x35')]};});_0x247302[_0x94a5('0x36')]=_[_0x94a5('0x2a')](_0x1a4046,_0x94a5('0x2e'));_0x247302[_0x94a5('0x37')]=_[_0x94a5('0x38')](_0xa6e94c[_0x94a5('0x37')]);_0x247302[_0x94a5('0x39')]=_[_0x94a5('0x3a')](_0x247302[_0x94a5('0x36')],_0x247302[_0x94a5('0x37')]);_0x35e6f7['attributes']=_[_0x94a5('0x3a')](_0x247302[_0x94a5('0x36')],qs[_0x94a5('0x3b')](_0xa6e94c[_0x94a5('0x37')]['fields']));_0x35e6f7[_0x94a5('0x3c')]=_0x35e6f7['attributes']['length']?_0x35e6f7[_0x94a5('0x3c')]:_0x247302[_0x94a5('0x36')];if(!_0xa6e94c[_0x94a5('0x37')][_0x94a5('0x3d')](_0x94a5('0x3e'))){_0x35e6f7[_0x94a5('0x19')]=qs[_0x94a5('0x19')](_0xa6e94c[_0x94a5('0x37')]['limit']);_0x35e6f7['offset']=qs[_0x94a5('0x17')](_0xa6e94c[_0x94a5('0x37')][_0x94a5('0x17')]);}_0x35e6f7[_0x94a5('0x3f')]=qs[_0x94a5('0x40')](_0xa6e94c['query']['sort']);_0x35e6f7['where']=qs[_0x94a5('0x39')](_[_0x94a5('0x41')](_0xa6e94c[_0x94a5('0x37')],_0x247302[_0x94a5('0x39')]),_0x1a4046);if(_0xa6e94c['query'][_0x94a5('0x28')]){_0x35e6f7[_0x94a5('0x42')]=_[_0x94a5('0x43')](_0x35e6f7[_0x94a5('0x42')],{'$or':_['map'](_0x1a4046,function(_0x29fc80){if(_0x29fc80[_0x94a5('0x2d')]!==_0x94a5('0x44')){var _0xf616ee={};_0xf616ee[_0x29fc80[_0x94a5('0x2e')]]={'$like':'%'+_0xa6e94c[_0x94a5('0x37')]['filter']+'%'};return _0xf616ee;}})});}_0x35e6f7=_[_0x94a5('0x43')]({},_0x35e6f7,_0xa6e94c[_0x94a5('0x45')]);var _0x508b22={'where':_0x35e6f7[_0x94a5('0x42')]};return db[_0x94a5('0x46')]['count'](_0x508b22)[_0x94a5('0x21')](function(_0x42b1f7){_0x24a2a7[_0x94a5('0x1a')]=_0x42b1f7;if(_0xa6e94c[_0x94a5('0x37')]['includeAll']){_0x35e6f7[_0x94a5('0x47')]=[{'all':!![]}];}return db[_0x94a5('0x46')]['findAll'](_0x35e6f7);})[_0x94a5('0x21')](function(_0x123d85){_0x24a2a7['rows']=_0x123d85;return _0x24a2a7;})[_0x94a5('0x21')](respondWithFilteredResult(_0xe1be22,_0x35e6f7))[_0x94a5('0x48')](handleError(_0xe1be22,null));};exports[_0x94a5('0x49')]=function(_0x41d9a6,_0x47cea4){var _0xec42e3={'raw':![],'where':{'id':_0x41d9a6['params']['id']}},_0x3591b3={};_0x3591b3[_0x94a5('0x36')]=_[_0x94a5('0x38')](db['VoiceExtension'][_0x94a5('0x4a')]);_0x3591b3[_0x94a5('0x37')]=_[_0x94a5('0x38')](_0x41d9a6['query']);_0x3591b3[_0x94a5('0x39')]=_[_0x94a5('0x3a')](_0x3591b3[_0x94a5('0x36')],_0x3591b3[_0x94a5('0x37')]);_0xec42e3[_0x94a5('0x3c')]=_['intersection'](_0x3591b3['model'],qs['fields'](_0x41d9a6[_0x94a5('0x37')][_0x94a5('0x3b')]));_0xec42e3['attributes']=_0xec42e3['attributes'][_0x94a5('0x4b')]?_0xec42e3[_0x94a5('0x3c')]:_0x3591b3['model'];if(_0x41d9a6[_0x94a5('0x37')][_0x94a5('0x4c')]){_0xec42e3['include']=[{'all':!![]}];}_0xec42e3=_['merge']({},_0xec42e3,_0x41d9a6[_0x94a5('0x45')]);return db[_0x94a5('0x46')]['find'](_0xec42e3)['then'](handleEntityNotFound(_0x47cea4,null))[_0x94a5('0x21')](respondWithResult(_0x47cea4,null))['catch'](handleError(_0x47cea4,null));};exports['destroy']=function(_0x3bda54,_0x5589cb){return db[_0x94a5('0x46')]['find']({'where':{'id':_0x3bda54[_0x94a5('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5589cb,null))[_0x94a5('0x21')](removeEntity(_0x5589cb,null))[_0x94a5('0x48')](handleError(_0x5589cb,null));};exports['create']=function(_0x31349f,_0x144ba4){if(_0x31349f[_0x94a5('0x4e')][_0x94a5('0x2d')]===_0x94a5('0x27')&&!_[_0x94a5('0x4f')](_0x31349f[_0x94a5('0x4e')][_0x94a5('0x50')],'_')){_0x31349f['body'][_0x94a5('0x50')]='_'[_0x94a5('0x51')](_0x31349f['body'][_0x94a5('0x50')]);}return db[_0x94a5('0x46')]['create'](_0x31349f['body'],{'raw':![]})[_0x94a5('0x21')](function(_0x543c4b){var _0xa0466d=_0x31349f[_0x94a5('0x52')][_0x94a5('0x23')]({'plain':!![]});if(!_0xa0466d)throw new Error(_0x94a5('0x53'));if(_0xa0466d[_0x94a5('0x54')]==='user'){var _0x3272d6=_0x543c4b[_0x94a5('0x23')]({'plain':!![]});var _0x53557e=[{'name':_0x94a5('0x24'),'value':_0x94a5('0x25')},{'name':_0x94a5('0x26'),'value':'outbound'},{'name':_0x94a5('0x55'),'value':'internal'}];var _0x14b214=_[_0x94a5('0x2c')](_0x53557e,[_0x94a5('0x2b'),_0x3272d6[_0x94a5('0x2d')]])[_0x94a5('0x2e')];return db['UserProfileSection'][_0x94a5('0x2c')]({'where':{'name':_0x14b214,'userProfileId':_0xa0466d[_0x94a5('0x56')]},'raw':!![]})[_0x94a5('0x21')](function(_0x11060f){if(_0x11060f&&_0x11060f[_0x94a5('0x57')]===0x0){return db['UserProfileResource']['create']({'name':_0x3272d6[_0x94a5('0x2e')],'resourceId':_0x3272d6['id'],'type':_0x11060f[_0x94a5('0x2e')],'sectionId':_0x11060f['id']},{})[_0x94a5('0x21')](function(){return _0x543c4b;});}else{return _0x543c4b;}})[_0x94a5('0x48')](function(_0x173e25){logger[_0x94a5('0x31')](_0x94a5('0x58'),_0x173e25);throw _0x173e25;});}return _0x543c4b;})[_0x94a5('0x21')](respondWithResult(_0x144ba4,0xc9))['catch'](handleError(_0x144ba4,null));};exports[_0x94a5('0x20')]=function(_0x4a498c,_0x30ca0c){if(_0x4a498c[_0x94a5('0x4e')]['id']){delete _0x4a498c[_0x94a5('0x4e')]['id'];}return db['VoiceExtension'][_0x94a5('0x2c')]({'where':{'id':_0x4a498c[_0x94a5('0x4d')]['id']}})[_0x94a5('0x21')](handleEntityNotFound(_0x30ca0c,null))['then'](function(_0x3cc548){if(_0x3cc548){return db[_0x94a5('0x46')][_0x94a5('0x20')](_['pick'](_0x4a498c['body'],[_0x94a5('0x50'),_0x94a5('0x59'),'description',_0x94a5('0x5a'),_0x94a5('0x5b'),'mandatoryDisposition',_0x94a5('0x5c')]),{'where':{'context':_0x3cc548[_0x94a5('0x59')],'exten':_0x3cc548[_0x94a5('0x50')]},'individualHooks':!![]})[_0x94a5('0x21')](function(_0x30b98f){return _0x30b98f;});}return null;})[_0x94a5('0x21')](respondWithStatusCode(_0x30ca0c,null))[_0x94a5('0x48')](handleError(_0x30ca0c,null));};exports['addApplications']=function(_0x6d401a,_0x26d2a2){return db[_0x94a5('0x46')][_0x94a5('0x5d')]({'where':{'id':_0x6d401a[_0x94a5('0x4d')]['id']}})[_0x94a5('0x21')](function(_0x1a7dcf){if(_0x1a7dcf){return db['sequelize'][_0x94a5('0x5e')](function(_0x5a69fb){return db[_0x94a5('0x46')][_0x94a5('0x22')]({'where':{'VoiceExtensionId':_0x6d401a[_0x94a5('0x4d')]['id']},'transaction':_0x5a69fb})['then'](function(){var _0x2e033e=_['map'](_0x6d401a['body'],function(_0x2cf7f7){_0x2cf7f7[_0x94a5('0x5f')]=_0x6d401a['params']['id'];_0x2cf7f7[_0x94a5('0x60')]=!![];return _0x2cf7f7;});var _0x54380c=_0x6d401a[_0x94a5('0x37')][_0x94a5('0x61')]&&_0x6d401a[_0x94a5('0x37')][_0x94a5('0x61')][_0x94a5('0x62')]()===_0x94a5('0x63')?!![]:![];return _0x1a7dcf[_0x94a5('0x64')](_0x2e033e,_0x54380c);})[_0x94a5('0x21')](function(_0x36ac53){return db['VoiceExtension'][_0x94a5('0x65')](_0x36ac53,{'transaction':_0x5a69fb});});})[_0x94a5('0x21')](function(){return db[_0x94a5('0x46')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x6d401a[_0x94a5('0x4d')]['id']},'order':_0x94a5('0x66')});});}})[_0x94a5('0x21')](respondWithResult(_0x26d2a2,null))[_0x94a5('0x48')](handleError(_0x26d2a2,null));};
\ No newline at end of file
+var _0x2f9f=['error','stack','index','VoiceExtension','rawAttributes','fieldName','model','keys','filters','intersection','query','attributes','fields','length','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','create','body','exten','concat','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','pick','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','rewriteDial','toLowerCase','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./voiceExtension.socket','register','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','find','type','name','UserProfileResource','sendStatus'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2f9f,0xa9));var _0xf2f9=function(_0xe7aba8,_0x50af71){_0xe7aba8=_0xe7aba8-0x0;var _0x10aa1d=_0x2f9f[_0xe7aba8];return _0x10aa1d;};'use strict';var emlformat=require(_0xf2f9('0x0'));var rimraf=require(_0xf2f9('0x1'));var zipdir=require(_0xf2f9('0x2'));var jsonpatch=require(_0xf2f9('0x3'));var rp=require('request-promise');var moment=require(_0xf2f9('0x4'));var BPromise=require(_0xf2f9('0x5'));var Mustache=require(_0xf2f9('0x6'));var util=require(_0xf2f9('0x7'));var path=require(_0xf2f9('0x8'));var sox=require(_0xf2f9('0x9'));var csv=require('to-csv');var ejs=require(_0xf2f9('0xa'));var fs=require('fs');var fs_extra=require(_0xf2f9('0xb'));var _=require('lodash');var squel=require(_0xf2f9('0xc'));var crypto=require(_0xf2f9('0xd'));var jsforce=require(_0xf2f9('0xe'));var deskjs=require(_0xf2f9('0xf'));var toCsv=require(_0xf2f9('0x10'));var querystring=require('querystring');var Papa=require(_0xf2f9('0x11'));var Redis=require(_0xf2f9('0x12'));var authService=require(_0xf2f9('0x13'));var qs=require(_0xf2f9('0x14'));var as=require(_0xf2f9('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2f9('0x16'))('api');var utils=require(_0xf2f9('0x17'));var config=require(_0xf2f9('0x18'));var licenseUtil=require(_0xf2f9('0x19'));var db=require(_0xf2f9('0x1a'))['db'];config[_0xf2f9('0x1b')]=_['defaults'](config[_0xf2f9('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xf2f9('0x1c'))(new Redis(config['redis']));require(_0xf2f9('0x1d'))[_0xf2f9('0x1e')](socket);function respondWithStatusCode(_0x2f5ce9,_0x49fb88){_0x49fb88=_0x49fb88||0xcc;return function(_0x98b5ba){if(_0x98b5ba){return _0x2f5ce9['sendStatus'](_0x49fb88);}return _0x2f5ce9[_0xf2f9('0x1f')](_0x49fb88)[_0xf2f9('0x20')]();};}function respondWithResult(_0x3a368d,_0x2575b3){_0x2575b3=_0x2575b3||0xc8;return function(_0x5f0cfa){if(_0x5f0cfa){return _0x3a368d[_0xf2f9('0x1f')](_0x2575b3)['json'](_0x5f0cfa);}};}function respondWithFilteredResult(_0x45c459,_0x6ac684){return function(_0x15ed04){if(_0x15ed04){var _0x125e77=typeof _0x6ac684[_0xf2f9('0x21')]===_0xf2f9('0x22')&&typeof _0x6ac684[_0xf2f9('0x23')]==='undefined';var _0x573f14=_0x15ed04[_0xf2f9('0x24')];var _0x497fdb=_0x125e77?0x0:_0x6ac684[_0xf2f9('0x21')];var _0x4b2960=_0x125e77?_0x15ed04['count']:_0x6ac684[_0xf2f9('0x21')]+_0x6ac684[_0xf2f9('0x23')];var _0xa95464;if(_0x4b2960>=_0x573f14){_0x4b2960=_0x573f14;_0xa95464=0xc8;}else{_0xa95464=0xce;}_0x45c459['status'](_0xa95464);return _0x45c459[_0xf2f9('0x25')](_0xf2f9('0x26'),_0x497fdb+'-'+_0x4b2960+'/'+_0x573f14)[_0xf2f9('0x27')](_0x15ed04);}return null;};}function patchUpdates(_0x275d98){return function(_0x37ee24){try{jsonpatch[_0xf2f9('0x28')](_0x37ee24,_0x275d98,!![]);}catch(_0x46f734){return BPromise[_0xf2f9('0x29')](_0x46f734);}return _0x37ee24[_0xf2f9('0x2a')]();};}function saveUpdates(_0x4fddc9,_0x16b76){return function(_0x2323bb){if(_0x2323bb){return _0x2323bb[_0xf2f9('0x2b')](_0x4fddc9)[_0xf2f9('0x2c')](function(_0x524f32){return _0x524f32;});}return null;};}function removeEntity(_0x9daf2c,_0x5a141b){return function(_0x560a04){if(_0x560a04){return _0x560a04[_0xf2f9('0x2d')]()[_0xf2f9('0x2c')](function(){var _0x35985e=_0x560a04['get']({'plain':!![]});var _0x4a63b7=[{'name':_0xf2f9('0x2e'),'value':_0xf2f9('0x2f'),'ignore':![]},{'name':_0xf2f9('0x30'),'value':_0xf2f9('0x31'),'ignore':![]},{'name':_0xf2f9('0x32'),'value':_0xf2f9('0x33'),'ignore':![]}];var _0x17067e=_(_0x4a63b7)[_0xf2f9('0x34')](_0xf2f9('0x35'))[_0xf2f9('0x36')](_0xf2f9('0x37'))[_0xf2f9('0x37')]();if(_['includes'](_0x17067e,_0x35985e['type'])){return;}var _0x245308=_[_0xf2f9('0x38')](_0x4a63b7,['value',_0x35985e[_0xf2f9('0x39')]])[_0xf2f9('0x3a')];return db[_0xf2f9('0x3b')]['destroy']({'where':{'type':_0x245308,'resourceId':_0x35985e['id']}})['then'](function(){return _0x560a04;});})[_0xf2f9('0x2c')](function(){_0x9daf2c['status'](0xcc)[_0xf2f9('0x20')]();});}};}function handleEntityNotFound(_0x258b2e,_0x5e96d0){return function(_0x725c76){if(!_0x725c76){_0x258b2e[_0xf2f9('0x3c')](0x194);}return _0x725c76;};}function handleError(_0x405039,_0x1be7df){_0x1be7df=_0x1be7df||0x1f4;return function(_0x16853c){logger[_0xf2f9('0x3d')](_0x16853c[_0xf2f9('0x3e')]);if(_0x16853c[_0xf2f9('0x3a')]){delete _0x16853c[_0xf2f9('0x3a')];}_0x405039[_0xf2f9('0x1f')](_0x1be7df)['send'](_0x16853c);};}exports[_0xf2f9('0x3f')]=function(_0xdd71c2,_0x3ceacf){var _0x2519f9={},_0x19d72b={},_0x301e05={'count':0x0,'rows':[]};var _0x588438=_[_0xf2f9('0x36')](db[_0xf2f9('0x40')][_0xf2f9('0x41')],function(_0x51f318){return{'name':_0x51f318[_0xf2f9('0x42')],'type':_0x51f318['type']['key']};});_0x19d72b[_0xf2f9('0x43')]=_['map'](_0x588438,_0xf2f9('0x3a'));_0x19d72b['query']=_[_0xf2f9('0x44')](_0xdd71c2['query']);_0x19d72b[_0xf2f9('0x45')]=_[_0xf2f9('0x46')](_0x19d72b[_0xf2f9('0x43')],_0x19d72b[_0xf2f9('0x47')]);_0x2519f9[_0xf2f9('0x48')]=_[_0xf2f9('0x46')](_0x19d72b[_0xf2f9('0x43')],qs[_0xf2f9('0x49')](_0xdd71c2[_0xf2f9('0x47')][_0xf2f9('0x49')]));_0x2519f9['attributes']=_0x2519f9[_0xf2f9('0x48')][_0xf2f9('0x4a')]?_0x2519f9[_0xf2f9('0x48')]:_0x19d72b[_0xf2f9('0x43')];if(!_0xdd71c2[_0xf2f9('0x47')]['hasOwnProperty']('nolimit')){_0x2519f9[_0xf2f9('0x23')]=qs[_0xf2f9('0x23')](_0xdd71c2[_0xf2f9('0x47')]['limit']);_0x2519f9[_0xf2f9('0x21')]=qs['offset'](_0xdd71c2['query'][_0xf2f9('0x21')]);}_0x2519f9['order']=qs['sort'](_0xdd71c2[_0xf2f9('0x47')][_0xf2f9('0x4b')]);_0x2519f9[_0xf2f9('0x4c')]=qs['filters'](_['pick'](_0xdd71c2[_0xf2f9('0x47')],_0x19d72b[_0xf2f9('0x45')]),_0x588438);if(_0xdd71c2[_0xf2f9('0x47')][_0xf2f9('0x34')]){_0x2519f9[_0xf2f9('0x4c')]=_[_0xf2f9('0x4d')](_0x2519f9[_0xf2f9('0x4c')],{'$or':_[_0xf2f9('0x36')](_0x588438,function(_0x5cbf35){if(_0x5cbf35[_0xf2f9('0x39')]!==_0xf2f9('0x4e')){var _0x1e13e9={};_0x1e13e9[_0x5cbf35['name']]={'$like':'%'+_0xdd71c2[_0xf2f9('0x47')][_0xf2f9('0x34')]+'%'};return _0x1e13e9;}})});}_0x2519f9=_[_0xf2f9('0x4d')]({},_0x2519f9,_0xdd71c2[_0xf2f9('0x4f')]);var _0x2db0d4={'where':_0x2519f9[_0xf2f9('0x4c')]};return db['VoiceExtension']['count'](_0x2db0d4)[_0xf2f9('0x2c')](function(_0x48cbb1){_0x301e05[_0xf2f9('0x24')]=_0x48cbb1;if(_0xdd71c2[_0xf2f9('0x47')][_0xf2f9('0x50')]){_0x2519f9[_0xf2f9('0x51')]=[{'all':!![]}];}return db['VoiceExtension'][_0xf2f9('0x52')](_0x2519f9);})[_0xf2f9('0x2c')](function(_0x429bad){_0x301e05['rows']=_0x429bad;return _0x301e05;})[_0xf2f9('0x2c')](respondWithFilteredResult(_0x3ceacf,_0x2519f9))[_0xf2f9('0x53')](handleError(_0x3ceacf,null));};exports[_0xf2f9('0x54')]=function(_0x2ea96d,_0x2a745f){var _0x2005c1={'raw':![],'where':{'id':_0x2ea96d['params']['id']}},_0x1cd822={};_0x1cd822[_0xf2f9('0x43')]=_['keys'](db['VoiceExtension'][_0xf2f9('0x41')]);_0x1cd822['query']=_[_0xf2f9('0x44')](_0x2ea96d['query']);_0x1cd822[_0xf2f9('0x45')]=_['intersection'](_0x1cd822['model'],_0x1cd822[_0xf2f9('0x47')]);_0x2005c1[_0xf2f9('0x48')]=_[_0xf2f9('0x46')](_0x1cd822['model'],qs[_0xf2f9('0x49')](_0x2ea96d['query'][_0xf2f9('0x49')]));_0x2005c1[_0xf2f9('0x48')]=_0x2005c1['attributes'][_0xf2f9('0x4a')]?_0x2005c1[_0xf2f9('0x48')]:_0x1cd822[_0xf2f9('0x43')];if(_0x2ea96d[_0xf2f9('0x47')]['includeAll']){_0x2005c1['include']=[{'all':!![]}];}_0x2005c1=_['merge']({},_0x2005c1,_0x2ea96d[_0xf2f9('0x4f')]);return db[_0xf2f9('0x40')][_0xf2f9('0x38')](_0x2005c1)[_0xf2f9('0x2c')](handleEntityNotFound(_0x2a745f,null))[_0xf2f9('0x2c')](respondWithResult(_0x2a745f,null))[_0xf2f9('0x53')](handleError(_0x2a745f,null));};exports[_0xf2f9('0x2d')]=function(_0x14f3ac,_0x1cb4a2){return db[_0xf2f9('0x40')][_0xf2f9('0x38')]({'where':{'id':_0x14f3ac[_0xf2f9('0x55')]['id']}})[_0xf2f9('0x2c')](handleEntityNotFound(_0x1cb4a2,null))[_0xf2f9('0x2c')](removeEntity(_0x1cb4a2,null))[_0xf2f9('0x53')](handleError(_0x1cb4a2,null));};exports[_0xf2f9('0x56')]=function(_0x3d3ed2,_0x1a8de3){if(_0x3d3ed2[_0xf2f9('0x57')][_0xf2f9('0x39')]==='outbound'&&!_['startsWith'](_0x3d3ed2[_0xf2f9('0x57')][_0xf2f9('0x58')],'_')){_0x3d3ed2[_0xf2f9('0x57')][_0xf2f9('0x58')]='_'[_0xf2f9('0x59')](_0x3d3ed2['body'][_0xf2f9('0x58')]);}return db[_0xf2f9('0x40')][_0xf2f9('0x56')](_0x3d3ed2[_0xf2f9('0x57')],{'raw':![]})[_0xf2f9('0x2c')](function(_0x1209de){var _0x10f1b9=_0x3d3ed2[_0xf2f9('0x5a')][_0xf2f9('0x5b')]({'plain':!![]});if(!_0x10f1b9)throw new Error(_0xf2f9('0x5c'));if(_0x10f1b9[_0xf2f9('0x5d')]===_0xf2f9('0x5a')){var _0x2987f7=_0x1209de['get']({'plain':!![]});var _0x47bcdc=[{'name':_0xf2f9('0x2e'),'value':_0xf2f9('0x2f')},{'name':_0xf2f9('0x30'),'value':_0xf2f9('0x31')},{'name':_0xf2f9('0x32'),'value':_0xf2f9('0x33')}];var _0x3dd702=_[_0xf2f9('0x38')](_0x47bcdc,[_0xf2f9('0x37'),_0x2987f7[_0xf2f9('0x39')]])[_0xf2f9('0x3a')];return db[_0xf2f9('0x5e')][_0xf2f9('0x38')]({'where':{'name':_0x3dd702,'userProfileId':_0x10f1b9[_0xf2f9('0x5f')]},'raw':!![]})[_0xf2f9('0x2c')](function(_0x3308d3){if(_0x3308d3&&_0x3308d3[_0xf2f9('0x60')]===0x0){return db[_0xf2f9('0x3b')]['create']({'name':_0x2987f7['name'],'resourceId':_0x2987f7['id'],'type':_0x3308d3[_0xf2f9('0x3a')],'sectionId':_0x3308d3['id']},{})['then'](function(){return _0x1209de;});}else{return _0x1209de;}})[_0xf2f9('0x53')](function(_0x2230b1){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2230b1);throw _0x2230b1;});}return _0x1209de;})[_0xf2f9('0x2c')](respondWithResult(_0x1a8de3,0xc9))['catch'](handleError(_0x1a8de3,null));};exports[_0xf2f9('0x2b')]=function(_0xddf818,_0x3cf20a){if(_0xddf818[_0xf2f9('0x57')]['id']){delete _0xddf818[_0xf2f9('0x57')]['id'];}return db[_0xf2f9('0x40')]['find']({'where':{'id':_0xddf818['params']['id']}})['then'](handleEntityNotFound(_0x3cf20a,null))[_0xf2f9('0x2c')](function(_0x586829){if(_0x586829){return db['VoiceExtension'][_0xf2f9('0x2b')](_[_0xf2f9('0x61')](_0xddf818[_0xf2f9('0x57')],[_0xf2f9('0x58'),_0xf2f9('0x62'),_0xf2f9('0x63'),_0xf2f9('0x64'),_0xf2f9('0x65'),_0xf2f9('0x66'),_0xf2f9('0x67')]),{'where':{'context':_0x586829[_0xf2f9('0x62')],'exten':_0x586829['exten']},'individualHooks':!![]})[_0xf2f9('0x2c')](function(_0x1666b6){return _0x1666b6;});}return null;})[_0xf2f9('0x2c')](respondWithStatusCode(_0x3cf20a,null))['catch'](handleError(_0x3cf20a,null));};exports[_0xf2f9('0x68')]=function(_0x176a15,_0x497450){return db[_0xf2f9('0x40')][_0xf2f9('0x69')]({'where':{'id':_0x176a15[_0xf2f9('0x55')]['id']}})[_0xf2f9('0x2c')](function(_0x197d0f){if(_0x197d0f){return db[_0xf2f9('0x6a')][_0xf2f9('0x6b')](function(_0x4f1114){return db[_0xf2f9('0x40')]['destroy']({'where':{'VoiceExtensionId':_0x176a15['params']['id']},'transaction':_0x4f1114})[_0xf2f9('0x2c')](function(){var _0x1d5ab5=_['map'](_0x176a15[_0xf2f9('0x57')],function(_0x5d170b){_0x5d170b[_0xf2f9('0x6c')]=_0x176a15[_0xf2f9('0x55')]['id'];_0x5d170b['isApp']=!![];return _0x5d170b;});var _0x22a2e1=_0x176a15['query'][_0xf2f9('0x6d')]&&_0x176a15[_0xf2f9('0x47')][_0xf2f9('0x6d')][_0xf2f9('0x6e')]()==='true'?!![]:![];return _0x197d0f[_0xf2f9('0x6f')](_0x1d5ab5,_0x22a2e1);})[_0xf2f9('0x2c')](function(_0x398d8f){return db['VoiceExtension'][_0xf2f9('0x70')](_0x398d8f,{'transaction':_0x4f1114});});})[_0xf2f9('0x2c')](function(){return db['VoiceExtension'][_0xf2f9('0x71')]({'where':{'isApp':!![],'VoiceExtensionId':_0x176a15[_0xf2f9('0x55')]['id']},'order':_0xf2f9('0x72')});});}})[_0xf2f9('0x2c')](respondWithResult(_0x497450,null))[_0xf2f9('0x53')](handleError(_0x497450,null));};
\ No newline at end of file
index d20e371..5756e85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f91=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceExtension'];(function(_0x498232,_0x93596c){var _0x366977=function(_0x3d8d69){while(--_0x3d8d69){_0x498232['push'](_0x498232['shift']());}};_0x366977(++_0x93596c);}(_0x6f91,0x1cb));var _0x16f9=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x6f91[_0x5ce15c];return _0x36e4f5;};'use strict';var EventEmitter=require(_0x16f9('0x0'));var VoiceExtension=require(_0x16f9('0x1'))['db'][_0x16f9('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x16f9('0x3')](0x0);var events={'afterCreate':_0x16f9('0x4'),'afterUpdate':_0x16f9('0x5'),'afterDestroy':_0x16f9('0x6')};function emitEvent(_0x31856c){return function(_0x2bf0a6,_0x2557b2,_0x4bd605){VoiceExtensionEvents[_0x16f9('0x7')](_0x31856c+':'+_0x2bf0a6['id'],_0x2bf0a6);VoiceExtensionEvents[_0x16f9('0x7')](_0x31856c,_0x2bf0a6);_0x4bd605(null);};}for(var e in events){if(events[_0x16f9('0x8')](e)){var event=events[e];VoiceExtension[_0x16f9('0x9')](e,emitEvent(event));}}module[_0x16f9('0xa')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x8826=['exports','events','setMaxListeners','save','remove','hasOwnProperty'];(function(_0x2efd54,_0x241172){var _0x3f923e=function(_0x3cfd1d){while(--_0x3cfd1d){_0x2efd54['push'](_0x2efd54['shift']());}};_0x3f923e(++_0x241172);}(_0x8826,0x1c3));var _0x6882=function(_0x4864a7,_0xaa0237){_0x4864a7=_0x4864a7-0x0;var _0x35a561=_0x8826[_0x4864a7];return _0x35a561;};'use strict';var EventEmitter=require(_0x6882('0x0'));var VoiceExtension=require('../../mysqldb')['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x6882('0x1')](0x0);var events={'afterCreate':_0x6882('0x2'),'afterUpdate':'update','afterDestroy':_0x6882('0x3')};function emitEvent(_0x14915e){return function(_0x2df575,_0x3cf903,_0x23acbb){VoiceExtensionEvents['emit'](_0x14915e+':'+_0x2df575['id'],_0x2df575);VoiceExtensionEvents['emit'](_0x14915e,_0x2df575);_0x23acbb(null);};}for(var e in events){if(events[_0x6882('0x4')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x6882('0x5')]=VoiceExtensionEvents;
\ No newline at end of file
index a8434d6..96faae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8d0=['XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','wav','trunk','options','url','split','length','name','param','phone','prefix','${EXTEN}','SIP','U(xcally-mixmonitor-context)','replace','join','isEmpty','interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','Hangup','util','./voiceExtension.attributes','exports','models','type','CDR(type)=','exten','alias','Set','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','push'];(function(_0x1fc6be,_0x1b704d){var _0x5e0195=function(_0x112825){while(--_0x112825){_0x1fc6be['push'](_0x1fc6be['shift']());}};_0x5e0195(++_0x1b704d);}(_0xb8d0,0xe2));var _0x0b8d=function(_0x25445f,_0x79a594){_0x25445f=_0x25445f-0x0;var _0x38b863=_0xb8d0[_0x25445f];return _0x38b863;};'use strict';var util=require(_0x0b8d('0x0'));var _=require('lodash');var attributes=require(_0x0b8d('0x1'));module[_0x0b8d('0x2')]=function(_0x12ad7f){var _0x329c44=_0x12ad7f[_0x0b8d('0x3')];function _0x2e00a4(_0x257407){var _0x35d35b=0x2;var _0x654327=[{'type':_0x257407[_0x0b8d('0x4')],'app':'Set','appdata':_0x0b8d('0x5')+_0x257407[_0x0b8d('0x4')],'context':_0x257407['context'],'exten':_0x257407[_0x0b8d('0x6')],'priority':_0x35d35b++,'VoiceExtensionId':_0x257407['id']},{'type':_0x257407[_0x0b8d('0x4')],'app':_0x257407[_0x0b8d('0x7')]?_0x0b8d('0x8'):_0x0b8d('0x9'),'appdata':_0x257407['alias']?_0x0b8d('0xa')+_0x257407[_0x0b8d('0x7')]:_0x0b8d('0xb'),'context':_0x257407[_0x0b8d('0xc')],'exten':_0x257407[_0x0b8d('0x6')],'priority':_0x35d35b++,'VoiceExtensionId':_0x257407['id']}];if(_0x257407[_0x0b8d('0x4')]==='inbound'){_0x654327[_0x0b8d('0xd')]({'type':'inbound','app':_0x0b8d('0x8'),'appdata':'CDR(routeid)='+_0x257407['id'],'context':_0x257407['context'],'exten':_0x257407[_0x0b8d('0x6')],'priority':_0x35d35b++,'VoiceExtensionId':_0x257407['id']});}_0x654327['push']({'type':_0x257407['type'],'app':_0x0b8d('0x8'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x257407[_0x0b8d('0xc')],'exten':_0x257407[_0x0b8d('0x6')],'priority':_0x35d35b++,'VoiceExtensionId':_0x257407['id']},{'type':_0x257407[_0x0b8d('0x4')],'app':'Set','appdata':_0x0b8d('0xe'),'context':_0x257407[_0x0b8d('0xc')],'exten':_0x257407[_0x0b8d('0x6')],'priority':_0x35d35b++,'VoiceExtensionId':_0x257407['id']},{'type':_0x257407[_0x0b8d('0x4')],'app':_0x0b8d('0x8'),'appdata':_0x0b8d('0xf'),'context':_0x257407[_0x0b8d('0xc')],'exten':_0x257407[_0x0b8d('0x6')],'priority':_0x35d35b++,'VoiceExtensionId':_0x257407['id']});return _0x654327;}function _0x100869(_0x5c9da3){var _0x37ea56=0x2;var _0x333519=[{'type':'outbound','app':_0x0b8d('0x8'),'appdata':_0x0b8d('0x10'),'context':_0x5c9da3['context'],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':_0x5c9da3[_0x0b8d('0x7')]?_0x0b8d('0x8'):_0x0b8d('0x9'),'appdata':_0x5c9da3['alias']?_0x0b8d('0xa')+_0x5c9da3[_0x0b8d('0x7')]:'No\x20alias\x20set','context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':'Set','appdata':_0x0b8d('0x12')+(_0x5c9da3[_0x0b8d('0x13')]?_0x0b8d('0x14')+_0x5c9da3[_0x0b8d('0x13')]+'}':'${EXTEN}'),'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3['exten'],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':'outbound','app':_0x0b8d('0x8'),'appdata':'CDR(routeid)='+_0x5c9da3['id'],'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':_0x0b8d('0x15'),'appdata':_0x0b8d('0x16')+(_0x37ea56+0x2)+_0x0b8d('0x17')+(_0x37ea56+0x1)+')','context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3['exten'],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':'Set','appdata':_0x5c9da3['cutdigits']?_0x0b8d('0x18')+_0x5c9da3[_0x0b8d('0x13')]+'}':_0x0b8d('0x19'),'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':'outbound','app':_0x0b8d('0x8'),'appdata':_0x0b8d('0x1a'),'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3['exten'],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':_0x0b8d('0x8'),'appdata':_0x0b8d('0xe'),'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3['exten'],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':'outbound','app':_0x0b8d('0x8'),'appdata':'MONITOR_OPTIONS=ab','context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':'Set','appdata':_0x0b8d('0x1b')+_0x5c9da3['id'],'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']}];if(_0x5c9da3[_0x0b8d('0x1c')](_0x0b8d('0x1d'))&&_0x5c9da3[_0x0b8d('0x1d')]!==_0x0b8d('0x1e')){_0x333519[_0x0b8d('0xd')]({'type':'outbound','app':_0x0b8d('0x8'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']},{'type':_0x0b8d('0x11'),'app':_0x0b8d('0x8'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x5c9da3['recordingFormat']||_0x0b8d('0x1f'),'context':_0x5c9da3[_0x0b8d('0xc')],'exten':_0x5c9da3[_0x0b8d('0x6')],'priority':_0x37ea56++,'VoiceExtensionId':_0x5c9da3['id']});}return _0x333519;}function _0x1f250f(_0x45fe0f){var _0x1553a9=[{'name':_0x0b8d('0x20'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x0b8d('0x21'),'param':0x2},{'name':_0x0b8d('0x22'),'param':0x3}];var _0x1a42bc={};var _0x225808=_0x45fe0f[_0x0b8d('0x23')](',');var _0x243c78=[];for(var _0x5f13ec=0x0;_0x5f13ec<_0x1553a9[_0x0b8d('0x24')];_0x5f13ec++){switch(_0x1553a9[_0x5f13ec][_0x0b8d('0x25')]){case _0x0b8d('0x20'):_0x1a42bc[_0x0b8d('0x20')]=_0x225808[_0x1553a9[_0x5f13ec][_0x0b8d('0x26')]][_0x0b8d('0x23')]('/')[0x1];_0x1a42bc[_0x0b8d('0x27')]=_0x225808[_0x1553a9[_0x5f13ec]['param']]['split']('/')[0x2];_0x1a42bc[_0x0b8d('0x28')]=_0x1a42bc[_0x0b8d('0x27')]?_0x1a42bc[_0x0b8d('0x27')]['split']('$')[0x0]:undefined;_0x1a42bc['phone']=route[_0x0b8d('0x13')]?(_0x1a42bc['prefix']||'')+'${EXTEN:'+route[_0x0b8d('0x13')]+'}':(_0x1a42bc[_0x0b8d('0x28')]||'')+_0x0b8d('0x29');_0x243c78[_0x1553a9[_0x5f13ec][_0x0b8d('0x26')]]=[_0x0b8d('0x2a'),_0x1a42bc[_0x0b8d('0x20')],_0x1a42bc[_0x0b8d('0x27')]]['join']('/');break;case _0x0b8d('0x21'):_0x1a42bc[_0x0b8d('0x21')]=_0x225808[_0x1553a9[_0x5f13ec][_0x0b8d('0x26')]];if(route[_0x0b8d('0x1d')]!==_0x0b8d('0x1e')){if(_0x1a42bc[_0x0b8d('0x21')]['indexOf'](_0x0b8d('0x2b'))<0x0){_0x1a42bc['options']+=_0x0b8d('0x2b');}}else{_0x1a42bc[_0x0b8d('0x21')]=_0x1a42bc[_0x0b8d('0x21')][_0x0b8d('0x2c')](_0x0b8d('0x2b'),'');}_0x243c78[_0x1553a9[_0x5f13ec][_0x0b8d('0x26')]]=_0x1a42bc[_0x0b8d('0x21')];break;default:_0x243c78[_0x1553a9[_0x5f13ec][_0x0b8d('0x26')]]=_0x225808[_0x1553a9[_0x5f13ec]['param']];}}return _0x243c78[_0x0b8d('0x2d')](',');}function _0x4756d5(_0x2b06b3,_0xeda3d4,_0x3773e9,_0x57b150){return new Promise(function(_0x3c28d6,_0xbe0c29){var _0x5c6450=[];if(_[_0x0b8d('0x2e')](_0xeda3d4))return _0x3c28d6(_0x5c6450);_0x329c44['Interval']['findAll']({'attributes':['id',_0x0b8d('0x2f'),_0x0b8d('0x30')],'raw':!![]})[_0x0b8d('0x31')](function(_0x3eccd3){for(var _0x46a7e5=0x0,_0x1bb210=0x0;_0x46a7e5<_0xeda3d4[_0x0b8d('0x24')];_0x46a7e5++,_0x1bb210=0x0){var _0x5e4748=_0xeda3d4[_0x46a7e5];var _0x530ffa=[];var _0x1368d8=[];if(_0x5e4748[_0x0b8d('0x2f')]!==_0x0b8d('0x32')){_0x5e4748['intervals']=[_0x5e4748[_0x0b8d('0x2f')]];}else{_0x5e4748[_0x0b8d('0x33')]=_0x5e4748[_0x0b8d('0x30')]?_[_0x0b8d('0x34')](_[_0x0b8d('0x35')](_0x3eccd3,{'IntervalId':_0x5e4748[_0x0b8d('0x30')]}),_0x0b8d('0x2f')):[];}_0x5e4748[_0x0b8d('0xc')]=_0x2b06b3[_0x0b8d('0xc')];_0x5e4748[_0x0b8d('0x6')]=_0x2b06b3[_0x0b8d('0x6')];if(_0x5e4748[_0x0b8d('0x4')])_0x5e4748[_0x0b8d('0x4')]=_0x5e4748[_0x0b8d('0x4')][_0x0b8d('0x36')]();if(_0x2b06b3[_0x0b8d('0x4')]===_0x0b8d('0x11')){if(_0x5e4748[_0x0b8d('0x1c')](_0x0b8d('0x37'))&&_0x5e4748[_0x0b8d('0x37')]&&_0x5e4748[_0x0b8d('0x37')]!=='--'){_0x530ffa[_0x0b8d('0xd')]({'type':_0x5e4748[_0x0b8d('0x4')][_0x0b8d('0x36')](),'app':_0x0b8d('0x8'),'appdata':'CDR(tag)='+_0x5e4748[_0x0b8d('0x37')],'context':_0x2b06b3[_0x0b8d('0xc')],'exten':_0x2b06b3[_0x0b8d('0x6')],'priority':_0x5e4748[_0x0b8d('0x33')][_0x0b8d('0x24')]+_0x3773e9+_0x1bb210++,'VoiceExtensionId':_0x2b06b3['id']});}_0x530ffa[_0x0b8d('0xd')]({'type':_0x5e4748['type']['toLowerCase'](),'app':_0x0b8d('0x15'),'appdata':_0x0b8d('0x38')+(_0x5e4748[_0x0b8d('0x39')]?_0x0b8d('0x3a')+_0x5e4748[_0x0b8d('0x39')]+')':'NoOp(No\x20number\x20available)'),'context':_0x2b06b3[_0x0b8d('0xc')],'exten':_0x2b06b3[_0x0b8d('0x6')],'priority':_0x5e4748['intervals'][_0x0b8d('0x24')]+_0x3773e9+_0x1bb210++,'VoiceExtensionId':_0x2b06b3['id']});}else{if(_0x5e4748[_0x0b8d('0x1c')](_0x0b8d('0x3b'))){if([_0x0b8d('0x3c'),'playback']['includes'](_0x5e4748[_0x0b8d('0x3d')][_0x0b8d('0x36')]())&&_0x5e4748[_0x0b8d('0x3e')]!==_0x0b8d('0x3f')){if(_0x5e4748[_0x0b8d('0x3b')]){_0x530ffa[_0x0b8d('0xd')]({'type':_0x5e4748[_0x0b8d('0x4')][_0x0b8d('0x36')](),'app':_0x0b8d('0x15'),'appdata':_0x0b8d('0x40'),'context':_0x2b06b3[_0x0b8d('0xc')],'exten':_0x2b06b3[_0x0b8d('0x6')],'priority':_0x5e4748[_0x0b8d('0x33')][_0x0b8d('0x24')]+_0x3773e9+_0x1bb210++,'VoiceExtensionId':_0x2b06b3['id']});_0x530ffa[_0x0b8d('0xd')]({'type':_0x5e4748[_0x0b8d('0x4')][_0x0b8d('0x36')](),'app':'Set','appdata':_0x0b8d('0x41'),'context':_0x2b06b3[_0x0b8d('0xc')],'exten':_0x2b06b3[_0x0b8d('0x6')],'priority':_0x5e4748[_0x0b8d('0x33')][_0x0b8d('0x24')]+_0x3773e9+_0x1bb210++,'VoiceExtensionId':_0x2b06b3['id']});}else{_0x530ffa[_0x0b8d('0xd')]({'type':_0x5e4748[_0x0b8d('0x4')][_0x0b8d('0x36')](),'app':_0x0b8d('0x15'),'appdata':_0x0b8d('0x42'),'context':_0x2b06b3[_0x0b8d('0xc')],'exten':_0x2b06b3[_0x0b8d('0x6')],'priority':_0x5e4748[_0x0b8d('0x33')][_0x0b8d('0x24')]+_0x3773e9+_0x1bb210++,'VoiceExtensionId':_0x2b06b3['id']});_0x530ffa['push']({'type':_0x5e4748['type'][_0x0b8d('0x36')](),'app':_0x0b8d('0x8'),'appdata':_0x0b8d('0x43'),'context':_0x2b06b3[_0x0b8d('0xc')],'exten':_0x2b06b3['exten'],'priority':_0x5e4748[_0x0b8d('0x33')]['length']+_0x3773e9+_0x1bb210++,'VoiceExtensionId':_0x2b06b3['id']});}}}}for(var _0x4883de=0x0;_0x4883de<_0x5e4748[_0x0b8d('0x33')][_0x0b8d('0x24')];_0x4883de++){var _0x19498d=_0x3773e9+_0x5e4748[_0x0b8d('0x33')]['length'];var _0x1c0cfc=_0x4883de===_0x5e4748[_0x0b8d('0x33')][_0x0b8d('0x24')]-0x1?_0x3773e9+_0x530ffa[_0x0b8d('0x24')]+_0x1368d8['length']+0x2:_0x3773e9+_0x4883de+0x1;_0x530ffa[_0x0b8d('0x44')](_0x4883de,0x0,{'type':_0x2b06b3['type'],'app':'GotoIfTime','appdata':_0x5e4748[_0x0b8d('0x33')][_0x4883de]+'?'+_0x2b06b3[_0x0b8d('0xc')]+_0x0b8d('0x45')+_0x19498d+':'+_0x2b06b3[_0x0b8d('0xc')]+_0x0b8d('0x45')+_0x1c0cfc,'exten':_0x2b06b3[_0x0b8d('0x6')],'context':_0x2b06b3[_0x0b8d('0xc')],'priority':_0x3773e9+_0x4883de,'VoiceExtensionId':_0x2b06b3['id']});}if(_0x57b150&&_0x5e4748['appType']===_0x0b8d('0x46'))_0x5e4748[_0x0b8d('0x47')]=_0x1f250f(_0x5e4748[_0x0b8d('0x47')]);_0x5e4748[_0x0b8d('0x48')]=_0x530ffa['length']?_[_0x0b8d('0x49')](_0x530ffa)[_0x0b8d('0x48')]+0x1:_0x3773e9;_0x5c6450=_[_0x0b8d('0x4a')](_0x5c6450,_0x530ffa,[_0x5e4748],_0x1368d8);_0x3773e9=_[_0x0b8d('0x49')](_0x5c6450)[_0x0b8d('0x48')]+0x1;}return _0x3c28d6(_0x5c6450);})[_0x0b8d('0x4b')](function(_0x1fd792){_0xbe0c29(_0x1fd792);});});}return _0x12ad7f[_0x0b8d('0x4c')](_0x0b8d('0x4d'),attributes,{'tableName':_0x0b8d('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3e7d2f,_0x45d603){var _0x5bb82c=this;var _0x155e54=_0x5bb82c[_0x0b8d('0x4')]===_0x0b8d('0x11')?_0x100869(_0x5bb82c):_0x2e00a4(_0x5bb82c);return _0x4756d5(_0x5bb82c,_0x3e7d2f,_[_0x0b8d('0x49')](_0x155e54)[_0x0b8d('0x48')]+0x1,_0x45d603)[_0x0b8d('0x31')](function(_0x4d6add){var _0x27a1c4=_[_0x0b8d('0x4a')](_0x155e54,_0x4d6add);_0x27a1c4[_0x0b8d('0xd')]({'type':_0x5bb82c[_0x0b8d('0x4')],'app':_0x0b8d('0x4f'),'exten':_0x5bb82c[_0x0b8d('0x6')],'context':_0x5bb82c[_0x0b8d('0xc')],'priority':_[_0x0b8d('0x49')](_0x27a1c4)[_0x0b8d('0x48')]+0x1,'VoiceExtensionId':_0x5bb82c['id']});return _0x27a1c4;});}}});};
\ No newline at end of file
+var _0x1808=['length','param','phone','prefix','SIP','join','options','indexOf','U(xcally-mixmonitor-context)','Interval','interval','IntervalId','then','*,*,*,*','intervals','map','toLowerCase','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','define','voice_extensions','Hangup','util','./voiceExtension.attributes','exports','models','type','CDR(type)=','context','exten','alias','Set','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','url','split'];(function(_0x39d438,_0x14e752){var _0x44fbc2=function(_0x115b13){while(--_0x115b13){_0x39d438['push'](_0x39d438['shift']());}};_0x44fbc2(++_0x14e752);}(_0x1808,0x1bc));var _0x8180=function(_0x54813d,_0x101c1f){_0x54813d=_0x54813d-0x0;var _0x561eea=_0x1808[_0x54813d];return _0x561eea;};'use strict';var util=require(_0x8180('0x0'));var _=require('lodash');var attributes=require(_0x8180('0x1'));module[_0x8180('0x2')]=function(_0x4f26f9){var _0x4f8aae=_0x4f26f9[_0x8180('0x3')];function _0x13f3fb(_0x24cde7){var _0x57e26b=0x2;var _0x36292d=[{'type':_0x24cde7[_0x8180('0x4')],'app':'Set','appdata':_0x8180('0x5')+_0x24cde7[_0x8180('0x4')],'context':_0x24cde7[_0x8180('0x6')],'exten':_0x24cde7[_0x8180('0x7')],'priority':_0x57e26b++,'VoiceExtensionId':_0x24cde7['id']},{'type':_0x24cde7[_0x8180('0x4')],'app':_0x24cde7[_0x8180('0x8')]?_0x8180('0x9'):_0x8180('0xa'),'appdata':_0x24cde7[_0x8180('0x8')]?_0x8180('0xb')+_0x24cde7[_0x8180('0x8')]:_0x8180('0xc'),'context':_0x24cde7[_0x8180('0x6')],'exten':_0x24cde7[_0x8180('0x7')],'priority':_0x57e26b++,'VoiceExtensionId':_0x24cde7['id']}];if(_0x24cde7[_0x8180('0x4')]===_0x8180('0xd')){_0x36292d[_0x8180('0xe')]({'type':_0x8180('0xd'),'app':_0x8180('0x9'),'appdata':_0x8180('0xf')+_0x24cde7['id'],'context':_0x24cde7['context'],'exten':_0x24cde7[_0x8180('0x7')],'priority':_0x57e26b++,'VoiceExtensionId':_0x24cde7['id']});}_0x36292d[_0x8180('0xe')]({'type':_0x24cde7['type'],'app':_0x8180('0x9'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x24cde7['context'],'exten':_0x24cde7[_0x8180('0x7')],'priority':_0x57e26b++,'VoiceExtensionId':_0x24cde7['id']},{'type':_0x24cde7[_0x8180('0x4')],'app':_0x8180('0x9'),'appdata':_0x8180('0x10'),'context':_0x24cde7[_0x8180('0x6')],'exten':_0x24cde7[_0x8180('0x7')],'priority':_0x57e26b++,'VoiceExtensionId':_0x24cde7['id']},{'type':_0x24cde7[_0x8180('0x4')],'app':'Set','appdata':_0x8180('0x11'),'context':_0x24cde7[_0x8180('0x6')],'exten':_0x24cde7[_0x8180('0x7')],'priority':_0x57e26b++,'VoiceExtensionId':_0x24cde7['id']});return _0x36292d;}function _0x4e850b(_0x2e71e7){var _0x5b363b=0x2;var _0x54c231=[{'type':_0x8180('0x12'),'app':_0x8180('0x9'),'appdata':_0x8180('0x13'),'context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':'outbound','app':_0x2e71e7[_0x8180('0x8')]?_0x8180('0x9'):_0x8180('0xa'),'appdata':_0x2e71e7[_0x8180('0x8')]?'CDR(routeAlias)='+_0x2e71e7[_0x8180('0x8')]:_0x8180('0xc'),'context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7['exten'],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':_0x8180('0x12'),'app':'Set','appdata':'CDR(destination)='+(_0x2e71e7[_0x8180('0x14')]?_0x8180('0x15')+_0x2e71e7[_0x8180('0x14')]+'}':_0x8180('0x16')),'context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':_0x8180('0x12'),'app':_0x8180('0x9'),'appdata':'CDR(routeid)='+_0x2e71e7['id'],'context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7['exten'],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':_0x8180('0x12'),'app':'ExecIf','appdata':_0x8180('0x17')+(_0x5b363b+0x2)+_0x8180('0x18')+(_0x5b363b+0x1)+')','context':_0x2e71e7['context'],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':'outbound','app':_0x8180('0x9'),'appdata':_0x2e71e7[_0x8180('0x14')]?'CDR(prefix)=${EXTEN:0:'+_0x2e71e7[_0x8180('0x14')]+'}':_0x8180('0x19'),'context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7['exten'],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':'outbound','app':_0x8180('0x9'),'appdata':_0x8180('0x1a'),'context':_0x2e71e7['context'],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':_0x8180('0x12'),'app':_0x8180('0x9'),'appdata':_0x8180('0x10'),'context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':_0x8180('0x12'),'app':_0x8180('0x9'),'appdata':'MONITOR_OPTIONS=ab','context':_0x2e71e7[_0x8180('0x6')],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':_0x8180('0x12'),'app':_0x8180('0x9'),'appdata':'outboundrouteid='+_0x2e71e7['id'],'context':_0x2e71e7['context'],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']}];if(_0x2e71e7[_0x8180('0x1b')](_0x8180('0x1c'))&&_0x2e71e7['recordingFormat']!==_0x8180('0x1d')){_0x54c231['push']({'type':'outbound','app':_0x8180('0x9'),'appdata':_0x8180('0x1e'),'context':_0x2e71e7['context'],'exten':_0x2e71e7[_0x8180('0x7')],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']},{'type':'outbound','app':'Set','appdata':_0x8180('0x1f')+_0x2e71e7[_0x8180('0x1c')]||_0x8180('0x20'),'context':_0x2e71e7['context'],'exten':_0x2e71e7['exten'],'priority':_0x5b363b++,'VoiceExtensionId':_0x2e71e7['id']});}return _0x54c231;}function _0x27f465(_0x52529d){var _0x30a354=[{'name':_0x8180('0x21'),'param':0x0},{'name':'timeout','param':0x1},{'name':'options','param':0x2},{'name':_0x8180('0x22'),'param':0x3}];var _0x2bc7db={};var _0x113ee9=_0x52529d[_0x8180('0x23')](',');var _0x47066b=[];for(var _0x4c0f40=0x0;_0x4c0f40<_0x30a354[_0x8180('0x24')];_0x4c0f40++){switch(_0x30a354[_0x4c0f40]['name']){case _0x8180('0x21'):_0x2bc7db[_0x8180('0x21')]=_0x113ee9[_0x30a354[_0x4c0f40][_0x8180('0x25')]][_0x8180('0x23')]('/')[0x1];_0x2bc7db[_0x8180('0x26')]=_0x113ee9[_0x30a354[_0x4c0f40][_0x8180('0x25')]][_0x8180('0x23')]('/')[0x2];_0x2bc7db[_0x8180('0x27')]=_0x2bc7db[_0x8180('0x26')]?_0x2bc7db[_0x8180('0x26')][_0x8180('0x23')]('$')[0x0]:undefined;_0x2bc7db['phone']=route[_0x8180('0x14')]?(_0x2bc7db[_0x8180('0x27')]||'')+_0x8180('0x15')+route[_0x8180('0x14')]+'}':(_0x2bc7db['prefix']||'')+_0x8180('0x16');_0x47066b[_0x30a354[_0x4c0f40]['param']]=[_0x8180('0x28'),_0x2bc7db[_0x8180('0x21')],_0x2bc7db[_0x8180('0x26')]][_0x8180('0x29')]('/');break;case _0x8180('0x2a'):_0x2bc7db[_0x8180('0x2a')]=_0x113ee9[_0x30a354[_0x4c0f40][_0x8180('0x25')]];if(route[_0x8180('0x1c')]!==_0x8180('0x1d')){if(_0x2bc7db[_0x8180('0x2a')][_0x8180('0x2b')](_0x8180('0x2c'))<0x0){_0x2bc7db[_0x8180('0x2a')]+=_0x8180('0x2c');}}else{_0x2bc7db['options']=_0x2bc7db[_0x8180('0x2a')]['replace'](_0x8180('0x2c'),'');}_0x47066b[_0x30a354[_0x4c0f40]['param']]=_0x2bc7db[_0x8180('0x2a')];break;default:_0x47066b[_0x30a354[_0x4c0f40][_0x8180('0x25')]]=_0x113ee9[_0x30a354[_0x4c0f40][_0x8180('0x25')]];}}return _0x47066b[_0x8180('0x29')](',');}function _0x57f698(_0xa4e34,_0x220d70,_0x463207,_0xc92299){return new Promise(function(_0x4a9487,_0x58cd5b){var _0x570d59=[];if(_['isEmpty'](_0x220d70))return _0x4a9487(_0x570d59);_0x4f8aae[_0x8180('0x2d')]['findAll']({'attributes':['id',_0x8180('0x2e'),_0x8180('0x2f')],'raw':!![]})[_0x8180('0x30')](function(_0x30b20e){for(var _0x150618=0x0,_0x3bfd25=0x0;_0x150618<_0x220d70[_0x8180('0x24')];_0x150618++,_0x3bfd25=0x0){var _0x2e196d=_0x220d70[_0x150618];var _0x31ac37=[];var _0x144abb=[];if(_0x2e196d[_0x8180('0x2e')]!==_0x8180('0x31')){_0x2e196d['intervals']=[_0x2e196d['interval']];}else{_0x2e196d[_0x8180('0x32')]=_0x2e196d['IntervalId']?_[_0x8180('0x33')](_['filter'](_0x30b20e,{'IntervalId':_0x2e196d[_0x8180('0x2f')]}),_0x8180('0x2e')):[];}_0x2e196d[_0x8180('0x6')]=_0xa4e34['context'];_0x2e196d[_0x8180('0x7')]=_0xa4e34[_0x8180('0x7')];if(_0x2e196d[_0x8180('0x4')])_0x2e196d[_0x8180('0x4')]=_0x2e196d[_0x8180('0x4')][_0x8180('0x34')]();if(_0xa4e34['type']==='outbound'){if(_0x2e196d[_0x8180('0x1b')]('tag')&&_0x2e196d['tag']&&_0x2e196d[_0x8180('0x35')]!=='--'){_0x31ac37[_0x8180('0xe')]({'type':_0x2e196d[_0x8180('0x4')][_0x8180('0x34')](),'app':_0x8180('0x9'),'appdata':_0x8180('0x36')+_0x2e196d['tag'],'context':_0xa4e34[_0x8180('0x6')],'exten':_0xa4e34['exten'],'priority':_0x2e196d[_0x8180('0x32')][_0x8180('0x24')]+_0x463207+_0x3bfd25++,'VoiceExtensionId':_0xa4e34['id']});}_0x31ac37[_0x8180('0xe')]({'type':_0x2e196d[_0x8180('0x4')]['toLowerCase'](),'app':_0x8180('0x37'),'appdata':_0x8180('0x38')+(_0x2e196d[_0x8180('0x39')]?_0x8180('0x3a')+_0x2e196d[_0x8180('0x39')]+')':'NoOp(No\x20number\x20available)'),'context':_0xa4e34[_0x8180('0x6')],'exten':_0xa4e34[_0x8180('0x7')],'priority':_0x2e196d[_0x8180('0x32')][_0x8180('0x24')]+_0x463207+_0x3bfd25++,'VoiceExtensionId':_0xa4e34['id']});}else{if(_0x2e196d[_0x8180('0x1b')](_0x8180('0x3b'))){if([_0x8180('0x3c'),_0x8180('0x3d')][_0x8180('0x3e')](_0x2e196d[_0x8180('0x3f')]['toLowerCase']())&&_0x2e196d[_0x8180('0x40')]!==_0x8180('0x41')){if(_0x2e196d[_0x8180('0x3b')]){_0x31ac37[_0x8180('0xe')]({'type':_0x2e196d['type'][_0x8180('0x34')](),'app':_0x8180('0x37'),'appdata':_0x8180('0x42'),'context':_0xa4e34['context'],'exten':_0xa4e34[_0x8180('0x7')],'priority':_0x2e196d[_0x8180('0x32')]['length']+_0x463207+_0x3bfd25++,'VoiceExtensionId':_0xa4e34['id']});_0x31ac37[_0x8180('0xe')]({'type':_0x2e196d[_0x8180('0x4')]['toLowerCase'](),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0xa4e34['context'],'exten':_0xa4e34['exten'],'priority':_0x2e196d['intervals']['length']+_0x463207+_0x3bfd25++,'VoiceExtensionId':_0xa4e34['id']});}else{_0x31ac37['push']({'type':_0x2e196d[_0x8180('0x4')][_0x8180('0x34')](),'app':_0x8180('0x37'),'appdata':_0x8180('0x43'),'context':_0xa4e34['context'],'exten':_0xa4e34[_0x8180('0x7')],'priority':_0x2e196d[_0x8180('0x32')][_0x8180('0x24')]+_0x463207+_0x3bfd25++,'VoiceExtensionId':_0xa4e34['id']});_0x31ac37['push']({'type':_0x2e196d['type'][_0x8180('0x34')](),'app':'Set','appdata':_0x8180('0x44'),'context':_0xa4e34[_0x8180('0x6')],'exten':_0xa4e34[_0x8180('0x7')],'priority':_0x2e196d['intervals']['length']+_0x463207+_0x3bfd25++,'VoiceExtensionId':_0xa4e34['id']});}}}}for(var _0x117f08=0x0;_0x117f08<_0x2e196d[_0x8180('0x32')][_0x8180('0x24')];_0x117f08++){var _0x59f47d=_0x463207+_0x2e196d[_0x8180('0x32')][_0x8180('0x24')];var _0x2e999e=_0x117f08===_0x2e196d['intervals'][_0x8180('0x24')]-0x1?_0x463207+_0x31ac37[_0x8180('0x24')]+_0x144abb['length']+0x2:_0x463207+_0x117f08+0x1;_0x31ac37[_0x8180('0x45')](_0x117f08,0x0,{'type':_0xa4e34[_0x8180('0x4')],'app':_0x8180('0x46'),'appdata':_0x2e196d['intervals'][_0x117f08]+'?'+_0xa4e34[_0x8180('0x6')]+',${EXTEN},'+_0x59f47d+':'+_0xa4e34[_0x8180('0x6')]+_0x8180('0x47')+_0x2e999e,'exten':_0xa4e34[_0x8180('0x7')],'context':_0xa4e34[_0x8180('0x6')],'priority':_0x463207+_0x117f08,'VoiceExtensionId':_0xa4e34['id']});}if(_0xc92299&&_0x2e196d['appType']===_0x8180('0x48'))_0x2e196d[_0x8180('0x49')]=_0x27f465(_0x2e196d['appdata']);_0x2e196d[_0x8180('0x4a')]=_0x31ac37['length']?_[_0x8180('0x4b')](_0x31ac37)[_0x8180('0x4a')]+0x1:_0x463207;_0x570d59=_[_0x8180('0x4c')](_0x570d59,_0x31ac37,[_0x2e196d],_0x144abb);_0x463207=_[_0x8180('0x4b')](_0x570d59)[_0x8180('0x4a')]+0x1;}return _0x4a9487(_0x570d59);})['catch'](function(_0x86aabf){_0x58cd5b(_0x86aabf);});});}return _0x4f26f9[_0x8180('0x4d')]('VoiceExtension',attributes,{'tableName':_0x8180('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0xbf1a58,_0x4084bd){var _0x583ca2=this;var _0x2e6ff4=_0x583ca2[_0x8180('0x4')]==='outbound'?_0x4e850b(_0x583ca2):_0x13f3fb(_0x583ca2);return _0x57f698(_0x583ca2,_0xbf1a58,_[_0x8180('0x4b')](_0x2e6ff4)[_0x8180('0x4a')]+0x1,_0x4084bd)[_0x8180('0x30')](function(_0x12f975){var _0x480c2b=_[_0x8180('0x4c')](_0x2e6ff4,_0x12f975);_0x480c2b[_0x8180('0xe')]({'type':_0x583ca2[_0x8180('0x4')],'app':_0x8180('0x4f'),'exten':_0x583ca2[_0x8180('0x7')],'context':_0x583ca2[_0x8180('0x6')],'priority':_[_0x8180('0x4b')](_0x480c2b)['priority']+0x1,'VoiceExtensionId':_0x583ca2['id']});return _0x480c2b;});}}});};
\ No newline at end of file
index 02830d1..9ea015e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf698=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','defaults','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','then','info','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','code','error','message','VoiceExtension,\x20%s,\x20%s','result','catch','VoiceExtension','options','raw','where','limit','include','map','model','attributes','debug','GetVoiceExtension','lodash','util','bluebird'];(function(_0x38617e,_0x3db448){var _0x1768b9=function(_0x12f907){while(--_0x12f907){_0x38617e['push'](_0x38617e['shift']());}};_0x1768b9(++_0x3db448);}(_0xf698,0x1de));var _0x8f69=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xf698[_0x934425];return _0x31d596;};'use strict';var _=require(_0x8f69('0x0'));var util=require(_0x8f69('0x1'));var moment=require('moment');var BPromise=require(_0x8f69('0x2'));var rs=require(_0x8f69('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8f69('0x4'))['db'];var utils=require(_0x8f69('0x5'));var logger=require(_0x8f69('0x6'))(_0x8f69('0x7'));var config=require('../../config/environment');var jayson=require(_0x8f69('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x8f69('0x9')](config[_0x8f69('0xa')],{'host':_0x8f69('0xb'),'port':0x18eb});var socket=require(_0x8f69('0xc'))(new Redis(config[_0x8f69('0xa')]));require(_0x8f69('0xd'))[_0x8f69('0xe')](socket);function respondWithRpcPromise(_0x3d86d7,_0xd8d4c0,_0x2496c4){return new BPromise(function(_0x3bc34c,_0xc9406e){return client['request'](_0x3d86d7,_0x2496c4)[_0x8f69('0xf')](function(_0x573d9b){logger[_0x8f69('0x10')]('VoiceExtension,\x20%s,\x20%s',_0xd8d4c0,_0x8f69('0x11'));logger['debug'](_0x8f69('0x12'),_0xd8d4c0,_0x8f69('0x11'),JSON[_0x8f69('0x13')](_0x573d9b));if(_0x573d9b['error']){if(_0x573d9b['error'][_0x8f69('0x14')]===0x1f4){logger[_0x8f69('0x15')]('VoiceExtension,\x20%s,\x20%s',_0xd8d4c0,_0x573d9b[_0x8f69('0x15')][_0x8f69('0x16')]);return _0xc9406e(_0x573d9b[_0x8f69('0x15')]['message']);}logger[_0x8f69('0x15')](_0x8f69('0x17'),_0xd8d4c0,_0x573d9b[_0x8f69('0x15')]['message']);return _0x3bc34c(_0x573d9b[_0x8f69('0x15')][_0x8f69('0x16')]);}else{logger[_0x8f69('0x10')](_0x8f69('0x17'),_0xd8d4c0,_0x8f69('0x11'));_0x3bc34c(_0x573d9b[_0x8f69('0x18')]['message']);}})[_0x8f69('0x19')](function(_0x1449f5){logger[_0x8f69('0x15')](_0x8f69('0x17'),_0xd8d4c0,_0x1449f5);_0xc9406e(_0x1449f5);});});}exports['GetVoiceExtension']=function(_0x445619){var _0x362e7a=this;return new Promise(function(_0x4dd67c,_0x2b2978){return db[_0x8f69('0x1a')]['findAll']({'raw':_0x445619['options']?_0x445619[_0x8f69('0x1b')][_0x8f69('0x1c')]===undefined?!![]:![]:!![],'where':_0x445619[_0x8f69('0x1b')]?_0x445619[_0x8f69('0x1b')][_0x8f69('0x1d')]||null:null,'attributes':_0x445619['options']?_0x445619[_0x8f69('0x1b')]['attributes']||null:null,'limit':_0x445619['options']?_0x445619['options'][_0x8f69('0x1e')]||null:null,'include':_0x445619['options']?_0x445619['options'][_0x8f69('0x1f')]?_[_0x8f69('0x20')](_0x445619[_0x8f69('0x1b')][_0x8f69('0x1f')],function(_0x4ec3b9){return{'model':db[_0x4ec3b9[_0x8f69('0x21')]],'as':_0x4ec3b9['as'],'attributes':_0x4ec3b9[_0x8f69('0x22')],'include':_0x4ec3b9[_0x8f69('0x1f')]?_[_0x8f69('0x20')](_0x4ec3b9['include'],function(_0x5116ae){return{'model':db[_0x5116ae[_0x8f69('0x21')]],'as':_0x5116ae['as'],'attributes':_0x5116ae[_0x8f69('0x22')],'include':_0x5116ae[_0x8f69('0x1f')]?_[_0x8f69('0x20')](_0x5116ae[_0x8f69('0x1f')],function(_0x52c383){return{'model':db[_0x52c383[_0x8f69('0x21')]],'as':_0x52c383['as'],'attributes':_0x52c383[_0x8f69('0x22')]};}):[]};}):[]};}):[]:[]})[_0x8f69('0xf')](function(_0x469c2e){logger[_0x8f69('0x10')]('GetVoiceExtension',_0x445619);logger[_0x8f69('0x23')](_0x8f69('0x24'),_0x445619,JSON[_0x8f69('0x13')](_0x469c2e));_0x4dd67c(_0x469c2e);})[_0x8f69('0x19')](function(_0xcaa01b){logger['error']('GetVoiceExtension',_0xcaa01b[_0x8f69('0x16')],_0x445619);_0x2b2978(_0x362e7a[_0x8f69('0x15')](0x1f4,_0xcaa01b[_0x8f69('0x16')]));});});};
\ No newline at end of file
+var _0x9fd4=['message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','include','model','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceExtension.socket','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x5d190e,_0x4cfce9){var _0x1cd3a8=function(_0xfd60ba){while(--_0xfd60ba){_0x5d190e['push'](_0x5d190e['shift']());}};_0x1cd3a8(++_0x4cfce9);}(_0x9fd4,0x16c));var _0x49fd=function(_0x443ec0,_0x186140){_0x443ec0=_0x443ec0-0x0;var _0x227249=_0x9fd4[_0x443ec0];return _0x227249;};'use strict';var _=require(_0x49fd('0x0'));var util=require(_0x49fd('0x1'));var moment=require(_0x49fd('0x2'));var BPromise=require(_0x49fd('0x3'));var rs=require(_0x49fd('0x4'));var fs=require('fs');var Redis=require(_0x49fd('0x5'));var db=require(_0x49fd('0x6'))['db'];var utils=require(_0x49fd('0x7'));var logger=require(_0x49fd('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x49fd('0x9'));var client=jayson[_0x49fd('0xa')][_0x49fd('0xb')]({'port':0x232a});config[_0x49fd('0xc')]=_['defaults'](config[_0x49fd('0xc')],{'host':_0x49fd('0xd'),'port':0x18eb});var socket=require(_0x49fd('0xe'))(new Redis(config[_0x49fd('0xc')]));require(_0x49fd('0xf'))['register'](socket);function respondWithRpcPromise(_0x35034c,_0x130c9b,_0x3e1c71){return new BPromise(function(_0x4969d3,_0x426ec2){return client[_0x49fd('0x10')](_0x35034c,_0x3e1c71)[_0x49fd('0x11')](function(_0x53a44e){logger[_0x49fd('0x12')](_0x49fd('0x13'),_0x130c9b,_0x49fd('0x14'));logger[_0x49fd('0x15')](_0x49fd('0x16'),_0x130c9b,_0x49fd('0x14'),JSON[_0x49fd('0x17')](_0x53a44e));if(_0x53a44e[_0x49fd('0x18')]){if(_0x53a44e[_0x49fd('0x18')][_0x49fd('0x19')]===0x1f4){logger[_0x49fd('0x18')](_0x49fd('0x13'),_0x130c9b,_0x53a44e[_0x49fd('0x18')][_0x49fd('0x1a')]);return _0x426ec2(_0x53a44e[_0x49fd('0x18')][_0x49fd('0x1a')]);}logger[_0x49fd('0x18')](_0x49fd('0x13'),_0x130c9b,_0x53a44e[_0x49fd('0x18')][_0x49fd('0x1a')]);return _0x4969d3(_0x53a44e[_0x49fd('0x18')][_0x49fd('0x1a')]);}else{logger[_0x49fd('0x12')](_0x49fd('0x13'),_0x130c9b,_0x49fd('0x14'));_0x4969d3(_0x53a44e[_0x49fd('0x1b')]['message']);}})[_0x49fd('0x1c')](function(_0x3fd46b){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x130c9b,_0x3fd46b);_0x426ec2(_0x3fd46b);});});}exports[_0x49fd('0x1d')]=function(_0x53cbd1){var _0x316e7c=this;return new Promise(function(_0xbb113b,_0x599315){return db[_0x49fd('0x1e')][_0x49fd('0x1f')]({'raw':_0x53cbd1['options']?_0x53cbd1[_0x49fd('0x20')][_0x49fd('0x21')]===undefined?!![]:![]:!![],'where':_0x53cbd1[_0x49fd('0x20')]?_0x53cbd1[_0x49fd('0x20')][_0x49fd('0x22')]||null:null,'attributes':_0x53cbd1[_0x49fd('0x20')]?_0x53cbd1['options'][_0x49fd('0x23')]||null:null,'limit':_0x53cbd1[_0x49fd('0x20')]?_0x53cbd1[_0x49fd('0x20')]['limit']||null:null,'include':_0x53cbd1[_0x49fd('0x20')]?_0x53cbd1[_0x49fd('0x20')][_0x49fd('0x24')]?_['map'](_0x53cbd1['options']['include'],function(_0x13c5a8){return{'model':db[_0x13c5a8[_0x49fd('0x25')]],'as':_0x13c5a8['as'],'attributes':_0x13c5a8[_0x49fd('0x23')],'include':_0x13c5a8[_0x49fd('0x24')]?_[_0x49fd('0x26')](_0x13c5a8[_0x49fd('0x24')],function(_0x20873e){return{'model':db[_0x20873e[_0x49fd('0x25')]],'as':_0x20873e['as'],'attributes':_0x20873e['attributes'],'include':_0x20873e[_0x49fd('0x24')]?_['map'](_0x20873e[_0x49fd('0x24')],function(_0x89badc){return{'model':db[_0x89badc['model']],'as':_0x89badc['as'],'attributes':_0x89badc[_0x49fd('0x23')]};}):[]};}):[]};}):[]:[]})[_0x49fd('0x11')](function(_0x23374c){logger[_0x49fd('0x12')](_0x49fd('0x1d'),_0x53cbd1);logger[_0x49fd('0x15')](_0x49fd('0x1d'),_0x53cbd1,JSON[_0x49fd('0x17')](_0x23374c));_0xbb113b(_0x23374c);})['catch'](function(_0x42181b){logger['error'](_0x49fd('0x1d'),_0x42181b['message'],_0x53cbd1);_0x599315(_0x316e7c[_0x49fd('0x18')](0x1f4,_0x42181b[_0x49fd('0x1a')]));});});};
\ No newline at end of file
index 558909b..82c1744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['length','./voiceExtension.events','remove','update','emit','removeListener','register'];(function(_0x242a63,_0x558c8a){var _0x45ccb7=function(_0x257f45){while(--_0x257f45){_0x242a63['push'](_0x242a63['shift']());}};_0x45ccb7(++_0x558c8a);}(_0x4975,0x86));var _0x5497=function(_0x1bc2c9,_0x44cac7){_0x1bc2c9=_0x1bc2c9-0x0;var _0x14d2dd=_0x4975[_0x1bc2c9];return _0x14d2dd;};'use strict';var VoiceExtensionEvents=require(_0x5497('0x0'));var events=['save',_0x5497('0x1'),_0x5497('0x2')];function createListener(_0xfc7927,_0x349f5f){return function(_0x135f6f){_0x349f5f[_0x5497('0x3')](_0xfc7927,_0x135f6f);};}function removeListener(_0x14cecb,_0xeb31af){return function(){VoiceExtensionEvents[_0x5497('0x4')](_0x14cecb,_0xeb31af);};}exports[_0x5497('0x5')]=function(_0x539a27){for(var _0x37e48d=0x0,_0x4f563d=events[_0x5497('0x6')];_0x37e48d<_0x4f563d;_0x37e48d++){var _0x674a2a=events[_0x37e48d];var _0x368e8b=createListener('voiceExtension:'+_0x674a2a,_0x539a27);VoiceExtensionEvents['on'](_0x674a2a,_0x368e8b);}};
\ No newline at end of file
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x45108b,_0x4849a5){var _0x3abb6e=function(_0x490cad){while(--_0x490cad){_0x45108b['push'](_0x45108b['shift']());}};_0x3abb6e(++_0x4849a5);}(_0x7a54,0x106));var _0x47a5=function(_0x52706f,_0x58c07e){_0x52706f=_0x52706f-0x0;var _0x41feff=_0x7a54[_0x52706f];return _0x41feff;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index 01917f5..37ed2e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['put','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','index','/:id','isAuthenticated','show','/:id/messages','getMessages','post'];(function(_0x51fb24,_0x144dcc){var _0x12039a=function(_0x231aea){while(--_0x231aea){_0x51fb24['push'](_0x51fb24['shift']());}};_0x12039a(++_0x144dcc);}(_0x2542,0x169));var _0x2254=function(_0x3981be,_0x1e3479){_0x3981be=_0x3981be-0x0;var _0x9fdbdf=_0x2542[_0x3981be];return _0x9fdbdf;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')]('/',auth[_0x2254('0xc')](),controller['create']);router[_0x2254('0x11')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0x12')]);router['delete']('/:id',auth[_0x2254('0xc')](),controller[_0x2254('0x13')]);module[_0x2254('0x14')]=router;
\ No newline at end of file
+var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','index','/:id','isAuthenticated','show','/:id/messages','getMessages','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0xa68062,_0x53136d){var _0x51d4d5=function(_0x6a8315){while(--_0x6a8315){_0xa68062['push'](_0xa68062['shift']());}};_0x51d4d5(++_0x53136d);}(_0x4975,0x86));var _0x5497=function(_0x335215,_0x360b92){_0x335215=_0x335215-0x0;var _0x346ff4=_0x4975[_0x335215];return _0x346ff4;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
index ff64787..541446f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0e1=['trim','central','yes','ENUM','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','fullname','\x20-\x20','getDataValue','mailbox','sequelize','STRING','from-voicemail','contest_mailbox','setDataValue','email','string'];(function(_0x544011,_0x23b9a3){var _0x585bdb=function(_0x55c0d9){while(--_0x55c0d9){_0x544011['push'](_0x544011['shift']());}};_0x585bdb(++_0x23b9a3);}(_0xe0e1,0x129));var _0x1e0e=function(_0x2bee46,_0x4538a6){_0x2bee46=_0x2bee46-0x0;var _0x52a8d4=_0xe0e1[_0x2bee46];return _0x52a8d4;};'use strict';var Sequelize=require(_0x1e0e('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0x1e0e('0x1')]},'context':{'type':Sequelize[_0x1e0e('0x1')],'defaultValue':_0x1e0e('0x2'),'unique':_0x1e0e('0x3')},'mailbox':{'type':Sequelize[_0x1e0e('0x1')],'defaultValue':'','allowNull':![],'unique':_0x1e0e('0x3')},'password':{'type':Sequelize[_0x1e0e('0x1')]},'fullname':{'type':Sequelize[_0x1e0e('0x1')]},'email':{'type':Sequelize[_0x1e0e('0x1')],'validate':{'isEmail':!![]},'set':function(_0x16cbbe){this[_0x1e0e('0x4')](_0x1e0e('0x5'),typeof _0x16cbbe===_0x1e0e('0x6')&&_0x16cbbe[_0x1e0e('0x7')]()?_0x16cbbe[_0x1e0e('0x7')]():null);}},'pager':{'type':Sequelize[_0x1e0e('0x1')]},'tz':{'type':Sequelize[_0x1e0e('0x1')],'defaultValue':_0x1e0e('0x8')},'attach':{'type':Sequelize['ENUM'](_0x1e0e('0x9'),'no'),'defaultValue':_0x1e0e('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x1e0e('0xa')](_0x1e0e('0x9'),'no'),'defaultValue':_0x1e0e('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x1e0e('0x1')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x1e0e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x1e0e('0xa')](_0x1e0e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x1e0e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x1e0e('0xa')](_0x1e0e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x1e0e('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x1e0e('0xa')](_0x1e0e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0x1e0e('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x1e0e('0xa')](_0x1e0e('0x9'),'no'),'defaultValue':_0x1e0e('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x1e0e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x1e0e('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x1e0e('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x1e0e('0xc')},'emailsubject':{'type':Sequelize[_0x1e0e('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x1e0e('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x1e0e('0xe')],'get':function(){return this['getDataValue'](_0x1e0e('0xf'))+_0x1e0e('0x10')+this[_0x1e0e('0x11')](_0x1e0e('0x12'));}}};
\ No newline at end of file
+var _0xf60b=['exports','STRING','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TIMESTAMP','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize'];(function(_0x44ba3d,_0x363415){var _0x350ad9=function(_0x7c7574){while(--_0x7c7574){_0x44ba3d['push'](_0x44ba3d['shift']());}};_0x350ad9(++_0x363415);}(_0xf60b,0xdc));var _0xbf60=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0xf60b[_0xc4001c];return _0x49f7bc;};'use strict';var Sequelize=require(_0xbf60('0x0'));module[_0xbf60('0x1')]={'customer_id':{'type':Sequelize[_0xbf60('0x2')]},'context':{'type':Sequelize[_0xbf60('0x2')],'defaultValue':'from-voicemail','unique':_0xbf60('0x3')},'mailbox':{'type':Sequelize[_0xbf60('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xbf60('0x2')]},'fullname':{'type':Sequelize[_0xbf60('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x507be8){this[_0xbf60('0x4')](_0xbf60('0x5'),typeof _0x507be8===_0xbf60('0x6')&&_0x507be8[_0xbf60('0x7')]()?_0x507be8[_0xbf60('0x7')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0xbf60('0x8')},'attach':{'type':Sequelize[_0xbf60('0x9')](_0xbf60('0xa'),'no'),'defaultValue':_0xbf60('0xa'),'allowNull':![]},'saycid':{'type':Sequelize[_0xbf60('0x9')]('yes','no'),'defaultValue':_0xbf60('0xa'),'allowNull':![]},'dialout':{'type':Sequelize[_0xbf60('0x2')]},'callback':{'type':Sequelize[_0xbf60('0x2')]},'review':{'type':Sequelize[_0xbf60('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0xbf60('0xa'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xbf60('0x9')](_0xbf60('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xbf60('0x9')](_0xbf60('0xa'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xbf60('0x9')](_0xbf60('0xa'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xbf60('0x9')](_0xbf60('0xa'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0xbf60('0xa'),'no'),'defaultValue':_0xbf60('0xa'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0xbf60('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xbf60('0x9')](_0xbf60('0xa'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0xbf60('0xb')},'emailsubject':{'type':Sequelize[_0xbf60('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xbf60('0xc')],'get':function(){return this[_0xbf60('0xd')](_0xbf60('0xe'))+_0xbf60('0xf')+this[_0xbf60('0xd')](_0xbf60('0x10'));}}};
\ No newline at end of file
index f270f16..5177737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['then','destroy','get','Voicemails','UserProfileResource','error','stack','name','send','map','VoiceMail','fieldName','type','keys','query','filters','intersection','model','attributes','nolimit','order','where','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','fields','length','includeAll','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','getMessages','findOne','rawAttributes','hasOwnProperty','pick','mailbox','VoiceMailMessage','findAndCountAll','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','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0x6324,0x142));var _0x4632=function(_0x1f37d5,_0x102bb8){_0x1f37d5=_0x1f37d5-0x0;var _0x3bbd99=_0x6324[_0x1f37d5];return _0x3bbd99;};'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(){var _0x3b0823=_0x1e1b86[_0x4632('0x28')]({'plain':!![]});var _0xb074d=_0x4632('0x29');return db[_0x4632('0x2a')][_0x4632('0x27')]({'where':{'type':_0xb074d,'resourceId':_0x3b0823['id']}})[_0x4632('0x26')](function(){return _0x1e1b86;});})[_0x4632('0x26')](function(){_0x3537ed[_0x4632('0x19')](0xcc)[_0x4632('0x1a')]();});}};}function handleEntityNotFound(_0x438354,_0x4d9098){return function(_0x57798a){if(!_0x57798a){_0x438354[_0x4632('0x18')](0x194);}return _0x57798a;};}function handleError(_0x244743,_0x2f6656){_0x2f6656=_0x2f6656||0x1f4;return function(_0x35a533){logger[_0x4632('0x2b')](_0x35a533[_0x4632('0x2c')]);if(_0x35a533[_0x4632('0x2d')]){delete _0x35a533['name'];}_0x244743[_0x4632('0x19')](_0x2f6656)[_0x4632('0x2e')](_0x35a533);};}exports['index']=function(_0x216119,_0x5316f7){var _0x6599ad={},_0x4cb661={},_0x4fda35={'count':0x0,'rows':[]};var _0x1973eb=_[_0x4632('0x2f')](db[_0x4632('0x30')]['rawAttributes'],function(_0x5ed4d6){return{'name':_0x5ed4d6[_0x4632('0x31')],'type':_0x5ed4d6[_0x4632('0x32')]['key']};});_0x4cb661['model']=_[_0x4632('0x2f')](_0x1973eb,_0x4632('0x2d'));_0x4cb661['query']=_[_0x4632('0x33')](_0x216119[_0x4632('0x34')]);_0x4cb661[_0x4632('0x35')]=_[_0x4632('0x36')](_0x4cb661[_0x4632('0x37')],_0x4cb661['query']);_0x6599ad[_0x4632('0x38')]=_[_0x4632('0x36')](_0x4cb661['model'],qs['fields'](_0x216119[_0x4632('0x34')]['fields']));_0x6599ad['attributes']=_0x6599ad[_0x4632('0x38')]['length']?_0x6599ad[_0x4632('0x38')]:_0x4cb661[_0x4632('0x37')];if(!_0x216119[_0x4632('0x34')]['hasOwnProperty'](_0x4632('0x39'))){_0x6599ad[_0x4632('0x1e')]=qs[_0x4632('0x1e')](_0x216119[_0x4632('0x34')][_0x4632('0x1e')]);_0x6599ad['offset']=qs['offset'](_0x216119[_0x4632('0x34')][_0x4632('0x1c')]);}_0x6599ad[_0x4632('0x3a')]=qs['sort'](_0x216119['query']['sort']);_0x6599ad[_0x4632('0x3b')]=qs[_0x4632('0x35')](_['pick'](_0x216119[_0x4632('0x34')],_0x4cb661[_0x4632('0x35')]),_0x1973eb);if(_0x216119[_0x4632('0x34')][_0x4632('0x3c')]){_0x6599ad[_0x4632('0x3b')]=_[_0x4632('0x3d')](_0x6599ad[_0x4632('0x3b')],{'$or':_[_0x4632('0x2f')](_0x1973eb,function(_0x21c6a5){if(_0x21c6a5[_0x4632('0x32')]!==_0x4632('0x3e')){var _0x3b6258={};_0x3b6258[_0x21c6a5['name']]={'$like':'%'+_0x216119[_0x4632('0x34')][_0x4632('0x3c')]+'%'};return _0x3b6258;}})});}_0x6599ad=_['merge']({},_0x6599ad,_0x216119[_0x4632('0x3f')]);var _0x1c39bc={'where':_0x6599ad['where']};return db[_0x4632('0x30')]['count'](_0x1c39bc)[_0x4632('0x26')](function(_0x28df3b){_0x4fda35[_0x4632('0x1f')]=_0x28df3b;if(_0x216119[_0x4632('0x34')]['includeAll']){_0x6599ad[_0x4632('0x40')]=[{'all':!![]}];}return db[_0x4632('0x30')][_0x4632('0x41')](_0x6599ad);})[_0x4632('0x26')](function(_0x5cc716){_0x4fda35['rows']=_0x5cc716;return _0x4fda35;})[_0x4632('0x26')](respondWithFilteredResult(_0x5316f7,_0x6599ad))[_0x4632('0x42')](handleError(_0x5316f7,null));};exports[_0x4632('0x43')]=function(_0x512db1,_0x330f21){var _0x1467c8={'raw':!![],'where':{'id':_0x512db1[_0x4632('0x44')]['id']}},_0x66598d={};_0x66598d[_0x4632('0x37')]=_[_0x4632('0x33')](db[_0x4632('0x30')]['rawAttributes']);_0x66598d[_0x4632('0x34')]=_[_0x4632('0x33')](_0x512db1[_0x4632('0x34')]);_0x66598d[_0x4632('0x35')]=_[_0x4632('0x36')](_0x66598d['model'],_0x66598d['query']);_0x1467c8[_0x4632('0x38')]=_[_0x4632('0x36')](_0x66598d[_0x4632('0x37')],qs[_0x4632('0x45')](_0x512db1['query'][_0x4632('0x45')]));_0x1467c8[_0x4632('0x38')]=_0x1467c8[_0x4632('0x38')][_0x4632('0x46')]?_0x1467c8[_0x4632('0x38')]:_0x66598d['model'];if(_0x512db1[_0x4632('0x34')][_0x4632('0x47')]){_0x1467c8[_0x4632('0x40')]=[{'all':!![]}];}_0x1467c8=_[_0x4632('0x3d')]({},_0x1467c8,_0x512db1[_0x4632('0x3f')]);return db[_0x4632('0x30')][_0x4632('0x48')](_0x1467c8)[_0x4632('0x26')](handleEntityNotFound(_0x330f21,null))[_0x4632('0x26')](respondWithResult(_0x330f21,null))[_0x4632('0x42')](handleError(_0x330f21,null));};exports[_0x4632('0x49')]=function(_0x517584,_0xc3ffd0){return db[_0x4632('0x30')][_0x4632('0x49')](_0x517584['body'],{})[_0x4632('0x26')](function(_0x5f4fb5){var _0x1309aa=_0x517584[_0x4632('0x4a')][_0x4632('0x28')]({'plain':!![]});if(!_0x1309aa)throw new Error(_0x4632('0x4b'));if(_0x1309aa[_0x4632('0x4c')]===_0x4632('0x4a')){var _0x1f43b6=_0x5f4fb5[_0x4632('0x28')]({'plain':!![]});var _0x4e89e3=_0x4632('0x29');return db[_0x4632('0x4d')]['find']({'where':{'name':_0x4e89e3,'userProfileId':_0x1309aa[_0x4632('0x4e')]},'raw':!![]})[_0x4632('0x26')](function(_0x18cc47){if(_0x18cc47&&_0x18cc47[_0x4632('0x4f')]===0x0){return db[_0x4632('0x2a')][_0x4632('0x49')]({'name':_0x1f43b6[_0x4632('0x2d')],'resourceId':_0x1f43b6['id'],'type':_0x18cc47[_0x4632('0x2d')],'sectionId':_0x18cc47['id']},{})[_0x4632('0x26')](function(){return _0x5f4fb5;});}else{return _0x5f4fb5;}})[_0x4632('0x42')](function(_0x3e66d8){logger[_0x4632('0x2b')](_0x4632('0x50'),_0x3e66d8);throw _0x3e66d8;});}return _0x5f4fb5;})[_0x4632('0x26')](respondWithResult(_0xc3ffd0,0xc9))[_0x4632('0x42')](handleError(_0xc3ffd0,null));};exports[_0x4632('0x25')]=function(_0x32cd35,_0x6c2864){if(_0x32cd35[_0x4632('0x51')]['id']){delete _0x32cd35[_0x4632('0x51')]['id'];}return db['VoiceMail'][_0x4632('0x48')]({'where':{'id':_0x32cd35[_0x4632('0x44')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0x6c2864,null))[_0x4632('0x26')](saveUpdates(_0x32cd35[_0x4632('0x51')],null))[_0x4632('0x26')](respondWithResult(_0x6c2864,null))['catch'](handleError(_0x6c2864,null));};exports[_0x4632('0x27')]=function(_0x433fea,_0x41409d){return db['VoiceMail'][_0x4632('0x48')]({'where':{'id':_0x433fea[_0x4632('0x44')]['id']}})['then'](handleEntityNotFound(_0x41409d,null))[_0x4632('0x26')](removeEntity(_0x41409d,null))[_0x4632('0x42')](handleError(_0x41409d,null));};exports[_0x4632('0x52')]=function(_0x4b91cf,_0x3aeefd,_0x334a8e){return db[_0x4632('0x30')][_0x4632('0x53')]({'where':{'id':_0x4b91cf[_0x4632('0x44')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0x3aeefd,null))[_0x4632('0x26')](function(_0x4658de){var _0x2965df;var _0x3abcbf={},_0x58d39a={};_0x58d39a[_0x4632('0x37')]=_[_0x4632('0x33')](db['VoiceMailMessage'][_0x4632('0x54')]);_0x58d39a['query']=_['keys'](_0x4b91cf[_0x4632('0x34')]);_0x58d39a[_0x4632('0x35')]=_[_0x4632('0x36')](_0x58d39a[_0x4632('0x37')],_0x58d39a[_0x4632('0x34')]);_0x3abcbf[_0x4632('0x38')]=_[_0x4632('0x36')](_0x58d39a[_0x4632('0x37')],qs[_0x4632('0x45')](_0x4b91cf[_0x4632('0x34')][_0x4632('0x45')]));_0x3abcbf[_0x4632('0x38')]=_0x3abcbf[_0x4632('0x38')][_0x4632('0x46')]?_0x3abcbf['attributes']:_0x58d39a['model'];if(!_0x4b91cf[_0x4632('0x34')][_0x4632('0x55')](_0x4632('0x39'))){_0x3abcbf[_0x4632('0x1e')]=qs[_0x4632('0x1e')](_0x4b91cf[_0x4632('0x34')]['limit']);_0x3abcbf[_0x4632('0x1c')]=qs[_0x4632('0x1c')](_0x4b91cf[_0x4632('0x34')][_0x4632('0x1c')]);}_0x3abcbf['order']=qs['sort'](_0x4b91cf[_0x4632('0x34')]['sort']);_0x3abcbf[_0x4632('0x3b')]=qs[_0x4632('0x35')](_[_0x4632('0x56')](_0x4b91cf[_0x4632('0x34')],_0x58d39a[_0x4632('0x35')]));if(_0x4b91cf['query'][_0x4632('0x3c')]){_0x3abcbf[_0x4632('0x3b')]=_['merge'](_0x3abcbf['where'],{'$or':_[_0x4632('0x2f')](_0x3abcbf[_0x4632('0x38')],function(_0x47391f){var _0x3090d6={};_0x3090d6[_0x47391f]={'$like':'%'+_0x4b91cf['query']['filter']+'%'};return _0x3090d6;})});}_0x3abcbf['where']=_[_0x4632('0x3d')](_0x3abcbf['where'],{'mailboxuser':_0x4658de[_0x4632('0x57')]});_0x3abcbf=_[_0x4632('0x3d')]({},_0x3abcbf,_0x4b91cf[_0x4632('0x3f')]);return db[_0x4632('0x58')][_0x4632('0x59')](_0x3abcbf)[_0x4632('0x26')](respondWithFilteredResult(_0x3aeefd,_0x3abcbf));})[_0x4632('0x42')](handleError(_0x3aeefd,null));};
\ No newline at end of file
+var _0xc900=['body','params','findOne','VoiceMailMessage','findAndCountAll','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','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','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','Voicemails','UserProfileResource','error','name','send','index','map','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','VoiceMail','includeAll','include','findAll','catch','show','rawAttributes','keys','find','user','get','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0xc900,0xb3));var _0x0c90=function(_0xa4e010,_0x41c0ef){_0xa4e010=_0xa4e010-0x0;var _0x4b287e=_0xc900[_0xa4e010];return _0x4b287e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c90('0x0'));var jsonpatch=require(_0x0c90('0x1'));var rp=require(_0x0c90('0x2'));var moment=require('moment');var BPromise=require(_0x0c90('0x3'));var Mustache=require(_0x0c90('0x4'));var util=require('util');var path=require(_0x0c90('0x5'));var sox=require(_0x0c90('0x6'));var csv=require(_0x0c90('0x7'));var ejs=require(_0x0c90('0x8'));var fs=require('fs');var fs_extra=require(_0x0c90('0x9'));var _=require(_0x0c90('0xa'));var squel=require('squel');var crypto=require(_0x0c90('0xb'));var jsforce=require(_0x0c90('0xc'));var deskjs=require(_0x0c90('0xd'));var toCsv=require(_0x0c90('0x7'));var querystring=require(_0x0c90('0xe'));var Papa=require(_0x0c90('0xf'));var Redis=require(_0x0c90('0x10'));var authService=require(_0x0c90('0x11'));var qs=require(_0x0c90('0x12'));var as=require(_0x0c90('0x13'));var hardwareService=require(_0x0c90('0x14'));var logger=require(_0x0c90('0x15'))(_0x0c90('0x16'));var utils=require('../../config/utils');var config=require(_0x0c90('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c90('0x18'))['db'];function respondWithStatusCode(_0x50e7db,_0x459cdb){_0x459cdb=_0x459cdb||0xcc;return function(_0x26fc46){if(_0x26fc46){return _0x50e7db[_0x0c90('0x19')](_0x459cdb);}return _0x50e7db[_0x0c90('0x1a')](_0x459cdb)[_0x0c90('0x1b')]();};}function respondWithResult(_0x59ea8e,_0x467b32){_0x467b32=_0x467b32||0xc8;return function(_0x4451e0){if(_0x4451e0){return _0x59ea8e['status'](_0x467b32)[_0x0c90('0x1c')](_0x4451e0);}};}function respondWithFilteredResult(_0x3a492d,_0x3bd5e8){return function(_0x5bef7d){if(_0x5bef7d){var _0x5daeb7=typeof _0x3bd5e8[_0x0c90('0x1d')]===_0x0c90('0x1e')&&typeof _0x3bd5e8[_0x0c90('0x1f')]===_0x0c90('0x1e');var _0x276b92=_0x5bef7d[_0x0c90('0x20')];var _0x42321a=_0x5daeb7?0x0:_0x3bd5e8['offset'];var _0xc3bb47=_0x5daeb7?_0x5bef7d[_0x0c90('0x20')]:_0x3bd5e8[_0x0c90('0x1d')]+_0x3bd5e8[_0x0c90('0x1f')];var _0x594267;if(_0xc3bb47>=_0x276b92){_0xc3bb47=_0x276b92;_0x594267=0xc8;}else{_0x594267=0xce;}_0x3a492d[_0x0c90('0x1a')](_0x594267);return _0x3a492d[_0x0c90('0x21')](_0x0c90('0x22'),_0x42321a+'-'+_0xc3bb47+'/'+_0x276b92)[_0x0c90('0x1c')](_0x5bef7d);}return null;};}function patchUpdates(_0x315932){return function(_0xc08f54){try{jsonpatch['apply'](_0xc08f54,_0x315932,!![]);}catch(_0x365a42){return BPromise['reject'](_0x365a42);}return _0xc08f54[_0x0c90('0x23')]();};}function saveUpdates(_0x1a021e,_0x47b13c){return function(_0x2a053a){if(_0x2a053a){return _0x2a053a[_0x0c90('0x24')](_0x1a021e)[_0x0c90('0x25')](function(_0x86dee){return _0x86dee;});}return null;};}function removeEntity(_0x212164,_0x3b287c){return function(_0x4dfbc3){if(_0x4dfbc3){return _0x4dfbc3[_0x0c90('0x26')]()[_0x0c90('0x25')](function(){var _0x5695a2=_0x4dfbc3['get']({'plain':!![]});var _0x28d005=_0x0c90('0x27');return db[_0x0c90('0x28')][_0x0c90('0x26')]({'where':{'type':_0x28d005,'resourceId':_0x5695a2['id']}})['then'](function(){return _0x4dfbc3;});})[_0x0c90('0x25')](function(){_0x212164[_0x0c90('0x1a')](0xcc)[_0x0c90('0x1b')]();});}};}function handleEntityNotFound(_0x277d4a,_0x427c2b){return function(_0x114589){if(!_0x114589){_0x277d4a['sendStatus'](0x194);}return _0x114589;};}function handleError(_0x15de68,_0x22a47d){_0x22a47d=_0x22a47d||0x1f4;return function(_0x39f1b2){logger[_0x0c90('0x29')](_0x39f1b2['stack']);if(_0x39f1b2['name']){delete _0x39f1b2[_0x0c90('0x2a')];}_0x15de68[_0x0c90('0x1a')](_0x22a47d)[_0x0c90('0x2b')](_0x39f1b2);};}exports[_0x0c90('0x2c')]=function(_0x119e09,_0x562664){var _0x120136={},_0x50b156={},_0x478002={'count':0x0,'rows':[]};var _0x47a935=_[_0x0c90('0x2d')](db['VoiceMail']['rawAttributes'],function(_0x886634){return{'name':_0x886634[_0x0c90('0x2e')],'type':_0x886634[_0x0c90('0x2f')][_0x0c90('0x30')]};});_0x50b156['model']=_[_0x0c90('0x2d')](_0x47a935,'name');_0x50b156[_0x0c90('0x31')]=_['keys'](_0x119e09[_0x0c90('0x31')]);_0x50b156[_0x0c90('0x32')]=_['intersection'](_0x50b156[_0x0c90('0x33')],_0x50b156[_0x0c90('0x31')]);_0x120136[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x50b156[_0x0c90('0x33')],qs[_0x0c90('0x36')](_0x119e09[_0x0c90('0x31')][_0x0c90('0x36')]));_0x120136['attributes']=_0x120136[_0x0c90('0x34')][_0x0c90('0x37')]?_0x120136[_0x0c90('0x34')]:_0x50b156[_0x0c90('0x33')];if(!_0x119e09['query'][_0x0c90('0x38')](_0x0c90('0x39'))){_0x120136[_0x0c90('0x1f')]=qs[_0x0c90('0x1f')](_0x119e09[_0x0c90('0x31')][_0x0c90('0x1f')]);_0x120136[_0x0c90('0x1d')]=qs[_0x0c90('0x1d')](_0x119e09['query'][_0x0c90('0x1d')]);}_0x120136[_0x0c90('0x3a')]=qs['sort'](_0x119e09[_0x0c90('0x31')][_0x0c90('0x3b')]);_0x120136[_0x0c90('0x3c')]=qs[_0x0c90('0x32')](_[_0x0c90('0x3d')](_0x119e09['query'],_0x50b156[_0x0c90('0x32')]),_0x47a935);if(_0x119e09[_0x0c90('0x31')][_0x0c90('0x3e')]){_0x120136[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x120136[_0x0c90('0x3c')],{'$or':_[_0x0c90('0x2d')](_0x47a935,function(_0x1695dd){if(_0x1695dd[_0x0c90('0x2f')]!=='VIRTUAL'){var _0x2cd2c2={};_0x2cd2c2[_0x1695dd['name']]={'$like':'%'+_0x119e09[_0x0c90('0x31')]['filter']+'%'};return _0x2cd2c2;}})});}_0x120136=_[_0x0c90('0x3f')]({},_0x120136,_0x119e09[_0x0c90('0x40')]);var _0x49f8b4={'where':_0x120136['where']};return db[_0x0c90('0x41')]['count'](_0x49f8b4)[_0x0c90('0x25')](function(_0x4545bb){_0x478002[_0x0c90('0x20')]=_0x4545bb;if(_0x119e09['query'][_0x0c90('0x42')]){_0x120136[_0x0c90('0x43')]=[{'all':!![]}];}return db[_0x0c90('0x41')][_0x0c90('0x44')](_0x120136);})[_0x0c90('0x25')](function(_0x1184c4){_0x478002['rows']=_0x1184c4;return _0x478002;})[_0x0c90('0x25')](respondWithFilteredResult(_0x562664,_0x120136))[_0x0c90('0x45')](handleError(_0x562664,null));};exports[_0x0c90('0x46')]=function(_0x399115,_0x3c47c9){var _0x15d040={'raw':!![],'where':{'id':_0x399115['params']['id']}},_0x30b9df={};_0x30b9df[_0x0c90('0x33')]=_['keys'](db[_0x0c90('0x41')][_0x0c90('0x47')]);_0x30b9df[_0x0c90('0x31')]=_[_0x0c90('0x48')](_0x399115[_0x0c90('0x31')]);_0x30b9df[_0x0c90('0x32')]=_[_0x0c90('0x35')](_0x30b9df[_0x0c90('0x33')],_0x30b9df[_0x0c90('0x31')]);_0x15d040[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x30b9df[_0x0c90('0x33')],qs[_0x0c90('0x36')](_0x399115[_0x0c90('0x31')][_0x0c90('0x36')]));_0x15d040['attributes']=_0x15d040[_0x0c90('0x34')][_0x0c90('0x37')]?_0x15d040[_0x0c90('0x34')]:_0x30b9df[_0x0c90('0x33')];if(_0x399115[_0x0c90('0x31')][_0x0c90('0x42')]){_0x15d040[_0x0c90('0x43')]=[{'all':!![]}];}_0x15d040=_[_0x0c90('0x3f')]({},_0x15d040,_0x399115[_0x0c90('0x40')]);return db[_0x0c90('0x41')][_0x0c90('0x49')](_0x15d040)[_0x0c90('0x25')](handleEntityNotFound(_0x3c47c9,null))[_0x0c90('0x25')](respondWithResult(_0x3c47c9,null))[_0x0c90('0x45')](handleError(_0x3c47c9,null));};exports['create']=function(_0x1b4aac,_0x38f492){return db['VoiceMail']['create'](_0x1b4aac['body'],{})[_0x0c90('0x25')](function(_0x1205d0){var _0x460cf9=_0x1b4aac[_0x0c90('0x4a')][_0x0c90('0x4b')]({'plain':!![]});if(!_0x460cf9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x460cf9[_0x0c90('0x4c')]===_0x0c90('0x4a')){var _0x2b756d=_0x1205d0['get']({'plain':!![]});var _0x119776=_0x0c90('0x27');return db[_0x0c90('0x4d')][_0x0c90('0x49')]({'where':{'name':_0x119776,'userProfileId':_0x460cf9[_0x0c90('0x4e')]},'raw':!![]})[_0x0c90('0x25')](function(_0x42c121){if(_0x42c121&&_0x42c121[_0x0c90('0x4f')]===0x0){return db[_0x0c90('0x28')][_0x0c90('0x50')]({'name':_0x2b756d['name'],'resourceId':_0x2b756d['id'],'type':_0x42c121[_0x0c90('0x2a')],'sectionId':_0x42c121['id']},{})['then'](function(){return _0x1205d0;});}else{return _0x1205d0;}})[_0x0c90('0x45')](function(_0x67539d){logger[_0x0c90('0x29')](_0x0c90('0x51'),_0x67539d);throw _0x67539d;});}return _0x1205d0;})[_0x0c90('0x25')](respondWithResult(_0x38f492,0xc9))[_0x0c90('0x45')](handleError(_0x38f492,null));};exports['update']=function(_0x4930fc,_0x5382d9){if(_0x4930fc['body']['id']){delete _0x4930fc[_0x0c90('0x52')]['id'];}return db[_0x0c90('0x41')][_0x0c90('0x49')]({'where':{'id':_0x4930fc['params']['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x5382d9,null))[_0x0c90('0x25')](saveUpdates(_0x4930fc['body'],null))[_0x0c90('0x25')](respondWithResult(_0x5382d9,null))['catch'](handleError(_0x5382d9,null));};exports[_0x0c90('0x26')]=function(_0x8951f2,_0x42398b){return db[_0x0c90('0x41')]['find']({'where':{'id':_0x8951f2[_0x0c90('0x53')]['id']}})['then'](handleEntityNotFound(_0x42398b,null))[_0x0c90('0x25')](removeEntity(_0x42398b,null))[_0x0c90('0x45')](handleError(_0x42398b,null));};exports['getMessages']=function(_0x52b437,_0x51c356,_0x221fba){return db[_0x0c90('0x41')][_0x0c90('0x54')]({'where':{'id':_0x52b437[_0x0c90('0x53')]['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x51c356,null))['then'](function(_0x3bfd01){var _0x25ab13;var _0x5ee971={},_0x3eb725={};_0x3eb725['model']=_[_0x0c90('0x48')](db[_0x0c90('0x55')]['rawAttributes']);_0x3eb725[_0x0c90('0x31')]=_['keys'](_0x52b437['query']);_0x3eb725['filters']=_[_0x0c90('0x35')](_0x3eb725[_0x0c90('0x33')],_0x3eb725[_0x0c90('0x31')]);_0x5ee971[_0x0c90('0x34')]=_['intersection'](_0x3eb725['model'],qs[_0x0c90('0x36')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x36')]));_0x5ee971['attributes']=_0x5ee971[_0x0c90('0x34')][_0x0c90('0x37')]?_0x5ee971[_0x0c90('0x34')]:_0x3eb725['model'];if(!_0x52b437[_0x0c90('0x31')][_0x0c90('0x38')](_0x0c90('0x39'))){_0x5ee971['limit']=qs[_0x0c90('0x1f')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x1f')]);_0x5ee971[_0x0c90('0x1d')]=qs[_0x0c90('0x1d')](_0x52b437[_0x0c90('0x31')][_0x0c90('0x1d')]);}_0x5ee971[_0x0c90('0x3a')]=qs[_0x0c90('0x3b')](_0x52b437['query']['sort']);_0x5ee971[_0x0c90('0x3c')]=qs[_0x0c90('0x32')](_[_0x0c90('0x3d')](_0x52b437[_0x0c90('0x31')],_0x3eb725[_0x0c90('0x32')]));if(_0x52b437[_0x0c90('0x31')][_0x0c90('0x3e')]){_0x5ee971[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x5ee971[_0x0c90('0x3c')],{'$or':_[_0x0c90('0x2d')](_0x5ee971[_0x0c90('0x34')],function(_0x309152){var _0x164d4d={};_0x164d4d[_0x309152]={'$like':'%'+_0x52b437[_0x0c90('0x31')]['filter']+'%'};return _0x164d4d;})});}_0x5ee971[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x5ee971[_0x0c90('0x3c')],{'mailboxuser':_0x3bfd01['mailbox']});_0x5ee971=_['merge']({},_0x5ee971,_0x52b437[_0x0c90('0x40')]);return db['VoiceMailMessage'][_0x0c90('0x56')](_0x5ee971)[_0x0c90('0x25')](respondWithFilteredResult(_0x51c356,_0x5ee971));})['catch'](handleError(_0x51c356,null));};
\ No newline at end of file
index a838866..cf42ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28cf=['exports','define','VoiceMail','voice_voicemail','mailbox_context','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceMail.attributes'];(function(_0x48f80a,_0x3bb5d4){var _0x1327fb=function(_0x46293e){while(--_0x46293e){_0x48f80a['push'](_0x48f80a['shift']());}};_0x1327fb(++_0x3bb5d4);}(_0x28cf,0x12b));var _0xf28c=function(_0x179c13,_0x15e4c5){_0x179c13=_0x179c13-0x0;var _0x1ee81c=_0x28cf[_0x179c13];return _0x1ee81c;};'use strict';var _=require('lodash');var util=require(_0xf28c('0x0'));var logger=require(_0xf28c('0x1'))(_0xf28c('0x2'));var moment=require(_0xf28c('0x3'));var BPromise=require(_0xf28c('0x4'));var rp=require(_0xf28c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf28c('0x6'));var config=require(_0xf28c('0x7'));var attributes=require(_0xf28c('0x8'));module[_0xf28c('0x9')]=function(_0xd43b9,_0x525a6e){return _0xd43b9[_0xf28c('0xa')](_0xf28c('0xb'),attributes,{'tableName':_0xf28c('0xc'),'paranoid':![],'indexes':[{'name':_0xf28c('0xd'),'fields':['mailbox','context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc48=['rimraf','../../config/environment','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x1b3a5c,_0x2f9d5f){var _0x2ae8cb=function(_0x549ab8){while(--_0x549ab8){_0x1b3a5c['push'](_0x1b3a5c['shift']());}};_0x2ae8cb(++_0x2f9d5f);}(_0xbc48,0x120));var _0x8bc4=function(_0x4ed579,_0x2ea2d2){_0x4ed579=_0x4ed579-0x0;var _0x5ad91d=_0xbc48[_0x4ed579];return _0x5ad91d;};'use strict';var _=require(_0x8bc4('0x0'));var util=require(_0x8bc4('0x1'));var logger=require(_0x8bc4('0x2'))(_0x8bc4('0x3'));var moment=require(_0x8bc4('0x4'));var BPromise=require(_0x8bc4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8bc4('0x6'));var config=require(_0x8bc4('0x7'));var attributes=require(_0x8bc4('0x8'));module['exports']=function(_0xbc6671,_0x3d7371){return _0xbc6671[_0x8bc4('0x9')](_0x8bc4('0xa'),attributes,{'tableName':_0x8bc4('0xb'),'paranoid':![],'indexes':[{'name':_0x8bc4('0xc'),'fields':[_0x8bc4('0xd'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 9b7325e..0dc5a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0995=['rpc','../../config/environment','client','http','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4979af,_0x3fefaa){var _0x13f135=function(_0x3ea2e7){while(--_0x3ea2e7){_0x4979af['push'](_0x4979af['shift']());}};_0x13f135(++_0x3fefaa);}(_0x0995,0xc1));var _0x5099=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0995[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5099('0x0'));var util=require(_0x5099('0x1'));var moment=require(_0x5099('0x2'));var BPromise=require(_0x5099('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5099('0x4'))['db'];var utils=require(_0x5099('0x5'));var logger=require(_0x5099('0x6'))(_0x5099('0x7'));var config=require(_0x5099('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5099('0x9')][_0x5099('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x490fd2,_0x5e0ce7,_0xacea6a){return new BPromise(function(_0x272c6c,_0x21b4c5){return client['request'](_0x490fd2,_0xacea6a)[_0x5099('0xb')](function(_0x36e546){logger[_0x5099('0xc')](_0x5099('0xd'),_0x5e0ce7,_0x5099('0xe'));logger[_0x5099('0xf')](_0x5099('0x10'),_0x5e0ce7,_0x5099('0xe'),JSON['stringify'](_0x36e546));if(_0x36e546[_0x5099('0x11')]){if(_0x36e546[_0x5099('0x11')]['code']===0x1f4){logger[_0x5099('0x11')]('VoiceMail,\x20%s,\x20%s',_0x5e0ce7,_0x36e546[_0x5099('0x11')][_0x5099('0x12')]);return _0x21b4c5(_0x36e546[_0x5099('0x11')][_0x5099('0x12')]);}logger[_0x5099('0x11')]('VoiceMail,\x20%s,\x20%s',_0x5e0ce7,_0x36e546[_0x5099('0x11')][_0x5099('0x12')]);return _0x272c6c(_0x36e546[_0x5099('0x11')][_0x5099('0x12')]);}else{logger['info'](_0x5099('0xd'),_0x5e0ce7,'request\x20sent');_0x272c6c(_0x36e546[_0x5099('0x13')][_0x5099('0x12')]);}})['catch'](function(_0x1ae1e3){logger[_0x5099('0x11')](_0x5099('0xd'),_0x5e0ce7,_0x1ae1e3);_0x21b4c5(_0x1ae1e3);});});}
\ No newline at end of file
+var _0x2422=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','util','moment'];(function(_0x2a2d67,_0x43c11b){var _0x1d0723=function(_0x2141f7){while(--_0x2141f7){_0x2a2d67['push'](_0x2a2d67['shift']());}};_0x1d0723(++_0x43c11b);}(_0x2422,0x10f));var _0x2242=function(_0x406344,_0x5d7015){_0x406344=_0x406344-0x0;var _0x348175=_0x2422[_0x406344];return _0x348175;};'use strict';var _=require('lodash');var util=require(_0x2242('0x0'));var moment=require(_0x2242('0x1'));var BPromise=require(_0x2242('0x2'));var rs=require(_0x2242('0x3'));var fs=require('fs');var Redis=require(_0x2242('0x4'));var db=require(_0x2242('0x5'))['db'];var utils=require(_0x2242('0x6'));var logger=require(_0x2242('0x7'))(_0x2242('0x8'));var config=require(_0x2242('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2242('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56ab3c,_0x3280a2,_0x431bb7){return new BPromise(function(_0x347b02,_0x2de172){return client[_0x2242('0xb')](_0x56ab3c,_0x431bb7)[_0x2242('0xc')](function(_0x41ec2f){logger[_0x2242('0xd')](_0x2242('0xe'),_0x3280a2,'request\x20sent');logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x3280a2,_0x2242('0xf'),JSON[_0x2242('0x10')](_0x41ec2f));if(_0x41ec2f['error']){if(_0x41ec2f['error']['code']===0x1f4){logger[_0x2242('0x11')](_0x2242('0xe'),_0x3280a2,_0x41ec2f[_0x2242('0x11')][_0x2242('0x12')]);return _0x2de172(_0x41ec2f[_0x2242('0x11')]['message']);}logger[_0x2242('0x11')]('VoiceMail,\x20%s,\x20%s',_0x3280a2,_0x41ec2f[_0x2242('0x11')]['message']);return _0x347b02(_0x41ec2f[_0x2242('0x11')]['message']);}else{logger[_0x2242('0xd')](_0x2242('0xe'),_0x3280a2,_0x2242('0xf'));_0x347b02(_0x41ec2f[_0x2242('0x13')]['message']);}})[_0x2242('0x14')](function(_0x320f63){logger['error']('VoiceMail,\x20%s,\x20%s',_0x3280a2,_0x320f63);_0x2de172(_0x320f63);});});}
\ No newline at end of file
index d9d6703..fc2e6f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60b4=['./voiceMailMessage.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4c8dd1,_0x4c019b){var _0x6c8717=function(_0x3b1840){while(--_0x3b1840){_0x4c8dd1['push'](_0x4c8dd1['shift']());}};_0x6c8717(++_0x4c019b);}(_0x60b4,0x19b));var _0x460b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x60b4[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x460b('0x0'));var util=require(_0x460b('0x1'));var path=require(_0x460b('0x2'));var timeout=require('connect-timeout');var express=require(_0x460b('0x3'));var router=express[_0x460b('0x4')]();var fs_extra=require(_0x460b('0x5'));var auth=require(_0x460b('0x6'));var interaction=require(_0x460b('0x7'));var config=require(_0x460b('0x8'));var controller=require(_0x460b('0x9'));router[_0x460b('0xa')]('/',auth[_0x460b('0xb')](),controller[_0x460b('0xc')]);router[_0x460b('0xa')](_0x460b('0xd'),auth[_0x460b('0xb')](),controller['show']);router[_0x460b('0xa')]('/:id/download',auth[_0x460b('0xb')](),controller['download']);router[_0x460b('0xe')]('/',auth[_0x460b('0xb')](),controller[_0x460b('0xf')]);router[_0x460b('0x10')](_0x460b('0xd'),auth['isAuthenticated'](),controller[_0x460b('0x11')]);router[_0x460b('0x12')](_0x460b('0xd'),auth[_0x460b('0xb')](),controller[_0x460b('0x13')]);module[_0x460b('0x14')]=router;
\ No newline at end of file
+var _0xfb2d=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','download','create','update','delete','destroy','exports','multer','util'];(function(_0x25d2fa,_0x1d35c6){var _0x42d4aa=function(_0x590383){while(--_0x590383){_0x25d2fa['push'](_0x25d2fa['shift']());}};_0x42d4aa(++_0x1d35c6);}(_0xfb2d,0x8e));var _0xdfb2=function(_0x119b3e,_0x588d50){_0x119b3e=_0x119b3e-0x0;var _0x1169ae=_0xfb2d[_0x119b3e];return _0x1169ae;};'use strict';var multer=require(_0xdfb2('0x0'));var util=require(_0xdfb2('0x1'));var path=require('path');var timeout=require(_0xdfb2('0x2'));var express=require(_0xdfb2('0x3'));var router=express[_0xdfb2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdfb2('0x5'));var config=require(_0xdfb2('0x6'));var controller=require(_0xdfb2('0x7'));router[_0xdfb2('0x8')]('/',auth[_0xdfb2('0x9')](),controller['index']);router['get'](_0xdfb2('0xa'),auth[_0xdfb2('0x9')](),controller[_0xdfb2('0xb')]);router[_0xdfb2('0x8')]('/:id/download',auth[_0xdfb2('0x9')](),controller[_0xdfb2('0xc')]);router['post']('/',auth[_0xdfb2('0x9')](),controller[_0xdfb2('0xd')]);router['put'](_0xdfb2('0xa'),auth[_0xdfb2('0x9')](),controller[_0xdfb2('0xe')]);router[_0xdfb2('0xf')](_0xdfb2('0xa'),auth[_0xdfb2('0x9')](),controller[_0xdfb2('0x10')]);module[_0xdfb2('0x11')]=router;
\ No newline at end of file
index da79931..d100424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3439=['VIRTUAL','getDataValue','INTEGER','STRING','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports'];(function(_0x5a93f8,_0x582d2c){var _0x245f26=function(_0x32b049){while(--_0x32b049){_0x5a93f8['push'](_0x5a93f8['shift']());}};_0x245f26(++_0x582d2c);}(_0x3439,0x1de));var _0x9343=function(_0x547391,_0x48c802){_0x547391=_0x547391-0x0;var _0x4b8d63=_0x3439[_0x547391];return _0x4b8d63;};'use strict';var Sequelize=require(_0x9343('0x0'));module[_0x9343('0x1')]={'name':{'type':Sequelize[_0x9343('0x2')],'get':function(_0x116b10){return this[_0x9343('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x9343('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0x9343('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x9343('0x5')],'defaultValue':''},'stamp':{'type':_0x9343('0x7'),'defaultValue':Sequelize[_0x9343('0x8')](_0x9343('0x9'))}};
\ No newline at end of file
+var _0x12be=['INTEGER','STRING','TIMESTAMP','literal','sequelize','exports','VIRTUAL','getDataValue'];(function(_0x4bce8d,_0x212726){var _0x36d948=function(_0x53c2f1){while(--_0x53c2f1){_0x4bce8d['push'](_0x4bce8d['shift']());}};_0x36d948(++_0x212726);}(_0x12be,0x17c));var _0xe12b=function(_0x121886,_0x8cd8e5){_0x121886=_0x121886-0x0;var _0x20ca01=_0x12be[_0x121886];return _0x20ca01;};'use strict';var Sequelize=require(_0xe12b('0x0'));module[_0xe12b('0x1')]={'name':{'type':Sequelize[_0xe12b('0x2')],'get':function(_0x35ecbe){return this[_0xe12b('0x3')]('id');}},'msgnum':{'type':Sequelize[_0xe12b('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xe12b('0x5')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xe12b('0x5')],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xe12b('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xe12b('0x5')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xe12b('0x5')],'defaultValue':''},'stamp':{'type':_0xe12b('0x6'),'defaultValue':Sequelize[_0xe12b('0x7')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index 6b9f47c..4a99371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35b9=['json','undefined','count','offset','limit','Content-Range','apply','save','update','destroy','error','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','key','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','show','find','catch','create','body','params','msg_id','recording','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end'];(function(_0x178e81,_0x2a31bb){var _0x3b1a6c=function(_0x5615e6){while(--_0x5615e6){_0x178e81['push'](_0x178e81['shift']());}};_0x3b1a6c(++_0x2a31bb);}(_0x35b9,0x135));var _0x935b=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x35b9[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x935b('0x0'));var rimraf=require(_0x935b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x935b('0x2'));var rp=require(_0x935b('0x3'));var moment=require(_0x935b('0x4'));var BPromise=require(_0x935b('0x5'));var Mustache=require(_0x935b('0x6'));var util=require(_0x935b('0x7'));var path=require(_0x935b('0x8'));var sox=require(_0x935b('0x9'));var csv=require(_0x935b('0xa'));var ejs=require(_0x935b('0xb'));var fs=require('fs');var fs_extra=require(_0x935b('0xc'));var _=require(_0x935b('0xd'));var squel=require(_0x935b('0xe'));var crypto=require('crypto');var jsforce=require(_0x935b('0xf'));var deskjs=require(_0x935b('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x935b('0x11'));var authService=require(_0x935b('0x12'));var qs=require(_0x935b('0x13'));var as=require(_0x935b('0x14'));var hardwareService=require(_0x935b('0x15'));var logger=require('../../config/logger')(_0x935b('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x935b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47deba,_0x561b7b){_0x561b7b=_0x561b7b||0xcc;return function(_0x45622a){if(_0x45622a){return _0x47deba[_0x935b('0x18')](_0x561b7b);}return _0x47deba[_0x935b('0x19')](_0x561b7b)[_0x935b('0x1a')]();};}function respondWithResult(_0x89c2c5,_0x4ac3a6){_0x4ac3a6=_0x4ac3a6||0xc8;return function(_0x14e3ff){if(_0x14e3ff){return _0x89c2c5[_0x935b('0x19')](_0x4ac3a6)[_0x935b('0x1b')](_0x14e3ff);}};}function respondWithFilteredResult(_0x31e60d,_0x59c839){return function(_0x21d25c){if(_0x21d25c){var _0x5ce6e1=typeof _0x59c839['offset']===_0x935b('0x1c')&&typeof _0x59c839['limit']==='undefined';var _0x26b4de=_0x21d25c[_0x935b('0x1d')];var _0x4d135a=_0x5ce6e1?0x0:_0x59c839[_0x935b('0x1e')];var _0x58f02a=_0x5ce6e1?_0x21d25c[_0x935b('0x1d')]:_0x59c839['offset']+_0x59c839[_0x935b('0x1f')];var _0x16c191;if(_0x58f02a>=_0x26b4de){_0x58f02a=_0x26b4de;_0x16c191=0xc8;}else{_0x16c191=0xce;}_0x31e60d[_0x935b('0x19')](_0x16c191);return _0x31e60d['set'](_0x935b('0x20'),_0x4d135a+'-'+_0x58f02a+'/'+_0x26b4de)[_0x935b('0x1b')](_0x21d25c);}return null;};}function patchUpdates(_0x40c28d){return function(_0x362eca){try{jsonpatch[_0x935b('0x21')](_0x362eca,_0x40c28d,!![]);}catch(_0x35f80e){return BPromise['reject'](_0x35f80e);}return _0x362eca[_0x935b('0x22')]();};}function saveUpdates(_0x102555,_0x21ab8d){return function(_0x337221){if(_0x337221){return _0x337221[_0x935b('0x23')](_0x102555)['then'](function(_0x3f3a0c){return _0x3f3a0c;});}return null;};}function removeEntity(_0xf6777e,_0x1cc894){return function(_0x115d60){if(_0x115d60){return _0x115d60[_0x935b('0x24')]()['then'](function(){_0xf6777e['status'](0xcc)[_0x935b('0x1a')]();});}};}function handleEntityNotFound(_0x1b3771,_0x561c26){return function(_0x14ba24){if(!_0x14ba24){_0x1b3771[_0x935b('0x18')](0x194);}return _0x14ba24;};}function handleError(_0x192751,_0x4e2a22){_0x4e2a22=_0x4e2a22||0x1f4;return function(_0x516681){logger[_0x935b('0x25')](_0x516681['stack']);if(_0x516681[_0x935b('0x26')]){delete _0x516681[_0x935b('0x26')];}_0x192751['status'](_0x4e2a22)[_0x935b('0x27')](_0x516681);};}exports[_0x935b('0x28')]=function(_0x42a9bf,_0x5f1e5f){var _0xec5aa7={},_0x5bb626={},_0x1c229a={'count':0x0,'rows':[]};var _0x481c7a=_[_0x935b('0x29')](db[_0x935b('0x2a')][_0x935b('0x2b')],function(_0x26af7d){return{'name':_0x26af7d[_0x935b('0x2c')],'type':_0x26af7d[_0x935b('0x2d')][_0x935b('0x2e')]};});_0x5bb626[_0x935b('0x2f')]=_[_0x935b('0x30')](_['map'](_0x481c7a,_0x935b('0x26')),[_0x935b('0x26')]);_0x5bb626['query']=_[_0x935b('0x31')](_0x42a9bf[_0x935b('0x32')]);_0x5bb626[_0x935b('0x33')]=_[_0x935b('0x34')](_0x5bb626[_0x935b('0x2f')],_0x5bb626[_0x935b('0x32')]);_0xec5aa7[_0x935b('0x35')]=_[_0x935b('0x34')](_0x5bb626[_0x935b('0x2f')],qs[_0x935b('0x36')](_0x42a9bf[_0x935b('0x32')][_0x935b('0x36')]));_0xec5aa7[_0x935b('0x35')]=_0xec5aa7[_0x935b('0x35')][_0x935b('0x37')]?_0xec5aa7[_0x935b('0x35')]:_0x5bb626[_0x935b('0x2f')];if(!_0x42a9bf['query'][_0x935b('0x38')](_0x935b('0x39'))){_0xec5aa7[_0x935b('0x1f')]=qs['limit'](_0x42a9bf[_0x935b('0x32')]['limit']);_0xec5aa7['offset']=qs[_0x935b('0x1e')](_0x42a9bf[_0x935b('0x32')][_0x935b('0x1e')]);}_0xec5aa7[_0x935b('0x3a')]=qs[_0x935b('0x3b')](_0x42a9bf[_0x935b('0x32')][_0x935b('0x3b')]);_0xec5aa7[_0x935b('0x3c')]=qs[_0x935b('0x33')](_['pick'](_0x42a9bf[_0x935b('0x32')],_0x5bb626['filters']),_0x481c7a);if(_0x42a9bf[_0x935b('0x32')][_0x935b('0x3d')]){_0xec5aa7[_0x935b('0x3c')]=_[_0x935b('0x3e')](_0xec5aa7[_0x935b('0x3c')],{'$or':_[_0x935b('0x29')](_0x481c7a,function(_0x49c757){if(_0x49c757[_0x935b('0x2d')]!==_0x935b('0x3f')){var _0x377d16={};_0x377d16[_0x49c757[_0x935b('0x26')]]={'$like':'%'+_0x42a9bf[_0x935b('0x32')][_0x935b('0x3d')]+'%'};return _0x377d16;}})});}_0xec5aa7=_[_0x935b('0x3e')]({},_0xec5aa7,_0x42a9bf[_0x935b('0x40')]);var _0x33e917={'where':_0xec5aa7[_0x935b('0x3c')]};return db[_0x935b('0x2a')][_0x935b('0x1d')](_0x33e917)[_0x935b('0x41')](function(_0x5ba537){_0x1c229a[_0x935b('0x1d')]=_0x5ba537;if(_0x42a9bf['query'][_0x935b('0x42')]){_0xec5aa7[_0x935b('0x43')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x935b('0x44')](_0xec5aa7);})['then'](function(_0x353577){_0x1c229a['rows']=_0x353577;return _0x1c229a;})[_0x935b('0x41')](respondWithFilteredResult(_0x5f1e5f,_0xec5aa7))['catch'](handleError(_0x5f1e5f,null));};exports[_0x935b('0x45')]=function(_0x4858bf,_0x3e3f93){var _0x581482={'raw':!![],'where':{'id':_0x4858bf['params']['id']}},_0x4ce497={};_0x4ce497[_0x935b('0x2f')]=_[_0x935b('0x31')](db['VoiceMailMessage'][_0x935b('0x2b')]);_0x4ce497[_0x935b('0x32')]=_['keys'](_0x4858bf[_0x935b('0x32')]);_0x4ce497['filters']=_[_0x935b('0x34')](_0x4ce497[_0x935b('0x2f')],_0x4ce497[_0x935b('0x32')]);_0x581482[_0x935b('0x35')]=_[_0x935b('0x34')](_0x4ce497[_0x935b('0x2f')],qs[_0x935b('0x36')](_0x4858bf[_0x935b('0x32')][_0x935b('0x36')]));_0x581482[_0x935b('0x35')]=_0x581482[_0x935b('0x35')][_0x935b('0x37')]?_0x581482[_0x935b('0x35')]:_0x4ce497[_0x935b('0x2f')];if(_0x4858bf[_0x935b('0x32')][_0x935b('0x42')]){_0x581482[_0x935b('0x43')]=[{'all':!![]}];}_0x581482=_[_0x935b('0x3e')]({},_0x581482,_0x4858bf[_0x935b('0x40')]);return db['VoiceMailMessage'][_0x935b('0x46')](_0x581482)['then'](handleEntityNotFound(_0x3e3f93,null))[_0x935b('0x41')](respondWithResult(_0x3e3f93,null))[_0x935b('0x47')](handleError(_0x3e3f93,null));};exports[_0x935b('0x48')]=function(_0x40c4fa,_0x25f65e){return db[_0x935b('0x2a')]['create'](_0x40c4fa[_0x935b('0x49')],{})[_0x935b('0x41')](respondWithResult(_0x25f65e,0xc9))[_0x935b('0x47')](handleError(_0x25f65e,null));};exports['update']=function(_0x5d849d,_0x3f9496){if(_0x5d849d[_0x935b('0x49')]['id']){delete _0x5d849d[_0x935b('0x49')]['id'];}return db[_0x935b('0x2a')][_0x935b('0x46')]({'where':{'id':_0x5d849d[_0x935b('0x4a')]['id']}})[_0x935b('0x41')](handleEntityNotFound(_0x3f9496,null))[_0x935b('0x41')](saveUpdates(_0x5d849d[_0x935b('0x49')],null))[_0x935b('0x41')](respondWithResult(_0x3f9496,null))[_0x935b('0x47')](handleError(_0x3f9496,null));};exports['destroy']=function(_0x388834,_0x594de0){return db[_0x935b('0x2a')][_0x935b('0x46')]({'where':{'id':_0x388834['params']['id']}})[_0x935b('0x41')](handleEntityNotFound(_0x594de0,null))['then'](removeEntity(_0x594de0,null))['catch'](handleError(_0x594de0,null));};exports['download']=function(_0x9bb553,_0x2dfeb9,_0x560816){return db[_0x935b('0x2a')]['find']({'where':{'id':_0x9bb553['params']['id']},'attributes':['id','recording',_0x935b('0x4b')]})['then'](handleEntityNotFound(_0x2dfeb9,null))[_0x935b('0x41')](function(_0x3a815d){if(_0x3a815d){if(!_0x3a815d[_0x935b('0x4c')]){throw new db['Sequelize']['ValidationError'](_0x935b('0x4d'));}var _0x3987a0={'Content-Type':_0x935b('0x4e'),'Content-Disposition':_0x935b('0x4f')};if(_0x3a815d[_0x935b('0x4b')]){_0x3987a0[_0x935b('0x50')]=_0x935b('0x51')+_0x3a815d[_0x935b('0x4b')]+_0x935b('0x52');}_0x2dfeb9[_0x935b('0x53')](_0x3987a0);return _0x2dfeb9[_0x935b('0x27')](new Buffer(_0x3a815d[_0x935b('0x4c')]));}})[_0x935b('0x47')](handleError(_0x2dfeb9,null));};
\ No newline at end of file
+var _0xcd02=['undefined','count','offset','limit','set','Content-Range','apply','reject','then','error','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','differenceBy','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','params','find','create','update','body','destroy','recording','msg_id','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','sendStatus','status','end','json'];(function(_0x55606c,_0x31c03b){var _0x70535=function(_0x368f76){while(--_0x368f76){_0x55606c['push'](_0x55606c['shift']());}};_0x70535(++_0x31c03b);}(_0xcd02,0x13a));var _0x2cd0=function(_0x2389fb,_0x18c3e6){_0x2389fb=_0x2389fb-0x0;var _0x5160db=_0xcd02[_0x2389fb];return _0x5160db;};'use strict';var emlformat=require(_0x2cd0('0x0'));var rimraf=require(_0x2cd0('0x1'));var zipdir=require(_0x2cd0('0x2'));var jsonpatch=require(_0x2cd0('0x3'));var rp=require(_0x2cd0('0x4'));var moment=require('moment');var BPromise=require(_0x2cd0('0x5'));var Mustache=require(_0x2cd0('0x6'));var util=require(_0x2cd0('0x7'));var path=require(_0x2cd0('0x8'));var sox=require(_0x2cd0('0x9'));var csv=require(_0x2cd0('0xa'));var ejs=require(_0x2cd0('0xb'));var fs=require('fs');var fs_extra=require(_0x2cd0('0xc'));var _=require('lodash');var squel=require(_0x2cd0('0xd'));var crypto=require(_0x2cd0('0xe'));var jsforce=require(_0x2cd0('0xf'));var deskjs=require(_0x2cd0('0x10'));var toCsv=require(_0x2cd0('0xa'));var querystring=require(_0x2cd0('0x11'));var Papa=require(_0x2cd0('0x12'));var Redis=require(_0x2cd0('0x13'));var authService=require(_0x2cd0('0x14'));var qs=require(_0x2cd0('0x15'));var as=require(_0x2cd0('0x16'));var hardwareService=require(_0x2cd0('0x17'));var logger=require(_0x2cd0('0x18'))(_0x2cd0('0x19'));var utils=require(_0x2cd0('0x1a'));var config=require(_0x2cd0('0x1b'));var licenseUtil=require(_0x2cd0('0x1c'));var db=require(_0x2cd0('0x1d'))['db'];function respondWithStatusCode(_0xdd667e,_0x1b5559){_0x1b5559=_0x1b5559||0xcc;return function(_0x1a05f7){if(_0x1a05f7){return _0xdd667e[_0x2cd0('0x1e')](_0x1b5559);}return _0xdd667e[_0x2cd0('0x1f')](_0x1b5559)[_0x2cd0('0x20')]();};}function respondWithResult(_0x59fc91,_0x2225bb){_0x2225bb=_0x2225bb||0xc8;return function(_0x4ec20c){if(_0x4ec20c){return _0x59fc91[_0x2cd0('0x1f')](_0x2225bb)[_0x2cd0('0x21')](_0x4ec20c);}};}function respondWithFilteredResult(_0x469162,_0x4a78e4){return function(_0x121055){if(_0x121055){var _0x5ad7d4=typeof _0x4a78e4['offset']===_0x2cd0('0x22')&&typeof _0x4a78e4['limit']===_0x2cd0('0x22');var _0x5928a4=_0x121055[_0x2cd0('0x23')];var _0x1a541c=_0x5ad7d4?0x0:_0x4a78e4['offset'];var _0x25c38c=_0x5ad7d4?_0x121055[_0x2cd0('0x23')]:_0x4a78e4[_0x2cd0('0x24')]+_0x4a78e4[_0x2cd0('0x25')];var _0x129473;if(_0x25c38c>=_0x5928a4){_0x25c38c=_0x5928a4;_0x129473=0xc8;}else{_0x129473=0xce;}_0x469162[_0x2cd0('0x1f')](_0x129473);return _0x469162[_0x2cd0('0x26')](_0x2cd0('0x27'),_0x1a541c+'-'+_0x25c38c+'/'+_0x5928a4)[_0x2cd0('0x21')](_0x121055);}return null;};}function patchUpdates(_0x690f6c){return function(_0x22075f){try{jsonpatch[_0x2cd0('0x28')](_0x22075f,_0x690f6c,!![]);}catch(_0x510bcd){return BPromise[_0x2cd0('0x29')](_0x510bcd);}return _0x22075f['save']();};}function saveUpdates(_0x4cdd3f,_0x1573ca){return function(_0x4e5053){if(_0x4e5053){return _0x4e5053['update'](_0x4cdd3f)[_0x2cd0('0x2a')](function(_0x17080a){return _0x17080a;});}return null;};}function removeEntity(_0x184d9c,_0x750dce){return function(_0xc5f2d4){if(_0xc5f2d4){return _0xc5f2d4['destroy']()[_0x2cd0('0x2a')](function(){_0x184d9c[_0x2cd0('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4be443,_0x124d87){return function(_0x439363){if(!_0x439363){_0x4be443['sendStatus'](0x194);}return _0x439363;};}function handleError(_0x279e9f,_0x391584){_0x391584=_0x391584||0x1f4;return function(_0x4351fc){logger[_0x2cd0('0x2b')](_0x4351fc['stack']);if(_0x4351fc['name']){delete _0x4351fc['name'];}_0x279e9f[_0x2cd0('0x1f')](_0x391584)[_0x2cd0('0x2c')](_0x4351fc);};}exports[_0x2cd0('0x2d')]=function(_0x59c040,_0x2f6cea){var _0x5498fd={},_0x7b963a={},_0x5855e1={'count':0x0,'rows':[]};var _0x18e697=_[_0x2cd0('0x2e')](db[_0x2cd0('0x2f')][_0x2cd0('0x30')],function(_0x302b8f){return{'name':_0x302b8f[_0x2cd0('0x31')],'type':_0x302b8f[_0x2cd0('0x32')]['key']};});_0x7b963a['model']=_[_0x2cd0('0x33')](_[_0x2cd0('0x2e')](_0x18e697,_0x2cd0('0x34')),[_0x2cd0('0x34')]);_0x7b963a[_0x2cd0('0x35')]=_[_0x2cd0('0x36')](_0x59c040[_0x2cd0('0x35')]);_0x7b963a[_0x2cd0('0x37')]=_[_0x2cd0('0x38')](_0x7b963a[_0x2cd0('0x39')],_0x7b963a[_0x2cd0('0x35')]);_0x5498fd[_0x2cd0('0x3a')]=_['intersection'](_0x7b963a[_0x2cd0('0x39')],qs[_0x2cd0('0x3b')](_0x59c040['query']['fields']));_0x5498fd[_0x2cd0('0x3a')]=_0x5498fd[_0x2cd0('0x3a')][_0x2cd0('0x3c')]?_0x5498fd['attributes']:_0x7b963a['model'];if(!_0x59c040[_0x2cd0('0x35')][_0x2cd0('0x3d')]('nolimit')){_0x5498fd[_0x2cd0('0x25')]=qs['limit'](_0x59c040[_0x2cd0('0x35')][_0x2cd0('0x25')]);_0x5498fd[_0x2cd0('0x24')]=qs[_0x2cd0('0x24')](_0x59c040['query'][_0x2cd0('0x24')]);}_0x5498fd['order']=qs['sort'](_0x59c040[_0x2cd0('0x35')][_0x2cd0('0x3e')]);_0x5498fd['where']=qs[_0x2cd0('0x37')](_[_0x2cd0('0x3f')](_0x59c040[_0x2cd0('0x35')],_0x7b963a[_0x2cd0('0x37')]),_0x18e697);if(_0x59c040[_0x2cd0('0x35')][_0x2cd0('0x40')]){_0x5498fd[_0x2cd0('0x41')]=_[_0x2cd0('0x42')](_0x5498fd[_0x2cd0('0x41')],{'$or':_[_0x2cd0('0x2e')](_0x18e697,function(_0x5961f4){if(_0x5961f4['type']!==_0x2cd0('0x43')){var _0x2cd1e4={};_0x2cd1e4[_0x5961f4[_0x2cd0('0x34')]]={'$like':'%'+_0x59c040[_0x2cd0('0x35')][_0x2cd0('0x40')]+'%'};return _0x2cd1e4;}})});}_0x5498fd=_[_0x2cd0('0x42')]({},_0x5498fd,_0x59c040['options']);var _0x18fb82={'where':_0x5498fd[_0x2cd0('0x41')]};return db['VoiceMailMessage']['count'](_0x18fb82)[_0x2cd0('0x2a')](function(_0x1bd8ea){_0x5855e1[_0x2cd0('0x23')]=_0x1bd8ea;if(_0x59c040[_0x2cd0('0x35')]['includeAll']){_0x5498fd[_0x2cd0('0x44')]=[{'all':!![]}];}return db[_0x2cd0('0x2f')][_0x2cd0('0x45')](_0x5498fd);})['then'](function(_0x370260){_0x5855e1[_0x2cd0('0x46')]=_0x370260;return _0x5855e1;})[_0x2cd0('0x2a')](respondWithFilteredResult(_0x2f6cea,_0x5498fd))[_0x2cd0('0x47')](handleError(_0x2f6cea,null));};exports[_0x2cd0('0x48')]=function(_0xdcc5c7,_0x5076f4){var _0x4f0a63={'raw':!![],'where':{'id':_0xdcc5c7[_0x2cd0('0x49')]['id']}},_0x4905db={};_0x4905db[_0x2cd0('0x39')]=_[_0x2cd0('0x36')](db['VoiceMailMessage'][_0x2cd0('0x30')]);_0x4905db[_0x2cd0('0x35')]=_[_0x2cd0('0x36')](_0xdcc5c7[_0x2cd0('0x35')]);_0x4905db['filters']=_[_0x2cd0('0x38')](_0x4905db[_0x2cd0('0x39')],_0x4905db[_0x2cd0('0x35')]);_0x4f0a63[_0x2cd0('0x3a')]=_[_0x2cd0('0x38')](_0x4905db[_0x2cd0('0x39')],qs[_0x2cd0('0x3b')](_0xdcc5c7[_0x2cd0('0x35')][_0x2cd0('0x3b')]));_0x4f0a63[_0x2cd0('0x3a')]=_0x4f0a63[_0x2cd0('0x3a')][_0x2cd0('0x3c')]?_0x4f0a63['attributes']:_0x4905db['model'];if(_0xdcc5c7[_0x2cd0('0x35')]['includeAll']){_0x4f0a63['include']=[{'all':!![]}];}_0x4f0a63=_[_0x2cd0('0x42')]({},_0x4f0a63,_0xdcc5c7['options']);return db[_0x2cd0('0x2f')][_0x2cd0('0x4a')](_0x4f0a63)[_0x2cd0('0x2a')](handleEntityNotFound(_0x5076f4,null))[_0x2cd0('0x2a')](respondWithResult(_0x5076f4,null))[_0x2cd0('0x47')](handleError(_0x5076f4,null));};exports[_0x2cd0('0x4b')]=function(_0x36009a,_0x448bd8){return db['VoiceMailMessage']['create'](_0x36009a['body'],{})[_0x2cd0('0x2a')](respondWithResult(_0x448bd8,0xc9))['catch'](handleError(_0x448bd8,null));};exports[_0x2cd0('0x4c')]=function(_0x2f7790,_0x35e1e0){if(_0x2f7790['body']['id']){delete _0x2f7790[_0x2cd0('0x4d')]['id'];}return db[_0x2cd0('0x2f')][_0x2cd0('0x4a')]({'where':{'id':_0x2f7790['params']['id']}})[_0x2cd0('0x2a')](handleEntityNotFound(_0x35e1e0,null))[_0x2cd0('0x2a')](saveUpdates(_0x2f7790['body'],null))[_0x2cd0('0x2a')](respondWithResult(_0x35e1e0,null))[_0x2cd0('0x47')](handleError(_0x35e1e0,null));};exports[_0x2cd0('0x4e')]=function(_0xf4822,_0x2a8c37){return db[_0x2cd0('0x2f')][_0x2cd0('0x4a')]({'where':{'id':_0xf4822[_0x2cd0('0x49')]['id']}})['then'](handleEntityNotFound(_0x2a8c37,null))[_0x2cd0('0x2a')](removeEntity(_0x2a8c37,null))[_0x2cd0('0x47')](handleError(_0x2a8c37,null));};exports['download']=function(_0x20f943,_0x1ad867,_0x3c21ac){return db[_0x2cd0('0x2f')][_0x2cd0('0x4a')]({'where':{'id':_0x20f943['params']['id']},'attributes':['id',_0x2cd0('0x4f'),_0x2cd0('0x50')]})[_0x2cd0('0x2a')](handleEntityNotFound(_0x1ad867,null))['then'](function(_0x93cac6){if(_0x93cac6){if(!_0x93cac6[_0x2cd0('0x4f')]){throw new db['Sequelize'][(_0x2cd0('0x51'))](_0x2cd0('0x52'));}var _0x402497={'Content-Type':_0x2cd0('0x53'),'Content-Disposition':'attachment'};if(_0x93cac6[_0x2cd0('0x50')]){_0x402497[_0x2cd0('0x54')]=_0x2cd0('0x55')+_0x93cac6[_0x2cd0('0x50')]+_0x2cd0('0x56');}_0x1ad867[_0x2cd0('0x26')](_0x402497);return _0x1ad867['send'](new Buffer(_0x93cac6[_0x2cd0('0x4f')]));}})[_0x2cd0('0x47')](handleError(_0x1ad867,null));};
\ No newline at end of file
index c4afe4d..9d11caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6832=['define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports'];(function(_0x513e89,_0x56c2dc){var _0x4bcf44=function(_0x1945e0){while(--_0x1945e0){_0x513e89['push'](_0x513e89['shift']());}};_0x4bcf44(++_0x56c2dc);}(_0x6832,0xd4));var _0x2683=function(_0x4797f8,_0x2ebab8){_0x4797f8=_0x4797f8-0x0;var _0x4062be=_0x6832[_0x4797f8];return _0x4062be;};'use strict';var _=require(_0x2683('0x0'));var util=require('util');var logger=require(_0x2683('0x1'))('api');var moment=require('moment');var BPromise=require(_0x2683('0x2'));var rp=require(_0x2683('0x3'));var fs=require('fs');var path=require(_0x2683('0x4'));var rimraf=require(_0x2683('0x5'));var config=require(_0x2683('0x6'));var attributes=require(_0x2683('0x7'));module[_0x2683('0x8')]=function(_0x2200bd,_0x4673e4){return _0x2200bd[_0x2683('0x9')](_0x2683('0xa'),attributes,{'tableName':_0x2683('0xb'),'paranoid':![],'indexes':[{'name':_0x2683('0xc'),'fields':[_0x2683('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x8446=['dir','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x8446,0x1e1));var _0x6844=function(_0x18b73e,_0x39b3f2){_0x18b73e=_0x18b73e-0x0;var _0x25fa91=_0x8446[_0x18b73e];return _0x25fa91;};'use strict';var _=require(_0x6844('0x0'));var util=require('util');var logger=require(_0x6844('0x1'))(_0x6844('0x2'));var moment=require(_0x6844('0x3'));var BPromise=require(_0x6844('0x4'));var rp=require(_0x6844('0x5'));var fs=require('fs');var path=require(_0x6844('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6844('0x7'));module['exports']=function(_0xeb68ff,_0x47505a){return _0xeb68ff[_0x6844('0x8')](_0x6844('0x9'),attributes,{'tableName':_0x6844('0xa'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0x6844('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index fc469c9..1127b5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca09=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x119434,_0x3b835b){var _0x1c41a5=function(_0x190d53){while(--_0x190d53){_0x119434['push'](_0x119434['shift']());}};_0x1c41a5(++_0x3b835b);}(_0xca09,0x142));var _0x9ca0=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xca09[_0x432682];return _0x463d05;};'use strict';var _=require(_0x9ca0('0x0'));var util=require(_0x9ca0('0x1'));var moment=require(_0x9ca0('0x2'));var BPromise=require(_0x9ca0('0x3'));var rs=require(_0x9ca0('0x4'));var fs=require('fs');var Redis=require(_0x9ca0('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9ca0('0x6'));var logger=require('../../config/logger')(_0x9ca0('0x7'));var config=require(_0x9ca0('0x8'));var jayson=require(_0x9ca0('0x9'));var client=jayson[_0x9ca0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b13fc,_0x59cc1d,_0x5d032d){return new BPromise(function(_0x7a1d13,_0x105f56){return client[_0x9ca0('0xb')](_0x5b13fc,_0x5d032d)[_0x9ca0('0xc')](function(_0x11330d){logger[_0x9ca0('0xd')](_0x9ca0('0xe'),_0x59cc1d,_0x9ca0('0xf'));logger[_0x9ca0('0x10')](_0x9ca0('0x11'),_0x59cc1d,_0x9ca0('0xf'),JSON[_0x9ca0('0x12')](_0x11330d));if(_0x11330d[_0x9ca0('0x13')]){if(_0x11330d[_0x9ca0('0x13')]['code']===0x1f4){logger['error'](_0x9ca0('0xe'),_0x59cc1d,_0x11330d[_0x9ca0('0x13')][_0x9ca0('0x14')]);return _0x105f56(_0x11330d[_0x9ca0('0x13')][_0x9ca0('0x14')]);}logger['error'](_0x9ca0('0xe'),_0x59cc1d,_0x11330d[_0x9ca0('0x13')][_0x9ca0('0x14')]);return _0x7a1d13(_0x11330d[_0x9ca0('0x13')][_0x9ca0('0x14')]);}else{logger[_0x9ca0('0xd')]('VoiceMailMessage,\x20%s,\x20%s',_0x59cc1d,_0x9ca0('0xf'));_0x7a1d13(_0x11330d[_0x9ca0('0x15')][_0x9ca0('0x14')]);}})[_0x9ca0('0x16')](function(_0x360901){logger['error'](_0x9ca0('0xe'),_0x59cc1d,_0x360901);_0x105f56(_0x360901);});});}
\ No newline at end of file
+var _0xdab6=['message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','error','VoiceMailMessage,\x20%s,\x20%s'];(function(_0x218f5c,_0xec0162){var _0x33bdf8=function(_0x3ecc60){while(--_0x3ecc60){_0x218f5c['push'](_0x218f5c['shift']());}};_0x33bdf8(++_0xec0162);}(_0xdab6,0xd3));var _0x6dab=function(_0x2877ef,_0x4defc0){_0x2877ef=_0x2877ef-0x0;var _0x39a207=_0xdab6[_0x2877ef];return _0x39a207;};'use strict';var _=require(_0x6dab('0x0'));var util=require(_0x6dab('0x1'));var moment=require(_0x6dab('0x2'));var BPromise=require(_0x6dab('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6dab('0x4'));var db=require(_0x6dab('0x5'))['db'];var utils=require(_0x6dab('0x6'));var logger=require(_0x6dab('0x7'))(_0x6dab('0x8'));var config=require(_0x6dab('0x9'));var jayson=require(_0x6dab('0xa'));var client=jayson[_0x6dab('0xb')][_0x6dab('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x184aff,_0x1cdd89,_0x654c28){return new BPromise(function(_0x4ef2a3,_0xde48de){return client['request'](_0x184aff,_0x654c28)[_0x6dab('0xd')](function(_0x27c66e){logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x1cdd89,_0x6dab('0xe'));logger['debug']('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x1cdd89,'request\x20sent',JSON['stringify'](_0x27c66e));if(_0x27c66e[_0x6dab('0xf')]){if(_0x27c66e[_0x6dab('0xf')]['code']===0x1f4){logger['error'](_0x6dab('0x10'),_0x1cdd89,_0x27c66e[_0x6dab('0xf')][_0x6dab('0x11')]);return _0xde48de(_0x27c66e[_0x6dab('0xf')][_0x6dab('0x11')]);}logger[_0x6dab('0xf')](_0x6dab('0x10'),_0x1cdd89,_0x27c66e[_0x6dab('0xf')][_0x6dab('0x11')]);return _0x4ef2a3(_0x27c66e[_0x6dab('0xf')][_0x6dab('0x11')]);}else{logger['info'](_0x6dab('0x10'),_0x1cdd89,'request\x20sent');_0x4ef2a3(_0x27c66e['result'][_0x6dab('0x11')]);}})[_0x6dab('0x12')](function(_0x410606){logger[_0x6dab('0xf')](_0x6dab('0x10'),_0x1cdd89,_0x410606);_0xde48de(_0x410606);});});}
\ No newline at end of file
index a85d1df..cc1c65c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb591=['multer','util','path','connect-timeout','express','../../components/auth/service','./voiceMusicOnHold.controller','isAuthenticated','get','/:id','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','exports'];(function(_0x4a4245,_0x462cee){var _0x13a817=function(_0x3672c9){while(--_0x3672c9){_0x4a4245['push'](_0x4a4245['shift']());}};_0x13a817(++_0x462cee);}(_0xb591,0x126));var _0x1b59=function(_0x2cf54d,_0x505206){_0x2cf54d=_0x2cf54d-0x0;var _0x4b2cd3=_0xb591[_0x2cf54d];return _0x4b2cd3;};'use strict';var multer=require(_0x1b59('0x0'));var util=require(_0x1b59('0x1'));var path=require(_0x1b59('0x2'));var timeout=require(_0x1b59('0x3'));var express=require(_0x1b59('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1b59('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1b59('0x6'));router['get']('/',auth[_0x1b59('0x7')](),controller['index']);router[_0x1b59('0x8')](_0x1b59('0x9'),auth[_0x1b59('0x7')](),controller['show']);router[_0x1b59('0x8')](_0x1b59('0xa'),auth['isAuthenticated'](),controller[_0x1b59('0xb')]);router[_0x1b59('0xc')]('/',auth[_0x1b59('0x7')](),controller[_0x1b59('0xd')]);router[_0x1b59('0xc')](_0x1b59('0xa'),auth['isAuthenticated'](),controller[_0x1b59('0xe')]);router[_0x1b59('0xf')](_0x1b59('0x9'),auth[_0x1b59('0x7')](),controller[_0x1b59('0x10')]);router[_0x1b59('0x11')](_0x1b59('0x9'),auth[_0x1b59('0x7')](),controller[_0x1b59('0x12')]);router[_0x1b59('0x11')](_0x1b59('0x13'),auth[_0x1b59('0x7')](),controller['removeSound']);module[_0x1b59('0x14')]=router;
\ No newline at end of file
+var _0x03d2=['removeSound','exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','index','get','isAuthenticated','show','getSounds','post','create','/:id/sounds','addSound','put','/:id','update','delete','destroy','/:id/sounds/:id2'];(function(_0x4cd164,_0x27bb06){var _0x3f628f=function(_0x2516e5){while(--_0x2516e5){_0x4cd164['push'](_0x4cd164['shift']());}};_0x3f628f(++_0x27bb06);}(_0x03d2,0xba));var _0x203d=function(_0x5520f1,_0x5201ba){_0x5520f1=_0x5520f1-0x0;var _0x526a84=_0x03d2[_0x5520f1];return _0x526a84;};'use strict';var multer=require(_0x203d('0x0'));var util=require('util');var path=require(_0x203d('0x1'));var timeout=require(_0x203d('0x2'));var express=require('express');var router=express[_0x203d('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x203d('0x4'));var config=require(_0x203d('0x5'));var controller=require('./voiceMusicOnHold.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x203d('0x6')]);router[_0x203d('0x7')]('/:id',auth[_0x203d('0x8')](),controller[_0x203d('0x9')]);router[_0x203d('0x7')]('/:id/sounds',auth['isAuthenticated'](),controller[_0x203d('0xa')]);router[_0x203d('0xb')]('/',auth[_0x203d('0x8')](),controller[_0x203d('0xc')]);router[_0x203d('0xb')](_0x203d('0xd'),auth[_0x203d('0x8')](),controller[_0x203d('0xe')]);router[_0x203d('0xf')](_0x203d('0x10'),auth['isAuthenticated'](),controller[_0x203d('0x11')]);router[_0x203d('0x12')](_0x203d('0x10'),auth['isAuthenticated'](),controller[_0x203d('0x13')]);router[_0x203d('0x12')](_0x203d('0x14'),auth[_0x203d('0x8')](),controller[_0x203d('0x15')]);module[_0x203d('0x16')]=router;
\ No newline at end of file
index 4cddcb5..53a8071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb81c=['custom','files','mp3nb','quietmp3','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','ENUM'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb81c,0x10f));var _0xcb81=function(_0x572039,_0x74c404){_0x572039=_0x572039-0x0;var _0x4175a3=_0xb81c[_0x572039];return _0x4175a3;};'use strict';var Sequelize=require(_0xcb81('0x0'));module[_0xcb81('0x1')]={'name':{'type':Sequelize[_0xcb81('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0xcb81('0x3')](_0xcb81('0x4'),_0xcb81('0x5'),_0xcb81('0x6'),'quietmp3nb',_0xcb81('0x7'),'mp3'),'allowNull':!![],'defaultValue':_0xcb81('0x5')},'directory':{'type':Sequelize[_0xcb81('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0xcb81('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xcb81('0x2')],'allowNull':!![],'defaultValue':_0xcb81('0x8')},'format':{'type':Sequelize[_0xcb81('0x2')],'allowNull':!![]},'stamp':{'type':_0xcb81('0x9')},'defaultEntry':{'type':Sequelize[_0xcb81('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x456b=['TIMESTAMP','sequelize','exports','STRING','ENUM','custom','files','mp3nb','quietmp3','mp3','alpha'];(function(_0xd53283,_0x66cc08){var _0x2d0d0a=function(_0x545d43){while(--_0x545d43){_0xd53283['push'](_0xd53283['shift']());}};_0x2d0d0a(++_0x66cc08);}(_0x456b,0xf3));var _0xb456=function(_0x28178a,_0x52db8f){_0x28178a=_0x28178a-0x0;var _0x52f31c=_0x456b[_0x28178a];return _0x52f31c;};'use strict';var Sequelize=require(_0xb456('0x0'));module[_0xb456('0x1')]={'name':{'type':Sequelize[_0xb456('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0xb456('0x3')](_0xb456('0x4'),_0xb456('0x5'),_0xb456('0x6'),'quietmp3nb',_0xb456('0x7'),_0xb456('0x8')),'allowNull':!![],'defaultValue':_0xb456('0x5')},'directory':{'type':Sequelize[_0xb456('0x2')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xb456('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xb456('0x9')},'format':{'type':Sequelize[_0xb456('0x2')],'allowNull':!![]},'stamp':{'type':_0xb456('0xa')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 7a25f0d..f0c7b70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa87e=['lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','error','stack','send','index','VoiceMusicOnHold','rawAttributes','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','create','sequelize','mode','directory','root','files','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','forEach','unlinkSync','join','rmdirSync','ValidationError','message','addSound','Sound','findOne','createdAt','server/files/sounds/converted','basename','save_name','server/files/moh','symlinkSync','Sequelize','removeSound','id2','converted_format','format','getSounds','order','nolimit','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra'];(function(_0x453743,_0x43d425){var _0x2547c6=function(_0x9b9cf1){while(--_0x9b9cf1){_0x453743['push'](_0x453743['shift']());}};_0x2547c6(++_0x43d425);}(_0xa87e,0x1b3));var _0xea87=function(_0x588460,_0xe55dbc){_0x588460=_0x588460-0x0;var _0x324b6b=_0xa87e[_0x588460];return _0x324b6b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xea87('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xea87('0x1'));var rp=require(_0xea87('0x2'));var moment=require(_0xea87('0x3'));var BPromise=require(_0xea87('0x4'));var Mustache=require(_0xea87('0x5'));var util=require(_0xea87('0x6'));var path=require(_0xea87('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xea87('0x8'));var _=require(_0xea87('0x9'));var squel=require(_0xea87('0xa'));var crypto=require(_0xea87('0xb'));var jsforce=require(_0xea87('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xea87('0xd'));var Papa=require(_0xea87('0xe'));var Redis=require(_0xea87('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xea87('0x10'));var as=require(_0xea87('0x11'));var hardwareService=require(_0xea87('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xea87('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xea87('0x14'));var db=require(_0xea87('0x15'))['db'];function respondWithStatusCode(_0x4cdc0c,_0x3305f6){_0x3305f6=_0x3305f6||0xcc;return function(_0x262ff1){if(_0x262ff1){return _0x4cdc0c[_0xea87('0x16')](_0x3305f6);}return _0x4cdc0c[_0xea87('0x17')](_0x3305f6)[_0xea87('0x18')]();};}function respondWithResult(_0x3479b0,_0x357f34){_0x357f34=_0x357f34||0xc8;return function(_0x75b369){if(_0x75b369){return _0x3479b0['status'](_0x357f34)[_0xea87('0x19')](_0x75b369);}};}function respondWithFilteredResult(_0x34991b,_0x3a67a1){return function(_0x400cde){if(_0x400cde){var _0x442215=typeof _0x3a67a1[_0xea87('0x1a')]===_0xea87('0x1b')&&typeof _0x3a67a1['limit']==='undefined';var _0x43372=_0x400cde['count'];var _0x39c83e=_0x442215?0x0:_0x3a67a1[_0xea87('0x1a')];var _0x171ffc=_0x442215?_0x400cde[_0xea87('0x1c')]:_0x3a67a1[_0xea87('0x1a')]+_0x3a67a1['limit'];var _0x2cd548;if(_0x171ffc>=_0x43372){_0x171ffc=_0x43372;_0x2cd548=0xc8;}else{_0x2cd548=0xce;}_0x34991b[_0xea87('0x17')](_0x2cd548);return _0x34991b[_0xea87('0x1d')](_0xea87('0x1e'),_0x39c83e+'-'+_0x171ffc+'/'+_0x43372)[_0xea87('0x19')](_0x400cde);}return null;};}function patchUpdates(_0x11aecc){return function(_0x36bc9c){try{jsonpatch[_0xea87('0x1f')](_0x36bc9c,_0x11aecc,!![]);}catch(_0x180841){return BPromise[_0xea87('0x20')](_0x180841);}return _0x36bc9c[_0xea87('0x21')]();};}function saveUpdates(_0x5e2cea,_0x170805){return function(_0x4dc021){if(_0x4dc021){return _0x4dc021[_0xea87('0x22')](_0x5e2cea)['then'](function(_0x4a860c){return _0x4a860c;});}return null;};}function removeEntity(_0x16ed76,_0xd02c90){return function(_0xe735d4){if(_0xe735d4){return _0xe735d4[_0xea87('0x23')]()[_0xea87('0x24')](function(){var _0x11d498=_0xe735d4[_0xea87('0x25')]({'plain':!![]});var _0x548ac7='MusicOnHolds';return db['UserProfileResource'][_0xea87('0x23')]({'where':{'type':_0x548ac7,'resourceId':_0x11d498['id']}})['then'](function(){return _0xe735d4;});})[_0xea87('0x24')](function(){_0x16ed76[_0xea87('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1109bb,_0x2f109a){return function(_0x3b57a8){if(!_0x3b57a8){_0x1109bb[_0xea87('0x16')](0x194);}return _0x3b57a8;};}function handleError(_0x1be0f9,_0x2afeb5){_0x2afeb5=_0x2afeb5||0x1f4;return function(_0x26c2ad){logger[_0xea87('0x26')](_0x26c2ad[_0xea87('0x27')]);if(_0x26c2ad['name']){delete _0x26c2ad['name'];}_0x1be0f9[_0xea87('0x17')](_0x2afeb5)[_0xea87('0x28')](_0x26c2ad);};}exports[_0xea87('0x29')]=function(_0x379ffe,_0x1141cb){var _0x5e1789={},_0x54f272={},_0x12f49b={'count':0x0,'rows':[]};var _0x39ab2d=_['map'](db[_0xea87('0x2a')][_0xea87('0x2b')],function(_0x485db7){return{'name':_0x485db7['fieldName'],'type':_0x485db7['type']['key']};});_0x54f272[_0xea87('0x2c')]=_['map'](_0x39ab2d,_0xea87('0x2d'));_0x54f272[_0xea87('0x2e')]=_[_0xea87('0x2f')](_0x379ffe['query']);_0x54f272[_0xea87('0x30')]=_[_0xea87('0x31')](_0x54f272['model'],_0x54f272[_0xea87('0x2e')]);_0x5e1789[_0xea87('0x32')]=_[_0xea87('0x31')](_0x54f272[_0xea87('0x2c')],qs[_0xea87('0x33')](_0x379ffe[_0xea87('0x2e')]['fields']));_0x5e1789[_0xea87('0x32')]=_0x5e1789[_0xea87('0x32')]['length']?_0x5e1789[_0xea87('0x32')]:_0x54f272[_0xea87('0x2c')];if(!_0x379ffe[_0xea87('0x2e')][_0xea87('0x34')]('nolimit')){_0x5e1789[_0xea87('0x35')]=qs['limit'](_0x379ffe[_0xea87('0x2e')][_0xea87('0x35')]);_0x5e1789[_0xea87('0x1a')]=qs[_0xea87('0x1a')](_0x379ffe[_0xea87('0x2e')][_0xea87('0x1a')]);}_0x5e1789['order']=qs[_0xea87('0x36')](_0x379ffe[_0xea87('0x2e')][_0xea87('0x36')]);delete _0x379ffe[_0xea87('0x2e')]['sort'];_0x5e1789[_0xea87('0x37')]=qs[_0xea87('0x30')](_[_0xea87('0x38')](_0x379ffe[_0xea87('0x2e')],_0x54f272[_0xea87('0x30')]),_0x39ab2d);if(_0x379ffe['query']['filter']){_0x5e1789[_0xea87('0x37')]=_[_0xea87('0x39')](_0x5e1789[_0xea87('0x37')],{'$or':_['map'](_0x39ab2d,function(_0xa8cef2){if(_0xa8cef2[_0xea87('0x3a')]!==_0xea87('0x3b')){var _0x476d91={};_0x476d91[_0xa8cef2[_0xea87('0x2d')]]={'$like':'%'+_0x379ffe[_0xea87('0x2e')][_0xea87('0x3c')]+'%'};return _0x476d91;}})});}_0x5e1789=_['merge']({},_0x5e1789,_0x379ffe[_0xea87('0x3d')]);var _0x50ddd9={'where':_0x5e1789[_0xea87('0x37')]};return db[_0xea87('0x2a')]['count'](_0x50ddd9)[_0xea87('0x24')](function(_0x4c6b48){_0x12f49b[_0xea87('0x1c')]=_0x4c6b48;if(_0x379ffe[_0xea87('0x2e')][_0xea87('0x3e')]){_0x5e1789[_0xea87('0x3f')]=[{'all':!![]}];}return db[_0xea87('0x2a')][_0xea87('0x40')](_0x5e1789);})[_0xea87('0x24')](function(_0x1b710b){_0x12f49b[_0xea87('0x41')]=_0x1b710b;return _0x12f49b;})['then'](respondWithFilteredResult(_0x1141cb,_0x5e1789))[_0xea87('0x42')](handleError(_0x1141cb,null));};exports[_0xea87('0x43')]=function(_0x1fff82,_0x51af48){var _0x58a412={'raw':![],'where':{'id':_0x1fff82[_0xea87('0x44')]['id']}},_0x4dedaa={};_0x4dedaa[_0xea87('0x2c')]=_[_0xea87('0x2f')](db['VoiceMusicOnHold'][_0xea87('0x2b')]);_0x4dedaa['query']=_[_0xea87('0x2f')](_0x1fff82[_0xea87('0x2e')]);_0x4dedaa['filters']=_[_0xea87('0x31')](_0x4dedaa[_0xea87('0x2c')],_0x4dedaa[_0xea87('0x2e')]);_0x58a412[_0xea87('0x32')]=_['intersection'](_0x4dedaa['model'],qs[_0xea87('0x33')](_0x1fff82[_0xea87('0x2e')][_0xea87('0x33')]));_0x58a412[_0xea87('0x32')]=_0x58a412[_0xea87('0x32')][_0xea87('0x45')]?_0x58a412[_0xea87('0x32')]:_0x4dedaa[_0xea87('0x2c')];if(_0x1fff82[_0xea87('0x2e')]['includeAll']){_0x58a412[_0xea87('0x3f')]=[{'all':!![]}];}_0x58a412=_[_0xea87('0x39')]({},_0x58a412,_0x1fff82[_0xea87('0x3d')]);return db[_0xea87('0x2a')][_0xea87('0x46')](_0x58a412)['then'](handleEntityNotFound(_0x51af48,null))[_0xea87('0x24')](respondWithResult(_0x51af48,null))[_0xea87('0x42')](handleError(_0x51af48,null));};exports[_0xea87('0x22')]=function(_0x4dbe55,_0x394c7d){if(_0x4dbe55[_0xea87('0x47')]['id']){delete _0x4dbe55['body']['id'];}return db[_0xea87('0x2a')][_0xea87('0x46')]({'where':{'id':_0x4dbe55[_0xea87('0x44')]['id']}})[_0xea87('0x24')](handleEntityNotFound(_0x394c7d,null))[_0xea87('0x24')](saveUpdates(_0x4dbe55[_0xea87('0x47')],null))[_0xea87('0x24')](respondWithResult(_0x394c7d,null))[_0xea87('0x42')](handleError(_0x394c7d,null));};exports[_0xea87('0x48')]=function(_0x33350e,_0x2ada20,_0x1a57e4){return db[_0xea87('0x49')]['transaction'](function(_0x14634c){if(_0x33350e['body'][_0xea87('0x4a')]==='files'){_0x33350e[_0xea87('0x47')][_0xea87('0x4b')]=path['join'](config[_0xea87('0x4c')],'server/files/moh',_0x33350e[_0xea87('0x47')][_0xea87('0x2d')]);}return db[_0xea87('0x2a')][_0xea87('0x48')](_0x33350e['body'],{'transaction':_0x14634c})[_0xea87('0x24')](function(_0x417493){if(_0x33350e[_0xea87('0x47')]['mode']===_0xea87('0x4d')){fs['mkdirSync'](_0x417493[_0xea87('0x4b')],parseInt(_0xea87('0x4e'),0x8));}var _0x90fab0=_0x33350e[_0xea87('0x4f')][_0xea87('0x25')]({'plain':!![]});if(!_0x90fab0)throw new Error(_0xea87('0x50'));if(_0x90fab0[_0xea87('0x51')]===_0xea87('0x4f')){var _0x56ae73=_0x417493[_0xea87('0x25')]({'plain':!![]});return db[_0xea87('0x52')][_0xea87('0x46')]({'where':{'name':_0xea87('0x53'),'userProfileId':_0x90fab0[_0xea87('0x54')]},'raw':!![]})['then'](function(_0xad6350){if(_0xad6350&&_0xad6350['autoAssociation']===0x0){return db[_0xea87('0x55')][_0xea87('0x48')]({'name':_0x56ae73['name'],'resourceId':_0x56ae73['id'],'type':_0xad6350['name'],'sectionId':_0xad6350['id']},{})[_0xea87('0x24')](function(){return _0x417493;});}else{return _0x417493;}})[_0xea87('0x42')](function(_0x7aa104){logger[_0xea87('0x26')](_0xea87('0x56'),_0x7aa104);});}return _0x417493;});})[_0xea87('0x24')](respondWithResult(_0x2ada20,0xc9))[_0xea87('0x42')](handleError(_0x2ada20,null));};exports[_0xea87('0x23')]=function(_0x5106b0,_0x3bd212,_0x64c6e4){var _0x33b05b;return db[_0xea87('0x2a')][_0xea87('0x46')]({'where':{'id':_0x5106b0[_0xea87('0x44')]['id']}})[_0xea87('0x24')](function(_0x5be830){if(_0x5be830){return db['sequelize'][_0xea87('0x57')](function(_0x374597){return _0x5be830[_0xea87('0x23')]({'transaction':_0x374597,'raw':!![]})[_0xea87('0x24')](function(_0x49f0ac){if(_0x49f0ac[_0xea87('0x4b')]){fs['readdirSync'](_0x49f0ac[_0xea87('0x4b')])[_0xea87('0x58')](function(_0x287a42){fs[_0xea87('0x59')](path[_0xea87('0x5a')](_0x49f0ac[_0xea87('0x4b')],_0x287a42));});fs[_0xea87('0x5b')](_0x49f0ac[_0xea87('0x4b')]);}return _0x49f0ac;});})[_0xea87('0x42')](function(_0x22be99){throw new db['Sequelize'][(_0xea87('0x5c'))](_0x22be99[_0xea87('0x5d')]);});}})[_0xea87('0x24')](handleEntityNotFound(_0x3bd212,null))[_0xea87('0x24')](removeEntity(_0x3bd212,null))[_0xea87('0x42')](handleError(_0x3bd212,null));};exports[_0xea87('0x5e')]=function(_0x389636,_0x3a315f,_0x2d4f5f){return db[_0xea87('0x49')][_0xea87('0x57')](function(_0x3b9e49){var _0x480c1f;return db[_0xea87('0x2a')][_0xea87('0x46')]({'where':{'id':_0x389636[_0xea87('0x44')]['id']}})[_0xea87('0x24')](function(_0x3297eb){if(_0x3297eb){_0x480c1f=_0x3297eb;return _0x3297eb[_0xea87('0x5e')](_0x389636[_0xea87('0x47')]['id'],{'transaction':_0x3b9e49});}})[_0xea87('0x24')](function(_0x3d05de){if(_0x3d05de){return db[_0xea87('0x5f')][_0xea87('0x60')]({'where':{'id':_0x389636[_0xea87('0x47')]['id']},'attributes':['id','name','save_name','converted_format',_0xea87('0x61')],'raw':!![]});}})[_0xea87('0x24')](function(_0x40acde){if(_0x40acde){var _0xa1c82d=path[_0xea87('0x5a')](config['root'],_0xea87('0x62'),util['format']('%s.%s',path[_0xea87('0x63')](_0x40acde[_0xea87('0x64')],path['extname'](_0x40acde['save_name'])),_0x40acde['converted_format']));var _0x1c39bb=path['join'](config[_0xea87('0x4c')],_0xea87('0x65'),_0x480c1f[_0xea87('0x2d')],util['format']('%s.%s',_0x40acde[_0xea87('0x2d')],_0x40acde['converted_format']));fs[_0xea87('0x66')](_0xa1c82d,_0x1c39bb);return _0x40acde;}})[_0xea87('0x42')](function(_0x37cc26){throw new db[(_0xea87('0x67'))][(_0xea87('0x5c'))](_0x37cc26[_0xea87('0x5d')]);});})[_0xea87('0x24')](handleEntityNotFound(_0x3a315f,null))[_0xea87('0x24')](respondWithResult(_0x3a315f,0xc9))['catch'](handleError(_0x3a315f,null));};exports[_0xea87('0x68')]=function(_0xfe16db,_0x361bcc,_0x200003){return db['sequelize'][_0xea87('0x57')](function(_0x3decff){var _0x2ea875;return db['VoiceMusicOnHold'][_0xea87('0x60')]({'where':{'id':_0xfe16db[_0xea87('0x44')]['id']}})['then'](handleEntityNotFound(_0x361bcc,null))[_0xea87('0x24')](function(_0x54ca29){if(_0x54ca29){_0x2ea875=_0x54ca29;return _0x54ca29['removeSound'](_0xfe16db[_0xea87('0x44')][_0xea87('0x69')]);}})[_0xea87('0x24')](function(_0x341c54){if(_0x341c54){return db[_0xea87('0x5f')][_0xea87('0x60')]({'where':{'id':_0xfe16db['params']['id2']},'attributes':['id','name',_0xea87('0x64'),_0xea87('0x6a'),'createdAt'],'raw':!![]});}})[_0xea87('0x24')](function(_0x9f39b4){if(_0x9f39b4){fs[_0xea87('0x59')](path[_0xea87('0x5a')](_0x2ea875[_0xea87('0x4b')],util[_0xea87('0x6b')]('%s.%s',_0x9f39b4['name'],_0x9f39b4[_0xea87('0x6a')])));return _0x9f39b4;}})[_0xea87('0x42')](function(_0x418ec0){throw new db[(_0xea87('0x67'))][(_0xea87('0x5c'))](_0x418ec0[_0xea87('0x5d')]);});})['then'](handleEntityNotFound(_0x361bcc,null))[_0xea87('0x24')](respondWithStatusCode(_0x361bcc,0xcc))[_0xea87('0x42')](handleError(_0x361bcc,null));};exports[_0xea87('0x6c')]=function(_0x1689c4,_0x3a3e49,_0xa5384a){var _0x569eab={};var _0x83c29c={};var _0x4bed92;var _0x4f6130;return db['VoiceMusicOnHold'][_0xea87('0x60')]({'where':{'id':_0x1689c4[_0xea87('0x44')]['id']}})['then'](handleEntityNotFound(_0x3a3e49,null))[_0xea87('0x24')](function(_0x5831b3){if(_0x5831b3){_0x4bed92=_0x5831b3;_0x83c29c[_0xea87('0x2c')]=_[_0xea87('0x2f')](db[_0xea87('0x5f')][_0xea87('0x2b')]);_0x83c29c[_0xea87('0x2e')]=_[_0xea87('0x2f')](_0x1689c4[_0xea87('0x2e')]);_0x83c29c[_0xea87('0x30')]=_[_0xea87('0x31')](_0x83c29c[_0xea87('0x2c')],_0x83c29c['query']);_0x569eab[_0xea87('0x32')]=_[_0xea87('0x31')](_0x83c29c[_0xea87('0x2c')],qs[_0xea87('0x33')](_0x1689c4['query'][_0xea87('0x33')]));_0x569eab[_0xea87('0x32')]=_0x569eab[_0xea87('0x32')][_0xea87('0x45')]?_0x569eab[_0xea87('0x32')]:_0x83c29c[_0xea87('0x2c')];_0x569eab[_0xea87('0x6d')]=qs[_0xea87('0x36')](_0x1689c4[_0xea87('0x2e')]['sort']);_0x569eab[_0xea87('0x37')]=qs[_0xea87('0x30')](_[_0xea87('0x38')](_0x1689c4[_0xea87('0x2e')],_0x83c29c[_0xea87('0x30')]));if(_0x1689c4['query'][_0xea87('0x3c')]){_0x569eab[_0xea87('0x37')]=_[_0xea87('0x39')](_0x569eab[_0xea87('0x37')],{'$or':_['map'](_0x569eab[_0xea87('0x32')],function(_0x2230dc){var _0x36bc0e={};_0x36bc0e[_0x2230dc]={'$like':'%'+_0x1689c4[_0xea87('0x2e')][_0xea87('0x3c')]+'%'};return _0x36bc0e;})});}_0x569eab=_[_0xea87('0x39')]({},_0x569eab,_0x1689c4[_0xea87('0x3d')]);return _0x4bed92['getSounds'](_0x569eab);}})['then'](function(_0x4bd73c){if(_0x4bd73c){_0x4f6130=_0x4bd73c['length'];if(!_0x1689c4[_0xea87('0x2e')][_0xea87('0x34')](_0xea87('0x6e'))){_0x569eab[_0xea87('0x35')]=qs[_0xea87('0x35')](_0x1689c4[_0xea87('0x2e')][_0xea87('0x35')]);_0x569eab[_0xea87('0x1a')]=qs[_0xea87('0x1a')](_0x1689c4['query'][_0xea87('0x1a')]);}return _0x4bed92['getSounds'](_0x569eab);}})[_0xea87('0x24')](function(_0x12707c){if(_0x12707c){return _0x12707c?{'count':_0x4f6130,'rows':_0x12707c}:null;}})[_0xea87('0x24')](respondWithResult(_0x3a3e49,null))[_0xea87('0x42')](handleError(_0x3a3e49,null));};
\ No newline at end of file
+var _0x956a=['Sequelize','message','addSound','Sound','findOne','save_name','createdAt','server/files/sounds/converted','format','extname','converted_format','%s.%s','symlinkSync','ValidationError','removeSound','id2','getSounds','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','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','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','destroy','end','error','stack','name','send','index','map','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','VoiceMusicOnHold','findAll','rows','catch','show','params','rawAttributes','keys','length','body','find','sequelize','transaction','mode','files','directory','join','root','server/files/moh','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync'];(function(_0x467e97,_0x5b6355){var _0x57c961=function(_0x29f113){while(--_0x29f113){_0x467e97['push'](_0x467e97['shift']());}};_0x57c961(++_0x5b6355);}(_0x956a,0xf5));var _0xa956=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x956a[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0xa956('0x0'));var rimraf=require(_0xa956('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa956('0x2'));var moment=require(_0xa956('0x3'));var BPromise=require(_0xa956('0x4'));var Mustache=require(_0xa956('0x5'));var util=require(_0xa956('0x6'));var path=require('path');var sox=require(_0xa956('0x7'));var csv=require(_0xa956('0x8'));var ejs=require(_0xa956('0x9'));var fs=require('fs');var fs_extra=require(_0xa956('0xa'));var _=require(_0xa956('0xb'));var squel=require(_0xa956('0xc'));var crypto=require('crypto');var jsforce=require(_0xa956('0xd'));var deskjs=require(_0xa956('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa956('0xf'));var Papa=require(_0xa956('0x10'));var Redis=require('ioredis');var authService=require(_0xa956('0x11'));var qs=require(_0xa956('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa956('0x13'));var logger=require('../../config/logger')(_0xa956('0x14'));var utils=require(_0xa956('0x15'));var config=require(_0xa956('0x16'));var licenseUtil=require(_0xa956('0x17'));var db=require(_0xa956('0x18'))['db'];function respondWithStatusCode(_0x33f7f5,_0x376b72){_0x376b72=_0x376b72||0xcc;return function(_0x179431){if(_0x179431){return _0x33f7f5[_0xa956('0x19')](_0x376b72);}return _0x33f7f5[_0xa956('0x1a')](_0x376b72)['end']();};}function respondWithResult(_0x2a91e5,_0x31f53b){_0x31f53b=_0x31f53b||0xc8;return function(_0x585e80){if(_0x585e80){return _0x2a91e5[_0xa956('0x1a')](_0x31f53b)['json'](_0x585e80);}};}function respondWithFilteredResult(_0xba885a,_0x593bff){return function(_0xf3056b){if(_0xf3056b){var _0x4bc5a7=typeof _0x593bff[_0xa956('0x1b')]===_0xa956('0x1c')&&typeof _0x593bff[_0xa956('0x1d')]===_0xa956('0x1c');var _0x2c1e2a=_0xf3056b[_0xa956('0x1e')];var _0x2247f5=_0x4bc5a7?0x0:_0x593bff[_0xa956('0x1b')];var _0x145a7c=_0x4bc5a7?_0xf3056b['count']:_0x593bff[_0xa956('0x1b')]+_0x593bff[_0xa956('0x1d')];var _0x13d005;if(_0x145a7c>=_0x2c1e2a){_0x145a7c=_0x2c1e2a;_0x13d005=0xc8;}else{_0x13d005=0xce;}_0xba885a['status'](_0x13d005);return _0xba885a['set'](_0xa956('0x1f'),_0x2247f5+'-'+_0x145a7c+'/'+_0x2c1e2a)['json'](_0xf3056b);}return null;};}function patchUpdates(_0x13dc94){return function(_0x5d74cf){try{jsonpatch[_0xa956('0x20')](_0x5d74cf,_0x13dc94,!![]);}catch(_0x21214a){return BPromise[_0xa956('0x21')](_0x21214a);}return _0x5d74cf[_0xa956('0x22')]();};}function saveUpdates(_0x248fe9,_0x2e4d97){return function(_0x44591e){if(_0x44591e){return _0x44591e[_0xa956('0x23')](_0x248fe9)[_0xa956('0x24')](function(_0xb12c60){return _0xb12c60;});}return null;};}function removeEntity(_0x405e88,_0x3e032f){return function(_0x265c78){if(_0x265c78){return _0x265c78['destroy']()[_0xa956('0x24')](function(){var _0x47347a=_0x265c78[_0xa956('0x25')]({'plain':!![]});var _0x572958='MusicOnHolds';return db['UserProfileResource'][_0xa956('0x26')]({'where':{'type':_0x572958,'resourceId':_0x47347a['id']}})['then'](function(){return _0x265c78;});})[_0xa956('0x24')](function(){_0x405e88['status'](0xcc)[_0xa956('0x27')]();});}};}function handleEntityNotFound(_0x1ea0c2,_0x42830e){return function(_0x476bde){if(!_0x476bde){_0x1ea0c2[_0xa956('0x19')](0x194);}return _0x476bde;};}function handleError(_0x3c4bbe,_0x3087bc){_0x3087bc=_0x3087bc||0x1f4;return function(_0x7e7f61){logger[_0xa956('0x28')](_0x7e7f61[_0xa956('0x29')]);if(_0x7e7f61[_0xa956('0x2a')]){delete _0x7e7f61[_0xa956('0x2a')];}_0x3c4bbe['status'](_0x3087bc)[_0xa956('0x2b')](_0x7e7f61);};}exports[_0xa956('0x2c')]=function(_0x556899,_0x4d64ba){var _0xd97af9={},_0x2edcb1={},_0x106e67={'count':0x0,'rows':[]};var _0x19e1e6=_[_0xa956('0x2d')](db['VoiceMusicOnHold']['rawAttributes'],function(_0x5c3ee6){return{'name':_0x5c3ee6['fieldName'],'type':_0x5c3ee6[_0xa956('0x2e')][_0xa956('0x2f')]};});_0x2edcb1[_0xa956('0x30')]=_[_0xa956('0x2d')](_0x19e1e6,_0xa956('0x2a'));_0x2edcb1[_0xa956('0x31')]=_['keys'](_0x556899[_0xa956('0x31')]);_0x2edcb1[_0xa956('0x32')]=_[_0xa956('0x33')](_0x2edcb1[_0xa956('0x30')],_0x2edcb1[_0xa956('0x31')]);_0xd97af9['attributes']=_[_0xa956('0x33')](_0x2edcb1[_0xa956('0x30')],qs[_0xa956('0x34')](_0x556899[_0xa956('0x31')][_0xa956('0x34')]));_0xd97af9['attributes']=_0xd97af9[_0xa956('0x35')]['length']?_0xd97af9['attributes']:_0x2edcb1[_0xa956('0x30')];if(!_0x556899['query'][_0xa956('0x36')](_0xa956('0x37'))){_0xd97af9['limit']=qs[_0xa956('0x1d')](_0x556899[_0xa956('0x31')][_0xa956('0x1d')]);_0xd97af9[_0xa956('0x1b')]=qs[_0xa956('0x1b')](_0x556899[_0xa956('0x31')]['offset']);}_0xd97af9[_0xa956('0x38')]=qs[_0xa956('0x39')](_0x556899[_0xa956('0x31')][_0xa956('0x39')]);delete _0x556899[_0xa956('0x31')][_0xa956('0x39')];_0xd97af9[_0xa956('0x3a')]=qs['filters'](_[_0xa956('0x3b')](_0x556899[_0xa956('0x31')],_0x2edcb1[_0xa956('0x32')]),_0x19e1e6);if(_0x556899[_0xa956('0x31')][_0xa956('0x3c')]){_0xd97af9[_0xa956('0x3a')]=_[_0xa956('0x3d')](_0xd97af9[_0xa956('0x3a')],{'$or':_[_0xa956('0x2d')](_0x19e1e6,function(_0x1e2b5a){if(_0x1e2b5a[_0xa956('0x2e')]!==_0xa956('0x3e')){var _0x2e862e={};_0x2e862e[_0x1e2b5a[_0xa956('0x2a')]]={'$like':'%'+_0x556899[_0xa956('0x31')][_0xa956('0x3c')]+'%'};return _0x2e862e;}})});}_0xd97af9=_[_0xa956('0x3d')]({},_0xd97af9,_0x556899[_0xa956('0x3f')]);var _0x4f8743={'where':_0xd97af9['where']};return db['VoiceMusicOnHold']['count'](_0x4f8743)[_0xa956('0x24')](function(_0x4a4896){_0x106e67[_0xa956('0x1e')]=_0x4a4896;if(_0x556899['query'][_0xa956('0x40')]){_0xd97af9['include']=[{'all':!![]}];}return db[_0xa956('0x41')][_0xa956('0x42')](_0xd97af9);})[_0xa956('0x24')](function(_0x1b1311){_0x106e67[_0xa956('0x43')]=_0x1b1311;return _0x106e67;})[_0xa956('0x24')](respondWithFilteredResult(_0x4d64ba,_0xd97af9))[_0xa956('0x44')](handleError(_0x4d64ba,null));};exports[_0xa956('0x45')]=function(_0x15cddb,_0xcd549a){var _0xbe5efb={'raw':![],'where':{'id':_0x15cddb[_0xa956('0x46')]['id']}},_0x249314={};_0x249314[_0xa956('0x30')]=_['keys'](db['VoiceMusicOnHold'][_0xa956('0x47')]);_0x249314[_0xa956('0x31')]=_[_0xa956('0x48')](_0x15cddb[_0xa956('0x31')]);_0x249314[_0xa956('0x32')]=_[_0xa956('0x33')](_0x249314['model'],_0x249314[_0xa956('0x31')]);_0xbe5efb[_0xa956('0x35')]=_[_0xa956('0x33')](_0x249314['model'],qs[_0xa956('0x34')](_0x15cddb[_0xa956('0x31')][_0xa956('0x34')]));_0xbe5efb[_0xa956('0x35')]=_0xbe5efb[_0xa956('0x35')][_0xa956('0x49')]?_0xbe5efb[_0xa956('0x35')]:_0x249314[_0xa956('0x30')];if(_0x15cddb[_0xa956('0x31')]['includeAll']){_0xbe5efb['include']=[{'all':!![]}];}_0xbe5efb=_[_0xa956('0x3d')]({},_0xbe5efb,_0x15cddb[_0xa956('0x3f')]);return db['VoiceMusicOnHold']['find'](_0xbe5efb)['then'](handleEntityNotFound(_0xcd549a,null))['then'](respondWithResult(_0xcd549a,null))[_0xa956('0x44')](handleError(_0xcd549a,null));};exports[_0xa956('0x23')]=function(_0x8ad9ef,_0xedc3b){if(_0x8ad9ef[_0xa956('0x4a')]['id']){delete _0x8ad9ef[_0xa956('0x4a')]['id'];}return db[_0xa956('0x41')][_0xa956('0x4b')]({'where':{'id':_0x8ad9ef[_0xa956('0x46')]['id']}})[_0xa956('0x24')](handleEntityNotFound(_0xedc3b,null))[_0xa956('0x24')](saveUpdates(_0x8ad9ef[_0xa956('0x4a')],null))[_0xa956('0x24')](respondWithResult(_0xedc3b,null))[_0xa956('0x44')](handleError(_0xedc3b,null));};exports['create']=function(_0x4c8e98,_0x2d52eb,_0x3027d7){return db[_0xa956('0x4c')][_0xa956('0x4d')](function(_0x42b71d){if(_0x4c8e98[_0xa956('0x4a')][_0xa956('0x4e')]===_0xa956('0x4f')){_0x4c8e98[_0xa956('0x4a')][_0xa956('0x50')]=path[_0xa956('0x51')](config[_0xa956('0x52')],_0xa956('0x53'),_0x4c8e98[_0xa956('0x4a')][_0xa956('0x2a')]);}return db['VoiceMusicOnHold']['create'](_0x4c8e98[_0xa956('0x4a')],{'transaction':_0x42b71d})[_0xa956('0x24')](function(_0x1b0d5e){if(_0x4c8e98[_0xa956('0x4a')][_0xa956('0x4e')]==='files'){fs['mkdirSync'](_0x1b0d5e[_0xa956('0x50')],parseInt(_0xa956('0x54'),0x8));}var _0x22909c=_0x4c8e98['user'][_0xa956('0x25')]({'plain':!![]});if(!_0x22909c)throw new Error(_0xa956('0x55'));if(_0x22909c[_0xa956('0x56')]===_0xa956('0x57')){var _0x3dfc67=_0x1b0d5e[_0xa956('0x25')]({'plain':!![]});return db[_0xa956('0x58')][_0xa956('0x4b')]({'where':{'name':_0xa956('0x59'),'userProfileId':_0x22909c[_0xa956('0x5a')]},'raw':!![]})[_0xa956('0x24')](function(_0x310450){if(_0x310450&&_0x310450[_0xa956('0x5b')]===0x0){return db[_0xa956('0x5c')][_0xa956('0x5d')]({'name':_0x3dfc67[_0xa956('0x2a')],'resourceId':_0x3dfc67['id'],'type':_0x310450[_0xa956('0x2a')],'sectionId':_0x310450['id']},{})[_0xa956('0x24')](function(){return _0x1b0d5e;});}else{return _0x1b0d5e;}})['catch'](function(_0x40e567){logger[_0xa956('0x28')](_0xa956('0x5e'),_0x40e567);});}return _0x1b0d5e;});})[_0xa956('0x24')](respondWithResult(_0x2d52eb,0xc9))['catch'](handleError(_0x2d52eb,null));};exports[_0xa956('0x26')]=function(_0x59ef53,_0x1f64e7,_0x3ffeb1){var _0x3a9c7b;return db[_0xa956('0x41')]['find']({'where':{'id':_0x59ef53['params']['id']}})['then'](function(_0x415417){if(_0x415417){return db[_0xa956('0x4c')][_0xa956('0x4d')](function(_0x2dd821){return _0x415417[_0xa956('0x26')]({'transaction':_0x2dd821,'raw':!![]})[_0xa956('0x24')](function(_0x58bf13){if(_0x58bf13[_0xa956('0x50')]){fs['readdirSync'](_0x58bf13[_0xa956('0x50')])[_0xa956('0x5f')](function(_0x20e271){fs[_0xa956('0x60')](path['join'](_0x58bf13[_0xa956('0x50')],_0x20e271));});fs['rmdirSync'](_0x58bf13[_0xa956('0x50')]);}return _0x58bf13;});})[_0xa956('0x44')](function(_0x868815){throw new db[(_0xa956('0x61'))]['ValidationError'](_0x868815[_0xa956('0x62')]);});}})[_0xa956('0x24')](handleEntityNotFound(_0x1f64e7,null))[_0xa956('0x24')](removeEntity(_0x1f64e7,null))[_0xa956('0x44')](handleError(_0x1f64e7,null));};exports[_0xa956('0x63')]=function(_0x239d2d,_0x50f2eb,_0x40dfdb){return db[_0xa956('0x4c')][_0xa956('0x4d')](function(_0x270813){var _0x344375;return db[_0xa956('0x41')][_0xa956('0x4b')]({'where':{'id':_0x239d2d['params']['id']}})[_0xa956('0x24')](function(_0x137d34){if(_0x137d34){_0x344375=_0x137d34;return _0x137d34['addSound'](_0x239d2d[_0xa956('0x4a')]['id'],{'transaction':_0x270813});}})[_0xa956('0x24')](function(_0x34690e){if(_0x34690e){return db[_0xa956('0x64')][_0xa956('0x65')]({'where':{'id':_0x239d2d[_0xa956('0x4a')]['id']},'attributes':['id','name',_0xa956('0x66'),'converted_format',_0xa956('0x67')],'raw':!![]});}})['then'](function(_0x21da03){if(_0x21da03){var _0x304331=path[_0xa956('0x51')](config['root'],_0xa956('0x68'),util[_0xa956('0x69')]('%s.%s',path['basename'](_0x21da03[_0xa956('0x66')],path[_0xa956('0x6a')](_0x21da03['save_name'])),_0x21da03[_0xa956('0x6b')]));var _0x444f0e=path[_0xa956('0x51')](config[_0xa956('0x52')],'server/files/moh',_0x344375[_0xa956('0x2a')],util[_0xa956('0x69')](_0xa956('0x6c'),_0x21da03['name'],_0x21da03[_0xa956('0x6b')]));fs[_0xa956('0x6d')](_0x304331,_0x444f0e);return _0x21da03;}})['catch'](function(_0x23a419){throw new db[(_0xa956('0x61'))][(_0xa956('0x6e'))](_0x23a419[_0xa956('0x62')]);});})[_0xa956('0x24')](handleEntityNotFound(_0x50f2eb,null))[_0xa956('0x24')](respondWithResult(_0x50f2eb,0xc9))[_0xa956('0x44')](handleError(_0x50f2eb,null));};exports[_0xa956('0x6f')]=function(_0x2b5cc3,_0x59e009,_0xa10b64){return db[_0xa956('0x4c')]['transaction'](function(_0x4c8300){var _0x483b38;return db['VoiceMusicOnHold'][_0xa956('0x65')]({'where':{'id':_0x2b5cc3[_0xa956('0x46')]['id']}})['then'](handleEntityNotFound(_0x59e009,null))[_0xa956('0x24')](function(_0x43b477){if(_0x43b477){_0x483b38=_0x43b477;return _0x43b477[_0xa956('0x6f')](_0x2b5cc3[_0xa956('0x46')]['id2']);}})[_0xa956('0x24')](function(_0x205eb1){if(_0x205eb1){return db[_0xa956('0x64')][_0xa956('0x65')]({'where':{'id':_0x2b5cc3[_0xa956('0x46')][_0xa956('0x70')]},'attributes':['id',_0xa956('0x2a'),'save_name',_0xa956('0x6b'),_0xa956('0x67')],'raw':!![]});}})[_0xa956('0x24')](function(_0x2f4ea2){if(_0x2f4ea2){fs[_0xa956('0x60')](path[_0xa956('0x51')](_0x483b38[_0xa956('0x50')],util[_0xa956('0x69')](_0xa956('0x6c'),_0x2f4ea2[_0xa956('0x2a')],_0x2f4ea2[_0xa956('0x6b')])));return _0x2f4ea2;}})[_0xa956('0x44')](function(_0x541bb9){throw new db[(_0xa956('0x61'))]['ValidationError'](_0x541bb9[_0xa956('0x62')]);});})[_0xa956('0x24')](handleEntityNotFound(_0x59e009,null))['then'](respondWithStatusCode(_0x59e009,0xcc))['catch'](handleError(_0x59e009,null));};exports[_0xa956('0x71')]=function(_0x157637,_0x3bd0a5,_0x29118b){var _0x2a8ebf={};var _0x7657c9={};var _0x11e993;var _0x3bc837;return db[_0xa956('0x41')][_0xa956('0x65')]({'where':{'id':_0x157637[_0xa956('0x46')]['id']}})['then'](handleEntityNotFound(_0x3bd0a5,null))[_0xa956('0x24')](function(_0x7760f9){if(_0x7760f9){_0x11e993=_0x7760f9;_0x7657c9['model']=_[_0xa956('0x48')](db[_0xa956('0x64')][_0xa956('0x47')]);_0x7657c9[_0xa956('0x31')]=_['keys'](_0x157637[_0xa956('0x31')]);_0x7657c9[_0xa956('0x32')]=_['intersection'](_0x7657c9['model'],_0x7657c9[_0xa956('0x31')]);_0x2a8ebf[_0xa956('0x35')]=_[_0xa956('0x33')](_0x7657c9['model'],qs[_0xa956('0x34')](_0x157637[_0xa956('0x31')]['fields']));_0x2a8ebf['attributes']=_0x2a8ebf[_0xa956('0x35')][_0xa956('0x49')]?_0x2a8ebf[_0xa956('0x35')]:_0x7657c9[_0xa956('0x30')];_0x2a8ebf[_0xa956('0x38')]=qs['sort'](_0x157637[_0xa956('0x31')][_0xa956('0x39')]);_0x2a8ebf[_0xa956('0x3a')]=qs[_0xa956('0x32')](_[_0xa956('0x3b')](_0x157637[_0xa956('0x31')],_0x7657c9[_0xa956('0x32')]));if(_0x157637[_0xa956('0x31')]['filter']){_0x2a8ebf[_0xa956('0x3a')]=_['merge'](_0x2a8ebf[_0xa956('0x3a')],{'$or':_['map'](_0x2a8ebf[_0xa956('0x35')],function(_0x36ceb1){var _0x5253b={};_0x5253b[_0x36ceb1]={'$like':'%'+_0x157637['query'][_0xa956('0x3c')]+'%'};return _0x5253b;})});}_0x2a8ebf=_[_0xa956('0x3d')]({},_0x2a8ebf,_0x157637['options']);return _0x11e993[_0xa956('0x71')](_0x2a8ebf);}})['then'](function(_0x510a1b){if(_0x510a1b){_0x3bc837=_0x510a1b[_0xa956('0x49')];if(!_0x157637[_0xa956('0x31')][_0xa956('0x36')]('nolimit')){_0x2a8ebf['limit']=qs[_0xa956('0x1d')](_0x157637[_0xa956('0x31')]['limit']);_0x2a8ebf[_0xa956('0x1b')]=qs[_0xa956('0x1b')](_0x157637[_0xa956('0x31')][_0xa956('0x1b')]);}return _0x11e993[_0xa956('0x71')](_0x2a8ebf);}})['then'](function(_0x1680f1){if(_0x1680f1){return _0x1680f1?{'count':_0x3bc837,'rows':_0x1680f1}:null;}})[_0xa956('0x24')](respondWithResult(_0x3bd0a5,null))[_0xa956('0x44')](handleError(_0x3bd0a5,null));};
\ No newline at end of file
index ff161f1..8eead04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f4=['request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','bluebird'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0xb3f4,0x79));var _0x4b3f=function(_0x2abbf1,_0x13f3d0){_0x2abbf1=_0x2abbf1-0x0;var _0x3c948e=_0xb3f4[_0x2abbf1];return _0x3c948e;};'use strict';var _=require(_0x4b3f('0x0'));var util=require(_0x4b3f('0x1'));var logger=require(_0x4b3f('0x2'))(_0x4b3f('0x3'));var moment=require('moment');var BPromise=require(_0x4b3f('0x4'));var rp=require(_0x4b3f('0x5'));var fs=require('fs');var path=require(_0x4b3f('0x6'));var rimraf=require(_0x4b3f('0x7'));var config=require(_0x4b3f('0x8'));var attributes=require(_0x4b3f('0x9'));module[_0x4b3f('0xa')]=function(_0x4701f9,_0x1bb56b){return _0x4701f9[_0x4b3f('0xb')](_0x4b3f('0xc'),attributes,{'tableName':_0x4b3f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x78ee=['../../config/environment','exports','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x1ec8fd,_0x2838d5){var _0x27ca13=function(_0x318944){while(--_0x318944){_0x1ec8fd['push'](_0x1ec8fd['shift']());}};_0x27ca13(++_0x2838d5);}(_0x78ee,0x1d2));var _0xe78e=function(_0x5b153e,_0x4da9ab){_0x5b153e=_0x5b153e-0x0;var _0x18109e=_0x78ee[_0x5b153e];return _0x18109e;};'use strict';var _=require(_0xe78e('0x0'));var util=require(_0xe78e('0x1'));var logger=require(_0xe78e('0x2'))(_0xe78e('0x3'));var moment=require('moment');var BPromise=require(_0xe78e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe78e('0x5'));var rimraf=require(_0xe78e('0x6'));var config=require(_0xe78e('0x7'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xe78e('0x8')]=function(_0x3bce35,_0x45a07a){return _0x3bce35['define'](_0xe78e('0x9'),attributes,{'tableName':_0xe78e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 297f7ac..2a2a898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x120c64,_0x53be43){var _0x332e6a=function(_0x1f9292){while(--_0x1f9292){_0x120c64['push'](_0x120c64['shift']());}};_0x332e6a(++_0x53be43);}(_0xedd9,0xfc));var _0x9edd=function(_0x4eda09,_0x4b4181){_0x4eda09=_0x4eda09-0x0;var _0x41fb0c=_0xedd9[_0x4eda09];return _0x41fb0c;};'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
+var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s'];(function(_0x26120a,_0x194d25){var _0x3783cb=function(_0x8b231f){while(--_0x8b231f){_0x26120a['push'](_0x26120a['shift']());}};_0x3783cb(++_0x194d25);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x10c51f,_0x11270f){_0x10c51f=_0x10c51f-0x0;var _0x56a0cd=_0xcb91[_0x10c51f];return _0x56a0cd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
index dcc05f7..a0ab2bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4986=['put','delete','destroy','/:id/teams','removeTeams','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','describe','/:id','show','/:id/users','getAgents','post','create','addAgents','addTeams'];(function(_0x4e2839,_0xd8392d){var _0x4ee2c9=function(_0x548f87){while(--_0x548f87){_0x4e2839['push'](_0x4e2839['shift']());}};_0x4ee2c9(++_0xd8392d);}(_0x4986,0x6e));var _0x6498=function(_0xfab3a8,_0x5e1347){_0xfab3a8=_0xfab3a8-0x0;var _0x2ff0f1=_0x4986[_0xfab3a8];return _0x2ff0f1;};'use strict';var multer=require(_0x6498('0x0'));var util=require(_0x6498('0x1'));var path=require(_0x6498('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6498('0x3')]();var fs_extra=require(_0x6498('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6498('0x5'));var config=require(_0x6498('0x6'));var controller=require(_0x6498('0x7'));router[_0x6498('0x8')]('/',auth[_0x6498('0x9')](),controller[_0x6498('0xa')]);router[_0x6498('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x6498('0xb')]);router[_0x6498('0x8')](_0x6498('0xc'),auth[_0x6498('0x9')](),controller[_0x6498('0xd')]);router['get'](_0x6498('0xe'),auth[_0x6498('0x9')](),controller[_0x6498('0xf')]);router['get']('/:id/teams',auth[_0x6498('0x9')](),controller['getTeams']);router[_0x6498('0x10')]('/',auth[_0x6498('0x9')](),controller[_0x6498('0x11')]);router[_0x6498('0x10')](_0x6498('0xe'),auth[_0x6498('0x9')](),controller[_0x6498('0x12')]);router['post']('/:id/teams',auth[_0x6498('0x9')](),controller[_0x6498('0x13')]);router[_0x6498('0x14')](_0x6498('0xc'),auth[_0x6498('0x9')](),controller['update']);router[_0x6498('0x15')](_0x6498('0xc'),auth[_0x6498('0x9')](),controller[_0x6498('0x16')]);router[_0x6498('0x15')](_0x6498('0xe'),auth[_0x6498('0x9')](),controller['removeAgents']);router[_0x6498('0x15')](_0x6498('0x17'),auth[_0x6498('0x9')](),controller[_0x6498('0x18')]);module[_0x6498('0x19')]=router;
\ No newline at end of file
+var _0x1d2d=['get','index','/describe','isAuthenticated','describe','/:id','show','/:id/users','getAgents','post','addAgents','put','update','delete','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','./voicePrefix.controller'];(function(_0x74892f,_0x1e981b){var _0x10ee61=function(_0x3c480a){while(--_0x3c480a){_0x74892f['push'](_0x74892f['shift']());}};_0x10ee61(++_0x1e981b);}(_0x1d2d,0x1f3));var _0xd1d2=function(_0x379e17,_0x2e2acb){_0x379e17=_0x379e17-0x0;var _0x119be8=_0x1d2d[_0x379e17];return _0x119be8;};'use strict';var multer=require(_0xd1d2('0x0'));var util=require(_0xd1d2('0x1'));var path=require(_0xd1d2('0x2'));var timeout=require('connect-timeout');var express=require(_0xd1d2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd1d2('0x4'));var interaction=require(_0xd1d2('0x5'));var config=require('../../config/environment');var controller=require(_0xd1d2('0x6'));router[_0xd1d2('0x7')]('/',auth['isAuthenticated'](),controller[_0xd1d2('0x8')]);router[_0xd1d2('0x7')](_0xd1d2('0x9'),auth[_0xd1d2('0xa')](),controller[_0xd1d2('0xb')]);router[_0xd1d2('0x7')](_0xd1d2('0xc'),auth[_0xd1d2('0xa')](),controller[_0xd1d2('0xd')]);router[_0xd1d2('0x7')](_0xd1d2('0xe'),auth[_0xd1d2('0xa')](),controller[_0xd1d2('0xf')]);router[_0xd1d2('0x10')]('/',auth[_0xd1d2('0xa')](),controller['create']);router[_0xd1d2('0x10')](_0xd1d2('0xe'),auth[_0xd1d2('0xa')](),controller[_0xd1d2('0x11')]);router[_0xd1d2('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xd1d2('0x13')]);router[_0xd1d2('0x14')](_0xd1d2('0xc'),auth['isAuthenticated'](),controller[_0xd1d2('0x15')]);router['delete'](_0xd1d2('0xe'),auth[_0xd1d2('0xa')](),controller['removeAgents']);module[_0xd1d2('0x16')]=router;
\ No newline at end of file
index 80d3fde..f59495f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd7=['VIRTUAL','system-','getDataValue','exports','STRING','name'];(function(_0x36c2d5,_0x39743f){var _0x4fc75a=function(_0x1227bf){while(--_0x1227bf){_0x36c2d5['push'](_0x36c2d5['shift']());}};_0x4fc75a(++_0x39743f);}(_0x5bd7,0xc9));var _0x75bd=function(_0x2d1748,_0x25bfea){_0x2d1748=_0x2d1748-0x0;var _0x12ab36=_0x5bd7[_0x2d1748];return _0x12ab36;};'use strict';var Sequelize=require('sequelize');module[_0x75bd('0x0')]={'name':{'type':Sequelize[_0x75bd('0x1')],'allowNull':![],'unique':_0x75bd('0x2')},'prefix':{'type':Sequelize[_0x75bd('0x3')],'get':function(_0x3e204e){return _0x75bd('0x4')+this[_0x75bd('0x5')]('name')+'-';}},'description':{'type':Sequelize[_0x75bd('0x1')]},'callerIdAll':{'type':Sequelize[_0x75bd('0x1')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xba51=['name','VIRTUAL','system-','INTEGER','sequelize','STRING'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xba51,0xb2));var _0x1ba5=function(_0x3bb5f6,_0x42d311){_0x3bb5f6=_0x3bb5f6-0x0;var _0x2fa196=_0xba51[_0x3bb5f6];return _0x2fa196;};'use strict';var Sequelize=require(_0x1ba5('0x0'));module['exports']={'name':{'type':Sequelize[_0x1ba5('0x1')],'allowNull':![],'unique':_0x1ba5('0x2')},'prefix':{'type':Sequelize[_0x1ba5('0x3')],'get':function(_0x394ffe){return _0x1ba5('0x4')+this['getDataValue'](_0x1ba5('0x2'))+'-';}},'description':{'type':Sequelize[_0x1ba5('0x1')]},'callerIdAll':{'type':Sequelize[_0x1ba5('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x1ba5('0x5')]}};
\ No newline at end of file
index 82aadad..de09001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x160f=['forEach','removeTeams','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','includes','all','value','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','name','send','index','map','VoicePrefix','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','describe','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','exten','app','type','system','description','Voice\x20Prefix\x20Extension','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','prefix','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','VoiceExtensionId','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','hasOwnProperty','nolimit','Team','getTeams','Agents','online','voicePause','interface','transaction','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate'];(function(_0x2b9cce,_0xbb8890){var _0x4e4ddf=function(_0x5ef3cd){while(--_0x5ef3cd){_0x2b9cce['push'](_0x2b9cce['shift']());}};_0x4e4ddf(++_0xbb8890);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xf160('0x0'));var rimraf=require(_0xf160('0x1'));var zipdir=require(_0xf160('0x2'));var jsonpatch=require(_0xf160('0x3'));var rp=require('request-promise');var moment=require(_0xf160('0x4'));var BPromise=require(_0xf160('0x5'));var Mustache=require(_0xf160('0x6'));var util=require(_0xf160('0x7'));var path=require(_0xf160('0x8'));var sox=require(_0xf160('0x9'));var csv=require('to-csv');var ejs=require(_0xf160('0xa'));var fs=require('fs');var fs_extra=require(_0xf160('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf160('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf160('0xd'));var Papa=require(_0xf160('0xe'));var Redis=require(_0xf160('0xf'));var authService=require(_0xf160('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf160('0x11'));var logger=require(_0xf160('0x12'))(_0xf160('0x13'));var utils=require('../../config/utils');var config=require(_0xf160('0x14'));var licenseUtil=require(_0xf160('0x15'));var db=require(_0xf160('0x16'))['db'];config[_0xf160('0x17')]=_[_0xf160('0x18')](config['redis'],{'host':_0xf160('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf160('0x17')]));require(_0xf160('0x1a'))[_0xf160('0x1b')](socket);function respondWithStatusCode(_0x2bb6c7,_0x3a4faa){_0x3a4faa=_0x3a4faa||0xcc;return function(_0x31f7ae){if(_0x31f7ae){return _0x2bb6c7[_0xf160('0x1c')](_0x3a4faa);}return _0x2bb6c7[_0xf160('0x1d')](_0x3a4faa)[_0xf160('0x1e')]();};}function respondWithResult(_0x59ac02,_0x477e4d){_0x477e4d=_0x477e4d||0xc8;return function(_0x400bda){if(_0x400bda){return _0x59ac02[_0xf160('0x1d')](_0x477e4d)[_0xf160('0x1f')](_0x400bda);}};}function respondWithFilteredResult(_0x51824b,_0x36a978){return function(_0x4b8185){if(_0x4b8185){var _0x5388c7=typeof _0x36a978[_0xf160('0x20')]===_0xf160('0x21')&&typeof _0x36a978[_0xf160('0x22')]===_0xf160('0x21');var _0x205afa=_0x4b8185[_0xf160('0x23')];var _0x2a8cb4=_0x5388c7?0x0:_0x36a978[_0xf160('0x20')];var _0x4a58d9=_0x5388c7?_0x4b8185[_0xf160('0x23')]:_0x36a978[_0xf160('0x20')]+_0x36a978[_0xf160('0x22')];var _0x5ad173;if(_0x4a58d9>=_0x205afa){_0x4a58d9=_0x205afa;_0x5ad173=0xc8;}else{_0x5ad173=0xce;}_0x51824b[_0xf160('0x1d')](_0x5ad173);return _0x51824b[_0xf160('0x24')](_0xf160('0x25'),_0x2a8cb4+'-'+_0x4a58d9+'/'+_0x205afa)[_0xf160('0x1f')](_0x4b8185);}return null;};}function patchUpdates(_0x2e03c8){return function(_0x1b0081){try{jsonpatch[_0xf160('0x26')](_0x1b0081,_0x2e03c8,!![]);}catch(_0x5a72d1){return BPromise[_0xf160('0x27')](_0x5a72d1);}return _0x1b0081[_0xf160('0x28')]();};}function saveUpdates(_0x305f6a,_0x49bb5c){return function(_0x578f7d){if(_0x578f7d){return _0x578f7d[_0xf160('0x29')](_0x305f6a)[_0xf160('0x2a')](function(_0x4a8003){return _0x4a8003;});}return null;};}function removeEntity(_0x487c0c,_0x168a09){return function(_0x1cc04c){if(_0x1cc04c){return _0x1cc04c[_0xf160('0x2b')]()['then'](function(){var _0xcfa9bd=_0x1cc04c[_0xf160('0x2c')]({'plain':!![]});var _0x2851e8=_0xf160('0x2d');return db[_0xf160('0x2e')][_0xf160('0x2b')]({'where':{'type':_0x2851e8,'resourceId':_0xcfa9bd['id']}})['then'](function(){return _0x1cc04c;});})['then'](function(){_0x487c0c['status'](0xcc)[_0xf160('0x1e')]();});}};}function handleEntityNotFound(_0x16a5fa,_0xcaab39){return function(_0x26e06b){if(!_0x26e06b){_0x16a5fa[_0xf160('0x1c')](0x194);}return _0x26e06b;};}function handleError(_0x563103,_0x55f9c3){_0x55f9c3=_0x55f9c3||0x1f4;return function(_0x329d6b){logger['error'](_0x329d6b['stack']);if(_0x329d6b[_0xf160('0x2f')]){delete _0x329d6b[_0xf160('0x2f')];}_0x563103['status'](_0x55f9c3)[_0xf160('0x30')](_0x329d6b);};}exports[_0xf160('0x31')]=function(_0x4ab048,_0x528dff){var _0x4b3ef4={},_0x54d17f={},_0x3e7720={'count':0x0,'rows':[]};var _0x2bb5c4=_[_0xf160('0x32')](db[_0xf160('0x33')][_0xf160('0x34')],function(_0x26fc8b){return{'name':_0x26fc8b['fieldName'],'type':_0x26fc8b['type']['key']};});_0x54d17f[_0xf160('0x35')]=_['map'](_0x2bb5c4,'name');_0x54d17f[_0xf160('0x36')]=_[_0xf160('0x37')](_0x4ab048['query']);_0x54d17f[_0xf160('0x38')]=_[_0xf160('0x39')](_0x54d17f[_0xf160('0x35')],_0x54d17f[_0xf160('0x36')]);_0x4b3ef4[_0xf160('0x3a')]=_['intersection'](_0x54d17f[_0xf160('0x35')],qs[_0xf160('0x3b')](_0x4ab048[_0xf160('0x36')]['fields']));_0x4b3ef4[_0xf160('0x3a')]=_0x4b3ef4[_0xf160('0x3a')][_0xf160('0x3c')]?_0x4b3ef4[_0xf160('0x3a')]:_0x54d17f[_0xf160('0x35')];if(!_0x4ab048[_0xf160('0x36')]['hasOwnProperty']('nolimit')){_0x4b3ef4[_0xf160('0x22')]=qs[_0xf160('0x22')](_0x4ab048[_0xf160('0x36')][_0xf160('0x22')]);_0x4b3ef4[_0xf160('0x20')]=qs[_0xf160('0x20')](_0x4ab048[_0xf160('0x36')][_0xf160('0x20')]);}_0x4b3ef4[_0xf160('0x3d')]=qs[_0xf160('0x3e')](_0x4ab048[_0xf160('0x36')][_0xf160('0x3e')]);_0x4b3ef4[_0xf160('0x3f')]=qs[_0xf160('0x38')](_[_0xf160('0x40')](_0x4ab048[_0xf160('0x36')],_0x54d17f[_0xf160('0x38')]),_0x2bb5c4);if(_0x4ab048[_0xf160('0x36')][_0xf160('0x41')]){_0x4b3ef4[_0xf160('0x3f')]=_[_0xf160('0x42')](_0x4b3ef4[_0xf160('0x3f')],{'$or':_[_0xf160('0x32')](_0x2bb5c4,function(_0x1bdc44){if(_0x1bdc44['type']!==_0xf160('0x43')){var _0x476c31={};_0x476c31[_0x1bdc44[_0xf160('0x2f')]]={'$like':'%'+_0x4ab048[_0xf160('0x36')][_0xf160('0x41')]+'%'};return _0x476c31;}})});}_0x4b3ef4=_[_0xf160('0x42')]({},_0x4b3ef4,_0x4ab048[_0xf160('0x44')]);var _0x4f65c9={'where':_0x4b3ef4[_0xf160('0x3f')]};return db['VoicePrefix'][_0xf160('0x23')](_0x4f65c9)[_0xf160('0x2a')](function(_0x530fc5){_0x3e7720[_0xf160('0x23')]=_0x530fc5;if(_0x4ab048[_0xf160('0x36')][_0xf160('0x45')]){_0x4b3ef4[_0xf160('0x46')]=[{'all':!![]}];}return db[_0xf160('0x33')][_0xf160('0x47')](_0x4b3ef4);})[_0xf160('0x2a')](function(_0x4f5eba){_0x3e7720[_0xf160('0x48')]=_0x4f5eba;return _0x3e7720;})[_0xf160('0x2a')](respondWithFilteredResult(_0x528dff,_0x4b3ef4))[_0xf160('0x49')](handleError(_0x528dff,null));};exports[_0xf160('0x4a')]=function(_0x3e4f0e,_0x2caefa){var _0x33bef9={'raw':![],'where':{'id':_0x3e4f0e[_0xf160('0x4b')]['id']}},_0x15b31a={};_0x15b31a[_0xf160('0x35')]=_[_0xf160('0x37')](db['VoicePrefix']['rawAttributes']);_0x15b31a[_0xf160('0x36')]=_[_0xf160('0x37')](_0x3e4f0e[_0xf160('0x36')]);_0x15b31a[_0xf160('0x38')]=_[_0xf160('0x39')](_0x15b31a[_0xf160('0x35')],_0x15b31a['query']);_0x33bef9[_0xf160('0x3a')]=_['intersection'](_0x15b31a['model'],qs[_0xf160('0x3b')](_0x3e4f0e[_0xf160('0x36')]['fields']));_0x33bef9['attributes']=_0x33bef9[_0xf160('0x3a')][_0xf160('0x3c')]?_0x33bef9[_0xf160('0x3a')]:_0x15b31a[_0xf160('0x35')];if(_0x3e4f0e['query']['includeAll']){_0x33bef9['include']=[{'all':!![]}];}_0x33bef9=_['merge']({},_0x33bef9,_0x3e4f0e[_0xf160('0x44')]);return db['VoicePrefix'][_0xf160('0x4c')](_0x33bef9)[_0xf160('0x2a')](handleEntityNotFound(_0x2caefa,null))[_0xf160('0x2a')](respondWithResult(_0x2caefa,null))[_0xf160('0x49')](handleError(_0x2caefa,null));};exports['destroy']=function(_0x45af83,_0x283f55){return db[_0xf160('0x33')]['find']({'where':{'id':_0x45af83[_0xf160('0x4b')]['id']}})[_0xf160('0x2a')](handleEntityNotFound(_0x283f55,null))[_0xf160('0x2a')](removeEntity(_0x283f55,null))['catch'](handleError(_0x283f55,null));};exports[_0xf160('0x4d')]=function(_0x6d8c9b,_0x409e7d){return db[_0xf160('0x33')][_0xf160('0x4d')]()['then'](respondWithResult(_0x409e7d,null))['catch'](handleError(_0x409e7d,null));};exports[_0xf160('0x4e')]=function(_0x5d81b9,_0x1d5168){var _0xf31056;return db['sequelize']['transaction'](function(_0x321309){return db[_0xf160('0x33')]['create'](_0x5d81b9[_0xf160('0x4f')],{'transaction':_0x321309})[_0xf160('0x2a')](function(_0x28605d){_0xf31056=_0x28605d[_0xf160('0x2c')]({'plain':!![]});return db['VoiceExtension'][_0xf160('0x4c')]({'where':{'id':_0xf31056['VoiceExtensionId']},'raw':!![]})[_0xf160('0x2a')](function(_0x1b3ec0){return createVoicePrefixExtensions(_0xf31056,_0x1b3ec0,_0x321309);});});})[_0xf160('0x2a')](function(){var _0x170ca4=_0x5d81b9[_0xf160('0x50')]['get']({'plain':!![]});if(!_0x170ca4)throw new Error(_0xf160('0x51'));if(_0x170ca4['role']===_0xf160('0x50')){var _0x1229cd=_0xf31056;return db[_0xf160('0x52')][_0xf160('0x4c')]({'where':{'name':_0xf160('0x2d'),'userProfileId':_0x170ca4[_0xf160('0x53')]},'raw':!![]})[_0xf160('0x2a')](function(_0x12c22){if(_0x12c22&&_0x12c22[_0xf160('0x54')]===0x0){return db[_0xf160('0x2e')]['create']({'name':_0x1229cd['name'],'resourceId':_0x1229cd['id'],'type':_0x12c22[_0xf160('0x2f')],'sectionId':_0x12c22['id']},{})[_0xf160('0x2a')](function(){return _0xf31056;});}else{return _0xf31056;}})['catch'](function(_0x12083d){logger[_0xf160('0x55')](_0xf160('0x56'),_0x12083d);throw _0x12083d;});}return _0xf31056;})['then'](respondWithResult(_0x1d5168,null))['catch'](handleError(_0x1d5168,null));};function Extension(_0x12ab32,_0x352ddb,_0x5eeab6,_0x3243c6){this[_0xf160('0x57')]='from-sip';this[_0xf160('0x58')]=_0x12ab32;this[_0xf160('0x59')]=_0x5eeab6;this[_0xf160('0x5a')]=_0xf160('0x5b');this[_0xf160('0x5c')]=_0xf160('0x5d');this['priority']=_0x352ddb;this[_0xf160('0x5e')]=_0x3243c6;}function createVoicePrefixExtensions(_0x3dc02f,_0x30f750,_0x1364bc){return new BPromise(function(_0x38ee0f,_0x5a1be3){var _0x1d22bb=new Extension(formatPrefixName(_0x3dc02f['prefix']),0x1,_0xf160('0x5f'),_0xf160('0x60'));_0x1d22bb[_0xf160('0x61')]=_0x3dc02f['id'];return db[_0xf160('0x62')][_0xf160('0x4e')](_0x1d22bb,{'transaction':_0x1364bc})[_0xf160('0x2a')](function(_0x492d5b){var _0x32ec90=_0x492d5b[_0xf160('0x2c')]({'plain':!![]});var _0x291320=_[_0xf160('0x32')](addVoicePrefixExtensions(_0x3dc02f,_0x30f750),function(_0x40e5a1){_0x40e5a1['VoiceExtensionId']=_0x32ec90['id'];_0x40e5a1['VoicePrefixId']=_0x3dc02f['id'];return _0x40e5a1;});return db[_0xf160('0x62')][_0xf160('0x63')](_0x291320,{'transaction':_0x1364bc})[_0xf160('0x2a')](function(_0x3d8c6c){if(!_0x3d8c6c){return _0x5a1be3(_0xf160('0x64'));}else{return _0x38ee0f(_0x3d8c6c);}})[_0xf160('0x49')](function(_0x4c151f){return _0x5a1be3(_0x4c151f);});});;});};function addVoicePrefixExtensions(_0x25f79e,_0x27332f){var _0x351fa9=[];var _0x352063=formatPrefixName(_0x25f79e[_0xf160('0x65')]);_0x351fa9[_0xf160('0x66')](new Extension(_0x352063,0x2,_0xf160('0x67'),_0xf160('0x68')+_0x25f79e['name']));if(_0x25f79e[_0xf160('0x69')]){_0x351fa9['push'](new Extension(_0x352063,0x3,_0xf160('0x67'),_0xf160('0x6a')+_0x25f79e[_0xf160('0x69')]));}else{_0x351fa9[_0xf160('0x66')](new Extension(_0x352063,0x3,_0xf160('0x5f'),_0xf160('0x6b')));}_0x351fa9['push'](new Extension(_0x352063,0x4,_0xf160('0x6c'),_0x27332f[_0xf160('0x57')]+','+_0xf160('0x6d')+(0x8+_0x25f79e['name'][_0xf160('0x3c')])+'}'+','+0x1));return _0x351fa9;}function formatPrefixName(_0x407a4a){var _0x4db1df='_';for(var _0x1db588=0x0;_0x1db588<_0x407a4a[_0xf160('0x3c')];_0x1db588++){if(_0x407a4a[_0xf160('0x6e')](_0x1db588)=='-'){_0x4db1df+=_0x407a4a['charAt'](_0x1db588);}else{_0x4db1df+='['+_0x407a4a[_0xf160('0x6e')](_0x1db588)+']';}}_0x4db1df+='.';return _0x4db1df;}exports[_0xf160('0x29')]=function(_0x4265e1,_0x4b9d21,_0xc78642){var _0x136919=_0x4265e1[_0xf160('0x4f')];_0x136919[_0xf160('0x65')]=_0xf160('0x6f')+_0x136919[_0xf160('0x2f')]+'-';return db[_0xf160('0x70')]['transaction'](function(_0x797ba1){return db[_0xf160('0x33')][_0xf160('0x29')](_0x136919,{'where':{'id':_0x136919['id']},'transaction':_0x797ba1})['then'](function(){return db[_0xf160('0x62')][_0xf160('0x2b')]({'where':{'VoicePrefixId':_0x136919['id']},'transaction':_0x797ba1})[_0xf160('0x2a')](function(){return db[_0xf160('0x62')][_0xf160('0x4c')]({'where':{'id':_0x136919[_0xf160('0x71')]},'raw':!![]})[_0xf160('0x2a')](function(_0x59b63c){return createVoicePrefixExtensions(_0x136919,_0x59b63c,_0x797ba1);});});});})['then'](function(){return db[_0xf160('0x33')][_0xf160('0x72')](_0x136919['id']);})[_0xf160('0x2a')](respondWithResult(_0x4b9d21,null))[_0xf160('0x49')](handleError(_0x4b9d21,null));};exports[_0xf160('0x73')]=function(_0x722f3a,_0x2f434c,_0x484b18){return db[_0xf160('0x33')][_0xf160('0x4c')]({'where':{'id':_0x722f3a['params']['id']}})['then'](handleEntityNotFound(_0x2f434c,null))[_0xf160('0x2a')](function(_0x14d69d){if(_0x14d69d){return _0x14d69d['addAgents'](_0x722f3a[_0xf160('0x4f')][_0xf160('0x74')],_['omit'](_0x722f3a[_0xf160('0x4f')],['ids','id'])||{})[_0xf160('0x75')](function(_0x355226){for(var _0x74028e=0x0;_0x74028e<_0x722f3a[_0xf160('0x4f')]['ids'][_0xf160('0x3c')];_0x74028e+=0x1){socket[_0xf160('0x76')](_0xf160('0x77'),{'UserId':Number(_0x722f3a[_0xf160('0x4f')][_0xf160('0x74')][_0x74028e]),'VoicePrefixId':Number(_0x722f3a['params']['id'])});}return _0x355226;});}})[_0xf160('0x2a')](respondWithResult(_0x2f434c,null))[_0xf160('0x49')](handleError(_0x2f434c,null));};exports[_0xf160('0x78')]=function(_0x5275b4,_0x2396f6,_0x1165f5){return db[_0xf160('0x33')][_0xf160('0x4c')]({'where':{'id':_0x5275b4[_0xf160('0x4b')]['id']}})[_0xf160('0x2a')](handleEntityNotFound(_0x2396f6,null))[_0xf160('0x2a')](function(_0x543534){if(_0x543534){return _0x543534[_0xf160('0x78')](_0x5275b4[_0xf160('0x36')][_0xf160('0x74')])[_0xf160('0x2a')](function(){if(_[_0xf160('0x79')](_0x5275b4['query'][_0xf160('0x74')])){for(var _0x3526cd=0x0;_0x3526cd<_0x5275b4[_0xf160('0x36')][_0xf160('0x74')][_0xf160('0x3c')];_0x3526cd+=0x1){socket[_0xf160('0x76')](_0xf160('0x7a'),{'UserId':Number(_0x5275b4[_0xf160('0x36')][_0xf160('0x74')][_0x3526cd]),'VoicePrefixId':Number(_0x5275b4[_0xf160('0x4b')]['id'])});}}else{socket[_0xf160('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0x5275b4[_0xf160('0x36')]['ids']),'VoicePrefixId':Number(_0x5275b4[_0xf160('0x4b')]['id'])});}});}})[_0xf160('0x2a')](respondWithStatusCode(_0x2396f6,null))[_0xf160('0x49')](handleError(_0x2396f6,null));};exports[_0xf160('0x7b')]=function(_0x6ff6b1,_0x59281e,_0x3f873a){var _0x38426d={};var _0x2a992a={};var _0x185268;var _0x5927c9;return db['VoicePrefix'][_0xf160('0x7c')]({'where':{'id':_0x6ff6b1['params']['id']}})[_0xf160('0x2a')](handleEntityNotFound(_0x59281e,null))['then'](function(_0x21b93a){if(_0x21b93a){_0x185268=_0x21b93a;_0x2a992a['model']=_['keys'](db[_0xf160('0x7d')][_0xf160('0x34')]);_0x2a992a[_0xf160('0x36')]=_[_0xf160('0x37')](_0x6ff6b1[_0xf160('0x36')]);_0x2a992a[_0xf160('0x38')]=_[_0xf160('0x39')](_0x2a992a[_0xf160('0x35')],_0x2a992a[_0xf160('0x36')]);_0x38426d['attributes']=_['intersection'](_0x2a992a[_0xf160('0x35')],qs[_0xf160('0x3b')](_0x6ff6b1[_0xf160('0x36')][_0xf160('0x3b')]));_0x38426d[_0xf160('0x3a')]=_0x38426d['attributes'][_0xf160('0x3c')]?_0x38426d[_0xf160('0x3a')]:_0x2a992a[_0xf160('0x35')];_0x38426d[_0xf160('0x3d')]=qs['sort'](_0x6ff6b1['query']['sort']);_0x38426d[_0xf160('0x3f')]=qs['filters'](_[_0xf160('0x40')](_0x6ff6b1['query'],_0x2a992a[_0xf160('0x38')]));if(_0x6ff6b1[_0xf160('0x36')]['filter']){_0x38426d[_0xf160('0x3f')]=_[_0xf160('0x42')](_0x38426d[_0xf160('0x3f')],{'$or':_[_0xf160('0x32')](_0x38426d[_0xf160('0x3a')],function(_0x39ec7e){var _0x2558b8={};_0x2558b8[_0x39ec7e]={'$like':'%'+_0x6ff6b1['query']['filter']+'%'};return _0x2558b8;})});}_0x38426d=_[_0xf160('0x42')]({},_0x38426d,_0x6ff6b1[_0xf160('0x44')]);return _0x185268[_0xf160('0x7b')](_0x38426d);}})['then'](function(_0x5316c5){if(_0x5316c5){_0x5927c9=_0x5316c5[_0xf160('0x3c')];if(!_0x6ff6b1[_0xf160('0x36')][_0xf160('0x7e')](_0xf160('0x7f'))){_0x38426d[_0xf160('0x22')]=qs[_0xf160('0x22')](_0x6ff6b1[_0xf160('0x36')][_0xf160('0x22')]);_0x38426d[_0xf160('0x20')]=qs[_0xf160('0x20')](_0x6ff6b1['query'][_0xf160('0x20')]);}return _0x185268[_0xf160('0x7b')](_0x38426d);}})[_0xf160('0x2a')](function(_0x3ee8d8){if(_0x3ee8d8){return _0x3ee8d8?{'count':_0x5927c9,'rows':_0x3ee8d8}:null;}})[_0xf160('0x2a')](respondWithResult(_0x59281e,null))[_0xf160('0x49')](handleError(_0x59281e,null));};exports['getTeams']=function(_0x336560,_0x120282,_0x2b6e56){var _0x362718={};var _0xcf5dee={};var _0x2a8af4;var _0x224dcc;return db[_0xf160('0x33')]['findOne']({'where':{'id':_0x336560['params']['id']}})[_0xf160('0x2a')](handleEntityNotFound(_0x120282,null))[_0xf160('0x2a')](function(_0x55865d){if(_0x55865d){_0x2a8af4=_0x55865d;_0xcf5dee[_0xf160('0x35')]=_[_0xf160('0x37')](db[_0xf160('0x80')][_0xf160('0x34')]);_0xcf5dee[_0xf160('0x36')]=_[_0xf160('0x37')](_0x336560[_0xf160('0x36')]);_0xcf5dee[_0xf160('0x38')]=_[_0xf160('0x39')](_0xcf5dee[_0xf160('0x35')],_0xcf5dee['query']);_0x362718[_0xf160('0x3a')]=_[_0xf160('0x39')](_0xcf5dee[_0xf160('0x35')],qs[_0xf160('0x3b')](_0x336560[_0xf160('0x36')]['fields']));_0x362718[_0xf160('0x3a')]=_0x362718[_0xf160('0x3a')][_0xf160('0x3c')]?_0x362718[_0xf160('0x3a')]:_0xcf5dee['model'];_0x362718[_0xf160('0x3d')]=qs[_0xf160('0x3e')](_0x336560['query']['sort']);_0x362718['where']=qs['filters'](_['pick'](_0x336560[_0xf160('0x36')],_0xcf5dee[_0xf160('0x38')]));if(_0x336560['query']['filter']){_0x362718[_0xf160('0x3f')]=_[_0xf160('0x42')](_0x362718['where'],{'$or':_[_0xf160('0x32')](_0x362718['attributes'],function(_0x32fb34){var _0x3b1d1a={};_0x3b1d1a[_0x32fb34]={'$like':'%'+_0x336560[_0xf160('0x36')]['filter']+'%'};return _0x3b1d1a;})});}_0x362718=_[_0xf160('0x42')]({},_0x362718,_0x336560['options']);return _0x2a8af4[_0xf160('0x81')](_0x362718);}})['then'](function(_0x308dd9){if(_0x308dd9){_0x224dcc=_0x308dd9['length'];if(!_0x336560[_0xf160('0x36')]['hasOwnProperty'](_0xf160('0x7f'))){_0x362718[_0xf160('0x22')]=qs['limit'](_0x336560[_0xf160('0x36')][_0xf160('0x22')]);_0x362718['offset']=qs[_0xf160('0x20')](_0x336560[_0xf160('0x36')][_0xf160('0x20')]);}return _0x2a8af4[_0xf160('0x81')](_0x362718);}})['then'](function(_0x5cdecf){if(_0x5cdecf){return _0x5cdecf?{'count':_0x224dcc,'rows':_0x5cdecf}:null;}})[_0xf160('0x2a')](respondWithResult(_0x120282,null))[_0xf160('0x49')](handleError(_0x120282,null));};exports['addTeams']=function(_0x28b2cb,_0x24e3b5,_0x5c0dc8){var _0x182ed8=_0x28b2cb['body'][_0xf160('0x74')];var _0x2eada8;return db[_0xf160('0x80')]['findAll']({'where':{'id':_0x182ed8},'attributes':['id'],'include':[{'model':db[_0xf160('0x7d')],'as':_0xf160('0x82'),'attributes':['id',_0xf160('0x2f'),_0xf160('0x83'),_0xf160('0x84'),_0xf160('0x85')],'raw':!![]}]})[_0xf160('0x2a')](function(_0x2dbb52){if(_0x2dbb52){_0x2eada8=_0x2dbb52;var _0x5b29e0=_['flatMap'](_0x2dbb52,function(_0x2ae1dc){var _0x50912b=_0x2ae1dc['get']({'plain':!![]});return _0x50912b[_0xf160('0x82')];});return db['VoicePrefix'][_0xf160('0x4c')]({'where':{'id':_0x28b2cb[_0xf160('0x4b')]['id']}})[_0xf160('0x2a')](function(_0x26aa72){return db[_0xf160('0x70')][_0xf160('0x86')](function(_0x1bef1a){return _0x26aa72[_0xf160('0x87')](_0x182ed8,{'transaction':_0x1bef1a})[_0xf160('0x2a')](function(){return BPromise[_0xf160('0x88')](_0x2eada8,function(_0x154789){return db[_0xf160('0x89')][_0xf160('0x8a')]({'TeamId':_0x154789['id'],'VoicePrefixId':_0x28b2cb['params']['id']},{'transaction':_0x1bef1a});});})[_0xf160('0x2a')](function(){return BPromise[_0xf160('0x88')](_0x5b29e0,function(_0x3e46d1){return db[_0xf160('0x8b')][_0xf160('0x8c')]({'where':{'UserId':_0x3e46d1['id'],'VoicePrefixId':_0x28b2cb[_0xf160('0x4b')]['id']},'transaction':_0x1bef1a});});})[_0xf160('0x2a')](function(){_0x5b29e0[_0xf160('0x8d')](function(_0x3e9116){socket[_0xf160('0x76')](_0xf160('0x77'),{'UserId':_0x3e9116['id'],'VoicePrefixId':_0x26aa72['id']});});});});});}})[_0xf160('0x2a')](respondWithStatusCode(_0x24e3b5,null))[_0xf160('0x49')](handleError(_0x24e3b5,null));};exports[_0xf160('0x8e')]=function(_0x481f96,_0x4186f7,_0x37579a){return db[_0xf160('0x80')][_0xf160('0x47')]({'where':{'id':_0x481f96[_0xf160('0x36')][_0xf160('0x74')]},'attributes':['id'],'include':[{'model':db[_0xf160('0x7d')],'as':_0xf160('0x82'),'attributes':['id'],'raw':!![]}]})[_0xf160('0x2a')](handleEntityNotFound(_0x4186f7,null))[_0xf160('0x2a')](function(_0x36c1c5){var _0x4753d6=_[_0xf160('0x32')](_0x36c1c5,'id');var _0x2c486d=[];var _0x26332b=[];var _0x539056=squel['select']();_0x539056['field'](_0xf160('0x8f'))[_0xf160('0x90')](_0xf160('0x91'),'tq')[_0xf160('0x92')](_0xf160('0x93'),'ut',_0xf160('0x94'))['where'](_0xf160('0x95'),_0x481f96[_0xf160('0x4b')]['id']);for(var _0x1d308e=0x0;_0x1d308e<_0x36c1c5[_0xf160('0x3c')];_0x1d308e+=0x1){let _0x5bc8a3=_0x36c1c5[_0x1d308e];for(var _0x19dc59=0x0;_0x19dc59<_0x5bc8a3[_0xf160('0x82')][_0xf160('0x3c')];_0x19dc59+=0x1){let _0x35de2b=_0x5bc8a3[_0xf160('0x82')][_0x19dc59];var _0x446548=_0x539056[_0xf160('0x96')]();_0x446548[_0xf160('0x3f')](_0xf160('0x97'),_0x35de2b['id']);_0x26332b[_0xf160('0x66')](db[_0xf160('0x70')][_0xf160('0x36')](_0x446548[_0xf160('0x98')](),{'type':db[_0xf160('0x70')][_0xf160('0x99')][_0xf160('0x9a')]})[_0xf160('0x2a')](function(_0x258ad9){if(_0x258ad9['length']===0x1){return _0x35de2b['id'];}else{var _0x27d3ef=_['every'](_['map'](_0x258ad9,'TeamId'),function(_0x191d89){return _[_0xf160('0x9b')](_0x4753d6,_0x191d89);});if(_0x27d3ef){return _0x35de2b['id'];}}}));}}return BPromise[_0xf160('0x9c')](_0x26332b)[_0xf160('0x2a')](function(_0x2391f9){_0x2c486d=_(_0x2c486d)['union'](_0x2391f9)['compact']()[_0xf160('0x9d')]();return db[_0xf160('0x33')]['find']({'where':{'id':_0x481f96[_0xf160('0x4b')]['id']}})[_0xf160('0x2a')](function(_0x3d9b9b){return db[_0xf160('0x70')][_0xf160('0x86')](function(_0x563e5d){return _0x3d9b9b[_0xf160('0x8e')](_0x481f96['query'][_0xf160('0x74')],{'transaction':_0x563e5d})[_0xf160('0x2a')](function(){if(!_[_0xf160('0x9e')](_0x2c486d)){return _0x3d9b9b['removeAgents'](_0x2c486d,{'transaction':_0x563e5d});}})[_0xf160('0x2a')](function(){_0x2c486d[_0xf160('0x8d')](function(_0xfb5d28){socket[_0xf160('0x76')](_0xf160('0x7a'),{'UserId':_0xfb5d28,'VoicePrefixId':_0x3d9b9b['id']});});});});});});})[_0xf160('0x2a')](respondWithStatusCode(_0x4186f7,null))[_0xf160('0x49')](handleError(_0x4186f7,null));};
\ No newline at end of file
+var _0x9e0d=['fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','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','redis','defaults','socket.io-emitter','./voicePrefix.socket','sendStatus','status','json','undefined','limit','count','offset','set','apply','save','then','destroy','get','VoicePrefixes','end','error','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','catch','describe','sequelize','create','body','find','VoiceExtensionId','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','from-sip','exten','app','system','Voice\x20Prefix\x20Extension','priority','prefix','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','push','goto','context','${EXTEN:','charAt','system-','transaction','update','findById','addAgents','ids','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','hasOwnProperty','eml-format','rimraf','zip-dir'];(function(_0x2d7c10,_0x21b6df){var _0x29279c=function(_0x2137b9){while(--_0x2137b9){_0x2d7c10['push'](_0x2d7c10['shift']());}};_0x29279c(++_0x21b6df);}(_0x9e0d,0xf7));var _0xd9e0=function(_0x584dc4,_0x540963){_0x584dc4=_0x584dc4-0x0;var _0x2996ca=_0x9e0d[_0x584dc4];return _0x2996ca;};'use strict';var emlformat=require(_0xd9e0('0x0'));var rimraf=require(_0xd9e0('0x1'));var zipdir=require(_0xd9e0('0x2'));var jsonpatch=require(_0xd9e0('0x3'));var rp=require('request-promise');var moment=require(_0xd9e0('0x4'));var BPromise=require(_0xd9e0('0x5'));var Mustache=require(_0xd9e0('0x6'));var util=require(_0xd9e0('0x7'));var path=require(_0xd9e0('0x8'));var sox=require(_0xd9e0('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd9e0('0xa'));var _=require(_0xd9e0('0xb'));var squel=require(_0xd9e0('0xc'));var crypto=require(_0xd9e0('0xd'));var jsforce=require(_0xd9e0('0xe'));var deskjs=require(_0xd9e0('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd9e0('0x10'));var Papa=require(_0xd9e0('0x11'));var Redis=require(_0xd9e0('0x12'));var authService=require(_0xd9e0('0x13'));var qs=require(_0xd9e0('0x14'));var as=require(_0xd9e0('0x15'));var hardwareService=require(_0xd9e0('0x16'));var logger=require('../../config/logger')(_0xd9e0('0x17'));var utils=require(_0xd9e0('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd9e0('0x19'));var db=require(_0xd9e0('0x1a'))['db'];config[_0xd9e0('0x1b')]=_[_0xd9e0('0x1c')](config[_0xd9e0('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xd9e0('0x1d'))(new Redis(config['redis']));require(_0xd9e0('0x1e'))['register'](socket);function respondWithStatusCode(_0x24d361,_0x28146d){_0x28146d=_0x28146d||0xcc;return function(_0x60be45){if(_0x60be45){return _0x24d361[_0xd9e0('0x1f')](_0x28146d);}return _0x24d361[_0xd9e0('0x20')](_0x28146d)['end']();};}function respondWithResult(_0x58d44c,_0x5aff0b){_0x5aff0b=_0x5aff0b||0xc8;return function(_0x2eebec){if(_0x2eebec){return _0x58d44c[_0xd9e0('0x20')](_0x5aff0b)[_0xd9e0('0x21')](_0x2eebec);}};}function respondWithFilteredResult(_0x1cdcb6,_0x59f9b2){return function(_0x209c04){if(_0x209c04){var _0x56421e=typeof _0x59f9b2['offset']===_0xd9e0('0x22')&&typeof _0x59f9b2[_0xd9e0('0x23')]==='undefined';var _0x5ac8f5=_0x209c04[_0xd9e0('0x24')];var _0x3189ef=_0x56421e?0x0:_0x59f9b2['offset'];var _0x16673d=_0x56421e?_0x209c04[_0xd9e0('0x24')]:_0x59f9b2[_0xd9e0('0x25')]+_0x59f9b2[_0xd9e0('0x23')];var _0x67f69f;if(_0x16673d>=_0x5ac8f5){_0x16673d=_0x5ac8f5;_0x67f69f=0xc8;}else{_0x67f69f=0xce;}_0x1cdcb6[_0xd9e0('0x20')](_0x67f69f);return _0x1cdcb6[_0xd9e0('0x26')]('Content-Range',_0x3189ef+'-'+_0x16673d+'/'+_0x5ac8f5)[_0xd9e0('0x21')](_0x209c04);}return null;};}function patchUpdates(_0x333233){return function(_0x50009c){try{jsonpatch[_0xd9e0('0x27')](_0x50009c,_0x333233,!![]);}catch(_0x124ca7){return BPromise['reject'](_0x124ca7);}return _0x50009c[_0xd9e0('0x28')]();};}function saveUpdates(_0x5e17d4,_0x274815){return function(_0x33a1ea){if(_0x33a1ea){return _0x33a1ea['update'](_0x5e17d4)[_0xd9e0('0x29')](function(_0x53cf67){return _0x53cf67;});}return null;};}function removeEntity(_0x554aeb,_0x50f57d){return function(_0x4737ae){if(_0x4737ae){return _0x4737ae[_0xd9e0('0x2a')]()[_0xd9e0('0x29')](function(){var _0x1c36df=_0x4737ae[_0xd9e0('0x2b')]({'plain':!![]});var _0x4c99d3=_0xd9e0('0x2c');return db['UserProfileResource'][_0xd9e0('0x2a')]({'where':{'type':_0x4c99d3,'resourceId':_0x1c36df['id']}})[_0xd9e0('0x29')](function(){return _0x4737ae;});})[_0xd9e0('0x29')](function(){_0x554aeb[_0xd9e0('0x20')](0xcc)[_0xd9e0('0x2d')]();});}};}function handleEntityNotFound(_0x4f5367,_0x4b4f7d){return function(_0x4e719c){if(!_0x4e719c){_0x4f5367[_0xd9e0('0x1f')](0x194);}return _0x4e719c;};}function handleError(_0x1682f9,_0x55a91e){_0x55a91e=_0x55a91e||0x1f4;return function(_0x31afb5){logger[_0xd9e0('0x2e')](_0x31afb5[_0xd9e0('0x2f')]);if(_0x31afb5[_0xd9e0('0x30')]){delete _0x31afb5[_0xd9e0('0x30')];}_0x1682f9[_0xd9e0('0x20')](_0x55a91e)[_0xd9e0('0x31')](_0x31afb5);};}exports['index']=function(_0x189c6a,_0x2dfedd){var _0x36a908={},_0x289eb2={},_0x8f39d0={'count':0x0,'rows':[]};var _0x33c205=_[_0xd9e0('0x32')](db[_0xd9e0('0x33')][_0xd9e0('0x34')],function(_0x2e4dea){return{'name':_0x2e4dea[_0xd9e0('0x35')],'type':_0x2e4dea[_0xd9e0('0x36')]['key']};});_0x289eb2[_0xd9e0('0x37')]=_[_0xd9e0('0x32')](_0x33c205,_0xd9e0('0x30'));_0x289eb2[_0xd9e0('0x38')]=_[_0xd9e0('0x39')](_0x189c6a['query']);_0x289eb2[_0xd9e0('0x3a')]=_[_0xd9e0('0x3b')](_0x289eb2[_0xd9e0('0x37')],_0x289eb2[_0xd9e0('0x38')]);_0x36a908['attributes']=_[_0xd9e0('0x3b')](_0x289eb2['model'],qs[_0xd9e0('0x3c')](_0x189c6a[_0xd9e0('0x38')][_0xd9e0('0x3c')]));_0x36a908[_0xd9e0('0x3d')]=_0x36a908[_0xd9e0('0x3d')][_0xd9e0('0x3e')]?_0x36a908[_0xd9e0('0x3d')]:_0x289eb2[_0xd9e0('0x37')];if(!_0x189c6a[_0xd9e0('0x38')]['hasOwnProperty'](_0xd9e0('0x3f'))){_0x36a908[_0xd9e0('0x23')]=qs[_0xd9e0('0x23')](_0x189c6a[_0xd9e0('0x38')]['limit']);_0x36a908[_0xd9e0('0x25')]=qs[_0xd9e0('0x25')](_0x189c6a[_0xd9e0('0x38')][_0xd9e0('0x25')]);}_0x36a908[_0xd9e0('0x40')]=qs[_0xd9e0('0x41')](_0x189c6a[_0xd9e0('0x38')][_0xd9e0('0x41')]);_0x36a908[_0xd9e0('0x42')]=qs[_0xd9e0('0x3a')](_[_0xd9e0('0x43')](_0x189c6a[_0xd9e0('0x38')],_0x289eb2[_0xd9e0('0x3a')]),_0x33c205);if(_0x189c6a[_0xd9e0('0x38')][_0xd9e0('0x44')]){_0x36a908[_0xd9e0('0x42')]=_['merge'](_0x36a908[_0xd9e0('0x42')],{'$or':_[_0xd9e0('0x32')](_0x33c205,function(_0x5ea09d){if(_0x5ea09d[_0xd9e0('0x36')]!=='VIRTUAL'){var _0x2c8706={};_0x2c8706[_0x5ea09d[_0xd9e0('0x30')]]={'$like':'%'+_0x189c6a[_0xd9e0('0x38')][_0xd9e0('0x44')]+'%'};return _0x2c8706;}})});}_0x36a908=_[_0xd9e0('0x45')]({},_0x36a908,_0x189c6a[_0xd9e0('0x46')]);var _0x51a616={'where':_0x36a908['where']};return db[_0xd9e0('0x33')][_0xd9e0('0x24')](_0x51a616)[_0xd9e0('0x29')](function(_0x3fa8cb){_0x8f39d0[_0xd9e0('0x24')]=_0x3fa8cb;if(_0x189c6a['query'][_0xd9e0('0x47')]){_0x36a908[_0xd9e0('0x48')]=[{'all':!![]}];}return db[_0xd9e0('0x33')][_0xd9e0('0x49')](_0x36a908);})['then'](function(_0x3bfe73){_0x8f39d0[_0xd9e0('0x4a')]=_0x3bfe73;return _0x8f39d0;})[_0xd9e0('0x29')](respondWithFilteredResult(_0x2dfedd,_0x36a908))['catch'](handleError(_0x2dfedd,null));};exports['show']=function(_0xc28075,_0x19c030){var _0x4d76c7={'raw':![],'where':{'id':_0xc28075[_0xd9e0('0x4b')]['id']}},_0x59ea31={};_0x59ea31[_0xd9e0('0x37')]=_[_0xd9e0('0x39')](db[_0xd9e0('0x33')][_0xd9e0('0x34')]);_0x59ea31[_0xd9e0('0x38')]=_[_0xd9e0('0x39')](_0xc28075[_0xd9e0('0x38')]);_0x59ea31['filters']=_[_0xd9e0('0x3b')](_0x59ea31[_0xd9e0('0x37')],_0x59ea31['query']);_0x4d76c7[_0xd9e0('0x3d')]=_[_0xd9e0('0x3b')](_0x59ea31[_0xd9e0('0x37')],qs[_0xd9e0('0x3c')](_0xc28075[_0xd9e0('0x38')][_0xd9e0('0x3c')]));_0x4d76c7[_0xd9e0('0x3d')]=_0x4d76c7[_0xd9e0('0x3d')][_0xd9e0('0x3e')]?_0x4d76c7[_0xd9e0('0x3d')]:_0x59ea31[_0xd9e0('0x37')];if(_0xc28075[_0xd9e0('0x38')]['includeAll']){_0x4d76c7[_0xd9e0('0x48')]=[{'all':!![]}];}_0x4d76c7=_[_0xd9e0('0x45')]({},_0x4d76c7,_0xc28075['options']);return db[_0xd9e0('0x33')]['find'](_0x4d76c7)[_0xd9e0('0x29')](handleEntityNotFound(_0x19c030,null))[_0xd9e0('0x29')](respondWithResult(_0x19c030,null))[_0xd9e0('0x4c')](handleError(_0x19c030,null));};exports[_0xd9e0('0x2a')]=function(_0xaff14b,_0xb50fa9){return db[_0xd9e0('0x33')]['find']({'where':{'id':_0xaff14b[_0xd9e0('0x4b')]['id']}})[_0xd9e0('0x29')](handleEntityNotFound(_0xb50fa9,null))[_0xd9e0('0x29')](removeEntity(_0xb50fa9,null))[_0xd9e0('0x4c')](handleError(_0xb50fa9,null));};exports[_0xd9e0('0x4d')]=function(_0x4c7909,_0x53fe75){return db[_0xd9e0('0x33')]['describe']()[_0xd9e0('0x29')](respondWithResult(_0x53fe75,null))[_0xd9e0('0x4c')](handleError(_0x53fe75,null));};exports['create']=function(_0x4bb6a4,_0x3f9753){var _0x2b9bb0;return db[_0xd9e0('0x4e')]['transaction'](function(_0x328d1a){return db['VoicePrefix'][_0xd9e0('0x4f')](_0x4bb6a4[_0xd9e0('0x50')],{'transaction':_0x328d1a})[_0xd9e0('0x29')](function(_0x589a67){_0x2b9bb0=_0x589a67[_0xd9e0('0x2b')]({'plain':!![]});return db['VoiceExtension'][_0xd9e0('0x51')]({'where':{'id':_0x2b9bb0[_0xd9e0('0x52')]},'raw':!![]})['then'](function(_0x38af96){return createVoicePrefixExtensions(_0x2b9bb0,_0x38af96,_0x328d1a);});});})[_0xd9e0('0x29')](function(){var _0x56f0f3=_0x4bb6a4[_0xd9e0('0x53')][_0xd9e0('0x2b')]({'plain':!![]});if(!_0x56f0f3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56f0f3[_0xd9e0('0x54')]===_0xd9e0('0x53')){var _0x5b52d9=_0x2b9bb0;return db[_0xd9e0('0x55')][_0xd9e0('0x51')]({'where':{'name':'VoicePrefixes','userProfileId':_0x56f0f3[_0xd9e0('0x56')]},'raw':!![]})[_0xd9e0('0x29')](function(_0x4011fb){if(_0x4011fb&&_0x4011fb[_0xd9e0('0x57')]===0x0){return db[_0xd9e0('0x58')][_0xd9e0('0x4f')]({'name':_0x5b52d9[_0xd9e0('0x30')],'resourceId':_0x5b52d9['id'],'type':_0x4011fb[_0xd9e0('0x30')],'sectionId':_0x4011fb['id']},{})[_0xd9e0('0x29')](function(){return _0x2b9bb0;});}else{return _0x2b9bb0;}})[_0xd9e0('0x4c')](function(_0x4cf50d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4cf50d);throw _0x4cf50d;});}return _0x2b9bb0;})[_0xd9e0('0x29')](respondWithResult(_0x3f9753,null))['catch'](handleError(_0x3f9753,null));};function Extension(_0x8a77fb,_0x1a50e2,_0x35096c,_0x34963b){this['context']=_0xd9e0('0x59');this[_0xd9e0('0x5a')]=_0x8a77fb;this[_0xd9e0('0x5b')]=_0x35096c;this[_0xd9e0('0x36')]=_0xd9e0('0x5c');this['description']=_0xd9e0('0x5d');this[_0xd9e0('0x5e')]=_0x1a50e2;this['appdata']=_0x34963b;}function createVoicePrefixExtensions(_0x404acd,_0x93dfae,_0x1c5b5f){return new BPromise(function(_0x25b5f1,_0x450be3){var _0xa2b8ee=new Extension(formatPrefixName(_0x404acd[_0xd9e0('0x5f')]),0x1,'NoOp',_0xd9e0('0x60'));_0xa2b8ee[_0xd9e0('0x61')]=_0x404acd['id'];return db[_0xd9e0('0x62')][_0xd9e0('0x4f')](_0xa2b8ee,{'transaction':_0x1c5b5f})[_0xd9e0('0x29')](function(_0x971e17){var _0x11b6ad=_0x971e17[_0xd9e0('0x2b')]({'plain':!![]});var _0xd850a2=_[_0xd9e0('0x32')](addVoicePrefixExtensions(_0x404acd,_0x93dfae),function(_0x526091){_0x526091[_0xd9e0('0x52')]=_0x11b6ad['id'];_0x526091['VoicePrefixId']=_0x404acd['id'];return _0x526091;});return db[_0xd9e0('0x62')][_0xd9e0('0x63')](_0xd850a2,{'transaction':_0x1c5b5f})['then'](function(_0x4e3458){if(!_0x4e3458){return _0x450be3(_0xd9e0('0x64'));}else{return _0x25b5f1(_0x4e3458);}})[_0xd9e0('0x4c')](function(_0xdb018b){return _0x450be3(_0xdb018b);});});;});};function addVoicePrefixExtensions(_0x3035dd,_0x430533){var _0x4a7d3b=[];var _0x1cc3b9=formatPrefixName(_0x3035dd[_0xd9e0('0x5f')]);_0x4a7d3b['push'](new Extension(_0x1cc3b9,0x2,_0xd9e0('0x65'),_0xd9e0('0x66')+_0x3035dd[_0xd9e0('0x30')]));if(_0x3035dd[_0xd9e0('0x67')]){_0x4a7d3b['push'](new Extension(_0x1cc3b9,0x3,_0xd9e0('0x65'),_0xd9e0('0x68')+_0x3035dd[_0xd9e0('0x67')]));}else{_0x4a7d3b[_0xd9e0('0x69')](new Extension(_0x1cc3b9,0x3,'NoOp','No\x20callerid\x20available'));}_0x4a7d3b['push'](new Extension(_0x1cc3b9,0x4,_0xd9e0('0x6a'),_0x430533[_0xd9e0('0x6b')]+','+_0xd9e0('0x6c')+(0x8+_0x3035dd['name'][_0xd9e0('0x3e')])+'}'+','+0x1));return _0x4a7d3b;}function formatPrefixName(_0x2be7bc){var _0x34eea7='_';for(var _0xb26ee2=0x0;_0xb26ee2<_0x2be7bc[_0xd9e0('0x3e')];_0xb26ee2++){if(_0x2be7bc[_0xd9e0('0x6d')](_0xb26ee2)=='-'){_0x34eea7+=_0x2be7bc['charAt'](_0xb26ee2);}else{_0x34eea7+='['+_0x2be7bc[_0xd9e0('0x6d')](_0xb26ee2)+']';}}_0x34eea7+='.';return _0x34eea7;}exports['update']=function(_0x22fc23,_0x5aa8b4,_0x12973d){var _0x108347=_0x22fc23[_0xd9e0('0x50')];_0x108347[_0xd9e0('0x5f')]=_0xd9e0('0x6e')+_0x108347[_0xd9e0('0x30')]+'-';return db[_0xd9e0('0x4e')][_0xd9e0('0x6f')](function(_0x1bfcdc){return db[_0xd9e0('0x33')][_0xd9e0('0x70')](_0x108347,{'where':{'id':_0x108347['id']},'transaction':_0x1bfcdc})['then'](function(){return db[_0xd9e0('0x62')][_0xd9e0('0x2a')]({'where':{'VoicePrefixId':_0x108347['id']},'transaction':_0x1bfcdc})[_0xd9e0('0x29')](function(){return db[_0xd9e0('0x62')][_0xd9e0('0x51')]({'where':{'id':_0x108347[_0xd9e0('0x52')]},'raw':!![]})[_0xd9e0('0x29')](function(_0x37f759){return createVoicePrefixExtensions(_0x108347,_0x37f759,_0x1bfcdc);});});});})['then'](function(){return db[_0xd9e0('0x33')][_0xd9e0('0x71')](_0x108347['id']);})[_0xd9e0('0x29')](respondWithResult(_0x5aa8b4,null))[_0xd9e0('0x4c')](handleError(_0x5aa8b4,null));};exports[_0xd9e0('0x72')]=function(_0x202527,_0x229f9a,_0x270e60){return db['VoicePrefix'][_0xd9e0('0x51')]({'where':{'id':_0x202527[_0xd9e0('0x4b')]['id']}})[_0xd9e0('0x29')](handleEntityNotFound(_0x229f9a,null))[_0xd9e0('0x29')](function(_0x1582eb){if(_0x1582eb){return _0x1582eb[_0xd9e0('0x72')](_0x202527['body'][_0xd9e0('0x73')],_['omit'](_0x202527[_0xd9e0('0x50')],[_0xd9e0('0x73'),'id'])||{})['spread'](function(_0x3b0abd){for(var _0x245b77=0x0;_0x245b77<_0x202527['body'][_0xd9e0('0x73')][_0xd9e0('0x3e')];_0x245b77+=0x1){socket[_0xd9e0('0x74')](_0xd9e0('0x75'),{'UserId':Number(_0x202527[_0xd9e0('0x50')][_0xd9e0('0x73')][_0x245b77]),'VoicePrefixId':Number(_0x202527[_0xd9e0('0x4b')]['id'])});}return _0x3b0abd;});}})[_0xd9e0('0x29')](respondWithResult(_0x229f9a,null))['catch'](handleError(_0x229f9a,null));};exports['removeAgents']=function(_0x360f31,_0x26a859,_0x273414){return db['VoicePrefix']['find']({'where':{'id':_0x360f31['params']['id']}})['then'](handleEntityNotFound(_0x26a859,null))[_0xd9e0('0x29')](function(_0x5b7f68){if(_0x5b7f68){return _0x5b7f68[_0xd9e0('0x76')](_0x360f31['query'][_0xd9e0('0x73')])[_0xd9e0('0x29')](function(){if(_[_0xd9e0('0x77')](_0x360f31[_0xd9e0('0x38')][_0xd9e0('0x73')])){for(var _0x571a91=0x0;_0x571a91<_0x360f31[_0xd9e0('0x38')][_0xd9e0('0x73')][_0xd9e0('0x3e')];_0x571a91+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x360f31['query'][_0xd9e0('0x73')][_0x571a91]),'VoicePrefixId':Number(_0x360f31[_0xd9e0('0x4b')]['id'])});}}else{socket[_0xd9e0('0x74')](_0xd9e0('0x78'),{'UserId':Number(_0x360f31['query'][_0xd9e0('0x73')]),'VoicePrefixId':Number(_0x360f31[_0xd9e0('0x4b')]['id'])});}});}})[_0xd9e0('0x29')](respondWithStatusCode(_0x26a859,null))[_0xd9e0('0x4c')](handleError(_0x26a859,null));};exports[_0xd9e0('0x79')]=function(_0x230217,_0x239e92,_0x13bfce){var _0x27832d={};var _0x7faf1f={};var _0x14220e;var _0x3e76bc;return db['VoicePrefix'][_0xd9e0('0x7a')]({'where':{'id':_0x230217['params']['id']}})['then'](handleEntityNotFound(_0x239e92,null))[_0xd9e0('0x29')](function(_0x521c6c){if(_0x521c6c){_0x14220e=_0x521c6c;_0x7faf1f[_0xd9e0('0x37')]=_[_0xd9e0('0x39')](db[_0xd9e0('0x7b')][_0xd9e0('0x34')]);_0x7faf1f[_0xd9e0('0x38')]=_[_0xd9e0('0x39')](_0x230217[_0xd9e0('0x38')]);_0x7faf1f['filters']=_[_0xd9e0('0x3b')](_0x7faf1f[_0xd9e0('0x37')],_0x7faf1f[_0xd9e0('0x38')]);_0x27832d['attributes']=_['intersection'](_0x7faf1f[_0xd9e0('0x37')],qs[_0xd9e0('0x3c')](_0x230217[_0xd9e0('0x38')][_0xd9e0('0x3c')]));_0x27832d[_0xd9e0('0x3d')]=_0x27832d[_0xd9e0('0x3d')]['length']?_0x27832d[_0xd9e0('0x3d')]:_0x7faf1f[_0xd9e0('0x37')];_0x27832d['order']=qs['sort'](_0x230217[_0xd9e0('0x38')][_0xd9e0('0x41')]);_0x27832d[_0xd9e0('0x42')]=qs[_0xd9e0('0x3a')](_[_0xd9e0('0x43')](_0x230217[_0xd9e0('0x38')],_0x7faf1f[_0xd9e0('0x3a')]));if(_0x230217[_0xd9e0('0x38')][_0xd9e0('0x44')]){_0x27832d['where']=_['merge'](_0x27832d[_0xd9e0('0x42')],{'$or':_[_0xd9e0('0x32')](_0x27832d[_0xd9e0('0x3d')],function(_0x507f4b){var _0x4a75ca={};_0x4a75ca[_0x507f4b]={'$like':'%'+_0x230217[_0xd9e0('0x38')][_0xd9e0('0x44')]+'%'};return _0x4a75ca;})});}_0x27832d=_[_0xd9e0('0x45')]({},_0x27832d,_0x230217[_0xd9e0('0x46')]);return _0x14220e[_0xd9e0('0x79')](_0x27832d);}})[_0xd9e0('0x29')](function(_0x435c76){if(_0x435c76){_0x3e76bc=_0x435c76[_0xd9e0('0x3e')];if(!_0x230217[_0xd9e0('0x38')][_0xd9e0('0x7c')](_0xd9e0('0x3f'))){_0x27832d[_0xd9e0('0x23')]=qs['limit'](_0x230217[_0xd9e0('0x38')][_0xd9e0('0x23')]);_0x27832d['offset']=qs[_0xd9e0('0x25')](_0x230217['query'][_0xd9e0('0x25')]);}return _0x14220e['getAgents'](_0x27832d);}})[_0xd9e0('0x29')](function(_0x45c3db){if(_0x45c3db){return _0x45c3db?{'count':_0x3e76bc,'rows':_0x45c3db}:null;}})['then'](respondWithResult(_0x239e92,null))[_0xd9e0('0x4c')](handleError(_0x239e92,null));};
\ No newline at end of file
index 2eeb9a1..df254d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ad=['../../mysqldb','VoicePrefix','setMaxListeners','save','update','emit','hasOwnProperty','hook','events'];(function(_0x4fe2cc,_0x386fa0){var _0x1ae15c=function(_0x142396){while(--_0x142396){_0x4fe2cc['push'](_0x4fe2cc['shift']());}};_0x1ae15c(++_0x386fa0);}(_0x75ad,0x74));var _0xd75a=function(_0x5d1622,_0x4380e1){_0x5d1622=_0x5d1622-0x0;var _0x2cd83b=_0x75ad[_0x5d1622];return _0x2cd83b;};'use strict';var EventEmitter=require(_0xd75a('0x0'));var VoicePrefix=require(_0xd75a('0x1'))['db'][_0xd75a('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xd75a('0x3')](0x0);var events={'afterCreate':_0xd75a('0x4'),'afterUpdate':_0xd75a('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3ba757){return function(_0x172be1,_0xb75268,_0xdeca21){VoicePrefixEvents[_0xd75a('0x6')](_0x3ba757+':'+_0x172be1['id'],_0x172be1);VoicePrefixEvents['emit'](_0x3ba757,_0x172be1);_0xdeca21(null);};}for(var e in events){if(events[_0xd75a('0x7')](e)){var event=events[e];VoicePrefix[_0xd75a('0x8')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xd79c=['emit','hasOwnProperty','exports','../../mysqldb','VoicePrefix','save','update','remove'];(function(_0x3326fe,_0x332ea8){var _0x55aecc=function(_0x20aebd){while(--_0x20aebd){_0x3326fe['push'](_0x3326fe['shift']());}};_0x55aecc(++_0x332ea8);}(_0xd79c,0x15b));var _0xcd79=function(_0x5c972e,_0x5b2419){_0x5c972e=_0x5c972e-0x0;var _0x50230a=_0xd79c[_0x5c972e];return _0x50230a;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0xcd79('0x0'))['db'][_0xcd79('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcd79('0x2'),'afterUpdate':_0xcd79('0x3'),'afterDestroy':_0xcd79('0x4')};function emitEvent(_0x8c6d16){return function(_0x287351,_0x6195f2,_0x3b0dca){VoicePrefixEvents[_0xcd79('0x5')](_0x8c6d16+':'+_0x287351['id'],_0x287351);VoicePrefixEvents[_0xcd79('0x5')](_0x8c6d16,_0x287351);_0x3b0dca(null);};}for(var e in events){if(events[_0xcd79('0x6')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0xcd79('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index 52c0853..d91a330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4912=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','voice_prefixes','lodash','../../config/logger','api'];(function(_0x199dd0,_0x10d802){var _0x21a058=function(_0x4cbbf5){while(--_0x4cbbf5){_0x199dd0['push'](_0x199dd0['shift']());}};_0x21a058(++_0x10d802);}(_0x4912,0x183));var _0x2491=function(_0x2e1646,_0x36a432){_0x2e1646=_0x2e1646-0x0;var _0x48aad4=_0x4912[_0x2e1646];return _0x48aad4;};'use strict';var _=require(_0x2491('0x0'));var util=require('util');var logger=require(_0x2491('0x1'))(_0x2491('0x2'));var moment=require(_0x2491('0x3'));var BPromise=require(_0x2491('0x4'));var rp=require(_0x2491('0x5'));var fs=require('fs');var path=require(_0x2491('0x6'));var rimraf=require(_0x2491('0x7'));var config=require(_0x2491('0x8'));var attributes=require(_0x2491('0x9'));module[_0x2491('0xa')]=function(_0x49c564,_0xf09264){return _0x49c564['define'](_0x2491('0xb'),attributes,{'tableName':_0x2491('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62cb=['rimraf','../../config/environment','./voicePrefix.attributes','define','VoicePrefix','lodash','util','../../config/logger','moment'];(function(_0x5bcdcc,_0x212f40){var _0x28db26=function(_0x3823c7){while(--_0x3823c7){_0x5bcdcc['push'](_0x5bcdcc['shift']());}};_0x28db26(++_0x212f40);}(_0x62cb,0x95));var _0xb62c=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0x62cb[_0x172747];return _0x509692;};'use strict';var _=require(_0xb62c('0x0'));var util=require(_0xb62c('0x1'));var logger=require(_0xb62c('0x2'))('api');var moment=require(_0xb62c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb62c('0x4'));var config=require(_0xb62c('0x5'));var attributes=require(_0xb62c('0x6'));module['exports']=function(_0x5c0850,_0x39aa58){return _0x5c0850[_0xb62c('0x7')](_0xb62c('0x8'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d301e52..9084ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87bc=['redis','socket.io-emitter','./voicePrefix.socket','register','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','../../mysqldb','../../config/logger','client','http'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x87bc,0x189));var _0xc87b=function(_0x51c539,_0x1d4a96){_0x51c539=_0x51c539-0x0;var _0x334e8a=_0x87bc[_0x51c539];return _0x334e8a;};'use strict';var _=require(_0xc87b('0x0'));var util=require(_0xc87b('0x1'));var moment=require('moment');var BPromise=require(_0xc87b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc87b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc87b('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc87b('0x5')][_0xc87b('0x6')]({'port':0x232a});config[_0xc87b('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc87b('0x8'))(new Redis(config[_0xc87b('0x7')]));require(_0xc87b('0x9'))[_0xc87b('0xa')](socket);function respondWithRpcPromise(_0x3ad1d6,_0x2674f8,_0x26a65e){return new BPromise(function(_0x1d834a,_0x7519c2){return client['request'](_0x3ad1d6,_0x26a65e)['then'](function(_0x2a0563){logger['info'](_0xc87b('0xb'),_0x2674f8,_0xc87b('0xc'));logger[_0xc87b('0xd')](_0xc87b('0xe'),_0x2674f8,'request\x20sent',JSON[_0xc87b('0xf')](_0x2a0563));if(_0x2a0563['error']){if(_0x2a0563[_0xc87b('0x10')][_0xc87b('0x11')]===0x1f4){logger['error'](_0xc87b('0xb'),_0x2674f8,_0x2a0563[_0xc87b('0x10')]['message']);return _0x7519c2(_0x2a0563[_0xc87b('0x10')][_0xc87b('0x12')]);}logger[_0xc87b('0x10')](_0xc87b('0xb'),_0x2674f8,_0x2a0563[_0xc87b('0x10')][_0xc87b('0x12')]);return _0x1d834a(_0x2a0563[_0xc87b('0x10')][_0xc87b('0x12')]);}else{logger['info'](_0xc87b('0xb'),_0x2674f8,'request\x20sent');_0x1d834a(_0x2a0563[_0xc87b('0x13')][_0xc87b('0x12')]);}})['catch'](function(_0x3bc421){logger[_0xc87b('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x2674f8,_0x3bc421);_0x7519c2(_0x3bc421);});});}
\ No newline at end of file
+var _0x6ec2=['jayson/promise','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5c9307,_0x5b97e4){var _0x373e29=function(_0xefebbd){while(--_0xefebbd){_0x5c9307['push'](_0x5c9307['shift']());}};_0x373e29(++_0x5b97e4);}(_0x6ec2,0x78));var _0x26ec=function(_0x2c95e2,_0x41a5fc){_0x2c95e2=_0x2c95e2-0x0;var _0x15c9f0=_0x6ec2[_0x2c95e2];return _0x15c9f0;};'use strict';var _=require(_0x26ec('0x0'));var util=require(_0x26ec('0x1'));var moment=require(_0x26ec('0x2'));var BPromise=require(_0x26ec('0x3'));var rs=require(_0x26ec('0x4'));var fs=require('fs');var Redis=require(_0x26ec('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x26ec('0x6'));var logger=require(_0x26ec('0x7'))(_0x26ec('0x8'));var config=require(_0x26ec('0x9'));var jayson=require(_0x26ec('0xa'));var client=jayson['client'][_0x26ec('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x26ec('0xc')],{'host':_0x26ec('0xd'),'port':0x18eb});var socket=require(_0x26ec('0xe'))(new Redis(config['redis']));require(_0x26ec('0xf'))['register'](socket);function respondWithRpcPromise(_0x143d9f,_0x23b140,_0x26f0a6){return new BPromise(function(_0xef0a42,_0x3b2efe){return client[_0x26ec('0x10')](_0x143d9f,_0x26f0a6)[_0x26ec('0x11')](function(_0x1a8f40){logger[_0x26ec('0x12')](_0x26ec('0x13'),_0x23b140,'request\x20sent');logger['debug'](_0x26ec('0x14'),_0x23b140,_0x26ec('0x15'),JSON[_0x26ec('0x16')](_0x1a8f40));if(_0x1a8f40[_0x26ec('0x17')]){if(_0x1a8f40[_0x26ec('0x17')][_0x26ec('0x18')]===0x1f4){logger[_0x26ec('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x23b140,_0x1a8f40[_0x26ec('0x17')][_0x26ec('0x19')]);return _0x3b2efe(_0x1a8f40[_0x26ec('0x17')][_0x26ec('0x19')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x23b140,_0x1a8f40[_0x26ec('0x17')][_0x26ec('0x19')]);return _0xef0a42(_0x1a8f40[_0x26ec('0x17')][_0x26ec('0x19')]);}else{logger['info'](_0x26ec('0x13'),_0x23b140,_0x26ec('0x15'));_0xef0a42(_0x1a8f40['result']['message']);}})['catch'](function(_0x21c3ff){logger[_0x26ec('0x17')](_0x26ec('0x13'),_0x23b140,_0x21c3ff);_0x3b2efe(_0x21c3ff);});});}
\ No newline at end of file
index 78b84e6..eafa25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ab=['voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener','register','length'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x34ab,0x169));var _0xb34a=function(_0x33dcf7,_0x3d5390){_0x33dcf7=_0x33dcf7-0x0;var _0x542d4e=_0x34ab[_0x33dcf7];return _0x542d4e;};'use strict';var VoicePrefixEvents=require(_0xb34a('0x0'));var events=[_0xb34a('0x1'),_0xb34a('0x2'),_0xb34a('0x3')];function createListener(_0x37cb6b,_0x214cd9){return function(_0x1927c8){_0x214cd9[_0xb34a('0x4')](_0x37cb6b,_0x1927c8);};}function removeListener(_0x572715,_0x4e61b8){return function(){VoicePrefixEvents[_0xb34a('0x5')](_0x572715,_0x4e61b8);};}exports[_0xb34a('0x6')]=function(_0x14a0b7){for(var _0x528d48=0x0,_0x2b8d3e=events[_0xb34a('0x7')];_0x528d48<_0x2b8d3e;_0x528d48++){var _0x14c0d2=events[_0x528d48];var _0xb915fb=createListener(_0xb34a('0x8')+_0x14c0d2,_0x14a0b7);VoicePrefixEvents['on'](_0x14c0d2,_0xb915fb);}};
\ No newline at end of file
+var _0xd547=['voicePrefix:','remove','update','removeListener'];(function(_0x1d83db,_0x89d115){var _0x2dc1d1=function(_0x13fdc3){while(--_0x13fdc3){_0x1d83db['push'](_0x1d83db['shift']());}};_0x2dc1d1(++_0x89d115);}(_0xd547,0x1c1));var _0x7d54=function(_0x4c0d67,_0xfc97a){_0x4c0d67=_0x4c0d67-0x0;var _0x5463b3=_0xd547[_0x4c0d67];return _0x5463b3;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=['save',_0x7d54('0x0'),_0x7d54('0x1')];function createListener(_0x15a0c7,_0x1611f6){return function(_0x54ffc5){_0x1611f6['emit'](_0x15a0c7,_0x54ffc5);};}function removeListener(_0x21c23f,_0x5d21c1){return function(){VoicePrefixEvents[_0x7d54('0x2')](_0x21c23f,_0x5d21c1);};}exports['register']=function(_0x296dd6){for(var _0x37defc=0x0,_0x1b7fc1=events['length'];_0x37defc<_0x1b7fc1;_0x37defc++){var _0x5b0b16=events[_0x37defc];var _0x478f9b=createListener(_0x7d54('0x3')+_0x5b0b16,_0x296dd6);VoicePrefixEvents['on'](_0x5b0b16,_0x478f9b);}};
\ No newline at end of file
index bea2f9d..a3e7000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74c5=['put','/:id','update','destroy','delete','removeAgents','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams','addAgents','/:id/blacklists','addBlackLists'];(function(_0x3dd7c7,_0x3ddf71){var _0x274fb2=function(_0x36d576){while(--_0x36d576){_0x3dd7c7['push'](_0x3dd7c7['shift']());}};_0x274fb2(++_0x3ddf71);}(_0x74c5,0x13f));var _0x574c=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x74c5[_0x346737];return _0x1ade2e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x574c('0x0'));var timeout=require(_0x574c('0x1'));var express=require(_0x574c('0x2'));var router=express['Router']();var fs_extra=require(_0x574c('0x3'));var auth=require(_0x574c('0x4'));var interaction=require(_0x574c('0x5'));var config=require(_0x574c('0x6'));var controller=require('./voiceQueue.controller');router[_0x574c('0x7')]('/',auth[_0x574c('0x8')](),controller[_0x574c('0x9')]);router[_0x574c('0x7')]('/:id',auth[_0x574c('0x8')](),controller[_0x574c('0xa')]);router[_0x574c('0x7')]('/:id/hoppers',auth[_0x574c('0x8')](),controller[_0x574c('0xb')]);router[_0x574c('0x7')](_0x574c('0xc'),auth[_0x574c('0x8')](),controller[_0x574c('0xd')]);router[_0x574c('0x7')](_0x574c('0xe'),auth['isAuthenticated'](),controller[_0x574c('0xf')]);router[_0x574c('0x7')]('/:id/hopper_black',auth[_0x574c('0x8')](),controller[_0x574c('0x10')]);router[_0x574c('0x7')](_0x574c('0x11'),auth[_0x574c('0x8')](),controller['getTeams']);router[_0x574c('0x7')](_0x574c('0x12'),auth[_0x574c('0x8')](),controller[_0x574c('0x13')]);router[_0x574c('0x7')](_0x574c('0x14'),auth[_0x574c('0x8')](),controller[_0x574c('0x15')]);router[_0x574c('0x7')](_0x574c('0x16'),auth[_0x574c('0x8')](),controller[_0x574c('0x17')]);router['get']('/:id/blacklists',auth['isAuthenticated'](),controller['getBlackLists']);router[_0x574c('0x18')]('/',auth[_0x574c('0x8')](),controller[_0x574c('0x19')]);router[_0x574c('0x18')](_0x574c('0x1a'),auth[_0x574c('0x8')](),controller[_0x574c('0x1b')]);router[_0x574c('0x18')](_0x574c('0x11'),auth[_0x574c('0x8')](),controller[_0x574c('0x1c')]);router[_0x574c('0x18')](_0x574c('0x12'),auth[_0x574c('0x8')](),controller[_0x574c('0x1d')]);router[_0x574c('0x18')](_0x574c('0x16'),auth[_0x574c('0x8')](),controller['addLists']);router[_0x574c('0x18')](_0x574c('0x1e'),auth[_0x574c('0x8')](),controller[_0x574c('0x1f')]);router[_0x574c('0x20')](_0x574c('0x21'),auth['isAuthenticated'](),controller[_0x574c('0x22')]);router['delete']('/:id',auth[_0x574c('0x8')](),controller[_0x574c('0x23')]);router[_0x574c('0x24')](_0x574c('0x11'),auth[_0x574c('0x8')](),controller['removeTeams']);router[_0x574c('0x24')](_0x574c('0x12'),auth[_0x574c('0x8')](),controller[_0x574c('0x25')]);router['delete'](_0x574c('0x16'),auth[_0x574c('0x8')](),controller['removeLists']);router[_0x574c('0x24')](_0x574c('0x1e'),auth['isAuthenticated'](),controller['removeBlackLists']);module[_0x574c('0x26')]=router;
\ No newline at end of file
+var _0x7a81=['isAuthenticated','index','show','/:id/hoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addTeams','addAgents','addLists','addBlackLists','delete','/:id','destroy','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueue.controller','get'];(function(_0x51ff8a,_0x1b47db){var _0x1f605b=function(_0x35d3ee){while(--_0x35d3ee){_0x51ff8a['push'](_0x51ff8a['shift']());}};_0x1f605b(++_0x1b47db);}(_0x7a81,0x173));var _0x17a8=function(_0x89888d,_0x471343){_0x89888d=_0x89888d-0x0;var _0x3bcd41=_0x7a81[_0x89888d];return _0x3bcd41;};'use strict';var multer=require(_0x17a8('0x0'));var util=require(_0x17a8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x17a8('0x2'));var router=express[_0x17a8('0x3')]();var fs_extra=require(_0x17a8('0x4'));var auth=require(_0x17a8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x17a8('0x6'));var controller=require(_0x17a8('0x7'));router[_0x17a8('0x8')]('/',auth[_0x17a8('0x9')](),controller[_0x17a8('0xa')]);router[_0x17a8('0x8')]('/:id',auth[_0x17a8('0x9')](),controller[_0x17a8('0xb')]);router['get'](_0x17a8('0xc'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x17a8('0x8')](_0x17a8('0xd'),auth[_0x17a8('0x9')](),controller[_0x17a8('0xe')]);router[_0x17a8('0x8')]('/:id/hopper_finals',auth[_0x17a8('0x9')](),controller[_0x17a8('0xf')]);router[_0x17a8('0x8')](_0x17a8('0x10'),auth[_0x17a8('0x9')](),controller['getHopperBlacks']);router[_0x17a8('0x8')](_0x17a8('0x11'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x12')]);router['get'](_0x17a8('0x13'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x14')]);router['get'](_0x17a8('0x15'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x16')]);router[_0x17a8('0x8')](_0x17a8('0x17'),auth[_0x17a8('0x9')](),controller['getLists']);router[_0x17a8('0x8')](_0x17a8('0x18'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x19')]);router[_0x17a8('0x1a')]('/',auth[_0x17a8('0x9')](),controller['create']);router[_0x17a8('0x1a')](_0x17a8('0x1b'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x1c')]);router[_0x17a8('0x1a')](_0x17a8('0x11'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x1d')]);router[_0x17a8('0x1a')](_0x17a8('0x13'),auth['isAuthenticated'](),controller[_0x17a8('0x1e')]);router['post'](_0x17a8('0x17'),auth['isAuthenticated'](),controller[_0x17a8('0x1f')]);router[_0x17a8('0x1a')](_0x17a8('0x18'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x20')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x17a8('0x21')](_0x17a8('0x22'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x23')]);router[_0x17a8('0x21')](_0x17a8('0x11'),auth[_0x17a8('0x9')](),controller['removeTeams']);router[_0x17a8('0x21')](_0x17a8('0x13'),auth[_0x17a8('0x9')](),controller[_0x17a8('0x24')]);router[_0x17a8('0x21')]('/:id/lists',auth[_0x17a8('0x9')](),controller['removeLists']);router[_0x17a8('0x21')](_0x17a8('0x18'),auth[_0x17a8('0x9')](),controller['removeBlackLists']);module[_0x17a8('0x25')]=router;
\ No newline at end of file
index 4aa4a62..f55ae3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['#AMD\x20Maximum\x20Word\x20Length','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)','#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\x20(min:1,\x20max:999)','Machine\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','inbound','outbound','leastrecent','fewestcalls','random','rrmemory','linear','rrordered','ringall','setDataValue','strategy','getDataValue','booked','roundrobin','progressive','predictive','INTEGER','ENUM','yes','all','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','power','Dial\x20Method.','UNSIGNED','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','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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,*,*,*','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xb458,0x103));var _0x8b45=function(_0x433439,_0x2483b5){_0x433439=_0x433439-0x0;var _0x4e8348=_0xb458[_0x433439];return _0x4e8348;};'use strict';var Sequelize=require(_0x8b45('0x0'));module[_0x8b45('0x1')]={'name':{'type':Sequelize[_0x8b45('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x8b45('0x3'),_0x8b45('0x4')),'allowNull':![],'defaultValue':_0x8b45('0x3')},'musiconhold':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x8b45('0x5'),_0x8b45('0x6'),_0x8b45('0x7'),_0x8b45('0x8'),_0x8b45('0x9'),'wrandom',_0x8b45('0xa')),'allowNull':![],'defaultValue':_0x8b45('0xb'),'set':function(_0x33f30e){this[_0x8b45('0xc')](_0x8b45('0xd'),_0x33f30e?_0x33f30e:'rrmemory');},'get':function(){var _0x2a4c83=this[_0x8b45('0xe')]('type');var _0x5316af=this['getDataValue']('dialMethod');var _0x43a4c3=this[_0x8b45('0xe')](_0x8b45('0xd'));if(_0x2a4c83==='inbound'){return _0x43a4c3;}if(_0x5316af===_0x8b45('0xf')&&_0x43a4c3===_0x8b45('0x8')||_0x5316af===_0x8b45('0xf')&&_0x43a4c3===_0x8b45('0x10')){return _0x43a4c3;}if(_0x5316af===_0x8b45('0x11')||_0x5316af===_0x8b45('0x12')||_0x5316af==='power'){return _0x43a4c3;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x8b45('0x13')](0xb)},'timeout':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x8b45('0x2')]},'weight':{'type':Sequelize[_0x8b45('0x13')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':_0x8b45('0x15')},'autopause':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no',_0x8b45('0x16')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x8b45('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':_0x8b45('0x15')},'announce_holdtime':{'type':Sequelize[_0x8b45('0x14')]('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x8b45('0x14')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x8b45('0x14')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x8b45('0x2')]},'queue_youarenext':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x8b45('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x8b45('0x2')]},'queue_quantity1':{'type':Sequelize[_0x8b45('0x2')]},'queue_quantity2':{'type':Sequelize[_0x8b45('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x8b45('0x2')]},'queue_less_than':{'type':Sequelize[_0x8b45('0x2')]},'periodic_announce':{'type':Sequelize[_0x8b45('0x17')],'set':function(_0x5b6151){this['setDataValue'](_0x8b45('0x18'),_0x5b6151?_0x5b6151[_0x8b45('0x19')](','):[]);},'get':function(){return this[_0x8b45('0xe')](_0x8b45('0x18'))?this[_0x8b45('0xe')](_0x8b45('0x18'))[_0x8b45('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':'yes','set':function(_0x3f5dd3){this[_0x8b45('0xc')](_0x8b45('0x1b'),_0x3f5dd3?_0x3f5dd3[_0x8b45('0x19')](','):undefined);},'get':function(){return this[_0x8b45('0xe')]('joinempty')?this[_0x8b45('0xe')]('joinempty')['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':'no','set':function(_0x94e3b6){this[_0x8b45('0xc')](_0x8b45('0x1c'),_0x94e3b6?_0x94e3b6[_0x8b45('0x19')](','):undefined);},'get':function(){return this[_0x8b45('0xe')]('leavewhenempty')?this[_0x8b45('0xe')](_0x8b45('0x1c'))[_0x8b45('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x8b45('0x14')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x15'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x8b45('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x8b45('0x2')]},'description':{'type':Sequelize[_0x8b45('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x1adc4e){this[_0x8b45('0xc')](_0x8b45('0x1d'),_0x1adc4e);if(_0x1adc4e){if(this[_0x8b45('0xe')]('wrapuptime')<0x2){this[_0x8b45('0xc')](_0x8b45('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x8b45('0x13')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x8b45('0x1f')],'defaultValue':0x0,'comment':_0x8b45('0x20')},'dialMethod':{'type':Sequelize[_0x8b45('0x14')]('preview','progressive',_0x8b45('0x21'),_0x8b45('0x12'),_0x8b45('0xf')),'defaultValue':_0x8b45('0x11'),'comment':_0x8b45('0x22')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x8b45('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x8b45('0x13')](0x4)[_0x8b45('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x8b45('0x24')},'dialPowerLevel':{'type':Sequelize[_0x8b45('0x25')](0x2)[_0x8b45('0x23')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x8b45('0x26')},'dialPredictiveOptimization':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x27'),_0x8b45('0x28')),'defaultValue':_0x8b45('0x28'),'comment':_0x8b45('0x29')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x8b45('0x13')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x8b45('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0x8b45('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x8b45('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x2b')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x8b45('0x2c'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x2d')},'dialQueueProject':{'type':Sequelize[_0x8b45('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x30')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'comment':_0x8b45('0x31')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x32')},'dialGlobalMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x8b45('0x33')},'dialTimezone':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':_0x8b45('0x34')},'dialPrefix':{'type':Sequelize[_0x8b45('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always','never',_0x8b45('0x35')),'defaultValue':_0x8b45('0x36')},'dialAMDActive':{'type':Sequelize[_0x8b45('0x1f')],'defaultValue':0x0,'comment':_0x8b45('0x37')},'dialAMDInitialSilence':{'type':Sequelize[_0x8b45('0x13')](0x9)[_0x8b45('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x8b45('0x38')},'dialAMDGreeting':{'type':Sequelize[_0x8b45('0x13')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x8b45('0x39')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x8b45('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x8b45('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x8b45('0x13')](0x9)[_0x8b45('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x8b45('0x13')](0x9)[_0x8b45('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x8b45('0x13')](0x9)[_0x8b45('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x8b45('0x13')](0x9)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x8b45('0x3b')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x8b45('0x3c')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x8b45('0x3d')},'dialRecallMeTimeout':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x8b45('0x1f')],'defaultValue':0x0,'comment':_0x8b45('0x3e')},'dialOrderByScheduledAt':{'type':Sequelize[_0x8b45('0x14')](_0x8b45('0x3f'),_0x8b45('0x40')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x8b45('0x2')],'comment':_0x8b45('0x41')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x8b45('0x1f')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x8b45('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x8b45('0x42')},'dialCutDigit':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x43')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x44')},'dialDropMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x45')},'dialDropRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x46')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x47')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x48')},'dialMachineMaxRetry':{'type':Sequelize[_0x8b45('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8b45('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8b45('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8b45('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x8b45('0x13')](0x5)[_0x8b45('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8b45('0x13')],'allowNull':!![],'comment':_0x8b45('0x4c')},'mandatoryDisposition':{'type':Sequelize[_0x8b45('0x1f')],'defaultValue':![],'comment':_0x8b45('0x4d'),'set':function(_0x3488d1){if(!_0x3488d1)this['setDataValue'](_0x8b45('0x4e'),null);this['setDataValue'](_0x8b45('0x4f'),_0x3488d1);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x8b45('0x13')](0x3)[_0x8b45('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0xc305=['progressive','Dial\x20Method.','UNSIGNED','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','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','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\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','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','ASC','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','name','ENUM','outbound','inbound','STRING','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','setDataValue','getDataValue','type','dialMethod','booked','roundrobin','predictive','power','INTEGER','yes','all','once','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','preview'];(function(_0xf0aa45,_0x5972f6){var _0x3c6011=function(_0x268675){while(--_0x268675){_0xf0aa45['push'](_0xf0aa45['shift']());}};_0x3c6011(++_0x5972f6);}(_0xc305,0xcf));var _0x5c30=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0xc305[_0x476bf4];return _0x788ffe;};'use strict';var Sequelize=require(_0x5c30('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x5c30('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x5c30('0x2')]('inbound',_0x5c30('0x3')),'allowNull':![],'defaultValue':_0x5c30('0x4')},'musiconhold':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':_0x5c30('0x6')},'announce':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x5c30('0x7'),_0x5c30('0x8'),_0x5c30('0x9'),_0x5c30('0xa'),_0x5c30('0xb'),_0x5c30('0xc'),_0x5c30('0xd'),_0x5c30('0xe')),'allowNull':![],'defaultValue':'ringall','set':function(_0x2e0c10){this[_0x5c30('0xf')]('strategy',_0x2e0c10?_0x2e0c10:_0x5c30('0xb'));},'get':function(){var _0x165aae=this[_0x5c30('0x10')](_0x5c30('0x11'));var _0x1664d7=this['getDataValue'](_0x5c30('0x12'));var _0x3cd070=this[_0x5c30('0x10')]('strategy');if(_0x165aae===_0x5c30('0x4')){return _0x3cd070;}if(_0x1664d7===_0x5c30('0x13')&&_0x3cd070===_0x5c30('0xb')||_0x1664d7===_0x5c30('0x13')&&_0x3cd070===_0x5c30('0x14')){return _0x3cd070;}if(_0x1664d7==='progressive'||_0x1664d7===_0x5c30('0x15')||_0x1664d7===_0x5c30('0x16')){return _0x3cd070;}return null;}},'servicelevel':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x5c30('0x17')](0xb)},'timeout':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x5c30('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':_0x5c30('0x18')},'autopause':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no',_0x5c30('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x5c30('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x5c30('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x5c30('0x2')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x5c30('0x5')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x5c30('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':_0x5c30('0x18')},'announce_holdtime':{'type':Sequelize['ENUM'](_0x5c30('0x18'),'no',_0x5c30('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x5c30('0x2')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0x5c30('0x17')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x5c30('0x2')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x5c30('0x5')]},'queue_youarenext':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x5c30('0x5')]},'queue_quantity1':{'type':Sequelize[_0x5c30('0x5')]},'queue_quantity2':{'type':Sequelize[_0x5c30('0x5')]},'queue_periodic_announce':{'type':Sequelize[_0x5c30('0x5')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x4c4db6){this[_0x5c30('0xf')](_0x5c30('0x1b'),_0x4c4db6?_0x4c4db6[_0x5c30('0x1c')](','):[]);},'get':function(){return this[_0x5c30('0x10')](_0x5c30('0x1b'))?this[_0x5c30('0x10')](_0x5c30('0x1b'))[_0x5c30('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':_0x5c30('0x18'),'set':function(_0x5e07de){this['setDataValue'](_0x5c30('0x1e'),_0x5e07de?_0x5e07de[_0x5c30('0x1c')](','):undefined);},'get':function(){return this['getDataValue']('joinempty')?this[_0x5c30('0x10')]('joinempty')['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':'no','set':function(_0x3664d9){this[_0x5c30('0xf')](_0x5c30('0x1f'),_0x3664d9?_0x3664d9[_0x5c30('0x1c')](','):undefined);},'get':function(){return this[_0x5c30('0x10')](_0x5c30('0x1f'))?this['getDataValue'](_0x5c30('0x1f'))[_0x5c30('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x5c30('0x2')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x5c30('0x5')]},'description':{'type':Sequelize[_0x5c30('0x5')]},'acw':{'type':Sequelize[_0x5c30('0x20')],'defaultValue':0x0,'set':function(_0x184540){this['setDataValue'](_0x5c30('0x21'),_0x184540);if(_0x184540){if(this['getDataValue'](_0x5c30('0x22'))<0x2){this[_0x5c30('0xf')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x5c30('0x17')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x23'),_0x5c30('0x24'),_0x5c30('0x16'),_0x5c30('0x15'),_0x5c30('0x13')),'defaultValue':'progressive','comment':_0x5c30('0x25')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x5c30('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x5c30('0x17')](0x4)[_0x5c30('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x5c30('0x27')},'dialPowerLevel':{'type':Sequelize[_0x5c30('0x28')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x5c30('0x29')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x5c30('0x2a'),_0x5c30('0x2b')),'defaultValue':_0x5c30('0x2b'),'comment':_0x5c30('0x2c')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x5c30('0x2d')},'dialPredictiveInterval':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5c30('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x2e')},'dialQueueOptions':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':_0x5c30('0x2f'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x5c30('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x5c30('0x5')],'comment':_0x5c30('0x30')},'dialCongestionMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x32')},'dialBusyMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x33')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'comment':_0x5c30('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5c30('0x36')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x5c30('0x37')},'dialPrefix':{'type':Sequelize[_0x5c30('0x5')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x5c30('0x2')](_0x5c30('0x38'),_0x5c30('0x39'),'onlyIfOpen'),'defaultValue':_0x5c30('0x38')},'dialAMDActive':{'type':Sequelize[_0x5c30('0x20')],'defaultValue':0x0,'comment':_0x5c30('0x3a')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x5c30('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5c30('0x3b')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x5c30('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5c30('0x3c')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x5c30('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5c30('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x5c30('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5c30('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0x5c30('0x17')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x5c30('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x5c30('0x17')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5c30('0x40')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5c30('0x17')](0x9)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5c30('0x41')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5c30('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5c30('0x17')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5c30('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0x5c30('0x17')](0x5)[_0x5c30('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x5c30('0x43')},'dialRecallInQueue':{'type':Sequelize[_0x5c30('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0x5c30('0x2')]('DESC',_0x5c30('0x44')),'defaultValue':_0x5c30('0x45')},'dialQueueProject2':{'type':Sequelize[_0x5c30('0x5')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0x5c30('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'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[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5c30('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5c30('0x17')](0x5)[_0x5c30('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x5c30('0x4d')},'mandatoryDisposition':{'type':Sequelize[_0x5c30('0x20')],'defaultValue':![],'comment':_0x5c30('0x4e'),'set':function(_0x21cf1d){if(!_0x21cf1d)this[_0x5c30('0xf')](_0x5c30('0x4f'),null);this['setDataValue'](_0x5c30('0x50'),_0x21cf1d);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x5c30('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x5c30('0x17')](0x3)[_0x5c30('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index a31b670..531f44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x118d=['VoiceQueue','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','count','includeAll','include','findAll','params','rawAttributes','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','outbound','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','options','createdAt','updatedAt','userProfileId','update','CmHopper','VoiceQueueId','rows','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','Team','teams','User','Agents','voicePause','interface','flatMap','forEach','penalty','transaction','addTeams','each','upsert','UserVoiceQueue','findOrCreate','isNil','format','emit','userVoiceQueue:save','removeTeams','ids','select','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','every','TeamId','union','compact','isEmpty','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','omit','online','SIP/%s','all','getAgents','getMembers','getLists','CmList','addLists','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','field','NOW()','scheduledAt','ContactId','CmListId','toString','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','fromQuery','removeLists','getBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','end','status','json','undefined','limit','offset','Content-Range','apply','reject','save','then','destroy','VoiceQueues','inbound','QueueCampaigns','filter','ignore','map','value','includes','type','name','UserProfileResource','error','send'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x118d,0x80));var _0xd118=function(_0x32e1c3,_0x5dd836){_0x32e1c3=_0x32e1c3-0x0;var _0x925434=_0x118d[_0x32e1c3];return _0x925434;};'use strict';var emlformat=require(_0xd118('0x0'));var rimraf=require(_0xd118('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd118('0x2'));var rp=require('request-promise');var moment=require(_0xd118('0x3'));var BPromise=require(_0xd118('0x4'));var Mustache=require(_0xd118('0x5'));var util=require('util');var path=require('path');var sox=require(_0xd118('0x6'));var csv=require(_0xd118('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd118('0x8'));var _=require('lodash');var squel=require(_0xd118('0x9'));var crypto=require('crypto');var jsforce=require(_0xd118('0xa'));var deskjs=require(_0xd118('0xb'));var toCsv=require(_0xd118('0x7'));var querystring=require(_0xd118('0xc'));var Papa=require(_0xd118('0xd'));var Redis=require(_0xd118('0xe'));var authService=require(_0xd118('0xf'));var qs=require(_0xd118('0x10'));var as=require(_0xd118('0x11'));var hardwareService=require(_0xd118('0x12'));var logger=require('../../config/logger')(_0xd118('0x13'));var utils=require('../../config/utils');var config=require(_0xd118('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd118('0x15'))['db'];config[_0xd118('0x16')]=_[_0xd118('0x17')](config[_0xd118('0x16')],{'host':_0xd118('0x18'),'port':0x18eb});var socket=require(_0xd118('0x19'))(new Redis(config[_0xd118('0x16')]));require('./voiceQueue.socket')[_0xd118('0x1a')](socket);function respondWithStatusCode(_0x18a1ce,_0x1d7f12){_0x1d7f12=_0x1d7f12||0xcc;return function(_0x239bfd){if(_0x239bfd){return _0x18a1ce['sendStatus'](_0x1d7f12);}return _0x18a1ce['status'](_0x1d7f12)[_0xd118('0x1b')]();};}function respondWithResult(_0x4c4281,_0x453c29){_0x453c29=_0x453c29||0xc8;return function(_0x4ba93f){if(_0x4ba93f){return _0x4c4281[_0xd118('0x1c')](_0x453c29)[_0xd118('0x1d')](_0x4ba93f);}};}function respondWithFilteredResult(_0x1463f7,_0x92a6a){return function(_0x368917){if(_0x368917){var _0x142734=typeof _0x92a6a['offset']===_0xd118('0x1e')&&typeof _0x92a6a[_0xd118('0x1f')]===_0xd118('0x1e');var _0x2555f1=_0x368917['count'];var _0x187141=_0x142734?0x0:_0x92a6a[_0xd118('0x20')];var _0x276bbd=_0x142734?_0x368917['count']:_0x92a6a['offset']+_0x92a6a[_0xd118('0x1f')];var _0x28bdbe;if(_0x276bbd>=_0x2555f1){_0x276bbd=_0x2555f1;_0x28bdbe=0xc8;}else{_0x28bdbe=0xce;}_0x1463f7[_0xd118('0x1c')](_0x28bdbe);return _0x1463f7['set'](_0xd118('0x21'),_0x187141+'-'+_0x276bbd+'/'+_0x2555f1)['json'](_0x368917);}return null;};}function patchUpdates(_0xbc3760){return function(_0x4b7a80){try{jsonpatch[_0xd118('0x22')](_0x4b7a80,_0xbc3760,!![]);}catch(_0x188749){return BPromise[_0xd118('0x23')](_0x188749);}return _0x4b7a80[_0xd118('0x24')]();};}function saveUpdates(_0x3522ad,_0x35b10d){return function(_0x135f46){if(_0x135f46){return _0x135f46['update'](_0x3522ad)[_0xd118('0x25')](function(_0x32c052){return _0x32c052;});}return null;};}function removeEntity(_0x1679fd,_0x1ac1ee){return function(_0x4e668e){if(_0x4e668e){return _0x4e668e[_0xd118('0x26')]()[_0xd118('0x25')](function(){var _0xb45bdf=_0x4e668e['get']({'plain':!![]});var _0x1257c5=[{'name':_0xd118('0x27'),'value':_0xd118('0x28'),'ignore':![]},{'name':_0xd118('0x29'),'value':'outbound','ignore':![]}];var _0x32d2e3=_(_0x1257c5)[_0xd118('0x2a')](_0xd118('0x2b'))[_0xd118('0x2c')](_0xd118('0x2d'))['value']();if(_[_0xd118('0x2e')](_0x32d2e3,_0xb45bdf['type'])){return;}var _0xaeb1f8=_['find'](_0x1257c5,[_0xd118('0x2d'),_0xb45bdf[_0xd118('0x2f')]])[_0xd118('0x30')];return db[_0xd118('0x31')]['destroy']({'where':{'type':_0xaeb1f8,'resourceId':_0xb45bdf['id']}})[_0xd118('0x25')](function(){return _0x4e668e;});})[_0xd118('0x25')](function(){_0x1679fd[_0xd118('0x1c')](0xcc)[_0xd118('0x1b')]();});}};}function handleEntityNotFound(_0x2b4509,_0x117278){return function(_0x202af1){if(!_0x202af1){_0x2b4509['sendStatus'](0x194);}return _0x202af1;};}function handleError(_0x4944cb,_0x33f49a){_0x33f49a=_0x33f49a||0x1f4;return function(_0x5554ce){logger[_0xd118('0x32')](_0x5554ce['stack']);if(_0x5554ce['name']){delete _0x5554ce[_0xd118('0x30')];}_0x4944cb[_0xd118('0x1c')](_0x33f49a)[_0xd118('0x33')](_0x5554ce);};}exports['index']=function(_0xe1dd52,_0x151b95){var _0x50a1c9={},_0x346ec0={},_0x349232={'count':0x0,'rows':[]};var _0x37db43=_[_0xd118('0x2c')](db[_0xd118('0x34')]['rawAttributes'],function(_0x3ec465){return{'name':_0x3ec465[_0xd118('0x35')],'type':_0x3ec465['type'][_0xd118('0x36')]};});_0x346ec0[_0xd118('0x37')]=_[_0xd118('0x2c')](_0x37db43,_0xd118('0x30'));_0x346ec0[_0xd118('0x38')]=_[_0xd118('0x39')](_0xe1dd52[_0xd118('0x38')]);_0x346ec0['filters']=_[_0xd118('0x3a')](_0x346ec0[_0xd118('0x37')],_0x346ec0['query']);_0x50a1c9['attributes']=_[_0xd118('0x3a')](_0x346ec0[_0xd118('0x37')],qs[_0xd118('0x3b')](_0xe1dd52['query']['fields']));_0x50a1c9[_0xd118('0x3c')]=_0x50a1c9['attributes'][_0xd118('0x3d')]?_0x50a1c9[_0xd118('0x3c')]:_0x346ec0[_0xd118('0x37')];if(!_0xe1dd52[_0xd118('0x38')][_0xd118('0x3e')](_0xd118('0x3f'))){_0x50a1c9['limit']=qs[_0xd118('0x1f')](_0xe1dd52['query'][_0xd118('0x1f')]);_0x50a1c9[_0xd118('0x20')]=qs[_0xd118('0x20')](_0xe1dd52[_0xd118('0x38')][_0xd118('0x20')]);}_0x50a1c9[_0xd118('0x40')]=qs[_0xd118('0x41')](_0xe1dd52[_0xd118('0x38')][_0xd118('0x41')]);_0x50a1c9['where']=qs[_0xd118('0x42')](_[_0xd118('0x43')](_0xe1dd52[_0xd118('0x38')],_0x346ec0[_0xd118('0x42')]),_0x37db43);if(_0xe1dd52['query']['filter']){_0x50a1c9[_0xd118('0x44')]=_[_0xd118('0x45')](_0x50a1c9[_0xd118('0x44')],{'$or':_[_0xd118('0x2c')](_0x37db43,function(_0xfa8da7){if(_0xfa8da7['type']!=='VIRTUAL'){var _0x38ff0f={};_0x38ff0f[_0xfa8da7[_0xd118('0x30')]]={'$like':'%'+_0xe1dd52[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x38ff0f;}})});}_0x50a1c9=_[_0xd118('0x45')]({},_0x50a1c9,_0xe1dd52['options']);var _0x727cd={'where':_0x50a1c9['where']};return db[_0xd118('0x34')][_0xd118('0x46')](_0x727cd)[_0xd118('0x25')](function(_0x764e7c){_0x349232[_0xd118('0x46')]=_0x764e7c;if(_0xe1dd52['query'][_0xd118('0x47')]){_0x50a1c9[_0xd118('0x48')]=[{'all':!![]}];}return db[_0xd118('0x34')][_0xd118('0x49')](_0x50a1c9);})['then'](function(_0x1aca6f){_0x349232['rows']=_0x1aca6f;return _0x349232;})['then'](respondWithFilteredResult(_0x151b95,_0x50a1c9))['catch'](handleError(_0x151b95,null));};exports['show']=function(_0x7c0ea0,_0x4205cd){var _0x3b4512={'raw':![],'where':{'id':_0x7c0ea0[_0xd118('0x4a')]['id']}},_0x33595a={};_0x33595a[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x34')][_0xd118('0x4b')]);_0x33595a[_0xd118('0x38')]=_[_0xd118('0x39')](_0x7c0ea0['query']);_0x33595a[_0xd118('0x42')]=_['intersection'](_0x33595a[_0xd118('0x37')],_0x33595a[_0xd118('0x38')]);_0x3b4512[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0x33595a['model'],qs['fields'](_0x7c0ea0[_0xd118('0x38')][_0xd118('0x3b')]));_0x3b4512['attributes']=_0x3b4512[_0xd118('0x3c')][_0xd118('0x3d')]?_0x3b4512[_0xd118('0x3c')]:_0x33595a[_0xd118('0x37')];if(_0x7c0ea0[_0xd118('0x38')][_0xd118('0x47')]){_0x3b4512[_0xd118('0x48')]=[{'all':!![]}];}_0x3b4512=_['merge']({},_0x3b4512,_0x7c0ea0['options']);return db[_0xd118('0x34')][_0xd118('0x4c')](_0x3b4512)[_0xd118('0x25')](handleEntityNotFound(_0x4205cd,null))[_0xd118('0x25')](respondWithResult(_0x4205cd,null))[_0xd118('0x4d')](handleError(_0x4205cd,null));};exports[_0xd118('0x4e')]=function(_0x32506c,_0x538364){return db[_0xd118('0x34')][_0xd118('0x4e')](_0x32506c[_0xd118('0x4f')],{})[_0xd118('0x25')](function(_0xd45977){var _0x37380f=_0x32506c[_0xd118('0x50')][_0xd118('0x51')]({'plain':!![]});if(!_0x37380f)throw new Error(_0xd118('0x52'));if(_0x37380f[_0xd118('0x53')]===_0xd118('0x50')){var _0x22c556=_0xd45977[_0xd118('0x51')]({'plain':!![]});var _0x4d9546=[{'name':_0xd118('0x27'),'value':'inbound'},{'name':'QueueCampaigns','value':_0xd118('0x54')}];var _0x6970de=_[_0xd118('0x4c')](_0x4d9546,[_0xd118('0x2d'),_0x22c556[_0xd118('0x2f')]])[_0xd118('0x30')];return db[_0xd118('0x55')][_0xd118('0x4c')]({'where':{'name':_0x6970de,'userProfileId':_0x37380f['userProfileId']},'raw':!![]})[_0xd118('0x25')](function(_0x362b86){if(_0x362b86&&_0x362b86[_0xd118('0x56')]===0x0){return db[_0xd118('0x31')]['create']({'name':_0x22c556[_0xd118('0x30')],'resourceId':_0x22c556['id'],'type':_0x362b86[_0xd118('0x30')],'sectionId':_0x362b86['id']},{})[_0xd118('0x25')](function(){return _0xd45977;});}else{return _0xd45977;}})[_0xd118('0x4d')](function(_0x416470){logger[_0xd118('0x32')](_0xd118('0x57'),_0x416470);throw _0x416470;});}return _0xd45977;})[_0xd118('0x25')](respondWithResult(_0x538364,0xc9))[_0xd118('0x4d')](handleError(_0x538364,null));};exports[_0xd118('0x58')]=function(_0x5ca318,_0x1d7868){var _0x45f6dd={'where':{'id':_0x5ca318[_0xd118('0x4a')]['id']}},_0x581e84={};_0x581e84[_0xd118('0x37')]=_[_0xd118('0x39')](db['VoiceQueue'][_0xd118('0x4b')]);_0x45f6dd[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0x581e84[_0xd118('0x37')],qs['fields'](_0x5ca318[_0xd118('0x38')][_0xd118('0x3b')]));_0x45f6dd['attributes']=_0x45f6dd['attributes'][_0xd118('0x3d')]?_0x45f6dd[_0xd118('0x3c')]:_0x581e84[_0xd118('0x37')];if(_0x5ca318[_0xd118('0x38')][_0xd118('0x47')]){_0x45f6dd[_0xd118('0x48')]=[{'all':!![]}];}_0x45f6dd=_[_0xd118('0x45')]({},_0x45f6dd,_0x5ca318[_0xd118('0x59')]);return db['VoiceQueue'][_0xd118('0x4c')](_0x45f6dd)[_0xd118('0x25')](handleEntityNotFound(_0x1d7868,null))[_0xd118('0x25')](function(_0x4d4231){if(_0x4d4231){var _0x2903a5=_0x4d4231[_0xd118('0x51')]({'plain':!![]});_0x2903a5=qs['omit'](_0x2903a5,['id',_0xd118('0x5a'),'updatedAt']);_0x5ca318[_0xd118('0x4f')]=_['omit'](_0x5ca318[_0xd118('0x4f')],['id',_0xd118('0x5a'),_0xd118('0x5b')]);return db[_0xd118('0x34')][_0xd118('0x4e')](_['merge'](_0x2903a5,_0x5ca318['body']),{'include':_0x5ca318[_0xd118('0x38')][_0xd118('0x47')]?[{'all':!![]}]:undefined})[_0xd118('0x25')](function(_0x3395e0){var _0x4af652=_0x5ca318[_0xd118('0x50')][_0xd118('0x51')]({'plain':!![]});if(!_0x4af652)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4af652[_0xd118('0x53')]===_0xd118('0x50')){var _0x4f3fb5=_0x3395e0['get']({'plain':!![]});var _0x2b81ee=[{'name':_0xd118('0x27'),'value':_0xd118('0x28')},{'name':_0xd118('0x29'),'value':_0xd118('0x54')}];var _0x2aa65b=_[_0xd118('0x4c')](_0x2b81ee,[_0xd118('0x2d'),_0x4f3fb5[_0xd118('0x2f')]])[_0xd118('0x30')];return db[_0xd118('0x55')][_0xd118('0x4c')]({'where':{'name':_0x2aa65b,'userProfileId':_0x4af652[_0xd118('0x5c')]},'raw':!![]})['then'](function(_0x12eb5d){if(_0x12eb5d&&_0x12eb5d[_0xd118('0x56')]===0x0){return db[_0xd118('0x31')][_0xd118('0x4e')]({'name':_0x4f3fb5['name'],'resourceId':_0x4f3fb5['id'],'type':_0x12eb5d[_0xd118('0x30')],'sectionId':_0x12eb5d['id']},{})[_0xd118('0x25')](function(){return _0x3395e0;});}else{return _0x3395e0;}})[_0xd118('0x4d')](function(_0x3b37a3){logger['error'](_0xd118('0x57'),_0x3b37a3);throw _0x3b37a3;});}return _0x3395e0;});}})[_0xd118('0x25')](respondWithResult(_0x1d7868,0xc9))[_0xd118('0x4d')](handleError(_0x1d7868,null));};exports[_0xd118('0x5d')]=function(_0x3a806c,_0x4ee43e){if(_0x3a806c[_0xd118('0x4f')]['id']){delete _0x3a806c['body']['id'];}return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x3a806c['params']['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x4ee43e,null))[_0xd118('0x25')](saveUpdates(_0x3a806c[_0xd118('0x4f')],null))[_0xd118('0x25')](respondWithResult(_0x4ee43e,null))[_0xd118('0x4d')](handleError(_0x4ee43e,null));};exports['destroy']=function(_0xc63c89,_0x1817e5){return db[_0xd118('0x34')]['find']({'where':{'id':_0xc63c89[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x1817e5,null))[_0xd118('0x25')](removeEntity(_0x1817e5,null))[_0xd118('0x4d')](handleError(_0x1817e5,null));};exports['getHoppers']=function(_0x29d1bc,_0x2d544e,_0x2ea341){var _0x5f5800={'raw':![],'where':{}};var _0x50bd34={};var _0xee6846={'count':0x0,'rows':[]};return db[_0xd118('0x34')]['findOne']({'where':{'id':_0x29d1bc['params']['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x2d544e,null))[_0xd118('0x25')](function(_0xf4506){if(_0xf4506){_0x50bd34[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x5e')][_0xd118('0x4b')]);_0x50bd34[_0xd118('0x38')]=_[_0xd118('0x39')](_0x29d1bc[_0xd118('0x38')]);_0x50bd34[_0xd118('0x42')]=_[_0xd118('0x3a')](_0x50bd34[_0xd118('0x37')],_0x50bd34[_0xd118('0x38')]);_0x5f5800['attributes']=_[_0xd118('0x3a')](_0x50bd34[_0xd118('0x37')],qs[_0xd118('0x3b')](_0x29d1bc[_0xd118('0x38')]['fields']));_0x5f5800[_0xd118('0x3c')]=_0x5f5800['attributes'][_0xd118('0x3d')]?_0x5f5800[_0xd118('0x3c')]:_0x50bd34[_0xd118('0x37')];if(!_0x29d1bc[_0xd118('0x38')][_0xd118('0x3e')](_0xd118('0x3f'))){_0x5f5800[_0xd118('0x1f')]=qs['limit'](_0x29d1bc[_0xd118('0x38')][_0xd118('0x1f')]);_0x5f5800[_0xd118('0x20')]=qs[_0xd118('0x20')](_0x29d1bc[_0xd118('0x38')][_0xd118('0x20')]);}_0x5f5800[_0xd118('0x40')]=qs[_0xd118('0x41')](_0x29d1bc[_0xd118('0x38')][_0xd118('0x41')]);_0x5f5800[_0xd118('0x44')]=qs[_0xd118('0x42')](_[_0xd118('0x43')](_0x29d1bc[_0xd118('0x38')],_0x50bd34['filters']));_0x5f5800[_0xd118('0x44')][_0xd118('0x5f')]=_0xf4506['id'];if(_0x29d1bc[_0xd118('0x38')][_0xd118('0x2a')]){_0x5f5800['where']=_[_0xd118('0x45')](_0x5f5800[_0xd118('0x44')],{'$or':_[_0xd118('0x2c')](_0x5f5800[_0xd118('0x3c')],function(_0x26a9c3){var _0x1c9bdb={};_0x1c9bdb[_0x26a9c3]={'$like':'%'+_0x29d1bc[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x1c9bdb;})});}_0x5f5800=_[_0xd118('0x45')]({},_0x5f5800,_0x29d1bc[_0xd118('0x59')]);return db[_0xd118('0x5e')][_0xd118('0x46')]({'where':_0x5f5800[_0xd118('0x44')]})[_0xd118('0x25')](function(_0x516e81){_0xee6846[_0xd118('0x46')]=_0x516e81;if(_0x29d1bc['query'][_0xd118('0x47')]){_0x5f5800['include']=[{'all':!![]}];}return db[_0xd118('0x5e')][_0xd118('0x49')](_0x5f5800);})['then'](function(_0x1d5d8f){_0xee6846[_0xd118('0x60')]=_0x1d5d8f;return _0xee6846;});}})[_0xd118('0x25')](respondWithFilteredResult(_0x2d544e,_0x5f5800))['catch'](handleError(_0x2d544e,null));};exports['getHopperHistories']=function(_0xc2051e,_0x2a2213,_0x52ca85){var _0x28e599={'raw':!![],'where':{}};var _0x3f5280={};var _0x12648a={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd118('0x61')]({'where':{'id':_0xc2051e[_0xd118('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2a2213,null))[_0xd118('0x25')](function(_0xbec077){if(_0xbec077){_0x3f5280[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x62')][_0xd118('0x4b')]);_0x3f5280[_0xd118('0x38')]=_[_0xd118('0x39')](_0xc2051e[_0xd118('0x38')]);_0x3f5280[_0xd118('0x42')]=_[_0xd118('0x3a')](_0x3f5280[_0xd118('0x37')],_0x3f5280[_0xd118('0x38')]);_0x28e599[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0x3f5280[_0xd118('0x37')],qs[_0xd118('0x3b')](_0xc2051e['query'][_0xd118('0x3b')]));_0x28e599[_0xd118('0x3c')]=_0x28e599[_0xd118('0x3c')]['length']?_0x28e599['attributes']:_0x3f5280[_0xd118('0x37')];if(!_0xc2051e['query'][_0xd118('0x3e')]('nolimit')){_0x28e599['limit']=qs[_0xd118('0x1f')](_0xc2051e['query']['limit']);_0x28e599['offset']=qs[_0xd118('0x20')](_0xc2051e[_0xd118('0x38')]['offset']);}_0x28e599[_0xd118('0x40')]=qs[_0xd118('0x41')](_0xc2051e['query'][_0xd118('0x41')]);_0x28e599[_0xd118('0x44')]=qs[_0xd118('0x42')](_[_0xd118('0x43')](_0xc2051e[_0xd118('0x38')],_0x3f5280[_0xd118('0x42')]));_0x28e599[_0xd118('0x44')]['VoiceQueueId']=_0xbec077['id'];if(_0xc2051e[_0xd118('0x38')][_0xd118('0x2a')]){_0x28e599[_0xd118('0x44')]=_[_0xd118('0x45')](_0x28e599[_0xd118('0x44')],{'$or':_[_0xd118('0x2c')](_0x28e599[_0xd118('0x3c')],function(_0x56cca7){var _0x4c29a7={};_0x4c29a7[_0x56cca7]={'$like':'%'+_0xc2051e[_0xd118('0x38')]['filter']+'%'};return _0x4c29a7;})});}_0x28e599=_[_0xd118('0x45')]({},_0x28e599,_0xc2051e[_0xd118('0x59')]);return db[_0xd118('0x62')][_0xd118('0x46')]({'where':_0x28e599[_0xd118('0x44')]})[_0xd118('0x25')](function(_0x18b3e4){_0x12648a['count']=_0x18b3e4;if(_0xc2051e[_0xd118('0x38')][_0xd118('0x47')]){_0x28e599['include']=[{'all':!![]}];}return db[_0xd118('0x62')][_0xd118('0x49')](_0x28e599);})[_0xd118('0x25')](function(_0x5ad4d8){_0x12648a[_0xd118('0x60')]=_0x5ad4d8;return _0x12648a;});}})[_0xd118('0x25')](respondWithFilteredResult(_0x2a2213,_0x28e599))[_0xd118('0x4d')](handleError(_0x2a2213,null));};exports[_0xd118('0x63')]=function(_0x51983b,_0x5547f0,_0x3fe66c){var _0x80256b={'raw':!![],'where':{}};var _0x27aed4={};var _0x4597d3={'count':0x0,'rows':[]};return db[_0xd118('0x34')][_0xd118('0x61')]({'where':{'id':_0x51983b['params']['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x5547f0,null))[_0xd118('0x25')](function(_0x2806d4){if(_0x2806d4){_0x27aed4[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x64')][_0xd118('0x4b')]);_0x27aed4[_0xd118('0x38')]=_[_0xd118('0x39')](_0x51983b[_0xd118('0x38')]);_0x27aed4[_0xd118('0x42')]=_[_0xd118('0x3a')](_0x27aed4[_0xd118('0x37')],_0x27aed4['query']);_0x80256b[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0x27aed4[_0xd118('0x37')],qs[_0xd118('0x3b')](_0x51983b[_0xd118('0x38')][_0xd118('0x3b')]));_0x80256b[_0xd118('0x3c')]=_0x80256b[_0xd118('0x3c')]['length']?_0x80256b[_0xd118('0x3c')]:_0x27aed4['model'];if(!_0x51983b['query'][_0xd118('0x3e')](_0xd118('0x3f'))){_0x80256b['limit']=qs[_0xd118('0x1f')](_0x51983b[_0xd118('0x38')]['limit']);_0x80256b[_0xd118('0x20')]=qs[_0xd118('0x20')](_0x51983b[_0xd118('0x38')]['offset']);}_0x80256b[_0xd118('0x40')]=qs[_0xd118('0x41')](_0x51983b[_0xd118('0x38')][_0xd118('0x41')]);_0x80256b['where']=qs[_0xd118('0x42')](_['pick'](_0x51983b['query'],_0x27aed4[_0xd118('0x42')]));_0x80256b[_0xd118('0x44')][_0xd118('0x5f')]=_0x2806d4['id'];if(_0x51983b['query'][_0xd118('0x2a')]){_0x80256b[_0xd118('0x44')]=_[_0xd118('0x45')](_0x80256b[_0xd118('0x44')],{'$or':_[_0xd118('0x2c')](_0x80256b[_0xd118('0x3c')],function(_0x2e71e7){var _0x1a9df6={};_0x1a9df6[_0x2e71e7]={'$like':'%'+_0x51983b[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x1a9df6;})});}_0x80256b=_[_0xd118('0x45')]({},_0x80256b,_0x51983b[_0xd118('0x59')]);return db['CmHopperFinal'][_0xd118('0x46')]({'where':_0x80256b[_0xd118('0x44')]})[_0xd118('0x25')](function(_0x31d598){_0x4597d3[_0xd118('0x46')]=_0x31d598;if(_0x51983b[_0xd118('0x38')][_0xd118('0x47')]){_0x80256b[_0xd118('0x48')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd118('0x49')](_0x80256b);})[_0xd118('0x25')](function(_0xddef72){_0x4597d3[_0xd118('0x60')]=_0xddef72;return _0x4597d3;});}})[_0xd118('0x25')](respondWithFilteredResult(_0x5547f0,_0x80256b))['catch'](handleError(_0x5547f0,null));};exports['getHopperBlacks']=function(_0x3f1de4,_0x423f65,_0x5894c2){var _0x37a75d={'raw':!![],'where':{}};var _0x335c31={};var _0xf60b8d={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd118('0x61')]({'where':{'id':_0x3f1de4['params']['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x423f65,null))[_0xd118('0x25')](function(_0x1b151c){if(_0x1b151c){_0x335c31['model']=_[_0xd118('0x39')](db[_0xd118('0x65')]['rawAttributes']);_0x335c31[_0xd118('0x38')]=_['keys'](_0x3f1de4[_0xd118('0x38')]);_0x335c31[_0xd118('0x42')]=_['intersection'](_0x335c31['model'],_0x335c31[_0xd118('0x38')]);_0x37a75d[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0x335c31[_0xd118('0x37')],qs[_0xd118('0x3b')](_0x3f1de4[_0xd118('0x38')]['fields']));_0x37a75d[_0xd118('0x3c')]=_0x37a75d[_0xd118('0x3c')][_0xd118('0x3d')]?_0x37a75d[_0xd118('0x3c')]:_0x335c31[_0xd118('0x37')];if(!_0x3f1de4['query'][_0xd118('0x3e')](_0xd118('0x3f'))){_0x37a75d['limit']=qs[_0xd118('0x1f')](_0x3f1de4['query'][_0xd118('0x1f')]);_0x37a75d[_0xd118('0x20')]=qs['offset'](_0x3f1de4[_0xd118('0x38')][_0xd118('0x20')]);}_0x37a75d[_0xd118('0x40')]=qs[_0xd118('0x41')](_0x3f1de4[_0xd118('0x38')][_0xd118('0x41')]);_0x37a75d[_0xd118('0x44')]=qs[_0xd118('0x42')](_[_0xd118('0x43')](_0x3f1de4[_0xd118('0x38')],_0x335c31[_0xd118('0x42')]));_0x37a75d[_0xd118('0x44')]['VoiceQueueId']=_0x1b151c['id'];if(_0x3f1de4[_0xd118('0x38')][_0xd118('0x2a')]){_0x37a75d[_0xd118('0x44')]=_['merge'](_0x37a75d['where'],{'$or':_[_0xd118('0x2c')](_0x37a75d[_0xd118('0x3c')],function(_0x329d9f){var _0x174bfa={};_0x174bfa[_0x329d9f]={'$like':'%'+_0x3f1de4[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x174bfa;})});}_0x37a75d=_[_0xd118('0x45')]({},_0x37a75d,_0x3f1de4[_0xd118('0x59')]);return db[_0xd118('0x65')]['count']({'where':_0x37a75d[_0xd118('0x44')]})[_0xd118('0x25')](function(_0xae80a7){_0xf60b8d[_0xd118('0x46')]=_0xae80a7;if(_0x3f1de4[_0xd118('0x38')]['includeAll']){_0x37a75d[_0xd118('0x48')]=[{'all':!![]}];}return db[_0xd118('0x65')][_0xd118('0x49')](_0x37a75d);})[_0xd118('0x25')](function(_0x1b83bf){_0xf60b8d['rows']=_0x1b83bf;return _0xf60b8d;});}})[_0xd118('0x25')](respondWithFilteredResult(_0x423f65,_0x37a75d))[_0xd118('0x4d')](handleError(_0x423f65,null));};exports[_0xd118('0x66')]=function(_0xd97054,_0x5166fb,_0x27e906){var _0x3fd8bd={};var _0xdb5323={};var _0x5d740a;var _0x3ae748;return db[_0xd118('0x34')]['findOne']({'where':{'id':_0xd97054[_0xd118('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5166fb,null))[_0xd118('0x25')](function(_0x521348){if(_0x521348){_0x5d740a=_0x521348;_0xdb5323[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x67')][_0xd118('0x4b')]);_0xdb5323[_0xd118('0x38')]=_[_0xd118('0x39')](_0xd97054[_0xd118('0x38')]);_0xdb5323[_0xd118('0x42')]=_[_0xd118('0x3a')](_0xdb5323[_0xd118('0x37')],_0xdb5323[_0xd118('0x38')]);_0x3fd8bd[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0xdb5323[_0xd118('0x37')],qs[_0xd118('0x3b')](_0xd97054['query'][_0xd118('0x3b')]));_0x3fd8bd['attributes']=_0x3fd8bd[_0xd118('0x3c')][_0xd118('0x3d')]?_0x3fd8bd['attributes']:_0xdb5323[_0xd118('0x37')];_0x3fd8bd[_0xd118('0x40')]=qs[_0xd118('0x41')](_0xd97054[_0xd118('0x38')][_0xd118('0x41')]);_0x3fd8bd['where']=qs[_0xd118('0x42')](_['pick'](_0xd97054['query'],_0xdb5323['filters']));if(_0xd97054[_0xd118('0x38')][_0xd118('0x2a')]){_0x3fd8bd['where']=_[_0xd118('0x45')](_0x3fd8bd['where'],{'$or':_[_0xd118('0x2c')](_0x3fd8bd[_0xd118('0x3c')],function(_0x1645b9){var _0x1a6668={};_0x1a6668[_0x1645b9]={'$like':'%'+_0xd97054[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x1a6668;})});}_0x3fd8bd=_[_0xd118('0x45')]({},_0x3fd8bd,_0xd97054[_0xd118('0x59')]);return _0x5d740a['getTeams'](_0x3fd8bd);}})['then'](function(_0xc6ccec){if(_0xc6ccec){_0x3ae748=_0xc6ccec[_0xd118('0x3d')];if(!_0xd97054['query']['hasOwnProperty']('nolimit')){_0x3fd8bd['limit']=qs[_0xd118('0x1f')](_0xd97054[_0xd118('0x38')]['limit']);_0x3fd8bd[_0xd118('0x20')]=qs[_0xd118('0x20')](_0xd97054[_0xd118('0x38')][_0xd118('0x20')]);}return _0x5d740a[_0xd118('0x66')](_0x3fd8bd);}})['then'](function(_0x924e0e){if(_0x924e0e){return _0x924e0e?{'count':_0x3ae748,'rows':_0x924e0e}:null;}})[_0xd118('0x25')](respondWithResult(_0x5166fb,null))[_0xd118('0x4d')](handleError(_0x5166fb,null));};exports['addTeams']=function(_0x3758fe,_0xee6a71,_0x4c7eb2){var _0x5e544c=_0x3758fe['body'][_0xd118('0x68')];var _0x259bb5=_[_0xd118('0x2c')](_0x5e544c,'id');return db[_0xd118('0x67')]['findAll']({'where':{'id':_0x259bb5},'attributes':['id'],'include':[{'model':db[_0xd118('0x69')],'as':_0xd118('0x6a'),'attributes':['id','name','online',_0xd118('0x6b'),_0xd118('0x6c')],'raw':!![]}]})[_0xd118('0x25')](function(_0x515914){if(_0x515914){var _0x39acf8=_[_0xd118('0x6d')](_0x515914,function(_0x1173d1){var _0x4691bd=_0x1173d1[_0xd118('0x51')]({'plain':!![]});_0x4691bd['Agents'][_0xd118('0x6e')](function(_0x125932){_0x125932[_0xd118('0x6f')]=_[_0xd118('0x4c')](_0x5e544c,{'id':_0x4691bd['id']})['penalty'];});return _0x4691bd[_0xd118('0x6a')];});return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x3758fe[_0xd118('0x4a')]['id']}})['then'](function(_0x159262){return db['sequelize'][_0xd118('0x70')](function(_0x3e89a8){return _0x159262[_0xd118('0x71')](_0x259bb5,{'transaction':_0x3e89a8})[_0xd118('0x25')](function(){return BPromise[_0xd118('0x72')](_0x5e544c,function(_0x201a7f){return db['TeamVoiceQueue'][_0xd118('0x73')]({'TeamId':_0x201a7f['id'],'VoiceQueueId':_0x3758fe[_0xd118('0x4a')]['id'],'penalty':_0x201a7f[_0xd118('0x6f')]},{'transaction':_0x3e89a8});});})['then'](function(){return BPromise[_0xd118('0x72')](_0x39acf8,function(_0x1b9a02){return db[_0xd118('0x74')][_0xd118('0x75')]({'where':{'UserId':_0x1b9a02['id'],'VoiceQueueId':_0x3758fe[_0xd118('0x4a')]['id']},'defaults':{'penalty':_0x1b9a02[_0xd118('0x6f')]},'transaction':_0x3e89a8});});})[_0xd118('0x25')](function(){return BPromise[_0xd118('0x72')](_[_0xd118('0x2a')](_0x39acf8,{'online':!![]}),function(_0x211ad5){return db['UserVoiceQueueRt'][_0xd118('0x73')]({'membername':_0x211ad5[_0xd118('0x30')],'UserId':_0x211ad5['id'],'queue_name':_0x159262[_0xd118('0x30')],'VoiceQueueId':_0x159262['id'],'interface':_[_0xd118('0x76')](_0x211ad5[_0xd118('0x6c')])?util[_0xd118('0x77')]('SIP/%s',_0x211ad5[_0xd118('0x30')]):_0x211ad5[_0xd118('0x6c')],'paused':_0x211ad5[_0xd118('0x6b')]||![],'penalty':_0x211ad5['penalty']},{'transaction':_0x3e89a8});});})[_0xd118('0x25')](function(){_0x39acf8[_0xd118('0x6e')](function(_0x562c1a){socket[_0xd118('0x78')](_0xd118('0x79'),{'UserId':_0x562c1a['id'],'VoiceQueueId':_0x159262['id']});});});});});}})[_0xd118('0x25')](respondWithStatusCode(_0xee6a71,null))[_0xd118('0x4d')](handleError(_0xee6a71,null));};exports[_0xd118('0x7a')]=function(_0x2c0642,_0x3eaae1,_0x57e290){return db[_0xd118('0x67')]['findAll']({'where':{'id':_0x2c0642[_0xd118('0x38')][_0xd118('0x7b')]},'attributes':['id'],'include':[{'model':db[_0xd118('0x69')],'as':_0xd118('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xd118('0x25')](handleEntityNotFound(_0x3eaae1,null))['then'](function(_0x8fd4b0){var _0x43fb6c=_['map'](_0x8fd4b0,'id');var _0x59105f=[];var _0x2659b1=[];var _0x16639e=squel[_0xd118('0x7c')]();_0x16639e['field'](_0xd118('0x7d'))['from'](_0xd118('0x7e'),'tq')[_0xd118('0x7f')](_0xd118('0x80'),'ut',_0xd118('0x81'))['where'](_0xd118('0x82'),_0x2c0642[_0xd118('0x4a')]['id']);for(var _0xc6db10=0x0;_0xc6db10<_0x8fd4b0[_0xd118('0x3d')];_0xc6db10+=0x1){let _0x58ea59=_0x8fd4b0[_0xc6db10];for(var _0x32f6ab=0x0;_0x32f6ab<_0x58ea59['Agents'][_0xd118('0x3d')];_0x32f6ab+=0x1){let _0x60c366=_0x58ea59[_0xd118('0x6a')][_0x32f6ab];var _0x3d1aa4=_0x16639e[_0xd118('0x58')]();_0x3d1aa4['where'](_0xd118('0x83'),_0x60c366['id']);_0x2659b1[_0xd118('0x84')](db[_0xd118('0x85')][_0xd118('0x38')](_0x3d1aa4['toString'](),{'type':db[_0xd118('0x85')][_0xd118('0x86')]['SELECT']})[_0xd118('0x25')](function(_0x17b10d){if(_0x17b10d[_0xd118('0x3d')]===0x1){return _0x60c366['id'];}else{var _0x1ba363=_[_0xd118('0x87')](_[_0xd118('0x2c')](_0x17b10d,_0xd118('0x88')),function(_0x5443a0){return _[_0xd118('0x2e')](_0x43fb6c,_0x5443a0);});if(_0x1ba363){return _0x60c366['id'];}}}));}}return BPromise['all'](_0x2659b1)[_0xd118('0x25')](function(_0x3ed0b2){_0x59105f=_(_0x59105f)[_0xd118('0x89')](_0x3ed0b2)[_0xd118('0x8a')]()['value']();return db[_0xd118('0x34')]['find']({'where':{'id':_0x2c0642[_0xd118('0x4a')]['id']}})['then'](function(_0x1c9cd8){return db[_0xd118('0x85')][_0xd118('0x70')](function(_0x113cea){return _0x1c9cd8[_0xd118('0x7a')](_0x2c0642[_0xd118('0x38')][_0xd118('0x7b')],{'transaction':_0x113cea})[_0xd118('0x25')](function(){if(!_[_0xd118('0x8b')](_0x59105f)){return _0x1c9cd8[_0xd118('0x8c')](_0x59105f,{'transaction':_0x113cea})[_0xd118('0x25')](function(){return db[_0xd118('0x8d')]['destroy']({'where':{'VoiceQueueId':_0x2c0642[_0xd118('0x4a')]['id'],'UserId':_0x59105f},'transaction':_0x113cea});});}})[_0xd118('0x25')](function(){_0x59105f[_0xd118('0x6e')](function(_0x1bc31c){socket[_0xd118('0x78')](_0xd118('0x8e'),{'UserId':_0x1bc31c,'VoiceQueueId':_0x1c9cd8['id']});});});});});});})[_0xd118('0x25')](respondWithStatusCode(_0x3eaae1,null))[_0xd118('0x4d')](handleError(_0x3eaae1,null));};exports['addAgents']=function(_0x9bc94a,_0x9b52f9,_0x10cafd){var _0x5019fd,_0x248cd1;return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x9bc94a[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x9b52f9,null))[_0xd118('0x25')](function(_0x5f1822){if(_0x5f1822){_0x248cd1=_0x5f1822;return _0x5f1822[_0xd118('0x8f')](_0x9bc94a[_0xd118('0x4f')][_0xd118('0x7b')],_[_0xd118('0x90')](_0x9bc94a[_0xd118('0x4f')],['ids','id'])||{})['spread'](function(_0x1bce5d){for(var _0x106de9=0x0;_0x106de9<_0x9bc94a[_0xd118('0x4f')][_0xd118('0x7b')][_0xd118('0x3d')];_0x106de9+=0x1){socket['emit']('userVoiceQueue:save',{'UserId':Number(_0x9bc94a[_0xd118('0x4f')][_0xd118('0x7b')][_0x106de9]),'VoiceQueueId':Number(_0x9bc94a['params']['id'])});}return _0x1bce5d;});}})['then'](function(_0x5b5dc0){_0x5019fd=_0x5b5dc0||[];if(_0x248cd1){return db[_0xd118('0x69')]['findAll']({'where':{'id':_0x9bc94a['body'][_0xd118('0x7b')]},'attributes':['id',_0xd118('0x30'),_0xd118('0x91'),_0xd118('0x6b'),_0xd118('0x6c')],'raw':!![]});}})['then'](function(_0x467689){if(!_[_0xd118('0x8b')](_0x467689)){var _0x22d318=[];for(var _0x419ed6=0x0;_0x419ed6<_0x467689[_0xd118('0x3d')];_0x419ed6++){if(_0x467689[_0x419ed6]['online']){_0x22d318[_0xd118('0x84')](db[_0xd118('0x8d')][_0xd118('0x73')]({'membername':_0x467689[_0x419ed6][_0xd118('0x30')],'UserId':_0x467689[_0x419ed6]['id'],'queue_name':_0x248cd1[_0xd118('0x30')],'VoiceQueueId':_0x248cd1['id'],'interface':_[_0xd118('0x76')](_0x467689[_0x419ed6][_0xd118('0x6c')])?util[_0xd118('0x77')](_0xd118('0x92'),_0x467689[_0x419ed6]['name']):_0x467689[_0x419ed6][_0xd118('0x6c')],'paused':_0x467689[_0x419ed6][_0xd118('0x6b')]||![],'penalty':_0x9bc94a['body'][_0xd118('0x6f')]||0x0}));}}return BPromise[_0xd118('0x93')](_0x22d318);}})['then'](function(){return _0x5019fd;})['then'](respondWithResult(_0x9b52f9,null))['catch'](handleError(_0x9b52f9,null));};exports[_0xd118('0x8c')]=function(_0x2cabdc,_0x434a96,_0x51e114){return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x2cabdc['params']['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x434a96,null))[_0xd118('0x25')](function(_0x24ecee){if(_0x24ecee){return _0x24ecee[_0xd118('0x8c')](_0x2cabdc['query']['ids'])['then'](function(){if(_['isArray'](_0x2cabdc[_0xd118('0x38')][_0xd118('0x7b')])){for(var _0x2cc964=0x0;_0x2cc964<_0x2cabdc[_0xd118('0x38')][_0xd118('0x7b')][_0xd118('0x3d')];_0x2cc964+=0x1){socket['emit'](_0xd118('0x8e'),{'UserId':Number(_0x2cabdc[_0xd118('0x38')]['ids'][_0x2cc964]),'VoiceQueueId':Number(_0x2cabdc[_0xd118('0x4a')]['id'])});}}else{socket[_0xd118('0x78')](_0xd118('0x8e'),{'UserId':Number(_0x2cabdc[_0xd118('0x38')][_0xd118('0x7b')]),'VoiceQueueId':Number(_0x2cabdc[_0xd118('0x4a')]['id'])});}});}})[_0xd118('0x25')](function(_0x1e4e26){return db[_0xd118('0x8d')][_0xd118('0x26')]({'where':{'VoiceQueueId':_0x2cabdc[_0xd118('0x4a')]['id'],'UserId':_0x2cabdc['query']['ids']}})['then'](function(){return _0x1e4e26;});})[_0xd118('0x25')](respondWithStatusCode(_0x434a96,null))[_0xd118('0x4d')](handleError(_0x434a96,null));};exports[_0xd118('0x94')]=function(_0xd045ed,_0xccace1,_0x2f959e){var _0x4bae72={};var _0x33abb9={};var _0x3ca1c5;var _0x69148;return db[_0xd118('0x34')][_0xd118('0x61')]({'where':{'id':_0xd045ed[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0xccace1,null))[_0xd118('0x25')](function(_0x4a8218){if(_0x4a8218){_0x3ca1c5=_0x4a8218;_0x33abb9[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x69')][_0xd118('0x4b')]);_0x33abb9[_0xd118('0x38')]=_[_0xd118('0x39')](_0xd045ed[_0xd118('0x38')]);_0x33abb9[_0xd118('0x42')]=_['intersection'](_0x33abb9[_0xd118('0x37')],_0x33abb9[_0xd118('0x38')]);_0x4bae72['attributes']=_[_0xd118('0x3a')](_0x33abb9[_0xd118('0x37')],qs['fields'](_0xd045ed[_0xd118('0x38')][_0xd118('0x3b')]));_0x4bae72[_0xd118('0x3c')]=_0x4bae72[_0xd118('0x3c')]['length']?_0x4bae72[_0xd118('0x3c')]:_0x33abb9[_0xd118('0x37')];_0x4bae72['order']=qs[_0xd118('0x41')](_0xd045ed[_0xd118('0x38')][_0xd118('0x41')]);_0x4bae72[_0xd118('0x44')]=qs[_0xd118('0x42')](_[_0xd118('0x43')](_0xd045ed['query'],_0x33abb9[_0xd118('0x42')]));if(_0xd045ed[_0xd118('0x38')]['filter']){_0x4bae72[_0xd118('0x44')]=_['merge'](_0x4bae72[_0xd118('0x44')],{'$or':_[_0xd118('0x2c')](_0x4bae72[_0xd118('0x3c')],function(_0x266f7d){var _0x1341cd={};_0x1341cd[_0x266f7d]={'$like':'%'+_0xd045ed[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x1341cd;})});}_0x4bae72=_['merge']({},_0x4bae72,_0xd045ed[_0xd118('0x59')]);return _0x3ca1c5['getAgents'](_0x4bae72);}})[_0xd118('0x25')](function(_0x32f930){if(_0x32f930){_0x69148=_0x32f930['length'];if(!_0xd045ed[_0xd118('0x38')][_0xd118('0x3e')](_0xd118('0x3f'))){_0x4bae72[_0xd118('0x1f')]=qs[_0xd118('0x1f')](_0xd045ed[_0xd118('0x38')]['limit']);_0x4bae72[_0xd118('0x20')]=qs[_0xd118('0x20')](_0xd045ed[_0xd118('0x38')][_0xd118('0x20')]);}return _0x3ca1c5[_0xd118('0x94')](_0x4bae72);}})[_0xd118('0x25')](function(_0x562d07){if(_0x562d07){return _0x562d07?{'count':_0x69148,'rows':_0x562d07}:null;}})[_0xd118('0x25')](respondWithResult(_0xccace1,null))[_0xd118('0x4d')](handleError(_0xccace1,null));};exports[_0xd118('0x95')]=function(_0x39f7ac,_0x29ba6c,_0x1a8ec2){var _0x3a3206={};var _0x9dceba={};var _0x36c36c;var _0x366d31;return db[_0xd118('0x34')][_0xd118('0x61')]({'where':{'id':_0x39f7ac[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x29ba6c,null))[_0xd118('0x25')](function(_0x242833){if(_0x242833){_0x36c36c=_0x242833;_0x9dceba[_0xd118('0x37')]=_[_0xd118('0x39')](db['UserVoiceQueueRt'][_0xd118('0x4b')]);_0x9dceba['query']=_['keys'](_0x39f7ac['query']);_0x9dceba['filters']=_[_0xd118('0x3a')](_0x9dceba[_0xd118('0x37')],_0x9dceba[_0xd118('0x38')]);_0x3a3206['attributes']=_[_0xd118('0x3a')](_0x9dceba[_0xd118('0x37')],qs[_0xd118('0x3b')](_0x39f7ac[_0xd118('0x38')][_0xd118('0x3b')]));_0x3a3206['attributes']=_0x3a3206['attributes'][_0xd118('0x3d')]?_0x3a3206[_0xd118('0x3c')]:_0x9dceba[_0xd118('0x37')];_0x3a3206['order']=qs['sort'](_0x39f7ac[_0xd118('0x38')]['sort']);_0x3a3206['where']=qs[_0xd118('0x42')](_['pick'](_0x39f7ac['query'],_0x9dceba[_0xd118('0x42')]));if(_0x39f7ac[_0xd118('0x38')][_0xd118('0x2a')]){_0x3a3206[_0xd118('0x44')]=_[_0xd118('0x45')](_0x3a3206['where'],{'$or':_[_0xd118('0x2c')](_0x3a3206[_0xd118('0x3c')],function(_0x25bff7){var _0x2b4730={};_0x2b4730[_0x25bff7]={'$like':'%'+_0x39f7ac[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x2b4730;})});}_0x3a3206=_[_0xd118('0x45')]({},_0x3a3206,_0x39f7ac[_0xd118('0x59')]);return _0x36c36c['getMembers'](_0x3a3206);}})[_0xd118('0x25')](function(_0x29d40e){if(_0x29d40e){_0x366d31=_0x29d40e['length'];if(!_0x39f7ac['query'][_0xd118('0x3e')](_0xd118('0x3f'))){_0x3a3206['limit']=qs[_0xd118('0x1f')](_0x39f7ac[_0xd118('0x38')][_0xd118('0x1f')]);_0x3a3206[_0xd118('0x20')]=qs[_0xd118('0x20')](_0x39f7ac[_0xd118('0x38')][_0xd118('0x20')]);}return _0x36c36c[_0xd118('0x95')](_0x3a3206);}})['then'](function(_0x26cbf6){return _0x26cbf6?{'count':_0x366d31,'rows':_0x26cbf6}:null;})[_0xd118('0x25')](respondWithResult(_0x29ba6c,null))['catch'](handleError(_0x29ba6c,null));};exports[_0xd118('0x96')]=function(_0x5ce221,_0x5868ad,_0x3f9cb4){var _0x2931ff={};var _0x49019c={};var _0x247cc8;var _0x4a9454;return db[_0xd118('0x34')]['findOne']({'where':{'id':_0x5ce221[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x5868ad,null))[_0xd118('0x25')](function(_0x4608da){if(_0x4608da){_0x247cc8=_0x4608da;_0x49019c[_0xd118('0x37')]=_[_0xd118('0x39')](db[_0xd118('0x97')][_0xd118('0x4b')]);_0x49019c[_0xd118('0x38')]=_[_0xd118('0x39')](_0x5ce221['query']);_0x49019c[_0xd118('0x42')]=_[_0xd118('0x3a')](_0x49019c[_0xd118('0x37')],_0x49019c['query']);_0x2931ff[_0xd118('0x3c')]=_[_0xd118('0x3a')](_0x49019c['model'],qs[_0xd118('0x3b')](_0x5ce221[_0xd118('0x38')]['fields']));_0x2931ff['attributes']=_0x2931ff[_0xd118('0x3c')]['length']?_0x2931ff['attributes']:_0x49019c[_0xd118('0x37')];_0x2931ff['order']=qs[_0xd118('0x41')](_0x5ce221[_0xd118('0x38')][_0xd118('0x41')]);_0x2931ff[_0xd118('0x44')]=qs['filters'](_['pick'](_0x5ce221[_0xd118('0x38')],_0x49019c[_0xd118('0x42')]));if(_0x5ce221[_0xd118('0x38')][_0xd118('0x2a')]){_0x2931ff[_0xd118('0x44')]=_['merge'](_0x2931ff['where'],{'$or':_[_0xd118('0x2c')](_0x2931ff[_0xd118('0x3c')],function(_0x1a5791){var _0x1e8910={};_0x1e8910[_0x1a5791]={'$like':'%'+_0x5ce221[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x1e8910;})});}_0x2931ff=_[_0xd118('0x45')]({},_0x2931ff,_0x5ce221[_0xd118('0x59')]);return _0x247cc8['getLists'](_0x2931ff);}})['then'](function(_0x14e5f6){if(_0x14e5f6){_0x4a9454=_0x14e5f6['length'];if(!_0x5ce221['query'][_0xd118('0x3e')](_0xd118('0x3f'))){_0x2931ff[_0xd118('0x1f')]=qs['limit'](_0x5ce221[_0xd118('0x38')][_0xd118('0x1f')]);_0x2931ff[_0xd118('0x20')]=qs[_0xd118('0x20')](_0x5ce221['query'][_0xd118('0x20')]);}return _0x247cc8[_0xd118('0x96')](_0x2931ff);}})[_0xd118('0x25')](function(_0x21f70b){if(_0x21f70b){return _0x21f70b?{'count':_0x4a9454,'rows':_0x21f70b}:null;}})[_0xd118('0x25')](respondWithResult(_0x5868ad,null))[_0xd118('0x4d')](handleError(_0x5868ad,null));};exports[_0xd118('0x98')]=function(_0x56e7a4,_0x29aaa3,_0x19f351){var _0x1484b2,_0x4053ee;return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x56e7a4[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x29aaa3,null))[_0xd118('0x25')](function(_0x2002d9){if(_0x2002d9){_0x4053ee=_0x2002d9;return _0x2002d9['addLists'](_0x56e7a4[_0xd118('0x4f')][_0xd118('0x7b')],_[_0xd118('0x90')](_0x56e7a4[_0xd118('0x4f')],[_0xd118('0x7b'),'id'])||{});}return null;})[_0xd118('0x99')](function(_0x2ded95){var _0x39a77d;_0x1484b2=_0x2ded95||[];var _0x30d4d2=[];if(_0x2ded95){for(var _0x50a925=0x0;_0x50a925<_0x2ded95[_0xd118('0x3d')];_0x50a925+=0x1){var _0x365fb2=_0x2ded95[_0x50a925]['get']({'plain':!![]});_0x4053ee['dialCheckDuplicateType']=_0x56e7a4[_0xd118('0x4f')][_0xd118('0x9a')]?_0x56e7a4[_0xd118('0x4f')][_0xd118('0x9a')]:_0x4053ee[_0xd118('0x9a')];switch(_0x4053ee[_0xd118('0x9a')]){case _0xd118('0x9b'):_0x39a77d=squel[_0xd118('0x9c')]()[_0xd118('0x9d')](_0xd118('0x9e'))['fromQuery']([_0xd118('0x9f'),'scheduledAt','ContactId','ListId',_0xd118('0x5f'),_0xd118('0x5a'),_0xd118('0x5b')],squel['select']()[_0xd118('0xa0')](_0xd118('0x9f'),_0xd118('0x9f'))[_0xd118('0xa0')](_0xd118('0xa1'),_0xd118('0xa2'))['field']('id',_0xd118('0xa3'))['field'](_0x365fb2[_0xd118('0xa4')][_0xd118('0xa5')](),_0xd118('0xa6'))[_0xd118('0xa0')](_0x56e7a4[_0xd118('0x4a')]['id'][_0xd118('0xa5')](),_0xd118('0x5f'))['field'](_0xd118('0xa1'),_0xd118('0x5a'))[_0xd118('0xa0')](_0xd118('0xa1'),'updatedAt')[_0xd118('0xa7')](_0xd118('0xa8'))[_0xd118('0x44')](_0xd118('0xa9'))[_0xd118('0x44')](_0xd118('0xaa'),_0x365fb2[_0xd118('0xa4')][_0xd118('0xa5')]())['where'](_0xd118('0xab'))['where'](_0xd118('0xac'),squel[_0xd118('0x7c')]()[_0xd118('0xa0')](_0xd118('0xad'))['from'](_0xd118('0xae'))[_0xd118('0x44')](_0xd118('0x82'),_0x56e7a4[_0xd118('0x4a')]['id'][_0xd118('0xa5')]()))[_0xd118('0x44')](_0xd118('0xac'),squel[_0xd118('0x7c')]()['field']('COALESCE(phone,\x27\x27)')[_0xd118('0xa7')]('cm_hopper')[_0xd118('0x44')]('VoiceQueueId\x20=\x20?',_0x56e7a4[_0xd118('0x4a')]['id'][_0xd118('0xa5')]())))['toString']();break;case'onlyIfOpen':_0x39a77d=squel[_0xd118('0x9c')]()[_0xd118('0x9d')]('cm_hopper')['fromQuery']([_0xd118('0x9f'),'scheduledAt','ContactId',_0xd118('0xa6'),_0xd118('0x5f'),_0xd118('0x5a'),'updatedAt'],squel['select']()[_0xd118('0xa0')](_0xd118('0x9f'),'phone')[_0xd118('0xa0')](_0xd118('0xa1'),_0xd118('0xa2'))[_0xd118('0xa0')]('id','ContactId')['field'](_0x365fb2[_0xd118('0xa4')][_0xd118('0xa5')](),'ListId')[_0xd118('0xa0')](_0x56e7a4[_0xd118('0x4a')]['id']['toString'](),_0xd118('0x5f'))[_0xd118('0xa0')](_0xd118('0xa1'),_0xd118('0x5a'))[_0xd118('0xa0')](_0xd118('0xa1'),_0xd118('0x5b'))[_0xd118('0xa7')](_0xd118('0xa8'))[_0xd118('0x44')](_0xd118('0xa9'))[_0xd118('0x44')]('ListId\x20=\x20?',_0x365fb2[_0xd118('0xa4')][_0xd118('0xa5')]())[_0xd118('0x44')](_0xd118('0xab'))[_0xd118('0x44')](_0xd118('0xac'),squel['select']()[_0xd118('0xa0')]('COALESCE(phone,\x27\x27)')[_0xd118('0xa7')]('cm_hopper')[_0xd118('0x44')](_0xd118('0x82'),_0x56e7a4[_0xd118('0x4a')]['id'][_0xd118('0xa5')]())))[_0xd118('0xa5')]();break;default:_0x39a77d=squel[_0xd118('0x9c')]()['into'](_0xd118('0x9e'))[_0xd118('0xaf')]([_0xd118('0x9f'),'scheduledAt',_0xd118('0xa3'),_0xd118('0xa6'),_0xd118('0x5f'),_0xd118('0x5a'),_0xd118('0x5b')],squel[_0xd118('0x7c')]()[_0xd118('0xa0')](_0xd118('0x9f'),_0xd118('0x9f'))['field']('NOW()',_0xd118('0xa2'))['field']('id',_0xd118('0xa3'))['field'](_0x365fb2['CmListId']['toString'](),_0xd118('0xa6'))[_0xd118('0xa0')](_0x56e7a4[_0xd118('0x4a')]['id']['toString'](),_0xd118('0x5f'))[_0xd118('0xa0')](_0xd118('0xa1'),'createdAt')['field']('NOW()',_0xd118('0x5b'))[_0xd118('0xa7')](_0xd118('0xa8'))[_0xd118('0x44')](_0xd118('0xa9'))[_0xd118('0x44')](_0xd118('0xaa'),_0x365fb2[_0xd118('0xa4')][_0xd118('0xa5')]())[_0xd118('0x44')](_0xd118('0xab')))['toString']();}_0x30d4d2[_0xd118('0x84')](db[_0xd118('0x85')][_0xd118('0x38')](_0x39a77d));}return BPromise[_0xd118('0x93')](_0x30d4d2);}})[_0xd118('0x25')](function(){return _0x1484b2;})['then'](respondWithResult(_0x29aaa3,null))[_0xd118('0x4d')](handleError(_0x29aaa3,null));};exports[_0xd118('0xb0')]=function(_0x3ac367,_0x44e375,_0x36cc2b){return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x3ac367[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x44e375,null))[_0xd118('0x25')](function(_0x2d0988){if(_0x2d0988){return _0x2d0988['removeLists'](_0x3ac367[_0xd118('0x38')][_0xd118('0x7b')]);}})[_0xd118('0x25')](function(_0x283985){if(_0x283985){return db[_0xd118('0x5e')][_0xd118('0x26')]({'where':{'ListId':_0x3ac367[_0xd118('0x38')]['ids'],'VoiceQueueId':_0x3ac367['params']['id']}})[_0xd118('0x25')](function(){return _0x283985;});}})[_0xd118('0x25')](respondWithStatusCode(_0x44e375,null))['catch'](handleError(_0x44e375,null));};exports[_0xd118('0xb1')]=function(_0x519410,_0xeb1026,_0xb4784a){var _0x1edaf8={};var _0x25de46={};var _0x2848a4;var _0x4c2506;return db['VoiceQueue'][_0xd118('0x61')]({'where':{'id':_0x519410['params']['id']}})[_0xd118('0x25')](handleEntityNotFound(_0xeb1026,null))[_0xd118('0x25')](function(_0x28f0da){if(_0x28f0da){_0x2848a4=_0x28f0da;_0x25de46[_0xd118('0x37')]=_['keys'](db[_0xd118('0x97')][_0xd118('0x4b')]);_0x25de46[_0xd118('0x38')]=_[_0xd118('0x39')](_0x519410[_0xd118('0x38')]);_0x25de46[_0xd118('0x42')]=_[_0xd118('0x3a')](_0x25de46[_0xd118('0x37')],_0x25de46['query']);_0x1edaf8['attributes']=_[_0xd118('0x3a')](_0x25de46[_0xd118('0x37')],qs['fields'](_0x519410[_0xd118('0x38')][_0xd118('0x3b')]));_0x1edaf8[_0xd118('0x3c')]=_0x1edaf8['attributes']['length']?_0x1edaf8[_0xd118('0x3c')]:_0x25de46[_0xd118('0x37')];_0x1edaf8['order']=qs['sort'](_0x519410[_0xd118('0x38')][_0xd118('0x41')]);_0x1edaf8['where']=qs['filters'](_[_0xd118('0x43')](_0x519410[_0xd118('0x38')],_0x25de46[_0xd118('0x42')]));if(_0x519410[_0xd118('0x38')][_0xd118('0x2a')]){_0x1edaf8[_0xd118('0x44')]=_[_0xd118('0x45')](_0x1edaf8['where'],{'$or':_[_0xd118('0x2c')](_0x1edaf8[_0xd118('0x3c')],function(_0x5f401){var _0x1dcd1a={};_0x1dcd1a[_0x5f401]={'$like':'%'+_0x519410[_0xd118('0x38')][_0xd118('0x2a')]+'%'};return _0x1dcd1a;})});}_0x1edaf8=_[_0xd118('0x45')]({},_0x1edaf8,_0x519410[_0xd118('0x59')]);return _0x2848a4['getBlackLists'](_0x1edaf8);}})[_0xd118('0x25')](function(_0x26811e){if(_0x26811e){_0x4c2506=_0x26811e['length'];if(!_0x519410['query'][_0xd118('0x3e')](_0xd118('0x3f'))){_0x1edaf8[_0xd118('0x1f')]=qs[_0xd118('0x1f')](_0x519410[_0xd118('0x38')][_0xd118('0x1f')]);_0x1edaf8[_0xd118('0x20')]=qs[_0xd118('0x20')](_0x519410[_0xd118('0x38')][_0xd118('0x20')]);}return _0x2848a4[_0xd118('0xb1')](_0x1edaf8);}})[_0xd118('0x25')](function(_0x4dc313){if(_0x4dc313){return _0x4dc313?{'count':_0x4c2506,'rows':_0x4dc313}:null;}})[_0xd118('0x25')](respondWithResult(_0xeb1026,null))[_0xd118('0x4d')](handleError(_0xeb1026,null));};exports['addBlackLists']=function(_0x5cc075,_0x2c1868,_0x580c3a){var _0x3b043a,_0x3fa524;return db[_0xd118('0x34')][_0xd118('0x4c')]({'where':{'id':_0x5cc075['params']['id']}})['then'](handleEntityNotFound(_0x2c1868,null))[_0xd118('0x25')](function(_0x2feaeb){if(_0x2feaeb){_0x3fa524=_0x2feaeb;return _0x2feaeb['addBlackLists'](_0x5cc075[_0xd118('0x4f')][_0xd118('0x7b')],_[_0xd118('0x90')](_0x5cc075[_0xd118('0x4f')],[_0xd118('0x7b'),'id'])||{});}return null;})[_0xd118('0x99')](function(_0x26bb33){var _0x1074d0;_0x3b043a=_0x26bb33||[];var _0x44086d=[];if(_0x26bb33){for(var _0x43ed1a=0x0;_0x43ed1a<_0x26bb33[_0xd118('0x3d')];_0x43ed1a+=0x1){var _0x26dade=_0x26bb33[_0x43ed1a][_0xd118('0x51')]({'plain':!![]});_0x1074d0=squel[_0xd118('0x9c')]()[_0xd118('0x9d')](_0xd118('0xb2'))['fromQuery']([_0xd118('0x9f'),_0xd118('0xa3'),_0xd118('0xa6'),_0xd118('0x5f'),_0xd118('0x5a'),_0xd118('0x5b')],squel[_0xd118('0x7c')]()[_0xd118('0xa0')](_0xd118('0x9f'),'phone')[_0xd118('0xa0')]('id',_0xd118('0xa3'))[_0xd118('0xa0')](_0x26dade['CmListId'][_0xd118('0xa5')](),'ListId')[_0xd118('0xa0')](_0x5cc075[_0xd118('0x4a')]['id']['toString'](),_0xd118('0x5f'))[_0xd118('0xa0')](_0xd118('0xa1'),'createdAt')[_0xd118('0xa0')](_0xd118('0xa1'),_0xd118('0x5b'))[_0xd118('0xa7')]('cm_contacts')[_0xd118('0x44')](_0xd118('0xa9'))[_0xd118('0x44')](_0xd118('0xaa'),_0x26dade[_0xd118('0xa4')][_0xd118('0xa5')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xd118('0xa5')]();_0x44086d[_0xd118('0x84')](db['sequelize'][_0xd118('0x38')](_0x1074d0));}return BPromise['all'](_0x44086d);}})[_0xd118('0x25')](function(){return _0x3b043a;})[_0xd118('0x25')](respondWithResult(_0x2c1868,null))[_0xd118('0x4d')](handleError(_0x2c1868,null));};exports[_0xd118('0xb3')]=function(_0x782f72,_0x442b48,_0x9e08cd){return db[_0xd118('0x34')]['find']({'where':{'id':_0x782f72[_0xd118('0x4a')]['id']}})[_0xd118('0x25')](handleEntityNotFound(_0x442b48,null))[_0xd118('0x25')](function(_0x31f192){if(_0x31f192){return _0x31f192[_0xd118('0xb3')](_0x782f72[_0xd118('0x38')][_0xd118('0x7b')]);}})[_0xd118('0x25')](function(_0x30593d){if(_0x30593d){return db[_0xd118('0x65')][_0xd118('0x26')]({'where':{'ListId':_0x782f72['query']['ids'],'VoiceQueueId':_0x782f72['params']['id']}})[_0xd118('0x25')](function(){return _0x30593d;});}})[_0xd118('0x25')](respondWithStatusCode(_0x442b48,null))[_0xd118('0x4d')](handleError(_0x442b48,null));};
\ No newline at end of file
+var _0xd19b=['query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','create','body','user','role','outbound','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','getHoppers','findOne','CmHopper','nolimit','VoiceQueueId','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','flatMap','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueueRt','isNil','interface','format','voicePause','removeTeams','ids','team_has_voice_queues','join','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','isEmpty','removeAgents','emit','userVoiceQueue:remove','addAgents','spread','userVoiceQueue:save','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','cm_hopper','ContactId','ListId','select','phone','field','NOW()','scheduledAt','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','fromQuery','into','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','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','localhost','./voiceQueue.socket','register','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','ignore','value','includes','type','find','name','UserProfileResource','error','send','index','map','VoiceQueue','rawAttributes','fieldName','model'];(function(_0x382c73,_0x199cab){var _0x1dd0bf=function(_0x358747){while(--_0x358747){_0x382c73['push'](_0x382c73['shift']());}};_0x1dd0bf(++_0x199cab);}(_0xd19b,0x1e8));var _0xbd19=function(_0x118afa,_0x4bf0c1){_0x118afa=_0x118afa-0x0;var _0x167d76=_0xd19b[_0x118afa];return _0x167d76;};'use strict';var emlformat=require(_0xbd19('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbd19('0x1'));var jsonpatch=require(_0xbd19('0x2'));var rp=require(_0xbd19('0x3'));var moment=require(_0xbd19('0x4'));var BPromise=require(_0xbd19('0x5'));var Mustache=require(_0xbd19('0x6'));var util=require('util');var path=require('path');var sox=require(_0xbd19('0x7'));var csv=require('to-csv');var ejs=require(_0xbd19('0x8'));var fs=require('fs');var fs_extra=require(_0xbd19('0x9'));var _=require(_0xbd19('0xa'));var squel=require(_0xbd19('0xb'));var crypto=require(_0xbd19('0xc'));var jsforce=require(_0xbd19('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xbd19('0xe'));var querystring=require(_0xbd19('0xf'));var Papa=require(_0xbd19('0x10'));var Redis=require(_0xbd19('0x11'));var authService=require(_0xbd19('0x12'));var qs=require(_0xbd19('0x13'));var as=require(_0xbd19('0x14'));var hardwareService=require(_0xbd19('0x15'));var logger=require(_0xbd19('0x16'))(_0xbd19('0x17'));var utils=require(_0xbd19('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xbd19('0x19'));var db=require(_0xbd19('0x1a'))['db'];config[_0xbd19('0x1b')]=_['defaults'](config[_0xbd19('0x1b')],{'host':_0xbd19('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbd19('0x1b')]));require(_0xbd19('0x1d'))[_0xbd19('0x1e')](socket);function respondWithStatusCode(_0xfa566,_0x119d56){_0x119d56=_0x119d56||0xcc;return function(_0x2aa390){if(_0x2aa390){return _0xfa566[_0xbd19('0x1f')](_0x119d56);}return _0xfa566[_0xbd19('0x20')](_0x119d56)[_0xbd19('0x21')]();};}function respondWithResult(_0x31e904,_0x11164b){_0x11164b=_0x11164b||0xc8;return function(_0x50dcc4){if(_0x50dcc4){return _0x31e904[_0xbd19('0x20')](_0x11164b)[_0xbd19('0x22')](_0x50dcc4);}};}function respondWithFilteredResult(_0x465d1a,_0x4eb4a8){return function(_0x28f2ff){if(_0x28f2ff){var _0x4a969d=typeof _0x4eb4a8['offset']==='undefined'&&typeof _0x4eb4a8['limit']===_0xbd19('0x23');var _0x3a3bb7=_0x28f2ff[_0xbd19('0x24')];var _0x4598e4=_0x4a969d?0x0:_0x4eb4a8[_0xbd19('0x25')];var _0x9da8f1=_0x4a969d?_0x28f2ff[_0xbd19('0x24')]:_0x4eb4a8[_0xbd19('0x25')]+_0x4eb4a8['limit'];var _0x3e355a;if(_0x9da8f1>=_0x3a3bb7){_0x9da8f1=_0x3a3bb7;_0x3e355a=0xc8;}else{_0x3e355a=0xce;}_0x465d1a[_0xbd19('0x20')](_0x3e355a);return _0x465d1a[_0xbd19('0x26')](_0xbd19('0x27'),_0x4598e4+'-'+_0x9da8f1+'/'+_0x3a3bb7)[_0xbd19('0x22')](_0x28f2ff);}return null;};}function patchUpdates(_0x2c6004){return function(_0x437691){try{jsonpatch['apply'](_0x437691,_0x2c6004,!![]);}catch(_0x7c7d1a){return BPromise[_0xbd19('0x28')](_0x7c7d1a);}return _0x437691[_0xbd19('0x29')]();};}function saveUpdates(_0x4817db,_0x1b9429){return function(_0xbdfbb2){if(_0xbdfbb2){return _0xbdfbb2[_0xbd19('0x2a')](_0x4817db)[_0xbd19('0x2b')](function(_0x44bd0f){return _0x44bd0f;});}return null;};}function removeEntity(_0x1fb3cd,_0x4e8c9f){return function(_0x27911e){if(_0x27911e){return _0x27911e[_0xbd19('0x2c')]()['then'](function(){var _0x2dfa58=_0x27911e[_0xbd19('0x2d')]({'plain':!![]});var _0x3af10f=[{'name':_0xbd19('0x2e'),'value':_0xbd19('0x2f'),'ignore':![]},{'name':_0xbd19('0x30'),'value':'outbound','ignore':![]}];var _0x4cc87b=_(_0x3af10f)['filter'](_0xbd19('0x31'))['map'](_0xbd19('0x32'))[_0xbd19('0x32')]();if(_[_0xbd19('0x33')](_0x4cc87b,_0x2dfa58[_0xbd19('0x34')])){return;}var _0x533b09=_[_0xbd19('0x35')](_0x3af10f,[_0xbd19('0x32'),_0x2dfa58['type']])[_0xbd19('0x36')];return db[_0xbd19('0x37')][_0xbd19('0x2c')]({'where':{'type':_0x533b09,'resourceId':_0x2dfa58['id']}})[_0xbd19('0x2b')](function(){return _0x27911e;});})['then'](function(){_0x1fb3cd[_0xbd19('0x20')](0xcc)[_0xbd19('0x21')]();});}};}function handleEntityNotFound(_0x4cd851,_0x39bae6){return function(_0x190cf3){if(!_0x190cf3){_0x4cd851[_0xbd19('0x1f')](0x194);}return _0x190cf3;};}function handleError(_0x5c6dae,_0x1aee2d){_0x1aee2d=_0x1aee2d||0x1f4;return function(_0x53e63d){logger[_0xbd19('0x38')](_0x53e63d['stack']);if(_0x53e63d[_0xbd19('0x36')]){delete _0x53e63d[_0xbd19('0x36')];}_0x5c6dae[_0xbd19('0x20')](_0x1aee2d)[_0xbd19('0x39')](_0x53e63d);};}exports[_0xbd19('0x3a')]=function(_0x588585,_0x1d6701){var _0x19e6fc={},_0x2bc976={},_0x4039e2={'count':0x0,'rows':[]};var _0x1835db=_[_0xbd19('0x3b')](db[_0xbd19('0x3c')][_0xbd19('0x3d')],function(_0x25786e){return{'name':_0x25786e[_0xbd19('0x3e')],'type':_0x25786e[_0xbd19('0x34')]['key']};});_0x2bc976[_0xbd19('0x3f')]=_[_0xbd19('0x3b')](_0x1835db,'name');_0x2bc976[_0xbd19('0x40')]=_[_0xbd19('0x41')](_0x588585[_0xbd19('0x40')]);_0x2bc976[_0xbd19('0x42')]=_[_0xbd19('0x43')](_0x2bc976[_0xbd19('0x3f')],_0x2bc976[_0xbd19('0x40')]);_0x19e6fc[_0xbd19('0x44')]=_['intersection'](_0x2bc976[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x588585['query']['fields']));_0x19e6fc[_0xbd19('0x44')]=_0x19e6fc['attributes']['length']?_0x19e6fc['attributes']:_0x2bc976[_0xbd19('0x3f')];if(!_0x588585['query'][_0xbd19('0x46')]('nolimit')){_0x19e6fc[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x588585['query'][_0xbd19('0x47')]);_0x19e6fc[_0xbd19('0x25')]=qs[_0xbd19('0x25')](_0x588585[_0xbd19('0x40')][_0xbd19('0x25')]);}_0x19e6fc[_0xbd19('0x48')]=qs['sort'](_0x588585[_0xbd19('0x40')][_0xbd19('0x49')]);_0x19e6fc[_0xbd19('0x4a')]=qs[_0xbd19('0x42')](_[_0xbd19('0x4b')](_0x588585[_0xbd19('0x40')],_0x2bc976[_0xbd19('0x42')]),_0x1835db);if(_0x588585[_0xbd19('0x40')][_0xbd19('0x4c')]){_0x19e6fc['where']=_[_0xbd19('0x4d')](_0x19e6fc['where'],{'$or':_['map'](_0x1835db,function(_0x5206d1){if(_0x5206d1[_0xbd19('0x34')]!==_0xbd19('0x4e')){var _0xb1d031={};_0xb1d031[_0x5206d1[_0xbd19('0x36')]]={'$like':'%'+_0x588585[_0xbd19('0x40')][_0xbd19('0x4c')]+'%'};return _0xb1d031;}})});}_0x19e6fc=_['merge']({},_0x19e6fc,_0x588585[_0xbd19('0x4f')]);var _0x12a86b={'where':_0x19e6fc[_0xbd19('0x4a')]};return db[_0xbd19('0x3c')][_0xbd19('0x24')](_0x12a86b)['then'](function(_0x2e215c){_0x4039e2['count']=_0x2e215c;if(_0x588585[_0xbd19('0x40')][_0xbd19('0x50')]){_0x19e6fc['include']=[{'all':!![]}];}return db[_0xbd19('0x3c')][_0xbd19('0x51')](_0x19e6fc);})[_0xbd19('0x2b')](function(_0x2b25c4){_0x4039e2[_0xbd19('0x52')]=_0x2b25c4;return _0x4039e2;})['then'](respondWithFilteredResult(_0x1d6701,_0x19e6fc))[_0xbd19('0x53')](handleError(_0x1d6701,null));};exports[_0xbd19('0x54')]=function(_0x31d288,_0x5b52d2){var _0x5830fa={'raw':![],'where':{'id':_0x31d288[_0xbd19('0x55')]['id']}},_0x995ff9={};_0x995ff9['model']=_[_0xbd19('0x41')](db['VoiceQueue']['rawAttributes']);_0x995ff9[_0xbd19('0x40')]=_[_0xbd19('0x41')](_0x31d288[_0xbd19('0x40')]);_0x995ff9[_0xbd19('0x42')]=_[_0xbd19('0x43')](_0x995ff9[_0xbd19('0x3f')],_0x995ff9['query']);_0x5830fa[_0xbd19('0x44')]=_['intersection'](_0x995ff9[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x31d288[_0xbd19('0x40')][_0xbd19('0x45')]));_0x5830fa[_0xbd19('0x44')]=_0x5830fa['attributes'][_0xbd19('0x56')]?_0x5830fa[_0xbd19('0x44')]:_0x995ff9[_0xbd19('0x3f')];if(_0x31d288['query'][_0xbd19('0x50')]){_0x5830fa[_0xbd19('0x57')]=[{'all':!![]}];}_0x5830fa=_[_0xbd19('0x4d')]({},_0x5830fa,_0x31d288['options']);return db[_0xbd19('0x3c')]['find'](_0x5830fa)['then'](handleEntityNotFound(_0x5b52d2,null))['then'](respondWithResult(_0x5b52d2,null))['catch'](handleError(_0x5b52d2,null));};exports['create']=function(_0x351b57,_0x3a32ed){return db[_0xbd19('0x3c')][_0xbd19('0x58')](_0x351b57[_0xbd19('0x59')],{})[_0xbd19('0x2b')](function(_0x750159){var _0x32dcbe=_0x351b57[_0xbd19('0x5a')][_0xbd19('0x2d')]({'plain':!![]});if(!_0x32dcbe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x32dcbe[_0xbd19('0x5b')]==='user'){var _0x7af8a1=_0x750159[_0xbd19('0x2d')]({'plain':!![]});var _0x1cd823=[{'name':_0xbd19('0x2e'),'value':'inbound'},{'name':_0xbd19('0x30'),'value':_0xbd19('0x5c')}];var _0xda0cb2=_['find'](_0x1cd823,[_0xbd19('0x32'),_0x7af8a1[_0xbd19('0x34')]])[_0xbd19('0x36')];return db['UserProfileSection']['find']({'where':{'name':_0xda0cb2,'userProfileId':_0x32dcbe[_0xbd19('0x5d')]},'raw':!![]})['then'](function(_0x5cfb23){if(_0x5cfb23&&_0x5cfb23['autoAssociation']===0x0){return db['UserProfileResource'][_0xbd19('0x58')]({'name':_0x7af8a1[_0xbd19('0x36')],'resourceId':_0x7af8a1['id'],'type':_0x5cfb23[_0xbd19('0x36')],'sectionId':_0x5cfb23['id']},{})[_0xbd19('0x2b')](function(){return _0x750159;});}else{return _0x750159;}})[_0xbd19('0x53')](function(_0x31812a){logger['error'](_0xbd19('0x5e'),_0x31812a);throw _0x31812a;});}return _0x750159;})[_0xbd19('0x2b')](respondWithResult(_0x3a32ed,0xc9))[_0xbd19('0x53')](handleError(_0x3a32ed,null));};exports[_0xbd19('0x5f')]=function(_0x5cf3de,_0x1fb5f1){var _0xf04222={'where':{'id':_0x5cf3de[_0xbd19('0x55')]['id']}},_0x4565ea={};_0x4565ea[_0xbd19('0x3f')]=_['keys'](db[_0xbd19('0x3c')][_0xbd19('0x3d')]);_0xf04222[_0xbd19('0x44')]=_[_0xbd19('0x43')](_0x4565ea[_0xbd19('0x3f')],qs['fields'](_0x5cf3de[_0xbd19('0x40')][_0xbd19('0x45')]));_0xf04222[_0xbd19('0x44')]=_0xf04222[_0xbd19('0x44')]['length']?_0xf04222[_0xbd19('0x44')]:_0x4565ea[_0xbd19('0x3f')];if(_0x5cf3de[_0xbd19('0x40')][_0xbd19('0x50')]){_0xf04222['include']=[{'all':!![]}];}_0xf04222=_[_0xbd19('0x4d')]({},_0xf04222,_0x5cf3de[_0xbd19('0x4f')]);return db[_0xbd19('0x3c')][_0xbd19('0x35')](_0xf04222)[_0xbd19('0x2b')](handleEntityNotFound(_0x1fb5f1,null))[_0xbd19('0x2b')](function(_0x1f3009){if(_0x1f3009){var _0x1b111b=_0x1f3009[_0xbd19('0x2d')]({'plain':!![]});_0x1b111b=qs[_0xbd19('0x60')](_0x1b111b,['id',_0xbd19('0x61'),'updatedAt']);_0x5cf3de[_0xbd19('0x59')]=_[_0xbd19('0x60')](_0x5cf3de[_0xbd19('0x59')],['id','createdAt',_0xbd19('0x62')]);return db[_0xbd19('0x3c')][_0xbd19('0x58')](_['merge'](_0x1b111b,_0x5cf3de[_0xbd19('0x59')]),{'include':_0x5cf3de[_0xbd19('0x40')][_0xbd19('0x50')]?[{'all':!![]}]:undefined})[_0xbd19('0x2b')](function(_0x76b614){var _0x1e7820=_0x5cf3de[_0xbd19('0x5a')][_0xbd19('0x2d')]({'plain':!![]});if(!_0x1e7820)throw new Error(_0xbd19('0x63'));if(_0x1e7820[_0xbd19('0x5b')]===_0xbd19('0x5a')){var _0x507aee=_0x76b614[_0xbd19('0x2d')]({'plain':!![]});var _0x3bbb04=[{'name':_0xbd19('0x2e'),'value':_0xbd19('0x2f')},{'name':'QueueCampaigns','value':_0xbd19('0x5c')}];var _0x36b617=_[_0xbd19('0x35')](_0x3bbb04,[_0xbd19('0x32'),_0x507aee['type']])['name'];return db['UserProfileSection'][_0xbd19('0x35')]({'where':{'name':_0x36b617,'userProfileId':_0x1e7820[_0xbd19('0x5d')]},'raw':!![]})[_0xbd19('0x2b')](function(_0x34314a){if(_0x34314a&&_0x34314a[_0xbd19('0x64')]===0x0){return db[_0xbd19('0x37')]['create']({'name':_0x507aee[_0xbd19('0x36')],'resourceId':_0x507aee['id'],'type':_0x34314a['name'],'sectionId':_0x34314a['id']},{})[_0xbd19('0x2b')](function(){return _0x76b614;});}else{return _0x76b614;}})[_0xbd19('0x53')](function(_0x3eeb7a){logger[_0xbd19('0x38')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3eeb7a);throw _0x3eeb7a;});}return _0x76b614;});}})['then'](respondWithResult(_0x1fb5f1,0xc9))[_0xbd19('0x53')](handleError(_0x1fb5f1,null));};exports[_0xbd19('0x2a')]=function(_0x3b45f5,_0x59c246){if(_0x3b45f5[_0xbd19('0x59')]['id']){delete _0x3b45f5['body']['id'];}return db[_0xbd19('0x3c')]['find']({'where':{'id':_0x3b45f5[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x59c246,null))[_0xbd19('0x2b')](saveUpdates(_0x3b45f5[_0xbd19('0x59')],null))['then'](respondWithResult(_0x59c246,null))['catch'](handleError(_0x59c246,null));};exports[_0xbd19('0x2c')]=function(_0x2b7274,_0x17b2ea){return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x2b7274['params']['id']}})['then'](handleEntityNotFound(_0x17b2ea,null))[_0xbd19('0x2b')](removeEntity(_0x17b2ea,null))[_0xbd19('0x53')](handleError(_0x17b2ea,null));};exports[_0xbd19('0x65')]=function(_0x37925d,_0x19fba8,_0x8488d5){var _0x494b62={'raw':![],'where':{}};var _0x49b98f={};var _0x16e4e2={'count':0x0,'rows':[]};return db[_0xbd19('0x3c')][_0xbd19('0x66')]({'where':{'id':_0x37925d[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x19fba8,null))[_0xbd19('0x2b')](function(_0x8d5bfa){if(_0x8d5bfa){_0x49b98f[_0xbd19('0x3f')]=_['keys'](db[_0xbd19('0x67')][_0xbd19('0x3d')]);_0x49b98f['query']=_[_0xbd19('0x41')](_0x37925d[_0xbd19('0x40')]);_0x49b98f['filters']=_[_0xbd19('0x43')](_0x49b98f[_0xbd19('0x3f')],_0x49b98f[_0xbd19('0x40')]);_0x494b62['attributes']=_[_0xbd19('0x43')](_0x49b98f[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x37925d[_0xbd19('0x40')][_0xbd19('0x45')]));_0x494b62[_0xbd19('0x44')]=_0x494b62[_0xbd19('0x44')][_0xbd19('0x56')]?_0x494b62[_0xbd19('0x44')]:_0x49b98f[_0xbd19('0x3f')];if(!_0x37925d['query']['hasOwnProperty'](_0xbd19('0x68'))){_0x494b62[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x37925d[_0xbd19('0x40')][_0xbd19('0x47')]);_0x494b62[_0xbd19('0x25')]=qs[_0xbd19('0x25')](_0x37925d[_0xbd19('0x40')][_0xbd19('0x25')]);}_0x494b62[_0xbd19('0x48')]=qs[_0xbd19('0x49')](_0x37925d[_0xbd19('0x40')][_0xbd19('0x49')]);_0x494b62['where']=qs[_0xbd19('0x42')](_[_0xbd19('0x4b')](_0x37925d[_0xbd19('0x40')],_0x49b98f[_0xbd19('0x42')]));_0x494b62[_0xbd19('0x4a')][_0xbd19('0x69')]=_0x8d5bfa['id'];if(_0x37925d[_0xbd19('0x40')][_0xbd19('0x4c')]){_0x494b62[_0xbd19('0x4a')]=_['merge'](_0x494b62['where'],{'$or':_['map'](_0x494b62[_0xbd19('0x44')],function(_0x15ab6c){var _0x59d102={};_0x59d102[_0x15ab6c]={'$like':'%'+_0x37925d[_0xbd19('0x40')]['filter']+'%'};return _0x59d102;})});}_0x494b62=_[_0xbd19('0x4d')]({},_0x494b62,_0x37925d[_0xbd19('0x4f')]);return db[_0xbd19('0x67')][_0xbd19('0x24')]({'where':_0x494b62['where']})[_0xbd19('0x2b')](function(_0x212ad8){_0x16e4e2[_0xbd19('0x24')]=_0x212ad8;if(_0x37925d[_0xbd19('0x40')][_0xbd19('0x50')]){_0x494b62[_0xbd19('0x57')]=[{'all':!![]}];}return db[_0xbd19('0x67')]['findAll'](_0x494b62);})['then'](function(_0x10f596){_0x16e4e2[_0xbd19('0x52')]=_0x10f596;return _0x16e4e2;});}})[_0xbd19('0x2b')](respondWithFilteredResult(_0x19fba8,_0x494b62))[_0xbd19('0x53')](handleError(_0x19fba8,null));};exports[_0xbd19('0x6a')]=function(_0x32ae2e,_0x39f214,_0x461f41){var _0x123fa2={'raw':!![],'where':{}};var _0x1c11fd={};var _0x3f247f={'count':0x0,'rows':[]};return db[_0xbd19('0x3c')][_0xbd19('0x66')]({'where':{'id':_0x32ae2e['params']['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x39f214,null))['then'](function(_0x463413){if(_0x463413){_0x1c11fd[_0xbd19('0x3f')]=_[_0xbd19('0x41')](db['CmHopperHistory'][_0xbd19('0x3d')]);_0x1c11fd[_0xbd19('0x40')]=_['keys'](_0x32ae2e[_0xbd19('0x40')]);_0x1c11fd[_0xbd19('0x42')]=_[_0xbd19('0x43')](_0x1c11fd[_0xbd19('0x3f')],_0x1c11fd[_0xbd19('0x40')]);_0x123fa2[_0xbd19('0x44')]=_['intersection'](_0x1c11fd['model'],qs['fields'](_0x32ae2e[_0xbd19('0x40')][_0xbd19('0x45')]));_0x123fa2[_0xbd19('0x44')]=_0x123fa2['attributes'][_0xbd19('0x56')]?_0x123fa2[_0xbd19('0x44')]:_0x1c11fd[_0xbd19('0x3f')];if(!_0x32ae2e['query'][_0xbd19('0x46')](_0xbd19('0x68'))){_0x123fa2['limit']=qs['limit'](_0x32ae2e[_0xbd19('0x40')][_0xbd19('0x47')]);_0x123fa2['offset']=qs[_0xbd19('0x25')](_0x32ae2e['query']['offset']);}_0x123fa2['order']=qs[_0xbd19('0x49')](_0x32ae2e['query'][_0xbd19('0x49')]);_0x123fa2['where']=qs[_0xbd19('0x42')](_[_0xbd19('0x4b')](_0x32ae2e[_0xbd19('0x40')],_0x1c11fd['filters']));_0x123fa2['where'][_0xbd19('0x69')]=_0x463413['id'];if(_0x32ae2e[_0xbd19('0x40')][_0xbd19('0x4c')]){_0x123fa2['where']=_[_0xbd19('0x4d')](_0x123fa2[_0xbd19('0x4a')],{'$or':_['map'](_0x123fa2[_0xbd19('0x44')],function(_0x12df89){var _0x4da9aa={};_0x4da9aa[_0x12df89]={'$like':'%'+_0x32ae2e[_0xbd19('0x40')]['filter']+'%'};return _0x4da9aa;})});}_0x123fa2=_[_0xbd19('0x4d')]({},_0x123fa2,_0x32ae2e['options']);return db[_0xbd19('0x6b')][_0xbd19('0x24')]({'where':_0x123fa2[_0xbd19('0x4a')]})[_0xbd19('0x2b')](function(_0x5def94){_0x3f247f['count']=_0x5def94;if(_0x32ae2e[_0xbd19('0x40')][_0xbd19('0x50')]){_0x123fa2[_0xbd19('0x57')]=[{'all':!![]}];}return db[_0xbd19('0x6b')][_0xbd19('0x51')](_0x123fa2);})['then'](function(_0x4aa935){_0x3f247f[_0xbd19('0x52')]=_0x4aa935;return _0x3f247f;});}})['then'](respondWithFilteredResult(_0x39f214,_0x123fa2))[_0xbd19('0x53')](handleError(_0x39f214,null));};exports['getHopperFinals']=function(_0x37867f,_0x5bbb53,_0x194618){var _0x51d54a={'raw':!![],'where':{}};var _0xce3866={};var _0x18c204={'count':0x0,'rows':[]};return db[_0xbd19('0x3c')]['findOne']({'where':{'id':_0x37867f[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x5bbb53,null))['then'](function(_0x6a9c0b){if(_0x6a9c0b){_0xce3866[_0xbd19('0x3f')]=_[_0xbd19('0x41')](db[_0xbd19('0x6c')][_0xbd19('0x3d')]);_0xce3866[_0xbd19('0x40')]=_[_0xbd19('0x41')](_0x37867f['query']);_0xce3866[_0xbd19('0x42')]=_[_0xbd19('0x43')](_0xce3866[_0xbd19('0x3f')],_0xce3866['query']);_0x51d54a[_0xbd19('0x44')]=_[_0xbd19('0x43')](_0xce3866[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x37867f[_0xbd19('0x40')][_0xbd19('0x45')]));_0x51d54a['attributes']=_0x51d54a[_0xbd19('0x44')][_0xbd19('0x56')]?_0x51d54a[_0xbd19('0x44')]:_0xce3866[_0xbd19('0x3f')];if(!_0x37867f[_0xbd19('0x40')][_0xbd19('0x46')](_0xbd19('0x68'))){_0x51d54a[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x37867f['query'][_0xbd19('0x47')]);_0x51d54a[_0xbd19('0x25')]=qs[_0xbd19('0x25')](_0x37867f[_0xbd19('0x40')][_0xbd19('0x25')]);}_0x51d54a['order']=qs[_0xbd19('0x49')](_0x37867f[_0xbd19('0x40')][_0xbd19('0x49')]);_0x51d54a['where']=qs['filters'](_['pick'](_0x37867f[_0xbd19('0x40')],_0xce3866[_0xbd19('0x42')]));_0x51d54a[_0xbd19('0x4a')][_0xbd19('0x69')]=_0x6a9c0b['id'];if(_0x37867f['query'][_0xbd19('0x4c')]){_0x51d54a['where']=_[_0xbd19('0x4d')](_0x51d54a['where'],{'$or':_[_0xbd19('0x3b')](_0x51d54a[_0xbd19('0x44')],function(_0x26ae70){var _0x1b9a04={};_0x1b9a04[_0x26ae70]={'$like':'%'+_0x37867f[_0xbd19('0x40')][_0xbd19('0x4c')]+'%'};return _0x1b9a04;})});}_0x51d54a=_[_0xbd19('0x4d')]({},_0x51d54a,_0x37867f[_0xbd19('0x4f')]);return db[_0xbd19('0x6c')][_0xbd19('0x24')]({'where':_0x51d54a[_0xbd19('0x4a')]})[_0xbd19('0x2b')](function(_0x7d26eb){_0x18c204[_0xbd19('0x24')]=_0x7d26eb;if(_0x37867f[_0xbd19('0x40')][_0xbd19('0x50')]){_0x51d54a['include']=[{'all':!![]}];}return db[_0xbd19('0x6c')][_0xbd19('0x51')](_0x51d54a);})[_0xbd19('0x2b')](function(_0x3b2121){_0x18c204[_0xbd19('0x52')]=_0x3b2121;return _0x18c204;});}})['then'](respondWithFilteredResult(_0x5bbb53,_0x51d54a))[_0xbd19('0x53')](handleError(_0x5bbb53,null));};exports[_0xbd19('0x6d')]=function(_0x4653eb,_0x433f0b,_0x4a0efd){var _0x53fb4d={'raw':!![],'where':{}};var _0x35539f={};var _0x518c3b={'count':0x0,'rows':[]};return db[_0xbd19('0x3c')][_0xbd19('0x66')]({'where':{'id':_0x4653eb[_0xbd19('0x55')]['id']}})['then'](handleEntityNotFound(_0x433f0b,null))[_0xbd19('0x2b')](function(_0x5a433d){if(_0x5a433d){_0x35539f[_0xbd19('0x3f')]=_[_0xbd19('0x41')](db['CmHopperBlack'][_0xbd19('0x3d')]);_0x35539f[_0xbd19('0x40')]=_[_0xbd19('0x41')](_0x4653eb[_0xbd19('0x40')]);_0x35539f[_0xbd19('0x42')]=_['intersection'](_0x35539f[_0xbd19('0x3f')],_0x35539f[_0xbd19('0x40')]);_0x53fb4d[_0xbd19('0x44')]=_[_0xbd19('0x43')](_0x35539f[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x4653eb[_0xbd19('0x40')][_0xbd19('0x45')]));_0x53fb4d[_0xbd19('0x44')]=_0x53fb4d[_0xbd19('0x44')][_0xbd19('0x56')]?_0x53fb4d[_0xbd19('0x44')]:_0x35539f[_0xbd19('0x3f')];if(!_0x4653eb['query']['hasOwnProperty'](_0xbd19('0x68'))){_0x53fb4d['limit']=qs[_0xbd19('0x47')](_0x4653eb[_0xbd19('0x40')]['limit']);_0x53fb4d[_0xbd19('0x25')]=qs[_0xbd19('0x25')](_0x4653eb[_0xbd19('0x40')][_0xbd19('0x25')]);}_0x53fb4d['order']=qs['sort'](_0x4653eb[_0xbd19('0x40')][_0xbd19('0x49')]);_0x53fb4d[_0xbd19('0x4a')]=qs[_0xbd19('0x42')](_[_0xbd19('0x4b')](_0x4653eb['query'],_0x35539f[_0xbd19('0x42')]));_0x53fb4d[_0xbd19('0x4a')]['VoiceQueueId']=_0x5a433d['id'];if(_0x4653eb[_0xbd19('0x40')]['filter']){_0x53fb4d[_0xbd19('0x4a')]=_[_0xbd19('0x4d')](_0x53fb4d[_0xbd19('0x4a')],{'$or':_[_0xbd19('0x3b')](_0x53fb4d[_0xbd19('0x44')],function(_0x49c2ab){var _0x3c1d70={};_0x3c1d70[_0x49c2ab]={'$like':'%'+_0x4653eb['query'][_0xbd19('0x4c')]+'%'};return _0x3c1d70;})});}_0x53fb4d=_[_0xbd19('0x4d')]({},_0x53fb4d,_0x4653eb['options']);return db[_0xbd19('0x6e')][_0xbd19('0x24')]({'where':_0x53fb4d['where']})[_0xbd19('0x2b')](function(_0x14dc49){_0x518c3b[_0xbd19('0x24')]=_0x14dc49;if(_0x4653eb['query']['includeAll']){_0x53fb4d['include']=[{'all':!![]}];}return db[_0xbd19('0x6e')][_0xbd19('0x51')](_0x53fb4d);})[_0xbd19('0x2b')](function(_0x5f1da7){_0x518c3b['rows']=_0x5f1da7;return _0x518c3b;});}})[_0xbd19('0x2b')](respondWithFilteredResult(_0x433f0b,_0x53fb4d))[_0xbd19('0x53')](handleError(_0x433f0b,null));};exports[_0xbd19('0x6f')]=function(_0x139492,_0x33344b,_0xa21735){var _0x4017c7={};var _0x322675={};var _0xfb12a5;var _0x1de580;return db[_0xbd19('0x3c')]['findOne']({'where':{'id':_0x139492[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x33344b,null))[_0xbd19('0x2b')](function(_0x3824c8){if(_0x3824c8){_0xfb12a5=_0x3824c8;_0x322675[_0xbd19('0x3f')]=_[_0xbd19('0x41')](db[_0xbd19('0x70')][_0xbd19('0x3d')]);_0x322675[_0xbd19('0x40')]=_['keys'](_0x139492[_0xbd19('0x40')]);_0x322675['filters']=_[_0xbd19('0x43')](_0x322675[_0xbd19('0x3f')],_0x322675[_0xbd19('0x40')]);_0x4017c7[_0xbd19('0x44')]=_[_0xbd19('0x43')](_0x322675['model'],qs[_0xbd19('0x45')](_0x139492['query'][_0xbd19('0x45')]));_0x4017c7['attributes']=_0x4017c7['attributes'][_0xbd19('0x56')]?_0x4017c7['attributes']:_0x322675['model'];_0x4017c7[_0xbd19('0x48')]=qs[_0xbd19('0x49')](_0x139492[_0xbd19('0x40')][_0xbd19('0x49')]);_0x4017c7['where']=qs['filters'](_[_0xbd19('0x4b')](_0x139492['query'],_0x322675[_0xbd19('0x42')]));if(_0x139492[_0xbd19('0x40')]['filter']){_0x4017c7['where']=_[_0xbd19('0x4d')](_0x4017c7[_0xbd19('0x4a')],{'$or':_[_0xbd19('0x3b')](_0x4017c7[_0xbd19('0x44')],function(_0x22e66f){var _0x5d5259={};_0x5d5259[_0x22e66f]={'$like':'%'+_0x139492[_0xbd19('0x40')][_0xbd19('0x4c')]+'%'};return _0x5d5259;})});}_0x4017c7=_[_0xbd19('0x4d')]({},_0x4017c7,_0x139492[_0xbd19('0x4f')]);return _0xfb12a5['getTeams'](_0x4017c7);}})[_0xbd19('0x2b')](function(_0x7e0129){if(_0x7e0129){_0x1de580=_0x7e0129[_0xbd19('0x56')];if(!_0x139492[_0xbd19('0x40')][_0xbd19('0x46')](_0xbd19('0x68'))){_0x4017c7[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x139492[_0xbd19('0x40')][_0xbd19('0x47')]);_0x4017c7[_0xbd19('0x25')]=qs[_0xbd19('0x25')](_0x139492[_0xbd19('0x40')]['offset']);}return _0xfb12a5['getTeams'](_0x4017c7);}})[_0xbd19('0x2b')](function(_0x13c133){if(_0x13c133){return _0x13c133?{'count':_0x1de580,'rows':_0x13c133}:null;}})['then'](respondWithResult(_0x33344b,null))[_0xbd19('0x53')](handleError(_0x33344b,null));};exports[_0xbd19('0x71')]=function(_0x13fd8d,_0x3d22b4,_0x230ad7){var _0x1e34ae=_0x13fd8d[_0xbd19('0x59')][_0xbd19('0x72')];var _0x3a66bd=_[_0xbd19('0x3b')](_0x1e34ae,'id');return db[_0xbd19('0x70')][_0xbd19('0x51')]({'where':{'id':_0x3a66bd},'attributes':['id'],'include':[{'model':db[_0xbd19('0x73')],'as':_0xbd19('0x74'),'attributes':['id',_0xbd19('0x36'),_0xbd19('0x75'),'voicePause','interface'],'raw':!![]}]})[_0xbd19('0x2b')](function(_0x2cc61c){if(_0x2cc61c){var _0x2c1494=_[_0xbd19('0x76')](_0x2cc61c,function(_0x576729){var _0x14cd85=_0x576729['get']({'plain':!![]});_0x14cd85[_0xbd19('0x74')][_0xbd19('0x77')](function(_0x1b2155){_0x1b2155['penalty']=_[_0xbd19('0x35')](_0x1e34ae,{'id':_0x14cd85['id']})[_0xbd19('0x78')];});return _0x14cd85[_0xbd19('0x74')];});return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x13fd8d[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](function(_0x561dae){return db[_0xbd19('0x79')][_0xbd19('0x7a')](function(_0x22e80e){return _0x561dae['addTeams'](_0x3a66bd,{'transaction':_0x22e80e})[_0xbd19('0x2b')](function(){return BPromise[_0xbd19('0x7b')](_0x1e34ae,function(_0x4df1dc){return db[_0xbd19('0x7c')][_0xbd19('0x7d')]({'TeamId':_0x4df1dc['id'],'VoiceQueueId':_0x13fd8d[_0xbd19('0x55')]['id'],'penalty':_0x4df1dc[_0xbd19('0x78')]},{'transaction':_0x22e80e});});})[_0xbd19('0x2b')](function(){return BPromise['each'](_0x2c1494,function(_0x2733dd){return db['UserVoiceQueue']['findOrCreate']({'where':{'UserId':_0x2733dd['id'],'VoiceQueueId':_0x13fd8d[_0xbd19('0x55')]['id']},'defaults':{'penalty':_0x2733dd[_0xbd19('0x78')]},'transaction':_0x22e80e});});})['then'](function(){return BPromise['each'](_[_0xbd19('0x4c')](_0x2c1494,{'online':!![]}),function(_0x4d7a5f){return db[_0xbd19('0x7e')][_0xbd19('0x7d')]({'membername':_0x4d7a5f['name'],'UserId':_0x4d7a5f['id'],'queue_name':_0x561dae[_0xbd19('0x36')],'VoiceQueueId':_0x561dae['id'],'interface':_[_0xbd19('0x7f')](_0x4d7a5f[_0xbd19('0x80')])?util[_0xbd19('0x81')]('SIP/%s',_0x4d7a5f['name']):_0x4d7a5f['interface'],'paused':_0x4d7a5f[_0xbd19('0x82')]||![],'penalty':_0x4d7a5f['penalty']},{'transaction':_0x22e80e});});})[_0xbd19('0x2b')](function(){_0x2c1494[_0xbd19('0x77')](function(_0x1442bc){socket['emit']('userVoiceQueue:save',{'UserId':_0x1442bc['id'],'VoiceQueueId':_0x561dae['id']});});});});});}})[_0xbd19('0x2b')](respondWithStatusCode(_0x3d22b4,null))['catch'](handleError(_0x3d22b4,null));};exports[_0xbd19('0x83')]=function(_0x122133,_0x2ab892,_0x3f1bca){return db[_0xbd19('0x70')][_0xbd19('0x51')]({'where':{'id':_0x122133[_0xbd19('0x40')][_0xbd19('0x84')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xbd19('0x74'),'attributes':['id'],'raw':!![]}]})[_0xbd19('0x2b')](handleEntityNotFound(_0x2ab892,null))[_0xbd19('0x2b')](function(_0x3a25c7){var _0x976b92=_[_0xbd19('0x3b')](_0x3a25c7,'id');var _0x4fc26c=[];var _0x5a3227=[];var _0xebb55c=squel['select']();_0xebb55c['field']('tq.TeamId')['from'](_0xbd19('0x85'),'tq')[_0xbd19('0x86')]('user_has_teams','ut',_0xbd19('0x87'))[_0xbd19('0x4a')](_0xbd19('0x88'),_0x122133[_0xbd19('0x55')]['id']);for(var _0x28a8de=0x0;_0x28a8de<_0x3a25c7[_0xbd19('0x56')];_0x28a8de+=0x1){let _0x2991be=_0x3a25c7[_0x28a8de];for(var _0x486b65=0x0;_0x486b65<_0x2991be['Agents']['length'];_0x486b65+=0x1){let _0x2ea418=_0x2991be[_0xbd19('0x74')][_0x486b65];var _0x317698=_0xebb55c[_0xbd19('0x5f')]();_0x317698[_0xbd19('0x4a')](_0xbd19('0x89'),_0x2ea418['id']);_0x5a3227[_0xbd19('0x8a')](db[_0xbd19('0x79')][_0xbd19('0x40')](_0x317698[_0xbd19('0x8b')](),{'type':db[_0xbd19('0x79')][_0xbd19('0x8c')][_0xbd19('0x8d')]})[_0xbd19('0x2b')](function(_0x442eec){if(_0x442eec[_0xbd19('0x56')]===0x1){return _0x2ea418['id'];}else{var _0x2d7423=_[_0xbd19('0x8e')](_[_0xbd19('0x3b')](_0x442eec,_0xbd19('0x8f')),function(_0x2fd7de){return _['includes'](_0x976b92,_0x2fd7de);});if(_0x2d7423){return _0x2ea418['id'];}}}));}}return BPromise[_0xbd19('0x90')](_0x5a3227)[_0xbd19('0x2b')](function(_0x23ead1){_0x4fc26c=_(_0x4fc26c)['union'](_0x23ead1)['compact']()['value']();return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x122133[_0xbd19('0x55')]['id']}})['then'](function(_0x469bcc){return db['sequelize'][_0xbd19('0x7a')](function(_0x56c203){return _0x469bcc[_0xbd19('0x83')](_0x122133[_0xbd19('0x40')][_0xbd19('0x84')],{'transaction':_0x56c203})[_0xbd19('0x2b')](function(){if(!_[_0xbd19('0x91')](_0x4fc26c)){return _0x469bcc[_0xbd19('0x92')](_0x4fc26c,{'transaction':_0x56c203})[_0xbd19('0x2b')](function(){return db[_0xbd19('0x7e')]['destroy']({'where':{'VoiceQueueId':_0x122133[_0xbd19('0x55')]['id'],'UserId':_0x4fc26c},'transaction':_0x56c203});});}})[_0xbd19('0x2b')](function(){_0x4fc26c[_0xbd19('0x77')](function(_0x62e281){socket[_0xbd19('0x93')](_0xbd19('0x94'),{'UserId':_0x62e281,'VoiceQueueId':_0x469bcc['id']});});});});});});})[_0xbd19('0x2b')](respondWithStatusCode(_0x2ab892,null))[_0xbd19('0x53')](handleError(_0x2ab892,null));};exports['addAgents']=function(_0x347d02,_0x694c10,_0x579eaa){var _0x1a2187,_0x4989f9;return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x347d02[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x694c10,null))[_0xbd19('0x2b')](function(_0xbb327a){if(_0xbb327a){_0x4989f9=_0xbb327a;return _0xbb327a[_0xbd19('0x95')](_0x347d02[_0xbd19('0x59')][_0xbd19('0x84')],_['omit'](_0x347d02[_0xbd19('0x59')],[_0xbd19('0x84'),'id'])||{})[_0xbd19('0x96')](function(_0x30364e){for(var _0x37494b=0x0;_0x37494b<_0x347d02[_0xbd19('0x59')][_0xbd19('0x84')][_0xbd19('0x56')];_0x37494b+=0x1){socket[_0xbd19('0x93')](_0xbd19('0x97'),{'UserId':Number(_0x347d02['body'][_0xbd19('0x84')][_0x37494b]),'VoiceQueueId':Number(_0x347d02[_0xbd19('0x55')]['id'])});}return _0x30364e;});}})[_0xbd19('0x2b')](function(_0x1388d0){_0x1a2187=_0x1388d0||[];if(_0x4989f9){return db[_0xbd19('0x73')][_0xbd19('0x51')]({'where':{'id':_0x347d02[_0xbd19('0x59')][_0xbd19('0x84')]},'attributes':['id',_0xbd19('0x36'),_0xbd19('0x75'),_0xbd19('0x82'),_0xbd19('0x80')],'raw':!![]});}})[_0xbd19('0x2b')](function(_0x2a2a1b){if(!_[_0xbd19('0x91')](_0x2a2a1b)){var _0x20ebe8=[];for(var _0x32c9ea=0x0;_0x32c9ea<_0x2a2a1b[_0xbd19('0x56')];_0x32c9ea++){if(_0x2a2a1b[_0x32c9ea][_0xbd19('0x75')]){_0x20ebe8[_0xbd19('0x8a')](db[_0xbd19('0x7e')]['upsert']({'membername':_0x2a2a1b[_0x32c9ea][_0xbd19('0x36')],'UserId':_0x2a2a1b[_0x32c9ea]['id'],'queue_name':_0x4989f9['name'],'VoiceQueueId':_0x4989f9['id'],'interface':_[_0xbd19('0x7f')](_0x2a2a1b[_0x32c9ea][_0xbd19('0x80')])?util[_0xbd19('0x81')]('SIP/%s',_0x2a2a1b[_0x32c9ea]['name']):_0x2a2a1b[_0x32c9ea]['interface'],'paused':_0x2a2a1b[_0x32c9ea]['voicePause']||![],'penalty':_0x347d02['body'][_0xbd19('0x78')]||0x0}));}}return BPromise['all'](_0x20ebe8);}})[_0xbd19('0x2b')](function(){return _0x1a2187;})['then'](respondWithResult(_0x694c10,null))[_0xbd19('0x53')](handleError(_0x694c10,null));};exports[_0xbd19('0x92')]=function(_0x516958,_0x11ce68,_0x1eb3fe){return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x516958['params']['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x11ce68,null))[_0xbd19('0x2b')](function(_0x2f3b5f){if(_0x2f3b5f){return _0x2f3b5f[_0xbd19('0x92')](_0x516958[_0xbd19('0x40')]['ids'])[_0xbd19('0x2b')](function(){if(_['isArray'](_0x516958[_0xbd19('0x40')][_0xbd19('0x84')])){for(var _0x2a2bfb=0x0;_0x2a2bfb<_0x516958[_0xbd19('0x40')][_0xbd19('0x84')][_0xbd19('0x56')];_0x2a2bfb+=0x1){socket[_0xbd19('0x93')]('userVoiceQueue:remove',{'UserId':Number(_0x516958['query'][_0xbd19('0x84')][_0x2a2bfb]),'VoiceQueueId':Number(_0x516958[_0xbd19('0x55')]['id'])});}}else{socket[_0xbd19('0x93')](_0xbd19('0x94'),{'UserId':Number(_0x516958[_0xbd19('0x40')][_0xbd19('0x84')]),'VoiceQueueId':Number(_0x516958[_0xbd19('0x55')]['id'])});}});}})['then'](function(_0xf9c57f){return db[_0xbd19('0x7e')]['destroy']({'where':{'VoiceQueueId':_0x516958['params']['id'],'UserId':_0x516958['query'][_0xbd19('0x84')]}})[_0xbd19('0x2b')](function(){return _0xf9c57f;});})[_0xbd19('0x2b')](respondWithStatusCode(_0x11ce68,null))[_0xbd19('0x53')](handleError(_0x11ce68,null));};exports[_0xbd19('0x98')]=function(_0x1fd5e1,_0x3112ca,_0xc5e6c4){var _0x207bde={};var _0x35e3ad={};var _0x431008;var _0x2696b2;return db[_0xbd19('0x3c')][_0xbd19('0x66')]({'where':{'id':_0x1fd5e1[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x3112ca,null))[_0xbd19('0x2b')](function(_0x5cfb30){if(_0x5cfb30){_0x431008=_0x5cfb30;_0x35e3ad[_0xbd19('0x3f')]=_['keys'](db[_0xbd19('0x73')][_0xbd19('0x3d')]);_0x35e3ad[_0xbd19('0x40')]=_['keys'](_0x1fd5e1[_0xbd19('0x40')]);_0x35e3ad[_0xbd19('0x42')]=_[_0xbd19('0x43')](_0x35e3ad[_0xbd19('0x3f')],_0x35e3ad[_0xbd19('0x40')]);_0x207bde[_0xbd19('0x44')]=_['intersection'](_0x35e3ad[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x1fd5e1['query'][_0xbd19('0x45')]));_0x207bde[_0xbd19('0x44')]=_0x207bde[_0xbd19('0x44')][_0xbd19('0x56')]?_0x207bde[_0xbd19('0x44')]:_0x35e3ad[_0xbd19('0x3f')];_0x207bde[_0xbd19('0x48')]=qs[_0xbd19('0x49')](_0x1fd5e1[_0xbd19('0x40')][_0xbd19('0x49')]);_0x207bde['where']=qs[_0xbd19('0x42')](_[_0xbd19('0x4b')](_0x1fd5e1[_0xbd19('0x40')],_0x35e3ad['filters']));if(_0x1fd5e1['query'][_0xbd19('0x4c')]){_0x207bde[_0xbd19('0x4a')]=_['merge'](_0x207bde[_0xbd19('0x4a')],{'$or':_['map'](_0x207bde['attributes'],function(_0x413ab8){var _0x4dc8bb={};_0x4dc8bb[_0x413ab8]={'$like':'%'+_0x1fd5e1[_0xbd19('0x40')][_0xbd19('0x4c')]+'%'};return _0x4dc8bb;})});}_0x207bde=_[_0xbd19('0x4d')]({},_0x207bde,_0x1fd5e1[_0xbd19('0x4f')]);return _0x431008[_0xbd19('0x98')](_0x207bde);}})[_0xbd19('0x2b')](function(_0x591724){if(_0x591724){_0x2696b2=_0x591724['length'];if(!_0x1fd5e1['query'][_0xbd19('0x46')]('nolimit')){_0x207bde[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x1fd5e1['query']['limit']);_0x207bde[_0xbd19('0x25')]=qs[_0xbd19('0x25')](_0x1fd5e1['query'][_0xbd19('0x25')]);}return _0x431008[_0xbd19('0x98')](_0x207bde);}})['then'](function(_0xdc840d){if(_0xdc840d){return _0xdc840d?{'count':_0x2696b2,'rows':_0xdc840d}:null;}})[_0xbd19('0x2b')](respondWithResult(_0x3112ca,null))[_0xbd19('0x53')](handleError(_0x3112ca,null));};exports['getMembers']=function(_0x591fb7,_0xbb5d78,_0x3f7a87){var _0x2aa8bb={};var _0x4d58c5={};var _0x472c2a;var _0x44d351;return db[_0xbd19('0x3c')][_0xbd19('0x66')]({'where':{'id':_0x591fb7[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0xbb5d78,null))[_0xbd19('0x2b')](function(_0x27200f){if(_0x27200f){_0x472c2a=_0x27200f;_0x4d58c5['model']=_[_0xbd19('0x41')](db['UserVoiceQueueRt'][_0xbd19('0x3d')]);_0x4d58c5[_0xbd19('0x40')]=_[_0xbd19('0x41')](_0x591fb7[_0xbd19('0x40')]);_0x4d58c5[_0xbd19('0x42')]=_['intersection'](_0x4d58c5[_0xbd19('0x3f')],_0x4d58c5[_0xbd19('0x40')]);_0x2aa8bb[_0xbd19('0x44')]=_['intersection'](_0x4d58c5['model'],qs[_0xbd19('0x45')](_0x591fb7[_0xbd19('0x40')]['fields']));_0x2aa8bb[_0xbd19('0x44')]=_0x2aa8bb['attributes'][_0xbd19('0x56')]?_0x2aa8bb[_0xbd19('0x44')]:_0x4d58c5[_0xbd19('0x3f')];_0x2aa8bb[_0xbd19('0x48')]=qs[_0xbd19('0x49')](_0x591fb7[_0xbd19('0x40')][_0xbd19('0x49')]);_0x2aa8bb[_0xbd19('0x4a')]=qs[_0xbd19('0x42')](_[_0xbd19('0x4b')](_0x591fb7[_0xbd19('0x40')],_0x4d58c5[_0xbd19('0x42')]));if(_0x591fb7[_0xbd19('0x40')][_0xbd19('0x4c')]){_0x2aa8bb[_0xbd19('0x4a')]=_[_0xbd19('0x4d')](_0x2aa8bb['where'],{'$or':_[_0xbd19('0x3b')](_0x2aa8bb['attributes'],function(_0x41db92){var _0x462490={};_0x462490[_0x41db92]={'$like':'%'+_0x591fb7['query'][_0xbd19('0x4c')]+'%'};return _0x462490;})});}_0x2aa8bb=_[_0xbd19('0x4d')]({},_0x2aa8bb,_0x591fb7[_0xbd19('0x4f')]);return _0x472c2a[_0xbd19('0x99')](_0x2aa8bb);}})['then'](function(_0x50a313){if(_0x50a313){_0x44d351=_0x50a313[_0xbd19('0x56')];if(!_0x591fb7[_0xbd19('0x40')]['hasOwnProperty'](_0xbd19('0x68'))){_0x2aa8bb[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x591fb7[_0xbd19('0x40')][_0xbd19('0x47')]);_0x2aa8bb['offset']=qs[_0xbd19('0x25')](_0x591fb7[_0xbd19('0x40')][_0xbd19('0x25')]);}return _0x472c2a[_0xbd19('0x99')](_0x2aa8bb);}})[_0xbd19('0x2b')](function(_0xd658f){return _0xd658f?{'count':_0x44d351,'rows':_0xd658f}:null;})[_0xbd19('0x2b')](respondWithResult(_0xbb5d78,null))[_0xbd19('0x53')](handleError(_0xbb5d78,null));};exports[_0xbd19('0x9a')]=function(_0x514a0a,_0xca1997,_0x3d16c0){var _0x23ccdc={};var _0x4b04bf={};var _0x26618d;var _0x3d8a27;return db[_0xbd19('0x3c')][_0xbd19('0x66')]({'where':{'id':_0x514a0a[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0xca1997,null))[_0xbd19('0x2b')](function(_0x3b1d0e){if(_0x3b1d0e){_0x26618d=_0x3b1d0e;_0x4b04bf[_0xbd19('0x3f')]=_['keys'](db[_0xbd19('0x9b')][_0xbd19('0x3d')]);_0x4b04bf[_0xbd19('0x40')]=_[_0xbd19('0x41')](_0x514a0a['query']);_0x4b04bf['filters']=_[_0xbd19('0x43')](_0x4b04bf['model'],_0x4b04bf['query']);_0x23ccdc[_0xbd19('0x44')]=_[_0xbd19('0x43')](_0x4b04bf[_0xbd19('0x3f')],qs[_0xbd19('0x45')](_0x514a0a[_0xbd19('0x40')][_0xbd19('0x45')]));_0x23ccdc['attributes']=_0x23ccdc['attributes']['length']?_0x23ccdc[_0xbd19('0x44')]:_0x4b04bf[_0xbd19('0x3f')];_0x23ccdc['order']=qs[_0xbd19('0x49')](_0x514a0a[_0xbd19('0x40')][_0xbd19('0x49')]);_0x23ccdc['where']=qs['filters'](_[_0xbd19('0x4b')](_0x514a0a[_0xbd19('0x40')],_0x4b04bf[_0xbd19('0x42')]));if(_0x514a0a[_0xbd19('0x40')]['filter']){_0x23ccdc['where']=_[_0xbd19('0x4d')](_0x23ccdc['where'],{'$or':_[_0xbd19('0x3b')](_0x23ccdc[_0xbd19('0x44')],function(_0x3fcfaf){var _0x332339={};_0x332339[_0x3fcfaf]={'$like':'%'+_0x514a0a[_0xbd19('0x40')][_0xbd19('0x4c')]+'%'};return _0x332339;})});}_0x23ccdc=_['merge']({},_0x23ccdc,_0x514a0a[_0xbd19('0x4f')]);return _0x26618d[_0xbd19('0x9a')](_0x23ccdc);}})[_0xbd19('0x2b')](function(_0x2875bf){if(_0x2875bf){_0x3d8a27=_0x2875bf[_0xbd19('0x56')];if(!_0x514a0a[_0xbd19('0x40')][_0xbd19('0x46')]('nolimit')){_0x23ccdc[_0xbd19('0x47')]=qs[_0xbd19('0x47')](_0x514a0a[_0xbd19('0x40')][_0xbd19('0x47')]);_0x23ccdc[_0xbd19('0x25')]=qs['offset'](_0x514a0a[_0xbd19('0x40')][_0xbd19('0x25')]);}return _0x26618d[_0xbd19('0x9a')](_0x23ccdc);}})[_0xbd19('0x2b')](function(_0x3715c2){if(_0x3715c2){return _0x3715c2?{'count':_0x3d8a27,'rows':_0x3715c2}:null;}})['then'](respondWithResult(_0xca1997,null))[_0xbd19('0x53')](handleError(_0xca1997,null));};exports[_0xbd19('0x9c')]=function(_0x3d3fd5,_0x176b7c,_0x235c08){var _0x32a283,_0x2fb527;return db[_0xbd19('0x3c')]['find']({'where':{'id':_0x3d3fd5[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x176b7c,null))['then'](function(_0x5045d7){if(_0x5045d7){_0x2fb527=_0x5045d7;return _0x5045d7[_0xbd19('0x9c')](_0x3d3fd5[_0xbd19('0x59')]['ids'],_[_0xbd19('0x60')](_0x3d3fd5[_0xbd19('0x59')],[_0xbd19('0x84'),'id'])||{});}return null;})['spread'](function(_0x3a547a){var _0x1d398a;_0x32a283=_0x3a547a||[];var _0x537948=[];if(_0x3a547a){for(var _0x2b0e3e=0x0;_0x2b0e3e<_0x3a547a['length'];_0x2b0e3e+=0x1){var _0x4e826e=_0x3a547a[_0x2b0e3e][_0xbd19('0x2d')]({'plain':!![]});_0x2fb527[_0xbd19('0x9d')]=_0x3d3fd5[_0xbd19('0x59')][_0xbd19('0x9d')]?_0x3d3fd5[_0xbd19('0x59')][_0xbd19('0x9d')]:_0x2fb527['dialCheckDuplicateType'];switch(_0x2fb527[_0xbd19('0x9d')]){case _0xbd19('0x9e'):_0x1d398a=squel[_0xbd19('0x9f')]()['into'](_0xbd19('0xa0'))['fromQuery'](['phone','scheduledAt',_0xbd19('0xa1'),_0xbd19('0xa2'),_0xbd19('0x69'),_0xbd19('0x61'),_0xbd19('0x62')],squel[_0xbd19('0xa3')]()['field'](_0xbd19('0xa4'),_0xbd19('0xa4'))[_0xbd19('0xa5')](_0xbd19('0xa6'),_0xbd19('0xa7'))[_0xbd19('0xa5')]('id',_0xbd19('0xa1'))[_0xbd19('0xa5')](_0x4e826e[_0xbd19('0xa8')][_0xbd19('0x8b')](),'ListId')[_0xbd19('0xa5')](_0x3d3fd5[_0xbd19('0x55')]['id'][_0xbd19('0x8b')](),'VoiceQueueId')[_0xbd19('0xa5')](_0xbd19('0xa6'),_0xbd19('0x61'))['field'](_0xbd19('0xa6'),_0xbd19('0x62'))[_0xbd19('0xa9')](_0xbd19('0xaa'))['where'](_0xbd19('0xab'))[_0xbd19('0x4a')](_0xbd19('0xac'),_0x4e826e[_0xbd19('0xa8')][_0xbd19('0x8b')]())[_0xbd19('0x4a')](_0xbd19('0xad'))[_0xbd19('0x4a')]('phone\x20NOT\x20IN\x20(?)',squel[_0xbd19('0xa3')]()[_0xbd19('0xa5')](_0xbd19('0xae'))[_0xbd19('0xa9')]('cm_hopper_final')[_0xbd19('0x4a')](_0xbd19('0x88'),_0x3d3fd5['params']['id']['toString']()))[_0xbd19('0x4a')](_0xbd19('0xaf'),squel['select']()[_0xbd19('0xa5')]('COALESCE(phone,\x27\x27)')['from'](_0xbd19('0xa0'))['where']('VoiceQueueId\x20=\x20?',_0x3d3fd5['params']['id']['toString']())))['toString']();break;case _0xbd19('0xb0'):_0x1d398a=squel[_0xbd19('0x9f')]()['into'](_0xbd19('0xa0'))[_0xbd19('0xb1')](['phone',_0xbd19('0xa7'),'ContactId','ListId',_0xbd19('0x69'),_0xbd19('0x61'),'updatedAt'],squel['select']()[_0xbd19('0xa5')](_0xbd19('0xa4'),'phone')[_0xbd19('0xa5')]('NOW()','scheduledAt')[_0xbd19('0xa5')]('id',_0xbd19('0xa1'))[_0xbd19('0xa5')](_0x4e826e[_0xbd19('0xa8')][_0xbd19('0x8b')](),_0xbd19('0xa2'))[_0xbd19('0xa5')](_0x3d3fd5[_0xbd19('0x55')]['id']['toString'](),_0xbd19('0x69'))[_0xbd19('0xa5')]('NOW()',_0xbd19('0x61'))[_0xbd19('0xa5')](_0xbd19('0xa6'),_0xbd19('0x62'))[_0xbd19('0xa9')](_0xbd19('0xaa'))['where']('deletedAt\x20IS\x20NULL')[_0xbd19('0x4a')](_0xbd19('0xac'),_0x4e826e[_0xbd19('0xa8')]['toString']())[_0xbd19('0x4a')](_0xbd19('0xad'))['where'](_0xbd19('0xaf'),squel['select']()[_0xbd19('0xa5')]('COALESCE(phone,\x27\x27)')[_0xbd19('0xa9')]('cm_hopper')['where'](_0xbd19('0x88'),_0x3d3fd5['params']['id']['toString']())))[_0xbd19('0x8b')]();break;default:_0x1d398a=squel['insert']()[_0xbd19('0xb2')](_0xbd19('0xa0'))[_0xbd19('0xb1')]([_0xbd19('0xa4'),_0xbd19('0xa7'),_0xbd19('0xa1'),_0xbd19('0xa2'),'VoiceQueueId','createdAt',_0xbd19('0x62')],squel[_0xbd19('0xa3')]()[_0xbd19('0xa5')](_0xbd19('0xa4'),_0xbd19('0xa4'))['field'](_0xbd19('0xa6'),_0xbd19('0xa7'))[_0xbd19('0xa5')]('id',_0xbd19('0xa1'))['field'](_0x4e826e[_0xbd19('0xa8')][_0xbd19('0x8b')](),_0xbd19('0xa2'))[_0xbd19('0xa5')](_0x3d3fd5[_0xbd19('0x55')]['id']['toString'](),_0xbd19('0x69'))[_0xbd19('0xa5')](_0xbd19('0xa6'),_0xbd19('0x61'))[_0xbd19('0xa5')](_0xbd19('0xa6'),_0xbd19('0x62'))[_0xbd19('0xa9')](_0xbd19('0xaa'))[_0xbd19('0x4a')](_0xbd19('0xab'))[_0xbd19('0x4a')]('ListId\x20=\x20?',_0x4e826e[_0xbd19('0xa8')]['toString']())['where'](_0xbd19('0xad')))[_0xbd19('0x8b')]();}_0x537948[_0xbd19('0x8a')](db[_0xbd19('0x79')][_0xbd19('0x40')](_0x1d398a));}return BPromise[_0xbd19('0x90')](_0x537948);}})[_0xbd19('0x2b')](function(){return _0x32a283;})[_0xbd19('0x2b')](respondWithResult(_0x176b7c,null))[_0xbd19('0x53')](handleError(_0x176b7c,null));};exports[_0xbd19('0xb3')]=function(_0x5634d6,_0x4f779b,_0x52a01d){return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x5634d6['params']['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x4f779b,null))[_0xbd19('0x2b')](function(_0x350712){if(_0x350712){return _0x350712[_0xbd19('0xb3')](_0x5634d6['query'][_0xbd19('0x84')]);}})[_0xbd19('0x2b')](function(_0x2fde60){if(_0x2fde60){return db[_0xbd19('0x67')]['destroy']({'where':{'ListId':_0x5634d6[_0xbd19('0x40')]['ids'],'VoiceQueueId':_0x5634d6[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](function(){return _0x2fde60;});}})['then'](respondWithStatusCode(_0x4f779b,null))[_0xbd19('0x53')](handleError(_0x4f779b,null));};exports['getBlackLists']=function(_0x29809c,_0x3e5558,_0x3ff2e7){var _0x1ed93f={};var _0xcc5c7d={};var _0x523f55;var _0xfaa7e6;return db['VoiceQueue'][_0xbd19('0x66')]({'where':{'id':_0x29809c[_0xbd19('0x55')]['id']}})['then'](handleEntityNotFound(_0x3e5558,null))['then'](function(_0x55816b){if(_0x55816b){_0x523f55=_0x55816b;_0xcc5c7d[_0xbd19('0x3f')]=_['keys'](db[_0xbd19('0x9b')]['rawAttributes']);_0xcc5c7d['query']=_[_0xbd19('0x41')](_0x29809c['query']);_0xcc5c7d[_0xbd19('0x42')]=_[_0xbd19('0x43')](_0xcc5c7d[_0xbd19('0x3f')],_0xcc5c7d[_0xbd19('0x40')]);_0x1ed93f['attributes']=_[_0xbd19('0x43')](_0xcc5c7d['model'],qs[_0xbd19('0x45')](_0x29809c['query'][_0xbd19('0x45')]));_0x1ed93f[_0xbd19('0x44')]=_0x1ed93f['attributes'][_0xbd19('0x56')]?_0x1ed93f['attributes']:_0xcc5c7d['model'];_0x1ed93f['order']=qs[_0xbd19('0x49')](_0x29809c[_0xbd19('0x40')]['sort']);_0x1ed93f['where']=qs['filters'](_[_0xbd19('0x4b')](_0x29809c[_0xbd19('0x40')],_0xcc5c7d[_0xbd19('0x42')]));if(_0x29809c[_0xbd19('0x40')][_0xbd19('0x4c')]){_0x1ed93f[_0xbd19('0x4a')]=_[_0xbd19('0x4d')](_0x1ed93f['where'],{'$or':_['map'](_0x1ed93f[_0xbd19('0x44')],function(_0x134046){var _0x2951a2={};_0x2951a2[_0x134046]={'$like':'%'+_0x29809c[_0xbd19('0x40')][_0xbd19('0x4c')]+'%'};return _0x2951a2;})});}_0x1ed93f=_[_0xbd19('0x4d')]({},_0x1ed93f,_0x29809c['options']);return _0x523f55[_0xbd19('0xb4')](_0x1ed93f);}})[_0xbd19('0x2b')](function(_0x1f88e3){if(_0x1f88e3){_0xfaa7e6=_0x1f88e3[_0xbd19('0x56')];if(!_0x29809c[_0xbd19('0x40')][_0xbd19('0x46')](_0xbd19('0x68'))){_0x1ed93f['limit']=qs[_0xbd19('0x47')](_0x29809c[_0xbd19('0x40')][_0xbd19('0x47')]);_0x1ed93f['offset']=qs[_0xbd19('0x25')](_0x29809c[_0xbd19('0x40')]['offset']);}return _0x523f55[_0xbd19('0xb4')](_0x1ed93f);}})[_0xbd19('0x2b')](function(_0x181953){if(_0x181953){return _0x181953?{'count':_0xfaa7e6,'rows':_0x181953}:null;}})['then'](respondWithResult(_0x3e5558,null))[_0xbd19('0x53')](handleError(_0x3e5558,null));};exports[_0xbd19('0xb5')]=function(_0x3641ed,_0x314ce7,_0x57346b){var _0x565ac7,_0x2cde9c;return db['VoiceQueue'][_0xbd19('0x35')]({'where':{'id':_0x3641ed[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x314ce7,null))[_0xbd19('0x2b')](function(_0x19a24f){if(_0x19a24f){_0x2cde9c=_0x19a24f;return _0x19a24f[_0xbd19('0xb5')](_0x3641ed['body'][_0xbd19('0x84')],_[_0xbd19('0x60')](_0x3641ed[_0xbd19('0x59')],[_0xbd19('0x84'),'id'])||{});}return null;})[_0xbd19('0x96')](function(_0x44ca9b){var _0x95a1d7;_0x565ac7=_0x44ca9b||[];var _0x5dab60=[];if(_0x44ca9b){for(var _0x241603=0x0;_0x241603<_0x44ca9b[_0xbd19('0x56')];_0x241603+=0x1){var _0x4ad494=_0x44ca9b[_0x241603][_0xbd19('0x2d')]({'plain':!![]});_0x95a1d7=squel[_0xbd19('0x9f')]()[_0xbd19('0xb2')](_0xbd19('0xb6'))['fromQuery']([_0xbd19('0xa4'),_0xbd19('0xa1'),_0xbd19('0xa2'),_0xbd19('0x69'),_0xbd19('0x61'),'updatedAt'],squel[_0xbd19('0xa3')]()['field'](_0xbd19('0xa4'),_0xbd19('0xa4'))[_0xbd19('0xa5')]('id',_0xbd19('0xa1'))[_0xbd19('0xa5')](_0x4ad494['CmListId']['toString'](),_0xbd19('0xa2'))['field'](_0x3641ed['params']['id'][_0xbd19('0x8b')](),'VoiceQueueId')['field'](_0xbd19('0xa6'),_0xbd19('0x61'))[_0xbd19('0xa5')](_0xbd19('0xa6'),_0xbd19('0x62'))[_0xbd19('0xa9')](_0xbd19('0xaa'))['where'](_0xbd19('0xab'))[_0xbd19('0x4a')](_0xbd19('0xac'),_0x4ad494[_0xbd19('0xa8')][_0xbd19('0x8b')]())[_0xbd19('0x4a')](_0xbd19('0xad')))['toString']();_0x5dab60[_0xbd19('0x8a')](db['sequelize']['query'](_0x95a1d7));}return BPromise['all'](_0x5dab60);}})[_0xbd19('0x2b')](function(){return _0x565ac7;})[_0xbd19('0x2b')](respondWithResult(_0x314ce7,null))[_0xbd19('0x53')](handleError(_0x314ce7,null));};exports[_0xbd19('0xb7')]=function(_0x178bc6,_0x17709f,_0x3e9751){return db[_0xbd19('0x3c')][_0xbd19('0x35')]({'where':{'id':_0x178bc6[_0xbd19('0x55')]['id']}})[_0xbd19('0x2b')](handleEntityNotFound(_0x17709f,null))[_0xbd19('0x2b')](function(_0x46e1f2){if(_0x46e1f2){return _0x46e1f2[_0xbd19('0xb7')](_0x178bc6[_0xbd19('0x40')][_0xbd19('0x84')]);}})['then'](function(_0x4e5a28){if(_0x4e5a28){return db[_0xbd19('0x6e')][_0xbd19('0x2c')]({'where':{'ListId':_0x178bc6[_0xbd19('0x40')][_0xbd19('0x84')],'VoiceQueueId':_0x178bc6[_0xbd19('0x55')]['id']}})['then'](function(){return _0x4e5a28;});}})[_0xbd19('0x2b')](respondWithStatusCode(_0x17709f,null))[_0xbd19('0x53')](handleError(_0x17709f,null));};
\ No newline at end of file
index 7e9194d..bbbbb58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab4e=['emit','hasOwnProperty','hook','exports','events','VoiceQueue','setMaxListeners','save','update'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xab4e,0x16c));var _0xeab4=function(_0x1efe17,_0x5145f7){_0x1efe17=_0x1efe17-0x0;var _0x20976b=_0xab4e[_0x1efe17];return _0x20976b;};'use strict';var EventEmitter=require(_0xeab4('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0xeab4('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xeab4('0x2')](0x0);var events={'afterCreate':_0xeab4('0x3'),'afterUpdate':_0xeab4('0x4'),'afterDestroy':'remove'};function emitEvent(_0x51199e){return function(_0x5c7ef0,_0x44c2e9,_0x24d3f2){VoiceQueueEvents[_0xeab4('0x5')](_0x51199e+':'+_0x5c7ef0['id'],_0x5c7ef0);VoiceQueueEvents['emit'](_0x51199e,_0x5c7ef0);_0x24d3f2(null);};}for(var e in events){if(events[_0xeab4('0x6')](e)){var event=events[e];VoiceQueue[_0xeab4('0x7')](e,emitEvent(event));}}module[_0xeab4('0x8')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x52d0=['remove','emit','hasOwnProperty','events','VoiceQueue','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x52d0,0x1b5));var _0x052d=function(_0x319ab9,_0xad6320){_0x319ab9=_0x319ab9-0x0;var _0x4308eb=_0x52d0[_0x319ab9];return _0x4308eb;};'use strict';var EventEmitter=require(_0x052d('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x052d('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x052d('0x2'),'afterUpdate':_0x052d('0x3'),'afterDestroy':_0x052d('0x4')};function emitEvent(_0x3e630d){return function(_0x440a21,_0x5ee72f,_0x377da1){VoiceQueueEvents[_0x052d('0x5')](_0x3e630d+':'+_0x440a21['id'],_0x440a21);VoiceQueueEvents[_0x052d('0x5')](_0x3e630d,_0x440a21);_0x377da1(null);};}for(var e in events){if(events[_0x052d('0x6')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index 2dfa637..d4aece0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x4a9373,_0x41ac17){var _0x594096=function(_0x17a39b){while(--_0x17a39b){_0x4a9373['push'](_0x4a9373['shift']());}};_0x594096(++_0x41ac17);}(_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 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':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x28debf,_0x3e6ea8){var _0x3186e6=function(_0x16f45c){while(--_0x16f45c){_0x28debf['push'](_0x28debf['shift']());}};_0x3186e6(++_0x3e6ea8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d8449da..05130d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea14=['limit','include','map','model','ShowVoiceQueue','find','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes'];(function(_0x31ab85,_0x449b94){var _0x5b1827=function(_0x13ff82){while(--_0x13ff82){_0x31ab85['push'](_0x31ab85['shift']());}};_0x5b1827(++_0x449b94);}(_0xea14,0x1f2));var _0x4ea1=function(_0x308110,_0x5e1128){_0x308110=_0x308110-0x0;var _0x959ac5=_0xea14[_0x308110];return _0x959ac5;};'use strict';var _=require('lodash');var util=require(_0x4ea1('0x0'));var moment=require(_0x4ea1('0x1'));var BPromise=require('bluebird');var rs=require(_0x4ea1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ea1('0x3'))['db'];var utils=require(_0x4ea1('0x4'));var logger=require(_0x4ea1('0x5'))(_0x4ea1('0x6'));var config=require(_0x4ea1('0x7'));var jayson=require(_0x4ea1('0x8'));var client=jayson[_0x4ea1('0x9')]['http']({'port':0x232a});config[_0x4ea1('0xa')]=_[_0x4ea1('0xb')](config[_0x4ea1('0xa')],{'host':_0x4ea1('0xc'),'port':0x18eb});var socket=require(_0x4ea1('0xd'))(new Redis(config[_0x4ea1('0xa')]));require(_0x4ea1('0xe'))[_0x4ea1('0xf')](socket);function respondWithRpcPromise(_0x4c10ea,_0x2632b6,_0x32a07c){return new BPromise(function(_0xaab811,_0x580453){return client[_0x4ea1('0x10')](_0x4c10ea,_0x32a07c)[_0x4ea1('0x11')](function(_0x3b1835){logger[_0x4ea1('0x12')](_0x4ea1('0x13'),_0x2632b6,_0x4ea1('0x14'));logger[_0x4ea1('0x15')](_0x4ea1('0x16'),_0x2632b6,_0x4ea1('0x14'),JSON['stringify'](_0x3b1835));if(_0x3b1835[_0x4ea1('0x17')]){if(_0x3b1835[_0x4ea1('0x17')][_0x4ea1('0x18')]===0x1f4){logger['error'](_0x4ea1('0x13'),_0x2632b6,_0x3b1835[_0x4ea1('0x17')][_0x4ea1('0x19')]);return _0x580453(_0x3b1835[_0x4ea1('0x17')][_0x4ea1('0x19')]);}logger[_0x4ea1('0x17')](_0x4ea1('0x13'),_0x2632b6,_0x3b1835['error'][_0x4ea1('0x19')]);return _0xaab811(_0x3b1835[_0x4ea1('0x17')][_0x4ea1('0x19')]);}else{logger['info'](_0x4ea1('0x13'),_0x2632b6,_0x4ea1('0x14'));_0xaab811(_0x3b1835[_0x4ea1('0x1a')]['message']);}})[_0x4ea1('0x1b')](function(_0xc85b71){logger[_0x4ea1('0x17')](_0x4ea1('0x13'),_0x2632b6,_0xc85b71);_0x580453(_0xc85b71);});});}exports[_0x4ea1('0x1c')]=function(_0x4edbfc){var _0x4a8756=this;return new Promise(function(_0x4d7bf4,_0x4f03a1){return db[_0x4ea1('0x1d')][_0x4ea1('0x1e')]({'raw':_0x4edbfc[_0x4ea1('0x1f')]?_0x4edbfc[_0x4ea1('0x1f')][_0x4ea1('0x20')]===undefined?!![]:![]:!![],'where':_0x4edbfc['options']?_0x4edbfc['options'][_0x4ea1('0x21')]||null:null,'attributes':_0x4edbfc['options']?_0x4edbfc[_0x4ea1('0x1f')][_0x4ea1('0x22')]||null:null,'limit':_0x4edbfc[_0x4ea1('0x1f')]?_0x4edbfc['options'][_0x4ea1('0x23')]||null:null,'include':_0x4edbfc['options']?_0x4edbfc[_0x4ea1('0x1f')][_0x4ea1('0x24')]?_['map'](_0x4edbfc[_0x4ea1('0x1f')]['include'],function(_0x2709fc){return{'model':db[_0x2709fc['model']],'as':_0x2709fc['as'],'attributes':_0x2709fc[_0x4ea1('0x22')],'include':_0x2709fc[_0x4ea1('0x24')]?_[_0x4ea1('0x25')](_0x2709fc[_0x4ea1('0x24')],function(_0x1f4668){return{'model':db[_0x1f4668[_0x4ea1('0x26')]],'as':_0x1f4668['as'],'attributes':_0x1f4668['attributes'],'include':_0x1f4668[_0x4ea1('0x24')]?_['map'](_0x1f4668[_0x4ea1('0x24')],function(_0xa18e0e){return{'model':db[_0xa18e0e[_0x4ea1('0x26')]],'as':_0xa18e0e['as'],'attributes':_0xa18e0e[_0x4ea1('0x22')]};}):[]};}):[]};}):[]:[]})[_0x4ea1('0x11')](function(_0x114b2f){logger[_0x4ea1('0x12')](_0x4ea1('0x1c'),_0x4edbfc);logger[_0x4ea1('0x15')](_0x4ea1('0x1c'),_0x4edbfc,JSON['stringify'](_0x114b2f));_0x4d7bf4(_0x114b2f);})['catch'](function(_0x2ad227){logger[_0x4ea1('0x17')](_0x4ea1('0x1c'),_0x2ad227[_0x4ea1('0x19')],_0x4edbfc);_0x4f03a1(_0x4a8756[_0x4ea1('0x17')](0x1f4,_0x2ad227[_0x4ea1('0x19')]));});});};exports[_0x4ea1('0x27')]=function(_0x43b209){var _0x5dd44c=this;return new Promise(function(_0x2a8c02,_0x513588){return db[_0x4ea1('0x1d')][_0x4ea1('0x28')]({'raw':_0x43b209[_0x4ea1('0x1f')]?_0x43b209[_0x4ea1('0x1f')][_0x4ea1('0x20')]===undefined?!![]:![]:!![],'where':_0x43b209['options']?_0x43b209[_0x4ea1('0x1f')]['where']||null:null,'attributes':_0x43b209[_0x4ea1('0x1f')]?_0x43b209[_0x4ea1('0x1f')][_0x4ea1('0x22')]||null:null,'include':_0x43b209[_0x4ea1('0x1f')]?_0x43b209[_0x4ea1('0x1f')]['include']?_[_0x4ea1('0x25')](_0x43b209[_0x4ea1('0x1f')][_0x4ea1('0x24')],function(_0x1694a2){return{'model':db[_0x1694a2['model']],'as':_0x1694a2['as'],'attributes':_0x1694a2[_0x4ea1('0x22')],'include':_0x1694a2[_0x4ea1('0x24')]?_[_0x4ea1('0x25')](_0x1694a2['include'],function(_0x17f19c){return{'model':db[_0x17f19c[_0x4ea1('0x26')]],'as':_0x17f19c['as'],'attributes':_0x17f19c['attributes'],'include':_0x17f19c[_0x4ea1('0x24')]?_[_0x4ea1('0x25')](_0x17f19c[_0x4ea1('0x24')],function(_0x1105b2){return{'model':db[_0x1105b2[_0x4ea1('0x26')]],'as':_0x1105b2['as'],'attributes':_0x1105b2[_0x4ea1('0x22')]};}):[]};}):[]};}):[]:[]})[_0x4ea1('0x11')](function(_0x1c6f65){logger[_0x4ea1('0x12')](_0x4ea1('0x27'),_0x43b209);logger[_0x4ea1('0x15')](_0x4ea1('0x27'),_0x43b209,JSON['stringify'](_0x1c6f65));_0x2a8c02(_0x1c6f65);})[_0x4ea1('0x1b')](function(_0x138279){logger[_0x4ea1('0x17')](_0x4ea1('0x27'),_0x138279[_0x4ea1('0x19')],_0x43b209);_0x513588(_0x5dd44c[_0x4ea1('0x17')](0x1f4,_0x138279[_0x4ea1('0x19')]));});});};
\ No newline at end of file
+var _0x8d1d=['raw','attributes','limit','include','map','model','find','where','ShowVoiceQueue','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','info','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x8d1d,0x13e));var _0xd8d1=function(_0x1e060b,_0x36cc3e){_0x1e060b=_0x1e060b-0x0;var _0x469ea8=_0x8d1d[_0x1e060b];return _0x469ea8;};'use strict';var _=require(_0xd8d1('0x0'));var util=require(_0xd8d1('0x1'));var moment=require(_0xd8d1('0x2'));var BPromise=require(_0xd8d1('0x3'));var rs=require(_0xd8d1('0x4'));var fs=require('fs');var Redis=require(_0xd8d1('0x5'));var db=require(_0xd8d1('0x6'))['db'];var utils=require(_0xd8d1('0x7'));var logger=require(_0xd8d1('0x8'))(_0xd8d1('0x9'));var config=require(_0xd8d1('0xa'));var jayson=require(_0xd8d1('0xb'));var client=jayson[_0xd8d1('0xc')]['http']({'port':0x232a});config[_0xd8d1('0xd')]=_['defaults'](config[_0xd8d1('0xd')],{'host':_0xd8d1('0xe'),'port':0x18eb});var socket=require(_0xd8d1('0xf'))(new Redis(config[_0xd8d1('0xd')]));require(_0xd8d1('0x10'))[_0xd8d1('0x11')](socket);function respondWithRpcPromise(_0x5765f3,_0x282dff,_0x45b4da){return new BPromise(function(_0x8e180b,_0xe363da){return client[_0xd8d1('0x12')](_0x5765f3,_0x45b4da)[_0xd8d1('0x13')](function(_0x2e2fef){logger[_0xd8d1('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x282dff,_0xd8d1('0x15'));logger['debug'](_0xd8d1('0x16'),_0x282dff,_0xd8d1('0x15'),JSON[_0xd8d1('0x17')](_0x2e2fef));if(_0x2e2fef[_0xd8d1('0x18')]){if(_0x2e2fef[_0xd8d1('0x18')][_0xd8d1('0x19')]===0x1f4){logger[_0xd8d1('0x18')](_0xd8d1('0x1a'),_0x282dff,_0x2e2fef['error'][_0xd8d1('0x1b')]);return _0xe363da(_0x2e2fef[_0xd8d1('0x18')][_0xd8d1('0x1b')]);}logger[_0xd8d1('0x18')]('VoiceQueue,\x20%s,\x20%s',_0x282dff,_0x2e2fef[_0xd8d1('0x18')][_0xd8d1('0x1b')]);return _0x8e180b(_0x2e2fef['error'][_0xd8d1('0x1b')]);}else{logger[_0xd8d1('0x14')](_0xd8d1('0x1a'),_0x282dff,'request\x20sent');_0x8e180b(_0x2e2fef[_0xd8d1('0x1c')]['message']);}})[_0xd8d1('0x1d')](function(_0x400414){logger[_0xd8d1('0x18')](_0xd8d1('0x1a'),_0x282dff,_0x400414);_0xe363da(_0x400414);});});}exports[_0xd8d1('0x1e')]=function(_0x13712d){var _0x601c50=this;return new Promise(function(_0x2a7a52,_0x509b22){return db[_0xd8d1('0x1f')][_0xd8d1('0x20')]({'raw':_0x13712d[_0xd8d1('0x21')]?_0x13712d[_0xd8d1('0x21')][_0xd8d1('0x22')]===undefined?!![]:![]:!![],'where':_0x13712d[_0xd8d1('0x21')]?_0x13712d['options']['where']||null:null,'attributes':_0x13712d[_0xd8d1('0x21')]?_0x13712d[_0xd8d1('0x21')][_0xd8d1('0x23')]||null:null,'limit':_0x13712d[_0xd8d1('0x21')]?_0x13712d[_0xd8d1('0x21')][_0xd8d1('0x24')]||null:null,'include':_0x13712d[_0xd8d1('0x21')]?_0x13712d[_0xd8d1('0x21')][_0xd8d1('0x25')]?_[_0xd8d1('0x26')](_0x13712d[_0xd8d1('0x21')]['include'],function(_0x35ad8e){return{'model':db[_0x35ad8e[_0xd8d1('0x27')]],'as':_0x35ad8e['as'],'attributes':_0x35ad8e[_0xd8d1('0x23')],'include':_0x35ad8e['include']?_[_0xd8d1('0x26')](_0x35ad8e[_0xd8d1('0x25')],function(_0x29090d){return{'model':db[_0x29090d[_0xd8d1('0x27')]],'as':_0x29090d['as'],'attributes':_0x29090d[_0xd8d1('0x23')],'include':_0x29090d['include']?_[_0xd8d1('0x26')](_0x29090d[_0xd8d1('0x25')],function(_0x19a863){return{'model':db[_0x19a863['model']],'as':_0x19a863['as'],'attributes':_0x19a863[_0xd8d1('0x23')]};}):[]};}):[]};}):[]:[]})[_0xd8d1('0x13')](function(_0xbe378b){logger['info'](_0xd8d1('0x1e'),_0x13712d);logger['debug'](_0xd8d1('0x1e'),_0x13712d,JSON['stringify'](_0xbe378b));_0x2a7a52(_0xbe378b);})[_0xd8d1('0x1d')](function(_0x5144af){logger[_0xd8d1('0x18')](_0xd8d1('0x1e'),_0x5144af[_0xd8d1('0x1b')],_0x13712d);_0x509b22(_0x601c50[_0xd8d1('0x18')](0x1f4,_0x5144af[_0xd8d1('0x1b')]));});});};exports['ShowVoiceQueue']=function(_0x3f0bf5){var _0xae1291=this;return new Promise(function(_0x1854c4,_0x305a3c){return db[_0xd8d1('0x1f')][_0xd8d1('0x28')]({'raw':_0x3f0bf5[_0xd8d1('0x21')]?_0x3f0bf5[_0xd8d1('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x3f0bf5[_0xd8d1('0x21')]?_0x3f0bf5['options'][_0xd8d1('0x29')]||null:null,'attributes':_0x3f0bf5[_0xd8d1('0x21')]?_0x3f0bf5[_0xd8d1('0x21')][_0xd8d1('0x23')]||null:null,'include':_0x3f0bf5['options']?_0x3f0bf5['options'][_0xd8d1('0x25')]?_[_0xd8d1('0x26')](_0x3f0bf5[_0xd8d1('0x21')][_0xd8d1('0x25')],function(_0xe1ab9b){return{'model':db[_0xe1ab9b['model']],'as':_0xe1ab9b['as'],'attributes':_0xe1ab9b[_0xd8d1('0x23')],'include':_0xe1ab9b[_0xd8d1('0x25')]?_[_0xd8d1('0x26')](_0xe1ab9b[_0xd8d1('0x25')],function(_0x160d3d){return{'model':db[_0x160d3d[_0xd8d1('0x27')]],'as':_0x160d3d['as'],'attributes':_0x160d3d['attributes'],'include':_0x160d3d[_0xd8d1('0x25')]?_[_0xd8d1('0x26')](_0x160d3d[_0xd8d1('0x25')],function(_0x11ab44){return{'model':db[_0x11ab44['model']],'as':_0x11ab44['as'],'attributes':_0x11ab44[_0xd8d1('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x142c46){logger['info'](_0xd8d1('0x2a'),_0x3f0bf5);logger[_0xd8d1('0x2b')]('ShowVoiceQueue',_0x3f0bf5,JSON['stringify'](_0x142c46));_0x1854c4(_0x142c46);})[_0xd8d1('0x1d')](function(_0x3b6838){logger['error'](_0xd8d1('0x2a'),_0x3b6838[_0xd8d1('0x1b')],_0x3f0bf5);_0x305a3c(_0xae1291[_0xd8d1('0x18')](0x1f4,_0x3b6838[_0xd8d1('0x1b')]));});});};
\ No newline at end of file
index da0bc14..19b6e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6d0=['emit','removeListener','register','./voiceQueue.events','save','remove','update'];(function(_0x4fcd42,_0xad6b58){var _0x1f4375=function(_0x42e637){while(--_0x42e637){_0x4fcd42['push'](_0x4fcd42['shift']());}};_0x1f4375(++_0xad6b58);}(_0xa6d0,0xce));var _0x0a6d=function(_0x5d6f08,_0x4d2a70){_0x5d6f08=_0x5d6f08-0x0;var _0x1c74fe=_0xa6d0[_0x5d6f08];return _0x1c74fe;};'use strict';var VoiceQueueEvents=require(_0x0a6d('0x0'));var events=[_0x0a6d('0x1'),_0x0a6d('0x2'),_0x0a6d('0x3')];function createListener(_0x554889,_0x11cba8){return function(_0x59819c){_0x11cba8[_0x0a6d('0x4')](_0x554889,_0x59819c);};}function removeListener(_0x517c38,_0x14cd01){return function(){VoiceQueueEvents[_0x0a6d('0x5')](_0x517c38,_0x14cd01);};}exports[_0x0a6d('0x6')]=function(_0xf632e9){for(var _0x1e31c4=0x0,_0xa6bfe8=events['length'];_0x1e31c4<_0xa6bfe8;_0x1e31c4++){var _0x37a5ba=events[_0x1e31c4];var _0x1f8978=createListener('voiceQueue:'+_0x37a5ba,_0xf632e9);VoiceQueueEvents['on'](_0x37a5ba,_0x1f8978);}};
\ No newline at end of file
+var _0x9708=['length','voiceQueue:','update','emit','removeListener','register'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x9708,0x1ca));var _0x8970=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x9708[_0x1928c9];return _0x51b5fb;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=['save','remove',_0x8970('0x0')];function createListener(_0x29b711,_0x5c06e4){return function(_0x5f002f){_0x5c06e4[_0x8970('0x1')](_0x29b711,_0x5f002f);};}function removeListener(_0x310123,_0x1d6631){return function(){VoiceQueueEvents[_0x8970('0x2')](_0x310123,_0x1d6631);};}exports[_0x8970('0x3')]=function(_0x6f502b){for(var _0xf37013=0x0,_0x194de1=events[_0x8970('0x4')];_0xf37013<_0x194de1;_0xf37013++){var _0x3a72ff=events[_0xf37013];var _0x25432f=createListener(_0x8970('0x5')+_0x3a72ff,_0x6f502b);VoiceQueueEvents['on'](_0x3a72ff,_0x25432f);}};
\ No newline at end of file
index 398309c..de36a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95da=['describe','/index','/:id','show','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','get','isAuthenticated','index'];(function(_0x443da8,_0x5549c3){var _0x1c6aac=function(_0x27e292){while(--_0x27e292){_0x443da8['push'](_0x443da8['shift']());}};_0x1c6aac(++_0x5549c3);}(_0x95da,0xd0));var _0xa95d=function(_0x408e10,_0x38f9de){_0x408e10=_0x408e10-0x0;var _0xe99a83=_0x95da[_0x408e10];return _0xe99a83;};'use strict';var multer=require(_0xa95d('0x0'));var util=require(_0xa95d('0x1'));var path=require(_0xa95d('0x2'));var timeout=require(_0xa95d('0x3'));var express=require('express');var router=express[_0xa95d('0x4')]();var fs_extra=require(_0xa95d('0x5'));var auth=require(_0xa95d('0x6'));var interaction=require(_0xa95d('0x7'));var config=require('../../config/environment');var controller=require(_0xa95d('0x8'));router[_0xa95d('0x9')]('/',auth[_0xa95d('0xa')](),controller[_0xa95d('0xb')]);router[_0xa95d('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xa95d('0xc')]);router[_0xa95d('0x9')](_0xa95d('0xd'),auth[_0xa95d('0xa')](),controller['getVoiceQueuesReport']);router['get'](_0xa95d('0xe'),auth[_0xa95d('0xa')](),controller[_0xa95d('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa95d('0x10')](_0xa95d('0xe'),auth['isAuthenticated'](),controller[_0xa95d('0x11')]);router[_0xa95d('0x12')](_0xa95d('0xe'),auth[_0xa95d('0xa')](),controller[_0xa95d('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x48c7=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','/index','/:id','post','update'];(function(_0x3818c0,_0x542521){var _0x55ec33=function(_0x2be9ea){while(--_0x2be9ea){_0x3818c0['push'](_0x3818c0['shift']());}};_0x55ec33(++_0x542521);}(_0x48c7,0x1f1));var _0x748c=function(_0x569caa,_0x5174ce){_0x569caa=_0x569caa-0x0;var _0x44cb5a=_0x48c7[_0x569caa];return _0x44cb5a;};'use strict';var multer=require(_0x748c('0x0'));var util=require(_0x748c('0x1'));var path=require('path');var timeout=require(_0x748c('0x2'));var express=require(_0x748c('0x3'));var router=express[_0x748c('0x4')]();var fs_extra=require(_0x748c('0x5'));var auth=require(_0x748c('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x748c('0x7'));router['get']('/',auth[_0x748c('0x8')](),controller[_0x748c('0x9')]);router[_0x748c('0xa')](_0x748c('0xb'),auth[_0x748c('0x8')](),controller['describe']);router[_0x748c('0xa')](_0x748c('0xc'),auth[_0x748c('0x8')](),controller['getVoiceQueuesReport']);router[_0x748c('0xa')](_0x748c('0xd'),auth[_0x748c('0x8')](),controller['show']);router[_0x748c('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x748c('0xd'),auth[_0x748c('0x8')](),controller[_0x748c('0xf')]);router[_0x748c('0x10')](_0x748c('0xd'),auth[_0x748c('0x8')](),controller[_0x748c('0x11')]);module[_0x748c('0x12')]=router;
\ No newline at end of file
index 286fc6f..8f8a8a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf098=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','queuecallerleaveAt','setDataValue','holdtime'];(function(_0x12a111,_0x5e2002){var _0x213761=function(_0x58f2e4){while(--_0x58f2e4){_0x12a111['push'](_0x12a111['shift']());}};_0x213761(++_0x5e2002);}(_0xf098,0x85));var _0x8f09=function(_0x77bccf,_0x49b71d){_0x77bccf=_0x77bccf-0x0;var _0x382762=_0xf098[_0x77bccf];return _0x382762;};'use strict';var Sequelize=require(_0x8f09('0x0'));var moment=require(_0x8f09('0x1'));module[_0x8f09('0x2')]={'type':{'type':Sequelize[_0x8f09('0x3')]},'uniqueid':{'type':Sequelize[_0x8f09('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x8f09('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x8f09('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x8f09('0x4')],'set':function(_0x44f94a){var _0x5ca660=moment(_0x44f94a);var _0x475f26=moment(this[_0x8f09('0x5')](_0x8f09('0x6')))['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x3a5f95=_0x5ca660['diff'](_0x475f26,'seconds');this['setDataValue'](_0x8f09('0x7'),_0x44f94a);this[_0x8f09('0x8')](_0x8f09('0x9'),_0x3a5f95||null);}},'position':{'type':Sequelize[_0x8f09('0xa')]},'count':{'type':Sequelize[_0x8f09('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x8f09('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x8f09('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x8f09('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x8f09('0x4')]},'queuecallerexit':{'type':Sequelize[_0x8f09('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x8f09('0x3')],'comment':_0x8f09('0xc')},'originalposition':{'type':Sequelize[_0x8f09('0xa')]},'channel':{'type':Sequelize[_0x8f09('0x3')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x8f09('0x3')]},'accountcode':{'type':Sequelize[_0x8f09('0x3')]},'context':{'type':Sequelize[_0x8f09('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x8f09('0x3')]},'holdtime':{'type':Sequelize[_0x8f09('0xa')]},'mohtime':{'type':Sequelize[_0x8f09('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x8f09('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x8f09('0x3')]},'transfer':{'type':Sequelize[_0x8f09('0xb')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x8f09('0x3')]},'transferuniqueid':{'type':Sequelize[_0x8f09('0x3')]},'disposition':{'type':Sequelize[_0x8f09('0x3')]},'secondDisposition':{'type':Sequelize[_0x8f09('0x3')]},'thirdDisposition':{'type':Sequelize[_0x8f09('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x8f09('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaad2=['DATE','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','getDataValue','queuecallerjoinAt','format','diff','seconds','queuecallerleaveAt','setDataValue','holdtime','INTEGER','BOOLEAN'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0xaad2,0xe0));var _0x2aad=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xaad2[_0x4ae6ef];return _0x3cbb4e;};'use strict';var Sequelize=require(_0x2aad('0x0'));var moment=require(_0x2aad('0x1'));module[_0x2aad('0x2')]={'type':{'type':Sequelize[_0x2aad('0x3')]},'uniqueid':{'type':Sequelize[_0x2aad('0x3')]},'calleridnum':{'type':Sequelize[_0x2aad('0x3')]},'calleridname':{'type':Sequelize[_0x2aad('0x3')]},'queue':{'type':Sequelize[_0x2aad('0x3')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x5c5e5f){var _0x12e5e4=moment(_0x5c5e5f);var _0x58ed37=moment(this[_0x2aad('0x4')](_0x2aad('0x5')))[_0x2aad('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x48f8c7=_0x12e5e4[_0x2aad('0x7')](_0x58ed37,_0x2aad('0x8'));this['setDataValue'](_0x2aad('0x9'),_0x5c5e5f);this[_0x2aad('0xa')](_0x2aad('0xb'),_0x48f8c7||null);}},'position':{'type':Sequelize[_0x2aad('0xc')]},'count':{'type':Sequelize[_0x2aad('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x2aad('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x2aad('0xe')]},'queuecallerexit':{'type':Sequelize[_0x2aad('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x2aad('0xe')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x2aad('0xf')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x2aad('0x3')]},'connectedlinenum':{'type':Sequelize[_0x2aad('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x2aad('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x2aad('0x3')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0x2aad('0xc')]},'mohtime':{'type':Sequelize[_0x2aad('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x2aad('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x2aad('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2aad('0x3')],'comment':_0x2aad('0x10')},'transferexten':{'type':Sequelize[_0x2aad('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2aad('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0x2aad('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 729da93..c649756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13af=['type','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','include','catch','show','params','keys','options','find','create','update','body','destroy','describe','rows','getVoiceQueuesReport','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','offset','undefined','limit','count','Content-Range','json','apply','save','then','sendStatus','error','name','send','VoiceQueueReport','rawAttributes','fieldName'];(function(_0x4edcc5,_0x3af925){var _0x53f6f5=function(_0x181ee2){while(--_0x181ee2){_0x4edcc5['push'](_0x4edcc5['shift']());}};_0x53f6f5(++_0x3af925);}(_0x13af,0x1bb));var _0xf13a=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x13af[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xf13a('0x0'));var rimraf=require(_0xf13a('0x1'));var zipdir=require(_0xf13a('0x2'));var jsonpatch=require(_0xf13a('0x3'));var rp=require('request-promise');var moment=require(_0xf13a('0x4'));var BPromise=require(_0xf13a('0x5'));var Mustache=require('mustache');var util=require(_0xf13a('0x6'));var path=require(_0xf13a('0x7'));var sox=require(_0xf13a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf13a('0x9'));var _=require(_0xf13a('0xa'));var squel=require('squel');var crypto=require(_0xf13a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf13a('0xc'));var toCsv=require(_0xf13a('0xd'));var querystring=require(_0xf13a('0xe'));var Papa=require(_0xf13a('0xf'));var Redis=require(_0xf13a('0x10'));var authService=require(_0xf13a('0x11'));var qs=require(_0xf13a('0x12'));var as=require(_0xf13a('0x13'));var hardwareService=require(_0xf13a('0x14'));var logger=require('../../config/logger')(_0xf13a('0x15'));var utils=require(_0xf13a('0x16'));var config=require(_0xf13a('0x17'));var licenseUtil=require(_0xf13a('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xf13a('0x19')](config[_0xf13a('0x1a')],{'host':_0xf13a('0x1b'),'port':0x18eb});var socket=require(_0xf13a('0x1c'))(new Redis(config['redis']));require(_0xf13a('0x1d'))[_0xf13a('0x1e')](socket);function respondWithStatusCode(_0x5df62b,_0x50006a){_0x50006a=_0x50006a||0xcc;return function(_0x2af344){if(_0x2af344){return _0x5df62b['sendStatus'](_0x50006a);}return _0x5df62b[_0xf13a('0x1f')](_0x50006a)[_0xf13a('0x20')]();};}function respondWithResult(_0x12e463,_0x7cbc13){_0x7cbc13=_0x7cbc13||0xc8;return function(_0x3f604c){if(_0x3f604c){return _0x12e463[_0xf13a('0x1f')](_0x7cbc13)['json'](_0x3f604c);}};}function respondWithFilteredResult(_0x49b6fb,_0x3ea088){return function(_0x53bcc3){if(_0x53bcc3){var _0x2e46d6=typeof _0x3ea088[_0xf13a('0x21')]===_0xf13a('0x22')&&typeof _0x3ea088[_0xf13a('0x23')]===_0xf13a('0x22');var _0x254d4c=_0x53bcc3[_0xf13a('0x24')];var _0x290921=_0x2e46d6?0x0:_0x3ea088['offset'];var _0xb1d2ea=_0x2e46d6?_0x53bcc3[_0xf13a('0x24')]:_0x3ea088[_0xf13a('0x21')]+_0x3ea088[_0xf13a('0x23')];var _0x3962a4;if(_0xb1d2ea>=_0x254d4c){_0xb1d2ea=_0x254d4c;_0x3962a4=0xc8;}else{_0x3962a4=0xce;}_0x49b6fb[_0xf13a('0x1f')](_0x3962a4);return _0x49b6fb['set'](_0xf13a('0x25'),_0x290921+'-'+_0xb1d2ea+'/'+_0x254d4c)[_0xf13a('0x26')](_0x53bcc3);}return null;};}function patchUpdates(_0x342cbf){return function(_0xd122d3){try{jsonpatch[_0xf13a('0x27')](_0xd122d3,_0x342cbf,!![]);}catch(_0xc3158c){return BPromise['reject'](_0xc3158c);}return _0xd122d3[_0xf13a('0x28')]();};}function saveUpdates(_0x45ea86,_0x30d208){return function(_0x6126bb){if(_0x6126bb){return _0x6126bb['update'](_0x45ea86)[_0xf13a('0x29')](function(_0x4ae9e2){return _0x4ae9e2;});}return null;};}function removeEntity(_0x36834c,_0x22e84e){return function(_0x2674a4){if(_0x2674a4){return _0x2674a4['destroy']()[_0xf13a('0x29')](function(){_0x36834c[_0xf13a('0x1f')](0xcc)[_0xf13a('0x20')]();});}};}function handleEntityNotFound(_0x21a3d6,_0x450730){return function(_0x206696){if(!_0x206696){_0x21a3d6[_0xf13a('0x2a')](0x194);}return _0x206696;};}function handleError(_0x440961,_0x215403){_0x215403=_0x215403||0x1f4;return function(_0x5a2c14){logger[_0xf13a('0x2b')](_0x5a2c14['stack']);if(_0x5a2c14['name']){delete _0x5a2c14[_0xf13a('0x2c')];}_0x440961[_0xf13a('0x1f')](_0x215403)[_0xf13a('0x2d')](_0x5a2c14);};}exports['index']=function(_0x1e4013,_0x656c9e){var _0x53baa7={},_0x4df4ad={},_0x47ee7e={'count':0x0,'rows':[]};var _0x4d6788=_['map'](db[_0xf13a('0x2e')][_0xf13a('0x2f')],function(_0x54058b){return{'name':_0x54058b[_0xf13a('0x30')],'type':_0x54058b[_0xf13a('0x31')]['key']};});_0x4df4ad['model']=_['map'](_0x4d6788,'name');_0x4df4ad[_0xf13a('0x32')]=_['keys'](_0x1e4013[_0xf13a('0x32')]);_0x4df4ad[_0xf13a('0x33')]=_['intersection'](_0x4df4ad[_0xf13a('0x34')],_0x4df4ad[_0xf13a('0x32')]);_0x53baa7['attributes']=_[_0xf13a('0x35')](_0x4df4ad['model'],qs[_0xf13a('0x36')](_0x1e4013[_0xf13a('0x32')]['fields']));_0x53baa7[_0xf13a('0x37')]=_0x53baa7[_0xf13a('0x37')][_0xf13a('0x38')]?_0x53baa7[_0xf13a('0x37')]:_0x4df4ad['model'];if(!_0x1e4013[_0xf13a('0x32')][_0xf13a('0x39')](_0xf13a('0x3a'))){_0x53baa7[_0xf13a('0x23')]=qs['limit'](_0x1e4013[_0xf13a('0x32')]['limit']);_0x53baa7[_0xf13a('0x21')]=qs['offset'](_0x1e4013[_0xf13a('0x32')][_0xf13a('0x21')]);}_0x53baa7[_0xf13a('0x3b')]=qs['sort'](_0x1e4013[_0xf13a('0x32')][_0xf13a('0x3c')]);_0x53baa7[_0xf13a('0x3d')]=qs['filters'](_[_0xf13a('0x3e')](_0x1e4013[_0xf13a('0x32')],_0x4df4ad['filters']),_0x4d6788);if(_0x1e4013['query'][_0xf13a('0x3f')]){_0x53baa7[_0xf13a('0x3d')]=_[_0xf13a('0x40')](_0x53baa7[_0xf13a('0x3d')],{'$or':_[_0xf13a('0x41')](_0x4d6788,function(_0x2f662b){if(_0x2f662b['type']!==_0xf13a('0x42')){var _0xb4f2f4={};_0xb4f2f4[_0x2f662b['name']]={'$like':'%'+_0x1e4013[_0xf13a('0x32')][_0xf13a('0x3f')]+'%'};return _0xb4f2f4;}})});}_0x53baa7=_[_0xf13a('0x40')]({},_0x53baa7,_0x1e4013['options']);var _0xf9749e={'where':_0x53baa7[_0xf13a('0x3d')]};return db['VoiceQueueReport'][_0xf13a('0x24')](_0xf9749e)[_0xf13a('0x29')](function(_0x3709f2){_0x47ee7e[_0xf13a('0x24')]=_0x3709f2;if(_0x1e4013[_0xf13a('0x32')][_0xf13a('0x43')]){_0x53baa7[_0xf13a('0x44')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x53baa7);})['then'](function(_0x2b52b1){_0x47ee7e['rows']=_0x2b52b1;return _0x47ee7e;})[_0xf13a('0x29')](respondWithFilteredResult(_0x656c9e,_0x53baa7))[_0xf13a('0x45')](handleError(_0x656c9e,null));};exports[_0xf13a('0x46')]=function(_0x53620c,_0x15d512){var _0x4ca83b={'raw':![],'where':{'id':_0x53620c[_0xf13a('0x47')]['id']}},_0x1abe90={};_0x1abe90[_0xf13a('0x34')]=_[_0xf13a('0x48')](db[_0xf13a('0x2e')]['rawAttributes']);_0x1abe90['query']=_['keys'](_0x53620c[_0xf13a('0x32')]);_0x1abe90[_0xf13a('0x33')]=_[_0xf13a('0x35')](_0x1abe90[_0xf13a('0x34')],_0x1abe90['query']);_0x4ca83b['attributes']=_[_0xf13a('0x35')](_0x1abe90[_0xf13a('0x34')],qs[_0xf13a('0x36')](_0x53620c[_0xf13a('0x32')][_0xf13a('0x36')]));_0x4ca83b[_0xf13a('0x37')]=_0x4ca83b[_0xf13a('0x37')][_0xf13a('0x38')]?_0x4ca83b[_0xf13a('0x37')]:_0x1abe90[_0xf13a('0x34')];if(_0x53620c[_0xf13a('0x32')][_0xf13a('0x43')]){_0x4ca83b[_0xf13a('0x44')]=[{'all':!![]}];}_0x4ca83b=_[_0xf13a('0x40')]({},_0x4ca83b,_0x53620c[_0xf13a('0x49')]);return db[_0xf13a('0x2e')][_0xf13a('0x4a')](_0x4ca83b)['then'](handleEntityNotFound(_0x15d512,null))[_0xf13a('0x29')](respondWithResult(_0x15d512,null))[_0xf13a('0x45')](handleError(_0x15d512,null));};exports[_0xf13a('0x4b')]=function(_0x3fe44d,_0x959b46){return db[_0xf13a('0x2e')][_0xf13a('0x4b')](_0x3fe44d['body'],{})[_0xf13a('0x29')](respondWithResult(_0x959b46,0xc9))[_0xf13a('0x45')](handleError(_0x959b46,null));};exports[_0xf13a('0x4c')]=function(_0x58811a,_0xa4ef91){if(_0x58811a[_0xf13a('0x4d')]['id']){delete _0x58811a['body']['id'];}return db[_0xf13a('0x2e')][_0xf13a('0x4a')]({'where':{'id':_0x58811a['params']['id']}})['then'](handleEntityNotFound(_0xa4ef91,null))[_0xf13a('0x29')](saveUpdates(_0x58811a[_0xf13a('0x4d')],null))[_0xf13a('0x29')](respondWithResult(_0xa4ef91,null))['catch'](handleError(_0xa4ef91,null));};exports[_0xf13a('0x4e')]=function(_0xe72752,_0x496da2){return db['VoiceQueueReport'][_0xf13a('0x4a')]({'where':{'id':_0xe72752[_0xf13a('0x47')]['id']}})[_0xf13a('0x29')](handleEntityNotFound(_0x496da2,null))[_0xf13a('0x29')](removeEntity(_0x496da2,null))['catch'](handleError(_0x496da2,null));};exports[_0xf13a('0x4f')]=function(_0x5e7640,_0x226388){return db[_0xf13a('0x2e')][_0xf13a('0x4f')]()[_0xf13a('0x29')](respondWithResult(_0x226388,null))[_0xf13a('0x45')](handleError(_0x226388,null));};exports['getVoiceQueuesReport']=function(_0x3365cc,_0x2a3af9){var _0x391abd={},_0x5dd6dc={},_0x22b272={'count':0x0,'rows':[]};_0x5dd6dc['model']=_[_0xf13a('0x48')](db['VoiceQueueReport'][_0xf13a('0x2f')]);_0x5dd6dc[_0xf13a('0x32')]=_[_0xf13a('0x48')](_0x3365cc['query']);_0x5dd6dc[_0xf13a('0x33')]=_['intersection'](_0x5dd6dc['model'],_0x5dd6dc[_0xf13a('0x32')]);_0x391abd['attributes']=_[_0xf13a('0x35')](_0x5dd6dc[_0xf13a('0x34')],qs[_0xf13a('0x36')](_0x3365cc[_0xf13a('0x32')][_0xf13a('0x36')]));_0x391abd[_0xf13a('0x37')]=_0x391abd[_0xf13a('0x37')][_0xf13a('0x38')]?_0x391abd['attributes']:_0x5dd6dc[_0xf13a('0x34')];if(!_0x3365cc[_0xf13a('0x32')][_0xf13a('0x39')]('nolimit')){_0x391abd[_0xf13a('0x23')]=qs[_0xf13a('0x23')](_0x3365cc[_0xf13a('0x32')][_0xf13a('0x23')]);_0x391abd[_0xf13a('0x21')]=qs['offset'](_0x3365cc[_0xf13a('0x32')][_0xf13a('0x21')]);}_0x391abd[_0xf13a('0x3b')]=qs[_0xf13a('0x3c')](_0x3365cc[_0xf13a('0x32')][_0xf13a('0x3c')]);_0x391abd['where']=qs['filters'](_[_0xf13a('0x3e')](_0x3365cc['query'],_0x5dd6dc[_0xf13a('0x33')]));if(_0x3365cc['query'][_0xf13a('0x3f')]){_0x391abd[_0xf13a('0x3d')]=_['merge'](_0x391abd[_0xf13a('0x3d')],{'$or':_[_0xf13a('0x41')](_0x391abd[_0xf13a('0x37')],function(_0x250783){var _0x10fcbd={};_0x10fcbd[_0x250783]={'$like':'%'+_0x3365cc[_0xf13a('0x32')][_0xf13a('0x3f')]+'%'};return _0x10fcbd;})});}_0x391abd=_[_0xf13a('0x40')]({},_0x391abd,_0x3365cc[_0xf13a('0x49')]);var _0x2535bc={'where':_0x391abd[_0xf13a('0x3d')]};return db[_0xf13a('0x2e')][_0xf13a('0x24')](_0x2535bc)[_0xf13a('0x29')](function(_0x23975f){_0x22b272[_0xf13a('0x24')]=_0x23975f;if(_0x3365cc[_0xf13a('0x32')][_0xf13a('0x43')]){_0x391abd[_0xf13a('0x44')]=[{'all':!![]}];}return db[_0xf13a('0x2e')]['findAll'](_0x391abd);})[_0xf13a('0x29')](function(_0x2699ab){_0x22b272[_0xf13a('0x50')]=_0x2699ab;return _0x22b272;})['then'](respondWithFilteredResult(_0x2a3af9,_0x391abd,'getVoiceQueuesReport'))[_0xf13a('0x45')](handleError(_0x2a3af9,null,_0xf13a('0x51')));};
\ No newline at end of file
+var _0x4d87=['count','set','update','then','destroy','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','getVoiceQueuesReport','hasOwnProperty','filter','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','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','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','offset','undefined','limit'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0x4d87,0x1c6));var _0x74d8=function(_0xe35f93,_0xca1db){_0xe35f93=_0xe35f93-0x0;var _0x280913=_0x4d87[_0xe35f93];return _0x280913;};'use strict';var emlformat=require(_0x74d8('0x0'));var rimraf=require(_0x74d8('0x1'));var zipdir=require(_0x74d8('0x2'));var jsonpatch=require(_0x74d8('0x3'));var rp=require(_0x74d8('0x4'));var moment=require(_0x74d8('0x5'));var BPromise=require(_0x74d8('0x6'));var Mustache=require(_0x74d8('0x7'));var util=require(_0x74d8('0x8'));var path=require(_0x74d8('0x9'));var sox=require('sox');var csv=require(_0x74d8('0xa'));var ejs=require(_0x74d8('0xb'));var fs=require('fs');var fs_extra=require(_0x74d8('0xc'));var _=require(_0x74d8('0xd'));var squel=require('squel');var crypto=require(_0x74d8('0xe'));var jsforce=require(_0x74d8('0xf'));var deskjs=require(_0x74d8('0x10'));var toCsv=require('to-csv');var querystring=require(_0x74d8('0x11'));var Papa=require(_0x74d8('0x12'));var Redis=require('ioredis');var authService=require(_0x74d8('0x13'));var qs=require(_0x74d8('0x14'));var as=require(_0x74d8('0x15'));var hardwareService=require(_0x74d8('0x16'));var logger=require(_0x74d8('0x17'))('api');var utils=require(_0x74d8('0x18'));var config=require(_0x74d8('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x74d8('0x1a'))['db'];config[_0x74d8('0x1b')]=_['defaults'](config[_0x74d8('0x1b')],{'host':_0x74d8('0x1c'),'port':0x18eb});var socket=require(_0x74d8('0x1d'))(new Redis(config['redis']));require(_0x74d8('0x1e'))[_0x74d8('0x1f')](socket);function respondWithStatusCode(_0x53f5de,_0xeb0c12){_0xeb0c12=_0xeb0c12||0xcc;return function(_0xefd6f1){if(_0xefd6f1){return _0x53f5de[_0x74d8('0x20')](_0xeb0c12);}return _0x53f5de[_0x74d8('0x21')](_0xeb0c12)[_0x74d8('0x22')]();};}function respondWithResult(_0x4938ae,_0x22d2c4){_0x22d2c4=_0x22d2c4||0xc8;return function(_0x59b8bb){if(_0x59b8bb){return _0x4938ae['status'](_0x22d2c4)['json'](_0x59b8bb);}};}function respondWithFilteredResult(_0x8cf5fa,_0x260a2d){return function(_0x19b132){if(_0x19b132){var _0x51c40b=typeof _0x260a2d[_0x74d8('0x23')]===_0x74d8('0x24')&&typeof _0x260a2d[_0x74d8('0x25')]===_0x74d8('0x24');var _0x477c63=_0x19b132['count'];var _0x4df131=_0x51c40b?0x0:_0x260a2d['offset'];var _0xffe8e0=_0x51c40b?_0x19b132[_0x74d8('0x26')]:_0x260a2d[_0x74d8('0x23')]+_0x260a2d[_0x74d8('0x25')];var _0x4b4379;if(_0xffe8e0>=_0x477c63){_0xffe8e0=_0x477c63;_0x4b4379=0xc8;}else{_0x4b4379=0xce;}_0x8cf5fa[_0x74d8('0x21')](_0x4b4379);return _0x8cf5fa[_0x74d8('0x27')]('Content-Range',_0x4df131+'-'+_0xffe8e0+'/'+_0x477c63)['json'](_0x19b132);}return null;};}function patchUpdates(_0x2f0f89){return function(_0x5e916c){try{jsonpatch['apply'](_0x5e916c,_0x2f0f89,!![]);}catch(_0x59651f){return BPromise['reject'](_0x59651f);}return _0x5e916c['save']();};}function saveUpdates(_0x4185d1,_0x26a88f){return function(_0x3564c8){if(_0x3564c8){return _0x3564c8[_0x74d8('0x28')](_0x4185d1)[_0x74d8('0x29')](function(_0x4194a7){return _0x4194a7;});}return null;};}function removeEntity(_0x3ee288,_0x67a7d6){return function(_0x3362e1){if(_0x3362e1){return _0x3362e1[_0x74d8('0x2a')]()[_0x74d8('0x29')](function(){_0x3ee288[_0x74d8('0x21')](0xcc)[_0x74d8('0x22')]();});}};}function handleEntityNotFound(_0x594496,_0x4d8d93){return function(_0x1ae2b7){if(!_0x1ae2b7){_0x594496[_0x74d8('0x20')](0x194);}return _0x1ae2b7;};}function handleError(_0x12d2e9,_0x2054a6){_0x2054a6=_0x2054a6||0x1f4;return function(_0x2683d8){logger[_0x74d8('0x2b')](_0x2683d8[_0x74d8('0x2c')]);if(_0x2683d8[_0x74d8('0x2d')]){delete _0x2683d8[_0x74d8('0x2d')];}_0x12d2e9[_0x74d8('0x21')](_0x2054a6)[_0x74d8('0x2e')](_0x2683d8);};}exports[_0x74d8('0x2f')]=function(_0x43fe9e,_0x4959bd){var _0x9b2631={},_0x84e786={},_0x51fbee={'count':0x0,'rows':[]};var _0x47e69d=_[_0x74d8('0x30')](db[_0x74d8('0x31')][_0x74d8('0x32')],function(_0x44ab5d){return{'name':_0x44ab5d[_0x74d8('0x33')],'type':_0x44ab5d[_0x74d8('0x34')][_0x74d8('0x35')]};});_0x84e786[_0x74d8('0x36')]=_[_0x74d8('0x30')](_0x47e69d,'name');_0x84e786[_0x74d8('0x37')]=_[_0x74d8('0x38')](_0x43fe9e['query']);_0x84e786[_0x74d8('0x39')]=_[_0x74d8('0x3a')](_0x84e786[_0x74d8('0x36')],_0x84e786[_0x74d8('0x37')]);_0x9b2631[_0x74d8('0x3b')]=_[_0x74d8('0x3a')](_0x84e786[_0x74d8('0x36')],qs[_0x74d8('0x3c')](_0x43fe9e[_0x74d8('0x37')][_0x74d8('0x3c')]));_0x9b2631[_0x74d8('0x3b')]=_0x9b2631['attributes'][_0x74d8('0x3d')]?_0x9b2631[_0x74d8('0x3b')]:_0x84e786[_0x74d8('0x36')];if(!_0x43fe9e[_0x74d8('0x37')]['hasOwnProperty'](_0x74d8('0x3e'))){_0x9b2631[_0x74d8('0x25')]=qs['limit'](_0x43fe9e[_0x74d8('0x37')]['limit']);_0x9b2631[_0x74d8('0x23')]=qs['offset'](_0x43fe9e[_0x74d8('0x37')][_0x74d8('0x23')]);}_0x9b2631[_0x74d8('0x3f')]=qs[_0x74d8('0x40')](_0x43fe9e[_0x74d8('0x37')]['sort']);_0x9b2631[_0x74d8('0x41')]=qs[_0x74d8('0x39')](_['pick'](_0x43fe9e[_0x74d8('0x37')],_0x84e786['filters']),_0x47e69d);if(_0x43fe9e[_0x74d8('0x37')]['filter']){_0x9b2631['where']=_[_0x74d8('0x42')](_0x9b2631[_0x74d8('0x41')],{'$or':_[_0x74d8('0x30')](_0x47e69d,function(_0x5b0371){if(_0x5b0371['type']!=='VIRTUAL'){var _0x4395c2={};_0x4395c2[_0x5b0371['name']]={'$like':'%'+_0x43fe9e['query']['filter']+'%'};return _0x4395c2;}})});}_0x9b2631=_[_0x74d8('0x42')]({},_0x9b2631,_0x43fe9e[_0x74d8('0x43')]);var _0x247905={'where':_0x9b2631[_0x74d8('0x41')]};return db[_0x74d8('0x31')][_0x74d8('0x26')](_0x247905)[_0x74d8('0x29')](function(_0x3db6f5){_0x51fbee[_0x74d8('0x26')]=_0x3db6f5;if(_0x43fe9e['query']['includeAll']){_0x9b2631[_0x74d8('0x44')]=[{'all':!![]}];}return db[_0x74d8('0x31')][_0x74d8('0x45')](_0x9b2631);})[_0x74d8('0x29')](function(_0x3b64ff){_0x51fbee[_0x74d8('0x46')]=_0x3b64ff;return _0x51fbee;})[_0x74d8('0x29')](respondWithFilteredResult(_0x4959bd,_0x9b2631))[_0x74d8('0x47')](handleError(_0x4959bd,null));};exports[_0x74d8('0x48')]=function(_0x53d2f0,_0x58a44f){var _0x3a9155={'raw':![],'where':{'id':_0x53d2f0[_0x74d8('0x49')]['id']}},_0x428962={};_0x428962[_0x74d8('0x36')]=_[_0x74d8('0x38')](db[_0x74d8('0x31')][_0x74d8('0x32')]);_0x428962['query']=_[_0x74d8('0x38')](_0x53d2f0[_0x74d8('0x37')]);_0x428962[_0x74d8('0x39')]=_[_0x74d8('0x3a')](_0x428962['model'],_0x428962[_0x74d8('0x37')]);_0x3a9155[_0x74d8('0x3b')]=_['intersection'](_0x428962[_0x74d8('0x36')],qs['fields'](_0x53d2f0[_0x74d8('0x37')][_0x74d8('0x3c')]));_0x3a9155[_0x74d8('0x3b')]=_0x3a9155[_0x74d8('0x3b')][_0x74d8('0x3d')]?_0x3a9155[_0x74d8('0x3b')]:_0x428962['model'];if(_0x53d2f0['query'][_0x74d8('0x4a')]){_0x3a9155[_0x74d8('0x44')]=[{'all':!![]}];}_0x3a9155=_[_0x74d8('0x42')]({},_0x3a9155,_0x53d2f0[_0x74d8('0x43')]);return db[_0x74d8('0x31')][_0x74d8('0x4b')](_0x3a9155)['then'](handleEntityNotFound(_0x58a44f,null))['then'](respondWithResult(_0x58a44f,null))[_0x74d8('0x47')](handleError(_0x58a44f,null));};exports[_0x74d8('0x4c')]=function(_0x155c2d,_0x25d88b){return db[_0x74d8('0x31')]['create'](_0x155c2d[_0x74d8('0x4d')],{})[_0x74d8('0x29')](respondWithResult(_0x25d88b,0xc9))[_0x74d8('0x47')](handleError(_0x25d88b,null));};exports[_0x74d8('0x28')]=function(_0x12b014,_0x304363){if(_0x12b014[_0x74d8('0x4d')]['id']){delete _0x12b014['body']['id'];}return db[_0x74d8('0x31')][_0x74d8('0x4b')]({'where':{'id':_0x12b014[_0x74d8('0x49')]['id']}})['then'](handleEntityNotFound(_0x304363,null))[_0x74d8('0x29')](saveUpdates(_0x12b014[_0x74d8('0x4d')],null))[_0x74d8('0x29')](respondWithResult(_0x304363,null))[_0x74d8('0x47')](handleError(_0x304363,null));};exports[_0x74d8('0x2a')]=function(_0x47a509,_0x40fed2){return db[_0x74d8('0x31')][_0x74d8('0x4b')]({'where':{'id':_0x47a509[_0x74d8('0x49')]['id']}})['then'](handleEntityNotFound(_0x40fed2,null))['then'](removeEntity(_0x40fed2,null))['catch'](handleError(_0x40fed2,null));};exports[_0x74d8('0x4e')]=function(_0x789aee,_0x3770ee){return db[_0x74d8('0x31')]['describe']()['then'](respondWithResult(_0x3770ee,null))[_0x74d8('0x47')](handleError(_0x3770ee,null));};exports[_0x74d8('0x4f')]=function(_0x203c3d,_0x56682e){var _0x210a11={},_0x2f008e={},_0x28a50b={'count':0x0,'rows':[]};_0x2f008e['model']=_[_0x74d8('0x38')](db['VoiceQueueReport']['rawAttributes']);_0x2f008e[_0x74d8('0x37')]=_[_0x74d8('0x38')](_0x203c3d[_0x74d8('0x37')]);_0x2f008e[_0x74d8('0x39')]=_['intersection'](_0x2f008e['model'],_0x2f008e[_0x74d8('0x37')]);_0x210a11[_0x74d8('0x3b')]=_[_0x74d8('0x3a')](_0x2f008e['model'],qs['fields'](_0x203c3d[_0x74d8('0x37')][_0x74d8('0x3c')]));_0x210a11[_0x74d8('0x3b')]=_0x210a11[_0x74d8('0x3b')]['length']?_0x210a11[_0x74d8('0x3b')]:_0x2f008e[_0x74d8('0x36')];if(!_0x203c3d[_0x74d8('0x37')][_0x74d8('0x50')](_0x74d8('0x3e'))){_0x210a11[_0x74d8('0x25')]=qs['limit'](_0x203c3d[_0x74d8('0x37')]['limit']);_0x210a11['offset']=qs['offset'](_0x203c3d['query'][_0x74d8('0x23')]);}_0x210a11['order']=qs[_0x74d8('0x40')](_0x203c3d['query'][_0x74d8('0x40')]);_0x210a11[_0x74d8('0x41')]=qs[_0x74d8('0x39')](_['pick'](_0x203c3d['query'],_0x2f008e[_0x74d8('0x39')]));if(_0x203c3d['query']['filter']){_0x210a11[_0x74d8('0x41')]=_[_0x74d8('0x42')](_0x210a11[_0x74d8('0x41')],{'$or':_[_0x74d8('0x30')](_0x210a11[_0x74d8('0x3b')],function(_0x32fd00){var _0x38c967={};_0x38c967[_0x32fd00]={'$like':'%'+_0x203c3d[_0x74d8('0x37')][_0x74d8('0x51')]+'%'};return _0x38c967;})});}_0x210a11=_[_0x74d8('0x42')]({},_0x210a11,_0x203c3d[_0x74d8('0x43')]);var _0x5118e5={'where':_0x210a11['where']};return db[_0x74d8('0x31')][_0x74d8('0x26')](_0x5118e5)[_0x74d8('0x29')](function(_0xe046a){_0x28a50b[_0x74d8('0x26')]=_0xe046a;if(_0x203c3d['query'][_0x74d8('0x4a')]){_0x210a11[_0x74d8('0x44')]=[{'all':!![]}];}return db[_0x74d8('0x31')][_0x74d8('0x45')](_0x210a11);})['then'](function(_0x357781){_0x28a50b['rows']=_0x357781;return _0x28a50b;})[_0x74d8('0x29')](respondWithFilteredResult(_0x56682e,_0x210a11,_0x74d8('0x4f')))[_0x74d8('0x47')](handleError(_0x56682e,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index 44fc798..7397540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ad=['update','emit','hook','exports','../../mysqldb','save'];(function(_0xeb766a,_0x1b4da3){var _0x59de49=function(_0x8e061e){while(--_0x8e061e){_0xeb766a['push'](_0xeb766a['shift']());}};_0x59de49(++_0x1b4da3);}(_0x51ad,0xd6));var _0xd51a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x51ad[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xd51a('0x0'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd51a('0x1'),'afterUpdate':_0xd51a('0x2'),'afterDestroy':'remove'};function emitEvent(_0x26064d){return function(_0x4dca63,_0x442071,_0x4a7c38){VoiceQueueReportEvents[_0xd51a('0x3')](_0x26064d+':'+_0x4dca63['id'],_0x4dca63);VoiceQueueReportEvents[_0xd51a('0x3')](_0x26064d,_0x4dca63);_0x4a7c38(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xd51a('0x4')](e,emitEvent(event));}}module[_0xd51a('0x5')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x2bfd=['hasOwnProperty','hook','exports','events','VoiceQueueReport','setMaxListeners','save','update','remove','emit'];(function(_0x7226b6,_0x27ad47){var _0x410202=function(_0x58fff4){while(--_0x58fff4){_0x7226b6['push'](_0x7226b6['shift']());}};_0x410202(++_0x27ad47);}(_0x2bfd,0x11b));var _0xd2bf=function(_0x314a8c,_0x1c2e8d){_0x314a8c=_0x314a8c-0x0;var _0x1d4607=_0x2bfd[_0x314a8c];return _0x1d4607;};'use strict';var EventEmitter=require(_0xd2bf('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0xd2bf('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xd2bf('0x2')](0x0);var events={'afterCreate':_0xd2bf('0x3'),'afterUpdate':_0xd2bf('0x4'),'afterDestroy':_0xd2bf('0x5')};function emitEvent(_0x59417c){return function(_0x4203b3,_0x54c19c,_0x266b19){VoiceQueueReportEvents[_0xd2bf('0x6')](_0x59417c+':'+_0x4203b3['id'],_0x4203b3);VoiceQueueReportEvents[_0xd2bf('0x6')](_0x59417c,_0x4203b3);_0x266b19(null);};}for(var e in events){if(events[_0xd2bf('0x7')](e)){var event=events[e];VoiceQueueReport[_0xd2bf('0x8')](e,emitEvent(event));}}module[_0xd2bf('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
index 4f8f4da..eb0311a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94b1=['../../config/environment','./voiceQueueReport.attributes','VoiceQueueReport','report_queue','uniqueid','calleridnum','util','api','moment','bluebird','path','rimraf'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x94b1,0x102));var _0x194b=function(_0x459f58,_0x18e32f){_0x459f58=_0x459f58-0x0;var _0x36de05=_0x94b1[_0x459f58];return _0x36de05;};'use strict';var _=require('lodash');var util=require(_0x194b('0x0'));var logger=require('../../config/logger')(_0x194b('0x1'));var moment=require(_0x194b('0x2'));var BPromise=require(_0x194b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x194b('0x4'));var rimraf=require(_0x194b('0x5'));var config=require(_0x194b('0x6'));var attributes=require(_0x194b('0x7'));module['exports']=function(_0x3a15fb,_0x31b63d){return _0x3a15fb['define'](_0x194b('0x8'),attributes,{'tableName':_0x194b('0x9'),'paranoid':![],'indexes':[{'fields':[_0x194b('0xa')]},{'fields':[_0x194b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9116=['api','moment','bluebird','request-promise','path','../../config/environment','./voiceQueueReport.attributes','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','../../config/logger'];(function(_0x1e41d2,_0x147701){var _0x47c3da=function(_0x5766ee){while(--_0x5766ee){_0x1e41d2['push'](_0x1e41d2['shift']());}};_0x47c3da(++_0x147701);}(_0x9116,0x10f));var _0x6911=function(_0x414a33,_0x5bf179){_0x414a33=_0x414a33-0x0;var _0x1922bd=_0x9116[_0x414a33];return _0x1922bd;};'use strict';var _=require(_0x6911('0x0'));var util=require('util');var logger=require(_0x6911('0x1'))(_0x6911('0x2'));var moment=require(_0x6911('0x3'));var BPromise=require(_0x6911('0x4'));var rp=require(_0x6911('0x5'));var fs=require('fs');var path=require(_0x6911('0x6'));var rimraf=require('rimraf');var config=require(_0x6911('0x7'));var attributes=require(_0x6911('0x8'));module['exports']=function(_0xb79588,_0x2b6d26){return _0xb79588['define'](_0x6911('0x9'),attributes,{'tableName':_0x6911('0xa'),'paranoid':![],'indexes':[{'fields':[_0x6911('0xb')]},{'fields':[_0x6911('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f86948b..003af06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe883=['socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','request\x20sent','debug','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','GetVoiceQueueReport','VoiceQueueReport','options','raw','where','limit','include','map','model','attributes','stringify','catch','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis'];(function(_0x4e69d3,_0x2264c0){var _0x40cd05=function(_0x44c8fd){while(--_0x44c8fd){_0x4e69d3['push'](_0x4e69d3['shift']());}};_0x40cd05(++_0x2264c0);}(_0xe883,0x6e));var _0x3e88=function(_0x26f702,_0x3919bf){_0x26f702=_0x26f702-0x0;var _0x11417d=_0xe883[_0x26f702];return _0x11417d;};'use strict';var _=require(_0x3e88('0x0'));var util=require(_0x3e88('0x1'));var moment=require(_0x3e88('0x2'));var BPromise=require(_0x3e88('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e88('0x4'))['db'];var utils=require(_0x3e88('0x5'));var logger=require('../../config/logger')(_0x3e88('0x6'));var config=require(_0x3e88('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3e88('0x8')]({'port':0x232a});config[_0x3e88('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3e88('0xa'))(new Redis(config[_0x3e88('0x9')]));require(_0x3e88('0xb'))[_0x3e88('0xc')](socket);function respondWithRpcPromise(_0x153685,_0x36c71d,_0x3ea2f4){return new BPromise(function(_0x53aea7,_0x50b72e){return client[_0x3e88('0xd')](_0x153685,_0x3ea2f4)[_0x3e88('0xe')](function(_0x4f1555){logger[_0x3e88('0xf')]('VoiceQueueReport,\x20%s,\x20%s',_0x36c71d,_0x3e88('0x10'));logger[_0x3e88('0x11')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x36c71d,_0x3e88('0x10'),JSON['stringify'](_0x4f1555));if(_0x4f1555[_0x3e88('0x12')]){if(_0x4f1555[_0x3e88('0x12')][_0x3e88('0x13')]===0x1f4){logger[_0x3e88('0x12')](_0x3e88('0x14'),_0x36c71d,_0x4f1555[_0x3e88('0x12')][_0x3e88('0x15')]);return _0x50b72e(_0x4f1555[_0x3e88('0x12')][_0x3e88('0x15')]);}logger[_0x3e88('0x12')](_0x3e88('0x14'),_0x36c71d,_0x4f1555[_0x3e88('0x12')][_0x3e88('0x15')]);return _0x53aea7(_0x4f1555[_0x3e88('0x12')][_0x3e88('0x15')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x36c71d,_0x3e88('0x10'));_0x53aea7(_0x4f1555[_0x3e88('0x16')][_0x3e88('0x15')]);}})['catch'](function(_0x1be967){logger[_0x3e88('0x12')](_0x3e88('0x14'),_0x36c71d,_0x1be967);_0x50b72e(_0x1be967);});});}exports[_0x3e88('0x17')]=function(_0x21749c){var _0x1d66be=this;return new Promise(function(_0x12acdf,_0x2e867a){return db[_0x3e88('0x18')]['findAll']({'raw':_0x21749c['options']?_0x21749c[_0x3e88('0x19')][_0x3e88('0x1a')]===undefined?!![]:![]:!![],'where':_0x21749c[_0x3e88('0x19')]?_0x21749c[_0x3e88('0x19')][_0x3e88('0x1b')]||null:null,'attributes':_0x21749c[_0x3e88('0x19')]?_0x21749c['options']['attributes']||null:null,'limit':_0x21749c['options']?_0x21749c[_0x3e88('0x19')][_0x3e88('0x1c')]||null:null,'include':_0x21749c[_0x3e88('0x19')]?_0x21749c[_0x3e88('0x19')][_0x3e88('0x1d')]?_[_0x3e88('0x1e')](_0x21749c['options'][_0x3e88('0x1d')],function(_0x24b76e){return{'model':db[_0x24b76e[_0x3e88('0x1f')]],'as':_0x24b76e['as'],'attributes':_0x24b76e[_0x3e88('0x20')],'include':_0x24b76e[_0x3e88('0x1d')]?_['map'](_0x24b76e['include'],function(_0x519d49){return{'model':db[_0x519d49['model']],'as':_0x519d49['as'],'attributes':_0x519d49[_0x3e88('0x20')],'include':_0x519d49[_0x3e88('0x1d')]?_[_0x3e88('0x1e')](_0x519d49[_0x3e88('0x1d')],function(_0x358d6b){return{'model':db[_0x358d6b[_0x3e88('0x1f')]],'as':_0x358d6b['as'],'attributes':_0x358d6b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x52176b){logger[_0x3e88('0xf')](_0x3e88('0x17'),_0x21749c);logger[_0x3e88('0x11')](_0x3e88('0x17'),_0x21749c,JSON[_0x3e88('0x21')](_0x52176b));_0x12acdf(_0x52176b);})[_0x3e88('0x22')](function(_0x1b385b){logger[_0x3e88('0x12')](_0x3e88('0x17'),_0x1b385b[_0x3e88('0x15')],_0x21749c);_0x2e867a(_0x1d66be[_0x3e88('0x12')](0x1f4,_0x1b385b[_0x3e88('0x15')]));});});};exports[_0x3e88('0x23')]=function(_0x5e0427){var _0x48776f=this;return new Promise(function(_0x4cdd49,_0x1b26a6){return db[_0x3e88('0x18')][_0x3e88('0x24')](_0x5e0427[_0x3e88('0x25')],{'raw':_0x5e0427['options']?_0x5e0427[_0x3e88('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x3e88('0xe')](function(_0x26d00a){logger[_0x3e88('0xf')]('CreateVoiceQueueReport',_0x5e0427);logger[_0x3e88('0x11')](_0x3e88('0x23'),_0x5e0427,JSON[_0x3e88('0x21')](_0x26d00a));_0x4cdd49(_0x26d00a);})[_0x3e88('0x22')](function(_0x185753){logger[_0x3e88('0x12')](_0x3e88('0x23'),_0x185753[_0x3e88('0x15')],_0x5e0427);_0x1b26a6(_0x48776f[_0x3e88('0x12')](0x1f4,_0x185753['message']));});});};exports[_0x3e88('0x26')]=function(_0x2d47a2){var _0x598ffa=this;return new Promise(function(_0x2ba69a,_0x3ef7b7){return db[_0x3e88('0x18')][_0x3e88('0x27')](_0x2d47a2[_0x3e88('0x25')],{'raw':_0x2d47a2[_0x3e88('0x19')]?_0x2d47a2[_0x3e88('0x19')][_0x3e88('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d47a2[_0x3e88('0x19')]?_0x2d47a2[_0x3e88('0x19')][_0x3e88('0x1b')]||null:null,'attributes':_0x2d47a2[_0x3e88('0x19')]?_0x2d47a2[_0x3e88('0x19')][_0x3e88('0x20')]||null:null,'limit':_0x2d47a2['options']?_0x2d47a2[_0x3e88('0x19')][_0x3e88('0x1c')]||null:null})['then'](function(_0x1b59e9){logger[_0x3e88('0xf')](_0x3e88('0x26'),_0x2d47a2);logger['debug'](_0x3e88('0x26'),_0x2d47a2,JSON[_0x3e88('0x21')](_0x1b59e9));_0x2ba69a(_0x1b59e9);})['catch'](function(_0x42a5d1){logger[_0x3e88('0x12')](_0x3e88('0x26'),_0x42a5d1[_0x3e88('0x15')],_0x2d47a2);_0x3ef7b7(_0x598ffa[_0x3e88('0x12')](0x1f4,_0x42a5d1[_0x3e88('0x15')]));});});};
\ No newline at end of file
+var _0x2d3c=['message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','include','model','map','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','update','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x166870,_0x30ab39){var _0x12d24c=function(_0x141c87){while(--_0x141c87){_0x166870['push'](_0x166870['shift']());}};_0x12d24c(++_0x30ab39);}(_0x2d3c,0x1eb));var _0xc2d3=function(_0x1cefb9,_0x21db7d){_0x1cefb9=_0x1cefb9-0x0;var _0x1c8c72=_0x2d3c[_0x1cefb9];return _0x1c8c72;};'use strict';var _=require('lodash');var util=require(_0xc2d3('0x0'));var moment=require(_0xc2d3('0x1'));var BPromise=require('bluebird');var rs=require(_0xc2d3('0x2'));var fs=require('fs');var Redis=require(_0xc2d3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc2d3('0x4'));var logger=require(_0xc2d3('0x5'))(_0xc2d3('0x6'));var config=require(_0xc2d3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc2d3('0x8')]['http']({'port':0x232a});config['redis']=_[_0xc2d3('0x9')](config[_0xc2d3('0xa')],{'host':_0xc2d3('0xb'),'port':0x18eb});var socket=require(_0xc2d3('0xc'))(new Redis(config[_0xc2d3('0xa')]));require(_0xc2d3('0xd'))[_0xc2d3('0xe')](socket);function respondWithRpcPromise(_0x26fbf6,_0x139746,_0x37fd02){return new BPromise(function(_0x25c3cc,_0x3058dc){return client[_0xc2d3('0xf')](_0x26fbf6,_0x37fd02)[_0xc2d3('0x10')](function(_0xc2486e){logger[_0xc2d3('0x11')](_0xc2d3('0x12'),_0x139746,_0xc2d3('0x13'));logger[_0xc2d3('0x14')](_0xc2d3('0x15'),_0x139746,_0xc2d3('0x13'),JSON[_0xc2d3('0x16')](_0xc2486e));if(_0xc2486e[_0xc2d3('0x17')]){if(_0xc2486e[_0xc2d3('0x17')][_0xc2d3('0x18')]===0x1f4){logger[_0xc2d3('0x17')]('VoiceQueueReport,\x20%s,\x20%s',_0x139746,_0xc2486e[_0xc2d3('0x17')][_0xc2d3('0x19')]);return _0x3058dc(_0xc2486e[_0xc2d3('0x17')]['message']);}logger[_0xc2d3('0x17')]('VoiceQueueReport,\x20%s,\x20%s',_0x139746,_0xc2486e['error']['message']);return _0x25c3cc(_0xc2486e['error'][_0xc2d3('0x19')]);}else{logger[_0xc2d3('0x11')](_0xc2d3('0x12'),_0x139746,_0xc2d3('0x13'));_0x25c3cc(_0xc2486e[_0xc2d3('0x1a')][_0xc2d3('0x19')]);}})[_0xc2d3('0x1b')](function(_0x4a9717){logger[_0xc2d3('0x17')](_0xc2d3('0x12'),_0x139746,_0x4a9717);_0x3058dc(_0x4a9717);});});}exports[_0xc2d3('0x1c')]=function(_0x37dc55){var _0xb86de8=this;return new Promise(function(_0x3cc325,_0x180b68){return db[_0xc2d3('0x1d')][_0xc2d3('0x1e')]({'raw':_0x37dc55[_0xc2d3('0x1f')]?_0x37dc55['options'][_0xc2d3('0x20')]===undefined?!![]:![]:!![],'where':_0x37dc55[_0xc2d3('0x1f')]?_0x37dc55['options'][_0xc2d3('0x21')]||null:null,'attributes':_0x37dc55['options']?_0x37dc55['options'][_0xc2d3('0x22')]||null:null,'limit':_0x37dc55[_0xc2d3('0x1f')]?_0x37dc55[_0xc2d3('0x1f')]['limit']||null:null,'include':_0x37dc55[_0xc2d3('0x1f')]?_0x37dc55[_0xc2d3('0x1f')][_0xc2d3('0x23')]?_['map'](_0x37dc55[_0xc2d3('0x1f')][_0xc2d3('0x23')],function(_0x47934d){return{'model':db[_0x47934d[_0xc2d3('0x24')]],'as':_0x47934d['as'],'attributes':_0x47934d['attributes'],'include':_0x47934d[_0xc2d3('0x23')]?_[_0xc2d3('0x25')](_0x47934d['include'],function(_0x55b6c1){return{'model':db[_0x55b6c1[_0xc2d3('0x24')]],'as':_0x55b6c1['as'],'attributes':_0x55b6c1['attributes'],'include':_0x55b6c1[_0xc2d3('0x23')]?_['map'](_0x55b6c1[_0xc2d3('0x23')],function(_0x3fc003){return{'model':db[_0x3fc003[_0xc2d3('0x24')]],'as':_0x3fc003['as'],'attributes':_0x3fc003[_0xc2d3('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc2d3('0x10')](function(_0x219329){logger[_0xc2d3('0x11')](_0xc2d3('0x1c'),_0x37dc55);logger['debug'](_0xc2d3('0x1c'),_0x37dc55,JSON[_0xc2d3('0x16')](_0x219329));_0x3cc325(_0x219329);})[_0xc2d3('0x1b')](function(_0x17e681){logger[_0xc2d3('0x17')](_0xc2d3('0x1c'),_0x17e681[_0xc2d3('0x19')],_0x37dc55);_0x180b68(_0xb86de8[_0xc2d3('0x17')](0x1f4,_0x17e681[_0xc2d3('0x19')]));});});};exports[_0xc2d3('0x26')]=function(_0x4982aa){var _0x507082=this;return new Promise(function(_0x43e8c3,_0x2aec9a){return db[_0xc2d3('0x1d')][_0xc2d3('0x27')](_0x4982aa[_0xc2d3('0x28')],{'raw':_0x4982aa[_0xc2d3('0x1f')]?_0x4982aa[_0xc2d3('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0xc2d3('0x10')](function(_0x2bb664){logger[_0xc2d3('0x11')]('CreateVoiceQueueReport',_0x4982aa);logger[_0xc2d3('0x14')](_0xc2d3('0x26'),_0x4982aa,JSON[_0xc2d3('0x16')](_0x2bb664));_0x43e8c3(_0x2bb664);})[_0xc2d3('0x1b')](function(_0xa4cdb){logger[_0xc2d3('0x17')](_0xc2d3('0x26'),_0xa4cdb['message'],_0x4982aa);_0x2aec9a(_0x507082[_0xc2d3('0x17')](0x1f4,_0xa4cdb['message']));});});};exports[_0xc2d3('0x29')]=function(_0x46c2ba){var _0x372831=this;return new Promise(function(_0x3d4a52,_0x95620f){return db['VoiceQueueReport'][_0xc2d3('0x2a')](_0x46c2ba['body'],{'raw':_0x46c2ba[_0xc2d3('0x1f')]?_0x46c2ba[_0xc2d3('0x1f')][_0xc2d3('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x46c2ba[_0xc2d3('0x1f')]?_0x46c2ba[_0xc2d3('0x1f')]['where']||null:null,'attributes':_0x46c2ba[_0xc2d3('0x1f')]?_0x46c2ba[_0xc2d3('0x1f')][_0xc2d3('0x22')]||null:null,'limit':_0x46c2ba['options']?_0x46c2ba['options']['limit']||null:null})[_0xc2d3('0x10')](function(_0x15b834){logger[_0xc2d3('0x11')](_0xc2d3('0x29'),_0x46c2ba);logger['debug'](_0xc2d3('0x29'),_0x46c2ba,JSON[_0xc2d3('0x16')](_0x15b834));_0x3d4a52(_0x15b834);})[_0xc2d3('0x1b')](function(_0x50173e){logger[_0xc2d3('0x17')](_0xc2d3('0x29'),_0x50173e['message'],_0x46c2ba);_0x95620f(_0x372831['error'](0x1f4,_0x50173e['message']));});});};
\ No newline at end of file
index f0a6377..a749d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4eb=['voiceQueueReport:','./voiceQueueReport.events','save','update','emit','register','length'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0xe4eb,0x9b));var _0xbe4e=function(_0x55251e,_0x466827){_0x55251e=_0x55251e-0x0;var _0x5a1d48=_0xe4eb[_0x55251e];return _0x5a1d48;};'use strict';var VoiceQueueReportEvents=require(_0xbe4e('0x0'));var events=[_0xbe4e('0x1'),'remove',_0xbe4e('0x2')];function createListener(_0x39b18b,_0x14646b){return function(_0x5b63fb){_0x14646b[_0xbe4e('0x3')](_0x39b18b,_0x5b63fb);};}function removeListener(_0x9a14a9,_0x3b2b21){return function(){VoiceQueueReportEvents['removeListener'](_0x9a14a9,_0x3b2b21);};}exports[_0xbe4e('0x4')]=function(_0x15aa50){for(var _0x2e4bd6=0x0,_0x1e9580=events[_0xbe4e('0x5')];_0x2e4bd6<_0x1e9580;_0x2e4bd6++){var _0x1bffa2=events[_0x2e4bd6];var _0x3ad104=createListener(_0xbe4e('0x6')+_0x1bffa2,_0x15aa50);VoiceQueueReportEvents['on'](_0x1bffa2,_0x3ad104);}};
\ No newline at end of file
+var _0x2494=['update','emit','removeListener','voiceQueueReport:','./voiceQueueReport.events','remove'];(function(_0x16e121,_0x7e41e4){var _0x4a1e9b=function(_0x2ae816){while(--_0x2ae816){_0x16e121['push'](_0x16e121['shift']());}};_0x4a1e9b(++_0x7e41e4);}(_0x2494,0x82));var _0x4249=function(_0x37ccf5,_0x2af906){_0x37ccf5=_0x37ccf5-0x0;var _0x5f4576=_0x2494[_0x37ccf5];return _0x5f4576;};'use strict';var VoiceQueueReportEvents=require(_0x4249('0x0'));var events=['save',_0x4249('0x1'),_0x4249('0x2')];function createListener(_0x3cdee4,_0x3f9dc6){return function(_0x161e6b){_0x3f9dc6[_0x4249('0x3')](_0x3cdee4,_0x161e6b);};}function removeListener(_0x5decbd,_0x4fdc12){return function(){VoiceQueueReportEvents[_0x4249('0x4')](_0x5decbd,_0x4fdc12);};}exports['register']=function(_0x3c2d8d){for(var _0x1d4ca8=0x0,_0xed716a=events['length'];_0x1d4ca8<_0xed716a;_0x1d4ca8++){var _0x326336=events[_0x1d4ca8];var _0x2b7934=createListener(_0x4249('0x5')+_0x326336,_0x3c2d8d);VoiceQueueReportEvents['on'](_0x326336,_0x2b7934);}};
\ No newline at end of file
index d6f26c6..8f99197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a57=['update','delete','destroy','exports','multer','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x14e6d8,_0x1bbfbc){var _0x3d8718=function(_0x21204f){while(--_0x21204f){_0x14e6d8['push'](_0x14e6d8['shift']());}};_0x3d8718(++_0x1bbfbc);}(_0x7a57,0x89));var _0x77a5=function(_0x43253e,_0x38b41b){_0x43253e=_0x43253e-0x0;var _0x3cb575=_0x7a57[_0x43253e];return _0x3cb575;};'use strict';var multer=require(_0x77a5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x77a5('0x1'));var express=require(_0x77a5('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x77a5('0x3'));var interaction=require(_0x77a5('0x4'));var config=require(_0x77a5('0x5'));var controller=require(_0x77a5('0x6'));router[_0x77a5('0x7')]('/',auth[_0x77a5('0x8')](),controller[_0x77a5('0x9')]);router['get'](_0x77a5('0xa'),auth[_0x77a5('0x8')](),controller[_0x77a5('0xb')]);router[_0x77a5('0xc')]('/',auth[_0x77a5('0x8')](),controller[_0x77a5('0xd')]);router[_0x77a5('0xe')](_0x77a5('0xa'),auth[_0x77a5('0x8')](),controller[_0x77a5('0xf')]);router[_0x77a5('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x77a5('0x11')]);module[_0x77a5('0x12')]=router;
\ No newline at end of file
+var _0x5309=['create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show'];(function(_0x576be4,_0x7d3752){var _0x11d7ab=function(_0x5deb75){while(--_0x5deb75){_0x576be4['push'](_0x576be4['shift']());}};_0x11d7ab(++_0x7d3752);}(_0x5309,0x1aa));var _0x9530=function(_0x2d8f6c,_0x44db4c){_0x2d8f6c=_0x2d8f6c-0x0;var _0x3a00f6=_0x5309[_0x2d8f6c];return _0x3a00f6;};'use strict';var multer=require(_0x9530('0x0'));var util=require(_0x9530('0x1'));var path=require(_0x9530('0x2'));var timeout=require(_0x9530('0x3'));var express=require(_0x9530('0x4'));var router=express[_0x9530('0x5')]();var fs_extra=require(_0x9530('0x6'));var auth=require(_0x9530('0x7'));var interaction=require(_0x9530('0x8'));var config=require(_0x9530('0x9'));var controller=require('./voiceQueuesLog.controller');router['get']('/',auth[_0x9530('0xa')](),controller[_0x9530('0xb')]);router[_0x9530('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x9530('0xd')]);router['post']('/',auth[_0x9530('0xa')](),controller[_0x9530('0xe')]);router[_0x9530('0xf')](_0x9530('0x10'),auth[_0x9530('0xa')](),controller[_0x9530('0x11')]);router['delete']('/:id',auth[_0x9530('0xa')](),controller[_0x9530('0x12')]);module[_0x9530('0x13')]=router;
\ No newline at end of file
index 7ec61bc..cd5853e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe18a=['format','moment','exports','STRING','DATE'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xe18a,0x10a));var _0xae18=function(_0x447b51,_0x17b02a){_0x447b51=_0x447b51-0x0;var _0x2282cc=_0xe18a[_0x447b51];return _0x2282cc;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xae18('0x0'));module[_0xae18('0x1')]={'time':{'type':Sequelize[_0xae18('0x2')]},'callid':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xae18('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xae18('0x3')],'allowNull':![],'defaultValue':moment()[_0xae18('0x4')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
+var _0x5fd1=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x5fd1,0x18f));var _0x15fd=function(_0x55e48d,_0x24dd15){_0x55e48d=_0x55e48d-0x0;var _0x166daa=_0x5fd1[_0x55e48d];return _0x166daa;};'use strict';var Sequelize=require(_0x15fd('0x0'));var moment=require('moment');module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x15fd('0x2')],'allowNull':![],'defaultValue':moment()[_0x15fd('0x3')](_0x15fd('0x4'))}};
\ No newline at end of file
index 5497b33..0e5bbd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6440=['map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','nolimit','order','pick','filters','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','find','create','body','params','eml-format','rimraf','zip-dir','request-promise','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send'];(function(_0x51918e,_0x33b898){var _0x155975=function(_0xe754b0){while(--_0xe754b0){_0x51918e['push'](_0x51918e['shift']());}};_0x155975(++_0x33b898);}(_0x6440,0x69));var _0x0644=function(_0x12833b,_0x26c1d2){_0x12833b=_0x12833b-0x0;var _0x3acad3=_0x6440[_0x12833b];return _0x3acad3;};'use strict';var emlformat=require(_0x0644('0x0'));var rimraf=require(_0x0644('0x1'));var zipdir=require(_0x0644('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0644('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0644('0x4'));var util=require(_0x0644('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x0644('0x6'));var ejs=require(_0x0644('0x7'));var fs=require('fs');var fs_extra=require(_0x0644('0x8'));var _=require(_0x0644('0x9'));var squel=require(_0x0644('0xa'));var crypto=require(_0x0644('0xb'));var jsforce=require(_0x0644('0xc'));var deskjs=require(_0x0644('0xd'));var toCsv=require(_0x0644('0x6'));var querystring=require('querystring');var Papa=require(_0x0644('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0644('0xf'));var as=require(_0x0644('0x10'));var hardwareService=require(_0x0644('0x11'));var logger=require('../../config/logger')(_0x0644('0x12'));var utils=require(_0x0644('0x13'));var config=require(_0x0644('0x14'));var licenseUtil=require(_0x0644('0x15'));var db=require(_0x0644('0x16'))['db'];function respondWithStatusCode(_0x3a0b0f,_0x203f7b){_0x203f7b=_0x203f7b||0xcc;return function(_0x3e771b){if(_0x3e771b){return _0x3a0b0f['sendStatus'](_0x203f7b);}return _0x3a0b0f['status'](_0x203f7b)[_0x0644('0x17')]();};}function respondWithResult(_0x4cbab6,_0x55c99b){_0x55c99b=_0x55c99b||0xc8;return function(_0x5073a8){if(_0x5073a8){return _0x4cbab6[_0x0644('0x18')](_0x55c99b)[_0x0644('0x19')](_0x5073a8);}};}function respondWithFilteredResult(_0x1ebfbc,_0x1e0047){return function(_0x3cc1f4){if(_0x3cc1f4){var _0x381f19=typeof _0x1e0047[_0x0644('0x1a')]===_0x0644('0x1b')&&typeof _0x1e0047[_0x0644('0x1c')]===_0x0644('0x1b');var _0x40de4c=_0x3cc1f4[_0x0644('0x1d')];var _0x506b23=_0x381f19?0x0:_0x1e0047[_0x0644('0x1a')];var _0x268d64=_0x381f19?_0x3cc1f4[_0x0644('0x1d')]:_0x1e0047[_0x0644('0x1a')]+_0x1e0047['limit'];var _0x43cfc6;if(_0x268d64>=_0x40de4c){_0x268d64=_0x40de4c;_0x43cfc6=0xc8;}else{_0x43cfc6=0xce;}_0x1ebfbc[_0x0644('0x18')](_0x43cfc6);return _0x1ebfbc[_0x0644('0x1e')](_0x0644('0x1f'),_0x506b23+'-'+_0x268d64+'/'+_0x40de4c)[_0x0644('0x19')](_0x3cc1f4);}return null;};}function patchUpdates(_0x5549c6){return function(_0x298895){try{jsonpatch[_0x0644('0x20')](_0x298895,_0x5549c6,!![]);}catch(_0x2db2e2){return BPromise[_0x0644('0x21')](_0x2db2e2);}return _0x298895[_0x0644('0x22')]();};}function saveUpdates(_0x28dc1a,_0x2495ac){return function(_0x5b0b3e){if(_0x5b0b3e){return _0x5b0b3e[_0x0644('0x23')](_0x28dc1a)[_0x0644('0x24')](function(_0x6fb9fb){return _0x6fb9fb;});}return null;};}function removeEntity(_0x30aeba,_0x45d60e){return function(_0x5d940e){if(_0x5d940e){return _0x5d940e[_0x0644('0x25')]()['then'](function(){_0x30aeba[_0x0644('0x18')](0xcc)[_0x0644('0x17')]();});}};}function handleEntityNotFound(_0x1a2e3f,_0x24cde1){return function(_0x597e6e){if(!_0x597e6e){_0x1a2e3f[_0x0644('0x26')](0x194);}return _0x597e6e;};}function handleError(_0x2eb47b,_0x83f7a6){_0x83f7a6=_0x83f7a6||0x1f4;return function(_0x18a981){logger[_0x0644('0x27')](_0x18a981[_0x0644('0x28')]);if(_0x18a981[_0x0644('0x29')]){delete _0x18a981[_0x0644('0x29')];}_0x2eb47b['status'](_0x83f7a6)[_0x0644('0x2a')](_0x18a981);};}exports['index']=function(_0x27df51,_0x4a5d6a){var _0x238dd7={},_0x2eb60d={},_0x223afd={'count':0x0,'rows':[]};var _0x31ab69=_[_0x0644('0x2b')](db[_0x0644('0x2c')][_0x0644('0x2d')],function(_0x5da6f9){return{'name':_0x5da6f9[_0x0644('0x2e')],'type':_0x5da6f9[_0x0644('0x2f')][_0x0644('0x30')]};});_0x2eb60d[_0x0644('0x31')]=_[_0x0644('0x2b')](_0x31ab69,_0x0644('0x29'));_0x2eb60d['query']=_[_0x0644('0x32')](_0x27df51[_0x0644('0x33')]);_0x2eb60d['filters']=_[_0x0644('0x34')](_0x2eb60d[_0x0644('0x31')],_0x2eb60d[_0x0644('0x33')]);_0x238dd7['attributes']=_[_0x0644('0x34')](_0x2eb60d['model'],qs[_0x0644('0x35')](_0x27df51['query'][_0x0644('0x35')]));_0x238dd7[_0x0644('0x36')]=_0x238dd7[_0x0644('0x36')][_0x0644('0x37')]?_0x238dd7[_0x0644('0x36')]:_0x2eb60d[_0x0644('0x31')];if(!_0x27df51[_0x0644('0x33')]['hasOwnProperty'](_0x0644('0x38'))){_0x238dd7[_0x0644('0x1c')]=qs[_0x0644('0x1c')](_0x27df51[_0x0644('0x33')][_0x0644('0x1c')]);_0x238dd7['offset']=qs['offset'](_0x27df51[_0x0644('0x33')][_0x0644('0x1a')]);}_0x238dd7[_0x0644('0x39')]=qs['sort'](_0x27df51[_0x0644('0x33')]['sort']);_0x238dd7['where']=qs['filters'](_[_0x0644('0x3a')](_0x27df51[_0x0644('0x33')],_0x2eb60d[_0x0644('0x3b')]),_0x31ab69);if(_0x27df51['query'][_0x0644('0x3c')]){_0x238dd7[_0x0644('0x3d')]=_[_0x0644('0x3e')](_0x238dd7[_0x0644('0x3d')],{'$or':_['map'](_0x31ab69,function(_0x42e313){if(_0x42e313[_0x0644('0x2f')]!==_0x0644('0x3f')){var _0x3e8a7c={};_0x3e8a7c[_0x42e313['name']]={'$like':'%'+_0x27df51[_0x0644('0x33')][_0x0644('0x3c')]+'%'};return _0x3e8a7c;}})});}_0x238dd7=_[_0x0644('0x3e')]({},_0x238dd7,_0x27df51['options']);var _0x4a71f6={'where':_0x238dd7[_0x0644('0x3d')]};return db[_0x0644('0x2c')][_0x0644('0x1d')](_0x4a71f6)[_0x0644('0x24')](function(_0x55d26b){_0x223afd['count']=_0x55d26b;if(_0x27df51[_0x0644('0x33')][_0x0644('0x40')]){_0x238dd7[_0x0644('0x41')]=[{'all':!![]}];}return db[_0x0644('0x2c')][_0x0644('0x42')](_0x238dd7);})[_0x0644('0x24')](function(_0x409038){_0x223afd[_0x0644('0x43')]=_0x409038;return _0x223afd;})[_0x0644('0x24')](respondWithFilteredResult(_0x4a5d6a,_0x238dd7))[_0x0644('0x44')](handleError(_0x4a5d6a,null));};exports[_0x0644('0x45')]=function(_0xda5239,_0x404bbd){var _0x4a2018={'raw':!![],'where':{'id':_0xda5239['params']['id']}},_0x35a5c6={};_0x35a5c6[_0x0644('0x31')]=_['keys'](db[_0x0644('0x2c')][_0x0644('0x2d')]);_0x35a5c6[_0x0644('0x33')]=_[_0x0644('0x32')](_0xda5239['query']);_0x35a5c6[_0x0644('0x3b')]=_[_0x0644('0x34')](_0x35a5c6['model'],_0x35a5c6['query']);_0x4a2018[_0x0644('0x36')]=_['intersection'](_0x35a5c6[_0x0644('0x31')],qs[_0x0644('0x35')](_0xda5239[_0x0644('0x33')][_0x0644('0x35')]));_0x4a2018[_0x0644('0x36')]=_0x4a2018[_0x0644('0x36')][_0x0644('0x37')]?_0x4a2018[_0x0644('0x36')]:_0x35a5c6['model'];if(_0xda5239['query'][_0x0644('0x40')]){_0x4a2018[_0x0644('0x41')]=[{'all':!![]}];}_0x4a2018=_['merge']({},_0x4a2018,_0xda5239['options']);return db[_0x0644('0x2c')][_0x0644('0x46')](_0x4a2018)[_0x0644('0x24')](handleEntityNotFound(_0x404bbd,null))['then'](respondWithResult(_0x404bbd,null))[_0x0644('0x44')](handleError(_0x404bbd,null));};exports[_0x0644('0x47')]=function(_0x2ea394,_0x590e87){return db['VoiceQueuesLog']['create'](_0x2ea394[_0x0644('0x48')],{})[_0x0644('0x24')](respondWithResult(_0x590e87,0xc9))[_0x0644('0x44')](handleError(_0x590e87,null));};exports[_0x0644('0x23')]=function(_0x5ca1ac,_0x506d16){if(_0x5ca1ac['body']['id']){delete _0x5ca1ac[_0x0644('0x48')]['id'];}return db['VoiceQueuesLog']['find']({'where':{'id':_0x5ca1ac['params']['id']}})[_0x0644('0x24')](handleEntityNotFound(_0x506d16,null))[_0x0644('0x24')](saveUpdates(_0x5ca1ac['body'],null))[_0x0644('0x24')](respondWithResult(_0x506d16,null))[_0x0644('0x44')](handleError(_0x506d16,null));};exports[_0x0644('0x25')]=function(_0x40811e,_0x134947){return db[_0x0644('0x2c')][_0x0644('0x46')]({'where':{'id':_0x40811e[_0x0644('0x49')]['id']}})['then'](handleEntityNotFound(_0x134947,null))['then'](removeEntity(_0x134947,null))[_0x0644('0x44')](handleError(_0x134947,null));};
\ No newline at end of file
+var _0xe898=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','sort','where','filters','pick','filter','merge','options','includeAll','VoiceQueuesLog','rows','catch','show','params','keys','include','create','body','find','destroy','eml-format','zip-dir','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x1e5135,_0x2d7e6a){var _0x18a09d=function(_0x39caf5){while(--_0x39caf5){_0x1e5135['push'](_0x1e5135['shift']());}};_0x18a09d(++_0x2d7e6a);}(_0xe898,0x15d));var _0x8e89=function(_0x462582,_0x279982){_0x462582=_0x462582-0x0;var _0x176aac=_0xe898[_0x462582];return _0x176aac;};'use strict';var emlformat=require(_0x8e89('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8e89('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8e89('0x2'));var BPromise=require(_0x8e89('0x3'));var Mustache=require(_0x8e89('0x4'));var util=require(_0x8e89('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x8e89('0x6'));var ejs=require(_0x8e89('0x7'));var fs=require('fs');var fs_extra=require(_0x8e89('0x8'));var _=require(_0x8e89('0x9'));var squel=require('squel');var crypto=require(_0x8e89('0xa'));var jsforce=require(_0x8e89('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8e89('0x6'));var querystring=require(_0x8e89('0xc'));var Papa=require('papaparse');var Redis=require(_0x8e89('0xd'));var authService=require(_0x8e89('0xe'));var qs=require(_0x8e89('0xf'));var as=require(_0x8e89('0x10'));var hardwareService=require(_0x8e89('0x11'));var logger=require(_0x8e89('0x12'))(_0x8e89('0x13'));var utils=require(_0x8e89('0x14'));var config=require(_0x8e89('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8e89('0x16'))['db'];function respondWithStatusCode(_0x3c9b78,_0x12a736){_0x12a736=_0x12a736||0xcc;return function(_0x47bac9){if(_0x47bac9){return _0x3c9b78[_0x8e89('0x17')](_0x12a736);}return _0x3c9b78['status'](_0x12a736)[_0x8e89('0x18')]();};}function respondWithResult(_0x6d8ca6,_0x170652){_0x170652=_0x170652||0xc8;return function(_0x25edf5){if(_0x25edf5){return _0x6d8ca6['status'](_0x170652)[_0x8e89('0x19')](_0x25edf5);}};}function respondWithFilteredResult(_0x1a5684,_0x407c4d){return function(_0x19cb7b){if(_0x19cb7b){var _0x2cc651=typeof _0x407c4d['offset']===_0x8e89('0x1a')&&typeof _0x407c4d[_0x8e89('0x1b')]===_0x8e89('0x1a');var _0x33215a=_0x19cb7b[_0x8e89('0x1c')];var _0x461373=_0x2cc651?0x0:_0x407c4d['offset'];var _0x4df39a=_0x2cc651?_0x19cb7b[_0x8e89('0x1c')]:_0x407c4d['offset']+_0x407c4d[_0x8e89('0x1b')];var _0x11f1d2;if(_0x4df39a>=_0x33215a){_0x4df39a=_0x33215a;_0x11f1d2=0xc8;}else{_0x11f1d2=0xce;}_0x1a5684[_0x8e89('0x1d')](_0x11f1d2);return _0x1a5684[_0x8e89('0x1e')](_0x8e89('0x1f'),_0x461373+'-'+_0x4df39a+'/'+_0x33215a)[_0x8e89('0x19')](_0x19cb7b);}return null;};}function patchUpdates(_0x289945){return function(_0x3d448b){try{jsonpatch[_0x8e89('0x20')](_0x3d448b,_0x289945,!![]);}catch(_0x31bbe9){return BPromise[_0x8e89('0x21')](_0x31bbe9);}return _0x3d448b[_0x8e89('0x22')]();};}function saveUpdates(_0x46d1a2,_0x1a1225){return function(_0x2ede7d){if(_0x2ede7d){return _0x2ede7d[_0x8e89('0x23')](_0x46d1a2)[_0x8e89('0x24')](function(_0x192b92){return _0x192b92;});}return null;};}function removeEntity(_0x6dddb4,_0x3de03b){return function(_0xd9b0dc){if(_0xd9b0dc){return _0xd9b0dc['destroy']()[_0x8e89('0x24')](function(){_0x6dddb4[_0x8e89('0x1d')](0xcc)[_0x8e89('0x18')]();});}};}function handleEntityNotFound(_0xebf348,_0x5ac8e6){return function(_0x356b5a){if(!_0x356b5a){_0xebf348['sendStatus'](0x194);}return _0x356b5a;};}function handleError(_0x196179,_0x444ba7){_0x444ba7=_0x444ba7||0x1f4;return function(_0x559392){logger[_0x8e89('0x25')](_0x559392[_0x8e89('0x26')]);if(_0x559392[_0x8e89('0x27')]){delete _0x559392[_0x8e89('0x27')];}_0x196179[_0x8e89('0x1d')](_0x444ba7)['send'](_0x559392);};}exports[_0x8e89('0x28')]=function(_0x370b4d,_0x99ee0e){var _0x531672={},_0x207cc3={},_0x1e3087={'count':0x0,'rows':[]};var _0x89bc5a=_[_0x8e89('0x29')](db['VoiceQueuesLog'][_0x8e89('0x2a')],function(_0x552429){return{'name':_0x552429[_0x8e89('0x2b')],'type':_0x552429[_0x8e89('0x2c')]['key']};});_0x207cc3[_0x8e89('0x2d')]=_[_0x8e89('0x29')](_0x89bc5a,_0x8e89('0x27'));_0x207cc3[_0x8e89('0x2e')]=_['keys'](_0x370b4d['query']);_0x207cc3['filters']=_['intersection'](_0x207cc3[_0x8e89('0x2d')],_0x207cc3[_0x8e89('0x2e')]);_0x531672[_0x8e89('0x2f')]=_[_0x8e89('0x30')](_0x207cc3[_0x8e89('0x2d')],qs[_0x8e89('0x31')](_0x370b4d[_0x8e89('0x2e')][_0x8e89('0x31')]));_0x531672[_0x8e89('0x2f')]=_0x531672[_0x8e89('0x2f')][_0x8e89('0x32')]?_0x531672['attributes']:_0x207cc3[_0x8e89('0x2d')];if(!_0x370b4d[_0x8e89('0x2e')][_0x8e89('0x33')](_0x8e89('0x34'))){_0x531672[_0x8e89('0x1b')]=qs[_0x8e89('0x1b')](_0x370b4d[_0x8e89('0x2e')][_0x8e89('0x1b')]);_0x531672[_0x8e89('0x35')]=qs[_0x8e89('0x35')](_0x370b4d[_0x8e89('0x2e')]['offset']);}_0x531672['order']=qs[_0x8e89('0x36')](_0x370b4d['query'][_0x8e89('0x36')]);_0x531672[_0x8e89('0x37')]=qs[_0x8e89('0x38')](_[_0x8e89('0x39')](_0x370b4d['query'],_0x207cc3[_0x8e89('0x38')]),_0x89bc5a);if(_0x370b4d[_0x8e89('0x2e')][_0x8e89('0x3a')]){_0x531672['where']=_[_0x8e89('0x3b')](_0x531672[_0x8e89('0x37')],{'$or':_['map'](_0x89bc5a,function(_0x4121c0){if(_0x4121c0['type']!=='VIRTUAL'){var _0x1e1021={};_0x1e1021[_0x4121c0[_0x8e89('0x27')]]={'$like':'%'+_0x370b4d[_0x8e89('0x2e')][_0x8e89('0x3a')]+'%'};return _0x1e1021;}})});}_0x531672=_[_0x8e89('0x3b')]({},_0x531672,_0x370b4d[_0x8e89('0x3c')]);var _0x47c3d2={'where':_0x531672[_0x8e89('0x37')]};return db['VoiceQueuesLog'][_0x8e89('0x1c')](_0x47c3d2)[_0x8e89('0x24')](function(_0x19a9e0){_0x1e3087['count']=_0x19a9e0;if(_0x370b4d['query'][_0x8e89('0x3d')]){_0x531672['include']=[{'all':!![]}];}return db[_0x8e89('0x3e')]['findAll'](_0x531672);})[_0x8e89('0x24')](function(_0xff0438){_0x1e3087[_0x8e89('0x3f')]=_0xff0438;return _0x1e3087;})[_0x8e89('0x24')](respondWithFilteredResult(_0x99ee0e,_0x531672))[_0x8e89('0x40')](handleError(_0x99ee0e,null));};exports[_0x8e89('0x41')]=function(_0x29dc30,_0x21c86d){var _0x41c26a={'raw':!![],'where':{'id':_0x29dc30[_0x8e89('0x42')]['id']}},_0x8ef9c7={};_0x8ef9c7[_0x8e89('0x2d')]=_['keys'](db[_0x8e89('0x3e')][_0x8e89('0x2a')]);_0x8ef9c7['query']=_[_0x8e89('0x43')](_0x29dc30[_0x8e89('0x2e')]);_0x8ef9c7['filters']=_[_0x8e89('0x30')](_0x8ef9c7[_0x8e89('0x2d')],_0x8ef9c7['query']);_0x41c26a[_0x8e89('0x2f')]=_[_0x8e89('0x30')](_0x8ef9c7[_0x8e89('0x2d')],qs[_0x8e89('0x31')](_0x29dc30[_0x8e89('0x2e')][_0x8e89('0x31')]));_0x41c26a[_0x8e89('0x2f')]=_0x41c26a[_0x8e89('0x2f')][_0x8e89('0x32')]?_0x41c26a['attributes']:_0x8ef9c7[_0x8e89('0x2d')];if(_0x29dc30[_0x8e89('0x2e')][_0x8e89('0x3d')]){_0x41c26a[_0x8e89('0x44')]=[{'all':!![]}];}_0x41c26a=_[_0x8e89('0x3b')]({},_0x41c26a,_0x29dc30[_0x8e89('0x3c')]);return db[_0x8e89('0x3e')]['find'](_0x41c26a)[_0x8e89('0x24')](handleEntityNotFound(_0x21c86d,null))[_0x8e89('0x24')](respondWithResult(_0x21c86d,null))[_0x8e89('0x40')](handleError(_0x21c86d,null));};exports[_0x8e89('0x45')]=function(_0x2df453,_0x317304){return db[_0x8e89('0x3e')][_0x8e89('0x45')](_0x2df453['body'],{})[_0x8e89('0x24')](respondWithResult(_0x317304,0xc9))[_0x8e89('0x40')](handleError(_0x317304,null));};exports[_0x8e89('0x23')]=function(_0x3f115f,_0x4020b5){if(_0x3f115f[_0x8e89('0x46')]['id']){delete _0x3f115f[_0x8e89('0x46')]['id'];}return db[_0x8e89('0x3e')][_0x8e89('0x47')]({'where':{'id':_0x3f115f[_0x8e89('0x42')]['id']}})[_0x8e89('0x24')](handleEntityNotFound(_0x4020b5,null))[_0x8e89('0x24')](saveUpdates(_0x3f115f[_0x8e89('0x46')],null))[_0x8e89('0x24')](respondWithResult(_0x4020b5,null))[_0x8e89('0x40')](handleError(_0x4020b5,null));};exports[_0x8e89('0x48')]=function(_0x53229f,_0x2cfe62){return db[_0x8e89('0x3e')][_0x8e89('0x47')]({'where':{'id':_0x53229f['params']['id']}})['then'](handleEntityNotFound(_0x2cfe62,null))[_0x8e89('0x24')](removeEntity(_0x2cfe62,null))[_0x8e89('0x40')](handleError(_0x2cfe62,null));};
\ No newline at end of file
index 7a2a8c5..5c0050d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221f=['util','moment','bluebird','request-promise','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash'];(function(_0x228fc9,_0x38935e){var _0x2b435f=function(_0x8ae00c){while(--_0x8ae00c){_0x228fc9['push'](_0x228fc9['shift']());}};_0x2b435f(++_0x38935e);}(_0x221f,0xe9));var _0xf221=function(_0x3f8ca7,_0x1cfd75){_0x3f8ca7=_0x3f8ca7-0x0;var _0x2ef97e=_0x221f[_0x3f8ca7];return _0x2ef97e;};'use strict';var _=require(_0xf221('0x0'));var util=require(_0xf221('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf221('0x2'));var BPromise=require(_0xf221('0x3'));var rp=require(_0xf221('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf221('0x5'));module[_0xf221('0x6')]=function(_0x57712c,_0x3a5d90){return _0x57712c[_0xf221('0x7')](_0xf221('0x8'),attributes,{'tableName':_0xf221('0x9'),'paranoid':![],'indexes':[{'name':_0xf221('0xa'),'fields':[_0xf221('0xb'),_0xf221('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xba8e=['lodash','util','moment','bluebird','request-promise','path','rimraf','exports','voice_queues_log','event_dtm','event','dtm'];(function(_0x5522a8,_0xe8f2c1){var _0x10e995=function(_0x1d4d40){while(--_0x1d4d40){_0x5522a8['push'](_0x5522a8['shift']());}};_0x10e995(++_0xe8f2c1);}(_0xba8e,0xe4));var _0xeba8=function(_0x2cc594,_0x4d727b){_0x2cc594=_0x2cc594-0x0;var _0x4abff7=_0xba8e[_0x2cc594];return _0x4abff7;};'use strict';var _=require(_0xeba8('0x0'));var util=require(_0xeba8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xeba8('0x2'));var BPromise=require(_0xeba8('0x3'));var rp=require(_0xeba8('0x4'));var fs=require('fs');var path=require(_0xeba8('0x5'));var rimraf=require(_0xeba8('0x6'));var config=require('../../config/environment');var attributes=require('./voiceQueuesLog.attributes');module[_0xeba8('0x7')]=function(_0x2441f8,_0x4d0b4c){return _0x2441f8['define']('VoiceQueuesLog',attributes,{'tableName':_0xeba8('0x8'),'paranoid':![],'indexes':[{'name':_0xeba8('0x9'),'fields':[_0xeba8('0xa'),_0xeba8('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 20dc70a..45356d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5be=['stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0xa5be,0x10e));var _0xea5b=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa5be[_0xbca1b1];return _0x4e1686;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xea5b('0x0'));var BPromise=require(_0xea5b('0x1'));var rs=require(_0xea5b('0x2'));var fs=require('fs');var Redis=require(_0xea5b('0x3'));var db=require(_0xea5b('0x4'))['db'];var utils=require(_0xea5b('0x5'));var logger=require('../../config/logger')(_0xea5b('0x6'));var config=require('../../config/environment');var jayson=require(_0xea5b('0x7'));var client=jayson[_0xea5b('0x8')][_0xea5b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f386f,_0x25f090,_0x586628){return new BPromise(function(_0x12d789,_0x5392c5){return client['request'](_0x4f386f,_0x586628)[_0xea5b('0xa')](function(_0x514736){logger[_0xea5b('0xb')](_0xea5b('0xc'),_0x25f090,_0xea5b('0xd'));logger[_0xea5b('0xe')](_0xea5b('0xf'),_0x25f090,_0xea5b('0xd'),JSON[_0xea5b('0x10')](_0x514736));if(_0x514736[_0xea5b('0x11')]){if(_0x514736[_0xea5b('0x11')][_0xea5b('0x12')]===0x1f4){logger[_0xea5b('0x11')]('VoiceQueuesLog,\x20%s,\x20%s',_0x25f090,_0x514736['error']['message']);return _0x5392c5(_0x514736[_0xea5b('0x11')]['message']);}logger[_0xea5b('0x11')](_0xea5b('0xc'),_0x25f090,_0x514736[_0xea5b('0x11')][_0xea5b('0x13')]);return _0x12d789(_0x514736[_0xea5b('0x11')]['message']);}else{logger[_0xea5b('0xb')](_0xea5b('0xc'),_0x25f090,_0xea5b('0xd'));_0x12d789(_0x514736[_0xea5b('0x14')][_0xea5b('0x13')]);}})[_0xea5b('0x15')](function(_0x2aa97f){logger[_0xea5b('0x11')](_0xea5b('0xc'),_0x25f090,_0x2aa97f);_0x5392c5(_0x2aa97f);});});}
\ No newline at end of file
+var _0xec51=['debug','stringify','error','message','catch','lodash','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent'];(function(_0x59a093,_0x4a268f){var _0x267830=function(_0x2081ff){while(--_0x2081ff){_0x59a093['push'](_0x59a093['shift']());}};_0x267830(++_0x4a268f);}(_0xec51,0x6b));var _0x1ec5=function(_0x98459f,_0x4dfb55){_0x98459f=_0x98459f-0x0;var _0x128f94=_0xec51[_0x98459f];return _0x128f94;};'use strict';var _=require(_0x1ec5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1ec5('0x1'));var fs=require('fs');var Redis=require(_0x1ec5('0x2'));var db=require(_0x1ec5('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1ec5('0x4'));var config=require(_0x1ec5('0x5'));var jayson=require(_0x1ec5('0x6'));var client=jayson['client'][_0x1ec5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x12e31f,_0x2f8dbc,_0x3d94e3){return new BPromise(function(_0x417fa5,_0x605757){return client['request'](_0x12e31f,_0x3d94e3)[_0x1ec5('0x8')](function(_0xf795c4){logger[_0x1ec5('0x9')](_0x1ec5('0xa'),_0x2f8dbc,_0x1ec5('0xb'));logger[_0x1ec5('0xc')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x2f8dbc,_0x1ec5('0xb'),JSON[_0x1ec5('0xd')](_0xf795c4));if(_0xf795c4[_0x1ec5('0xe')]){if(_0xf795c4[_0x1ec5('0xe')]['code']===0x1f4){logger[_0x1ec5('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2f8dbc,_0xf795c4[_0x1ec5('0xe')]['message']);return _0x605757(_0xf795c4[_0x1ec5('0xe')]['message']);}logger[_0x1ec5('0xe')](_0x1ec5('0xa'),_0x2f8dbc,_0xf795c4[_0x1ec5('0xe')][_0x1ec5('0xf')]);return _0x417fa5(_0xf795c4[_0x1ec5('0xe')][_0x1ec5('0xf')]);}else{logger[_0x1ec5('0x9')](_0x1ec5('0xa'),_0x2f8dbc,'request\x20sent');_0x417fa5(_0xf795c4['result'][_0x1ec5('0xf')]);}})[_0x1ec5('0x10')](function(_0x127d77){logger[_0x1ec5('0xe')](_0x1ec5('0xa'),_0x2f8dbc,_0x127d77);_0x605757(_0x127d77);});});}
\ No newline at end of file
index be3598d..5c639a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc603=['get','/describe','/:id','show','download','downloads','downloadTranscribe','post','create','/:id/transcribe','runTranscribe','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','isAuthenticated','index'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xc603,0x1e3));var _0x3c60=function(_0x57c16e,_0x5ba5f6){_0x57c16e=_0x57c16e-0x0;var _0x15ae55=_0xc603[_0x57c16e];return _0x15ae55;};'use strict';var multer=require(_0x3c60('0x0'));var util=require('util');var path=require(_0x3c60('0x1'));var timeout=require(_0x3c60('0x2'));var express=require(_0x3c60('0x3'));var router=express[_0x3c60('0x4')]();var fs_extra=require(_0x3c60('0x5'));var auth=require(_0x3c60('0x6'));var interaction=require(_0x3c60('0x7'));var config=require('../../config/environment');var controller=require(_0x3c60('0x8'));router['get']('/',auth[_0x3c60('0x9')](),controller[_0x3c60('0xa')]);router[_0x3c60('0xb')](_0x3c60('0xc'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x3c60('0xd'),auth[_0x3c60('0x9')](),controller[_0x3c60('0xe')]);router[_0x3c60('0xb')]('/:id/download',auth['isAuthenticated'](),controller[_0x3c60('0xf')]);router['get']('/:id/downloads',controller[_0x3c60('0x10')]);router[_0x3c60('0xb')]('/:id/transcribe',auth[_0x3c60('0x9')](),controller[_0x3c60('0x11')]);router[_0x3c60('0x12')]('/',auth[_0x3c60('0x9')](),controller[_0x3c60('0x13')]);router[_0x3c60('0x12')](_0x3c60('0x14'),auth[_0x3c60('0x9')](),controller[_0x3c60('0x15')]);router[_0x3c60('0x16')](_0x3c60('0xd'),auth[_0x3c60('0x9')](),controller[_0x3c60('0x17')]);router[_0x3c60('0x18')](_0x3c60('0xd'),auth[_0x3c60('0x9')](),controller[_0x3c60('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xa7cd=['update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','runTranscribe'];(function(_0x5bfa44,_0x76dacc){var _0x43815f=function(_0x307fca){while(--_0x307fca){_0x5bfa44['push'](_0x5bfa44['shift']());}};_0x43815f(++_0x76dacc);}(_0xa7cd,0x122));var _0xda7c=function(_0x5e743b,_0x530616){_0x5e743b=_0x5e743b-0x0;var _0x5f0a4d=_0xa7cd[_0x5e743b];return _0x5f0a4d;};'use strict';var multer=require(_0xda7c('0x0'));var util=require('util');var path=require(_0xda7c('0x1'));var timeout=require(_0xda7c('0x2'));var express=require(_0xda7c('0x3'));var router=express['Router']();var fs_extra=require(_0xda7c('0x4'));var auth=require(_0xda7c('0x5'));var interaction=require(_0xda7c('0x6'));var config=require('../../config/environment');var controller=require(_0xda7c('0x7'));router[_0xda7c('0x8')]('/',auth['isAuthenticated'](),controller[_0xda7c('0x9')]);router[_0xda7c('0x8')](_0xda7c('0xa'),auth[_0xda7c('0xb')](),controller['describe']);router[_0xda7c('0x8')](_0xda7c('0xc'),auth[_0xda7c('0xb')](),controller[_0xda7c('0xd')]);router[_0xda7c('0x8')](_0xda7c('0xe'),auth['isAuthenticated'](),controller[_0xda7c('0xf')]);router['get'](_0xda7c('0x10'),controller[_0xda7c('0x11')]);router[_0xda7c('0x8')](_0xda7c('0x12'),auth[_0xda7c('0xb')](),controller[_0xda7c('0x13')]);router[_0xda7c('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0xda7c('0x14')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0xda7c('0x15')]);router['put'](_0xda7c('0xc'),auth['isAuthenticated'](),controller[_0xda7c('0x16')]);router[_0xda7c('0x17')]('/:id',auth['isAuthenticated'](),controller[_0xda7c('0x18')]);module[_0xda7c('0x19')]=router;
\ No newline at end of file
index 14f9220..7de85db 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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 db35d00..dc6bee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d8=['send','index','map','VoiceRecording','rawAttributes','model','differenceBy','format','query','keys','filters','intersection','fields','attributes','length','order','sort','pick','filter','where','merge','type','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','recording','ValidationError','download','filename','extname','VoiceRecording\x20not\x20found','sequelize','col','$and','push','secrets','unlink','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','listBuckets','createBucket','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)','bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJobName','transcribeName','TranscriptionJob','transcribeStatus','runTranscribe','Sequelize','Voice\x20Recording\x20not\x20found','findOne','transcribe','transcribeAccountId','language','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','transcribeRegion','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','aws-sdk','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','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','stack','name'];(function(_0x3d29e9,_0x6e7dba){var _0x508c6d=function(_0x924ff0){while(--_0x924ff0){_0x3d29e9['push'](_0x3d29e9['shift']());}};_0x508c6d(++_0x6e7dba);}(_0x11d8,0x68));var _0x811d=function(_0x1caab8,_0x175930){_0x1caab8=_0x1caab8-0x0;var _0x1981fe=_0x11d8[_0x1caab8];return _0x1981fe;};'use strict';var emlformat=require(_0x811d('0x0'));var rimraf=require(_0x811d('0x1'));var zipdir=require(_0x811d('0x2'));var jsonpatch=require(_0x811d('0x3'));var rp=require(_0x811d('0x4'));var moment=require(_0x811d('0x5'));var BPromise=require(_0x811d('0x6'));var Mustache=require(_0x811d('0x7'));var util=require(_0x811d('0x8'));var path=require(_0x811d('0x9'));var sox=require('sox');var csv=require(_0x811d('0xa'));var ejs=require(_0x811d('0xb'));var fs=require('fs');var fs_extra=require(_0x811d('0xc'));var _=require('lodash');var squel=require(_0x811d('0xd'));var crypto=require(_0x811d('0xe'));var jsforce=require(_0x811d('0xf'));var deskjs=require(_0x811d('0x10'));var toCsv=require(_0x811d('0xa'));var querystring=require('querystring');var Papa=require(_0x811d('0x11'));var AWS=require(_0x811d('0x12'));var uuidv4=require(_0x811d('0x13'));var Redis=require(_0x811d('0x14'));var authService=require(_0x811d('0x15'));var qs=require(_0x811d('0x16'));var as=require(_0x811d('0x17'));var hardwareService=require(_0x811d('0x18'));var logger=require(_0x811d('0x19'))(_0x811d('0x1a'));var utils=require(_0x811d('0x1b'));var config=require(_0x811d('0x1c'));var licenseUtil=require(_0x811d('0x1d'));var db=require(_0x811d('0x1e'))['db'];function respondWithStatusCode(_0x4511d0,_0xd0c739){_0xd0c739=_0xd0c739||0xcc;return function(_0x222c68){if(_0x222c68){return _0x4511d0['sendStatus'](_0xd0c739);}return _0x4511d0[_0x811d('0x1f')](_0xd0c739)['end']();};}function respondWithResult(_0x5cdb07,_0x325c4e){_0x325c4e=_0x325c4e||0xc8;return function(_0x3c06ef){if(_0x3c06ef){return _0x5cdb07[_0x811d('0x1f')](_0x325c4e)['json'](_0x3c06ef);}};}function respondWithFilteredResult(_0x22195c,_0x3d590b){return function(_0x17491b){if(_0x17491b){var _0x52573f=typeof _0x3d590b[_0x811d('0x20')]===_0x811d('0x21')&&typeof _0x3d590b['limit']===_0x811d('0x21');var _0x3defef=_0x17491b[_0x811d('0x22')];var _0x200a24=_0x52573f?0x0:_0x3d590b[_0x811d('0x20')];var _0x2c04f8=_0x52573f?_0x17491b[_0x811d('0x22')]:_0x3d590b[_0x811d('0x20')]+_0x3d590b[_0x811d('0x23')];var _0x4f10e0;if(_0x2c04f8>=_0x3defef){_0x2c04f8=_0x3defef;_0x4f10e0=0xc8;}else{_0x4f10e0=0xce;}_0x22195c[_0x811d('0x1f')](_0x4f10e0);return _0x22195c[_0x811d('0x24')](_0x811d('0x25'),_0x200a24+'-'+_0x2c04f8+'/'+_0x3defef)[_0x811d('0x26')](_0x17491b);}return null;};}function patchUpdates(_0x40a800){return function(_0x3a7cb0){try{jsonpatch[_0x811d('0x27')](_0x3a7cb0,_0x40a800,!![]);}catch(_0x4a47e8){return BPromise[_0x811d('0x28')](_0x4a47e8);}return _0x3a7cb0[_0x811d('0x29')]();};}function saveUpdates(_0x33c0cd,_0x308199){return function(_0x2732a5){if(_0x2732a5){return _0x2732a5[_0x811d('0x2a')](_0x33c0cd)[_0x811d('0x2b')](function(_0x5b3050){return _0x5b3050;});}return null;};}function removeEntity(_0xb3b67c,_0x5163f8){return function(_0x51183c){if(_0x51183c){return _0x51183c[_0x811d('0x2c')]()[_0x811d('0x2b')](function(){_0xb3b67c['status'](0xcc)[_0x811d('0x2d')]();});}};}function handleEntityNotFound(_0x1986bc,_0x49f079){return function(_0x39e5eb){if(!_0x39e5eb){_0x1986bc[_0x811d('0x2e')](0x194);}return _0x39e5eb;};}function handleError(_0x64cd3d,_0x1424d6){_0x1424d6=_0x1424d6||0x1f4;return function(_0x364f44){logger['error'](_0x364f44[_0x811d('0x2f')]);if(_0x364f44[_0x811d('0x30')]){delete _0x364f44[_0x811d('0x30')];}_0x64cd3d[_0x811d('0x1f')](_0x1424d6)[_0x811d('0x31')](_0x364f44);};}exports[_0x811d('0x32')]=function(_0x338d4f,_0x2b0cd2){var _0x1cafa0={},_0x35e023={},_0x1dd4e9={'count':0x0,'rows':[]};var _0x32ef9e=_[_0x811d('0x33')](db[_0x811d('0x34')][_0x811d('0x35')],function(_0xb51538){return{'name':_0xb51538['fieldName'],'type':_0xb51538['type']['key']};});_0x35e023[_0x811d('0x36')]=_[_0x811d('0x37')](_['map'](_0x32ef9e,_0x811d('0x30')),[_0x811d('0x38')]);_0x35e023[_0x811d('0x39')]=_[_0x811d('0x3a')](_0x338d4f[_0x811d('0x39')]);_0x35e023[_0x811d('0x3b')]=_[_0x811d('0x3c')](_0x35e023['model'],_0x35e023[_0x811d('0x39')]);_0x1cafa0['attributes']=_['intersection'](_0x35e023[_0x811d('0x36')],qs[_0x811d('0x3d')](_0x338d4f[_0x811d('0x39')][_0x811d('0x3d')]));_0x1cafa0[_0x811d('0x3e')]=_0x1cafa0['attributes'][_0x811d('0x3f')]?_0x1cafa0['attributes']:_0x35e023[_0x811d('0x36')];if(!_0x338d4f[_0x811d('0x39')]['hasOwnProperty']('nolimit')){_0x1cafa0[_0x811d('0x23')]=qs['limit'](_0x338d4f['query']['limit']);_0x1cafa0[_0x811d('0x20')]=qs[_0x811d('0x20')](_0x338d4f['query'][_0x811d('0x20')]);}_0x1cafa0[_0x811d('0x40')]=qs[_0x811d('0x41')](_0x338d4f[_0x811d('0x39')][_0x811d('0x41')]);_0x1cafa0['where']=qs[_0x811d('0x3b')](_[_0x811d('0x42')](_0x338d4f[_0x811d('0x39')],_0x35e023[_0x811d('0x3b')]),_0x32ef9e);if(_0x338d4f['query'][_0x811d('0x43')]){_0x1cafa0[_0x811d('0x44')]=_[_0x811d('0x45')](_0x1cafa0['where'],{'$or':_[_0x811d('0x33')](_0x32ef9e,function(_0x16be8f){if(_0x16be8f[_0x811d('0x46')]!=='VIRTUAL'){var _0x370d97={};_0x370d97[_0x16be8f[_0x811d('0x30')]]={'$like':'%'+_0x338d4f[_0x811d('0x39')][_0x811d('0x43')]+'%'};return _0x370d97;}})});}_0x1cafa0=_[_0x811d('0x45')]({},_0x1cafa0,_0x338d4f['options']);var _0x385291={'where':_0x1cafa0[_0x811d('0x44')]};return db[_0x811d('0x34')][_0x811d('0x22')](_0x385291)['then'](function(_0x58c94d){_0x1dd4e9[_0x811d('0x22')]=_0x58c94d;if(_0x338d4f[_0x811d('0x39')][_0x811d('0x47')]){_0x1cafa0[_0x811d('0x48')]=[{'all':!![]}];}return db[_0x811d('0x34')][_0x811d('0x49')](_0x1cafa0);})[_0x811d('0x2b')](function(_0x3891c7){_0x1dd4e9[_0x811d('0x4a')]=_0x3891c7;return _0x1dd4e9;})['then'](respondWithFilteredResult(_0x2b0cd2,_0x1cafa0))[_0x811d('0x4b')](handleError(_0x2b0cd2,null));};exports[_0x811d('0x4c')]=function(_0x2b42c0,_0x339bb5){var _0x388c8f={'raw':![],'where':{'id':_0x2b42c0[_0x811d('0x4d')]['id']}},_0x24d98e={};_0x24d98e[_0x811d('0x36')]=_[_0x811d('0x3a')](db[_0x811d('0x34')][_0x811d('0x35')]);_0x24d98e[_0x811d('0x39')]=_[_0x811d('0x3a')](_0x2b42c0[_0x811d('0x39')]);_0x24d98e[_0x811d('0x3b')]=_[_0x811d('0x3c')](_0x24d98e[_0x811d('0x36')],_0x24d98e[_0x811d('0x39')]);_0x388c8f[_0x811d('0x3e')]=_['intersection'](_0x24d98e[_0x811d('0x36')],qs[_0x811d('0x3d')](_0x2b42c0['query'][_0x811d('0x3d')]));_0x388c8f[_0x811d('0x3e')]=_0x388c8f[_0x811d('0x3e')][_0x811d('0x3f')]?_0x388c8f['attributes']:_0x24d98e[_0x811d('0x36')];if(_0x2b42c0['query']['includeAll']){_0x388c8f[_0x811d('0x48')]=[{'all':!![]}];}_0x388c8f=_['merge']({},_0x388c8f,_0x2b42c0[_0x811d('0x4e')]);return db[_0x811d('0x34')][_0x811d('0x4f')](_0x388c8f)[_0x811d('0x2b')](handleEntityNotFound(_0x339bb5,null))[_0x811d('0x2b')](respondWithResult(_0x339bb5,null))[_0x811d('0x4b')](handleError(_0x339bb5,null));};exports[_0x811d('0x50')]=function(_0x292dd3,_0x7f1279){return db[_0x811d('0x34')][_0x811d('0x50')](_0x292dd3[_0x811d('0x51')],{})['then'](respondWithResult(_0x7f1279,0xc9))[_0x811d('0x4b')](handleError(_0x7f1279,null));};exports[_0x811d('0x2a')]=function(_0x387eb2,_0x23e8df){if(_0x387eb2['body']['id']){delete _0x387eb2[_0x811d('0x51')]['id'];}return db['VoiceRecording']['find']({'where':{'id':_0x387eb2[_0x811d('0x4d')]['id']}})[_0x811d('0x2b')](handleEntityNotFound(_0x23e8df,null))[_0x811d('0x2b')](saveUpdates(_0x387eb2['body'],null))[_0x811d('0x2b')](respondWithResult(_0x23e8df,null))[_0x811d('0x4b')](handleError(_0x23e8df,null));};exports['describe']=function(_0x1589ee,_0x39e024){return db[_0x811d('0x34')][_0x811d('0x52')]()['then'](respondWithResult(_0x39e024,null))[_0x811d('0x4b')](handleError(_0x39e024,null));};exports['download']=function(_0x13693e,_0x505725,_0x5e79f6){var _0x24bc15=require(_0x811d('0x53'));var _0x288289=![];var _0x187fe7={};if(_0x13693e[_0x811d('0x39')][_0x811d('0x46')]&&_0x13693e[_0x811d('0x39')][_0x811d('0x46')]==='uniqueid'){_0x187fe7[_0x811d('0x54')]=_0x13693e['params']['id'];}else{_0x187fe7['id']=_0x13693e[_0x811d('0x4d')]['id'];}return db[_0x811d('0x34')][_0x811d('0x4f')]({'where':_0x187fe7,'attributes':['id',_0x811d('0x55')],'raw':!![]})[_0x811d('0x2b')](handleEntityNotFound(_0x505725,null))[_0x811d('0x2b')](function(_0x2787d9){if(_0x2787d9){var _0x36dfeb=_0x2787d9[_0x811d('0x55')];var _0x547723=util['format'](_0x811d('0x56'),_0x36dfeb);if(fs[_0x811d('0x57')](_0x547723)){_0x288289=!![];return _0x24bc15[_0x811d('0x58')](_0x547723,_0x36dfeb,config['secrets'][_0x811d('0x59')])[_0x811d('0x2b')](function(){return _0x2787d9;});}return _0x2787d9;}})[_0x811d('0x2b')](function(_0x3ad820){if(_0x3ad820){var _0x545652=_0x3ad820[_0x811d('0x55')];if(!fs[_0x811d('0x57')](_0x545652)){throw new db['Sequelize'][(_0x811d('0x5a'))]('VoiceRecording\x20not\x20found');}if(_0x3ad820['filename']){return _0x505725[_0x811d('0x5b')](_0x545652,_0x3ad820[_0x811d('0x5c')]+path[_0x811d('0x5d')](_0x545652),function(){if(_0x288289){fs['unlink'](_0x545652);}});}else{return _0x505725[_0x811d('0x5b')](_0x545652,function(_0xa19571){if(_0x288289){fs['unlink'](_0x545652);}});}}})[_0x811d('0x4b')](function(_0x132b71){if(_0x132b71['message']===_0x811d('0x5e')){_0x505725[_0x811d('0x1f')](0x194)[_0x811d('0x31')]('Not\x20found');}else{return handleError(_0x505725,null);}});};exports['downloads']=function(_0x176013,_0x3fba72,_0x21522d){var _0x3bdea7=require(_0x811d('0x53'));var _0x497835=![];var _0x3b7c5c={'$and':[db[_0x811d('0x5f')][_0x811d('0x44')](db['sequelize']['fn']('MD5',db[_0x811d('0x5f')][_0x811d('0x60')](_0x811d('0x54'))),_0x176013[_0x811d('0x39')]['token'])]};if(_0x176013[_0x811d('0x39')][_0x811d('0x46')]&&_0x176013[_0x811d('0x39')][_0x811d('0x46')]===_0x811d('0x54')){_0x3b7c5c[_0x811d('0x61')][_0x811d('0x62')]({'uniqueid':_0x176013[_0x811d('0x4d')]['id']});}else{_0x3b7c5c['$and'][_0x811d('0x62')]({'id':_0x176013[_0x811d('0x4d')]['id']});}return db['VoiceRecording'][_0x811d('0x4f')]({'where':_0x3b7c5c,'attributes':['id',_0x811d('0x55')],'raw':!![]})[_0x811d('0x2b')](handleEntityNotFound(_0x3fba72,null))[_0x811d('0x2b')](function(_0x2ee6b2){if(_0x2ee6b2){var _0x1d1e68=util[_0x811d('0x38')]('%s.cypher',_0x2ee6b2['value']);if(fs['existsSync'](_0x1d1e68)){_0x497835=!![];return _0x3bdea7[_0x811d('0x58')](_0x1d1e68,_0x2ee6b2[_0x811d('0x55')],config[_0x811d('0x63')][_0x811d('0x59')])[_0x811d('0x2b')](function(){return _0x2ee6b2;});}return _0x2ee6b2;}})[_0x811d('0x2b')](function(_0x44f265){if(_0x44f265){if(!fs[_0x811d('0x57')](_0x44f265[_0x811d('0x55')])){throw new db['Sequelize'][(_0x811d('0x5a'))](_0x811d('0x5e'));}if(_0x44f265[_0x811d('0x5c')]){return _0x3fba72[_0x811d('0x5b')](_0x44f265['value'],_0x44f265[_0x811d('0x5c')]+path[_0x811d('0x5d')](_0x44f265['value']),function(){if(_0x497835){fs[_0x811d('0x64')](_0x44f265[_0x811d('0x55')]);}});}else{return _0x3fba72[_0x811d('0x5b')](_0x44f265[_0x811d('0x55')],function(_0x1f8f80){if(_0x497835){fs[_0x811d('0x64')](_0x44f265[_0x811d('0x55')]);}});}}})[_0x811d('0x4b')](handleError(_0x3fba72,null));};exports['destroy']=function(_0x19584b,_0x4e2317){return db[_0x811d('0x34')]['find']({'where':{'id':_0x19584b['params']['id']}})[_0x811d('0x2b')](function(_0x454130){if(_[_0x811d('0x65')](_0x454130)){throw new ReferenceError(_0x811d('0x66'));}return _0x454130;})['then'](function(_0x33b9f0){var _0x5437e1=_0x33b9f0[_0x811d('0x55')];logger['info'](_0x811d('0x67'),_0x5437e1);if(!_['isNil'](_0x33b9f0[_0x811d('0x55')])&&fs[_0x811d('0x57')](_0x5437e1)){logger[_0x811d('0x68')]('File:\x20\x22'+_0x5437e1+_0x811d('0x69'));fs[_0x811d('0x6a')](_0x5437e1);}_0x5437e1=_0x5437e1+'.cypher';if(!_[_0x811d('0x65')](_0x33b9f0[_0x811d('0x55')])&&fs[_0x811d('0x57')](_0x5437e1)){logger[_0x811d('0x68')](_0x811d('0x6b')+_0x5437e1+_0x811d('0x69'));fs[_0x811d('0x6a')](_0x5437e1);}return _0x33b9f0;})['then'](function(_0x59ccb4){if(!_0x59ccb4)throw new InternalError();return _0x59ccb4['destroy']();})['then'](function(){_0x4e2317['status'](0xcc)[_0x811d('0x2d')]();})[_0x811d('0x4b')](handleError(_0x4e2317,null));};function getBucketslist(_0x3da671,_0x3fa85a,_0x634403){return new Promise(function(_0x5f5a98,_0x43cacd){var _0x26d93c=new AWS['S3']({'accessKeyId':_0x3fa85a,'secretAccessKey':_0x3da671,'region':_0x634403});_0x26d93c[_0x811d('0x6c')]({},function(_0x5c6db0,_0x41e9e9){if(_0x5c6db0){return _0x43cacd(_0x5c6db0);}else{return _0x5f5a98(_0x41e9e9);}});});}function createBucket(_0x29240e,_0x3a91f8,_0x87f567,_0x74ff10){return new Promise(function(_0x616f98,_0x1f4aa7){var _0x1493bd=new AWS['S3']({'accessKeyId':_0x3a91f8,'secretAccessKey':_0x29240e,'region':_0x87f567});_0x1493bd[_0x811d('0x6d')]({'Bucket':_0x74ff10},function(_0x1dce7e,_0x26b5cf){if(_0x1dce7e){return _0x1f4aa7(_0x1dce7e);}else{return _0x616f98(_0x26b5cf);}});});}function uploadFile(_0x3099d4,_0x211933,_0xa32e47,_0x2eebb6,_0x449cd7,_0x908282){return new Promise(function(_0x15b2e3,_0x3ece9d){var _0xaa5e0a=new AWS['S3']({'accessKeyId':_0x211933,'secretAccessKey':_0x3099d4,'region':_0xa32e47});_0xaa5e0a['upload']({'Bucket':_0x2eebb6,'Key':_0x449cd7,'Body':_0x908282},function(_0x2fe1e6,_0x4974e5){if(_0x2fe1e6){return _0x3ece9d(_0x2fe1e6);}else{return _0x15b2e3(_0x4974e5);}});});}function startTranscribe(_0x2a81f5,_0x211e80,_0x3e4e67,_0x199156,_0x142166,_0x1fafe2){return new Promise(function(_0x2ed23e,_0x4e8ba5){var _0x585138=new AWS[(_0x811d('0x6e'))]({'accessKeyId':_0x211e80,'secretAccessKey':_0x2a81f5,'region':_0x3e4e67});_0x585138[_0x811d('0x6f')]({'TranscriptionJobName':_0x199156,'LanguageCode':_0x142166,'Media':{'MediaFileUri':_0x1fafe2}},function(_0x5278fb,_0x3c7747){if(_0x5278fb){return _0x4e8ba5(_0x5278fb);}else{return _0x2ed23e(_0x3c7747);}});});}function transcribe(_0x1c24c1,_0x60e3f0,_0xb47b82,_0x3a1487,_0x2b08af,_0x3102d3,_0x2d42b6){return new Promise(function(_0x1dce1b,_0x3b387c){var _0x13a861={};logger[_0x811d('0x68')](util[_0x811d('0x38')](_0x811d('0x70'),_0x1c24c1,_0x2b08af));return uploadFile(_0x60e3f0,_0xb47b82,_0x3a1487,_0x2b08af,path[_0x811d('0x71')](_0x3102d3),fs[_0x811d('0x72')](_0x3102d3))[_0x811d('0x2b')](function(_0x47d064){logger[_0x811d('0x68')](util[_0x811d('0x38')](_0x811d('0x73'),_0x1c24c1,_0x2b08af,_0x47d064['Location']));_0x13a861[_0x811d('0x74')]=_0x47d064['Bucket'];_0x13a861[_0x811d('0x75')]=_0x47d064[_0x811d('0x76')];logger[_0x811d('0x68')](util[_0x811d('0x38')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x1c24c1));return startTranscribe(_0x60e3f0,_0xb47b82,_0x3a1487,uuidv4(),_0x2d42b6,_0x47d064['Location']);})[_0x811d('0x2b')](function(_0x2f58b1){logger[_0x811d('0x68')](util[_0x811d('0x38')](_0x811d('0x77'),_0x1c24c1,_0x2f58b1['TranscriptionJob'][_0x811d('0x78')]));_0x13a861[_0x811d('0x79')]=_0x2f58b1[_0x811d('0x7a')][_0x811d('0x78')];_0x13a861[_0x811d('0x7b')]=_0x2f58b1[_0x811d('0x7a')]['TranscriptionJobStatus'];return _0x1dce1b(_0x13a861);})[_0x811d('0x4b')](function(_0x31176a){return _0x3b387c(_0x31176a);});});}exports[_0x811d('0x7c')]=function(_0x590e42,_0x4a21e0,_0x3f97b1){var _0x148f04;var _0x39fb7d;var _0x3cfd74;var _0x2630da=require('../../components/encryptor');return db[_0x811d('0x34')]['findOne']({'where':{'id':_0x590e42[_0x811d('0x4d')]['id']}})[_0x811d('0x2b')](function(_0x262935){if(_0x262935){var _0x1695cd=util[_0x811d('0x38')](_0x811d('0x56'),_0x262935[_0x811d('0x55')]);if(fs['existsSync'](_0x1695cd)){cypher=!![];return _0x2630da[_0x811d('0x58')](_0x1695cd,_0x262935[_0x811d('0x55')],config[_0x811d('0x63')]['recording'])[_0x811d('0x2b')](function(){return _0x262935;});}return _0x262935;}})[_0x811d('0x2b')](function(_0x175225){if(!_0x175225){throw new db[(_0x811d('0x7d'))][(_0x811d('0x5a'))](_0x811d('0x7e'));}_0x39fb7d=_0x175225;return db['Setting'][_0x811d('0x7f')]({'where':{'id':0x1}});})[_0x811d('0x2b')](handleEntityNotFound(_0x4a21e0,null))[_0x811d('0x2b')](function(_0x155c73){if(_0x155c73){_0x148f04=_0x155c73;if(!_0x148f04[_0x811d('0x80')]||!_0x148f04[_0x811d('0x81')]||!_0x148f04['transcribeRegion']||!_0x148f04[_0x811d('0x82')]||!_0x148f04[_0x811d('0x74')]){throw new db[(_0x811d('0x7d'))][(_0x811d('0x5a'))]('Transcribe\x20not\x20configured');}if(_0x590e42[_0x811d('0x51')]['runSentiment']&&(!_0x148f04[_0x811d('0x83')]||!_0x148f04['sentimentAccountId']||!_0x148f04[_0x811d('0x84')]||!_0x148f04['language']||!_0x148f04[_0x811d('0x74')])){throw new db[(_0x811d('0x7d'))][(_0x811d('0x5a'))](_0x811d('0x85'));}return db[_0x811d('0x86')]['findOne']({'where':{'id':_0x148f04['transcribeAccountId']}});}})[_0x811d('0x2b')](function(_0x60fb4d){if(!_0x60fb4d){throw new db[(_0x811d('0x7d'))][(_0x811d('0x5a'))](_0x811d('0x87'));}if(!_0x60fb4d[_0x811d('0x88')]||!_0x60fb4d[_0x811d('0x89')]){throw new db[(_0x811d('0x7d'))][(_0x811d('0x5a'))](_0x811d('0x8a'));}_0x3cfd74=_0x60fb4d;return getBucketslist(_0x3cfd74[_0x811d('0x88')],_0x3cfd74[_0x811d('0x89')],_0x148f04[_0x811d('0x8b')]);})[_0x811d('0x2b')](function(_0x254e6e){if(_0x254e6e&&_0x254e6e['Buckets']){var _0xb8fbd4=_[_0x811d('0x4f')](_0x254e6e[_0x811d('0x8c')],function(_0x2c5f33){return _0x2c5f33[_0x811d('0x8d')]===_0x148f04['bucket'];});if(!_0xb8fbd4){logger[_0x811d('0x68')](util[_0x811d('0x38')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x590e42[_0x811d('0x4d')]['id'],_0x148f04[_0x811d('0x74')]));return createBucket(_0x3cfd74['data1'],_0x3cfd74[_0x811d('0x89')],_0x148f04['transcribeRegion'],_0x148f04[_0x811d('0x74')]);}logger[_0x811d('0x68')](util[_0x811d('0x38')](_0x811d('0x8e'),_0x590e42['params']['id'],_0x148f04['bucket']));return;}})[_0x811d('0x2b')](function(_0x327f06){if(_0x39fb7d['transcribeStatus']===_0x811d('0x8f')){return transcribe(_0x590e42[_0x811d('0x4d')]['id'],_0x3cfd74[_0x811d('0x88')],_0x3cfd74[_0x811d('0x89')],_0x148f04[_0x811d('0x8b')],_0x148f04[_0x811d('0x74')],_0x39fb7d[_0x811d('0x55')],_0x148f04[_0x811d('0x82')]);}else{logger['info'](util['format'](_0x811d('0x90'),_0x590e42[_0x811d('0x4d')]['id']));return{'transcribeStatus':_0x811d('0x91')};}})[_0x811d('0x2b')](function(_0x4110de){if(_0x4110de){_0x4110de[_0x811d('0x92')]=_0x590e42[_0x811d('0x51')]['runSentiment'];return _0x39fb7d[_0x811d('0x93')](_0x4110de);}})['then'](respondWithResult(_0x4a21e0,null))['catch'](handleError(_0x4a21e0,null));};function writeFile(_0x127839,_0x4b9979){return new Promise(function(_0x144134,_0x3afbc5){fs[_0x811d('0x94')](_0x4b9979,_0x127839,function(_0x27bf57,_0x2df9ae){if(_0x27bf57){return _0x3afbc5(_0x27bf57);}else{return _0x144134(_0x2df9ae);}});});}exports[_0x811d('0x95')]=function(_0x461a96,_0x13b57f,_0x2eecfe){return db[_0x811d('0x34')][_0x811d('0x7f')]({'where':{'id':_0x461a96['params']['id']}})[_0x811d('0x2b')](handleEntityNotFound(_0x13b57f))[_0x811d('0x2b')](function(_0x27f187){if(_0x27f187&&_0x27f187[_0x811d('0x96')]){var _0x4873d6=_0x27f187['fileText'];var _0x33cf31=config[_0x811d('0x97')]+'/server/files/transcribes/transcribe_'+_0x27f187['id']+'.txt';if(fs['existsSync'](_0x33cf31)){return _0x33cf31;}return writeFile(_0x4873d6,_0x33cf31)[_0x811d('0x2b')](function(){return _0x33cf31;});}else{throw new db[(_0x811d('0x7d'))][(_0x811d('0x5a'))](_0x811d('0x98'));}})[_0x811d('0x2b')](function(_0x57b9f8){return _0x13b57f['download'](_0x57b9f8);})[_0x811d('0x4b')](handleError(_0x13b57f));};
\ No newline at end of file
+var _0xfbbe=['query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','VoiceRecording','includeAll','include','findAll','rows','show','catch','create','body','find','describe','download','../../components/encryptor','uniqueid','params','value','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','sequelize','MD5','col','$and','push','%s.cypher','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','upload','TranscribeService','[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','Bucket','location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','TranscriptionJobStatus','findOne','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','error','name','send','index','map','rawAttributes','type','model','format'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xfbbe,0xfd));var _0xefbb=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xfbbe[_0x1cc8fe];return _0x230054;};'use strict';var emlformat=require(_0xefbb('0x0'));var rimraf=require(_0xefbb('0x1'));var zipdir=require(_0xefbb('0x2'));var jsonpatch=require(_0xefbb('0x3'));var rp=require(_0xefbb('0x4'));var moment=require('moment');var BPromise=require(_0xefbb('0x5'));var Mustache=require(_0xefbb('0x6'));var util=require(_0xefbb('0x7'));var path=require(_0xefbb('0x8'));var sox=require(_0xefbb('0x9'));var csv=require(_0xefbb('0xa'));var ejs=require(_0xefbb('0xb'));var fs=require('fs');var fs_extra=require(_0xefbb('0xc'));var _=require(_0xefbb('0xd'));var squel=require(_0xefbb('0xe'));var crypto=require(_0xefbb('0xf'));var jsforce=require(_0xefbb('0x10'));var deskjs=require(_0xefbb('0x11'));var toCsv=require(_0xefbb('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var AWS=require(_0xefbb('0x12'));var uuidv4=require(_0xefbb('0x13'));var Redis=require(_0xefbb('0x14'));var authService=require(_0xefbb('0x15'));var qs=require(_0xefbb('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xefbb('0x17'));var logger=require('../../config/logger')(_0xefbb('0x18'));var utils=require(_0xefbb('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xefbb('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4fbfa9,_0xfbebf9){_0xfbebf9=_0xfbebf9||0xcc;return function(_0x50d5e2){if(_0x50d5e2){return _0x4fbfa9[_0xefbb('0x1b')](_0xfbebf9);}return _0x4fbfa9[_0xefbb('0x1c')](_0xfbebf9)[_0xefbb('0x1d')]();};}function respondWithResult(_0x22d95d,_0x5edbe9){_0x5edbe9=_0x5edbe9||0xc8;return function(_0x3468fe){if(_0x3468fe){return _0x22d95d['status'](_0x5edbe9)['json'](_0x3468fe);}};}function respondWithFilteredResult(_0x49a8a2,_0x226619){return function(_0x2915f2){if(_0x2915f2){var _0x33315c=typeof _0x226619[_0xefbb('0x1e')]===_0xefbb('0x1f')&&typeof _0x226619[_0xefbb('0x20')]==='undefined';var _0x108c27=_0x2915f2[_0xefbb('0x21')];var _0x413c41=_0x33315c?0x0:_0x226619['offset'];var _0x43f3fb=_0x33315c?_0x2915f2[_0xefbb('0x21')]:_0x226619[_0xefbb('0x1e')]+_0x226619[_0xefbb('0x20')];var _0x54fcc0;if(_0x43f3fb>=_0x108c27){_0x43f3fb=_0x108c27;_0x54fcc0=0xc8;}else{_0x54fcc0=0xce;}_0x49a8a2['status'](_0x54fcc0);return _0x49a8a2[_0xefbb('0x22')](_0xefbb('0x23'),_0x413c41+'-'+_0x43f3fb+'/'+_0x108c27)[_0xefbb('0x24')](_0x2915f2);}return null;};}function patchUpdates(_0x3b4d98){return function(_0x376395){try{jsonpatch[_0xefbb('0x25')](_0x376395,_0x3b4d98,!![]);}catch(_0x78f38c){return BPromise['reject'](_0x78f38c);}return _0x376395[_0xefbb('0x26')]();};}function saveUpdates(_0x856ade,_0x59d9ca){return function(_0x2aac1a){if(_0x2aac1a){return _0x2aac1a[_0xefbb('0x27')](_0x856ade)[_0xefbb('0x28')](function(_0x394715){return _0x394715;});}return null;};}function removeEntity(_0x55c326,_0xb90175){return function(_0x36c95b){if(_0x36c95b){return _0x36c95b[_0xefbb('0x29')]()[_0xefbb('0x28')](function(){_0x55c326['status'](0xcc)[_0xefbb('0x1d')]();});}};}function handleEntityNotFound(_0x34b483,_0x2c8210){return function(_0xff38cb){if(!_0xff38cb){_0x34b483[_0xefbb('0x1b')](0x194);}return _0xff38cb;};}function handleError(_0x5f5846,_0x435fad){_0x435fad=_0x435fad||0x1f4;return function(_0x537b1c){logger[_0xefbb('0x2a')](_0x537b1c['stack']);if(_0x537b1c[_0xefbb('0x2b')]){delete _0x537b1c['name'];}_0x5f5846[_0xefbb('0x1c')](_0x435fad)[_0xefbb('0x2c')](_0x537b1c);};}exports[_0xefbb('0x2d')]=function(_0x5c2cd4,_0x3bbd47){var _0x4963c5={},_0x47d596={},_0x189f89={'count':0x0,'rows':[]};var _0x20519c=_[_0xefbb('0x2e')](db['VoiceRecording'][_0xefbb('0x2f')],function(_0x47fd73){return{'name':_0x47fd73['fieldName'],'type':_0x47fd73[_0xefbb('0x30')]['key']};});_0x47d596[_0xefbb('0x31')]=_['differenceBy'](_[_0xefbb('0x2e')](_0x20519c,_0xefbb('0x2b')),[_0xefbb('0x32')]);_0x47d596[_0xefbb('0x33')]=_[_0xefbb('0x34')](_0x5c2cd4['query']);_0x47d596['filters']=_[_0xefbb('0x35')](_0x47d596[_0xefbb('0x31')],_0x47d596[_0xefbb('0x33')]);_0x4963c5[_0xefbb('0x36')]=_['intersection'](_0x47d596[_0xefbb('0x31')],qs[_0xefbb('0x37')](_0x5c2cd4[_0xefbb('0x33')]['fields']));_0x4963c5[_0xefbb('0x36')]=_0x4963c5['attributes'][_0xefbb('0x38')]?_0x4963c5[_0xefbb('0x36')]:_0x47d596['model'];if(!_0x5c2cd4['query'][_0xefbb('0x39')](_0xefbb('0x3a'))){_0x4963c5[_0xefbb('0x20')]=qs[_0xefbb('0x20')](_0x5c2cd4['query'][_0xefbb('0x20')]);_0x4963c5[_0xefbb('0x1e')]=qs[_0xefbb('0x1e')](_0x5c2cd4[_0xefbb('0x33')][_0xefbb('0x1e')]);}_0x4963c5[_0xefbb('0x3b')]=qs[_0xefbb('0x3c')](_0x5c2cd4[_0xefbb('0x33')][_0xefbb('0x3c')]);_0x4963c5[_0xefbb('0x3d')]=qs[_0xefbb('0x3e')](_[_0xefbb('0x3f')](_0x5c2cd4['query'],_0x47d596['filters']),_0x20519c);if(_0x5c2cd4['query'][_0xefbb('0x40')]){_0x4963c5[_0xefbb('0x3d')]=_[_0xefbb('0x41')](_0x4963c5[_0xefbb('0x3d')],{'$or':_[_0xefbb('0x2e')](_0x20519c,function(_0x564aae){if(_0x564aae['type']!=='VIRTUAL'){var _0x2a3f55={};_0x2a3f55[_0x564aae['name']]={'$like':'%'+_0x5c2cd4[_0xefbb('0x33')][_0xefbb('0x40')]+'%'};return _0x2a3f55;}})});}_0x4963c5=_['merge']({},_0x4963c5,_0x5c2cd4[_0xefbb('0x42')]);var _0x1a2d08={'where':_0x4963c5[_0xefbb('0x3d')]};return db[_0xefbb('0x43')][_0xefbb('0x21')](_0x1a2d08)[_0xefbb('0x28')](function(_0x53f960){_0x189f89[_0xefbb('0x21')]=_0x53f960;if(_0x5c2cd4[_0xefbb('0x33')][_0xefbb('0x44')]){_0x4963c5[_0xefbb('0x45')]=[{'all':!![]}];}return db['VoiceRecording'][_0xefbb('0x46')](_0x4963c5);})[_0xefbb('0x28')](function(_0x5244ea){_0x189f89[_0xefbb('0x47')]=_0x5244ea;return _0x189f89;})[_0xefbb('0x28')](respondWithFilteredResult(_0x3bbd47,_0x4963c5))['catch'](handleError(_0x3bbd47,null));};exports[_0xefbb('0x48')]=function(_0x462f6c,_0x11240f){var _0x544572={'raw':![],'where':{'id':_0x462f6c['params']['id']}},_0x26bbbe={};_0x26bbbe[_0xefbb('0x31')]=_['keys'](db['VoiceRecording'][_0xefbb('0x2f')]);_0x26bbbe[_0xefbb('0x33')]=_[_0xefbb('0x34')](_0x462f6c[_0xefbb('0x33')]);_0x26bbbe[_0xefbb('0x3e')]=_[_0xefbb('0x35')](_0x26bbbe[_0xefbb('0x31')],_0x26bbbe['query']);_0x544572['attributes']=_[_0xefbb('0x35')](_0x26bbbe[_0xefbb('0x31')],qs['fields'](_0x462f6c[_0xefbb('0x33')][_0xefbb('0x37')]));_0x544572['attributes']=_0x544572['attributes']['length']?_0x544572[_0xefbb('0x36')]:_0x26bbbe[_0xefbb('0x31')];if(_0x462f6c[_0xefbb('0x33')][_0xefbb('0x44')]){_0x544572[_0xefbb('0x45')]=[{'all':!![]}];}_0x544572=_[_0xefbb('0x41')]({},_0x544572,_0x462f6c['options']);return db[_0xefbb('0x43')]['find'](_0x544572)[_0xefbb('0x28')](handleEntityNotFound(_0x11240f,null))['then'](respondWithResult(_0x11240f,null))[_0xefbb('0x49')](handleError(_0x11240f,null));};exports[_0xefbb('0x4a')]=function(_0x288298,_0x138643){return db[_0xefbb('0x43')]['create'](_0x288298['body'],{})['then'](respondWithResult(_0x138643,0xc9))[_0xefbb('0x49')](handleError(_0x138643,null));};exports['update']=function(_0x2330a4,_0xa7173b){if(_0x2330a4[_0xefbb('0x4b')]['id']){delete _0x2330a4['body']['id'];}return db[_0xefbb('0x43')][_0xefbb('0x4c')]({'where':{'id':_0x2330a4['params']['id']}})['then'](handleEntityNotFound(_0xa7173b,null))[_0xefbb('0x28')](saveUpdates(_0x2330a4[_0xefbb('0x4b')],null))[_0xefbb('0x28')](respondWithResult(_0xa7173b,null))['catch'](handleError(_0xa7173b,null));};exports[_0xefbb('0x4d')]=function(_0xeb4295,_0x28167a){return db['VoiceRecording'][_0xefbb('0x4d')]()[_0xefbb('0x28')](respondWithResult(_0x28167a,null))[_0xefbb('0x49')](handleError(_0x28167a,null));};exports[_0xefbb('0x4e')]=function(_0x3261be,_0x146472,_0x44f1b4){var _0x36d317=require(_0xefbb('0x4f'));var _0x2b00c6=![];var _0xbf1f10={};if(_0x3261be[_0xefbb('0x33')][_0xefbb('0x30')]&&_0x3261be[_0xefbb('0x33')][_0xefbb('0x30')]===_0xefbb('0x50')){_0xbf1f10[_0xefbb('0x50')]=_0x3261be[_0xefbb('0x51')]['id'];}else{_0xbf1f10['id']=_0x3261be['params']['id'];}return db[_0xefbb('0x43')][_0xefbb('0x4c')]({'where':_0xbf1f10,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x146472,null))[_0xefbb('0x28')](function(_0x4760b7){if(_0x4760b7){var _0x5e201a=_0x4760b7[_0xefbb('0x52')];var _0x2c6b52=util[_0xefbb('0x32')]('%s.cypher',_0x5e201a);if(fs['existsSync'](_0x2c6b52)){_0x2b00c6=!![];return _0x36d317[_0xefbb('0x53')](_0x2c6b52,_0x5e201a,config[_0xefbb('0x54')][_0xefbb('0x55')])[_0xefbb('0x28')](function(){return _0x4760b7;});}return _0x4760b7;}})[_0xefbb('0x28')](function(_0x4ac8f2){if(_0x4ac8f2){var _0x4d2d3f=_0x4ac8f2['value'];if(!fs[_0xefbb('0x56')](_0x4d2d3f)){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))](_0xefbb('0x59'));}if(_0x4ac8f2[_0xefbb('0x5a')]){return _0x146472['download'](_0x4d2d3f,_0x4ac8f2[_0xefbb('0x5a')]+path[_0xefbb('0x5b')](_0x4d2d3f),function(){if(_0x2b00c6){fs[_0xefbb('0x5c')](_0x4d2d3f);}});}else{return _0x146472[_0xefbb('0x4e')](_0x4d2d3f,function(_0x237856){if(_0x2b00c6){fs['unlink'](_0x4d2d3f);}});}}})[_0xefbb('0x49')](function(_0x1114a1){if(_0x1114a1[_0xefbb('0x5d')]===_0xefbb('0x59')){_0x146472['status'](0x194)[_0xefbb('0x2c')](_0xefbb('0x5e'));}else{return handleError(_0x146472,null);}});};exports[_0xefbb('0x5f')]=function(_0x4635f9,_0x196de8,_0x277d9b){var _0x47008a=require(_0xefbb('0x4f'));var _0x2f6955=![];var _0x4db0f3={'$and':[db[_0xefbb('0x60')][_0xefbb('0x3d')](db['sequelize']['fn'](_0xefbb('0x61'),db[_0xefbb('0x60')][_0xefbb('0x62')](_0xefbb('0x50'))),_0x4635f9[_0xefbb('0x33')]['token'])]};if(_0x4635f9[_0xefbb('0x33')]['type']&&_0x4635f9['query'][_0xefbb('0x30')]===_0xefbb('0x50')){_0x4db0f3[_0xefbb('0x63')][_0xefbb('0x64')]({'uniqueid':_0x4635f9[_0xefbb('0x51')]['id']});}else{_0x4db0f3[_0xefbb('0x63')][_0xefbb('0x64')]({'id':_0x4635f9[_0xefbb('0x51')]['id']});}return db[_0xefbb('0x43')][_0xefbb('0x4c')]({'where':_0x4db0f3,'attributes':['id',_0xefbb('0x52')],'raw':!![]})[_0xefbb('0x28')](handleEntityNotFound(_0x196de8,null))[_0xefbb('0x28')](function(_0x21c2ac){if(_0x21c2ac){var _0x475ea8=util[_0xefbb('0x32')](_0xefbb('0x65'),_0x21c2ac[_0xefbb('0x52')]);if(fs['existsSync'](_0x475ea8)){_0x2f6955=!![];return _0x47008a[_0xefbb('0x53')](_0x475ea8,_0x21c2ac[_0xefbb('0x52')],config[_0xefbb('0x54')][_0xefbb('0x55')])[_0xefbb('0x28')](function(){return _0x21c2ac;});}return _0x21c2ac;}})['then'](function(_0x28c583){if(_0x28c583){if(!fs[_0xefbb('0x56')](_0x28c583[_0xefbb('0x52')])){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))]('VoiceRecording\x20not\x20found');}if(_0x28c583['filename']){return _0x196de8[_0xefbb('0x4e')](_0x28c583[_0xefbb('0x52')],_0x28c583[_0xefbb('0x5a')]+path[_0xefbb('0x5b')](_0x28c583['value']),function(){if(_0x2f6955){fs[_0xefbb('0x5c')](_0x28c583[_0xefbb('0x52')]);}});}else{return _0x196de8[_0xefbb('0x4e')](_0x28c583[_0xefbb('0x52')],function(_0x381ce4){if(_0x2f6955){fs['unlink'](_0x28c583['value']);}});}}})['catch'](handleError(_0x196de8,null));};exports[_0xefbb('0x29')]=function(_0x5a5f55,_0x15ad5a){return db[_0xefbb('0x43')]['find']({'where':{'id':_0x5a5f55[_0xefbb('0x51')]['id']}})[_0xefbb('0x28')](function(_0xa4122a){if(_[_0xefbb('0x66')](_0xa4122a)){throw new ReferenceError(_0xefbb('0x67'));}return _0xa4122a;})[_0xefbb('0x28')](function(_0x3f40b3){var _0x4b2c75=_0x3f40b3[_0xefbb('0x52')];logger[_0xefbb('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0x4b2c75);if(!_['isNil'](_0x3f40b3['value'])&&fs[_0xefbb('0x56')](_0x4b2c75)){logger[_0xefbb('0x68')](_0xefbb('0x69')+_0x4b2c75+_0xefbb('0x6a'));fs[_0xefbb('0x6b')](_0x4b2c75);}_0x4b2c75=_0x4b2c75+'.cypher';if(!_[_0xefbb('0x66')](_0x3f40b3[_0xefbb('0x52')])&&fs[_0xefbb('0x56')](_0x4b2c75)){logger[_0xefbb('0x68')](_0xefbb('0x69')+_0x4b2c75+_0xefbb('0x6a'));fs[_0xefbb('0x6b')](_0x4b2c75);}return _0x3f40b3;})[_0xefbb('0x28')](function(_0x3c5c3a){if(!_0x3c5c3a)throw new InternalError();return _0x3c5c3a[_0xefbb('0x29')]();})['then'](function(){_0x15ad5a[_0xefbb('0x1c')](0xcc)[_0xefbb('0x1d')]();})[_0xefbb('0x49')](handleError(_0x15ad5a,null));};function getBucketslist(_0x5874f6,_0x26ccd9,_0x5d0ee4){return new Promise(function(_0x201c42,_0x5d8818){var _0x258ca4=new AWS['S3']({'accessKeyId':_0x26ccd9,'secretAccessKey':_0x5874f6,'region':_0x5d0ee4});_0x258ca4['listBuckets']({},function(_0x3aad1d,_0x19dad8){if(_0x3aad1d){return _0x5d8818(_0x3aad1d);}else{return _0x201c42(_0x19dad8);}});});}function createBucket(_0x338959,_0x20afd3,_0x5f1dde,_0x2f579f){return new Promise(function(_0x2e1a6c,_0x369bb9){var _0x214d22=new AWS['S3']({'accessKeyId':_0x20afd3,'secretAccessKey':_0x338959,'region':_0x5f1dde});_0x214d22['createBucket']({'Bucket':_0x2f579f},function(_0x162507,_0x333f02){if(_0x162507){return _0x369bb9(_0x162507);}else{return _0x2e1a6c(_0x333f02);}});});}function uploadFile(_0x4c4edf,_0x3afa0b,_0x48738d,_0x2ffffd,_0x15fe90,_0x1df45a){return new Promise(function(_0x23d92f,_0x515846){var _0x5a6df9=new AWS['S3']({'accessKeyId':_0x3afa0b,'secretAccessKey':_0x4c4edf,'region':_0x48738d});_0x5a6df9[_0xefbb('0x6c')]({'Bucket':_0x2ffffd,'Key':_0x15fe90,'Body':_0x1df45a},function(_0x266265,_0x18d281){if(_0x266265){return _0x515846(_0x266265);}else{return _0x23d92f(_0x18d281);}});});}function startTranscribe(_0x9235f3,_0x293a4a,_0x2871c2,_0x32ca07,_0x42c71b,_0xd172e0){return new Promise(function(_0xa72f9,_0x23be74){var _0x5d6e03=new AWS[(_0xefbb('0x6d'))]({'accessKeyId':_0x293a4a,'secretAccessKey':_0x9235f3,'region':_0x2871c2});_0x5d6e03['startTranscriptionJob']({'TranscriptionJobName':_0x32ca07,'LanguageCode':_0x42c71b,'Media':{'MediaFileUri':_0xd172e0}},function(_0x8dd667,_0x4c21e4){if(_0x8dd667){return _0x23be74(_0x8dd667);}else{return _0xa72f9(_0x4c21e4);}});});}function transcribe(_0xf6b727,_0x1952cd,_0x278392,_0x2a3eb2,_0x3b61ee,_0x3af70d,_0x1c3c4e){return new Promise(function(_0x122b82,_0x337578){var _0x160f7c={};logger[_0xefbb('0x68')](util['format'](_0xefbb('0x6e'),_0xf6b727,_0x3b61ee));return uploadFile(_0x1952cd,_0x278392,_0x2a3eb2,_0x3b61ee,path[_0xefbb('0x6f')](_0x3af70d),fs[_0xefbb('0x70')](_0x3af70d))[_0xefbb('0x28')](function(_0x313d39){logger[_0xefbb('0x68')](util[_0xefbb('0x32')](_0xefbb('0x71'),_0xf6b727,_0x3b61ee,_0x313d39[_0xefbb('0x72')]));_0x160f7c[_0xefbb('0x73')]=_0x313d39[_0xefbb('0x74')];_0x160f7c[_0xefbb('0x75')]=_0x313d39['Location'];logger['info'](util['format']('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0xf6b727));return startTranscribe(_0x1952cd,_0x278392,_0x2a3eb2,uuidv4(),_0x1c3c4e,_0x313d39[_0xefbb('0x72')]);})[_0xefbb('0x28')](function(_0x42ca0a){logger[_0xefbb('0x68')](util[_0xefbb('0x32')](_0xefbb('0x76'),_0xf6b727,_0x42ca0a[_0xefbb('0x77')][_0xefbb('0x78')]));_0x160f7c['transcribeName']=_0x42ca0a[_0xefbb('0x77')][_0xefbb('0x78')];_0x160f7c['transcribeStatus']=_0x42ca0a[_0xefbb('0x77')][_0xefbb('0x79')];return _0x122b82(_0x160f7c);})[_0xefbb('0x49')](function(_0x1e11ba){return _0x337578(_0x1e11ba);});});}exports['runTranscribe']=function(_0x573f24,_0x559a92,_0x148aed){var _0x5d848e;var _0x2773f6;var _0x479de3;var _0x539496=require('../../components/encryptor');return db['VoiceRecording']['findOne']({'where':{'id':_0x573f24[_0xefbb('0x51')]['id']}})['then'](function(_0x1e7831){if(_0x1e7831){var _0x35a69d=util[_0xefbb('0x32')](_0xefbb('0x65'),_0x1e7831[_0xefbb('0x52')]);if(fs[_0xefbb('0x56')](_0x35a69d)){cypher=!![];return _0x539496[_0xefbb('0x53')](_0x35a69d,_0x1e7831[_0xefbb('0x52')],config[_0xefbb('0x54')][_0xefbb('0x55')])[_0xefbb('0x28')](function(){return _0x1e7831;});}return _0x1e7831;}})[_0xefbb('0x28')](function(_0x2d4b69){if(!_0x2d4b69){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))]('Voice\x20Recording\x20not\x20found');}_0x2773f6=_0x2d4b69;return db['Setting'][_0xefbb('0x7a')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x559a92,null))[_0xefbb('0x28')](function(_0x5623d2){if(_0x5623d2){_0x5d848e=_0x5623d2;if(!_0x5d848e[_0xefbb('0x7b')]||!_0x5d848e[_0xefbb('0x7c')]||!_0x5d848e[_0xefbb('0x7d')]||!_0x5d848e['language']||!_0x5d848e['bucket']){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))](_0xefbb('0x7e'));}if(_0x573f24[_0xefbb('0x4b')][_0xefbb('0x7f')]&&(!_0x5d848e[_0xefbb('0x80')]||!_0x5d848e[_0xefbb('0x81')]||!_0x5d848e[_0xefbb('0x82')]||!_0x5d848e[_0xefbb('0x83')]||!_0x5d848e[_0xefbb('0x73')])){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))](_0xefbb('0x84'));}return db[_0xefbb('0x85')][_0xefbb('0x7a')]({'where':{'id':_0x5d848e[_0xefbb('0x7c')]}});}})[_0xefbb('0x28')](function(_0x39b5ca){if(!_0x39b5ca){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x39b5ca[_0xefbb('0x86')]||!_0x39b5ca[_0xefbb('0x87')]){throw new db[(_0xefbb('0x57'))][(_0xefbb('0x58'))]('Cloud\x20Provider\x20not\x20configured');}_0x479de3=_0x39b5ca;return getBucketslist(_0x479de3[_0xefbb('0x86')],_0x479de3['data2'],_0x5d848e['transcribeRegion']);})[_0xefbb('0x28')](function(_0x2757fd){if(_0x2757fd&&_0x2757fd['Buckets']){var _0x24cb74=_['find'](_0x2757fd[_0xefbb('0x88')],function(_0x311d75){return _0x311d75[_0xefbb('0x89')]===_0x5d848e['bucket'];});if(!_0x24cb74){logger[_0xefbb('0x68')](util[_0xefbb('0x32')](_0xefbb('0x8a'),_0x573f24[_0xefbb('0x51')]['id'],_0x5d848e[_0xefbb('0x73')]));return createBucket(_0x479de3[_0xefbb('0x86')],_0x479de3[_0xefbb('0x87')],_0x5d848e[_0xefbb('0x7d')],_0x5d848e['bucket']);}logger[_0xefbb('0x68')](util['format'](_0xefbb('0x8b'),_0x573f24[_0xefbb('0x51')]['id'],_0x5d848e[_0xefbb('0x73')]));return;}})['then'](function(_0xbce58){if(_0x2773f6[_0xefbb('0x8c')]===_0xefbb('0x8d')){return transcribe(_0x573f24[_0xefbb('0x51')]['id'],_0x479de3[_0xefbb('0x86')],_0x479de3[_0xefbb('0x87')],_0x5d848e[_0xefbb('0x7d')],_0x5d848e[_0xefbb('0x73')],_0x2773f6[_0xefbb('0x52')],_0x5d848e[_0xefbb('0x83')]);}else{logger[_0xefbb('0x68')](util['format'](_0xefbb('0x8e'),_0x573f24[_0xefbb('0x51')]['id']));return{'transcribeStatus':_0xefbb('0x8f')};}})['then'](function(_0x599c62){if(_0x599c62){_0x599c62[_0xefbb('0x90')]=_0x573f24[_0xefbb('0x4b')]['runSentiment'];return _0x2773f6[_0xefbb('0x91')](_0x599c62);}})[_0xefbb('0x28')](respondWithResult(_0x559a92,null))[_0xefbb('0x49')](handleError(_0x559a92,null));};function writeFile(_0x12f84f,_0x3cf889){return new Promise(function(_0x388293,_0x1821bd){fs['writeFile'](_0x3cf889,_0x12f84f,function(_0x2cd09c,_0xf94f4c){if(_0x2cd09c){return _0x1821bd(_0x2cd09c);}else{return _0x388293(_0xf94f4c);}});});}exports[_0xefbb('0x92')]=function(_0x1ba340,_0xc94710,_0x20c065){return db['VoiceRecording'][_0xefbb('0x7a')]({'where':{'id':_0x1ba340['params']['id']}})['then'](handleEntityNotFound(_0xc94710))[_0xefbb('0x28')](function(_0x4b744a){if(_0x4b744a&&_0x4b744a[_0xefbb('0x93')]){var _0x4c6094=_0x4b744a[_0xefbb('0x93')];var _0x351d8f=config[_0xefbb('0x94')]+_0xefbb('0x95')+_0x4b744a['id']+_0xefbb('0x96');if(fs[_0xefbb('0x56')](_0x351d8f)){return _0x351d8f;}return writeFile(_0x4c6094,_0x351d8f)[_0xefbb('0x28')](function(){return _0x351d8f;});}else{throw new db['Sequelize'][(_0xefbb('0x58'))](_0xefbb('0x97'));}})[_0xefbb('0x28')](function(_0x5828be){return _0xc94710[_0xefbb('0x4e')](_0x5828be);})[_0xefbb('0x49')](handleError(_0xc94710));};
\ No newline at end of file
index 875d9aa..3b14d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x147b=['./voiceRecording.attributes','define','uniqueid','lodash','util','api','moment','request-promise','path','rimraf'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x147b,0x193));var _0xb147=function(_0x4f6faf,_0x148286){_0x4f6faf=_0x4f6faf-0x0;var _0xb9736b=_0x147b[_0x4f6faf];return _0xb9736b;};'use strict';var _=require(_0xb147('0x0'));var util=require(_0xb147('0x1'));var logger=require('../../config/logger')(_0xb147('0x2'));var moment=require(_0xb147('0x3'));var BPromise=require('bluebird');var rp=require(_0xb147('0x4'));var fs=require('fs');var path=require(_0xb147('0x5'));var rimraf=require(_0xb147('0x6'));var config=require('../../config/environment');var attributes=require(_0xb147('0x7'));module['exports']=function(_0x2432f1,_0x72c3cf){return _0x2432f1[_0xb147('0x8')]('VoiceRecording',attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0xb147('0x9'),'fields':[_0xb147('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2802=['VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceRecording.attributes','exports','define'];(function(_0x3322a0,_0xc75fc7){var _0x15be8e=function(_0x44983b){while(--_0x44983b){_0x3322a0['push'](_0x3322a0['shift']());}};_0x15be8e(++_0xc75fc7);}(_0x2802,0x1b5));var _0x2280=function(_0x5538d5,_0x190032){_0x5538d5=_0x5538d5-0x0;var _0x323b1a=_0x2802[_0x5538d5];return _0x323b1a;};'use strict';var _=require(_0x2280('0x0'));var util=require(_0x2280('0x1'));var logger=require(_0x2280('0x2'))(_0x2280('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2280('0x4'));var fs=require('fs');var path=require(_0x2280('0x5'));var rimraf=require(_0x2280('0x6'));var config=require(_0x2280('0x7'));var attributes=require(_0x2280('0x8'));module[_0x2280('0x9')]=function(_0x8cffc8,_0x30a0c9){return _0x8cffc8[_0x2280('0xa')](_0x2280('0xb'),attributes,{'tableName':_0x2280('0xc'),'paranoid':![],'indexes':[{'name':_0x2280('0xd'),'fields':[_0x2280('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2da3789..9bf90f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0424=['stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','value','%s.cypher','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s'];(function(_0x13d9ac,_0x193a78){var _0x348a17=function(_0x5625a2){while(--_0x5625a2){_0x13d9ac['push'](_0x13d9ac['shift']());}};_0x348a17(++_0x193a78);}(_0x0424,0x159));var _0x4042=function(_0x5c6272,_0xd82df5){_0x5c6272=_0x5c6272-0x0;var _0x19c236=_0x0424[_0x5c6272];return _0x19c236;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4042('0x0'));var BPromise=require(_0x4042('0x1'));var rs=require(_0x4042('0x2'));var fs=require('fs');var Redis=require(_0x4042('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4042('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x4042('0x5'));var jayson=require(_0x4042('0x6'));var client=jayson[_0x4042('0x7')][_0x4042('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3abaf1,_0xa5310f,_0x10ec07){return new BPromise(function(_0x5d11bf,_0x509772){return client[_0x4042('0x9')](_0x3abaf1,_0x10ec07)[_0x4042('0xa')](function(_0x103e4a){logger['info'](_0x4042('0xb'),_0xa5310f,_0x4042('0xc'));logger[_0x4042('0xd')](_0x4042('0xe'),_0xa5310f,_0x4042('0xc'),JSON[_0x4042('0xf')](_0x103e4a));if(_0x103e4a[_0x4042('0x10')]){if(_0x103e4a[_0x4042('0x10')]['code']===0x1f4){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a['error'][_0x4042('0x11')]);return _0x509772(_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);}logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);return _0x5d11bf(_0x103e4a['error'][_0x4042('0x11')]);}else{logger[_0x4042('0x12')]('VoiceRecording,\x20%s,\x20%s',_0xa5310f,_0x4042('0xc'));_0x5d11bf(_0x103e4a[_0x4042('0x13')][_0x4042('0x11')]);}})[_0x4042('0x14')](function(_0x31e765){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x31e765);_0x509772(_0x31e765);});});}exports[_0x4042('0x15')]=function(_0x466077){var _0x4b02d4=this;return new Promise(function(_0xe5c1ec,_0x4fe024){return db[_0x4042('0x16')]['update'](_0x466077[_0x4042('0x17')],{'raw':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x466077['options']?_0x466077[_0x4042('0x18')][_0x4042('0x1a')]||null:null,'attributes':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')]['attributes']||null:null,'limit':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x1b')]||null:null})[_0x4042('0xa')](function(_0x352631){logger['info'](_0x4042('0x15'),_0x466077);logger[_0x4042('0xd')]('UpdateVoiceRecording',_0x466077,JSON[_0x4042('0xf')](_0x352631));_0xe5c1ec(_0x352631);})['catch'](function(_0x271b82){logger[_0x4042('0x10')](_0x4042('0x15'),_0x271b82['message'],_0x466077);_0x4fe024(_0x4b02d4[_0x4042('0x10')](0x1f4,_0x271b82[_0x4042('0x11')]));});});};exports[_0x4042('0x1c')]=function(_0xbdadc8){var _0x1c4d9f=this;return new Promise(function(_0x52e575,_0x58c409){var _0x1d8d48=require(_0x4042('0x1d'));var _0x26542c;return db[_0x4042('0x1e')][_0x4042('0x1f')]({'attributes':['id',_0x4042('0x20')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x33733b){_0x26542c=_0x33733b;return db[_0x4042('0x16')]['create'](_0xbdadc8[_0x4042('0x17')]);})[_0x4042('0xa')](function(_0xe924fe){if(_0x26542c['callRecordingEncryption']&&fs['existsSync'](_0xe924fe[_0x4042('0x21')])){var _0x43bd1c=util['format'](_0x4042('0x22'),_0xe924fe[_0x4042('0x21')]);return _0x1d8d48[_0x4042('0x23')](_0xe924fe[_0x4042('0x21')],_0x43bd1c,config[_0x4042('0x24')][_0x4042('0x25')])[_0x4042('0xa')](function(){fs[_0x4042('0x26')](_0xe924fe[_0x4042('0x21')]);logger['info'](_0x4042('0x27'));return _0xe924fe;});}return _0xe924fe;})[_0x4042('0xa')](function(_0x5320f8){logger[_0x4042('0x12')](_0x4042('0x1c'),_0xbdadc8);logger['debug'](_0x4042('0x1c'),_0xbdadc8,JSON[_0x4042('0xf')](_0x5320f8));_0x52e575(_0x5320f8);})[_0x4042('0x14')](function(_0xaa7c99){logger[_0x4042('0x10')](_0x4042('0x1c'),_0xaa7c99[_0x4042('0x11')],_0xbdadc8);_0x58c409(_0x1c4d9f[_0x4042('0x10')](0x1f4,_0xaa7c99[_0x4042('0x11')]));});});};
\ No newline at end of file
+var _0x4bd3=['stringify','../../components/encryptor','findOne','callRecordingEncryption','create','format','%s.cypher','value','secrets','recording','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','moment','bluebird','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','VoiceRecording,\x20%s,\x20%s','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','attributes','limit'];(function(_0x445e85,_0x9ddc9c){var _0x518039=function(_0x14d016){while(--_0x14d016){_0x445e85['push'](_0x445e85['shift']());}};_0x518039(++_0x9ddc9c);}(_0x4bd3,0x174));var _0x34bd=function(_0x56d6ea,_0x4acbc9){_0x56d6ea=_0x56d6ea-0x0;var _0x22de49=_0x4bd3[_0x56d6ea];return _0x22de49;};'use strict';var _=require(_0x34bd('0x0'));var util=require('util');var moment=require(_0x34bd('0x1'));var BPromise=require(_0x34bd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x34bd('0x3'));var logger=require(_0x34bd('0x4'))(_0x34bd('0x5'));var config=require('../../config/environment');var jayson=require(_0x34bd('0x6'));var client=jayson[_0x34bd('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e8744,_0x213716,_0x51a4d7){return new BPromise(function(_0xd600e1,_0x76de8d){return client[_0x34bd('0x8')](_0x3e8744,_0x51a4d7)[_0x34bd('0x9')](function(_0x1ac77f){logger[_0x34bd('0xa')]('VoiceRecording,\x20%s,\x20%s',_0x213716,_0x34bd('0xb'));logger[_0x34bd('0xc')](_0x34bd('0xd'),_0x213716,_0x34bd('0xb'),JSON['stringify'](_0x1ac77f));if(_0x1ac77f['error']){if(_0x1ac77f[_0x34bd('0xe')]['code']===0x1f4){logger['error'](_0x34bd('0xf'),_0x213716,_0x1ac77f[_0x34bd('0xe')][_0x34bd('0x10')]);return _0x76de8d(_0x1ac77f[_0x34bd('0xe')][_0x34bd('0x10')]);}logger[_0x34bd('0xe')](_0x34bd('0xf'),_0x213716,_0x1ac77f[_0x34bd('0xe')][_0x34bd('0x10')]);return _0xd600e1(_0x1ac77f['error'][_0x34bd('0x10')]);}else{logger['info']('VoiceRecording,\x20%s,\x20%s',_0x213716,_0x34bd('0xb'));_0xd600e1(_0x1ac77f[_0x34bd('0x11')][_0x34bd('0x10')]);}})[_0x34bd('0x12')](function(_0x34b91b){logger[_0x34bd('0xe')](_0x34bd('0xf'),_0x213716,_0x34b91b);_0x76de8d(_0x34b91b);});});}exports[_0x34bd('0x13')]=function(_0x3b4bf8){var _0x72b197=this;return new Promise(function(_0x4b5ebb,_0x48d2ba){return db[_0x34bd('0x14')][_0x34bd('0x15')](_0x3b4bf8[_0x34bd('0x16')],{'raw':_0x3b4bf8[_0x34bd('0x17')]?_0x3b4bf8[_0x34bd('0x17')][_0x34bd('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b4bf8[_0x34bd('0x17')]?_0x3b4bf8[_0x34bd('0x17')][_0x34bd('0x19')]||null:null,'attributes':_0x3b4bf8['options']?_0x3b4bf8[_0x34bd('0x17')][_0x34bd('0x1a')]||null:null,'limit':_0x3b4bf8[_0x34bd('0x17')]?_0x3b4bf8[_0x34bd('0x17')][_0x34bd('0x1b')]||null:null})['then'](function(_0x582772){logger['info']('UpdateVoiceRecording',_0x3b4bf8);logger[_0x34bd('0xc')]('UpdateVoiceRecording',_0x3b4bf8,JSON[_0x34bd('0x1c')](_0x582772));_0x4b5ebb(_0x582772);})[_0x34bd('0x12')](function(_0x428140){logger['error'](_0x34bd('0x13'),_0x428140[_0x34bd('0x10')],_0x3b4bf8);_0x48d2ba(_0x72b197[_0x34bd('0xe')](0x1f4,_0x428140[_0x34bd('0x10')]));});});};exports['CreateVoiceRecording']=function(_0x29bda8){var _0xb256e8=this;return new Promise(function(_0x264c94,_0x3e4dc3){var _0x56baf7=require(_0x34bd('0x1d'));var _0x3fe8b0;return db['Setting'][_0x34bd('0x1e')]({'attributes':['id',_0x34bd('0x1f')],'where':{'id':0x1},'raw':!![]})[_0x34bd('0x9')](function(_0x3f675c){_0x3fe8b0=_0x3f675c;return db[_0x34bd('0x14')][_0x34bd('0x20')](_0x29bda8[_0x34bd('0x16')]);})['then'](function(_0x43b92d){if(_0x3fe8b0[_0x34bd('0x1f')]&&fs['existsSync'](_0x43b92d['value'])){var _0x38bdba=util[_0x34bd('0x21')](_0x34bd('0x22'),_0x43b92d['value']);return _0x56baf7['encryptFile'](_0x43b92d[_0x34bd('0x23')],_0x38bdba,config[_0x34bd('0x24')][_0x34bd('0x25')])[_0x34bd('0x9')](function(){fs['unlink'](_0x43b92d[_0x34bd('0x23')]);logger[_0x34bd('0xa')](_0x34bd('0x26'));return _0x43b92d;});}return _0x43b92d;})[_0x34bd('0x9')](function(_0x2ef58f){logger[_0x34bd('0xa')]('CreateVoiceRecording',_0x29bda8);logger[_0x34bd('0xc')]('CreateVoiceRecording',_0x29bda8,JSON[_0x34bd('0x1c')](_0x2ef58f));_0x264c94(_0x2ef58f);})[_0x34bd('0x12')](function(_0xf12ee6){logger['error'](_0x34bd('0x27'),_0xf12ee6[_0x34bd('0x10')],_0x29bda8);_0x3e4dc3(_0xb256e8['error'](0x1f4,_0xf12ee6[_0x34bd('0x10')]));});});};
\ No newline at end of file
index 58377d1..03ae7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8205=['show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','isAuthenticated','index','get','describe','/:id'];(function(_0x201291,_0x393f7c){var _0x598ab6=function(_0x2b6efd){while(--_0x2b6efd){_0x201291['push'](_0x201291['shift']());}};_0x598ab6(++_0x393f7c);}(_0x8205,0xc4));var _0x5820=function(_0xb72431,_0x19948f){_0xb72431=_0xb72431-0x0;var _0x123b77=_0x8205[_0xb72431];return _0x123b77;};'use strict';var multer=require(_0x5820('0x0'));var util=require(_0x5820('0x1'));var path=require(_0x5820('0x2'));var timeout=require(_0x5820('0x3'));var express=require('express');var router=express[_0x5820('0x4')]();var fs_extra=require(_0x5820('0x5'));var auth=require(_0x5820('0x6'));var interaction=require(_0x5820('0x7'));var config=require('../../config/environment');var controller=require(_0x5820('0x8'));router['get']('/',auth[_0x5820('0x9')](),controller[_0x5820('0xa')]);router[_0x5820('0xb')]('/describe',auth[_0x5820('0x9')](),controller[_0x5820('0xc')]);router[_0x5820('0xb')](_0x5820('0xd'),auth[_0x5820('0x9')](),controller[_0x5820('0xe')]);router[_0x5820('0xf')]('/',auth[_0x5820('0x9')](),controller[_0x5820('0x10')]);router[_0x5820('0x11')](_0x5820('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x5820('0x12')](_0x5820('0xd'),auth[_0x5820('0x9')](),controller[_0x5820('0x13')]);module[_0x5820('0x14')]=router;
\ No newline at end of file
+var _0x1a9d=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','put','delete','destroy'];(function(_0x278154,_0x32d222){var _0xfa8b62=function(_0x830de4){while(--_0x830de4){_0x278154['push'](_0x278154['shift']());}};_0xfa8b62(++_0x32d222);}(_0x1a9d,0x1e4));var _0xd1a9=function(_0x4c80c6,_0x7c034d){_0x4c80c6=_0x4c80c6-0x0;var _0x123fe5=_0x1a9d[_0x4c80c6];return _0x123fe5;};'use strict';var multer=require(_0xd1a9('0x0'));var util=require(_0xd1a9('0x1'));var path=require(_0xd1a9('0x2'));var timeout=require(_0xd1a9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd1a9('0x4'));var auth=require(_0xd1a9('0x5'));var interaction=require(_0xd1a9('0x6'));var config=require(_0xd1a9('0x7'));var controller=require(_0xd1a9('0x8'));router['get']('/',auth[_0xd1a9('0x9')](),controller['index']);router[_0xd1a9('0xa')](_0xd1a9('0xb'),auth[_0xd1a9('0x9')](),controller[_0xd1a9('0xc')]);router[_0xd1a9('0xa')](_0xd1a9('0xd'),auth['isAuthenticated'](),controller[_0xd1a9('0xe')]);router[_0xd1a9('0xf')]('/',auth[_0xd1a9('0x9')](),controller[_0xd1a9('0x10')]);router[_0xd1a9('0x11')](_0xd1a9('0xd'),auth[_0xd1a9('0x9')](),controller['update']);router[_0xd1a9('0x12')](_0xd1a9('0xd'),auth[_0xd1a9('0x9')](),controller[_0xd1a9('0x13')]);module[_0xd1a9('0x14')]=router;
\ No newline at end of file
index 1abf247..4dbae16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf20a=['exports','ENUM','blind','attended','STRING','Yes','sequelize','moment'];(function(_0x319e36,_0x29d5a9){var _0xddc497=function(_0x2d2b69){while(--_0x2d2b69){_0x319e36['push'](_0x319e36['shift']());}};_0xddc497(++_0x29d5a9);}(_0xf20a,0xfe));var _0xaf20=function(_0x4c55e6,_0x921395){_0x4c55e6=_0x4c55e6-0x0;var _0x98adf6=_0xf20a[_0x4c55e6];return _0x98adf6;};'use strict';var Sequelize=require(_0xaf20('0x0'));var moment=require(_0xaf20('0x1'));module[_0xaf20('0x2')]={'type':{'type':Sequelize[_0xaf20('0x3')](_0xaf20('0x4'),_0xaf20('0x5'))},'result':{'type':Sequelize[_0xaf20('0x6')]},'transfererchannel':{'type':Sequelize[_0xaf20('0x6')]},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xaf20('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0xaf20('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0xaf20('0x6')]},'transfereraccountcode':{'type':Sequelize[_0xaf20('0x6')]},'transferercontext':{'type':Sequelize[_0xaf20('0x6')]},'transfererexten':{'type':Sequelize[_0xaf20('0x6')]},'transfererlinkedid':{'type':Sequelize[_0xaf20('0x6')]},'transfereechannel':{'type':Sequelize[_0xaf20('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0xaf20('0x6')]},'transfereecalleridname':{'type':Sequelize[_0xaf20('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xaf20('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0xaf20('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0xaf20('0x6')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xaf20('0x6')]},'transfereelinkedid':{'type':Sequelize[_0xaf20('0x6')]},'isexternal':{'type':Sequelize['ENUM'](_0xaf20('0x7'),'No')},'context':{'type':Sequelize[_0xaf20('0x6')]},'extension':{'type':Sequelize[_0xaf20('0x6')]}};
\ No newline at end of file
+var _0x7662=['sequelize','moment','exports','blind','attended','STRING','Yes'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x7662,0xd2));var _0x2766=function(_0x20f041,_0x51784c){_0x20f041=_0x20f041-0x0;var _0x4111a2=_0x7662[_0x20f041];return _0x4111a2;};'use strict';var Sequelize=require(_0x2766('0x0'));var moment=require(_0x2766('0x1'));module[_0x2766('0x2')]={'type':{'type':Sequelize['ENUM'](_0x2766('0x3'),_0x2766('0x4'))},'result':{'type':Sequelize[_0x2766('0x5')]},'transfererchannel':{'type':Sequelize[_0x2766('0x5')]},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0x2766('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0x2766('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x2766('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x2766('0x5')]},'transferercontext':{'type':Sequelize[_0x2766('0x5')]},'transfererexten':{'type':Sequelize[_0x2766('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x2766('0x5')]},'transfereechannel':{'type':Sequelize[_0x2766('0x5')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x2766('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x2766('0x5')]},'transfereecontext':{'type':Sequelize[_0x2766('0x5')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x2766('0x5')]},'isexternal':{'type':Sequelize['ENUM'](_0x2766('0x6'),'No')},'context':{'type':Sequelize[_0x2766('0x5')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2c2266f..450f0ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cc7=['ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','error','name','send','index','map','VoiceTransferReport','rawAttributes','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','catch','show','params','intersection','length','include','find','body','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox'];(function(_0x3e4a54,_0x52208f){var _0xffb7ed=function(_0x715df8){while(--_0x715df8){_0x3e4a54['push'](_0x3e4a54['shift']());}};_0xffb7ed(++_0x52208f);}(_0x3cc7,0x86));var _0x73cc=function(_0x50f112,_0xd38e53){_0x50f112=_0x50f112-0x0;var _0x4ecf28=_0x3cc7[_0x50f112];return _0x4ecf28;};'use strict';var emlformat=require(_0x73cc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x73cc('0x1'));var rp=require(_0x73cc('0x2'));var moment=require(_0x73cc('0x3'));var BPromise=require(_0x73cc('0x4'));var Mustache=require('mustache');var util=require(_0x73cc('0x5'));var path=require(_0x73cc('0x6'));var sox=require(_0x73cc('0x7'));var csv=require('to-csv');var ejs=require(_0x73cc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x73cc('0x9'));var squel=require(_0x73cc('0xa'));var crypto=require('crypto');var jsforce=require(_0x73cc('0xb'));var deskjs=require(_0x73cc('0xc'));var toCsv=require('to-csv');var querystring=require(_0x73cc('0xd'));var Papa=require(_0x73cc('0xe'));var Redis=require('ioredis');var authService=require(_0x73cc('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x73cc('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x73cc('0x11'))(_0x73cc('0x12'));var utils=require(_0x73cc('0x13'));var config=require(_0x73cc('0x14'));var licenseUtil=require(_0x73cc('0x15'));var db=require(_0x73cc('0x16'))['db'];function respondWithStatusCode(_0x24b8f5,_0x557bee){_0x557bee=_0x557bee||0xcc;return function(_0x1ce77c){if(_0x1ce77c){return _0x24b8f5[_0x73cc('0x17')](_0x557bee);}return _0x24b8f5[_0x73cc('0x18')](_0x557bee)[_0x73cc('0x19')]();};}function respondWithResult(_0x50f6be,_0x3c183d){_0x3c183d=_0x3c183d||0xc8;return function(_0x20eb60){if(_0x20eb60){return _0x50f6be[_0x73cc('0x18')](_0x3c183d)[_0x73cc('0x1a')](_0x20eb60);}};}function respondWithFilteredResult(_0x592aac,_0x3117db){return function(_0x390c62){if(_0x390c62){var _0x318e4a=typeof _0x3117db[_0x73cc('0x1b')]===_0x73cc('0x1c')&&typeof _0x3117db[_0x73cc('0x1d')]===_0x73cc('0x1c');var _0x644aa3=_0x390c62[_0x73cc('0x1e')];var _0x599add=_0x318e4a?0x0:_0x3117db[_0x73cc('0x1b')];var _0x27bb33=_0x318e4a?_0x390c62[_0x73cc('0x1e')]:_0x3117db[_0x73cc('0x1b')]+_0x3117db[_0x73cc('0x1d')];var _0x2f7118;if(_0x27bb33>=_0x644aa3){_0x27bb33=_0x644aa3;_0x2f7118=0xc8;}else{_0x2f7118=0xce;}_0x592aac[_0x73cc('0x18')](_0x2f7118);return _0x592aac[_0x73cc('0x1f')]('Content-Range',_0x599add+'-'+_0x27bb33+'/'+_0x644aa3)[_0x73cc('0x1a')](_0x390c62);}return null;};}function patchUpdates(_0x47f947){return function(_0x2345de){try{jsonpatch[_0x73cc('0x20')](_0x2345de,_0x47f947,!![]);}catch(_0x475ee1){return BPromise[_0x73cc('0x21')](_0x475ee1);}return _0x2345de['save']();};}function saveUpdates(_0x3eabcf,_0xc470f7){return function(_0x2b19c0){if(_0x2b19c0){return _0x2b19c0[_0x73cc('0x22')](_0x3eabcf)[_0x73cc('0x23')](function(_0x5d53ab){return _0x5d53ab;});}return null;};}function removeEntity(_0x531513,_0x22ceee){return function(_0x253fd7){if(_0x253fd7){return _0x253fd7[_0x73cc('0x24')]()['then'](function(){_0x531513['status'](0xcc)[_0x73cc('0x19')]();});}};}function handleEntityNotFound(_0x331f87,_0x5e0e01){return function(_0x21105f){if(!_0x21105f){_0x331f87[_0x73cc('0x17')](0x194);}return _0x21105f;};}function handleError(_0x1da45c,_0x51e4c5){_0x51e4c5=_0x51e4c5||0x1f4;return function(_0x1d8070){logger[_0x73cc('0x25')](_0x1d8070['stack']);if(_0x1d8070['name']){delete _0x1d8070[_0x73cc('0x26')];}_0x1da45c['status'](_0x51e4c5)[_0x73cc('0x27')](_0x1d8070);};}exports[_0x73cc('0x28')]=function(_0x3c900a,_0x31097d){var _0x15bf4e={},_0x51f25c={},_0x3f4340={'count':0x0,'rows':[]};var _0x20b298=_[_0x73cc('0x29')](db[_0x73cc('0x2a')][_0x73cc('0x2b')],function(_0x114aee){return{'name':_0x114aee['fieldName'],'type':_0x114aee[_0x73cc('0x2c')][_0x73cc('0x2d')]};});_0x51f25c[_0x73cc('0x2e')]=_[_0x73cc('0x29')](_0x20b298,_0x73cc('0x26'));_0x51f25c[_0x73cc('0x2f')]=_[_0x73cc('0x30')](_0x3c900a[_0x73cc('0x2f')]);_0x51f25c[_0x73cc('0x31')]=_['intersection'](_0x51f25c[_0x73cc('0x2e')],_0x51f25c['query']);_0x15bf4e[_0x73cc('0x32')]=_['intersection'](_0x51f25c[_0x73cc('0x2e')],qs[_0x73cc('0x33')](_0x3c900a['query']['fields']));_0x15bf4e[_0x73cc('0x32')]=_0x15bf4e[_0x73cc('0x32')]['length']?_0x15bf4e['attributes']:_0x51f25c[_0x73cc('0x2e')];if(!_0x3c900a[_0x73cc('0x2f')][_0x73cc('0x34')]('nolimit')){_0x15bf4e[_0x73cc('0x1d')]=qs[_0x73cc('0x1d')](_0x3c900a[_0x73cc('0x2f')][_0x73cc('0x1d')]);_0x15bf4e['offset']=qs[_0x73cc('0x1b')](_0x3c900a[_0x73cc('0x2f')][_0x73cc('0x1b')]);}_0x15bf4e[_0x73cc('0x35')]=qs[_0x73cc('0x36')](_0x3c900a[_0x73cc('0x2f')][_0x73cc('0x36')]);_0x15bf4e[_0x73cc('0x37')]=qs[_0x73cc('0x31')](_['pick'](_0x3c900a[_0x73cc('0x2f')],_0x51f25c[_0x73cc('0x31')]),_0x20b298);if(_0x3c900a[_0x73cc('0x2f')]['filter']){_0x15bf4e['where']=_[_0x73cc('0x38')](_0x15bf4e['where'],{'$or':_['map'](_0x20b298,function(_0x32f5fa){if(_0x32f5fa[_0x73cc('0x2c')]!==_0x73cc('0x39')){var _0x4c1871={};_0x4c1871[_0x32f5fa['name']]={'$like':'%'+_0x3c900a['query'][_0x73cc('0x3a')]+'%'};return _0x4c1871;}})});}_0x15bf4e=_[_0x73cc('0x38')]({},_0x15bf4e,_0x3c900a[_0x73cc('0x3b')]);var _0x4db3f4={'where':_0x15bf4e[_0x73cc('0x37')]};return db[_0x73cc('0x2a')]['count'](_0x4db3f4)[_0x73cc('0x23')](function(_0x501b76){_0x3f4340['count']=_0x501b76;if(_0x3c900a[_0x73cc('0x2f')][_0x73cc('0x3c')]){_0x15bf4e['include']=[{'all':!![]}];}return db[_0x73cc('0x2a')][_0x73cc('0x3d')](_0x15bf4e);})[_0x73cc('0x23')](function(_0x1a2739){_0x3f4340['rows']=_0x1a2739;return _0x3f4340;})[_0x73cc('0x23')](respondWithFilteredResult(_0x31097d,_0x15bf4e))[_0x73cc('0x3e')](handleError(_0x31097d,null));};exports[_0x73cc('0x3f')]=function(_0x4d4ffe,_0x1fed79){var _0x1698c9={'raw':!![],'where':{'id':_0x4d4ffe[_0x73cc('0x40')]['id']}},_0x5644a4={};_0x5644a4[_0x73cc('0x2e')]=_[_0x73cc('0x30')](db['VoiceTransferReport']['rawAttributes']);_0x5644a4[_0x73cc('0x2f')]=_['keys'](_0x4d4ffe['query']);_0x5644a4[_0x73cc('0x31')]=_[_0x73cc('0x41')](_0x5644a4[_0x73cc('0x2e')],_0x5644a4[_0x73cc('0x2f')]);_0x1698c9[_0x73cc('0x32')]=_[_0x73cc('0x41')](_0x5644a4[_0x73cc('0x2e')],qs[_0x73cc('0x33')](_0x4d4ffe[_0x73cc('0x2f')][_0x73cc('0x33')]));_0x1698c9[_0x73cc('0x32')]=_0x1698c9[_0x73cc('0x32')][_0x73cc('0x42')]?_0x1698c9[_0x73cc('0x32')]:_0x5644a4[_0x73cc('0x2e')];if(_0x4d4ffe[_0x73cc('0x2f')][_0x73cc('0x3c')]){_0x1698c9[_0x73cc('0x43')]=[{'all':!![]}];}_0x1698c9=_[_0x73cc('0x38')]({},_0x1698c9,_0x4d4ffe['options']);return db[_0x73cc('0x2a')][_0x73cc('0x44')](_0x1698c9)[_0x73cc('0x23')](handleEntityNotFound(_0x1fed79,null))[_0x73cc('0x23')](respondWithResult(_0x1fed79,null))['catch'](handleError(_0x1fed79,null));};exports['create']=function(_0x4f6cb4,_0x3ee8cb){return db[_0x73cc('0x2a')]['create'](_0x4f6cb4[_0x73cc('0x45')],{})['then'](respondWithResult(_0x3ee8cb,0xc9))[_0x73cc('0x3e')](handleError(_0x3ee8cb,null));};exports[_0x73cc('0x22')]=function(_0x35fa2e,_0x573418){if(_0x35fa2e['body']['id']){delete _0x35fa2e[_0x73cc('0x45')]['id'];}return db[_0x73cc('0x2a')][_0x73cc('0x44')]({'where':{'id':_0x35fa2e[_0x73cc('0x40')]['id']}})[_0x73cc('0x23')](handleEntityNotFound(_0x573418,null))[_0x73cc('0x23')](saveUpdates(_0x35fa2e[_0x73cc('0x45')],null))[_0x73cc('0x23')](respondWithResult(_0x573418,null))[_0x73cc('0x3e')](handleError(_0x573418,null));};exports['destroy']=function(_0x158e40,_0x40ddf5){return db['VoiceTransferReport'][_0x73cc('0x44')]({'where':{'id':_0x158e40[_0x73cc('0x40')]['id']}})[_0x73cc('0x23')](handleEntityNotFound(_0x40ddf5,null))[_0x73cc('0x23')](removeEntity(_0x40ddf5,null))['catch'](handleError(_0x40ddf5,null));};exports['describe']=function(_0x2bc16f,_0x5d2092){return db['VoiceTransferReport'][_0x73cc('0x46')]()[_0x73cc('0x23')](respondWithResult(_0x5d2092,null))[_0x73cc('0x3e')](handleError(_0x5d2092,null));};
\ No newline at end of file
+var _0x1ade=['includeAll','include','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','end','sendStatus','stack','name','send','map','VoiceTransferReport','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows'];(function(_0x3fa415,_0x4e8505){var _0x4de670=function(_0x4bee69){while(--_0x4bee69){_0x3fa415['push'](_0x3fa415['shift']());}};_0x4de670(++_0x4e8505);}(_0x1ade,0x1ca));var _0xe1ad=function(_0x2dc489,_0x2c637a){_0x2dc489=_0x2dc489-0x0;var _0x14b291=_0x1ade[_0x2dc489];return _0x14b291;};'use strict';var emlformat=require(_0xe1ad('0x0'));var rimraf=require(_0xe1ad('0x1'));var zipdir=require(_0xe1ad('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe1ad('0x3'));var moment=require(_0xe1ad('0x4'));var BPromise=require(_0xe1ad('0x5'));var Mustache=require(_0xe1ad('0x6'));var util=require(_0xe1ad('0x7'));var path=require('path');var sox=require(_0xe1ad('0x8'));var csv=require(_0xe1ad('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe1ad('0xa'));var _=require(_0xe1ad('0xb'));var squel=require(_0xe1ad('0xc'));var crypto=require(_0xe1ad('0xd'));var jsforce=require(_0xe1ad('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe1ad('0xf'));var Papa=require(_0xe1ad('0x10'));var Redis=require('ioredis');var authService=require(_0xe1ad('0x11'));var qs=require(_0xe1ad('0x12'));var as=require(_0xe1ad('0x13'));var hardwareService=require(_0xe1ad('0x14'));var logger=require('../../config/logger')(_0xe1ad('0x15'));var utils=require(_0xe1ad('0x16'));var config=require(_0xe1ad('0x17'));var licenseUtil=require(_0xe1ad('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fff10,_0x3a359f){_0x3a359f=_0x3a359f||0xcc;return function(_0x47b512){if(_0x47b512){return _0x3fff10['sendStatus'](_0x3a359f);}return _0x3fff10[_0xe1ad('0x19')](_0x3a359f)['end']();};}function respondWithResult(_0x2ad4,_0x5291e7){_0x5291e7=_0x5291e7||0xc8;return function(_0x3ee8d5){if(_0x3ee8d5){return _0x2ad4['status'](_0x5291e7)[_0xe1ad('0x1a')](_0x3ee8d5);}};}function respondWithFilteredResult(_0x20d1ac,_0x1c03d7){return function(_0x5da59c){if(_0x5da59c){var _0x1551ce=typeof _0x1c03d7[_0xe1ad('0x1b')]===_0xe1ad('0x1c')&&typeof _0x1c03d7[_0xe1ad('0x1d')]===_0xe1ad('0x1c');var _0x480c93=_0x5da59c[_0xe1ad('0x1e')];var _0xadc344=_0x1551ce?0x0:_0x1c03d7[_0xe1ad('0x1b')];var _0x592f3a=_0x1551ce?_0x5da59c[_0xe1ad('0x1e')]:_0x1c03d7['offset']+_0x1c03d7[_0xe1ad('0x1d')];var _0x38b120;if(_0x592f3a>=_0x480c93){_0x592f3a=_0x480c93;_0x38b120=0xc8;}else{_0x38b120=0xce;}_0x20d1ac['status'](_0x38b120);return _0x20d1ac[_0xe1ad('0x1f')]('Content-Range',_0xadc344+'-'+_0x592f3a+'/'+_0x480c93)[_0xe1ad('0x1a')](_0x5da59c);}return null;};}function patchUpdates(_0x221cf2){return function(_0x5b7df1){try{jsonpatch[_0xe1ad('0x20')](_0x5b7df1,_0x221cf2,!![]);}catch(_0x3067ee){return BPromise[_0xe1ad('0x21')](_0x3067ee);}return _0x5b7df1['save']();};}function saveUpdates(_0x48def8,_0x1474d4){return function(_0x4f6442){if(_0x4f6442){return _0x4f6442[_0xe1ad('0x22')](_0x48def8)[_0xe1ad('0x23')](function(_0x2f6f84){return _0x2f6f84;});}return null;};}function removeEntity(_0x128350,_0x20f93f){return function(_0x82b51d){if(_0x82b51d){return _0x82b51d[_0xe1ad('0x24')]()[_0xe1ad('0x23')](function(){_0x128350[_0xe1ad('0x19')](0xcc)[_0xe1ad('0x25')]();});}};}function handleEntityNotFound(_0x4be47b,_0x1b170b){return function(_0x5b70e4){if(!_0x5b70e4){_0x4be47b[_0xe1ad('0x26')](0x194);}return _0x5b70e4;};}function handleError(_0x41e2b4,_0x537ec0){_0x537ec0=_0x537ec0||0x1f4;return function(_0x5865ea){logger['error'](_0x5865ea[_0xe1ad('0x27')]);if(_0x5865ea[_0xe1ad('0x28')]){delete _0x5865ea[_0xe1ad('0x28')];}_0x41e2b4[_0xe1ad('0x19')](_0x537ec0)[_0xe1ad('0x29')](_0x5865ea);};}exports['index']=function(_0x1a31e4,_0x162c56){var _0x2c4118={},_0x272e42={},_0x381527={'count':0x0,'rows':[]};var _0x3353a8=_[_0xe1ad('0x2a')](db[_0xe1ad('0x2b')]['rawAttributes'],function(_0x372f04){return{'name':_0x372f04[_0xe1ad('0x2c')],'type':_0x372f04[_0xe1ad('0x2d')][_0xe1ad('0x2e')]};});_0x272e42[_0xe1ad('0x2f')]=_[_0xe1ad('0x2a')](_0x3353a8,'name');_0x272e42['query']=_[_0xe1ad('0x30')](_0x1a31e4[_0xe1ad('0x31')]);_0x272e42[_0xe1ad('0x32')]=_[_0xe1ad('0x33')](_0x272e42[_0xe1ad('0x2f')],_0x272e42[_0xe1ad('0x31')]);_0x2c4118['attributes']=_[_0xe1ad('0x33')](_0x272e42['model'],qs['fields'](_0x1a31e4[_0xe1ad('0x31')][_0xe1ad('0x34')]));_0x2c4118[_0xe1ad('0x35')]=_0x2c4118[_0xe1ad('0x35')][_0xe1ad('0x36')]?_0x2c4118['attributes']:_0x272e42[_0xe1ad('0x2f')];if(!_0x1a31e4[_0xe1ad('0x31')][_0xe1ad('0x37')](_0xe1ad('0x38'))){_0x2c4118[_0xe1ad('0x1d')]=qs[_0xe1ad('0x1d')](_0x1a31e4[_0xe1ad('0x31')][_0xe1ad('0x1d')]);_0x2c4118[_0xe1ad('0x1b')]=qs[_0xe1ad('0x1b')](_0x1a31e4[_0xe1ad('0x31')]['offset']);}_0x2c4118[_0xe1ad('0x39')]=qs[_0xe1ad('0x3a')](_0x1a31e4[_0xe1ad('0x31')][_0xe1ad('0x3a')]);_0x2c4118[_0xe1ad('0x3b')]=qs[_0xe1ad('0x32')](_[_0xe1ad('0x3c')](_0x1a31e4['query'],_0x272e42[_0xe1ad('0x32')]),_0x3353a8);if(_0x1a31e4[_0xe1ad('0x31')][_0xe1ad('0x3d')]){_0x2c4118[_0xe1ad('0x3b')]=_[_0xe1ad('0x3e')](_0x2c4118['where'],{'$or':_[_0xe1ad('0x2a')](_0x3353a8,function(_0x34092b){if(_0x34092b[_0xe1ad('0x2d')]!==_0xe1ad('0x3f')){var _0x37e1bf={};_0x37e1bf[_0x34092b[_0xe1ad('0x28')]]={'$like':'%'+_0x1a31e4['query'][_0xe1ad('0x3d')]+'%'};return _0x37e1bf;}})});}_0x2c4118=_['merge']({},_0x2c4118,_0x1a31e4[_0xe1ad('0x40')]);var _0x29896c={'where':_0x2c4118[_0xe1ad('0x3b')]};return db['VoiceTransferReport']['count'](_0x29896c)[_0xe1ad('0x23')](function(_0x467540){_0x381527[_0xe1ad('0x1e')]=_0x467540;if(_0x1a31e4[_0xe1ad('0x31')]['includeAll']){_0x2c4118['include']=[{'all':!![]}];}return db['VoiceTransferReport'][_0xe1ad('0x41')](_0x2c4118);})['then'](function(_0x53063d){_0x381527[_0xe1ad('0x42')]=_0x53063d;return _0x381527;})['then'](respondWithFilteredResult(_0x162c56,_0x2c4118))['catch'](handleError(_0x162c56,null));};exports['show']=function(_0x466630,_0x7dfc09){var _0x1b9a80={'raw':!![],'where':{'id':_0x466630['params']['id']}},_0x43113b={};_0x43113b[_0xe1ad('0x2f')]=_[_0xe1ad('0x30')](db[_0xe1ad('0x2b')]['rawAttributes']);_0x43113b[_0xe1ad('0x31')]=_[_0xe1ad('0x30')](_0x466630['query']);_0x43113b[_0xe1ad('0x32')]=_[_0xe1ad('0x33')](_0x43113b[_0xe1ad('0x2f')],_0x43113b[_0xe1ad('0x31')]);_0x1b9a80['attributes']=_['intersection'](_0x43113b[_0xe1ad('0x2f')],qs[_0xe1ad('0x34')](_0x466630[_0xe1ad('0x31')][_0xe1ad('0x34')]));_0x1b9a80[_0xe1ad('0x35')]=_0x1b9a80['attributes'][_0xe1ad('0x36')]?_0x1b9a80[_0xe1ad('0x35')]:_0x43113b['model'];if(_0x466630[_0xe1ad('0x31')][_0xe1ad('0x43')]){_0x1b9a80[_0xe1ad('0x44')]=[{'all':!![]}];}_0x1b9a80=_['merge']({},_0x1b9a80,_0x466630['options']);return db[_0xe1ad('0x2b')][_0xe1ad('0x45')](_0x1b9a80)[_0xe1ad('0x23')](handleEntityNotFound(_0x7dfc09,null))[_0xe1ad('0x23')](respondWithResult(_0x7dfc09,null))[_0xe1ad('0x46')](handleError(_0x7dfc09,null));};exports[_0xe1ad('0x47')]=function(_0x66db01,_0x5435dd){return db['VoiceTransferReport'][_0xe1ad('0x47')](_0x66db01['body'],{})['then'](respondWithResult(_0x5435dd,0xc9))[_0xe1ad('0x46')](handleError(_0x5435dd,null));};exports['update']=function(_0x445377,_0x96d28c){if(_0x445377[_0xe1ad('0x48')]['id']){delete _0x445377[_0xe1ad('0x48')]['id'];}return db[_0xe1ad('0x2b')]['find']({'where':{'id':_0x445377[_0xe1ad('0x49')]['id']}})[_0xe1ad('0x23')](handleEntityNotFound(_0x96d28c,null))[_0xe1ad('0x23')](saveUpdates(_0x445377[_0xe1ad('0x48')],null))[_0xe1ad('0x23')](respondWithResult(_0x96d28c,null))[_0xe1ad('0x46')](handleError(_0x96d28c,null));};exports['destroy']=function(_0x6d7707,_0x377a00){return db['VoiceTransferReport'][_0xe1ad('0x45')]({'where':{'id':_0x6d7707[_0xe1ad('0x49')]['id']}})[_0xe1ad('0x23')](handleEntityNotFound(_0x377a00,null))['then'](removeEntity(_0x377a00,null))[_0xe1ad('0x46')](handleError(_0x377a00,null));};exports[_0xe1ad('0x4a')]=function(_0x3b70e,_0xf5e667){return db['VoiceTransferReport'][_0xe1ad('0x4a')]()['then'](respondWithResult(_0xf5e667,null))[_0xe1ad('0x46')](handleError(_0xf5e667,null));};
\ No newline at end of file
index e7493fd..03e97a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73b5=['path','rimraf','./voiceTransferReport.attributes','exports','define','report_call_transfer','lodash','util','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x73b5,0x1c8));var _0x573b=function(_0x3418b0,_0x42ab0d){_0x3418b0=_0x3418b0-0x0;var _0x1750ee=_0x73b5[_0x3418b0];return _0x1750ee;};'use strict';var _=require(_0x573b('0x0'));var util=require(_0x573b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x573b('0x2'));var rp=require(_0x573b('0x3'));var fs=require('fs');var path=require(_0x573b('0x4'));var rimraf=require(_0x573b('0x5'));var config=require('../../config/environment');var attributes=require(_0x573b('0x6'));module[_0x573b('0x7')]=function(_0x156aa6,_0x58c94e){return _0x156aa6[_0x573b('0x8')]('VoiceTransferReport',attributes,{'tableName':_0x573b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb320=['define','report_call_transfer','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0xb320,0x146));var _0x0b32=function(_0x1505e5,_0x5cc291){_0x1505e5=_0x1505e5-0x0;var _0x5b1dcd=_0xb320[_0x1505e5];return _0x5b1dcd;};'use strict';var _=require('lodash');var util=require(_0x0b32('0x0'));var logger=require('../../config/logger')(_0x0b32('0x1'));var moment=require('moment');var BPromise=require(_0x0b32('0x2'));var rp=require(_0x0b32('0x3'));var fs=require('fs');var path=require(_0x0b32('0x4'));var rimraf=require(_0x0b32('0x5'));var config=require(_0x0b32('0x6'));var attributes=require('./voiceTransferReport.attributes');module['exports']=function(_0x36a075,_0x12b595){return _0x36a075[_0x0b32('0x7')]('VoiceTransferReport',attributes,{'tableName':_0x0b32('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 77ba5dc..84f83dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a3=['message','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','lodash','util','bluebird','randomstring','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3667cf,_0x5506fd){var _0x48bce1=function(_0x910bb9){while(--_0x910bb9){_0x3667cf['push'](_0x3667cf['shift']());}};_0x48bce1(++_0x5506fd);}(_0x28a3,0xbe));var _0x328a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x28a3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x328a('0x0'));var util=require(_0x328a('0x1'));var moment=require('moment');var BPromise=require(_0x328a('0x2'));var rs=require(_0x328a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x328a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x328a('0x5'));var client=jayson[_0x328a('0x6')][_0x328a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1360bc,_0x5e6698,_0x44f104){return new BPromise(function(_0x2edafb,_0x9bed13){return client[_0x328a('0x8')](_0x1360bc,_0x44f104)[_0x328a('0x9')](function(_0x27d7ba){logger[_0x328a('0xa')](_0x328a('0xb'),_0x5e6698,_0x328a('0xc'));logger[_0x328a('0xd')](_0x328a('0xe'),_0x5e6698,_0x328a('0xc'),JSON[_0x328a('0xf')](_0x27d7ba));if(_0x27d7ba[_0x328a('0x10')]){if(_0x27d7ba[_0x328a('0x10')][_0x328a('0x11')]===0x1f4){logger[_0x328a('0x10')](_0x328a('0xb'),_0x5e6698,_0x27d7ba[_0x328a('0x10')][_0x328a('0x12')]);return _0x9bed13(_0x27d7ba['error'][_0x328a('0x12')]);}logger[_0x328a('0x10')](_0x328a('0xb'),_0x5e6698,_0x27d7ba['error'][_0x328a('0x12')]);return _0x2edafb(_0x27d7ba[_0x328a('0x10')][_0x328a('0x12')]);}else{logger[_0x328a('0xa')]('VoiceTransferReport,\x20%s,\x20%s',_0x5e6698,_0x328a('0xc'));_0x2edafb(_0x27d7ba['result'][_0x328a('0x12')]);}})[_0x328a('0x13')](function(_0x5a05f0){logger[_0x328a('0x10')](_0x328a('0xb'),_0x5e6698,_0x5a05f0);_0x9bed13(_0x5a05f0);});});}exports[_0x328a('0x14')]=function(_0x196818){var _0x29068a=this;return new Promise(function(_0x925574,_0x478f2e){return db[_0x328a('0x15')][_0x328a('0x16')](_0x196818[_0x328a('0x17')],{'raw':_0x196818[_0x328a('0x18')]?_0x196818[_0x328a('0x18')][_0x328a('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x52dfcf){logger[_0x328a('0xa')](_0x328a('0x14'),_0x196818);logger[_0x328a('0xd')]('CreateVoiceTransferReport',_0x196818,JSON[_0x328a('0xf')](_0x52dfcf));_0x925574(_0x52dfcf);})[_0x328a('0x13')](function(_0x2d2dff){logger[_0x328a('0x10')](_0x328a('0x14'),_0x2d2dff[_0x328a('0x12')],_0x196818);_0x478f2e(_0x29068a[_0x328a('0x10')](0x1f4,_0x2d2dff[_0x328a('0x12')]));});});};
\ No newline at end of file
+var _0x9099=['util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','body','options','raw','CreateVoiceTransferReport','lodash'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x9099,0x11d));var _0x9909=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x9099[_0x3a6efd];return _0x487b9a;};'use strict';var _=require(_0x9909('0x0'));var util=require(_0x9909('0x1'));var moment=require('moment');var BPromise=require(_0x9909('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9909('0x3'));var db=require(_0x9909('0x4'))['db'];var utils=require(_0x9909('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x9909('0x6'));var jayson=require(_0x9909('0x7'));var client=jayson[_0x9909('0x8')][_0x9909('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x479b2f,_0xd64072,_0x3c36b6){return new BPromise(function(_0x198b12,_0x5b9df7){return client['request'](_0x479b2f,_0x3c36b6)[_0x9909('0xa')](function(_0x2ae0f1){logger[_0x9909('0xb')](_0x9909('0xc'),_0xd64072,_0x9909('0xd'));logger[_0x9909('0xe')](_0x9909('0xf'),_0xd64072,_0x9909('0xd'),JSON[_0x9909('0x10')](_0x2ae0f1));if(_0x2ae0f1[_0x9909('0x11')]){if(_0x2ae0f1[_0x9909('0x11')][_0x9909('0x12')]===0x1f4){logger[_0x9909('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0xd64072,_0x2ae0f1[_0x9909('0x11')][_0x9909('0x13')]);return _0x5b9df7(_0x2ae0f1[_0x9909('0x11')]['message']);}logger[_0x9909('0x11')](_0x9909('0xc'),_0xd64072,_0x2ae0f1[_0x9909('0x11')]['message']);return _0x198b12(_0x2ae0f1[_0x9909('0x11')]['message']);}else{logger['info'](_0x9909('0xc'),_0xd64072,_0x9909('0xd'));_0x198b12(_0x2ae0f1[_0x9909('0x14')][_0x9909('0x13')]);}})[_0x9909('0x15')](function(_0x485267){logger[_0x9909('0x11')](_0x9909('0xc'),_0xd64072,_0x485267);_0x5b9df7(_0x485267);});});}exports['CreateVoiceTransferReport']=function(_0x4f6816){var _0x5e4021=this;return new Promise(function(_0x2e9a8e,_0xbe3aa){return db['VoiceTransferReport']['create'](_0x4f6816[_0x9909('0x16')],{'raw':_0x4f6816[_0x9909('0x17')]?_0x4f6816[_0x9909('0x17')][_0x9909('0x18')]===undefined?!![]:![]:!![]})[_0x9909('0xa')](function(_0x3ecefe){logger[_0x9909('0xb')](_0x9909('0x19'),_0x4f6816);logger['debug'](_0x9909('0x19'),_0x4f6816,JSON[_0x9909('0x10')](_0x3ecefe));_0x2e9a8e(_0x3ecefe);})[_0x9909('0x15')](function(_0x1ab8d8){logger['error'](_0x9909('0x19'),_0x1ab8d8[_0x9909('0x13')],_0x4f6816);_0xbe3aa(_0x5e4021['error'](0x1f4,_0x1ab8d8[_0x9909('0x13')]));});});};
\ No newline at end of file
index f508d97..3086dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf68a=['transfer','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','canUpdate','originate','post','answer','/hold','hold','/unhold','/calls','calls','/transfer'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf68a,0x1ee));var _0xaf68=function(_0x3dd231,_0x56d714){_0x3dd231=_0x3dd231-0x0;var _0x1fddff=_0xf68a[_0x3dd231];return _0x1fddff;};'use strict';var express=require(_0xaf68('0x0'));var router=express[_0xaf68('0x1')]();var auth=require(_0xaf68('0x2'));var controller=require(_0xaf68('0x3'));router['post'](_0xaf68('0x4'),auth[_0xaf68('0x5')](),auth[_0xaf68('0x6')](),controller[_0xaf68('0x7')]);router['post']('/hangup',auth[_0xaf68('0x5')](),auth[_0xaf68('0x6')](),controller['hangup']);router[_0xaf68('0x8')]('/answer',auth[_0xaf68('0x5')](),auth[_0xaf68('0x6')](),controller[_0xaf68('0x9')]);router['post'](_0xaf68('0xa'),auth[_0xaf68('0x5')](),auth['canUpdate'](),controller[_0xaf68('0xb')]);router['post'](_0xaf68('0xc'),auth['isAuthenticated'](),auth['canUpdate'](),controller['unhold']);router[_0xaf68('0x8')](_0xaf68('0xd'),auth[_0xaf68('0x5')](),auth[_0xaf68('0x6')](),controller[_0xaf68('0xe')]);router[_0xaf68('0x8')](_0xaf68('0xf'),auth[_0xaf68('0x5')](),auth[_0xaf68('0x6')](),controller[_0xaf68('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x6f1d=['Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','canUpdate','originate','/answer','/hold','/unhold','unhold','/calls','calls','transfer','express'];(function(_0x25ee92,_0x2610cc){var _0x2c3454=function(_0x389dcc){while(--_0x389dcc){_0x25ee92['push'](_0x25ee92['shift']());}};_0x2c3454(++_0x2610cc);}(_0x6f1d,0x19f));var _0xd6f1=function(_0x594398,_0x19e56a){_0x594398=_0x594398-0x0;var _0x2f87a7=_0x6f1d[_0x594398];return _0x2f87a7;};'use strict';var express=require(_0xd6f1('0x0'));var router=express[_0xd6f1('0x1')]();var auth=require(_0xd6f1('0x2'));var controller=require(_0xd6f1('0x3'));router[_0xd6f1('0x4')](_0xd6f1('0x5'),auth[_0xd6f1('0x6')](),auth[_0xd6f1('0x7')](),controller[_0xd6f1('0x8')]);router[_0xd6f1('0x4')]('/hangup',auth[_0xd6f1('0x6')](),auth[_0xd6f1('0x7')](),controller['hangup']);router[_0xd6f1('0x4')](_0xd6f1('0x9'),auth[_0xd6f1('0x6')](),auth[_0xd6f1('0x7')](),controller['answer']);router[_0xd6f1('0x4')](_0xd6f1('0xa'),auth['isAuthenticated'](),auth[_0xd6f1('0x7')](),controller['hold']);router[_0xd6f1('0x4')](_0xd6f1('0xb'),auth[_0xd6f1('0x6')](),auth['canUpdate'](),controller[_0xd6f1('0xc')]);router['post'](_0xd6f1('0xd'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xd6f1('0xe')]);router[_0xd6f1('0x4')]('/transfer',auth[_0xd6f1('0x6')](),auth['canUpdate'](),controller[_0xd6f1('0xf')]);module['exports']=router;
\ No newline at end of file
index 93d0c57..8f1ee51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x131e=['error','stack','name','status','send','NotFound','request','then','code','message','User','findOne','VoiceChannels','all','rows','UserId','length','\x20not\x20found!','originate','originate\x20fired:','body','validate','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','catch','user:%s','hangup\x20executed!','answer','answer\x20fired:','sessionId','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','filter','conference','conference\x20fired:','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','../../config/environment','util','bluebird','jayson/promise','client','http','webbarapi','ioredis','redis','defaults','number','userId\x20is\x20required','callNumber\x20is\x20required','string','transferNumber\x20is\x20required','info','stringify','log','handleError:'];(function(_0xe35a3,_0x4973eb){var _0x4ba2d2=function(_0x2efd24){while(--_0x2efd24){_0xe35a3['push'](_0xe35a3['shift']());}};_0x4ba2d2(++_0x4973eb);}(_0x131e,0x1ec));var _0xe131=function(_0x568ee3,_0xc7f1b2){_0x568ee3=_0x568ee3-0x0;var _0x13e4a2=_0x131e[_0x568ee3];return _0x13e4a2;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require(_0xe131('0x0'));var util=require(_0xe131('0x1'));var BPromise=require(_0xe131('0x2'));var jayson=require(_0xe131('0x3'));var amiClient=jayson[_0xe131('0x4')][_0xe131('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0xe131('0x6'));var Redis=require(_0xe131('0x7'));config[_0xe131('0x8')]=_[_0xe131('0x9')](config[_0xe131('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xe131('0xa'),'required':[!![],_0xe131('0xb')]},'callNumber':{'type':'string','required':[!![],_0xe131('0xc')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xe131('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xe131('0xa'),'required':[!![],_0xe131('0xb')]},'sessionId':{'type':_0xe131('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xe131('0xa'),'required':[!![],_0xe131('0xb')]},'sessionId':{'type':_0xe131('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xe131('0xd'),'required':[!![],_0xe131('0xe')]}});var holdValidation=new Schema({'userId':{'type':_0xe131('0xa'),'required':[!![],_0xe131('0xb')]},'sessionId':{'type':_0xe131('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe131('0xa'),'required':[!![],_0xe131('0xb')]},'sessionId':{'type':_0xe131('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe131('0xa'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x5a6ca9,_0x4987dc,_0x2628e7){logger[_0xe131('0xf')](_0x5a6ca9,_0x4987dc,JSON[_0xe131('0x10')](_0x2628e7));io['to'](_0x5a6ca9)['emit'](_0x4987dc,_0x2628e7);}function handleError(_0x503e86){return function(_0x400f6b){console[_0xe131('0x11')](_0xe131('0x12'),_0x400f6b,_0x400f6b instanceof RangeError);logger[_0xe131('0x13')](_0x400f6b[_0xe131('0x14')]);if(_0x400f6b instanceof RangeError){if(_0x400f6b[_0xe131('0x15')]){delete _0x400f6b['name'];}_0x503e86[_0xe131('0x16')](0x194)[_0xe131('0x17')](_0x400f6b);}else{if(_0x400f6b[_0xe131('0x15')]){delete _0x400f6b[_0xe131('0x15')];}_0x503e86[_0xe131('0x16')](0x1f4)['send'](_0x400f6b);}};}function checkError(){return function(_0x4c24e5){if(!_0x4c24e5){throw new RangeError(_0xe131('0x18'));}return _0x4c24e5;};}function respondWithRpcPromise(_0x41c4e1,_0x5207c6){return new BPromise(function(_0x42df0a,_0x55b0c5){var _0x49f304=amiClient;return _0x49f304[_0xe131('0x19')](_0x41c4e1,_0x5207c6)[_0xe131('0x1a')](function(_0x473bb4){if(_0x473bb4[_0xe131('0x13')]){if(_0x473bb4[_0xe131('0x13')][_0xe131('0x1b')]===0x1f4){return _0x55b0c5(_0x473bb4[_0xe131('0x13')]['message']);}return _0x42df0a(_0x473bb4[_0xe131('0x13')][_0xe131('0x1c')]);}else{_0x42df0a(_0x473bb4['result']);}})['catch'](function(_0x330638){_0x55b0c5(_0x330638);});});}function getAgent(_0x5b2f47){return db[_0xe131('0x1d')][_0xe131('0x1e')]({'where':{'id':_0x5b2f47,'role':'agent'}})[_0xe131('0x1a')](checkError());}function getAgentCheckSession(_0x3959ac,_0x41a3e9){return new BPromise(function(_0x499ca8,_0x29243d){var _0x442279=respondWithRpcPromise(_0xe131('0x1f'));var _0x10d504=getAgent(_0x3959ac);Promise[_0xe131('0x20')]([_0x442279,_0x10d504])[_0xe131('0x1a')](function(_0x1ff557){var _0x3414f1=_0x1ff557[0x0];var _0x9f8c66=_0x1ff557[0x1];var _0x341294=_['filter'](_0x3414f1[_0xe131('0x21')],function(_0x554b62){return _0x554b62[_0xe131('0x22')]==_0x9f8c66['id']&&_0x554b62['sessionId']==_0x41a3e9;});if(_0x341294[_0xe131('0x23')]==0x1){_0x499ca8(_0x9f8c66);}else{_0x29243d(new RangeError('sessionId\x20'+_0x41a3e9+_0xe131('0x24')));}});});}exports[_0xe131('0x25')]=function(_0x306082,_0x481e50){logger['info'](_0xe131('0x26'),_0x306082[_0xe131('0x27')]);var _0x11f163=originateValidation[_0xe131('0x28')](_0x306082[_0xe131('0x27')]);if(_0x11f163[_0xe131('0x23')]>0x0){return _0x481e50[_0xe131('0x16')](0x190)[_0xe131('0x29')](_0x11f163);}var _0x5347ee=_0x306082['body'][_0xe131('0x2a')];var _0x6c7586=_0x306082[_0xe131('0x27')][_0xe131('0x2b')];var _0x2c17f6=_0x306082[_0xe131('0x27')][_0xe131('0x2c')];var _0x4d2327=_0x306082['body'][_0xe131('0x2d')];return getAgent(_0x5347ee)['then'](function(_0x26bf39){logger['info'](_0xe131('0x2e'),_0x26bf39['name']);emit(util[_0xe131('0x2f')]('user:%s',_0x26bf39[_0xe131('0x15')]),_0xe131('0x30'),{'callNumber':_0x6c7586,'callerId':_0x2c17f6,'callbackUrl':_0x4d2327});return _0x481e50[_0xe131('0x16')](0xc8)[_0xe131('0x29')]({'error':![],'message':_0xe131('0x31')});})[_0xe131('0x32')](handleError(_0x481e50));};exports['hangup']=function(_0x2ecc0c,_0x4dafaf){logger[_0xe131('0xf')]('hangup\x20fired:',_0x2ecc0c[_0xe131('0x27')]);var _0x26a679=hangupValidation[_0xe131('0x28')](_0x2ecc0c[_0xe131('0x27')]);if(_0x26a679[_0xe131('0x23')]>0x0){return _0x4dafaf[_0xe131('0x16')](0x190)[_0xe131('0x29')](_0x26a679);}var _0x5a5498=_0x2ecc0c[_0xe131('0x27')]['userId'];var _0x1103fc=_0x2ecc0c[_0xe131('0x27')]['sessionId'];return getAgent(_0x5a5498)['then'](function(_0x205fa2){logger['info']('entityFound:',_0x205fa2[_0xe131('0x15')]);emit(util['format'](_0xe131('0x33'),_0x205fa2[_0xe131('0x15')]),'webbar:hangup',{'sessionId':_0x1103fc});return _0x4dafaf[_0xe131('0x16')](0xc8)[_0xe131('0x29')]({'error':![],'message':_0xe131('0x34')});})[_0xe131('0x32')](handleError(_0x4dafaf));};exports[_0xe131('0x35')]=function(_0x4985d9,_0x512409){logger[_0xe131('0xf')](_0xe131('0x36'),_0x4985d9[_0xe131('0x27')]);var _0x58fe5c=answerValidation[_0xe131('0x28')](_0x4985d9[_0xe131('0x27')]);if(_0x58fe5c[_0xe131('0x23')]>0x0){return _0x512409['status'](0x190)[_0xe131('0x29')](_0x58fe5c);}var _0x1c9c6d=_0x4985d9[_0xe131('0x27')]['userId'];var _0x1da932=_0x4985d9[_0xe131('0x27')][_0xe131('0x37')];return getAgent(_0x1c9c6d)['then'](function(_0x1663a9){logger[_0xe131('0xf')](_0xe131('0x2e'),_0x1663a9[_0xe131('0x15')]);emit(util[_0xe131('0x2f')](_0xe131('0x33'),_0x1663a9[_0xe131('0x15')]),'webbar:answer',{'sessionId':_0x1da932});return _0x512409['status'](0xc8)[_0xe131('0x29')]({'error':![],'message':_0xe131('0x38')});})[_0xe131('0x32')](handleError(_0x512409));};exports[_0xe131('0x39')]=function(_0xb1c607,_0x402767){logger['info'](_0xe131('0x3a'),_0xb1c607[_0xe131('0x27')]);var _0x268cc6=holdValidation[_0xe131('0x28')](_0xb1c607[_0xe131('0x27')]);if(_0x268cc6[_0xe131('0x23')]>0x0){return _0x402767['status'](0x190)[_0xe131('0x29')](_0x268cc6);}var _0x1ce9b7=_0xb1c607[_0xe131('0x27')][_0xe131('0x2a')];var _0x1a9e5c=_0xb1c607[_0xe131('0x27')][_0xe131('0x37')];return getAgent(_0x1ce9b7)[_0xe131('0x1a')](function(_0x3d7ae8){logger[_0xe131('0xf')](_0xe131('0x2e'),_0x3d7ae8['name']);emit(util[_0xe131('0x2f')]('user:%s',_0x3d7ae8['name']),_0xe131('0x3b'),{'sessionId':_0x1a9e5c});return _0x402767[_0xe131('0x16')](0xc8)[_0xe131('0x29')]({'error':![],'message':_0xe131('0x3c')});})[_0xe131('0x32')](handleError(_0x402767));};exports[_0xe131('0x3d')]=function(_0xf4dbe4,_0x398c39){logger[_0xe131('0xf')](_0xe131('0x3e'),_0xf4dbe4[_0xe131('0x27')]);var _0x509992=unholdValidation['validate'](_0xf4dbe4[_0xe131('0x27')]);if(_0x509992[_0xe131('0x23')]>0x0){return _0x398c39['status'](0x190)['json'](_0x509992);}var _0x2b934b=_0xf4dbe4['body']['userId'];var _0xe0d786=_0xf4dbe4[_0xe131('0x27')][_0xe131('0x37')];return getAgent(_0x2b934b)[_0xe131('0x1a')](function(_0x3d6f45){logger[_0xe131('0xf')]('entityFound:',_0x3d6f45['name']);emit(util[_0xe131('0x2f')](_0xe131('0x33'),_0x3d6f45['name']),_0xe131('0x3f'),{'sessionId':_0xe0d786});return _0x398c39[_0xe131('0x16')](0xc8)[_0xe131('0x29')]({'error':![],'message':_0xe131('0x40')});})[_0xe131('0x32')](handleError(_0x398c39));};exports[_0xe131('0x41')]=function(_0x4a9ad6,_0x23d880){logger['info']('calls\x20fired:',_0x23d880[_0xe131('0x27')]);var _0x3ff68b=callsValidation['validate'](_0x4a9ad6['body']);if(_0x3ff68b[_0xe131('0x23')]>0x0){return _0x23d880[_0xe131('0x16')](0x190)[_0xe131('0x29')](_0x3ff68b);}var _0x51628f=_0x4a9ad6[_0xe131('0x27')][_0xe131('0x2a')];var _0x45d00d=respondWithRpcPromise(_0xe131('0x1f'));var _0x2a65fd=getAgent(_0x51628f);return Promise['all']([_0x45d00d,_0x2a65fd])[_0xe131('0x1a')](function(_0x5185dd){var _0x4347f0=_0x5185dd[0x0];var _0x45ac9c=_0x5185dd[0x1];var _0xc398e5=_[_0xe131('0x42')](_0x4347f0['rows'],function(_0x498fe0){return _0x498fe0['UserId']==_0x45ac9c['id'];});return _0x23d880[_0xe131('0x16')](0xc8)['json']({'count':_0xc398e5[_0xe131('0x23')],'rows':_0xc398e5});})[_0xe131('0x32')](handleError(_0x23d880));};exports[_0xe131('0x43')]=function(_0x160f60,_0x61ea25){logger[_0xe131('0xf')](_0xe131('0x44'),_0x160f60[_0xe131('0x27')]);var _0x1e388e=conferenceValidation[_0xe131('0x28')](_0x160f60['body']);if(_0x1e388e['length']>0x0){return _0x61ea25['status'](0x190)[_0xe131('0x29')](_0x1e388e);}var _0x41932a=_0x160f60[_0xe131('0x27')][_0xe131('0x2a')];return getAgent(_0x41932a)['then'](function(_0x11e2c9){logger[_0xe131('0xf')](_0xe131('0x2e'),_0x11e2c9[_0xe131('0x15')]);emit(util[_0xe131('0x2f')](_0xe131('0x33'),_0x11e2c9['name']),'webbar:conference');return _0x61ea25[_0xe131('0x16')](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x61ea25));};exports[_0xe131('0x45')]=function(_0x4edb0f,_0x2e6f99){logger['info'](_0xe131('0x46'),_0x4edb0f[_0xe131('0x27')]);var _0x2b6cdc=transferValidation[_0xe131('0x28')](_0x4edb0f['body']);if(_0x2b6cdc[_0xe131('0x23')]>0x0){return _0x2e6f99[_0xe131('0x16')](0x190)[_0xe131('0x29')](_0x2b6cdc);}var _0x3c1fe4=_0x4edb0f[_0xe131('0x27')][_0xe131('0x2a')];var _0x497b76=_0x4edb0f[_0xe131('0x27')][_0xe131('0x37')];var _0x4f3b0d=_0x4edb0f[_0xe131('0x27')]['transferNumber'];return getAgent(_0x3c1fe4)['then'](function(_0x6794a){logger['info'](_0xe131('0x2e'),_0x6794a[_0xe131('0x15')]);emit(util[_0xe131('0x2f')]('user:%s',_0x6794a[_0xe131('0x15')]),_0xe131('0x47'),{'sessionId':_0x497b76,'transferNumber':_0x4f3b0d});return _0x2e6f99[_0xe131('0x16')](0xc8)[_0xe131('0x29')]({'error':![],'message':_0xe131('0x48')});})[_0xe131('0x32')](handleError(_0x2e6f99));};
\ No newline at end of file
+var _0x593e=['number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','name','status','send','NotFound','request','code','message','catch','findOne','agent','then','all','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callerId','callbackUrl','entityFound:','format','user:%s','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','webbar:hold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','rows','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required'];(function(_0x8e09ef,_0x1dfa56){var _0x8a409=function(_0x41dd01){while(--_0x41dd01){_0x8e09ef['push'](_0x8e09ef['shift']());}};_0x8a409(++_0x1dfa56);}(_0x593e,0xcb));var _0xe593=function(_0x46283a,_0x474149){_0x46283a=_0x46283a-0x0;var _0x95c049=_0x593e[_0x46283a];return _0x95c049;};'use strict';var path=require(_0xe593('0x0'));var fs=require('fs');var _=require(_0xe593('0x1'));var db=require(_0xe593('0x2'))['db'];var config=require(_0xe593('0x3'));var util=require(_0xe593('0x4'));var BPromise=require(_0xe593('0x5'));var jayson=require(_0xe593('0x6'));var amiClient=jayson[_0xe593('0x7')]['http']({'port':0x232a});var logger=require(_0xe593('0x8'))(_0xe593('0x9'));var Redis=require(_0xe593('0xa'));config[_0xe593('0xb')]=_[_0xe593('0xc')](config[_0xe593('0xb')],{'host':_0xe593('0xd'),'port':0x18eb});var io=require(_0xe593('0xe'))(new Redis(config[_0xe593('0xb')]));var Schema=require(_0xe593('0xf'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]},'callNumber':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x12')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x14')]},'transferNumber':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]}});function emit(_0x40416c,_0x1c6de3,_0x2d525c){logger[_0xe593('0x16')](_0x40416c,_0x1c6de3,JSON[_0xe593('0x17')](_0x2d525c));io['to'](_0x40416c)['emit'](_0x1c6de3,_0x2d525c);}function handleError(_0xfbc79f){return function(_0x470d07){console['log'](_0xe593('0x18'),_0x470d07,_0x470d07 instanceof RangeError);logger[_0xe593('0x19')](_0x470d07['stack']);if(_0x470d07 instanceof RangeError){if(_0x470d07[_0xe593('0x1a')]){delete _0x470d07[_0xe593('0x1a')];}_0xfbc79f[_0xe593('0x1b')](0x194)[_0xe593('0x1c')](_0x470d07);}else{if(_0x470d07[_0xe593('0x1a')]){delete _0x470d07[_0xe593('0x1a')];}_0xfbc79f[_0xe593('0x1b')](0x1f4)['send'](_0x470d07);}};}function checkError(){return function(_0x4af4c8){if(!_0x4af4c8){throw new RangeError(_0xe593('0x1d'));}return _0x4af4c8;};}function respondWithRpcPromise(_0x5d4895,_0x56c23f){return new BPromise(function(_0x1bb8e8,_0x3c65b5){var _0x57379d=amiClient;return _0x57379d[_0xe593('0x1e')](_0x5d4895,_0x56c23f)['then'](function(_0x1672bf){if(_0x1672bf[_0xe593('0x19')]){if(_0x1672bf[_0xe593('0x19')][_0xe593('0x1f')]===0x1f4){return _0x3c65b5(_0x1672bf[_0xe593('0x19')][_0xe593('0x20')]);}return _0x1bb8e8(_0x1672bf[_0xe593('0x19')][_0xe593('0x20')]);}else{_0x1bb8e8(_0x1672bf['result']);}})[_0xe593('0x21')](function(_0x347d7d){_0x3c65b5(_0x347d7d);});});}function getAgent(_0x480218){return db['User'][_0xe593('0x22')]({'where':{'id':_0x480218,'role':_0xe593('0x23')}})[_0xe593('0x24')](checkError());}function getAgentCheckSession(_0x43699d,_0x3b66bc){return new BPromise(function(_0x27a3d2,_0x5918cd){var _0x350e2b=respondWithRpcPromise('VoiceChannels');var _0x1dacf6=getAgent(_0x43699d);Promise[_0xe593('0x25')]([_0x350e2b,_0x1dacf6])['then'](function(_0x337ee0){var _0x561a01=_0x337ee0[0x0];var _0x44a68c=_0x337ee0[0x1];var _0x1c147b=_[_0xe593('0x26')](_0x561a01['rows'],function(_0x1ae8d9){return _0x1ae8d9[_0xe593('0x27')]==_0x44a68c['id']&&_0x1ae8d9[_0xe593('0x28')]==_0x3b66bc;});if(_0x1c147b[_0xe593('0x29')]==0x1){_0x27a3d2(_0x44a68c);}else{_0x5918cd(new RangeError(_0xe593('0x2a')+_0x3b66bc+_0xe593('0x2b')));}});});}exports[_0xe593('0x2c')]=function(_0x4efc93,_0x4098a9){logger[_0xe593('0x16')]('originate\x20fired:',_0x4efc93[_0xe593('0x2d')]);var _0x571995=originateValidation[_0xe593('0xf')](_0x4efc93[_0xe593('0x2d')]);if(_0x571995[_0xe593('0x29')]>0x0){return _0x4098a9[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x571995);}var _0x24a560=_0x4efc93[_0xe593('0x2d')][_0xe593('0x2f')];var _0x11f287=_0x4efc93[_0xe593('0x2d')]['callNumber'];var _0x27a563=_0x4efc93[_0xe593('0x2d')][_0xe593('0x30')];var _0x5a55c0=_0x4efc93['body'][_0xe593('0x31')];return getAgent(_0x24a560)['then'](function(_0x232bf1){logger[_0xe593('0x16')](_0xe593('0x32'),_0x232bf1[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x232bf1[_0xe593('0x1a')]),'webbar:originate',{'callNumber':_0x11f287,'callerId':_0x27a563,'callbackUrl':_0x5a55c0});return _0x4098a9['status'](0xc8)[_0xe593('0x2e')]({'error':![],'message':'originate\x20executed!'});})[_0xe593('0x21')](handleError(_0x4098a9));};exports['hangup']=function(_0x206775,_0x5b9589){logger['info'](_0xe593('0x35'),_0x206775[_0xe593('0x2d')]);var _0x2aa9d8=hangupValidation['validate'](_0x206775['body']);if(_0x2aa9d8['length']>0x0){return _0x5b9589[_0xe593('0x1b')](0x190)['json'](_0x2aa9d8);}var _0x37ba0e=_0x206775[_0xe593('0x2d')][_0xe593('0x2f')];var _0x475207=_0x206775['body'][_0xe593('0x28')];return getAgent(_0x37ba0e)['then'](function(_0x36c08e){logger['info']('entityFound:',_0x36c08e['name']);emit(util[_0xe593('0x33')]('user:%s',_0x36c08e[_0xe593('0x1a')]),_0xe593('0x36'),{'sessionId':_0x475207});return _0x5b9589[_0xe593('0x1b')](0xc8)['json']({'error':![],'message':_0xe593('0x37')});})[_0xe593('0x21')](handleError(_0x5b9589));};exports[_0xe593('0x38')]=function(_0x4655dd,_0x26ff41){logger[_0xe593('0x16')](_0xe593('0x39'),_0x4655dd[_0xe593('0x2d')]);var _0x4b36e1=answerValidation[_0xe593('0xf')](_0x4655dd[_0xe593('0x2d')]);if(_0x4b36e1[_0xe593('0x29')]>0x0){return _0x26ff41[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x4b36e1);}var _0x4d3018=_0x4655dd['body'][_0xe593('0x2f')];var _0x380429=_0x4655dd[_0xe593('0x2d')]['sessionId'];return getAgent(_0x4d3018)[_0xe593('0x24')](function(_0x8a4c26){logger['info']('entityFound:',_0x8a4c26[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x8a4c26['name']),_0xe593('0x3a'),{'sessionId':_0x380429});return _0x26ff41[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x3b')});})['catch'](handleError(_0x26ff41));};exports['hold']=function(_0x4a7434,_0x4c8d14){logger[_0xe593('0x16')]('hold\x20fired:',_0x4a7434[_0xe593('0x2d')]);var _0xd016b3=holdValidation[_0xe593('0xf')](_0x4a7434[_0xe593('0x2d')]);if(_0xd016b3[_0xe593('0x29')]>0x0){return _0x4c8d14[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0xd016b3);}var _0x297c3e=_0x4a7434['body'][_0xe593('0x2f')];var _0x1a5e0f=_0x4a7434[_0xe593('0x2d')]['sessionId'];return getAgent(_0x297c3e)[_0xe593('0x24')](function(_0x5dfdb1){logger[_0xe593('0x16')](_0xe593('0x32'),_0x5dfdb1[_0xe593('0x1a')]);emit(util['format']('user:%s',_0x5dfdb1[_0xe593('0x1a')]),_0xe593('0x3c'),{'sessionId':_0x1a5e0f});return _0x4c8d14['status'](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x4c8d14));};exports['unhold']=function(_0x383645,_0x1e48d8){logger[_0xe593('0x16')](_0xe593('0x3d'),_0x383645[_0xe593('0x2d')]);var _0x44201e=unholdValidation[_0xe593('0xf')](_0x383645[_0xe593('0x2d')]);if(_0x44201e[_0xe593('0x29')]>0x0){return _0x1e48d8[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x44201e);}var _0x1ea4ef=_0x383645[_0xe593('0x2d')][_0xe593('0x2f')];var _0xa25aa8=_0x383645[_0xe593('0x2d')]['sessionId'];return getAgent(_0x1ea4ef)[_0xe593('0x24')](function(_0x12e2ac){logger[_0xe593('0x16')](_0xe593('0x32'),_0x12e2ac[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x12e2ac[_0xe593('0x1a')]),_0xe593('0x3e'),{'sessionId':_0xa25aa8});return _0x1e48d8[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x3f')});})[_0xe593('0x21')](handleError(_0x1e48d8));};exports[_0xe593('0x40')]=function(_0x93ca5e,_0x5e8f9c){logger[_0xe593('0x16')](_0xe593('0x41'),_0x5e8f9c[_0xe593('0x2d')]);var _0x24d061=callsValidation[_0xe593('0xf')](_0x93ca5e['body']);if(_0x24d061['length']>0x0){return _0x5e8f9c[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x24d061);}var _0x318dd2=_0x93ca5e[_0xe593('0x2d')][_0xe593('0x2f')];var _0x1e49ed=respondWithRpcPromise(_0xe593('0x42'));var _0x518b6f=getAgent(_0x318dd2);return Promise['all']([_0x1e49ed,_0x518b6f])[_0xe593('0x24')](function(_0x23ee3b){var _0x4ff51d=_0x23ee3b[0x0];var _0x103403=_0x23ee3b[0x1];var _0xf8ed1d=_[_0xe593('0x26')](_0x4ff51d[_0xe593('0x43')],function(_0x3a3d7b){return _0x3a3d7b[_0xe593('0x27')]==_0x103403['id'];});return _0x5e8f9c[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'count':_0xf8ed1d[_0xe593('0x29')],'rows':_0xf8ed1d});})[_0xe593('0x21')](handleError(_0x5e8f9c));};exports['conference']=function(_0x36f38e,_0x13e368){logger[_0xe593('0x16')](_0xe593('0x44'),_0x36f38e[_0xe593('0x2d')]);var _0x202b18=conferenceValidation[_0xe593('0xf')](_0x36f38e['body']);if(_0x202b18[_0xe593('0x29')]>0x0){return _0x13e368[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x202b18);}var _0x14f8e1=_0x36f38e['body'][_0xe593('0x2f')];return getAgent(_0x14f8e1)[_0xe593('0x24')](function(_0x207c3d){logger[_0xe593('0x16')](_0xe593('0x32'),_0x207c3d['name']);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x207c3d[_0xe593('0x1a')]),_0xe593('0x45'));return _0x13e368[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x46')});})[_0xe593('0x21')](handleError(_0x13e368));};exports['transfer']=function(_0x2145c0,_0x16f9fc){logger[_0xe593('0x16')](_0xe593('0x47'),_0x2145c0[_0xe593('0x2d')]);var _0x9f1813=transferValidation[_0xe593('0xf')](_0x2145c0[_0xe593('0x2d')]);if(_0x9f1813[_0xe593('0x29')]>0x0){return _0x16f9fc[_0xe593('0x1b')](0x190)['json'](_0x9f1813);}var _0x190e90=_0x2145c0[_0xe593('0x2d')][_0xe593('0x2f')];var _0x492a9e=_0x2145c0[_0xe593('0x2d')][_0xe593('0x28')];var _0x4001b7=_0x2145c0[_0xe593('0x2d')][_0xe593('0x48')];return getAgent(_0x190e90)['then'](function(_0x17a1bc){logger[_0xe593('0x16')]('entityFound:',_0x17a1bc[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x17a1bc[_0xe593('0x1a')]),'webbar:transfer',{'sessionId':_0x492a9e,'transferNumber':_0x4001b7});return _0x16f9fc[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x49')});})['catch'](handleError(_0x16f9fc));};
\ No newline at end of file
index 6248135..ce73ece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['/:id/notify','notify','send','update','delete','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addDisposition','addAnswer','addApplications'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x47c5,0x165));var _0x547c=function(_0x137603,_0xbb12a8){_0x137603=_0x137603-0x0;var _0x3dbcf4=_0x47c5[_0x137603];return _0x3dbcf4;};'use strict';var multer=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var path=require(_0x547c('0x2'));var timeout=require(_0x547c('0x3'));var express=require(_0x547c('0x4'));var router=express[_0x547c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x547c('0x6'));var interaction=require(_0x547c('0x7'));var config=require('../../config/environment');var controller=require(_0x547c('0x8'));router[_0x547c('0x9')]('/',auth['isAuthenticated'](),controller[_0x547c('0xa')]);router[_0x547c('0x9')](_0x547c('0xb'),auth[_0x547c('0xc')](),controller[_0x547c('0xd')]);router[_0x547c('0x9')](_0x547c('0xe'),auth[_0x547c('0xc')](),controller[_0x547c('0xf')]);router[_0x547c('0x9')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller[_0x547c('0x11')]);router[_0x547c('0x9')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x13')]);router['get'](_0x547c('0x14'),auth[_0x547c('0xc')](),controller['getAgents']);router[_0x547c('0x9')](_0x547c('0x15'),auth[_0x547c('0xc')](),controller[_0x547c('0x16')]);router[_0x547c('0x17')]('/',auth[_0x547c('0xc')](),controller[_0x547c('0x18')]);router[_0x547c('0x17')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller[_0x547c('0x19')]);router[_0x547c('0x17')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x1a')]);router[_0x547c('0x17')](_0x547c('0x14'),auth[_0x547c('0xc')](),controller['addAgents']);router['post'](_0x547c('0x15'),auth[_0x547c('0xc')](),controller[_0x547c('0x1b')]);router['post'](_0x547c('0x1c'),controller[_0x547c('0x1d')]);router[_0x547c('0x17')]('/:id/send',auth[_0x547c('0xc')](),controller[_0x547c('0x1e')]);router['put']('/:id',auth[_0x547c('0xc')](),controller[_0x547c('0x1f')]);router['delete'](_0x547c('0xe'),auth[_0x547c('0xc')](),controller['destroy']);router[_0x547c('0x20')](_0x547c('0x10'),auth[_0x547c('0xc')](),controller['removeDispositions']);router[_0x547c('0x20')](_0x547c('0x12'),auth[_0x547c('0xc')](),controller[_0x547c('0x21')]);router[_0x547c('0x20')](_0x547c('0x14'),auth[_0x547c('0xc')](),controller[_0x547c('0x22')]);module['exports']=router;
\ No newline at end of file
+var _0xc1c6=['addDisposition','/:id/canned_answers','addAnswer','addAgents','/:id/applications','addApplications','notify','/:id/send','send','put','/:id','update','delete','destroy','removeDispositions','removeAnswers','/:id/users','removeAgents','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','show','/:id/dispositions','getDispositions','getAnswers','getAgents','post','create'];(function(_0x16c591,_0x39021c){var _0x462eab=function(_0x4c8b14){while(--_0x4c8b14){_0x16c591['push'](_0x16c591['shift']());}};_0x462eab(++_0x39021c);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x41e02b,_0x150ed8){_0x41e02b=_0x41e02b-0x0;var _0x58637e=_0xc1c6[_0x41e02b];return _0x58637e;};'use strict';var multer=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var path=require(_0x6c1c('0x2'));var timeout=require('connect-timeout');var express=require(_0x6c1c('0x3'));var router=express['Router']();var fs_extra=require(_0x6c1c('0x4'));var auth=require(_0x6c1c('0x5'));var interaction=require(_0x6c1c('0x6'));var config=require('../../config/environment');var controller=require('./whatsappAccount.controller');router[_0x6c1c('0x7')]('/',auth['isAuthenticated'](),controller[_0x6c1c('0x8')]);router['get'](_0x6c1c('0x9'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xb')]);router[_0x6c1c('0x7')]('/:id',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xc')]);router['get'](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xe')]);router[_0x6c1c('0x7')]('/:id/canned_answers',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xf')]);router[_0x6c1c('0x7')]('/:id/users',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x10')]);router[_0x6c1c('0x7')]('/:id/applications',auth[_0x6c1c('0xa')](),controller['getApplications']);router[_0x6c1c('0x11')]('/',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x12')]);router[_0x6c1c('0x11')](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x13')]);router[_0x6c1c('0x11')](_0x6c1c('0x14'),auth['isAuthenticated'](),controller[_0x6c1c('0x15')]);router[_0x6c1c('0x11')]('/:id/users',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x16')]);router['post'](_0x6c1c('0x17'),auth['isAuthenticated'](),controller[_0x6c1c('0x18')]);router[_0x6c1c('0x11')]('/:id/notify',controller[_0x6c1c('0x19')]);router['post'](_0x6c1c('0x1a'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x1b')]);router[_0x6c1c('0x1c')](_0x6c1c('0x1d'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x1e')]);router[_0x6c1c('0x1f')](_0x6c1c('0x1d'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x20')]);router[_0x6c1c('0x1f')](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x21')]);router[_0x6c1c('0x1f')](_0x6c1c('0x14'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x22')]);router[_0x6c1c('0x1f')](_0x6c1c('0x23'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0x24')]);module[_0x6c1c('0x25')]=router;
\ No newline at end of file
index 7967af5..6d1350f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadd0=['twilio','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','generate','ENUM'];(function(_0x5f1193,_0x480830){var _0x24edb3=function(_0x594613){while(--_0x594613){_0x5f1193['push'](_0x5f1193['shift']());}};_0x24edb3(++_0x480830);}(_0xadd0,0x1e8));var _0x0add=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xadd0[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x0add('0x0'));module[_0x0add('0x1')]={'name':{'type':Sequelize[_0x0add('0x2')],'unique':_0x0add('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x0add('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x0add('0x4')]();}},'phone':{'type':Sequelize[_0x0add('0x2')]},'type':{'type':Sequelize[_0x0add('0x5')](_0x0add('0x6'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x0add('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x0add('0x7');}},'notificationSound':{'type':Sequelize[_0x0add('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x0add('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0add('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0add('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0add('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0add('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0add('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0add('0x9')],'comment':_0x0add('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x0add('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x123698){if(!_0x123698){this[_0x0add('0xb')]('mandatoryDispositionPauseId',null);}this[_0x0add('0xb')](_0x0add('0xc'),_0x123698);}},'description':{'type':Sequelize[_0x0add('0x2')]}};
\ No newline at end of file
+var _0x90a7=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','twilio','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x1cb0b4,_0x1fd48d){var _0x525b60=function(_0x1efccc){while(--_0x1efccc){_0x1cb0b4['push'](_0x1cb0b4['shift']());}};_0x525b60(++_0x1fd48d);}(_0x90a7,0x1aa));var _0x790a=function(_0x2f53dc,_0x29e13a){_0x2f53dc=_0x2f53dc-0x0;var _0x5c66a8=_0x90a7[_0x2f53dc];return _0x5c66a8;};'use strict';var Sequelize=require(_0x790a('0x0'));var rs=require('randomstring');module[_0x790a('0x1')]={'name':{'type':Sequelize[_0x790a('0x2')],'unique':_0x790a('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x790a('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x790a('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x790a('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x790a('0x4'))},'accountSid':{'type':Sequelize[_0x790a('0x2')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x790a('0x5');}},'notificationSound':{'type':Sequelize[_0x790a('0x6')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x790a('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x790a('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x790a('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x790a('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x790a('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x790a('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x790a('0x6')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x3d759b){if(!_0x3d759b){this[_0x790a('0x9')](_0x790a('0xa'),null);}this[_0x790a('0x9')](_0x790a('0xb'),_0x3d759b);}},'description':{'type':Sequelize[_0x790a('0x2')]}};
\ No newline at end of file
index a062343..2739c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e2=['body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','sort','findAll','ids','addAnswer','CannedAnswer','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','addApplications','WhatsappApplication','bulkCreate','findAndCountAll','getApplications','notify','whatsapp','Applications','account','applications','orderBy','priority','CmContact','Sequelize','difference','createdAt','updatedAt','CompanyId','twilio','from','From','whatsapp:','Body','messageId','isNil','ValidationError','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','ListId','Contacts','DESC','list','omit','contact','WhatsappInteraction','interaction','created','close','unmanaged','*,*,*,*','WhatsappMessage','AttachmentId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','body\x20is\x20mandatory\x20and\x20not\x20empty','List','out','Messages','dataValues','push','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','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','redis','defaults','localhost','./whatsappAccount.socket','register','client','http','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','then','destroy','get','WhatsappAccounts','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x2f071b,_0x1cd571){var _0x29f987=function(_0x5c887f){while(--_0x5c887f){_0x2f071b['push'](_0x2f071b['shift']());}};_0x29f987(++_0x1cd571);}(_0x79e2,0x1c3));var _0x279e=function(_0x2ab9b5,_0x5607b8){_0x2ab9b5=_0x2ab9b5-0x0;var _0x9f6232=_0x79e2[_0x2ab9b5];return _0x9f6232;};'use strict';var emlformat=require(_0x279e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x279e('0x1'));var jsonpatch=require(_0x279e('0x2'));var rp=require(_0x279e('0x3'));var moment=require('moment');var BPromise=require(_0x279e('0x4'));var Mustache=require('mustache');var util=require(_0x279e('0x5'));var path=require(_0x279e('0x6'));var sox=require(_0x279e('0x7'));var csv=require(_0x279e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x279e('0x9'));var squel=require(_0x279e('0xa'));var crypto=require(_0x279e('0xb'));var jsforce=require(_0x279e('0xc'));var deskjs=require(_0x279e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x279e('0xe'));var Papa=require(_0x279e('0xf'));var Redis=require(_0x279e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x279e('0x11'));var as=require(_0x279e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x279e('0x13'))(_0x279e('0x14'));var utils=require(_0x279e('0x15'));var config=require(_0x279e('0x16'));var licenseUtil=require(_0x279e('0x17'));var db=require(_0x279e('0x18'))['db'];config[_0x279e('0x19')]=_[_0x279e('0x1a')](config['redis'],{'host':_0x279e('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x279e('0x19')]));require(_0x279e('0x1c'))[_0x279e('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x279e('0x1e')][_0x279e('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x570611,_0x57a421,_0x201ae0,_0x3683e6){return new BPromise(function(_0x3daae8,_0xb9c4fe){var _0x14f7fc=_0x3683e6||client;return _0x14f7fc[_0x279e('0x20')](_0x570611,_0x201ae0)['then'](function(_0x45d503){logger[_0x279e('0x21')](_0x279e('0x22'),_0x57a421,_0x279e('0x23'));logger['debug'](_0x279e('0x24'),_0x57a421,_0x279e('0x23'),JSON[_0x279e('0x25')](_0x45d503));if(_0x45d503[_0x279e('0x26')]){if(_0x45d503[_0x279e('0x26')]['code']===0x1f4){logger[_0x279e('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0x57a421,_0x45d503[_0x279e('0x26')][_0x279e('0x27')]);return _0xb9c4fe(_0x45d503['error'][_0x279e('0x27')]);}logger[_0x279e('0x26')](_0x279e('0x22'),_0x57a421,_0x45d503[_0x279e('0x26')][_0x279e('0x27')]);return _0x3daae8(_0x45d503['error']['message']);}else{logger[_0x279e('0x21')](_0x279e('0x22'),_0x57a421,'request\x20sent');_0x3daae8(_0x45d503['result'][_0x279e('0x27')]);}})[_0x279e('0x28')](function(_0x5c6cdb){logger[_0x279e('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0x57a421,_0x5c6cdb);_0xb9c4fe(_0x5c6cdb);});});}function respondWithStatusCode(_0x10fd31,_0x378588){_0x378588=_0x378588||0xcc;return function(_0x4cc1af){if(_0x4cc1af){return _0x10fd31['sendStatus'](_0x378588);}return _0x10fd31['status'](_0x378588)['end']();};}function respondWithResult(_0x56a132,_0x4376ad){_0x4376ad=_0x4376ad||0xc8;return function(_0x4c3104){if(_0x4c3104){return _0x56a132['status'](_0x4376ad)[_0x279e('0x29')](_0x4c3104);}};}function respondWithFilteredResult(_0x27f4d1,_0x279a17){return function(_0x155927){if(_0x155927){var _0x2957c7=typeof _0x279a17[_0x279e('0x2a')]==='undefined'&&typeof _0x279a17[_0x279e('0x2b')]===_0x279e('0x2c');var _0x1ac207=_0x155927[_0x279e('0x2d')];var _0x4fb56c=_0x2957c7?0x0:_0x279a17[_0x279e('0x2a')];var _0x28f5fe=_0x2957c7?_0x155927['count']:_0x279a17['offset']+_0x279a17[_0x279e('0x2b')];var _0x4ced94;if(_0x28f5fe>=_0x1ac207){_0x28f5fe=_0x1ac207;_0x4ced94=0xc8;}else{_0x4ced94=0xce;}_0x27f4d1[_0x279e('0x2e')](_0x4ced94);return _0x27f4d1[_0x279e('0x2f')](_0x279e('0x30'),_0x4fb56c+'-'+_0x28f5fe+'/'+_0x1ac207)[_0x279e('0x29')](_0x155927);}return null;};}function patchUpdates(_0x54d855){return function(_0x4d58ac){try{jsonpatch[_0x279e('0x31')](_0x4d58ac,_0x54d855,!![]);}catch(_0x3ec817){return BPromise[_0x279e('0x32')](_0x3ec817);}return _0x4d58ac[_0x279e('0x33')]();};}function saveUpdates(_0x5df578,_0x5c49db){return function(_0x20956c){if(_0x20956c){return _0x20956c[_0x279e('0x34')](_0x5df578)[_0x279e('0x35')](function(_0x74dea7){return _0x74dea7;});}return null;};}function removeEntity(_0x481396,_0x1d3caf){return function(_0x264e68){if(_0x264e68){return _0x264e68[_0x279e('0x36')]()[_0x279e('0x35')](function(){var _0x129ef2=_0x264e68[_0x279e('0x37')]({'plain':!![]});var _0xb58717=_0x279e('0x38');return db[_0x279e('0x39')][_0x279e('0x36')]({'where':{'type':_0xb58717,'resourceId':_0x129ef2['id']}})['then'](function(){return _0x264e68;});})[_0x279e('0x35')](function(){_0x481396[_0x279e('0x2e')](0xcc)[_0x279e('0x3a')]();});}};}function handleEntityNotFound(_0x28327f,_0x3b9558){return function(_0x2f4e05){if(!_0x2f4e05){_0x28327f['sendStatus'](0x194);}return _0x2f4e05;};}function handleError(_0x43a580,_0x238f3e){_0x238f3e=_0x238f3e||0x1f4;return function(_0x107d6d){logger[_0x279e('0x26')](_0x107d6d[_0x279e('0x3b')]);if(_0x107d6d[_0x279e('0x3c')]){delete _0x107d6d[_0x279e('0x3c')];}_0x43a580[_0x279e('0x2e')](_0x238f3e)[_0x279e('0x3d')](_0x107d6d);};}exports[_0x279e('0x3e')]=function(_0x1e9665,_0x574d88){var _0x12095b={'include':[{'model':db[_0x279e('0x3f')],'as':_0x279e('0x40')}]},_0x376dae={},_0x2e972c={'count':0x0,'rows':[]};var _0x29ad90=_[_0x279e('0x41')](db[_0x279e('0x42')][_0x279e('0x43')],function(_0x9e25a5){return{'name':_0x9e25a5[_0x279e('0x44')],'type':_0x9e25a5['type']['key']};});_0x376dae[_0x279e('0x45')]=_['map'](_0x29ad90,_0x279e('0x3c'));_0x376dae[_0x279e('0x46')]=_[_0x279e('0x47')](_0x1e9665['query']);_0x376dae[_0x279e('0x48')]=_[_0x279e('0x49')](_0x376dae[_0x279e('0x45')],_0x376dae[_0x279e('0x46')]);_0x12095b[_0x279e('0x4a')]=_['intersection'](_0x376dae['model'],qs['fields'](_0x1e9665[_0x279e('0x46')][_0x279e('0x4b')]));_0x12095b[_0x279e('0x4a')]=_0x12095b['attributes'][_0x279e('0x4c')]?_0x12095b['attributes']:_0x376dae[_0x279e('0x45')];if(!_0x1e9665[_0x279e('0x46')][_0x279e('0x4d')](_0x279e('0x4e'))){_0x12095b['limit']=qs['limit'](_0x1e9665['query']['limit']);_0x12095b[_0x279e('0x2a')]=qs[_0x279e('0x2a')](_0x1e9665['query'][_0x279e('0x2a')]);}_0x12095b[_0x279e('0x4f')]=qs['sort'](_0x1e9665[_0x279e('0x46')]['sort']);_0x12095b[_0x279e('0x50')]=qs[_0x279e('0x48')](_[_0x279e('0x51')](_0x1e9665[_0x279e('0x46')],_0x376dae[_0x279e('0x48')]),_0x29ad90);if(_0x1e9665[_0x279e('0x46')][_0x279e('0x52')]){_0x12095b[_0x279e('0x50')]=_[_0x279e('0x53')](_0x12095b['where'],{'$or':_['map'](_0x29ad90,function(_0x1f0a93){if(_0x1f0a93[_0x279e('0x54')]!==_0x279e('0x55')){var _0x274070={};_0x274070[_0x1f0a93['name']]={'$like':'%'+_0x1e9665[_0x279e('0x46')][_0x279e('0x52')]+'%'};return _0x274070;}})});}_0x12095b=_[_0x279e('0x53')]({},_0x12095b,_0x1e9665[_0x279e('0x56')]);var _0x40838f={'where':_0x12095b[_0x279e('0x50')]};return db[_0x279e('0x42')][_0x279e('0x2d')](_0x40838f)[_0x279e('0x35')](function(_0x480bd5){_0x2e972c[_0x279e('0x2d')]=_0x480bd5;if(_0x1e9665[_0x279e('0x46')][_0x279e('0x57')]){_0x12095b[_0x279e('0x58')]=[{'all':!![]}];}return db[_0x279e('0x42')]['findAll'](_0x12095b);})[_0x279e('0x35')](function(_0x395c4b){_0x2e972c[_0x279e('0x59')]=_0x395c4b;return _0x2e972c;})[_0x279e('0x35')](respondWithFilteredResult(_0x574d88,_0x12095b))[_0x279e('0x28')](handleError(_0x574d88,null));};exports[_0x279e('0x5a')]=function(_0x19fd2a,_0x1ca3ca){var _0x56e65c={'raw':![],'where':{'id':_0x19fd2a[_0x279e('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x279e('0x40')}]},_0x352293={};_0x352293['model']=_[_0x279e('0x47')](db[_0x279e('0x42')]['rawAttributes']);_0x352293[_0x279e('0x46')]=_[_0x279e('0x47')](_0x19fd2a[_0x279e('0x46')]);_0x352293[_0x279e('0x48')]=_['intersection'](_0x352293[_0x279e('0x45')],_0x352293[_0x279e('0x46')]);_0x56e65c['attributes']=_[_0x279e('0x49')](_0x352293[_0x279e('0x45')],qs[_0x279e('0x4b')](_0x19fd2a[_0x279e('0x46')]['fields']));_0x56e65c[_0x279e('0x4a')]=_0x56e65c[_0x279e('0x4a')]['length']?_0x56e65c[_0x279e('0x4a')]:_0x352293[_0x279e('0x45')];if(_0x19fd2a[_0x279e('0x46')]['includeAll']){_0x56e65c[_0x279e('0x58')]=[{'all':!![]}];}_0x56e65c=_[_0x279e('0x53')]({},_0x56e65c,_0x19fd2a['options']);return db[_0x279e('0x42')][_0x279e('0x5c')](_0x56e65c)[_0x279e('0x35')](handleEntityNotFound(_0x1ca3ca,null))['then'](respondWithResult(_0x1ca3ca,null))[_0x279e('0x28')](handleError(_0x1ca3ca,null));};exports[_0x279e('0x5d')]=function(_0x583dd0,_0x343157){return db[_0x279e('0x42')]['create'](_0x583dd0['body'],{})[_0x279e('0x35')](function(_0x26cbc3){var _0x45bd98=_0x583dd0[_0x279e('0x5e')]['get']({'plain':!![]});if(!_0x45bd98)throw new Error(_0x279e('0x5f'));if(_0x45bd98[_0x279e('0x60')]===_0x279e('0x5e')){var _0x4fa5c7=_0x26cbc3[_0x279e('0x37')]({'plain':!![]});var _0x926c25=_0x279e('0x38');return db[_0x279e('0x61')][_0x279e('0x5c')]({'where':{'name':_0x926c25,'userProfileId':_0x45bd98[_0x279e('0x62')]},'raw':!![]})[_0x279e('0x35')](function(_0x5697f5){if(_0x5697f5&&_0x5697f5[_0x279e('0x63')]===0x0){return db[_0x279e('0x39')][_0x279e('0x5d')]({'name':_0x4fa5c7[_0x279e('0x3c')],'resourceId':_0x4fa5c7['id'],'type':_0x5697f5[_0x279e('0x3c')],'sectionId':_0x5697f5['id']},{})['then'](function(){return _0x26cbc3;});}else{return _0x26cbc3;}})['catch'](function(_0x33c27c){logger[_0x279e('0x26')](_0x279e('0x64'),_0x33c27c);throw _0x33c27c;});}return _0x26cbc3;})['then'](respondWithResult(_0x343157,0xc9))[_0x279e('0x28')](handleError(_0x343157,null));};exports[_0x279e('0x34')]=function(_0x3f4d5a,_0x4bbcff){if(_0x3f4d5a[_0x279e('0x65')]['id']){delete _0x3f4d5a[_0x279e('0x65')]['id'];}return db[_0x279e('0x42')][_0x279e('0x5c')]({'where':{'id':_0x3f4d5a[_0x279e('0x5b')]['id']},'include':[{'model':db[_0x279e('0x3f')],'as':_0x279e('0x40')}]})['then'](handleEntityNotFound(_0x4bbcff,null))['then'](saveUpdates(_0x3f4d5a[_0x279e('0x65')],null))[_0x279e('0x35')](respondWithResult(_0x4bbcff,null))[_0x279e('0x28')](handleError(_0x4bbcff,null));};exports[_0x279e('0x36')]=function(_0x5e938f,_0x21944d){return db['WhatsappAccount'][_0x279e('0x5c')]({'where':{'id':_0x5e938f['params']['id']}})['then'](handleEntityNotFound(_0x21944d,null))[_0x279e('0x35')](removeEntity(_0x21944d,null))[_0x279e('0x28')](handleError(_0x21944d,null));};exports[_0x279e('0x66')]=function(_0x345a31,_0x4693cd){return db[_0x279e('0x42')][_0x279e('0x66')]()[_0x279e('0x35')](respondWithResult(_0x4693cd,null))['catch'](handleError(_0x4693cd,null));};exports[_0x279e('0x67')]=function(_0x135b11,_0x41e947,_0x5ca549){if(_0x135b11[_0x279e('0x65')]['id']){delete _0x135b11[_0x279e('0x65')]['id'];}return db[_0x279e('0x42')][_0x279e('0x5c')]({'where':{'id':_0x135b11[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x41e947,null))[_0x279e('0x35')](function(_0x828b62){if(_0x828b62){_0x135b11[_0x279e('0x65')][_0x279e('0x68')]=_0x828b62['id'];return db[_0x279e('0x69')][_0x279e('0x5d')](_0x135b11[_0x279e('0x65')]);}})[_0x279e('0x35')](respondWithResult(_0x41e947,null))[_0x279e('0x28')](handleError(_0x41e947,null));};exports[_0x279e('0x6a')]=function(_0x201adf,_0x3091bf,_0x22f3ac){var _0x34f005={'raw':![],'where':{}};var _0x191585={};var _0x2147c1={'count':0x0,'rows':[]};return db[_0x279e('0x42')][_0x279e('0x6b')]({'where':{'id':_0x201adf[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x3091bf,null))[_0x279e('0x35')](function(_0x191274){if(_0x191274){_0x191585['model']=_[_0x279e('0x47')](db['Disposition'][_0x279e('0x43')]);_0x191585[_0x279e('0x46')]=_[_0x279e('0x47')](_0x201adf[_0x279e('0x46')]);_0x191585['filters']=_['intersection'](_0x191585[_0x279e('0x45')],_0x191585[_0x279e('0x46')]);_0x34f005[_0x279e('0x4a')]=_['intersection'](_0x191585['model'],qs[_0x279e('0x4b')](_0x201adf[_0x279e('0x46')][_0x279e('0x4b')]));_0x34f005['attributes']=_0x34f005[_0x279e('0x4a')][_0x279e('0x4c')]?_0x34f005[_0x279e('0x4a')]:_0x191585[_0x279e('0x45')];if(!_0x201adf['query'][_0x279e('0x4d')]('nolimit')){_0x34f005[_0x279e('0x2b')]=qs[_0x279e('0x2b')](_0x201adf[_0x279e('0x46')][_0x279e('0x2b')]);_0x34f005[_0x279e('0x2a')]=qs[_0x279e('0x2a')](_0x201adf['query'][_0x279e('0x2a')]);}_0x34f005['order']=qs[_0x279e('0x6c')](_0x201adf[_0x279e('0x46')][_0x279e('0x6c')]);_0x34f005[_0x279e('0x50')]=qs[_0x279e('0x48')](_[_0x279e('0x51')](_0x201adf['query'],_0x191585[_0x279e('0x48')]));_0x34f005['where']['WhatsappAccountId']=_0x191274['id'];if(_0x201adf[_0x279e('0x46')][_0x279e('0x52')]){_0x34f005['where']=_['merge'](_0x34f005[_0x279e('0x50')],{'$or':_[_0x279e('0x41')](_0x34f005[_0x279e('0x4a')],function(_0x5d2986){var _0x248043={};_0x248043[_0x5d2986]={'$like':'%'+_0x201adf[_0x279e('0x46')][_0x279e('0x52')]+'%'};return _0x248043;})});}_0x34f005=_[_0x279e('0x53')]({},_0x34f005,_0x201adf['options']);return db[_0x279e('0x69')][_0x279e('0x2d')]({'where':_0x34f005[_0x279e('0x50')]})[_0x279e('0x35')](function(_0x3a6097){_0x2147c1['count']=_0x3a6097;if(_0x201adf[_0x279e('0x46')][_0x279e('0x57')]){_0x34f005[_0x279e('0x58')]=[{'all':!![]}];}return db[_0x279e('0x69')][_0x279e('0x6d')](_0x34f005);})[_0x279e('0x35')](function(_0x3dfe97){_0x2147c1['rows']=_0x3dfe97;return _0x2147c1;});}})[_0x279e('0x35')](respondWithFilteredResult(_0x3091bf,_0x34f005))[_0x279e('0x28')](handleError(_0x3091bf,null));};exports['removeDispositions']=function(_0x538a6c,_0x4099b1,_0x52e85e){return db[_0x279e('0x42')]['find']({'where':{'id':_0x538a6c['params']['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x4099b1,null))[_0x279e('0x35')](function(_0x119e69){if(_0x119e69){return _0x119e69['removeDispositions'](_0x538a6c[_0x279e('0x46')][_0x279e('0x6e')]);}})[_0x279e('0x35')](respondWithStatusCode(_0x4099b1,null))[_0x279e('0x28')](handleError(_0x4099b1,null));};exports[_0x279e('0x6f')]=function(_0x39a71,_0x395447,_0x3ec09d){if(_0x39a71[_0x279e('0x65')]['id']){delete _0x39a71['body']['id'];}return db[_0x279e('0x42')][_0x279e('0x5c')]({'where':{'id':_0x39a71[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x395447,null))[_0x279e('0x35')](function(_0x453342){if(_0x453342){_0x39a71[_0x279e('0x65')][_0x279e('0x68')]=_0x453342['id'];return db[_0x279e('0x70')]['create'](_0x39a71[_0x279e('0x65')]);}})[_0x279e('0x35')](respondWithResult(_0x395447,null))['catch'](handleError(_0x395447,null));};exports['getAnswers']=function(_0x178d9f,_0x29ac31,_0x2c24a6){var _0x50d333={'raw':![],'where':{}};var _0x5ca773={};var _0x4e0ec6={'count':0x0,'rows':[]};return db[_0x279e('0x42')]['findOne']({'where':{'id':_0x178d9f['params']['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x29ac31,null))[_0x279e('0x35')](function(_0x3d307c){if(_0x3d307c){_0x5ca773[_0x279e('0x45')]=_[_0x279e('0x47')](db['CannedAnswer']['rawAttributes']);_0x5ca773[_0x279e('0x46')]=_[_0x279e('0x47')](_0x178d9f[_0x279e('0x46')]);_0x5ca773[_0x279e('0x48')]=_[_0x279e('0x49')](_0x5ca773[_0x279e('0x45')],_0x5ca773['query']);_0x50d333['attributes']=_[_0x279e('0x49')](_0x5ca773['model'],qs[_0x279e('0x4b')](_0x178d9f[_0x279e('0x46')][_0x279e('0x4b')]));_0x50d333['attributes']=_0x50d333[_0x279e('0x4a')][_0x279e('0x4c')]?_0x50d333['attributes']:_0x5ca773[_0x279e('0x45')];if(!_0x178d9f['query'][_0x279e('0x4d')]('nolimit')){_0x50d333[_0x279e('0x2b')]=qs['limit'](_0x178d9f[_0x279e('0x46')][_0x279e('0x2b')]);_0x50d333[_0x279e('0x2a')]=qs['offset'](_0x178d9f[_0x279e('0x46')]['offset']);}_0x50d333[_0x279e('0x4f')]=qs[_0x279e('0x6c')](_0x178d9f[_0x279e('0x46')][_0x279e('0x6c')]);_0x50d333[_0x279e('0x50')]=qs['filters'](_[_0x279e('0x51')](_0x178d9f[_0x279e('0x46')],_0x5ca773['filters']));_0x50d333['where'][_0x279e('0x68')]=_0x3d307c['id'];if(_0x178d9f[_0x279e('0x46')][_0x279e('0x52')]){_0x50d333[_0x279e('0x50')]=_['merge'](_0x50d333['where'],{'$or':_[_0x279e('0x41')](_0x50d333[_0x279e('0x4a')],function(_0x2c2f8d){var _0x20b204={};_0x20b204[_0x2c2f8d]={'$like':'%'+_0x178d9f[_0x279e('0x46')]['filter']+'%'};return _0x20b204;})});}_0x50d333=_['merge']({},_0x50d333,_0x178d9f[_0x279e('0x56')]);return db['CannedAnswer'][_0x279e('0x2d')]({'where':_0x50d333[_0x279e('0x50')]})[_0x279e('0x35')](function(_0x4828e8){_0x4e0ec6['count']=_0x4828e8;if(_0x178d9f[_0x279e('0x46')]['includeAll']){_0x50d333['include']=[{'all':!![]}];}return db[_0x279e('0x70')]['findAll'](_0x50d333);})[_0x279e('0x35')](function(_0x12b3d3){_0x4e0ec6[_0x279e('0x59')]=_0x12b3d3;return _0x4e0ec6;});}})[_0x279e('0x35')](respondWithFilteredResult(_0x29ac31,_0x50d333))['catch'](handleError(_0x29ac31,null));};exports[_0x279e('0x71')]=function(_0x25a556,_0x1572d6,_0x3e14fc){return db[_0x279e('0x42')]['find']({'where':{'id':_0x25a556['params']['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x1572d6,null))[_0x279e('0x35')](function(_0x32ff8f){if(_0x32ff8f){return _0x32ff8f[_0x279e('0x71')](_0x25a556[_0x279e('0x46')][_0x279e('0x6e')]);}})[_0x279e('0x35')](respondWithStatusCode(_0x1572d6,null))[_0x279e('0x28')](handleError(_0x1572d6,null));};exports[_0x279e('0x72')]=function(_0x15d803,_0x5592d3,_0x431008){return db['WhatsappAccount'][_0x279e('0x5c')]({'where':{'id':_0x15d803[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x5592d3,null))['then'](function(_0x12951c){if(_0x12951c){return _0x12951c[_0x279e('0x72')](_0x15d803[_0x279e('0x65')][_0x279e('0x6e')],_['omit'](_0x15d803[_0x279e('0x65')],['ids','id'])||{})[_0x279e('0x73')](function(_0x482f46){for(var _0x95ef0=0x0;_0x95ef0<_0x15d803[_0x279e('0x65')][_0x279e('0x6e')][_0x279e('0x4c')];_0x95ef0+=0x1){socket[_0x279e('0x74')](_0x279e('0x75'),{'UserId':Number(_0x15d803['body']['ids'][_0x95ef0]),'WhatsappAccountId':Number(_0x15d803[_0x279e('0x5b')]['id'])});}return _0x482f46;});}})[_0x279e('0x35')](respondWithResult(_0x5592d3,null))[_0x279e('0x28')](handleError(_0x5592d3,null));};exports[_0x279e('0x76')]=function(_0x3c7fae,_0x3e0f9a,_0xb506cf){return db['WhatsappAccount'][_0x279e('0x5c')]({'where':{'id':_0x3c7fae[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x3e0f9a,null))['then'](function(_0x19e321){if(_0x19e321){return _0x19e321[_0x279e('0x76')](_0x3c7fae[_0x279e('0x46')][_0x279e('0x6e')])[_0x279e('0x35')](function(){if(_[_0x279e('0x77')](_0x3c7fae[_0x279e('0x46')][_0x279e('0x6e')])){for(var _0x50092f=0x0;_0x50092f<_0x3c7fae[_0x279e('0x46')]['ids'][_0x279e('0x4c')];_0x50092f+=0x1){socket[_0x279e('0x74')](_0x279e('0x78'),{'UserId':Number(_0x3c7fae['query'][_0x279e('0x6e')][_0x50092f]),'WhatsappAccountId':Number(_0x3c7fae['params']['id'])});}}else{socket['emit'](_0x279e('0x78'),{'UserId':Number(_0x3c7fae[_0x279e('0x46')]['ids']),'WhatsappAccountId':Number(_0x3c7fae[_0x279e('0x5b')]['id'])});}});}})[_0x279e('0x35')](respondWithStatusCode(_0x3e0f9a,null))['catch'](handleError(_0x3e0f9a,null));};exports[_0x279e('0x79')]=function(_0x57e409,_0x2c392b,_0x1b83be){var _0x2aa2a1={};var _0x296323={};var _0xf2f666;var _0x2fa625;return db[_0x279e('0x42')]['findOne']({'where':{'id':_0x57e409[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x2c392b,null))['then'](function(_0x3ee555){if(_0x3ee555){_0xf2f666=_0x3ee555;_0x296323[_0x279e('0x45')]=_[_0x279e('0x47')](db['User'][_0x279e('0x43')]);_0x296323[_0x279e('0x46')]=_['keys'](_0x57e409['query']);_0x296323[_0x279e('0x48')]=_[_0x279e('0x49')](_0x296323[_0x279e('0x45')],_0x296323[_0x279e('0x46')]);_0x2aa2a1[_0x279e('0x4a')]=_['intersection'](_0x296323[_0x279e('0x45')],qs[_0x279e('0x4b')](_0x57e409[_0x279e('0x46')][_0x279e('0x4b')]));_0x2aa2a1['attributes']=_0x2aa2a1['attributes'][_0x279e('0x4c')]?_0x2aa2a1['attributes']:_0x296323[_0x279e('0x45')];_0x2aa2a1[_0x279e('0x4f')]=qs['sort'](_0x57e409[_0x279e('0x46')][_0x279e('0x6c')]);_0x2aa2a1[_0x279e('0x50')]=qs[_0x279e('0x48')](_[_0x279e('0x51')](_0x57e409[_0x279e('0x46')],_0x296323[_0x279e('0x48')]));if(_0x57e409[_0x279e('0x46')][_0x279e('0x52')]){_0x2aa2a1[_0x279e('0x50')]=_['merge'](_0x2aa2a1[_0x279e('0x50')],{'$or':_[_0x279e('0x41')](_0x2aa2a1[_0x279e('0x4a')],function(_0x2b992e){var _0xbc66e9={};_0xbc66e9[_0x2b992e]={'$like':'%'+_0x57e409[_0x279e('0x46')][_0x279e('0x52')]+'%'};return _0xbc66e9;})});}_0x2aa2a1=_['merge']({},_0x2aa2a1,_0x57e409['options']);return _0xf2f666[_0x279e('0x79')](_0x2aa2a1);}})[_0x279e('0x35')](function(_0x45f565){if(_0x45f565){_0x2fa625=_0x45f565['length'];if(!_0x57e409[_0x279e('0x46')][_0x279e('0x4d')](_0x279e('0x4e'))){_0x2aa2a1[_0x279e('0x2b')]=qs['limit'](_0x57e409[_0x279e('0x46')][_0x279e('0x2b')]);_0x2aa2a1[_0x279e('0x2a')]=qs['offset'](_0x57e409[_0x279e('0x46')][_0x279e('0x2a')]);}return _0xf2f666[_0x279e('0x79')](_0x2aa2a1);}})[_0x279e('0x35')](function(_0xb7317f){if(_0xb7317f){return _0xb7317f?{'count':_0x2fa625,'rows':_0xb7317f}:null;}})['then'](respondWithResult(_0x2c392b,null))[_0x279e('0x28')](handleError(_0x2c392b,null));};exports[_0x279e('0x7a')]=function(_0x3c41f5,_0x13ef6e,_0x598bd4){return db['WhatsappAccount']['findOne']({'where':{'id':_0x3c41f5[_0x279e('0x5b')]['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x13ef6e,null))[_0x279e('0x35')](function(_0x389287){if(_0x389287){return db['sequelize']['transaction'](function(_0x5cda56){return db['WhatsappApplication'][_0x279e('0x36')]({'where':{'WhatsappAccountId':_0x3c41f5[_0x279e('0x5b')]['id']},'transaction':_0x5cda56})['then'](function(_0x3be5ae){var _0x554e70=_[_0x279e('0x41')](_0x3c41f5[_0x279e('0x65')],function(_0x41f889){_0x41f889[_0x279e('0x68')]=_0x3c41f5[_0x279e('0x5b')]['id'];return _0x41f889;});return db[_0x279e('0x7b')][_0x279e('0x7c')](_0x554e70,{'transaction':_0x5cda56});});})[_0x279e('0x35')](function(){return db['WhatsappApplication'][_0x279e('0x7d')]({'where':{'WhatsappAccountId':_0x3c41f5['params']['id']},'order':'priority'});});}})[_0x279e('0x35')](respondWithResult(_0x13ef6e,null))['catch'](handleError(_0x13ef6e,null));};exports[_0x279e('0x7e')]=function(_0x29b941,_0x31d37c,_0x247479){var _0x3e0daa={};var _0x3e95c5={};var _0x2ade66;var _0x3e462e;return db[_0x279e('0x42')][_0x279e('0x6b')]({'where':{'id':_0x29b941['params']['id']}})[_0x279e('0x35')](handleEntityNotFound(_0x31d37c,null))[_0x279e('0x35')](function(_0x1c2744){if(_0x1c2744){_0x2ade66=_0x1c2744;_0x3e95c5['model']=_['keys'](db[_0x279e('0x7b')][_0x279e('0x43')]);_0x3e95c5['query']=_['keys'](_0x29b941[_0x279e('0x46')]);_0x3e95c5[_0x279e('0x48')]=_[_0x279e('0x49')](_0x3e95c5['model'],_0x3e95c5[_0x279e('0x46')]);_0x3e0daa[_0x279e('0x4a')]=_[_0x279e('0x49')](_0x3e95c5[_0x279e('0x45')],qs[_0x279e('0x4b')](_0x29b941['query']['fields']));_0x3e0daa[_0x279e('0x4a')]=_0x3e0daa[_0x279e('0x4a')]['length']?_0x3e0daa[_0x279e('0x4a')]:_0x3e95c5[_0x279e('0x45')];_0x3e0daa['order']=qs[_0x279e('0x6c')](_0x29b941[_0x279e('0x46')][_0x279e('0x6c')]);_0x3e0daa['where']=qs['filters'](_['pick'](_0x29b941['query'],_0x3e95c5['filters']));if(_0x29b941[_0x279e('0x46')][_0x279e('0x52')]){_0x3e0daa[_0x279e('0x50')]=_['merge'](_0x3e0daa['where'],{'$or':_[_0x279e('0x41')](_0x3e0daa[_0x279e('0x4a')],function(_0x303527){var _0x22fbd9={};_0x22fbd9[_0x303527]={'$like':'%'+_0x29b941[_0x279e('0x46')]['filter']+'%'};return _0x22fbd9;})});}_0x3e0daa=_['merge']({},_0x3e0daa,_0x29b941[_0x279e('0x56')]);return _0x2ade66[_0x279e('0x7e')](_0x3e0daa);}})[_0x279e('0x35')](function(_0x27a97f){if(_0x27a97f){_0x3e462e=_0x27a97f['length'];if(!_0x29b941[_0x279e('0x46')]['hasOwnProperty'](_0x279e('0x4e'))){_0x3e0daa[_0x279e('0x2b')]=qs[_0x279e('0x2b')](_0x29b941[_0x279e('0x46')][_0x279e('0x2b')]);_0x3e0daa[_0x279e('0x2a')]=qs[_0x279e('0x2a')](_0x29b941[_0x279e('0x46')]['offset']);}return _0x2ade66['getApplications'](_0x3e0daa);}})[_0x279e('0x35')](function(_0x8e851f){if(_0x8e851f){return _0x8e851f?{'count':_0x3e462e,'rows':_0x8e851f}:null;}})[_0x279e('0x35')](respondWithResult(_0x31d37c,null))[_0x279e('0x28')](handleError(_0x31d37c,null));};exports[_0x279e('0x7f')]=function(_0x14a5c1,_0x29daab,_0x49defd){var _0x58e016={'channel':_0x279e('0x80')};var _0x594ffd=[];var _0x2d1026=[];var _0x515aad={};return db[_0x279e('0x42')][_0x279e('0x5c')]({'where':{'id':_0x14a5c1['params']['id']},'include':[{'model':db[_0x279e('0x7b')],'as':_0x279e('0x81')}]})[_0x279e('0x35')](handleEntityNotFound(_0x29daab,null))[_0x279e('0x35')](function(_0x8ca25){_0x58e016[_0x279e('0x82')]=_0x8ca25;_0x58e016[_0x279e('0x83')]=_[_0x279e('0x84')](_0x8ca25[_0x279e('0x81')],[_0x279e('0x85')],['asc']);if(_0x58e016['account']['Applications']){delete _0x58e016['account'][_0x279e('0x81')];}return db[_0x279e('0x86')][_0x279e('0x66')]();})[_0x279e('0x35')](function(_0x3ab98c){if(!_0x3ab98c){throw new db[(_0x279e('0x87'))]['ValidationError']('no\x20available\x20attributes');}_0x594ffd=_[_0x279e('0x88')](_['keys'](_0x3ab98c),[_0x279e('0x89'),_0x279e('0x8a')]);_0x2d1026=_['difference'](_[_0x279e('0x47')](_0x3ab98c),['createdAt',_0x279e('0x8a'),_0x279e('0x8b'),'ListId']);_0x58e016['body']={'mapKey':'mobile'};if(_0x58e016[_0x279e('0x82')]['type']&&_0x58e016[_0x279e('0x82')][_0x279e('0x54')]===_0x279e('0x8c')){_0x58e016[_0x279e('0x65')][_0x279e('0x8d')]=_0x14a5c1[_0x279e('0x65')][_0x279e('0x8e')]['replace'](_0x279e('0x8f'),'');_0x58e016[_0x279e('0x65')]['body']=_0x14a5c1['body'][_0x279e('0x90')];_0x58e016[_0x279e('0x65')][_0x279e('0x91')]=_0x14a5c1[_0x279e('0x65')]['MessageSid'];}if(_0x58e016[_0x279e('0x65')]['id']){delete _0x58e016[_0x279e('0x65')]['id'];}if(_[_0x279e('0x92')](_0x58e016[_0x279e('0x65')]['from'])){throw new db[(_0x279e('0x87'))][(_0x279e('0x93'))](_0x279e('0x94'));}if(_[_0x279e('0x92')](_0x58e016[_0x279e('0x65')][_0x279e('0x65')])||_0x58e016['body']['body']===''){throw new db['Sequelize'][(_0x279e('0x93'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x58e016['body']['mapKey'])){throw new db[(_0x279e('0x87'))]['ValidationError'](_0x279e('0x95')+_0x2d1026);}if(!_[_0x279e('0x96')](_0x2d1026,_0x58e016['body'][_0x279e('0x97')])){throw new db[(_0x279e('0x87'))][(_0x279e('0x93'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2d1026);}_0x515aad[_0x58e016['body'][_0x279e('0x97')]]=_0x58e016[_0x279e('0x65')][_0x279e('0x8d')];return db[_0x279e('0x98')]['find']({'where':{'id':_0x58e016[_0x279e('0x82')][_0x279e('0x99')]},'include':[{'model':db[_0x279e('0x86')],'as':_0x279e('0x9a'),'where':_0x515aad,'limit':0x1,'order':[[_0x279e('0x8a'),_0x279e('0x9b')]]}]});})[_0x279e('0x35')](handleEntityNotFound(_0x29daab,null))[_0x279e('0x35')](function(_0x4b830f){if(_0x4b830f){_0x58e016[_0x279e('0x9c')]=_[_0x279e('0x9d')](_0x4b830f,[_0x279e('0x9a')]);if(_0x4b830f[_0x279e('0x9a')][_0x279e('0x4c')]){return _0x4b830f[_0x279e('0x9a')][0x0];}var _0x3a22c3=_[_0x279e('0x1a')](_0x58e016[_0x279e('0x65')],{'firstName':_0x58e016[_0x279e('0x65')][_0x279e('0x8d')],'ListId':_0x4b830f['id']});_0x3a22c3[_0x58e016[_0x279e('0x65')][_0x279e('0x97')]]=_0x58e016[_0x279e('0x65')]['from'];return db['CmContact'][_0x279e('0x5d')](_0x3a22c3,{'fields':_0x594ffd,'raw':!![]});}})[_0x279e('0x35')](handleEntityNotFound(_0x29daab,null))['then'](function(_0x1277ea){if(_0x1277ea){_0x58e016[_0x279e('0x9e')]=_0x1277ea;var _0x412772={'ContactId':_0x1277ea['id'],'phone':_0x58e016[_0x279e('0x65')][_0x279e('0x8d')],'WhatsappAccountId':_0x14a5c1[_0x279e('0x5b')]['id']};var _0xec9355={'ContactId':_0x1277ea['id'],'WhatsappAccountId':_0x14a5c1['params']['id'],'closed':![]};return db[_0x279e('0x9f')][_0x279e('0x5c')]({'where':_0xec9355})[_0x279e('0x35')](function(_0x283c94){if(_0x283c94){return[_0x283c94,![]];}return db[_0x279e('0x9f')][_0x279e('0x5d')](_0x412772)['then'](function(_0x7fbbbd){return[_0x7fbbbd,!![]];});});}})[_0x279e('0x73')](function(_0xea20aa,_0x413e9f){_0x58e016[_0x279e('0xa0')]=_0xea20aa['get']({'plain':!![]});_0x58e016[_0x279e('0xa0')][_0x279e('0xa1')]=![];if(_0x413e9f){if(_0x58e016[_0x279e('0x82')]['autoclose']){_0x58e016['applications']['push']({'id':0x0,'priority':_0x58e016[_0x279e('0x83')][_0x279e('0x4c')]+0x1,'app':_0x279e('0xa2'),'appdata':_0x279e('0xa3'),'interval':_0x279e('0xa4')});}_0x58e016[_0x279e('0xa0')][_0x279e('0xa1')]=!![];}return db[_0x279e('0xa5')][_0x279e('0x5d')]({'phone':_0x58e016[_0x279e('0x65')]['from'],'messageId':_0x58e016['body']['messageId'],'body':_0x58e016[_0x279e('0x65')]['body'],'WhatsappAccountId':_0x14a5c1[_0x279e('0x5b')]['id'],'WhatsappInteractionId':_0xea20aa['id'],'direction':'in','ContactId':_0xea20aa['ContactId'],'AttachmentId':_0x58e016[_0x279e('0x65')][_0x279e('0xa6')]});})[_0x279e('0x35')](function(_0x3b52c4){_0x58e016[_0x279e('0x27')]=_0x3b52c4;if(_0x58e016[_0x279e('0xa0')][_0x279e('0xa7')]){return db['User'][_0x279e('0x5c')]({'attributes':['id','name'],'where':{'id':_0x58e016[_0x279e('0xa0')][_0x279e('0xa7')]}})['then'](function(_0x576126){if(_0x576126){_0x58e016[_0x279e('0x83')]['unshift']({'id':0x0,'priority':0x0,'app':_0x279e('0xa8'),'appdata':_0x576126[_0x279e('0x3c')]+','+(_0x58e016[_0x279e('0x82')][_0x279e('0xa9')]||0xa),'interval':_0x279e('0xa4')});}return respondWithRpcPromise(_0x279e('0xaa'),'startRouting',_0x58e016);});}return respondWithRpcPromise(_0x279e('0xaa'),_0x279e('0xab'),_0x58e016);})[_0x279e('0x35')](function(_0x231ff5){if(_0x231ff5){var _0x2d261e=0xc8;var _0x19a1a1=_0x279e('0xac');logger[_0x279e('0x21')](_0x279e('0x24'),_0x19a1a1,_0x2d261e,_0x279e('0xad'));logger[_0x279e('0xae')](_0x279e('0xaf'),_0x19a1a1,_0x2d261e,_0x279e('0xad'),JSON[_0x279e('0x25')](_0x231ff5));if(_0x58e016[_0x279e('0x82')]['type']===_0x279e('0x8c')){return _0x29daab[_0x279e('0x2e')](_0x2d261e)['set'](_0x279e('0xb0'),_0x279e('0xb1'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x29daab[_0x279e('0x2e')](_0x2d261e)['json'](_0x231ff5);}}})[_0x279e('0x28')](handleError(_0x29daab,null));};exports[_0x279e('0x3d')]=function(_0x11702e,_0xf25a87,_0x16d391){var _0x5ddeef,_0x3bd466,_0x27d586;if(_[_0x279e('0x92')](_0x11702e[_0x279e('0x65')]['body'])||_0x11702e[_0x279e('0x65')][_0x279e('0x65')]===''){throw new db[(_0x279e('0x87'))]['ValidationError'](_0x279e('0xb2'));}if(_[_0x279e('0x92')](_0x11702e[_0x279e('0x65')]['to'])){throw new db[(_0x279e('0x87'))][(_0x279e('0x93'))]('to\x20is\x20mandatory');}_0x5ddeef=_0x11702e[_0x279e('0x65')]['to'];return db[_0x279e('0x42')]['find']({'where':{'id':_0x11702e[_0x279e('0x5b')]['id']},'include':[{'model':db[_0x279e('0x98')],'as':_0x279e('0xb3'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x5ddeef},'limit':0x1,'order':[[_0x279e('0x8a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0xf25a87,null))[_0x279e('0x35')](function(_0x96ecad){if(_0x96ecad&&_0x96ecad[_0x279e('0xb3')]){_0x3bd466=_0x96ecad['get']({'plain':!![]});if(_0x3bd466[_0x279e('0xb3')]&&_0x3bd466[_0x279e('0xb3')][_0x279e('0x9a')][_0x279e('0x4c')]){return _0x3bd466[_0x279e('0xb3')][_0x279e('0x9a')][0x0];}return db[_0x279e('0x86')][_0x279e('0x5d')](_['defaults'](_0x11702e['body'],{'firstName':_0x5ddeef,'mobile':_0x5ddeef,'phone':_0x5ddeef,'ListId':_0x3bd466[_0x279e('0x99')]}));}})['then'](handleEntityNotFound(_0xf25a87,null))[_0x279e('0x35')](function(_0x46a027){if(_0x46a027){_0x27d586=_0x46a027;return db[_0x279e('0x9f')][_0x279e('0x5c')]({'where':{'ContactId':_0x27d586['id'],'closed':![],'WhatsappAccountId':_0x3bd466['id']}})[_0x279e('0x35')](function(_0xa6ce0f){if(_0xa6ce0f){return[_0xa6ce0f,![]];}return db[_0x279e('0x9f')][_0x279e('0x5d')]({'UserId':_0x11702e[_0x279e('0x5e')]['id'],'ContactId':_0x27d586['id'],'WhatsappAccountId':_0x3bd466['id'],'phone':_0x5ddeef,'firstMsgDirection':_0x279e('0xb4'),'Messages':[_[_0x279e('0x53')](_0x11702e[_0x279e('0x65')],{'read':![],'body':_0x11702e[_0x279e('0x65')][_0x279e('0x65')],'phone':_0x5ddeef,'WhatsappAccountId':_0x3bd466['id'],'UserId':_0x11702e['user']['id'],'ContactId':_0x27d586['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x279e('0xb5')}]})[_0x279e('0x35')](function(_0x1e7d6f){return[_0x1e7d6f,!![]];});});}})[_0x279e('0x73')](function(_0x1d742b,_0x39ecbe){if(_0x39ecbe){return _0x1d742b;}return db[_0x279e('0xa5')][_0x279e('0x5d')](_[_0x279e('0x53')](_0x11702e[_0x279e('0x65')],{'read':![],'body':_0x11702e['body']['body'],'phone':_0x5ddeef,'WhatsappAccountId':_0x3bd466['id'],'WhatsappInteractionId':_0x1d742b['id'],'UserId':_0x11702e[_0x279e('0x5e')]['id'],'ContactId':_0x27d586['id']}))['then'](function(_0x4dd0bc){_0x1d742b[_0x279e('0xb6')][_0x279e('0xb5')]=[];_0x1d742b[_0x279e('0xb6')]['Messages'][_0x279e('0xb7')](_0x4dd0bc[_0x279e('0xb6')]);return _0x1d742b;});})[_0x279e('0x35')](respondWithResult(_0xf25a87,null))[_0x279e('0x28')](handleError(_0xf25a87,null));};
\ No newline at end of file
+var _0xbb08=['sort','where','filter','merge','VIRTUAL','options','WhatsappAccount','include','findAll','rows','catch','params','mandatoryDispositionPause','rawAttributes','intersection','includeAll','find','create','body','user','role','WhatsappAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','getDispositions','findOne','Disposition','fields','length','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','pick','removeAnswers','addAgents','omit','spread','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','priority','getApplications','applications','orderBy','asc','Applications','Sequelize','difference','createdAt','updatedAt','CompanyId','account','replace','whatsapp:','Body','MessageSid','isNil','from','ValidationError','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','ListId','CmContact','list','Contacts','contact','WhatsappInteraction','created','autoclose','push','close','unmanaged','*,*,*,*','interaction','WhatsappMessage','ContactId','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','twilio','set','Content-Type','text/xml','to\x20is\x20mandatory','CmList','DESC','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','jayson/promise','client','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','sendStatus','status','end','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','get','name','send','index','Pause','map','fieldName','type','key','keys','filters','model','attributes','query','hasOwnProperty','nolimit','offset','order'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0xbb08,0x74));var _0x8bb0=function(_0x26aaec,_0x4e03ae){_0x26aaec=_0x26aaec-0x0;var _0x3683b7=_0xbb08[_0x26aaec];return _0x3683b7;};'use strict';var emlformat=require(_0x8bb0('0x0'));var rimraf=require(_0x8bb0('0x1'));var zipdir=require(_0x8bb0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8bb0('0x3'));var moment=require(_0x8bb0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8bb0('0x5'));var util=require(_0x8bb0('0x6'));var path=require(_0x8bb0('0x7'));var sox=require(_0x8bb0('0x8'));var csv=require(_0x8bb0('0x9'));var ejs=require(_0x8bb0('0xa'));var fs=require('fs');var fs_extra=require(_0x8bb0('0xb'));var _=require(_0x8bb0('0xc'));var squel=require(_0x8bb0('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8bb0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8bb0('0xf'));var Papa=require(_0x8bb0('0x10'));var Redis=require(_0x8bb0('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8bb0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8bb0('0x13'))('api');var utils=require(_0x8bb0('0x14'));var config=require(_0x8bb0('0x15'));var licenseUtil=require(_0x8bb0('0x16'));var db=require('../../mysqldb')['db'];config[_0x8bb0('0x17')]=_[_0x8bb0('0x18')](config[_0x8bb0('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x8bb0('0x19'))(new Redis(config['redis']));require('./whatsappAccount.socket')['register'](socket);var jayson=require(_0x8bb0('0x1a'));var client=jayson[_0x8bb0('0x1b')]['http']({'port':0x232c});function respondWithRpcPromise(_0x360802,_0x54ab05,_0x112619,_0x161930){return new BPromise(function(_0x5a7814,_0x3ca96c){var _0x281541=_0x161930||client;return _0x281541['request'](_0x360802,_0x112619)[_0x8bb0('0x1c')](function(_0x2819f2){logger[_0x8bb0('0x1d')]('WhatsappAccount,\x20%s,\x20%s',_0x54ab05,_0x8bb0('0x1e'));logger[_0x8bb0('0x1f')](_0x8bb0('0x20'),_0x54ab05,_0x8bb0('0x1e'),JSON['stringify'](_0x2819f2));if(_0x2819f2[_0x8bb0('0x21')]){if(_0x2819f2[_0x8bb0('0x21')][_0x8bb0('0x22')]===0x1f4){logger[_0x8bb0('0x21')](_0x8bb0('0x23'),_0x54ab05,_0x2819f2['error'][_0x8bb0('0x24')]);return _0x3ca96c(_0x2819f2['error'][_0x8bb0('0x24')]);}logger['error'](_0x8bb0('0x23'),_0x54ab05,_0x2819f2['error']['message']);return _0x5a7814(_0x2819f2[_0x8bb0('0x21')][_0x8bb0('0x24')]);}else{logger[_0x8bb0('0x1d')](_0x8bb0('0x23'),_0x54ab05,'request\x20sent');_0x5a7814(_0x2819f2[_0x8bb0('0x25')][_0x8bb0('0x24')]);}})['catch'](function(_0x37210b){logger[_0x8bb0('0x21')](_0x8bb0('0x23'),_0x54ab05,_0x37210b);_0x3ca96c(_0x37210b);});});}function respondWithStatusCode(_0x56b848,_0xfc97eb){_0xfc97eb=_0xfc97eb||0xcc;return function(_0x40e41f){if(_0x40e41f){return _0x56b848[_0x8bb0('0x26')](_0xfc97eb);}return _0x56b848[_0x8bb0('0x27')](_0xfc97eb)[_0x8bb0('0x28')]();};}function respondWithResult(_0x5f7dba,_0x357f44){_0x357f44=_0x357f44||0xc8;return function(_0xa69787){if(_0xa69787){return _0x5f7dba[_0x8bb0('0x27')](_0x357f44)['json'](_0xa69787);}};}function respondWithFilteredResult(_0x276c9b,_0x21ddc1){return function(_0x543d57){if(_0x543d57){var _0x5ebf62=typeof _0x21ddc1['offset']===_0x8bb0('0x29')&&typeof _0x21ddc1[_0x8bb0('0x2a')]==='undefined';var _0x96f16=_0x543d57[_0x8bb0('0x2b')];var _0x37e39d=_0x5ebf62?0x0:_0x21ddc1['offset'];var _0x495631=_0x5ebf62?_0x543d57[_0x8bb0('0x2b')]:_0x21ddc1['offset']+_0x21ddc1[_0x8bb0('0x2a')];var _0x4b252a;if(_0x495631>=_0x96f16){_0x495631=_0x96f16;_0x4b252a=0xc8;}else{_0x4b252a=0xce;}_0x276c9b['status'](_0x4b252a);return _0x276c9b['set'](_0x8bb0('0x2c'),_0x37e39d+'-'+_0x495631+'/'+_0x96f16)[_0x8bb0('0x2d')](_0x543d57);}return null;};}function patchUpdates(_0x393b86){return function(_0x5b0251){try{jsonpatch[_0x8bb0('0x2e')](_0x5b0251,_0x393b86,!![]);}catch(_0x41414b){return BPromise[_0x8bb0('0x2f')](_0x41414b);}return _0x5b0251[_0x8bb0('0x30')]();};}function saveUpdates(_0xfb09a8,_0x3578f7){return function(_0x48f087){if(_0x48f087){return _0x48f087[_0x8bb0('0x31')](_0xfb09a8)[_0x8bb0('0x1c')](function(_0x18d082){return _0x18d082;});}return null;};}function removeEntity(_0xbed48d,_0xc0d55d){return function(_0x315714){if(_0x315714){return _0x315714[_0x8bb0('0x32')]()[_0x8bb0('0x1c')](function(){var _0x2f3a5e=_0x315714[_0x8bb0('0x33')]({'plain':!![]});var _0x52c78f='WhatsappAccounts';return db['UserProfileResource'][_0x8bb0('0x32')]({'where':{'type':_0x52c78f,'resourceId':_0x2f3a5e['id']}})[_0x8bb0('0x1c')](function(){return _0x315714;});})['then'](function(){_0xbed48d[_0x8bb0('0x27')](0xcc)[_0x8bb0('0x28')]();});}};}function handleEntityNotFound(_0x258e9f,_0x14b0e7){return function(_0x274611){if(!_0x274611){_0x258e9f['sendStatus'](0x194);}return _0x274611;};}function handleError(_0x520509,_0x7111fa){_0x7111fa=_0x7111fa||0x1f4;return function(_0x21f37f){logger[_0x8bb0('0x21')](_0x21f37f['stack']);if(_0x21f37f[_0x8bb0('0x34')]){delete _0x21f37f[_0x8bb0('0x34')];}_0x520509['status'](_0x7111fa)[_0x8bb0('0x35')](_0x21f37f);};}exports[_0x8bb0('0x36')]=function(_0x4f3df3,_0x32d925){var _0x27d375={'include':[{'model':db[_0x8bb0('0x37')],'as':'mandatoryDispositionPause'}]},_0xc84bf={},_0x4493bd={'count':0x0,'rows':[]};var _0x49d785=_[_0x8bb0('0x38')](db['WhatsappAccount']['rawAttributes'],function(_0x1f71bc){return{'name':_0x1f71bc[_0x8bb0('0x39')],'type':_0x1f71bc[_0x8bb0('0x3a')][_0x8bb0('0x3b')]};});_0xc84bf['model']=_['map'](_0x49d785,_0x8bb0('0x34'));_0xc84bf['query']=_[_0x8bb0('0x3c')](_0x4f3df3['query']);_0xc84bf[_0x8bb0('0x3d')]=_['intersection'](_0xc84bf[_0x8bb0('0x3e')],_0xc84bf['query']);_0x27d375[_0x8bb0('0x3f')]=_['intersection'](_0xc84bf[_0x8bb0('0x3e')],qs['fields'](_0x4f3df3['query']['fields']));_0x27d375[_0x8bb0('0x3f')]=_0x27d375[_0x8bb0('0x3f')]['length']?_0x27d375['attributes']:_0xc84bf['model'];if(!_0x4f3df3[_0x8bb0('0x40')][_0x8bb0('0x41')](_0x8bb0('0x42'))){_0x27d375[_0x8bb0('0x2a')]=qs[_0x8bb0('0x2a')](_0x4f3df3[_0x8bb0('0x40')][_0x8bb0('0x2a')]);_0x27d375[_0x8bb0('0x43')]=qs['offset'](_0x4f3df3['query'][_0x8bb0('0x43')]);}_0x27d375[_0x8bb0('0x44')]=qs[_0x8bb0('0x45')](_0x4f3df3['query'][_0x8bb0('0x45')]);_0x27d375[_0x8bb0('0x46')]=qs[_0x8bb0('0x3d')](_['pick'](_0x4f3df3[_0x8bb0('0x40')],_0xc84bf[_0x8bb0('0x3d')]),_0x49d785);if(_0x4f3df3['query'][_0x8bb0('0x47')]){_0x27d375['where']=_[_0x8bb0('0x48')](_0x27d375[_0x8bb0('0x46')],{'$or':_['map'](_0x49d785,function(_0x564b62){if(_0x564b62[_0x8bb0('0x3a')]!==_0x8bb0('0x49')){var _0x3ad3cc={};_0x3ad3cc[_0x564b62[_0x8bb0('0x34')]]={'$like':'%'+_0x4f3df3[_0x8bb0('0x40')][_0x8bb0('0x47')]+'%'};return _0x3ad3cc;}})});}_0x27d375=_[_0x8bb0('0x48')]({},_0x27d375,_0x4f3df3[_0x8bb0('0x4a')]);var _0x374314={'where':_0x27d375[_0x8bb0('0x46')]};return db[_0x8bb0('0x4b')][_0x8bb0('0x2b')](_0x374314)[_0x8bb0('0x1c')](function(_0x3933be){_0x4493bd['count']=_0x3933be;if(_0x4f3df3[_0x8bb0('0x40')]['includeAll']){_0x27d375[_0x8bb0('0x4c')]=[{'all':!![]}];}return db[_0x8bb0('0x4b')][_0x8bb0('0x4d')](_0x27d375);})[_0x8bb0('0x1c')](function(_0x1e0a97){_0x4493bd[_0x8bb0('0x4e')]=_0x1e0a97;return _0x4493bd;})[_0x8bb0('0x1c')](respondWithFilteredResult(_0x32d925,_0x27d375))[_0x8bb0('0x4f')](handleError(_0x32d925,null));};exports['show']=function(_0x35da7f,_0x5f28b1){var _0x5ba0a7={'raw':![],'where':{'id':_0x35da7f[_0x8bb0('0x50')]['id']},'include':[{'model':db[_0x8bb0('0x37')],'as':_0x8bb0('0x51')}]},_0x4304ad={};_0x4304ad[_0x8bb0('0x3e')]=_['keys'](db[_0x8bb0('0x4b')][_0x8bb0('0x52')]);_0x4304ad[_0x8bb0('0x40')]=_['keys'](_0x35da7f[_0x8bb0('0x40')]);_0x4304ad['filters']=_[_0x8bb0('0x53')](_0x4304ad[_0x8bb0('0x3e')],_0x4304ad['query']);_0x5ba0a7[_0x8bb0('0x3f')]=_[_0x8bb0('0x53')](_0x4304ad[_0x8bb0('0x3e')],qs['fields'](_0x35da7f['query']['fields']));_0x5ba0a7[_0x8bb0('0x3f')]=_0x5ba0a7[_0x8bb0('0x3f')]['length']?_0x5ba0a7[_0x8bb0('0x3f')]:_0x4304ad[_0x8bb0('0x3e')];if(_0x35da7f[_0x8bb0('0x40')][_0x8bb0('0x54')]){_0x5ba0a7[_0x8bb0('0x4c')]=[{'all':!![]}];}_0x5ba0a7=_[_0x8bb0('0x48')]({},_0x5ba0a7,_0x35da7f[_0x8bb0('0x4a')]);return db['WhatsappAccount'][_0x8bb0('0x55')](_0x5ba0a7)[_0x8bb0('0x1c')](handleEntityNotFound(_0x5f28b1,null))['then'](respondWithResult(_0x5f28b1,null))['catch'](handleError(_0x5f28b1,null));};exports[_0x8bb0('0x56')]=function(_0x18710a,_0x483088){return db[_0x8bb0('0x4b')]['create'](_0x18710a[_0x8bb0('0x57')],{})['then'](function(_0x4e24f4){var _0x1adcb7=_0x18710a[_0x8bb0('0x58')]['get']({'plain':!![]});if(!_0x1adcb7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1adcb7[_0x8bb0('0x59')]===_0x8bb0('0x58')){var _0x29da19=_0x4e24f4[_0x8bb0('0x33')]({'plain':!![]});var _0x4afcd1=_0x8bb0('0x5a');return db[_0x8bb0('0x5b')][_0x8bb0('0x55')]({'where':{'name':_0x4afcd1,'userProfileId':_0x1adcb7[_0x8bb0('0x5c')]},'raw':!![]})[_0x8bb0('0x1c')](function(_0x3c84cc){if(_0x3c84cc&&_0x3c84cc[_0x8bb0('0x5d')]===0x0){return db[_0x8bb0('0x5e')][_0x8bb0('0x56')]({'name':_0x29da19[_0x8bb0('0x34')],'resourceId':_0x29da19['id'],'type':_0x3c84cc[_0x8bb0('0x34')],'sectionId':_0x3c84cc['id']},{})[_0x8bb0('0x1c')](function(){return _0x4e24f4;});}else{return _0x4e24f4;}})[_0x8bb0('0x4f')](function(_0x223846){logger[_0x8bb0('0x21')](_0x8bb0('0x5f'),_0x223846);throw _0x223846;});}return _0x4e24f4;})['then'](respondWithResult(_0x483088,0xc9))[_0x8bb0('0x4f')](handleError(_0x483088,null));};exports[_0x8bb0('0x31')]=function(_0x53cb3a,_0x2f9b63){if(_0x53cb3a['body']['id']){delete _0x53cb3a[_0x8bb0('0x57')]['id'];}return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x53cb3a['params']['id']},'include':[{'model':db[_0x8bb0('0x37')],'as':_0x8bb0('0x51')}]})[_0x8bb0('0x1c')](handleEntityNotFound(_0x2f9b63,null))['then'](saveUpdates(_0x53cb3a['body'],null))['then'](respondWithResult(_0x2f9b63,null))[_0x8bb0('0x4f')](handleError(_0x2f9b63,null));};exports[_0x8bb0('0x32')]=function(_0x15de9b,_0x420aee){return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x15de9b[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x420aee,null))[_0x8bb0('0x1c')](removeEntity(_0x420aee,null))[_0x8bb0('0x4f')](handleError(_0x420aee,null));};exports['describe']=function(_0x51f65f,_0x37135c){return db[_0x8bb0('0x4b')][_0x8bb0('0x60')]()['then'](respondWithResult(_0x37135c,null))['catch'](handleError(_0x37135c,null));};exports[_0x8bb0('0x61')]=function(_0x58a30f,_0x10d936,_0x525e34){if(_0x58a30f[_0x8bb0('0x57')]['id']){delete _0x58a30f[_0x8bb0('0x57')]['id'];}return db['WhatsappAccount'][_0x8bb0('0x55')]({'where':{'id':_0x58a30f['params']['id']}})['then'](handleEntityNotFound(_0x10d936,null))[_0x8bb0('0x1c')](function(_0x3c0459){if(_0x3c0459){_0x58a30f[_0x8bb0('0x57')][_0x8bb0('0x62')]=_0x3c0459['id'];return db['Disposition'][_0x8bb0('0x56')](_0x58a30f[_0x8bb0('0x57')]);}})[_0x8bb0('0x1c')](respondWithResult(_0x10d936,null))[_0x8bb0('0x4f')](handleError(_0x10d936,null));};exports[_0x8bb0('0x63')]=function(_0x5289ba,_0x3c49b8,_0x33e7c2){var _0xa026a2={'raw':![],'where':{}};var _0x47687d={};var _0x2cae13={'count':0x0,'rows':[]};return db[_0x8bb0('0x4b')][_0x8bb0('0x64')]({'where':{'id':_0x5289ba[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x3c49b8,null))['then'](function(_0x5c2986){if(_0x5c2986){_0x47687d['model']=_[_0x8bb0('0x3c')](db[_0x8bb0('0x65')][_0x8bb0('0x52')]);_0x47687d[_0x8bb0('0x40')]=_[_0x8bb0('0x3c')](_0x5289ba[_0x8bb0('0x40')]);_0x47687d[_0x8bb0('0x3d')]=_[_0x8bb0('0x53')](_0x47687d[_0x8bb0('0x3e')],_0x47687d[_0x8bb0('0x40')]);_0xa026a2[_0x8bb0('0x3f')]=_['intersection'](_0x47687d[_0x8bb0('0x3e')],qs[_0x8bb0('0x66')](_0x5289ba[_0x8bb0('0x40')]['fields']));_0xa026a2[_0x8bb0('0x3f')]=_0xa026a2['attributes'][_0x8bb0('0x67')]?_0xa026a2[_0x8bb0('0x3f')]:_0x47687d['model'];if(!_0x5289ba['query'][_0x8bb0('0x41')](_0x8bb0('0x42'))){_0xa026a2[_0x8bb0('0x2a')]=qs[_0x8bb0('0x2a')](_0x5289ba[_0x8bb0('0x40')][_0x8bb0('0x2a')]);_0xa026a2[_0x8bb0('0x43')]=qs[_0x8bb0('0x43')](_0x5289ba[_0x8bb0('0x40')][_0x8bb0('0x43')]);}_0xa026a2[_0x8bb0('0x44')]=qs['sort'](_0x5289ba[_0x8bb0('0x40')][_0x8bb0('0x45')]);_0xa026a2['where']=qs[_0x8bb0('0x3d')](_['pick'](_0x5289ba[_0x8bb0('0x40')],_0x47687d[_0x8bb0('0x3d')]));_0xa026a2['where']['WhatsappAccountId']=_0x5c2986['id'];if(_0x5289ba[_0x8bb0('0x40')]['filter']){_0xa026a2['where']=_[_0x8bb0('0x48')](_0xa026a2[_0x8bb0('0x46')],{'$or':_['map'](_0xa026a2['attributes'],function(_0x3eee75){var _0x58a486={};_0x58a486[_0x3eee75]={'$like':'%'+_0x5289ba['query']['filter']+'%'};return _0x58a486;})});}_0xa026a2=_[_0x8bb0('0x48')]({},_0xa026a2,_0x5289ba[_0x8bb0('0x4a')]);return db['Disposition']['count']({'where':_0xa026a2['where']})[_0x8bb0('0x1c')](function(_0x41c5eb){_0x2cae13[_0x8bb0('0x2b')]=_0x41c5eb;if(_0x5289ba[_0x8bb0('0x40')][_0x8bb0('0x54')]){_0xa026a2[_0x8bb0('0x4c')]=[{'all':!![]}];}return db[_0x8bb0('0x65')]['findAll'](_0xa026a2);})[_0x8bb0('0x1c')](function(_0x597ae2){_0x2cae13[_0x8bb0('0x4e')]=_0x597ae2;return _0x2cae13;});}})[_0x8bb0('0x1c')](respondWithFilteredResult(_0x3c49b8,_0xa026a2))[_0x8bb0('0x4f')](handleError(_0x3c49b8,null));};exports[_0x8bb0('0x68')]=function(_0x340759,_0x2604e2,_0x5e95ee){return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x340759[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x2604e2,null))[_0x8bb0('0x1c')](function(_0xd7c7ff){if(_0xd7c7ff){return _0xd7c7ff[_0x8bb0('0x68')](_0x340759[_0x8bb0('0x40')][_0x8bb0('0x69')]);}})[_0x8bb0('0x1c')](respondWithStatusCode(_0x2604e2,null))[_0x8bb0('0x4f')](handleError(_0x2604e2,null));};exports[_0x8bb0('0x6a')]=function(_0x557306,_0x10f50f,_0x3ef685){if(_0x557306[_0x8bb0('0x57')]['id']){delete _0x557306[_0x8bb0('0x57')]['id'];}return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x557306[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x10f50f,null))['then'](function(_0x488b93){if(_0x488b93){_0x557306[_0x8bb0('0x57')][_0x8bb0('0x62')]=_0x488b93['id'];return db['CannedAnswer'][_0x8bb0('0x56')](_0x557306['body']);}})[_0x8bb0('0x1c')](respondWithResult(_0x10f50f,null))[_0x8bb0('0x4f')](handleError(_0x10f50f,null));};exports[_0x8bb0('0x6b')]=function(_0x3f69ca,_0x215df2,_0x5851a0){var _0x2c8b68={'raw':![],'where':{}};var _0x56cdb1={};var _0x5ab0a0={'count':0x0,'rows':[]};return db[_0x8bb0('0x4b')][_0x8bb0('0x64')]({'where':{'id':_0x3f69ca[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x215df2,null))[_0x8bb0('0x1c')](function(_0x4a7715){if(_0x4a7715){_0x56cdb1[_0x8bb0('0x3e')]=_[_0x8bb0('0x3c')](db[_0x8bb0('0x6c')][_0x8bb0('0x52')]);_0x56cdb1[_0x8bb0('0x40')]=_[_0x8bb0('0x3c')](_0x3f69ca[_0x8bb0('0x40')]);_0x56cdb1[_0x8bb0('0x3d')]=_[_0x8bb0('0x53')](_0x56cdb1[_0x8bb0('0x3e')],_0x56cdb1['query']);_0x2c8b68[_0x8bb0('0x3f')]=_[_0x8bb0('0x53')](_0x56cdb1[_0x8bb0('0x3e')],qs[_0x8bb0('0x66')](_0x3f69ca[_0x8bb0('0x40')][_0x8bb0('0x66')]));_0x2c8b68[_0x8bb0('0x3f')]=_0x2c8b68[_0x8bb0('0x3f')]['length']?_0x2c8b68[_0x8bb0('0x3f')]:_0x56cdb1[_0x8bb0('0x3e')];if(!_0x3f69ca['query'][_0x8bb0('0x41')](_0x8bb0('0x42'))){_0x2c8b68[_0x8bb0('0x2a')]=qs['limit'](_0x3f69ca[_0x8bb0('0x40')][_0x8bb0('0x2a')]);_0x2c8b68[_0x8bb0('0x43')]=qs[_0x8bb0('0x43')](_0x3f69ca['query'][_0x8bb0('0x43')]);}_0x2c8b68[_0x8bb0('0x44')]=qs[_0x8bb0('0x45')](_0x3f69ca[_0x8bb0('0x40')][_0x8bb0('0x45')]);_0x2c8b68[_0x8bb0('0x46')]=qs[_0x8bb0('0x3d')](_[_0x8bb0('0x6d')](_0x3f69ca[_0x8bb0('0x40')],_0x56cdb1[_0x8bb0('0x3d')]));_0x2c8b68['where'][_0x8bb0('0x62')]=_0x4a7715['id'];if(_0x3f69ca[_0x8bb0('0x40')][_0x8bb0('0x47')]){_0x2c8b68[_0x8bb0('0x46')]=_[_0x8bb0('0x48')](_0x2c8b68['where'],{'$or':_['map'](_0x2c8b68[_0x8bb0('0x3f')],function(_0x1f8032){var _0x49b0f9={};_0x49b0f9[_0x1f8032]={'$like':'%'+_0x3f69ca[_0x8bb0('0x40')][_0x8bb0('0x47')]+'%'};return _0x49b0f9;})});}_0x2c8b68=_[_0x8bb0('0x48')]({},_0x2c8b68,_0x3f69ca['options']);return db[_0x8bb0('0x6c')][_0x8bb0('0x2b')]({'where':_0x2c8b68[_0x8bb0('0x46')]})[_0x8bb0('0x1c')](function(_0xc1788f){_0x5ab0a0['count']=_0xc1788f;if(_0x3f69ca[_0x8bb0('0x40')][_0x8bb0('0x54')]){_0x2c8b68[_0x8bb0('0x4c')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x2c8b68);})[_0x8bb0('0x1c')](function(_0x4a2f08){_0x5ab0a0['rows']=_0x4a2f08;return _0x5ab0a0;});}})[_0x8bb0('0x1c')](respondWithFilteredResult(_0x215df2,_0x2c8b68))[_0x8bb0('0x4f')](handleError(_0x215df2,null));};exports[_0x8bb0('0x6e')]=function(_0x1bdd58,_0x20ac60,_0x2a28d7){return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x1bdd58[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x20ac60,null))['then'](function(_0x24df65){if(_0x24df65){return _0x24df65[_0x8bb0('0x6e')](_0x1bdd58[_0x8bb0('0x40')][_0x8bb0('0x69')]);}})[_0x8bb0('0x1c')](respondWithStatusCode(_0x20ac60,null))[_0x8bb0('0x4f')](handleError(_0x20ac60,null));};exports['addAgents']=function(_0x2f20ba,_0x4a708d,_0x47aee4){return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x2f20ba[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x4a708d,null))['then'](function(_0x578e77){if(_0x578e77){return _0x578e77[_0x8bb0('0x6f')](_0x2f20ba[_0x8bb0('0x57')][_0x8bb0('0x69')],_[_0x8bb0('0x70')](_0x2f20ba[_0x8bb0('0x57')],[_0x8bb0('0x69'),'id'])||{})[_0x8bb0('0x71')](function(_0x5f52d0){for(var _0x32ac92=0x0;_0x32ac92<_0x2f20ba[_0x8bb0('0x57')][_0x8bb0('0x69')][_0x8bb0('0x67')];_0x32ac92+=0x1){socket['emit'](_0x8bb0('0x72'),{'UserId':Number(_0x2f20ba[_0x8bb0('0x57')][_0x8bb0('0x69')][_0x32ac92]),'WhatsappAccountId':Number(_0x2f20ba[_0x8bb0('0x50')]['id'])});}return _0x5f52d0;});}})['then'](respondWithResult(_0x4a708d,null))[_0x8bb0('0x4f')](handleError(_0x4a708d,null));};exports['removeAgents']=function(_0xfe95d2,_0x224a8e,_0x4aa27d){return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0xfe95d2[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x224a8e,null))[_0x8bb0('0x1c')](function(_0x4737b7){if(_0x4737b7){return _0x4737b7[_0x8bb0('0x73')](_0xfe95d2[_0x8bb0('0x40')][_0x8bb0('0x69')])[_0x8bb0('0x1c')](function(){if(_['isArray'](_0xfe95d2[_0x8bb0('0x40')][_0x8bb0('0x69')])){for(var _0x53d18c=0x0;_0x53d18c<_0xfe95d2[_0x8bb0('0x40')][_0x8bb0('0x69')][_0x8bb0('0x67')];_0x53d18c+=0x1){socket['emit'](_0x8bb0('0x74'),{'UserId':Number(_0xfe95d2[_0x8bb0('0x40')][_0x8bb0('0x69')][_0x53d18c]),'WhatsappAccountId':Number(_0xfe95d2[_0x8bb0('0x50')]['id'])});}}else{socket['emit'](_0x8bb0('0x74'),{'UserId':Number(_0xfe95d2[_0x8bb0('0x40')]['ids']),'WhatsappAccountId':Number(_0xfe95d2[_0x8bb0('0x50')]['id'])});}});}})[_0x8bb0('0x1c')](respondWithStatusCode(_0x224a8e,null))[_0x8bb0('0x4f')](handleError(_0x224a8e,null));};exports[_0x8bb0('0x75')]=function(_0x141d2f,_0x465158,_0x4795a8){var _0x53ee9f={};var _0x3d4ede={};var _0x467792;var _0x1eada6;return db[_0x8bb0('0x4b')]['findOne']({'where':{'id':_0x141d2f[_0x8bb0('0x50')]['id']}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x465158,null))[_0x8bb0('0x1c')](function(_0x28ca35){if(_0x28ca35){_0x467792=_0x28ca35;_0x3d4ede[_0x8bb0('0x3e')]=_['keys'](db['User'][_0x8bb0('0x52')]);_0x3d4ede['query']=_['keys'](_0x141d2f[_0x8bb0('0x40')]);_0x3d4ede['filters']=_[_0x8bb0('0x53')](_0x3d4ede[_0x8bb0('0x3e')],_0x3d4ede[_0x8bb0('0x40')]);_0x53ee9f[_0x8bb0('0x3f')]=_[_0x8bb0('0x53')](_0x3d4ede[_0x8bb0('0x3e')],qs[_0x8bb0('0x66')](_0x141d2f['query']['fields']));_0x53ee9f['attributes']=_0x53ee9f[_0x8bb0('0x3f')][_0x8bb0('0x67')]?_0x53ee9f[_0x8bb0('0x3f')]:_0x3d4ede[_0x8bb0('0x3e')];_0x53ee9f[_0x8bb0('0x44')]=qs[_0x8bb0('0x45')](_0x141d2f[_0x8bb0('0x40')][_0x8bb0('0x45')]);_0x53ee9f[_0x8bb0('0x46')]=qs[_0x8bb0('0x3d')](_['pick'](_0x141d2f[_0x8bb0('0x40')],_0x3d4ede['filters']));if(_0x141d2f[_0x8bb0('0x40')][_0x8bb0('0x47')]){_0x53ee9f[_0x8bb0('0x46')]=_['merge'](_0x53ee9f[_0x8bb0('0x46')],{'$or':_[_0x8bb0('0x38')](_0x53ee9f[_0x8bb0('0x3f')],function(_0x4bcc3c){var _0x16676a={};_0x16676a[_0x4bcc3c]={'$like':'%'+_0x141d2f[_0x8bb0('0x40')][_0x8bb0('0x47')]+'%'};return _0x16676a;})});}_0x53ee9f=_['merge']({},_0x53ee9f,_0x141d2f[_0x8bb0('0x4a')]);return _0x467792[_0x8bb0('0x75')](_0x53ee9f);}})['then'](function(_0x18ca3d){if(_0x18ca3d){_0x1eada6=_0x18ca3d[_0x8bb0('0x67')];if(!_0x141d2f['query'][_0x8bb0('0x41')]('nolimit')){_0x53ee9f[_0x8bb0('0x2a')]=qs['limit'](_0x141d2f['query']['limit']);_0x53ee9f[_0x8bb0('0x43')]=qs[_0x8bb0('0x43')](_0x141d2f[_0x8bb0('0x40')][_0x8bb0('0x43')]);}return _0x467792[_0x8bb0('0x75')](_0x53ee9f);}})[_0x8bb0('0x1c')](function(_0x2c1a32){if(_0x2c1a32){return _0x2c1a32?{'count':_0x1eada6,'rows':_0x2c1a32}:null;}})['then'](respondWithResult(_0x465158,null))[_0x8bb0('0x4f')](handleError(_0x465158,null));};exports[_0x8bb0('0x76')]=function(_0x5b16c5,_0x46f5f9,_0x5a053e){return db['WhatsappAccount']['findOne']({'where':{'id':_0x5b16c5['params']['id']}})['then'](handleEntityNotFound(_0x46f5f9,null))['then'](function(_0x304411){if(_0x304411){return db[_0x8bb0('0x77')][_0x8bb0('0x78')](function(_0x3cd456){return db[_0x8bb0('0x79')]['destroy']({'where':{'WhatsappAccountId':_0x5b16c5[_0x8bb0('0x50')]['id']},'transaction':_0x3cd456})[_0x8bb0('0x1c')](function(_0x130fc0){var _0x483066=_[_0x8bb0('0x38')](_0x5b16c5[_0x8bb0('0x57')],function(_0x36303f){_0x36303f[_0x8bb0('0x62')]=_0x5b16c5[_0x8bb0('0x50')]['id'];return _0x36303f;});return db[_0x8bb0('0x79')][_0x8bb0('0x7a')](_0x483066,{'transaction':_0x3cd456});});})[_0x8bb0('0x1c')](function(){return db[_0x8bb0('0x79')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x5b16c5['params']['id']},'order':_0x8bb0('0x7b')});});}})[_0x8bb0('0x1c')](respondWithResult(_0x46f5f9,null))['catch'](handleError(_0x46f5f9,null));};exports[_0x8bb0('0x7c')]=function(_0x544a46,_0x3a52e2,_0x168abe){var _0x5d2ee6={};var _0x4fa999={};var _0x157bc6;var _0x32f1cf;return db[_0x8bb0('0x4b')][_0x8bb0('0x64')]({'where':{'id':_0x544a46[_0x8bb0('0x50')]['id']}})['then'](handleEntityNotFound(_0x3a52e2,null))[_0x8bb0('0x1c')](function(_0xea0570){if(_0xea0570){_0x157bc6=_0xea0570;_0x4fa999['model']=_[_0x8bb0('0x3c')](db[_0x8bb0('0x79')][_0x8bb0('0x52')]);_0x4fa999['query']=_[_0x8bb0('0x3c')](_0x544a46[_0x8bb0('0x40')]);_0x4fa999[_0x8bb0('0x3d')]=_['intersection'](_0x4fa999[_0x8bb0('0x3e')],_0x4fa999[_0x8bb0('0x40')]);_0x5d2ee6['attributes']=_[_0x8bb0('0x53')](_0x4fa999['model'],qs['fields'](_0x544a46[_0x8bb0('0x40')]['fields']));_0x5d2ee6[_0x8bb0('0x3f')]=_0x5d2ee6[_0x8bb0('0x3f')]['length']?_0x5d2ee6[_0x8bb0('0x3f')]:_0x4fa999[_0x8bb0('0x3e')];_0x5d2ee6['order']=qs['sort'](_0x544a46[_0x8bb0('0x40')][_0x8bb0('0x45')]);_0x5d2ee6[_0x8bb0('0x46')]=qs[_0x8bb0('0x3d')](_['pick'](_0x544a46[_0x8bb0('0x40')],_0x4fa999[_0x8bb0('0x3d')]));if(_0x544a46[_0x8bb0('0x40')][_0x8bb0('0x47')]){_0x5d2ee6[_0x8bb0('0x46')]=_[_0x8bb0('0x48')](_0x5d2ee6[_0x8bb0('0x46')],{'$or':_['map'](_0x5d2ee6[_0x8bb0('0x3f')],function(_0x4df02d){var _0x56fa96={};_0x56fa96[_0x4df02d]={'$like':'%'+_0x544a46[_0x8bb0('0x40')][_0x8bb0('0x47')]+'%'};return _0x56fa96;})});}_0x5d2ee6=_['merge']({},_0x5d2ee6,_0x544a46[_0x8bb0('0x4a')]);return _0x157bc6[_0x8bb0('0x7c')](_0x5d2ee6);}})['then'](function(_0x5299cf){if(_0x5299cf){_0x32f1cf=_0x5299cf[_0x8bb0('0x67')];if(!_0x544a46['query']['hasOwnProperty']('nolimit')){_0x5d2ee6['limit']=qs[_0x8bb0('0x2a')](_0x544a46[_0x8bb0('0x40')]['limit']);_0x5d2ee6['offset']=qs[_0x8bb0('0x43')](_0x544a46['query'][_0x8bb0('0x43')]);}return _0x157bc6['getApplications'](_0x5d2ee6);}})[_0x8bb0('0x1c')](function(_0x235ac8){if(_0x235ac8){return _0x235ac8?{'count':_0x32f1cf,'rows':_0x235ac8}:null;}})[_0x8bb0('0x1c')](respondWithResult(_0x3a52e2,null))[_0x8bb0('0x4f')](handleError(_0x3a52e2,null));};exports['notify']=function(_0x507be8,_0x415fa3,_0x5cc60a){var _0xf70f29={'channel':'whatsapp'};var _0x477427=[];var _0x200f9a=[];var _0x282a97={};return db['WhatsappAccount'][_0x8bb0('0x55')]({'where':{'id':_0x507be8[_0x8bb0('0x50')]['id']},'include':[{'model':db['WhatsappApplication'],'as':'Applications'}]})['then'](handleEntityNotFound(_0x415fa3,null))[_0x8bb0('0x1c')](function(_0x349c2){_0xf70f29['account']=_0x349c2;_0xf70f29[_0x8bb0('0x7d')]=_[_0x8bb0('0x7e')](_0x349c2['Applications'],[_0x8bb0('0x7b')],[_0x8bb0('0x7f')]);if(_0xf70f29['account'][_0x8bb0('0x80')]){delete _0xf70f29['account']['Applications'];}return db['CmContact']['describe']();})[_0x8bb0('0x1c')](function(_0x5229bc){if(!_0x5229bc){throw new db[(_0x8bb0('0x81'))]['ValidationError']('no\x20available\x20attributes');}_0x477427=_[_0x8bb0('0x82')](_[_0x8bb0('0x3c')](_0x5229bc),[_0x8bb0('0x83'),_0x8bb0('0x84')]);_0x200f9a=_[_0x8bb0('0x82')](_[_0x8bb0('0x3c')](_0x5229bc),[_0x8bb0('0x83'),'updatedAt',_0x8bb0('0x85'),'ListId']);_0xf70f29['body']={'mapKey':'mobile'};if(_0xf70f29[_0x8bb0('0x86')][_0x8bb0('0x3a')]&&_0xf70f29['account'][_0x8bb0('0x3a')]==='twilio'){_0xf70f29['body']['from']=_0x507be8[_0x8bb0('0x57')]['From'][_0x8bb0('0x87')](_0x8bb0('0x88'),'');_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x57')]=_0x507be8['body'][_0x8bb0('0x89')];_0xf70f29['body']['messageId']=_0x507be8['body'][_0x8bb0('0x8a')];}if(_0xf70f29[_0x8bb0('0x57')]['id']){delete _0xf70f29[_0x8bb0('0x57')]['id'];}if(_[_0x8bb0('0x8b')](_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x8c')])){throw new db[(_0x8bb0('0x81'))][(_0x8bb0('0x8d'))](_0x8bb0('0x8e'));}if(_[_0x8bb0('0x8b')](_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x57')])||_0xf70f29[_0x8bb0('0x57')]['body']===''){throw new db[(_0x8bb0('0x81'))][(_0x8bb0('0x8d'))](_0x8bb0('0x8f'));}if(_[_0x8bb0('0x8b')](_0xf70f29['body'][_0x8bb0('0x90')])){throw new db['Sequelize'][(_0x8bb0('0x8d'))](_0x8bb0('0x91')+_0x200f9a);}if(!_[_0x8bb0('0x92')](_0x200f9a,_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x90')])){throw new db[(_0x8bb0('0x81'))][(_0x8bb0('0x8d'))](_0x8bb0('0x93')+_0x200f9a);}_0x282a97[_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x90')]]=_0xf70f29['body'][_0x8bb0('0x8c')];return db['CmList']['find']({'where':{'id':_0xf70f29[_0x8bb0('0x86')][_0x8bb0('0x94')]},'include':[{'model':db[_0x8bb0('0x95')],'as':'Contacts','where':_0x282a97,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x8bb0('0x1c')](handleEntityNotFound(_0x415fa3,null))['then'](function(_0x5785fb){if(_0x5785fb){_0xf70f29[_0x8bb0('0x96')]=_[_0x8bb0('0x70')](_0x5785fb,[_0x8bb0('0x97')]);if(_0x5785fb[_0x8bb0('0x97')][_0x8bb0('0x67')]){return _0x5785fb['Contacts'][0x0];}var _0x208fda=_['defaults'](_0xf70f29[_0x8bb0('0x57')],{'firstName':_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x8c')],'ListId':_0x5785fb['id']});_0x208fda[_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x90')]]=_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x8c')];return db[_0x8bb0('0x95')]['create'](_0x208fda,{'fields':_0x477427,'raw':!![]});}})[_0x8bb0('0x1c')](handleEntityNotFound(_0x415fa3,null))[_0x8bb0('0x1c')](function(_0x5bfabc){if(_0x5bfabc){_0xf70f29[_0x8bb0('0x98')]=_0x5bfabc;var _0x2b365c={'ContactId':_0x5bfabc['id'],'phone':_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x8c')],'WhatsappAccountId':_0x507be8[_0x8bb0('0x50')]['id']};var _0x2ea342={'ContactId':_0x5bfabc['id'],'WhatsappAccountId':_0x507be8['params']['id'],'closed':![]};return db['WhatsappInteraction'][_0x8bb0('0x55')]({'where':_0x2ea342})[_0x8bb0('0x1c')](function(_0x54520f){if(_0x54520f){return[_0x54520f,![]];}return db[_0x8bb0('0x99')][_0x8bb0('0x56')](_0x2b365c)[_0x8bb0('0x1c')](function(_0x1a7157){return[_0x1a7157,!![]];});});}})[_0x8bb0('0x71')](function(_0x502716,_0x520ea2){_0xf70f29['interaction']=_0x502716[_0x8bb0('0x33')]({'plain':!![]});_0xf70f29['interaction'][_0x8bb0('0x9a')]=![];if(_0x520ea2){if(_0xf70f29[_0x8bb0('0x86')][_0x8bb0('0x9b')]){_0xf70f29[_0x8bb0('0x7d')][_0x8bb0('0x9c')]({'id':0x0,'priority':_0xf70f29[_0x8bb0('0x7d')][_0x8bb0('0x67')]+0x1,'app':_0x8bb0('0x9d'),'appdata':_0x8bb0('0x9e'),'interval':_0x8bb0('0x9f')});}_0xf70f29[_0x8bb0('0xa0')][_0x8bb0('0x9a')]=!![];}return db[_0x8bb0('0xa1')][_0x8bb0('0x56')]({'phone':_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x8c')],'messageId':_0xf70f29[_0x8bb0('0x57')]['messageId'],'body':_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0x57')],'WhatsappAccountId':_0x507be8[_0x8bb0('0x50')]['id'],'WhatsappInteractionId':_0x502716['id'],'direction':'in','ContactId':_0x502716[_0x8bb0('0xa2')],'AttachmentId':_0xf70f29[_0x8bb0('0x57')][_0x8bb0('0xa3')]});})[_0x8bb0('0x1c')](function(_0x591571){_0xf70f29['message']=_0x591571;if(_0xf70f29[_0x8bb0('0xa0')][_0x8bb0('0xa4')]){return db[_0x8bb0('0xa5')]['find']({'attributes':['id','name'],'where':{'id':_0xf70f29['interaction'][_0x8bb0('0xa4')]}})[_0x8bb0('0x1c')](function(_0x9118ec){if(_0x9118ec){_0xf70f29[_0x8bb0('0x7d')][_0x8bb0('0xa6')]({'id':0x0,'priority':0x0,'app':_0x8bb0('0xa7'),'appdata':_0x9118ec[_0x8bb0('0x34')]+','+(_0xf70f29[_0x8bb0('0x86')][_0x8bb0('0xa8')]||0xa),'interval':_0x8bb0('0x9f')});}return respondWithRpcPromise('Start',_0x8bb0('0xa9'),_0xf70f29);});}return respondWithRpcPromise('Start',_0x8bb0('0xa9'),_0xf70f29);})[_0x8bb0('0x1c')](function(_0x2920ed){if(_0x2920ed){var _0x3099da=0xc8;var _0x1d2158=_0x8bb0('0xaa');logger[_0x8bb0('0x1d')](_0x8bb0('0x20'),_0x1d2158,_0x3099da,_0x8bb0('0xab'));logger[_0x8bb0('0x1f')](_0x8bb0('0xac'),_0x1d2158,_0x3099da,_0x8bb0('0xab'),JSON[_0x8bb0('0xad')](_0x2920ed));if(_0xf70f29[_0x8bb0('0x86')][_0x8bb0('0x3a')]===_0x8bb0('0xae')){return _0x415fa3[_0x8bb0('0x27')](_0x3099da)[_0x8bb0('0xaf')](_0x8bb0('0xb0'),_0x8bb0('0xb1'))[_0x8bb0('0x35')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x415fa3[_0x8bb0('0x27')](_0x3099da)[_0x8bb0('0x2d')](_0x2920ed);}}})[_0x8bb0('0x4f')](handleError(_0x415fa3,null));};exports[_0x8bb0('0x35')]=function(_0x17b165,_0x5ec6ba,_0x1ac252){var _0x4f4194,_0x124a8f,_0x24bd9b;if(_['isNil'](_0x17b165[_0x8bb0('0x57')]['body'])||_0x17b165[_0x8bb0('0x57')]['body']===''){throw new db[(_0x8bb0('0x81'))][(_0x8bb0('0x8d'))](_0x8bb0('0x8f'));}if(_[_0x8bb0('0x8b')](_0x17b165['body']['to'])){throw new db['Sequelize'][(_0x8bb0('0x8d'))](_0x8bb0('0xb2'));}_0x4f4194=_0x17b165[_0x8bb0('0x57')]['to'];return db[_0x8bb0('0x4b')][_0x8bb0('0x55')]({'where':{'id':_0x17b165[_0x8bb0('0x50')]['id']},'include':[{'model':db[_0x8bb0('0xb3')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x4f4194},'limit':0x1,'order':[['updatedAt',_0x8bb0('0xb4')]]}]}]})[_0x8bb0('0x1c')](handleEntityNotFound(_0x5ec6ba,null))[_0x8bb0('0x1c')](function(_0x5b3748){if(_0x5b3748&&_0x5b3748['List']){_0x124a8f=_0x5b3748[_0x8bb0('0x33')]({'plain':!![]});if(_0x124a8f['List']&&_0x124a8f['List'][_0x8bb0('0x97')][_0x8bb0('0x67')]){return _0x124a8f[_0x8bb0('0xb5')]['Contacts'][0x0];}return db[_0x8bb0('0x95')]['create'](_[_0x8bb0('0x18')](_0x17b165['body'],{'firstName':_0x4f4194,'mobile':_0x4f4194,'phone':_0x4f4194,'ListId':_0x124a8f[_0x8bb0('0x94')]}));}})['then'](handleEntityNotFound(_0x5ec6ba,null))['then'](function(_0x938e09){if(_0x938e09){_0x24bd9b=_0x938e09;return db[_0x8bb0('0x99')][_0x8bb0('0x55')]({'where':{'ContactId':_0x24bd9b['id'],'closed':![],'WhatsappAccountId':_0x124a8f['id']}})[_0x8bb0('0x1c')](function(_0x2272cd){if(_0x2272cd){return[_0x2272cd,![]];}return db['WhatsappInteraction']['create']({'UserId':_0x17b165[_0x8bb0('0x58')]['id'],'ContactId':_0x24bd9b['id'],'WhatsappAccountId':_0x124a8f['id'],'phone':_0x4f4194,'firstMsgDirection':_0x8bb0('0xb6'),'Messages':[_['merge'](_0x17b165[_0x8bb0('0x57')],{'read':![],'body':_0x17b165['body'][_0x8bb0('0x57')],'phone':_0x4f4194,'WhatsappAccountId':_0x124a8f['id'],'UserId':_0x17b165['user']['id'],'ContactId':_0x24bd9b['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x8bb0('0xb7')}]})[_0x8bb0('0x1c')](function(_0x306768){return[_0x306768,!![]];});});}})[_0x8bb0('0x71')](function(_0x5469d1,_0x17694f){if(_0x17694f){return _0x5469d1;}return db['WhatsappMessage'][_0x8bb0('0x56')](_[_0x8bb0('0x48')](_0x17b165[_0x8bb0('0x57')],{'read':![],'body':_0x17b165[_0x8bb0('0x57')][_0x8bb0('0x57')],'phone':_0x4f4194,'WhatsappAccountId':_0x124a8f['id'],'WhatsappInteractionId':_0x5469d1['id'],'UserId':_0x17b165[_0x8bb0('0x58')]['id'],'ContactId':_0x24bd9b['id']}))[_0x8bb0('0x1c')](function(_0x255391){_0x5469d1[_0x8bb0('0xb8')][_0x8bb0('0xb7')]=[];_0x5469d1['dataValues'][_0x8bb0('0xb7')][_0x8bb0('0x9c')](_0x255391['dataValues']);return _0x5469d1;});})[_0x8bb0('0x1c')](respondWithResult(_0x5ec6ba,null))['catch'](handleError(_0x5ec6ba,null));};
\ No newline at end of file
index db9df36..1880c7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2fb=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','save'];(function(_0x4a31ad,_0x138d9f){var _0x2bf5ef=function(_0x1be4fc){while(--_0x1be4fc){_0x4a31ad['push'](_0x4a31ad['shift']());}};_0x2bf5ef(++_0x138d9f);}(_0xd2fb,0x13b));var _0xbd2f=function(_0x3ea660,_0x468542){_0x3ea660=_0x3ea660-0x0;var _0x25c417=_0xd2fb[_0x3ea660];return _0x25c417;};'use strict';var EventEmitter=require(_0xbd2f('0x0'));var WhatsappAccount=require(_0xbd2f('0x1'))['db'][_0xbd2f('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xbd2f('0x3')](0x0);var events={'afterCreate':_0xbd2f('0x4'),'afterUpdate':_0xbd2f('0x5'),'afterDestroy':_0xbd2f('0x6')};function emitEvent(_0x338368){return function(_0x14fc20,_0x5a40a9,_0x244445){WhatsappAccountEvents['emit'](_0x338368+':'+_0x14fc20['id'],_0x14fc20);WhatsappAccountEvents[_0xbd2f('0x7')](_0x338368,_0x14fc20);_0x244445(null);};}for(var e in events){if(events[_0xbd2f('0x8')](e)){var event=events[e];WhatsappAccount[_0xbd2f('0x9')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x6fa5=['WhatsappAccount','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3f953b,_0x3b4ce3){var _0x38b672=function(_0x4e21c0){while(--_0x4e21c0){_0x3f953b['push'](_0x3f953b['shift']());}};_0x38b672(++_0x3b4ce3);}(_0x6fa5,0x8a));var _0x56fa=function(_0x1f3e22,_0x4ec3e3){_0x1f3e22=_0x1f3e22-0x0;var _0x8b9f1a=_0x6fa5[_0x1f3e22];return _0x8b9f1a;};'use strict';var EventEmitter=require(_0x56fa('0x0'));var WhatsappAccount=require(_0x56fa('0x1'))['db'][_0x56fa('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x56fa('0x3'),'afterUpdate':_0x56fa('0x4'),'afterDestroy':_0x56fa('0x5')};function emitEvent(_0x4879c7){return function(_0x2a8288,_0x2fcc38,_0x1eaed3){WhatsappAccountEvents[_0x56fa('0x6')](_0x4879c7+':'+_0x2a8288['id'],_0x2a8288);WhatsappAccountEvents[_0x56fa('0x6')](_0x4879c7,_0x2a8288);_0x1eaed3(null);};}for(var e in events){if(events[_0x56fa('0x7')](e)){var event=events[e];WhatsappAccount[_0x56fa('0x8')](e,emitEvent(event));}}module[_0x56fa('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
index 1dc6b5e..9b613ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3e6=['WhatsappAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x4cfbb9,_0x111429){var _0x3812db=function(_0x2ce00a){while(--_0x2ce00a){_0x4cfbb9['push'](_0x4cfbb9['shift']());}};_0x3812db(++_0x111429);}(_0xe3e6,0x135));var _0x6e3e=function(_0x3bf925,_0x4dd8e4){_0x3bf925=_0x3bf925-0x0;var _0x2128a1=_0xe3e6[_0x3bf925];return _0x2128a1;};'use strict';var _=require(_0x6e3e('0x0'));var util=require(_0x6e3e('0x1'));var logger=require(_0x6e3e('0x2'))(_0x6e3e('0x3'));var moment=require(_0x6e3e('0x4'));var BPromise=require(_0x6e3e('0x5'));var rp=require(_0x6e3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6e3e('0x7'));var config=require(_0x6e3e('0x8'));var attributes=require('./whatsappAccount.attributes');module[_0x6e3e('0x9')]=function(_0x55d3d0,_0x4511f3){return _0x55d3d0['define'](_0x6e3e('0xa'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x94ee=['moment','request-promise','path','../../config/environment','./whatsappAccount.attributes','define','WhatsappAccount','whatsapp_accounts','util','../../config/logger','api'];(function(_0x474e6c,_0x80e7dc){var _0x3c143b=function(_0x56741f){while(--_0x56741f){_0x474e6c['push'](_0x474e6c['shift']());}};_0x3c143b(++_0x80e7dc);}(_0x94ee,0x1b5));var _0xe94e=function(_0x58e050,_0x26a125){_0x58e050=_0x58e050-0x0;var _0x4a3040=_0x94ee[_0x58e050];return _0x4a3040;};'use strict';var _=require('lodash');var util=require(_0xe94e('0x0'));var logger=require(_0xe94e('0x1'))(_0xe94e('0x2'));var moment=require(_0xe94e('0x3'));var BPromise=require('bluebird');var rp=require(_0xe94e('0x4'));var fs=require('fs');var path=require(_0xe94e('0x5'));var rimraf=require('rimraf');var config=require(_0xe94e('0x6'));var attributes=require(_0xe94e('0x7'));module['exports']=function(_0x45600b,_0x46122f){return _0x45600b[_0xe94e('0x8')](_0xe94e('0x9'),attributes,{'tableName':_0xe94e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dc8728..aed35d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc24e=['then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map','model','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request'];(function(_0x56b545,_0x579033){var _0x3c5526=function(_0x587ef0){while(--_0x587ef0){_0x56b545['push'](_0x56b545['shift']());}};_0x3c5526(++_0x579033);}(_0xc24e,0x146));var _0xec24=function(_0x202234,_0x3db61b){_0x202234=_0x202234-0x0;var _0x1504e3=_0xc24e[_0x202234];return _0x1504e3;};'use strict';var _=require(_0xec24('0x0'));var util=require(_0xec24('0x1'));var moment=require('moment');var BPromise=require(_0xec24('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xec24('0x3'));var db=require(_0xec24('0x4'))['db'];var utils=require(_0xec24('0x5'));var logger=require(_0xec24('0x6'))(_0xec24('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xec24('0x8')][_0xec24('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xec24('0xa')],{'host':_0xec24('0xb'),'port':0x18eb});var socket=require(_0xec24('0xc'))(new Redis(config[_0xec24('0xa')]));require(_0xec24('0xd'))[_0xec24('0xe')](socket);function respondWithRpcPromise(_0x3c8ba4,_0x331e4f,_0xa8c360){return new BPromise(function(_0x2a627a,_0x4a50a2){return client[_0xec24('0xf')](_0x3c8ba4,_0xa8c360)[_0xec24('0x10')](function(_0x9d95a){logger[_0xec24('0x11')](_0xec24('0x12'),_0x331e4f,_0xec24('0x13'));logger[_0xec24('0x14')](_0xec24('0x15'),_0x331e4f,_0xec24('0x13'),JSON[_0xec24('0x16')](_0x9d95a));if(_0x9d95a[_0xec24('0x17')]){if(_0x9d95a[_0xec24('0x17')][_0xec24('0x18')]===0x1f4){logger[_0xec24('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x331e4f,_0x9d95a[_0xec24('0x17')][_0xec24('0x19')]);return _0x4a50a2(_0x9d95a[_0xec24('0x17')][_0xec24('0x19')]);}logger[_0xec24('0x17')](_0xec24('0x12'),_0x331e4f,_0x9d95a['error'][_0xec24('0x19')]);return _0x2a627a(_0x9d95a[_0xec24('0x17')][_0xec24('0x19')]);}else{logger[_0xec24('0x11')](_0xec24('0x12'),_0x331e4f,_0xec24('0x13'));_0x2a627a(_0x9d95a[_0xec24('0x1a')]['message']);}})[_0xec24('0x1b')](function(_0x7f70e2){logger[_0xec24('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x331e4f,_0x7f70e2);_0x4a50a2(_0x7f70e2);});});}exports[_0xec24('0x1c')]=function(_0x27d895){var _0x3fe528=this;return new Promise(function(_0x137e8e,_0x5552f9){return db[_0xec24('0x1d')][_0xec24('0x1e')]({'raw':_0x27d895[_0xec24('0x1f')]?_0x27d895[_0xec24('0x1f')][_0xec24('0x20')]===undefined?!![]:![]:!![],'where':_0x27d895[_0xec24('0x1f')]?_0x27d895[_0xec24('0x1f')][_0xec24('0x21')]||null:null,'attributes':_0x27d895['options']?_0x27d895[_0xec24('0x1f')][_0xec24('0x22')]||null:null,'include':_0x27d895[_0xec24('0x1f')]?_0x27d895[_0xec24('0x1f')][_0xec24('0x23')]?_[_0xec24('0x24')](_0x27d895[_0xec24('0x1f')][_0xec24('0x23')],function(_0x57736e){return{'model':db[_0x57736e[_0xec24('0x25')]],'as':_0x57736e['as'],'attributes':_0x57736e[_0xec24('0x22')],'include':_0x57736e[_0xec24('0x23')]?_[_0xec24('0x24')](_0x57736e['include'],function(_0x366c21){return{'model':db[_0x366c21[_0xec24('0x25')]],'as':_0x366c21['as'],'attributes':_0x366c21['attributes'],'include':_0x366c21[_0xec24('0x23')]?_[_0xec24('0x24')](_0x366c21[_0xec24('0x23')],function(_0x1ac502){return{'model':db[_0x1ac502[_0xec24('0x25')]],'as':_0x1ac502['as'],'attributes':_0x1ac502[_0xec24('0x22')]};}):[]};}):[]};}):[]:[]})[_0xec24('0x10')](function(_0x583851){logger[_0xec24('0x11')](_0xec24('0x1c'),_0x27d895);logger[_0xec24('0x14')](_0xec24('0x1c'),_0x27d895,JSON['stringify'](_0x583851));_0x137e8e(_0x583851);})[_0xec24('0x1b')](function(_0x1d10e){logger[_0xec24('0x17')](_0xec24('0x1c'),_0x1d10e['message'],_0x27d895);_0x5552f9(_0x3fe528[_0xec24('0x17')](0x1f4,_0x1d10e['message']));});});};
\ No newline at end of file
+var _0x3cdd=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','model','map','lodash','util','moment','bluebird'];(function(_0x53f87e,_0xa910a1){var _0x34c991=function(_0x125626){while(--_0x125626){_0x53f87e['push'](_0x53f87e['shift']());}};_0x34c991(++_0xa910a1);}(_0x3cdd,0xb5));var _0xd3cd=function(_0x31490b,_0x4ec935){_0x31490b=_0x31490b-0x0;var _0x11ea6f=_0x3cdd[_0x31490b];return _0x11ea6f;};'use strict';var _=require(_0xd3cd('0x0'));var util=require(_0xd3cd('0x1'));var moment=require(_0xd3cd('0x2'));var BPromise=require(_0xd3cd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd3cd('0x4'))['db'];var utils=require(_0xd3cd('0x5'));var logger=require(_0xd3cd('0x6'))(_0xd3cd('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd3cd('0x8')][_0xd3cd('0x9')]({'port':0x232a});config['redis']=_[_0xd3cd('0xa')](config[_0xd3cd('0xb')],{'host':_0xd3cd('0xc'),'port':0x18eb});var socket=require(_0xd3cd('0xd'))(new Redis(config[_0xd3cd('0xb')]));require(_0xd3cd('0xe'))[_0xd3cd('0xf')](socket);function respondWithRpcPromise(_0x40f06c,_0x66bd9d,_0x1cf7ed){return new BPromise(function(_0x41938d,_0x1713cb){return client[_0xd3cd('0x10')](_0x40f06c,_0x1cf7ed)[_0xd3cd('0x11')](function(_0x18bb3f){logger[_0xd3cd('0x12')](_0xd3cd('0x13'),_0x66bd9d,_0xd3cd('0x14'));logger[_0xd3cd('0x15')](_0xd3cd('0x16'),_0x66bd9d,'request\x20sent',JSON[_0xd3cd('0x17')](_0x18bb3f));if(_0x18bb3f[_0xd3cd('0x18')]){if(_0x18bb3f['error']['code']===0x1f4){logger[_0xd3cd('0x18')](_0xd3cd('0x13'),_0x66bd9d,_0x18bb3f[_0xd3cd('0x18')][_0xd3cd('0x19')]);return _0x1713cb(_0x18bb3f[_0xd3cd('0x18')][_0xd3cd('0x19')]);}logger[_0xd3cd('0x18')](_0xd3cd('0x13'),_0x66bd9d,_0x18bb3f[_0xd3cd('0x18')][_0xd3cd('0x19')]);return _0x41938d(_0x18bb3f[_0xd3cd('0x18')][_0xd3cd('0x19')]);}else{logger[_0xd3cd('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x66bd9d,'request\x20sent');_0x41938d(_0x18bb3f['result'][_0xd3cd('0x19')]);}})[_0xd3cd('0x1a')](function(_0x3ff88e){logger[_0xd3cd('0x18')](_0xd3cd('0x13'),_0x66bd9d,_0x3ff88e);_0x1713cb(_0x3ff88e);});});}exports[_0xd3cd('0x1b')]=function(_0x2425d8){var _0x241e33=this;return new Promise(function(_0x17b6e0,_0x2e43ac){return db[_0xd3cd('0x1c')][_0xd3cd('0x1d')]({'raw':_0x2425d8[_0xd3cd('0x1e')]?_0x2425d8[_0xd3cd('0x1e')][_0xd3cd('0x1f')]===undefined?!![]:![]:!![],'where':_0x2425d8[_0xd3cd('0x1e')]?_0x2425d8['options'][_0xd3cd('0x20')]||null:null,'attributes':_0x2425d8[_0xd3cd('0x1e')]?_0x2425d8['options'][_0xd3cd('0x21')]||null:null,'include':_0x2425d8[_0xd3cd('0x1e')]?_0x2425d8['options']['include']?_['map'](_0x2425d8['options'][_0xd3cd('0x22')],function(_0x1b863c){return{'model':db[_0x1b863c['model']],'as':_0x1b863c['as'],'attributes':_0x1b863c[_0xd3cd('0x21')],'include':_0x1b863c[_0xd3cd('0x22')]?_['map'](_0x1b863c[_0xd3cd('0x22')],function(_0x2598a3){return{'model':db[_0x2598a3[_0xd3cd('0x23')]],'as':_0x2598a3['as'],'attributes':_0x2598a3[_0xd3cd('0x21')],'include':_0x2598a3['include']?_[_0xd3cd('0x24')](_0x2598a3[_0xd3cd('0x22')],function(_0x259740){return{'model':db[_0x259740['model']],'as':_0x259740['as'],'attributes':_0x259740[_0xd3cd('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2364ab){logger[_0xd3cd('0x12')]('ShowWhatsappAccount',_0x2425d8);logger[_0xd3cd('0x15')](_0xd3cd('0x1b'),_0x2425d8,JSON['stringify'](_0x2364ab));_0x17b6e0(_0x2364ab);})['catch'](function(_0x9b0910){logger[_0xd3cd('0x18')]('ShowWhatsappAccount',_0x9b0910[_0xd3cd('0x19')],_0x2425d8);_0x2e43ac(_0x241e33[_0xd3cd('0x18')](0x1f4,_0x9b0910['message']));});});};
\ No newline at end of file
index 1ad1d12..d52223d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2652=['register','whatsappAccount:','./whatsappAccount.events','save','remove','update','emit'];(function(_0x237815,_0x1ef2b0){var _0x5498ee=function(_0x5d0f6e){while(--_0x5d0f6e){_0x237815['push'](_0x237815['shift']());}};_0x5498ee(++_0x1ef2b0);}(_0x2652,0x152));var _0x2265=function(_0x55446e,_0x147cc9){_0x55446e=_0x55446e-0x0;var _0x43942b=_0x2652[_0x55446e];return _0x43942b;};'use strict';var WhatsappAccountEvents=require(_0x2265('0x0'));var events=[_0x2265('0x1'),_0x2265('0x2'),_0x2265('0x3')];function createListener(_0x4b6c63,_0x895512){return function(_0x3e535b){_0x895512[_0x2265('0x4')](_0x4b6c63,_0x3e535b);};}function removeListener(_0x3dafbf,_0x2378dc){return function(){WhatsappAccountEvents['removeListener'](_0x3dafbf,_0x2378dc);};}exports[_0x2265('0x5')]=function(_0xa43c88){for(var _0x8fc50d=0x0,_0xa2404e=events['length'];_0x8fc50d<_0xa2404e;_0x8fc50d++){var _0x277845=events[_0x8fc50d];var _0x414cf1=createListener(_0x2265('0x6')+_0x277845,_0xa43c88);WhatsappAccountEvents['on'](_0x277845,_0x414cf1);}};
\ No newline at end of file
+var _0x15e2=['update','emit','register','length','save'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x15e2,0x112));var _0x215e=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0x15e2[_0x24259d];return _0x5a701;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x215e('0x0'),'remove',_0x215e('0x1')];function createListener(_0x3c2109,_0x469942){return function(_0x5049cb){_0x469942[_0x215e('0x2')](_0x3c2109,_0x5049cb);};}function removeListener(_0x57f1cb,_0x45f056){return function(){WhatsappAccountEvents['removeListener'](_0x57f1cb,_0x45f056);};}exports[_0x215e('0x3')]=function(_0x51037a){for(var _0x565d0c=0x0,_0x4feb5a=events[_0x215e('0x4')];_0x565d0c<_0x4feb5a;_0x565d0c++){var _0x10b1b6=events[_0x565d0c];var _0x24c1f4=createListener('whatsappAccount:'+_0x10b1b6,_0x51037a);WhatsappAccountEvents['on'](_0x10b1b6,_0x24c1f4);}};
\ No newline at end of file
index 6be1576..838aa8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f8e=['delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','index','/:id','isAuthenticated','post','put','update'];(function(_0x48f4f6,_0x1136e2){var _0x3eb169=function(_0x438278){while(--_0x438278){_0x48f4f6['push'](_0x48f4f6['shift']());}};_0x3eb169(++_0x1136e2);}(_0x1f8e,0xeb));var _0xe1f8=function(_0x1e6e4e,_0x2b1b09){_0x1e6e4e=_0x1e6e4e-0x0;var _0x3d746b=_0x1f8e[_0x1e6e4e];return _0x3d746b;};'use strict';var multer=require(_0xe1f8('0x0'));var util=require(_0xe1f8('0x1'));var path=require(_0xe1f8('0x2'));var timeout=require(_0xe1f8('0x3'));var express=require(_0xe1f8('0x4'));var router=express[_0xe1f8('0x5')]();var fs_extra=require(_0xe1f8('0x6'));var auth=require(_0xe1f8('0x7'));var interaction=require(_0xe1f8('0x8'));var config=require('../../config/environment');var controller=require(_0xe1f8('0x9'));router[_0xe1f8('0xa')]('/',auth['isAuthenticated'](),controller[_0xe1f8('0xb')]);router[_0xe1f8('0xa')](_0xe1f8('0xc'),auth[_0xe1f8('0xd')](),controller['show']);router[_0xe1f8('0xe')]('/',auth[_0xe1f8('0xd')](),controller['create']);router[_0xe1f8('0xf')](_0xe1f8('0xc'),auth['isAuthenticated'](),controller[_0xe1f8('0x10')]);router[_0xe1f8('0x11')](_0xe1f8('0xc'),auth[_0xe1f8('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7a85=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','show','isAuthenticated','create','put','update','delete','destroy'];(function(_0x193e43,_0xe2efd6){var _0x4be555=function(_0x57675d){while(--_0x57675d){_0x193e43['push'](_0x193e43['shift']());}};_0x4be555(++_0xe2efd6);}(_0x7a85,0x160));var _0x57a8=function(_0x3af8cd,_0x246c67){_0x3af8cd=_0x3af8cd-0x0;var _0x48d61a=_0x7a85[_0x3af8cd];return _0x48d61a;};'use strict';var multer=require('multer');var util=require(_0x57a8('0x0'));var path=require('path');var timeout=require(_0x57a8('0x1'));var express=require(_0x57a8('0x2'));var router=express['Router']();var fs_extra=require(_0x57a8('0x3'));var auth=require(_0x57a8('0x4'));var interaction=require(_0x57a8('0x5'));var config=require(_0x57a8('0x6'));var controller=require('./whatsappApplication.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x57a8('0x7')](_0x57a8('0x8'),auth['isAuthenticated'](),controller[_0x57a8('0x9')]);router['post']('/',auth[_0x57a8('0xa')](),controller[_0x57a8('0xb')]);router[_0x57a8('0xc')](_0x57a8('0x8'),auth[_0x57a8('0xa')](),controller[_0x57a8('0xd')]);router[_0x57a8('0xe')](_0x57a8('0x8'),auth['isAuthenticated'](),controller[_0x57a8('0xf')]);module['exports']=router;
\ No newline at end of file
index 3f4880f..881c330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c11=['sequelize','exports','INTEGER','noop','TEXT','STRING','*,*,*,*'];(function(_0x1da73f,_0x11ac4c){var _0x2f0cd8=function(_0x4b17b6){while(--_0x4b17b6){_0x1da73f['push'](_0x1da73f['shift']());}};_0x2f0cd8(++_0x11ac4c);}(_0x7c11,0x1b9));var _0x17c1=function(_0x53f9e7,_0x50e0a8){_0x53f9e7=_0x53f9e7-0x0;var _0x272d7d=_0x7c11[_0x53f9e7];return _0x272d7d;};'use strict';var Sequelize=require(_0x17c1('0x0'));module[_0x17c1('0x1')]={'priority':{'type':Sequelize[_0x17c1('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x17c1('0x3')},'appdata':{'type':Sequelize[_0x17c1('0x4')]()},'description':{'type':Sequelize[_0x17c1('0x5')]},'interval':{'type':Sequelize[_0x17c1('0x5')],'defaultValue':_0x17c1('0x6')}};
\ No newline at end of file
+var _0x2c1c=['*,*,*,*','exports','INTEGER','STRING','TEXT'];(function(_0x198bc0,_0x3a460f){var _0x29d930=function(_0x5e233e){while(--_0x5e233e){_0x198bc0['push'](_0x198bc0['shift']());}};_0x29d930(++_0x3a460f);}(_0x2c1c,0x6a));var _0xc2c1=function(_0x1b01f6,_0x57d583){_0x1b01f6=_0x1b01f6-0x0;var _0x1f67af=_0x2c1c[_0x1b01f6];return _0x1f67af;};'use strict';var Sequelize=require('sequelize');module[_0xc2c1('0x0')]={'priority':{'type':Sequelize[_0xc2c1('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xc2c1('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc2c1('0x3')]()},'description':{'type':Sequelize[_0xc2c1('0x2')]},'interval':{'type':Sequelize[_0xc2c1('0x2')],'defaultValue':_0xc2c1('0x4')}};
\ No newline at end of file
index cc44540..baf0040 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x117c=['set','Content-Range','apply','update','then','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','WhatsappApplication','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset'];(function(_0x564588,_0x1aa3fd){var _0x329eea=function(_0x41563a){while(--_0x41563a){_0x564588['push'](_0x564588['shift']());}};_0x329eea(++_0x1aa3fd);}(_0x117c,0x71));var _0xc117=function(_0x18a772,_0x1a4d3f){_0x18a772=_0x18a772-0x0;var _0xbaac04=_0x117c[_0x18a772];return _0xbaac04;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc117('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc117('0x1'));var Mustache=require(_0xc117('0x2'));var util=require(_0xc117('0x3'));var path=require(_0xc117('0x4'));var sox=require(_0xc117('0x5'));var csv=require(_0xc117('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc117('0x7'));var _=require(_0xc117('0x8'));var squel=require('squel');var crypto=require(_0xc117('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xc117('0xa'));var toCsv=require(_0xc117('0x6'));var querystring=require(_0xc117('0xb'));var Papa=require(_0xc117('0xc'));var Redis=require(_0xc117('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc117('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc117('0xf'));var logger=require('../../config/logger')(_0xc117('0x10'));var utils=require(_0xc117('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xc117('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29d939,_0x1d8601){_0x1d8601=_0x1d8601||0xcc;return function(_0xd597a1){if(_0xd597a1){return _0x29d939[_0xc117('0x13')](_0x1d8601);}return _0x29d939['status'](_0x1d8601)[_0xc117('0x14')]();};}function respondWithResult(_0x432d27,_0x102957){_0x102957=_0x102957||0xc8;return function(_0x9dec18){if(_0x9dec18){return _0x432d27[_0xc117('0x15')](_0x102957)[_0xc117('0x16')](_0x9dec18);}};}function respondWithFilteredResult(_0x44042a,_0x6960b9){return function(_0xc14e71){if(_0xc14e71){var _0x58bce8=typeof _0x6960b9['offset']===_0xc117('0x17')&&typeof _0x6960b9[_0xc117('0x18')]===_0xc117('0x17');var _0x2c3a28=_0xc14e71[_0xc117('0x19')];var _0x339239=_0x58bce8?0x0:_0x6960b9[_0xc117('0x1a')];var _0x1a757f=_0x58bce8?_0xc14e71[_0xc117('0x19')]:_0x6960b9[_0xc117('0x1a')]+_0x6960b9[_0xc117('0x18')];var _0x224395;if(_0x1a757f>=_0x2c3a28){_0x1a757f=_0x2c3a28;_0x224395=0xc8;}else{_0x224395=0xce;}_0x44042a['status'](_0x224395);return _0x44042a[_0xc117('0x1b')](_0xc117('0x1c'),_0x339239+'-'+_0x1a757f+'/'+_0x2c3a28)[_0xc117('0x16')](_0xc14e71);}return null;};}function patchUpdates(_0x1a5ba0){return function(_0x3946cb){try{jsonpatch[_0xc117('0x1d')](_0x3946cb,_0x1a5ba0,!![]);}catch(_0x32ef4e){return BPromise['reject'](_0x32ef4e);}return _0x3946cb['save']();};}function saveUpdates(_0x412ec1,_0x24bb40){return function(_0x1492d0){if(_0x1492d0){return _0x1492d0[_0xc117('0x1e')](_0x412ec1)[_0xc117('0x1f')](function(_0x2531f1){return _0x2531f1;});}return null;};}function removeEntity(_0x5d5ba1,_0x4bde1b){return function(_0x3d670e){if(_0x3d670e){return _0x3d670e['destroy']()[_0xc117('0x1f')](function(){_0x5d5ba1[_0xc117('0x15')](0xcc)[_0xc117('0x14')]();});}};}function handleEntityNotFound(_0x4e6616,_0x3d71f8){return function(_0xfefce5){if(!_0xfefce5){_0x4e6616[_0xc117('0x13')](0x194);}return _0xfefce5;};}function handleError(_0x4ed450,_0x2cc134){_0x2cc134=_0x2cc134||0x1f4;return function(_0x28575b){logger['error'](_0x28575b[_0xc117('0x20')]);if(_0x28575b['name']){delete _0x28575b['name'];}_0x4ed450[_0xc117('0x15')](_0x2cc134)[_0xc117('0x21')](_0x28575b);};}exports[_0xc117('0x22')]=function(_0x52c152,_0x211fb1){var _0x5db129={},_0x4a2a10={},_0x459b8a={'count':0x0,'rows':[]};var _0x35bb86=_[_0xc117('0x23')](db['WhatsappApplication'][_0xc117('0x24')],function(_0x5eabf1){return{'name':_0x5eabf1[_0xc117('0x25')],'type':_0x5eabf1[_0xc117('0x26')][_0xc117('0x27')]};});_0x4a2a10[_0xc117('0x28')]=_['map'](_0x35bb86,_0xc117('0x29'));_0x4a2a10[_0xc117('0x2a')]=_[_0xc117('0x2b')](_0x52c152[_0xc117('0x2a')]);_0x4a2a10['filters']=_[_0xc117('0x2c')](_0x4a2a10['model'],_0x4a2a10[_0xc117('0x2a')]);_0x5db129['attributes']=_[_0xc117('0x2c')](_0x4a2a10['model'],qs[_0xc117('0x2d')](_0x52c152['query'][_0xc117('0x2d')]));_0x5db129[_0xc117('0x2e')]=_0x5db129[_0xc117('0x2e')]['length']?_0x5db129[_0xc117('0x2e')]:_0x4a2a10[_0xc117('0x28')];if(!_0x52c152[_0xc117('0x2a')][_0xc117('0x2f')](_0xc117('0x30'))){_0x5db129[_0xc117('0x18')]=qs[_0xc117('0x18')](_0x52c152[_0xc117('0x2a')]['limit']);_0x5db129[_0xc117('0x1a')]=qs[_0xc117('0x1a')](_0x52c152[_0xc117('0x2a')]['offset']);}_0x5db129[_0xc117('0x31')]=qs[_0xc117('0x32')](_0x52c152[_0xc117('0x2a')][_0xc117('0x32')]);_0x5db129[_0xc117('0x33')]=qs[_0xc117('0x34')](_[_0xc117('0x35')](_0x52c152['query'],_0x4a2a10[_0xc117('0x34')]),_0x35bb86);if(_0x52c152[_0xc117('0x2a')]['filter']){_0x5db129[_0xc117('0x33')]=_[_0xc117('0x36')](_0x5db129[_0xc117('0x33')],{'$or':_['map'](_0x35bb86,function(_0x595e2f){if(_0x595e2f['type']!==_0xc117('0x37')){var _0x57a4fe={};_0x57a4fe[_0x595e2f[_0xc117('0x29')]]={'$like':'%'+_0x52c152[_0xc117('0x2a')][_0xc117('0x38')]+'%'};return _0x57a4fe;}})});}_0x5db129=_[_0xc117('0x36')]({},_0x5db129,_0x52c152[_0xc117('0x39')]);var _0x301cc0={'where':_0x5db129['where']};return db[_0xc117('0x3a')][_0xc117('0x19')](_0x301cc0)['then'](function(_0x32f677){_0x459b8a['count']=_0x32f677;if(_0x52c152[_0xc117('0x2a')][_0xc117('0x3b')]){_0x5db129[_0xc117('0x3c')]=[{'all':!![]}];}return db['WhatsappApplication'][_0xc117('0x3d')](_0x5db129);})[_0xc117('0x1f')](function(_0x2e0820){_0x459b8a[_0xc117('0x3e')]=_0x2e0820;return _0x459b8a;})['then'](respondWithFilteredResult(_0x211fb1,_0x5db129))[_0xc117('0x3f')](handleError(_0x211fb1,null));};exports[_0xc117('0x40')]=function(_0x4e6c89,_0x2880b8){var _0x2066cf={'raw':!![],'where':{'id':_0x4e6c89[_0xc117('0x41')]['id']}},_0x5128ef={};_0x5128ef['model']=_[_0xc117('0x2b')](db[_0xc117('0x3a')][_0xc117('0x24')]);_0x5128ef[_0xc117('0x2a')]=_['keys'](_0x4e6c89['query']);_0x5128ef['filters']=_[_0xc117('0x2c')](_0x5128ef[_0xc117('0x28')],_0x5128ef['query']);_0x2066cf['attributes']=_['intersection'](_0x5128ef[_0xc117('0x28')],qs[_0xc117('0x2d')](_0x4e6c89[_0xc117('0x2a')][_0xc117('0x2d')]));_0x2066cf[_0xc117('0x2e')]=_0x2066cf[_0xc117('0x2e')]['length']?_0x2066cf['attributes']:_0x5128ef[_0xc117('0x28')];if(_0x4e6c89[_0xc117('0x2a')]['includeAll']){_0x2066cf['include']=[{'all':!![]}];}_0x2066cf=_[_0xc117('0x36')]({},_0x2066cf,_0x4e6c89['options']);return db[_0xc117('0x3a')][_0xc117('0x42')](_0x2066cf)[_0xc117('0x1f')](handleEntityNotFound(_0x2880b8,null))[_0xc117('0x1f')](respondWithResult(_0x2880b8,null))['catch'](handleError(_0x2880b8,null));};exports[_0xc117('0x43')]=function(_0x248347,_0x4bca5e){return db[_0xc117('0x3a')][_0xc117('0x43')](_0x248347['body'],{})['then'](respondWithResult(_0x4bca5e,0xc9))['catch'](handleError(_0x4bca5e,null));};exports[_0xc117('0x1e')]=function(_0x461d76,_0x2b7534){if(_0x461d76[_0xc117('0x44')]['id']){delete _0x461d76[_0xc117('0x44')]['id'];}return db[_0xc117('0x3a')]['find']({'where':{'id':_0x461d76['params']['id']}})[_0xc117('0x1f')](handleEntityNotFound(_0x2b7534,null))[_0xc117('0x1f')](saveUpdates(_0x461d76[_0xc117('0x44')],null))[_0xc117('0x1f')](respondWithResult(_0x2b7534,null))[_0xc117('0x3f')](handleError(_0x2b7534,null));};exports[_0xc117('0x45')]=function(_0x5079f0,_0x2ce262){return db[_0xc117('0x3a')][_0xc117('0x42')]({'where':{'id':_0x5079f0[_0xc117('0x41')]['id']}})[_0xc117('0x1f')](handleEntityNotFound(_0x2ce262,null))[_0xc117('0x1f')](removeEntity(_0x2ce262,null))[_0xc117('0x3f')](handleError(_0x2ce262,null));};
\ No newline at end of file
+var _0x7e74=['fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','findAll','catch','show','options','find','create','update','params','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','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','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','error','name','send','index','map','WhatsappApplication','rawAttributes'];(function(_0x5da98f,_0x3528ea){var _0x445da7=function(_0x3d970d){while(--_0x3d970d){_0x5da98f['push'](_0x5da98f['shift']());}};_0x445da7(++_0x3528ea);}(_0x7e74,0xbd));var _0x47e7=function(_0x3b9f3d,_0x3bd22c){_0x3b9f3d=_0x3b9f3d-0x0;var _0x4e9eb4=_0x7e74[_0x3b9f3d];return _0x4e9eb4;};'use strict';var emlformat=require(_0x47e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x47e7('0x1'));var jsonpatch=require(_0x47e7('0x2'));var rp=require(_0x47e7('0x3'));var moment=require(_0x47e7('0x4'));var BPromise=require(_0x47e7('0x5'));var Mustache=require('mustache');var util=require(_0x47e7('0x6'));var path=require(_0x47e7('0x7'));var sox=require(_0x47e7('0x8'));var csv=require(_0x47e7('0x9'));var ejs=require(_0x47e7('0xa'));var fs=require('fs');var fs_extra=require(_0x47e7('0xb'));var _=require(_0x47e7('0xc'));var squel=require('squel');var crypto=require(_0x47e7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x47e7('0xe'));var toCsv=require(_0x47e7('0x9'));var querystring=require(_0x47e7('0xf'));var Papa=require(_0x47e7('0x10'));var Redis=require(_0x47e7('0x11'));var authService=require(_0x47e7('0x12'));var qs=require(_0x47e7('0x13'));var as=require(_0x47e7('0x14'));var hardwareService=require(_0x47e7('0x15'));var logger=require(_0x47e7('0x16'))(_0x47e7('0x17'));var utils=require(_0x47e7('0x18'));var config=require(_0x47e7('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x47e7('0x1a'))['db'];function respondWithStatusCode(_0x261c13,_0x2362fc){_0x2362fc=_0x2362fc||0xcc;return function(_0x534717){if(_0x534717){return _0x261c13[_0x47e7('0x1b')](_0x2362fc);}return _0x261c13[_0x47e7('0x1c')](_0x2362fc)[_0x47e7('0x1d')]();};}function respondWithResult(_0xa29efb,_0x504c2e){_0x504c2e=_0x504c2e||0xc8;return function(_0x21efb6){if(_0x21efb6){return _0xa29efb[_0x47e7('0x1c')](_0x504c2e)[_0x47e7('0x1e')](_0x21efb6);}};}function respondWithFilteredResult(_0x2aba58,_0x2fec9f){return function(_0x5369d4){if(_0x5369d4){var _0x2e2aeb=typeof _0x2fec9f['offset']===_0x47e7('0x1f')&&typeof _0x2fec9f[_0x47e7('0x20')]===_0x47e7('0x1f');var _0x433705=_0x5369d4[_0x47e7('0x21')];var _0x4429e6=_0x2e2aeb?0x0:_0x2fec9f[_0x47e7('0x22')];var _0x42d837=_0x2e2aeb?_0x5369d4[_0x47e7('0x21')]:_0x2fec9f[_0x47e7('0x22')]+_0x2fec9f[_0x47e7('0x20')];var _0x1659bf;if(_0x42d837>=_0x433705){_0x42d837=_0x433705;_0x1659bf=0xc8;}else{_0x1659bf=0xce;}_0x2aba58[_0x47e7('0x1c')](_0x1659bf);return _0x2aba58[_0x47e7('0x23')]('Content-Range',_0x4429e6+'-'+_0x42d837+'/'+_0x433705)['json'](_0x5369d4);}return null;};}function patchUpdates(_0x528fc7){return function(_0x586a74){try{jsonpatch[_0x47e7('0x24')](_0x586a74,_0x528fc7,!![]);}catch(_0x3484cf){return BPromise[_0x47e7('0x25')](_0x3484cf);}return _0x586a74[_0x47e7('0x26')]();};}function saveUpdates(_0x59fc08,_0x49b928){return function(_0x2372f0){if(_0x2372f0){return _0x2372f0['update'](_0x59fc08)[_0x47e7('0x27')](function(_0x5b6d46){return _0x5b6d46;});}return null;};}function removeEntity(_0x33d5eb,_0x8e7237){return function(_0x233f8d){if(_0x233f8d){return _0x233f8d[_0x47e7('0x28')]()['then'](function(){_0x33d5eb['status'](0xcc)[_0x47e7('0x1d')]();});}};}function handleEntityNotFound(_0x25c0ca,_0x1a7ed8){return function(_0x28843b){if(!_0x28843b){_0x25c0ca['sendStatus'](0x194);}return _0x28843b;};}function handleError(_0x43fa51,_0x105add){_0x105add=_0x105add||0x1f4;return function(_0x28f414){logger[_0x47e7('0x29')](_0x28f414['stack']);if(_0x28f414[_0x47e7('0x2a')]){delete _0x28f414[_0x47e7('0x2a')];}_0x43fa51[_0x47e7('0x1c')](_0x105add)[_0x47e7('0x2b')](_0x28f414);};}exports[_0x47e7('0x2c')]=function(_0x303ff6,_0x150c8b){var _0x55866e={},_0x172c80={},_0x1f066f={'count':0x0,'rows':[]};var _0x4100e0=_[_0x47e7('0x2d')](db[_0x47e7('0x2e')][_0x47e7('0x2f')],function(_0x534ca4){return{'name':_0x534ca4[_0x47e7('0x30')],'type':_0x534ca4[_0x47e7('0x31')][_0x47e7('0x32')]};});_0x172c80[_0x47e7('0x33')]=_[_0x47e7('0x2d')](_0x4100e0,'name');_0x172c80[_0x47e7('0x34')]=_[_0x47e7('0x35')](_0x303ff6[_0x47e7('0x34')]);_0x172c80[_0x47e7('0x36')]=_[_0x47e7('0x37')](_0x172c80[_0x47e7('0x33')],_0x172c80[_0x47e7('0x34')]);_0x55866e['attributes']=_['intersection'](_0x172c80[_0x47e7('0x33')],qs['fields'](_0x303ff6[_0x47e7('0x34')][_0x47e7('0x38')]));_0x55866e['attributes']=_0x55866e[_0x47e7('0x39')][_0x47e7('0x3a')]?_0x55866e[_0x47e7('0x39')]:_0x172c80['model'];if(!_0x303ff6['query'][_0x47e7('0x3b')](_0x47e7('0x3c'))){_0x55866e['limit']=qs[_0x47e7('0x20')](_0x303ff6[_0x47e7('0x34')][_0x47e7('0x20')]);_0x55866e['offset']=qs[_0x47e7('0x22')](_0x303ff6['query'][_0x47e7('0x22')]);}_0x55866e[_0x47e7('0x3d')]=qs[_0x47e7('0x3e')](_0x303ff6['query'][_0x47e7('0x3e')]);_0x55866e[_0x47e7('0x3f')]=qs[_0x47e7('0x36')](_[_0x47e7('0x40')](_0x303ff6[_0x47e7('0x34')],_0x172c80[_0x47e7('0x36')]),_0x4100e0);if(_0x303ff6['query']['filter']){_0x55866e[_0x47e7('0x3f')]=_['merge'](_0x55866e[_0x47e7('0x3f')],{'$or':_[_0x47e7('0x2d')](_0x4100e0,function(_0x12357c){if(_0x12357c[_0x47e7('0x31')]!==_0x47e7('0x41')){var _0x127bdc={};_0x127bdc[_0x12357c[_0x47e7('0x2a')]]={'$like':'%'+_0x303ff6[_0x47e7('0x34')][_0x47e7('0x42')]+'%'};return _0x127bdc;}})});}_0x55866e=_[_0x47e7('0x43')]({},_0x55866e,_0x303ff6['options']);var _0x1b038e={'where':_0x55866e['where']};return db['WhatsappApplication']['count'](_0x1b038e)[_0x47e7('0x27')](function(_0x287bd7){_0x1f066f['count']=_0x287bd7;if(_0x303ff6[_0x47e7('0x34')][_0x47e7('0x44')]){_0x55866e[_0x47e7('0x45')]=[{'all':!![]}];}return db[_0x47e7('0x2e')][_0x47e7('0x46')](_0x55866e);})['then'](function(_0x40613e){_0x1f066f['rows']=_0x40613e;return _0x1f066f;})[_0x47e7('0x27')](respondWithFilteredResult(_0x150c8b,_0x55866e))[_0x47e7('0x47')](handleError(_0x150c8b,null));};exports[_0x47e7('0x48')]=function(_0x4890e0,_0x316068){var _0x11301d={'raw':!![],'where':{'id':_0x4890e0['params']['id']}},_0x58d4f3={};_0x58d4f3[_0x47e7('0x33')]=_[_0x47e7('0x35')](db[_0x47e7('0x2e')]['rawAttributes']);_0x58d4f3[_0x47e7('0x34')]=_[_0x47e7('0x35')](_0x4890e0[_0x47e7('0x34')]);_0x58d4f3[_0x47e7('0x36')]=_[_0x47e7('0x37')](_0x58d4f3[_0x47e7('0x33')],_0x58d4f3[_0x47e7('0x34')]);_0x11301d[_0x47e7('0x39')]=_[_0x47e7('0x37')](_0x58d4f3[_0x47e7('0x33')],qs[_0x47e7('0x38')](_0x4890e0['query'][_0x47e7('0x38')]));_0x11301d['attributes']=_0x11301d[_0x47e7('0x39')]['length']?_0x11301d[_0x47e7('0x39')]:_0x58d4f3['model'];if(_0x4890e0['query'][_0x47e7('0x44')]){_0x11301d[_0x47e7('0x45')]=[{'all':!![]}];}_0x11301d=_['merge']({},_0x11301d,_0x4890e0[_0x47e7('0x49')]);return db[_0x47e7('0x2e')][_0x47e7('0x4a')](_0x11301d)[_0x47e7('0x27')](handleEntityNotFound(_0x316068,null))[_0x47e7('0x27')](respondWithResult(_0x316068,null))[_0x47e7('0x47')](handleError(_0x316068,null));};exports[_0x47e7('0x4b')]=function(_0x288ee6,_0x116e7a){return db['WhatsappApplication'][_0x47e7('0x4b')](_0x288ee6['body'],{})['then'](respondWithResult(_0x116e7a,0xc9))[_0x47e7('0x47')](handleError(_0x116e7a,null));};exports[_0x47e7('0x4c')]=function(_0x25a199,_0x289361){if(_0x25a199['body']['id']){delete _0x25a199['body']['id'];}return db[_0x47e7('0x2e')][_0x47e7('0x4a')]({'where':{'id':_0x25a199[_0x47e7('0x4d')]['id']}})[_0x47e7('0x27')](handleEntityNotFound(_0x289361,null))['then'](saveUpdates(_0x25a199[_0x47e7('0x4e')],null))['then'](respondWithResult(_0x289361,null))['catch'](handleError(_0x289361,null));};exports[_0x47e7('0x28')]=function(_0x48b942,_0x22770d){return db[_0x47e7('0x2e')][_0x47e7('0x4a')]({'where':{'id':_0x48b942[_0x47e7('0x4d')]['id']}})[_0x47e7('0x27')](handleEntityNotFound(_0x22770d,null))[_0x47e7('0x27')](removeEntity(_0x22770d,null))[_0x47e7('0x47')](handleError(_0x22770d,null));};
\ No newline at end of file
index 593d5b9..c490e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf23b=['request-promise','path','rimraf','./whatsappApplication.attributes','exports','define','utf8mb4','lodash','util','../../config/logger','api','moment'];(function(_0x239b90,_0x3e713b){var _0x3c5c56=function(_0x40440a){while(--_0x40440a){_0x239b90['push'](_0x239b90['shift']());}};_0x3c5c56(++_0x3e713b);}(_0xf23b,0x133));var _0xbf23=function(_0x16d4c2,_0x4dddf8){_0x16d4c2=_0x16d4c2-0x0;var _0x138a7d=_0xf23b[_0x16d4c2];return _0x138a7d;};'use strict';var _=require(_0xbf23('0x0'));var util=require(_0xbf23('0x1'));var logger=require(_0xbf23('0x2'))(_0xbf23('0x3'));var moment=require(_0xbf23('0x4'));var BPromise=require('bluebird');var rp=require(_0xbf23('0x5'));var fs=require('fs');var path=require(_0xbf23('0x6'));var rimraf=require(_0xbf23('0x7'));var config=require('../../config/environment');var attributes=require(_0xbf23('0x8'));module[_0xbf23('0x9')]=function(_0xc5e7dd,_0x393a52){return _0xc5e7dd[_0xbf23('0xa')]('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbf23('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x032a=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define','whatsapp_applications'];(function(_0x46adf6,_0x158f02){var _0x47d5b2=function(_0x436aea){while(--_0x436aea){_0x46adf6['push'](_0x46adf6['shift']());}};_0x47d5b2(++_0x158f02);}(_0x032a,0xf0));var _0xa032=function(_0x4eaa9c,_0x3a879a){_0x4eaa9c=_0x4eaa9c-0x0;var _0x46b796=_0x032a[_0x4eaa9c];return _0x46b796;};'use strict';var _=require('lodash');var util=require(_0xa032('0x0'));var logger=require('../../config/logger')(_0xa032('0x1'));var moment=require(_0xa032('0x2'));var BPromise=require(_0xa032('0x3'));var rp=require(_0xa032('0x4'));var fs=require('fs');var path=require(_0xa032('0x5'));var rimraf=require(_0xa032('0x6'));var config=require(_0xa032('0x7'));var attributes=require(_0xa032('0x8'));module[_0xa032('0x9')]=function(_0x2b1445,_0x43d0f5){return _0x2b1445[_0xa032('0xa')]('WhatsappApplication',attributes,{'tableName':_0xa032('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index eed3283..8dbb563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then'];(function(_0x41acd6,_0x285958){var _0x585cb2=function(_0x1c5149){while(--_0x1c5149){_0x41acd6['push'](_0x41acd6['shift']());}};_0x585cb2(++_0x285958);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x95fda8,_0x1772ce){_0x95fda8=_0x95fda8-0x0;var _0x3df8c7=_0x8d0e[_0x95fda8];return _0x3df8c7;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var moment=require(_0xe8d0('0x2'));var BPromise=require(_0xe8d0('0x3'));var rs=require(_0xe8d0('0x4'));var fs=require('fs');var Redis=require(_0xe8d0('0x5'));var db=require(_0xe8d0('0x6'))['db'];var utils=require(_0xe8d0('0x7'));var logger=require(_0xe8d0('0x8'))('rpc');var config=require(_0xe8d0('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe8d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x92483d,_0x469d37,_0xcc03d0){return new BPromise(function(_0x2b6dce,_0x13aa63){return client[_0xe8d0('0xb')](_0x92483d,_0xcc03d0)[_0xe8d0('0xc')](function(_0x5605a0){logger[_0xe8d0('0xd')](_0xe8d0('0xe'),_0x469d37,_0xe8d0('0xf'));logger['debug']('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x469d37,_0xe8d0('0xf'),JSON[_0xe8d0('0x10')](_0x5605a0));if(_0x5605a0[_0xe8d0('0x11')]){if(_0x5605a0[_0xe8d0('0x11')][_0xe8d0('0x12')]===0x1f4){logger[_0xe8d0('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x469d37,_0x5605a0[_0xe8d0('0x11')][_0xe8d0('0x13')]);return _0x13aa63(_0x5605a0['error'][_0xe8d0('0x13')]);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x469d37,_0x5605a0[_0xe8d0('0x11')][_0xe8d0('0x13')]);return _0x2b6dce(_0x5605a0[_0xe8d0('0x11')][_0xe8d0('0x13')]);}else{logger[_0xe8d0('0xd')](_0xe8d0('0xe'),_0x469d37,'request\x20sent');_0x2b6dce(_0x5605a0[_0xe8d0('0x14')]['message']);}})[_0xe8d0('0x15')](function(_0x3c526c){logger[_0xe8d0('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x469d37,_0x3c526c);_0x13aa63(_0x3c526c);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x11ca45,_0x2cf6d7){var _0x470a8d=function(_0x5e1c73){while(--_0x5e1c73){_0x11ca45['push'](_0x11ca45['shift']());}};_0x470a8d(++_0x2cf6d7);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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']('WhatsappApplication,\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
index a44987b..c42c442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce68=['Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','isAuthenticated','index','describe','get','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','whatsappinteraction:addtags','addTags','put','whatsapp','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','multer','path','connect-timeout','express'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0xce68,0x10c));var _0x8ce6=function(_0x1417ce,_0x532a27){_0x1417ce=_0x1417ce-0x0;var _0x119712=_0xce68[_0x1417ce];return _0x119712;};'use strict';var multer=require(_0x8ce6('0x0'));var util=require('util');var path=require(_0x8ce6('0x1'));var timeout=require(_0x8ce6('0x2'));var express=require(_0x8ce6('0x3'));var router=express[_0x8ce6('0x4')]();var fs_extra=require(_0x8ce6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8ce6('0x6'));var config=require(_0x8ce6('0x7'));var controller=require(_0x8ce6('0x8'));router['get']('/',auth[_0x8ce6('0x9')](),controller[_0x8ce6('0xa')]);router['get']('/describe',auth[_0x8ce6('0x9')](),controller[_0x8ce6('0xb')]);router[_0x8ce6('0xc')](_0x8ce6('0xd'),auth['isAuthenticated'](),controller[_0x8ce6('0xe')]);router[_0x8ce6('0xc')](_0x8ce6('0xf'),auth[_0x8ce6('0x9')](),controller[_0x8ce6('0x10')]);router[_0x8ce6('0xc')](_0x8ce6('0x11'),auth[_0x8ce6('0x9')](),controller[_0x8ce6('0x12')]);router[_0x8ce6('0x13')]('/',auth[_0x8ce6('0x9')](),controller[_0x8ce6('0x14')]);router[_0x8ce6('0x13')](_0x8ce6('0xf'),auth[_0x8ce6('0x9')](),controller[_0x8ce6('0x15')]);router[_0x8ce6('0x13')](_0x8ce6('0x16'),auth['isAuthenticated'](),interaction[_0x8ce6('0x17')]('whatsapp',_0x8ce6('0x18')),controller[_0x8ce6('0x19')]);router[_0x8ce6('0x1a')](_0x8ce6('0xd'),auth[_0x8ce6('0x9')](),interaction[_0x8ce6('0x17')](_0x8ce6('0x1b'),_0x8ce6('0x1c')),controller[_0x8ce6('0x1d')]);router[_0x8ce6('0x1e')]('/:id',auth[_0x8ce6('0x9')](),interaction['tracked'](_0x8ce6('0x1b'),_0x8ce6('0x1f')),controller[_0x8ce6('0x20')]);router['delete']('/:id/tags',auth[_0x8ce6('0x9')](),controller[_0x8ce6('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0xe2fe=['whatsapp','whatsappinteraction:addtags','put','tracked','update','whatsappinteraction:destroy','delete','/:id/tags','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/messages','create','post','addMessage'];(function(_0x3ff1b0,_0x48be1e){var _0x29d07f=function(_0x58a5df){while(--_0x58a5df){_0x3ff1b0['push'](_0x3ff1b0['shift']());}};_0x29d07f(++_0x48be1e);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./whatsappInteraction.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0x7')](_0xee2f('0xc'),auth['isAuthenticated'](),controller['getMessages']);router['get']('/:id/download',auth[_0xee2f('0x8')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0xee2f('0xd')]);router[_0xee2f('0xe')](_0xee2f('0xc'),auth[_0xee2f('0x8')](),controller[_0xee2f('0xf')]);router[_0xee2f('0xe')]('/:id/tags',auth[_0xee2f('0x8')](),interaction['tracked'](_0xee2f('0x10'),_0xee2f('0x11')),controller['addTags']);router[_0xee2f('0x12')](_0xee2f('0xb'),auth[_0xee2f('0x8')](),interaction[_0xee2f('0x13')](_0xee2f('0x10'),'whatsappinteraction:update'),controller[_0xee2f('0x14')]);router['delete'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),interaction['tracked']('whatsapp',_0xee2f('0x15')),controller['destroy']);router[_0xee2f('0x16')](_0xee2f('0x17'),auth[_0xee2f('0x8')](),controller['removeTags']);module[_0xee2f('0x18')]=router;
\ No newline at end of file
index e5b27d2..c763ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf006=['ENUM','out','exports','BOOLEAN','STRING','DATE'];(function(_0x11cb65,_0x5e7774){var _0x3bac47=function(_0x184eb3){while(--_0x184eb3){_0x11cb65['push'](_0x11cb65['shift']());}};_0x3bac47(++_0x5e7774);}(_0xf006,0x146));var _0x6f00=function(_0x398331,_0x5c443c){_0x398331=_0x398331-0x0;var _0x272cf1=_0xf006[_0x398331];return _0x272cf1;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x6f00('0x0')]={'closed':{'type':Sequelize[_0x6f00('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6f00('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6f00('0x2')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x6f00('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x6f00('0x4')]('in',_0x6f00('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x6f00('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x6f00('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe75a=['ENUM','out','sequelize','moment','BOOLEAN','DATE','STRING'];(function(_0x402333,_0x159e4c){var _0x169b48=function(_0x264763){while(--_0x264763){_0x402333['push'](_0x402333['shift']());}};_0x169b48(++_0x159e4c);}(_0xe75a,0x1de));var _0xae75=function(_0x5ea7a8,_0x257068){_0x5ea7a8=_0x5ea7a8-0x0;var _0x1b2e3a=_0xe75a[_0x5ea7a8];return _0x1b2e3a;};'use strict';var Sequelize=require(_0xae75('0x0'));var moment=require(_0xae75('0x1'));module['exports']={'closed':{'type':Sequelize[_0xae75('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xae75('0x3')]},'disposition':{'type':Sequelize[_0xae75('0x4')]},'secondDisposition':{'type':Sequelize[_0xae75('0x4')]},'thirdDisposition':{'type':Sequelize[_0xae75('0x4')]},'note':{'type':Sequelize[_0xae75('0x4')]},'phone':{'type':Sequelize[_0xae75('0x4')]},'read1stAt':{'type':Sequelize[_0xae75('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xae75('0x5')]('in',_0xae75('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xae75('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 176df77..2439428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32d=['createReadStream','pipe','lastName','basename','out','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','count','set','reject','save','update','then','destroy','error','name','send','Users','map','fullname','Tags','TagIds','split','catch','index','WhatsappInteraction','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','select','field','from','tools_tags','u.fullname','ui.WhatsappInteractionId','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','search','find','value','having','`\x20>\x200','Contact','operator','$substring','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','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','forEach','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','unreadMessages','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','all','rows','show','params','includeAll','include','options','create','describe','ids','omit','getMessages','findOne','WhatsappMessage','pick','YYYY-MM-DD\x20HH:mm:ss','findAll','setTags','spread','emit','removeTags','download','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','push','CmContact','firstName','Attachment','Messages','direction','secret','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','disposition'];(function(_0x2405e0,_0x3c044c){var _0x4feb9b=function(_0x2865d9){while(--_0x2865d9){_0x2405e0['push'](_0x2405e0['shift']());}};_0x4feb9b(++_0x3c044c);}(_0xb32d,0x1da));var _0xdb32=function(_0x1f1170,_0x3b5783){_0x1f1170=_0x1f1170-0x0;var _0x127b7b=_0xb32d[_0x1f1170];return _0x127b7b;};'use strict';var emlformat=require(_0xdb32('0x0'));var rimraf=require(_0xdb32('0x1'));var zipdir=require(_0xdb32('0x2'));var jsonpatch=require(_0xdb32('0x3'));var rp=require(_0xdb32('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdb32('0x5'));var util=require(_0xdb32('0x6'));var path=require('path');var sox=require(_0xdb32('0x7'));var csv=require(_0xdb32('0x8'));var ejs=require(_0xdb32('0x9'));var fs=require('fs');var fs_extra=require(_0xdb32('0xa'));var _=require(_0xdb32('0xb'));var squel=require(_0xdb32('0xc'));var crypto=require('crypto');var jsforce=require(_0xdb32('0xd'));var deskjs=require(_0xdb32('0xe'));var toCsv=require(_0xdb32('0x8'));var querystring=require(_0xdb32('0xf'));var Papa=require(_0xdb32('0x10'));var Redis=require(_0xdb32('0x11'));var authService=require(_0xdb32('0x12'));var qs=require(_0xdb32('0x13'));var as=require(_0xdb32('0x14'));var pdf=require(_0xdb32('0x15'));var hardwareService=require(_0xdb32('0x16'));var logger=require(_0xdb32('0x17'))(_0xdb32('0x18'));var utils=require(_0xdb32('0x19'));var config=require(_0xdb32('0x1a'));var licenseUtil=require(_0xdb32('0x1b'));var db=require(_0xdb32('0x1c'))['db'];config[_0xdb32('0x1d')]=_[_0xdb32('0x1e')](config[_0xdb32('0x1d')],{'host':_0xdb32('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdb32('0x1d')]));require(_0xdb32('0x20'))[_0xdb32('0x21')](socket);function respondWithStatusCode(_0x2adea8,_0x2d3270){_0x2d3270=_0x2d3270||0xcc;return function(_0x4b38ab){if(_0x4b38ab){return _0x2adea8[_0xdb32('0x22')](_0x2d3270);}return _0x2adea8[_0xdb32('0x23')](_0x2d3270)[_0xdb32('0x24')]();};}function respondWithResult(_0x4fc593,_0x4fe088){_0x4fe088=_0x4fe088||0xc8;return function(_0x59a5f8){if(_0x59a5f8){return _0x4fc593['status'](_0x4fe088)[_0xdb32('0x25')](_0x59a5f8);}};}function respondWithFilteredResult(_0x5ae827,_0x1fd22b){return function(_0xfab49a){if(_0xfab49a){var _0x1ba5f4=typeof _0x1fd22b[_0xdb32('0x26')]==='undefined'&&typeof _0x1fd22b['limit']==='undefined';var _0x26b43c=_0xfab49a['count'];var _0x3c7697=_0x1ba5f4?0x0:_0x1fd22b[_0xdb32('0x26')];var _0x8a5f88=_0x1ba5f4?_0xfab49a[_0xdb32('0x27')]:_0x1fd22b[_0xdb32('0x26')]+_0x1fd22b['limit'];var _0x4584e1;if(_0x8a5f88>=_0x26b43c){_0x8a5f88=_0x26b43c;_0x4584e1=0xc8;}else{_0x4584e1=0xce;}_0x5ae827[_0xdb32('0x23')](_0x4584e1);return _0x5ae827[_0xdb32('0x28')]('Content-Range',_0x3c7697+'-'+_0x8a5f88+'/'+_0x26b43c)['json'](_0xfab49a);}return null;};}function patchUpdates(_0x1f3164){return function(_0x4e765c){try{jsonpatch['apply'](_0x4e765c,_0x1f3164,!![]);}catch(_0x42ac9d){return BPromise[_0xdb32('0x29')](_0x42ac9d);}return _0x4e765c[_0xdb32('0x2a')]();};}function saveUpdates(_0x4406b9,_0x537fec){return function(_0x498c20){if(_0x498c20){return _0x498c20[_0xdb32('0x2b')](_0x4406b9)[_0xdb32('0x2c')](function(_0x2d2555){return _0x2d2555;});}return null;};}function removeEntity(_0x5b0a48,_0x282ed3){return function(_0x5175fe){if(_0x5175fe){return _0x5175fe[_0xdb32('0x2d')]()[_0xdb32('0x2c')](function(){_0x5b0a48[_0xdb32('0x23')](0xcc)[_0xdb32('0x24')]();});}};}function handleEntityNotFound(_0x22e6b1,_0x5d29da){return function(_0x54f02c){if(!_0x54f02c){_0x22e6b1[_0xdb32('0x22')](0x194);}return _0x54f02c;};}function handleError(_0x51e5e8,_0x37c703){_0x37c703=_0x37c703||0x1f4;return function(_0x38d7a0){logger[_0xdb32('0x2e')](_0x38d7a0['stack']);if(_0x38d7a0['name']){delete _0x38d7a0[_0xdb32('0x2f')];}_0x51e5e8[_0xdb32('0x23')](_0x37c703)[_0xdb32('0x30')](_0x38d7a0);};}function getInteractionUsers(_0x566b8b,_0x28a6d0){return new BPromise(function(_0x1a0337,_0x39cbe3){try{if(_0x28a6d0[_0x566b8b['id']]){_0x566b8b[_0xdb32('0x31')]=_[_0xdb32('0x32')](_0x28a6d0[_0x566b8b['id']],function(_0xbc7250){return{'id':_0xbc7250['id'],'fullname':_0xbc7250[_0xdb32('0x33')]};});}}catch(_0x84ef42){_0x39cbe3(_0x84ef42);}_0x1a0337(_0x566b8b);});}function getInteractionTags(_0x137644,_0x47b932){return new BPromise(function(_0x4e0f33,_0x177423){try{if(_0x137644['TagIds']){_0x137644[_0xdb32('0x34')]=[];_0x137644[_0xdb32('0x35')][_0xdb32('0x36')](',')['forEach'](function(_0x6a978c){_0x137644[_0xdb32('0x34')]['push'](_0x47b932[_0x6a978c]);});}delete _0x137644[_0xdb32('0x35')];}catch(_0x2a81dc){_0x177423(_0x2a81dc);}_0x4e0f33(_0x137644);});}function updateWhatsappInteraction(_0x578536,_0x133f16,_0x447c34){return new BPromise(function(_0x594b6d,_0x158748){return getInteractionUsers(_0x578536,_0x447c34)[_0xdb32('0x2c')](function(_0x1cfbce){return getInteractionTags(_0x1cfbce,_0x133f16);})[_0xdb32('0x2c')](function(_0x5b4d77){_0x594b6d(_0x5b4d77);})[_0xdb32('0x37')](function(_0x402a4d){_0x158748(_0x402a4d);});});}exports[_0xdb32('0x38')]=function(_0x3e9c95,_0x4d17a4){var _0x4b46fd={},_0x59e343={},_0x3b2253={'count':0x0,'rows':[]};var _0x4b5f2c=_['map'](db[_0xdb32('0x39')]['rawAttributes'],function(_0x65cb27){return{'name':_0x65cb27[_0xdb32('0x3a')],'type':_0x65cb27[_0xdb32('0x3b')][_0xdb32('0x3c')]};});_0x59e343['model']=_[_0xdb32('0x32')](_0x4b5f2c,_0xdb32('0x2f'));_0x59e343[_0xdb32('0x3d')]=_[_0xdb32('0x3e')](_0x3e9c95[_0xdb32('0x3d')]);_0x59e343[_0xdb32('0x3f')]=_[_0xdb32('0x40')](_0x59e343[_0xdb32('0x41')],_0x59e343[_0xdb32('0x3d')]);_0x4b46fd['attributes']=_[_0xdb32('0x40')](_0x59e343['model'],qs[_0xdb32('0x42')](_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x42')]));_0x4b46fd['attributes']=_0x4b46fd[_0xdb32('0x43')][_0xdb32('0x44')]?_0x4b46fd[_0xdb32('0x43')]:_0x59e343[_0xdb32('0x41')];if(!_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x45')](_0xdb32('0x46'))){_0x4b46fd['limit']=qs[_0xdb32('0x47')](_0x3e9c95['query'][_0xdb32('0x47')]);_0x4b46fd[_0xdb32('0x26')]=qs[_0xdb32('0x26')](_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x26')]);}_0x4b46fd[_0xdb32('0x48')]=qs['sort'](_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x49')]);_0x4b46fd[_0xdb32('0x4a')]=qs['filters'](_['pick'](_0x3e9c95[_0xdb32('0x3d')],_0x59e343['filters']),_0x4b5f2c);var _0x9e8ca3=[];var _0x3baf71=squel[_0xdb32('0x4b')]()[_0xdb32('0x4c')]('id')[_0xdb32('0x4c')]('name')[_0xdb32('0x4c')]('color')[_0xdb32('0x4d')](_0xdb32('0x4e'));var _0x496070=squel[_0xdb32('0x4b')]()[_0xdb32('0x4c')]('u.id')[_0xdb32('0x4c')](_0xdb32('0x4f'))[_0xdb32('0x4c')](_0xdb32('0x50'))['from']('user_has_whatsapp_interactions','ui')[_0xdb32('0x51')](_0xdb32('0x52'),'u',_0xdb32('0x53'));var _0x2d60d8=squel[_0xdb32('0x4b')]()[_0xdb32('0x4d')]('whatsapp_interactions','i')['left_join'](_0xdb32('0x54'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xdb32('0x51')]('users','o',_0xdb32('0x55'))[_0xdb32('0x51')](_0xdb32('0x56'),'a',_0xdb32('0x57'))[_0xdb32('0x51')](_0xdb32('0x58'),'me','me.WhatsappInteractionId\x20=\x20i.id')[_0xdb32('0x51')](_0xdb32('0x59'),'it',_0xdb32('0x5a'))['left_join'](_0xdb32('0x4e'),'t','t.id\x20=\x20it.TagId');var _0x214c29=squel[_0xdb32('0x5b')]();var _0x16f679=[];var _0x30c76e=squel[_0xdb32('0x5b')]();var _0x19b29c;if(_0x3e9c95['query'][_0xdb32('0x5c')]){_0x19b29c=as['parseSearch'](_0x3e9c95['query'][_0xdb32('0x5c')]);var _0x36c691=_0x19b29c['sqlOperator'];for(var _0x3dfe61=0x0;_0x3dfe61<_0x19b29c['conditions'][_0xdb32('0x44')];_0x3dfe61++){var _0x136c1f=_0x19b29c['conditions'][_0x3dfe61];var _0x54b306='i';var _0x2ba2f8=_[_0xdb32('0x5d')](_0x4b5f2c,[_0xdb32('0x2f'),_0x136c1f[_0xdb32('0x4c')]]);if(!_0x2ba2f8){switch(_0x136c1f[_0xdb32('0x4c')]){case'unreadMessages':if(_0x136c1f[_0xdb32('0x5e')]==0x1){_0x2d60d8[_0xdb32('0x5f')]('`'+_0x136c1f[_0xdb32('0x4c')]+'`\x20=\x200');}else{_0x2d60d8[_0xdb32('0x5f')]('`'+_0x136c1f[_0xdb32('0x4c')]+_0xdb32('0x60'));}break;case _0xdb32('0x61'):if(_0x136c1f[_0xdb32('0x62')]===_0xdb32('0x63')){if(_0x136c1f[_0xdb32('0x5e')]['split']('\x20')[_0xdb32('0x44')]>0x1){_0x214c29[_0x36c691]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x136c1f[_0xdb32('0x5e')]),null);}else{var _0x325054='%'+_0x136c1f[_0xdb32('0x5e')]+'%';_0x214c29[_0x36c691](_0xdb32('0x64'),_0x325054,_0x325054,_0x325054);}}else{_0x2ba2f8=_[_0xdb32('0x5d')](_0x4b5f2c,[_0xdb32('0x2f'),_0xdb32('0x65')]);_0x136c1f[_0xdb32('0x4c')]=_0xdb32('0x65');_0x55264f=as[_0xdb32('0x66')](_0x54b306,_0x2ba2f8['type'],_0x136c1f);_0x214c29[_0x36c691](_0x55264f[_0xdb32('0x67')],_0x55264f[_0xdb32('0x5e')][_0xdb32('0x68')],_0x55264f[_0xdb32('0x5e')][_0xdb32('0x24')]);}break;case _0xdb32('0x69'):var _0x16028b=_0x136c1f['value'][_0xdb32('0x36')](',')[_0xdb32('0x32')](function(_0x565ee4){return Number(_0x565ee4);});_0x16028b['forEach'](function(_0x44e05b){_0x30c76e['or'](_0xdb32('0x6a'),'%,'+_0x44e05b+',%');});_0x16f679=_[_0xdb32('0x6b')](_0x16f679,_0x16028b);break;case _0xdb32('0x6c'):if(_0x136c1f[_0xdb32('0x62')]==='$substring'){_0x214c29[_0x36c691](_0xdb32('0x6d'),'%'+_0x136c1f['value']+'%',null);}else{_0x2ba2f8=_[_0xdb32('0x5d')](_0x4b5f2c,['name','UserId']);_0x136c1f['field']=_0xdb32('0x6e');_0x55264f=as['buildExpression'](_0x54b306,_0x2ba2f8[_0xdb32('0x3b')],_0x136c1f);_0x214c29[_0x36c691](_0x55264f[_0xdb32('0x67')],_0x55264f['value'][_0xdb32('0x68')],_0x55264f['value'][_0xdb32('0x24')]);}break;case _0xdb32('0x6f'):_0x55264f=as[_0xdb32('0x66')]('me',null,_0x136c1f);_0x214c29[_0x36c691](_0x55264f['text'],_0x55264f['value']['start'],_0x55264f[_0xdb32('0x5e')]['end']);break;}}else{var _0x55264f=as[_0xdb32('0x66')](_0x54b306,_0x2ba2f8['type'],_0x136c1f);_0x214c29[_0x36c691](_0x55264f[_0xdb32('0x67')],_0x55264f[_0xdb32('0x5e')][_0xdb32('0x68')],_0x55264f[_0xdb32('0x5e')]['end']);}}}else{var _0x379318=_(_0x3e9c95[_0xdb32('0x3d')])[_0xdb32('0x3e')]()[_0xdb32('0x32')](function(_0x2d372d){return _['some'](_0x4b5f2c,['name',_0x2d372d])?_0x2d372d:undefined;})[_0xdb32('0x70')]()[_0xdb32('0x5e')]();if(!_[_0xdb32('0x71')](_0x379318)){_0x379318['forEach'](function(_0xd8cdec){if(_0xd8cdec===_0xdb32('0x72')){_0x2d60d8[_0xdb32('0x4a')](_0xdb32('0x73'),[]['concat'](_0x3e9c95[_0xdb32('0x3d')][_0xd8cdec]));}else if(_0xd8cdec===_0xdb32('0x74')){var _0x4628b0=JSON[_0xdb32('0x75')](_0x3e9c95[_0xdb32('0x3d')][_0xd8cdec])[_0xdb32('0x76')];var _0x525369=JSON[_0xdb32('0x75')](_0x3e9c95[_0xdb32('0x3d')][_0xd8cdec])[_0xdb32('0x77')];_0x2d60d8['where'](_0xdb32('0x78'),_0x4628b0,_0x525369);}else{if(_0x3e9c95[_0xdb32('0x3d')][_0xd8cdec]===_0xdb32('0x79')){_0x2d60d8[_0xdb32('0x4a')]('i.'+_0xd8cdec+'\x20IS\x20NULL');}else{_0x2d60d8[_0xdb32('0x4a')]('i.'+_0xd8cdec+_0xdb32('0x7a'),_0x3e9c95[_0xdb32('0x3d')][_0xd8cdec]);}}});}if(_0x3e9c95[_0xdb32('0x3d')]['read']){if(_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x7b')]==0x1){_0x2d60d8[_0xdb32('0x5f')]('`unreadMessages`\x20=\x200');}else{_0x2d60d8[_0xdb32('0x5f')](_0xdb32('0x7c'));}}if(_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x7d')]){_0x16f679=_[_0xdb32('0x7e')](_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x7d')])?_0x3e9c95['query'][_0xdb32('0x7d')]:new Array(_0x3e9c95['query'][_0xdb32('0x7d')]);_0x16f679[_0xdb32('0x7f')](function(_0x7b3dd1){_0x30c76e['or'](_0xdb32('0x6a'),'%,'+_0x7b3dd1+',%');});}if(_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x80')]){var _0x21f0d7=_0x3e9c95['query'][_0xdb32('0x80')][_0xdb32('0x81')]('\x5c','\x5c\x5c')[_0xdb32('0x81')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x21f0d7)){_0x214c29['or'](_0xdb32('0x82'),_0x21f0d7+'%')['or'](_0xdb32('0x83'),_0x21f0d7+'%');}else{_0x214c29['or'](_0xdb32('0x84'),qs[_0xdb32('0x85')](_0x21f0d7))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x21f0d7+'%');}}}_0x2d60d8[_0xdb32('0x4a')](_0x214c29);_0x2d60d8[_0xdb32('0x86')](_0xdb32('0x87'));var _0x43449b={'type':db[_0xdb32('0x88')]['QueryTypes'][_0xdb32('0x89')],'raw':!![]};var _0x2811bc=_0x2d60d8[_0xdb32('0x8a')]();_0x2811bc['field']('i.id');_0x2811bc[_0xdb32('0x4c')](_0xdb32('0x8b'),'unreadMessages');if(_0x4b46fd[_0xdb32('0x48')]){_0x4b46fd[_0xdb32('0x48')][_0xdb32('0x7f')](function(_0xcd876b){var _0x4924b9=_0xcd876b[0x0]===_0xdb32('0x8c')?_0xcd876b[0x0]:'i.'+_0xcd876b[0x0];_0x2d60d8[_0xdb32('0x48')](_0x4924b9,_0xcd876b[0x1]===_0xdb32('0x8d')?![]:!![]);});}if(!_[_0xdb32('0x71')](_0x16f679)){_0x2d60d8[_0xdb32('0x5f')](_0x30c76e);_0x2811bc[_0xdb32('0x4a')](_0xdb32('0x8e'),_0x16f679);}BPromise['resolve']()[_0xdb32('0x2c')](function(){if(!_0x19b29c){if(_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x72')])return;_0x2811bc[_0xdb32('0x4a')](_0xdb32('0x8f'));_0x2d60d8[_0xdb32('0x4a')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3e9c95['user']['role']!==_0xdb32('0x90'))return;return _0x3e9c95[_0xdb32('0x91')][_0xdb32('0x92')]({'attributes':['id'],'raw':!![]})[_0xdb32('0x2c')](function(_0x444aad){if(_[_0xdb32('0x71')](_0x444aad)){_0x2811bc[_0xdb32('0x4a')](_0xdb32('0x93'));_0x2d60d8[_0xdb32('0x4a')]('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x2811bc['where'](_0xdb32('0x73'),_['map'](_0x444aad,'id'));_0x2d60d8[_0xdb32('0x4a')](_0xdb32('0x73'),_[_0xdb32('0x32')](_0x444aad,'id'));}});})[_0xdb32('0x2c')](function(){if(_0x3e9c95[_0xdb32('0x91')][_0xdb32('0x94')]===_0xdb32('0x90')&&!_0x19b29c&&!_0x3e9c95[_0xdb32('0x3d')]['WhatsappAccountId'])return[];return db[_0xdb32('0x95')][_0xdb32('0x3d')](_0x2811bc[_0xdb32('0x96')](),_0x43449b);})['then'](function(_0x505640){_0x3b2253[_0xdb32('0x27')]=_0x505640['length'];if(_0x3b2253[_0xdb32('0x27')]===0x0)return[];return db[_0xdb32('0x95')]['query'](_0x3baf71[_0xdb32('0x96')](),_0x43449b)[_0xdb32('0x2c')](function(_0xb0ad86){_0x9e8ca3=_[_0xdb32('0x97')](_0xb0ad86,'id');_0x43449b=_[_0xdb32('0x98')](_0x43449b,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3e9c95[_0xdb32('0x3d')][_0xdb32('0x42')]){_0x4b46fd[_0xdb32('0x43')][_0xdb32('0x7f')](function(_0x4ccaa5){_0x2d60d8[_0xdb32('0x4c')]('i.'+_0x4ccaa5);});}else{_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0x8b'),_0xdb32('0x99'));_0x2d60d8['field'](_0xdb32('0x9a'),_0xdb32('0x9b'));_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0x9c'),_0xdb32('0x9d'));_0x2d60d8[_0xdb32('0x4c')]('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',_0xdb32('0x8c'));_0x2d60d8['field'](_0xdb32('0x9e'));_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0x9f'),_0xdb32('0xa0'));_0x2d60d8['field']('c.lastName',_0xdb32('0xa1'));_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0xa2'),_0xdb32('0xa3'));_0x2d60d8[_0xdb32('0x4c')]('c.phone',_0xdb32('0xa4'));_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0xa5'),_0xdb32('0xa6'));_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0xa7'),_0xdb32('0xa8'));_0x2d60d8[_0xdb32('0x4c')]('o.fullname','Owner.fullname');_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0xa9'),_0xdb32('0xaa'));_0x2d60d8[_0xdb32('0x4c')](_0xdb32('0xab'),_0xdb32('0x35'));}if(_0x4b46fd['limit'])_0x2d60d8['limit'](_0x4b46fd[_0xdb32('0x47')]);if(_0x4b46fd[_0xdb32('0x26')])_0x2d60d8[_0xdb32('0x26')](_0x4b46fd['offset']);return db['sequelize']['query'](_0x2d60d8[_0xdb32('0x96')](),_0x43449b);})[_0xdb32('0x2c')](function(_0xd8c992){if(_0xd8c992[_0xdb32('0x44')]>0x0)_0x496070[_0xdb32('0x4a')](_0xdb32('0xac'),_[_0xdb32('0x32')](_0xd8c992,'id'));return db[_0xdb32('0x95')][_0xdb32('0x3d')](_0x496070[_0xdb32('0x96')](),_0x43449b)[_0xdb32('0x2c')](function(_0x4ff669){var _0x33c525=_['groupBy'](_0x4ff669,_0xdb32('0xad'));var _0x5ea9fb=[];_0xd8c992[_0xdb32('0x7f')](function(_0x19a3fb){_0x5ea9fb['push'](updateWhatsappInteraction(_0x19a3fb,_0x9e8ca3,_0x33c525));});return BPromise[_0xdb32('0xae')](_0x5ea9fb);});});})['then'](function(_0x16b673){_0x3b2253[_0xdb32('0xaf')]=_0x16b673;return _0x3b2253;})['then'](respondWithFilteredResult(_0x4d17a4,_0x4b46fd))[_0xdb32('0x37')](handleError(_0x4d17a4,null));};exports[_0xdb32('0xb0')]=function(_0x561b97,_0x489b72){var _0xb12e89={'raw':![],'where':{'id':_0x561b97[_0xdb32('0xb1')]['id']}},_0x4cc973={};_0x4cc973['model']=_[_0xdb32('0x3e')](db[_0xdb32('0x39')]['rawAttributes']);_0x4cc973[_0xdb32('0x3d')]=_['keys'](_0x561b97[_0xdb32('0x3d')]);_0x4cc973[_0xdb32('0x3f')]=_[_0xdb32('0x40')](_0x4cc973[_0xdb32('0x41')],_0x4cc973['query']);_0xb12e89[_0xdb32('0x43')]=_[_0xdb32('0x40')](_0x4cc973[_0xdb32('0x41')],qs['fields'](_0x561b97[_0xdb32('0x3d')][_0xdb32('0x42')]));_0xb12e89[_0xdb32('0x43')]=_0xb12e89['attributes'][_0xdb32('0x44')]?_0xb12e89[_0xdb32('0x43')]:_0x4cc973[_0xdb32('0x41')];if(_0x561b97[_0xdb32('0x3d')][_0xdb32('0xb2')]){_0xb12e89[_0xdb32('0xb3')]=[{'all':!![]}];}_0xb12e89=_[_0xdb32('0x98')]({},_0xb12e89,_0x561b97[_0xdb32('0xb4')]);return db['WhatsappInteraction'][_0xdb32('0x5d')](_0xb12e89)['then'](handleEntityNotFound(_0x489b72,null))['then'](respondWithResult(_0x489b72,null))['catch'](handleError(_0x489b72,null));};exports['create']=function(_0x3e1467,_0x882b4f){return db['WhatsappInteraction'][_0xdb32('0xb5')](_0x3e1467[_0xdb32('0x6f')],{})[_0xdb32('0x2c')](respondWithResult(_0x882b4f,0xc9))[_0xdb32('0x37')](handleError(_0x882b4f,null));};exports[_0xdb32('0x2b')]=function(_0x33785c,_0x187a4b){if(_0x33785c[_0xdb32('0x6f')]['id']){delete _0x33785c[_0xdb32('0x6f')]['id'];}return db['WhatsappInteraction'][_0xdb32('0x5d')]({'where':{'id':_0x33785c['params']['id']}})[_0xdb32('0x2c')](handleEntityNotFound(_0x187a4b,null))[_0xdb32('0x2c')](saveUpdates(_0x33785c[_0xdb32('0x6f')],null))['then'](respondWithResult(_0x187a4b,null))[_0xdb32('0x37')](handleError(_0x187a4b,null));};exports['destroy']=function(_0x4ab361,_0x5deb9c){return db['WhatsappInteraction']['find']({'where':{'id':_0x4ab361[_0xdb32('0xb1')]['id']}})[_0xdb32('0x2c')](handleEntityNotFound(_0x5deb9c,null))[_0xdb32('0x2c')](removeEntity(_0x5deb9c,null))[_0xdb32('0x37')](handleError(_0x5deb9c,null));};exports[_0xdb32('0xb6')]=function(_0x5015f0,_0x122257){return db[_0xdb32('0x39')][_0xdb32('0xb6')]()[_0xdb32('0x2c')](respondWithResult(_0x122257,null))[_0xdb32('0x37')](handleError(_0x122257,null));};exports['addMessage']=function(_0x13cf01,_0x596a66,_0x16a0df){return db['WhatsappMessage'][_0xdb32('0x5d')]({'where':{'id':_0x13cf01[_0xdb32('0xb1')]['id']}})[_0xdb32('0x2c')](handleEntityNotFound(_0x596a66,null))[_0xdb32('0x2c')](function(_0x5a08dd){if(_0x5a08dd){return _0x5a08dd['addMessage'](_0x13cf01['body'][_0xdb32('0xb7')],_[_0xdb32('0xb8')](_0x13cf01[_0xdb32('0x6f')],['ids','id'])||{});}})[_0xdb32('0x2c')](respondWithResult(_0x596a66,null))['catch'](handleError(_0x596a66,null));};exports[_0xdb32('0xb9')]=function(_0x909fa5,_0x23edb,_0x18a778){var _0x5964b3={'raw':![],'where':{}};var _0x17e7d7={};var _0x2d9e7b={'count':0x0,'rows':[]};return db[_0xdb32('0x39')][_0xdb32('0xba')]({'where':{'id':_0x909fa5[_0xdb32('0xb1')]['id']}})[_0xdb32('0x2c')](handleEntityNotFound(_0x23edb,null))[_0xdb32('0x2c')](function(_0x4784e1){if(_0x4784e1){_0x17e7d7['model']=_[_0xdb32('0x3e')](db[_0xdb32('0xbb')]['rawAttributes']);_0x17e7d7[_0xdb32('0x3d')]=_[_0xdb32('0x3e')](_0x909fa5[_0xdb32('0x3d')]);_0x17e7d7['filters']=_[_0xdb32('0x40')](_0x17e7d7[_0xdb32('0x41')],_0x17e7d7[_0xdb32('0x3d')]);_0x5964b3[_0xdb32('0x43')]=_[_0xdb32('0x40')](_0x17e7d7[_0xdb32('0x41')],qs['fields'](_0x909fa5['query'][_0xdb32('0x42')]));_0x5964b3['attributes']=_0x5964b3[_0xdb32('0x43')][_0xdb32('0x44')]?_0x5964b3[_0xdb32('0x43')]:_0x17e7d7['model'];if(!_0x909fa5[_0xdb32('0x3d')][_0xdb32('0x45')]('nolimit')){_0x5964b3['limit']=qs[_0xdb32('0x47')](_0x909fa5[_0xdb32('0x3d')]['limit']);_0x5964b3['offset']=qs['offset'](_0x909fa5[_0xdb32('0x3d')][_0xdb32('0x26')]);}_0x5964b3[_0xdb32('0x48')]=qs[_0xdb32('0x49')](_0x909fa5[_0xdb32('0x3d')][_0xdb32('0x49')]);_0x5964b3['where']=qs[_0xdb32('0x3f')](_[_0xdb32('0xbc')](_0x909fa5[_0xdb32('0x3d')],_0x17e7d7[_0xdb32('0x3f')]));_0x5964b3['where']['WhatsappInteractionId']=_0x4784e1['id'];if(_0x909fa5[_0xdb32('0x3d')][_0xdb32('0x80')]){_0x5964b3[_0xdb32('0x4a')]=_['merge'](_0x5964b3['where'],{'$or':_['map'](_0x5964b3[_0xdb32('0x43')],function(_0x560f37){var _0xbb5129={};_0xbb5129[_0x560f37]={'$like':'%'+_0x909fa5['query'][_0xdb32('0x80')]+'%'};return _0xbb5129;})});}if(_0x909fa5[_0xdb32('0x3d')][_0xdb32('0x76')]){var _0x5a683f=_0x909fa5['query']['$gte'][_0xdb32('0x36')](',');var _0x351ecb={};_0x351ecb[_0x5a683f[0x0]]={'$gte':moment(_0x5a683f[0x1])['format'](_0xdb32('0xbd'))};_0x5964b3[_0xdb32('0x4a')]=_[_0xdb32('0x98')](_0x5964b3[_0xdb32('0x4a')],_0x351ecb);}_0x5964b3=_['merge']({},_0x5964b3,_0x909fa5[_0xdb32('0xb4')]);return db[_0xdb32('0xbb')][_0xdb32('0x27')]({'where':_0x5964b3[_0xdb32('0x4a')]})[_0xdb32('0x2c')](function(_0x9075d8){_0x2d9e7b[_0xdb32('0x27')]=_0x9075d8;if(_0x909fa5[_0xdb32('0x3d')][_0xdb32('0xb2')]){_0x5964b3['include']=[{'all':!![]}];}return db[_0xdb32('0xbb')][_0xdb32('0xbe')](_0x5964b3);})[_0xdb32('0x2c')](function(_0xcb1687){_0x2d9e7b['rows']=_0xcb1687;return _0x2d9e7b;});}})[_0xdb32('0x2c')](respondWithFilteredResult(_0x23edb,_0x5964b3))[_0xdb32('0x37')](handleError(_0x23edb,null));};exports['addTags']=function(_0x5dedfb,_0x730256,_0x54bed0){return db[_0xdb32('0x39')]['find']({'where':{'id':_0x5dedfb['params']['id']}})[_0xdb32('0x2c')](handleEntityNotFound(_0x730256,null))[_0xdb32('0x2c')](function(_0x12ffdd){if(_0x12ffdd){return _0x12ffdd[_0xdb32('0xbf')](_0x5dedfb[_0xdb32('0x6f')][_0xdb32('0xb7')],_['omit'](_0x5dedfb[_0xdb32('0x6f')],[_0xdb32('0xb7'),'id'])||{})[_0xdb32('0xc0')](function(){return db[_0xdb32('0x69')][_0xdb32('0xbe')]({'attributes':['id',_0xdb32('0x2f'),'color'],'where':{'id':_0x5dedfb[_0xdb32('0x6f')][_0xdb32('0xb7')]}});})[_0xdb32('0x2c')](function(_0x9e71ce){socket[_0xdb32('0xc1')]('whatsappInteractionTags:save',{'id':Number(_0x5dedfb[_0xdb32('0xb1')]['id']),'tags':_0x9e71ce||[]});return{'id':Number(_0x5dedfb[_0xdb32('0xb1')]['id']),'tags':_0x9e71ce||[]};});}})[_0xdb32('0x2c')](respondWithResult(_0x730256,null))[_0xdb32('0x37')](handleError(_0x730256,null));};exports[_0xdb32('0xc2')]=function(_0x3f5fc7,_0x12e77d,_0x4b891b){return db[_0xdb32('0x39')][_0xdb32('0x5d')]({'where':{'id':_0x3f5fc7[_0xdb32('0xb1')]['id']}})['then'](handleEntityNotFound(_0x12e77d,null))[_0xdb32('0x2c')](function(_0x3b8683){if(_0x3b8683){return _0x3b8683[_0xdb32('0xc2')](_0x3f5fc7[_0xdb32('0x3d')][_0xdb32('0xb7')]);}})[_0xdb32('0x2c')](respondWithStatusCode(_0x12e77d,null))[_0xdb32('0x37')](handleError(_0x12e77d,null));};exports[_0xdb32('0xc3')]=function(_0x1ab461,_0x2ee165){var _0x12b47b=moment()['unix']()['toString']();var _0x25c45b=path[_0xdb32('0xc4')](config[_0xdb32('0xc5')],_0xdb32('0xc6'),_0xdb32('0xc7'),_0xdb32('0xc8'));var _0x3dc053=path[_0xdb32('0xc4')](config[_0xdb32('0xc5')],_0xdb32('0xc6'),_0xdb32('0xc7'),_0xdb32('0xc9'));var _0x316ebc=path['join'](_0x25c45b,_0x12b47b);var _0x11a923=util[_0xdb32('0xca')](_0xdb32('0xcb'),_0x1ab461[_0xdb32('0xb1')]['id'],_0x12b47b);var _0x2e9148=path[_0xdb32('0xc4')](_0x25c45b,_0x11a923);var _0x256eec=[];_0x256eec[_0xdb32('0xcc')]({'model':db[_0xdb32('0x6c')],'as':_0xdb32('0x6c'),'attributes':['id',_0xdb32('0x33')],'raw':!![]});_0x256eec['push']({'model':db[_0xdb32('0xcd')],'as':'Contact','attributes':['id',_0xdb32('0xce'),'lastName'],'raw':!![]});if(_0x1ab461[_0xdb32('0x3d')]['attachments']){_0x256eec[_0xdb32('0xcc')]({'model':db[_0xdb32('0xcf')],'as':_0xdb32('0xcf'),'raw':!![]});}var _0x58991a=[{'model':db[_0xdb32('0xbb')],'as':_0xdb32('0xd0'),'attributes':['id','body',_0xdb32('0x74'),_0xdb32('0xd1'),_0xdb32('0xd2'),'read'],'include':_0x256eec}];_0x58991a[_0xdb32('0xcc')]({'model':db[_0xdb32('0xd3')],'as':_0xdb32('0xd4'),'attributes':['id',_0xdb32('0x2f')]});_0x58991a[_0xdb32('0xcc')]({'model':db[_0xdb32('0x6c')],'as':_0xdb32('0xd5'),'attributes':['id',_0xdb32('0x33')]});return db[_0xdb32('0x39')][_0xdb32('0x5d')]({'where':{'id':_0x1ab461[_0xdb32('0xb1')]['id']},'include':_0x58991a})[_0xdb32('0x2c')](handleEntityNotFound(_0x2ee165,null))[_0xdb32('0x2c')](function(_0x51fb0b){if(_0x51fb0b){var _0x498e7c=_0x51fb0b[_0xdb32('0xd6')]({'plain':!![]});fs[_0xdb32('0xd7')](_0x316ebc);var _0x54f496={'channel':_0xdb32('0xd8'),'account':_0x498e7c[_0xdb32('0xd4')]['name'],'agent':_0x498e7c[_0xdb32('0xd5')]?_0x498e7c[_0xdb32('0xd5')][_0xdb32('0x33')]:_0xdb32('0xd9'),'createdAt':moment(_0x498e7c['createdAt'])[_0xdb32('0xca')]('YYYY-MM-DD\x20HH:mm:ss')[_0xdb32('0x96')](),'closedAt':_0x498e7c['closed']?moment(_0x498e7c['closedAt'])[_0xdb32('0xca')](_0xdb32('0xbd'))[_0xdb32('0x96')]():'','disposition':_0x498e7c[_0xdb32('0xda')],'messages':_(_0x498e7c[_0xdb32('0xd0')])[_0xdb32('0x80')]({'secret':![]})[_0xdb32('0x32')](function(_0x57400c){if(_0x57400c['Attachment']){var _0x453cf3=path[_0xdb32('0xc4')](_0x3dc053,_0x57400c[_0xdb32('0xcf')]['basename']);if(fs['existsSync'](_0x453cf3)){fs[_0xdb32('0xdb')](_0x453cf3)[_0xdb32('0xdc')](fs['createWriteStream'](path[_0xdb32('0xc4')](_0x316ebc,_0x57400c[_0xdb32('0xcf')]['basename'])));}}return{'date':moment(_0x57400c[_0xdb32('0x74')])[_0xdb32('0xca')](_0xdb32('0xbd'))[_0xdb32('0x96')](),'sender':_0x57400c['direction']==='out'?_0x57400c[_0xdb32('0x6c')]?_0x57400c[_0xdb32('0x6c')][_0xdb32('0x33')]:'System':_0x57400c[_0xdb32('0x61')][_0xdb32('0xce')]+(_0x57400c[_0xdb32('0x61')][_0xdb32('0xdd')]?'\x20'+_0x57400c['Contact'][_0xdb32('0xdd')]:''),'body':_0x57400c['Attachment']?_0x57400c[_0xdb32('0xcf')][_0xdb32('0xde')]:_0x57400c[_0xdb32('0x6f')],'direction':_0x57400c[_0xdb32('0xd1')]===_0xdb32('0xdf')?'A':'C','secret':_0x57400c[_0xdb32('0xd2')],'read':_0x57400c['read'],'attachment':_0x57400c[_0xdb32('0xcf')]};})[_0xdb32('0x5e')]()};return ejs[_0xdb32('0xe0')](path[_0xdb32('0xc4')](config[_0xdb32('0xc5')],'server','views',_0xdb32('0xe1')),{'interaction':_0x54f496})[_0xdb32('0x2c')](function(_0xefb647){var _0x378b7e=path['join'](_0x316ebc,_0xdb32('0xe2')+_0x498e7c['id']+'-'+_0x12b47b+_0xdb32('0xe3'));var _0x534f90={'path':_0x378b7e,'channel':'Whatsapp','interactionId':_0x498e7c['id']};return pdf[_0xdb32('0xe4')](_0xefb647,_0x534f90);})[_0xdb32('0x2c')](function(){return new BPromise(function(_0x5926fc,_0x54056d){zipdir(_0x316ebc,{'saveTo':_0x2e9148},function(_0x18d612,_0x1c34a6){if(_0x18d612)return _0x54056d(_0x18d612);return _0x5926fc(_0x1c34a6);});})['then'](function(){return new BPromise(function(_0x1ceec9,_0x7578b4){rimraf(_0x316ebc,function(_0x1350cd){if(_0x1350cd)_0x7578b4(_0x1350cd);return _0x1ceec9();});});})[_0xdb32('0x2c')](function(){return _0x2ee165['download'](_0x2e9148,_0x11a923,function(_0x113888){if(_0x113888){console[_0xdb32('0xe5')](_0xdb32('0xe6'),_0x113888);}else{fs['unlinkSync'](_0x2e9148);}});});});}else{return _0x2ee165[_0xdb32('0x22')](0xc8);}})[_0xdb32('0x37')](handleError(_0x2ee165,null));};
\ No newline at end of file
+var _0xa4de=['Messages','direction','secret','WhatsappAccount','Account','get','mkdirSync','Whatsapp','Owner','N.A.','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','disposition','existsSync','createReadStream','createWriteStream','basename','System','out','server','views','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','count','Content-Range','reject','save','update','then','error','stack','name','send','map','fullname','TagIds','split','forEach','Tags','catch','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','offset','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','Contact','operator','$substring','value','getFullTextValue','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','User','UserId','body','some','compact','isEmpty','WhatsappAccountId','where','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SELECT','clone','i.id','order','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','sequelize','keyBy','merge','WhatsappInteraction','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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','toString','WhatsappInteractionId','push','show','includeAll','include','options','create','params','destroy','describe','addMessage','WhatsappMessage','omit','getMessages','findOne','findAll','rows','addTags','ids','spread','emit','removeTags','download','root','attachments','join','transcript-%d-%s.zip','CmContact','lastName','Attachment'];(function(_0x1f9bce,_0x1554e6){var _0x549bf3=function(_0x45cc74){while(--_0x45cc74){_0x1f9bce['push'](_0x1f9bce['shift']());}};_0x549bf3(++_0x1554e6);}(_0xa4de,0x10d));var _0xea4d=function(_0x330130,_0x58eb6f){_0x330130=_0x330130-0x0;var _0x1dadb3=_0xa4de[_0x330130];return _0x1dadb3;};'use strict';var emlformat=require(_0xea4d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xea4d('0x1'));var rp=require(_0xea4d('0x2'));var moment=require(_0xea4d('0x3'));var BPromise=require(_0xea4d('0x4'));var Mustache=require(_0xea4d('0x5'));var util=require(_0xea4d('0x6'));var path=require(_0xea4d('0x7'));var sox=require(_0xea4d('0x8'));var csv=require(_0xea4d('0x9'));var ejs=require(_0xea4d('0xa'));var fs=require('fs');var fs_extra=require(_0xea4d('0xb'));var _=require(_0xea4d('0xc'));var squel=require('squel');var crypto=require(_0xea4d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xea4d('0xe'));var toCsv=require(_0xea4d('0x9'));var querystring=require(_0xea4d('0xf'));var Papa=require(_0xea4d('0x10'));var Redis=require(_0xea4d('0x11'));var authService=require(_0xea4d('0x12'));var qs=require(_0xea4d('0x13'));var as=require(_0xea4d('0x14'));var pdf=require(_0xea4d('0x15'));var hardwareService=require(_0xea4d('0x16'));var logger=require(_0xea4d('0x17'))(_0xea4d('0x18'));var utils=require('../../config/utils');var config=require(_0xea4d('0x19'));var licenseUtil=require(_0xea4d('0x1a'));var db=require(_0xea4d('0x1b'))['db'];config[_0xea4d('0x1c')]=_[_0xea4d('0x1d')](config['redis'],{'host':_0xea4d('0x1e'),'port':0x18eb});var socket=require(_0xea4d('0x1f'))(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0xea4d('0x20')](socket);function respondWithStatusCode(_0x3d68e6,_0x3b9cdc){_0x3b9cdc=_0x3b9cdc||0xcc;return function(_0x3726c6){if(_0x3726c6){return _0x3d68e6[_0xea4d('0x21')](_0x3b9cdc);}return _0x3d68e6[_0xea4d('0x22')](_0x3b9cdc)[_0xea4d('0x23')]();};}function respondWithResult(_0x540814,_0x1fe57e){_0x1fe57e=_0x1fe57e||0xc8;return function(_0x5bdbc0){if(_0x5bdbc0){return _0x540814[_0xea4d('0x22')](_0x1fe57e)[_0xea4d('0x24')](_0x5bdbc0);}};}function respondWithFilteredResult(_0x1e7c8f,_0x16370e){return function(_0x33c232){if(_0x33c232){var _0x5d2912=typeof _0x16370e['offset']===_0xea4d('0x25')&&typeof _0x16370e['limit']===_0xea4d('0x25');var _0x59538e=_0x33c232[_0xea4d('0x26')];var _0x1dad15=_0x5d2912?0x0:_0x16370e['offset'];var _0x3cfdbd=_0x5d2912?_0x33c232[_0xea4d('0x26')]:_0x16370e['offset']+_0x16370e['limit'];var _0x36b6e1;if(_0x3cfdbd>=_0x59538e){_0x3cfdbd=_0x59538e;_0x36b6e1=0xc8;}else{_0x36b6e1=0xce;}_0x1e7c8f['status'](_0x36b6e1);return _0x1e7c8f['set'](_0xea4d('0x27'),_0x1dad15+'-'+_0x3cfdbd+'/'+_0x59538e)[_0xea4d('0x24')](_0x33c232);}return null;};}function patchUpdates(_0xd451a7){return function(_0x57ac74){try{jsonpatch['apply'](_0x57ac74,_0xd451a7,!![]);}catch(_0x110768){return BPromise[_0xea4d('0x28')](_0x110768);}return _0x57ac74[_0xea4d('0x29')]();};}function saveUpdates(_0x53f919,_0xd2fa11){return function(_0x2c10ca){if(_0x2c10ca){return _0x2c10ca[_0xea4d('0x2a')](_0x53f919)[_0xea4d('0x2b')](function(_0xb47f12){return _0xb47f12;});}return null;};}function removeEntity(_0x5ef167,_0x479731){return function(_0x2c7181){if(_0x2c7181){return _0x2c7181['destroy']()[_0xea4d('0x2b')](function(){_0x5ef167['status'](0xcc)[_0xea4d('0x23')]();});}};}function handleEntityNotFound(_0x475567,_0x18e4b0){return function(_0x4cbbd2){if(!_0x4cbbd2){_0x475567['sendStatus'](0x194);}return _0x4cbbd2;};}function handleError(_0x5102e4,_0x540b0c){_0x540b0c=_0x540b0c||0x1f4;return function(_0x3b9bd4){logger[_0xea4d('0x2c')](_0x3b9bd4[_0xea4d('0x2d')]);if(_0x3b9bd4[_0xea4d('0x2e')]){delete _0x3b9bd4[_0xea4d('0x2e')];}_0x5102e4[_0xea4d('0x22')](_0x540b0c)[_0xea4d('0x2f')](_0x3b9bd4);};}function getInteractionUsers(_0x563706,_0xd0a393){return new BPromise(function(_0xc99b7c,_0x4fef86){try{if(_0xd0a393[_0x563706['id']]){_0x563706['Users']=_[_0xea4d('0x30')](_0xd0a393[_0x563706['id']],function(_0x55cf34){return{'id':_0x55cf34['id'],'fullname':_0x55cf34[_0xea4d('0x31')]};});}}catch(_0x1285ce){_0x4fef86(_0x1285ce);}_0xc99b7c(_0x563706);});}function getInteractionTags(_0x4db0e3,_0x5a0127){return new BPromise(function(_0x224000,_0x34a66b){try{if(_0x4db0e3[_0xea4d('0x32')]){_0x4db0e3['Tags']=[];_0x4db0e3[_0xea4d('0x32')][_0xea4d('0x33')](',')[_0xea4d('0x34')](function(_0x15307f){_0x4db0e3[_0xea4d('0x35')]['push'](_0x5a0127[_0x15307f]);});}delete _0x4db0e3[_0xea4d('0x32')];}catch(_0x186071){_0x34a66b(_0x186071);}_0x224000(_0x4db0e3);});}function updateWhatsappInteraction(_0x3dfbab,_0x450a74,_0x36e3dd){return new BPromise(function(_0xf41d29,_0x31a305){return getInteractionUsers(_0x3dfbab,_0x36e3dd)[_0xea4d('0x2b')](function(_0x20919c){return getInteractionTags(_0x20919c,_0x450a74);})[_0xea4d('0x2b')](function(_0x42ded4){_0xf41d29(_0x42ded4);})[_0xea4d('0x36')](function(_0x436b9b){_0x31a305(_0x436b9b);});});}exports['index']=function(_0x35a772,_0xf5f2ae){var _0x233fb7={},_0x34ab1d={},_0x36445a={'count':0x0,'rows':[]};var _0x41ec2c=_[_0xea4d('0x30')](db['WhatsappInteraction'][_0xea4d('0x37')],function(_0xbff22e){return{'name':_0xbff22e[_0xea4d('0x38')],'type':_0xbff22e[_0xea4d('0x39')][_0xea4d('0x3a')]};});_0x34ab1d[_0xea4d('0x3b')]=_[_0xea4d('0x30')](_0x41ec2c,_0xea4d('0x2e'));_0x34ab1d[_0xea4d('0x3c')]=_[_0xea4d('0x3d')](_0x35a772['query']);_0x34ab1d['filters']=_[_0xea4d('0x3e')](_0x34ab1d[_0xea4d('0x3b')],_0x34ab1d[_0xea4d('0x3c')]);_0x233fb7[_0xea4d('0x3f')]=_['intersection'](_0x34ab1d[_0xea4d('0x3b')],qs[_0xea4d('0x40')](_0x35a772[_0xea4d('0x3c')][_0xea4d('0x40')]));_0x233fb7[_0xea4d('0x3f')]=_0x233fb7[_0xea4d('0x3f')][_0xea4d('0x41')]?_0x233fb7[_0xea4d('0x3f')]:_0x34ab1d[_0xea4d('0x3b')];if(!_0x35a772['query'][_0xea4d('0x42')](_0xea4d('0x43'))){_0x233fb7['limit']=qs[_0xea4d('0x44')](_0x35a772[_0xea4d('0x3c')]['limit']);_0x233fb7[_0xea4d('0x45')]=qs['offset'](_0x35a772[_0xea4d('0x3c')][_0xea4d('0x45')]);}_0x233fb7['order']=qs[_0xea4d('0x46')](_0x35a772[_0xea4d('0x3c')]['sort']);_0x233fb7['where']=qs[_0xea4d('0x47')](_[_0xea4d('0x48')](_0x35a772[_0xea4d('0x3c')],_0x34ab1d[_0xea4d('0x47')]),_0x41ec2c);var _0x4218c7=[];var _0x43f0da=squel[_0xea4d('0x49')]()[_0xea4d('0x4a')]('id')['field'](_0xea4d('0x2e'))[_0xea4d('0x4a')](_0xea4d('0x4b'))[_0xea4d('0x4c')](_0xea4d('0x4d'));var _0x12b472=squel[_0xea4d('0x49')]()[_0xea4d('0x4a')](_0xea4d('0x4e'))[_0xea4d('0x4a')](_0xea4d('0x4f'))['field'](_0xea4d('0x50'))['from'](_0xea4d('0x51'),'ui')['left_join']('users','u',_0xea4d('0x52'));var _0x2dee65=squel[_0xea4d('0x49')]()['from'](_0xea4d('0x53'),'i')[_0xea4d('0x54')](_0xea4d('0x55'),'c',_0xea4d('0x56'))[_0xea4d('0x54')](_0xea4d('0x57'),'o',_0xea4d('0x58'))[_0xea4d('0x54')](_0xea4d('0x59'),'a',_0xea4d('0x5a'))['left_join'](_0xea4d('0x5b'),'me','me.WhatsappInteractionId\x20=\x20i.id')['left_join'](_0xea4d('0x5c'),'it',_0xea4d('0x5d'))[_0xea4d('0x54')](_0xea4d('0x4d'),'t','t.id\x20=\x20it.TagId');var _0x50d05e=squel[_0xea4d('0x5e')]();var _0x5d1d2b=[];var _0xf115d0=squel[_0xea4d('0x5e')]();var _0x2f2e0f;if(_0x35a772[_0xea4d('0x3c')][_0xea4d('0x5f')]){_0x2f2e0f=as[_0xea4d('0x60')](_0x35a772[_0xea4d('0x3c')][_0xea4d('0x5f')]);var _0xb0d8f7=_0x2f2e0f[_0xea4d('0x61')];for(var _0x4247e9=0x0;_0x4247e9<_0x2f2e0f[_0xea4d('0x62')][_0xea4d('0x41')];_0x4247e9++){var _0xc800a6=_0x2f2e0f[_0xea4d('0x62')][_0x4247e9];var _0xbbe3ea='i';var _0x2602d7=_[_0xea4d('0x63')](_0x41ec2c,[_0xea4d('0x2e'),_0xc800a6[_0xea4d('0x4a')]]);if(!_0x2602d7){switch(_0xc800a6[_0xea4d('0x4a')]){case _0xea4d('0x64'):if(_0xc800a6['value']==0x1){_0x2dee65[_0xea4d('0x65')]('`'+_0xc800a6['field']+'`\x20=\x200');}else{_0x2dee65['having']('`'+_0xc800a6[_0xea4d('0x4a')]+'`\x20>\x200');}break;case _0xea4d('0x66'):if(_0xc800a6[_0xea4d('0x67')]===_0xea4d('0x68')){if(_0xc800a6[_0xea4d('0x69')][_0xea4d('0x33')]('\x20')[_0xea4d('0x41')]>0x1){_0x50d05e[_0xb0d8f7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xea4d('0x6a')](_0xc800a6[_0xea4d('0x69')]),null);}else{var _0x58572c='%'+_0xc800a6['value']+'%';_0x50d05e[_0xb0d8f7](_0xea4d('0x6b'),_0x58572c,_0x58572c,_0x58572c);}}else{_0x2602d7=_[_0xea4d('0x63')](_0x41ec2c,[_0xea4d('0x2e'),_0xea4d('0x6c')]);_0xc800a6[_0xea4d('0x4a')]=_0xea4d('0x6c');_0x1c4b0b=as[_0xea4d('0x6d')](_0xbbe3ea,_0x2602d7[_0xea4d('0x39')],_0xc800a6);_0x50d05e[_0xb0d8f7](_0x1c4b0b[_0xea4d('0x6e')],_0x1c4b0b[_0xea4d('0x69')][_0xea4d('0x6f')],_0x1c4b0b['value'][_0xea4d('0x23')]);}break;case _0xea4d('0x70'):var _0x51ecfb=_0xc800a6[_0xea4d('0x69')][_0xea4d('0x33')](',')[_0xea4d('0x30')](function(_0x460c2c){return Number(_0x460c2c);});_0x51ecfb[_0xea4d('0x34')](function(_0x1976f8){_0xf115d0['or'](_0xea4d('0x71'),'%,'+_0x1976f8+',%');});_0x5d1d2b=_[_0xea4d('0x72')](_0x5d1d2b,_0x51ecfb);break;case _0xea4d('0x73'):if(_0xc800a6['operator']===_0xea4d('0x68')){_0x50d05e[_0xb0d8f7]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xc800a6['value']+'%',null);}else{_0x2602d7=_[_0xea4d('0x63')](_0x41ec2c,[_0xea4d('0x2e'),_0xea4d('0x74')]);_0xc800a6['field']=_0xea4d('0x74');_0x1c4b0b=as[_0xea4d('0x6d')](_0xbbe3ea,_0x2602d7[_0xea4d('0x39')],_0xc800a6);_0x50d05e[_0xb0d8f7](_0x1c4b0b[_0xea4d('0x6e')],_0x1c4b0b['value']['start'],_0x1c4b0b['value'][_0xea4d('0x23')]);}break;case _0xea4d('0x75'):_0x1c4b0b=as['buildExpression']('me',null,_0xc800a6);_0x50d05e[_0xb0d8f7](_0x1c4b0b['text'],_0x1c4b0b['value'][_0xea4d('0x6f')],_0x1c4b0b['value'][_0xea4d('0x23')]);break;}}else{var _0x1c4b0b=as[_0xea4d('0x6d')](_0xbbe3ea,_0x2602d7[_0xea4d('0x39')],_0xc800a6);_0x50d05e[_0xb0d8f7](_0x1c4b0b[_0xea4d('0x6e')],_0x1c4b0b[_0xea4d('0x69')][_0xea4d('0x6f')],_0x1c4b0b[_0xea4d('0x69')][_0xea4d('0x23')]);}}}else{var _0x10aed3=_(_0x35a772['query'])[_0xea4d('0x3d')]()[_0xea4d('0x30')](function(_0x268414){return _[_0xea4d('0x76')](_0x41ec2c,[_0xea4d('0x2e'),_0x268414])?_0x268414:undefined;})[_0xea4d('0x77')]()[_0xea4d('0x69')]();if(!_[_0xea4d('0x78')](_0x10aed3)){_0x10aed3[_0xea4d('0x34')](function(_0x2aba1d){if(_0x2aba1d===_0xea4d('0x79')){_0x2dee65[_0xea4d('0x7a')]('i.WhatsappAccountId\x20IN\x20?',[][_0xea4d('0x7b')](_0x35a772[_0xea4d('0x3c')][_0x2aba1d]));}else if(_0x2aba1d===_0xea4d('0x7c')){var _0x1afbf2=JSON[_0xea4d('0x7d')](_0x35a772[_0xea4d('0x3c')][_0x2aba1d])[_0xea4d('0x7e')];var _0x2b152a=JSON[_0xea4d('0x7d')](_0x35a772[_0xea4d('0x3c')][_0x2aba1d])[_0xea4d('0x7f')];_0x2dee65[_0xea4d('0x7a')](_0xea4d('0x80'),_0x1afbf2,_0x2b152a);}else{if(_0x35a772[_0xea4d('0x3c')][_0x2aba1d]===_0xea4d('0x81')){_0x2dee65[_0xea4d('0x7a')]('i.'+_0x2aba1d+_0xea4d('0x82'));}else{_0x2dee65[_0xea4d('0x7a')]('i.'+_0x2aba1d+'\x20=\x20?',_0x35a772[_0xea4d('0x3c')][_0x2aba1d]);}}});}if(_0x35a772['query'][_0xea4d('0x83')]){if(_0x35a772[_0xea4d('0x3c')]['read']==0x1){_0x2dee65[_0xea4d('0x65')](_0xea4d('0x84'));}else{_0x2dee65[_0xea4d('0x65')](_0xea4d('0x85'));}}if(_0x35a772[_0xea4d('0x3c')][_0xea4d('0x86')]){_0x5d1d2b=_[_0xea4d('0x87')](_0x35a772[_0xea4d('0x3c')][_0xea4d('0x86')])?_0x35a772[_0xea4d('0x3c')]['tag']:new Array(_0x35a772[_0xea4d('0x3c')][_0xea4d('0x86')]);_0x5d1d2b[_0xea4d('0x34')](function(_0x4a9965){_0xf115d0['or'](_0xea4d('0x71'),'%,'+_0x4a9965+',%');});}if(_0x35a772[_0xea4d('0x3c')][_0xea4d('0x88')]){var _0x3b51ee=_0x35a772[_0xea4d('0x3c')]['filter'][_0xea4d('0x89')]('\x5c','\x5c\x5c')[_0xea4d('0x89')](/'/g,'\x27\x27');if(qs[_0xea4d('0x8a')](_0x3b51ee)){_0x50d05e['or']('i.id\x20LIKE\x20?',_0x3b51ee+'%')['or'](_0xea4d('0x8b'),_0x3b51ee+'%');}else{_0x50d05e['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xea4d('0x6a')](_0x3b51ee))['or'](_0xea4d('0x8c'),_0x3b51ee+'%');}}}_0x2dee65[_0xea4d('0x7a')](_0x50d05e);_0x2dee65[_0xea4d('0x8d')]('i.id');var _0x2c250b={'type':db[_0xea4d('0x8e')]['QueryTypes'][_0xea4d('0x8f')],'raw':!![]};var _0x31554b=_0x2dee65[_0xea4d('0x90')]();_0x31554b[_0xea4d('0x4a')](_0xea4d('0x91'));_0x31554b[_0xea4d('0x4a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xea4d('0x64'));if(_0x233fb7[_0xea4d('0x92')]){_0x233fb7['order'][_0xea4d('0x34')](function(_0x45468a){var _0x26eaa9=_0x45468a[0x0]==='contactName'?_0x45468a[0x0]:'i.'+_0x45468a[0x0];_0x2dee65[_0xea4d('0x92')](_0x26eaa9,_0x45468a[0x1]==='DESC'?![]:!![]);});}if(!_[_0xea4d('0x78')](_0x5d1d2b)){_0x2dee65['having'](_0xf115d0);_0x31554b['where'](_0xea4d('0x93'),_0x5d1d2b);}BPromise[_0xea4d('0x94')]()[_0xea4d('0x2b')](function(){if(!_0x2f2e0f){if(_0x35a772[_0xea4d('0x3c')]['WhatsappAccountId'])return;_0x31554b[_0xea4d('0x7a')](_0xea4d('0x95'));_0x2dee65[_0xea4d('0x7a')](_0xea4d('0x95'));return;}if(_0x35a772['user'][_0xea4d('0x96')]!==_0xea4d('0x97'))return;return _0x35a772[_0xea4d('0x98')][_0xea4d('0x99')]({'attributes':['id'],'raw':!![]})[_0xea4d('0x2b')](function(_0x1d20cb){if(_[_0xea4d('0x78')](_0x1d20cb)){_0x31554b[_0xea4d('0x7a')](_0xea4d('0x9a'));_0x2dee65[_0xea4d('0x7a')](_0xea4d('0x9a'));}else{_0x31554b[_0xea4d('0x7a')](_0xea4d('0x9b'),_[_0xea4d('0x30')](_0x1d20cb,'id'));_0x2dee65[_0xea4d('0x7a')](_0xea4d('0x9b'),_[_0xea4d('0x30')](_0x1d20cb,'id'));}});})[_0xea4d('0x2b')](function(){if(_0x35a772[_0xea4d('0x98')][_0xea4d('0x96')]===_0xea4d('0x97')&&!_0x2f2e0f&&!_0x35a772[_0xea4d('0x3c')][_0xea4d('0x79')])return[];return db[_0xea4d('0x9c')]['query'](_0x31554b['toString'](),_0x2c250b);})[_0xea4d('0x2b')](function(_0x515fb4){_0x36445a[_0xea4d('0x26')]=_0x515fb4[_0xea4d('0x41')];if(_0x36445a[_0xea4d('0x26')]===0x0)return[];return db[_0xea4d('0x9c')][_0xea4d('0x3c')](_0x43f0da['toString'](),_0x2c250b)[_0xea4d('0x2b')](function(_0x1779cd){_0x4218c7=_[_0xea4d('0x9d')](_0x1779cd,'id');_0x2c250b=_[_0xea4d('0x9e')](_0x2c250b,{'model':db[_0xea4d('0x9f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x35a772[_0xea4d('0x3c')][_0xea4d('0x40')]){_0x233fb7['attributes'][_0xea4d('0x34')](function(_0x307629){_0x2dee65[_0xea4d('0x4a')]('i.'+_0x307629);});}else{_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xa0'),_0xea4d('0x64'));_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xa1'),_0xea4d('0xa2'));_0x2dee65['field'](_0xea4d('0xa3'),_0xea4d('0xa4'));_0x2dee65['field'](_0xea4d('0xa5'),_0xea4d('0xa6'));_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xa7'));_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xa8'),_0xea4d('0xa9'));_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xaa'),_0xea4d('0xab'));_0x2dee65['field'](_0xea4d('0xac'),_0xea4d('0xad'));_0x2dee65['field'](_0xea4d('0xae'),_0xea4d('0xaf'));_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xb0'),'Contact.mobile');_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xb1'),_0xea4d('0xb2'));_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xb3'),'Owner.fullname');_0x2dee65['field']('o.internal','Owner.internal');_0x2dee65[_0xea4d('0x4a')](_0xea4d('0xb4'),_0xea4d('0x32'));}if(_0x233fb7[_0xea4d('0x44')])_0x2dee65['limit'](_0x233fb7['limit']);if(_0x233fb7['offset'])_0x2dee65[_0xea4d('0x45')](_0x233fb7[_0xea4d('0x45')]);return db[_0xea4d('0x9c')][_0xea4d('0x3c')](_0x2dee65['toString'](),_0x2c250b);})[_0xea4d('0x2b')](function(_0x30aa70){if(_0x30aa70['length']>0x0)_0x12b472[_0xea4d('0x7a')](_0xea4d('0xb5'),_[_0xea4d('0x30')](_0x30aa70,'id'));return db['sequelize']['query'](_0x12b472[_0xea4d('0xb6')](),_0x2c250b)['then'](function(_0x9e49d7){var _0x4d6b93=_['groupBy'](_0x9e49d7,_0xea4d('0xb7'));var _0xe4df8c=[];_0x30aa70[_0xea4d('0x34')](function(_0xbf4967){_0xe4df8c[_0xea4d('0xb8')](updateWhatsappInteraction(_0xbf4967,_0x4218c7,_0x4d6b93));});return BPromise['all'](_0xe4df8c);});});})['then'](function(_0x3e585e){_0x36445a['rows']=_0x3e585e;return _0x36445a;})[_0xea4d('0x2b')](respondWithFilteredResult(_0xf5f2ae,_0x233fb7))[_0xea4d('0x36')](handleError(_0xf5f2ae,null));};exports[_0xea4d('0xb9')]=function(_0x130b7d,_0x4c9dc1){var _0x4ea01d={'raw':![],'where':{'id':_0x130b7d['params']['id']}},_0xc3bf26={};_0xc3bf26[_0xea4d('0x3b')]=_['keys'](db['WhatsappInteraction'][_0xea4d('0x37')]);_0xc3bf26[_0xea4d('0x3c')]=_[_0xea4d('0x3d')](_0x130b7d[_0xea4d('0x3c')]);_0xc3bf26['filters']=_[_0xea4d('0x3e')](_0xc3bf26[_0xea4d('0x3b')],_0xc3bf26[_0xea4d('0x3c')]);_0x4ea01d[_0xea4d('0x3f')]=_[_0xea4d('0x3e')](_0xc3bf26[_0xea4d('0x3b')],qs['fields'](_0x130b7d[_0xea4d('0x3c')][_0xea4d('0x40')]));_0x4ea01d[_0xea4d('0x3f')]=_0x4ea01d[_0xea4d('0x3f')][_0xea4d('0x41')]?_0x4ea01d['attributes']:_0xc3bf26[_0xea4d('0x3b')];if(_0x130b7d[_0xea4d('0x3c')][_0xea4d('0xba')]){_0x4ea01d[_0xea4d('0xbb')]=[{'all':!![]}];}_0x4ea01d=_[_0xea4d('0x9e')]({},_0x4ea01d,_0x130b7d[_0xea4d('0xbc')]);return db[_0xea4d('0x9f')]['find'](_0x4ea01d)[_0xea4d('0x2b')](handleEntityNotFound(_0x4c9dc1,null))[_0xea4d('0x2b')](respondWithResult(_0x4c9dc1,null))[_0xea4d('0x36')](handleError(_0x4c9dc1,null));};exports[_0xea4d('0xbd')]=function(_0x2c3389,_0x27f973){return db['WhatsappInteraction']['create'](_0x2c3389[_0xea4d('0x75')],{})[_0xea4d('0x2b')](respondWithResult(_0x27f973,0xc9))[_0xea4d('0x36')](handleError(_0x27f973,null));};exports[_0xea4d('0x2a')]=function(_0x2eafed,_0xea3f0d){if(_0x2eafed[_0xea4d('0x75')]['id']){delete _0x2eafed['body']['id'];}return db[_0xea4d('0x9f')][_0xea4d('0x63')]({'where':{'id':_0x2eafed[_0xea4d('0xbe')]['id']}})['then'](handleEntityNotFound(_0xea3f0d,null))[_0xea4d('0x2b')](saveUpdates(_0x2eafed[_0xea4d('0x75')],null))[_0xea4d('0x2b')](respondWithResult(_0xea3f0d,null))[_0xea4d('0x36')](handleError(_0xea3f0d,null));};exports[_0xea4d('0xbf')]=function(_0x8f2234,_0x565358){return db['WhatsappInteraction']['find']({'where':{'id':_0x8f2234['params']['id']}})['then'](handleEntityNotFound(_0x565358,null))[_0xea4d('0x2b')](removeEntity(_0x565358,null))['catch'](handleError(_0x565358,null));};exports[_0xea4d('0xc0')]=function(_0x11133d,_0x10353e){return db['WhatsappInteraction'][_0xea4d('0xc0')]()[_0xea4d('0x2b')](respondWithResult(_0x10353e,null))['catch'](handleError(_0x10353e,null));};exports[_0xea4d('0xc1')]=function(_0x5952d0,_0x1167c3,_0x124e59){return db[_0xea4d('0xc2')][_0xea4d('0x63')]({'where':{'id':_0x5952d0[_0xea4d('0xbe')]['id']}})['then'](handleEntityNotFound(_0x1167c3,null))[_0xea4d('0x2b')](function(_0x54585d){if(_0x54585d){return _0x54585d['addMessage'](_0x5952d0[_0xea4d('0x75')]['ids'],_[_0xea4d('0xc3')](_0x5952d0[_0xea4d('0x75')],['ids','id'])||{});}})[_0xea4d('0x2b')](respondWithResult(_0x1167c3,null))[_0xea4d('0x36')](handleError(_0x1167c3,null));};exports[_0xea4d('0xc4')]=function(_0x5c07a5,_0x41dafe,_0x297669){var _0x15a127={'raw':![],'where':{}};var _0x397136={};var _0x5d53d8={'count':0x0,'rows':[]};return db[_0xea4d('0x9f')][_0xea4d('0xc5')]({'where':{'id':_0x5c07a5['params']['id']}})[_0xea4d('0x2b')](handleEntityNotFound(_0x41dafe,null))['then'](function(_0x8f81d8){if(_0x8f81d8){_0x397136[_0xea4d('0x3b')]=_[_0xea4d('0x3d')](db[_0xea4d('0xc2')][_0xea4d('0x37')]);_0x397136[_0xea4d('0x3c')]=_[_0xea4d('0x3d')](_0x5c07a5[_0xea4d('0x3c')]);_0x397136['filters']=_[_0xea4d('0x3e')](_0x397136['model'],_0x397136['query']);_0x15a127['attributes']=_[_0xea4d('0x3e')](_0x397136['model'],qs[_0xea4d('0x40')](_0x5c07a5['query']['fields']));_0x15a127[_0xea4d('0x3f')]=_0x15a127[_0xea4d('0x3f')]['length']?_0x15a127[_0xea4d('0x3f')]:_0x397136[_0xea4d('0x3b')];if(!_0x5c07a5['query']['hasOwnProperty']('nolimit')){_0x15a127[_0xea4d('0x44')]=qs[_0xea4d('0x44')](_0x5c07a5['query'][_0xea4d('0x44')]);_0x15a127[_0xea4d('0x45')]=qs[_0xea4d('0x45')](_0x5c07a5[_0xea4d('0x3c')][_0xea4d('0x45')]);}_0x15a127[_0xea4d('0x92')]=qs[_0xea4d('0x46')](_0x5c07a5[_0xea4d('0x3c')]['sort']);_0x15a127[_0xea4d('0x7a')]=qs[_0xea4d('0x47')](_[_0xea4d('0x48')](_0x5c07a5[_0xea4d('0x3c')],_0x397136[_0xea4d('0x47')]));_0x15a127['where']['WhatsappInteractionId']=_0x8f81d8['id'];if(_0x5c07a5['query']['filter']){_0x15a127[_0xea4d('0x7a')]=_[_0xea4d('0x9e')](_0x15a127[_0xea4d('0x7a')],{'$or':_['map'](_0x15a127[_0xea4d('0x3f')],function(_0x2d4f1a){var _0x10eb1f={};_0x10eb1f[_0x2d4f1a]={'$like':'%'+_0x5c07a5[_0xea4d('0x3c')][_0xea4d('0x88')]+'%'};return _0x10eb1f;})});}if(_0x5c07a5[_0xea4d('0x3c')][_0xea4d('0x7e')]){var _0x243d4d=_0x5c07a5['query'][_0xea4d('0x7e')][_0xea4d('0x33')](',');var _0x1b9160={};_0x1b9160[_0x243d4d[0x0]]={'$gte':moment(_0x243d4d[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x15a127[_0xea4d('0x7a')]=_[_0xea4d('0x9e')](_0x15a127[_0xea4d('0x7a')],_0x1b9160);}_0x15a127=_[_0xea4d('0x9e')]({},_0x15a127,_0x5c07a5[_0xea4d('0xbc')]);return db[_0xea4d('0xc2')][_0xea4d('0x26')]({'where':_0x15a127[_0xea4d('0x7a')]})[_0xea4d('0x2b')](function(_0x203b4b){_0x5d53d8[_0xea4d('0x26')]=_0x203b4b;if(_0x5c07a5[_0xea4d('0x3c')][_0xea4d('0xba')]){_0x15a127[_0xea4d('0xbb')]=[{'all':!![]}];}return db[_0xea4d('0xc2')][_0xea4d('0xc6')](_0x15a127);})[_0xea4d('0x2b')](function(_0x52f2a8){_0x5d53d8[_0xea4d('0xc7')]=_0x52f2a8;return _0x5d53d8;});}})['then'](respondWithFilteredResult(_0x41dafe,_0x15a127))['catch'](handleError(_0x41dafe,null));};exports[_0xea4d('0xc8')]=function(_0x11dcf4,_0x2fa9e4,_0x1be8e7){return db['WhatsappInteraction'][_0xea4d('0x63')]({'where':{'id':_0x11dcf4[_0xea4d('0xbe')]['id']}})[_0xea4d('0x2b')](handleEntityNotFound(_0x2fa9e4,null))[_0xea4d('0x2b')](function(_0x71ad41){if(_0x71ad41){return _0x71ad41['setTags'](_0x11dcf4['body'][_0xea4d('0xc9')],_[_0xea4d('0xc3')](_0x11dcf4['body'],[_0xea4d('0xc9'),'id'])||{})[_0xea4d('0xca')](function(){return db[_0xea4d('0x70')][_0xea4d('0xc6')]({'attributes':['id',_0xea4d('0x2e'),'color'],'where':{'id':_0x11dcf4[_0xea4d('0x75')][_0xea4d('0xc9')]}});})[_0xea4d('0x2b')](function(_0x2d2e34){socket[_0xea4d('0xcb')]('whatsappInteractionTags:save',{'id':Number(_0x11dcf4[_0xea4d('0xbe')]['id']),'tags':_0x2d2e34||[]});return{'id':Number(_0x11dcf4[_0xea4d('0xbe')]['id']),'tags':_0x2d2e34||[]};});}})[_0xea4d('0x2b')](respondWithResult(_0x2fa9e4,null))['catch'](handleError(_0x2fa9e4,null));};exports[_0xea4d('0xcc')]=function(_0x56f9b,_0x38fa56,_0x483d4f){return db['WhatsappInteraction'][_0xea4d('0x63')]({'where':{'id':_0x56f9b[_0xea4d('0xbe')]['id']}})[_0xea4d('0x2b')](handleEntityNotFound(_0x38fa56,null))['then'](function(_0x166d72){if(_0x166d72){return _0x166d72[_0xea4d('0xcc')](_0x56f9b[_0xea4d('0x3c')][_0xea4d('0xc9')]);}})[_0xea4d('0x2b')](respondWithStatusCode(_0x38fa56,null))['catch'](handleError(_0x38fa56,null));};exports[_0xea4d('0xcd')]=function(_0x55595e,_0x3556b4){var _0xbee443=moment()['unix']()['toString']();var _0x19e2bb=path['join'](config[_0xea4d('0xce')],'server','files','tmp');var _0x1ff484=path['join'](config[_0xea4d('0xce')],'server','files',_0xea4d('0xcf'));var _0xb29d5d=path[_0xea4d('0xd0')](_0x19e2bb,_0xbee443);var _0x1310d1=util['format'](_0xea4d('0xd1'),_0x55595e['params']['id'],_0xbee443);var _0x345b36=path['join'](_0x19e2bb,_0x1310d1);var _0x2adac5=[];_0x2adac5[_0xea4d('0xb8')]({'model':db[_0xea4d('0x73')],'as':_0xea4d('0x73'),'attributes':['id',_0xea4d('0x31')],'raw':!![]});_0x2adac5[_0xea4d('0xb8')]({'model':db[_0xea4d('0xd2')],'as':_0xea4d('0x66'),'attributes':['id','firstName',_0xea4d('0xd3')],'raw':!![]});if(_0x55595e['query'][_0xea4d('0xcf')]){_0x2adac5['push']({'model':db[_0xea4d('0xd4')],'as':'Attachment','raw':!![]});}var _0x5ae483=[{'model':db[_0xea4d('0xc2')],'as':_0xea4d('0xd5'),'attributes':['id',_0xea4d('0x75'),_0xea4d('0x7c'),_0xea4d('0xd6'),_0xea4d('0xd7'),_0xea4d('0x83')],'include':_0x2adac5}];_0x5ae483[_0xea4d('0xb8')]({'model':db[_0xea4d('0xd8')],'as':_0xea4d('0xd9'),'attributes':['id',_0xea4d('0x2e')]});_0x5ae483[_0xea4d('0xb8')]({'model':db['User'],'as':'Owner','attributes':['id',_0xea4d('0x31')]});return db[_0xea4d('0x9f')][_0xea4d('0x63')]({'where':{'id':_0x55595e[_0xea4d('0xbe')]['id']},'include':_0x5ae483})[_0xea4d('0x2b')](handleEntityNotFound(_0x3556b4,null))[_0xea4d('0x2b')](function(_0x42f464){if(_0x42f464){var _0x410dfc=_0x42f464[_0xea4d('0xda')]({'plain':!![]});fs[_0xea4d('0xdb')](_0xb29d5d);var _0x30a484={'channel':_0xea4d('0xdc'),'account':_0x410dfc[_0xea4d('0xd9')]['name'],'agent':_0x410dfc[_0xea4d('0xdd')]?_0x410dfc['Owner'][_0xea4d('0x31')]:_0xea4d('0xde'),'createdAt':moment(_0x410dfc[_0xea4d('0x7c')])[_0xea4d('0xdf')]('YYYY-MM-DD\x20HH:mm:ss')[_0xea4d('0xb6')](),'closedAt':_0x410dfc[_0xea4d('0xe0')]?moment(_0x410dfc[_0xea4d('0xe1')])[_0xea4d('0xdf')](_0xea4d('0xe2'))[_0xea4d('0xb6')]():'','disposition':_0x410dfc[_0xea4d('0xe3')],'messages':_(_0x410dfc['Messages'])[_0xea4d('0x88')]({'secret':![]})[_0xea4d('0x30')](function(_0x42883f){if(_0x42883f['Attachment']){var _0x3307f6=path[_0xea4d('0xd0')](_0x1ff484,_0x42883f[_0xea4d('0xd4')]['basename']);if(fs[_0xea4d('0xe4')](_0x3307f6)){fs[_0xea4d('0xe5')](_0x3307f6)['pipe'](fs[_0xea4d('0xe6')](path['join'](_0xb29d5d,_0x42883f[_0xea4d('0xd4')][_0xea4d('0xe7')])));}}return{'date':moment(_0x42883f[_0xea4d('0x7c')])[_0xea4d('0xdf')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x42883f[_0xea4d('0xd6')]==='out'?_0x42883f[_0xea4d('0x73')]?_0x42883f[_0xea4d('0x73')]['fullname']:_0xea4d('0xe8'):_0x42883f[_0xea4d('0x66')]['firstName']+(_0x42883f[_0xea4d('0x66')]['lastName']?'\x20'+_0x42883f[_0xea4d('0x66')][_0xea4d('0xd3')]:''),'body':_0x42883f[_0xea4d('0xd4')]?_0x42883f[_0xea4d('0xd4')][_0xea4d('0xe7')]:_0x42883f[_0xea4d('0x75')],'direction':_0x42883f['direction']===_0xea4d('0xe9')?'A':'C','secret':_0x42883f[_0xea4d('0xd7')],'read':_0x42883f[_0xea4d('0x83')],'attachment':_0x42883f['Attachment']};})[_0xea4d('0x69')]()};return ejs['renderFile'](path[_0xea4d('0xd0')](config[_0xea4d('0xce')],_0xea4d('0xea'),_0xea4d('0xeb'),'downloadInteraction.ejs'),{'interaction':_0x30a484})[_0xea4d('0x2b')](function(_0x13a4ea){var _0x4f1c97=path['join'](_0xb29d5d,_0xea4d('0xec')+_0x410dfc['id']+'-'+_0xbee443+_0xea4d('0xed'));var _0x4be112={'path':_0x4f1c97,'channel':_0xea4d('0xdc'),'interactionId':_0x410dfc['id']};return pdf[_0xea4d('0xee')](_0x13a4ea,_0x4be112);})[_0xea4d('0x2b')](function(){return new BPromise(function(_0x3c81dc,_0x3b3032){zipdir(_0xb29d5d,{'saveTo':_0x345b36},function(_0x4ca1c3,_0x4175e5){if(_0x4ca1c3)return _0x3b3032(_0x4ca1c3);return _0x3c81dc(_0x4175e5);});})['then'](function(){return new BPromise(function(_0x2f1b0d,_0x53d434){rimraf(_0xb29d5d,function(_0x31f9ef){if(_0x31f9ef)_0x53d434(_0x31f9ef);return _0x2f1b0d();});});})[_0xea4d('0x2b')](function(){return _0x3556b4['download'](_0x345b36,_0x1310d1,function(_0x559bb2){if(_0x559bb2){console[_0xea4d('0xef')]('err',_0x559bb2);}else{fs[_0xea4d('0xf0')](_0x345b36);}});});});}else{return _0x3556b4[_0xea4d('0x21')](0xc8);}})['catch'](handleError(_0x3556b4,null));};
\ No newline at end of file
index 60c19da..b75d0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38a5=['setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','setMaxListeners','save','update','remove','getUsers','then'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x38a5,0x69));var _0x538a=function(_0x44fb8f,_0x3aa2bb){_0x44fb8f=_0x44fb8f-0x0;var _0x2452d1=_0x38a5[_0x44fb8f];return _0x2452d1;};'use strict';var EventEmitter=require(_0x538a('0x0'));var WhatsappInteraction=require(_0x538a('0x1'))['db'][_0x538a('0x2')];var WhatsappMessage=require(_0x538a('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x538a('0x3')](0x0);var events={'afterCreate':_0x538a('0x4'),'afterUpdate':_0x538a('0x5'),'afterDestroy':_0x538a('0x6')};function emitEvent(_0x22163a){return function(_0x2b4063,_0x2c1f24,_0x16ab09){_0x2b4063[_0x538a('0x7')]({'attributes':['id'],'raw':!![]})[_0x538a('0x8')](function(_0x11fbcf){_0x2b4063[_0x538a('0x9')](_0x538a('0xa'),_0x11fbcf['map'](function(_0x50eb50){return{'id':_0x50eb50['id']};}));return WhatsappMessage[_0x538a('0xb')]({'where':{'WhatsappInteractionId':_0x2b4063['id'],'direction':'in','read':![]},'raw':!![]});})[_0x538a('0x8')](function(_0x90426f){_0x2b4063['setDataValue'](_0x538a('0xc'),_0x90426f[_0x538a('0xd')]);WhatsappInteractionEvents[_0x538a('0xe')](_0x22163a+':'+_0x2b4063['id'],_0x2b4063);WhatsappInteractionEvents[_0x538a('0xe')](_0x22163a,_0x2b4063);_0x16ab09(null);})[_0x538a('0xf')](_0x16ab09(null));};}for(var e in events){if(events[_0x538a('0x10')](e)){var event=events[e];WhatsappInteraction[_0x538a('0x11')](e,emitEvent(event));}}module[_0x538a('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x3140=['../../mysqldb','WhatsappInteraction','save','update','remove','getUsers','then','setDataValue','map','unreadMessages','length','emit','catch','hasOwnProperty','exports','events'];(function(_0x5a57d0,_0x54d960){var _0x55b805=function(_0x2e8c48){while(--_0x2e8c48){_0x5a57d0['push'](_0x5a57d0['shift']());}};_0x55b805(++_0x54d960);}(_0x3140,0xaf));var _0x0314=function(_0x37c219,_0x16d29c){_0x37c219=_0x37c219-0x0;var _0x52b594=_0x3140[_0x37c219];return _0x52b594;};'use strict';var EventEmitter=require(_0x0314('0x0'));var WhatsappInteraction=require(_0x0314('0x1'))['db'][_0x0314('0x2')];var WhatsappMessage=require(_0x0314('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0314('0x3'),'afterUpdate':_0x0314('0x4'),'afterDestroy':_0x0314('0x5')};function emitEvent(_0x3e4284){return function(_0x254566,_0x46c395,_0x9e308d){_0x254566[_0x0314('0x6')]({'attributes':['id'],'raw':!![]})[_0x0314('0x7')](function(_0x44762d){_0x254566[_0x0314('0x8')]('Users',_0x44762d[_0x0314('0x9')](function(_0x2d87d2){return{'id':_0x2d87d2['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x254566['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xf2561e){_0x254566['setDataValue'](_0x0314('0xa'),_0xf2561e[_0x0314('0xb')]);WhatsappInteractionEvents[_0x0314('0xc')](_0x3e4284+':'+_0x254566['id'],_0x254566);WhatsappInteractionEvents[_0x0314('0xc')](_0x3e4284,_0x254566);_0x9e308d(null);})[_0x0314('0xd')](_0x9e308d(null));};}for(var e in events){if(events[_0x0314('0xe')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x0314('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 3c3c206..f7f47f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b6=['./whatsappInteraction.attributes','exports','define','whatsapp_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','request-promise','path','rimraf'];(function(_0x12bcf7,_0xc11103){var _0x2825a=function(_0x4452ba){while(--_0x4452ba){_0x12bcf7['push'](_0x12bcf7['shift']());}};_0x2825a(++_0xc11103);}(_0x15b6,0x161));var _0x615b=function(_0x5be0f6,_0x167108){_0x5be0f6=_0x5be0f6-0x0;var _0x32d5e2=_0x15b6[_0x5be0f6];return _0x32d5e2;};'use strict';var _=require(_0x615b('0x0'));var util=require(_0x615b('0x1'));var logger=require('../../config/logger')(_0x615b('0x2'));var moment=require(_0x615b('0x3'));var BPromise=require('bluebird');var rp=require(_0x615b('0x4'));var fs=require('fs');var path=require(_0x615b('0x5'));var rimraf=require(_0x615b('0x6'));var config=require('../../config/environment');var attributes=require(_0x615b('0x7'));module[_0x615b('0x8')]=function(_0x1837f1,_0xc3f29f){return _0x1837f1[_0x615b('0x9')]('WhatsappInteraction',attributes,{'tableName':_0x615b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3b60c6,_0x298837,_0x126a66){if(_0x3b60c6[_0x615b('0xb')](_0x615b('0xc'))){_0x3b60c6['closedAt']=moment()[_0x615b('0xd')](_0x615b('0xe'));}_0x126a66(null,_0x3b60c6);}}});};
\ No newline at end of file
+var _0x7d31=['WhatsappInteraction','changed','closed','closedAt','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define'];(function(_0x4b4d43,_0x1590f7){var _0x5706ba=function(_0x11d99b){while(--_0x11d99b){_0x4b4d43['push'](_0x4b4d43['shift']());}};_0x5706ba(++_0x1590f7);}(_0x7d31,0x1e4));var _0x17d3=function(_0x35dcb3,_0x468f08){_0x35dcb3=_0x35dcb3-0x0;var _0xd36d40=_0x7d31[_0x35dcb3];return _0xd36d40;};'use strict';var _=require(_0x17d3('0x0'));var util=require('util');var logger=require(_0x17d3('0x1'))(_0x17d3('0x2'));var moment=require(_0x17d3('0x3'));var BPromise=require('bluebird');var rp=require(_0x17d3('0x4'));var fs=require('fs');var path=require(_0x17d3('0x5'));var rimraf=require(_0x17d3('0x6'));var config=require(_0x17d3('0x7'));var attributes=require(_0x17d3('0x8'));module[_0x17d3('0x9')]=function(_0x274059,_0x2e5216){return _0x274059[_0x17d3('0xa')](_0x17d3('0xb'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3d7936,_0x359c2e,_0x47ee9a){if(_0x3d7936[_0x17d3('0xc')](_0x17d3('0xd'))){_0x3d7936[_0x17d3('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x47ee9a(null,_0x3d7936);}}});};
\ No newline at end of file
index c3f1c78..2a58f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ac=['client','http','defaults','localhost','socket.io-emitter','redis','./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','where','attributes','limit','AddTagsToWhatsappInteraction','addTags','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x413c25,_0x2b3483){var _0x5682e7=function(_0x5220d4){while(--_0x5220d4){_0x413c25['push'](_0x413c25['shift']());}};_0x5682e7(++_0x2b3483);}(_0xe3ac,0x9f));var _0xce3a=function(_0x10b0fa,_0x1eaac5){_0x10b0fa=_0x10b0fa-0x0;var _0x548860=_0xe3ac[_0x10b0fa];return _0x548860;};'use strict';var _=require(_0xce3a('0x0'));var util=require('util');var moment=require(_0xce3a('0x1'));var BPromise=require(_0xce3a('0x2'));var rs=require(_0xce3a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xce3a('0x4'))['db'];var utils=require(_0xce3a('0x5'));var logger=require(_0xce3a('0x6'))(_0xce3a('0x7'));var config=require('../../config/environment');var jayson=require(_0xce3a('0x8'));var client=jayson[_0xce3a('0x9')][_0xce3a('0xa')]({'port':0x232a});config['redis']=_[_0xce3a('0xb')](config['redis'],{'host':_0xce3a('0xc'),'port':0x18eb});var socket=require(_0xce3a('0xd'))(new Redis(config[_0xce3a('0xe')]));require(_0xce3a('0xf'))['register'](socket);function respondWithRpcPromise(_0x337009,_0x2bbdd7,_0xc734d5){return new BPromise(function(_0x3498b9,_0x24abaa){return client[_0xce3a('0x10')](_0x337009,_0xc734d5)[_0xce3a('0x11')](function(_0x30ff0c){logger[_0xce3a('0x12')](_0xce3a('0x13'),_0x2bbdd7,_0xce3a('0x14'));logger[_0xce3a('0x15')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x2bbdd7,'request\x20sent',JSON[_0xce3a('0x16')](_0x30ff0c));if(_0x30ff0c[_0xce3a('0x17')]){if(_0x30ff0c[_0xce3a('0x17')][_0xce3a('0x18')]===0x1f4){logger[_0xce3a('0x17')](_0xce3a('0x13'),_0x2bbdd7,_0x30ff0c['error'][_0xce3a('0x19')]);return _0x24abaa(_0x30ff0c['error'][_0xce3a('0x19')]);}logger[_0xce3a('0x17')](_0xce3a('0x13'),_0x2bbdd7,_0x30ff0c[_0xce3a('0x17')]['message']);return _0x3498b9(_0x30ff0c[_0xce3a('0x17')]['message']);}else{logger[_0xce3a('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x2bbdd7,_0xce3a('0x14'));_0x3498b9(_0x30ff0c[_0xce3a('0x1a')][_0xce3a('0x19')]);}})[_0xce3a('0x1b')](function(_0x231f3b){logger['error'](_0xce3a('0x13'),_0x2bbdd7,_0x231f3b);_0x24abaa(_0x231f3b);});});}exports[_0xce3a('0x1c')]=function(_0x519e9b){var _0x2cbe44=this;return new Promise(function(_0x5b9d9b,_0x3beeed){return db[_0xce3a('0x1d')][_0xce3a('0x1e')](_0x519e9b[_0xce3a('0x1f')],{'raw':_0x519e9b['options']?_0x519e9b['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x519e9b['options']?_0x519e9b[_0xce3a('0x20')][_0xce3a('0x21')]||null:null,'attributes':_0x519e9b['options']?_0x519e9b[_0xce3a('0x20')][_0xce3a('0x22')]||null:null,'limit':_0x519e9b[_0xce3a('0x20')]?_0x519e9b[_0xce3a('0x20')][_0xce3a('0x23')]||null:null})[_0xce3a('0x11')](function(_0x35c793){logger[_0xce3a('0x12')]('UpdateWhatsappInteraction',_0x519e9b);logger['debug'](_0xce3a('0x1c'),_0x519e9b,JSON['stringify'](_0x35c793));_0x5b9d9b(_0x35c793);})[_0xce3a('0x1b')](function(_0x5c8e49){logger[_0xce3a('0x17')](_0xce3a('0x1c'),_0x5c8e49['message'],_0x519e9b);_0x3beeed(_0x2cbe44[_0xce3a('0x17')](0x1f4,_0x5c8e49[_0xce3a('0x19')]));});});};exports[_0xce3a('0x24')]=function(_0x1b9252){return new Promise(function(_0x40c57b,_0x40beee){return db[_0xce3a('0x1d')]['find']({'where':_0x1b9252['options']?_0x1b9252[_0xce3a('0x20')][_0xce3a('0x21')]||null:null})[_0xce3a('0x11')](function(_0x2ab769){if(_0x2ab769){return _0x2ab769[_0xce3a('0x25')](_0x1b9252[_0xce3a('0x1f')][_0xce3a('0x26')],_[_0xce3a('0x27')](_0x1b9252[_0xce3a('0x1f')],['ids','id'])||{});}})[_0xce3a('0x28')](function(_0x468fc1){logger['info'](_0xce3a('0x29'),_0x1b9252);logger[_0xce3a('0x15')](_0xce3a('0x29'),_0x1b9252,JSON[_0xce3a('0x16')](_0x468fc1));_0x40c57b(_0x468fc1);})[_0xce3a('0x1b')](function(_0x18d7c6){logger[_0xce3a('0x17')](_0xce3a('0x29'),_0x18d7c6[_0xce3a('0x19')],_0x1b9252);_0x40beee(_this['error'](0x1f4,_0x18d7c6[_0xce3a('0x19')]));});});};
\ No newline at end of file
+var _0x1633=['options','raw','where','attributes','stringify','AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','spread','AddTags','debug','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update'];(function(_0x4d8e90,_0x3433e6){var _0xd1dbbe=function(_0x52bac4){while(--_0x52bac4){_0x4d8e90['push'](_0x4d8e90['shift']());}};_0xd1dbbe(++_0x3433e6);}(_0x1633,0x89));var _0x3163=function(_0x2f7641,_0x1ebb84){_0x2f7641=_0x2f7641-0x0;var _0x3a6513=_0x1633[_0x2f7641];return _0x3a6513;};'use strict';var _=require('lodash');var util=require(_0x3163('0x0'));var moment=require(_0x3163('0x1'));var BPromise=require(_0x3163('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3163('0x3'));var db=require(_0x3163('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3163('0x5'))(_0x3163('0x6'));var config=require('../../config/environment');var jayson=require(_0x3163('0x7'));var client=jayson[_0x3163('0x8')]['http']({'port':0x232a});config[_0x3163('0x9')]=_[_0x3163('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3163('0xb'))(new Redis(config['redis']));require(_0x3163('0xc'))[_0x3163('0xd')](socket);function respondWithRpcPromise(_0x5499fb,_0x335406,_0x43aa51){return new BPromise(function(_0x51c23a,_0x570fc){return client[_0x3163('0xe')](_0x5499fb,_0x43aa51)[_0x3163('0xf')](function(_0x30b673){logger[_0x3163('0x10')](_0x3163('0x11'),_0x335406,_0x3163('0x12'));logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x335406,'request\x20sent',JSON['stringify'](_0x30b673));if(_0x30b673[_0x3163('0x13')]){if(_0x30b673[_0x3163('0x13')][_0x3163('0x14')]===0x1f4){logger[_0x3163('0x13')](_0x3163('0x11'),_0x335406,_0x30b673['error'][_0x3163('0x15')]);return _0x570fc(_0x30b673[_0x3163('0x13')][_0x3163('0x15')]);}logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x335406,_0x30b673[_0x3163('0x13')][_0x3163('0x15')]);return _0x51c23a(_0x30b673[_0x3163('0x13')]['message']);}else{logger[_0x3163('0x10')]('WhatsappInteraction,\x20%s,\x20%s',_0x335406,_0x3163('0x12'));_0x51c23a(_0x30b673[_0x3163('0x16')]['message']);}})[_0x3163('0x17')](function(_0x34576f){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x335406,_0x34576f);_0x570fc(_0x34576f);});});}exports[_0x3163('0x18')]=function(_0x2fa2f7){var _0x3f1ce9=this;return new Promise(function(_0x36327a,_0x1a3348){return db[_0x3163('0x19')][_0x3163('0x1a')](_0x2fa2f7['body'],{'raw':_0x2fa2f7['options']?_0x2fa2f7[_0x3163('0x1b')][_0x3163('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fa2f7[_0x3163('0x1b')]?_0x2fa2f7[_0x3163('0x1b')][_0x3163('0x1d')]||null:null,'attributes':_0x2fa2f7['options']?_0x2fa2f7[_0x3163('0x1b')][_0x3163('0x1e')]||null:null,'limit':_0x2fa2f7[_0x3163('0x1b')]?_0x2fa2f7['options']['limit']||null:null})[_0x3163('0xf')](function(_0x1a8967){logger[_0x3163('0x10')](_0x3163('0x18'),_0x2fa2f7);logger['debug'](_0x3163('0x18'),_0x2fa2f7,JSON[_0x3163('0x1f')](_0x1a8967));_0x36327a(_0x1a8967);})[_0x3163('0x17')](function(_0x58ff0b){logger[_0x3163('0x13')](_0x3163('0x18'),_0x58ff0b[_0x3163('0x15')],_0x2fa2f7);_0x1a3348(_0x3f1ce9[_0x3163('0x13')](0x1f4,_0x58ff0b[_0x3163('0x15')]));});});};exports[_0x3163('0x20')]=function(_0x2a0122){return new Promise(function(_0x16acb7,_0x1975d0){return db[_0x3163('0x19')][_0x3163('0x21')]({'where':_0x2a0122[_0x3163('0x1b')]?_0x2a0122[_0x3163('0x1b')][_0x3163('0x1d')]||null:null})[_0x3163('0xf')](function(_0x1253b1){if(_0x1253b1){return _0x1253b1[_0x3163('0x22')](_0x2a0122[_0x3163('0x23')][_0x3163('0x24')],_[_0x3163('0x25')](_0x2a0122[_0x3163('0x23')],[_0x3163('0x24'),'id'])||{});}})[_0x3163('0x26')](function(_0x21c593){logger['info'](_0x3163('0x27'),_0x2a0122);logger[_0x3163('0x28')](_0x3163('0x27'),_0x2a0122,JSON[_0x3163('0x1f')](_0x21c593));_0x16acb7(_0x21c593);})[_0x3163('0x17')](function(_0x3e8b8a){logger[_0x3163('0x13')](_0x3163('0x27'),_0x3e8b8a[_0x3163('0x15')],_0x2a0122);_0x1975d0(_this[_0x3163('0x13')](0x1f4,_0x3e8b8a[_0x3163('0x15')]));});});};
\ No newline at end of file
index cc5ba38..35a6925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe698=['removeListener','register','length','./whatsappInteraction.events','save','update','emit'];(function(_0x3518a8,_0xf24477){var _0x925442=function(_0x5783d5){while(--_0x5783d5){_0x3518a8['push'](_0x3518a8['shift']());}};_0x925442(++_0xf24477);}(_0xe698,0x18b));var _0x8e69=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xe698[_0xfae23b];return _0x200640;};'use strict';var WhatsappInteractionEvents=require(_0x8e69('0x0'));var events=[_0x8e69('0x1'),'remove',_0x8e69('0x2')];function createListener(_0x1bceaf,_0x94e122){return function(_0x550953){_0x94e122[_0x8e69('0x3')](_0x1bceaf,_0x550953);};}function removeListener(_0x47851f,_0x387a1e){return function(){WhatsappInteractionEvents[_0x8e69('0x4')](_0x47851f,_0x387a1e);};}exports[_0x8e69('0x5')]=function(_0xb8020d){for(var _0x57c530=0x0,_0x31f1ac=events[_0x8e69('0x6')];_0x57c530<_0x31f1ac;_0x57c530++){var _0x22de13=events[_0x57c530];var _0x1a4d11=createListener('whatsappInteraction:'+_0x22de13,_0xb8020d);WhatsappInteractionEvents['on'](_0x22de13,_0x1a4d11);}};
\ No newline at end of file
+var _0x0b03=['whatsappInteraction:','save','remove','update','emit','removeListener','length'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x0b03,0x1ac));var _0x30b0=function(_0x1ac6af,_0x9ee48f){_0x1ac6af=_0x1ac6af-0x0;var _0x21f6ef=_0x0b03[_0x1ac6af];return _0x21f6ef;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x30b0('0x0'),_0x30b0('0x1'),_0x30b0('0x2')];function createListener(_0x16387a,_0x1b01fe){return function(_0x1f03b6){_0x1b01fe[_0x30b0('0x3')](_0x16387a,_0x1f03b6);};}function removeListener(_0x3b7963,_0x30699f){return function(){WhatsappInteractionEvents[_0x30b0('0x4')](_0x3b7963,_0x30699f);};}exports['register']=function(_0x25cf49){for(var _0x12135e=0x0,_0x2ae904=events[_0x30b0('0x5')];_0x12135e<_0x2ae904;_0x12135e++){var _0x401235=events[_0x12135e];var _0x52f766=createListener(_0x30b0('0x6')+_0x401235,_0x25cf49);WhatsappInteractionEvents['on'](_0x401235,_0x52f766);}};
\ No newline at end of file
index e760390..be6d95b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29f3=['Router','fs-extra','../../components/interaction/service','./whatsappMessage.controller','get','isAuthenticated','index','/:id','post','tracked','whatsapp','whatsappmessage:create','/:id/status','status','put','update','/:id/reject','delete','destroy','exports','util','path','express'];(function(_0x70c442,_0x495fa6){var _0x49afba=function(_0x30de95){while(--_0x30de95){_0x70c442['push'](_0x70c442['shift']());}};_0x49afba(++_0x495fa6);}(_0x29f3,0xe3));var _0x329f=function(_0xa94f1c,_0x232043){_0xa94f1c=_0xa94f1c-0x0;var _0x167c58=_0x29f3[_0xa94f1c];return _0x167c58;};'use strict';var multer=require('multer');var util=require(_0x329f('0x0'));var path=require(_0x329f('0x1'));var timeout=require('connect-timeout');var express=require(_0x329f('0x2'));var router=express[_0x329f('0x3')]();var fs_extra=require(_0x329f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x329f('0x5'));var config=require('../../config/environment');var controller=require(_0x329f('0x6'));router[_0x329f('0x7')]('/',auth[_0x329f('0x8')](),controller[_0x329f('0x9')]);router[_0x329f('0x7')]('/describe',auth[_0x329f('0x8')](),controller['describe']);router['get'](_0x329f('0xa'),auth[_0x329f('0x8')](),controller['show']);router[_0x329f('0xb')]('/',auth['isAuthenticated'](),interaction[_0x329f('0xc')](_0x329f('0xd'),_0x329f('0xe')),controller['create']);router['post'](_0x329f('0xf'),controller[_0x329f('0x10')]);router[_0x329f('0x11')](_0x329f('0xa'),auth[_0x329f('0x8')](),controller[_0x329f('0x12')]);router['put']('/:id/accept',auth[_0x329f('0x8')](),controller['accept']);router[_0x329f('0x11')](_0x329f('0x13'),auth[_0x329f('0x8')](),controller['reject']);router[_0x329f('0x14')](_0x329f('0xa'),auth[_0x329f('0x8')](),controller[_0x329f('0x15')]);module[_0x329f('0x16')]=router;
\ No newline at end of file
+var _0xae36=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','tracked','whatsapp','whatsappmessage:create','create','post','status','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer'];(function(_0x379ab0,_0x34dfe1){var _0x3ccfbb=function(_0x24144a){while(--_0x24144a){_0x379ab0['push'](_0x379ab0['shift']());}};_0x3ccfbb(++_0x34dfe1);}(_0xae36,0x185));var _0x6ae3=function(_0x16ec8d,_0x4bf3f0){_0x16ec8d=_0x16ec8d-0x0;var _0x12bdbf=_0xae36[_0x16ec8d];return _0x12bdbf;};'use strict';var multer=require(_0x6ae3('0x0'));var util=require(_0x6ae3('0x1'));var path=require(_0x6ae3('0x2'));var timeout=require(_0x6ae3('0x3'));var express=require(_0x6ae3('0x4'));var router=express['Router']();var fs_extra=require(_0x6ae3('0x5'));var auth=require(_0x6ae3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6ae3('0x7'));var controller=require(_0x6ae3('0x8'));router[_0x6ae3('0x9')]('/',auth[_0x6ae3('0xa')](),controller[_0x6ae3('0xb')]);router[_0x6ae3('0x9')](_0x6ae3('0xc'),auth[_0x6ae3('0xa')](),controller[_0x6ae3('0xd')]);router['get'](_0x6ae3('0xe'),auth[_0x6ae3('0xa')](),controller[_0x6ae3('0xf')]);router['post']('/',auth[_0x6ae3('0xa')](),interaction[_0x6ae3('0x10')](_0x6ae3('0x11'),_0x6ae3('0x12')),controller[_0x6ae3('0x13')]);router[_0x6ae3('0x14')]('/:id/status',controller[_0x6ae3('0x15')]);router[_0x6ae3('0x16')]('/:id',auth[_0x6ae3('0xa')](),controller['update']);router['put'](_0x6ae3('0x17'),auth[_0x6ae3('0xa')](),controller[_0x6ae3('0x18')]);router[_0x6ae3('0x16')](_0x6ae3('0x19'),auth['isAuthenticated'](),controller[_0x6ae3('0x1a')]);router[_0x6ae3('0x1b')]('/:id',auth[_0x6ae3('0xa')](),controller[_0x6ae3('0x1c')]);module[_0x6ae3('0x1d')]=router;
\ No newline at end of file
index cba2dc8..7eb0526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x951c=['BOOLEAN','ENUM','out','STRING','DATE','exports','TEXT','medium'];(function(_0x31eb98,_0x592fa2){var _0x20cf3e=function(_0x5e30b1){while(--_0x5e30b1){_0x31eb98['push'](_0x31eb98['shift']());}};_0x20cf3e(++_0x592fa2);}(_0x951c,0x13d));var _0xc951=function(_0x51e39a,_0x5e93a7){_0x51e39a=_0x51e39a-0x0;var _0xfa0dc5=_0x951c[_0x51e39a];return _0xfa0dc5;};'use strict';var Sequelize=require('sequelize');module[_0xc951('0x0')]={'body':{'type':Sequelize[_0xc951('0x1')](_0xc951('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc951('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xc951('0x4')]('in','out'),'defaultValue':_0xc951('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xc951('0x6')](0xbe)},'phone':{'type':Sequelize[_0xc951('0x6')]},'readAt':{'type':Sequelize[_0xc951('0x7')]},'secret':{'type':Sequelize[_0xc951('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xc951('0x6')]},'providerResponse':{'type':Sequelize[_0xc951('0x1')]}};
\ No newline at end of file
+var _0x1930=['ENUM','out','STRING','DATE','exports','TEXT','medium','BOOLEAN'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1930,0xcc));var _0x0193=function(_0x9dc5e2,_0x2aac6f){_0x9dc5e2=_0x9dc5e2-0x0;var _0x3f5569=_0x1930[_0x9dc5e2];return _0x3f5569;};'use strict';var Sequelize=require('sequelize');module[_0x0193('0x0')]={'body':{'type':Sequelize[_0x0193('0x1')](_0x0193('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x0193('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0193('0x4')]('in',_0x0193('0x5')),'defaultValue':_0x0193('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x0193('0x6')](0xbe)},'phone':{'type':Sequelize[_0x0193('0x6')]},'readAt':{'type':Sequelize[_0x0193('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x0193('0x1')]}};
\ No newline at end of file
index 4dd1d76..f5f155b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c8d=['WhatsappAccount','WhatsappAccountId','inspect','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','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','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','WhatsappMessage,\x20%s,\x20%s','message','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','stack','index','WhatsappMessage','rawAttributes','fieldName','model','map','name','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','filter','options','includeAll','findAll','rows','show','params','keys','include','find','create','body','destroy','describe','accept','read','readAt','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','format','interaction','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','whatsapp-interactions','whatsapp','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','fullname','email','motionChannel','rejectmessage'];(function(_0x5cb508,_0x2cb3bd){var _0x44d4f5=function(_0x51502f){while(--_0x51502f){_0x5cb508['push'](_0x5cb508['shift']());}};_0x44d4f5(++_0x2cb3bd);}(_0x2c8d,0x1a6));var _0xd2c8=function(_0x2e6393,_0x311526){_0x2e6393=_0x2e6393-0x0;var _0x252d8e=_0x2c8d[_0x2e6393];return _0x252d8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd2c8('0x0'));var zipdir=require(_0xd2c8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2c8('0x2'));var moment=require(_0xd2c8('0x3'));var BPromise=require(_0xd2c8('0x4'));var Mustache=require(_0xd2c8('0x5'));var util=require(_0xd2c8('0x6'));var path=require(_0xd2c8('0x7'));var sox=require(_0xd2c8('0x8'));var csv=require('to-csv');var ejs=require(_0xd2c8('0x9'));var fs=require('fs');var fs_extra=require(_0xd2c8('0xa'));var _=require(_0xd2c8('0xb'));var squel=require(_0xd2c8('0xc'));var crypto=require(_0xd2c8('0xd'));var jsforce=require(_0xd2c8('0xe'));var deskjs=require(_0xd2c8('0xf'));var toCsv=require(_0xd2c8('0x10'));var querystring=require(_0xd2c8('0x11'));var Papa=require(_0xd2c8('0x12'));var Redis=require('ioredis');var authService=require(_0xd2c8('0x13'));var qs=require(_0xd2c8('0x14'));var as=require(_0xd2c8('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd2c8('0x16'))(_0xd2c8('0x17'));var utils=require(_0xd2c8('0x18'));var config=require(_0xd2c8('0x19'));var licenseUtil=require(_0xd2c8('0x1a'));var db=require(_0xd2c8('0x1b'))['db'];config[_0xd2c8('0x1c')]=_[_0xd2c8('0x1d')](config[_0xd2c8('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xd2c8('0x1e'))(new Redis(config[_0xd2c8('0x1c')]));require(_0xd2c8('0x1f'))['register'](socket);var jayson=require(_0xd2c8('0x20'));var client=jayson[_0xd2c8('0x21')][_0xd2c8('0x22')]({'port':0x232c});var client9002=jayson['client'][_0xd2c8('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x2cbb12,_0x2cbcad,_0x2327b6,_0x4d1f05){return new BPromise(function(_0x2db129,_0x8c267c){var _0x2b440a=_0x4d1f05||client;return _0x2b440a[_0xd2c8('0x23')](_0x2cbb12,_0x2327b6)[_0xd2c8('0x24')](function(_0x36e8b6){logger[_0xd2c8('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x2cbcad,_0xd2c8('0x26'));logger[_0xd2c8('0x27')](_0xd2c8('0x28'),_0x2cbcad,_0xd2c8('0x26'),JSON[_0xd2c8('0x29')](_0x36e8b6));if(_0x36e8b6['error']){if(_0x36e8b6['error'][_0xd2c8('0x2a')]===0x1f4){logger[_0xd2c8('0x2b')](_0xd2c8('0x2c'),_0x2cbcad,_0x36e8b6[_0xd2c8('0x2b')][_0xd2c8('0x2d')]);return _0x8c267c(_0x36e8b6[_0xd2c8('0x2b')][_0xd2c8('0x2d')]);}logger['error'](_0xd2c8('0x2c'),_0x2cbcad,_0x36e8b6[_0xd2c8('0x2b')]['message']);return _0x2db129(_0x36e8b6[_0xd2c8('0x2b')]['message']);}else{logger[_0xd2c8('0x25')](_0xd2c8('0x2c'),_0x2cbcad,_0xd2c8('0x26'));_0x2db129(_0x36e8b6['result']['message']);}})[_0xd2c8('0x2e')](function(_0x2e3ecd){logger[_0xd2c8('0x2b')]('WhatsappMessage,\x20%s,\x20%s',_0x2cbcad,_0x2e3ecd);_0x8c267c(_0x2e3ecd);});});}function respondWithStatusCode(_0xec52ca,_0x5243c2){_0x5243c2=_0x5243c2||0xcc;return function(_0x289a86){if(_0x289a86){return _0xec52ca[_0xd2c8('0x2f')](_0x5243c2);}return _0xec52ca['status'](_0x5243c2)[_0xd2c8('0x30')]();};}function respondWithResult(_0x46d236,_0x111dd3){_0x111dd3=_0x111dd3||0xc8;return function(_0x1544c6){if(_0x1544c6){return _0x46d236[_0xd2c8('0x31')](_0x111dd3)[_0xd2c8('0x32')](_0x1544c6);}};}function respondWithFilteredResult(_0x17bf9a,_0x4c55de){return function(_0x1db16f){if(_0x1db16f){var _0x398447=typeof _0x4c55de[_0xd2c8('0x33')]===_0xd2c8('0x34')&&typeof _0x4c55de[_0xd2c8('0x35')]===_0xd2c8('0x34');var _0x6d406d=_0x1db16f[_0xd2c8('0x36')];var _0x244d8c=_0x398447?0x0:_0x4c55de[_0xd2c8('0x33')];var _0x3114ec=_0x398447?_0x1db16f[_0xd2c8('0x36')]:_0x4c55de[_0xd2c8('0x33')]+_0x4c55de[_0xd2c8('0x35')];var _0x4262ba;if(_0x3114ec>=_0x6d406d){_0x3114ec=_0x6d406d;_0x4262ba=0xc8;}else{_0x4262ba=0xce;}_0x17bf9a[_0xd2c8('0x31')](_0x4262ba);return _0x17bf9a[_0xd2c8('0x37')](_0xd2c8('0x38'),_0x244d8c+'-'+_0x3114ec+'/'+_0x6d406d)[_0xd2c8('0x32')](_0x1db16f);}return null;};}function patchUpdates(_0xacfb03){return function(_0x1d9a9a){try{jsonpatch[_0xd2c8('0x39')](_0x1d9a9a,_0xacfb03,!![]);}catch(_0x5b6cb9){return BPromise[_0xd2c8('0x3a')](_0x5b6cb9);}return _0x1d9a9a['save']();};}function saveUpdates(_0x5cf485,_0x18784c){return function(_0x18adc2){if(_0x18adc2){return _0x18adc2[_0xd2c8('0x3b')](_0x5cf485)[_0xd2c8('0x24')](function(_0x1ca43d){return _0x1ca43d;});}return null;};}function removeEntity(_0x55f1cb,_0x2f41e3){return function(_0x483298){if(_0x483298){return _0x483298['destroy']()[_0xd2c8('0x24')](function(){_0x55f1cb[_0xd2c8('0x31')](0xcc)['end']();});}};}function handleEntityNotFound(_0x443ebb,_0x336494){return function(_0x4bbbdb){if(!_0x4bbbdb){_0x443ebb[_0xd2c8('0x2f')](0x194);}return _0x4bbbdb;};}function handleError(_0x2b44d5,_0x584640){_0x584640=_0x584640||0x1f4;return function(_0x38954a){logger[_0xd2c8('0x2b')](_0x38954a[_0xd2c8('0x3c')]);if(_0x38954a['name']){delete _0x38954a['name'];}_0x2b44d5['status'](_0x584640)['send'](_0x38954a);};}exports[_0xd2c8('0x3d')]=function(_0xf92523,_0x1ed682){var _0x188352={},_0x297ea9={},_0x596d25={'count':0x0,'rows':[]};var _0x1f4c79=_['map'](db[_0xd2c8('0x3e')][_0xd2c8('0x3f')],function(_0x3de239){return{'name':_0x3de239[_0xd2c8('0x40')],'type':_0x3de239['type']['key']};});_0x297ea9[_0xd2c8('0x41')]=_[_0xd2c8('0x42')](_0x1f4c79,_0xd2c8('0x43'));_0x297ea9[_0xd2c8('0x44')]=_['keys'](_0xf92523[_0xd2c8('0x44')]);_0x297ea9[_0xd2c8('0x45')]=_['intersection'](_0x297ea9[_0xd2c8('0x41')],_0x297ea9[_0xd2c8('0x44')]);_0x188352[_0xd2c8('0x46')]=_[_0xd2c8('0x47')](_0x297ea9[_0xd2c8('0x41')],qs['fields'](_0xf92523[_0xd2c8('0x44')][_0xd2c8('0x48')]));_0x188352[_0xd2c8('0x46')]=_0x188352[_0xd2c8('0x46')][_0xd2c8('0x49')]?_0x188352[_0xd2c8('0x46')]:_0x297ea9[_0xd2c8('0x41')];if(!_0xf92523[_0xd2c8('0x44')][_0xd2c8('0x4a')]('nolimit')){_0x188352[_0xd2c8('0x35')]=qs[_0xd2c8('0x35')](_0xf92523[_0xd2c8('0x44')][_0xd2c8('0x35')]);_0x188352[_0xd2c8('0x33')]=qs['offset'](_0xf92523[_0xd2c8('0x44')][_0xd2c8('0x33')]);}_0x188352[_0xd2c8('0x4b')]=qs[_0xd2c8('0x4c')](_0xf92523['query']['sort']);_0x188352[_0xd2c8('0x4d')]=qs[_0xd2c8('0x45')](_[_0xd2c8('0x4e')](_0xf92523[_0xd2c8('0x44')],_0x297ea9['filters']),_0x1f4c79);if(_0xf92523['query']['filter']){_0x188352[_0xd2c8('0x4d')]=_[_0xd2c8('0x4f')](_0x188352[_0xd2c8('0x4d')],{'$or':_['map'](_0x1f4c79,function(_0x101955){if(_0x101955[_0xd2c8('0x50')]!=='VIRTUAL'){var _0x191c89={};_0x191c89[_0x101955[_0xd2c8('0x43')]]={'$like':'%'+_0xf92523[_0xd2c8('0x44')][_0xd2c8('0x51')]+'%'};return _0x191c89;}})});}_0x188352=_[_0xd2c8('0x4f')]({},_0x188352,_0xf92523[_0xd2c8('0x52')]);var _0x3d2650={'where':_0x188352['where']};return db[_0xd2c8('0x3e')]['count'](_0x3d2650)[_0xd2c8('0x24')](function(_0x5052f7){_0x596d25['count']=_0x5052f7;if(_0xf92523['query'][_0xd2c8('0x53')]){_0x188352['include']=[{'all':!![]}];}return db[_0xd2c8('0x3e')][_0xd2c8('0x54')](_0x188352);})[_0xd2c8('0x24')](function(_0x31e275){_0x596d25[_0xd2c8('0x55')]=_0x31e275;return _0x596d25;})[_0xd2c8('0x24')](respondWithFilteredResult(_0x1ed682,_0x188352))[_0xd2c8('0x2e')](handleError(_0x1ed682,null));};exports[_0xd2c8('0x56')]=function(_0x41a915,_0x53f05f){var _0x2105f9={'raw':!![],'where':{'id':_0x41a915[_0xd2c8('0x57')]['id']}},_0x19bd70={};_0x19bd70[_0xd2c8('0x41')]=_[_0xd2c8('0x58')](db['WhatsappMessage']['rawAttributes']);_0x19bd70[_0xd2c8('0x44')]=_['keys'](_0x41a915[_0xd2c8('0x44')]);_0x19bd70['filters']=_[_0xd2c8('0x47')](_0x19bd70['model'],_0x19bd70[_0xd2c8('0x44')]);_0x2105f9[_0xd2c8('0x46')]=_[_0xd2c8('0x47')](_0x19bd70[_0xd2c8('0x41')],qs[_0xd2c8('0x48')](_0x41a915[_0xd2c8('0x44')]['fields']));_0x2105f9[_0xd2c8('0x46')]=_0x2105f9[_0xd2c8('0x46')][_0xd2c8('0x49')]?_0x2105f9[_0xd2c8('0x46')]:_0x19bd70[_0xd2c8('0x41')];if(_0x41a915['query'][_0xd2c8('0x53')]){_0x2105f9[_0xd2c8('0x59')]=[{'all':!![]}];}_0x2105f9=_[_0xd2c8('0x4f')]({},_0x2105f9,_0x41a915[_0xd2c8('0x52')]);return db[_0xd2c8('0x3e')][_0xd2c8('0x5a')](_0x2105f9)[_0xd2c8('0x24')](handleEntityNotFound(_0x53f05f,null))[_0xd2c8('0x24')](respondWithResult(_0x53f05f,null))['catch'](handleError(_0x53f05f,null));};exports[_0xd2c8('0x5b')]=function(_0x584482,_0xcf42d9){return db[_0xd2c8('0x3e')]['create'](_0x584482[_0xd2c8('0x5c')],{})[_0xd2c8('0x24')](respondWithResult(_0xcf42d9,0xc9))['catch'](handleError(_0xcf42d9,null));};exports['update']=function(_0x185f5f,_0x1c4e81){if(_0x185f5f[_0xd2c8('0x5c')]['id']){delete _0x185f5f[_0xd2c8('0x5c')]['id'];}return db[_0xd2c8('0x3e')][_0xd2c8('0x5a')]({'where':{'id':_0x185f5f[_0xd2c8('0x57')]['id']}})[_0xd2c8('0x24')](handleEntityNotFound(_0x1c4e81,null))[_0xd2c8('0x24')](saveUpdates(_0x185f5f[_0xd2c8('0x5c')],null))[_0xd2c8('0x24')](respondWithResult(_0x1c4e81,null))['catch'](handleError(_0x1c4e81,null));};exports[_0xd2c8('0x5d')]=function(_0x4d084f,_0xc4f00d){return db[_0xd2c8('0x3e')][_0xd2c8('0x5a')]({'where':{'id':_0x4d084f[_0xd2c8('0x57')]['id']}})[_0xd2c8('0x24')](handleEntityNotFound(_0xc4f00d,null))[_0xd2c8('0x24')](removeEntity(_0xc4f00d,null))[_0xd2c8('0x2e')](handleError(_0xc4f00d,null));};exports[_0xd2c8('0x5e')]=function(_0x3365da,_0x407318){return db['WhatsappMessage'][_0xd2c8('0x5e')]()[_0xd2c8('0x24')](respondWithResult(_0x407318,null))['catch'](handleError(_0x407318,null));};var interaction_log=require(_0xd2c8('0x16'))('whatsapp-interactions');exports[_0xd2c8('0x5f')]=function(_0x51f309,_0x2817c4,_0x11c071){var _0x57b908={'agent':{},'channel':'whatsapp'};if(_0x51f309[_0xd2c8('0x5c')]['id']){delete _0x51f309[_0xd2c8('0x5c')]['id'];}_0x51f309['body'][_0xd2c8('0x60')]=!![];_0x51f309['body'][_0xd2c8('0x61')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x51f309['body']['UserId']=_0x51f309[_0xd2c8('0x5c')][_0xd2c8('0x62')]||_0x51f309[_0xd2c8('0x63')]['id'];_0x57b908['agent']['id']=_0x51f309[_0xd2c8('0x5c')][_0xd2c8('0x62')];return db[_0xd2c8('0x3e')][_0xd2c8('0x5a')]({'where':{'id':_0x51f309[_0xd2c8('0x57')]['id'],'UserId':null}})[_0xd2c8('0x24')](handleEntityNotFound(_0x2817c4,null))[_0xd2c8('0x24')](saveUpdates(_0x51f309[_0xd2c8('0x5c')],null))[_0xd2c8('0x24')](function(_0x5e58b1){if(_0x5e58b1){_0x57b908[_0xd2c8('0x2d')]=_0x5e58b1[_0xd2c8('0x64')]({'plain':!![]});return db[_0xd2c8('0x65')][_0xd2c8('0x5a')]({'where':{'id':_0x5e58b1[_0xd2c8('0x66')]}});}return null;})[_0xd2c8('0x24')](handleEntityNotFound(_0x2817c4,null))[_0xd2c8('0x24')](function(_0x430640){if(_0x430640){return _0x430640[_0xd2c8('0x3b')]({'UserId':_0x51f309[_0xd2c8('0x5c')][_0xd2c8('0x62')],'read1stAt':_[_0xd2c8('0x67')](_0x430640['read1stAt'])?moment()[_0xd2c8('0x68')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xd2c8('0x24')](function(_0x523f57){if(_0x523f57){_0x57b908[_0xd2c8('0x69')]=_0x523f57[_0xd2c8('0x64')]({'plain':!![]});interaction_log[_0xd2c8('0x25')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x51f309[_0xd2c8('0x63')]['id'],_0x51f309[_0xd2c8('0x63')][_0xd2c8('0x43')],_0x51f309[_0xd2c8('0x63')][_0xd2c8('0x6a')],_0x57b908[_0xd2c8('0x69')]['id'],_0x51f309[_0xd2c8('0x5c')]?JSON[_0xd2c8('0x29')](_0x51f309['body']):_0xd2c8('0x6b'));return respondWithRpcPromise(_0xd2c8('0x6c'),'acceptMessage',_0x57b908);}return null;})[_0xd2c8('0x24')](function(_0x36d226){var _0x7a0827=_0xd2c8('0x6d')+_0x36d226['message'][_0xd2c8('0x6e')];return db[_0xd2c8('0x6f')][_0xd2c8('0x44')](_0x7a0827,{'type':db[_0xd2c8('0x70')][_0xd2c8('0x71')][_0xd2c8('0x72')],'raw':!![]})[_0xd2c8('0x24')](function(_0xb6c5ee){return _0xb6c5ee;});})[_0xd2c8('0x24')](function(_0x33b480){if(_0x33b480){_0x57b908['message'][_0xd2c8('0x73')]=_0x33b480[0x0];if(!_0x51f309['body']['UserId'])return;return db[_0xd2c8('0x74')][_0xd2c8('0x5a')]({'where':{'id':_0x51f309['body'][_0xd2c8('0x62')],'role':_0xd2c8('0x75')},'attributes':['id',_0xd2c8('0x43'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xd2c8('0x24')](function(_0x4e0ca4){if(!_0x4e0ca4)return null;_0x57b908[_0xd2c8('0x2d')][_0xd2c8('0x75')]=_0x4e0ca4;return _0x57b908;})[_0xd2c8('0x24')](function(_0x1aa75b){if(_0x1aa75b){if(_0x51f309[_0xd2c8('0x5c')][_0xd2c8('0x76')]){_0x57b908[_0xd2c8('0x2d')][_0xd2c8('0x77')]=util['format'](_0xd2c8('0x78'),_0x51f309[_0xd2c8('0x63')][_0xd2c8('0x43')]);_0x57b908[_0xd2c8('0x2d')]['channel']=_0x57b908[_0xd2c8('0x79')];_0x57b908[_0xd2c8('0x2d')]['motionChannel']=_0x57b908['channel'];_0x57b908['message'][_0xd2c8('0x7a')]=_0xd2c8('0x5f');return respondWithRpcPromise(_0xd2c8('0x7b'),_0xd2c8('0x7b'),{'event':_0xd2c8('0x7c'),'message':_0x57b908[_0xd2c8('0x2d')]},client9002)[_0xd2c8('0x24')](function(){return _0x57b908;});}return _0x57b908;}return null;})[_0xd2c8('0x24')](respondWithResult(_0x2817c4,null))[_0xd2c8('0x2e')](handleError(_0x2817c4,null));};var interaction_log=require(_0xd2c8('0x16'))(_0xd2c8('0x7d'));exports[_0xd2c8('0x3a')]=function(_0x4b528b,_0x39231f,_0x2fe6fb){var _0x44a4c2={'agent':{},'channel':_0xd2c8('0x7e')};if(_0x4b528b[_0xd2c8('0x5c')]['id']){delete _0x4b528b[_0xd2c8('0x5c')]['id'];}_0x4b528b[_0xd2c8('0x5c')][_0xd2c8('0x62')]=_0x4b528b[_0xd2c8('0x5c')][_0xd2c8('0x62')]||_0x4b528b[_0xd2c8('0x63')]['id'];_0x44a4c2['agent']['id']=_0x4b528b[_0xd2c8('0x5c')]['UserId'];return db['WhatsappMessage']['find']({'where':{'id':_0x4b528b[_0xd2c8('0x57')]['id'],'UserId':null}})[_0xd2c8('0x24')](handleEntityNotFound(_0x39231f,null))[_0xd2c8('0x24')](function(_0x124b70){if(_0x124b70){_0x44a4c2['message']=_0x124b70[_0xd2c8('0x64')]({'plain':!![]});return db['WhatsappInteraction'][_0xd2c8('0x5a')]({'where':{'id':_0x124b70[_0xd2c8('0x66')]}});}return null;})[_0xd2c8('0x24')](handleEntityNotFound(_0x39231f,null))[_0xd2c8('0x24')](function(_0xd9b954){if(_0xd9b954){_0x44a4c2[_0xd2c8('0x69')]=_0xd9b954[_0xd2c8('0x64')]({'plain':!![]});interaction_log[_0xd2c8('0x25')](_0xd2c8('0x7f'),_0x4b528b['user']['id'],_0x4b528b[_0xd2c8('0x63')]['name'],_0x4b528b[_0xd2c8('0x63')][_0xd2c8('0x6a')],_0x44a4c2[_0xd2c8('0x69')]['id'],_0x4b528b[_0xd2c8('0x5c')]?JSON[_0xd2c8('0x29')](_0x4b528b[_0xd2c8('0x5c')]):_0xd2c8('0x6b'));return respondWithRpcPromise(_0xd2c8('0x80'),_0xd2c8('0x81'),_0x44a4c2);}return null;})[_0xd2c8('0x24')](function(_0x45aa31){var _0x2d4f6a=_0xd2c8('0x6d')+_0x45aa31[_0xd2c8('0x2d')][_0xd2c8('0x6e')];return db[_0xd2c8('0x6f')]['query'](_0x2d4f6a,{'type':db['Sequelize']['QueryTypes'][_0xd2c8('0x72')],'raw':!![]})[_0xd2c8('0x24')](function(_0x571040){return _0x571040;});})['then'](function(_0x4f453d){if(_0x4f453d){_0x44a4c2[_0xd2c8('0x2d')][_0xd2c8('0x73')]=_0x4f453d[0x0];if(!_0x4b528b[_0xd2c8('0x5c')][_0xd2c8('0x62')])return;return db[_0xd2c8('0x74')][_0xd2c8('0x5a')]({'where':{'id':_0x4b528b[_0xd2c8('0x5c')][_0xd2c8('0x62')],'role':_0xd2c8('0x75')},'attributes':['id',_0xd2c8('0x43'),_0xd2c8('0x82'),_0xd2c8('0x83'),'internal'],'raw':!![]});}return null;})[_0xd2c8('0x24')](function(_0x44c84e){if(!_0x44c84e)return null;_0x44a4c2[_0xd2c8('0x2d')][_0xd2c8('0x75')]=_0x44c84e;return _0x44a4c2;})[_0xd2c8('0x24')](function(_0xb9a3ae){if(_0xb9a3ae){_0xb9a3ae[_0xd2c8('0x2d')][_0xd2c8('0x77')]=util[_0xd2c8('0x68')](_0xd2c8('0x78'),_0x4b528b[_0xd2c8('0x63')]['name']);_0xb9a3ae['message'][_0xd2c8('0x79')]=_0x44a4c2[_0xd2c8('0x79')];_0xb9a3ae[_0xd2c8('0x2d')][_0xd2c8('0x84')]=_0x44a4c2[_0xd2c8('0x79')];_0xb9a3ae[_0xd2c8('0x2d')]['event']='reject';respondWithRpcPromise(_0xd2c8('0x7b'),_0xd2c8('0x7b'),{'event':_0xd2c8('0x85'),'message':_0xb9a3ae[_0xd2c8('0x2d')]},client9002);return _0x44a4c2;}return null;})[_0xd2c8('0x24')](respondWithResult(_0x39231f,null))['catch'](handleError(_0x39231f,null));};exports[_0xd2c8('0x31')]=function(_0x34661a,_0x500b5b,_0x5eb26b){if(_0x34661a[_0xd2c8('0x5c')]['id']){delete _0x34661a['body']['id'];}var _0x3f6f1d;return db['WhatsappMessage'][_0xd2c8('0x5a')]({'where':{'id':_0x34661a[_0xd2c8('0x57')]['id']}})['then'](handleEntityNotFound(_0x500b5b,null))['then'](function(_0x5da431){if(_0x5da431){_0x3f6f1d=_0x5da431;return db[_0xd2c8('0x86')][_0xd2c8('0x5a')]({'where':{'id':_0x5da431[_0xd2c8('0x87')]}});}})[_0xd2c8('0x24')](handleEntityNotFound(_0x500b5b,null))[_0xd2c8('0x24')](function(_0x1f5fdb){if(_0x1f5fdb){logger[_0xd2c8('0x27')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0xd2c8('0x31'),'received\x20delivery\x20report\x20from',_0x1f5fdb['type'],util[_0xd2c8('0x88')](_0x34661a[_0xd2c8('0x5c')],{'showHidden':![],'depth':null}));switch(_0x1f5fdb['type']){case'twilio':if(_0x34661a['body']['MessageSid']&&_0x34661a[_0xd2c8('0x5c')]['MessageSid']===_0x3f6f1d['messageId']&&_0x34661a[_0xd2c8('0x5c')][_0xd2c8('0x89')]&&_0x34661a[_0xd2c8('0x5c')][_0xd2c8('0x89')]===_0xd2c8('0x60')){return _0x3f6f1d[_0xd2c8('0x3b')]({'read':!![]});}else{logger[_0xd2c8('0x2b')](_0xd2c8('0x8a'),_0xd2c8('0x31'),'twilio',util[_0xd2c8('0x88')](_0x34661a[_0xd2c8('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x3f6f1d;}})[_0xd2c8('0x24')](respondWithResult(_0x500b5b,null))[_0xd2c8('0x2e')](handleError(_0x500b5b,null));};
\ No newline at end of file
+var _0x4549=['VIRTUAL','include','findAll','params','includeAll','options','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','isNil','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','fullname','internal','SIP/%s','channel','event','EventManager','acceptmessage','../../config/logger','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','RejectMessage','rejectMessage','email','WhatsappAccount','WhatsappAccountId','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','MessageStatus','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x2d88ac,_0x48c8b0){var _0x1143eb=function(_0xbd594e){while(--_0xbd594e){_0x2d88ac['push'](_0x2d88ac['shift']());}};_0x1143eb(++_0x48c8b0);}(_0x4549,0x14e));var _0x9454=function(_0x4d5e5d,_0x47f05d){_0x4d5e5d=_0x4d5e5d-0x0;var _0x45cecb=_0x4549[_0x4d5e5d];return _0x45cecb;};'use strict';var emlformat=require(_0x9454('0x0'));var rimraf=require(_0x9454('0x1'));var zipdir=require(_0x9454('0x2'));var jsonpatch=require(_0x9454('0x3'));var rp=require(_0x9454('0x4'));var moment=require('moment');var BPromise=require(_0x9454('0x5'));var Mustache=require(_0x9454('0x6'));var util=require(_0x9454('0x7'));var path=require('path');var sox=require(_0x9454('0x8'));var csv=require('to-csv');var ejs=require(_0x9454('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9454('0xa'));var crypto=require(_0x9454('0xb'));var jsforce=require(_0x9454('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9454('0xd'));var querystring=require(_0x9454('0xe'));var Papa=require(_0x9454('0xf'));var Redis=require(_0x9454('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9454('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x9454('0x12'));var config=require(_0x9454('0x13'));var licenseUtil=require(_0x9454('0x14'));var db=require(_0x9454('0x15'))['db'];config[_0x9454('0x16')]=_[_0x9454('0x17')](config['redis'],{'host':_0x9454('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9454('0x16')]));require('./whatsappMessage.socket')[_0x9454('0x19')](socket);var jayson=require(_0x9454('0x1a'));var client=jayson[_0x9454('0x1b')][_0x9454('0x1c')]({'port':0x232c});var client9002=jayson[_0x9454('0x1b')][_0x9454('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x509237,_0x52f7da,_0x24d19b,_0x325b82){return new BPromise(function(_0x159738,_0xa3bca3){var _0x106453=_0x325b82||client;return _0x106453[_0x9454('0x1d')](_0x509237,_0x24d19b)[_0x9454('0x1e')](function(_0x59b868){logger[_0x9454('0x1f')]('WhatsappMessage,\x20%s,\x20%s',_0x52f7da,'request\x20sent');logger['debug'](_0x9454('0x20'),_0x52f7da,_0x9454('0x21'),JSON['stringify'](_0x59b868));if(_0x59b868[_0x9454('0x22')]){if(_0x59b868[_0x9454('0x22')][_0x9454('0x23')]===0x1f4){logger['error'](_0x9454('0x24'),_0x52f7da,_0x59b868[_0x9454('0x22')]['message']);return _0xa3bca3(_0x59b868[_0x9454('0x22')][_0x9454('0x25')]);}logger[_0x9454('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x52f7da,_0x59b868['error']['message']);return _0x159738(_0x59b868[_0x9454('0x22')][_0x9454('0x25')]);}else{logger[_0x9454('0x1f')]('WhatsappMessage,\x20%s,\x20%s',_0x52f7da,_0x9454('0x21'));_0x159738(_0x59b868[_0x9454('0x26')][_0x9454('0x25')]);}})[_0x9454('0x27')](function(_0x37f983){logger[_0x9454('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x52f7da,_0x37f983);_0xa3bca3(_0x37f983);});});}function respondWithStatusCode(_0x2bf7af,_0x350cdd){_0x350cdd=_0x350cdd||0xcc;return function(_0x5f3a64){if(_0x5f3a64){return _0x2bf7af[_0x9454('0x28')](_0x350cdd);}return _0x2bf7af[_0x9454('0x29')](_0x350cdd)[_0x9454('0x2a')]();};}function respondWithResult(_0x57016a,_0x49c8e8){_0x49c8e8=_0x49c8e8||0xc8;return function(_0x6dc637){if(_0x6dc637){return _0x57016a['status'](_0x49c8e8)[_0x9454('0x2b')](_0x6dc637);}};}function respondWithFilteredResult(_0x5e0761,_0x12e9bd){return function(_0x1e2a7f){if(_0x1e2a7f){var _0x1b0288=typeof _0x12e9bd['offset']===_0x9454('0x2c')&&typeof _0x12e9bd['limit']==='undefined';var _0x7894c=_0x1e2a7f[_0x9454('0x2d')];var _0x129375=_0x1b0288?0x0:_0x12e9bd['offset'];var _0x36417d=_0x1b0288?_0x1e2a7f[_0x9454('0x2d')]:_0x12e9bd[_0x9454('0x2e')]+_0x12e9bd[_0x9454('0x2f')];var _0x30effc;if(_0x36417d>=_0x7894c){_0x36417d=_0x7894c;_0x30effc=0xc8;}else{_0x30effc=0xce;}_0x5e0761[_0x9454('0x29')](_0x30effc);return _0x5e0761[_0x9454('0x30')](_0x9454('0x31'),_0x129375+'-'+_0x36417d+'/'+_0x7894c)[_0x9454('0x2b')](_0x1e2a7f);}return null;};}function patchUpdates(_0x2a14f8){return function(_0x349886){try{jsonpatch[_0x9454('0x32')](_0x349886,_0x2a14f8,!![]);}catch(_0x12ff75){return BPromise[_0x9454('0x33')](_0x12ff75);}return _0x349886['save']();};}function saveUpdates(_0x1efec9,_0x3383b9){return function(_0xe12c2f){if(_0xe12c2f){return _0xe12c2f[_0x9454('0x34')](_0x1efec9)[_0x9454('0x1e')](function(_0x266e30){return _0x266e30;});}return null;};}function removeEntity(_0x3c43e3,_0x2637ed){return function(_0x5f09f6){if(_0x5f09f6){return _0x5f09f6[_0x9454('0x35')]()['then'](function(){_0x3c43e3[_0x9454('0x29')](0xcc)[_0x9454('0x2a')]();});}};}function handleEntityNotFound(_0x58a9a9,_0x393acd){return function(_0x12d603){if(!_0x12d603){_0x58a9a9[_0x9454('0x28')](0x194);}return _0x12d603;};}function handleError(_0x489a46,_0x30c63c){_0x30c63c=_0x30c63c||0x1f4;return function(_0x50720f){logger['error'](_0x50720f[_0x9454('0x36')]);if(_0x50720f[_0x9454('0x37')]){delete _0x50720f[_0x9454('0x37')];}_0x489a46[_0x9454('0x29')](_0x30c63c)[_0x9454('0x38')](_0x50720f);};}exports[_0x9454('0x39')]=function(_0x27c993,_0x465681){var _0x24db67={},_0x217e31={},_0x1a1164={'count':0x0,'rows':[]};var _0x2c5fae=_[_0x9454('0x3a')](db[_0x9454('0x3b')][_0x9454('0x3c')],function(_0x4f9c9d){return{'name':_0x4f9c9d[_0x9454('0x3d')],'type':_0x4f9c9d[_0x9454('0x3e')][_0x9454('0x3f')]};});_0x217e31['model']=_['map'](_0x2c5fae,_0x9454('0x37'));_0x217e31[_0x9454('0x40')]=_[_0x9454('0x41')](_0x27c993[_0x9454('0x40')]);_0x217e31[_0x9454('0x42')]=_[_0x9454('0x43')](_0x217e31[_0x9454('0x44')],_0x217e31['query']);_0x24db67[_0x9454('0x45')]=_[_0x9454('0x43')](_0x217e31[_0x9454('0x44')],qs['fields'](_0x27c993['query'][_0x9454('0x46')]));_0x24db67[_0x9454('0x45')]=_0x24db67[_0x9454('0x45')][_0x9454('0x47')]?_0x24db67['attributes']:_0x217e31['model'];if(!_0x27c993[_0x9454('0x40')][_0x9454('0x48')](_0x9454('0x49'))){_0x24db67[_0x9454('0x2f')]=qs['limit'](_0x27c993[_0x9454('0x40')][_0x9454('0x2f')]);_0x24db67['offset']=qs[_0x9454('0x2e')](_0x27c993[_0x9454('0x40')][_0x9454('0x2e')]);}_0x24db67[_0x9454('0x4a')]=qs['sort'](_0x27c993[_0x9454('0x40')][_0x9454('0x4b')]);_0x24db67[_0x9454('0x4c')]=qs['filters'](_[_0x9454('0x4d')](_0x27c993[_0x9454('0x40')],_0x217e31[_0x9454('0x42')]),_0x2c5fae);if(_0x27c993['query'][_0x9454('0x4e')]){_0x24db67['where']=_[_0x9454('0x4f')](_0x24db67[_0x9454('0x4c')],{'$or':_['map'](_0x2c5fae,function(_0x1f5214){if(_0x1f5214[_0x9454('0x3e')]!==_0x9454('0x50')){var _0x2f0522={};_0x2f0522[_0x1f5214[_0x9454('0x37')]]={'$like':'%'+_0x27c993[_0x9454('0x40')]['filter']+'%'};return _0x2f0522;}})});}_0x24db67=_['merge']({},_0x24db67,_0x27c993['options']);var _0x1c1153={'where':_0x24db67[_0x9454('0x4c')]};return db[_0x9454('0x3b')]['count'](_0x1c1153)[_0x9454('0x1e')](function(_0x26466c){_0x1a1164[_0x9454('0x2d')]=_0x26466c;if(_0x27c993[_0x9454('0x40')]['includeAll']){_0x24db67[_0x9454('0x51')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x9454('0x52')](_0x24db67);})[_0x9454('0x1e')](function(_0x33a5d6){_0x1a1164['rows']=_0x33a5d6;return _0x1a1164;})['then'](respondWithFilteredResult(_0x465681,_0x24db67))['catch'](handleError(_0x465681,null));};exports['show']=function(_0x3772c4,_0x45b3da){var _0x10614b={'raw':!![],'where':{'id':_0x3772c4[_0x9454('0x53')]['id']}},_0xf59513={};_0xf59513[_0x9454('0x44')]=_[_0x9454('0x41')](db[_0x9454('0x3b')][_0x9454('0x3c')]);_0xf59513[_0x9454('0x40')]=_[_0x9454('0x41')](_0x3772c4[_0x9454('0x40')]);_0xf59513['filters']=_[_0x9454('0x43')](_0xf59513[_0x9454('0x44')],_0xf59513[_0x9454('0x40')]);_0x10614b[_0x9454('0x45')]=_[_0x9454('0x43')](_0xf59513[_0x9454('0x44')],qs[_0x9454('0x46')](_0x3772c4[_0x9454('0x40')][_0x9454('0x46')]));_0x10614b[_0x9454('0x45')]=_0x10614b[_0x9454('0x45')][_0x9454('0x47')]?_0x10614b[_0x9454('0x45')]:_0xf59513['model'];if(_0x3772c4[_0x9454('0x40')][_0x9454('0x54')]){_0x10614b[_0x9454('0x51')]=[{'all':!![]}];}_0x10614b=_[_0x9454('0x4f')]({},_0x10614b,_0x3772c4[_0x9454('0x55')]);return db[_0x9454('0x3b')][_0x9454('0x56')](_0x10614b)['then'](handleEntityNotFound(_0x45b3da,null))['then'](respondWithResult(_0x45b3da,null))[_0x9454('0x27')](handleError(_0x45b3da,null));};exports['create']=function(_0x35c06b,_0x16c15b){return db['WhatsappMessage'][_0x9454('0x57')](_0x35c06b['body'],{})[_0x9454('0x1e')](respondWithResult(_0x16c15b,0xc9))['catch'](handleError(_0x16c15b,null));};exports[_0x9454('0x34')]=function(_0x5ed8c5,_0x576817){if(_0x5ed8c5['body']['id']){delete _0x5ed8c5['body']['id'];}return db[_0x9454('0x3b')][_0x9454('0x56')]({'where':{'id':_0x5ed8c5[_0x9454('0x53')]['id']}})['then'](handleEntityNotFound(_0x576817,null))['then'](saveUpdates(_0x5ed8c5[_0x9454('0x58')],null))[_0x9454('0x1e')](respondWithResult(_0x576817,null))[_0x9454('0x27')](handleError(_0x576817,null));};exports['destroy']=function(_0x4fc791,_0xb893c8){return db['WhatsappMessage'][_0x9454('0x56')]({'where':{'id':_0x4fc791[_0x9454('0x53')]['id']}})['then'](handleEntityNotFound(_0xb893c8,null))[_0x9454('0x1e')](removeEntity(_0xb893c8,null))[_0x9454('0x27')](handleError(_0xb893c8,null));};exports['describe']=function(_0x3da3f7,_0x507d93){return db['WhatsappMessage'][_0x9454('0x59')]()[_0x9454('0x1e')](respondWithResult(_0x507d93,null))[_0x9454('0x27')](handleError(_0x507d93,null));};var interaction_log=require('../../config/logger')(_0x9454('0x5a'));exports[_0x9454('0x5b')]=function(_0x3b81a1,_0x5f06d3,_0x10b16a){var _0xe3211f={'agent':{},'channel':_0x9454('0x5c')};if(_0x3b81a1[_0x9454('0x58')]['id']){delete _0x3b81a1['body']['id'];}_0x3b81a1[_0x9454('0x58')][_0x9454('0x5d')]=!![];_0x3b81a1[_0x9454('0x58')][_0x9454('0x5e')]=moment()[_0x9454('0x5f')](_0x9454('0x60'));_0x3b81a1[_0x9454('0x58')][_0x9454('0x61')]=_0x3b81a1[_0x9454('0x58')][_0x9454('0x61')]||_0x3b81a1[_0x9454('0x62')]['id'];_0xe3211f[_0x9454('0x63')]['id']=_0x3b81a1['body']['UserId'];return db[_0x9454('0x3b')][_0x9454('0x56')]({'where':{'id':_0x3b81a1[_0x9454('0x53')]['id'],'UserId':null}})[_0x9454('0x1e')](handleEntityNotFound(_0x5f06d3,null))[_0x9454('0x1e')](saveUpdates(_0x3b81a1['body'],null))[_0x9454('0x1e')](function(_0x4e2efb){if(_0x4e2efb){_0xe3211f[_0x9454('0x25')]=_0x4e2efb[_0x9454('0x64')]({'plain':!![]});return db[_0x9454('0x65')]['find']({'where':{'id':_0x4e2efb['WhatsappInteractionId']}});}return null;})[_0x9454('0x1e')](handleEntityNotFound(_0x5f06d3,null))[_0x9454('0x1e')](function(_0x57f78e){if(_0x57f78e){return _0x57f78e[_0x9454('0x34')]({'UserId':_0x3b81a1[_0x9454('0x58')][_0x9454('0x61')],'read1stAt':_[_0x9454('0x66')](_0x57f78e[_0x9454('0x67')])?moment()[_0x9454('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x9454('0x1e')](function(_0x18930d){if(_0x18930d){_0xe3211f['interaction']=_0x18930d[_0x9454('0x64')]({'plain':!![]});interaction_log['info'](_0x9454('0x68'),_0x3b81a1[_0x9454('0x62')]['id'],_0x3b81a1[_0x9454('0x62')][_0x9454('0x37')],_0x3b81a1['user'][_0x9454('0x69')],_0xe3211f[_0x9454('0x6a')]['id'],_0x3b81a1['body']?JSON['stringify'](_0x3b81a1[_0x9454('0x58')]):_0x9454('0x6b'));return respondWithRpcPromise(_0x9454('0x6c'),'acceptMessage',_0xe3211f);}return null;})[_0x9454('0x1e')](function(_0x36acf0){var _0x5ccbfe=_0x9454('0x6d')+_0x36acf0['message'][_0x9454('0x6e')];return db[_0x9454('0x6f')]['query'](_0x5ccbfe,{'type':db[_0x9454('0x70')]['QueryTypes'][_0x9454('0x71')],'raw':!![]})[_0x9454('0x1e')](function(_0x3b8951){return _0x3b8951;});})[_0x9454('0x1e')](function(_0x50e415){if(_0x50e415){_0xe3211f[_0x9454('0x25')][_0x9454('0x72')]=_0x50e415[0x0];if(!_0x3b81a1[_0x9454('0x58')][_0x9454('0x61')])return;return db['User'][_0x9454('0x56')]({'where':{'id':_0x3b81a1[_0x9454('0x58')][_0x9454('0x61')],'role':_0x9454('0x63')},'attributes':['id',_0x9454('0x37'),_0x9454('0x73'),'email',_0x9454('0x74')],'raw':!![]});}return null;})[_0x9454('0x1e')](function(_0x473a7f){if(!_0x473a7f)return null;_0xe3211f[_0x9454('0x25')]['agent']=_0x473a7f;return _0xe3211f;})[_0x9454('0x1e')](function(_0x757212){if(_0x757212){if(_0x3b81a1['body']['manual']){_0xe3211f['message']['interface']=util[_0x9454('0x5f')](_0x9454('0x75'),_0x3b81a1[_0x9454('0x62')][_0x9454('0x37')]);_0xe3211f['message']['channel']=_0xe3211f[_0x9454('0x76')];_0xe3211f[_0x9454('0x25')][_0x9454('0x77')]=_0x9454('0x5b');return respondWithRpcPromise(_0x9454('0x78'),_0x9454('0x78'),{'event':_0x9454('0x79'),'message':_0xe3211f['message']},client9002)[_0x9454('0x1e')](function(){return _0xe3211f;});}return _0xe3211f;}return null;})[_0x9454('0x1e')](respondWithResult(_0x5f06d3,null))[_0x9454('0x27')](handleError(_0x5f06d3,null));};var interaction_log=require(_0x9454('0x7a'))('whatsapp-interactions');exports[_0x9454('0x33')]=function(_0x5abc89,_0x53bc78,_0x3bd2e6){var _0x363346={'agent':{},'channel':_0x9454('0x5c')};if(_0x5abc89[_0x9454('0x58')]['id']){delete _0x5abc89[_0x9454('0x58')]['id'];}_0x5abc89[_0x9454('0x58')]['UserId']=_0x5abc89[_0x9454('0x58')][_0x9454('0x61')]||_0x5abc89[_0x9454('0x62')]['id'];_0x363346[_0x9454('0x63')]['id']=_0x5abc89[_0x9454('0x58')][_0x9454('0x61')];return db['WhatsappMessage'][_0x9454('0x56')]({'where':{'id':_0x5abc89[_0x9454('0x53')]['id'],'UserId':null}})[_0x9454('0x1e')](handleEntityNotFound(_0x53bc78,null))['then'](function(_0x4e0fee){if(_0x4e0fee){_0x363346[_0x9454('0x25')]=_0x4e0fee[_0x9454('0x64')]({'plain':!![]});return db[_0x9454('0x65')][_0x9454('0x56')]({'where':{'id':_0x4e0fee['WhatsappInteractionId']}});}return null;})[_0x9454('0x1e')](handleEntityNotFound(_0x53bc78,null))[_0x9454('0x1e')](function(_0x5f3e2b){if(_0x5f3e2b){_0x363346['interaction']=_0x5f3e2b['get']({'plain':!![]});interaction_log[_0x9454('0x1f')](_0x9454('0x7b'),_0x5abc89[_0x9454('0x62')]['id'],_0x5abc89[_0x9454('0x62')]['name'],_0x5abc89['user'][_0x9454('0x69')],_0x363346[_0x9454('0x6a')]['id'],_0x5abc89[_0x9454('0x58')]?JSON[_0x9454('0x7c')](_0x5abc89[_0x9454('0x58')]):_0x9454('0x6b'));return respondWithRpcPromise(_0x9454('0x7d'),_0x9454('0x7e'),_0x363346);}return null;})[_0x9454('0x1e')](function(_0x112e9a){var _0x2bcb1b=_0x9454('0x6d')+_0x112e9a[_0x9454('0x25')][_0x9454('0x6e')];return db[_0x9454('0x6f')][_0x9454('0x40')](_0x2bcb1b,{'type':db['Sequelize']['QueryTypes'][_0x9454('0x71')],'raw':!![]})[_0x9454('0x1e')](function(_0x5d5c85){return _0x5d5c85;});})['then'](function(_0x2ba4f5){if(_0x2ba4f5){_0x363346['message']['contact']=_0x2ba4f5[0x0];if(!_0x5abc89[_0x9454('0x58')]['UserId'])return;return db['User']['find']({'where':{'id':_0x5abc89[_0x9454('0x58')][_0x9454('0x61')],'role':'agent'},'attributes':['id','name',_0x9454('0x73'),_0x9454('0x7f'),_0x9454('0x74')],'raw':!![]});}return null;})[_0x9454('0x1e')](function(_0x4d35ca){if(!_0x4d35ca)return null;_0x363346['message']['agent']=_0x4d35ca;return _0x363346;})[_0x9454('0x1e')](function(_0x16224a){if(_0x16224a){_0x16224a[_0x9454('0x25')]['interface']=util[_0x9454('0x5f')]('SIP/%s',_0x5abc89[_0x9454('0x62')]['name']);_0x16224a[_0x9454('0x25')][_0x9454('0x76')]=_0x363346['channel'];_0x16224a['message'][_0x9454('0x77')]=_0x9454('0x33');respondWithRpcPromise(_0x9454('0x78'),_0x9454('0x78'),{'event':'rejectmessage','message':_0x16224a[_0x9454('0x25')]},client9002);return _0x363346;}return null;})[_0x9454('0x1e')](respondWithResult(_0x53bc78,null))[_0x9454('0x27')](handleError(_0x53bc78,null));};exports[_0x9454('0x29')]=function(_0x568944,_0xe24465,_0x7e691){if(_0x568944[_0x9454('0x58')]['id']){delete _0x568944[_0x9454('0x58')]['id'];}var _0x38cd27;return db[_0x9454('0x3b')][_0x9454('0x56')]({'where':{'id':_0x568944[_0x9454('0x53')]['id']}})[_0x9454('0x1e')](handleEntityNotFound(_0xe24465,null))[_0x9454('0x1e')](function(_0x333ea5){if(_0x333ea5){_0x38cd27=_0x333ea5;return db[_0x9454('0x80')][_0x9454('0x56')]({'where':{'id':_0x333ea5[_0x9454('0x81')]}});}})[_0x9454('0x1e')](handleEntityNotFound(_0xe24465,null))[_0x9454('0x1e')](function(_0x4ca966){if(_0x4ca966){logger[_0x9454('0x82')](_0x9454('0x83'),_0x9454('0x29'),_0x9454('0x84'),_0x4ca966[_0x9454('0x3e')],util['inspect'](_0x568944['body'],{'showHidden':![],'depth':null}));switch(_0x4ca966[_0x9454('0x3e')]){case _0x9454('0x85'):if(_0x568944[_0x9454('0x58')][_0x9454('0x86')]&&_0x568944['body']['MessageSid']===_0x38cd27[_0x9454('0x87')]&&_0x568944[_0x9454('0x58')][_0x9454('0x88')]&&_0x568944['body'][_0x9454('0x88')]===_0x9454('0x5d')){return _0x38cd27['update']({'read':!![]});}else{logger[_0x9454('0x22')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x9454('0x29'),_0x9454('0x85'),util[_0x9454('0x89')](_0x568944[_0x9454('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x38cd27;}})[_0x9454('0x1e')](respondWithResult(_0xe24465,null))[_0x9454('0x27')](handleError(_0xe24465,null));};
\ No newline at end of file
index 0cfe9bf..8090f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9e8=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x5c768b,_0x5e88a6){var _0x335af8=function(_0x39b04f){while(--_0x39b04f){_0x5c768b['push'](_0x5c768b['shift']());}};_0x335af8(++_0x5e88a6);}(_0xe9e8,0x6b));var _0x8e9e=function(_0x4401cf,_0x3f0198){_0x4401cf=_0x4401cf-0x0;var _0x2df529=_0xe9e8[_0x4401cf];return _0x2df529;};'use strict';var EventEmitter=require(_0x8e9e('0x0'));var WhatsappMessage=require(_0x8e9e('0x1'))['db'][_0x8e9e('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x8e9e('0x3')](0x0);var events={'afterCreate':_0x8e9e('0x4'),'afterUpdate':_0x8e9e('0x5'),'afterDestroy':_0x8e9e('0x6')};function emitEvent(_0x48233f){return function(_0x103d8b,_0x2a1d41,_0x1c09c6){WhatsappMessageEvents['emit'](_0x48233f+':'+_0x103d8b['id'],_0x103d8b);WhatsappMessageEvents[_0x8e9e('0x7')](_0x48233f,_0x103d8b);_0x1c09c6(null);};}for(var e in events){if(events[_0x8e9e('0x8')](e)){var event=events[e];WhatsappMessage[_0x8e9e('0x9')](e,emitEvent(event));}}module[_0x8e9e('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x5eb8=['WhatsappMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x1855c4,_0x1e8a8d){var _0xa80353=function(_0x28dae1){while(--_0x28dae1){_0x1855c4['push'](_0x1855c4['shift']());}};_0xa80353(++_0x1e8a8d);}(_0x5eb8,0xb0));var _0x85eb=function(_0x5617e2,_0x1ffcd7){_0x5617e2=_0x5617e2-0x0;var _0x27b60d=_0x5eb8[_0x5617e2];return _0x27b60d;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0x85eb('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x85eb('0x1')](0x0);var events={'afterCreate':_0x85eb('0x2'),'afterUpdate':_0x85eb('0x3'),'afterDestroy':_0x85eb('0x4')};function emitEvent(_0x13d8a9){return function(_0x13b1df,_0x44e313,_0x3c5798){WhatsappMessageEvents[_0x85eb('0x5')](_0x13d8a9+':'+_0x13b1df['id'],_0x13b1df);WhatsappMessageEvents[_0x85eb('0x5')](_0x13d8a9,_0x13b1df);_0x3c5798(null);};}for(var e in events){if(events[_0x85eb('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x85eb('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index 245fe00..70d920a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1667=['messages','create','whatsapp:','remote','/status?token=','token','afterCreate','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./whatsappMessage.attributes','exports','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','WhatsappInteraction','findOne','WhatsappInteractionId','then','createdAt','catch','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','authToken','phone'];(function(_0x3a2147,_0x536e69){var _0x158499=function(_0x2244e4){while(--_0x2244e4){_0x3a2147['push'](_0x3a2147['shift']());}};_0x158499(++_0x536e69);}(_0x1667,0xfd));var _0x7166=function(_0x3457b4,_0x4cd8f9){_0x3457b4=_0x3457b4-0x0;var _0xaa8fa9=_0x1667[_0x3457b4];return _0xaa8fa9;};'use strict';var _=require(_0x7166('0x0'));var util=require(_0x7166('0x1'));var logger=require(_0x7166('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7166('0x3'));var rp=require(_0x7166('0x4'));var fs=require('fs');var path=require(_0x7166('0x5'));var rimraf=require(_0x7166('0x6'));var config=require('../../config/environment');var attributes=require(_0x7166('0x7'));module[_0x7166('0x8')]=function(_0x3fb1ac,_0x5ab715){return _0x3fb1ac['define'](_0x7166('0x9'),attributes,{'tableName':_0x7166('0xa'),'paranoid':![],'indexes':[{'name':_0x7166('0xb'),'fields':[_0x7166('0xb')]},{'name':_0x7166('0xc'),'fields':[_0x7166('0xd')],'type':_0x7166('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1f212a,_0x1d6a70,_0x58383a){var _0x4edf3f=_0x3fb1ac[_0x7166('0xf')];var _0x286d2c=_0x1f212a[_0x7166('0x10')]({'plain':!![]});if(_0x286d2c['direction'][_0x7166('0x11')]()==='in'||_0x286d2c[_0x7166('0x12')]['toLowerCase']()===_0x7166('0x13')&&!_0x286d2c[_0x7166('0x14')]&&!_[_0x7166('0x15')](_0x286d2c['UserId'])){_0x4edf3f[_0x7166('0x16')][_0x7166('0x17')]({'where':{'id':_0x286d2c[_0x7166('0x18')]}})[_0x7166('0x19')](function(_0x75b1d7){if(_0x75b1d7){_0x75b1d7['update']({'lastMsgAt':_0x286d2c[_0x7166('0x1a')],'lastMsgDirection':_0x286d2c[_0x7166('0x12')][_0x7166('0x11')]()});}})[_0x7166('0x1b')](function(_0x34a1c5){console['error'](_0x34a1c5);});}if(_0x286d2c[_0x7166('0x12')]==='out'&&!_0x286d2c[_0x7166('0x14')]){var _0x3ef64d;_0x4edf3f[_0x7166('0x1c')]['find']({'where':{'id':_0x286d2c[_0x7166('0x1d')]},'raw':!![]})[_0x7166('0x19')](function(_0x52b556){_0x3ef64d=_0x52b556;if(_0x3ef64d&&_0x3ef64d[_0x7166('0x1e')]){switch(_0x3ef64d[_0x7166('0x1e')]){case _0x7166('0x1f'):var _0x3fc78f=require('twilio');if(_0x3ef64d[_0x7166('0x20')]&&_0x3ef64d[_0x7166('0x21')]&&_0x3ef64d[_0x7166('0x22')]){var _0x5d5f60=new _0x3fc78f(_0x3ef64d[_0x7166('0x20')],_0x3ef64d[_0x7166('0x21')]);_0x5d5f60[_0x7166('0x23')][_0x7166('0x24')]({'body':_0x286d2c['body'],'to':_0x7166('0x25')+_0x286d2c[_0x7166('0x22')],'from':_0x7166('0x25')+_0x3ef64d[_0x7166('0x22')],'statusCallback':_0x3ef64d[_0x7166('0x26')]+'/api/whatsapp/messages/'+_0x286d2c['id']+_0x7166('0x27')+_0x3ef64d[_0x7166('0x28')]})[_0x7166('0x19')](function(_0xecc0cb){if(_0xecc0cb['sid']){return _0x1f212a['update']({'messageId':_0xecc0cb['sid']});}})[_0x7166('0x1b')](function(_0x83c2c5){logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x7166('0x29'),'twilio',util['inspect'](_0x83c2c5,{'showHidden':![],'depth':null}));});}else{logger[_0x7166('0x2a')](_0x7166('0x2b'),'afterCreate','twilio',_0x7166('0x2c'));}break;}}})[_0x7166('0x2d')](function(){_0x58383a();});}else{_0x58383a();}}},'charset':_0x7166('0x2e'),'collate':_0x7166('0x2f')});};
\ No newline at end of file
+var _0x18f2=['toLowerCase','out','secret','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','catch','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','direction'];(function(_0x2b13f7,_0x36d752){var _0x32bd00=function(_0x509fbd){while(--_0x509fbd){_0x2b13f7['push'](_0x2b13f7['shift']());}};_0x32bd00(++_0x36d752);}(_0x18f2,0x13d));var _0x218f=function(_0xad31e1,_0x115cfc){_0xad31e1=_0xad31e1-0x0;var _0x4b0c96=_0x18f2[_0xad31e1];return _0x4b0c96;};'use strict';var _=require(_0x218f('0x0'));var util=require(_0x218f('0x1'));var logger=require('../../config/logger')(_0x218f('0x2'));var moment=require(_0x218f('0x3'));var BPromise=require(_0x218f('0x4'));var rp=require(_0x218f('0x5'));var fs=require('fs');var path=require(_0x218f('0x6'));var rimraf=require('rimraf');var config=require(_0x218f('0x7'));var attributes=require(_0x218f('0x8'));module[_0x218f('0x9')]=function(_0x3cabbf,_0x2fb2ca){return _0x3cabbf[_0x218f('0xa')](_0x218f('0xb'),attributes,{'tableName':_0x218f('0xc'),'paranoid':![],'indexes':[{'name':_0x218f('0xd'),'fields':[_0x218f('0xd')]},{'name':_0x218f('0xe'),'fields':[_0x218f('0xf')],'type':_0x218f('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1ca612,_0x1373bd,_0x5d22fe){var _0x4647a9=_0x3cabbf[_0x218f('0x11')];var _0x4e06d0=_0x1ca612['get']({'plain':!![]});if(_0x4e06d0[_0x218f('0x12')][_0x218f('0x13')]()==='in'||_0x4e06d0[_0x218f('0x12')]['toLowerCase']()===_0x218f('0x14')&&!_0x4e06d0[_0x218f('0x15')]&&!_['isNil'](_0x4e06d0['UserId'])){_0x4647a9[_0x218f('0x16')][_0x218f('0x17')]({'where':{'id':_0x4e06d0[_0x218f('0x18')]}})[_0x218f('0x19')](function(_0x592571){if(_0x592571){_0x592571[_0x218f('0x1a')]({'lastMsgAt':_0x4e06d0[_0x218f('0x1b')],'lastMsgDirection':_0x4e06d0[_0x218f('0x12')]['toLowerCase']()});}})['catch'](function(_0x580660){console['error'](_0x580660);});}if(_0x4e06d0[_0x218f('0x12')]===_0x218f('0x14')&&!_0x4e06d0[_0x218f('0x15')]){var _0x468091;_0x4647a9['WhatsappAccount']['find']({'where':{'id':_0x4e06d0[_0x218f('0x1c')]},'raw':!![]})[_0x218f('0x19')](function(_0x591978){_0x468091=_0x591978;if(_0x468091&&_0x468091[_0x218f('0x1d')]){switch(_0x468091[_0x218f('0x1d')]){case _0x218f('0x1e'):var _0x26eccc=require('twilio');if(_0x468091[_0x218f('0x1f')]&&_0x468091[_0x218f('0x20')]&&_0x468091[_0x218f('0x21')]){var _0x175b51=new _0x26eccc(_0x468091[_0x218f('0x1f')],_0x468091[_0x218f('0x20')]);_0x175b51[_0x218f('0x22')]['create']({'body':_0x4e06d0[_0x218f('0xf')],'to':_0x218f('0x23')+_0x4e06d0[_0x218f('0x21')],'from':_0x218f('0x23')+_0x468091[_0x218f('0x21')],'statusCallback':_0x468091[_0x218f('0x24')]+_0x218f('0x25')+_0x4e06d0['id']+_0x218f('0x26')+_0x468091[_0x218f('0x27')]})['then'](function(_0x315c2c){if(_0x315c2c[_0x218f('0x28')]){return _0x1ca612['update']({'messageId':_0x315c2c['sid']});}})[_0x218f('0x29')](function(_0x415c59){logger[_0x218f('0x2a')](_0x218f('0x2b'),'afterCreate',_0x218f('0x1e'),util['inspect'](_0x415c59,{'showHidden':![],'depth':null}));});}else{logger[_0x218f('0x2a')](_0x218f('0x2b'),_0x218f('0x2c'),_0x218f('0x1e'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0x218f('0x2d')](function(){_0x5d22fe();});}else{_0x5d22fe();}}},'charset':_0x218f('0x2e'),'collate':_0x218f('0x2f')});};
\ No newline at end of file
index fb69dd8..9330f08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c1c=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./whatsappMessage.socket','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','error','message','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','lodash','util','moment','randomstring'];(function(_0x2f1dd8,_0x6e7091){var _0x4900d1=function(_0x1001c8){while(--_0x1001c8){_0x2f1dd8['push'](_0x2f1dd8['shift']());}};_0x4900d1(++_0x6e7091);}(_0x5c1c,0xa4));var _0xc5c1=function(_0xf3800f,_0x444a64){_0xf3800f=_0xf3800f-0x0;var _0x3b43de=_0x5c1c[_0xf3800f];return _0x3b43de;};'use strict';var _=require(_0xc5c1('0x0'));var util=require(_0xc5c1('0x1'));var moment=require(_0xc5c1('0x2'));var BPromise=require('bluebird');var rs=require(_0xc5c1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc5c1('0x4'))['db'];var utils=require(_0xc5c1('0x5'));var logger=require(_0xc5c1('0x6'))(_0xc5c1('0x7'));var config=require(_0xc5c1('0x8'));var jayson=require(_0xc5c1('0x9'));var client=jayson['client'][_0xc5c1('0xa')]({'port':0x232a});config[_0xc5c1('0xb')]=_[_0xc5c1('0xc')](config[_0xc5c1('0xb')],{'host':_0xc5c1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc5c1('0xb')]));require(_0xc5c1('0xe'))['register'](socket);function respondWithRpcPromise(_0x28adde,_0x3e9fc3,_0x363e78){return new BPromise(function(_0x3dcf97,_0x3c485e){return client['request'](_0x28adde,_0x363e78)['then'](function(_0x11a7af){logger[_0xc5c1('0xf')](_0xc5c1('0x10'),_0x3e9fc3,_0xc5c1('0x11'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x3e9fc3,'request\x20sent',JSON['stringify'](_0x11a7af));if(_0x11a7af['error']){if(_0x11a7af[_0xc5c1('0x12')]['code']===0x1f4){logger['error'](_0xc5c1('0x10'),_0x3e9fc3,_0x11a7af['error'][_0xc5c1('0x13')]);return _0x3c485e(_0x11a7af[_0xc5c1('0x12')][_0xc5c1('0x13')]);}logger[_0xc5c1('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x3e9fc3,_0x11a7af[_0xc5c1('0x12')][_0xc5c1('0x13')]);return _0x3dcf97(_0x11a7af[_0xc5c1('0x12')][_0xc5c1('0x13')]);}else{logger[_0xc5c1('0xf')](_0xc5c1('0x10'),_0x3e9fc3,'request\x20sent');_0x3dcf97(_0x11a7af['result']['message']);}})[_0xc5c1('0x14')](function(_0x3f7e5b){logger[_0xc5c1('0x12')](_0xc5c1('0x10'),_0x3e9fc3,_0x3f7e5b);_0x3c485e(_0x3f7e5b);});});}exports[_0xc5c1('0x15')]=function(_0xf024a6){var _0x559033=this;return new Promise(function(_0x5d074a,_0x3084fa){return db[_0xc5c1('0x16')][_0xc5c1('0x17')](_0xf024a6[_0xc5c1('0x18')],{'raw':_0xf024a6[_0xc5c1('0x19')]?_0xf024a6[_0xc5c1('0x19')][_0xc5c1('0x1a')]===undefined?!![]:![]:!![]})[_0xc5c1('0x1b')](function(_0x547321){logger[_0xc5c1('0xf')](_0xc5c1('0x15'),_0xf024a6);logger['debug'](_0xc5c1('0x15'),_0xf024a6,JSON['stringify'](_0x547321));_0x5d074a(_0x547321);})[_0xc5c1('0x14')](function(_0x4d7c55){logger[_0xc5c1('0x12')](_0xc5c1('0x15'),_0x4d7c55[_0xc5c1('0x13')],_0xf024a6);_0x3084fa(_0x559033['error'](0x1f4,_0x4d7c55[_0xc5c1('0x13')]));});});};
\ No newline at end of file
+var _0x5d90=['redis','defaults','localhost','socket.io-emitter','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','options','raw','debug','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x89d650,_0x3bb571){var _0x11929a=function(_0x1a0685){while(--_0x1a0685){_0x89d650['push'](_0x89d650['shift']());}};_0x11929a(++_0x3bb571);}(_0x5d90,0x79));var _0x05d9=function(_0x52dc8e,_0x9a8a3e){_0x52dc8e=_0x52dc8e-0x0;var _0x278476=_0x5d90[_0x52dc8e];return _0x278476;};'use strict';var _=require(_0x05d9('0x0'));var util=require(_0x05d9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x05d9('0x2'));var fs=require('fs');var Redis=require(_0x05d9('0x3'));var db=require(_0x05d9('0x4'))['db'];var utils=require(_0x05d9('0x5'));var logger=require(_0x05d9('0x6'))(_0x05d9('0x7'));var config=require('../../config/environment');var jayson=require(_0x05d9('0x8'));var client=jayson[_0x05d9('0x9')][_0x05d9('0xa')]({'port':0x232a});config[_0x05d9('0xb')]=_[_0x05d9('0xc')](config[_0x05d9('0xb')],{'host':_0x05d9('0xd'),'port':0x18eb});var socket=require(_0x05d9('0xe'))(new Redis(config[_0x05d9('0xb')]));require('./whatsappMessage.socket')[_0x05d9('0xf')](socket);function respondWithRpcPromise(_0x164add,_0x5944fe,_0x1dd46b){return new BPromise(function(_0x32dda2,_0x40794f){return client[_0x05d9('0x10')](_0x164add,_0x1dd46b)[_0x05d9('0x11')](function(_0x418841){logger[_0x05d9('0x12')](_0x05d9('0x13'),_0x5944fe,_0x05d9('0x14'));logger['debug'](_0x05d9('0x15'),_0x5944fe,'request\x20sent',JSON['stringify'](_0x418841));if(_0x418841[_0x05d9('0x16')]){if(_0x418841[_0x05d9('0x16')][_0x05d9('0x17')]===0x1f4){logger[_0x05d9('0x16')](_0x05d9('0x13'),_0x5944fe,_0x418841[_0x05d9('0x16')][_0x05d9('0x18')]);return _0x40794f(_0x418841[_0x05d9('0x16')][_0x05d9('0x18')]);}logger[_0x05d9('0x16')](_0x05d9('0x13'),_0x5944fe,_0x418841[_0x05d9('0x16')][_0x05d9('0x18')]);return _0x32dda2(_0x418841['error'][_0x05d9('0x18')]);}else{logger['info'](_0x05d9('0x13'),_0x5944fe,_0x05d9('0x14'));_0x32dda2(_0x418841[_0x05d9('0x19')]['message']);}})[_0x05d9('0x1a')](function(_0x11de45){logger[_0x05d9('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x5944fe,_0x11de45);_0x40794f(_0x11de45);});});}exports[_0x05d9('0x1b')]=function(_0x3dc127){var _0x26842f=this;return new Promise(function(_0x3dfe13,_0x1bcd2c){return db[_0x05d9('0x1c')]['create'](_0x3dc127['body'],{'raw':_0x3dc127[_0x05d9('0x1d')]?_0x3dc127[_0x05d9('0x1d')][_0x05d9('0x1e')]===undefined?!![]:![]:!![]})[_0x05d9('0x11')](function(_0x4a5214){logger[_0x05d9('0x12')](_0x05d9('0x1b'),_0x3dc127);logger[_0x05d9('0x1f')](_0x05d9('0x1b'),_0x3dc127,JSON[_0x05d9('0x20')](_0x4a5214));_0x3dfe13(_0x4a5214);})[_0x05d9('0x1a')](function(_0x1bea19){logger[_0x05d9('0x16')](_0x05d9('0x1b'),_0x1bea19[_0x05d9('0x18')],_0x3dc127);_0x1bcd2c(_0x26842f[_0x05d9('0x16')](0x1f4,_0x1bea19[_0x05d9('0x18')]));});});};
\ No newline at end of file
index 8d1b659..20d0657 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f1=['length','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x249364,_0x5a8933){var _0x3d3ada=function(_0x275248){while(--_0x275248){_0x249364['push'](_0x249364['shift']());}};_0x3d3ada(++_0x5a8933);}(_0x44f1,0x1c4));var _0x144f=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x44f1[_0x110c3d];return _0x226d67;};'use strict';var WhatsappMessageEvents=require(_0x144f('0x0'));var events=[_0x144f('0x1'),_0x144f('0x2'),_0x144f('0x3')];function createListener(_0x3e5599,_0x4ac8cf){return function(_0x250f74){_0x4ac8cf[_0x144f('0x4')](_0x3e5599,_0x250f74);};}function removeListener(_0x1d1e40,_0x3a362a){return function(){WhatsappMessageEvents[_0x144f('0x5')](_0x1d1e40,_0x3a362a);};}exports[_0x144f('0x6')]=function(_0x4fd879){for(var _0x3a11fc=0x0,_0x507488=events[_0x144f('0x7')];_0x3a11fc<_0x507488;_0x3a11fc++){var _0x1d5a69=events[_0x3a11fc];var _0x5a451b=createListener(_0x144f('0x8')+_0x1d5a69,_0x4fd879);WhatsappMessageEvents['on'](_0x1d5a69,_0x5a451b);}};
\ No newline at end of file
+var _0x7d81=['update','emit','removeListener','register','./whatsappMessage.events','save'];(function(_0x145051,_0x3496a3){var _0x29209c=function(_0xf10fd4){while(--_0xf10fd4){_0x145051['push'](_0x145051['shift']());}};_0x29209c(++_0x3496a3);}(_0x7d81,0x19c));var _0x17d8=function(_0x572eea,_0x853014){_0x572eea=_0x572eea-0x0;var _0x3c8359=_0x7d81[_0x572eea];return _0x3c8359;};'use strict';var WhatsappMessageEvents=require(_0x17d8('0x0'));var events=[_0x17d8('0x1'),'remove',_0x17d8('0x2')];function createListener(_0x568184,_0x22331e){return function(_0x19051c){_0x22331e[_0x17d8('0x3')](_0x568184,_0x19051c);};}function removeListener(_0x3815c8,_0xbf642d){return function(){WhatsappMessageEvents[_0x17d8('0x4')](_0x3815c8,_0xbf642d);};}exports[_0x17d8('0x5')]=function(_0x390d9a){for(var _0x414511=0x0,_0x386c0d=events['length'];_0x414511<_0x386c0d;_0x414511++){var _0x21d2d7=events[_0x414511];var _0x1460e7=createListener('whatsappMessage:'+_0x21d2d7,_0x390d9a);WhatsappMessageEvents['on'](_0x21d2d7,_0x1460e7);}};
\ No newline at end of file
index e1503bc..26bae3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc86e=['create','/:id/users','addAgents','update','delete','destroy','/:id/teams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','/:id/members','getMembers','post'];(function(_0x39dbb0,_0x58212b){var _0x6e6379=function(_0x4a7506){while(--_0x4a7506){_0x39dbb0['push'](_0x39dbb0['shift']());}};_0x6e6379(++_0x58212b);}(_0xc86e,0xd0));var _0xec86=function(_0xb66420,_0xb65ce8){_0xb66420=_0xb66420-0x0;var _0x41edab=_0xc86e[_0xb66420];return _0x41edab;};'use strict';var multer=require(_0xec86('0x0'));var util=require(_0xec86('0x1'));var path=require('path');var timeout=require(_0xec86('0x2'));var express=require(_0xec86('0x3'));var router=express[_0xec86('0x4')]();var fs_extra=require(_0xec86('0x5'));var auth=require(_0xec86('0x6'));var interaction=require(_0xec86('0x7'));var config=require(_0xec86('0x8'));var controller=require('./whatsappQueue.controller');router[_0xec86('0x9')]('/',auth['isAuthenticated'](),controller[_0xec86('0xa')]);router[_0xec86('0x9')]('/describe',auth[_0xec86('0xb')](),controller[_0xec86('0xc')]);router[_0xec86('0x9')](_0xec86('0xd'),auth[_0xec86('0xb')](),controller['show']);router[_0xec86('0x9')](_0xec86('0xe'),auth[_0xec86('0xb')](),controller[_0xec86('0xf')]);router[_0xec86('0x9')]('/:id/teams',auth[_0xec86('0xb')](),controller['getTeams']);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xec86('0x10')]('/',auth[_0xec86('0xb')](),controller[_0xec86('0x11')]);router['post']('/:id/teams',auth[_0xec86('0xb')](),controller['addTeams']);router[_0xec86('0x10')](_0xec86('0x12'),auth[_0xec86('0xb')](),controller[_0xec86('0x13')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xec86('0x14')]);router[_0xec86('0x15')](_0xec86('0xd'),auth[_0xec86('0xb')](),controller[_0xec86('0x16')]);router[_0xec86('0x15')](_0xec86('0x17'),auth[_0xec86('0xb')](),controller['removeTeams']);router[_0xec86('0x15')](_0xec86('0x12'),auth[_0xec86('0xb')](),controller[_0xec86('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xea6f=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','create','post','addAgents','put','update','destroy','delete','removeAgents','exports','util','path'];(function(_0x3a8d59,_0x96429){var _0x4ddf1e=function(_0x2db364){while(--_0x2db364){_0x3a8d59['push'](_0x3a8d59['shift']());}};_0x4ddf1e(++_0x96429);}(_0xea6f,0x1da));var _0xfea6=function(_0x492962,_0x439763){_0x492962=_0x492962-0x0;var _0xf70cb8=_0xea6f[_0x492962];return _0xf70cb8;};'use strict';var multer=require('multer');var util=require(_0xfea6('0x0'));var path=require(_0xfea6('0x1'));var timeout=require(_0xfea6('0x2'));var express=require('express');var router=express[_0xfea6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xfea6('0x4'));var interaction=require(_0xfea6('0x5'));var config=require(_0xfea6('0x6'));var controller=require(_0xfea6('0x7'));router[_0xfea6('0x8')]('/',auth[_0xfea6('0x9')](),controller[_0xfea6('0xa')]);router[_0xfea6('0x8')](_0xfea6('0xb'),auth['isAuthenticated'](),controller[_0xfea6('0xc')]);router['get'](_0xfea6('0xd'),auth[_0xfea6('0x9')](),controller[_0xfea6('0xe')]);router[_0xfea6('0x8')](_0xfea6('0xf'),auth[_0xfea6('0x9')](),controller['getMembers']);router[_0xfea6('0x8')](_0xfea6('0x10'),auth[_0xfea6('0x9')](),controller[_0xfea6('0x11')]);router[_0xfea6('0x8')](_0xfea6('0x12'),auth[_0xfea6('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0xfea6('0x13')]);router[_0xfea6('0x14')](_0xfea6('0x10'),auth[_0xfea6('0x9')](),controller['addTeams']);router[_0xfea6('0x14')](_0xfea6('0x12'),auth['isAuthenticated'](),controller[_0xfea6('0x15')]);router[_0xfea6('0x16')](_0xfea6('0xd'),auth[_0xfea6('0x9')](),controller[_0xfea6('0x17')]);router['delete'](_0xfea6('0xd'),auth[_0xfea6('0x9')](),controller[_0xfea6('0x18')]);router[_0xfea6('0x19')](_0xfea6('0x10'),auth[_0xfea6('0x9')](),controller['removeTeams']);router[_0xfea6('0x19')](_0xfea6('0x12'),auth[_0xfea6('0x9')](),controller[_0xfea6('0x1a')]);module[_0xfea6('0x1b')]=router;
\ No newline at end of file
index 9441a37..38fb66f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d2d=['sequelize','exports','STRING','name','INTEGER','rrmemory'];(function(_0x4cb250,_0x297bb7){var _0x5276b7=function(_0x13b4dd){while(--_0x13b4dd){_0x4cb250['push'](_0x4cb250['shift']());}};_0x5276b7(++_0x297bb7);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x22ffef,_0x202df3){_0x22ffef=_0x22ffef-0x0;var _0x1c4287=_0x1d2d[_0x22ffef];return _0x1c4287;};'use strict';var Sequelize=require(_0xd1d2('0x0'));module[_0xd1d2('0x1')]={'name':{'type':Sequelize[_0xd1d2('0x2')],'unique':_0xd1d2('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xd1d2('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd1d2('0x5'),'beepall','roundrobin')},'description':{'type':Sequelize[_0xd1d2('0x2')]}};
\ No newline at end of file
+var _0xcb91=['name','INTEGER','ENUM','beepall','roundrobin','STRING'];(function(_0x3af704,_0x58486b){var _0x4ac16c=function(_0x1a49b8){while(--_0x1a49b8){_0x3af704['push'](_0x3af704['shift']());}};_0x4ac16c(++_0x58486b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x172ed7,_0x3d08fd){_0x172ed7=_0x172ed7-0x0;var _0xfa8f61=_0xcb91[_0x172ed7];return _0xfa8f61;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1cb9('0x0')],'unique':_0x1cb9('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x1cb9('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1cb9('0x3')]('rrmemory',_0x1cb9('0x4'),_0x1cb9('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 92cc92f..bc05b4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87c3=['json','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','WhatsappQueue','rows','catch','show','params','include','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','order','findAll','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','Agents','online','interface','flatMap','transaction','each','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','sequelize','QueryTypes','every','TeamId','includes','all','union','compact','value','ids','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','userWhatsappQueue:save','isArray','getAgents','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','localhost','socket.io-emitter','register','status','end','offset','undefined','limit','count','set','Content-Range'];(function(_0x7f27a3,_0x310300){var _0x1a4a5d=function(_0x19d1ff){while(--_0x19d1ff){_0x7f27a3['push'](_0x7f27a3['shift']());}};_0x1a4a5d(++_0x310300);}(_0x87c3,0xf9));var _0x387c=function(_0x2171fa,_0x52c929){_0x2171fa=_0x2171fa-0x0;var _0x2ec719=_0x87c3[_0x2171fa];return _0x2ec719;};'use strict';var emlformat=require(_0x387c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x387c('0x1'));var jsonpatch=require(_0x387c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x387c('0x3'));var Mustache=require(_0x387c('0x4'));var util=require(_0x387c('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x387c('0x6'));var ejs=require(_0x387c('0x7'));var fs=require('fs');var fs_extra=require(_0x387c('0x8'));var _=require('lodash');var squel=require(_0x387c('0x9'));var crypto=require(_0x387c('0xa'));var jsforce=require(_0x387c('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x387c('0x6'));var querystring=require('querystring');var Papa=require(_0x387c('0xc'));var Redis=require(_0x387c('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x387c('0xe'));var as=require(_0x387c('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x387c('0x10'))(_0x387c('0x11'));var utils=require(_0x387c('0x12'));var config=require(_0x387c('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x387c('0x14'),'port':0x18eb});var socket=require(_0x387c('0x15'))(new Redis(config['redis']));require('./whatsappQueue.socket')[_0x387c('0x16')](socket);function respondWithStatusCode(_0x561754,_0x3a92b4){_0x3a92b4=_0x3a92b4||0xcc;return function(_0x23f20f){if(_0x23f20f){return _0x561754['sendStatus'](_0x3a92b4);}return _0x561754[_0x387c('0x17')](_0x3a92b4)[_0x387c('0x18')]();};}function respondWithResult(_0x5e936a,_0x4e8feb){_0x4e8feb=_0x4e8feb||0xc8;return function(_0x3f2741){if(_0x3f2741){return _0x5e936a['status'](_0x4e8feb)['json'](_0x3f2741);}};}function respondWithFilteredResult(_0x34513e,_0x2925fb){return function(_0x13d93e){if(_0x13d93e){var _0x35090e=typeof _0x2925fb[_0x387c('0x19')]===_0x387c('0x1a')&&typeof _0x2925fb[_0x387c('0x1b')]==='undefined';var _0x44566e=_0x13d93e['count'];var _0x1d6470=_0x35090e?0x0:_0x2925fb['offset'];var _0x490b27=_0x35090e?_0x13d93e[_0x387c('0x1c')]:_0x2925fb[_0x387c('0x19')]+_0x2925fb[_0x387c('0x1b')];var _0x2983f3;if(_0x490b27>=_0x44566e){_0x490b27=_0x44566e;_0x2983f3=0xc8;}else{_0x2983f3=0xce;}_0x34513e[_0x387c('0x17')](_0x2983f3);return _0x34513e[_0x387c('0x1d')](_0x387c('0x1e'),_0x1d6470+'-'+_0x490b27+'/'+_0x44566e)[_0x387c('0x1f')](_0x13d93e);}return null;};}function patchUpdates(_0x1db77a){return function(_0x4471af){try{jsonpatch['apply'](_0x4471af,_0x1db77a,!![]);}catch(_0x36a02d){return BPromise[_0x387c('0x20')](_0x36a02d);}return _0x4471af[_0x387c('0x21')]();};}function saveUpdates(_0x265a0b,_0x42846f){return function(_0x1acd8e){if(_0x1acd8e){return _0x1acd8e[_0x387c('0x22')](_0x265a0b)[_0x387c('0x23')](function(_0x4dc203){return _0x4dc203;});}return null;};}function removeEntity(_0x48ddd4,_0x35634f){return function(_0x5a5807){if(_0x5a5807){return _0x5a5807[_0x387c('0x24')]()['then'](function(){var _0x2aaf48=_0x5a5807[_0x387c('0x25')]({'plain':!![]});var _0x3f13b0='WhatsappQueues';return db[_0x387c('0x26')][_0x387c('0x24')]({'where':{'type':_0x3f13b0,'resourceId':_0x2aaf48['id']}})[_0x387c('0x23')](function(){return _0x5a5807;});})[_0x387c('0x23')](function(){_0x48ddd4[_0x387c('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x579a45,_0x3611d9){return function(_0x5f02ef){if(!_0x5f02ef){_0x579a45[_0x387c('0x27')](0x194);}return _0x5f02ef;};}function handleError(_0x1f4d33,_0x45c3eb){_0x45c3eb=_0x45c3eb||0x1f4;return function(_0x977c3c){logger[_0x387c('0x28')](_0x977c3c[_0x387c('0x29')]);if(_0x977c3c[_0x387c('0x2a')]){delete _0x977c3c[_0x387c('0x2a')];}_0x1f4d33[_0x387c('0x17')](_0x45c3eb)['send'](_0x977c3c);};}exports[_0x387c('0x2b')]=function(_0x5b204d,_0x26e704){var _0x5dafa9={},_0x456460={},_0x233803={'count':0x0,'rows':[]};var _0x331491=_[_0x387c('0x2c')](db['WhatsappQueue'][_0x387c('0x2d')],function(_0x52b271){return{'name':_0x52b271[_0x387c('0x2e')],'type':_0x52b271[_0x387c('0x2f')][_0x387c('0x30')]};});_0x456460[_0x387c('0x31')]=_[_0x387c('0x2c')](_0x331491,_0x387c('0x2a'));_0x456460[_0x387c('0x32')]=_[_0x387c('0x33')](_0x5b204d[_0x387c('0x32')]);_0x456460[_0x387c('0x34')]=_['intersection'](_0x456460['model'],_0x456460[_0x387c('0x32')]);_0x5dafa9[_0x387c('0x35')]=_[_0x387c('0x36')](_0x456460['model'],qs['fields'](_0x5b204d['query'][_0x387c('0x37')]));_0x5dafa9['attributes']=_0x5dafa9[_0x387c('0x35')][_0x387c('0x38')]?_0x5dafa9[_0x387c('0x35')]:_0x456460[_0x387c('0x31')];if(!_0x5b204d[_0x387c('0x32')][_0x387c('0x39')](_0x387c('0x3a'))){_0x5dafa9[_0x387c('0x1b')]=qs['limit'](_0x5b204d[_0x387c('0x32')][_0x387c('0x1b')]);_0x5dafa9['offset']=qs['offset'](_0x5b204d[_0x387c('0x32')][_0x387c('0x19')]);}_0x5dafa9['order']=qs[_0x387c('0x3b')](_0x5b204d[_0x387c('0x32')][_0x387c('0x3b')]);_0x5dafa9[_0x387c('0x3c')]=qs[_0x387c('0x34')](_[_0x387c('0x3d')](_0x5b204d[_0x387c('0x32')],_0x456460['filters']),_0x331491);if(_0x5b204d[_0x387c('0x32')][_0x387c('0x3e')]){_0x5dafa9[_0x387c('0x3c')]=_[_0x387c('0x3f')](_0x5dafa9['where'],{'$or':_[_0x387c('0x2c')](_0x331491,function(_0x87af92){if(_0x87af92[_0x387c('0x2f')]!=='VIRTUAL'){var _0x1c1320={};_0x1c1320[_0x87af92[_0x387c('0x2a')]]={'$like':'%'+_0x5b204d[_0x387c('0x32')][_0x387c('0x3e')]+'%'};return _0x1c1320;}})});}_0x5dafa9=_[_0x387c('0x3f')]({},_0x5dafa9,_0x5b204d[_0x387c('0x40')]);var _0x2593c2={'where':_0x5dafa9[_0x387c('0x3c')]};return db['WhatsappQueue'][_0x387c('0x1c')](_0x2593c2)[_0x387c('0x23')](function(_0x21f64d){_0x233803[_0x387c('0x1c')]=_0x21f64d;if(_0x5b204d[_0x387c('0x32')][_0x387c('0x41')]){_0x5dafa9['include']=[{'all':!![]}];}return db[_0x387c('0x42')]['findAll'](_0x5dafa9);})[_0x387c('0x23')](function(_0x3504d2){_0x233803[_0x387c('0x43')]=_0x3504d2;return _0x233803;})['then'](respondWithFilteredResult(_0x26e704,_0x5dafa9))[_0x387c('0x44')](handleError(_0x26e704,null));};exports[_0x387c('0x45')]=function(_0x21b51a,_0x3ff056){var _0x4adfaf={'raw':!![],'where':{'id':_0x21b51a[_0x387c('0x46')]['id']}},_0x3ff78d={};_0x3ff78d[_0x387c('0x31')]=_[_0x387c('0x33')](db[_0x387c('0x42')][_0x387c('0x2d')]);_0x3ff78d[_0x387c('0x32')]=_['keys'](_0x21b51a[_0x387c('0x32')]);_0x3ff78d[_0x387c('0x34')]=_[_0x387c('0x36')](_0x3ff78d[_0x387c('0x31')],_0x3ff78d['query']);_0x4adfaf['attributes']=_[_0x387c('0x36')](_0x3ff78d[_0x387c('0x31')],qs[_0x387c('0x37')](_0x21b51a[_0x387c('0x32')][_0x387c('0x37')]));_0x4adfaf[_0x387c('0x35')]=_0x4adfaf['attributes'][_0x387c('0x38')]?_0x4adfaf[_0x387c('0x35')]:_0x3ff78d['model'];if(_0x21b51a[_0x387c('0x32')][_0x387c('0x41')]){_0x4adfaf[_0x387c('0x47')]=[{'all':!![]}];}_0x4adfaf=_[_0x387c('0x3f')]({},_0x4adfaf,_0x21b51a[_0x387c('0x40')]);return db['WhatsappQueue'][_0x387c('0x48')](_0x4adfaf)['then'](handleEntityNotFound(_0x3ff056,null))[_0x387c('0x23')](respondWithResult(_0x3ff056,null))['catch'](handleError(_0x3ff056,null));};exports[_0x387c('0x49')]=function(_0x338b04,_0xde7b23){return db['WhatsappQueue'][_0x387c('0x49')](_0x338b04[_0x387c('0x4a')],{})[_0x387c('0x23')](function(_0x4ae0dc){var _0x15fffe=_0x338b04[_0x387c('0x4b')][_0x387c('0x25')]({'plain':!![]});if(!_0x15fffe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15fffe[_0x387c('0x4c')]===_0x387c('0x4b')){var _0x2d73ef=_0x4ae0dc['get']({'plain':!![]});var _0x5b7c52='WhatsappQueues';return db[_0x387c('0x4d')]['find']({'where':{'name':_0x5b7c52,'userProfileId':_0x15fffe[_0x387c('0x4e')]},'raw':!![]})[_0x387c('0x23')](function(_0x425855){if(_0x425855&&_0x425855[_0x387c('0x4f')]===0x0){return db[_0x387c('0x26')]['create']({'name':_0x2d73ef[_0x387c('0x2a')],'resourceId':_0x2d73ef['id'],'type':_0x425855['name'],'sectionId':_0x425855['id']},{})[_0x387c('0x23')](function(){return _0x4ae0dc;});}else{return _0x4ae0dc;}})['catch'](function(_0x340b93){logger[_0x387c('0x28')](_0x387c('0x50'),_0x340b93);throw _0x340b93;});}return _0x4ae0dc;})[_0x387c('0x23')](respondWithResult(_0xde7b23,0xc9))[_0x387c('0x44')](handleError(_0xde7b23,null));};exports[_0x387c('0x22')]=function(_0x7a0c49,_0x5e8156){if(_0x7a0c49[_0x387c('0x4a')]['id']){delete _0x7a0c49[_0x387c('0x4a')]['id'];}return db['WhatsappQueue'][_0x387c('0x48')]({'where':{'id':_0x7a0c49[_0x387c('0x46')]['id']}})[_0x387c('0x23')](handleEntityNotFound(_0x5e8156,null))[_0x387c('0x23')](saveUpdates(_0x7a0c49[_0x387c('0x4a')],null))[_0x387c('0x23')](respondWithResult(_0x5e8156,null))['catch'](handleError(_0x5e8156,null));};exports['destroy']=function(_0x5609d0,_0x450123){return db[_0x387c('0x42')][_0x387c('0x48')]({'where':{'id':_0x5609d0[_0x387c('0x46')]['id']}})[_0x387c('0x23')](handleEntityNotFound(_0x450123,null))[_0x387c('0x23')](removeEntity(_0x450123,null))[_0x387c('0x44')](handleError(_0x450123,null));};exports[_0x387c('0x51')]=function(_0x254e80,_0x22a1e7){return db[_0x387c('0x42')][_0x387c('0x51')]()['then'](respondWithResult(_0x22a1e7,null))[_0x387c('0x44')](handleError(_0x22a1e7,null));};exports[_0x387c('0x52')]=function(_0x2791bc,_0x5cb178,_0x253fa2){var _0x432ea7={'raw':!![],'where':{}},_0x51fe09={},_0x261c65;return db['WhatsappQueue'][_0x387c('0x53')]({'where':{'id':_0x2791bc['params']['id']}})['then'](handleEntityNotFound(_0x5cb178,null))[_0x387c('0x23')](function(_0x57330d){if(_0x57330d){_0x261c65=_0x57330d[_0x387c('0x25')]({'plain':!![]});_0x51fe09[_0x387c('0x31')]=_[_0x387c('0x33')](db[_0x387c('0x54')]['rawAttributes']);_0x51fe09[_0x387c('0x32')]=_[_0x387c('0x33')](_0x2791bc[_0x387c('0x32')]);_0x51fe09[_0x387c('0x34')]=_[_0x387c('0x36')](_0x51fe09[_0x387c('0x31')],_0x51fe09[_0x387c('0x32')]);_0x432ea7[_0x387c('0x35')]=_[_0x387c('0x36')](_0x51fe09[_0x387c('0x31')],qs[_0x387c('0x37')](_0x2791bc['query'][_0x387c('0x37')]));_0x432ea7['attributes']=_0x432ea7['attributes']['length']?_0x432ea7[_0x387c('0x35')]:_0x51fe09[_0x387c('0x31')];if(!_0x2791bc[_0x387c('0x32')][_0x387c('0x39')](_0x387c('0x3a'))){_0x432ea7[_0x387c('0x1b')]=qs['limit'](_0x2791bc[_0x387c('0x32')][_0x387c('0x1b')]);_0x432ea7[_0x387c('0x19')]=qs['offset'](_0x2791bc[_0x387c('0x32')]['offset']);}_0x432ea7[_0x387c('0x55')]=qs[_0x387c('0x3b')](_0x2791bc[_0x387c('0x32')][_0x387c('0x3b')]);_0x432ea7[_0x387c('0x3c')]=qs[_0x387c('0x34')](_['pick'](_0x2791bc['query'],_0x51fe09['filters']));_0x432ea7[_0x387c('0x3c')]['WhatsappQueueId']=_0x57330d['id'];if(_0x2791bc['query'][_0x387c('0x3e')]){_0x432ea7[_0x387c('0x3c')]=_['merge'](_0x432ea7[_0x387c('0x3c')],{'$or':_[_0x387c('0x2c')](_0x432ea7[_0x387c('0x35')],function(_0x56db86){var _0xfbc185={};_0xfbc185[_0x56db86]={'$like':'%'+_0x2791bc['query'][_0x387c('0x3e')]+'%'};return _0xfbc185;})});}_0x432ea7=_['merge']({},_0x432ea7,_0x2791bc['options']);return db[_0x387c('0x54')][_0x387c('0x56')](_0x432ea7);}})['then'](function(_0x816e40){if(_0x816e40){return db[_0x387c('0x57')][_0x387c('0x58')]({'where':{'id':_['map'](_0x816e40,_0x387c('0x59')),'role':_0x387c('0x5a')},'attributes':['id',_0x387c('0x2a'),_0x387c('0x5b'),_0x387c('0x5c'),_0x387c('0x5d')]});}})[_0x387c('0x23')](function(_0x236369){if(_0x236369){return{'count':_0x236369[_0x387c('0x1c')],'rows':_[_0x387c('0x2c')](_0x236369[_0x387c('0x43')],function(_0x48350f){return{'membername':_0x48350f['name'],'UserId':_0x48350f['id'],'queue_name':_0x261c65[_0x387c('0x2a')],'WhatsappQueueId':_0x261c65['id'],'interface':util[_0x387c('0x5e')](_0x387c('0x5f'),_0x387c('0x60'),_0x48350f[_0x387c('0x2a')]),'penalty':0x0,'paused':_0x48350f[_0x387c('0x5b')],'createdAt':_0x48350f[_0x387c('0x5d')],'updatedAt':_0x48350f[_0x387c('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x387c('0x23')](respondWithFilteredResult(_0x5cb178,_0x432ea7))[_0x387c('0x44')](handleError(_0x5cb178,null));};exports[_0x387c('0x61')]=function(_0x4ec7c3,_0x57a0cb,_0x25790b){var _0x48b431={};var _0x52e3d0={};var _0x8f6b44;var _0x21929d;return db[_0x387c('0x42')]['findOne']({'where':{'id':_0x4ec7c3[_0x387c('0x46')]['id']}})[_0x387c('0x23')](handleEntityNotFound(_0x57a0cb,null))[_0x387c('0x23')](function(_0x268245){if(_0x268245){_0x8f6b44=_0x268245;_0x52e3d0[_0x387c('0x31')]=_[_0x387c('0x33')](db[_0x387c('0x62')][_0x387c('0x2d')]);_0x52e3d0[_0x387c('0x32')]=_[_0x387c('0x33')](_0x4ec7c3[_0x387c('0x32')]);_0x52e3d0[_0x387c('0x34')]=_[_0x387c('0x36')](_0x52e3d0[_0x387c('0x31')],_0x52e3d0[_0x387c('0x32')]);_0x48b431['attributes']=_[_0x387c('0x36')](_0x52e3d0[_0x387c('0x31')],qs[_0x387c('0x37')](_0x4ec7c3[_0x387c('0x32')]['fields']));_0x48b431[_0x387c('0x35')]=_0x48b431[_0x387c('0x35')][_0x387c('0x38')]?_0x48b431['attributes']:_0x52e3d0[_0x387c('0x31')];_0x48b431['order']=qs[_0x387c('0x3b')](_0x4ec7c3[_0x387c('0x32')][_0x387c('0x3b')]);_0x48b431[_0x387c('0x3c')]=qs[_0x387c('0x34')](_[_0x387c('0x3d')](_0x4ec7c3[_0x387c('0x32')],_0x52e3d0['filters']));if(_0x4ec7c3[_0x387c('0x32')][_0x387c('0x3e')]){_0x48b431['where']=_['merge'](_0x48b431['where'],{'$or':_['map'](_0x48b431[_0x387c('0x35')],function(_0x90e14f){var _0x5c6589={};_0x5c6589[_0x90e14f]={'$like':'%'+_0x4ec7c3[_0x387c('0x32')][_0x387c('0x3e')]+'%'};return _0x5c6589;})});}_0x48b431=_['merge']({},_0x48b431,_0x4ec7c3[_0x387c('0x40')]);return _0x8f6b44['getTeams'](_0x48b431);}})[_0x387c('0x23')](function(_0x3ad287){if(_0x3ad287){_0x21929d=_0x3ad287['length'];if(!_0x4ec7c3['query'][_0x387c('0x39')](_0x387c('0x3a'))){_0x48b431[_0x387c('0x1b')]=qs['limit'](_0x4ec7c3[_0x387c('0x32')][_0x387c('0x1b')]);_0x48b431['offset']=qs[_0x387c('0x19')](_0x4ec7c3['query'][_0x387c('0x19')]);}return _0x8f6b44[_0x387c('0x61')](_0x48b431);}})[_0x387c('0x23')](function(_0xd23d21){if(_0xd23d21){return _0xd23d21?{'count':_0x21929d,'rows':_0xd23d21}:null;}})[_0x387c('0x23')](respondWithResult(_0x57a0cb,null))[_0x387c('0x44')](handleError(_0x57a0cb,null));};exports[_0x387c('0x63')]=function(_0x37bbd4,_0x5ed94d,_0x247698){var _0x5b2a29=_0x37bbd4['body']['ids'];return db[_0x387c('0x62')][_0x387c('0x56')]({'where':{'id':_0x5b2a29},'attributes':['id'],'include':[{'model':db[_0x387c('0x57')],'as':_0x387c('0x64'),'attributes':['id',_0x387c('0x2a'),_0x387c('0x65'),'voicePause',_0x387c('0x66')],'raw':!![]}]})['then'](function(_0x38b09a){if(_0x38b09a){var _0x501312=_[_0x387c('0x67')](_0x38b09a,function(_0x1ee240){var _0x35c96d=_0x1ee240[_0x387c('0x25')]({'plain':!![]});return _0x35c96d[_0x387c('0x64')];});return db[_0x387c('0x42')][_0x387c('0x48')]({'where':{'id':_0x37bbd4[_0x387c('0x46')]['id']}})[_0x387c('0x23')](function(_0x47b868){return db['sequelize'][_0x387c('0x68')](function(_0x269ff8){return _0x47b868[_0x387c('0x63')](_0x5b2a29,{'transaction':_0x269ff8})[_0x387c('0x23')](function(){return BPromise[_0x387c('0x69')](_0x501312,function(_0xafb1c6){return db['UserWhatsappQueue']['findOrCreate']({'where':{'UserId':_0xafb1c6['id'],'WhatsappQueueId':_0x37bbd4[_0x387c('0x46')]['id']},'transaction':_0x269ff8});});})[_0x387c('0x23')](function(){_0x501312[_0x387c('0x6a')](function(_0x24d550){socket[_0x387c('0x6b')]('userWhatsappQueue:save',{'UserId':_0x24d550['id'],'WhatsappQueueId':_0x47b868['id']});});});});});}})[_0x387c('0x23')](respondWithStatusCode(_0x5ed94d,null))[_0x387c('0x44')](handleError(_0x5ed94d,null));};exports[_0x387c('0x6c')]=function(_0x10a487,_0x2838bd,_0x73dd50){return db['Team'][_0x387c('0x56')]({'where':{'id':_0x10a487['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x387c('0x57')],'as':_0x387c('0x64'),'attributes':['id'],'raw':!![]}]})[_0x387c('0x23')](handleEntityNotFound(_0x2838bd,null))[_0x387c('0x23')](function(_0x558001){var _0x505758=_[_0x387c('0x2c')](_0x558001,'id');var _0x32ed58=[];var _0x2e0954=[];var _0x39e34e=squel[_0x387c('0x6d')]();_0x39e34e[_0x387c('0x6e')](_0x387c('0x6f'))[_0x387c('0x70')](_0x387c('0x71'),'tq')[_0x387c('0x72')](_0x387c('0x73'),'ut',_0x387c('0x74'))['where'](_0x387c('0x75'),_0x10a487[_0x387c('0x46')]['id']);for(var _0x417398=0x0;_0x417398<_0x558001[_0x387c('0x38')];_0x417398+=0x1){let _0x37e303=_0x558001[_0x417398];for(var _0x4dc50b=0x0;_0x4dc50b<_0x37e303[_0x387c('0x64')]['length'];_0x4dc50b+=0x1){let _0xd36b47=_0x37e303[_0x387c('0x64')][_0x4dc50b];var _0x26dc32=_0x39e34e[_0x387c('0x76')]();_0x26dc32['where'](_0x387c('0x77'),_0xd36b47['id']);_0x2e0954['push'](db['sequelize'][_0x387c('0x32')](_0x26dc32[_0x387c('0x78')](),{'type':db[_0x387c('0x79')][_0x387c('0x7a')]['SELECT']})['then'](function(_0x3e9b1d){if(_0x3e9b1d[_0x387c('0x38')]===0x1){return _0xd36b47['id'];}else{var _0x32eb82=_[_0x387c('0x7b')](_[_0x387c('0x2c')](_0x3e9b1d,_0x387c('0x7c')),function(_0x28f835){return _[_0x387c('0x7d')](_0x505758,_0x28f835);});if(_0x32eb82){return _0xd36b47['id'];}}}));}}return BPromise[_0x387c('0x7e')](_0x2e0954)[_0x387c('0x23')](function(_0x539187){_0x32ed58=_(_0x32ed58)[_0x387c('0x7f')](_0x539187)[_0x387c('0x80')]()[_0x387c('0x81')]();return db[_0x387c('0x42')][_0x387c('0x48')]({'where':{'id':_0x10a487[_0x387c('0x46')]['id']}})[_0x387c('0x23')](function(_0x10a946){return db[_0x387c('0x79')][_0x387c('0x68')](function(_0x218be2){return _0x10a946['removeTeams'](_0x10a487[_0x387c('0x32')][_0x387c('0x82')],{'transaction':_0x218be2})['then'](function(){if(!_[_0x387c('0x83')](_0x32ed58)){return _0x10a946[_0x387c('0x84')](_0x32ed58,{'transaction':_0x218be2});}})[_0x387c('0x23')](function(){_0x32ed58[_0x387c('0x6a')](function(_0x4f9091){socket[_0x387c('0x6b')](_0x387c('0x85'),{'UserId':_0x4f9091,'WhatsappQueueId':_0x10a946['id']});});});});});});})[_0x387c('0x23')](respondWithStatusCode(_0x2838bd,null))[_0x387c('0x44')](handleError(_0x2838bd,null));};exports[_0x387c('0x86')]=function(_0xa9c3ec,_0xf6b090,_0xd356d5){return db[_0x387c('0x42')][_0x387c('0x48')]({'where':{'id':_0xa9c3ec['params']['id']}})[_0x387c('0x23')](handleEntityNotFound(_0xf6b090,null))['then'](function(_0x3202bb){if(_0x3202bb){return _0x3202bb['addAgents'](_0xa9c3ec[_0x387c('0x4a')][_0x387c('0x82')],_[_0x387c('0x87')](_0xa9c3ec['body'],[_0x387c('0x82'),'id'])||{})[_0x387c('0x88')](function(_0x23ee3b){for(var _0x5c2feb=0x0;_0x5c2feb<_0xa9c3ec[_0x387c('0x4a')][_0x387c('0x82')][_0x387c('0x38')];_0x5c2feb+=0x1){socket[_0x387c('0x6b')](_0x387c('0x89'),{'UserId':Number(_0xa9c3ec[_0x387c('0x4a')][_0x387c('0x82')][_0x5c2feb]),'WhatsappQueueId':Number(_0xa9c3ec[_0x387c('0x46')]['id'])});}return _0x23ee3b;});}})[_0x387c('0x23')](respondWithResult(_0xf6b090,null))[_0x387c('0x44')](handleError(_0xf6b090,null));};exports['removeAgents']=function(_0x56eb6f,_0x32dfdf,_0x3dcdd4){return db[_0x387c('0x42')][_0x387c('0x48')]({'where':{'id':_0x56eb6f[_0x387c('0x46')]['id']}})[_0x387c('0x23')](handleEntityNotFound(_0x32dfdf,null))[_0x387c('0x23')](function(_0x4491c1){if(_0x4491c1){return _0x4491c1[_0x387c('0x84')](_0x56eb6f[_0x387c('0x32')][_0x387c('0x82')])['then'](function(){if(_[_0x387c('0x8a')](_0x56eb6f[_0x387c('0x32')][_0x387c('0x82')])){for(var _0x1a65b4=0x0;_0x1a65b4<_0x56eb6f[_0x387c('0x32')]['ids'][_0x387c('0x38')];_0x1a65b4+=0x1){socket[_0x387c('0x6b')](_0x387c('0x85'),{'UserId':Number(_0x56eb6f[_0x387c('0x32')][_0x387c('0x82')][_0x1a65b4]),'WhatsappQueueId':Number(_0x56eb6f[_0x387c('0x46')]['id'])});}}else{socket[_0x387c('0x6b')]('userWhatsappQueue:remove',{'UserId':Number(_0x56eb6f[_0x387c('0x32')][_0x387c('0x82')]),'WhatsappQueueId':Number(_0x56eb6f[_0x387c('0x46')]['id'])});}});}})['then'](respondWithStatusCode(_0x32dfdf,null))[_0x387c('0x44')](handleError(_0x32dfdf,null));};exports['getAgents']=function(_0x5a2caa,_0x176252,_0x2f0b8f){var _0x12d151={};var _0x401863={};var _0x242cc4;var _0x38c0d9;return db['WhatsappQueue'][_0x387c('0x53')]({'where':{'id':_0x5a2caa[_0x387c('0x46')]['id']}})[_0x387c('0x23')](handleEntityNotFound(_0x176252,null))[_0x387c('0x23')](function(_0x59aa3d){if(_0x59aa3d){_0x242cc4=_0x59aa3d;_0x401863['model']=_[_0x387c('0x33')](db[_0x387c('0x57')][_0x387c('0x2d')]);_0x401863['query']=_[_0x387c('0x33')](_0x5a2caa[_0x387c('0x32')]);_0x401863[_0x387c('0x34')]=_[_0x387c('0x36')](_0x401863[_0x387c('0x31')],_0x401863[_0x387c('0x32')]);_0x12d151[_0x387c('0x35')]=_[_0x387c('0x36')](_0x401863[_0x387c('0x31')],qs[_0x387c('0x37')](_0x5a2caa['query'][_0x387c('0x37')]));_0x12d151[_0x387c('0x35')]=_0x12d151['attributes'][_0x387c('0x38')]?_0x12d151[_0x387c('0x35')]:_0x401863['model'];_0x12d151[_0x387c('0x55')]=qs[_0x387c('0x3b')](_0x5a2caa[_0x387c('0x32')][_0x387c('0x3b')]);_0x12d151['where']=qs[_0x387c('0x34')](_[_0x387c('0x3d')](_0x5a2caa['query'],_0x401863[_0x387c('0x34')]));if(_0x5a2caa['query']['filter']){_0x12d151['where']=_['merge'](_0x12d151['where'],{'$or':_[_0x387c('0x2c')](_0x12d151[_0x387c('0x35')],function(_0x5f50cb){var _0x3ebbae={};_0x3ebbae[_0x5f50cb]={'$like':'%'+_0x5a2caa['query']['filter']+'%'};return _0x3ebbae;})});}_0x12d151=_[_0x387c('0x3f')]({},_0x12d151,_0x5a2caa[_0x387c('0x40')]);return _0x242cc4[_0x387c('0x8b')](_0x12d151);}})['then'](function(_0x54c464){if(_0x54c464){_0x38c0d9=_0x54c464[_0x387c('0x38')];if(!_0x5a2caa[_0x387c('0x32')][_0x387c('0x39')](_0x387c('0x3a'))){_0x12d151[_0x387c('0x1b')]=qs[_0x387c('0x1b')](_0x5a2caa['query'][_0x387c('0x1b')]);_0x12d151[_0x387c('0x19')]=qs['offset'](_0x5a2caa[_0x387c('0x32')][_0x387c('0x19')]);}return _0x242cc4[_0x387c('0x8b')](_0x12d151);}})[_0x387c('0x23')](function(_0x56d37c){if(_0x56d37c){return _0x56d37c?{'count':_0x38c0d9,'rows':_0x56d37c}:null;}})['then'](respondWithResult(_0x176252,null))[_0x387c('0x44')](handleError(_0x176252,null));};
\ No newline at end of file
+var _0x6aef=['sort','where','pick','filter','merge','VIRTUAL','options','WhatsappQueue','includeAll','include','findAll','catch','show','params','length','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','User','findAndCountAll','UserId','whatsappPause','updatedAt','rows','format','%s/%s','createdAt','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','union','compact','isEmpty','removeAgents','addAgents','omit','spread','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','destroy','get','WhatsappQueues','UserProfileResource','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x4a07c0,_0x17de9f){var _0x1f8d63=function(_0xc67f9d){while(--_0xc67f9d){_0x4a07c0['push'](_0x4a07c0['shift']());}};_0x1f8d63(++_0x17de9f);}(_0x6aef,0x1ec));var _0xf6ae=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6aef[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xf6ae('0x0'));var rimraf=require(_0xf6ae('0x1'));var zipdir=require(_0xf6ae('0x2'));var jsonpatch=require(_0xf6ae('0x3'));var rp=require('request-promise');var moment=require(_0xf6ae('0x4'));var BPromise=require(_0xf6ae('0x5'));var Mustache=require(_0xf6ae('0x6'));var util=require(_0xf6ae('0x7'));var path=require(_0xf6ae('0x8'));var sox=require('sox');var csv=require(_0xf6ae('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf6ae('0xa'));var _=require(_0xf6ae('0xb'));var squel=require(_0xf6ae('0xc'));var crypto=require(_0xf6ae('0xd'));var jsforce=require(_0xf6ae('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf6ae('0x9'));var querystring=require(_0xf6ae('0xf'));var Papa=require('papaparse');var Redis=require(_0xf6ae('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf6ae('0x11'));var as=require(_0xf6ae('0x12'));var hardwareService=require(_0xf6ae('0x13'));var logger=require('../../config/logger')(_0xf6ae('0x14'));var utils=require(_0xf6ae('0x15'));var config=require(_0xf6ae('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf6ae('0x17'))['db'];config[_0xf6ae('0x18')]=_[_0xf6ae('0x19')](config[_0xf6ae('0x18')],{'host':_0xf6ae('0x1a'),'port':0x18eb});var socket=require(_0xf6ae('0x1b'))(new Redis(config[_0xf6ae('0x18')]));require(_0xf6ae('0x1c'))[_0xf6ae('0x1d')](socket);function respondWithStatusCode(_0x2f6e84,_0x4ca681){_0x4ca681=_0x4ca681||0xcc;return function(_0x38621d){if(_0x38621d){return _0x2f6e84[_0xf6ae('0x1e')](_0x4ca681);}return _0x2f6e84[_0xf6ae('0x1f')](_0x4ca681)[_0xf6ae('0x20')]();};}function respondWithResult(_0x51beff,_0x47bb2a){_0x47bb2a=_0x47bb2a||0xc8;return function(_0x384703){if(_0x384703){return _0x51beff['status'](_0x47bb2a)['json'](_0x384703);}};}function respondWithFilteredResult(_0x53c952,_0xdbaf35){return function(_0x5ae65b){if(_0x5ae65b){var _0xa87734=typeof _0xdbaf35[_0xf6ae('0x21')]==='undefined'&&typeof _0xdbaf35[_0xf6ae('0x22')]===_0xf6ae('0x23');var _0x1bbc03=_0x5ae65b[_0xf6ae('0x24')];var _0x43ace0=_0xa87734?0x0:_0xdbaf35['offset'];var _0x51b6d3=_0xa87734?_0x5ae65b[_0xf6ae('0x24')]:_0xdbaf35[_0xf6ae('0x21')]+_0xdbaf35[_0xf6ae('0x22')];var _0xa9676d;if(_0x51b6d3>=_0x1bbc03){_0x51b6d3=_0x1bbc03;_0xa9676d=0xc8;}else{_0xa9676d=0xce;}_0x53c952[_0xf6ae('0x1f')](_0xa9676d);return _0x53c952['set'](_0xf6ae('0x25'),_0x43ace0+'-'+_0x51b6d3+'/'+_0x1bbc03)[_0xf6ae('0x26')](_0x5ae65b);}return null;};}function patchUpdates(_0x5f1bd9){return function(_0x197fc3){try{jsonpatch['apply'](_0x197fc3,_0x5f1bd9,!![]);}catch(_0xfb4cbb){return BPromise[_0xf6ae('0x27')](_0xfb4cbb);}return _0x197fc3[_0xf6ae('0x28')]();};}function saveUpdates(_0x27ea4f,_0x98b17a){return function(_0x35993c){if(_0x35993c){return _0x35993c[_0xf6ae('0x29')](_0x27ea4f)[_0xf6ae('0x2a')](function(_0x4ce99d){return _0x4ce99d;});}return null;};}function removeEntity(_0x5cfe0d,_0x5302a2){return function(_0x3e675e){if(_0x3e675e){return _0x3e675e[_0xf6ae('0x2b')]()[_0xf6ae('0x2a')](function(){var _0x498daa=_0x3e675e[_0xf6ae('0x2c')]({'plain':!![]});var _0x17675b=_0xf6ae('0x2d');return db[_0xf6ae('0x2e')]['destroy']({'where':{'type':_0x17675b,'resourceId':_0x498daa['id']}})[_0xf6ae('0x2a')](function(){return _0x3e675e;});})[_0xf6ae('0x2a')](function(){_0x5cfe0d[_0xf6ae('0x1f')](0xcc)[_0xf6ae('0x20')]();});}};}function handleEntityNotFound(_0x180099,_0x1452dd){return function(_0x377c4e){if(!_0x377c4e){_0x180099[_0xf6ae('0x1e')](0x194);}return _0x377c4e;};}function handleError(_0x5b5254,_0x184cfe){_0x184cfe=_0x184cfe||0x1f4;return function(_0x2bd455){logger[_0xf6ae('0x2f')](_0x2bd455['stack']);if(_0x2bd455[_0xf6ae('0x30')]){delete _0x2bd455[_0xf6ae('0x30')];}_0x5b5254['status'](_0x184cfe)[_0xf6ae('0x31')](_0x2bd455);};}exports['index']=function(_0x6f0230,_0x40d5dd){var _0x1c710a={},_0x575867={},_0x4aed0c={'count':0x0,'rows':[]};var _0x40f98c=_[_0xf6ae('0x32')](db['WhatsappQueue'][_0xf6ae('0x33')],function(_0x121bcc){return{'name':_0x121bcc[_0xf6ae('0x34')],'type':_0x121bcc[_0xf6ae('0x35')]['key']};});_0x575867[_0xf6ae('0x36')]=_[_0xf6ae('0x32')](_0x40f98c,_0xf6ae('0x30'));_0x575867[_0xf6ae('0x37')]=_[_0xf6ae('0x38')](_0x6f0230[_0xf6ae('0x37')]);_0x575867[_0xf6ae('0x39')]=_[_0xf6ae('0x3a')](_0x575867[_0xf6ae('0x36')],_0x575867[_0xf6ae('0x37')]);_0x1c710a[_0xf6ae('0x3b')]=_[_0xf6ae('0x3a')](_0x575867[_0xf6ae('0x36')],qs[_0xf6ae('0x3c')](_0x6f0230['query'][_0xf6ae('0x3c')]));_0x1c710a[_0xf6ae('0x3b')]=_0x1c710a[_0xf6ae('0x3b')]['length']?_0x1c710a[_0xf6ae('0x3b')]:_0x575867[_0xf6ae('0x36')];if(!_0x6f0230[_0xf6ae('0x37')][_0xf6ae('0x3d')](_0xf6ae('0x3e'))){_0x1c710a[_0xf6ae('0x22')]=qs[_0xf6ae('0x22')](_0x6f0230['query']['limit']);_0x1c710a[_0xf6ae('0x21')]=qs[_0xf6ae('0x21')](_0x6f0230[_0xf6ae('0x37')][_0xf6ae('0x21')]);}_0x1c710a[_0xf6ae('0x3f')]=qs['sort'](_0x6f0230[_0xf6ae('0x37')][_0xf6ae('0x40')]);_0x1c710a[_0xf6ae('0x41')]=qs[_0xf6ae('0x39')](_[_0xf6ae('0x42')](_0x6f0230[_0xf6ae('0x37')],_0x575867[_0xf6ae('0x39')]),_0x40f98c);if(_0x6f0230[_0xf6ae('0x37')][_0xf6ae('0x43')]){_0x1c710a[_0xf6ae('0x41')]=_[_0xf6ae('0x44')](_0x1c710a['where'],{'$or':_['map'](_0x40f98c,function(_0x4edfa2){if(_0x4edfa2[_0xf6ae('0x35')]!==_0xf6ae('0x45')){var _0x3aa74e={};_0x3aa74e[_0x4edfa2[_0xf6ae('0x30')]]={'$like':'%'+_0x6f0230[_0xf6ae('0x37')][_0xf6ae('0x43')]+'%'};return _0x3aa74e;}})});}_0x1c710a=_[_0xf6ae('0x44')]({},_0x1c710a,_0x6f0230[_0xf6ae('0x46')]);var _0x5f4794={'where':_0x1c710a['where']};return db[_0xf6ae('0x47')]['count'](_0x5f4794)[_0xf6ae('0x2a')](function(_0x239917){_0x4aed0c[_0xf6ae('0x24')]=_0x239917;if(_0x6f0230['query'][_0xf6ae('0x48')]){_0x1c710a[_0xf6ae('0x49')]=[{'all':!![]}];}return db[_0xf6ae('0x47')][_0xf6ae('0x4a')](_0x1c710a);})[_0xf6ae('0x2a')](function(_0x21f3b6){_0x4aed0c['rows']=_0x21f3b6;return _0x4aed0c;})[_0xf6ae('0x2a')](respondWithFilteredResult(_0x40d5dd,_0x1c710a))[_0xf6ae('0x4b')](handleError(_0x40d5dd,null));};exports[_0xf6ae('0x4c')]=function(_0x576938,_0x319d3c){var _0x30d943={'raw':!![],'where':{'id':_0x576938[_0xf6ae('0x4d')]['id']}},_0x210b82={};_0x210b82['model']=_['keys'](db[_0xf6ae('0x47')]['rawAttributes']);_0x210b82['query']=_[_0xf6ae('0x38')](_0x576938[_0xf6ae('0x37')]);_0x210b82[_0xf6ae('0x39')]=_[_0xf6ae('0x3a')](_0x210b82[_0xf6ae('0x36')],_0x210b82[_0xf6ae('0x37')]);_0x30d943['attributes']=_[_0xf6ae('0x3a')](_0x210b82[_0xf6ae('0x36')],qs['fields'](_0x576938[_0xf6ae('0x37')][_0xf6ae('0x3c')]));_0x30d943['attributes']=_0x30d943['attributes'][_0xf6ae('0x4e')]?_0x30d943[_0xf6ae('0x3b')]:_0x210b82[_0xf6ae('0x36')];if(_0x576938[_0xf6ae('0x37')][_0xf6ae('0x48')]){_0x30d943['include']=[{'all':!![]}];}_0x30d943=_['merge']({},_0x30d943,_0x576938[_0xf6ae('0x46')]);return db[_0xf6ae('0x47')][_0xf6ae('0x4f')](_0x30d943)[_0xf6ae('0x2a')](handleEntityNotFound(_0x319d3c,null))[_0xf6ae('0x2a')](respondWithResult(_0x319d3c,null))[_0xf6ae('0x4b')](handleError(_0x319d3c,null));};exports['create']=function(_0x474aa1,_0x150a23){return db[_0xf6ae('0x47')]['create'](_0x474aa1[_0xf6ae('0x50')],{})[_0xf6ae('0x2a')](function(_0x146eb0){var _0x5f0214=_0x474aa1[_0xf6ae('0x51')]['get']({'plain':!![]});if(!_0x5f0214)throw new Error(_0xf6ae('0x52'));if(_0x5f0214['role']===_0xf6ae('0x51')){var _0x15a35f=_0x146eb0[_0xf6ae('0x2c')]({'plain':!![]});var _0x2d2004=_0xf6ae('0x2d');return db[_0xf6ae('0x53')]['find']({'where':{'name':_0x2d2004,'userProfileId':_0x5f0214['userProfileId']},'raw':!![]})[_0xf6ae('0x2a')](function(_0x86bc61){if(_0x86bc61&&_0x86bc61[_0xf6ae('0x54')]===0x0){return db[_0xf6ae('0x2e')][_0xf6ae('0x55')]({'name':_0x15a35f[_0xf6ae('0x30')],'resourceId':_0x15a35f['id'],'type':_0x86bc61[_0xf6ae('0x30')],'sectionId':_0x86bc61['id']},{})[_0xf6ae('0x2a')](function(){return _0x146eb0;});}else{return _0x146eb0;}})['catch'](function(_0x2e57e1){logger[_0xf6ae('0x2f')](_0xf6ae('0x56'),_0x2e57e1);throw _0x2e57e1;});}return _0x146eb0;})[_0xf6ae('0x2a')](respondWithResult(_0x150a23,0xc9))[_0xf6ae('0x4b')](handleError(_0x150a23,null));};exports[_0xf6ae('0x29')]=function(_0x1c9828,_0x18ca39){if(_0x1c9828['body']['id']){delete _0x1c9828[_0xf6ae('0x50')]['id'];}return db[_0xf6ae('0x47')][_0xf6ae('0x4f')]({'where':{'id':_0x1c9828['params']['id']}})[_0xf6ae('0x2a')](handleEntityNotFound(_0x18ca39,null))['then'](saveUpdates(_0x1c9828[_0xf6ae('0x50')],null))[_0xf6ae('0x2a')](respondWithResult(_0x18ca39,null))[_0xf6ae('0x4b')](handleError(_0x18ca39,null));};exports['destroy']=function(_0x2de246,_0x350258){return db['WhatsappQueue']['find']({'where':{'id':_0x2de246[_0xf6ae('0x4d')]['id']}})[_0xf6ae('0x2a')](handleEntityNotFound(_0x350258,null))[_0xf6ae('0x2a')](removeEntity(_0x350258,null))[_0xf6ae('0x4b')](handleError(_0x350258,null));};exports['describe']=function(_0x31681f,_0x1cb774){return db[_0xf6ae('0x47')][_0xf6ae('0x57')]()[_0xf6ae('0x2a')](respondWithResult(_0x1cb774,null))[_0xf6ae('0x4b')](handleError(_0x1cb774,null));};exports[_0xf6ae('0x58')]=function(_0x52a43d,_0x35bfd0,_0x14097a){var _0x1a316a={'raw':!![],'where':{}},_0x2061bc={},_0x44ab60;return db['WhatsappQueue'][_0xf6ae('0x59')]({'where':{'id':_0x52a43d[_0xf6ae('0x4d')]['id']}})[_0xf6ae('0x2a')](handleEntityNotFound(_0x35bfd0,null))['then'](function(_0x2f8cbf){if(_0x2f8cbf){_0x44ab60=_0x2f8cbf[_0xf6ae('0x2c')]({'plain':!![]});_0x2061bc[_0xf6ae('0x36')]=_[_0xf6ae('0x38')](db[_0xf6ae('0x5a')][_0xf6ae('0x33')]);_0x2061bc['query']=_[_0xf6ae('0x38')](_0x52a43d[_0xf6ae('0x37')]);_0x2061bc[_0xf6ae('0x39')]=_[_0xf6ae('0x3a')](_0x2061bc['model'],_0x2061bc['query']);_0x1a316a['attributes']=_[_0xf6ae('0x3a')](_0x2061bc[_0xf6ae('0x36')],qs['fields'](_0x52a43d[_0xf6ae('0x37')][_0xf6ae('0x3c')]));_0x1a316a[_0xf6ae('0x3b')]=_0x1a316a['attributes'][_0xf6ae('0x4e')]?_0x1a316a['attributes']:_0x2061bc[_0xf6ae('0x36')];if(!_0x52a43d[_0xf6ae('0x37')][_0xf6ae('0x3d')](_0xf6ae('0x3e'))){_0x1a316a[_0xf6ae('0x22')]=qs[_0xf6ae('0x22')](_0x52a43d[_0xf6ae('0x37')][_0xf6ae('0x22')]);_0x1a316a[_0xf6ae('0x21')]=qs[_0xf6ae('0x21')](_0x52a43d[_0xf6ae('0x37')][_0xf6ae('0x21')]);}_0x1a316a[_0xf6ae('0x3f')]=qs[_0xf6ae('0x40')](_0x52a43d[_0xf6ae('0x37')][_0xf6ae('0x40')]);_0x1a316a[_0xf6ae('0x41')]=qs[_0xf6ae('0x39')](_[_0xf6ae('0x42')](_0x52a43d[_0xf6ae('0x37')],_0x2061bc[_0xf6ae('0x39')]));_0x1a316a[_0xf6ae('0x41')]['WhatsappQueueId']=_0x2f8cbf['id'];if(_0x52a43d[_0xf6ae('0x37')][_0xf6ae('0x43')]){_0x1a316a[_0xf6ae('0x41')]=_['merge'](_0x1a316a[_0xf6ae('0x41')],{'$or':_[_0xf6ae('0x32')](_0x1a316a[_0xf6ae('0x3b')],function(_0x38c733){var _0x5982c7={};_0x5982c7[_0x38c733]={'$like':'%'+_0x52a43d[_0xf6ae('0x37')]['filter']+'%'};return _0x5982c7;})});}_0x1a316a=_[_0xf6ae('0x44')]({},_0x1a316a,_0x52a43d['options']);return db[_0xf6ae('0x5a')][_0xf6ae('0x4a')](_0x1a316a);}})['then'](function(_0x72f484){if(_0x72f484){return db[_0xf6ae('0x5b')][_0xf6ae('0x5c')]({'where':{'id':_['map'](_0x72f484,_0xf6ae('0x5d')),'role':'agent'},'attributes':['id',_0xf6ae('0x30'),_0xf6ae('0x5e'),_0xf6ae('0x5f'),'createdAt']});}})['then'](function(_0x32cb5e){if(_0x32cb5e){return{'count':_0x32cb5e['count'],'rows':_['map'](_0x32cb5e[_0xf6ae('0x60')],function(_0x21f171){return{'membername':_0x21f171[_0xf6ae('0x30')],'UserId':_0x21f171['id'],'queue_name':_0x44ab60[_0xf6ae('0x30')],'WhatsappQueueId':_0x44ab60['id'],'interface':util[_0xf6ae('0x61')](_0xf6ae('0x62'),'SIP',_0x21f171[_0xf6ae('0x30')]),'penalty':0x0,'paused':_0x21f171[_0xf6ae('0x5e')],'createdAt':_0x21f171[_0xf6ae('0x63')],'updatedAt':_0x21f171[_0xf6ae('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf6ae('0x2a')](respondWithFilteredResult(_0x35bfd0,_0x1a316a))['catch'](handleError(_0x35bfd0,null));};exports[_0xf6ae('0x64')]=function(_0x323e63,_0x3aad6c,_0xf594af){var _0x43bd49={};var _0x3ad913={};var _0x4accaf;var _0x556b9b;return db[_0xf6ae('0x47')][_0xf6ae('0x59')]({'where':{'id':_0x323e63['params']['id']}})[_0xf6ae('0x2a')](handleEntityNotFound(_0x3aad6c,null))['then'](function(_0x46248d){if(_0x46248d){_0x4accaf=_0x46248d;_0x3ad913['model']=_[_0xf6ae('0x38')](db[_0xf6ae('0x65')][_0xf6ae('0x33')]);_0x3ad913[_0xf6ae('0x37')]=_[_0xf6ae('0x38')](_0x323e63['query']);_0x3ad913[_0xf6ae('0x39')]=_['intersection'](_0x3ad913[_0xf6ae('0x36')],_0x3ad913[_0xf6ae('0x37')]);_0x43bd49[_0xf6ae('0x3b')]=_[_0xf6ae('0x3a')](_0x3ad913[_0xf6ae('0x36')],qs[_0xf6ae('0x3c')](_0x323e63['query'][_0xf6ae('0x3c')]));_0x43bd49['attributes']=_0x43bd49['attributes']['length']?_0x43bd49[_0xf6ae('0x3b')]:_0x3ad913[_0xf6ae('0x36')];_0x43bd49[_0xf6ae('0x3f')]=qs[_0xf6ae('0x40')](_0x323e63[_0xf6ae('0x37')][_0xf6ae('0x40')]);_0x43bd49[_0xf6ae('0x41')]=qs[_0xf6ae('0x39')](_[_0xf6ae('0x42')](_0x323e63[_0xf6ae('0x37')],_0x3ad913['filters']));if(_0x323e63[_0xf6ae('0x37')][_0xf6ae('0x43')]){_0x43bd49[_0xf6ae('0x41')]=_[_0xf6ae('0x44')](_0x43bd49[_0xf6ae('0x41')],{'$or':_[_0xf6ae('0x32')](_0x43bd49[_0xf6ae('0x3b')],function(_0x2a4f2e){var _0x86fa94={};_0x86fa94[_0x2a4f2e]={'$like':'%'+_0x323e63[_0xf6ae('0x37')][_0xf6ae('0x43')]+'%'};return _0x86fa94;})});}_0x43bd49=_[_0xf6ae('0x44')]({},_0x43bd49,_0x323e63[_0xf6ae('0x46')]);return _0x4accaf[_0xf6ae('0x64')](_0x43bd49);}})['then'](function(_0x12bc94){if(_0x12bc94){_0x556b9b=_0x12bc94[_0xf6ae('0x4e')];if(!_0x323e63[_0xf6ae('0x37')]['hasOwnProperty'](_0xf6ae('0x3e'))){_0x43bd49[_0xf6ae('0x22')]=qs[_0xf6ae('0x22')](_0x323e63['query'][_0xf6ae('0x22')]);_0x43bd49[_0xf6ae('0x21')]=qs['offset'](_0x323e63[_0xf6ae('0x37')]['offset']);}return _0x4accaf[_0xf6ae('0x64')](_0x43bd49);}})['then'](function(_0x28decb){if(_0x28decb){return _0x28decb?{'count':_0x556b9b,'rows':_0x28decb}:null;}})[_0xf6ae('0x2a')](respondWithResult(_0x3aad6c,null))[_0xf6ae('0x4b')](handleError(_0x3aad6c,null));};exports[_0xf6ae('0x66')]=function(_0xf6d756,_0x3698c0,_0x5da98a){var _0x14f8bb=_0xf6d756[_0xf6ae('0x50')][_0xf6ae('0x67')];return db[_0xf6ae('0x65')][_0xf6ae('0x4a')]({'where':{'id':_0x14f8bb},'attributes':['id'],'include':[{'model':db[_0xf6ae('0x5b')],'as':_0xf6ae('0x68'),'attributes':['id','name',_0xf6ae('0x69'),'voicePause',_0xf6ae('0x6a')],'raw':!![]}]})['then'](function(_0x1b3e7){if(_0x1b3e7){var _0x46b38c=_[_0xf6ae('0x6b')](_0x1b3e7,function(_0x5233ec){var _0x523924=_0x5233ec['get']({'plain':!![]});return _0x523924[_0xf6ae('0x68')];});return db[_0xf6ae('0x47')][_0xf6ae('0x4f')]({'where':{'id':_0xf6d756[_0xf6ae('0x4d')]['id']}})[_0xf6ae('0x2a')](function(_0x3b67b7){return db[_0xf6ae('0x6c')][_0xf6ae('0x6d')](function(_0x2973d5){return _0x3b67b7[_0xf6ae('0x66')](_0x14f8bb,{'transaction':_0x2973d5})[_0xf6ae('0x2a')](function(){return BPromise[_0xf6ae('0x6e')](_0x46b38c,function(_0x160dd6){return db[_0xf6ae('0x5a')][_0xf6ae('0x6f')]({'where':{'UserId':_0x160dd6['id'],'WhatsappQueueId':_0xf6d756[_0xf6ae('0x4d')]['id']},'transaction':_0x2973d5});});})[_0xf6ae('0x2a')](function(){_0x46b38c[_0xf6ae('0x70')](function(_0x25dcd1){socket[_0xf6ae('0x71')](_0xf6ae('0x72'),{'UserId':_0x25dcd1['id'],'WhatsappQueueId':_0x3b67b7['id']});});});});});}})[_0xf6ae('0x2a')](respondWithStatusCode(_0x3698c0,null))[_0xf6ae('0x4b')](handleError(_0x3698c0,null));};exports['removeTeams']=function(_0x269767,_0x5815f5,_0x4eb7f3){return db[_0xf6ae('0x65')]['findAll']({'where':{'id':_0x269767[_0xf6ae('0x37')][_0xf6ae('0x67')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf6ae('0x68'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5815f5,null))[_0xf6ae('0x2a')](function(_0x57fca7){var _0x501c1a=_[_0xf6ae('0x32')](_0x57fca7,'id');var _0x5cf1e7=[];var _0x19d1c5=[];var _0x544691=squel['select']();_0x544691[_0xf6ae('0x73')](_0xf6ae('0x74'))[_0xf6ae('0x75')](_0xf6ae('0x76'),'tq')[_0xf6ae('0x77')](_0xf6ae('0x78'),'ut',_0xf6ae('0x79'))[_0xf6ae('0x41')](_0xf6ae('0x7a'),_0x269767[_0xf6ae('0x4d')]['id']);for(var _0x2a603f=0x0;_0x2a603f<_0x57fca7[_0xf6ae('0x4e')];_0x2a603f+=0x1){let _0x1e74d2=_0x57fca7[_0x2a603f];for(var _0x11f8df=0x0;_0x11f8df<_0x1e74d2[_0xf6ae('0x68')][_0xf6ae('0x4e')];_0x11f8df+=0x1){let _0x128499=_0x1e74d2[_0xf6ae('0x68')][_0x11f8df];var _0x5dfb1f=_0x544691[_0xf6ae('0x7b')]();_0x5dfb1f[_0xf6ae('0x41')](_0xf6ae('0x7c'),_0x128499['id']);_0x19d1c5['push'](db[_0xf6ae('0x6c')][_0xf6ae('0x37')](_0x5dfb1f[_0xf6ae('0x7d')](),{'type':db[_0xf6ae('0x6c')][_0xf6ae('0x7e')][_0xf6ae('0x7f')]})[_0xf6ae('0x2a')](function(_0x5728d0){if(_0x5728d0[_0xf6ae('0x4e')]===0x1){return _0x128499['id'];}else{var _0x930867=_[_0xf6ae('0x80')](_[_0xf6ae('0x32')](_0x5728d0,_0xf6ae('0x81')),function(_0x5c073f){return _['includes'](_0x501c1a,_0x5c073f);});if(_0x930867){return _0x128499['id'];}}}));}}return BPromise['all'](_0x19d1c5)[_0xf6ae('0x2a')](function(_0x2067e7){_0x5cf1e7=_(_0x5cf1e7)[_0xf6ae('0x82')](_0x2067e7)[_0xf6ae('0x83')]()['value']();return db['WhatsappQueue']['find']({'where':{'id':_0x269767[_0xf6ae('0x4d')]['id']}})[_0xf6ae('0x2a')](function(_0x441723){return db['sequelize'][_0xf6ae('0x6d')](function(_0x3410c3){return _0x441723['removeTeams'](_0x269767[_0xf6ae('0x37')][_0xf6ae('0x67')],{'transaction':_0x3410c3})[_0xf6ae('0x2a')](function(){if(!_[_0xf6ae('0x84')](_0x5cf1e7)){return _0x441723[_0xf6ae('0x85')](_0x5cf1e7,{'transaction':_0x3410c3});}})['then'](function(){_0x5cf1e7['forEach'](function(_0x4f8660){socket[_0xf6ae('0x71')]('userWhatsappQueue:remove',{'UserId':_0x4f8660,'WhatsappQueueId':_0x441723['id']});});});});});});})[_0xf6ae('0x2a')](respondWithStatusCode(_0x5815f5,null))[_0xf6ae('0x4b')](handleError(_0x5815f5,null));};exports[_0xf6ae('0x86')]=function(_0x4b8be8,_0x34f491,_0x209ca9){return db['WhatsappQueue'][_0xf6ae('0x4f')]({'where':{'id':_0x4b8be8[_0xf6ae('0x4d')]['id']}})['then'](handleEntityNotFound(_0x34f491,null))[_0xf6ae('0x2a')](function(_0x37e9a9){if(_0x37e9a9){return _0x37e9a9[_0xf6ae('0x86')](_0x4b8be8[_0xf6ae('0x50')][_0xf6ae('0x67')],_[_0xf6ae('0x87')](_0x4b8be8[_0xf6ae('0x50')],[_0xf6ae('0x67'),'id'])||{})[_0xf6ae('0x88')](function(_0x3264a1){for(var _0xf80317=0x0;_0xf80317<_0x4b8be8[_0xf6ae('0x50')][_0xf6ae('0x67')][_0xf6ae('0x4e')];_0xf80317+=0x1){socket['emit'](_0xf6ae('0x72'),{'UserId':Number(_0x4b8be8[_0xf6ae('0x50')][_0xf6ae('0x67')][_0xf80317]),'WhatsappQueueId':Number(_0x4b8be8[_0xf6ae('0x4d')]['id'])});}return _0x3264a1;});}})[_0xf6ae('0x2a')](respondWithResult(_0x34f491,null))[_0xf6ae('0x4b')](handleError(_0x34f491,null));};exports[_0xf6ae('0x85')]=function(_0x2ea296,_0x204b39,_0x265f66){return db[_0xf6ae('0x47')][_0xf6ae('0x4f')]({'where':{'id':_0x2ea296[_0xf6ae('0x4d')]['id']}})[_0xf6ae('0x2a')](handleEntityNotFound(_0x204b39,null))['then'](function(_0x530d58){if(_0x530d58){return _0x530d58[_0xf6ae('0x85')](_0x2ea296[_0xf6ae('0x37')][_0xf6ae('0x67')])[_0xf6ae('0x2a')](function(){if(_['isArray'](_0x2ea296['query'][_0xf6ae('0x67')])){for(var _0x5e38c1=0x0;_0x5e38c1<_0x2ea296[_0xf6ae('0x37')][_0xf6ae('0x67')][_0xf6ae('0x4e')];_0x5e38c1+=0x1){socket[_0xf6ae('0x71')]('userWhatsappQueue:remove',{'UserId':Number(_0x2ea296[_0xf6ae('0x37')]['ids'][_0x5e38c1]),'WhatsappQueueId':Number(_0x2ea296[_0xf6ae('0x4d')]['id'])});}}else{socket['emit'](_0xf6ae('0x89'),{'UserId':Number(_0x2ea296[_0xf6ae('0x37')][_0xf6ae('0x67')]),'WhatsappQueueId':Number(_0x2ea296[_0xf6ae('0x4d')]['id'])});}});}})[_0xf6ae('0x2a')](respondWithStatusCode(_0x204b39,null))[_0xf6ae('0x4b')](handleError(_0x204b39,null));};exports['getAgents']=function(_0x40695b,_0xefb593,_0x1d7e61){var _0x6744b1={};var _0x10c61c={};var _0x160b51;var _0x48cab0;return db[_0xf6ae('0x47')]['findOne']({'where':{'id':_0x40695b['params']['id']}})[_0xf6ae('0x2a')](handleEntityNotFound(_0xefb593,null))[_0xf6ae('0x2a')](function(_0x27d7f8){if(_0x27d7f8){_0x160b51=_0x27d7f8;_0x10c61c['model']=_['keys'](db[_0xf6ae('0x5b')][_0xf6ae('0x33')]);_0x10c61c['query']=_[_0xf6ae('0x38')](_0x40695b[_0xf6ae('0x37')]);_0x10c61c[_0xf6ae('0x39')]=_[_0xf6ae('0x3a')](_0x10c61c['model'],_0x10c61c[_0xf6ae('0x37')]);_0x6744b1[_0xf6ae('0x3b')]=_[_0xf6ae('0x3a')](_0x10c61c[_0xf6ae('0x36')],qs[_0xf6ae('0x3c')](_0x40695b[_0xf6ae('0x37')][_0xf6ae('0x3c')]));_0x6744b1['attributes']=_0x6744b1[_0xf6ae('0x3b')]['length']?_0x6744b1['attributes']:_0x10c61c[_0xf6ae('0x36')];_0x6744b1[_0xf6ae('0x3f')]=qs[_0xf6ae('0x40')](_0x40695b[_0xf6ae('0x37')][_0xf6ae('0x40')]);_0x6744b1[_0xf6ae('0x41')]=qs[_0xf6ae('0x39')](_[_0xf6ae('0x42')](_0x40695b[_0xf6ae('0x37')],_0x10c61c['filters']));if(_0x40695b['query']['filter']){_0x6744b1[_0xf6ae('0x41')]=_[_0xf6ae('0x44')](_0x6744b1[_0xf6ae('0x41')],{'$or':_[_0xf6ae('0x32')](_0x6744b1[_0xf6ae('0x3b')],function(_0x16be02){var _0x5c55d3={};_0x5c55d3[_0x16be02]={'$like':'%'+_0x40695b[_0xf6ae('0x37')]['filter']+'%'};return _0x5c55d3;})});}_0x6744b1=_[_0xf6ae('0x44')]({},_0x6744b1,_0x40695b[_0xf6ae('0x46')]);return _0x160b51['getAgents'](_0x6744b1);}})[_0xf6ae('0x2a')](function(_0x80d57a){if(_0x80d57a){_0x48cab0=_0x80d57a[_0xf6ae('0x4e')];if(!_0x40695b[_0xf6ae('0x37')][_0xf6ae('0x3d')]('nolimit')){_0x6744b1[_0xf6ae('0x22')]=qs[_0xf6ae('0x22')](_0x40695b[_0xf6ae('0x37')]['limit']);_0x6744b1[_0xf6ae('0x21')]=qs['offset'](_0x40695b[_0xf6ae('0x37')]['offset']);}return _0x160b51[_0xf6ae('0x8a')](_0x6744b1);}})[_0xf6ae('0x2a')](function(_0x2fabb9){if(_0x2fabb9){return _0x2fabb9?{'count':_0x48cab0,'rows':_0x2fabb9}:null;}})[_0xf6ae('0x2a')](respondWithResult(_0xefb593,null))[_0xf6ae('0x4b')](handleError(_0xefb593,null));};
\ No newline at end of file
index 0d4693a..ef9a4f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11a0=['events','WhatsappQueue','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0x505fd3,_0x5606cc){var _0x110dc6=function(_0x5ea219){while(--_0x5ea219){_0x505fd3['push'](_0x505fd3['shift']());}};_0x110dc6(++_0x5606cc);}(_0x11a0,0x171));var _0x011a=function(_0x5aa15c,_0x2545ea){_0x5aa15c=_0x5aa15c-0x0;var _0x1366b3=_0x11a0[_0x5aa15c];return _0x1366b3;};'use strict';var EventEmitter=require(_0x011a('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0x011a('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x011a('0x2')](0x0);var events={'afterCreate':_0x011a('0x3'),'afterUpdate':_0x011a('0x4'),'afterDestroy':_0x011a('0x5')};function emitEvent(_0x5bd593){return function(_0x2648eb,_0x582824,_0x31c416){WhatsappQueueEvents[_0x011a('0x6')](_0x5bd593+':'+_0x2648eb['id'],_0x2648eb);WhatsappQueueEvents['emit'](_0x5bd593,_0x2648eb);_0x31c416(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0x011a('0x7')](e,emitEvent(event));}}module[_0x011a('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x5d8f=['remove','emit','hasOwnProperty','hook','../../mysqldb','WhatsappQueue','setMaxListeners','save','update'];(function(_0x3bc163,_0x52210e){var _0x36b502=function(_0x4960a2){while(--_0x4960a2){_0x3bc163['push'](_0x3bc163['shift']());}};_0x36b502(++_0x52210e);}(_0x5d8f,0xb8));var _0xf5d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d8f[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xf5d8('0x0'))['db'][_0xf5d8('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xf5d8('0x2')](0x0);var events={'afterCreate':_0xf5d8('0x3'),'afterUpdate':_0xf5d8('0x4'),'afterDestroy':_0xf5d8('0x5')};function emitEvent(_0x3e16a4){return function(_0x204af1,_0x3e2e81,_0x53b884){WhatsappQueueEvents[_0xf5d8('0x6')](_0x3e16a4+':'+_0x204af1['id'],_0x204af1);WhatsappQueueEvents[_0xf5d8('0x6')](_0x3e16a4,_0x204af1);_0x53b884(null);};}for(var e in events){if(events[_0xf5d8('0x7')](e)){var event=events[e];WhatsappQueue[_0xf5d8('0x8')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 1013e3f..96d0187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20f=['moment','bluebird','request-promise','path','rimraf','exports','define','WhatsappQueue','whatsapp_queues','util','../../config/logger'];(function(_0x4decc9,_0x3f98f4){var _0x5f0a1b=function(_0x4d1d3d){while(--_0x4d1d3d){_0x4decc9['push'](_0x4decc9['shift']());}};_0x5f0a1b(++_0x3f98f4);}(_0xe20f,0x6c));var _0xfe20=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe20f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xfe20('0x0'));var logger=require(_0xfe20('0x1'))('api');var moment=require(_0xfe20('0x2'));var BPromise=require(_0xfe20('0x3'));var rp=require(_0xfe20('0x4'));var fs=require('fs');var path=require(_0xfe20('0x5'));var rimraf=require(_0xfe20('0x6'));var config=require('../../config/environment');var attributes=require('./whatsappQueue.attributes');module[_0xfe20('0x7')]=function(_0x15821f,_0x512d53){return _0x15821f[_0xfe20('0x8')](_0xfe20('0x9'),attributes,{'tableName':_0xfe20('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb6b9=['bluebird','request-promise','path','rimraf','../../config/environment','exports','whatsapp_queues','lodash','util','../../config/logger','api','moment'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0xb6b9,0x1cf));var _0x9b6b=function(_0x195ac1,_0x38d92b){_0x195ac1=_0x195ac1-0x0;var _0x26800c=_0xb6b9[_0x195ac1];return _0x26800c;};'use strict';var _=require(_0x9b6b('0x0'));var util=require(_0x9b6b('0x1'));var logger=require(_0x9b6b('0x2'))(_0x9b6b('0x3'));var moment=require(_0x9b6b('0x4'));var BPromise=require(_0x9b6b('0x5'));var rp=require(_0x9b6b('0x6'));var fs=require('fs');var path=require(_0x9b6b('0x7'));var rimraf=require(_0x9b6b('0x8'));var config=require(_0x9b6b('0x9'));var attributes=require('./whatsappQueue.attributes');module[_0x9b6b('0xa')]=function(_0x507bfe,_0x364b7c){return _0x507bfe['define']('WhatsappQueue',attributes,{'tableName':_0x9b6b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 531e748..5674c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cb0=['then','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','GetWhatsappQueue','WhatsappQueue','options','raw','limit','include','map','model','attributes','stringify','catch','ShowWhatsappQueue','find','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register'];(function(_0x380da9,_0x409cec){var _0x4837ee=function(_0x474f77){while(--_0x474f77){_0x380da9['push'](_0x380da9['shift']());}};_0x4837ee(++_0x409cec);}(_0x7cb0,0x156));var _0x07cb=function(_0xad15c7,_0x210cb4){_0xad15c7=_0xad15c7-0x0;var _0x520045=_0x7cb0[_0xad15c7];return _0x520045;};'use strict';var _=require('lodash');var util=require(_0x07cb('0x0'));var moment=require(_0x07cb('0x1'));var BPromise=require(_0x07cb('0x2'));var rs=require(_0x07cb('0x3'));var fs=require('fs');var Redis=require(_0x07cb('0x4'));var db=require(_0x07cb('0x5'))['db'];var utils=require(_0x07cb('0x6'));var logger=require('../../config/logger')(_0x07cb('0x7'));var config=require(_0x07cb('0x8'));var jayson=require(_0x07cb('0x9'));var client=jayson[_0x07cb('0xa')][_0x07cb('0xb')]({'port':0x232a});config['redis']=_[_0x07cb('0xc')](config[_0x07cb('0xd')],{'host':_0x07cb('0xe'),'port':0x18eb});var socket=require(_0x07cb('0xf'))(new Redis(config[_0x07cb('0xd')]));require(_0x07cb('0x10'))[_0x07cb('0x11')](socket);function respondWithRpcPromise(_0x58ffc7,_0x108a62,_0x46b72a){return new BPromise(function(_0x315661,_0x184245){return client['request'](_0x58ffc7,_0x46b72a)[_0x07cb('0x12')](function(_0x122284){logger[_0x07cb('0x13')](_0x07cb('0x14'),_0x108a62,'request\x20sent');logger[_0x07cb('0x15')](_0x07cb('0x16'),_0x108a62,_0x07cb('0x17'),JSON['stringify'](_0x122284));if(_0x122284[_0x07cb('0x18')]){if(_0x122284[_0x07cb('0x18')]['code']===0x1f4){logger[_0x07cb('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x108a62,_0x122284[_0x07cb('0x18')][_0x07cb('0x19')]);return _0x184245(_0x122284[_0x07cb('0x18')][_0x07cb('0x19')]);}logger[_0x07cb('0x18')](_0x07cb('0x14'),_0x108a62,_0x122284[_0x07cb('0x18')][_0x07cb('0x19')]);return _0x315661(_0x122284[_0x07cb('0x18')][_0x07cb('0x19')]);}else{logger['info'](_0x07cb('0x14'),_0x108a62,'request\x20sent');_0x315661(_0x122284['result'][_0x07cb('0x19')]);}})['catch'](function(_0x139b51){logger[_0x07cb('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x108a62,_0x139b51);_0x184245(_0x139b51);});});}exports[_0x07cb('0x1a')]=function(_0x426bcf){var _0x6f8596=this;return new Promise(function(_0x3b49d0,_0x47f89c){return db[_0x07cb('0x1b')]['findAll']({'raw':_0x426bcf[_0x07cb('0x1c')]?_0x426bcf[_0x07cb('0x1c')][_0x07cb('0x1d')]===undefined?!![]:![]:!![],'where':_0x426bcf[_0x07cb('0x1c')]?_0x426bcf[_0x07cb('0x1c')]['where']||null:null,'attributes':_0x426bcf[_0x07cb('0x1c')]?_0x426bcf[_0x07cb('0x1c')]['attributes']||null:null,'limit':_0x426bcf['options']?_0x426bcf['options'][_0x07cb('0x1e')]||null:null,'include':_0x426bcf['options']?_0x426bcf[_0x07cb('0x1c')][_0x07cb('0x1f')]?_[_0x07cb('0x20')](_0x426bcf[_0x07cb('0x1c')][_0x07cb('0x1f')],function(_0x26e5af){return{'model':db[_0x26e5af[_0x07cb('0x21')]],'as':_0x26e5af['as'],'attributes':_0x26e5af[_0x07cb('0x22')],'include':_0x26e5af[_0x07cb('0x1f')]?_[_0x07cb('0x20')](_0x26e5af['include'],function(_0x34a254){return{'model':db[_0x34a254[_0x07cb('0x21')]],'as':_0x34a254['as'],'attributes':_0x34a254[_0x07cb('0x22')],'include':_0x34a254[_0x07cb('0x1f')]?_['map'](_0x34a254[_0x07cb('0x1f')],function(_0x24933e){return{'model':db[_0x24933e[_0x07cb('0x21')]],'as':_0x24933e['as'],'attributes':_0x24933e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a944b){logger[_0x07cb('0x13')]('GetWhatsappQueue',_0x426bcf);logger[_0x07cb('0x15')](_0x07cb('0x1a'),_0x426bcf,JSON[_0x07cb('0x23')](_0x4a944b));_0x3b49d0(_0x4a944b);})[_0x07cb('0x24')](function(_0x399c19){logger[_0x07cb('0x18')]('GetWhatsappQueue',_0x399c19[_0x07cb('0x19')],_0x426bcf);_0x47f89c(_0x6f8596[_0x07cb('0x18')](0x1f4,_0x399c19[_0x07cb('0x19')]));});});};exports[_0x07cb('0x25')]=function(_0x478689){var _0x1de278=this;return new Promise(function(_0x2e0ee7,_0x237aff){return db[_0x07cb('0x1b')][_0x07cb('0x26')]({'raw':_0x478689['options']?_0x478689['options'][_0x07cb('0x1d')]===undefined?!![]:![]:!![],'where':_0x478689['options']?_0x478689['options'][_0x07cb('0x27')]||null:null,'attributes':_0x478689[_0x07cb('0x1c')]?_0x478689[_0x07cb('0x1c')][_0x07cb('0x22')]||null:null,'include':_0x478689['options']?_0x478689['options'][_0x07cb('0x1f')]?_[_0x07cb('0x20')](_0x478689['options'][_0x07cb('0x1f')],function(_0x59fe17){return{'model':db[_0x59fe17[_0x07cb('0x21')]],'as':_0x59fe17['as'],'attributes':_0x59fe17[_0x07cb('0x22')],'include':_0x59fe17['include']?_[_0x07cb('0x20')](_0x59fe17[_0x07cb('0x1f')],function(_0x48000c){return{'model':db[_0x48000c[_0x07cb('0x21')]],'as':_0x48000c['as'],'attributes':_0x48000c[_0x07cb('0x22')],'include':_0x48000c[_0x07cb('0x1f')]?_[_0x07cb('0x20')](_0x48000c[_0x07cb('0x1f')],function(_0x3b136d){return{'model':db[_0x3b136d[_0x07cb('0x21')]],'as':_0x3b136d['as'],'attributes':_0x3b136d[_0x07cb('0x22')]};}):[]};}):[]};}):[]:[]})[_0x07cb('0x12')](function(_0x147502){logger[_0x07cb('0x13')](_0x07cb('0x25'),_0x478689);logger[_0x07cb('0x15')](_0x07cb('0x25'),_0x478689,JSON[_0x07cb('0x23')](_0x147502));_0x2e0ee7(_0x147502);})[_0x07cb('0x24')](function(_0x13e97f){logger['error'](_0x07cb('0x25'),_0x13e97f['message'],_0x478689);_0x237aff(_0x1de278['error'](0x1f4,_0x13e97f[_0x07cb('0x19')]));});});};
\ No newline at end of file
+var _0xaff7=['code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowWhatsappQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x32f9cd,_0x4ffb36){var _0xe80ced=function(_0x1196c4){while(--_0x1196c4){_0x32f9cd['push'](_0x32f9cd['shift']());}};_0xe80ced(++_0x4ffb36);}(_0xaff7,0xde));var _0x7aff=function(_0x235f49,_0x2992b4){_0x235f49=_0x235f49-0x0;var _0x551139=_0xaff7[_0x235f49];return _0x551139;};'use strict';var _=require(_0x7aff('0x0'));var util=require(_0x7aff('0x1'));var moment=require(_0x7aff('0x2'));var BPromise=require(_0x7aff('0x3'));var rs=require(_0x7aff('0x4'));var fs=require('fs');var Redis=require(_0x7aff('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7aff('0x6'));var config=require(_0x7aff('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7aff('0x8')]['http']({'port':0x232a});config[_0x7aff('0x9')]=_[_0x7aff('0xa')](config[_0x7aff('0x9')],{'host':_0x7aff('0xb'),'port':0x18eb});var socket=require(_0x7aff('0xc'))(new Redis(config['redis']));require(_0x7aff('0xd'))[_0x7aff('0xe')](socket);function respondWithRpcPromise(_0x4d81a9,_0xa8fa26,_0x59d550){return new BPromise(function(_0x3b8a84,_0x5de8a7){return client[_0x7aff('0xf')](_0x4d81a9,_0x59d550)[_0x7aff('0x10')](function(_0x3b6f64){logger[_0x7aff('0x11')](_0x7aff('0x12'),_0xa8fa26,_0x7aff('0x13'));logger[_0x7aff('0x14')](_0x7aff('0x15'),_0xa8fa26,_0x7aff('0x13'),JSON[_0x7aff('0x16')](_0x3b6f64));if(_0x3b6f64[_0x7aff('0x17')]){if(_0x3b6f64[_0x7aff('0x17')][_0x7aff('0x18')]===0x1f4){logger[_0x7aff('0x17')](_0x7aff('0x12'),_0xa8fa26,_0x3b6f64[_0x7aff('0x17')]['message']);return _0x5de8a7(_0x3b6f64[_0x7aff('0x17')]['message']);}logger[_0x7aff('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0xa8fa26,_0x3b6f64[_0x7aff('0x17')]['message']);return _0x3b8a84(_0x3b6f64[_0x7aff('0x17')][_0x7aff('0x19')]);}else{logger[_0x7aff('0x11')]('WhatsappQueue,\x20%s,\x20%s',_0xa8fa26,_0x7aff('0x13'));_0x3b8a84(_0x3b6f64[_0x7aff('0x1a')][_0x7aff('0x19')]);}})[_0x7aff('0x1b')](function(_0x4a88ec){logger[_0x7aff('0x17')](_0x7aff('0x12'),_0xa8fa26,_0x4a88ec);_0x5de8a7(_0x4a88ec);});});}exports[_0x7aff('0x1c')]=function(_0x2544b3){var _0x2ea71b=this;return new Promise(function(_0x3d9e92,_0x13405d){return db[_0x7aff('0x1d')][_0x7aff('0x1e')]({'raw':_0x2544b3[_0x7aff('0x1f')]?_0x2544b3[_0x7aff('0x1f')][_0x7aff('0x20')]===undefined?!![]:![]:!![],'where':_0x2544b3[_0x7aff('0x1f')]?_0x2544b3['options'][_0x7aff('0x21')]||null:null,'attributes':_0x2544b3[_0x7aff('0x1f')]?_0x2544b3[_0x7aff('0x1f')][_0x7aff('0x22')]||null:null,'limit':_0x2544b3['options']?_0x2544b3['options'][_0x7aff('0x23')]||null:null,'include':_0x2544b3[_0x7aff('0x1f')]?_0x2544b3['options']['include']?_[_0x7aff('0x24')](_0x2544b3[_0x7aff('0x1f')][_0x7aff('0x25')],function(_0x2ee323){return{'model':db[_0x2ee323[_0x7aff('0x26')]],'as':_0x2ee323['as'],'attributes':_0x2ee323[_0x7aff('0x22')],'include':_0x2ee323[_0x7aff('0x25')]?_[_0x7aff('0x24')](_0x2ee323['include'],function(_0x4f6466){return{'model':db[_0x4f6466['model']],'as':_0x4f6466['as'],'attributes':_0x4f6466[_0x7aff('0x22')],'include':_0x4f6466['include']?_[_0x7aff('0x24')](_0x4f6466[_0x7aff('0x25')],function(_0x2ee0b9){return{'model':db[_0x2ee0b9['model']],'as':_0x2ee0b9['as'],'attributes':_0x2ee0b9[_0x7aff('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x321836){logger['info'](_0x7aff('0x1c'),_0x2544b3);logger['debug'](_0x7aff('0x1c'),_0x2544b3,JSON[_0x7aff('0x16')](_0x321836));_0x3d9e92(_0x321836);})[_0x7aff('0x1b')](function(_0x588dec){logger[_0x7aff('0x17')](_0x7aff('0x1c'),_0x588dec['message'],_0x2544b3);_0x13405d(_0x2ea71b[_0x7aff('0x17')](0x1f4,_0x588dec[_0x7aff('0x19')]));});});};exports[_0x7aff('0x27')]=function(_0x1eb3bc){var _0xacbb2=this;return new Promise(function(_0x5c7a1f,_0x37c691){return db[_0x7aff('0x1d')][_0x7aff('0x28')]({'raw':_0x1eb3bc[_0x7aff('0x1f')]?_0x1eb3bc[_0x7aff('0x1f')][_0x7aff('0x20')]===undefined?!![]:![]:!![],'where':_0x1eb3bc['options']?_0x1eb3bc['options'][_0x7aff('0x21')]||null:null,'attributes':_0x1eb3bc['options']?_0x1eb3bc[_0x7aff('0x1f')][_0x7aff('0x22')]||null:null,'include':_0x1eb3bc[_0x7aff('0x1f')]?_0x1eb3bc[_0x7aff('0x1f')][_0x7aff('0x25')]?_[_0x7aff('0x24')](_0x1eb3bc[_0x7aff('0x1f')]['include'],function(_0x2f9b96){return{'model':db[_0x2f9b96['model']],'as':_0x2f9b96['as'],'attributes':_0x2f9b96[_0x7aff('0x22')],'include':_0x2f9b96[_0x7aff('0x25')]?_['map'](_0x2f9b96[_0x7aff('0x25')],function(_0x28d293){return{'model':db[_0x28d293[_0x7aff('0x26')]],'as':_0x28d293['as'],'attributes':_0x28d293[_0x7aff('0x22')],'include':_0x28d293[_0x7aff('0x25')]?_[_0x7aff('0x24')](_0x28d293[_0x7aff('0x25')],function(_0x3cddb3){return{'model':db[_0x3cddb3[_0x7aff('0x26')]],'as':_0x3cddb3['as'],'attributes':_0x3cddb3[_0x7aff('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7aff('0x10')](function(_0x40cd55){logger['info'](_0x7aff('0x27'),_0x1eb3bc);logger[_0x7aff('0x14')]('ShowWhatsappQueue',_0x1eb3bc,JSON['stringify'](_0x40cd55));_0x5c7a1f(_0x40cd55);})[_0x7aff('0x1b')](function(_0x4868f1){logger['error'](_0x7aff('0x27'),_0x4868f1[_0x7aff('0x19')],_0x1eb3bc);_0x37c691(_0xacbb2[_0x7aff('0x17')](0x1f4,_0x4868f1[_0x7aff('0x19')]));});});};
\ No newline at end of file
index db0edb6..b366713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x575c=['whatsappQueue:','./whatsappQueue.events','save','update','removeListener','register'];(function(_0x4e521c,_0xb28d3d){var _0x471c64=function(_0x11fcf3){while(--_0x11fcf3){_0x4e521c['push'](_0x4e521c['shift']());}};_0x471c64(++_0xb28d3d);}(_0x575c,0x115));var _0xc575=function(_0x342398,_0x1dc9a9){_0x342398=_0x342398-0x0;var _0x9b0a3=_0x575c[_0x342398];return _0x9b0a3;};'use strict';var WhatsappQueueEvents=require(_0xc575('0x0'));var events=[_0xc575('0x1'),'remove',_0xc575('0x2')];function createListener(_0x7cb01b,_0x1ea548){return function(_0x48667f){_0x1ea548['emit'](_0x7cb01b,_0x48667f);};}function removeListener(_0x3cd865,_0x1ef6ab){return function(){WhatsappQueueEvents[_0xc575('0x3')](_0x3cd865,_0x1ef6ab);};}exports[_0xc575('0x4')]=function(_0x3335dd){for(var _0x446cc7=0x0,_0x2d19b6=events['length'];_0x446cc7<_0x2d19b6;_0x446cc7++){var _0x47e0ad=events[_0x446cc7];var _0x48ee03=createListener(_0xc575('0x5')+_0x47e0ad,_0x3335dd);WhatsappQueueEvents['on'](_0x47e0ad,_0x48ee03);}};
\ No newline at end of file
+var _0x894e=['remove','emit','removeListener','save'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x894e,0x9b));var _0xe894=function(_0xfb41d,_0x32740c){_0xfb41d=_0xfb41d-0x0;var _0x246945=_0x894e[_0xfb41d];return _0x246945;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xe894('0x0'),_0xe894('0x1'),'update'];function createListener(_0x59a724,_0x4a004b){return function(_0x43e4a6){_0x4a004b[_0xe894('0x2')](_0x59a724,_0x43e4a6);};}function removeListener(_0x2799b1,_0x439db1){return function(){WhatsappQueueEvents[_0xe894('0x3')](_0x2799b1,_0x439db1);};}exports['register']=function(_0x1ed0e1){for(var _0x529a4a=0x0,_0x228a12=events['length'];_0x529a4a<_0x228a12;_0x529a4a++){var _0x2fc725=events[_0x529a4a];var _0x5dce80=createListener('whatsappQueue:'+_0x2fc725,_0x1ed0e1);WhatsappQueueEvents['on'](_0x2fc725,_0x5dce80);}};
\ No newline at end of file
index 2e0d24b..afe2c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f7=['post','create','put','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show'];(function(_0x457d21,_0x4956f2){var _0x4cab70=function(_0x7a52e0){while(--_0x7a52e0){_0x457d21['push'](_0x457d21['shift']());}};_0x4cab70(++_0x4956f2);}(_0x71f7,0x83));var _0x771f=function(_0x1bbeca,_0x260f6a){_0x1bbeca=_0x1bbeca-0x0;var _0x5b584e=_0x71f7[_0x1bbeca];return _0x5b584e;};'use strict';var multer=require(_0x771f('0x0'));var util=require('util');var path=require(_0x771f('0x1'));var timeout=require(_0x771f('0x2'));var express=require(_0x771f('0x3'));var router=express[_0x771f('0x4')]();var fs_extra=require(_0x771f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x771f('0x6'));var config=require(_0x771f('0x7'));var controller=require(_0x771f('0x8'));router['get']('/',auth[_0x771f('0x9')](),controller[_0x771f('0xa')]);router[_0x771f('0xb')](_0x771f('0xc'),auth['isAuthenticated'](),controller[_0x771f('0xd')]);router[_0x771f('0xb')](_0x771f('0xe'),auth['isAuthenticated'](),controller[_0x771f('0xf')]);router[_0x771f('0x10')]('/',auth[_0x771f('0x9')](),controller[_0x771f('0x11')]);router[_0x771f('0x12')](_0x771f('0xe'),auth[_0x771f('0x9')](),controller[_0x771f('0x13')]);router[_0x771f('0x14')]('/:id',auth[_0x771f('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7a74=['post','create','/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x274324,_0x52c34e){var _0x1e78a5=function(_0xe1639a){while(--_0xe1639a){_0x274324['push'](_0x274324['shift']());}};_0x1e78a5(++_0x52c34e);}(_0x7a74,0x7f));var _0x47a7=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x7a74[_0x2aec52];return _0x3b8835;};'use strict';var multer=require(_0x47a7('0x0'));var util=require('util');var path=require(_0x47a7('0x1'));var timeout=require(_0x47a7('0x2'));var express=require('express');var router=express[_0x47a7('0x3')]();var fs_extra=require(_0x47a7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x47a7('0x5'));var config=require(_0x47a7('0x6'));var controller=require(_0x47a7('0x7'));router[_0x47a7('0x8')]('/',auth[_0x47a7('0x9')](),controller[_0x47a7('0xa')]);router['get'](_0x47a7('0xb'),auth['isAuthenticated'](),controller[_0x47a7('0xc')]);router[_0x47a7('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a7('0xd')]('/',auth[_0x47a7('0x9')](),controller[_0x47a7('0xe')]);router['put'](_0x47a7('0xf'),auth[_0x47a7('0x9')](),controller[_0x47a7('0x10')]);router[_0x47a7('0x11')](_0x47a7('0xf'),auth[_0x47a7('0x9')](),controller[_0x47a7('0x12')]);module[_0x47a7('0x13')]=router;
\ No newline at end of file
index 22077c3..46dcb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x1d1c2a,_0x1ab879){var _0x96a919=function(_0x2a62d7){while(--_0x2a62d7){_0x1d1c2a['push'](_0x1d1c2a['shift']());}};_0x96a919(++_0x1ab879);}(_0x7a54,0x106));var _0x47a5=function(_0x4c961a,_0x163a54){_0x4c961a=_0x4c961a-0x0;var _0x42f778=_0x7a54[_0x4c961a];return _0x42f778;};'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 _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x494389,_0x47d7ab){var _0x3412e6=function(_0x5174c0){while(--_0x5174c0){_0x494389['push'](_0x494389['shift']());}};_0x3412e6(++_0x47d7ab);}(_0x7a54,0x106));var _0x47a5=function(_0x5a00a0,_0x339adb){_0x5a00a0=_0x5a00a0-0x0;var _0xdf6188=_0x7a54[_0x5a00a0];return _0xdf6188;};'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
index 4e5d905..aeefa32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['limit','count','Content-Range','apply','reject','save','then','end','error','stack','name','send','index','WhatsappQueueReport','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4e81,0x1bc));var _0x14e8=function(_0x1b745b,_0x3e2d40){_0x1b745b=_0x1b745b-0x0;var _0x120a9d=_0x4e81[_0x1b745b];return _0x120a9d;};'use strict';var emlformat=require(_0x14e8('0x0'));var rimraf=require(_0x14e8('0x1'));var zipdir=require(_0x14e8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x14e8('0x3'));var Mustache=require(_0x14e8('0x4'));var util=require(_0x14e8('0x5'));var path=require(_0x14e8('0x6'));var sox=require(_0x14e8('0x7'));var csv=require(_0x14e8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x14e8('0x9'));var squel=require(_0x14e8('0xa'));var crypto=require(_0x14e8('0xb'));var jsforce=require(_0x14e8('0xc'));var deskjs=require(_0x14e8('0xd'));var toCsv=require(_0x14e8('0x8'));var querystring=require(_0x14e8('0xe'));var Papa=require(_0x14e8('0xf'));var Redis=require(_0x14e8('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x14e8('0x11'));var as=require(_0x14e8('0x12'));var hardwareService=require(_0x14e8('0x13'));var logger=require(_0x14e8('0x14'))(_0x14e8('0x15'));var utils=require(_0x14e8('0x16'));var config=require(_0x14e8('0x17'));var licenseUtil=require(_0x14e8('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x37eccb,_0x59c6c9){_0x59c6c9=_0x59c6c9||0xcc;return function(_0x2607ef){if(_0x2607ef){return _0x37eccb[_0x14e8('0x19')](_0x59c6c9);}return _0x37eccb[_0x14e8('0x1a')](_0x59c6c9)['end']();};}function respondWithResult(_0x22fa86,_0x4e1064){_0x4e1064=_0x4e1064||0xc8;return function(_0x458e4a){if(_0x458e4a){return _0x22fa86['status'](_0x4e1064)[_0x14e8('0x1b')](_0x458e4a);}};}function respondWithFilteredResult(_0x3761a1,_0xc6101f){return function(_0x135996){if(_0x135996){var _0x52e64f=typeof _0xc6101f[_0x14e8('0x1c')]===_0x14e8('0x1d')&&typeof _0xc6101f[_0x14e8('0x1e')]===_0x14e8('0x1d');var _0xd4d6b2=_0x135996[_0x14e8('0x1f')];var _0x10dc8b=_0x52e64f?0x0:_0xc6101f[_0x14e8('0x1c')];var _0x5a38c1=_0x52e64f?_0x135996[_0x14e8('0x1f')]:_0xc6101f[_0x14e8('0x1c')]+_0xc6101f[_0x14e8('0x1e')];var _0x7b10f2;if(_0x5a38c1>=_0xd4d6b2){_0x5a38c1=_0xd4d6b2;_0x7b10f2=0xc8;}else{_0x7b10f2=0xce;}_0x3761a1[_0x14e8('0x1a')](_0x7b10f2);return _0x3761a1['set'](_0x14e8('0x20'),_0x10dc8b+'-'+_0x5a38c1+'/'+_0xd4d6b2)[_0x14e8('0x1b')](_0x135996);}return null;};}function patchUpdates(_0x2abfec){return function(_0x48e30a){try{jsonpatch[_0x14e8('0x21')](_0x48e30a,_0x2abfec,!![]);}catch(_0x47f060){return BPromise[_0x14e8('0x22')](_0x47f060);}return _0x48e30a[_0x14e8('0x23')]();};}function saveUpdates(_0x3e8d5c,_0x117b00){return function(_0xcf673){if(_0xcf673){return _0xcf673['update'](_0x3e8d5c)[_0x14e8('0x24')](function(_0x5b11f9){return _0x5b11f9;});}return null;};}function removeEntity(_0x31bdd3,_0x185a0e){return function(_0x4ffc8b){if(_0x4ffc8b){return _0x4ffc8b['destroy']()['then'](function(){_0x31bdd3[_0x14e8('0x1a')](0xcc)[_0x14e8('0x25')]();});}};}function handleEntityNotFound(_0x3eae0b,_0x20bfe8){return function(_0x333d44){if(!_0x333d44){_0x3eae0b['sendStatus'](0x194);}return _0x333d44;};}function handleError(_0x23a9dc,_0x3fd96d){_0x3fd96d=_0x3fd96d||0x1f4;return function(_0x3c09cb){logger[_0x14e8('0x26')](_0x3c09cb[_0x14e8('0x27')]);if(_0x3c09cb[_0x14e8('0x28')]){delete _0x3c09cb[_0x14e8('0x28')];}_0x23a9dc['status'](_0x3fd96d)[_0x14e8('0x29')](_0x3c09cb);};}exports[_0x14e8('0x2a')]=function(_0x393ab0,_0x5f5abb){var _0x48eed0={},_0x5cacd7={},_0x8fe0e2={'count':0x0,'rows':[]};var _0x2a408d=_['map'](db[_0x14e8('0x2b')][_0x14e8('0x2c')],function(_0x176e8f){return{'name':_0x176e8f[_0x14e8('0x2d')],'type':_0x176e8f['type'][_0x14e8('0x2e')]};});_0x5cacd7[_0x14e8('0x2f')]=_[_0x14e8('0x30')](_0x2a408d,_0x14e8('0x28'));_0x5cacd7[_0x14e8('0x31')]=_['keys'](_0x393ab0[_0x14e8('0x31')]);_0x5cacd7[_0x14e8('0x32')]=_[_0x14e8('0x33')](_0x5cacd7[_0x14e8('0x2f')],_0x5cacd7['query']);_0x48eed0[_0x14e8('0x34')]=_['intersection'](_0x5cacd7[_0x14e8('0x2f')],qs[_0x14e8('0x35')](_0x393ab0[_0x14e8('0x31')][_0x14e8('0x35')]));_0x48eed0[_0x14e8('0x34')]=_0x48eed0[_0x14e8('0x34')][_0x14e8('0x36')]?_0x48eed0[_0x14e8('0x34')]:_0x5cacd7[_0x14e8('0x2f')];if(!_0x393ab0[_0x14e8('0x31')][_0x14e8('0x37')](_0x14e8('0x38'))){_0x48eed0['limit']=qs['limit'](_0x393ab0['query'][_0x14e8('0x1e')]);_0x48eed0['offset']=qs[_0x14e8('0x1c')](_0x393ab0['query'][_0x14e8('0x1c')]);}_0x48eed0[_0x14e8('0x39')]=qs[_0x14e8('0x3a')](_0x393ab0[_0x14e8('0x31')]['sort']);_0x48eed0[_0x14e8('0x3b')]=qs['filters'](_[_0x14e8('0x3c')](_0x393ab0[_0x14e8('0x31')],_0x5cacd7[_0x14e8('0x32')]),_0x2a408d);if(_0x393ab0[_0x14e8('0x31')][_0x14e8('0x3d')]){_0x48eed0[_0x14e8('0x3b')]=_['merge'](_0x48eed0[_0x14e8('0x3b')],{'$or':_['map'](_0x2a408d,function(_0x30baf1){if(_0x30baf1[_0x14e8('0x3e')]!==_0x14e8('0x3f')){var _0x4cafe6={};_0x4cafe6[_0x30baf1[_0x14e8('0x28')]]={'$like':'%'+_0x393ab0[_0x14e8('0x31')]['filter']+'%'};return _0x4cafe6;}})});}_0x48eed0=_[_0x14e8('0x40')]({},_0x48eed0,_0x393ab0[_0x14e8('0x41')]);var _0x1f429a={'where':_0x48eed0[_0x14e8('0x3b')]};return db[_0x14e8('0x2b')][_0x14e8('0x1f')](_0x1f429a)[_0x14e8('0x24')](function(_0x38ec58){_0x8fe0e2[_0x14e8('0x1f')]=_0x38ec58;if(_0x393ab0[_0x14e8('0x31')][_0x14e8('0x42')]){_0x48eed0[_0x14e8('0x43')]=[{'all':!![]}];}return db[_0x14e8('0x2b')][_0x14e8('0x44')](_0x48eed0);})[_0x14e8('0x24')](function(_0x596ac7){_0x8fe0e2[_0x14e8('0x45')]=_0x596ac7;return _0x8fe0e2;})['then'](respondWithFilteredResult(_0x5f5abb,_0x48eed0))['catch'](handleError(_0x5f5abb,null));};exports['show']=function(_0x3d2d95,_0x5ed821){var _0x46a3c4={'raw':!![],'where':{'id':_0x3d2d95[_0x14e8('0x46')]['id']}},_0x45bff0={};_0x45bff0[_0x14e8('0x2f')]=_[_0x14e8('0x47')](db[_0x14e8('0x2b')][_0x14e8('0x2c')]);_0x45bff0[_0x14e8('0x31')]=_[_0x14e8('0x47')](_0x3d2d95[_0x14e8('0x31')]);_0x45bff0[_0x14e8('0x32')]=_['intersection'](_0x45bff0[_0x14e8('0x2f')],_0x45bff0[_0x14e8('0x31')]);_0x46a3c4[_0x14e8('0x34')]=_[_0x14e8('0x33')](_0x45bff0['model'],qs[_0x14e8('0x35')](_0x3d2d95[_0x14e8('0x31')]['fields']));_0x46a3c4['attributes']=_0x46a3c4[_0x14e8('0x34')]['length']?_0x46a3c4['attributes']:_0x45bff0[_0x14e8('0x2f')];if(_0x3d2d95[_0x14e8('0x31')]['includeAll']){_0x46a3c4[_0x14e8('0x43')]=[{'all':!![]}];}_0x46a3c4=_[_0x14e8('0x40')]({},_0x46a3c4,_0x3d2d95['options']);return db[_0x14e8('0x2b')][_0x14e8('0x48')](_0x46a3c4)[_0x14e8('0x24')](handleEntityNotFound(_0x5ed821,null))[_0x14e8('0x24')](respondWithResult(_0x5ed821,null))[_0x14e8('0x49')](handleError(_0x5ed821,null));};exports[_0x14e8('0x4a')]=function(_0x343529,_0x2541ad){return db[_0x14e8('0x2b')][_0x14e8('0x4a')](_0x343529[_0x14e8('0x4b')],{})[_0x14e8('0x24')](respondWithResult(_0x2541ad,0xc9))[_0x14e8('0x49')](handleError(_0x2541ad,null));};exports[_0x14e8('0x4c')]=function(_0x1bf742,_0x1f50bc){if(_0x1bf742['body']['id']){delete _0x1bf742[_0x14e8('0x4b')]['id'];}return db['WhatsappQueueReport'][_0x14e8('0x48')]({'where':{'id':_0x1bf742[_0x14e8('0x46')]['id']}})[_0x14e8('0x24')](handleEntityNotFound(_0x1f50bc,null))[_0x14e8('0x24')](saveUpdates(_0x1bf742['body'],null))['then'](respondWithResult(_0x1f50bc,null))['catch'](handleError(_0x1f50bc,null));};exports[_0x14e8('0x4d')]=function(_0x49657e,_0x55f9b0){return db[_0x14e8('0x2b')][_0x14e8('0x48')]({'where':{'id':_0x49657e['params']['id']}})[_0x14e8('0x24')](handleEntityNotFound(_0x55f9b0,null))[_0x14e8('0x24')](removeEntity(_0x55f9b0,null))[_0x14e8('0x49')](handleError(_0x55f9b0,null));};exports[_0x14e8('0x4e')]=function(_0x4cc86a,_0x519c9c){return db[_0x14e8('0x2b')][_0x14e8('0x4e')]()[_0x14e8('0x24')](respondWithResult(_0x519c9c,null))[_0x14e8('0x49')](handleError(_0x519c9c,null));};
\ No newline at end of file
+var _0xda3f=['fields','nolimit','sort','filter','where','merge','type','VIRTUAL','options','WhatsappQueueReport','includeAll','include','findAll','rows','catch','params','rawAttributes','length','find','create','body','destroy','describe','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','map','key','model','query','keys','filters','intersection','attributes'];(function(_0x2c5352,_0xa5a13c){var _0x4bffb4=function(_0x4fd628){while(--_0x4fd628){_0x2c5352['push'](_0x2c5352['shift']());}};_0x4bffb4(++_0xa5a13c);}(_0xda3f,0xec));var _0xfda3=function(_0x347f38,_0x5d60b9){_0x347f38=_0x347f38-0x0;var _0x5715dc=_0xda3f[_0x347f38];return _0x5715dc;};'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['index']=function(_0x3c1549,_0x4101b1){var _0x301509={},_0x474992={},_0xe21ec6={'count':0x0,'rows':[]};var _0x3cfeb2=_[_0xfda3('0x28')](db['WhatsappQueueReport']['rawAttributes'],function(_0x3aef3c){return{'name':_0x3aef3c['fieldName'],'type':_0x3aef3c['type'][_0xfda3('0x29')]};});_0x474992[_0xfda3('0x2a')]=_[_0xfda3('0x28')](_0x3cfeb2,_0xfda3('0x26'));_0x474992[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x3c1549[_0xfda3('0x2b')]);_0x474992[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x474992['model'],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2f')]=_[_0xfda3('0x2e')](_0x474992[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x301509[_0xfda3('0x2f')]=_0x301509[_0xfda3('0x2f')]['length']?_0x301509['attributes']:_0x474992[_0xfda3('0x2a')];if(!_0x3c1549[_0xfda3('0x2b')]['hasOwnProperty'](_0xfda3('0x31'))){_0x301509[_0xfda3('0x1b')]=qs[_0xfda3('0x1b')](_0x3c1549['query'][_0xfda3('0x1b')]);_0x301509[_0xfda3('0x19')]=qs[_0xfda3('0x19')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x19')]);}_0x301509['order']=qs[_0xfda3('0x32')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x32')]);_0x301509['where']=qs[_0xfda3('0x2d')](_['pick'](_0x3c1549[_0xfda3('0x2b')],_0x474992[_0xfda3('0x2d')]),_0x3cfeb2);if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x33')]){_0x301509[_0xfda3('0x34')]=_[_0xfda3('0x35')](_0x301509[_0xfda3('0x34')],{'$or':_[_0xfda3('0x28')](_0x3cfeb2,function(_0x577be8){if(_0x577be8[_0xfda3('0x36')]!==_0xfda3('0x37')){var _0xd2dde0={};_0xd2dde0[_0x577be8[_0xfda3('0x26')]]={'$like':'%'+_0x3c1549['query'][_0xfda3('0x33')]+'%'};return _0xd2dde0;}})});}_0x301509=_[_0xfda3('0x35')]({},_0x301509,_0x3c1549[_0xfda3('0x38')]);var _0x5bad90={'where':_0x301509['where']};return db[_0xfda3('0x39')][_0xfda3('0x1c')](_0x5bad90)[_0xfda3('0x23')](function(_0x1aaa6c){_0xe21ec6[_0xfda3('0x1c')]=_0x1aaa6c;if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x301509[_0xfda3('0x3b')]=[{'all':!![]}];}return db[_0xfda3('0x39')][_0xfda3('0x3c')](_0x301509);})['then'](function(_0x27200f){_0xe21ec6[_0xfda3('0x3d')]=_0x27200f;return _0xe21ec6;})['then'](respondWithFilteredResult(_0x4101b1,_0x301509))[_0xfda3('0x3e')](handleError(_0x4101b1,null));};exports['show']=function(_0x51a314,_0x4e6886){var _0x2208bc={'raw':!![],'where':{'id':_0x51a314[_0xfda3('0x3f')]['id']}},_0x107fb1={};_0x107fb1[_0xfda3('0x2a')]=_['keys'](db[_0xfda3('0x39')][_0xfda3('0x40')]);_0x107fb1[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x51a314['query']);_0x107fb1[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],_0x107fb1['query']);_0x2208bc['attributes']=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x51a314[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x2208bc[_0xfda3('0x2f')]=_0x2208bc[_0xfda3('0x2f')][_0xfda3('0x41')]?_0x2208bc[_0xfda3('0x2f')]:_0x107fb1[_0xfda3('0x2a')];if(_0x51a314[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x2208bc[_0xfda3('0x3b')]=[{'all':!![]}];}_0x2208bc=_[_0xfda3('0x35')]({},_0x2208bc,_0x51a314['options']);return db['WhatsappQueueReport'][_0xfda3('0x42')](_0x2208bc)[_0xfda3('0x23')](handleEntityNotFound(_0x4e6886,null))[_0xfda3('0x23')](respondWithResult(_0x4e6886,null))[_0xfda3('0x3e')](handleError(_0x4e6886,null));};exports[_0xfda3('0x43')]=function(_0x60a89d,_0x192133){return db[_0xfda3('0x39')][_0xfda3('0x43')](_0x60a89d[_0xfda3('0x44')],{})['then'](respondWithResult(_0x192133,0xc9))[_0xfda3('0x3e')](handleError(_0x192133,null));};exports[_0xfda3('0x22')]=function(_0x481356,_0x36aa3a){if(_0x481356[_0xfda3('0x44')]['id']){delete _0x481356['body']['id'];}return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x481356[_0xfda3('0x3f')]['id']}})['then'](handleEntityNotFound(_0x36aa3a,null))[_0xfda3('0x23')](saveUpdates(_0x481356[_0xfda3('0x44')],null))[_0xfda3('0x23')](respondWithResult(_0x36aa3a,null))['catch'](handleError(_0x36aa3a,null));};exports[_0xfda3('0x45')]=function(_0x33565d,_0x2f54eb){return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x33565d['params']['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2f54eb,null))['then'](removeEntity(_0x2f54eb,null))[_0xfda3('0x3e')](handleError(_0x2f54eb,null));};exports['describe']=function(_0x1b5e89,_0x6447){return db[_0xfda3('0x39')][_0xfda3('0x46')]()['then'](respondWithResult(_0x6447,null))[_0xfda3('0x3e')](handleError(_0x6447,null));};
\ No newline at end of file
index 7e94103..40f566f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x079b=['define','WhatsappQueueReport','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x079b,0x12e));var _0xb079=function(_0x4b19b3,_0x59b162){_0x4b19b3=_0x4b19b3-0x0;var _0x2780e7=_0x079b[_0x4b19b3];return _0x2780e7;};'use strict';var _=require('lodash');var util=require(_0xb079('0x0'));var logger=require(_0xb079('0x1'))(_0xb079('0x2'));var moment=require(_0xb079('0x3'));var BPromise=require(_0xb079('0x4'));var rp=require(_0xb079('0x5'));var fs=require('fs');var path=require(_0xb079('0x6'));var rimraf=require('rimraf');var config=require(_0xb079('0x7'));var attributes=require(_0xb079('0x8'));module[_0xb079('0x9')]=function(_0x53761f,_0x39270f){return _0x53761f[_0xb079('0xa')](_0xb079('0xb'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0xb079('0xc'),'fields':[_0xb079('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3964=['bluebird','request-promise','path','rimraf','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api'];(function(_0x3da612,_0x332456){var _0x1a9d1d=function(_0x5ca0d0){while(--_0x5ca0d0){_0x3da612['push'](_0x3da612['shift']());}};_0x1a9d1d(++_0x332456);}(_0x3964,0x11a));var _0x4396=function(_0x158662,_0x3232b0){_0x158662=_0x158662-0x0;var _0x415797=_0x3964[_0x158662];return _0x415797;};'use strict';var _=require(_0x4396('0x0'));var util=require(_0x4396('0x1'));var logger=require(_0x4396('0x2'))(_0x4396('0x3'));var moment=require('moment');var BPromise=require(_0x4396('0x4'));var rp=require(_0x4396('0x5'));var fs=require('fs');var path=require(_0x4396('0x6'));var rimraf=require(_0x4396('0x7'));var config=require('../../config/environment');var attributes=require('./whatsappQueueReport.attributes');module[_0x4396('0x8')]=function(_0x16f1b0,_0x532910){return _0x16f1b0[_0x4396('0x9')](_0x4396('0xa'),attributes,{'tableName':_0x4396('0xb'),'paranoid':![],'indexes':[{'name':_0x4396('0xc'),'fields':[_0x4396('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 28af73c..d9d3bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6747=['WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','options','raw','then','debug','stringify','UpdateWhatsappQueueReport','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','client','http','request','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x65c903,_0x41e920){var _0x23e1d7=function(_0x4279cd){while(--_0x4279cd){_0x65c903['push'](_0x65c903['shift']());}};_0x23e1d7(++_0x41e920);}(_0x6747,0x150));var _0x7674=function(_0x330a95,_0x2b0fe3){_0x330a95=_0x330a95-0x0;var _0xb9a8d=_0x6747[_0x330a95];return _0xb9a8d;};'use strict';var _=require(_0x7674('0x0'));var util=require(_0x7674('0x1'));var moment=require(_0x7674('0x2'));var BPromise=require('bluebird');var rs=require(_0x7674('0x3'));var fs=require('fs');var Redis=require(_0x7674('0x4'));var db=require(_0x7674('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7674('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7674('0x7')][_0x7674('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e0344,_0x47bdce,_0x1417cc){return new BPromise(function(_0x553f47,_0x5b874a){return client[_0x7674('0x9')](_0x3e0344,_0x1417cc)['then'](function(_0xd962cc){logger['info'](_0x7674('0xa'),_0x47bdce,_0x7674('0xb'));logger['debug'](_0x7674('0xc'),_0x47bdce,'request\x20sent',JSON['stringify'](_0xd962cc));if(_0xd962cc[_0x7674('0xd')]){if(_0xd962cc[_0x7674('0xd')]['code']===0x1f4){logger[_0x7674('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x47bdce,_0xd962cc[_0x7674('0xd')]['message']);return _0x5b874a(_0xd962cc['error']['message']);}logger[_0x7674('0xd')](_0x7674('0xa'),_0x47bdce,_0xd962cc[_0x7674('0xd')]['message']);return _0x553f47(_0xd962cc[_0x7674('0xd')][_0x7674('0xe')]);}else{logger[_0x7674('0xf')](_0x7674('0xa'),_0x47bdce,_0x7674('0xb'));_0x553f47(_0xd962cc[_0x7674('0x10')][_0x7674('0xe')]);}})[_0x7674('0x11')](function(_0x520b69){logger[_0x7674('0xd')](_0x7674('0xa'),_0x47bdce,_0x520b69);_0x5b874a(_0x520b69);});});}exports[_0x7674('0x12')]=function(_0x2ad7c4){var _0x5b5e81=this;return new Promise(function(_0x4bb133,_0x457d85){return db[_0x7674('0x13')]['create'](_0x2ad7c4['body'],{'raw':_0x2ad7c4[_0x7674('0x14')]?_0x2ad7c4[_0x7674('0x14')][_0x7674('0x15')]===undefined?!![]:![]:!![]})[_0x7674('0x16')](function(_0x568624){logger[_0x7674('0xf')](_0x7674('0x12'),_0x2ad7c4);logger[_0x7674('0x17')](_0x7674('0x12'),_0x2ad7c4,JSON[_0x7674('0x18')](_0x568624));_0x4bb133(_0x568624);})[_0x7674('0x11')](function(_0x3e2295){logger[_0x7674('0xd')]('CreateWhatsappQueueReport',_0x3e2295[_0x7674('0xe')],_0x2ad7c4);_0x457d85(_0x5b5e81[_0x7674('0xd')](0x1f4,_0x3e2295['message']));});});};exports[_0x7674('0x19')]=function(_0x4521a4){var _0x356c47=this;return new Promise(function(_0x25e132,_0x2de0e0){return db[_0x7674('0x13')]['update'](_0x4521a4['body'],{'raw':_0x4521a4[_0x7674('0x14')]?_0x4521a4['options'][_0x7674('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4521a4[_0x7674('0x14')]?_0x4521a4[_0x7674('0x14')][_0x7674('0x1a')]||null:null,'attributes':_0x4521a4['options']?_0x4521a4[_0x7674('0x14')][_0x7674('0x1b')]||null:null,'limit':_0x4521a4[_0x7674('0x14')]?_0x4521a4[_0x7674('0x14')][_0x7674('0x1c')]||null:null})[_0x7674('0x16')](function(_0xeb27d7){logger['info'](_0x7674('0x19'),_0x4521a4);logger[_0x7674('0x17')](_0x7674('0x19'),_0x4521a4,JSON[_0x7674('0x18')](_0xeb27d7));_0x25e132(_0xeb27d7);})[_0x7674('0x11')](function(_0x210512){logger[_0x7674('0xd')](_0x7674('0x19'),_0x210512[_0x7674('0xe')],_0x4521a4);_0x2de0e0(_0x356c47['error'](0x1f4,_0x210512[_0x7674('0xe')]));});});};
\ No newline at end of file
+var _0xac66=['update','where','attributes','limit','UpdateWhatsappQueueReport','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','body','options','raw','debug','WhatsappQueueReport'];(function(_0x2809f6,_0x67626e){var _0x1e6c93=function(_0xbe2420){while(--_0xbe2420){_0x2809f6['push'](_0x2809f6['shift']());}};_0x1e6c93(++_0x67626e);}(_0xac66,0x191));var _0x6ac6=function(_0x3a8b5b,_0xb58c02){_0x3a8b5b=_0x3a8b5b-0x0;var _0x2e9a69=_0xac66[_0x3a8b5b];return _0x2e9a69;};'use strict';var _=require('lodash');var util=require(_0x6ac6('0x0'));var moment=require(_0x6ac6('0x1'));var BPromise=require(_0x6ac6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ac6('0x3'));var db=require(_0x6ac6('0x4'))['db'];var utils=require(_0x6ac6('0x5'));var logger=require('../../config/logger')(_0x6ac6('0x6'));var config=require(_0x6ac6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6ac6('0x8')][_0x6ac6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59e87a,_0x1edfa2,_0x4d9b46){return new BPromise(function(_0x2bbcd0,_0xa7fe53){return client[_0x6ac6('0xa')](_0x59e87a,_0x4d9b46)[_0x6ac6('0xb')](function(_0x457a40){logger[_0x6ac6('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x1edfa2,'request\x20sent');logger['debug'](_0x6ac6('0xd'),_0x1edfa2,_0x6ac6('0xe'),JSON[_0x6ac6('0xf')](_0x457a40));if(_0x457a40[_0x6ac6('0x10')]){if(_0x457a40[_0x6ac6('0x10')][_0x6ac6('0x11')]===0x1f4){logger[_0x6ac6('0x10')](_0x6ac6('0x12'),_0x1edfa2,_0x457a40['error']['message']);return _0xa7fe53(_0x457a40[_0x6ac6('0x10')][_0x6ac6('0x13')]);}logger[_0x6ac6('0x10')](_0x6ac6('0x12'),_0x1edfa2,_0x457a40[_0x6ac6('0x10')][_0x6ac6('0x13')]);return _0x2bbcd0(_0x457a40[_0x6ac6('0x10')]['message']);}else{logger[_0x6ac6('0xc')](_0x6ac6('0x12'),_0x1edfa2,_0x6ac6('0xe'));_0x2bbcd0(_0x457a40[_0x6ac6('0x14')]['message']);}})[_0x6ac6('0x15')](function(_0x51862c){logger['error'](_0x6ac6('0x12'),_0x1edfa2,_0x51862c);_0xa7fe53(_0x51862c);});});}exports[_0x6ac6('0x16')]=function(_0x196f9b){var _0x3377aa=this;return new Promise(function(_0x250228,_0x531ca3){return db['WhatsappQueueReport']['create'](_0x196f9b[_0x6ac6('0x17')],{'raw':_0x196f9b[_0x6ac6('0x18')]?_0x196f9b[_0x6ac6('0x18')][_0x6ac6('0x19')]===undefined?!![]:![]:!![]})[_0x6ac6('0xb')](function(_0x521ae3){logger[_0x6ac6('0xc')]('CreateWhatsappQueueReport',_0x196f9b);logger[_0x6ac6('0x1a')](_0x6ac6('0x16'),_0x196f9b,JSON[_0x6ac6('0xf')](_0x521ae3));_0x250228(_0x521ae3);})[_0x6ac6('0x15')](function(_0x5226c4){logger[_0x6ac6('0x10')](_0x6ac6('0x16'),_0x5226c4[_0x6ac6('0x13')],_0x196f9b);_0x531ca3(_0x3377aa[_0x6ac6('0x10')](0x1f4,_0x5226c4[_0x6ac6('0x13')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x417769){var _0x56f40b=this;return new Promise(function(_0x5b787b,_0x50bcc4){return db[_0x6ac6('0x1b')][_0x6ac6('0x1c')](_0x417769[_0x6ac6('0x17')],{'raw':_0x417769[_0x6ac6('0x18')]?_0x417769[_0x6ac6('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x417769[_0x6ac6('0x18')]?_0x417769[_0x6ac6('0x18')][_0x6ac6('0x1d')]||null:null,'attributes':_0x417769[_0x6ac6('0x18')]?_0x417769[_0x6ac6('0x18')][_0x6ac6('0x1e')]||null:null,'limit':_0x417769[_0x6ac6('0x18')]?_0x417769[_0x6ac6('0x18')][_0x6ac6('0x1f')]||null:null})['then'](function(_0x17561e){logger['info'](_0x6ac6('0x20'),_0x417769);logger[_0x6ac6('0x1a')](_0x6ac6('0x20'),_0x417769,JSON[_0x6ac6('0xf')](_0x17561e));_0x5b787b(_0x17561e);})[_0x6ac6('0x15')](function(_0x50ea91){logger[_0x6ac6('0x10')]('UpdateWhatsappQueueReport',_0x50ea91[_0x6ac6('0x13')],_0x417769);_0x50bcc4(_0x56f40b['error'](0x1f4,_0x50ea91['message']));});});};
\ No newline at end of file
index 536a05c..16f45f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc763=['/describe','/:id','show','create','put','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x31fd6a,_0x26b5de){var _0x56a33b=function(_0x52ae1d){while(--_0x52ae1d){_0x31fd6a['push'](_0x31fd6a['shift']());}};_0x56a33b(++_0x26b5de);}(_0xc763,0x171));var _0x3c76=function(_0x35d9ec,_0x5e1134){_0x35d9ec=_0x35d9ec-0x0;var _0x44dd6a=_0xc763[_0x35d9ec];return _0x44dd6a;};'use strict';var multer=require(_0x3c76('0x0'));var util=require(_0x3c76('0x1'));var path=require('path');var timeout=require(_0x3c76('0x2'));var express=require(_0x3c76('0x3'));var router=express['Router']();var fs_extra=require(_0x3c76('0x4'));var auth=require(_0x3c76('0x5'));var interaction=require(_0x3c76('0x6'));var config=require(_0x3c76('0x7'));var controller=require('./whatsappTransferReport.controller');router[_0x3c76('0x8')]('/',auth[_0x3c76('0x9')](),controller[_0x3c76('0xa')]);router[_0x3c76('0x8')](_0x3c76('0xb'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x3c76('0xc'),auth[_0x3c76('0x9')](),controller[_0x3c76('0xd')]);router['post']('/',auth[_0x3c76('0x9')](),controller[_0x3c76('0xe')]);router[_0x3c76('0xf')](_0x3c76('0xc'),auth[_0x3c76('0x9')](),controller[_0x3c76('0x10')]);router[_0x3c76('0x11')](_0x3c76('0xc'),auth[_0x3c76('0x9')](),controller['destroy']);module[_0x3c76('0x12')]=router;
\ No newline at end of file
+var _0x1bc4=['delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','put','update'];(function(_0x19db20,_0x410d0e){var _0x4d9ba0=function(_0x22bb23){while(--_0x22bb23){_0x19db20['push'](_0x19db20['shift']());}};_0x4d9ba0(++_0x410d0e);}(_0x1bc4,0x7a));var _0x41bc=function(_0x50f295,_0x4e88dc){_0x50f295=_0x50f295-0x0;var _0x5ead4f=_0x1bc4[_0x50f295];return _0x5ead4f;};'use strict';var multer=require(_0x41bc('0x0'));var util=require(_0x41bc('0x1'));var path=require(_0x41bc('0x2'));var timeout=require(_0x41bc('0x3'));var express=require('express');var router=express[_0x41bc('0x4')]();var fs_extra=require(_0x41bc('0x5'));var auth=require(_0x41bc('0x6'));var interaction=require(_0x41bc('0x7'));var config=require(_0x41bc('0x8'));var controller=require(_0x41bc('0x9'));router['get']('/',auth[_0x41bc('0xa')](),controller[_0x41bc('0xb')]);router[_0x41bc('0xc')](_0x41bc('0xd'),auth[_0x41bc('0xa')](),controller[_0x41bc('0xe')]);router[_0x41bc('0xc')](_0x41bc('0xf'),auth[_0x41bc('0xa')](),controller['show']);router['post']('/',auth[_0x41bc('0xa')](),controller['create']);router[_0x41bc('0x10')]('/:id',auth[_0x41bc('0xa')](),controller[_0x41bc('0x11')]);router[_0x41bc('0x12')](_0x41bc('0xf'),auth[_0x41bc('0xa')](),controller['destroy']);module[_0x41bc('0x13')]=router;
\ No newline at end of file
index 982b484..81a888e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x505d=['agent','queue','STRING','ENUM','account'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x505d,0x93));var _0xd505=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x505d[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xd505('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0xd505('0x1')](_0xd505('0x2'),_0xd505('0x3'),_0xd505('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xeca8=['DATE','sequelize','exports','STRING','ENUM','account','agent'];(function(_0x244d44,_0x490b48){var _0x370fc7=function(_0xe0ce2c){while(--_0xe0ce2c){_0x244d44['push'](_0x244d44['shift']());}};_0x370fc7(++_0x490b48);}(_0xeca8,0x1f2));var _0x8eca=function(_0x45ce6a,_0xb35ad7){_0x45ce6a=_0x45ce6a-0x0;var _0x2b2f30=_0xeca8[_0x45ce6a];return _0x2b2f30;};'use strict';var Sequelize=require(_0x8eca('0x0'));module[_0x8eca('0x1')]={'uniqueid':{'type':Sequelize[_0x8eca('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8eca('0x3')](_0x8eca('0x4'),_0x8eca('0x5'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x8eca('0x6')]}};
\ No newline at end of file
index d0b312c..827ab34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f58=['json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','WhatsappTransferReport','includeAll','rows','catch','show','params','rawAttributes','include','options','create','body','find','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8f58,0x79));var _0x88f5=function(_0x14748f,_0x56400a){_0x14748f=_0x14748f-0x0;var _0x460915=_0x8f58[_0x14748f];return _0x460915;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x88f5('0x0'));var jsonpatch=require(_0x88f5('0x1'));var rp=require(_0x88f5('0x2'));var moment=require(_0x88f5('0x3'));var BPromise=require(_0x88f5('0x4'));var Mustache=require(_0x88f5('0x5'));var util=require(_0x88f5('0x6'));var path=require('path');var sox=require(_0x88f5('0x7'));var csv=require('to-csv');var ejs=require(_0x88f5('0x8'));var fs=require('fs');var fs_extra=require(_0x88f5('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x88f5('0xa'));var deskjs=require(_0x88f5('0xb'));var toCsv=require(_0x88f5('0xc'));var querystring=require(_0x88f5('0xd'));var Papa=require(_0x88f5('0xe'));var Redis=require('ioredis');var authService=require(_0x88f5('0xf'));var qs=require(_0x88f5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x88f5('0x11'));var logger=require(_0x88f5('0x12'))(_0x88f5('0x13'));var utils=require(_0x88f5('0x14'));var config=require(_0x88f5('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x223edd,_0x17becf){_0x17becf=_0x17becf||0xcc;return function(_0x288feb){if(_0x288feb){return _0x223edd[_0x88f5('0x16')](_0x17becf);}return _0x223edd[_0x88f5('0x17')](_0x17becf)[_0x88f5('0x18')]();};}function respondWithResult(_0x3b20fe,_0x576391){_0x576391=_0x576391||0xc8;return function(_0x3432e0){if(_0x3432e0){return _0x3b20fe[_0x88f5('0x17')](_0x576391)[_0x88f5('0x19')](_0x3432e0);}};}function respondWithFilteredResult(_0x17d9e8,_0x4009d9){return function(_0x4b8b02){if(_0x4b8b02){var _0x56f44d=typeof _0x4009d9[_0x88f5('0x1a')]===_0x88f5('0x1b')&&typeof _0x4009d9['limit']===_0x88f5('0x1b');var _0x41c5d1=_0x4b8b02[_0x88f5('0x1c')];var _0x228a9e=_0x56f44d?0x0:_0x4009d9['offset'];var _0x115f52=_0x56f44d?_0x4b8b02['count']:_0x4009d9['offset']+_0x4009d9[_0x88f5('0x1d')];var _0x509a3f;if(_0x115f52>=_0x41c5d1){_0x115f52=_0x41c5d1;_0x509a3f=0xc8;}else{_0x509a3f=0xce;}_0x17d9e8[_0x88f5('0x17')](_0x509a3f);return _0x17d9e8[_0x88f5('0x1e')](_0x88f5('0x1f'),_0x228a9e+'-'+_0x115f52+'/'+_0x41c5d1)[_0x88f5('0x19')](_0x4b8b02);}return null;};}function patchUpdates(_0x326add){return function(_0x8372a4){try{jsonpatch['apply'](_0x8372a4,_0x326add,!![]);}catch(_0x51c3b1){return BPromise['reject'](_0x51c3b1);}return _0x8372a4['save']();};}function saveUpdates(_0x3708e2,_0x3c423e){return function(_0x5daa78){if(_0x5daa78){return _0x5daa78[_0x88f5('0x20')](_0x3708e2)[_0x88f5('0x21')](function(_0x3a40db){return _0x3a40db;});}return null;};}function removeEntity(_0x5ee310,_0x332c61){return function(_0x41627d){if(_0x41627d){return _0x41627d[_0x88f5('0x22')]()[_0x88f5('0x21')](function(){_0x5ee310['status'](0xcc)[_0x88f5('0x18')]();});}};}function handleEntityNotFound(_0x100de9,_0x1495a6){return function(_0x474935){if(!_0x474935){_0x100de9[_0x88f5('0x16')](0x194);}return _0x474935;};}function handleError(_0x420c67,_0x378049){_0x378049=_0x378049||0x1f4;return function(_0x47557b){logger[_0x88f5('0x23')](_0x47557b[_0x88f5('0x24')]);if(_0x47557b['name']){delete _0x47557b[_0x88f5('0x25')];}_0x420c67['status'](_0x378049)[_0x88f5('0x26')](_0x47557b);};}exports[_0x88f5('0x27')]=function(_0x2742e6,_0x1b7e66){var _0x535daa={},_0x1209a4={},_0x218bd4={'count':0x0,'rows':[]};var _0x12d584=_[_0x88f5('0x28')](db['WhatsappTransferReport']['rawAttributes'],function(_0x29fb02){return{'name':_0x29fb02[_0x88f5('0x29')],'type':_0x29fb02[_0x88f5('0x2a')][_0x88f5('0x2b')]};});_0x1209a4[_0x88f5('0x2c')]=_[_0x88f5('0x28')](_0x12d584,_0x88f5('0x25'));_0x1209a4[_0x88f5('0x2d')]=_[_0x88f5('0x2e')](_0x2742e6[_0x88f5('0x2d')]);_0x1209a4['filters']=_[_0x88f5('0x2f')](_0x1209a4[_0x88f5('0x2c')],_0x1209a4[_0x88f5('0x2d')]);_0x535daa[_0x88f5('0x30')]=_[_0x88f5('0x2f')](_0x1209a4['model'],qs['fields'](_0x2742e6[_0x88f5('0x2d')][_0x88f5('0x31')]));_0x535daa[_0x88f5('0x30')]=_0x535daa[_0x88f5('0x30')][_0x88f5('0x32')]?_0x535daa['attributes']:_0x1209a4[_0x88f5('0x2c')];if(!_0x2742e6[_0x88f5('0x2d')]['hasOwnProperty'](_0x88f5('0x33'))){_0x535daa['limit']=qs[_0x88f5('0x1d')](_0x2742e6['query']['limit']);_0x535daa[_0x88f5('0x1a')]=qs[_0x88f5('0x1a')](_0x2742e6['query'][_0x88f5('0x1a')]);}_0x535daa[_0x88f5('0x34')]=qs['sort'](_0x2742e6['query'][_0x88f5('0x35')]);_0x535daa[_0x88f5('0x36')]=qs['filters'](_[_0x88f5('0x37')](_0x2742e6[_0x88f5('0x2d')],_0x1209a4[_0x88f5('0x38')]),_0x12d584);if(_0x2742e6[_0x88f5('0x2d')][_0x88f5('0x39')]){_0x535daa['where']=_[_0x88f5('0x3a')](_0x535daa[_0x88f5('0x36')],{'$or':_[_0x88f5('0x28')](_0x12d584,function(_0x58d810){if(_0x58d810[_0x88f5('0x2a')]!==_0x88f5('0x3b')){var _0x537d75={};_0x537d75[_0x58d810[_0x88f5('0x25')]]={'$like':'%'+_0x2742e6['query'][_0x88f5('0x39')]+'%'};return _0x537d75;}})});}_0x535daa=_[_0x88f5('0x3a')]({},_0x535daa,_0x2742e6['options']);var _0x5c226a={'where':_0x535daa[_0x88f5('0x36')]};return db[_0x88f5('0x3c')][_0x88f5('0x1c')](_0x5c226a)[_0x88f5('0x21')](function(_0xe5e4a0){_0x218bd4[_0x88f5('0x1c')]=_0xe5e4a0;if(_0x2742e6[_0x88f5('0x2d')][_0x88f5('0x3d')]){_0x535daa['include']=[{'all':!![]}];}return db['WhatsappTransferReport']['findAll'](_0x535daa);})[_0x88f5('0x21')](function(_0xa044f2){_0x218bd4[_0x88f5('0x3e')]=_0xa044f2;return _0x218bd4;})[_0x88f5('0x21')](respondWithFilteredResult(_0x1b7e66,_0x535daa))[_0x88f5('0x3f')](handleError(_0x1b7e66,null));};exports[_0x88f5('0x40')]=function(_0x180fe3,_0x2d1c6b){var _0x25a4ae={'raw':!![],'where':{'id':_0x180fe3[_0x88f5('0x41')]['id']}},_0x3fad84={};_0x3fad84['model']=_[_0x88f5('0x2e')](db[_0x88f5('0x3c')][_0x88f5('0x42')]);_0x3fad84[_0x88f5('0x2d')]=_[_0x88f5('0x2e')](_0x180fe3['query']);_0x3fad84[_0x88f5('0x38')]=_['intersection'](_0x3fad84[_0x88f5('0x2c')],_0x3fad84[_0x88f5('0x2d')]);_0x25a4ae['attributes']=_[_0x88f5('0x2f')](_0x3fad84['model'],qs[_0x88f5('0x31')](_0x180fe3[_0x88f5('0x2d')][_0x88f5('0x31')]));_0x25a4ae['attributes']=_0x25a4ae[_0x88f5('0x30')][_0x88f5('0x32')]?_0x25a4ae[_0x88f5('0x30')]:_0x3fad84[_0x88f5('0x2c')];if(_0x180fe3[_0x88f5('0x2d')][_0x88f5('0x3d')]){_0x25a4ae[_0x88f5('0x43')]=[{'all':!![]}];}_0x25a4ae=_[_0x88f5('0x3a')]({},_0x25a4ae,_0x180fe3[_0x88f5('0x44')]);return db[_0x88f5('0x3c')]['find'](_0x25a4ae)[_0x88f5('0x21')](handleEntityNotFound(_0x2d1c6b,null))[_0x88f5('0x21')](respondWithResult(_0x2d1c6b,null))[_0x88f5('0x3f')](handleError(_0x2d1c6b,null));};exports['create']=function(_0x293523,_0xd56b6a){return db[_0x88f5('0x3c')][_0x88f5('0x45')](_0x293523[_0x88f5('0x46')],{})[_0x88f5('0x21')](respondWithResult(_0xd56b6a,0xc9))['catch'](handleError(_0xd56b6a,null));};exports['update']=function(_0x605296,_0xafac38){if(_0x605296[_0x88f5('0x46')]['id']){delete _0x605296[_0x88f5('0x46')]['id'];}return db['WhatsappTransferReport'][_0x88f5('0x47')]({'where':{'id':_0x605296['params']['id']}})['then'](handleEntityNotFound(_0xafac38,null))['then'](saveUpdates(_0x605296[_0x88f5('0x46')],null))[_0x88f5('0x21')](respondWithResult(_0xafac38,null))[_0x88f5('0x3f')](handleError(_0xafac38,null));};exports[_0x88f5('0x22')]=function(_0x1530e2,_0x56a899){return db[_0x88f5('0x3c')][_0x88f5('0x47')]({'where':{'id':_0x1530e2['params']['id']}})['then'](handleEntityNotFound(_0x56a899,null))['then'](removeEntity(_0x56a899,null))[_0x88f5('0x3f')](handleError(_0x56a899,null));};exports[_0x88f5('0x48')]=function(_0x1b3314,_0x3f0ce8){return db[_0x88f5('0x3c')][_0x88f5('0x48')]()[_0x88f5('0x21')](respondWithResult(_0x3f0ce8,null))[_0x88f5('0x3f')](handleError(_0x3f0ce8,null));};
\ No newline at end of file
+var _0x7a52=['merge','includeAll','include','rows','catch','show','options','create','body','update','params','destroy','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','error','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x376d28,_0x39b44e){var _0xca8ceb=function(_0x5b7922){while(--_0x5b7922){_0x376d28['push'](_0x376d28['shift']());}};_0xca8ceb(++_0x39b44e);}(_0x7a52,0x1bd));var _0x27a5=function(_0x394349,_0x5a7acc){_0x394349=_0x394349-0x0;var _0x46ecd4=_0x7a52[_0x394349];return _0x46ecd4;};'use strict';var emlformat=require(_0x27a5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x27a5('0x1'));var jsonpatch=require(_0x27a5('0x2'));var rp=require(_0x27a5('0x3'));var moment=require(_0x27a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x27a5('0x5'));var util=require(_0x27a5('0x6'));var path=require(_0x27a5('0x7'));var sox=require(_0x27a5('0x8'));var csv=require(_0x27a5('0x9'));var ejs=require(_0x27a5('0xa'));var fs=require('fs');var fs_extra=require(_0x27a5('0xb'));var _=require('lodash');var squel=require(_0x27a5('0xc'));var crypto=require(_0x27a5('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x27a5('0x9'));var querystring=require('querystring');var Papa=require(_0x27a5('0xe'));var Redis=require(_0x27a5('0xf'));var authService=require(_0x27a5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x27a5('0x11'));var hardwareService=require(_0x27a5('0x12'));var logger=require(_0x27a5('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x27a5('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8b9a04,_0x351e5c){_0x351e5c=_0x351e5c||0xcc;return function(_0x1a3ba9){if(_0x1a3ba9){return _0x8b9a04[_0x27a5('0x15')](_0x351e5c);}return _0x8b9a04[_0x27a5('0x16')](_0x351e5c)[_0x27a5('0x17')]();};}function respondWithResult(_0xe5a2db,_0x515e51){_0x515e51=_0x515e51||0xc8;return function(_0x447f2c){if(_0x447f2c){return _0xe5a2db[_0x27a5('0x16')](_0x515e51)[_0x27a5('0x18')](_0x447f2c);}};}function respondWithFilteredResult(_0x5e1ad6,_0x4e6b6d){return function(_0x128307){if(_0x128307){var _0x4e03fb=typeof _0x4e6b6d[_0x27a5('0x19')]===_0x27a5('0x1a')&&typeof _0x4e6b6d[_0x27a5('0x1b')]===_0x27a5('0x1a');var _0x31ffa1=_0x128307[_0x27a5('0x1c')];var _0x55facb=_0x4e03fb?0x0:_0x4e6b6d[_0x27a5('0x19')];var _0x1071ab=_0x4e03fb?_0x128307[_0x27a5('0x1c')]:_0x4e6b6d[_0x27a5('0x19')]+_0x4e6b6d[_0x27a5('0x1b')];var _0x303362;if(_0x1071ab>=_0x31ffa1){_0x1071ab=_0x31ffa1;_0x303362=0xc8;}else{_0x303362=0xce;}_0x5e1ad6[_0x27a5('0x16')](_0x303362);return _0x5e1ad6['set'](_0x27a5('0x1d'),_0x55facb+'-'+_0x1071ab+'/'+_0x31ffa1)[_0x27a5('0x18')](_0x128307);}return null;};}function patchUpdates(_0x499b6d){return function(_0x3cf7b7){try{jsonpatch[_0x27a5('0x1e')](_0x3cf7b7,_0x499b6d,!![]);}catch(_0x9e3225){return BPromise[_0x27a5('0x1f')](_0x9e3225);}return _0x3cf7b7[_0x27a5('0x20')]();};}function saveUpdates(_0x4ad585,_0x28c06c){return function(_0x3c5073){if(_0x3c5073){return _0x3c5073['update'](_0x4ad585)['then'](function(_0x19a32b){return _0x19a32b;});}return null;};}function removeEntity(_0x424e3c,_0x355b0c){return function(_0x304abb){if(_0x304abb){return _0x304abb['destroy']()[_0x27a5('0x21')](function(){_0x424e3c['status'](0xcc)[_0x27a5('0x17')]();});}};}function handleEntityNotFound(_0x4cae30,_0x38075e){return function(_0x2158b2){if(!_0x2158b2){_0x4cae30[_0x27a5('0x15')](0x194);}return _0x2158b2;};}function handleError(_0x49d26c,_0x5128f0){_0x5128f0=_0x5128f0||0x1f4;return function(_0x5dd9d1){logger[_0x27a5('0x22')](_0x5dd9d1['stack']);if(_0x5dd9d1[_0x27a5('0x23')]){delete _0x5dd9d1[_0x27a5('0x23')];}_0x49d26c[_0x27a5('0x16')](_0x5128f0)[_0x27a5('0x24')](_0x5dd9d1);};}exports[_0x27a5('0x25')]=function(_0x1df29d,_0x6cdab1){var _0x3de6c3={},_0x110a17={},_0xaf45fa={'count':0x0,'rows':[]};var _0x28c95c=_[_0x27a5('0x26')](db[_0x27a5('0x27')][_0x27a5('0x28')],function(_0x40cbef){return{'name':_0x40cbef[_0x27a5('0x29')],'type':_0x40cbef[_0x27a5('0x2a')][_0x27a5('0x2b')]};});_0x110a17['model']=_[_0x27a5('0x26')](_0x28c95c,_0x27a5('0x23'));_0x110a17[_0x27a5('0x2c')]=_[_0x27a5('0x2d')](_0x1df29d[_0x27a5('0x2c')]);_0x110a17[_0x27a5('0x2e')]=_[_0x27a5('0x2f')](_0x110a17[_0x27a5('0x30')],_0x110a17[_0x27a5('0x2c')]);_0x3de6c3[_0x27a5('0x31')]=_['intersection'](_0x110a17[_0x27a5('0x30')],qs[_0x27a5('0x32')](_0x1df29d['query']['fields']));_0x3de6c3[_0x27a5('0x31')]=_0x3de6c3['attributes'][_0x27a5('0x33')]?_0x3de6c3[_0x27a5('0x31')]:_0x110a17[_0x27a5('0x30')];if(!_0x1df29d[_0x27a5('0x2c')][_0x27a5('0x34')](_0x27a5('0x35'))){_0x3de6c3[_0x27a5('0x1b')]=qs[_0x27a5('0x1b')](_0x1df29d[_0x27a5('0x2c')][_0x27a5('0x1b')]);_0x3de6c3[_0x27a5('0x19')]=qs['offset'](_0x1df29d[_0x27a5('0x2c')]['offset']);}_0x3de6c3[_0x27a5('0x36')]=qs[_0x27a5('0x37')](_0x1df29d[_0x27a5('0x2c')]['sort']);_0x3de6c3[_0x27a5('0x38')]=qs['filters'](_[_0x27a5('0x39')](_0x1df29d[_0x27a5('0x2c')],_0x110a17['filters']),_0x28c95c);if(_0x1df29d['query'][_0x27a5('0x3a')]){_0x3de6c3[_0x27a5('0x38')]=_['merge'](_0x3de6c3['where'],{'$or':_[_0x27a5('0x26')](_0x28c95c,function(_0xe47074){if(_0xe47074[_0x27a5('0x2a')]!=='VIRTUAL'){var _0x1dee2f={};_0x1dee2f[_0xe47074[_0x27a5('0x23')]]={'$like':'%'+_0x1df29d[_0x27a5('0x2c')][_0x27a5('0x3a')]+'%'};return _0x1dee2f;}})});}_0x3de6c3=_[_0x27a5('0x3b')]({},_0x3de6c3,_0x1df29d['options']);var _0x53dac9={'where':_0x3de6c3[_0x27a5('0x38')]};return db[_0x27a5('0x27')][_0x27a5('0x1c')](_0x53dac9)[_0x27a5('0x21')](function(_0xdf0df9){_0xaf45fa[_0x27a5('0x1c')]=_0xdf0df9;if(_0x1df29d[_0x27a5('0x2c')][_0x27a5('0x3c')]){_0x3de6c3[_0x27a5('0x3d')]=[{'all':!![]}];}return db[_0x27a5('0x27')]['findAll'](_0x3de6c3);})[_0x27a5('0x21')](function(_0x3a91aa){_0xaf45fa[_0x27a5('0x3e')]=_0x3a91aa;return _0xaf45fa;})[_0x27a5('0x21')](respondWithFilteredResult(_0x6cdab1,_0x3de6c3))[_0x27a5('0x3f')](handleError(_0x6cdab1,null));};exports[_0x27a5('0x40')]=function(_0x5ed676,_0x4fe261){var _0x2f985e={'raw':!![],'where':{'id':_0x5ed676['params']['id']}},_0x7b3aba={};_0x7b3aba[_0x27a5('0x30')]=_[_0x27a5('0x2d')](db[_0x27a5('0x27')][_0x27a5('0x28')]);_0x7b3aba[_0x27a5('0x2c')]=_[_0x27a5('0x2d')](_0x5ed676[_0x27a5('0x2c')]);_0x7b3aba[_0x27a5('0x2e')]=_[_0x27a5('0x2f')](_0x7b3aba[_0x27a5('0x30')],_0x7b3aba['query']);_0x2f985e[_0x27a5('0x31')]=_[_0x27a5('0x2f')](_0x7b3aba[_0x27a5('0x30')],qs[_0x27a5('0x32')](_0x5ed676[_0x27a5('0x2c')][_0x27a5('0x32')]));_0x2f985e[_0x27a5('0x31')]=_0x2f985e[_0x27a5('0x31')][_0x27a5('0x33')]?_0x2f985e[_0x27a5('0x31')]:_0x7b3aba[_0x27a5('0x30')];if(_0x5ed676['query'][_0x27a5('0x3c')]){_0x2f985e['include']=[{'all':!![]}];}_0x2f985e=_[_0x27a5('0x3b')]({},_0x2f985e,_0x5ed676[_0x27a5('0x41')]);return db[_0x27a5('0x27')]['find'](_0x2f985e)['then'](handleEntityNotFound(_0x4fe261,null))[_0x27a5('0x21')](respondWithResult(_0x4fe261,null))['catch'](handleError(_0x4fe261,null));};exports[_0x27a5('0x42')]=function(_0x42d0ce,_0x3550dd){return db[_0x27a5('0x27')][_0x27a5('0x42')](_0x42d0ce[_0x27a5('0x43')],{})[_0x27a5('0x21')](respondWithResult(_0x3550dd,0xc9))[_0x27a5('0x3f')](handleError(_0x3550dd,null));};exports[_0x27a5('0x44')]=function(_0x59163d,_0xc78ebe){if(_0x59163d[_0x27a5('0x43')]['id']){delete _0x59163d[_0x27a5('0x43')]['id'];}return db[_0x27a5('0x27')]['find']({'where':{'id':_0x59163d[_0x27a5('0x45')]['id']}})[_0x27a5('0x21')](handleEntityNotFound(_0xc78ebe,null))[_0x27a5('0x21')](saveUpdates(_0x59163d[_0x27a5('0x43')],null))[_0x27a5('0x21')](respondWithResult(_0xc78ebe,null))[_0x27a5('0x3f')](handleError(_0xc78ebe,null));};exports[_0x27a5('0x46')]=function(_0x5b76e2,_0x31e299){return db[_0x27a5('0x27')][_0x27a5('0x47')]({'where':{'id':_0x5b76e2[_0x27a5('0x45')]['id']}})[_0x27a5('0x21')](handleEntityNotFound(_0x31e299,null))['then'](removeEntity(_0x31e299,null))[_0x27a5('0x3f')](handleError(_0x31e299,null));};exports['describe']=function(_0x4f7d7c,_0x972e2b){return db[_0x27a5('0x27')]['describe']()[_0x27a5('0x21')](respondWithResult(_0x972e2b,null))[_0x27a5('0x3f')](handleError(_0x972e2b,null));};
\ No newline at end of file
index 2e44912..a876599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43e1=['exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2414ff,_0x50b2f3){var _0x509e97=function(_0x2223f9){while(--_0x2223f9){_0x2414ff['push'](_0x2414ff['shift']());}};_0x509e97(++_0x50b2f3);}(_0x43e1,0xf3));var _0x143e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x43e1[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x143e('0x0'));var util=require(_0x143e('0x1'));var logger=require(_0x143e('0x2'))(_0x143e('0x3'));var moment=require(_0x143e('0x4'));var BPromise=require(_0x143e('0x5'));var rp=require(_0x143e('0x6'));var fs=require('fs');var path=require(_0x143e('0x7'));var rimraf=require(_0x143e('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappTransferReport.attributes');module[_0x143e('0x9')]=function(_0x533d69,_0x533709){return _0x533d69[_0x143e('0xa')](_0x143e('0xb'),attributes,{'tableName':_0x143e('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x143e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x499f=['./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x435850,_0x32aa47){var _0x5453e4=function(_0x17b32a){while(--_0x17b32a){_0x435850['push'](_0x435850['shift']());}};_0x5453e4(++_0x32aa47);}(_0x499f,0x172));var _0xf499=function(_0x2a2799,_0x5e25a8){_0x2a2799=_0x2a2799-0x0;var _0x17f761=_0x499f[_0x2a2799];return _0x17f761;};'use strict';var _=require(_0xf499('0x0'));var util=require(_0xf499('0x1'));var logger=require(_0xf499('0x2'))(_0xf499('0x3'));var moment=require(_0xf499('0x4'));var BPromise=require(_0xf499('0x5'));var rp=require(_0xf499('0x6'));var fs=require('fs');var path=require(_0xf499('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf499('0x8'));module[_0xf499('0x9')]=function(_0x212362,_0x30008e){return _0x212362[_0xf499('0xa')](_0xf499('0xb'),attributes,{'tableName':_0xf499('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xf499('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index f3d21ba..d698da8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8754=['../../config/logger','jayson/promise','client','http','request','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x4f3320,_0x3582c3){var _0x770275=function(_0x50bdc7){while(--_0x50bdc7){_0x4f3320['push'](_0x4f3320['shift']());}};_0x770275(++_0x3582c3);}(_0x8754,0x1b1));var _0x4875=function(_0x3ea7ec,_0x5b58ad){_0x3ea7ec=_0x3ea7ec-0x0;var _0x46e7b1=_0x8754[_0x3ea7ec];return _0x46e7b1;};'use strict';var _=require(_0x4875('0x0'));var util=require(_0x4875('0x1'));var moment=require(_0x4875('0x2'));var BPromise=require(_0x4875('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4875('0x4'));var db=require(_0x4875('0x5'))['db'];var utils=require(_0x4875('0x6'));var logger=require(_0x4875('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4875('0x8'));var client=jayson[_0x4875('0x9')][_0x4875('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25c1dc,_0x158842,_0xc9061b){return new BPromise(function(_0x4372c8,_0x33b798){return client[_0x4875('0xb')](_0x25c1dc,_0xc9061b)['then'](function(_0x391185){logger['info'](_0x4875('0xc'),_0x158842,_0x4875('0xd'));logger[_0x4875('0xe')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x158842,_0x4875('0xd'),JSON[_0x4875('0xf')](_0x391185));if(_0x391185[_0x4875('0x10')]){if(_0x391185[_0x4875('0x10')][_0x4875('0x11')]===0x1f4){logger[_0x4875('0x10')](_0x4875('0xc'),_0x158842,_0x391185['error'][_0x4875('0x12')]);return _0x33b798(_0x391185['error'][_0x4875('0x12')]);}logger[_0x4875('0x10')](_0x4875('0xc'),_0x158842,_0x391185['error'][_0x4875('0x12')]);return _0x4372c8(_0x391185[_0x4875('0x10')]['message']);}else{logger[_0x4875('0x13')](_0x4875('0xc'),_0x158842,'request\x20sent');_0x4372c8(_0x391185[_0x4875('0x14')][_0x4875('0x12')]);}})[_0x4875('0x15')](function(_0x184faa){logger[_0x4875('0x10')](_0x4875('0xc'),_0x158842,_0x184faa);_0x33b798(_0x184faa);});});}
\ No newline at end of file
+var _0x050f=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappTransferReport,\x20%s,\x20%s'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x050f,0x17a));var _0xf050=function(_0x479d90,_0x16129d){_0x479d90=_0x479d90-0x0;var _0x13f95c=_0x050f[_0x479d90];return _0x13f95c;};'use strict';var _=require('lodash');var util=require(_0xf050('0x0'));var moment=require(_0xf050('0x1'));var BPromise=require(_0xf050('0x2'));var rs=require(_0xf050('0x3'));var fs=require('fs');var Redis=require(_0xf050('0x4'));var db=require(_0xf050('0x5'))['db'];var utils=require(_0xf050('0x6'));var logger=require(_0xf050('0x7'))(_0xf050('0x8'));var config=require(_0xf050('0x9'));var jayson=require(_0xf050('0xa'));var client=jayson[_0xf050('0xb')][_0xf050('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5b072e,_0x109cba,_0x1d3e09){return new BPromise(function(_0x130fc1,_0x215ed4){return client[_0xf050('0xd')](_0x5b072e,_0x1d3e09)[_0xf050('0xe')](function(_0x3a2092){logger[_0xf050('0xf')]('WhatsappTransferReport,\x20%s,\x20%s',_0x109cba,_0xf050('0x10'));logger[_0xf050('0x11')](_0xf050('0x12'),_0x109cba,_0xf050('0x10'),JSON[_0xf050('0x13')](_0x3a2092));if(_0x3a2092['error']){if(_0x3a2092[_0xf050('0x14')]['code']===0x1f4){logger[_0xf050('0x14')](_0xf050('0x15'),_0x109cba,_0x3a2092[_0xf050('0x14')][_0xf050('0x16')]);return _0x215ed4(_0x3a2092[_0xf050('0x14')][_0xf050('0x16')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x109cba,_0x3a2092[_0xf050('0x14')][_0xf050('0x16')]);return _0x130fc1(_0x3a2092[_0xf050('0x14')][_0xf050('0x16')]);}else{logger[_0xf050('0xf')](_0xf050('0x15'),_0x109cba,'request\x20sent');_0x130fc1(_0x3a2092[_0xf050('0x17')][_0xf050('0x16')]);}})[_0xf050('0x18')](function(_0x5d56ad){logger['error'](_0xf050('0x15'),_0x109cba,_0x5d56ad);_0x215ed4(_0x5d56ad);});});}
\ No newline at end of file
index aa9c011..17fa68e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9937=['error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start','Online\x20apps:','map','online','name','join','Offline\x20apps:','status','None','./config/seedDB','default','./config/license'];(function(_0x115c32,_0x185adf){var _0x351aca=function(_0x44fed9){while(--_0x44fed9){_0x115c32['push'](_0x115c32['shift']());}};_0x351aca(++_0x185adf);}(_0x9937,0x158));var _0x7993=function(_0x455121,_0x49f798){_0x455121=_0x455121-0x0;var _0x59173b=_0x9937[_0x455121];return _0x59173b;};'use strict';var _=require(_0x7993('0x0'));var mysqldb=require(_0x7993('0x1'));var rpc=require(_0x7993('0x2'));var config=require(_0x7993('0x3'));var logger=require(_0x7993('0x4'))('app');var pm2=require(_0x7993('0x5'));var pm2Config=require(_0x7993('0x6'));var schedule=require(_0x7993('0x7'));var chat=require(_0x7993('0x8'));var whatsapp=require(_0x7993('0x9'));var transcribe=require(_0x7993('0xa'));function main(){return mysqldb['db'][_0x7993('0xb')][_0x7993('0xc')]()[_0x7993('0xd')](function(){return rpc[_0x7993('0xe')]();})['then'](function(_0x53e167){logger[_0x7993('0xf')](_0x53e167);return chat[_0x7993('0x10')]();})['then'](function(){return whatsapp[_0x7993('0x10')]();})[_0x7993('0xd')](function(){return schedule[_0x7993('0x10')]();})[_0x7993('0xd')](function(){return transcribe[_0x7993('0x10')]();})[_0x7993('0xd')](function(_0x221bb0){logger[_0x7993('0xf')](_0x221bb0);return pm2[_0x7993('0x10')](pm2Config);})[_0x7993('0xd')](function(_0x2ffe61){logger[_0x7993('0xf')](_0x7993('0x11'),_[_0x7993('0x12')](_['filter'](_0x2ffe61,{'status':_0x7993('0x13')}),_0x7993('0x14'))[_0x7993('0x15')]());logger[_0x7993('0xf')](_0x7993('0x16'),_[_0x7993('0x12')](_['filter'](_0x2ffe61,function(_0x13bf7c){return _0x13bf7c[_0x7993('0x17')]!=='online';}),_0x7993('0x14'))['join']()||_0x7993('0x18'));config['seedDB']&&require(_0x7993('0x19'))[_0x7993('0x1a')]();require(_0x7993('0x1b'))['default']();})['catch'](function(_0x484f33){logger[_0x7993('0x1c')](_0x7993('0x1d'),_0x484f33);process[_0x7993('0x1e')](0x1);});}main();
\ No newline at end of file
+var _0x1ea0=['None','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./rpc','./config/environment','./config/pm2/config','./config/schedule/transcribe','then','info','start','map','filter','online','Offline\x20apps:','name','join'];(function(_0x2ad680,_0x33a474){var _0x2c7f7e=function(_0x4489ca){while(--_0x4489ca){_0x2ad680['push'](_0x2ad680['shift']());}};_0x2c7f7e(++_0x33a474);}(_0x1ea0,0xba));var _0x01ea=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x1ea0[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require('lodash');var mysqldb=require(_0x01ea('0x0'));var rpc=require(_0x01ea('0x1'));var config=require(_0x01ea('0x2'));var logger=require('./config/logger')('app');var pm2=require('./config/pm2');var pm2Config=require(_0x01ea('0x3'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x01ea('0x4'));function main(){return mysqldb['db']['sequelize']['sync']()[_0x01ea('0x5')](function(){return rpc['listen']();})[_0x01ea('0x5')](function(_0x3e6328){logger[_0x01ea('0x6')](_0x3e6328);return chat['start']();})['then'](function(){return whatsapp[_0x01ea('0x7')]();})[_0x01ea('0x5')](function(){return schedule[_0x01ea('0x7')]();})[_0x01ea('0x5')](function(){return transcribe['start']();})['then'](function(_0x3c223d){logger[_0x01ea('0x6')](_0x3c223d);return pm2['start'](pm2Config);})[_0x01ea('0x5')](function(_0xc66664){logger[_0x01ea('0x6')]('Online\x20apps:',_[_0x01ea('0x8')](_[_0x01ea('0x9')](_0xc66664,{'status':_0x01ea('0xa')}),'name')['join']());logger[_0x01ea('0x6')](_0x01ea('0xb'),_[_0x01ea('0x8')](_[_0x01ea('0x9')](_0xc66664,function(_0xbb909a){return _0xbb909a['status']!==_0x01ea('0xa');}),_0x01ea('0xc'))[_0x01ea('0xd')]()||_0x01ea('0xe'));config['seedDB']&&require('./config/seedDB')[_0x01ea('0xf')]();require('./config/license')[_0x01ea('0xf')]();})[_0x01ea('0x10')](function(_0x42fc13){logger[_0x01ea('0x11')](_0x01ea('0x12'),_0x42fc13);process[_0x01ea('0x13')](0x1);});}main();
\ No newline at end of file
index 11af610..53956ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacbc=['phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','params','closed','disposition','then','status','unmanaged','Unmanaged.','catch','headers','authorization','Basic','find','authenticate','json','startsWith','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','User','sub','Setting','findOne','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','update','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','/dashboards/general','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','promisify','sign','secret','payload','options','verify','randomBytes','toString','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','util','moment','secrets','session','role','fullname','name','internal','userpic','permissions','md5secret','voicePause','mailPause','faxPause','smsPause','openchannelPause','showWebBar','lastLoginAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone'];(function(_0x221ba2,_0x79208){var _0x47d08e=function(_0xaf14ee){while(--_0xaf14ee){_0x221ba2['push'](_0x221ba2['shift']());}};_0x47d08e(++_0x79208);}(_0xacbc,0xdc));var _0xcacb=function(_0x3f93b0,_0x559b3e){_0x3f93b0=_0x3f93b0-0x0;var _0x585701=_0xacbc[_0x3f93b0];return _0x585701;};'use strict';var db=require(_0xcacb('0x0'))['db'];var config=require(_0xcacb('0x1'));var hardwareConf=require(_0xcacb('0x2'));var licenseUtil=require(_0xcacb('0x3'));var encryptor=require('../encryptor');var _=require(_0xcacb('0x4'));var jwt=require(_0xcacb('0x5'));var expressJwt=require(_0xcacb('0x6'));var compose=require(_0xcacb('0x7'));var basicAuth=require(_0xcacb('0x8'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require(_0xcacb('0x9'));var moment=require(_0xcacb('0xa'));var validateJwt=expressJwt({'secret':config[_0xcacb('0xb')][_0xcacb('0xc')]});var userAttributes=['id',_0xcacb('0xd'),_0xcacb('0xe'),_0xcacb('0xf'),_0xcacb('0x10'),'email',_0xcacb('0x11'),_0xcacb('0x12'),_0xcacb('0x13'),_0xcacb('0x14'),'chatPause',_0xcacb('0x15'),_0xcacb('0x16'),_0xcacb('0x17'),_0xcacb('0x18'),'pauseType',_0xcacb('0x19'),_0xcacb('0x1a'),'lastPauseAt',_0xcacb('0x1b'),_0xcacb('0x1c'),_0xcacb('0x1d'),_0xcacb('0x1e'),_0xcacb('0x1f'),_0xcacb('0x20'),_0xcacb('0x21'),_0xcacb('0x22'),_0xcacb('0x23'),'phoneBarEnableSettings',_0xcacb('0x24'),_0xcacb('0x25'),_0xcacb('0x26'),_0xcacb('0x27'),_0xcacb('0x28'),'interface',_0xcacb('0x29'),_0xcacb('0x2a'),_0xcacb('0x2b'),_0xcacb('0x2c'),_0xcacb('0x2d'),_0xcacb('0x2e'),_0xcacb('0x2f')];exports[_0xcacb('0x30')]=function(){return this[_0xcacb('0x31')](!![])[_0xcacb('0x32')](function(_0x3a8a32,_0x78f5e6,_0x312c6c){if(_0x3a8a32[_0xcacb('0x33')]){_0x312c6c();}else{return db[_0xcacb('0x34')]['findOne']({'where':{'id':_0x3a8a32[_0xcacb('0x35')]['id']},'attributes':['id',_0xcacb('0x36'),_0xcacb('0x37')],'raw':!![]})[_0xcacb('0x38')](function(_0x44b840){if(_0x44b840&&_0x44b840['closed']){return _0x78f5e6[_0xcacb('0x39')](_0x44b840['disposition']===_0xcacb('0x3a')?0x195:0x193)['json']({'message':_0x44b840['disposition']===_0xcacb('0x3a')?_0xcacb('0x3b'):'Forbidden.'});}else{_0x312c6c();}})[_0xcacb('0x3c')](function(_0x571ef6){_0x312c6c(_0x571ef6);});}});};exports[_0xcacb('0x31')]=function isAuthenticated(_0xa059d0){return compose()[_0xcacb('0x32')](function(_0x4573f9,_0x1094f9,_0x71cbd6){var _0x166e0c;if(_0x4573f9[_0xcacb('0x3d')]['authorization']){if(_['startsWith'](_0x4573f9['headers'][_0xcacb('0x3e')],_0xcacb('0x3f'))){var _0x151b99=basicAuth(_0x4573f9);db['User'][_0xcacb('0x40')]({'where':{'name':_0x151b99[_0xcacb('0xf')]}})[_0xcacb('0x38')](function(_0x11acc7){if(!_0x11acc7||!_0x11acc7[_0xcacb('0x41')](_0x151b99['pass'])){return _0x1094f9[_0xcacb('0x39')](0x191)[_0xcacb('0x42')]({'message':'Wrong\x20credentials.'});}_0x4573f9[_0xcacb('0x33')]={'id':_0x11acc7['id']};_0x71cbd6();})[_0xcacb('0x3c')](function(_0x4a91a7){_0x71cbd6(_0x4a91a7);});}else if(_[_0xcacb('0x43')](_0x4573f9['headers'][_0xcacb('0x3e')],_0xcacb('0x44'))){validateJwt(_0x4573f9,_0x1094f9,_0x71cbd6);}else{if(_0xa059d0){_0x71cbd6();}else{return _0x1094f9['status'](0x193)[_0xcacb('0x42')]({'message':_0xcacb('0x45')});}}}else if(_0x4573f9[_0xcacb('0x46')][_0xcacb('0x47')]){try{var _0x126d7a={'audience':hardwareConf[_0xcacb('0x48')](),'issuer':hardwareConf[_0xcacb('0x48')]()};verifyJwt(_0x4573f9[_0xcacb('0x46')]['apikey'],_0x126d7a)[_0xcacb('0x38')](function(_0xdde94d){return db[_0xcacb('0x49')][_0xcacb('0x40')]({'where':{'id':_0xdde94d[_0xcacb('0x4a')]}})[_0xcacb('0x38')](function(_0xeabdbc){_0x166e0c=_0xeabdbc;return db[_0xcacb('0x4b')][_0xcacb('0x4c')]({'where':{'id':0x1},'attributes':[_0xcacb('0x4d'),_0xcacb('0x4e')],'raw':!![]});})[_0xcacb('0x38')](function(_0x161c40){if(!_0x166e0c||!_[_0xcacb('0x4f')](_0x166e0c[_0xcacb('0x50')],_0xdde94d[_0xcacb('0x51')])){return _0x1094f9['status'](0x191)[_0xcacb('0x42')]({'message':_0xcacb('0x52')});}if(_0x166e0c[_0xcacb('0x53')]){return _0x1094f9['status'](0x191)['json']({'message':_0xcacb('0x54')});}if(_0x166e0c[_0xcacb('0x55')]){if(_0x161c40['blockDuration']>0x0){if(moment(_0x166e0c[_0xcacb('0x56')])[_0xcacb('0x57')](_0x161c40[_0xcacb('0x4e')],_0xcacb('0x58'))>moment()){return _0x1094f9['status'](0x191)[_0xcacb('0x42')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x1094f9[_0xcacb('0x39')](0x191)[_0xcacb('0x42')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x4573f9['user']={'id':_0x166e0c['id']};_0x71cbd6();});})[_0xcacb('0x3c')](function(){return _0x1094f9[_0xcacb('0x39')](0x191)['json']({'message':_0xcacb('0x54')});});}catch(_0x21f9f8){_0x71cbd6(_0x21f9f8);}}else if(_0xa059d0){_0x71cbd6();}else{return _0x1094f9[_0xcacb('0x39')](0x193)[_0xcacb('0x42')]({'message':_0xcacb('0x45')});}})[_0xcacb('0x32')](function(_0x18fe48,_0x569f78,_0x4e39e2){if(_0x18fe48[_0xcacb('0x33')]){db['User']['find']({'where':{'id':_0x18fe48[_0xcacb('0x33')]['id']},'attributes':userAttributes})[_0xcacb('0x38')](function(_0x25def1){if(!_0x25def1){return _0x569f78[_0xcacb('0x39')](0x194)['json']({'message':_0xcacb('0x59')});}_0x18fe48['user']=_0x25def1;_0x4e39e2();})[_0xcacb('0x3c')](function(_0xa29601){_0x4e39e2(_0xa29601);});}else if(_0xa059d0){_0x4e39e2();}else{return _0x569f78['status'](0x194)[_0xcacb('0x42')]({'message':_0xcacb('0x5a')});}});};exports[_0xcacb('0x5b')]=function canUpdate(){return compose()[_0xcacb('0x32')](function(_0xf5bb1,_0x3b4c45,_0x977567){return licenseUtil['getLicense']()[_0xcacb('0x38')](function(_0x263157){if(_0x263157[_0xcacb('0x5c')]){_0x977567();}else{return _0x3b4c45[_0xcacb('0x39')](0x193)[_0xcacb('0x42')]({'message':_0xcacb('0x5d')});}})['catch'](function(_0x5989ee){_0x977567(_0x5989ee);});});};exports[_0xcacb('0x5e')]=function(_0x50c40f,_0x56c4f0,_0x1d6cfa){_0x50c40f[_0xcacb('0x5e')]=!![];return _0x1d6cfa();};exports['signToken']=function signToken(_0x1e455b){return signJwt(_0x1e455b);};exports[_0xcacb('0x5f')]=function(_0x2f0f0e,_0x4d2133){if(!_0x2f0f0e[_0xcacb('0x33')]){return _0x4d2133[_0xcacb('0x39')](0x194)[_0xcacb('0x42')]({'message':_0xcacb('0x60')});}var _0x17a305={'payload':{'id':_0x2f0f0e['user']['id'],'role':_0x2f0f0e['user']['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x17a305)[_0xcacb('0x38')](function(_0x705c89){_0x4d2133['cookie']('motion.token',_0x705c89);_0x4d2133['redirect'](_0xcacb('0x61'));})['catch'](function(_0x2eea42){return _0x4d2133[_0xcacb('0x39')](0x1f4)['send'](_0x2eea42);});};exports[_0xcacb('0x62')]=function(_0x1dd9be){if(_[_0xcacb('0x63')](_0x1dd9be['apiKeyNonce'])||_[_0xcacb('0x63')](_0x1dd9be[_0xcacb('0x64')])){return null;}else{return createJwt(_0x1dd9be);}};exports['generateApiKey']=function(_0x81cfc4){_0x81cfc4[_0xcacb('0x50')]=generateNonce();_0x81cfc4[_0xcacb('0x64')]=generateIssuedAt();return createJwt(_0x81cfc4);};exports[_0xcacb('0x65')]=function(_0x4b5cc7,_0x2c8cf4){var _0x5acbb4=_0x4b5cc7[_0xcacb('0x46')][_0xcacb('0x47')];if(_0x5acbb4){var _0x523e85={'nonce':_0x2c8cf4[_0xcacb('0x50')],'iat':_0x2c8cf4[_0xcacb('0x64')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xcacb('0x48')]()};return verifyJwt(_0x5acbb4,_0x523e85)[_0xcacb('0x38')](function(){return generateApiKey(_0x2c8cf4);});}else{throw{'message':_0xcacb('0x66')};}};exports[_0xcacb('0x67')]=function(_0x470d81){var _0x26d1c1=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x26d1c1[_0xcacb('0x68')](_0x470d81))throw new db['Sequelize'][(_0xcacb('0x69'))](_0xcacb('0x6a'));return;};exports[_0xcacb('0x6b')]=function(_0x299ab4,_0x42af88,_0x1ce40b){var _0x4a7a0f=encryptor[_0xcacb('0x6c')](_0x42af88)[_0xcacb('0x6d')](',');for(var _0x47f7df=0x0;_0x47f7df<_0x1ce40b;_0x47f7df++){if(!_0x4a7a0f[_0x47f7df])break;if(_0x299ab4[_0xcacb('0x6e')]()===_0x4a7a0f[_0x47f7df]['toLowerCase']()){var _0x44a3f4=util['format'](_0xcacb('0x6f'),_0x1ce40b);if(_0x1ce40b===0x1){_0x44a3f4='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db['Sequelize'][(_0xcacb('0x69'))](_0x44a3f4);}}return;};exports[_0xcacb('0x70')]=function(_0x4ddeb3,_0x33ecaa){var _0x586f7d=_0x33ecaa?encryptor[_0xcacb('0x6c')](_0x33ecaa)['split'](','):[];if(_0x586f7d[_0xcacb('0x71')]===0x5){_0x586f7d[_0xcacb('0x72')](-0x1,0x1);}_0x586f7d[_0xcacb('0x73')](_0x4ddeb3);return encryptor[_0xcacb('0x74')](_0x586f7d['join'](','));};function signJwt(_0x4ee76c){var _0x5257a7=BPromise[_0xcacb('0x75')](jwt[_0xcacb('0x76')],{'context':jwt});var _0x208051=_0x4ee76c[_0xcacb('0x77')]||config['secrets'][_0xcacb('0xc')];return new BPromise(function(_0x1a24a3,_0x5557dd){_0x5257a7(_0x4ee76c[_0xcacb('0x78')],_0x208051,_0x4ee76c[_0xcacb('0x79')])[_0xcacb('0x38')](function(_0x29e4fe){_0x1a24a3(_0x29e4fe);})[_0xcacb('0x3c')](function(_0x4b5a4c){_0x5557dd(_0x4b5a4c);});});}function verifyJwt(_0x1be16b,_0x424150,_0xce44d3){var _0x4e0322=BPromise[_0xcacb('0x75')](jwt[_0xcacb('0x7a')],{'context':jwt});var _0x402635=_0xce44d3||config['secrets'][_0xcacb('0xc')];return new BPromise(function(_0xc5749b,_0x1ef173){_0x4e0322(_0x1be16b,_0x402635,_0x424150)['then'](function(_0x4e1676){_0xc5749b(_0x4e1676);})[_0xcacb('0x3c')](function(_0x185d97){_0x1ef173(_0x185d97);});});}function generateNonce(){return crypto[_0xcacb('0x7b')](0x10)[_0xcacb('0x7c')]('hex');}function generateIssuedAt(){return Math[_0xcacb('0x7d')](Date[_0xcacb('0x7e')]()/0x3e8)[_0xcacb('0x7c')]();}function createJwt(_0x4146b3){var _0x24fac3={'payload':{'iat':_0x4146b3[_0xcacb('0x64')],'nonce':_0x4146b3[_0xcacb('0x50')]},'options':{'algorithm':_0xcacb('0x7f'),'subject':_0x4146b3['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0xcacb('0x48')]()}};return signJwt(_0x24fac3)[_0xcacb('0x38')](function(_0x3c427a){return{'iat':_0x4146b3[_0xcacb('0x64')],'nonce':_0x4146b3[_0xcacb('0x50')],'token':_0x3c427a};});}
\ No newline at end of file
+var _0x3bb3=['User','find','authenticate','json','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','query','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blocked','blockedAt','add','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','isNil','apiKeyIat','generateApiKey','apiKeyNonce','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','split','toLowerCase','format','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.','ValidationError','updatePasswordsHistory','decryptString','length','splice','encryptString','join','promisify','sign','secrets','payload','options','verify','randomBytes','toString','hex','floor','now','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','jsonwebtoken','composable-middleware','basic-auth','crypto','util','moment','session','role','name','internal','email','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','Forbidden.','catch','use','headers','authorization','startsWith'];(function(_0xf44655,_0x11c55d){var _0x1d5e4d=function(_0x4d155){while(--_0x4d155){_0xf44655['push'](_0xf44655['shift']());}};_0x1d5e4d(++_0x11c55d);}(_0x3bb3,0x144));var _0x33bb=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x3bb3[_0x1035c1];return _0x308d67;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x33bb('0x0'));var hardwareConf=require(_0x33bb('0x1'));var licenseUtil=require(_0x33bb('0x2'));var encryptor=require(_0x33bb('0x3'));var _=require('lodash');var jwt=require(_0x33bb('0x4'));var expressJwt=require('express-jwt');var compose=require(_0x33bb('0x5'));var basicAuth=require(_0x33bb('0x6'));var crypto=require(_0x33bb('0x7'));var BPromise=require('bluebird');var util=require(_0x33bb('0x8'));var moment=require(_0x33bb('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0x33bb('0xa')]});var userAttributes=['id',_0x33bb('0xb'),'fullname',_0x33bb('0xc'),_0x33bb('0xd'),_0x33bb('0xe'),_0x33bb('0xf'),_0x33bb('0x10'),'md5secret',_0x33bb('0x11'),_0x33bb('0x12'),_0x33bb('0x13'),_0x33bb('0x14'),_0x33bb('0x15'),_0x33bb('0x16'),_0x33bb('0x17'),_0x33bb('0x18'),_0x33bb('0x19'),_0x33bb('0x1a'),_0x33bb('0x1b'),_0x33bb('0x1c'),_0x33bb('0x1d'),'alias',_0x33bb('0x1e'),'phoneBarAutoAnswerDelay','phoneBarDnd',_0x33bb('0x1f'),_0x33bb('0x20'),'phoneBarEnableSettings',_0x33bb('0x21'),_0x33bb('0x22'),_0x33bb('0x23'),'phoneBarRemoteControlPort','hotdesk','interface','userProfileId',_0x33bb('0x24'),'settingsEnabled',_0x33bb('0x25'),_0x33bb('0x26'),_0x33bb('0x27'),'downloadAttachments'];exports[_0x33bb('0x28')]=function(){return this[_0x33bb('0x29')](!![])['use'](function(_0x5db4c,_0x3011ff,_0x4afeee){if(_0x5db4c[_0x33bb('0x2a')]){_0x4afeee();}else{return db[_0x33bb('0x2b')][_0x33bb('0x2c')]({'where':{'id':_0x5db4c[_0x33bb('0x2d')]['id']},'attributes':['id',_0x33bb('0x2e'),_0x33bb('0x2f')],'raw':!![]})[_0x33bb('0x30')](function(_0x3dfb0c){if(_0x3dfb0c&&_0x3dfb0c[_0x33bb('0x2e')]){return _0x3011ff[_0x33bb('0x31')](_0x3dfb0c[_0x33bb('0x2f')]===_0x33bb('0x32')?0x195:0x193)['json']({'message':_0x3dfb0c[_0x33bb('0x2f')]===_0x33bb('0x32')?'Unmanaged.':_0x33bb('0x33')});}else{_0x4afeee();}})[_0x33bb('0x34')](function(_0x168337){_0x4afeee(_0x168337);});}});};exports[_0x33bb('0x29')]=function isAuthenticated(_0x3e996a){return compose()[_0x33bb('0x35')](function(_0x1689af,_0x1d00a3,_0x815bf7){var _0x5abfed;if(_0x1689af[_0x33bb('0x36')][_0x33bb('0x37')]){if(_[_0x33bb('0x38')](_0x1689af[_0x33bb('0x36')][_0x33bb('0x37')],'Basic')){var _0x36ab96=basicAuth(_0x1689af);db[_0x33bb('0x39')][_0x33bb('0x3a')]({'where':{'name':_0x36ab96[_0x33bb('0xc')]}})[_0x33bb('0x30')](function(_0x2a966f){if(!_0x2a966f||!_0x2a966f[_0x33bb('0x3b')](_0x36ab96['pass'])){return _0x1d00a3[_0x33bb('0x31')](0x191)[_0x33bb('0x3c')]({'message':_0x33bb('0x3d')});}_0x1689af[_0x33bb('0x2a')]={'id':_0x2a966f['id']};_0x815bf7();})[_0x33bb('0x34')](function(_0x4d749e){_0x815bf7(_0x4d749e);});}else if(_[_0x33bb('0x38')](_0x1689af['headers']['authorization'],_0x33bb('0x3e'))){validateJwt(_0x1689af,_0x1d00a3,_0x815bf7);}else{if(_0x3e996a){_0x815bf7();}else{return _0x1d00a3[_0x33bb('0x31')](0x193)['json']({'message':_0x33bb('0x3f')});}}}else if(_0x1689af['query'][_0x33bb('0x40')]){try{var _0x3fb0f7={'audience':hardwareConf[_0x33bb('0x41')](),'issuer':hardwareConf[_0x33bb('0x41')]()};verifyJwt(_0x1689af[_0x33bb('0x42')][_0x33bb('0x40')],_0x3fb0f7)[_0x33bb('0x30')](function(_0x186590){return db[_0x33bb('0x39')][_0x33bb('0x3a')]({'where':{'id':_0x186590[_0x33bb('0x43')]}})[_0x33bb('0x30')](function(_0x4f805f){_0x5abfed=_0x4f805f;return db[_0x33bb('0x44')]['findOne']({'where':{'id':0x1},'attributes':[_0x33bb('0x45'),_0x33bb('0x46')],'raw':!![]});})[_0x33bb('0x30')](function(_0x3184d9){if(!_0x5abfed||!_[_0x33bb('0x47')](_0x5abfed['apiKeyNonce'],_0x186590[_0x33bb('0x48')])){return _0x1d00a3[_0x33bb('0x31')](0x191)[_0x33bb('0x3c')]({'message':_0x33bb('0x49')});}if(_0x5abfed[_0x33bb('0x4a')]){return _0x1d00a3[_0x33bb('0x31')](0x191)[_0x33bb('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x5abfed[_0x33bb('0x4b')]){if(_0x3184d9[_0x33bb('0x46')]>0x0){if(moment(_0x5abfed[_0x33bb('0x4c')])[_0x33bb('0x4d')](_0x3184d9['blockDuration'],'minutes')>moment()){return _0x1d00a3[_0x33bb('0x31')](0x191)[_0x33bb('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x1d00a3[_0x33bb('0x31')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});}}_0x1689af[_0x33bb('0x2a')]={'id':_0x5abfed['id']};_0x815bf7();});})['catch'](function(){return _0x1d00a3['status'](0x191)[_0x33bb('0x3c')]({'message':_0x33bb('0x4e')});});}catch(_0x4b726d){_0x815bf7(_0x4b726d);}}else if(_0x3e996a){_0x815bf7();}else{return _0x1d00a3[_0x33bb('0x31')](0x193)[_0x33bb('0x3c')]({'message':_0x33bb('0x3f')});}})['use'](function(_0x202bb4,_0x2a55eb,_0x558a39){if(_0x202bb4[_0x33bb('0x2a')]){db['User'][_0x33bb('0x3a')]({'where':{'id':_0x202bb4[_0x33bb('0x2a')]['id']},'attributes':userAttributes})[_0x33bb('0x30')](function(_0x5d6f5c){if(!_0x5d6f5c){return _0x2a55eb[_0x33bb('0x31')](0x194)['json']({'message':_0x33bb('0x4f')});}_0x202bb4[_0x33bb('0x2a')]=_0x5d6f5c;_0x558a39();})[_0x33bb('0x34')](function(_0x1dd3a8){_0x558a39(_0x1dd3a8);});}else if(_0x3e996a){_0x558a39();}else{return _0x2a55eb[_0x33bb('0x31')](0x194)['json']({'message':_0x33bb('0x50')});}});};exports[_0x33bb('0x51')]=function canUpdate(){return compose()[_0x33bb('0x35')](function(_0x20ebb6,_0x15d365,_0x4d8a1d){return licenseUtil[_0x33bb('0x52')]()['then'](function(_0x3b3c8a){if(_0x3b3c8a[_0x33bb('0x53')]){_0x4d8a1d();}else{return _0x15d365[_0x33bb('0x31')](0x193)['json']({'message':_0x33bb('0x54')});}})[_0x33bb('0x34')](function(_0x5442aa){_0x4d8a1d(_0x5442aa);});});};exports[_0x33bb('0x55')]=function(_0x196f2e,_0x3bc5ad,_0x3c3650){_0x196f2e[_0x33bb('0x55')]=!![];return _0x3c3650();};exports[_0x33bb('0x56')]=function signToken(_0x31f261){return signJwt(_0x31f261);};exports[_0x33bb('0x57')]=function(_0x5d54b9,_0x47fac1){if(!_0x5d54b9[_0x33bb('0x2a')]){return _0x47fac1[_0x33bb('0x31')](0x194)['json']({'message':_0x33bb('0x58')});}var _0x3cee61={'payload':{'id':_0x5d54b9[_0x33bb('0x2a')]['id'],'role':_0x5d54b9[_0x33bb('0x2a')][_0x33bb('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x3cee61)[_0x33bb('0x30')](function(_0x272bef){_0x47fac1[_0x33bb('0x59')](_0x33bb('0x5a'),_0x272bef);_0x47fac1[_0x33bb('0x5b')](_0x33bb('0x5c'));})[_0x33bb('0x34')](function(_0x39361d){return _0x47fac1['status'](0x1f4)[_0x33bb('0x5d')](_0x39361d);});};exports['retrieveApiKey']=function(_0x54ff09){if(_[_0x33bb('0x5e')](_0x54ff09['apiKeyNonce'])||_[_0x33bb('0x5e')](_0x54ff09[_0x33bb('0x5f')])){return null;}else{return createJwt(_0x54ff09);}};exports[_0x33bb('0x60')]=function(_0x1d35cf){_0x1d35cf[_0x33bb('0x61')]=generateNonce();_0x1d35cf[_0x33bb('0x5f')]=generateIssuedAt();return createJwt(_0x1d35cf);};exports['regenerateApiKey']=function(_0x484acd,_0x5e21f1){var _0x4a32f1=_0x484acd[_0x33bb('0x42')][_0x33bb('0x40')];if(_0x4a32f1){var _0x597e0a={'nonce':_0x5e21f1[_0x33bb('0x61')],'iat':_0x5e21f1[_0x33bb('0x5f')],'audience':hardwareConf[_0x33bb('0x41')](),'issuer':hardwareConf[_0x33bb('0x41')]()};return verifyJwt(_0x4a32f1,_0x597e0a)[_0x33bb('0x30')](function(){return generateApiKey(_0x5e21f1);});}else{throw{'message':_0x33bb('0x62')};}};exports[_0x33bb('0x63')]=function(_0x436ff8){var _0x359327=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x359327[_0x33bb('0x64')](_0x436ff8))throw new db[(_0x33bb('0x65'))]['ValidationError'](_0x33bb('0x66'));return;};exports[_0x33bb('0x67')]=function(_0x105f85,_0x20e8b9,_0x4f158c){var _0x383300=encryptor['decryptString'](_0x20e8b9)[_0x33bb('0x68')](',');for(var _0x5ee43f=0x0;_0x5ee43f<_0x4f158c;_0x5ee43f++){if(!_0x383300[_0x5ee43f])break;if(_0x105f85['toLowerCase']()===_0x383300[_0x5ee43f][_0x33bb('0x69')]()){var _0x5ebeb1=util[_0x33bb('0x6a')](_0x33bb('0x6b'),_0x4f158c);if(_0x4f158c===0x1){_0x5ebeb1=_0x33bb('0x6c');}throw new db['Sequelize'][(_0x33bb('0x6d'))](_0x5ebeb1);}}return;};exports[_0x33bb('0x6e')]=function(_0x378590,_0x4da819){var _0x47adc2=_0x4da819?encryptor[_0x33bb('0x6f')](_0x4da819)[_0x33bb('0x68')](','):[];if(_0x47adc2[_0x33bb('0x70')]===0x5){_0x47adc2[_0x33bb('0x71')](-0x1,0x1);}_0x47adc2['unshift'](_0x378590);return encryptor[_0x33bb('0x72')](_0x47adc2[_0x33bb('0x73')](','));};function signJwt(_0x3b6bdc){var _0x2e84d4=BPromise[_0x33bb('0x74')](jwt[_0x33bb('0x75')],{'context':jwt});var _0x32875c=_0x3b6bdc['secret']||config[_0x33bb('0x76')][_0x33bb('0xa')];return new BPromise(function(_0x301cc2,_0x5187e8){_0x2e84d4(_0x3b6bdc[_0x33bb('0x77')],_0x32875c,_0x3b6bdc[_0x33bb('0x78')])[_0x33bb('0x30')](function(_0x49f2e2){_0x301cc2(_0x49f2e2);})[_0x33bb('0x34')](function(_0x1f1d9b){_0x5187e8(_0x1f1d9b);});});}function verifyJwt(_0x393ca0,_0x44c6ee,_0x5e5457){var _0x1bce12=BPromise[_0x33bb('0x74')](jwt[_0x33bb('0x79')],{'context':jwt});var _0x37418a=_0x5e5457||config['secrets']['session'];return new BPromise(function(_0x540594,_0x3fe27b){_0x1bce12(_0x393ca0,_0x37418a,_0x44c6ee)[_0x33bb('0x30')](function(_0x141970){_0x540594(_0x141970);})[_0x33bb('0x34')](function(_0x4f2769){_0x3fe27b(_0x4f2769);});});}function generateNonce(){return crypto[_0x33bb('0x7a')](0x10)[_0x33bb('0x7b')](_0x33bb('0x7c'));}function generateIssuedAt(){return Math[_0x33bb('0x7d')](Date[_0x33bb('0x7e')]()/0x3e8)[_0x33bb('0x7b')]();}function createJwt(_0x514a4c){var _0x28ac1f={'payload':{'iat':_0x514a4c[_0x33bb('0x5f')],'nonce':_0x514a4c[_0x33bb('0x61')]},'options':{'algorithm':'HS512','subject':_0x514a4c['id'][_0x33bb('0x7b')](),'issuer':hardwareConf[_0x33bb('0x41')](),'audience':hardwareConf[_0x33bb('0x41')]()}};return signJwt(_0x28ac1f)[_0x33bb('0x30')](function(_0x36bc6b){return{'iat':_0x514a4c[_0x33bb('0x5f')],'nonce':_0x514a4c[_0x33bb('0x61')],'token':_0x36bc6b};});}
\ No newline at end of file
index 8db43aa..2c005a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2399=['encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','write','end','final','binary','close','unlink','decryptFile','createReadStream','encryptString','secret','createDecipher','base64','utf8','bluebird','lodash','../../config/logger','session','aes-256-ctr','aes192'];(function(_0x3dcf10,_0x42262d){var _0x5a632e=function(_0x2d1c0b){while(--_0x2d1c0b){_0x3dcf10['push'](_0x3dcf10['shift']());}};_0x5a632e(++_0x42262d);}(_0x2399,0xda));var _0x9239=function(_0x21e79a,_0x5a7990){_0x21e79a=_0x21e79a-0x0;var _0x506c02=_0x2399[_0x21e79a];return _0x506c02;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x9239('0x0'));var _=require(_0x9239('0x1'));var config=require('../../config/environment');var logger=require(_0x9239('0x2'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x9239('0x3')],'algorithm':_0x9239('0x4')};const fileOptions={'algorithm':_0x9239('0x5')};if(config[_0x9239('0x6')]&&config[_0x9239('0x6')][_0x9239('0x7')]){var isSupported=isAlgorithmSupported(config[_0x9239('0x6')][_0x9239('0x7')]);if(isSupported){fileOptions[_0x9239('0x7')]=config[_0x9239('0x6')][_0x9239('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x9239('0x8')](config[_0x9239('0x6')][_0x9239('0x7')],_0x9239('0x9'),supportedAlgorithms);}}function isASupportedCipher(_0x140b1b){return AES_SUPPORTED_RX[_0x9239('0xa')](_0x140b1b);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x9239('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x1ef9f7){return getSupportedCiphers()[_0x9239('0xc')](_0x1ef9f7)>-0x1;}function combineOptions(_0x245811){var _0x147de0={};for(var _0x316027 in fileOptions){if(fileOptions[_0x9239('0xd')](_0x316027)){_0x147de0[_0x316027]=fileOptions[_0x316027];}}if(_0x245811){for(var _0x26d6b6 in _0x245811){if(_0x245811[_0x9239('0xd')](_0x26d6b6)){_0x147de0[_0x26d6b6]=_0x245811[_0x26d6b6];}}}return _0x147de0;}exports[_0x9239('0xe')]=function(_0x212c2d,_0x11a3e5,_0x25b011,_0x2d3788){return new BPromise(function(_0x573d0c,_0xcf2537){_0x2d3788=combineOptions(_0x2d3788);var _0x2d429c=new Buffer(_0x25b011);var _0x84ec9d=fs['createReadStream'](_0x212c2d);var _0x2a5408=fs[_0x9239('0xf')](_0x11a3e5);var _0x55b55f=crypto[_0x9239('0x10')](_0x2d3788[_0x9239('0x7')],_0x2d429c);_0x84ec9d['on'](_0x9239('0x11'),function(_0xe66723){var _0x34f4b1=new Buffer(_0x55b55f[_0x9239('0x12')](_0xe66723),'binary');_0x2a5408[_0x9239('0x13')](_0x34f4b1);});_0x84ec9d['on'](_0x9239('0x14'),function(){try{var _0x2dfe36=new Buffer(_0x55b55f[_0x9239('0x15')](_0x9239('0x16')),_0x9239('0x16'));_0x2a5408['write'](_0x2dfe36);_0x2a5408[_0x9239('0x14')]();_0x2a5408['on'](_0x9239('0x17'),function(){return _0x573d0c(_0x11a3e5);});}catch(_0x563033){fs[_0x9239('0x18')](_0x11a3e5);return _0xcf2537(_0x563033);}});});};exports[_0x9239('0x19')]=function(_0x4a96e7,_0x1a2e91,_0x252889,_0x2f270d){return new BPromise(function(_0x38c6e4,_0x39909e){_0x2f270d=combineOptions(_0x2f270d);var _0x53d40f=new Buffer(_0x252889);var _0x3c467c=fs[_0x9239('0x1a')](_0x4a96e7);var _0x39ae7b=fs[_0x9239('0xf')](_0x1a2e91);var _0x57394a=crypto['createDecipher'](_0x2f270d[_0x9239('0x7')],_0x53d40f);_0x3c467c['on']('data',function(_0x187db8){var _0x51738a=new Buffer(_0x57394a['update'](_0x187db8),_0x9239('0x16'));_0x39ae7b[_0x9239('0x13')](_0x51738a);});_0x3c467c['on']('end',function(){try{var _0x2c636d=new Buffer(_0x57394a[_0x9239('0x15')]('binary'),_0x9239('0x16'));_0x39ae7b[_0x9239('0x13')](_0x2c636d);_0x39ae7b[_0x9239('0x14')]();_0x39ae7b['on'](_0x9239('0x17'),function(){return _0x38c6e4(_0x1a2e91);});}catch(_0x3651a0){fs[_0x9239('0x18')](_0x1a2e91);return _0x39909e(_0x3651a0);}});});};exports[_0x9239('0x1b')]=function(_0x34b108,_0x47ffde,_0x8caaa8){var _0x27bbfc=_0x8caaa8||stringOptions[_0x9239('0x7')];var _0x2e040d=_0x47ffde||stringOptions[_0x9239('0x1c')];var _0x4a9dcd=crypto['createCipher'](_0x27bbfc,_0x2e040d);var _0x958e92=_0x4a9dcd[_0x9239('0x12')](_0x34b108,'utf8','base64');_0x958e92+=_0x4a9dcd[_0x9239('0x15')]('base64');return _0x958e92;};exports['decryptString']=function(_0x3d7944,_0xfb55a0,_0x1c462a){var _0x392f90=_0x1c462a||stringOptions[_0x9239('0x7')];var _0x24cc3c=_0xfb55a0||stringOptions[_0x9239('0x1c')];var _0x5e35bc=crypto[_0x9239('0x1d')](_0x392f90,_0x24cc3c);var _0x34a625=_0x5e35bc[_0x9239('0x12')](_0x3d7944,_0x9239('0x1e'),_0x9239('0x1f'));_0x34a625+=_0x5e35bc[_0x9239('0x15')](_0x9239('0x1f'));return _0x34a625;};
\ No newline at end of file
+var _0x7448=['createCipher','data','update','write','end','binary','close','decryptFile','createWriteStream','createDecipher','final','unlink','secret','utf8','base64','decryptString','crypto','lodash','../../config/environment','../../config/logger','app','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','hasOwnProperty','encryptFile'];(function(_0x25d433,_0x412041){var _0x547774=function(_0x10b443){while(--_0x10b443){_0x25d433['push'](_0x25d433['shift']());}};_0x547774(++_0x412041);}(_0x7448,0x127));var _0x8744=function(_0x3e6141,_0x4e159d){_0x3e6141=_0x3e6141-0x0;var _0x3d207=_0x7448[_0x3e6141];return _0x3d207;};'use strict';var crypto=require(_0x8744('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x8744('0x1'));var config=require(_0x8744('0x2'));var logger=require(_0x8744('0x3'))(_0x8744('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x8744('0x5')};const fileOptions={'algorithm':_0x8744('0x6')};if(config[_0x8744('0x7')]&&config['encrypt'][_0x8744('0x8')]){var isSupported=isAlgorithmSupported(config[_0x8744('0x7')][_0x8744('0x8')]);if(isSupported){fileOptions[_0x8744('0x8')]=config[_0x8744('0x7')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x8744('0x9')](',\x20');logger[_0x8744('0xa')](config[_0x8744('0x7')]['algorithm'],_0x8744('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x35d479){return AES_SUPPORTED_RX[_0x8744('0xc')](_0x35d479);}function getSupportedCiphers(){return crypto['getCiphers']()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x447dd2){return getSupportedCiphers()['indexOf'](_0x447dd2)>-0x1;}function combineOptions(_0x32735d){var _0x222d7c={};for(var _0x26b08c in fileOptions){if(fileOptions[_0x8744('0xd')](_0x26b08c)){_0x222d7c[_0x26b08c]=fileOptions[_0x26b08c];}}if(_0x32735d){for(var _0x32cd47 in _0x32735d){if(_0x32735d['hasOwnProperty'](_0x32cd47)){_0x222d7c[_0x32cd47]=_0x32735d[_0x32cd47];}}}return _0x222d7c;}exports[_0x8744('0xe')]=function(_0x186b3d,_0x27e45e,_0x399f0e,_0x3acf69){return new BPromise(function(_0x5d5193,_0x4f2404){_0x3acf69=combineOptions(_0x3acf69);var _0xd7b9e0=new Buffer(_0x399f0e);var _0x2dc1d5=fs['createReadStream'](_0x186b3d);var _0x50cfca=fs['createWriteStream'](_0x27e45e);var _0x57c1a4=crypto[_0x8744('0xf')](_0x3acf69['algorithm'],_0xd7b9e0);_0x2dc1d5['on'](_0x8744('0x10'),function(_0x53731e){var _0x34fbfb=new Buffer(_0x57c1a4[_0x8744('0x11')](_0x53731e),'binary');_0x50cfca[_0x8744('0x12')](_0x34fbfb);});_0x2dc1d5['on'](_0x8744('0x13'),function(){try{var _0x20cfb5=new Buffer(_0x57c1a4['final'](_0x8744('0x14')),_0x8744('0x14'));_0x50cfca[_0x8744('0x12')](_0x20cfb5);_0x50cfca[_0x8744('0x13')]();_0x50cfca['on'](_0x8744('0x15'),function(){return _0x5d5193(_0x27e45e);});}catch(_0xf89645){fs['unlink'](_0x27e45e);return _0x4f2404(_0xf89645);}});});};exports[_0x8744('0x16')]=function(_0x40af1c,_0x5651c5,_0x4f6496,_0xf29fd6){return new BPromise(function(_0x2797c,_0x48961f){_0xf29fd6=combineOptions(_0xf29fd6);var _0x15c336=new Buffer(_0x4f6496);var _0x48259b=fs['createReadStream'](_0x40af1c);var _0x5607a7=fs[_0x8744('0x17')](_0x5651c5);var _0x54a9a5=crypto[_0x8744('0x18')](_0xf29fd6[_0x8744('0x8')],_0x15c336);_0x48259b['on'](_0x8744('0x10'),function(_0x4e17a){var _0x4ea115=new Buffer(_0x54a9a5[_0x8744('0x11')](_0x4e17a),_0x8744('0x14'));_0x5607a7['write'](_0x4ea115);});_0x48259b['on']('end',function(){try{var _0x305ce8=new Buffer(_0x54a9a5[_0x8744('0x19')](_0x8744('0x14')),_0x8744('0x14'));_0x5607a7[_0x8744('0x12')](_0x305ce8);_0x5607a7[_0x8744('0x13')]();_0x5607a7['on'](_0x8744('0x15'),function(){return _0x2797c(_0x5651c5);});}catch(_0x87d5dd){fs[_0x8744('0x1a')](_0x5651c5);return _0x48961f(_0x87d5dd);}});});};exports['encryptString']=function(_0xf1714,_0x1a7d0d,_0x2f41cb){var _0x394309=_0x2f41cb||stringOptions['algorithm'];var _0x18dcd7=_0x1a7d0d||stringOptions[_0x8744('0x1b')];var _0x53912f=crypto[_0x8744('0xf')](_0x394309,_0x18dcd7);var _0xa70265=_0x53912f['update'](_0xf1714,_0x8744('0x1c'),'base64');_0xa70265+=_0x53912f[_0x8744('0x19')](_0x8744('0x1d'));return _0xa70265;};exports[_0x8744('0x1e')]=function(_0x4d2cd6,_0x1fcc5b,_0x27f5ba){var _0x1c7bd1=_0x27f5ba||stringOptions[_0x8744('0x8')];var _0x3acdb0=_0x1fcc5b||stringOptions[_0x8744('0x1b')];var _0xcd298=crypto['createDecipher'](_0x1c7bd1,_0x3acdb0);var _0x490232=_0xcd298[_0x8744('0x11')](_0x4d2cd6,_0x8744('0x1d'),_0x8744('0x1c'));_0x490232+=_0xcd298[_0x8744('0x19')]('utf8');return _0x490232;};
\ No newline at end of file
index 3e57f4d..8c893f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e2d=['query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','Empty','length','range','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','join','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','inspect','Failed','finally','exit','path','lodash','to-csv','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','split','splitSizeCsv','then','sequelize'];(function(_0x4279e1,_0x39cda4){var _0x1e33ea=function(_0x5b00ea){while(--_0x5b00ea){_0x4279e1['push'](_0x4279e1['shift']());}};_0x1e33ea(++_0x39cda4);}(_0x6e2d,0x7e));var _0xd6e2=function(_0x595e6c,_0x5ca9e6){_0x595e6c=_0x595e6c-0x0;var _0x3eeea3=_0x6e2d[_0x595e6c];return _0x3eeea3;};'use strict';var util=require('util');var path=require(_0xd6e2('0x0'));var _=require(_0xd6e2('0x1'));var csv=require(_0xd6e2('0x2'));var fs=require('fs');var BPromise=require(_0xd6e2('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0xd6e2('0x4'));var db=require(_0xd6e2('0x5'))['db'];var dbH=require(_0xd6e2('0x5'))[_0xd6e2('0x6')];var logger=require(_0xd6e2('0x7'))(_0xd6e2('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xd6e2('0x9')][0x2]);var QUERY=process[_0xd6e2('0x9')][0x3];var PATH=process[_0xd6e2('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x492451,_0x1e0361){var _0x28a77e={'status':_0x492451};var _0x11df12={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1e0361){_0x28a77e[_0xd6e2('0xa')]=_0x1e0361;}return db[_0xd6e2('0xb')][_0xd6e2('0xc')](_0x28a77e,_0x11df12);}function main(){var _0x45d3dc=0x1388;var _0x25936e;logger[_0xd6e2('0xd')](util[_0xd6e2('0xe')](_0xd6e2('0xf'),EXTRACTED_REPORT_ID,_0xd6e2('0x10')));return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xd6e2('0x11'),_0xd6e2('0x12')]})[_0xd6e2('0x13')](function(_0x557db4){if(_0x557db4){_0x25936e=_0x557db4;_0x45d3dc=_0x25936e[_0xd6e2('0x12')]||0x1388;}})['then'](function(){return dbH[_0xd6e2('0x14')][_0xd6e2('0x15')](util['format'](_0xd6e2('0x16'),QUERY),{'type':dbH[_0xd6e2('0x14')][_0xd6e2('0x17')][_0xd6e2('0x18')]});})[_0xd6e2('0x13')](function(_0x4ec22f){if(!_0x4ec22f[0x0]['num']){return analyticExtractedReport(_0xd6e2('0x19'));}var _0x123cda=[];var _0x3172f0=0x0;if(_0x25936e['split']){if(_0x4ec22f&&_0x4ec22f[_0xd6e2('0x1a')]){var _0x38f9c0=_[_0xd6e2('0x1b')](_0x4ec22f[0x0][_0xd6e2('0x1c')]/_0x45d3dc);var _0x465161=Number[_0xd6e2('0x1d')](_0x4ec22f[0x0][_0xd6e2('0x1c')]/_0x45d3dc)?_0x4ec22f[0x0][_0xd6e2('0x1c')]%_0x45d3dc:0x0;_0x38f9c0[_0xd6e2('0x1e')](function(_0x31e4b8){if(_0x31e4b8>0x0){_0x3172f0+=_0x45d3dc;}_0x123cda[_0xd6e2('0x1f')](dbH[_0xd6e2('0x14')][_0xd6e2('0x15')](util[_0xd6e2('0xe')](_0xd6e2('0x20'),QUERY,_0x45d3dc,_0x3172f0),{'type':dbH[_0xd6e2('0x14')][_0xd6e2('0x17')][_0xd6e2('0x18')]}));});if(_0x465161>0x0){_0x3172f0+=_0x45d3dc;_0x123cda[_0xd6e2('0x1f')](dbH[_0xd6e2('0x14')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x465161,_0x3172f0),{'type':dbH['sequelize'][_0xd6e2('0x17')][_0xd6e2('0x18')]}));}}}else{_0x123cda[_0xd6e2('0x1f')](dbH[_0xd6e2('0x14')][_0xd6e2('0x15')](QUERY,{'type':dbH[_0xd6e2('0x14')][_0xd6e2('0x17')][_0xd6e2('0x18')]}));}var _0x56bead=path[_0xd6e2('0x21')](PATH);var _0x49a723=path[_0xd6e2('0x22')](PATH,'.csv');var _0x545b21=_0x25936e[_0xd6e2('0x11')]&&_0x123cda[_0xd6e2('0x1a')]>0x1;var _0x4b6a63=[];if(!fs['existsSync'](path['join'](_0x56bead,_0x49a723))&&_0x545b21){fs['mkdirSync'](path[_0xd6e2('0x23')](_0x56bead,_0x49a723));}return BPromise[_0xd6e2('0x24')](_0x123cda,function(_0x6c67e9){_0x4b6a63[_0xd6e2('0x1f')](_0x6c67e9);})[_0xd6e2('0x13')](function(){for(var _0x5bb20f=0x0;_0x5bb20f<_0x4b6a63[_0xd6e2('0x1a')];_0x5bb20f+=0x1){var _0x2102b6;var _0x4a52ce=_0x4b6a63[_0x5bb20f];if(_0x545b21){_0x2102b6=path[_0xd6e2('0x23')](_0x56bead,_0x49a723,util[_0xd6e2('0xe')](_0xd6e2('0x25'),_0x49a723,_0x5bb20f,_0xd6e2('0x26')));}else{_0x2102b6=path['join'](_0x56bead,util[_0xd6e2('0xe')](_0xd6e2('0x27'),_0x49a723,'csv'));}fs[_0xd6e2('0x28')](_0x2102b6,csv(_0x4a52ce));}})[_0xd6e2('0x13')](function(){if(_0x545b21){return new Promise(function(_0x518510){zipdir(path[_0xd6e2('0x23')](_0x56bead,_0x49a723),{'saveTo':path['join'](_0x56bead,util[_0xd6e2('0xe')](_0xd6e2('0x27'),_0x49a723,_0xd6e2('0x29')))},function(_0x3636b3,_0xd3f3c4){rimraf(path[_0xd6e2('0x23')](_0x56bead,_0x49a723),function(){});_0x518510(_0xd6e2('0x2a'));});});}})[_0xd6e2('0x13')](function(){logger[_0xd6e2('0xd')](util[_0xd6e2('0xe')](_0xd6e2('0x2b'),EXTRACTED_REPORT_ID,_0xd6e2('0x10')));return analyticExtractedReport('Completed',_0x545b21?util[_0xd6e2('0xe')](_0xd6e2('0x27'),_0x49a723,_0x545b21?_0xd6e2('0x29'):'csv'):null);});})[_0xd6e2('0x2c')](function(_0x3a4ff0){logger['info'](util[_0xd6e2('0xe')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util[_0xd6e2('0x2d')](_0x3a4ff0,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd6e2('0x2e'));})[_0xd6e2('0x2f')](function(){process[_0xd6e2('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x9e0d=['num','length','sequelize','push','basename','split','join','mkdirSync','each','%s%d.%s','%s.%s','csv','writeFileSync','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','CSV','inspect','finally','exit','util','path','lodash','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','splitSizeCsv','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x9e0d,0xf7));var _0xd9e0=function(_0x3eca12,_0x19a994){_0x3eca12=_0x3eca12-0x0;var _0x3aeed9=_0x9e0d[_0x3eca12];return _0x3aeed9;};'use strict';var util=require(_0xd9e0('0x0'));var path=require(_0xd9e0('0x1'));var _=require(_0xd9e0('0x2'));var csv=require(_0xd9e0('0x3'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0xd9e0('0x4'));var rimraf=require(_0xd9e0('0x5'));var db=require(_0xd9e0('0x6'))['db'];var dbH=require(_0xd9e0('0x6'))[_0xd9e0('0x7')];var logger=require(_0xd9e0('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xd9e0('0x9')][0x3];var PATH=process[_0xd9e0('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x36d1c7,_0x3f8bb2){var _0x256df0={'status':_0x36d1c7};var _0x3315d8={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3f8bb2){_0x256df0['savename']=_0x3f8bb2;}return db[_0xd9e0('0xa')][_0xd9e0('0xb')](_0x256df0,_0x3315d8);}function main(){var _0x57763b=0x1388;var _0x5bd6ad;logger[_0xd9e0('0xc')](util[_0xd9e0('0xd')](_0xd9e0('0xe'),EXTRACTED_REPORT_ID,'CSV'));return db[_0xd9e0('0xf')][_0xd9e0('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xd9e0('0x11')]})[_0xd9e0('0x12')](function(_0x418d84){if(_0x418d84){_0x5bd6ad=_0x418d84;_0x57763b=_0x5bd6ad[_0xd9e0('0x11')]||0x1388;}})[_0xd9e0('0x12')](function(){return dbH['sequelize'][_0xd9e0('0x13')](util['format'](_0xd9e0('0x14'),QUERY),{'type':dbH['sequelize'][_0xd9e0('0x15')][_0xd9e0('0x16')]});})[_0xd9e0('0x12')](function(_0x18301b){if(!_0x18301b[0x0][_0xd9e0('0x17')]){return analyticExtractedReport('Empty');}var _0x58d44c=[];var _0x5aff0b=0x0;var _0x2eebec=!![];if(_0x18301b&&_0x18301b[_0xd9e0('0x18')]){var _0x71e4e1=_0x18301b[0x0][_0xd9e0('0x17')]%(_0x5aff0b+_0x57763b);if(_0x5bd6ad['split']){for(;_0x2eebec;_0x5aff0b+=_0x57763b,_0x71e4e1=_0x18301b[0x0][_0xd9e0('0x17')]%(_0x5aff0b+_0x57763b)){if(_0x71e4e1==0x0||_0x71e4e1==_0x18301b[0x0]['num']){_0x2eebec=![];}_0x58d44c['push'](dbH[_0xd9e0('0x19')][_0xd9e0('0x13')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x57763b,_0x5aff0b),{'type':dbH[_0xd9e0('0x19')][_0xd9e0('0x15')]['SELECT']}));}}else{_0x58d44c[_0xd9e0('0x1a')](dbH[_0xd9e0('0x19')][_0xd9e0('0x13')](QUERY,{'type':dbH[_0xd9e0('0x19')][_0xd9e0('0x15')][_0xd9e0('0x16')]}));}}var _0x3a3f7f=path['dirname'](PATH);var _0x19534a=path[_0xd9e0('0x1b')](PATH,'.csv');var _0x15e14a=_0x5bd6ad[_0xd9e0('0x1c')]&&_0x58d44c['length']>0x1;var _0x357bd9=[];if(!fs['existsSync'](path[_0xd9e0('0x1d')](_0x3a3f7f,_0x19534a))&&_0x15e14a){fs[_0xd9e0('0x1e')](path['join'](_0x3a3f7f,_0x19534a));}return BPromise[_0xd9e0('0x1f')](_0x58d44c,function(_0x53cf67){_0x357bd9['push'](_0x53cf67);})['then'](function(){for(var _0x4737ae=0x0;_0x4737ae<_0x357bd9[_0xd9e0('0x18')];_0x4737ae+=0x1){var _0x7065c6;var _0x1c36df=_0x357bd9[_0x4737ae];if(_0x15e14a){_0x7065c6=path[_0xd9e0('0x1d')](_0x3a3f7f,_0x19534a,util[_0xd9e0('0xd')](_0xd9e0('0x20'),_0x19534a,_0x4737ae,'csv'));}else{_0x7065c6=path[_0xd9e0('0x1d')](_0x3a3f7f,util[_0xd9e0('0xd')](_0xd9e0('0x21'),_0x19534a,_0xd9e0('0x22')));}fs[_0xd9e0('0x23')](_0x7065c6,csv(_0x1c36df));}})['then'](function(){if(_0x15e14a){zipdir(path['join'](_0x3a3f7f,_0x19534a),{'saveTo':path['join'](_0x3a3f7f,util[_0xd9e0('0xd')](_0xd9e0('0x21'),_0x19534a,'zip'))},function(_0x31afb5,_0x183a79){});rimraf(path[_0xd9e0('0x1d')](_0x3a3f7f,_0x19534a),function(){});}})[_0xd9e0('0x12')](function(){logger[_0xd9e0('0xc')](util[_0xd9e0('0xd')](_0xd9e0('0x24'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xd9e0('0x25'),_0x15e14a?util[_0xd9e0('0xd')](_0xd9e0('0x21'),_0x19534a,_0x15e14a?_0xd9e0('0x26'):_0xd9e0('0x22')):null);});})[_0xd9e0('0x27')](function(_0x209a8f){logger[_0xd9e0('0xc')](util[_0xd9e0('0xd')](_0xd9e0('0x28'),EXTRACTED_REPORT_ID,_0xd9e0('0x29')),util[_0xd9e0('0x2a')](_0x209a8f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xd9e0('0x2b')](function(){process[_0xd9e0('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
index 6e934f8..d42429d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x876c=['footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','sequelize','QueryTypes','SELECT','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','existsSync','mkdirSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','map','tableHeader','pick','value','fill','length','body','push','concat','chunk','keys','forEach','name','startDate','format','endDate','header','pageBreak','before','margin','landscape','toString','\x20/\x20'];(function(_0x523d90,_0x20fa65){var _0x546e7d=function(_0x4493ef){while(--_0x4493ef){_0x523d90['push'](_0x523d90['shift']());}};_0x546e7d(++_0x20fa65);}(_0x876c,0x151));var _0xc876=function(_0x69e6a3,_0x558d62){_0x69e6a3=_0x69e6a3-0x0;var _0x3aae4b=_0x876c[_0x69e6a3];return _0x3aae4b;};'use strict';var _=require(_0xc876('0x0'));var fs=require('fs');var util=require(_0xc876('0x1'));var path=require(_0xc876('0x2'));var moment=require('moment');var htmlToPdfmake=require(_0xc876('0x3'));var PdfPrinter=require(_0xc876('0x4'));var zipdir=require(_0xc876('0x5'));var rimraf=require(_0xc876('0x6'));var JSDOM=require(_0xc876('0x7'))['JSDOM'];var window=new JSDOM('')[_0xc876('0x8')];var BPromise=require(_0xc876('0x9'));var db=require(_0xc876('0xa'))['db'];var dbH=require('../../mysqldb')[_0xc876('0xb')];var logger=require('../../config/logger')(_0xc876('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0xc876('0xd')][0x2]);var QUERY=process[_0xc876('0xd')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0xc876('0xd')][0x5];var FORMAT=_0xc876('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1f7043,_0x2b2361){var _0x4d6bc1={'status':_0x1f7043};var _0x492b96={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2b2361){_0x4d6bc1['savename']=_0x2b2361;}return db[_0xc876('0xf')]['update'](_0x4d6bc1,_0x492b96);}function getHeaders(_0x1f6252){return _[_0xc876('0x10')](_0x1f6252,function(_0x429c95){return{'text':_0x429c95,'style':_0xc876('0x11')};});}function getRows(_0x1c4135,_0x334fce){return _[_0xc876('0x10')](_0x334fce,function(_0x522cce){return _(_0x522cce)[_0xc876('0x12')](_0x1c4135)[_0xc876('0x10')](function(_0x2f0737){return _0x2f0737?_['toString'](_0x2f0737):'';})[_0xc876('0x13')]();});}function createTable(_0x505505,_0x19f357){var _0x43e589={'widths':_[_0xc876('0x14')](Array(_0x505505[_0xc876('0x15')]),0x91),'heights':function(_0x580a13){return _0x580a13===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3eebec=getHeaders(_0x505505);_0x43e589[_0xc876('0x16')][_0xc876('0x17')](_0x3eebec);var _0x3c840e=getRows(_0x505505,_0x19f357);_0x43e589[_0xc876('0x16')]=_0x43e589[_0xc876('0x16')][_0xc876('0x18')](_0x3c840e);return _0x43e589;}function createTables(_0xf9a5fb){var _0x30fc8e=[];var _0x5041fd=_[_0xc876('0x19')](Object[_0xc876('0x1a')](_0xf9a5fb[0x0]),0x5);_0x5041fd[_0xc876('0x1b')](function(_0x23b437){_0x30fc8e[_0xc876('0x17')](createTable(_0x23b437,_0xf9a5fb));});return _0x30fc8e;}function getPDFDocDefinition(_0x3b2a06){var _0x2dc608=util['format']('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xc876('0x1c')],moment(EXTRACTED_REPORT[_0xc876('0x1d')])[_0xc876('0x1e')](FORMAT),moment(EXTRACTED_REPORT[_0xc876('0x1f')])['format'](FORMAT));var _0x11a1bf=[];for(var _0x460f33=0x0;_0x460f33<_0x3b2a06[_0xc876('0x15')];_0x460f33++){var _0x45580b=[];if(_0x460f33===0x0){_0x45580b[_0xc876('0x17')]({'text':_0x2dc608,'style':_0xc876('0x20')});}var _0x4d330a={'table':_0x3b2a06[_0x460f33]};if(_0x460f33>0x0){_0x4d330a[_0xc876('0x21')]=_0xc876('0x22');_0x4d330a[_0xc876('0x23')]=[0x0,0x46,0x0,0x0];}_0x45580b[_0xc876('0x17')](_0x4d330a);_0x11a1bf['push'](_0x45580b);}return{'pageSize':'A4','pageOrientation':_0xc876('0x24'),'content':_0x11a1bf,'footer':function(_0x4885cc,_0x553561){return{'text':_0x4885cc[_0xc876('0x25')]()+_0xc876('0x26')+_0x553561,'style':_0xc876('0x27')};},'defaultStyle':{'font':_0xc876('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xc876('0x29')},'footer':{'alignment':_0xc876('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x38eba6){var _0x8ce122=0x1388;var _0x29f46e;if(!_0x38eba6[0x0][_0xc876('0x2b')]){return analyticExtractedReport(_0xc876('0x2c'));}return db[_0xc876('0x2d')][_0xc876('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc876('0x2f'),'splitSizePdf']})['then'](function(_0x5d5e0b){if(_0x5d5e0b){_0x29f46e=_0x5d5e0b;_0x8ce122=_0x29f46e[_0xc876('0x30')]||0x3e8;}})[_0xc876('0x31')](function(){var _0x522521=[];var _0x138e45=0x0;if(_0x29f46e[_0xc876('0x2f')]){if(_0x38eba6&&_0x38eba6[_0xc876('0x15')]){var _0x9c58fa=_['range'](_0x38eba6[0x0][_0xc876('0x2b')]/_0x8ce122);var _0xd2fef2=Number['isInteger'](_0x38eba6[0x0][_0xc876('0x2b')]/_0x8ce122)?_0x38eba6[0x0][_0xc876('0x2b')]%_0x8ce122:0x0;_0x9c58fa[_0xc876('0x1b')](function(_0x3f6649){if(_0x3f6649>0x0){_0x138e45+=_0x8ce122;}_0x522521[_0xc876('0x17')](dbH[_0xc876('0x32')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x8ce122,_0x138e45),{'type':dbH['sequelize'][_0xc876('0x33')][_0xc876('0x34')]}));});if(_0xd2fef2>0x0){_0x138e45+=_0x8ce122;_0x522521[_0xc876('0x17')](dbH['sequelize'][_0xc876('0x35')](util['format'](_0xc876('0x36'),QUERY,_0xd2fef2,_0x138e45),{'type':dbH[_0xc876('0x32')][_0xc876('0x33')][_0xc876('0x34')]}));}}}else{_0x522521['push'](dbH[_0xc876('0x32')][_0xc876('0x35')](QUERY,{'type':dbH['sequelize'][_0xc876('0x33')][_0xc876('0x34')]}));}var _0x4220ad=path[_0xc876('0x37')](PATH);var _0x1239ab=path['basename'](PATH,'.pdf');var _0x494b74=_0x29f46e[_0xc876('0x2f')]&&_0x522521['length']>0x1;var _0x25d00f=[];if(!fs[_0xc876('0x38')](path['join'](_0x4220ad,_0x1239ab))&&_0x494b74){fs[_0xc876('0x39')](path[_0xc876('0x3a')](_0x4220ad,_0x1239ab));}return BPromise[_0xc876('0x3b')](_0x522521,function(_0xd1ee19){_0x25d00f[_0xc876('0x17')](_0xd1ee19);})['then'](function(){var _0x57b51e=[];for(var _0x313032=0x0;_0x313032<_0x25d00f[_0xc876('0x15')];_0x313032+=0x1){var _0x447ce8=_0x25d00f[_0x313032];var _0x515c65=createTables(_[_0xc876('0x3c')](_0x447ce8));var _0x1f882a;var _0x535a54=getPDFDocDefinition(_0x515c65);var _0x54d1c9=getPDFPrinter();var _0x476d87=_0x54d1c9[_0xc876('0x3d')](_0x535a54);if(_0x494b74){_0x1f882a=path['join'](_0x4220ad,_0x1239ab,util[_0xc876('0x1e')](_0xc876('0x3e'),_0x1239ab,_0x313032,_0xc876('0x3f')));}else{_0x1f882a=path[_0xc876('0x3a')](_0x4220ad,util[_0xc876('0x1e')]('%s.%s',_0x1239ab,_0xc876('0x3f')));}_0x57b51e[_0xc876('0x17')](writePDFDocument(_0x476d87,_0x1f882a));}return Promise[_0xc876('0x40')](_0x57b51e);})['then'](function(){if(_0x494b74){return new Promise(function(_0x2cf05a){zipdir(path['join'](_0x4220ad,_0x1239ab),{'saveTo':path[_0xc876('0x3a')](_0x4220ad,util['format'](_0xc876('0x41'),_0x1239ab,_0xc876('0x42')))},function(){rimraf(path[_0xc876('0x3a')](_0x4220ad,_0x1239ab),function(){});_0x2cf05a(_0xc876('0x43'));});});}})[_0xc876('0x31')](function(){if(!_0x494b74)return;rimraf(path['join'](_0x4220ad,_0x1239ab),function(){});})[_0xc876('0x31')](function(){logger['info'](util[_0xc876('0x1e')](_0xc876('0x44'),EXTRACTED_REPORT_ID,_0xc876('0x45')));return analyticExtractedReport(_0xc876('0x46'),_0x494b74?util['format']('%s.%s',_0x1239ab,_0x494b74?_0xc876('0x42'):_0xc876('0x3f')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xc876('0x47')](util[_0xc876('0x1e')](_0xc876('0x48'),EXTRACTED_REPORT_ID,_0xc876('0x45')));return db['AnalyticExtractedReport']['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0xc876('0x31')](function(_0x415f16){EXTRACTED_REPORT=_0x415f16;return dbH[_0xc876('0x32')][_0xc876('0x35')](util[_0xc876('0x1e')](_0xc876('0x49'),QUERY),{'type':dbH[_0xc876('0x32')][_0xc876('0x33')][_0xc876('0x34')]});})[_0xc876('0x31')](extractReport)[_0xc876('0x4a')](function(_0x59cca5){logger[_0xc876('0x47')](util[_0xc876('0x1e')](_0xc876('0x4b'),EXTRACTED_REPORT_ID,_0xc876('0x45')),util[_0xc876('0x4c')](_0x59cca5,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xc876('0x4d')](function(){process[_0xc876('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x210155=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0xc876('0x4f'),'italics':__dirname+_0xc876('0x50'),'bolditalics':__dirname+_0xc876('0x51')}});return _0x210155;}function getPDFDocDefinitionFromHTML(_0x5204dc,_0x2928f4){var _0x42bc4d=util[_0xc876('0x1e')](_0xc876('0x52'),_0x2928f4[_0xc876('0x53')],_0x2928f4[_0xc876('0x54')]);var _0x390fa1=moment()[_0xc876('0x1e')](_0xc876('0x55'))[_0xc876('0x25')]();var _0x5142a8=htmlToPdfmake(_0x5204dc,{'window':window,'tableAutoSize':!![]});return{'content':[_0x5142a8],'defaultStyle':{'font':_0xc876('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc876('0x56'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xc876('0x56')}},'header':function(){return[{'text':_0xc876('0x57'),'style':_0xc876('0x20')}];},'footer':function(_0x46a46d,_0x2a1c70){return[{'text':util['format'](_0xc876('0x58'),_0x42bc4d,_0x46a46d,_0x2a1c70,_0x390fa1),'style':_0xc876('0x27')}];}};}function writePDFDocument(_0x1b22d0,_0x19a13a){return new Promise(function(_0x5e98b0,_0x541f8a){var _0x4163f4=_0x1b22d0['pipe'](fs[_0xc876('0x59')](_0x19a13a));_0x4163f4['on'](_0xc876('0x5a'),function(){_0x5e98b0(_0xc876('0x5a'));});_0x4163f4['on'](_0xc876('0x5b'),function(_0x3f4e89){_0x541f8a(_0x3f4e89);});_0x1b22d0[_0xc876('0x5c')]();});}exports[_0xc876('0x5d')]=function(_0x152c5c,_0x2b31b4){var _0x37fc84=getPDFPrinter();var _0x54891f=getPDFDocDefinitionFromHTML(_0x152c5c,_0x2b31b4);var _0x1a708e=_0x37fc84['createPdfKitDocument'](_0x54891f);return writePDFDocument(_0x1a708e,_0x2b31b4[_0xc876('0x2')])[_0xc876('0x4a')](function(_0x181324){throw _0x181324;});};
\ No newline at end of file
+var _0xdeb2=['CSV','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','AnalyticExtractedReport','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','createPdfKitDocument','catch','lodash','util','path','moment','html-to-pdfmake','zip-dir','rimraf','JSDOM','window','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','update','map','tableHeader','pick','toString','value','auto','body','push','concat','keys','forEach','name','startDate','format','length','pageBreak','margin','footer','Arial','black','num','Empty','dirname','basename','.pdf','pdf','split','then','splitSizePdf','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','join','mkdirSync','all','flatten','%s.%s','zip','info'];(function(_0x2b2a02,_0x42eb6e){var _0x2418d7=function(_0x3402b5){while(--_0x3402b5){_0x2b2a02['push'](_0x2b2a02['shift']());}};_0x2418d7(++_0x42eb6e);}(_0xdeb2,0x15d));var _0x2deb=function(_0x3d4790,_0x52b5c2){_0x3d4790=_0x3d4790-0x0;var _0x50c78d=_0xdeb2[_0x3d4790];return _0x50c78d;};'use strict';var _=require(_0x2deb('0x0'));var fs=require('fs');var util=require(_0x2deb('0x1'));var path=require(_0x2deb('0x2'));var moment=require(_0x2deb('0x3'));var htmlToPdfmake=require(_0x2deb('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x2deb('0x5'));var rimraf=require(_0x2deb('0x6'));var JSDOM=require('jsdom')[_0x2deb('0x7')];var window=new JSDOM('')[_0x2deb('0x8')];var db=require('../../mysqldb')['db'];var dbH=require(_0x2deb('0x9'))[_0x2deb('0xa')];var logger=require(_0x2deb('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x2deb('0xc')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x2deb('0xc')][0x4];var NAME=process[_0x2deb('0xc')][0x5];var FORMAT=_0x2deb('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0xbbc9a9,_0x4c385c){var _0x13197f={'status':_0xbbc9a9};var _0x2dd3b7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4c385c){_0x13197f['savename']=_0x4c385c;}return db['AnalyticExtractedReport'][_0x2deb('0xe')](_0x13197f,_0x2dd3b7);}function getHeaders(_0x3e2cc9){return _[_0x2deb('0xf')](_0x3e2cc9,function(_0x2ad006){return{'text':_0x2ad006,'style':_0x2deb('0x10')};});}function getRows(_0x1d1a11,_0x7114d2){return _['map'](_0x7114d2,function(_0x521b3d){return _(_0x521b3d)[_0x2deb('0x11')](_0x1d1a11)['map'](function(_0x12f9ff){return _0x12f9ff?_[_0x2deb('0x12')](_0x12f9ff):'';})[_0x2deb('0x13')]();});}function createTable(_0x3c95a1,_0x3c5941){var _0x31f061={'widths':_['fill'](Array(_0x3c95a1['length']),0x91),'heights':function(_0x57f4c9){return _0x57f4c9===0x0?_0x2deb('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x497aa0=getHeaders(_0x3c95a1);_0x31f061[_0x2deb('0x15')][_0x2deb('0x16')](_0x497aa0);var _0x3f9174=getRows(_0x3c95a1,_0x3c5941);_0x31f061[_0x2deb('0x15')]=_0x31f061[_0x2deb('0x15')][_0x2deb('0x17')](_0x3f9174);return _0x31f061;}function createTables(_0x23b519){var _0x4b6548=[];var _0x5bbf73=_['chunk'](Object[_0x2deb('0x18')](_0x23b519[0x0]),0x5);_0x5bbf73[_0x2deb('0x19')](function(_0x34122b){_0x4b6548[_0x2deb('0x16')](createTable(_0x34122b,_0x23b519));});return _0x4b6548;}function getPDFDocDefinition(_0x10364e){var _0x255369=util['format']('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x2deb('0x1a')],moment(EXTRACTED_REPORT[_0x2deb('0x1b')])[_0x2deb('0x1c')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x2deb('0x1c')](FORMAT));var _0x41be71=[];for(var _0x516fa1=0x0;_0x516fa1<_0x10364e[_0x2deb('0x1d')];_0x516fa1++){var _0x16d126=[];if(_0x516fa1===0x0){_0x16d126[_0x2deb('0x16')]({'text':_0x255369,'style':'header'});}var _0xf32b8c={'table':_0x10364e[_0x516fa1]};if(_0x516fa1>0x0){_0xf32b8c[_0x2deb('0x1e')]='before';_0xf32b8c[_0x2deb('0x1f')]=[0x0,0x46,0x0,0x0];}_0x16d126['push'](_0xf32b8c);_0x41be71[_0x2deb('0x16')](_0x16d126);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x41be71,'footer':function(_0x3f3dc4,_0x552aff){return{'text':_0x3f3dc4['toString']()+'\x20/\x20'+_0x552aff,'style':_0x2deb('0x20')};},'defaultStyle':{'font':_0x2deb('0x21')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x2deb('0x22')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1bea84){var _0x42cf1d=0x1388;var _0x20ca77;if(!_0x1bea84[0x0][_0x2deb('0x23')]){return analyticExtractedReport(_0x2deb('0x24'));}var _0xb1ff67=[];var _0x393c6f=0x0;var _0x4c0175=!![];var _0x2c974e=path[_0x2deb('0x25')](PATH);var _0x1466d0=path[_0x2deb('0x26')](PATH,_0x2deb('0x27'));var _0x1f69e5=path['join'](_0x2c974e,util[_0x2deb('0x1c')]('%s.%s',_0x1466d0,_0x2deb('0x28')));var _0x2db055=![];return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2deb('0x29'),'splitSizePdf']})[_0x2deb('0x2a')](function(_0x159d31){if(_0x159d31){_0x20ca77=_0x159d31;_0x42cf1d=_0x20ca77[_0x2deb('0x2b')]||0x3e8;}})[_0x2deb('0x2a')](function(){if(_0x1bea84&&_0x1bea84[_0x2deb('0x1d')]){var _0x523e0a=_0x1bea84[0x0]['num']%(_0x393c6f+_0x42cf1d);if(_0x20ca77[_0x2deb('0x29')]){for(;_0x4c0175;_0x393c6f+=_0x42cf1d,_0x523e0a=_0x1bea84[0x0][_0x2deb('0x23')]%(_0x393c6f+_0x42cf1d)){if(_0x523e0a==0x0||_0x523e0a==_0x1bea84[0x0]['num']){_0x4c0175=![];}_0xb1ff67[_0x2deb('0x16')](dbH[_0x2deb('0x2c')][_0x2deb('0x2d')](util[_0x2deb('0x1c')](_0x2deb('0x2e'),QUERY,_0x42cf1d,_0x393c6f),{'type':dbH[_0x2deb('0x2c')][_0x2deb('0x2f')][_0x2deb('0x30')]}));}}else{_0xb1ff67['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x2deb('0x2c')][_0x2deb('0x2f')][_0x2deb('0x30')]}));}}_0x2db055=_0x20ca77[_0x2deb('0x29')]&&_0xb1ff67[_0x2deb('0x1d')]>0x1;if(!fs['existsSync'](path[_0x2deb('0x31')](_0x2c974e,_0x1466d0))&&_0x2db055){fs[_0x2deb('0x32')](path[_0x2deb('0x31')](_0x2c974e,_0x1466d0));}return Promise[_0x2deb('0x33')](_0xb1ff67);})[_0x2deb('0x2a')](function(_0x5e39ae){return createTables(_[_0x2deb('0x34')](_0x5e39ae));})['then'](function(_0x58301e){var _0x17bba3=getPDFDocDefinition(_0x58301e);var _0x5eb8d8=getPDFPrinter();var _0x3f196e=_0x5eb8d8['createPdfKitDocument'](_0x17bba3);if(_0x2db055)_0x1f69e5=path[_0x2deb('0x31')](_0x2c974e,_0x1466d0,util[_0x2deb('0x1c')]('%s%d.%s',_0x1466d0,index,'pdf'));return writePDFDocument(_0x3f196e,_0x1f69e5);})[_0x2deb('0x2a')](function(){if(!_0x2db055)return;zipdir(path[_0x2deb('0x31')](_0x2c974e,_0x1466d0),{'saveTo':path[_0x2deb('0x31')](_0x2c974e,util['format'](_0x2deb('0x35'),_0x1466d0,_0x2deb('0x36')))},function(_0x1e4426){if(_0x1e4426)throw _0x1e4426;return;});})['then'](function(){if(!_0x2db055)return;rimraf(path[_0x2deb('0x31')](_0x2c974e,_0x1466d0),function(){});})[_0x2deb('0x2a')](function(){logger[_0x2deb('0x37')](util[_0x2deb('0x1c')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x2deb('0x38')));return analyticExtractedReport(_0x2deb('0x39'),_0x2db055?util[_0x2deb('0x1c')](_0x2deb('0x35'),_0x1466d0,_0x2db055?_0x2deb('0x36'):_0x2deb('0x28')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x2deb('0x37')](util['format'](_0x2deb('0x3a'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x2deb('0x3b')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x2deb('0x2a')](function(_0x2cd6be){EXTRACTED_REPORT=_0x2cd6be;return dbH[_0x2deb('0x2c')][_0x2deb('0x2d')](util[_0x2deb('0x1c')](_0x2deb('0x3c'),QUERY),{'type':dbH[_0x2deb('0x2c')][_0x2deb('0x2f')][_0x2deb('0x30')]});})['then'](extractReport)['catch'](function(_0x991df2){logger[_0x2deb('0x37')](util[_0x2deb('0x1c')](_0x2deb('0x3d'),EXTRACTED_REPORT_ID,'PDF'),util[_0x2deb('0x3e')](_0x991df2,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x2deb('0x3f'));})['finally'](function(){process[_0x2deb('0x40')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3d54a8=new PdfPrinter({'Arial':{'normal':__dirname+_0x2deb('0x41'),'bold':__dirname+_0x2deb('0x42'),'italics':__dirname+_0x2deb('0x43'),'bolditalics':__dirname+_0x2deb('0x44')}});return _0x3d54a8;}function getPDFDocDefinitionFromHTML(_0x5798f4,_0x1e5436){var _0x2cbd18=util[_0x2deb('0x1c')](_0x2deb('0x45'),_0x1e5436[_0x2deb('0x46')],_0x1e5436[_0x2deb('0x47')]);var _0x447832=moment()[_0x2deb('0x1c')]('YYYY-MM-DD')[_0x2deb('0x12')]();var _0x2315fc=htmlToPdfmake(_0x5798f4,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2315fc],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x2deb('0x48'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x2deb('0x48'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x2deb('0x48')}},'header':function(){return[{'text':_0x2deb('0x49'),'style':'header'}];},'footer':function(_0x23a9ee,_0x38272c){return[{'text':util[_0x2deb('0x1c')](_0x2deb('0x4a'),_0x2cbd18,_0x23a9ee,_0x38272c,_0x447832),'style':_0x2deb('0x20')}];}};}function writePDFDocument(_0x364dc3,_0x1c8aac){return new Promise(function(_0x15cb9f,_0x3b5d4b){var _0x34db25=_0x364dc3[_0x2deb('0x4b')](fs['createWriteStream'](_0x1c8aac));_0x34db25['on'](_0x2deb('0x4c'),function(){_0x15cb9f(_0x2deb('0x4c'));});_0x34db25['on'](_0x2deb('0x4d'),function(_0x318ee6){_0x3b5d4b(_0x318ee6);});_0x364dc3[_0x2deb('0x4e')]();});}exports['createPdfFromHTML']=function(_0x138227,_0x3407ad){var _0x3091e0=getPDFPrinter();var _0x3c4889=getPDFDocDefinitionFromHTML(_0x138227,_0x3407ad);var _0x3ba23c=_0x3091e0[_0x2deb('0x4f')](_0x3c4889);return writePDFDocument(_0x3ba23c,_0x3407ad[_0x2deb('0x2')])[_0x2deb('0x50')](function(_0xfe7494){throw _0xfe7494;});};
\ No newline at end of file
index 5c9404c..4ac6af8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdad=['split','splitSizeXlsx','then','sequelize','query','QueryTypes','SELECT','length','range','num','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','existsSync','join','each','%s%d.%s','xlsx','%s.%s','binary','info','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find'];(function(_0x482973,_0x15265b){var _0x36a3cc=function(_0x44e7ce){while(--_0x44e7ce){_0x482973['push'](_0x482973['shift']());}};_0x36a3cc(++_0x15265b);}(_0xbdad,0x1e1));var _0xdbda=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbdad[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0xdbda('0x0'));var path=require(_0xdbda('0x1'));var _=require(_0xdbda('0x2'));var fs=require('fs');var json2xls=require(_0xdbda('0x3'));var BPromise=require(_0xdbda('0x4'));var zipdir=require(_0xdbda('0x5'));var rimraf=require(_0xdbda('0x6'));var db=require(_0xdbda('0x7'))['db'];var dbH=require(_0xdbda('0x7'))[_0xdbda('0x8')];var logger=require(_0xdbda('0x9'))(_0xdbda('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0xdbda('0xb')][0x2]);var QUERY=process[_0xdbda('0xb')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5cbd4e,_0x228ea3){var _0x5adc08={'status':_0x5cbd4e};var _0x41a8f9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x228ea3){_0x5adc08[_0xdbda('0xc')]=_0x228ea3;}return db['AnalyticExtractedReport'][_0xdbda('0xd')](_0x5adc08,_0x41a8f9);}function main(){var _0x1500b4=0x1388;var _0x3afae6;logger['info'](util[_0xdbda('0xe')](_0xdbda('0xf'),EXTRACTED_REPORT_ID,_0xdbda('0x10')));return db[_0xdbda('0x11')][_0xdbda('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xdbda('0x13'),_0xdbda('0x14')]})[_0xdbda('0x15')](function(_0xe4b1ce){if(_0xe4b1ce){_0x3afae6=_0xe4b1ce;_0x1500b4=_0x3afae6[_0xdbda('0x14')]||0x1388;}})[_0xdbda('0x15')](function(){return dbH[_0xdbda('0x16')][_0xdbda('0x17')](util[_0xdbda('0xe')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xdbda('0x16')][_0xdbda('0x18')][_0xdbda('0x19')]});})[_0xdbda('0x15')](function(_0x5939f1){if(!_0x5939f1[0x0]['num']){return analyticExtractedReport('Empty');}var _0x3745a5=[];var _0xb8f372=0x0;if(_0x3afae6[_0xdbda('0x13')]){if(_0x5939f1&&_0x5939f1[_0xdbda('0x1a')]){var _0x11abcf=_[_0xdbda('0x1b')](_0x5939f1[0x0]['num']/_0x1500b4);var _0x353642=Number['isInteger'](_0x5939f1[0x0][_0xdbda('0x1c')]/_0x1500b4)?_0x5939f1[0x0][_0xdbda('0x1c')]%_0x1500b4:0x0;_0x11abcf[_0xdbda('0x1d')](function(_0x52cfab){if(_0x52cfab>0x0){_0xb8f372+=_0x1500b4;}_0x3745a5['push'](dbH[_0xdbda('0x16')][_0xdbda('0x17')](util[_0xdbda('0xe')](_0xdbda('0x1e'),QUERY,_0x1500b4,_0xb8f372),{'type':dbH[_0xdbda('0x16')][_0xdbda('0x18')][_0xdbda('0x19')]}));});if(_0x353642>0x0){_0xb8f372+=_0x1500b4;_0x3745a5[_0xdbda('0x1f')](dbH[_0xdbda('0x16')]['query'](util[_0xdbda('0xe')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x353642,_0xb8f372),{'type':dbH[_0xdbda('0x16')][_0xdbda('0x18')][_0xdbda('0x19')]}));}}}else{_0x3745a5[_0xdbda('0x1f')](dbH[_0xdbda('0x16')][_0xdbda('0x17')](QUERY,{'type':dbH[_0xdbda('0x16')][_0xdbda('0x18')][_0xdbda('0x19')]}));}var _0x501598=path[_0xdbda('0x20')](PATH);var _0x34c892=path[_0xdbda('0x21')](PATH,_0xdbda('0x22'));var _0x2fa0a7=_0x3afae6[_0xdbda('0x13')]&&_0x3745a5[_0xdbda('0x1a')]>0x1;var _0x4d1d67=[];if(!fs[_0xdbda('0x23')](path[_0xdbda('0x24')](_0x501598,_0x34c892))&&_0x2fa0a7){fs['mkdirSync'](path[_0xdbda('0x24')](_0x501598,_0x34c892));}return BPromise[_0xdbda('0x25')](_0x3745a5,function(_0x412e9a){_0x4d1d67[_0xdbda('0x1f')](_0x412e9a);})['then'](function(){for(var _0x10fcab=0x0;_0x10fcab<_0x4d1d67[_0xdbda('0x1a')];_0x10fcab+=0x1){var _0x2e984f;var _0x542fed=_0x4d1d67[_0x10fcab];if(_0x2fa0a7){_0x2e984f=path[_0xdbda('0x24')](_0x501598,_0x34c892,util[_0xdbda('0xe')](_0xdbda('0x26'),_0x34c892,_0x10fcab,_0xdbda('0x27')));}else{_0x2e984f=path[_0xdbda('0x24')](_0x501598,util[_0xdbda('0xe')](_0xdbda('0x28'),_0x34c892,_0xdbda('0x27')));}fs['writeFileSync'](_0x2e984f,json2xls(_0x542fed),_0xdbda('0x29'));}})[_0xdbda('0x15')](function(){if(_0x2fa0a7){return new Promise(function(_0x6bb7d8){zipdir(path[_0xdbda('0x24')](_0x501598,_0x34c892),{'saveTo':path['join'](_0x501598,util[_0xdbda('0xe')](_0xdbda('0x28'),_0x34c892,'zip'))},function(_0xcd7cf,_0x45ef8d){rimraf(path[_0xdbda('0x24')](_0x501598,_0x34c892),function(){});_0x6bb7d8('zip\x20finished');});});}})[_0xdbda('0x15')](function(){logger[_0xdbda('0x2a')](util[_0xdbda('0xe')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xdbda('0x10')));return analyticExtractedReport(_0xdbda('0x2b'),_0x2fa0a7?util[_0xdbda('0xe')]('%s.%s',_0x34c892,_0x2fa0a7?_0xdbda('0x2c'):'xlsx'):null);});})[_0xdbda('0x2d')](function(_0x5d82fd){logger[_0xdbda('0x2a')](util[_0xdbda('0xe')](_0xdbda('0x2e'),EXTRACTED_REPORT_ID,'XLSX'),util[_0xdbda('0x2f')](_0x5d82fd,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xdbda('0x30'));})[_0xdbda('0x31')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xff42=['json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','splitSizeXlsx','then','sequelize','query','format','QueryTypes','num','Empty','length','SELECT','push','dirname','basename','.xlsx','existsSync','join','mkdirSync','%s%d.%s','xlsx','%s.%s','zip','info','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','inspect','Failed','path','lodash'];(function(_0x4f371c,_0x975cc1){var _0x29556e=function(_0xc6a1d8){while(--_0xc6a1d8){_0x4f371c['push'](_0x4f371c['shift']());}};_0x29556e(++_0x975cc1);}(_0xff42,0x1ed));var _0x2ff4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xff42[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var path=require(_0x2ff4('0x0'));var _=require(_0x2ff4('0x1'));var fs=require('fs');var json2xls=require(_0x2ff4('0x2'));var BPromise=require(_0x2ff4('0x3'));var zipdir=require(_0x2ff4('0x4'));var rimraf=require(_0x2ff4('0x5'));var db=require(_0x2ff4('0x6'))['db'];var dbH=require(_0x2ff4('0x6'))['dbH'];var logger=require(_0x2ff4('0x7'))(_0x2ff4('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x2ff4('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1624c4,_0x248e9b){var _0xde18d4={'status':_0x1624c4};var _0x1dfcaa={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x248e9b){_0xde18d4[_0x2ff4('0xa')]=_0x248e9b;}return db[_0x2ff4('0xb')][_0x2ff4('0xc')](_0xde18d4,_0x1dfcaa);}function main(){var _0x4ff6b7=0x1388;var _0xba3aec;logger['info'](util['format'](_0x2ff4('0xd'),EXTRACTED_REPORT_ID,_0x2ff4('0xe')));return db[_0x2ff4('0xf')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2ff4('0x10'),_0x2ff4('0x11')]})[_0x2ff4('0x12')](function(_0x5e2c55){if(_0x5e2c55){_0xba3aec=_0x5e2c55;_0x4ff6b7=_0xba3aec[_0x2ff4('0x11')]||0x1388;}})['then'](function(){return dbH[_0x2ff4('0x13')][_0x2ff4('0x14')](util[_0x2ff4('0x15')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x2ff4('0x13')][_0x2ff4('0x16')]['SELECT']});})['then'](function(_0x85975c){if(!_0x85975c[0x0][_0x2ff4('0x17')]){return analyticExtractedReport(_0x2ff4('0x18'));}var _0x3b995d=[];var _0x19d53b=0x0;var _0x29fbdd=!![];if(_0xba3aec['split']){if(_0x85975c&&_0x85975c[_0x2ff4('0x19')]){var _0xf2bf14=_0x85975c[0x0][_0x2ff4('0x17')]%(_0x19d53b+_0x4ff6b7);for(;_0x29fbdd;_0x19d53b+=_0x4ff6b7,_0xf2bf14=_0x85975c[0x0][_0x2ff4('0x17')]%(_0x19d53b+_0x4ff6b7)){if(_0xf2bf14==0x0||_0xf2bf14==_0x85975c[0x0]['num']){_0x29fbdd=![];}_0x3b995d['push'](dbH['sequelize'][_0x2ff4('0x14')](util[_0x2ff4('0x15')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4ff6b7,_0x19d53b),{'type':dbH[_0x2ff4('0x13')][_0x2ff4('0x16')][_0x2ff4('0x1a')]}));}}}else{_0x3b995d[_0x2ff4('0x1b')](dbH[_0x2ff4('0x13')][_0x2ff4('0x14')](QUERY,{'type':dbH[_0x2ff4('0x13')][_0x2ff4('0x16')][_0x2ff4('0x1a')]}));}var _0x189597=path[_0x2ff4('0x1c')](PATH);var _0x3fa5a0=path[_0x2ff4('0x1d')](PATH,_0x2ff4('0x1e'));var _0x319ffe=_0xba3aec[_0x2ff4('0x10')]&&_0x3b995d[_0x2ff4('0x19')]>0x1;var _0x38022f=[];if(!fs[_0x2ff4('0x1f')](path[_0x2ff4('0x20')](_0x189597,_0x3fa5a0))&&_0x319ffe){fs[_0x2ff4('0x21')](path[_0x2ff4('0x20')](_0x189597,_0x3fa5a0));}return BPromise['each'](_0x3b995d,function(_0x1a66d6){_0x38022f['push'](_0x1a66d6);})[_0x2ff4('0x12')](function(){for(var _0x5cef49=0x0;_0x5cef49<_0x38022f[_0x2ff4('0x19')];_0x5cef49+=0x1){var _0x210754;var _0x489e2c=_0x38022f[_0x5cef49];if(_0x319ffe){_0x210754=path[_0x2ff4('0x20')](_0x189597,_0x3fa5a0,util[_0x2ff4('0x15')](_0x2ff4('0x22'),_0x3fa5a0,_0x5cef49,_0x2ff4('0x23')));}else{_0x210754=path['join'](_0x189597,util[_0x2ff4('0x15')](_0x2ff4('0x24'),_0x3fa5a0,_0x2ff4('0x23')));}fs['writeFileSync'](_0x210754,json2xls(_0x489e2c),'binary');}})['then'](function(){if(_0x319ffe){zipdir(path[_0x2ff4('0x20')](_0x189597,_0x3fa5a0),{'saveTo':path[_0x2ff4('0x20')](_0x189597,util[_0x2ff4('0x15')]('%s.%s',_0x3fa5a0,_0x2ff4('0x25')))},function(_0x17a6ce,_0x1d4ea1){});rimraf(path[_0x2ff4('0x20')](_0x189597,_0x3fa5a0),function(){});}})['then'](function(){logger[_0x2ff4('0x26')](util[_0x2ff4('0x15')](_0x2ff4('0x27'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0x2ff4('0x28'),_0x319ffe?util['format'](_0x2ff4('0x24'),_0x3fa5a0,_0x319ffe?_0x2ff4('0x25'):_0x2ff4('0x23')):null);});})[_0x2ff4('0x29')](function(_0x25a0b9){logger[_0x2ff4('0x26')](util[_0x2ff4('0x15')](_0x2ff4('0x2a'),EXTRACTED_REPORT_ID,_0x2ff4('0xe')),util[_0x2ff4('0x2b')](_0x25a0b9,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x2ff4('0x2c'));})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 03acf18..4c2a5ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7032=['catch','error','util','models','then','intervals','VoiceExtension','findAll','uniq','map','filter','groupBy','exten','queue','hasOwnProperty','priority','extensions','find','type','Set','context','VoiceExtensionId','inbound','CDR(routeid)=','extension','CDR(destination)=','cutdigits','${EXTEN}','push','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','updatedAt','interval','*,*,*,*','IntervalId','tag','outbound','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','appType','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','destroy','sortBy'];(function(_0x4886cf,_0x1674c9){var _0x39057e=function(_0x3b9015){while(--_0x3b9015){_0x4886cf['push'](_0x4886cf['shift']());}};_0x39057e(++_0x1674c9);}(_0x7032,0x142));var _0x2703=function(_0x11e001,_0xb3367b){_0x11e001=_0x11e001-0x0;var _0x417419=_0x7032[_0x11e001];return _0x417419;};'use strict';var _=require('lodash');var util=require(_0x2703('0x0'));function rewrite(_0x143ba4,_0x5e993f){var _0x2c1444=this;return _0x143ba4[_0x2703('0x1')]['Interval']['findAll']({'raw':!![]})[_0x2703('0x2')](function(_0x4a53a6){_0x2c1444[_0x2703('0x3')]=_0x4a53a6;return _0x143ba4[_0x2703('0x1')][_0x2703('0x4')][_0x2703('0x5')]({'where':{'IntervalId':_0x5e993f['IntervalId']},'raw':!![]});})['then'](function(_0x193f8c){return _0x143ba4[_0x2703('0x1')]['VoiceExtension'][_0x2703('0x5')]({'where':{'exten':{'$in':_[_0x2703('0x6')](_[_0x2703('0x7')](_0x193f8c,'exten'))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x2703('0x2')](function(_0x4eacff){var _0x3324e8=_[_0x2703('0x8')](_0x4eacff,{'priority':'1'});var _0x5a6d80=_[_0x2703('0x8')](_0x4eacff,{'isApp':0x1});var _0x5b4c58=_[_0x2703('0x9')](_0x5a6d80,_0x2703('0xa'));var _0x4475ea=[_0x2703('0xb'),'playback'];var _0x8e1d26=[];var _0x2f077b=[];for(var _0x4b582c in _0x5b4c58){if(_0x5b4c58[_0x2703('0xc')](_0x4b582c)){_0x2c1444[_0x2703('0xd')]=0x2;_0x2c1444[_0x2703('0xe')]=[];_0x2c1444['extension']=_[_0x2703('0xf')](_0x3324e8,{'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')]});_0x2c1444[_0x2703('0xe')]['push']({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':util['format']('CDR(type)=%s',_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')]),'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444['priority']++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});if(_0x5b4c58[_0x4b582c][0x0]['type']===_0x2703('0x14')){_0x2c1444[_0x2703('0xe')]['push']({'type':_0x5b4c58[_0x4b582c][0x0]['type'],'app':_0x2703('0x11'),'appdata':_0x2703('0x15')+_0x5b4c58[_0x4b582c][0x0]['VoiceExtensionId'],'context':_0x5b4c58[_0x4b582c][0x0]['context'],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444[_0x2703('0xd')]++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0]['VoiceExtensionId']});}else if(_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')]==='outbound'){if(_0x2c1444[_0x2703('0x16')]){_0x2c1444[_0x2703('0xe')]['push']({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':_0x2703('0x17')+(_0x2c1444[_0x2703('0x16')][_0x2703('0x18')]?'${EXTEN:'+_0x2c1444['extension'][_0x2703('0x18')]+'}':_0x2703('0x19')),'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444['priority']++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});}_0x2c1444[_0x2703('0xe')][_0x2703('0x1a')]({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':'Set','appdata':_0x2703('0x15')+_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')],'context':_0x5b4c58[_0x4b582c][0x0]['context'],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444[_0x2703('0xd')]++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});var _0x1635cb=_0x2c1444['priority']++;_0x2c1444['extensions']['push']({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x1b'),'appdata':_0x2703('0x1c')+(_0x1635cb+0x2)+'):Goto('+(_0x1635cb+0x1)+')','context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x1635cb,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});if(_0x2c1444[_0x2703('0x16')]){_0x2c1444[_0x2703('0xe')][_0x2703('0x1a')]({'type':_0x5b4c58[_0x4b582c][0x0]['type'],'app':'Set','appdata':_0x2c1444[_0x2703('0x16')]['cutdigits']?_0x2703('0x1d')+_0x2c1444['extension'][_0x2703('0x18')]+'}':_0x2703('0x1e'),'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444[_0x2703('0xd')]++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});}_0x2c1444[_0x2703('0xe')][_0x2703('0x1a')]({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':_0x2703('0x1f')+_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')],'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0]['exten'],'priority':_0x2c1444['priority']++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});if(_0x2c1444['extension']&&_0x2c1444['extension']['hasOwnProperty'](_0x2703('0x20'))&&_0x2c1444[_0x2703('0x16')][_0x2703('0x20')]!==_0x2703('0x21')){_0x2c1444[_0x2703('0xe')]['push']({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444['priority']++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});_0x2c1444['extensions'][_0x2703('0x1a')]({'type':_0x5b4c58[_0x4b582c][0x0]['type'],'app':_0x2703('0x11'),'appdata':_0x2703('0x22')+_0x2c1444[_0x2703('0x16')][_0x2703('0x20')]||'wav','context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444[_0x2703('0xd')]++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0]['VoiceExtensionId']});}}_0x2c1444[_0x2703('0xe')][_0x2703('0x1a')]({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':'Set','appdata':_0x2703('0x23'),'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'priority':_0x2c1444[_0x2703('0xd')]++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});_0x2c1444[_0x2703('0xe')]['push']({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':_0x2703('0x24'),'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0]['exten'],'priority':_0x2c1444[_0x2703('0xd')]++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});_0x2c1444[_0x2703('0xe')]['push']({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':_0x2703('0x25'),'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'exten':_0x5b4c58[_0x4b582c][0x0]['exten'],'priority':_0x2c1444['priority']++,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]});for(var _0xdffc52=0x0,_0xd3156=0x0;_0xdffc52<_0x5b4c58[_0x4b582c][_0x2703('0x26')];_0xdffc52+=0x1,_0xd3156=0x0){var _0xe2b76a=_0x5b4c58[_0x4b582c][_0xdffc52];if(_0xe2b76a[_0x2703('0x10')]){_0xe2b76a[_0x2703('0x10')]=_0xe2b76a['type'][_0x2703('0x27')]();}var _0x3592f2=[];var _0x51b382=[];delete _0xe2b76a['id'];delete _0xe2b76a['createdAt'];delete _0xe2b76a[_0x2703('0x28')];var _0xa0327d=_0xe2b76a[_0x2703('0x29')]!==_0x2703('0x2a')?[_0xe2b76a[_0x2703('0x29')]]:_0xe2b76a[_0x2703('0x2b')]?_[_0x2703('0x7')](_[_0x2703('0x8')](_0x2c1444[_0x2703('0x3')],{'IntervalId':_0xe2b76a['IntervalId']}),_0x2703('0x29')):[];if(_0xe2b76a[_0x2703('0xc')](_0x2703('0x2c'))){if(_0xe2b76a[_0x2703('0x2c')]&&_0xe2b76a[_0x2703('0x2c')]!=='--'){_0x3592f2[_0x2703('0x1a')]({'type':_0xe2b76a['type'],'app':_0x2703('0x11'),'appdata':'CDR(tag)='+_0xe2b76a['tag'],'context':_0xe2b76a[_0x2703('0x12')],'exten':_0xe2b76a[_0x2703('0xa')],'priority':_0xa0327d['length']+_0x2c1444[_0x2703('0xd')]+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});}}if(_0xe2b76a[_0x2703('0x10')]===_0x2703('0x2d')&&_0xe2b76a[_0x2703('0xc')](_0x2703('0x2e'))){if(_0xe2b76a[_0x2703('0x2e')]){_0x3592f2[_0x2703('0x1a')]({'type':_0xe2b76a[_0x2703('0x10')],'app':_0x2703('0x1b'),'appdata':_0x2703('0x2f')+_0xe2b76a[_0x2703('0x2e')]+')','context':_0xe2b76a[_0x2703('0x12')],'exten':_0xe2b76a[_0x2703('0xa')],'priority':_0xa0327d[_0x2703('0x26')]+_0x2c1444[_0x2703('0xd')]+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});}else{_0x3592f2['push']({'type':_0xe2b76a['type'],'app':_0x2703('0x1b'),'appdata':_0x2703('0x30'),'context':_0xe2b76a[_0x2703('0x12')],'exten':_0xe2b76a[_0x2703('0xa')],'priority':_0xa0327d[_0x2703('0x26')]+_0x2c1444[_0x2703('0xd')]+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});}}if(_0xe2b76a[_0x2703('0xc')](_0x2703('0x31'))){if(_0x4475ea[_0x2703('0x32')](_0xe2b76a[_0x2703('0x33')][_0x2703('0x27')]())>=0x0&&_0xe2b76a[_0x2703('0x34')]!=='custom'){if(_0xe2b76a['answer']){_0x3592f2[_0x2703('0x1a')]({'type':_0xe2b76a['type'],'app':_0x2703('0x1b'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0xe2b76a[_0x2703('0x12')],'exten':_0xe2b76a[_0x2703('0xa')],'priority':_0xa0327d['length']+_0x2c1444[_0x2703('0xd')]+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});_0x3592f2[_0x2703('0x1a')]({'type':_0xe2b76a[_0x2703('0x10')],'app':'Set','appdata':_0x2703('0x35'),'context':_0xe2b76a[_0x2703('0x12')],'exten':_0xe2b76a['exten'],'priority':_0xa0327d[_0x2703('0x26')]+_0x2c1444[_0x2703('0xd')]+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});}else{_0x3592f2[_0x2703('0x1a')]({'type':_0xe2b76a['type'],'app':_0x2703('0x1b'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0xe2b76a[_0x2703('0x12')],'exten':_0xe2b76a['exten'],'priority':_0xa0327d['length']+_0x2c1444['priority']+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});_0x3592f2[_0x2703('0x1a')]({'type':_0xe2b76a[_0x2703('0x10')],'app':_0x2703('0x11'),'appdata':_0x2703('0x36'),'context':_0xe2b76a['context'],'exten':_0xe2b76a[_0x2703('0xa')],'priority':_0xa0327d[_0x2703('0x26')]+_0x2c1444[_0x2703('0xd')]+_0xd3156++,'VoiceExtensionId':_0xe2b76a[_0x2703('0x13')]});}}}for(var _0x47903b=0x0;_0x47903b<_0xa0327d[_0x2703('0x26')];_0x47903b+=0x1){var _0x5bc563=_0x2c1444['priority']+_0xa0327d[_0x2703('0x26')];var _0x51555d=_0x47903b===_0xa0327d['length']-0x1?_0x2c1444[_0x2703('0xd')]+_0x3592f2['length']+_0x51b382['length']+0x2:_0x2c1444[_0x2703('0xd')]+_0x47903b+0x1;_0x3592f2[_0x2703('0x37')](_0x47903b,0x0,{'type':_0xe2b76a[_0x2703('0x10')],'app':_0x2703('0x38'),'appdata':_0xa0327d[_0x47903b]+'?'+_0xe2b76a['context']+_0x2703('0x39')+_0x5bc563+':'+_0xe2b76a[_0x2703('0x12')]+_0x2703('0x39')+_0x51555d,'exten':_0xe2b76a[_0x2703('0xa')],'context':_0xe2b76a[_0x2703('0x12')],'priority':_0x2c1444[_0x2703('0xd')]+_0x47903b,'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0]['VoiceExtensionId']});}_0xe2b76a['priority']=_0x3592f2['length']?_[_0x2703('0x3a')](_0x3592f2)['priority']+0x1:_0x2c1444['priority'];_0x2c1444[_0x2703('0xd')]=(_0x51b382['length']?_[_0x2703('0x3a')](_0x51b382)[_0x2703('0xd')]:_0xe2b76a[_0x2703('0xd')])+0x1;_0x2c1444[_0x2703('0xe')]=_[_0x2703('0x3b')](_0x2c1444[_0x2703('0xe')],_0x3592f2,[_0xe2b76a],_0x51b382);}_0x2c1444[_0x2703('0xe')][_0x2703('0x1a')]({'type':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x10')],'app':'Hangup','exten':_0x5b4c58[_0x4b582c][0x0][_0x2703('0xa')],'context':_0x5b4c58[_0x4b582c][0x0][_0x2703('0x12')],'priority':_0x2c1444[_0x2703('0xd')],'VoiceExtensionId':_0x5b4c58[_0x4b582c][0x0]['VoiceExtensionId']});_0x8e1d26[_0x2703('0x1a')](_0x5b4c58[_0x4b582c][0x0][_0x2703('0x13')]);_0x2f077b=_['concat'](_0x2f077b,_0x2c1444['extensions']);}}return _0x143ba4['transaction'](function(_0x286aff){return _0x143ba4[_0x2703('0x1')][_0x2703('0x4')][_0x2703('0x3c')]({'where':{'VoiceExtensionId':{'$in':_0x8e1d26}},'transaction':_0x286aff})[_0x2703('0x2')](function(_0x111ec6){return _0x143ba4[_0x2703('0x1')][_0x2703('0x4')]['bulkCreate'](_[_0x2703('0x3d')](_0x2f077b,_0x2703('0xd')),{'transaction':_0x286aff});});});})[_0x2703('0x3e')](function(_0x2cfbaf){console[_0x2703('0x3f')](_0x2cfbaf);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x69f2=['CDR(tag)=','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','app','toLowerCase','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','Hangup','concat','transaction','bulkCreate','sortBy','catch','error','rewrite','lodash','util','Interval','findAll','intervals','models','VoiceExtension','IntervalId','then','map','exten','filter','queue','playback','extensions','extension','push','type','Set','format','CDR(type)=%s','context','priority','VoiceExtensionId','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','createdAt','updatedAt','interval','*,*,*,*','tag'];(function(_0x5d7fbb,_0x48a391){var _0x40c2a5=function(_0x23e47f){while(--_0x23e47f){_0x5d7fbb['push'](_0x5d7fbb['shift']());}};_0x40c2a5(++_0x48a391);}(_0x69f2,0x14c));var _0x269f=function(_0x166dc3,_0x5790d7){_0x166dc3=_0x166dc3-0x0;var _0x38ec55=_0x69f2[_0x166dc3];return _0x38ec55;};'use strict';var _=require(_0x269f('0x0'));var util=require(_0x269f('0x1'));function rewrite(_0xd40741,_0x34c1bc){var _0xe9a525=this;return _0xd40741['models'][_0x269f('0x2')][_0x269f('0x3')]({'raw':!![]})['then'](function(_0x1c3cb8){_0xe9a525[_0x269f('0x4')]=_0x1c3cb8;return _0xd40741[_0x269f('0x5')][_0x269f('0x6')][_0x269f('0x3')]({'where':{'IntervalId':_0x34c1bc[_0x269f('0x7')]},'raw':!![]});})[_0x269f('0x8')](function(_0x17c77b){return _0xd40741['models'][_0x269f('0x6')]['findAll']({'where':{'exten':{'$in':_['uniq'](_[_0x269f('0x9')](_0x17c77b,_0x269f('0xa')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x269f('0x8')](function(_0x2ccc85){var _0x5514f2=_[_0x269f('0xb')](_0x2ccc85,{'priority':'1'});var _0x1c8be0=_[_0x269f('0xb')](_0x2ccc85,{'isApp':0x1});var _0x1c5fc8=_['groupBy'](_0x1c8be0,_0x269f('0xa'));var _0xcaf0ce=[_0x269f('0xc'),_0x269f('0xd')];var _0x330732=[];var _0x4d84bf=[];for(var _0x2dc606 in _0x1c5fc8){if(_0x1c5fc8['hasOwnProperty'](_0x2dc606)){_0xe9a525['priority']=0x2;_0xe9a525[_0x269f('0xe')]=[];_0xe9a525[_0x269f('0xf')]=_['find'](_0x5514f2,{'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')]});_0xe9a525[_0x269f('0xe')][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x12'),'appdata':util[_0x269f('0x13')](_0x269f('0x14'),_0x1c5fc8[_0x2dc606][0x0]['type']),'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0]['exten'],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});if(_0x1c5fc8[_0x2dc606][0x0]['type']==='inbound'){_0xe9a525[_0x269f('0xe')][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':'Set','appdata':_0x269f('0x18')+_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId'],'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId']});}else if(_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')]===_0x269f('0x19')){if(_0xe9a525['extension']){_0xe9a525[_0x269f('0xe')]['push']({'type':_0x1c5fc8[_0x2dc606][0x0]['type'],'app':_0x269f('0x12'),'appdata':_0x269f('0x1a')+(_0xe9a525[_0x269f('0xf')][_0x269f('0x1b')]?_0x269f('0x1c')+_0xe9a525['extension']['cutdigits']+'}':_0x269f('0x1d')),'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId']});}_0xe9a525[_0x269f('0xe')]['push']({'type':_0x1c5fc8[_0x2dc606][0x0]['type'],'app':_0x269f('0x12'),'appdata':_0x269f('0x18')+_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')],'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});var _0x2cbed5=_0xe9a525[_0x269f('0x16')]++;_0xe9a525[_0x269f('0xe')][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':'ExecIf','appdata':_0x269f('0x1e')+(_0x2cbed5+0x2)+_0x269f('0x1f')+(_0x2cbed5+0x1)+')','context':_0x1c5fc8[_0x2dc606][0x0]['context'],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0x2cbed5,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});if(_0xe9a525['extension']){_0xe9a525['extensions'][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x12'),'appdata':_0xe9a525[_0x269f('0xf')][_0x269f('0x1b')]?_0x269f('0x20')+_0xe9a525[_0x269f('0xf')]['cutdigits']+'}':_0x269f('0x21'),'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId']});}_0xe9a525[_0x269f('0xe')][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0]['type'],'app':_0x269f('0x12'),'appdata':_0x269f('0x22')+_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId'],'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});if(_0xe9a525[_0x269f('0xf')]&&_0xe9a525[_0x269f('0xf')][_0x269f('0x23')]('recordingFormat')&&_0xe9a525[_0x269f('0xf')][_0x269f('0x24')]!==_0x269f('0x25')){_0xe9a525[_0x269f('0xe')][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x12'),'appdata':_0x269f('0x26'),'context':_0x1c5fc8[_0x2dc606][0x0]['context'],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});_0xe9a525[_0x269f('0xe')][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x12'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0xe9a525['extension'][_0x269f('0x24')]||_0x269f('0x27'),'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});}}_0xe9a525['extensions'][_0x269f('0x10')]({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x12'),'appdata':_0x269f('0x28'),'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});_0xe9a525['extensions']['push']({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x12'),'appdata':_0x269f('0x29'),'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525[_0x269f('0x16')]++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});_0xe9a525['extensions']['push']({'type':_0x1c5fc8[_0x2dc606][0x0]['type'],'app':_0x269f('0x12'),'appdata':_0x269f('0x2a'),'context':_0x1c5fc8[_0x2dc606][0x0]['context'],'exten':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0xa')],'priority':_0xe9a525['priority']++,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]});for(var _0xebae64=0x0,_0x4137c7=0x0;_0xebae64<_0x1c5fc8[_0x2dc606]['length'];_0xebae64+=0x1,_0x4137c7=0x0){var _0x17150d=_0x1c5fc8[_0x2dc606][_0xebae64];if(_0x17150d[_0x269f('0x11')]){_0x17150d[_0x269f('0x11')]=_0x17150d[_0x269f('0x11')]['toLowerCase']();}var _0x204439=[];var _0x4e7dc2=[];delete _0x17150d['id'];delete _0x17150d[_0x269f('0x2b')];delete _0x17150d[_0x269f('0x2c')];var _0x19a5a1=_0x17150d[_0x269f('0x2d')]!==_0x269f('0x2e')?[_0x17150d[_0x269f('0x2d')]]:_0x17150d[_0x269f('0x7')]?_[_0x269f('0x9')](_[_0x269f('0xb')](_0xe9a525[_0x269f('0x4')],{'IntervalId':_0x17150d[_0x269f('0x7')]}),_0x269f('0x2d')):[];if(_0x17150d[_0x269f('0x23')]('tag')){if(_0x17150d['tag']&&_0x17150d[_0x269f('0x2f')]!=='--'){_0x204439[_0x269f('0x10')]({'type':_0x17150d[_0x269f('0x11')],'app':'Set','appdata':_0x269f('0x30')+_0x17150d[_0x269f('0x2f')],'context':_0x17150d['context'],'exten':_0x17150d[_0x269f('0xa')],'priority':_0x19a5a1[_0x269f('0x31')]+_0xe9a525[_0x269f('0x16')]+_0x4137c7++,'VoiceExtensionId':_0x17150d['VoiceExtensionId']});}}if(_0x17150d[_0x269f('0x11')]===_0x269f('0x19')&&_0x17150d['hasOwnProperty']('callerID')){if(_0x17150d[_0x269f('0x32')]){_0x204439[_0x269f('0x10')]({'type':_0x17150d[_0x269f('0x11')],'app':'ExecIf','appdata':_0x269f('0x33')+_0x17150d['callerID']+')','context':_0x17150d[_0x269f('0x15')],'exten':_0x17150d['exten'],'priority':_0x19a5a1[_0x269f('0x31')]+_0xe9a525[_0x269f('0x16')]+_0x4137c7++,'VoiceExtensionId':_0x17150d[_0x269f('0x17')]});}else{_0x204439[_0x269f('0x10')]({'type':_0x17150d['type'],'app':_0x269f('0x34'),'appdata':_0x269f('0x35'),'context':_0x17150d[_0x269f('0x15')],'exten':_0x17150d[_0x269f('0xa')],'priority':_0x19a5a1['length']+_0xe9a525[_0x269f('0x16')]+_0x4137c7++,'VoiceExtensionId':_0x17150d[_0x269f('0x17')]});}}if(_0x17150d[_0x269f('0x23')]('answer')){if(_0xcaf0ce[_0x269f('0x36')](_0x17150d[_0x269f('0x37')][_0x269f('0x38')]())>=0x0&&_0x17150d[_0x269f('0x39')]!==_0x269f('0x3a')){if(_0x17150d[_0x269f('0x3b')]){_0x204439['push']({'type':_0x17150d[_0x269f('0x11')],'app':'ExecIf','appdata':_0x269f('0x3c'),'context':_0x17150d[_0x269f('0x15')],'exten':_0x17150d[_0x269f('0xa')],'priority':_0x19a5a1[_0x269f('0x31')]+_0xe9a525[_0x269f('0x16')]+_0x4137c7++,'VoiceExtensionId':_0x17150d[_0x269f('0x17')]});_0x204439['push']({'type':_0x17150d[_0x269f('0x11')],'app':'Set','appdata':_0x269f('0x3d'),'context':_0x17150d[_0x269f('0x15')],'exten':_0x17150d['exten'],'priority':_0x19a5a1[_0x269f('0x31')]+_0xe9a525['priority']+_0x4137c7++,'VoiceExtensionId':_0x17150d[_0x269f('0x17')]});}else{_0x204439[_0x269f('0x10')]({'type':_0x17150d[_0x269f('0x11')],'app':'ExecIf','appdata':_0x269f('0x3e'),'context':_0x17150d[_0x269f('0x15')],'exten':_0x17150d[_0x269f('0xa')],'priority':_0x19a5a1[_0x269f('0x31')]+_0xe9a525[_0x269f('0x16')]+_0x4137c7++,'VoiceExtensionId':_0x17150d[_0x269f('0x17')]});_0x204439[_0x269f('0x10')]({'type':_0x17150d[_0x269f('0x11')],'app':'Set','appdata':_0x269f('0x3f'),'context':_0x17150d['context'],'exten':_0x17150d[_0x269f('0xa')],'priority':_0x19a5a1['length']+_0xe9a525[_0x269f('0x16')]+_0x4137c7++,'VoiceExtensionId':_0x17150d[_0x269f('0x17')]});}}}for(var _0x3648f1=0x0;_0x3648f1<_0x19a5a1[_0x269f('0x31')];_0x3648f1+=0x1){var _0x472021=_0xe9a525[_0x269f('0x16')]+_0x19a5a1[_0x269f('0x31')];var _0x1f106f=_0x3648f1===_0x19a5a1[_0x269f('0x31')]-0x1?_0xe9a525[_0x269f('0x16')]+_0x204439[_0x269f('0x31')]+_0x4e7dc2[_0x269f('0x31')]+0x2:_0xe9a525[_0x269f('0x16')]+_0x3648f1+0x1;_0x204439[_0x269f('0x40')](_0x3648f1,0x0,{'type':_0x17150d[_0x269f('0x11')],'app':_0x269f('0x41'),'appdata':_0x19a5a1[_0x3648f1]+'?'+_0x17150d[_0x269f('0x15')]+_0x269f('0x42')+_0x472021+':'+_0x17150d['context']+_0x269f('0x42')+_0x1f106f,'exten':_0x17150d[_0x269f('0xa')],'context':_0x17150d[_0x269f('0x15')],'priority':_0xe9a525['priority']+_0x3648f1,'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId']});}_0x17150d[_0x269f('0x16')]=_0x204439['length']?_[_0x269f('0x43')](_0x204439)[_0x269f('0x16')]+0x1:_0xe9a525[_0x269f('0x16')];_0xe9a525[_0x269f('0x16')]=(_0x4e7dc2['length']?_['last'](_0x4e7dc2)[_0x269f('0x16')]:_0x17150d[_0x269f('0x16')])+0x1;_0xe9a525[_0x269f('0xe')]=_['concat'](_0xe9a525[_0x269f('0xe')],_0x204439,[_0x17150d],_0x4e7dc2);}_0xe9a525[_0x269f('0xe')]['push']({'type':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x11')],'app':_0x269f('0x44'),'exten':_0x1c5fc8[_0x2dc606][0x0]['exten'],'context':_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x15')],'priority':_0xe9a525['priority'],'VoiceExtensionId':_0x1c5fc8[_0x2dc606][0x0]['VoiceExtensionId']});_0x330732[_0x269f('0x10')](_0x1c5fc8[_0x2dc606][0x0][_0x269f('0x17')]);_0x4d84bf=_[_0x269f('0x45')](_0x4d84bf,_0xe9a525[_0x269f('0xe')]);}}return _0xd40741[_0x269f('0x46')](function(_0x122d49){return _0xd40741[_0x269f('0x5')][_0x269f('0x6')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x330732}},'transaction':_0x122d49})['then'](function(_0x591f85){return _0xd40741['models']['VoiceExtension'][_0x269f('0x47')](_[_0x269f('0x48')](_0x4d84bf,'priority'),{'transaction':_0x122d49});});});})[_0x269f('0x49')](function(_0x53b342){console[_0x269f('0x4a')](_0x53b342);});}exports[_0x269f('0x4b')]=rewrite;
\ No newline at end of file
index 4dabf46..d8de514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b8=['../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','errors','length','map','join','data','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','keys','then','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','createdAt','updatedAt','select','field','ContactId','toString','NOW()','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','str','cm_hopper_final','cm_contacts','id\x20IN\x20?','cm_hopper_black','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','always','push','sequelize','query','VoiceQueueId','VoiceQueue','BlackLists','all','Campaign','onlyIfOpen','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','finally','emit','contact:csv_','resolve','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter'];(function(_0x103348,_0x54e8cc){var _0x4e34b2=function(_0x36cfd5){while(--_0x36cfd5){_0x103348['push'](_0x103348['shift']());}};_0x4e34b2(++_0x54e8cc);}(_0x64b8,0x1ad));var _0x864b=function(_0x1fd453,_0x28c02d){_0x1fd453=_0x1fd453-0x0;var _0x1dde12=_0x64b8[_0x1fd453];return _0x1dde12;};'use strict';var BPromise=require('bluebird');var util=require(_0x864b('0x0'));var _=require('lodash');var fs=require('fs');var squel=require(_0x864b('0x1'));var Papa=require('papaparse');var Redis=require(_0x864b('0x2'));var db=require(_0x864b('0x3'))['db'];var config=require(_0x864b('0x4'));var logger=require(_0x864b('0x5'))(_0x864b('0x6'));config[_0x864b('0x7')]=_[_0x864b('0x8')](config['redis'],{'host':_0x864b('0x9'),'port':0x18eb});var socket=require(_0x864b('0xa'))(new Redis(config[_0x864b('0x7')]));require(_0x864b('0xb'))[_0x864b('0xc')](socket);try{if(!process[_0x864b('0xd')][0x2]||process['argv'][0x2]===_0x864b('0xe')||process['argv'][0x2]==='null'){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process['argv'][0x2];if(!process[_0x864b('0xd')][0x3]||process[_0x864b('0xd')][0x3]===_0x864b('0xe')||process[_0x864b('0xd')][0x3]===_0x864b('0xf')||!process['argv'][0x4]||process['argv'][0x4]===_0x864b('0xe')||process['argv'][0x4]==='null'){throw new Error(_0x864b('0x10'));}var FIELDS=_[_0x864b('0x11')](process['argv'][0x3][_0x864b('0x12')](','),process[_0x864b('0xd')][0x4][_0x864b('0x12')](','));if(!process['argv'][0x5]||process['argv'][0x5]===_0x864b('0xe')||process[_0x864b('0xd')][0x5]==='null'){throw new Error(_0x864b('0x13'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x864b('0xd')][0x6]&&process[_0x864b('0xd')][0x6]!=='undefined'&&process[_0x864b('0xd')][0x6]!==_0x864b('0xf')?process[_0x864b('0xd')][0x6]:null;var DUPLICATES=process[_0x864b('0xd')][0x7]&&process[_0x864b('0xd')][0x7]!==_0x864b('0xe')&&process[_0x864b('0xd')][0x7]!==_0x864b('0xf')?process[_0x864b('0xd')][0x7]:null;if(!process[_0x864b('0xd')][0x8]||process[_0x864b('0xd')][0x8]===_0x864b('0xe')||process['argv'][0x8]===_0x864b('0xf')){throw new Error(_0x864b('0x14'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x497a57){logger[_0x864b('0x15')](_0x497a57);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(_0x5546dd,_0x520997,_0x18eddc,_0x2afa57){var _0x5f20d5={'message':_0x520997};_0x5f20d5[_0x5546dd]=!![];if(_0x18eddc){_0x5f20d5[_0x864b('0x16')]=_0x18eddc;}if(_0x2afa57){_0x5f20d5[_0x864b('0x17')]=_0x2afa57;}return _0x5f20d5;}function isEmail(_0x24f87a){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))*$/[_0x864b('0x18')](_0x24f87a);}function checkRow(_0x4476b8,_0xa7b760,_0x3265ce){return new BPromise(function(_0x238c7d,_0x416e5a){if(_[_0x864b('0x19')](_0x4476b8)){return _0x416e5a(handleCheckRowError('error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x3265ce));}if(_0x4476b8[_0x864b('0x1a')]&&_0x4476b8[_0x864b('0x1a')][_0x864b('0x1b')]){var _0x57e1c3=_[_0x864b('0x1c')](_0x4476b8[_0x864b('0x1a')],'message')[_0x864b('0x1d')](';');return _0x416e5a(handleCheckRowError(_0x864b('0x15'),_0x57e1c3,null,_0x3265ce));}var _0x49a39f={};for(var _0x17a781 in FIELDS){if(FIELDS['hasOwnProperty'](_0x17a781)&&FIELDS[_0x17a781]){_0x49a39f[_0x17a781]=_0x4476b8[_0x864b('0x1e')][0x0][FIELDS[_0x17a781]]||_0x4476b8['data'][0x0]['\ufeff'+FIELDS[_0x17a781]];}}if(!_0x49a39f['firstName']){return _0x416e5a(handleCheckRowError(_0x864b('0x15'),'firstName\x20not\x20specified!',null,_0x3265ce));}if(!_0x49a39f[_0x864b('0x1f')]){return _0x416e5a(handleCheckRowError('error',_0x864b('0x20'),null,_0x3265ce));}if(_0x49a39f['birthDate']){var _0x54af8b=moment(_0x49a39f[_0x864b('0x21')],_0x864b('0x22'));if(!_0x54af8b[_0x864b('0x23')]()){return _0x416e5a(handleCheckRowError(_0x864b('0x15'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x3265ce));}}if(_0x49a39f['email']){if(!isEmail(_0x49a39f[_0x864b('0x24')])){return _0x416e5a(handleCheckRowError(_0x864b('0x15'),_0x864b('0x25'),null,_0x3265ce));}}_0x49a39f[_0x864b('0x26')]=LISTID;_0x49a39f[_0x864b('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0xa7b760){var _0x32ac8e={};for(var _0x312813=0x0,_0x2ba5ea=DUPLICATES[_0x864b('0x1b')];_0x312813<_0x2ba5ea;_0x312813+=0x1){_0x32ac8e[DUPLICATES[_0x312813]]=_0x49a39f[DUPLICATES[_0x312813]];}var _0x4b3787=_[_0x864b('0x28')](_0xa7b760,_0x32ac8e);if(_0x4b3787){return _0x416e5a(handleCheckRowError(_0x864b('0x29'),_0x864b('0x2a'),_0x4b3787,_0x3265ce));}}return db[_0x864b('0x2b')]['create'](_0x49a39f,{'raw':!![],'hooks':![],'fields':_[_0x864b('0x2c')](_0x49a39f)})[_0x864b('0x2d')](function(_0x1bad6){if(DUPLICATES&&DUPLICATES[_0x864b('0x1b')]&&_0xa7b760){_0xa7b760['push'](_['pick'](_0x49a39f,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x1bad6['id'];return _0x238c7d();})[_0x864b('0x2e')](function(_0x3b7463){return _0x416e5a(handleCheckRowError('error',_0x864b('0x2f')+(_0x3b7463[_0x864b('0x30')]||JSON[_0x864b('0x31')](_0x3b7463)),null,_0x3265ce));});});}function checkHopper(){function _0x4bcee6(){return function(_0x22f9c2){logger[_0x864b('0x15')](_0x864b('0x32'),_0x864b('0x33'),util[_0x864b('0x34')](_0x22f9c2,{'showHidden':![],'depth':null}));};}var _0x565d1c=function(_0xfde330,_0x2b9141){var _0xca2f61=squel[_0x864b('0x35')]()[_0x864b('0x36')](_0x864b('0x37'))[_0x864b('0x38')]([_0x864b('0x1f'),_0x864b('0x39'),'ContactId','ListId',_0x2b9141,_0x864b('0x3a'),_0x864b('0x3b')],squel[_0x864b('0x3c')]()[_0x864b('0x3d')](_0x864b('0x1f'),_0x864b('0x1f'))[_0x864b('0x3d')]('NOW()','scheduledAt')[_0x864b('0x3d')]('id',_0x864b('0x3e'))[_0x864b('0x3d')](LISTID['toString'](),_0x864b('0x26'))[_0x864b('0x3d')](_0xfde330['id'][_0x864b('0x3f')](),_0x2b9141)[_0x864b('0x3d')](_0x864b('0x40'),_0x864b('0x3a'))[_0x864b('0x3d')]('NOW()','updatedAt')[_0x864b('0x41')]('cm_contacts')[_0x864b('0x42')](_0x864b('0x43'))[_0x864b('0x42')](_0x864b('0x44'),LISTID[_0x864b('0x3f')]())['where'](_0x864b('0x45'))[_0x864b('0x42')](_0x864b('0x46'),squel[_0x864b('0x3c')]()[_0x864b('0x3d')](_0x864b('0x1f'))[_0x864b('0x41')](_0x864b('0x37'))[_0x864b('0x42')](_0x2b9141+_0x864b('0x47'),_0xfde330['id'][_0x864b('0x3f')]())))[_0x864b('0x3f')]();return _0xca2f61;};var _0x465d19=function(_0x2ca46e,_0x12bde3){var _0x180ba8=squel['insert']()[_0x864b('0x36')]('cm_hopper')['fromQuery']([_0x864b('0x1f'),_0x864b('0x39'),'ContactId',_0x864b('0x26'),_0x12bde3,'createdAt','updatedAt'],squel[_0x864b('0x3c')]()['field'](_0x864b('0x1f'),_0x864b('0x1f'))[_0x864b('0x3d')](_0x864b('0x40'),'scheduledAt')[_0x864b('0x3d')]('id','ContactId')[_0x864b('0x3d')](LISTID[_0x864b('0x3f')](),_0x864b('0x26'))[_0x864b('0x3d')](_0x2ca46e['id'][_0x864b('0x3f')](),_0x12bde3)[_0x864b('0x3d')](_0x864b('0x40'),'createdAt')['field']('NOW()',_0x864b('0x3b'))[_0x864b('0x41')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x864b('0x42')](_0x864b('0x44'),LISTID[_0x864b('0x3f')]())[_0x864b('0x42')]('id\x20IN\x20?',squel[_0x864b('0x48')](hopperContacts))[_0x864b('0x42')](_0x864b('0x45'))['where'](_0x864b('0x46'),squel[_0x864b('0x3c')]()[_0x864b('0x3d')]('calleridnum')[_0x864b('0x41')](_0x864b('0x49'))['where'](_0x12bde3+'\x20=\x20?',_0x2ca46e['id']['toString']()))['where'](_0x864b('0x46'),squel[_0x864b('0x3c')]()[_0x864b('0x3d')]('phone')[_0x864b('0x41')](_0x864b('0x37'))['where'](_0x12bde3+_0x864b('0x47'),_0x2ca46e['id']['toString']())))[_0x864b('0x3f')]();return _0x180ba8;};function _0x3628b5(_0x15038a,_0x3cfe03){var _0x36aed5=squel[_0x864b('0x35')]()[_0x864b('0x36')](_0x864b('0x37'))['fromQuery']([_0x864b('0x1f'),_0x864b('0x39'),_0x864b('0x3e'),_0x864b('0x26'),_0x3cfe03,'createdAt',_0x864b('0x3b')],squel[_0x864b('0x3c')]()[_0x864b('0x3d')](_0x864b('0x1f'),_0x864b('0x1f'))[_0x864b('0x3d')](_0x864b('0x40'),_0x864b('0x39'))['field']('id',_0x864b('0x3e'))[_0x864b('0x3d')](LISTID[_0x864b('0x3f')](),_0x864b('0x26'))[_0x864b('0x3d')](_0x15038a['id'][_0x864b('0x3f')](),_0x3cfe03)[_0x864b('0x3d')](_0x864b('0x40'),'createdAt')['field'](_0x864b('0x40'),_0x864b('0x3b'))[_0x864b('0x41')](_0x864b('0x4a'))[_0x864b('0x42')](_0x864b('0x43'))['where'](_0x864b('0x44'),LISTID[_0x864b('0x3f')]())[_0x864b('0x42')](_0x864b('0x4b'),squel[_0x864b('0x48')](hopperContacts))[_0x864b('0x42')](_0x864b('0x45')))[_0x864b('0x3f')]();return _0x36aed5;}function _0x3cc8c9(_0x228542,_0x554853){var _0x2a283c=squel[_0x864b('0x35')]()[_0x864b('0x36')](_0x864b('0x4c'))['fromQuery']([_0x864b('0x1f'),'ContactId','ListId',_0x554853,'createdAt',_0x864b('0x3b')],squel['select']()[_0x864b('0x3d')](_0x864b('0x1f'),'phone')[_0x864b('0x3d')]('id',_0x864b('0x3e'))[_0x864b('0x3d')](LISTID[_0x864b('0x3f')](),'ListId')['field'](_0x228542['id'][_0x864b('0x3f')](),_0x554853)['field'](_0x864b('0x40'),_0x864b('0x3a'))[_0x864b('0x3d')](_0x864b('0x40'),_0x864b('0x3b'))[_0x864b('0x41')](_0x864b('0x4a'))[_0x864b('0x42')](_0x864b('0x43'))[_0x864b('0x42')](_0x864b('0x44'),LISTID[_0x864b('0x3f')]())[_0x864b('0x42')](_0x864b('0x4b'),squel[_0x864b('0x48')](hopperContacts))[_0x864b('0x42')](_0x864b('0x45')))['toString']();return _0x2a283c;}return db['VoiceQueue'][_0x864b('0x4d')]({'where':{'type':_0x864b('0x4e')},'attributes':['id',_0x864b('0x4f')],'include':[{'model':db[_0x864b('0x50')],'as':_0x864b('0x51'),'where':{'id':LISTID}}]})[_0x864b('0x2d')](function(_0x18ded4){var _0x9d78b8=[];if(_0x18ded4){var _0x59064f;for(var _0x187278=0x0,_0x441c7e;_0x187278<_0x18ded4[_0x864b('0x1b')];_0x187278+=0x1){_0x441c7e=_0x18ded4[_0x187278][_0x864b('0x52')]({'plain':!![]});switch(_0x441c7e['dialCheckDuplicateType']){case _0x864b('0x53'):_0x9d78b8['push'](db['sequelize']['query'](_0x465d19(_0x441c7e,'VoiceQueueId'))[_0x864b('0x2d')](function(){})[_0x864b('0x2e')](_0x4bcee6()));break;case'onlyIfOpen':_0x9d78b8[_0x864b('0x54')](db[_0x864b('0x55')][_0x864b('0x56')](_0x565d1c(_0x441c7e,'VoiceQueueId'))['then'](function(){})[_0x864b('0x2e')](_0x4bcee6()));break;default:_0x9d78b8[_0x864b('0x54')](db[_0x864b('0x55')][_0x864b('0x56')](_0x3628b5(_0x441c7e,_0x864b('0x57')))[_0x864b('0x2d')](function(){})['catch'](_0x4bcee6()));}}}return _0x9d78b8;})['all']()[_0x864b('0x2d')](function(){return db[_0x864b('0x58')][_0x864b('0x4d')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x864b('0x50')],'as':_0x864b('0x59'),'where':{'id':LISTID}}]})[_0x864b('0x2d')](function(_0x1da663){var _0x1c68b5=[];if(_0x1da663){var _0x3d59c5;for(var _0xaabd91=0x0,_0x5a543d;_0xaabd91<_0x1da663[_0x864b('0x1b')];_0xaabd91+=0x1){_0x5a543d=_0x1da663[_0xaabd91]['get']({'plain':!![]});_0x1c68b5[_0x864b('0x54')](db[_0x864b('0x55')]['query'](_0x3cc8c9(_0x5a543d,_0x864b('0x57')))[_0x864b('0x2d')](function(){})[_0x864b('0x2e')](_0x4bcee6()));}}return _0x1c68b5;})[_0x864b('0x5a')]();})['then'](function(){return db[_0x864b('0x5b')][_0x864b('0x4d')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x864b('0x50')],'as':'Lists','where':{'id':LISTID}}]})[_0x864b('0x2d')](function(_0xae7348){var _0x2ac75a=[];if(_0xae7348){for(var _0x58ae7a=0x0,_0x4297c5;_0x58ae7a<_0xae7348[_0x864b('0x1b')];_0x58ae7a+=0x1){_0x4297c5=_0xae7348[_0x58ae7a][_0x864b('0x52')]({'plain':!![]});switch(_0x4297c5[_0x864b('0x4f')]){case _0x864b('0x53'):_0x2ac75a[_0x864b('0x54')](db[_0x864b('0x55')][_0x864b('0x56')](_0x465d19(_0x4297c5,'CampaignId'))[_0x864b('0x2d')](function(){})[_0x864b('0x2e')](_0x4bcee6()));break;case _0x864b('0x5c'):_0x2ac75a[_0x864b('0x54')](db[_0x864b('0x55')][_0x864b('0x56')](_0x565d1c(_0x4297c5,'CampaignId'))['then'](function(){})[_0x864b('0x2e')](_0x4bcee6()));break;default:_0x2ac75a['push'](db[_0x864b('0x55')]['query'](_0x3628b5(_0x4297c5,_0x864b('0x5d')))['then'](function(){})[_0x864b('0x2e')](_0x4bcee6()));}}}return _0x2ac75a;})[_0x864b('0x5a')]();})[_0x864b('0x2d')](function(){return db[_0x864b('0x5b')][_0x864b('0x4d')]({'attributes':['id'],'include':[{'model':db[_0x864b('0x50')],'as':_0x864b('0x59'),'where':{'id':LISTID}}]})[_0x864b('0x2d')](function(_0x2df2fe){var _0x245a64=[];if(_0x2df2fe){for(var _0xc6b1d2=0x0,_0x4c262f;_0xc6b1d2<_0x2df2fe[_0x864b('0x1b')];_0xc6b1d2+=0x1){_0x4c262f=_0x2df2fe[_0xc6b1d2][_0x864b('0x52')]({'plain':!![]});_0x245a64[_0x864b('0x54')](db['sequelize'][_0x864b('0x56')](_0x3cc8c9(_0x4c262f,_0x864b('0x5d')))['then'](function(){})[_0x864b('0x2e')](_0x4bcee6()));}}return _0x245a64;})[_0x864b('0x5a')]();})[_0x864b('0x2e')](function(_0x388258){logger[_0x864b('0x15')](_0x864b('0x5e'),_0x864b('0x5f'),_0x388258[_0x864b('0x30')]);});}var processPromises=function(_0x2cec05){return BPromise['all'](promises)['then'](function(_0x529469){})[_0x864b('0x2e')](function(_0x837220){logger[_0x864b('0x15')]('Error\x20processing\x20rows\x20block:',JSON[_0x864b('0x31')](_0x837220));})[_0x864b('0x60')](function(){socket[_0x864b('0x61')](_0x864b('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2cec05){return _0x2cec05['resume']();}});};var endCsv=function(){return BPromise[_0x864b('0x63')]()[_0x864b('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x864b('0x2d')](function(){socket[_0x864b('0x61')](_0x864b('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x55ab2c){logger[_0x864b('0x15')](_0x864b('0x64'),JSON['stringify'](_0x55ab2c));}finally{process[_0x864b('0x65')](0x0);}});};process['on'](_0x864b('0x66'),function(){logger[_0x864b('0x67')](_0x864b('0x68'));endCsv();});function main(){return BPromise[_0x864b('0x63')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x864b('0x12')](',');return db[_0x864b('0x2b')][_0x864b('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x864b('0x2d')](function(_0x383ced){var _0x22037d=fs[_0x864b('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x864b('0x6a')](_0x22037d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3ea177,_0x40562f){total+=0x1;var _0x4ccef3=total;promises[_0x864b('0x54')](checkRow(_0x3ea177,_0x383ced,_0x4ccef3)[_0x864b('0x2d')](function(){success+=0x1;})[_0x864b('0x2e')](function(_0x4899f2){if(_0x4899f2[_0x864b('0x15')]){errors+=0x1;delete _0x4899f2['error'];}else if(_0x4899f2[_0x864b('0x29')]){duplicates+=0x1;delete _0x4899f2[_0x864b('0x29')];}rows['push'](_0x4899f2);}));if(total%0xc8===0x0){_0x40562f[_0x864b('0x6b')]();return processPromises(_0x40562f);}},'complete':function(){return processPromises()['then'](function(){logger[_0x864b('0x67')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x19bd7a,_0x189b06){logger['info'](_0x864b('0x6c'),JSON[_0x864b('0x31')](_0x19bd7a));endCsv();}});})['catch'](function(_0x55f89f){logger[_0x864b('0x15')](_0x864b('0x6d'),JSON[_0x864b('0x31')](_0x55f89f));});}main();
\ No newline at end of file
+var _0x435a=['field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','ListId\x20=\x20?','str','calleridnum','cm_hopper_final','id\x20IN\x20?','VoiceQueue','findAll','outbound','dialCheckDuplicateType','get','always','push','sequelize','query','VoiceQueueId','onlyIfOpen','CmList','all','Lists','CampaignId','Campaign','BlackLists','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','info','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','error','contact','index','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','YYYY-MM-DD','email','email\x20format\x20is\x20not\x20valid!','CompanyId','find','duplicate','Duplicate\x20Contact','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select'];(function(_0x1a4db9,_0x12d8e4){var _0x191ac4=function(_0x23cdce){while(--_0x23cdce){_0x1a4db9['push'](_0x1a4db9['shift']());}};_0x191ac4(++_0x12d8e4);}(_0x435a,0x176));var _0xa435=function(_0x5d9ae1,_0x5d431d){_0x5d9ae1=_0x5d9ae1-0x0;var _0x1e8d59=_0x435a[_0x5d9ae1];return _0x1e8d59;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0xa435('0x0'));var fs=require('fs');var squel=require(_0xa435('0x1'));var Papa=require(_0xa435('0x2'));var Redis=require(_0xa435('0x3'));var db=require(_0xa435('0x4'))['db'];var config=require(_0xa435('0x5'));var logger=require(_0xa435('0x6'))('api');config[_0xa435('0x7')]=_['defaults'](config[_0xa435('0x7')],{'host':_0xa435('0x8'),'port':0x18eb});var socket=require(_0xa435('0x9'))(new Redis(config[_0xa435('0x7')]));require(_0xa435('0xa'))[_0xa435('0xb')](socket);try{if(!process[_0xa435('0xc')][0x2]||process[_0xa435('0xc')][0x2]===_0xa435('0xd')||process[_0xa435('0xc')][0x2]===_0xa435('0xe')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0xa435('0xc')][0x2];if(!process[_0xa435('0xc')][0x3]||process[_0xa435('0xc')][0x3]===_0xa435('0xd')||process[_0xa435('0xc')][0x3]===_0xa435('0xe')||!process[_0xa435('0xc')][0x4]||process['argv'][0x4]==='undefined'||process['argv'][0x4]===_0xa435('0xe')){throw new Error(_0xa435('0xf'));}var FIELDS=_['zipObject'](process[_0xa435('0xc')][0x3][_0xa435('0x10')](','),process[_0xa435('0xc')][0x4][_0xa435('0x10')](','));if(!process[_0xa435('0xc')][0x5]||process['argv'][0x5]===_0xa435('0xd')||process[_0xa435('0xc')][0x5]===_0xa435('0xe')){throw new Error(_0xa435('0x11'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0xa435('0xc')][0x6]&&process[_0xa435('0xc')][0x6]!==_0xa435('0xd')&&process[_0xa435('0xc')][0x6]!==_0xa435('0xe')?process['argv'][0x6]:null;var DUPLICATES=process[_0xa435('0xc')][0x7]&&process[_0xa435('0xc')][0x7]!==_0xa435('0xd')&&process[_0xa435('0xc')][0x7]!==_0xa435('0xe')?process[_0xa435('0xc')][0x7]:null;if(!process['argv'][0x8]||process[_0xa435('0xc')][0x8]===_0xa435('0xd')||process['argv'][0x8]===_0xa435('0xe')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0xa435('0xc')][0x8];}catch(_0x4bff47){logger[_0xa435('0x12')](_0x4bff47);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(_0x4b2490,_0x1873ed,_0x28f9c3,_0x39aa5a){var _0x3a7e37={'message':_0x1873ed};_0x3a7e37[_0x4b2490]=!![];if(_0x28f9c3){_0x3a7e37[_0xa435('0x13')]=_0x28f9c3;}if(_0x39aa5a){_0x3a7e37[_0xa435('0x14')]=_0x39aa5a;}return _0x3a7e37;}function isEmail(_0x4ea52b){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'](_0x4ea52b);}function checkRow(_0x18858d,_0x50cb77,_0x71c1e5){return new BPromise(function(_0x50eca4,_0x59a762){if(_[_0xa435('0x15')](_0x18858d)){return _0x59a762(handleCheckRowError(_0xa435('0x12'),_0xa435('0x16'),null,_0x71c1e5));}if(_0x18858d[_0xa435('0x17')]&&_0x18858d[_0xa435('0x17')][_0xa435('0x18')]){var _0x58cf53=_[_0xa435('0x19')](_0x18858d[_0xa435('0x17')],_0xa435('0x1a'))[_0xa435('0x1b')](';');return _0x59a762(handleCheckRowError(_0xa435('0x12'),_0x58cf53,null,_0x71c1e5));}var _0x54d8d8={};for(var _0x13a2a7 in FIELDS){if(FIELDS[_0xa435('0x1c')](_0x13a2a7)&&FIELDS[_0x13a2a7]){_0x54d8d8[_0x13a2a7]=_0x18858d['data'][0x0][FIELDS[_0x13a2a7]]||_0x18858d[_0xa435('0x1d')][0x0]['\ufeff'+FIELDS[_0x13a2a7]];}}if(!_0x54d8d8[_0xa435('0x1e')]){return _0x59a762(handleCheckRowError('error',_0xa435('0x1f'),null,_0x71c1e5));}if(!_0x54d8d8[_0xa435('0x20')]){return _0x59a762(handleCheckRowError('error',_0xa435('0x21'),null,_0x71c1e5));}if(_0x54d8d8['birthDate']){var _0x3967f9=moment(_0x54d8d8['birthDate'],_0xa435('0x22'));if(!_0x3967f9['isValid']()){return _0x59a762(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x71c1e5));}}if(_0x54d8d8[_0xa435('0x23')]){if(!isEmail(_0x54d8d8[_0xa435('0x23')])){return _0x59a762(handleCheckRowError(_0xa435('0x12'),_0xa435('0x24'),null,_0x71c1e5));}}_0x54d8d8['ListId']=LISTID;_0x54d8d8[_0xa435('0x25')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xa435('0x18')]&&_0x50cb77){var _0x112ccf={};for(var _0x1716c5=0x0,_0x67c3dd=DUPLICATES[_0xa435('0x18')];_0x1716c5<_0x67c3dd;_0x1716c5+=0x1){_0x112ccf[DUPLICATES[_0x1716c5]]=_0x54d8d8[DUPLICATES[_0x1716c5]];}var _0x3af5c5=_[_0xa435('0x26')](_0x50cb77,_0x112ccf);if(_0x3af5c5){return _0x59a762(handleCheckRowError(_0xa435('0x27'),_0xa435('0x28'),_0x3af5c5,_0x71c1e5));}}return db['CmContact']['create'](_0x54d8d8,{'raw':!![],'hooks':![],'fields':_['keys'](_0x54d8d8)})[_0xa435('0x29')](function(_0x30bf67){if(DUPLICATES&&DUPLICATES[_0xa435('0x18')]&&_0x50cb77){_0x50cb77['push'](_[_0xa435('0x2a')](_0x54d8d8,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x30bf67['id'];return _0x50eca4();})[_0xa435('0x2b')](function(_0x2fa8f1){return _0x59a762(handleCheckRowError('error',_0xa435('0x2c')+(_0x2fa8f1[_0xa435('0x1a')]||JSON[_0xa435('0x2d')](_0x2fa8f1)),null,_0x71c1e5));});});}function checkHopper(){function _0x451c3a(){return function(_0x1e0803){logger[_0xa435('0x12')](_0xa435('0x2e'),_0xa435('0x2f'),util['inspect'](_0x1e0803,{'showHidden':![],'depth':null}));};}var _0x49fcde=function(_0x35c7d2,_0x2bb8b0){var _0x50188a=squel[_0xa435('0x30')]()[_0xa435('0x31')](_0xa435('0x32'))[_0xa435('0x33')](['phone',_0xa435('0x34'),_0xa435('0x35'),_0xa435('0x36'),_0x2bb8b0,_0xa435('0x37'),_0xa435('0x38')],squel[_0xa435('0x39')]()['field'](_0xa435('0x20'),'phone')[_0xa435('0x3a')](_0xa435('0x3b'),_0xa435('0x34'))[_0xa435('0x3a')]('id',_0xa435('0x35'))[_0xa435('0x3a')](LISTID[_0xa435('0x3c')](),_0xa435('0x36'))[_0xa435('0x3a')](_0x35c7d2['id'][_0xa435('0x3c')](),_0x2bb8b0)[_0xa435('0x3a')]('NOW()',_0xa435('0x37'))[_0xa435('0x3a')](_0xa435('0x3b'),_0xa435('0x38'))[_0xa435('0x3d')](_0xa435('0x3e'))[_0xa435('0x3f')](_0xa435('0x40'))['where']('ListId\x20=\x20?',LISTID[_0xa435('0x3c')]())[_0xa435('0x3f')](_0xa435('0x41'))[_0xa435('0x3f')](_0xa435('0x42'),squel[_0xa435('0x39')]()['field'](_0xa435('0x20'))[_0xa435('0x3d')](_0xa435('0x32'))['where'](_0x2bb8b0+_0xa435('0x43'),_0x35c7d2['id'][_0xa435('0x3c')]())))[_0xa435('0x3c')]();return _0x50188a;};var _0x182f33=function(_0x16dd99,_0x30e862){var _0x238dd2=squel['insert']()[_0xa435('0x31')]('cm_hopper')[_0xa435('0x33')]([_0xa435('0x20'),_0xa435('0x34'),_0xa435('0x35'),_0xa435('0x36'),_0x30e862,_0xa435('0x37'),_0xa435('0x38')],squel[_0xa435('0x39')]()[_0xa435('0x3a')](_0xa435('0x20'),'phone')[_0xa435('0x3a')](_0xa435('0x3b'),_0xa435('0x34'))['field']('id',_0xa435('0x35'))[_0xa435('0x3a')](LISTID[_0xa435('0x3c')](),_0xa435('0x36'))[_0xa435('0x3a')](_0x16dd99['id']['toString'](),_0x30e862)[_0xa435('0x3a')](_0xa435('0x3b'),'createdAt')[_0xa435('0x3a')](_0xa435('0x3b'),'updatedAt')[_0xa435('0x3d')]('cm_contacts')[_0xa435('0x3f')](_0xa435('0x40'))['where'](_0xa435('0x44'),LISTID[_0xa435('0x3c')]())['where']('id\x20IN\x20?',squel[_0xa435('0x45')](hopperContacts))[_0xa435('0x3f')](_0xa435('0x41'))['where'](_0xa435('0x42'),squel['select']()['field'](_0xa435('0x46'))[_0xa435('0x3d')](_0xa435('0x47'))[_0xa435('0x3f')](_0x30e862+_0xa435('0x43'),_0x16dd99['id'][_0xa435('0x3c')]()))[_0xa435('0x3f')](_0xa435('0x42'),squel[_0xa435('0x39')]()['field'](_0xa435('0x20'))[_0xa435('0x3d')](_0xa435('0x32'))['where'](_0x30e862+'\x20=\x20?',_0x16dd99['id'][_0xa435('0x3c')]())))[_0xa435('0x3c')]();return _0x238dd2;};function _0x3dc128(_0x49ddf6,_0x1cbef0){var _0x4d68ee=squel[_0xa435('0x30')]()[_0xa435('0x31')]('cm_hopper')[_0xa435('0x33')]([_0xa435('0x20'),_0xa435('0x34'),_0xa435('0x35'),_0xa435('0x36'),_0x1cbef0,'createdAt','updatedAt'],squel[_0xa435('0x39')]()['field']('phone',_0xa435('0x20'))[_0xa435('0x3a')](_0xa435('0x3b'),_0xa435('0x34'))[_0xa435('0x3a')]('id',_0xa435('0x35'))[_0xa435('0x3a')](LISTID[_0xa435('0x3c')](),_0xa435('0x36'))[_0xa435('0x3a')](_0x49ddf6['id'][_0xa435('0x3c')](),_0x1cbef0)[_0xa435('0x3a')](_0xa435('0x3b'),_0xa435('0x37'))[_0xa435('0x3a')](_0xa435('0x3b'),'updatedAt')[_0xa435('0x3d')](_0xa435('0x3e'))['where'](_0xa435('0x40'))[_0xa435('0x3f')](_0xa435('0x44'),LISTID[_0xa435('0x3c')]())[_0xa435('0x3f')]('id\x20IN\x20?',squel[_0xa435('0x45')](hopperContacts))[_0xa435('0x3f')](_0xa435('0x41')))['toString']();return _0x4d68ee;}function _0x1a23e4(_0x4845cd,_0x409397){var _0x1de63c=squel[_0xa435('0x30')]()[_0xa435('0x31')]('cm_hopper_black')[_0xa435('0x33')]([_0xa435('0x20'),'ContactId',_0xa435('0x36'),_0x409397,_0xa435('0x37'),_0xa435('0x38')],squel[_0xa435('0x39')]()['field'](_0xa435('0x20'),_0xa435('0x20'))['field']('id',_0xa435('0x35'))[_0xa435('0x3a')](LISTID['toString'](),_0xa435('0x36'))[_0xa435('0x3a')](_0x4845cd['id'][_0xa435('0x3c')](),_0x409397)[_0xa435('0x3a')](_0xa435('0x3b'),_0xa435('0x37'))['field'](_0xa435('0x3b'),_0xa435('0x38'))[_0xa435('0x3d')]('cm_contacts')['where'](_0xa435('0x40'))[_0xa435('0x3f')](_0xa435('0x44'),LISTID[_0xa435('0x3c')]())[_0xa435('0x3f')](_0xa435('0x48'),squel[_0xa435('0x45')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0xa435('0x3c')]();return _0x1de63c;}return db[_0xa435('0x49')][_0xa435('0x4a')]({'where':{'type':_0xa435('0x4b')},'attributes':['id',_0xa435('0x4c')],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0xb9ff12){var _0x4fef10=[];if(_0xb9ff12){var _0x49367b;for(var _0x37e3f0=0x0,_0x30dcb9;_0x37e3f0<_0xb9ff12[_0xa435('0x18')];_0x37e3f0+=0x1){_0x30dcb9=_0xb9ff12[_0x37e3f0][_0xa435('0x4d')]({'plain':!![]});switch(_0x30dcb9[_0xa435('0x4c')]){case _0xa435('0x4e'):_0x4fef10[_0xa435('0x4f')](db[_0xa435('0x50')][_0xa435('0x51')](_0x182f33(_0x30dcb9,_0xa435('0x52')))[_0xa435('0x29')](function(){})[_0xa435('0x2b')](_0x451c3a()));break;case _0xa435('0x53'):_0x4fef10[_0xa435('0x4f')](db['sequelize'][_0xa435('0x51')](_0x49fcde(_0x30dcb9,'VoiceQueueId'))['then'](function(){})[_0xa435('0x2b')](_0x451c3a()));break;default:_0x4fef10[_0xa435('0x4f')](db[_0xa435('0x50')]['query'](_0x3dc128(_0x30dcb9,_0xa435('0x52')))['then'](function(){})[_0xa435('0x2b')](_0x451c3a()));}}}return _0x4fef10;})['all']()[_0xa435('0x29')](function(){return db[_0xa435('0x49')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0xa435('0x54')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa435('0x29')](function(_0x3da8ee){var _0x8771cc=[];if(_0x3da8ee){var _0x1543ee;for(var _0x386f61=0x0,_0xa56f51;_0x386f61<_0x3da8ee[_0xa435('0x18')];_0x386f61+=0x1){_0xa56f51=_0x3da8ee[_0x386f61][_0xa435('0x4d')]({'plain':!![]});_0x8771cc['push'](db[_0xa435('0x50')][_0xa435('0x51')](_0x1a23e4(_0xa56f51,_0xa435('0x52')))['then'](function(){})[_0xa435('0x2b')](_0x451c3a()));}}return _0x8771cc;})[_0xa435('0x55')]();})[_0xa435('0x29')](function(){return db['Campaign'][_0xa435('0x4a')]({'attributes':['id',_0xa435('0x4c')],'include':[{'model':db['CmList'],'as':_0xa435('0x56'),'where':{'id':LISTID}}]})['then'](function(_0x8a5799){var _0x120b59=[];if(_0x8a5799){for(var _0x1f902c=0x0,_0x17e38b;_0x1f902c<_0x8a5799['length'];_0x1f902c+=0x1){_0x17e38b=_0x8a5799[_0x1f902c][_0xa435('0x4d')]({'plain':!![]});switch(_0x17e38b[_0xa435('0x4c')]){case'always':_0x120b59[_0xa435('0x4f')](db[_0xa435('0x50')][_0xa435('0x51')](_0x182f33(_0x17e38b,'CampaignId'))['then'](function(){})[_0xa435('0x2b')](_0x451c3a()));break;case'onlyIfOpen':_0x120b59[_0xa435('0x4f')](db[_0xa435('0x50')][_0xa435('0x51')](_0x49fcde(_0x17e38b,'CampaignId'))['then'](function(){})[_0xa435('0x2b')](_0x451c3a()));break;default:_0x120b59[_0xa435('0x4f')](db['sequelize'][_0xa435('0x51')](_0x3dc128(_0x17e38b,_0xa435('0x57')))[_0xa435('0x29')](function(){})[_0xa435('0x2b')](_0x451c3a()));}}}return _0x120b59;})[_0xa435('0x55')]();})[_0xa435('0x29')](function(){return db[_0xa435('0x58')][_0xa435('0x4a')]({'attributes':['id'],'include':[{'model':db[_0xa435('0x54')],'as':_0xa435('0x59'),'where':{'id':LISTID}}]})[_0xa435('0x29')](function(_0x1320ef){var _0x23d874=[];if(_0x1320ef){for(var _0x23ebb0=0x0,_0x524014;_0x23ebb0<_0x1320ef['length'];_0x23ebb0+=0x1){_0x524014=_0x1320ef[_0x23ebb0][_0xa435('0x4d')]({'plain':!![]});_0x23d874[_0xa435('0x4f')](db['sequelize'][_0xa435('0x51')](_0x1a23e4(_0x524014,_0xa435('0x57')))[_0xa435('0x29')](function(){})[_0xa435('0x2b')](_0x451c3a()));}}return _0x23d874;})[_0xa435('0x55')]();})['catch'](function(_0x19736d){logger[_0xa435('0x12')](_0xa435('0x5a'),'generalCheckHopper',_0x19736d['message']);});}var processPromises=function(_0x4b50dc){return BPromise[_0xa435('0x55')](promises)[_0xa435('0x29')](function(_0x1668a0){})[_0xa435('0x2b')](function(_0x379557){logger[_0xa435('0x12')](_0xa435('0x5b'),JSON[_0xa435('0x2d')](_0x379557));})[_0xa435('0x5c')](function(){socket[_0xa435('0x5d')](_0xa435('0x5e')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4b50dc){return _0x4b50dc[_0xa435('0x5f')]();}});};var endCsv=function(){return BPromise[_0xa435('0x60')]()[_0xa435('0x29')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket['emit'](_0xa435('0x5e')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa435('0x61')](FILEPATH);}catch(_0x278ccf){logger[_0xa435('0x12')](_0xa435('0x62'),JSON['stringify'](_0x278ccf));}finally{process['exit'](0x0);}});};process['on']('SIGINT',function(){logger[_0xa435('0x63')](_0xa435('0x64'));endCsv();});function main(){return BPromise['resolve']()[_0xa435('0x29')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xa435('0x10')](',');return db[_0xa435('0x65')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0xaf438b){var _0x584575=fs[_0xa435('0x66')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xa435('0x67')](_0x584575,{'header':!![],'skipEmptyLines':!![],'step':function(_0x42569a,_0x552d0c){total+=0x1;var _0x35bda7=total;promises[_0xa435('0x4f')](checkRow(_0x42569a,_0xaf438b,_0x35bda7)['then'](function(){success+=0x1;})[_0xa435('0x2b')](function(_0x10b7ae){if(_0x10b7ae[_0xa435('0x12')]){errors+=0x1;delete _0x10b7ae['error'];}else if(_0x10b7ae[_0xa435('0x27')]){duplicates+=0x1;delete _0x10b7ae['duplicate'];}rows[_0xa435('0x4f')](_0x10b7ae);}));if(total%0xc8===0x0){_0x552d0c[_0xa435('0x68')]();return processPromises(_0x552d0c);}},'complete':function(){return processPromises()['then'](function(){logger[_0xa435('0x63')](_0xa435('0x69'));endCsv();});},'error':function(_0x25d0dc,_0x4023d9){logger[_0xa435('0x63')](_0xa435('0x6a'),JSON[_0xa435('0x2d')](_0x25d0dc));endCsv();}});})[_0xa435('0x2b')](function(_0x38d12a){logger['error'](_0xa435('0x6b'),JSON[_0xa435('0x2d')](_0x38d12a));});}main();
\ No newline at end of file
index 306fd10..3bd869d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf646=['trim','replace','isValid','isNaN','UserId','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','emit','contact:import:','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','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',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues_has_cm_blacklists','CampaignId','campaigns','then','finish','affectedRows','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','defaults','format','YYYY-MM-DD\x20HH:mm:ss','test','select','phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','fromQuery','scheduledat','ContactId','createdAt','updatedAt','priority','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_hopper_black','ListId','fields','field','ListId\x20=\x20?','\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','MIN(id)','group','Received\x20SIGINT','error','message','push','info','sequelize','query','catch','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','.csv','header','parse','data','length','rows','errors','hasOwnProperty'];(function(_0x53c892,_0x167956){var _0x2db513=function(_0x1a51fe){while(--_0x1a51fe){_0x53c892['push'](_0x53c892['shift']());}};_0x2db513(++_0x167956);}(_0xf646,0x1af));var _0x6f64=function(_0x50289c,_0x667565){_0x50289c=_0x50289c-0x0;var _0xdafca=_0xf646[_0x50289c];return _0xdafca;};'use strict';var fs=require('fs');var path=require(_0x6f64('0x0'));var _=require(_0x6f64('0x1'));var Papa=require(_0x6f64('0x2'));var util=require('util');var BPromise=require('bluebird');var moment=require('moment');var squel=require('squel');var Redis=require(_0x6f64('0x3'));var db=require(_0x6f64('0x4'))['db'];var config=require(_0x6f64('0x5'));var logger=require(_0x6f64('0x6'))('import');config[_0x6f64('0x7')]=_[_0x6f64('0x8')](config[_0x6f64('0x7')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6f64('0x7')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x6f64('0x9')](_0x6f64('0xa'));function isEmail(_0x4875ed){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))*$/[_0x6f64('0xb')](_0x4875ed);}function selectNotIn(_0x5eff54,_0x6a352b,_0xe43265,_0x37549e,_0x16d7cf){return squel[_0x6f64('0xc')]()['field'](_0x6f64('0xd'))['from'](_0x37549e)[_0x6f64('0xe')](_0x6a352b,null,_0x6a352b+_0x6f64('0xf')+_0x37549e+'.'+_0xe43265)[_0x6f64('0x10')](_0x37549e+'.'+_0xe43265+_0x6f64('0x11')+_0x5eff54+'.'+_0xe43265)[_0x6f64('0x10')](_0x6a352b+_0x6f64('0x12')+_0x16d7cf['join']()+')');}function insertCmHopper(_0x2749ab,_0x4fb778,_0x4e80ac,_0x5984c6,_0x4591e7){var _0x1db1a7=[_0x6f64('0x13'),_0x6f64('0x14'),_0x6f64('0x15'),_0x6f64('0x16'),_0x4fb778+'.'+_0x5984c6,'cm_contacts.createdAt',_0x6f64('0x17'),_0x6f64('0x18'),_0x6f64('0x19'),'\x22'+_0x4591e7+'\x22'];return squel[_0x6f64('0x1a')]()[_0x6f64('0x1b')]('cm_hopper')[_0x6f64('0x1c')]([_0x6f64('0xd'),_0x6f64('0x1d'),_0x6f64('0x1e'),'ListId',_0x5984c6,_0x6f64('0x1f'),_0x6f64('0x20'),_0x6f64('0x21'),'UserId','recallme'],squel[_0x6f64('0xc')]()['fields'](_0x1db1a7)[_0x6f64('0x22')](_0x4fb778)[_0x6f64('0xe')](_0x6f64('0x23'),null,_0x6f64('0x24')+_0x4fb778+_0x6f64('0x25'))['join'](_0x4e80ac,null,_0x4e80ac+_0x6f64('0xf')+_0x4fb778+'.'+_0x5984c6)[_0x6f64('0x10')](_0x4fb778+_0x6f64('0x26'),_0x2749ab)[_0x6f64('0x10')](_0x6f64('0x27'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4fb778,_0x4e80ac,_0x5984c6,_0x6f64('0x28'),[_0x6f64('0x29'),_0x6f64('0x2a')]))['where'](_0x6f64('0x2b'),selectNotIn(_0x4fb778,_0x4e80ac,_0x5984c6,'cm_hopper',[_0x6f64('0x29')])))[_0x6f64('0x2c')]();}function insertCmHopperBlack(_0x38ad4e,_0x50af58,_0x2e3eeb,_0x1d5c12){var _0x450623=[_0x6f64('0x13'),_0x6f64('0x15'),_0x6f64('0x16'),_0x50af58+'.'+_0x1d5c12,'cm_contacts.createdAt',_0x6f64('0x17')];return squel['insert']()[_0x6f64('0x1b')](_0x6f64('0x2d'))[_0x6f64('0x1c')](['phone',_0x6f64('0x1e'),_0x6f64('0x2e'),_0x1d5c12,_0x6f64('0x1f'),'updatedAt'],squel[_0x6f64('0xc')]()[_0x6f64('0x2f')](_0x450623)[_0x6f64('0x22')](_0x50af58)[_0x6f64('0xe')]('cm_contacts',null,_0x6f64('0x24')+_0x50af58+_0x6f64('0x25'))['join'](_0x2e3eeb,null,_0x2e3eeb+_0x6f64('0xf')+_0x50af58+'.'+_0x1d5c12)[_0x6f64('0x10')](_0x50af58+_0x6f64('0x26'),_0x38ad4e)[_0x6f64('0x10')](_0x6f64('0x27'),NOW)[_0x6f64('0x10')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x6f64('0xc')]()[_0x6f64('0x30')]('phone')[_0x6f64('0x22')](_0x6f64('0x2d'))[_0x6f64('0x10')](_0x6f64('0x31'),_0x38ad4e)[_0x6f64('0x10')](_0x1d5c12+_0x6f64('0x32'),_0x50af58+'.'+_0x1d5c12)))[_0x6f64('0x2c')]();}function insertCmContact(_0x9fba58,_0x1802a3,_0x2cb627,_0x3b4c6a){var _0x82cf4a=_[_0x6f64('0x33')](_[_0x6f64('0x34')](_0x3b4c6a),[_0x6f64('0x2e'),_0x6f64('0x35'),_0x6f64('0x1f'),_0x6f64('0x20')]);return squel[_0x6f64('0x1a')]()['into']('cm_contacts')[_0x6f64('0x1c')](_0x82cf4a,squel[_0x6f64('0xc')]()['fields'](_0x82cf4a)[_0x6f64('0x22')](_0x1802a3)[_0x6f64('0x10')]('('+_0x2cb627['join'](',')+_0x6f64('0x36'),squel[_0x6f64('0xc')]()[_0x6f64('0x2f')](_0x2cb627)['from'](_0x6f64('0x23'))[_0x6f64('0x10')](_0x6f64('0x31'),_0x9fba58)[_0x6f64('0x10')](_0x6f64('0x37')))[_0x6f64('0x10')]('id\x20IN\x20?',squel['select']()['field'](_0x6f64('0x38'),'min_id')[_0x6f64('0x22')](_0x1802a3)[_0x6f64('0x39')](_0x2cb627['join'](','))))[_0x6f64('0x2c')]();}function handleStop(){logger['info'](_0x6f64('0x3a'));stopped=!![];}function handleUncaughtException(_0x112255){logger[_0x6f64('0x3b')](_0x112255[_0x6f64('0x3c')]);process['exit'](0x1);}function handleError(_0x34fc91,_0x59c61a){stats['errors'][_0x6f64('0x3d')]({'name':_0x59c61a['code'],'message':_0x59c61a['message'],'row':_0x34fc91});}function handleQuery(_0x1d2c25){logger[_0x6f64('0x3e')](_0x1d2c25);return db[_0x6f64('0x3f')][_0x6f64('0x40')](_0x1d2c25)['spread'](function(_0x336b72){results[_0x6f64('0x3d')](_0x336b72);})[_0x6f64('0x41')](function(_0x24b706){logger[_0x6f64('0x3b')](_0x24b706['message']);});}function main(_0x2354fa,_0x5060fe,_0x282699,_0x37f63f){logger['info'](_0x6f64('0x42'),_0x2354fa,JSON[_0x6f64('0x43')](_0x5060fe));process[_0x6f64('0x44')](_0x6f64('0x45'));var _0x1c7e4e=_0x5060fe[_0x6f64('0x46')];var _0x525f87=_0x5060fe[_0x6f64('0x47')];var _0x1a16bd=path[_0x6f64('0xe')](config['root'],_0x6f64('0x48'),_0x525f87+_0x6f64('0x49'));var _0x3efe93=_[_0x6f64('0x34')](_0x1c7e4e)['join']();logger[_0x6f64('0x3e')](_0x6f64('0x4a'),_0x3efe93);fs['writeFileSync'](_0x1a16bd,_0x3efe93+'\x0a');Papa[_0x6f64('0x4b')](fs['createReadStream'](_0x2354fa),{'header':!![],'skipEmptyLines':!![],'step':function(_0x10d92a,_0x50bc85){try{for(var _0x32434f=0x0,_0x566450=[];_0x32434f<_0x10d92a[_0x6f64('0x4c')][_0x6f64('0x4d')];_0x32434f++){stats[_0x6f64('0x4e')]+=0x1;if(_0x10d92a[_0x6f64('0x4f')][_0x32434f]){handleError(_0x10d92a[_0x6f64('0x4c')][_0x32434f],_0x10d92a[_0x6f64('0x4f')][_0x32434f]);}else{var _0x5abd11=[];for(var _0x338a9b in _0x1c7e4e){if(_0x1c7e4e[_0x6f64('0x50')](_0x338a9b)){if(_0x10d92a[_0x6f64('0x4c')][_0x32434f][_0x1c7e4e[_0x338a9b]]){var _0x1aeb52=_[_0x6f64('0x51')](_0x10d92a['data'][_0x32434f][_0x1c7e4e[_0x338a9b]][_0x6f64('0x52')](/"/g,'\x27'));switch(_0x338a9b){case _0x6f64('0x1d'):var _0x521a30=moment(_0x1aeb52,_0x6f64('0xa'),!![]);if(_0x521a30[_0x6f64('0x53')]()){_0x566450[_0x6f64('0x3d')]('\x22'+_0x1aeb52+'\x22');}else{_0x5abd11[_0x6f64('0x3d')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x6f64('0x21'):var _0x2d1305=parseInt(_0x1aeb52);_0x1aeb52=_[_0x6f64('0x54')](_0x2d1305)||_0x2d1305<0x0||_0x2d1305>0x4?_0x37f63f?0x3:0x2:_0x2d1305;_0x566450['push']('\x22'+_0x1aeb52+'\x22');break;case _0x6f64('0x55'):var _0x282fb9=parseInt(_0x1aeb52);if(_[_0x6f64('0x56')](_0x282fb9)&&_[_0x6f64('0x57')](_0x282699,_0x282fb9)){_0x566450['push']('\x22'+_0x282fb9+'\x22');}else{_0x5abd11[_0x6f64('0x3d')](_0x6f64('0x58'));}break;case _0x6f64('0x59'):if(isEmail(_0x1aeb52)){_0x566450['push']('\x22'+_0x1aeb52+'\x22');}else{_0x5abd11['push'](_0x6f64('0x5a'));}break;case _0x6f64('0x5b'):var _0x5a77eb=moment(_0x1aeb52,_0x6f64('0x5c'),!![]);if(_0x5a77eb[_0x6f64('0x53')]()){_0x566450['push']('\x22'+_0x1aeb52+'\x22');}else{_0x5abd11['push'](_0x6f64('0x5d'));}break;default:_0x566450[_0x6f64('0x3d')]('\x22'+_0x1aeb52+'\x22');}}else{switch(_0x338a9b){case _0x6f64('0x5e'):case _0x6f64('0xd'):_0x5abd11[_0x6f64('0x3d')](_0x338a9b+_0x6f64('0x5f'));break;default:_0x566450['push']('\x22\x22');}}}}if(_0x5abd11[_0x6f64('0x4d')]){handleError(_0x10d92a[_0x6f64('0x4c')][_0x32434f],{'code':'SystemRow','message':_0x5abd11[_0x6f64('0xe')]()});}else{fs['appendFileSync'](_0x1a16bd,_0x566450[_0x6f64('0xe')]()+'\x0a');}_0x566450=[];}if(!(stats[_0x6f64('0x4e')]%0xc8)){socket[_0x6f64('0x60')](_0x6f64('0x61')+_0x525f87,stats);stats[_0x6f64('0x4f')]=[];}}if(stopped){logger[_0x6f64('0x3e')]('Abort\x20parser');_0x50bc85['abort']();}}catch(_0x10587a){handleError(_0x10d92a[_0x6f64('0x4c')][_0x32434f],{'code':_0x6f64('0x62'),'message':_0x10587a[_0x6f64('0x3c')]});logger[_0x6f64('0x3b')](_0x6f64('0x63'),_0x10587a['message']);}},'complete':function(){try{var _0x33a153=[];var _0x1d60ec=_0x6f64('0x23');if(_0x5060fe[_0x6f64('0x64')]&&_0x5060fe['duplicates'][_0x6f64('0x4d')]){_0x1d60ec=_0x6f64('0x65')+_0x525f87;_0x33a153[_0x6f64('0x3d')](_0x6f64('0x66')+_0x1d60ec+_0x6f64('0x67'));}var _0x36f160=util['format'](_0x6f64('0x68'),_0x1a16bd,_0x1d60ec,_0x3efe93,_0x5060fe['ListId'],_0x5060fe[_0x6f64('0x35')]||null,NOW,NOW);if(_['isNil'](_0x1c7e4e[_0x6f64('0x1d')])){_0x36f160+=_0x6f64('0x69');}_0x33a153[_0x6f64('0x3d')](_0x36f160);if(_0x5060fe[_0x6f64('0x64')]&&_0x5060fe[_0x6f64('0x64')]['length']){_0x33a153[_0x6f64('0x3d')](insertCmContact(_0x5060fe['ListId'],_0x1d60ec,_0x5060fe['duplicates'],_0x1c7e4e));_0x33a153['push'](_0x6f64('0x6a')+_0x1d60ec+';');}_0x33a153['push'](insertCmHopper(_0x5060fe['ListId'],_0x6f64('0x6b'),'voice_queues','VoiceQueueId',_0x37f63f));_0x33a153[_0x6f64('0x3d')](insertCmHopperBlack(_0x5060fe[_0x6f64('0x2e')],_0x6f64('0x6c'),'voice_queues','VoiceQueueId'));_0x33a153[_0x6f64('0x3d')](insertCmHopper(_0x5060fe[_0x6f64('0x2e')],'campaigns_has_cm_lists','campaigns',_0x6f64('0x6d'),_0x37f63f));_0x33a153[_0x6f64('0x3d')](insertCmHopperBlack(_0x5060fe[_0x6f64('0x2e')],'campaigns_has_cm_blacklists',_0x6f64('0x6e'),_0x6f64('0x6d')));BPromise['each'](_0x33a153,handleQuery)[_0x6f64('0x6f')](function(_0x4dc55c){stats[_0x6f64('0x70')]=!![];stats['affectedRows']=_0x5060fe[_0x6f64('0x64')]&&_0x5060fe[_0x6f64('0x64')]['length']?results[0x2][_0x6f64('0x71')]:results[0x0][_0x6f64('0x71')];socket[_0x6f64('0x60')](_0x6f64('0x61')+_0x525f87,stats);fs[_0x6f64('0x72')](_0x2354fa);fs[_0x6f64('0x72')](_0x1a16bd);process[_0x6f64('0x73')](0x0);})[_0x6f64('0x41')](function(_0x287edf){logger[_0x6f64('0x3b')](_0x287edf[_0x6f64('0x3c')]);process['exit'](0x1);});}catch(_0x3f76c5){logger[_0x6f64('0x3b')](_0x6f64('0x74'),_0x3f76c5[_0x6f64('0x3c')]);process['exit'](0x1);}},'error':function(_0x24bf9c,_0x4e013a,_0x2dec51,_0x487ed1){throw new Error(_0x487ed1);}});}function validate(){if(process[_0x6f64('0x75')]&&process[_0x6f64('0x75')][_0x6f64('0x4d')]<0x4){throw new Error(_0x6f64('0x76'));}var _0x1264c1=path[_0x6f64('0xe')](config[_0x6f64('0x77')],'server/files/tmp',process[_0x6f64('0x75')][0x2]);if(!fs['existsSync'](_0x1264c1)){throw new Error(_0x6f64('0x78'));}var _0xf2959e={};try{_0xf2959e=JSON[_0x6f64('0x4b')](process[_0x6f64('0x75')][0x3]);if(!_0xf2959e['binding']){throw new Error(_0x6f64('0x79'));}if(!_0xf2959e['binding'][_0x6f64('0xd')]){throw new Error(_0x6f64('0x7a'));}if(!_0xf2959e[_0x6f64('0x46')]['firstName']){throw new Error(_0x6f64('0x7b'));}var _0x1ac02d=0x0;if(_0xf2959e[_0x6f64('0x46')][_0x6f64('0x55')]){_0x1ac02d=0x1;}if(!_0xf2959e[_0x6f64('0x2e')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x3d1786){throw new Error(_0x6f64('0x7c'));}var _0x5dd1ce=[];try{_0x5dd1ce=_[_0x6f64('0x7d')](JSON[_0x6f64('0x4b')](process[_0x6f64('0x75')][0x4]),'id');}catch(_0xbbce7b){logger[_0x6f64('0x3e')](_0x6f64('0x7e'));}main(_0x1264c1,_0xf2959e,_0x5dd1ce,_0x1ac02d);}validate();process['on']('SIGINT',handleStop);process['on'](_0x6f64('0x7f'),handleUncaughtException);
\ No newline at end of file
+var _0xd0d1=['YYYY-MM-DD\x20HH:mm:ss','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','fromQuery','ContactId','ListId','createdAt','priority','UserId','recallme','cm_contacts','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22onlyIfOpen\x22','\x22always\x22','cm_contacts.ListId','updatedAt','fields','.CmListId','.CmListId\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','toString','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','group','info','Received\x20SIGINT','message','exit','errors','push','code','sequelize','catch','main','stringify','start','binding','socket_timestamp','root','.csv','header','writeFileSync','parse','createReadStream','data','length','rows','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','error','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','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','isNil','scheduledat',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns','campaigns_has_cm_blacklists','CampaignId','then','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','firstName','firstName\x20is\x20mandatory','body\x20id\x20mandatory','SIGINT','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','import','redis','defaults','socket.io-emitter','format'];(function(_0x2873d2,_0x3178b6){var _0x31b7c1=function(_0x869dec){while(--_0x869dec){_0x2873d2['push'](_0x2873d2['shift']());}};_0x31b7c1(++_0x3178b6);}(_0xd0d1,0x79));var _0x1d0d=function(_0xba4c01,_0x5b1eac){_0xba4c01=_0xba4c01-0x0;var _0x2ed366=_0xd0d1[_0xba4c01];return _0x2ed366;};'use strict';var fs=require('fs');var path=require(_0x1d0d('0x0'));var _=require(_0x1d0d('0x1'));var Papa=require(_0x1d0d('0x2'));var util=require(_0x1d0d('0x3'));var BPromise=require('bluebird');var moment=require(_0x1d0d('0x4'));var squel=require(_0x1d0d('0x5'));var Redis=require(_0x1d0d('0x6'));var db=require(_0x1d0d('0x7'))['db'];var config=require(_0x1d0d('0x8'));var logger=require('../../../config/logger')(_0x1d0d('0x9'));config[_0x1d0d('0xa')]=_[_0x1d0d('0xb')](config[_0x1d0d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x1d0d('0xc'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x1d0d('0xd')](_0x1d0d('0xe'));function isEmail(_0x4a6c69){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'](_0x4a6c69);}function selectNotIn(_0x4e0f8d,_0xf351e0,_0x21f727,_0x36839e,_0x40ba7c){return squel[_0x1d0d('0xf')]()[_0x1d0d('0x10')](_0x1d0d('0x11'))[_0x1d0d('0x12')](_0x36839e)[_0x1d0d('0x13')](_0xf351e0,null,_0xf351e0+_0x1d0d('0x14')+_0x36839e+'.'+_0x21f727)[_0x1d0d('0x15')](_0x36839e+'.'+_0x21f727+_0x1d0d('0x16')+_0x4e0f8d+'.'+_0x21f727)[_0x1d0d('0x15')](_0xf351e0+_0x1d0d('0x17')+_0x40ba7c['join']()+')');}function insertCmHopper(_0x4bf446,_0x1f83fd,_0xe90b02,_0x53a1dc,_0x2db194){var _0x44c973=[_0x1d0d('0x18'),_0x1d0d('0x19'),_0x1d0d('0x1a'),'cm_contacts.ListId',_0x1f83fd+'.'+_0x53a1dc,_0x1d0d('0x1b'),_0x1d0d('0x1c'),_0x1d0d('0x1d'),_0x1d0d('0x1e'),'\x22'+_0x2db194+'\x22'];return squel[_0x1d0d('0x1f')]()[_0x1d0d('0x20')]('cm_hopper')[_0x1d0d('0x21')](['phone','scheduledat',_0x1d0d('0x22'),_0x1d0d('0x23'),_0x53a1dc,_0x1d0d('0x24'),'updatedAt',_0x1d0d('0x25'),_0x1d0d('0x26'),_0x1d0d('0x27')],squel[_0x1d0d('0xf')]()['fields'](_0x44c973)['from'](_0x1f83fd)[_0x1d0d('0x13')](_0x1d0d('0x28'),null,'cm_contacts.ListId\x20=\x20'+_0x1f83fd+'.CmListId')[_0x1d0d('0x13')](_0xe90b02,null,_0xe90b02+_0x1d0d('0x14')+_0x1f83fd+'.'+_0x53a1dc)['where'](_0x1f83fd+'.CmListId\x20=\x20?',_0x4bf446)[_0x1d0d('0x15')](_0x1d0d('0x29'),NOW)[_0x1d0d('0x15')](_0x1d0d('0x2a'),selectNotIn(_0x1f83fd,_0xe90b02,_0x53a1dc,_0x1d0d('0x2b'),['\x22always\x22',_0x1d0d('0x2c')]))[_0x1d0d('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1f83fd,_0xe90b02,_0x53a1dc,_0x1d0d('0x2b'),[_0x1d0d('0x2d')])))['toString']();}function insertCmHopperBlack(_0x5a1a1f,_0x49471d,_0x476ab4,_0x78a55d){var _0x554191=[_0x1d0d('0x18'),_0x1d0d('0x1a'),_0x1d0d('0x2e'),_0x49471d+'.'+_0x78a55d,_0x1d0d('0x1b'),_0x1d0d('0x1c')];return squel[_0x1d0d('0x1f')]()[_0x1d0d('0x20')]('cm_hopper_black')['fromQuery'](['phone',_0x1d0d('0x22'),'ListId',_0x78a55d,_0x1d0d('0x24'),_0x1d0d('0x2f')],squel[_0x1d0d('0xf')]()[_0x1d0d('0x30')](_0x554191)[_0x1d0d('0x12')](_0x49471d)[_0x1d0d('0x13')](_0x1d0d('0x28'),null,'cm_contacts.ListId\x20=\x20'+_0x49471d+_0x1d0d('0x31'))[_0x1d0d('0x13')](_0x476ab4,null,_0x476ab4+_0x1d0d('0x14')+_0x49471d+'.'+_0x78a55d)[_0x1d0d('0x15')](_0x49471d+_0x1d0d('0x32'),_0x5a1a1f)[_0x1d0d('0x15')](_0x1d0d('0x29'),NOW)[_0x1d0d('0x15')](_0x1d0d('0x2a'),squel[_0x1d0d('0xf')]()[_0x1d0d('0x10')]('phone')[_0x1d0d('0x12')](_0x1d0d('0x33'))[_0x1d0d('0x15')](_0x1d0d('0x34'),_0x5a1a1f)[_0x1d0d('0x15')](_0x78a55d+_0x1d0d('0x35'),_0x49471d+'.'+_0x78a55d)))[_0x1d0d('0x36')]();}function insertCmContact(_0x36cb82,_0x3802c3,_0x15d5a5,_0x5ed9b1){var _0x49fe39=_['concat'](_[_0x1d0d('0x37')](_0x5ed9b1),['ListId',_0x1d0d('0x38'),_0x1d0d('0x24'),_0x1d0d('0x2f')]);return squel[_0x1d0d('0x1f')]()['into']('cm_contacts')[_0x1d0d('0x21')](_0x49fe39,squel['select']()[_0x1d0d('0x30')](_0x49fe39)['from'](_0x3802c3)['where']('('+_0x15d5a5[_0x1d0d('0x13')](',')+_0x1d0d('0x39'),squel[_0x1d0d('0xf')]()[_0x1d0d('0x30')](_0x15d5a5)[_0x1d0d('0x12')]('cm_contacts')[_0x1d0d('0x15')]('ListId\x20=\x20?',_0x36cb82)['where'](_0x1d0d('0x3a')))[_0x1d0d('0x15')]('id\x20IN\x20?',squel[_0x1d0d('0xf')]()[_0x1d0d('0x10')]('MIN(id)','min_id')[_0x1d0d('0x12')](_0x3802c3)[_0x1d0d('0x3b')](_0x15d5a5[_0x1d0d('0x13')](','))))[_0x1d0d('0x36')]();}function handleStop(){logger[_0x1d0d('0x3c')](_0x1d0d('0x3d'));stopped=!![];}function handleUncaughtException(_0x335be1){logger['error'](_0x335be1[_0x1d0d('0x3e')]);process[_0x1d0d('0x3f')](0x1);}function handleError(_0x18b65d,_0x3dada5){stats[_0x1d0d('0x40')][_0x1d0d('0x41')]({'name':_0x3dada5[_0x1d0d('0x42')],'message':_0x3dada5['message'],'row':_0x18b65d});}function handleQuery(_0x4aff4a){logger[_0x1d0d('0x3c')](_0x4aff4a);return db[_0x1d0d('0x43')]['query'](_0x4aff4a)['spread'](function(_0x1a30fe){results[_0x1d0d('0x41')](_0x1a30fe);})[_0x1d0d('0x44')](function(_0x18a5d9){logger['error'](_0x18a5d9[_0x1d0d('0x3e')]);});}function main(_0x59c582,_0x5632b8,_0x13b480,_0x448469){logger[_0x1d0d('0x3c')](_0x1d0d('0x45'),_0x59c582,JSON[_0x1d0d('0x46')](_0x5632b8));process['send'](_0x1d0d('0x47'));var _0x1a0818=_0x5632b8[_0x1d0d('0x48')];var _0x2d96bb=_0x5632b8[_0x1d0d('0x49')];var _0x233ddd=path[_0x1d0d('0x13')](config[_0x1d0d('0x4a')],'server/files/tmp',_0x2d96bb+_0x1d0d('0x4b'));var _0x52c8fb=_[_0x1d0d('0x37')](_0x1a0818)['join']();logger['info'](_0x1d0d('0x4c'),_0x52c8fb);fs[_0x1d0d('0x4d')](_0x233ddd,_0x52c8fb+'\x0a');Papa[_0x1d0d('0x4e')](fs[_0x1d0d('0x4f')](_0x59c582),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1ecd2c,_0xc63380){try{for(var _0x2b254c=0x0,_0x6dead2=[];_0x2b254c<_0x1ecd2c[_0x1d0d('0x50')][_0x1d0d('0x51')];_0x2b254c++){stats[_0x1d0d('0x52')]+=0x1;if(_0x1ecd2c[_0x1d0d('0x40')][_0x2b254c]){handleError(_0x1ecd2c[_0x1d0d('0x50')][_0x2b254c],_0x1ecd2c[_0x1d0d('0x40')][_0x2b254c]);}else{var _0x268da8=[];for(var _0x23f8a9 in _0x1a0818){if(_0x1a0818[_0x1d0d('0x53')](_0x23f8a9)){if(_0x1ecd2c[_0x1d0d('0x50')][_0x2b254c][_0x1a0818[_0x23f8a9]]){var _0x889b2f=_[_0x1d0d('0x54')](_0x1ecd2c[_0x1d0d('0x50')][_0x2b254c][_0x1a0818[_0x23f8a9]][_0x1d0d('0x55')](/"/g,'\x27'));switch(_0x23f8a9){case'scheduledat':var _0x3a8777=moment(_0x889b2f,_0x1d0d('0xe'),!![]);if(_0x3a8777[_0x1d0d('0x56')]()){_0x6dead2[_0x1d0d('0x41')]('\x22'+_0x889b2f+'\x22');}else{_0x268da8[_0x1d0d('0x41')](_0x1d0d('0x57'));}break;case _0x1d0d('0x25'):var _0x3f7a37=parseInt(_0x889b2f);_0x889b2f=_[_0x1d0d('0x58')](_0x3f7a37)||_0x3f7a37<0x0||_0x3f7a37>0x4?_0x448469?0x3:0x2:_0x3f7a37;_0x6dead2[_0x1d0d('0x41')]('\x22'+_0x889b2f+'\x22');break;case _0x1d0d('0x26'):var _0x242576=parseInt(_0x889b2f);if(_[_0x1d0d('0x59')](_0x242576)&&_['includes'](_0x13b480,_0x242576)){_0x6dead2[_0x1d0d('0x41')]('\x22'+_0x242576+'\x22');}else{_0x268da8[_0x1d0d('0x41')]('agent\x20not\x20exists');}break;case'email':if(isEmail(_0x889b2f)){_0x6dead2[_0x1d0d('0x41')]('\x22'+_0x889b2f+'\x22');}else{_0x268da8[_0x1d0d('0x41')](_0x1d0d('0x5a'));}break;case _0x1d0d('0x5b'):var _0x3a866c=moment(_0x889b2f,_0x1d0d('0x5c'),!![]);if(_0x3a866c[_0x1d0d('0x56')]()){_0x6dead2[_0x1d0d('0x41')]('\x22'+_0x889b2f+'\x22');}else{_0x268da8[_0x1d0d('0x41')](_0x1d0d('0x5d'));}break;default:_0x6dead2['push']('\x22'+_0x889b2f+'\x22');}}else{switch(_0x23f8a9){case'firstName':case'phone':_0x268da8[_0x1d0d('0x41')](_0x23f8a9+_0x1d0d('0x5e'));break;default:_0x6dead2[_0x1d0d('0x41')]('\x22\x22');}}}}if(_0x268da8['length']){handleError(_0x1ecd2c[_0x1d0d('0x50')][_0x2b254c],{'code':_0x1d0d('0x5f'),'message':_0x268da8['join']()});}else{fs[_0x1d0d('0x60')](_0x233ddd,_0x6dead2[_0x1d0d('0x13')]()+'\x0a');}_0x6dead2=[];}if(!(stats[_0x1d0d('0x52')]%0xc8)){socket[_0x1d0d('0x61')](_0x1d0d('0x62')+_0x2d96bb,stats);stats[_0x1d0d('0x40')]=[];}}if(stopped){logger['info'](_0x1d0d('0x63'));_0xc63380[_0x1d0d('0x64')]();}}catch(_0x24d615){handleError(_0x1ecd2c[_0x1d0d('0x50')][_0x2b254c],{'code':_0x1d0d('0x65'),'message':_0x24d615[_0x1d0d('0x3e')]});logger[_0x1d0d('0x66')]('step',_0x24d615[_0x1d0d('0x3e')]);}},'complete':function(){try{var _0x3d1664=[];var _0x3e66de=_0x1d0d('0x28');if(_0x5632b8[_0x1d0d('0x67')]&&_0x5632b8['duplicates'][_0x1d0d('0x51')]){_0x3e66de=_0x1d0d('0x68')+_0x2d96bb;_0x3d1664['push'](_0x1d0d('0x69')+_0x3e66de+_0x1d0d('0x6a'));}var _0x3a0439=util[_0x1d0d('0xd')](_0x1d0d('0x6b'),_0x233ddd,_0x3e66de,_0x52c8fb,_0x5632b8[_0x1d0d('0x23')],_0x5632b8['CompanyId']||null,NOW,NOW);if(_[_0x1d0d('0x6c')](_0x1a0818[_0x1d0d('0x6d')])){_0x3a0439+=_0x1d0d('0x6e');}_0x3d1664['push'](_0x3a0439);if(_0x5632b8['duplicates']&&_0x5632b8[_0x1d0d('0x67')][_0x1d0d('0x51')]){_0x3d1664['push'](insertCmContact(_0x5632b8[_0x1d0d('0x23')],_0x3e66de,_0x5632b8[_0x1d0d('0x67')],_0x1a0818));_0x3d1664[_0x1d0d('0x41')](_0x1d0d('0x6f')+_0x3e66de+';');}_0x3d1664[_0x1d0d('0x41')](insertCmHopper(_0x5632b8['ListId'],_0x1d0d('0x70'),_0x1d0d('0x71'),_0x1d0d('0x72'),_0x448469));_0x3d1664[_0x1d0d('0x41')](insertCmHopperBlack(_0x5632b8[_0x1d0d('0x23')],_0x1d0d('0x73'),_0x1d0d('0x71'),_0x1d0d('0x72')));_0x3d1664[_0x1d0d('0x41')](insertCmHopper(_0x5632b8[_0x1d0d('0x23')],_0x1d0d('0x74'),_0x1d0d('0x75'),'CampaignId',_0x448469));_0x3d1664[_0x1d0d('0x41')](insertCmHopperBlack(_0x5632b8[_0x1d0d('0x23')],_0x1d0d('0x76'),'campaigns',_0x1d0d('0x77')));BPromise['each'](_0x3d1664,handleQuery)[_0x1d0d('0x78')](function(_0x3d3963){stats[_0x1d0d('0x79')]=!![];stats[_0x1d0d('0x7a')]=_0x5632b8[_0x1d0d('0x67')]&&_0x5632b8[_0x1d0d('0x67')]['length']?results[0x2][_0x1d0d('0x7a')]:results[0x0][_0x1d0d('0x7a')];socket[_0x1d0d('0x61')](_0x1d0d('0x62')+_0x2d96bb,stats);fs[_0x1d0d('0x7b')](_0x59c582);fs['unlink'](_0x233ddd);process[_0x1d0d('0x3f')](0x0);})['catch'](function(_0x604e31){logger['error'](_0x604e31['message']);process[_0x1d0d('0x3f')](0x1);});}catch(_0x2b563d){logger[_0x1d0d('0x66')](_0x1d0d('0x7c'),_0x2b563d[_0x1d0d('0x3e')]);process[_0x1d0d('0x3f')](0x1);}},'error':function(_0x195df2,_0x51455c,_0x2769c9,_0x4d4b0b){throw new Error(_0x4d4b0b);}});}function validate(){if(process[_0x1d0d('0x7d')]&&process[_0x1d0d('0x7d')]['length']<0x4){throw new Error(_0x1d0d('0x7e'));}var _0x445a3f=path[_0x1d0d('0x13')](config[_0x1d0d('0x4a')],_0x1d0d('0x7f'),process['argv'][0x2]);if(!fs['existsSync'](_0x445a3f)){throw new Error(_0x1d0d('0x80'));}var _0x24f5e1={};try{_0x24f5e1=JSON['parse'](process[_0x1d0d('0x7d')][0x3]);if(!_0x24f5e1[_0x1d0d('0x48')]){throw new Error(_0x1d0d('0x81'));}if(!_0x24f5e1[_0x1d0d('0x48')][_0x1d0d('0x11')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x24f5e1['binding'][_0x1d0d('0x82')]){throw new Error(_0x1d0d('0x83'));}var _0x22d710=0x0;if(_0x24f5e1[_0x1d0d('0x48')][_0x1d0d('0x26')]){_0x22d710=0x1;}if(!_0x24f5e1['ListId']){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x495fe1){throw new Error(_0x1d0d('0x84'));}var _0x40c4a8=[];try{_0x40c4a8=_['map'](JSON[_0x1d0d('0x4e')](process[_0x1d0d('0x7d')][0x4]),'id');}catch(_0x3e8883){logger[_0x1d0d('0x3c')]('No\x20agent\x20available');}main(_0x445a3f,_0x24f5e1,_0x40c4a8,_0x22d710);}validate();process['on'](_0x1d0d('0x85'),handleStop);process['on'](_0x1d0d('0x86'),handleUncaughtException);
\ No newline at end of file
index 2b46168..780883f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b9e=['Hold\x20Time','holdtime','Talk\x20Time','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','Billable\x20Time','getSubjects','string','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','toLowerCase','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','uniqueid','Date','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','destcalleridnum','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt'];(function(_0x12c34e,_0x39287a){var _0x244e88=function(_0x34507b){while(--_0x34507b){_0x12c34e['push'](_0x12c34e['shift']());}};_0x244e88(++_0x39287a);}(_0x1b9e,0x153));var _0xe1b9=function(_0x53a85a,_0x13982b){_0x53a85a=_0x53a85a-0x0;var _0x2b127f=_0x1b9e[_0x53a85a];return _0x2b127f;};'use strict';exports[_0xe1b9('0x0')]=function(_0xbf50db,_0x926ed4){var _0x1a000e=[{'type':_0xe1b9('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0xbf50db['toLowerCase']()){case _0xe1b9('0x2'):switch(_0x926ed4['toLowerCase']()){case _0xe1b9('0x3'):_0x1a000e[_0xe1b9('0x4')]({'type':_0xe1b9('0x5'),'content':'','variableName':_0xe1b9('0x6')});_0x1a000e[_0xe1b9('0x4')]({'type':'variable','content':'','variableName':_0xe1b9('0x7')});break;case _0xe1b9('0x8'):_0x1a000e[_0xe1b9('0x4')]({'type':'string','content':_0xe1b9('0x9'),'variableName':null});_0x1a000e[_0xe1b9('0x4')]({'type':_0xe1b9('0x5'),'content':'','variableName':'destcalleridnum'});break;}}return _0x1a000e;};exports['getDescriptions']=function(_0x75e1cf,_0x419f39){var _0x476251=[];switch(_0x75e1cf[_0xe1b9('0xa')]()){case'voice':switch(_0x419f39[_0xe1b9('0xa')]()){case _0xe1b9('0x3'):_0x476251=[{'type':_0xe1b9('0x1'),'content':_0xe1b9('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0xd'),'keyType':_0xe1b9('0x5'),'variableName':'calleridnum'},{'type':'keyValue','content':'','key':_0xe1b9('0xe'),'keyType':_0xe1b9('0x5'),'variableName':_0xe1b9('0xf')},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x10'),'keyType':_0xe1b9('0x5'),'variableName':_0xe1b9('0x11')},{'type':'keyValue','content':'','key':_0xe1b9('0x12'),'keyType':'variable','variableName':_0xe1b9('0x6')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0xe1b9('0x5'),'variableName':_0xe1b9('0x13')},{'type':'keyValue','content':'','key':_0xe1b9('0x14'),'keyType':_0xe1b9('0x5'),'variableName':'agentcalledAt'},{'type':'string','content':_0xe1b9('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xe1b9('0xc'),'content':'','key':'Agent\x20Name','keyType':_0xe1b9('0x5'),'variableName':_0xe1b9('0x16')},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x17'),'keyType':'variable','variableName':_0xe1b9('0x18')},{'type':_0xe1b9('0x1'),'content':_0xe1b9('0x19'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xe1b9('0x1a'),'keyType':_0xe1b9('0x5'),'variableName':'agentcalledAt'},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x1b'),'keyType':'variable','variableName':_0xe1b9('0x1c')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0xe1b9('0x5'),'variableName':_0xe1b9('0x1d')},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x1e'),'keyType':_0xe1b9('0x5'),'variableName':_0xe1b9('0x1f')},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x20'),'keyType':_0xe1b9('0x5'),'variableName':'talktime'}];break;case _0xe1b9('0x8'):_0x476251=[{'type':_0xe1b9('0x1'),'content':_0xe1b9('0xb'),'variableName':null},{'type':'keyValue','content':'','key':'Called\x20Number','keyType':_0xe1b9('0x5'),'keyContent':'','variableName':_0xe1b9('0x18')},{'type':_0xe1b9('0xc'),'content':'','key':'Member\x20Name','keyType':_0xe1b9('0x5'),'keyContent':'','variableName':_0xe1b9('0x21')},{'type':_0xe1b9('0xc'),'content':'','key':'UniqueId','keyType':_0xe1b9('0x5'),'keyContent':'','variableName':_0xe1b9('0x13')},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x14'),'keyType':_0xe1b9('0x5'),'keyContent':'','variableName':_0xe1b9('0x22')},{'type':_0xe1b9('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':'keyValue','content':'','key':_0xe1b9('0x23'),'keyType':_0xe1b9('0x5'),'keyContent':'','variableName':_0xe1b9('0x24')},{'type':'keyValue','content':'','key':_0xe1b9('0x25'),'keyType':_0xe1b9('0x5'),'keyContent':'','variableName':_0xe1b9('0x26')},{'type':_0xe1b9('0xc'),'content':'','key':_0xe1b9('0x27'),'keyType':_0xe1b9('0x5'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0xe1b9('0x28'),'keyType':_0xe1b9('0x5'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x476251;};
\ No newline at end of file
+var _0xe1d4=['inbound','push','variable','queue','calleridnum','Outbound\x20Call','destcalleridnum','getDescriptions','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','Agent\x20Name','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','Hold\x20Time','holdtime','Talk\x20Time','talktime','outbound','***\x20Call\x20Info\x20***','Called\x20Number','Member\x20Name','membername','Answer\x20Time','answertime','Duration','duration','billableseconds','string','[xCALLY\x20Ticket]','toLowerCase','voice'];(function(_0x6141bf,_0x10c035){var _0x4c8cd7=function(_0x44c2c9){while(--_0x44c2c9){_0x6141bf['push'](_0x6141bf['shift']());}};_0x4c8cd7(++_0x10c035);}(_0xe1d4,0x17f));var _0x4e1d=function(_0x5b93a5,_0xf1e3f0){_0x5b93a5=_0x5b93a5-0x0;var _0x328b33=_0xe1d4[_0x5b93a5];return _0x328b33;};'use strict';exports['getSubjects']=function(_0x38dc02,_0x3396e3){var _0x33dffe=[{'type':_0x4e1d('0x0'),'content':_0x4e1d('0x1'),'variableName':null}];switch(_0x38dc02[_0x4e1d('0x2')]()){case _0x4e1d('0x3'):switch(_0x3396e3[_0x4e1d('0x2')]()){case _0x4e1d('0x4'):_0x33dffe[_0x4e1d('0x5')]({'type':_0x4e1d('0x6'),'content':'','variableName':_0x4e1d('0x7')});_0x33dffe[_0x4e1d('0x5')]({'type':_0x4e1d('0x6'),'content':'','variableName':_0x4e1d('0x8')});break;case'outbound':_0x33dffe[_0x4e1d('0x5')]({'type':_0x4e1d('0x0'),'content':_0x4e1d('0x9'),'variableName':null});_0x33dffe[_0x4e1d('0x5')]({'type':_0x4e1d('0x6'),'content':'','variableName':_0x4e1d('0xa')});break;}}return _0x33dffe;};exports[_0x4e1d('0xb')]=function(_0x201d36,_0x213b56){var _0x1b4d5a=[];switch(_0x201d36[_0x4e1d('0x2')]()){case _0x4e1d('0x3'):switch(_0x213b56['toLowerCase']()){case _0x4e1d('0x4'):_0x1b4d5a=[{'type':_0x4e1d('0x0'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0xd'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0x8')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0xe'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0xf')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x10'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0x11')},{'type':'keyValue','content':'','key':_0x4e1d('0x12'),'keyType':'variable','variableName':_0x4e1d('0x7')},{'type':'keyValue','content':'','key':_0x4e1d('0x13'),'keyType':'variable','variableName':_0x4e1d('0x14')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x15'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0x16')},{'type':_0x4e1d('0x0'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x4e1d('0x17'),'keyType':'variable','variableName':'destcalleridname'},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x18'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0xa')},{'type':_0x4e1d('0x0'),'content':_0x4e1d('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x1a'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0x16')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x1b'),'keyType':_0x4e1d('0x6'),'variableName':'agentconnectAt'},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x1c'),'keyType':_0x4e1d('0x6'),'variableName':'agentcompleteAt'},{'type':'keyValue','content':'','key':_0x4e1d('0x1d'),'keyType':_0x4e1d('0x6'),'variableName':_0x4e1d('0x1e')},{'type':'keyValue','content':'','key':_0x4e1d('0x1f'),'keyType':'variable','variableName':_0x4e1d('0x20')}];break;case _0x4e1d('0x21'):_0x1b4d5a=[{'type':_0x4e1d('0x0'),'content':_0x4e1d('0x22'),'variableName':null},{'type':'keyValue','content':'','key':_0x4e1d('0x23'),'keyType':'variable','keyContent':'','variableName':_0x4e1d('0xa')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x24'),'keyType':'variable','keyContent':'','variableName':_0x4e1d('0x25')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x13'),'keyType':_0x4e1d('0x6'),'keyContent':'','variableName':_0x4e1d('0x14')},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x15'),'keyType':'variable','keyContent':'','variableName':'starttime'},{'type':_0x4e1d('0x0'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x26'),'keyType':_0x4e1d('0x6'),'keyContent':'','variableName':_0x4e1d('0x27')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':'endtime'},{'type':_0x4e1d('0xc'),'content':'','key':_0x4e1d('0x28'),'keyType':'variable','keyContent':'','variableName':_0x4e1d('0x29')},{'type':_0x4e1d('0xc'),'content':'','key':'Billable\x20Time','keyType':_0x4e1d('0x6'),'keyContent':'','variableName':_0x4e1d('0x2a')}];break;}}return _0x1b4d5a;};
\ No newline at end of file
index 54ba1e1..ca434c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d7f=['InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','Interaction','findOne','then','info','catch','error','query','clone','body','omit','html','phone','fax','lodash','../../mysqldb','../../config/logger','openchannel-interactions','fax-interactions','sms-interactions','chat-interactions','upperFirst'];(function(_0x3a6a1f,_0x107c05){var _0x5a608e=function(_0xdb1422){while(--_0xdb1422){_0x3a6a1f['push'](_0x3a6a1f['shift']());}};_0x5a608e(++_0x107c05);}(_0x5d7f,0x106));var _0xf5d7=function(_0x43693e,_0x359b62){_0x43693e=_0x43693e-0x0;var _0x31c38a=_0x5d7f[_0x43693e];return _0x31c38a;};'use strict';var _=require(_0xf5d7('0x0'));var db=require(_0xf5d7('0x1'))['db'];var loggers={'openchannel':require(_0xf5d7('0x2'))(_0xf5d7('0x3')),'mail':require(_0xf5d7('0x2'))('mail-interactions'),'fax':require(_0xf5d7('0x2'))(_0xf5d7('0x4')),'sms':require('../../config/logger')(_0xf5d7('0x5')),'chat':require(_0xf5d7('0x2'))(_0xf5d7('0x6')),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x2d2c3a,_0x37bf2c,_0x230bb8){if(_0x2d2c3a&&_0x2d2c3a[_['upperFirst'](_0x230bb8)+'InteractionId']){return _0x2d2c3a[_[_0xf5d7('0x7')](_0x230bb8)+_0xf5d7('0x8')];}else if(_0x2d2c3a&&_0x2d2c3a['id']){return _0x2d2c3a['id'];}else if(_0x37bf2c&&_0x37bf2c['id']){return _0x37bf2c['id'];}else{return _0xf5d7('0x9');}}function log(_0x1dedf3,_0x4ea59b,_0x2bb27a,_0x1687c1,_0x1b1407,_0xf5f1cf){loggers[_0x1b1407[_0xf5d7('0xa')]()][_0x1dedf3](_0xf5d7('0xb'),_0xf5f1cf[_0xf5d7('0xc')](),_0x4ea59b?_0x4ea59b['id']:null,_0x4ea59b?_0x4ea59b[_0xf5d7('0xd')]:null,_0x4ea59b?_0x4ea59b[_0xf5d7('0xe')]:null,getInteractionId(_0x2bb27a,_0x1687c1,_0x1b1407),_0x2bb27a?JSON[_0xf5d7('0xf')](_0x2bb27a):_0xf5d7('0x10'));}function updateUser(_0x189345,_0x369a71,_0x573d92,_0x555592,_0x316c7a){db[_[_0xf5d7('0x7')](_0x555592)+_0xf5d7('0x11')][_0xf5d7('0x12')]({'where':{'id':getInteractionId(_0x369a71,_0x573d92,_0x555592)}})[_0xf5d7('0x13')](function(_0x54ec1c){if(_0x54ec1c){return _0x54ec1c['update']({'UserId':_0x189345?_0x189345['id']:null});}})[_0xf5d7('0x13')](function(_0x553386){if(_0x553386){log(_0xf5d7('0x14'),_0x189345,_0x369a71,_0x573d92,_0x555592,_0x316c7a);}})[_0xf5d7('0x15')](function(){log(_0xf5d7('0x16'),_0x189345,_0x369a71,_0x573d92,_0x555592,_0x316c7a);});}exports['tracked']=function(_0x23433f,_0x233f89){return function(_0x323c26,_0x37b287,_0x5b411b){var _0x35642c=_0x323c26['user'];var _0x168910={};var _0x54c7b7=_0x323c26[_0xf5d7('0x17')];if(_0x168910){_0x168910=_[_0xf5d7('0x18')](_0x323c26[_0xf5d7('0x19')]);_0x168910=_[_0xf5d7('0x1a')](_0x168910,[_0xf5d7('0x19'),_0xf5d7('0x1b'),_0xf5d7('0x1c'),_0xf5d7('0x1d'),'mobile']);}updateUser(_0x35642c,_0x168910,_0x54c7b7,_0x23433f,_0x233f89);_0x5b411b(null);};};
\ No newline at end of file
+var _0x5e98=['fax-interactions','../../config/logger','sms-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','Interaction','findOne','then','info','catch','error','tracked','user','clone','body','html','phone','mobile','../../mysqldb','openchannel-interactions','mail-interactions'];(function(_0x123f2b,_0x46c143){var _0x3e1efd=function(_0x28fadc){while(--_0x28fadc){_0x123f2b['push'](_0x123f2b['shift']());}};_0x3e1efd(++_0x46c143);}(_0x5e98,0x176));var _0x85e9=function(_0x1f2083,_0x529095){_0x1f2083=_0x1f2083-0x0;var _0x594c55=_0x5e98[_0x1f2083];return _0x594c55;};'use strict';var _=require('lodash');var db=require(_0x85e9('0x0'))['db'];var loggers={'openchannel':require('../../config/logger')(_0x85e9('0x1')),'mail':require('../../config/logger')(_0x85e9('0x2')),'fax':require('../../config/logger')(_0x85e9('0x3')),'sms':require(_0x85e9('0x4'))(_0x85e9('0x5')),'chat':require('../../config/logger')(_0x85e9('0x6')),'whatsapp':require(_0x85e9('0x4'))(_0x85e9('0x7'))};function getInteractionId(_0x32bd95,_0x11cbd1,_0x14f831){if(_0x32bd95&&_0x32bd95[_[_0x85e9('0x8')](_0x14f831)+_0x85e9('0x9')]){return _0x32bd95[_['upperFirst'](_0x14f831)+_0x85e9('0x9')];}else if(_0x32bd95&&_0x32bd95['id']){return _0x32bd95['id'];}else if(_0x11cbd1&&_0x11cbd1['id']){return _0x11cbd1['id'];}else{return _0x85e9('0xa');}}function log(_0x4d009c,_0xfa1081,_0x10b5eb,_0xb792d1,_0x16c3d3,_0x2ac8d6){loggers[_0x16c3d3[_0x85e9('0xb')]()][_0x4d009c](_0x85e9('0xc'),_0x2ac8d6['toUpperCase'](),_0xfa1081?_0xfa1081['id']:null,_0xfa1081?_0xfa1081[_0x85e9('0xd')]:null,_0xfa1081?_0xfa1081[_0x85e9('0xe')]:null,getInteractionId(_0x10b5eb,_0xb792d1,_0x16c3d3),_0x10b5eb?JSON[_0x85e9('0xf')](_0x10b5eb):'null');}function updateUser(_0x401e1c,_0x5539ea,_0xde6aae,_0x1f2871,_0x2e3e6a){db[_[_0x85e9('0x8')](_0x1f2871)+_0x85e9('0x10')][_0x85e9('0x11')]({'where':{'id':getInteractionId(_0x5539ea,_0xde6aae,_0x1f2871)}})[_0x85e9('0x12')](function(_0x376d58){if(_0x376d58){return _0x376d58['update']({'UserId':_0x401e1c?_0x401e1c['id']:null});}})[_0x85e9('0x12')](function(_0x5b98de){if(_0x5b98de){log(_0x85e9('0x13'),_0x401e1c,_0x5539ea,_0xde6aae,_0x1f2871,_0x2e3e6a);}})[_0x85e9('0x14')](function(){log(_0x85e9('0x15'),_0x401e1c,_0x5539ea,_0xde6aae,_0x1f2871,_0x2e3e6a);});}exports[_0x85e9('0x16')]=function(_0x4fe6c6,_0x531280){return function(_0x4cb1e0,_0x3a3fa8,_0x56b650){var _0x3ee6b6=_0x4cb1e0[_0x85e9('0x17')];var _0x11b242={};var _0x4c213c=_0x4cb1e0['query'];if(_0x11b242){_0x11b242=_[_0x85e9('0x18')](_0x4cb1e0['body']);_0x11b242=_['omit'](_0x11b242,[_0x85e9('0x19'),_0x85e9('0x1a'),_0x85e9('0x1b'),'fax',_0x85e9('0x1c')]);}updateUser(_0x3ee6b6,_0x11b242,_0x4c213c,_0x4fe6c6,_0x531280);_0x56b650(null);};};
\ No newline at end of file
index a36c8d3..237a276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b7c=['update','utf8','final','hasOwnProperty','use','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','admin','user','isUserLimit','util','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format'];(function(_0xa8069a,_0x465494){var _0x598aea=function(_0x352ad1){while(--_0x352ad1){_0xa8069a['push'](_0xa8069a['shift']());}};_0x598aea(++_0x465494);}(_0x7b7c,0x1c0));var _0xc7b7=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x7b7c[_0x580576];return _0x3f55a0;};'use strict';var crypto=require('crypto');var util=require(_0xc7b7('0x0'));var compose=require('composable-middleware');var db=require('../../mysqldb')['db'];var config=require(_0xc7b7('0x1'));function getValueFromLicense(_0x12de8a,_0x2cd5a2){if(_0x12de8a&&_0x2cd5a2){if(_0x2cd5a2[_0xc7b7('0x2')]&&_0x2cd5a2[_0xc7b7('0x3')]){var _0x164a6c=_0x2cd5a2[_0xc7b7('0x2')];var _0x160304=_0x2cd5a2[_0xc7b7('0x3')];var _0x5a9bd0=_0x164a6c[_0xc7b7('0x4')]('-')[0x4];var _0x161f7c=_0x164a6c[_0xc7b7('0x4')]('-')[0x0];var _0x16f31f=crypto[_0xc7b7('0x5')](_0xc7b7('0x6'),util[_0xc7b7('0x7')]('%s:%s:%s',_0x5a9bd0,_0x164a6c,_0x161f7c));var _0xbacd95=_0x16f31f[_0xc7b7('0x8')](_0x160304,'base64',_0xc7b7('0x9'));_0xbacd95+=_0x16f31f[_0xc7b7('0xa')](_0xc7b7('0x9'));var _0x30444b=JSON['parse'](_0xbacd95);return _0x30444b[_0xc7b7('0xb')](_0x12de8a)?_0x30444b[_0x12de8a]:null;}}return null;}function isLimit(_0x545ae7,_0x2ed2b6,_0x2e1e03,_0x6d9d97){var _0x321ffe=_0x2ed2b6;return compose()[_0xc7b7('0xc')](function(_0x14fc01,_0x3574b1,_0x296e01){return db['License'][_0xc7b7('0xd')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x5ea9f9){var _0x23cf26=getValueFromLicense(_0x545ae7,_0x5ea9f9);return _0x23cf26?_0x23cf26:_0x321ffe;})[_0xc7b7('0xe')](function(_0x11d57a){_0x321ffe=_0x11d57a;return _0x2e1e03[_0xc7b7('0xf')](_0x6d9d97);})[_0xc7b7('0xe')](function(_0x56f23e){if(_0x56f23e>=_0x321ffe){return _0x3574b1[_0xc7b7('0x10')](0x193)[_0xc7b7('0x11')]({'message':util['format'](_0xc7b7('0x12'),_0x545ae7)});}_0x296e01();})['catch'](function(_0x20dc34){_0x296e01(_0x20dc34);});});}function isUserLimit(){return isLimit(_0xc7b7('0x13'),0x1,db[_0xc7b7('0x14')],{'where':{'$or':[{'role':_0xc7b7('0x15')},{'role':_0xc7b7('0x16')}]}});}exports[_0xc7b7('0x17')]=isUserLimit;
\ No newline at end of file
+var _0x3967=['utf8','final','parse','hasOwnProperty','License','findOne','then','count','status','json','catch','users','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','license','data1','split','createDecipher','aes-256-ctr','%s:%s:%s','update','base64'];(function(_0x3794a0,_0x1a9cfc){var _0x5bdaba=function(_0x14a764){while(--_0x14a764){_0x3794a0['push'](_0x3794a0['shift']());}};_0x5bdaba(++_0x1a9cfc);}(_0x3967,0xcb));var _0x7396=function(_0x4d40dd,_0x39592b){_0x4d40dd=_0x4d40dd-0x0;var _0x1c51f2=_0x3967[_0x4d40dd];return _0x1c51f2;};'use strict';var crypto=require(_0x7396('0x0'));var util=require(_0x7396('0x1'));var compose=require(_0x7396('0x2'));var db=require(_0x7396('0x3'))['db'];var config=require(_0x7396('0x4'));function getValueFromLicense(_0x3addc2,_0x92c227){if(_0x3addc2&&_0x92c227){if(_0x92c227['data1']&&_0x92c227[_0x7396('0x5')]){var _0x1b8ad3=_0x92c227[_0x7396('0x6')];var _0xd89afb=_0x92c227[_0x7396('0x5')];var _0x44f95c=_0x1b8ad3[_0x7396('0x7')]('-')[0x4];var _0x40bd8d=_0x1b8ad3[_0x7396('0x7')]('-')[0x0];var _0x267795=crypto[_0x7396('0x8')](_0x7396('0x9'),util['format'](_0x7396('0xa'),_0x44f95c,_0x1b8ad3,_0x40bd8d));var _0x1ab658=_0x267795[_0x7396('0xb')](_0xd89afb,_0x7396('0xc'),_0x7396('0xd'));_0x1ab658+=_0x267795[_0x7396('0xe')](_0x7396('0xd'));var _0x57cb27=JSON[_0x7396('0xf')](_0x1ab658);return _0x57cb27[_0x7396('0x10')](_0x3addc2)?_0x57cb27[_0x3addc2]:null;}}return null;}function isLimit(_0x13d38b,_0x3d3b81,_0x5c9b4f,_0x5a30d7){var _0x20ca16=_0x3d3b81;return compose()['use'](function(_0x5bf7bb,_0x170d18,_0x37e1a4){return db[_0x7396('0x11')][_0x7396('0x12')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x1eb3bb){var _0x3f3fb8=getValueFromLicense(_0x13d38b,_0x1eb3bb);return _0x3f3fb8?_0x3f3fb8:_0x20ca16;})[_0x7396('0x13')](function(_0x43f853){_0x20ca16=_0x43f853;return _0x5c9b4f[_0x7396('0x14')](_0x5a30d7);})['then'](function(_0xa830bd){if(_0xa830bd>=_0x20ca16){return _0x170d18[_0x7396('0x15')](0x193)[_0x7396('0x16')]({'message':util['format']('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x13d38b)});}_0x37e1a4();})[_0x7396('0x17')](function(_0x4eeb0d){_0x37e1a4(_0x4eeb0d);});});}function isUserLimit(){return isLimit(_0x7396('0x18'),0x1,db['User'],{'where':{'$or':[{'role':'admin'},{'role':_0x7396('0x19')}]}});}exports[_0x7396('0x1a')]=isUserLimit;
\ No newline at end of file
index 6589aec..5275d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a51=['startsWith','[$or]','and','replace','[$and]','split','length','slice','shift','match','forEach','filter','indexOf','map','conditions','push','buildExpression','operator','$between','value','includes','$gt','add','YYYY-MM-DD','castTo','text','CAST(','field','$ne','\x20IS\x20NULL)','$in','IN\x20?','$notIn','$eq','=\x20?','$substring','$startsWith','$endsWith','<\x20?','<=\x20?','BETWEEN\x20?\x20AND\x20?','start','pop','DATE','utcOffset','format','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator'];(function(_0x1ca3fe,_0x370211){var _0x73423b=function(_0x28e813){while(--_0x28e813){_0x1ca3fe['push'](_0x1ca3fe['shift']());}};_0x73423b(++_0x370211);}(_0x7a51,0x1a4));var _0x17a5=function(_0x5c0a34,_0x5df4db){_0x5c0a34=_0x5c0a34-0x0;var _0x358c64=_0x7a51[_0x5c0a34];return _0x358c64;};'use strict';var _=require(_0x17a5('0x0'));var moment=require(_0x17a5('0x1'));exports[_0x17a5('0x2')]=function(_0x40da6d){var _0x27185c={'conditions':[]};_0x27185c[_0x17a5('0x3')]=_[_0x17a5('0x4')](_0x40da6d,_0x17a5('0x5'))?'or':_0x17a5('0x6');var _0x125e7e=_0x40da6d[_0x17a5('0x7')](_0x17a5('0x8'),'')[_0x17a5('0x7')](_0x17a5('0x5'),'')[_0x17a5('0x9')]('||');for(var _0x490287=0x0;_0x490287<_0x125e7e[_0x17a5('0xa')];_0x490287++){var _0x38b0f1=_0x125e7e[_0x490287][_0x17a5('0x9')](':=');var _0x3ecedf=_0x38b0f1[0x0];var _0x574705=_0x38b0f1[_0x17a5('0xb')](0x1);_0x574705['forEach'](function(_0x706d0b){var _0x5bf3e9=_0x706d0b[_0x17a5('0x9')]('[')[_0x17a5('0xc')]();var _0x5c07e7=_0x706d0b[_0x17a5('0xd')](/\[(.*?)\]/g);_0x5c07e7[_0x17a5('0xe')](function(_0x1e415f){var _0x42b52d=_0x1e415f['split']('[')[_0x17a5('0xf')](function(_0xd6cfd0){return _0xd6cfd0[_0x17a5('0x10')](']')>-0x1;})[_0x17a5('0x11')](function(_0x3278ba){return _0x3278ba[_0x17a5('0x9')](']')[0x0];})[0x0];_0x27185c[_0x17a5('0x12')][_0x17a5('0x13')]({'field':_0x3ecedf,'operator':_0x5bf3e9,'value':_0x42b52d});});});}return _0x27185c;};exports[_0x17a5('0x14')]=function(_0x3cfd1c,_0x962668,_0x37c977){var _0x42bf0e={};if(_0x962668==='DATE'){if(_0x37c977[_0x17a5('0x15')]==='$eq'){_0x37c977[_0x17a5('0x15')]=_0x17a5('0x16');_0x37c977[_0x17a5('0x17')]+=','+_0x37c977['value'];}else if(_[_0x17a5('0x18')]([_0x17a5('0x19'),'$lte'],_0x37c977[_0x17a5('0x15')])){_0x37c977[_0x17a5('0x17')]=moment(_0x37c977[_0x17a5('0x17')])[_0x17a5('0x1a')](0x1,'days')['format'](_0x17a5('0x1b'));}}if(_0x37c977['castTo']){_0x962668=_0x37c977[_0x17a5('0x1c')];_0x42bf0e[_0x17a5('0x1d')]=_0x17a5('0x1e')+_0x3cfd1c+'.'+_0x37c977[_0x17a5('0x1f')]+'\x20AS\x20'+_0x37c977[_0x17a5('0x1c')]+')\x20'+parseOperator(_0x37c977[_0x17a5('0x15')]);}else{_0x42bf0e[_0x17a5('0x1d')]=_0x3cfd1c+'.'+_0x37c977[_0x17a5('0x1f')]+'\x20'+parseOperator(_0x37c977[_0x17a5('0x15')]);}if(_['includes']([_0x17a5('0x20'),'$notIn'],_0x37c977[_0x17a5('0x15')]))_0x42bf0e[_0x17a5('0x1d')]='('+_0x42bf0e['text']+'\x20OR\x20'+_0x3cfd1c+'.'+_0x37c977[_0x17a5('0x1f')]+_0x17a5('0x21');_0x42bf0e[_0x17a5('0x17')]=parseValue(_0x962668,_0x37c977['operator'],_0x37c977[_0x17a5('0x17')]);return _0x42bf0e;};function parseOperator(_0x325b35){var _0x4693e1;switch(_0x325b35){case _0x17a5('0x22'):_0x4693e1=_0x17a5('0x23');break;case _0x17a5('0x24'):_0x4693e1='NOT\x20IN\x20?';break;case _0x17a5('0x25'):_0x4693e1=_0x17a5('0x26');break;case _0x17a5('0x20'):_0x4693e1='<>\x20?';break;case _0x17a5('0x27'):case _0x17a5('0x28'):case _0x17a5('0x29'):_0x4693e1='LIKE\x20?';break;case'$lt':_0x4693e1=_0x17a5('0x2a');break;case _0x17a5('0x19'):_0x4693e1='>\x20?';break;case'$lte':_0x4693e1=_0x17a5('0x2b');break;case'$gte':_0x4693e1='>=\x20?';break;case'$between':_0x4693e1=_0x17a5('0x2c');break;}return _0x4693e1;}function parseValue(_0x358ada,_0xef1df9,_0xb41a6f){var _0x5d17e3={'start':undefined,'end':undefined};switch(_0xef1df9){case'$in':case _0x17a5('0x24'):_0x5d17e3['start']=_0xb41a6f[_0x17a5('0x9')](',');break;case'$substring':_0x5d17e3['start']='%'+_0xb41a6f+'%';break;case _0x17a5('0x28'):_0x5d17e3[_0x17a5('0x2d')]=_0xb41a6f+'%';break;case _0x17a5('0x29'):_0x5d17e3[_0x17a5('0x2d')]='%'+_0xb41a6f;break;case'$between':var _0x3abf54=_0xb41a6f[_0x17a5('0x9')](',');var _0xb41a6f=_0x3abf54[_0x17a5('0xc')]();var _0x5a021f=_0x3abf54[_0x17a5('0x2e')]();if(_0x358ada===_0x17a5('0x2f')){_0xb41a6f=moment(_0xb41a6f)[_0x17a5('0x30')](0x0,!![])[_0x17a5('0x31')]();_0x5a021f=moment(_0x5a021f)[_0x17a5('0x30')](0x0,!![])[_0x17a5('0x1a')](0x17,_0x17a5('0x32'))[_0x17a5('0x1a')](0x3b,_0x17a5('0x33'))['add'](0x3b,_0x17a5('0x34'))[_0x17a5('0x31')]();}_0x5d17e3={'start':_0xb41a6f,'end':_0x5a021f};break;default:_0x5d17e3[_0x17a5('0x2d')]=_0xb41a6f;break;}return _0x5d17e3;}
\ No newline at end of file
+var _0xa2ab=['LIKE\x20?','$lt','<\x20?','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','minutes','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','and','replace','[$or]','length','slice','split','shift','match','forEach','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$between','value','$gt','$lte','add','format','YYYY-MM-DD','castTo','text','CAST(','field','includes','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','$eq','$substring','$startsWith','$endsWith'];(function(_0x29b9d4,_0x40c4ce){var _0x11f358=function(_0x512468){while(--_0x512468){_0x29b9d4['push'](_0x29b9d4['shift']());}};_0x11f358(++_0x40c4ce);}(_0xa2ab,0x129));var _0xba2a=function(_0x263b66,_0x42087e){_0x263b66=_0x263b66-0x0;var _0x1345b8=_0xa2ab[_0x263b66];return _0x1345b8;};'use strict';var _=require(_0xba2a('0x0'));var moment=require(_0xba2a('0x1'));exports[_0xba2a('0x2')]=function(_0x2d400e){var _0x3b4ea1={'conditions':[]};_0x3b4ea1[_0xba2a('0x3')]=_[_0xba2a('0x4')](_0x2d400e,'[$or]')?'or':_0xba2a('0x5');var _0x518529=_0x2d400e[_0xba2a('0x6')]('[$and]','')[_0xba2a('0x6')](_0xba2a('0x7'),'')['split']('||');for(var _0x456801=0x0;_0x456801<_0x518529[_0xba2a('0x8')];_0x456801++){var _0x3f1638=_0x518529[_0x456801]['split'](':=');var _0x411c96=_0x3f1638[0x0];var _0x166f9e=_0x3f1638[_0xba2a('0x9')](0x1);_0x166f9e['forEach'](function(_0x3529bb){var _0xe23540=_0x3529bb[_0xba2a('0xa')]('[')[_0xba2a('0xb')]();var _0x5bd136=_0x3529bb[_0xba2a('0xc')](/\[(.*?)\]/g);_0x5bd136[_0xba2a('0xd')](function(_0x25f952){var _0x342cd4=_0x25f952[_0xba2a('0xa')]('[')[_0xba2a('0xe')](function(_0x276ba4){return _0x276ba4[_0xba2a('0xf')](']')>-0x1;})[_0xba2a('0x10')](function(_0x5c0ca4){return _0x5c0ca4[_0xba2a('0xa')](']')[0x0];})[0x0];_0x3b4ea1[_0xba2a('0x11')][_0xba2a('0x12')]({'field':_0x411c96,'operator':_0xe23540,'value':_0x342cd4});});});}return _0x3b4ea1;};exports[_0xba2a('0x13')]=function(_0x746b30,_0x6cdcad,_0x7355ae){var _0x386a64={};if(_0x6cdcad===_0xba2a('0x14')){if(_0x7355ae[_0xba2a('0x15')]==='$eq'){_0x7355ae[_0xba2a('0x15')]=_0xba2a('0x16');_0x7355ae['value']+=','+_0x7355ae[_0xba2a('0x17')];}else if(_['includes']([_0xba2a('0x18'),_0xba2a('0x19')],_0x7355ae['operator'])){_0x7355ae[_0xba2a('0x17')]=moment(_0x7355ae[_0xba2a('0x17')])[_0xba2a('0x1a')](0x1,'days')[_0xba2a('0x1b')](_0xba2a('0x1c'));}}if(_0x7355ae[_0xba2a('0x1d')]){_0x6cdcad=_0x7355ae['castTo'];_0x386a64[_0xba2a('0x1e')]=_0xba2a('0x1f')+_0x746b30+'.'+_0x7355ae[_0xba2a('0x20')]+'\x20AS\x20'+_0x7355ae['castTo']+')\x20'+parseOperator(_0x7355ae[_0xba2a('0x15')]);}else{_0x386a64[_0xba2a('0x1e')]=_0x746b30+'.'+_0x7355ae[_0xba2a('0x20')]+'\x20'+parseOperator(_0x7355ae[_0xba2a('0x15')]);}if(_[_0xba2a('0x21')]([_0xba2a('0x22'),_0xba2a('0x23')],_0x7355ae[_0xba2a('0x15')]))_0x386a64[_0xba2a('0x1e')]='('+_0x386a64[_0xba2a('0x1e')]+_0xba2a('0x24')+_0x746b30+'.'+_0x7355ae[_0xba2a('0x20')]+_0xba2a('0x25');_0x386a64[_0xba2a('0x17')]=parseValue(_0x6cdcad,_0x7355ae[_0xba2a('0x15')],_0x7355ae[_0xba2a('0x17')]);return _0x386a64;};function parseOperator(_0x4717bf){var _0x5d9d04;switch(_0x4717bf){case _0xba2a('0x26'):_0x5d9d04=_0xba2a('0x27');break;case _0xba2a('0x23'):_0x5d9d04=_0xba2a('0x28');break;case _0xba2a('0x29'):_0x5d9d04='=\x20?';break;case _0xba2a('0x22'):_0x5d9d04='<>\x20?';break;case _0xba2a('0x2a'):case _0xba2a('0x2b'):case _0xba2a('0x2c'):_0x5d9d04=_0xba2a('0x2d');break;case _0xba2a('0x2e'):_0x5d9d04=_0xba2a('0x2f');break;case _0xba2a('0x18'):_0x5d9d04=_0xba2a('0x30');break;case _0xba2a('0x19'):_0x5d9d04='<=\x20?';break;case _0xba2a('0x31'):_0x5d9d04=_0xba2a('0x32');break;case _0xba2a('0x16'):_0x5d9d04=_0xba2a('0x33');break;}return _0x5d9d04;}function parseValue(_0x512e57,_0x313b6c,_0x57ec9f){var _0x220ba9={'start':undefined,'end':undefined};switch(_0x313b6c){case _0xba2a('0x26'):case'$notIn':_0x220ba9['start']=_0x57ec9f['split'](',');break;case'$substring':_0x220ba9['start']='%'+_0x57ec9f+'%';break;case _0xba2a('0x2b'):_0x220ba9[_0xba2a('0x34')]=_0x57ec9f+'%';break;case _0xba2a('0x2c'):_0x220ba9[_0xba2a('0x34')]='%'+_0x57ec9f;break;case _0xba2a('0x16'):var _0x53f37b=_0x57ec9f[_0xba2a('0xa')](',');var _0x57ec9f=_0x53f37b[_0xba2a('0xb')]();var _0x5de48f=_0x53f37b[_0xba2a('0x35')]();if(_0x512e57===_0xba2a('0x14')){_0x57ec9f=moment(_0x57ec9f)[_0xba2a('0x36')](0x0,!![])[_0xba2a('0x1b')]();_0x5de48f=moment(_0x5de48f)[_0xba2a('0x36')](0x0,!![])[_0xba2a('0x1a')](0x17,'hours')[_0xba2a('0x1a')](0x3b,_0xba2a('0x37'))[_0xba2a('0x1a')](0x3b,_0xba2a('0x38'))['format']();}_0x220ba9={'start':_0x57ec9f,'end':_0x5de48f};break;default:_0x220ba9[_0xba2a('0x34')]=_0x57ec9f;break;}return _0x220ba9;}
\ No newline at end of file
index d14e020..c088548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb68=['name','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','isEmpty','forOwn','find','$gte','format','YYYY-MM-DD','$lte','subtract','uniqueid','isArray','limit','offset','sort','indexOf','priority','cast','unsigned','substr','DESC','col','ASC','omit','isObject','isString','length','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','replace','push','join','getOptions','query','$id','map','intersection','attributes','model','order','where','pick','filter','merge','type','VIRTUAL','lower'];(function(_0xf40aa3,_0x567f73){var _0x2faae4=function(_0x4f5381){while(--_0x4f5381){_0xf40aa3['push'](_0xf40aa3['shift']());}};_0x2faae4(++_0x567f73);}(_0xcb68,0xaf));var _0x8cb6=function(_0x49820c,_0x365778){_0x49820c=_0x49820c-0x0;var _0x20b4b0=_0xcb68[_0x49820c];return _0x20b4b0;};'use strict';var _=require(_0x8cb6('0x0'));var sequelize=require(_0x8cb6('0x1'));var moment=require(_0x8cb6('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x1d6a83){var _0x1e2dc2=['ne'];try{var _0x16ea2c=JSON[_0x8cb6('0x3')](_0x1d6a83);var _0x11d46a=Object[_0x8cb6('0x4')](_0x16ea2c)[0x0];return _0x1e2dc2[_0x8cb6('0x5')](_0x11d46a);}catch(_0x422701){return![];}}function getOperatorValue(_0x109b40){var _0x2e87fb=JSON[_0x8cb6('0x3')](_0x109b40);var _0x408daf=Object[_0x8cb6('0x4')](_0x2e87fb)[0x0];var _0x34fc3d=_0x2e87fb[_0x408daf];return{['$'+_0x408daf]:_0x34fc3d};}exports[_0x8cb6('0x6')]=function(_0x5ed84f){var _0x227eb6=null;if(_0x5ed84f){_0x227eb6=_0x5ed84f[_0x8cb6('0x7')](',');}return _0x227eb6;};exports[_0x8cb6('0x8')]=function(_0x1adc85,_0x511233){var _0x25b3e2={};if(!_[_0x8cb6('0x9')](_0x1adc85)){_[_0x8cb6('0xa')](_0x1adc85,function(_0x54af3d,_0x1bf9d7){try{if(_0x511233){var _0x26d76d=_[_0x8cb6('0xb')](_0x511233,{'name':_0x1bf9d7})||{};if(hasSequelizeOperator(_0x54af3d)){_0x25b3e2[_0x1bf9d7]=getOperatorValue(_0x54af3d);}else if(_0x26d76d['type']==='DATE'&&_['isPlainObject'](_0x54af3d)){var _0x508057=JSON[_0x8cb6('0x3')](_0x54af3d);var _0x405c19={'$gte':moment(moment(_0x508057[_0x8cb6('0xc')])[_0x8cb6('0xd')](_0x8cb6('0xe')))['utc']()[_0x8cb6('0xd')](),'$lte':moment(moment(_0x508057[_0x8cb6('0xf')])['format']('YYYY-MM-DD'))['utc']()[_0x8cb6('0x10')](0x1,'s')[_0x8cb6('0xd')]()};_0x25b3e2[_0x1bf9d7]=_0x405c19;}else if(_0x26d76d['name']===_0x8cb6('0x11')){_0x25b3e2[_0x1bf9d7]=_0x54af3d;}else{_0x25b3e2[_0x1bf9d7]=_[_0x8cb6('0x12')](_0x54af3d)?_0x54af3d:JSON[_0x8cb6('0x3')](_0x54af3d);}}else{_0x25b3e2[_0x1bf9d7]=_[_0x8cb6('0x12')](_0x54af3d)?_0x54af3d:JSON[_0x8cb6('0x3')](_0x54af3d);}}catch(_0x55b76f){_0x25b3e2[_0x1bf9d7]=_0x54af3d[_0x8cb6('0x7')](',');}});}return _0x25b3e2;};exports[_0x8cb6('0x13')]=function(_0x25e7fd){_0x25e7fd=parseInt(_0x25e7fd,0xa);if(!_0x25e7fd||_0x25e7fd<0x0){_0x25e7fd=LIMIT_VALUE;}return _0x25e7fd;};exports[_0x8cb6('0x14')]=function(_0x5b1df8){_0x5b1df8=parseInt(_0x5b1df8,0xa);if(!_0x5b1df8||_0x5b1df8<0x0){_0x5b1df8=0x0;}return _0x5b1df8;};exports[_0x8cb6('0x15')]=function(_0x3b8b3b){var _0x539f06,_0x99a36e=null;if(_0x3b8b3b){_0x539f06=_0x3b8b3b['split'](',');_0x99a36e=_['map'](_0x539f06,function(_0x27aecd){if(_0x27aecd[_0x8cb6('0x16')]('-')===0x0){return[_0x27aecd===_0x8cb6('0x17')?sequelize[_0x8cb6('0x18')](sequelize['col'](_0x8cb6('0x17')),_0x8cb6('0x19')):_0x27aecd[_0x8cb6('0x1a')](0x1),_0x8cb6('0x1b')];}else{return[_0x27aecd==='priority'?sequelize[_0x8cb6('0x18')](sequelize[_0x8cb6('0x1c')](_0x8cb6('0x17')),_0x8cb6('0x19')):_0x27aecd,_0x8cb6('0x1d')];}});}return _0x99a36e;};exports[_0x8cb6('0x1e')]=function(_0x2be83b,_0x431071){if(_[_0x8cb6('0x9')](_0x2be83b)){return _0x2be83b;}if(_['isArray'](_0x2be83b)){for(var _0x163fde=0x0;_0x163fde<_0x2be83b['length'];_0x163fde+=0x1){_0x2be83b[_0x163fde]=this[_0x8cb6('0x1e')](_0x2be83b[_0x163fde],_0x431071);}return _0x2be83b;}if(!_[_0x8cb6('0x1f')](_0x2be83b)){return _0x2be83b;}if(_[_0x8cb6('0x20')](_0x431071)){_0x431071=[_0x431071];}if(!_['isArray'](_0x431071)){return _0x2be83b;}for(var _0x5e8442=0x0;_0x5e8442<_0x431071[_0x8cb6('0x21')];_0x5e8442+=0x1){_[_0x8cb6('0x22')](_0x2be83b,_0x431071[_0x5e8442]);}for(var _0x57f200 in _0x2be83b){if(_0x2be83b[_0x8cb6('0x23')](_0x57f200)){_0x2be83b[_0x57f200]=this[_0x8cb6('0x1e')](_0x2be83b[_0x57f200],_0x431071);}}return _0x2be83b;};exports[_0x8cb6('0x24')]=function(_0xbf59b1){return _0xbf59b1[_0x8cb6('0x25')](RegExp(_0x8cb6('0x26')))?!![]:![];};exports['isEmail']=function(_0x8e9ac0){return _0x8e9ac0['match'](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x343617){var _0x1a3f85=[];_0x343617[_0x8cb6('0x7')](/[ ,]+/)['forEach'](function(_0x2c64ba){_0x2c64ba=_0x2c64ba[_0x8cb6('0x27')](/([^:]")"+/g,'$1');_0x2c64ba='+'+_0x2c64ba+'*';if(_0x2c64ba[_0x8cb6('0x5')]('@'))_0x2c64ba='\x22'+_0x2c64ba+'\x22';_0x1a3f85[_0x8cb6('0x28')](_0x2c64ba);});return _0x1a3f85[_0x8cb6('0x29')]('\x20');};exports[_0x8cb6('0x2a')]=function(_0x1db28b,_0x11d389,_0x594be3){var _0x5b4440={},_0x5478e4={};if(_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x2c')]){_0x11d389['query']['id']=_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x2c')];delete _0x11d389['query'][_0x8cb6('0x2c')];}_0x5b4440['model']=_[_0x8cb6('0x2d')](_0x1db28b,'name');_0x5b4440[_0x8cb6('0x2b')]=_[_0x8cb6('0x4')](_0x11d389['query']);_0x5b4440[_0x8cb6('0x8')]=_[_0x8cb6('0x2e')](_0x5b4440['model'],_0x5b4440[_0x8cb6('0x2b')]);_0x5478e4[_0x8cb6('0x2f')]=_[_0x8cb6('0x2e')](_0x5b4440['model'],this[_0x8cb6('0x6')](_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x6')]));_0x5478e4[_0x8cb6('0x2f')]=_0x5478e4['attributes'][_0x8cb6('0x21')]?_0x5478e4['attributes']:_0x5b4440[_0x8cb6('0x30')];if(!_0x11d389['query'][_0x8cb6('0x23')]('nolimit')){_0x5478e4[_0x8cb6('0x13')]=this[_0x8cb6('0x13')](_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x13')]);_0x5478e4['offset']=this[_0x8cb6('0x14')](_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x14')]);}_0x5478e4[_0x8cb6('0x31')]=this[_0x8cb6('0x15')](_0x11d389[_0x8cb6('0x2b')]['sort']);_0x5478e4[_0x8cb6('0x32')]=this['filters'](_[_0x8cb6('0x33')](_0x11d389['query'],_0x5b4440['filters']),_0x1db28b);if(_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x34')]){_0x5478e4['where']=_[_0x8cb6('0x35')](_0x5478e4['where'],{'$or':_[_0x8cb6('0x2d')](_0x1db28b,function(_0x30af6b){if(_0x30af6b[_0x8cb6('0x36')]!==_0x8cb6('0x37')){if(_0x594be3){return sequelize['where'](sequelize['fn'](_0x8cb6('0x38'),sequelize['col'](_0x30af6b['name'])),{'$like':sequelize['fn'](_0x8cb6('0x38'),'%'+_0x11d389[_0x8cb6('0x2b')]['filter']+'%')});}else{var _0x2054fd={};_0x2054fd[_0x30af6b[_0x8cb6('0x39')]]={'$like':'%'+_0x11d389[_0x8cb6('0x2b')][_0x8cb6('0x34')]+'%'};return _0x2054fd;}}})});}_0x5478e4=_[_0x8cb6('0x35')]({},_0x5478e4,_0x11d389['options']);return _0x5478e4;};
\ No newline at end of file
+var _0x7619=['filter','where','merge','VIRTUAL','lower','options','moment','parse','includes','keys','split','isEmpty','forOwn','type','DATE','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','offset','sort','indexOf','priority','unsigned','substr','cast','col','ASC','omit','length','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','query','$id','map','filters','intersection','model','attributes','fields','nolimit','order'];(function(_0x187279,_0x26d152){var _0x3da59d=function(_0x41c808){while(--_0x41c808){_0x187279['push'](_0x187279['shift']());}};_0x3da59d(++_0x26d152);}(_0x7619,0xb1));var _0x9761=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7619[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0x9761('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x498757){var _0x389ef7=['ne'];try{var _0x1d6010=JSON[_0x9761('0x1')](_0x498757);var _0xa946eb=Object['keys'](_0x1d6010)[0x0];return _0x389ef7[_0x9761('0x2')](_0xa946eb);}catch(_0x27683c){return![];}}function getOperatorValue(_0x2d83e0){var _0x5c6d76=JSON['parse'](_0x2d83e0);var _0x3c23a7=Object[_0x9761('0x3')](_0x5c6d76)[0x0];var _0x20e020=_0x5c6d76[_0x3c23a7];return{['$'+_0x3c23a7]:_0x20e020};}exports['fields']=function(_0x3ef75d){var _0x4f488d=null;if(_0x3ef75d){_0x4f488d=_0x3ef75d[_0x9761('0x4')](',');}return _0x4f488d;};exports['filters']=function(_0x4550d0,_0x5756b2){var _0x4756ab={};if(!_[_0x9761('0x5')](_0x4550d0)){_[_0x9761('0x6')](_0x4550d0,function(_0x492f12,_0x452309){try{if(_0x5756b2){var _0xfa4991=_['find'](_0x5756b2,{'name':_0x452309})||{};if(hasSequelizeOperator(_0x492f12)){_0x4756ab[_0x452309]=getOperatorValue(_0x492f12);}else if(_0xfa4991[_0x9761('0x7')]===_0x9761('0x8')&&_['isPlainObject'](_0x492f12)){var _0x25fd58=JSON[_0x9761('0x1')](_0x492f12);var _0x21b367={'$gte':moment(moment(_0x25fd58[_0x9761('0x9')])[_0x9761('0xa')](_0x9761('0xb')))[_0x9761('0xc')]()[_0x9761('0xa')](),'$lte':moment(moment(_0x25fd58[_0x9761('0xd')])[_0x9761('0xa')](_0x9761('0xb')))[_0x9761('0xc')]()[_0x9761('0xe')](0x1,'s')['format']()};_0x4756ab[_0x452309]=_0x21b367;}else if(_0xfa4991[_0x9761('0xf')]===_0x9761('0x10')){_0x4756ab[_0x452309]=_0x492f12;}else{_0x4756ab[_0x452309]=_[_0x9761('0x11')](_0x492f12)?_0x492f12:JSON['parse'](_0x492f12);}}else{_0x4756ab[_0x452309]=_[_0x9761('0x11')](_0x492f12)?_0x492f12:JSON[_0x9761('0x1')](_0x492f12);}}catch(_0x4c7ffa){_0x4756ab[_0x452309]=_0x492f12[_0x9761('0x4')](',');}});}return _0x4756ab;};exports[_0x9761('0x12')]=function(_0x57e02d){_0x57e02d=parseInt(_0x57e02d,0xa);if(!_0x57e02d||_0x57e02d<0x0){_0x57e02d=LIMIT_VALUE;}return _0x57e02d;};exports[_0x9761('0x13')]=function(_0x1f89e9){_0x1f89e9=parseInt(_0x1f89e9,0xa);if(!_0x1f89e9||_0x1f89e9<0x0){_0x1f89e9=0x0;}return _0x1f89e9;};exports[_0x9761('0x14')]=function(_0x5a39ac){var _0xe3ce72,_0x256256=null;if(_0x5a39ac){_0xe3ce72=_0x5a39ac['split'](',');_0x256256=_['map'](_0xe3ce72,function(_0x231815){if(_0x231815[_0x9761('0x15')]('-')===0x0){return[_0x231815===_0x9761('0x16')?sequelize['cast'](sequelize['col'](_0x9761('0x16')),_0x9761('0x17')):_0x231815[_0x9761('0x18')](0x1),'DESC'];}else{return[_0x231815===_0x9761('0x16')?sequelize[_0x9761('0x19')](sequelize[_0x9761('0x1a')](_0x9761('0x16')),_0x9761('0x17')):_0x231815,_0x9761('0x1b')];}});}return _0x256256;};exports[_0x9761('0x1c')]=function(_0x3e3978,_0x3f8ef5){if(_[_0x9761('0x5')](_0x3e3978)){return _0x3e3978;}if(_[_0x9761('0x11')](_0x3e3978)){for(var _0x37da6d=0x0;_0x37da6d<_0x3e3978['length'];_0x37da6d+=0x1){_0x3e3978[_0x37da6d]=this[_0x9761('0x1c')](_0x3e3978[_0x37da6d],_0x3f8ef5);}return _0x3e3978;}if(!_['isObject'](_0x3e3978)){return _0x3e3978;}if(_['isString'](_0x3f8ef5)){_0x3f8ef5=[_0x3f8ef5];}if(!_[_0x9761('0x11')](_0x3f8ef5)){return _0x3e3978;}for(var _0x16530f=0x0;_0x16530f<_0x3f8ef5[_0x9761('0x1d')];_0x16530f+=0x1){_['unset'](_0x3e3978,_0x3f8ef5[_0x16530f]);}for(var _0x2ac8bd in _0x3e3978){if(_0x3e3978[_0x9761('0x1e')](_0x2ac8bd)){_0x3e3978[_0x2ac8bd]=this[_0x9761('0x1c')](_0x3e3978[_0x2ac8bd],_0x3f8ef5);}}return _0x3e3978;};exports[_0x9761('0x1f')]=function(_0x5e6c95){return _0x5e6c95[_0x9761('0x20')](RegExp(_0x9761('0x21')))?!![]:![];};exports[_0x9761('0x22')]=function(_0x53ff03){return _0x53ff03[_0x9761('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0x9761('0x23')]=function(_0x41d837){var _0x578a07=[];_0x41d837[_0x9761('0x4')](/[ ,]+/)[_0x9761('0x24')](function(_0x49fcab){_0x49fcab=_0x49fcab[_0x9761('0x25')](/([^:]")"+/g,'$1');_0x49fcab='+'+_0x49fcab+'*';if(_0x49fcab[_0x9761('0x2')]('@'))_0x49fcab='\x22'+_0x49fcab+'\x22';_0x578a07[_0x9761('0x26')](_0x49fcab);});return _0x578a07[_0x9761('0x27')]('\x20');};exports[_0x9761('0x28')]=function(_0x29757a,_0x796530,_0x4972ff){var _0x3c5718={},_0x3f15c0={};if(_0x796530[_0x9761('0x29')][_0x9761('0x2a')]){_0x796530['query']['id']=_0x796530[_0x9761('0x29')][_0x9761('0x2a')];delete _0x796530[_0x9761('0x29')][_0x9761('0x2a')];}_0x3c5718['model']=_[_0x9761('0x2b')](_0x29757a,_0x9761('0xf'));_0x3c5718['query']=_[_0x9761('0x3')](_0x796530[_0x9761('0x29')]);_0x3c5718[_0x9761('0x2c')]=_[_0x9761('0x2d')](_0x3c5718[_0x9761('0x2e')],_0x3c5718[_0x9761('0x29')]);_0x3f15c0[_0x9761('0x2f')]=_[_0x9761('0x2d')](_0x3c5718['model'],this[_0x9761('0x30')](_0x796530[_0x9761('0x29')][_0x9761('0x30')]));_0x3f15c0[_0x9761('0x2f')]=_0x3f15c0[_0x9761('0x2f')]['length']?_0x3f15c0['attributes']:_0x3c5718[_0x9761('0x2e')];if(!_0x796530[_0x9761('0x29')]['hasOwnProperty'](_0x9761('0x31'))){_0x3f15c0[_0x9761('0x12')]=this[_0x9761('0x12')](_0x796530[_0x9761('0x29')][_0x9761('0x12')]);_0x3f15c0[_0x9761('0x13')]=this[_0x9761('0x13')](_0x796530[_0x9761('0x29')][_0x9761('0x13')]);}_0x3f15c0[_0x9761('0x32')]=this[_0x9761('0x14')](_0x796530[_0x9761('0x29')][_0x9761('0x14')]);_0x3f15c0['where']=this[_0x9761('0x2c')](_['pick'](_0x796530[_0x9761('0x29')],_0x3c5718[_0x9761('0x2c')]),_0x29757a);if(_0x796530['query'][_0x9761('0x33')]){_0x3f15c0[_0x9761('0x34')]=_[_0x9761('0x35')](_0x3f15c0[_0x9761('0x34')],{'$or':_[_0x9761('0x2b')](_0x29757a,function(_0x4841b4){if(_0x4841b4[_0x9761('0x7')]!==_0x9761('0x36')){if(_0x4972ff){return sequelize[_0x9761('0x34')](sequelize['fn']('lower',sequelize[_0x9761('0x1a')](_0x4841b4[_0x9761('0xf')])),{'$like':sequelize['fn'](_0x9761('0x37'),'%'+_0x796530[_0x9761('0x29')][_0x9761('0x33')]+'%')});}else{var _0x51f367={};_0x51f367[_0x4841b4[_0x9761('0xf')]]={'$like':'%'+_0x796530[_0x9761('0x29')]['filter']+'%'};return _0x51f367;}}})});}_0x3f15c0=_['merge']({},_0x3f15c0,_0x796530[_0x9761('0x38')]);return _0x3f15c0;};
\ No newline at end of file
index d0cc20c..c87e88c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cb0=['appPath','root','public','development','test','set','join','use','json\x20replacer','toISOString','split','get','views','/server/views','engine','ejs','renderFile','view\x20engine','html','50mb','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','path','passport','cors','moment','./environment','default','env','production'];(function(_0x2a9490,_0x43cb5f){var _0x5bf90e=function(_0x207583){while(--_0x207583){_0x2a9490['push'](_0x2a9490['shift']());}};_0x5bf90e(++_0x43cb5f);}(_0x8cb0,0x7e));var _0x08cb=function(_0x436f7d,_0x3b3f9d){_0x436f7d=_0x436f7d-0x0;var _0x572a5c=_0x8cb0[_0x436f7d];return _0x572a5c;};'use strict';var express=require(_0x08cb('0x0'));var favicon=require(_0x08cb('0x1'));var bodyParser=require(_0x08cb('0x2'));var methodOverride=require(_0x08cb('0x3'));var cookieParser=require(_0x08cb('0x4'));var errorHandler=require(_0x08cb('0x5'));var path=require(_0x08cb('0x6'));var passport=require(_0x08cb('0x7'));var cors=require(_0x08cb('0x8'));var moment=require(_0x08cb('0x9'));var config=require(_0x08cb('0xa'));var db=require('../mysqldb')['db'];exports[_0x08cb('0xb')]=function(_0x3bd23f){var _0x438962=_0x3bd23f['get'](_0x08cb('0xc'));if(_0x438962===_0x08cb('0xd')){_0x3bd23f['set'](_0x08cb('0xe'),path['join'](config[_0x08cb('0xf')],_0x08cb('0x10')));}if(_0x438962===_0x08cb('0x11')||_0x438962===_0x08cb('0x12')){_0x3bd23f[_0x08cb('0x13')](_0x08cb('0xe'),path[_0x08cb('0x14')](config[_0x08cb('0xf')],'client'));_0x3bd23f[_0x08cb('0x15')](errorHandler());}_0x3bd23f[_0x08cb('0x13')](_0x08cb('0x16'),function(_0x25f288,_0x3de277){if(this[_0x25f288]instanceof Date){_0x3de277=this[_0x25f288][_0x08cb('0x17')]()[_0x08cb('0x18')]('.')[0x0]+'Z';}return _0x3de277;});_0x3bd23f['use'](express['static'](_0x3bd23f[_0x08cb('0x19')](_0x08cb('0xe'))));_0x3bd23f[_0x08cb('0x13')](_0x08cb('0x1a'),config[_0x08cb('0xf')]+_0x08cb('0x1b'));_0x3bd23f[_0x08cb('0x1c')]('html',require(_0x08cb('0x1d'))[_0x08cb('0x1e')]);_0x3bd23f['set'](_0x08cb('0x1f'),_0x08cb('0x20'));_0x3bd23f[_0x08cb('0x15')](bodyParser['urlencoded']({'limit':'50mb','extended':!![]}));_0x3bd23f[_0x08cb('0x15')](bodyParser['json']({'limit':_0x08cb('0x21')}));_0x3bd23f[_0x08cb('0x15')](cors());_0x3bd23f[_0x08cb('0x15')](methodOverride());_0x3bd23f['use'](cookieParser());_0x3bd23f[_0x08cb('0x15')](passport[_0x08cb('0x22')]());};
\ No newline at end of file
+var _0xe9dc=['serve-favicon','method-override','cookie-parser','errorhandler','passport','cors','moment','./environment','../mysqldb','env','production','join','public','development','test','appPath','root','use','set','json\x20replacer','toISOString','split','/server/views','engine','html','ejs','view\x20engine','urlencoded','50mb','initialize','express'];(function(_0x2d7c9e,_0x4cfaa9){var _0x5398b9=function(_0x24839e){while(--_0x24839e){_0x2d7c9e['push'](_0x2d7c9e['shift']());}};_0x5398b9(++_0x4cfaa9);}(_0xe9dc,0x135));var _0xce9d=function(_0x20da39,_0x256e3e){_0x20da39=_0x20da39-0x0;var _0x40314e=_0xe9dc[_0x20da39];return _0x40314e;};'use strict';var express=require(_0xce9d('0x0'));var favicon=require(_0xce9d('0x1'));var bodyParser=require('body-parser');var methodOverride=require(_0xce9d('0x2'));var cookieParser=require(_0xce9d('0x3'));var errorHandler=require(_0xce9d('0x4'));var path=require('path');var passport=require(_0xce9d('0x5'));var cors=require(_0xce9d('0x6'));var moment=require(_0xce9d('0x7'));var config=require(_0xce9d('0x8'));var db=require(_0xce9d('0x9'))['db'];exports['default']=function(_0x13f953){var _0x2ba153=_0x13f953['get'](_0xce9d('0xa'));if(_0x2ba153===_0xce9d('0xb')){_0x13f953['set']('appPath',path[_0xce9d('0xc')](config['root'],_0xce9d('0xd')));}if(_0x2ba153===_0xce9d('0xe')||_0x2ba153===_0xce9d('0xf')){_0x13f953['set'](_0xce9d('0x10'),path[_0xce9d('0xc')](config[_0xce9d('0x11')],'client'));_0x13f953[_0xce9d('0x12')](errorHandler());}_0x13f953[_0xce9d('0x13')](_0xce9d('0x14'),function(_0x1c641d,_0x43bc2b){if(this[_0x1c641d]instanceof Date){_0x43bc2b=this[_0x1c641d][_0xce9d('0x15')]()[_0xce9d('0x16')]('.')[0x0]+'Z';}return _0x43bc2b;});_0x13f953[_0xce9d('0x12')](express['static'](_0x13f953['get'](_0xce9d('0x10'))));_0x13f953[_0xce9d('0x13')]('views',config[_0xce9d('0x11')]+_0xce9d('0x17'));_0x13f953[_0xce9d('0x18')](_0xce9d('0x19'),require(_0xce9d('0x1a'))['renderFile']);_0x13f953[_0xce9d('0x13')](_0xce9d('0x1b'),'html');_0x13f953['use'](bodyParser[_0xce9d('0x1c')]({'limit':'50mb','extended':!![]}));_0x13f953[_0xce9d('0x12')](bodyParser['json']({'limit':_0xce9d('0x1d')}));_0x13f953['use'](cors());_0x13f953[_0xce9d('0x12')](methodOverride());_0x13f953[_0xce9d('0x12')](cookieParser());_0x13f953[_0xce9d('0x12')](passport[_0xce9d('0x1e')]());};
\ No newline at end of file
index b7f278f..4a62797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e7e=['127.0.0.1','getFirstInterface','join','createHash','update','digest','hex','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','substring','bimedia-machine-uuid','child_process','execSync','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','concat','mac','address'];(function(_0x4a4a99,_0x63268c){var _0x556b01=function(_0x845f2c){while(--_0x845f2c){_0x4a4a99['push'](_0x4a4a99['shift']());}};_0x556b01(++_0x63268c);}(_0x0e7e,0xa1));var _0xe0e7=function(_0x210917,_0x3e2a02){_0x210917=_0x210917-0x0;var _0x50c575=_0x0e7e[_0x210917];return _0x50c575;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0xe0e7('0x0'));var exec=require(_0xe0e7('0x1'))[_0xe0e7('0x2')];var config=require('../environment');function getInterfaces(){var _0x468682=[];var _0x70dfdc=os[_0xe0e7('0x3')]();var _0x2eff41=_[_0xe0e7('0x4')](_[_0xe0e7('0x5')](_0x70dfdc));for(var _0x491865=0x0;_0x491865<_0x2eff41['length'];_0x491865++){var _0x247288=_0x70dfdc[_0x2eff41[_0x491865]][_0xe0e7('0x6')](function(_0x36d96a){return _0x36d96a[_0xe0e7('0x7')]===_0xe0e7('0x8')&&_0x36d96a[_0xe0e7('0x9')]===![];});_0x468682=_0x468682[_0xe0e7('0xa')](_0x247288);}return _0x468682;}function getFirstInterface(){var _0x11cd53=_['head'](getInterfaces());return{'macAddress':_0x11cd53&&_0x11cd53[_0xe0e7('0xb')]?_0x11cd53['mac']:'00:00:00:00:00:00','ipAddress':_0x11cd53&&_0x11cd53[_0xe0e7('0xc')]?_0x11cd53['address']:_0xe0e7('0xd')};}exports[_0xe0e7('0xe')]=getFirstInterface;function getCPUhash(){var _0x2e070f=_[_0xe0e7('0x4')](os['cpus']()['map'](function(_0x4c5d05){return _0x4c5d05['model'];}))[_0xe0e7('0xf')](':');return crypto[_0xe0e7('0x10')]('md5')[_0xe0e7('0x11')](_0x2e070f)[_0xe0e7('0x12')](_0xe0e7('0x13'));}exports['getUuid']=function(){var _0x455e8f=os['platform']();var _0x435643=/[0-9a-f-]{36}/;if(config[_0xe0e7('0x14')]&&_0x435643[_0xe0e7('0x15')](config[_0xe0e7('0x14')])){return config[_0xe0e7('0x14')];}else if(_0x455e8f===_0xe0e7('0x16')){return exec(_0xe0e7('0x17'),{'encoding':_0xe0e7('0x18')})[_0xe0e7('0x19')]('\x0d\x0a','');}else{var _0x35f649=getFirstInterface();var _0x14e4c5=getCPUhash();var _0x22b367=_0x14e4c5+'|'+os['hostname']()+'|'+_0x35f649[_0xe0e7('0x1a')]+'|'+_0x35f649[_0xe0e7('0x1b')];var _0x5df80d=crypto[_0xe0e7('0x10')]('md5')[_0xe0e7('0x11')](_0x22b367)[_0xe0e7('0x12')]('hex');return _0x5df80d['substring'](0x0,0x8)+'-'+_0x5df80d[_0xe0e7('0x1c')](0x8,0xc)+'-'+_0x5df80d[_0xe0e7('0x1c')](0xc,0x10)+'-'+_0x5df80d[_0xe0e7('0x1c')](0x10,0x14)+'-'+_0x5df80d[_0xe0e7('0x1c')](0x14);}};
\ No newline at end of file
+var _0xeb6f=['address','getFirstInterface','cpus','map','join','createHash','md5','digest','hex','getUuid','test','licenseToken','win32','utf8','hostname','macAddress','ipAddress','substring','lodash','crypto','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','IPv4','00:00:00:00:00:00'];(function(_0x556634,_0x520958){var _0x4429fd=function(_0x1e7eb9){while(--_0x1e7eb9){_0x556634['push'](_0x556634['shift']());}};_0x4429fd(++_0x520958);}(_0xeb6f,0xa3));var _0xfeb6=function(_0x1ac6e5,_0x40f47f){_0x1ac6e5=_0x1ac6e5-0x0;var _0x5877dc=_0xeb6f[_0x1ac6e5];return _0x5877dc;};'use strict';var _=require(_0xfeb6('0x0'));var os=require('os');var crypto=require(_0xfeb6('0x1'));var machine=require('bimedia-machine-uuid');var exec=require(_0xfeb6('0x2'))[_0xfeb6('0x3')];var config=require(_0xfeb6('0x4'));function getInterfaces(){var _0x38b100=[];var _0x949640=os[_0xfeb6('0x5')]();var _0x3922cc=_[_0xfeb6('0x6')](_[_0xfeb6('0x7')](_0x949640));for(var _0x2de211=0x0;_0x2de211<_0x3922cc[_0xfeb6('0x8')];_0x2de211++){var _0x387037=_0x949640[_0x3922cc[_0x2de211]]['filter'](function(_0x1c2480){return _0x1c2480['family']===_0xfeb6('0x9')&&_0x1c2480['internal']===![];});_0x38b100=_0x38b100['concat'](_0x387037);}return _0x38b100;}function getFirstInterface(){var _0x37a684=_['head'](getInterfaces());return{'macAddress':_0x37a684&&_0x37a684['mac']?_0x37a684['mac']:_0xfeb6('0xa'),'ipAddress':_0x37a684&&_0x37a684[_0xfeb6('0xb')]?_0x37a684[_0xfeb6('0xb')]:'127.0.0.1'};}exports[_0xfeb6('0xc')]=getFirstInterface;function getCPUhash(){var _0x4adfc7=_['orderBy'](os[_0xfeb6('0xd')]()[_0xfeb6('0xe')](function(_0x57c61c){return _0x57c61c['model'];}))[_0xfeb6('0xf')](':');return crypto[_0xfeb6('0x10')](_0xfeb6('0x11'))['update'](_0x4adfc7)[_0xfeb6('0x12')](_0xfeb6('0x13'));}exports[_0xfeb6('0x14')]=function(){var _0x5d170c=os['platform']();var _0x494143=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x494143[_0xfeb6('0x15')](config[_0xfeb6('0x16')])){return config['licenseToken'];}else if(_0x5d170c===_0xfeb6('0x17')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0xfeb6('0x18')})['replace']('\x0d\x0a','');}else{var _0x1b6e13=getFirstInterface();var _0x52fc26=getCPUhash();var _0x3e31bc=_0x52fc26+'|'+os[_0xfeb6('0x19')]()+'|'+_0x1b6e13[_0xfeb6('0x1a')]+'|'+_0x1b6e13[_0xfeb6('0x1b')];var _0x5dbbbd=crypto[_0xfeb6('0x10')](_0xfeb6('0x11'))['update'](_0x3e31bc)[_0xfeb6('0x12')](_0xfeb6('0x13'));return _0x5dbbbd['substring'](0x0,0x8)+'-'+_0x5dbbbd[_0xfeb6('0x1c')](0x8,0xc)+'-'+_0x5dbbbd['substring'](0xc,0x10)+'-'+_0x5dbbbd['substring'](0x10,0x14)+'-'+_0x5dbbbd['substring'](0x14);}};
\ No newline at end of file
index 4f6adf1..f9292c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x488b=['THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','../logger','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','then','catch','get','data1','active','license','info'];(function(_0x16c98e,_0x5fa920){var _0x210e35=function(_0x5ec6d8){while(--_0x5ec6d8){_0x16c98e['push'](_0x16c98e['shift']());}};_0x210e35(++_0x5fa920);}(_0x488b,0x1c6));var _0xb488=function(_0x856752,_0x30fecc){_0x856752=_0x856752-0x0;var _0x5a95b1=_0x488b[_0x856752];return _0x5a95b1;};'use strict';var util=require(_0xb488('0x0'));var moment=require(_0xb488('0x1'));var rp=require('request-promise');var BPromise=require(_0xb488('0x2'));var pkginfo=require(_0xb488('0x3'))(module,_0xb488('0x4'));var db=require(_0xb488('0x5'))['db'];var encryptor=require(_0xb488('0x6'));var hardware=require('./hardware');var logger=require(_0xb488('0x7'))('license');var HOST=_0xb488('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1bc0e2){return new BPromise(function(_0x40c769,_0x3433ac){var _0xb863c4=util[_0xb488('0x9')](_0xb488('0xa'),HOST,_0x1bc0e2,module[_0xb488('0xb')]['version']);if(oldToken){_0xb863c4=util[_0xb488('0x9')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x1bc0e2,module[_0xb488('0xb')]['version'],oldToken);}var _0xa093b={'uri':_0xb863c4,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0xa093b)[_0xb488('0xc')](function(_0x2e0a54){_0x40c769(_0x2e0a54);})[_0xb488('0xd')](function(_0x4753dc){_0x3433ac(_0x4753dc);});});}function manageLicense(_0x2038e1,_0x47d2c8){var _0x4516dc=_0x47d2c8[_0xb488('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x4516dc[_0xb488('0xf')]!==_0x2038e1&&!_0x4516dc['data2']){oldToken=_0x4516dc[_0xb488('0xf')];}httpRequest(_0x2038e1)['then'](function(_0x290af4){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x290af4[_0xb488('0x10')]){isOldTokenSent=![];if(!_0x4516dc[_0xb488('0x11')]&&_0x4516dc[_0xb488('0x11')]!=_0x290af4['license']||_0x4516dc[_0xb488('0x11')]&&_0x4516dc['data2']){logger[_0xb488('0x12')](_0xb488('0x13'));}if(_0x4516dc[_0xb488('0x11')]&&!_0x4516dc[_0xb488('0x14')]&&_0x4516dc[_0xb488('0x11')]!=_0x290af4[_0xb488('0x11')]){logger['info'](_0xb488('0x15'));}if(_0x4516dc[_0xb488('0x11')]&&!_0x4516dc['data2']&&_0x4516dc[_0xb488('0x11')]==_0x290af4[_0xb488('0x11')]){return _0x47d2c8;}return _0x47d2c8[_0xb488('0x16')]({'data1':_0x2038e1,'data2':null,'license':_0x290af4['license']});}else{if(_0x290af4[_0xb488('0x11')]||_0x4516dc[_0xb488('0x11')]){if(!_0x4516dc[_0xb488('0x14')]){if(_0x4516dc[_0xb488('0xf')]==_0x2038e1){GRAY_PERIOD_REASON=_0xb488('0x17');logger[_0xb488('0x12')](_0xb488('0x18'));}else{GRAY_PERIOD_REASON=_0xb488('0x19');logger[_0xb488('0x12')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x4516dc['data1'],_0x2038e1);}logger[_0xb488('0x12')](_0xb488('0x1a'),GRAY_PERIOD_REASON[_0xb488('0x1b')](),moment()['format'](_0xb488('0x1c')));return _0x47d2c8[_0xb488('0x16')]({'data2':encryptor['encryptString'](moment()[_0xb488('0x9')](_0xb488('0x1c')))});}else{if(moment()[_0xb488('0x1d')](encryptor[_0xb488('0x1e')](_0x4516dc[_0xb488('0x14')]),_0xb488('0x1f'))>DAYS){logger[_0xb488('0x12')](_0xb488('0x20'),moment()[_0xb488('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x47d2c8['update']({'data1':_0x2038e1,'data2':null,'license':null});}}}else{if(_0x4516dc[_0xb488('0xf')]!=_0x2038e1){logger[_0xb488('0x12')](_0xb488('0x21'),_0x4516dc[_0xb488('0xf')],_0x2038e1);return _0x47d2c8['update']({'data1':_0x2038e1,'data2':null,'license':null});}}}return _0x47d2c8;})[_0xb488('0xc')](function(_0x1ac0ef){_0x47d2c8=_0x1ac0ef;})[_0xb488('0xd')](function(_0x1d4a33){logger[_0xb488('0x22')](_0x1d4a33[_0xb488('0x23')]);})[_0xb488('0x24')](function(){setTimeout(function(){manageLicense(hardware[_0xb488('0x25')](),_0x47d2c8);},TIME);});}function defaultLicense(){var _0x4ad06e=hardware['getUuid']();if(_0x4ad06e){return db[_0xb488('0x26')][_0xb488('0x27')]({'where':{'id':0x1},'defaults':{'data1':_0x4ad06e}})[_0xb488('0x28')](function(_0x1943ba,_0x17defb){logger['info'](_0xb488('0x29'),_0x4ad06e);manageLicense(_0x4ad06e,_0x1943ba);})[_0xb488('0xd')](function(_0x4c87ce){logger[_0xb488('0x22')](_0x4c87ce[_0xb488('0x23')]);});}}exports[_0xb488('0x2a')]=defaultLicense;
\ No newline at end of file
+var _0xaa60=['then','catch','get','data1','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','error','message','finally','getUuid','License','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','request-promise','bluebird','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','GET'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0xaa60,0xb5));var _0x0aa6=function(_0xc81eed,_0x6968aa){_0xc81eed=_0xc81eed-0x0;var _0x264c56=_0xaa60[_0xc81eed];return _0x264c56;};'use strict';var util=require('util');var moment=require('moment');var rp=require(_0x0aa6('0x0'));var BPromise=require(_0x0aa6('0x1'));var pkginfo=require('pkginfo')(module,_0x0aa6('0x2'));var db=require(_0x0aa6('0x3'))['db'];var encryptor=require(_0x0aa6('0x4'));var hardware=require(_0x0aa6('0x5'));var logger=require(_0x0aa6('0x6'))(_0x0aa6('0x7'));var HOST=_0x0aa6('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1c03fc){return new BPromise(function(_0x3144c2,_0x23c17d){var _0x308a47=util[_0x0aa6('0x9')](_0x0aa6('0xa'),HOST,_0x1c03fc,module['exports'][_0x0aa6('0x2')]);if(oldToken){_0x308a47=util[_0x0aa6('0x9')](_0x0aa6('0xb'),HOST,_0x1c03fc,module[_0x0aa6('0xc')]['version'],oldToken);}var _0xe78938={'uri':_0x308a47,'method':_0x0aa6('0xd'),'timeout':0xea60,'json':!![]};return rp(_0xe78938)[_0x0aa6('0xe')](function(_0x45e190){_0x3144c2(_0x45e190);})[_0x0aa6('0xf')](function(_0x106bbc){_0x23c17d(_0x106bbc);});});}function manageLicense(_0x52faba,_0x2bce33){var _0x1080b3=_0x2bce33[_0x0aa6('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x1080b3[_0x0aa6('0x11')]!==_0x52faba&&!_0x1080b3[_0x0aa6('0x12')]){oldToken=_0x1080b3[_0x0aa6('0x11')];}httpRequest(_0x52faba)[_0x0aa6('0xe')](function(_0xae34c){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0xae34c['active']){isOldTokenSent=![];if(!_0x1080b3[_0x0aa6('0x7')]&&_0x1080b3[_0x0aa6('0x7')]!=_0xae34c['license']||_0x1080b3['license']&&_0x1080b3[_0x0aa6('0x12')]){logger['info'](_0x0aa6('0x13'));}if(_0x1080b3[_0x0aa6('0x7')]&&!_0x1080b3['data2']&&_0x1080b3['license']!=_0xae34c[_0x0aa6('0x7')]){logger[_0x0aa6('0x14')](_0x0aa6('0x15'));}if(_0x1080b3[_0x0aa6('0x7')]&&!_0x1080b3['data2']&&_0x1080b3['license']==_0xae34c['license']){return _0x2bce33;}return _0x2bce33[_0x0aa6('0x16')]({'data1':_0x52faba,'data2':null,'license':_0xae34c[_0x0aa6('0x7')]});}else{if(_0xae34c['license']||_0x1080b3[_0x0aa6('0x7')]){if(!_0x1080b3[_0x0aa6('0x12')]){if(_0x1080b3[_0x0aa6('0x11')]==_0x52faba){GRAY_PERIOD_REASON=_0x0aa6('0x17');logger['info'](_0x0aa6('0x18'));}else{GRAY_PERIOD_REASON=_0x0aa6('0x19');logger[_0x0aa6('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1080b3[_0x0aa6('0x11')],_0x52faba);}logger['info'](_0x0aa6('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x0aa6('0x9')](_0x0aa6('0x1b')));return _0x2bce33['update']({'data2':encryptor[_0x0aa6('0x1c')](moment()[_0x0aa6('0x9')](_0x0aa6('0x1b')))});}else{if(moment()[_0x0aa6('0x1d')](encryptor[_0x0aa6('0x1e')](_0x1080b3['data2']),'days')>DAYS){logger[_0x0aa6('0x14')]('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x0aa6('0x1b')));isOldTokenSent=![];return _0x2bce33['update']({'data1':_0x52faba,'data2':null,'license':null});}}}else{if(_0x1080b3[_0x0aa6('0x11')]!=_0x52faba){logger[_0x0aa6('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1080b3[_0x0aa6('0x11')],_0x52faba);return _0x2bce33[_0x0aa6('0x16')]({'data1':_0x52faba,'data2':null,'license':null});}}}return _0x2bce33;})[_0x0aa6('0xe')](function(_0x521816){_0x2bce33=_0x521816;})[_0x0aa6('0xf')](function(_0x80fa36){logger[_0x0aa6('0x1f')](_0x80fa36[_0x0aa6('0x20')]);})[_0x0aa6('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x0aa6('0x22')](),_0x2bce33);},TIME);});}function defaultLicense(){var _0x1fcb0a=hardware[_0x0aa6('0x22')]();if(_0x1fcb0a){return db[_0x0aa6('0x23')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x1fcb0a}})[_0x0aa6('0x24')](function(_0x59d064,_0x6b5639){logger[_0x0aa6('0x14')](_0x0aa6('0x25'),_0x1fcb0a);manageLicense(_0x1fcb0a,_0x59d064);})[_0x0aa6('0xf')](function(_0x44bf02){logger[_0x0aa6('0x1f')](_0x44bf02['message']);});}}exports[_0x0aa6('0x26')]=defaultLicense;
\ No newline at end of file
index 544b8f3..e11b53c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf538=['Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','license','isEmpty','data2','split','format','%s:%s:%s','parse','demo','decryptString','gray','deadline','add','days','grayReason','machineUuid','changed','disabled','message','findAll','sequelize','COUNT','col','role','count','user','telephone','users','admin','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','lodash','moment','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z'];(function(_0x4c5657,_0x3dedb4){var _0x5f08af=function(_0x5cea6b){while(--_0x5cea6b){_0x4c5657['push'](_0x4c5657['shift']());}};_0x5f08af(++_0x3dedb4);}(_0xf538,0x1a1));var _0x8f53=function(_0x13b63d,_0x3361e3){_0x13b63d=_0x13b63d-0x0;var _0x6dca43=_0xf538[_0x13b63d];return _0x6dca43;};'use strict';var util=require('util');var _=require(_0x8f53('0x0'));var moment=require(_0x8f53('0x1'));var BPromise=require(_0x8f53('0x2'));var hardware=require('./hardware');var encryptor=require(_0x8f53('0x3'));var db=require(_0x8f53('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8f53('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x8f53('0x6'),'machineUuid':hardware[_0x8f53('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8f53('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x8f53('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x408d68){return new BPromise(function(_0x1d917f,_0x55f42f){return db[_0x8f53('0x9')][_0x8f53('0xa')](_[_0x8f53('0xb')](_0x408d68,{'raw':!![],'where':{'id':0x1}}))[_0x8f53('0xc')](function(_0x16f0a6){return checkLicense(_0x16f0a6,null);})[_0x8f53('0xc')](function(_0x4d934e){_0x1d917f(_0x4d934e);return;})[_0x8f53('0xd')](function(_0x50479a){_0x55f42f(_0x50479a);});});}function checkLicense(_0x4fe51b,_0xbbd089){if(!_0x4fe51b){demoLicense[_0x8f53('0xe')]=_0x4fe51b[_0x8f53('0xf')];return demoLicense;}try{var _0x44cf46=_0xbbd089||_0x4fe51b[_0x8f53('0x10')];if(_[_0x8f53('0x11')](_0x44cf46)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x3d77d1=_0x4fe51b[_0x8f53('0xf')];var _0x312c1d=_0x4fe51b[_0x8f53('0x12')];var _0x575c86=_0x3d77d1[_0x8f53('0x13')]('-')[0x4];var _0x51f6c2=_0x3d77d1[_0x8f53('0x13')]('-')[0x0];var _0x34410b=encryptor['decryptString'](_0x44cf46,util[_0x8f53('0x14')](_0x8f53('0x15'),_0x575c86,_0x3d77d1,_0x51f6c2));var _0x19d97f=JSON[_0x8f53('0x16')](_0x34410b);_0x19d97f[_0x8f53('0x17')]=![];_0x19d97f[_0x8f53('0xe')]=_0x3d77d1;_0x19d97f['machineUuid']=hardware[_0x8f53('0x7')]();if(_0x312c1d){var _0x7d1c47=encryptor[_0x8f53('0x18')](_0x312c1d);_0x19d97f[_0x8f53('0x19')]=_0x7d1c47;_0x19d97f[_0x8f53('0x1a')]=moment(_0x7d1c47)[_0x8f53('0x1b')](0x7,_0x8f53('0x1c'))[_0x8f53('0x14')]();_0x19d97f[_0x8f53('0x1d')]=_0x19d97f[_0x8f53('0xe')]!=_0x19d97f[_0x8f53('0x1e')]?_0x8f53('0x1f'):_0x8f53('0x20');}return _0x19d97f;}catch(_0xf0ef1c){breakingLicense['uuid']=_0x4fe51b[_0x8f53('0xf')];breakingLicense[_0x8f53('0x21')]=_0xf0ef1c['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x355a19,_0x2e0b26){getLicense()['then'](function(_0x4bccbc){return db['User'][_0x8f53('0x22')]({'attributes':['role',[db[_0x8f53('0x23')]['fn'](_0x8f53('0x24'),db['sequelize'][_0x8f53('0x25')](_0x8f53('0x26'))),_0x8f53('0x27')]],'group':'role','where':{'role':{'$or':['admin',_0x8f53('0x28'),_0x8f53('0x29')]}},'raw':!![]})[_0x8f53('0xc')](function(_0x583114){var _0x1897e5={'user':_0x4bccbc[_0x8f53('0x2a')]||0x0,'telephone':_0x4bccbc['telephones']||0x0};_0x583114['forEach'](function(_0x49855a){var _0x4aa5af=_0x49855a[_0x8f53('0x26')]===_0x8f53('0x2b')?_0x8f53('0x28'):_0x49855a[_0x8f53('0x26')];_0x1897e5[_0x4aa5af]-=_0x49855a[_0x8f53('0x27')];if(_0x1897e5[_0x4aa5af]<0x0)_0x1897e5[_0x4aa5af]=0x0;});_0x355a19(_0x1897e5);return;});})[_0x8f53('0xd')](function(_0x350eec){_0x2e0b26(_0x350eec);});});}function checkUserLimits(_0x8198df){return new BPromise(function(_0x482bc8,_0xefc13e){getLimits()[_0x8f53('0xc')](function(_0xf866a9){var _0x5c4539=_['pick'](_[_0x8f53('0x2c')](_0x8198df,_0x8f53('0x26')),[_0x8f53('0x2b'),_0x8f53('0x28'),_0x8f53('0x29')]);var _0x26f7c0=(_0x5c4539[_0x8f53('0x2b')]||0x0)+(_0x5c4539['user']||0x0);var _0x213a88=_0x5c4539['telephone']||0x0;if(_0x26f7c0>_0xf866a9[_0x8f53('0x28')])return _0xefc13e(_0x8f53('0x2d'));if(_0x213a88>_0xf866a9[_0x8f53('0x29')])return _0xefc13e(_0x8f53('0x2e'));return _0x482bc8();})['catch'](function(_0x27c032){_0xefc13e(_0x27c032);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x8881=['util','lodash','moment','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','demo','machineUuid','gray','deadline','days','changed','disabled','User','role','sequelize','COUNT','col','count','admin','user','users','telephones','pick','countBy','telephone','License\x20limit\x20reached\x20for\x20telephones','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8881,0x12d));var _0x1888=function(_0x4fbb86,_0x374ed0){_0x4fbb86=_0x4fbb86-0x0;var _0xb141fe=_0x8881[_0x4fbb86];return _0xb141fe;};'use strict';var util=require(_0x1888('0x0'));var _=require(_0x1888('0x1'));var moment=require(_0x1888('0x2'));var BPromise=require('bluebird');var hardware=require(_0x1888('0x3'));var encryptor=require(_0x1888('0x4'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x1888('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x1888('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x1888('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x1888('0x7'),'machineUuid':hardware[_0x1888('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5105b0){return new BPromise(function(_0x3099a8,_0x4a8c57){return db[_0x1888('0x8')][_0x1888('0x9')](_[_0x1888('0xa')](_0x5105b0,{'raw':!![],'where':{'id':0x1}}))[_0x1888('0xb')](function(_0x4aab7f){return checkLicense(_0x4aab7f,null);})[_0x1888('0xb')](function(_0x486236){_0x3099a8(_0x486236);return;})[_0x1888('0xc')](function(_0x4268eb){_0x4a8c57(_0x4268eb);});});}function checkLicense(_0xa9947f,_0x12352f){if(!_0xa9947f){demoLicense[_0x1888('0xd')]=_0xa9947f[_0x1888('0xe')];return demoLicense;}try{var _0x79969d=_0x12352f||_0xa9947f['license'];if(_[_0x1888('0xf')](_0x79969d)){throw new Error(_0x1888('0x10'));}var _0x4ce93e=_0xa9947f[_0x1888('0xe')];var _0x48617d=_0xa9947f['data2'];var _0x271f4f=_0x4ce93e[_0x1888('0x11')]('-')[0x4];var _0x364f26=_0x4ce93e['split']('-')[0x0];var _0x54a752=encryptor[_0x1888('0x12')](_0x79969d,util[_0x1888('0x13')](_0x1888('0x14'),_0x271f4f,_0x4ce93e,_0x364f26));var _0x5f09c5=JSON['parse'](_0x54a752);_0x5f09c5[_0x1888('0x15')]=![];_0x5f09c5[_0x1888('0xd')]=_0x4ce93e;_0x5f09c5[_0x1888('0x16')]=hardware[_0x1888('0x6')]();if(_0x48617d){var _0x2a0be8=encryptor[_0x1888('0x12')](_0x48617d);_0x5f09c5[_0x1888('0x17')]=_0x2a0be8;_0x5f09c5[_0x1888('0x18')]=moment(_0x2a0be8)['add'](0x7,_0x1888('0x19'))[_0x1888('0x13')]();_0x5f09c5['grayReason']=_0x5f09c5[_0x1888('0xd')]!=_0x5f09c5[_0x1888('0x16')]?_0x1888('0x1a'):_0x1888('0x1b');}return _0x5f09c5;}catch(_0x29dda7){breakingLicense['uuid']=_0xa9947f[_0x1888('0xe')];breakingLicense['message']=_0x29dda7['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x1eba58,_0x243d28){getLicense()[_0x1888('0xb')](function(_0x5e98ef){return db[_0x1888('0x1c')]['findAll']({'attributes':[_0x1888('0x1d'),[db[_0x1888('0x1e')]['fn'](_0x1888('0x1f'),db[_0x1888('0x1e')][_0x1888('0x20')](_0x1888('0x1d'))),_0x1888('0x21')]],'group':_0x1888('0x1d'),'where':{'role':{'$or':[_0x1888('0x22'),_0x1888('0x23'),'telephone']}},'raw':!![]})[_0x1888('0xb')](function(_0x2f583e){var _0x215ce7={'user':_0x5e98ef[_0x1888('0x24')]||0x0,'telephone':_0x5e98ef[_0x1888('0x25')]||0x0};_0x2f583e['forEach'](function(_0x1a6091){var _0x4f7478=_0x1a6091[_0x1888('0x1d')]===_0x1888('0x22')?_0x1888('0x23'):_0x1a6091['role'];_0x215ce7[_0x4f7478]-=_0x1a6091[_0x1888('0x21')];if(_0x215ce7[_0x4f7478]<0x0)_0x215ce7[_0x4f7478]=0x0;});_0x1eba58(_0x215ce7);return;});})[_0x1888('0xc')](function(_0x35f92d){_0x243d28(_0x35f92d);});});}function checkUserLimits(_0x239a41){return new BPromise(function(_0x29ec29,_0x5bb57e){getLimits()[_0x1888('0xb')](function(_0x2e1442){var _0x16bae6=_[_0x1888('0x26')](_[_0x1888('0x27')](_0x239a41,_0x1888('0x1d')),[_0x1888('0x22'),'user',_0x1888('0x28')]);var _0x18564d=(_0x16bae6['admin']||0x0)+(_0x16bae6['user']||0x0);var _0x2ec62c=_0x16bae6['telephone']||0x0;if(_0x18564d>_0x2e1442[_0x1888('0x23')])return _0x5bb57e('License\x20limit\x20reached\x20for\x20users');if(_0x2ec62c>_0x2e1442[_0x1888('0x28')])return _0x5bb57e(_0x1888('0x29'));return _0x29ec29();})[_0x1888('0xc')](function(_0x12e430){_0x5bb57e(_0x12e430);});});}module[_0x1888('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 3185690..a4e3a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['app-id','secret','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf7b4,0x152));var _0x4f7b=function(_0x52c1b8,_0x24a532){_0x52c1b8=_0x52c1b8-0x0;var _0x805a36=_0xf7b4[_0x52c1b8];return _0x805a36;};'use strict';module[_0x4f7b('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x4f7b('0x1'),'GOOGLE_SECRET':_0x4f7b('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0x0120=['secret','exports','http://localhost:9000','myappanuglar-secret','app-id'];(function(_0xa57064,_0x46f444){var _0x1f9c09=function(_0x40110b){while(--_0x40110b){_0xa57064['push'](_0xa57064['shift']());}};_0x1f9c09(++_0x46f444);}(_0x0120,0x6f));var _0x0012=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x0120[_0x1facfa];return _0x9ec701;};'use strict';module[_0x0012('0x0')]={'DOMAIN':_0x0012('0x1'),'SESSION_SECRET':_0x0012('0x2'),'GOOGLE_ID':_0x0012('0x3'),'GOOGLE_SECRET':_0x0012('0x4'),'DEBUG':''};
\ No newline at end of file
index 1905749..d8beeef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc749=['path','INFO','join','log','xcally','format','%s-%s.log','message','replace','{{{','}}}','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','transports','%s-%s','error','File','info','Console','env','debugLevel','winston','util'];(function(_0x3d13bb,_0x262a54){var _0x4b5a1b=function(_0x53417e){while(--_0x53417e){_0x3d13bb['push'](_0x3d13bb['shift']());}};_0x4b5a1b(++_0x262a54);}(_0xc749,0x1c0));var _0x9c74=function(_0x22475b,_0x22cdc6){_0x22475b=_0x22475b-0x0;var _0x270470=_0xc749[_0x22475b];return _0x270470;};'use strict';var moment=require('moment');var winston=require(_0x9c74('0x0'));var util=require(_0x9c74('0x1'));var path=require(_0x9c74('0x2'));var debugLevel=_0x9c74('0x3');function filename(_0x5c18e1,_0x4e63da){return path[_0x9c74('0x4')]('/var',_0x9c74('0x5'),_0x9c74('0x6'),util[_0x9c74('0x7')](_0x9c74('0x8'),_0x5c18e1,_0x4e63da));}function formatter(_0x19cbdf,_0x320e37){_0x320e37[_0x9c74('0x9')]=_0x320e37[_0x9c74('0x9')][_0x9c74('0xa')](/@@{/g,_0x9c74('0xb'))[_0x9c74('0xa')](/}@@/g,_0x9c74('0xc'))['replace'](/@{/g,'{{')[_0x9c74('0xa')](/}@/g,'}}');return util[_0x9c74('0x7')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x9c74('0x7')](_0x9c74('0xd')),_0x320e37[_0x9c74('0xe')][_0x9c74('0xf')](),_0x19cbdf,_0x320e37[_0x9c74('0x9')]);}module[_0x9c74('0x10')]=function(_0xf3853f){return new winston['Logger']({'transports':[new winston[(_0x9c74('0x11'))]['File']({'name':util[_0x9c74('0x7')](_0x9c74('0x12'),_0xf3853f,_0x9c74('0x13')),'filename':filename(_0xf3853f,_0x9c74('0x13')),'level':_0x9c74('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1618a8){return formatter(_0xf3853f,_0x1618a8);}}),new winston[(_0x9c74('0x11'))][(_0x9c74('0x14'))]({'name':util[_0x9c74('0x7')](_0x9c74('0x12'),_0xf3853f,_0x9c74('0x15')),'filename':filename(_0xf3853f,_0x9c74('0x15')),'level':_0x9c74('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x34fbf2){return formatter(_0xf3853f,_0x34fbf2);}}),new winston[(_0x9c74('0x11'))][(_0x9c74('0x16'))]({'level':process[_0x9c74('0x17')][_0x9c74('0x18')]||debugLevel,'json':![],'formatter':function(_0xf1244){return formatter(_0xf3853f,_0xf1244);}})]});};
\ No newline at end of file
+var _0xd2de=['message','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','transports','%s-%s','error','info','debugLevel','moment','util','log','xcally','format','%s-%s.log'];(function(_0x3ec1b5,_0x5ddb09){var _0x3c2617=function(_0x317df6){while(--_0x317df6){_0x3ec1b5['push'](_0x3ec1b5['shift']());}};_0x3c2617(++_0x5ddb09);}(_0xd2de,0x19c));var _0xed2d=function(_0x13cb06,_0x40520d){_0x13cb06=_0x13cb06-0x0;var _0x46fe05=_0xd2de[_0x13cb06];return _0x46fe05;};'use strict';var moment=require(_0xed2d('0x0'));var winston=require('winston');var util=require(_0xed2d('0x1'));var path=require('path');var debugLevel='INFO';function filename(_0x5db3fd,_0x9cb76b){return path['join']('/var',_0xed2d('0x2'),_0xed2d('0x3'),util[_0xed2d('0x4')](_0xed2d('0x5'),_0x5db3fd,_0x9cb76b));}function formatter(_0x24ff69,_0x14e00e){_0x14e00e[_0xed2d('0x6')]=_0x14e00e[_0xed2d('0x6')]['replace'](/@@{/g,_0xed2d('0x7'))['replace'](/}@@/g,_0xed2d('0x8'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xed2d('0x4')](_0xed2d('0x9'),moment()[_0xed2d('0x4')](_0xed2d('0xa')),_0x14e00e[_0xed2d('0xb')][_0xed2d('0xc')](),_0x24ff69,_0x14e00e[_0xed2d('0x6')]);}module[_0xed2d('0xd')]=function(_0x1831ed){return new winston['Logger']({'transports':[new winston[(_0xed2d('0xe'))]['File']({'name':util['format'](_0xed2d('0xf'),_0x1831ed,_0xed2d('0x10')),'filename':filename(_0x1831ed,'error'),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x54dee3){return formatter(_0x1831ed,_0x54dee3);}}),new winston['transports']['File']({'name':util[_0xed2d('0x4')](_0xed2d('0xf'),_0x1831ed,_0xed2d('0x11')),'filename':filename(_0x1831ed,'info'),'level':_0xed2d('0x11'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3b3cf4){return formatter(_0x1831ed,_0x3b3cf4);}}),new winston[(_0xed2d('0xe'))]['Console']({'level':process['env'][_0xed2d('0x12')]||debugLevel,'json':![],'formatter':function(_0x59135c){return formatter(_0x1831ed,_0x59135c);}})]});};
\ No newline at end of file
index 4ebc4d7..51250b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa3=['exports','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(_0x1eb5da,_0x1974ec){var _0x579a2f=function(_0x502c14){while(--_0x502c14){_0x1eb5da['push'](_0x1eb5da['shift']());}};_0x579a2f(++_0x1974ec);}(_0xeaa3,0x83));var _0x3eaa=function(_0xa24986,_0x4fd540){_0xa24986=_0xa24986-0x0;var _0xf37f7e=_0xeaa3[_0xa24986];return _0xf37f7e;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':'express','script':path[_0x3eaa('0x0')](__dirname,_0x3eaa('0x1'))},{'name':_0x3eaa('0x2'),'script':path[_0x3eaa('0x0')](__dirname,_0x3eaa('0x3'))},{'name':_0x3eaa('0x4'),'script':path['join'](__dirname,_0x3eaa('0x5'))},{'name':_0x3eaa('0x6'),'script':path[_0x3eaa('0x0')](__dirname,_0x3eaa('0x7'))},{'name':_0x3eaa('0x8'),'script':path[_0x3eaa('0x0')](__dirname,_0x3eaa('0x9'))},{'name':_0x3eaa('0xa'),'script':path[_0x3eaa('0x0')](__dirname,_0x3eaa('0xb'))}]};module[_0x3eaa('0xc')]=config;
\ No newline at end of file
+var _0x1c8d=['email','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','../../services/ami/index.js','agi','../../services/agi/index.js'];(function(_0x1971f1,_0x192e6b){var _0x457ba8=function(_0x22e808){while(--_0x22e808){_0x1971f1['push'](_0x1971f1['shift']());}};_0x457ba8(++_0x192e6b);}(_0x1c8d,0x165));var _0xd1c8=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x1c8d[_0x6131cd];return _0x47e916;};'use strict';var path=require(_0xd1c8('0x0'));var os=require('os');var config={'apps':[{'name':_0xd1c8('0x1'),'script':path[_0xd1c8('0x2')](__dirname,'../../services/express/index.js')},{'name':'ami','script':path[_0xd1c8('0x2')](__dirname,_0xd1c8('0x3'))},{'name':_0xd1c8('0x4'),'script':path[_0xd1c8('0x2')](__dirname,_0xd1c8('0x5'))},{'name':_0xd1c8('0x6'),'script':path[_0xd1c8('0x2')](__dirname,'../../services/email/index.js')},{'name':'routing','script':path['join'](__dirname,_0xd1c8('0x7'))},{'name':_0xd1c8('0x8'),'script':path[_0xd1c8('0x2')](__dirname,_0xd1c8('0x9'))}]};module[_0xd1c8('0xa')]=config;
\ No newline at end of file
index 6387f79..c1b1aad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x492a=['start','then','stop','disconnect','restart','list','describe','delete','dump','saved','pm2','connect','connected'];(function(_0x9294e7,_0x5c73c8){var _0x3d49df=function(_0x5791f5){while(--_0x5791f5){_0x9294e7['push'](_0x9294e7['shift']());}};_0x3d49df(++_0x5c73c8);}(_0x492a,0x1d1));var _0xa492=function(_0xd90da7,_0x532c10){_0xd90da7=_0xd90da7-0x0;var _0x392ca9=_0x492a[_0xd90da7];return _0x392ca9;};'use strict';var pm2=require(_0xa492('0x0'));var BPromise=require('bluebird');var config=require('./config');function connect(){return new BPromise(function(_0x46253e,_0x3de96d){return pm2[_0xa492('0x1')](function(_0x121120){if(_0x121120){return _0x3de96d(_0x121120);}return _0x46253e(_0xa492('0x2'));});});};exports[_0xa492('0x3')]=function(_0x177135){return connect()[_0xa492('0x4')](function(){return new BPromise(function(_0x5535ae,_0x5620bf){return pm2['start'](_0x177135,function(_0x52fd71,_0x9bc1e2){if(_0x52fd71){return _0x5620bf(_0x52fd71);}pm2['disconnect']();return _0x5535ae(_0x9bc1e2);});});});};exports['stop']=function(_0x25b575){return connect()['then'](function(){return new BPromise(function(_0x2abadd,_0x589425){return pm2[_0xa492('0x5')](_0x25b575,function(_0x22bf87,_0x2a2d18){if(_0x22bf87){return _0x589425(_0x22bf87);}pm2[_0xa492('0x6')]();return _0x2abadd(_0x2a2d18);});});});};exports[_0xa492('0x7')]=function(_0x4f70cf){return connect()['then'](function(){return new BPromise(function(_0x702a1,_0x4df458){return pm2[_0xa492('0x7')](_0x4f70cf,function(_0x549533,_0x3bd605){if(_0x549533){return _0x4df458(_0x549533);}pm2[_0xa492('0x6')]();return _0x702a1(_0x3bd605);});});});};exports[_0xa492('0x8')]=function(){return connect()[_0xa492('0x4')](function(){return new BPromise(function(_0x1a62e0,_0x41a4b2){return pm2['list'](function(_0x5b4c96,_0x4fa0a4){if(_0x5b4c96){return _0x41a4b2(_0x5b4c96);}pm2['disconnect']();return _0x1a62e0(_0x4fa0a4);});});});};exports[_0xa492('0x9')]=function(_0x155e76){return connect()[_0xa492('0x4')](function(){return new BPromise(function(_0x17bb0c,_0x400872){return pm2[_0xa492('0x9')](_0x155e76,function(_0x11fa4b,_0x708134){if(_0x11fa4b){return _0x400872(_0x11fa4b);}pm2['disconnect']();return _0x17bb0c(_0x708134);});});});};exports['delete']=function(_0x3efe20){return connect()[_0xa492('0x4')](function(){return new BPromise(function(_0x2b7924,_0x3dcfb8){return pm2[_0xa492('0xa')](_0x3efe20,function(_0x36cf14,_0xd4f55){if(_0x36cf14){return _0x3dcfb8(_0x36cf14);}pm2[_0xa492('0x6')]();return _0x2b7924(_0xd4f55);});});});};exports['dump']=function(){return connect()[_0xa492('0x4')](function(){return new BPromise(function(_0x171009,_0x565073){return pm2[_0xa492('0xb')](function(_0x17b48b){if(_0x17b48b){return _0x565073(_0x17b48b);}return _0x171009(_0xa492('0xc'));});});});};
\ No newline at end of file
+var _0xb57c=['start','then','disconnect','stop','restart','list','delete','dump','saved','pm2','bluebird','./config','connect'];(function(_0x1001b4,_0x3d5d49){var _0x1ad129=function(_0x5b680c){while(--_0x5b680c){_0x1001b4['push'](_0x1001b4['shift']());}};_0x1ad129(++_0x3d5d49);}(_0xb57c,0xf3));var _0xcb57=function(_0x45f69f,_0x33c0bd){_0x45f69f=_0x45f69f-0x0;var _0x35bd0d=_0xb57c[_0x45f69f];return _0x35bd0d;};'use strict';var pm2=require(_0xcb57('0x0'));var BPromise=require(_0xcb57('0x1'));var config=require(_0xcb57('0x2'));function connect(){return new BPromise(function(_0x36076e,_0xf4d779){return pm2[_0xcb57('0x3')](function(_0x27da00){if(_0x27da00){return _0xf4d779(_0x27da00);}return _0x36076e('connected');});});};exports[_0xcb57('0x4')]=function(_0x50b960){return connect()[_0xcb57('0x5')](function(){return new BPromise(function(_0x6cb37a,_0xc26607){return pm2[_0xcb57('0x4')](_0x50b960,function(_0x273c76,_0x2731bc){if(_0x273c76){return _0xc26607(_0x273c76);}pm2[_0xcb57('0x6')]();return _0x6cb37a(_0x2731bc);});});});};exports[_0xcb57('0x7')]=function(_0x482f9b){return connect()[_0xcb57('0x5')](function(){return new BPromise(function(_0x487d84,_0x53aaa0){return pm2[_0xcb57('0x7')](_0x482f9b,function(_0x193297,_0x356f60){if(_0x193297){return _0x53aaa0(_0x193297);}pm2[_0xcb57('0x6')]();return _0x487d84(_0x356f60);});});});};exports['restart']=function(_0x27b426){return connect()['then'](function(){return new BPromise(function(_0x57c91a,_0x4ef505){return pm2[_0xcb57('0x8')](_0x27b426,function(_0x510f7a,_0x359c79){if(_0x510f7a){return _0x4ef505(_0x510f7a);}pm2[_0xcb57('0x6')]();return _0x57c91a(_0x359c79);});});});};exports[_0xcb57('0x9')]=function(){return connect()[_0xcb57('0x5')](function(){return new BPromise(function(_0x5181ea,_0x116454){return pm2['list'](function(_0x1f36a9,_0x90f585){if(_0x1f36a9){return _0x116454(_0x1f36a9);}pm2[_0xcb57('0x6')]();return _0x5181ea(_0x90f585);});});});};exports['describe']=function(_0x34317f){return connect()[_0xcb57('0x5')](function(){return new BPromise(function(_0x21a8ab,_0x409ea6){return pm2['describe'](_0x34317f,function(_0x4d7ea2,_0x1b3fbe){if(_0x4d7ea2){return _0x409ea6(_0x4d7ea2);}pm2[_0xcb57('0x6')]();return _0x21a8ab(_0x1b3fbe);});});});};exports[_0xcb57('0xa')]=function(_0x1e9984){return connect()[_0xcb57('0x5')](function(){return new BPromise(function(_0x2002d3,_0x343cd2){return pm2[_0xcb57('0xa')](_0x1e9984,function(_0x2efe9c,_0x40f8c8){if(_0x2efe9c){return _0x343cd2(_0x2efe9c);}pm2[_0xcb57('0x6')]();return _0x2002d3(_0x40f8c8);});});});};exports[_0xcb57('0xb')]=function(){return connect()[_0xcb57('0x5')](function(){return new BPromise(function(_0x5b7d63,_0x36f975){return pm2['dump'](function(_0x3a5f36){if(_0x3a5f36){return _0x36f975(_0x3a5f36);}return _0x5b7d63(_0xcb57('0xc'));});});});};
\ No newline at end of file
index 28a495f..ea9e400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a7b=['../../mysqldb','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction','findAll','subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment'];(function(_0x2c9bdc,_0x5addbb){var _0x28186a=function(_0x17c8de){while(--_0x17c8de){_0x2c9bdc['push'](_0x2c9bdc['shift']());}};_0x28186a(++_0x5addbb);}(_0x1a7b,0x1a8));var _0xb1a7=function(_0x54174f,_0x34d079){_0x54174f=_0x54174f-0x0;var _0x71d0fb=_0x1a7b[_0x54174f];return _0x71d0fb;};'use strict';var _=require(_0xb1a7('0x0'));var moment=require(_0xb1a7('0x1'));var Redis=require(_0xb1a7('0x2'));var util=require(_0xb1a7('0x3'));var config=require(_0xb1a7('0x4'));var db=require(_0xb1a7('0x5'))['db'];var logger=require('../logger')(_0xb1a7('0x6'));config[_0xb1a7('0x7')]=_[_0xb1a7('0x8')](config[_0xb1a7('0x7')],{'host':_0xb1a7('0x9'),'port':0x18eb});var io=require(_0xb1a7('0xa'))(new Redis(config[_0xb1a7('0x7')]));function closeInteractions(){var _0x44781e=0x0;var _0x253b37=[];return db[_0xb1a7('0xb')][_0xb1a7('0xc')]({'raw':!![],'attributes':['id',_0xb1a7('0xd')],'where':{'id':0x1}})[_0xb1a7('0xe')](function(_0x2cf64b){_0x44781e=_0x2cf64b[_0xb1a7('0xd')];if(_0x44781e){return db[_0xb1a7('0xf')][_0xb1a7('0x10')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xb1a7('0x11')](_0x2cf64b['chatTimeout'],_0xb1a7('0x12'))}}});}else{return[];}})[_0xb1a7('0xe')](function(_0x5db2ff){if(_0x5db2ff&&_0x5db2ff[_0xb1a7('0x13')]){_0x253b37=_[_0xb1a7('0x14')](_0x5db2ff||[],'id');logger[_0xb1a7('0x15')](_0xb1a7('0x16'),_0x253b37[_0xb1a7('0x17')]());return db['ChatInteraction'][_0xb1a7('0x18')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0xb1a7('0x19')](_0xb1a7('0x1a'))},{'where':{'id':_0x253b37}});}})['then'](function(){if(_0x253b37&&_0x253b37[_0xb1a7('0x13')]){logger['info'](_0xb1a7('0x1b'),_0x253b37['join']());for(var _0x435111=0x0;_0x435111<_0x253b37[_0xb1a7('0x13')];_0x435111++){io[_0xb1a7('0x1c')](_0xb1a7('0x1d'),{'id':_0x253b37[_0x435111],'closed':!![]});}}})[_0xb1a7('0x1e')](function(_0x406f0b){logger['error'](_0xb1a7('0x1f'),_0x406f0b?util[_0xb1a7('0x20')](_0x406f0b,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x2dea=['lastMsgAt','length','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','update','system','format','YYYY-MM-DD\x20HH:mm:ss','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','error','inspect','start','util','../../mysqldb','../logger','schedule','localhost','redis','Setting','chatTimeout','then'];(function(_0x20e7e3,_0x1529be){var _0x14b9de=function(_0xa82925){while(--_0xa82925){_0x20e7e3['push'](_0x20e7e3['shift']());}};_0x14b9de(++_0x1529be);}(_0x2dea,0x1b9));var _0xa2de=function(_0x4b53d3,_0x19db52){_0x4b53d3=_0x4b53d3-0x0;var _0x15b95d=_0x2dea[_0x4b53d3];return _0x15b95d;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require('ioredis');var util=require(_0xa2de('0x0'));var config=require('../../config/environment');var db=require(_0xa2de('0x1'))['db'];var logger=require(_0xa2de('0x2'))(_0xa2de('0x3'));config['redis']=_['defaults'](config['redis'],{'host':_0xa2de('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa2de('0x5')]));function closeInteractions(){var _0x59e452=0x0;var _0x1b6433=[];return db[_0xa2de('0x6')]['find']({'raw':!![],'attributes':['id',_0xa2de('0x7')],'where':{'id':0x1}})[_0xa2de('0x8')](function(_0x4faad5){_0x59e452=_0x4faad5[_0xa2de('0x7')];if(_0x59e452){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id',_0xa2de('0x9')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x4faad5[_0xa2de('0x7')],'minutes')}}});}else{return[];}})['then'](function(_0x5b40e4){if(_0x5b40e4&&_0x5b40e4[_0xa2de('0xa')]){_0x1b6433=_['map'](_0x5b40e4||[],'id');logger['info'](_0xa2de('0xb'),_0x1b6433[_0xa2de('0xc')]());return db[_0xa2de('0xd')][_0xa2de('0xe')]({'closeReason':_0xa2de('0xf'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xa2de('0x10')](_0xa2de('0x11'))},{'where':{'id':_0x1b6433}});}})['then'](function(){if(_0x1b6433&&_0x1b6433[_0xa2de('0xa')]){logger[_0xa2de('0x12')](_0xa2de('0x13'),_0x1b6433[_0xa2de('0xc')]());for(var _0x48d681=0x0;_0x48d681<_0x1b6433[_0xa2de('0xa')];_0x48d681++){io[_0xa2de('0x14')](_0xa2de('0x15'),{'id':_0x1b6433[_0x48d681],'closed':!![]});}}})['catch'](function(_0x343a11){logger[_0xa2de('0x16')]('[CHAT]\x20Error\x20closing\x20interactions',_0x343a11?util[_0xa2de('0x17')](_0x343a11,{'showHidden':![],'depth':null}):'');});}exports[_0xa2de('0x18')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index cb5b7a1..d3c2b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e37=['Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','subtractNumber','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','jobs','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','run\x20job','cron','active','isBetween','endAt','start','add\x20cron','stop\x20cron','startAt','update','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','pass','format','\x22%s\x22\x20<%s>','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','savename','%s.%s','basename','extname','zip','existsSync','status','attachments','text'];(function(_0x479e42,_0x420101){var _0x21f1a0=function(_0x2c9746){while(--_0x2c9746){_0x479e42['push'](_0x479e42['shift']());}};_0x21f1a0(++_0x420101);}(_0x1e37,0x13b));var _0x71e3=function(_0xa15f63,_0x1abc94){_0xa15f63=_0xa15f63-0x0;var _0x13b611=_0x1e37[_0xa15f63];return _0x13b611;};'use strict';var fs=require('fs');var util=require(_0x71e3('0x0'));var path=require(_0x71e3('0x1'));var _=require(_0x71e3('0x2'));var moment=require(_0x71e3('0x3'));var CronJobManager=require(_0x71e3('0x4'));var jayson=require(_0x71e3('0x5'));var BPromise=require(_0x71e3('0x6'));var logger=require('../logger')('schedule');var db=require(_0x71e3('0x7'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x71e3('0x8'));var client=jayson[_0x71e3('0x9')][_0x71e3('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4b3a75,_0x56f037){return function(){logger['info'](_0x71e3('0xb'),_0x4b3a75[_0x71e3('0xc')]);var _0x4a373a=!![];var _0x3069fa={'tls':{'rejectUnauthorized':![]}};if(_0x4b3a75[_0x71e3('0xd')][_0x71e3('0xe')][_0x71e3('0xf')]){_0x3069fa[_0x71e3('0xf')]=_0x4b3a75['MailAccount'][_0x71e3('0xe')][_0x71e3('0xf')];}else{_0x3069fa['host']=_0x4b3a75[_0x71e3('0xd')][_0x71e3('0xe')][_0x71e3('0x10')];_0x3069fa['port']=_0x4b3a75[_0x71e3('0xd')][_0x71e3('0xe')][_0x71e3('0x11')];_0x3069fa[_0x71e3('0x12')]=_0x4b3a75[_0x71e3('0xd')][_0x71e3('0xe')][_0x71e3('0x12')];}if(_0x4b3a75['MailAccount'][_0x71e3('0xe')]['authentication']){_0x3069fa['auth']={'user':_0x4b3a75[_0x71e3('0xd')][_0x71e3('0xe')]['user'],'pass':_0x4b3a75['MailAccount'][_0x71e3('0xe')][_0x71e3('0x13')]};}var _0x583012={'account':_0x3069fa,'message':{'from':util[_0x71e3('0x14')](_0x71e3('0x15'),_0x4b3a75[_0x71e3('0xd')][_0x71e3('0x16')],_0x4b3a75['MailAccount']['email']||_0x4b3a75[_0x71e3('0xd')][_0x71e3('0xe')][_0x71e3('0x17')]),'to':_0x4b3a75[_0x71e3('0xc')],'cc':_0x4b3a75['cc'],'bcc':_0x4b3a75[_0x71e3('0x18')],'subject':util['format'](_0x71e3('0x19'),_0x56f037[_0x71e3('0x16')],_0x4b3a75['subtractNumber'],_0x4b3a75[_0x71e3('0x1a')])}};var _0x4bdabf=path[_0x71e3('0x1b')](__dirname,'../../files/reports');var _0x18b6ad=_0x56f037[_0x71e3('0x1c')];var _0x574220=util[_0x71e3('0x14')](_0x71e3('0x1d'),path[_0x71e3('0x1e')](_0x56f037[_0x71e3('0x1c')],path[_0x71e3('0x1f')](_0x56f037[_0x71e3('0x1c')])),_0x71e3('0x20'));var _0x5ce01e=path[_0x71e3('0x1b')](_0x4bdabf,_0x18b6ad);var _0x24f999=path[_0x71e3('0x1b')](_0x4bdabf,_0x574220);if(fs[_0x71e3('0x21')](_0x5ce01e)){_0x56f037[_0x71e3('0x22')]='Sent';_0x583012['message'][_0x71e3('0x23')]=[{'filename':_0x18b6ad,'path':_0x5ce01e}];_0x583012['message'][_0x71e3('0x24')]=util['format'](_0x71e3('0x25'),JSON[_0x71e3('0x26')](_0x56f037,null,0x2));}else if(fs[_0x71e3('0x21')](_0x24f999)){_0x56f037[_0x71e3('0x22')]=_0x71e3('0x27');_0x583012['message'][_0x71e3('0x23')]=[{'filename':_0x574220,'path':_0x24f999}];}else{_0x583012['message'][_0x71e3('0x24')]=_0x71e3('0x28');if(!_0x4b3a75[_0x71e3('0x29')]){_0x4a373a=![];logger[_0x71e3('0x2a')](_0x71e3('0x2b'));}}if(_0x4a373a){return client[_0x71e3('0x2c')](_0x71e3('0x2d'),_0x583012)[_0x71e3('0x2e')](function(_0x415e98){if(_0x415e98[_0x71e3('0x2f')]){return logger[_0x71e3('0x2f')](_0x71e3('0x30'),JSON[_0x71e3('0x26')](_0x415e98));}return logger[_0x71e3('0x2a')]('email\x20sent');})[_0x71e3('0x31')](function(_0x2806a6){return logger[_0x71e3('0x2f')](_0x71e3('0x30'),JSON[_0x71e3('0x26')](_0x2806a6));});}};}function handleError(){return function(_0x5115f9){return logger[_0x71e3('0x2f')](JSON['stringify'](_0x5115f9));};}function handleResult(_0x139c43){return function(_0x34db14){logger['info'](_0x71e3('0x32'),JSON['stringify'](_0x34db14));if(_0x139c43['MailAccount']&&_0x139c43['MailAccount'][_0x71e3('0xe')]&&!_[_0x71e3('0x33')](_0x139c43[_0x71e3('0xc')])){setTimeout(handleSendEmail(_0x139c43,_0x34db14),0x3c*0x3e8);}};}function handleJob(_0x27fea8){return function(){try{if(_[_0x71e3('0x33')](_0x27fea8['subtractNumber'])){return logger['info'](_0x71e3('0x34'));}if(_['isNil'](_0x27fea8['subtractUnit'])){return logger[_0x71e3('0x2a')](_0x71e3('0x35'));}var _0x440e0f={'startDate':moment()[_0x71e3('0x36')](_0x27fea8[_0x71e3('0x37')],_0x27fea8[_0x71e3('0x1a')])[_0x71e3('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x71e3('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x71e3('0x38'),'output':_0x27fea8['output'],'name':_0x27fea8[_0x71e3('0x16')]};if(!_[_0x71e3('0x33')](_0x27fea8[_0x71e3('0x39')])){logger[_0x71e3('0x2a')](_0x71e3('0x3a'),_0x27fea8[_0x71e3('0x39')]);return analyticDefaultReportController[_0x71e3('0x3b')]({'id':_0x27fea8['DefaultReportId']},_0x440e0f)['then'](handleResult(_0x27fea8))[_0x71e3('0x31')](handleError());}if(!_[_0x71e3('0x33')](_0x27fea8[_0x71e3('0x3c')])){logger[_0x71e3('0x2a')](_0x71e3('0x3d'),_0x27fea8[_0x71e3('0x3c')]);return analyticCustomReportController[_0x71e3('0x3b')]({'id':_0x27fea8[_0x71e3('0x3c')]},_0x440e0f)[_0x71e3('0x2e')](handleResult(_0x27fea8))['catch'](handleError());}}catch(_0xf9f44d){logger['error'](JSON[_0x71e3('0x26')](_0xf9f44d));}return logger[_0x71e3('0x2a')](_0x71e3('0x3e'));};}function getJobs(_0x1e78e3){var _0x7fb41b={};if(_0x1e78e3){_0x7fb41b['id']=_0x1e78e3;}return db[_0x71e3('0x3f')][_0x71e3('0x40')]({'where':_0x7fb41b,'include':[{'model':db[_0x71e3('0xd')],'attributes':['id',_0x71e3('0x16'),_0x71e3('0xc')],'include':[{'model':db['MailServerOut'],'as':_0x71e3('0xe')}]}]})[_0x71e3('0x2e')](function(_0x3d0248){var _0x2ec85b=_['keys'](manager[_0x71e3('0x41')]);var _0x271f6a=_['map'](_0x3d0248,function(_0x2d6e8b){return _0x2d6e8b['id'][_0x71e3('0x42')]();});var _0x11771d=_[_0x71e3('0x43')](_0x3d0248,function(_0x538a90){return _0x538a90['id'][_0x71e3('0x42')]();});var _0x50829f=_0x1e78e3?_0x271f6a:_[_0x71e3('0x44')](_0x271f6a,_0x2ec85b);var _0x458484=_[_0x71e3('0x45')](_0x271f6a,_0x2ec85b);var _0x4a76ae=_[_0x71e3('0x44')](_0x2ec85b,_0x271f6a);var _0x4fc900;var _0x190544;for(_0x4fc900=0x0;_0x4fc900<_0x4a76ae[_0x71e3('0x46')]&&!_0x1e78e3;_0x4fc900+=0x1){_0x190544=_0x4a76ae[_0x4fc900][_0x71e3('0x42')]();if(manager[_0x71e3('0x47')](_0x190544)){manager[_0x71e3('0x48')](_0x190544);manager[_0x71e3('0x49')](_0x190544);logger[_0x71e3('0x2a')](_0x71e3('0x4a'),_0x190544);}}logger[_0x71e3('0x2a')](_0x71e3('0x4b'),JSON['stringify'](_0x50829f));for(_0x4fc900=0x0;_0x4fc900<_0x50829f[_0x71e3('0x46')];_0x4fc900+=0x1){_0x190544=_0x50829f[_0x4fc900][_0x71e3('0x42')]();logger[_0x71e3('0x2a')]('index',_0x190544);if(_0x1e78e3){logger[_0x71e3('0x2a')]('my\x20id',_0x1e78e3);logger['info'](JSON[_0x71e3('0x26')](_0x11771d[_0x190544]));BPromise['resolve']()['then'](handleJob(_0x11771d[_0x190544]));logger[_0x71e3('0x2a')](_0x71e3('0x4c'),_0x11771d[_0x190544][_0x71e3('0x16')],_0x11771d[_0x190544]['cron']);}else if(_0x11771d[_0x190544][_0x71e3('0x4d')]&&_0x11771d[_0x190544][_0x71e3('0x4e')]&&moment()[_0x71e3('0x4f')](_0x11771d[_0x190544]['startAt'],_0x11771d[_0x190544][_0x71e3('0x50')])){manager['add'](_0x190544,_0x11771d[_0x190544]['cron'],handleJob(_0x11771d[_0x190544]));manager[_0x71e3('0x51')](_0x190544);logger[_0x71e3('0x2a')](_0x71e3('0x52'),_0x11771d[_0x190544][_0x71e3('0x16')],_0x11771d[_0x190544][_0x71e3('0x4d')]);}else if(manager['exists'](_0x190544)){manager[_0x71e3('0x48')](_0x190544);manager[_0x71e3('0x49')](_0x190544);logger[_0x71e3('0x2a')](_0x71e3('0x53'),_0x11771d[_0x190544][_0x71e3('0x16')],_0x11771d[_0x190544][_0x71e3('0x4d')]);}}for(_0x4fc900=0x0,_0x190544;_0x4fc900<_0x458484[_0x71e3('0x46')]&&!_0x1e78e3;_0x4fc900+=0x1){_0x190544=_0x458484[_0x4fc900]['toString']();if(manager['exists'](_0x190544)){if(_0x11771d[_0x190544][_0x71e3('0x4d')]&&_0x11771d[_0x190544][_0x71e3('0x4e')]&&moment()[_0x71e3('0x4f')](_0x11771d[_0x190544][_0x71e3('0x54')],_0x11771d[_0x190544]['endAt'])){manager[_0x71e3('0x55')](_0x190544,_0x11771d[_0x190544][_0x71e3('0x4d')],handleJob(_0x11771d[_0x190544]));logger[_0x71e3('0x2a')](_0x71e3('0x56'),_0x11771d[_0x190544]['name'],_0x11771d[_0x190544]['cron']);}else{manager[_0x71e3('0x48')](_0x190544);manager[_0x71e3('0x49')](_0x190544);logger[_0x71e3('0x2a')]('stop\x20cron',_0x11771d[_0x190544][_0x71e3('0x16')],_0x11771d[_0x190544][_0x71e3('0x4d')]);}}}})[_0x71e3('0x31')](function(_0x551d70){logger[_0x71e3('0x2f')](JSON[_0x71e3('0x26')](_0x551d70));});}exports[_0x71e3('0x57')]=function(_0x3175c8){return getJobs(_0x3175c8);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x0b30=['exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','keys','keyBy','toString','difference','length','stop','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add\x20cron','exists','deleteJob','update','update\x20cron','stop\x20cron','start','util','path','lodash','cron-job-manager','jayson/promise','../logger','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','service','Smtp','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','name','email','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','extname','zip','status','Sent','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','stringify','existsSync','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','catch','CustomReportId'];(function(_0xab81c0,_0x268a85){var _0x153ca5=function(_0x5bfe81){while(--_0x5bfe81){_0xab81c0['push'](_0xab81c0['shift']());}};_0x153ca5(++_0x268a85);}(_0x0b30,0x183));var _0x00b3=function(_0x31a957,_0x2afe14){_0x31a957=_0x31a957-0x0;var _0x3222bd=_0x0b30[_0x31a957];return _0x3222bd;};'use strict';var fs=require('fs');var util=require(_0x00b3('0x0'));var path=require(_0x00b3('0x1'));var _=require(_0x00b3('0x2'));var moment=require('moment');var CronJobManager=require(_0x00b3('0x3'));var jayson=require(_0x00b3('0x4'));var BPromise=require('bluebird');var logger=require(_0x00b3('0x5'))('schedule');var db=require(_0x00b3('0x6'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x00b3('0x7'));var client=jayson[_0x00b3('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1a3379,_0x1a2522){return function(){logger[_0x00b3('0x9')](_0x00b3('0xa'),_0x1a3379['email']);var _0x5add6c=!![];var _0x5ae953={'tls':{'rejectUnauthorized':![]}};if(_0x1a3379[_0x00b3('0xb')]['Smtp'][_0x00b3('0xc')]){_0x5ae953[_0x00b3('0xc')]=_0x1a3379['MailAccount'][_0x00b3('0xd')]['service'];}else{_0x5ae953[_0x00b3('0xe')]=_0x1a3379['MailAccount'][_0x00b3('0xd')][_0x00b3('0xe')];_0x5ae953[_0x00b3('0xf')]=_0x1a3379[_0x00b3('0xb')]['Smtp'][_0x00b3('0xf')];_0x5ae953[_0x00b3('0x10')]=_0x1a3379[_0x00b3('0xb')]['Smtp'][_0x00b3('0x10')];}if(_0x1a3379[_0x00b3('0xb')][_0x00b3('0xd')][_0x00b3('0x11')]){_0x5ae953[_0x00b3('0x12')]={'user':_0x1a3379['MailAccount'][_0x00b3('0xd')][_0x00b3('0x13')],'pass':_0x1a3379[_0x00b3('0xb')][_0x00b3('0xd')][_0x00b3('0x14')]};}var _0x562119={'account':_0x5ae953,'message':{'from':util[_0x00b3('0x15')](_0x00b3('0x16'),_0x1a3379[_0x00b3('0xb')][_0x00b3('0x17')],_0x1a3379[_0x00b3('0xb')][_0x00b3('0x18')]||_0x1a3379[_0x00b3('0xb')][_0x00b3('0xd')][_0x00b3('0x13')]),'to':_0x1a3379[_0x00b3('0x18')],'cc':_0x1a3379['cc'],'bcc':_0x1a3379[_0x00b3('0x19')],'subject':util['format'](_0x00b3('0x1a'),_0x1a2522[_0x00b3('0x17')],_0x1a3379[_0x00b3('0x1b')],_0x1a3379[_0x00b3('0x1c')])}};var _0x4e0c93=path[_0x00b3('0x1d')](__dirname,_0x00b3('0x1e'));var _0x33e07d=_0x1a2522[_0x00b3('0x1f')];var _0x31da8c=util[_0x00b3('0x15')](_0x00b3('0x20'),path['basename'](_0x1a2522[_0x00b3('0x1f')],path[_0x00b3('0x21')](_0x1a2522[_0x00b3('0x1f')])),_0x00b3('0x22'));var _0xc280ff=path['join'](_0x4e0c93,_0x33e07d);var _0x5bf319=path[_0x00b3('0x1d')](_0x4e0c93,_0x31da8c);if(fs['existsSync'](_0xc280ff)){_0x1a2522[_0x00b3('0x23')]=_0x00b3('0x24');_0x562119[_0x00b3('0x25')][_0x00b3('0x26')]=[{'filename':_0x33e07d,'path':_0xc280ff}];_0x562119[_0x00b3('0x25')][_0x00b3('0x27')]=util[_0x00b3('0x15')](_0x00b3('0x28'),JSON[_0x00b3('0x29')](_0x1a2522,null,0x2));}else if(fs[_0x00b3('0x2a')](_0x5bf319)){_0x1a2522['status']=_0x00b3('0x24');_0x562119[_0x00b3('0x25')]['attachments']=[{'filename':_0x31da8c,'path':_0x5bf319}];}else{_0x562119[_0x00b3('0x25')][_0x00b3('0x27')]=_0x00b3('0x2b');if(!_0x1a3379[_0x00b3('0x2c')]){_0x5add6c=![];logger[_0x00b3('0x9')](_0x00b3('0x2d'));}}if(_0x5add6c){return client[_0x00b3('0x2e')](_0x00b3('0x2f'),_0x562119)[_0x00b3('0x30')](function(_0x9e46e8){if(_0x9e46e8[_0x00b3('0x31')]){return logger[_0x00b3('0x31')]('error\x20mail',JSON[_0x00b3('0x29')](_0x9e46e8));}return logger['info'](_0x00b3('0x32'));})['catch'](function(_0x5b00f2){return logger[_0x00b3('0x31')]('error\x20mail',JSON[_0x00b3('0x29')](_0x5b00f2));});}};}function handleError(){return function(_0x22db05){return logger[_0x00b3('0x31')](JSON[_0x00b3('0x29')](_0x22db05));};}function handleResult(_0x56ed0e){return function(_0x4a5ea3){logger[_0x00b3('0x9')](_0x00b3('0x33'),JSON[_0x00b3('0x29')](_0x4a5ea3));if(_0x56ed0e[_0x00b3('0xb')]&&_0x56ed0e['MailAccount'][_0x00b3('0xd')]&&!_[_0x00b3('0x34')](_0x56ed0e[_0x00b3('0x18')])){setTimeout(handleSendEmail(_0x56ed0e,_0x4a5ea3),0x3c*0x3e8);}};}function handleJob(_0x4c161a){return function(){try{if(_[_0x00b3('0x34')](_0x4c161a[_0x00b3('0x1b')])){return logger[_0x00b3('0x9')](_0x00b3('0x35'));}if(_[_0x00b3('0x34')](_0x4c161a[_0x00b3('0x1c')])){return logger[_0x00b3('0x9')](_0x00b3('0x36'));}var _0x32c19a={'startDate':moment()['subtract'](_0x4c161a[_0x00b3('0x1b')],_0x4c161a[_0x00b3('0x1c')])['format'](_0x00b3('0x37')),'endDate':moment()[_0x00b3('0x15')](_0x00b3('0x37')),'type':_0x00b3('0x38'),'output':_0x4c161a[_0x00b3('0x39')],'name':_0x4c161a[_0x00b3('0x17')]};if(!_[_0x00b3('0x34')](_0x4c161a['DefaultReportId'])){logger[_0x00b3('0x9')](_0x00b3('0x3a'),_0x4c161a[_0x00b3('0x3b')]);return analyticDefaultReportController[_0x00b3('0x3c')]({'id':_0x4c161a['DefaultReportId']},_0x32c19a)['then'](handleResult(_0x4c161a))[_0x00b3('0x3d')](handleError());}if(!_[_0x00b3('0x34')](_0x4c161a[_0x00b3('0x3e')])){logger[_0x00b3('0x9')](_0x00b3('0x3f'),_0x4c161a[_0x00b3('0x3e')]);return analyticCustomReportController['runReport']({'id':_0x4c161a[_0x00b3('0x3e')]},_0x32c19a)[_0x00b3('0x30')](handleResult(_0x4c161a))['catch'](handleError());}}catch(_0x593953){logger['error'](JSON[_0x00b3('0x29')](_0x593953));}return logger[_0x00b3('0x9')](_0x00b3('0x40'));};}function getJobs(_0x64ce1c){var _0xb57305={};if(_0x64ce1c){_0xb57305['id']=_0x64ce1c;}return db[_0x00b3('0x41')]['findAll']({'where':_0xb57305,'include':[{'model':db[_0x00b3('0xb')],'attributes':['id','name','email'],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]}]})[_0x00b3('0x30')](function(_0x1cc5dd){var _0x45ae14=_[_0x00b3('0x42')](manager['jobs']);var _0x406563=_['map'](_0x1cc5dd,function(_0x228e09){return _0x228e09['id']['toString']();});var _0x304d12=_[_0x00b3('0x43')](_0x1cc5dd,function(_0x2071e1){return _0x2071e1['id'][_0x00b3('0x44')]();});var _0x1228e7=_0x64ce1c?_0x406563:_[_0x00b3('0x45')](_0x406563,_0x45ae14);var _0x47d6fb=_['intersection'](_0x406563,_0x45ae14);var _0xebc936=_['difference'](_0x45ae14,_0x406563);var _0x1b78ff;var _0x3fcdbb;for(_0x1b78ff=0x0;_0x1b78ff<_0xebc936[_0x00b3('0x46')]&&!_0x64ce1c;_0x1b78ff+=0x1){_0x3fcdbb=_0xebc936[_0x1b78ff]['toString']();if(manager['exists'](_0x3fcdbb)){manager[_0x00b3('0x47')](_0x3fcdbb);manager['deleteJob'](_0x3fcdbb);logger['info'](_0x00b3('0x48'),_0x3fcdbb);}}logger[_0x00b3('0x9')](_0x00b3('0x49'),JSON[_0x00b3('0x29')](_0x1228e7));for(_0x1b78ff=0x0;_0x1b78ff<_0x1228e7[_0x00b3('0x46')];_0x1b78ff+=0x1){_0x3fcdbb=_0x1228e7[_0x1b78ff][_0x00b3('0x44')]();logger[_0x00b3('0x9')](_0x00b3('0x4a'),_0x3fcdbb);if(_0x64ce1c){logger['info'](_0x00b3('0x4b'),_0x64ce1c);logger[_0x00b3('0x9')](JSON[_0x00b3('0x29')](_0x304d12[_0x3fcdbb]));BPromise[_0x00b3('0x4c')]()['then'](handleJob(_0x304d12[_0x3fcdbb]));logger[_0x00b3('0x9')](_0x00b3('0x4d'),_0x304d12[_0x3fcdbb][_0x00b3('0x17')],_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]);}else if(_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]&&_0x304d12[_0x3fcdbb][_0x00b3('0x4f')]&&moment()[_0x00b3('0x50')](_0x304d12[_0x3fcdbb][_0x00b3('0x51')],_0x304d12[_0x3fcdbb][_0x00b3('0x52')])){manager['add'](_0x3fcdbb,_0x304d12[_0x3fcdbb]['cron'],handleJob(_0x304d12[_0x3fcdbb]));manager['start'](_0x3fcdbb);logger[_0x00b3('0x9')](_0x00b3('0x53'),_0x304d12[_0x3fcdbb][_0x00b3('0x17')],_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]);}else if(manager[_0x00b3('0x54')](_0x3fcdbb)){manager[_0x00b3('0x47')](_0x3fcdbb);manager[_0x00b3('0x55')](_0x3fcdbb);logger[_0x00b3('0x9')]('stop\x20cron',_0x304d12[_0x3fcdbb][_0x00b3('0x17')],_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]);}}for(_0x1b78ff=0x0,_0x3fcdbb;_0x1b78ff<_0x47d6fb[_0x00b3('0x46')]&&!_0x64ce1c;_0x1b78ff+=0x1){_0x3fcdbb=_0x47d6fb[_0x1b78ff][_0x00b3('0x44')]();if(manager[_0x00b3('0x54')](_0x3fcdbb)){if(_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]&&_0x304d12[_0x3fcdbb][_0x00b3('0x4f')]&&moment()[_0x00b3('0x50')](_0x304d12[_0x3fcdbb]['startAt'],_0x304d12[_0x3fcdbb][_0x00b3('0x52')])){manager[_0x00b3('0x56')](_0x3fcdbb,_0x304d12[_0x3fcdbb][_0x00b3('0x4e')],handleJob(_0x304d12[_0x3fcdbb]));logger['info'](_0x00b3('0x57'),_0x304d12[_0x3fcdbb][_0x00b3('0x17')],_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]);}else{manager[_0x00b3('0x47')](_0x3fcdbb);manager['deleteJob'](_0x3fcdbb);logger['info'](_0x00b3('0x58'),_0x304d12[_0x3fcdbb][_0x00b3('0x17')],_0x304d12[_0x3fcdbb][_0x00b3('0x4e')]);}}}})[_0x00b3('0x3d')](function(_0x1941cf){logger[_0x00b3('0x31')](JSON[_0x00b3('0x29')](_0x1941cf));});}exports['run']=function(_0xecf821){return getJobs(_0xecf821);};exports[_0x00b3('0x59')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index d2106b4..e993e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f68=['No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','SequelizeValidationError','start','aws-sdk','request-promise','util','bluebird','../../config/logger','TranscribeService','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','results','length','update','then','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll'];(function(_0x2d67a3,_0x8dc15c){var _0x32d9e9=function(_0xe8d4e4){while(--_0xe8d4e4){_0x2d67a3['push'](_0x2d67a3['shift']());}};_0x32d9e9(++_0x8dc15c);}(_0x2f68,0x9a));var _0x82f6=function(_0x19ff38,_0x1eab78){_0x19ff38=_0x19ff38-0x0;var _0x598817=_0x2f68[_0x19ff38];return _0x598817;};var _=require('lodash');var AWS=require(_0x82f6('0x0'));var rp=require(_0x82f6('0x1'));var util=require(_0x82f6('0x2'));var BPromise=require(_0x82f6('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x82f6('0x4'))('transcribe');function getTranscriptionJob(_0x2a06dc,_0x2ab73d,_0x5dad09,_0x3ad120){return new Promise(function(_0x2c4302,_0x542737){var _0x5a8089=new AWS[(_0x82f6('0x5'))]({'accessKeyId':_0x2ab73d,'secretAccessKey':_0x2a06dc,'region':_0x5dad09});_0x5a8089['getTranscriptionJob']({'TranscriptionJobName':_0x3ad120},function(_0x5daa3c,_0x864400){if(_0x5daa3c){return _0x542737(_0x5daa3c);}else{return _0x2c4302(_0x864400);}});});}function sentiment(_0xbd30d5,_0x250d71,_0x5ee0e5,_0x27db58,_0x432289){return new Promise(function(_0x4e7c12,_0x1cf88e){var _0x1eec2f=new AWS[(_0x82f6('0x6'))]({'accessKeyId':_0x250d71,'secretAccessKey':_0xbd30d5,'region':_0x5ee0e5});_0x1eec2f[_0x82f6('0x7')]({'Text':_0x27db58,'LanguageCode':_0x432289[_0x82f6('0x8')](0x0,0x2)},function(_0x34bd7c,_0x4c870e){if(_0x34bd7c){return _0x1cf88e(_0x34bd7c);}else{return _0x4e7c12(_0x4c870e);}});});}function checkTranscribeJob(_0x12c5bc,_0x442262,_0x4cc967){var _0x194da7;return new BPromise(function(_0x1f8bf5,_0x397527){logger[_0x82f6('0x9')](util[_0x82f6('0xa')](_0x82f6('0xb'),_0x12c5bc['id'],_0x12c5bc[_0x82f6('0xc')]));return getTranscriptionJob(_0x4cc967[_0x82f6('0xd')],_0x4cc967[_0x82f6('0xe')],_0x442262['transcribeRegion'],_0x12c5bc[_0x82f6('0xc')])['then'](function(_0x249222){logger[_0x82f6('0x9')](util[_0x82f6('0xa')](_0x82f6('0xf'),_0x12c5bc['id'],_0x12c5bc[_0x82f6('0xc')],_0x249222[_0x82f6('0x10')][_0x82f6('0x11')]));if(!_0x12c5bc[_0x82f6('0x12')]){switch(_0x249222[_0x82f6('0x10')][_0x82f6('0x11')]){case _0x82f6('0x13'):var _0x1d9091={'transcribeStatus':_0x249222[_0x82f6('0x10')][_0x82f6('0x11')],'fileUri':_0x249222[_0x82f6('0x10')]['Transcript'][_0x82f6('0x14')]};logger[_0x82f6('0x9')](util['format'](_0x82f6('0x15'),_0x12c5bc['id']));return rp({'uri':_0x249222[_0x82f6('0x10')][_0x82f6('0x16')][_0x82f6('0x14')],'json':!![]})['then'](function(_0xdc4dea){logger['info'](util[_0x82f6('0xa')](_0x82f6('0x17'),_0x12c5bc['id']));if(_0xdc4dea&&_0xdc4dea['results']&&_0xdc4dea['results'][_0x82f6('0x18')]&&_0xdc4dea[_0x82f6('0x19')]['transcripts']['length']){_0x1d9091[_0x82f6('0x12')]='';for(var _0x31face=0x0;_0x31face<_0xdc4dea['results'][_0x82f6('0x18')][_0x82f6('0x1a')];_0x31face++){_0x1d9091['fileText']+=_0xdc4dea['results'][_0x82f6('0x18')][_0x31face]['transcript']+'';}}return _0x12c5bc[_0x82f6('0x1b')](_0x1d9091);})[_0x82f6('0x1c')](function(){logger['info'](util[_0x82f6('0xa')](_0x82f6('0x1d'),_0x12c5bc['id']));if(!_0x12c5bc[_0x82f6('0x1e')]){throw new db[(_0x82f6('0x1f'))]['ValidationError'](_0x82f6('0x20'));}if(!_0x442262[_0x82f6('0x21')]||!_0x442262[_0x82f6('0x22')]||!_0x442262[_0x82f6('0x23')]||!_0x442262[_0x82f6('0x24')]||!_0x442262[_0x82f6('0x25')]){throw new db[(_0x82f6('0x1f'))][(_0x82f6('0x26'))](_0x82f6('0x27'));}if(!_0x1d9091[_0x82f6('0x12')]){throw new Error(_0x82f6('0x28'));}if(_0x442262[_0x82f6('0x22')]===_0x4cc967['id']){return _0x4cc967;}else{return db[_0x82f6('0x29')][_0x82f6('0x2a')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x82f6('0x1c')](function(_0x2c764f){if(!_0x2c764f){throw new db[(_0x82f6('0x1f'))]['ValidationError'](_0x82f6('0x2b'));}if(!_0x2c764f[_0x82f6('0xd')]||!_0x2c764f[_0x82f6('0xe')]){throw new db[(_0x82f6('0x1f'))][(_0x82f6('0x26'))](_0x82f6('0x2c'));}_0x194da7=_0x2c764f;logger[_0x82f6('0x9')](util[_0x82f6('0xa')](_0x82f6('0x2d'),_0x12c5bc['id']));return sentiment(_0x194da7[_0x82f6('0xd')],_0x194da7[_0x82f6('0xe')],_0x442262[_0x82f6('0x23')],_0x1d9091[_0x82f6('0x12')],_0x442262[_0x82f6('0x24')]);})['then'](function(_0x13a409){logger[_0x82f6('0x9')](util[_0x82f6('0xa')](_0x82f6('0x2e'),_0x12c5bc['id']));return _0x12c5bc[_0x82f6('0x1b')]({'sentiment':_0x13a409[_0x82f6('0x2f')],'sPositive':_0x13a409[_0x82f6('0x30')][_0x82f6('0x31')],'sNegative':_0x13a409[_0x82f6('0x30')][_0x82f6('0x32')],'sMixed':_0x13a409[_0x82f6('0x30')][_0x82f6('0x33')],'sNeutral':_0x13a409[_0x82f6('0x30')][_0x82f6('0x34')]});})['then'](function(){logger[_0x82f6('0x9')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x12c5bc['id']));_0x1f8bf5();});case _0x82f6('0x35'):return _0x12c5bc[_0x82f6('0x1b')]({'transcribeStatus':'FAILED','failureReason':_0x249222[_0x82f6('0x10')][_0x82f6('0x36')]})[_0x82f6('0x1c')](function(){logger['info'](util[_0x82f6('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x12c5bc['id']));_0x1f8bf5();});default:logger[_0x82f6('0x9')](util['format'](_0x82f6('0x37'),_0x12c5bc['id']));break;}}else{return BPromise['resolve']()[_0x82f6('0x1c')](function(){if(!_0x12c5bc[_0x82f6('0x1e')]){throw new db['Sequelize'][(_0x82f6('0x26'))](_0x82f6('0x20'));}if(!_0x442262[_0x82f6('0x21')]||!_0x442262[_0x82f6('0x22')]||!_0x442262['sentimentRegion']||!_0x442262[_0x82f6('0x24')]||!_0x442262[_0x82f6('0x25')]){throw new db[(_0x82f6('0x1f'))][(_0x82f6('0x26'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x12c5bc[_0x82f6('0x12')]){throw new Error(_0x82f6('0x28'));}if(_0x442262['sentimentAccountId']===_0x4cc967['id']){return _0x4cc967;}else{return db[_0x82f6('0x29')][_0x82f6('0x2a')]({'where':{'id':_settings[_0x82f6('0x22')]}});}})[_0x82f6('0x1c')](function(_0xc3e250){if(!_0xc3e250){throw new db['Sequelize'][(_0x82f6('0x26'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xc3e250[_0x82f6('0xd')]||!_0xc3e250[_0x82f6('0xe')]){throw new db[(_0x82f6('0x1f'))][(_0x82f6('0x26'))](_0x82f6('0x2c'));}_0x194da7=_0xc3e250;logger[_0x82f6('0x9')](util[_0x82f6('0xa')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x12c5bc['id']));return sentiment(_0x194da7[_0x82f6('0xd')],_0x194da7[_0x82f6('0xe')],_0x442262[_0x82f6('0x23')],_0x12c5bc[_0x82f6('0x12')],_0x442262['language']);})[_0x82f6('0x1c')](function(_0x4797af){logger[_0x82f6('0x9')](util[_0x82f6('0xa')](_0x82f6('0x2e'),_0x12c5bc['id']));return _0x12c5bc[_0x82f6('0x1b')]({'sentiment':_0x4797af[_0x82f6('0x2f')],'sPositive':_0x4797af[_0x82f6('0x30')]['Positive'],'sNegative':_0x4797af[_0x82f6('0x30')][_0x82f6('0x32')],'sMixed':_0x4797af[_0x82f6('0x30')][_0x82f6('0x33')],'sNeutral':_0x4797af[_0x82f6('0x30')][_0x82f6('0x34')],'transcribeStatus':_0x82f6('0x13')});})[_0x82f6('0x1c')](function(){logger['info'](util[_0x82f6('0xa')](_0x82f6('0x1d'),_0x12c5bc['id']));_0x1f8bf5();});}})['catch'](function(_0xfedf51){if(_0xfedf51){if(!_0xfedf51['name']||_0xfedf51[_0x82f6('0x38')]!=='SequelizeValidationError'){logger[_0x82f6('0x39')](util[_0x82f6('0xa')](_0x82f6('0x3a'),_0x12c5bc['id']),util[_0x82f6('0x3b')](_0xfedf51,{'showHidden':![],'depth':null}));}}_0x1f8bf5();});});}function checkTranscribe(){var _0x17a5ae;var _0x2fdcc6;var _0x53f7d4;return db[_0x82f6('0x3c')][_0x82f6('0x3d')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x3868cc){if(!_0x3868cc||!_0x3868cc[_0x82f6('0x1a')]){throw new db[(_0x82f6('0x1f'))]['ValidationError'](_0x82f6('0x3e'));}_0x17a5ae=_0x3868cc;return db[_0x82f6('0x3f')][_0x82f6('0x2a')]({'where':{'id':0x1}});})[_0x82f6('0x1c')](function(_0x4e9e13){if(!_0x4e9e13){throw new db['Sequelize'][(_0x82f6('0x26'))](_0x82f6('0x40'));}_0x2fdcc6=_0x4e9e13;if(!_0x2fdcc6[_0x82f6('0x41')]||!_0x2fdcc6['transcribeAccountId']||!_0x2fdcc6[_0x82f6('0x42')]||!_0x2fdcc6[_0x82f6('0x24')]||!_0x2fdcc6['bucket']){throw new db['Sequelize']['ValidationError'](_0x82f6('0x43'));}return db['CloudProvider'][_0x82f6('0x2a')]({'where':{'id':_0x2fdcc6['transcribeAccountId']}});})[_0x82f6('0x1c')](function(_0x4f69de){if(!_0x4f69de){throw new db[(_0x82f6('0x1f'))]['ValidationError'](_0x82f6('0x2b'));}if(!_0x4f69de[_0x82f6('0xd')]||!_0x4f69de[_0x82f6('0xe')]){throw new db[(_0x82f6('0x1f'))][(_0x82f6('0x26'))](_0x82f6('0x2c'));}_0x53f7d4=_0x4f69de;var _0x597844=[];_0x17a5ae[_0x82f6('0x44')](function(_0x1c8304){_0x597844[_0x82f6('0x45')](checkTranscribeJob(_0x1c8304,_0x2fdcc6,_0x53f7d4));});return BPromise['all'](_0x597844);})['catch'](function(_0x13406f){if(_0x13406f){if(!_0x13406f[_0x82f6('0x38')]||_0x13406f[_0x82f6('0x38')]!==_0x82f6('0x46')){logger['error'](util[_0x82f6('0x3b')](_0x13406f,{'showHidden':![],'depth':null}));}}});}exports[_0x82f6('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x0b63=['[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','Negative','Mixed','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','all','inspect','lodash','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','Comprehend','detectSentiment','substring','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','format','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available'];(function(_0x10f751,_0x133b9d){var _0x3d88f7=function(_0x4bb355){while(--_0x4bb355){_0x10f751['push'](_0x10f751['shift']());}};_0x3d88f7(++_0x133b9d);}(_0x0b63,0xe7));var _0x30b6=function(_0x5fe427,_0x3bdbe8){_0x5fe427=_0x5fe427-0x0;var _0x8f90a3=_0x0b63[_0x5fe427];return _0x8f90a3;};var _=require(_0x30b6('0x0'));var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x30b6('0x1'));var BPromise=require(_0x30b6('0x2'));var db=require(_0x30b6('0x3'))['db'];var logger=require(_0x30b6('0x4'))('transcribe');function getTranscriptionJob(_0x1405d5,_0x6dcbc8,_0x146a2a,_0x37b7be){return new Promise(function(_0x2670c6,_0x2fddeb){var _0x4fb35e=new AWS[(_0x30b6('0x5'))]({'accessKeyId':_0x6dcbc8,'secretAccessKey':_0x1405d5,'region':_0x146a2a});_0x4fb35e['getTranscriptionJob']({'TranscriptionJobName':_0x37b7be},function(_0x4488c6,_0x4eb0af){if(_0x4488c6){return _0x2fddeb(_0x4488c6);}else{return _0x2670c6(_0x4eb0af);}});});}function sentiment(_0x8412c8,_0x123054,_0x522a03,_0x3f8faa,_0x1ab626){return new Promise(function(_0x5b0567,_0x299f08){var _0x32295b=new AWS[(_0x30b6('0x6'))]({'accessKeyId':_0x123054,'secretAccessKey':_0x8412c8,'region':_0x522a03});_0x32295b[_0x30b6('0x7')]({'Text':_0x3f8faa,'LanguageCode':_0x1ab626[_0x30b6('0x8')](0x0,0x2)},function(_0x36e650,_0x514eec){if(_0x36e650){return _0x299f08(_0x36e650);}else{return _0x5b0567(_0x514eec);}});});}function checkTranscribeJob(_0xdd5b1f,_0x208a24,_0x21934b){var _0x3b7d76;return new BPromise(function(_0x54b40f,_0xbb8f7d){logger['info'](util['format'](_0x30b6('0x9'),_0xdd5b1f['id'],_0xdd5b1f[_0x30b6('0xa')]));return getTranscriptionJob(_0x21934b[_0x30b6('0xb')],_0x21934b['data2'],_0x208a24['transcribeRegion'],_0xdd5b1f[_0x30b6('0xa')])[_0x30b6('0xc')](function(_0x5c0d4b){logger[_0x30b6('0xd')](util['format'](_0x30b6('0xe'),_0xdd5b1f['id'],_0xdd5b1f[_0x30b6('0xa')],_0x5c0d4b[_0x30b6('0xf')][_0x30b6('0x10')]));if(!_0xdd5b1f[_0x30b6('0x11')]){switch(_0x5c0d4b['TranscriptionJob'][_0x30b6('0x10')]){case _0x30b6('0x12'):var _0x3cec44={'transcribeStatus':_0x5c0d4b[_0x30b6('0xf')][_0x30b6('0x10')],'fileUri':_0x5c0d4b[_0x30b6('0xf')][_0x30b6('0x13')]['TranscriptFileUri']};logger[_0x30b6('0xd')](util[_0x30b6('0x14')](_0x30b6('0x15'),_0xdd5b1f['id']));return rp({'uri':_0x5c0d4b[_0x30b6('0xf')]['Transcript'][_0x30b6('0x16')],'json':!![]})[_0x30b6('0xc')](function(_0x4e9a9d){logger[_0x30b6('0xd')](util[_0x30b6('0x14')](_0x30b6('0x17'),_0xdd5b1f['id']));if(_0x4e9a9d&&_0x4e9a9d[_0x30b6('0x18')]&&_0x4e9a9d['results'][_0x30b6('0x19')]&&_0x4e9a9d['results'][_0x30b6('0x19')][_0x30b6('0x1a')]){_0x3cec44[_0x30b6('0x11')]='';for(var _0x1d5d57=0x0;_0x1d5d57<_0x4e9a9d['results'][_0x30b6('0x19')][_0x30b6('0x1a')];_0x1d5d57++){_0x3cec44['fileText']+=_0x4e9a9d[_0x30b6('0x18')]['transcripts'][_0x1d5d57][_0x30b6('0x1b')]+'';}}return _0xdd5b1f[_0x30b6('0x1c')](_0x3cec44);})[_0x30b6('0xc')](function(){logger['info'](util[_0x30b6('0x14')](_0x30b6('0x1d'),_0xdd5b1f['id']));if(!_0xdd5b1f[_0x30b6('0x1e')]){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x21'));}if(!_0x208a24[_0x30b6('0x22')]||!_0x208a24[_0x30b6('0x23')]||!_0x208a24[_0x30b6('0x24')]||!_0x208a24['language']||!_0x208a24[_0x30b6('0x25')]){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x3cec44[_0x30b6('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x208a24[_0x30b6('0x23')]===_0x21934b['id']){return _0x21934b;}else{return db[_0x30b6('0x26')][_0x30b6('0x27')]({'where':{'id':_settings[_0x30b6('0x23')]}});}})[_0x30b6('0xc')](function(_0xff9164){if(!_0xff9164){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x28'));}if(!_0xff9164[_0x30b6('0xb')]||!_0xff9164[_0x30b6('0x29')]){throw new db['Sequelize'][(_0x30b6('0x20'))](_0x30b6('0x2a'));}_0x3b7d76=_0xff9164;logger['info'](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xdd5b1f['id']));return sentiment(_0x3b7d76['data1'],_0x3b7d76[_0x30b6('0x29')],_0x208a24[_0x30b6('0x24')],_0x3cec44[_0x30b6('0x11')],_0x208a24['language']);})[_0x30b6('0xc')](function(_0x585e4f){logger['info'](util[_0x30b6('0x14')](_0x30b6('0x2b'),_0xdd5b1f['id']));return _0xdd5b1f['update']({'sentiment':_0x585e4f['Sentiment'],'sPositive':_0x585e4f[_0x30b6('0x2c')]['Positive'],'sNegative':_0x585e4f['SentimentScore']['Negative'],'sMixed':_0x585e4f[_0x30b6('0x2c')]['Mixed'],'sNeutral':_0x585e4f['SentimentScore'][_0x30b6('0x2d')]});})[_0x30b6('0xc')](function(){logger[_0x30b6('0xd')](util[_0x30b6('0x14')](_0x30b6('0x1d'),_0xdd5b1f['id']));_0x54b40f();});case'FAILED':return _0xdd5b1f[_0x30b6('0x1c')]({'transcribeStatus':_0x30b6('0x2e'),'failureReason':_0x5c0d4b[_0x30b6('0xf')][_0x30b6('0x2f')]})[_0x30b6('0xc')](function(){logger['info'](util[_0x30b6('0x14')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xdd5b1f['id']));_0x54b40f();});default:logger[_0x30b6('0xd')](util['format'](_0x30b6('0x30'),_0xdd5b1f['id']));break;}}else{return BPromise[_0x30b6('0x31')]()[_0x30b6('0xc')](function(){if(!_0xdd5b1f['tempSentiment']){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x21'));}if(!_0x208a24[_0x30b6('0x22')]||!_0x208a24[_0x30b6('0x23')]||!_0x208a24[_0x30b6('0x24')]||!_0x208a24[_0x30b6('0x32')]||!_0x208a24[_0x30b6('0x25')]){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x33'));}if(!_0xdd5b1f[_0x30b6('0x11')]){throw new Error(_0x30b6('0x34'));}if(_0x208a24['sentimentAccountId']===_0x21934b['id']){return _0x21934b;}else{return db[_0x30b6('0x26')][_0x30b6('0x27')]({'where':{'id':_settings[_0x30b6('0x23')]}});}})['then'](function(_0x1f3c6f){if(!_0x1f3c6f){throw new db['Sequelize'][(_0x30b6('0x20'))](_0x30b6('0x28'));}if(!_0x1f3c6f[_0x30b6('0xb')]||!_0x1f3c6f['data2']){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x2a'));}_0x3b7d76=_0x1f3c6f;logger['info'](util['format'](_0x30b6('0x35'),_0xdd5b1f['id']));return sentiment(_0x3b7d76[_0x30b6('0xb')],_0x3b7d76[_0x30b6('0x29')],_0x208a24[_0x30b6('0x24')],_0xdd5b1f['fileText'],_0x208a24[_0x30b6('0x32')]);})['then'](function(_0x536da7){logger['info'](util[_0x30b6('0x14')](_0x30b6('0x2b'),_0xdd5b1f['id']));return _0xdd5b1f[_0x30b6('0x1c')]({'sentiment':_0x536da7['Sentiment'],'sPositive':_0x536da7[_0x30b6('0x2c')][_0x30b6('0x36')],'sNegative':_0x536da7[_0x30b6('0x2c')][_0x30b6('0x37')],'sMixed':_0x536da7['SentimentScore'][_0x30b6('0x38')],'sNeutral':_0x536da7[_0x30b6('0x2c')][_0x30b6('0x2d')],'transcribeStatus':_0x30b6('0x12')});})['then'](function(){logger[_0x30b6('0xd')](util[_0x30b6('0x14')](_0x30b6('0x1d'),_0xdd5b1f['id']));_0x54b40f();});}})[_0x30b6('0x39')](function(_0x1b59db){if(_0x1b59db){if(!_0x1b59db['name']||_0x1b59db[_0x30b6('0x3a')]!=='SequelizeValidationError'){logger['error'](util[_0x30b6('0x14')](_0x30b6('0x3b'),_0xdd5b1f['id']),util['inspect'](_0x1b59db,{'showHidden':![],'depth':null}));}}_0x54b40f();});});}function checkTranscribe(){var _0x11a0d2;var _0xa5f348;var _0x5c25c4;return db[_0x30b6('0x3c')][_0x30b6('0x3d')]({'where':{'transcribeStatus':_0x30b6('0x3e')}})[_0x30b6('0xc')](function(_0x33509b){if(!_0x33509b||!_0x33509b['length']){throw new db[(_0x30b6('0x1f'))]['ValidationError'](_0x30b6('0x3f'));}_0x11a0d2=_0x33509b;return db[_0x30b6('0x40')][_0x30b6('0x27')]({'where':{'id':0x1}});})['then'](function(_0x4eb04b){if(!_0x4eb04b){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x41'));}_0xa5f348=_0x4eb04b;if(!_0xa5f348['transcribe']||!_0xa5f348[_0x30b6('0x42')]||!_0xa5f348['transcribeRegion']||!_0xa5f348[_0x30b6('0x32')]||!_0xa5f348[_0x30b6('0x25')]){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x43'));}return db[_0x30b6('0x26')][_0x30b6('0x27')]({'where':{'id':_0xa5f348[_0x30b6('0x42')]}});})['then'](function(_0x20ba4d){if(!_0x20ba4d){throw new db[(_0x30b6('0x1f'))][(_0x30b6('0x20'))](_0x30b6('0x28'));}if(!_0x20ba4d[_0x30b6('0xb')]||!_0x20ba4d[_0x30b6('0x29')]){throw new db['Sequelize']['ValidationError'](_0x30b6('0x2a'));}_0x5c25c4=_0x20ba4d;var _0x411451=[];_0x11a0d2['forEach'](function(_0x1a7c0b){_0x411451[_0x30b6('0x44')](checkTranscribeJob(_0x1a7c0b,_0xa5f348,_0x5c25c4));});return BPromise[_0x30b6('0x45')](_0x411451);})['catch'](function(_0x34bbd0){if(_0x34bbd0){if(!_0x34bbd0[_0x30b6('0x3a')]||_0x34bbd0[_0x30b6('0x3a')]!=='SequelizeValidationError'){logger['error'](util[_0x30b6('0x46')](_0x34bbd0,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 33a2c35..c123880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d6=['start','lodash','moment','ioredis','util','../../config/environment','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect'];(function(_0x1b16ba,_0xe1a8dc){var _0x30d703=function(_0x4b6f53){while(--_0x4b6f53){_0x1b16ba['push'](_0x1b16ba['shift']());}};_0x30d703(++_0xe1a8dc);}(_0x85d6,0x135));var _0x685d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x85d6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x685d('0x0'));var moment=require(_0x685d('0x1'));var Redis=require(_0x685d('0x2'));var util=require(_0x685d('0x3'));var config=require(_0x685d('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0x685d('0x5'));config['redis']=_[_0x685d('0x6')](config[_0x685d('0x7')],{'host':_0x685d('0x8'),'port':0x18eb});var io=require(_0x685d('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x994aaa=[];return db[_0x685d('0xa')][_0x685d('0xb')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,'hours')}}})[_0x685d('0xc')](function(_0x509200){if(_0x509200&&_0x509200[_0x685d('0xd')]){_0x994aaa=_[_0x685d('0xe')](_0x509200||[],'id');logger[_0x685d('0xf')](_0x685d('0x10'),_0x994aaa[_0x685d('0x11')]());return db[_0x685d('0xa')]['update']({'closeReason':_0x685d('0x12'),'disposition':_0x685d('0x13'),'closed':!![],'closedAt':moment()[_0x685d('0x14')](_0x685d('0x15'))},{'where':{'id':_0x994aaa}});}})[_0x685d('0xc')](function(){if(_0x994aaa&&_0x994aaa[_0x685d('0xd')]){logger[_0x685d('0xf')](_0x685d('0x16'),_0x994aaa[_0x685d('0x11')]());for(var _0x1b3710=0x0;_0x1b3710<_0x994aaa[_0x685d('0xd')];_0x1b3710++){io['emit'](_0x685d('0x17'),{'id':_0x994aaa[_0x1b3710],'closed':!![]});}}})[_0x685d('0x18')](function(_0xa5446f){logger['error'](_0x685d('0x19'),_0xa5446f?util[_0x685d('0x1a')](_0xa5446f,{'showHidden':![],'depth':null}):'');});}exports[_0x685d('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x184e=['map','join','update','system','format','YYYY-MM-DD\x20HH:mm:ss','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','error','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','WhatsappInteraction','lastMsgAt','subtract','hours','then','length'];(function(_0x86b219,_0x43038f){var _0x1f320c=function(_0x8cd63f){while(--_0x8cd63f){_0x86b219['push'](_0x86b219['shift']());}};_0x1f320c(++_0x43038f);}(_0x184e,0x1a0));var _0xe184=function(_0x35ef6b,_0x202c42){_0x35ef6b=_0x35ef6b-0x0;var _0x3ad145=_0x184e[_0x35ef6b];return _0x3ad145;};'use strict';var _=require(_0xe184('0x0'));var moment=require(_0xe184('0x1'));var Redis=require(_0xe184('0x2'));var util=require(_0xe184('0x3'));var config=require(_0xe184('0x4'));var db=require(_0xe184('0x5'))['db'];var logger=require(_0xe184('0x6'))('schedule');config[_0xe184('0x7')]=_[_0xe184('0x8')](config[_0xe184('0x7')],{'host':_0xe184('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x4d0a6e=[];return db[_0xe184('0xa')]['findAll']({'raw':!![],'attributes':['id',_0xe184('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xe184('0xc')](0x18,_0xe184('0xd'))}}})[_0xe184('0xe')](function(_0x2373bf){if(_0x2373bf&&_0x2373bf[_0xe184('0xf')]){_0x4d0a6e=_[_0xe184('0x10')](_0x2373bf||[],'id');logger['info']('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x4d0a6e[_0xe184('0x11')]());return db[_0xe184('0xa')][_0xe184('0x12')]({'closeReason':_0xe184('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xe184('0x14')](_0xe184('0x15'))},{'where':{'id':_0x4d0a6e}});}})[_0xe184('0xe')](function(){if(_0x4d0a6e&&_0x4d0a6e['length']){logger[_0xe184('0x16')](_0xe184('0x17'),_0x4d0a6e[_0xe184('0x11')]());for(var _0x4b63d2=0x0;_0x4b63d2<_0x4d0a6e[_0xe184('0xf')];_0x4b63d2++){io[_0xe184('0x18')]('whatsappInteraction:update',{'id':_0x4d0a6e[_0x4b63d2],'closed':!![]});}}})['catch'](function(_0x216ceb){logger[_0xe184('0x19')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x216ceb?util[_0xe184('0x1a')](_0x216ceb,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 1f9893d..b2d7fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4522=['bulkCreate','log','finished\x20populating','CmHopper','hopper1','hopper2','../mysqldb','Innocenzo','@xcally.com','now','push','Biondo','CmContact','destroy','then'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x4522,0xe7));var _0x2452=function(_0x3ce983,_0x214d12){_0x3ce983=_0x3ce983-0x0;var _0x280ab4=_0x4522[_0x3ce983];return _0x280ab4;};'use strict';var util=require('util');var db=require(_0x2452('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x2452('0x1')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x2452('0x2')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x2452('0x3')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2452('0x3')](),'updatedAt':Date[_0x2452('0x3')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x2452('0x4')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x2452('0x5')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x2452('0x2')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x2452('0x4')]({'id':i,'active':![],'scheduledat':Date[_0x2452('0x3')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x2452('0x3')](),'updatedAt':Date[_0x2452('0x3')]()});}db[_0x2452('0x6')][_0x2452('0x7')]({'where':{}})[_0x2452('0x8')](function(){return db[_0x2452('0x6')][_0x2452('0x9')](contacts);})[_0x2452('0x8')](function(){console[_0x2452('0xa')](_0x2452('0xb'),'contacts1');return db[_0x2452('0xc')][_0x2452('0x7')]({'where':{}});})[_0x2452('0x8')](function(){return db[_0x2452('0xc')][_0x2452('0x9')](hopper);})[_0x2452('0x8')](function(){console[_0x2452('0xa')](_0x2452('0xb'),_0x2452('0xd'));return db['CmContact'][_0x2452('0x9')](contacts2);})['then'](function(){console[_0x2452('0xa')](_0x2452('0xb'),'contacts2');return db['CmHopper'][_0x2452('0x9')](hopper2);})[_0x2452('0x8')](function(){console[_0x2452('0xa')](_0x2452('0xb'),_0x2452('0xe'));})['catch'](function(_0x21937a){console['log'](_0x21937a);});
\ No newline at end of file
+var _0xd29f=['destroy','hopper1','contacts2','hopper2','Innocenzo','Biondo','innocenzo.biondo','push','now','CmContact','bulkCreate','then','log','finished\x20populating','contacts1','CmHopper'];(function(_0x3bc4ea,_0x29be61){var _0x58b9a2=function(_0x3c7fa4){while(--_0x3c7fa4){_0x3bc4ea['push'](_0x3bc4ea['shift']());}};_0x58b9a2(++_0x29be61);}(_0xd29f,0x174));var _0xfd29=function(_0x1e46a5,_0x5b094e){_0x1e46a5=_0x1e46a5-0x0;var _0x35a2cf=_0xd29f[_0x1e46a5];return _0x35a2cf;};'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['push']({'id':i,'firstName':_0xfd29('0x0')+i,'lastName':_0xfd29('0x1')+i,'phone':0xf879fb460+i,'email':_0xfd29('0x2')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xfd29('0x3')]({'id':i,'active':![],'scheduledat':Date[_0xfd29('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xfd29('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xfd29('0x3')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xfd29('0x1')+i,'phone':0xf879fb460+i,'email':_0xfd29('0x2')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xfd29('0x3')]({'id':i,'active':![],'scheduledat':Date[_0xfd29('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xfd29('0x4')](),'updatedAt':Date[_0xfd29('0x4')]()});}db[_0xfd29('0x5')]['destroy']({'where':{}})['then'](function(){return db[_0xfd29('0x5')][_0xfd29('0x6')](contacts);})[_0xfd29('0x7')](function(){console[_0xfd29('0x8')](_0xfd29('0x9'),_0xfd29('0xa'));return db[_0xfd29('0xb')][_0xfd29('0xc')]({'where':{}});})[_0xfd29('0x7')](function(){return db[_0xfd29('0xb')][_0xfd29('0x6')](hopper);})[_0xfd29('0x7')](function(){console[_0xfd29('0x8')](_0xfd29('0x9'),_0xfd29('0xd'));return db[_0xfd29('0x5')][_0xfd29('0x6')](contacts2);})['then'](function(){console[_0xfd29('0x8')]('finished\x20populating',_0xfd29('0xe'));return db[_0xfd29('0xb')][_0xfd29('0x6')](hopper2);})[_0xfd29('0x7')](function(){console['log'](_0xfd29('0x9'),_0xfd29('0xf'));})['catch'](function(_0x477236){console['log'](_0x477236);});
\ No newline at end of file
index 02e1899..c61d2f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8736=['wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','util','../mysqldb','push','agent','%s%s','format','password','friend','udp'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x8736,0x167));var _0x6873=function(_0x244b33,_0x256e72){_0x244b33=_0x244b33-0x0;var _0x77026d=_0x8736[_0x244b33];return _0x77026d;};'use strict';var util=require(_0x6873('0x0'));var db=require(_0x6873('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x6873('0x2')]({'name':util['format']('%s%s',_0x6873('0x3'),i),'fullname':util['format'](_0x6873('0x4'),_0x6873('0x3'),i),'email':util[_0x6873('0x5')]('%s%s@xcally.com','agent',i),'role':_0x6873('0x3'),'password':_0x6873('0x6'),'internal':0xfa0+i,'type':_0x6873('0x7'),'transport':[_0x6873('0x8'),'ws',_0x6873('0x9')],'disallow':[_0x6873('0xa')],'allow':[_0x6873('0xb')],'defaultuser':util['format'](_0x6873('0x4'),_0x6873('0x3'),i),'encryption':_0x6873('0xc'),'avpf':'yes','force_avp':_0x6873('0xc'),'icesupport':_0x6873('0xc'),'dtlsenable':_0x6873('0xc'),'dtlsverify':'no','dtlscertfile':_0x6873('0xd'),'dtlsprivatekey':_0x6873('0xe'),'dtlssetup':_0x6873('0xf'),'callerid':util['format'](_0x6873('0x10'),util[_0x6873('0x5')](_0x6873('0x4'),_0x6873('0x3'),i),0xfa0+i)});}db[_0x6873('0x11')][_0x6873('0x12')](users)[_0x6873('0x13')](function(){console[_0x6873('0x14')](_0x6873('0x15'));})[_0x6873('0x16')](function(_0x4c0bf7){console['log'](_0x4c0bf7);});
\ No newline at end of file
+var _0xf595=['../mysqldb','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','util'];(function(_0x36c375,_0x492cc2){var _0x396017=function(_0x58c022){while(--_0x58c022){_0x36c375['push'](_0x36c375['shift']());}};_0x396017(++_0x492cc2);}(_0xf595,0xfb));var _0x5f59=function(_0x4b3f04,_0x18ef21){_0x4b3f04=_0x4b3f04-0x0;var _0xb45f4a=_0xf595[_0x4b3f04];return _0xb45f4a;};'use strict';var util=require(_0x5f59('0x0'));var db=require(_0x5f59('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format'](_0x5f59('0x2'),_0x5f59('0x3'),i),'fullname':util[_0x5f59('0x4')](_0x5f59('0x2'),_0x5f59('0x3'),i),'email':util[_0x5f59('0x4')](_0x5f59('0x5'),'agent',i),'role':_0x5f59('0x3'),'password':_0x5f59('0x6'),'internal':0xfa0+i,'type':_0x5f59('0x7'),'transport':[_0x5f59('0x8'),'ws',_0x5f59('0x9')],'disallow':[_0x5f59('0xa')],'allow':[_0x5f59('0xb')],'defaultuser':util['format'](_0x5f59('0x2'),_0x5f59('0x3'),i),'encryption':_0x5f59('0xc'),'avpf':_0x5f59('0xc'),'force_avp':_0x5f59('0xc'),'icesupport':_0x5f59('0xc'),'dtlsenable':_0x5f59('0xc'),'dtlsverify':'no','dtlscertfile':_0x5f59('0xd'),'dtlsprivatekey':_0x5f59('0xe'),'dtlssetup':_0x5f59('0xf'),'callerid':util['format'](_0x5f59('0x10'),util['format']('%s%s',_0x5f59('0x3'),i),0xfa0+i)});}db[_0x5f59('0x11')][_0x5f59('0x12')](users)[_0x5f59('0x13')](function(){console[_0x5f59('0x14')]('add\x20user');})['catch'](function(_0x31aded){console['log'](_0x31aded);});
\ No newline at end of file
index aa84c14..fd8f34f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd906=['user_has_fax_interactions:remove','removeSmsInteractions','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','remoteAddress','connectedAt','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','bluebird','../mysqldb','./environment','name','Agents','role','agent','type','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','where','telephone','Campaign','format','%s:queue:%s','handshake','query','User','find','userProfileId','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','ChatQueues','OpenchannelQueues','getChatQueues','getOpenchannelQueues','getWhatsappQueues','all','length','fax','sms','mail','openchannel','whatsapp','trunk:%s','user:%s','map','removeChatInteractions','emit','leave','removeMailInteractions','user_has_mail_interactions:remove'];(function(_0x213ced,_0x334c10){var _0xf3ab45=function(_0x49c246){while(--_0x49c246){_0x213ced['push'](_0x213ced['shift']());}};_0xf3ab45(++_0x334c10);}(_0xd906,0x6b));var _0x6d90=function(_0x92a418,_0xb7558a){_0x92a418=_0x92a418-0x0;var _0x3eb3f1=_0xd906[_0x92a418];return _0x3eb3f1;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x6d90('0x0'));var db=require(_0x6d90('0x1'))['db'];var config=require(_0x6d90('0x2'));var queryQueues={'attributes':['id',_0x6d90('0x3')],'include':[{'as':_0x6d90('0x4'),'model':db['User'],'attributes':['id',_0x6d90('0x3'),_0x6d90('0x5')],'raw':!![],'where':{'role':_0x6d90('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6d90('0x3')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x6d90('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x6d90('0x3')],'where':{'role':_0x6d90('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6d90('0x3'),_0x6d90('0x7')],'where':{'type':'ivr'}};function getAssociatedResources(_0x5f272f,_0x551bfb,_0x41c0a3){return db[_0x6d90('0x8')][_0x6d90('0x9')]({'where':{'name':_0x5f272f,'userProfileId':_0x551bfb},'raw':!![]})[_0x6d90('0xa')](function(_0x39f19d){if(_0x39f19d){if(_0x39f19d[_0x6d90('0xb')]){switch(_0x5f272f){case _0x6d90('0xc'):case'ChatQueues':case _0x6d90('0xd'):case'SmsQueues':case _0x6d90('0xe'):case'OpenchannelQueues':case _0x6d90('0xf'):return db[_0x41c0a3][_0x6d90('0x10')](queryQueues);case _0x6d90('0x11'):return db[_0x41c0a3][_0x6d90('0x10')](queryTelephones);case _0x6d90('0x12'):return db[_0x41c0a3][_0x6d90('0x10')](queryTrunks);case _0x6d90('0x13'):return db[_0x41c0a3][_0x6d90('0x10')](queryCampaigns);}}else{return db['UserProfileResource'][_0x6d90('0x10')]({'attributes':[_0x6d90('0x14')],'where':{'sectionId':_0x39f19d['id']},'raw':!![]})[_0x6d90('0xa')](function(_0x2c0b05){if(_0x2c0b05){var _0x1f128f={'where':{'id':_['map'](_0x2c0b05,_0x6d90('0x14'))},'raw':!![]};switch(_0x41c0a3){case'User':_0x1f128f[_0x6d90('0x15')]['role']=_0x6d90('0x16');break;case _0x6d90('0x17'):_0x1f128f[_0x6d90('0x15')][_0x6d90('0x7')]='ivr';break;}return db[_0x41c0a3]['findAll'](_0x1f128f);}else{return[];}});}}else{return[];}})[_0x6d90('0xa')](function(_0x54a720){return _0x54a720;});}function joinOrLeaveQueues(_0x3aaa84,_0x26374e,_0x4f97ea,_0x47fbbf){_0x3aaa84[_0x26374e](util[_0x6d90('0x18')](_0x6d90('0x19'),_0x4f97ea,_0x47fbbf[_0x6d90('0x3')]));if(_0x47fbbf['Agents']){for(var _0x5cf8dc=0x0;_0x5cf8dc<_0x47fbbf['Agents']['length'];_0x5cf8dc+=0x1){_0x3aaa84[_0x26374e](util[_0x6d90('0x18')]('user:%s',_0x47fbbf[_0x6d90('0x4')][_0x5cf8dc][_0x6d90('0x3')]));}}}function joinOrLeave(_0x1bec18,_0x470b5c,_0x4378ca){var _0x3dcccd;if(_0x1bec18[_0x6d90('0x1a')][_0x6d90('0x1b')]['id']){db[_0x6d90('0x1c')][_0x6d90('0x1d')]({'attributes':['id',_0x6d90('0x3'),'role',_0x6d90('0x1e')],'where':{'id':_0x1bec18[_0x6d90('0x1a')][_0x6d90('0x1b')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x6d90('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x6d90('0x20')],'as':_0x6d90('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x6d90('0x22')],'as':_0x6d90('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x6d90('0x24')],'as':_0x6d90('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x6d90('0x26')],'as':_0x6d90('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x6d90('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0x5e1ab7){if(_0x5e1ab7){_0x3dcccd=_0x5e1ab7;_0x1bec18[_0x470b5c](util[_0x6d90('0x18')]('user:%s',_0x5e1ab7[_0x6d90('0x3')]));var _0x6a4f09=[];switch(_0x5e1ab7[_0x6d90('0x5')]){case _0x6d90('0x29'):_0x1bec18[_0x470b5c](_0x6d90('0x2a'));_0x1bec18[_0x470b5c](_0x6d90('0x2b'));if(queryQueues[_0x6d90('0x2c')](_0x6d90('0x2d'))){delete queryQueues[_0x6d90('0x2d')];}_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x2f')][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db['ChatQueue'][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db['FaxQueue'][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db['SmsQueue'][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x30')][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x31')][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x32')][_0x6d90('0x10')](queryQueues));_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x1c')][_0x6d90('0x10')](queryTelephones));_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x33')][_0x6d90('0x10')](queryTrunks));_0x6a4f09[_0x6d90('0x2e')](db[_0x6d90('0x17')]['findAll'](queryCampaigns));_0x6a4f09[_0x6d90('0x2e')](db['User'][_0x6d90('0x10')](queryAgents));break;case _0x6d90('0x34'):_0x1bec18[_0x470b5c]('voice:inbound');_0x1bec18[_0x470b5c](_0x6d90('0x2b'));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources('VoiceQueues',_0x5e1ab7[_0x6d90('0x1e')],_0x6d90('0x2f')));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources(_0x6d90('0x35'),_0x5e1ab7[_0x6d90('0x1e')],'ChatQueue'));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources(_0x6d90('0xd'),_0x5e1ab7[_0x6d90('0x1e')],'FaxQueue'));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources('SmsQueues',_0x5e1ab7[_0x6d90('0x1e')],'SmsQueue'));_0x6a4f09['push'](getAssociatedResources(_0x6d90('0xe'),_0x5e1ab7[_0x6d90('0x1e')],_0x6d90('0x30')));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources(_0x6d90('0x36'),_0x5e1ab7[_0x6d90('0x1e')],_0x6d90('0x31')));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources(_0x6d90('0xf'),_0x5e1ab7[_0x6d90('0x1e')],'WhatsappQueue'));_0x6a4f09['push'](getAssociatedResources('Telephones',_0x5e1ab7['userProfileId'],'User'));_0x6a4f09['push'](getAssociatedResources(_0x6d90('0x12'),_0x5e1ab7['userProfileId'],_0x6d90('0x33')));_0x6a4f09[_0x6d90('0x2e')](getAssociatedResources(_0x6d90('0x13'),_0x5e1ab7[_0x6d90('0x1e')],'Campaign'));_0x6a4f09[_0x6d90('0x2e')](db['User'][_0x6d90('0x10')](queryAgents));break;case _0x6d90('0x6'):_0x1bec18[_0x470b5c](_0x6d90('0x2a'));_0x1bec18[_0x470b5c](_0x6d90('0x2b'));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7['getVoiceQueues']({'attributes':['id',_0x6d90('0x3')]}));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7[_0x6d90('0x37')]({'attributes':['id',_0x6d90('0x3')]}));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7['getFaxQueues']({'attributes':['id',_0x6d90('0x3')]}));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7['getSmsQueues']({'attributes':['id',_0x6d90('0x3')]}));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7['getMailQueues']({'attributes':['id','name']}));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7[_0x6d90('0x38')]({'attributes':['id',_0x6d90('0x3')]}));_0x6a4f09[_0x6d90('0x2e')](_0x5e1ab7[_0x6d90('0x39')]({'attributes':['id',_0x6d90('0x3')]}));break;}return BPromise[_0x6d90('0x3a')](_0x6a4f09);}})[_0x6d90('0xa')](function(_0xb71ce2){if(_0xb71ce2&&_0xb71ce2[_0x6d90('0x3b')]){for(var _0x2e1aee=0x0;_0x2e1aee<_0xb71ce2['length'];_0x2e1aee+=0x1){for(var _0x2d9af5=0x0;_0x2d9af5<_0xb71ce2[_0x2e1aee]['length'];_0x2d9af5+=0x1){switch(_0x2e1aee){case 0x0:joinOrLeaveQueues(_0x1bec18,_0x470b5c,'voice',_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x1:joinOrLeaveQueues(_0x1bec18,_0x470b5c,'chat',_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x2:joinOrLeaveQueues(_0x1bec18,_0x470b5c,_0x6d90('0x3c'),_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x3:joinOrLeaveQueues(_0x1bec18,_0x470b5c,_0x6d90('0x3d'),_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x4:joinOrLeaveQueues(_0x1bec18,_0x470b5c,_0x6d90('0x3e'),_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x5:joinOrLeaveQueues(_0x1bec18,_0x470b5c,_0x6d90('0x3f'),_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x6:joinOrLeaveQueues(_0x1bec18,_0x470b5c,_0x6d90('0x40'),_0xb71ce2[_0x2e1aee][_0x2d9af5]);break;case 0x7:if(_0x3dcccd[_0x6d90('0x5')]!==_0x6d90('0x6'))_0x1bec18[_0x470b5c](util[_0x6d90('0x18')]('telephone:%s',_0xb71ce2[_0x2e1aee][_0x2d9af5][_0x6d90('0x3')]));break;case 0x8:if(_0x3dcccd[_0x6d90('0x5')]!=='agent')_0x1bec18[_0x470b5c](util[_0x6d90('0x18')](_0x6d90('0x41'),_0xb71ce2[_0x2e1aee][_0x2d9af5][_0x6d90('0x3')]));break;case 0x9:if(_0x3dcccd[_0x6d90('0x5')]!==_0x6d90('0x6'))_0x1bec18[_0x470b5c](util[_0x6d90('0x18')]('campaign:%s:%s',_0xb71ce2[_0x2e1aee][_0x2d9af5][_0x6d90('0x7')],_0xb71ce2[_0x2e1aee][_0x2d9af5][_0x6d90('0x3')]));break;case 0xa:_0x1bec18[_0x470b5c](util['format'](_0x6d90('0x42'),_0xb71ce2[_0x2e1aee][_0x2d9af5][_0x6d90('0x3')]));break;}}}}})[_0x6d90('0xa')](function(){if(_0x470b5c==='leave'){var _0x35a69b=_[_0x6d90('0x43')](_0x3dcccd[_0x6d90('0x1f')],'id');return _0x3dcccd[_0x6d90('0x44')](_0x35a69b)[_0x6d90('0xa')](function(){for(var _0x573a1a=0x0;_0x573a1a<_0x35a69b['length'];_0x573a1a+=0x1){_0x4378ca[_0x6d90('0x45')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x35a69b[_0x573a1a]),'UserId':Number(_0x3dcccd['id'])});}});}})['then'](function(){if(_0x470b5c===_0x6d90('0x46')){var _0x46d0ad=_[_0x6d90('0x43')](_0x3dcccd['MailInteractions'],'id');return _0x3dcccd[_0x6d90('0x47')](_0x46d0ad)[_0x6d90('0xa')](function(){for(var _0x37de50=0x0;_0x37de50<_0x46d0ad[_0x6d90('0x3b')];_0x37de50+=0x1){_0x4378ca[_0x6d90('0x45')](_0x6d90('0x48'),{'MailInteractionId':Number(_0x46d0ad[_0x37de50]),'UserId':Number(_0x3dcccd['id'])});}});}})[_0x6d90('0xa')](function(){if(_0x470b5c===_0x6d90('0x46')){var _0x1886ed=_[_0x6d90('0x43')](_0x3dcccd[_0x6d90('0x23')],'id');return _0x3dcccd['removeFaxInteractions'](_0x1886ed)['then'](function(){for(var _0x55d5a3=0x0;_0x55d5a3<_0x1886ed[_0x6d90('0x3b')];_0x55d5a3+=0x1){_0x4378ca[_0x6d90('0x45')](_0x6d90('0x49'),{'FaxInteractionId':Number(_0x1886ed[_0x55d5a3]),'UserId':Number(_0x3dcccd['id'])});}});}})[_0x6d90('0xa')](function(){if(_0x470b5c===_0x6d90('0x46')){var _0x380349=_[_0x6d90('0x43')](_0x3dcccd['SmsInteractions'],'id');return _0x3dcccd[_0x6d90('0x4a')](_0x380349)[_0x6d90('0xa')](function(){for(var _0x1412ad=0x0;_0x1412ad<_0x380349['length'];_0x1412ad+=0x1){_0x4378ca[_0x6d90('0x45')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x380349[_0x1412ad]),'UserId':Number(_0x3dcccd['id'])});}});}})['then'](function(){if(_0x470b5c===_0x6d90('0x46')){var _0x5e234=_[_0x6d90('0x43')](_0x3dcccd[_0x6d90('0x27')],'id');return _0x3dcccd['removeOpenchannelInteractions'](_0x5e234)['then'](function(){for(var _0x201acc=0x0;_0x201acc<_0x5e234[_0x6d90('0x3b')];_0x201acc+=0x1){_0x4378ca[_0x6d90('0x45')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5e234[_0x201acc]),'UserId':Number(_0x3dcccd['id'])});}});}})['then'](function(){if(_0x470b5c===_0x6d90('0x46')){var _0x264d65=_['map'](_0x3dcccd[_0x6d90('0x4b')],'id');return _0x3dcccd['removeWhatsappInteractions'](_0x264d65)[_0x6d90('0xa')](function(){for(var _0x300380=0x0;_0x300380<_0x264d65['length'];_0x300380+=0x1){_0x4378ca[_0x6d90('0x45')](_0x6d90('0x4c'),{'WhatsappInteractionId':Number(_0x264d65[_0x300380]),'UserId':Number(_0x3dcccd['id'])});}});}})[_0x6d90('0x4d')](function(_0x22e1f1){_0x1bec18['log'](_0x22e1f1);});}}function onDisconnect(_0x48b4f4,_0x45dff8){joinOrLeave(_0x48b4f4,'leave',_0x45dff8);}function onConnect(_0x3e87ca){joinOrLeave(_0x3e87ca,_0x6d90('0x4e'));}exports[_0x6d90('0x4f')]=function(_0x4b145c){_0x4b145c['on'](_0x6d90('0x50'),function(_0x581faa){_0x581faa['setMaxListeners'](0x0);_0x581faa['address']=_0x581faa['request'][_0x6d90('0x50')][_0x6d90('0x51')]+':'+_0x581faa['request'][_0x6d90('0x50')]['remotePort'];_0x581faa[_0x6d90('0x52')]=new Date();_0x581faa[_0x6d90('0x53')]=function(_0x295670){console[_0x6d90('0x53')](_0x6d90('0x54')+_0x581faa[_0x6d90('0x55')]['name']+'['+_0x581faa[_0x6d90('0x56')]+']',_0x295670);};_0x581faa['on'](_0x6d90('0x57'),function(){onDisconnect(_0x581faa,_0x4b145c);_0x581faa['log'](_0x6d90('0x58'));});onConnect(_0x581faa);_0x581faa[_0x6d90('0x53')](_0x6d90('0x59'));});};
\ No newline at end of file
+var _0xa46e=['Campaign','user','SmsQueues','WhatsappQueues','WhatsappQueue','Trunk','agent','getVoiceQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','leave','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','SmsInteractions','emit','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','request','remotePort','SocketIO\x20','nsp','CONNECTED','lodash','util','../mysqldb','./environment','name','User','role','type','ivr','then','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','format','Agents','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue'];(function(_0x60286b,_0x3247c1){var _0x5dff69=function(_0x4ecfcf){while(--_0x4ecfcf){_0x60286b['push'](_0x60286b['shift']());}};_0x5dff69(++_0x3247c1);}(_0xa46e,0x8a));var _0xea46=function(_0x492535,_0x46524a){_0x492535=_0x492535-0x0;var _0x256620=_0xa46e[_0x492535];return _0x256620;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var BPromise=require('bluebird');var db=require(_0xea46('0x2'))['db'];var config=require(_0xea46('0x3'));var queryQueues={'attributes':['id',_0xea46('0x4')],'include':[{'as':'Agents','model':db[_0xea46('0x5')],'attributes':['id','name',_0xea46('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xea46('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xea46('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xea46('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xea46('0x4'),_0xea46('0x7')],'where':{'type':_0xea46('0x8')}};function getAssociatedResources(_0x3db7a2,_0x468322,_0x4cf206){return db['UserProfileSection']['findOne']({'where':{'name':_0x3db7a2,'userProfileId':_0x468322},'raw':!![]})[_0xea46('0x9')](function(_0x45550a){if(_0x45550a){if(_0x45550a['autoAssociation']){switch(_0x3db7a2){case _0xea46('0xa'):case _0xea46('0xb'):case _0xea46('0xc'):case'SmsQueues':case _0xea46('0xd'):case _0xea46('0xe'):case'WhatsappQueues':return db[_0x4cf206][_0xea46('0xf')](queryQueues);case _0xea46('0x10'):return db[_0x4cf206]['findAll'](queryTelephones);case _0xea46('0x11'):return db[_0x4cf206]['findAll'](queryTrunks);case _0xea46('0x12'):return db[_0x4cf206][_0xea46('0xf')](queryCampaigns);}}else{return db[_0xea46('0x13')][_0xea46('0xf')]({'attributes':[_0xea46('0x14')],'where':{'sectionId':_0x45550a['id']},'raw':!![]})[_0xea46('0x9')](function(_0x81ee45){if(_0x81ee45){var _0x20a79c={'where':{'id':_[_0xea46('0x15')](_0x81ee45,'resourceId')},'raw':!![]};switch(_0x4cf206){case _0xea46('0x5'):_0x20a79c[_0xea46('0x16')][_0xea46('0x6')]='telephone';break;case'Campaign':_0x20a79c[_0xea46('0x16')][_0xea46('0x7')]='ivr';break;}return db[_0x4cf206]['findAll'](_0x20a79c);}else{return[];}});}}else{return[];}})[_0xea46('0x9')](function(_0x9b7d04){return _0x9b7d04;});}function joinOrLeaveQueues(_0x4ff93d,_0x40316b,_0x16ae38,_0x1adba1){_0x4ff93d[_0x40316b](util[_0xea46('0x17')]('%s:queue:%s',_0x16ae38,_0x1adba1[_0xea46('0x4')]));if(_0x1adba1['Agents']){for(var _0x515e32=0x0;_0x515e32<_0x1adba1[_0xea46('0x18')]['length'];_0x515e32+=0x1){_0x4ff93d[_0x40316b](util['format']('user:%s',_0x1adba1[_0xea46('0x18')][_0x515e32][_0xea46('0x4')]));}}}function joinOrLeave(_0x3d1850,_0x5beb44,_0x16f8fa){var _0x59b10d;if(_0x3d1850[_0xea46('0x19')][_0xea46('0x1a')]['id']){db['User'][_0xea46('0x1b')]({'attributes':['id','name',_0xea46('0x6'),_0xea46('0x1c')],'where':{'id':_0x3d1850[_0xea46('0x19')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xea46('0x1d'),'attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x1e')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x1f')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x20')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x21')],'as':_0xea46('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x23')],'as':_0xea46('0x24'),'attributes':['id'],'raw':!![]}]})[_0xea46('0x9')](function(_0x174345){if(_0x174345){_0x59b10d=_0x174345;_0x3d1850[_0x5beb44](util['format'](_0xea46('0x25'),_0x174345[_0xea46('0x4')]));var _0x200e10=[];switch(_0x174345['role']){case _0xea46('0x26'):_0x3d1850[_0x5beb44](_0xea46('0x27'));_0x3d1850[_0x5beb44](_0xea46('0x28'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x200e10[_0xea46('0x29')](db[_0xea46('0x2a')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2b')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2c')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2d')]['findAll'](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2e')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2f')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db['WhatsappQueue'][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryTelephones));_0x200e10[_0xea46('0x29')](db['Trunk']['findAll'](queryTrunks));_0x200e10[_0xea46('0x29')](db[_0xea46('0x30')]['findAll'](queryCampaigns));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryAgents));break;case _0xea46('0x31'):_0x3d1850[_0x5beb44]('voice:inbound');_0x3d1850[_0x5beb44]('voice:outbound');_0x200e10[_0xea46('0x29')](getAssociatedResources('VoiceQueues',_0x174345[_0xea46('0x1c')],_0xea46('0x2a')));_0x200e10['push'](getAssociatedResources(_0xea46('0xb'),_0x174345[_0xea46('0x1c')],'ChatQueue'));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0xc'),_0x174345['userProfileId'],_0xea46('0x2c')));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0x32'),_0x174345[_0xea46('0x1c')],'SmsQueue'));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0xd'),_0x174345[_0xea46('0x1c')],_0xea46('0x2e')));_0x200e10[_0xea46('0x29')](getAssociatedResources('OpenchannelQueues',_0x174345[_0xea46('0x1c')],_0xea46('0x2f')));_0x200e10['push'](getAssociatedResources(_0xea46('0x33'),_0x174345[_0xea46('0x1c')],_0xea46('0x34')));_0x200e10[_0xea46('0x29')](getAssociatedResources('Telephones',_0x174345[_0xea46('0x1c')],_0xea46('0x5')));_0x200e10[_0xea46('0x29')](getAssociatedResources('Trunks',_0x174345[_0xea46('0x1c')],_0xea46('0x35')));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0x12'),_0x174345[_0xea46('0x1c')],_0xea46('0x30')));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryAgents));break;case _0xea46('0x36'):_0x3d1850[_0x5beb44](_0xea46('0x27'));_0x3d1850[_0x5beb44](_0xea46('0x28'));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x37')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10['push'](_0x174345['getChatQueues']({'attributes':['id',_0xea46('0x4')]}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x38')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10['push'](_0x174345['getSmsQueues']({'attributes':['id','name']}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x39')]({'attributes':['id','name']}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x3a')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x3b')]({'attributes':['id','name']}));break;}return BPromise[_0xea46('0x3c')](_0x200e10);}})['then'](function(_0x22d9a2){if(_0x22d9a2&&_0x22d9a2[_0xea46('0x3d')]){for(var _0x45ee37=0x0;_0x45ee37<_0x22d9a2[_0xea46('0x3d')];_0x45ee37+=0x1){for(var _0x9c26cf=0x0;_0x9c26cf<_0x22d9a2[_0x45ee37][_0xea46('0x3d')];_0x9c26cf+=0x1){switch(_0x45ee37){case 0x0:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x3e'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x1:joinOrLeaveQueues(_0x3d1850,_0x5beb44,'chat',_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x2:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x3f'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x3:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x40'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x4:joinOrLeaveQueues(_0x3d1850,_0x5beb44,'mail',_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x5:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x41'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x6:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x42'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x7:if(_0x59b10d[_0xea46('0x6')]!=='agent')_0x3d1850[_0x5beb44](util['format'](_0xea46('0x43'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;case 0x8:if(_0x59b10d[_0xea46('0x6')]!==_0xea46('0x36'))_0x3d1850[_0x5beb44](util[_0xea46('0x17')](_0xea46('0x44'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;case 0x9:if(_0x59b10d[_0xea46('0x6')]!==_0xea46('0x36'))_0x3d1850[_0x5beb44](util[_0xea46('0x17')]('campaign:%s:%s',_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x7')],_0x22d9a2[_0x45ee37][_0x9c26cf]['name']));break;case 0xa:_0x3d1850[_0x5beb44](util[_0xea46('0x17')](_0xea46('0x25'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;}}}}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x125abb=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x1d')],'id');return _0x59b10d['removeChatInteractions'](_0x125abb)['then'](function(){for(var _0x6584e9=0x0;_0x6584e9<_0x125abb[_0xea46('0x3d')];_0x6584e9+=0x1){_0x16f8fa['emit'](_0xea46('0x46'),{'ChatInteractionId':Number(_0x125abb[_0x6584e9]),'UserId':Number(_0x59b10d['id'])});}});}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x3830fe=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x47')],'id');return _0x59b10d[_0xea46('0x48')](_0x3830fe)[_0xea46('0x9')](function(){for(var _0x391eae=0x0;_0x391eae<_0x3830fe['length'];_0x391eae+=0x1){_0x16f8fa['emit'](_0xea46('0x49'),{'MailInteractionId':Number(_0x3830fe[_0x391eae]),'UserId':Number(_0x59b10d['id'])});}});}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x16022f=_[_0xea46('0x15')](_0x59b10d['FaxInteractions'],'id');return _0x59b10d[_0xea46('0x4a')](_0x16022f)['then'](function(){for(var _0xc12018=0x0;_0xc12018<_0x16022f[_0xea46('0x3d')];_0xc12018+=0x1){_0x16f8fa['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x16022f[_0xc12018]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x3199f2=_['map'](_0x59b10d[_0xea46('0x4b')],'id');return _0x59b10d['removeSmsInteractions'](_0x3199f2)[_0xea46('0x9')](function(){for(var _0x5944ba=0x0;_0x5944ba<_0x3199f2[_0xea46('0x3d')];_0x5944ba+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x4d'),{'SmsInteractionId':Number(_0x3199f2[_0x5944ba]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x4c5beb=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x22')],'id');return _0x59b10d[_0xea46('0x4e')](_0x4c5beb)['then'](function(){for(var _0x4e75a7=0x0;_0x4e75a7<_0x4c5beb[_0xea46('0x3d')];_0x4e75a7+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x4f'),{'OpenchannelInteractionId':Number(_0x4c5beb[_0x4e75a7]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x175a42=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x24')],'id');return _0x59b10d[_0xea46('0x50')](_0x175a42)[_0xea46('0x9')](function(){for(var _0xa307cf=0x0;_0xa307cf<_0x175a42[_0xea46('0x3d')];_0xa307cf+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x51'),{'WhatsappInteractionId':Number(_0x175a42[_0xa307cf]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x52')](function(_0x487b4e){_0x3d1850[_0xea46('0x53')](_0x487b4e);});}}function onDisconnect(_0x2c248c,_0x397e98){joinOrLeave(_0x2c248c,_0xea46('0x45'),_0x397e98);}function onConnect(_0x5b353f){joinOrLeave(_0x5b353f,_0xea46('0x54'));}exports[_0xea46('0x55')]=function(_0x5b5142){_0x5b5142['on'](_0xea46('0x56'),function(_0x419f86){_0x419f86['setMaxListeners'](0x0);_0x419f86[_0xea46('0x57')]=_0x419f86[_0xea46('0x58')][_0xea46('0x56')]['remoteAddress']+':'+_0x419f86[_0xea46('0x58')][_0xea46('0x56')][_0xea46('0x59')];_0x419f86['connectedAt']=new Date();_0x419f86['log']=function(_0x587bd3){console[_0xea46('0x53')](_0xea46('0x5a')+_0x419f86[_0xea46('0x5b')][_0xea46('0x4')]+'['+_0x419f86[_0xea46('0x57')]+']',_0x587bd3);};_0x419f86['on']('disconnect',function(){onDisconnect(_0x419f86,_0x5b5142);_0x419f86[_0xea46('0x53')]('DISCONNECTED');});onConnect(_0x419f86);_0x419f86[_0xea46('0x53')](_0xea46('0x5c'));});};
\ No newline at end of file
index cc32cae..7599bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b3=['Sequelize','find','SIP/%s','User','default','length','hasOwnProperty','model','hook','condition','util','../../mysqldb','jayson/promise','triggers','lodash','client','http','ChatInteraction','afterCreate','newinteraction','afterUpdate','Chat','newmessage','SmsInteraction','Sms','SmsMessage','Whatsapp','WhatsappInteraction','closedinteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','substatus','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','catch','get','channel','event','sequelize','query','QueryTypes','SELECT','contact','UserId','name','fullname','email','internal','interface','format','agent','incomingmessage','outgoingmessage','motionChannel','opened','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','changed','closed'];(function(_0x5342f9,_0x4b6d2a){var _0x4025aa=function(_0x393ffb){while(--_0x393ffb){_0x5342f9['push'](_0x5342f9['shift']());}};_0x4025aa(++_0x4b6d2a);}(_0xa4b3,0x96));var _0x3a4b=function(_0x226601,_0xea7e6f){_0x226601=_0x226601-0x0;var _0x5bc026=_0xa4b3[_0x226601];return _0x5bc026;};'use strict';var util=require(_0x3a4b('0x0'));var db=require(_0x3a4b('0x1'))['db'];var jayson=require(_0x3a4b('0x2'));var logger=require('../logger')(_0x3a4b('0x3'));var _=require(_0x3a4b('0x4'));var client=jayson[_0x3a4b('0x5')][_0x3a4b('0x6')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x3a4b('0x7'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0x9'),'callback':afterCreate},{'channel':'Chat','model':'ChatInteraction','event':_0x3a4b('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x3a4b('0xb'),'model':'ChatMessage','event':_0x3a4b('0x8'),'condition':_0x3a4b('0xc'),'callback':afterCreateMessage},{'channel':'Sms','model':_0x3a4b('0xd'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0x9'),'callback':afterCreate},{'channel':_0x3a4b('0xe'),'model':_0x3a4b('0xd'),'event':_0x3a4b('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':_0x3a4b('0xf'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0xc'),'callback':afterCreateMessage},{'channel':_0x3a4b('0x10'),'model':'WhatsappInteraction','event':_0x3a4b('0x8'),'condition':_0x3a4b('0x9'),'callback':afterCreate},{'channel':_0x3a4b('0x10'),'model':_0x3a4b('0x11'),'event':_0x3a4b('0xa'),'condition':_0x3a4b('0x12'),'callback':afterUpdate},{'channel':_0x3a4b('0x10'),'model':'WhatsappMessage','event':'afterCreate','condition':_0x3a4b('0xc'),'callback':afterCreateMessage},{'channel':_0x3a4b('0x13'),'model':_0x3a4b('0x14'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0x9'),'callback':afterCreate},{'channel':_0x3a4b('0x13'),'model':_0x3a4b('0x14'),'event':_0x3a4b('0xa'),'condition':_0x3a4b('0x12'),'callback':afterUpdate},{'channel':_0x3a4b('0x13'),'model':_0x3a4b('0x15'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0xc'),'callback':afterCreateMessage},{'channel':_0x3a4b('0x16'),'model':_0x3a4b('0x17'),'event':_0x3a4b('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':'Mail','model':_0x3a4b('0x17'),'event':'afterUpdate','condition':_0x3a4b('0x12'),'callback':afterUpdate},{'channel':'Mail','model':_0x3a4b('0x17'),'event':'substatus','condition':_0x3a4b('0x18'),'callback':afterUpdate},{'channel':'Mail','model':_0x3a4b('0x19'),'event':'afterCreate','condition':_0x3a4b('0xc'),'callback':afterCreateMessage},{'channel':_0x3a4b('0x1a'),'model':_0x3a4b('0x1b'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0x9'),'callback':afterCreate},{'channel':_0x3a4b('0x1a'),'model':_0x3a4b('0x1b'),'event':_0x3a4b('0xa'),'condition':_0x3a4b('0x12'),'callback':afterUpdate},{'channel':_0x3a4b('0x1a'),'model':_0x3a4b('0x1c'),'event':_0x3a4b('0x8'),'condition':_0x3a4b('0xc'),'callback':afterCreateMessage}];function request(_0x59025b){return client[_0x3a4b('0x1d')](_0x3a4b('0x1e'),_0x59025b)[_0x3a4b('0x1f')](function(_0x1ceffe){logger['info'](_0x3a4b('0x20'),_0x3a4b('0x1e'),_0x1ceffe);if(_0x1ceffe[_0x3a4b('0x21')]){if(_0x1ceffe[_0x3a4b('0x21')][_0x3a4b('0x22')]===0x1f4){logger[_0x3a4b('0x21')](_0x3a4b('0x20'),_0x3a4b('0x1e'),_0x1ceffe['error']);}}})[_0x3a4b('0x23')](function(_0x4cfebb){logger[_0x3a4b('0x21')](_0x3a4b('0x20'),_0x3a4b('0x1e'),_0x4cfebb);});}function afterCreateMessage(_0x2337fe,_0x244b54){return function(_0xc8633d,_0x580a3e){_0xc8633d=_0xc8633d[_0x3a4b('0x24')]({'plain':!![]});_0xc8633d[_0x3a4b('0x25')]=_0x2337fe;_0xc8633d['motionChannel']=_0x2337fe;_0xc8633d[_0x3a4b('0x26')]=_0xc8633d['direction'];var _0xfd4f05='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xc8633d['ContactId'];return db[_0x3a4b('0x27')][_0x3a4b('0x28')](_0xfd4f05,{'type':db['Sequelize'][_0x3a4b('0x29')][_0x3a4b('0x2a')],'raw':!![]})['then'](function(_0x3d371f){return _0x3d371f;})['then'](function(_0x377106){if(_0x377106){_0xc8633d[_0x3a4b('0x2b')]=_0x377106[0x0];}if(_0xc8633d[_0x3a4b('0x2c')]){return db['User']['find']({'where':{'id':_0xc8633d[_0x3a4b('0x2c')]},'attributes':['id',_0x3a4b('0x2d'),_0x3a4b('0x2e'),_0x3a4b('0x2f'),_0x3a4b('0x30')],'raw':!![]})[_0x3a4b('0x1f')](function(_0x1b88a3){_0xc8633d[_0x3a4b('0x31')]=util[_0x3a4b('0x32')]('SIP/%s',_0x1b88a3[_0x3a4b('0x2d')]);_0xc8633d[_0x3a4b('0x25')]=_0x2337fe;_0xc8633d[_0x3a4b('0x33')]=_0x1b88a3;return request({'event':_0x3a4b('0x34'),'message':_0xc8633d});})[_0x3a4b('0x23')](function(_0x799ebb){console[_0x3a4b('0x21')](_0x799ebb);});}else{return request({'event':_0x3a4b('0x35'),'message':_0xc8633d});}});};}function afterCreate(_0x1b0db5,_0x5247c2){return function(_0xa9eb3d,_0x2eae83){_0xa9eb3d=_0xa9eb3d[_0x3a4b('0x24')]({'plain':!![]});_0xa9eb3d[_0x3a4b('0x25')]=_0x1b0db5;_0xa9eb3d[_0x3a4b('0x36')]=_0x1b0db5;_0xa9eb3d[_0x3a4b('0x26')]=_0x3a4b('0x37');var _0x35935c=_0x3a4b('0x38')+_0xa9eb3d[_0x3a4b('0x39')];return db[_0x3a4b('0x27')][_0x3a4b('0x28')](_0x35935c,{'type':db['Sequelize']['QueryTypes'][_0x3a4b('0x2a')],'raw':!![]})['then'](function(_0x4ace40){return _0x4ace40;})[_0x3a4b('0x1f')](function(_0x10db78){if(_0x10db78){_0xa9eb3d[_0x3a4b('0x2b')]=_0x10db78[0x0];}return request({'event':_0x5247c2,'message':_0xa9eb3d});});};}function afterUpdate(_0x544482,_0x429779){return function(_0x24f834,_0x54d623){if(_0x24f834[_0x3a4b('0x3a')]('closed')&&_0x24f834[_0x3a4b('0x3b')]){_0x24f834=_0x24f834[_0x3a4b('0x24')]({'plain':!![]});_0x24f834[_0x3a4b('0x25')]=_0x544482;_0x24f834[_0x3a4b('0x36')]=_0x544482;_0x24f834[_0x3a4b('0x26')]=_0x3a4b('0x3b');var _0x53d372='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x24f834[_0x3a4b('0x39')];return db['sequelize'][_0x3a4b('0x28')](_0x53d372,{'type':db[_0x3a4b('0x3c')][_0x3a4b('0x29')]['SELECT'],'raw':!![]})[_0x3a4b('0x1f')](function(_0x584cb5){return _0x584cb5;})['then'](function(_0x10512d){if(_0x10512d){_0x24f834[_0x3a4b('0x2b')]=_0x10512d[0x0];}if(_0x24f834[_0x3a4b('0x2c')]){return db['User'][_0x3a4b('0x3d')]({'where':{'id':_0x24f834['UserId']},'attributes':['id',_0x3a4b('0x2d'),_0x3a4b('0x2e'),_0x3a4b('0x2f'),_0x3a4b('0x30')],'raw':!![]})[_0x3a4b('0x1f')](function(_0x28c1b5){_0x24f834[_0x3a4b('0x31')]=util[_0x3a4b('0x32')](_0x3a4b('0x3e'),_0x28c1b5[_0x3a4b('0x2d')]);_0x24f834[_0x3a4b('0x33')]=_0x28c1b5;return request({'event':_0x429779,'message':_0x24f834});})[_0x3a4b('0x23')](function(_0x3df2d1){console[_0x3a4b('0x21')](_0x3df2d1);});}else{return request({'event':_0x429779,'message':_0x24f834});}});}else if(_0x24f834[_0x3a4b('0x3a')]('substatus')){_0x24f834=_0x24f834[_0x3a4b('0x24')]({'plain':!![]});_0x24f834['channel']=_0x544482;_0x24f834['event']=_0x3a4b('0x18');var _0x53d372=_0x3a4b('0x38')+_0x24f834[_0x3a4b('0x39')];return db['sequelize']['query'](_0x53d372,{'type':db[_0x3a4b('0x3c')][_0x3a4b('0x29')][_0x3a4b('0x2a')],'raw':!![]})[_0x3a4b('0x1f')](function(_0x3f5e23){return _0x3f5e23;})[_0x3a4b('0x1f')](function(_0x377490){if(_0x377490){_0x24f834[_0x3a4b('0x2b')]=_0x377490[0x0];}if(_0x24f834['UserId']){return db[_0x3a4b('0x3f')][_0x3a4b('0x3d')]({'where':{'id':_0x24f834[_0x3a4b('0x2c')]},'attributes':['id','name',_0x3a4b('0x2e'),_0x3a4b('0x2f'),'internal'],'raw':!![]})['then'](function(_0x2dd828){_0x24f834[_0x3a4b('0x31')]=util[_0x3a4b('0x32')](_0x3a4b('0x3e'),_0x2dd828[_0x3a4b('0x2d')]);_0x24f834[_0x3a4b('0x33')]=_0x2dd828;return request({'event':_0x429779,'message':_0x24f834});})[_0x3a4b('0x23')](function(_0x34b93a){console[_0x3a4b('0x21')](_0x34b93a);});}else{return request({'event':_0x429779,'message':_0x24f834});}});}};}exports[_0x3a4b('0x40')]=function(){for(var _0x510059=0x0;_0x510059<triggers[_0x3a4b('0x41')];_0x510059+=0x1){if(db[_0x3a4b('0x42')](triggers[_0x510059]['model'])){db[triggers[_0x510059][_0x3a4b('0x43')]][_0x3a4b('0x44')](triggers[_0x510059][_0x3a4b('0x26')],triggers[_0x510059]['callback'](triggers[_0x510059][_0x3a4b('0x25')]['toLowerCase'](),triggers[_0x510059][_0x3a4b('0x45')]));}}};
\ No newline at end of file
+var _0xeeec=['closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','EventManager','info','Trigger,\x20%s','error','code','catch','get','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','QueryTypes','then','contact','UserId','User','find','name','email','internal','interface','SIP/%s','channel','agent','incomingmessage','outgoingmessage','opened','SELECT','changed','closed','format','default','length','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','ChatMessage','newmessage','Sms','SmsInteraction','afterUpdate'];(function(_0x5ce363,_0x44ee1b){var _0x160171=function(_0x3beddd){while(--_0x3beddd){_0x5ce363['push'](_0x5ce363['shift']());}};_0x160171(++_0x44ee1b);}(_0xeeec,0x14f));var _0xceee=function(_0x368fb9,_0x1a9895){_0x368fb9=_0x368fb9-0x0;var _0x4892fb=_0xeeec[_0x368fb9];return _0x4892fb;};'use strict';var util=require(_0xceee('0x0'));var db=require(_0xceee('0x1'))['db'];var jayson=require(_0xceee('0x2'));var logger=require('../logger')(_0xceee('0x3'));var _=require('lodash');var client=jayson[_0xceee('0x4')][_0xceee('0x5')]({'port':0x232a});var triggers=[{'channel':_0xceee('0x6'),'model':_0xceee('0x7'),'event':_0xceee('0x8'),'condition':_0xceee('0x9'),'callback':afterCreate},{'channel':_0xceee('0x6'),'model':'ChatInteraction','event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xceee('0x6'),'model':_0xceee('0xa'),'event':_0xceee('0x8'),'condition':_0xceee('0xb'),'callback':afterCreateMessage},{'channel':_0xceee('0xc'),'model':'SmsInteraction','event':'afterCreate','condition':_0xceee('0x9'),'callback':afterCreate},{'channel':'Sms','model':_0xceee('0xd'),'event':_0xceee('0xe'),'condition':_0xceee('0xf'),'callback':afterUpdate},{'channel':'Sms','model':_0xceee('0x10'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0xceee('0x11'),'model':_0xceee('0x12'),'event':_0xceee('0x8'),'condition':_0xceee('0x9'),'callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0xceee('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xceee('0x11'),'model':_0xceee('0x13'),'event':_0xceee('0x8'),'condition':_0xceee('0xb'),'callback':afterCreateMessage},{'channel':_0xceee('0x14'),'model':_0xceee('0x15'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0xceee('0x14'),'model':_0xceee('0x15'),'event':_0xceee('0xe'),'condition':_0xceee('0xf'),'callback':afterUpdate},{'channel':_0xceee('0x14'),'model':_0xceee('0x16'),'event':_0xceee('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xceee('0x17'),'model':_0xceee('0x18'),'event':_0xceee('0x8'),'condition':_0xceee('0x9'),'callback':afterCreate},{'channel':_0xceee('0x17'),'model':_0xceee('0x18'),'event':_0xceee('0xe'),'condition':_0xceee('0xf'),'callback':afterUpdate},{'channel':_0xceee('0x17'),'model':_0xceee('0x19'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':'Openchannel','model':_0xceee('0x1a'),'event':_0xceee('0x8'),'condition':_0xceee('0x9'),'callback':afterCreate},{'channel':_0xceee('0x1b'),'model':_0xceee('0x1a'),'event':_0xceee('0xe'),'condition':_0xceee('0xf'),'callback':afterUpdate},{'channel':_0xceee('0x1b'),'model':_0xceee('0x1c'),'event':_0xceee('0x8'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x5dd22a){return client['request'](_0xceee('0x1d'),_0x5dd22a)['then'](function(_0x5ba733){logger[_0xceee('0x1e')](_0xceee('0x1f'),_0xceee('0x1d'),_0x5ba733);if(_0x5ba733[_0xceee('0x20')]){if(_0x5ba733[_0xceee('0x20')][_0xceee('0x21')]===0x1f4){logger[_0xceee('0x20')]('Trigger,\x20%s',_0xceee('0x1d'),_0x5ba733[_0xceee('0x20')]);}}})[_0xceee('0x22')](function(_0xc71456){logger[_0xceee('0x20')](_0xceee('0x1f'),'EventManager',_0xc71456);});}function afterCreateMessage(_0x1733e7,_0x3813e9){return function(_0x1597da,_0x3444b5){_0x1597da=_0x1597da[_0xceee('0x23')]({'plain':!![]});_0x1597da['channel']=_0x1733e7;_0x1597da[_0xceee('0x24')]=_0x1597da[_0xceee('0x25')];var _0x586ef6=_0xceee('0x26')+_0x1597da[_0xceee('0x27')];return db[_0xceee('0x28')][_0xceee('0x29')](_0x586ef6,{'type':db[_0xceee('0x2a')][_0xceee('0x2b')]['SELECT'],'raw':!![]})[_0xceee('0x2c')](function(_0x1d9416){return _0x1d9416;})[_0xceee('0x2c')](function(_0x27e952){if(_0x27e952){_0x1597da[_0xceee('0x2d')]=_0x27e952[0x0];}if(_0x1597da[_0xceee('0x2e')]){return db[_0xceee('0x2f')][_0xceee('0x30')]({'where':{'id':_0x1597da[_0xceee('0x2e')]},'attributes':['id',_0xceee('0x31'),'fullname',_0xceee('0x32'),_0xceee('0x33')],'raw':!![]})['then'](function(_0x36cf95){_0x1597da[_0xceee('0x34')]=util['format'](_0xceee('0x35'),_0x36cf95[_0xceee('0x31')]);_0x1597da[_0xceee('0x36')]=_0x1733e7;_0x1597da[_0xceee('0x37')]=_0x36cf95;return request({'event':_0xceee('0x38'),'message':_0x1597da});})[_0xceee('0x22')](function(_0x5600ce){console[_0xceee('0x20')](_0x5600ce);});}else{return request({'event':_0xceee('0x39'),'message':_0x1597da});}});};}function afterCreate(_0xf466ff,_0x2d1e6e){return function(_0x5d72c6,_0x43e695){_0x5d72c6=_0x5d72c6['get']({'plain':!![]});_0x5d72c6[_0xceee('0x36')]=_0xf466ff;_0x5d72c6[_0xceee('0x24')]=_0xceee('0x3a');var _0x208a72=_0xceee('0x26')+_0x5d72c6[_0xceee('0x27')];return db[_0xceee('0x28')][_0xceee('0x29')](_0x208a72,{'type':db[_0xceee('0x2a')]['QueryTypes'][_0xceee('0x3b')],'raw':!![]})['then'](function(_0x1904a7){return _0x1904a7;})['then'](function(_0x27b645){if(_0x27b645){_0x5d72c6[_0xceee('0x2d')]=_0x27b645[0x0];}return request({'event':_0x2d1e6e,'message':_0x5d72c6});});};}function afterUpdate(_0x1bceae,_0x3f1406){return function(_0x44687a,_0x8687b9){if(_0x44687a[_0xceee('0x3c')](_0xceee('0x3d'))&&_0x44687a['closed']){_0x44687a=_0x44687a[_0xceee('0x23')]({'plain':!![]});_0x44687a[_0xceee('0x36')]=_0x1bceae;_0x44687a[_0xceee('0x24')]='closed';var _0xebad9b=_0xceee('0x26')+_0x44687a[_0xceee('0x27')];return db[_0xceee('0x28')][_0xceee('0x29')](_0xebad9b,{'type':db['Sequelize'][_0xceee('0x2b')][_0xceee('0x3b')],'raw':!![]})['then'](function(_0x5a3baf){return _0x5a3baf;})['then'](function(_0x7667a5){if(_0x7667a5){_0x44687a[_0xceee('0x2d')]=_0x7667a5[0x0];}if(_0x44687a[_0xceee('0x2e')]){return db[_0xceee('0x2f')][_0xceee('0x30')]({'where':{'id':_0x44687a[_0xceee('0x2e')]},'attributes':['id','name','fullname',_0xceee('0x32'),_0xceee('0x33')],'raw':!![]})[_0xceee('0x2c')](function(_0x4a8e87){_0x44687a[_0xceee('0x34')]=util[_0xceee('0x3e')](_0xceee('0x35'),_0x4a8e87[_0xceee('0x31')]);_0x44687a[_0xceee('0x37')]=_0x4a8e87;return request({'event':_0x3f1406,'message':_0x44687a});})['catch'](function(_0x401574){console[_0xceee('0x20')](_0x401574);});}else{return request({'event':_0x3f1406,'message':_0x44687a});}});}};}exports[_0xceee('0x3f')]=function(){for(var _0x4b5552=0x0;_0x4b5552<triggers[_0xceee('0x40')];_0x4b5552+=0x1){if(db['hasOwnProperty'](triggers[_0x4b5552][_0xceee('0x41')])){db[triggers[_0x4b5552]['model']][_0xceee('0x42')](triggers[_0x4b5552]['event'],triggers[_0x4b5552][_0xceee('0x43')](triggers[_0x4b5552][_0xceee('0x36')][_0xceee('0x44')](),triggers[_0x4b5552][_0xceee('0x45')]));}}};
\ No newline at end of file
index aa5319f..3ab9b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf487=['User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','voice','fax','sms','whatsapp','getChannels','isValidChannel','toLowerCase','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent'];(function(_0x49b73b,_0x49456b){var _0x391e11=function(_0x111b67){while(--_0x111b67){_0x49b73b['push'](_0x49b73b['shift']());}};_0x391e11(++_0x49456b);}(_0xf487,0x16e));var _0x7f48=function(_0x416569,_0x5b0cf3){_0x416569=_0x416569-0x0;var _0x323a89=_0xf487[_0x416569];return _0x323a89;};'use strict';var _=require(_0x7f48('0x0'));var BPromise=require(_0x7f48('0x1'));var db=require(_0x7f48('0x2'))['db'];var util=require(_0x7f48('0x3'));var channels=[_0x7f48('0x4'),'mail','chat',_0x7f48('0x5'),_0x7f48('0x6'),_0x7f48('0x7'),'openchannel'];exports[_0x7f48('0x8')]=function(){return channels;};exports[_0x7f48('0x9')]=function(_0x5a3002){_0x5a3002=_0x5a3002[_0x7f48('0xa')]();return _['includes'](channels,_0x5a3002);};exports[_0x7f48('0xb')]=function(_0x574183,_0x12c161,_0xbac033,_0x41ba94){var _0x470d37={'loginAttempts':_0x12c161,'blocked':_0xbac033};if(!_[_0x7f48('0xc')](_0x41ba94)){_0x470d37[_0x7f48('0xd')]=_0x41ba94;}return _0x574183[_0x7f48('0xe')](_0x470d37);};exports[_0x7f48('0xf')]=function(_0x2d2497){return new BPromise(function(_0x3d105a,_0x465e88){var _0x10a6a1=0x0;if(_0x2d2497[_0x7f48('0x10')]!==_0x7f48('0x11')){_0x3d105a(_0x2d2497);}db[_0x7f48('0x12')][_0x7f48('0x13')]({'where':{'role':_0x7f48('0x11'),'online':!![],'id':{'$ne':_0x2d2497['id']}}})[_0x7f48('0x14')](function(_0x3b82f1){_0x10a6a1=_0x3b82f1;return util[_0x7f48('0xf')]();})['then'](function(_0x5684d3){if(_0x5684d3&&_0x5684d3['agents']&&_0x10a6a1>=_0x5684d3[_0x7f48('0x15')]){throw Error(_0x7f48('0x16'));}_0x3d105a(_0x2d2497);})[_0x7f48('0x17')](function(_0x5b1622){_0x465e88(_0x5b1622);});});};
\ No newline at end of file
+var _0x63fe=['blockedAt','getLicense','role','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','mail','chat','sms','whatsapp','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined'];(function(_0x61909f,_0x1afdea){var _0x4ad05e=function(_0x1380a0){while(--_0x1380a0){_0x61909f['push'](_0x61909f['shift']());}};_0x4ad05e(++_0x1afdea);}(_0x63fe,0xc1));var _0xe63f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x63fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe63f('0x0'));var BPromise=require(_0xe63f('0x1'));var db=require(_0xe63f('0x2'))['db'];var util=require(_0xe63f('0x3'));var channels=['voice',_0xe63f('0x4'),_0xe63f('0x5'),'fax',_0xe63f('0x6'),_0xe63f('0x7'),'openchannel'];exports[_0xe63f('0x8')]=function(){return channels;};exports[_0xe63f('0x9')]=function(_0x185ead){_0x185ead=_0x185ead[_0xe63f('0xa')]();return _[_0xe63f('0xb')](channels,_0x185ead);};exports[_0xe63f('0xc')]=function(_0xa9541e,_0x57b0bf,_0x5c2a78,_0x50ecef){var _0x2b986b={'loginAttempts':_0x57b0bf,'blocked':_0x5c2a78};if(!_[_0xe63f('0xd')](_0x50ecef)){_0x2b986b[_0xe63f('0xe')]=_0x50ecef;}return _0xa9541e['updateAttributes'](_0x2b986b);};exports[_0xe63f('0xf')]=function(_0x440f75){return new BPromise(function(_0x218f7d,_0xe49702){var _0x379979=0x0;if(_0x440f75[_0xe63f('0x10')]!==_0xe63f('0x11')){_0x218f7d(_0x440f75);}db[_0xe63f('0x12')]['count']({'where':{'role':_0xe63f('0x11'),'online':!![],'id':{'$ne':_0x440f75['id']}}})[_0xe63f('0x13')](function(_0x2bcd6c){_0x379979=_0x2bcd6c;return util[_0xe63f('0xf')]();})[_0xe63f('0x13')](function(_0x20992f){if(_0x20992f&&_0x20992f[_0xe63f('0x14')]&&_0x379979>=_0x20992f['agents']){throw Error(_0xe63f('0x15'));}_0x218f7d(_0x440f75);})[_0xe63f('0x16')](function(_0x5e245b){_0xe49702(_0x5e245b);});});};
\ No newline at end of file
index 5a9a81a..7a64c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4443=['404','status','render','json','send','exports'];(function(_0x1a0d36,_0x1efc39){var _0x1cb917=function(_0x561f25){while(--_0x561f25){_0x1a0d36['push'](_0x1a0d36['shift']());}};_0x1cb917(++_0x1efc39);}(_0x4443,0x71));var _0x3444=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x4443[_0x4b055c];return _0x4b62bb;};'use strict';module[_0x3444('0x0')][0x194]=function pageNotFound(_0x478d3d,_0x263fc5){var _0x2276a4=_0x3444('0x1');var _0x1cda68=0x194;var _0x3cfb39={'status':_0x1cda68};_0x263fc5['status'](_0x3cfb39[_0x3444('0x2')]);_0x263fc5[_0x3444('0x3')](_0x2276a4,{},function(_0x1d2dea,_0x427648){if(_0x1d2dea){return _0x263fc5[_0x3444('0x2')](_0x3cfb39[_0x3444('0x2')])[_0x3444('0x4')](_0x3cfb39);}_0x263fc5[_0x3444('0x5')](_0x427648);});};
\ No newline at end of file
+var _0x3cb9=['send','404','status','render','json'];(function(_0x10d3b6,_0x40fd9c){var _0x387f05=function(_0x1f5df8){while(--_0x1f5df8){_0x10d3b6['push'](_0x10d3b6['shift']());}};_0x387f05(++_0x40fd9c);}(_0x3cb9,0x12d));var _0x93cb=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x3cb9[_0x413feb];return _0x40ee88;};'use strict';module['exports'][0x194]=function pageNotFound(_0x31791d,_0x29210b){var _0x5c28db=_0x93cb('0x0');var _0xf52a0c=0x194;var _0x47bcf0={'status':_0xf52a0c};_0x29210b[_0x93cb('0x1')](_0x47bcf0[_0x93cb('0x1')]);_0x29210b[_0x93cb('0x2')](_0x5c28db,{},function(_0x12fc6e,_0x1224b0){if(_0x12fc6e){return _0x29210b['status'](_0x47bcf0[_0x93cb('0x1')])[_0x93cb('0x3')](_0x47bcf0);}_0x29210b[_0x93cb('0x4')](_0x1224b0);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
deleted file mode 100644 (file)
index f7d42ec..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-'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 15b9e56..15dc9f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe2c=['FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Integration','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','CloudProvider','../api/teamVoiceQueue/teamVoiceQueue.model','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','cascade','UserId','hasMany','VoiceQueuesRt','Extensions','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','belongsToMany','Contacts','Lists','cm_user_has_lists','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','MailQueues','ChatQueues','OpenchannelQueues','WhatsappQueue','WhatsappQueues','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','VoiceChanSpy','SpiedAgents','Sound','Sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','JscriptySessions','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','VoiceMailMessage','QueueCalls','uniqueid','AgentReports','Contact','ContactId','hasOne','Imap','Smtp','Dispositions','Answers','MailAccountId','Interactions','MailApplication','List','TemplateId','Account','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','user_has_mail_interactions','MailInteractionId','Attachment','Attachments','Interaction','restrict','TagId','ListId','FaxAccountId','Applications','Exntensions','fax_interaction_has_tags','Users','FaxInteractionId','AttachmentId','team_has_fax_queues','SmsAccountId','SmsMessage','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatWebsiteId','ProactiveActions','ChatApplication','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','chat_interaction_has_tags','ChatInteractionId','ChatOfflineMessageId','ChatGroupId','chat_group_has_users','CmHopper','Company','CompanyId','cm_user_has_contacts','cm_contact_has_tags','CampaignId','OwnerId','Automation','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','SmsApplications','DefaultReportId','AnalyticCustomReport','CustomReportId','Mohs','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','AllConditions','TriggerAllId','AnyCondition','TriggerAnyId','TriggerId','AnalyticDefaultReport','Fields','MetricId','AccountId','Subjects','SubjectId','SalesforceField','Descriptions','DescriptionId','Subject','Description','Field','FieldId','VariableId','Configurations','SugarcrmField','ZohoAccount','ZohoConfiguration','ZohoField','ZendeskAccount','int_zendesk_configuration_has_tags','FreshdeskField','FreshdeskAccount','int_freshdesk_configuration_has_tags','ServicenowField','FreshsalesConfiguration','FreshsalesField','ChatQueueReport','FromId','ToId','SessionId','SmsQueueReport','ProjectId','user_has_teams','TeamVoiceQueue','team_has_mail_queues','team_has_chat_queues','SmsQueues','team_has_whatsapp_queues','TeamVoicePrefix','HopperBlacks','TrunkId','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','ToChatWebsiteId','FromFaxAccountId','FromOpenchannelAccountId','ToUserId','ToAgent','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsAccountId','CustomFields','Queues','UserVoicePrefix','UserProfileSection','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','../config/environment','lodash','jstz','sequelize','defaultsDeep','motion2','xC@LL1234','127.0.0.1','mysql','name','utf8_general_ci','xcall','utf8','database','username','password','options','sequelizeHistory','User','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','VoiceExtension','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','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/chatApplication/chatApplication.model','ChatInteraction','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','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../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','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0xbe2c,0x12e));var _0xcbe2=function(_0x30220f,_0x40494a){_0x30220f=_0x30220f-0x0;var _0x2fffae=_0xbe2c[_0x30220f];return _0x2fffae;};'use strict';var config=require(_0xcbe2('0x0'));var Sequelize=require('sequelize');var _=require(_0xcbe2('0x1'));var jstz=require(_0xcbe2('0x2'));var timezone=jstz['determine']();config[_0xcbe2('0x3')]=_[_0xcbe2('0x4')](config['sequelize'],{'database':_0xcbe2('0x5'),'username':'xcall','password':_0xcbe2('0x6'),'options':{'host':_0xcbe2('0x7'),'port':0xcea,'dialect':_0xcbe2('0x8'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xcbe2('0x9')](),'define':{'charset':'utf8','collate':_0xcbe2('0xa')}}});config['sequelizeHistory']=_['defaultsDeep'](config['sequelizeHistory'],{'database':_0xcbe2('0x5'),'username':_0xcbe2('0xb'),'password':_0xcbe2('0x6'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xcbe2('0x8'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xcbe2('0x9')](),'define':{'charset':_0xcbe2('0xc'),'collate':_0xcbe2('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0xcbe2('0xd')],config[_0xcbe2('0x3')][_0xcbe2('0xe')],config['sequelize'][_0xcbe2('0xf')],config['sequelize'][_0xcbe2('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0xcbe2('0xd')],config[_0xcbe2('0x11')][_0xcbe2('0xe')],config['sequelizeHistory'][_0xcbe2('0xf')],config[_0xcbe2('0x11')][_0xcbe2('0x10')])};db[_0xcbe2('0x12')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/user/user.model');db['VoiceChanSpy']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x14'));db[_0xcbe2('0x15')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/voiceContext/voiceContext.model');db[_0xcbe2('0x16')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/voiceExtension/voiceExtension.model');db[_0xcbe2('0x17')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x18'));db[_0xcbe2('0x19')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x1a'));db[_0xcbe2('0x1b')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x1c'));db[_0xcbe2('0x1d')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x1e'));db[_0xcbe2('0x1f')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x20'));db['VoiceMailMessage']=db['sequelize'][_0xcbe2('0x13')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xcbe2('0x21')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x22'));db['VoiceDialReport']=db['sequelize'][_0xcbe2('0x13')]('../api/voiceDialReport/voiceDialReport.model');db[_0xcbe2('0x23')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x24'));db[_0xcbe2('0x25')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x26'));db[_0xcbe2('0x27')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x28'));db[_0xcbe2('0x29')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/trunk/trunk.model');db[_0xcbe2('0x2a')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x2b'));db[_0xcbe2('0x2c')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x2d'));db[_0xcbe2('0x2e')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x2f'));db[_0xcbe2('0x30')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x31'));db[_0xcbe2('0x32')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/userMailQueue/userMailQueue.model');db[_0xcbe2('0x33')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x34'));db[_0xcbe2('0x35')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x36'));db[_0xcbe2('0x37')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0xcbe2('0x38')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x39'));db[_0xcbe2('0x3a')]=db[_0xcbe2('0x3')]['import']('../api/mailServerIn/mailServerIn.model');db[_0xcbe2('0x3b')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x3c'));db[_0xcbe2('0x3d')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x3e'));db[_0xcbe2('0x3f')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x40'));db[_0xcbe2('0x41')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x42'));db[_0xcbe2('0x43')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x44'));db[_0xcbe2('0x45')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x46'));db['MailApplication']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x47'));db[_0xcbe2('0x48')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x49'));db[_0xcbe2('0x4a')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x4b'));db[_0xcbe2('0x4c')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x4d'));db[_0xcbe2('0x4e')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x4f'));db[_0xcbe2('0x50')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x51'));db[_0xcbe2('0x52')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x53'));db[_0xcbe2('0x54')]=db[_0xcbe2('0x3')]['import']('../api/faxMessage/faxMessage.model');db[_0xcbe2('0x55')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x56'));db[_0xcbe2('0x57')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x58'));db[_0xcbe2('0x59')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x5a'));db[_0xcbe2('0x5b')]=db[_0xcbe2('0x3')]['import']('../api/smsApplication/smsApplication.model');db['SmsInteraction']=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/smsInteraction/smsInteraction.model');db['SmsMessage']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x5c'));db[_0xcbe2('0x5d')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x5e'));db[_0xcbe2('0x5f')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/openchannelAccount/openchannelAccount.model');db[_0xcbe2('0x60')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x61'));db['OpenchannelInteraction']=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x62'));db[_0xcbe2('0x63')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/openchannelMessage/openchannelMessage.model');db[_0xcbe2('0x64')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/openchannelQueue/openchannelQueue.model');db[_0xcbe2('0x65')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x66'));db[_0xcbe2('0x67')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x68'));db[_0xcbe2('0x69')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0xcbe2('0x6a')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x6b'));db[_0xcbe2('0x6c')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x6d'));db[_0xcbe2('0x6e')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x6f'));db[_0xcbe2('0x70')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x71'));db[_0xcbe2('0x72')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x73'));db[_0xcbe2('0x74')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x75'));db[_0xcbe2('0x76')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/cmContact/cmContact.model');db['CmHopper']=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/cmHopper/cmHopper.model');db[_0xcbe2('0x77')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x78'));db[_0xcbe2('0x79')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x7a'));db[_0xcbe2('0x7b')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x7c'));db[_0xcbe2('0x7d')]=db['sequelize']['import'](_0xcbe2('0x7e'));db[_0xcbe2('0x7f')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x80'));db[_0xcbe2('0x81')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x82'));db['Automation']=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/automation/automation.model');db[_0xcbe2('0x83')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x84'));db[_0xcbe2('0x85')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x86'));db[_0xcbe2('0x87')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x88'));db[_0xcbe2('0x89')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x8a'));db[_0xcbe2('0x8b')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x8c'));db['Cdr']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x8d'));db[_0xcbe2('0x8e')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x8f'));db[_0xcbe2('0x90')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/schedule/schedule.model');db['Sound']=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/sound/sound.model');db['Tag']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x91'));db[_0xcbe2('0x92')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x93'));db[_0xcbe2('0x94')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x95'));db[_0xcbe2('0x96')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x97'));db['Integration']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x98'));db['IntegrationReport']=db['sequelize']['import'](_0xcbe2('0x99'));db['AnalyticCustomReport']=db['sequelize']['import'](_0xcbe2('0x9a'));db['AnalyticDefaultReport']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x9b'));db[_0xcbe2('0x9c')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x9d'));db[_0xcbe2('0x9e')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0x9f'));db[_0xcbe2('0xa0')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xa1'));db[_0xcbe2('0xa2')]=db[_0xcbe2('0x3')]['import']('../api/analyticTreeReport/analyticTreeReport.model');db[_0xcbe2('0xa3')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0xcbe2('0xa4')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xa5'));db['SalesforceField']=db['sequelize']['import'](_0xcbe2('0xa6'));db[_0xcbe2('0xa7')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xa8'));db[_0xcbe2('0xa9')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db['SugarcrmField']=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xaa'));db[_0xcbe2('0xab')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xac'));db[_0xcbe2('0xad')]=db['sequelize']['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0xcbe2('0xae')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xaf'));db['ZohoAccount']=db['sequelize']['import']('../api/intZohoAccount/intZohoAccount.model');db['ZohoConfiguration']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xb0'));db['ZohoField']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xb1'));db['ZendeskAccount']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xb2'));db[_0xcbe2('0xb3')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0xcbe2('0xb4')]=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xb5'));db['FreshdeskAccount']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xb6'));db[_0xcbe2('0xb7')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db['FreshdeskField']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xb8'));db[_0xcbe2('0xb9')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xba'));db[_0xcbe2('0xbb')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xbc'));db[_0xcbe2('0xbd')]=db['sequelize'][_0xcbe2('0x13')]('../api/intVtigerField/intVtigerField.model');db[_0xcbe2('0xbe')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xbf'));db[_0xcbe2('0xc0')]=db['sequelize']['import'](_0xcbe2('0xc1'));db['ServicenowField']=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xc2'));db[_0xcbe2('0xc3')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xc4'));db[_0xcbe2('0xc5')]=db['sequelize']['import'](_0xcbe2('0xc6'));db[_0xcbe2('0xc7')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xc8'));db[_0xcbe2('0xc9')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xca'));db['FreshsalesConfiguration']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xcb'));db['FreshsalesField']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xcc'));db[_0xcbe2('0xcd')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x98'));db['Network']=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xce'));db['ChatQueueReport']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xcf'));db[_0xcbe2('0xd0')]=db[_0xcbe2('0x3')]['import']('../api/chatInternalMessage/chatInternalMessage.model');db[_0xcbe2('0xd1')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xd2'));db[_0xcbe2('0xd3')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xd4'));db[_0xcbe2('0xd5')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xd6'));db['SmsQueueReport']=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xd7'));db['SquareReport']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xd8'));db[_0xcbe2('0xd9')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xda'));db[_0xcbe2('0xdb')]=db['sequelize']['import']('../api/jscriptyProject/jscriptyProject.model');db[_0xcbe2('0xdc')]=db['sequelize']['import'](_0xcbe2('0xdd'));db[_0xcbe2('0xde')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xdf'));db[_0xcbe2('0xe0')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xe1'));db['SquareRecording']=db['sequelize']['import'](_0xcbe2('0xe2'));db[_0xcbe2('0xe3')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xe4'));db[_0xcbe2('0xe5')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xe6'));db[_0xcbe2('0xe7')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xe8'));db[_0xcbe2('0xe9')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xea'));db['Migration']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xeb'));db['Attachment']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xec'));db[_0xcbe2('0xed')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xee'));db[_0xcbe2('0xef')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xf0'));db['ChatTransferReport']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xf1'));db[_0xcbe2('0xf2')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xf3'));db[_0xcbe2('0xf4')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0xf5'));db[_0xcbe2('0xf6')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xf7'));db[_0xcbe2('0xf8')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/cmList/cmList.model');db[_0xcbe2('0xf9')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xfa'));db[_0xcbe2('0xfb')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/userProfile/userProfile.model');db['UserProfileSection']=db['sequelize']['import'](_0xcbe2('0xfc'));db[_0xcbe2('0xfd')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0xfe'));db['UserNotification']=db['sequelize'][_0xcbe2('0x13')](_0xcbe2('0xff'));db[_0xcbe2('0x100')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x101'));db[_0xcbe2('0x102')]=db[_0xcbe2('0x3')]['import'](_0xcbe2('0x103'));db[_0xcbe2('0x104')]=db['sequelize'][_0xcbe2('0x13')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0xcbe2('0x105')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/whatsappMessage/whatsappMessage.model');db[_0xcbe2('0x106')]=db['sequelize'][_0xcbe2('0x13')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0xcbe2('0x107')]=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x108'));db['WhatsappQueue']=db[_0xcbe2('0x3')][_0xcbe2('0x13')]('../api/whatsappQueue/whatsappQueue.model');db[_0xcbe2('0x109')]=db['sequelize'][_0xcbe2('0x13')]('../api/cloudProvider/cloudProvider.model');db['TeamVoiceQueue']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x10a'));db['TeamVoicePrefix']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x10b'));db['UserVoicePrefix']=db[_0xcbe2('0x3')][_0xcbe2('0x13')](_0xcbe2('0x10c'));db[_0xcbe2('0x12')]['hasOne'](db[_0xcbe2('0x1f')],{'as':'VoiceMail','onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')]['hasMany'](db[_0xcbe2('0x1b')],{'as':'Recordings','foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')][_0xcbe2('0x10f')](db[_0xcbe2('0x2c')],{'as':_0xcbe2('0x110'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')]['hasMany'](db[_0xcbe2('0x16')],{'as':_0xcbe2('0x111'),'onDelete':'cascade','hooks':!![]});db['User']['hasMany'](db[_0xcbe2('0x79')],{'as':'HopperFinals','foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')][_0xcbe2('0x10f')](db[_0xcbe2('0x7b')],{'as':_0xcbe2('0x112'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')]['hasMany'](db[_0xcbe2('0x7d')],{'as':'ReportAgentPreview','foreignKey':'UserId'});db[_0xcbe2('0x12')][_0xcbe2('0x10f')](db[_0xcbe2('0x113')],{'as':_0xcbe2('0x114'),'foreignKey':_0xcbe2('0x10e')});db['User'][_0xcbe2('0x10f')](db[_0xcbe2('0x69')],{'as':_0xcbe2('0x115'),'foreignKey':'UserId'});db[_0xcbe2('0x12')]['hasMany'](db[_0xcbe2('0x116')],{'as':_0xcbe2('0x117'),'foreignKey':_0xcbe2('0x10e')});db['User'][_0xcbe2('0x10f')](db['FaxInteraction'],{'as':_0xcbe2('0x118'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')][_0xcbe2('0x10f')](db[_0xcbe2('0x43')],{'as':_0xcbe2('0x119'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x12')][_0xcbe2('0x10f')](db[_0xcbe2('0x104')],{'as':_0xcbe2('0x11a'),'foreignKey':_0xcbe2('0x10e')});db['User']['hasMany'](db['UserNotification'],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0xcbe2('0x12')]['belongsTo'](db['UserProfile'],{'as':_0xcbe2('0xfb'),'foreignKey':'userProfileId'});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db['ChatGroup'],{'as':'Groups','through':'chat_group_has_users'});db['User']['belongsToMany'](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x11c'),'through':'cm_user_has_contacts'});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x11d'),'through':_0xcbe2('0x11e')});db[_0xcbe2('0x12')]['belongsToMany'](db[_0xcbe2('0xe5')],{'through':'user_has_teams'});db[_0xcbe2('0x12')]['belongsToMany'](db[_0xcbe2('0x43')],{'as':_0xcbe2('0x119'),'through':'user_has_mail_interactions'});db[_0xcbe2('0x12')]['belongsToMany'](db[_0xcbe2('0x69')],{'as':'ChatInteractions','through':_0xcbe2('0x11f')});db['User'][_0xcbe2('0x11b')](db[_0xcbe2('0x52')],{'as':_0xcbe2('0x118'),'through':_0xcbe2('0x120')});db['User'][_0xcbe2('0x11b')](db[_0xcbe2('0x116')],{'as':'SmsInteractions','through':_0xcbe2('0x121')});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0x113')],{'as':_0xcbe2('0x114'),'through':_0xcbe2('0x122')});db[_0xcbe2('0x12')]['belongsToMany'](db[_0xcbe2('0x104')],{'as':_0xcbe2('0x11a'),'through':_0xcbe2('0x123')});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db['VoiceQueue'],{'as':_0xcbe2('0x124'),'through':_0xcbe2('0x2e'),'required':![]});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db['VoicePrefix'],{'as':_0xcbe2('0x125'),'through':'UserVoicePrefix','required':![]});db['User'][_0xcbe2('0x11b')](db[_0xcbe2('0x3f')],{'as':_0xcbe2('0x126'),'through':_0xcbe2('0x32'),'required':![]});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0x6e')],{'as':_0xcbe2('0x127'),'through':_0xcbe2('0x30'),'required':![],'hooks':!![]});db['User']['belongsToMany'](db[_0xcbe2('0x55')],{'as':'FaxQueues','through':_0xcbe2('0x33'),'required':![]});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0x5d')],{'as':'SmsQueues','through':_0xcbe2('0x35'),'required':![]});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0x64')],{'as':_0xcbe2('0x128'),'through':'UserOpenchannelQueue','required':![]});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0x129')],{'as':_0xcbe2('0x12a'),'through':_0xcbe2('0x38'),'required':![]});db[_0xcbe2('0x12')]['belongsToMany'](db[_0xcbe2('0xf8')],{'through':_0xcbe2('0x11e')});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0x65')],{'as':'ChatWebsites','through':'user_has_chat_websites'});db['User'][_0xcbe2('0x11b')](db[_0xcbe2('0x4e')],{'as':'FaxAccounts','through':_0xcbe2('0x12b')});db['User'][_0xcbe2('0x11b')](db['MailAccount'],{'as':_0xcbe2('0x12c'),'through':_0xcbe2('0x12d')});db['User'][_0xcbe2('0x11b')](db[_0xcbe2('0x5f')],{'as':_0xcbe2('0x12e'),'through':_0xcbe2('0x12f')});db['User'][_0xcbe2('0x11b')](db[_0xcbe2('0x59')],{'as':_0xcbe2('0x130'),'through':_0xcbe2('0x131')});db[_0xcbe2('0x12')]['belongsToMany'](db[_0xcbe2('0x100')],{'as':_0xcbe2('0x132'),'through':_0xcbe2('0x133')});db[_0xcbe2('0x12')][_0xcbe2('0x11b')](db[_0xcbe2('0xe0')],{'as':_0xcbe2('0x134'),'through':_0xcbe2('0x135')});db[_0xcbe2('0x136')][_0xcbe2('0x10f')](db[_0xcbe2('0x16')],{'as':_0xcbe2('0x137'),'onDelete':_0xcbe2('0x10d'),'foreignKey':'ChanSpyId'});db[_0xcbe2('0x15')][_0xcbe2('0x10f')](db[_0xcbe2('0x16')],{'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x16')][_0xcbe2('0x10f')](db[_0xcbe2('0x16')],{'as':'Applications','onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x17')][_0xcbe2('0x11b')](db[_0xcbe2('0x138')],{'as':_0xcbe2('0x139'),'through':'moh_has_sounds'});db[_0xcbe2('0x19')]['hasMany'](db[_0xcbe2('0x2c')],{'as':_0xcbe2('0x13a'),'foreignKey':_0xcbe2('0x13b')});db['VoiceQueue'][_0xcbe2('0x10f')](db['CmHopper'],{'as':_0xcbe2('0x13c'),'foreignKey':_0xcbe2('0x13b')});db[_0xcbe2('0x19')]['hasMany'](db[_0xcbe2('0x79')],{'as':_0xcbe2('0x13d'),'foreignKey':_0xcbe2('0x13b')});db[_0xcbe2('0x19')]['hasMany'](db[_0xcbe2('0x7b')],{'as':_0xcbe2('0x13e'),'foreignKey':_0xcbe2('0x13b')});db[_0xcbe2('0x19')]['hasMany'](db[_0xcbe2('0x7d')],{'as':_0xcbe2('0x7d'),'foreignKey':_0xcbe2('0x13b')});db['VoiceQueue'][_0xcbe2('0x10f')](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0xcbe2('0x13b')});db[_0xcbe2('0x19')]['hasMany'](db['JscriptySessionReport'],{'as':_0xcbe2('0x13f'),'foreignKey':'VoiceQueueId'});db[_0xcbe2('0x19')][_0xcbe2('0x140')](db[_0xcbe2('0x29')],{'as':_0xcbe2('0x29'),'foreignKey':'TrunkId'});db[_0xcbe2('0x19')][_0xcbe2('0x140')](db[_0xcbe2('0x29')],{'as':_0xcbe2('0x141'),'foreignKey':_0xcbe2('0x142')});db['VoiceQueue'][_0xcbe2('0x140')](db[_0xcbe2('0x89')],{'as':_0xcbe2('0x89'),'foreignKey':_0xcbe2('0x143')});db['VoiceQueue'][_0xcbe2('0x140')](db[_0xcbe2('0x8b')],{'as':_0xcbe2('0x144'),'foreignKey':_0xcbe2('0x145')});db[_0xcbe2('0x19')][_0xcbe2('0x11b')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x11d'),'through':_0xcbe2('0x146')});db['VoiceQueue'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':'UserVoiceQueue'});db['VoiceQueue'][_0xcbe2('0x11b')](db[_0xcbe2('0xe5')],{'as':_0xcbe2('0x148'),'through':'TeamVoiceQueue'});db[_0xcbe2('0x19')][_0xcbe2('0x11b')](db['CmList'],{'as':'BlackLists','through':_0xcbe2('0x149')});db[_0xcbe2('0x1b')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':'User','foreignKey':'UserId'});db[_0xcbe2('0x1d')][_0xcbe2('0x140')](db['User'],{'as':'User','foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x1f')][_0xcbe2('0x10f')](db['VoiceMailMessage'],{'as':_0xcbe2('0x14a'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x14b'),'sourceKey':_0xcbe2('0x14c')});db[_0xcbe2('0x14d')][_0xcbe2('0x140')](db['VoiceMail'],{'foreignKey':_0xcbe2('0x14b'),'targetKey':_0xcbe2('0x14c')});db['VoiceCallReport'][_0xcbe2('0x10f')](db[_0xcbe2('0x25')],{'as':_0xcbe2('0x14e'),'foreignKey':_0xcbe2('0x14f'),'constraints':![]});db[_0xcbe2('0x21')][_0xcbe2('0x10f')](db['VoiceAgentReport'],{'as':_0xcbe2('0x150'),'foreignKey':_0xcbe2('0x14f'),'constraints':![]});db['VoiceCallReport'][_0xcbe2('0x140')](db['User'],{'as':_0xcbe2('0x12'),'foreignKey':'UserId'});db[_0xcbe2('0x21')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x3a')][_0xcbe2('0x140')](db['MailAccount'],{'as':_0xcbe2('0x3d'),'foreignKey':'MailAccountId'});db[_0xcbe2('0x3b')][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0xcbe2('0x3d')][_0xcbe2('0x153')](db[_0xcbe2('0x3a')],{'as':_0xcbe2('0x154'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x3d')][_0xcbe2('0x153')](db[_0xcbe2('0x3b')],{'as':_0xcbe2('0x155'),'onDelete':'cascade'});db[_0xcbe2('0x3d')]['hasMany'](db[_0xcbe2('0x85')],{'as':_0xcbe2('0x156'),'foreignKey':'MailAccountId','onDelete':'cascade'});db['MailAccount']['hasMany'](db[_0xcbe2('0x83')],{'as':_0xcbe2('0x157'),'foreignKey':_0xcbe2('0x158')});db[_0xcbe2('0x3d')][_0xcbe2('0x10f')](db[_0xcbe2('0x45')],{'as':_0xcbe2('0x14a'),'foreignKey':_0xcbe2('0x158')});db[_0xcbe2('0x3d')][_0xcbe2('0x10f')](db[_0xcbe2('0x43')],{'as':_0xcbe2('0x159')});db['MailAccount']['hasMany'](db[_0xcbe2('0x15a')],{'as':'Applications'});db['MailAccount']['belongsTo'](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':'ListId'});db['MailAccount']['belongsTo'](db[_0xcbe2('0x92')],{'as':_0xcbe2('0x92'),'foreignKey':_0xcbe2('0x15c')});db[_0xcbe2('0x3d')][_0xcbe2('0x140')](db[_0xcbe2('0x8b')],{'as':_0xcbe2('0x144'),'foreignKey':_0xcbe2('0x145')});db['MailAccount'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':'Agents','through':_0xcbe2('0x12d')});db[_0xcbe2('0x3f')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x32')});db[_0xcbe2('0x3f')][_0xcbe2('0x11b')](db['Team'],{'through':'team_has_mail_queues','as':_0xcbe2('0x148')});db[_0xcbe2('0x43')][_0xcbe2('0x10f')](db[_0xcbe2('0x45')],{'as':_0xcbe2('0x14a'),'onDelete':_0xcbe2('0x10d'),'foreignKey':'MailInteractionId'});db[_0xcbe2('0x43')][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x158')});db[_0xcbe2('0x43')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x43')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x15e'),'foreignKey':'UserId'});db['MailInteraction'][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x160'),'as':_0xcbe2('0x161')});db[_0xcbe2('0x43')][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x160'),'as':_0xcbe2('0x162')});db['MailInteraction'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':'Users','through':_0xcbe2('0x163'),'foreignKey':_0xcbe2('0x164')});db[_0xcbe2('0x45')][_0xcbe2('0x10f')](db[_0xcbe2('0x165')],{'as':_0xcbe2('0x166'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x45')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x12')});db['MailMessage'][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'onDelete':_0xcbe2('0x10d'),'as':'Contact'});db[_0xcbe2('0x45')][_0xcbe2('0x140')](db['MailInteraction'],{'as':_0xcbe2('0x167'),'foreignKey':_0xcbe2('0x164')});db[_0xcbe2('0x45')][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x158')});db[_0xcbe2('0x45')][_0xcbe2('0x140')](db[_0xcbe2('0x65')],{'as':_0xcbe2('0x65'),'foreignKey':'ChatWebsiteId'});db[_0xcbe2('0x45')][_0xcbe2('0x140')](db[_0xcbe2('0x6c')],{'as':_0xcbe2('0x6c'),'foreignKey':'ChatOfflineMessageId'});db[_0xcbe2('0x15a')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x15a')][_0xcbe2('0x140')](db[_0xcbe2('0x3f')],{'onDelete':_0xcbe2('0x168')});db['MailApplication'][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'onDelete':'restrict'});db['MailApplication']['belongsTo'](db[_0xcbe2('0x89')],{'onDelete':'restrict','foreignKey':'IntervalId'});db['MailApplication'][_0xcbe2('0x140')](db[_0xcbe2('0x15f')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x169')});db[_0xcbe2('0x48')][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{});db['MailQueueReport']['belongsTo'](db[_0xcbe2('0xf8')],{'as':'List','foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x48')]['belongsTo'](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x48')][_0xcbe2('0x140')](db['MailInteraction'],{});db[_0xcbe2('0x48')][_0xcbe2('0x140')](db[_0xcbe2('0x45')],{});db['MailQueueReport'][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{});db[_0xcbe2('0x48')][_0xcbe2('0x140')](db[_0xcbe2('0x3f')],{});db['Dashboard']['hasMany'](db[_0xcbe2('0x4c')],{'as':'Items','onDelete':_0xcbe2('0x10d')});db['FaxAccount']['hasMany'](db[_0xcbe2('0x85')],{'as':'Dispositions','foreignKey':_0xcbe2('0x16b'),'onDelete':_0xcbe2('0x10d')});db['FaxAccount'][_0xcbe2('0x10f')](db['CannedAnswer'],{'as':'Answers','foreignKey':'FaxAccountId'});db[_0xcbe2('0x4e')][_0xcbe2('0x10f')](db[_0xcbe2('0x52')],{'as':_0xcbe2('0x159')});db[_0xcbe2('0x4e')][_0xcbe2('0x10f')](db[_0xcbe2('0x50')],{'as':_0xcbe2('0x16c')});db[_0xcbe2('0x4e')][_0xcbe2('0x10f')](db[_0xcbe2('0x16')],{'as':_0xcbe2('0x16d'),'onDelete':'cascade'});db[_0xcbe2('0x4e')]['hasMany'](db[_0xcbe2('0x54')],{'as':'Messages'});db[_0xcbe2('0x4e')][_0xcbe2('0x140')](db[_0xcbe2('0x29')],{'as':_0xcbe2('0x29')});db[_0xcbe2('0x4e')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':'ListId'});db['FaxAccount'][_0xcbe2('0x140')](db[_0xcbe2('0x8b')],{'as':_0xcbe2('0x144'),'foreignKey':_0xcbe2('0x145')});db[_0xcbe2('0x4e')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x12b')});db[_0xcbe2('0x50')]['belongsTo'](db[_0xcbe2('0x12')],{'onDelete':_0xcbe2('0x168')});db['FaxApplication'][_0xcbe2('0x140')](db[_0xcbe2('0x55')],{'onDelete':'restrict'});db[_0xcbe2('0x50')][_0xcbe2('0x140')](db[_0xcbe2('0x4e')],{'onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x50')]['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':_0xcbe2('0x169')});db[_0xcbe2('0x52')]['hasMany'](db[_0xcbe2('0x54')],{'as':_0xcbe2('0x14a'),'onDelete':'cascade','foreignKey':'FaxInteractionId'});db[_0xcbe2('0x52')]['belongsTo'](db['FaxAccount'],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x16b')});db[_0xcbe2('0x52')]['belongsTo'](db['CmContact'],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db['FaxInteraction']['belongsTo'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x15e'),'foreignKey':_0xcbe2('0x10e')});db['FaxInteraction'][_0xcbe2('0x11b')](db['Tag'],{'through':_0xcbe2('0x16e'),'as':_0xcbe2('0x161')});db[_0xcbe2('0x52')]['belongsToMany'](db[_0xcbe2('0x15f')],{'through':'fax_interaction_has_tags','as':_0xcbe2('0x162')});db[_0xcbe2('0x52')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x16f'),'through':_0xcbe2('0x120'),'foreignKey':_0xcbe2('0x170')});db[_0xcbe2('0x54')][_0xcbe2('0x140')](db['User'],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x12')});db[_0xcbe2('0x54')][_0xcbe2('0x140')](db['FaxInteraction'],{'as':_0xcbe2('0x167'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0xcbe2('0x140')](db['CmContact'],{'onDelete':_0xcbe2('0x10d'),'as':'Contact'});db['FaxMessage'][_0xcbe2('0x140')](db[_0xcbe2('0x165')],{'as':_0xcbe2('0x165'),'foreignKey':_0xcbe2('0x171')});db[_0xcbe2('0x54')][_0xcbe2('0x140')](db[_0xcbe2('0x4e')],{'as':'Account','foreignKey':_0xcbe2('0x16b')});db[_0xcbe2('0x55')]['belongsToMany'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x33')});db[_0xcbe2('0x55')][_0xcbe2('0x11b')](db[_0xcbe2('0xe5')],{'through':_0xcbe2('0x172'),'as':_0xcbe2('0x148')});db[_0xcbe2('0x57')]['belongsTo'](db['FaxAccount'],{});db[_0xcbe2('0x57')]['belongsTo'](db[_0xcbe2('0xf8')],{'as':'List','foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x57')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':'ContactId'});db[_0xcbe2('0x57')][_0xcbe2('0x140')](db['FaxInteraction'],{});db[_0xcbe2('0x57')]['belongsTo'](db['FaxMessage'],{});db[_0xcbe2('0x57')][_0xcbe2('0x140')](db['User'],{});db[_0xcbe2('0x57')][_0xcbe2('0x140')](db[_0xcbe2('0x55')],{});db[_0xcbe2('0x59')][_0xcbe2('0x10f')](db[_0xcbe2('0x85')],{'as':'Dispositions','foreignKey':_0xcbe2('0x173'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x59')][_0xcbe2('0x10f')](db[_0xcbe2('0x83')],{'as':_0xcbe2('0x157'),'foreignKey':_0xcbe2('0x173')});db[_0xcbe2('0x59')][_0xcbe2('0x10f')](db[_0xcbe2('0x174')],{'as':'Messages','foreignKey':_0xcbe2('0x173')});db[_0xcbe2('0x59')][_0xcbe2('0x10f')](db[_0xcbe2('0x116')],{'as':'Interactions'});db[_0xcbe2('0x59')][_0xcbe2('0x10f')](db[_0xcbe2('0x5b')],{'as':_0xcbe2('0x16c')});db[_0xcbe2('0x59')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x59')][_0xcbe2('0x140')](db[_0xcbe2('0x8b')],{'as':_0xcbe2('0x144'),'foreignKey':_0xcbe2('0x145')});db['SmsAccount'][_0xcbe2('0x11b')](db['User'],{'as':'Agents','through':_0xcbe2('0x131')});db[_0xcbe2('0x5b')][_0xcbe2('0x140')](db['User'],{'onDelete':_0xcbe2('0x168')});db['SmsApplication'][_0xcbe2('0x140')](db[_0xcbe2('0x5d')],{'onDelete':_0xcbe2('0x168')});db['SmsApplication'][_0xcbe2('0x140')](db['SmsAccount'],{'onDelete':_0xcbe2('0x168')});db['SmsApplication'][_0xcbe2('0x140')](db['Interval'],{'onDelete':'restrict','foreignKey':_0xcbe2('0x143')});db[_0xcbe2('0x5b')][_0xcbe2('0x140')](db[_0xcbe2('0x15f')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x169')});db[_0xcbe2('0x116')][_0xcbe2('0x10f')](db[_0xcbe2('0x174')],{'as':_0xcbe2('0x14a'),'onDelete':'cascade','foreignKey':'SmsInteractionId'});db[_0xcbe2('0x116')]['belongsTo'](db[_0xcbe2('0x59')],{'as':'Account','foreignKey':_0xcbe2('0x173')});db[_0xcbe2('0x116')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x116')]['belongsTo'](db['User'],{'as':_0xcbe2('0x15e'),'foreignKey':_0xcbe2('0x10e')});db['SmsInteraction'][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':'sms_interaction_has_tags','as':_0xcbe2('0x161')});db['SmsInteraction']['belongsToMany'](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x175'),'as':_0xcbe2('0x162')});db[_0xcbe2('0x116')][_0xcbe2('0x11b')](db['User'],{'as':'Users','through':_0xcbe2('0x121'),'foreignKey':_0xcbe2('0x176')});db[_0xcbe2('0x174')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x12')});db[_0xcbe2('0x174')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x151')});db['SmsMessage']['belongsTo'](db[_0xcbe2('0x116')],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x167'),'foreignKey':_0xcbe2('0x176')});db[_0xcbe2('0x174')][_0xcbe2('0x140')](db[_0xcbe2('0x59')],{'as':'Account','foreignKey':'SmsAccountId'});db[_0xcbe2('0x5d')][_0xcbe2('0x11b')](db['User'],{'as':'Agents','through':_0xcbe2('0x35'),'foreignKey':_0xcbe2('0x177')});db[_0xcbe2('0x5d')][_0xcbe2('0x11b')](db['Team'],{'through':_0xcbe2('0x178'),'as':_0xcbe2('0x148')});db[_0xcbe2('0x5f')][_0xcbe2('0x10f')](db['Disposition'],{'as':_0xcbe2('0x156'),'foreignKey':'OpenchannelAccountId','onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x5f')][_0xcbe2('0x10f')](db[_0xcbe2('0x83')],{'as':'Answers','foreignKey':_0xcbe2('0x179')});db[_0xcbe2('0x5f')][_0xcbe2('0x10f')](db[_0xcbe2('0x113')],{'as':_0xcbe2('0x159'),'foreignKey':_0xcbe2('0x179')});db[_0xcbe2('0x5f')]['hasMany'](db[_0xcbe2('0x63')],{'as':_0xcbe2('0x14a'),'foreignKey':_0xcbe2('0x179')});db[_0xcbe2('0x5f')]['hasMany'](db[_0xcbe2('0x60')],{'as':_0xcbe2('0x16c'),'foreignKey':'OpenchannelAccountId'});db[_0xcbe2('0x5f')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x5f')][_0xcbe2('0x140')](db[_0xcbe2('0x8b')],{'as':'mandatoryDispositionPause','foreignKey':_0xcbe2('0x145')});db['OpenchannelAccount'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':'Agents','through':'user_has_openchannel_accounts'});db[_0xcbe2('0x60')]['belongsTo'](db['User'],{'onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x60')][_0xcbe2('0x140')](db[_0xcbe2('0x64')],{'onDelete':'restrict','foreignKey':_0xcbe2('0x17a')});db[_0xcbe2('0x60')][_0xcbe2('0x140')](db[_0xcbe2('0x5f')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x179')});db[_0xcbe2('0x60')]['belongsTo'](db['Interval'],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x143')});db[_0xcbe2('0x60')][_0xcbe2('0x140')](db[_0xcbe2('0x15f')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x169')});db['OpenchannelInteraction']['hasMany'](db[_0xcbe2('0x63')],{'as':_0xcbe2('0x14a'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x17b')});db[_0xcbe2('0x113')][_0xcbe2('0x140')](db[_0xcbe2('0x5f')],{'as':'Account','foreignKey':_0xcbe2('0x179')});db[_0xcbe2('0x113')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db['OpenchannelInteraction'][_0xcbe2('0x140')](db['User'],{'as':_0xcbe2('0x15e'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x113')]['belongsToMany'](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0xcbe2('0x161')});db[_0xcbe2('0x113')]['belongsToMany'](db[_0xcbe2('0x15f')],{'through':'openchannel_interaction_has_tags','as':_0xcbe2('0x162')});db[_0xcbe2('0x113')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x16f'),'through':_0xcbe2('0x122'),'foreignKey':'OpenchannelInteractionId'});db[_0xcbe2('0x63')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x12')});db['OpenchannelMessage'][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'onDelete':_0xcbe2('0x10d'),'as':'Contact'});db['OpenchannelMessage']['belongsTo'](db['OpenchannelInteraction'],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x167'),'foreignKey':'OpenchannelInteractionId'});db[_0xcbe2('0x63')][_0xcbe2('0x140')](db[_0xcbe2('0x165')],{'as':_0xcbe2('0x165'),'foreignKey':_0xcbe2('0x171')});db['OpenchannelMessage'][_0xcbe2('0x140')](db[_0xcbe2('0x5f')],{'as':_0xcbe2('0x15d'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x37'),'foreignKey':_0xcbe2('0x17a')});db[_0xcbe2('0x64')][_0xcbe2('0x11b')](db['Team'],{'through':_0xcbe2('0x17c'),'as':_0xcbe2('0x148')});db[_0xcbe2('0x65')][_0xcbe2('0x10f')](db[_0xcbe2('0x85')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x65')][_0xcbe2('0x10f')](db[_0xcbe2('0x83')],{'as':_0xcbe2('0x157'),'foreignKey':_0xcbe2('0x17d')});db['ChatWebsite']['hasMany'](db[_0xcbe2('0x72')],{'as':_0xcbe2('0x17e')});db[_0xcbe2('0x65')][_0xcbe2('0x10f')](db[_0xcbe2('0x69')],{'as':_0xcbe2('0x159')});db[_0xcbe2('0x65')]['hasMany'](db[_0xcbe2('0x17f')],{'as':_0xcbe2('0x16c')});db[_0xcbe2('0x65')][_0xcbe2('0x10f')](db[_0xcbe2('0x6a')],{'as':_0xcbe2('0x14a')});db['ChatWebsite']['belongsTo'](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x65')][_0xcbe2('0x140')](db['Interval'],{'as':_0xcbe2('0x89'),'foreignKey':_0xcbe2('0x143')});db[_0xcbe2('0x65')][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'as':_0xcbe2('0x3d'),'foreignKey':_0xcbe2('0x158')});db[_0xcbe2('0x65')]['belongsTo'](db[_0xcbe2('0x8b')],{'as':_0xcbe2('0x144'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xcbe2('0x65')]['belongsToMany'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x180')});db[_0xcbe2('0x67')][_0xcbe2('0x140')](db['OpenchannelAccount'],{});db[_0xcbe2('0x67')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x67')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x67')]['belongsTo'](db['OpenchannelInteraction'],{});db[_0xcbe2('0x67')]['belongsTo'](db['OpenchannelMessage'],{});db[_0xcbe2('0x67')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{});db[_0xcbe2('0x67')]['belongsTo'](db[_0xcbe2('0x64')],{});db['ChatApplication']['belongsTo'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x181'),'foreignKey':_0xcbe2('0x10e'),'onDelete':'restrict'});db[_0xcbe2('0x17f')][_0xcbe2('0x140')](db[_0xcbe2('0x6e')],{'as':_0xcbe2('0x182'),'foreignKey':_0xcbe2('0x183'),'onDelete':_0xcbe2('0x168')});db['ChatApplication'][_0xcbe2('0x140')](db[_0xcbe2('0x65')],{'as':_0xcbe2('0x184'),'foreignKey':'ChatWebsiteId','onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x17f')]['belongsTo'](db[_0xcbe2('0x15f')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x169')});db[_0xcbe2('0x69')]['hasMany'](db[_0xcbe2('0x6a')],{'as':_0xcbe2('0x14a'),'onDelete':_0xcbe2('0x10d'),'foreignKey':'ChatInteractionId'});db[_0xcbe2('0x69')][_0xcbe2('0x140')](db[_0xcbe2('0x65')],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x17d')});db['ChatInteraction'][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':'Contact','foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x69')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x15e'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x69')][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x185'),'as':_0xcbe2('0x161')});db[_0xcbe2('0x69')][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':'chat_interaction_has_tags','as':_0xcbe2('0x162')});db[_0xcbe2('0x69')][_0xcbe2('0x11b')](db['User'],{'as':_0xcbe2('0x16f'),'through':_0xcbe2('0x11f'),'foreignKey':_0xcbe2('0x186')});db[_0xcbe2('0x6a')][_0xcbe2('0x140')](db['User'],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x12')});db[_0xcbe2('0x6a')]['belongsTo'](db[_0xcbe2('0x76')],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x6a')]['belongsTo'](db[_0xcbe2('0x69')],{'onDelete':_0xcbe2('0x10d'),'as':_0xcbe2('0x167'),'foreignKey':_0xcbe2('0x186')});db[_0xcbe2('0x6a')]['belongsTo'](db[_0xcbe2('0x165')],{'as':_0xcbe2('0x165'),'foreignKey':_0xcbe2('0x171')});db[_0xcbe2('0x6a')][_0xcbe2('0x140')](db['ChatWebsite'],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x17d')});db[_0xcbe2('0x6c')]['hasMany'](db[_0xcbe2('0x165')],{'as':_0xcbe2('0x166'),'foreignKey':_0xcbe2('0x187'),'onDelete':'cascade','hooks':!![]});db[_0xcbe2('0x6c')][_0xcbe2('0x140')](db['CmContact'],{'onDelete':'cascade','as':'Contact','foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x6c')][_0xcbe2('0x140')](db[_0xcbe2('0x65')],{'as':'Account','foreignKey':_0xcbe2('0x17d')});db[_0xcbe2('0x6e')]['belongsToMany'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':'UserChatQueue','hooks':!![]});db[_0xcbe2('0x6e')][_0xcbe2('0x11b')](db[_0xcbe2('0xe5')],{'through':'team_has_chat_queues','as':_0xcbe2('0x148')});db[_0xcbe2('0x70')][_0xcbe2('0x10f')](db[_0xcbe2('0xd0')],{'as':_0xcbe2('0x14a'),'foreignKey':_0xcbe2('0x188'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x70')]['belongsToMany'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x13a'),'through':_0xcbe2('0x189')});db[_0xcbe2('0x72')][_0xcbe2('0x140')](db[_0xcbe2('0x65')],{'as':_0xcbe2('0x184'),'foreignKey':'ChatWebsiteId'});db[_0xcbe2('0x74')][_0xcbe2('0x10f')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x11c'),'foreignKey':'CompanyId'});db['CmContact'][_0xcbe2('0x10f')](db[_0xcbe2('0x18a')],{'as':_0xcbe2('0x13c'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x76')][_0xcbe2('0x10f')](db[_0xcbe2('0x79')],{'as':'HopperFinals','foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x76')][_0xcbe2('0x10f')](db[_0xcbe2('0x7b')],{'as':'HopperHistories','foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x76')]['hasMany'](db['ReportAgentPreview'],{'as':_0xcbe2('0x7d'),'foreignKey':'ContactId'});db['CmContact'][_0xcbe2('0x10f')](db[_0xcbe2('0xd5')],{'as':'JscriptySessions','foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x76')][_0xcbe2('0x10f')](db[_0xcbe2('0x113')],{'as':_0xcbe2('0x114'),'foreignKey':'ContactId','onDelete':_0xcbe2('0x168')});db['CmContact'][_0xcbe2('0x10f')](db[_0xcbe2('0x69')],{'as':_0xcbe2('0x115'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0xcbe2('0x76')][_0xcbe2('0x10f')](db['SmsInteraction'],{'as':_0xcbe2('0x117'),'foreignKey':'ContactId','onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x76')]['hasMany'](db[_0xcbe2('0x52')],{'as':'FaxInteractions','foreignKey':_0xcbe2('0x152'),'onDelete':_0xcbe2('0x168')});db['CmContact'][_0xcbe2('0x10f')](db[_0xcbe2('0x43')],{'as':_0xcbe2('0x119'),'foreignKey':_0xcbe2('0x152'),'onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x76')][_0xcbe2('0x140')](db['CmCompany'],{'as':_0xcbe2('0x18b'),'foreignKey':_0xcbe2('0x18c')});db[_0xcbe2('0x76')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x76')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x16f'),'through':_0xcbe2('0x18d')});db[_0xcbe2('0x76')][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'as':_0xcbe2('0x161'),'through':_0xcbe2('0x18e')});db[_0xcbe2('0x76')][_0xcbe2('0x11b')](db['Tag'],{'through':_0xcbe2('0x18e'),'as':_0xcbe2('0x162')});db['CmHopper'][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x18a')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x18a')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':'Agent','foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x18a')][_0xcbe2('0x140')](db[_0xcbe2('0x19')],{'as':_0xcbe2('0x182'),'foreignKey':_0xcbe2('0x13b'),'onDelete':'cascade'});db[_0xcbe2('0x18a')][_0xcbe2('0x140')](db[_0xcbe2('0xe9')],{'as':'Campaign','foreignKey':_0xcbe2('0x18f'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x18a')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x15e'),'foreignKey':_0xcbe2('0x190')});db[_0xcbe2('0x77')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':'Contact','foreignKey':_0xcbe2('0x152'),'onDelete':_0xcbe2('0x10d')});db['CmHopperBlack'][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':'List','foreignKey':_0xcbe2('0x16a'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x77')][_0xcbe2('0x140')](db['VoiceQueue'],{'as':'Queue','foreignKey':_0xcbe2('0x13b'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x77')][_0xcbe2('0x140')](db['Campaign'],{'as':_0xcbe2('0xe9'),'foreignKey':_0xcbe2('0x18f'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x191')][_0xcbe2('0x10f')](db[_0xcbe2('0x87')],{'as':{'plural':'All','singular':_0xcbe2('0x192')},'foreignKey':_0xcbe2('0x193'),'onDelete':_0xcbe2('0x10d'),'hooks':!![]});db[_0xcbe2('0x191')][_0xcbe2('0x10f')](db['Condition'],{'as':{'plural':_0xcbe2('0x194'),'singular':_0xcbe2('0x195')},'foreignKey':_0xcbe2('0x196'),'onDelete':_0xcbe2('0x10d'),'hooks':!![]});db[_0xcbe2('0x191')][_0xcbe2('0x10f')](db[_0xcbe2('0x81')],{'as':_0xcbe2('0x197'),'foreignKey':_0xcbe2('0x198'),'onDelete':_0xcbe2('0x10d'),'hooks':!![]});db[_0xcbe2('0x85')][_0xcbe2('0x10f')](db['Disposition'],{'as':_0xcbe2('0x156'),'foreignKey':_0xcbe2('0x199'),'onDelete':_0xcbe2('0x10d')});db['Interval'][_0xcbe2('0x10f')](db[_0xcbe2('0x89')],{'as':_0xcbe2('0x19a'),'foreignKey':_0xcbe2('0x143'),'onDelete':_0xcbe2('0x10d'),'hooks':!![],'required':![]});db[_0xcbe2('0x89')][_0xcbe2('0x10f')](db[_0xcbe2('0x16')],{'as':_0xcbe2('0x111'),'foreignKey':_0xcbe2('0x143'),'onDelete':_0xcbe2('0x168')});db['Interval'][_0xcbe2('0x10f')](db[_0xcbe2('0x15a')],{'as':_0xcbe2('0x19b'),'foreignKey':_0xcbe2('0x143')});db[_0xcbe2('0x89')][_0xcbe2('0x10f')](db[_0xcbe2('0x17f')],{'as':_0xcbe2('0x19c'),'foreignKey':'IntervalId'});db[_0xcbe2('0x89')][_0xcbe2('0x10f')](db[_0xcbe2('0x50')],{'as':'FaxApplications','foreignKey':_0xcbe2('0x143')});db[_0xcbe2('0x89')][_0xcbe2('0x10f')](db[_0xcbe2('0x5b')],{'as':_0xcbe2('0x19d'),'foreignKey':_0xcbe2('0x143')});db['Schedule'][_0xcbe2('0x140')](db['MailAccount'],{});db[_0xcbe2('0x90')][_0xcbe2('0x140')](db['AnalyticDefaultReport'],{'foreignKey':_0xcbe2('0x19e')});db[_0xcbe2('0x90')]['belongsTo'](db[_0xcbe2('0x19f')],{'foreignKey':_0xcbe2('0x1a0')});db['Sound'][_0xcbe2('0x11b')](db[_0xcbe2('0x17')],{'as':_0xcbe2('0x1a1'),'through':'moh_has_sounds','onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x15f')]['belongsToMany'](db['CmContact'],{'through':_0xcbe2('0x18e')});db[_0xcbe2('0x15f')][_0xcbe2('0x11b')](db['ChatInteraction'],{'through':'chat_interaction_has_tags'});db['Tag'][_0xcbe2('0x11b')](db[_0xcbe2('0x43')],{'through':_0xcbe2('0x160')});db[_0xcbe2('0x15f')][_0xcbe2('0x11b')](db['SmsInteraction'],{'through':'sms_interaction_has_tags'});db[_0xcbe2('0x15f')][_0xcbe2('0x11b')](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db[_0xcbe2('0x15f')][_0xcbe2('0x11b')](db[_0xcbe2('0x113')],{'through':_0xcbe2('0x1a2')});db[_0xcbe2('0x15f')][_0xcbe2('0x11b')](db[_0xcbe2('0x104')],{'through':_0xcbe2('0x1a3')});db['Trigger'][_0xcbe2('0x10f')](db['Condition'],{'as':{'plural':_0xcbe2('0x1a4'),'singular':'AllCondition'},'foreignKey':_0xcbe2('0x1a5'),'onDelete':_0xcbe2('0x10d'),'hooks':!![]});db[_0xcbe2('0x94')][_0xcbe2('0x10f')](db['Condition'],{'as':{'plural':'AnyConditions','singular':_0xcbe2('0x1a6')},'foreignKey':_0xcbe2('0x1a7'),'onDelete':_0xcbe2('0x10d'),'hooks':!![]});db[_0xcbe2('0x94')][_0xcbe2('0x10f')](db[_0xcbe2('0x81')],{'as':_0xcbe2('0x197'),'foreignKey':_0xcbe2('0x1a8'),'onDelete':_0xcbe2('0x10d'),'hooks':!![]});db[_0xcbe2('0x19f')][_0xcbe2('0x10f')](db[_0xcbe2('0xa0')],{'as':'Fields','onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1a0'),'hooks':!![]});db[_0xcbe2('0x1a9')][_0xcbe2('0x10f')](db[_0xcbe2('0xa0')],{'as':_0xcbe2('0x1aa'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x19e')});db[_0xcbe2('0x9e')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xcbe2('0x1aa'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ab')});db[_0xcbe2('0xa0')][_0xcbe2('0x140')](db['AnalyticMetric'],{'foreignKey':_0xcbe2('0x1ab')});db[_0xcbe2('0xa3')][_0xcbe2('0x10f')](db[_0xcbe2('0xa4')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0xa4')][_0xcbe2('0x10f')](db['SalesforceField'],{'as':_0xcbe2('0x1ad'),'onDelete':'cascade','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xa4')][_0xcbe2('0x10f')](db[_0xcbe2('0x1af')],{'as':_0xcbe2('0x1b0'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b1')});db['SalesforceConfiguration'][_0xcbe2('0x10f')](db[_0xcbe2('0x1af')],{'as':'Fields','onDelete':'cascade','foreignKey':'FieldId'});db[_0xcbe2('0xa4')][_0xcbe2('0x140')](db[_0xcbe2('0xa3')],{'as':'Account','foreignKey':'AccountId'});db[_0xcbe2('0x1af')][_0xcbe2('0x10f')](db['SalesforceField'],{'as':_0xcbe2('0x1b2'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1af')][_0xcbe2('0x10f')](db[_0xcbe2('0x1af')],{'as':_0xcbe2('0x1b3'),'foreignKey':'DescriptionId'});db['SalesforceField'][_0xcbe2('0x10f')](db[_0xcbe2('0x1af')],{'as':_0xcbe2('0x1b4'),'foreignKey':_0xcbe2('0x1b5')});db['SalesforceField']['belongsTo'](db[_0xcbe2('0x96')],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0xa7')][_0xcbe2('0x10f')](db[_0xcbe2('0xa9')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0xa9')][_0xcbe2('0x10f')](db[_0xcbe2('0x1b8')],{'as':_0xcbe2('0x1ad'),'onDelete':'cascade','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xa9')][_0xcbe2('0x10f')](db[_0xcbe2('0x1b8')],{'as':_0xcbe2('0x1b0'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0xa9')]['hasMany'](db[_0xcbe2('0x1b8')],{'as':'Fields','onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xa9')][_0xcbe2('0x140')](db[_0xcbe2('0xa7')],{'as':'Account','foreignKey':'AccountId'});db['SugarcrmField'][_0xcbe2('0x10f')](db[_0xcbe2('0x1b8')],{'as':_0xcbe2('0x1b2'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1b8')][_0xcbe2('0x10f')](db[_0xcbe2('0x1b8')],{'as':_0xcbe2('0x1b3'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0x1b8')][_0xcbe2('0x10f')](db[_0xcbe2('0x1b8')],{'as':_0xcbe2('0x1b4'),'foreignKey':'FieldId'});db['SugarcrmField'][_0xcbe2('0x140')](db[_0xcbe2('0x96')],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0xab')][_0xcbe2('0x10f')](db[_0xcbe2('0xad')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ac')});db['DeskConfiguration'][_0xcbe2('0x10f')](db[_0xcbe2('0xae')],{'as':_0xcbe2('0x1ad'),'onDelete':'cascade','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xad')][_0xcbe2('0x10f')](db[_0xcbe2('0xae')],{'as':_0xcbe2('0x1b0'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0xad')][_0xcbe2('0x10f')](db['DeskField'],{'as':_0xcbe2('0x1aa'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xad')][_0xcbe2('0x140')](db[_0xcbe2('0xab')],{'as':_0xcbe2('0x15d'),'foreignKey':'AccountId'});db['DeskConfiguration']['belongsToMany'](db[_0xcbe2('0x15f')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0xcbe2('0x10f')](db[_0xcbe2('0xae')],{'as':'Subject','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xae')][_0xcbe2('0x10f')](db[_0xcbe2('0xae')],{'as':'Description','foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0xae')][_0xcbe2('0x10f')](db[_0xcbe2('0xae')],{'as':_0xcbe2('0x1b4'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xae')][_0xcbe2('0x140')](db['Variable'],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0x1b9')][_0xcbe2('0x10f')](db[_0xcbe2('0x1ba')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0x1ba')][_0xcbe2('0x10f')](db['ZohoField'],{'as':_0xcbe2('0x1ad'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1ba')][_0xcbe2('0x10f')](db[_0xcbe2('0x1bb')],{'as':_0xcbe2('0x1b0'),'onDelete':'cascade','foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0x1ba')][_0xcbe2('0x10f')](db['ZohoField'],{'as':'Fields','onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b5')});db['ZohoConfiguration'][_0xcbe2('0x140')](db[_0xcbe2('0x1b9')],{'as':'Account','foreignKey':'AccountId'});db['ZohoField'][_0xcbe2('0x10f')](db[_0xcbe2('0x1bb')],{'as':_0xcbe2('0x1b2'),'foreignKey':_0xcbe2('0x1ae')});db['ZohoField'][_0xcbe2('0x10f')](db[_0xcbe2('0x1bb')],{'as':_0xcbe2('0x1b3'),'foreignKey':'DescriptionId'});db[_0xcbe2('0x1bb')][_0xcbe2('0x10f')](db[_0xcbe2('0x1bb')],{'as':_0xcbe2('0x1b4'),'foreignKey':'FieldId'});db[_0xcbe2('0x1bb')][_0xcbe2('0x140')](db['Variable'],{'as':'Variable','foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0x1bc')][_0xcbe2('0x10f')](db[_0xcbe2('0xb3')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':'AccountId'});db[_0xcbe2('0xb3')][_0xcbe2('0x10f')](db[_0xcbe2('0xb4')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0xcbe2('0xb3')][_0xcbe2('0x10f')](db[_0xcbe2('0xb4')],{'as':_0xcbe2('0x1b0'),'foreignKey':'DescriptionId'});db[_0xcbe2('0xb3')][_0xcbe2('0x10f')](db[_0xcbe2('0xb4')],{'as':_0xcbe2('0x1aa'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xb3')]['belongsTo'](db[_0xcbe2('0x1bc')],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x1ac')});db['ZendeskConfiguration']['belongsToMany'](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x1bd')});db[_0xcbe2('0xb4')][_0xcbe2('0x10f')](db['ZendeskField'],{'as':_0xcbe2('0x1b2'),'foreignKey':'SubjectId'});db['ZendeskField'][_0xcbe2('0x10f')](db[_0xcbe2('0xb4')],{'as':_0xcbe2('0x1b3'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0xb4')][_0xcbe2('0x10f')](db['ZendeskField'],{'as':'Field','foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xb4')]['belongsTo'](db[_0xcbe2('0x96')],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db['FreshdeskAccount'][_0xcbe2('0x10f')](db[_0xcbe2('0xb7')],{'as':_0xcbe2('0x1b7'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xcbe2('0xb7')][_0xcbe2('0x10f')](db[_0xcbe2('0x1be')],{'as':_0xcbe2('0x1ad'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xb7')][_0xcbe2('0x10f')](db[_0xcbe2('0x1be')],{'as':_0xcbe2('0x1b0'),'onDelete':_0xcbe2('0x10d'),'foreignKey':'DescriptionId'});db[_0xcbe2('0xb7')][_0xcbe2('0x10f')](db[_0xcbe2('0x1be')],{'as':_0xcbe2('0x1aa'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xb7')][_0xcbe2('0x140')](db[_0xcbe2('0x1bf')],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0xb7')][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x1c0')});db['FreshdeskField'][_0xcbe2('0x10f')](db[_0xcbe2('0x1be')],{'as':_0xcbe2('0x1b2'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1be')][_0xcbe2('0x10f')](db[_0xcbe2('0x1be')],{'as':'Description','foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0x1be')][_0xcbe2('0x10f')](db[_0xcbe2('0x1be')],{'as':'Field','foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0x1be')][_0xcbe2('0x140')](db['Variable'],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0xb9')]['hasMany'](db[_0xcbe2('0xbb')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':'AccountId'});db[_0xcbe2('0xbb')][_0xcbe2('0x10f')](db['VtigerField'],{'as':_0xcbe2('0x1ad'),'foreignKey':_0xcbe2('0x1ae')});db['VtigerConfiguration'][_0xcbe2('0x10f')](db[_0xcbe2('0xbd')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0xcbe2('0xbb')][_0xcbe2('0x10f')](db[_0xcbe2('0xbd')],{'as':'Fields','foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xbb')][_0xcbe2('0x140')](db['VtigerAccount'],{'as':_0xcbe2('0x15d'),'foreignKey':'AccountId'});db[_0xcbe2('0xbd')][_0xcbe2('0x10f')](db[_0xcbe2('0xbd')],{'as':_0xcbe2('0x1b2'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xbd')]['hasMany'](db['VtigerField'],{'as':_0xcbe2('0x1b3'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0xbd')][_0xcbe2('0x10f')](db['VtigerField'],{'as':_0xcbe2('0x1b4'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0xbd')][_0xcbe2('0x140')](db['Variable'],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0xbe')]['hasMany'](db[_0xcbe2('0xc0')],{'as':_0xcbe2('0x1b7'),'onDelete':'cascade','foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0xc0')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c1')],{'as':'Subjects','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xc0')]['hasMany'](db[_0xcbe2('0x1c1')],{'as':_0xcbe2('0x1b0'),'foreignKey':_0xcbe2('0x1b1')});db['ServicenowConfiguration'][_0xcbe2('0x10f')](db[_0xcbe2('0x1c1')],{'as':_0xcbe2('0x1aa'),'foreignKey':_0xcbe2('0x1b5')});db['ServicenowConfiguration']['belongsTo'](db[_0xcbe2('0xbe')],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0x1c1')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c1')],{'as':'Subject','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1c1')]['hasMany'](db[_0xcbe2('0x1c1')],{'as':_0xcbe2('0x1b3'),'foreignKey':'DescriptionId'});db[_0xcbe2('0x1c1')]['hasMany'](db[_0xcbe2('0x1c1')],{'as':_0xcbe2('0x1b4'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0x1c1')][_0xcbe2('0x140')](db[_0xcbe2('0x96')],{'as':'Variable','foreignKey':'VariableId'});db[_0xcbe2('0xc3')][_0xcbe2('0x10f')](db[_0xcbe2('0xc5')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0xc5')][_0xcbe2('0x10f')](db['Dynamics365Field'],{'as':'Subjects','onDelete':_0xcbe2('0x10d'),'foreignKey':'SubjectId'});db[_0xcbe2('0xc5')][_0xcbe2('0x10f')](db[_0xcbe2('0xc7')],{'as':_0xcbe2('0x1b0'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0xc5')][_0xcbe2('0x10f')](db[_0xcbe2('0xc7')],{'as':_0xcbe2('0x1aa'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1b5')});db['Dynamics365Configuration'][_0xcbe2('0x140')](db[_0xcbe2('0xc3')],{'as':'Account','foreignKey':_0xcbe2('0x1ac')});db['Dynamics365Field'][_0xcbe2('0x10f')](db[_0xcbe2('0xc7')],{'as':_0xcbe2('0x1b2'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0xc7')][_0xcbe2('0x10f')](db['Dynamics365Field'],{'as':_0xcbe2('0x1b3'),'foreignKey':'DescriptionId'});db[_0xcbe2('0xc7')]['hasMany'](db[_0xcbe2('0xc7')],{'as':_0xcbe2('0x1b4'),'foreignKey':'FieldId'});db['Dynamics365Field'][_0xcbe2('0x140')](db[_0xcbe2('0x96')],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0xc9')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c2')],{'as':_0xcbe2('0x1b7'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0x1c2')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c3')],{'as':_0xcbe2('0x1ad'),'foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1c2')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c3')],{'as':_0xcbe2('0x1b0'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0x1c2')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c3')],{'as':_0xcbe2('0x1aa'),'foreignKey':_0xcbe2('0x1b5')});db[_0xcbe2('0x1c2')][_0xcbe2('0x140')](db[_0xcbe2('0xc9')],{'as':'Account','foreignKey':_0xcbe2('0x1ac')});db[_0xcbe2('0x1c3')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c3')],{'as':'Subject','foreignKey':_0xcbe2('0x1ae')});db[_0xcbe2('0x1c3')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c3')],{'as':_0xcbe2('0x1b3'),'foreignKey':_0xcbe2('0x1b1')});db[_0xcbe2('0x1c3')][_0xcbe2('0x10f')](db[_0xcbe2('0x1c3')],{'as':'Field','foreignKey':'FieldId'});db[_0xcbe2('0x1c3')]['belongsTo'](db[_0xcbe2('0x96')],{'as':_0xcbe2('0x96'),'foreignKey':_0xcbe2('0x1b6')});db[_0xcbe2('0x1c4')]['belongsTo'](db[_0xcbe2('0x65')],{});db[_0xcbe2('0x1c4')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':'ListId'});db[_0xcbe2('0x1c4')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x1c4')][_0xcbe2('0x140')](db[_0xcbe2('0x69')],{});db['ChatQueueReport'][_0xcbe2('0x140')](db[_0xcbe2('0x6a')],{});db[_0xcbe2('0x1c4')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{});db[_0xcbe2('0x1c4')][_0xcbe2('0x140')](db[_0xcbe2('0x6e')],{});db[_0xcbe2('0xd0')][_0xcbe2('0x140')](db['User'],{'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1c5')});db[_0xcbe2('0xd0')]['belongsTo'](db['User'],{'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1c6')});db[_0xcbe2('0xd5')][_0xcbe2('0x10f')](db[_0xcbe2('0xd3')],{'foreignKey':_0xcbe2('0x1c7'),'onDelete':'cascade'});db[_0xcbe2('0xd5')]['hasMany'](db[_0xcbe2('0xd1')],{'foreignKey':_0xcbe2('0x1c7'),'onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db['SmsAccount'],{});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db['CmList'],{'as':_0xcbe2('0x15b'),'foreignKey':'ListId'});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db[_0xcbe2('0x116')],{});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db[_0xcbe2('0x174')],{});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{});db[_0xcbe2('0x1c8')][_0xcbe2('0x140')](db[_0xcbe2('0x5d')],{});db[_0xcbe2('0xdb')]['hasMany'](db[_0xcbe2('0xd5')],{'foreignKey':_0xcbe2('0x1c9')});db[_0xcbe2('0xdb')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0xcbe2('0x1c9')});db[_0xcbe2('0xdb')][_0xcbe2('0x10f')](db[_0xcbe2('0xd1')],{'foreignKey':_0xcbe2('0x1c9')});db['SquareProject'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x16f'),'through':'user_has_square_projects'});db[_0xcbe2('0xe5')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':'Agents','through':_0xcbe2('0x1ca')});db['Team'][_0xcbe2('0x11b')](db['VoiceQueue'],{'through':_0xcbe2('0x1cb'),'as':_0xcbe2('0x124')});db[_0xcbe2('0xe5')][_0xcbe2('0x11b')](db[_0xcbe2('0x3f')],{'through':_0xcbe2('0x1cc'),'as':_0xcbe2('0x126')});db['Team'][_0xcbe2('0x11b')](db[_0xcbe2('0x6e')],{'through':_0xcbe2('0x1cd'),'as':_0xcbe2('0x127')});db[_0xcbe2('0xe5')][_0xcbe2('0x11b')](db[_0xcbe2('0x55')],{'through':'team_has_fax_queues','as':'FaxQueues'});db['Team'][_0xcbe2('0x11b')](db['SmsQueue'],{'through':_0xcbe2('0x178'),'as':_0xcbe2('0x1ce')});db[_0xcbe2('0xe5')][_0xcbe2('0x11b')](db[_0xcbe2('0x64')],{'through':_0xcbe2('0x17c'),'as':_0xcbe2('0x128')});db['Team']['belongsToMany'](db[_0xcbe2('0x129')],{'through':_0xcbe2('0x1cf'),'as':'WhatsappQueues'});db[_0xcbe2('0xe5')]['belongsToMany'](db['VoicePrefix'],{'through':_0xcbe2('0x1d0'),'as':_0xcbe2('0x125')});db[_0xcbe2('0xe9')][_0xcbe2('0x10f')](db['CmHopper'],{'as':_0xcbe2('0x13c'),'foreignKey':_0xcbe2('0x18f')});db['Campaign']['hasMany'](db[_0xcbe2('0x79')],{'as':_0xcbe2('0x13d'),'foreignKey':_0xcbe2('0x18f')});db['Campaign'][_0xcbe2('0x10f')](db['CmHopperHistory'],{'as':_0xcbe2('0x13e'),'foreignKey':_0xcbe2('0x18f')});db[_0xcbe2('0xe9')][_0xcbe2('0x10f')](db[_0xcbe2('0x77')],{'as':_0xcbe2('0x1d1'),'foreignKey':'CampaignId'});db['Campaign']['belongsTo'](db[_0xcbe2('0x29')],{'as':_0xcbe2('0x29'),'foreignKey':_0xcbe2('0x1d2')});db[_0xcbe2('0xe9')]['belongsTo'](db['Trunk'],{'as':'TrunkBackup','foreignKey':_0xcbe2('0x142')});db[_0xcbe2('0xe9')][_0xcbe2('0x140')](db['Interval'],{'as':_0xcbe2('0x89'),'foreignKey':_0xcbe2('0x143')});db[_0xcbe2('0xe9')][_0xcbe2('0x140')](db['SquareProject'],{'as':_0xcbe2('0xe0'),'foreignKey':_0xcbe2('0x1d3')});db[_0xcbe2('0xe9')][_0xcbe2('0x11b')](db[_0xcbe2('0xf8')],{'as':'Lists','through':_0xcbe2('0x1d4')});db[_0xcbe2('0xe9')][_0xcbe2('0x11b')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x1d5'),'through':_0xcbe2('0x1d6')});db[_0xcbe2('0x165')][_0xcbe2('0x140')](db[_0xcbe2('0x6c')],{'as':_0xcbe2('0x6c'),'foreignKey':_0xcbe2('0x187')});db[_0xcbe2('0xef')]['belongsTo'](db['MailMessage'],{});db[_0xcbe2('0xef')][_0xcbe2('0x140')](db['MailInteraction'],{});db['MailTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'foreignKey':_0xcbe2('0x1d7'),'as':_0xcbe2('0x1d8')});db[_0xcbe2('0xef')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':_0xcbe2('0x1d9'),'as':_0xcbe2('0x1da')});db[_0xcbe2('0xef')][_0xcbe2('0x140')](db['User'],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xcbe2('0xef')]['belongsTo'](db[_0xcbe2('0x3f')],{'foreignKey':_0xcbe2('0x1db'),'as':_0xcbe2('0x1dc')});db['MailTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x3d')],{'foreignKey':_0xcbe2('0x1dd'),'as':_0xcbe2('0x1de')});db['ChatTransferReport']['belongsTo'](db['ChatMessage'],{});db[_0xcbe2('0x1df')][_0xcbe2('0x140')](db[_0xcbe2('0x69')],{});db[_0xcbe2('0x1df')]['belongsTo'](db[_0xcbe2('0x65')],{'foreignKey':_0xcbe2('0x1e0'),'as':'FromAccount'});db['ChatTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':_0xcbe2('0x1d9'),'as':_0xcbe2('0x1da')});db['ChatTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':'ToUserId','as':'ToAgent'});db['ChatTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x6e')],{'foreignKey':'ToChatQueueId','as':'ToQueue'});db[_0xcbe2('0x1df')][_0xcbe2('0x140')](db[_0xcbe2('0x65')],{'foreignKey':_0xcbe2('0x1e1'),'as':_0xcbe2('0x1de')});db[_0xcbe2('0xf2')][_0xcbe2('0x140')](db[_0xcbe2('0x54')],{});db[_0xcbe2('0xf2')][_0xcbe2('0x140')](db[_0xcbe2('0x52')],{});db[_0xcbe2('0xf2')]['belongsTo'](db[_0xcbe2('0x4e')],{'foreignKey':_0xcbe2('0x1e2'),'as':_0xcbe2('0x1d8')});db['FaxTransferReport'][_0xcbe2('0x140')](db['User'],{'foreignKey':_0xcbe2('0x1d9'),'as':_0xcbe2('0x1da')});db[_0xcbe2('0xf2')][_0xcbe2('0x140')](db['User'],{'foreignKey':'ToUserId','as':'ToAgent'});db['FaxTransferReport'][_0xcbe2('0x140')](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':'ToQueue'});db[_0xcbe2('0xf2')]['belongsTo'](db[_0xcbe2('0x4e')],{'foreignKey':'ToFaxAccountId','as':'ToAccount'});db[_0xcbe2('0xf4')][_0xcbe2('0x140')](db[_0xcbe2('0x63')],{});db[_0xcbe2('0xf4')][_0xcbe2('0x140')](db['OpenchannelInteraction'],{});db[_0xcbe2('0xf4')]['belongsTo'](db['OpenchannelAccount'],{'foreignKey':_0xcbe2('0x1e3'),'as':'FromAccount'});db[_0xcbe2('0xf4')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':_0xcbe2('0x1d9'),'as':_0xcbe2('0x1da')});db[_0xcbe2('0xf4')][_0xcbe2('0x140')](db['User'],{'foreignKey':_0xcbe2('0x1e4'),'as':_0xcbe2('0x1e5')});db[_0xcbe2('0xf4')]['belongsTo'](db['OpenchannelQueue'],{'foreignKey':_0xcbe2('0x1e6'),'as':'ToQueue'});db['OpenchannelTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x5f')],{'foreignKey':_0xcbe2('0x1e7'),'as':_0xcbe2('0x1de')});db[_0xcbe2('0xf6')][_0xcbe2('0x140')](db[_0xcbe2('0x174')],{});db['SmsTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x116')],{});db[_0xcbe2('0xf6')][_0xcbe2('0x140')](db[_0xcbe2('0x59')],{'foreignKey':_0xcbe2('0x1e8'),'as':_0xcbe2('0x1d8')});db[_0xcbe2('0xf6')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':_0xcbe2('0x1d9'),'as':_0xcbe2('0x1da')});db['SmsTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':_0xcbe2('0x1e4'),'as':_0xcbe2('0x1e5')});db[_0xcbe2('0xf6')][_0xcbe2('0x140')](db[_0xcbe2('0x5d')],{'foreignKey':'ToSmsQueueId','as':_0xcbe2('0x1dc')});db[_0xcbe2('0xf6')][_0xcbe2('0x140')](db[_0xcbe2('0x59')],{'foreignKey':_0xcbe2('0x1e9'),'as':_0xcbe2('0x1de')});db[_0xcbe2('0xf8')][_0xcbe2('0x10f')](db[_0xcbe2('0x85')],{'as':_0xcbe2('0x156'),'foreignKey':'ListId','onDelete':'cascade'});db[_0xcbe2('0xf8')][_0xcbe2('0x10f')](db[_0xcbe2('0x7f')],{'as':_0xcbe2('0x1ea'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0xf8')][_0xcbe2('0x10f')](db['CmContact'],{'as':_0xcbe2('0x11c'),'onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0xf8')][_0xcbe2('0x10f')](db[_0xcbe2('0x79')],{'as':'HopperFinals','foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0xf8')][_0xcbe2('0x10f')](db[_0xcbe2('0x7b')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0xcbe2('0x10f')](db[_0xcbe2('0x7d')],{'as':_0xcbe2('0x7d'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0xf8')][_0xcbe2('0x11b')](db[_0xcbe2('0x19')],{'as':_0xcbe2('0x1eb'),'through':'voice_queues_has_cm_lists'});db[_0xcbe2('0xf8')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':'cm_user_has_lists'});db[_0xcbe2('0xf9')][_0xcbe2('0x10f')](db[_0xcbe2('0x16')],{'as':_0xcbe2('0x111'),'onDelete':'cascade'});db[_0xcbe2('0xf9')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x1ec')});db['VoicePrefix'][_0xcbe2('0x11b')](db['Team'],{'through':_0xcbe2('0x1d0'),'as':_0xcbe2('0x148')});db[_0xcbe2('0xfb')]['hasMany'](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x16f'),'foreignKey':'userProfileId'});db['UserProfile'][_0xcbe2('0x10f')](db[_0xcbe2('0x1ed')],{'as':_0xcbe2('0x1ee'),'foreignKey':'userProfileId','onDelete':_0xcbe2('0x10d')});db[_0xcbe2('0x1ed')][_0xcbe2('0x10f')](db['UserProfileResource'],{'as':_0xcbe2('0x1ef'),'foreignKey':_0xcbe2('0x1f0'),'onDelete':_0xcbe2('0x10d')});db['WhatsappAccount'][_0xcbe2('0x10f')](db[_0xcbe2('0x85')],{'as':_0xcbe2('0x156'),'foreignKey':_0xcbe2('0x1f1'),'onDelete':_0xcbe2('0x10d')});db['WhatsappAccount'][_0xcbe2('0x10f')](db['CannedAnswer'],{'as':_0xcbe2('0x157'),'foreignKey':_0xcbe2('0x1f1')});db[_0xcbe2('0x100')][_0xcbe2('0x10f')](db['WhatsappMessage'],{'as':_0xcbe2('0x14a'),'foreignKey':'WhatsappAccountId'});db[_0xcbe2('0x100')][_0xcbe2('0x10f')](db[_0xcbe2('0x104')],{'as':_0xcbe2('0x159')});db[_0xcbe2('0x100')][_0xcbe2('0x10f')](db[_0xcbe2('0x102')],{'as':_0xcbe2('0x16c')});db[_0xcbe2('0x100')]['belongsTo'](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x100')][_0xcbe2('0x140')](db['Pause'],{'as':_0xcbe2('0x144'),'foreignKey':_0xcbe2('0x145')});db[_0xcbe2('0x100')][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x147'),'through':'user_has_whatsapp_accounts'});db[_0xcbe2('0x102')][_0xcbe2('0x140')](db['User'],{'onDelete':'restrict'});db[_0xcbe2('0x102')][_0xcbe2('0x140')](db[_0xcbe2('0x129')],{'onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x102')][_0xcbe2('0x140')](db['WhatsappAccount'],{'onDelete':_0xcbe2('0x168')});db[_0xcbe2('0x102')]['belongsTo'](db[_0xcbe2('0x89')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x143')});db['WhatsappApplication'][_0xcbe2('0x140')](db[_0xcbe2('0x15f')],{'onDelete':_0xcbe2('0x168'),'foreignKey':_0xcbe2('0x169')});db[_0xcbe2('0x104')][_0xcbe2('0x10f')](db[_0xcbe2('0x105')],{'as':'Messages','onDelete':_0xcbe2('0x10d'),'foreignKey':_0xcbe2('0x1f2')});db[_0xcbe2('0x104')][_0xcbe2('0x140')](db['WhatsappAccount'],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x1f1')});db[_0xcbe2('0x104')]['belongsTo'](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db['WhatsappInteraction'][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x15e'),'foreignKey':_0xcbe2('0x10e')});db[_0xcbe2('0x104')][_0xcbe2('0x11b')](db[_0xcbe2('0x15f')],{'through':'whatsapp_interaction_has_tags','as':_0xcbe2('0x161')});db[_0xcbe2('0x104')]['belongsToMany'](db[_0xcbe2('0x15f')],{'through':_0xcbe2('0x1a3'),'as':_0xcbe2('0x162')});db['WhatsappInteraction'][_0xcbe2('0x11b')](db[_0xcbe2('0x12')],{'as':_0xcbe2('0x16f'),'through':'user_has_whatsapp_interactions','foreignKey':'WhatsappInteractionId'});db['WhatsappMessage']['belongsTo'](db[_0xcbe2('0x12')],{'as':'User'});db[_0xcbe2('0x105')][_0xcbe2('0x140')](db['CmContact'],{'onDelete':'cascade','as':_0xcbe2('0x151')});db[_0xcbe2('0x105')][_0xcbe2('0x140')](db[_0xcbe2('0x104')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xcbe2('0x1f2')});db[_0xcbe2('0x105')][_0xcbe2('0x140')](db['WhatsappAccount'],{'as':_0xcbe2('0x15d'),'foreignKey':_0xcbe2('0x1f1')});db[_0xcbe2('0x106')][_0xcbe2('0x140')](db[_0xcbe2('0x100')],{});db[_0xcbe2('0x106')][_0xcbe2('0x140')](db[_0xcbe2('0xf8')],{'as':_0xcbe2('0x15b'),'foreignKey':_0xcbe2('0x16a')});db[_0xcbe2('0x106')][_0xcbe2('0x140')](db[_0xcbe2('0x76')],{'as':_0xcbe2('0x151'),'foreignKey':_0xcbe2('0x152')});db[_0xcbe2('0x106')]['belongsTo'](db[_0xcbe2('0x104')],{});db[_0xcbe2('0x106')]['belongsTo'](db[_0xcbe2('0x129')],{});db[_0xcbe2('0x106')][_0xcbe2('0x140')](db[_0xcbe2('0x105')],{});db['WhatsappQueueReport'][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{});db['WhatsappTransferReport'][_0xcbe2('0x140')](db[_0xcbe2('0x105')],{});db[_0xcbe2('0x107')][_0xcbe2('0x140')](db['WhatsappInteraction'],{});db['WhatsappTransferReport']['belongsTo'](db[_0xcbe2('0x100')],{'foreignKey':'FromWhatsappAccountId','as':_0xcbe2('0x1d8')});db[_0xcbe2('0x107')]['belongsTo'](db[_0xcbe2('0x100')],{'foreignKey':_0xcbe2('0x1f3'),'as':_0xcbe2('0x1de')});db[_0xcbe2('0x107')][_0xcbe2('0x140')](db['WhatsappQueue'],{'foreignKey':_0xcbe2('0x1f4'),'as':'ToQueue'});db[_0xcbe2('0x107')][_0xcbe2('0x140')](db['User'],{'foreignKey':_0xcbe2('0x1d9'),'as':_0xcbe2('0x1da')});db[_0xcbe2('0x107')][_0xcbe2('0x140')](db[_0xcbe2('0x12')],{'foreignKey':'ToUserId','as':_0xcbe2('0x1e5')});db[_0xcbe2('0x129')][_0xcbe2('0x11b')](db['User'],{'as':_0xcbe2('0x147'),'through':_0xcbe2('0x38'),'foreignKey':_0xcbe2('0x1f5')});db['WhatsappQueue'][_0xcbe2('0x11b')](db[_0xcbe2('0xe5')],{'through':_0xcbe2('0x1cf'),'as':_0xcbe2('0x148')});module[_0xcbe2('0x1f6')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x6050=['../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','CmCustomField','Action','../api/action/action.model','Automation','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','../api/sound/sound.model','Template','Trigger','../api/trigger/trigger.model','Integration','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','SalesforceField','../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','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../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','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/integration/integration.model','Network','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','WhatsappAccount','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','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','User','hasOne','cascade','UserId','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','belongsToMany','Groups','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_openchannel_interactions','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueue','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','VoiceChanSpy','SpiedAgents','Sound','Sounds','moh_has_sounds','Members','Hoppers','VoiceQueueId','HopperHistories','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Team','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailbox','QueueCalls','uniqueid','AgentReports','Contact','MailAccountId','Imap','Smtp','Dispositions','Answers','Interactions','List','ListId','TemplateId','Pause','Agents','UserMailQueue','team_has_mail_queues','Teams','MailInteractionId','Account','ContactId','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','ChatOfflineMessage','ChatOfflineMessageId','MailApplication','restrict','TagId','Items','FaxAccountId','FaxMessage','fax_interaction_has_tags','FaxInteractionId','AttachmentId','team_has_fax_queues','SmsAccountId','Applications','SmsInteractionId','sms_interaction_has_tags','user_has_sms_interactions','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ChatWebsiteId','ProactiveActions','ChatMessage','Agent','Queue','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatGroupId','CompanyId','CmHopperHistory','Company','cm_contact_has_tags','CampaignId','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','CustomReportId','VoiceMusicOnHold','Mohs','whatsapp_interaction_has_tags','AllConditions','AllCondition','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','DefaultReportId','AnalyticFieldReport','MetricId','Configurations','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','AccountId','Description','Variable','VariableId','SugarcrmAccount','Field','int_desk_configuration_has_tags','ZendeskConfiguration','Subject','VtigerField','VtigerAccount','ServicenowAccount','Dynamics365Configuration','FreshsalesField','ChatQueueReport','FromId','ToId','SessionId','ProjectId','team_has_whatsapp_queues','WhatsappQueues','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAccount','FromChatWebsiteId','FromUserId','ToAgent','ToChatQueueId','ToQueue','ToChatWebsiteId','FaxTransferReport','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','FromSmsAccountId','ToSmsQueueId','CustomFields','Queues','userProfileId','UserProfileSections','sectionId','WhatsappAccountId','WhatsappInteractionId','user_has_whatsapp_interactions','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','exports','sequelize','lodash','jstz','defaultsDeep','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','utf8_general_ci','sequelizeHistory','utf8','database','username','password','options','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model'];(function(_0x4d2473,_0x442579){var _0x16ab09=function(_0x294753){while(--_0x294753){_0x4d2473['push'](_0x4d2473['shift']());}};_0x16ab09(++_0x442579);}(_0x6050,0x199));var _0x0605=function(_0x57d865,_0x4e3a77){_0x57d865=_0x57d865-0x0;var _0x2296be=_0x6050[_0x57d865];return _0x2296be;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x0605('0x0'));var _=require(_0x0605('0x1'));var jstz=require(_0x0605('0x2'));var timezone=jstz['determine']();config[_0x0605('0x0')]=_[_0x0605('0x3')](config[_0x0605('0x0')],{'database':'motion2','username':_0x0605('0x4'),'password':_0x0605('0x5'),'options':{'host':_0x0605('0x6'),'port':0xcea,'dialect':_0x0605('0x7'),'dialectOptions':{'charset':_0x0605('0x8')},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0x0605('0x9')}}});config['sequelizeHistory']=_[_0x0605('0x3')](config[_0x0605('0xa')],{'database':'motion2','username':_0x0605('0x4'),'password':'xC@LL1234','options':{'host':_0x0605('0x6'),'port':0xcea,'dialect':_0x0605('0x7'),'dialectOptions':{'charset':_0x0605('0x8')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x0605('0xb'),'collate':_0x0605('0x9')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x0605('0x0')][_0x0605('0xc')],config[_0x0605('0x0')][_0x0605('0xd')],config[_0x0605('0x0')][_0x0605('0xe')],config[_0x0605('0x0')][_0x0605('0xf')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x0605('0xa')][_0x0605('0xc')],config[_0x0605('0xa')]['username'],config[_0x0605('0xa')][_0x0605('0xe')],config[_0x0605('0xa')][_0x0605('0xf')])};db['User']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x11'));db['VoiceChanSpy']=db['sequelize'][_0x0605('0x10')](_0x0605('0x12'));db[_0x0605('0x13')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x14'));db[_0x0605('0x15')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x16'));db['VoiceMusicOnHold']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x17'));db[_0x0605('0x18')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x19'));db['VoiceRecording']=db[_0x0605('0x0')]['import'](_0x0605('0x1a'));db['ScreenRecording']=db['sequelize'][_0x0605('0x10')](_0x0605('0x1b'));db[_0x0605('0x1c')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x1d'));db[_0x0605('0x1e')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x1f'));db[_0x0605('0x20')]=db[_0x0605('0x0')]['import'](_0x0605('0x21'));db[_0x0605('0x22')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x23'));db[_0x0605('0x24')]=db[_0x0605('0x0')]['import'](_0x0605('0x25'));db[_0x0605('0x26')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x27'));db[_0x0605('0x28')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x29'));db[_0x0605('0x2a')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x2b'));db[_0x0605('0x2c')]=db['sequelize'][_0x0605('0x10')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0x0605('0x2d')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x2e'));db[_0x0605('0x2f')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x30'));db[_0x0605('0x31')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x32'));db['UserMailQueue']=db['sequelize'][_0x0605('0x10')]('../api/userMailQueue/userMailQueue.model');db[_0x0605('0x33')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x34'));db[_0x0605('0x35')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0605('0x36')]=db[_0x0605('0x0')]['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x0605('0x37')]=db[_0x0605('0x0')]['import'](_0x0605('0x38'));db[_0x0605('0x39')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x3a'));db[_0x0605('0x3b')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/mailServerOut/mailServerOut.model');db[_0x0605('0x3c')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x3d'));db[_0x0605('0x3e')]=db[_0x0605('0x0')]['import'](_0x0605('0x3f'));db[_0x0605('0x40')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x41'));db[_0x0605('0x42')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x43'));db[_0x0605('0x44')]=db[_0x0605('0x0')]['import']('../api/mailMessage/mailMessage.model');db['MailApplication']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/mailApplication/mailApplication.model');db[_0x0605('0x45')]=db[_0x0605('0x0')]['import'](_0x0605('0x46'));db[_0x0605('0x47')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/dashboard/dashboard.model');db[_0x0605('0x48')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/dashboardItem/dashboardItem.model');db[_0x0605('0x49')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x4a'));db[_0x0605('0x4b')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x4c'));db['FaxInteraction']=db['sequelize'][_0x0605('0x10')](_0x0605('0x4d'));db['FaxMessage']=db['sequelize']['import'](_0x0605('0x4e'));db[_0x0605('0x4f')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/faxQueue/faxQueue.model');db[_0x0605('0x50')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x51'));db['SmsAccount']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x52'));db[_0x0605('0x53')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x54'));db[_0x0605('0x55')]=db[_0x0605('0x0')]['import'](_0x0605('0x56'));db[_0x0605('0x57')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x58'));db[_0x0605('0x59')]=db[_0x0605('0x0')]['import']('../api/smsQueue/smsQueue.model');db[_0x0605('0x5a')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x5b'));db[_0x0605('0x5c')]=db['sequelize']['import'](_0x0605('0x5d'));db[_0x0605('0x5e')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x5f'));db[_0x0605('0x60')]=db[_0x0605('0x0')]['import'](_0x0605('0x61'));db[_0x0605('0x62')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x63'));db[_0x0605('0x64')]=db['sequelize'][_0x0605('0x10')]('../api/chatWebsite/chatWebsite.model');db[_0x0605('0x65')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x66'));db[_0x0605('0x67')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/chatApplication/chatApplication.model');db[_0x0605('0x68')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x69'));db['ChatMessage']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x6a'));db['ChatOfflineMessage']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0605('0x6b')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x6c'));db[_0x0605('0x6d')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/chatGroup/chatGroup.model');db[_0x0605('0x6e')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x6f'));db[_0x0605('0x70')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x71'));db[_0x0605('0x72')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x73'));db[_0x0605('0x74')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x75'));db[_0x0605('0x76')]=db[_0x0605('0x0')]['import']('../api/cmHopperBlack/cmHopperBlack.model');db[_0x0605('0x77')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x78'));db['CmHopperHistory']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x79'));db[_0x0605('0x7a')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0x0605('0x7b')]=db[_0x0605('0x0')]['import']('../api/cmCustomField/cmCustomField.model');db[_0x0605('0x7c')]=db[_0x0605('0x0')]['import'](_0x0605('0x7d'));db[_0x0605('0x7e')]=db[_0x0605('0x0')]['import']('../api/automation/automation.model');db[_0x0605('0x7f')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/cannedAnswer/cannedAnswer.model');db[_0x0605('0x80')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x81'));db[_0x0605('0x82')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x83'));db[_0x0605('0x84')]=db['sequelize']['import'](_0x0605('0x85'));db['Pause']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/pause/pause.model');db[_0x0605('0x86')]=db[_0x0605('0x0')]['import'](_0x0605('0x87'));db[_0x0605('0x88')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x89'));db['Schedule']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x8a'));db['Sound']=db['sequelize'][_0x0605('0x10')](_0x0605('0x8b'));db['Tag']=db['sequelize'][_0x0605('0x10')]('../api/tag/tag.model');db[_0x0605('0x8c')]=db['sequelize'][_0x0605('0x10')]('../api/template/template.model');db[_0x0605('0x8d')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x8e'));db['Variable']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/variable/variable.model');db[_0x0605('0x8f')]=db[_0x0605('0x0')]['import']('../api/integration/integration.model');db['IntegrationReport']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x90'));db[_0x0605('0x91')]=db['sequelize']['import'](_0x0605('0x92'));db[_0x0605('0x93')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x94'));db[_0x0605('0x95')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x96'));db[_0x0605('0x97')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x98'));db['AnalyticFieldReport']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/analyticFieldReport/analyticFieldReport.model');db['AnalyticTreeReport']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x99'));db[_0x0605('0x9a')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x9b'));db[_0x0605('0x9c')]=db['sequelize'][_0x0605('0x10')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0x0605('0x9d')]=db['sequelize'][_0x0605('0x10')]('../api/intSalesforceField/intSalesforceField.model');db['SugarcrmAccount']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x9e'));db[_0x0605('0x9f')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xa0'));db[_0x0605('0xa1')]=db[_0x0605('0x0')]['import'](_0x0605('0xa2'));db[_0x0605('0xa3')]=db[_0x0605('0x0')]['import'](_0x0605('0xa4'));db[_0x0605('0xa5')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xa6'));db[_0x0605('0xa7')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xa8'));db[_0x0605('0xa9')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xaa'));db[_0x0605('0xab')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0x0605('0xac')]=db[_0x0605('0x0')]['import'](_0x0605('0xad'));db[_0x0605('0xae')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xaf'));db['ZendeskConfiguration']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xb0'));db[_0x0605('0xb1')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xb2'));db[_0x0605('0xb3')]=db[_0x0605('0x0')]['import'](_0x0605('0xb4'));db[_0x0605('0xb5')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xb6'));db[_0x0605('0xb7')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xb8'));db['VtigerAccount']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xb9'));db[_0x0605('0xba')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xbb'));db['VtigerField']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db[_0x0605('0x0')]['import']('../api/intServicenowAccount/intServicenowAccount.model');db[_0x0605('0xbc')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xbd'));db[_0x0605('0xbe')]=db[_0x0605('0x0')]['import']('../api/intServicenowField/intServicenowField.model');db[_0x0605('0xbf')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xc0'));db['Dynamics365Configuration']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x0605('0xc1')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xc2'));db[_0x0605('0xc3')]=db[_0x0605('0x0')]['import'](_0x0605('0xc4'));db[_0x0605('0xc5')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db['FreshsalesField']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/intFreshsalesField/intFreshsalesField.model');db['Integration']=db['sequelize'][_0x0605('0x10')](_0x0605('0xc6'));db[_0x0605('0xc7')]=db['sequelize'][_0x0605('0x10')](_0x0605('0xc8'));db['ChatQueueReport']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xc9'));db[_0x0605('0xca')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xcb'));db[_0x0605('0xcc')]=db['sequelize'][_0x0605('0x10')](_0x0605('0xcd'));db[_0x0605('0xce')]=db[_0x0605('0x0')]['import'](_0x0605('0xcf'));db[_0x0605('0xd0')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xd1'));db[_0x0605('0xd2')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xd3'));db['SquareReport']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xd4'));db[_0x0605('0xd5')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xd6'));db[_0x0605('0xd7')]=db[_0x0605('0x0')]['import']('../api/jscriptyProject/jscriptyProject.model');db[_0x0605('0xd8')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xd9'));db[_0x0605('0xda')]=db[_0x0605('0x0')]['import'](_0x0605('0xdb'));db[_0x0605('0xdc')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/squareProject/squareProject.model');db[_0x0605('0xdd')]=db['sequelize'][_0x0605('0x10')](_0x0605('0xde'));db[_0x0605('0xdf')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/squareMessage/squareMessage.model');db['Team']=db[_0x0605('0x0')]['import'](_0x0605('0xe0'));db[_0x0605('0xe1')]=db[_0x0605('0x0')]['import'](_0x0605('0xe2'));db[_0x0605('0xe3')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xe4'));db['Migration']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xe5'));db[_0x0605('0xe6')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/attachment/attachment.model');db[_0x0605('0xe7')]=db['sequelize']['import'](_0x0605('0xe8'));db['MailTransferReport']=db['sequelize'][_0x0605('0x10')](_0x0605('0xe9'));db[_0x0605('0xea')]=db[_0x0605('0x0')]['import'](_0x0605('0xeb'));db['FaxTransferReport']=db['sequelize'][_0x0605('0x10')](_0x0605('0xec'));db[_0x0605('0xed')]=db[_0x0605('0x0')]['import'](_0x0605('0xee'));db[_0x0605('0xef')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xf0'));db[_0x0605('0xf1')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xf2'));db[_0x0605('0xf3')]=db['sequelize'][_0x0605('0x10')](_0x0605('0xf4'));db[_0x0605('0xf5')]=db[_0x0605('0x0')]['import']('../api/userProfile/userProfile.model');db[_0x0605('0xf6')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xf7'));db[_0x0605('0xf8')]=db[_0x0605('0x0')][_0x0605('0x10')]('../api/userProfileResource/userProfileResource.model');db['UserNotification']=db[_0x0605('0x0')][_0x0605('0x10')]('../api/userNotification/userNotification.model');db[_0x0605('0xf9')]=db[_0x0605('0x0')]['import']('../api/whatsappAccount/whatsappAccount.model');db[_0x0605('0xfa')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0xfb'));db[_0x0605('0xfc')]=db['sequelize'][_0x0605('0x10')](_0x0605('0xfd'));db[_0x0605('0xfe')]=db[_0x0605('0x0')]['import'](_0x0605('0xff'));db[_0x0605('0x100')]=db['sequelize'][_0x0605('0x10')](_0x0605('0x101'));db[_0x0605('0x102')]=db[_0x0605('0x0')]['import'](_0x0605('0x103'));db['WhatsappQueue']=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x104'));db[_0x0605('0x105')]=db[_0x0605('0x0')][_0x0605('0x10')](_0x0605('0x106'));db[_0x0605('0x107')]=db[_0x0605('0x0')]['import'](_0x0605('0x108'));db[_0x0605('0x109')][_0x0605('0x10a')](db[_0x0605('0x1c')],{'as':_0x0605('0x1c'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x10c')});db['User'][_0x0605('0x10d')](db['VoiceRecording'],{'as':_0x0605('0x10e'),'foreignKey':_0x0605('0x10c')});db['User'][_0x0605('0x10d')](db[_0x0605('0x2d')],{'as':_0x0605('0x10f'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')][_0x0605('0x10d')](db[_0x0605('0x15')],{'as':_0x0605('0x110'),'onDelete':_0x0605('0x10b'),'hooks':!![]});db[_0x0605('0x109')][_0x0605('0x10d')](db[_0x0605('0x77')],{'as':_0x0605('0x111'),'foreignKey':_0x0605('0x10c')});db['User'][_0x0605('0x10d')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')][_0x0605('0x10d')](db[_0x0605('0x7a')],{'as':_0x0605('0x7a'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')][_0x0605('0x10d')](db[_0x0605('0x5e')],{'as':_0x0605('0x112'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')][_0x0605('0x10d')](db[_0x0605('0x68')],{'as':_0x0605('0x113'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')]['hasMany'](db['SmsInteraction'],{'as':_0x0605('0x114'),'foreignKey':_0x0605('0x10c')});db['User'][_0x0605('0x10d')](db[_0x0605('0x115')],{'as':_0x0605('0x116'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')][_0x0605('0x10d')](db['MailInteraction'],{'as':_0x0605('0x117'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')][_0x0605('0x10d')](db[_0x0605('0xfc')],{'as':_0x0605('0x118'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x109')]['hasMany'](db['UserNotification'],{'as':_0x0605('0x119'),'foreignKey':_0x0605('0x11a')});db['User'][_0x0605('0x11b')](db[_0x0605('0xf5')],{'as':_0x0605('0xf5'),'foreignKey':'userProfileId'});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x6d')],{'as':_0x0605('0x11d'),'through':_0x0605('0x11e')});db[_0x0605('0x109')][_0x0605('0x11c')](db['CmContact'],{'as':_0x0605('0x11f'),'through':_0x0605('0x120')});db[_0x0605('0x109')][_0x0605('0x11c')](db['CmList'],{'as':_0x0605('0x121'),'through':_0x0605('0x122')});db['User']['belongsToMany'](db['Team'],{'through':_0x0605('0x123')});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x42')],{'as':_0x0605('0x117'),'through':'user_has_mail_interactions'});db[_0x0605('0x109')]['belongsToMany'](db['ChatInteraction'],{'as':'ChatInteractions','through':_0x0605('0x124')});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x115')],{'as':'FaxInteractions','through':_0x0605('0x125')});db['User']['belongsToMany'](db[_0x0605('0x55')],{'as':_0x0605('0x114'),'through':'user_has_sms_interactions'});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x5e')],{'as':_0x0605('0x112'),'through':_0x0605('0x126')});db[_0x0605('0x109')]['belongsToMany'](db[_0x0605('0xfc')],{'as':_0x0605('0x118'),'through':'user_has_whatsapp_interactions'});db[_0x0605('0x109')][_0x0605('0x11c')](db['VoiceQueue'],{'as':_0x0605('0x127'),'through':_0x0605('0x2f'),'required':![]});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x3e')],{'as':'MailQueues','through':'UserMailQueue','required':![]});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x6b')],{'as':_0x0605('0x128'),'through':'UserChatQueue','required':![],'hooks':!![]});db['User'][_0x0605('0x11c')](db[_0x0605('0x4f')],{'as':_0x0605('0x129'),'through':'UserFaxQueue','required':![]});db[_0x0605('0x109')][_0x0605('0x11c')](db['SmsQueue'],{'as':_0x0605('0x12a'),'through':_0x0605('0x35'),'required':![]});db['User'][_0x0605('0x11c')](db['OpenchannelQueue'],{'as':_0x0605('0x12b'),'through':_0x0605('0x36'),'required':![]});db[_0x0605('0x109')]['belongsToMany'](db[_0x0605('0x12c')],{'as':'WhatsappQueues','through':_0x0605('0x37'),'required':![]});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0xf1')],{'through':'cm_user_has_lists'});db[_0x0605('0x109')]['belongsToMany'](db[_0x0605('0xf3')],{'as':_0x0605('0x12d'),'through':_0x0605('0x12e'),'required':![]});db[_0x0605('0x109')]['belongsToMany'](db[_0x0605('0x64')],{'as':_0x0605('0x12f'),'through':_0x0605('0x130')});db[_0x0605('0x109')]['belongsToMany'](db[_0x0605('0x49')],{'as':_0x0605('0x131'),'through':'user_has_fax_accounts'});db[_0x0605('0x109')]['belongsToMany'](db['MailAccount'],{'as':'MailAccounts','through':_0x0605('0x132')});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0x5a')],{'as':_0x0605('0x133'),'through':_0x0605('0x134')});db['User']['belongsToMany'](db[_0x0605('0x135')],{'as':_0x0605('0x136'),'through':_0x0605('0x137')});db['User']['belongsToMany'](db[_0x0605('0xf9')],{'as':_0x0605('0x138'),'through':_0x0605('0x139')});db[_0x0605('0x109')][_0x0605('0x11c')](db[_0x0605('0xdc')],{'as':_0x0605('0x13a'),'through':'user_has_square_projects'});db[_0x0605('0x13b')][_0x0605('0x10d')](db['VoiceExtension'],{'as':_0x0605('0x13c'),'onDelete':_0x0605('0x10b'),'foreignKey':'ChanSpyId'});db[_0x0605('0x13')][_0x0605('0x10d')](db[_0x0605('0x15')],{'onDelete':'cascade'});db[_0x0605('0x15')][_0x0605('0x10d')](db[_0x0605('0x15')],{'as':'Applications','onDelete':_0x0605('0x10b')});db['VoiceMusicOnHold'][_0x0605('0x11c')](db[_0x0605('0x13d')],{'as':_0x0605('0x13e'),'through':_0x0605('0x13f')});db[_0x0605('0x18')]['hasMany'](db[_0x0605('0x2d')],{'as':_0x0605('0x140'),'foreignKey':'VoiceQueueId'});db[_0x0605('0x18')]['hasMany'](db[_0x0605('0x74')],{'as':_0x0605('0x141'),'foreignKey':_0x0605('0x142')});db[_0x0605('0x18')][_0x0605('0x10d')](db[_0x0605('0x77')],{'as':_0x0605('0x111'),'foreignKey':_0x0605('0x142')});db[_0x0605('0x18')][_0x0605('0x10d')](db['CmHopperHistory'],{'as':_0x0605('0x143'),'foreignKey':_0x0605('0x142')});db[_0x0605('0x18')][_0x0605('0x10d')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x0605('0x142')});db[_0x0605('0x18')][_0x0605('0x10d')](db[_0x0605('0x76')],{'as':'HopperBlacks','foreignKey':_0x0605('0x142')});db[_0x0605('0x18')]['hasMany'](db[_0x0605('0xd0')],{'as':_0x0605('0x144'),'foreignKey':_0x0605('0x142')});db[_0x0605('0x18')]['belongsTo'](db['Trunk'],{'as':_0x0605('0x2a'),'foreignKey':_0x0605('0x145')});db[_0x0605('0x18')][_0x0605('0x11b')](db['Trunk'],{'as':_0x0605('0x146'),'foreignKey':_0x0605('0x147')});db[_0x0605('0x18')][_0x0605('0x11b')](db[_0x0605('0x84')],{'as':_0x0605('0x84'),'foreignKey':_0x0605('0x148')});db[_0x0605('0x18')]['belongsTo'](db['Pause'],{'as':_0x0605('0x149'),'foreignKey':_0x0605('0x14a')});db['VoiceQueue'][_0x0605('0x11c')](db[_0x0605('0xf1')],{'as':_0x0605('0x121'),'through':_0x0605('0x14b')});db[_0x0605('0x18')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':'Agents','through':_0x0605('0x2f')});db['VoiceQueue']['belongsToMany'](db[_0x0605('0x14c')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0x0605('0x18')][_0x0605('0x11c')](db[_0x0605('0xf1')],{'as':'BlackLists','through':_0x0605('0x14d')});db['VoiceRecording']['belongsTo'](db[_0x0605('0x109')],{'as':_0x0605('0x109'),'foreignKey':_0x0605('0x10c')});db[_0x0605('0x14e')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':_0x0605('0x109'),'foreignKey':'UserId'});db[_0x0605('0x1c')][_0x0605('0x10d')](db[_0x0605('0x1e')],{'as':_0x0605('0x14f'),'onDelete':_0x0605('0x10b'),'foreignKey':'mailboxuser','sourceKey':_0x0605('0x150')});db[_0x0605('0x1e')][_0x0605('0x11b')](db[_0x0605('0x1c')],{'foreignKey':'mailboxuser','targetKey':_0x0605('0x150')});db['VoiceCallReport'][_0x0605('0x10d')](db[_0x0605('0x26')],{'as':_0x0605('0x151'),'foreignKey':_0x0605('0x152'),'constraints':![]});db[_0x0605('0x20')][_0x0605('0x10d')](db[_0x0605('0x24')],{'as':_0x0605('0x153'),'foreignKey':_0x0605('0x152'),'constraints':![]});db[_0x0605('0x20')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':'User','foreignKey':_0x0605('0x10c')});db[_0x0605('0x20')][_0x0605('0x11b')](db['CmContact'],{'as':_0x0605('0x154'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0605('0x11b')](db[_0x0605('0x3c')],{'as':_0x0605('0x3c'),'foreignKey':_0x0605('0x155')});db[_0x0605('0x3b')][_0x0605('0x11b')](db['MailAccount'],{'as':'MailAccount','foreignKey':'MailAccountId'});db['MailAccount'][_0x0605('0x10a')](db[_0x0605('0x39')],{'as':_0x0605('0x156'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x3c')]['hasOne'](db[_0x0605('0x3b')],{'as':_0x0605('0x157'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x3c')][_0x0605('0x10d')](db['Disposition'],{'as':_0x0605('0x158'),'foreignKey':_0x0605('0x155'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x3c')][_0x0605('0x10d')](db[_0x0605('0x7f')],{'as':_0x0605('0x159'),'foreignKey':_0x0605('0x155')});db['MailAccount'][_0x0605('0x10d')](db[_0x0605('0x44')],{'as':'Messages','foreignKey':_0x0605('0x155')});db[_0x0605('0x3c')]['hasMany'](db[_0x0605('0x42')],{'as':_0x0605('0x15a')});db[_0x0605('0x3c')][_0x0605('0x10d')](db['MailApplication'],{'as':'Applications'});db[_0x0605('0x3c')]['belongsTo'](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db['MailAccount'][_0x0605('0x11b')](db[_0x0605('0x8c')],{'as':_0x0605('0x8c'),'foreignKey':_0x0605('0x15d')});db[_0x0605('0x3c')][_0x0605('0x11b')](db[_0x0605('0x15e')],{'as':_0x0605('0x149'),'foreignKey':_0x0605('0x14a')});db['MailAccount'][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':_0x0605('0x132')});db[_0x0605('0x3e')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':_0x0605('0x160')});db[_0x0605('0x3e')][_0x0605('0x11c')](db[_0x0605('0x14c')],{'through':_0x0605('0x161'),'as':_0x0605('0x162')});db[_0x0605('0x42')]['hasMany'](db[_0x0605('0x44')],{'as':_0x0605('0x14f'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x163')});db[_0x0605('0x42')][_0x0605('0x11b')](db['MailAccount'],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x155')});db[_0x0605('0x42')][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db[_0x0605('0x42')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':_0x0605('0x166'),'foreignKey':_0x0605('0x10c')});db['MailInteraction']['belongsToMany'](db[_0x0605('0x167')],{'through':_0x0605('0x168'),'as':_0x0605('0x169')});db[_0x0605('0x42')][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':_0x0605('0x168'),'as':_0x0605('0x16a')});db['MailInteraction'][_0x0605('0x11c')](db['User'],{'as':_0x0605('0x16b'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db[_0x0605('0x44')][_0x0605('0x10d')](db['Attachment'],{'as':_0x0605('0x16c'),'onDelete':_0x0605('0x10b')});db['MailMessage'][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':_0x0605('0x109')});db[_0x0605('0x44')][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':'cascade','as':_0x0605('0x154')});db[_0x0605('0x44')][_0x0605('0x11b')](db[_0x0605('0x42')],{'as':_0x0605('0x16d'),'foreignKey':_0x0605('0x163')});db[_0x0605('0x44')][_0x0605('0x11b')](db[_0x0605('0x3c')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x155')});db[_0x0605('0x44')][_0x0605('0x11b')](db[_0x0605('0x64')],{'as':'ChatWebsite','foreignKey':'ChatWebsiteId'});db[_0x0605('0x44')][_0x0605('0x11b')](db[_0x0605('0x16e')],{'as':_0x0605('0x16e'),'foreignKey':_0x0605('0x16f')});db[_0x0605('0x170')]['belongsTo'](db[_0x0605('0x109')],{'onDelete':'restrict'});db[_0x0605('0x170')][_0x0605('0x11b')](db[_0x0605('0x3e')],{'onDelete':'restrict'});db[_0x0605('0x170')][_0x0605('0x11b')](db[_0x0605('0x3c')],{'onDelete':_0x0605('0x171')});db[_0x0605('0x170')][_0x0605('0x11b')](db[_0x0605('0x84')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x148')});db[_0x0605('0x170')][_0x0605('0x11b')](db[_0x0605('0x167')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x172')});db[_0x0605('0x45')][_0x0605('0x11b')](db[_0x0605('0x3c')],{});db[_0x0605('0x45')][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db['MailQueueReport']['belongsTo'](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':'ContactId'});db[_0x0605('0x45')][_0x0605('0x11b')](db[_0x0605('0x42')],{});db[_0x0605('0x45')][_0x0605('0x11b')](db[_0x0605('0x44')],{});db[_0x0605('0x45')][_0x0605('0x11b')](db[_0x0605('0x109')],{});db[_0x0605('0x45')][_0x0605('0x11b')](db[_0x0605('0x3e')],{});db[_0x0605('0x47')]['hasMany'](db[_0x0605('0x48')],{'as':_0x0605('0x173'),'onDelete':'cascade'});db[_0x0605('0x49')][_0x0605('0x10d')](db[_0x0605('0x80')],{'as':_0x0605('0x158'),'foreignKey':_0x0605('0x174'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x49')][_0x0605('0x10d')](db[_0x0605('0x7f')],{'as':_0x0605('0x159'),'foreignKey':_0x0605('0x174')});db[_0x0605('0x49')]['hasMany'](db[_0x0605('0x115')],{'as':_0x0605('0x15a')});db['FaxAccount'][_0x0605('0x10d')](db['FaxApplication'],{'as':'Applications'});db[_0x0605('0x49')][_0x0605('0x10d')](db[_0x0605('0x15')],{'as':'Exntensions','onDelete':_0x0605('0x10b')});db[_0x0605('0x49')][_0x0605('0x10d')](db[_0x0605('0x175')],{'as':_0x0605('0x14f')});db[_0x0605('0x49')][_0x0605('0x11b')](db['Trunk'],{'as':_0x0605('0x2a')});db[_0x0605('0x49')]['belongsTo'](db[_0x0605('0xf1')],{'as':'List','foreignKey':_0x0605('0x15c')});db[_0x0605('0x49')][_0x0605('0x11b')](db[_0x0605('0x15e')],{'as':_0x0605('0x149'),'foreignKey':_0x0605('0x14a')});db[_0x0605('0x49')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':'user_has_fax_accounts'});db[_0x0605('0x4b')][_0x0605('0x11b')](db[_0x0605('0x109')],{'onDelete':_0x0605('0x171')});db[_0x0605('0x4b')]['belongsTo'](db[_0x0605('0x4f')],{'onDelete':_0x0605('0x171')});db[_0x0605('0x4b')]['belongsTo'](db[_0x0605('0x49')],{'onDelete':_0x0605('0x171')});db['FaxApplication']['belongsTo'](db[_0x0605('0x167')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x172')});db[_0x0605('0x115')][_0x0605('0x10d')](db['FaxMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':'FaxInteractionId'});db[_0x0605('0x115')]['belongsTo'](db[_0x0605('0x49')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x174')});db['FaxInteraction'][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':'Contact','foreignKey':_0x0605('0x165')});db[_0x0605('0x115')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':'Owner','foreignKey':_0x0605('0x10c')});db[_0x0605('0x115')][_0x0605('0x11c')](db['Tag'],{'through':_0x0605('0x176'),'as':_0x0605('0x169')});db[_0x0605('0x115')]['belongsToMany'](db['Tag'],{'through':_0x0605('0x176'),'as':_0x0605('0x16a')});db[_0x0605('0x115')][_0x0605('0x11c')](db['User'],{'as':_0x0605('0x16b'),'through':_0x0605('0x125'),'foreignKey':'FaxInteractionId'});db[_0x0605('0x175')][_0x0605('0x11b')](db[_0x0605('0x109')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x109')});db[_0x0605('0x175')][_0x0605('0x11b')](db[_0x0605('0x115')],{'as':_0x0605('0x16d'),'foreignKey':_0x0605('0x177')});db[_0x0605('0x175')][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x154')});db[_0x0605('0x175')]['belongsTo'](db['Attachment'],{'as':_0x0605('0xe6'),'foreignKey':_0x0605('0x178')});db[_0x0605('0x175')][_0x0605('0x11b')](db['FaxAccount'],{'as':'Account','foreignKey':'FaxAccountId'});db[_0x0605('0x4f')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':'UserFaxQueue'});db[_0x0605('0x4f')][_0x0605('0x11c')](db[_0x0605('0x14c')],{'through':_0x0605('0x179'),'as':_0x0605('0x162')});db['FaxQueueReport'][_0x0605('0x11b')](db[_0x0605('0x49')],{});db[_0x0605('0x50')][_0x0605('0x11b')](db['CmList'],{'as':_0x0605('0x15b'),'foreignKey':'ListId'});db['FaxQueueReport']['belongsTo'](db['CmContact'],{'as':_0x0605('0x154'),'foreignKey':'ContactId'});db[_0x0605('0x50')]['belongsTo'](db[_0x0605('0x115')],{});db[_0x0605('0x50')]['belongsTo'](db[_0x0605('0x175')],{});db[_0x0605('0x50')]['belongsTo'](db[_0x0605('0x109')],{});db[_0x0605('0x50')][_0x0605('0x11b')](db[_0x0605('0x4f')],{});db[_0x0605('0x135')][_0x0605('0x10d')](db[_0x0605('0x80')],{'as':_0x0605('0x158'),'foreignKey':_0x0605('0x17a'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x135')]['hasMany'](db[_0x0605('0x7f')],{'as':_0x0605('0x159'),'foreignKey':_0x0605('0x17a')});db[_0x0605('0x135')][_0x0605('0x10d')](db[_0x0605('0x57')],{'as':_0x0605('0x14f'),'foreignKey':_0x0605('0x17a')});db[_0x0605('0x135')][_0x0605('0x10d')](db[_0x0605('0x55')],{'as':_0x0605('0x15a')});db[_0x0605('0x135')]['hasMany'](db[_0x0605('0x53')],{'as':_0x0605('0x17b')});db['SmsAccount'][_0x0605('0x11b')](db['CmList'],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db['SmsAccount'][_0x0605('0x11b')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0605('0x14a')});db[_0x0605('0x135')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':_0x0605('0x137')});db[_0x0605('0x53')][_0x0605('0x11b')](db['User'],{'onDelete':_0x0605('0x171')});db['SmsApplication'][_0x0605('0x11b')](db[_0x0605('0x59')],{'onDelete':_0x0605('0x171')});db[_0x0605('0x53')][_0x0605('0x11b')](db['SmsAccount'],{'onDelete':_0x0605('0x171')});db[_0x0605('0x53')][_0x0605('0x11b')](db[_0x0605('0x84')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x148')});db['SmsApplication']['belongsTo'](db[_0x0605('0x167')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x172')});db[_0x0605('0x55')]['hasMany'](db[_0x0605('0x57')],{'as':_0x0605('0x14f'),'onDelete':'cascade','foreignKey':_0x0605('0x17c')});db[_0x0605('0x55')][_0x0605('0x11b')](db[_0x0605('0x135')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x17a')});db[_0x0605('0x55')][_0x0605('0x11b')](db['CmContact'],{'as':'Contact','foreignKey':_0x0605('0x165')});db['SmsInteraction'][_0x0605('0x11b')](db['User'],{'as':_0x0605('0x166'),'foreignKey':'UserId'});db['SmsInteraction'][_0x0605('0x11c')](db['Tag'],{'through':_0x0605('0x17d'),'as':_0x0605('0x169')});db['SmsInteraction'][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':_0x0605('0x17d'),'as':_0x0605('0x16a')});db[_0x0605('0x55')]['belongsToMany'](db[_0x0605('0x109')],{'as':_0x0605('0x16b'),'through':_0x0605('0x17e'),'foreignKey':_0x0605('0x17c')});db[_0x0605('0x57')][_0x0605('0x11b')](db['User'],{'as':'User'});db[_0x0605('0x57')][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':'cascade','as':'Contact'});db[_0x0605('0x57')][_0x0605('0x11b')](db[_0x0605('0x55')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x16d'),'foreignKey':_0x0605('0x17c')});db[_0x0605('0x57')][_0x0605('0x11b')](db[_0x0605('0x135')],{'as':_0x0605('0x164'),'foreignKey':'SmsAccountId'});db[_0x0605('0x59')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':'UserSmsQueue','foreignKey':_0x0605('0x17f')});db[_0x0605('0x59')]['belongsToMany'](db[_0x0605('0x14c')],{'through':_0x0605('0x180'),'as':_0x0605('0x162')});db[_0x0605('0x5a')][_0x0605('0x10d')](db[_0x0605('0x80')],{'as':_0x0605('0x158'),'foreignKey':'OpenchannelAccountId','onDelete':'cascade'});db[_0x0605('0x5a')][_0x0605('0x10d')](db[_0x0605('0x7f')],{'as':_0x0605('0x159'),'foreignKey':'OpenchannelAccountId'});db[_0x0605('0x5a')][_0x0605('0x10d')](db[_0x0605('0x5e')],{'as':'Interactions','foreignKey':_0x0605('0x181')});db['OpenchannelAccount']['hasMany'](db[_0x0605('0x60')],{'as':_0x0605('0x14f'),'foreignKey':_0x0605('0x181')});db[_0x0605('0x5a')][_0x0605('0x10d')](db['OpenchannelApplication'],{'as':_0x0605('0x17b'),'foreignKey':_0x0605('0x181')});db[_0x0605('0x5a')]['belongsTo'](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0x5a')]['belongsTo'](db[_0x0605('0x15e')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x0605('0x5a')][_0x0605('0x11c')](db['User'],{'as':'Agents','through':_0x0605('0x134')});db[_0x0605('0x5c')][_0x0605('0x11b')](db[_0x0605('0x109')],{'onDelete':'restrict'});db[_0x0605('0x5c')][_0x0605('0x11b')](db[_0x0605('0x62')],{'onDelete':_0x0605('0x171'),'foreignKey':'OpenchannelQueueId'});db[_0x0605('0x5c')][_0x0605('0x11b')](db[_0x0605('0x5a')],{'onDelete':'restrict','foreignKey':_0x0605('0x181')});db['OpenchannelApplication'][_0x0605('0x11b')](db[_0x0605('0x84')],{'onDelete':_0x0605('0x171'),'foreignKey':'IntervalId'});db[_0x0605('0x5c')][_0x0605('0x11b')](db[_0x0605('0x167')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x172')});db[_0x0605('0x5e')][_0x0605('0x10d')](db[_0x0605('0x60')],{'as':_0x0605('0x14f'),'onDelete':'cascade','foreignKey':_0x0605('0x182')});db[_0x0605('0x5e')][_0x0605('0x11b')](db[_0x0605('0x5a')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x181')});db[_0x0605('0x5e')]['belongsTo'](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db[_0x0605('0x5e')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':_0x0605('0x166'),'foreignKey':'UserId'});db['OpenchannelInteraction']['belongsToMany'](db[_0x0605('0x167')],{'through':'openchannel_interaction_has_tags','as':_0x0605('0x169')});db[_0x0605('0x5e')][_0x0605('0x11c')](db['Tag'],{'through':_0x0605('0x183'),'as':_0x0605('0x16a')});db[_0x0605('0x5e')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x16b'),'through':_0x0605('0x126'),'foreignKey':_0x0605('0x182')});db[_0x0605('0x60')][_0x0605('0x11b')](db['User'],{'onDelete':'cascade','as':_0x0605('0x109')});db[_0x0605('0x60')][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x154')});db['OpenchannelMessage'][_0x0605('0x11b')](db['OpenchannelInteraction'],{'onDelete':_0x0605('0x10b'),'as':'Interaction','foreignKey':_0x0605('0x182')});db['OpenchannelMessage'][_0x0605('0x11b')](db[_0x0605('0xe6')],{'as':_0x0605('0xe6'),'foreignKey':_0x0605('0x178')});db[_0x0605('0x60')][_0x0605('0x11b')](db[_0x0605('0x5a')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x181')});db[_0x0605('0x62')]['belongsToMany'](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':_0x0605('0x36'),'foreignKey':'OpenchannelQueueId'});db[_0x0605('0x62')][_0x0605('0x11c')](db[_0x0605('0x14c')],{'through':_0x0605('0x184'),'as':_0x0605('0x162')});db[_0x0605('0x64')]['hasMany'](db[_0x0605('0x80')],{'as':_0x0605('0x158'),'foreignKey':_0x0605('0x185'),'onDelete':_0x0605('0x10b')});db['ChatWebsite'][_0x0605('0x10d')](db[_0x0605('0x7f')],{'as':_0x0605('0x159'),'foreignKey':_0x0605('0x185')});db[_0x0605('0x64')][_0x0605('0x10d')](db[_0x0605('0x6e')],{'as':_0x0605('0x186')});db[_0x0605('0x64')][_0x0605('0x10d')](db[_0x0605('0x68')],{'as':_0x0605('0x15a')});db[_0x0605('0x64')]['hasMany'](db[_0x0605('0x67')],{'as':_0x0605('0x17b')});db[_0x0605('0x64')]['hasMany'](db[_0x0605('0x187')],{'as':_0x0605('0x14f')});db[_0x0605('0x64')][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0x64')]['belongsTo'](db[_0x0605('0x84')],{'as':_0x0605('0x84'),'foreignKey':_0x0605('0x148')});db[_0x0605('0x64')][_0x0605('0x11b')](db[_0x0605('0x3c')],{'as':_0x0605('0x3c'),'foreignKey':_0x0605('0x155')});db[_0x0605('0x64')][_0x0605('0x11b')](db[_0x0605('0x15e')],{'as':'mandatoryDispositionPause','foreignKey':_0x0605('0x14a')});db[_0x0605('0x64')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':'user_has_chat_websites'});db[_0x0605('0x65')][_0x0605('0x11b')](db[_0x0605('0x5a')],{});db[_0x0605('0x65')]['belongsTo'](db['CmList'],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db['OpenchannelQueueReport'][_0x0605('0x11b')](db['CmContact'],{'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db['OpenchannelQueueReport'][_0x0605('0x11b')](db[_0x0605('0x5e')],{});db['OpenchannelQueueReport'][_0x0605('0x11b')](db[_0x0605('0x60')],{});db[_0x0605('0x65')]['belongsTo'](db['User'],{});db[_0x0605('0x65')][_0x0605('0x11b')](db['OpenchannelQueue'],{});db['ChatApplication'][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':_0x0605('0x188'),'foreignKey':_0x0605('0x10c'),'onDelete':_0x0605('0x171')});db[_0x0605('0x67')][_0x0605('0x11b')](db[_0x0605('0x6b')],{'as':_0x0605('0x189'),'foreignKey':'ChatQueueId','onDelete':_0x0605('0x171')});db['ChatApplication']['belongsTo'](db[_0x0605('0x64')],{'as':_0x0605('0x18a'),'foreignKey':_0x0605('0x185'),'onDelete':_0x0605('0x171')});db['ChatApplication'][_0x0605('0x11b')](db[_0x0605('0x167')],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x172')});db[_0x0605('0x68')][_0x0605('0x10d')](db['ChatMessage'],{'as':_0x0605('0x14f'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x18b')});db['ChatInteraction']['belongsTo'](db[_0x0605('0x64')],{'as':'Account','foreignKey':_0x0605('0x185')});db[_0x0605('0x68')][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db['ChatInteraction'][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':_0x0605('0x166'),'foreignKey':_0x0605('0x10c')});db['ChatInteraction'][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':_0x0605('0x18c'),'as':'Tags'});db[_0x0605('0x68')][_0x0605('0x11c')](db['Tag'],{'through':_0x0605('0x18c'),'as':_0x0605('0x16a')});db[_0x0605('0x68')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x16b'),'through':_0x0605('0x124'),'foreignKey':_0x0605('0x18b')});db[_0x0605('0x187')]['belongsTo'](db[_0x0605('0x109')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x109')});db['ChatMessage'][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x154'),'foreignKey':'ContactId'});db['ChatMessage'][_0x0605('0x11b')](db['ChatInteraction'],{'onDelete':_0x0605('0x10b'),'as':'Interaction','foreignKey':_0x0605('0x18b')});db['ChatMessage']['belongsTo'](db['Attachment'],{'as':_0x0605('0xe6'),'foreignKey':_0x0605('0x178')});db[_0x0605('0x187')][_0x0605('0x11b')](db[_0x0605('0x64')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x185')});db[_0x0605('0x16e')][_0x0605('0x10d')](db[_0x0605('0xe6')],{'as':_0x0605('0x16c'),'foreignKey':_0x0605('0x16f'),'onDelete':_0x0605('0x10b'),'hooks':!![]});db[_0x0605('0x16e')][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db[_0x0605('0x16e')][_0x0605('0x11b')](db[_0x0605('0x64')],{'as':'Account','foreignKey':_0x0605('0x185')});db['ChatQueue'][_0x0605('0x11c')](db['User'],{'as':'Agents','through':_0x0605('0x31'),'hooks':!![]});db['ChatQueue'][_0x0605('0x11c')](db['Team'],{'through':_0x0605('0x18d'),'as':_0x0605('0x162')});db[_0x0605('0x6d')][_0x0605('0x10d')](db[_0x0605('0xca')],{'as':_0x0605('0x14f'),'foreignKey':_0x0605('0x18e'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x6d')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':'Members','through':'chat_group_has_users'});db[_0x0605('0x6e')][_0x0605('0x11b')](db[_0x0605('0x64')],{'as':_0x0605('0x18a'),'foreignKey':_0x0605('0x185')});db[_0x0605('0x70')][_0x0605('0x10d')](db['CmContact'],{'as':_0x0605('0x11f'),'foreignKey':_0x0605('0x18f')});db[_0x0605('0x72')]['hasMany'](db['CmHopper'],{'as':_0x0605('0x141'),'foreignKey':_0x0605('0x165')});db['CmContact'][_0x0605('0x10d')](db[_0x0605('0x77')],{'as':'HopperFinals','foreignKey':'ContactId'});db[_0x0605('0x72')][_0x0605('0x10d')](db[_0x0605('0x190')],{'as':_0x0605('0x143'),'foreignKey':_0x0605('0x165')});db[_0x0605('0x72')][_0x0605('0x10d')](db['ReportAgentPreview'],{'as':_0x0605('0x7a'),'foreignKey':'ContactId'});db['CmContact'][_0x0605('0x10d')](db[_0x0605('0xd0')],{'as':'JscriptySessions','foreignKey':'ContactId'});db[_0x0605('0x72')][_0x0605('0x10d')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0x0605('0x165'),'onDelete':'restrict'});db['CmContact'][_0x0605('0x10d')](db[_0x0605('0x68')],{'as':_0x0605('0x113'),'foreignKey':_0x0605('0x165'),'onDelete':_0x0605('0x171')});db[_0x0605('0x72')][_0x0605('0x10d')](db[_0x0605('0x55')],{'as':_0x0605('0x114'),'foreignKey':_0x0605('0x165'),'onDelete':_0x0605('0x171')});db[_0x0605('0x72')][_0x0605('0x10d')](db[_0x0605('0x115')],{'as':_0x0605('0x116'),'foreignKey':_0x0605('0x165'),'onDelete':_0x0605('0x171')});db[_0x0605('0x72')][_0x0605('0x10d')](db[_0x0605('0x42')],{'as':_0x0605('0x117'),'foreignKey':_0x0605('0x165'),'onDelete':_0x0605('0x171')});db[_0x0605('0x72')][_0x0605('0x11b')](db[_0x0605('0x70')],{'as':_0x0605('0x191'),'foreignKey':_0x0605('0x18f')});db[_0x0605('0x72')][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':'ListId','onDelete':_0x0605('0x10b')});db['CmContact']['belongsToMany'](db[_0x0605('0x109')],{'as':_0x0605('0x16b'),'through':_0x0605('0x120')});db[_0x0605('0x72')][_0x0605('0x11c')](db[_0x0605('0x167')],{'as':_0x0605('0x169'),'through':'cm_contact_has_tags'});db[_0x0605('0x72')]['belongsToMany'](db[_0x0605('0x167')],{'through':_0x0605('0x192'),'as':_0x0605('0x16a')});db[_0x0605('0x74')][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':'ContactId','onDelete':_0x0605('0x10b')});db['CmHopper'][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c'),'onDelete':'cascade'});db[_0x0605('0x74')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':'Agent','foreignKey':_0x0605('0x10c')});db[_0x0605('0x74')][_0x0605('0x11b')](db[_0x0605('0x18')],{'as':_0x0605('0x189'),'foreignKey':_0x0605('0x142'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x74')]['belongsTo'](db[_0x0605('0xe3')],{'as':_0x0605('0xe3'),'foreignKey':_0x0605('0x193'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x74')][_0x0605('0x11b')](db[_0x0605('0x109')],{'as':'Owner','foreignKey':'OwnerId'});db[_0x0605('0x76')][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':'Contact','foreignKey':_0x0605('0x165'),'onDelete':_0x0605('0x10b')});db['CmHopperBlack'][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c'),'onDelete':_0x0605('0x10b')});db['CmHopperBlack'][_0x0605('0x11b')](db[_0x0605('0x18')],{'as':_0x0605('0x189'),'foreignKey':_0x0605('0x142'),'onDelete':'cascade'});db[_0x0605('0x76')]['belongsTo'](db[_0x0605('0xe3')],{'as':_0x0605('0xe3'),'foreignKey':_0x0605('0x193'),'onDelete':_0x0605('0x10b')});db[_0x0605('0x7e')][_0x0605('0x10d')](db[_0x0605('0x82')],{'as':{'plural':_0x0605('0x194'),'singular':_0x0605('0x195')},'foreignKey':_0x0605('0x196'),'onDelete':_0x0605('0x10b'),'hooks':!![]});db['Automation'][_0x0605('0x10d')](db[_0x0605('0x82')],{'as':{'plural':_0x0605('0x197'),'singular':_0x0605('0x198')},'foreignKey':_0x0605('0x199'),'onDelete':_0x0605('0x10b'),'hooks':!![]});db['Automation']['hasMany'](db[_0x0605('0x7c')],{'as':_0x0605('0x19a'),'foreignKey':'AutomationId','onDelete':_0x0605('0x10b'),'hooks':!![]});db[_0x0605('0x80')]['hasMany'](db[_0x0605('0x80')],{'as':'Dispositions','foreignKey':'ParentId','onDelete':_0x0605('0x10b')});db[_0x0605('0x84')][_0x0605('0x10d')](db['Interval'],{'as':'Intervals','foreignKey':_0x0605('0x148'),'onDelete':'cascade','hooks':!![],'required':![]});db[_0x0605('0x84')][_0x0605('0x10d')](db[_0x0605('0x15')],{'as':_0x0605('0x110'),'foreignKey':'IntervalId','onDelete':_0x0605('0x171')});db['Interval'][_0x0605('0x10d')](db[_0x0605('0x170')],{'as':_0x0605('0x19b'),'foreignKey':_0x0605('0x148')});db[_0x0605('0x84')]['hasMany'](db[_0x0605('0x67')],{'as':_0x0605('0x19c'),'foreignKey':'IntervalId'});db['Interval'][_0x0605('0x10d')](db['FaxApplication'],{'as':_0x0605('0x19d'),'foreignKey':'IntervalId'});db[_0x0605('0x84')][_0x0605('0x10d')](db[_0x0605('0x53')],{'as':_0x0605('0x19e'),'foreignKey':_0x0605('0x148')});db[_0x0605('0x19f')]['belongsTo'](db[_0x0605('0x3c')],{});db[_0x0605('0x19f')][_0x0605('0x11b')](db[_0x0605('0x93')],{'foreignKey':'DefaultReportId'});db[_0x0605('0x19f')][_0x0605('0x11b')](db['AnalyticCustomReport'],{'foreignKey':_0x0605('0x1a0')});db['Sound'][_0x0605('0x11c')](db[_0x0605('0x1a1')],{'as':_0x0605('0x1a2'),'through':_0x0605('0x13f'),'onDelete':_0x0605('0x171')});db[_0x0605('0x167')][_0x0605('0x11c')](db[_0x0605('0x72')],{'through':_0x0605('0x192')});db[_0x0605('0x167')][_0x0605('0x11c')](db[_0x0605('0x68')],{'through':_0x0605('0x18c')});db[_0x0605('0x167')][_0x0605('0x11c')](db[_0x0605('0x42')],{'through':_0x0605('0x168')});db['Tag'][_0x0605('0x11c')](db[_0x0605('0x55')],{'through':'sms_interaction_has_tags'});db['Tag'][_0x0605('0x11c')](db['FaxInteraction'],{'through':_0x0605('0x176')});db['Tag'][_0x0605('0x11c')](db[_0x0605('0x5e')],{'through':'openchannel_interaction_has_tags'});db[_0x0605('0x167')][_0x0605('0x11c')](db[_0x0605('0xfc')],{'through':_0x0605('0x1a3')});db['Trigger'][_0x0605('0x10d')](db['Condition'],{'as':{'plural':_0x0605('0x1a4'),'singular':_0x0605('0x1a5')},'foreignKey':'TriggerAllId','onDelete':_0x0605('0x10b'),'hooks':!![]});db[_0x0605('0x8d')][_0x0605('0x10d')](db[_0x0605('0x82')],{'as':{'plural':_0x0605('0x1a6'),'singular':_0x0605('0x1a7')},'foreignKey':_0x0605('0x1a8'),'onDelete':_0x0605('0x10b'),'hooks':!![]});db[_0x0605('0x8d')]['hasMany'](db[_0x0605('0x7c')],{'as':_0x0605('0x19a'),'foreignKey':_0x0605('0x1a9'),'onDelete':'cascade','hooks':!![]});db[_0x0605('0x91')][_0x0605('0x10d')](db['AnalyticFieldReport'],{'as':_0x0605('0x1aa'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1a0'),'hooks':!![]});db['AnalyticDefaultReport'][_0x0605('0x10d')](db['AnalyticFieldReport'],{'as':_0x0605('0x1aa'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1ab')});db[_0x0605('0x97')]['hasMany'](db[_0x0605('0x1ac')],{'as':'Fields','onDelete':_0x0605('0x10b'),'foreignKey':'MetricId'});db[_0x0605('0x1ac')]['belongsTo'](db['AnalyticMetric'],{'foreignKey':_0x0605('0x1ad')});db[_0x0605('0x9a')]['hasMany'](db[_0x0605('0x9c')],{'as':_0x0605('0x1ae'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x0605('0x9c')][_0x0605('0x10d')](db['SalesforceField'],{'as':_0x0605('0x1af'),'onDelete':'cascade','foreignKey':_0x0605('0x1b0')});db[_0x0605('0x9c')][_0x0605('0x10d')](db[_0x0605('0x9d')],{'as':_0x0605('0x1b1'),'onDelete':'cascade','foreignKey':_0x0605('0x1b2')});db[_0x0605('0x9c')]['hasMany'](db[_0x0605('0x9d')],{'as':_0x0605('0x1aa'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b3')});db['SalesforceConfiguration'][_0x0605('0x11b')](db[_0x0605('0x9a')],{'as':'Account','foreignKey':_0x0605('0x1b4')});db[_0x0605('0x9d')][_0x0605('0x10d')](db[_0x0605('0x9d')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0605('0x9d')][_0x0605('0x10d')](db[_0x0605('0x9d')],{'as':_0x0605('0x1b5'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0x9d')][_0x0605('0x10d')](db[_0x0605('0x9d')],{'as':'Field','foreignKey':_0x0605('0x1b3')});db[_0x0605('0x9d')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':_0x0605('0x1b7')});db['SugarcrmAccount']['hasMany'](db[_0x0605('0x9f')],{'as':_0x0605('0x1ae'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0x9f')][_0x0605('0x10d')](db[_0x0605('0xa1')],{'as':'Subjects','onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0x9f')]['hasMany'](db[_0x0605('0xa1')],{'as':'Descriptions','onDelete':_0x0605('0x10b'),'foreignKey':'DescriptionId'});db[_0x0605('0x9f')][_0x0605('0x10d')](db[_0x0605('0xa1')],{'as':_0x0605('0x1aa'),'onDelete':'cascade','foreignKey':_0x0605('0x1b3')});db[_0x0605('0x9f')][_0x0605('0x11b')](db[_0x0605('0x1b8')],{'as':_0x0605('0x164'),'foreignKey':'AccountId'});db['SugarcrmField'][_0x0605('0x10d')](db[_0x0605('0xa1')],{'as':'Subject','foreignKey':_0x0605('0x1b0')});db[_0x0605('0xa1')]['hasMany'](db[_0x0605('0xa1')],{'as':_0x0605('0x1b5'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0xa1')]['hasMany'](db[_0x0605('0xa1')],{'as':_0x0605('0x1b9'),'foreignKey':_0x0605('0x1b3')});db['SugarcrmField'][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':_0x0605('0x1b7')});db[_0x0605('0xa3')][_0x0605('0x10d')](db[_0x0605('0xa5')],{'as':_0x0605('0x1ae'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b4')});db['DeskConfiguration']['hasMany'](db[_0x0605('0xa7')],{'as':_0x0605('0x1af'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0xa5')][_0x0605('0x10d')](db['DeskField'],{'as':'Descriptions','onDelete':_0x0605('0x10b'),'foreignKey':'DescriptionId'});db[_0x0605('0xa5')][_0x0605('0x10d')](db[_0x0605('0xa7')],{'as':_0x0605('0x1aa'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0xa5')]['belongsTo'](db[_0x0605('0xa3')],{'as':_0x0605('0x164'),'foreignKey':'AccountId'});db[_0x0605('0xa5')][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':_0x0605('0x1ba')});db[_0x0605('0xa7')]['hasMany'](db[_0x0605('0xa7')],{'as':'Subject','foreignKey':_0x0605('0x1b0')});db[_0x0605('0xa7')][_0x0605('0x10d')](db[_0x0605('0xa7')],{'as':_0x0605('0x1b5'),'foreignKey':'DescriptionId'});db['DeskField']['hasMany'](db[_0x0605('0xa7')],{'as':_0x0605('0x1b9'),'foreignKey':'FieldId'});db['DeskField'][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':'VariableId'});db[_0x0605('0xa9')][_0x0605('0x10d')](db[_0x0605('0xab')],{'as':_0x0605('0x1ae'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0xab')][_0x0605('0x10d')](db['ZohoField'],{'as':'Subjects','onDelete':_0x0605('0x10b'),'foreignKey':'SubjectId'});db[_0x0605('0xab')][_0x0605('0x10d')](db[_0x0605('0xac')],{'as':_0x0605('0x1b1'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0xab')][_0x0605('0x10d')](db[_0x0605('0xac')],{'as':_0x0605('0x1aa'),'onDelete':'cascade','foreignKey':_0x0605('0x1b3')});db[_0x0605('0xab')][_0x0605('0x11b')](db[_0x0605('0xa9')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0xac')][_0x0605('0x10d')](db[_0x0605('0xac')],{'as':'Subject','foreignKey':_0x0605('0x1b0')});db[_0x0605('0xac')][_0x0605('0x10d')](db[_0x0605('0xac')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0605('0xac')][_0x0605('0x10d')](db[_0x0605('0xac')],{'as':_0x0605('0x1b9'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0xac')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':_0x0605('0x1b7')});db[_0x0605('0xae')][_0x0605('0x10d')](db[_0x0605('0x1bb')],{'as':_0x0605('0x1ae'),'onDelete':'cascade','foreignKey':_0x0605('0x1b4')});db[_0x0605('0x1bb')][_0x0605('0x10d')](db[_0x0605('0xb1')],{'as':_0x0605('0x1af'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0x1bb')][_0x0605('0x10d')](db[_0x0605('0xb1')],{'as':_0x0605('0x1b1'),'foreignKey':_0x0605('0x1b2')});db['ZendeskConfiguration'][_0x0605('0x10d')](db[_0x0605('0xb1')],{'as':_0x0605('0x1aa'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0x1bb')][_0x0605('0x11b')](db['ZendeskAccount'],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0x1bb')][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField'][_0x0605('0x10d')](db[_0x0605('0xb1')],{'as':_0x0605('0x1bc'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0xb1')]['hasMany'](db[_0x0605('0xb1')],{'as':_0x0605('0x1b5'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0xb1')][_0x0605('0x10d')](db[_0x0605('0xb1')],{'as':'Field','foreignKey':_0x0605('0x1b3')});db['ZendeskField'][_0x0605('0x11b')](db['Variable'],{'as':'Variable','foreignKey':_0x0605('0x1b7')});db[_0x0605('0xb3')][_0x0605('0x10d')](db[_0x0605('0xb5')],{'as':_0x0605('0x1ae'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b4')});db['FreshdeskConfiguration']['hasMany'](db[_0x0605('0xb7')],{'as':_0x0605('0x1af'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0xb5')][_0x0605('0x10d')](db[_0x0605('0xb7')],{'as':_0x0605('0x1b1'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b2')});db['FreshdeskConfiguration']['hasMany'](db[_0x0605('0xb7')],{'as':_0x0605('0x1aa'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0xb5')][_0x0605('0x11b')](db[_0x0605('0xb3')],{'as':'Account','foreignKey':_0x0605('0x1b4')});db[_0x0605('0xb5')][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':'int_freshdesk_configuration_has_tags'});db['FreshdeskField'][_0x0605('0x10d')](db[_0x0605('0xb7')],{'as':_0x0605('0x1bc'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0xb7')][_0x0605('0x10d')](db[_0x0605('0xb7')],{'as':_0x0605('0x1b5'),'foreignKey':_0x0605('0x1b2')});db['FreshdeskField'][_0x0605('0x10d')](db[_0x0605('0xb7')],{'as':'Field','foreignKey':'FieldId'});db[_0x0605('0xb7')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':_0x0605('0x1b7')});db['VtigerAccount'][_0x0605('0x10d')](db['VtigerConfiguration'],{'as':_0x0605('0x1ae'),'onDelete':_0x0605('0x10b'),'foreignKey':'AccountId'});db[_0x0605('0xba')][_0x0605('0x10d')](db[_0x0605('0x1bd')],{'as':_0x0605('0x1af'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0xba')]['hasMany'](db[_0x0605('0x1bd')],{'as':_0x0605('0x1b1'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0xba')][_0x0605('0x10d')](db[_0x0605('0x1bd')],{'as':_0x0605('0x1aa'),'foreignKey':_0x0605('0x1b3')});db['VtigerConfiguration'][_0x0605('0x11b')](db[_0x0605('0x1be')],{'as':'Account','foreignKey':_0x0605('0x1b4')});db[_0x0605('0x1bd')][_0x0605('0x10d')](db[_0x0605('0x1bd')],{'as':_0x0605('0x1bc'),'foreignKey':'SubjectId'});db[_0x0605('0x1bd')][_0x0605('0x10d')](db[_0x0605('0x1bd')],{'as':_0x0605('0x1b5'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0x1bd')][_0x0605('0x10d')](db[_0x0605('0x1bd')],{'as':_0x0605('0x1b9'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0x1bd')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':'VariableId'});db[_0x0605('0x1bf')][_0x0605('0x10d')](db[_0x0605('0xbc')],{'as':'Configurations','onDelete':_0x0605('0x10b'),'foreignKey':'AccountId'});db[_0x0605('0xbc')][_0x0605('0x10d')](db[_0x0605('0xbe')],{'as':_0x0605('0x1af'),'foreignKey':_0x0605('0x1b0')});db['ServicenowConfiguration'][_0x0605('0x10d')](db[_0x0605('0xbe')],{'as':_0x0605('0x1b1'),'foreignKey':_0x0605('0x1b2')});db['ServicenowConfiguration']['hasMany'](db[_0x0605('0xbe')],{'as':_0x0605('0x1aa'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0xbc')]['belongsTo'](db[_0x0605('0x1bf')],{'as':_0x0605('0x164'),'foreignKey':'AccountId'});db[_0x0605('0xbe')][_0x0605('0x10d')](db[_0x0605('0xbe')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0605('0xbe')][_0x0605('0x10d')](db['ServicenowField'],{'as':_0x0605('0x1b5'),'foreignKey':_0x0605('0x1b2')});db[_0x0605('0xbe')][_0x0605('0x10d')](db[_0x0605('0xbe')],{'as':_0x0605('0x1b9'),'foreignKey':'FieldId'});db[_0x0605('0xbe')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':'Variable','foreignKey':_0x0605('0x1b7')});db['Dynamics365Account'][_0x0605('0x10d')](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0x1c0')][_0x0605('0x10d')](db['Dynamics365Field'],{'as':_0x0605('0x1af'),'onDelete':_0x0605('0x10b'),'foreignKey':'SubjectId'});db[_0x0605('0x1c0')][_0x0605('0x10d')](db['Dynamics365Field'],{'as':_0x0605('0x1b1'),'onDelete':_0x0605('0x10b'),'foreignKey':'DescriptionId'});db['Dynamics365Configuration'][_0x0605('0x10d')](db[_0x0605('0xc1')],{'as':_0x0605('0x1aa'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0x1c0')][_0x0605('0x11b')](db[_0x0605('0xbf')],{'as':_0x0605('0x164'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0xc1')]['hasMany'](db[_0x0605('0xc1')],{'as':_0x0605('0x1bc'),'foreignKey':_0x0605('0x1b0')});db[_0x0605('0xc1')][_0x0605('0x10d')](db['Dynamics365Field'],{'as':'Description','foreignKey':_0x0605('0x1b2')});db['Dynamics365Field']['hasMany'](db[_0x0605('0xc1')],{'as':_0x0605('0x1b9'),'foreignKey':'FieldId'});db[_0x0605('0xc1')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':'VariableId'});db[_0x0605('0xc3')]['hasMany'](db[_0x0605('0xc5')],{'as':_0x0605('0x1ae'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1b4')});db[_0x0605('0xc5')][_0x0605('0x10d')](db[_0x0605('0x1c1')],{'as':_0x0605('0x1af'),'foreignKey':_0x0605('0x1b0')});db['FreshsalesConfiguration']['hasMany'](db[_0x0605('0x1c1')],{'as':_0x0605('0x1b1'),'foreignKey':_0x0605('0x1b2')});db['FreshsalesConfiguration']['hasMany'](db[_0x0605('0x1c1')],{'as':_0x0605('0x1aa'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0xc5')][_0x0605('0x11b')](db[_0x0605('0xc3')],{'as':'Account','foreignKey':_0x0605('0x1b4')});db[_0x0605('0x1c1')]['hasMany'](db[_0x0605('0x1c1')],{'as':_0x0605('0x1bc'),'foreignKey':_0x0605('0x1b0')});db['FreshsalesField'][_0x0605('0x10d')](db[_0x0605('0x1c1')],{'as':_0x0605('0x1b5'),'foreignKey':'DescriptionId'});db[_0x0605('0x1c1')][_0x0605('0x10d')](db['FreshsalesField'],{'as':_0x0605('0x1b9'),'foreignKey':_0x0605('0x1b3')});db[_0x0605('0x1c1')][_0x0605('0x11b')](db[_0x0605('0x1b6')],{'as':_0x0605('0x1b6'),'foreignKey':_0x0605('0x1b7')});db[_0x0605('0x1c2')][_0x0605('0x11b')](db[_0x0605('0x64')],{});db['ChatQueueReport'][_0x0605('0x11b')](db['CmList'],{'as':'List','foreignKey':_0x0605('0x15c')});db[_0x0605('0x1c2')]['belongsTo'](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db['ChatQueueReport'][_0x0605('0x11b')](db[_0x0605('0x68')],{});db[_0x0605('0x1c2')][_0x0605('0x11b')](db[_0x0605('0x187')],{});db[_0x0605('0x1c2')][_0x0605('0x11b')](db[_0x0605('0x109')],{});db[_0x0605('0x1c2')][_0x0605('0x11b')](db[_0x0605('0x6b')],{});db[_0x0605('0xca')][_0x0605('0x11b')](db[_0x0605('0x109')],{'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1c3')});db['ChatInternalMessage'][_0x0605('0x11b')](db[_0x0605('0x109')],{'onDelete':'cascade','foreignKey':_0x0605('0x1c4')});db[_0x0605('0xd0')][_0x0605('0x10d')](db[_0x0605('0xce')],{'foreignKey':'SessionId','onDelete':_0x0605('0x10b')});db[_0x0605('0xd0')][_0x0605('0x10d')](db['JscriptyAnswerReport'],{'foreignKey':_0x0605('0x1c5'),'onDelete':_0x0605('0x10b')});db[_0x0605('0xd2')]['belongsTo'](db[_0x0605('0x135')],{});db[_0x0605('0xd2')][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db['SmsQueueReport'][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':'Contact','foreignKey':_0x0605('0x165')});db[_0x0605('0xd2')][_0x0605('0x11b')](db[_0x0605('0x55')],{});db[_0x0605('0xd2')]['belongsTo'](db[_0x0605('0x57')],{});db[_0x0605('0xd2')][_0x0605('0x11b')](db[_0x0605('0x109')],{});db[_0x0605('0xd2')][_0x0605('0x11b')](db['SmsQueue'],{});db[_0x0605('0xd7')][_0x0605('0x10d')](db['JscriptySessionReport'],{'foreignKey':'ProjectId'});db[_0x0605('0xd7')][_0x0605('0x10d')](db[_0x0605('0xce')],{'foreignKey':_0x0605('0x1c6')});db[_0x0605('0xd7')][_0x0605('0x10d')](db[_0x0605('0xcc')],{'foreignKey':'ProjectId'});db[_0x0605('0xdc')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x16b'),'through':'user_has_square_projects'});db[_0x0605('0x14c')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':_0x0605('0x123')});db[_0x0605('0x14c')]['belongsToMany'](db[_0x0605('0x18')],{'through':_0x0605('0x107'),'as':_0x0605('0x127')});db[_0x0605('0x14c')]['belongsToMany'](db[_0x0605('0x3e')],{'through':_0x0605('0x161'),'as':'MailQueues'});db[_0x0605('0x14c')]['belongsToMany'](db['ChatQueue'],{'through':_0x0605('0x18d'),'as':'ChatQueues'});db['Team'][_0x0605('0x11c')](db[_0x0605('0x4f')],{'through':_0x0605('0x179'),'as':'FaxQueues'});db[_0x0605('0x14c')][_0x0605('0x11c')](db['SmsQueue'],{'through':'team_has_sms_queues','as':'SmsQueues'});db[_0x0605('0x14c')][_0x0605('0x11c')](db[_0x0605('0x62')],{'through':_0x0605('0x184'),'as':'OpenchannelQueues'});db['Team'][_0x0605('0x11c')](db[_0x0605('0x12c')],{'through':_0x0605('0x1c7'),'as':_0x0605('0x1c8')});db['Campaign']['hasMany'](db[_0x0605('0x74')],{'as':'Hoppers','foreignKey':'CampaignId'});db[_0x0605('0xe3')][_0x0605('0x10d')](db[_0x0605('0x77')],{'as':'HopperFinals','foreignKey':_0x0605('0x193')});db[_0x0605('0xe3')]['hasMany'](db[_0x0605('0x190')],{'as':_0x0605('0x143'),'foreignKey':'CampaignId'});db['Campaign']['hasMany'](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0x0605('0x193')});db[_0x0605('0xe3')][_0x0605('0x11b')](db['Trunk'],{'as':'Trunk','foreignKey':_0x0605('0x145')});db[_0x0605('0xe3')]['belongsTo'](db[_0x0605('0x2a')],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db['Campaign']['belongsTo'](db[_0x0605('0x84')],{'as':'Interval','foreignKey':_0x0605('0x148')});db[_0x0605('0xe3')][_0x0605('0x11b')](db[_0x0605('0xdc')],{'as':_0x0605('0xdc'),'foreignKey':_0x0605('0x1c9')});db[_0x0605('0xe3')]['belongsToMany'](db[_0x0605('0xf1')],{'as':_0x0605('0x121'),'through':_0x0605('0x1ca')});db['Campaign']['belongsToMany'](db[_0x0605('0xf1')],{'as':_0x0605('0x1cb'),'through':_0x0605('0x1cc')});db[_0x0605('0xe6')][_0x0605('0x11b')](db[_0x0605('0x16e')],{'as':_0x0605('0x16e'),'foreignKey':_0x0605('0x16f')});db['MailTransferReport']['belongsTo'](db[_0x0605('0x44')],{});db[_0x0605('0x1cd')][_0x0605('0x11b')](db[_0x0605('0x42')],{});db['MailTransferReport'][_0x0605('0x11b')](db[_0x0605('0x3c')],{'foreignKey':_0x0605('0x1ce'),'as':_0x0605('0x1cf')});db[_0x0605('0x1cd')][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':'FromUserId','as':_0x0605('0x1d0')});db[_0x0605('0x1cd')][_0x0605('0x11b')](db['User'],{'foreignKey':_0x0605('0x1d1'),'as':'ToAgent'});db[_0x0605('0x1cd')][_0x0605('0x11b')](db['MailQueue'],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db['MailTransferReport'][_0x0605('0x11b')](db[_0x0605('0x3c')],{'foreignKey':'ToMailAccountId','as':_0x0605('0x1d2')});db[_0x0605('0xea')][_0x0605('0x11b')](db[_0x0605('0x187')],{});db[_0x0605('0xea')][_0x0605('0x11b')](db[_0x0605('0x68')],{});db[_0x0605('0xea')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0605('0x1d3'),'as':_0x0605('0x1cf')});db[_0x0605('0xea')][_0x0605('0x11b')](db['User'],{'foreignKey':_0x0605('0x1d4'),'as':_0x0605('0x1d0')});db[_0x0605('0xea')][_0x0605('0x11b')](db['User'],{'foreignKey':'ToUserId','as':_0x0605('0x1d5')});db[_0x0605('0xea')][_0x0605('0x11b')](db[_0x0605('0x6b')],{'foreignKey':_0x0605('0x1d6'),'as':_0x0605('0x1d7')});db[_0x0605('0xea')][_0x0605('0x11b')](db[_0x0605('0x64')],{'foreignKey':_0x0605('0x1d8'),'as':'ToAccount'});db['FaxTransferReport'][_0x0605('0x11b')](db['FaxMessage'],{});db[_0x0605('0x1d9')][_0x0605('0x11b')](db['FaxInteraction'],{});db['FaxTransferReport'][_0x0605('0x11b')](db[_0x0605('0x49')],{'foreignKey':'FromFaxAccountId','as':'FromAccount'});db[_0x0605('0x1d9')][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d4'),'as':_0x0605('0x1d0')});db[_0x0605('0x1d9')][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d1'),'as':_0x0605('0x1d5')});db[_0x0605('0x1d9')]['belongsTo'](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':_0x0605('0x1d7')});db['FaxTransferReport'][_0x0605('0x11b')](db[_0x0605('0x49')],{'foreignKey':_0x0605('0x1da'),'as':_0x0605('0x1d2')});db[_0x0605('0xed')]['belongsTo'](db['OpenchannelMessage'],{});db['OpenchannelTransferReport'][_0x0605('0x11b')](db['OpenchannelInteraction'],{});db[_0x0605('0xed')][_0x0605('0x11b')](db[_0x0605('0x5a')],{'foreignKey':_0x0605('0x1db'),'as':_0x0605('0x1cf')});db[_0x0605('0xed')][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d4'),'as':_0x0605('0x1d0')});db[_0x0605('0xed')]['belongsTo'](db[_0x0605('0x109')],{'foreignKey':'ToUserId','as':_0x0605('0x1d5')});db[_0x0605('0xed')][_0x0605('0x11b')](db[_0x0605('0x62')],{'foreignKey':_0x0605('0x1dc'),'as':_0x0605('0x1d7')});db[_0x0605('0xed')][_0x0605('0x11b')](db[_0x0605('0x5a')],{'foreignKey':'ToOpenchannelAccountId','as':_0x0605('0x1d2')});db[_0x0605('0xef')][_0x0605('0x11b')](db[_0x0605('0x57')],{});db['SmsTransferReport']['belongsTo'](db[_0x0605('0x55')],{});db[_0x0605('0xef')][_0x0605('0x11b')](db[_0x0605('0x135')],{'foreignKey':_0x0605('0x1dd'),'as':_0x0605('0x1cf')});db['SmsTransferReport'][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d4'),'as':_0x0605('0x1d0')});db[_0x0605('0xef')]['belongsTo'](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d1'),'as':_0x0605('0x1d5')});db['SmsTransferReport'][_0x0605('0x11b')](db['SmsQueue'],{'foreignKey':_0x0605('0x1de'),'as':_0x0605('0x1d7')});db[_0x0605('0xef')][_0x0605('0x11b')](db[_0x0605('0x135')],{'foreignKey':'ToSmsAccountId','as':_0x0605('0x1d2')});db[_0x0605('0xf1')][_0x0605('0x10d')](db[_0x0605('0x80')],{'as':_0x0605('0x158'),'foreignKey':_0x0605('0x15c'),'onDelete':_0x0605('0x10b')});db['CmList'][_0x0605('0x10d')](db[_0x0605('0x7b')],{'as':_0x0605('0x1df'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0xf1')]['hasMany'](db[_0x0605('0x72')],{'as':_0x0605('0x11f'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0xf1')][_0x0605('0x10d')](db[_0x0605('0x77')],{'as':_0x0605('0x111'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0xf1')][_0x0605('0x10d')](db[_0x0605('0x190')],{'as':'HopperHistory','foreignKey':_0x0605('0x15c')});db[_0x0605('0xf1')][_0x0605('0x10d')](db[_0x0605('0x7a')],{'as':_0x0605('0x7a'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0xf1')][_0x0605('0x11c')](db['VoiceQueue'],{'as':_0x0605('0x1e0'),'through':'voice_queues_has_cm_lists'});db[_0x0605('0xf1')]['belongsToMany'](db[_0x0605('0x109')],{'as':_0x0605('0x15f'),'through':'cm_user_has_lists'});db[_0x0605('0xf3')][_0x0605('0x10d')](db[_0x0605('0x15')],{'as':_0x0605('0x110'),'onDelete':_0x0605('0x10b')});db[_0x0605('0xf3')]['belongsToMany'](db['User'],{'as':_0x0605('0x15f'),'through':'user_has_voice_prefixes'});db[_0x0605('0xf5')]['hasMany'](db[_0x0605('0x109')],{'as':'Users','foreignKey':_0x0605('0x1e1')});db[_0x0605('0xf5')][_0x0605('0x10d')](db[_0x0605('0xf6')],{'as':_0x0605('0x1e2'),'foreignKey':'userProfileId','onDelete':_0x0605('0x10b')});db[_0x0605('0xf6')][_0x0605('0x10d')](db[_0x0605('0xf8')],{'as':'Resources','foreignKey':_0x0605('0x1e3'),'onDelete':_0x0605('0x10b')});db[_0x0605('0xf9')]['hasMany'](db[_0x0605('0x80')],{'as':_0x0605('0x158'),'foreignKey':_0x0605('0x1e4'),'onDelete':_0x0605('0x10b')});db['WhatsappAccount'][_0x0605('0x10d')](db['CannedAnswer'],{'as':_0x0605('0x159'),'foreignKey':_0x0605('0x1e4')});db['WhatsappAccount'][_0x0605('0x10d')](db[_0x0605('0xfe')],{'as':_0x0605('0x14f'),'foreignKey':_0x0605('0x1e4')});db['WhatsappAccount'][_0x0605('0x10d')](db[_0x0605('0xfc')],{'as':_0x0605('0x15a')});db['WhatsappAccount'][_0x0605('0x10d')](db[_0x0605('0xfa')],{'as':_0x0605('0x17b')});db['WhatsappAccount'][_0x0605('0x11b')](db[_0x0605('0xf1')],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db['WhatsappAccount'][_0x0605('0x11b')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x0605('0xf9')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':'Agents','through':_0x0605('0x139')});db[_0x0605('0xfa')]['belongsTo'](db[_0x0605('0x109')],{'onDelete':_0x0605('0x171')});db[_0x0605('0xfa')][_0x0605('0x11b')](db[_0x0605('0x12c')],{'onDelete':'restrict'});db[_0x0605('0xfa')][_0x0605('0x11b')](db[_0x0605('0xf9')],{'onDelete':_0x0605('0x171')});db[_0x0605('0xfa')]['belongsTo'](db['Interval'],{'onDelete':_0x0605('0x171'),'foreignKey':_0x0605('0x148')});db[_0x0605('0xfa')]['belongsTo'](db[_0x0605('0x167')],{'onDelete':_0x0605('0x171'),'foreignKey':'TagId'});db[_0x0605('0xfc')]['hasMany'](db[_0x0605('0xfe')],{'as':_0x0605('0x14f'),'onDelete':_0x0605('0x10b'),'foreignKey':_0x0605('0x1e5')});db['WhatsappInteraction'][_0x0605('0x11b')](db[_0x0605('0xf9')],{'as':'Account','foreignKey':_0x0605('0x1e4')});db[_0x0605('0xfc')][_0x0605('0x11b')](db[_0x0605('0x72')],{'as':_0x0605('0x154'),'foreignKey':_0x0605('0x165')});db[_0x0605('0xfc')]['belongsTo'](db[_0x0605('0x109')],{'as':'Owner','foreignKey':_0x0605('0x10c')});db[_0x0605('0xfc')][_0x0605('0x11c')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':'Tags'});db[_0x0605('0xfc')][_0x0605('0x11c')](db[_0x0605('0x167')],{'through':_0x0605('0x1a3'),'as':_0x0605('0x16a')});db[_0x0605('0xfc')][_0x0605('0x11c')](db[_0x0605('0x109')],{'as':'Users','through':_0x0605('0x1e6'),'foreignKey':_0x0605('0x1e5')});db[_0x0605('0xfe')]['belongsTo'](db[_0x0605('0x109')],{'as':_0x0605('0x109')});db[_0x0605('0xfe')][_0x0605('0x11b')](db[_0x0605('0x72')],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x154')});db[_0x0605('0xfe')][_0x0605('0x11b')](db['WhatsappInteraction'],{'onDelete':_0x0605('0x10b'),'as':_0x0605('0x16d'),'foreignKey':_0x0605('0x1e5')});db[_0x0605('0xfe')][_0x0605('0x11b')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0x0605('0x1e4')});db[_0x0605('0x100')]['belongsTo'](db['WhatsappAccount'],{});db[_0x0605('0x100')]['belongsTo'](db['CmList'],{'as':_0x0605('0x15b'),'foreignKey':_0x0605('0x15c')});db[_0x0605('0x100')]['belongsTo'](db[_0x0605('0x72')],{'as':'Contact','foreignKey':_0x0605('0x165')});db['WhatsappQueueReport']['belongsTo'](db[_0x0605('0xfc')],{});db['WhatsappQueueReport'][_0x0605('0x11b')](db[_0x0605('0x12c')],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0605('0xfe')],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0605('0x109')],{});db[_0x0605('0x102')][_0x0605('0x11b')](db[_0x0605('0xfe')],{});db[_0x0605('0x102')][_0x0605('0x11b')](db[_0x0605('0xfc')],{});db['WhatsappTransferReport'][_0x0605('0x11b')](db[_0x0605('0xf9')],{'foreignKey':_0x0605('0x1e7'),'as':_0x0605('0x1cf')});db[_0x0605('0x102')][_0x0605('0x11b')](db[_0x0605('0xf9')],{'foreignKey':_0x0605('0x1e8'),'as':_0x0605('0x1d2')});db[_0x0605('0x102')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0605('0x1e9'),'as':_0x0605('0x1d7')});db[_0x0605('0x102')][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d4'),'as':'FromAgent'});db[_0x0605('0x102')][_0x0605('0x11b')](db[_0x0605('0x109')],{'foreignKey':_0x0605('0x1d1'),'as':_0x0605('0x1d5')});db[_0x0605('0x12c')][_0x0605('0x11c')](db['User'],{'as':'Agents','through':_0x0605('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0605('0x12c')]['belongsToMany'](db[_0x0605('0x14c')],{'through':'team_has_whatsapp_queues','as':_0x0605('0x162')});module[_0x0605('0x1ea')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 829ccc0..56e9035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9e5=['x-forwarded-for','other','agent_name','test','/api/users','./api/user','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','/api/voice/transfers/reports','/api/mail/out_servers','./api/mailServerOut','/api/mail/queues','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','/api/fax/reports/queue','/api/sms/accounts','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','./api/tag','/api/templates','./api/template','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/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/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappInteraction','./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/webbar','./api/webbar','/apidoc','join','root','/www','/demo','static','/snippet','snippet','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','username','password','newPassword','apiKey','firstName','lastName','phone','mobile','email','clientId','clientSecret','securityToken','code','accessKey','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridnum','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','key','accountSid','localstationid','dsn','registry','oldPassword','isArray','isPlainObject','isString','@@{','replace','includes','path','express','express-winston','util','./errors','./config/environment','./config/logger','api','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','format','method','headers','remoteAddress','url','statusCode','responseTime','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0xe9e5,0x12a));var _0x5e9e=function(_0xf0fac9,_0x1d2e53){_0xf0fac9=_0xf0fac9-0x0;var _0x3a4318=_0xe9e5[_0xf0fac9];return _0x3a4318;};'use strict';var _=require('lodash');var path=require(_0x5e9e('0x0'));var express=require(_0x5e9e('0x1'));var ewinston=require(_0x5e9e('0x2'));var util=require(_0x5e9e('0x3'));var errors=require(_0x5e9e('0x4'));var config=require(_0x5e9e('0x5'));var logger=require(_0x5e9e('0x6'))(_0x5e9e('0x7'));var authLogger=require(_0x5e9e('0x6'))('auth');exports[_0x5e9e('0x8')]=function(_0x2411a6){_0x2411a6[_0x5e9e('0x9')](ewinston[_0x5e9e('0xa')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x3e682f,_0x3be16c){var _0x3baa6f=_0x5e9e('0xb');if(!_[_0x5e9e('0xc')](_0x3e682f['body'])){_0x3baa6f+='\x20body=%s';var _0x5d45e2=_0x3e682f[_0x5e9e('0xd')];maskSensitiveData(_0x5d45e2);}return util[_0x5e9e('0xe')](_0x3baa6f,_0x3e682f[_0x5e9e('0xf')],_0x3e682f[_0x5e9e('0x10')]['x-forwarded-for']?_0x3e682f[_0x5e9e('0x10')]['x-forwarded-for']:_0x3e682f['connection'][_0x5e9e('0x11')]||_0x3e682f['ip'],_0x3e682f[_0x5e9e('0x12')],_0x3be16c[_0x5e9e('0x13')],_0x3be16c[_0x5e9e('0x14')],_0x3e682f[_0x5e9e('0x15')]?_0x3e682f['user']['id']:null,_0x3e682f[_0x5e9e('0x15')]?_0x3e682f[_0x5e9e('0x15')][_0x5e9e('0x16')]:null,_0x3e682f[_0x5e9e('0x15')]?_0x3e682f[_0x5e9e('0x15')][_0x5e9e('0x17')]:null,_0x5d45e2?util[_0x5e9e('0x18')](_0x5d45e2,![],null):'');}}));_0x2411a6[_0x5e9e('0x9')](ewinston[_0x5e9e('0xa')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x2f89f1,_0x3699db){var _0x526d62=_0x5e9e('0x19');if(_0x2f89f1[_0x5e9e('0xd')]&&_0x2f89f1[_0x5e9e('0xd')][_0x5e9e('0x1a')]&&_0x2f89f1[_0x5e9e('0xd')][_0x5e9e('0x1b')]){_0x526d62=_0x5e9e('0x1c');}return util[_0x5e9e('0xe')](_0x526d62,_0x2f89f1[_0x5e9e('0xf')],_0x2f89f1[_0x5e9e('0x10')]['x-forwarded-for']?_0x2f89f1['headers'][_0x5e9e('0x1d')]:_0x2f89f1['connection']['remoteAddress']||_0x2f89f1['ip'],_0x2f89f1[_0x5e9e('0x12')],_0x3699db[_0x5e9e('0x13')],_0x3699db['responseTime'],_0x2f89f1[_0x5e9e('0x15')]?_0x2f89f1['user']['id']:null,_0x2f89f1[_0x5e9e('0x15')]?_0x2f89f1[_0x5e9e('0x15')][_0x5e9e('0x16')]:null,_0x2f89f1[_0x5e9e('0x15')]?_0x2f89f1[_0x5e9e('0x15')][_0x5e9e('0x17')]:null,_0x2f89f1[_0x5e9e('0xd')]&&_0x2f89f1['body'][_0x5e9e('0x1a')]?_0x2f89f1[_0x5e9e('0xd')][_0x5e9e('0x1a')]:_0x5e9e('0x1e'),_0x2f89f1[_0x5e9e('0xd')]&&_0x2f89f1[_0x5e9e('0xd')]['agent_id']?_0x2f89f1[_0x5e9e('0xd')][_0x5e9e('0x1b')]:'',_0x2f89f1[_0x5e9e('0xd')]&&_0x2f89f1[_0x5e9e('0xd')][_0x5e9e('0x1f')]?_0x2f89f1['body'][_0x5e9e('0x1f')]:'');},'ignoreRoute':function(_0x9e984d){var _0x2d1f24=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x2d1f24[_0x5e9e('0x20')](_0x9e984d[_0x5e9e('0x12')]);}}));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x21'),require(_0x5e9e('0x22')));_0x2411a6['use']('/api/voice/chanspy',require(_0x5e9e('0x23')));_0x2411a6['use'](_0x5e9e('0x24'),require(_0x5e9e('0x25')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x26'),require(_0x5e9e('0x27')));_0x2411a6['use'](_0x5e9e('0x28'),require(_0x5e9e('0x29')));_0x2411a6['use'](_0x5e9e('0x2a'),require(_0x5e9e('0x2b')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x2c'),require(_0x5e9e('0x2d')));_0x2411a6['use'](_0x5e9e('0x2e'),require(_0x5e9e('0x2f')));_0x2411a6['use']('/api/voice/mails',require('./api/voiceMail'));_0x2411a6['use']('/api/voice/mails/messages',require(_0x5e9e('0x30')));_0x2411a6['use'](_0x5e9e('0x31'),require(_0x5e9e('0x32')));_0x2411a6[_0x5e9e('0x9')]('/api/voice/dials/reports',require(_0x5e9e('0x33')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x34'),require('./api/voiceAgentReport'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x35'),require(_0x5e9e('0x36')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x37'),require(_0x5e9e('0x38')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x39'),require('./api/trunk'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x3a'),require('./api/voiceTransferReport'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x3b'),require(_0x5e9e('0x3c')));_0x2411a6[_0x5e9e('0x9')]('/api/mail/accounts',require('./api/mailAccount'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x3d'),require('./api/mailQueue'));_0x2411a6['use']('/api/mail/substatuses',require(_0x5e9e('0x3e')));_0x2411a6['use'](_0x5e9e('0x3f'),require('./api/mailInteraction'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x40'),require('./api/mailMessage'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x41'),require(_0x5e9e('0x42')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x43'),require(_0x5e9e('0x44')));_0x2411a6[_0x5e9e('0x9')]('/api/dashboards',require('./api/dashboard'));_0x2411a6[_0x5e9e('0x9')]('/api/dashboards/items',require(_0x5e9e('0x45')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x46'),require(_0x5e9e('0x47')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x48'),require('./api/faxApplication'));_0x2411a6['use'](_0x5e9e('0x49'),require(_0x5e9e('0x4a')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x4b'),require(_0x5e9e('0x4c')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x4d'),require('./api/faxQueue'));_0x2411a6['use'](_0x5e9e('0x4e'),require('./api/faxQueueReport'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x4f'),require('./api/smsAccount'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x50'),require('./api/smsApplication'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x51'),require(_0x5e9e('0x52')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x53'),require('./api/smsMessage'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x54'),require(_0x5e9e('0x55')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x56'),require('./api/openchannelAccount'));_0x2411a6[_0x5e9e('0x9')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x57'),require(_0x5e9e('0x58')));_0x2411a6['use'](_0x5e9e('0x59'),require('./api/openchannelMessage'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x5a'),require('./api/openchannelQueue'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x5b'),require(_0x5e9e('0x5c')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x5d'),require('./api/openchannelQueueReport'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x5e'),require(_0x5e9e('0x5f')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x60'),require(_0x5e9e('0x61')));_0x2411a6['use'](_0x5e9e('0x62'),require(_0x5e9e('0x63')));_0x2411a6[_0x5e9e('0x9')]('/api/chat/offline_messages',require(_0x5e9e('0x64')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x65'),require(_0x5e9e('0x66')));_0x2411a6['use']('/api/chat/groups',require(_0x5e9e('0x67')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x68'),require(_0x5e9e('0x69')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x6a'),require(_0x5e9e('0x6b')));_0x2411a6[_0x5e9e('0x9')]('/api/cm/contacts',require('./api/cmContact'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x6c'),require(_0x5e9e('0x6d')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x6e'),require('./api/cmHopperBlack'));_0x2411a6[_0x5e9e('0x9')]('/api/cm/hopper_final',require(_0x5e9e('0x6f')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x70'),require(_0x5e9e('0x71')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x72'),require(_0x5e9e('0x73')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x74'),require(_0x5e9e('0x75')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x76'),require(_0x5e9e('0x77')));_0x2411a6[_0x5e9e('0x9')]('/api/canned_answers',require(_0x5e9e('0x78')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x79'),require(_0x5e9e('0x7a')));_0x2411a6[_0x5e9e('0x9')]('/api/conditions',require(_0x5e9e('0x7b')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x7c'),require(_0x5e9e('0x7d')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x7e'),require(_0x5e9e('0x7f')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x80'),require(_0x5e9e('0x81')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x82'),require(_0x5e9e('0x83')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x84'),require(_0x5e9e('0x85')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x86'),require(_0x5e9e('0x87')));_0x2411a6['use']('/api/tags',require(_0x5e9e('0x88')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x89'),require(_0x5e9e('0x8a')));_0x2411a6[_0x5e9e('0x9')]('/api/triggers',require(_0x5e9e('0x8b')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x8c'),require(_0x5e9e('0x8d')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x8e'),require(_0x5e9e('0x8f')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x90'),require(_0x5e9e('0x91')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x92'),require(_0x5e9e('0x93')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x94'),require(_0x5e9e('0x95')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x96'),require('./api/analyticExtractedReport'));_0x2411a6['use'](_0x5e9e('0x97'),require(_0x5e9e('0x98')));_0x2411a6['use'](_0x5e9e('0x99'),require(_0x5e9e('0x9a')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x9b'),require(_0x5e9e('0x9c')));_0x2411a6['use'](_0x5e9e('0x9d'),require('./api/intSalesforceAccount'));_0x2411a6['use']('/api/integrations/salesforce/configurations',require('./api/intSalesforceConfiguration'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x9e'),require(_0x5e9e('0x9f')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xa0'),require(_0x5e9e('0xa1')));_0x2411a6[_0x5e9e('0x9')]('/api/integrations/sugarcrm/configurations',require(_0x5e9e('0xa2')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xa3'),require(_0x5e9e('0xa4')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xa5'),require(_0x5e9e('0xa6')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xa7'),require('./api/intDeskConfiguration'));_0x2411a6['use'](_0x5e9e('0xa8'),require(_0x5e9e('0xa9')));_0x2411a6[_0x5e9e('0x9')]('/api/integrations/zoho/accounts',require(_0x5e9e('0xaa')));_0x2411a6[_0x5e9e('0x9')]('/api/integrations/zoho/configurations',require(_0x5e9e('0xab')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xac'),require('./api/intZohoField'));_0x2411a6[_0x5e9e('0x9')]('/api/integrations/zendesk/accounts',require(_0x5e9e('0xad')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xae'),require('./api/intZendeskConfiguration'));_0x2411a6['use'](_0x5e9e('0xaf'),require(_0x5e9e('0xb0')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xb1'),require(_0x5e9e('0xb2')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xb3'),require('./api/intFreshdeskConfiguration'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xb4'),require(_0x5e9e('0xb5')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xb6'),require(_0x5e9e('0xb7')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xb8'),require(_0x5e9e('0xb9')));_0x2411a6['use'](_0x5e9e('0xba'),require('./api/intVtigerField'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xbb'),require(_0x5e9e('0xbc')));_0x2411a6[_0x5e9e('0x9')]('/api/integrations/servicenow/configurations',require(_0x5e9e('0xbd')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xbe'),require(_0x5e9e('0xbf')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xc0'),require(_0x5e9e('0xc1')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xc2'),require(_0x5e9e('0xc3')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xc4'),require(_0x5e9e('0xc5')));_0x2411a6[_0x5e9e('0x9')]('/api/integrations/freshsales/accounts',require('./api/intFreshsalesAccount'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xc6'),require(_0x5e9e('0xc7')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xc8'),require(_0x5e9e('0xc9')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xca'),require(_0x5e9e('0xcb')));_0x2411a6[_0x5e9e('0x9')]('/api/chat/reports/queue',require(_0x5e9e('0xcc')));_0x2411a6['use']('/api/chat/internal/messages',require('./api/chatInternalMessage'));_0x2411a6['use'](_0x5e9e('0xcd'),require(_0x5e9e('0xce')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xcf'),require(_0x5e9e('0xd0')));_0x2411a6['use'](_0x5e9e('0xd1'),require(_0x5e9e('0xd2')));_0x2411a6['use'](_0x5e9e('0xd3'),require(_0x5e9e('0xd4')));_0x2411a6[_0x5e9e('0x9')]('/api/square/reports',require(_0x5e9e('0xd5')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xd6'),require(_0x5e9e('0xd7')));_0x2411a6[_0x5e9e('0x9')]('/api/jscripty/projects',require(_0x5e9e('0xd8')));_0x2411a6[_0x5e9e('0x9')]('/api/settings',require(_0x5e9e('0xd9')));_0x2411a6['use'](_0x5e9e('0xda'),require(_0x5e9e('0xdb')));_0x2411a6[_0x5e9e('0x9')]('/api/square/projects',require(_0x5e9e('0xdc')));_0x2411a6[_0x5e9e('0x9')]('/api/square/recordings',require(_0x5e9e('0xdd')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xde'),require(_0x5e9e('0xdf')));_0x2411a6[_0x5e9e('0x9')]('/api/teams',require(_0x5e9e('0xe0')));_0x2411a6[_0x5e9e('0x9')]('/api/license',require('./api/license'));_0x2411a6['use'](_0x5e9e('0xe1'),require(_0x5e9e('0xe2')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xe3'),require(_0x5e9e('0xe4')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xe5'),require(_0x5e9e('0xe6')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xe7'),require(_0x5e9e('0xe8')));_0x2411a6[_0x5e9e('0x9')]('/api/mail/reports/transfer',require(_0x5e9e('0xe9')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xea'),require(_0x5e9e('0xeb')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xec'),require(_0x5e9e('0xed')));_0x2411a6['use'](_0x5e9e('0xee'),require(_0x5e9e('0xef')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xf0'),require('./api/smsTransferReport'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xf1'),require(_0x5e9e('0xf2')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xf3'),require(_0x5e9e('0xf4')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xf5'),require('./api/userProfile'));_0x2411a6['use'](_0x5e9e('0xf6'),require(_0x5e9e('0xf7')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xf8'),require(_0x5e9e('0xf9')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xfa'),require(_0x5e9e('0xfb')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xfc'),require(_0x5e9e('0xfd')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0xfe'),require('./api/whatsappApplication'));_0x2411a6[_0x5e9e('0x9')]('/api/whatsapp/interactions',require(_0x5e9e('0xff')));_0x2411a6[_0x5e9e('0x9')]('/api/whatsapp/messages',require(_0x5e9e('0x100')));_0x2411a6['use'](_0x5e9e('0x101'),require(_0x5e9e('0x102')));_0x2411a6['use'](_0x5e9e('0x103'),require(_0x5e9e('0x104')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x105'),require(_0x5e9e('0x106')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x107'),require(_0x5e9e('0x108')));_0x2411a6[_0x5e9e('0x9')]('/api/realtime',require(_0x5e9e('0x109')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x10a'),require(_0x5e9e('0x10b')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x10c'),require(_0x5e9e('0x10d')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x10e'),require(_0x5e9e('0x10f')));_0x2411a6[_0x5e9e('0x9')]('/api/rpc',require(_0x5e9e('0x110')));_0x2411a6[_0x5e9e('0x9')]('/api/version',require(_0x5e9e('0x111')));_0x2411a6[_0x5e9e('0x9')]('/api/system',require('./api/system'));_0x2411a6[_0x5e9e('0x9')]('/api/pm2',require('./api/pm2'));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x112'),require(_0x5e9e('0x113')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x114'),express['static'](path[_0x5e9e('0x115')](config[_0x5e9e('0x116')],_0x5e9e('0x114'))));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x117'),express['static'](path[_0x5e9e('0x115')](config[_0x5e9e('0x116')],_0x5e9e('0x117'))));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x118'),express[_0x5e9e('0x119')](path[_0x5e9e('0x115')](config[_0x5e9e('0x116')],'/demo')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x11a'),express[_0x5e9e('0x119')](path[_0x5e9e('0x115')](config[_0x5e9e('0x116')],_0x5e9e('0x11b'),'3.0.0')));_0x2411a6[_0x5e9e('0x9')](_0x5e9e('0x11c'),express[_0x5e9e('0x119')](path[_0x5e9e('0x115')](config['root'],'/server/files/plugins')));_0x2411a6[_0x5e9e('0x11d')](_0x5e9e('0x11e'))[_0x5e9e('0x11f')](errors[0x194]);_0x2411a6[_0x5e9e('0x11d')]('/*')[_0x5e9e('0x11f')](function(_0x29df68,_0x10af10){_0x10af10['sendFile'](path[_0x5e9e('0x120')](_0x2411a6[_0x5e9e('0x11f')]('appPath')+'/index.html'));});};var sensitiveFields=[_0x5e9e('0x121'),_0x5e9e('0x122'),_0x5e9e('0x123'),_0x5e9e('0x124'),_0x5e9e('0x125'),_0x5e9e('0x126'),'street',_0x5e9e('0x127'),_0x5e9e('0x128'),'fax',_0x5e9e('0x129'),_0x5e9e('0x12a'),_0x5e9e('0x12b'),_0x5e9e('0x12c'),_0x5e9e('0x12d'),_0x5e9e('0x12e'),'tenantId','token',_0x5e9e('0x12f'),_0x5e9e('0x130'),_0x5e9e('0x131'),_0x5e9e('0x132'),_0x5e9e('0x133'),_0x5e9e('0x134'),'membername','calleridname',_0x5e9e('0x135'),_0x5e9e('0x136'),_0x5e9e('0x137'),_0x5e9e('0x138'),'privateKey',_0x5e9e('0x139'),_0x5e9e('0x13a'),_0x5e9e('0x13b'),_0x5e9e('0x15'),'pass',_0x5e9e('0x13c'),_0x5e9e('0x13d'),_0x5e9e('0x13e'),'secret',_0x5e9e('0x13f'),_0x5e9e('0x140')];function maskSensitiveData(_0x31dd03){var _0xd6cdc8=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0x31dd03))return;for(var _0x8f8c7e in _0x31dd03){if(_[_0x5e9e('0x141')](_0x31dd03[_0x8f8c7e])){for(var _0x445899=0x0;_0x445899<_0x31dd03[_0x8f8c7e]['length'];_0x445899++){maskSensitiveData(_0x31dd03[_0x8f8c7e][_0x445899]);}}else if(_[_0x5e9e('0x142')](_0x31dd03[_0x8f8c7e])){maskSensitiveData(_0x31dd03[_0x8f8c7e]);}else if(_[_0x5e9e('0x143')](_0x31dd03[_0x8f8c7e])){_0x31dd03[_0x8f8c7e]=_0x31dd03[_0x8f8c7e]['replace'](/{{{/g,_0x5e9e('0x144'))[_0x5e9e('0x145')](/}}}/g,'}@@')['replace'](/{{/g,'@{')[_0x5e9e('0x145')](/}}/g,'}@');if(_[_0x5e9e('0x146')](sensitiveFields,_0x8f8c7e)){_0x31dd03[_0x8f8c7e]=_0x31dd03[_0x8f8c7e][_0x5e9e('0x145')](_0xd6cdc8,'*');}}}}
\ No newline at end of file
+var _0x876a=['./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/odbc','/api/square/projects','./api/squareProject','/api/square/messages','./api/squareMessage','./api/team','/api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/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/cloudProviders','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','./api/rpc','/api/version','/api/system','./api/system','/api/pm2','/api/webbar','/apidoc','join','root','/www','static','/demo','snippet','/plugins','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','sendFile','get','/index.html','password','newPassword','firstName','lastName','mobile','fax','email','clientSecret','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','membername','calleridnum','vidaooApiKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','registry','oldPassword','isPlainObject','isArray','replace','@@{','}@@','includes','lodash','path','express','express-winston','./config/environment','./config/logger','api','auth','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','method','headers','x-forwarded-for','connection','responseTime','user','name','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','remoteAddress','url','statusCode','other','agent_name','test','/api/users','./api/user','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','/api/voice/queues','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/queues/reports','./api/voiceQueueReport','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','./api/mailAccount','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmCustomField','./api/action','/api/automations','/api/canned_answers','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/tags','./api/tag','./api/template','/api/triggers','/api/variables','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports'];(function(_0x411b5e,_0x4710ba){var _0xe38727=function(_0xc67dfa){while(--_0xc67dfa){_0x411b5e['push'](_0x411b5e['shift']());}};_0xe38727(++_0x4710ba);}(_0x876a,0x70));var _0xa876=function(_0x3919f5,_0x3506d6){_0x3919f5=_0x3919f5-0x0;var _0x4f5179=_0x876a[_0x3919f5];return _0x4f5179;};'use strict';var _=require(_0xa876('0x0'));var path=require(_0xa876('0x1'));var express=require(_0xa876('0x2'));var ewinston=require(_0xa876('0x3'));var util=require('util');var errors=require('./errors');var config=require(_0xa876('0x4'));var logger=require(_0xa876('0x5'))(_0xa876('0x6'));var authLogger=require(_0xa876('0x5'))(_0xa876('0x7'));exports['default']=function(_0x2c1895){_0x2c1895[_0xa876('0x8')](ewinston[_0xa876('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4cc3a7,_0x2bcb58){var _0x5b2787=_0xa876('0xa');if(!_['isEmpty'](_0x4cc3a7[_0xa876('0xb')])){_0x5b2787+=_0xa876('0xc');var _0x1f486f=_0x4cc3a7[_0xa876('0xb')];maskSensitiveData(_0x1f486f);}return util['format'](_0x5b2787,_0x4cc3a7[_0xa876('0xd')],_0x4cc3a7[_0xa876('0xe')][_0xa876('0xf')]?_0x4cc3a7['headers'][_0xa876('0xf')]:_0x4cc3a7[_0xa876('0x10')]['remoteAddress']||_0x4cc3a7['ip'],_0x4cc3a7['url'],_0x2bcb58['statusCode'],_0x2bcb58[_0xa876('0x11')],_0x4cc3a7['user']?_0x4cc3a7[_0xa876('0x12')]['id']:null,_0x4cc3a7[_0xa876('0x12')]?_0x4cc3a7['user'][_0xa876('0x13')]:null,_0x4cc3a7[_0xa876('0x12')]?_0x4cc3a7['user'][_0xa876('0x14')]:null,_0x1f486f?util['inspect'](_0x1f486f,![],null):'');}}));_0x2c1895[_0xa876('0x8')](ewinston[_0xa876('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x56b8e2,_0x16ca5d){var _0x18761b=_0xa876('0x15');if(_0x56b8e2[_0xa876('0xb')]&&_0x56b8e2['body'][_0xa876('0x16')]&&_0x56b8e2[_0xa876('0xb')][_0xa876('0x17')]){_0x18761b=_0xa876('0x18');}return util[_0xa876('0x19')](_0x18761b,_0x56b8e2[_0xa876('0xd')],_0x56b8e2[_0xa876('0xe')][_0xa876('0xf')]?_0x56b8e2[_0xa876('0xe')][_0xa876('0xf')]:_0x56b8e2[_0xa876('0x10')][_0xa876('0x1a')]||_0x56b8e2['ip'],_0x56b8e2[_0xa876('0x1b')],_0x16ca5d[_0xa876('0x1c')],_0x16ca5d['responseTime'],_0x56b8e2['user']?_0x56b8e2[_0xa876('0x12')]['id']:null,_0x56b8e2[_0xa876('0x12')]?_0x56b8e2[_0xa876('0x12')][_0xa876('0x13')]:null,_0x56b8e2[_0xa876('0x12')]?_0x56b8e2[_0xa876('0x12')][_0xa876('0x14')]:null,_0x56b8e2[_0xa876('0xb')]&&_0x56b8e2[_0xa876('0xb')][_0xa876('0x16')]?_0x56b8e2[_0xa876('0xb')][_0xa876('0x16')]:_0xa876('0x1d'),_0x56b8e2[_0xa876('0xb')]&&_0x56b8e2[_0xa876('0xb')][_0xa876('0x17')]?_0x56b8e2[_0xa876('0xb')]['agent_id']:'',_0x56b8e2[_0xa876('0xb')]&&_0x56b8e2['body'][_0xa876('0x1e')]?_0x56b8e2[_0xa876('0xb')][_0xa876('0x1e')]:'');},'ignoreRoute':function(_0x3f4792){var _0x4cde0f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4cde0f[_0xa876('0x1f')](_0x3f4792[_0xa876('0x1b')]);}}));_0x2c1895[_0xa876('0x8')](_0xa876('0x20'),require(_0xa876('0x21')));_0x2c1895[_0xa876('0x8')]('/api/voice/chanspy',require(_0xa876('0x22')));_0x2c1895[_0xa876('0x8')](_0xa876('0x23'),require(_0xa876('0x24')));_0x2c1895[_0xa876('0x8')](_0xa876('0x25'),require(_0xa876('0x26')));_0x2c1895[_0xa876('0x8')](_0xa876('0x27'),require('./api/voiceMusicOnHold'));_0x2c1895[_0xa876('0x8')](_0xa876('0x28'),require('./api/voiceQueue'));_0x2c1895['use']('/api/voice/recordings',require(_0xa876('0x29')));_0x2c1895[_0xa876('0x8')](_0xa876('0x2a'),require(_0xa876('0x2b')));_0x2c1895['use'](_0xa876('0x2c'),require('./api/voiceMail'));_0x2c1895[_0xa876('0x8')]('/api/voice/mails/messages',require(_0xa876('0x2d')));_0x2c1895['use'](_0xa876('0x2e'),require(_0xa876('0x2f')));_0x2c1895['use'](_0xa876('0x30'),require(_0xa876('0x31')));_0x2c1895[_0xa876('0x8')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x2c1895['use'](_0xa876('0x32'),require(_0xa876('0x33')));_0x2c1895[_0xa876('0x8')]('/api/members/reports',require('./api/memberReport'));_0x2c1895['use']('/api/trunks',require(_0xa876('0x34')));_0x2c1895[_0xa876('0x8')](_0xa876('0x35'),require('./api/voiceTransferReport'));_0x2c1895[_0xa876('0x8')](_0xa876('0x36'),require('./api/mailServerOut'));_0x2c1895['use']('/api/mail/accounts',require(_0xa876('0x37')));_0x2c1895['use']('/api/mail/queues',require(_0xa876('0x38')));_0x2c1895[_0xa876('0x8')](_0xa876('0x39'),require(_0xa876('0x3a')));_0x2c1895['use'](_0xa876('0x3b'),require('./api/mailInteraction'));_0x2c1895[_0xa876('0x8')]('/api/mail/messages',require(_0xa876('0x3c')));_0x2c1895['use'](_0xa876('0x3d'),require('./api/mailApplication'));_0x2c1895['use'](_0xa876('0x3e'),require(_0xa876('0x3f')));_0x2c1895[_0xa876('0x8')](_0xa876('0x40'),require('./api/dashboard'));_0x2c1895[_0xa876('0x8')](_0xa876('0x41'),require(_0xa876('0x42')));_0x2c1895[_0xa876('0x8')](_0xa876('0x43'),require(_0xa876('0x44')));_0x2c1895[_0xa876('0x8')](_0xa876('0x45'),require('./api/faxApplication'));_0x2c1895['use']('/api/fax/interactions',require(_0xa876('0x46')));_0x2c1895['use'](_0xa876('0x47'),require(_0xa876('0x48')));_0x2c1895[_0xa876('0x8')](_0xa876('0x49'),require('./api/faxQueue'));_0x2c1895[_0xa876('0x8')](_0xa876('0x4a'),require(_0xa876('0x4b')));_0x2c1895[_0xa876('0x8')](_0xa876('0x4c'),require('./api/smsAccount'));_0x2c1895[_0xa876('0x8')](_0xa876('0x4d'),require('./api/smsApplication'));_0x2c1895[_0xa876('0x8')]('/api/sms/interactions',require(_0xa876('0x4e')));_0x2c1895[_0xa876('0x8')](_0xa876('0x4f'),require(_0xa876('0x50')));_0x2c1895[_0xa876('0x8')]('/api/sms/queues',require(_0xa876('0x51')));_0x2c1895[_0xa876('0x8')](_0xa876('0x52'),require(_0xa876('0x53')));_0x2c1895[_0xa876('0x8')](_0xa876('0x54'),require('./api/openchannelApplication'));_0x2c1895[_0xa876('0x8')](_0xa876('0x55'),require('./api/openchannelInteraction'));_0x2c1895['use'](_0xa876('0x56'),require(_0xa876('0x57')));_0x2c1895['use'](_0xa876('0x58'),require('./api/openchannelQueue'));_0x2c1895[_0xa876('0x8')](_0xa876('0x59'),require(_0xa876('0x5a')));_0x2c1895[_0xa876('0x8')]('/api/openchannel/reports/queue',require(_0xa876('0x5b')));_0x2c1895['use'](_0xa876('0x5c'),require(_0xa876('0x5d')));_0x2c1895[_0xa876('0x8')](_0xa876('0x5e'),require(_0xa876('0x5f')));_0x2c1895['use']('/api/chat/messages',require(_0xa876('0x60')));_0x2c1895['use'](_0xa876('0x61'),require(_0xa876('0x62')));_0x2c1895[_0xa876('0x8')](_0xa876('0x63'),require(_0xa876('0x64')));_0x2c1895[_0xa876('0x8')](_0xa876('0x65'),require('./api/chatGroup'));_0x2c1895[_0xa876('0x8')](_0xa876('0x66'),require(_0xa876('0x67')));_0x2c1895['use']('/api/cm/companies',require('./api/cmCompany'));_0x2c1895['use']('/api/cm/contacts',require('./api/cmContact'));_0x2c1895['use']('/api/cm/hopper',require('./api/cmHopper'));_0x2c1895[_0xa876('0x8')](_0xa876('0x68'),require(_0xa876('0x69')));_0x2c1895[_0xa876('0x8')](_0xa876('0x6a'),require(_0xa876('0x6b')));_0x2c1895[_0xa876('0x8')](_0xa876('0x6c'),require('./api/cmHopperHistory'));_0x2c1895[_0xa876('0x8')]('/api/cm/custom_fields',require(_0xa876('0x6d')));_0x2c1895[_0xa876('0x8')]('/api/actions',require(_0xa876('0x6e')));_0x2c1895[_0xa876('0x8')](_0xa876('0x6f'),require('./api/automation'));_0x2c1895[_0xa876('0x8')](_0xa876('0x70'),require('./api/cannedAnswer'));_0x2c1895[_0xa876('0x8')](_0xa876('0x71'),require(_0xa876('0x72')));_0x2c1895[_0xa876('0x8')](_0xa876('0x73'),require(_0xa876('0x74')));_0x2c1895[_0xa876('0x8')](_0xa876('0x75'),require(_0xa876('0x76')));_0x2c1895[_0xa876('0x8')](_0xa876('0x77'),require(_0xa876('0x78')));_0x2c1895['use'](_0xa876('0x79'),require(_0xa876('0x7a')));_0x2c1895[_0xa876('0x8')](_0xa876('0x7b'),require(_0xa876('0x7c')));_0x2c1895[_0xa876('0x8')](_0xa876('0x7d'),require(_0xa876('0x7e')));_0x2c1895['use'](_0xa876('0x7f'),require('./api/sound'));_0x2c1895[_0xa876('0x8')](_0xa876('0x80'),require(_0xa876('0x81')));_0x2c1895['use']('/api/templates',require(_0xa876('0x82')));_0x2c1895[_0xa876('0x8')](_0xa876('0x83'),require('./api/trigger'));_0x2c1895['use'](_0xa876('0x84'),require('./api/variable'));_0x2c1895[_0xa876('0x8')]('/api/integrations',require('./api/integration'));_0x2c1895[_0xa876('0x8')](_0xa876('0x85'),require(_0xa876('0x86')));_0x2c1895[_0xa876('0x8')](_0xa876('0x87'),require('./api/analyticCustomReport'));_0x2c1895[_0xa876('0x8')]('/api/analytics/default_reports',require(_0xa876('0x88')));_0x2c1895[_0xa876('0x8')]('/api/analytics/extracted_reports',require(_0xa876('0x89')));_0x2c1895['use'](_0xa876('0x8a'),require(_0xa876('0x8b')));_0x2c1895[_0xa876('0x8')]('/api/analytics/field_reports',require(_0xa876('0x8c')));_0x2c1895['use'](_0xa876('0x8d'),require(_0xa876('0x8e')));_0x2c1895[_0xa876('0x8')]('/api/integrations/salesforce/accounts',require(_0xa876('0x8f')));_0x2c1895[_0xa876('0x8')](_0xa876('0x90'),require(_0xa876('0x91')));_0x2c1895['use'](_0xa876('0x92'),require(_0xa876('0x93')));_0x2c1895[_0xa876('0x8')](_0xa876('0x94'),require('./api/intSugarcrmAccount'));_0x2c1895['use'](_0xa876('0x95'),require('./api/intSugarcrmConfiguration'));_0x2c1895[_0xa876('0x8')]('/api/integrations/sugarcrm/fields',require(_0xa876('0x96')));_0x2c1895[_0xa876('0x8')](_0xa876('0x97'),require(_0xa876('0x98')));_0x2c1895[_0xa876('0x8')]('/api/integrations/desk/configurations',require(_0xa876('0x99')));_0x2c1895[_0xa876('0x8')](_0xa876('0x9a'),require(_0xa876('0x9b')));_0x2c1895[_0xa876('0x8')](_0xa876('0x9c'),require('./api/intZohoAccount'));_0x2c1895[_0xa876('0x8')](_0xa876('0x9d'),require(_0xa876('0x9e')));_0x2c1895[_0xa876('0x8')](_0xa876('0x9f'),require(_0xa876('0xa0')));_0x2c1895[_0xa876('0x8')](_0xa876('0xa1'),require(_0xa876('0xa2')));_0x2c1895[_0xa876('0x8')](_0xa876('0xa3'),require(_0xa876('0xa4')));_0x2c1895[_0xa876('0x8')](_0xa876('0xa5'),require('./api/intZendeskField'));_0x2c1895[_0xa876('0x8')](_0xa876('0xa6'),require(_0xa876('0xa7')));_0x2c1895[_0xa876('0x8')]('/api/integrations/freshdesk/configurations',require(_0xa876('0xa8')));_0x2c1895[_0xa876('0x8')]('/api/integrations/freshdesk/fields',require(_0xa876('0xa9')));_0x2c1895['use'](_0xa876('0xaa'),require(_0xa876('0xab')));_0x2c1895[_0xa876('0x8')](_0xa876('0xac'),require('./api/intVtigerConfiguration'));_0x2c1895['use'](_0xa876('0xad'),require('./api/intVtigerField'));_0x2c1895[_0xa876('0x8')](_0xa876('0xae'),require(_0xa876('0xaf')));_0x2c1895[_0xa876('0x8')](_0xa876('0xb0'),require(_0xa876('0xb1')));_0x2c1895[_0xa876('0x8')](_0xa876('0xb2'),require(_0xa876('0xb3')));_0x2c1895[_0xa876('0x8')](_0xa876('0xb4'),require('./api/intDynamics365Account'));_0x2c1895['use'](_0xa876('0xb5'),require('./api/intDynamics365Configuration'));_0x2c1895['use'](_0xa876('0xb6'),require(_0xa876('0xb7')));_0x2c1895['use']('/api/integrations/freshsales/accounts',require('./api/intFreshsalesAccount'));_0x2c1895['use'](_0xa876('0xb8'),require(_0xa876('0xb9')));_0x2c1895['use']('/api/integrations/freshsales/fields',require(_0xa876('0xba')));_0x2c1895[_0xa876('0x8')]('/api/networks',require(_0xa876('0xbb')));_0x2c1895[_0xa876('0x8')](_0xa876('0xbc'),require('./api/chatQueueReport'));_0x2c1895['use']('/api/chat/internal/messages',require(_0xa876('0xbd')));_0x2c1895[_0xa876('0x8')](_0xa876('0xbe'),require('./api/jscriptyAnswerReport'));_0x2c1895['use'](_0xa876('0xbf'),require(_0xa876('0xc0')));_0x2c1895['use'](_0xa876('0xc1'),require(_0xa876('0xc2')));_0x2c1895[_0xa876('0x8')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x2c1895[_0xa876('0x8')]('/api/square/reports',require(_0xa876('0xc3')));_0x2c1895[_0xa876('0x8')](_0xa876('0xc4'),require(_0xa876('0xc5')));_0x2c1895[_0xa876('0x8')](_0xa876('0xc6'),require(_0xa876('0xc7')));_0x2c1895[_0xa876('0x8')](_0xa876('0xc8'),require('./api/setting'));_0x2c1895[_0xa876('0x8')](_0xa876('0xc9'),require('./api/squareOdbc'));_0x2c1895[_0xa876('0x8')](_0xa876('0xca'),require(_0xa876('0xcb')));_0x2c1895[_0xa876('0x8')]('/api/square/recordings',require('./api/squareRecording'));_0x2c1895[_0xa876('0x8')](_0xa876('0xcc'),require(_0xa876('0xcd')));_0x2c1895[_0xa876('0x8')]('/api/teams',require(_0xa876('0xce')));_0x2c1895[_0xa876('0x8')](_0xa876('0xcf'),require('./api/license'));_0x2c1895[_0xa876('0x8')](_0xa876('0xd0'),require(_0xa876('0xd1')));_0x2c1895[_0xa876('0x8')](_0xa876('0xd2'),require(_0xa876('0xd3')));_0x2c1895[_0xa876('0x8')]('/api/attachments',require(_0xa876('0xd4')));_0x2c1895[_0xa876('0x8')](_0xa876('0xd5'),require(_0xa876('0xd6')));_0x2c1895[_0xa876('0x8')](_0xa876('0xd7'),require(_0xa876('0xd8')));_0x2c1895['use'](_0xa876('0xd9'),require('./api/chatTransferReport'));_0x2c1895[_0xa876('0x8')]('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x2c1895[_0xa876('0x8')](_0xa876('0xda'),require(_0xa876('0xdb')));_0x2c1895[_0xa876('0x8')](_0xa876('0xdc'),require(_0xa876('0xdd')));_0x2c1895[_0xa876('0x8')](_0xa876('0xde'),require(_0xa876('0xdf')));_0x2c1895[_0xa876('0x8')]('/api/voice/prefixes',require(_0xa876('0xe0')));_0x2c1895[_0xa876('0x8')](_0xa876('0xe1'),require(_0xa876('0xe2')));_0x2c1895[_0xa876('0x8')](_0xa876('0xe3'),require(_0xa876('0xe4')));_0x2c1895[_0xa876('0x8')](_0xa876('0xe5'),require('./api/userProfileResource'));_0x2c1895[_0xa876('0x8')](_0xa876('0xe6'),require(_0xa876('0xe7')));_0x2c1895[_0xa876('0x8')](_0xa876('0xe8'),require(_0xa876('0xe9')));_0x2c1895[_0xa876('0x8')](_0xa876('0xea'),require(_0xa876('0xeb')));_0x2c1895[_0xa876('0x8')](_0xa876('0xec'),require(_0xa876('0xed')));_0x2c1895['use'](_0xa876('0xee'),require('./api/whatsappMessage'));_0x2c1895[_0xa876('0x8')]('/api/whatsapp/reports/queue',require(_0xa876('0xef')));_0x2c1895[_0xa876('0x8')](_0xa876('0xf0'),require(_0xa876('0xf1')));_0x2c1895[_0xa876('0x8')](_0xa876('0xf2'),require(_0xa876('0xf3')));_0x2c1895[_0xa876('0x8')](_0xa876('0xf4'),require('./api/cloudProvider'));_0x2c1895[_0xa876('0x8')]('/api/realtime',require('./api/realtime'));_0x2c1895[_0xa876('0x8')](_0xa876('0xf5'),require(_0xa876('0xf6')));_0x2c1895[_0xa876('0x8')](_0xa876('0xf7'),require(_0xa876('0xf8')));_0x2c1895[_0xa876('0x8')](_0xa876('0xf9'),require(_0xa876('0xfa')));_0x2c1895[_0xa876('0x8')]('/api/rpc',require(_0xa876('0xfb')));_0x2c1895[_0xa876('0x8')](_0xa876('0xfc'),require('./api/version'));_0x2c1895[_0xa876('0x8')](_0xa876('0xfd'),require(_0xa876('0xfe')));_0x2c1895['use'](_0xa876('0xff'),require('./api/pm2'));_0x2c1895[_0xa876('0x8')](_0xa876('0x100'),require('./api/webbar'));_0x2c1895[_0xa876('0x8')](_0xa876('0x101'),express['static'](path[_0xa876('0x102')](config[_0xa876('0x103')],'/apidoc')));_0x2c1895[_0xa876('0x8')](_0xa876('0x104'),express[_0xa876('0x105')](path['join'](config[_0xa876('0x103')],_0xa876('0x104'))));_0x2c1895['use'](_0xa876('0x106'),express[_0xa876('0x105')](path[_0xa876('0x102')](config[_0xa876('0x103')],'/demo')));_0x2c1895[_0xa876('0x8')]('/snippet',express[_0xa876('0x105')](path[_0xa876('0x102')](config['root'],_0xa876('0x107'),'3.0.0')));_0x2c1895[_0xa876('0x8')](_0xa876('0x108'),express[_0xa876('0x105')](path['join'](config[_0xa876('0x103')],_0xa876('0x109'))));_0x2c1895['route'](_0xa876('0x10a'))['get'](errors[0x194]);_0x2c1895['route']('/*')['get'](function(_0x203094,_0x465cf2){_0x465cf2[_0xa876('0x10b')](path['resolve'](_0x2c1895[_0xa876('0x10c')]('appPath')+_0xa876('0x10d')));});};var sensitiveFields=['username',_0xa876('0x10e'),_0xa876('0x10f'),'apiKey',_0xa876('0x110'),_0xa876('0x111'),'street','phone',_0xa876('0x112'),_0xa876('0x113'),_0xa876('0x114'),'clientId',_0xa876('0x115'),_0xa876('0x116'),_0xa876('0x117'),_0xa876('0x118'),_0xa876('0x119'),_0xa876('0x11a'),_0xa876('0x11b'),_0xa876('0x11c'),_0xa876('0x11d'),_0xa876('0x11e'),'consumerKey','consumerSecret',_0xa876('0x11f'),'calleridname',_0xa876('0x120'),'exten',_0xa876('0x121'),'clientEmail','privateKey',_0xa876('0x122'),_0xa876('0x123'),_0xa876('0x124'),_0xa876('0x12'),_0xa876('0x125'),_0xa876('0x126'),_0xa876('0x127'),'dsn','secret',_0xa876('0x128'),_0xa876('0x129')];function maskSensitiveData(_0x317f6f){var _0x4f3da3=/(?!^)[\s\S](?!$)/g;if(!_[_0xa876('0x12a')](_0x317f6f))return;for(var _0xd2131 in _0x317f6f){if(_[_0xa876('0x12b')](_0x317f6f[_0xd2131])){for(var _0x1c281e=0x0;_0x1c281e<_0x317f6f[_0xd2131]['length'];_0x1c281e++){maskSensitiveData(_0x317f6f[_0xd2131][_0x1c281e]);}}else if(_[_0xa876('0x12a')](_0x317f6f[_0xd2131])){maskSensitiveData(_0x317f6f[_0xd2131]);}else if(_['isString'](_0x317f6f[_0xd2131])){_0x317f6f[_0xd2131]=_0x317f6f[_0xd2131][_0xa876('0x12c')](/{{{/g,_0xa876('0x12d'))['replace'](/}}}/g,_0xa876('0x12e'))[_0xa876('0x12c')](/{{/g,'@{')[_0xa876('0x12c')](/}}/g,'}@');if(_[_0xa876('0x12f')](sensitiveFields,_0xd2131)){_0x317f6f[_0xd2131]=_0x317f6f[_0xd2131][_0xa876('0x12c')](_0x4f3da3,'*');}}}}
\ No newline at end of file
index 6bd96de..ddcfb87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda0a=['../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','localhost','error','listen','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','bluebird','lodash','../config/environment','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxApplication/faxApplication.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda0a,0xea));var _0xada0=function(_0x185357,_0x157adf){_0x185357=_0x185357-0x0;var _0x51910c=_0xda0a[_0x185357];return _0x51910c;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xada0('0x0'));var _=require(_0xada0('0x1'));var config=require(_0xada0('0x2'));exports['listen']=function(){return new BPromise(function(_0x4f6fd6,_0x46bb8f){var _0x49adc7={};_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x4')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x5')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x6')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x7')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x8')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x9')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0xa')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0xb')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0xc')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0xd')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/mailServerIn/mailServerIn.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0xe')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0xf')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/mailInteraction/mailInteraction.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x10')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x11')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/faxAccount/faxAccount.rpc'));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x12')));_0x49adc7=_['merge'](_0x49adc7,require('../api/faxInteraction/faxInteraction.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/faxMessage/faxMessage.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x13')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x14')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x15')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x16')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/smsMessage/smsMessage.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x17')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x18')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x19')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x1a')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x1b')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x1c')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x1d')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x1e')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x1f')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x20')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x21')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x22')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x23')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x24')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/pause/pause.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/sound/sound.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/template/template.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/trigger/trigger.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x25')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x26')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x27')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x28')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x29')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x2a')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x2b')));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x2c')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x2d')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x2e')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x2f')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x30')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x31')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/squareReport/squareReport.rpc'));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x32')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x33')));_0x49adc7=_['merge'](_0x49adc7,require('../api/squareOdbc/squareOdbc.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x34')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x35')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x36')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/campaign/campaign.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x37')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x38')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x39')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x49adc7=_['merge'](_0x49adc7,require(_0xada0('0x3a')));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x49adc7=_[_0xada0('0x3')](_0x49adc7,require(_0xada0('0x3b')));var _0x347e56=jayson[_0xada0('0x3c')](_0x49adc7)[_0xada0('0x3d')]();var _0x28b2b2=config[_0xada0('0x3e')]['port']||config['port']+0x1;var _0xa8dae0=config[_0xada0('0x3e')]['ip']||_0xada0('0x3f');_0x347e56['on'](_0xada0('0x40'),function(_0x40293d){return _0x46bb8f(_0x40293d);});_0x347e56[_0xada0('0x41')](_0x28b2b2,_0xa8dae0,function(){console[_0xada0('0x42')](_0xada0('0x43'),_0xa8dae0,_0x28b2b2);require(_0xada0('0x44'))['default']();return _0x4f6fd6(_0xada0('0x45')+_0xa8dae0+':'+_0x28b2b2);});});};
\ No newline at end of file
+var _0x4455=['../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intDeskAccount/intDeskAccount.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/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','../config/environment','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc'];(function(_0xaf7479,_0x5e8fa7){var _0x2e0d12=function(_0x2985d0){while(--_0x2985d0){_0xaf7479['push'](_0xaf7479['shift']());}};_0x2e0d12(++_0x5e8fa7);}(_0x4455,0xff));var _0x5445=function(_0x1d77ca,_0x4f78ad){_0x1d77ca=_0x1d77ca-0x0;var _0x1e9b5f=_0x4455[_0x1d77ca];return _0x1e9b5f;};'use strict';var jayson=require(_0x5445('0x0'));var BPromise=require(_0x5445('0x1'));var _=require('lodash');var config=require(_0x5445('0x2'));exports['listen']=function(){return new BPromise(function(_0x530dc9,_0x7d245e){var _0x38b8b0={};_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x4')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x5')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x6')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x7')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x8')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x9')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0xa')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0xb')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/trunk/trunk.rpc'));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0xc')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0xd')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0xe')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0xf')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x10')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x11')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x12')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x13')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x14')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x15')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/faxApplication/faxApplication.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x16')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x17')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/faxQueue/faxQueue.rpc'));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x18')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x19')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x1a')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/smsMessage/smsMessage.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x1b')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x1c')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x1d')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x1e')));_0x38b8b0=_['merge'](_0x38b8b0,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x1f')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x20')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x21')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x22')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x23')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x24')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x25')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x26')));_0x38b8b0=_['merge'](_0x38b8b0,require('../api/interval/interval.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/pause/pause.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x27')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x28')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/trigger/trigger.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x29')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x2a')));_0x38b8b0=_['merge'](_0x38b8b0,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x2b')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x2c')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x2d')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x2e')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x2f')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x30')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x31')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x32')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x33')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x34')));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x35')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x36')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x37')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/squareRecording/squareRecording.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/squareMessage/squareMessage.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x38')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x39')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x3a')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x3b')));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x38b8b0=_[_0x5445('0x3')](_0x38b8b0,require(_0x5445('0x3c')));_0x38b8b0=_['merge'](_0x38b8b0,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x38b8b0=_['merge'](_0x38b8b0,require(_0x5445('0x3d')));var _0x89a9e9=jayson[_0x5445('0x3e')](_0x38b8b0)[_0x5445('0x3f')]();var _0x296a87=config[_0x5445('0x40')]['port']||config[_0x5445('0x41')]+0x1;var _0x4ad039=config['rpc']['ip']||'localhost';_0x89a9e9['on'](_0x5445('0x42'),function(_0x5e5dd1){return _0x7d245e(_0x5e5dd1);});_0x89a9e9['listen'](_0x296a87,_0x4ad039,function(){console[_0x5445('0x43')](_0x5445('0x44'),_0x4ad039,_0x296a87);require(_0x5445('0x45'))[_0x5445('0x46')]();return _0x530dc9(_0x5445('0x47')+_0x4ad039+':'+_0x296a87);});});};
\ No newline at end of file
index 365ded9..9add4fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6f3=['indexOf','substr','length','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','function','destroy','inherits','sendRequest','sync','prototype','answer','ANSWER','beep','format','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','continueAt','setExtension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','no\x20code','replace','result='];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0xb6f3,0x1c4));var _0x3b6f=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xb6f3[_0x4a9fb1];return _0x348672;};'use strict';var util=require(_0x3b6f('0x0'));var _=require(_0x3b6f('0x1'));var EventEmitter=require(_0x3b6f('0x2'))[_0x3b6f('0x3')];var AGIReply=require(_0x3b6f('0x4'));var AGIError=require(_0x3b6f('0x5'));function AGIChannel(_0x26d3bc){var _0x5b1280=this,_0x46e558=new AGIReply(),_0x349297=![],_0x115aa6={};EventEmitter[_0x3b6f('0x6')](_0x5b1280);_0x26d3bc[_0x3b6f('0x7')](_0x3b6f('0x8'));_0x26d3bc[_0x3b6f('0x9')](0x8*0x3c*0x3c*0x3e8);_0x46e558[_0x3b6f('0x7')](_0x3b6f('0x8'));_0x46e558['on'](_0x3b6f('0xa'),function(_0x5c6931){for(var _0x45b654 in _0x5c6931){_0x5b1280[_0x45b654]=_0x5c6931[_0x45b654];}_0x5b1280[_0x3b6f('0xb')]('ready');});_0x46e558['on'](_0x3b6f('0xc'),function(_0x17065c){if(_0x17065c[_0x3b6f('0xd')]()==_0x3b6f('0xe')){_0x5b1280[_0x3b6f('0xb')](_0x3b6f('0xe'));return;}if(_0x17065c[_0x3b6f('0xf')](0x0,0xb)==_0x3b6f('0x10')){_0x349297=!![];}if(_0x349297){_0x115aa6['rx']+=_0x17065c+'\x0a';if(_0x17065c[_0x3b6f('0x11')](_0x3b6f('0x12'))!=-0x1){_0x349297=![];}}else{_0x115aa6['rx']=_0x17065c;}if(_0x349297){return;}if(typeof _0x115aa6['cb']=='function'){var _0x550dbc=_0x115aa6['rx'][_0x3b6f('0xf')](0x0,0x3),_0x3563a3=null,_0x220a30=null;_0x550dbc=parseInt(_0x550dbc);if(isNaN(_0x550dbc)){_0x115aa6['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x3b6f('0x13')});return;}if(_0x550dbc!=0xc8){_0x115aa6['cb'](null,{'code':_0x550dbc,'result':-0x1,'extra':'KO'});return;}_0x3563a3=_0x115aa6['rx'][_0x3b6f('0xf')](0x4)[_0x3b6f('0x14')](_0x3b6f('0x15'),'');if(_0x3563a3[_0x3b6f('0x16')]('\x20')!=-0x1){_0x3563a3=_0x3563a3[_0x3b6f('0x17')](0x0,_0x3563a3[_0x3b6f('0x16')]('\x20'));}if(_['startsWith'](_0x3563a3,'-1')){_0x3563a3=parseInt(_0x3563a3);}_0x220a30=_0x115aa6['rx']['split']('\x20');if(_0x220a30['length']==0x3){_0x220a30=_0x220a30[0x2][_0x3b6f('0xf')](0x1,_0x220a30[0x2][_0x3b6f('0x18')]-0x1);}else if(_0x220a30[_0x3b6f('0x18')]>0x3){var _0xbc02ee=/\((.+)\)/;var _0x41bc40=_0x115aa6['rx']['match'](_0xbc02ee);if(_0x41bc40){_0x220a30=_0x41bc40[0x1];}else{_0x220a30=null;}}else{_0x220a30=null;}_0x115aa6['cb'](null,{'code':_0x550dbc,'result':_0x3563a3,'extra':_0x220a30});}});_0x26d3bc['on'](_0x3b6f('0x19'),function(_0x3c55f9){_0x5b1280[_0x3b6f('0xb')]('error',new AGIError(_0x3b6f('0x1a'),_0x3c55f9[_0x3b6f('0x1b')]));});_0x26d3bc['on'](_0x3b6f('0x1c'),function(){_0x5b1280['emit'](_0x3b6f('0x1c'),new AGIError(_0x3b6f('0x1d')));});_0x26d3bc['on'](_0x3b6f('0x1e'),function(){_0x5b1280[_0x3b6f('0xb')]('timeout',new AGIError(_0x3b6f('0x1f')));_0x26d3bc['destroy']();});_0x26d3bc[_0x3b6f('0x20')](_0x46e558);this['command']=function(_0x420f3b,_0x144f7a){var _0x420f3b=_0x420f3b||'',_0x144f7a=typeof _0x144f7a==_0x3b6f('0x21')?_0x144f7a:new Function();_0x115aa6={'tx':_0x420f3b,'rx':'','cb':_0x144f7a};_0x26d3bc['write'](_0x420f3b+'\x0a');},this[_0x3b6f('0x1c')]=function(){_0x26d3bc[_0x3b6f('0x22')]();};}util[_0x3b6f('0x23')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x3b6f('0x24')]=function(_0x130392){return this['command'][_0x3b6f('0x25')](this,_0x130392);};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x27')]=function(){return this[_0x3b6f('0x24')](_0x3b6f('0x28'));};AGIChannel[_0x3b6f('0x26')]['getData']=function(_0x210a84,_0x3fed32,_0x191134){_0x210a84=_0x210a84===undefined?_0x3b6f('0x29'):_0x210a84;_0x3fed32=_0x3fed32===undefined?'5':_0x3fed32;_0x191134=_0x191134===undefined?'1':_0x191134;return this[_0x3b6f('0x24')](util[_0x3b6f('0x2a')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x210a84,_0x3fed32*0x3e8,_0x191134));};AGIChannel[_0x3b6f('0x26')]['noop']=function(_0x5bd230){_0x5bd230=_0x5bd230||_0x3b6f('0x2b');return this['sendRequest'](util['format'](_0x3b6f('0x2c'),_0x5bd230));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x2d')]=function(_0x3d67b1,_0x48bcd8){if(_['isArray'](_0x48bcd8)){return this['sendRequest'](util[_0x3b6f('0x2a')](_0x3b6f('0x2e'),_0x3d67b1,_0x48bcd8[_0x3b6f('0x2f')](',')));}return this[_0x3b6f('0x24')](util['format'](_0x3b6f('0x2e'),_0x3d67b1,_0x48bcd8));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x30')]=function(_0x486980){return this[_0x3b6f('0x24')](util['format'](_0x3b6f('0x31'),_0x486980));};AGIChannel['prototype']['setExtension']=function(_0x2ff0ee){return this['sendRequest'](util[_0x3b6f('0x2a')](_0x3b6f('0x32'),_0x2ff0ee));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x33')]=function(_0x8bd6e9){return this[_0x3b6f('0x24')](util[_0x3b6f('0x2a')](_0x3b6f('0x34'),_0x8bd6e9));};AGIChannel['prototype'][_0x3b6f('0xe')]=function(){return this[_0x3b6f('0x24')](_0x3b6f('0x35'));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x36')]=function(_0x2280a9,_0x48d383){var _0xd07c39=_[_0x3b6f('0x37')](_0x48d383)||_[_0x3b6f('0x38')](_0x48d383)?_0x48d383[_0x3b6f('0x39')]():_0x48d383;return this['sendRequest'](util[_0x3b6f('0x2a')](_0x3b6f('0x3a'),_0x2280a9,_0xd07c39?_0xd07c39[_0x3b6f('0x39')]()[_0x3b6f('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x3b')]=function(_0x4fdf3d,_0x53ac10){return this[_0x3b6f('0x24')](util[_0x3b6f('0x2a')](_0x3b6f('0x3c'),_0x4fdf3d,_0x53ac10));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x3d')]=function(_0x47eca4,_0x41520b){return this['sendRequest'](util[_0x3b6f('0x2a')](_0x3b6f('0x3e'),_0x47eca4,_0x41520b));};AGIChannel[_0x3b6f('0x26')]['sayPhonetic']=function(_0x2be93e,_0x55d428){return this[_0x3b6f('0x24')](util[_0x3b6f('0x2a')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x2be93e,_0x55d428));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x3f')]=function(_0x22bf47,_0x23b7cd,_0x395339){_0x23b7cd=_0x23b7cd||this['extension'];_0x395339=_0x395339||0x1;this['setContext'](_0x22bf47);this[_0x3b6f('0x40')](_0x23b7cd);this[_0x3b6f('0x33')](_0x395339);return this[_0x3b6f('0x41')](util[_0x3b6f('0x2a')](_0x3b6f('0x42'),_0x22bf47,_0x23b7cd,_0x395339));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x43')]=function(_0xb73a4){return this[_0x3b6f('0x24')](util[_0x3b6f('0x2a')](_0x3b6f('0x44'),_0xb73a4));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x45')]=function(_0x1357e5,_0x56aa68,_0x4f439a,_0x53dd15,_0x4afec5,_0x48c101){_0x56aa68=_0x56aa68||_0x3b6f('0x46');_0x4f439a=_0x4f439a||'';_0x53dd15=_0x53dd15===undefined?-0x1:_0x53dd15==='-1'?-0x1:_0x53dd15*0x3e8;_0x4afec5=_0x4afec5===undefined?'':'s='+_0x4afec5;_0x48c101=_0x48c101?_0x3b6f('0x47'):'';return this['sendRequest'](util['format'](_0x3b6f('0x48'),_0x1357e5,_0x56aa68,_0x4f439a,_0x53dd15,_0x48c101,_0x4afec5));};AGIChannel[_0x3b6f('0x26')][_0x3b6f('0x49')]=function(_0x5516c2,_0x1fb9ed){_0x1fb9ed=_0x1fb9ed||'';return this[_0x3b6f('0x24')](util[_0x3b6f('0x2a')](_0x3b6f('0x4a'),_0x5516c2,_0x1fb9ed));};AGIChannel['prototype']['agi']=function(_0x25204a){return this[_0x3b6f('0x2d')](_0x3b6f('0x4b'),_0x25204a);};AGIChannel['prototype']['wait']=function(_0x350be9){return this['exec'](_0x3b6f('0x4c'),_0x350be9);};AGIChannel['prototype'][_0x3b6f('0x19')]=function(_0x49ac20,_0x53b2ac){this['noop'](util[_0x3b6f('0x2a')](_0x3b6f('0x4d'),_0x49ac20['id'],_0x49ac20['label'],_0x53b2ac));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x3b6f('0x4e')]=AGIChannel;
\ No newline at end of file
+var _0xc991=['sayPhonetic','extension','setContext','setExtension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./error','call','utf8','setEncoding','headers','ready','line','hangup','emit','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','indexOf','startsWith','length','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','write','inherits','prototype','command','sync','sendRequest','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','join','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','isBoolean','isNumber','toString','sayDigits','SAY\x20DIGITS\x20%s\x20%s'];(function(_0x50f89f,_0x331b9c){var _0x57b4c0=function(_0x209d18){while(--_0x209d18){_0x50f89f['push'](_0x50f89f['shift']());}};_0x57b4c0(++_0x331b9c);}(_0xc991,0xfc));var _0x1c99=function(_0x5ba0c7,_0x3ceb67){_0x5ba0c7=_0x5ba0c7-0x0;var _0x3ee112=_0xc991[_0x5ba0c7];return _0x3ee112;};'use strict';var util=require(_0x1c99('0x0'));var _=require(_0x1c99('0x1'));var EventEmitter=require('events')[_0x1c99('0x2')];var AGIReply=require('./reply');var AGIError=require(_0x1c99('0x3'));function AGIChannel(_0x42f99b){var _0x5086ff=this,_0x5ae886=new AGIReply(),_0x3eae7f=![],_0x2e581b={};EventEmitter[_0x1c99('0x4')](_0x5086ff);_0x42f99b['setEncoding'](_0x1c99('0x5'));_0x42f99b['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x5ae886[_0x1c99('0x6')](_0x1c99('0x5'));_0x5ae886['on'](_0x1c99('0x7'),function(_0x24bab7){for(var _0x28645d in _0x24bab7){_0x5086ff[_0x28645d]=_0x24bab7[_0x28645d];}_0x5086ff['emit'](_0x1c99('0x8'));});_0x5ae886['on'](_0x1c99('0x9'),function(_0x539b50){if(_0x539b50['toLowerCase']()==_0x1c99('0xa')){_0x5086ff[_0x1c99('0xb')]('hangup');return;}if(_0x539b50['substring'](0x0,0xb)==_0x1c99('0xc')){_0x3eae7f=!![];}if(_0x3eae7f){_0x2e581b['rx']+=_0x539b50+'\x0a';if(_0x539b50[_0x1c99('0xd')](_0x1c99('0xe'))!=-0x1){_0x3eae7f=![];}}else{_0x2e581b['rx']=_0x539b50;}if(_0x3eae7f){return;}if(typeof _0x2e581b['cb']==_0x1c99('0xf')){var _0xcb2ced=_0x2e581b['rx'][_0x1c99('0x10')](0x0,0x3),_0x3fcd74=null,_0x3aa3b9=null;_0xcb2ced=parseInt(_0xcb2ced);if(isNaN(_0xcb2ced)){_0x2e581b['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x1c99('0x11')});return;}if(_0xcb2ced!=0xc8){_0x2e581b['cb'](null,{'code':_0xcb2ced,'result':-0x1,'extra':'KO'});return;}_0x3fcd74=_0x2e581b['rx'][_0x1c99('0x10')](0x4)[_0x1c99('0x12')]('result=','');if(_0x3fcd74[_0x1c99('0x13')]('\x20')!=-0x1){_0x3fcd74=_0x3fcd74['substr'](0x0,_0x3fcd74[_0x1c99('0x13')]('\x20'));}if(_[_0x1c99('0x14')](_0x3fcd74,'-1')){_0x3fcd74=parseInt(_0x3fcd74);}_0x3aa3b9=_0x2e581b['rx']['split']('\x20');if(_0x3aa3b9[_0x1c99('0x15')]==0x3){_0x3aa3b9=_0x3aa3b9[0x2][_0x1c99('0x10')](0x1,_0x3aa3b9[0x2][_0x1c99('0x15')]-0x1);}else if(_0x3aa3b9['length']>0x3){var _0x3216a7=/\((.+)\)/;var _0x2ccb9e=_0x2e581b['rx']['match'](_0x3216a7);if(_0x2ccb9e){_0x3aa3b9=_0x2ccb9e[0x1];}else{_0x3aa3b9=null;}}else{_0x3aa3b9=null;}_0x2e581b['cb'](null,{'code':_0xcb2ced,'result':_0x3fcd74,'extra':_0x3aa3b9});}});_0x42f99b['on'](_0x1c99('0x16'),function(_0x1ff07f){_0x5086ff['emit'](_0x1c99('0x16'),new AGIError(_0x1c99('0x17'),_0x1ff07f[_0x1c99('0x18')]));});_0x42f99b['on']('close',function(){_0x5086ff['emit'](_0x1c99('0x19'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x42f99b['on'](_0x1c99('0x1a'),function(){_0x5086ff['emit'](_0x1c99('0x1a'),new AGIError(_0x1c99('0x1b')));_0x42f99b[_0x1c99('0x1c')]();});_0x42f99b[_0x1c99('0x1d')](_0x5ae886);this['command']=function(_0x516d9d,_0x5bce0d){var _0x516d9d=_0x516d9d||'',_0x5bce0d=typeof _0x5bce0d==_0x1c99('0xf')?_0x5bce0d:new Function();_0x2e581b={'tx':_0x516d9d,'rx':'','cb':_0x5bce0d};_0x42f99b[_0x1c99('0x1e')](_0x516d9d+'\x0a');},this[_0x1c99('0x19')]=function(){_0x42f99b[_0x1c99('0x1c')]();};}util[_0x1c99('0x1f')](AGIChannel,EventEmitter);AGIChannel[_0x1c99('0x20')]['sendRequest']=function(_0x380089){return this[_0x1c99('0x21')][_0x1c99('0x22')](this,_0x380089);};AGIChannel[_0x1c99('0x20')]['answer']=function(){return this[_0x1c99('0x23')]('ANSWER');};AGIChannel[_0x1c99('0x20')][_0x1c99('0x24')]=function(_0x510f77,_0x10b43e,_0x593a00){_0x510f77=_0x510f77===undefined?_0x1c99('0x25'):_0x510f77;_0x10b43e=_0x10b43e===undefined?'5':_0x10b43e;_0x593a00=_0x593a00===undefined?'1':_0x593a00;return this['sendRequest'](util['format'](_0x1c99('0x26'),_0x510f77,_0x10b43e*0x3e8,_0x593a00));};AGIChannel['prototype'][_0x1c99('0x27')]=function(_0x4b1095){_0x4b1095=_0x4b1095||_0x1c99('0x28');return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x2a'),_0x4b1095));};AGIChannel[_0x1c99('0x20')][_0x1c99('0x2b')]=function(_0x52ab44,_0x5812b4){if(_[_0x1c99('0x2c')](_0x5812b4)){return this['sendRequest'](util[_0x1c99('0x29')]('EXEC\x20%s\x20%s',_0x52ab44,_0x5812b4[_0x1c99('0x2d')](',')));}return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x2e'),_0x52ab44,_0x5812b4));};AGIChannel[_0x1c99('0x20')]['setContext']=function(_0x46a12b){return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x2f'),_0x46a12b));};AGIChannel[_0x1c99('0x20')]['setExtension']=function(_0x1a6026){return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x30'),_0x1a6026));};AGIChannel['prototype']['setPriority']=function(_0xa94659){return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x31'),_0xa94659));};AGIChannel[_0x1c99('0x20')][_0x1c99('0xa')]=function(){return this[_0x1c99('0x23')](_0x1c99('0x32'));};AGIChannel[_0x1c99('0x20')]['setVariable']=function(_0x39fda0,_0x17a5e7){var _0x1e1e55=_[_0x1c99('0x33')](_0x17a5e7)||_[_0x1c99('0x34')](_0x17a5e7)?_0x17a5e7[_0x1c99('0x35')]():_0x17a5e7;return this['sendRequest'](util[_0x1c99('0x29')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x39fda0,_0x1e1e55?_0x1e1e55[_0x1c99('0x35')]()[_0x1c99('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x1c99('0x20')]['sayNumber']=function(_0x5a66e4,_0x409f96){return this[_0x1c99('0x23')](util[_0x1c99('0x29')]('SAY\x20NUMBER\x20%s\x20%s',_0x5a66e4,_0x409f96));};AGIChannel[_0x1c99('0x20')][_0x1c99('0x36')]=function(_0xbfc2,_0x5b6284){return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x37'),_0xbfc2,_0x5b6284));};AGIChannel[_0x1c99('0x20')][_0x1c99('0x38')]=function(_0x1a3805,_0x4c81c1){return this[_0x1c99('0x23')](util[_0x1c99('0x29')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x1a3805,_0x4c81c1));};AGIChannel[_0x1c99('0x20')]['continueAt']=function(_0x19318e,_0xee3090,_0x200607){_0xee3090=_0xee3090||this[_0x1c99('0x39')];_0x200607=_0x200607||0x1;this[_0x1c99('0x3a')](_0x19318e);this[_0x1c99('0x3b')](_0xee3090);this[_0x1c99('0x3c')](_0x200607);return this[_0x1c99('0x27')](util['format'](_0x1c99('0x3d'),_0x19318e,_0xee3090,_0x200607));};AGIChannel['prototype'][_0x1c99('0x3e')]=function(_0x4f07e5){return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x3f'),_0x4f07e5));};AGIChannel['prototype'][_0x1c99('0x40')]=function(_0x47f28b,_0x1ca146,_0x1ce390,_0x42f28e,_0x1c4b00,_0x41bf3c){_0x1ca146=_0x1ca146||_0x1c99('0x41');_0x1ce390=_0x1ce390||'';_0x42f28e=_0x42f28e===undefined?-0x1:_0x42f28e==='-1'?-0x1:_0x42f28e*0x3e8;_0x1c4b00=_0x1c4b00===undefined?'':'s='+_0x1c4b00;_0x41bf3c=_0x41bf3c?_0x1c99('0x42'):'';return this[_0x1c99('0x23')](util[_0x1c99('0x29')](_0x1c99('0x43'),_0x47f28b,_0x1ca146,_0x1ce390,_0x42f28e,_0x41bf3c,_0x1c4b00));};AGIChannel[_0x1c99('0x20')][_0x1c99('0x44')]=function(_0x11e201,_0x439b07){_0x439b07=_0x439b07||'';return this['sendRequest'](util['format'](_0x1c99('0x45'),_0x11e201,_0x439b07));};AGIChannel[_0x1c99('0x20')][_0x1c99('0x46')]=function(_0x3e129a){return this['exec'](_0x1c99('0x47'),_0x3e129a);};AGIChannel['prototype'][_0x1c99('0x48')]=function(_0xc4585f){return this[_0x1c99('0x2b')](_0x1c99('0x49'),_0xc4585f);};AGIChannel[_0x1c99('0x20')][_0x1c99('0x16')]=function(_0x5aa317,_0xef5da7){this[_0x1c99('0x27')](util[_0x1c99('0x29')](_0x1c99('0x4a'),_0x5aa317['id'],_0x5aa317[_0x1c99('0x4b')],_0xef5da7));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x1c99('0x4c')]=AGIChannel;
\ No newline at end of file
index a334f2d..2c74105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b6c=['apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x4b6c,0x1e0));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xc4b6('0x0'));var error={'E_AGI_UNDEFINED':_0xc4b6('0x1'),'E_AGI_ARGUMENT_PORT':_0xc4b6('0x2'),'E_AGI_SERVER_ERROR':_0xc4b6('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0xc4b6('0x4'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xc4b6('0x5'),'E_AGI_SOCKET_CLOSE':_0xc4b6('0x6'),'E_AGI_SOCKET_TIMEOUT':_0xc4b6('0x7'),'E_AGI_COMMAND_EMPTY':_0xc4b6('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0xc4b6('0x9')};function AGIError(_0x1d1e6e){var _0x1d1e6e=_0x1d1e6e||null,_0x4cf6f6=_0x4cf6f6||[],_0x346ae1=0x1,_0x2be874='';if(!error[_0x1d1e6e]){_0x1d1e6e=_0xc4b6('0xa');}_0x4cf6f6[_0xc4b6('0xb')](error[_0x1d1e6e]);while(arguments[_0x346ae1]){_0x4cf6f6['push'](arguments[_0x346ae1]);_0x346ae1++;}_0x2be874=util[_0xc4b6('0xc')][_0xc4b6('0xd')](util,_0x4cf6f6);this[_0xc4b6('0xe')]=_0x2be874;this[_0xc4b6('0xf')]=_0x1d1e6e;}module[_0xc4b6('0x10')]=AGIError;
\ No newline at end of file
+var _0x77aa=['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.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','push','format','apply','message'];(function(_0x3bdc8c,_0xe35179){var _0x297000=function(_0x5b0af7){while(--_0x5b0af7){_0x3bdc8c['push'](_0x3bdc8c['shift']());}};_0x297000(++_0xe35179);}(_0x77aa,0x92));var _0xa77a=function(_0x363f41,_0x4728f3){_0x363f41=_0x363f41-0x0;var _0x4e399d=_0x77aa[_0x363f41];return _0x4e399d;};'use strict';var util=require(_0xa77a('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xa77a('0x1'),'E_AGI_SERVER_ERROR':_0xa77a('0x2'),'E_AGI_SERVER_CLOSE':_0xa77a('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0xa77a('0x4'),'E_AGI_SOCKET_ERROR':_0xa77a('0x5'),'E_AGI_SOCKET_CLOSE':_0xa77a('0x6'),'E_AGI_SOCKET_TIMEOUT':_0xa77a('0x7'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xa77a('0x8'),'E_AGI_IVR_ENTRY':_0xa77a('0x9')};function AGIError(_0x424238){var _0x424238=_0x424238||null,_0x132dda=_0x132dda||[],_0x2f59df=0x1,_0x1de9d4='';if(!error[_0x424238]){_0x424238='E_AGI_UNDEFINED';}_0x132dda[_0xa77a('0xa')](error[_0x424238]);while(arguments[_0x2f59df]){_0x132dda[_0xa77a('0xa')](arguments[_0x2f59df]);_0x2f59df++;}_0x1de9d4=util[_0xa77a('0xb')][_0xa77a('0xc')](util,_0x132dda);this[_0xa77a('0xd')]=_0x1de9d4;this[_0xa77a('0xe')]=_0x424238;}module[_0xa77a('0xf')]=AGIError;
\ No newline at end of file
index c870d5f..bfe7aa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9272=['includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','push','size','info','no\x20vertex\x20found','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','default','menu','invalid','traverseBFS','default\x20on\x20switch\x20not\x20found'];(function(_0x5944ae,_0x30a304){var _0x3c3ba1=function(_0x36343b){while(--_0x36343b){_0x5944ae['push'](_0x5944ae['shift']());}};_0x3c3ba1(++_0x30a304);}(_0x9272,0x153));var _0x2927=function(_0x3b1345,_0x534f2c){_0x3b1345=_0x3b1345-0x0;var _0x9b82aa=_0x9272[_0x3b1345];return _0x9b82aa;};'use strict';var _=require(_0x2927('0x0'));var logger=require(_0x2927('0x1'))(_0x2927('0x2'));var verticesWithRetry=['menu',_0x2927('0x3'),_0x2927('0x4')];var Graph=function(){this[_0x2927('0x5')]={};this[_0x2927('0x6')]={};this[_0x2927('0x7')]=0x0;};Graph[_0x2927('0x8')]['addVertex']=function(_0x34f3ba){this['vertices'][_0x34f3ba['id']]=_0x34f3ba;this[_0x2927('0x6')][_0x34f3ba['id']]=[];};Graph[_0x2927('0x8')]['addEdge']=function(_0x2d1389,_0x28e270,_0x145594){this[_0x2927('0x6')][_0x2d1389][_0x2927('0x9')]({'target':_0x28e270,'condition':_0x145594});this[_0x2927('0x7')]+=0x1;};Graph[_0x2927('0x8')]['size']=function(){return _[_0x2927('0xa')](this[_0x2927('0x5')]);};Graph[_0x2927('0x8')]['relations']=function(){return this[_0x2927('0x7')];};Graph[_0x2927('0x8')]['getVertex']=function(_0x2da63d){return this[_0x2927('0x5')][_0x2da63d];};Graph['prototype']['traverseBFS']=function(_0xbdd8c2,_0x515e19){if(!this[_0x2927('0x5')][_0xbdd8c2]){return logger[_0x2927('0xb')](_0x2927('0xc'));}var _0x2e0a45=_0x515e19(this[_0x2927('0x5')][_0xbdd8c2]);if(!_0x2e0a45){return logger[_0x2927('0xb')]('stop\x20traverse');}if(this[_0x2927('0x6')][_0xbdd8c2][_0x2927('0xd')]===0x0){return logger['info'](_0x2927('0xe'));}for(var _0x1651d8=0x0,_0x17bfc6=[],_0x59d01d=![];_0x1651d8<this[_0x2927('0x6')][_0xbdd8c2][_0x2927('0xd')];_0x1651d8+=0x1){if(this[_0x2927('0x6')][_0xbdd8c2][_0x1651d8]['condition']){_0x17bfc6=this[_0x2927('0x6')][_0xbdd8c2][_0x1651d8][_0x2927('0xf')][_0x2927('0x10')](',');for(var _0x25c49b=0x0;_0x25c49b<_0x17bfc6[_0x2927('0xd')];_0x25c49b+=0x1){if(this[_0x2927('0x5')][_0xbdd8c2][_0x2927('0x11')]===_0x2927('0x12')&&_0x17bfc6[_0x25c49b]==='-'){_0x59d01d=this['edges'][_0xbdd8c2][_0x1651d8][_0x2927('0x13')];logger[_0x2927('0xb')](_0x2927('0x14'),_0x17bfc6[_0x25c49b],this['edges'][_0xbdd8c2][_0x1651d8][_0x2927('0x13')]);}else if(this[_0x2927('0x5')][_0xbdd8c2]['agicommand']===_0x2927('0x15')&&_0x17bfc6[_0x25c49b]==='i'){_0x59d01d=this[_0x2927('0x6')][_0xbdd8c2][_0x1651d8]['target'];logger[_0x2927('0xb')](_0x2927('0x16'),_0x17bfc6[_0x25c49b],this[_0x2927('0x6')][_0xbdd8c2][_0x1651d8][_0x2927('0x13')]);}if(_0x17bfc6[_0x25c49b]===_0x2e0a45){return this[_0x2927('0x17')](this[_0x2927('0x6')][_0xbdd8c2][_0x1651d8]['target'],_0x515e19);}}}else{return this['traverseBFS'](this[_0x2927('0x6')][_0xbdd8c2][_0x1651d8][_0x2927('0x13')],_0x515e19);}}if(_0x17bfc6['length']){if(this[_0x2927('0x5')][_0xbdd8c2][_0x2927('0x11')]===_0x2927('0x12')){if(_0x59d01d){return this['traverseBFS'](_0x59d01d,_0x515e19);}return logger['info'](_0x2927('0x18'));}else if(_[_0x2927('0x19')](verticesWithRetry,this['vertices'][_0xbdd8c2][_0x2927('0x11')])){if(_0x2e0a45==='-'){return logger[_0x2927('0xb')](_0x2927('0x1a'));}if(_0x59d01d&&_0x2e0a45!=='t'){return this[_0x2927('0x17')](_0x59d01d,_0x515e19);}return this[_0x2927('0x17')](_0xbdd8c2,_0x515e19);}return logger[_0x2927('0xb')](_0x2927('0x1b'));}};module['exports']=Graph;
\ No newline at end of file
+var _0x4cf0=['vertices','numberOfEdges','addVertex','edges','prototype','addEdge','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','stop\x20traverse','condition','split','length','agicommand','vswitch','info','default','target','invalid','includes','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getsecretdigits'];(function(_0x13054d,_0x1cd96e){var _0x5d89b2=function(_0x3c7c14){while(--_0x3c7c14){_0x13054d['push'](_0x13054d['shift']());}};_0x5d89b2(++_0x1cd96e);}(_0x4cf0,0x13a));var _0x04cf=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4cf0[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x04cf('0x0'));var logger=require(_0x04cf('0x1'))(_0x04cf('0x2'));var verticesWithRetry=[_0x04cf('0x3'),'getdigits',_0x04cf('0x4')];var Graph=function(){this[_0x04cf('0x5')]={};this['edges']={};this[_0x04cf('0x6')]=0x0;};Graph['prototype'][_0x04cf('0x7')]=function(_0x1f76a2){this[_0x04cf('0x5')][_0x1f76a2['id']]=_0x1f76a2;this[_0x04cf('0x8')][_0x1f76a2['id']]=[];};Graph[_0x04cf('0x9')][_0x04cf('0xa')]=function(_0x225ae7,_0x6fe5d4,_0x586a63){this[_0x04cf('0x8')][_0x225ae7]['push']({'target':_0x6fe5d4,'condition':_0x586a63});this['numberOfEdges']+=0x1;};Graph[_0x04cf('0x9')]['size']=function(){return _[_0x04cf('0xb')](this[_0x04cf('0x5')]);};Graph[_0x04cf('0x9')][_0x04cf('0xc')]=function(){return this[_0x04cf('0x6')];};Graph[_0x04cf('0x9')][_0x04cf('0xd')]=function(_0x14058a){return this[_0x04cf('0x5')][_0x14058a];};Graph[_0x04cf('0x9')][_0x04cf('0xe')]=function(_0x4f8c2a,_0x38b983){if(!this['vertices'][_0x4f8c2a]){return logger['info'](_0x04cf('0xf'));}var _0x506faa=_0x38b983(this[_0x04cf('0x5')][_0x4f8c2a]);if(!_0x506faa){return logger['info'](_0x04cf('0x10'));}if(this[_0x04cf('0x8')][_0x4f8c2a]['length']===0x0){return logger['info']('no\x20edge/s\x20available');}for(var _0x10c27c=0x0,_0x32af98=[],_0x9eafde=![];_0x10c27c<this['edges'][_0x4f8c2a]['length'];_0x10c27c+=0x1){if(this[_0x04cf('0x8')][_0x4f8c2a][_0x10c27c][_0x04cf('0x11')]){_0x32af98=this[_0x04cf('0x8')][_0x4f8c2a][_0x10c27c][_0x04cf('0x11')][_0x04cf('0x12')](',');for(var _0x4a2435=0x0;_0x4a2435<_0x32af98[_0x04cf('0x13')];_0x4a2435+=0x1){if(this[_0x04cf('0x5')][_0x4f8c2a][_0x04cf('0x14')]===_0x04cf('0x15')&&_0x32af98[_0x4a2435]==='-'){_0x9eafde=this[_0x04cf('0x8')][_0x4f8c2a][_0x10c27c]['target'];logger[_0x04cf('0x16')](_0x04cf('0x17'),_0x32af98[_0x4a2435],this['edges'][_0x4f8c2a][_0x10c27c][_0x04cf('0x18')]);}else if(this[_0x04cf('0x5')][_0x4f8c2a][_0x04cf('0x14')]===_0x04cf('0x3')&&_0x32af98[_0x4a2435]==='i'){_0x9eafde=this[_0x04cf('0x8')][_0x4f8c2a][_0x10c27c][_0x04cf('0x18')];logger[_0x04cf('0x16')](_0x04cf('0x19'),_0x32af98[_0x4a2435],this[_0x04cf('0x8')][_0x4f8c2a][_0x10c27c][_0x04cf('0x18')]);}if(_0x32af98[_0x4a2435]===_0x506faa){return this[_0x04cf('0xe')](this[_0x04cf('0x8')][_0x4f8c2a][_0x10c27c][_0x04cf('0x18')],_0x38b983);}}}else{return this[_0x04cf('0xe')](this['edges'][_0x4f8c2a][_0x10c27c][_0x04cf('0x18')],_0x38b983);}}if(_0x32af98[_0x04cf('0x13')]){if(this[_0x04cf('0x5')][_0x4f8c2a][_0x04cf('0x14')]==='vswitch'){if(_0x9eafde){return this[_0x04cf('0xe')](_0x9eafde,_0x38b983);}return logger[_0x04cf('0x16')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0x04cf('0x1a')](verticesWithRetry,this[_0x04cf('0x5')][_0x4f8c2a]['agicommand'])){if(_0x506faa==='-'){return logger[_0x04cf('0x16')]('max\x20retry\x20reach');}if(_0x9eafde&&_0x506faa!=='t'){return this[_0x04cf('0xe')](_0x9eafde,_0x38b983);}return this[_0x04cf('0xe')](_0x4f8c2a,_0x38b983);}return logger[_0x04cf('0x16')](_0x04cf('0x1b'));}};module[_0x04cf('0x1c')]=Graph;
\ No newline at end of file
index 5c1d123..9d2ca46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc52b=['syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./vertices','defaults','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','format','port','name','message','[%s]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','addVertex','omit','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport','indexOf','substring','inspect','debug','variables','[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','joinAt','mxCell','traverseBFS','stringify','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','result','isUndefined','toString','response','agicommand\x20not\x20found','finally','clear','vertex','[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\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','xml2json'];(function(_0x3640fd,_0x2cfef7){var _0x2f149f=function(_0x2c2a35){while(--_0x2c2a35){_0x3640fd['push'](_0x3640fd['shift']());}};_0x2f149f(++_0x2cfef7);}(_0xc52b,0x1b2));var _0xbc52=function(_0x511a60,_0x40609b){_0x511a60=_0x511a60-0x0;var _0x551869=_0xc52b[_0x511a60];return _0x551869;};'use strict';var parser=require(_0xbc52('0x0'));var _=require('lodash');var syncho=require(_0xbc52('0x1'));var util=require(_0xbc52('0x2'));var moment=require('moment');var config=require(_0xbc52('0x3'));var logger=require(_0xbc52('0x4'))(_0xbc52('0x5'));var utilLicense=require(_0xbc52('0x6'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0xbc52('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xbc52('0x5')]=_[_0xbc52('0x8')](config[_0xbc52('0x5')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x77218f){process[_0xbc52('0x9')](function(){syncho(function(){try{setChannelVariables(_0x77218f);agiHandler(_0x77218f);}catch(_0x648d75){logger[_0xbc52('0xa')](_0x648d75[_0xbc52('0xb')]);}});});}function listeningHandler(){console[_0xbc52('0xc')](_0xbc52('0xd'),config[_0xbc52('0x5')]['port']);logger[_0xbc52('0xe')](util[_0xbc52('0xf')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xbc52('0x5')]['ip'],config['agi'][_0xbc52('0x10')]));}function errorHandler(_0x4f06ff){if(_0x4f06ff&&_0x4f06ff[_0xbc52('0x11')]&&_0x4f06ff[_0xbc52('0x12')]){logger['error'](util[_0xbc52('0xf')](_0xbc52('0x13'),_0x4f06ff[_0xbc52('0x11')],_0x4f06ff[_0xbc52('0x12')]));}else{logger[_0xbc52('0xa')](util['format']('[ERROR]\x20%s',_0x4f06ff[_0xbc52('0xb')]));}}function closeHandler(){logger[_0xbc52('0xe')](util[_0xbc52('0xf')](_0xbc52('0x14'),this['arg_1'],this['calleridname'],this['callerid'],this[_0xbc52('0x15')],this['uniqueid']));try{createSquareReport(this);}catch(_0x2b973f){logger[_0xbc52('0xa')](_0x2b973f['stack']);}}function timeoutHandler(){logger[_0xbc52('0xe')](util[_0xbc52('0xf')](_0xbc52('0x16'),this[_0xbc52('0x17')],this[_0xbc52('0x18')],this[_0xbc52('0x19')],this['dnid'],this[_0xbc52('0x1a')]));}function hangupHandler(){logger[_0xbc52('0xe')](util[_0xbc52('0xf')](_0xbc52('0x1b'),this[_0xbc52('0x17')],this[_0xbc52('0x18')],this[_0xbc52('0x19')],this[_0xbc52('0x15')],this[_0xbc52('0x1a')]));this[_0xbc52('0x1c')]=!![];}function getRoot(_0x331dd0){return parser[_0xbc52('0x1d')](_0x331dd0,{'object':!![]})[_0xbc52('0x1e')][_0xbc52('0x1f')];}function addVertex(_0x3c2829,_0x6b1c32,_0x2fe9bc){_0x6b1c32[_0xbc52('0x20')]=_0x2fe9bc;if(_0x6b1c32[_0xbc52('0x21')]('retry')){_0x6b1c32['maxRetry']=parseInt(_0x6b1c32[_0xbc52('0x22')],0xa);}_0x3c2829[_0xbc52('0x23')](_[_0xbc52('0x24')](_0x6b1c32,'mxCell'));}function initGraph(_0x54339a,_0x2651db){var _0x421f78=new Graph();for(var _0x19ac9c in _0x54339a){if(_0x54339a[_0xbc52('0x21')](_0x19ac9c)){if(_[_0xbc52('0x25')](_0x54339a[_0x19ac9c])){for(var _0x35468a=0x0;_0x35468a<_0x54339a[_0x19ac9c][_0xbc52('0x26')];_0x35468a+=0x1){addVertex(_0x421f78,_0x54339a[_0x19ac9c][_0x35468a],_0x19ac9c);}}else{addVertex(_0x421f78,_0x54339a[_0x19ac9c],_0x19ac9c);}}}for(var _0x31f4f7=0x0;_0x31f4f7<_0x2651db[_0xbc52('0x26')];_0x31f4f7+=0x1){if(_0x2651db[_0x31f4f7][_0xbc52('0x27')]&&_0x2651db[_0x31f4f7][_0xbc52('0x28')]){_0x421f78[_0xbc52('0x29')](_0x2651db[_0x31f4f7]['source'],_0x2651db[_0x31f4f7]['target'],_0x2651db[_0x31f4f7][_0xbc52('0x2a')]);}}return _0x421f78;}function getSquareProject(_0x1e54c8,_0x1de003){rpc[_0xbc52('0x2b')](_0x1e54c8)[_0xbc52('0x2c')](function(_0x54812f){_0x1de003(null,_0x54812f);})[_0xbc52('0x2d')](function(_0x1b38bf){_0x1de003(null,_0x1b38bf);});}function createSquareReport(_0x2038cb,_0x39abee){rpc[_0xbc52('0x2e')](_0x2038cb)['then'](function(_0x49894c){if(_0x39abee){_0x39abee(null,_0x49894c);}})['catch'](function(_0x22ddf8){if(_0x39abee){_0x39abee(null,_0x22ddf8);}});}function setChannelVariables(_0x53ca6a){for(var _0x24636a in _0x53ca6a){if(_0x53ca6a[_0xbc52('0x21')](_0x24636a)){if(_0x24636a[_0xbc52('0x2f')]('agi_')===0x0){_0x53ca6a[_0x24636a[_0xbc52('0x30')](0x4)]=_0x53ca6a[_0x24636a];delete _0x53ca6a[_0x24636a];}}}}function getLogFromObject(_0x3fdf78){return util[_0xbc52('0x31')](_0x3fdf78,{'showHidden':![],'depth':null});}function agiHandler(_0x44ed06){var _0x2eedab,_0x4b0a46,_0x237a98,_0x29f1ef,_0x36562e;logger[_0xbc52('0x32')](_0xbc52('0x33'),JSON['stringify'](_0x44ed06,null,0x2));logger[_0xbc52('0xe')](util['format'](_0xbc52('0x34'),_0x44ed06['arg_1'],_0x44ed06[_0xbc52('0x18')],_0x44ed06[_0xbc52('0x19')],_0x44ed06[_0xbc52('0x15')],_0x44ed06['uniqueid']));_0x44ed06['on'](_0xbc52('0xa'),errorHandler);_0x44ed06['on'](_0xbc52('0x35'),closeHandler);_0x44ed06['on'](_0xbc52('0x36'),timeoutHandler);_0x44ed06['evtHangup']=![];_0x44ed06['on'](_0xbc52('0x37'),hangupHandler);var _0x2fb5d9=getSquareProject[_0xbc52('0x38')](null,_0x44ed06[_0xbc52('0x17')]);if(_0x2fb5d9){if(_0x2fb5d9[_0xbc52('0x39')]){_0x2eedab=getRoot(_0x2fb5d9[_0xbc52('0x39')]);if(_0x2eedab&&_0x2eedab[_0xbc52('0x3a')]){logger[_0xbc52('0x32')](_0xbc52('0x1f'),JSON['stringify'](_0x2eedab,null,0x2));_0x44ed06[_0xbc52('0x3b')]=moment()[_0xbc52('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b0a46=initGraph(_[_0xbc52('0x24')](_0x2eedab,_0xbc52('0x3c')),_0x2eedab[_0xbc52('0x3c')]);_0x237a98=new Vertices(_0x44ed06,rpc,mailRpc);logger[_0xbc52('0xe')](util[_0xbc52('0xf')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x44ed06[_0xbc52('0x17')],_0x44ed06[_0xbc52('0x18')],_0x44ed06[_0xbc52('0x19')],_0x44ed06[_0xbc52('0x15')],_0x44ed06[_0xbc52('0x1a')]));_0x4b0a46[_0xbc52('0x3d')](_0x2eedab['start']['id'],function(_0x429918){try{_0x429918=_0x237a98['clear'](_0x429918);logger[_0xbc52('0x32')]('vertex',JSON[_0xbc52('0x3e')](_0x429918,null,0x2));if(_0x429918[_0xbc52('0x20')]==='gotoc'){logger['info'](_0xbc52('0x3f'));_0x44ed06[_0xbc52('0x40')]=_0x429918[_0xbc52('0x40')]||_0x44ed06[_0xbc52('0x40')];_0x44ed06[_0xbc52('0x41')]=_0x429918[_0xbc52('0x41')];_0x44ed06[_0xbc52('0x42')]=_0x429918['priority']?_0x429918['priority']-0x1:0x1;return null;}else if(_0x429918&&_0x237a98[_0x429918[_0xbc52('0x20')]]){_0x36562e=_0x237a98[_0x429918['agicommand']](_0x429918);logger[_0xbc52('0xe')]('response',JSON['stringify'](_0x36562e,null,0x2));if(_0x36562e&&_0x36562e[_0xbc52('0x43')]===AGI_CODE_SUCCESS&&_0x36562e[_0xbc52('0x44')]!==AGI_RESULT_ERROR&&!_0x44ed06[_0xbc52('0x1c')]){logger[_0xbc52('0x32')]('response',getLogFromObject(_0x36562e));return _[_0xbc52('0x45')](_0x36562e[_0xbc52('0x44')])?null:_0x36562e[_0xbc52('0x44')][_0xbc52('0x46')]();}else{logger[_0xbc52('0xa')](_0xbc52('0x47'),getLogFromObject(_0x36562e));return null;}}else{logger[_0xbc52('0xa')](_0xbc52('0x48'));return null;}}catch(_0x1329dd){logger['error'](_0x1329dd[_0xbc52('0xb')]);return null;}});if(_0x2eedab['finally']){logger[_0xbc52('0xe')](util[_0xbc52('0xf')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x44ed06[_0xbc52('0x17')],_0x44ed06[_0xbc52('0x18')],_0x44ed06[_0xbc52('0x19')],_0x44ed06[_0xbc52('0x15')],_0x44ed06[_0xbc52('0x1a')]));_0x4b0a46[_0xbc52('0x3d')](_0x2eedab[_0xbc52('0x49')]['id'],function(_0x27ea28){try{_0x27ea28=_0x237a98[_0xbc52('0x4a')](_0x27ea28);logger[_0xbc52('0x32')](_0xbc52('0x4b'),JSON[_0xbc52('0x3e')](_0x27ea28,null,0x2));if(_0x27ea28&&_0x237a98[_0x27ea28['agicommand']]){_0x36562e=_0x237a98[_0x27ea28[_0xbc52('0x20')]](_0x27ea28);if(_0x36562e){logger[_0xbc52('0x32')](_0xbc52('0x47'),getLogFromObject(_0x36562e));return _[_0xbc52('0x45')](_0x36562e[_0xbc52('0x44')])?null:_0x36562e[_0xbc52('0x44')][_0xbc52('0x46')]();}else{logger['error'](_0xbc52('0x47'),getLogFromObject(_0x36562e));return null;}}else{logger[_0xbc52('0xa')](_0xbc52('0x48'));return null;}}catch(_0xd4428e){logger['error'](_0xd4428e[_0xbc52('0xb')]);return null;}});}logger[_0xbc52('0xe')](util['format'](_0xbc52('0x4c'),_0x44ed06[_0xbc52('0x17')],_0x44ed06['calleridname'],_0x44ed06['callerid'],_0x44ed06['dnid'],_0x44ed06['uniqueid']));logger['info'](util['format'](_0xbc52('0x4d'),_0x44ed06['context'],_0x44ed06[_0xbc52('0x41')],parseInt(_0x44ed06[_0xbc52('0x42')],0xa)+0x1));_0x44ed06[_0xbc52('0x4e')](_0x44ed06[_0xbc52('0x40')],_0x44ed06[_0xbc52('0x41')],parseInt(_0x44ed06[_0xbc52('0x42')],0xa)+0x1);_0x44ed06[_0xbc52('0x35')]();}}else{logger[_0xbc52('0xa')](util[_0xbc52('0xf')]('Project\x20%s\x20not\x20published',_0x44ed06[_0xbc52('0x17')]));_0x44ed06[_0xbc52('0x4e')](_0x44ed06[_0xbc52('0x40')],_0x44ed06[_0xbc52('0x41')],parseInt(_0x44ed06[_0xbc52('0x42')],0xa)+0x1);_0x44ed06[_0xbc52('0x35')]();}}else{logger[_0xbc52('0xa')](util[_0xbc52('0xf')](_0xbc52('0x4f'),_0x44ed06[_0xbc52('0x17')]));_0x44ed06[_0xbc52('0x4e')](_0x44ed06[_0xbc52('0x40')],_0x44ed06[_0xbc52('0x41')],parseInt(_0x44ed06[_0xbc52('0x42')],0xa)+0x1);_0x44ed06[_0xbc52('0x35')]();}}function main(){var _0x2916a6;return utilLicense[_0xbc52('0x50')]()[_0xbc52('0x2c')](function(_0x3f9728){if(_0x3f9728){if(_0x3f9728[_0xbc52('0x51')]){if(_0x3f9728[_0xbc52('0x52')]&&_0x3f9728[_0xbc52('0x52')]>0x0){logger[_0xbc52('0xe')](util['format'](_0xbc52('0x53'),_0x3f9728[_0xbc52('0x52')]));_0x2916a6=_0x3f9728[_0xbc52('0x52')];}else{logger[_0xbc52('0xe')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger['info'](_0xbc52('0x54'));_0x2916a6=-0x1;}}})[_0xbc52('0x2d')](function(_0x1041e8){logger[_0xbc52('0xa')]('[LICENSE]',_0x1041e8[_0xbc52('0xb')]);})['finally'](function(){var _0x2d6ff8=require(_0xbc52('0x55'))(config[_0xbc52('0x5')][_0xbc52('0x10')],config['agi']['ip'],_0x2916a6);_0x2d6ff8['on'](_0xbc52('0xa'),errorHandler);_0x2d6ff8['on'](_0xbc52('0x56'),listeningHandler);_0x2d6ff8['on']('connection',connectionHandler);_0x2d6ff8['on'](_0xbc52('0x35'),closeHandler);});}main();
\ No newline at end of file
+var _0xc503=['[LICENSE]','./server','connection','xml2json','lodash','util','moment','agi','../../config/license/util','./rpc','./mailRpc','./vertices','defaults','127.0.0.1','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','target','addEdge','value','getSquareProject','then','catch','createSquareReport','indexOf','agi_','substring','debug','variables','close','timeout','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','clear','stringify','context','extension','priority','response','code','result','toString','agicommand\x20not\x20found','finally','isUndefined','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','continueAt','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xc503,0x105));var _0x3c50=function(_0x3c7e26,_0x3cc265){_0x3c7e26=_0x3c7e26-0x0;var _0x530070=_0xc503[_0x3c7e26];return _0x530070;};'use strict';var parser=require(_0x3c50('0x0'));var _=require(_0x3c50('0x1'));var syncho=require('syncho');var util=require(_0x3c50('0x2'));var moment=require(_0x3c50('0x3'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x3c50('0x4'));var utilLicense=require(_0x3c50('0x5'));var rpc=require(_0x3c50('0x6'));var mailRpc=require(_0x3c50('0x7'));var Graph=require('./graph');var Vertices=require(_0x3c50('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x3c50('0x4')]=_[_0x3c50('0x9')](config[_0x3c50('0x4')],{'ip':_0x3c50('0xa'),'port':0x11dd});function connectionHandler(_0x5b65b4){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x5b65b4);agiHandler(_0x5b65b4);}catch(_0x564469){logger[_0x3c50('0xb')](_0x564469['stack']);}});});}function listeningHandler(){console[_0x3c50('0xc')](_0x3c50('0xd'),config[_0x3c50('0x4')][_0x3c50('0xe')]);logger[_0x3c50('0xf')](util[_0x3c50('0x10')](_0x3c50('0x11'),config['agi']['ip'],config[_0x3c50('0x4')]['port']));}function errorHandler(_0x379c8e){if(_0x379c8e&&_0x379c8e[_0x3c50('0x12')]&&_0x379c8e[_0x3c50('0x13')]){logger[_0x3c50('0xb')](util[_0x3c50('0x10')]('[%s]\x20%s',_0x379c8e[_0x3c50('0x12')],_0x379c8e[_0x3c50('0x13')]));}else{logger[_0x3c50('0xb')](util[_0x3c50('0x10')](_0x3c50('0x14'),_0x379c8e[_0x3c50('0x15')]));}}function closeHandler(){logger[_0x3c50('0xf')](util[_0x3c50('0x10')](_0x3c50('0x16'),this[_0x3c50('0x17')],this[_0x3c50('0x18')],this[_0x3c50('0x19')],this[_0x3c50('0x1a')],this['uniqueid']));try{createSquareReport(this);}catch(_0x40ed7f){logger[_0x3c50('0xb')](_0x40ed7f[_0x3c50('0x15')]);}}function timeoutHandler(){logger[_0x3c50('0xf')](util[_0x3c50('0x10')](_0x3c50('0x1b'),this['arg_1'],this[_0x3c50('0x18')],this[_0x3c50('0x19')],this[_0x3c50('0x1a')],this[_0x3c50('0x1c')]));}function hangupHandler(){logger[_0x3c50('0xf')](util[_0x3c50('0x10')](_0x3c50('0x1d'),this[_0x3c50('0x17')],this[_0x3c50('0x18')],this['callerid'],this[_0x3c50('0x1a')],this[_0x3c50('0x1c')]));this[_0x3c50('0x1e')]=!![];}function getRoot(_0x20725f){return parser['toJson'](_0x20725f,{'object':!![]})[_0x3c50('0x1f')][_0x3c50('0x20')];}function addVertex(_0x4b4e31,_0x491d13,_0x69481d){_0x491d13[_0x3c50('0x21')]=_0x69481d;if(_0x491d13[_0x3c50('0x22')](_0x3c50('0x23'))){_0x491d13[_0x3c50('0x24')]=parseInt(_0x491d13['retry'],0xa);}_0x4b4e31[_0x3c50('0x25')](_[_0x3c50('0x26')](_0x491d13,_0x3c50('0x27')));}function initGraph(_0x4d8e90,_0x317727){var _0x32fbc7=new Graph();for(var _0x590502 in _0x4d8e90){if(_0x4d8e90[_0x3c50('0x22')](_0x590502)){if(_[_0x3c50('0x28')](_0x4d8e90[_0x590502])){for(var _0x24989f=0x0;_0x24989f<_0x4d8e90[_0x590502][_0x3c50('0x29')];_0x24989f+=0x1){addVertex(_0x32fbc7,_0x4d8e90[_0x590502][_0x24989f],_0x590502);}}else{addVertex(_0x32fbc7,_0x4d8e90[_0x590502],_0x590502);}}}for(var _0x498956=0x0;_0x498956<_0x317727[_0x3c50('0x29')];_0x498956+=0x1){if(_0x317727[_0x498956]['source']&&_0x317727[_0x498956][_0x3c50('0x2a')]){_0x32fbc7[_0x3c50('0x2b')](_0x317727[_0x498956]['source'],_0x317727[_0x498956][_0x3c50('0x2a')],_0x317727[_0x498956][_0x3c50('0x2c')]);}}return _0x32fbc7;}function getSquareProject(_0x319952,_0x1de42e){rpc[_0x3c50('0x2d')](_0x319952)[_0x3c50('0x2e')](function(_0x3177c6){_0x1de42e(null,_0x3177c6);})[_0x3c50('0x2f')](function(_0x36ef66){_0x1de42e(null,_0x36ef66);});}function createSquareReport(_0x506afd,_0x4038d6){rpc[_0x3c50('0x30')](_0x506afd)['then'](function(_0x2b7f95){if(_0x4038d6){_0x4038d6(null,_0x2b7f95);}})['catch'](function(_0x191874){if(_0x4038d6){_0x4038d6(null,_0x191874);}});}function setChannelVariables(_0x3a0903){for(var _0x5f1e68 in _0x3a0903){if(_0x3a0903['hasOwnProperty'](_0x5f1e68)){if(_0x5f1e68[_0x3c50('0x31')](_0x3c50('0x32'))===0x0){_0x3a0903[_0x5f1e68[_0x3c50('0x33')](0x4)]=_0x3a0903[_0x5f1e68];delete _0x3a0903[_0x5f1e68];}}}}function getLogFromObject(_0x334f1f){return util['inspect'](_0x334f1f,{'showHidden':![],'depth':null});}function agiHandler(_0x3e4a80){var _0x5584e5,_0x84cc7a,_0xb762ba,_0x260354,_0x337069;logger[_0x3c50('0x34')](_0x3c50('0x35'),JSON['stringify'](_0x3e4a80,null,0x2));logger[_0x3c50('0xf')](util[_0x3c50('0x10')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e4a80[_0x3c50('0x17')],_0x3e4a80[_0x3c50('0x18')],_0x3e4a80[_0x3c50('0x19')],_0x3e4a80[_0x3c50('0x1a')],_0x3e4a80[_0x3c50('0x1c')]));_0x3e4a80['on'](_0x3c50('0xb'),errorHandler);_0x3e4a80['on'](_0x3c50('0x36'),closeHandler);_0x3e4a80['on'](_0x3c50('0x37'),timeoutHandler);_0x3e4a80[_0x3c50('0x1e')]=![];_0x3e4a80['on']('hangup',hangupHandler);var _0x179145=getSquareProject[_0x3c50('0x38')](null,_0x3e4a80[_0x3c50('0x17')]);if(_0x179145){if(_0x179145[_0x3c50('0x39')]){_0x5584e5=getRoot(_0x179145[_0x3c50('0x39')]);if(_0x5584e5&&_0x5584e5[_0x3c50('0x3a')]){logger['debug']('root',JSON['stringify'](_0x5584e5,null,0x2));_0x3e4a80[_0x3c50('0x3b')]=moment()['format'](_0x3c50('0x3c'));_0x84cc7a=initGraph(_[_0x3c50('0x26')](_0x5584e5,_0x3c50('0x27')),_0x5584e5[_0x3c50('0x27')]);_0xb762ba=new Vertices(_0x3e4a80,rpc,mailRpc);logger['info'](util[_0x3c50('0x10')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e4a80[_0x3c50('0x17')],_0x3e4a80[_0x3c50('0x18')],_0x3e4a80[_0x3c50('0x19')],_0x3e4a80[_0x3c50('0x1a')],_0x3e4a80[_0x3c50('0x1c')]));_0x84cc7a['traverseBFS'](_0x5584e5[_0x3c50('0x3a')]['id'],function(_0x18d4de){try{_0x18d4de=_0xb762ba[_0x3c50('0x3d')](_0x18d4de);logger[_0x3c50('0x34')]('vertex',JSON[_0x3c50('0x3e')](_0x18d4de,null,0x2));if(_0x18d4de[_0x3c50('0x21')]==='gotoc'){logger[_0x3c50('0xf')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x3e4a80[_0x3c50('0x3f')]=_0x18d4de['context']||_0x3e4a80[_0x3c50('0x3f')];_0x3e4a80[_0x3c50('0x40')]=_0x18d4de[_0x3c50('0x40')];_0x3e4a80[_0x3c50('0x41')]=_0x18d4de[_0x3c50('0x41')]?_0x18d4de[_0x3c50('0x41')]-0x1:0x1;return null;}else if(_0x18d4de&&_0xb762ba[_0x18d4de['agicommand']]){_0x337069=_0xb762ba[_0x18d4de[_0x3c50('0x21')]](_0x18d4de);logger[_0x3c50('0xf')](_0x3c50('0x42'),JSON['stringify'](_0x337069,null,0x2));if(_0x337069&&_0x337069[_0x3c50('0x43')]===AGI_CODE_SUCCESS&&_0x337069[_0x3c50('0x44')]!==AGI_RESULT_ERROR&&!_0x3e4a80[_0x3c50('0x1e')]){logger['debug'](_0x3c50('0x42'),getLogFromObject(_0x337069));return _['isUndefined'](_0x337069[_0x3c50('0x44')])?null:_0x337069['result'][_0x3c50('0x45')]();}else{logger[_0x3c50('0xb')]('response',getLogFromObject(_0x337069));return null;}}else{logger[_0x3c50('0xb')](_0x3c50('0x46'));return null;}}catch(_0x572bab){logger[_0x3c50('0xb')](_0x572bab[_0x3c50('0x15')]);return null;}});if(_0x5584e5[_0x3c50('0x47')]){logger['info'](util[_0x3c50('0x10')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e4a80[_0x3c50('0x17')],_0x3e4a80[_0x3c50('0x18')],_0x3e4a80[_0x3c50('0x19')],_0x3e4a80['dnid'],_0x3e4a80['uniqueid']));_0x84cc7a['traverseBFS'](_0x5584e5[_0x3c50('0x47')]['id'],function(_0x3236ae){try{_0x3236ae=_0xb762ba['clear'](_0x3236ae);logger[_0x3c50('0x34')]('vertex',JSON[_0x3c50('0x3e')](_0x3236ae,null,0x2));if(_0x3236ae&&_0xb762ba[_0x3236ae['agicommand']]){_0x337069=_0xb762ba[_0x3236ae['agicommand']](_0x3236ae);if(_0x337069){logger[_0x3c50('0x34')]('response',getLogFromObject(_0x337069));return _[_0x3c50('0x48')](_0x337069[_0x3c50('0x44')])?null:_0x337069['result']['toString']();}else{logger[_0x3c50('0xb')](_0x3c50('0x42'),getLogFromObject(_0x337069));return null;}}else{logger[_0x3c50('0xb')]('agicommand\x20not\x20found');return null;}}catch(_0x5cf693){logger[_0x3c50('0xb')](_0x5cf693[_0x3c50('0x15')]);return null;}});}logger[_0x3c50('0xf')](util[_0x3c50('0x10')](_0x3c50('0x49'),_0x3e4a80[_0x3c50('0x17')],_0x3e4a80['calleridname'],_0x3e4a80[_0x3c50('0x19')],_0x3e4a80[_0x3c50('0x1a')],_0x3e4a80[_0x3c50('0x1c')]));logger[_0x3c50('0xf')](util[_0x3c50('0x10')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x3e4a80[_0x3c50('0x3f')],_0x3e4a80[_0x3c50('0x40')],parseInt(_0x3e4a80[_0x3c50('0x41')],0xa)+0x1));_0x3e4a80['continueAt'](_0x3e4a80[_0x3c50('0x3f')],_0x3e4a80[_0x3c50('0x40')],parseInt(_0x3e4a80['priority'],0xa)+0x1);_0x3e4a80['close']();}}else{logger[_0x3c50('0xb')](util[_0x3c50('0x10')](_0x3c50('0x4a'),_0x3e4a80[_0x3c50('0x17')]));_0x3e4a80['continueAt'](_0x3e4a80[_0x3c50('0x3f')],_0x3e4a80['extension'],parseInt(_0x3e4a80['priority'],0xa)+0x1);_0x3e4a80[_0x3c50('0x36')]();}}else{logger[_0x3c50('0xb')](util['format'](_0x3c50('0x4b'),_0x3e4a80[_0x3c50('0x17')]));_0x3e4a80[_0x3c50('0x4c')](_0x3e4a80[_0x3c50('0x3f')],_0x3e4a80[_0x3c50('0x40')],parseInt(_0x3e4a80[_0x3c50('0x41')],0xa)+0x1);_0x3e4a80[_0x3c50('0x36')]();}}function main(){var _0xe68679;return utilLicense[_0x3c50('0x4d')]()['then'](function(_0x3e21da){if(_0x3e21da){if(_0x3e21da[_0x3c50('0x4e')]){if(_0x3e21da[_0x3c50('0x4f')]&&_0x3e21da[_0x3c50('0x4f')]>0x0){logger[_0x3c50('0xf')](util[_0x3c50('0x10')](_0x3c50('0x50'),_0x3e21da[_0x3c50('0x4f')]));_0xe68679=_0x3e21da[_0x3c50('0x4f')];}else{logger[_0x3c50('0xf')](_0x3c50('0x51'));}}else{logger[_0x3c50('0xf')](_0x3c50('0x52'));_0xe68679=-0x1;}}})[_0x3c50('0x2f')](function(_0x553f2d){logger[_0x3c50('0xb')](_0x3c50('0x53'),_0x553f2d[_0x3c50('0x15')]);})['finally'](function(){var _0x1f8931=require(_0x3c50('0x54'))(config[_0x3c50('0x4')][_0x3c50('0xe')],config[_0x3c50('0x4')]['ip'],_0xe68679);_0x1f8931['on'](_0x3c50('0xb'),errorHandler);_0x1f8931['on']('listening',listeningHandler);_0x1f8931['on'](_0x3c50('0x55'),connectionHandler);_0x1f8931['on'](_0x3c50('0x36'),closeHandler);});}main();
\ No newline at end of file
index 471d760..29100a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1124=['bluebird','jayson/promise','client','http','then','error','message','result','sendMailMessage','SendMail'];(function(_0x45bd84,_0x4a61bb){var _0x551b62=function(_0x3b03cf){while(--_0x3b03cf){_0x45bd84['push'](_0x45bd84['shift']());}};_0x551b62(++_0x4a61bb);}(_0x1124,0x17c));var _0x4112=function(_0x2f9be5,_0x4d995f){_0x2f9be5=_0x2f9be5-0x0;var _0x55d988=_0x1124[_0x2f9be5];return _0x55d988;};'use strict';var BPromise=require(_0x4112('0x0'));var jayson=require(_0x4112('0x1'));var client=jayson[_0x4112('0x2')][_0x4112('0x3')]({'port':0x232b});function request(_0xc6c199,_0x3917e9){return new BPromise(function(_0x310ca5,_0x4a0070){return client['request'](_0xc6c199,_0x3917e9)[_0x4112('0x4')](function(_0x11bc75){if(_0x11bc75['error']){return _0x4a0070(_0x11bc75[_0x4112('0x5')][_0x4112('0x6')]);}else{return _0x310ca5(_0x11bc75[_0x4112('0x7')]);}})['catch'](function(_0x94d916){return _0x4a0070(_0x94d916);});});}exports[_0x4112('0x8')]=function(_0x14a960,_0x14687c){return request(_0x4112('0x9'),{'account':_0x14a960,'message':_0x14687c});};
\ No newline at end of file
+var _0xa9af=['result','sendMailMessage','SendMail','jayson/promise','client','http','error','message'];(function(_0x682773,_0x5ec7a2){var _0x3f55f2=function(_0x341cec){while(--_0x341cec){_0x682773['push'](_0x682773['shift']());}};_0x3f55f2(++_0x5ec7a2);}(_0xa9af,0x1cb));var _0xfa9a=function(_0x942166,_0x11ca3c){_0x942166=_0x942166-0x0;var _0x2888b7=_0xa9af[_0x942166];return _0x2888b7;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xfa9a('0x0'));var client=jayson[_0xfa9a('0x1')][_0xfa9a('0x2')]({'port':0x232b});function request(_0x2f62cb,_0x561783){return new BPromise(function(_0x295264,_0x2be80b){return client['request'](_0x2f62cb,_0x561783)['then'](function(_0xfedfcf){if(_0xfedfcf['error']){return _0x2be80b(_0xfedfcf[_0xfa9a('0x3')][_0xfa9a('0x4')]);}else{return _0x295264(_0xfedfcf[_0xfa9a('0x5')]);}})['catch'](function(_0x197f35){return _0x2be80b(_0x197f35);});});}exports[_0xfa9a('0x6')]=function(_0xfb476,_0x539b1e){return request(_0xfa9a('0x7'),{'account':_0xfb476,'message':_0x539b1e});};
\ No newline at end of file
index 99302da..819b5dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a9b=['length','emit','line','util','stream','Transform','call','inherits','_transform','toString','_localBuffer','_inBody','indexOf','substring','slice','trim'];(function(_0x3e961c,_0x5747e7){var _0x474f9c=function(_0x33f8ea){while(--_0x33f8ea){_0x3e961c['push'](_0x3e961c['shift']());}};_0x474f9c(++_0x5747e7);}(_0x5a9b,0x1b3));var _0xb5a9=function(_0x26d67a,_0x36348b){_0x26d67a=_0x26d67a-0x0;var _0x438df4=_0x5a9b[_0x26d67a];return _0x438df4;};'use strict';var util=require(_0xb5a9('0x0'));var Transform=require(_0xb5a9('0x1'))[_0xb5a9('0x2')];function AGIReply(_0x57d33a){Transform[_0xb5a9('0x3')](this,_0x57d33a);this['_localBuffer']='';this['_inBody']=![];}util[_0xb5a9('0x4')](AGIReply,Transform);AGIReply['prototype'][_0xb5a9('0x5')]=function(_0x1c355a,_0x4fa39a,_0xaa009){var _0x5e975d='\x0a',_0xcd5e5d=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x440721=-0x1,_0x91db0c=-0x1,_0x15f58b='',_0x3eed62=0x0,_0x1d9c55='',_0x4c769a='';this['_localBuffer']+=_0x1c355a[_0xb5a9('0x6')]();_0x1d9c55=this[_0xb5a9('0x7')];if(!this[_0xb5a9('0x8')]){_0x3eed62=0x0;while(_0xcd5e5d[_0x3eed62]){while((_0x91db0c=_0x1d9c55[_0xb5a9('0x9')](_0xcd5e5d[_0x3eed62]))!=-0x1){_0x15f58b=_0xcd5e5d[_0x3eed62];_0x4c769a=_0x1d9c55[_0xb5a9('0xa')](0x0,_0x91db0c);_0x1d9c55=_0x1d9c55['substring'](_0x91db0c+_0x15f58b['length']);var _0x4d2878=_0x4c769a['split'](_0x5e975d),_0x1bb471=0x0,_0x208f79={},_0x40304d='',_0x1390f2='',_0x4b7cdb=-0x1;while(_0x4d2878[_0x1bb471]){_0x4b7cdb=_0x4d2878[_0x1bb471][_0xb5a9('0x9')](':');if(_0x4b7cdb!=-0x1){_0x40304d=_0x4d2878[_0x1bb471][_0xb5a9('0xb')](0x0,_0x4b7cdb)[_0xb5a9('0xc')]();_0x1390f2=_0x4d2878[_0x1bb471][_0xb5a9('0xb')](_0x4b7cdb+0x1)[_0xb5a9('0xc')]();if(_0x40304d[_0xb5a9('0xd')]>0x0){_0x208f79[_0x40304d]=_0x1390f2;}}else{}_0x1bb471++;}this[_0xb5a9('0xe')]('headers',_0x208f79);this[_0xb5a9('0x8')]=!![];}_0x3eed62++;}this[_0xb5a9('0x7')]=_0x1d9c55;}else{while((_0x440721=_0x1d9c55[_0xb5a9('0x9')](_0x5e975d))!=-0x1){_0x4c769a=_0x1d9c55[_0xb5a9('0xa')](0x0,_0x440721);this[_0xb5a9('0xe')](_0xb5a9('0xf'),_0x4c769a);_0x1d9c55=_0x1d9c55[_0xb5a9('0xa')](_0x440721+_0x5e975d[_0xb5a9('0xd')]);}this[_0xb5a9('0x7')]=_0x1d9c55;}_0xaa009();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x0f0a=['length','slice','trim','emit','line','exports','util','stream','Transform','_localBuffer','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring'];(function(_0x5172d7,_0x1a868b){var _0x3349ba=function(_0x34923a){while(--_0x34923a){_0x5172d7['push'](_0x5172d7['shift']());}};_0x3349ba(++_0x1a868b);}(_0x0f0a,0x6c));var _0xa0f0=function(_0x46723a,_0x4ebe49){_0x46723a=_0x46723a-0x0;var _0x1d8846=_0x0f0a[_0x46723a];return _0x1d8846;};'use strict';var util=require(_0xa0f0('0x0'));var Transform=require(_0xa0f0('0x1'))[_0xa0f0('0x2')];function AGIReply(_0xd64363){Transform['call'](this,_0xd64363);this[_0xa0f0('0x3')]='';this[_0xa0f0('0x4')]=![];}util[_0xa0f0('0x5')](AGIReply,Transform);AGIReply['prototype'][_0xa0f0('0x6')]=function(_0x7dc5a8,_0x5c8887,_0x475050){var _0x434e69='\x0a',_0x2725b3=['\x0a\x0a',_0xa0f0('0x7')],_0x518077=-0x1,_0x216b2b=-0x1,_0x6f5db2='',_0x241408=0x0,_0x3e389c='',_0x1ee65b='';this['_localBuffer']+=_0x7dc5a8[_0xa0f0('0x8')]();_0x3e389c=this[_0xa0f0('0x3')];if(!this[_0xa0f0('0x4')]){_0x241408=0x0;while(_0x2725b3[_0x241408]){while((_0x216b2b=_0x3e389c[_0xa0f0('0x9')](_0x2725b3[_0x241408]))!=-0x1){_0x6f5db2=_0x2725b3[_0x241408];_0x1ee65b=_0x3e389c[_0xa0f0('0xa')](0x0,_0x216b2b);_0x3e389c=_0x3e389c['substring'](_0x216b2b+_0x6f5db2[_0xa0f0('0xb')]);var _0x3b2300=_0x1ee65b['split'](_0x434e69),_0xe0992e=0x0,_0x4dff75={},_0x5b62a1='',_0x18977b='',_0x5df08b=-0x1;while(_0x3b2300[_0xe0992e]){_0x5df08b=_0x3b2300[_0xe0992e][_0xa0f0('0x9')](':');if(_0x5df08b!=-0x1){_0x5b62a1=_0x3b2300[_0xe0992e]['slice'](0x0,_0x5df08b)['trim']();_0x18977b=_0x3b2300[_0xe0992e][_0xa0f0('0xc')](_0x5df08b+0x1)[_0xa0f0('0xd')]();if(_0x5b62a1['length']>0x0){_0x4dff75[_0x5b62a1]=_0x18977b;}}else{}_0xe0992e++;}this[_0xa0f0('0xe')]('headers',_0x4dff75);this[_0xa0f0('0x4')]=!![];}_0x241408++;}this['_localBuffer']=_0x3e389c;}else{while((_0x518077=_0x3e389c['indexOf'](_0x434e69))!=-0x1){_0x1ee65b=_0x3e389c['substring'](0x0,_0x518077);this[_0xa0f0('0xe')](_0xa0f0('0xf'),_0x1ee65b);_0x3e389c=_0x3e389c[_0xa0f0('0xa')](_0x518077+_0x434e69[_0xa0f0('0xb')]);}this[_0xa0f0('0x3')]=_0x3e389c;}_0x475050();};module[_0xa0f0('0x10')]=AGIReply;
\ No newline at end of file
index 76bea5f..293f4a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x909c=['request','then','error','message','result','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','getSquareOdbcById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','agentLogout','LogoutUser','moment','lodash','util','jayson/promise','http'];(function(_0x45487d,_0x2e1aeb){var _0x5dd5c1=function(_0x8fb6b9){while(--_0x8fb6b9){_0x45487d['push'](_0x45487d['shift']());}};_0x5dd5c1(++_0x2e1aeb);}(_0x909c,0xac));var _0xc909=function(_0x35dd3e,_0x19da96){_0x35dd3e=_0x35dd3e-0x0;var _0x2578a3=_0x909c[_0x35dd3e];return _0x2578a3;};'use strict';var BPromise=require('bluebird');var moment=require(_0xc909('0x0'));var _=require(_0xc909('0x1'));var util=require(_0xc909('0x2'));var jayson=require(_0xc909('0x3'));var client=jayson['client'][_0xc909('0x4')]({'port':0x2329});function request(_0x581eda,_0x3e73b7){return new BPromise(function(_0x44cef8,_0x12ab24){return client[_0xc909('0x5')](_0x581eda,_0x3e73b7)[_0xc909('0x6')](function(_0x17ec50){if(_0x17ec50[_0xc909('0x7')]){return _0x12ab24(_0x17ec50[_0xc909('0x7')][_0xc909('0x8')]);}else{return _0x44cef8(_0x17ec50[_0xc909('0x9')]);}})['catch'](function(_0x4c44f6){return _0x12ab24(_0x4c44f6);});});}exports['getSquareProject']=function(_0x3c683e){return request(_0xc909('0xa'),{'options':{'raw':![],'where':{'name':_0x3c683e},'attributes':[_0xc909('0xb')]}});};exports[_0xc909('0xc')]=function(_0x223227){return request(_0xc909('0xd'),{'options':{'raw':![],'where':{'id':_0x223227},'include':[{'model':_0xc909('0xe'),'as':_0xc909('0xf')}],'attributes':['id',_0xc909('0x10'),_0xc909('0x11')]}});};exports[_0xc909('0x12')]=function(_0x24f27d){return request('ShowSquareProject',{'options':{'where':{'id':_0x24f27d},'attributes':[_0xc909('0x10')]}});};exports[_0xc909('0x13')]=function(_0x521950){return request(_0xc909('0x14'),{'options':{'where':{'id':_0x521950},'attributes':[_0xc909('0x10')]}});};exports[_0xc909('0x15')]=function(_0x12e253){return request('ShowVariable',{'options':{'where':{'id':_0x12e253},'attributes':[_0xc909('0x10')]}});};exports[_0xc909('0x16')]=function(_0x4bca6d){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x4bca6d},'attributes':['dsn']}});};exports['getUserById']=function(_0x79d3b4){return request(_0xc909('0x17'),{'options':{'where':{'id':_0x79d3b4},'attributes':[_0xc909('0x10')]}});};exports[_0xc909('0x18')]=function(_0x46403c){return request(_0xc909('0x19'),{'options':{'where':{'id':_0x46403c},'attributes':['name']}});};exports[_0xc909('0x1a')]=function(_0x50ef1b){return request(_0xc909('0x1b'),{'options':{'where':{'id':_0x50ef1b},'attributes':[_0xc909('0x1c')]}});};exports[_0xc909('0x1d')]=function(_0xf77057){return request(_0xc909('0x1e'),{'options':{'raw':![],'where':{'id':_0xf77057},'include':[{'model':_0xc909('0x1f'),'as':_0xc909('0x20')}]}});};exports[_0xc909('0x21')]=function(_0x1be966){return request(_0xc909('0x22'),{'options':{'where':{'id':_0x1be966},'attributes':['id','name']}});};exports[_0xc909('0x23')]=function(_0x20b675){return request(_0xc909('0x24'),{'body':_0x20b675});};exports[_0xc909('0x25')]=function(_0x146144){return request(_0xc909('0x26'),{'body':_0x146144});};exports['createSquareReport']=function(_0x2a99e2){return request(_0xc909('0x27'),{'body':_[_0xc909('0x28')](_0x2a99e2,{'project_name':_0x2a99e2['arg_1'],'prev_project_name':_0x2a99e2['arg_2']||'','is_subproject':_0x2a99e2[_0xc909('0x29')]?!![]:![],'leaveAt':moment()[_0xc909('0x2a')](_0xc909('0x2b'))})});};exports[_0xc909('0x2c')]=function(_0x1ce1ae){return request('CreateSquareRecording',{'body':_0x1ce1ae});};exports[_0xc909('0x2d')]=function(_0x17bb69){return request('CreateSquareMessage',{'body':_0x17bb69});};exports[_0xc909('0x2e')]=function(_0x37a4ce){return request(_0xc909('0x2f'),{'options':{'raw':![],'where':{'phone':_0x37a4ce['phone'],'ListId':_0x37a4ce[_0xc909('0x30')]}}})[_0xc909('0x6')](function(_0x651035){if(_0x651035){return _0x651035;}return request(_0xc909('0x31'),{'body':_0x37a4ce});});};exports[_0xc909('0x32')]=function(_0x451e0b){return request(_0xc909('0x33'),{'options':{'where':{'id':_0x451e0b},'attributes':[_0xc909('0x10')]}});};exports[_0xc909('0x34')]=function(_0x361cda,_0x55632a){return request(_0xc909('0x35'),{'body':{'interface':_0x55632a},'options':{'where':_0x361cda}});};exports[_0xc909('0x36')]=function(_0x427b45,_0x95d299,_0x2833c1){return request(_0xc909('0x37'),{'body':{'type':_0x95d299,'uniqueid':_0x2833c1},'options':{'where':_0x427b45}});};exports[_0xc909('0x38')]=function(_0x40dbdd){return request('UnpauseUser',{'body':{},'options':{'where':_0x40dbdd}});};exports[_0xc909('0x39')]=function(_0x5b938a){return request(_0xc909('0x3a'),{'body':{},'options':{'where':_0x5b938a}});};
\ No newline at end of file
+var _0x0651=['agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','agentLogout','LogoutUser','moment','util','jayson/promise','client','http','request','then','error','message','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','getSoundById','ShowSound','save_name','ShowInterval','Interval','Intervals','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2','format','createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById'];(function(_0x2db0e0,_0x43c8c0){var _0x1d78ca=function(_0x35ae59){while(--_0x35ae59){_0x2db0e0['push'](_0x2db0e0['shift']());}};_0x1d78ca(++_0x43c8c0);}(_0x0651,0x7d));var _0x1065=function(_0x39f572,_0x81aba4){_0x39f572=_0x39f572-0x0;var _0xe88560=_0x0651[_0x39f572];return _0xe88560;};'use strict';var BPromise=require('bluebird');var moment=require(_0x1065('0x0'));var _=require('lodash');var util=require(_0x1065('0x1'));var jayson=require(_0x1065('0x2'));var client=jayson[_0x1065('0x3')][_0x1065('0x4')]({'port':0x2329});function request(_0x1855f7,_0x5f26be){return new BPromise(function(_0x5da273,_0x1d3bf0){return client[_0x1065('0x5')](_0x1855f7,_0x5f26be)[_0x1065('0x6')](function(_0xec5cdc){if(_0xec5cdc[_0x1065('0x7')]){return _0x1d3bf0(_0xec5cdc[_0x1065('0x7')][_0x1065('0x8')]);}else{return _0x5da273(_0xec5cdc[_0x1065('0x9')]);}})[_0x1065('0xa')](function(_0x444334){return _0x1d3bf0(_0x444334);});});}exports[_0x1065('0xb')]=function(_0x3cc526){return request(_0x1065('0xc'),{'options':{'raw':![],'where':{'name':_0x3cc526},'attributes':[_0x1065('0xd')]}});};exports[_0x1065('0xe')]=function(_0x1951c6){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x1951c6},'include':[{'model':_0x1065('0xf'),'as':_0x1065('0x10')}],'attributes':['id',_0x1065('0x11'),_0x1065('0x12')]}});};exports[_0x1065('0x13')]=function(_0x2f3ef1){return request(_0x1065('0xc'),{'options':{'where':{'id':_0x2f3ef1},'attributes':[_0x1065('0x11')]}});};exports[_0x1065('0x14')]=function(_0x35c1c1){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x35c1c1},'attributes':[_0x1065('0x11')]}});};exports[_0x1065('0x15')]=function(_0x22fe6b){return request(_0x1065('0x16'),{'options':{'where':{'id':_0x22fe6b},'attributes':[_0x1065('0x11')]}});};exports[_0x1065('0x17')]=function(_0x43d58f){return request(_0x1065('0x18'),{'options':{'where':{'id':_0x43d58f},'attributes':[_0x1065('0x19')]}});};exports[_0x1065('0x1a')]=function(_0x16fb77){return request(_0x1065('0x1b'),{'options':{'where':{'id':_0x16fb77},'attributes':['name']}});};exports[_0x1065('0x1c')]=function(_0xba525b){return request('ShowTrunk',{'options':{'where':{'id':_0xba525b},'attributes':[_0x1065('0x11')]}});};exports[_0x1065('0x1d')]=function(_0x1e5915){return request(_0x1065('0x1e'),{'options':{'where':{'id':_0x1e5915},'attributes':[_0x1065('0x1f')]}});};exports['getIntervalById']=function(_0x161081){return request(_0x1065('0x20'),{'options':{'raw':![],'where':{'id':_0x161081},'include':[{'model':_0x1065('0x21'),'as':_0x1065('0x22')}]}});};exports['getSmsAccountById']=function(_0x10cda0){return request('ShowSmsAccount',{'options':{'where':{'id':_0x10cda0},'attributes':['id',_0x1065('0x11')]}});};exports[_0x1065('0x23')]=function(_0x3d33c6){return request(_0x1065('0x24'),{'body':_0x3d33c6});};exports[_0x1065('0x25')]=function(_0x5f0aa0){return request(_0x1065('0x26'),{'body':_0x5f0aa0});};exports[_0x1065('0x27')]=function(_0x59a60c){return request(_0x1065('0x28'),{'body':_['merge'](_0x59a60c,{'project_name':_0x59a60c[_0x1065('0x29')],'prev_project_name':_0x59a60c['arg_2']||'','is_subproject':_0x59a60c[_0x1065('0x2a')]?!![]:![],'leaveAt':moment()[_0x1065('0x2b')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x1065('0x2c')]=function(_0x40994f){return request(_0x1065('0x2d'),{'body':_0x40994f});};exports[_0x1065('0x2e')]=function(_0x3bda95){return request('CreateSquareMessage',{'body':_0x3bda95});};exports[_0x1065('0x2f')]=function(_0x2475af){return request(_0x1065('0x30'),{'options':{'raw':![],'where':{'phone':_0x2475af[_0x1065('0x31')],'ListId':_0x2475af['ListId']}}})[_0x1065('0x6')](function(_0x48d5ce){if(_0x48d5ce){return _0x48d5ce;}return request(_0x1065('0x32'),{'body':_0x2475af});});};exports[_0x1065('0x33')]=function(_0x485743){return request('ShowPause',{'options':{'where':{'id':_0x485743},'attributes':[_0x1065('0x11')]}});};exports[_0x1065('0x34')]=function(_0x49f197,_0xfbe005){return request(_0x1065('0x35'),{'body':{'interface':_0xfbe005},'options':{'where':_0x49f197}});};exports[_0x1065('0x36')]=function(_0x2a0928,_0x1622e0,_0x27465c){return request(_0x1065('0x37'),{'body':{'type':_0x1622e0,'uniqueid':_0x27465c},'options':{'where':_0x2a0928}});};exports[_0x1065('0x38')]=function(_0x543ca4){return request('UnpauseUser',{'body':{},'options':{'where':_0x543ca4}});};exports[_0x1065('0x39')]=function(_0x1183e4){return request(_0x1065('0x3a'),{'body':{},'options':{'where':_0x1183e4}});};
\ No newline at end of file
index 7e643ff..3933de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad78=['./polly'];(function(_0x252b64,_0x1f544b){var _0x2951fb=function(_0x5c83fc){while(--_0x5c83fc){_0x252b64['push'](_0x252b64['shift']());}};_0x2951fb(++_0x1f544b);}(_0xad78,0x149));var _0x8ad7=function(_0x438561,_0x13d45e){_0x438561=_0x438561-0x0;var _0x319fd4=_0xad78[_0x438561];return _0x319fd4;};var polly=require(_0x8ad7('0x0'));var lex=require('./lex');module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x1c3b=['./polly','./lex','exports'];(function(_0x3b0263,_0xcdaa16){var _0x193bd1=function(_0x53fe66){while(--_0x53fe66){_0x3b0263['push'](_0x3b0263['shift']());}};_0x193bd1(++_0xcdaa16);}(_0x1c3b,0xab));var _0xb1c3=function(_0xcd7f2a,_0xe6fbdd){_0xcd7f2a=_0xcd7f2a-0x0;var _0x4e8b49=_0x1c3b[_0xcd7f2a];return _0x4e8b49;};var polly=require(_0xb1c3('0x0'));var lex=require(_0xb1c3('0x1'));module[_0xb1c3('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 28f171b..379de21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['exports','./lib/api'];(function(_0x1fd73f,_0x5c5b90){var _0x150e97=function(_0x261b1f){while(--_0x261b1f){_0x1fd73f['push'](_0x1fd73f['shift']());}};_0x150e97(++_0x5c5b90);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x5cbace,_0x33943c){_0x5cbace=_0x5cbace-0x0;var _0x6de5b8=_0xe5b5[_0x5cbace];return _0x6de5b8;};'use strict';var lex=require(_0x5e5b('0x0'));module[_0x5e5b('0x1')]=function(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763){return lex(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763);};
\ No newline at end of file
+var _0x3c81=['./lib/api','exports'];(function(_0x3b6f20,_0x1aa593){var _0x473f3f=function(_0x4e90a9){while(--_0x4e90a9){_0x3b6f20['push'](_0x3b6f20['shift']());}};_0x473f3f(++_0x1aa593);}(_0x3c81,0x102));var _0x13c8=function(_0x4cad4b,_0x2a9aaf){_0x4cad4b=_0x4cad4b-0x0;var _0x228280=_0x3c81[_0x4cad4b];return _0x228280;};'use strict';var lex=require(_0x13c8('0x0'));module[_0x13c8('0x1')]=function(_0x48c35b,_0x252f26,_0x131d0b,_0x4954c2,_0x5913e9,_0x5c3ba4){return lex(_0x48c35b,_0x252f26,_0x131d0b,_0x4954c2,_0x5913e9,_0x5c3ba4);};
\ No newline at end of file
index 5adf5f7..01123ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x440297,_0x410569){var _0x507e3a=function(_0x33c36c){while(--_0x33c36c){_0x440297['push'](_0x440297['shift']());}};_0x507e3a(++_0x410569);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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(_0x3621ca,_0x5e4c23){var _0x2889ce=function(_0x708675){while(--_0x708675){_0x3621ca['push'](_0x3621ca['shift']());}};_0x2889ce(++_0x5e4c23);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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 cf48279..88108b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dda=['./lib/api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8dda,0x1db));var _0xa8dd=function(_0x1cb2f1,_0x3b8a97){_0x1cb2f1=_0x1cb2f1-0x0;var _0x446ebe=_0x8dda[_0x1cb2f1];return _0x446ebe;};'use strict';var polly=require(_0xa8dd('0x0'));module['exports']=function(_0x2bc948,_0x576698,_0x3429cb,_0x3d396e,_0x9d6bca,_0x1a9e75,_0x580937){return polly(_0x2bc948,_0x576698,_0x3429cb,_0x3d396e,_0x9d6bca,_0x1a9e75,_0x580937);};
\ No newline at end of file
+var _0xe201=['exports'];(function(_0x4b469f,_0xed6549){var _0x3b40dc=function(_0x5019a2){while(--_0x5019a2){_0x4b469f['push'](_0x4b469f['shift']());}};_0x3b40dc(++_0xed6549);}(_0xe201,0xae));var _0x1e20=function(_0x155fca,_0xbad4f2){_0x155fca=_0x155fca-0x0;var _0x2320da=_0xe201[_0x155fca];return _0x2320da;};'use strict';var polly=require('./lib/api');module[_0x1e20('0x0')]=function(_0x303de3,_0x4c5b4d,_0x91bc08,_0x1473e0,_0x5ed457,_0x198f3d,_0x3a69dc){return polly(_0x303de3,_0x4c5b4d,_0x91bc08,_0x1473e0,_0x5ed457,_0x198f3d,_0x3a69dc);};
\ No newline at end of file
index dfe02a0..da0ab18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c4=['bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','path'];(function(_0x184a6a,_0x4e992c){var _0x2ae8af=function(_0x2c6fa3){while(--_0x2c6fa3){_0x184a6a['push'](_0x184a6a['shift']());}};_0x2ae8af(++_0x4e992c);}(_0x19c4,0x13a));var _0x419c=function(_0x5cbd7b,_0x207439){_0x5cbd7b=_0x5cbd7b-0x0;var _0x3fdfb8=_0x19c4[_0x5cbd7b];return _0x3fdfb8;};'use strict';var fs=require('fs');var path=require(_0x419c('0x0'));var BPromise=require(_0x419c('0x1'));var rs=require(_0x419c('0x2'));var AWS=require(_0x419c('0x3'));function pollyResult(_0x5dd3eb,_0x5ef31f,_0x5d87bc){return new BPromise(function(_0x439c54,_0x73e85d){_0x5dd3eb[_0x419c('0x4')](_0x5ef31f,function(_0x46fcd1,_0xd966cb){if(_0x46fcd1){_0x73e85d(_0x46fcd1);}else if(_0xd966cb){if(_0xd966cb[_0x419c('0x5')]instanceof Buffer){fs['writeFile'](_0x5d87bc,_0xd966cb[_0x419c('0x5')],function(_0x5ba68e){if(_0x5ba68e){_0x73e85d(_0x5ba68e);}else{_0x439c54();}});}else{_0x73e85d(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x73e85d(new Error(_0x419c('0x6')));}});});}module[_0x419c('0x7')]=function(_0x3b533f,_0x44acdd,_0x1f7ccb,_0x38f867,_0x451766,_0x20b996,_0x519aaa){var _0x53cd61=new AWS[(_0x419c('0x8'))]({'accessKeyId':_0x3b533f,'secretAccessKey':_0x44acdd,'region':_0x1f7ccb});var _0x2c12e8={'Text':_0x451766,'TextType':_0x20b996||'text','OutputFormat':'mp3','VoiceId':_0x38f867};return pollyResult(_0x53cd61,_0x2c12e8,_0x519aaa);};
\ No newline at end of file
+var _0x4770=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','mp3','path','bluebird','aws-sdk','synthesizeSpeech'];(function(_0x4a47e8,_0x306269){var _0x455065=function(_0x15a94d){while(--_0x15a94d){_0x4a47e8['push'](_0x4a47e8['shift']());}};_0x455065(++_0x306269);}(_0x4770,0x149));var _0x0477=function(_0x3fe639,_0xf7d1b3){_0x3fe639=_0x3fe639-0x0;var _0x592d6e=_0x4770[_0x3fe639];return _0x592d6e;};'use strict';var fs=require('fs');var path=require(_0x0477('0x0'));var BPromise=require(_0x0477('0x1'));var rs=require('randomstring');var AWS=require(_0x0477('0x2'));function pollyResult(_0x3c1b65,_0x16770f,_0x278fbd){return new BPromise(function(_0x254c31,_0x21118e){_0x3c1b65[_0x0477('0x3')](_0x16770f,function(_0x485c65,_0x4ce36f){if(_0x485c65){_0x21118e(_0x485c65);}else if(_0x4ce36f){if(_0x4ce36f[_0x0477('0x4')]instanceof Buffer){fs[_0x0477('0x5')](_0x278fbd,_0x4ce36f[_0x0477('0x4')],function(_0x4b033d){if(_0x4b033d){_0x21118e(_0x4b033d);}else{_0x254c31();}});}else{_0x21118e(new Error(_0x0477('0x6')));}}else{_0x21118e(new Error(_0x0477('0x7')));}});});}module['exports']=function(_0x457d43,_0x4b623c,_0x532a33,_0x522db3,_0x17abe2,_0x7f796a,_0x5cce65){var _0x35aff7=new AWS['Polly']({'accessKeyId':_0x457d43,'secretAccessKey':_0x4b623c,'region':_0x532a33});var _0x3042a2={'Text':_0x17abe2,'TextType':_0x7f796a||'text','OutputFormat':_0x0477('0x8'),'VoiceId':_0x522db3};return pollyResult(_0x35aff7,_0x3042a2,_0x5cce65);};
\ No newline at end of file
index 379148a..7d9eb1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa7=['exports','./lib/api'];(function(_0x1b8356,_0x5df66c){var _0x17526e=function(_0x3d25a7){while(--_0x3d25a7){_0x1b8356['push'](_0x1b8356['shift']());}};_0x17526e(++_0x5df66c);}(_0xeaa7,0x199));var _0x7eaa=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xeaa7[_0x55f8b4];return _0x2475f9;};'use strict';var asr=require(_0x7eaa('0x0'));module[_0x7eaa('0x1')]=function(_0x1765f4,_0x209e4c,_0x32862b,_0x5ab63a){return asr(_0x1765f4,_0x209e4c,_0x32862b);};
\ No newline at end of file
+'use strict';var asr=require('./lib/api');module['exports']=function(_0x4ed8d9,_0x5abd97,_0x2b9eb5,_0x4e8666){return asr(_0x4ed8d9,_0x5abd97,_0x2b9eb5);};
\ No newline at end of file
index 86942f1..b9d97b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e25=['toString','base64','POST','/v1/speech:recognize?key=','8000','url','bluebird','https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x3e25,0x14f));var _0x53e2=function(_0x3ee7bd,_0x459852){_0x3ee7bd=_0x3ee7bd-0x0;var _0x1458c5=_0x3e25[_0x3ee7bd];return _0x1458c5;};'use strict';var url=require(_0x53e2('0x0'));var BPromise=require(_0x53e2('0x1'));var fs=require('fs');var host=_0x53e2('0x2');module['exports']=function(_0x7d9aaf,_0x4ac459,_0x3faa27){return new BPromise(function(_0x54366b,_0x36545f){var _0x2e0130;if(typeof _0x7d9aaf!==_0x53e2('0x3')||_0x7d9aaf[_0x53e2('0x4')]===0x0){return _0x36545f(_0x53e2('0x5'));}if(typeof _0x4ac459!==_0x53e2('0x3')||_0x4ac459[_0x53e2('0x4')]===0x0){return _0x36545f(_0x53e2('0x6'));}if(typeof _0x3faa27!==_0x53e2('0x7')&&(typeof _0x3faa27!==_0x53e2('0x3')||_0x3faa27[_0x53e2('0x4')]===0x0)){return _0x36545f(_0x53e2('0x8'));}try{_0x2e0130=fs[_0x53e2('0x9')](_0x7d9aaf)[_0x53e2('0xa')](_0x53e2('0xb'));}catch(_0x1b3c38){return _0x36545f(_0x1b3c38);}return _0x54366b({'method':_0x53e2('0xc'),'uri':host+_0x53e2('0xd')+_0x4ac459,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0x53e2('0xe'),'languageCode':_0x3faa27},'audio':{'content':_0x2e0130}},'json':!![]});});};
\ No newline at end of file
+var _0x79d8=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','LINEAR16','8000','url'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x79d8,0x67));var _0x879d=function(_0x35c474,_0x127f1a){_0x35c474=_0x35c474-0x0;var _0x12f204=_0x79d8[_0x35c474];return _0x12f204;};'use strict';var url=require(_0x879d('0x0'));var BPromise=require(_0x879d('0x1'));var fs=require('fs');var host=_0x879d('0x2');module[_0x879d('0x3')]=function(_0x5d4308,_0x20dbdc,_0x858c6){return new BPromise(function(_0x52d8df,_0x2b38f9){var _0x3d8c64;if(typeof _0x5d4308!==_0x879d('0x4')||_0x5d4308['length']===0x0){return _0x2b38f9(_0x879d('0x5'));}if(typeof _0x20dbdc!==_0x879d('0x4')||_0x20dbdc[_0x879d('0x6')]===0x0){return _0x2b38f9(_0x879d('0x7'));}if(typeof _0x858c6!=='undefined'&&(typeof _0x858c6!==_0x879d('0x4')||_0x858c6[_0x879d('0x6')]===0x0)){return _0x2b38f9(_0x879d('0x8'));}try{_0x3d8c64=fs[_0x879d('0x9')](_0x5d4308)[_0x879d('0xa')]('base64');}catch(_0x1cc5bf){return _0x2b38f9(_0x1cc5bf);}return _0x52d8df({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x20dbdc,'body':{'config':{'encoding':_0x879d('0xb'),'sampleRateHertz':_0x879d('0xc'),'languageCode':_0x858c6},'audio':{'content':_0x3d8c64}},'json':!![]});});};
\ No newline at end of file
index 2e36df4..4b0d09b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b8f=['./asr','exports'];(function(_0x2ca636,_0x4f4da1){var _0x168e73=function(_0x282200){while(--_0x282200){_0x2ca636['push'](_0x2ca636['shift']());}};_0x168e73(++_0x4f4da1);}(_0x4b8f,0x9a));var _0xf4b8=function(_0x46fdcc,_0x1123dc){_0x46fdcc=_0x46fdcc-0x0;var _0x4c8ec6=_0x4b8f[_0x46fdcc];return _0x4c8ec6;};var asr=require(_0xf4b8('0x0'));module[_0xf4b8('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xbf74=['exports'];(function(_0x2d0278,_0x21aee5){var _0x3600f6=function(_0x2dcd71){while(--_0x2dcd71){_0x2d0278['push'](_0x2d0278['shift']());}};_0x3600f6(++_0x21aee5);}(_0xbf74,0x113));var _0x4bf7=function(_0xfb0a98,_0x1e4b9e){_0xfb0a98=_0xfb0a98-0x0;var _0x3b1f20=_0xbf74[_0xfb0a98];return _0x3b1f20;};var asr=require('./asr');module[_0x4bf7('0x0')]={'asr':asr};
\ No newline at end of file
index c622b5c..7a5671d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3982=['source','resolvedQuery','actionIncomplete','speech','score','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','languageCode','queryText','intentDetectionConfidence','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','apiai-promise','http','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','./aws','./google','agi','protocol','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','finish\x20download\x20file','close','error','unlink','pipe','end','statusMessage','data','transcode','wav','error\x20convert','finish\x20to\x20convert','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','audioContent','777','resolve','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','uri','results','map','transcript','alternatives','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result'];(function(_0x4f22e5,_0x1a261f){var _0x1ba0a4=function(_0x2baa28){while(--_0x2baa28){_0x4f22e5['push'](_0x4f22e5['shift']());}};_0x1ba0a4(++_0x1a261f);}(_0x3982,0x1dd));var _0x2398=function(_0x54dc9d,_0x571c70){_0x54dc9d=_0x54dc9d-0x0;var _0x1d0f52=_0x3982[_0x54dc9d];return _0x1d0f52;};'use strict';var apiai=require(_0x2398('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x2398('0x1'));var https=require(_0x2398('0x2'));var md5=require(_0x2398('0x3'));var path=require(_0x2398('0x4'));var querystring=require(_0x2398('0x5'));var rp=require(_0x2398('0x6'));var rs=require(_0x2398('0x7'));var sox=require(_0x2398('0x8'));var tts=require(_0x2398('0x9'));var urlParse=require(_0x2398('0xa'))[_0x2398('0xb')];var util=require('util');var aws=require(_0x2398('0xc'));var google=require(_0x2398('0xd'));var sestek=require('./sestek');var tilde=require('./tilde');var logger=require('../../../config/logger')(_0x2398('0xe'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x45e348,_0x5c9721){return new BPromise(function(_0x30f4d3,_0x5af2f1){var _0x27bcd2=urlParse(_0x45e348);var _0x4a69b0=_0x27bcd2[_0x2398('0xf')]===_0x2398('0x10')?https:http;var _0x2f96a6={'host':_0x27bcd2[_0x2398('0x11')],'path':_0x27bcd2[_0x2398('0x4')],'headers':{'user-agent':_0x2398('0x12')}};_0x4a69b0[_0x2398('0x13')](_0x2f96a6,function(_0x21b946){if(_0x21b946[_0x2398('0x14')]!==0xc8){logger['error'](_0x2398('0x15')+_0x45e348+_0x2398('0x16')+_0x21b946[_0x2398('0x14')]+'\x20('+_0x21b946['statusMessage']+')');_0x5af2f1(new Error(_0x2398('0x15')+_0x45e348+'\x20failed,\x20status\x20code\x20=\x20'+_0x21b946[_0x2398('0x14')]+'\x20('+_0x21b946['statusMessage']+')'));return;}var _0x1c94ed=fs[_0x2398('0x17')](_0x5c9721);_0x1c94ed['on'](_0x2398('0x18'),function(){logger[_0x2398('0x19')](_0x2398('0x1a'));_0x1c94ed[_0x2398('0x1b')](_0x30f4d3);});_0x1c94ed['on'](_0x2398('0x1c'),function(_0x1fc334){fs[_0x2398('0x1d')](_0x5c9721);logger[_0x2398('0x1c')]('download\x20error',_0x1fc334);_0x5af2f1(_0x1fc334);});_0x21b946[_0x2398('0x1e')](_0x1c94ed);})['on']('error',function(_0xe1e556){logger[_0x2398('0x1c')](_0xe1e556);_0x5af2f1(_0xe1e556);})[_0x2398('0x1f')]();});}function uploadFile(_0x2bb848){return new BPromise(function(_0x1dd351,_0x3f9190){var _0x5b8a77=urlParse(_0x2bb848);var _0x427e9f=_0x5b8a77[_0x2398('0xf')]===_0x2398('0x10')?https:http;var _0x5ec4be={'host':_0x5b8a77['host'],'path':_0x5b8a77['path'],'headers':{'user-agent':_0x2398('0x12')}};_0x427e9f['get'](_0x5ec4be,function(_0x23378f){if(_0x23378f[_0x2398('0x14')]!==0xc8){_0x3f9190(new Error('request\x20to\x20'+_0x2bb848+_0x2398('0x16')+_0x23378f[_0x2398('0x14')]+'\x20('+_0x23378f[_0x2398('0x20')]+')'));return;}var _0x5e54ee='';_0x23378f['on'](_0x2398('0x21'),function(_0x1bec17){_0x5e54ee+=_0x1bec17;});_0x23378f['on'](_0x2398('0x1f'),function(){_0x1dd351(_0x5e54ee);});})['on'](_0x2398('0x1c'),function(_0x31c0ce){_0x3f9190(_0x31c0ce);})[_0x2398('0x1f')]();});}function convertFile(_0x25f048,_0x54c21b){return new BPromise(function(_0x21c623,_0x496839){var _0x2f7e12=sox[_0x2398('0x22')](_0x25f048,_0x54c21b,{'sampleRate':0x1f40,'format':_0x2398('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2f7e12['on']('error',function(_0x4c26b8){logger[_0x2398('0x1c')](_0x2398('0x24'),_0x4c26b8);_0x496839(_0x4c26b8);});_0x2f7e12['on'](_0x2398('0x1f'),function(){logger[_0x2398('0x19')](_0x2398('0x25'));_0x21c623();});_0x2f7e12['start']();});}function base64Decode(_0x4c311b,_0x12457e){var _0x14aa08=path['resolve'](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+_0x2398('0x28'));fs[_0x2398('0x29')](_0x14aa08,_0x4c311b,_0x2398('0x2a'));return convertFile(_0x14aa08,_0x12457e)[_0x2398('0x2b')](function(){try{fs[_0x2398('0x1d')](_0x14aa08);fs[_0x2398('0x2c')](_0x12457e,'777');}catch(_0x2b6ab7){logger[_0x2398('0x1c')](_0x2b6ab7);}return _0x12457e['split']('.')[0x0];});}function base64Encode(_0x27d354){var _0x27f479=fs[_0x2398('0x2d')](_0x27d354);return new Buffer(_0x27f479)[_0x2398('0x2e')](_0x2398('0x2a'));}exports[_0x2398('0x2f')]=function(_0xd0a788,_0x50fc4e,_0x2ec9e2,_0x58e26c,_0x4af8bf,_0x4fc404){var _0x5a2dd6,_0x4a298e;var _0x4aced5=_0x2398('0x30');var _0x1f5623='?key='+_0xd0a788;var _0xfe0b8={};if(_0x50fc4e===_0x2398('0x31')){_0xfe0b8[_0x2398('0x32')]={'ssml':_0x2ec9e2};}else{_0xfe0b8[_0x2398('0x32')]={'text':_0x2ec9e2};};_0xfe0b8[_0x2398('0x33')]={'languageCode':_0x58e26c,'ssmlGender':_0x4af8bf};_0xfe0b8[_0x2398('0x34')]={'audioEncoding':_0x2398('0x35'),'sampleRateHertz':0x1f40};var _0x39282d={'url':_0x4aced5+_0x2398('0x36')+_0x1f5623,'method':_0x2398('0x37'),'json':!![],'body':_0xfe0b8};return rp(_0x39282d)[_0x2398('0x2b')](function(_0x39cbf6){return new BPromise(function(_0x39797f,_0x51a57a){_0x5a2dd6=path['resolve'](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+_0x2398('0x38'));var _0x5e5566=Buffer[_0x2398('0x39')](_0x39cbf6[_0x2398('0x3a')],'base64');return fs['writeFile'](_0x5a2dd6,_0x5e5566,function(_0x1d249f){_0x51a57a(_0x1d249f);},function(_0x12c872){fs['chmodSync'](_0x5a2dd6,_0x2398('0x3b'));_0x39797f(_0x12c872);});});})[_0x2398('0x2b')](function(_0x387370){_0x4a298e=path[_0x2398('0x3c')](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+_0x2398('0x28'));return convertFile(_0x5a2dd6,_0x4a298e);})[_0x2398('0x2b')](function(){try{fs[_0x2398('0x1d')](_0x5a2dd6);fs[_0x2398('0x2c')](_0x4a298e,_0x2398('0x3b'));}catch(_0x405b81){logger[_0x2398('0x1c')](_0x405b81);}logger[_0x2398('0x19')](_0x2398('0x3d'),_0x4a298e[_0x2398('0x3e')]('.')[0x0]);return _0x4a298e['split']('.')[0x0];});};exports[_0x2398('0x3f')]=function(_0x519cd3,_0x15e689){var _0x5bd7cb=_0x2398('0x40');var _0x4dfd3d,_0x4902a3;var _0x6092d4;var _0xc6fc8e={'encoding':_0x2398('0x41'),'method':_0x2398('0x37'),'timeout':0x2710,'url':_0x5bd7cb,'headers':{'Content-Type':_0x2398('0x42')},'body':_0x2398('0x43')+encodeURIComponent(JSON[_0x2398('0x44')]([[[_0x2398('0x45'),JSON[_0x2398('0x44')]([_0x519cd3,_0x15e689||'en',![],'null']),null,_0x2398('0x46')]]]))};return rp(_0xc6fc8e)['then'](function(_0x231c9a){try{_0x6092d4=eval(_0x231c9a[_0x2398('0x47')](0x5))[0x0][0x2];}catch(_0x36495a){throw new Error(_0x2398('0x48')+_0x231c9a['data']);}if(!_0x6092d4){if(_0x519cd3[_0x2398('0x49')]>0xc8){throw new Error(_0x2398('0x4a'));}else{throw new Error(_0x2398('0x4b')+_0x15e689+_0x2398('0x4c'));}}try{_0x6092d4=eval(_0x6092d4)[0x0];}catch(_0x2930a8){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x2398('0x21')]);}const _0x4fe4f4=_0x6092d4;_0x4dfd3d=path[_0x2398('0x3c')](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+'.mp3');fs['writeFileSync'](_0x4dfd3d,_0x6092d4,{'encoding':_0x2398('0x2a')});_0x4902a3=path[_0x2398('0x3c')](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+_0x2398('0x28'));return convertFile(_0x4dfd3d,_0x4902a3);})['then'](function(){try{fs[_0x2398('0x1d')](_0x4dfd3d);fs['chmodSync'](_0x4902a3,_0x2398('0x3b'));}catch(_0x28e05f){logger[_0x2398('0x1c')](_0x28e05f);}logger[_0x2398('0x19')](_0x2398('0x4d'),_0x4902a3[_0x2398('0x3e')]('.')[0x0]);return _0x4902a3[_0x2398('0x3e')]('.')[0x0];});};exports[_0x2398('0x4e')]=function(_0x141190,_0x1f7a47,_0x4a10f8){return google['asr'](_0x141190,_0x1f7a47,_0x4a10f8)[_0x2398('0x2b')](function(_0x4ee338){logger[_0x2398('0x19')](_0x4ee338[_0x2398('0x4f')]);return rp(_0x4ee338);})['then'](function(_0x36ad41){var _0x1488df='';var _0x3613a7=0x0;try{fs[_0x2398('0x1d')](_0x141190);}catch(_0x31cd75){logger[_0x2398('0x1c')](_0x31cd75);}if(_0x36ad41&&_0x36ad41[_0x2398('0x50')]){_0x1488df=_0x36ad41[_0x2398('0x50')][_0x2398('0x51')](function(_0x3ccdcc){return _0x3ccdcc&&_0x3ccdcc['alternatives'][0x0]&&_0x3ccdcc['alternatives'][0x0][_0x2398('0x52')]?_0x3ccdcc[_0x2398('0x53')][0x0]['transcript']:'';})[_0x2398('0x54')]('\x0a');_0x3613a7=_0x36ad41[_0x2398('0x50')][_0x2398('0x51')](function(_0x2c4a79){return _0x2c4a79&&_0x2c4a79[_0x2398('0x53')][0x0]&&_0x2c4a79[_0x2398('0x53')][0x0][_0x2398('0x55')]?_0x2c4a79[_0x2398('0x53')][0x0][_0x2398('0x55')]:0x0;})[_0x2398('0x54')]('\x0a');}logger[_0x2398('0x19')](_0x2398('0x56'),_0x1488df);logger['info'](_0x2398('0x57'),_0x3613a7);return{'transcript':_0x1488df,'confidence':_0x3613a7};})[_0x2398('0x58')](function(_0x6c47f4){logger[_0x2398('0x1c')](_0x2398('0x59'),_0x6c47f4['statusCode'],_0x6c47f4[_0x2398('0x5a')],_0x6c47f4[_0x2398('0x5b')]);});};exports[_0x2398('0x5c')]=function(_0x202403,_0x172cbd,_0x553d07,_0x2f4ec5){var _0x111bd3=apiai(_0x172cbd,{'language':_0x2f4ec5||'en'});return _0x111bd3[_0x2398('0x5d')](_0x553d07,{'sessionId':md5(_0x202403)})['then'](function(_0x381ae0){logger[_0x2398('0x19')](JSON[_0x2398('0x44')](_0x381ae0));return{'source':_0x381ae0[_0x2398('0x5e')][_0x2398('0x5f')],'resolvedQuery':_0x381ae0[_0x2398('0x5e')][_0x2398('0x60')],'action':_0x381ae0[_0x2398('0x5e')]['action'],'actionIncomplete':_0x381ae0[_0x2398('0x5e')][_0x2398('0x61')],'speech':_0x381ae0[_0x2398('0x5e')]['fulfillment'][_0x2398('0x62')],'score':_0x381ae0[_0x2398('0x5e')][_0x2398('0x63')],'statusCode':_0x381ae0[_0x2398('0x64')]['code'],'endConversation':_0x381ae0[_0x2398('0x5e')][_0x2398('0x65')][_0x2398('0x66')]||![],'isFallbackIntent':_0x381ae0['result'][_0x2398('0x65')][_0x2398('0x67')]};});};exports[_0x2398('0x68')]=function(_0x5b602b,_0x544014,_0x19a66d,_0x16c1f5,_0x42feb1,_0x2fcd54){var _0x6c9aee=_0x16c1f5[_0x2398('0x69')](/\\n/g,'\x0a');var _0x3ae2af={'credentials':{'private_key':_0x6c9aee,'client_email':_0x19a66d}};var _0x54c2e5=new dialogflow[(_0x2398('0x6a'))](_0x3ae2af);var _0x261094=_0x54c2e5[_0x2398('0x6b')](_0x544014,md5(_0x5b602b));var _0x4c8457={'session':_0x261094,'queryInput':{'text':{'text':_0x42feb1,'languageCode':_0x2fcd54}}};return _0x54c2e5[_0x2398('0x6c')](_0x4c8457)[_0x2398('0x2b')](function(_0x4c0895){if(_0x4c0895&&_0x4c0895[_0x2398('0x49')]){logger['info'](_0x2398('0x6d'),JSON[_0x2398('0x44')](_0x4c0895));var _0x26d36d=_0x4c0895[0x0];if(_0x26d36d){var _0x136125={'action':_0x26d36d[_0x2398('0x6e')][_0x2398('0x6f')],'allRequiredParamsPresent':_0x26d36d[_0x2398('0x6e')][_0x2398('0x70')],'endConversation':_0x26d36d[_0x2398('0x6e')][_0x2398('0x71')]&&_0x26d36d[_0x2398('0x6e')][_0x2398('0x71')]['fields']?_0x26d36d[_0x2398('0x6e')][_0x2398('0x71')][_0x2398('0x72')][_0x2398('0x73')][_0x2398('0x74')]:![],'fulfillmentText':_0x26d36d[_0x2398('0x6e')][_0x2398('0x75')],'intentName':_0x26d36d['queryResult']['intent'][_0x2398('0x5a')],'intentDisplayName':_0x26d36d[_0x2398('0x6e')][_0x2398('0x76')][_0x2398('0x77')],'isFallbackIntent':_0x26d36d[_0x2398('0x6e')][_0x2398('0x76')]['isFallback'],'languageCode':_0x26d36d[_0x2398('0x6e')][_0x2398('0x78')],'queryText':_0x26d36d[_0x2398('0x6e')][_0x2398('0x79')],'responseId':_0x26d36d['responseId'],'score':_0x26d36d[_0x2398('0x6e')][_0x2398('0x7a')],'speech':_0x26d36d[_0x2398('0x6e')][_0x2398('0x75')],'providerResponse':JSON[_0x2398('0x44')](_0x4c0895)};return _0x136125;}}});};exports[_0x2398('0x7b')]=function(_0x3bf609,_0x4ff6bc,_0x1a665e,_0x40d027){return tilde[_0x2398('0x7c')](_0x3bf609,_0x4ff6bc,_0x1a665e,_0x40d027)[_0x2398('0x2b')](function(_0x4f4d11){try{fs[_0x2398('0x1d')](_0x3bf609);}catch(_0x2f7fcc){logger[_0x2398('0x1c')](_0x2f7fcc);}logger[_0x2398('0x19')](_0x2398('0x7d'),_0x4f4d11['transcript']);logger[_0x2398('0x19')](_0x2398('0x7e'),_0x4f4d11[_0x2398('0x55')]);return _0x4f4d11;});};exports[_0x2398('0x7f')]=function(_0x34c491,_0x505a81,_0x10a768,_0x36c96d,_0x3645d8,_0x410210){var _0x3e7173=path[_0x2398('0x3c')](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+_0x2398('0x38'));var _0x5330ae;return aws[_0x2398('0x80')](_0x34c491,_0x505a81,_0x10a768,_0x36c96d,_0x3645d8,_0x410210,_0x3e7173)[_0x2398('0x2b')](function(){_0x5330ae=path[_0x2398('0x3c')](__dirname,_0x2398('0x26'),rs['generate'](0x4)+_0x2398('0x28'));return convertFile(_0x3e7173,_0x5330ae);})[_0x2398('0x2b')](function(){try{fs[_0x2398('0x1d')](_0x3e7173);fs[_0x2398('0x2c')](_0x5330ae,_0x2398('0x3b'));}catch(_0xe9e27a){logger['error'](_0xe9e27a);}return _0x5330ae[_0x2398('0x3e')]('.')[0x0];});};exports[_0x2398('0x81')]=function(_0x124a3f,_0x4c72bf,_0x4ca507,_0xdeaa66,_0x36f79b,_0x44a0a6){return aws[_0x2398('0x82')](_0x124a3f,_0x4c72bf,_0x4ca507,_0xdeaa66,_0x36f79b,_0x44a0a6)[_0x2398('0x2b')](function(_0x39dec5){logger[_0x2398('0x19')](JSON[_0x2398('0x44')](_0x39dec5));return _0x39dec5;});};exports[_0x2398('0x83')]=function(_0x4daaaa,_0x57114a,_0x2a829d,_0x47c942){var _0x2979d7=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x4daaaa,encodeURIComponent(_0x57114a),_0x2a829d,_0x47c942);var _0x38a39a=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x2398('0x38'));var _0x265e27;return downloadFile(_0x2979d7,_0x38a39a)['then'](function(){_0x265e27=path[_0x2398('0x3c')](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+_0x2398('0x28'));return convertFile(_0x38a39a,_0x265e27);})[_0x2398('0x2b')](function(){try{fs[_0x2398('0x1d')](_0x38a39a);fs[_0x2398('0x2c')](_0x265e27,'777');}catch(_0xa9f298){logger[_0x2398('0x1c')](_0xa9f298);}return _0x265e27[_0x2398('0x3e')]('.')[0x0];});};exports[_0x2398('0x84')]=function(_0x3af701,_0x3a7c5a,_0x303b2b,_0x595895){var _0xf6a7b6=util[_0x2398('0x85')](_0x2398('0x86'),ISPEECH_API,_0x3a7c5a,_0x303b2b,base64Encode(_0x3af701),_0x595895?util[_0x2398('0x85')](_0x2398('0x87'),encodeURIComponent(_0x595895)):'freeform=3');return uploadFile(_0xf6a7b6)['then'](function(_0x5647ca){return querystring[_0x2398('0xb')](_0x5647ca);});};exports['sestekNDA']=function(_0x3b2216,_0x547288){return sestek[_0x2398('0x88')](_0x3b2216,_0x547288)[_0x2398('0x2b')](function(_0x140066){logger['info'](JSON[_0x2398('0x44')](_0x140066));var _0x3f83d6={'speech':_0x140066['text'],'action':_0x140066[_0x2398('0x89')]?_0x140066[_0x2398('0x89')][_0x2398('0x8a')]:undefined,'actiondata':_0x140066[_0x2398('0x89')]?_0x140066[_0x2398('0x89')][_0x2398('0x8b')]:undefined};if(_0x140066[_0x2398('0x89')]&&_0x140066['channelData'][_0x2398('0x8c')]){return base64Decode(_0x140066[_0x2398('0x89')][_0x2398('0x8c')][_0x2398('0x8d')],path['resolve'](__dirname,_0x2398('0x26'),rs[_0x2398('0x27')](0x4)+'.wav'))[_0x2398('0x2b')](function(_0x22a7d5){_0x3f83d6['audiofile']=_0x22a7d5;return _0x3f83d6;});}return _0x3f83d6;});};exports[_0x2398('0x8e')]=function(){return __dirname;};
\ No newline at end of file
+var _0xcf3a=['error\x20convert','finish\x20to\x20convert','resolve','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','text:synthesize','tmp','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','googleDialogflow','result','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','endConversation','metadata','googleDialogflowV2','SessionsClient','sessionPath','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','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','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','url','parse','./aws','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','request\x20to\x20','info','finish\x20download\x20file','unlink','download\x20error','pipe','end','data'];(function(_0x3d0cfa,_0xab5877){var _0x309a17=function(_0x3340b0){while(--_0x3340b0){_0x3d0cfa['push'](_0x3d0cfa['shift']());}};_0x309a17(++_0xab5877);}(_0xcf3a,0x169));var _0xacf3=function(_0x674c53,_0x26294f){_0x674c53=_0x674c53-0x0;var _0x5cfb7a=_0xcf3a[_0x674c53];return _0x5cfb7a;};'use strict';var apiai=require(_0xacf3('0x0'));var BPromise=require(_0xacf3('0x1'));var dialogflow=require(_0xacf3('0x2'));var fs=require('fs');var http=require(_0xacf3('0x3'));var https=require('https');var md5=require(_0xacf3('0x4'));var path=require(_0xacf3('0x5'));var querystring=require(_0xacf3('0x6'));var rp=require(_0xacf3('0x7'));var rs=require(_0xacf3('0x8'));var sox=require('sox');var tts=require('google-tts-api');var urlParse=require(_0xacf3('0x9'))[_0xacf3('0xa')];var util=require('util');var aws=require(_0xacf3('0xb'));var google=require('./google');var sestek=require(_0xacf3('0xc'));var tilde=require(_0xacf3('0xd'));var logger=require(_0xacf3('0xe'))('agi');var ISPEECH_API=_0xacf3('0xf');function downloadFile(_0x3deefe,_0x45653b){return new BPromise(function(_0x598b2a,_0x5f598e){var _0x41f600=urlParse(_0x3deefe);var _0x301213=_0x41f600[_0xacf3('0x10')]===_0xacf3('0x11')?https:http;var _0x1ab0f2={'host':_0x41f600[_0xacf3('0x12')],'path':_0x41f600[_0xacf3('0x5')],'headers':{'user-agent':_0xacf3('0x13')}};_0x301213[_0xacf3('0x14')](_0x1ab0f2,function(_0x1c58b9){if(_0x1c58b9[_0xacf3('0x15')]!==0xc8){logger[_0xacf3('0x16')]('request\x20to\x20'+_0x3deefe+_0xacf3('0x17')+_0x1c58b9[_0xacf3('0x15')]+'\x20('+_0x1c58b9['statusMessage']+')');_0x5f598e(new Error(_0xacf3('0x18')+_0x3deefe+_0xacf3('0x17')+_0x1c58b9[_0xacf3('0x15')]+'\x20('+_0x1c58b9['statusMessage']+')'));return;}var _0x56d032=fs['createWriteStream'](_0x45653b);_0x56d032['on']('finish',function(){logger[_0xacf3('0x19')](_0xacf3('0x1a'));_0x56d032['close'](_0x598b2a);});_0x56d032['on'](_0xacf3('0x16'),function(_0x315139){fs[_0xacf3('0x1b')](_0x45653b);logger[_0xacf3('0x16')](_0xacf3('0x1c'),_0x315139);_0x5f598e(_0x315139);});_0x1c58b9[_0xacf3('0x1d')](_0x56d032);})['on']('error',function(_0x3d6ec2){logger['error'](_0x3d6ec2);_0x5f598e(_0x3d6ec2);})[_0xacf3('0x1e')]();});}function uploadFile(_0x1c454c){return new BPromise(function(_0x2bedbd,_0x316edc){var _0x36af50=urlParse(_0x1c454c);var _0x38c1c4=_0x36af50[_0xacf3('0x10')]===_0xacf3('0x11')?https:http;var _0x57e784={'host':_0x36af50[_0xacf3('0x12')],'path':_0x36af50[_0xacf3('0x5')],'headers':{'user-agent':_0xacf3('0x13')}};_0x38c1c4[_0xacf3('0x14')](_0x57e784,function(_0x22d031){if(_0x22d031[_0xacf3('0x15')]!==0xc8){_0x316edc(new Error(_0xacf3('0x18')+_0x1c454c+_0xacf3('0x17')+_0x22d031[_0xacf3('0x15')]+'\x20('+_0x22d031['statusMessage']+')'));return;}var _0x4e7211='';_0x22d031['on'](_0xacf3('0x1f'),function(_0x3c0fc7){_0x4e7211+=_0x3c0fc7;});_0x22d031['on']('end',function(){_0x2bedbd(_0x4e7211);});})['on']('error',function(_0x2426d0){_0x316edc(_0x2426d0);})[_0xacf3('0x1e')]();});}function convertFile(_0x1183f5,_0x232e40){return new BPromise(function(_0xff89d,_0x4f7b0f){var _0x4968ac=sox['transcode'](_0x1183f5,_0x232e40,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4968ac['on'](_0xacf3('0x16'),function(_0x12189c){logger[_0xacf3('0x16')](_0xacf3('0x20'),_0x12189c);_0x4f7b0f(_0x12189c);});_0x4968ac['on'](_0xacf3('0x1e'),function(){logger['info'](_0xacf3('0x21'));_0xff89d();});_0x4968ac['start']();});}function base64Decode(_0x459fbc,_0x1a4b45){var _0x1772af=path[_0xacf3('0x22')](__dirname,'tmp',rs[_0xacf3('0x23')](0x4)+_0xacf3('0x24'));fs[_0xacf3('0x25')](_0x1772af,_0x459fbc,_0xacf3('0x26'));return convertFile(_0x1772af,_0x1a4b45)[_0xacf3('0x27')](function(){try{fs[_0xacf3('0x1b')](_0x1772af);fs[_0xacf3('0x28')](_0x1a4b45,_0xacf3('0x29'));}catch(_0x36cd12){logger['error'](_0x36cd12);}return _0x1a4b45[_0xacf3('0x2a')]('.')[0x0];});}function base64Encode(_0x4c70b8){var _0x4e854d=fs[_0xacf3('0x2b')](_0x4c70b8);return new Buffer(_0x4e854d)[_0xacf3('0x2c')]('base64');}exports[_0xacf3('0x2d')]=function(_0x2bea52,_0x129b07,_0x230944,_0x2ed8ee,_0x53240c,_0x488723){var _0x96dd57,_0x993002;var _0x462b6c=_0xacf3('0x2e');var _0x5d9983=_0xacf3('0x2f')+_0x2bea52;var _0x238063={};if(_0x129b07==='ssml'){_0x238063[_0xacf3('0x30')]={'ssml':_0x230944};}else{_0x238063[_0xacf3('0x30')]={'text':_0x230944};};_0x238063[_0xacf3('0x31')]={'languageCode':_0x2ed8ee,'ssmlGender':_0x53240c};_0x238063[_0xacf3('0x32')]={'audioEncoding':_0xacf3('0x33'),'sampleRateHertz':0x1f40};var _0x315bbd={'url':_0x462b6c+_0xacf3('0x34')+_0x5d9983,'method':'POST','json':!![],'body':_0x238063};return rp(_0x315bbd)[_0xacf3('0x27')](function(_0x1612c1){return new BPromise(function(_0x2b9f5c,_0x505d48){_0x96dd57=path['resolve'](__dirname,_0xacf3('0x35'),rs['generate'](0x4)+_0xacf3('0x36'));var _0x33c1fa=Buffer[_0xacf3('0x37')](_0x1612c1[_0xacf3('0x38')],_0xacf3('0x26'));return fs[_0xacf3('0x39')](_0x96dd57,_0x33c1fa,function(_0x3cc458){_0x505d48(_0x3cc458);},function(_0x56cb55){fs[_0xacf3('0x28')](_0x96dd57,_0xacf3('0x29'));_0x2b9f5c(_0x56cb55);});});})[_0xacf3('0x27')](function(_0x4e3bad){_0x993002=path[_0xacf3('0x22')](__dirname,_0xacf3('0x35'),rs['generate'](0x4)+_0xacf3('0x24'));return convertFile(_0x96dd57,_0x993002);})['then'](function(){try{fs['unlink'](_0x96dd57);fs[_0xacf3('0x28')](_0x993002,_0xacf3('0x29'));}catch(_0x443901){logger['error'](_0x443901);}logger[_0xacf3('0x19')](_0xacf3('0x3a'),_0x993002[_0xacf3('0x2a')]('.')[0x0]);return _0x993002['split']('.')[0x0];});};exports['googleTTS']=function(_0x1d2537,_0x4b4869){var _0x3da0e4=_0xacf3('0x3b');var _0x4da67a,_0x5c4fa9;var _0x18979b;var _0x4bc6df={'encoding':_0xacf3('0x3c'),'method':_0xacf3('0x3d'),'timeout':0x2710,'url':_0x3da0e4,'headers':{'Content-Type':_0xacf3('0x3e')},'body':_0xacf3('0x3f')+encodeURIComponent(JSON[_0xacf3('0x40')]([[[_0xacf3('0x41'),JSON[_0xacf3('0x40')]([_0x1d2537,_0x4b4869||'en',![],'null']),null,'generic']]]))};return rp(_0x4bc6df)[_0xacf3('0x27')](function(_0x17ba87){try{_0x18979b=eval(_0x17ba87[_0xacf3('0x42')](0x5))[0x0][0x2];}catch(_0x30c525){throw new Error(_0xacf3('0x43')+_0x17ba87[_0xacf3('0x1f')]);}if(!_0x18979b){if(_0x1d2537['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xacf3('0x44')+_0x4b4869+_0xacf3('0x45'));}}try{_0x18979b=eval(_0x18979b)[0x0];}catch(_0x229f39){throw new Error(_0xacf3('0x43')+res[_0xacf3('0x1f')]);}const _0x36b8ce=_0x18979b;_0x4da67a=path[_0xacf3('0x22')](__dirname,'tmp',rs['generate'](0x4)+_0xacf3('0x36'));fs[_0xacf3('0x25')](_0x4da67a,_0x18979b,{'encoding':_0xacf3('0x26')});_0x5c4fa9=path[_0xacf3('0x22')](__dirname,_0xacf3('0x35'),rs[_0xacf3('0x23')](0x4)+'.wav');return convertFile(_0x4da67a,_0x5c4fa9);})[_0xacf3('0x27')](function(){try{fs[_0xacf3('0x1b')](_0x4da67a);fs[_0xacf3('0x28')](_0x5c4fa9,_0xacf3('0x29'));}catch(_0x1e128c){logger['error'](_0x1e128c);}logger[_0xacf3('0x19')]('goggleTTS\x20path',_0x5c4fa9[_0xacf3('0x2a')]('.')[0x0]);return _0x5c4fa9[_0xacf3('0x2a')]('.')[0x0];});};exports['googleASR']=function(_0x432cdf,_0x17a81b,_0x487da6){return google[_0xacf3('0x46')](_0x432cdf,_0x17a81b,_0x487da6)[_0xacf3('0x27')](function(_0x30ca3e){logger[_0xacf3('0x19')](_0x30ca3e[_0xacf3('0x47')]);return rp(_0x30ca3e);})['then'](function(_0x4bb0a1){var _0x509e7b='';var _0x597557=0x0;try{fs[_0xacf3('0x1b')](_0x432cdf);}catch(_0x47c724){logger['error'](_0x47c724);}if(_0x4bb0a1&&_0x4bb0a1[_0xacf3('0x48')]){_0x509e7b=_0x4bb0a1[_0xacf3('0x48')][_0xacf3('0x49')](function(_0x34e63c){return _0x34e63c&&_0x34e63c[_0xacf3('0x4a')][0x0]&&_0x34e63c[_0xacf3('0x4a')][0x0][_0xacf3('0x4b')]?_0x34e63c[_0xacf3('0x4a')][0x0][_0xacf3('0x4b')]:'';})[_0xacf3('0x4c')]('\x0a');_0x597557=_0x4bb0a1[_0xacf3('0x48')][_0xacf3('0x49')](function(_0x484697){return _0x484697&&_0x484697['alternatives'][0x0]&&_0x484697[_0xacf3('0x4a')][0x0][_0xacf3('0x4d')]?_0x484697[_0xacf3('0x4a')][0x0][_0xacf3('0x4d')]:0x0;})[_0xacf3('0x4c')]('\x0a');}logger[_0xacf3('0x19')](_0xacf3('0x4e'),_0x509e7b);logger[_0xacf3('0x19')]('googleASR\x20confidence',_0x597557);return{'transcript':_0x509e7b,'confidence':_0x597557};})[_0xacf3('0x4f')](function(_0x321fe0){logger[_0xacf3('0x16')](_0xacf3('0x50'),_0x321fe0[_0xacf3('0x15')],_0x321fe0[_0xacf3('0x51')],_0x321fe0[_0xacf3('0x52')]);});};exports[_0xacf3('0x53')]=function(_0x124882,_0x3918ee,_0x557d76,_0x5210fe){var _0x67294b=apiai(_0x3918ee,{'language':_0x5210fe||'en'});return _0x67294b['textRequest'](_0x557d76,{'sessionId':md5(_0x124882)})['then'](function(_0x3c1ec4){logger[_0xacf3('0x19')](JSON[_0xacf3('0x40')](_0x3c1ec4));return{'source':_0x3c1ec4[_0xacf3('0x54')]['source'],'resolvedQuery':_0x3c1ec4['result'][_0xacf3('0x55')],'action':_0x3c1ec4[_0xacf3('0x54')][_0xacf3('0x56')],'actionIncomplete':_0x3c1ec4[_0xacf3('0x54')][_0xacf3('0x57')],'speech':_0x3c1ec4[_0xacf3('0x54')][_0xacf3('0x58')]['speech'],'score':_0x3c1ec4[_0xacf3('0x54')][_0xacf3('0x59')],'statusCode':_0x3c1ec4[_0xacf3('0x5a')][_0xacf3('0x5b')],'endConversation':_0x3c1ec4[_0xacf3('0x54')]['metadata'][_0xacf3('0x5c')]||![],'isFallbackIntent':_0x3c1ec4[_0xacf3('0x54')][_0xacf3('0x5d')]['isFallbackIntent']};});};exports[_0xacf3('0x5e')]=function(_0x538258,_0x5692ad,_0x38f0da,_0x24118b,_0xd5b2f1,_0x4fad4e){var _0x1431a7=_0x24118b['replace'](/\\n/g,'\x0a');var _0x585d7c={'credentials':{'private_key':_0x1431a7,'client_email':_0x38f0da}};var _0x33952a=new dialogflow[(_0xacf3('0x5f'))](_0x585d7c);var _0x2adc14=_0x33952a[_0xacf3('0x60')](_0x5692ad,md5(_0x538258));var _0x55d3b7={'session':_0x2adc14,'queryInput':{'text':{'text':_0xd5b2f1,'languageCode':_0x4fad4e}}};return _0x33952a['detectIntent'](_0x55d3b7)[_0xacf3('0x27')](function(_0x447433){if(_0x447433&&_0x447433[_0xacf3('0x61')]){logger['info'](_0xacf3('0x62'),JSON[_0xacf3('0x40')](_0x447433));var _0x5a3efc=_0x447433[0x0];if(_0x5a3efc){var _0x5c71ff={'action':_0x5a3efc['queryResult'][_0xacf3('0x56')],'allRequiredParamsPresent':_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x64')],'endConversation':_0x5a3efc[_0xacf3('0x63')]['diagnosticInfo']&&_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x65')][_0xacf3('0x66')]?_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x65')][_0xacf3('0x66')][_0xacf3('0x67')][_0xacf3('0x68')]:![],'fulfillmentText':_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x69')],'intentName':_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x6a')]['name'],'intentDisplayName':_0x5a3efc['queryResult'][_0xacf3('0x6a')][_0xacf3('0x6b')],'isFallbackIntent':_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x6a')][_0xacf3('0x6c')],'languageCode':_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x6d')],'queryText':_0x5a3efc['queryResult']['queryText'],'responseId':_0x5a3efc['responseId'],'score':_0x5a3efc[_0xacf3('0x63')]['intentDetectionConfidence'],'speech':_0x5a3efc[_0xacf3('0x63')][_0xacf3('0x69')],'providerResponse':JSON['stringify'](_0x447433)};return _0x5c71ff;}}});};exports[_0xacf3('0x6e')]=function(_0x2793d1,_0x384a56,_0x23996b,_0x11d340){return tilde['asr'](_0x2793d1,_0x384a56,_0x23996b,_0x11d340)[_0xacf3('0x27')](function(_0x4d0961){try{fs['unlink'](_0x2793d1);}catch(_0x771ad9){logger[_0xacf3('0x16')](_0x771ad9);}logger[_0xacf3('0x19')](_0xacf3('0x6f'),_0x4d0961[_0xacf3('0x4b')]);logger[_0xacf3('0x19')](_0xacf3('0x70'),_0x4d0961['confidence']);return _0x4d0961;});};exports['awsPolly']=function(_0x50e8fb,_0x22fa7e,_0x3055b1,_0x5c22d1,_0x3cd424,_0x558077){var _0x481c74=path[_0xacf3('0x22')](__dirname,_0xacf3('0x35'),rs[_0xacf3('0x23')](0x4)+'.mp3');var _0x4ea1e5;return aws[_0xacf3('0x71')](_0x50e8fb,_0x22fa7e,_0x3055b1,_0x5c22d1,_0x3cd424,_0x558077,_0x481c74)[_0xacf3('0x27')](function(){_0x4ea1e5=path['resolve'](__dirname,_0xacf3('0x35'),rs[_0xacf3('0x23')](0x4)+_0xacf3('0x24'));return convertFile(_0x481c74,_0x4ea1e5);})[_0xacf3('0x27')](function(){try{fs['unlink'](_0x481c74);fs[_0xacf3('0x28')](_0x4ea1e5,_0xacf3('0x29'));}catch(_0x1bd10f){logger[_0xacf3('0x16')](_0x1bd10f);}return _0x4ea1e5['split']('.')[0x0];});};exports[_0xacf3('0x72')]=function(_0xc10f87,_0x1ca7c1,_0xe27f76,_0x5a36ad,_0x25f749,_0x47624a){return aws[_0xacf3('0x73')](_0xc10f87,_0x1ca7c1,_0xe27f76,_0x5a36ad,_0x25f749,_0x47624a)[_0xacf3('0x27')](function(_0x2a7c08){logger['info'](JSON[_0xacf3('0x40')](_0x2a7c08));return _0x2a7c08;});};exports[_0xacf3('0x74')]=function(_0x2c08ff,_0x4f9d49,_0x6c1aa2,_0x3fa2c0){var _0x55d5ad=util[_0xacf3('0x75')](_0xacf3('0x76'),ISPEECH_API,_0x2c08ff,encodeURIComponent(_0x4f9d49),_0x6c1aa2,_0x3fa2c0);var _0xc28010=path[_0xacf3('0x22')](__dirname,_0xacf3('0x35'),rs[_0xacf3('0x23')](0x4)+_0xacf3('0x36'));var _0x3a3c29;return downloadFile(_0x55d5ad,_0xc28010)['then'](function(){_0x3a3c29=path[_0xacf3('0x22')](__dirname,_0xacf3('0x35'),rs['generate'](0x4)+_0xacf3('0x24'));return convertFile(_0xc28010,_0x3a3c29);})[_0xacf3('0x27')](function(){try{fs[_0xacf3('0x1b')](_0xc28010);fs['chmodSync'](_0x3a3c29,_0xacf3('0x29'));}catch(_0x4cba7c){logger[_0xacf3('0x16')](_0x4cba7c);}return _0x3a3c29['split']('.')[0x0];});};exports[_0xacf3('0x77')]=function(_0x4a9cb4,_0xfc6946,_0x384dee,_0x144eef){var _0xe21d4b=util[_0xacf3('0x75')](_0xacf3('0x78'),ISPEECH_API,_0xfc6946,_0x384dee,base64Encode(_0x4a9cb4),_0x144eef?util[_0xacf3('0x75')]('model=%s',encodeURIComponent(_0x144eef)):_0xacf3('0x79'));return uploadFile(_0xe21d4b)[_0xacf3('0x27')](function(_0x4659c4){return querystring[_0xacf3('0xa')](_0x4659c4);});};exports[_0xacf3('0x7a')]=function(_0x482d5f,_0x17a11b){return sestek[_0xacf3('0x7b')](_0x482d5f,_0x17a11b)['then'](function(_0x3c1dfb){logger['info'](JSON[_0xacf3('0x40')](_0x3c1dfb));var _0x46b436={'speech':_0x3c1dfb[_0xacf3('0x7c')],'action':_0x3c1dfb['channelData']?_0x3c1dfb[_0xacf3('0x7d')]['CustomAction']:undefined,'actiondata':_0x3c1dfb[_0xacf3('0x7d')]?_0x3c1dfb[_0xacf3('0x7d')][_0xacf3('0x7e')]:undefined};if(_0x3c1dfb[_0xacf3('0x7d')]&&_0x3c1dfb['channelData'][_0xacf3('0x7f')]){return base64Decode(_0x3c1dfb[_0xacf3('0x7d')]['AudioFromTts'][_0xacf3('0x80')],path['resolve'](__dirname,_0xacf3('0x35'),rs[_0xacf3('0x23')](0x4)+'.wav'))[_0xacf3('0x27')](function(_0x2eab8c){_0x46b436[_0xacf3('0x81')]=_0x2eab8c;return _0x46b436;});}return _0x46b436;});};exports[_0xacf3('0x82')]=function(){return __dirname;};
\ No newline at end of file
index f4c1704..693c62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83ec=['./nda','exports'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x83ec,0xc6));var _0xc83e=function(_0x574fd0,_0x31c80e){_0x574fd0=_0x574fd0-0x0;var _0x91a113=_0x83ec[_0x574fd0];return _0x91a113;};var nda=require(_0xc83e('0x0'));module[_0xc83e('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x9e9d=['exports','./nda'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0x9e9d,0x173));var _0xd9e9=function(_0x3d433d,_0x41a3b9){_0x3d433d=_0x3d433d-0x0;var _0x11b302=_0x9e9d[_0x3d433d];return _0x11b302;};var nda=require(_0xd9e9('0x0'));module[_0xd9e9('0x1')]={'nda':nda};
\ No newline at end of file
index 4d7aa0c..149513a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb544=['stringify','../../../../../config/logger','agi','exports','POST','resolve','password','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','extension','text','Bearer\x20','project','body','ProjectName','channelData','custom_action','custom_action_data'];(function(_0x1ff296,_0x12ed09){var _0x7024a1=function(_0x4d6e8a){while(--_0x4d6e8a){_0x1ff296['push'](_0x1ff296['shift']());}};_0x7024a1(++_0x12ed09);}(_0xb544,0xd0));var _0x4b54=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0xb544[_0x342baa];return _0x1208f3;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0x4b54('0x0'))(_0x4b54('0x1'));module[_0x4b54('0x2')]=function(_0x3442ff,_0xc4666b){var _0x91b153={'method':_0x4b54('0x3'),'uri':url[_0x4b54('0x4')](_0xc4666b['ndauth_url'],'/token'),'form':{'grant_type':'password','username':_0xc4666b['username'],'password':_0xc4666b[_0x4b54('0x5')]},'json':!![]};return rp(_0x91b153)['then'](function(_0x2bf592){var _0x512bff={'method':_0x4b54('0x3'),'uri':url[_0x4b54('0x4')](_0xc4666b['ndassistant_url'],_0x4b54('0x6')),'body':{'type':_0xc4666b[_0x4b54('0x7')]||_0x4b54('0x8'),'channelId':_0x4b54('0x9'),'conversation':{'id':_0x3442ff[_0x4b54('0xa')]},'from':{'id':_0x3442ff[_0x4b54('0xb')],'name':_0x3442ff[_0x4b54('0xc')]},'recipient':{'id':_0x3442ff['dnid'],'name':_0x3442ff[_0x4b54('0xd')]},'text':_0xc4666b[_0x4b54('0xe')],'channelData':{}},'headers':{'Authorization':_0x4b54('0xf')+_0x2bf592['access_token']},'json':!![]};if(_0xc4666b[_0x4b54('0x10')]){_0x512bff[_0x4b54('0x11')]['channelData'][_0x4b54('0x12')]=_0xc4666b[_0x4b54('0x10')];}if(_0xc4666b['ndagenerate_audio']=='1'){_0x512bff[_0x4b54('0x11')][_0x4b54('0x13')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0xc4666b[_0x4b54('0x14')]){_0x512bff['body'][_0x4b54('0x13')]['CustomAction']=_0xc4666b[_0x4b54('0x14')];if(_0xc4666b['custom_action_data']){_0x512bff[_0x4b54('0x11')]['channelData']['CustomActionData']=_0xc4666b[_0x4b54('0x15')];}}logger['info'](JSON[_0x4b54('0x16')](_0x512bff));return rp(_0x512bff);});};
\ No newline at end of file
+var _0xaa1b=['access_token','project','body','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','exports','/token','password','POST','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','Bearer\x20'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xaa1b,0x123));var _0xbaa1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xaa1b[_0x20a584];return _0x4b41a8;};'use strict';var rp=require(_0xbaa1('0x0'));var url=require(_0xbaa1('0x1'));var logger=require(_0xbaa1('0x2'))('agi');module[_0xbaa1('0x3')]=function(_0x51926c,_0x2593cc){var _0x2b8de1={'method':'POST','uri':url['resolve'](_0x2593cc['ndauth_url'],_0xbaa1('0x4')),'form':{'grant_type':_0xbaa1('0x5'),'username':_0x2593cc['username'],'password':_0x2593cc[_0xbaa1('0x5')]},'json':!![]};return rp(_0x2b8de1)['then'](function(_0x364ce9){var _0x15b968={'method':_0xbaa1('0x6'),'uri':url[_0xbaa1('0x7')](_0x2593cc[_0xbaa1('0x8')],_0xbaa1('0x9')),'body':{'type':_0x2593cc['ndaactivity_type']||_0xbaa1('0xa'),'channelId':_0xbaa1('0xb'),'conversation':{'id':_0x51926c[_0xbaa1('0xc')]},'from':{'id':_0x51926c[_0xbaa1('0xd')],'name':_0x51926c[_0xbaa1('0xe')]},'recipient':{'id':_0x51926c[_0xbaa1('0xf')],'name':_0x51926c[_0xbaa1('0x10')]},'text':_0x2593cc[_0xbaa1('0x11')],'channelData':{}},'headers':{'Authorization':_0xbaa1('0x12')+_0x364ce9[_0xbaa1('0x13')]},'json':!![]};if(_0x2593cc[_0xbaa1('0x14')]){_0x15b968[_0xbaa1('0x15')]['channelData']['ProjectName']=_0x2593cc['project'];}if(_0x2593cc['ndagenerate_audio']=='1'){_0x15b968[_0xbaa1('0x15')][_0xbaa1('0x16')][_0xbaa1('0x17')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xbaa1('0x18')};}if(_0x2593cc[_0xbaa1('0x19')]){_0x15b968[_0xbaa1('0x15')][_0xbaa1('0x16')][_0xbaa1('0x1a')]=_0x2593cc[_0xbaa1('0x19')];if(_0x2593cc[_0xbaa1('0x1b')]){_0x15b968[_0xbaa1('0x15')][_0xbaa1('0x16')][_0xbaa1('0x1c')]=_0x2593cc[_0xbaa1('0x1b')];}}logger[_0xbaa1('0x1d')](JSON[_0xbaa1('0x1e')](_0x15b968));return rp(_0x15b968);});};
\ No newline at end of file
index 571277b..45b8170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad3c=['exports','./lib/api'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0xad3c,0x1d9));var _0xcad3=function(_0x2b764f,_0xdfae5b){_0x2b764f=_0x2b764f-0x0;var _0x1bd990=_0xad3c[_0x2b764f];return _0x1bd990;};'use strict';var asr=require(_0xcad3('0x0'));module[_0xcad3('0x1')]=function(_0x233ebe,_0x4bee46,_0x3f35d4,_0x97aafe){return asr(_0x233ebe,_0x4bee46,_0x3f35d4,_0x97aafe);};
\ No newline at end of file
+var _0x622b=['./lib/api','exports'];(function(_0x3149a2,_0x469791){var _0x31fbe7=function(_0x5583e4){while(--_0x5583e4){_0x3149a2['push'](_0x3149a2['shift']());}};_0x31fbe7(++_0x469791);}(_0x622b,0x90));var _0xb622=function(_0x4de3ae,_0x4c2d83){_0x4de3ae=_0x4de3ae-0x0;var _0x264e7c=_0x622b[_0x4de3ae];return _0x264e7c;};'use strict';var asr=require(_0xb622('0x0'));module[_0xb622('0x1')]=function(_0x40b4e5,_0x26e424,_0x539382,_0x3f5b56){return asr(_0x40b4e5,_0x26e424,_0x539382,_0x3f5b56);};
\ No newline at end of file
index 252054d..220e98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc4=['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','update','digest','unix','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Authentication\x20failed.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isObject','message','lodash','moment','crypto','../../../../../../config/logger','agi','exports'];(function(_0x15f670,_0xefce06){var _0x893c47=function(_0x4010a7){while(--_0x4010a7){_0x15f670['push'](_0x15f670['shift']());}};_0x893c47(++_0xefce06);}(_0x4bc4,0x17b));var _0x44bc=function(_0x37e25a,_0x1c3e42){_0x37e25a=_0x37e25a-0x0;var _0x250805=_0x4bc4[_0x37e25a];return _0x250805;};'use strict';var BPromise=require('bluebird');var _=require(_0x44bc('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x44bc('0x1'));var crypto=require(_0x44bc('0x2'));var logger=require(_0x44bc('0x3'))(_0x44bc('0x4'));module[_0x44bc('0x5')]=function(_0x3a02e9,_0x53e44f,_0x4c66c8,_0x413ae8){return new BPromise(function(_0xf66770,_0x130d2e){logger[_0x44bc('0x6')](_0x44bc('0x7'),_0x413ae8||_0x44bc('0x8'));var _0x3640d2=new WebSocket(_0x413ae8||_0x44bc('0x8'),{'perMessageDeflate':![]});var _0x4317e8='';var _0x36802e='0';var _0x283193='1';var _0x47eb8b=_0x44bc('0x9');function _0x11861b(_0x71b2c2){var _0x2c398d=crypto['createHash']('sha1');_0x2c398d[_0x44bc('0xa')](_0x71b2c2);return _0x2c398d[_0x44bc('0xb')]('hex');}function _0xfa4df6(){try{logger[_0x44bc('0x6')]('Open\x20Tilde\x20ASR\x20socket');var _0x551fcf=moment()[_0x44bc('0xc')]();var _0x5e6aef=_0x11861b(_0x551fcf+_0x53e44f+_0x4c66c8);_0x3640d2[_0x44bc('0xd')](JSON[_0x44bc('0xe')]({'appID':_0x53e44f,'timestamp':_0x551fcf,'appKey':_0x5e6aef}));var _0x330b43=fs[_0x44bc('0xf')](_0x3a02e9);_0x330b43['on'](_0x44bc('0x10'),function(_0xb6ab95){_0x3640d2['send'](_0xb6ab95);});_0x330b43['on'](_0x44bc('0x11'),function(){_0x3640d2[_0x44bc('0xd')](_0x44bc('0x12'));});}catch(_0x559c2e){logger[_0x44bc('0x13')](_0x44bc('0x14'),JSON[_0x44bc('0xe')](_0x559c2e));_0x3640d2[_0x44bc('0x15')]();}}function _0x1c4804(_0xdcbf57){try{if(_0xdcbf57){var _0x1f0c2a=JSON['parse'](_0xdcbf57);switch(_0x1f0c2a[_0x44bc('0x16')]){case 0x0:if(_0x1f0c2a[_0x44bc('0x17')]){if(_0x1f0c2a[_0x44bc('0x17')]['final']){logger[_0x44bc('0x6')](_0x44bc('0x18'),JSON[_0x44bc('0xe')](_0x1f0c2a[_0x44bc('0x17')][_0x44bc('0x19')]));_0x4317e8=_0x1f0c2a['result'][_0x44bc('0x19')][0x0][_0x44bc('0x1a')];_0x36802e=_0x1f0c2a['result']['hypotheses'][0x0]['likelihood'];_0x283193='0';_0x47eb8b=_0x44bc('0x1b');_0x3640d2[_0x44bc('0x15')]();}}break;case 0x1:logger[_0x44bc('0x6')](_0x44bc('0x9'));_0x283193='1';_0x47eb8b=_0x44bc('0x9');break;case 0x2:logger[_0x44bc('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x283193='2';_0x47eb8b=_0x44bc('0x1c');break;case 0x9:logger[_0x44bc('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x283193='9';_0x47eb8b='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x44bc('0x6')](_0x44bc('0x1d'));_0x283193='10';_0x47eb8b=_0x44bc('0x1d');break;case 0xb:logger[_0x44bc('0x6')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x283193='11';_0x47eb8b='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x150f05){logger[_0x44bc('0x13')](_0x44bc('0x1e'),JSON[_0x44bc('0xe')](_0x150f05));_0x3640d2[_0x44bc('0x15')]();}}function _0x4b9f18(){logger['info'](_0x44bc('0x1f'));_0xf66770({'transcript':_0x4317e8,'confidence':_0x36802e,'status':_0x283193,'status_message':_0x47eb8b});}function _0x18025b(_0x3a0ac4){logger[_0x44bc('0x13')](_0x44bc('0x20'));if(!_['isNil'](_0x3a0ac4)){logger['error'](_[_0x44bc('0x21')](_0x3a0ac4)?JSON['stringify'](_0x3a0ac4):_0x3a0ac4);}}_0x3640d2['on']('open',_0xfa4df6);_0x3640d2['on'](_0x44bc('0x22'),_0x1c4804);_0x3640d2['on']('close',_0x4b9f18);_0x3640d2['on']('error',_0x18025b);});};
\ No newline at end of file
+var _0x414f=['message','close','bluebird','moment','crypto','../../../../../../config/logger','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','createHash','sha1','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','EOS','error','Tilde\x20ASR\x20send\x20error','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','terminate','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','isObject','open'];(function(_0x54e0e3,_0xa3adba){var _0x213a9f=function(_0x31b885){while(--_0x31b885){_0x54e0e3['push'](_0x54e0e3['shift']());}};_0x213a9f(++_0xa3adba);}(_0x414f,0x128));var _0xf414=function(_0x321df4,_0x3efec5){_0x321df4=_0x321df4-0x0;var _0x50d06c=_0x414f[_0x321df4];return _0x50d06c;};'use strict';var BPromise=require(_0xf414('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xf414('0x1'));var crypto=require(_0xf414('0x2'));var logger=require(_0xf414('0x3'))(_0xf414('0x4'));module[_0xf414('0x5')]=function(_0x31dee7,_0x39bd1a,_0x314674,_0x3f1463){return new BPromise(function(_0x573bdb,_0x3b4f82){logger[_0xf414('0x6')](_0xf414('0x7'),_0x3f1463||_0xf414('0x8'));var _0xef7ecb=new WebSocket(_0x3f1463||_0xf414('0x8'),{'perMessageDeflate':![]});var _0x4f4b49='';var _0x52d982='0';var _0x850fa9='1';var _0x2b4784=_0xf414('0x9');function _0x553b94(_0x2e7708){var _0x354011=crypto[_0xf414('0xa')](_0xf414('0xb'));_0x354011['update'](_0x2e7708);return _0x354011[_0xf414('0xc')](_0xf414('0xd'));}function _0x59371b(){try{logger[_0xf414('0x6')](_0xf414('0xe'));var _0x1c40a9=moment()[_0xf414('0xf')]();var _0x20b827=_0x553b94(_0x1c40a9+_0x39bd1a+_0x314674);_0xef7ecb[_0xf414('0x10')](JSON[_0xf414('0x11')]({'appID':_0x39bd1a,'timestamp':_0x1c40a9,'appKey':_0x20b827}));var _0x30a3af=fs[_0xf414('0x12')](_0x31dee7);_0x30a3af['on'](_0xf414('0x13'),function(_0x22176e){_0xef7ecb['send'](_0x22176e);});_0x30a3af['on']('close',function(){_0xef7ecb[_0xf414('0x10')](_0xf414('0x14'));});}catch(_0x259c83){logger[_0xf414('0x15')](_0xf414('0x16'),JSON[_0xf414('0x11')](_0x259c83));_0xef7ecb['terminate']();}}function _0x1a69cc(_0x3193ef){try{if(_0x3193ef){var _0x4ab39d=JSON['parse'](_0x3193ef);switch(_0x4ab39d[_0xf414('0x17')]){case 0x0:if(_0x4ab39d[_0xf414('0x18')]){if(_0x4ab39d[_0xf414('0x18')][_0xf414('0x19')]){logger['info'](_0xf414('0x1a'),JSON[_0xf414('0x11')](_0x4ab39d[_0xf414('0x18')][_0xf414('0x1b')]));_0x4f4b49=_0x4ab39d['result'][_0xf414('0x1b')][0x0][_0xf414('0x1c')];_0x52d982=_0x4ab39d[_0xf414('0x18')][_0xf414('0x1b')][0x0][_0xf414('0x1d')];_0x850fa9='0';_0x2b4784=_0xf414('0x1e');_0xef7ecb[_0xf414('0x1f')]();}}break;case 0x1:logger[_0xf414('0x6')](_0xf414('0x9'));_0x850fa9='1';_0x2b4784=_0xf414('0x9');break;case 0x2:logger[_0xf414('0x6')](_0xf414('0x20'));_0x850fa9='2';_0x2b4784=_0xf414('0x20');break;case 0x9:logger[_0xf414('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x850fa9='9';_0x2b4784=_0xf414('0x21');break;case 0xa:logger['info']('Authentication\x20failed.');_0x850fa9='10';_0x2b4784=_0xf414('0x22');break;case 0xb:logger['info']('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x850fa9='11';_0x2b4784='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x2bdc4a){logger[_0xf414('0x15')](_0xf414('0x23'),JSON[_0xf414('0x11')](_0x2bdc4a));_0xef7ecb[_0xf414('0x1f')]();}}function _0x51b616(){logger[_0xf414('0x6')](_0xf414('0x24'));_0x573bdb({'transcript':_0x4f4b49,'confidence':_0x52d982,'status':_0x850fa9,'status_message':_0x2b4784});}function _0x3c50e9(_0x4295a1){logger[_0xf414('0x15')](_0xf414('0x25'));if(!_['isNil'](_0x4295a1)){logger[_0xf414('0x15')](_[_0xf414('0x26')](_0x4295a1)?JSON[_0xf414('0x11')](_0x4295a1):_0x4295a1);}}_0xef7ecb['on'](_0xf414('0x27'),_0x59371b);_0xef7ecb['on'](_0xf414('0x28'),_0x1a69cc);_0xef7ecb['on'](_0xf414('0x29'),_0x51b616);_0xef7ecb['on'](_0xf414('0x15'),_0x3c50e9);});};
\ No newline at end of file
index ab7b17a..8abf0a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4750=['exports','./asr'];(function(_0x15cf10,_0x1ef3b9){var _0x3c4194=function(_0x34006c){while(--_0x34006c){_0x15cf10['push'](_0x15cf10['shift']());}};_0x3c4194(++_0x1ef3b9);}(_0x4750,0x1e5));var _0x0475=function(_0x4be26a,_0x3c0886){_0x4be26a=_0x4be26a-0x0;var _0x2388b6=_0x4750[_0x4be26a];return _0x2388b6;};var asr=require(_0x0475('0x0'));module[_0x0475('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x6436=['./asr','exports'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0x6436,0x162));var _0x6643=function(_0x583bf0,_0x1694d5){_0x583bf0=_0x583bf0-0x0;var _0x5d72a1=_0x6436[_0x583bf0];return _0x5d72a1;};var asr=require(_0x6643('0x0'));module[_0x6643('0x1')]={'asr':asr};
\ No newline at end of file
index 39e0894..79c27c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03b3=['createServer','listen','listening','connection','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','exports','util','./error','127.0.0.1','call','emit','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x03b3,0x72));var _0x303b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03b3[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x303b('0x0'));var net=require('net');var EventEmitter=require('events')['EventEmitter'];var AGIError=require(_0x303b('0x1'));var AGIChannel=require('./channel');var AGIServer=function(_0x33fd69,_0x5b0fcc,_0x321cd5){var _0xf16e06=this,_0x33fd69=_0x33fd69||0x11dd,_0x5b0fcc=_0x5b0fcc||_0x303b('0x2'),_0x557d19=null,_0x216ee1=0x0;EventEmitter[_0x303b('0x3')](_0xf16e06);function _0x305536(){if(!_0x33fd69){_0xf16e06[_0x303b('0x4')](_0x303b('0x5'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x557d19=net[_0x303b('0x6')]();_0x557d19[_0x303b('0x7')](_0x33fd69,_0x5b0fcc);_0x557d19['on'](_0x303b('0x8'),function(){_0xf16e06[_0x303b('0x4')](_0x303b('0x8'));});_0x557d19['on'](_0x303b('0x9'),function(_0x208684){_0x557d19['getConnections'](function(_0x5f018f,_0xd2470f){if(_0x5f018f){_0xf16e06['emit']('error',new AGIError(_0x303b('0xa'),_0x5f018f));}else if(_0x321cd5&&_0x321cd5<0x0){_0xf16e06[_0x303b('0x4')](_0x303b('0x5'),new AGIError(_0x303b('0xb')));_0x208684[_0x303b('0xc')]();}else if(_0x321cd5&&_0x321cd5>0x0&&_0x321cd5<_0xd2470f){_0x216ee1+=0x1;_0xf16e06[_0x303b('0x4')](_0x303b('0x5'),new AGIError(_0x303b('0xd'),_0x216ee1));_0x208684[_0x303b('0xc')]();}else{var _0x227061=new AGIChannel(_0x208684);_0x227061['on'](_0x303b('0xe'),function(){_0xf16e06[_0x303b('0x4')](_0x303b('0x9'),_0x227061);});}});});_0x557d19['on']('error',function(_0x54a60f){_0xf16e06[_0x303b('0x4')](_0x303b('0x5'),new AGIError(_0x303b('0xa'),_0x54a60f[_0x303b('0xf')]));});_0x557d19['on'](_0x303b('0x10'),function(){_0xf16e06[_0x303b('0x4')](_0x303b('0x10'),new AGIError(_0x303b('0x11')));});}process[_0x303b('0x12')](function(){_0x305536();});};util['inherits'](AGIServer,EventEmitter);module[_0x303b('0x13')]=function(_0x323181,_0x472f69,_0x3c8616){return new AGIServer(_0x323181,_0x472f69,_0x3c8616);};
\ No newline at end of file
+var _0xd90e=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','ready','close','nextTick','exports','util','net','EventEmitter','./error','./channel','127.0.0.1','call','emit','error','createServer','listen','listening'];(function(_0x1dad95,_0x16914f){var _0x24c1df=function(_0x3e147e){while(--_0x3e147e){_0x1dad95['push'](_0x1dad95['shift']());}};_0x24c1df(++_0x16914f);}(_0xd90e,0x12f));var _0xed90=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd90e[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xed90('0x0'));var net=require(_0xed90('0x1'));var EventEmitter=require('events')[_0xed90('0x2')];var AGIError=require(_0xed90('0x3'));var AGIChannel=require(_0xed90('0x4'));var AGIServer=function(_0x38ecf0,_0x402d70,_0x31b664){var _0x597a23=this,_0x38ecf0=_0x38ecf0||0x11dd,_0x402d70=_0x402d70||_0xed90('0x5'),_0x484b2e=null,_0x327c56=0x0;EventEmitter[_0xed90('0x6')](_0x597a23);function _0x4f4f94(){if(!_0x38ecf0){_0x597a23[_0xed90('0x7')](_0xed90('0x8'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x484b2e=net[_0xed90('0x9')]();_0x484b2e[_0xed90('0xa')](_0x38ecf0,_0x402d70);_0x484b2e['on'](_0xed90('0xb'),function(){_0x597a23[_0xed90('0x7')]('listening');});_0x484b2e['on'](_0xed90('0xc'),function(_0x33d22d){_0x484b2e[_0xed90('0xd')](function(_0x9023ad,_0x469c56){if(_0x9023ad){_0x597a23[_0xed90('0x7')]('error',new AGIError(_0xed90('0xe'),_0x9023ad));}else if(_0x31b664&&_0x31b664<0x0){_0x597a23[_0xed90('0x7')]('error',new AGIError(_0xed90('0xf')));_0x33d22d[_0xed90('0x10')]();}else if(_0x31b664&&_0x31b664>0x0&&_0x31b664<_0x469c56){_0x327c56+=0x1;_0x597a23[_0xed90('0x7')](_0xed90('0x8'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x327c56));_0x33d22d[_0xed90('0x10')]();}else{var _0x31b218=new AGIChannel(_0x33d22d);_0x31b218['on'](_0xed90('0x11'),function(){_0x597a23[_0xed90('0x7')](_0xed90('0xc'),_0x31b218);});}});});_0x484b2e['on'](_0xed90('0x8'),function(_0xb1e48b){_0x597a23[_0xed90('0x7')](_0xed90('0x8'),new AGIError(_0xed90('0xe'),_0xb1e48b['code']));});_0x484b2e['on'](_0xed90('0x12'),function(){_0x597a23['emit'](_0xed90('0x12'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0xed90('0x13')](function(){_0x4f4f94();});};util['inherits'](AGIServer,EventEmitter);module[_0xed90('0x14')]=function(_0x2e2c1c,_0x228b3b,_0x3be38b){return new AGIServer(_0x2e2c1c,_0x228b3b,_0x3be38b);};
\ No newline at end of file
index c59bf12..48fd7d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb385=['awslex','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','recordFile','intKey','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appsecret','no\x20appsecret\x20configured','beep','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','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','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','no\x20queue\x20selected','queue_id','no\x20queue\x20found','XMCS-QUEUE','toLowerCase','QUEUE','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','getMailAccount','account_id','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','port','secure','auth','pass','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','getSmsAccount','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Skipped\x20Answer','project_id','no\x20subproject\x20selected','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','util','lodash','shelljs','randomstring','mustache','request-promise','../../config/logger','./scripts','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','getTrunk','getSound','getSoundById','save_name','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','query','Error\x20executing\x20query\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','callback_','random','isEmpty','lastName','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','exec','trim','replace','googleCloudTTS','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','MP3','googleTTS','google_tts_language','url','method','timeout','number','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','googleASR','google_asr_language','tildeASR','appid','clear','isString','recursiveNodeIndex','hasOwnProperty','isArray','length','saveRestApiResult','%s.%s','setVariable','replaceObjectAllVariables','replaceAllVariables','split','replaceAll','extra','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','result','noop','Executed\x20command\x20MRCPSynth\x20%s','grammar','no\x20grammar\x20configured','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','phone','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','MRCPSynth','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','MRCPRecog','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','getUser','sip_id','no\x20user\x20found','DIAL','opts','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20is\x20unreachable','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','audiofile','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','Executed\x20command\x20%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','test','hiddendigitsnum','generate','first','substr','goal','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable'];(function(_0x105cc3,_0x5a74cd){var _0x3ad922=function(_0x48387d){while(--_0x48387d){_0x105cc3['push'](_0x105cc3['shift']());}};_0x3ad922(++_0x5a74cd);}(_0xb385,0xa1));var _0x5b38=function(_0x4ab863,_0x3c2b6a){_0x4ab863=_0x4ab863-0x0;var _0x2949c0=_0xb385[_0x4ab863];return _0x2949c0;};'use strict';var fs=require('fs');var path=require(_0x5b38('0x0'));var util=require(_0x5b38('0x1'));var _=require(_0x5b38('0x2'));var sh=require(_0x5b38('0x3'));var odbc=require('odbc')();var rs=require(_0x5b38('0x4'));var moment=require('moment');var Mustache=require(_0x5b38('0x5'));var rp=require(_0x5b38('0x6'));var logger=require(_0x5b38('0x7'))('agi');var config=require('../../config/environment');var scripts=require(_0x5b38('0x8'));var FILES_PATH=_0x5b38('0x9');var recursiveMapAttributes=['rawHeaders',_0x5b38('0xa')];var verticesWithRetry=[_0x5b38('0xb'),_0x5b38('0xc'),_0x5b38('0xd')];var AGIVertices=function(_0x451e93,_0x10575a,_0x17f905){this[_0x5b38('0xe')]=_0x451e93;this[_0x5b38('0xf')]=_0x10575a;this[_0x5b38('0x10')]=_0x17f905;};AGIVertices[_0x5b38('0x11')][_0x5b38('0x12')]=function(_0x15e917,_0x171254){this[_0x5b38('0xf')][_0x5b38('0x13')](_0x15e917)[_0x5b38('0x14')](function(_0x54544b){_0x171254(null,_0x54544b?_0x54544b[_0x5b38('0x15')]:![]);})[_0x5b38('0x16')](function(_0x48ee5a){_0x171254(_0x48ee5a);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x17')]=function(_0x3edbce,_0x30fc8d){this[_0x5b38('0xf')][_0x5b38('0x18')](_0x3edbce)[_0x5b38('0x14')](function(_0x36776e){_0x30fc8d(null,_0x36776e?_0x36776e['name']:![]);})[_0x5b38('0x16')](function(_0x31d310){_0x30fc8d(_0x31d310);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x19')]=function(_0x821afb,_0x442678){this[_0x5b38('0xf')][_0x5b38('0x1a')](_0x821afb)['then'](function(_0x36bf31){_0x442678(null,_0x36bf31?_0x36bf31[_0x5b38('0x15')]:![]);})[_0x5b38('0x16')](function(_0x370c2f){_0x442678(_0x370c2f);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x1b')]=function(_0x5d180f,_0x5e5ec6){this[_0x5b38('0xf')][_0x5b38('0x1c')](_0x5d180f)['then'](function(_0x13110b){_0x5e5ec6(null,_0x13110b?_0x13110b['dsn']:![]);})['catch'](function(_0x6085df){_0x5e5ec6(_0x6085df);});};AGIVertices[_0x5b38('0x11')]['getUser']=function(_0x111fa5,_0x46a0b5){this['rpc']['getUserById'](_0x111fa5)[_0x5b38('0x14')](function(_0x6383b3){_0x46a0b5(null,_0x6383b3?_0x6383b3[_0x5b38('0x15')]:![]);})[_0x5b38('0x16')](function(_0x5a193a){_0x46a0b5(_0x5a193a);});};AGIVertices['prototype'][_0x5b38('0x1d')]=function(_0x33fdd8,_0x329d9c){this[_0x5b38('0xf')]['getTrunkById'](_0x33fdd8)[_0x5b38('0x14')](function(_0x25c1c0){_0x329d9c(null,_0x25c1c0?_0x25c1c0[_0x5b38('0x15')]:![]);})['catch'](function(_0x29e405){_0x329d9c(_0x29e405);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x1e')]=function(_0x3df5a0,_0x4d7984){var _0x2ecb5b=this;this['rpc'][_0x5b38('0x1f')](_0x3df5a0)['then'](function(_0x154f70){_0x4d7984(null,_0x154f70?_0x2ecb5b['getSoundPath'](_0x154f70[_0x5b38('0x20')]):![]);})[_0x5b38('0x16')](function(_0x3f51fd){_0x4d7984(_0x3f51fd);});};AGIVertices[_0x5b38('0x11')]['getMailAccount']=function(_0x1a4bfb,_0x1a3cdf){this['rpc']['getMailAccountById'](_0x1a4bfb)[_0x5b38('0x14')](function(_0x3d8707){_0x1a3cdf(null,_0x3d8707?_0x3d8707:![]);})[_0x5b38('0x16')](function(_0x2b6432){_0x1a3cdf(_0x2b6432);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x21')]=function(_0x172088,_0x41cbf5,_0x19187b){this[_0x5b38('0x10')][_0x5b38('0x21')](_0x172088,_0x41cbf5)[_0x5b38('0x14')](function(){_0x19187b(null);})[_0x5b38('0x16')](function(_0x2d43ad){_0x19187b(_0x2d43ad);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x22')]=function(_0x5dd52b,_0x44af56){this[_0x5b38('0xf')][_0x5b38('0x23')](_0x5dd52b)[_0x5b38('0x14')](function(_0xf625b7){if(_0xf625b7){if(_0xf625b7[_0x5b38('0x24')]){_0x44af56(null,[_0xf625b7[_0x5b38('0x25')]]);}else{_0x44af56(null,_[_0x5b38('0x26')](_0xf625b7[_0x5b38('0x27')],_0x5b38('0x25')));}}else{_0x44af56(null,![]);}})[_0x5b38('0x16')](function(_0x2c072b){_0x44af56(_0x2c072b);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x28')]=function(_0x166be0){return util[_0x5b38('0x29')](_0x5b38('0x2a'),FILES_PATH,_0x166be0);};AGIVertices[_0x5b38('0x11')][_0x5b38('0x2b')]=function(_0xa5eae0,_0x5db70f,_0x5917d8){odbc[_0x5b38('0x2c')](_0xa5eae0,function(_0x4c930d){if(_0x4c930d){logger[_0x5b38('0x2d')](_0x5b38('0x2e'),_0x4c930d);_0x5917d8(_0x4c930d);}else{logger[_0x5b38('0x2f')]('ODBC\x20connection\x20successfully');odbc[_0x5b38('0x30')](_0x5db70f,function(_0x837c77,_0x58f3a5){if(_0x837c77){logger['info'](_0x5b38('0x31'),_0x5db70f);_0x5917d8(_0x837c77);}else{logger[_0x5b38('0x2f')]('Query\x20executed\x20correctly\x20%s',_0x5db70f);odbc[_0x5b38('0x32')](function(_0x20a96c){if(_0x20a96c){logger['error'](_0x5b38('0x33'),_0x20a96c);}_0x5917d8(null,_0x58f3a5);});}});}});};AGIVertices[_0x5b38('0x11')]['getSmsAccount']=function(_0x329479,_0x327049){this['rpc']['getSmsAccountById'](_0x329479)['then'](function(_0x42a338){_0x327049(null,_0x42a338?_0x42a338:![]);})[_0x5b38('0x16')](function(_0x510ca2){_0x327049(_0x510ca2);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x34')]=function(_0x52d65a,_0x264de4){this[_0x5b38('0xf')][_0x5b38('0x34')](_0x52d65a)['then'](function(_0x33aa77){_0x264de4(null,_0x33aa77);})[_0x5b38('0x16')](function(_0x5b28c9){_0x264de4(_0x5b28c9);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x35')]=function(_0x2f6ea1,_0x102cf4,_0xa4ff78){this[_0x5b38('0xf')][_0x5b38('0x35')]({'uniqueid':this[_0x5b38('0xe')]['uniqueid'],'node':_0x2f6ea1[_0x5b38('0x36')],'application':_0x2f6ea1[_0x5b38('0x37')],'data':_0x102cf4||null,'project_name':this[_0x5b38('0xe')][_0x5b38('0x38')],'callerid':this[_0x5b38('0xe')][_0x5b38('0x39')]})[_0x5b38('0x14')](function(_0xb33095){if(_0xa4ff78){_0xa4ff78(null,_0xb33095);}})[_0x5b38('0x16')](function(_0x5d0385){if(_0xa4ff78){_0xa4ff78(_0x5d0385);}});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x3a')]=function(_0x401eab,_0x3670e8,_0x1b6bff,_0x28ed00){this[_0x5b38('0xf')][_0x5b38('0x3a')]({'uniqueid':this['channel'][_0x5b38('0x3b')],'callerid':this['channel'][_0x5b38('0x39')],'calleridname':this[_0x5b38('0xe')][_0x5b38('0x3c')],'context':this[_0x5b38('0xe')][_0x5b38('0x3d')],'extension':this[_0x5b38('0xe')][_0x5b38('0x3e')],'priority':this[_0x5b38('0xe')][_0x5b38('0x3f')],'accountcode':this[_0x5b38('0xe')][_0x5b38('0x40')],'dnid':this[_0x5b38('0xe')][_0x5b38('0x41')],'projectName':this[_0x5b38('0xe')]['arg_1'],'saveName':_0x3670e8,'filename':_0x401eab[_0x5b38('0x42')]||_0x3670e8,'savePath':_0x1b6bff})[_0x5b38('0x14')](function(_0xd5c6cd){_0x28ed00(null,_0xd5c6cd);})[_0x5b38('0x16')](function(_0x5cf4da){_0x28ed00(_0x5cf4da);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x43')]=function(_0x295219,_0x390376,_0x3ea9c0,_0x213d4e,_0x392dab){this[_0x5b38('0xf')]['createSquareMessage']({'uniqueid':this[_0x5b38('0xe')][_0x5b38('0x3b')],'body':_0x295219,'direction':_0x390376,'providerName':_0x3ea9c0,'providerResponse':_0x213d4e})[_0x5b38('0x14')](function(_0x4c3694){if(_0x392dab){_0x392dab(null,_0x4c3694);}})[_0x5b38('0x16')](function(_0xacff27){if(_0x392dab){_0x392dab(_0xacff27);}});};AGIVertices[_0x5b38('0x11')]['createCmContact']=function(_0x535e41,_0x5a20c8){this[_0x5b38('0xf')][_0x5b38('0x44')]({'firstName':_['isEmpty'](_0x535e41[_0x5b38('0x15')])||_[_0x5b38('0x45')](_0x535e41[_0x5b38('0x15')])?_0x5b38('0x46')+Math[_0x5b38('0x47')]():_0x535e41[_0x5b38('0x15')],'lastName':_[_0x5b38('0x48')](_0x535e41['lastName'])||_[_0x5b38('0x45')](_0x535e41[_0x5b38('0x49')])?null:_0x535e41[_0x5b38('0x49')],'phone':_0x535e41['phone'],'ListId':_0x535e41[_0x5b38('0x4a')],'scheduledat':_0x535e41[_0x5b38('0x4b')],'callbackUniqueid':this[_0x5b38('0xe')][_0x5b38('0x3b')],'tags':'callback','description':_0x5b38('0x4c')+_0x535e41['scheduledAt'][_0x5b38('0x4d')](),'priority':_0x535e41[_0x5b38('0x4e')]})[_0x5b38('0x14')](function(_0x6b4d78){_0x5a20c8(null,_0x6b4d78);})['catch'](function(_0x2741cd){_0x5a20c8(_0x2741cd);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x4f')]=function(_0x57d330,_0xab7375){this[_0x5b38('0xf')][_0x5b38('0x50')](_0x57d330)[_0x5b38('0x14')](function(_0x20434e){_0xab7375(null,_0x20434e?_0x20434e['name']:![]);})[_0x5b38('0x16')](function(_0x500592){_0xab7375(_0x500592);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x51')]=function(_0x22eed0,_0x11db0f,_0x446929){var _0x1c2ad7={'role':_0x5b38('0x52')};_0x1c2ad7[_0x22eed0]=this[_0x5b38('0xe')][_0x5b38('0x39')];this['rpc']['agentPause'](_0x1c2ad7,_0x11db0f,this[_0x5b38('0xe')][_0x5b38('0x3b')])['then'](function(_0x89238f){_0x446929(null,_[_0x5b38('0x45')](_0x89238f)?![]:!![]);})[_0x5b38('0x16')](function(_0x3ab822){logger[_0x5b38('0x2d')](_0x3ab822);_0x446929(null,![]);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x53')]=function(_0x40e5ba,_0x5c3e72){var _0x55318e={'role':_0x5b38('0x52')};_0x55318e[_0x40e5ba]=this['channel'][_0x5b38('0x39')];this[_0x5b38('0xf')][_0x5b38('0x53')](_0x55318e)[_0x5b38('0x14')](function(_0x3c82b8){_0x5c3e72(null,_['isNil'](_0x3c82b8)?![]:!![]);})['catch'](function(_0x242b2e){logger[_0x5b38('0x2d')](_0x242b2e);_0x5c3e72(null,![]);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x54')]=function(_0x44a5b4,_0x1e83d3){var _0x4b1d84={'role':'agent'};_0x4b1d84[_0x44a5b4]=this[_0x5b38('0xe')][_0x5b38('0x39')];this[_0x5b38('0xf')][_0x5b38('0x54')](_0x4b1d84)[_0x5b38('0x14')](function(_0x24fae4){_0x1e83d3(null,_[_0x5b38('0x45')](_0x24fae4)?![]:!![]);})[_0x5b38('0x16')](function(_0xc30fa1){logger['error'](_0xc30fa1);_0x1e83d3(null,![]);});};AGIVertices[_0x5b38('0x11')]['agentLogin']=function(_0x4127e2,_0x2105b6){var _0x483127={'role':'agent'};_0x483127[_0x4127e2]=this['channel'][_0x5b38('0x39')];var _0x43a239=_0x4127e2!=_0x5b38('0x55')?util[_0x5b38('0x29')](_0x5b38('0x56'),_0x5b38('0x57'),this['channel']['callerid']):undefined;this[_0x5b38('0xf')][_0x5b38('0x58')](_0x483127,_0x43a239)[_0x5b38('0x14')](function(_0x32ac91){_0x2105b6(null,_[_0x5b38('0x45')](_0x32ac91)?![]:!![]);})[_0x5b38('0x16')](function(_0x5a82ed){logger[_0x5b38('0x2d')](_0x5a82ed);_0x2105b6(null,![]);});};AGIVertices['prototype']['shellCommand']=function(_0x3732f7,_0x12c2c7){sh[_0x5b38('0x59')](_[_0x5b38('0x5a')](_0x3732f7),function(_0x47e3ad,_0x4a63e2){var _0x2674a3=_0x4a63e2[_0x5b38('0x5b')](/(\r\n|\n|\r)/gm,'');_0x12c2c7(null,_0x2674a3);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x5c')]=function(_0x3ba156,_0x4fbaaa){scripts[_0x5b38('0x5c')](_0x3ba156['apiKey'],_0x3ba156[_0x5b38('0x5d')]||_0x5b38('0x5e'),_0x3ba156[_0x5b38('0x5e')],_0x3ba156[_0x5b38('0x5f')]||_0x5b38('0x60'),_0x3ba156[_0x5b38('0x61')]||_0x5b38('0x62'),_0x3ba156['audioEncoding']||_0x5b38('0x63'))[_0x5b38('0x14')](function(_0x47a79b){_0x4fbaaa(null,_0x47a79b);})[_0x5b38('0x16')](function(_0x450551){_0x4fbaaa(_0x450551);});};AGIVertices['prototype'][_0x5b38('0x64')]=function(_0x595e81,_0x2f7e1a){scripts[_0x5b38('0x64')](_0x595e81[_0x5b38('0x5e')],_0x595e81[_0x5b38('0x65')]||'en',0x1)[_0x5b38('0x14')](function(_0x2fa2a1){_0x2f7e1a(null,_0x2fa2a1);})[_0x5b38('0x16')](function(_0x15913a){_0x2f7e1a(_0x15913a);});};AGIVertices[_0x5b38('0x11')]['restAPI']=function(_0x5c8379,_0x178bc2){var _0x41011f={'uri':_0x5c8379[_0x5b38('0x66')],'method':_0x5c8379[_0x5b38('0x67')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x5c8379[_0x5b38('0x68')])===_0x5b38('0x69')&&parseInt(_0x5c8379[_0x5b38('0x68')])>=0x1?parseInt(_0x5c8379[_0x5b38('0x68')])*0x3e8:0x5*0x3e8};if(_[_0x5b38('0x6a')]([_0x5b38('0x6b'),_0x5b38('0x6c')],_0x41011f[_0x5b38('0x67')][_0x5b38('0x6d')]())){try{_0x41011f[_0x5b38('0x6e')]=_0x5c8379[_0x5b38('0xa')]?JSON[_0x5b38('0x6f')](_0x5c8379[_0x5b38('0xa')]):{};}catch(_0x51c6f3){logger[_0x5b38('0x2d')](_0x5b38('0x70'),_0x51c6f3);}}try{_0x41011f[_0x5b38('0x71')]=_0x5c8379[_0x5b38('0x72')]?JSON[_0x5b38('0x6f')](_0x5c8379['rawHeaders']):{};}catch(_0x85a196){logger[_0x5b38('0x2d')](_0x5b38('0x73'),_0x85a196);}if(_0x5c8379[_0x5b38('0x74')]){try{var _0x5b1565=require(_0x5c8379['computedVariables'])[_0x5b38('0x75')](this,_0x41011f);_0x41011f['uri']=Mustache[_0x5b38('0x76')](_0x5c8379[_0x5b38('0x66')],_0x5b1565,{},['$$','$$']);if(_0x41011f[_0x5b38('0x71')]){_0x41011f[_0x5b38('0x71')]=JSON[_0x5b38('0x6f')](Mustache['render'](JSON[_0x5b38('0x77')](_0x41011f[_0x5b38('0x71')]),_0x5b1565,{},['$$','$$']));}if(_0x41011f[_0x5b38('0x6e')]){_0x41011f[_0x5b38('0x6e')]=JSON[_0x5b38('0x6f')](Mustache['render'](JSON[_0x5b38('0x77')](_0x41011f[_0x5b38('0x6e')]),_0x5b1565,{},['$$','$$']));}}catch(_0x3841ed){logger[_0x5b38('0x2d')](_0x5b38('0x78'),_0x3841ed);}}rp(_0x41011f)[_0x5b38('0x14')](function(_0xb52a0){var _0x318267={'statusCode':_0xb52a0[_0x5b38('0x79')]||0xc8,'statusMessage':_0xb52a0[_0x5b38('0x7a')]||'OK','headers':_0xb52a0[_0x5b38('0x71')]||{},'body':_0xb52a0[_0x5b38('0x6e')]||{}};_0x178bc2(null,_0x318267);})[_0x5b38('0x16')](function(_0xb2ef9c){var _0x5eb85a={'statusCode':_0xb2ef9c[_0x5b38('0x79')]||0x1f4,'statusMessage':_0xb2ef9c[_0x5b38('0x7b')]||_0x5b38('0x7c'),'headers':_0xb2ef9c[_0x5b38('0x7d')][_0x5b38('0x71')]||{},'body':_0xb2ef9c['options']['body']||{}};_0x178bc2(null,_0x5eb85a);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x7e')]=function(_0x4c35da,_0x3b4f72){scripts['googleDialogflow'](this[_0x5b38('0xe')][_0x5b38('0x3b')],_0x4c35da[_0x5b38('0x7f')],_0x4c35da[_0x5b38('0x5e')],_0x4c35da[_0x5b38('0x80')]||'en')[_0x5b38('0x14')](function(_0x4ad8da){_0x3b4f72(null,_0x4ad8da);})[_0x5b38('0x16')](function(_0x41bb4b){_0x3b4f72(_0x41bb4b);});};AGIVertices[_0x5b38('0x11')]['googleDialogflowV2']=function(_0xefb032,_0x1ac6f8){scripts[_0x5b38('0x81')](this[_0x5b38('0xe')][_0x5b38('0x3b')],_0xefb032[_0x5b38('0x82')],_0xefb032[_0x5b38('0x83')],_0xefb032[_0x5b38('0x84')],_0xefb032[_0x5b38('0x5e')],_0xefb032['dialogflowV2_language']||'en')[_0x5b38('0x14')](function(_0x714ee7){_0x1ac6f8(null,_0x714ee7);})['catch'](function(_0x25ed31){_0x1ac6f8(_0x25ed31);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x85')]=function(_0x1bd89e,_0x1f04df){scripts[_0x5b38('0x85')](this['channel'],_0x1bd89e)[_0x5b38('0x14')](function(_0x157248){_0x1f04df(null,_0x157248);})[_0x5b38('0x16')](function(_0x3db425){_0x1f04df(_0x3db425);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x86')]=function(_0x4daf0a,_0x56feaf){scripts[_0x5b38('0x86')](_0x4daf0a[_0x5b38('0x7f')],_0x4daf0a[_0x5b38('0x5e')],_0x4daf0a[_0x5b38('0x87')]||_0x5b38('0x60'),_0x4daf0a[_0x5b38('0x88')])[_0x5b38('0x14')](function(_0x4ea1a9){_0x56feaf(null,_0x4ea1a9);})['catch'](function(_0x9c7ad3){_0x56feaf(_0x9c7ad3);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x89')]=function(_0x36770e,_0x5f3557,_0x6cfefc){scripts[_0x5b38('0x89')](_0x5f3557,_0x36770e['key'],_0x36770e[_0x5b38('0x8a')]||_0x5b38('0x60'),this[_0x5b38('0x8b')](_0x36770e[_0x5b38('0x8c')])?_0x36770e[_0x5b38('0x8c')]:undefined)['then'](function(_0x4019b5){_0x6cfefc(null,_0x4019b5);})['catch'](function(_0x32d4f9){_0x6cfefc(_0x32d4f9);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x8d')]=function(_0xff57b7,_0x4356c5){scripts[_0x5b38('0x8d')](_0xff57b7[_0x5b38('0x8e')],_0xff57b7[_0x5b38('0x8f')],_0xff57b7[_0x5b38('0x90')],_0xff57b7[_0x5b38('0x91')]||_0x5b38('0x92'),_0xff57b7['text'],_0xff57b7[_0x5b38('0x93')]||_0x5b38('0x5e'))[_0x5b38('0x14')](function(_0x676e8c){_0x4356c5(null,_0x676e8c);})[_0x5b38('0x16')](function(_0x378a6e){_0x4356c5(_0x378a6e);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x94')]=function(_0x233812,_0x381131){scripts[_0x5b38('0x94')](this[_0x5b38('0xe')][_0x5b38('0x3b')],_0x233812[_0x5b38('0x8e')],_0x233812[_0x5b38('0x8f')],_0x233812[_0x5b38('0x95')],_0x233812['text'],_0x233812['aws_bot_name'])['then'](function(_0xe0652a){_0x381131(null,_0xe0652a);})[_0x5b38('0x16')](function(_0x1a6a27){_0x381131(_0x1a6a27);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x96')]=function(_0x19dee6,_0x188776,_0xfb8322){scripts[_0x5b38('0x96')](_0x188776,_0x19dee6[_0x5b38('0x7f')],_0x19dee6[_0x5b38('0x97')]||_0x5b38('0x60'))['then'](function(_0x369afd){_0xfb8322(null,_0x369afd);})[_0x5b38('0x16')](function(_0xc704e4){_0xfb8322(_0xc704e4);});};AGIVertices[_0x5b38('0x11')]['tildeASR']=function(_0x3e9fa1,_0x2c5a66,_0x190e52){scripts[_0x5b38('0x98')](_0x2c5a66,_0x3e9fa1[_0x5b38('0x99')],_0x3e9fa1['appsecret'],_0x3e9fa1['uri'])[_0x5b38('0x14')](function(_0x2fb58b){_0x190e52(null,_0x2fb58b);})[_0x5b38('0x16')](function(_0x11c383){_0x190e52(_0x11c383);});};AGIVertices[_0x5b38('0x11')][_0x5b38('0x9a')]=function(_0x19ebe7){var _0x20e27a=_[_0x5b38('0x6a')](verticesWithRetry,_0x19ebe7[_0x5b38('0x37')])?_0x19ebe7:_['clone'](_0x19ebe7);for(var _0x3d4fd4 in _0x20e27a){if(_0x20e27a['hasOwnProperty'](_0x3d4fd4)){if(_0x20e27a[_0x3d4fd4]&&_[_0x5b38('0x9b')](_0x20e27a[_0x3d4fd4])){if(_[_0x5b38('0x6a')](recursiveMapAttributes,_0x3d4fd4)){_0x20e27a[_0x3d4fd4]=this['replaceObjectAllVariables'](_0x20e27a[_0x3d4fd4]);}else{_0x20e27a[_0x3d4fd4]=this['replaceAllVariables'](_0x20e27a[_0x3d4fd4]);}}}}return _0x20e27a;};AGIVertices[_0x5b38('0x11')][_0x5b38('0x9c')]=function(_0xb8fbf){for(var _0x37ced8 in _0xb8fbf){if(_0xb8fbf[_0x5b38('0x9d')](_0x37ced8)){if(_['isPlainObject'](_0xb8fbf[_0x37ced8])){this[_0x5b38('0x9c')](_0xb8fbf[_0x37ced8]);}else if(_[_0x5b38('0x9e')](_0xb8fbf[_0x37ced8])){for(var _0x41af9c=0x0;_0x41af9c<_0xb8fbf[_0x37ced8][_0x5b38('0x9f')];_0x41af9c++){this[_0x5b38('0x9c')](_0xb8fbf[_0x37ced8][_0x41af9c]);}}else if(_[_0x5b38('0x9b')](_0xb8fbf[_0x37ced8])){_0xb8fbf[_0x37ced8]=this['replaceAllVariables'](_0xb8fbf[_0x37ced8]);}}}};AGIVertices[_0x5b38('0x11')][_0x5b38('0xa0')]=function(_0x36b237,_0x10a583){for(var _0xcb2a63 in _0x36b237){if(_0x36b237[_0x5b38('0x9d')](_0xcb2a63)){if(_['isPlainObject'](_0x36b237[_0xcb2a63])){if(!_['isEmpty'](_0x36b237[_0xcb2a63])){this[_0x5b38('0xa0')](_0x36b237[_0xcb2a63],util[_0x5b38('0x29')]('%s.%s',_0x10a583,_0xcb2a63));}}else if(_[_0x5b38('0x9e')](_0x36b237[_0xcb2a63])){for(var _0x2cb3b4=0x0;_0x2cb3b4<_0x36b237[_0xcb2a63]['length'];_0x2cb3b4++){this['saveRestApiResult'](_0x36b237[_0xcb2a63][_0x2cb3b4],util[_0x5b38('0x29')](_0x5b38('0xa1'),_0x10a583,_0xcb2a63+'['+_0x2cb3b4+']'));}}else{if(!_[_0x5b38('0x45')](_0x36b237[_0xcb2a63])){this['channel'][_0x5b38('0xa2')](util[_0x5b38('0x29')](_0x5b38('0xa1'),_0x10a583,_0xcb2a63),_0x36b237[_0xcb2a63]);}}}}};AGIVertices['prototype'][_0x5b38('0xa3')]=function(_0x31cd2e){try{var _0x135e5d=JSON[_0x5b38('0x6f')](_0x31cd2e);this['recursiveNodeIndex'](_0x135e5d);return JSON[_0x5b38('0x77')](_0x135e5d);}catch(_0x5660dd){return this[_0x5b38('0xa4')](_0x31cd2e);}};AGIVertices[_0x5b38('0x11')]['replaceAllVariables']=function(_0x2d55fd){var _0x4d8e10=_0x2d55fd[_0x5b38('0xa5')]('{');for(var _0x16cc4b=0x1;_0x16cc4b<_0x4d8e10['length'];_0x16cc4b+=0x1){var _0x9e832b=_0x4d8e10[_0x16cc4b][_0x5b38('0xa5')]('}');if(_0x9e832b[_0x5b38('0x9f')]>0x1){_0x2d55fd=_0x2d55fd[_0x5b38('0xa6')]('{'+_0x9e832b[0x0]+'}',this[_0x5b38('0xe')][_0x5b38('0x12')](_0x9e832b[0x0])[_0x5b38('0xa7')]||_0x9e832b[0x0]);}}if(_0x4d8e10[_0x5b38('0x9f')]===0x1){return _0x2d55fd[_0x5b38('0x4d')]();}return this[_0x5b38('0xa4')](_0x2d55fd);};AGIVertices[_0x5b38('0x11')]['getAndSetVariable']=function(_0x4b893f,_0x598cac){var _0x2e36a9=this[_0x5b38('0xe')][_0x5b38('0x12')](_0x4b893f);if(_0x2e36a9['result']===-0x1){return _0x2e36a9;}logger['info'](util[_0x5b38('0x29')](_0x5b38('0xa8'),_0x598cac,_0x2e36a9[_0x5b38('0xa7')]));return this[_0x5b38('0xe')][_0x5b38('0xa2')](_0x598cac,_0x2e36a9['extra']);};AGIVertices['prototype'][_0x5b38('0x8b')]=function(_0x1e1346){return _0x1e1346&&_0x1e1346!=='0'&&_0x1e1346!=='-1'&&_0x1e1346!=='';};AGIVertices[_0x5b38('0x11')][_0x5b38('0xa9')]=function(_0x1a6aba){this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x1a6aba,'-');_0x1a6aba[_0x5b38('0xaa')]=_0x1a6aba[_0x5b38('0xa9')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x5b38('0x11')]['mrcpsynth']=function(_0x55e03f){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xab'),_0x55e03f[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x55e03f['text'])){return this[_0x5b38('0xe')]['noop']('no\x20text\x20configured');}var _0x16c871='\x22'+_0x55e03f[_0x5b38('0x5e')]+'\x22';if(this[_0x5b38('0x8b')](_0x55e03f[_0x5b38('0x7d')])){_0x16c871+=','+_0x55e03f[_0x5b38('0x7d')];}var _0x39d1f9=this['channel'][_0x5b38('0x59')]('MRCPSynth',_0x16c871);if(_0x39d1f9[_0x5b38('0xac')]===-0x1){return _0x39d1f9;}return this['channel'][_0x5b38('0xad')](util['format'](_0x5b38('0xae'),_0x16c871));};AGIVertices[_0x5b38('0x11')]['mrcprecog']=function(_0xd5a27e){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0xd5a27e[_0x5b38('0x36')]));if(!this['isConfigured'](_0xd5a27e[_0x5b38('0xaf')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xb0'));}var _0x11a18b=_0xd5a27e[_0x5b38('0xaf')];if(this['isConfigured'](_0xd5a27e[_0x5b38('0x7d')])){_0x11a18b+=','+_0xd5a27e[_0x5b38('0x7d')];}var _0xb721b3=this[_0x5b38('0xe')][_0x5b38('0x59')]('MRCPRecog',_0x11a18b);if(_0xb721b3[_0x5b38('0xac')]===-0x1){return _0xb721b3;}var _0x283a57=this[_0x5b38('0xb1')](_0x5b38('0xb2'),_0x5b38('0xb3'));if(_0x283a57['result']===-0x1){return _0x283a57;}var _0x21b225=this[_0x5b38('0xb1')](_0x5b38('0xb4'),_0x5b38('0xb5'));if(_0x21b225[_0x5b38('0xac')]===-0x1){return _0x21b225;}var _0x3c2a71=this['getAndSetVariable']('RECOG_INSTANCE()',_0x5b38('0xb6'));if(_0x3c2a71[_0x5b38('0xac')]===-0x1){return _0x3c2a71;}return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xb7'),_0x11a18b));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xb8')]=function(_0x4e0c13){logger['info'](util[_0x5b38('0x29')](_0x5b38('0xb9'),_0x4e0c13[_0x5b38('0x36')]));return this[_0x5b38('0xe')][_0x5b38('0xb8')]([_0x4e0c13[_0x5b38('0xba')],_0x4e0c13['args']]);};AGIVertices['prototype'][_0x5b38('0xbb')]=function(_0x117330){logger[_0x5b38('0x2f')](util['format'](_0x5b38('0xbc'),_0x117330[_0x5b38('0x36')]));if(this[_0x5b38('0x8b')](_0x117330['timeout'])){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xbd'),_0x117330['timeout']));var _0xf01f73=this[_0x5b38('0xe')]['wait'](_0x117330[_0x5b38('0x68')]);if(_0xf01f73[_0x5b38('0xac')]===-0x1){return _0xf01f73;}}return this['channel']['answer']();};AGIVertices['prototype'][_0x5b38('0xbe')]=function(_0xde0346){logger['info'](util[_0x5b38('0x29')](_0x5b38('0xbf'),_0xde0346['label']));if(!this[_0x5b38('0x8b')](_0xde0346['list_id'])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0xde0346,_0x5b38('0xc0'));}_0xde0346[_0x5b38('0x4b')]=moment();if(this[_0x5b38('0x8b')](_0xde0346[_0x5b38('0xc1')])){_0xde0346['scheduledAt']=moment()['add'](_0xde0346[_0x5b38('0xc1')],'minutes');}if(!this['isConfigured'](_0xde0346[_0x5b38('0x4e')])){_0xde0346[_0x5b38('0x4e')]=0x2;}this[_0x5b38('0x44')][_0x5b38('0x75')](this,_0xde0346);return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0xde0346[_0x5b38('0xc2')],_0xde0346[_0x5b38('0x4a')],_0xde0346[_0x5b38('0x4b')]));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xc3')]=function(_0xb70333){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xc4'),_0xb70333[_0x5b38('0x36')]));var _0x285621=this[_0x5b38('0xe')][_0x5b38('0x59')](_0xb70333[_0x5b38('0xc5')],_0xb70333[_0x5b38('0x7d')]);if(_0x285621[_0x5b38('0xac')]===-0x1){return _0x285621;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util['format'](_0x5b38('0xc6'),_0xb70333['application'],_0xb70333[_0x5b38('0x7d')]));};AGIVertices['prototype'][_0x5b38('0xc7')]=function(_0x59b1fa){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xc8'),_0x59b1fa[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x59b1fa['text'])){return this['channel']['noop'](_0x5b38('0xc9'));}var _0x964ddd='\x22'+_0x59b1fa['text']+'\x22';if(this[_0x5b38('0x8b')](_0x59b1fa[_0x5b38('0x7d')])){_0x964ddd+=','+_0x59b1fa['options'];}var _0x48f1e5=this[_0x5b38('0xe')][_0x5b38('0x59')]('MRCPSynth',_0x964ddd);if(_0x48f1e5[_0x5b38('0xac')]===-0x1){return _0x48f1e5;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('Executed\x20command\x20MRCPSynth\x20%s',_0x964ddd));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xca')]=function(_0x4e59df){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xcb'),_0x4e59df[_0x5b38('0x36')]));if(!this['isConfigured'](_0x4e59df[_0x5b38('0x5e')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xc9'));}var _0x3f43af='\x22'+_0x4e59df[_0x5b38('0x5e')]+'\x22';if(this[_0x5b38('0x8b')](_0x4e59df[_0x5b38('0x7d')])){_0x3f43af+=','+_0x4e59df['options'];}var _0x1fb4a1=this['channel'][_0x5b38('0x59')](_0x5b38('0xcc'),_0x3f43af);if(_0x1fb4a1[_0x5b38('0xac')]===-0x1){return _0x1fb4a1;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xae'),_0x3f43af));};AGIVertices[_0x5b38('0x11')]['lumenvoxasr']=function(_0x1c0c44){logger['info'](util[_0x5b38('0x29')](_0x5b38('0xcd'),_0x1c0c44[_0x5b38('0x36')]));if(!this['isConfigured'](_0x1c0c44[_0x5b38('0xaf')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xb0'));}var _0x4ca075=_0x1c0c44[_0x5b38('0xaf')];if(this[_0x5b38('0x8b')](_0x1c0c44[_0x5b38('0x7d')])){_0x4ca075+=','+_0x1c0c44[_0x5b38('0x7d')];}var _0xa7fd6d=this[_0x5b38('0xe')][_0x5b38('0x59')](_0x5b38('0xce'),_0x4ca075);if(_0xa7fd6d['result']===-0x1){return _0xa7fd6d;}var _0x7e07b8=this[_0x5b38('0xb1')](_0x5b38('0xb2'),'LUMENVOX_ASR_CONFIDENCE');if(_0x7e07b8[_0x5b38('0xac')]===-0x1){return _0x7e07b8;}var _0x5a4258=this[_0x5b38('0xb1')](_0x5b38('0xb4'),_0x5b38('0xcf'));if(_0x5a4258['result']===-0x1){return _0x5a4258;}var _0x35eba3=this[_0x5b38('0xb1')](_0x5b38('0xd0'),_0x5b38('0xd1'));if(_0x35eba3['result']===-0x1){return _0x35eba3;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x4ca075));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xd2')]=function(_0x37444e){logger['info'](util[_0x5b38('0x29')](_0x5b38('0xd3'),_0x37444e[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x37444e['grammar'])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xb0'));}var _0x1a5024=_0x37444e[_0x5b38('0xaf')];if(this[_0x5b38('0x8b')](_0x37444e[_0x5b38('0x7d')])){_0x1a5024+=','+_0x37444e[_0x5b38('0x7d')];}var _0xefdd52=this[_0x5b38('0xe')][_0x5b38('0x59')](_0x5b38('0xce'),_0x1a5024);if(_0xefdd52[_0x5b38('0xac')]===-0x1){return _0xefdd52;}var _0x441446=this[_0x5b38('0xb1')](_0x5b38('0xb2'),_0x5b38('0xd4'));if(_0x441446[_0x5b38('0xac')]===-0x1){return _0x441446;}var _0x289dc0=this[_0x5b38('0xb1')](_0x5b38('0xb4'),'SESTEK_ASR_TRANSCRIPT');if(_0x289dc0[_0x5b38('0xac')]===-0x1){return _0x289dc0;}var _0x570da5=this['getAndSetVariable']('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x570da5[_0x5b38('0xac')]===-0x1){return _0x570da5;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xb7'),_0x1a5024));};AGIVertices[_0x5b38('0x11')]['database']=function(_0x28494d){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xd5'),_0x28494d[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x28494d['odbc_id'])){return this['channel'][_0x5b38('0x2d')](_0x28494d,_0x5b38('0xd6'));}var _0x55df33=this[_0x5b38('0x1b')][_0x5b38('0x75')](this,_0x28494d[_0x5b38('0xd7')]);if(!_0x55df33){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x28494d,_0x5b38('0xd8'));}if(!this[_0x5b38('0x8b')](_0x28494d['query'])){return this[_0x5b38('0xe')]['error'](_0x28494d,_0x5b38('0xd9'));}var _0x1b35ab=_0x28494d[_0x5b38('0x30')][_0x5b38('0x5b')](/(\r\n|\n|\r)/gm,'\x20');this[_0x5b38('0xe')]['noop'](util['format'](_0x5b38('0xda'),_0x1b35ab));var _0x42d6cf=this['getQueryOdbc'][_0x5b38('0x75')](this,_0x55df33,_0x1b35ab);this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x28494d,_0x1b35ab);if(!this[_0x5b38('0x8b')](_0x28494d[_0x5b38('0xdb')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xdc'));}var _0x1df049=this['getVariable']['sync'](this,_0x28494d[_0x5b38('0xdb')]);if(!_0x1df049){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x28494d,_0x5b38('0xdd'));}var _0x34b726=this;_0x42d6cf[_0x5b38('0xde')](function(_0x57a8c2,_0x59c0a2){Object['keys'](_0x57a8c2)[_0x5b38('0xde')](function(_0x2870d1){_0x34b726[_0x5b38('0xe')][_0x5b38('0xa2')](util['format'](_0x5b38('0xdf'),_0x1df049,_0x59c0a2,_0x2870d1),_0x57a8c2[_0x2870d1]);});});this[_0x5b38('0xe')][_0x5b38('0xa2')](util[_0x5b38('0x29')](_0x5b38('0xe0'),_0x1df049),_0x42d6cf['length']);return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xe1'),_0x1df049));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xe2')]=function(_0x5c202c){logger['debug'](util[_0x5b38('0x29')](_0x5b38('0xe3'),_0x5c202c[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x5c202c['sip_id'])){return this[_0x5b38('0xe')]['error'](_0x5c202c,_0x5b38('0xe4'));}var _0x58b565=this[_0x5b38('0xe5')][_0x5b38('0x75')](this,_0x5c202c[_0x5b38('0xe6')]);if(!_0x58b565){return this[_0x5b38('0xe')]['error'](_0x5c202c,_0x5b38('0xe7'));}var _0xd84c9f=this[_0x5b38('0xe')][_0x5b38('0x59')](_0x5b38('0xe8'),[util[_0x5b38('0x29')]('SIP/%s',_0x58b565),_0x5c202c[_0x5b38('0x68')],_0x5c202c[_0x5b38('0xe9')],_0x5c202c[_0x5b38('0x66')]]);if(_0xd84c9f['result']===-0x1){return _0xd84c9f;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xea')]=function(_0x561b0b){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x561b0b[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x561b0b[_0x5b38('0x7f')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xeb'));}if(!this[_0x5b38('0x8b')](_0x561b0b[_0x5b38('0x5e')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xc9'));}this[_0x5b38('0xe')][_0x5b38('0xec')]=!![];this['createSquareDetailsReport'](_0x561b0b);this[_0x5b38('0x43')](_0x561b0b[_0x5b38('0x5e')],'in','','');this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xed'),_0x561b0b[_0x5b38('0x5e')]));var _0x5f526c=this[_0x5b38('0x7e')]['sync'](this,_0x561b0b);if(_0x5f526c){for(var _0x5ea69e in _0x5f526c){if(_0x5f526c['hasOwnProperty'](_0x5ea69e)){this[_0x5b38('0xe')][_0x5b38('0xa2')](util['format'](_0x5b38('0xee'),_0x5ea69e['toUpperCase']()),_0x5f526c[_0x5ea69e]);}}this[_0x5b38('0x43')](_0x5f526c['speech'],_0x5b38('0xef'),_0x5b38('0xea'),'');return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xf0'),_0x5f526c[_0x5b38('0xf1')]));}return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x561b0b,_0x5b38('0xf2'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0xf3')]=function(_0x53d5f9){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0xf4'),_0x53d5f9[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x53d5f9[_0x5b38('0x82')])){return this[_0x5b38('0xe')]['noop']('no\x20project_id\x20configured');}if(!this['isConfigured'](_0x53d5f9['client_email'])){return this[_0x5b38('0xe')][_0x5b38('0xad')]('no\x20client_email\x20configured');}if(!this[_0x5b38('0x8b')](_0x53d5f9[_0x5b38('0x84')])){return this['channel'][_0x5b38('0xad')](_0x5b38('0xf5'));}if(!this[_0x5b38('0x8b')](_0x53d5f9[_0x5b38('0xf6')])){return this[_0x5b38('0xe')]['noop'](_0x5b38('0xf7'));}if(!this[_0x5b38('0x8b')](_0x53d5f9[_0x5b38('0x5e')])){return this['channel'][_0x5b38('0xad')]('no\x20text\x20configured');}this[_0x5b38('0xe')]['bot']=!![];this[_0x5b38('0x35')](_0x53d5f9);this[_0x5b38('0x43')](_0x53d5f9[_0x5b38('0x5e')],'in','','');this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xf8'),_0x53d5f9[_0x5b38('0x5e')]));var _0x3be102=this[_0x5b38('0x81')][_0x5b38('0x75')](this,_0x53d5f9);if(_0x3be102){for(var _0x4feb35 in _0x3be102){if(_0x3be102[_0x5b38('0x9d')](_0x4feb35)){if(_0x4feb35!==_0x5b38('0xf9')){this[_0x5b38('0xe')][_0x5b38('0xa2')](util[_0x5b38('0x29')](_0x5b38('0xee'),_0x4feb35['toUpperCase']()),_0x3be102[_0x4feb35]);}}}this[_0x5b38('0x43')](_0x3be102[_0x5b38('0xf1')],_0x5b38('0xef'),_0x5b38('0xf3'),_0x3be102[_0x5b38('0xf9')]);return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')]('DialogflowV2\x20Result\x20%s',_0x3be102['speech']));}return this['channel']['error'](_0x53d5f9,_0x5b38('0xfa'));};AGIVertices['prototype']['sesteknda']=function(_0x26724d){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x26724d[_0x5b38('0x36')]));if(!this['isConfigured'](_0x26724d[_0x5b38('0xfb')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xfc'));}if(!this[_0x5b38('0x8b')](_0x26724d[_0x5b38('0xfd')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xfe'));}if(!this[_0x5b38('0x8b')](_0x26724d[_0x5b38('0xff')])){return this[_0x5b38('0xe')]['noop']('no\x20password\x20configured');}if(!this['isConfigured'](_0x26724d['ndassistant_url'])){return this[_0x5b38('0xe')]['noop']('no\x20text\x20configured');}this[_0x5b38('0xe')]['bot']=!![];this['createSquareDetailsReport'](_0x26724d);this[_0x5b38('0x43')](_0x26724d['text'],'in','','');this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x100'),_0x26724d[_0x5b38('0x5e')]));var _0x669e6=this['sestekNDA'][_0x5b38('0x75')](this,_0x26724d);if(_0x669e6){for(var _0x3709f6 in _0x669e6){if(_0x669e6[_0x5b38('0x9d')](_0x3709f6)){this[_0x5b38('0xe')][_0x5b38('0xa2')](util['format'](_0x5b38('0x101'),_0x3709f6[_0x5b38('0x6d')]()),_0x669e6[_0x3709f6]);}}this[_0x5b38('0x43')](_0x669e6[_0x5b38('0xf1')],'out',_0x5b38('0x102'),'');if(_0x669e6[_0x5b38('0x103')]){this[_0x5b38('0xe')][_0x5b38('0xad')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x669e6[_0x5b38('0x103')]));var _0x56462d=this[_0x5b38('0xe')][_0x5b38('0x104')](_0x669e6['audiofile']);try{fs[_0x5b38('0x105')](_0x669e6[_0x5b38('0x103')]+_0x5b38('0x106'));}catch(_0x14a127){logger[_0x5b38('0x2d')](_0x14a127);}return _0x56462d;}else{return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x107'),_0x669e6['speech']));}}return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x26724d,_0x5b38('0x108'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x109')]=function(_0xd701a9){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x10a'),_0xd701a9[_0x5b38('0x36')]));return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x109'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x10b')]=function(_0x57d7cd){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x10c'),_0x57d7cd[_0x5b38('0x36')]));var _0x298eed='';if(_0x57d7cd[_0x5b38('0x10d')]){if(!this[_0x5b38('0x8b')](_0x57d7cd['trunk_id'])){return this[_0x5b38('0xe')]['error'](_0x57d7cd,_0x5b38('0x10e'));}else{var _0x1100db=parseInt(_0x57d7cd[_0x5b38('0x10d')],0xa);if(isNaN(_0x1100db)){_0x298eed=_0x57d7cd[_0x5b38('0x10d')];}else{_0x298eed=this[_0x5b38('0x1d')]['sync'](this,_0x57d7cd[_0x5b38('0x10d')]);if(!_0x298eed){return this[_0x5b38('0xe')]['error'](_0x57d7cd,_0x5b38('0x10f'));}}}}else if(_0x57d7cd[_0x5b38('0x110')]){_0x298eed=_0x57d7cd[_0x5b38('0x110')];}else{return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x57d7cd,'no\x20trunk\x20selected');}var _0x168827=this[_0x5b38('0xe')][_0x5b38('0x59')]('DIAL',[util[_0x5b38('0x29')](_0x5b38('0x111'),_0x298eed,_0x57d7cd['phone']),_0x57d7cd['timeout'],_0x57d7cd[_0x5b38('0xe9')],_0x57d7cd[_0x5b38('0x66')]]);if(_0x168827[_0x5b38('0xac')]===-0x1){return _0x168827;}return this[_0x5b38('0xe')]['noop'](util[_0x5b38('0x29')](_0x5b38('0x112'),_0x5b38('0xe8')));};AGIVertices['prototype'][_0x5b38('0x113')]=function(_0x4746d3){logger[_0x5b38('0x2f')](util['format']('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x4746d3['label']));return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x113'));};AGIVertices['prototype'][_0x5b38('0xc')]=function(_0x5ac210){logger[_0x5b38('0x2f')](util['format'](_0x5b38('0x114'),_0x5ac210[_0x5b38('0x36')]));if(_0x5ac210['retry']===0x0){return this[_0x5b38('0xa9')](_0x5ac210);}_0x5ac210[_0x5b38('0xaa')]-=0x1;if(!this[_0x5b38('0x8b')](_0x5ac210['file_id'])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x5ac210,_0x5b38('0x115'));}var _0x452d75=this[_0x5b38('0x1e')][_0x5b38('0x75')](this,_0x5ac210[_0x5b38('0x116')]);if(!_0x452d75){return this['channel']['error'](_0x5ac210,_0x5b38('0x117'));}if(!this[_0x5b38('0x8b')](_0x5ac210[_0x5b38('0xdb')])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x5b38('0xdc'));}var _0x17bdca=this[_0x5b38('0xe')][_0x5b38('0x118')](_0x452d75,_0x5ac210[_0x5b38('0x119')],_0x5ac210[_0x5b38('0x11a')]);var _0x3de7d3=_0x17bdca['result']?_0x17bdca[_0x5b38('0xac')][_0x5b38('0x4d')]():'';logger['info'](_0x5b38('0x11b'),JSON['stringify'](_0x17bdca));if(_0x17bdca[_0x5b38('0xac')]===-0x1){this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x5ac210,_0x3de7d3);return _0x17bdca;}else if(_0x17bdca[_0x5b38('0xa7')]===_0x5b38('0x68')){_0x17bdca[_0x5b38('0xac')]=_0x3de7d3[_0x5b38('0x9f')]>=parseInt(_0x5ac210['mindigit'])?'x':'i';}else{_0x17bdca[_0x5b38('0xac')]=_0x3de7d3[_0x5b38('0x9f')]>=parseInt(_0x5ac210['mindigit'])&&_0x3de7d3[_0x5b38('0x9f')]<=parseInt(_0x5ac210[_0x5b38('0x11a')])?'x':'i';}var _0x42e9de=this[_0x5b38('0x12')][_0x5b38('0x75')](this,_0x5ac210[_0x5b38('0xdb')]);if(!_0x42e9de){return this['channel'][_0x5b38('0x2d')](_0x5ac210,_0x5b38('0xdd'));}this[_0x5b38('0xe')][_0x5b38('0xa2')](_0x42e9de,_0x3de7d3);if(this['isConfigured'](_0x5ac210['hiddendigitsnum'])){var _0x491606=parseInt(_0x5ac210[_0x5b38('0x11c')],0xa);var _0x3d4f83=rs[_0x5b38('0x11d')]({'charset':'*','length':_0x491606});var _0x4bfaf4=_0x3de7d3['length'];if(_0x4bfaf4>0x0){if(_0x4bfaf4>_0x491606){this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x5ac210,_0x5ac210['hiddendigitspos']===_0x5b38('0x11e')?_0x3d4f83+_0x3de7d3[_0x5b38('0x11f')](_0x491606):_0x3de7d3[_0x5b38('0x11f')](0x0,_0x4bfaf4-_0x491606)+_0x3d4f83);}else{this[_0x5b38('0x35')]['sync'](this,_0x5ac210,rs[_0x5b38('0x11d')]({'charset':'*','length':_0x4bfaf4}));}}else{this['createSquareDetailsReport'][_0x5b38('0x75')](this,_0x5ac210,'');}}else{this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x5ac210,_0x3de7d3);}return _0x17bdca;};AGIVertices[_0x5b38('0x11')][_0x5b38('0xd')]=function(_0x2774b8){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x2774b8[_0x5b38('0x36')]));return this[_0x5b38('0xc')](_0x2774b8);};AGIVertices[_0x5b38('0x11')][_0x5b38('0x120')]=function(_0x485faa){logger['info'](util['format']('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x485faa[_0x5b38('0x36')]));this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x485faa,_0x485faa['goalname']);return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('GOAL\x20%s',_0x485faa['goalname']));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x121')]=function(_0x597665){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x122'),_0x597665[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x597665['aws_access_key_id'])||!this['isConfigured'](_0x597665[_0x5b38('0x8f')])){return this[_0x5b38('0xe')][_0x5b38('0xad')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x5b38('0x8b')](_0x597665['text'])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xc9'));}this['channel'][_0x5b38('0xad')](util['format'](_0x5b38('0x123'),_0x597665[_0x5b38('0x5e')]));var _0x5f2b32=this[_0x5b38('0x8d')][_0x5b38('0x75')](this,_0x597665);if(_0x5f2b32){this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x124'),_0x5f2b32));var _0x2ae439=this[_0x5b38('0xe')][_0x5b38('0x104')](_0x5f2b32);try{fs['unlink'](_0x5f2b32+_0x5b38('0x106'));}catch(_0x742bf6){logger['error'](_0x742bf6);}return _0x2ae439;}return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x597665,_0x5b38('0x125'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x126')]=function(_0x15d1ad){logger[_0x5b38('0x2f')](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x15d1ad[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x15d1ad['aws_access_key_id'])||!this[_0x5b38('0x8b')](_0x15d1ad[_0x5b38('0x8f')])){return this[_0x5b38('0xe')]['noop'](_0x5b38('0x127'));}if(!this['isConfigured'](_0x15d1ad['aws_bot_name'])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x128'));}if(!this[_0x5b38('0x8b')](_0x15d1ad[_0x5b38('0x5e')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xc9'));}this[_0x5b38('0xe')]['bot']=!![];this['createSquareDetailsReport'](_0x15d1ad);this[_0x5b38('0x43')](_0x15d1ad[_0x5b38('0x5e')],'in','','');this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x129'),_0x15d1ad[_0x5b38('0x5e')]));var _0x5a7d0e=this['awsLex'][_0x5b38('0x75')](this,_0x15d1ad);if(_0x5a7d0e){for(var _0x542950 in _0x5a7d0e){if(_0x5a7d0e[_0x5b38('0x9d')](_0x542950)&&_[_0x5b38('0x9b')](_0x5a7d0e[_0x542950])){this[_0x5b38('0xe')]['setVariable'](util[_0x5b38('0x29')](_0x5b38('0x12a'),_0x542950[_0x5b38('0x6d')]()),_0x5a7d0e[_0x542950]);}}if(_[_0x5b38('0x45')](_0x5a7d0e[_0x5b38('0x7b')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x12b'));}else{this[_0x5b38('0x43')](_0x5a7d0e['message'],_0x5b38('0xef'),'amazonlex','');return this[_0x5b38('0xe')][_0x5b38('0xad')](util['format'](_0x5b38('0x12c'),_0x5a7d0e['message']));}}return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x15d1ad,_0x5b38('0x12d'));};AGIVertices[_0x5b38('0x11')]['googleasr']=function(_0xf88950){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x12e'),_0xf88950[_0x5b38('0x36')],_0xf88950[_0x5b38('0x68')]));if(!this[_0x5b38('0x8b')](_0xf88950['key'])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xeb'));}var _0x5d749c=_0x5b38('0x12f');var _0x3e74ee=util[_0x5b38('0x29')](_0x5b38('0x130'),FILES_PATH,rs[_0x5b38('0x11d')](0x4));var _0x95cdb2=util[_0x5b38('0x29')]('%s.%s',_0x3e74ee,_0x5d749c);var _0x27b394=!![];if(_0xf88950['beep']===_0x5b38('0x131')){_0x27b394=![];}var _0x3ccd22=this[_0x5b38('0xe')][_0x5b38('0x132')](_0x3e74ee,_0x5d749c,_0xf88950[_0x5b38('0x133')],_0xf88950[_0x5b38('0x68')],undefined,_0x27b394);if(_0x3ccd22[_0x5b38('0xac')]!==-0x1){this[_0x5b38('0xe')][_0x5b38('0xad')](util['format']('google\x20%s\x20file\x20created',_0x95cdb2));var _0x2df0f9=this[_0x5b38('0x96')][_0x5b38('0x75')](this,_0xf88950,_0x95cdb2);if(_0x2df0f9){for(var _0x253af6 in _0x2df0f9){if(_0x2df0f9[_0x5b38('0x9d')](_0x253af6)){this[_0x5b38('0xe')][_0x5b38('0xa2')](util['format']('GOOGLE_ASR_%s',_0x253af6[_0x5b38('0x6d')]()),_0x2df0f9[_0x253af6]);}}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('GoogleASR\x20Result\x20%s',JSON['stringify'](_0x2df0f9)));}}return _0x3ccd22;};AGIVertices[_0x5b38('0x11')][_0x5b38('0x134')]=function(_0x12fad1){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x135'),_0x12fad1[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x12fad1[_0x5b38('0x99')])){return this['channel'][_0x5b38('0xad')]('no\x20appid\x20configured');}if(!this[_0x5b38('0x8b')](_0x12fad1[_0x5b38('0x136')])){return this['channel'][_0x5b38('0xad')](_0x5b38('0x137'));}var _0x1bb7fa=_0x5b38('0x12f');var _0x566b72=util[_0x5b38('0x29')](_0x5b38('0x130'),FILES_PATH,rs[_0x5b38('0x11d')](0x4));var _0x53ea57=util[_0x5b38('0x29')](_0x5b38('0xa1'),_0x566b72,_0x1bb7fa);var _0x1d06f1=!![];if(_0x12fad1[_0x5b38('0x138')]===_0x5b38('0x131')){_0x1d06f1=![];}var _0x303bb3=this['channel']['recordFile'](_0x566b72,_0x1bb7fa,_0x12fad1[_0x5b38('0x133')],_0x12fad1[_0x5b38('0x68')],undefined,_0x1d06f1);if(_0x303bb3['result']!==-0x1){this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x139'),_0x53ea57));var _0x5b9485=this['tildeASR']['sync'](this,_0x12fad1,_0x53ea57);if(_0x5b9485){for(var _0x1bdf2b in _0x5b9485){if(_0x5b9485[_0x5b38('0x9d')](_0x1bdf2b)){this[_0x5b38('0xe')][_0x5b38('0xa2')](util[_0x5b38('0x29')](_0x5b38('0x13a'),_0x1bdf2b[_0x5b38('0x6d')]()),_0x5b9485[_0x1bdf2b]);}}return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x13b'),JSON[_0x5b38('0x77')](_0x5b9485)));}}return _0x303bb3;};AGIVertices[_0x5b38('0x11')]['gotoc']=function(_0xda8947){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x13c'),_0xda8947[_0x5b38('0x36')]));return this[_0x5b38('0xe')]['continueAt'](_0xda8947[_0x5b38('0x3d')],_0xda8947[_0x5b38('0x3e')],_0xda8947[_0x5b38('0x3f')]);};AGIVertices[_0x5b38('0x11')]['gotoif']=function(_0x544ef2){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x13d'),_0x544ef2[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x544ef2[_0x5b38('0x13e')])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x544ef2,_0x5b38('0x13f'));}try{var _0x5db866=eval(_0x544ef2[_0x5b38('0x13e')])?'true':_0x5b38('0x140');this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x141'),_0x544ef2[_0x5b38('0x13e')],_0x5db866));return{'code':0xc8,'result':_0x5db866};}catch(_0x493daf){return{'code':0xc8,'result':_0x5b38('0x140')};}};AGIVertices['prototype'][_0x5b38('0x142')]=function(_0x191c89){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x143'),_0x191c89['label']));if(!this[_0x5b38('0x8b')](_0x191c89[_0x5b38('0x144')])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x191c89,_0x5b38('0x145'));}var _0x49f934=this['getIntervals'][_0x5b38('0x75')](this,_0x191c89[_0x5b38('0x144')]);if(!_0x49f934){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x191c89,'no\x20intervals\x20found');}for(var _0x566f85=0x0;_0x566f85<_0x49f934[_0x5b38('0x9f')];_0x566f85+=0x1){var _0x3d1364=this[_0x5b38('0xe')][_0x5b38('0x12')](util[_0x5b38('0x29')](_0x5b38('0x146'),_0x49f934[_0x566f85]));if(_0x3d1364[_0x5b38('0xac')]===-0x1){return _0x3d1364;}logger['info'](util[_0x5b38('0x29')](_0x5b38('0x147'),_0x49f934[_0x566f85],_0x3d1364[_0x5b38('0xa7')]));if(_0x3d1364[_0x5b38('0xa7')]==='true'){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x147'),_0x49f934[_0x566f85],_0x5b38('0x148')));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('IFTIME\x20%s\x20%s',_0x49f934[_0x566f85],_0x5b38('0x148')));return{'code':0xc8,'result':'true'};}else{logger['info'](util[_0x5b38('0x29')](_0x5b38('0x147'),_0x49f934[_0x566f85],_0x5b38('0x140')));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('IFTIME\x20%s\x20%s',_0x49f934[_0x566f85],'false'));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x5b38('0x11')][_0x5b38('0x149')]=function(_0x47a41f){logger['info'](util['format'](_0x5b38('0x14a'),_0x47a41f[_0x5b38('0x36')]));return this['channel']['hangup']();};AGIVertices['prototype'][_0x5b38('0x14b')]=function(_0x46a2c5){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x14c'),_0x46a2c5[_0x5b38('0x36')]));if(!this['isConfigured'](_0x46a2c5['key'])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xeb'));}var _0x3cdf21=_0x5b38('0x12f');var _0x16ad18=util[_0x5b38('0x29')](_0x5b38('0x130'),FILES_PATH,rs[_0x5b38('0x11d')](0x4));var _0xb431b=util[_0x5b38('0x29')](_0x5b38('0xa1'),_0x16ad18,_0x3cdf21);var _0x4e8b46=!![];if(_0x46a2c5[_0x5b38('0x138')]==='NOBEEP'){_0x4e8b46=![];}var _0xe1fd29=this[_0x5b38('0xe')][_0x5b38('0x132')](_0x16ad18,_0x3cdf21,_0x46a2c5[_0x5b38('0x133')],_0x46a2c5[_0x5b38('0x68')],undefined,_0x4e8b46);if(_0xe1fd29['result']!==-0x1){this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('ispeech\x20%s\x20file\x20created',_0xb431b));var _0x8fcc55=this[_0x5b38('0x89')][_0x5b38('0x75')](this,_0x46a2c5,_0xb431b);if(_0x8fcc55){for(var _0x212358 in _0x8fcc55){if(_0x8fcc55[_0x5b38('0x9d')](_0x212358)){this[_0x5b38('0xe')][_0x5b38('0xa2')](util[_0x5b38('0x29')](_0x5b38('0x14d'),_0x212358[_0x5b38('0x6d')]()),_0x8fcc55[_0x212358]);}}return this[_0x5b38('0xe')][_0x5b38('0xad')](util['format'](_0x5b38('0x14e'),JSON[_0x5b38('0x77')](_0x8fcc55)));}}return _0xe1fd29;};AGIVertices[_0x5b38('0x11')][_0x5b38('0x14f')]=function(_0x32117f){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x150'),_0x32117f[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x32117f[_0x5b38('0x7f')])){return this[_0x5b38('0xe')][_0x5b38('0xad')]('no\x20key\x20configured');}if(!this[_0x5b38('0x8b')](_0x32117f[_0x5b38('0x5e')])){return this['channel'][_0x5b38('0xad')](_0x5b38('0xc9'));}this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x151'),_0x32117f[_0x5b38('0x5e')]));var _0x11e8c6=this[_0x5b38('0x86')][_0x5b38('0x75')](this,_0x32117f);if(_0x11e8c6){this[_0x5b38('0xe')]['noop'](util[_0x5b38('0x29')](_0x5b38('0x152'),_0x11e8c6));var _0x3d9662=this[_0x5b38('0xe')][_0x5b38('0x104')](_0x11e8c6,_0x32117f[_0x5b38('0x133')]);try{fs[_0x5b38('0x105')](_0x11e8c6+'.wav');}catch(_0x4fa446){logger['error'](_0x4fa446);}return _0x3d9662;}return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x32117f,_0x5b38('0x153'));};AGIVertices['prototype'][_0x5b38('0x154')]=function(_0xe149c5){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x155'),_0xe149c5[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0xe149c5[_0x5b38('0x156')])){return this[_0x5b38('0xe')]['error'](_0xe149c5,_0x5b38('0x157'));}logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x158'),this[_0x5b38('0xe')]['callerid'],_0xe149c5[_0x5b38('0x156')]));var _0x5aed10=this[_0x5b38('0x58')][_0x5b38('0x75')](this,_0xe149c5[_0x5b38('0x156')]);if(_0x5aed10){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x159'),this['channel'][_0x5b38('0x39')],_0xe149c5[_0x5b38('0x156')]));this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x5b38('0xe')]['callerid'],_0xe149c5[_0x5b38('0x156')]));return{'code':0xc8,'result':_0x5b38('0x15a')};}else{logger[_0x5b38('0x2f')](util['format'](_0x5b38('0x15b'),this['channel']['callerid'],_0xe149c5[_0x5b38('0x156')]));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x15b'),this[_0x5b38('0xe')]['callerid'],_0xe149c5['findBy']));return{'code':0xc8,'result':_0x5b38('0x15c')};}};AGIVertices['prototype']['logout']=function(_0x2941b4){logger['info'](util['format'](_0x5b38('0x15d'),_0x2941b4[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x2941b4['findBy'])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x2941b4,_0x5b38('0x157'));}logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x5b38('0xe')]['callerid'],_0x2941b4[_0x5b38('0x156')]));var _0x396959=this[_0x5b38('0x54')]['sync'](this,_0x2941b4[_0x5b38('0x156')]);if(_0x396959){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x5b38('0xe')][_0x5b38('0x39')],_0x2941b4[_0x5b38('0x156')]));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x159'),this[_0x5b38('0xe')]['callerid'],_0x2941b4[_0x5b38('0x156')]));return{'code':0xc8,'result':_0x5b38('0x15a')};}else{logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x15b'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x2941b4[_0x5b38('0x156')]));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x15b'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x2941b4[_0x5b38('0x156')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x5b38('0x11')]['math']=function(_0x2879c1){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x15e'),_0x2879c1[_0x5b38('0x36')]));if(!this['isConfigured'](_0x2879c1[_0x5b38('0x15f')])){return this[_0x5b38('0xe')]['error'](_0x2879c1,_0x5b38('0x160'));}this[_0x5b38('0xe')]['noop'](util[_0x5b38('0x29')](_0x5b38('0x161'),_0x2879c1[_0x5b38('0x15f')]));var _0x2077d0=eval(_0x2879c1[_0x5b38('0x15f')]);if(!this[_0x5b38('0x8b')](_0x2879c1['variable_id'])){return this[_0x5b38('0xe')][_0x5b38('0xad')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0xefd916=this['getVariable'][_0x5b38('0x75')](this,_0x2879c1['variable_id']);if(!_0xefd916){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x2879c1,_0x5b38('0xdd'));}if(_['isArray'](_0x2077d0)){var _0x4ddde0=this;_0x2077d0[_0x5b38('0xde')](function(_0x47a63d,_0x237444){_0x4ddde0[_0x5b38('0xe')]['setVariable'](util[_0x5b38('0x29')]('%s[%s]',_0xefd916,_0x237444),_0x47a63d);});return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x162'),_0xefd916));}else{return this['channel'][_0x5b38('0xa2')](_0xefd916,_0x2077d0);}};AGIVertices[_0x5b38('0x11')][_0x5b38('0xb')]=function(_0x20058f){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x163'),_0x20058f[_0x5b38('0x36')]));if(_0x20058f[_0x5b38('0xaa')]===0x0){return this['maxRetry'](_0x20058f);}_0x20058f['retry']-=0x1;if(!this['isConfigured'](_0x20058f[_0x5b38('0x116')])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x20058f,_0x5b38('0x115'));}var _0x3753ea=this[_0x5b38('0x1e')][_0x5b38('0x75')](this,_0x20058f['file_id']);if(!_0x3753ea){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x20058f,_0x5b38('0x117'));}var _0x20367a=this[_0x5b38('0xe')][_0x5b38('0x118')](_0x3753ea,_0x20058f[_0x5b38('0x119')],_0x20058f['digit']);var _0x381a79=_0x20367a[_0x5b38('0xac')];if(_0x20367a[_0x5b38('0xac')]===-0x1){this['createSquareDetailsReport'][_0x5b38('0x75')](this,_0x20058f,'-1');return _0x20367a;}else if(_0x20367a[_0x5b38('0xa7')]===_0x5b38('0x68')){_0x20367a[_0x5b38('0xac')]=_0x20367a[_0x5b38('0xac')][_0x5b38('0x9f')]>0x0?_0x20367a[_0x5b38('0xac')]:'t';}else if(_[_0x5b38('0x48')](_0x20367a[_0x5b38('0xac')])){_0x20367a['result']='#';_0x381a79='#';}if(!this[_0x5b38('0x8b')](_0x20058f[_0x5b38('0xdb')])){this[_0x5b38('0xe')][_0x5b38('0xad')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x712ed1=this[_0x5b38('0x12')][_0x5b38('0x75')](this,_0x20058f[_0x5b38('0xdb')]);if(!_0x712ed1){return this['channel']['error'](_0x20058f,_0x5b38('0xdd'));}this[_0x5b38('0xe')][_0x5b38('0xa2')](_0x712ed1,_0x381a79);}this[_0x5b38('0x35')]['sync'](this,_0x20058f,_0x381a79);return _0x20367a;};AGIVertices[_0x5b38('0x11')][_0x5b38('0xad')]=function(_0x1415ac){logger[_0x5b38('0x2f')](util['format'](_0x5b38('0x164'),_0x1415ac[_0x5b38('0x36')]));return this['channel'][_0x5b38('0xad')](_0x1415ac['output']||_0x1415ac[_0x5b38('0x36')]);};AGIVertices[_0x5b38('0x11')][_0x5b38('0x165')]=function(_0x3a940c){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x166'),_0x3a940c[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x3a940c[_0x5b38('0x156')])){return this['channel'][_0x5b38('0x2d')](_0x3a940c,_0x5b38('0x157'));}logger['info'](util['format'](_0x5b38('0x158'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x3a940c['findBy']));var _0xb8e2a5=this['getPause'][_0x5b38('0x75')](this,_0x3a940c['pause_id']);var _0x58192f=this[_0x5b38('0x51')][_0x5b38('0x75')](this,_0x3a940c[_0x5b38('0x156')],_0xb8e2a5);if(_0x58192f){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x159'),this['channel'][_0x5b38('0x39')],_0x3a940c[_0x5b38('0x156')]));this[_0x5b38('0xe')]['noop'](util['format'](_0x5b38('0x159'),this['channel'][_0x5b38('0x39')],_0x3a940c['findBy']));return{'code':0xc8,'result':_0x5b38('0x15a')};}else{logger['info'](util['format'](_0x5b38('0x15b'),this['channel']['callerid'],_0x3a940c[_0x5b38('0x156')]));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x159'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x3a940c[_0x5b38('0x156')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x5b38('0x11')][_0x5b38('0x167')]=function(_0x3cb48d){logger[_0x5b38('0x2f')](util['format'](_0x5b38('0x168'),_0x3cb48d['label']));if(!this[_0x5b38('0x8b')](_0x3cb48d[_0x5b38('0x116')])){return this['channel'][_0x5b38('0x2d')](_0x3cb48d,_0x5b38('0x115'));}var _0x365f79=this[_0x5b38('0x1e')][_0x5b38('0x75')](this,_0x3cb48d[_0x5b38('0x116')]);if(!_0x365f79){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x3cb48d,_0x5b38('0x117'));}var _0x569776=this[_0x5b38('0xe')][_0x5b38('0x59')](_0x5b38('0x169'),[_0x365f79,_0x3cb48d[_0x5b38('0xe9')]]);if(_0x569776[_0x5b38('0xac')]===-0x1){return _0x569776;}return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')]('Executed\x20command\x20%s\x20%s',_0x5b38('0x169'),_0x365f79));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x16a')]=function(_0x662c93){logger[_0x5b38('0x2f')](util['format']('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x662c93['label']));if(!this[_0x5b38('0x8b')](_0x662c93['queue_id'])){return this[_0x5b38('0xe')]['error'](_0x662c93,_0x5b38('0x16b'));}var _0x4e22a2='';var _0x5ea277=parseInt(_0x662c93[_0x5b38('0x16c')],0xa);if(isNaN(_0x5ea277)){_0x4e22a2=_0x662c93[_0x5b38('0x16c')];}else{_0x4e22a2=this[_0x5b38('0x17')][_0x5b38('0x75')](this,_0x662c93['queue_id']);if(!_0x4e22a2){return this[_0x5b38('0xe')]['error'](_0x662c93,_0x5b38('0x16d'));}}var _0x52d16d='';if(this[_0x5b38('0x8b')](_0x662c93[_0x5b38('0x116')])){var _0x35750c=this[_0x5b38('0x1e')][_0x5b38('0x75')](this,_0x662c93[_0x5b38('0x116')]);if(_0x35750c){_0x52d16d=_0x35750c;}}this['createSquareDetailsReport']['sync'](this,_0x662c93,_0x4e22a2);if(_0x662c93[_0x5b38('0xe9')]['indexOf']('x')<0x0){_0x662c93[_0x5b38('0xe9')]+='x';}if(_0x662c93[_0x5b38('0xe9')]['indexOf']('X')<0x0){_0x662c93[_0x5b38('0xe9')]+='X';}this[_0x5b38('0xe')]['setVariable'](_0x5b38('0x16e'),_0x4e22a2?_0x4e22a2[_0x5b38('0x16f')]():'');var _0x3f0175=this[_0x5b38('0xe')]['exec'](_0x5b38('0x170'),[_0x4e22a2,_0x662c93[_0x5b38('0xe9')],_0x662c93[_0x5b38('0x66')],_0x52d16d,_0x662c93[_0x5b38('0x68')],_0x662c93[_0x5b38('0xb8')],_0x662c93['macro'],_0x662c93[_0x5b38('0x171')],'',_0x662c93[_0x5b38('0x172')]]);if(_0x3f0175[_0x5b38('0xac')]===-0x1){return _0x3f0175;}return this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xc6'),'QUEUE',_0x4e22a2));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x173')]=function(_0x68df49){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x174'),_0x68df49[_0x5b38('0x36')]));var _0x551c69=_0x68df49[_0x5b38('0x175')]||'wav';var _0x588bfb=util[_0x5b38('0x29')](_0x5b38('0x176'),this['channel'][_0x5b38('0x3b')],rs['generate'](0x5));var _0x2a85b7=util[_0x5b38('0x29')](_0x5b38('0x177'),FILES_PATH,_0x588bfb,_0x551c69);var _0x2d15bd=util[_0x5b38('0x29')](_0x5b38('0x130'),FILES_PATH,_0x588bfb);this[_0x5b38('0x3a')]['sync'](this,_0x68df49,_0x588bfb,_0x2a85b7);this[_0x5b38('0xe')]['setVariable'](_0x5b38('0x178'),_0x588bfb);logger[_0x5b38('0x2f')](_0x5b38('0x179'),_0x2d15bd,_0x551c69,_0x68df49[_0x5b38('0x17a')],_0x68df49[_0x5b38('0x68')]);return this['channel'][_0x5b38('0x132')](_0x2d15bd,_0x551c69,_0x68df49[_0x5b38('0x17a')],_0x68df49[_0x5b38('0x68')],undefined,!![]);};AGIVertices[_0x5b38('0x11')]['restapi']=function(_0x2f97d9){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x17b'),_0x2f97d9[_0x5b38('0x36')]));if(!this['isConfigured'](_0x2f97d9[_0x5b38('0x66')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x17c'));}var _0x387704=this['restAPI']['sync'](this,_0x2f97d9);logger[_0x5b38('0x2f')](util['format']('Response:',util['inspect'](_0x387704,{'showHidden':![],'depth':null})));if(!this[_0x5b38('0x8b')](_0x2f97d9[_0x5b38('0xdb')])){return this['channel'][_0x5b38('0xad')](_0x5b38('0x17d'));}var _0x244478=this[_0x5b38('0x12')][_0x5b38('0x75')](this,_0x2f97d9[_0x5b38('0xdb')]);if(!_0x244478){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x2f97d9,_0x5b38('0xdd'));}this['channel'][_0x5b38('0xa2')](util[_0x5b38('0x29')]('%s_STATUS_CODE',_0x244478),_0x387704[_0x5b38('0x79')]?_0x387704[_0x5b38('0x79')]:'200');this['channel'][_0x5b38('0xa2')](util[_0x5b38('0x29')](_0x5b38('0x17e'),_0x244478),_0x387704[_0x5b38('0x7a')]?_0x387704[_0x5b38('0x7a')]:'OK');if(_0x387704[_0x5b38('0x6e')]){try{this[_0x5b38('0xa0')](_0x387704[_0x5b38('0x6e')],_0x244478);}catch(_0x2944ff){logger['error'](util[_0x5b38('0x29')](_0x5b38('0x17f'),_0x244478));}}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xe1'),_0x244478));};AGIVertices['prototype']['saydigits']=function(_0x1620e6){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x180'),_0x1620e6['label']));return this[_0x5b38('0xe')][_0x5b38('0x181')](_0x1620e6['digits'][_0x5b38('0x5b')](/\s+/g,''),_0x1620e6[_0x5b38('0x17a')]);};AGIVertices['prototype'][_0x5b38('0x182')]=function(_0x551db0){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x551db0['label']));return this['channel'][_0x5b38('0x183')](_0x551db0[_0x5b38('0x69')][_0x5b38('0x5b')](/\s+/g,''),_0x551db0['escape_digits']);};AGIVertices[_0x5b38('0x11')][_0x5b38('0x184')]=function(_0x584793){logger[_0x5b38('0x2f')](util['format'](_0x5b38('0x185'),_0x584793['label']));return this['channel']['sayPhonetic'](_0x584793[_0x5b38('0x5e')],_0x584793[_0x5b38('0x17a')]);};AGIVertices['prototype'][_0x5b38('0x186')]=function(_0x767841){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x767841[_0x5b38('0x36')]));if(!this['isConfigured'](_0x767841['account_id'])){return this[_0x5b38('0xe')][_0x5b38('0xad')]('no\x20mail\x20account\x20configured');}var _0x377d2c=this[_0x5b38('0x187')][_0x5b38('0x75')](this,_0x767841[_0x5b38('0x188')]);if(!_0x377d2c||!_0x377d2c[_0x5b38('0x189')]){return this['channel'][_0x5b38('0x2d')](_0x767841,'no\x20mail\x20account\x20found');}var _0x324d6f={'from':util[_0x5b38('0x29')](_0x5b38('0x18a'),_0x377d2c[_0x5b38('0x15')],_0x377d2c[_0x5b38('0x18b')]||_0x377d2c['Smtp'][_0x5b38('0x18c')]),'to':_0x767841['to']||'','cc':_0x767841['cc']||'','bcc':_0x767841[_0x5b38('0x18d')]||'','subject':_0x767841[_0x5b38('0x18e')],'html':_0x767841[_0x5b38('0x5e')],'text':_0x767841[_0x5b38('0x5e')]};var _0x4a4c05={'tls':{'rejectUnauthorized':![]}};if(_0x377d2c[_0x5b38('0x189')][_0x5b38('0x18f')]){_0x4a4c05[_0x5b38('0x18f')]=_0x377d2c[_0x5b38('0x189')][_0x5b38('0x18f')];}else{_0x4a4c05[_0x5b38('0x190')]=_0x377d2c[_0x5b38('0x189')][_0x5b38('0x190')];_0x4a4c05[_0x5b38('0x191')]=_0x377d2c[_0x5b38('0x189')][_0x5b38('0x191')];_0x4a4c05[_0x5b38('0x192')]=_0x377d2c[_0x5b38('0x189')][_0x5b38('0x192')];}if(_0x377d2c[_0x5b38('0x189')]['authentication']){_0x4a4c05[_0x5b38('0x193')]={'user':_0x377d2c[_0x5b38('0x189')]['user'],'pass':_0x377d2c[_0x5b38('0x189')][_0x5b38('0x194')]};}if(this[_0x5b38('0x8b')](_0x767841[_0x5b38('0x195')])){}logger[_0x5b38('0x196')](_0x5b38('0x197'),JSON[_0x5b38('0x77')](_0x324d6f));this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x767841,_0x767841[_0x5b38('0x188')]);this['channel'][_0x5b38('0xad')](util['format'](_0x5b38('0x198'),_0x377d2c[_0x5b38('0x15')]));this[_0x5b38('0x21')][_0x5b38('0x75')](this,_0x4a4c05,_0x324d6f);return this[_0x5b38('0xe')]['noop'](_0x5b38('0x199'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x19a')]=function(_0x3f28ad){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x19b'),_0x3f28ad[_0x5b38('0x36')]));return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x19c'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x19d')]=function(_0x497ccc){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x19e'),_0x497ccc[_0x5b38('0x36')]));if(!this['isConfigured'](_0x497ccc[_0x5b38('0x19f')])){return this['channel'][_0x5b38('0xad')]('no\x20sms\x20account\x20configured');}var _0xae7655=this[_0x5b38('0x1a0')][_0x5b38('0x75')](this,_0x497ccc[_0x5b38('0x19f')]);if(!_0xae7655){return this[_0x5b38('0xe')]['error'](_0x497ccc,'no\x20sms\x20account\x20found');}var _0x5b6ef1={'body':_0x497ccc[_0x5b38('0x1a1')],'phone':_0x497ccc['to']||'','SmsAccountId':_0xae7655['id']};logger[_0x5b38('0x196')](_0x5b38('0x1a2'),JSON['stringify'](_0x5b6ef1));this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x497ccc,_0x497ccc[_0x5b38('0x19f')]);this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x1a3'),_0xae7655[_0x5b38('0x15')]));this[_0x5b38('0x34')][_0x5b38('0x75')](this,_0x5b6ef1);return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x1a4'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x1a5')]=function(_0x3fc57f){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x1a6'),_0x3fc57f[_0x5b38('0x36')]));if(!this[_0x5b38('0x8b')](_0x3fc57f[_0x5b38('0xdb')])){return this['channel'][_0x5b38('0x2d')](_0x3fc57f,_0x5b38('0x1a7'));}var _0x18380b=this[_0x5b38('0x12')][_0x5b38('0x75')](this,_0x3fc57f[_0x5b38('0xdb')]);if(!_0x18380b){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x3fc57f,_0x5b38('0xdd'));}return this[_0x5b38('0xe')][_0x5b38('0xa2')](_0x18380b,_0x3fc57f[_0x5b38('0x1a8')]);};AGIVertices[_0x5b38('0x11')]['start']=function(_0xe553ac){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x1a9'),_0xe553ac[_0x5b38('0x36')]));this['channel'][_0x5b38('0xad')](_0x5b38('0x1aa'));if(_0xe553ac[_0x5b38('0xbb')]===_0x5b38('0x1ab')){this[_0x5b38('0xe')][_0x5b38('0xad')]('Answer');return this[_0x5b38('0xe')][_0x5b38('0xbb')]();}return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x1ac'));};AGIVertices['prototype']['subproject']=function(_0xd7e67f){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0xd7e67f['label']));if(!this[_0x5b38('0x8b')](_0xd7e67f[_0x5b38('0x1ad')])){return this['channel'][_0x5b38('0x2d')](_0xd7e67f,_0x5b38('0x1ae'));}var _0x51cd8c=this[_0x5b38('0x19')][_0x5b38('0x75')](this,_0xd7e67f[_0x5b38('0x1ad')]);if(!this[_0x5b38('0x8b')](_0x51cd8c)){return this['channel']['error'](_0xd7e67f,util[_0x5b38('0x29')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0xd7e67f[_0x5b38('0x1ad')]));}if(_0x51cd8c===this[_0x5b38('0xe')]['arg_1']){return this['channel'][_0x5b38('0x2d')](_0xd7e67f,_0x5b38('0x1af'));}this[_0x5b38('0x35')]['sync'](this,_0xd7e67f,_0x51cd8c);var _0x4ecf5e=this[_0x5b38('0xe')][_0x5b38('0x59')](_0x5b38('0x1b0'),util[_0x5b38('0x29')](_0x5b38('0x1b1'),config['agi'][_0x5b38('0x190')]||_0x5b38('0x1b2'),_0x51cd8c,this[_0x5b38('0xe')]['arg_1']));if(_0x4ecf5e['result']===-0x1){return _0x4ecf5e;}return this['channel']['noop'](util['format'](_0x5b38('0xc6'),_0x5b38('0x1b0'),_0x51cd8c));};AGIVertices['prototype'][_0x5b38('0x1b3')]=function(_0x5e8fea){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x1b4'),_0x5e8fea[_0x5b38('0x36')]));var _0x2ee16e=this[_0x5b38('0x1b5')][_0x5b38('0x75')](this,_0x5e8fea[_0x5b38('0xba')]);this[_0x5b38('0x35')][_0x5b38('0x75')](this,_0x5e8fea,_0x5e8fea['command']);if(this[_0x5b38('0x8b')](_0x5e8fea[_0x5b38('0xdb')])){var _0x4812b7=this['getVariable']['sync'](this,_0x5e8fea['variable_id']);if(_0x4812b7){this[_0x5b38('0xe')]['setVariable'](_0x4812b7,_0x2ee16e);return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x5e8fea[_0x5b38('0xba')],_0x4812b7));}}return this[_0x5b38('0xe')]['noop'](util[_0x5b38('0x29')](_0x5b38('0x1b6'),_0x5e8fea[_0x5b38('0xba')]));};AGIVertices['prototype'][_0x5b38('0x1b7')]=function(_0x599af2){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x1b8'),_0x599af2[_0x5b38('0x36')]));_0x599af2['text']=_0x599af2[_0x5b38('0x5e')][_0x5b38('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x5b38('0x8b')](_0x599af2['apiKey'])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0x1b9'));}if(!this['isConfigured'](_0x599af2[_0x5b38('0x5e')])){return this['channel'][_0x5b38('0xad')](_0x5b38('0xc9'));}this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x599af2[_0x5b38('0x5e')]));var _0x37ab1b=this[_0x5b38('0x5c')][_0x5b38('0x75')](this,_0x599af2);if(_0x37ab1b){this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x1ba'),_0x37ab1b));var _0x3ad924=this[_0x5b38('0xe')][_0x5b38('0x104')](_0x37ab1b);try{fs[_0x5b38('0x105')](_0x37ab1b+_0x5b38('0x106'));}catch(_0x1cf60c){logger[_0x5b38('0x2d')](_0x1cf60c);}return _0x3ad924;}return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x599af2,_0x5b38('0x1bb'));};AGIVertices[_0x5b38('0x11')][_0x5b38('0x1bc')]=function(_0x317bba){logger['info'](util[_0x5b38('0x29')](_0x5b38('0x1bd'),_0x317bba[_0x5b38('0x36')]));_0x317bba[_0x5b38('0x5e')]=_0x317bba['text'][_0x5b38('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x5b38('0x8b')](_0x317bba[_0x5b38('0x5e')])){return this[_0x5b38('0xe')][_0x5b38('0xad')](_0x5b38('0xc9'));}this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0x1be'),_0x317bba['text']));var _0x1ed0c4=this[_0x5b38('0x64')][_0x5b38('0x75')](this,_0x317bba);if(_0x1ed0c4){this['channel'][_0x5b38('0xad')](util[_0x5b38('0x29')]('Google\x20TTS\x20%s\x20file\x20created',_0x1ed0c4));var _0x4a2b0d=this[_0x5b38('0xe')][_0x5b38('0x104')](_0x1ed0c4);try{fs['unlink'](_0x1ed0c4+_0x5b38('0x106'));}catch(_0x1390cd){logger[_0x5b38('0x2d')](_0x1390cd);}return _0x4a2b0d;}return this['channel'][_0x5b38('0x2d')](_0x317bba,_0x5b38('0x1bf'));};AGIVertices['prototype']['unpause']=function(_0x1ffc77){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x1c0'),_0x1ffc77['label']));if(!this['isConfigured'](_0x1ffc77[_0x5b38('0x156')])){return this[_0x5b38('0xe')]['error'](_0x1ffc77,'no\x20find\x20by\x20configured');}logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x158'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x1ffc77[_0x5b38('0x156')]));var _0x3d3834=this[_0x5b38('0x53')][_0x5b38('0x75')](this,_0x1ffc77[_0x5b38('0x156')]);if(_0x3d3834){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x159'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x1ffc77[_0x5b38('0x156')]));this[_0x5b38('0xe')]['noop'](util[_0x5b38('0x29')](_0x5b38('0x159'),this[_0x5b38('0xe')][_0x5b38('0x39')],_0x1ffc77['findBy']));return{'code':0xc8,'result':_0x5b38('0x15a')};}else{logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x15b'),this['channel'][_0x5b38('0x39')],_0x1ffc77[_0x5b38('0x156')]));this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5b38('0xe')][_0x5b38('0x39')],_0x1ffc77['findBy']));return{'code':0xc8,'result':_0x5b38('0x15c')};}};AGIVertices[_0x5b38('0x11')][_0x5b38('0x1c1')]=function(_0x110f5b){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x1c2'),_0x110f5b['label']));var _0x37802f=this['channel'][_0x5b38('0x59')](_0x5b38('0x1c3'),[_0x110f5b['mailbox'],_0x110f5b[_0x5b38('0x7d')]]);if(_0x37802f[_0x5b38('0xac')]===-0x1){return _0x37802f;}return this[_0x5b38('0xe')][_0x5b38('0xad')](util[_0x5b38('0x29')](_0x5b38('0xc6'),'VOICEMAIL',_0x110f5b['mailbox']));};AGIVertices[_0x5b38('0x11')]['vswitch']=function(_0x5d6882){logger[_0x5b38('0x2f')](util[_0x5b38('0x29')](_0x5b38('0x1c4'),_0x5d6882[_0x5b38('0x36')]));if(!this['isConfigured'](_0x5d6882['variable_id'])){return this[_0x5b38('0xe')][_0x5b38('0x2d')](_0x5d6882,'no\x20variable\x20selected');}var _0x695dcd=this[_0x5b38('0x12')][_0x5b38('0x75')](this,_0x5d6882[_0x5b38('0xdb')]);if(!_0x695dcd){return this['channel'][_0x5b38('0x2d')](_0x5d6882,_0x5b38('0xdd'));}var _0x508d31=this[_0x5b38('0xe')][_0x5b38('0x12')](_0x695dcd);return{'code':0xc8,'result':_0x508d31[_0x5b38('0xa7')]?_0x508d31['extra']:'-'};};String['prototype'][_0x5b38('0xa6')]=function(_0x145448,_0x5a4c2a){return this[_0x5b38('0xa5')](_0x145448)[_0x5b38('0x1c5')](_0x5a4c2a);};module[_0x5b38('0x1c6')]=AGIVertices;
\ No newline at end of file
+var _0x48cb=['url','method','timeout','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','clear','clone','hasOwnProperty','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','isString','saveRestApiResult','%s.%s','setVariable','stringify','split','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','MRCPSynth','result','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','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','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','no\x20text\x20configured','lumenvoxasr','no\x20grammar\x20configured','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20is\x20unreachable','dialogflowV2','dialogflowV2_project_id','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','%s/recordings/%s','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','wav','beep','recordFile','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','EVAL\x20CONDITION\x20%s\x20%s','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','getIntervals','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','false','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','no\x20key\x20configured','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','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','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','file_id','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','no\x20queue\x20found','indexOf','QUEUE','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','getMailAccount','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','port','secure','auth','template_id','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','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','googleCloudTTS','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','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','replaceAll','join','path','util','lodash','shelljs','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','rawBody','menu','getdigits','rpc','prototype','getVariable','getVariableById','name','catch','getVoiceQueue','getVoiceQueueById','then','getSquareProject','getSquareProjectById','getSquareOdbcById','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccountById','sendMailMessage','mailRpc','getIntervalById','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','error','ODBC\x20connection\x20successfully','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','channel','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','arg_1','createSquareMessage','createCmContact','isNil','callback_','random','isEmpty','lastName','phone','list_id','scheduledAt','callback','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','exec','trim','replace','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','restAPI'];(function(_0x342299,_0x307e1c){var _0xf1dfd2=function(_0x1be4f0){while(--_0x1be4f0){_0x342299['push'](_0x342299['shift']());}};_0xf1dfd2(++_0x307e1c);}(_0x48cb,0x16f));var _0xb48c=function(_0x5f3819,_0x5a824e){_0x5f3819=_0x5f3819-0x0;var _0x2f6253=_0x48cb[_0x5f3819];return _0x2f6253;};'use strict';var fs=require('fs');var path=require(_0xb48c('0x0'));var util=require(_0xb48c('0x1'));var _=require(_0xb48c('0x2'));var sh=require(_0xb48c('0x3'));var odbc=require('odbc')();var rs=require(_0xb48c('0x4'));var moment=require(_0xb48c('0x5'));var Mustache=require(_0xb48c('0x6'));var rp=require(_0xb48c('0x7'));var logger=require(_0xb48c('0x8'))(_0xb48c('0x9'));var config=require(_0xb48c('0xa'));var scripts=require(_0xb48c('0xb'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=['rawHeaders',_0xb48c('0xc')];var verticesWithRetry=[_0xb48c('0xd'),_0xb48c('0xe'),'getsecretdigits'];var AGIVertices=function(_0x139bc0,_0x364496,_0x76c4c3){this['channel']=_0x139bc0;this[_0xb48c('0xf')]=_0x364496;this['mailRpc']=_0x76c4c3;};AGIVertices[_0xb48c('0x10')][_0xb48c('0x11')]=function(_0x5c3bc3,_0x176ee2){this['rpc'][_0xb48c('0x12')](_0x5c3bc3)['then'](function(_0x545810){_0x176ee2(null,_0x545810?_0x545810[_0xb48c('0x13')]:![]);})[_0xb48c('0x14')](function(_0x1be1db){_0x176ee2(_0x1be1db);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x15')]=function(_0x32732f,_0x40d263){this['rpc'][_0xb48c('0x16')](_0x32732f)[_0xb48c('0x17')](function(_0x386b47){_0x40d263(null,_0x386b47?_0x386b47[_0xb48c('0x13')]:![]);})[_0xb48c('0x14')](function(_0x531269){_0x40d263(_0x531269);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x18')]=function(_0x31609e,_0x3aab31){this[_0xb48c('0xf')][_0xb48c('0x19')](_0x31609e)[_0xb48c('0x17')](function(_0x1c6f1b){_0x3aab31(null,_0x1c6f1b?_0x1c6f1b[_0xb48c('0x13')]:![]);})[_0xb48c('0x14')](function(_0x382ec9){_0x3aab31(_0x382ec9);});};AGIVertices[_0xb48c('0x10')]['getSquareOdbc']=function(_0x48de36,_0x475aa5){this[_0xb48c('0xf')][_0xb48c('0x1a')](_0x48de36)['then'](function(_0x1e3f15){_0x475aa5(null,_0x1e3f15?_0x1e3f15['dsn']:![]);})[_0xb48c('0x14')](function(_0x3c7cca){_0x475aa5(_0x3c7cca);});};AGIVertices['prototype'][_0xb48c('0x1b')]=function(_0x23916b,_0x126845){this[_0xb48c('0xf')][_0xb48c('0x1c')](_0x23916b)['then'](function(_0x2d224c){_0x126845(null,_0x2d224c?_0x2d224c[_0xb48c('0x13')]:![]);})[_0xb48c('0x14')](function(_0x279b82){_0x126845(_0x279b82);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1d')]=function(_0x19dc05,_0x133cce){this[_0xb48c('0xf')][_0xb48c('0x1e')](_0x19dc05)['then'](function(_0x16f9a8){_0x133cce(null,_0x16f9a8?_0x16f9a8[_0xb48c('0x13')]:![]);})[_0xb48c('0x14')](function(_0x3153ce){_0x133cce(_0x3153ce);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1f')]=function(_0xf25727,_0x2d824e){var _0x51efad=this;this['rpc'][_0xb48c('0x20')](_0xf25727)[_0xb48c('0x17')](function(_0x21449e){_0x2d824e(null,_0x21449e?_0x51efad[_0xb48c('0x21')](_0x21449e[_0xb48c('0x22')]):![]);})['catch'](function(_0x14311d){_0x2d824e(_0x14311d);});};AGIVertices[_0xb48c('0x10')]['getMailAccount']=function(_0x47c60e,_0x26b600){this[_0xb48c('0xf')][_0xb48c('0x23')](_0x47c60e)[_0xb48c('0x17')](function(_0x48e9ec){_0x26b600(null,_0x48e9ec?_0x48e9ec:![]);})[_0xb48c('0x14')](function(_0x281021){_0x26b600(_0x281021);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x24')]=function(_0x119925,_0x3c008e,_0x381d9e){this[_0xb48c('0x25')][_0xb48c('0x24')](_0x119925,_0x3c008e)[_0xb48c('0x17')](function(){_0x381d9e(null);})[_0xb48c('0x14')](function(_0x53ae5b){_0x381d9e(_0x53ae5b);});};AGIVertices['prototype']['getIntervals']=function(_0x339349,_0x14dc95){this[_0xb48c('0xf')][_0xb48c('0x26')](_0x339349)[_0xb48c('0x17')](function(_0x59cffb){if(_0x59cffb){if(_0x59cffb['IntervalId']){_0x14dc95(null,[_0x59cffb[_0xb48c('0x27')]]);}else{_0x14dc95(null,_[_0xb48c('0x28')](_0x59cffb[_0xb48c('0x29')],'interval'));}}else{_0x14dc95(null,![]);}})[_0xb48c('0x14')](function(_0x222f4a){_0x14dc95(_0x222f4a);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x21')]=function(_0x405de0){return util[_0xb48c('0x2a')](_0xb48c('0x2b'),FILES_PATH,_0x405de0);};AGIVertices[_0xb48c('0x10')][_0xb48c('0x2c')]=function(_0x5efdd8,_0x4f57d0,_0x381989){odbc[_0xb48c('0x2d')](_0x5efdd8,function(_0x2ea88b){if(_0x2ea88b){logger[_0xb48c('0x2e')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x2ea88b);_0x381989(_0x2ea88b);}else{logger['info'](_0xb48c('0x2f'));odbc['query'](_0x4f57d0,function(_0x29d214,_0x111643){if(_0x29d214){logger[_0xb48c('0x30')](_0xb48c('0x31'),_0x4f57d0);_0x381989(_0x29d214);}else{logger['info'](_0xb48c('0x32'),_0x4f57d0);odbc[_0xb48c('0x33')](function(_0x341e48){if(_0x341e48){logger[_0xb48c('0x2e')](_0xb48c('0x34'),_0x341e48);}_0x381989(null,_0x111643);});}});}});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x35')]=function(_0x49bca2,_0x273d60){this[_0xb48c('0xf')]['getSmsAccountById'](_0x49bca2)[_0xb48c('0x17')](function(_0x505cfe){_0x273d60(null,_0x505cfe?_0x505cfe:![]);})[_0xb48c('0x14')](function(_0x32c261){_0x273d60(_0x32c261);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x36')]=function(_0x5cebd3,_0x5bb78f){this['rpc'][_0xb48c('0x36')](_0x5cebd3)[_0xb48c('0x17')](function(_0x46ba7f){_0x5bb78f(null,_0x46ba7f);})[_0xb48c('0x14')](function(_0x41c92d){_0x5bb78f(_0x41c92d);});};AGIVertices[_0xb48c('0x10')]['createSquareDetailsReport']=function(_0x3b2e28,_0xfd18ad,_0x1f9501){this[_0xb48c('0xf')][_0xb48c('0x37')]({'uniqueid':this['channel'][_0xb48c('0x38')],'node':_0x3b2e28[_0xb48c('0x39')],'application':_0x3b2e28[_0xb48c('0x3a')],'data':_0xfd18ad||null,'project_name':this[_0xb48c('0x3b')]['arg_1'],'callerid':this['channel'][_0xb48c('0x3c')]})[_0xb48c('0x17')](function(_0x53180e){if(_0x1f9501){_0x1f9501(null,_0x53180e);}})[_0xb48c('0x14')](function(_0x348abe){if(_0x1f9501){_0x1f9501(_0x348abe);}});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x3d')]=function(_0x573132,_0x361584,_0x4525c0,_0x847932){this[_0xb48c('0xf')][_0xb48c('0x3d')]({'uniqueid':this[_0xb48c('0x3b')][_0xb48c('0x38')],'callerid':this[_0xb48c('0x3b')][_0xb48c('0x3c')],'calleridname':this['channel'][_0xb48c('0x3e')],'context':this['channel'][_0xb48c('0x3f')],'extension':this[_0xb48c('0x3b')][_0xb48c('0x40')],'priority':this[_0xb48c('0x3b')][_0xb48c('0x41')],'accountcode':this[_0xb48c('0x3b')][_0xb48c('0x42')],'dnid':this['channel']['dnid'],'projectName':this[_0xb48c('0x3b')][_0xb48c('0x43')],'saveName':_0x361584,'filename':_0x573132['file']||_0x361584,'savePath':_0x4525c0})[_0xb48c('0x17')](function(_0x2cfd42){_0x847932(null,_0x2cfd42);})[_0xb48c('0x14')](function(_0x1f4364){_0x847932(_0x1f4364);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x44')]=function(_0x4a6d88,_0x4ca376,_0x3e2870,_0x52d1a6,_0x4d0f6f){this[_0xb48c('0xf')][_0xb48c('0x44')]({'uniqueid':this['channel'][_0xb48c('0x38')],'body':_0x4a6d88,'direction':_0x4ca376,'providerName':_0x3e2870,'providerResponse':_0x52d1a6})[_0xb48c('0x17')](function(_0x7e6d42){if(_0x4d0f6f){_0x4d0f6f(null,_0x7e6d42);}})[_0xb48c('0x14')](function(_0x2aec18){if(_0x4d0f6f){_0x4d0f6f(_0x2aec18);}});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x45')]=function(_0x22b6eb,_0x428aab){this['rpc'][_0xb48c('0x45')]({'firstName':_['isEmpty'](_0x22b6eb[_0xb48c('0x13')])||_[_0xb48c('0x46')](_0x22b6eb[_0xb48c('0x13')])?_0xb48c('0x47')+Math[_0xb48c('0x48')]():_0x22b6eb[_0xb48c('0x13')],'lastName':_[_0xb48c('0x49')](_0x22b6eb[_0xb48c('0x4a')])||_[_0xb48c('0x46')](_0x22b6eb['lastName'])?null:_0x22b6eb[_0xb48c('0x4a')],'phone':_0x22b6eb[_0xb48c('0x4b')],'ListId':_0x22b6eb[_0xb48c('0x4c')],'scheduledat':_0x22b6eb[_0xb48c('0x4d')],'callbackUniqueid':this['channel']['uniqueid'],'tags':_0xb48c('0x4e'),'description':'Callback\x20scheduled\x20at\x20'+_0x22b6eb['scheduledAt'][_0xb48c('0x4f')](),'priority':_0x22b6eb[_0xb48c('0x50')]})['then'](function(_0x273912){_0x428aab(null,_0x273912);})[_0xb48c('0x14')](function(_0x20b535){_0x428aab(_0x20b535);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x51')]=function(_0x4e4c66,_0x49c0cf){this[_0xb48c('0xf')][_0xb48c('0x52')](_0x4e4c66)[_0xb48c('0x17')](function(_0x325761){_0x49c0cf(null,_0x325761?_0x325761[_0xb48c('0x13')]:![]);})['catch'](function(_0x3e4484){_0x49c0cf(_0x3e4484);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x53')]=function(_0x330fe3,_0x5e0345,_0x4a5e88){var _0x3fe826={'role':_0xb48c('0x54')};_0x3fe826[_0x330fe3]=this[_0xb48c('0x3b')]['callerid'];this[_0xb48c('0xf')][_0xb48c('0x53')](_0x3fe826,_0x5e0345,this[_0xb48c('0x3b')]['uniqueid'])['then'](function(_0x23c507){_0x4a5e88(null,_['isNil'](_0x23c507)?![]:!![]);})[_0xb48c('0x14')](function(_0x1a2d8c){logger[_0xb48c('0x2e')](_0x1a2d8c);_0x4a5e88(null,![]);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x55')]=function(_0x5361d6,_0xb06e79){var _0x2df8bc={'role':_0xb48c('0x54')};_0x2df8bc[_0x5361d6]=this[_0xb48c('0x3b')][_0xb48c('0x3c')];this[_0xb48c('0xf')]['agentUnpause'](_0x2df8bc)[_0xb48c('0x17')](function(_0x24bee5){_0xb06e79(null,_[_0xb48c('0x46')](_0x24bee5)?![]:!![]);})[_0xb48c('0x14')](function(_0x2300d2){logger[_0xb48c('0x2e')](_0x2300d2);_0xb06e79(null,![]);});};AGIVertices['prototype'][_0xb48c('0x56')]=function(_0xc6a3e0,_0x4dabcf){var _0x17dd71={'role':_0xb48c('0x54')};_0x17dd71[_0xc6a3e0]=this[_0xb48c('0x3b')][_0xb48c('0x3c')];this[_0xb48c('0xf')]['agentLogout'](_0x17dd71)[_0xb48c('0x17')](function(_0x575b43){_0x4dabcf(null,_['isNil'](_0x575b43)?![]:!![]);})[_0xb48c('0x14')](function(_0x4a849a){logger[_0xb48c('0x2e')](_0x4a849a);_0x4dabcf(null,![]);});};AGIVertices['prototype']['agentLogin']=function(_0x4a672b,_0x247eb5){var _0x3e9e88={'role':'agent'};_0x3e9e88[_0x4a672b]=this[_0xb48c('0x3b')]['callerid'];var _0x5f0df7=_0x4a672b!=_0xb48c('0x57')?util['format'](_0xb48c('0x58'),_0xb48c('0x59'),this[_0xb48c('0x3b')][_0xb48c('0x3c')]):undefined;this[_0xb48c('0xf')][_0xb48c('0x5a')](_0x3e9e88,_0x5f0df7)[_0xb48c('0x17')](function(_0x5cecaf){_0x247eb5(null,_[_0xb48c('0x46')](_0x5cecaf)?![]:!![]);})[_0xb48c('0x14')](function(_0x135690){logger['error'](_0x135690);_0x247eb5(null,![]);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x5b')]=function(_0x16e7ec,_0x3f77e5){sh[_0xb48c('0x5c')](_[_0xb48c('0x5d')](_0x16e7ec),function(_0x315e31,_0x4a1578){var _0x343fda=_0x4a1578[_0xb48c('0x5e')](/(\r\n|\n|\r)/gm,'');_0x3f77e5(null,_0x343fda);});};AGIVertices[_0xb48c('0x10')]['googleCloudTTS']=function(_0x397480,_0x5f402d){scripts['googleCloudTTS'](_0x397480[_0xb48c('0x5f')],_0x397480['google_cloud_tts_text_type']||_0xb48c('0x60'),_0x397480[_0xb48c('0x60')],_0x397480[_0xb48c('0x61')]||_0xb48c('0x62'),_0x397480[_0xb48c('0x63')]||_0xb48c('0x64'),_0x397480[_0xb48c('0x65')]||'MP3')[_0xb48c('0x17')](function(_0x22d552){_0x5f402d(null,_0x22d552);})[_0xb48c('0x14')](function(_0x3ba1c1){_0x5f402d(_0x3ba1c1);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x66')]=function(_0x4883dd,_0xb780e2){scripts[_0xb48c('0x66')](_0x4883dd[_0xb48c('0x60')],_0x4883dd['google_tts_language']||'en',0x1)[_0xb48c('0x17')](function(_0x20cf02){_0xb780e2(null,_0x20cf02);})[_0xb48c('0x14')](function(_0x1d461e){_0xb780e2(_0x1d461e);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x67')]=function(_0x199c32,_0xdde114){var _0x18c4e2={'uri':_0x199c32[_0xb48c('0x68')],'method':_0x199c32[_0xb48c('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x199c32['timeout'])==='number'&&parseInt(_0x199c32[_0xb48c('0x6a')])>=0x1?parseInt(_0x199c32[_0xb48c('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0xb48c('0x6b')]([_0xb48c('0x6c'),_0xb48c('0x6d')],_0x18c4e2['method'][_0xb48c('0x6e')]())){try{_0x18c4e2[_0xb48c('0x6f')]=_0x199c32[_0xb48c('0xc')]?JSON[_0xb48c('0x70')](_0x199c32[_0xb48c('0xc')]):{};}catch(_0x19311a){logger[_0xb48c('0x2e')](_0xb48c('0x71'),_0x19311a);}}try{_0x18c4e2[_0xb48c('0x72')]=_0x199c32[_0xb48c('0x73')]?JSON[_0xb48c('0x70')](_0x199c32[_0xb48c('0x73')]):{};}catch(_0x16a45d){logger[_0xb48c('0x2e')](_0xb48c('0x74'),_0x16a45d);}if(_0x199c32[_0xb48c('0x75')]){try{var _0x3cbb84=require(_0x199c32[_0xb48c('0x75')])[_0xb48c('0x76')](this,_0x18c4e2);_0x18c4e2[_0xb48c('0x77')]=Mustache[_0xb48c('0x78')](_0x199c32[_0xb48c('0x68')],_0x3cbb84,{},['$$','$$']);if(_0x18c4e2['headers']){_0x18c4e2[_0xb48c('0x72')]=JSON[_0xb48c('0x70')](Mustache[_0xb48c('0x78')](JSON['stringify'](_0x18c4e2['headers']),_0x3cbb84,{},['$$','$$']));}if(_0x18c4e2[_0xb48c('0x6f')]){_0x18c4e2['body']=JSON[_0xb48c('0x70')](Mustache[_0xb48c('0x78')](JSON['stringify'](_0x18c4e2[_0xb48c('0x6f')]),_0x3cbb84,{},['$$','$$']));}}catch(_0x1ade5c){logger['error'](_0xb48c('0x79'),_0x1ade5c);}}rp(_0x18c4e2)['then'](function(_0x1dd4fb){var _0x14c992={'statusCode':_0x1dd4fb[_0xb48c('0x7a')]||0xc8,'statusMessage':_0x1dd4fb[_0xb48c('0x7b')]||'OK','headers':_0x1dd4fb[_0xb48c('0x72')]||{},'body':_0x1dd4fb[_0xb48c('0x6f')]||{}};_0xdde114(null,_0x14c992);})[_0xb48c('0x14')](function(_0x72d5ae){var _0x5f2d69={'statusCode':_0x72d5ae[_0xb48c('0x7a')]||0x1f4,'statusMessage':_0x72d5ae['message']||_0xb48c('0x7c'),'headers':_0x72d5ae[_0xb48c('0x7d')]['headers']||{},'body':_0x72d5ae[_0xb48c('0x7d')][_0xb48c('0x6f')]||{}};_0xdde114(null,_0x5f2d69);});};AGIVertices['prototype'][_0xb48c('0x7e')]=function(_0x5dcedc,_0x3e0728){scripts['googleDialogflow'](this[_0xb48c('0x3b')][_0xb48c('0x38')],_0x5dcedc[_0xb48c('0x7f')],_0x5dcedc[_0xb48c('0x60')],_0x5dcedc[_0xb48c('0x80')]||'en')[_0xb48c('0x17')](function(_0x5d3561){_0x3e0728(null,_0x5d3561);})[_0xb48c('0x14')](function(_0x387f74){_0x3e0728(_0x387f74);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x81')]=function(_0x32145b,_0x4acdc8){scripts['googleDialogflowV2'](this[_0xb48c('0x3b')][_0xb48c('0x38')],_0x32145b['dialogflowV2_project_id'],_0x32145b[_0xb48c('0x82')],_0x32145b['private_key'],_0x32145b[_0xb48c('0x60')],_0x32145b[_0xb48c('0x83')]||'en')[_0xb48c('0x17')](function(_0x24a2f2){_0x4acdc8(null,_0x24a2f2);})[_0xb48c('0x14')](function(_0x45cef0){_0x4acdc8(_0x45cef0);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x84')]=function(_0x44f2b3,_0x1b7878){scripts['sestekNDA'](this[_0xb48c('0x3b')],_0x44f2b3)['then'](function(_0x555edd){_0x1b7878(null,_0x555edd);})[_0xb48c('0x14')](function(_0x10a7e6){_0x1b7878(_0x10a7e6);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x85')]=function(_0x11614c,_0x1281b8){scripts[_0xb48c('0x85')](_0x11614c['key'],_0x11614c['text'],_0x11614c['ispeech_tts_language']||_0xb48c('0x62'),_0x11614c[_0xb48c('0x86')])['then'](function(_0x52bac0){_0x1281b8(null,_0x52bac0);})[_0xb48c('0x14')](function(_0xac3672){_0x1281b8(_0xac3672);});};AGIVertices[_0xb48c('0x10')]['ispeechASR']=function(_0x34b76f,_0x18fcfd,_0x3602fb){scripts[_0xb48c('0x87')](_0x18fcfd,_0x34b76f[_0xb48c('0x7f')],_0x34b76f[_0xb48c('0x88')]||_0xb48c('0x62'),this[_0xb48c('0x89')](_0x34b76f[_0xb48c('0x8a')])?_0x34b76f[_0xb48c('0x8a')]:undefined)['then'](function(_0xfa490c){_0x3602fb(null,_0xfa490c);})[_0xb48c('0x14')](function(_0x4c1ffd){_0x3602fb(_0x4c1ffd);});};AGIVertices[_0xb48c('0x10')]['awsPolly']=function(_0x4d0d63,_0x314223){scripts[_0xb48c('0x8b')](_0x4d0d63[_0xb48c('0x8c')],_0x4d0d63[_0xb48c('0x8d')],_0x4d0d63[_0xb48c('0x8e')],_0x4d0d63[_0xb48c('0x8f')]||'Amy',_0x4d0d63['text'],_0x4d0d63[_0xb48c('0x90')]||'text')[_0xb48c('0x17')](function(_0x596fca){_0x314223(null,_0x596fca);})[_0xb48c('0x14')](function(_0x5252fd){_0x314223(_0x5252fd);});};AGIVertices['prototype'][_0xb48c('0x91')]=function(_0x4aa226,_0x258d77){scripts['awsLex'](this[_0xb48c('0x3b')][_0xb48c('0x38')],_0x4aa226[_0xb48c('0x8c')],_0x4aa226['aws_secret_access_key'],_0x4aa226[_0xb48c('0x92')],_0x4aa226[_0xb48c('0x60')],_0x4aa226[_0xb48c('0x93')])['then'](function(_0x30241b){_0x258d77(null,_0x30241b);})[_0xb48c('0x14')](function(_0x2ad30d){_0x258d77(_0x2ad30d);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x94')]=function(_0x45a542,_0x493d30,_0x2efe43){scripts[_0xb48c('0x94')](_0x493d30,_0x45a542[_0xb48c('0x7f')],_0x45a542['google_asr_language']||'en-US')[_0xb48c('0x17')](function(_0x2f33f9){_0x2efe43(null,_0x2f33f9);})['catch'](function(_0x27229f){_0x2efe43(_0x27229f);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x95')]=function(_0x2ce310,_0x14c67f,_0x320611){scripts[_0xb48c('0x95')](_0x14c67f,_0x2ce310[_0xb48c('0x96')],_0x2ce310['appsecret'],_0x2ce310[_0xb48c('0x77')])[_0xb48c('0x17')](function(_0xea34ce){_0x320611(null,_0xea34ce);})['catch'](function(_0x370b0c){_0x320611(_0x370b0c);});};AGIVertices[_0xb48c('0x10')][_0xb48c('0x97')]=function(_0x2176db){var _0x35959b=_[_0xb48c('0x6b')](verticesWithRetry,_0x2176db[_0xb48c('0x3a')])?_0x2176db:_[_0xb48c('0x98')](_0x2176db);for(var _0x29751d in _0x35959b){if(_0x35959b[_0xb48c('0x99')](_0x29751d)){if(_0x35959b[_0x29751d]&&_['isString'](_0x35959b[_0x29751d])){if(_[_0xb48c('0x6b')](recursiveMapAttributes,_0x29751d)){_0x35959b[_0x29751d]=this[_0xb48c('0x9a')](_0x35959b[_0x29751d]);}else{_0x35959b[_0x29751d]=this[_0xb48c('0x9b')](_0x35959b[_0x29751d]);}}}}return _0x35959b;};AGIVertices['prototype'][_0xb48c('0x9c')]=function(_0x4bfc7a){for(var _0x3d1975 in _0x4bfc7a){if(_0x4bfc7a[_0xb48c('0x99')](_0x3d1975)){if(_[_0xb48c('0x9d')](_0x4bfc7a[_0x3d1975])){this['recursiveNodeIndex'](_0x4bfc7a[_0x3d1975]);}else if(_[_0xb48c('0x9e')](_0x4bfc7a[_0x3d1975])){for(var _0x3e1172=0x0;_0x3e1172<_0x4bfc7a[_0x3d1975][_0xb48c('0x9f')];_0x3e1172++){this['recursiveNodeIndex'](_0x4bfc7a[_0x3d1975][_0x3e1172]);}}else if(_[_0xb48c('0xa0')](_0x4bfc7a[_0x3d1975])){_0x4bfc7a[_0x3d1975]=this['replaceAllVariables'](_0x4bfc7a[_0x3d1975]);}}}};AGIVertices['prototype'][_0xb48c('0xa1')]=function(_0x67c56e,_0x2b6585){for(var _0x356cfe in _0x67c56e){if(_0x67c56e[_0xb48c('0x99')](_0x356cfe)){if(_[_0xb48c('0x9d')](_0x67c56e[_0x356cfe])){if(!_[_0xb48c('0x49')](_0x67c56e[_0x356cfe])){this[_0xb48c('0xa1')](_0x67c56e[_0x356cfe],util[_0xb48c('0x2a')](_0xb48c('0xa2'),_0x2b6585,_0x356cfe));}}else if(_[_0xb48c('0x9e')](_0x67c56e[_0x356cfe])){for(var _0x39a0e4=0x0;_0x39a0e4<_0x67c56e[_0x356cfe]['length'];_0x39a0e4++){this[_0xb48c('0xa1')](_0x67c56e[_0x356cfe][_0x39a0e4],util[_0xb48c('0x2a')](_0xb48c('0xa2'),_0x2b6585,_0x356cfe+'['+_0x39a0e4+']'));}}else{if(!_['isNil'](_0x67c56e[_0x356cfe])){this['channel'][_0xb48c('0xa3')](util['format'](_0xb48c('0xa2'),_0x2b6585,_0x356cfe),_0x67c56e[_0x356cfe]);}}}}};AGIVertices['prototype'][_0xb48c('0x9a')]=function(_0x41d409){try{var _0x1554c1=JSON[_0xb48c('0x70')](_0x41d409);this['recursiveNodeIndex'](_0x1554c1);return JSON[_0xb48c('0xa4')](_0x1554c1);}catch(_0x42a7d7){return this[_0xb48c('0x9b')](_0x41d409);}};AGIVertices[_0xb48c('0x10')][_0xb48c('0x9b')]=function(_0x37d1a0){var _0x4c70cf=_0x37d1a0['split']('{');for(var _0x7a44c=0x1;_0x7a44c<_0x4c70cf[_0xb48c('0x9f')];_0x7a44c+=0x1){var _0x4f669b=_0x4c70cf[_0x7a44c][_0xb48c('0xa5')]('}');if(_0x4f669b[_0xb48c('0x9f')]>0x1){_0x37d1a0=_0x37d1a0['replaceAll']('{'+_0x4f669b[0x0]+'}',this[_0xb48c('0x3b')]['getVariable'](_0x4f669b[0x0])[_0xb48c('0xa6')]||_0x4f669b[0x0]);}}if(_0x4c70cf[_0xb48c('0x9f')]===0x1){return _0x37d1a0[_0xb48c('0x4f')]();}return this[_0xb48c('0x9b')](_0x37d1a0);};AGIVertices['prototype'][_0xb48c('0xa7')]=function(_0x4fc374,_0x562465){var _0x44cfd4=this[_0xb48c('0x3b')]['getVariable'](_0x4fc374);if(_0x44cfd4['result']===-0x1){return _0x44cfd4;}logger['info'](util[_0xb48c('0x2a')](_0xb48c('0xa8'),_0x562465,_0x44cfd4[_0xb48c('0xa6')]));return this[_0xb48c('0x3b')]['setVariable'](_0x562465,_0x44cfd4[_0xb48c('0xa6')]);};AGIVertices[_0xb48c('0x10')][_0xb48c('0x89')]=function(_0x14a302){return _0x14a302&&_0x14a302!=='0'&&_0x14a302!=='-1'&&_0x14a302!=='';};AGIVertices['prototype'][_0xb48c('0xa9')]=function(_0x4edfcd){this[_0xb48c('0x37')]['sync'](this,_0x4edfcd,'-');_0x4edfcd[_0xb48c('0xaa')]=_0x4edfcd[_0xb48c('0xa9')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xb48c('0x10')]['mrcpsynth']=function(_0x19c36a){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xab'),_0x19c36a[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x19c36a[_0xb48c('0x60')])){return this[_0xb48c('0x3b')]['noop']('no\x20text\x20configured');}var _0x41d76a='\x22'+_0x19c36a[_0xb48c('0x60')]+'\x22';if(this[_0xb48c('0x89')](_0x19c36a[_0xb48c('0x7d')])){_0x41d76a+=','+_0x19c36a[_0xb48c('0x7d')];}var _0x1433aa=this['channel'][_0xb48c('0x5c')](_0xb48c('0xac'),_0x41d76a);if(_0x1433aa[_0xb48c('0xad')]===-0x1){return _0x1433aa;}return this['channel'][_0xb48c('0xae')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x41d76a));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xaf')]=function(_0x485053){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xb0'),_0x485053[_0xb48c('0x39')]));if(!this['isConfigured'](_0x485053[_0xb48c('0xb1')])){return this[_0xb48c('0x3b')]['noop']('no\x20grammar\x20configured');}var _0x28f22d=_0x485053['grammar'];if(this[_0xb48c('0x89')](_0x485053['options'])){_0x28f22d+=','+_0x485053[_0xb48c('0x7d')];}var _0x65cf5e=this[_0xb48c('0x3b')][_0xb48c('0x5c')](_0xb48c('0xb2'),_0x28f22d);if(_0x65cf5e[_0xb48c('0xad')]===-0x1){return _0x65cf5e;}var _0x56800d=this[_0xb48c('0xa7')](_0xb48c('0xb3'),_0xb48c('0xb4'));if(_0x56800d[_0xb48c('0xad')]===-0x1){return _0x56800d;}var _0x4452b0=this['getAndSetVariable'](_0xb48c('0xb5'),_0xb48c('0xb6'));if(_0x4452b0[_0xb48c('0xad')]===-0x1){return _0x4452b0;}var _0x426691=this[_0xb48c('0xa7')](_0xb48c('0xb7'),_0xb48c('0xb8'));if(_0x426691['result']===-0x1){return _0x426691;}return this[_0xb48c('0x3b')]['noop'](util[_0xb48c('0x2a')]('Executed\x20command\x20MRCPRecog\x20%s',_0x28f22d));};AGIVertices['prototype']['agi']=function(_0x2a1076){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xb9'),_0x2a1076[_0xb48c('0x39')]));return this[_0xb48c('0x3b')]['agi']([_0x2a1076['command'],_0x2a1076[_0xb48c('0xba')]]);};AGIVertices['prototype'][_0xb48c('0xbb')]=function(_0x11a674){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xbc'),_0x11a674['label']));if(this['isConfigured'](_0x11a674['timeout'])){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xbd'),_0x11a674[_0xb48c('0x6a')]));var _0x43e0b4=this[_0xb48c('0x3b')][_0xb48c('0xbe')](_0x11a674[_0xb48c('0x6a')]);if(_0x43e0b4[_0xb48c('0xad')]===-0x1){return _0x43e0b4;}}return this['channel'][_0xb48c('0xbb')]();};AGIVertices[_0xb48c('0x10')][_0xb48c('0x4e')]=function(_0x55cf5b){logger[_0xb48c('0x30')](util['format'](_0xb48c('0xbf'),_0x55cf5b[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x55cf5b['list_id'])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x55cf5b,_0xb48c('0xc0'));}_0x55cf5b[_0xb48c('0x4d')]=moment();if(this[_0xb48c('0x89')](_0x55cf5b[_0xb48c('0xc1')])){_0x55cf5b[_0xb48c('0x4d')]=moment()[_0xb48c('0xc2')](_0x55cf5b[_0xb48c('0xc1')],_0xb48c('0xc3'));}if(!this['isConfigured'](_0x55cf5b[_0xb48c('0x50')])){_0x55cf5b[_0xb48c('0x50')]=0x2;}this[_0xb48c('0x45')][_0xb48c('0x76')](this,_0x55cf5b);return this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x55cf5b['phone'],_0x55cf5b[_0xb48c('0x4c')],_0x55cf5b[_0xb48c('0x4d')]));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xc4')]=function(_0x5edc73){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xc5'),_0x5edc73[_0xb48c('0x39')]));var _0x4c86a4=this['channel']['exec'](_0x5edc73[_0xb48c('0xc6')],_0x5edc73[_0xb48c('0x7d')]);if(_0x4c86a4[_0xb48c('0xad')]===-0x1){return _0x4c86a4;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xc7'),_0x5edc73[_0xb48c('0xc6')],_0x5edc73[_0xb48c('0x7d')]));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xc8')]=function(_0x21a5fc){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xc9'),_0x21a5fc[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x21a5fc[_0xb48c('0x60')])){return this['channel'][_0xb48c('0xae')]('no\x20text\x20configured');}var _0x363a69='\x22'+_0x21a5fc[_0xb48c('0x60')]+'\x22';if(this[_0xb48c('0x89')](_0x21a5fc['options'])){_0x363a69+=','+_0x21a5fc['options'];}var _0x7a78ec=this[_0xb48c('0x3b')]['exec']('MRCPSynth',_0x363a69);if(_0x7a78ec[_0xb48c('0xad')]===-0x1){return _0x7a78ec;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xca'),_0x363a69));};AGIVertices[_0xb48c('0x10')]['sestektts']=function(_0x419487){logger[_0xb48c('0x30')](util['format'](_0xb48c('0xcb'),_0x419487[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x419487[_0xb48c('0x60')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}var _0x18f069='\x22'+_0x419487[_0xb48c('0x60')]+'\x22';if(this[_0xb48c('0x89')](_0x419487[_0xb48c('0x7d')])){_0x18f069+=','+_0x419487[_0xb48c('0x7d')];}var _0x1720e8=this['channel'][_0xb48c('0x5c')](_0xb48c('0xac'),_0x18f069);if(_0x1720e8[_0xb48c('0xad')]===-0x1){return _0x1720e8;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xca'),_0x18f069));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xcd')]=function(_0x3e8a3c){logger['info'](util[_0xb48c('0x2a')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x3e8a3c[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x3e8a3c[_0xb48c('0xb1')])){return this[_0xb48c('0x3b')]['noop'](_0xb48c('0xce'));}var _0x4dcae=_0x3e8a3c[_0xb48c('0xb1')];if(this[_0xb48c('0x89')](_0x3e8a3c[_0xb48c('0x7d')])){_0x4dcae+=','+_0x3e8a3c[_0xb48c('0x7d')];}var _0x1585d6=this[_0xb48c('0x3b')][_0xb48c('0x5c')](_0xb48c('0xb2'),_0x4dcae);if(_0x1585d6[_0xb48c('0xad')]===-0x1){return _0x1585d6;}var _0x3858a8=this[_0xb48c('0xa7')](_0xb48c('0xb3'),'LUMENVOX_ASR_CONFIDENCE');if(_0x3858a8[_0xb48c('0xad')]===-0x1){return _0x3858a8;}var _0x26f031=this['getAndSetVariable'](_0xb48c('0xb5'),_0xb48c('0xcf'));if(_0x26f031[_0xb48c('0xad')]===-0x1){return _0x26f031;}var _0x116bb8=this['getAndSetVariable'](_0xb48c('0xb7'),_0xb48c('0xd0'));if(_0x116bb8['result']===-0x1){return _0x116bb8;}return this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')]('Executed\x20command\x20MRCPRecog\x20%s',_0x4dcae));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xd1')]=function(_0xca0ad1){logger[_0xb48c('0x30')](util['format'](_0xb48c('0xd2'),_0xca0ad1[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0xca0ad1[_0xb48c('0xb1')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xce'));}var _0x759eb3=_0xca0ad1[_0xb48c('0xb1')];if(this[_0xb48c('0x89')](_0xca0ad1['options'])){_0x759eb3+=','+_0xca0ad1['options'];}var _0x5bef21=this[_0xb48c('0x3b')][_0xb48c('0x5c')](_0xb48c('0xb2'),_0x759eb3);if(_0x5bef21[_0xb48c('0xad')]===-0x1){return _0x5bef21;}var _0x2bbbc1=this[_0xb48c('0xa7')]('RECOG_CONFIDENCE()',_0xb48c('0xd3'));if(_0x2bbbc1['result']===-0x1){return _0x2bbbc1;}var _0x5d4504=this[_0xb48c('0xa7')]('RECOG_INPUT()',_0xb48c('0xd4'));if(_0x5d4504[_0xb48c('0xad')]===-0x1){return _0x5d4504;}var _0x501639=this['getAndSetVariable']('RECOG_INSTANCE()',_0xb48c('0xd5'));if(_0x501639[_0xb48c('0xad')]===-0x1){return _0x501639;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xd6'),_0x759eb3));};AGIVertices['prototype'][_0xb48c('0xd7')]=function(_0x23971f){logger['info'](util['format'](_0xb48c('0xd8'),_0x23971f[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x23971f['odbc_id'])){return this['channel'][_0xb48c('0x2e')](_0x23971f,'no\x20database\x20selected');}var _0x53e5b2=this['getSquareOdbc'][_0xb48c('0x76')](this,_0x23971f['odbc_id']);if(!_0x53e5b2){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x23971f,_0xb48c('0xd9'));}if(!this['isConfigured'](_0x23971f[_0xb48c('0xda')])){return this['channel'][_0xb48c('0x2e')](_0x23971f,_0xb48c('0xdb'));}var _0x45586d=_0x23971f[_0xb48c('0xda')][_0xb48c('0x5e')](/(\r\n|\n|\r)/gm,'\x20');this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xdc'),_0x45586d));var _0x26644b=this[_0xb48c('0x2c')]['sync'](this,_0x53e5b2,_0x45586d);this['createSquareDetailsReport'][_0xb48c('0x76')](this,_0x23971f,_0x45586d);if(!this[_0xb48c('0x89')](_0x23971f[_0xb48c('0xdd')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xde'));}var _0x537b96=this['getVariable']['sync'](this,_0x23971f['variable_id']);if(!_0x537b96){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x23971f,'no\x20variable\x20found');}var _0x10383a=this;_0x26644b[_0xb48c('0xdf')](function(_0x36272c,_0x2da9b1){Object[_0xb48c('0xe0')](_0x36272c)[_0xb48c('0xdf')](function(_0x2ac7cd){_0x10383a[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')]('%s[%s][%s]',_0x537b96,_0x2da9b1,_0x2ac7cd),_0x36272c[_0x2ac7cd]);});});this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')]('%s_ROWS_COUNT',_0x537b96),_0x26644b[_0xb48c('0x9f')]);return this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format'](_0xb48c('0xe1'),_0x537b96));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xe2')]=function(_0x46da4d){logger[_0xb48c('0xe3')](util['format'](_0xb48c('0xe4'),_0x46da4d[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x46da4d['sip_id'])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x46da4d,_0xb48c('0xe5'));}var _0x5a1c8a=this[_0xb48c('0x1b')][_0xb48c('0x76')](this,_0x46da4d[_0xb48c('0xe6')]);if(!_0x5a1c8a){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x46da4d,_0xb48c('0xe7'));}var _0x4d36f=this[_0xb48c('0x3b')][_0xb48c('0x5c')]('DIAL',[util['format']('SIP/%s',_0x5a1c8a),_0x46da4d[_0xb48c('0x6a')],_0x46da4d[_0xb48c('0xe8')],_0x46da4d['url']]);if(_0x4d36f[_0xb48c('0xad')]===-0x1){return _0x4d36f;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xe9'),_0xb48c('0xea')));};AGIVertices[_0xb48c('0x10')][_0xb48c('0xeb')]=function(_0x56d33e){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xec'),_0x56d33e[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x56d33e[_0xb48c('0x7f')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')]('no\x20key\x20configured');}if(!this[_0xb48c('0x89')](_0x56d33e[_0xb48c('0x60')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0xb48c('0x3b')][_0xb48c('0xed')]=!![];this['createSquareDetailsReport'](_0x56d33e);this['createSquareMessage'](_0x56d33e[_0xb48c('0x60')],'in','','');this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xee'),_0x56d33e[_0xb48c('0x60')]));var _0xe75d6c=this[_0xb48c('0x7e')]['sync'](this,_0x56d33e);if(_0xe75d6c){for(var _0x2ae8d1 in _0xe75d6c){if(_0xe75d6c[_0xb48c('0x99')](_0x2ae8d1)){this['channel']['setVariable'](util[_0xb48c('0x2a')](_0xb48c('0xef'),_0x2ae8d1[_0xb48c('0x6e')]()),_0xe75d6c[_0x2ae8d1]);}}this[_0xb48c('0x44')](_0xe75d6c[_0xb48c('0xf0')],_0xb48c('0xf1'),_0xb48c('0xeb'),'');return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('Dialogflow\x20Result\x20%s',_0xe75d6c[_0xb48c('0xf0')]));}return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x56d33e,_0xb48c('0xf2'));};AGIVertices['prototype'][_0xb48c('0xf3')]=function(_0x27754a){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x27754a[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x27754a[_0xb48c('0xf4')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')]('no\x20project_id\x20configured');}if(!this['isConfigured'](_0x27754a[_0xb48c('0x82')])){return this[_0xb48c('0x3b')]['noop'](_0xb48c('0xf5'));}if(!this[_0xb48c('0x89')](_0x27754a[_0xb48c('0xf6')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xf7'));}if(!this['isConfigured'](_0x27754a['dialogflowV2_language'])){return this['channel']['noop'](_0xb48c('0xf8'));}if(!this[_0xb48c('0x89')](_0x27754a['text'])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}this[_0xb48c('0x3b')]['bot']=!![];this['createSquareDetailsReport'](_0x27754a);this['createSquareMessage'](_0x27754a[_0xb48c('0x60')],'in','','');this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xf9'),_0x27754a['text']));var _0x58a96f=this['googleDialogflowV2'][_0xb48c('0x76')](this,_0x27754a);if(_0x58a96f){for(var _0x561306 in _0x58a96f){if(_0x58a96f[_0xb48c('0x99')](_0x561306)){if(_0x561306!==_0xb48c('0xfa')){this['channel'][_0xb48c('0xa3')](util[_0xb48c('0x2a')]('DIALOGFLOW_%s',_0x561306[_0xb48c('0x6e')]()),_0x58a96f[_0x561306]);}}}this['createSquareMessage'](_0x58a96f[_0xb48c('0xf0')],_0xb48c('0xf1'),_0xb48c('0xf3'),_0x58a96f[_0xb48c('0xfa')]);return this['channel']['noop'](util[_0xb48c('0x2a')](_0xb48c('0xfb'),_0x58a96f[_0xb48c('0xf0')]));}return this['channel']['error'](_0x27754a,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xb48c('0x10')][_0xb48c('0xfc')]=function(_0x373eb9){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0xfd'),_0x373eb9['label']));if(!this[_0xb48c('0x89')](_0x373eb9[_0xb48c('0xfe')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xff'));}if(!this[_0xb48c('0x89')](_0x373eb9[_0xb48c('0x100')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x101'));}if(!this[_0xb48c('0x89')](_0x373eb9[_0xb48c('0x102')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')]('no\x20password\x20configured');}if(!this['isConfigured'](_0x373eb9[_0xb48c('0x103')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}this[_0xb48c('0x3b')][_0xb48c('0xed')]=!![];this[_0xb48c('0x37')](_0x373eb9);this['createSquareMessage'](_0x373eb9[_0xb48c('0x60')],'in','','');this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x104'),_0x373eb9[_0xb48c('0x60')]));var _0x407a7=this[_0xb48c('0x84')][_0xb48c('0x76')](this,_0x373eb9);if(_0x407a7){for(var _0x378877 in _0x407a7){if(_0x407a7['hasOwnProperty'](_0x378877)){this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')](_0xb48c('0x105'),_0x378877[_0xb48c('0x6e')]()),_0x407a7[_0x378877]);}}this[_0xb48c('0x44')](_0x407a7[_0xb48c('0xf0')],_0xb48c('0xf1'),'sesteknda','');if(_0x407a7['audiofile']){this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x106'),_0x407a7[_0xb48c('0x107')]));var _0x2c3d4d=this[_0xb48c('0x3b')][_0xb48c('0x108')](_0x407a7[_0xb48c('0x107')]);try{fs[_0xb48c('0x109')](_0x407a7[_0xb48c('0x107')]+_0xb48c('0x10a'));}catch(_0x37fd15){logger['error'](_0x37fd15);}return _0x2c3d4d;}else{return this['channel']['noop'](util['format'](_0xb48c('0x10b'),_0x407a7[_0xb48c('0xf0')]));}}return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x373eb9,_0xb48c('0x10c'));};AGIVertices[_0xb48c('0x10')]['end']=function(_0x35f4d0){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x10d'),_0x35f4d0[_0xb48c('0x39')]));return this['channel'][_0xb48c('0xae')](_0xb48c('0x10e'));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x10f')]=function(_0x3faf43){logger['info'](util['format'](_0xb48c('0x110'),_0x3faf43['label']));var _0x56fc9b='';if(_0x3faf43[_0xb48c('0x111')]){if(!this[_0xb48c('0x89')](_0x3faf43[_0xb48c('0x111')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x3faf43,_0xb48c('0x112'));}else{var _0x4e27f1=parseInt(_0x3faf43[_0xb48c('0x111')],0xa);if(isNaN(_0x4e27f1)){_0x56fc9b=_0x3faf43[_0xb48c('0x111')];}else{_0x56fc9b=this[_0xb48c('0x1d')][_0xb48c('0x76')](this,_0x3faf43[_0xb48c('0x111')]);if(!_0x56fc9b){return this[_0xb48c('0x3b')]['error'](_0x3faf43,_0xb48c('0x113'));}}}}else if(_0x3faf43[_0xb48c('0x114')]){_0x56fc9b=_0x3faf43['trunk_name'];}else{return this['channel']['error'](_0x3faf43,_0xb48c('0x112'));}var _0x2bdb6a=this[_0xb48c('0x3b')][_0xb48c('0x5c')](_0xb48c('0xea'),[util[_0xb48c('0x2a')](_0xb48c('0x115'),_0x56fc9b,_0x3faf43['phone']),_0x3faf43['timeout'],_0x3faf43[_0xb48c('0xe8')],_0x3faf43[_0xb48c('0x68')]]);if(_0x2bdb6a['result']===-0x1){return _0x2bdb6a;}return this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xe9'),_0xb48c('0xea')));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x116')]=function(_0x1d62fc){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x117'),_0x1d62fc[_0xb48c('0x39')]));return this['channel'][_0xb48c('0xae')](_0xb48c('0x116'));};AGIVertices[_0xb48c('0x10')]['getdigits']=function(_0x2202bb){logger[_0xb48c('0x30')](util['format']('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x2202bb['label']));if(_0x2202bb[_0xb48c('0xaa')]===0x0){return this['maxRetry'](_0x2202bb);}_0x2202bb['retry']-=0x1;if(!this['isConfigured'](_0x2202bb['file_id'])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x2202bb,_0xb48c('0x118'));}var _0x345ce3=this[_0xb48c('0x1f')][_0xb48c('0x76')](this,_0x2202bb['file_id']);if(!_0x345ce3){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x2202bb,_0xb48c('0x119'));}if(!this[_0xb48c('0x89')](_0x2202bb['variable_id'])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0xb48c('0xde'));}var _0xb52162=this[_0xb48c('0x3b')][_0xb48c('0x11a')](_0x345ce3,_0x2202bb[_0xb48c('0x11b')],_0x2202bb[_0xb48c('0x11c')]);var _0x48be4c=_0xb52162[_0xb48c('0xad')]?_0xb52162[_0xb48c('0xad')]['toString']():'';logger[_0xb48c('0x30')](_0xb48c('0x11d'),JSON[_0xb48c('0xa4')](_0xb52162));if(_0xb52162[_0xb48c('0xad')]===-0x1){this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x2202bb,_0x48be4c);return _0xb52162;}else if(_0xb52162['extra']===_0xb48c('0x6a')){_0xb52162[_0xb48c('0xad')]=_0x48be4c[_0xb48c('0x9f')]>=parseInt(_0x2202bb['mindigit'])?'x':'i';}else{_0xb52162[_0xb48c('0xad')]=_0x48be4c[_0xb48c('0x9f')]>=parseInt(_0x2202bb[_0xb48c('0x11e')])&&_0x48be4c[_0xb48c('0x9f')]<=parseInt(_0x2202bb['maxdigit'])?'x':'i';}var _0x40c06a=this[_0xb48c('0x11')][_0xb48c('0x76')](this,_0x2202bb['variable_id']);if(!_0x40c06a){return this['channel'][_0xb48c('0x2e')](_0x2202bb,_0xb48c('0x11f'));}this[_0xb48c('0x3b')][_0xb48c('0xa3')](_0x40c06a,_0x48be4c);if(this[_0xb48c('0x89')](_0x2202bb[_0xb48c('0x120')])){var _0x1cc4ff=parseInt(_0x2202bb[_0xb48c('0x120')],0xa);var _0x5003f9=rs[_0xb48c('0x121')]({'charset':'*','length':_0x1cc4ff});var _0x42bedb=_0x48be4c[_0xb48c('0x9f')];if(_0x42bedb>0x0){if(_0x42bedb>_0x1cc4ff){this['createSquareDetailsReport'][_0xb48c('0x76')](this,_0x2202bb,_0x2202bb[_0xb48c('0x122')]==='first'?_0x5003f9+_0x48be4c['substr'](_0x1cc4ff):_0x48be4c['substr'](0x0,_0x42bedb-_0x1cc4ff)+_0x5003f9);}else{this[_0xb48c('0x37')]['sync'](this,_0x2202bb,rs[_0xb48c('0x121')]({'charset':'*','length':_0x42bedb}));}}else{this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x2202bb,'');}}else{this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x2202bb,_0x48be4c);}return _0xb52162;};AGIVertices[_0xb48c('0x10')][_0xb48c('0x123')]=function(_0x3c96de){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x124'),_0x3c96de[_0xb48c('0x39')]));return this[_0xb48c('0xe')](_0x3c96de);};AGIVertices[_0xb48c('0x10')][_0xb48c('0x125')]=function(_0x3b1743){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x126'),_0x3b1743['label']));this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x3b1743,_0x3b1743[_0xb48c('0x127')]);return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x128'),_0x3b1743[_0xb48c('0x127')]));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x129')]=function(_0x2e241a){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x2e241a[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x2e241a['aws_access_key_id'])||!this['isConfigured'](_0x2e241a['aws_secret_access_key'])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x12a'));}if(!this['isConfigured'](_0x2e241a['text'])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format'](_0xb48c('0x12b'),_0x2e241a['text']));var _0x28d073=this[_0xb48c('0x8b')][_0xb48c('0x76')](this,_0x2e241a);if(_0x28d073){this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x12c'),_0x28d073));var _0x28729d=this[_0xb48c('0x3b')][_0xb48c('0x108')](_0x28d073);try{fs[_0xb48c('0x109')](_0x28d073+_0xb48c('0x10a'));}catch(_0x5f5437){logger['error'](_0x5f5437);}return _0x28729d;}return this[_0xb48c('0x3b')]['error'](_0x2e241a,_0xb48c('0x12d'));};AGIVertices[_0xb48c('0x10')]['awslex']=function(_0x274fde){logger[_0xb48c('0x30')](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x274fde['label']));if(!this['isConfigured'](_0x274fde[_0xb48c('0x8c')])||!this[_0xb48c('0x89')](_0x274fde[_0xb48c('0x8d')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xb48c('0x89')](_0x274fde[_0xb48c('0x93')])){return this[_0xb48c('0x3b')]['noop']('no\x20bot\x20name\x20configured');}if(!this[_0xb48c('0x89')](_0x274fde[_0xb48c('0x60')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}this[_0xb48c('0x3b')][_0xb48c('0xed')]=!![];this[_0xb48c('0x37')](_0x274fde);this[_0xb48c('0x44')](_0x274fde[_0xb48c('0x60')],'in','','');this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format'](_0xb48c('0x12e'),_0x274fde[_0xb48c('0x60')]));var _0x142de0=this[_0xb48c('0x91')]['sync'](this,_0x274fde);if(_0x142de0){for(var _0x2a9d3d in _0x142de0){if(_0x142de0['hasOwnProperty'](_0x2a9d3d)&&_[_0xb48c('0xa0')](_0x142de0[_0x2a9d3d])){this[_0xb48c('0x3b')]['setVariable'](util[_0xb48c('0x2a')](_0xb48c('0x12f'),_0x2a9d3d[_0xb48c('0x6e')]()),_0x142de0[_0x2a9d3d]);}}if(_[_0xb48c('0x46')](_0x142de0[_0xb48c('0x130')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x131'));}else{this[_0xb48c('0x44')](_0x142de0[_0xb48c('0x130')],_0xb48c('0xf1'),_0xb48c('0x132'),'');return this['channel'][_0xb48c('0xae')](util['format'](_0xb48c('0x133'),_0x142de0['message']));}}return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x274fde,_0xb48c('0x134'));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x135')]=function(_0x3e6133){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x136'),_0x3e6133['label'],_0x3e6133[_0xb48c('0x6a')]));if(!this['isConfigured'](_0x3e6133[_0xb48c('0x7f')])){return this['channel'][_0xb48c('0xae')]('no\x20key\x20configured');}var _0x44ea6f='wav';var _0x2e8bc9=util[_0xb48c('0x2a')](_0xb48c('0x137'),FILES_PATH,rs[_0xb48c('0x121')](0x4));var _0x7c4e51=util[_0xb48c('0x2a')](_0xb48c('0xa2'),_0x2e8bc9,_0x44ea6f);var _0x2dc3ae=!![];if(_0x3e6133['beep']===_0xb48c('0x138')){_0x2dc3ae=![];}var _0x48e85d=this['channel']['recordFile'](_0x2e8bc9,_0x44ea6f,_0x3e6133[_0xb48c('0x139')],_0x3e6133[_0xb48c('0x6a')],undefined,_0x2dc3ae);if(_0x48e85d[_0xb48c('0xad')]!==-0x1){this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x13a'),_0x7c4e51));var _0x1e3cc6=this[_0xb48c('0x94')][_0xb48c('0x76')](this,_0x3e6133,_0x7c4e51);if(_0x1e3cc6){for(var _0x31855a in _0x1e3cc6){if(_0x1e3cc6[_0xb48c('0x99')](_0x31855a)){this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')](_0xb48c('0x13b'),_0x31855a[_0xb48c('0x6e')]()),_0x1e3cc6[_0x31855a]);}}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('GoogleASR\x20Result\x20%s',JSON[_0xb48c('0xa4')](_0x1e3cc6)));}}return _0x48e85d;};AGIVertices[_0xb48c('0x10')][_0xb48c('0x13c')]=function(_0x2c9344){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x13d'),_0x2c9344[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x2c9344[_0xb48c('0x96')])){return this['channel'][_0xb48c('0xae')](_0xb48c('0x13e'));}if(!this[_0xb48c('0x89')](_0x2c9344[_0xb48c('0x13f')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x140'));}var _0x52db0a=_0xb48c('0x141');var _0x4fb968=util['format'](_0xb48c('0x137'),FILES_PATH,rs['generate'](0x4));var _0x363d42=util[_0xb48c('0x2a')]('%s.%s',_0x4fb968,_0x52db0a);var _0x40978b=!![];if(_0x2c9344[_0xb48c('0x142')]===_0xb48c('0x138')){_0x40978b=![];}var _0x38644d=this[_0xb48c('0x3b')][_0xb48c('0x143')](_0x4fb968,_0x52db0a,_0x2c9344['intKey'],_0x2c9344[_0xb48c('0x6a')],undefined,_0x40978b);if(_0x38644d['result']!==-0x1){this['channel']['noop'](util[_0xb48c('0x2a')]('tilde\x20%s\x20file\x20created',_0x363d42));var _0x2a8253=this[_0xb48c('0x95')][_0xb48c('0x76')](this,_0x2c9344,_0x363d42);if(_0x2a8253){for(var _0x5c0733 in _0x2a8253){if(_0x2a8253[_0xb48c('0x99')](_0x5c0733)){this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')](_0xb48c('0x144'),_0x5c0733[_0xb48c('0x6e')]()),_0x2a8253[_0x5c0733]);}}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x145'),JSON[_0xb48c('0xa4')](_0x2a8253)));}}return _0x38644d;};AGIVertices[_0xb48c('0x10')][_0xb48c('0x146')]=function(_0x6976ca){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x6976ca['label']));return this[_0xb48c('0x3b')]['continueAt'](_0x6976ca[_0xb48c('0x3f')],_0x6976ca['extension'],_0x6976ca[_0xb48c('0x41')]);};AGIVertices['prototype']['gotoif']=function(_0x59dc39){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x147'),_0x59dc39[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x59dc39[_0xb48c('0x148')])){return this['channel'][_0xb48c('0x2e')](_0x59dc39,_0xb48c('0x149'));}try{var _0x3aceef=eval(_0x59dc39[_0xb48c('0x148')])?'true':'false';this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x14a'),_0x59dc39[_0xb48c('0x148')],_0x3aceef));return{'code':0xc8,'result':_0x3aceef};}catch(_0xd86a61){return{'code':0xc8,'result':'false'};}};AGIVertices[_0xb48c('0x10')]['gotoiftime']=function(_0x454d1f){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x14b'),_0x454d1f[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x454d1f['interval_id'])){return this['channel'][_0xb48c('0x2e')](_0x454d1f,'no\x20interval\x20configured');}var _0x401dec=this[_0xb48c('0x14c')]['sync'](this,_0x454d1f[_0xb48c('0x14d')]);if(!_0x401dec){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x454d1f,_0xb48c('0x14e'));}for(var _0x2addbc=0x0;_0x2addbc<_0x401dec[_0xb48c('0x9f')];_0x2addbc+=0x1){var _0x36dc9c=this[_0xb48c('0x3b')][_0xb48c('0x11')](util[_0xb48c('0x2a')](_0xb48c('0x14f'),_0x401dec[_0x2addbc]));if(_0x36dc9c[_0xb48c('0xad')]===-0x1){return _0x36dc9c;}logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x150'),_0x401dec[_0x2addbc],_0x36dc9c['extra']));if(_0x36dc9c[_0xb48c('0xa6')]===_0xb48c('0x151')){logger['info'](util['format'](_0xb48c('0x150'),_0x401dec[_0x2addbc],'true'));this['channel']['noop'](util['format'](_0xb48c('0x150'),_0x401dec[_0x2addbc],_0xb48c('0x151')));return{'code':0xc8,'result':'true'};}else{logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('IFTIME\x20%s\x20%s',_0x401dec[_0x2addbc],_0xb48c('0x152')));this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')]('IFTIME\x20%s\x20%s',_0x401dec[_0x2addbc],'false'));}}return{'code':0xc8,'result':_0xb48c('0x152')};};AGIVertices[_0xb48c('0x10')][_0xb48c('0x153')]=function(_0x4b6c7d){logger['info'](util['format'](_0xb48c('0x154'),_0x4b6c7d[_0xb48c('0x39')]));return this[_0xb48c('0x3b')][_0xb48c('0x153')]();};AGIVertices[_0xb48c('0x10')][_0xb48c('0x155')]=function(_0x333d76){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x333d76[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x333d76[_0xb48c('0x7f')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x156'));}var _0x547cd9=_0xb48c('0x141');var _0x2ed057=util[_0xb48c('0x2a')]('%s/recordings/%s',FILES_PATH,rs[_0xb48c('0x121')](0x4));var _0x2c86fb=util[_0xb48c('0x2a')](_0xb48c('0xa2'),_0x2ed057,_0x547cd9);var _0x5d7a17=!![];if(_0x333d76[_0xb48c('0x142')]==='NOBEEP'){_0x5d7a17=![];}var _0xb921ca=this[_0xb48c('0x3b')][_0xb48c('0x143')](_0x2ed057,_0x547cd9,_0x333d76[_0xb48c('0x139')],_0x333d76[_0xb48c('0x6a')],undefined,_0x5d7a17);if(_0xb921ca[_0xb48c('0xad')]!==-0x1){this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('ispeech\x20%s\x20file\x20created',_0x2c86fb));var _0x5e52bf=this[_0xb48c('0x87')][_0xb48c('0x76')](this,_0x333d76,_0x2c86fb);if(_0x5e52bf){for(var _0x55a61d in _0x5e52bf){if(_0x5e52bf[_0xb48c('0x99')](_0x55a61d)){this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')]('ISPEECH_ASR_%s',_0x55a61d[_0xb48c('0x6e')]()),_0x5e52bf[_0x55a61d]);}}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x157'),JSON[_0xb48c('0xa4')](_0x5e52bf)));}}return _0xb921ca;};AGIVertices[_0xb48c('0x10')][_0xb48c('0x158')]=function(_0x2104f5){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x159'),_0x2104f5['label']));if(!this[_0xb48c('0x89')](_0x2104f5[_0xb48c('0x7f')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x156'));}if(!this['isConfigured'](_0x2104f5[_0xb48c('0x60')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')]('no\x20text\x20configured');}this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format'](_0xb48c('0x15a'),_0x2104f5['text']));var _0x2ba229=this[_0xb48c('0x85')][_0xb48c('0x76')](this,_0x2104f5);if(_0x2ba229){this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x15b'),_0x2ba229));var _0x3e7317=this[_0xb48c('0x3b')][_0xb48c('0x108')](_0x2ba229,_0x2104f5[_0xb48c('0x139')]);try{fs[_0xb48c('0x109')](_0x2ba229+_0xb48c('0x10a'));}catch(_0x2b76fd){logger[_0xb48c('0x2e')](_0x2b76fd);}return _0x3e7317;}return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x2104f5,_0xb48c('0x15c'));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x15d')]=function(_0x54b7f5){logger[_0xb48c('0x30')](util['format'](_0xb48c('0x15e'),_0x54b7f5[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x54b7f5[_0xb48c('0x15f')])){return this['channel'][_0xb48c('0x2e')](_0x54b7f5,_0xb48c('0x160'));}logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x161'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x54b7f5[_0xb48c('0x15f')]));var _0x4ba683=this['agentLogin'][_0xb48c('0x76')](this,_0x54b7f5['findBy']);if(_0x4ba683){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x162'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x54b7f5[_0xb48c('0x15f')]));this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x54b7f5[_0xb48c('0x15f')]));return{'code':0xc8,'result':_0xb48c('0x163')};}else{logger[_0xb48c('0x30')](util['format'](_0xb48c('0x164'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x54b7f5['findBy']));this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x164'),this['channel'][_0xb48c('0x3c')],_0x54b7f5[_0xb48c('0x15f')]));return{'code':0xc8,'result':_0xb48c('0x165')};}};AGIVertices[_0xb48c('0x10')][_0xb48c('0x166')]=function(_0x342b07){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x167'),_0x342b07['label']));if(!this['isConfigured'](_0x342b07[_0xb48c('0x15f')])){return this[_0xb48c('0x3b')]['error'](_0x342b07,_0xb48c('0x160'));}logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x161'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x342b07[_0xb48c('0x15f')]));var _0x3866ff=this['agentLogout'][_0xb48c('0x76')](this,_0x342b07['findBy']);if(_0x3866ff){logger['info'](util[_0xb48c('0x2a')](_0xb48c('0x162'),this['channel'][_0xb48c('0x3c')],_0x342b07[_0xb48c('0x15f')]));this['channel'][_0xb48c('0xae')](util['format'](_0xb48c('0x162'),this[_0xb48c('0x3b')]['callerid'],_0x342b07[_0xb48c('0x15f')]));return{'code':0xc8,'result':_0xb48c('0x163')};}else{logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x164'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x342b07[_0xb48c('0x15f')]));this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x342b07['findBy']));return{'code':0xc8,'result':_0xb48c('0x165')};}};AGIVertices[_0xb48c('0x10')][_0xb48c('0x168')]=function(_0x55ff83){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x169'),_0x55ff83[_0xb48c('0x39')]));if(!this['isConfigured'](_0x55ff83[_0xb48c('0x16a')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x55ff83,'no\x20operation\x20configured');}this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('math\x20%s',_0x55ff83['operation']));var _0x56bc05=eval(_0x55ff83[_0xb48c('0x16a')]);if(!this['isConfigured'](_0x55ff83[_0xb48c('0xdd')])){return this[_0xb48c('0x3b')]['noop'](_0xb48c('0xde'));}var _0x5ad6f9=this[_0xb48c('0x11')][_0xb48c('0x76')](this,_0x55ff83['variable_id']);if(!_0x5ad6f9){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x55ff83,_0xb48c('0x11f'));}if(_[_0xb48c('0x9e')](_0x56bc05)){var _0x52cfd=this;_0x56bc05[_0xb48c('0xdf')](function(_0x4ab2ac,_0x5361ee){_0x52cfd['channel']['setVariable'](util[_0xb48c('0x2a')](_0xb48c('0x16b'),_0x5ad6f9,_0x5361ee),_0x4ab2ac);});return this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format']('variable\x20%s[key]\x20set',_0x5ad6f9));}else{return this[_0xb48c('0x3b')][_0xb48c('0xa3')](_0x5ad6f9,_0x56bc05);}};AGIVertices['prototype'][_0xb48c('0xd')]=function(_0x3ee2c0){logger[_0xb48c('0x30')](util['format'](_0xb48c('0x16c'),_0x3ee2c0[_0xb48c('0x39')]));if(_0x3ee2c0['retry']===0x0){return this['maxRetry'](_0x3ee2c0);}_0x3ee2c0['retry']-=0x1;if(!this[_0xb48c('0x89')](_0x3ee2c0[_0xb48c('0x16d')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x3ee2c0,_0xb48c('0x118'));}var _0x442e5a=this[_0xb48c('0x1f')]['sync'](this,_0x3ee2c0['file_id']);if(!_0x442e5a){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x3ee2c0,_0xb48c('0x119'));}var _0x5e154d=this[_0xb48c('0x3b')][_0xb48c('0x11a')](_0x442e5a,_0x3ee2c0['response'],_0x3ee2c0[_0xb48c('0x16e')]);var _0x309e04=_0x5e154d[_0xb48c('0xad')];if(_0x5e154d[_0xb48c('0xad')]===-0x1){this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x3ee2c0,'-1');return _0x5e154d;}else if(_0x5e154d[_0xb48c('0xa6')]===_0xb48c('0x6a')){_0x5e154d[_0xb48c('0xad')]=_0x5e154d[_0xb48c('0xad')][_0xb48c('0x9f')]>0x0?_0x5e154d[_0xb48c('0xad')]:'t';}else if(_[_0xb48c('0x49')](_0x5e154d[_0xb48c('0xad')])){_0x5e154d[_0xb48c('0xad')]='#';_0x309e04='#';}if(!this['isConfigured'](_0x3ee2c0[_0xb48c('0xdd')])){this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xde'));}else{var _0x520b2c=this[_0xb48c('0x11')]['sync'](this,_0x3ee2c0[_0xb48c('0xdd')]);if(!_0x520b2c){return this['channel'][_0xb48c('0x2e')](_0x3ee2c0,_0xb48c('0x11f'));}this[_0xb48c('0x3b')][_0xb48c('0xa3')](_0x520b2c,_0x309e04);}this[_0xb48c('0x37')]['sync'](this,_0x3ee2c0,_0x309e04);return _0x5e154d;};AGIVertices[_0xb48c('0x10')][_0xb48c('0xae')]=function(_0x362189){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x16f'),_0x362189[_0xb48c('0x39')]));return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0x362189['output']||_0x362189['label']);};AGIVertices['prototype'][_0xb48c('0x170')]=function(_0x437bb){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x171'),_0x437bb[_0xb48c('0x39')]));if(!this['isConfigured'](_0x437bb[_0xb48c('0x15f')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x437bb,'no\x20find\x20by\x20configured');}logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x161'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x437bb['findBy']));var _0x3cf9e0=this[_0xb48c('0x51')][_0xb48c('0x76')](this,_0x437bb[_0xb48c('0x172')]);var _0x5a5d02=this[_0xb48c('0x53')][_0xb48c('0x76')](this,_0x437bb[_0xb48c('0x15f')],_0x3cf9e0);if(_0x5a5d02){logger['info'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x437bb[_0xb48c('0x15f')]));this[_0xb48c('0x3b')]['noop'](util[_0xb48c('0x2a')](_0xb48c('0x162'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x437bb[_0xb48c('0x15f')]));return{'code':0xc8,'result':_0xb48c('0x163')};}else{logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x164'),this[_0xb48c('0x3b')]['callerid'],_0x437bb[_0xb48c('0x15f')]));this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x162'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x437bb['findBy']));return{'code':0xc8,'result':_0xb48c('0x165')};}};AGIVertices[_0xb48c('0x10')][_0xb48c('0x173')]=function(_0x586b76){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x174'),_0x586b76[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x586b76[_0xb48c('0x16d')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x586b76,'no\x20file\x20audio\x20selected');}var _0x470e50=this[_0xb48c('0x1f')][_0xb48c('0x76')](this,_0x586b76['file_id']);if(!_0x470e50){return this['channel'][_0xb48c('0x2e')](_0x586b76,'no\x20file\x20audio\x20found');}var _0x2a9772=this[_0xb48c('0x3b')][_0xb48c('0x5c')]('PLAYBACK',[_0x470e50,_0x586b76[_0xb48c('0xe8')]]);if(_0x2a9772[_0xb48c('0xad')]===-0x1){return _0x2a9772;}return this['channel']['noop'](util[_0xb48c('0x2a')](_0xb48c('0xc7'),_0xb48c('0x175'),_0x470e50));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x176')]=function(_0x14d1b0){logger[_0xb48c('0x30')](util['format'](_0xb48c('0x177'),_0x14d1b0['label']));if(!this[_0xb48c('0x89')](_0x14d1b0['queue_id'])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x14d1b0,_0xb48c('0x178'));}var _0x565031='';var _0x2f4ac2=parseInt(_0x14d1b0[_0xb48c('0x179')],0xa);if(isNaN(_0x2f4ac2)){_0x565031=_0x14d1b0['queue_id'];}else{_0x565031=this[_0xb48c('0x15')][_0xb48c('0x76')](this,_0x14d1b0[_0xb48c('0x179')]);if(!_0x565031){return this[_0xb48c('0x3b')]['error'](_0x14d1b0,_0xb48c('0x17a'));}}var _0x369e50='';if(this[_0xb48c('0x89')](_0x14d1b0['file_id'])){var _0x17d36b=this['getSound'][_0xb48c('0x76')](this,_0x14d1b0[_0xb48c('0x16d')]);if(_0x17d36b){_0x369e50=_0x17d36b;}}this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x14d1b0,_0x565031);if(_0x14d1b0[_0xb48c('0xe8')][_0xb48c('0x17b')]('x')<0x0){_0x14d1b0[_0xb48c('0xe8')]+='x';}if(_0x14d1b0[_0xb48c('0xe8')][_0xb48c('0x17b')]('X')<0x0){_0x14d1b0[_0xb48c('0xe8')]+='X';}this[_0xb48c('0x3b')][_0xb48c('0xa3')]('XMCS-QUEUE',_0x565031?_0x565031['toLowerCase']():'');var _0x6404e0=this[_0xb48c('0x3b')][_0xb48c('0x5c')](_0xb48c('0x17c'),[_0x565031,_0x14d1b0['opts'],_0x14d1b0[_0xb48c('0x68')],_0x369e50,_0x14d1b0[_0xb48c('0x6a')],_0x14d1b0['agi'],_0x14d1b0['macro'],_0x14d1b0[_0xb48c('0x17d')],'',_0x14d1b0['position']]);if(_0x6404e0[_0xb48c('0xad')]===-0x1){return _0x6404e0;}return this['channel'][_0xb48c('0xae')](util['format'](_0xb48c('0xc7'),_0xb48c('0x17c'),_0x565031));};AGIVertices['prototype'][_0xb48c('0x17e')]=function(_0x293054){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x17f'),_0x293054['label']));var _0x5c61b8=_0x293054['recordingFormat']||'wav';var _0x1df704=util[_0xb48c('0x2a')](_0xb48c('0x180'),this[_0xb48c('0x3b')][_0xb48c('0x38')],rs[_0xb48c('0x121')](0x5));var _0x1e3b27=util[_0xb48c('0x2a')](_0xb48c('0x181'),FILES_PATH,_0x1df704,_0x5c61b8);var _0x3d993d=util[_0xb48c('0x2a')](_0xb48c('0x137'),FILES_PATH,_0x1df704);this[_0xb48c('0x3d')][_0xb48c('0x76')](this,_0x293054,_0x1df704,_0x1e3b27);this['channel']['setVariable']('RECORDING_SAVENAME',_0x1df704);logger[_0xb48c('0x30')](_0xb48c('0x182'),_0x3d993d,_0x5c61b8,_0x293054[_0xb48c('0x183')],_0x293054[_0xb48c('0x6a')]);return this[_0xb48c('0x3b')][_0xb48c('0x143')](_0x3d993d,_0x5c61b8,_0x293054[_0xb48c('0x183')],_0x293054[_0xb48c('0x6a')],undefined,!![]);};AGIVertices[_0xb48c('0x10')]['restapi']=function(_0x4f5745){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x184'),_0x4f5745[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x4f5745[_0xb48c('0x68')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')]('no\x20url\x20configured');}var _0xa6b7e4=this[_0xb48c('0x67')][_0xb48c('0x76')](this,_0x4f5745);logger['info'](util[_0xb48c('0x2a')](_0xb48c('0x185'),util['inspect'](_0xa6b7e4,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x4f5745[_0xb48c('0xdd')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x186'));}var _0x304eee=this[_0xb48c('0x11')][_0xb48c('0x76')](this,_0x4f5745[_0xb48c('0xdd')]);if(!_0x304eee){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x4f5745,_0xb48c('0x11f'));}this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')](_0xb48c('0x187'),_0x304eee),_0xa6b7e4[_0xb48c('0x7a')]?_0xa6b7e4[_0xb48c('0x7a')]:'200');this[_0xb48c('0x3b')][_0xb48c('0xa3')](util[_0xb48c('0x2a')](_0xb48c('0x188'),_0x304eee),_0xa6b7e4[_0xb48c('0x7b')]?_0xa6b7e4[_0xb48c('0x7b')]:'OK');if(_0xa6b7e4[_0xb48c('0x6f')]){try{this['saveRestApiResult'](_0xa6b7e4[_0xb48c('0x6f')],_0x304eee);}catch(_0x4fa829){logger['error'](util[_0xb48c('0x2a')](_0xb48c('0x189'),_0x304eee));}}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xe1'),_0x304eee));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x18a')]=function(_0x3c4a2b){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x18b'),_0x3c4a2b[_0xb48c('0x39')]));return this[_0xb48c('0x3b')]['sayDigits'](_0x3c4a2b[_0xb48c('0x18c')]['replace'](/\s+/g,''),_0x3c4a2b[_0xb48c('0x183')]);};AGIVertices['prototype'][_0xb48c('0x18d')]=function(_0x4ef240){logger[_0xb48c('0x30')](util['format']('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x4ef240[_0xb48c('0x39')]));return this[_0xb48c('0x3b')]['sayNumber'](_0x4ef240[_0xb48c('0x18e')]['replace'](/\s+/g,''),_0x4ef240[_0xb48c('0x183')]);};AGIVertices[_0xb48c('0x10')][_0xb48c('0x18f')]=function(_0x578269){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x190'),_0x578269[_0xb48c('0x39')]));return this[_0xb48c('0x3b')][_0xb48c('0x191')](_0x578269[_0xb48c('0x60')],_0x578269[_0xb48c('0x183')]);};AGIVertices[_0xb48c('0x10')][_0xb48c('0x192')]=function(_0x2123e7){logger[_0xb48c('0x30')](util['format'](_0xb48c('0x193'),_0x2123e7[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x2123e7[_0xb48c('0x194')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x195'));}var _0xe97449=this[_0xb48c('0x196')][_0xb48c('0x76')](this,_0x2123e7[_0xb48c('0x194')]);if(!_0xe97449||!_0xe97449[_0xb48c('0x197')]){return this['channel']['error'](_0x2123e7,'no\x20mail\x20account\x20found');}var _0x3b0a87={'from':util[_0xb48c('0x2a')](_0xb48c('0x198'),_0xe97449['name'],_0xe97449[_0xb48c('0x199')]||_0xe97449[_0xb48c('0x197')][_0xb48c('0x19a')]),'to':_0x2123e7['to']||'','cc':_0x2123e7['cc']||'','bcc':_0x2123e7[_0xb48c('0x19b')]||'','subject':_0x2123e7[_0xb48c('0x19c')],'html':_0x2123e7['text'],'text':_0x2123e7['text']};var _0x496864={'tls':{'rejectUnauthorized':![]}};if(_0xe97449[_0xb48c('0x197')][_0xb48c('0x19d')]){_0x496864[_0xb48c('0x19d')]=_0xe97449[_0xb48c('0x197')][_0xb48c('0x19d')];}else{_0x496864['host']=_0xe97449['Smtp'][_0xb48c('0x19e')];_0x496864[_0xb48c('0x19f')]=_0xe97449['Smtp'][_0xb48c('0x19f')];_0x496864[_0xb48c('0x1a0')]=_0xe97449[_0xb48c('0x197')][_0xb48c('0x1a0')];}if(_0xe97449[_0xb48c('0x197')]['authentication']){_0x496864[_0xb48c('0x1a1')]={'user':_0xe97449[_0xb48c('0x197')][_0xb48c('0x19a')],'pass':_0xe97449[_0xb48c('0x197')]['pass']};}if(this[_0xb48c('0x89')](_0x2123e7[_0xb48c('0x1a2')])){}logger[_0xb48c('0xe3')](_0xb48c('0x1a3'),JSON[_0xb48c('0xa4')](_0x3b0a87));this['createSquareDetailsReport'][_0xb48c('0x76')](this,_0x2123e7,_0x2123e7[_0xb48c('0x194')]);this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('Trying\x20SendMail\x20with\x20account\x20%s',_0xe97449[_0xb48c('0x13')]));this['sendMailMessage'][_0xb48c('0x76')](this,_0x496864,_0x3b0a87);return this[_0xb48c('0x3b')]['noop'](_0xb48c('0x1a4'));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1a5')]=function(_0x50cd4d){logger['info'](util['format'](_0xb48c('0x1a6'),_0x50cd4d[_0xb48c('0x39')]));return this[_0xb48c('0x3b')][_0xb48c('0xae')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1a7')]=function(_0x55c0e9){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x55c0e9['label']));if(!this['isConfigured'](_0x55c0e9['sms_account_id'])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x1a8'));}var _0x2c09d6=this[_0xb48c('0x35')]['sync'](this,_0x55c0e9[_0xb48c('0x1a9')]);if(!_0x2c09d6){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x55c0e9,_0xb48c('0x1aa'));}var _0x5690b5={'body':_0x55c0e9[_0xb48c('0x1ab')],'phone':_0x55c0e9['to']||'','SmsAccountId':_0x2c09d6['id']};logger[_0xb48c('0xe3')](_0xb48c('0x1ac'),JSON[_0xb48c('0xa4')](_0x5690b5));this['createSquareDetailsReport'][_0xb48c('0x76')](this,_0x55c0e9,_0x55c0e9['sms_account_id']);this[_0xb48c('0x3b')]['noop'](util['format'](_0xb48c('0x1ad'),_0x2c09d6[_0xb48c('0x13')]));this[_0xb48c('0x36')][_0xb48c('0x76')](this,_0x5690b5);return this[_0xb48c('0x3b')][_0xb48c('0xae')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1ae')]=function(_0xfb64c6){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x1af'),_0xfb64c6[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0xfb64c6[_0xb48c('0xdd')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0xfb64c6,_0xb48c('0x1b0'));}var _0x5d1509=this[_0xb48c('0x11')][_0xb48c('0x76')](this,_0xfb64c6['variable_id']);if(!_0x5d1509){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0xfb64c6,'no\x20variable\x20found');}return this[_0xb48c('0x3b')][_0xb48c('0xa3')](_0x5d1509,_0xfb64c6['variable_value']);};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1b1')]=function(_0x411320){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x1b2'),_0x411320[_0xb48c('0x39')]));this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x1b3'));if(_0x411320[_0xb48c('0xbb')]===_0xb48c('0x1b4')){this['channel'][_0xb48c('0xae')](_0xb48c('0x1b5'));return this[_0xb48c('0x3b')][_0xb48c('0xbb')]();}return this['channel'][_0xb48c('0xae')](_0xb48c('0x1b6'));};AGIVertices[_0xb48c('0x10')]['subproject']=function(_0x540630){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x540630[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x540630[_0xb48c('0x1b7')])){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x540630,_0xb48c('0x1b8'));}var _0x1b0cd5=this[_0xb48c('0x18')][_0xb48c('0x76')](this,_0x540630[_0xb48c('0x1b7')]);if(!this[_0xb48c('0x89')](_0x1b0cd5)){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x540630,util[_0xb48c('0x2a')](_0xb48c('0x1b9'),_0x540630[_0xb48c('0x1b7')]));}if(_0x1b0cd5===this['channel'][_0xb48c('0x43')]){return this[_0xb48c('0x3b')]['error'](_0x540630,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x540630,_0x1b0cd5);var _0x12d1fe=this[_0xb48c('0x3b')]['exec'](_0xb48c('0x1ba'),util[_0xb48c('0x2a')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xb48c('0x9')][_0xb48c('0x19e')]||_0xb48c('0x1bb'),_0x1b0cd5,this[_0xb48c('0x3b')][_0xb48c('0x43')]));if(_0x12d1fe['result']===-0x1){return _0x12d1fe;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0xc7'),_0xb48c('0x1ba'),_0x1b0cd5));};AGIVertices['prototype'][_0xb48c('0x1bc')]=function(_0x3a676d){logger['info'](util[_0xb48c('0x2a')](_0xb48c('0x1bd'),_0x3a676d[_0xb48c('0x39')]));var _0x495784=this[_0xb48c('0x5b')]['sync'](this,_0x3a676d[_0xb48c('0x1be')]);this[_0xb48c('0x37')][_0xb48c('0x76')](this,_0x3a676d,_0x3a676d['command']);if(this[_0xb48c('0x89')](_0x3a676d['variable_id'])){var _0x2705d6=this['getVariable']['sync'](this,_0x3a676d[_0xb48c('0xdd')]);if(_0x2705d6){this['channel'][_0xb48c('0xa3')](_0x2705d6,_0x495784);return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x1bf'),_0x3a676d[_0xb48c('0x1be')],_0x2705d6));}}return this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x1c0'),_0x3a676d[_0xb48c('0x1be')]));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1c1')]=function(_0x2baced){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x1c2'),_0x2baced[_0xb48c('0x39')]));_0x2baced[_0xb48c('0x60')]=_0x2baced[_0xb48c('0x60')][_0xb48c('0x5e')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xb48c('0x89')](_0x2baced['apiKey'])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0x1c3'));}if(!this[_0xb48c('0x89')](_0x2baced[_0xb48c('0x60')])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}this['channel'][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x1c4'),_0x2baced[_0xb48c('0x60')]));var _0x25839c=this[_0xb48c('0x1c5')][_0xb48c('0x76')](this,_0x2baced);if(_0x25839c){this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x1c6'),_0x25839c));var _0x1ce0ee=this['channel'][_0xb48c('0x108')](_0x25839c);try{fs[_0xb48c('0x109')](_0x25839c+_0xb48c('0x10a'));}catch(_0x51c401){logger['error'](_0x51c401);}return _0x1ce0ee;}return this[_0xb48c('0x3b')]['error'](_0x2baced,_0xb48c('0x1c7'));};AGIVertices['prototype'][_0xb48c('0x1c8')]=function(_0x481987){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x1c9'),_0x481987[_0xb48c('0x39')]));_0x481987['text']=_0x481987[_0xb48c('0x60')][_0xb48c('0x5e')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xb48c('0x89')](_0x481987['text'])){return this[_0xb48c('0x3b')][_0xb48c('0xae')](_0xb48c('0xcc'));}this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')](_0xb48c('0x1ca'),_0x481987['text']));var _0x3d7a15=this[_0xb48c('0x66')]['sync'](this,_0x481987);if(_0x3d7a15){this['channel'][_0xb48c('0xae')](util['format'](_0xb48c('0x1cb'),_0x3d7a15));var _0x404921=this[_0xb48c('0x3b')][_0xb48c('0x108')](_0x3d7a15);try{fs[_0xb48c('0x109')](_0x3d7a15+'.wav');}catch(_0x18d5d2){logger[_0xb48c('0x2e')](_0x18d5d2);}return _0x404921;}return this['channel'][_0xb48c('0x2e')](_0x481987,_0xb48c('0x1cc'));};AGIVertices['prototype'][_0xb48c('0x1cd')]=function(_0x18143b){logger['info'](util[_0xb48c('0x2a')](_0xb48c('0x1ce'),_0x18143b[_0xb48c('0x39')]));if(!this['isConfigured'](_0x18143b['findBy'])){return this[_0xb48c('0x3b')]['error'](_0x18143b,_0xb48c('0x160'));}logger['info'](util[_0xb48c('0x2a')](_0xb48c('0x161'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x18143b[_0xb48c('0x15f')]));var _0x73458e=this[_0xb48c('0x55')][_0xb48c('0x76')](this,_0x18143b[_0xb48c('0x15f')]);if(_0x73458e){logger['info'](util[_0xb48c('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x18143b[_0xb48c('0x15f')]));this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xb48c('0x3c')],_0x18143b[_0xb48c('0x15f')]));return{'code':0xc8,'result':_0xb48c('0x163')};}else{logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x164'),this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x18143b['findBy']));this[_0xb48c('0x3b')][_0xb48c('0xae')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xb48c('0x3b')][_0xb48c('0x3c')],_0x18143b[_0xb48c('0x15f')]));return{'code':0xc8,'result':_0xb48c('0x165')};}};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1cf')]=function(_0x1ff054){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x1d0'),_0x1ff054[_0xb48c('0x39')]));var _0xdccede=this['channel'][_0xb48c('0x5c')]('VOICEMAIL',[_0x1ff054['mailbox'],_0x1ff054[_0xb48c('0x7d')]]);if(_0xdccede[_0xb48c('0xad')]===-0x1){return _0xdccede;}return this[_0xb48c('0x3b')][_0xb48c('0xae')](util[_0xb48c('0x2a')]('Executed\x20command\x20%s\x20%s',_0xb48c('0x1d1'),_0x1ff054[_0xb48c('0x1d2')]));};AGIVertices[_0xb48c('0x10')][_0xb48c('0x1d3')]=function(_0x5a4944){logger[_0xb48c('0x30')](util[_0xb48c('0x2a')](_0xb48c('0x1d4'),_0x5a4944[_0xb48c('0x39')]));if(!this[_0xb48c('0x89')](_0x5a4944[_0xb48c('0xdd')])){return this['channel'][_0xb48c('0x2e')](_0x5a4944,_0xb48c('0x1b0'));}var _0xff36f4=this['getVariable'][_0xb48c('0x76')](this,_0x5a4944[_0xb48c('0xdd')]);if(!_0xff36f4){return this[_0xb48c('0x3b')][_0xb48c('0x2e')](_0x5a4944,_0xb48c('0x11f'));}var _0x49caaf=this[_0xb48c('0x3b')][_0xb48c('0x11')](_0xff36f4);return{'code':0xc8,'result':_0x49caaf[_0xb48c('0xa6')]?_0x49caaf[_0xb48c('0xa6')]:'-'};};String[_0xb48c('0x10')][_0xb48c('0x1d5')]=function(_0x5d0536,_0x3ab88f){return this[_0xb48c('0xa5')](_0x5d0536)[_0xb48c('0x1d6')](_0x3ab88f);};module['exports']=AGIVertices;
\ No newline at end of file
index 67bdc1f..97131c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd952=['[ACW][STOP]\x20%s','syncAgentConnect','acw','mandatoryDisposition','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','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]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','bind','hanguprequest','syncHangupRequest','hangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','custom:agentConnectPreview','syncAgentConnectPreview','diff','prototype','startAcw','interface','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','lastPauseAt','uniqueid','queue','updateAcw','timer','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','acwTimeout','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xd952,0xc3));var _0x2d95=function(_0x49dcb5,_0x39fc88){_0x49dcb5=_0x49dcb5-0x0;var _0x1d01d0=_0xd952[_0x49dcb5];return _0x1d01d0;};'use strict';var util=require(_0x2d95('0x0'));var _=require('lodash');var moment=require(_0x2d95('0x1'));var ami=require(_0x2d95('0x2'));var logger=require(_0x2d95('0x3'))('acw');var RpcUser=require(_0x2d95('0x4'));var RpcVoiceAgentReport=require(_0x2d95('0x5'));function Acw(_0x15baf4){this['voiceQueues']=_0x15baf4[_0x2d95('0x6')];this[_0x2d95('0x7')]=_0x15baf4[_0x2d95('0x7')];this[_0x2d95('0x8')]=_0x15baf4['timers'];this[_0x2d95('0x9')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0x2d95('0xa')](this));ami['on'](_0x2d95('0xb'),this[_0x2d95('0xc')][_0x2d95('0xa')](this));ami['on'](_0x2d95('0xd'),this['syncHangup'][_0x2d95('0xa')](this));ami['on']('agentringnoanswer',this[_0x2d95('0xe')][_0x2d95('0xa')](this));ami['on'](_0x2d95('0xf'),this[_0x2d95('0x10')][_0x2d95('0xa')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x2d95('0xa')](this));ami['on'](_0x2d95('0x11'),this[_0x2d95('0x12')][_0x2d95('0xa')](this));}function getDiff(_0x322023){var _0x4d8913=moment()['milliseconds'](0x0);var _0x70855b=moment(_0x322023)['milliseconds'](0x0);return _0x4d8913[_0x2d95('0x13')](_0x70855b,'seconds');}Acw[_0x2d95('0x14')][_0x2d95('0x15')]=function(_0x33f898){try{var _0x3c21a0=this;var _0x3795b0=this[_0x2d95('0x9')][_0x33f898][_0x2d95('0x16')];var _0x5e3463=this['channels'][_0x33f898]['queue'];var _0x2dea73=this['voiceQueues'][_0x5e3463];var _0x3ac807=![];var _0x57e759=_0x2d95('0x17');if(_0x2dea73['mandatoryDisposition']){if(_0x2dea73[_0x2d95('0x18')][_0x2d95('0x19')]){_0x3ac807=!![];_0x57e759=_0x2dea73['mandatoryDispositionPause'][_0x2d95('0x19')];}}ami[_0x2d95('0x1a')]({'action':_0x2d95('0x1b'),'interface':_0x3795b0,'paused':!![],'reason':_0x57e759})['then'](function(_0x2f9b54){if(_0x3c21a0[_0x2d95('0x7')][_0x3795b0]){return RpcUser['getAgent'](_0x3c21a0[_0x2d95('0x7')][_0x3795b0]['id'])[_0x2d95('0x1c')](function(_0x148b74){if(_0x148b74&&!_0x148b74[_0x2d95('0x1d')]){logger[_0x2d95('0x1e')](_0x2d95('0x1f'),_0x33f898,_0x3795b0,_0x5e3463);var _0x16bacb=_0x3c21a0[_0x2d95('0x9')][_0x33f898][_0x2d95('0x20')]&&_0x3c21a0[_0x2d95('0x9')][_0x33f898][_0x2d95('0x21')]?_0x3c21a0[_0x2d95('0x9')][_0x33f898][_0x2d95('0x21')]:_0x33f898;return RpcUser['savePause'](_0x3c21a0[_0x2d95('0x7')][_0x3795b0],_0x57e759,_0x16bacb)[_0x2d95('0x1c')](function(_0x3cb6e4){if(!_0x3ac807){_0x3c21a0[_0x2d95('0x8')][_0x3795b0]={};logger[_0x2d95('0x1e')](_0x2d95('0x22'),_0x33f898,_0x3c21a0[_0x2d95('0x6')][_0x5e3463]['acwTimeout'],_0x3795b0,_0x5e3463);_0x3c21a0['timers'][_0x3795b0]['timer']=setTimeout(_0x3c21a0[_0x2d95('0x23')][_0x2d95('0xa')](_0x3c21a0,_0x3795b0),_0x3c21a0[_0x2d95('0x6')][_0x5e3463]['acwTimeout']*0x3e8);_0x3c21a0[_0x2d95('0x8')][_0x3795b0][_0x2d95('0x24')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3c21a0[_0x2d95('0x8')][_0x3795b0][_0x2d95('0x25')]=_0x33f898;_0x3c21a0[_0x2d95('0x8')][_0x3795b0][_0x2d95('0x26')]=_0x5e3463;_0x3c21a0['timers'][_0x3795b0][_0x2d95('0x27')]=function(){var _0x675ff=getDiff(_0x3c21a0[_0x2d95('0x8')][_0x3795b0][_0x2d95('0x24')]);clearTimeout(_0x3c21a0[_0x2d95('0x8')][_0x3795b0][_0x2d95('0x28')]);_0x3c21a0['timers'][_0x3795b0][_0x2d95('0x28')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x675ff},_0x3c21a0[_0x2d95('0x8')][_0x3795b0]['uniqueid'],_0x3795b0)[_0x2d95('0x1c')](function(_0x53112f){logger[_0x2d95('0x1e')](_0x2d95('0x29'),_0x33f898,_0x675ff,_0x53112f);})[_0x2d95('0x2a')](function(_0x478f9e){logger[_0x2d95('0x2b')](_0x2d95('0x2c'),_0x33f898,_0x478f9e);});delete _0x3c21a0['timers'][_0x3795b0];};}});}else{logger[_0x2d95('0x1e')](_0x2d95('0x2d'),_0x33f898,_0x3795b0,_0x5e3463);}});}})[_0x2d95('0x2a')](function(_0x578413){logger[_0x2d95('0x2b')](_0x2d95('0x22'),_0x33f898,_0x3c21a0[_0x2d95('0x6')][_0x5e3463][_0x2d95('0x2e')],_0x3795b0,_0x5e3463);})[_0x2d95('0x2f')](function(){delete _0x3c21a0[_0x2d95('0x9')][_0x33f898];});}catch(_0x6cf2fc){logger[_0x2d95('0x2b')](_0x2d95('0x30'),_0x6cf2fc[_0x2d95('0x31')]);}};Acw['prototype']['stopAcw']=function(_0x314b26){try{var _0x2f7132=this;if(_0x2f7132['timers'][_0x314b26]){_0x2f7132['timers'][_0x314b26][_0x2d95('0x28')]=![];var _0x2c986a=_0x2f7132[_0x2d95('0x8')][_0x314b26][_0x2d95('0x25')];var _0x3dd565=_0x2f7132['timers'][_0x314b26][_0x2d95('0x26')];var _0x3461e0=_0x2f7132[_0x2d95('0x6')][_0x3dd565][_0x2d95('0x2e')];logger['info'](_0x2d95('0x32'),_0x2c986a,_0x314b26);RpcUser['saveUnpause'](this['agents'][_0x314b26]);RpcVoiceAgentReport[_0x2d95('0x33')]({'acwtime':_0x3461e0,'agentacw':!![]},_0x2c986a,_0x314b26)[_0x2d95('0x1c')](function(_0x2853bd){logger[_0x2d95('0x1e')](_0x2d95('0x29'),_0x2c986a,_0x3461e0,_0x2853bd);})[_0x2d95('0x2a')](function(_0x59a09c){logger[_0x2d95('0x2b')](_0x2d95('0x2c'),_0x2c986a,_0x59a09c);});}else{logger[_0x2d95('0x2b')](_0x2d95('0x34'),_0x314b26);if(_0x2f7132[_0x2d95('0x8')]){logger[_0x2d95('0x1e')]('[ACW][TIMERS]',JSON[_0x2d95('0x35')](_0x2f7132[_0x2d95('0x8')]));}}}catch(_0x31e866){logger['error'](_0x2d95('0x36'),_0x31e866[_0x2d95('0x31')]);}};Acw[_0x2d95('0x14')][_0x2d95('0x37')]=function(_0x7a423c){try{if(this[_0x2d95('0x6')][_0x7a423c['queue']]&&(this[_0x2d95('0x6')][_0x7a423c['queue']][_0x2d95('0x38')]||this['voiceQueues'][_0x7a423c['queue']][_0x2d95('0x39')])){if(this[_0x2d95('0x7')][_0x7a423c['interface']]){this['channels'][_0x7a423c[_0x2d95('0x25')]]={'queue':_0x7a423c[_0x2d95('0x26')],'interface':_0x7a423c[_0x2d95('0x16')],'destlinkedid':_0x7a423c[_0x2d95('0x21')]};}}}catch(_0x190dd4){logger[_0x2d95('0x2b')]('[ACW][syncAgentConnect]\x20%s',_0x190dd4['message']);}};Acw[_0x2d95('0x14')][_0x2d95('0x12')]=function(_0x38910e){try{if(this[_0x2d95('0x6')][_0x38910e['queue']]&&(this['voiceQueues'][_0x38910e['queue']][_0x2d95('0x38')]||this[_0x2d95('0x6')][_0x38910e[_0x2d95('0x26')]][_0x2d95('0x39')])){if(this[_0x2d95('0x7')][_0x38910e[_0x2d95('0x16')]]){this['channels'][_0x38910e['uniqueid']]={'queue':_0x38910e[_0x2d95('0x26')],'interface':_0x38910e[_0x2d95('0x16')]};}}}catch(_0x1bb411){logger['error'](_0x2d95('0x3a'),_0x1bb411[_0x2d95('0x31')]);}};Acw['prototype'][_0x2d95('0xc')]=function(_0x6bba46){try{if(this[_0x2d95('0x9')][_0x6bba46['uniqueid']]&&_[_0x2d95('0x3b')](this[_0x2d95('0x9')][_0x6bba46[_0x2d95('0x25')]][_0x2d95('0x20')])){logger[_0x2d95('0x1e')](_0x2d95('0x3c'),_0x6bba46[_0x2d95('0x25')]);this[_0x2d95('0x15')](_0x6bba46[_0x2d95('0x25')]);}else if(this['channels'][_0x6bba46['linkedid']]&&_[_0x2d95('0x3b')](this[_0x2d95('0x9')][_0x6bba46[_0x2d95('0x3d')]]['attended'])){logger[_0x2d95('0x1e')]('[%s][HANGUP:LINKEDID]',_0x6bba46[_0x2d95('0x3d')]);this[_0x2d95('0x15')](_0x6bba46[_0x2d95('0x3d')]);}}catch(_0xdb0b74){logger[_0x2d95('0x2b')](_0x2d95('0x3e'),_0xdb0b74[_0x2d95('0x31')]);}};Acw[_0x2d95('0x14')][_0x2d95('0x3f')]=function(_0x5ebb6f){try{if(this[_0x2d95('0x9')][_0x5ebb6f[_0x2d95('0x25')]]&&this['channels'][_0x5ebb6f['uniqueid']]['attended']){logger[_0x2d95('0x1e')](_0x2d95('0x40'),_0x5ebb6f[_0x2d95('0x25')]);this[_0x2d95('0x15')](_0x5ebb6f[_0x2d95('0x25')]);}else if(this[_0x2d95('0x9')][_0x5ebb6f[_0x2d95('0x3d')]]&&this[_0x2d95('0x9')][_0x5ebb6f[_0x2d95('0x3d')]][_0x2d95('0x20')]){logger[_0x2d95('0x1e')](_0x2d95('0x41'),_0x5ebb6f['linkedid']);this['startAcw'](_0x5ebb6f[_0x2d95('0x3d')]);}}catch(_0x373618){logger[_0x2d95('0x2b')](_0x2d95('0x42'),_0x373618[_0x2d95('0x31')]);}};Acw[_0x2d95('0x14')]['syncAttendedTransfer']=function(_0x335f51){try{if(!_[_0x2d95('0x43')](this[_0x2d95('0x9')][_0x335f51['transfereeuniqueid']])){this[_0x2d95('0x15')](_0x335f51[_0x2d95('0x44')]);if(this['channels'][_0x335f51[_0x2d95('0x45')]]){this[_0x2d95('0x9')][_0x335f51[_0x2d95('0x45')]][_0x2d95('0x20')]=!![];this[_0x2d95('0x9')][_0x335f51['transfertargetuniqueid']]=this['channels'][_0x335f51[_0x2d95('0x45')]];delete this['channels'][_0x335f51[_0x2d95('0x45')]];}}else if(!_[_0x2d95('0x43')](this['channels'][_0x335f51[_0x2d95('0x46')]])){this[_0x2d95('0x15')](_0x335f51[_0x2d95('0x46')]);if(this[_0x2d95('0x9')][_0x335f51[_0x2d95('0x47')]]){this[_0x2d95('0x9')][_0x335f51[_0x2d95('0x47')]]['attended']=!![];this[_0x2d95('0x9')][_0x335f51[_0x2d95('0x44')]]=this[_0x2d95('0x9')][_0x335f51['origtransfereruniqueid']];delete this[_0x2d95('0x9')][_0x335f51[_0x2d95('0x47')]];}}}catch(_0x3e3e0f){logger[_0x2d95('0x2b')](_0x2d95('0x48'),_0x3e3e0f['message']);}};Acw[_0x2d95('0x14')]['syncBlindTransfer']=function(_0x3a94ae){try{if(this[_0x2d95('0x9')][_0x3a94ae['transfereruniqueid']]){logger[_0x2d95('0x1e')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x2d95('0x35')](_0x3a94ae[_0x2d95('0x49')]));this[_0x2d95('0x15')](_0x3a94ae[_0x2d95('0x49')]);}else if(this[_0x2d95('0x9')][_0x3a94ae[_0x2d95('0x4a')]]){logger[_0x2d95('0x1e')](_0x2d95('0x4b'),JSON[_0x2d95('0x35')](_0x3a94ae[_0x2d95('0x4a')]));this[_0x2d95('0x15')](_0x3a94ae[_0x2d95('0x4a')]);}}catch(_0x10ca57){logger[_0x2d95('0x2b')]('[ACW][syncBlindTransfer]\x20%s',_0x10ca57[_0x2d95('0x31')]);}};Acw[_0x2d95('0x14')][_0x2d95('0xe')]=function(_0x2cc761){try{if(this[_0x2d95('0x6')][_0x2cc761[_0x2d95('0x26')]]&&this[_0x2d95('0x6')][_0x2cc761[_0x2d95('0x26')]][_0x2d95('0x4c')]===_0x2d95('0x4d')){if(this[_0x2d95('0x7')][_0x2cc761['interface']]){logger[_0x2d95('0x1e')](_0x2d95('0x4e'),_0x2cc761[_0x2d95('0x25')],_0x2cc761[_0x2d95('0x16')],_0x2cc761[_0x2d95('0x26')]);return RpcUser[_0x2d95('0x4f')](this['agents'][_0x2cc761[_0x2d95('0x16')]],_0x2d95('0x50'),_0x2cc761[_0x2d95('0x25')]);}}}catch(_0x2ebc51){logger[_0x2d95('0x2b')](_0x2d95('0x51'),_0x2ebc51[_0x2d95('0x31')]);}};module[_0x2d95('0x52')]=Acw;
\ No newline at end of file
+var _0x363b=['channels','interface','ACW','mandatoryDispositionPause','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','acwTimeout','timer','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','stopAcw','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','exports','util','lodash','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','milliseconds','diff','seconds','prototype','startAcw'];(function(_0x56878b,_0x2f6396){var _0x2e9d1f=function(_0x4c12b7){while(--_0x4c12b7){_0x56878b['push'](_0x56878b['shift']());}};_0x2e9d1f(++_0x2f6396);}(_0x363b,0x8d));var _0xb363=function(_0x408649,_0x41c48e){_0x408649=_0x408649-0x0;var _0x4144aa=_0x363b[_0x408649];return _0x4144aa;};'use strict';var util=require(_0xb363('0x0'));var _=require(_0xb363('0x1'));var moment=require('moment');var ami=require(_0xb363('0x2'));var logger=require('../../../config/logger')(_0xb363('0x3'));var RpcUser=require(_0xb363('0x4'));var RpcVoiceAgentReport=require(_0xb363('0x5'));function Acw(_0x45750f){this[_0xb363('0x6')]=_0x45750f[_0xb363('0x6')];this[_0xb363('0x7')]=_0x45750f['agents'];this[_0xb363('0x8')]=_0x45750f[_0xb363('0x8')];this['channels']={};ami['on'](_0xb363('0x9'),this[_0xb363('0xa')][_0xb363('0xb')](this));ami['on'](_0xb363('0xc'),this[_0xb363('0xd')]['bind'](this));ami['on'](_0xb363('0xe'),this[_0xb363('0xf')][_0xb363('0xb')](this));ami['on'](_0xb363('0x10'),this[_0xb363('0x11')][_0xb363('0xb')](this));ami['on'](_0xb363('0x12'),this[_0xb363('0x13')]['bind'](this));ami['on'](_0xb363('0x14'),this['syncBlindTransfer'][_0xb363('0xb')](this));ami['on'](_0xb363('0x15'),this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x3006e3){var _0x2ef21c=moment()[_0xb363('0x16')](0x0);var _0x4a3ca6=moment(_0x3006e3)[_0xb363('0x16')](0x0);return _0x2ef21c[_0xb363('0x17')](_0x4a3ca6,_0xb363('0x18'));}Acw[_0xb363('0x19')][_0xb363('0x1a')]=function(_0x3aafa8){try{var _0x9263f5=this;var _0x3ed935=this[_0xb363('0x1b')][_0x3aafa8][_0xb363('0x1c')];var _0x415735=this[_0xb363('0x1b')][_0x3aafa8]['queue'];var _0x44b236=this[_0xb363('0x6')][_0x415735];var _0x2c9cd9=![];var _0x5c4305=_0xb363('0x1d');if(_0x44b236['mandatoryDisposition']){if(_0x44b236[_0xb363('0x1e')]['name']){_0x2c9cd9=!![];_0x5c4305=_0x44b236[_0xb363('0x1e')]['name'];}}ami['Action']({'action':_0xb363('0x1f'),'interface':_0x3ed935,'paused':!![],'reason':_0x5c4305})[_0xb363('0x20')](function(_0x3bc149){if(_0x9263f5[_0xb363('0x7')][_0x3ed935]){return RpcUser[_0xb363('0x21')](_0x9263f5[_0xb363('0x7')][_0x3ed935]['id'])[_0xb363('0x20')](function(_0x112a23){if(_0x112a23&&!_0x112a23[_0xb363('0x22')]){logger[_0xb363('0x23')](_0xb363('0x24'),_0x3aafa8,_0x3ed935,_0x415735);var _0x18bfcc=_0x9263f5[_0xb363('0x1b')][_0x3aafa8]['attended']&&_0x9263f5[_0xb363('0x1b')][_0x3aafa8][_0xb363('0x25')]?_0x9263f5[_0xb363('0x1b')][_0x3aafa8]['destlinkedid']:_0x3aafa8;return RpcUser[_0xb363('0x26')](_0x9263f5['agents'][_0x3ed935],_0x5c4305,_0x18bfcc)['then'](function(_0xf3f3ab){if(!_0x2c9cd9){_0x9263f5['timers'][_0x3ed935]={};logger[_0xb363('0x23')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3aafa8,_0x9263f5[_0xb363('0x6')][_0x415735][_0xb363('0x27')],_0x3ed935,_0x415735);_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x28')]=setTimeout(_0x9263f5['stopAcw'][_0xb363('0xb')](_0x9263f5,_0x3ed935),_0x9263f5['voiceQueues'][_0x415735]['acwTimeout']*0x3e8);_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x29')]=moment()['format'](_0xb363('0x2a'));_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x2b')]=_0x3aafa8;_0x9263f5['timers'][_0x3ed935][_0xb363('0x2c')]=_0x415735;_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x2d')]=function(){var _0x546381=getDiff(_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x29')]);clearTimeout(_0x9263f5[_0xb363('0x8')][_0x3ed935]['timer']);_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x28')]=![];RpcVoiceAgentReport[_0xb363('0x2e')]({'acwtime':_0x546381},_0x9263f5[_0xb363('0x8')][_0x3ed935][_0xb363('0x2b')],_0x3ed935)['then'](function(_0x5a2a72){logger[_0xb363('0x23')](_0xb363('0x2f'),_0x3aafa8,_0x546381,_0x5a2a72);})[_0xb363('0x30')](function(_0x5c74d7){logger[_0xb363('0x31')](_0xb363('0x32'),_0x3aafa8,_0x5c74d7);});delete _0x9263f5['timers'][_0x3ed935];};}});}else{logger[_0xb363('0x23')](_0xb363('0x33'),_0x3aafa8,_0x3ed935,_0x415735);}});}})['catch'](function(_0x46b87a){logger[_0xb363('0x31')](_0xb363('0x34'),_0x3aafa8,_0x9263f5[_0xb363('0x6')][_0x415735][_0xb363('0x27')],_0x3ed935,_0x415735);})[_0xb363('0x35')](function(){delete _0x9263f5['channels'][_0x3aafa8];});}catch(_0x57cc80){logger[_0xb363('0x31')](_0xb363('0x36'),_0x57cc80['message']);}};Acw[_0xb363('0x19')][_0xb363('0x37')]=function(_0x32bce0){try{var _0x25af65=this;if(_0x25af65['timers'][_0x32bce0]){_0x25af65[_0xb363('0x8')][_0x32bce0][_0xb363('0x28')]=![];var _0x4a7925=_0x25af65['timers'][_0x32bce0][_0xb363('0x2b')];var _0xe4e013=_0x25af65[_0xb363('0x8')][_0x32bce0][_0xb363('0x2c')];var _0xdb6dbc=_0x25af65['voiceQueues'][_0xe4e013]['acwTimeout'];logger[_0xb363('0x23')](_0xb363('0x38'),_0x4a7925,_0x32bce0);RpcUser['saveUnpause'](this[_0xb363('0x7')][_0x32bce0]);RpcVoiceAgentReport[_0xb363('0x2e')]({'acwtime':_0xdb6dbc,'agentacw':!![]},_0x4a7925,_0x32bce0)['then'](function(_0x389e02){logger[_0xb363('0x23')](_0xb363('0x2f'),_0x4a7925,_0xdb6dbc,_0x389e02);})[_0xb363('0x30')](function(_0x1f2960){logger[_0xb363('0x31')](_0xb363('0x32'),_0x4a7925,_0x1f2960);});}else{logger[_0xb363('0x31')](_0xb363('0x39'),_0x32bce0);if(_0x25af65['timers']){logger['info'](_0xb363('0x3a'),JSON[_0xb363('0x3b')](_0x25af65[_0xb363('0x8')]));}}}catch(_0x2aab1c){logger[_0xb363('0x31')](_0xb363('0x3c'),_0x2aab1c[_0xb363('0x3d')]);}};Acw['prototype'][_0xb363('0xa')]=function(_0x1a3113){try{if(this['voiceQueues'][_0x1a3113[_0xb363('0x2c')]]&&(this['voiceQueues'][_0x1a3113[_0xb363('0x2c')]][_0xb363('0x3')]||this[_0xb363('0x6')][_0x1a3113[_0xb363('0x2c')]][_0xb363('0x3e')])){if(this['agents'][_0x1a3113[_0xb363('0x1c')]]){this[_0xb363('0x1b')][_0x1a3113['uniqueid']]={'queue':_0x1a3113[_0xb363('0x2c')],'interface':_0x1a3113[_0xb363('0x1c')],'destlinkedid':_0x1a3113['destlinkedid']};}}}catch(_0x48a1c7){logger[_0xb363('0x31')](_0xb363('0x3f'),_0x48a1c7['message']);}};Acw[_0xb363('0x19')][_0xb363('0x40')]=function(_0x2b5e2c){try{if(this[_0xb363('0x6')][_0x2b5e2c[_0xb363('0x2c')]]&&(this[_0xb363('0x6')][_0x2b5e2c['queue']][_0xb363('0x3')]||this['voiceQueues'][_0x2b5e2c[_0xb363('0x2c')]][_0xb363('0x3e')])){if(this[_0xb363('0x7')][_0x2b5e2c[_0xb363('0x1c')]]){this[_0xb363('0x1b')][_0x2b5e2c[_0xb363('0x2b')]]={'queue':_0x2b5e2c[_0xb363('0x2c')],'interface':_0x2b5e2c[_0xb363('0x1c')]};}}}catch(_0x1604b8){logger[_0xb363('0x31')]('[ACW][syncAgentConnectPreview]\x20%s',_0x1604b8[_0xb363('0x3d')]);}};Acw[_0xb363('0x19')][_0xb363('0xd')]=function(_0x2a162d){try{if(this['channels'][_0x2a162d[_0xb363('0x2b')]]&&_[_0xb363('0x41')](this['channels'][_0x2a162d[_0xb363('0x2b')]][_0xb363('0x42')])){logger[_0xb363('0x23')](_0xb363('0x43'),_0x2a162d[_0xb363('0x2b')]);this[_0xb363('0x1a')](_0x2a162d[_0xb363('0x2b')]);}else if(this[_0xb363('0x1b')][_0x2a162d[_0xb363('0x44')]]&&_[_0xb363('0x41')](this[_0xb363('0x1b')][_0x2a162d['linkedid']][_0xb363('0x42')])){logger['info'](_0xb363('0x45'),_0x2a162d[_0xb363('0x44')]);this[_0xb363('0x1a')](_0x2a162d[_0xb363('0x44')]);}}catch(_0xb2d115){logger[_0xb363('0x31')]('[ACW][syncHangupRequest]\x20%s',_0xb2d115[_0xb363('0x3d')]);}};Acw[_0xb363('0x19')][_0xb363('0xf')]=function(_0x5bebc2){try{if(this[_0xb363('0x1b')][_0x5bebc2[_0xb363('0x2b')]]&&this[_0xb363('0x1b')][_0x5bebc2[_0xb363('0x2b')]][_0xb363('0x42')]){logger[_0xb363('0x23')](_0xb363('0x46'),_0x5bebc2[_0xb363('0x2b')]);this[_0xb363('0x1a')](_0x5bebc2[_0xb363('0x2b')]);}else if(this[_0xb363('0x1b')][_0x5bebc2['linkedid']]&&this[_0xb363('0x1b')][_0x5bebc2['linkedid']][_0xb363('0x42')]){logger[_0xb363('0x23')](_0xb363('0x47'),_0x5bebc2[_0xb363('0x44')]);this[_0xb363('0x1a')](_0x5bebc2[_0xb363('0x44')]);}}catch(_0x238ae0){logger[_0xb363('0x31')](_0xb363('0x48'),_0x238ae0[_0xb363('0x3d')]);}};Acw[_0xb363('0x19')][_0xb363('0x13')]=function(_0x3dba7b){try{if(!_[_0xb363('0x49')](this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4a')]])){this[_0xb363('0x1a')](_0x3dba7b[_0xb363('0x4a')]);if(this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4b')]]){this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4b')]][_0xb363('0x42')]=!![];this['channels'][_0x3dba7b[_0xb363('0x4c')]]=this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4b')]];delete this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4b')]];}}else if(!_[_0xb363('0x49')](this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4c')]])){this[_0xb363('0x1a')](_0x3dba7b['transfertargetuniqueid']);if(this[_0xb363('0x1b')][_0x3dba7b['origtransfereruniqueid']]){this[_0xb363('0x1b')][_0x3dba7b['origtransfereruniqueid']][_0xb363('0x42')]=!![];this['channels'][_0x3dba7b[_0xb363('0x4a')]]=this[_0xb363('0x1b')][_0x3dba7b[_0xb363('0x4d')]];delete this[_0xb363('0x1b')][_0x3dba7b['origtransfereruniqueid']];}}}catch(_0x3b79d2){logger[_0xb363('0x31')](_0xb363('0x4e'),_0x3b79d2['message']);}};Acw['prototype']['syncBlindTransfer']=function(_0x323659){try{if(this[_0xb363('0x1b')][_0x323659[_0xb363('0x4f')]]){logger[_0xb363('0x23')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xb363('0x3b')](_0x323659[_0xb363('0x4f')]));this[_0xb363('0x1a')](_0x323659[_0xb363('0x4f')]);}else if(this[_0xb363('0x1b')][_0x323659['transfererlinkedid']]){logger[_0xb363('0x23')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x323659['transfererlinkedid']));this[_0xb363('0x1a')](_0x323659[_0xb363('0x50')]);}}catch(_0x3dfb86){logger[_0xb363('0x31')](_0xb363('0x51'),_0x3dfb86['message']);}};Acw[_0xb363('0x19')][_0xb363('0x11')]=function(_0x538f07){try{if(this[_0xb363('0x6')][_0x538f07[_0xb363('0x2c')]]&&this[_0xb363('0x6')][_0x538f07[_0xb363('0x2c')]]['autopause']===_0xb363('0x52')){if(this['agents'][_0x538f07[_0xb363('0x1c')]]){logger[_0xb363('0x23')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x538f07['uniqueid'],_0x538f07[_0xb363('0x1c')],_0x538f07[_0xb363('0x2c')]);return RpcUser[_0xb363('0x26')](this['agents'][_0x538f07[_0xb363('0x1c')]],'Auto-Pause',_0x538f07[_0xb363('0x2b')]);}}}catch(_0x37e9e6){logger[_0xb363('0x31')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x37e9e6[_0xb363('0x3d')]);}};module[_0xb363('0x53')]=Acw;
\ No newline at end of file
index cdeede0..658509a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f5=['keepConnected','promisify','error','format','actionSipShowRegistry','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','port','inspect','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','catch','log','close','asterisk-manager','util','lodash','../../config/logger','../../config/environment','asterisk','username'];(function(_0x39e9c4,_0x1fcc4a){var _0x2c6ad1=function(_0x2c3b49){while(--_0x2c3b49){_0x39e9c4['push'](_0x39e9c4['shift']());}};_0x2c6ad1(++_0x1fcc4a);}(_0x45f5,0x79));var _0x545f=function(_0x38175c,_0x2de69b){_0x38175c=_0x38175c-0x0;var _0x1566ad=_0x45f5[_0x38175c];return _0x1566ad;};'use strict';var Manager=require(_0x545f('0x0'));var BPromise=require('bluebird');var moment=require('moment');var util=require(_0x545f('0x1'));var _=require(_0x545f('0x2'));var logger=require(_0x545f('0x3'))('ami');var config=require(_0x545f('0x4'));var ami=new Manager(config[_0x545f('0x5')]['port'],config[_0x545f('0x5')]['ip'],config[_0x545f('0x5')][_0x545f('0x6')],config[_0x545f('0x5')]['password'],!![]);ami[_0x545f('0x7')]();ami['Action']=BPromise[_0x545f('0x8')](ami['action']);function error(_0x473d2e){logger[_0x545f('0x9')](util['format']('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x545f('0x5')]['username'],config[_0x545f('0x5')]['ip'],config[_0x545f('0x5')]['port'],util['inspect'](_0x473d2e,![],null)));}function close(){logger['error'](util[_0x545f('0xa')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x545f('0x5')][_0x545f('0x6')],config[_0x545f('0x5')]['ip'],config[_0x545f('0x5')]['port']));}ami[_0x545f('0xb')]=function(){return function(){return ami[_0x545f('0xc')]({'action':_0x545f('0xd')});};};ami[_0x545f('0xe')]=function(){return function(){return ami[_0x545f('0xc')]({'action':_0x545f('0xf')});};};ami[_0x545f('0x10')]=function(){return function(){return ami[_0x545f('0xc')]({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x545f('0xc')]({'action':_0x545f('0x11')});};};ami[_0x545f('0x12')]=function(){return function(){return ami[_0x545f('0xc')]({'action':_0x545f('0x13')});};};function connect(_0xf026c8){logger[_0x545f('0x14')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config['asterisk'][_0x545f('0x6')],config['asterisk']['ip'],config[_0x545f('0x5')]['port']));ami[_0x545f('0x15')](_0x545f('0x9'),error);ami[_0x545f('0x15')]('close',close);}ami['on'](_0x545f('0x16'),connect);ami['on'](_0x545f('0x17'),function(_0x235dee){logger[_0x545f('0x14')](util[_0x545f('0xa')](_0x545f('0x18'),config['asterisk']['username'],config[_0x545f('0x5')]['ip'],config['asterisk'][_0x545f('0x19')],util[_0x545f('0x1a')](_0x235dee,![],null)));});ami['on']('fullybooted',function(_0x30d0cc){logger['info'](util[_0x545f('0xa')](_0x545f('0x1b'),config['asterisk'][_0x545f('0x6')],config[_0x545f('0x5')]['ip'],config['asterisk'][_0x545f('0x19')]));return BPromise['resolve']()['then'](ami[_0x545f('0xb')]())[_0x545f('0x1c')](ami['actionDeviceStateList']())['then'](ami[_0x545f('0x10')]())['then'](ami['actionQueueSummary']())[_0x545f('0x1c')](ami[_0x545f('0x12')]())[_0x545f('0x1d')](function(_0x3bcfc2){console[_0x545f('0x1e')](_0x3bcfc2);});});ami[_0x545f('0x15')](_0x545f('0x9'),error);ami[_0x545f('0x15')](_0x545f('0x1f'),close);module['exports']=ami;
\ No newline at end of file
+var _0xe0f7=['exports','asterisk-manager','bluebird','moment','../../config/environment','asterisk','port','password','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','actionDeviceStateList','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','close','connect','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','catch','log'];(function(_0x119ded,_0x497e72){var _0x22108b=function(_0x3da0cf){while(--_0x3da0cf){_0x119ded['push'](_0x119ded['shift']());}};_0x22108b(++_0x497e72);}(_0xe0f7,0x15f));var _0x7e0f=function(_0x2510bf,_0x85e2b6){_0x2510bf=_0x2510bf-0x0;var _0x1c1eaf=_0xe0f7[_0x2510bf];return _0x1c1eaf;};'use strict';var Manager=require(_0x7e0f('0x0'));var BPromise=require(_0x7e0f('0x1'));var moment=require(_0x7e0f('0x2'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')('ami');var config=require(_0x7e0f('0x3'));var ami=new Manager(config[_0x7e0f('0x4')][_0x7e0f('0x5')],config[_0x7e0f('0x4')]['ip'],config[_0x7e0f('0x4')]['username'],config[_0x7e0f('0x4')][_0x7e0f('0x6')],!![]);ami['keepConnected']();ami[_0x7e0f('0x7')]=BPromise[_0x7e0f('0x8')](ami[_0x7e0f('0x9')]);function error(_0x2e3680){logger[_0x7e0f('0xa')](util[_0x7e0f('0xb')](_0x7e0f('0xc'),config[_0x7e0f('0x4')][_0x7e0f('0xd')],config[_0x7e0f('0x4')]['ip'],config[_0x7e0f('0x4')][_0x7e0f('0x5')],util[_0x7e0f('0xe')](_0x2e3680,![],null)));}function close(){logger[_0x7e0f('0xa')](util['format'](_0x7e0f('0xf'),config[_0x7e0f('0x4')][_0x7e0f('0xd')],config[_0x7e0f('0x4')]['ip'],config[_0x7e0f('0x4')]['port']));}ami[_0x7e0f('0x10')]=function(){return function(){return ami[_0x7e0f('0x7')]({'action':'sipshowregistry'});};};ami[_0x7e0f('0x11')]=function(){return function(){return ami[_0x7e0f('0x7')]({'action':'devicestatelist'});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x7e0f('0x7')]({'action':_0x7e0f('0x12')});};};ami[_0x7e0f('0x13')]=function(){return function(){return ami[_0x7e0f('0x7')]({'action':_0x7e0f('0x14')});};};ami[_0x7e0f('0x15')]=function(){return function(){return ami[_0x7e0f('0x7')]({'action':_0x7e0f('0x16')});};};function connect(_0x6090d9){logger[_0x7e0f('0x17')](util[_0x7e0f('0xb')]('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0x7e0f('0x4')][_0x7e0f('0xd')],config[_0x7e0f('0x4')]['ip'],config[_0x7e0f('0x4')]['port']));ami[_0x7e0f('0x18')]('error',error);ami['once'](_0x7e0f('0x19'),close);}ami['on'](_0x7e0f('0x1a'),connect);ami['on']('shutdown',function(_0x337d10){logger[_0x7e0f('0x17')](util[_0x7e0f('0xb')](_0x7e0f('0x1b'),config[_0x7e0f('0x4')][_0x7e0f('0xd')],config[_0x7e0f('0x4')]['ip'],config['asterisk']['port'],util[_0x7e0f('0xe')](_0x337d10,![],null)));});ami['on'](_0x7e0f('0x1c'),function(_0x2698aa){logger[_0x7e0f('0x17')](util['format'](_0x7e0f('0x1d'),config['asterisk'][_0x7e0f('0xd')],config[_0x7e0f('0x4')]['ip'],config[_0x7e0f('0x4')][_0x7e0f('0x5')]));return BPromise[_0x7e0f('0x1e')]()[_0x7e0f('0x1f')](ami[_0x7e0f('0x10')]())[_0x7e0f('0x1f')](ami['actionDeviceStateList']())[_0x7e0f('0x1f')](ami['actionSipPeerStatus']())[_0x7e0f('0x1f')](ami[_0x7e0f('0x13')]())[_0x7e0f('0x1f')](ami[_0x7e0f('0x15')]())[_0x7e0f('0x20')](function(_0x3a0fb4){console[_0x7e0f('0x21')](_0x3a0fb4);});});ami['once'](_0x7e0f('0xa'),error);ami[_0x7e0f('0x18')](_0x7e0f('0x19'),close);module[_0x7e0f('0x22')]=ami;
\ No newline at end of file
index ba76b48..1776cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['rpc','memberReport','error','message','result','catch','exports','../../config/logger','ami','client','http','Request','request','then','debug'];(function(_0x35cbed,_0x369b7e){var _0x27017d=function(_0x3da84c){while(--_0x3da84c){_0x35cbed['push'](_0x35cbed['shift']());}};_0x27017d(++_0x369b7e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var client=jayson[_0x3071('0x2')][_0x3071('0x3')]({'port':0x2329});client[_0x3071('0x4')]=function(_0x52b5fb,_0x2c547f){return new BPromise(function(_0x7b18a4,_0x33a70c){return client[_0x3071('0x5')](_0x52b5fb,_0x2c547f)[_0x3071('0x6')](function(_0x41cf76){logger[_0x3071('0x7')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x2c547f,_0x41cf76);if(_0x41cf76[_0x3071('0xa')]){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x41cf76['error'][_0x3071('0xb')],_0x2c547f);return _0x33a70c(_0x41cf76[_0x3071('0xa')][_0x3071('0xb')]);}else{return _0x7b18a4(_0x41cf76[_0x3071('0xc')]);}})[_0x3071('0xd')](function(_0x4a470a){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x4a470a,_0x2c547f);return _0x33a70c(_0x4a470a);});});};module[_0x3071('0xe')]=client;
\ No newline at end of file
+var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xb7e7[_0x1e3c16];return _0x47a0c9;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
index 170beaa..254455b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0121=['queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','getQueue','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number'];(function(_0x4f76ec,_0x45faaf){var _0x47475c=function(_0x2725f7){while(--_0x2725f7){_0x4f76ec['push'](_0x4f76ec['shift']());}};_0x47475c(++_0x45faaf);}(_0x0121,0xa7));var _0x1012=function(_0x53439e,_0x335150){_0x53439e=_0x53439e-0x0;var _0x285e18=_0x0121[_0x53439e];return _0x285e18;};'use strict';var util=require(_0x1012('0x0'));var _=require(_0x1012('0x1'));var moment=require(_0x1012('0x2'));function checkNameSurname(_0x1b0eb6,_0x34b24f,_0x27042b){var _0x5e9389='';if(!_[_0x1012('0x3')](_0x34b24f)&&_0x1012('0x4')===typeof _0x34b24f){_0x5e9389+=_0x34b24f;}if(!_[_0x1012('0x3')](_0x27042b)&&_0x1012('0x4')===typeof _0x27042b){_0x5e9389+='\x20'+_0x27042b;}if(_0x5e9389!==''){return _0x5e9389;}return _0x1b0eb6;}function Action(_0x5e8504,_0x1d4d68,_0x109b85){this[_0x1012('0x5')]=_0x5e8504;this[_0x1012('0x6')]=_0x109b85||undefined;this[_0x1012('0x7')]=checkNameSurname(_0x1d4d68[_0x1012('0x8')][_0x1012('0x9')],_0x1d4d68[_0x1012('0x8')][_0x1012('0xa')],_0x1d4d68['Contact'][_0x1012('0xb')]);this[_0x1012('0xc')]=_0x1d4d68[_0x1012('0x8')][_0x1012('0x9')];this[_0x1012('0xd')]=_0x5e8504[_0x1012('0x7')];this[_0x1012('0xe')]=_0x1d4d68[_0x1012('0xe')]||![];this[_0x1012('0xf')]=_0x5e8504[_0x1012('0xf')];this[_0x1012('0x10')]=_0x5e8504[_0x1012('0x10')]||0x3;this[_0x1012('0x11')]=_0x1d4d68['scheduledat'];this['countbusyretry']=_0x1d4d68[_0x1012('0x12')];this[_0x1012('0x13')]=_0x1d4d68['countcongestionretry'];this[_0x1012('0x14')]=_0x1d4d68[_0x1012('0x14')];this['countnosuchnumberretry']=_0x1d4d68['countnosuchnumberretry'];this[_0x1012('0x15')]=_0x1d4d68[_0x1012('0x15')];this[_0x1012('0x16')]=_0x1d4d68[_0x1012('0x16')];this['countmachineretry']=_0x1d4d68[_0x1012('0x17')];this[_0x1012('0x18')]=_0x1d4d68['countagentrejectretry'];this[_0x1012('0x19')]=_0x1d4d68[_0x1012('0x19')];this['ListId']=_0x1d4d68[_0x1012('0x1a')];this[_0x1012('0x1b')]=_0x1d4d68[_0x1012('0x1b')];this[_0x1012('0x1c')]=_0x1d4d68['VoiceQueueId'];this['CampaignId']=_0x1d4d68[_0x1012('0x1d')];this[_0x1012('0x1e')]=_0x1d4d68['id'];this['ContactFirstName']=_0x1d4d68[_0x1012('0x8')][_0x1012('0xa')]||'';this['starttime']=moment()[_0x1012('0x1f')](_0x1012('0x20'));this['callback']=_0x1d4d68[_0x1012('0x21')];this[_0x1012('0x22')]=_0x1d4d68['callbackuniqueid'];this['callbackat']=_0x1d4d68[_0x1012('0x23')];this[_0x1012('0x24')]=_0x1d4d68[_0x1012('0x24')];this[_0x1012('0x25')]='';this[_0x1012('0x26')]='';}Action[_0x1012('0x27')][_0x1012('0x28')]=function(){return util[_0x1012('0x1f')](_0x1012('0x29'),this[_0x1012('0x7')],this[_0x1012('0x5')][_0x1012('0x2a')]>0x0?this[_0x1012('0xc')]['substring'](this[_0x1012('0x5')]['dialCutDigit']):this[_0x1012('0xc')]);};Action[_0x1012('0x27')][_0x1012('0x2b')]=function(){return this[_0x1012('0xd')];};module[_0x1012('0x2c')]=Action;
\ No newline at end of file
+var _0x5135=['scheduledat','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','number','getQueue','exports','util','moment','string','isNil','voiceQueue','uniqueid','Contact','phone','name','active','type','dialQueueTimeout'];(function(_0x42fd32,_0x12d3ae){var _0x328b6f=function(_0x3b9d38){while(--_0x3b9d38){_0x42fd32['push'](_0x42fd32['shift']());}};_0x328b6f(++_0x12d3ae);}(_0x5135,0x180));var _0x5513=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5135[_0x173441];return _0x2423a8;};'use strict';var util=require(_0x5513('0x0'));var _=require('lodash');var moment=require(_0x5513('0x1'));function checkNameSurname(_0x4b5ae6,_0xb1cab0,_0x15efaa){var _0xe81bd='';if(!_['isNil'](_0xb1cab0)&&_0x5513('0x2')===typeof _0xb1cab0){_0xe81bd+=_0xb1cab0;}if(!_[_0x5513('0x3')](_0x15efaa)&&_0x5513('0x2')===typeof _0x15efaa){_0xe81bd+='\x20'+_0x15efaa;}if(_0xe81bd!==''){return _0xe81bd;}return _0x4b5ae6;}function Action(_0x45facf,_0x328ba8,_0x2bc256){this[_0x5513('0x4')]=_0x45facf;this[_0x5513('0x5')]=_0x2bc256||undefined;this['name']=checkNameSurname(_0x328ba8[_0x5513('0x6')][_0x5513('0x7')],_0x328ba8[_0x5513('0x6')]['firstName'],_0x328ba8[_0x5513('0x6')]['lastName']);this['number']=_0x328ba8[_0x5513('0x6')]['phone'];this['queue']=_0x45facf[_0x5513('0x8')];this[_0x5513('0x9')]=_0x328ba8[_0x5513('0x9')]||![];this[_0x5513('0xa')]=_0x45facf[_0x5513('0xa')];this[_0x5513('0xb')]=_0x45facf['dialQueueTimeout']||0x3;this[_0x5513('0xc')]=_0x328ba8[_0x5513('0xc')];this[_0x5513('0xd')]=_0x328ba8['countbusyretry'];this['countcongestionretry']=_0x328ba8['countcongestionretry'];this[_0x5513('0xe')]=_0x328ba8[_0x5513('0xe')];this['countnosuchnumberretry']=_0x328ba8[_0x5513('0xf')];this[_0x5513('0x10')]=_0x328ba8['countdropretry'];this['countabandonedretry']=_0x328ba8[_0x5513('0x11')];this[_0x5513('0x12')]=_0x328ba8[_0x5513('0x12')];this[_0x5513('0x13')]=_0x328ba8['countagentrejectretry'];this[_0x5513('0x14')]=_0x328ba8[_0x5513('0x14')];this['ListId']=_0x328ba8[_0x5513('0x15')];this[_0x5513('0x16')]=_0x328ba8[_0x5513('0x16')];this[_0x5513('0x17')]=_0x328ba8['VoiceQueueId'];this[_0x5513('0x18')]=_0x328ba8[_0x5513('0x18')];this[_0x5513('0x19')]=_0x328ba8['id'];this[_0x5513('0x1a')]=_0x328ba8[_0x5513('0x6')][_0x5513('0x1b')]||'';this[_0x5513('0x1c')]=moment()[_0x5513('0x1d')](_0x5513('0x1e'));this[_0x5513('0x1f')]=_0x328ba8[_0x5513('0x1f')];this['callbackuniqueid']=_0x328ba8['callbackuniqueid'];this[_0x5513('0x20')]=_0x328ba8[_0x5513('0x20')];this[_0x5513('0x21')]=_0x328ba8[_0x5513('0x21')];this[_0x5513('0x22')]='';this[_0x5513('0x23')]='';}Action[_0x5513('0x24')][_0x5513('0x25')]=function(){return util['format'](_0x5513('0x26'),this[_0x5513('0x8')],this[_0x5513('0x4')][_0x5513('0x27')]>0x0?this['number'][_0x5513('0x28')](this[_0x5513('0x4')]['dialCutDigit']):this[_0x5513('0x29')]);};Action['prototype'][_0x5513('0x2a')]=function(){return this['queue'];};module[_0x5513('0x2b')]=Action;
\ No newline at end of file
index 09b6937..3e696a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed20=['campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','number','starttime','responsetime','answertime','ringtime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','statedesc','Answer','scheduledat','type'];(function(_0x3b9fc6,_0x442ae2){var _0x34b4ee=function(_0x42be9e){while(--_0x42be9e){_0x3b9fc6['push'](_0x3b9fc6['shift']());}};_0x34b4ee(++_0x442ae2);}(_0xed20,0xce));var _0x0ed2=function(_0x2d14da,_0x476cbf){_0x2d14da=_0x2d14da-0x0;var _0x2c826d=_0xed20[_0x2d14da];return _0x2c826d;};'use strict';var util=require(_0x0ed2('0x0'));var _=require(_0x0ed2('0x1'));var moment=require(_0x0ed2('0x2'));function getSeconds(_0x5e7deb,_0x2a9ed0){var _0x380277=moment(_0x5e7deb)[_0x0ed2('0x3')](0x0);var _0x2a6405=moment(_0x2a9ed0)[_0x0ed2('0x3')](0x0);return _0x380277[_0x0ed2('0x4')](_0x2a6405,'seconds');}function AgentComplete(_0x1aaa76,_0x88640a){this['state']=0x4;this[_0x0ed2('0x5')]=_0x0ed2('0x6');this[_0x0ed2('0x7')]=_0x1aaa76[_0x0ed2('0x7')];this['type']=_0x1aaa76[_0x0ed2('0x8')];this[_0x0ed2('0x9')]=_0x1aaa76[_0x0ed2('0x8')]===_0x0ed2('0xa')?'queue':_0x1aaa76['type'];this[_0x0ed2('0xb')]=_0x1aaa76[_0x0ed2('0xb')];this[_0x0ed2('0xc')]=_0x1aaa76[_0x0ed2('0xc')];this[_0x0ed2('0xd')]=_0x1aaa76[_0x0ed2('0xd')];this[_0x0ed2('0xe')]=_0x1aaa76[_0x0ed2('0xb')]+_0x1aaa76[_0x0ed2('0xc')]+_0x1aaa76[_0x0ed2('0xd')]+_0x1aaa76[_0x0ed2('0xf')]+_0x1aaa76[_0x0ed2('0x10')]+_0x1aaa76['countabandonedretry']+_0x1aaa76[_0x0ed2('0x11')]+_0x1aaa76[_0x0ed2('0x12')];this[_0x0ed2('0xf')]=_0x1aaa76[_0x0ed2('0xf')];this[_0x0ed2('0x10')]=_0x1aaa76['countdropretry'];this[_0x0ed2('0x13')]=_0x1aaa76[_0x0ed2('0x13')];this[_0x0ed2('0x11')]=_0x1aaa76['countmachineretry'];this[_0x0ed2('0x12')]=_0x1aaa76['countagentrejectretry'];this[_0x0ed2('0x14')]=_0x88640a[_0x0ed2('0x14')];this[_0x0ed2('0x15')]=_0x1aaa76['name'];this['calleridnum']=_0x1aaa76[_0x0ed2('0x16')];this[_0x0ed2('0x17')]=_0x1aaa76['starttime'];this[_0x0ed2('0x18')]=_0x1aaa76['responsetime'];this[_0x0ed2('0x19')]=_0x1aaa76[_0x0ed2('0x19')];this['endtime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0ed2('0x1a')]=getSeconds(_0x1aaa76[_0x0ed2('0x18')],_0x1aaa76[_0x0ed2('0x17')]);this[_0x0ed2('0x1b')]=getSeconds(_0x1aaa76[_0x0ed2('0x19')],_0x1aaa76[_0x0ed2('0x18')]);this[_0x0ed2('0x1c')]=getSeconds(this['endtime'],_0x1aaa76['answertime']);this[_0x0ed2('0x1d')]=_0x88640a[_0x0ed2('0x1d')];this[_0x0ed2('0x1e')]=_0x88640a[_0x0ed2('0x1e')];this[_0x0ed2('0x1f')]=_0x88640a[_0x0ed2('0x1f')];this[_0x0ed2('0x20')]=_0x1aaa76[_0x0ed2('0x20')];this['callbackuniqueid']=_0x1aaa76[_0x0ed2('0x21')];this[_0x0ed2('0x22')]=_0x1aaa76[_0x0ed2('0x22')];this[_0x0ed2('0x23')]=_0x1aaa76[_0x0ed2('0x23')];this['ContactId']=_0x1aaa76[_0x0ed2('0x24')];this[_0x0ed2('0x25')]=_0x1aaa76[_0x0ed2('0x25')];this[_0x0ed2('0x26')]=_0x1aaa76[_0x0ed2('0x26')];this[_0x0ed2('0x27')]=_0x1aaa76[_0x0ed2('0x27')];this[_0x0ed2('0x28')]=_0x1aaa76[_0x0ed2('0x28')];this[_0x0ed2('0x29')]=_0x1aaa76['originatecalleridnum']||'';this[_0x0ed2('0x2a')]=_0x1aaa76['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0xfaba=['ringtime','holdtime','talktime','queue','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2c16ab,_0xaa3f47){var _0x50d50c=function(_0x4bd914){while(--_0x4bd914){_0x2c16ab['push'](_0x2c16ab['shift']());}};_0x50d50c(++_0xaa3f47);}(_0xfaba,0x168));var _0xafab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfaba[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xafab('0x0'));var _=require(_0xafab('0x1'));var moment=require(_0xafab('0x2'));function getSeconds(_0x2a15f7,_0x9dbef3){var _0x4e524f=moment(_0x2a15f7)[_0xafab('0x3')](0x0);var _0x353b8f=moment(_0x9dbef3)[_0xafab('0x3')](0x0);return _0x4e524f[_0xafab('0x4')](_0x353b8f,'seconds');}function AgentComplete(_0xf8bf18,_0x1af1df){this[_0xafab('0x5')]=0x4;this[_0xafab('0x6')]=_0xafab('0x7');this[_0xafab('0x8')]=_0xf8bf18[_0xafab('0x8')];this[_0xafab('0x9')]=_0xf8bf18['type'];this[_0xafab('0xa')]=_0xf8bf18[_0xafab('0x9')]===_0xafab('0xb')?'queue':_0xf8bf18[_0xafab('0x9')];this[_0xafab('0xc')]=_0xf8bf18[_0xafab('0xc')];this[_0xafab('0xd')]=_0xf8bf18['countcongestionretry'];this['countnoanswerretry']=_0xf8bf18[_0xafab('0xe')];this[_0xafab('0xf')]=_0xf8bf18[_0xafab('0xc')]+_0xf8bf18['countcongestionretry']+_0xf8bf18[_0xafab('0xe')]+_0xf8bf18[_0xafab('0x10')]+_0xf8bf18['countdropretry']+_0xf8bf18[_0xafab('0x11')]+_0xf8bf18[_0xafab('0x12')]+_0xf8bf18[_0xafab('0x13')];this[_0xafab('0x10')]=_0xf8bf18[_0xafab('0x10')];this[_0xafab('0x14')]=_0xf8bf18['countdropretry'];this[_0xafab('0x11')]=_0xf8bf18[_0xafab('0x11')];this[_0xafab('0x12')]=_0xf8bf18[_0xafab('0x12')];this[_0xafab('0x13')]=_0xf8bf18[_0xafab('0x13')];this[_0xafab('0x15')]=_0x1af1df[_0xafab('0x15')];this[_0xafab('0x16')]=_0xf8bf18[_0xafab('0x17')];this[_0xafab('0x18')]=_0xf8bf18[_0xafab('0x19')];this[_0xafab('0x1a')]=_0xf8bf18[_0xafab('0x1a')];this[_0xafab('0x1b')]=_0xf8bf18[_0xafab('0x1b')];this[_0xafab('0x1c')]=_0xf8bf18[_0xafab('0x1c')];this[_0xafab('0x1d')]=moment()[_0xafab('0x1e')](_0xafab('0x1f'));this[_0xafab('0x20')]=getSeconds(_0xf8bf18['responsetime'],_0xf8bf18['starttime']);this[_0xafab('0x21')]=getSeconds(_0xf8bf18['answertime'],_0xf8bf18[_0xafab('0x1b')]);this[_0xafab('0x22')]=getSeconds(this[_0xafab('0x1d')],_0xf8bf18[_0xafab('0x1c')]);this[_0xafab('0x23')]=_0x1af1df['queue'];this['membername']=_0x1af1df['membername'];this['reason']=_0x1af1df[_0xafab('0x24')];this[_0xafab('0x25')]=_0xf8bf18['callback'];this[_0xafab('0x26')]=_0xf8bf18[_0xafab('0x26')];this[_0xafab('0x27')]=_0xf8bf18[_0xafab('0x27')];this[_0xafab('0x28')]=_0xf8bf18[_0xafab('0x28')];this[_0xafab('0x29')]=_0xf8bf18['ContactId'];this[_0xafab('0x2a')]=_0xf8bf18[_0xafab('0x2a')];this[_0xafab('0x2b')]=_0xf8bf18[_0xafab('0x2b')];this[_0xafab('0x2c')]=_0xf8bf18[_0xafab('0x2c')];this['CampaignId']=_0xf8bf18[_0xafab('0x2d')];this[_0xafab('0x2e')]=_0xf8bf18['originatecalleridnum']||'';this[_0xafab('0x2f')]=_0xf8bf18[_0xafab('0x2f')]||'';}module[_0xafab('0x30')]=AgentComplete;
\ No newline at end of file
index aceb3cb..e3f2ba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4d=['countmachineretry','countagentrejectretry','calleridname','calleridnum','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','exports','util','lodash','moment','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0xfdd689,_0x4d1493){var _0x15690f=function(_0x4e21a7){while(--_0x4e21a7){_0xfdd689['push'](_0xfdd689['shift']());}};_0x15690f(++_0x4d1493);}(_0x0d4d,0x132));var _0xd0d4=function(_0x1a8b96,_0x56ae9d){_0x1a8b96=_0x1a8b96-0x0;var _0x3d451c=_0x0d4d[_0x1a8b96];return _0x3d451c;};'use strict';var util=require(_0xd0d4('0x0'));var _=require(_0xd0d4('0x1'));var moment=require(_0xd0d4('0x2'));function getSeconds(_0x24a4c4,_0x1f74ab){var _0x1515e0=moment(_0x24a4c4)['milliseconds'](0x0);var _0x984664=moment(_0x1f74ab)['milliseconds'](0x0);return _0x1515e0[_0xd0d4('0x3')](_0x984664,_0xd0d4('0x4'));}function Final(_0x582aaa){this[_0xd0d4('0x5')]=_0x582aaa[_0xd0d4('0x5')];this[_0xd0d4('0x6')]=_0x582aaa['scheduledat'];this[_0xd0d4('0x7')]=_0x582aaa['type'];this[_0xd0d4('0x8')]=_0x582aaa['type']===_0xd0d4('0x9')?_0xd0d4('0xa'):_0x582aaa[_0xd0d4('0x7')];this['countbusyretry']=_0x582aaa[_0xd0d4('0xb')];this[_0xd0d4('0xc')]=_0x582aaa[_0xd0d4('0xc')];this[_0xd0d4('0xd')]=_0x582aaa[_0xd0d4('0xd')];this[_0xd0d4('0xe')]=_0x582aaa['countbusyretry']+_0x582aaa[_0xd0d4('0xc')]+_0x582aaa[_0xd0d4('0xd')]+_0x582aaa[_0xd0d4('0xf')]+_0x582aaa[_0xd0d4('0x10')]+_0x582aaa[_0xd0d4('0x11')]+_0x582aaa[_0xd0d4('0x12')]+_0x582aaa['countagentrejectretry'];this[_0xd0d4('0xf')]=_0x582aaa[_0xd0d4('0xf')];this[_0xd0d4('0x10')]=_0x582aaa['countdropretry'];this['countabandonedretry']=_0x582aaa[_0xd0d4('0x11')];this[_0xd0d4('0x12')]=_0x582aaa['countmachineretry'];this[_0xd0d4('0x13')]=_0x582aaa[_0xd0d4('0x13')];this['queue']=_0x582aaa['queue'];this[_0xd0d4('0x14')]=_0x582aaa[_0xd0d4('0x14')];this[_0xd0d4('0x15')]=_0x582aaa['calleridnum'];this['starttime']=_0x582aaa['starttime'];this[_0xd0d4('0x16')]=_0x582aaa[_0xd0d4('0x16')];this[_0xd0d4('0x17')]=_0x582aaa['responsetime'];this['ringtime']=_0x582aaa[_0xd0d4('0x18')]||0x0;this['holdtime']=_0x582aaa[_0xd0d4('0x19')]||0x0;this[_0xd0d4('0x1a')]=_0x582aaa[_0xd0d4('0x1a')]||0x0;this['callback']=_0x582aaa[_0xd0d4('0x1b')];this['callbackuniqueid']=_0x582aaa['callbackuniqueid'];this[_0xd0d4('0x1c')]=_0x582aaa[_0xd0d4('0x1c')];this['recallme']=_0x582aaa['recallme'];this[_0xd0d4('0x1d')]=_0x582aaa[_0xd0d4('0x1d')];this[_0xd0d4('0x1e')]=_0x582aaa[_0xd0d4('0x1e')];this[_0xd0d4('0x1f')]=_0x582aaa[_0xd0d4('0x1f')];this['VoiceQueueId']=_0x582aaa[_0xd0d4('0x20')];this['CampaignId']=_0x582aaa[_0xd0d4('0x21')];this[_0xd0d4('0x22')]=_0x582aaa[_0xd0d4('0x22')]||'';this['originatecalleridname']=_0x582aaa['originatecalleridname']||'';}module[_0xd0d4('0x23')]=Final;
\ No newline at end of file
+var _0x99c9=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','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','campaigntype','outbound','queue'];(function(_0x5a2cd2,_0x8d06d8){var _0x2bbe47=function(_0x3286ac){while(--_0x3286ac){_0x5a2cd2['push'](_0x5a2cd2['shift']());}};_0x2bbe47(++_0x8d06d8);}(_0x99c9,0x13c));var _0x999c=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x99c9[_0x4ae6ef];return _0x3cbb4e;};'use strict';var util=require(_0x999c('0x0'));var _=require(_0x999c('0x1'));var moment=require(_0x999c('0x2'));function getSeconds(_0x23d5a4,_0x2bb83d){var _0x16a7a3=moment(_0x23d5a4)[_0x999c('0x3')](0x0);var _0x52dc75=moment(_0x2bb83d)[_0x999c('0x3')](0x0);return _0x16a7a3[_0x999c('0x4')](_0x52dc75,_0x999c('0x5'));}function Final(_0x347ee0){this[_0x999c('0x6')]=_0x347ee0[_0x999c('0x6')];this[_0x999c('0x7')]=_0x347ee0[_0x999c('0x7')];this[_0x999c('0x8')]=_0x347ee0[_0x999c('0x8')];this[_0x999c('0x9')]=_0x347ee0[_0x999c('0x8')]===_0x999c('0xa')?_0x999c('0xb'):_0x347ee0['type'];this[_0x999c('0xc')]=_0x347ee0[_0x999c('0xc')];this['countcongestionretry']=_0x347ee0[_0x999c('0xd')];this[_0x999c('0xe')]=_0x347ee0[_0x999c('0xe')];this[_0x999c('0xf')]=_0x347ee0[_0x999c('0xc')]+_0x347ee0[_0x999c('0xd')]+_0x347ee0[_0x999c('0xe')]+_0x347ee0[_0x999c('0x10')]+_0x347ee0[_0x999c('0x11')]+_0x347ee0[_0x999c('0x12')]+_0x347ee0[_0x999c('0x13')]+_0x347ee0[_0x999c('0x14')];this['countnosuchnumberretry']=_0x347ee0[_0x999c('0x10')];this[_0x999c('0x11')]=_0x347ee0['countdropretry'];this['countabandonedretry']=_0x347ee0['countabandonedretry'];this[_0x999c('0x13')]=_0x347ee0[_0x999c('0x13')];this[_0x999c('0x14')]=_0x347ee0[_0x999c('0x14')];this[_0x999c('0xb')]=_0x347ee0['queue'];this[_0x999c('0x15')]=_0x347ee0[_0x999c('0x15')];this[_0x999c('0x16')]=_0x347ee0[_0x999c('0x16')];this[_0x999c('0x17')]=_0x347ee0['starttime'];this[_0x999c('0x18')]=_0x347ee0[_0x999c('0x18')];this[_0x999c('0x19')]=_0x347ee0[_0x999c('0x18')];this[_0x999c('0x1a')]=_0x347ee0['ringtime']||0x0;this[_0x999c('0x1b')]=_0x347ee0[_0x999c('0x1b')]||0x0;this[_0x999c('0x1c')]=_0x347ee0[_0x999c('0x1c')]||0x0;this[_0x999c('0x1d')]=_0x347ee0[_0x999c('0x1d')];this['callbackuniqueid']=_0x347ee0[_0x999c('0x1e')];this[_0x999c('0x1f')]=_0x347ee0[_0x999c('0x1f')];this[_0x999c('0x20')]=_0x347ee0[_0x999c('0x20')];this[_0x999c('0x21')]=_0x347ee0[_0x999c('0x21')];this[_0x999c('0x22')]=_0x347ee0[_0x999c('0x22')];this[_0x999c('0x23')]=_0x347ee0[_0x999c('0x23')];this['VoiceQueueId']=_0x347ee0[_0x999c('0x24')];this[_0x999c('0x25')]=_0x347ee0[_0x999c('0x25')];this[_0x999c('0x26')]=_0x347ee0[_0x999c('0x26')]||'';this[_0x999c('0x27')]=_0x347ee0['originatecalleridname']||'';}module[_0x999c('0x28')]=Final;
\ No newline at end of file
index 3acdfed..b10a245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d28=['holdtime','talktime','endtime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','lodash','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','calleridnum','number','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','starttime'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x0d28,0x65));var _0x80d2=function(_0x3bf1e0,_0x1580be){_0x3bf1e0=_0x3bf1e0-0x0;var _0x5a9ded=_0x0d28[_0x3bf1e0];return _0x5a9ded;};'use strict';var util=require(_0x80d2('0x0'));var _=require(_0x80d2('0x1'));var moment=require(_0x80d2('0x2'));function getSeconds(_0x4bd878,_0x37fdfc){var _0x1d45bf=moment(_0x4bd878)[_0x80d2('0x3')](0x0);var _0x3afd08=moment(_0x37fdfc)[_0x80d2('0x3')](0x0);return _0x1d45bf[_0x80d2('0x4')](_0x3afd08,_0x80d2('0x5'));}function Hangup(_0x406e1a,_0x130048){this['state']=0x4;this[_0x80d2('0x6')]=_0x80d2('0x7');this[_0x80d2('0x8')]=_0x406e1a['scheduledat'];this['type']=_0x406e1a[_0x80d2('0x9')];this[_0x80d2('0xa')]=_0x406e1a[_0x80d2('0x9')]==='outbound'?'queue':_0x406e1a[_0x80d2('0x9')];this[_0x80d2('0xb')]=_0x406e1a['countbusyretry'];this[_0x80d2('0xc')]=_0x406e1a[_0x80d2('0xc')];this['countnoanswerretry']=_0x406e1a[_0x80d2('0xd')];this['countglobal']=_0x406e1a[_0x80d2('0xb')]+_0x406e1a[_0x80d2('0xc')]+_0x406e1a[_0x80d2('0xd')]+_0x406e1a['countnosuchnumberretry']+_0x406e1a[_0x80d2('0xe')]+_0x406e1a[_0x80d2('0xf')]+_0x406e1a[_0x80d2('0x10')]+_0x406e1a[_0x80d2('0x11')];this['countnosuchnumberretry']=_0x406e1a[_0x80d2('0x12')];this[_0x80d2('0xe')]=_0x406e1a[_0x80d2('0xe')];this[_0x80d2('0xf')]=_0x406e1a[_0x80d2('0xf')];this[_0x80d2('0x10')]=_0x406e1a[_0x80d2('0x10')];this[_0x80d2('0x11')]=_0x406e1a[_0x80d2('0x11')];this['uniqueid']=_0x130048[_0x80d2('0x13')];this[_0x80d2('0x14')]=_0x406e1a['name'];this[_0x80d2('0x15')]=_0x406e1a[_0x80d2('0x16')];this['starttime']=_0x406e1a['starttime'];this[_0x80d2('0x17')]=_0x406e1a['responsetime'];this['endtime']=moment()[_0x80d2('0x18')](_0x80d2('0x19'));this[_0x80d2('0x1a')]=getSeconds(_0x406e1a[_0x80d2('0x17')],_0x406e1a[_0x80d2('0x1b')]);this[_0x80d2('0x1c')]=0x0;this[_0x80d2('0x1d')]=getSeconds(this[_0x80d2('0x1e')],_0x406e1a[_0x80d2('0x17')]);this[_0x80d2('0x1f')]=_0x406e1a[_0x80d2('0x1f')];this[_0x80d2('0x20')]='IVR';this[_0x80d2('0x21')]=_0x130048['cause-txt'];this[_0x80d2('0x22')]=_0x406e1a[_0x80d2('0x22')];this['callbackuniqueid']=_0x406e1a[_0x80d2('0x23')];this[_0x80d2('0x24')]=_0x406e1a[_0x80d2('0x24')];this[_0x80d2('0x25')]=_0x406e1a['recallme'];this[_0x80d2('0x26')]=_0x406e1a[_0x80d2('0x26')];this['ListId']=_0x406e1a[_0x80d2('0x27')];this[_0x80d2('0x28')]=_0x406e1a[_0x80d2('0x28')];this[_0x80d2('0x29')]=_0x406e1a['VoiceQueueId'];this[_0x80d2('0x2a')]=_0x406e1a[_0x80d2('0x2a')];}module['exports']=Hangup;
\ No newline at end of file
+var _0xfd4e=['countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','YYYY-MM-DD\x20HH:mm:ss','talktime','endtime','queue','membername','IVR','reason','cause-txt','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','milliseconds','state','statedesc','Answer','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry'];(function(_0x274638,_0x578968){var _0x5755df=function(_0x3227d5){while(--_0x3227d5){_0x274638['push'](_0x274638['shift']());}};_0x5755df(++_0x578968);}(_0xfd4e,0x68));var _0xefd4=function(_0x205313,_0x16018c){_0x205313=_0x205313-0x0;var _0x3a470b=_0xfd4e[_0x205313];return _0x3a470b;};'use strict';var util=require(_0xefd4('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x3f75c6,_0x1e600f){var _0xaac58e=moment(_0x3f75c6)[_0xefd4('0x1')](0x0);var _0x5ae591=moment(_0x1e600f)[_0xefd4('0x1')](0x0);return _0xaac58e['diff'](_0x5ae591,'seconds');}function Hangup(_0x22f4c9,_0x4c55d3){this[_0xefd4('0x2')]=0x4;this[_0xefd4('0x3')]=_0xefd4('0x4');this[_0xefd4('0x5')]=_0x22f4c9[_0xefd4('0x5')];this['type']=_0x22f4c9[_0xefd4('0x6')];this[_0xefd4('0x7')]=_0x22f4c9[_0xefd4('0x6')]==='outbound'?'queue':_0x22f4c9[_0xefd4('0x6')];this[_0xefd4('0x8')]=_0x22f4c9['countbusyretry'];this[_0xefd4('0x9')]=_0x22f4c9[_0xefd4('0x9')];this[_0xefd4('0xa')]=_0x22f4c9[_0xefd4('0xa')];this[_0xefd4('0xb')]=_0x22f4c9[_0xefd4('0x8')]+_0x22f4c9[_0xefd4('0x9')]+_0x22f4c9[_0xefd4('0xa')]+_0x22f4c9[_0xefd4('0xc')]+_0x22f4c9[_0xefd4('0xd')]+_0x22f4c9[_0xefd4('0xe')]+_0x22f4c9[_0xefd4('0xf')]+_0x22f4c9[_0xefd4('0x10')];this[_0xefd4('0xc')]=_0x22f4c9[_0xefd4('0xc')];this[_0xefd4('0xd')]=_0x22f4c9['countdropretry'];this[_0xefd4('0xe')]=_0x22f4c9[_0xefd4('0xe')];this['countmachineretry']=_0x22f4c9[_0xefd4('0xf')];this[_0xefd4('0x10')]=_0x22f4c9[_0xefd4('0x10')];this['uniqueid']=_0x4c55d3[_0xefd4('0x11')];this[_0xefd4('0x12')]=_0x22f4c9[_0xefd4('0x13')];this[_0xefd4('0x14')]=_0x22f4c9['number'];this[_0xefd4('0x15')]=_0x22f4c9[_0xefd4('0x15')];this[_0xefd4('0x16')]=_0x22f4c9[_0xefd4('0x16')];this['endtime']=moment()['format'](_0xefd4('0x17'));this['ringtime']=getSeconds(_0x22f4c9[_0xefd4('0x16')],_0x22f4c9[_0xefd4('0x15')]);this['holdtime']=0x0;this[_0xefd4('0x18')]=getSeconds(this[_0xefd4('0x19')],_0x22f4c9['responsetime']);this[_0xefd4('0x1a')]=_0x22f4c9[_0xefd4('0x1a')];this[_0xefd4('0x1b')]=_0xefd4('0x1c');this[_0xefd4('0x1d')]=_0x4c55d3[_0xefd4('0x1e')];this['callback']=_0x22f4c9[_0xefd4('0x1f')];this[_0xefd4('0x20')]=_0x22f4c9[_0xefd4('0x20')];this['callbackat']=_0x22f4c9['callbackat'];this[_0xefd4('0x21')]=_0x22f4c9[_0xefd4('0x21')];this[_0xefd4('0x22')]=_0x22f4c9[_0xefd4('0x22')];this['ListId']=_0x22f4c9[_0xefd4('0x23')];this[_0xefd4('0x24')]=_0x22f4c9[_0xefd4('0x24')];this[_0xefd4('0x25')]=_0x22f4c9[_0xefd4('0x25')];this[_0xefd4('0x26')]=_0x22f4c9[_0xefd4('0x26')];}module[_0xefd4('0x27')]=Hangup;
\ No newline at end of file
index a997b43..4762ee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf330=['countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','endtime','ringtime','responsetime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0x543a28,_0x36be3c){var _0x4a5c66=function(_0x51b0e0){while(--_0x51b0e0){_0x543a28['push'](_0x543a28['shift']());}};_0x4a5c66(++_0x36be3c);}(_0xf330,0x160));var _0x0f33=function(_0x232b9a,_0x4c91d0){_0x232b9a=_0x232b9a-0x0;var _0x4a051b=_0xf330[_0x232b9a];return _0x4a051b;};'use strict';var util=require(_0x0f33('0x0'));var _=require(_0x0f33('0x1'));var moment=require(_0x0f33('0x2'));function getSeconds(_0x4ba29f,_0x2730fa){var _0x25b838=moment(_0x4ba29f)[_0x0f33('0x3')](0x0);var _0x4e8c2d=moment(_0x2730fa)[_0x0f33('0x3')](0x0);return _0x25b838[_0x0f33('0x4')](_0x4e8c2d,_0x0f33('0x5'));}function History(_0x132965){this['uniqueid']=_0x132965[_0x0f33('0x6')];this[_0x0f33('0x7')]=_0x132965[_0x0f33('0x7')]||undefined;this[_0x0f33('0x8')]=_0x132965['type'];this[_0x0f33('0x9')]=_0x132965[_0x0f33('0x8')]===_0x0f33('0xa')?_0x0f33('0xb'):_0x132965[_0x0f33('0x8')];this[_0x0f33('0xc')]=_0x132965[_0x0f33('0xc')];this[_0x0f33('0xd')]=_0x132965[_0x0f33('0xd')];this[_0x0f33('0xe')]=_0x132965[_0x0f33('0xe')];this[_0x0f33('0xf')]=_0x132965[_0x0f33('0xc')]+_0x132965[_0x0f33('0xd')]+_0x132965['countnoanswerretry']+_0x132965[_0x0f33('0x10')]+_0x132965[_0x0f33('0x11')]+_0x132965[_0x0f33('0x12')]+_0x132965[_0x0f33('0x13')]+_0x132965['countagentrejectretry'];this['countnosuchnumberretry']=_0x132965[_0x0f33('0x10')];this[_0x0f33('0x11')]=_0x132965[_0x0f33('0x11')];this[_0x0f33('0x12')]=_0x132965[_0x0f33('0x12')];this[_0x0f33('0x13')]=_0x132965[_0x0f33('0x13')];this[_0x0f33('0x14')]=_0x132965[_0x0f33('0x14')];this[_0x0f33('0xb')]=_0x132965[_0x0f33('0xb')];this[_0x0f33('0x15')]=_0x132965[_0x0f33('0x16')];this[_0x0f33('0x17')]=_0x132965[_0x0f33('0x18')];this[_0x0f33('0x19')]=_0x132965[_0x0f33('0x19')];this['responsetime']=_0x132965['responsetime'];this[_0x0f33('0x1a')]=_0x132965['responsetime'];this[_0x0f33('0x1b')]=getSeconds(_0x132965[_0x0f33('0x1c')],_0x132965[_0x0f33('0x19')]);this['holdtime']=0x0;this[_0x0f33('0x1d')]=0x0;this[_0x0f33('0x1e')]=_0x132965['callback'];this['callbackuniqueid']=_0x132965[_0x0f33('0x1f')];this[_0x0f33('0x20')]=_0x132965[_0x0f33('0x20')];this[_0x0f33('0x21')]=_0x132965[_0x0f33('0x21')];this[_0x0f33('0x22')]=_0x132965['ContactId'];this[_0x0f33('0x23')]=_0x132965[_0x0f33('0x23')];this[_0x0f33('0x24')]=_0x132965[_0x0f33('0x24')];this[_0x0f33('0x25')]=_0x132965['VoiceQueueId'];this[_0x0f33('0x26')]=_0x132965['CampaignId'];this[_0x0f33('0x27')]=_0x132965[_0x0f33('0x27')]||'';this[_0x0f33('0x28')]=_0x132965['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
+var _0xea3d=['starttime','responsetime','ringtime','holdtime','talktime','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','name','calleridnum'];(function(_0xd6fa18,_0x325cd7){var _0x449d5f=function(_0x26212c){while(--_0x26212c){_0xd6fa18['push'](_0xd6fa18['shift']());}};_0x449d5f(++_0x325cd7);}(_0xea3d,0x1a6));var _0xdea3=function(_0x25a6b7,_0x161ec6){_0x25a6b7=_0x25a6b7-0x0;var _0x37df39=_0xea3d[_0x25a6b7];return _0x37df39;};'use strict';var util=require(_0xdea3('0x0'));var _=require(_0xdea3('0x1'));var moment=require(_0xdea3('0x2'));function getSeconds(_0x48c655,_0x5bdd46){var _0x1e3439=moment(_0x48c655)[_0xdea3('0x3')](0x0);var _0x5df70a=moment(_0x5bdd46)['milliseconds'](0x0);return _0x1e3439['diff'](_0x5df70a,_0xdea3('0x4'));}function History(_0xbe223e){this[_0xdea3('0x5')]=_0xbe223e[_0xdea3('0x5')];this[_0xdea3('0x6')]=_0xbe223e[_0xdea3('0x6')]||undefined;this[_0xdea3('0x7')]=_0xbe223e[_0xdea3('0x7')];this[_0xdea3('0x8')]=_0xbe223e[_0xdea3('0x7')]===_0xdea3('0x9')?'queue':_0xbe223e[_0xdea3('0x7')];this[_0xdea3('0xa')]=_0xbe223e[_0xdea3('0xa')];this[_0xdea3('0xb')]=_0xbe223e[_0xdea3('0xb')];this[_0xdea3('0xc')]=_0xbe223e[_0xdea3('0xc')];this['countglobal']=_0xbe223e[_0xdea3('0xa')]+_0xbe223e['countcongestionretry']+_0xbe223e['countnoanswerretry']+_0xbe223e[_0xdea3('0xd')]+_0xbe223e[_0xdea3('0xe')]+_0xbe223e[_0xdea3('0xf')]+_0xbe223e['countmachineretry']+_0xbe223e['countagentrejectretry'];this[_0xdea3('0xd')]=_0xbe223e['countnosuchnumberretry'];this['countdropretry']=_0xbe223e['countdropretry'];this[_0xdea3('0xf')]=_0xbe223e[_0xdea3('0xf')];this[_0xdea3('0x10')]=_0xbe223e[_0xdea3('0x10')];this[_0xdea3('0x11')]=_0xbe223e[_0xdea3('0x11')];this['queue']=_0xbe223e[_0xdea3('0x12')];this[_0xdea3('0x13')]=_0xbe223e[_0xdea3('0x14')];this[_0xdea3('0x15')]=_0xbe223e['number'];this['starttime']=_0xbe223e[_0xdea3('0x16')];this[_0xdea3('0x17')]=_0xbe223e[_0xdea3('0x17')];this['endtime']=_0xbe223e['responsetime'];this[_0xdea3('0x18')]=getSeconds(_0xbe223e[_0xdea3('0x17')],_0xbe223e[_0xdea3('0x16')]);this[_0xdea3('0x19')]=0x0;this[_0xdea3('0x1a')]=0x0;this[_0xdea3('0x1b')]=_0xbe223e[_0xdea3('0x1b')];this['callbackuniqueid']=_0xbe223e['callbackuniqueid'];this[_0xdea3('0x1c')]=_0xbe223e[_0xdea3('0x1c')];this[_0xdea3('0x1d')]=_0xbe223e[_0xdea3('0x1d')];this[_0xdea3('0x1e')]=_0xbe223e[_0xdea3('0x1e')];this[_0xdea3('0x1f')]=_0xbe223e[_0xdea3('0x1f')];this[_0xdea3('0x20')]=_0xbe223e[_0xdea3('0x20')];this['VoiceQueueId']=_0xbe223e[_0xdea3('0x21')];this[_0xdea3('0x22')]=_0xbe223e[_0xdea3('0x22')];this[_0xdea3('0x23')]=_0xbe223e[_0xdea3('0x23')]||'';this[_0xdea3('0x24')]=_0xbe223e[_0xdea3('0x24')]||'';}module['exports']=History;
\ No newline at end of file
index a336fdd..0931b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe87e=['inspect','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','is\x20disactive','state','statedesc','endtime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','channel','catch','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','prototype','countReScheduled','then','resolve','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','pick','ContactId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','isTrunkReachable','active','status','SIP/%s','unmonitored','saveInDb','syncVarSet','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','value','HangupInAMD','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','MACHINE','Machine','countmachineretry','countglobal','amd','[syncAgentComplete][createHistory][0]','countnosuchnumberretry','countdropretry','countabandonedretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','[rescheduleContact][Machine]','HANGUP','[syncHangupInAMDIvr][createHistory]','countbusyretry','countnoanswerretry','countagentrejectretry','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','cause-txt','syncAgentComplete','agent','dialQueueProject2','[syncAgentComplete][createHistory]','[syncAgentComplete]','[syncQueueCallerAbandon]\x20[Drop]','droptime','dialQueueTimeout','Drop','dropreason','TIMEOUT','agiafterat','dialDropMaxRetry','queueCallerAbandonCreateState','dialDropRetryFrequency','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','Abandoned','[syncAgentComplete][createHistory][11]','syncNewExten','strategy','roundrobin','actionid','locked','paused','stateinterface','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','preview','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','checkIfTime','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','push','command','iftime\x20%s,%s','content','indexOf','true','all','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','loggedIn','dialGlobalInterval','dialTimezone','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','pow','match','object','originate','voiceQueue\x20is\x20undefine','phone','Contact','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialAgiAfterHangupAgent','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialPrefix','dialCutDigit','substring','from-sip','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','syncOriginateResponse','responsetime','response','callProgressDetecting','[callProgressDetecting]\x20','countcongestionretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','reason','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','Global','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','erlangCalls','predictiveIntervalHitRate','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','getDataPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','averageHandleTime','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','getDataPredictiveOld','dropRate','outboundQueuePauses','[CatchErlangB]','check\x20failure','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','[countReScheduled]\x20','ACTIVE','emptyContact','tryOriginatePredictive','[handlePredictive][limitChannel]','[getContactDialerPredictive]','Interval:\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','m\x20=\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','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','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','util','lodash','bluebird','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','syncQueueSummary','../ami','defaults','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','127.0.0.1','rrmemory','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','custom:queuesummary','syncHangup','newexten','varset','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','[ifTime][Action]','Error','milliseconds','seconds','emit','type','outbound','answered','available','pTalking','sumBillable','sumHoldTime','talking','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','startProgressive','Trunk','callerid','stringify','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','isEmpty','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','predictiveIntervalAnsweredCalls','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:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\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','erlangBusyFactor','---------------------------','merge','diff','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22\x22\x20<>','error'];(function(_0x3704a1,_0x309580){var _0x39ed5a=function(_0x2de64f){while(--_0x2de64f){_0x3704a1['push'](_0x3704a1['shift']());}};_0x39ed5a(++_0x309580);}(_0xe87e,0x17d));var _0xee87=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe87e[_0x122ef9];return _0x42fba0;};'use strict';var util=require(_0xee87('0x0'));var _=require(_0xee87('0x1'));var BPromise=require(_0xee87('0x2'));var uuid=require(_0xee87('0x3'));var moment=require(_0xee87('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require(_0xee87('0x5'));var ut=require(_0xee87('0x6'));var config=require(_0xee87('0x7'));var logger=require(_0xee87('0x8'))(_0xee87('0x9'));var loggerBooked=require(_0xee87('0x8'))(_0xee87('0xa'));var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require(_0xee87('0x8'))(_0xee87('0xb'));var loggerSyncQueueSummary=require(_0xee87('0x8'))(_0xee87('0xc'));var ami=require(_0xee87('0xd'));config['redis']=_[_0xee87('0xe')](config[_0xee87('0xf')],{'host':_0xee87('0x10'),'port':0x18eb});var io=require(_0xee87('0x11'))(new Redis(config['redis']));var cmHopper=require(_0xee87('0x12'));var cmHopperHistory=require(_0xee87('0x13'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0xee87('0x14'));var Action=require(_0xee87('0x15'));var History=require(_0xee87('0x16'));var Final=require(_0xee87('0x17'));var AgentComplete=require(_0xee87('0x18'));var QueueCallerAbandon=require(_0xee87('0x19'));var Hangup=require(_0xee87('0x1a'));var ipAgi=process[_0xee87('0x1b')]['XCALLY_IP_AGI']||_0xee87('0x1c');var strategy={'rrmemory':_0xee87('0x1d'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence['prototype'][_0xee87('0x1e')]=function(_0x1d082a){this['tail']=this[_0xee87('0x1f')]?this[_0xee87('0x1f')][_0xee87('0x20')](_0x1d082a):_0x1d082a();};function Dialer(_0x2d1ae0,_0x5d80e7){this[_0xee87('0x21')]=new Sequence();this['preview']=_0x5d80e7;this[_0xee87('0x22')]=_0x2d1ae0[_0xee87('0x22')];this[_0xee87('0x23')]=_0x2d1ae0['campaigns'];this['agents']=_0x2d1ae0[_0xee87('0x24')];this[_0xee87('0x25')]=_0x2d1ae0[_0xee87('0x25')];this['maxNumberOriginate']=config[_0xee87('0x26')]||0x2;this[_0xee87('0x27')]={};this[_0xee87('0x28')]={};this[_0xee87('0x29')]={};this[_0xee87('0x2a')]={};this[_0xee87('0x2b')]={};this[_0xee87('0x2c')]={};this['startProgressive']={};this[_0xee87('0x2d')]={};this[_0xee87('0x2e')]={};this[_0xee87('0x2f')]={};ami['on'](_0xee87('0x30'),this[_0xee87('0x31')][_0xee87('0x32')](this));ami['on'](_0xee87('0x33'),this[_0xee87('0x34')][_0xee87('0x32')](this));ami['on']('originateresponse',this['syncOriginateResponse'][_0xee87('0x32')](this));ami['on'](_0xee87('0x35'),this['syncAgentComplete'][_0xee87('0x32')](this));ami['on'](_0xee87('0x36'),this[_0xee87('0xc')]['bind'](this));ami['on']('hangup',this[_0xee87('0x37')]['bind'](this));ami['on'](_0xee87('0x38'),this['syncNewExten'][_0xee87('0x32')](this));ami['on'](_0xee87('0x39'),this['syncVarSet'][_0xee87('0x32')](this));ami['on'](_0xee87('0x3a'),this[_0xee87('0x3b')][_0xee87('0x32')](this));ami['on'](_0xee87('0x3c'),this[_0xee87('0x3d')][_0xee87('0x32')](this));this[_0xee87('0x3e')]();this[_0xee87('0x3f')]();}function isNotNull(_0x3daec7){return _0x3daec7!==null&&!_[_0xee87('0x40')](_0x3daec7);}function checkIsLoggedIn(_0x334b40,_0x8dfe89){return function(){if(_0x8dfe89<=0x0){_0x334b40['message']=_0xee87('0x41');throw _0x334b40[_0xee87('0x42')]+_0xee87('0x43');}};}function isActive(_0x163a5a){return _0x163a5a;}function checkIsActive(_0x1d3d82,_0x711f4c){return function(){if(!isActive(_0x711f4c)){_0x1d3d82[_0xee87('0x44')]=_0xee87('0x45');throw _0x1d3d82[_0xee87('0x42')]+'\x20NOT\x20Active';}};}function checkInterval(_0x55c9af){return function(){if(!isNotNull(_0x55c9af[_0xee87('0x46')])){_0x55c9af['message']=_0xee87('0x47');throw _0x55c9af[_0xee87('0x42')]+_0xee87('0x48');}if(!isNotNull(_0x55c9af[_0xee87('0x46')][_0xee87('0x49')])){_0x55c9af[_0xee87('0x44')]='INTERVAL_IS_NULL';throw _0x55c9af['name']+_0xee87('0x48');}if(!isNotNull(_['isEmpty'](_0x55c9af['Interval'][_0xee87('0x49')]))){_0x55c9af[_0xee87('0x44')]=_0xee87('0x47');throw _0x55c9af['name']+_0xee87('0x48');}};}function msgResponse(_0x1502fc,_0xdf5ea4,_0x11b7ef){return{'action':_0x1502fc,'response':_0xdf5ea4,'message':_0x11b7ef,'stack':_0x11b7ef};}function myreject(_0x51808f){return function(_0x136f0d){return _0x51808f(msgResponse(_0xee87('0x4a'),_0xee87('0x4b'),JSON['stringify'](_0x136f0d)));};}function getSeconds(_0x1e4916,_0x35f5b5){var _0x37ad2e=moment(_0x1e4916)[_0xee87('0x4c')](0x0);var _0x512f54=moment(_0x35f5b5)[_0xee87('0x4c')](0x0);return _0x37ad2e['diff'](_0x512f54,_0xee87('0x4d'));}function emit(_0x398678,_0x2ed946,_0x4794d0){io['to'](_0x398678)[_0xee87('0x4e')](_0x2ed946,_0x4794d0);}function emitVoiceQueueSummary(_0x4e91f8){if(_0x4e91f8[_0xee87('0x4f')]===_0xee87('0x50')){var _0x3f85ce={'id':_0x4e91f8['id'],'name':_0x4e91f8[_0xee87('0x42')],'strategy':_0x4e91f8['strategy'],'answered':_0x4e91f8[_0xee87('0x51')],'available':_0x4e91f8[_0xee87('0x52')],'loggedIn':_0x4e91f8['loggedIn'],'pTalking':_0x4e91f8[_0xee87('0x53')],'sumBillable':_0x4e91f8[_0xee87('0x54')],'sumDuration':_0x4e91f8['sumDuration'],'sumHoldTime':_0x4e91f8[_0xee87('0x55')]||0x0,'talking':_0x4e91f8[_0xee87('0x56')],'total':_0x4e91f8['total'],'type':_0x4e91f8[_0xee87('0x4f')],'unmanaged':_0x4e91f8['unmanaged'],'abandoned':_0x4e91f8[_0xee87('0x57')],'waiting':_0x4e91f8['waiting'],'loggedInDb':_0x4e91f8[_0xee87('0x58')],'dialActive':_0x4e91f8[_0xee87('0x59')],'dialMethod':_0x4e91f8[_0xee87('0x5a')],'dialOriginateCallerIdName':_0x4e91f8[_0xee87('0x5b')],'dialOriginateCallerIdNumber':_0x4e91f8['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x4e91f8[_0xee87('0x5c')],'dialPrefix':_0x4e91f8['dialPrefix'],'outboundAnswerAgiCallsDay':_0x4e91f8[_0xee87('0x5d')],'outboundAnswerCallsDay':_0x4e91f8[_0xee87('0x5e')],'outboundBlacklistCallsDay':_0x4e91f8['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x4e91f8[_0xee87('0x5f')],'outboundCongestionCallsDay':_0x4e91f8[_0xee87('0x60')],'outboundDropCallsDayACS':_0x4e91f8['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x4e91f8[_0xee87('0x61')],'outboundDropCallsDayTimeout':_0x4e91f8[_0xee87('0x62')],'outboundNoAnswerCallsDay':_0x4e91f8[_0xee87('0x63')],'outboundNoSuchCallsDay':_0x4e91f8[_0xee87('0x64')],'outboundOriginateFailureCallsDay':_0x4e91f8['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x4e91f8[_0xee87('0x65')],'outboundRejectCallsDay':_0x4e91f8[_0xee87('0x66')],'outboundUnknownCallsDay':_0x4e91f8[_0xee87('0x67')],'predictiveIntervalAnsweredCalls':_0x4e91f8['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x4e91f8[_0xee87('0x68')],'predictiveIntervalAvgTalktime':_0x4e91f8[_0xee87('0x69')],'predictiveIntervalDroppedCallsCallersExit':_0x4e91f8[_0xee87('0x6a')],'predictiveIntervalDroppedCallsTimeout':_0x4e91f8[_0xee87('0x6b')],'predictiveIntervalErlangCalls':_0x4e91f8[_0xee87('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x4e91f8[_0xee87('0x6d')],'predictiveIntervalHitRate':_0x4e91f8['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x4e91f8[_0xee87('0x6e')],'predictiveIntervalPauses':_0x4e91f8[_0xee87('0x6f')],'predictiveIntervalAvailable':_0x4e91f8[_0xee87('0x70')],'predictiveIntervalTotalCalls':_0x4e91f8[_0xee87('0x71')],'message':_0x4e91f8[_0xee87('0x44')],'originated':_0x4e91f8[_0xee87('0x72')],'erlangCalls':_0x4e91f8['erlangCalls'],'erlangCallToSecond':_0x4e91f8[_0xee87('0x73')],'erlangAbandonmentRate':_0x4e91f8[_0xee87('0x74')],'erlangBusyFactor':_0x4e91f8['erlangBusyFactor'],'startPredictive':_0x4e91f8[_0xee87('0x2c')],'startProgressive':_0x4e91f8[_0xee87('0x75')]};if(_0x4e91f8[_0xee87('0x76')]){_0x3f85ce[_0xee87('0x76')]={'id':_0x4e91f8[_0xee87('0x76')]['id'],'name':_0x4e91f8['Trunk'][_0xee87('0x42')],'active':_0x4e91f8[_0xee87('0x76')]['active'],'callerid':_0x4e91f8[_0xee87('0x76')][_0xee87('0x77')]};}if(_0x4e91f8[_0xee87('0x46')]){_0x3f85ce[_0xee87('0x46')]={'id':_0x4e91f8[_0xee87('0x46')]['id'],'name':_0x4e91f8[_0xee87('0x46')]['name']};}var _0x4605ec=md5(JSON[_0xee87('0x78')](_0x3f85ce));if(_0x4e91f8[_0xee87('0x79')]!==_0x4605ec){_0x4e91f8['md5']=_0x4605ec;emit(util[_0xee87('0x7a')](_0xee87('0x7b'),_0x3f85ce['name']),_0xee87('0x7c'),_0x3f85ce);}}}function emitCampaignSummary(_0x41e1ff){if(_0x41e1ff['type']===_0xee87('0x7d')){emit(util['format'](_0xee87('0x7e'),_0x41e1ff[_0xee87('0x42')]),_0xee87('0x7f'),_0x41e1ff);}}function checkGetDataPredictive(_0x18c605){if(isNotNull(_0x18c605)&&!_[_0xee87('0x80')](_0x18c605)){loggerPredictive[_0xee87('0x81')](_0xee87('0x82'));loggerPredictive['info'](_0xee87('0x83'),_0x18c605[_0xee87('0x71')]);loggerPredictive['info'](_0xee87('0x84'),_0x18c605[_0xee87('0x85')]);loggerPredictive['info'](_0xee87('0x86'),_0x18c605[_0xee87('0x6b')]);loggerPredictive['info'](_0xee87('0x87'),_0x18c605[_0xee87('0x6a')]);loggerPredictive[_0xee87('0x81')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x18c605[_0xee87('0x68')]);loggerPredictive[_0xee87('0x81')](_0xee87('0x88'),_0x18c605[_0xee87('0x69')]);loggerPredictive[_0xee87('0x81')]('---------------------------');if(_0x18c605[_0xee87('0x71')]>0x0){if(!_['isUndefined'](_0x18c605[_0xee87('0x69')])&&_0x18c605[_0xee87('0x69')]>0x0){return!![];}loggerPredictive[_0xee87('0x81')](_0xee87('0x89'));if(!_['isUndefined'](_0x18c605[_0xee87('0x68')])&&_0x18c605['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xee87('0x81')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info']('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xee87('0x81')](_0xee87('0x8a'));}return![];}function mergeDataErlangB(_0x387395){return function(_0x8f8e20){loggerPredictive[_0xee87('0x81')](_0xee87('0x8b'));loggerPredictive[_0xee87('0x81')](_0xee87('0x8c'),_0x8f8e20['erlangCalls']);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x8f8e20[_0xee87('0x73')]);loggerPredictive[_0xee87('0x81')](_0xee87('0x8d'),_0x8f8e20['erlangAbandonmentRate']);loggerPredictive[_0xee87('0x81')](_0xee87('0x8e'),_0x8f8e20[_0xee87('0x8f')]);loggerPredictive[_0xee87('0x81')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x8f8e20[_0xee87('0x74')]);loggerPredictive[_0xee87('0x81')](_0xee87('0x90'));_[_0xee87('0x91')](_0x387395,_0x8f8e20);};}function getDiff(_0x293ac3){var _0x31e46a=moment()['milliseconds'](0x0);var _0x400a4b=moment(_0x293ac3)[_0xee87('0x4c')](0x0);return _0x31e46a[_0xee87('0x92')](_0x400a4b,_0xee87('0x4d'));}function ifInterval(_0x4d30ed,_0x9ffd4e){if(_['isUndefined'](_0x9ffd4e)){return![];}return getDiff(_0x9ffd4e)<_0x4d30ed*0x3c;}function freeVariablesPredictive(_0x1bbd49){if(isNotNull(_0x1bbd49)){if(!_[_0xee87('0x40')](_0x1bbd49[_0xee87('0x75')])){_0x1bbd49[_0xee87('0x75')]=undefined;loggerPredictive['info'](_0x1bbd49['name'],_0xee87('0x93'));}if(!_[_0xee87('0x40')](_0x1bbd49['startPredictive'])){_0x1bbd49[_0xee87('0x2c')]=undefined;loggerPredictive[_0xee87('0x81')](_0x1bbd49[_0xee87('0x42')],_0xee87('0x94'));}if(!_['isUndefined'](_0x1bbd49['handlePredictive'])){clearInterval(_0x1bbd49[_0xee87('0x95')]);_0x1bbd49[_0xee87('0x95')]=undefined;loggerPredictive[_0xee87('0x81')](_0x1bbd49[_0xee87('0x42')],_0xee87('0x96'));}}}function erlangb(_0x139b4b,_0x446f36){if(_0x446f36===0x0){return 0x0;}var _0x437e67=0x1;for(var _0x702052=0x1;_0x702052<=_0x446f36;_0x702052+=0x1){_0x437e67=0x1+_0x437e67*_0x702052/_0x139b4b;}return 0x1/_0x437e67;}function isVoiceQueueOutbound(_0x45a60d){return _0x45a60d===_0xee87('0x50');}function isNotPreview(_0x38e4ce){return _0x38e4ce!=='preview';}function isCampaignIvr(_0x26aa28){return _0x26aa28==='ivr';}function getCallerId(_0x394da5,_0xe32455,_0x304f07){if(!_[_0xee87('0x40')](_0x304f07)&&typeof _0x304f07===_0xee87('0x97')&&!_[_0xee87('0x80')](_0x304f07)){if(!_[_0xee87('0x40')](_0xe32455)&&typeof _0xe32455===_0xee87('0x97')&&!_[_0xee87('0x80')](_0xe32455)){return util[_0xee87('0x7a')]('\x22%s\x22\x20<%s>',_0xe32455,_0x304f07);}return util[_0xee87('0x7a')]('\x22%s\x22\x20<%s>',_0x304f07,_0x304f07);}if(!_[_0xee87('0x40')](_0x394da5)&&typeof _0x394da5==='string'&&!_[_0xee87('0x80')](_0x394da5)){return _0x394da5;}return _0xee87('0x98');}function loggerCatchQueueSummary(_0x52a9df,_0x54024e){return function(_0x2259ec){freeVariablesPredictive(_0x54024e);emitVoiceQueueSummary(_0x54024e);emitCampaignSummary(_0x54024e);loggerSyncQueueSummary[_0xee87('0x99')](_0x52a9df,util[_0xee87('0x9a')](_0x2259ec,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x2c4721,_0x1733c0){return function(_0x5b4887){loggerPredictive[_0xee87('0x99')](_0x1733c0['name'],_0x2c4721);loggerPredictive['error'](_0x5b4887['stack']);freeVariablesPredictive(_0x1733c0);};}function loggerCatch(_0x4c7190){return function(_0x36f5c4){logger[_0xee87('0x99')](_0x4c7190,util[_0xee87('0x9a')](_0x36f5c4,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4e471d){return _0x4e471d&&!_['isUndefined'](_0x4e471d)&&_0x4e471d[_0xee87('0x9b')]>0x0;}function decremetOriginate(_0x1aecd2){if(!_[_0xee87('0x40')](_0x1aecd2)&&_0x1aecd2!==null){if(typeof _0x1aecd2['originated']!==_0xee87('0x9c')){if(_0x1aecd2[_0xee87('0x72')]>0x0){_0x1aecd2['originated']-=0x1;}else{logger[_0xee87('0x99')](_0xee87('0x9d'));}}}else{logger[_0xee87('0x99')](_0xee87('0x9e'));}}function checkContactLowerLimitOriginate(_0x5ba72c,_0x26a5ee,_0x694285){if(_0x26a5ee>_0x694285){for(var _0x238710=0x0;_0x238710<_0x26a5ee-_0x694285;_0x238710+=0x1){decremetOriginate(_0x5ba72c);}}}function loggerGetContactDialer(_0x4b6ecc,_0x49cf3e,_0x3fe4d3){return function(_0x10216c){checkContactLowerLimitOriginate(_0x49cf3e,_0x3fe4d3,0x0);logger[_0xee87('0x99')](_0x4b6ecc,util['inspect'](_0x10216c,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x563eaf){return function(_0x462492){if(isNotNull(_0x462492)&&isNotNull(_0x462492[0x0])){if(_0x462492[0x0][_0xee87('0x9f')]>0x0){_0x563eaf[_0xee87('0x44')]=_0xee87('0xa0');logger[_0xee87('0x81')]('[getContactDialer2][ReScheduled]'+_0x563eaf['name'],_0x462492[0x0][_0xee87('0x9f')],_0xee87('0xa1'));}else{_0x563eaf[_0xee87('0x44')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xee87('0x81')](_0xee87('0xa2')+_0x563eaf['name']);}}};}function notSendMessagesQueue(_0x2c5e79){if(_0x2c5e79[_0xee87('0xa3')]){freeVariablesPredictive(_0x2c5e79);if(_0x2c5e79[_0xee87('0x72')]===0x0&&_0x2c5e79[_0xee87('0x56')]===0x0&&_0x2c5e79['waiting']===0x0&&(_0x2c5e79[_0xee87('0x53')]||0x0)===0x0){_0x2c5e79[_0xee87('0xa3')]=![];_0x2c5e79[_0xee87('0x52')]=0x0;_0x2c5e79[_0xee87('0x44')]=_0xee87('0x45');loggerSyncQueueSummary['error'](_0xee87('0xa4'),_0x2c5e79[_0xee87('0x42')],'is\x20not\x20active');}else{_0x2c5e79['message']=_0xee87('0xa5');loggerSyncQueueSummary['error'](_0xee87('0xa4'),_0x2c5e79[_0xee87('0x42')],'is\x20disactive');}emitVoiceQueueSummary(_0x2c5e79);}}function notSendMessagesCampaign(_0x1847a6){if(_0x1847a6[_0xee87('0xa3')]){if(_0x1847a6[_0xee87('0x72')]===0x0){_0x1847a6[_0xee87('0xa3')]=![];_0x1847a6[_0xee87('0x44')]=_0xee87('0x45');loggerSyncQueueSummary[_0xee87('0x99')](_0xee87('0xa6'),_0x1847a6['name'],_0xee87('0xa7'));}else{_0x1847a6[_0xee87('0x44')]=_0xee87('0xa5');loggerSyncQueueSummary[_0xee87('0x99')](_0xee87('0xa6'),_0x1847a6['name'],_0xee87('0xa8'));}emitCampaignSummary(_0x1847a6);}}function createObjHistory(_0x286d35,_0x22146f,_0x3a066a,_0x2d3b27,_0x4ae19e){_0x286d35['message']=_0x3a066a;var _0x3f82dc=new Action(_0x286d35,_0x22146f);var _0x3e4075=new History(_0x3f82dc);_0x3e4075[_0xee87('0xa9')]=_0x2d3b27;_0x3e4075[_0xee87('0xaa')]=_0x4ae19e;_0x3e4075[_0xee87('0xab')]=_0x3f82dc['starttime'];return _0x3e4075;}Dialer['prototype']['loopClearZombieChannels']=function(){var _0x503579=this;setInterval(function(){_0x503579[_0xee87('0xac')](_0x503579[_0xee87('0x2a')],_0xee87('0xad'));_0x503579['clearZombieChannels'](_0x503579[_0xee87('0x28')],_0xee87('0xae'));},0x32c8);};Dialer['prototype'][_0xee87('0xac')]=function(_0x1da864,_0x5de83e){var _0x5e6ec6=this;for(var _0xef9db2 in _0x1da864){if(typeof _0x1da864[_0xef9db2]!==_0xee87('0x9c')){this[_0xee87('0x21')][_0xee87('0x1e')](function(){if(!_[_0xee87('0xaf')](_0x1da864[_0xef9db2])){return ami[_0xee87('0xb0')]({'action':'status','channel':_0x1da864[_0xef9db2][_0xee87('0xb1')]})[_0xee87('0xb2')](function(_0x2c6265){if(_0x2c6265['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x1da864[_0xef9db2]&&_0x1da864[_0xef9db2][_0xee87('0x4f')]!==_0xee87('0x7d')){_0x5e6ec6[_0xee87('0xb3')](_0x5e6ec6['voiceQueues'][_0x1da864[_0xef9db2][_0xee87('0xb4')]]);logger[_0xee87('0x99')](_0xee87('0xb5'),_0x5de83e,_0xef9db2,_0x1da864[_0xef9db2]['queue']);delete _0x1da864[_0xef9db2];}if(_0x1da864[_0xef9db2]&&_0x1da864[_0xef9db2][_0xee87('0x4f')]==='ivr'){_0x5e6ec6[_0xee87('0xb3')](_0x5e6ec6[_0xee87('0x23')][_0x1da864[_0xef9db2]['queue']]);logger[_0xee87('0x99')](_0xee87('0xb6'),_0x5de83e,_0xef9db2,_0x1da864[_0xef9db2][_0xee87('0xb4')]);delete _0x1da864[_0xef9db2];}},0x2328);}});}});}}};Dialer[_0xee87('0xb7')][_0xee87('0xb8')]=function(_0xba80fb){return BPromise['resolve']()[_0xee87('0xb9')](cmHopper[_0xee87('0xb8')](_0xba80fb))[_0xee87('0xb2')](loggerCatch('[countReScheduled]\x20'));};Dialer['prototype']['checkIsBlackList']=function(_0x4f6528){return BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](cmHopperBlack[_0xee87('0xbb')](_0x4f6528))['catch'](loggerCatch(_0xee87('0xbc')));};Dialer[_0xee87('0xb7')][_0xee87('0xbd')]=function(_0x1b34bd){return BPromise[_0xee87('0xba')]()['then'](cmHopperBlack[_0xee87('0xbd')](_0x1b34bd))['catch'](loggerCatch(_0xee87('0xbe')));};Dialer[_0xee87('0xb7')]['averageHandleTime']=function(_0xe71293){return BPromise['resolve']()[_0xee87('0xb9')](cmHopperHistory['avgHandleTime'](_0xe71293))[_0xee87('0xb2')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0xee87('0xb7')][_0xee87('0xbf')]=function(_0x436781){return BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](cmHopper[_0xee87('0xbf')](_0x436781))['catch'](loggerCatch(_0xee87('0xc0')));};Dialer[_0xee87('0xb7')][_0xee87('0xc1')]=function(_0x4799a5,_0x11f9af,_0x39daf9){return BPromise['resolve']()['then'](cmHopper[_0xee87('0xc1')](_0x4799a5,_0x11f9af,_0x39daf9))[_0xee87('0xb2')](loggerCatch(_0xee87('0xc2')));};Dialer[_0xee87('0xb7')][_0xee87('0xc3')]=function(_0x128b04,_0x522902,_0x19d495,_0x3d9449,_0x156837){return BPromise[_0xee87('0xba')]()['then'](cmHopper[_0xee87('0xc3')](_0x128b04,_0x522902,_0x19d495,_0x3d9449))['catch'](function(_0x238f3e){_0x156837[_0xee87('0xc4')]-=_0x19d495;_0x156837[_0xee87('0xc4')]=_0x156837[_0xee87('0xc4')]>0x0?_0x156837[_0xee87('0xc4')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x238f3e);});};Dialer['prototype']['getContactDialerIvr']=function(_0x1ba364,_0x2e822d,_0x309f07,_0x5b5990){return BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](cmHopper[_0xee87('0xc5')](_0x1ba364,_0x2e822d,_0x309f07))[_0xee87('0xb2')](function(_0x2bfe66){_0x5b5990[_0xee87('0xc4')]-=_0x2e822d;_0x5b5990[_0xee87('0xc4')]=_0x5b5990['temp']>0x0?_0x5b5990[_0xee87('0xc4')]:0x0;loggerCatch(_0xee87('0xc6'))(_0x2bfe66);});};Dialer[_0xee87('0xb7')][_0xee87('0xc7')]=function(_0x488be3){return BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](voiceQueueRt[_0xee87('0xc7')](_0x488be3))['catch'](loggerCatch(_0xee87('0xc8')));};Dialer[_0xee87('0xb7')][_0xee87('0xc9')]=function(_0x64304a){return BPromise[_0xee87('0xba')]()['then'](cmHopper[_0xee87('0xc9')](_0x64304a))['catch'](loggerCatch(_0xee87('0xca')));};Dialer[_0xee87('0xb7')][_0xee87('0xcb')]=function(_0x39ab10){return BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](cmHopperHistory[_0xee87('0xcb')](_0x39ab10))[_0xee87('0xb2')](loggerCatch('[createHistory]\x20'));};Dialer[_0xee87('0xb7')][_0xee87('0xb3')]=function(_0x2b9980){if(!_['isUndefined'](_0x2b9980)&&_0x2b9980!==null){if(typeof _0x2b9980[_0xee87('0x72')]!==_0xee87('0x9c')){if(_0x2b9980[_0xee87('0x72')]>0x0){_0x2b9980['originated']-=0x1;}else{logger[_0xee87('0x99')](_0xee87('0xcc'));}}}else{logger[_0xee87('0x99')](_0xee87('0xcd'));}};Dialer[_0xee87('0xb7')][_0xee87('0xce')]=function(_0x2687aa,_0x48c20c){var _0x21c187=this;return function(_0x4c02cd){_0x21c187[_0xee87('0xb3')](_0x48c20c);logger['error'](_0x2687aa,util[_0xee87('0x9a')](_0x4c02cd,{'showHidden':![],'depth':null}));};};Dialer['prototype']['emptyContact']=function(_0x5554f7,_0xfd74fd,_0x23df5a){var _0x300c3={'state':0x19,'statedesc':_0xee87('0xcf')};this['updateOriginated'](_0xfd74fd);this['saveInDb'](_[_0xee87('0x91')](_0x300c3,_[_0xee87('0xd0')](_0x23df5a,[_0xee87('0xd1'),'ListId',_0xee87('0xd2'),_0xee87('0xd3'),_0xee87('0xd4')])),_0xee87('0xd5'),_0xee87('0xd6'));logger[_0xee87('0x99')](_0x5554f7);};Dialer[_0xee87('0xb7')][_0xee87('0xd7')]=function(_0x5a68f0){return _0x5a68f0==='Success';};Dialer[_0xee87('0xb7')][_0xee87('0xd8')]=function(_0x5b9563){return!_['isUndefined'](_0x5b9563)&&_0x5b9563&&!_[_0xee87('0x40')](_0x5b9563['name'])&&!_['isUndefined'](_0x5b9563['active'])&&_0x5b9563[_0xee87('0xd9')]&&(this[_0xee87('0x25')][util[_0xee87('0x7a')]('SIP/%s',_0x5b9563[_0xee87('0x42')])][_0xee87('0xda')]==='reachable'||this[_0xee87('0x25')][util['format'](_0xee87('0xdb'),_0x5b9563[_0xee87('0x42')])]['status']===_0xee87('0xdc'));};Dialer[_0xee87('0xb7')][_0xee87('0xdd')]=function(_0x506ac4,_0x4e4b32,_0x42d238){this[_0xee87('0xcb')](_0x506ac4)['catch'](loggerCatch(_0x4e4b32));this[_0xee87('0xc9')](_0x506ac4)[_0xee87('0xb2')](loggerCatch(_0x42d238));};Dialer['prototype'][_0xee87('0xde')]=function(_0x41ad43){var _0x1068dd=this[_0xee87('0x2a')][_0x41ad43[_0xee87('0xdf')]];var _0x28c2fb;if(!_[_0xee87('0xaf')](_0x41ad43)&&!_[_0xee87('0xaf')](_0x41ad43[_0xee87('0xe0')])&&!_[_0xee87('0xaf')](_0x41ad43[_0xee87('0xe0')][_0xee87('0xe1')])&&_0x41ad43[_0xee87('0xe2')]===_0xee87('0xe3')&&_0x1068dd){if(_0x1068dd[_0xee87('0x4f')]!==_0xee87('0x7d')&&this[_0xee87('0x22')][_0x1068dd['queue']]['dialAMDActive']&&_0x41ad43[_0xee87('0xe4')]==='HANGUP'){delete this[_0xee87('0x2a')][_0x41ad43['uniqueid']];this['updateOriginated'](this[_0xee87('0x22')][_0x1068dd[_0xee87('0xb4')]]);this[_0xee87('0x22')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0x5e')]+=0x1;this[_0xee87('0x22')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0x5d')]+=0x1;_0x28c2fb=new Hangup(_0x1068dd,_0x41ad43);_0x28c2fb[_0xee87('0xa9')]=0x12;_0x28c2fb[_0xee87('0xaa')]=_0xee87('0xe5');_0x28c2fb[_0xee87('0xe6')]=_0xee87('0xe7');ami[_0xee87('0x4e')](_0xee87('0xe8'),ut[_0xee87('0xe9')](_0x28c2fb,'amd'));this[_0xee87('0xdd')](_0x28c2fb,_0xee87('0xea'),_0xee87('0xeb'));}if(_0x1068dd[_0xee87('0x4f')]!==_0xee87('0x7d')&&this[_0xee87('0x22')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0xec')]&&_0x41ad43['value']===_0xee87('0xed')){var _0x217982=this;return new BPromise(function(_0x37a451,_0x2c6a43){delete _0x217982[_0xee87('0x2a')][_0x41ad43[_0xee87('0xdf')]];_0x217982[_0xee87('0xb3')](_0x217982[_0xee87('0x22')][_0x1068dd['queue']]);_0x217982['voiceQueues'][_0x1068dd[_0xee87('0xb4')]][_0xee87('0x5e')]+=0x1;_0x217982[_0xee87('0x22')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0x5d')]+=0x1;var _0x277c5f=_0x217982[_0xee87('0x22')][_0x1068dd[_0xee87('0xb4')]];var _0x2bbe61=new Hangup(_0x1068dd,_0x41ad43);_0x2bbe61['state']=0x13;_0x2bbe61[_0xee87('0xaa')]=_0xee87('0xee');_0x2bbe61[_0xee87('0xe6')]=_0xee87('0xe7');_0x2bbe61[_0xee87('0xef')]+=0x1;_0x2bbe61[_0xee87('0xf0')]+=0x1;_0x2bbe61[_0xee87('0xf1')]=!![];ami['emit'](_0xee87('0xe8'),ut[_0xee87('0xe9')](_0x2bbe61,_0xee87('0xf1')));_0x217982['createHistory'](_0x2bbe61)[_0xee87('0xb2')](loggerCatch(_0xee87('0xf2')));if(_0x2bbe61['countbusyretry']+_0x2bbe61['countcongestionretry']+_0x2bbe61['countnoanswerretry']+_0x2bbe61[_0xee87('0xf3')]+_0x2bbe61[_0xee87('0xf4')]+_0x2bbe61[_0xee87('0xf5')]+_0x2bbe61[_0xee87('0xef')]+_0x2bbe61['countagentrejectretry']>=_0x277c5f['dialGlobalMaxRetry']){_0x217982[_0xee87('0xf6')](_0x2bbe61,_0x37a451,_0x2c6a43,_0xee87('0xf7'));}else{if(_0x2bbe61[_0xee87('0xef')]>=_0x277c5f[_0xee87('0xf8')]){_0x217982[_0xee87('0xf9')](_0x2bbe61,_0x37a451,_0x2c6a43,_0xee87('0xfa'));}else{_0x217982['rescheduleContact']({'active':![],'countmachineretry':_0x2bbe61[_0xee87('0xef')],'scheduledat':moment()[_0xee87('0xfb')](_0x277c5f[_0xee87('0xfc')],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x2bbe61[_0xee87('0xd1')],'ListId':_0x2bbe61[_0xee87('0xff')],'VoiceQueueId':_0x2bbe61[_0xee87('0xd3')]||undefined,'CampaignId':_0x2bbe61[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x100')));_0x37a451({'reschedule':0x1});}}});}if(_0x1068dd['type']===_0xee87('0x7d')&&this[_0xee87('0x23')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0xec')]&&_0x41ad43[_0xee87('0xe4')]===_0xee87('0x101')){delete this[_0xee87('0x2a')][_0x41ad43[_0xee87('0xdf')]];this[_0xee87('0xb3')](this[_0xee87('0x23')][_0x1068dd[_0xee87('0xb4')]]);_0x28c2fb=new Hangup(_0x1068dd,_0x41ad43);_0x28c2fb[_0xee87('0xa9')]=0x12;_0x28c2fb[_0xee87('0xaa')]=_0xee87('0xe5');_0x28c2fb[_0xee87('0xe6')]=_0xee87('0xe7');ami[_0xee87('0x4e')](_0xee87('0xe8'),ut[_0xee87('0xe9')](_0x28c2fb,'amd'));this['saveInDb'](_0x28c2fb,_0xee87('0x102'),'[syncHangupInAMDIvr]');}if(_0x1068dd[_0xee87('0x4f')]===_0xee87('0x7d')&&this[_0xee87('0x23')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0xec')]&&_0x41ad43[_0xee87('0xe4')]===_0xee87('0xed')){var _0x217982=this;return new BPromise(function(_0x264011,_0x18cc84){delete _0x217982['uniqueId'][_0x41ad43[_0xee87('0xdf')]];_0x217982[_0xee87('0xb3')](_0x217982[_0xee87('0x23')][_0x1068dd['queue']]);_0x217982[_0xee87('0x23')][_0x1068dd[_0xee87('0xb4')]][_0xee87('0x5e')]+=0x1;_0x217982[_0xee87('0x23')][_0x1068dd['queue']][_0xee87('0x5d')]+=0x1;var _0x3de2d6=_0x217982[_0xee87('0x23')][_0x1068dd[_0xee87('0xb4')]];var _0x7b7116=new Hangup(_0x1068dd,_0x41ad43);_0x7b7116['state']=0x13;_0x7b7116[_0xee87('0xaa')]=_0xee87('0xee');_0x7b7116['membername']='AMD';_0x7b7116[_0xee87('0xef')]+=0x1;_0x7b7116[_0xee87('0xf0')]+=0x1;_0x7b7116[_0xee87('0xf1')]=!![];ami['emit'](_0xee87('0xe8'),ut[_0xee87('0xe9')](_0x7b7116,'amd'));_0x217982[_0xee87('0xcb')](_0x7b7116)['catch'](loggerCatch(_0xee87('0xf2')));if(_0x7b7116[_0xee87('0x103')]+_0x7b7116['countcongestionretry']+_0x7b7116[_0xee87('0x104')]+_0x7b7116[_0xee87('0xf3')]+_0x7b7116[_0xee87('0xf4')]+_0x7b7116[_0xee87('0xf5')]+_0x7b7116[_0xee87('0xef')]+_0x7b7116[_0xee87('0x105')]>=_0x3de2d6[_0xee87('0x106')]){_0x217982['stateGlobal'](_0x7b7116,_0x264011,_0x18cc84,_0xee87('0xf7'));}else{if(_0x7b7116[_0xee87('0xef')]>=_0x3de2d6['dialMachineMaxRetry']){_0x217982[_0xee87('0xf9')](_0x7b7116,_0x264011,_0x18cc84,_0xee87('0xfa'));}else{_0x217982[_0xee87('0xbf')]({'active':![],'countmachineretry':_0x7b7116[_0xee87('0xef')],'scheduledat':moment()[_0xee87('0xfb')](_0x3de2d6[_0xee87('0xfc')],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x7b7116['ContactId'],'ListId':_0x7b7116[_0xee87('0xff')],'VoiceQueueId':_0x7b7116[_0xee87('0xd3')]||undefined,'CampaignId':_0x7b7116[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x100')));_0x264011({'reschedule':0x1});}}});}}};Dialer[_0xee87('0xb7')]['syncHangup']=function(_0x4c4b21){var _0x181129=this[_0xee87('0x2a')][_0x4c4b21['uniqueid']];var _0x11571e=this;var _0x6b4e86;if(_0x181129&&_0x181129['type']===_0xee87('0x7d')){delete this['uniqueId'][_0x4c4b21[_0xee87('0xdf')]];this['updateOriginated'](this[_0xee87('0x23')][_0x181129[_0xee87('0xb4')]]);this['campaigns'][_0x181129[_0xee87('0xb4')]][_0xee87('0x107')]+=0x1;_0x6b4e86=new Hangup(_0x181129,_0x4c4b21);this[_0xee87('0xcb')](_0x6b4e86)[_0xee87('0xb2')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xee87('0xc9')](_0x6b4e86)[_0xee87('0xb2')](loggerCatch(_0xee87('0x108')));}if(_0x181129&&_0x181129[_0xee87('0x4f')]!==_0xee87('0x7d')&&isNotNull(this[_0xee87('0x22')][_0x181129[_0xee87('0xb4')]][_0xee87('0x109')])){delete this['uniqueId'][_0x4c4b21[_0xee87('0xdf')]];this['updateOriginated'](this[_0xee87('0x22')][_0x181129['queue']]);this['voiceQueues'][_0x181129[_0xee87('0xb4')]][_0xee87('0x5e')]+=0x1;this['voiceQueues'][_0x181129['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x6b4e86=new Hangup(_0x181129,_0x4c4b21);_0x6b4e86[_0xee87('0xa9')]=0x10;_0x6b4e86['statedesc']=_0xee87('0x10a');_0x6b4e86[_0xee87('0xe6')]=_0xee87('0x10b');this[_0xee87('0xcb')](_0x6b4e86)[_0xee87('0xb2')](loggerCatch(_0xee87('0x10c')));this['moveContactManagedDialer'](_0x6b4e86)[_0xee87('0xb2')](loggerCatch('[syncHangupIvr]'));}if(_0x181129&&_0x181129['type']!=='ivr'&&!isNotNull(this[_0xee87('0x22')][_0x181129[_0xee87('0xb4')]][_0xee87('0x109')])){delete this[_0xee87('0x2a')][_0x4c4b21[_0xee87('0xdf')]];this[_0xee87('0xb3')](this[_0xee87('0x22')][_0x181129[_0xee87('0xb4')]]);this[_0xee87('0x22')][_0x181129[_0xee87('0xb4')]][_0xee87('0x67')]+=0x1;_0x6b4e86=new Hangup(_0x181129,_0x4c4b21);_0x6b4e86[_0xee87('0xa9')]=0xc;_0x6b4e86[_0xee87('0xaa')]=_0x4c4b21[_0xee87('0x10d')];_0x6b4e86['membername']='Unknow';this['createHistory'](_0x6b4e86)[_0xee87('0xb2')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xee87('0xc9')](_0x6b4e86)[_0xee87('0xb2')](loggerCatch(_0xee87('0x108')));}};Dialer[_0xee87('0xb7')][_0xee87('0x10e')]=function(_0x541563){var _0x1075e2=this['uniqueId'][_0x541563['uniqueid']];var _0xb91e7=this;if(this[_0xee87('0x22')][_0x541563[_0xee87('0xb4')]]){if(_0x1075e2&&_0x1075e2['type']!=='ivr'){delete this['uniqueId'][_0x541563[_0xee87('0xdf')]];this[_0xee87('0x22')][_0x541563[_0xee87('0xb4')]]['outboundAnswerCallsDay']+=0x1;var _0xc38f9b=new AgentComplete(_0x1075e2,_0x541563);if(_0x541563['reason']===_0xee87('0x10f')){_0xc38f9b['agiafterat']=this[_0xee87('0x22')][_0x541563['queue']][_0xee87('0x110')]&&this[_0xee87('0x22')][_0x541563[_0xee87('0xb4')]]['dialAgiAfterHangupAgent']?moment()[_0xee87('0x7a')](_0xee87('0xfe')):undefined;}this[_0xee87('0xcb')](_0xc38f9b)[_0xee87('0xb2')](loggerCatch(_0xee87('0x111')));this['moveContactManagedDialer'](_0xc38f9b)[_0xee87('0xb2')](loggerCatch(_0xee87('0x112')));}}};Dialer[_0xee87('0xb7')][_0xee87('0x31')]=function(_0x1554fe){if(this[_0xee87('0x22')][_0x1554fe[_0xee87('0xb4')]]){if(this[_0xee87('0x2a')][_0x1554fe[_0xee87('0xdf')]]&&this[_0xee87('0x2a')][_0x1554fe[_0xee87('0xdf')]][_0xee87('0x4f')]!==_0xee87('0x7d')){this[_0xee87('0xb3')](this[_0xee87('0x22')][_0x1554fe[_0xee87('0xb4')]]);this[_0xee87('0x2a')][_0x1554fe[_0xee87('0xdf')]]['answertime']=moment()[_0xee87('0x7a')](_0xee87('0xfe'));}}};Dialer[_0xee87('0xb7')]['queueCallerAbandonCreateState']=function(_0x1fe669){this[_0xee87('0xcb')](_0x1fe669)[_0xee87('0xb2')](loggerCatch(_0xee87('0x111')));this[_0xee87('0xc9')](_0x1fe669)[_0xee87('0xb2')](loggerCatch(_0xee87('0x113')));};Dialer[_0xee87('0xb7')]['syncQueueCallerAbandon']=function(_0x1a15ac){var _0x57351b=this['uniqueId'][_0x1a15ac['uniqueid']];var _0x7b33ee=this;if(this[_0xee87('0x22')][_0x1a15ac[_0xee87('0xb4')]]){if(_0x57351b&&_0x57351b[_0xee87('0x4f')]!==_0xee87('0x7d')){delete this[_0xee87('0x2a')][_0x1a15ac[_0xee87('0xdf')]];this['updateOriginated'](this['voiceQueues'][_0x1a15ac['queue']]);_0x57351b[_0xee87('0x114')]=moment()[_0xee87('0x7a')](_0xee87('0xfe'));var _0x4fa35b=new QueueCallerAbandon(_0x57351b,_0x1a15ac);if(getSeconds(_0x57351b[_0xee87('0x114')],_0x57351b['responsetime'])>=_0x57351b[_0xee87('0x115')]){this[_0xee87('0x22')][_0x1a15ac[_0xee87('0xb4')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this['voiceQueues'][_0x1a15ac[_0xee87('0xb4')]][_0xee87('0x62')]+=0x1;this['voiceQueues'][_0x1a15ac['queue']][_0xee87('0x6d')]+=0x1;_0x4fa35b[_0xee87('0xa9')]=0xa;_0x4fa35b[_0xee87('0xaa')]=_0xee87('0x116');_0x4fa35b[_0xee87('0x117')]=_0xee87('0x118');_0x4fa35b[_0xee87('0x119')]=this[_0xee87('0x22')][_0x1a15ac['queue']][_0xee87('0x110')]?moment()[_0xee87('0x7a')](_0xee87('0xfe')):undefined;_0x4fa35b['countdropretry']+=0x1;_0x4fa35b['countglobal']+=0x1;if(_0x4fa35b[_0xee87('0xf4')]>=this[_0xee87('0x22')][_0x1a15ac['queue']][_0xee87('0x11a')]){this[_0xee87('0x11b')](_0x4fa35b);}else{this[_0xee87('0xbf')]({'active':![],'countdropretry':_0x4fa35b[_0xee87('0xf4')],'scheduledat':moment()[_0xee87('0xfb')](this[_0xee87('0x22')][_0x1a15ac[_0xee87('0xb4')]][_0xee87('0x11c')],'minutes')['format'](_0xee87('0xfe')),'ContactId':_0x57351b[_0xee87('0xd1')],'ListId':_0x57351b[_0xee87('0xff')],'VoiceQueueId':_0x57351b[_0xee87('0xd3')]||undefined,'CampaignId':_0x57351b[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x11d')));var _0x58a235=new History(_0x4fa35b);_0x58a235['state']=0xa;_0x58a235[_0xee87('0xaa')]=_0xee87('0x116');_0x58a235[_0xee87('0x11e')]=moment()[_0xee87('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');_0x58a235['endtime']=_0x58a235[_0xee87('0x11e')];_0x58a235['calleridname']=_0x4fa35b[_0xee87('0x11f')];_0x58a235[_0xee87('0x120')]=_0x4fa35b[_0xee87('0x120')];this[_0xee87('0xcb')](_0x58a235)[_0xee87('0xb2')](loggerCatch(_0xee87('0x121')));}}else{this[_0xee87('0x22')][_0x1a15ac['queue']][_0xee87('0x6a')]+=0x1;this[_0xee87('0x22')][_0x1a15ac[_0xee87('0xb4')]][_0xee87('0x61')]+=0x1;_0x4fa35b[_0xee87('0xa9')]=0xb;_0x4fa35b[_0xee87('0xaa')]='Abandoned';_0x4fa35b[_0xee87('0x117')]=_0xee87('0x122');_0x4fa35b['countabandonedretry']+=0x1;_0x4fa35b[_0xee87('0xf0')]+=0x1;if(_0x4fa35b[_0xee87('0xf5')]>=this[_0xee87('0x22')][_0x1a15ac[_0xee87('0xb4')]][_0xee87('0x123')]){this[_0xee87('0x11b')](_0x4fa35b);}else{this[_0xee87('0xbf')]({'active':![],'countabandonedretry':_0x4fa35b['countabandonedretry'],'scheduledat':moment()['add'](this[_0xee87('0x22')][_0x1a15ac[_0xee87('0xb4')]][_0xee87('0x124')],'minutes')[_0xee87('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x57351b[_0xee87('0xd1')],'ListId':_0x57351b[_0xee87('0xff')],'VoiceQueueId':_0x57351b['VoiceQueueId']||undefined,'CampaignId':_0x57351b['CampaignId']||undefined})['catch'](loggerCatch(_0xee87('0x125')));var _0x58a235=new History(_0x4fa35b);_0x58a235[_0xee87('0xa9')]=0xb;_0x58a235['statedesc']=_0xee87('0x126');_0x58a235[_0xee87('0x11e')]=moment()[_0xee87('0x7a')](_0xee87('0xfe'));_0x58a235['endtime']=_0x58a235[_0xee87('0x11e')];_0x58a235[_0xee87('0x11f')]=_0x4fa35b[_0xee87('0x11f')];_0x58a235['calleridnum']=_0x4fa35b['calleridnum'];this['createHistory'](_0x58a235)['catch'](loggerCatch(_0xee87('0x127')));}}}}};Dialer[_0xee87('0xb7')][_0xee87('0x128')]=function(_0x3e4301){if(this[_0xee87('0x28')][_0x3e4301[_0xee87('0xdf')]]){this[_0xee87('0x28')][_0x3e4301[_0xee87('0xdf')]][_0xee87('0xb1')]=_0x3e4301[_0xee87('0xb1')];}if(this[_0xee87('0x2a')][_0x3e4301[_0xee87('0xdf')]]){this[_0xee87('0x2a')][_0x3e4301[_0xee87('0xdf')]][_0xee87('0xb1')]=_0x3e4301[_0xee87('0xb1')];}};Dialer[_0xee87('0xb7')]['syncQueueMember']=function(_0x241339){if(strategy[this[_0xee87('0x22')][this[_0xee87('0x28')][_0x241339['actionid']][_0xee87('0xb4')]][_0xee87('0x129')]]===_0xee87('0x12a')){if(this['actions'][_0x241339[_0xee87('0x12b')]]&&_[_0xee87('0xaf')](this[_0xee87('0x28')][_0x241339['actionid']][_0xee87('0x12c')])&&_0x241339[_0xee87('0xda')]==='1'&&_0x241339[_0xee87('0x12d')]==='0'){if(this[_0xee87('0x24')][_0x241339[_0xee87('0x12e')]]){if(!this[_0xee87('0x24')][_0x241339[_0xee87('0x12e')]][_0xee87('0x12c')]){this[_0xee87('0x24')][_0x241339[_0xee87('0x12e')]][_0xee87('0x12c')]=!![];this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]]['locked']=!![];this[_0xee87('0x28')][_0x241339['actionid']]['stateinterface']=_0x241339['stateinterface'];}}}}else if((strategy[this['voiceQueues'][this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]][_0xee87('0xb4')]][_0xee87('0x129')]]||_0xee87('0x1d'))===_0xee87('0x1d')){if(this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]]){if(this[_0xee87('0x24')][_0x241339[_0xee87('0x12e')]]){this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]][_0xee87('0x12e')]=_0x241339[_0xee87('0x12e')];if(_[_0xee87('0xaf')](this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]][_0xee87('0xb4')]])){this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]][_0xee87('0xb4')]]=[];}this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]][_0xee87('0xb4')]]['push'](_[_0xee87('0x91')](_[_0xee87('0xd0')](this[_0xee87('0x28')][_0x241339[_0xee87('0x12b')]],[_0xee87('0x12f'),_0xee87('0x12e')]),{'status':_0x241339[_0xee87('0xda')],'paused':_0x241339['paused']}));}}}};function unlockQueueStatus(_0x9c0b16,_0x1a7d25){setTimeout(function(){if(_['isUndefined'](_0x9c0b16[_0xee87('0x130')])){loggerBooked['error'](_0xee87('0x131'),_0x1a7d25);}_0x9c0b16[_0xee87('0x130')]=!![];loggerBooked['info'](_0xee87('0x132'),_0x1a7d25,JSON[_0xee87('0x78')](_[_0xee87('0xd0')](_0x9c0b16,[_0xee87('0x42'),_0xee87('0x130')])));},0x1f3);}Dialer[_0xee87('0xb7')][_0xee87('0x3d')]=function(_0x4f5b5d){var _0x5b5102=this;var _0x4e6fd1=_0x5b5102[_0xee87('0x22')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]];if(strategy[this['voiceQueues'][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]][_0xee87('0x129')]]===_0xee87('0x12a')){if(this[_0xee87('0x28')][_0x4f5b5d['actionid']]&&this['actions'][_0x4f5b5d['actionid']]['stateinterface']){this[_0xee87('0x133')][_0xee87('0x134')](this[_0xee87('0x28')][_0x4f5b5d['actionid']][_0xee87('0x12f')],this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0x12e')])[_0xee87('0xb2')](function(_0x2c2a96){logger[_0xee87('0x99')](_0xee87('0x135'),util[_0xee87('0x9a')](_0x2c2a96,{'showHidden':![],'depth':null}));})['finally'](function(){_0x5b5102[_0xee87('0xb3')](_0x5b5102[_0xee87('0x22')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]);_0x5b5102[_0xee87('0x24')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['stateinterface']][_0xee87('0x12c')]=![];delete _0x5b5102[_0xee87('0x28')][_0x4f5b5d['actionid']];unlockQueueStatus(_0x4e6fd1);});}else{this[_0xee87('0xb3')](this[_0xee87('0x22')][this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]);this[_0xee87('0xbf')]({'active':![],'ContactId':this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd1')],'ListId':this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xff')],'VoiceQueueId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd3')]||undefined,'CampaignId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]];unlockQueueStatus(_0x4e6fd1);}}else if((strategy[this[_0xee87('0x22')][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['queue']][_0xee87('0x129')]]||_0xee87('0x1d'))===_0xee87('0x1d')){var _0x4ae1ef;if(this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]&&!_[_0xee87('0x80')](this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]])){if(this[_0xee87('0x2f')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d['actionid']]['queue']]){this[_0xee87('0x2f')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]=this[_0xee87('0x2f')][this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]?this[_0xee87('0x2f')][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]:this[_0xee87('0x2e')][this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]?this['queueBooked'][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['queue']][_0xee87('0x136')]||0x0:0x0;}this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]['_rr']=this[_0xee87('0x2f')][this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]];for(var _0x1072ac=0x0;_0x1072ac<this['queueBooked'][this[_0xee87('0x28')][_0x4f5b5d['actionid']][_0xee87('0xb4')]][_0xee87('0x9b')];_0x1072ac+=0x1){_0x4ae1ef=rr(this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]);this[_0xee87('0x2f')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d['actionid']][_0xee87('0xb4')]]=this[_0xee87('0x2e')][this[_0xee87('0x28')][_0x4f5b5d['actionid']]['queue']][_0xee87('0x136')];if(_0x4ae1ef[_0xee87('0xda')]==='1'&&_0x4ae1ef[_0xee87('0x12d')]==='0'){break;}}if(!_[_0xee87('0xaf')](_0x4ae1ef)){this['agents'][_0x4ae1ef[_0xee87('0x12e')]][_0xee87('0x137')]=_['isUndefined'](this[_0xee87('0x24')][_0x4ae1ef[_0xee87('0x12e')]][_0xee87('0x137')])?!![]:this[_0xee87('0x24')][_0x4ae1ef['stateinterface']][_0xee87('0x137')];}loggerBooked[_0xee87('0x81')](_0xee87('0x138'),_0x4f5b5d[_0xee87('0x12b')],_0xee87('0x139'),JSON[_0xee87('0x78')](_[_0xee87('0xd0')](this[_0xee87('0x24')][_0x4ae1ef[_0xee87('0x12e')]],['name',_0xee87('0x137')])),_0xee87('0x13a'),JSON[_0xee87('0x78')](_0x4ae1ef['idHopper']));if(!_[_0xee87('0xaf')](_0x4ae1ef)&&_0x4ae1ef[_0xee87('0xda')]==='1'&&_0x4ae1ef['paused']==='0'&&this[_0xee87('0x24')][_0x4ae1ef[_0xee87('0x12e')]][_0xee87('0x137')]){this[_0xee87('0x24')][_0x4ae1ef[_0xee87('0x12e')]][_0xee87('0x137')]=![];this['queueBooked'][_0x5b5102['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]=[];this['preview'][_0xee87('0x134')](_0x4ae1ef[_0xee87('0x12f')],_0x4ae1ef[_0xee87('0x12e')])[_0xee87('0xb2')](function(_0x314bec){logger[_0xee87('0x99')](_0xee87('0x135'),util['inspect'](_0x314bec,{'showHidden':![],'depth':null}));})['finally'](function(){_0x5b5102[_0xee87('0xb3')](_0x5b5102[_0xee87('0x22')][_0x5b5102[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]);setTimeout(function(){_0x5b5102[_0xee87('0x24')][_0x4ae1ef[_0xee87('0x12e')]][_0xee87('0x137')]=!![];loggerBooked[_0xee87('0x81')](_0xee87('0x13b'),_0x4f5b5d[_0xee87('0x12b')],'Agent:\x20',JSON['stringify'](_[_0xee87('0xd0')](_0x5b5102[_0xee87('0x24')][_0x4ae1ef[_0xee87('0x12e')]],[_0xee87('0x42'),_0xee87('0x137')])),_0xee87('0x13a'),JSON[_0xee87('0x78')](_0x4ae1ef[_0xee87('0x12f')]));},0xc7);delete _0x5b5102['actions'][_0x4f5b5d['actionid']];unlockQueueStatus(_0x4e6fd1,_0x4f5b5d['actionid']);});}else{loggerBooked[_0xee87('0x81')]('[booked][unlock]');this['updateOriginated'](this[_0xee87('0x22')][this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd1')],'ListId':this[_0xee87('0x28')][_0x4f5b5d['actionid']][_0xee87('0xff')],'VoiceQueueId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd3')]||undefined,'CampaignId':this['actions'][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd4')]||undefined})['catch'](loggerCatch(_0xee87('0x13c')));delete this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]];unlockQueueStatus(_0x4e6fd1);}}else{loggerBooked['info'](_0xee87('0x13d'));this[_0xee87('0xb3')](this[_0xee87('0x22')][this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xb4')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['ContactId'],'ListId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['ListId'],'VoiceQueueId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd3')]||undefined,'CampaignId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['CampaignId']||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x13e')));delete this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]];unlockQueueStatus(_0x4e6fd1);}}else{loggerBooked[_0xee87('0x81')]('[booked][unlock3]');this['updateOriginated'](this[_0xee87('0x22')][this[_0xee87('0x28')][_0x4f5b5d['actionid']][_0xee87('0xb4')]]);this[_0xee87('0xbf')]({'active':![],'ContactId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd1')],'ListId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xff')],'VoiceQueueId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]][_0xee87('0xd4')]||undefined})['catch'](loggerCatch(_0xee87('0x13f')));delete this[_0xee87('0x28')][_0x4f5b5d[_0xee87('0x12b')]];unlockQueueStatus(_0x4e6fd1);}};Dialer[_0xee87('0xb7')][_0xee87('0x3e')]=function(){var _0x8f7c71=this;setInterval(function(){_0x8f7c71[_0xee87('0x140')]();},0x3e8);};Dialer[_0xee87('0xb7')][_0xee87('0x141')]=function(_0x270228){var _0x58d414=this;return function(){if(!_0x58d414[_0xee87('0xd8')](_0x270228[_0xee87('0x76')])){if(!_0x58d414[_0xee87('0xd8')](_0x270228[_0xee87('0x142')])){_0x270228['message']='TRUNK_IS_NOT_REACHABLE';throw _0x270228[_0xee87('0x42')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xee87('0xb7')][_0xee87('0x143')]=function(_0x484f81,_0x5e39c8,_0x2be601,_0x7cfdbe){var _0x45cf57=this;return function(){var _0x507a18=!![];return _0x45cf57['ifTime'](_0x484f81,_0x5e39c8,_0x2be601,_0x7cfdbe,_0x507a18);};};Dialer[_0xee87('0xb7')][_0xee87('0x144')]=function(_0x50ab90,_0x559a9a,_0x24b901,_0x41666a){var _0x11c067=this;return function(){var _0x59595a=![];return _0x11c067[_0xee87('0x145')](_0x50ab90['Intervals'],_0x559a9a,_0x24b901,_0x41666a,_0x59595a);};};Dialer[_0xee87('0xb7')]['ifTime']=function(_0x5945ff,_0x6465a5,_0x9dff30,_0x5625e8,_0x2c463b){var _0x52b742=[];return new BPromise(function(_0x47ad5f,_0x49d7e8){if(!isNotNull(_0x5945ff)){_0x5625e8[_0xee87('0x44')]=_0xee87('0x47');return _0x49d7e8(msgResponse('ifTime',_0xee87('0x146'),_0x9dff30+_0xee87('0x147')));}if(_[_0xee87('0x80')](_0x5945ff)){_0x5625e8[_0xee87('0x44')]='INTERVAL_IS_EMPTY';return _0x49d7e8(msgResponse(_0xee87('0x145'),_0xee87('0x146'),_0x9dff30+_0xee87('0x148')));}if(_0x6465a5&&_[_0xee87('0x40')](config[_0xee87('0x149')][_0x6465a5])){_0x5625e8[_0xee87('0x44')]=_0xee87('0x14a');return _0x49d7e8(msgResponse(_0xee87('0x145'),_0xee87('0x146'),_0x9dff30+_0xee87('0x14b')+_0x6465a5));}if(_[_0xee87('0x14c')](_0x5945ff)){for(var _0x5e82c6=0x0;_0x5e82c6<_0x5945ff['length'];_0x5e82c6+=0x1){_0x52b742[_0xee87('0x14d')](ami[_0xee87('0xb0')]({'action':_0xee87('0x14e'),'command':util['format'](_0xee87('0x14f'),_0x5945ff[_0x5e82c6]['interval'],!_[_0xee87('0x40')](config[_0xee87('0x149')][_0x6465a5])?_0x6465a5:'')})['then'](function(_0x4ac937){return _0x4ac937[_0xee87('0x150')][_0xee87('0x151')](_0xee87('0x152'))>=0x0;})['catch'](myreject(_0x49d7e8)));}}else{_0x52b742[_0xee87('0x14d')](ami['Action']({'action':_0xee87('0x14e'),'command':util[_0xee87('0x7a')](_0xee87('0x14f'),_0x5945ff,!_[_0xee87('0x40')](config['timezones'][_0x6465a5])?_0x6465a5:'')})[_0xee87('0xb9')](function(_0x504809){return _0x504809[_0xee87('0x150')][_0xee87('0x151')](_0xee87('0x152'))>=0x0;})[_0xee87('0xb2')](myreject(_0x49d7e8)));}BPromise[_0xee87('0x153')](_0x52b742)['then'](function(_0xe8ccd4){var _0x2a1980=_['some'](_0xe8ccd4);if(_0x2a1980){return _0x47ad5f(_0x2a1980);}else{_0x5625e8[_0xee87('0x44')]=_0x2c463b?'GLOBAL_INTERVAL_IS_OVERTIME':_0xee87('0x154');return _0x49d7e8(msgResponse(_0xee87('0x155'),_0xee87('0x146'),_0xee87('0x156')+_0x2c463b+'\x20'+_0x9dff30+'\x20Interval\x20is\x20overtime:\x20'+util['inspect'](_0x5945ff,{'showHidden':![],'depth':null})+_0xee87('0x157')+_0x6465a5));}})[_0xee87('0xb2')](function(_0x197141){return _0x49d7e8(msgResponse(_0xee87('0x145'),'Failure',JSON['stringify'](_0x197141)));});});};Dialer[_0xee87('0xb7')][_0xee87('0x158')]=function(_0x2debfb){var _0x2d8402=this;return function(){switch(_0x2debfb[_0xee87('0x5a')]){case _0xee87('0x159'):freeVariablesPredictive(_0x2debfb);_0x2d8402['handlePower'](_0x2debfb,0x1);break;case'power':freeVariablesPredictive(_0x2debfb);_0x2d8402[_0xee87('0x15a')](_0x2debfb,_0x2debfb[_0xee87('0x15b')]);break;case _0xee87('0x15c'):_0x2d8402['predictive'](_0x2debfb);break;case _0xee87('0xa'):freeVariablesPredictive(_0x2debfb);_0x2d8402[_0xee87('0x15a')](_0x2debfb,0x1);break;default:freeVariablesPredictive(_0x2debfb);logger['error'](_0xee87('0x15d'),_0x2debfb[_0xee87('0x42')],_0xee87('0x15e'));}};};Dialer[_0xee87('0xb7')][_0xee87('0x15f')]=function(_0x347eab){var _0x24a8ad=this;return function(){_0x24a8ad[_0xee87('0x160')](_0x347eab);};};Dialer[_0xee87('0xb7')]['syncQueueSummary']=function(_0x5e0ef2){var _0x2278e4=this;if(isNotPreview(_0x5e0ef2['dialMethod'])){if(isVoiceQueueOutbound(_0x5e0ef2[_0xee87('0x4f')])&&isActive(_0x5e0ef2['dialActive'])){_0x5e0ef2[_0xee87('0xa3')]=!![];BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](checkIsLoggedIn(_0x5e0ef2,_0x5e0ef2[_0xee87('0x161')]))[_0xee87('0xb9')](checkIsActive(_0x5e0ef2,_0x5e0ef2[_0xee87('0x59')]))[_0xee87('0xb9')](checkInterval(_0x5e0ef2))['then'](_0x2278e4[_0xee87('0x141')](_0x5e0ef2))[_0xee87('0xb9')](_0x2278e4[_0xee87('0x143')](_0x5e0ef2[_0xee87('0x162')],_0x5e0ef2[_0xee87('0x163')],_0x5e0ef2['name'],_0x5e0ef2))['then'](_0x2278e4[_0xee87('0x144')](_0x5e0ef2['Interval'],_0x5e0ef2[_0xee87('0x163')],_0x5e0ef2[_0xee87('0x42')],_0x5e0ef2))[_0xee87('0xb9')](_0x2278e4[_0xee87('0x158')](_0x5e0ef2))[_0xee87('0xb2')](loggerCatchQueueSummary(_0xee87('0x164'),_0x5e0ef2));}else{notSendMessagesQueue(_0x5e0ef2);}}else{freeVariablesPredictive(_0x5e0ef2);}};Dialer[_0xee87('0xb7')]['syncCampaigns']=function(){var _0x4de186=this;var _0x10af74;for(var _0x1a2640 in this[_0xee87('0x23')]){if(typeof this[_0xee87('0x23')][_0x1a2640]!==_0xee87('0x9c')){_0x10af74=this[_0xee87('0x23')][_0x1a2640];if(isCampaignIvr(_0x10af74['type'])&&isActive(_0x10af74[_0xee87('0xd9')])){_0x10af74['sendMessageOneNotActive']=!![];BPromise[_0xee87('0xba')]()[_0xee87('0xb9')](checkIsActive(_0x10af74,_0x10af74[_0xee87('0xd9')]))['then'](checkInterval(_0x10af74))[_0xee87('0xb9')](_0x4de186[_0xee87('0x141')](_0x10af74))[_0xee87('0xb9')](_0x4de186[_0xee87('0x143')](_0x10af74[_0xee87('0x162')],_0x10af74[_0xee87('0x163')],_0x10af74[_0xee87('0x42')],_0x10af74))[_0xee87('0xb9')](_0x4de186[_0xee87('0x144')](_0x10af74[_0xee87('0x46')],_0x10af74[_0xee87('0x163')],_0x10af74[_0xee87('0x42')],_0x10af74))[_0xee87('0xb9')](_0x4de186['launchHandleIvr'](_0x10af74))['catch'](loggerCatchQueueSummary(_0xee87('0x165'),_0x10af74));}else{notSendMessagesCampaign(_0x10af74);}}}};function getCallerIdRandom(_0xd13bec,_0x1914d9){var _0xf1294e;var _0x32be80;var _0x328612;if(_0x1914d9<=0x0){_0x1914d9=0x1;}_0xf1294e=new RegExp(_0xee87('0x166')+_0x1914d9+'}$');_0x32be80=Math[_0xee87('0x167')](0xa,_0x1914d9-0x1);_0x328612=Math['pow'](0xa,_0x1914d9)-0x1;return util['format']('%s',_['replace'](_0xd13bec,_0xf1294e,_['random'](_0x32be80,_0x328612)));}function extractCalleridName(_0x3251c6){var _0x50fc9d=_0x3251c6[_0xee87('0x168')](/"(.*?)"/);return _0x50fc9d?_0x50fc9d[0x1]:_0x3251c6;}function extractCalleridNumber(_0x567626){var _0x20e655=_0x567626[_0xee87('0x168')](/<(.*?)>/);return _0x20e655?_0x20e655[0x1]:_0x567626;}Dialer[_0xee87('0xb7')]['actionOriginate']=function(_0x227de4,_0x1ddbc1){var _0xf669aa=this;var _0x48daa6=uuid['v4']();this['actions'][_0x48daa6]=new Action(_0x227de4,_0x1ddbc1,_0x48daa6);return new BPromise(function(_0x104dc9,_0x7fafff){if(_[_0xee87('0x40')](_0x227de4)&&typeof _0x227de4!==_0xee87('0x169')){return _0x7fafff(msgResponse(_0xee87('0x16a'),_0xee87('0x146'),_0xee87('0x16b')));}if(_[_0xee87('0x40')](_0x1ddbc1['Contact'][_0xee87('0x16c')])||_0x1ddbc1[_0xee87('0x16d')]['phone']===null){return _0x7fafff(msgResponse('originate',_0xee87('0x146'),_0xee87('0x16e')));}var _0x2d3138={'XMD-CALLERID':_0xf669aa['actions'][_0x48daa6][_0xee87('0x16f')](),'XMD-AGI':_0x227de4['dialQueueProject']?util['format'](_0xee87('0x170'),ipAgi,_0x227de4[_0xee87('0x109')]):_0xee87('0x171'),'XMD-AGIAFTER':_0x227de4['dialQueueProject2']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x227de4[_0xee87('0x110')]):'NONE','XMD-QUEUE':_0x227de4[_0xee87('0x4f')]==='outbound'?util[_0xee87('0x7a')](_0xee87('0x172'),_0x227de4['name'],_0x227de4[_0xee87('0x173')]||'',_0x227de4[_0xee87('0x174')]?'c':'',_0x227de4[_0xee87('0x115')]||0x3):_0xee87('0x171'),'XMD-CONTACTID':_0x1ddbc1[_0xee87('0xd1')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0xf669aa[_0xee87('0x28')][_0x48daa6][_0xee87('0x16f')](),'XMD-AMD':_0x227de4[_0xee87('0xec')]?'ACTIVE':_0xee87('0x171'),'XMD-DESTINATION':_0xee87('0xe3')};if(_0x227de4[_0xee87('0xec')]){_0x2d3138[_0xee87('0x175')]=_0x227de4[_0xee87('0x176')]||0x9c4;_0x2d3138['XMD-AMDGREETING']=_0x227de4[_0xee87('0x177')]||0x5dc;_0x2d3138['XMD-AMDAFTERGREETINGSILENCE']=_0x227de4[_0xee87('0x178')]||0x320;_0x2d3138[_0xee87('0x179')]=_0x227de4[_0xee87('0x17a')]||0x1388;_0x2d3138[_0xee87('0x17b')]=_0x227de4['dialAMDMinWordLength']||0x64;_0x2d3138[_0xee87('0x17c')]=_0x227de4[_0xee87('0x17d')]||0x32;_0x2d3138[_0xee87('0x17e')]=_0x227de4['dialAMDMaximumNumberOfWords']||0x3;_0x2d3138[_0xee87('0x17f')]=_0x227de4['dialAMDSilenceThreshold']||0x100;_0x2d3138[_0xee87('0x180')]=_0x227de4[_0xee87('0x181')]||0x1388;}if(_0x227de4[_0xee87('0x4f')]===_0xee87('0x50')){_0x2d3138[_0xee87('0x182')]=_0x1ddbc1['VoiceQueueId'];}else{_0x2d3138[_0xee87('0x183')]=_0x1ddbc1[_0xee87('0xd4')];}for(var _0x2b9688 in _0x1ddbc1[_0xee87('0x16d')]){if(typeof _0x1ddbc1['Contact'][_0x2b9688]!==_0xee87('0x9c')){if(isNotNull(_0x1ddbc1[_0xee87('0x16d')][_0x2b9688])&&_0x2b9688!=='id'&&_0x2b9688!==_0xee87('0x184')&&_0x2b9688!==_0xee87('0x185')&&_0x2b9688!==_0xee87('0x186')){_0x2d3138[util['format'](_0xee87('0x187'),_0xee87('0x188'),_[_0xee87('0x189')](_0x2b9688))]=_0x1ddbc1[_0xee87('0x16d')][_0x2b9688];}}}var _0x4025c9=_0xf669aa[_0xee87('0xd8')](_0x227de4[_0xee87('0x76')])?getCallerId(_0x227de4[_0xee87('0x76')][_0xee87('0x77')],_0x227de4[_0xee87('0x5b')],_0x227de4[_0xee87('0x18a')]>0x0?getCallerIdRandom(_0x227de4[_0xee87('0x18b')],_0x227de4[_0xee87('0x18a')]):_0x227de4[_0xee87('0x18b')]):getCallerId(_[_0xee87('0xaf')](_0x227de4['TrunkBackup'])?_0x227de4[_0xee87('0x76')][_0xee87('0x77')]:_0x227de4[_0xee87('0x142')][_0xee87('0x77')],_0x227de4['dialOriginateCallerIdName'],_0x227de4[_0xee87('0x18a')]>0x0?getCallerIdRandom(_0x227de4[_0xee87('0x18b')],_0x227de4[_0xee87('0x18a')]):_0x227de4[_0xee87('0x18b')]);if(_0x4025c9){_0x2d3138['XMD-ORIGINATECALLERIDNAME']=_0xf669aa[_0xee87('0x28')][_0x48daa6]['originatecalleridname']=extractCalleridName(_0x4025c9);_0x2d3138[_0xee87('0x18c')]=_0xf669aa[_0xee87('0x28')][_0x48daa6][_0xee87('0x18d')]=extractCalleridNumber(_0x4025c9);}return ami[_0xee87('0xb0')]({'actionid':_0x48daa6,'action':'originate','channel':_0xf669aa[_0xee87('0xd8')](_0x227de4[_0xee87('0x76')])?util[_0xee87('0x7a')](_0xee87('0x18e'),_0x227de4[_0xee87('0x76')][_0xee87('0x42')],isNotNull(_0x227de4[_0xee87('0x18f')])?_0x227de4[_0xee87('0x18f')]['trim']()||'':'',_0x227de4[_0xee87('0x190')]>0x0?_0x1ddbc1['Contact'][_0xee87('0x16c')][_0xee87('0x191')](_0x227de4['dialCutDigit']):_0x1ddbc1['Contact'][_0xee87('0x16c')]):util[_0xee87('0x7a')]('SIP/%s/%s%s',_[_0xee87('0xaf')](_0x227de4[_0xee87('0x142')])?_0x227de4[_0xee87('0x76')][_0xee87('0x42')]:_0x227de4[_0xee87('0x142')][_0xee87('0x42')],isNotNull(_0x227de4[_0xee87('0x18f')])?_0x227de4['dialPrefix']['trim']()||'':'',_0x227de4['dialCutDigit']>0x0?_0x1ddbc1['Contact'][_0xee87('0x16c')]['substring'](_0x227de4[_0xee87('0x190')]):_0x1ddbc1['Contact'][_0xee87('0x16c')]),'callerid':_0x4025c9,'Exten':_0xee87('0xe3'),'Context':_0xee87('0x192'),'Priority':'1','variable':_0x2d3138,'timeout':(_0x227de4[_0xee87('0x5c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x48daa6})[_0xee87('0xb9')](function(_0x20bd69){return _0x104dc9(_0x20bd69);})[_0xee87('0xb2')](function(_0x23ef6a){_0x227de4['outboundOriginateFailureCallsDay']+=0x1;var _0x5dda95=new History(_0xf669aa[_0xee87('0x28')][_0x48daa6]);logger[_0xee87('0x99')](util[_0xee87('0x7a')](_0xee87('0x193'),JSON[_0xee87('0x78')](_0x23ef6a)));_0x5dda95[_0xee87('0xa9')]=0xe;_0x5dda95[_0xee87('0xaa')]='OriginateError';_0x5dda95[_0xee87('0x11e')]=moment()[_0xee87('0x7a')](_0xee87('0xfe'));_0x5dda95[_0xee87('0xab')]=_0x5dda95[_0xee87('0x11e')];_0xf669aa[_0xee87('0xcb')](_0x5dda95)[_0xee87('0xb2')](loggerCatch(_0xee87('0x194')));_0xf669aa[_0xee87('0xc9')](_0x5dda95)[_0xee87('0xb2')](loggerCatch(_0xee87('0x194')))[_0xee87('0x20')](function(){delete _0xf669aa[_0xee87('0x28')][_0x48daa6];return _0x7fafff(msgResponse('originate',_0xee87('0x4b'),_0xee87('0x195')));});});});};Dialer[_0xee87('0xb7')][_0xee87('0x196')]=function(_0x1fe8e2){var _0x2bd26f=this[_0xee87('0x28')][_0x1fe8e2[_0xee87('0x12b')]];if(_0x2bd26f){delete this[_0xee87('0x28')][_0x1fe8e2['actionid']];_0x2bd26f[_0xee87('0x197')]=moment()[_0xee87('0x7a')](_0xee87('0xfe'));var _0x15fcad=_0x2bd26f['type']===_0xee87('0x7d')?this[_0xee87('0x23')][_0x2bd26f[_0xee87('0xb4')]]:this[_0xee87('0x22')][_0x2bd26f['getQueue']()];if(!this[_0xee87('0xd7')](_0x1fe8e2[_0xee87('0x198')])){this[_0xee87('0xb3')](_0x15fcad);return this[_0xee87('0x199')](_0x2bd26f,_0x15fcad,_0x1fe8e2)[_0xee87('0xb2')](loggerCatch(_0xee87('0x19a')));}this[_0xee87('0x2a')][_0x1fe8e2[_0xee87('0xdf')]]=_0x2bd26f;}};Dialer[_0xee87('0xb7')]['checkRetriveMax']=function(_0x34d25c,_0x2d34b8,_0x1e95c0){var _0x4a54b0=new History(_0x2d34b8);if(_0x4a54b0[_0xee87('0x103')]+_0x4a54b0[_0xee87('0x19b')]+_0x4a54b0[_0xee87('0x104')]+_0x4a54b0[_0xee87('0xf3')]+_0x4a54b0['countdropretry']+_0x4a54b0[_0xee87('0xf5')]+_0x4a54b0['countmachineretry']+_0x4a54b0['countagentrejectretry']>=_0x1e95c0[_0xee87('0x106')]-0x1){return!![];}switch(_0x34d25c){case 0x3:if(_0x4a54b0['countnoanswerretry']>=_0x1e95c0[_0xee87('0x19c')]-0x1){return!![];}this[_0xee87('0xbf')]({'active':![],'countnoanswerretry':_0x4a54b0[_0xee87('0x104')]+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0[_0xee87('0x19d')],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x4a54b0[_0xee87('0xd1')],'ListId':_0x4a54b0[_0xee87('0xff')],'VoiceQueueId':_0x4a54b0[_0xee87('0xd3')]||undefined,'CampaignId':_0x4a54b0[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x19e')));break;case 0x5:if(_0x4a54b0[_0xee87('0x103')]>=_0x1e95c0[_0xee87('0x19f')]-0x1){return!![];}this[_0xee87('0xbf')]({'active':![],'countbusyretry':_0x4a54b0[_0xee87('0x103')]+=0x1,'scheduledat':moment()['add'](_0x1e95c0[_0xee87('0x1a0')],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x4a54b0[_0xee87('0xd1')],'ListId':_0x4a54b0['ListId'],'VoiceQueueId':_0x4a54b0[_0xee87('0xd3')]||undefined,'CampaignId':_0x4a54b0[_0xee87('0xd4')]||undefined})['catch'](loggerCatch(_0xee87('0x1a1')));break;case 0x8:if(_0x4a54b0[_0xee87('0x19b')]>=_0x1e95c0[_0xee87('0x1a2')]-0x1){return!![];}this[_0xee87('0xbf')]({'active':![],'countcongestionretry':_0x4a54b0['countcongestionretry']+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0['dialCongestionRetryFrequency'],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x4a54b0[_0xee87('0xd1')],'ListId':_0x4a54b0['ListId'],'VoiceQueueId':_0x4a54b0['VoiceQueueId']||undefined,'CampaignId':_0x4a54b0[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x1a3')));break;case 0x0:if(_0x4a54b0[_0xee87('0xf3')]>=_0x1e95c0['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0xee87('0xbf')]({'active':![],'countnosuchnumberretry':_0x4a54b0[_0xee87('0xf3')]+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0['dialNoSuchNumberRetryFrequency'],'minutes')[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x4a54b0['ContactId'],'ListId':_0x4a54b0[_0xee87('0xff')],'VoiceQueueId':_0x4a54b0[_0xee87('0xd3')]||undefined,'CampaignId':_0x4a54b0['CampaignId']||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x1a4')));}break;case 0xa:if(_0x4a54b0[_0xee87('0xf4')]>=_0x1e95c0[_0xee87('0x11a')]-0x1){return!![];}this[_0xee87('0xbf')]({'active':![],'countdropretry':_0x4a54b0['countdropretry']+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0[_0xee87('0x11c')],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x4a54b0[_0xee87('0xd1')],'ListId':_0x4a54b0[_0xee87('0xff')],'VoiceQueueId':_0x4a54b0[_0xee87('0xd3')]||undefined,'CampaignId':_0x4a54b0['CampaignId']||undefined})[_0xee87('0xb2')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x4a54b0[_0xee87('0xf5')]>=_0x1e95c0[_0xee87('0x123')]-0x1){return!![];}this[_0xee87('0xbf')]({'active':![],'countabandonedretry':_0x4a54b0[_0xee87('0xf5')]+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0[_0xee87('0x124')],_0xee87('0xfd'))[_0xee87('0x7a')](_0xee87('0xfe')),'ContactId':_0x4a54b0['ContactId'],'ListId':_0x4a54b0[_0xee87('0xff')],'VoiceQueueId':_0x4a54b0[_0xee87('0xd3')]||undefined,'CampaignId':_0x4a54b0['CampaignId']||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x125')));break;case 0x13:if(_0x4a54b0[_0xee87('0xef')]>=_0x1e95c0['dialMachineMaxRetry']-0x1){return!![];}this[_0xee87('0xbf')]({'active':![],'countmachineretry':_0x4a54b0[_0xee87('0xef')]+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0[_0xee87('0xfc')],'minutes')['format'](_0xee87('0xfe')),'ContactId':_0x4a54b0['ContactId'],'ListId':_0x4a54b0[_0xee87('0xff')],'VoiceQueueId':_0x4a54b0['VoiceQueueId']||undefined,'CampaignId':_0x4a54b0[_0xee87('0xd4')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x4a54b0[_0xee87('0x105')]>=_0x1e95c0[_0xee87('0x1a5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x4a54b0[_0xee87('0x105')]+=0x1,'scheduledat':moment()[_0xee87('0xfb')](_0x1e95c0[_0xee87('0x1a6')],'minutes')['format'](_0xee87('0xfe')),'ContactId':_0x4a54b0[_0xee87('0xd1')],'ListId':_0x4a54b0[_0xee87('0xff')],'VoiceQueueId':_0x4a54b0[_0xee87('0xd3')]||undefined,'CampaignId':_0x4a54b0[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x1a7')));break;default:return!![];}};Dialer[_0xee87('0xb7')][_0xee87('0x199')]=function(_0x22f1c3,_0x5d4d26,_0x3d52ef){var _0x42c892=this;var _0x2b0e90=new History(_0x22f1c3);return new BPromise(function(_0x14df3b,_0x11a4f0){if(_[_0xee87('0x40')](_0x5d4d26)&&typeof _0x5d4d26!==_0xee87('0x169')){return _0x11a4f0(msgResponse(_0xee87('0x1a8'),_0xee87('0x146'),'entity\x20is\x20undefine'));}if(_[_0xee87('0x40')](_0x3d52ef)&&typeof _0x3d52ef!==_0xee87('0x169')){return _0x11a4f0(msgResponse('[callProgressDetecting]','Failure','evt\x20is\x20undefine'));}switch(_0x3d52ef[_0xee87('0x1a9')]){case'0':_0x5d4d26['outboundNoSuchCallsDay']+=0x1;_0x2b0e90[_0xee87('0xa9')]=0x0;_0x2b0e90[_0xee87('0xaa')]='NoSuchNumber';_0x2b0e90[_0xee87('0xf3')]+=0x1;_0x2b0e90[_0xee87('0xf0')]+=0x1;ami[_0xee87('0x4e')](_0xee87('0x1aa'),ut[_0xee87('0xe9')](_0x22f1c3,_0xee87('0x1ab')));_0x42c892[_0xee87('0xcb')](_0x2b0e90)[_0xee87('0xb2')](loggerCatch(_0xee87('0xf2')));if(_0x42c892[_0xee87('0x1ac')](0x0,_0x22f1c3,_0x5d4d26)){if(_0x2b0e90['countnosuchnumberretry']>=_0x5d4d26['dialNoSuchNumberMaxRetry']){_0x42c892[_0xee87('0xf9')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1ad'));}else{_0x42c892[_0xee87('0xf6')](_0x2b0e90,_0x14df3b,_0x11a4f0,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x5d4d26[_0xee87('0x63')]+=0x1;_0x2b0e90[_0xee87('0xa9')]=0x3;_0x2b0e90[_0xee87('0xaa')]='NoAnswer';_0x2b0e90['countnoanswerretry']+=0x1;_0x2b0e90['countglobal']+=0x1;ami['emit'](_0xee87('0x1ae'),ut['buildObj'](_0x22f1c3,'noanswer'));_0x42c892[_0xee87('0xcb')](_0x2b0e90)[_0xee87('0xb2')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x42c892[_0xee87('0x1ac')](0x3,_0x22f1c3,_0x5d4d26)){if(_0x2b0e90[_0xee87('0x104')]>=_0x5d4d26['dialNoAnswerMaxRetry']){_0x42c892[_0xee87('0xf9')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1af'));}else{_0x42c892[_0xee87('0xf6')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1af'));}}break;case'5':_0x5d4d26['outboundBusyCallsDay']+=0x1;_0x2b0e90[_0xee87('0xa9')]=0x5;_0x2b0e90[_0xee87('0xaa')]=_0xee87('0x1b0');_0x2b0e90[_0xee87('0x103')]+=0x1;_0x2b0e90['countglobal']+=0x1;ami[_0xee87('0x4e')](_0xee87('0x1b1'),ut[_0xee87('0xe9')](_0x22f1c3,'busy'));_0x42c892['createHistory'](_0x2b0e90)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x42c892[_0xee87('0x1ac')](0x5,_0x22f1c3,_0x5d4d26)){if(_0x2b0e90[_0xee87('0x103')]>=_0x5d4d26['dialBusyMaxRetry']){_0x42c892['createStateFinal'](_0x2b0e90,_0x14df3b,_0x11a4f0,'reason\x205\x20busy');}else{_0x42c892['stateGlobal'](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1b2'));}}break;case'8':_0x5d4d26[_0xee87('0x60')]+=0x1;_0x2b0e90['state']=0x8;_0x2b0e90['statedesc']=_0xee87('0x1b3');_0x2b0e90[_0xee87('0x19b')]+=0x1;_0x2b0e90['countglobal']+=0x1;ami[_0xee87('0x4e')](_0xee87('0x1b4'),ut[_0xee87('0xe9')](_0x22f1c3,_0xee87('0x1b5')));_0x42c892[_0xee87('0xcb')](_0x2b0e90)[_0xee87('0xb2')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x42c892[_0xee87('0x1ac')](0x8,_0x22f1c3,_0x5d4d26)){if(_0x2b0e90['countcongestionretry']>=_0x5d4d26[_0xee87('0x1a2')]){_0x42c892[_0xee87('0xf9')](_0x2b0e90,_0x14df3b,_0x11a4f0,'reason\x208\x20congestion');}else{_0x42c892[_0xee87('0xf6')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1b6'));}}break;case'11':_0x5d4d26[_0xee87('0x1b7')]+=0x1;_0x2b0e90[_0xee87('0xa9')]=0xb;_0x2b0e90[_0xee87('0xaa')]=_0xee87('0x126');_0x2b0e90[_0xee87('0xf5')]+=0x1;_0x2b0e90['countglobal']+=0x1;_0x42c892['createHistory'](_0x2b0e90)[_0xee87('0xb2')](loggerCatch(_0xee87('0x127')));if(_0x42c892[_0xee87('0x1ac')](0xb,_0x22f1c3,_0x5d4d26)){if(_0x2b0e90[_0xee87('0xf5')]>=_0x5d4d26[_0xee87('0x123')]){_0x42c892['createStateFinal'](_0x2b0e90,_0x14df3b,_0x11a4f0,'reason\x2011\x20abandoned');}else{_0x42c892[_0xee87('0xf6')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1b8'));}}break;case'20':_0x5d4d26[_0xee87('0x66')]+=0x1;_0x2b0e90['state']=0x14;_0x2b0e90[_0xee87('0xaa')]='AgentReject';_0x2b0e90[_0xee87('0x105')]+=0x1;_0x2b0e90[_0xee87('0xf0')]+=0x1;ami[_0xee87('0x4e')]('custom:agentreject',ut[_0xee87('0xe9')](_0x22f1c3,_0xee87('0x1b9')));_0x42c892[_0xee87('0xcb')](_0x2b0e90)[_0xee87('0xb2')](loggerCatch(_0xee87('0x1ba')));if(_0x42c892[_0xee87('0x1ac')](0x14,_0x22f1c3,_0x5d4d26)){if(_0x2b0e90[_0xee87('0x105')]>=_0x5d4d26[_0xee87('0x1a5')]){_0x42c892[_0xee87('0xf9')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1bb'));}else{_0x42c892[_0xee87('0xf6')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0xee87('0x1bb'));}}break;default:_0x5d4d26[_0xee87('0x67')]+=0x1;_0x2b0e90[_0xee87('0xa9')]=0xc;_0x2b0e90['statedesc']=_0x3d52ef[_0xee87('0x1a9')];_0x42c892[_0xee87('0xcb')](_0x2b0e90)[_0xee87('0xb2')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x42c892['checkRetriveMax'](_0x3d52ef['reason'],_0x22f1c3,_0x5d4d26)){if(_0x2b0e90[_0xee87('0x103')]+_0x2b0e90['countcongestionretry']+_0x2b0e90[_0xee87('0x104')]+_0x2b0e90[_0xee87('0xf3')]+_0x2b0e90[_0xee87('0xf4')]+_0x2b0e90[_0xee87('0xf5')]+_0x2b0e90[_0xee87('0xef')]+_0x2b0e90[_0xee87('0x105')]>=_0x5d4d26[_0xee87('0x106')]){_0x42c892[_0xee87('0xf6')](_0x2b0e90,_0x14df3b,_0x11a4f0,_0x3d52ef[_0xee87('0x1a9')]);}else{_0x42c892['createStateFinal'](_0x2b0e90,_0x14df3b,_0x11a4f0,_0x3d52ef[_0xee87('0x1a9')]);}}}});};Dialer[_0xee87('0xb7')][_0xee87('0xf6')]=function(_0x479fdc,_0x514ce0,_0x284273,_0x48a445){var _0x3b0cf3=new Final(_0x479fdc);_0x3b0cf3[_0xee87('0xa9')]=0xf;_0x3b0cf3['statedesc']=_0xee87('0x1bc');this['createStateFinal'](_0x3b0cf3,_0x514ce0,_0x284273,_0x48a445);};Dialer[_0xee87('0xb7')][_0xee87('0xf9')]=function(_0xf7f306,_0x5a0b4d,_0x532f01,_0x9c4c86){this['moveContactManagedDialer'](_0xf7f306)[_0xee87('0xb9')](function(){return _0x5a0b4d(msgResponse(_0xee87('0x1a8'),_0xee87('0x1bd'),_0x9c4c86));})[_0xee87('0xb2')](function(){return _0x532f01(msgResponse(_0xee87('0x1be'),_0xee87('0x146'),_0xee87('0x1bf')));});};Dialer['prototype']['predictive']=function(_0x5d0246){var _0x473c2a=_0x5d0246[_0xee87('0x1c0')]/0x64;var _0x52f67c=_0x5d0246[_0xee87('0x62')]/(_0x5d0246[_0xee87('0x62')]+_0x5d0246[_0xee87('0x5e')]);var _0x2668c1=Math[_0xee87('0x1c1')](_0x5d0246[_0xee87('0x70')]*(_0x5d0246[_0xee87('0x1c2')]/0x64));var _0x2d1dcd=Math[_0xee87('0x1c1')](_0x5d0246['predictiveIntervalAvailable']*(_0x5d0246[_0xee87('0x1c3')]/0x64));var _0x59a743=_0x5d0246[_0xee87('0x52')]+_0x5d0246['talking'];var _0x4fecf3=Math['floor'](_0x5d0246[_0xee87('0x1c4')]*_0x5d0246[_0xee87('0x74')]*_0x5d0246[_0xee87('0x1c5')]*_0x5d0246['predictiveIntervalMultiplicativeFactor']);if(_['isUndefined'](_0x5d0246[_0xee87('0x75')])){if(!_['isUndefined'](_0x5d0246[_0xee87('0x2c')])){_0x5d0246['startPredictive']=undefined;loggerPredictive[_0xee87('0x99')]('[startMethodPredictive][StartProgressive]',_0xee87('0x1c6'));}if(!_[_0xee87('0x40')](_0x5d0246[_0xee87('0x95')])){loggerPredictive['error'](_0xee87('0x1c7'),_0xee87('0x1c8'));clearInterval(_0x5d0246[_0xee87('0x95')]);_0x5d0246['handlePredictive']=undefined;}_0x5d0246[_0xee87('0x75')]=moment()[_0xee87('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xee87('0x81')](_0x5d0246[_0xee87('0x42')],'collection\x20data\x20in\x20progressive\x20at',_0x5d0246[_0xee87('0x75')]);this[_0xee87('0x15a')](_0x5d0246,0x1);}else if(ifInterval(_0x5d0246[_0xee87('0x1c9')],_0x5d0246['startProgressive'])){this[_0xee87('0x15a')](_0x5d0246,0x1);loggerPredictiveCalls[_0xee87('0x81')](_0xee87('0x1ca'),_0x5d0246[_0xee87('0x75')],_0x5d0246[_0xee87('0x42')]);_0x5d0246['erlangCalls']=0x0;_0x5d0246[_0xee87('0x6d')]=0x0;}else if(_0x473c2a<_0x52f67c&&_0x5d0246[_0xee87('0x1cb')]==='dropRate'){freeVariablesPredictive(_0x5d0246);loggerPredictive[_0xee87('0x81')](_0xee87('0x1cc'),_0xee87('0x1cd'),_0x52f67c,_0xee87('0x75'),_0x5d0246[_0xee87('0x42')]);}else if(_0x4fecf3<_0x5d0246[_0xee87('0x6d')]&&_0x5d0246['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x5d0246);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0xee87('0x1ce'),_0x4fecf3,_0xee87('0x1cf'),_0x5d0246[_0xee87('0x6d')],_0xee87('0x75'),_0x5d0246[_0xee87('0x42')]);}else if(!ifInterval(_0x5d0246[_0xee87('0x1c9')],_0x5d0246[_0xee87('0x75')])&&_[_0xee87('0x40')](_0x5d0246[_0xee87('0x2c')])&&!_[_0xee87('0x40')](_0x5d0246[_0xee87('0x75')])){_0x5d0246[_0xee87('0x2c')]=moment()[_0xee87('0x7a')](_0xee87('0xfe'));loggerPredictive['info'](_0x5d0246[_0xee87('0x42')],'started\x20in\x20predictive\x20at',_0x5d0246[_0xee87('0x2c')]);this['averageHandleTime'](_0x5d0246[_0xee87('0x1c9')])[_0xee87('0xb9')](this[_0xee87('0x1d0')](_0x5d0246))[_0xee87('0xb9')](mergeDataErlangB(_0x5d0246))[_0xee87('0xb9')](this['startMethodPredictive'](_0x5d0246))['catch'](loggerCatchPredictive(_0xee87('0x1d1'),_0x5d0246));}else if(!ifInterval(_0x5d0246[_0xee87('0x1c9')],_0x5d0246[_0xee87('0x2c')])){_0x5d0246[_0xee87('0x6d')]=0x0;_0x5d0246[_0xee87('0x2c')]=moment()[_0xee87('0x7a')](_0xee87('0xfe'));loggerPredictive['info'](_0x5d0246['name'],_0xee87('0x1d2'),_0x5d0246['startPredictive']);clearInterval(_0x5d0246[_0xee87('0x95')]);_0x5d0246[_0xee87('0x95')]=undefined;this[_0xee87('0x1d3')](_0x5d0246['dialPredictiveInterval'])[_0xee87('0xb9')](this[_0xee87('0x1d0')](_0x5d0246))[_0xee87('0xb9')](mergeDataErlangB(_0x5d0246))['then'](this[_0xee87('0x1d4')](_0x5d0246))[_0xee87('0xb2')](loggerCatchPredictive(_0xee87('0x1d5'),_0x5d0246));}else if(_0x5d0246[_0xee87('0x70')]&&_0x59a743<_0x5d0246[_0xee87('0x70')]-_0x2d1dcd){freeVariablesPredictive(_0x5d0246);loggerPredictive[_0xee87('0x81')](_0x5d0246[_0xee87('0x42')],_0xee87('0x1d6'),_0x59a743,_0xee87('0x1d7'),_0x5d0246[_0xee87('0x70')],'-',_0x2d1dcd,'=',_0x5d0246[_0xee87('0x70')]-_0x2d1dcd,')');}else if(_0x5d0246[_0xee87('0x70')]&&_0x59a743>_0x5d0246[_0xee87('0x70')]+_0x2668c1){freeVariablesPredictive(_0x5d0246);loggerPredictive[_0xee87('0x81')](_0x5d0246['name'],_0xee87('0x1d6'),_0x59a743,')\x20are\x20more\x20than\x20threshold\x20(',_0x5d0246[_0xee87('0x70')],'+',_0x2668c1,'=',_0x5d0246['predictiveIntervalAvailable']+_0x2668c1,')');}};Dialer['prototype'][_0xee87('0x1d0')]=function(_0x537c79){var _0x3663f6=this;return function(_0xbe054f){return new BPromise(function(_0x3c58c7,_0x50bf55){_['merge'](_0x537c79,_0xbe054f[0x0]);if(checkGetDataPredictive(_0xbe054f[0x0])){var _0x132e1c=_0x537c79[_0xee87('0x70')]=_0x537c79[_0xee87('0x56')]+_0x537c79[_0xee87('0x52')];var _0x486600=_0x537c79[_0xee87('0x1c9')]*0x3c;var _0x513441=_0xbe054f[0x0][_0xee87('0x69')]+_0xbe054f[0x0][_0xee87('0x68')];var _0x19bcda=(_0xbe054f[0x0][_0xee87('0x85')]+_0xbe054f[0x0][_0xee87('0x6b')]+_0xbe054f[0x0][_0xee87('0x6a')])/_0xbe054f[0x0][_0xee87('0x71')];_0x537c79[_0xee87('0x1c5')]=_0x19bcda>0x0?_0x19bcda:0x1;switch(_0x537c79['dialPredictiveOptimization']){case'dropRate':var _0x75fecd=_0x537c79['dialPredictiveOptimizationPercentage']/0x64;return _0x3663f6[_0xee87('0x1d8')](_0x132e1c,_0x486600,_0x513441,_0x19bcda,_0x75fecd)[_0xee87('0xb9')](function(_0x1756e5){return _0x3c58c7(_0x1756e5);});case _0xee87('0x1d9'):var _0x2dd90e=_0x537c79[_0xee87('0x1c0')]/0x64;return _0x3663f6[_0xee87('0x1da')](_0x132e1c,_0x486600,_0x513441,_0x19bcda,_0x2dd90e)['then'](function(_0x520cce){return _0x3c58c7(_0x520cce);});default:return _0x50bf55(msgResponse(_0xee87('0x1db'),_0xee87('0x146'),'Unknown\x20Predictive'));}}else{return _0x50bf55(msgResponse(_0xee87('0x1db'),_0xee87('0x146'),'check\x20failure'));}});};};Dialer[_0xee87('0xb7')][_0xee87('0x1dc')]=function(_0x306dfb){var _0x443b1e=this;return function(_0x40ec04){return new BPromise(function(_0x3a9b28,_0x210284){_[_0xee87('0x91')](_0x306dfb,_0x40ec04[0x0]);if(checkGetDataPredictive(_0x40ec04[0x0])){loggerPredictive[_0xee87('0x81')](JSON[_0xee87('0x78')](_0x40ec04[0x0]));if(_0x306dfb[_0xee87('0x1cb')]===_0xee87('0x1dd')){return _0x443b1e['getVoiceQueueRtPauses'](_0x306dfb['id'])[_0xee87('0xb9')](function(_0x16b6f0){var _0x2b485b=_0x306dfb[_0xee87('0x161')]-_0x16b6f0[0x0][_0xee87('0x1de')];var _0x3006b5=_0x306dfb['dialPredictiveInterval']*0x3c;var _0x5715e5=_0x40ec04[0x0][_0xee87('0x69')]+_0x40ec04[0x0][_0xee87('0x68')];var _0x4335d7=(_0x40ec04[0x0][_0xee87('0x85')]+_0x40ec04[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x40ec04[0x0][_0xee87('0x6a')])/_0x40ec04[0x0][_0xee87('0x71')];var _0x388aac=_0x306dfb['dialPredictiveOptimizationPercentage']/0x64;_0x306dfb[_0xee87('0x6f')]=_0x16b6f0[0x0]['outboundQueuePauses']||0x0;_0x306dfb['predictiveIntervalHitRate']=_0x4335d7>0x0?_0x4335d7:0x1;return _0x443b1e[_0xee87('0x1d8')](_0x2b485b,_0x3006b5,_0x5715e5,_0x4335d7,_0x388aac);})[_0xee87('0xb9')](function(_0x3dbd6e){return _0x3a9b28(_0x3dbd6e);})['catch'](function(_0x32cf22){return _0x210284(msgResponse(_0xee87('0x1df'),_0xee87('0x146'),JSON[_0xee87('0x78')](_0x32cf22)));});}if(_0x306dfb[_0xee87('0x1cb')]===_0xee87('0x1d9')){return _0x443b1e[_0xee87('0xc7')](_0x306dfb['id'])[_0xee87('0xb9')](function(_0x3e98c2){var _0x99b666=_0x306dfb[_0xee87('0x161')]-_0x3e98c2[0x0]['outboundQueuePauses'];var _0xf92d08=_0x306dfb['dialPredictiveInterval']*0x3c;var _0x536985=_0x40ec04[0x0][_0xee87('0x69')]+_0x40ec04[0x0][_0xee87('0x68')];var _0x203180=(_0x40ec04[0x0][_0xee87('0x85')]+_0x40ec04[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x40ec04[0x0][_0xee87('0x6a')])/_0x40ec04[0x0]['predictiveIntervalTotalCalls'];var _0xe8972d=_0x306dfb[_0xee87('0x1c0')]/0x64;_0x306dfb['predictiveIntervalPauses']=_0x3e98c2[0x0]['outboundQueuePauses']||0x0;_0x306dfb[_0xee87('0x1c5')]=_0x203180>0x0?_0x203180:0x1;return _0x443b1e[_0xee87('0x1da')](_0x99b666,_0xf92d08,_0x536985,_0x203180,_0xe8972d);})['then'](function(_0x5bc3f7){return _0x3a9b28(_0x5bc3f7);})[_0xee87('0xb2')](function(_0x33cd6a){return _0x210284(msgResponse(_0xee87('0x1df'),_0xee87('0x146'),JSON[_0xee87('0x78')](_0x33cd6a)));});}}else{return _0x210284(msgResponse(_0xee87('0x1db'),_0xee87('0x146'),_0xee87('0x1e0')));}});};};Dialer[_0xee87('0xb7')][_0xee87('0x1d4')]=function(_0x5434eb){var _0x4d79e2=this;return function(){var _0x24e9f3=0x0;var _0x39c22d=Math['floor'](_0x5434eb[_0xee87('0x73')]*0x3e8);if(_0x39c22d>0x0){_0x39c22d=_0x39c22d<0x64?0x64:_0x39c22d;loggerPredictive[_0xee87('0x81')](_0x5434eb[_0xee87('0x42')],'one\x20call\x20every:',_0x39c22d,_0xee87('0x4c'));_0x5434eb[_0xee87('0x95')]=setInterval(function(){_0x4d79e2[_0xee87('0x95')](_0x5434eb);loggerPredictiveCalls[_0xee87('0x81')](_0xee87('0x1e1'),_0x24e9f3+=0x1);},_0x39c22d);}else{loggerPredictive['info'](_0x5434eb[_0xee87('0x42')],_0xee87('0x1e2'));}};};Dialer['prototype'][_0xee87('0x1e3')]=function(_0x3ea2c8,_0x1f1bff){var _0x34002e=this;return function(_0x3e6dc3){if(_[_0xee87('0x80')](_0x3e6dc3)){if(_[_0xee87('0xaf')](_0x1f1bff[_0xee87('0xd2')])||!_0x1f1bff[_0xee87('0x1e4')]){if(_0x3ea2c8[_0xee87('0x5a')]===_0xee87('0xa')){_0x3ea2c8['queueStatusComplete']=_['isUndefined'](_0x3ea2c8[_0xee87('0x130')])?!![]:_0x3ea2c8[_0xee87('0x130')];var _0x212f57=uuid['v4']();_0x34002e[_0xee87('0x28')][_0x212f57]=new Action(_0x3ea2c8,_0x1f1bff,_0x212f57);loggerBooked[_0xee87('0x81')](_0xee87('0x1e5'),_0x212f57,_0xee87('0x1e6'),JSON[_0xee87('0x78')](_0x3ea2c8[_0xee87('0x130')]),_0xee87('0x1e7'),_0x3ea2c8['name']);if(_0x3ea2c8[_0xee87('0x130')]){_0x3ea2c8['queueStatusComplete']=![];_0x34002e[_0xee87('0x2e')][_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xb4')]]=[];ami[_0xee87('0xb0')]({'actionid':_0x212f57,'action':_0xee87('0x1e8'),'queue':_0x3ea2c8[_0xee87('0x42')]})[_0xee87('0xb2')](function(){_0x34002e['updateOriginated'](_0x3ea2c8);_0x34002e[_0xee87('0xbf')]({'active':![],'ContactId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xd1')],'ListId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xff')],'VoiceQueueId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xd3')]||undefined,'CampaignId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch(_0xee87('0x1e9')));delete _0x34002e[_0xee87('0x28')][_0x212f57];});}else{loggerBooked[_0xee87('0x81')](_0xee87('0x1ea'),JSON[_0xee87('0x78')](_0x3ea2c8[_0xee87('0x130')]),'Queue:\x20',_0x3ea2c8['name']);_0x34002e['updateOriginated'](_0x3ea2c8);_0x34002e['rescheduleContact']({'active':![],'ContactId':_0x34002e['actions'][_0x212f57][_0xee87('0xd1')],'ListId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xff')],'VoiceQueueId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xd3')]||undefined,'CampaignId':_0x34002e[_0xee87('0x28')][_0x212f57][_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x34002e[_0xee87('0x28')][_0x212f57];}}else{return _0x34002e['actionOriginate'](_0x3ea2c8,_0x1f1bff);}}else{if(getDiff(_0x1f1bff['scheduledat'])<_0x3ea2c8[_0xee87('0x1eb')]*0x3c){if(_0x1f1bff[_0xee87('0x1ec')]&&!_0x1f1bff['Agent'][_0xee87('0x1ed')]){_0x34002e[_0xee87('0x133')]['run'](_0x1f1bff['id'])[_0xee87('0x20')](function(){_0x34002e[_0xee87('0xb3')](_0x3ea2c8);});}else{_0x34002e[_0xee87('0xc1')]({'active':![]},_0x1f1bff['id'],0x1)[_0xee87('0x20')](function(){_0x34002e[_0xee87('0xb3')](_0x3ea2c8);});}}else{_0x3ea2c8['outboundReCallsDay']+=0x1;_0x34002e[_0xee87('0xb3')](_0x3ea2c8);if(_0x3ea2c8[_0xee87('0x1ee')]){_0x34002e[_0xee87('0xbf')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1f1bff[_0xee87('0xd1')],'ListId':_0x1f1bff[_0xee87('0xff')],'VoiceQueueId':_0x1f1bff[_0xee87('0xd3')]||undefined,'CampaignId':_0x1f1bff[_0xee87('0xd4')]||undefined})[_0xee87('0xb2')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x34002e[_0xee87('0xcb')](createObjHistory(_0x3ea2c8,_0x1f1bff,_0xee87('0x1ef'),0x17,'RecallInQueue'))['catch'](loggerCatch(_0xee87('0x1f0')));}else{_0x34002e[_0xee87('0xdd')](createObjHistory(_0x3ea2c8,_0x1f1bff,_0xee87('0x1f1'),0x16,'RecallFailedTimeout'),'[Originate][HistoryRecallClose][historyCatch]',_0xee87('0x1f2'));}}}}else{_0x3ea2c8[_0xee87('0x1f3')]+=0x1;_0x34002e[_0xee87('0xdd')](createObjHistory(_0x3ea2c8,_0x1f1bff,_0xee87('0x1f4'),0xd,'Blacklist'),_0xee87('0x1f5'),_0xee87('0x1f6'));throw _0xee87('0x1f7');}};};Dialer[_0xee87('0xb7')][_0xee87('0x160')]=function(_0x442bc4){var _0xa90d24=this;var _0x47d1bf=_0x442bc4[_0xee87('0x1f8')]-_0x442bc4[_0xee87('0x72')]-_0x442bc4[_0xee87('0xc4')];emitCampaignSummary(_0x442bc4);if(_0x47d1bf>0x0){if(_0x47d1bf>this[_0xee87('0x26')]){_0x47d1bf=this[_0xee87('0x26')];}_0x442bc4[_0xee87('0xc4')]+=_0x47d1bf;this[_0xee87('0xc5')](_0x442bc4['id'],_0x47d1bf,_0x442bc4[_0xee87('0x1f9')],_0x442bc4)[_0xee87('0xb9')](function(_0x42fcb2){_0x442bc4['temp']-=_0x47d1bf;_0x442bc4['temp']=_0x442bc4[_0xee87('0xc4')]>0x0?_0x442bc4[_0xee87('0xc4')]:0x0;if(!checkContactEmpty(_0x42fcb2)){_0x442bc4[_0xee87('0x44')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xee87('0x81')](_0xee87('0x1fa')+_0x442bc4[_0xee87('0x42')]);}else{_0x442bc4['originated']+=_0x42fcb2[_0xee87('0x9b')];_0x442bc4[_0xee87('0x44')]=_0xee87('0x1fb');for(var _0x386b78=0x0;_0x386b78<_0x42fcb2['length'];_0x386b78+=0x1){_0x442bc4[_0xee87('0x1fc')]+=0x1;if(_['isNil'](_0x42fcb2[_0x386b78])||_[_0xee87('0xaf')](_0x42fcb2[_0x386b78][_0xee87('0x16d')])||_[_0xee87('0xaf')](_0x42fcb2[_0x386b78][_0xee87('0x16d')][_0xee87('0x16c')])){_0xa90d24['emptyContact'](_0xee87('0x1fd'),_0x442bc4,_0x42fcb2[_0x386b78]);}else{_0xa90d24[_0xee87('0xbd')](_[_0xee87('0xd0')](_0x42fcb2[_0x386b78],[_0xee87('0xd4'),_0xee87('0x1fe')]))[_0xee87('0xb9')](_0xa90d24[_0xee87('0x1e3')](_0x442bc4,_0x42fcb2[_0x386b78]))[_0xee87('0xb2')](_0xa90d24[_0xee87('0xce')](_0xee87('0x1ff'),_0x442bc4));}}}})['catch'](loggerGetContactDialer(_0xee87('0x200'),_0x442bc4,_0x47d1bf));}};Dialer[_0xee87('0xb7')][_0xee87('0x15a')]=function(_0x779e71,_0x4fbbef){var _0x13bf16=this;var _0x49b56e=[];var _0x4eb6d0=_0x4fbbef>=0x1?_0x4fbbef:0x1;if(_0x779e71[_0xee87('0x5a')]===_0xee87('0xa')){_0x4eb6d0=0x1;}var _0x3841da=Math['floor'](_0x779e71[_0xee87('0x52')]*_0x4eb6d0)-_0x779e71[_0xee87('0x72')]-_0x779e71[_0xee87('0xc4')];emitVoiceQueueSummary(_0x779e71);if(_0x779e71[_0xee87('0x201')]>0x0){var _0x1c0398=_0x779e71[_0xee87('0x201')]-_0x779e71[_0xee87('0x72')]-_0x779e71[_0xee87('0x56')]-_0x779e71[_0xee87('0xc4')]-_0x779e71[_0xee87('0x53')];if(_0x3841da>_0x1c0398){_0x3841da=_0x1c0398;}}if(_0x3841da>0x0){if(_0x779e71[_0xee87('0x5a')]===_0xee87('0xa')){_0x3841da=0x1;}if(_0x3841da>this['maxNumberOriginate']){_0x3841da=this['maxNumberOriginate'];}_0x779e71[_0xee87('0xc4')]+=_0x3841da;for(var _0xa407c8 in this[_0xee87('0x24')]){if(typeof this[_0xee87('0x24')][_0xa407c8]!==_0xee87('0x9c')){if(this[_0xee87('0x24')][_0xa407c8][_0xee87('0xa9')]===_0xee87('0x202')&&this[_0xee87('0x24')][_0xa407c8][_0xee87('0xda')]===_0xee87('0x203')){_0x49b56e[_0xee87('0x14d')](this[_0xee87('0x24')][_0xa407c8]['id']);}}}this[_0xee87('0xc3')](_0x779e71['id'],_0x49b56e,_0x3841da,_0x779e71[_0xee87('0x1f9')],_0x779e71)[_0xee87('0xb9')](function(_0x44efc4){_0x779e71['temp']-=_0x3841da;_0x779e71[_0xee87('0xc4')]=_0x779e71[_0xee87('0xc4')]>0x0?_0x779e71[_0xee87('0xc4')]:0x0;if(!checkContactEmpty(_0x44efc4)){_0x13bf16['countReScheduled'](_0x779e71)[_0xee87('0xb9')](sendMessageReschedule(_0x779e71))['catch'](loggerCatch(_0xee87('0x204')));}else{_0x779e71[_0xee87('0x72')]+=_0x44efc4[_0xee87('0x9b')];_0x779e71[_0xee87('0x44')]=_0x779e71[_0xee87('0x5a')]===_0xee87('0xa')?_0xee87('0x205'):'RUNNING';for(var _0x2216b9=0x0;_0x2216b9<_0x44efc4[_0xee87('0x9b')];_0x2216b9+=0x1){if(_['isNil'](_0x44efc4[_0x2216b9])||_['isNil'](_0x44efc4[_0x2216b9][_0xee87('0x16d')])||_['isNil'](_0x44efc4[_0x2216b9][_0xee87('0x16d')][_0xee87('0x16c')])){_0x13bf16[_0xee87('0x206')](_0xee87('0x1fd'),_0x779e71,_0x44efc4[_0x2216b9]);}else{_0x13bf16['checkIsBlackList'](_[_0xee87('0xd0')](_0x44efc4[_0x2216b9],[_0xee87('0xd3'),_0xee87('0x1fe')]))[_0xee87('0xb9')](_0x13bf16[_0xee87('0x1e3')](_0x779e71,_0x44efc4[_0x2216b9]))[_0xee87('0xb2')](_0x13bf16[_0xee87('0xce')](_0xee87('0x1fd'),_0x779e71));}}}})['catch'](loggerGetContactDialer('[getContactDialer2]',_0x779e71,_0x3841da));}};Dialer[_0xee87('0xb7')][_0xee87('0x95')]=function(_0x378c92){if(_0x378c92[_0xee87('0x201')]>0x0){var _0x4a62e2=_0x378c92[_0xee87('0x201')]-_0x378c92[_0xee87('0x72')]-_0x378c92[_0xee87('0x56')];if(_0x4a62e2>0x0){this[_0xee87('0x207')](_0x378c92);}else{loggerPredictiveCalls[_0xee87('0x81')](_0xee87('0x208'));}}else{this[_0xee87('0x207')](_0x378c92);}};Dialer[_0xee87('0xb7')][_0xee87('0x207')]=function(_0xcc6667){var _0x2e9899=this;var _0x44cc7f=[];_0xcc6667[_0xee87('0x72')]+=0x1;for(var _0x9ca70 in this['agents']){if(typeof this[_0xee87('0x24')][_0x9ca70]!==_0xee87('0x9c')){if(this[_0xee87('0x24')][_0x9ca70][_0xee87('0xa9')]===_0xee87('0x202')&&this[_0xee87('0x24')][_0x9ca70][_0xee87('0xda')]===_0xee87('0x203')){_0x44cc7f[_0xee87('0x14d')](this[_0xee87('0x24')][_0x9ca70]['id']);}}}this[_0xee87('0xc3')](_0xcc6667['id'],_0x44cc7f,0x1,_0xcc6667[_0xee87('0x1f9')],_0xcc6667)[_0xee87('0xb9')](function(_0x154ab2){if(!checkContactEmpty(_0x154ab2)){checkContactLowerLimitOriginate(_0xcc6667,0x1,0x0);_0x2e9899['countReScheduled'](_0xcc6667)[_0xee87('0xb9')](sendMessageReschedule(_0xcc6667))[_0xee87('0xb2')](loggerCatch('[countReScheduled]\x20'));}else{_0xcc6667['message']='RUNNING';if(_[_0xee87('0xaf')](_0x154ab2[0x0])||_['isNil'](_0x154ab2[0x0][_0xee87('0x16d')])||_['isNil'](_0x154ab2[0x0][_0xee87('0x16d')][_0xee87('0x16c')])){_0x2e9899['emptyContact'](_0xee87('0x1fd'),_0xcc6667,_0x154ab2[0x0]);}else{_0x2e9899[_0xee87('0xbb')](_[_0xee87('0xd0')](_0x154ab2[0x0],[_0xee87('0xd3'),_0xee87('0x1fe')]))[_0xee87('0xb9')](_0x2e9899[_0xee87('0x1e3')](_0xcc6667,_0x154ab2[0x0]))['catch'](_0x2e9899[_0xee87('0xce')]('[actionOriginatePredictive]\x20',_0xcc6667));}}})[_0xee87('0xb2')](loggerGetContactDialer(_0xee87('0x209'),_0xcc6667,0x1));emitVoiceQueueSummary(_0xcc6667);};Dialer[_0xee87('0xb7')][_0xee87('0x1d8')]=function(_0x1084da,_0x1edbf2,_0xaae0c6,_0x1e0a21,_0x4216d0,_0x3199e4){loggerPredictive[_0xee87('0x81')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xee87('0x81')]('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',_0x1084da);loggerPredictive['info'](_0xee87('0x20a'),_0x1edbf2);loggerPredictive[_0xee87('0x81')]('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',_0xaae0c6);loggerPredictive[_0xee87('0x81')](_0xee87('0x20b'),_0x1e0a21);loggerPredictive[_0xee87('0x81')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4216d0);loggerPredictive['info']('---------------------------');return new BPromise(function(_0x543f0b,_0x532236){if(_0x1084da<=0x0||isNaN(_0x1084da)){return _0x532236(msgResponse('[abandonmentRate]',_0xee87('0x4b'),_0xee87('0x20c')+_0x1084da));}if(_0xaae0c6<=0x0||isNaN(_0xaae0c6)){return _0x532236(msgResponse(_0xee87('0x20d'),'Error',_0xee87('0x20e')+_0xaae0c6));}if(_0x1e0a21<=0x0||isNaN(_0x1e0a21)){return _0x532236(msgResponse('[abandonmentRate]','Error',_0xee87('0x20f')+_0x1e0a21));}if(_0x1edbf2<=0x0||isNaN(_0x1edbf2)){return _0x532236(msgResponse('[abandonmentRate]','Error',_0xee87('0x210')+_0x1edbf2));}if(_0x4216d0<=0x0||isNaN(_0x4216d0)){return _0x532236(msgResponse(_0xee87('0x20d'),_0xee87('0x4b'),'Amax\x20=\x20'+_0x4216d0));}_0x3199e4=_0x3199e4||0x0;var _0x915753=0x1/_0xaae0c6;var _0x418e77=0x0;var _0x530985=0x0;var _0x160f82=0x0;var _0x1c9e9d=0x0;for(var _0x1a70c5=0x0;_0x160f82<_0x4216d0;_0x1a70c5+=0x1){_0x530985=_0x1a70c5/_0x1edbf2;_0x418e77=(_0x1e0a21*_0x530985+_0x3199e4)/_0x915753;_0x160f82=erlangb(_0x418e77,_0x1084da);_0x1c9e9d=_0x418e77/_0x1084da*(0x1-erlangb(_0x418e77,_0x1084da));}return _0x543f0b({'erlangCalls':_0x1a70c5,'erlangCallToSecond':_0x1edbf2/_0x1a70c5,'erlangAbandonmentRate':_0x160f82,'erlangBusyFactor':_0x1c9e9d});});};Dialer[_0xee87('0xb7')][_0xee87('0x1da')]=function(_0x1f41dd,_0x59e426,_0x3fb837,_0x30566c,_0x430f57,_0x3c3bfd){loggerPredictive[_0xee87('0x81')](_0xee87('0x211'));loggerPredictive['info'](_0xee87('0x212'),_0x1f41dd);loggerPredictive['info'](_0xee87('0x20a'),_0x59e426);loggerPredictive[_0xee87('0x81')](_0xee87('0x213'),_0x3fb837);loggerPredictive['info'](_0xee87('0x20b'),_0x30566c);loggerPredictive['info'](_0xee87('0x214'),_0x430f57);loggerPredictive[_0xee87('0x81')](_0xee87('0x90'));return new BPromise(function(_0xf68811,_0x152f7d){if(_0x1f41dd<=0x0||isNaN(_0x1f41dd)){return _0x152f7d(msgResponse(_0xee87('0x215'),'Error',_0xee87('0x20c')+_0x1f41dd));}if(_0x3fb837<=0x0||isNaN(_0x3fb837)){return _0x152f7d(msgResponse(_0xee87('0x215'),_0xee87('0x4b'),_0xee87('0x20e')+_0x3fb837));}if(_0x30566c<=0x0||isNaN(_0x30566c)){return _0x152f7d(msgResponse(_0xee87('0x215'),_0xee87('0x4b'),'p\x20=\x20'+_0x30566c));}if(_0x59e426<=0x0||isNaN(_0x59e426)){return _0x152f7d(msgResponse(_0xee87('0x215'),_0xee87('0x4b'),_0xee87('0x210')+_0x59e426));}if(_0x430f57<=0x0||isNaN(_0x430f57)){return _0x152f7d(msgResponse(_0xee87('0x215'),_0xee87('0x4b'),_0xee87('0x216')+_0x430f57));}_0x3c3bfd=_0x3c3bfd||0x0;var _0x2aa3d4=0x1/_0x3fb837;var _0x377636=0x0;var _0xb1cf=0x0;var _0x5479fd=0x0;var _0x3cc32d=0x0;for(var _0xafebe=0x0;_0x3cc32d<_0x430f57;_0xafebe+=0x1){_0xb1cf=_0xafebe/_0x59e426;_0x377636=(_0x30566c*_0xb1cf+_0x3c3bfd)/_0x2aa3d4;_0x5479fd=erlangb(_0x377636,_0x1f41dd);_0x3cc32d=_0x377636/_0x1f41dd*(0x1-erlangb(_0x377636,_0x1f41dd));}return _0xf68811({'erlangCalls':_0xafebe,'erlangCallToSecond':_0x59e426/_0xafebe,'erlangAbandonmentRate':_0x5479fd,'erlangBusyFactor':_0x3cc32d});});};module['exports']=Dialer;
\ No newline at end of file
+var _0xad8a=['replace','random','match','actionOriginate','object','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','updatedAt','%s%s','toUpper','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','substring','dialPrefix','dialCutDigit','from-sip','OriginateError','[originate][error]','responsetime','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','checkRetriveMax','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','floor','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dialPredictiveOptimization','Dropped\x20calls\x20day','dropRate','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','averageHandleTime','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(','predictiveIntervalHitRate','abandonmentRate','busyFactor','[getDataPredictive]','check\x20failure','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','dialLimitQueue','not_inuse','[countReScheduled]\x20','Contact.phone','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','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','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','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','ioredis','../preview/util/util','../../../config/environment/','dialer','../../../config/logger','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','syncVarSet','queuemember','syncQueueMember','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','name','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','active','Interval','md5','format','voice:queue:%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','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','Scheduled\x20Calls:\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','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','error','inspect','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','endtime','starttime','clearZombieChannels','uniqueId','[uniqueid]','isNil','status','channel','catch','No\x20such\x20channel','ivr','updateOriginated','[Dialer][checkChannel]','queue','[Dialer][checkChannel][ivr]','resolve','then','countReScheduled','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','UserId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','Success','isTrunkReachable','SIP/%s','reachable','unmonitored','uniqueid','variable','amdstatus','xcally-motion-dialer','state','statedesc','HangupInAMD','membername','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','value','MACHINE','AMD','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','countmachineretry','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','CampaignId','[rescheduleContact][Machine]','buildObj','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','Machine','countbusyretry','ivrAnswerCallsDay','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','outboundUnknownCallsDay','cause-txt','Unknow','[syncHangupIvr][createHistory]','reason','agent','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','droptime','dialQueueTimeout','Drop','dropreason','agiafterat','dialDropMaxRetry','queueCallerAbandonCreateState','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','push','idHopper','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','queueStatusComplete','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','run','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','TIMEZONE_UNKNOW','isArray','Action','command','iftime\x20%s,%s','interval','content','indexOf','true','timezones','all','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialTimezone','[syncQueueSummary]','dialGlobalInterval','[syncCampaigns]','pow'];(function(_0x46ad6a,_0x2ca848){var _0x1a11bb=function(_0x1a8d83){while(--_0x1a8d83){_0x46ad6a['push'](_0x46ad6a['shift']());}};_0x1a11bb(++_0x2ca848);}(_0xad8a,0xb0));var _0xaad8=function(_0x5bc67d,_0x1521f0){_0x5bc67d=_0x5bc67d-0x0;var _0x56d0af=_0xad8a[_0x5bc67d];return _0x56d0af;};'use strict';var util=require(_0xaad8('0x0'));var _=require(_0xaad8('0x1'));var BPromise=require(_0xaad8('0x2'));var uuid=require(_0xaad8('0x3'));var moment=require(_0xaad8('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require(_0xaad8('0x5'));var ut=require(_0xaad8('0x6'));var config=require(_0xaad8('0x7'));var logger=require('../../../config/logger')(_0xaad8('0x8'));var loggerBooked=require(_0xaad8('0x9'))(_0xaad8('0xa'));var loggerPredictive=require(_0xaad8('0x9'))(_0xaad8('0xb'));var loggerPredictiveCalls=require(_0xaad8('0x9'))(_0xaad8('0xc'));var loggerSyncQueueSummary=require(_0xaad8('0x9'))(_0xaad8('0xd'));var ami=require(_0xaad8('0xe'));config['redis']=_['defaults'](config[_0xaad8('0xf')],{'host':_0xaad8('0x10'),'port':0x18eb});var io=require(_0xaad8('0x11'))(new Redis(config[_0xaad8('0xf')]));var cmHopper=require(_0xaad8('0x12'));var cmHopperHistory=require(_0xaad8('0x13'));var cmHopperBlack=require(_0xaad8('0x14'));var voiceQueueRt=require(_0xaad8('0x15'));var Action=require(_0xaad8('0x16'));var History=require('./history');var Final=require(_0xaad8('0x17'));var AgentComplete=require(_0xaad8('0x18'));var QueueCallerAbandon=require(_0xaad8('0x19'));var Hangup=require(_0xaad8('0x1a'));var ipAgi=process[_0xaad8('0x1b')][_0xaad8('0x1c')]||_0xaad8('0x1d');var strategy={'rrmemory':_0xaad8('0x1e'),'roundrobin':_0xaad8('0x1f')};var Sequence=function(){};Sequence[_0xaad8('0x20')][_0xaad8('0x21')]=function(_0x3777ac){this[_0xaad8('0x22')]=this['tail']?this[_0xaad8('0x22')][_0xaad8('0x23')](_0x3777ac):_0x3777ac();};function Dialer(_0x511344,_0x1749d5){this[_0xaad8('0x24')]=new Sequence();this[_0xaad8('0x25')]=_0x1749d5;this[_0xaad8('0x26')]=_0x511344[_0xaad8('0x26')];this[_0xaad8('0x27')]=_0x511344['campaigns'];this[_0xaad8('0x28')]=_0x511344[_0xaad8('0x28')];this['trunks']=_0x511344[_0xaad8('0x29')];this['maxNumberOriginate']=config[_0xaad8('0x2a')]||0x2;this[_0xaad8('0x2b')]={};this[_0xaad8('0x2c')]={};this[_0xaad8('0x2d')]={};this['uniqueId']={};this[_0xaad8('0x2e')]={};this[_0xaad8('0x2f')]={};this['startProgressive']={};this[_0xaad8('0x30')]={};this[_0xaad8('0x31')]={};this[_0xaad8('0x32')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0xaad8('0x33')](this));ami['on'](_0xaad8('0x34'),this[_0xaad8('0x35')][_0xaad8('0x33')](this));ami['on'](_0xaad8('0x36'),this[_0xaad8('0x37')][_0xaad8('0x33')](this));ami['on'](_0xaad8('0x38'),this[_0xaad8('0x39')][_0xaad8('0x33')](this));ami['on'](_0xaad8('0x3a'),this[_0xaad8('0xd')][_0xaad8('0x33')](this));ami['on'](_0xaad8('0x3b'),this[_0xaad8('0x3c')]['bind'](this));ami['on'](_0xaad8('0x3d'),this[_0xaad8('0x3e')][_0xaad8('0x33')](this));ami['on']('varset',this[_0xaad8('0x3f')][_0xaad8('0x33')](this));ami['on'](_0xaad8('0x40'),this[_0xaad8('0x41')][_0xaad8('0x33')](this));ami['on']('queuestatuscomplete',this[_0xaad8('0x42')][_0xaad8('0x33')](this));this[_0xaad8('0x43')]();this[_0xaad8('0x44')]();}function isNotNull(_0x151c26){return _0x151c26!==null&&!_['isUndefined'](_0x151c26);}function checkIsLoggedIn(_0x78c862,_0x4030ea){return function(){if(_0x4030ea<=0x0){_0x78c862[_0xaad8('0x45')]=_0xaad8('0x46');throw _0x78c862['name']+_0xaad8('0x47');}};}function isActive(_0x138fc0){return _0x138fc0;}function checkIsActive(_0x399248,_0x1eaf8e){return function(){if(!isActive(_0x1eaf8e)){_0x399248[_0xaad8('0x45')]='NOT_ACTIVE';throw _0x399248[_0xaad8('0x48')]+_0xaad8('0x49');}};}function checkInterval(_0x4845a4){return function(){if(!isNotNull(_0x4845a4['Interval'])){_0x4845a4[_0xaad8('0x45')]=_0xaad8('0x4a');throw _0x4845a4[_0xaad8('0x48')]+_0xaad8('0x4b');}if(!isNotNull(_0x4845a4['Interval'][_0xaad8('0x4c')])){_0x4845a4[_0xaad8('0x45')]='INTERVAL_IS_NULL';throw _0x4845a4['name']+_0xaad8('0x4b');}if(!isNotNull(_[_0xaad8('0x4d')](_0x4845a4['Interval'][_0xaad8('0x4c')]))){_0x4845a4['message']='INTERVAL_IS_NULL';throw _0x4845a4[_0xaad8('0x48')]+_0xaad8('0x4b');}};}function msgResponse(_0x54ab34,_0x3f61fb,_0x475423){return{'action':_0x54ab34,'response':_0x3f61fb,'message':_0x475423,'stack':_0x475423};}function myreject(_0x6d37d9){return function(_0x5a0ee3){return _0x6d37d9(msgResponse('[ifTime][Action]',_0xaad8('0x4e'),JSON[_0xaad8('0x4f')](_0x5a0ee3)));};}function getSeconds(_0x3f4a00,_0x201915){var _0x2802bb=moment(_0x3f4a00)[_0xaad8('0x50')](0x0);var _0x564873=moment(_0x201915)[_0xaad8('0x50')](0x0);return _0x2802bb[_0xaad8('0x51')](_0x564873,_0xaad8('0x52'));}function emit(_0x5a35bb,_0x1b5e7e,_0x39374b){io['to'](_0x5a35bb)[_0xaad8('0x53')](_0x1b5e7e,_0x39374b);}function emitVoiceQueueSummary(_0x2864c4){if(_0x2864c4[_0xaad8('0x54')]===_0xaad8('0x55')){var _0x3c699c={'id':_0x2864c4['id'],'name':_0x2864c4['name'],'strategy':_0x2864c4[_0xaad8('0x56')],'answered':_0x2864c4[_0xaad8('0x57')],'available':_0x2864c4[_0xaad8('0x58')],'loggedIn':_0x2864c4[_0xaad8('0x59')],'pTalking':_0x2864c4[_0xaad8('0x5a')],'sumBillable':_0x2864c4[_0xaad8('0x5b')],'sumDuration':_0x2864c4['sumDuration'],'sumHoldTime':_0x2864c4[_0xaad8('0x5c')]||0x0,'talking':_0x2864c4[_0xaad8('0x5d')],'total':_0x2864c4[_0xaad8('0x5e')],'type':_0x2864c4[_0xaad8('0x54')],'unmanaged':_0x2864c4['unmanaged'],'abandoned':_0x2864c4['abandoned'],'waiting':_0x2864c4['waiting'],'loggedInDb':_0x2864c4[_0xaad8('0x5f')],'dialActive':_0x2864c4[_0xaad8('0x60')],'dialMethod':_0x2864c4[_0xaad8('0x61')],'dialOriginateCallerIdName':_0x2864c4['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x2864c4[_0xaad8('0x62')],'dialOriginateTimeout':_0x2864c4[_0xaad8('0x63')],'dialPrefix':_0x2864c4['dialPrefix'],'outboundAnswerAgiCallsDay':_0x2864c4[_0xaad8('0x64')],'outboundAnswerCallsDay':_0x2864c4[_0xaad8('0x65')],'outboundBlacklistCallsDay':_0x2864c4[_0xaad8('0x66')],'outboundBusyCallsDay':_0x2864c4[_0xaad8('0x67')],'outboundCongestionCallsDay':_0x2864c4[_0xaad8('0x68')],'outboundDropCallsDayACS':_0x2864c4[_0xaad8('0x69')],'outboundDropCallsDayCallersExit':_0x2864c4[_0xaad8('0x6a')],'outboundDropCallsDayTimeout':_0x2864c4[_0xaad8('0x6b')],'outboundNoAnswerCallsDay':_0x2864c4[_0xaad8('0x6c')],'outboundNoSuchCallsDay':_0x2864c4[_0xaad8('0x6d')],'outboundOriginateFailureCallsDay':_0x2864c4[_0xaad8('0x6e')],'outboundReCallsDay':_0x2864c4[_0xaad8('0x6f')],'outboundRejectCallsDay':_0x2864c4['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x2864c4['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x2864c4['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x2864c4[_0xaad8('0x70')],'predictiveIntervalAvgTalktime':_0x2864c4['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x2864c4[_0xaad8('0x71')],'predictiveIntervalDroppedCallsTimeout':_0x2864c4['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x2864c4['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x2864c4[_0xaad8('0x72')],'predictiveIntervalHitRate':_0x2864c4['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x2864c4[_0xaad8('0x73')],'predictiveIntervalPauses':_0x2864c4[_0xaad8('0x74')],'predictiveIntervalAvailable':_0x2864c4[_0xaad8('0x75')],'predictiveIntervalTotalCalls':_0x2864c4[_0xaad8('0x76')],'message':_0x2864c4[_0xaad8('0x45')],'originated':_0x2864c4[_0xaad8('0x77')],'erlangCalls':_0x2864c4[_0xaad8('0x78')],'erlangCallToSecond':_0x2864c4[_0xaad8('0x79')],'erlangAbandonmentRate':_0x2864c4[_0xaad8('0x7a')],'erlangBusyFactor':_0x2864c4[_0xaad8('0x7b')],'startPredictive':_0x2864c4[_0xaad8('0x2f')],'startProgressive':_0x2864c4[_0xaad8('0x7c')]};if(_0x2864c4[_0xaad8('0x7d')]){_0x3c699c[_0xaad8('0x7d')]={'id':_0x2864c4[_0xaad8('0x7d')]['id'],'name':_0x2864c4['Trunk']['name'],'active':_0x2864c4[_0xaad8('0x7d')][_0xaad8('0x7e')],'callerid':_0x2864c4[_0xaad8('0x7d')]['callerid']};}if(_0x2864c4['Interval']){_0x3c699c[_0xaad8('0x7f')]={'id':_0x2864c4['Interval']['id'],'name':_0x2864c4[_0xaad8('0x7f')][_0xaad8('0x48')]};}var _0x313824=md5(JSON[_0xaad8('0x4f')](_0x3c699c));if(_0x2864c4[_0xaad8('0x80')]!==_0x313824){_0x2864c4[_0xaad8('0x80')]=_0x313824;emit(util[_0xaad8('0x81')](_0xaad8('0x82'),_0x3c699c[_0xaad8('0x48')]),'voice_queue:save',_0x3c699c);}}}function emitCampaignSummary(_0x1ab9ec){if(_0x1ab9ec[_0xaad8('0x54')]==='ivr'){emit(util[_0xaad8('0x81')]('campaign:ivr:%s',_0x1ab9ec[_0xaad8('0x48')]),_0xaad8('0x83'),_0x1ab9ec);}}function checkGetDataPredictive(_0xa71744){if(isNotNull(_0xa71744)&&!_[_0xaad8('0x4d')](_0xa71744)){loggerPredictive[_0xaad8('0x84')](_0xaad8('0x85'));loggerPredictive[_0xaad8('0x84')](_0xaad8('0x86'),_0xa71744[_0xaad8('0x76')]);loggerPredictive['info'](_0xaad8('0x87'),_0xa71744[_0xaad8('0x88')]);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x89'),_0xa71744[_0xaad8('0x8a')]);loggerPredictive[_0xaad8('0x84')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xa71744[_0xaad8('0x71')]);loggerPredictive[_0xaad8('0x84')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xa71744['predictiveIntervalAvgHoldtime']);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x8b'),_0xa71744[_0xaad8('0x8c')]);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x8d'));if(_0xa71744[_0xaad8('0x76')]>0x0){if(!_['isUndefined'](_0xa71744[_0xaad8('0x8c')])&&_0xa71744[_0xaad8('0x8c')]>0x0){return!![];}loggerPredictive[_0xaad8('0x84')](_0xaad8('0x8e'));if(!_[_0xaad8('0x8f')](_0xa71744['predictiveIntervalAvgHoldtime'])&&_0xa71744['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xaad8('0x84')](_0xaad8('0x90'));}else{loggerPredictive[_0xaad8('0x84')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xaad8('0x84')](_0xaad8('0x91'));}return![];}function mergeDataErlangB(_0x78a183){return function(_0x5a17db){loggerPredictive[_0xaad8('0x84')]('---------\x20ErlangB\x20---------');loggerPredictive[_0xaad8('0x84')](_0xaad8('0x92'),_0x5a17db[_0xaad8('0x78')]);loggerPredictive[_0xaad8('0x84')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5a17db[_0xaad8('0x79')]);loggerPredictive[_0xaad8('0x84')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5a17db['erlangAbandonmentRate']);loggerPredictive[_0xaad8('0x84')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5a17db[_0xaad8('0x7b')]);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x93'),_0x5a17db[_0xaad8('0x7a')]);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x8d'));_[_0xaad8('0x94')](_0x78a183,_0x5a17db);};}function getDiff(_0x2aaa54){var _0x43a374=moment()['milliseconds'](0x0);var _0x33d76c=moment(_0x2aaa54)[_0xaad8('0x50')](0x0);return _0x43a374[_0xaad8('0x51')](_0x33d76c,_0xaad8('0x52'));}function ifInterval(_0x39a207,_0xeb116f){if(_['isUndefined'](_0xeb116f)){return![];}return getDiff(_0xeb116f)<_0x39a207*0x3c;}function freeVariablesPredictive(_0x2abbe7){if(isNotNull(_0x2abbe7)){if(!_[_0xaad8('0x8f')](_0x2abbe7[_0xaad8('0x7c')])){_0x2abbe7['startProgressive']=undefined;loggerPredictive['info'](_0x2abbe7[_0xaad8('0x48')],_0xaad8('0x95'));}if(!_[_0xaad8('0x8f')](_0x2abbe7[_0xaad8('0x2f')])){_0x2abbe7['startPredictive']=undefined;loggerPredictive[_0xaad8('0x84')](_0x2abbe7[_0xaad8('0x48')],_0xaad8('0x96'));}if(!_[_0xaad8('0x8f')](_0x2abbe7[_0xaad8('0x97')])){clearInterval(_0x2abbe7['handlePredictive']);_0x2abbe7['handlePredictive']=undefined;loggerPredictive[_0xaad8('0x84')](_0x2abbe7[_0xaad8('0x48')],_0xaad8('0x98'));}}}function erlangb(_0x23eeeb,_0x3b6f67){if(_0x3b6f67===0x0){return 0x0;}var _0x739b8=0x1;for(var _0x50043c=0x1;_0x50043c<=_0x3b6f67;_0x50043c+=0x1){_0x739b8=0x1+_0x739b8*_0x50043c/_0x23eeeb;}return 0x1/_0x739b8;}function isVoiceQueueOutbound(_0x177290){return _0x177290===_0xaad8('0x55');}function isNotPreview(_0x374eb4){return _0x374eb4!==_0xaad8('0x25');}function isCampaignIvr(_0x30514f){return _0x30514f==='ivr';}function getCallerId(_0x5a4eed,_0x586a15,_0x2d5af8){if(!_[_0xaad8('0x8f')](_0x2d5af8)&&typeof _0x2d5af8==='string'&&!_[_0xaad8('0x4d')](_0x2d5af8)){if(!_[_0xaad8('0x8f')](_0x586a15)&&typeof _0x586a15===_0xaad8('0x99')&&!_[_0xaad8('0x4d')](_0x586a15)){return util[_0xaad8('0x81')]('\x22%s\x22\x20<%s>',_0x586a15,_0x2d5af8);}return util[_0xaad8('0x81')](_0xaad8('0x9a'),_0x2d5af8,_0x2d5af8);}if(!_[_0xaad8('0x8f')](_0x5a4eed)&&typeof _0x5a4eed==='string'&&!_[_0xaad8('0x4d')](_0x5a4eed)){return _0x5a4eed;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x9d433,_0x3825a1){return function(_0x4fdd45){freeVariablesPredictive(_0x3825a1);emitVoiceQueueSummary(_0x3825a1);emitCampaignSummary(_0x3825a1);loggerSyncQueueSummary[_0xaad8('0x9b')](_0x9d433,util[_0xaad8('0x9c')](_0x4fdd45,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x5799fc,_0x6d0d8e){return function(_0x5603eb){loggerPredictive[_0xaad8('0x9b')](_0x6d0d8e[_0xaad8('0x48')],_0x5799fc);loggerPredictive[_0xaad8('0x9b')](_0x5603eb[_0xaad8('0x9d')]);freeVariablesPredictive(_0x6d0d8e);};}function loggerCatch(_0x5a7cb6){return function(_0x31a4bd){logger[_0xaad8('0x9b')](_0x5a7cb6,util[_0xaad8('0x9c')](_0x31a4bd,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2e25ad){return _0x2e25ad&&!_[_0xaad8('0x8f')](_0x2e25ad)&&_0x2e25ad[_0xaad8('0x9e')]>0x0;}function decremetOriginate(_0x2d163d){if(!_['isUndefined'](_0x2d163d)&&_0x2d163d!==null){if(typeof _0x2d163d[_0xaad8('0x77')]!==_0xaad8('0x9f')){if(_0x2d163d[_0xaad8('0x77')]>0x0){_0x2d163d[_0xaad8('0x77')]-=0x1;}else{logger[_0xaad8('0x9b')](_0xaad8('0xa0'));}}}else{logger['error'](_0xaad8('0xa1'));}}function checkContactLowerLimitOriginate(_0x599dad,_0x389085,_0x4dc6a6){if(_0x389085>_0x4dc6a6){for(var _0x33d067=0x0;_0x33d067<_0x389085-_0x4dc6a6;_0x33d067+=0x1){decremetOriginate(_0x599dad);}}}function loggerGetContactDialer(_0x5a3efd,_0x27ef49,_0x22265a){return function(_0x1cd7fe){checkContactLowerLimitOriginate(_0x27ef49,_0x22265a,0x0);logger[_0xaad8('0x9b')](_0x5a3efd,util[_0xaad8('0x9c')](_0x1cd7fe,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4268b9){return function(_0x1d5871){if(isNotNull(_0x1d5871)&&isNotNull(_0x1d5871[0x0])){if(_0x1d5871[0x0]['contactsRescheduled']>0x0){_0x4268b9[_0xaad8('0x45')]=_0xaad8('0xa2');logger['info'](_0xaad8('0xa3')+_0x4268b9[_0xaad8('0x48')],_0x1d5871[0x0][_0xaad8('0xa4')],_0xaad8('0xa5'));}else{_0x4268b9[_0xaad8('0x45')]=_0xaad8('0xa6');logger['info'](_0xaad8('0xa7')+_0x4268b9['name']);}}};}function notSendMessagesQueue(_0x57a076){if(_0x57a076[_0xaad8('0xa8')]){freeVariablesPredictive(_0x57a076);if(_0x57a076[_0xaad8('0x77')]===0x0&&_0x57a076['talking']===0x0&&_0x57a076['waiting']===0x0&&(_0x57a076['pTalking']||0x0)===0x0){_0x57a076['sendMessageOneNotActive']=![];_0x57a076[_0xaad8('0x58')]=0x0;_0x57a076[_0xaad8('0x45')]=_0xaad8('0xa9');loggerSyncQueueSummary[_0xaad8('0x9b')](_0xaad8('0xaa'),_0x57a076[_0xaad8('0x48')],_0xaad8('0xab'));}else{_0x57a076[_0xaad8('0x45')]=_0xaad8('0xac');loggerSyncQueueSummary[_0xaad8('0x9b')](_0xaad8('0xaa'),_0x57a076[_0xaad8('0x48')],_0xaad8('0xad'));}emitVoiceQueueSummary(_0x57a076);}}function notSendMessagesCampaign(_0x9b4a5e){if(_0x9b4a5e[_0xaad8('0xa8')]){if(_0x9b4a5e[_0xaad8('0x77')]===0x0){_0x9b4a5e[_0xaad8('0xa8')]=![];_0x9b4a5e['message']=_0xaad8('0xa9');loggerSyncQueueSummary[_0xaad8('0x9b')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x9b4a5e[_0xaad8('0x48')],_0xaad8('0xab'));}else{_0x9b4a5e[_0xaad8('0x45')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xaad8('0x9b')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x9b4a5e[_0xaad8('0x48')],_0xaad8('0xad'));}emitCampaignSummary(_0x9b4a5e);}}function createObjHistory(_0x50a8f6,_0x3667fb,_0x15fa81,_0xa74a73,_0x539838){_0x50a8f6[_0xaad8('0x45')]=_0x15fa81;var _0x300942=new Action(_0x50a8f6,_0x3667fb);var _0x3206dc=new History(_0x300942);_0x3206dc['state']=_0xa74a73;_0x3206dc['statedesc']=_0x539838;_0x3206dc[_0xaad8('0xae')]=_0x300942[_0xaad8('0xaf')];return _0x3206dc;}Dialer[_0xaad8('0x20')][_0xaad8('0x44')]=function(){var _0x1d8974=this;setInterval(function(){_0x1d8974[_0xaad8('0xb0')](_0x1d8974[_0xaad8('0xb1')],_0xaad8('0xb2'));_0x1d8974[_0xaad8('0xb0')](_0x1d8974['actions'],'[actions]');},0x32c8);};Dialer[_0xaad8('0x20')][_0xaad8('0xb0')]=function(_0x22df4c,_0x362f77){var _0x1d3f83=this;for(var _0x3190b9 in _0x22df4c){if(typeof _0x22df4c[_0x3190b9]!==_0xaad8('0x9f')){this[_0xaad8('0x24')]['enqueue'](function(){if(!_[_0xaad8('0xb3')](_0x22df4c[_0x3190b9])){return ami['Action']({'action':_0xaad8('0xb4'),'channel':_0x22df4c[_0x3190b9][_0xaad8('0xb5')]})[_0xaad8('0xb6')](function(_0x1de7d3){if(_0x1de7d3[_0xaad8('0x45')]===_0xaad8('0xb7')){setTimeout(function(){if(_0x22df4c[_0x3190b9]&&_0x22df4c[_0x3190b9]['type']!==_0xaad8('0xb8')){_0x1d3f83[_0xaad8('0xb9')](_0x1d3f83[_0xaad8('0x26')][_0x22df4c[_0x3190b9]['queue']]);logger[_0xaad8('0x9b')](_0xaad8('0xba'),_0x362f77,_0x3190b9,_0x22df4c[_0x3190b9][_0xaad8('0xbb')]);delete _0x22df4c[_0x3190b9];}if(_0x22df4c[_0x3190b9]&&_0x22df4c[_0x3190b9]['type']===_0xaad8('0xb8')){_0x1d3f83[_0xaad8('0xb9')](_0x1d3f83['campaigns'][_0x22df4c[_0x3190b9][_0xaad8('0xbb')]]);logger[_0xaad8('0x9b')](_0xaad8('0xbc'),_0x362f77,_0x3190b9,_0x22df4c[_0x3190b9][_0xaad8('0xbb')]);delete _0x22df4c[_0x3190b9];}},0x2328);}});}});}}};Dialer['prototype']['countReScheduled']=function(_0x33de28){return BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](cmHopper[_0xaad8('0xbf')](_0x33de28))[_0xaad8('0xb6')](loggerCatch('[countReScheduled]\x20'));};Dialer['prototype']['checkIsBlackList']=function(_0x42fb53){return BPromise['resolve']()['then'](cmHopperBlack[_0xaad8('0xc0')](_0x42fb53))['catch'](loggerCatch(_0xaad8('0xc1')));};Dialer['prototype'][_0xaad8('0xc2')]=function(_0x1f93a0){return BPromise['resolve']()[_0xaad8('0xbe')](cmHopperBlack[_0xaad8('0xc2')](_0x1f93a0))[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xc3')));};Dialer[_0xaad8('0x20')]['averageHandleTime']=function(_0x343996){return BPromise['resolve']()[_0xaad8('0xbe')](cmHopperHistory[_0xaad8('0xc4')](_0x343996))[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xc5')));};Dialer[_0xaad8('0x20')][_0xaad8('0xc6')]=function(_0xc55d74){return BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](cmHopper[_0xaad8('0xc6')](_0xc55d74))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xaad8('0x20')][_0xaad8('0xc7')]=function(_0x291904,_0x345ba9,_0x48687b){return BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](cmHopper[_0xaad8('0xc7')](_0x291904,_0x345ba9,_0x48687b))[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xc8')));};Dialer[_0xaad8('0x20')][_0xaad8('0xc9')]=function(_0x13eb0a,_0x2e74ce,_0x5e5dc5,_0xcbd888,_0x47707f){return BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](cmHopper[_0xaad8('0xc9')](_0x13eb0a,_0x2e74ce,_0x5e5dc5,_0xcbd888))[_0xaad8('0xb6')](function(_0x5c46cd){_0x47707f[_0xaad8('0xca')]-=_0x5e5dc5;_0x47707f[_0xaad8('0xca')]=_0x47707f[_0xaad8('0xca')]>0x0?_0x47707f[_0xaad8('0xca')]:0x0;loggerCatch(_0xaad8('0xcb'))(_0x5c46cd);});};Dialer[_0xaad8('0x20')][_0xaad8('0xcc')]=function(_0x56aade,_0x3d43c8,_0x313a3a,_0x5e1b98){return BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](cmHopper['getContactDialerIvr'](_0x56aade,_0x3d43c8,_0x313a3a))['catch'](function(_0x42be31){_0x5e1b98[_0xaad8('0xca')]-=_0x3d43c8;_0x5e1b98[_0xaad8('0xca')]=_0x5e1b98[_0xaad8('0xca')]>0x0?_0x5e1b98[_0xaad8('0xca')]:0x0;loggerCatch(_0xaad8('0xcd'))(_0x42be31);});};Dialer[_0xaad8('0x20')]['getVoiceQueueRtPauses']=function(_0x50f4d2){return BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](voiceQueueRt[_0xaad8('0xce')](_0x50f4d2))[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xcf')));};Dialer[_0xaad8('0x20')][_0xaad8('0xd0')]=function(_0x3bbffc){return BPromise[_0xaad8('0xbd')]()['then'](cmHopper[_0xaad8('0xd0')](_0x3bbffc))['catch'](loggerCatch(_0xaad8('0xd1')));};Dialer[_0xaad8('0x20')][_0xaad8('0xd2')]=function(_0x382f19){return BPromise['resolve']()[_0xaad8('0xbe')](cmHopperHistory['createHistory'](_0x382f19))[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xd3')));};Dialer[_0xaad8('0x20')]['updateOriginated']=function(_0xa6a09a){if(!_[_0xaad8('0x8f')](_0xa6a09a)&&_0xa6a09a!==null){if(typeof _0xa6a09a[_0xaad8('0x77')]!==_0xaad8('0x9f')){if(_0xa6a09a[_0xaad8('0x77')]>0x0){_0xa6a09a[_0xaad8('0x77')]-=0x1;}else{logger['error'](_0xaad8('0xd4'));}}}else{logger['error'](_0xaad8('0xd5'));}};Dialer[_0xaad8('0x20')][_0xaad8('0xd6')]=function(_0x5b4ae3,_0x19f5d4){var _0x77de6d=this;return function(_0x4dc07a){_0x77de6d[_0xaad8('0xb9')](_0x19f5d4);logger['error'](_0x5b4ae3,util[_0xaad8('0x9c')](_0x4dc07a,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0xaad8('0xd7')]=function(_0x26fee4,_0x14ffec,_0x29c0ab){var _0x5c6444={'state':0x19,'statedesc':_0xaad8('0xd8')};this[_0xaad8('0xb9')](_0x14ffec);this[_0xaad8('0xd9')](_[_0xaad8('0x94')](_0x5c6444,_[_0xaad8('0xda')](_0x29c0ab,[_0xaad8('0xdb'),'ListId',_0xaad8('0xdc'),_0xaad8('0xdd'),'CampaignId'])),_0xaad8('0xde'),_0xaad8('0xdf'));logger[_0xaad8('0x9b')](_0x26fee4);};Dialer['prototype']['isSuccess']=function(_0x47e5dc){return _0x47e5dc===_0xaad8('0xe0');};Dialer[_0xaad8('0x20')][_0xaad8('0xe1')]=function(_0x2d228d){return!_[_0xaad8('0x8f')](_0x2d228d)&&_0x2d228d&&!_[_0xaad8('0x8f')](_0x2d228d[_0xaad8('0x48')])&&!_['isUndefined'](_0x2d228d[_0xaad8('0x7e')])&&_0x2d228d[_0xaad8('0x7e')]&&(this['trunks'][util[_0xaad8('0x81')](_0xaad8('0xe2'),_0x2d228d[_0xaad8('0x48')])]['status']===_0xaad8('0xe3')||this['trunks'][util[_0xaad8('0x81')](_0xaad8('0xe2'),_0x2d228d[_0xaad8('0x48')])][_0xaad8('0xb4')]===_0xaad8('0xe4'));};Dialer[_0xaad8('0x20')][_0xaad8('0xd9')]=function(_0x1acc5c,_0x34e56a,_0x2ac817){this[_0xaad8('0xd2')](_0x1acc5c)[_0xaad8('0xb6')](loggerCatch(_0x34e56a));this['moveContactManagedDialer'](_0x1acc5c)[_0xaad8('0xb6')](loggerCatch(_0x2ac817));};Dialer[_0xaad8('0x20')][_0xaad8('0x3f')]=function(_0x2540fb){var _0x419181=this[_0xaad8('0xb1')][_0x2540fb[_0xaad8('0xe5')]];var _0xa1f565;if(!_[_0xaad8('0xb3')](_0x2540fb)&&!_[_0xaad8('0xb3')](_0x2540fb[_0xaad8('0xe6')])&&!_[_0xaad8('0xb3')](_0x2540fb[_0xaad8('0xe6')][_0xaad8('0xe7')])&&_0x2540fb['exten']===_0xaad8('0xe8')&&_0x419181){if(_0x419181[_0xaad8('0x54')]!=='ivr'&&this[_0xaad8('0x26')][_0x419181[_0xaad8('0xbb')]]['dialAMDActive']&&_0x2540fb['value']==='HANGUP'){delete this[_0xaad8('0xb1')][_0x2540fb[_0xaad8('0xe5')]];this[_0xaad8('0xb9')](this['voiceQueues'][_0x419181[_0xaad8('0xbb')]]);this[_0xaad8('0x26')][_0x419181[_0xaad8('0xbb')]][_0xaad8('0x65')]+=0x1;this['voiceQueues'][_0x419181[_0xaad8('0xbb')]][_0xaad8('0x64')]+=0x1;_0xa1f565=new Hangup(_0x419181,_0x2540fb);_0xa1f565[_0xaad8('0xe9')]=0x12;_0xa1f565[_0xaad8('0xea')]=_0xaad8('0xeb');_0xa1f565[_0xaad8('0xec')]='AMD';ami[_0xaad8('0x53')]('custom:amd',ut['buildObj'](_0xa1f565,_0xaad8('0xed')));this[_0xaad8('0xd9')](_0xa1f565,_0xaad8('0xee'),_0xaad8('0xef'));}if(_0x419181['type']!==_0xaad8('0xb8')&&this[_0xaad8('0x26')][_0x419181['queue']][_0xaad8('0xf0')]&&_0x2540fb[_0xaad8('0xf1')]===_0xaad8('0xf2')){var _0x2dfc91=this;return new BPromise(function(_0x42c498,_0x77495b){delete _0x2dfc91[_0xaad8('0xb1')][_0x2540fb['uniqueid']];_0x2dfc91[_0xaad8('0xb9')](_0x2dfc91[_0xaad8('0x26')][_0x419181[_0xaad8('0xbb')]]);_0x2dfc91[_0xaad8('0x26')][_0x419181['queue']]['outboundAnswerCallsDay']+=0x1;_0x2dfc91[_0xaad8('0x26')][_0x419181[_0xaad8('0xbb')]][_0xaad8('0x64')]+=0x1;var _0x3bf274=_0x2dfc91[_0xaad8('0x26')][_0x419181['queue']];var _0x5700b7=new Hangup(_0x419181,_0x2540fb);_0x5700b7[_0xaad8('0xe9')]=0x13;_0x5700b7[_0xaad8('0xea')]='Machine';_0x5700b7[_0xaad8('0xec')]=_0xaad8('0xf3');_0x5700b7['countmachineretry']+=0x1;_0x5700b7[_0xaad8('0xf4')]+=0x1;_0x5700b7[_0xaad8('0xed')]=!![];ami[_0xaad8('0x53')](_0xaad8('0xf5'),ut['buildObj'](_0x5700b7,_0xaad8('0xed')));_0x2dfc91[_0xaad8('0xd2')](_0x5700b7)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xf6')));if(_0x5700b7['countbusyretry']+_0x5700b7[_0xaad8('0xf7')]+_0x5700b7[_0xaad8('0xf8')]+_0x5700b7[_0xaad8('0xf9')]+_0x5700b7[_0xaad8('0xfa')]+_0x5700b7[_0xaad8('0xfb')]+_0x5700b7['countmachineretry']+_0x5700b7[_0xaad8('0xfc')]>=_0x3bf274[_0xaad8('0xfd')]){_0x2dfc91[_0xaad8('0xfe')](_0x5700b7,_0x42c498,_0x77495b,_0xaad8('0xff'));}else{if(_0x5700b7['countmachineretry']>=_0x3bf274[_0xaad8('0x100')]){_0x2dfc91[_0xaad8('0x101')](_0x5700b7,_0x42c498,_0x77495b,_0xaad8('0x102'));}else{_0x2dfc91[_0xaad8('0xc6')]({'active':![],'countmachineretry':_0x5700b7[_0xaad8('0x103')],'scheduledat':moment()[_0xaad8('0x104')](_0x3bf274[_0xaad8('0x105')],_0xaad8('0x106'))['format'](_0xaad8('0x107')),'ContactId':_0x5700b7['ContactId'],'ListId':_0x5700b7[_0xaad8('0x108')],'VoiceQueueId':_0x5700b7[_0xaad8('0xdd')]||undefined,'CampaignId':_0x5700b7[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x10a')));_0x42c498({'reschedule':0x1});}}});}if(_0x419181['type']==='ivr'&&this[_0xaad8('0x27')][_0x419181[_0xaad8('0xbb')]][_0xaad8('0xf0')]&&_0x2540fb[_0xaad8('0xf1')]==='HANGUP'){delete this[_0xaad8('0xb1')][_0x2540fb[_0xaad8('0xe5')]];this[_0xaad8('0xb9')](this[_0xaad8('0x27')][_0x419181['queue']]);_0xa1f565=new Hangup(_0x419181,_0x2540fb);_0xa1f565[_0xaad8('0xe9')]=0x12;_0xa1f565[_0xaad8('0xea')]='HangupInAMD';_0xa1f565[_0xaad8('0xec')]=_0xaad8('0xf3');ami[_0xaad8('0x53')](_0xaad8('0xf5'),ut[_0xaad8('0x10b')](_0xa1f565,_0xaad8('0xed')));this[_0xaad8('0xd9')](_0xa1f565,_0xaad8('0x10c'),_0xaad8('0x10d'));}if(_0x419181['type']==='ivr'&&this[_0xaad8('0x27')][_0x419181[_0xaad8('0xbb')]][_0xaad8('0xf0')]&&_0x2540fb[_0xaad8('0xf1')]==='MACHINE'){var _0x2dfc91=this;return new BPromise(function(_0x4a30f6,_0x46c130){delete _0x2dfc91[_0xaad8('0xb1')][_0x2540fb[_0xaad8('0xe5')]];_0x2dfc91['updateOriginated'](_0x2dfc91[_0xaad8('0x27')][_0x419181[_0xaad8('0xbb')]]);_0x2dfc91[_0xaad8('0x27')][_0x419181[_0xaad8('0xbb')]]['outboundAnswerCallsDay']+=0x1;_0x2dfc91[_0xaad8('0x27')][_0x419181[_0xaad8('0xbb')]][_0xaad8('0x64')]+=0x1;var _0x3ea3c4=_0x2dfc91[_0xaad8('0x27')][_0x419181[_0xaad8('0xbb')]];var _0x1d1668=new Hangup(_0x419181,_0x2540fb);_0x1d1668[_0xaad8('0xe9')]=0x13;_0x1d1668[_0xaad8('0xea')]=_0xaad8('0x10e');_0x1d1668[_0xaad8('0xec')]='AMD';_0x1d1668[_0xaad8('0x103')]+=0x1;_0x1d1668[_0xaad8('0xf4')]+=0x1;_0x1d1668[_0xaad8('0xed')]=!![];ami[_0xaad8('0x53')](_0xaad8('0xf5'),ut[_0xaad8('0x10b')](_0x1d1668,'amd'));_0x2dfc91[_0xaad8('0xd2')](_0x1d1668)['catch'](loggerCatch(_0xaad8('0xf6')));if(_0x1d1668[_0xaad8('0x10f')]+_0x1d1668['countcongestionretry']+_0x1d1668['countnoanswerretry']+_0x1d1668[_0xaad8('0xf9')]+_0x1d1668[_0xaad8('0xfa')]+_0x1d1668[_0xaad8('0xfb')]+_0x1d1668[_0xaad8('0x103')]+_0x1d1668[_0xaad8('0xfc')]>=_0x3ea3c4[_0xaad8('0xfd')]){_0x2dfc91[_0xaad8('0xfe')](_0x1d1668,_0x4a30f6,_0x46c130,_0xaad8('0xff'));}else{if(_0x1d1668[_0xaad8('0x103')]>=_0x3ea3c4[_0xaad8('0x100')]){_0x2dfc91[_0xaad8('0x101')](_0x1d1668,_0x4a30f6,_0x46c130,_0xaad8('0x102'));}else{_0x2dfc91['rescheduleContact']({'active':![],'countmachineretry':_0x1d1668[_0xaad8('0x103')],'scheduledat':moment()[_0xaad8('0x104')](_0x3ea3c4[_0xaad8('0x105')],'minutes')[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x1d1668[_0xaad8('0xdb')],'ListId':_0x1d1668[_0xaad8('0x108')],'VoiceQueueId':_0x1d1668[_0xaad8('0xdd')]||undefined,'CampaignId':_0x1d1668[_0xaad8('0x109')]||undefined})['catch'](loggerCatch(_0xaad8('0x10a')));_0x4a30f6({'reschedule':0x1});}}});}}};Dialer[_0xaad8('0x20')][_0xaad8('0x3c')]=function(_0x159583){var _0x2f3fbd=this[_0xaad8('0xb1')][_0x159583['uniqueid']];var _0x1bfdfd=this;var _0x1363a0;if(_0x2f3fbd&&_0x2f3fbd[_0xaad8('0x54')]==='ivr'){delete this[_0xaad8('0xb1')][_0x159583['uniqueid']];this['updateOriginated'](this[_0xaad8('0x27')][_0x2f3fbd[_0xaad8('0xbb')]]);this[_0xaad8('0x27')][_0x2f3fbd['queue']][_0xaad8('0x110')]+=0x1;_0x1363a0=new Hangup(_0x2f3fbd,_0x159583);this[_0xaad8('0xd2')](_0x1363a0)[_0xaad8('0xb6')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x1363a0)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x111')));}if(_0x2f3fbd&&_0x2f3fbd[_0xaad8('0x54')]!==_0xaad8('0xb8')&&isNotNull(this[_0xaad8('0x26')][_0x2f3fbd['queue']]['dialQueueProject'])){delete this['uniqueId'][_0x159583[_0xaad8('0xe5')]];this[_0xaad8('0xb9')](this['voiceQueues'][_0x2f3fbd[_0xaad8('0xbb')]]);this[_0xaad8('0x26')][_0x2f3fbd['queue']]['outboundAnswerCallsDay']+=0x1;this[_0xaad8('0x26')][_0x2f3fbd[_0xaad8('0xbb')]][_0xaad8('0x64')]+=0x1;_0x1363a0=new Hangup(_0x2f3fbd,_0x159583);_0x1363a0[_0xaad8('0xe9')]=0x10;_0x1363a0[_0xaad8('0xea')]=_0xaad8('0x112');_0x1363a0[_0xaad8('0xec')]=_0xaad8('0x113');this[_0xaad8('0xd2')](_0x1363a0)[_0xaad8('0xb6')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xaad8('0xd0')](_0x1363a0)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x111')));}if(_0x2f3fbd&&_0x2f3fbd[_0xaad8('0x54')]!==_0xaad8('0xb8')&&!isNotNull(this['voiceQueues'][_0x2f3fbd[_0xaad8('0xbb')]][_0xaad8('0x114')])){delete this['uniqueId'][_0x159583[_0xaad8('0xe5')]];this[_0xaad8('0xb9')](this[_0xaad8('0x26')][_0x2f3fbd[_0xaad8('0xbb')]]);this[_0xaad8('0x26')][_0x2f3fbd[_0xaad8('0xbb')]][_0xaad8('0x115')]+=0x1;_0x1363a0=new Hangup(_0x2f3fbd,_0x159583);_0x1363a0[_0xaad8('0xe9')]=0xc;_0x1363a0['statedesc']=_0x159583[_0xaad8('0x116')];_0x1363a0[_0xaad8('0xec')]=_0xaad8('0x117');this[_0xaad8('0xd2')](_0x1363a0)['catch'](loggerCatch(_0xaad8('0x118')));this[_0xaad8('0xd0')](_0x1363a0)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x111')));}};Dialer[_0xaad8('0x20')][_0xaad8('0x39')]=function(_0xa67d01){var _0x4d9617=this[_0xaad8('0xb1')][_0xa67d01[_0xaad8('0xe5')]];var _0x4abb2b=this;if(this[_0xaad8('0x26')][_0xa67d01[_0xaad8('0xbb')]]){if(_0x4d9617&&_0x4d9617[_0xaad8('0x54')]!==_0xaad8('0xb8')){delete this[_0xaad8('0xb1')][_0xa67d01[_0xaad8('0xe5')]];this[_0xaad8('0x26')][_0xa67d01[_0xaad8('0xbb')]][_0xaad8('0x65')]+=0x1;var _0x79124c=new AgentComplete(_0x4d9617,_0xa67d01);if(_0xa67d01[_0xaad8('0x119')]===_0xaad8('0x11a')){_0x79124c['agiafterat']=this[_0xaad8('0x26')][_0xa67d01[_0xaad8('0xbb')]]['dialQueueProject2']&&this[_0xaad8('0x26')][_0xa67d01[_0xaad8('0xbb')]][_0xaad8('0x11b')]?moment()[_0xaad8('0x81')](_0xaad8('0x107')):undefined;}this['createHistory'](_0x79124c)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x11c')));this[_0xaad8('0xd0')](_0x79124c)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x11d')));}}};Dialer[_0xaad8('0x20')][_0xaad8('0x11e')]=function(_0x43093f){if(this[_0xaad8('0x26')][_0x43093f['queue']]){if(this[_0xaad8('0xb1')][_0x43093f[_0xaad8('0xe5')]]&&this['uniqueId'][_0x43093f[_0xaad8('0xe5')]][_0xaad8('0x54')]!=='ivr'){this[_0xaad8('0xb9')](this[_0xaad8('0x26')][_0x43093f[_0xaad8('0xbb')]]);this[_0xaad8('0xb1')][_0x43093f[_0xaad8('0xe5')]][_0xaad8('0x11f')]=moment()[_0xaad8('0x81')](_0xaad8('0x107'));}}};Dialer[_0xaad8('0x20')]['queueCallerAbandonCreateState']=function(_0x61618a){this[_0xaad8('0xd2')](_0x61618a)['catch'](loggerCatch(_0xaad8('0x11c')));this[_0xaad8('0xd0')](_0x61618a)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0xaad8('0x20')][_0xaad8('0x35')]=function(_0x2e949b){var _0x14c6a0=this[_0xaad8('0xb1')][_0x2e949b[_0xaad8('0xe5')]];var _0x4d6573=this;if(this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]]){if(_0x14c6a0&&_0x14c6a0[_0xaad8('0x54')]!=='ivr'){delete this[_0xaad8('0xb1')][_0x2e949b[_0xaad8('0xe5')]];this['updateOriginated'](this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]]);_0x14c6a0[_0xaad8('0x120')]=moment()[_0xaad8('0x81')](_0xaad8('0x107'));var _0x3a78cc=new QueueCallerAbandon(_0x14c6a0,_0x2e949b);if(getSeconds(_0x14c6a0['droptime'],_0x14c6a0['responsetime'])>=_0x14c6a0[_0xaad8('0x121')]){this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]][_0xaad8('0x6b')]+=0x1;this['voiceQueues'][_0x2e949b[_0xaad8('0xbb')]][_0xaad8('0x72')]+=0x1;_0x3a78cc['state']=0xa;_0x3a78cc[_0xaad8('0xea')]=_0xaad8('0x122');_0x3a78cc[_0xaad8('0x123')]='TIMEOUT';_0x3a78cc[_0xaad8('0x124')]=this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]]['dialQueueProject2']?moment()[_0xaad8('0x81')](_0xaad8('0x107')):undefined;_0x3a78cc[_0xaad8('0xfa')]+=0x1;_0x3a78cc[_0xaad8('0xf4')]+=0x1;if(_0x3a78cc['countdropretry']>=this[_0xaad8('0x26')][_0x2e949b['queue']][_0xaad8('0x125')]){this[_0xaad8('0x126')](_0x3a78cc);}else{this[_0xaad8('0xc6')]({'active':![],'countdropretry':_0x3a78cc['countdropretry'],'scheduledat':moment()[_0xaad8('0x104')](this['voiceQueues'][_0x2e949b['queue']][_0xaad8('0x127')],'minutes')['format'](_0xaad8('0x107')),'ContactId':_0x14c6a0[_0xaad8('0xdb')],'ListId':_0x14c6a0[_0xaad8('0x108')],'VoiceQueueId':_0x14c6a0[_0xaad8('0xdd')]||undefined,'CampaignId':_0x14c6a0[_0xaad8('0x109')]||undefined})['catch'](loggerCatch(_0xaad8('0x128')));var _0x1bf6fc=new History(_0x3a78cc);_0x1bf6fc['state']=0xa;_0x1bf6fc[_0xaad8('0xea')]=_0xaad8('0x122');_0x1bf6fc[_0xaad8('0xaf')]=moment()[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss');_0x1bf6fc[_0xaad8('0xae')]=_0x1bf6fc[_0xaad8('0xaf')];_0x1bf6fc[_0xaad8('0x129')]=_0x3a78cc[_0xaad8('0x129')];_0x1bf6fc[_0xaad8('0x12a')]=_0x3a78cc[_0xaad8('0x12a')];this[_0xaad8('0xd2')](_0x1bf6fc)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x12b')));}}else{this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]][_0xaad8('0x71')]+=0x1;this[_0xaad8('0x26')][_0x2e949b['queue']][_0xaad8('0x6a')]+=0x1;_0x3a78cc[_0xaad8('0xe9')]=0xb;_0x3a78cc[_0xaad8('0xea')]=_0xaad8('0x12c');_0x3a78cc['dropreason']=_0xaad8('0x12d');_0x3a78cc[_0xaad8('0xfb')]+=0x1;_0x3a78cc[_0xaad8('0xf4')]+=0x1;if(_0x3a78cc[_0xaad8('0xfb')]>=this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]][_0xaad8('0x12e')]){this[_0xaad8('0x126')](_0x3a78cc);}else{this[_0xaad8('0xc6')]({'active':![],'countabandonedretry':_0x3a78cc[_0xaad8('0xfb')],'scheduledat':moment()['add'](this[_0xaad8('0x26')][_0x2e949b[_0xaad8('0xbb')]][_0xaad8('0x12f')],'minutes')[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x14c6a0[_0xaad8('0xdb')],'ListId':_0x14c6a0[_0xaad8('0x108')],'VoiceQueueId':_0x14c6a0[_0xaad8('0xdd')]||undefined,'CampaignId':_0x14c6a0[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x130')));var _0x1bf6fc=new History(_0x3a78cc);_0x1bf6fc[_0xaad8('0xe9')]=0xb;_0x1bf6fc[_0xaad8('0xea')]=_0xaad8('0x12c');_0x1bf6fc[_0xaad8('0xaf')]=moment()[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss');_0x1bf6fc[_0xaad8('0xae')]=_0x1bf6fc[_0xaad8('0xaf')];_0x1bf6fc[_0xaad8('0x129')]=_0x3a78cc[_0xaad8('0x129')];_0x1bf6fc[_0xaad8('0x12a')]=_0x3a78cc['calleridnum'];this[_0xaad8('0xd2')](_0x1bf6fc)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x131')));}}}}};Dialer[_0xaad8('0x20')][_0xaad8('0x3e')]=function(_0x3c5e2b){if(this[_0xaad8('0x2c')][_0x3c5e2b[_0xaad8('0xe5')]]){this['actions'][_0x3c5e2b[_0xaad8('0xe5')]][_0xaad8('0xb5')]=_0x3c5e2b[_0xaad8('0xb5')];}if(this['uniqueId'][_0x3c5e2b[_0xaad8('0xe5')]]){this['uniqueId'][_0x3c5e2b[_0xaad8('0xe5')]][_0xaad8('0xb5')]=_0x3c5e2b[_0xaad8('0xb5')];}};Dialer[_0xaad8('0x20')]['syncQueueMember']=function(_0x469bd7){if(strategy[this['voiceQueues'][this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]]['queue']][_0xaad8('0x56')]]===_0xaad8('0x1f')){if(this['actions'][_0x469bd7[_0xaad8('0x132')]]&&_[_0xaad8('0xb3')](this['actions'][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0x133')])&&_0x469bd7[_0xaad8('0xb4')]==='1'&&_0x469bd7[_0xaad8('0x134')]==='0'){if(this[_0xaad8('0x28')][_0x469bd7[_0xaad8('0x135')]]){if(!this[_0xaad8('0x28')][_0x469bd7[_0xaad8('0x135')]][_0xaad8('0x133')]){this[_0xaad8('0x28')][_0x469bd7['stateinterface']][_0xaad8('0x133')]=!![];this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0x133')]=!![];this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0x135')]=_0x469bd7[_0xaad8('0x135')];}}}}else if((strategy[this[_0xaad8('0x26')][this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0xbb')]]['strategy']]||_0xaad8('0x1e'))===_0xaad8('0x1e')){if(this['actions'][_0x469bd7['actionid']]){if(this[_0xaad8('0x28')][_0x469bd7['stateinterface']]){this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0x135')]=_0x469bd7['stateinterface'];if(_[_0xaad8('0xb3')](this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0xbb')]])){this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]]['queue']]=[];}this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]][_0xaad8('0xbb')]][_0xaad8('0x136')](_['merge'](_[_0xaad8('0xda')](this[_0xaad8('0x2c')][_0x469bd7[_0xaad8('0x132')]],[_0xaad8('0x137'),_0xaad8('0x135')]),{'status':_0x469bd7['status'],'paused':_0x469bd7['paused']}));}}}};function unlockQueueStatus(_0x2c3903,_0x1f4805){setTimeout(function(){if(_[_0xaad8('0x8f')](_0x2c3903['queueStatusComplete'])){loggerBooked[_0xaad8('0x9b')](_0xaad8('0x138'),_0x1f4805);}_0x2c3903['queueStatusComplete']=!![];loggerBooked[_0xaad8('0x84')](_0xaad8('0x139'),_0x1f4805,JSON[_0xaad8('0x4f')](_['pick'](_0x2c3903,[_0xaad8('0x48'),_0xaad8('0x13a')])));},0x1f3);}Dialer[_0xaad8('0x20')]['syncQueueStatusComplete']=function(_0x2b69af){var _0xef7f00=this;var _0xfa83b4=_0xef7f00[_0xaad8('0x26')][_0xef7f00[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xbb')]];if(strategy[this['voiceQueues'][this[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xbb')]][_0xaad8('0x56')]]===_0xaad8('0x1f')){if(this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]&&this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x135')]){this[_0xaad8('0x25')]['run'](this['actions'][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x137')],this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x135')])['catch'](function(_0x1f2b09){logger[_0xaad8('0x9b')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xaad8('0x9c')](_0x1f2b09,{'showHidden':![],'depth':null}));})['finally'](function(){_0xef7f00[_0xaad8('0xb9')](_0xef7f00[_0xaad8('0x26')][_0xef7f00[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xbb')]]);_0xef7f00[_0xaad8('0x28')][_0xef7f00[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x135')]]['locked']=![];delete _0xef7f00[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]];unlockQueueStatus(_0xfa83b4);});}else{this[_0xaad8('0xb9')](this[_0xaad8('0x26')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]);this[_0xaad8('0xc6')]({'active':![],'ContactId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xdb')],'ListId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['ListId'],'VoiceQueueId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xdd')]||undefined,'CampaignId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x13b')));delete this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]];unlockQueueStatus(_0xfa83b4);}}else if((strategy[this[_0xaad8('0x26')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]][_0xaad8('0x56')]]||'rrmemory')===_0xaad8('0x1e')){var _0x216c89;if(this['actions'][_0x2b69af[_0xaad8('0x132')]]&&!_[_0xaad8('0x4d')](this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xbb')]])){if(this[_0xaad8('0x32')][_0xef7f00[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]){this[_0xaad8('0x32')][_0xef7f00[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xbb')]]=this[_0xaad8('0x32')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]?this[_0xaad8('0x32')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]:this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x2b69af['actionid']]['queue']]?this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['queue']][_0xaad8('0x13c')]||0x0:0x0;}this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]][_0xaad8('0x13c')]=this[_0xaad8('0x32')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['queue']];for(var _0x4e439e=0x0;_0x4e439e<this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['queue']][_0xaad8('0x9e')];_0x4e439e+=0x1){_0x216c89=rr(this[_0xaad8('0x31')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]);this[_0xaad8('0x32')][_0xef7f00[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xbb')]]=this['queueBooked'][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]['_rr'];if(_0x216c89[_0xaad8('0xb4')]==='1'&&_0x216c89[_0xaad8('0x134')]==='0'){break;}}if(!_[_0xaad8('0xb3')](_0x216c89)){this[_0xaad8('0x28')][_0x216c89[_0xaad8('0x135')]]['unlockRR']=_[_0xaad8('0x8f')](this['agents'][_0x216c89['stateinterface']][_0xaad8('0x13d')])?!![]:this[_0xaad8('0x28')][_0x216c89[_0xaad8('0x135')]]['unlockRR'];}loggerBooked[_0xaad8('0x84')](_0xaad8('0x13e'),_0x2b69af[_0xaad8('0x132')],_0xaad8('0x13f'),JSON[_0xaad8('0x4f')](_[_0xaad8('0xda')](this[_0xaad8('0x28')][_0x216c89[_0xaad8('0x135')]],[_0xaad8('0x48'),_0xaad8('0x13d')])),_0xaad8('0x140'),JSON[_0xaad8('0x4f')](_0x216c89[_0xaad8('0x137')]));if(!_[_0xaad8('0xb3')](_0x216c89)&&_0x216c89[_0xaad8('0xb4')]==='1'&&_0x216c89[_0xaad8('0x134')]==='0'&&this[_0xaad8('0x28')][_0x216c89['stateinterface']][_0xaad8('0x13d')]){this[_0xaad8('0x28')][_0x216c89[_0xaad8('0x135')]][_0xaad8('0x13d')]=![];this[_0xaad8('0x31')][_0xef7f00['actions'][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]=[];this[_0xaad8('0x25')][_0xaad8('0x141')](_0x216c89[_0xaad8('0x137')],_0x216c89[_0xaad8('0x135')])[_0xaad8('0xb6')](function(_0x2488ea){logger[_0xaad8('0x9b')](_0xaad8('0x142'),util['inspect'](_0x2488ea,{'showHidden':![],'depth':null}));})[_0xaad8('0x23')](function(){_0xef7f00[_0xaad8('0xb9')](_0xef7f00[_0xaad8('0x26')][_0xef7f00['actions'][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]);setTimeout(function(){_0xef7f00[_0xaad8('0x28')][_0x216c89[_0xaad8('0x135')]][_0xaad8('0x13d')]=!![];loggerBooked[_0xaad8('0x84')](_0xaad8('0x143'),_0x2b69af[_0xaad8('0x132')],_0xaad8('0x13f'),JSON[_0xaad8('0x4f')](_['pick'](_0xef7f00[_0xaad8('0x28')][_0x216c89[_0xaad8('0x135')]],[_0xaad8('0x48'),_0xaad8('0x13d')])),_0xaad8('0x140'),JSON[_0xaad8('0x4f')](_0x216c89['idHopper']));},0xc7);delete _0xef7f00['actions'][_0x2b69af[_0xaad8('0x132')]];unlockQueueStatus(_0xfa83b4,_0x2b69af[_0xaad8('0x132')]);});}else{loggerBooked['info'](_0xaad8('0x144'));this[_0xaad8('0xb9')](this[_0xaad8('0x26')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]);this[_0xaad8('0xc6')]({'active':![],'ContactId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xdb')],'ListId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['ListId'],'VoiceQueueId':this[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xdd')]||undefined,'CampaignId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x13b')));delete this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]];unlockQueueStatus(_0xfa83b4);}}else{loggerBooked[_0xaad8('0x84')](_0xaad8('0x145'));this[_0xaad8('0xb9')](this[_0xaad8('0x26')][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['queue']]);this[_0xaad8('0xc6')]({'active':![],'ContactId':this['actions'][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xdb')],'ListId':this['actions'][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x108')],'VoiceQueueId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xdd')]||undefined,'CampaignId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['CampaignId']||undefined})[_0xaad8('0xb6')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this['actions'][_0x2b69af[_0xaad8('0x132')]];unlockQueueStatus(_0xfa83b4);}}else{loggerBooked[_0xaad8('0x84')](_0xaad8('0x146'));this[_0xaad8('0xb9')](this['voiceQueues'][this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0xbb')]]);this[_0xaad8('0xc6')]({'active':![],'ContactId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['ContactId'],'ListId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]][_0xaad8('0x108')],'VoiceQueueId':this[_0xaad8('0x2c')][_0x2b69af['actionid']][_0xaad8('0xdd')]||undefined,'CampaignId':this[_0xaad8('0x2c')][_0x2b69af[_0xaad8('0x132')]]['CampaignId']||undefined})['catch'](loggerCatch(_0xaad8('0x147')));delete this['actions'][_0x2b69af[_0xaad8('0x132')]];unlockQueueStatus(_0xfa83b4);}};Dialer[_0xaad8('0x20')]['loopCampaigns']=function(){var _0x2b72cd=this;setInterval(function(){_0x2b72cd[_0xaad8('0x148')]();},0x3e8);};Dialer['prototype'][_0xaad8('0x149')]=function(_0x555c82){var _0x5a5373=this;return function(){if(!_0x5a5373['isTrunkReachable'](_0x555c82[_0xaad8('0x7d')])){if(!_0x5a5373['isTrunkReachable'](_0x555c82['TrunkBackup'])){_0x555c82['message']='TRUNK_IS_NOT_REACHABLE';throw _0x555c82[_0xaad8('0x48')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer['prototype'][_0xaad8('0x14a')]=function(_0x1e742e,_0x3ecfc7,_0x4e5fc1,_0x3b14b0){var _0x563244=this;return function(){var _0x291381=!![];return _0x563244[_0xaad8('0x14b')](_0x1e742e,_0x3ecfc7,_0x4e5fc1,_0x3b14b0,_0x291381);};};Dialer[_0xaad8('0x20')][_0xaad8('0x14c')]=function(_0x44afe5,_0x30c9f9,_0x4e0a50,_0x432db4){var _0x1f66fc=this;return function(){var _0x148a74=![];return _0x1f66fc['ifTime'](_0x44afe5[_0xaad8('0x4c')],_0x30c9f9,_0x4e0a50,_0x432db4,_0x148a74);};};Dialer[_0xaad8('0x20')]['ifTime']=function(_0x4e23bc,_0x55f859,_0x5030a0,_0x4eefc8,_0x4f35af){var _0x5efc79=[];return new BPromise(function(_0x4390bd,_0x278542){if(!isNotNull(_0x4e23bc)){_0x4eefc8['message']=_0xaad8('0x4a');return _0x278542(msgResponse(_0xaad8('0x14b'),_0xaad8('0x14d'),_0x5030a0+_0xaad8('0x14e')));}if(_['isEmpty'](_0x4e23bc)){_0x4eefc8[_0xaad8('0x45')]=_0xaad8('0x14f');return _0x278542(msgResponse('ifTime',_0xaad8('0x14d'),_0x5030a0+_0xaad8('0x150')));}if(_0x55f859&&_[_0xaad8('0x8f')](config['timezones'][_0x55f859])){_0x4eefc8['message']=_0xaad8('0x151');return _0x278542(msgResponse(_0xaad8('0x14b'),_0xaad8('0x14d'),_0x5030a0+'\x20Timezone\x20unknow\x20'+_0x55f859));}if(_[_0xaad8('0x152')](_0x4e23bc)){for(var _0x1a0cd3=0x0;_0x1a0cd3<_0x4e23bc[_0xaad8('0x9e')];_0x1a0cd3+=0x1){_0x5efc79[_0xaad8('0x136')](ami[_0xaad8('0x153')]({'action':_0xaad8('0x154'),'command':util['format'](_0xaad8('0x155'),_0x4e23bc[_0x1a0cd3][_0xaad8('0x156')],!_[_0xaad8('0x8f')](config['timezones'][_0x55f859])?_0x55f859:'')})[_0xaad8('0xbe')](function(_0x3c1764){return _0x3c1764[_0xaad8('0x157')][_0xaad8('0x158')](_0xaad8('0x159'))>=0x0;})['catch'](myreject(_0x278542)));}}else{_0x5efc79[_0xaad8('0x136')](ami[_0xaad8('0x153')]({'action':'command','command':util[_0xaad8('0x81')]('iftime\x20%s,%s',_0x4e23bc,!_[_0xaad8('0x8f')](config[_0xaad8('0x15a')][_0x55f859])?_0x55f859:'')})[_0xaad8('0xbe')](function(_0x1b3ff5){return _0x1b3ff5[_0xaad8('0x157')][_0xaad8('0x158')](_0xaad8('0x159'))>=0x0;})[_0xaad8('0xb6')](myreject(_0x278542)));}BPromise[_0xaad8('0x15b')](_0x5efc79)[_0xaad8('0xbe')](function(_0x9459ec){var _0x39048c=_[_0xaad8('0x15c')](_0x9459ec);if(_0x39048c){return _0x4390bd(_0x39048c);}else{_0x4eefc8['message']=_0x4f35af?_0xaad8('0x15d'):'INTERVAL_IS_OVERTIME';return _0x278542(msgResponse(_0xaad8('0x15e'),'Failure',_0xaad8('0x15f')+_0x4f35af+'\x20'+_0x5030a0+'\x20Interval\x20is\x20overtime:\x20'+util[_0xaad8('0x9c')](_0x4e23bc,{'showHidden':![],'depth':null})+_0xaad8('0x160')+_0x55f859));}})[_0xaad8('0xb6')](function(_0x4f422f){return _0x278542(msgResponse('ifTime',_0xaad8('0x14d'),JSON[_0xaad8('0x4f')](_0x4f422f)));});});};Dialer[_0xaad8('0x20')][_0xaad8('0x161')]=function(_0x2c50a6){var _0x243e66=this;return function(){switch(_0x2c50a6['dialMethod']){case _0xaad8('0x162'):freeVariablesPredictive(_0x2c50a6);_0x243e66[_0xaad8('0x163')](_0x2c50a6,0x1);break;case _0xaad8('0x164'):freeVariablesPredictive(_0x2c50a6);_0x243e66['handlePower'](_0x2c50a6,_0x2c50a6[_0xaad8('0x165')]);break;case'predictive':_0x243e66[_0xaad8('0xb')](_0x2c50a6);break;case _0xaad8('0xa'):freeVariablesPredictive(_0x2c50a6);_0x243e66['handlePower'](_0x2c50a6,0x1);break;default:freeVariablesPredictive(_0x2c50a6);logger[_0xaad8('0x9b')]('Queue',_0x2c50a6[_0xaad8('0x48')],_0xaad8('0x166'));}};};Dialer[_0xaad8('0x20')][_0xaad8('0x167')]=function(_0x258d21){var _0x99f992=this;return function(){_0x99f992[_0xaad8('0x168')](_0x258d21);};};Dialer[_0xaad8('0x20')][_0xaad8('0xd')]=function(_0x426fd7){var _0x69cdd2=this;if(isNotPreview(_0x426fd7['dialMethod'])){if(isVoiceQueueOutbound(_0x426fd7[_0xaad8('0x54')])&&isActive(_0x426fd7['dialActive'])){_0x426fd7[_0xaad8('0xa8')]=!![];BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](checkIsLoggedIn(_0x426fd7,_0x426fd7[_0xaad8('0x59')]))[_0xaad8('0xbe')](checkIsActive(_0x426fd7,_0x426fd7[_0xaad8('0x60')]))['then'](checkInterval(_0x426fd7))[_0xaad8('0xbe')](_0x69cdd2[_0xaad8('0x149')](_0x426fd7))['then'](_0x69cdd2[_0xaad8('0x14a')](_0x426fd7['dialGlobalInterval'],_0x426fd7[_0xaad8('0x169')],_0x426fd7[_0xaad8('0x48')],_0x426fd7))[_0xaad8('0xbe')](_0x69cdd2[_0xaad8('0x14c')](_0x426fd7[_0xaad8('0x7f')],_0x426fd7['dialTimezone'],_0x426fd7[_0xaad8('0x48')],_0x426fd7))[_0xaad8('0xbe')](_0x69cdd2[_0xaad8('0x161')](_0x426fd7))[_0xaad8('0xb6')](loggerCatchQueueSummary(_0xaad8('0x16a'),_0x426fd7));}else{notSendMessagesQueue(_0x426fd7);}}else{freeVariablesPredictive(_0x426fd7);}};Dialer[_0xaad8('0x20')][_0xaad8('0x148')]=function(){var _0x5cab2b=this;var _0x1b7774;for(var _0x427633 in this['campaigns']){if(typeof this[_0xaad8('0x27')][_0x427633]!==_0xaad8('0x9f')){_0x1b7774=this[_0xaad8('0x27')][_0x427633];if(isCampaignIvr(_0x1b7774[_0xaad8('0x54')])&&isActive(_0x1b7774[_0xaad8('0x7e')])){_0x1b7774['sendMessageOneNotActive']=!![];BPromise[_0xaad8('0xbd')]()[_0xaad8('0xbe')](checkIsActive(_0x1b7774,_0x1b7774[_0xaad8('0x7e')]))[_0xaad8('0xbe')](checkInterval(_0x1b7774))[_0xaad8('0xbe')](_0x5cab2b['checkIsTrunkReachable'](_0x1b7774))[_0xaad8('0xbe')](_0x5cab2b[_0xaad8('0x14a')](_0x1b7774[_0xaad8('0x16b')],_0x1b7774['dialTimezone'],_0x1b7774['name'],_0x1b7774))['then'](_0x5cab2b['checkIfTimeIntervals'](_0x1b7774[_0xaad8('0x7f')],_0x1b7774[_0xaad8('0x169')],_0x1b7774['name'],_0x1b7774))['then'](_0x5cab2b['launchHandleIvr'](_0x1b7774))[_0xaad8('0xb6')](loggerCatchQueueSummary(_0xaad8('0x16c'),_0x1b7774));}else{notSendMessagesCampaign(_0x1b7774);}}}};function getCallerIdRandom(_0xe2393c,_0x17c139){var _0x2a5140;var _0x210d6b;var _0x1da361;if(_0x17c139<=0x0){_0x17c139=0x1;}_0x2a5140=new RegExp('\x5cw{0,'+_0x17c139+'}$');_0x210d6b=Math[_0xaad8('0x16d')](0xa,_0x17c139-0x1);_0x1da361=Math[_0xaad8('0x16d')](0xa,_0x17c139)-0x1;return util[_0xaad8('0x81')]('%s',_[_0xaad8('0x16e')](_0xe2393c,_0x2a5140,_[_0xaad8('0x16f')](_0x210d6b,_0x1da361)));}function extractCalleridName(_0x5e520a){var _0x29bb47=_0x5e520a[_0xaad8('0x170')](/"(.*?)"/);return _0x29bb47?_0x29bb47[0x1]:_0x5e520a;}function extractCalleridNumber(_0x355b6f){var _0x4f7e86=_0x355b6f[_0xaad8('0x170')](/<(.*?)>/);return _0x4f7e86?_0x4f7e86[0x1]:_0x355b6f;}Dialer[_0xaad8('0x20')][_0xaad8('0x171')]=function(_0x3ff057,_0x28632c){var _0xee73af=this;var _0x588c57=uuid['v4']();this[_0xaad8('0x2c')][_0x588c57]=new Action(_0x3ff057,_0x28632c,_0x588c57);return new BPromise(function(_0x271ae8,_0x3f13cb){if(_['isUndefined'](_0x3ff057)&&typeof _0x3ff057!==_0xaad8('0x172')){return _0x3f13cb(msgResponse(_0xaad8('0x173'),_0xaad8('0x14d'),'voiceQueue\x20is\x20undefine'));}if(_['isUndefined'](_0x28632c[_0xaad8('0x174')][_0xaad8('0x175')])||_0x28632c[_0xaad8('0x174')]['phone']===null){return _0x3f13cb(msgResponse(_0xaad8('0x173'),'Failure',_0xaad8('0x176')));}var _0x544883={'XMD-CALLERID':_0xee73af[_0xaad8('0x2c')][_0x588c57][_0xaad8('0x177')](),'XMD-AGI':_0x3ff057[_0xaad8('0x114')]?util['format'](_0xaad8('0x178'),ipAgi,_0x3ff057[_0xaad8('0x114')]):_0xaad8('0x179'),'XMD-AGIAFTER':_0x3ff057[_0xaad8('0x17a')]?util[_0xaad8('0x81')](_0xaad8('0x178'),ipAgi,_0x3ff057['dialQueueProject2']):_0xaad8('0x179'),'XMD-QUEUE':_0x3ff057['type']===_0xaad8('0x55')?util[_0xaad8('0x81')](_0xaad8('0x17b'),_0x3ff057[_0xaad8('0x48')],_0x3ff057[_0xaad8('0x17c')]||'',_0x3ff057['dialAgiAfterHangupAgent']?'c':'',_0x3ff057['dialQueueTimeout']||0x3):_0xaad8('0x179'),'XMD-CONTACTID':_0x28632c[_0xaad8('0xdb')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0xee73af[_0xaad8('0x2c')][_0x588c57][_0xaad8('0x177')](),'XMD-AMD':_0x3ff057[_0xaad8('0xf0')]?_0xaad8('0x17d'):_0xaad8('0x179'),'XMD-DESTINATION':_0xaad8('0xe8')};if(_0x3ff057['dialAMDActive']){_0x544883[_0xaad8('0x17e')]=_0x3ff057[_0xaad8('0x17f')]||0x9c4;_0x544883['XMD-AMDGREETING']=_0x3ff057['dialAMDGreeting']||0x5dc;_0x544883[_0xaad8('0x180')]=_0x3ff057['dialAMDAfterGreetingSilence']||0x320;_0x544883['XMD-AMDTOTALANALYSISTIME']=_0x3ff057['dialAMDTotalAnalysisTime']||0x1388;_0x544883[_0xaad8('0x181')]=_0x3ff057[_0xaad8('0x182')]||0x64;_0x544883[_0xaad8('0x183')]=_0x3ff057[_0xaad8('0x184')]||0x32;_0x544883[_0xaad8('0x185')]=_0x3ff057[_0xaad8('0x186')]||0x3;_0x544883[_0xaad8('0x187')]=_0x3ff057[_0xaad8('0x188')]||0x100;_0x544883[_0xaad8('0x189')]=_0x3ff057['dialAMDMaximumWordLength']||0x1388;}if(_0x3ff057[_0xaad8('0x54')]==='outbound'){_0x544883[_0xaad8('0x18a')]=_0x28632c[_0xaad8('0xdd')];}else{_0x544883[_0xaad8('0x18b')]=_0x28632c[_0xaad8('0x109')];}for(var _0x266bfe in _0x28632c['Contact']){if(typeof _0x28632c['Contact'][_0x266bfe]!=='undefined'){if(isNotNull(_0x28632c[_0xaad8('0x174')][_0x266bfe])&&_0x266bfe!=='id'&&_0x266bfe!=='tags'&&_0x266bfe!==_0xaad8('0x18c')&&_0x266bfe!==_0xaad8('0x18d')){_0x544883[util[_0xaad8('0x81')](_0xaad8('0x18e'),'XMD-',_[_0xaad8('0x18f')](_0x266bfe))]=_0x28632c[_0xaad8('0x174')][_0x266bfe];}}}var _0x1e37aa=_0xee73af[_0xaad8('0xe1')](_0x3ff057[_0xaad8('0x7d')])?getCallerId(_0x3ff057[_0xaad8('0x7d')][_0xaad8('0x190')],_0x3ff057[_0xaad8('0x191')],_0x3ff057['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x3ff057['dialOriginateCallerIdNumber'],_0x3ff057[_0xaad8('0x192')]):_0x3ff057['dialOriginateCallerIdNumber']):getCallerId(_[_0xaad8('0xb3')](_0x3ff057[_0xaad8('0x193')])?_0x3ff057[_0xaad8('0x7d')][_0xaad8('0x190')]:_0x3ff057[_0xaad8('0x193')]['callerid'],_0x3ff057[_0xaad8('0x191')],_0x3ff057[_0xaad8('0x192')]>0x0?getCallerIdRandom(_0x3ff057[_0xaad8('0x62')],_0x3ff057[_0xaad8('0x192')]):_0x3ff057[_0xaad8('0x62')]);if(_0x1e37aa){_0x544883[_0xaad8('0x194')]=_0xee73af[_0xaad8('0x2c')][_0x588c57][_0xaad8('0x195')]=extractCalleridName(_0x1e37aa);_0x544883[_0xaad8('0x196')]=_0xee73af[_0xaad8('0x2c')][_0x588c57]['originatecalleridnum']=extractCalleridNumber(_0x1e37aa);}return ami['Action']({'actionid':_0x588c57,'action':_0xaad8('0x173'),'channel':_0xee73af[_0xaad8('0xe1')](_0x3ff057[_0xaad8('0x7d')])?util[_0xaad8('0x81')](_0xaad8('0x197'),_0x3ff057[_0xaad8('0x7d')][_0xaad8('0x48')],isNotNull(_0x3ff057['dialPrefix'])?_0x3ff057['dialPrefix'][_0xaad8('0x198')]()||'':'',_0x3ff057['dialCutDigit']>0x0?_0x28632c[_0xaad8('0x174')][_0xaad8('0x175')][_0xaad8('0x199')](_0x3ff057['dialCutDigit']):_0x28632c[_0xaad8('0x174')][_0xaad8('0x175')]):util[_0xaad8('0x81')](_0xaad8('0x197'),_[_0xaad8('0xb3')](_0x3ff057[_0xaad8('0x193')])?_0x3ff057[_0xaad8('0x7d')]['name']:_0x3ff057[_0xaad8('0x193')][_0xaad8('0x48')],isNotNull(_0x3ff057['dialPrefix'])?_0x3ff057[_0xaad8('0x19a')][_0xaad8('0x198')]()||'':'',_0x3ff057['dialCutDigit']>0x0?_0x28632c[_0xaad8('0x174')][_0xaad8('0x175')][_0xaad8('0x199')](_0x3ff057[_0xaad8('0x19b')]):_0x28632c[_0xaad8('0x174')][_0xaad8('0x175')]),'callerid':_0x1e37aa,'Exten':_0xaad8('0xe8'),'Context':_0xaad8('0x19c'),'Priority':'1','variable':_0x544883,'timeout':(_0x3ff057[_0xaad8('0x63')]||0x1e)*0x3e8,'async':!![],'channelid':_0x588c57})[_0xaad8('0xbe')](function(_0x1e76c3){return _0x271ae8(_0x1e76c3);})[_0xaad8('0xb6')](function(_0x59b3dc){_0x3ff057[_0xaad8('0x6e')]+=0x1;var _0x28e6e0=new History(_0xee73af[_0xaad8('0x2c')][_0x588c57]);logger[_0xaad8('0x9b')](util[_0xaad8('0x81')]('[originateError]:\x20%s',JSON[_0xaad8('0x4f')](_0x59b3dc)));_0x28e6e0[_0xaad8('0xe9')]=0xe;_0x28e6e0[_0xaad8('0xea')]=_0xaad8('0x19d');_0x28e6e0[_0xaad8('0xaf')]=moment()[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss');_0x28e6e0[_0xaad8('0xae')]=_0x28e6e0[_0xaad8('0xaf')];_0xee73af[_0xaad8('0xd2')](_0x28e6e0)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x19e')));_0xee73af[_0xaad8('0xd0')](_0x28e6e0)['catch'](loggerCatch(_0xaad8('0x19e')))['finally'](function(){delete _0xee73af[_0xaad8('0x2c')][_0x588c57];return _0x3f13cb(msgResponse('originate',_0xaad8('0x4e'),'originate\x20action\x20Error'));});});});};Dialer[_0xaad8('0x20')][_0xaad8('0x37')]=function(_0x1f8378){var _0x25785=this['actions'][_0x1f8378[_0xaad8('0x132')]];if(_0x25785){delete this[_0xaad8('0x2c')][_0x1f8378['actionid']];_0x25785[_0xaad8('0x19f')]=moment()[_0xaad8('0x81')](_0xaad8('0x107'));var _0xf58cd=_0x25785[_0xaad8('0x54')]===_0xaad8('0xb8')?this[_0xaad8('0x27')][_0x25785[_0xaad8('0xbb')]]:this[_0xaad8('0x26')][_0x25785[_0xaad8('0x1a0')]()];if(!this[_0xaad8('0x1a1')](_0x1f8378[_0xaad8('0x1a2')])){this[_0xaad8('0xb9')](_0xf58cd);return this[_0xaad8('0x1a3')](_0x25785,_0xf58cd,_0x1f8378)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x1a4')));}this['uniqueId'][_0x1f8378[_0xaad8('0xe5')]]=_0x25785;}};Dialer[_0xaad8('0x20')]['checkRetriveMax']=function(_0x84ea10,_0x5b6e9a,_0x1e2f7e){var _0x9d8955=new History(_0x5b6e9a);if(_0x9d8955[_0xaad8('0x10f')]+_0x9d8955['countcongestionretry']+_0x9d8955['countnoanswerretry']+_0x9d8955[_0xaad8('0xf9')]+_0x9d8955[_0xaad8('0xfa')]+_0x9d8955['countabandonedretry']+_0x9d8955[_0xaad8('0x103')]+_0x9d8955[_0xaad8('0xfc')]>=_0x1e2f7e['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x84ea10){case 0x3:if(_0x9d8955['countnoanswerretry']>=_0x1e2f7e['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x9d8955[_0xaad8('0xf8')]+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e['dialNoAnswerRetryFrequency'],'minutes')[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955[_0xaad8('0xdd')]||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x1a5')));break;case 0x5:if(_0x9d8955[_0xaad8('0x10f')]>=_0x1e2f7e[_0xaad8('0x1a6')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x9d8955[_0xaad8('0x10f')]+=0x1,'scheduledat':moment()['add'](_0x1e2f7e[_0xaad8('0x1a7')],_0xaad8('0x106'))[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955[_0xaad8('0xdd')]||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})['catch'](loggerCatch(_0xaad8('0x1a8')));break;case 0x8:if(_0x9d8955['countcongestionretry']>=_0x1e2f7e[_0xaad8('0x1a9')]-0x1){return!![];}this[_0xaad8('0xc6')]({'active':![],'countcongestionretry':_0x9d8955[_0xaad8('0xf7')]+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e[_0xaad8('0x1aa')],_0xaad8('0x106'))[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955['VoiceQueueId']||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x9d8955[_0xaad8('0xf9')]>=_0x1e2f7e[_0xaad8('0x1ab')]-0x1){return!![];}else{this[_0xaad8('0xc6')]({'active':![],'countnosuchnumberretry':_0x9d8955[_0xaad8('0xf9')]+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e['dialNoSuchNumberRetryFrequency'],'minutes')[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955[_0xaad8('0xdd')]||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x1ac')));}break;case 0xa:if(_0x9d8955[_0xaad8('0xfa')]>=_0x1e2f7e['dialDropMaxRetry']-0x1){return!![];}this[_0xaad8('0xc6')]({'active':![],'countdropretry':_0x9d8955['countdropretry']+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e[_0xaad8('0x127')],_0xaad8('0x106'))[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955[_0xaad8('0xdd')]||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x9d8955[_0xaad8('0xfb')]>=_0x1e2f7e[_0xaad8('0x12e')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x9d8955[_0xaad8('0xfb')]+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e[_0xaad8('0x12f')],_0xaad8('0x106'))[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955[_0xaad8('0xdd')]||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x130')));break;case 0x13:if(_0x9d8955[_0xaad8('0x103')]>=_0x1e2f7e['dialMachineMaxRetry']-0x1){return!![];}this[_0xaad8('0xc6')]({'active':![],'countmachineretry':_0x9d8955[_0xaad8('0x103')]+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e[_0xaad8('0x105')],_0xaad8('0x106'))[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955[_0xaad8('0xdd')]||undefined,'CampaignId':_0x9d8955['CampaignId']||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x10a')));break;case 0x14:if(_0x9d8955[_0xaad8('0xfc')]>=_0x1e2f7e[_0xaad8('0x1ad')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x9d8955[_0xaad8('0xfc')]+=0x1,'scheduledat':moment()[_0xaad8('0x104')](_0x1e2f7e[_0xaad8('0x1ae')],_0xaad8('0x106'))[_0xaad8('0x81')](_0xaad8('0x107')),'ContactId':_0x9d8955[_0xaad8('0xdb')],'ListId':_0x9d8955[_0xaad8('0x108')],'VoiceQueueId':_0x9d8955['VoiceQueueId']||undefined,'CampaignId':_0x9d8955[_0xaad8('0x109')]||undefined})[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x1af')));break;default:return!![];}};Dialer[_0xaad8('0x20')][_0xaad8('0x1a3')]=function(_0x1f18b6,_0x2ebcaf,_0xde7590){var _0x35a533=this;var _0x38b47c=new History(_0x1f18b6);return new BPromise(function(_0x41d030,_0x937338){if(_[_0xaad8('0x8f')](_0x2ebcaf)&&typeof _0x2ebcaf!==_0xaad8('0x172')){return _0x937338(msgResponse(_0xaad8('0x1b0'),'Failure',_0xaad8('0x1b1')));}if(_['isUndefined'](_0xde7590)&&typeof _0xde7590!==_0xaad8('0x172')){return _0x937338(msgResponse('[callProgressDetecting]',_0xaad8('0x14d'),_0xaad8('0x1b2')));}switch(_0xde7590[_0xaad8('0x119')]){case'0':_0x2ebcaf[_0xaad8('0x6d')]+=0x1;_0x38b47c['state']=0x0;_0x38b47c[_0xaad8('0xea')]='NoSuchNumber';_0x38b47c[_0xaad8('0xf9')]+=0x1;_0x38b47c[_0xaad8('0xf4')]+=0x1;ami['emit'](_0xaad8('0x1b3'),ut[_0xaad8('0x10b')](_0x1f18b6,_0xaad8('0x1b4')));_0x35a533[_0xaad8('0xd2')](_0x38b47c)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0xf6')));if(_0x35a533['checkRetriveMax'](0x0,_0x1f18b6,_0x2ebcaf)){if(_0x38b47c['countnosuchnumberretry']>=_0x2ebcaf[_0xaad8('0x1ab')]){_0x35a533[_0xaad8('0x101')](_0x38b47c,_0x41d030,_0x937338,'reason\x200\x20no\x20such\x20number....');}else{_0x35a533['stateGlobal'](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1b5'));}}break;case'3':_0x2ebcaf['outboundNoAnswerCallsDay']+=0x1;_0x38b47c[_0xaad8('0xe9')]=0x3;_0x38b47c[_0xaad8('0xea')]=_0xaad8('0x1b6');_0x38b47c[_0xaad8('0xf8')]+=0x1;_0x38b47c[_0xaad8('0xf4')]+=0x1;ami[_0xaad8('0x53')](_0xaad8('0x1b7'),ut[_0xaad8('0x10b')](_0x1f18b6,_0xaad8('0x1b8')));_0x35a533[_0xaad8('0xd2')](_0x38b47c)[_0xaad8('0xb6')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x35a533[_0xaad8('0x1b9')](0x3,_0x1f18b6,_0x2ebcaf)){if(_0x38b47c[_0xaad8('0xf8')]>=_0x2ebcaf[_0xaad8('0x1ba')]){_0x35a533[_0xaad8('0x101')](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1bb'));}else{_0x35a533[_0xaad8('0xfe')](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1bb'));}}break;case'5':_0x2ebcaf[_0xaad8('0x67')]+=0x1;_0x38b47c[_0xaad8('0xe9')]=0x5;_0x38b47c[_0xaad8('0xea')]='Busy';_0x38b47c[_0xaad8('0x10f')]+=0x1;_0x38b47c['countglobal']+=0x1;ami[_0xaad8('0x53')]('custom:agentbusy',ut[_0xaad8('0x10b')](_0x1f18b6,_0xaad8('0x1bc')));_0x35a533[_0xaad8('0xd2')](_0x38b47c)['catch'](loggerCatch(_0xaad8('0x1bd')));if(_0x35a533[_0xaad8('0x1b9')](0x5,_0x1f18b6,_0x2ebcaf)){if(_0x38b47c['countbusyretry']>=_0x2ebcaf[_0xaad8('0x1a6')]){_0x35a533[_0xaad8('0x101')](_0x38b47c,_0x41d030,_0x937338,'reason\x205\x20busy');}else{_0x35a533[_0xaad8('0xfe')](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1be'));}}break;case'8':_0x2ebcaf['outboundCongestionCallsDay']+=0x1;_0x38b47c[_0xaad8('0xe9')]=0x8;_0x38b47c[_0xaad8('0xea')]=_0xaad8('0x1bf');_0x38b47c['countcongestionretry']+=0x1;_0x38b47c[_0xaad8('0xf4')]+=0x1;ami[_0xaad8('0x53')]('custom:agentcongestion',ut[_0xaad8('0x10b')](_0x1f18b6,_0xaad8('0x1c0')));_0x35a533['createHistory'](_0x38b47c)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x1c1')));if(_0x35a533[_0xaad8('0x1b9')](0x8,_0x1f18b6,_0x2ebcaf)){if(_0x38b47c[_0xaad8('0xf7')]>=_0x2ebcaf[_0xaad8('0x1a9')]){_0x35a533[_0xaad8('0x101')](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1c2'));}else{_0x35a533[_0xaad8('0xfe')](_0x38b47c,_0x41d030,_0x937338,'reason\x208\x20congestion');}}break;case'11':_0x2ebcaf[_0xaad8('0x1c3')]+=0x1;_0x38b47c[_0xaad8('0xe9')]=0xb;_0x38b47c[_0xaad8('0xea')]='Abandoned';_0x38b47c[_0xaad8('0xfb')]+=0x1;_0x38b47c[_0xaad8('0xf4')]+=0x1;_0x35a533[_0xaad8('0xd2')](_0x38b47c)[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x131')));if(_0x35a533[_0xaad8('0x1b9')](0xb,_0x1f18b6,_0x2ebcaf)){if(_0x38b47c[_0xaad8('0xfb')]>=_0x2ebcaf[_0xaad8('0x12e')]){_0x35a533['createStateFinal'](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1c4'));}else{_0x35a533['stateGlobal'](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1c4'));}}break;case'20':_0x2ebcaf[_0xaad8('0x1c5')]+=0x1;_0x38b47c[_0xaad8('0xe9')]=0x14;_0x38b47c[_0xaad8('0xea')]=_0xaad8('0x1c6');_0x38b47c[_0xaad8('0xfc')]+=0x1;_0x38b47c['countglobal']+=0x1;ami[_0xaad8('0x53')]('custom:agentreject',ut[_0xaad8('0x10b')](_0x1f18b6,_0xaad8('0x1c7')));_0x35a533[_0xaad8('0xd2')](_0x38b47c)[_0xaad8('0xb6')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x35a533['checkRetriveMax'](0x14,_0x1f18b6,_0x2ebcaf)){if(_0x38b47c['countagentrejectretry']>=_0x2ebcaf[_0xaad8('0x1ad')]){_0x35a533[_0xaad8('0x101')](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1c8'));}else{_0x35a533[_0xaad8('0xfe')](_0x38b47c,_0x41d030,_0x937338,_0xaad8('0x1c8'));}}break;default:_0x2ebcaf[_0xaad8('0x115')]+=0x1;_0x38b47c['state']=0xc;_0x38b47c[_0xaad8('0xea')]=_0xde7590[_0xaad8('0x119')];_0x35a533[_0xaad8('0xd2')](_0x38b47c)['catch'](loggerCatch(_0xaad8('0x1c9')));if(_0x35a533['checkRetriveMax'](_0xde7590['reason'],_0x1f18b6,_0x2ebcaf)){if(_0x38b47c[_0xaad8('0x10f')]+_0x38b47c[_0xaad8('0xf7')]+_0x38b47c[_0xaad8('0xf8')]+_0x38b47c[_0xaad8('0xf9')]+_0x38b47c[_0xaad8('0xfa')]+_0x38b47c[_0xaad8('0xfb')]+_0x38b47c[_0xaad8('0x103')]+_0x38b47c['countagentrejectretry']>=_0x2ebcaf[_0xaad8('0xfd')]){_0x35a533[_0xaad8('0xfe')](_0x38b47c,_0x41d030,_0x937338,_0xde7590[_0xaad8('0x119')]);}else{_0x35a533[_0xaad8('0x101')](_0x38b47c,_0x41d030,_0x937338,_0xde7590['reason']);}}}});};Dialer[_0xaad8('0x20')][_0xaad8('0xfe')]=function(_0x4d27c2,_0x3a67a1,_0x1c93a4,_0x135663){var _0x4141a5=new Final(_0x4d27c2);_0x4141a5[_0xaad8('0xe9')]=0xf;_0x4141a5[_0xaad8('0xea')]=_0xaad8('0x1ca');this[_0xaad8('0x101')](_0x4141a5,_0x3a67a1,_0x1c93a4,_0x135663);};Dialer['prototype']['createStateFinal']=function(_0x30ef6c,_0x3d750e,_0x5484b0,_0x169b6f){this['moveContactManagedDialer'](_0x30ef6c)[_0xaad8('0xbe')](function(){return _0x3d750e(msgResponse(_0xaad8('0x1b0'),'Success',_0x169b6f));})[_0xaad8('0xb6')](function(){return _0x5484b0(msgResponse(_0xaad8('0x1cb'),_0xaad8('0x14d'),_0xaad8('0x1cc')));});};Dialer[_0xaad8('0x20')][_0xaad8('0xb')]=function(_0x30536a){var _0x3a0a34=_0x30536a[_0xaad8('0x1cd')]/0x64;var _0x29ce0f=_0x30536a['outboundDropCallsDayTimeout']/(_0x30536a[_0xaad8('0x6b')]+_0x30536a[_0xaad8('0x65')]);var _0x598d47=Math['round'](_0x30536a[_0xaad8('0x75')]*(_0x30536a[_0xaad8('0x1ce')]/0x64));var _0x439d45=Math[_0xaad8('0x1cf')](_0x30536a[_0xaad8('0x75')]*(_0x30536a[_0xaad8('0x1d0')]/0x64));var _0x3491e5=_0x30536a[_0xaad8('0x58')]+_0x30536a[_0xaad8('0x5d')];var _0x567285=Math[_0xaad8('0x1d1')](_0x30536a['erlangCalls']*_0x30536a[_0xaad8('0x7a')]*_0x30536a['predictiveIntervalHitRate']*_0x30536a[_0xaad8('0x73')]);if(_[_0xaad8('0x8f')](_0x30536a[_0xaad8('0x7c')])){if(!_[_0xaad8('0x8f')](_0x30536a[_0xaad8('0x2f')])){_0x30536a[_0xaad8('0x2f')]=undefined;loggerPredictive[_0xaad8('0x9b')]('[startMethodPredictive][StartProgressive]',_0xaad8('0x1d2'));}if(!_['isUndefined'](_0x30536a[_0xaad8('0x97')])){loggerPredictive[_0xaad8('0x9b')](_0xaad8('0x1d3'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x30536a[_0xaad8('0x97')]);_0x30536a['handlePredictive']=undefined;}_0x30536a[_0xaad8('0x7c')]=moment()[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xaad8('0x84')](_0x30536a[_0xaad8('0x48')],_0xaad8('0x1d4'),_0x30536a[_0xaad8('0x7c')]);this['handlePower'](_0x30536a,0x1);}else if(ifInterval(_0x30536a[_0xaad8('0x1d5')],_0x30536a['startProgressive'])){this[_0xaad8('0x163')](_0x30536a,0x1);loggerPredictiveCalls[_0xaad8('0x84')]('[startMethodPredictive][StartProgressive][Loop]',_0x30536a[_0xaad8('0x7c')],_0x30536a[_0xaad8('0x48')]);_0x30536a['erlangCalls']=0x0;_0x30536a[_0xaad8('0x72')]=0x0;}else if(_0x3a0a34<_0x29ce0f&&_0x30536a[_0xaad8('0x1d6')]==='dropRate'){freeVariablesPredictive(_0x30536a);loggerPredictive[_0xaad8('0x84')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0xaad8('0x1d7'),_0x29ce0f,_0xaad8('0x7c'),_0x30536a[_0xaad8('0x48')]);}else if(_0x567285<_0x30536a['predictiveIntervalErlangCallsDroppedCalls']&&_0x30536a[_0xaad8('0x1d6')]===_0xaad8('0x1d8')){freeVariablesPredictive(_0x30536a);loggerPredictive[_0xaad8('0x84')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20',_0x567285,_0xaad8('0x1d9'),_0x30536a[_0xaad8('0x72')],_0xaad8('0x7c'),_0x30536a[_0xaad8('0x48')]);}else if(!ifInterval(_0x30536a[_0xaad8('0x1d5')],_0x30536a[_0xaad8('0x7c')])&&_[_0xaad8('0x8f')](_0x30536a[_0xaad8('0x2f')])&&!_['isUndefined'](_0x30536a[_0xaad8('0x7c')])){_0x30536a['startPredictive']=moment()[_0xaad8('0x81')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xaad8('0x84')](_0x30536a[_0xaad8('0x48')],_0xaad8('0x1da'),_0x30536a[_0xaad8('0x2f')]);this[_0xaad8('0x1db')](_0x30536a['dialPredictiveInterval'])[_0xaad8('0xbe')](this[_0xaad8('0x1dc')](_0x30536a))['then'](mergeDataErlangB(_0x30536a))[_0xaad8('0xbe')](this[_0xaad8('0x1dd')](_0x30536a))[_0xaad8('0xb6')](loggerCatchPredictive(_0xaad8('0x1de'),_0x30536a));}else if(!ifInterval(_0x30536a['dialPredictiveInterval'],_0x30536a[_0xaad8('0x2f')])){_0x30536a[_0xaad8('0x72')]=0x0;_0x30536a[_0xaad8('0x2f')]=moment()[_0xaad8('0x81')](_0xaad8('0x107'));loggerPredictive[_0xaad8('0x84')](_0x30536a['name'],_0xaad8('0x1df'),_0x30536a[_0xaad8('0x2f')]);clearInterval(_0x30536a[_0xaad8('0x97')]);_0x30536a[_0xaad8('0x97')]=undefined;this[_0xaad8('0x1db')](_0x30536a[_0xaad8('0x1d5')])[_0xaad8('0xbe')](this[_0xaad8('0x1dc')](_0x30536a))[_0xaad8('0xbe')](mergeDataErlangB(_0x30536a))[_0xaad8('0xbe')](this[_0xaad8('0x1dd')](_0x30536a))[_0xaad8('0xb6')](loggerCatchPredictive(_0xaad8('0x1e0'),_0x30536a));}else if(_0x30536a['predictiveIntervalAvailable']&&_0x3491e5<_0x30536a[_0xaad8('0x75')]-_0x439d45){freeVariablesPredictive(_0x30536a);loggerPredictive[_0xaad8('0x84')](_0x30536a[_0xaad8('0x48')],_0xaad8('0x1e1'),_0x3491e5,_0xaad8('0x1e2'),_0x30536a[_0xaad8('0x75')],'-',_0x439d45,'=',_0x30536a[_0xaad8('0x75')]-_0x439d45,')');}else if(_0x30536a[_0xaad8('0x75')]&&_0x3491e5>_0x30536a[_0xaad8('0x75')]+_0x598d47){freeVariablesPredictive(_0x30536a);loggerPredictive['info'](_0x30536a[_0xaad8('0x48')],_0xaad8('0x1e1'),_0x3491e5,')\x20are\x20more\x20than\x20threshold\x20(',_0x30536a[_0xaad8('0x75')],'+',_0x598d47,'=',_0x30536a['predictiveIntervalAvailable']+_0x598d47,')');}};Dialer[_0xaad8('0x20')][_0xaad8('0x1dc')]=function(_0x214776){var _0x7fcc3d=this;return function(_0x26e130){return new BPromise(function(_0x4f1953,_0x3fc165){_[_0xaad8('0x94')](_0x214776,_0x26e130[0x0]);if(checkGetDataPredictive(_0x26e130[0x0])){var _0x24d380=_0x214776['predictiveIntervalAvailable']=_0x214776[_0xaad8('0x5d')]+_0x214776[_0xaad8('0x58')];var _0x2c5e9a=_0x214776['dialPredictiveInterval']*0x3c;var _0x4ea50a=_0x26e130[0x0][_0xaad8('0x8c')]+_0x26e130[0x0][_0xaad8('0x70')];var _0x41565e=(_0x26e130[0x0][_0xaad8('0x88')]+_0x26e130[0x0][_0xaad8('0x8a')]+_0x26e130[0x0][_0xaad8('0x71')])/_0x26e130[0x0][_0xaad8('0x76')];_0x214776[_0xaad8('0x1e3')]=_0x41565e>0x0?_0x41565e:0x1;switch(_0x214776[_0xaad8('0x1d6')]){case _0xaad8('0x1d8'):var _0x48ceba=_0x214776[_0xaad8('0x1cd')]/0x64;return _0x7fcc3d[_0xaad8('0x1e4')](_0x24d380,_0x2c5e9a,_0x4ea50a,_0x41565e,_0x48ceba)[_0xaad8('0xbe')](function(_0x177b98){return _0x4f1953(_0x177b98);});case'agentBusyFactor':var _0x1d168f=_0x214776[_0xaad8('0x1cd')]/0x64;return _0x7fcc3d[_0xaad8('0x1e5')](_0x24d380,_0x2c5e9a,_0x4ea50a,_0x41565e,_0x1d168f)[_0xaad8('0xbe')](function(_0x27c5c5){return _0x4f1953(_0x27c5c5);});default:return _0x3fc165(msgResponse(_0xaad8('0x1e6'),'Failure','Unknown\x20Predictive'));}}else{return _0x3fc165(msgResponse(_0xaad8('0x1e6'),_0xaad8('0x14d'),_0xaad8('0x1e7')));}});};};Dialer[_0xaad8('0x20')]['getDataPredictiveOld']=function(_0x13a4a2){var _0x1b89a7=this;return function(_0x2964cb){return new BPromise(function(_0x4bedd6,_0x2b016f){_[_0xaad8('0x94')](_0x13a4a2,_0x2964cb[0x0]);if(checkGetDataPredictive(_0x2964cb[0x0])){loggerPredictive[_0xaad8('0x84')](JSON[_0xaad8('0x4f')](_0x2964cb[0x0]));if(_0x13a4a2[_0xaad8('0x1d6')]===_0xaad8('0x1d8')){return _0x1b89a7[_0xaad8('0xce')](_0x13a4a2['id'])['then'](function(_0x50c95d){var _0x292470=_0x13a4a2['loggedIn']-_0x50c95d[0x0][_0xaad8('0x1e8')];var _0x57c14f=_0x13a4a2[_0xaad8('0x1d5')]*0x3c;var _0x56bb19=_0x2964cb[0x0][_0xaad8('0x8c')]+_0x2964cb[0x0][_0xaad8('0x70')];var _0x35f55=(_0x2964cb[0x0][_0xaad8('0x88')]+_0x2964cb[0x0][_0xaad8('0x8a')]+_0x2964cb[0x0][_0xaad8('0x71')])/_0x2964cb[0x0][_0xaad8('0x76')];var _0x3268d3=_0x13a4a2[_0xaad8('0x1cd')]/0x64;_0x13a4a2['predictiveIntervalPauses']=_0x50c95d[0x0][_0xaad8('0x1e8')]||0x0;_0x13a4a2[_0xaad8('0x1e3')]=_0x35f55>0x0?_0x35f55:0x1;return _0x1b89a7[_0xaad8('0x1e4')](_0x292470,_0x57c14f,_0x56bb19,_0x35f55,_0x3268d3);})[_0xaad8('0xbe')](function(_0x338cba){return _0x4bedd6(_0x338cba);})[_0xaad8('0xb6')](function(_0x9a9bf0){return _0x2b016f(msgResponse(_0xaad8('0x1e9'),_0xaad8('0x14d'),JSON[_0xaad8('0x4f')](_0x9a9bf0)));});}if(_0x13a4a2['dialPredictiveOptimization']===_0xaad8('0x1ea')){return _0x1b89a7[_0xaad8('0xce')](_0x13a4a2['id'])[_0xaad8('0xbe')](function(_0x490766){var _0x38d066=_0x13a4a2[_0xaad8('0x59')]-_0x490766[0x0][_0xaad8('0x1e8')];var _0x48872f=_0x13a4a2['dialPredictiveInterval']*0x3c;var _0x5123fa=_0x2964cb[0x0][_0xaad8('0x8c')]+_0x2964cb[0x0]['predictiveIntervalAvgHoldtime'];var _0x37db40=(_0x2964cb[0x0][_0xaad8('0x88')]+_0x2964cb[0x0][_0xaad8('0x8a')]+_0x2964cb[0x0][_0xaad8('0x71')])/_0x2964cb[0x0][_0xaad8('0x76')];var _0x3fa621=_0x13a4a2[_0xaad8('0x1cd')]/0x64;_0x13a4a2[_0xaad8('0x74')]=_0x490766[0x0][_0xaad8('0x1e8')]||0x0;_0x13a4a2['predictiveIntervalHitRate']=_0x37db40>0x0?_0x37db40:0x1;return _0x1b89a7['busyFactor'](_0x38d066,_0x48872f,_0x5123fa,_0x37db40,_0x3fa621);})['then'](function(_0x4310b3){return _0x4bedd6(_0x4310b3);})[_0xaad8('0xb6')](function(_0x1fca43){return _0x2b016f(msgResponse('[CatchErlangB]','Failure',JSON[_0xaad8('0x4f')](_0x1fca43)));});}}else{return _0x2b016f(msgResponse(_0xaad8('0x1e6'),_0xaad8('0x14d'),_0xaad8('0x1e7')));}});};};Dialer['prototype']['startMethodPredictive']=function(_0x421792){var _0x5ae6a7=this;return function(){var _0x285bfe=0x0;var _0xac51a0=Math[_0xaad8('0x1d1')](_0x421792[_0xaad8('0x79')]*0x3e8);if(_0xac51a0>0x0){_0xac51a0=_0xac51a0<0x64?0x64:_0xac51a0;loggerPredictive[_0xaad8('0x84')](_0x421792[_0xaad8('0x48')],_0xaad8('0x1eb'),_0xac51a0,'milliseconds');_0x421792[_0xaad8('0x97')]=setInterval(function(){_0x5ae6a7[_0xaad8('0x97')](_0x421792);loggerPredictiveCalls[_0xaad8('0x84')]('[handlePredictive]',_0x285bfe+=0x1);},_0xac51a0);}else{loggerPredictive['info'](_0x421792['name'],_0xaad8('0x1ec'));}};};Dialer[_0xaad8('0x20')][_0xaad8('0x1ed')]=function(_0x28351d,_0x4f818b){var _0x5a3d64=this;return function(_0xc63625){if(_[_0xaad8('0x4d')](_0xc63625)){if(_[_0xaad8('0xb3')](_0x4f818b['UserId'])||!_0x4f818b[_0xaad8('0x1ee')]){if(_0x28351d[_0xaad8('0x61')]===_0xaad8('0xa')){_0x28351d[_0xaad8('0x13a')]=_[_0xaad8('0x8f')](_0x28351d['queueStatusComplete'])?!![]:_0x28351d[_0xaad8('0x13a')];var _0x56ebb6=uuid['v4']();_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]=new Action(_0x28351d,_0x4f818b,_0x56ebb6);loggerBooked[_0xaad8('0x84')](_0xaad8('0x1ef'),_0x56ebb6,_0xaad8('0x1f0'),JSON[_0xaad8('0x4f')](_0x28351d['queueStatusComplete']),_0xaad8('0x1f1'),_0x28351d['name']);if(_0x28351d['queueStatusComplete']){_0x28351d[_0xaad8('0x13a')]=![];_0x5a3d64['queueBooked'][_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]['queue']]=[];ami['Action']({'actionid':_0x56ebb6,'action':_0xaad8('0x1f2'),'queue':_0x28351d['name']})['catch'](function(){_0x5a3d64[_0xaad8('0xb9')](_0x28351d);_0x5a3d64[_0xaad8('0xc6')]({'active':![],'ContactId':_0x5a3d64['actions'][_0x56ebb6]['ContactId'],'ListId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]['ListId'],'VoiceQueueId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]['VoiceQueueId']||undefined,'CampaignId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6][_0xaad8('0x109')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x5a3d64[_0xaad8('0x2c')][_0x56ebb6];});}else{loggerBooked[_0xaad8('0x84')](_0xaad8('0x1f3'),JSON[_0xaad8('0x4f')](_0x28351d[_0xaad8('0x13a')]),'Queue:\x20',_0x28351d['name']);_0x5a3d64[_0xaad8('0xb9')](_0x28351d);_0x5a3d64[_0xaad8('0xc6')]({'active':![],'ContactId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]['ContactId'],'ListId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6][_0xaad8('0x108')],'VoiceQueueId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]['VoiceQueueId']||undefined,'CampaignId':_0x5a3d64[_0xaad8('0x2c')][_0x56ebb6]['CampaignId']||undefined})[_0xaad8('0xb6')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x5a3d64['actions'][_0x56ebb6];}}else{return _0x5a3d64['actionOriginate'](_0x28351d,_0x4f818b);}}else{if(getDiff(_0x4f818b[_0xaad8('0x1f4')])<_0x28351d[_0xaad8('0x1f5')]*0x3c){if(_0x4f818b[_0xaad8('0x1f6')]&&!_0x4f818b[_0xaad8('0x1f6')]['voicePause']){_0x5a3d64[_0xaad8('0x25')][_0xaad8('0x141')](_0x4f818b['id'])[_0xaad8('0x23')](function(){_0x5a3d64['updateOriginated'](_0x28351d);});}else{_0x5a3d64[_0xaad8('0xc7')]({'active':![]},_0x4f818b['id'],0x1)[_0xaad8('0x23')](function(){_0x5a3d64[_0xaad8('0xb9')](_0x28351d);});}}else{_0x28351d[_0xaad8('0x6f')]+=0x1;_0x5a3d64[_0xaad8('0xb9')](_0x28351d);if(_0x28351d[_0xaad8('0x1f7')]){_0x5a3d64[_0xaad8('0xc6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x4f818b['ContactId'],'ListId':_0x4f818b[_0xaad8('0x108')],'VoiceQueueId':_0x4f818b[_0xaad8('0xdd')]||undefined,'CampaignId':_0x4f818b[_0xaad8('0x109')]||undefined})['catch'](loggerCatch(_0xaad8('0x1f8')));_0x5a3d64[_0xaad8('0xd2')](createObjHistory(_0x28351d,_0x4f818b,_0xaad8('0x1f9'),0x17,_0xaad8('0x1fa')))['catch'](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x5a3d64[_0xaad8('0xd9')](createObjHistory(_0x28351d,_0x4f818b,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),'[Originate][HistoryRecallClose][historyCatch]',_0xaad8('0x1fb'));}}}}else{_0x28351d['outboundBlacklistCallsDay']+=0x1;_0x5a3d64[_0xaad8('0xd9')](createObjHistory(_0x28351d,_0x4f818b,_0xaad8('0x1fc'),0xd,_0xaad8('0x1fd')),_0xaad8('0x1fe'),_0xaad8('0x1ff'));throw'inBlackList';}};};Dialer['prototype'][_0xaad8('0x168')]=function(_0x258b69){var _0x367861=this;var _0x479427=_0x258b69[_0xaad8('0x200')]-_0x258b69[_0xaad8('0x77')]-_0x258b69['temp'];emitCampaignSummary(_0x258b69);if(_0x479427>0x0){if(_0x479427>this[_0xaad8('0x2a')]){_0x479427=this[_0xaad8('0x2a')];}_0x258b69['temp']+=_0x479427;this[_0xaad8('0xcc')](_0x258b69['id'],_0x479427,_0x258b69[_0xaad8('0x201')],_0x258b69)[_0xaad8('0xbe')](function(_0x577025){_0x258b69[_0xaad8('0xca')]-=_0x479427;_0x258b69[_0xaad8('0xca')]=_0x258b69['temp']>0x0?_0x258b69[_0xaad8('0xca')]:0x0;if(!checkContactEmpty(_0x577025)){_0x258b69[_0xaad8('0x45')]=_0xaad8('0xa6');logger[_0xaad8('0x84')](_0xaad8('0x202')+_0x258b69[_0xaad8('0x48')]);}else{_0x258b69[_0xaad8('0x77')]+=_0x577025[_0xaad8('0x9e')];_0x258b69[_0xaad8('0x45')]=_0xaad8('0x203');for(var _0x185e15=0x0;_0x185e15<_0x577025[_0xaad8('0x9e')];_0x185e15+=0x1){_0x258b69['ivrTotalCallsDays']+=0x1;if(_[_0xaad8('0xb3')](_0x577025[_0x185e15])||_[_0xaad8('0xb3')](_0x577025[_0x185e15]['Contact'])||_[_0xaad8('0xb3')](_0x577025[_0x185e15][_0xaad8('0x174')][_0xaad8('0x175')])){_0x367861[_0xaad8('0xd7')](_0xaad8('0x204'),_0x258b69,_0x577025[_0x185e15]);}else{_0x367861[_0xaad8('0xc2')](_['pick'](_0x577025[_0x185e15],[_0xaad8('0x109'),'Contact.phone']))[_0xaad8('0xbe')](_0x367861['checkContactBlack'](_0x258b69,_0x577025[_0x185e15]))['catch'](_0x367861[_0xaad8('0xd6')]('[actionOriginateIvr]\x20',_0x258b69));}}}})['catch'](loggerGetContactDialer('[getContactCampaign2]',_0x258b69,_0x479427));}};Dialer[_0xaad8('0x20')]['handlePower']=function(_0x1b442b,_0x21831a){var _0x260b75=this;var _0x441218=[];var _0xae63a5=_0x21831a>=0x1?_0x21831a:0x1;if(_0x1b442b[_0xaad8('0x61')]===_0xaad8('0xa')){_0xae63a5=0x1;}var _0x18d6fe=Math['floor'](_0x1b442b[_0xaad8('0x58')]*_0xae63a5)-_0x1b442b[_0xaad8('0x77')]-_0x1b442b['temp'];emitVoiceQueueSummary(_0x1b442b);if(_0x1b442b[_0xaad8('0x205')]>0x0){var _0x27e6e6=_0x1b442b[_0xaad8('0x205')]-_0x1b442b[_0xaad8('0x77')]-_0x1b442b[_0xaad8('0x5d')]-_0x1b442b[_0xaad8('0xca')]-_0x1b442b[_0xaad8('0x5a')];if(_0x18d6fe>_0x27e6e6){_0x18d6fe=_0x27e6e6;}}if(_0x18d6fe>0x0){if(_0x1b442b[_0xaad8('0x61')]===_0xaad8('0xa')){_0x18d6fe=0x1;}if(_0x18d6fe>this[_0xaad8('0x2a')]){_0x18d6fe=this[_0xaad8('0x2a')];}_0x1b442b['temp']+=_0x18d6fe;for(var _0x46ce2d in this[_0xaad8('0x28')]){if(typeof this[_0xaad8('0x28')][_0x46ce2d]!==_0xaad8('0x9f')){if(this['agents'][_0x46ce2d][_0xaad8('0xe9')]===_0xaad8('0x206')&&this[_0xaad8('0x28')][_0x46ce2d][_0xaad8('0xb4')]===_0xaad8('0xe3')){_0x441218[_0xaad8('0x136')](this['agents'][_0x46ce2d]['id']);}}}this['getContactDialer'](_0x1b442b['id'],_0x441218,_0x18d6fe,_0x1b442b[_0xaad8('0x201')],_0x1b442b)[_0xaad8('0xbe')](function(_0x2eb078){_0x1b442b[_0xaad8('0xca')]-=_0x18d6fe;_0x1b442b[_0xaad8('0xca')]=_0x1b442b['temp']>0x0?_0x1b442b[_0xaad8('0xca')]:0x0;if(!checkContactEmpty(_0x2eb078)){_0x260b75[_0xaad8('0xbf')](_0x1b442b)[_0xaad8('0xbe')](sendMessageReschedule(_0x1b442b))[_0xaad8('0xb6')](loggerCatch(_0xaad8('0x207')));}else{_0x1b442b['originated']+=_0x2eb078[_0xaad8('0x9e')];_0x1b442b['message']=_0x1b442b[_0xaad8('0x61')]==='booked'?_0xaad8('0x17d'):_0xaad8('0x203');for(var _0x3fa776=0x0;_0x3fa776<_0x2eb078[_0xaad8('0x9e')];_0x3fa776+=0x1){if(_[_0xaad8('0xb3')](_0x2eb078[_0x3fa776])||_[_0xaad8('0xb3')](_0x2eb078[_0x3fa776]['Contact'])||_['isNil'](_0x2eb078[_0x3fa776][_0xaad8('0x174')][_0xaad8('0x175')])){_0x260b75[_0xaad8('0xd7')](_0xaad8('0x204'),_0x1b442b,_0x2eb078[_0x3fa776]);}else{_0x260b75[_0xaad8('0xc0')](_[_0xaad8('0xda')](_0x2eb078[_0x3fa776],['VoiceQueueId',_0xaad8('0x208')]))[_0xaad8('0xbe')](_0x260b75[_0xaad8('0x1ed')](_0x1b442b,_0x2eb078[_0x3fa776]))[_0xaad8('0xb6')](_0x260b75[_0xaad8('0xd6')](_0xaad8('0x204'),_0x1b442b));}}}})[_0xaad8('0xb6')](loggerGetContactDialer(_0xaad8('0x209'),_0x1b442b,_0x18d6fe));}};Dialer[_0xaad8('0x20')]['handlePredictive']=function(_0x5c180d){if(_0x5c180d[_0xaad8('0x205')]>0x0){var _0x312f11=_0x5c180d[_0xaad8('0x205')]-_0x5c180d[_0xaad8('0x77')]-_0x5c180d[_0xaad8('0x5d')];if(_0x312f11>0x0){this[_0xaad8('0x20a')](_0x5c180d);}else{loggerPredictiveCalls['info'](_0xaad8('0x20b'));}}else{this[_0xaad8('0x20a')](_0x5c180d);}};Dialer[_0xaad8('0x20')][_0xaad8('0x20a')]=function(_0x4c032b){var _0x4a1d1c=this;var _0x350486=[];_0x4c032b[_0xaad8('0x77')]+=0x1;for(var _0x3951e3 in this['agents']){if(typeof this[_0xaad8('0x28')][_0x3951e3]!==_0xaad8('0x9f')){if(this[_0xaad8('0x28')][_0x3951e3][_0xaad8('0xe9')]==='not_inuse'&&this[_0xaad8('0x28')][_0x3951e3][_0xaad8('0xb4')]==='reachable'){_0x350486[_0xaad8('0x136')](this[_0xaad8('0x28')][_0x3951e3]['id']);}}}this[_0xaad8('0xc9')](_0x4c032b['id'],_0x350486,0x1,_0x4c032b[_0xaad8('0x201')],_0x4c032b)[_0xaad8('0xbe')](function(_0x38d7be){if(!checkContactEmpty(_0x38d7be)){checkContactLowerLimitOriginate(_0x4c032b,0x1,0x0);_0x4a1d1c['countReScheduled'](_0x4c032b)['then'](sendMessageReschedule(_0x4c032b))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x4c032b[_0xaad8('0x45')]=_0xaad8('0x203');if(_[_0xaad8('0xb3')](_0x38d7be[0x0])||_['isNil'](_0x38d7be[0x0]['Contact'])||_[_0xaad8('0xb3')](_0x38d7be[0x0][_0xaad8('0x174')][_0xaad8('0x175')])){_0x4a1d1c['emptyContact']('[actionOriginate]\x20',_0x4c032b,_0x38d7be[0x0]);}else{_0x4a1d1c[_0xaad8('0xc0')](_[_0xaad8('0xda')](_0x38d7be[0x0],[_0xaad8('0xdd'),'Contact.phone']))['then'](_0x4a1d1c[_0xaad8('0x1ed')](_0x4c032b,_0x38d7be[0x0]))[_0xaad8('0xb6')](_0x4a1d1c[_0xaad8('0xd6')](_0xaad8('0x20c'),_0x4c032b));}}})['catch'](loggerGetContactDialer(_0xaad8('0x20d'),_0x4c032b,0x1));emitVoiceQueueSummary(_0x4c032b);};Dialer['prototype'][_0xaad8('0x1e4')]=function(_0x1810ab,_0x822503,_0x1499c5,_0x2f3d2c,_0x4c17b1,_0x6f3e20){loggerPredictive[_0xaad8('0x84')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xaad8('0x84')]('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',_0x1810ab);loggerPredictive[_0xaad8('0x84')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x822503);loggerPredictive['info'](_0xaad8('0x20e'),_0x1499c5);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x20f'),_0x2f3d2c);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x210'),_0x4c17b1);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x8d'));return new BPromise(function(_0x2d52a3,_0x38b7c1){if(_0x1810ab<=0x0||isNaN(_0x1810ab)){return _0x38b7c1(msgResponse(_0xaad8('0x211'),_0xaad8('0x4e'),_0xaad8('0x212')+_0x1810ab));}if(_0x1499c5<=0x0||isNaN(_0x1499c5)){return _0x38b7c1(msgResponse(_0xaad8('0x211'),_0xaad8('0x4e'),_0xaad8('0x213')+_0x1499c5));}if(_0x2f3d2c<=0x0||isNaN(_0x2f3d2c)){return _0x38b7c1(msgResponse(_0xaad8('0x211'),_0xaad8('0x4e'),_0xaad8('0x214')+_0x2f3d2c));}if(_0x822503<=0x0||isNaN(_0x822503)){return _0x38b7c1(msgResponse('[abandonmentRate]',_0xaad8('0x4e'),_0xaad8('0x215')+_0x822503));}if(_0x4c17b1<=0x0||isNaN(_0x4c17b1)){return _0x38b7c1(msgResponse(_0xaad8('0x211'),'Error',_0xaad8('0x216')+_0x4c17b1));}_0x6f3e20=_0x6f3e20||0x0;var _0x2c7abc=0x1/_0x1499c5;var _0x3c6215=0x0;var _0x3d3f18=0x0;var _0x14cf79=0x0;var _0x4a721d=0x0;for(var _0x323747=0x0;_0x14cf79<_0x4c17b1;_0x323747+=0x1){_0x3d3f18=_0x323747/_0x822503;_0x3c6215=(_0x2f3d2c*_0x3d3f18+_0x6f3e20)/_0x2c7abc;_0x14cf79=erlangb(_0x3c6215,_0x1810ab);_0x4a721d=_0x3c6215/_0x1810ab*(0x1-erlangb(_0x3c6215,_0x1810ab));}return _0x2d52a3({'erlangCalls':_0x323747,'erlangCallToSecond':_0x822503/_0x323747,'erlangAbandonmentRate':_0x14cf79,'erlangBusyFactor':_0x4a721d});});};Dialer[_0xaad8('0x20')][_0xaad8('0x1e5')]=function(_0x53a889,_0x4d7fcf,_0x44a120,_0x175078,_0x1bdc3c,_0x44abdc){loggerPredictive[_0xaad8('0x84')](_0xaad8('0x217'));loggerPredictive['info'](_0xaad8('0x218'),_0x53a889);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x219'),_0x4d7fcf);loggerPredictive[_0xaad8('0x84')]('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',_0x44a120);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x20f'),_0x175078);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x21a'),_0x1bdc3c);loggerPredictive[_0xaad8('0x84')](_0xaad8('0x8d'));return new BPromise(function(_0x5e71fa,_0x33ecfe){if(_0x53a889<=0x0||isNaN(_0x53a889)){return _0x33ecfe(msgResponse('[busyFactor]',_0xaad8('0x4e'),_0xaad8('0x212')+_0x53a889));}if(_0x44a120<=0x0||isNaN(_0x44a120)){return _0x33ecfe(msgResponse(_0xaad8('0x21b'),'Error',_0xaad8('0x213')+_0x44a120));}if(_0x175078<=0x0||isNaN(_0x175078)){return _0x33ecfe(msgResponse('[busyFactor]',_0xaad8('0x4e'),_0xaad8('0x214')+_0x175078));}if(_0x4d7fcf<=0x0||isNaN(_0x4d7fcf)){return _0x33ecfe(msgResponse(_0xaad8('0x21b'),_0xaad8('0x4e'),_0xaad8('0x215')+_0x4d7fcf));}if(_0x1bdc3c<=0x0||isNaN(_0x1bdc3c)){return _0x33ecfe(msgResponse(_0xaad8('0x21b'),'Error',_0xaad8('0x21c')+_0x1bdc3c));}_0x44abdc=_0x44abdc||0x0;var _0x407247=0x1/_0x44a120;var _0x34f214=0x0;var _0x6f6aa2=0x0;var _0x1e1e37=0x0;var _0x5cc107=0x0;for(var _0x4e2e46=0x0;_0x5cc107<_0x1bdc3c;_0x4e2e46+=0x1){_0x6f6aa2=_0x4e2e46/_0x4d7fcf;_0x34f214=(_0x175078*_0x6f6aa2+_0x44abdc)/_0x407247;_0x1e1e37=erlangb(_0x34f214,_0x53a889);_0x5cc107=_0x34f214/_0x53a889*(0x1-erlangb(_0x34f214,_0x53a889));}return _0x5e71fa({'erlangCalls':_0x4e2e46,'erlangCallToSecond':_0x4d7fcf/_0x4e2e46,'erlangAbandonmentRate':_0x1e1e37,'erlangBusyFactor':_0x5cc107});});};module[_0xaad8('0x21d')]=Dialer;
\ No newline at end of file
index d0ef690..d47fe3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ba3=['responsetime','droptime','endtime','holdtime','talktime','membername','reason','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','diff','scheduledat','type','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','starttime'];(function(_0x365bee,_0x3c8023){var _0x3ea970=function(_0x2e73bb){while(--_0x2e73bb){_0x365bee['push'](_0x365bee['shift']());}};_0x3ea970(++_0x3c8023);}(_0x1ba3,0x154));var _0x31ba=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x1ba3[_0x2235bf];return _0x4c3a64;};'use strict';var util=require(_0x31ba('0x0'));var _=require(_0x31ba('0x1'));var moment=require(_0x31ba('0x2'));function getSeconds(_0x5ca87e,_0x58df8f){var _0x2ecca9=moment(_0x5ca87e)['milliseconds'](0x0);var _0x4d2e43=moment(_0x58df8f)['milliseconds'](0x0);return _0x2ecca9[_0x31ba('0x3')](_0x4d2e43,'seconds');}function QueueCallerAbandon(_0x13debe,_0x36992d){this[_0x31ba('0x4')]=_0x13debe[_0x31ba('0x4')];this[_0x31ba('0x5')]=_0x13debe['type'];this['campaigntype']=_0x13debe[_0x31ba('0x5')]===_0x31ba('0x6')?_0x31ba('0x7'):_0x13debe['type'];this['countbusyretry']=_0x13debe['countbusyretry'];this[_0x31ba('0x8')]=_0x13debe[_0x31ba('0x8')];this[_0x31ba('0x9')]=_0x13debe[_0x31ba('0x9')];this[_0x31ba('0xa')]=_0x13debe['countbusyretry']+_0x13debe[_0x31ba('0x8')]+_0x13debe[_0x31ba('0x9')]+_0x13debe[_0x31ba('0xb')]+_0x13debe[_0x31ba('0xc')]+_0x13debe[_0x31ba('0xd')]+_0x13debe[_0x31ba('0xe')]+_0x13debe[_0x31ba('0xf')];this['countnosuchnumberretry']=_0x13debe[_0x31ba('0xb')];this['countdropretry']=_0x13debe[_0x31ba('0xc')];this['countabandonedretry']=_0x13debe[_0x31ba('0xd')];this[_0x31ba('0xe')]=_0x13debe[_0x31ba('0xe')];this['countagentrejectretry']=_0x13debe[_0x31ba('0xf')];this[_0x31ba('0x10')]=_0x36992d['uniqueid'];this[_0x31ba('0x11')]=_0x13debe['name'];this[_0x31ba('0x12')]=_0x13debe['number'];this[_0x31ba('0x13')]=_0x13debe[_0x31ba('0x13')];this['responsetime']=_0x13debe[_0x31ba('0x14')];this[_0x31ba('0x15')]=_0x13debe[_0x31ba('0x15')];this[_0x31ba('0x16')]=this[_0x31ba('0x15')];this['ringtime']=getSeconds(_0x13debe['responsetime'],_0x13debe[_0x31ba('0x13')]);this[_0x31ba('0x17')]=getSeconds(this['droptime'],_0x13debe[_0x31ba('0x14')]);this[_0x31ba('0x18')]=0x0;this[_0x31ba('0x7')]=_0x36992d[_0x31ba('0x7')];this[_0x31ba('0x19')]=_0x36992d['connectedlinename'];this[_0x31ba('0x1a')]=_0x36992d[_0x31ba('0x1a')];this['callback']=_0x13debe['callback'];this['callbackuniqueid']=_0x13debe['callbackuniqueid'];this['callbackat']=_0x13debe[_0x31ba('0x1b')];this[_0x31ba('0x1c')]=_0x13debe[_0x31ba('0x1c')];this['ContactId']=_0x13debe[_0x31ba('0x1d')];this['ListId']=_0x13debe['ListId'];this[_0x31ba('0x1e')]=_0x13debe['UserId'];this[_0x31ba('0x1f')]=_0x13debe[_0x31ba('0x1f')];this[_0x31ba('0x20')]=_0x13debe[_0x31ba('0x20')];this['originatecalleridnum']=_0x13debe[_0x31ba('0x21')]||'';this[_0x31ba('0x22')]=_0x13debe[_0x31ba('0x22')]||'';}module[_0x31ba('0x23')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xd527=['ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme'];(function(_0x5b6988,_0x67e002){var _0x4e2cc9=function(_0x1f3a40){while(--_0x1f3a40){_0x5b6988['push'](_0x5b6988['shift']());}};_0x4e2cc9(++_0x67e002);}(_0xd527,0x87));var _0x7d52=function(_0x23c73d,_0x357b21){_0x23c73d=_0x23c73d-0x0;var _0x36ba47=_0xd527[_0x23c73d];return _0x36ba47;};'use strict';var util=require(_0x7d52('0x0'));var _=require(_0x7d52('0x1'));var moment=require(_0x7d52('0x2'));function getSeconds(_0x2c0ebb,_0x44b57e){var _0x2eb54b=moment(_0x2c0ebb)[_0x7d52('0x3')](0x0);var _0x7998ce=moment(_0x44b57e)[_0x7d52('0x3')](0x0);return _0x2eb54b[_0x7d52('0x4')](_0x7998ce,_0x7d52('0x5'));}function QueueCallerAbandon(_0x373119,_0x2a72c8){this[_0x7d52('0x6')]=_0x373119[_0x7d52('0x6')];this['type']=_0x373119['type'];this['campaigntype']=_0x373119[_0x7d52('0x7')]===_0x7d52('0x8')?'queue':_0x373119['type'];this[_0x7d52('0x9')]=_0x373119[_0x7d52('0x9')];this[_0x7d52('0xa')]=_0x373119['countcongestionretry'];this[_0x7d52('0xb')]=_0x373119[_0x7d52('0xb')];this[_0x7d52('0xc')]=_0x373119[_0x7d52('0x9')]+_0x373119[_0x7d52('0xa')]+_0x373119[_0x7d52('0xb')]+_0x373119[_0x7d52('0xd')]+_0x373119[_0x7d52('0xe')]+_0x373119[_0x7d52('0xf')]+_0x373119[_0x7d52('0x10')]+_0x373119[_0x7d52('0x11')];this[_0x7d52('0xd')]=_0x373119[_0x7d52('0xd')];this['countdropretry']=_0x373119[_0x7d52('0xe')];this[_0x7d52('0xf')]=_0x373119[_0x7d52('0xf')];this[_0x7d52('0x10')]=_0x373119[_0x7d52('0x10')];this[_0x7d52('0x11')]=_0x373119[_0x7d52('0x11')];this['uniqueid']=_0x2a72c8[_0x7d52('0x12')];this[_0x7d52('0x13')]=_0x373119[_0x7d52('0x14')];this[_0x7d52('0x15')]=_0x373119['number'];this[_0x7d52('0x16')]=_0x373119[_0x7d52('0x16')];this[_0x7d52('0x17')]=_0x373119[_0x7d52('0x17')];this[_0x7d52('0x18')]=_0x373119[_0x7d52('0x18')];this[_0x7d52('0x19')]=this[_0x7d52('0x18')];this[_0x7d52('0x1a')]=getSeconds(_0x373119[_0x7d52('0x17')],_0x373119[_0x7d52('0x16')]);this[_0x7d52('0x1b')]=getSeconds(this['droptime'],_0x373119[_0x7d52('0x17')]);this[_0x7d52('0x1c')]=0x0;this[_0x7d52('0x1d')]=_0x2a72c8['queue'];this[_0x7d52('0x1e')]=_0x2a72c8[_0x7d52('0x1f')];this[_0x7d52('0x20')]=_0x2a72c8[_0x7d52('0x20')];this[_0x7d52('0x21')]=_0x373119[_0x7d52('0x21')];this[_0x7d52('0x22')]=_0x373119[_0x7d52('0x22')];this[_0x7d52('0x23')]=_0x373119['callbackat'];this[_0x7d52('0x24')]=_0x373119['recallme'];this[_0x7d52('0x25')]=_0x373119['ContactId'];this['ListId']=_0x373119['ListId'];this[_0x7d52('0x26')]=_0x373119['UserId'];this[_0x7d52('0x27')]=_0x373119[_0x7d52('0x27')];this[_0x7d52('0x28')]=_0x373119['CampaignId'];this[_0x7d52('0x29')]=_0x373119[_0x7d52('0x29')]||'';this[_0x7d52('0x2a')]=_0x373119[_0x7d52('0x2a')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index 36393ef..b1ba561 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(_0x36619a,_0x5cbaae){var _0x8b189b=function(_0x48e42b){while(--_0x48e42b){_0x36619a['push'](_0x36619a['shift']());}};_0x8b189b(++_0x5cbaae);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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(_0x3fb67b,_0x47ed08){var _0x541aa9=function(_0x4746d2){while(--_0x4746d2){_0x3fb67b['push'](_0x3fb67b['shift']());}};_0x541aa9(++_0x47ed08);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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 19c2021..62f55bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843b=['calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','then','.pdf','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','syncOriginateResponse','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','faxstatusstring','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','isValid','Trunk\x20Reachable','format','%s/%s.tif','dir','Convert\x20pdf\x20to\x20tif','Action','ext','isTrunkReachable','isNil','active','trunks','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','exports','util','lodash','bluebird','uuid','path','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','actions','syncNewchannel','bind','varset','newstate','syncNewState','syncNewExten','faxstatus','syncFaxStatus','receivefax','hangup','syncHangup','originateresponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','syncVarSet','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','resolution','transferrate'];(function(_0x12e65e,_0x1f8da8){var _0x5804fc=function(_0x131c25){while(--_0x131c25){_0x12e65e['push'](_0x12e65e['shift']());}};_0x5804fc(++_0x1f8da8);}(_0x843b,0x186));var _0xb843=function(_0x48f65d,_0x512f2e){_0x48f65d=_0x48f65d-0x0;var _0x27ba21=_0x843b[_0x48f65d];return _0x27ba21;};'use strict';var util=require(_0xb843('0x0'));var _=require(_0xb843('0x1'));var BPromise=require(_0xb843('0x2'));var uuid=require(_0xb843('0x3'));var moment=require('moment');var path=require(_0xb843('0x4'));var tiff2pdf=require(_0xb843('0x5'));var gs=require(_0xb843('0x6'));var logger=require(_0xb843('0x7'))(_0xb843('0x8'));var ami=require('../ami');var rpcDb=require(_0xb843('0x9'));var Channel=require(_0xb843('0xa'));var ut=require(_0xb843('0xb'));var Action=require(_0xb843('0xc'));var faxAccount=require(_0xb843('0xd'));var attachment=require(_0xb843('0xe'));var faxMessage=require(_0xb843('0xf'));function Fax(_0x3ee01e){this[_0xb843('0x10')]={};this[_0xb843('0x11')]=_0x3ee01e[_0xb843('0x11')];this['trunks']=_0x3ee01e['trunks'];this[_0xb843('0x12')]={};ami['on']('newchannel',this[_0xb843('0x13')][_0xb843('0x14')](this));ami['on'](_0xb843('0x15'),this['syncVarSet']['bind'](this));ami['on'](_0xb843('0x16'),this[_0xb843('0x17')][_0xb843('0x14')](this));ami['on']('newexten',this[_0xb843('0x18')][_0xb843('0x14')](this));ami['on'](_0xb843('0x19'),this[_0xb843('0x1a')][_0xb843('0x14')](this));ami['on'](_0xb843('0x1b'),this['syncReceiveFax'][_0xb843('0x14')](this));ami['on'](_0xb843('0x1c'),this[_0xb843('0x1d')][_0xb843('0x14')](this));ami['on'](_0xb843('0x1e'),this['syncOriginateResponse'][_0xb843('0x14')](this));}Fax[_0xb843('0x1f')][_0xb843('0x13')]=function(_0x4853ee){if(_0x4853ee[_0xb843('0x20')]===_0xb843('0x21')){for(var _0x4ff8c9 in this[_0xb843('0x11')]){if(this['faxAccounts'][_0xb843('0x22')](_0x4ff8c9)){if(_0x4853ee[_0xb843('0x23')]===this[_0xb843('0x11')][_0x4ff8c9][_0xb843('0x24')]){this[_0xb843('0x10')][_0x4853ee['uniqueid']]={};this['channels'][_0x4853ee[_0xb843('0x25')]][_0xb843('0x26')]=_0x4853ee[_0xb843('0x26')];this[_0xb843('0x10')][_0x4853ee[_0xb843('0x25')]]['id']=this[_0xb843('0x11')][_0x4ff8c9]['id'];this['channels'][_0x4853ee[_0xb843('0x25')]][_0xb843('0x27')]=this[_0xb843('0x11')][_0x4ff8c9][_0xb843('0x27')];logger[_0xb843('0x28')](_0x4853ee[_0xb843('0x25')],_0xb843('0x29'));}}}}if(this[_0xb843('0x12')][_0x4853ee['uniqueid']]){this['channels'][_0x4853ee['uniqueid']]={};this[_0xb843('0x10')][_0x4853ee[_0xb843('0x25')]][_0xb843('0x26')]=_0x4853ee[_0xb843('0x26')];logger[_0xb843('0x28')](_0x4853ee[_0xb843('0x25')],_0xb843('0x29'));}};Fax['prototype'][_0xb843('0x2a')]=function(_0x50e9ac){if(this[_0xb843('0x10')][_0x50e9ac[_0xb843('0x25')]]){for(var _0x54340e in _0x50e9ac[_0xb843('0x2b')]){if(_0x50e9ac['variable'][_0xb843('0x22')](_0x54340e)){this[_0xb843('0x10')][_0x50e9ac[_0xb843('0x25')]][_0x54340e]=_0x50e9ac[_0xb843('0x2c')];}}}};Fax['prototype']['syncNewState']=function(_0x287b9d){if(this[_0xb843('0x10')][_0x287b9d['uniqueid']]){this['channels'][_0x287b9d[_0xb843('0x25')]][_0xb843('0x2d')]=_0x287b9d['channelstate'];this[_0xb843('0x10')][_0x287b9d[_0xb843('0x25')]][_0xb843('0x2e')]=_0x287b9d['channelstatedesc'];}};Fax[_0xb843('0x1f')]['syncNewExten']=function(_0x1a476a){if(this[_0xb843('0x10')][_0x1a476a[_0xb843('0x25')]]){for(var _0x408ff3 in _0x1a476a[_0xb843('0x2b')]){if(_0x1a476a[_0xb843('0x2b')][_0xb843('0x22')](_0x408ff3)){this[_0xb843('0x10')][_0x1a476a[_0xb843('0x25')]][_0x408ff3]=_0x1a476a[_0xb843('0x2c')];}}}};Fax[_0xb843('0x1f')][_0xb843('0x1a')]=function(_0x5ce1dd){if(this[_0xb843('0x10')][_0x5ce1dd[_0xb843('0x25')]]){this[_0xb843('0x10')][_0x5ce1dd[_0xb843('0x25')]]['operation']=_0x5ce1dd[_0xb843('0x2f')];this[_0xb843('0x10')][_0x5ce1dd[_0xb843('0x25')]]['status']=_0x5ce1dd[_0xb843('0x30')];this[_0xb843('0x10')][_0x5ce1dd[_0xb843('0x25')]][_0xb843('0x24')]=_0x5ce1dd[_0xb843('0x24')];this[_0xb843('0x10')][_0x5ce1dd[_0xb843('0x25')]]['filename']=_0x5ce1dd[_0xb843('0x31')];logger[_0xb843('0x28')](_0x5ce1dd['uniqueid'],_0xb843('0x32'));}};Fax['prototype'][_0xb843('0x33')]=function(_0x4cd0f3){var _0x3bbd1e=this;if(this[_0xb843('0x10')][_0x4cd0f3['uniqueid']]){var _0x19d015=this[_0xb843('0x10')][_0x4cd0f3[_0xb843('0x25')]]['id'];this[_0xb843('0x10')][_0x4cd0f3[_0xb843('0x25')]]['remotestationid']=_0x4cd0f3['remotestationid'];this[_0xb843('0x10')][_0x4cd0f3['uniqueid']]['pagestransferred']=_0x4cd0f3['pagestransferred'];this['channels'][_0x4cd0f3[_0xb843('0x25')]][_0xb843('0x24')]=_0x4cd0f3[_0xb843('0x24')];this[_0xb843('0x10')][_0x4cd0f3[_0xb843('0x25')]][_0xb843('0x34')]=_0x4cd0f3[_0xb843('0x34')];this['channels'][_0x4cd0f3['uniqueid']]['transferrate']=_0x4cd0f3[_0xb843('0x35')];this['channels'][_0x4cd0f3['uniqueid']][_0xb843('0x31')]=_0x4cd0f3[_0xb843('0x31')];this[_0xb843('0x10')][_0x4cd0f3[_0xb843('0x25')]][_0xb843('0x36')]=_0x4cd0f3[_0xb843('0x36')];if(this[_0xb843('0x10')][_0x4cd0f3[_0xb843('0x25')]]['pagestransferred']>0x0){tiff2pdf(_0x4cd0f3[_0xb843('0x31')],'/var/opt/motion2/server/files/attachments/',function(_0x2320cd){logger[_0xb843('0x28')](_0x4cd0f3[_0xb843('0x25')],_0xb843('0x37'),_0x2320cd[_0xb843('0x38')]);attachment[_0xb843('0x39')]({'name':path[_0xb843('0x3a')](_0x4cd0f3['filename'])[_0xb843('0x27')],'basename':path[_0xb843('0x3a')](_0x4cd0f3[_0xb843('0x31')])['name']+'.pdf','type':_0xb843('0x3b')})[_0xb843('0x3c')](function(_0x4d2a38){faxAccount['notify'](_0x19d015,{'from':_0x4cd0f3[_0xb843('0x36')],'mapKey':_0xb843('0x8'),'body':path[_0xb843('0x3a')](_0x4cd0f3[_0xb843('0x31')])[_0xb843('0x27')]+_0xb843('0x3d'),'AttachmentId':_0x4d2a38['id']})[_0xb843('0x3e')](function(_0x207f96){logger[_0xb843('0x3f')](_0x4cd0f3[_0xb843('0x25')],_0xb843('0x40'),JSON[_0xb843('0x41')](_0x207f96));});})['catch'](function(_0x58d6e2){logger[_0xb843('0x3f')](_0x4cd0f3[_0xb843('0x25')],_0xb843('0x42'),JSON[_0xb843('0x41')](_0x58d6e2));});});}logger[_0xb843('0x28')](_0x4cd0f3['uniqueid'],_0xb843('0x42'));}};Fax['prototype'][_0xb843('0x43')]=function(_0x4cdbe0){if(this[_0xb843('0x12')][_0x4cdbe0[_0xb843('0x25')]]){_['merge'](this['channels'][_0x4cdbe0[_0xb843('0x25')]],_[_0xb843('0x44')](_0x4cdbe0,[_0xb843('0x45'),_0xb843('0x46')]));}};function updateStatus(_0x29273f){if(_0x29273f[_0xb843('0x47')]){faxMessage[_0xb843('0x48')](_0x29273f['AttachmentId'],{'failMessage':_0xb843('0x49')})[_0xb843('0x3c')](function(_0x4e1a73){ut[_0xb843('0x4a')](_0xb843('0x4b'),_0x4e1a73);})[_0xb843('0x3e')](function(_0x5b13a3){ut['logger']('[Fax][Message][Error][NoUpdate1]',_0x5b13a3);});}else{ut[_0xb843('0x4a')](_0xb843('0x4c'));}}Fax[_0xb843('0x1f')][_0xb843('0x4d')]=function(_0x829633,_0x5d2409,_0x5c7f6e){var _0x56e276=this;var _0x8e37b5={};if(_0x5d2409){_0x8e37b5={'read':_0x5d2409};}else{_0x8e37b5={'failMessage':_0x5c7f6e};}if(this[_0xb843('0x12')][_0x829633][_0xb843('0x47')]){faxMessage[_0xb843('0x48')](this[_0xb843('0x12')][_0x829633]['AttachmentId'],_0x8e37b5)[_0xb843('0x3c')](function(_0x436ac3){ut['logger']('[Fax][Message][Updated]',_0x436ac3);})[_0xb843('0x3e')](function(_0x16e7ed){ut[_0xb843('0x4a')](_0xb843('0x4e'),_0x16e7ed);})['finally'](function(){delete _0x56e276[_0xb843('0x10')][_0x829633];delete _0x56e276[_0xb843('0x12')][_0x829633];});}else{ut[_0xb843('0x4a')](_0xb843('0x4f'));delete this[_0xb843('0x10')][_0x829633];delete this[_0xb843('0x12')][_0x829633];}};Fax[_0xb843('0x1f')][_0xb843('0x1d')]=function(_0x8314b9){var _0x5591af=this;if(this[_0xb843('0x10')][_0x8314b9[_0xb843('0x25')]]){if(this[_0xb843('0x12')][_0x8314b9['uniqueid']]){this[_0xb843('0x10')][_0x8314b9[_0xb843('0x25')]]['id']=this[_0xb843('0x12')][_0x8314b9[_0xb843('0x25')]]['id'];this[_0xb843('0x10')][_0x8314b9[_0xb843('0x25')]][_0xb843('0x27')]=this['actions'][_0x8314b9[_0xb843('0x25')]][_0xb843('0x27')];}logger[_0xb843('0x28')](_0x8314b9[_0xb843('0x25')],this[_0xb843('0x12')][_0x8314b9[_0xb843('0x25')]]?'\x20hangup\x20sendFile\x20':_0xb843('0x50'),JSON[_0xb843('0x41')](this[_0xb843('0x10')][_0x8314b9[_0xb843('0x25')]]));if(this['actions'][_0x8314b9[_0xb843('0x25')]]){if(this['channels'][_0x8314b9[_0xb843('0x25')]][_0xb843('0x51')]>0x0&&this[_0xb843('0x10')][_0x8314b9[_0xb843('0x25')]][_0xb843('0x19')]==='SUCCESS'){this[_0xb843('0x4d')](_0x8314b9[_0xb843('0x25')],!![]);}else{this[_0xb843('0x4d')](_0x8314b9[_0xb843('0x25')],![],this[_0xb843('0x10')][_0x8314b9['uniqueid']][_0xb843('0x52')]?'SENDING\x20FAILED:\x20'+this[_0xb843('0x10')][_0x8314b9[_0xb843('0x25')]][_0xb843('0x52')]:'SENDING\x20FAILED');}}}};Fax[_0xb843('0x1f')][_0xb843('0x53')]=function(_0x374b7e){var _0x5d5f19=this;return new BPromise(function(_0x5c4861,_0x56aa0d){_0x5d5f19[_0xb843('0x54')](_0x374b7e,_0x5d5f19[_0xb843('0x11')][_0x374b7e[_0xb843('0x55')]])[_0xb843('0x3c')](function(_0x3fcf68){ut[_0xb843('0x4a')](_0xb843('0x56'),_0x3fcf68);_0x5c4861(ut[_0xb843('0x38')](_0xb843('0x57')));})[_0xb843('0x3e')](function(_0x2e5dc1){ut[_0xb843('0x4a')](_0xb843('0x58'),_0x2e5dc1);updateStatus(_0x374b7e);_0x56aa0d(ut[_0xb843('0x38')](_0xb843('0x59')));});});};Fax['prototype']['checkAfterSend']=function(_0x335e62){var _0x55cf12=this;return new BPromise(function(_0x18b979,_0x235bb7){var _0x4e1210=_0x55cf12['checkTrunk'](_0x55cf12[_0xb843('0x11')][_0x335e62[_0xb843('0x55')]]['Trunk'],_0x335e62);if(_0x4e1210[_0xb843('0x5a')]){_0x18b979(ut[_0xb843('0x38')](_0xb843('0x5b')));}else{_0x235bb7(ut[_0xb843('0x38')](_0x4e1210[_0xb843('0x38')]));}});};function originate(_0x587f87,_0x184094,_0x1cf48d){return new BPromise(function(_0x407f64,_0x4d45bb){if(_0x1cf48d){var _0x3afb2c=util[_0xb843('0x5c')]('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',path[_0xb843('0x3a')](_0x587f87[_0xb843('0x4')])[_0xb843('0x27')],_0x587f87[_0xb843('0x4')]);gs['execute'](_0x3afb2c)[_0xb843('0x3c')](function(){_0x587f87['path']=util[_0xb843('0x5c')](_0xb843('0x5d'),path[_0xb843('0x3a')](_0x587f87[_0xb843('0x4')])[_0xb843('0x5e')],path[_0xb843('0x3a')](_0x587f87['path'])[_0xb843('0x27')]);_0x184094['XMF-PATH']=_0x587f87[_0xb843('0x4')];ut['logger'](_0xb843('0x5f'),'');ami['Action'](ut['variablesAction'](_0x587f87,_0x184094))[_0xb843('0x3c')](function(_0x8e8206){_0x407f64(_0x8e8206);})[_0xb843('0x3e')](function(_0x4b75ae){_0x4d45bb(_0x4b75ae);});})[_0xb843('0x3e')](function(_0x494967){_0x4d45bb(_0x494967);});}else{ami[_0xb843('0x60')](ut['variablesAction'](_0x587f87,_0x184094))[_0xb843('0x3c')](function(_0x175dd1){_0x407f64(_0x175dd1);})[_0xb843('0x3e')](function(_0x833d7a){_0x4d45bb(_0x833d7a);});}});}Fax[_0xb843('0x1f')][_0xb843('0x54')]=function(_0x4e7047,_0x3796b7){var _0x9a3767=this;return new BPromise(function(_0x32f400,_0x3256e7){var _0x17f05b=uuid['v4']();var _0x211808=ut['addVariables'](_0x4e7047,_0x3796b7);_0x9a3767['actions'][_0x17f05b]=new Action(_0x17f05b,_0x3796b7,_0x4e7047);var _0x2dc890=_0x9a3767[_0xb843('0x12')][_0x17f05b];if(path[_0xb843('0x3a')](_0x4e7047[_0xb843('0x4')])[_0xb843('0x61')]==='.pdf'){originate(_0x2dc890,_0x211808,!![])['then'](function(_0x291d65){_0x32f400(_0x291d65);})[_0xb843('0x3e')](function(_0x5de754){_0x3256e7(_0x5de754);});}else{originate(_0x2dc890,_0x211808,![])[_0xb843('0x3c')](function(_0x1d1d4b){_0x32f400(_0x1d1d4b);})[_0xb843('0x3e')](function(_0x9cbee){_0x3256e7(_0x9cbee);});}});};Fax[_0xb843('0x1f')][_0xb843('0x62')]=function(_0x447d86){return!_['isNil'](_0x447d86)&&!_[_0xb843('0x63')](_0x447d86[_0xb843('0x27')])&&!_[_0xb843('0x63')](_0x447d86['active'])&&_0x447d86[_0xb843('0x64')]&&!_['isNil'](this[_0xb843('0x65')][util[_0xb843('0x5c')]('SIP/%s',_0x447d86[_0xb843('0x27')])])&&!_[_0xb843('0x63')](this[_0xb843('0x65')][util[_0xb843('0x5c')](_0xb843('0x66'),_0x447d86[_0xb843('0x27')])][_0xb843('0x30')])&&(this[_0xb843('0x65')][util[_0xb843('0x5c')](_0xb843('0x66'),_0x447d86[_0xb843('0x27')])][_0xb843('0x30')]===_0xb843('0x67')||this[_0xb843('0x65')][util['format'](_0xb843('0x66'),_0x447d86[_0xb843('0x27')])][_0xb843('0x30')]===_0xb843('0x68'));};Fax[_0xb843('0x1f')]['checkTrunk']=function(_0x3b2a5e,_0xf3c392){if(!this[_0xb843('0x62')](_0x3b2a5e)){ut[_0xb843('0x4a')](_0xb843('0x69'),_[_0xb843('0x63')](_0x3b2a5e)?'':_0x3b2a5e[_0xb843('0x27')]+_0xb843('0x6a'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xb843('0x63')](_0xf3c392['fax'])){ut[_0xb843('0x4a')](_0xb843('0x6b'),JSON[_0xb843('0x41')](_0xf3c392));return{'isValid':![],'message':_0xb843('0x6c')};}if(_['isNil'](_0xf3c392[_0xb843('0x4')])){ut[_0xb843('0x4a')](_0xb843('0x6d'),JSON[_0xb843('0x41')](_0xf3c392));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xb843('0x6e')]=Fax;
\ No newline at end of file
+var _0x7a6c=['isNil','active','SIP/%s','reachable','unmonitored','checkTrunk','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','bluebird','uuid','moment','path','./util/gs','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','varset','syncVarSet','bind','newstate','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','create','parse','.pdf','application/pdf','notify','fax','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','actions','merge','pick','response','AttachmentId','update','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','message','Fax\x20received','Fax\x20failed','FaxAccountId','Trunk','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','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable'];(function(_0x719dde,_0x45cfb7){var _0x15cf93=function(_0x148fd3){while(--_0x148fd3){_0x719dde['push'](_0x719dde['shift']());}};_0x15cf93(++_0x45cfb7);}(_0x7a6c,0x84));var _0xc7a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7a6c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xc7a6('0x0'));var _=require('lodash');var BPromise=require(_0xc7a6('0x1'));var uuid=require(_0xc7a6('0x2'));var moment=require(_0xc7a6('0x3'));var path=require(_0xc7a6('0x4'));var tiff2pdf=require('tiff2pdf');var gs=require(_0xc7a6('0x5'));var logger=require('../../../config/logger')('fax');var ami=require('../ami');var rpcDb=require(_0xc7a6('0x6'));var Channel=require('./channel');var ut=require(_0xc7a6('0x7'));var Action=require(_0xc7a6('0x8'));var faxAccount=require(_0xc7a6('0x9'));var attachment=require(_0xc7a6('0xa'));var faxMessage=require(_0xc7a6('0xb'));function Fax(_0x5473a6){this[_0xc7a6('0xc')]={};this['faxAccounts']=_0x5473a6[_0xc7a6('0xd')];this[_0xc7a6('0xe')]=_0x5473a6[_0xc7a6('0xe')];this['actions']={};ami['on'](_0xc7a6('0xf'),this['syncNewchannel']['bind'](this));ami['on'](_0xc7a6('0x10'),this[_0xc7a6('0x11')][_0xc7a6('0x12')](this));ami['on'](_0xc7a6('0x13'),this['syncNewState'][_0xc7a6('0x12')](this));ami['on'](_0xc7a6('0x14'),this[_0xc7a6('0x15')][_0xc7a6('0x12')](this));ami['on']('faxstatus',this[_0xc7a6('0x16')][_0xc7a6('0x12')](this));ami['on'](_0xc7a6('0x17'),this[_0xc7a6('0x18')][_0xc7a6('0x12')](this));ami['on'](_0xc7a6('0x19'),this[_0xc7a6('0x1a')]['bind'](this));ami['on'](_0xc7a6('0x1b'),this[_0xc7a6('0x1c')][_0xc7a6('0x12')](this));}Fax[_0xc7a6('0x1d')]['syncNewchannel']=function(_0x40573f){if(_0x40573f[_0xc7a6('0x1e')]===_0xc7a6('0x1f')){for(var _0x400179 in this['faxAccounts']){if(this[_0xc7a6('0xd')][_0xc7a6('0x20')](_0x400179)){if(_0x40573f[_0xc7a6('0x21')]===this['faxAccounts'][_0x400179][_0xc7a6('0x22')]){this[_0xc7a6('0xc')][_0x40573f[_0xc7a6('0x23')]]={};this[_0xc7a6('0xc')][_0x40573f[_0xc7a6('0x23')]]['channel']=_0x40573f[_0xc7a6('0x24')];this[_0xc7a6('0xc')][_0x40573f[_0xc7a6('0x23')]]['id']=this[_0xc7a6('0xd')][_0x400179]['id'];this[_0xc7a6('0xc')][_0x40573f[_0xc7a6('0x23')]][_0xc7a6('0x25')]=this[_0xc7a6('0xd')][_0x400179]['name'];logger[_0xc7a6('0x26')](_0x40573f[_0xc7a6('0x23')],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x40573f['uniqueid']]){this[_0xc7a6('0xc')][_0x40573f[_0xc7a6('0x23')]]={};this[_0xc7a6('0xc')][_0x40573f['uniqueid']][_0xc7a6('0x24')]=_0x40573f['channel'];logger['info'](_0x40573f[_0xc7a6('0x23')],_0xc7a6('0x27'));}};Fax[_0xc7a6('0x1d')][_0xc7a6('0x11')]=function(_0x419314){if(this['channels'][_0x419314[_0xc7a6('0x23')]]){for(var _0x3b1c33 in _0x419314[_0xc7a6('0x28')]){if(_0x419314['variable'][_0xc7a6('0x20')](_0x3b1c33)){this[_0xc7a6('0xc')][_0x419314[_0xc7a6('0x23')]][_0x3b1c33]=_0x419314[_0xc7a6('0x29')];}}}};Fax[_0xc7a6('0x1d')][_0xc7a6('0x2a')]=function(_0x279cee){if(this['channels'][_0x279cee[_0xc7a6('0x23')]]){this[_0xc7a6('0xc')][_0x279cee[_0xc7a6('0x23')]][_0xc7a6('0x2b')]=_0x279cee[_0xc7a6('0x2b')];this['channels'][_0x279cee[_0xc7a6('0x23')]][_0xc7a6('0x2c')]=_0x279cee[_0xc7a6('0x2c')];}};Fax['prototype']['syncNewExten']=function(_0x244fc8){if(this['channels'][_0x244fc8[_0xc7a6('0x23')]]){for(var _0x54a48e in _0x244fc8[_0xc7a6('0x28')]){if(_0x244fc8['variable'][_0xc7a6('0x20')](_0x54a48e)){this[_0xc7a6('0xc')][_0x244fc8['uniqueid']][_0x54a48e]=_0x244fc8[_0xc7a6('0x29')];}}}};Fax['prototype'][_0xc7a6('0x16')]=function(_0x15348f){if(this[_0xc7a6('0xc')][_0x15348f[_0xc7a6('0x23')]]){this[_0xc7a6('0xc')][_0x15348f[_0xc7a6('0x23')]]['operation']=_0x15348f[_0xc7a6('0x2d')];this[_0xc7a6('0xc')][_0x15348f[_0xc7a6('0x23')]][_0xc7a6('0x2e')]=_0x15348f[_0xc7a6('0x2e')];this['channels'][_0x15348f['uniqueid']][_0xc7a6('0x22')]=_0x15348f['localstationid'];this[_0xc7a6('0xc')][_0x15348f['uniqueid']][_0xc7a6('0x2f')]=_0x15348f['filename'];logger[_0xc7a6('0x26')](_0x15348f[_0xc7a6('0x23')],'\x20syncFaxStatus\x20');}};Fax['prototype'][_0xc7a6('0x18')]=function(_0x25bca5){var _0x159308=this;if(this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]]){var _0x116536=this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]]['id'];this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]][_0xc7a6('0x30')]=_0x25bca5[_0xc7a6('0x30')];this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]]['pagestransferred']=_0x25bca5[_0xc7a6('0x31')];this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]][_0xc7a6('0x22')]=_0x25bca5['localstationid'];this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]][_0xc7a6('0x32')]=_0x25bca5['resolution'];this['channels'][_0x25bca5[_0xc7a6('0x23')]][_0xc7a6('0x33')]=_0x25bca5[_0xc7a6('0x33')];this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]][_0xc7a6('0x2f')]=_0x25bca5[_0xc7a6('0x2f')];this[_0xc7a6('0xc')][_0x25bca5[_0xc7a6('0x23')]][_0xc7a6('0x34')]=_0x25bca5[_0xc7a6('0x34')];if(this[_0xc7a6('0xc')][_0x25bca5['uniqueid']][_0xc7a6('0x31')]>0x0){tiff2pdf(_0x25bca5[_0xc7a6('0x2f')],_0xc7a6('0x35'),function(_0x364a3d){logger[_0xc7a6('0x26')](_0x25bca5[_0xc7a6('0x23')],_0xc7a6('0x36'),_0x364a3d['message']);attachment[_0xc7a6('0x37')]({'name':path[_0xc7a6('0x38')](_0x25bca5[_0xc7a6('0x2f')])['name'],'basename':path[_0xc7a6('0x38')](_0x25bca5[_0xc7a6('0x2f')])[_0xc7a6('0x25')]+_0xc7a6('0x39'),'type':_0xc7a6('0x3a')})['then'](function(_0x622931){faxAccount[_0xc7a6('0x3b')](_0x116536,{'from':_0x25bca5[_0xc7a6('0x34')],'mapKey':_0xc7a6('0x3c'),'body':path['parse'](_0x25bca5[_0xc7a6('0x2f')])[_0xc7a6('0x25')]+_0xc7a6('0x39'),'AttachmentId':_0x622931['id']})[_0xc7a6('0x3d')](function(_0x5d8d8b){logger[_0xc7a6('0x3e')](_0x25bca5[_0xc7a6('0x23')],_0xc7a6('0x3f'),JSON[_0xc7a6('0x40')](_0x5d8d8b));});})['catch'](function(_0x4024b9){logger[_0xc7a6('0x3e')](_0x25bca5[_0xc7a6('0x23')],_0xc7a6('0x41'),JSON[_0xc7a6('0x40')](_0x4024b9));});});}logger[_0xc7a6('0x26')](_0x25bca5[_0xc7a6('0x23')],_0xc7a6('0x41'));}};Fax['prototype']['syncOriginateResponse']=function(_0x44fa9c){if(this[_0xc7a6('0x42')][_0x44fa9c[_0xc7a6('0x23')]]){_[_0xc7a6('0x43')](this['channels'][_0x44fa9c[_0xc7a6('0x23')]],_[_0xc7a6('0x44')](_0x44fa9c,[_0xc7a6('0x45'),'reason']));}};function updateStatus(_0x1681fd){if(_0x1681fd[_0xc7a6('0x46')]){faxMessage[_0xc7a6('0x47')](_0x1681fd['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})[_0xc7a6('0x48')](function(_0x583e75){ut[_0xc7a6('0x49')](_0xc7a6('0x4a'),_0x583e75);})['catch'](function(_0x24e2ec){ut[_0xc7a6('0x49')](_0xc7a6('0x4b'),_0x24e2ec);});}else{ut['logger']('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xc7a6('0x1d')][_0xc7a6('0x4c')]=function(_0x595af2,_0x42613f,_0x58290d){var _0x441d3f=this;var _0x3fcebc={};if(_0x42613f){_0x3fcebc={'read':_0x42613f};}else{_0x3fcebc={'failMessage':_0x58290d};}if(this[_0xc7a6('0x42')][_0x595af2][_0xc7a6('0x46')]){faxMessage[_0xc7a6('0x47')](this[_0xc7a6('0x42')][_0x595af2]['AttachmentId'],_0x3fcebc)[_0xc7a6('0x48')](function(_0x3df7d9){ut['logger'](_0xc7a6('0x4d'),_0x3df7d9);})[_0xc7a6('0x3d')](function(_0x5b7be3){ut[_0xc7a6('0x49')]('[Fax][Message][NoUpdate1]',_0x5b7be3);})[_0xc7a6('0x4e')](function(){delete _0x441d3f[_0xc7a6('0xc')][_0x595af2];delete _0x441d3f[_0xc7a6('0x42')][_0x595af2];});}else{ut['logger'](_0xc7a6('0x4f'));delete this['channels'][_0x595af2];delete this[_0xc7a6('0x42')][_0x595af2];}};Fax['prototype'][_0xc7a6('0x1a')]=function(_0x4982dc){var _0x2a9e6b=this;if(this[_0xc7a6('0xc')][_0x4982dc['uniqueid']]){if(this['actions'][_0x4982dc['uniqueid']]){this[_0xc7a6('0xc')][_0x4982dc[_0xc7a6('0x23')]]['id']=this[_0xc7a6('0x42')][_0x4982dc[_0xc7a6('0x23')]]['id'];this[_0xc7a6('0xc')][_0x4982dc[_0xc7a6('0x23')]][_0xc7a6('0x25')]=this[_0xc7a6('0x42')][_0x4982dc[_0xc7a6('0x23')]][_0xc7a6('0x25')];}logger[_0xc7a6('0x26')](_0x4982dc['uniqueid'],this[_0xc7a6('0x42')][_0x4982dc['uniqueid']]?_0xc7a6('0x50'):_0xc7a6('0x51'),JSON['stringify'](this['channels'][_0x4982dc['uniqueid']]));if(this['actions'][_0x4982dc[_0xc7a6('0x23')]]){if(this[_0xc7a6('0xc')][_0x4982dc['uniqueid']][_0xc7a6('0x52')]>0x0&&this[_0xc7a6('0xc')][_0x4982dc[_0xc7a6('0x23')]]['faxstatus']===_0xc7a6('0x53')){this['updateStatus'](_0x4982dc[_0xc7a6('0x23')],!![]);}else{this[_0xc7a6('0x4c')](_0x4982dc['uniqueid'],![],this[_0xc7a6('0xc')][_0x4982dc['uniqueid']]['faxstatusstring']?'SENDING\x20FAILED:\x20'+this['channels'][_0x4982dc[_0xc7a6('0x23')]][_0xc7a6('0x54')]:_0xc7a6('0x55'));}}}};Fax['prototype'][_0xc7a6('0x56')]=function(_0x89dd57){var _0x33e3cb=this;return new BPromise(function(_0x5609dd,_0x383848){_0x33e3cb[_0xc7a6('0x57')](_0x89dd57,_0x33e3cb[_0xc7a6('0xd')][_0x89dd57['FaxAccountId']])[_0xc7a6('0x48')](function(_0x2b924e){ut[_0xc7a6('0x49')](_0xc7a6('0x58'),_0x2b924e);_0x5609dd(ut[_0xc7a6('0x59')](_0xc7a6('0x5a')));})[_0xc7a6('0x3d')](function(_0x414fb2){ut['logger']('[Fax][execOriginate][failure]',_0x414fb2);updateStatus(_0x89dd57);_0x383848(ut['message'](_0xc7a6('0x5b')));});});};Fax[_0xc7a6('0x1d')]['checkAfterSend']=function(_0x5c0b6b){var _0x4f7d65=this;return new BPromise(function(_0x1034ef,_0x32370b){var _0x52bed4=_0x4f7d65['checkTrunk'](_0x4f7d65[_0xc7a6('0xd')][_0x5c0b6b[_0xc7a6('0x5c')]][_0xc7a6('0x5d')],_0x5c0b6b);if(_0x52bed4['isValid']){_0x1034ef(ut['message'](_0xc7a6('0x5e')));}else{_0x32370b(ut[_0xc7a6('0x59')](_0x52bed4[_0xc7a6('0x59')]));}});};function originate(_0x38e5df,_0x1eb316,_0x34106a){return new BPromise(function(_0x7dc736,_0x12cec9){if(_0x34106a){var _0x347423=util[_0xc7a6('0x5f')](_0xc7a6('0x60'),path[_0xc7a6('0x38')](_0x38e5df['path'])['name'],_0x38e5df[_0xc7a6('0x4')]);gs[_0xc7a6('0x61')](_0x347423)[_0xc7a6('0x48')](function(){_0x38e5df[_0xc7a6('0x4')]=util[_0xc7a6('0x5f')](_0xc7a6('0x62'),path[_0xc7a6('0x38')](_0x38e5df[_0xc7a6('0x4')])[_0xc7a6('0x63')],path[_0xc7a6('0x38')](_0x38e5df[_0xc7a6('0x4')])[_0xc7a6('0x25')]);_0x1eb316[_0xc7a6('0x64')]=_0x38e5df[_0xc7a6('0x4')];ut[_0xc7a6('0x49')]('Convert\x20pdf\x20to\x20tif','');ami[_0xc7a6('0x65')](ut[_0xc7a6('0x66')](_0x38e5df,_0x1eb316))['then'](function(_0x4bbdf1){_0x7dc736(_0x4bbdf1);})[_0xc7a6('0x3d')](function(_0x77d195){_0x12cec9(_0x77d195);});})['catch'](function(_0x1bbba){_0x12cec9(_0x1bbba);});}else{ami[_0xc7a6('0x65')](ut[_0xc7a6('0x66')](_0x38e5df,_0x1eb316))[_0xc7a6('0x48')](function(_0x421332){_0x7dc736(_0x421332);})[_0xc7a6('0x3d')](function(_0xded203){_0x12cec9(_0xded203);});}});}Fax[_0xc7a6('0x1d')]['execOriginate']=function(_0x39de7b,_0x3730e8){var _0x1aac21=this;return new BPromise(function(_0x1bcda4,_0x7052be){var _0x223c59=uuid['v4']();var _0x32e1ea=ut[_0xc7a6('0x67')](_0x39de7b,_0x3730e8);_0x1aac21['actions'][_0x223c59]=new Action(_0x223c59,_0x3730e8,_0x39de7b);var _0xc20a80=_0x1aac21[_0xc7a6('0x42')][_0x223c59];if(path[_0xc7a6('0x38')](_0x39de7b['path'])[_0xc7a6('0x68')]===_0xc7a6('0x39')){originate(_0xc20a80,_0x32e1ea,!![])[_0xc7a6('0x48')](function(_0x50eeb7){_0x1bcda4(_0x50eeb7);})[_0xc7a6('0x3d')](function(_0x20da6c){_0x7052be(_0x20da6c);});}else{originate(_0xc20a80,_0x32e1ea,![])[_0xc7a6('0x48')](function(_0x54fa5b){_0x1bcda4(_0x54fa5b);})['catch'](function(_0x3c6a6e){_0x7052be(_0x3c6a6e);});}});};Fax['prototype'][_0xc7a6('0x69')]=function(_0x53137b){return!_[_0xc7a6('0x6a')](_0x53137b)&&!_['isNil'](_0x53137b[_0xc7a6('0x25')])&&!_[_0xc7a6('0x6a')](_0x53137b['active'])&&_0x53137b[_0xc7a6('0x6b')]&&!_[_0xc7a6('0x6a')](this[_0xc7a6('0xe')][util[_0xc7a6('0x5f')]('SIP/%s',_0x53137b[_0xc7a6('0x25')])])&&!_[_0xc7a6('0x6a')](this[_0xc7a6('0xe')][util[_0xc7a6('0x5f')](_0xc7a6('0x6c'),_0x53137b['name'])]['status'])&&(this[_0xc7a6('0xe')][util[_0xc7a6('0x5f')]('SIP/%s',_0x53137b[_0xc7a6('0x25')])][_0xc7a6('0x2e')]===_0xc7a6('0x6d')||this['trunks'][util[_0xc7a6('0x5f')](_0xc7a6('0x6c'),_0x53137b['name'])]['status']===_0xc7a6('0x6e'));};Fax[_0xc7a6('0x1d')][_0xc7a6('0x6f')]=function(_0x449076,_0x3190ce){if(!this[_0xc7a6('0x69')](_0x449076)){ut['logger'](_0xc7a6('0x70'),_[_0xc7a6('0x6a')](_0x449076)?'':_0x449076[_0xc7a6('0x25')]+_0xc7a6('0x71'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xc7a6('0x6a')](_0x3190ce[_0xc7a6('0x3c')])){ut['logger'](_0xc7a6('0x72'),JSON[_0xc7a6('0x40')](_0x3190ce));return{'isValid':![],'message':_0xc7a6('0x73')};}if(_[_0xc7a6('0x6a')](_0x3190ce[_0xc7a6('0x4')])){ut[_0xc7a6('0x49')](_0xc7a6('0x74'),JSON['stringify'](_0x3190ce));return{'isValid':![],'message':_0xc7a6('0x75')};}return{'isValid':!![],'message':_0xc7a6('0x76')};};module['exports']=Fax;
\ No newline at end of file
index 94f2696..1f1ff95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2af5=['preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','catch','[Notify]\x20','util','bluebird','../../../config/logger'];(function(_0x35909a,_0x354b9a){var _0x45a655=function(_0x3bb1a9){while(--_0x3bb1a9){_0x35909a['push'](_0x35909a['shift']());}};_0x45a655(++_0x354b9a);}(_0x2af5,0x1ad));var _0x52af=function(_0x202fba,_0x105090){_0x202fba=_0x202fba-0x0;var _0x5ac112=_0x2af5[_0x202fba];return _0x5ac112;};'use strict';var util=require(_0x52af('0x0'));var BPromise=require(_0x52af('0x1'));var logger=require(_0x52af('0x2'))(_0x52af('0x3'));var _=require(_0x52af('0x4'));var faxAccount=require(_0x52af('0x5'));function loggerCatch(_0x586b3d){return function(_0x20ec52){logger[_0x52af('0x6')](_0x586b3d,util[_0x52af('0x7')](_0x20ec52,{'showHidden':![],'depth':null}));};}exports[_0x52af('0x8')]=function(_0x40fe25,_0x162390){return BPromise[_0x52af('0x9')]()['then'](faxAccount[_0x52af('0x8')](_0x40fe25,_0x162390))[_0x52af('0xa')](loggerCatch(_0x52af('0xb')));};
\ No newline at end of file
+var _0xc80c=['inspect','notify','then','[Notify]\x20','util','bluebird','preview','../rpc/faxAccount','error'];(function(_0x398e3d,_0x18387c){var _0x3b72cc=function(_0xa757c0){while(--_0xa757c0){_0x398e3d['push'](_0x398e3d['shift']());}};_0x3b72cc(++_0x18387c);}(_0xc80c,0x100));var _0xcc80=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xc80c[_0x5d2803];return _0xdcad2c;};'use strict';var util=require(_0xcc80('0x0'));var BPromise=require(_0xcc80('0x1'));var logger=require('../../../config/logger')(_0xcc80('0x2'));var _=require('lodash');var faxAccount=require(_0xcc80('0x3'));function loggerCatch(_0xaee1cb){return function(_0x481494){logger[_0xcc80('0x4')](_0xaee1cb,util[_0xcc80('0x5')](_0x481494,{'showHidden':![],'depth':null}));};}exports[_0xcc80('0x6')]=function(_0x36b234,_0xa7610e){return BPromise['resolve']()[_0xcc80('0x7')](faxAccount[_0xcc80('0x6')](_0x36b234,_0xa7610e))['catch'](loggerCatch(_0xcc80('0x8')));};
\ No newline at end of file
index 9b2423f..377477e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb792=['exec','execute','info','Exec\x20gs','inspect','util','../../../../config/logger','fax','bluebird','child_process'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb792,0xaf));var _0x2b79=function(_0x4cd544,_0x565c58){_0x4cd544=_0x4cd544-0x0;var _0x2bd004=_0xb792[_0x4cd544];return _0x2bd004;};'use strict';var util=require(_0x2b79('0x0'));var logger=require(_0x2b79('0x1'))(_0x2b79('0x2'));var BPromise=require(_0x2b79('0x3'));var exec=require(_0x2b79('0x4'))[_0x2b79('0x5')];exports[_0x2b79('0x6')]=function(_0x4198dd){return new BPromise(function(_0x107540,_0x46db36){exec(_0x4198dd,function(_0x30ea02,_0xa34d03,_0x47ca0c){logger[_0x2b79('0x7')](_0x2b79('0x8'),_0xa34d03);if(_0x30ea02){logger[_0x2b79('0x7')](_0x2b79('0x8'),'\x20Error\x20:',util[_0x2b79('0x9')](_0x30ea02,{'showHidden':![],'depth':null}),_0xa34d03,_0x47ca0c);_0x46db36(_0x30ea02);}_0x107540(_0xa34d03);});});};
\ No newline at end of file
+var _0xf083=['\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird','exec','execute','info','Exec\x20gs'];(function(_0x372740,_0x36f509){var _0x33b780=function(_0x4f4b98){while(--_0x4f4b98){_0x372740['push'](_0x372740['shift']());}};_0x33b780(++_0x36f509);}(_0xf083,0x188));var _0x3f08=function(_0x1b2a35,_0x110619){_0x1b2a35=_0x1b2a35-0x0;var _0x22a39d=_0xf083[_0x1b2a35];return _0x22a39d;};'use strict';var util=require(_0x3f08('0x0'));var logger=require(_0x3f08('0x1'))(_0x3f08('0x2'));var BPromise=require(_0x3f08('0x3'));var exec=require('child_process')[_0x3f08('0x4')];exports[_0x3f08('0x5')]=function(_0x3958d9){return new BPromise(function(_0x289f36,_0x18615b){exec(_0x3958d9,function(_0x32f1e0,_0x5357e3,_0xfdb266){logger['info']('Exec\x20gs',_0x5357e3);if(_0x32f1e0){logger[_0x3f08('0x6')](_0x3f08('0x7'),_0x3f08('0x8'),util[_0x3f08('0x9')](_0x32f1e0,{'showHidden':![],'depth':null}),_0x5357e3,_0xfdb266);_0x18615b(_0x32f1e0);}_0x289f36(_0x5357e3);});});};
\ No newline at end of file
index f43a93f..846f284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcc4=['t38timeout','localstationid','path','variablesAction','originate','channel','from-sip','\x22%s\x22\x20<%s>','headerinfo','uniqueid','util','lodash','moment','../../../../config/logger','fax','message','logger','inspect','addVariables','ecm','maxrate','format','\x22%s\x22','modem','faxdetect'];(function(_0x4b6773,_0x3a9750){var _0x521a67=function(_0x4e1616){while(--_0x4e1616){_0x4b6773['push'](_0x4b6773['shift']());}};_0x521a67(++_0x3a9750);}(_0xdcc4,0x14f));var _0x4dcc=function(_0x57f2e6,_0x5c554d){_0x57f2e6=_0x57f2e6-0x0;var _0x4610e8=_0xdcc4[_0x57f2e6];return _0x4610e8;};'use strict';var util=require(_0x4dcc('0x0'));var _=require(_0x4dcc('0x1'));var moment=require(_0x4dcc('0x2'));var logger=require(_0x4dcc('0x3'))(_0x4dcc('0x4'));exports[_0x4dcc('0x5')]=function(_0x3e029a){return{'message':_0x3e029a};};exports[_0x4dcc('0x6')]=function(_0x439166,_0x166292){logger['info'](_0x439166,util[_0x4dcc('0x7')](_0x166292,{'showHidden':![],'depth':null}));};exports[_0x4dcc('0x8')]=function(_0x13b7a9,_0x1df62d){var _0x21da68={'XMF-ECM':_0x1df62d[_0x4dcc('0x9')],'XMF-HEADERINFO':_0x1df62d['headerinfo'],'XMF-MINRATE':_0x1df62d['minrate'],'XMF-MAXRATE':_0x1df62d[_0x4dcc('0xa')],'XMF-MODEM':util[_0x4dcc('0xb')](_0x4dcc('0xc'),_0x1df62d[_0x4dcc('0xd')]),'XMF-GATEWAY':_0x1df62d['gateway'],'XMF-FAXDETECT':_0x1df62d[_0x4dcc('0xe')],'XMF-T38TIMEOUT':_0x1df62d[_0x4dcc('0xf')],'XMF-LOCALSTATIONID':_0x1df62d[_0x4dcc('0x10')],'XMF-PATH':_0x13b7a9[_0x4dcc('0x11')]};return _0x21da68;};exports[_0x4dcc('0x12')]=function(_0x478ea1,_0x28137c){return{'actionid':_0x478ea1['uniqueid'],'action':_0x4dcc('0x13'),'channel':_0x478ea1[_0x4dcc('0x14')],'Exten':'xcally-motion-fax','Context':_0x4dcc('0x15'),'Priority':'1','callerid':util[_0x4dcc('0xb')](_0x4dcc('0x16'),_0x478ea1[_0x4dcc('0x17')]?_0x478ea1[_0x4dcc('0x17')]:'',_0x478ea1['localstationid']),'variable':_0x28137c,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x478ea1[_0x4dcc('0x18')]};};
\ No newline at end of file
+var _0x0add=['originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','util','lodash','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','maxrate','format','modem','t38timeout','localstationid','path','variablesAction','uniqueid'];(function(_0x3a8db5,_0x31cff7){var _0x2c03cd=function(_0x47dba0){while(--_0x47dba0){_0x3a8db5['push'](_0x3a8db5['shift']());}};_0x2c03cd(++_0x31cff7);}(_0x0add,0x64));var _0xd0ad=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x0add[_0x4ae6ef];return _0x3cbb4e;};'use strict';var util=require(_0xd0ad('0x0'));var _=require(_0xd0ad('0x1'));var moment=require(_0xd0ad('0x2'));var logger=require(_0xd0ad('0x3'))(_0xd0ad('0x4'));exports[_0xd0ad('0x5')]=function(_0xcf8907){return{'message':_0xcf8907};};exports[_0xd0ad('0x6')]=function(_0x3e7219,_0x402ac3){logger[_0xd0ad('0x7')](_0x3e7219,util[_0xd0ad('0x8')](_0x402ac3,{'showHidden':![],'depth':null}));};exports[_0xd0ad('0x9')]=function(_0x2215e4,_0xc13828){var _0x50be69={'XMF-ECM':_0xc13828[_0xd0ad('0xa')],'XMF-HEADERINFO':_0xc13828[_0xd0ad('0xb')],'XMF-MINRATE':_0xc13828['minrate'],'XMF-MAXRATE':_0xc13828[_0xd0ad('0xc')],'XMF-MODEM':util[_0xd0ad('0xd')]('\x22%s\x22',_0xc13828[_0xd0ad('0xe')]),'XMF-GATEWAY':_0xc13828['gateway'],'XMF-FAXDETECT':_0xc13828['faxdetect'],'XMF-T38TIMEOUT':_0xc13828[_0xd0ad('0xf')],'XMF-LOCALSTATIONID':_0xc13828[_0xd0ad('0x10')],'XMF-PATH':_0x2215e4[_0xd0ad('0x11')]};return _0x50be69;};exports[_0xd0ad('0x12')]=function(_0x6ec2a0,_0x1413b6){return{'actionid':_0x6ec2a0[_0xd0ad('0x13')],'action':_0xd0ad('0x14'),'channel':_0x6ec2a0[_0xd0ad('0x15')],'Exten':_0xd0ad('0x16'),'Context':'from-sip','Priority':'1','callerid':util[_0xd0ad('0xd')](_0xd0ad('0x17'),_0x6ec2a0[_0xd0ad('0xb')]?_0x6ec2a0[_0xd0ad('0xb')]:'',_0x6ec2a0[_0xd0ad('0x10')]),'variable':_0x1413b6,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x6ec2a0[_0xd0ad('0x13')]};};
\ No newline at end of file
index dcfae10..00a2c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3f3=['initTriggers','getTemplates','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getVoiceCallReports','catch','listen','sync','log','bluebird','util','moment','./realtime','./report','./acw','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getVoiceQueues','getTriggers'];(function(_0x505701,_0x18e6f1){var _0x2b2e07=function(_0x468e87){while(--_0x468e87){_0x505701['push'](_0x505701['shift']());}};_0x2b2e07(++_0x18e6f1);}(_0xc3f3,0x1ec));var _0x3c3f=function(_0x111af9,_0x37eaa6){_0x111af9=_0x111af9-0x0;var _0x9742ba=_0xc3f3[_0x111af9];return _0x9742ba;};'use strict';var BPromise=require(_0x3c3f('0x0'));var util=require(_0x3c3f('0x1'));var moment=require(_0x3c3f('0x2'));var server=require('./server');var Realtime=require(_0x3c3f('0x3'));var Report=require(_0x3c3f('0x4'));var Acw=require(_0x3c3f('0x5'));var Trigger=require('./trigger');var Dialer=require(_0x3c3f('0x6'));var Preview=require(_0x3c3f('0x7'));var Fax=require(_0x3c3f('0x8'));var user=require(_0x3c3f('0x9'));var voiceQueue=require(_0x3c3f('0xa'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x3c3f('0xb'));var trunk=require('./rpc/trunk');var trigger=require(_0x3c3f('0xc'));var template=require('./rpc/template');var cmHopperHistory=require(_0x3c3f('0xd'));var campaign=require(_0x3c3f('0xe'));var voiceExtension=require(_0x3c3f('0xf'));var faxAccount=require(_0x3c3f('0x10'));var zendesk=require(_0x3c3f('0x11'));var salesforce=require(_0x3c3f('0x12'));var sugarcrm=require(_0x3c3f('0x13'));var freshdesk=require(_0x3c3f('0x14'));var desk=require(_0x3c3f('0x15'));var zoho=require(_0x3c3f('0x16'));var vtiger=require(_0x3c3f('0x17'));var freshsales=require(_0x3c3f('0x18'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x3c3f('0x19'));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()[_0x3c3f('0x1a')](_0x3c3f('0x1b'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x3c3f('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x3c3f('0x1c')]()[_0x3c3f('0x1d')](user[_0x3c3f('0x1e')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x1f')]())[_0x3c3f('0x1d')](user[_0x3c3f('0x20')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x21')]())[_0x3c3f('0x1d')](trunk['getTrunks']())[_0x3c3f('0x1d')](realtime['initTrunks']())[_0x3c3f('0x1d')](voiceQueue[_0x3c3f('0x22')]())[_0x3c3f('0x1d')](realtime['initVoiceQueues']())[_0x3c3f('0x1d')](trigger[_0x3c3f('0x23')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x24')]())[_0x3c3f('0x1d')](template[_0x3c3f('0x25')]())[_0x3c3f('0x1d')](realtime['initTemplates']())[_0x3c3f('0x1d')](zendesk['getZendeskAccounts']())[_0x3c3f('0x1d')](realtime['initZendeskAccounts']())[_0x3c3f('0x1d')](salesforce[_0x3c3f('0x26')]())['then'](realtime['initSalesforceAccounts']())[_0x3c3f('0x1d')](sugarcrm[_0x3c3f('0x27')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x28')]())[_0x3c3f('0x1d')](freshdesk[_0x3c3f('0x29')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x2a')]())[_0x3c3f('0x1d')](desk[_0x3c3f('0x2b')]())['then'](realtime[_0x3c3f('0x2c')]())[_0x3c3f('0x1d')](zoho[_0x3c3f('0x2d')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x2e')]())[_0x3c3f('0x1d')](vtiger[_0x3c3f('0x2f')]())[_0x3c3f('0x1d')](realtime['initVtigerAccounts']())['then'](freshsales['getFreshsalesAccounts']())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x30')]())[_0x3c3f('0x1d')](servicenow[_0x3c3f('0x31')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x32')]())[_0x3c3f('0x1d')](dynamics365[_0x3c3f('0x33')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x34')]())[_0x3c3f('0x1d')](campaign[_0x3c3f('0x35')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x36')]())[_0x3c3f('0x1d')](voiceExtension[_0x3c3f('0x37')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x38')]())[_0x3c3f('0x1d')](faxAccount[_0x3c3f('0x39')]())['then'](realtime[_0x3c3f('0x3a')]())[_0x3c3f('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0x3c3f('0x1c')]()['then'](voiceQueueReport['getVoiceQueueReports']())[_0x3c3f('0x1d')](realtime['initVoiceQueueReports']())[_0x3c3f('0x1d')](cmHopperHistory[_0x3c3f('0x3b')]())[_0x3c3f('0x1d')](realtime[_0x3c3f('0x3c')]())['then'](cmHopperHistory['getCampaignHopperHistory']())[_0x3c3f('0x1d')](realtime['initCampaignHopperHistory']())[_0x3c3f('0x1d')](voiceCallReport[_0x3c3f('0x3d')]())['then'](realtime['initVoiceCallReports']())['then'](function(_0x575ceb){})[_0x3c3f('0x3e')](function(_0x42b4ab){console['log'](_0x42b4ab);});}function main(){return server[_0x3c3f('0x3f')](realtime,preview,fax)['then'](function(_0x465ac1){return initRealtime();})[_0x3c3f('0x1d')](function(){return initParams();})[_0x3c3f('0x1d')](function(){report[_0x3c3f('0x40')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x3df2e2){console[_0x3c3f('0x41')](_0x3df2e2);});}main();
\ No newline at end of file
+var _0x6b99=['getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','bluebird','util','moment','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','hour','resolve','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','initFreshsalesAccounts','getDynamics365Accounts'];(function(_0x33ff39,_0x347fe8){var _0x2cfeb3=function(_0x435cb3){while(--_0x435cb3){_0x33ff39['push'](_0x33ff39['shift']());}};_0x2cfeb3(++_0x347fe8);}(_0x6b99,0xde));var _0x96b9=function(_0x42d2af,_0x3961b5){_0x42d2af=_0x42d2af-0x0;var _0x1d6d63=_0x6b99[_0x42d2af];return _0x1d6d63;};'use strict';var BPromise=require(_0x96b9('0x0'));var util=require(_0x96b9('0x1'));var moment=require(_0x96b9('0x2'));var server=require('./server');var Realtime=require(_0x96b9('0x3'));var Report=require(_0x96b9('0x4'));var Acw=require(_0x96b9('0x5'));var Trigger=require(_0x96b9('0x6'));var Dialer=require(_0x96b9('0x7'));var Preview=require(_0x96b9('0x8'));var Fax=require(_0x96b9('0x9'));var user=require(_0x96b9('0xa'));var voiceQueue=require(_0x96b9('0xb'));var voiceQueueReport=require(_0x96b9('0xc'));var voiceCallReport=require(_0x96b9('0xd'));var trunk=require(_0x96b9('0xe'));var trigger=require(_0x96b9('0xf'));var template=require(_0x96b9('0x10'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x96b9('0x11'));var voiceExtension=require(_0x96b9('0x12'));var faxAccount=require(_0x96b9('0x13'));var zendesk=require(_0x96b9('0x14'));var salesforce=require(_0x96b9('0x15'));var sugarcrm=require(_0x96b9('0x16'));var freshdesk=require(_0x96b9('0x17'));var desk=require(_0x96b9('0x18'));var zoho=require(_0x96b9('0x19'));var vtiger=require(_0x96b9('0x1a'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x96b9('0x1b'));var dynamics365=require(_0x96b9('0x1c'));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()['get'](_0x96b9('0x1d'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x96b9('0x1d'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x96b9('0x1e')]()[_0x96b9('0x1f')](user['getAgents']())[_0x96b9('0x1f')](realtime[_0x96b9('0x20')]())['then'](user[_0x96b9('0x21')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x22')]())[_0x96b9('0x1f')](trunk[_0x96b9('0x23')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x24')]())[_0x96b9('0x1f')](voiceQueue[_0x96b9('0x25')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x26')]())[_0x96b9('0x1f')](trigger[_0x96b9('0x27')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x28')]())[_0x96b9('0x1f')](template[_0x96b9('0x29')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x2a')]())['then'](zendesk[_0x96b9('0x2b')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x2c')]())[_0x96b9('0x1f')](salesforce[_0x96b9('0x2d')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x2e')]())[_0x96b9('0x1f')](sugarcrm[_0x96b9('0x2f')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x30')]())['then'](freshdesk[_0x96b9('0x31')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x32')]())[_0x96b9('0x1f')](desk[_0x96b9('0x33')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x34')]())[_0x96b9('0x1f')](zoho[_0x96b9('0x35')]())['then'](realtime[_0x96b9('0x36')]())['then'](vtiger['getVtigerAccounts']())[_0x96b9('0x1f')](realtime[_0x96b9('0x37')]())['then'](freshsales['getFreshsalesAccounts']())[_0x96b9('0x1f')](realtime[_0x96b9('0x38')]())[_0x96b9('0x1f')](servicenow['getServicenowAccounts']())[_0x96b9('0x1f')](realtime['initServicenowAccounts']())['then'](dynamics365[_0x96b9('0x39')]())['then'](realtime['initDynamics365Accounts']())[_0x96b9('0x1f')](campaign[_0x96b9('0x3a')]())['then'](realtime[_0x96b9('0x3b')]())['then'](voiceExtension[_0x96b9('0x3c')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x3d')]())[_0x96b9('0x1f')](faxAccount['getFaxAccounts']())['then'](realtime[_0x96b9('0x3e')]())[_0x96b9('0x1f')](function(){return realtime;});}function initParams(){return BPromise[_0x96b9('0x1e')]()[_0x96b9('0x1f')](voiceQueueReport[_0x96b9('0x3f')]())[_0x96b9('0x1f')](realtime['initVoiceQueueReports']())[_0x96b9('0x1f')](cmHopperHistory[_0x96b9('0x40')]())[_0x96b9('0x1f')](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory[_0x96b9('0x41')]())[_0x96b9('0x1f')](realtime['initCampaignHopperHistory']())[_0x96b9('0x1f')](voiceCallReport[_0x96b9('0x42')]())[_0x96b9('0x1f')](realtime[_0x96b9('0x43')]())['then'](function(_0x478296){})[_0x96b9('0x44')](function(_0x3929f9){console[_0x96b9('0x45')](_0x3929f9);});}function main(){return server['listen'](realtime,preview,fax)[_0x96b9('0x1f')](function(_0x5ce2b4){return initRealtime();})[_0x96b9('0x1f')](function(){return initParams();})[_0x96b9('0x1f')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x96b9('0x44')](function(_0x85bb5b){console['log'](_0x85bb5b);});}main();
\ No newline at end of file
index a844762..4fe15e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['interface','online','voiceStatusTime','voiceStatusQueue','onhold','local','updateStatusRealtime','toLowerCase','not_inuse','inuse','talking','voiceStatus','toNumber','format','voiceStatusCallerIdNumber','stringify','user:%s','emit','user:save','exports','lodash','util','moment','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status','address','phone','mobile'];(function(_0x50bf86,_0xf294f2){var _0xd6f21a=function(_0x16eac2){while(--_0x16eac2){_0x50bf86['push'](_0x50bf86['shift']());}};_0xd6f21a(++_0xf294f2);}(_0x34e8,0x12c));var _0x834e=function(_0xb27fbb,_0x4ad96f){_0xb27fbb=_0xb27fbb-0x0;var _0x144513=_0x34e8[_0xb27fbb];return _0x144513;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var Redis=require('ioredis');var config=require(_0x834e('0x4'));config[_0x834e('0x5')]=_[_0x834e('0x6')](config[_0x834e('0x5')],{'host':_0x834e('0x7'),'port':0x18eb});var io=require(_0x834e('0x8'))(new Redis(config[_0x834e('0x5')]));function Agent(_0x4a2018){this['id']=_0x4a2018['id']||0x0;this[_0x834e('0x9')]=_0x4a2018['name']||'';this[_0x834e('0xa')]=_0x4a2018[_0x834e('0xa')]||'';this[_0x834e('0xb')]=_0x4a2018[_0x834e('0xb')]||'';this[_0x834e('0xc')]=_0x4a2018[_0x834e('0xc')]||'';this[_0x834e('0xd')]=_0x834e('0xe');this[_0x834e('0xf')]=0x0;this[_0x834e('0x10')]=_0x834e('0xe');this[_0x834e('0x11')]='';this[_0x834e('0x12')]='';this[_0x834e('0x13')]='';this[_0x834e('0x14')]='';this[_0x834e('0x15')]=_0x4a2018[_0x834e('0x15')]||![];this['voiceStatus']=_0x834e('0xe');this[_0x834e('0x16')]=0x0;this['voiceStatusCallerIdNumber']='';this[_0x834e('0x17')]='';this[_0x834e('0x18')]=![];this[_0x834e('0x19')]=![];this[_0x834e('0x3')]='';}Agent['prototype'][_0x834e('0x1a')]=function(_0x302cbd){var _0x57274a;if(_0x302cbd&&_0x302cbd[_0x834e('0xd')]){_0x57274a=_0x302cbd['state'][_0x834e('0x1b')]();switch(_0x57274a){case _0x834e('0x1c'):_0x57274a='idle';break;case _0x834e('0x1d'):_0x57274a=_0x834e('0x1e');break;}}if(_0x57274a&&this[_0x834e('0x1f')]!==_0x57274a||_0x302cbd['statePause']){this[_0x834e('0x16')]=_[_0x834e('0x20')](moment()[_0x834e('0x21')]('x'));}if(_0x57274a){this[_0x834e('0x1f')]=_0x57274a;}var _0x237947={'id':this['id'],'name':this[_0x834e('0x9')],'email':this[_0x834e('0xa')],'accountcode':this['accountcode'],'fullname':this[_0x834e('0xc')],'state':this[_0x834e('0xd')],'stateTime':this[_0x834e('0xf')],'status':this[_0x834e('0x10')],'address':this['address'],'online':this[_0x834e('0x15')],'voiceStatus':this[_0x834e('0x1f')],'voiceStatusTime':this['voiceStatusTime'],'voiceStatusCallerIdNumber':this[_0x834e('0x22')],'voiceStatusQueue':this[_0x834e('0x17')],'interface':this[_0x834e('0x14')],'onhold':this['onhold']};var _0x4e3f48=md5(JSON[_0x834e('0x23')](_0x237947));if(this[_0x834e('0x3')]!==_0x4e3f48){this['md5']=_0x4e3f48;io['to'](util[_0x834e('0x21')](_0x834e('0x24'),_0x237947['name']))[_0x834e('0x25')](_0x834e('0x26'),_0x237947);io[_0x834e('0x25')]('user:presence',_0x237947);}};module[_0x834e('0x27')]=Agent;
\ No newline at end of file
+var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x25e3a4,_0x1d9fa7){var _0xe08135=function(_0x59c975){while(--_0x59c975){_0x25e3a4['push'](_0x25e3a4['shift']());}};_0xe08135(++_0x1d9fa7);}(_0x70e0,0x17b));var _0x070e=function(_0x6716cf,_0x4b6088){_0x6716cf=_0x6716cf-0x0;var _0x182047=_0x70e0[_0x6716cf];return _0x182047;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
index 3aaf65b..4cf3fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd002=['type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','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','SquareProject','dialQueueProject','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name'];(function(_0xfbe7d7,_0x413e0c){var _0x145b74=function(_0x2b1ca0){while(--_0x2b1ca0){_0xfbe7d7['push'](_0xfbe7d7['shift']());}};_0x145b74(++_0x413e0c);}(_0xd002,0x1e9));var _0x2d00=function(_0x26c68d,_0x131104){_0x26c68d=_0x26c68d-0x0;var _0x5bfb9f=_0xd002[_0x26c68d];return _0x5bfb9f;};'use strict';function Campaign(_0x39b967){this['id']=_0x39b967['id']||0x0;this[_0x2d00('0x0')]=_0x39b967['name']||'';this[_0x2d00('0x1')]=_0x39b967[_0x2d00('0x1')]||_0x2d00('0x2');this[_0x2d00('0x3')]=0x0;this[_0x2d00('0x4')]=0x0;this[_0x2d00('0x5')]=0x0;this[_0x2d00('0x6')]=0x0;this[_0x2d00('0x7')]='';this[_0x2d00('0x8')]=!![];this[_0x2d00('0x9')]=_0x39b967[_0x2d00('0x9')];this[_0x2d00('0xa')]=_0x39b967['limitCalls'];this[_0x2d00('0xb')]=_0x39b967[_0x2d00('0xb')]||null;this['dialGlobalInterval']=_0x39b967['dialGlobalInterval']?_0x39b967['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x39b967[_0x2d00('0xc')];this[_0x2d00('0xd')]=_0x39b967[_0x2d00('0xd')];this[_0x2d00('0xe')]=_0x39b967[_0x2d00('0xe')]||0x1e;this[_0x2d00('0xf')]=_0x39b967[_0x2d00('0xf')];this[_0x2d00('0x10')]=_0x39b967[_0x2d00('0x10')];this[_0x2d00('0x11')]=_0x39b967[_0x2d00('0x11')];this[_0x2d00('0x12')]=_0x39b967[_0x2d00('0x12')];this[_0x2d00('0x13')]=_0x39b967[_0x2d00('0x13')];this['dialNoAnswerRetryFrequency']=_0x39b967[_0x2d00('0x14')];this[_0x2d00('0x15')]=_0x39b967[_0x2d00('0x15')];this[_0x2d00('0x16')]=_0x39b967['dialNoSuchNumberMaxRetry']||0x3;this[_0x2d00('0x17')]=_0x39b967[_0x2d00('0x17')]||0x96;this[_0x2d00('0x18')]=_0x39b967[_0x2d00('0x18')]||0x3;this[_0x2d00('0x19')]=_0x39b967['dialDropRetryFrequency']||0x96;this[_0x2d00('0x1a')]=_0x39b967['dialAbandonedMaxRetry']||0x3;this[_0x2d00('0x1b')]=_0x39b967[_0x2d00('0x1b')]||0x96;this[_0x2d00('0x1c')]=_0x39b967['dialMachineMaxRetry']||0x3;this[_0x2d00('0x1d')]=_0x39b967[_0x2d00('0x1d')]||0x96;this[_0x2d00('0x1e')]=_0x39b967[_0x2d00('0x1e')]||0x3;this[_0x2d00('0x1f')]=_0x39b967['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x39b967[_0x2d00('0x20')]||'DESC';this[_0x2d00('0x21')]=_0x39b967[_0x2d00('0x21')]||undefined;this[_0x2d00('0x22')]=_0x39b967[_0x2d00('0x22')]||undefined;this[_0x2d00('0x23')]=_0x39b967[_0x2d00('0x23')]||undefined;this[_0x2d00('0x24')]=_0x39b967[_0x2d00('0x24')]?_0x39b967[_0x2d00('0x24')]:undefined;this[_0x2d00('0x25')]=_0x39b967[_0x2d00('0x25')]?_0x39b967[_0x2d00('0x25')]:undefined;this[_0x2d00('0x26')]=_0x39b967[_0x2d00('0x26')]?_0x39b967[_0x2d00('0x26')]:undefined;this[_0x2d00('0x27')]=_0x39b967[_0x2d00('0x27')]?_0x39b967['SquareProject']:undefined;this[_0x2d00('0x28')]=_0x39b967[_0x2d00('0x27')]?_0x39b967['SquareProject']['name']:undefined;this['dialAMDActive']=_0x39b967['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x39b967[_0x2d00('0x29')];this['dialAMDGreeting']=_0x39b967['dialAMDGreeting'];this[_0x2d00('0x2a')]=_0x39b967[_0x2d00('0x2a')];this['dialAMDTotalAnalysisTime']=_0x39b967[_0x2d00('0x2b')];this['dialAMDMinWordLength']=_0x39b967[_0x2d00('0x2c')];this[_0x2d00('0x2d')]=_0x39b967['dialAMDBetweenWordsSilence'];this[_0x2d00('0x2e')]=_0x39b967[_0x2d00('0x2e')];this[_0x2d00('0x2f')]=_0x39b967[_0x2d00('0x2f')];this[_0x2d00('0x30')]=_0x39b967[_0x2d00('0x30')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x7bad=['dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','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','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords'];(function(_0xd6a6d3,_0x38ecce){var _0x5c2900=function(_0x551d8b){while(--_0x551d8b){_0xd6a6d3['push'](_0xd6a6d3['shift']());}};_0x5c2900(++_0x38ecce);}(_0x7bad,0x69));var _0xd7ba=function(_0x16ecad,_0x205047){_0x16ecad=_0x16ecad-0x0;var _0x313ff7=_0x7bad[_0x16ecad];return _0x313ff7;};'use strict';function Campaign(_0xa292d4){this['id']=_0xa292d4['id']||0x0;this[_0xd7ba('0x0')]=_0xa292d4[_0xd7ba('0x0')]||'';this[_0xd7ba('0x1')]=_0xa292d4['type']||_0xd7ba('0x2');this[_0xd7ba('0x3')]=0x0;this[_0xd7ba('0x4')]=0x0;this[_0xd7ba('0x5')]=0x0;this[_0xd7ba('0x6')]=0x0;this[_0xd7ba('0x7')]='';this[_0xd7ba('0x8')]=!![];this[_0xd7ba('0x9')]=_0xa292d4[_0xd7ba('0x9')];this[_0xd7ba('0xa')]=_0xa292d4[_0xd7ba('0xa')];this[_0xd7ba('0xb')]=_0xa292d4[_0xd7ba('0xb')]||null;this[_0xd7ba('0xc')]=_0xa292d4[_0xd7ba('0xc')]?_0xa292d4[_0xd7ba('0xc')]:null;this[_0xd7ba('0xd')]=_0xa292d4['dialOriginateCallerIdName'];this[_0xd7ba('0xe')]=_0xa292d4[_0xd7ba('0xe')];this[_0xd7ba('0xf')]=_0xa292d4[_0xd7ba('0xf')]||0x1e;this[_0xd7ba('0x10')]=_0xa292d4[_0xd7ba('0x10')];this[_0xd7ba('0x11')]=_0xa292d4[_0xd7ba('0x11')];this[_0xd7ba('0x12')]=_0xa292d4['dialBusyMaxRetry'];this[_0xd7ba('0x13')]=_0xa292d4[_0xd7ba('0x13')];this[_0xd7ba('0x14')]=_0xa292d4[_0xd7ba('0x14')];this[_0xd7ba('0x15')]=_0xa292d4[_0xd7ba('0x15')];this[_0xd7ba('0x16')]=_0xa292d4[_0xd7ba('0x16')];this['dialNoSuchNumberMaxRetry']=_0xa292d4[_0xd7ba('0x17')]||0x3;this[_0xd7ba('0x18')]=_0xa292d4[_0xd7ba('0x18')]||0x96;this[_0xd7ba('0x19')]=_0xa292d4[_0xd7ba('0x19')]||0x3;this[_0xd7ba('0x1a')]=_0xa292d4[_0xd7ba('0x1a')]||0x96;this[_0xd7ba('0x1b')]=_0xa292d4['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0xa292d4[_0xd7ba('0x1c')]||0x96;this[_0xd7ba('0x1d')]=_0xa292d4[_0xd7ba('0x1d')]||0x3;this[_0xd7ba('0x1e')]=_0xa292d4[_0xd7ba('0x1e')]||0x96;this['dialAgentRejectMaxRetry']=_0xa292d4['dialAgentRejectMaxRetry']||0x3;this[_0xd7ba('0x1f')]=_0xa292d4[_0xd7ba('0x1f')]||0x96;this[_0xd7ba('0x20')]=_0xa292d4['dialOrderByScheduledAt']||_0xd7ba('0x21');this[_0xd7ba('0x22')]=_0xa292d4[_0xd7ba('0x22')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0xa292d4[_0xd7ba('0x23')]||undefined;this[_0xd7ba('0x24')]=_0xa292d4[_0xd7ba('0x24')]||undefined;this['TrunkBackup']=_0xa292d4[_0xd7ba('0x25')]?_0xa292d4[_0xd7ba('0x25')]:undefined;this[_0xd7ba('0x26')]=_0xa292d4['Trunk']?_0xa292d4[_0xd7ba('0x26')]:undefined;this[_0xd7ba('0x27')]=_0xa292d4[_0xd7ba('0x27')]?_0xa292d4[_0xd7ba('0x27')]:undefined;this[_0xd7ba('0x28')]=_0xa292d4['SquareProject']?_0xa292d4[_0xd7ba('0x28')]:undefined;this[_0xd7ba('0x29')]=_0xa292d4[_0xd7ba('0x28')]?_0xa292d4['SquareProject']['name']:undefined;this[_0xd7ba('0x2a')]=_0xa292d4[_0xd7ba('0x2a')]||![];this['dialAMDInitialSilence']=_0xa292d4['dialAMDInitialSilence'];this['dialAMDGreeting']=_0xa292d4['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0xa292d4[_0xd7ba('0x2b')];this[_0xd7ba('0x2c')]=_0xa292d4['dialAMDTotalAnalysisTime'];this['dialAMDMinWordLength']=_0xa292d4[_0xd7ba('0x2d')];this['dialAMDBetweenWordsSilence']=_0xa292d4[_0xd7ba('0x2e')];this[_0xd7ba('0x2f')]=_0xa292d4[_0xd7ba('0x2f')];this[_0xd7ba('0x30')]=_0xa292d4[_0xd7ba('0x30')];this[_0xd7ba('0x31')]=_0xa292d4[_0xd7ba('0x31')];}module[_0xd7ba('0x32')]=Campaign;
\ No newline at end of file
index c6c28cb..941c384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4342=['accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned','lastdata','duration','type','tag','disposition','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','starttime','channel','calleridname','connectedlinenum','connectedlinename'];(function(_0x4a8629,_0x3f6544){var _0xe192f4=function(_0x4d1653){while(--_0x4d1653){_0x4a8629['push'](_0x4a8629['shift']());}};_0xe192f4(++_0x3f6544);}(_0x4342,0xe5));var _0x2434=function(_0x2a690a,_0x4afc04){_0x2a690a=_0x2a690a-0x0;var _0x8ba65a=_0x4342[_0x2a690a];return _0x8ba65a;};'use strict';function Channel(){this[_0x2434('0x0')]=null;this[_0x2434('0x1')]='';this['destinationchannel']='';this['calleridnum']=0x0;this[_0x2434('0x2')]='';this[_0x2434('0x3')]=undefined;this[_0x2434('0x4')]=undefined;this[_0x2434('0x5')]=0x0;this[_0x2434('0x6')]='';this[_0x2434('0x7')]=0x0;this[_0x2434('0x8')]=0x0;this[_0x2434('0x9')]=0x0;this[_0x2434('0xa')]=![];this[_0x2434('0xb')]=null;this[_0x2434('0xc')]=null;this[_0x2434('0xd')]=![];this[_0x2434('0xe')]=![];this['lastapplication']='';this[_0x2434('0xf')]='';this[_0x2434('0x10')]=0x0;this['billableseconds']=0x0;this['holdtime']=0x0;this[_0x2434('0x11')]=null;this[_0x2434('0x12')]=null;this[_0x2434('0x13')]=null;this['monitor']=![];this['monitorFilename']=null;this[_0x2434('0x14')]=null;this[_0x2434('0x15')]=[];this[_0x2434('0x16')]=undefined;this[_0x2434('0x17')]=undefined;this[_0x2434('0x18')]=undefined;this[_0x2434('0x19')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x9db7=['channel','destinationchannel','calleridnum','connectedlinenum','accountcode','context','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','starttime'];(function(_0x350655,_0x3fd2ab){var _0x4bcbfc=function(_0x278020){while(--_0x278020){_0x350655['push'](_0x350655['shift']());}};_0x4bcbfc(++_0x3fd2ab);}(_0x9db7,0x1bf));var _0x79db=function(_0x1a361,_0x272778){_0x1a361=_0x1a361-0x0;var _0x3acbfd=_0x9db7[_0x1a361];return _0x3acbfd;};'use strict';function Channel(){this[_0x79db('0x0')]=null;this[_0x79db('0x1')]='';this[_0x79db('0x2')]='';this[_0x79db('0x3')]=0x0;this['calleridname']='';this[_0x79db('0x4')]=undefined;this['connectedlinename']=undefined;this[_0x79db('0x5')]=0x0;this[_0x79db('0x6')]='';this['uniqueid']=0x0;this[_0x79db('0x7')]=0x0;this[_0x79db('0x8')]=0x0;this[_0x79db('0x9')]=![];this[_0x79db('0xa')]=null;this[_0x79db('0xb')]=null;this[_0x79db('0xc')]=![];this[_0x79db('0xd')]=![];this[_0x79db('0xe')]='';this[_0x79db('0xf')]='';this[_0x79db('0x10')]=0x0;this[_0x79db('0x11')]=0x0;this[_0x79db('0x12')]=0x0;this['type']=null;this[_0x79db('0x13')]=null;this[_0x79db('0x14')]=null;this[_0x79db('0x15')]=![];this[_0x79db('0x16')]=null;this[_0x79db('0x17')]=null;this[_0x79db('0x18')]=[];this[_0x79db('0x19')]=undefined;this[_0x79db('0x1a')]=undefined;this[_0x79db('0x1b')]=undefined;this['mohtime']=0x0;}module['exports']=Channel;
\ No newline at end of file
index 4584c35..5caab75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7368=['tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token'];(function(_0x530c62,_0x558de3){var _0x46692c=function(_0x569fec){while(--_0x569fec){_0x530c62['push'](_0x530c62['shift']());}};_0x46692c(++_0x558de3);}(_0x7368,0x123));var _0x8736=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7368[_0x167cc1];return _0x10bc4b;};'use strict';function DeskAccount(_0x58fe57){this['id']=_0x58fe57['id']||0x0;this[_0x8736('0x0')]=_0x58fe57[_0x8736('0x0')]||'';this[_0x8736('0x1')]=_0x58fe57['username']||'';this[_0x8736('0x2')]=_0x58fe57[_0x8736('0x2')]||'';this[_0x8736('0x3')]=_0x58fe57[_0x8736('0x3')]||'';this[_0x8736('0x4')]=_0x58fe57[_0x8736('0x4')]||'';this[_0x8736('0x5')]=_0x58fe57[_0x8736('0x5')]||'';this[_0x8736('0x6')]=_0x58fe57[_0x8736('0x6')]||'';this[_0x8736('0x7')]=_0x58fe57[_0x8736('0x7')]||'';this[_0x8736('0x8')]=_0x58fe57['tokenSecret']||'';this[_0x8736('0x9')]=_0x58fe57['type']||'';this[_0x8736('0xa')]=_0x58fe57[_0x8736('0xa')]||'';this[_0x8736('0xb')]=_0x58fe57[_0x8736('0xb')]||{};}module[_0x8736('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x3988=['type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret'];(function(_0x2586fe,_0xb67e47){var _0x33476f=function(_0x358bfb){while(--_0x358bfb){_0x2586fe['push'](_0x2586fe['shift']());}};_0x33476f(++_0xb67e47);}(_0x3988,0xfb));var _0x8398=function(_0x155d9b,_0x1f2f99){_0x155d9b=_0x155d9b-0x0;var _0x1e04c3=_0x3988[_0x155d9b];return _0x1e04c3;};'use strict';function DeskAccount(_0x1eb59c){this['id']=_0x1eb59c['id']||0x0;this[_0x8398('0x0')]=_0x1eb59c[_0x8398('0x0')]||'';this[_0x8398('0x1')]=_0x1eb59c[_0x8398('0x1')]||'';this['remoteUri']=_0x1eb59c[_0x8398('0x2')]||'';this['authType']=_0x1eb59c[_0x8398('0x3')]||'';this[_0x8398('0x4')]=_0x1eb59c['password']||'';this['consumerKey']=_0x1eb59c[_0x8398('0x5')]||'';this[_0x8398('0x6')]=_0x1eb59c[_0x8398('0x6')]||'';this[_0x8398('0x7')]=_0x1eb59c[_0x8398('0x7')]||'';this['tokenSecret']=_0x1eb59c[_0x8398('0x8')]||'';this[_0x8398('0x9')]=_0x1eb59c[_0x8398('0x9')]||'';this[_0x8398('0xa')]=_0x1eb59c[_0x8398('0xa')]||'';this[_0x8398('0xb')]=_0x1eb59c[_0x8398('0xb')]||{};}module[_0x8398('0xc')]=DeskAccount;
\ No newline at end of file
index f87fcbd..75518e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','exports','name','username','password'];(function(_0x4e513f,_0x475fe9){var _0x171f0a=function(_0x263ae3){while(--_0x263ae3){_0x4e513f['push'](_0x4e513f['shift']());}};_0x171f0a(++_0x475fe9);}(_0xb58b,0x1f1));var _0xbb58=function(_0x3d8c4d,_0xd9f488){_0x3d8c4d=_0x3d8c4d-0x0;var _0x2c5512=_0xb58b[_0x3d8c4d];return _0x2c5512;};'use strict';function Dynamics365Account(_0x250573){this['id']=_0x250573['id']||0x0;this[_0xbb58('0x0')]=_0x250573[_0xbb58('0x0')]||'';this[_0xbb58('0x1')]=_0x250573['username']||'';this[_0xbb58('0x2')]=_0x250573[_0xbb58('0x2')]||'';this['remoteUri']=_0x250573[_0xbb58('0x3')]||'';this['tenantId']=_0x250573[_0xbb58('0x4')]||'';this[_0xbb58('0x5')]=_0x250573[_0xbb58('0x5')]||'';this['clientSecret']=_0x250573[_0xbb58('0x6')]||{};this[_0xbb58('0x7')]=_0x250573[_0xbb58('0x7')]||'';this[_0xbb58('0x8')]=_0x250573[_0xbb58('0x8')]||{};}module[_0xbb58('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0xec56=['clientSecret','serverUrl','Configurations','exports','username','password','remoteUri','tenantId','clientId'];(function(_0x42cc1f,_0xe9eb20){var _0x175df5=function(_0x2f3e22){while(--_0x2f3e22){_0x42cc1f['push'](_0x42cc1f['shift']());}};_0x175df5(++_0xe9eb20);}(_0xec56,0x1bd));var _0x6ec5=function(_0x497360,_0x3efc15){_0x497360=_0x497360-0x0;var _0x127fe3=_0xec56[_0x497360];return _0x127fe3;};'use strict';function Dynamics365Account(_0x2f3f02){this['id']=_0x2f3f02['id']||0x0;this['name']=_0x2f3f02['name']||'';this[_0x6ec5('0x0')]=_0x2f3f02[_0x6ec5('0x0')]||'';this[_0x6ec5('0x1')]=_0x2f3f02[_0x6ec5('0x1')]||'';this[_0x6ec5('0x2')]=_0x2f3f02[_0x6ec5('0x2')]||'';this[_0x6ec5('0x3')]=_0x2f3f02[_0x6ec5('0x3')]||'';this[_0x6ec5('0x4')]=_0x2f3f02[_0x6ec5('0x4')]||'';this[_0x6ec5('0x5')]=_0x2f3f02[_0x6ec5('0x5')]||{};this[_0x6ec5('0x6')]=_0x2f3f02[_0x6ec5('0x6')]||'';this[_0x6ec5('0x7')]=_0x2f3f02[_0x6ec5('0x7')]||{};}module[_0x6ec5('0x8')]=Dynamics365Account;
\ No newline at end of file
index fbc56b8..ef260e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d1=['key','name','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId'];(function(_0x49dcdb,_0x12069f){var _0x4afcb7=function(_0xa60cbc){while(--_0xa60cbc){_0x49dcdb['push'](_0x49dcdb['shift']());}};_0x4afcb7(++_0x12069f);}(_0x93d1,0x1b1));var _0x193d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x93d1[_0x3dd15e];return _0x231fd0;};'use strict';function FaxAccount(_0x195081){this['id']=_0x195081['id']||0x0;this[_0x193d('0x0')]=_0x195081[_0x193d('0x0')]||'';this['description']=_0x195081['description'];this[_0x193d('0x1')]=_0x195081[_0x193d('0x1')];this['headerinfo']=_0x195081[_0x193d('0x2')];this['localstationid']=_0x195081[_0x193d('0x3')];this[_0x193d('0x4')]=_0x195081[_0x193d('0x4')]||0x960;this[_0x193d('0x5')]=_0x195081['maxrate']||0x3840;this[_0x193d('0x6')]=_0x195081['modem']||_0x193d('0x7');this[_0x193d('0x8')]=_0x195081[_0x193d('0x8')]||'no';this['faxdetect']=_0x195081[_0x193d('0x9')]||'no';this[_0x193d('0xa')]=_0x195081[_0x193d('0xa')]||0x1388;this[_0x193d('0xb')]=_0x195081[_0x193d('0xb')]||_0x193d('0xc');this[_0x193d('0xd')]=_0x195081[_0x193d('0xd')]?_0x195081[_0x193d('0xd')]:undefined;this[_0x193d('0xe')]=_0x195081[_0x193d('0xe')];this['key']=_0x195081[_0x193d('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0x597c=['ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description'];(function(_0x11fb2d,_0x299421){var _0x1742ac=function(_0x4089bb){while(--_0x4089bb){_0x11fb2d['push'](_0x11fb2d['shift']());}};_0x1742ac(++_0x299421);}(_0x597c,0x1d2));var _0xc597=function(_0x3e7e5a,_0x22e805){_0x3e7e5a=_0x3e7e5a-0x0;var _0x24ade3=_0x597c[_0x3e7e5a];return _0x24ade3;};'use strict';function FaxAccount(_0x1309e1){this['id']=_0x1309e1['id']||0x0;this[_0xc597('0x0')]=_0x1309e1[_0xc597('0x0')]||'';this[_0xc597('0x1')]=_0x1309e1['description'];this[_0xc597('0x2')]=_0x1309e1[_0xc597('0x2')];this[_0xc597('0x3')]=_0x1309e1[_0xc597('0x3')];this[_0xc597('0x4')]=_0x1309e1[_0xc597('0x4')];this['minrate']=_0x1309e1[_0xc597('0x5')]||0x960;this[_0xc597('0x6')]=_0x1309e1['maxrate']||0x3840;this[_0xc597('0x7')]=_0x1309e1[_0xc597('0x7')]||_0xc597('0x8');this[_0xc597('0x9')]=_0x1309e1[_0xc597('0x9')]||'no';this[_0xc597('0xa')]=_0x1309e1[_0xc597('0xa')]||'no';this[_0xc597('0xb')]=_0x1309e1['t38timeout']||0x1388;this['tech']=_0x1309e1[_0xc597('0xc')]||_0xc597('0xd');this[_0xc597('0xe')]=_0x1309e1[_0xc597('0xe')]?_0x1309e1[_0xc597('0xe')]:undefined;this[_0xc597('0xf')]=_0x1309e1[_0xc597('0xf')];this[_0xc597('0x10')]=_0x1309e1['key'];}module[_0xc597('0x11')]=FaxAccount;
\ No newline at end of file
index d692d08..1a989e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf837=['remoteUri','serverUrl','Configurations','exports','name','username','token'];(function(_0x427b2a,_0x181905){var _0x239493=function(_0x3602c6){while(--_0x3602c6){_0x427b2a['push'](_0x427b2a['shift']());}};_0x239493(++_0x181905);}(_0xf837,0xb3));var _0x7f83=function(_0x38fa08,_0x1dc0f6){_0x38fa08=_0x38fa08-0x0;var _0x4a92a0=_0xf837[_0x38fa08];return _0x4a92a0;};'use strict';function FreshdeskAccount(_0x34e95d){this['id']=_0x34e95d['id']||0x0;this[_0x7f83('0x0')]=_0x34e95d[_0x7f83('0x0')]||'';this[_0x7f83('0x1')]=_0x34e95d[_0x7f83('0x1')]||'';this['apiKey']=_0x34e95d[_0x7f83('0x2')]||'';this['remoteUri']=_0x34e95d[_0x7f83('0x3')]||'';this[_0x7f83('0x4')]=_0x34e95d[_0x7f83('0x4')]||'';this['Configurations']=_0x34e95d[_0x7f83('0x5')]||{};}module[_0x7f83('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0x29dd=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x29dd,0x152));var _0xd29d=function(_0x276132,_0x131fcb){_0x276132=_0x276132-0x0;var _0x40835c=_0x29dd[_0x276132];return _0x40835c;};'use strict';function FreshdeskAccount(_0x359835){this['id']=_0x359835['id']||0x0;this[_0xd29d('0x0')]=_0x359835[_0xd29d('0x0')]||'';this['username']=_0x359835[_0xd29d('0x1')]||'';this[_0xd29d('0x2')]=_0x359835[_0xd29d('0x3')]||'';this['remoteUri']=_0x359835[_0xd29d('0x4')]||'';this[_0xd29d('0x5')]=_0x359835[_0xd29d('0x5')]||'';this[_0xd29d('0x6')]=_0x359835['Configurations']||{};}module[_0xd29d('0x7')]=FreshdeskAccount;
\ No newline at end of file
index dc81bdd..c97ddd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1fc=['name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x138ff8,_0x3dbae6){var _0x10f0a8=function(_0x5d6f67){while(--_0x5d6f67){_0x138ff8['push'](_0x138ff8['shift']());}};_0x10f0a8(++_0x3dbae6);}(_0xc1fc,0x93));var _0xcc1f=function(_0x104826,_0x4b0a27){_0x104826=_0x104826-0x0;var _0x4ccc7d=_0xc1fc[_0x104826];return _0x4ccc7d;};'use strict';function FreshsalesAccount(_0x4b7071){this['id']=_0x4b7071['id']||0x0;this[_0xcc1f('0x0')]=_0x4b7071[_0xcc1f('0x0')]||'';this['username']=_0x4b7071[_0xcc1f('0x1')]||'';this[_0xcc1f('0x2')]=_0x4b7071[_0xcc1f('0x3')]||'';this[_0xcc1f('0x4')]=_0x4b7071[_0xcc1f('0x4')]||'';this[_0xcc1f('0x5')]=_0x4b7071[_0xcc1f('0x5')]||'';this[_0xcc1f('0x6')]=_0x4b7071['Configurations']||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x2dc3=['exports','name','username','apiKey','token','remoteUri','Configurations'];(function(_0x4eab34,_0x19a8dc){var _0x4e8166=function(_0x591f92){while(--_0x591f92){_0x4eab34['push'](_0x4eab34['shift']());}};_0x4e8166(++_0x19a8dc);}(_0x2dc3,0x127));var _0x32dc=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x2dc3[_0x2f5ac5];return _0x37c9a8;};'use strict';function FreshsalesAccount(_0x247ca2){this['id']=_0x247ca2['id']||0x0;this[_0x32dc('0x0')]=_0x247ca2[_0x32dc('0x0')]||'';this[_0x32dc('0x1')]=_0x247ca2[_0x32dc('0x1')]||'';this[_0x32dc('0x2')]=_0x247ca2[_0x32dc('0x3')]||'';this[_0x32dc('0x4')]=_0x247ca2[_0x32dc('0x4')]||'';this['serverUrl']=_0x247ca2['serverUrl']||'';this[_0x32dc('0x5')]=_0x247ca2['Configurations']||{};}module[_0x32dc('0x6')]=FreshsalesAccount;
\ No newline at end of file
index 7434738..85986ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a07=['mohtime','variables','exports','type','inbound','uniqueid','calleridnum','queue','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinenum','connectedlinename','priority','lastAssignedTo','motionChannel','voice'];(function(_0x54f54a,_0x3112e0){var _0xb54e66=function(_0x1ac819){while(--_0x1ac819){_0x54f54a['push'](_0x54f54a['shift']());}};_0xb54e66(++_0x3112e0);}(_0x6a07,0x145));var _0x76a0=function(_0x1f8017,_0x32ddcd){_0x1f8017=_0x1f8017-0x0;var _0x87a566=_0x6a07[_0x1f8017];return _0x87a566;};'use strict';function QueueReport(){this[_0x76a0('0x0')]=_0x76a0('0x1');this[_0x76a0('0x2')]='';this[_0x76a0('0x3')]='';this['calleridname']='';this[_0x76a0('0x4')]='';this['queuecallerjoinAt']=null;this['queuecallerleaveAt']=null;this[_0x76a0('0x5')]=0x1;this[_0x76a0('0x6')]=0x1;this[_0x76a0('0x7')]=![];this[_0x76a0('0x8')]=null;this[_0x76a0('0x9')]=![];this[_0x76a0('0xa')]=null;this[_0x76a0('0xb')]=![];this[_0x76a0('0xc')]=null;this['originalposition']=0x1;this[_0x76a0('0xd')]='';this[_0x76a0('0xe')]='';this[_0x76a0('0xf')]='';this['accountcode']='';this['context']='';this['exten']='';this[_0x76a0('0x10')]='';this['holdtime']=0x0;this['assigned']=![];this[_0x76a0('0x11')]='';this[_0x76a0('0x12')]=_0x76a0('0x13');this[_0x76a0('0x14')]=0x0;this[_0x76a0('0x15')]={};}module[_0x76a0('0x16')]=QueueReport;
\ No newline at end of file
+var _0xb487=['mohtime','variables','type','uniqueid','calleridnum','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','originalposition','connectedlinenum','connectedlinename','accountcode','exten','holdtime','assigned','lastAssignedTo'];(function(_0x30a6b7,_0x4560c3){var _0x292095=function(_0x3ac257){while(--_0x3ac257){_0x30a6b7['push'](_0x30a6b7['shift']());}};_0x292095(++_0x4560c3);}(_0xb487,0x167));var _0x7b48=function(_0x5e8e90,_0x5d6a41){_0x5e8e90=_0x5e8e90-0x0;var _0x916214=_0xb487[_0x5e8e90];return _0x916214;};'use strict';function QueueReport(){this[_0x7b48('0x0')]='inbound';this[_0x7b48('0x1')]='';this[_0x7b48('0x2')]='';this['calleridname']='';this['queue']='';this[_0x7b48('0x3')]=null;this[_0x7b48('0x4')]=null;this[_0x7b48('0x5')]=0x1;this[_0x7b48('0x6')]=0x1;this[_0x7b48('0x7')]=![];this[_0x7b48('0x8')]=null;this[_0x7b48('0x9')]=![];this[_0x7b48('0xa')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0x7b48('0xb')]=0x1;this['channel']='';this[_0x7b48('0xc')]='';this[_0x7b48('0xd')]='';this[_0x7b48('0xe')]='';this['context']='';this[_0x7b48('0xf')]='';this['priority']='';this[_0x7b48('0x10')]=0x0;this[_0x7b48('0x11')]=![];this[_0x7b48('0x12')]='';this[_0x7b48('0x13')]=0x0;this[_0x7b48('0x14')]={};}module['exports']=QueueReport;
\ No newline at end of file
index 7686623..513629c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x309b=['password','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','name','username'];(function(_0x1e8d81,_0x44b08e){var _0x1658f6=function(_0x43eaf8){while(--_0x43eaf8){_0x1e8d81['push'](_0x1e8d81['shift']());}};_0x1658f6(++_0x44b08e);}(_0x309b,0x10c));var _0xb309=function(_0xbb799c,_0x36f3fe){_0xbb799c=_0xbb799c-0x0;var _0x2fd8f3=_0x309b[_0xbb799c];return _0x2fd8f3;};'use strict';function SalesforceAccount(_0x557a2c){this['id']=_0x557a2c['id']||0x0;this[_0xb309('0x0')]=_0x557a2c[_0xb309('0x0')]||'';this['username']=_0x557a2c[_0xb309('0x1')]||'';this['remoteUri']=_0x557a2c['remoteUri']||'';this[_0xb309('0x2')]=_0x557a2c[_0xb309('0x2')]||'';this['clientId']=_0x557a2c['clientId']||'';this[_0xb309('0x3')]=_0x557a2c[_0xb309('0x3')]||'';this[_0xb309('0x4')]=_0x557a2c[_0xb309('0x4')]||'';this[_0xb309('0x5')]=_0x557a2c[_0xb309('0x5')]||_0xb309('0x6');this['serverUrl']=_0x557a2c[_0xb309('0x7')]||'';this[_0xb309('0x8')]=_0x557a2c[_0xb309('0x8')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0x625a=['type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken'];(function(_0x11c7b4,_0x32b5b7){var _0xaaeff8=function(_0x3d84b8){while(--_0x3d84b8){_0x11c7b4['push'](_0x11c7b4['shift']());}};_0xaaeff8(++_0x32b5b7);}(_0x625a,0x191));var _0xa625=function(_0x2307fa,_0x266e5e){_0x2307fa=_0x2307fa-0x0;var _0x496486=_0x625a[_0x2307fa];return _0x496486;};'use strict';function SalesforceAccount(_0x3bb5d7){this['id']=_0x3bb5d7['id']||0x0;this['name']=_0x3bb5d7[_0xa625('0x0')]||'';this['username']=_0x3bb5d7[_0xa625('0x1')]||'';this['remoteUri']=_0x3bb5d7[_0xa625('0x2')]||'';this[_0xa625('0x3')]=_0x3bb5d7[_0xa625('0x3')]||'';this[_0xa625('0x4')]=_0x3bb5d7[_0xa625('0x4')]||'';this['clientSecret']=_0x3bb5d7[_0xa625('0x5')]||'';this[_0xa625('0x6')]=_0x3bb5d7['securityToken']||'';this[_0xa625('0x7')]=_0x3bb5d7[_0xa625('0x7')]||_0xa625('0x8');this[_0xa625('0x9')]=_0x3bb5d7[_0xa625('0x9')]||'';this[_0xa625('0xa')]=_0x3bb5d7[_0xa625('0xa')]||{};}module[_0xa625('0xb')]=SalesforceAccount;
\ No newline at end of file
index 272400d..a0be501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5790=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x10b48a,_0x1a0a3f){var _0x2c4533=function(_0x5e4be6){while(--_0x5e4be6){_0x10b48a['push'](_0x10b48a['shift']());}};_0x2c4533(++_0x1a0a3f);}(_0x5790,0x139));var _0x0579=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x5790[_0x4b369d];return _0x571a98;};'use strict';function ServicenowAccount(_0x4a3798){this['id']=_0x4a3798['id']||0x0;this[_0x0579('0x0')]=_0x4a3798[_0x0579('0x0')]||'';this[_0x0579('0x1')]=_0x4a3798[_0x0579('0x1')]||'';this[_0x0579('0x2')]=_0x4a3798['password']||'';this[_0x0579('0x3')]=_0x4a3798[_0x0579('0x3')]||'';this[_0x0579('0x4')]=_0x4a3798[_0x0579('0x4')]||'';this[_0x0579('0x5')]=_0x4a3798[_0x0579('0x5')]||{};}module[_0x0579('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x4e1c=['Configurations','exports','name','username','password'];(function(_0x4bcbde,_0x720bf4){var _0x18c775=function(_0x4a9de5){while(--_0x4a9de5){_0x4bcbde['push'](_0x4bcbde['shift']());}};_0x18c775(++_0x720bf4);}(_0x4e1c,0x19c));var _0xc4e1=function(_0x2601b4,_0x315e78){_0x2601b4=_0x2601b4-0x0;var _0x3e3661=_0x4e1c[_0x2601b4];return _0x3e3661;};'use strict';function ServicenowAccount(_0x171fc7){this['id']=_0x171fc7['id']||0x0;this[_0xc4e1('0x0')]=_0x171fc7[_0xc4e1('0x0')]||'';this[_0xc4e1('0x1')]=_0x171fc7[_0xc4e1('0x1')]||'';this[_0xc4e1('0x2')]=_0x171fc7[_0xc4e1('0x2')]||'';this['remoteUri']=_0x171fc7['remoteUri']||'';this['serverUrl']=_0x171fc7['serverUrl']||'';this['Configurations']=_0x171fc7[_0xc4e1('0x3')]||{};}module[_0xc4e1('0x4')]=ServicenowAccount;
\ No newline at end of file
index 6df5973..2abfe9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e39=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x4eec9b,_0x4aea09){var _0x2e3849=function(_0x24c06d){while(--_0x24c06d){_0x4eec9b['push'](_0x4eec9b['shift']());}};_0x2e3849(++_0x4aea09);}(_0x5e39,0x83));var _0x95e3=function(_0x52ea6a,_0x308dd2){_0x52ea6a=_0x52ea6a-0x0;var _0x344907=_0x5e39[_0x52ea6a];return _0x344907;};'use strict';function SugarcrmAccount(_0x1bedca){this['id']=_0x1bedca['id']||0x0;this[_0x95e3('0x0')]=_0x1bedca[_0x95e3('0x0')]||'';this[_0x95e3('0x1')]=_0x1bedca[_0x95e3('0x1')]||'';this[_0x95e3('0x2')]=_0x1bedca[_0x95e3('0x2')]||'';this[_0x95e3('0x3')]=_0x1bedca[_0x95e3('0x3')]||'';this[_0x95e3('0x4')]=_0x1bedca[_0x95e3('0x4')]||'';this[_0x95e3('0x5')]=_0x1bedca['Configurations']||{};}module[_0x95e3('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x0cb9=['serverUrl','Configurations','name','username','password','remoteUri'];(function(_0x1f7413,_0x3388c3){var _0x2d2775=function(_0x5e5b4){while(--_0x5e5b4){_0x1f7413['push'](_0x1f7413['shift']());}};_0x2d2775(++_0x3388c3);}(_0x0cb9,0x9e));var _0x90cb=function(_0x533c8c,_0x409dcb){_0x533c8c=_0x533c8c-0x0;var _0x993cbe=_0x0cb9[_0x533c8c];return _0x993cbe;};'use strict';function SugarcrmAccount(_0x9174c9){this['id']=_0x9174c9['id']||0x0;this['name']=_0x9174c9[_0x90cb('0x0')]||'';this[_0x90cb('0x1')]=_0x9174c9[_0x90cb('0x1')]||'';this[_0x90cb('0x2')]=_0x9174c9[_0x90cb('0x2')]||'';this[_0x90cb('0x3')]=_0x9174c9[_0x90cb('0x3')]||'';this['serverUrl']=_0x9174c9[_0x90cb('0x4')]||'';this[_0x90cb('0x5')]=_0x9174c9[_0x90cb('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index d0c1ce9..783c7ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf3c=['name','accountcode','state','unknown','stateTime','status'];(function(_0x23b1d5,_0x3043fa){var _0x3f5702=function(_0xc9b7eb){while(--_0xc9b7eb){_0x23b1d5['push'](_0x23b1d5['shift']());}};_0x3f5702(++_0x3043fa);}(_0xbf3c,0x1ce));var _0xcbf3=function(_0x3595e5,_0x5e80d2){_0x3595e5=_0x3595e5-0x0;var _0x1b4543=_0xbf3c[_0x3595e5];return _0x1b4543;};'use strict';function Telephone(_0x67e11f){this['id']=_0x67e11f['id']||0x0;this[_0xcbf3('0x0')]=_0x67e11f['name']||'';this[_0xcbf3('0x1')]=_0x67e11f['accountcode']||'';this[_0xcbf3('0x2')]=_0xcbf3('0x3');this[_0xcbf3('0x4')]=0x0;this[_0xcbf3('0x5')]=_0xcbf3('0x3');this['address']='';}module['exports']=Telephone;
\ No newline at end of file
+var _0xd4bb=['status','exports','name','accountcode','state','unknown','stateTime'];(function(_0x166d3d,_0x3a3e57){var _0x2279e5=function(_0x117266){while(--_0x117266){_0x166d3d['push'](_0x166d3d['shift']());}};_0x2279e5(++_0x3a3e57);}(_0xd4bb,0x144));var _0xbd4b=function(_0x3f2f0d,_0x37930d){_0x3f2f0d=_0x3f2f0d-0x0;var _0x59332b=_0xd4bb[_0x3f2f0d];return _0x59332b;};'use strict';function Telephone(_0x124b6a){this['id']=_0x124b6a['id']||0x0;this[_0xbd4b('0x0')]=_0x124b6a[_0xbd4b('0x0')]||'';this[_0xbd4b('0x1')]=_0x124b6a['accountcode']||'';this[_0xbd4b('0x2')]=_0xbd4b('0x3');this[_0xbd4b('0x4')]=0x0;this[_0xbd4b('0x5')]=_0xbd4b('0x3');this['address']='';}module[_0xbd4b('0x6')]=Telephone;
\ No newline at end of file
index 0dca53c..6e0aaae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x30bab7,_0x5df8f9){var _0x1206a8=function(_0x3d71ca){while(--_0x3d71ca){_0x30bab7['push'](_0x30bab7['shift']());}};_0x1206a8(++_0x5df8f9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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
+var _0xa9e0=['exports','name'];(function(_0x208168,_0x2e633d){var _0x254e6d=function(_0x4705b3){while(--_0x4705b3){_0x208168['push'](_0x208168['shift']());}};_0x254e6d(++_0x2e633d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 830ae3b..c1224dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x41034b,_0x14c8b5){var _0x5d9171=function(_0x2c440d){while(--_0x2c440d){_0x41034b['push'](_0x41034b['shift']());}};_0x5d9171(++_0x14c8b5);}(_0xb10b,0x12a));var _0xbb10=function(_0x50c710,_0x504134){_0x50c710=_0x50c710-0x0;var _0x2d5f79=_0xb10b[_0x50c710];return _0x2d5f79;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
+var _0x1a85=['status','AllConditions','AnyConditions','Actions','name','channel'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x1a85,0x178));var _0x51a8=function(_0x3d34fc,_0x19448a){_0x3d34fc=_0x3d34fc-0x0;var _0x35a98c=_0x1a85[_0x3d34fc];return _0x35a98c;};'use strict';function Trigger(_0x4570ac){this['id']=_0x4570ac['id']||0x0;this['name']=_0x4570ac[_0x51a8('0x0')]||'';this[_0x51a8('0x1')]=_0x4570ac[_0x51a8('0x1')]||'voice';this['status']=_0x4570ac[_0x51a8('0x2')]||![];this[_0x51a8('0x3')]=_0x4570ac[_0x51a8('0x3')]||[];this['AnyConditions']=_0x4570ac[_0x51a8('0x4')]||[];this['Actions']=_0x4570ac[_0x51a8('0x5')]||[];}module['exports']=Trigger;
\ No newline at end of file
index 76f4c95..420ee2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc867=['domain','domainport','stateRegistry','address','defaultuser','exports','active','state','stateTime','status','unknown','registry','indexOf','host','port'];(function(_0x2bc4cd,_0x1359d3){var _0x2f7cbf=function(_0x19a586){while(--_0x19a586){_0x2bc4cd['push'](_0x2bc4cd['shift']());}};_0x2f7cbf(++_0x1359d3);}(_0xc867,0x132));var _0x7c86=function(_0x28eece,_0x75172f){_0x28eece=_0x28eece-0x0;var _0x3d1c32=_0xc867[_0x28eece];return _0x3d1c32;};'use strict';function Trunk(_0x4af787){this['id']=_0x4af787['id']||0x0;this[_0x7c86('0x0')]=_0x4af787[_0x7c86('0x0')]||![];this['name']=_0x4af787['name']||'';this[_0x7c86('0x1')]='unknown';this[_0x7c86('0x2')]=0x0;this[_0x7c86('0x3')]=_0x7c86('0x4');this[_0x7c86('0x5')]=_0x4af787['registry']&&_0x4af787['registry'][_0x7c86('0x6')](':')?_0x4af787[_0x7c86('0x5')]['split'](':')[0x0]:'';this[_0x7c86('0x7')]='';this[_0x7c86('0x8')]='';this[_0x7c86('0x9')]='';this[_0x7c86('0xa')]='';this['refresh']='';this[_0x7c86('0xb')]='unknown';this['registrationtime']='';this[_0x7c86('0xc')]='';this[_0x7c86('0xd')]=_0x4af787[_0x7c86('0xd')]||'';}module[_0x7c86('0xe')]=Trunk;
\ No newline at end of file
+var _0xbe50=['name','state','status','unknown','registry','indexOf','host','domain','stateRegistry','registrationtime','address','defaultuser','active'];(function(_0x39b3fd,_0x4c106d){var _0x2dc7cf=function(_0x10b6ff){while(--_0x10b6ff){_0x39b3fd['push'](_0x39b3fd['shift']());}};_0x2dc7cf(++_0x4c106d);}(_0xbe50,0x81));var _0x0be5=function(_0x11bffb,_0x7a5f1e){_0x11bffb=_0x11bffb-0x0;var _0xdea602=_0xbe50[_0x11bffb];return _0xdea602;};'use strict';function Trunk(_0x1ad91e){this['id']=_0x1ad91e['id']||0x0;this[_0x0be5('0x0')]=_0x1ad91e[_0x0be5('0x0')]||![];this['name']=_0x1ad91e[_0x0be5('0x1')]||'';this[_0x0be5('0x2')]='unknown';this['stateTime']=0x0;this[_0x0be5('0x3')]=_0x0be5('0x4');this['registry']=_0x1ad91e[_0x0be5('0x5')]&&_0x1ad91e[_0x0be5('0x5')][_0x0be5('0x6')](':')?_0x1ad91e['registry']['split'](':')[0x0]:'';this[_0x0be5('0x7')]='';this['port']='';this[_0x0be5('0x8')]='';this['domainport']='';this['refresh']='';this[_0x0be5('0x9')]=_0x0be5('0x4');this[_0x0be5('0xa')]='';this[_0x0be5('0xb')]='';this[_0x0be5('0xc')]=_0x1ad91e[_0x0be5('0xc')]||'';}module['exports']=Trunk;
\ No newline at end of file
index 6d412e9..ed9241f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d5=['exten','recordingFormat','none','exports'];(function(_0x48724a,_0x3dac26){var _0x39b1=function(_0x1a0e29){while(--_0x1a0e29){_0x48724a['push'](_0x48724a['shift']());}};_0x39b1(++_0x3dac26);}(_0x00d5,0x1c0));var _0x500d=function(_0x1329ae,_0x28f239){_0x1329ae=_0x1329ae-0x0;var _0x1129cb=_0x00d5[_0x1329ae];return _0x1129cb;};'use strict';function voiceExtension(_0x1aefa9){this['id']=_0x1aefa9['id']||0x0;this[_0x500d('0x0')]=_0x1aefa9[_0x500d('0x0')]||'';this['recordingFormat']=_0x1aefa9[_0x500d('0x1')]||_0x500d('0x2');this['mandatoryDisposition']=_0x1aefa9['mandatoryDisposition']||![];}module[_0x500d('0x3')]=voiceExtension;
\ No newline at end of file
+var _0xf68b=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x324d02,_0x6d9c0b){var _0x3d4f59=function(_0x279f6b){while(--_0x279f6b){_0x324d02['push'](_0x324d02['shift']());}};_0x3d4f59(++_0x6d9c0b);}(_0xf68b,0x1d2));var _0xbf68=function(_0x48bca9,_0x21a0d4){_0x48bca9=_0x48bca9-0x0;var _0x3accbe=_0xf68b[_0x48bca9];return _0x3accbe;};'use strict';function voiceExtension(_0x57dc34){this['id']=_0x57dc34['id']||0x0;this[_0xbf68('0x0')]=_0x57dc34[_0xbf68('0x0')]||'';this[_0xbf68('0x1')]=_0x57dc34['recordingFormat']||_0xbf68('0x2');this[_0xbf68('0x3')]=_0x57dc34[_0xbf68('0x3')]||![];}module[_0xbf68('0x4')]=voiceExtension;
\ No newline at end of file
index 9e64d16..211e0db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d2b=['dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','ringing','ringinuse','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry'];(function(_0x178c78,_0x5d4191){var _0x215cb0=function(_0x5d61b0){while(--_0x5d61b0){_0x178c78['push'](_0x178c78['shift']());}};_0x215cb0(++_0x5d4191);}(_0x7d2b,0x1aa));var _0xb7d2=function(_0x34243d,_0x357877){_0x34243d=_0x34243d-0x0;var _0xb14106=_0x7d2b[_0x34243d];return _0xb14106;};'use strict';var statusDesc=[_0xb7d2('0x0'),_0xb7d2('0x1'),_0xb7d2('0x2'),_0xb7d2('0x3'),'invalid','unavailable',_0xb7d2('0x4'),_0xb7d2('0x5'),'onhold'];var monitorFormat={'wav':_0xb7d2('0x6'),'wav49':_0xb7d2('0x7'),'gsm':_0xb7d2('0x8')};var strategy={'rrmemory':_0xb7d2('0x9'),'roundrobin':_0xb7d2('0xa')};function VoiceQueue(_0x17ef67){this['id']=_0x17ef67['id']||0x0;this['name']=_0x17ef67[_0xb7d2('0xb')]||'';this['monitor_format']=_0x17ef67[_0xb7d2('0xc')]||'';this['type']=_0x17ef67[_0xb7d2('0xd')]||_0xb7d2('0xe');this[_0xb7d2('0xf')]=0x0;this['talking']=0x0;this['total']=0x0;this[_0xb7d2('0x10')]=0x0;this[_0xb7d2('0x11')]=0x0;this[_0xb7d2('0x12')]=0x0;this[_0xb7d2('0x13')]=0x0;this[_0xb7d2('0x14')]=0x0;this[_0xb7d2('0x15')]=0x0;this[_0xb7d2('0x16')]=0x0;this[_0xb7d2('0x17')]=0x0;this[_0xb7d2('0x18')]=_0x17ef67[_0xb7d2('0x18')]||![];this['acwTimeout']=_0x17ef67[_0xb7d2('0x19')]||0xa;this['autopause']=_0x17ef67[_0xb7d2('0x1a')]||'no';this['sendMessageOneNotActive']=!![];this[_0xb7d2('0x1b')]='';this['originated']=0x0;this['temp']=0x0;this[_0xb7d2('0x1c')]=_0x17ef67['dialTimezone']||null;this[_0xb7d2('0x1d')]=_0x17ef67[_0xb7d2('0x1d')]?_0x17ef67['dialGlobalInterval']:null;this[_0xb7d2('0x1e')]=_0x17ef67[_0xb7d2('0x1e')];this[_0xb7d2('0x1f')]=_0x17ef67[_0xb7d2('0x1f')]||'progressive';this[_0xb7d2('0x20')]=_0x17ef67['dialLimitChannel']||0x0;this[_0xb7d2('0x21')]=_0x17ef67['dialLimitQueue']||0x0;this[_0xb7d2('0x22')]=_0x17ef67['dialPowerLevel']||0x1;this[_0xb7d2('0x23')]=_0x17ef67[_0xb7d2('0x23')]||_0xb7d2('0x24');this['dialPredictiveOptimizationPercentage']=_0x17ef67[_0xb7d2('0x25')]||0.03;this[_0xb7d2('0x26')]=_0x17ef67[_0xb7d2('0x26')]||0x258;this[_0xb7d2('0x27')]=_0x17ef67[_0xb7d2('0x27')]||_0xb7d2('0x28');this[_0xb7d2('0x29')]=_0x17ef67[_0xb7d2('0x29')]||_0xb7d2('0x28');this[_0xb7d2('0x2a')]=_0x17ef67[_0xb7d2('0x2a')]||0x1e;this[_0xb7d2('0x2b')]=_0x17ef67[_0xb7d2('0x2b')]||_0xb7d2('0x2c');this[_0xb7d2('0x2d')]=_0x17ef67[_0xb7d2('0x2d')]||0x3;this[_0xb7d2('0x2e')]=_0x17ef67[_0xb7d2('0x2e')]||undefined;this[_0xb7d2('0x2f')]=_0x17ef67[_0xb7d2('0x2f')]||0x3;this[_0xb7d2('0x30')]=_0x17ef67['dialCongestionRetryFrequency']||0x96;this[_0xb7d2('0x31')]=_0x17ef67[_0xb7d2('0x31')]||0x3;this[_0xb7d2('0x32')]=_0x17ef67[_0xb7d2('0x32')]||0x96;this[_0xb7d2('0x33')]=_0x17ef67['dialNoAnswerMaxRetry']||0x3;this[_0xb7d2('0x34')]=_0x17ef67[_0xb7d2('0x34')]||0x96;this[_0xb7d2('0x35')]=_0x17ef67[_0xb7d2('0x35')]||0x3;this[_0xb7d2('0x36')]=_0x17ef67[_0xb7d2('0x36')]||0x96;this[_0xb7d2('0x37')]=_0x17ef67['dialDropMaxRetry']||0x3;this[_0xb7d2('0x38')]=_0x17ef67[_0xb7d2('0x38')]||0x96;this[_0xb7d2('0x39')]=_0x17ef67['dialAbandonedMaxRetry']||0x3;this[_0xb7d2('0x3a')]=_0x17ef67[_0xb7d2('0x3a')]||0x96;this[_0xb7d2('0x3b')]=_0x17ef67[_0xb7d2('0x3b')]||0x3;this['dialMachineRetryFrequency']=_0x17ef67['dialMachineRetryFrequency']||0x96;this[_0xb7d2('0x3c')]=_0x17ef67['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0x17ef67[_0xb7d2('0x3d')]||0x96;this['dialGlobalMaxRetry']=_0x17ef67[_0xb7d2('0x3e')]||0x4;this[_0xb7d2('0x3f')]=_0x17ef67[_0xb7d2('0x3f')]?_0x17ef67[_0xb7d2('0x3f')]:undefined;this[_0xb7d2('0x40')]=_0x17ef67[_0xb7d2('0x40')]?_0x17ef67['TrunkBackup']:undefined;this[_0xb7d2('0x41')]=_0x17ef67[_0xb7d2('0x41')]||undefined;this[_0xb7d2('0x42')]=_0x17ef67[_0xb7d2('0x42')]?_0x17ef67[_0xb7d2('0x42')]:undefined;this['dialOrderByScheduledAt']=_0x17ef67['dialOrderByScheduledAt']||_0xb7d2('0x43');this[_0xb7d2('0x44')]=_0x17ef67[_0xb7d2('0x44')]||undefined;this[_0xb7d2('0x45')]=_0x17ef67[_0xb7d2('0x45')]||undefined;this[_0xb7d2('0x46')]=strategy[_0x17ef67[_0xb7d2('0x46')]]||_0xb7d2('0x9');this[_0xb7d2('0x47')]=!![];this[_0xb7d2('0x48')]=_0x17ef67['dialAMDActive']||![];this[_0xb7d2('0x49')]=_0x17ef67[_0xb7d2('0x49')];this[_0xb7d2('0x4a')]=_0x17ef67[_0xb7d2('0x4a')];this[_0xb7d2('0x4b')]=_0x17ef67[_0xb7d2('0x4b')];this[_0xb7d2('0x4c')]=_0x17ef67[_0xb7d2('0x4c')];this[_0xb7d2('0x4d')]=_0x17ef67[_0xb7d2('0x4d')];this[_0xb7d2('0x4e')]=_0x17ef67[_0xb7d2('0x4e')];this[_0xb7d2('0x4f')]=_0x17ef67[_0xb7d2('0x4f')];this[_0xb7d2('0x50')]=_0x17ef67[_0xb7d2('0x50')];this[_0xb7d2('0x51')]=_0x17ef67[_0xb7d2('0x51')];this['outboundRejectCallsDay']=0x0;this[_0xb7d2('0x52')]=0x0;this['timeout']=_0x17ef67[_0xb7d2('0x53')];this[_0xb7d2('0x54')]=0x0;this[_0xb7d2('0x55')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0xb7d2('0x56')]=0x0;this[_0xb7d2('0x57')]=0x0;this[_0xb7d2('0x58')]=0x0;this[_0xb7d2('0x59')]=0x0;this[_0xb7d2('0x5a')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0xb7d2('0x5b')]=0x0;this[_0xb7d2('0x5c')]=0x0;this[_0xb7d2('0x5d')]=0x0;this[_0xb7d2('0x5e')]=0x0;this[_0xb7d2('0x5f')]=0x0;this[_0xb7d2('0x60')]=undefined;this[_0xb7d2('0x61')]=undefined;this[_0xb7d2('0x62')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xb7d2('0x63')]=0x0;this[_0xb7d2('0x64')]=0x0;this[_0xb7d2('0x65')]=0x0;this[_0xb7d2('0x66')]=0x0;this[_0xb7d2('0x67')]=0x0;this[_0xb7d2('0x68')]=0x0;this[_0xb7d2('0x69')]=0x0;this[_0xb7d2('0x6a')]=0x0;this[_0xb7d2('0x6b')]=_0x17ef67[_0xb7d2('0x6c')]||0x14;this[_0xb7d2('0x6d')]=_0x17ef67[_0xb7d2('0x6c')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xb7d2('0x6e')]=0x1;this[_0xb7d2('0x6f')]=0x0;this[_0xb7d2('0x70')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0xb7d2('0x71')]=0x0;this[_0xb7d2('0x72')]=_0x17ef67[_0xb7d2('0x72')]||0x1e;this[_0xb7d2('0x73')]=_0x17ef67[_0xb7d2('0x73')]||![];this['dialQueueProject2']=_0x17ef67['dialQueueProject2']||undefined;this['dialAgiAfterHangupClient']=_0x17ef67[_0xb7d2('0x74')]||![];this[_0xb7d2('0x75')]=_0x17ef67[_0xb7d2('0x75')]||![];this[_0xb7d2('0xc')]=monitorFormat[_0x17ef67[_0xb7d2('0xc')]]?monitorFormat[_0x17ef67['monitor_format']]:undefined;this[_0xb7d2('0x76')]=_0x17ef67[_0xb7d2('0x76')]||![];this[_0xb7d2('0x77')]=_0x17ef67[_0xb7d2('0x77')]?_0x17ef67[_0xb7d2('0x77')]:undefined;}module[_0xb7d2('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0x60b1=['dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','ringing','ringinuse','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','total','sumDuration','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete'];(function(_0x1d4c51,_0x3942d6){var _0x3b9898=function(_0x233ca5){while(--_0x233ca5){_0x1d4c51['push'](_0x1d4c51['shift']());}};_0x3b9898(++_0x3942d6);}(_0x60b1,0x116));var _0x160b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x60b1[_0x2dafbe];return _0x58a45a;};'use strict';var statusDesc=[_0x160b('0x0'),_0x160b('0x1'),_0x160b('0x2'),'busy',_0x160b('0x3'),'unavailable',_0x160b('0x4'),_0x160b('0x5'),'onhold'];var monitorFormat={'wav':_0x160b('0x6'),'wav49':_0x160b('0x7'),'gsm':_0x160b('0x8')};var strategy={'rrmemory':_0x160b('0x9'),'roundrobin':_0x160b('0xa')};function VoiceQueue(_0xbd88cc){this['id']=_0xbd88cc['id']||0x0;this['name']=_0xbd88cc[_0x160b('0xb')]||'';this['monitor_format']=_0xbd88cc[_0x160b('0xc')]||'';this['type']=_0xbd88cc[_0x160b('0xd')]||_0x160b('0xe');this[_0x160b('0xf')]=0x0;this['talking']=0x0;this[_0x160b('0x10')]=0x0;this['answered']=0x0;this[_0x160b('0x11')]=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0x160b('0x12')]=0x0;this[_0x160b('0x13')]=0x0;this[_0x160b('0x14')]=0x0;this[_0x160b('0x15')]=0x0;this[_0x160b('0x16')]=_0xbd88cc[_0x160b('0x16')]||![];this['acwTimeout']=_0xbd88cc[_0x160b('0x17')]||0xa;this[_0x160b('0x18')]=_0xbd88cc[_0x160b('0x18')]||'no';this[_0x160b('0x19')]=!![];this[_0x160b('0x1a')]='';this[_0x160b('0x1b')]=0x0;this[_0x160b('0x1c')]=0x0;this[_0x160b('0x1d')]=_0xbd88cc[_0x160b('0x1d')]||null;this[_0x160b('0x1e')]=_0xbd88cc[_0x160b('0x1e')]?_0xbd88cc['dialGlobalInterval']:null;this[_0x160b('0x1f')]=_0xbd88cc[_0x160b('0x1f')];this[_0x160b('0x20')]=_0xbd88cc[_0x160b('0x20')]||_0x160b('0x21');this['dialLimitChannel']=_0xbd88cc[_0x160b('0x22')]||0x0;this['dialLimitQueue']=_0xbd88cc[_0x160b('0x23')]||0x0;this['dialPowerLevel']=_0xbd88cc[_0x160b('0x24')]||0x1;this[_0x160b('0x25')]=_0xbd88cc[_0x160b('0x25')]||'dropRate';this[_0x160b('0x26')]=_0xbd88cc[_0x160b('0x26')]||0.03;this[_0x160b('0x27')]=_0xbd88cc[_0x160b('0x27')]||0x258;this[_0x160b('0x28')]=_0xbd88cc[_0x160b('0x28')]||_0x160b('0x29');this[_0x160b('0x2a')]=_0xbd88cc[_0x160b('0x2a')]||'anonymous';this[_0x160b('0x2b')]=_0xbd88cc[_0x160b('0x2b')]||0x1e;this[_0x160b('0x2c')]=_0xbd88cc[_0x160b('0x2c')]||_0x160b('0x2d');this[_0x160b('0x2e')]=_0xbd88cc[_0x160b('0x2e')]||0x3;this[_0x160b('0x2f')]=_0xbd88cc['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0xbd88cc[_0x160b('0x30')]||0x3;this['dialCongestionRetryFrequency']=_0xbd88cc[_0x160b('0x31')]||0x96;this[_0x160b('0x32')]=_0xbd88cc[_0x160b('0x32')]||0x3;this[_0x160b('0x33')]=_0xbd88cc[_0x160b('0x33')]||0x96;this[_0x160b('0x34')]=_0xbd88cc[_0x160b('0x34')]||0x3;this[_0x160b('0x35')]=_0xbd88cc[_0x160b('0x35')]||0x96;this[_0x160b('0x36')]=_0xbd88cc[_0x160b('0x36')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0xbd88cc['dialNoSuchNumberRetryFrequency']||0x96;this[_0x160b('0x37')]=_0xbd88cc[_0x160b('0x37')]||0x3;this[_0x160b('0x38')]=_0xbd88cc[_0x160b('0x38')]||0x96;this[_0x160b('0x39')]=_0xbd88cc[_0x160b('0x39')]||0x3;this[_0x160b('0x3a')]=_0xbd88cc[_0x160b('0x3a')]||0x96;this[_0x160b('0x3b')]=_0xbd88cc['dialMachineMaxRetry']||0x3;this[_0x160b('0x3c')]=_0xbd88cc[_0x160b('0x3c')]||0x96;this[_0x160b('0x3d')]=_0xbd88cc[_0x160b('0x3d')]||0x3;this['dialAgentRejectRetryFrequency']=_0xbd88cc[_0x160b('0x3e')]||0x96;this[_0x160b('0x3f')]=_0xbd88cc[_0x160b('0x3f')]||0x4;this[_0x160b('0x40')]=_0xbd88cc[_0x160b('0x40')]?_0xbd88cc[_0x160b('0x40')]:undefined;this[_0x160b('0x41')]=_0xbd88cc['TrunkBackup']?_0xbd88cc[_0x160b('0x41')]:undefined;this[_0x160b('0x42')]=_0xbd88cc[_0x160b('0x42')]||undefined;this[_0x160b('0x43')]=_0xbd88cc[_0x160b('0x43')]?_0xbd88cc[_0x160b('0x43')]:undefined;this[_0x160b('0x44')]=_0xbd88cc[_0x160b('0x44')]||'DESC';this[_0x160b('0x45')]=_0xbd88cc[_0x160b('0x45')]||undefined;this[_0x160b('0x46')]=_0xbd88cc[_0x160b('0x46')]||undefined;this[_0x160b('0x47')]=strategy[_0xbd88cc[_0x160b('0x47')]]||_0x160b('0x9');this[_0x160b('0x48')]=!![];this['dialAMDActive']=_0xbd88cc[_0x160b('0x49')]||![];this[_0x160b('0x4a')]=_0xbd88cc[_0x160b('0x4a')];this['dialAMDGreeting']=_0xbd88cc['dialAMDGreeting'];this[_0x160b('0x4b')]=_0xbd88cc[_0x160b('0x4b')];this[_0x160b('0x4c')]=_0xbd88cc[_0x160b('0x4c')];this['dialAMDMinWordLength']=_0xbd88cc[_0x160b('0x4d')];this[_0x160b('0x4e')]=_0xbd88cc[_0x160b('0x4e')];this[_0x160b('0x4f')]=_0xbd88cc[_0x160b('0x4f')];this[_0x160b('0x50')]=_0xbd88cc['dialAMDSilenceThreshold'];this[_0x160b('0x51')]=_0xbd88cc['dialAMDMaximumWordLength'];this[_0x160b('0x52')]=0x0;this[_0x160b('0x53')]=0x0;this['timeout']=_0xbd88cc['timeout'];this[_0x160b('0x54')]=0x0;this[_0x160b('0x55')]=0x0;this[_0x160b('0x56')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0x160b('0x57')]=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0x160b('0x58')]=0x0;this[_0x160b('0x59')]=0x0;this[_0x160b('0x5a')]=0x0;this[_0x160b('0x5b')]=0x0;this[_0x160b('0x5c')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x160b('0x5d')]=0x0;this[_0x160b('0x5e')]=0x0;this[_0x160b('0x5f')]=undefined;this['startPredictive']=undefined;this[_0x160b('0x60')]=undefined;this[_0x160b('0x61')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x160b('0x62')]=0x0;this[_0x160b('0x63')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x160b('0x64')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x160b('0x65')]=0x0;this[_0x160b('0x66')]=0x0;this[_0x160b('0x67')]=_0xbd88cc[_0x160b('0x68')]||0x14;this['predictiveIntervalMinThreshold']=_0xbd88cc[_0x160b('0x68')]||0xa;this[_0x160b('0x69')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x160b('0x6a')]=0x1;this[_0x160b('0x6b')]=0x0;this[_0x160b('0x6c')]=0x0;this[_0x160b('0x6d')]=0x0;this['erlangBusyFactor']=0x0;this[_0x160b('0x6e')]=_0xbd88cc[_0x160b('0x6e')]||0x1e;this[_0x160b('0x6f')]=_0xbd88cc[_0x160b('0x6f')]||![];this[_0x160b('0x70')]=_0xbd88cc[_0x160b('0x70')]||undefined;this['dialAgiAfterHangupClient']=_0xbd88cc['dialAgiAfterHangupClient']||![];this[_0x160b('0x71')]=_0xbd88cc[_0x160b('0x71')]||![];this[_0x160b('0xc')]=monitorFormat[_0xbd88cc[_0x160b('0xc')]]?monitorFormat[_0xbd88cc[_0x160b('0xc')]]:undefined;this[_0x160b('0x72')]=_0xbd88cc[_0x160b('0x72')]||![];this[_0x160b('0x73')]=_0xbd88cc['mandatoryDispositionPause']?_0xbd88cc[_0x160b('0x73')]:undefined;}module[_0x160b('0x74')]=VoiceQueue;
\ No newline at end of file
index 786fe83..bf03f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78dd=['remoteUri','Configurations','exports','name','username','accessKey'];(function(_0x45a472,_0x3fd9f6){var _0x46a410=function(_0x53e574){while(--_0x53e574){_0x45a472['push'](_0x45a472['shift']());}};_0x46a410(++_0x3fd9f6);}(_0x78dd,0x18f));var _0xd78d=function(_0x4bcf38,_0x3c12be){_0x4bcf38=_0x4bcf38-0x0;var _0x4a89be=_0x78dd[_0x4bcf38];return _0x4a89be;};'use strict';function VtigerAccount(_0x15625a){this['id']=_0x15625a['id']||0x0;this[_0xd78d('0x0')]=_0x15625a['name']||'';this['username']=_0x15625a[_0xd78d('0x1')]||'';this[_0xd78d('0x2')]=_0x15625a['accessKey']||'';this[_0xd78d('0x3')]=_0x15625a[_0xd78d('0x3')]||'';this['serverUrl']=_0x15625a['serverUrl']||'';this[_0xd78d('0x4')]=_0x15625a[_0xd78d('0x4')]||{};}module[_0xd78d('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x310f=['name','username','accessKey','remoteUri','serverUrl','Configurations','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x310f,0x13b));var _0xf310=function(_0x3c84e2,_0x318aba){_0x3c84e2=_0x3c84e2-0x0;var _0xcf634e=_0x310f[_0x3c84e2];return _0xcf634e;};'use strict';function VtigerAccount(_0x48ee92){this['id']=_0x48ee92['id']||0x0;this[_0xf310('0x0')]=_0x48ee92['name']||'';this[_0xf310('0x1')]=_0x48ee92['username']||'';this[_0xf310('0x2')]=_0x48ee92['accessKey']||'';this[_0xf310('0x3')]=_0x48ee92[_0xf310('0x3')]||'';this[_0xf310('0x4')]=_0x48ee92[_0xf310('0x4')]||'';this[_0xf310('0x5')]=_0x48ee92['Configurations']||{};}module[_0xf310('0x6')]=VtigerAccount;
\ No newline at end of file
index 25b9284..6592265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c12=['remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','password','token'];(function(_0x5c72b7,_0x330234){var _0x2679f2=function(_0x3227c7){while(--_0x3227c7){_0x5c72b7['push'](_0x5c72b7['shift']());}};_0x2679f2(++_0x330234);}(_0x3c12,0xb1));var _0x23c1=function(_0x2b305c,_0x5ae303){_0x2b305c=_0x2b305c-0x0;var _0x5d8c85=_0x3c12[_0x2b305c];return _0x5d8c85;};'use strict';function ZendeskAccount(_0x2c9118){this['id']=_0x2c9118['id']||0x0;this[_0x23c1('0x0')]=_0x2c9118[_0x23c1('0x0')]||'';this['username']=_0x2c9118['username']||'';this[_0x23c1('0x1')]=_0x2c9118[_0x23c1('0x1')]||'';this[_0x23c1('0x2')]=_0x2c9118[_0x23c1('0x2')]||'';this[_0x23c1('0x3')]=_0x2c9118[_0x23c1('0x3')]||'';this[_0x23c1('0x4')]=_0x2c9118[_0x23c1('0x4')]||'';this[_0x23c1('0x5')]=_0x2c9118['type']||_0x23c1('0x6');this['serverUrl']=_0x2c9118[_0x23c1('0x7')]||'';this[_0x23c1('0x8')]=_0x2c9118[_0x23c1('0x8')]||{};}module[_0x23c1('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0xf0cc=['username','password','token','remoteUri','authType','integrationTab','serverUrl','Configurations','exports','name'];(function(_0x4dfc6a,_0xdc760d){var _0x5612f7=function(_0x268970){while(--_0x268970){_0x4dfc6a['push'](_0x4dfc6a['shift']());}};_0x5612f7(++_0xdc760d);}(_0xf0cc,0x117));var _0xcf0c=function(_0x5c15b5,_0x5e165b){_0x5c15b5=_0x5c15b5-0x0;var _0xc6b274=_0xf0cc[_0x5c15b5];return _0xc6b274;};'use strict';function ZendeskAccount(_0x453402){this['id']=_0x453402['id']||0x0;this[_0xcf0c('0x0')]=_0x453402['name']||'';this[_0xcf0c('0x1')]=_0x453402['username']||'';this[_0xcf0c('0x2')]=_0x453402[_0xcf0c('0x2')]||'';this[_0xcf0c('0x3')]=_0x453402[_0xcf0c('0x3')]||'';this[_0xcf0c('0x4')]=_0x453402[_0xcf0c('0x4')]||'';this[_0xcf0c('0x5')]=_0x453402[_0xcf0c('0x5')]||'';this['type']=_0x453402['type']||_0xcf0c('0x6');this[_0xcf0c('0x7')]=_0x453402[_0xcf0c('0x7')]||'';this[_0xcf0c('0x8')]=_0x453402[_0xcf0c('0x8')]||{};}module[_0xcf0c('0x9')]=ZendeskAccount;
\ No newline at end of file
index ccfe2eb..3148704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0efd=['name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x2ff2e2,_0x52a0c4){var _0x293aa2=function(_0x5c17c4){while(--_0x5c17c4){_0x2ff2e2['push'](_0x2ff2e2['shift']());}};_0x293aa2(++_0x52a0c4);}(_0x0efd,0x1e0));var _0xd0ef=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0efd[_0x3dd15e];return _0x231fd0;};'use strict';function ZohoAccount(_0x4c83b8){this['id']=_0x4c83b8['id']||0x0;this[_0xd0ef('0x0')]=_0x4c83b8[_0xd0ef('0x0')]||'';this[_0xd0ef('0x1')]=_0x4c83b8['description']||'';this[_0xd0ef('0x2')]=_0x4c83b8['host']||'';this['zone']=_0x4c83b8[_0xd0ef('0x3')]||'';this[_0xd0ef('0x4')]=_0x4c83b8[_0xd0ef('0x4')]||'';this[_0xd0ef('0x5')]=_0x4c83b8['clientSecret']||'';this[_0xd0ef('0x6')]=_0x4c83b8[_0xd0ef('0x6')]||'';this[_0xd0ef('0x7')]=_0x4c83b8[_0xd0ef('0x7')]||'';this[_0xd0ef('0x8')]=_0x4c83b8['refreshToken']||'';this[_0xd0ef('0x9')]=_0x4c83b8[_0xd0ef('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x6290=['clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x6290,0x172));var _0x0629=function(_0xb304ec,_0x27e02f){_0xb304ec=_0xb304ec-0x0;var _0x52305e=_0x6290[_0xb304ec];return _0x52305e;};'use strict';function ZohoAccount(_0x3aa61f){this['id']=_0x3aa61f['id']||0x0;this[_0x0629('0x0')]=_0x3aa61f[_0x0629('0x0')]||'';this[_0x0629('0x1')]=_0x3aa61f['description']||'';this[_0x0629('0x2')]=_0x3aa61f[_0x0629('0x2')]||'';this[_0x0629('0x3')]=_0x3aa61f['zone']||'';this[_0x0629('0x4')]=_0x3aa61f['clientId']||'';this[_0x0629('0x5')]=_0x3aa61f[_0x0629('0x5')]||'';this[_0x0629('0x6')]=_0x3aa61f[_0x0629('0x6')]||'';this[_0x0629('0x7')]=_0x3aa61f[_0x0629('0x7')]||'';this['refreshToken']=_0x3aa61f[_0x0629('0x8')]||'';this[_0x0629('0x9')]=_0x3aa61f[_0x0629('0x9')]||{};}module[_0x0629('0xa')]=ZohoAccount;
\ No newline at end of file
index 50273cc..c36bf39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c0f=['exports','util','moment','string','isNil','uniqueid','idContact','queue','type','campaigntype','dialAnswer','membername','Agent','name','channelAgent','format','calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number'];(function(_0x5a9b4a,_0x320c1e){var _0x389e45=function(_0x26adea){while(--_0x26adea){_0x5a9b4a['push'](_0x5a9b4a['shift']());}};_0x389e45(++_0x320c1e);}(_0x2c0f,0x19f));var _0xf2c0=function(_0x2a8860,_0x2da926){_0x2a8860=_0x2a8860-0x0;var _0x2f47a4=_0x2c0f[_0x2a8860];return _0x2f47a4;};'use strict';var util=require(_0xf2c0('0x0'));var _=require('lodash');var moment=require(_0xf2c0('0x1'));function checkNameSurname(_0x77ec94,_0x41072f,_0x2d8b08){var _0x4b18ba='';if(!_['isNil'](_0x41072f)&&_0xf2c0('0x2')===typeof _0x41072f){_0x4b18ba+=_0x41072f;}if(!_[_0xf2c0('0x3')](_0x2d8b08)&&'string'===typeof _0x2d8b08){_0x4b18ba+='\x20'+_0x2d8b08;}if(_0x4b18ba!==''){return _0x4b18ba;}return _0x77ec94;}function Action(_0x53effd,_0x1696ee,_0x2136d9,_0x48addc,_0xfd82e9){this[_0xf2c0('0x4')]=_0x2136d9||undefined;this[_0xf2c0('0x5')]=_0x53effd['id'];this[_0xf2c0('0x6')]=_0x1696ee['name'];this['type']=_0x1696ee[_0xf2c0('0x7')];this[_0xf2c0('0x8')]=_0xf2c0('0x6');this[_0xf2c0('0x9')]=![];this[_0xf2c0('0xa')]=_[_0xf2c0('0x3')](_0x53effd[_0xf2c0('0xb')])?undefined:_0x53effd[_0xf2c0('0xb')][_0xf2c0('0xc')];this[_0xf2c0('0xd')]=this['membername']?util[_0xf2c0('0xe')]('SIP/%s',this[_0xf2c0('0xa')]):_0x48addc||undefined;this[_0xf2c0('0xf')]=checkNameSurname(_0x53effd[_0xf2c0('0x10')][_0xf2c0('0x11')],_0x53effd[_0xf2c0('0x10')][_0xf2c0('0x12')],_0x53effd[_0xf2c0('0x10')]['lastName']);this[_0xf2c0('0x13')]=_0x53effd[_0xf2c0('0x13')]||![];this[_0xf2c0('0x14')]=_0x53effd[_0xf2c0('0x10')][_0xf2c0('0x11')];this[_0xf2c0('0x15')]=_0x53effd[_0xf2c0('0x15')];this['countbusyretry']=_0x53effd[_0xf2c0('0x16')]||0x0;this['countcongestionretry']=_0x53effd[_0xf2c0('0x17')]||0x0;this['countnoanswerretry']=_0x53effd[_0xf2c0('0x18')]||0x0;this[_0xf2c0('0x19')]=(_0x53effd[_0xf2c0('0x16')]||0x0)+(_0x53effd[_0xf2c0('0x17')]||0x0)+(_0x53effd[_0xf2c0('0x18')]||0x0)+(_0x53effd[_0xf2c0('0x1a')]||0x0)+(_0x53effd[_0xf2c0('0x1b')]||0x0)+(_0x53effd[_0xf2c0('0x1c')]||0x0)+(_0x53effd[_0xf2c0('0x1d')]||0x0)+(_0x53effd[_0xf2c0('0x1e')]||0x0);this[_0xf2c0('0x1a')]=_0x53effd[_0xf2c0('0x1a')]||0x0;this['countdropretry']=_0x53effd[_0xf2c0('0x1b')]||0x0;this[_0xf2c0('0x1c')]=_0x53effd['countabandonedretry']||0x0;this[_0xf2c0('0x1d')]=_0x53effd[_0xf2c0('0x1d')]||0x0;this[_0xf2c0('0x1e')]=_0x53effd[_0xf2c0('0x1e')]||0x0;this['callback']=_0x53effd[_0xf2c0('0x1f')];this[_0xf2c0('0x20')]=_0x53effd['callbackuniqueid'];this[_0xf2c0('0x21')]=_0x53effd[_0xf2c0('0x21')];this[_0xf2c0('0x22')]=_0x53effd[_0xf2c0('0x22')];this['ContactId']=_0x53effd[_0xf2c0('0x23')];this[_0xf2c0('0x24')]=_0x53effd['ListId'];this[_0xf2c0('0x25')]=_[_0xf2c0('0x3')](_0x53effd[_0xf2c0('0xb')])?_0x53effd[_0xf2c0('0x25')]:_0x53effd[_0xf2c0('0xb')]['id'];this[_0xf2c0('0x26')]=_0x53effd[_0xf2c0('0x26')];this[_0xf2c0('0x27')]='';this[_0xf2c0('0x28')]='';}Action[_0xf2c0('0x29')][_0xf2c0('0x2a')]=function(){return util['format'](_0xf2c0('0x2b'),this[_0xf2c0('0xf')],this[_0xf2c0('0x2c')]);};module[_0xf2c0('0x2d')]=Action;
\ No newline at end of file
+var _0xa3d9=['SIP/%s','phone','Contact','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','calleridname','exports','lodash','moment','isNil','string','uniqueid','idContact','name','type','queue','membername','Agent','channelAgent'];(function(_0x22d5b6,_0x3264f0){var _0x320752=function(_0x1022a6){while(--_0x1022a6){_0x22d5b6['push'](_0x22d5b6['shift']());}};_0x320752(++_0x3264f0);}(_0xa3d9,0x1d4));var _0x9a3d=function(_0x552d6f,_0xeef12b){_0x552d6f=_0x552d6f-0x0;var _0x30d231=_0xa3d9[_0x552d6f];return _0x30d231;};'use strict';var util=require('util');var _=require(_0x9a3d('0x0'));var moment=require(_0x9a3d('0x1'));function checkNameSurname(_0x1500ee,_0x568a86,_0x300579){var _0x55a193='';if(!_[_0x9a3d('0x2')](_0x568a86)&&_0x9a3d('0x3')===typeof _0x568a86){_0x55a193+=_0x568a86;}if(!_[_0x9a3d('0x2')](_0x300579)&&'string'===typeof _0x300579){_0x55a193+='\x20'+_0x300579;}if(_0x55a193!==''){return _0x55a193;}return _0x1500ee;}function Action(_0x1c7a27,_0x2052e2,_0x411d11,_0x11a58f,_0x27b732){this[_0x9a3d('0x4')]=_0x411d11||undefined;this[_0x9a3d('0x5')]=_0x1c7a27['id'];this['queue']=_0x2052e2[_0x9a3d('0x6')];this[_0x9a3d('0x7')]=_0x2052e2['type'];this['campaigntype']=_0x9a3d('0x8');this['dialAnswer']=![];this[_0x9a3d('0x9')]=_[_0x9a3d('0x2')](_0x1c7a27[_0x9a3d('0xa')])?undefined:_0x1c7a27[_0x9a3d('0xa')][_0x9a3d('0x6')];this[_0x9a3d('0xb')]=this[_0x9a3d('0x9')]?util['format'](_0x9a3d('0xc'),this['membername']):_0x11a58f||undefined;this['calleridname']=checkNameSurname(_0x1c7a27['Contact'][_0x9a3d('0xd')],_0x1c7a27[_0x9a3d('0xe')]['firstName'],_0x1c7a27[_0x9a3d('0xe')]['lastName']);this['active']=_0x1c7a27['active']||![];this[_0x9a3d('0xf')]=_0x1c7a27[_0x9a3d('0xe')][_0x9a3d('0xd')];this[_0x9a3d('0x10')]=_0x1c7a27[_0x9a3d('0x10')];this[_0x9a3d('0x11')]=_0x1c7a27['countbusyretry']||0x0;this[_0x9a3d('0x12')]=_0x1c7a27[_0x9a3d('0x12')]||0x0;this[_0x9a3d('0x13')]=_0x1c7a27[_0x9a3d('0x13')]||0x0;this[_0x9a3d('0x14')]=(_0x1c7a27[_0x9a3d('0x11')]||0x0)+(_0x1c7a27[_0x9a3d('0x12')]||0x0)+(_0x1c7a27[_0x9a3d('0x13')]||0x0)+(_0x1c7a27[_0x9a3d('0x15')]||0x0)+(_0x1c7a27[_0x9a3d('0x16')]||0x0)+(_0x1c7a27[_0x9a3d('0x17')]||0x0)+(_0x1c7a27[_0x9a3d('0x18')]||0x0)+(_0x1c7a27[_0x9a3d('0x19')]||0x0);this[_0x9a3d('0x15')]=_0x1c7a27['countnosuchnumberretry']||0x0;this[_0x9a3d('0x16')]=_0x1c7a27['countdropretry']||0x0;this[_0x9a3d('0x17')]=_0x1c7a27[_0x9a3d('0x17')]||0x0;this[_0x9a3d('0x18')]=_0x1c7a27[_0x9a3d('0x18')]||0x0;this[_0x9a3d('0x19')]=_0x1c7a27['countagentrejectretry']||0x0;this['callback']=_0x1c7a27[_0x9a3d('0x1a')];this[_0x9a3d('0x1b')]=_0x1c7a27['callbackuniqueid'];this[_0x9a3d('0x1c')]=_0x1c7a27[_0x9a3d('0x1c')];this['recallme']=_0x1c7a27['recallme'];this['ContactId']=_0x1c7a27[_0x9a3d('0x1d')];this[_0x9a3d('0x1e')]=_0x1c7a27['ListId'];this[_0x9a3d('0x1f')]=_[_0x9a3d('0x2')](_0x1c7a27[_0x9a3d('0xa')])?_0x1c7a27[_0x9a3d('0x1f')]:_0x1c7a27[_0x9a3d('0xa')]['id'];this[_0x9a3d('0x20')]=_0x1c7a27['VoiceQueueId'];this[_0x9a3d('0x21')]='';this[_0x9a3d('0x22')]='';}Action[_0x9a3d('0x23')][_0x9a3d('0x24')]=function(){return util['format'](_0x9a3d('0x25'),this[_0x9a3d('0x26')],this['number']);};module[_0x9a3d('0x27')]=Action;
\ No newline at end of file
index caad622..83cf9ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb89e=['createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','loggedIn','AGENTS_NOT_LOGGED','NOT_ACTIVE','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','dialBusyMaxRetry','dialBusyRetryFrequency','activeContact','NOANSWER','countnoanswerretry','custom:agentnoanswer','noanswer','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','Global','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','run','execRun','unlock','recallme','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','dialCutDigit','phone','substring','trim','getCallerId','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','getCallerIdRandom','extractCalleridName','originatecalleridnum','extractCalleridNumber','toLowerVariables','Action','variablesAction','channelAgent','destconnectedlinenum','user:%s','accountcode','[originated][increment]','OriginateError','logLookAgent','clone','isFailure','unlockContact','disableContact','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','transfer','[syncHangup][talking][transfer]','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','uuid','md5','../../../config/environment','../../../config/logger','preview','actionPreview','./rpcDb','./action','./util/util','redis','defaults','localhost','prototype','tail','finally','campaignsPreview','voiceQueues','trunks','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','syncHangup','bind','syncHangupRequest','dialend','newexten','syncNewExten','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','voice:queue:%s','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','syncCampaigns','hasOwnProperty','setMessage','recallMe','sequence','enqueue','isNil','actions','info','[clearZombieChannels][talking]','Queue','queue','stringify','pTalking:\x20','dialAnswer','pick','UserId','VoiceQueueId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','clearZombieChannels','[action]','agentReadyId','then','getDiff','dialRecallMeTimeout','Agent','voicePause','[RecallMe]','logger2','starttime','format','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue'];(function(_0x4487d9,_0x4b8147){var _0x4c1072=function(_0x11fcca){while(--_0x11fcca){_0x4487d9['push'](_0x4487d9['shift']());}};_0x4c1072(++_0x4b8147);}(_0xb89e,0xc9));var _0xeb89=function(_0x36bf46,_0x3d8db9){_0x36bf46=_0x36bf46-0x0;var _0x1d0a72=_0xb89e[_0x36bf46];return _0x1d0a72;};'use strict';var util=require(_0xeb89('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0xeb89('0x1'));var moment=require('moment');var md5=require(_0xeb89('0x2'));var Redis=require('ioredis');var config=require(_0xeb89('0x3'));var logger=require(_0xeb89('0x4'))(_0xeb89('0x5'));var loggerAction=require(_0xeb89('0x4'))(_0xeb89('0x6'));var ami=require('../ami');var rpcDb=require(_0xeb89('0x7'));var Action=require(_0xeb89('0x8'));var ut=require(_0xeb89('0x9'));config[_0xeb89('0xa')]=_[_0xeb89('0xb')](config[_0xeb89('0xa')],{'host':_0xeb89('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xeb89('0xa')]));var Sequence=function(){};Sequence[_0xeb89('0xd')]['enqueue']=function(_0x57f4ce){this['tail']=this[_0xeb89('0xe')]?this[_0xeb89('0xe')][_0xeb89('0xf')](_0x57f4ce):_0x57f4ce();};function Preview(_0x834842){this['sequence']=new Sequence();this[_0xeb89('0x10')]=_0x834842[_0xeb89('0x11')];this[_0xeb89('0x12')]=_0x834842[_0xeb89('0x12')];this['actions']={};this[_0xeb89('0x13')]=_0x834842[_0xeb89('0x13')];this[_0xeb89('0x14')]=0x0;ami['on'](_0xeb89('0x15'),this[_0xeb89('0x16')]['bind'](this));ami['on']('hangup',this[_0xeb89('0x17')][_0xeb89('0x18')](this));ami['on']('hanguprequest',this[_0xeb89('0x19')]['bind'](this));ami['on'](_0xeb89('0x1a'),this['syncDialEnd']['bind'](this));ami['on'](_0xeb89('0x1b'),this[_0xeb89('0x1c')][_0xeb89('0x18')](this));ami['on']('varset',this[_0xeb89('0x1d')][_0xeb89('0x18')](this));ami['on'](_0xeb89('0x1e'),this[_0xeb89('0x1f')][_0xeb89('0x18')](this));ami['on'](_0xeb89('0x20'),this[_0xeb89('0x21')][_0xeb89('0x18')](this));this[_0xeb89('0x22')](this[_0xeb89('0x10')]);}function emit(_0x5644dc,_0x1b37c2,_0x35dc2c){io['to'](_0x5644dc)[_0xeb89('0x23')](_0x1b37c2,_0x35dc2c);}function emitCampaignPreview(_0x1cdae1){if(_0x1cdae1[_0xeb89('0x24')]===_0xeb89('0x25')){var _0x5a0f9f={'id':_0x1cdae1['id'],'name':_0x1cdae1[_0xeb89('0x26')],'strategy':_0x1cdae1[_0xeb89('0x27')],'answered':_0x1cdae1['answered'],'available':_0x1cdae1[_0xeb89('0x28')],'loggedIn':_0x1cdae1['loggedIn'],'pTalking':_0x1cdae1[_0xeb89('0x29')],'sumBillable':_0x1cdae1[_0xeb89('0x2a')],'sumDuration':_0x1cdae1[_0xeb89('0x2b')],'sumHoldTime':_0x1cdae1[_0xeb89('0x2c')]||0x0,'talking':_0x1cdae1[_0xeb89('0x2d')],'total':_0x1cdae1[_0xeb89('0x2e')],'type':_0x1cdae1[_0xeb89('0x24')],'unmanaged':_0x1cdae1[_0xeb89('0x2f')],'abandoned':_0x1cdae1[_0xeb89('0x30')],'waiting':_0x1cdae1[_0xeb89('0x31')],'loggedInDb':_0x1cdae1['loggedInDb'],'dialActive':_0x1cdae1[_0xeb89('0x32')],'dialMethod':_0x1cdae1[_0xeb89('0x33')],'dialOriginateCallerIdName':_0x1cdae1[_0xeb89('0x34')],'dialOriginateCallerIdNumber':_0x1cdae1['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1cdae1[_0xeb89('0x35')],'dialPrefix':_0x1cdae1['dialPrefix'],'outboundAnswerAgiCallsDay':_0x1cdae1[_0xeb89('0x36')],'outboundAnswerCallsDay':_0x1cdae1[_0xeb89('0x37')],'outboundBlacklistCallsDay':_0x1cdae1[_0xeb89('0x38')],'outboundBusyCallsDay':_0x1cdae1[_0xeb89('0x39')],'outboundCongestionCallsDay':_0x1cdae1[_0xeb89('0x3a')],'outboundDropCallsDayACS':_0x1cdae1[_0xeb89('0x3b')],'outboundDropCallsDayCallersExit':_0x1cdae1['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x1cdae1['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1cdae1[_0xeb89('0x3c')],'outboundNoSuchCallsDay':_0x1cdae1['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x1cdae1[_0xeb89('0x3d')],'outboundReCallsDay':_0x1cdae1['outboundReCallsDay'],'outboundRejectCallsDay':_0x1cdae1[_0xeb89('0x3e')],'outboundUnknownCallsDay':_0x1cdae1[_0xeb89('0x3f')],'outboundAbandonedCallsDay':_0x1cdae1[_0xeb89('0x40')],'predictiveIntervalAnsweredCalls':_0x1cdae1[_0xeb89('0x41')],'predictiveIntervalAvgHoldtime':_0x1cdae1[_0xeb89('0x42')],'predictiveIntervalAvgTalktime':_0x1cdae1[_0xeb89('0x43')],'predictiveIntervalDroppedCallsCallersExit':_0x1cdae1[_0xeb89('0x44')],'predictiveIntervalDroppedCallsTimeout':_0x1cdae1[_0xeb89('0x45')],'predictiveIntervalErlangCalls':_0x1cdae1[_0xeb89('0x46')],'predictiveIntervalErlangCallsDroppedCalls':_0x1cdae1[_0xeb89('0x47')],'predictiveIntervalHitRate':_0x1cdae1[_0xeb89('0x48')],'predictiveIntervalMultiplicativeFactor':_0x1cdae1[_0xeb89('0x49')],'predictiveIntervalPauses':_0x1cdae1[_0xeb89('0x4a')],'predictiveIntervalAvailable':_0x1cdae1[_0xeb89('0x4b')],'predictiveIntervalTotalCalls':_0x1cdae1[_0xeb89('0x4c')],'message':_0x1cdae1[_0xeb89('0x4d')],'originated':_0x1cdae1[_0xeb89('0x4e')],'erlangCalls':_0x1cdae1[_0xeb89('0x4f')],'erlangCallToSecond':_0x1cdae1[_0xeb89('0x50')],'erlangAbandonmentRate':_0x1cdae1[_0xeb89('0x51')],'erlangBusyFactor':_0x1cdae1[_0xeb89('0x52')],'startPredictive':_0x1cdae1[_0xeb89('0x53')],'startProgressive':_0x1cdae1['startProgressive']};if(_0x1cdae1['Trunk']){_0x5a0f9f['Trunk']={'id':_0x1cdae1[_0xeb89('0x54')]['id'],'name':_0x1cdae1[_0xeb89('0x54')][_0xeb89('0x26')],'active':_0x1cdae1[_0xeb89('0x54')][_0xeb89('0x55')],'callerid':_0x1cdae1['Trunk'][_0xeb89('0x56')]};}if(_0x1cdae1[_0xeb89('0x57')]){_0x5a0f9f['Interval']={'id':_0x1cdae1[_0xeb89('0x57')]['id'],'name':_0x1cdae1[_0xeb89('0x57')]['name']};}var _0x266c04=md5(JSON['stringify'](_0x5a0f9f));if(_0x1cdae1['md5']!==_0x266c04){_0x1cdae1['md5']=_0x266c04;emit(util['format'](_0xeb89('0x58'),_0x5a0f9f[_0xeb89('0x26')]),'voice_queue:save',_0x5a0f9f);}}}function emitVoiceQueueChannelRemove(_0x599f8b){logger['info'](_0xeb89('0x59'),JSON['stringify'](_0x599f8b));emit(util['format'](_0xeb89('0x58'),_0x599f8b[_0xeb89('0x26')]),_0xeb89('0x5a'),_0x599f8b);io[_0xeb89('0x23')](_0xeb89('0x5b'),_0x599f8b);}function notSendMessagesQueue(_0xc2f59d){if(_0xc2f59d[_0xeb89('0x5c')]){if(_0xc2f59d['originated']===0x0&&_0xc2f59d[_0xeb89('0x29')]===0x0){_0xc2f59d['sendMessageOneNotActive']=![];_0xc2f59d[_0xeb89('0x28')]=0x0;_0xc2f59d[_0xeb89('0x5d')]=0x0;_0xc2f59d[_0xeb89('0x4d')]='NOT_ACTIVE';ut[_0xeb89('0x5e')](_0xeb89('0x5f'),_0xc2f59d['name']+_0xeb89('0x60'));}else{_0xc2f59d[_0xeb89('0x4d')]=_0xeb89('0x61');ut[_0xeb89('0x5e')](_0xeb89('0x5f'),_0xc2f59d['name']+'\x20is\x20disactive');}emitCampaignPreview(_0xc2f59d);}}Preview['prototype'][_0xeb89('0x22')]=function(){var _0x4b88ce=this;setInterval(function(){_0x4b88ce[_0xeb89('0x62')]();},0x7cf);};Preview[_0xeb89('0xd')][_0xeb89('0x62')]=function(){var _0x5aa1c7=this[_0xeb89('0x10')];this[_0xeb89('0x14')]+=0x1;for(var _0x579314 in _0x5aa1c7){if(_0x5aa1c7[_0xeb89('0x63')](_0x579314)&&(_0x5aa1c7[_0x579314][_0xeb89('0x33')]===_0xeb89('0x5')||_0x5aa1c7[_0x579314]['dialMethod']==='booked')&&_0x5aa1c7[_0x579314]['type']===_0xeb89('0x25')){if(this[_0xeb89('0x14')]>0x7){this[_0xeb89('0x14')]=0x0;this['clearZombieChannels']();}}if(_0x5aa1c7[_0xeb89('0x63')](_0x579314)&&_0x5aa1c7[_0x579314]['dialMethod']===_0xeb89('0x5')&&_0x5aa1c7[_0x579314][_0xeb89('0x24')]==='outbound'){if(_0x5aa1c7[_0x579314][_0xeb89('0x32')]){this[_0xeb89('0x64')](_0x5aa1c7[_0x579314]);this[_0xeb89('0x65')](_0x5aa1c7[_0x579314]);}else{notSendMessagesQueue(_0x5aa1c7[_0x579314]);}}}};Preview[_0xeb89('0xd')]['clearZombieChannel']=function(_0x211dd7){var _0x286075=this;this[_0xeb89('0x66')][_0xeb89('0x67')](function(){if(!_[_0xeb89('0x68')](_0x286075[_0xeb89('0x69')][_0x211dd7])){loggerAction[_0xeb89('0x6a')](_0xeb89('0x6b'),_0x211dd7,_0xeb89('0x6c'),_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x6d')],'originated:\x20',JSON[_0xeb89('0x6e')](_0x286075[_0xeb89('0x10')][_0x286075[_0xeb89('0x69')][_0x211dd7]['queue']]['originated']),_0xeb89('0x6f'),JSON[_0xeb89('0x6e')](_0x286075[_0xeb89('0x10')][_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x6d')]][_0xeb89('0x29')]),JSON[_0xeb89('0x6e')](_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x70')]),JSON[_0xeb89('0x6e')](_[_0xeb89('0x71')](_0x286075[_0xeb89('0x69')][_0x211dd7],['contactId',_0xeb89('0x72'),_0xeb89('0x73'),_0xeb89('0x74')])));return ami['Action']({'action':_0xeb89('0x75'),'channel':_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x76')]})[_0xeb89('0x77')](function(_0x331307){if(_0x331307[_0xeb89('0x4d')]===_0xeb89('0x78')){setTimeout(function(){if(_0x286075['actions'][_0x211dd7]){ut[_0xeb89('0x79')](_0x286075[_0xeb89('0x10')][_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x6d')]],_0xeb89('0x7a'));if(_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x70')]===!![]){ut[_0xeb89('0x7b')](_0x286075['campaignsPreview'][_0x286075[_0xeb89('0x69')][_0x211dd7][_0xeb89('0x6d')]],_0xeb89('0x7a'));ut[_0xeb89('0x7c')](_0xeb89('0x7d')+_0x211dd7,_0x286075[_0xeb89('0x69')][_0x211dd7]['queue']);}ut[_0xeb89('0x7c')]('[Dialer][checkChannel][Preview]'+_0x211dd7,_0x286075[_0xeb89('0x69')][_0x211dd7]['queue']);delete _0x286075['actions'][_0x211dd7];}},0x2328);}});}});};Preview[_0xeb89('0xd')][_0xeb89('0x7e')]=function(){var _0x4a9713=this;loggerAction[_0xeb89('0x6a')](_0xeb89('0x7f'),_['size'](this[_0xeb89('0x69')]));for(var _0x5ad892 in this[_0xeb89('0x69')]){if(_0x4a9713['actions'][_0xeb89('0x63')](_0x5ad892)){_0x4a9713['clearZombieChannel'](_0x5ad892);}}};Preview['prototype'][_0xeb89('0x65')]=function(_0x3837b5){var _0x395882=this;rpcDb['getContactRecallMe'](_0x3837b5['id'],ut[_0xeb89('0x80')](this[_0xeb89('0x13')]))[_0xeb89('0x81')](function(_0x850917){if(!_[_0xeb89('0x68')](_0x850917)){for(var _0xc20f26=0x0;_0xc20f26<_0x850917['length'];_0xc20f26+=0x1){if(ut[_0xeb89('0x82')](_0x850917[_0xc20f26]['scheduledat'])<_0x3837b5[_0xeb89('0x83')]*0x3c){if(_0x850917[_0xc20f26][_0xeb89('0x84')]&&!_0x850917[_0xc20f26]['Agent'][_0xeb89('0x85')]){_0x395882['run'](_0x850917[_0xc20f26]['id'])[_0xeb89('0x81')](ut['logger2'](_0xeb89('0x86')))[_0xeb89('0x77')](ut[_0xeb89('0x87')](_0xeb89('0x86')));}else{rpcDb['disableContact'](_0x850917[_0xc20f26]['id']);}}else{var _0x5ef4d3=new Action(_0x850917[_0xc20f26],_0x3837b5);_0x5ef4d3[_0xeb89('0x88')]=moment()[_0xeb89('0x89')](_0xeb89('0x8a'));_0x3837b5[_0xeb89('0x8b')]+=0x1;ut[_0xeb89('0x8c')](_0x5ef4d3,0x17,_0xeb89('0x8d'));if(_0x3837b5[_0xeb89('0x8e')]){rpcDb[_0xeb89('0x8f')](ut[_0xeb89('0x90')](_0x850917[_0xc20f26]));rpcDb[_0xeb89('0x91')](_0x5ef4d3,'[HistoryDialRecallInQueue][historyCatch]');}else{ut['logCustomer'](_0x5ef4d3,0x16,_0xeb89('0x92'));rpcDb[_0xeb89('0x91')](_0x5ef4d3,_0xeb89('0x93'));rpcDb[_0xeb89('0x94')](_0x5ef4d3,'[HistoryRecallClose]');}}}}})[_0xeb89('0x77')](ut[_0xeb89('0x87')](_0xeb89('0x95')));};Preview['prototype'][_0xeb89('0x64')]=function(_0x329107){_0x329107[_0xeb89('0x5c')]=!![];if(ut[_0xeb89('0x96')](_0x329107[_0xeb89('0x97')])){_0x329107['message']=_0xeb89('0x98');}else if(!ut['isActive'](_0x329107['dialActive'])){_0x329107[_0xeb89('0x4d')]=_0xeb89('0x99');}else if(!this[_0xeb89('0x9a')](_0x329107['Trunk'])){if(!this[_0xeb89('0x9a')](_0x329107[_0xeb89('0x9b')])){_0x329107[_0xeb89('0x4d')]='TRUNK_IS_NOT_REACHABLE';}else{_0x329107[_0xeb89('0x4d')]=_0xeb89('0x9c');}}else{_0x329107[_0xeb89('0x4d')]=_0xeb89('0x9c');}emitCampaignPreview(_0x329107);};Preview[_0xeb89('0xd')][_0xeb89('0x9d')]=function(_0x43154f,_0x90b137,_0x461c2b){var _0x4e359a=this;var _0x4eabb=this[_0xeb89('0x69')][_0x90b137];var _0x3c32a9=this[_0xeb89('0x10')][_0x4eabb[_0xeb89('0x6d')]];var _0x521ab6;if(_0x3c32a9){switch(_0x461c2b){case'1':_0x3c32a9['outboundNoSuchCallsDay']+=0x1;_0x4eabb[_0xeb89('0x9e')]+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut[_0xeb89('0xa0')](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x0,_0xeb89('0xa1'));ami['emit'](_0xeb89('0xa2'),ut[_0xeb89('0xa3')](_0x4eabb,'nosuchnumber'));rpcDb[_0xeb89('0x91')](_0x4eabb,_0xeb89('0xa4'));if(ut[_0xeb89('0xa0')](_0x4eabb)>=_0x3c32a9[_0xeb89('0xa5')]){_0x521ab6=ut[_0xeb89('0xa6')](_0x4eabb,0xf,'Global');rpcDb[_0xeb89('0x94')](_0x521ab6,_0xeb89('0xa7'));}else{if(_0x4eabb[_0xeb89('0x9e')]>=_0x3c32a9[_0xeb89('0xa8')]){rpcDb[_0xeb89('0x94')](_0x4eabb,_0xeb89('0xa7'));}else{rpcDb[_0xeb89('0xa9')](ut[_0xeb89('0xaa')](_0x4eabb,'countnosuchnumberretry',_0x3c32a9[_0xeb89('0xab')]),_0x4eabb[_0xeb89('0xac')],_0x4eabb['activeContact']);}}delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xad')]];break;case _0xeb89('0xae'):var _0x492132=moment()[_0xeb89('0x89')](_0xeb89('0x8a'));_0x4eabb[_0xeb89('0xaf')]=_0x492132;_0x4eabb[_0xeb89('0xb0')]=_0x492132;_0x4eabb[_0xeb89('0x70')]=!![];_0x3c32a9[_0xeb89('0x29')]+=0x1;logger[_0xeb89('0x6a')](_0xeb89('0xb1'),_0x4eabb[_0xeb89('0xb2')],_0xeb89('0xb3'),_0x3c32a9[_0xeb89('0x26')],_0xeb89('0x6f'),_0x3c32a9['pTalking']);ami['emit'](_0xeb89('0xb4'),ut[_0xeb89('0xa3')](_0x4eabb,_0xeb89('0xb5'),this['campaignsPreview'][_0x4eabb[_0xeb89('0x6d')]]));if(_0x3c32a9[_0xeb89('0xb6')]){ami[_0xeb89('0x23')](_0xeb89('0xb7'),ut[_0xeb89('0xb8')](_0x4eabb));}break;case'16':ami['emit'](_0xeb89('0xb9'),ut['buildObj'](_0x4eabb,_0xeb89('0xba'),this[_0xeb89('0x10')][_0x4eabb[_0xeb89('0x6d')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x4eabb,_0xeb89('0xba')));_0x3c32a9[_0xeb89('0x37')]+=0x1;_0x3c32a9[_0xeb89('0x2e')]+=0x1;_0x3c32a9['answered']+=0x1;ut[_0xeb89('0x7b')](_0x3c32a9,_0xeb89('0xbb'));_0x4eabb[_0xeb89('0x9f')]=ut[_0xeb89('0xa0')](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x4,_0xeb89('0xbc'));rpcDb[_0xeb89('0x91')](_0x4eabb,_0xeb89('0xbd'));rpcDb['createCustomerFinal'](_0x4eabb,_0xeb89('0xbe'));rpcDb[_0xeb89('0xbf')](_0x4eabb);_0x3c32a9['sumDuration']+=_0x4eabb[_0xeb89('0xc0')];_0x3c32a9[_0xeb89('0x2a')]+=_0x4eabb['talktime'];logger[_0xeb89('0x6a')](_0xeb89('0xc1'),_0x4eabb[_0xeb89('0xb2')],_0xeb89('0xb3'),_0x3c32a9[_0xeb89('0x26')],_0xeb89('0x6f'),_0x3c32a9[_0xeb89('0x29')]);delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xad')]];break;case _0xeb89('0xc2'):_0x3c32a9['outboundBusyCallsDay']+=0x1;_0x4eabb['countbusyretry']+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut[_0xeb89('0xa0')](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x5,'Busy');ami['emit']('custom:agentbusy',ut[_0xeb89('0xa3')](_0x4eabb,_0xeb89('0xc3')));rpcDb[_0xeb89('0x91')](_0x4eabb,_0xeb89('0xc4'));if(ut['totalGlobal'](_0x4eabb)>=_0x3c32a9['dialGlobalMaxRetry']){_0x521ab6=ut['cloneAction'](_0x4eabb,0xf,'Global');rpcDb['createCustomerFinal'](_0x521ab6,_0xeb89('0xc5'));}else{if(_0x4eabb[_0xeb89('0xc6')]>=_0x3c32a9[_0xeb89('0xc7')]){rpcDb['createCustomerFinal'](_0x4eabb,_0xeb89('0xc4'));}else{rpcDb[_0xeb89('0xa9')](ut['scheduledAt'](_0x4eabb,_0xeb89('0xc6'),_0x3c32a9[_0xeb89('0xc8')]),_0x4eabb['unlockAgent'],_0x4eabb[_0xeb89('0xc9')]);}}break;case _0xeb89('0xca'):_0x3c32a9[_0xeb89('0x3c')]+=0x1;_0x4eabb[_0xeb89('0xcb')]+=0x1;_0x4eabb['countglobal']=ut[_0xeb89('0xa0')](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x3,'NoAnswer');ami[_0xeb89('0x23')](_0xeb89('0xcc'),ut[_0xeb89('0xa3')](_0x4eabb,_0xeb89('0xcd')));rpcDb['createCustomerHistory'](_0x4eabb,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0xeb89('0xa0')](_0x4eabb)>=_0x3c32a9['dialGlobalMaxRetry']){_0x521ab6=ut['cloneAction'](_0x4eabb,0xf,'Global');rpcDb[_0xeb89('0x94')](_0x521ab6,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x4eabb['countnoanswerretry']>=_0x3c32a9[_0xeb89('0xce')]){rpcDb[_0xeb89('0x94')](_0x4eabb,_0xeb89('0xcf'));}else{rpcDb[_0xeb89('0xa9')](ut[_0xeb89('0xaa')](_0x4eabb,_0xeb89('0xcb'),_0x3c32a9[_0xeb89('0xd0')]),_0x4eabb[_0xeb89('0xac')],_0x4eabb[_0xeb89('0xc9')]);}}break;case _0xeb89('0xd1'):_0x3c32a9[_0xeb89('0x3a')]+=0x1;_0x4eabb[_0xeb89('0xd2')]+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut['totalGlobal'](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x8,_0xeb89('0xd3'));ami['emit'](_0xeb89('0xd4'),ut[_0xeb89('0xa3')](_0x4eabb,'congestion'));rpcDb[_0xeb89('0x91')](_0x4eabb,'[callProgressDetectingCustomer][logCongestion]');if(ut['totalGlobal'](_0x4eabb)>=_0x3c32a9[_0xeb89('0xa5')]){_0x521ab6=ut[_0xeb89('0xa6')](_0x4eabb,0xf,_0xeb89('0xd5'));rpcDb[_0xeb89('0x94')](_0x521ab6,_0xeb89('0xd6'));}else{if(_0x4eabb[_0xeb89('0xd2')]>=_0x3c32a9[_0xeb89('0xd7')]){rpcDb[_0xeb89('0x94')](_0x4eabb,_0xeb89('0xd8'));}else{rpcDb[_0xeb89('0xa9')](ut[_0xeb89('0xaa')](_0x4eabb,'countcongestionretry',_0x3c32a9['dialBusyRetryFrequency']),_0x4eabb[_0xeb89('0xac')],_0x4eabb[_0xeb89('0xc9')]);}}break;case'CANCEL':_0x3c32a9[_0xeb89('0x3e')]+=0x1;_0x4eabb[_0xeb89('0xd9')]+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut['totalGlobal'](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x14,_0xeb89('0xda'));ami['emit'](_0xeb89('0xdb'),ut['buildObj'](_0x4eabb,_0xeb89('0xdc')));rpcDb[_0xeb89('0x91')](_0x4eabb,_0xeb89('0xdd'));if(ut['totalGlobal'](_0x4eabb)>=_0x3c32a9[_0xeb89('0xa5')]){_0x521ab6=ut['cloneAction'](_0x4eabb,0x14,_0xeb89('0xda'));rpcDb['createCustomerFinal'](_0x521ab6,_0xeb89('0xde'));}else{if(_0x4eabb[_0xeb89('0xd9')]>=_0x3c32a9['dialAgentRejectMaxRetry']){rpcDb[_0xeb89('0x94')](_0x4eabb,_0xeb89('0xde'));}else{rpcDb[_0xeb89('0xa9')](ut[_0xeb89('0xaa')](_0x4eabb,_0xeb89('0xd9'),_0x3c32a9[_0xeb89('0xdf')]),_0x4eabb['unlockAgent'],_0x4eabb[_0xeb89('0xc9')]);}}break;case _0xeb89('0xe0'):_0x3c32a9[_0xeb89('0x40')]+=0x1;_0x4eabb[_0xeb89('0xe1')]+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut['totalGlobal'](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0xb,_0xeb89('0xe2'));rpcDb[_0xeb89('0x91')](_0x4eabb,_0xeb89('0xe3'));if(ut[_0xeb89('0xa0')](_0x4eabb)>=_0x3c32a9[_0xeb89('0xa5')]){_0x521ab6=ut[_0xeb89('0xa6')](_0x4eabb,0xf,_0xeb89('0xd5'));rpcDb[_0xeb89('0x94')](_0x521ab6,_0xeb89('0xe3'));}else{if(_0x4eabb[_0xeb89('0xe4')]>=_0x3c32a9[_0xeb89('0xe5')]){rpcDb[_0xeb89('0x94')](_0x4eabb,_0xeb89('0xe3'));}else{rpcDb[_0xeb89('0xa9')](ut[_0xeb89('0xaa')](_0x4eabb,'countabandonedretry',_0x3c32a9[_0xeb89('0xe6')]),_0x4eabb[_0xeb89('0xac')],_0x4eabb[_0xeb89('0xc9')]);}}break;case'18':_0x3c32a9[_0xeb89('0x3f')]+=0x1;_0x4eabb['countmachineretry']+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut[_0xeb89('0xa0')](_0x4eabb);ut['logCustomer'](_0x4eabb,0x12,_0x43154f[_0xeb89('0xe7')]||_0x43154f[_0xeb89('0xe8')]);ami[_0xeb89('0x23')](_0xeb89('0xe9'),ut['buildObj'](_0x4eabb,'amd'));rpcDb[_0xeb89('0x91')](_0x4eabb,'[callProgressDetectingCustomer][hangupInAMD]');if(ut['totalGlobal'](_0x4eabb)>=_0x3c32a9['dialGlobalMaxRetry']){_0x521ab6=ut[_0xeb89('0xa6')](_0x4eabb,0xf,_0xeb89('0xd5'));rpcDb[_0xeb89('0x94')](_0x521ab6,_0xeb89('0xea'));}else{rpcDb[_0xeb89('0x94')](_0x4eabb,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xad')]];break;case'19':_0x3c32a9[_0xeb89('0x3f')]+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut[_0xeb89('0xa0')](_0x4eabb);ut[_0xeb89('0x8c')](_0x4eabb,0x13,_0x43154f[_0xeb89('0xe7')]||_0x43154f[_0xeb89('0xe8')]);ami[_0xeb89('0x23')](_0xeb89('0xe9'),ut[_0xeb89('0xa3')](_0x4eabb,_0xeb89('0xeb')));rpcDb['createCustomerHistory'](_0x4eabb,_0xeb89('0xec'));if(ut['totalGlobal'](_0x4eabb)>=_0x3c32a9[_0xeb89('0xa5')]){_0x521ab6=ut[_0xeb89('0xa6')](_0x4eabb,0xf,_0xeb89('0xd5'));rpcDb[_0xeb89('0x94')](_0x521ab6,_0xeb89('0xec'));}else{rpcDb[_0xeb89('0x94')](_0x4eabb,'[callProgressDetectingCustomer][machine]');}delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xad')]];break;default:if(_0x4eabb[_0xeb89('0x70')]){ut['decrementTalkink'](_0x3c32a9,_0xeb89('0xed'));ut[_0xeb89('0x7c')](_0xeb89('0xee')+_0x3c32a9[_0xeb89('0x26')],_0x43154f);}_0x3c32a9['outboundUnknownCallsDay']+=0x1;_0x4eabb[_0xeb89('0x9f')]=ut[_0xeb89('0xa0')](_0x4eabb);ut['logCustomer'](_0x4eabb,0xc,_0x43154f[_0xeb89('0xe7')]||_0x43154f[_0xeb89('0xe8')]);rpcDb[_0xeb89('0x91')](_0x4eabb,_0xeb89('0xef'));if(ut[_0xeb89('0xa0')](_0x4eabb)>=_0x3c32a9[_0xeb89('0xa5')]){_0x521ab6=ut['cloneAction'](_0x4eabb,0xf,_0xeb89('0xd5'));rpcDb[_0xeb89('0x94')](_0x521ab6,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0xeb89('0x94')](_0x4eabb,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xad')]];}if(!(_0x4eabb[_0xeb89('0x70')]&&_0x461c2b==='16')){ut['updateOriginated'](_0x3c32a9,_0xeb89('0xf0'));logger[_0xeb89('0x6a')](_0xeb89('0xf1'),_0x4eabb[_0xeb89('0xb2')],_0xeb89('0xb3'),_0x3c32a9[_0xeb89('0x26')],_0xeb89('0xf2'),_0x3c32a9[_0xeb89('0x4e')]);}if(_0x461c2b!=='ANSWER'){delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xad')]];delete this[_0xeb89('0x69')][_0x43154f[_0xeb89('0xf3')]];}}};Preview[_0xeb89('0xd')][_0xeb89('0xf4')]=function(_0x1eeb23,_0x3d0dde,_0x221f6b){if(_[_0xeb89('0xf5')](_0x3d0dde)&&_0xeb89('0xf6')!==typeof _0x3d0dde){return;}if(_[_0xeb89('0xf5')](_0x221f6b)&&_0xeb89('0xf6')!==typeof _0x221f6b){return;}switch(_0x221f6b[_0xeb89('0xf7')]){case'0':ut[_0xeb89('0xf8')](_0x1eeb23,0x0,_0xeb89('0xa1'));rpcDb[_0xeb89('0xf9')](_0x1eeb23,_0xeb89('0xfa'));break;case'3':ut['logAgent'](_0x1eeb23,0x3,_0xeb89('0xfb'));rpcDb['createAgentHistory'](_0x1eeb23,_0xeb89('0xfc'));break;case'5':ut[_0xeb89('0xf8')](_0x1eeb23,0x5,_0xeb89('0xfd'));rpcDb[_0xeb89('0xf9')](_0x1eeb23,_0xeb89('0xfe'));break;case'8':ut['logAgent'](_0x1eeb23,0x8,'Congestion');rpcDb[_0xeb89('0xf9')](_0x1eeb23,_0xeb89('0xff'));break;case'22':ut[_0xeb89('0xf8')](_0x1eeb23,0x16,_0xeb89('0x100'));rpcDb[_0xeb89('0xf9')](_0x1eeb23,_0xeb89('0x101'));break;default:ut[_0xeb89('0xf8')](_0x1eeb23,0xc,_0x221f6b['reason']);rpcDb[_0xeb89('0xf9')](_0x1eeb23,'[callProgressDetectingAgent][logCongestion]');}ut[_0xeb89('0x79')](_0x3d0dde,_0xeb89('0x102'));logger[_0xeb89('0x6a')](_0xeb89('0x103'),_0x1eeb23['uniqueid'],_0xeb89('0xb3'),_0x3d0dde['name'],_0xeb89('0xf2'),_0x3d0dde[_0xeb89('0x4e')]);delete this['actions'][_0x1eeb23[_0xeb89('0xb2')]];};Preview['prototype'][_0xeb89('0x104')]=function(_0x2cb3c4,_0x486bd7,_0x384ba4,_0x563d51,_0x24b36e){var _0x1f07ec=this;return new BPromise(function(_0x2b5171,_0x1c83ce){if(_['isNil'](_0x486bd7)||_[_0xeb89('0x68')](_0x486bd7[_0xeb89('0x105')])||_[_0xeb89('0x68')](_0x486bd7['Contact']['phone'])||_[_0xeb89('0x68')](_0x486bd7[_0xeb89('0x73')])){_0x1c83ce(ut[_0xeb89('0x4d')]('Contact\x20is\x20undefined',_0x563d51,_0x24b36e));return;}var _0x555f25=uuid['v4']();var _0x5502c9=_0x1f07ec['campaignsPreview'][_0x486bd7['Queue'][_0xeb89('0x26')]];var _0x442e65=_0x384ba4?_0x1f07ec[_0xeb89('0x13')][_0x384ba4]['id']:undefined;_0x1f07ec[_0xeb89('0x69')][_0x555f25]=new Action(_0x486bd7,_0x5502c9,_0x555f25,_0x384ba4,_0x442e65);var _0x17b6d1=_0x1f07ec[_0xeb89('0x69')][_0x555f25];_0x17b6d1[_0xeb89('0xac')]=_0x563d51;_0x17b6d1[_0xeb89('0xc9')]=_0x24b36e;_0x17b6d1[_0xeb89('0x106')]=_0x384ba4;if(_[_0xeb89('0x107')](_0x2cb3c4)){_0x1f07ec[_0xeb89('0x108')](_0x17b6d1,_0x5502c9,_0x486bd7,_0x384ba4)[_0xeb89('0x81')](function(_0x3c27b3){logger['info'](_0xeb89('0x109'),_0xeb89('0x10a')+_0x17b6d1[_0xeb89('0x6d')]+'\x20IdHopper:\x20'+_0x17b6d1[_0xeb89('0x10b')],JSON['stringify'](_0x3c27b3));ami[_0xeb89('0x23')](_0xeb89('0x10c'),ut['buildObj'](_0x17b6d1,_0xeb89('0x10d'),_0x1f07ec['campaignsPreview'][_0x17b6d1[_0xeb89('0x6d')]]));_0x2b5171(ut[_0xeb89('0x4d')](_0xeb89('0x10e')));})[_0xeb89('0x77')](function(_0x27cb74){ut[_0xeb89('0x5e')](_0xeb89('0x10f'),_0x27cb74);_0x1c83ce(ut[_0xeb89('0x4d')]('Call\x20failed',_0x563d51,_0x24b36e));});}else{_0x5502c9[_0xeb89('0x38')]+=0x1;ut['logBlacklist'](_0x17b6d1);rpcDb['createHistory'](_0x17b6d1,'[Blacklist][error]');delete _0x1f07ec[_0xeb89('0x69')][_0x555f25];_0x1c83ce(ut['message'](_0xeb89('0x110'),_0x563d51,_0x24b36e));}});};Preview['prototype'][_0xeb89('0x9a')]=function(_0x51d2a3){return!_[_0xeb89('0x68')](_0x51d2a3)&&!_[_0xeb89('0x68')](_0x51d2a3[_0xeb89('0x26')])&&!_['isNil'](_0x51d2a3['active'])&&_0x51d2a3[_0xeb89('0x55')]&&!_[_0xeb89('0x68')](this[_0xeb89('0x12')][util[_0xeb89('0x89')](_0xeb89('0x111'),_0x51d2a3[_0xeb89('0x26')])])&&!_[_0xeb89('0x68')](this[_0xeb89('0x12')][util[_0xeb89('0x89')](_0xeb89('0x111'),_0x51d2a3[_0xeb89('0x26')])][_0xeb89('0x75')])&&(this['trunks'][util['format'](_0xeb89('0x111'),_0x51d2a3[_0xeb89('0x26')])][_0xeb89('0x75')]===_0xeb89('0x112')||this[_0xeb89('0x12')][util[_0xeb89('0x89')](_0xeb89('0x111'),_0x51d2a3[_0xeb89('0x26')])]['status']===_0xeb89('0x113'));};Preview['prototype'][_0xeb89('0x114')]=function(_0x4066b2,_0x3d0ae1){var _0x505169=this;return new BPromise(function(_0xbde105,_0x2310cb){_0x505169[_0xeb89('0x115')](_0x4066b2,_0x3d0ae1)[_0xeb89('0x81')](function(_0x1bb8f9){_0xbde105(_[_0xeb89('0x71')](_0x1bb8f9,['message']));})[_0xeb89('0x77')](function(_0xbcfa6a){if(_0xbcfa6a[_0xeb89('0x116')]){rpcDb['unlockContact'](_0x4066b2);}if(_0xbcfa6a['active']){rpcDb['disableContact'](_0x4066b2);}_0x2310cb(_[_0xeb89('0x71')](_0xbcfa6a,['message']));});});};Preview[_0xeb89('0xd')]['execRun']=function(_0x2fd906,_0x17af63){var _0x27e891=this;return new BPromise(function(_0x1800a7,_0x4b4ef4){var _0x55f072,_0x29c688;rpcDb['getContactPreview'](_0x2fd906)[_0xeb89('0x81')](function(_0x469865){if(!_[_0xeb89('0x68')](_0x469865[0x0])){_0x29c688=_0x469865[0x0][_0xeb89('0x117')]?![]:!![];_0x55f072=_0x469865[0x0]['recallme']?!![]:![];_0x55f072=_0x17af63?!![]:_0x55f072;}var _0x2493e8=_0x27e891['validateContact'](_0x469865);if(_0x2493e8[_0xeb89('0x118')]){rpcDb[_0xeb89('0x119')](_[_0xeb89('0x71')](_0x469865[0x0],['VoiceQueueId',_0xeb89('0x11a')]))[_0xeb89('0x81')](function(_0x45f6cb){_0x27e891[_0xeb89('0x104')](_0x45f6cb,_0x469865[0x0],_0x17af63,_0x29c688,_0x55f072)['then'](function(_0x444b42){_0x1800a7(_0x444b42);})['catch'](function(_0x1b586f){_0x4b4ef4(_0x1b586f);});})[_0xeb89('0x77')](function(_0x1ef7da){ut[_0xeb89('0x5e')](_0xeb89('0x11b'),_0x1ef7da);_0x4b4ef4(ut[_0xeb89('0x4d')](_0xeb89('0x11c'),_0x29c688,_0x55f072));});}else{_0x4b4ef4(ut[_0xeb89('0x4d')](_0x2493e8[_0xeb89('0x4d')],_0x29c688,_0x55f072));}})[_0xeb89('0x77')](function(_0x2b64ed){ut[_0xeb89('0x5e')](_0xeb89('0x11d'),_0x2b64ed);_0x4b4ef4(ut[_0xeb89('0x4d')](_0xeb89('0x11c'),![],!![]));});});};Preview[_0xeb89('0xd')][_0xeb89('0x11e')]=function(_0x45ecff){if(_[_0xeb89('0x68')](_0x45ecff)||_['isEmpty'](_0x45ecff)||!_[_0xeb89('0x68')](_0x45ecff[0x0][_0xeb89('0x84')])&&_['isNil'](_0x45ecff[0x0][_0xeb89('0x84')][_0xeb89('0x26')])){ut[_0xeb89('0x5e')](_0xeb89('0x11f'),_0x45ecff);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x3d8870=this['campaignsPreview'][_0x45ecff[0x0]['Queue']['name']];_0x3d8870[_0xeb89('0x4d')]=_0xeb89('0x9c');if(_[_0xeb89('0x68')](_0x3d8870)){ut[_0xeb89('0x5e')]('[Preview][validateContact][Empty\x20Campaign]',_0x3d8870);return{'isValid':![],'message':_0xeb89('0x120')};}if(!this[_0xeb89('0x9a')](_0x3d8870['Trunk'])){ut[_0xeb89('0x5e')](_0xeb89('0x121'),_0xeb89('0x122')+_0x3d8870[_0xeb89('0x26')]+'\x20Trunk\x20is\x20not\x20active');if(!this[_0xeb89('0x9a')](_0x3d8870[_0xeb89('0x9b')])){ut[_0xeb89('0x5e')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x3d8870[_0xeb89('0x26')]+_0xeb89('0x123'));return{'isValid':![],'message':_0xeb89('0x124')};}}if(!ut[_0xeb89('0x125')](_0x3d8870[_0xeb89('0x32')])){ut['logger'](_0xeb89('0x126'),_0x3d8870[_0xeb89('0x26')]+'\x20Not\x20Active');return{'isValid':![],'message':_0xeb89('0x122')+_0x3d8870[_0xeb89('0x26')]+_0xeb89('0x127')};}return{'isValid':!![],'message':_0xeb89('0x128')};};Preview['prototype'][_0xeb89('0x108')]=function(_0x4d0e7d,_0x4b59d5,_0x3ec809,_0x4e38d4){var _0x4cfa54=this;return new BPromise(function(_0x513ecd,_0x4676a5){var _0x21da47=_0x4d0e7d['uniqueid'];var _0xf6aea4=_0x4cfa54[_0xeb89('0x9a')](_0x4b59d5[_0xeb89('0x54')])?util[_0xeb89('0x89')](_0xeb89('0x129'),_0x4b59d5[_0xeb89('0x54')]['name'],_[_0xeb89('0x68')](_0x4b59d5['dialPrefix'])?'':_0x4b59d5[_0xeb89('0x12a')]['trim']()||'',_0x4b59d5[_0xeb89('0x12b')]>0x0?_0x3ec809['Contact'][_0xeb89('0x12c')][_0xeb89('0x12d')](_0x4b59d5['dialCutDigit']):_0x3ec809['Contact'][_0xeb89('0x12c')]):util[_0xeb89('0x89')](_0xeb89('0x129'),_[_0xeb89('0x68')](_0x4b59d5[_0xeb89('0x9b')])?_0x4b59d5[_0xeb89('0x54')]['name']:_0x4b59d5[_0xeb89('0x9b')][_0xeb89('0x26')],_['isNil'](_0x4b59d5[_0xeb89('0x12a')])?'':_0x4b59d5[_0xeb89('0x12a')][_0xeb89('0x12e')]()||'',_0x4b59d5[_0xeb89('0x12b')]>0x0?_0x3ec809[_0xeb89('0x105')]['phone'][_0xeb89('0x12d')](_0x4b59d5[_0xeb89('0x12b')]):_0x3ec809[_0xeb89('0x105')][_0xeb89('0x12c')]);var _0xf30ec5=_0x4cfa54['isTrunkReachable'](_0x4b59d5[_0xeb89('0x54')])?ut[_0xeb89('0x12f')](_0x4b59d5[_0xeb89('0x54')][_0xeb89('0x56')],_0x4b59d5[_0xeb89('0x34')],_0x4b59d5[_0xeb89('0x130')]>0x0?ut['getCallerIdRandom'](_0x4b59d5['dialOriginateCallerIdNumber'],_0x4b59d5['dialRandomLastDigitCallerIdNumber']):_0x4b59d5[_0xeb89('0x131')]):ut[_0xeb89('0x12f')](_[_0xeb89('0x68')](_0x4b59d5[_0xeb89('0x9b')])?_0x4b59d5[_0xeb89('0x54')][_0xeb89('0x56')]:_0x4b59d5[_0xeb89('0x9b')][_0xeb89('0x56')],_0x4b59d5[_0xeb89('0x34')],_0x4b59d5['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xeb89('0x132')](_0x4b59d5[_0xeb89('0x131')],_0x4b59d5['dialRandomLastDigitCallerIdNumber']):_0x4b59d5[_0xeb89('0x131')]);if(_0xf30ec5){_0x4d0e7d['originatecalleridname']=ut[_0xeb89('0x133')](_0xf30ec5);_0x4d0e7d[_0xeb89('0x134')]=ut[_0xeb89('0x135')](_0xf30ec5);}var _0x98aeaa=ut['addVariables'](_0x4b59d5,_0x3ec809,_0xf6aea4,_0xf30ec5,_0x21da47,_0x4d0e7d);_['merge'](_0x4d0e7d,ut[_0xeb89('0x136')](_0x98aeaa));_0x4d0e7d['starttime']=moment()[_0xeb89('0x89')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0xeb89('0x137')](ut[_0xeb89('0x138')](_0x4d0e7d,_0x4b59d5,_0x98aeaa,_0x4d0e7d[_0xeb89('0xc9')],_0x4e38d4))[_0xeb89('0x81')](function(_0x17bea5){var _0x33a231=_0x4d0e7d[_0xeb89('0x139')];if(!_[_0xeb89('0x68')](_0x33a231)){if(!_['isNil'](_0x4cfa54[_0xeb89('0x13')][_0x33a231])){_0x4cfa54[_0xeb89('0x13')][_0x33a231][_0xeb89('0x13a')]=_0x4d0e7d['calleridnum'];emit(util[_0xeb89('0x89')](_0xeb89('0x13b'),_0x4cfa54[_0xeb89('0x13')][_0x33a231][_0xeb89('0x26')]),'user:agentconnect',{'destaccountcode':_0x4cfa54[_0xeb89('0x13')][_0x33a231][_0xeb89('0x13c')],'destconnectedlinenum':_0x4d0e7d['calleridnum']});}}_0x4b59d5['originated']+=0x1;logger[_0xeb89('0x6a')](_0xeb89('0x13d'),_0x21da47,'\x20Queue',_0x4b59d5[_0xeb89('0x26')],_0xeb89('0xf2'),_0x4b59d5[_0xeb89('0x4e')]);_0x513ecd(_0x17bea5);})[_0xeb89('0x77')](function(_0x4f83d2){ut[_0xeb89('0xf8')](_0x4d0e7d,0xe,_0xeb89('0x13e'));rpcDb[_0xeb89('0xf9')](_0x4d0e7d,'[originateFailure][logOriginateFailure]');_0x4676a5(_0x4f83d2);});});};Preview[_0xeb89('0xd')]['syncNewExten']=function(_0x25dda1){if(this['actions'][_0x25dda1['linkedid']]){this[_0xeb89('0x69')][_0x25dda1[_0xeb89('0xad')]][_0xeb89('0x76')]=_0x25dda1[_0xeb89('0x76')];}};Preview[_0xeb89('0xd')]['syncOriginateResponse']=function(_0x2f62df){var _0x214792=this;var _0x238710=this[_0xeb89('0x69')][_0x2f62df['actionid']];if(_0x238710){if(_0x238710['lookAgent']&&this[_0xeb89('0x13')][_0x238710[_0xeb89('0x106')]]){ut[_0xeb89('0x13f')](_0x238710,this[_0xeb89('0x13')][_0x238710[_0xeb89('0x106')]][_0xeb89('0x26')],this[_0xeb89('0x13')][_0x238710[_0xeb89('0x106')]]['id']);}var _0x424cf4=_[_0xeb89('0x140')](_0x238710);_0x424cf4[_0xeb89('0xaf')]=moment()[_0xeb89('0x89')](_0xeb89('0x8a'));var _0x176e68=_0x214792[_0xeb89('0x10')][_0x238710['queue']];if(ut[_0xeb89('0x141')](_0x2f62df['response'])){if(_0x238710[_0xeb89('0xac')]){rpcDb[_0xeb89('0x142')](_0x238710[_0xeb89('0x10b')]);}if(_0x238710[_0xeb89('0xc9')]){rpcDb[_0xeb89('0x143')](_0x238710[_0xeb89('0x10b')]);}ami[_0xeb89('0x23')](_0xeb89('0x144'),ut['buildObj'](_0x238710,_0xeb89('0x145'),this[_0xeb89('0x10')][_0x238710['queue']]));this[_0xeb89('0xf4')](_0x424cf4,_0x176e68,_0x2f62df);}else{_0x238710['starttime']=moment()['format'](_0xeb89('0x8a'));ut[_0xeb89('0xf8')](_0x424cf4,0x4,_0xeb89('0xbc'));rpcDb[_0xeb89('0xf9')](_0x424cf4,_0xeb89('0x146'));}}};Preview[_0xeb89('0xd')][_0xeb89('0x17')]=function(_0x297ef8){var _0xcbc62e=this;var _0x48198b=this[_0xeb89('0x69')][_0x297ef8['linkedid']];var _0x5e22ef;if(_0x48198b){_0x5e22ef=this[_0xeb89('0x10')][_0x48198b[_0xeb89('0x6d')]];logger[_0xeb89('0x6a')](_0xeb89('0x147'),_0x297ef8['linkedid'],_0xeb89('0xb3'),_0x5e22ef[_0xeb89('0x26')],_0xeb89('0x6f'),_0x5e22ef[_0xeb89('0x29')]);}if(this[_0xeb89('0x69')][_0x297ef8['linkedid']]&&_0x297ef8['linkedid']!==_0x297ef8['uniqueid']){if(_0x297ef8['cause']==='16'&&this[_0xeb89('0x69')][_0x297ef8[_0xeb89('0xad')]][_0xeb89('0x70')]){this[_0xeb89('0x9d')](_0x297ef8,_0x297ef8[_0xeb89('0xad')],_0x297ef8[_0xeb89('0x148')]);}else if(this[_0xeb89('0x69')][_0x297ef8[_0xeb89('0xad')]][_0xeb89('0x70')]){logger[_0xeb89('0x6a')](_0xeb89('0x149'),_0x297ef8['linkedid'],_0x297ef8[_0xeb89('0x148')],'\x20Queue',_0x5e22ef['name'],_0xeb89('0x6f'),_0x5e22ef[_0xeb89('0x29')]);this[_0xeb89('0x9d')](_0x297ef8,_0x297ef8[_0xeb89('0xad')],_0x297ef8[_0xeb89('0x148')]);}}else if(_0x48198b&&_[_0xeb89('0x68')](_0x48198b['statedesc'])&&_0x5e22ef[_0xeb89('0x14a')]&&_0x297ef8['linkedid']===_0x297ef8[_0xeb89('0xb2')]&&_[_0xeb89('0x68')](_0x297ef8[_0xeb89('0xf7')])&&_0x297ef8['cause']==='16'&&_0x297ef8['channelstate']==='6'&&_['isUndefined'](_0x48198b[_0xeb89('0x14b')])){if(_0x48198b[_0xeb89('0xac')]){rpcDb[_0xeb89('0x142')](_0x48198b['idContact']);}if(_0x48198b['activeContact']){rpcDb[_0xeb89('0x143')](_0x48198b[_0xeb89('0x10b')]);}_0x297ef8[_0xeb89('0xf7')]='22';this[_0xeb89('0xf4')](_0x48198b,_0x5e22ef,_0x297ef8);}else if(_0x48198b&&_0x48198b[_0xeb89('0x14b')]){if(_0x297ef8['cause']==='16'&&this[_0xeb89('0x69')][_0x297ef8[_0xeb89('0xad')]]['dialAnswer']){logger['info'](_0xeb89('0x14c'),_0x297ef8[_0xeb89('0xad')],_0x297ef8[_0xeb89('0x148')],_0xeb89('0xb3'),_0x5e22ef[_0xeb89('0x26')],_0xeb89('0x6f'),_0x5e22ef[_0xeb89('0x29')]);this['callProgressDetectingCustomer'](_0x297ef8,_0x297ef8[_0xeb89('0xad')],_0x297ef8[_0xeb89('0x148')]);}else if(this['actions'][_0x297ef8[_0xeb89('0xad')]][_0xeb89('0x70')]){logger['info'](_0xeb89('0x149'),_0x297ef8[_0xeb89('0xad')],_0x297ef8[_0xeb89('0x148')],_0xeb89('0xb3'),_0x5e22ef[_0xeb89('0x26')],'pTalking:\x20',_0x5e22ef[_0xeb89('0x29')]);this[_0xeb89('0x9d')](_0x297ef8,_0x297ef8[_0xeb89('0xad')],_0x297ef8['cause']);}}};Preview[_0xeb89('0xd')]['syncDialEnd']=function(_0x4d4b3e){if(this[_0xeb89('0x69')][_0x4d4b3e[_0xeb89('0xf3')]]&&_0x4d4b3e[_0xeb89('0xf3')]!==_0x4d4b3e['destuniqueid']){this[_0xeb89('0x9d')](_0x4d4b3e,_0x4d4b3e[_0xeb89('0xf3')],_0x4d4b3e['dialstatus']);}};Preview[_0xeb89('0xd')][_0xeb89('0x19')]=function(_0x3645a1){if(this[_0xeb89('0x69')][_0x3645a1[_0xeb89('0xad')]]&&_0x3645a1[_0xeb89('0xad')]!==_0x3645a1['uniqueid']&&!this[_0xeb89('0x69')][_0x3645a1[_0xeb89('0xad')]][_0xeb89('0x70')]){if(_0x3645a1['cause']==='1'){this['callProgressDetectingCustomer'](_0x3645a1,_0x3645a1[_0xeb89('0xad')],_0x3645a1['cause']);}}};Preview[_0xeb89('0xd')][_0xeb89('0x14d')]=function(_0x1bab64,_0x5bf1b2,_0x209e92){if(this['actions'][_0x1bab64]){if(_[_0xeb89('0x68')](this[_0xeb89('0x69')][_0x1bab64][_0xeb89('0x14e')])){this[_0xeb89('0x69')][_0x1bab64][_0xeb89('0x14e')]={};}this[_0xeb89('0x69')][_0x1bab64][_0xeb89('0x14e')][_0x5bf1b2]=_0x209e92;}};Preview['prototype'][_0xeb89('0x1d')]=function(_0x41bb27){try{if(!_[_0xeb89('0x68')](_0x41bb27)){if(ut[_0xeb89('0x14f')](_[_0xeb89('0x150')](_0x41bb27[_0xeb89('0x151')])[0x0])){this[_0xeb89('0x14d')](_0x41bb27[_0xeb89('0xb2')],_[_0xeb89('0x150')](_0x41bb27[_0xeb89('0x151')])[0x0],_0x41bb27[_0xeb89('0x152')]);}}}catch(_0x55c308){logger[_0xeb89('0x153')](_0xeb89('0x154'),util[_0xeb89('0x155')](_0x55c308,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0xeb89('0x1f')]=function(_0xf8ed17){if(_0xf8ed17){if(this[_0xeb89('0x69')][_0xf8ed17['transfertargetlinkedid']]){this['actions'][_0xf8ed17[_0xeb89('0x156')]][_0xeb89('0x14b')]=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x53e73a){if(_0x53e73a){if(this[_0xeb89('0x69')][_0x53e73a[_0xeb89('0x157')]]){this[_0xeb89('0x69')][_0x53e73a[_0xeb89('0x157')]][_0xeb89('0x14b')]=!![];}}};module[_0xeb89('0x158')]=Preview;
\ No newline at end of file
+var _0xf943=['disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','NOT_ACTIVE','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','NoSuchNumber','buildObj','nosuchnumber','totalGlobal','dialGlobalMaxRetry','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','scheduledAt','dialNoSuchNumberRetryFrequency','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','\x20Queue','custom:agentconnect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','talktime','[syncHangup][talking][decrement]','uniqueid','outboundBusyCallsDay','countbusyretry','custom:agentbusy','[callProgressDetectingCustomer][logBusy]','Global','dialBusyRetryFrequency','unlockAgent','activeContact','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','rescheduleContact','dialNoAnswerRetryFrequency','countcongestionretry','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','countagentrejectretry','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','Congestion','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','lookAgent','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','Calling','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','getContactPreview','recallme','checkIsBlackList','Contact.phone','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','isEmpty','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','substring','dialCutDigit','getCallerId','getCallerIdRandom','dialRandomLastDigitCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','addVariables','toLowerVariables','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','actionid','logLookAgent','isFailure','response','idContact','custom:agentringnoanswer','rejected','starttime','[syncHangup][talking]','cause','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destlinkedid','addVariable','variables','filterKey','keys','variable','value','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','bluebird','moment','md5','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncDialEnd','newexten','syncNewExten','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','type','outbound','name','answered','available','loggedIn','pTalking','sumBillable','sumDuration','talking','total','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','message','originated','erlangCallToSecond','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','prototype','syncCampaigns','hasOwnProperty','clearZombieChannels','setMessage','recallMe','isNil','actions','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','ListId','status','channel','catch','No\x20such\x20channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','Agent','voicePause','run','logger2','[RecallMe]'];(function(_0x1ae8e5,_0x115e54){var _0x456361=function(_0xcbf5df){while(--_0xcbf5df){_0x1ae8e5['push'](_0x1ae8e5['shift']());}};_0x456361(++_0x115e54);}(_0xf943,0xc2));var _0x3f94=function(_0x250b94,_0xd89cc4){_0x250b94=_0x250b94-0x0;var _0x3c3c63=_0xf943[_0x250b94];return _0x3c3c63;};'use strict';var util=require(_0x3f94('0x0'));var _=require('lodash');var BPromise=require(_0x3f94('0x1'));var uuid=require('uuid');var moment=require(_0x3f94('0x2'));var md5=require(_0x3f94('0x3'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x3f94('0x4'))(_0x3f94('0x5'));var loggerAction=require('../../../config/logger')(_0x3f94('0x6'));var ami=require(_0x3f94('0x7'));var rpcDb=require(_0x3f94('0x8'));var Action=require(_0x3f94('0x9'));var ut=require(_0x3f94('0xa'));config[_0x3f94('0xb')]=_[_0x3f94('0xc')](config[_0x3f94('0xb')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3f94('0xb')]));var Sequence=function(){};Sequence['prototype'][_0x3f94('0xd')]=function(_0x5d90c3){this[_0x3f94('0xe')]=this[_0x3f94('0xe')]?this[_0x3f94('0xe')][_0x3f94('0xf')](_0x5d90c3):_0x5d90c3();};function Preview(_0x37ab30){this[_0x3f94('0x10')]=new Sequence();this[_0x3f94('0x11')]=_0x37ab30[_0x3f94('0x12')];this['trunks']=_0x37ab30[_0x3f94('0x13')];this['actions']={};this[_0x3f94('0x14')]=_0x37ab30[_0x3f94('0x14')];this[_0x3f94('0x15')]=0x0;ami['on'](_0x3f94('0x16'),this[_0x3f94('0x17')][_0x3f94('0x18')](this));ami['on'](_0x3f94('0x19'),this[_0x3f94('0x1a')][_0x3f94('0x18')](this));ami['on'](_0x3f94('0x1b'),this[_0x3f94('0x1c')][_0x3f94('0x18')](this));ami['on']('dialend',this[_0x3f94('0x1d')][_0x3f94('0x18')](this));ami['on'](_0x3f94('0x1e'),this[_0x3f94('0x1f')][_0x3f94('0x18')](this));ami['on']('varset',this[_0x3f94('0x20')][_0x3f94('0x18')](this));ami['on'](_0x3f94('0x21'),this[_0x3f94('0x22')]['bind'](this));ami['on']('blindtransfer',this[_0x3f94('0x23')][_0x3f94('0x18')](this));this[_0x3f94('0x24')](this[_0x3f94('0x11')]);}function emit(_0x5a8ff3,_0x2ad81c,_0xbadad0){io['to'](_0x5a8ff3)['emit'](_0x2ad81c,_0xbadad0);}function emitCampaignPreview(_0x15d765){if(_0x15d765[_0x3f94('0x25')]===_0x3f94('0x26')){var _0x1d28a6={'id':_0x15d765['id'],'name':_0x15d765[_0x3f94('0x27')],'strategy':_0x15d765['strategy'],'answered':_0x15d765[_0x3f94('0x28')],'available':_0x15d765[_0x3f94('0x29')],'loggedIn':_0x15d765[_0x3f94('0x2a')],'pTalking':_0x15d765[_0x3f94('0x2b')],'sumBillable':_0x15d765[_0x3f94('0x2c')],'sumDuration':_0x15d765[_0x3f94('0x2d')],'sumHoldTime':_0x15d765['sumHoldTime']||0x0,'talking':_0x15d765[_0x3f94('0x2e')],'total':_0x15d765[_0x3f94('0x2f')],'type':_0x15d765[_0x3f94('0x25')],'unmanaged':_0x15d765[_0x3f94('0x30')],'abandoned':_0x15d765[_0x3f94('0x31')],'waiting':_0x15d765['waiting'],'loggedInDb':_0x15d765[_0x3f94('0x32')],'dialActive':_0x15d765[_0x3f94('0x33')],'dialMethod':_0x15d765[_0x3f94('0x34')],'dialOriginateCallerIdName':_0x15d765[_0x3f94('0x35')],'dialOriginateCallerIdNumber':_0x15d765[_0x3f94('0x36')],'dialOriginateTimeout':_0x15d765[_0x3f94('0x37')],'dialPrefix':_0x15d765[_0x3f94('0x38')],'outboundAnswerAgiCallsDay':_0x15d765['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x15d765[_0x3f94('0x39')],'outboundBlacklistCallsDay':_0x15d765['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x15d765['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x15d765[_0x3f94('0x3a')],'outboundDropCallsDayACS':_0x15d765[_0x3f94('0x3b')],'outboundDropCallsDayCallersExit':_0x15d765[_0x3f94('0x3c')],'outboundDropCallsDayTimeout':_0x15d765['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x15d765[_0x3f94('0x3d')],'outboundNoSuchCallsDay':_0x15d765[_0x3f94('0x3e')],'outboundOriginateFailureCallsDay':_0x15d765[_0x3f94('0x3f')],'outboundReCallsDay':_0x15d765[_0x3f94('0x40')],'outboundRejectCallsDay':_0x15d765[_0x3f94('0x41')],'outboundUnknownCallsDay':_0x15d765[_0x3f94('0x42')],'outboundAbandonedCallsDay':_0x15d765[_0x3f94('0x43')],'predictiveIntervalAnsweredCalls':_0x15d765['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x15d765[_0x3f94('0x44')],'predictiveIntervalAvgTalktime':_0x15d765[_0x3f94('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x15d765[_0x3f94('0x46')],'predictiveIntervalDroppedCallsTimeout':_0x15d765[_0x3f94('0x47')],'predictiveIntervalErlangCalls':_0x15d765[_0x3f94('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0x15d765['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x15d765['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x15d765[_0x3f94('0x49')],'predictiveIntervalPauses':_0x15d765[_0x3f94('0x4a')],'predictiveIntervalAvailable':_0x15d765['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x15d765['predictiveIntervalTotalCalls'],'message':_0x15d765[_0x3f94('0x4b')],'originated':_0x15d765[_0x3f94('0x4c')],'erlangCalls':_0x15d765['erlangCalls'],'erlangCallToSecond':_0x15d765[_0x3f94('0x4d')],'erlangAbandonmentRate':_0x15d765['erlangAbandonmentRate'],'erlangBusyFactor':_0x15d765[_0x3f94('0x4e')],'startPredictive':_0x15d765[_0x3f94('0x4f')],'startProgressive':_0x15d765['startProgressive']};if(_0x15d765['Trunk']){_0x1d28a6[_0x3f94('0x50')]={'id':_0x15d765[_0x3f94('0x50')]['id'],'name':_0x15d765[_0x3f94('0x50')][_0x3f94('0x27')],'active':_0x15d765[_0x3f94('0x50')][_0x3f94('0x51')],'callerid':_0x15d765[_0x3f94('0x50')][_0x3f94('0x52')]};}if(_0x15d765['Interval']){_0x1d28a6[_0x3f94('0x53')]={'id':_0x15d765[_0x3f94('0x53')]['id'],'name':_0x15d765[_0x3f94('0x53')][_0x3f94('0x27')]};}var _0x3de04b=md5(JSON[_0x3f94('0x54')](_0x1d28a6));if(_0x15d765['md5']!==_0x3de04b){_0x15d765[_0x3f94('0x3')]=_0x3de04b;emit(util[_0x3f94('0x55')](_0x3f94('0x56'),_0x1d28a6[_0x3f94('0x27')]),_0x3f94('0x57'),_0x1d28a6);}}}function emitVoiceQueueChannelRemove(_0x1b3871){logger[_0x3f94('0x58')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x1b3871));emit(util[_0x3f94('0x55')](_0x3f94('0x56'),_0x1b3871[_0x3f94('0x27')]),_0x3f94('0x59'),_0x1b3871);io[_0x3f94('0x5a')](_0x3f94('0x5b'),_0x1b3871);}function notSendMessagesQueue(_0x2f6f40){if(_0x2f6f40[_0x3f94('0x5c')]){if(_0x2f6f40[_0x3f94('0x4c')]===0x0&&_0x2f6f40[_0x3f94('0x2b')]===0x0){_0x2f6f40[_0x3f94('0x5c')]=![];_0x2f6f40[_0x3f94('0x29')]=0x0;_0x2f6f40[_0x3f94('0x5d')]=0x0;_0x2f6f40['message']='NOT_ACTIVE';ut[_0x3f94('0x5e')](_0x3f94('0x5f'),_0x2f6f40['name']+_0x3f94('0x60'));}else{_0x2f6f40[_0x3f94('0x4b')]=_0x3f94('0x61');ut['logger'](_0x3f94('0x5f'),_0x2f6f40[_0x3f94('0x27')]+_0x3f94('0x62'));}emitCampaignPreview(_0x2f6f40);}}Preview[_0x3f94('0x63')]['loopCampaigns']=function(){var _0x264d02=this;setInterval(function(){_0x264d02[_0x3f94('0x64')]();},0x7cf);};Preview[_0x3f94('0x63')][_0x3f94('0x64')]=function(){var _0x343c6b=this[_0x3f94('0x11')];this[_0x3f94('0x15')]+=0x1;for(var _0x4a2862 in _0x343c6b){if(_0x343c6b[_0x3f94('0x65')](_0x4a2862)&&(_0x343c6b[_0x4a2862]['dialMethod']===_0x3f94('0x5')||_0x343c6b[_0x4a2862][_0x3f94('0x34')]==='booked')&&_0x343c6b[_0x4a2862][_0x3f94('0x25')]===_0x3f94('0x26')){if(this['clockClearZombieChannels']>0x7){this[_0x3f94('0x15')]=0x0;this[_0x3f94('0x66')]();}}if(_0x343c6b[_0x3f94('0x65')](_0x4a2862)&&_0x343c6b[_0x4a2862][_0x3f94('0x34')]===_0x3f94('0x5')&&_0x343c6b[_0x4a2862]['type']===_0x3f94('0x26')){if(_0x343c6b[_0x4a2862]['dialActive']){this[_0x3f94('0x67')](_0x343c6b[_0x4a2862]);this[_0x3f94('0x68')](_0x343c6b[_0x4a2862]);}else{notSendMessagesQueue(_0x343c6b[_0x4a2862]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x508eb4){var _0x1d8111=this;this[_0x3f94('0x10')]['enqueue'](function(){if(!_[_0x3f94('0x69')](_0x1d8111[_0x3f94('0x6a')][_0x508eb4])){loggerAction['info'](_0x3f94('0x6b'),_0x508eb4,_0x3f94('0x6c'),_0x1d8111['actions'][_0x508eb4][_0x3f94('0x6d')],_0x3f94('0x6e'),JSON[_0x3f94('0x54')](_0x1d8111[_0x3f94('0x11')][_0x1d8111[_0x3f94('0x6a')][_0x508eb4][_0x3f94('0x6d')]][_0x3f94('0x4c')]),_0x3f94('0x6f'),JSON['stringify'](_0x1d8111[_0x3f94('0x11')][_0x1d8111[_0x3f94('0x6a')][_0x508eb4][_0x3f94('0x6d')]][_0x3f94('0x2b')]),JSON['stringify'](_0x1d8111[_0x3f94('0x6a')][_0x508eb4][_0x3f94('0x70')]),JSON[_0x3f94('0x54')](_[_0x3f94('0x71')](_0x1d8111[_0x3f94('0x6a')][_0x508eb4],[_0x3f94('0x72'),_0x3f94('0x73'),'VoiceQueueId',_0x3f94('0x74')])));return ami['Action']({'action':_0x3f94('0x75'),'channel':_0x1d8111['actions'][_0x508eb4][_0x3f94('0x76')]})[_0x3f94('0x77')](function(_0x42477f){if(_0x42477f[_0x3f94('0x4b')]===_0x3f94('0x78')){setTimeout(function(){if(_0x1d8111[_0x3f94('0x6a')][_0x508eb4]){ut['updateOriginated'](_0x1d8111[_0x3f94('0x11')][_0x1d8111['actions'][_0x508eb4][_0x3f94('0x6d')]],_0x3f94('0x79'));if(_0x1d8111[_0x3f94('0x6a')][_0x508eb4][_0x3f94('0x70')]===!![]){ut[_0x3f94('0x7a')](_0x1d8111[_0x3f94('0x11')][_0x1d8111['actions'][_0x508eb4][_0x3f94('0x6d')]],'[clearZombieChannel]');ut[_0x3f94('0x7b')](_0x3f94('0x7c')+_0x508eb4,_0x1d8111[_0x3f94('0x6a')][_0x508eb4][_0x3f94('0x6d')]);}ut[_0x3f94('0x7b')](_0x3f94('0x7d')+_0x508eb4,_0x1d8111['actions'][_0x508eb4]['queue']);delete _0x1d8111[_0x3f94('0x6a')][_0x508eb4];}},0x2328);}});}});};Preview[_0x3f94('0x63')]['clearZombieChannels']=function(){var _0x42329a=this;loggerAction[_0x3f94('0x58')](_0x3f94('0x7e'),_[_0x3f94('0x7f')](this[_0x3f94('0x6a')]));for(var _0xcc4fd9 in this[_0x3f94('0x6a')]){if(_0x42329a['actions'][_0x3f94('0x65')](_0xcc4fd9)){_0x42329a['clearZombieChannel'](_0xcc4fd9);}}};Preview[_0x3f94('0x63')]['recallMe']=function(_0x397668){var _0x2f9177=this;rpcDb[_0x3f94('0x80')](_0x397668['id'],ut[_0x3f94('0x81')](this[_0x3f94('0x14')]))[_0x3f94('0x82')](function(_0x36b51c){if(!_['isNil'](_0x36b51c)){for(var _0x5ab60c=0x0;_0x5ab60c<_0x36b51c['length'];_0x5ab60c+=0x1){if(ut[_0x3f94('0x83')](_0x36b51c[_0x5ab60c][_0x3f94('0x84')])<_0x397668['dialRecallMeTimeout']*0x3c){if(_0x36b51c[_0x5ab60c]['Agent']&&!_0x36b51c[_0x5ab60c][_0x3f94('0x85')][_0x3f94('0x86')]){_0x2f9177[_0x3f94('0x87')](_0x36b51c[_0x5ab60c]['id'])[_0x3f94('0x82')](ut['logger2']('[RecallMe]'))['catch'](ut[_0x3f94('0x88')](_0x3f94('0x89')));}else{rpcDb[_0x3f94('0x8a')](_0x36b51c[_0x5ab60c]['id']);}}else{var _0xbb513c=new Action(_0x36b51c[_0x5ab60c],_0x397668);_0xbb513c['starttime']=moment()[_0x3f94('0x55')](_0x3f94('0x8b'));_0x397668[_0x3f94('0x40')]+=0x1;ut[_0x3f94('0x8c')](_0xbb513c,0x17,_0x3f94('0x8d'));if(_0x397668[_0x3f94('0x8e')]){rpcDb[_0x3f94('0x8f')](ut[_0x3f94('0x90')](_0x36b51c[_0x5ab60c]));rpcDb[_0x3f94('0x91')](_0xbb513c,_0x3f94('0x92'));}else{ut['logCustomer'](_0xbb513c,0x16,'RecallFailedTimeout');rpcDb[_0x3f94('0x91')](_0xbb513c,_0x3f94('0x93'));rpcDb['createCustomerFinal'](_0xbb513c,_0x3f94('0x93'));}}}}})[_0x3f94('0x77')](ut[_0x3f94('0x88')](_0x3f94('0x94')));};Preview[_0x3f94('0x63')][_0x3f94('0x67')]=function(_0x13fa4f){_0x13fa4f[_0x3f94('0x5c')]=!![];if(ut[_0x3f94('0x95')](_0x13fa4f[_0x3f94('0x2a')])){_0x13fa4f[_0x3f94('0x4b')]=_0x3f94('0x96');}else if(!ut['isActive'](_0x13fa4f[_0x3f94('0x33')])){_0x13fa4f[_0x3f94('0x4b')]=_0x3f94('0x97');}else if(!this[_0x3f94('0x98')](_0x13fa4f['Trunk'])){if(!this[_0x3f94('0x98')](_0x13fa4f['TrunkBackup'])){_0x13fa4f[_0x3f94('0x4b')]=_0x3f94('0x99');}else{_0x13fa4f[_0x3f94('0x4b')]=_0x3f94('0x9a');}}else{_0x13fa4f['message']=_0x3f94('0x9a');}emitCampaignPreview(_0x13fa4f);};Preview['prototype'][_0x3f94('0x9b')]=function(_0x14bf42,_0x36d25b,_0x5065c1){var _0x34f480=this;var _0x57715a=this[_0x3f94('0x6a')][_0x36d25b];var _0x2b857e=this[_0x3f94('0x11')][_0x57715a[_0x3f94('0x6d')]];var _0x2ea713;if(_0x2b857e){switch(_0x5065c1){case'1':_0x2b857e[_0x3f94('0x3e')]+=0x1;_0x57715a[_0x3f94('0x9c')]+=0x1;_0x57715a[_0x3f94('0x9d')]=ut['totalGlobal'](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0x0,_0x3f94('0x9e'));ami['emit']('custom:agentnosuchnumber',ut[_0x3f94('0x9f')](_0x57715a,_0x3f94('0xa0')));rpcDb[_0x3f94('0x91')](_0x57715a,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0x3f94('0xa1')](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,'Global');rpcDb[_0x3f94('0xa4')](_0x2ea713,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x57715a[_0x3f94('0x9c')]>=_0x2b857e['dialNoSuchNumberMaxRetry']){rpcDb[_0x3f94('0xa4')](_0x57715a,_0x3f94('0xa5'));}else{rpcDb['rescheduleContact'](ut[_0x3f94('0xa6')](_0x57715a,_0x3f94('0x9c'),_0x2b857e[_0x3f94('0xa7')]),_0x57715a['unlockAgent'],_0x57715a['activeContact']);}}delete this[_0x3f94('0x6a')][_0x14bf42[_0x3f94('0xa8')]];break;case _0x3f94('0xa9'):var _0x491c31=moment()[_0x3f94('0x55')](_0x3f94('0x8b'));_0x57715a[_0x3f94('0xaa')]=_0x491c31;_0x57715a[_0x3f94('0xab')]=_0x491c31;_0x57715a[_0x3f94('0x70')]=!![];_0x2b857e[_0x3f94('0x2b')]+=0x1;logger[_0x3f94('0x58')](_0x3f94('0xac'),_0x57715a['uniqueid'],_0x3f94('0xad'),_0x2b857e['name'],_0x3f94('0x6f'),_0x2b857e[_0x3f94('0x2b')]);ami[_0x3f94('0x5a')](_0x3f94('0xae'),ut[_0x3f94('0x9f')](_0x57715a,'connect',this[_0x3f94('0x11')][_0x57715a[_0x3f94('0x6d')]]));if(_0x2b857e['acw']){ami['emit'](_0x3f94('0xaf'),ut[_0x3f94('0xb0')](_0x57715a));}break;case'16':ami['emit'](_0x3f94('0xb1'),ut[_0x3f94('0x9f')](_0x57715a,_0x3f94('0xb2'),this[_0x3f94('0x11')][_0x57715a[_0x3f94('0x6d')]]));emitVoiceQueueChannelRemove(ut[_0x3f94('0x9f')](_0x57715a,_0x3f94('0xb2')));_0x2b857e[_0x3f94('0x39')]+=0x1;_0x2b857e[_0x3f94('0x2f')]+=0x1;_0x2b857e['answered']+=0x1;ut[_0x3f94('0x7a')](_0x2b857e,_0x3f94('0xb3'));_0x57715a[_0x3f94('0x9d')]=ut['totalGlobal'](_0x57715a);ut['logCustomer'](_0x57715a,0x4,_0x3f94('0xb4'));rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xb5'));rpcDb[_0x3f94('0xa4')](_0x57715a,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb['crateCustomerReportQueue'](_0x57715a);_0x2b857e[_0x3f94('0x2d')]+=_0x57715a[_0x3f94('0xb6')];_0x2b857e[_0x3f94('0x2c')]+=_0x57715a[_0x3f94('0xb6')];logger['info'](_0x3f94('0xb7'),_0x57715a[_0x3f94('0xb8')],_0x3f94('0xad'),_0x2b857e['name'],_0x3f94('0x6f'),_0x2b857e[_0x3f94('0x2b')]);delete this[_0x3f94('0x6a')][_0x14bf42[_0x3f94('0xa8')]];break;case'BUSY':_0x2b857e[_0x3f94('0xb9')]+=0x1;_0x57715a[_0x3f94('0xba')]+=0x1;_0x57715a[_0x3f94('0x9d')]=ut[_0x3f94('0xa1')](_0x57715a);ut['logCustomer'](_0x57715a,0x5,'Busy');ami['emit'](_0x3f94('0xbb'),ut[_0x3f94('0x9f')](_0x57715a,'busy'));rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xbc'));if(ut[_0x3f94('0xa1')](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut['cloneAction'](_0x57715a,0xf,_0x3f94('0xbd'));rpcDb[_0x3f94('0xa4')](_0x2ea713,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x57715a[_0x3f94('0xba')]>=_0x2b857e['dialBusyMaxRetry']){rpcDb['createCustomerFinal'](_0x57715a,_0x3f94('0xbc'));}else{rpcDb['rescheduleContact'](ut[_0x3f94('0xa6')](_0x57715a,_0x3f94('0xba'),_0x2b857e[_0x3f94('0xbe')]),_0x57715a[_0x3f94('0xbf')],_0x57715a[_0x3f94('0xc0')]);}}break;case _0x3f94('0xc1'):_0x2b857e['outboundNoAnswerCallsDay']+=0x1;_0x57715a[_0x3f94('0xc2')]+=0x1;_0x57715a[_0x3f94('0x9d')]=ut['totalGlobal'](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0x3,_0x3f94('0xc3'));ami['emit'](_0x3f94('0xc4'),ut['buildObj'](_0x57715a,_0x3f94('0xc5')));rpcDb[_0x3f94('0x91')](_0x57715a,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x3f94('0xa1')](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,_0x3f94('0xbd'));rpcDb[_0x3f94('0xa4')](_0x2ea713,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x57715a[_0x3f94('0xc2')]>=_0x2b857e[_0x3f94('0xc6')]){rpcDb['createCustomerFinal'](_0x57715a,_0x3f94('0xc7'));}else{rpcDb[_0x3f94('0xc8')](ut[_0x3f94('0xa6')](_0x57715a,_0x3f94('0xc2'),_0x2b857e[_0x3f94('0xc9')]),_0x57715a['unlockAgent'],_0x57715a[_0x3f94('0xc0')]);}}break;case'CONGESTION':_0x2b857e[_0x3f94('0x3a')]+=0x1;_0x57715a[_0x3f94('0xca')]+=0x1;_0x57715a[_0x3f94('0x9d')]=ut[_0x3f94('0xa1')](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0x8,'Congestion');ami[_0x3f94('0x5a')]('custom:agentcongestion',ut[_0x3f94('0x9f')](_0x57715a,_0x3f94('0xcb')));rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xcc'));if(ut['totalGlobal'](_0x57715a)>=_0x2b857e['dialGlobalMaxRetry']){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,_0x3f94('0xbd'));rpcDb[_0x3f94('0xa4')](_0x2ea713,_0x3f94('0xcd'));}else{if(_0x57715a[_0x3f94('0xca')]>=_0x2b857e[_0x3f94('0xce')]){rpcDb['createCustomerFinal'](_0x57715a,_0x3f94('0xcc'));}else{rpcDb[_0x3f94('0xc8')](ut[_0x3f94('0xa6')](_0x57715a,_0x3f94('0xca'),_0x2b857e[_0x3f94('0xbe')]),_0x57715a['unlockAgent'],_0x57715a[_0x3f94('0xc0')]);}}break;case'CANCEL':_0x2b857e[_0x3f94('0x41')]+=0x1;_0x57715a[_0x3f94('0xcf')]+=0x1;_0x57715a[_0x3f94('0x9d')]=ut[_0x3f94('0xa1')](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0x14,'AgentReject');ami[_0x3f94('0x5a')]('custom:agentreject',ut[_0x3f94('0x9f')](_0x57715a,_0x3f94('0xd0')));rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xd1'));if(ut[_0x3f94('0xa1')](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0x14,_0x3f94('0xd2'));rpcDb[_0x3f94('0xa4')](_0x2ea713,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x57715a[_0x3f94('0xcf')]>=_0x2b857e['dialAgentRejectMaxRetry']){rpcDb[_0x3f94('0xa4')](_0x57715a,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb['rescheduleContact'](ut[_0x3f94('0xa6')](_0x57715a,'countagentrejectretry',_0x2b857e[_0x3f94('0xd3')]),_0x57715a[_0x3f94('0xbf')],_0x57715a[_0x3f94('0xc0')]);}}break;case _0x3f94('0xd4'):_0x2b857e['outboundAbandonedCallsDay']+=0x1;_0x57715a[_0x3f94('0xd5')]+=0x1;_0x57715a['countglobal']=ut[_0x3f94('0xa1')](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0xb,_0x3f94('0xd6'));rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xd7'));if(ut['totalGlobal'](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,'Global');rpcDb[_0x3f94('0xa4')](_0x2ea713,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x57715a['countabandonedetry']>=_0x2b857e[_0x3f94('0xd8')]){rpcDb[_0x3f94('0xa4')](_0x57715a,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x3f94('0xc8')](ut[_0x3f94('0xa6')](_0x57715a,_0x3f94('0xd5'),_0x2b857e[_0x3f94('0xd9')]),_0x57715a['unlockAgent'],_0x57715a['activeContact']);}}break;case'18':_0x2b857e[_0x3f94('0x42')]+=0x1;_0x57715a['countmachineretry']+=0x1;_0x57715a['countglobal']=ut[_0x3f94('0xa1')](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0x12,_0x14bf42[_0x3f94('0xda')]||_0x14bf42['dialstatus']);ami[_0x3f94('0x5a')](_0x3f94('0xdb'),ut[_0x3f94('0x9f')](_0x57715a,_0x3f94('0xdc')));rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xdd'));if(ut[_0x3f94('0xa1')](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,'Global');rpcDb[_0x3f94('0xa4')](_0x2ea713,_0x3f94('0xdd'));}else{rpcDb['createCustomerFinal'](_0x57715a,_0x3f94('0xdd'));}delete this[_0x3f94('0x6a')][_0x14bf42['linkedid']];break;case'19':_0x2b857e[_0x3f94('0x42')]+=0x1;_0x57715a[_0x3f94('0x9d')]=ut['totalGlobal'](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0x13,_0x14bf42['cause-txt']||_0x14bf42['dialstatus']);ami[_0x3f94('0x5a')]('custom:amd',ut[_0x3f94('0x9f')](_0x57715a,'amd'));rpcDb[_0x3f94('0x91')](_0x57715a,'[callProgressDetectingCustomer][machine]');if(ut[_0x3f94('0xa1')](_0x57715a)>=_0x2b857e[_0x3f94('0xa2')]){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,_0x3f94('0xbd'));rpcDb['createCustomerFinal'](_0x2ea713,_0x3f94('0xde'));}else{rpcDb[_0x3f94('0xa4')](_0x57715a,_0x3f94('0xde'));}delete this[_0x3f94('0x6a')][_0x14bf42[_0x3f94('0xa8')]];break;default:if(_0x57715a[_0x3f94('0x70')]){ut[_0x3f94('0x7a')](_0x2b857e,_0x3f94('0xdf'));ut['loggerError'](_0x3f94('0xe0')+_0x2b857e['name'],_0x14bf42);}_0x2b857e[_0x3f94('0x42')]+=0x1;_0x57715a['countglobal']=ut['totalGlobal'](_0x57715a);ut[_0x3f94('0x8c')](_0x57715a,0xc,_0x14bf42[_0x3f94('0xda')]||_0x14bf42['dialstatus']);rpcDb[_0x3f94('0x91')](_0x57715a,_0x3f94('0xe1'));if(ut['totalGlobal'](_0x57715a)>=_0x2b857e['dialGlobalMaxRetry']){_0x2ea713=ut[_0x3f94('0xa3')](_0x57715a,0xf,_0x3f94('0xbd'));rpcDb[_0x3f94('0xa4')](_0x2ea713,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x3f94('0xa4')](_0x57715a,_0x3f94('0xe2'));}delete this[_0x3f94('0x6a')][_0x14bf42[_0x3f94('0xa8')]];}if(!(_0x57715a[_0x3f94('0x70')]&&_0x5065c1==='16')){ut[_0x3f94('0xe3')](_0x2b857e,'[callProgressDetectingCustomer]');logger['info'](_0x3f94('0xe4'),_0x57715a[_0x3f94('0xb8')],_0x3f94('0xad'),_0x2b857e[_0x3f94('0x27')],'originated:\x20',_0x2b857e[_0x3f94('0x4c')]);}if(_0x5065c1!=='ANSWER'){delete this[_0x3f94('0x6a')][_0x14bf42[_0x3f94('0xa8')]];delete this[_0x3f94('0x6a')][_0x14bf42['destlinkedid']];}}};Preview[_0x3f94('0x63')][_0x3f94('0xe5')]=function(_0x5af17e,_0x3a485a,_0x21fe4b){if(_[_0x3f94('0xe6')](_0x3a485a)&&'object'!==typeof _0x3a485a){return;}if(_[_0x3f94('0xe6')](_0x21fe4b)&&'object'!==typeof _0x21fe4b){return;}switch(_0x21fe4b[_0x3f94('0xe7')]){case'0':ut['logAgent'](_0x5af17e,0x0,_0x3f94('0x9e'));rpcDb[_0x3f94('0xe8')](_0x5af17e,_0x3f94('0xe9'));break;case'3':ut[_0x3f94('0xea')](_0x5af17e,0x3,_0x3f94('0xc3'));rpcDb[_0x3f94('0xe8')](_0x5af17e,_0x3f94('0xeb'));break;case'5':ut[_0x3f94('0xea')](_0x5af17e,0x5,_0x3f94('0xec'));rpcDb['createAgentHistory'](_0x5af17e,_0x3f94('0xed'));break;case'8':ut['logAgent'](_0x5af17e,0x8,_0x3f94('0xee'));rpcDb[_0x3f94('0xe8')](_0x5af17e,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x3f94('0xea')](_0x5af17e,0x16,_0x3f94('0xef'));rpcDb[_0x3f94('0xe8')](_0x5af17e,_0x3f94('0xf0'));break;default:ut['logAgent'](_0x5af17e,0xc,_0x21fe4b[_0x3f94('0xe7')]);rpcDb[_0x3f94('0xe8')](_0x5af17e,_0x3f94('0xf1'));}ut['updateOriginated'](_0x3a485a,_0x3f94('0xf2'));logger['info'](_0x3f94('0xf3'),_0x5af17e[_0x3f94('0xb8')],_0x3f94('0xad'),_0x3a485a[_0x3f94('0x27')],_0x3f94('0x6e'),_0x3a485a[_0x3f94('0x4c')]);delete this['actions'][_0x5af17e[_0x3f94('0xb8')]];};Preview[_0x3f94('0x63')][_0x3f94('0xf4')]=function(_0x3003da,_0xeb3934,_0x481f68,_0x191df4,_0x5dbccb){var _0x2133cd=this;return new BPromise(function(_0x2c9f1c,_0x6da24f){if(_['isNil'](_0xeb3934)||_[_0x3f94('0x69')](_0xeb3934[_0x3f94('0xf5')])||_['isNil'](_0xeb3934[_0x3f94('0xf5')][_0x3f94('0xf6')])||_['isNil'](_0xeb3934[_0x3f94('0xf7')])){_0x6da24f(ut[_0x3f94('0x4b')](_0x3f94('0xf8'),_0x191df4,_0x5dbccb));return;}var _0x2b8541=uuid['v4']();var _0x102998=_0x2133cd['campaignsPreview'][_0xeb3934['Queue'][_0x3f94('0x27')]];var _0x5030f2=_0x481f68?_0x2133cd['agents'][_0x481f68]['id']:undefined;_0x2133cd[_0x3f94('0x6a')][_0x2b8541]=new Action(_0xeb3934,_0x102998,_0x2b8541,_0x481f68,_0x5030f2);var _0xcc0c77=_0x2133cd['actions'][_0x2b8541];_0xcc0c77[_0x3f94('0xbf')]=_0x191df4;_0xcc0c77['activeContact']=_0x5dbccb;_0xcc0c77[_0x3f94('0xf9')]=_0x481f68;if(_['isEmpty'](_0x3003da)){_0x2133cd['execCall'](_0xcc0c77,_0x102998,_0xeb3934,_0x481f68)[_0x3f94('0x82')](function(_0x43be55){logger[_0x3f94('0x58')](_0x3f94('0xfa'),_0x3f94('0xfb')+_0xcc0c77[_0x3f94('0x6d')]+_0x3f94('0xfc')+_0xcc0c77['idContact'],JSON['stringify'](_0x43be55));ami[_0x3f94('0x5a')](_0x3f94('0xfd'),ut[_0x3f94('0x9f')](_0xcc0c77,'called',_0x2133cd[_0x3f94('0x11')][_0xcc0c77[_0x3f94('0x6d')]]));_0x2c9f1c(ut[_0x3f94('0x4b')](_0x3f94('0xfe')));})[_0x3f94('0x77')](function(_0x2b6b36){ut[_0x3f94('0x5e')]('[Preview][execCall][failure]',_0x2b6b36);_0x6da24f(ut[_0x3f94('0x4b')](_0x3f94('0xff'),_0x191df4,_0x5dbccb));});}else{_0x102998[_0x3f94('0x100')]+=0x1;ut[_0x3f94('0x101')](_0xcc0c77);rpcDb['createHistory'](_0xcc0c77,_0x3f94('0x102'));delete _0x2133cd[_0x3f94('0x6a')][_0x2b8541];_0x6da24f(ut[_0x3f94('0x4b')](_0x3f94('0x103'),_0x191df4,_0x5dbccb));}});};Preview[_0x3f94('0x63')][_0x3f94('0x98')]=function(_0x1acbac){return!_[_0x3f94('0x69')](_0x1acbac)&&!_['isNil'](_0x1acbac[_0x3f94('0x27')])&&!_[_0x3f94('0x69')](_0x1acbac[_0x3f94('0x51')])&&_0x1acbac['active']&&!_[_0x3f94('0x69')](this['trunks'][util[_0x3f94('0x55')](_0x3f94('0x104'),_0x1acbac[_0x3f94('0x27')])])&&!_[_0x3f94('0x69')](this[_0x3f94('0x13')][util[_0x3f94('0x55')](_0x3f94('0x104'),_0x1acbac[_0x3f94('0x27')])][_0x3f94('0x75')])&&(this[_0x3f94('0x13')][util['format'](_0x3f94('0x104'),_0x1acbac[_0x3f94('0x27')])]['status']===_0x3f94('0x105')||this['trunks'][util[_0x3f94('0x55')](_0x3f94('0x104'),_0x1acbac[_0x3f94('0x27')])]['status']===_0x3f94('0x106'));};Preview[_0x3f94('0x63')][_0x3f94('0x87')]=function(_0x225e3d,_0x4a8925){var _0x38c542=this;return new BPromise(function(_0x4f624d,_0x4cc5d0){_0x38c542[_0x3f94('0x107')](_0x225e3d,_0x4a8925)['then'](function(_0x511a74){_0x4f624d(_[_0x3f94('0x71')](_0x511a74,[_0x3f94('0x4b')]));})[_0x3f94('0x77')](function(_0x1e5413){if(_0x1e5413[_0x3f94('0x108')]){rpcDb[_0x3f94('0x109')](_0x225e3d);}if(_0x1e5413['active']){rpcDb[_0x3f94('0x8a')](_0x225e3d);}_0x4cc5d0(_['pick'](_0x1e5413,['message']));});});};Preview[_0x3f94('0x63')][_0x3f94('0x107')]=function(_0x3e82d4,_0x351079){var _0x294e3a=this;return new BPromise(function(_0x33fd62,_0x4c292c){var _0xb09a75,_0x42d291;rpcDb[_0x3f94('0x10a')](_0x3e82d4)[_0x3f94('0x82')](function(_0x3bf394){if(!_[_0x3f94('0x69')](_0x3bf394[0x0])){_0x42d291=_0x3bf394[0x0][_0x3f94('0x10b')]?![]:!![];_0xb09a75=_0x3bf394[0x0]['recallme']?!![]:![];_0xb09a75=_0x351079?!![]:_0xb09a75;}var _0x1e12b2=_0x294e3a['validateContact'](_0x3bf394);if(_0x1e12b2['isValid']){rpcDb[_0x3f94('0x10c')](_[_0x3f94('0x71')](_0x3bf394[0x0],[_0x3f94('0xf7'),_0x3f94('0x10d')]))[_0x3f94('0x82')](function(_0x2f60de){_0x294e3a['checkInBlack'](_0x2f60de,_0x3bf394[0x0],_0x351079,_0x42d291,_0xb09a75)['then'](function(_0x3f3229){_0x33fd62(_0x3f3229);})[_0x3f94('0x77')](function(_0x1ca025){_0x4c292c(_0x1ca025);});})[_0x3f94('0x77')](function(_0x189225){ut['logger']('[Preview][checkIsBlackList]',_0x189225);_0x4c292c(ut[_0x3f94('0x4b')](_0x3f94('0x10e'),_0x42d291,_0xb09a75));});}else{_0x4c292c(ut['message'](_0x1e12b2[_0x3f94('0x4b')],_0x42d291,_0xb09a75));}})['catch'](function(_0x32d83d){ut[_0x3f94('0x5e')](_0x3f94('0x10f'),_0x32d83d);_0x4c292c(ut[_0x3f94('0x4b')](_0x3f94('0x10e'),![],!![]));});});};Preview[_0x3f94('0x63')][_0x3f94('0x110')]=function(_0x2cf053){if(_['isNil'](_0x2cf053)||_[_0x3f94('0x111')](_0x2cf053)||!_[_0x3f94('0x69')](_0x2cf053[0x0][_0x3f94('0x85')])&&_[_0x3f94('0x69')](_0x2cf053[0x0][_0x3f94('0x85')][_0x3f94('0x27')])){ut[_0x3f94('0x5e')](_0x3f94('0x112'),_0x2cf053);return{'isValid':![],'message':_0x3f94('0x113')};}var _0x395cc3=this[_0x3f94('0x11')][_0x2cf053[0x0][_0x3f94('0x6c')]['name']];_0x395cc3[_0x3f94('0x4b')]=_0x3f94('0x9a');if(_[_0x3f94('0x69')](_0x395cc3)){ut[_0x3f94('0x5e')](_0x3f94('0x114'),_0x395cc3);return{'isValid':![],'message':_0x3f94('0x115')};}if(!this[_0x3f94('0x98')](_0x395cc3[_0x3f94('0x50')])){ut[_0x3f94('0x5e')](_0x3f94('0x116'),_0x3f94('0x117')+_0x395cc3[_0x3f94('0x27')]+_0x3f94('0x118'));if(!this['isTrunkReachable'](_0x395cc3[_0x3f94('0x119')])){ut[_0x3f94('0x5e')](_0x3f94('0x116'),_0x395cc3[_0x3f94('0x27')]+_0x3f94('0x11a'));return{'isValid':![],'message':_0x3f94('0x11b')};}}if(!ut[_0x3f94('0x11c')](_0x395cc3[_0x3f94('0x33')])){ut[_0x3f94('0x5e')](_0x3f94('0x11d'),_0x395cc3['name']+'\x20Not\x20Active');return{'isValid':![],'message':_0x3f94('0x117')+_0x395cc3[_0x3f94('0x27')]+_0x3f94('0x11e')};}return{'isValid':!![],'message':_0x3f94('0x11f')};};Preview['prototype']['execCall']=function(_0x4eb2b5,_0x1ae200,_0x339002,_0x4a477a){var _0x57a1c9=this;return new BPromise(function(_0x561ea5,_0x559662){var _0x25b5da=_0x4eb2b5[_0x3f94('0xb8')];var _0x137137=_0x57a1c9['isTrunkReachable'](_0x1ae200[_0x3f94('0x50')])?util['format'](_0x3f94('0x120'),_0x1ae200['Trunk'][_0x3f94('0x27')],_['isNil'](_0x1ae200[_0x3f94('0x38')])?'':_0x1ae200['dialPrefix'][_0x3f94('0x121')]()||'',_0x1ae200['dialCutDigit']>0x0?_0x339002[_0x3f94('0xf5')]['phone'][_0x3f94('0x122')](_0x1ae200[_0x3f94('0x123')]):_0x339002[_0x3f94('0xf5')][_0x3f94('0xf6')]):util['format']('SIP/%s/%s%s',_[_0x3f94('0x69')](_0x1ae200[_0x3f94('0x119')])?_0x1ae200[_0x3f94('0x50')][_0x3f94('0x27')]:_0x1ae200[_0x3f94('0x119')][_0x3f94('0x27')],_[_0x3f94('0x69')](_0x1ae200[_0x3f94('0x38')])?'':_0x1ae200['dialPrefix'][_0x3f94('0x121')]()||'',_0x1ae200[_0x3f94('0x123')]>0x0?_0x339002[_0x3f94('0xf5')][_0x3f94('0xf6')]['substring'](_0x1ae200[_0x3f94('0x123')]):_0x339002[_0x3f94('0xf5')][_0x3f94('0xf6')]);var _0x46b337=_0x57a1c9[_0x3f94('0x98')](_0x1ae200[_0x3f94('0x50')])?ut[_0x3f94('0x124')](_0x1ae200['Trunk'][_0x3f94('0x52')],_0x1ae200[_0x3f94('0x35')],_0x1ae200['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x3f94('0x125')](_0x1ae200[_0x3f94('0x36')],_0x1ae200[_0x3f94('0x126')]):_0x1ae200[_0x3f94('0x36')]):ut[_0x3f94('0x124')](_[_0x3f94('0x69')](_0x1ae200[_0x3f94('0x119')])?_0x1ae200[_0x3f94('0x50')][_0x3f94('0x52')]:_0x1ae200[_0x3f94('0x119')]['callerid'],_0x1ae200[_0x3f94('0x35')],_0x1ae200[_0x3f94('0x126')]>0x0?ut[_0x3f94('0x125')](_0x1ae200[_0x3f94('0x36')],_0x1ae200[_0x3f94('0x126')]):_0x1ae200[_0x3f94('0x36')]);if(_0x46b337){_0x4eb2b5[_0x3f94('0x127')]=ut[_0x3f94('0x128')](_0x46b337);_0x4eb2b5[_0x3f94('0x129')]=ut['extractCalleridNumber'](_0x46b337);}var _0x39e071=ut[_0x3f94('0x12a')](_0x1ae200,_0x339002,_0x137137,_0x46b337,_0x25b5da,_0x4eb2b5);_['merge'](_0x4eb2b5,ut[_0x3f94('0x12b')](_0x39e071));_0x4eb2b5['starttime']=moment()[_0x3f94('0x55')]('YYYY-MM-DD\x20HH:mm:ss');ami['Action'](ut[_0x3f94('0x12c')](_0x4eb2b5,_0x1ae200,_0x39e071,_0x4eb2b5[_0x3f94('0xc0')],_0x4a477a))[_0x3f94('0x82')](function(_0x5e4a99){var _0x4e6952=_0x4eb2b5[_0x3f94('0x12d')];if(!_[_0x3f94('0x69')](_0x4e6952)){if(!_[_0x3f94('0x69')](_0x57a1c9[_0x3f94('0x14')][_0x4e6952])){_0x57a1c9[_0x3f94('0x14')][_0x4e6952][_0x3f94('0x12e')]=_0x4eb2b5[_0x3f94('0x12f')];emit(util[_0x3f94('0x55')](_0x3f94('0x130'),_0x57a1c9['agents'][_0x4e6952][_0x3f94('0x27')]),_0x3f94('0x131'),{'destaccountcode':_0x57a1c9[_0x3f94('0x14')][_0x4e6952][_0x3f94('0x132')],'destconnectedlinenum':_0x4eb2b5[_0x3f94('0x12f')]});}}_0x1ae200[_0x3f94('0x4c')]+=0x1;logger[_0x3f94('0x58')]('[originated][increment]',_0x25b5da,_0x3f94('0xad'),_0x1ae200[_0x3f94('0x27')],_0x3f94('0x6e'),_0x1ae200[_0x3f94('0x4c')]);_0x561ea5(_0x5e4a99);})[_0x3f94('0x77')](function(_0x5cfa84){ut[_0x3f94('0xea')](_0x4eb2b5,0xe,'OriginateError');rpcDb[_0x3f94('0xe8')](_0x4eb2b5,'[originateFailure][logOriginateFailure]');_0x559662(_0x5cfa84);});});};Preview[_0x3f94('0x63')][_0x3f94('0x1f')]=function(_0x32b476){if(this[_0x3f94('0x6a')][_0x32b476[_0x3f94('0xa8')]]){this[_0x3f94('0x6a')][_0x32b476['linkedid']][_0x3f94('0x76')]=_0x32b476[_0x3f94('0x76')];}};Preview[_0x3f94('0x63')]['syncOriginateResponse']=function(_0x16a85){var _0x187d14=this;var _0x18d8f1=this[_0x3f94('0x6a')][_0x16a85[_0x3f94('0x133')]];if(_0x18d8f1){if(_0x18d8f1[_0x3f94('0xf9')]&&this[_0x3f94('0x14')][_0x18d8f1[_0x3f94('0xf9')]]){ut[_0x3f94('0x134')](_0x18d8f1,this[_0x3f94('0x14')][_0x18d8f1['lookAgent']][_0x3f94('0x27')],this[_0x3f94('0x14')][_0x18d8f1[_0x3f94('0xf9')]]['id']);}var _0x4daf83=_['clone'](_0x18d8f1);_0x4daf83['responsetime']=moment()[_0x3f94('0x55')](_0x3f94('0x8b'));var _0xe78511=_0x187d14['campaignsPreview'][_0x18d8f1[_0x3f94('0x6d')]];if(ut[_0x3f94('0x135')](_0x16a85[_0x3f94('0x136')])){if(_0x18d8f1[_0x3f94('0xbf')]){rpcDb[_0x3f94('0x109')](_0x18d8f1[_0x3f94('0x137')]);}if(_0x18d8f1[_0x3f94('0xc0')]){rpcDb[_0x3f94('0x8a')](_0x18d8f1['idContact']);}ami['emit'](_0x3f94('0x138'),ut[_0x3f94('0x9f')](_0x18d8f1,_0x3f94('0x139'),this['campaignsPreview'][_0x18d8f1['queue']]));this[_0x3f94('0xe5')](_0x4daf83,_0xe78511,_0x16a85);}else{_0x18d8f1[_0x3f94('0x13a')]=moment()[_0x3f94('0x55')](_0x3f94('0x8b'));ut[_0x3f94('0xea')](_0x4daf83,0x4,_0x3f94('0xb4'));rpcDb[_0x3f94('0xe8')](_0x4daf83,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0x3f94('0x63')][_0x3f94('0x1a')]=function(_0x54f84e){var _0x327704=this;var _0x1ed57e=this[_0x3f94('0x6a')][_0x54f84e['linkedid']];var _0x4642c3;if(_0x1ed57e){_0x4642c3=this['campaignsPreview'][_0x1ed57e['queue']];logger[_0x3f94('0x58')](_0x3f94('0x13b'),_0x54f84e[_0x3f94('0xa8')],_0x3f94('0xad'),_0x4642c3[_0x3f94('0x27')],_0x3f94('0x6f'),_0x4642c3[_0x3f94('0x2b')]);}if(this[_0x3f94('0x6a')][_0x54f84e[_0x3f94('0xa8')]]&&_0x54f84e[_0x3f94('0xa8')]!==_0x54f84e[_0x3f94('0xb8')]){if(_0x54f84e[_0x3f94('0x13c')]==='16'&&this[_0x3f94('0x6a')][_0x54f84e[_0x3f94('0xa8')]][_0x3f94('0x70')]){this[_0x3f94('0x9b')](_0x54f84e,_0x54f84e[_0x3f94('0xa8')],_0x54f84e[_0x3f94('0x13c')]);}else if(this['actions'][_0x54f84e[_0x3f94('0xa8')]][_0x3f94('0x70')]){logger[_0x3f94('0x58')]('[syncHangup][talking][cause]',_0x54f84e['linkedid'],_0x54f84e[_0x3f94('0x13c')],_0x3f94('0xad'),_0x4642c3[_0x3f94('0x27')],'pTalking:\x20',_0x4642c3[_0x3f94('0x2b')]);this[_0x3f94('0x9b')](_0x54f84e,_0x54f84e['linkedid'],_0x54f84e[_0x3f94('0x13c')]);}}else if(_0x1ed57e&&_['isNil'](_0x1ed57e['statedesc'])&&_0x4642c3['dialQueueProject']&&_0x54f84e[_0x3f94('0xa8')]===_0x54f84e[_0x3f94('0xb8')]&&_[_0x3f94('0x69')](_0x54f84e['reason'])&&_0x54f84e[_0x3f94('0x13c')]==='16'&&_0x54f84e[_0x3f94('0x13d')]==='6'&&_[_0x3f94('0xe6')](_0x1ed57e[_0x3f94('0x13e')])){if(_0x1ed57e[_0x3f94('0xbf')]){rpcDb[_0x3f94('0x109')](_0x1ed57e[_0x3f94('0x137')]);}if(_0x1ed57e['activeContact']){rpcDb[_0x3f94('0x8a')](_0x1ed57e[_0x3f94('0x137')]);}_0x54f84e[_0x3f94('0xe7')]='22';this['callProgressDetectingAgent'](_0x1ed57e,_0x4642c3,_0x54f84e);}else if(_0x1ed57e&&_0x1ed57e[_0x3f94('0x13e')]){if(_0x54f84e[_0x3f94('0x13c')]==='16'&&this['actions'][_0x54f84e['linkedid']]['dialAnswer']){logger[_0x3f94('0x58')](_0x3f94('0x13f'),_0x54f84e['linkedid'],_0x54f84e[_0x3f94('0x13c')],'\x20Queue',_0x4642c3['name'],_0x3f94('0x6f'),_0x4642c3[_0x3f94('0x2b')]);this[_0x3f94('0x9b')](_0x54f84e,_0x54f84e[_0x3f94('0xa8')],_0x54f84e[_0x3f94('0x13c')]);}else if(this['actions'][_0x54f84e['linkedid']][_0x3f94('0x70')]){logger[_0x3f94('0x58')](_0x3f94('0x140'),_0x54f84e['linkedid'],_0x54f84e[_0x3f94('0x13c')],_0x3f94('0xad'),_0x4642c3[_0x3f94('0x27')],_0x3f94('0x6f'),_0x4642c3['pTalking']);this[_0x3f94('0x9b')](_0x54f84e,_0x54f84e[_0x3f94('0xa8')],_0x54f84e[_0x3f94('0x13c')]);}}};Preview[_0x3f94('0x63')][_0x3f94('0x1d')]=function(_0x3a1ade){if(this[_0x3f94('0x6a')][_0x3a1ade[_0x3f94('0x141')]]&&_0x3a1ade['destlinkedid']!==_0x3a1ade['destuniqueid']){this[_0x3f94('0x9b')](_0x3a1ade,_0x3a1ade['destlinkedid'],_0x3a1ade['dialstatus']);}};Preview[_0x3f94('0x63')][_0x3f94('0x1c')]=function(_0x204e94){if(this[_0x3f94('0x6a')][_0x204e94[_0x3f94('0xa8')]]&&_0x204e94['linkedid']!==_0x204e94['uniqueid']&&!this[_0x3f94('0x6a')][_0x204e94['linkedid']][_0x3f94('0x70')]){if(_0x204e94[_0x3f94('0x13c')]==='1'){this[_0x3f94('0x9b')](_0x204e94,_0x204e94[_0x3f94('0xa8')],_0x204e94['cause']);}}};Preview[_0x3f94('0x63')][_0x3f94('0x142')]=function(_0x344ef0,_0x39dac1,_0x24f9f5){if(this['actions'][_0x344ef0]){if(_[_0x3f94('0x69')](this[_0x3f94('0x6a')][_0x344ef0][_0x3f94('0x143')])){this[_0x3f94('0x6a')][_0x344ef0][_0x3f94('0x143')]={};}this[_0x3f94('0x6a')][_0x344ef0][_0x3f94('0x143')][_0x39dac1]=_0x24f9f5;}};Preview[_0x3f94('0x63')]['syncVarSet']=function(_0x219374){try{if(!_['isNil'](_0x219374)){if(ut[_0x3f94('0x144')](_[_0x3f94('0x145')](_0x219374[_0x3f94('0x146')])[0x0])){this['addVariable'](_0x219374['uniqueid'],_[_0x3f94('0x145')](_0x219374['variable'])[0x0],_0x219374[_0x3f94('0x147')]);}}}catch(_0x1a84b8){logger['error'](_0x3f94('0x148'),util['inspect'](_0x1a84b8,{'showHidden':![],'depth':null}));}};Preview[_0x3f94('0x63')][_0x3f94('0x22')]=function(_0x2806bb){if(_0x2806bb){if(this[_0x3f94('0x6a')][_0x2806bb[_0x3f94('0x149')]]){this['actions'][_0x2806bb[_0x3f94('0x149')]][_0x3f94('0x13e')]=!![];}}};Preview[_0x3f94('0x63')][_0x3f94('0x23')]=function(_0xaf576b){if(_0xaf576b){if(this['actions'][_0xaf576b['transfererlinkedid']]){this[_0x3f94('0x6a')][_0xaf576b[_0x3f94('0x14a')]][_0x3f94('0x13e')]=!![];}}};module[_0x3f94('0x14b')]=Preview;
\ No newline at end of file
index 4b530fb..b1c8e36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3c3=['[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','countReScheduled','unlockContact','disableContact','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','util','bluebird','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview'];(function(_0x2cf100,_0x267a73){var _0x3c672e=function(_0x4d62d2){while(--_0x4d62d2){_0x2cf100['push'](_0x2cf100['shift']());}};_0x3c672e(++_0x267a73);}(_0xd3c3,0x123));var _0x3d3c=function(_0x4898dc,_0x21c3dc){_0x4898dc=_0x4898dc-0x0;var _0x88d0b4=_0xd3c3[_0x4898dc];return _0x88d0b4;};'use strict';var util=require(_0x3d3c('0x0'));var BPromise=require(_0x3d3c('0x1'));var logger=require('../../../config/logger')(_0x3d3c('0x2'));var _=require(_0x3d3c('0x3'));var cmHopper=require(_0x3d3c('0x4'));var cmHopperFinal=require(_0x3d3c('0x5'));var cmHopperHistory=require(_0x3d3c('0x6'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x3d3c('0x7'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x3d3c('0x8'));function loggerCatch(_0x3ee0a8){return function(_0x337557){logger[_0x3d3c('0x9')](_0x3ee0a8,util[_0x3d3c('0xa')](_0x337557,{'showHidden':![],'depth':null}));};}function create(_0x102fdf){return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](cmHopperHistory[_0x3d3c('0xd')](_0x102fdf))[_0x3d3c('0xe')](loggerCatch(_0x3d3c('0xf')));}function createAgent(_0xbd3d89){return BPromise['resolve']()[_0x3d3c('0xc')](agentReportPreview[_0x3d3c('0xd')](_0xbd3d89))[_0x3d3c('0xe')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x27241a){return BPromise['resolve']()['then'](cmHopper[_0x3d3c('0x10')](_0x27241a,!![]))[_0x3d3c('0xe')](loggerCatch(_0x3d3c('0x11')));}exports[_0x3d3c('0x12')]=function(_0x2a4024){return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](cmHopperBlack[_0x3d3c('0x12')](_0x2a4024))[_0x3d3c('0xe')](loggerCatch(_0x3d3c('0x13')));};exports['getContactPreview']=function(_0x4c2d77){return BPromise[_0x3d3c('0xb')]()['then'](cmHopper[_0x3d3c('0x14')](_0x4c2d77))[_0x3d3c('0xe')](loggerCatch(_0x3d3c('0x15')));};exports[_0x3d3c('0xd')]=function(_0xfcb2f7,_0x31b078){create(_0xfcb2f7)[_0x3d3c('0xe')](loggerCatch(_0x31b078));moveContact(_0xfcb2f7)['catch'](loggerCatch(_0x31b078));};exports[_0x3d3c('0x16')]=function(_0x13d376,_0x28b21d){createAgent(_0x13d376)[_0x3d3c('0xe')](loggerCatch(_0x28b21d));};exports[_0x3d3c('0x17')]=function(_0x25bf0c,_0x1b62c4){create(_0x25bf0c)[_0x3d3c('0xe')](loggerCatch(_0x1b62c4));};exports[_0x3d3c('0x18')]=function(_0x1266e7,_0x15515f){moveContact(_0x1266e7)[_0x3d3c('0xe')](loggerCatch(_0x15515f));};exports[_0x3d3c('0x19')]=function(_0x522fd9,_0x3af8f8,_0x1c3a7b){if(_0x3af8f8){_0x522fd9['UserId']=null;}if(_0x1c3a7b){_0x522fd9['active']=![];}return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](cmHopper[_0x3d3c('0x19')](_0x522fd9))['catch'](loggerCatch('[rescheduleContact]\x20'));};exports[_0x3d3c('0x1a')]=function(_0x40b6bf){return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](cmHopper[_0x3d3c('0x1a')](_0x40b6bf))[_0x3d3c('0xe')](loggerCatch('[countReScheduled]\x20'));};exports[_0x3d3c('0x1b')]=function(_0x4ecc63){return BPromise['resolve']()[_0x3d3c('0xc')](cmHopper[_0x3d3c('0x1b')]({'UserId':null},_0x4ecc63,0x1))[_0x3d3c('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x3d3c('0x1c')]=function(_0x449d9d){return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](cmHopper[_0x3d3c('0x1b')]({'active':![]},_0x449d9d,0x1))['catch'](loggerCatch('[activeContact]\x20'));};exports['crateCustomerReportQueue']=function(_0x2f8470){var _0x36a1c2={};_0x36a1c2[_0x3d3c('0x1d')]=_0x2f8470[_0x3d3c('0x1d')];_0x36a1c2[_0x3d3c('0x1e')]=_0x2f8470[_0x3d3c('0x1e')];_0x36a1c2[_0x3d3c('0x1f')]=_0x2f8470[_0x3d3c('0x1f')];_0x36a1c2[_0x3d3c('0x20')]=_0x2f8470[_0x3d3c('0x20')];_0x36a1c2[_0x3d3c('0x21')]=_0x2f8470[_0x3d3c('0x21')];_0x36a1c2[_0x3d3c('0x22')]=_0x2f8470[_0x3d3c('0x23')];_0x36a1c2[_0x3d3c('0x24')]=_0x2f8470['answertime'];_0x36a1c2['queuecallercomplete']=0x1;_0x36a1c2['queuecallercompleteAt']=_0x2f8470[_0x3d3c('0x25')];_0x36a1c2[_0x3d3c('0x26')]=_0x2f8470[_0x3d3c('0x27')];_0x36a1c2[_0x3d3c('0x28')]=_0x3d3c('0x29');_0x36a1c2[_0x3d3c('0x2a')]=_0x3d3c('0x2b');_0x36a1c2[_0x3d3c('0x2c')]=0x0;_0x36a1c2['assigned']=0x1;_0x36a1c2[_0x3d3c('0x2d')]=_0x2f8470[_0x3d3c('0x27')];_0x36a1c2[_0x3d3c('0x2e')]='COMPLETED';return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](voiceQueueReport[_0x3d3c('0x2f')](_0x36a1c2))['catch'](loggerCatch(_0x3d3c('0x30')));};exports[_0x3d3c('0x31')]=function(_0x33cbd8,_0x3b7d8b){return BPromise[_0x3d3c('0xb')]()[_0x3d3c('0xc')](cmHopper[_0x3d3c('0x31')](_0x33cbd8,_0x3b7d8b))[_0x3d3c('0xe')](loggerCatch(_0x3d3c('0x32')));};exports[_0x3d3c('0x33')]=function(_0x48d7c0){return BPromise[_0x3d3c('0xb')]()['then'](cmHopper[_0x3d3c('0x19')](_0x48d7c0,!![],!![]))[_0x3d3c('0xe')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0x40d0=['[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercompleteAt','endtime','connectedlinename','xcally-motion-preview','holdtime','assigned','lastAssignedTo','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','preview','lodash','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/voiceQueueReport','inspect','then','catch','[createHistory]\x20','resolve','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList'];(function(_0x2085f3,_0x50105b){var _0x384e3c=function(_0x235fa0){while(--_0x235fa0){_0x2085f3['push'](_0x2085f3['shift']());}};_0x384e3c(++_0x50105b);}(_0x40d0,0x12d));var _0x040d=function(_0x3aef9a,_0x31a6ef){_0x3aef9a=_0x3aef9a-0x0;var _0x24b144=_0x40d0[_0x3aef9a];return _0x24b144;};'use strict';var util=require(_0x040d('0x0'));var BPromise=require(_0x040d('0x1'));var logger=require('../../../config/logger')(_0x040d('0x2'));var _=require(_0x040d('0x3'));var cmHopper=require(_0x040d('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x040d('0x5'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x040d('0x6'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x040d('0x7'));function loggerCatch(_0x441aef){return function(_0xc81331){logger['error'](_0x441aef,util[_0x040d('0x8')](_0xc81331,{'showHidden':![],'depth':null}));};}function create(_0x56fab9){return BPromise['resolve']()[_0x040d('0x9')](cmHopperHistory['createHistory'](_0x56fab9))[_0x040d('0xa')](loggerCatch(_0x040d('0xb')));}function createAgent(_0x11f15a){return BPromise[_0x040d('0xc')]()['then'](agentReportPreview[_0x040d('0xd')](_0x11f15a))[_0x040d('0xa')](loggerCatch(_0x040d('0xb')));}function moveContact(_0x1c5d49){return BPromise[_0x040d('0xc')]()[_0x040d('0x9')](cmHopper[_0x040d('0xe')](_0x1c5d49,!![]))[_0x040d('0xa')](loggerCatch(_0x040d('0xf')));}exports[_0x040d('0x10')]=function(_0x15642e){return BPromise[_0x040d('0xc')]()['then'](cmHopperBlack[_0x040d('0x10')](_0x15642e))[_0x040d('0xa')](loggerCatch(_0x040d('0x11')));};exports[_0x040d('0x12')]=function(_0x4afdd2){return BPromise[_0x040d('0xc')]()[_0x040d('0x9')](cmHopper[_0x040d('0x12')](_0x4afdd2))[_0x040d('0xa')](loggerCatch(_0x040d('0x13')));};exports[_0x040d('0xd')]=function(_0x13d774,_0xa9207c){create(_0x13d774)[_0x040d('0xa')](loggerCatch(_0xa9207c));moveContact(_0x13d774)['catch'](loggerCatch(_0xa9207c));};exports[_0x040d('0x14')]=function(_0x18e170,_0x41388f){createAgent(_0x18e170)[_0x040d('0xa')](loggerCatch(_0x41388f));};exports['createCustomerHistory']=function(_0x4a5fa6,_0x29a7d6){create(_0x4a5fa6)[_0x040d('0xa')](loggerCatch(_0x29a7d6));};exports[_0x040d('0x15')]=function(_0x40bc41,_0x2201fd){moveContact(_0x40bc41)[_0x040d('0xa')](loggerCatch(_0x2201fd));};exports[_0x040d('0x16')]=function(_0x2705e0,_0x1f6722,_0x6950ca){if(_0x1f6722){_0x2705e0[_0x040d('0x17')]=null;}if(_0x6950ca){_0x2705e0[_0x040d('0x18')]=![];}return BPromise['resolve']()[_0x040d('0x9')](cmHopper['rescheduleContact'](_0x2705e0))[_0x040d('0xa')](loggerCatch(_0x040d('0x19')));};exports[_0x040d('0x1a')]=function(_0x8d5b2c){return BPromise[_0x040d('0xc')]()[_0x040d('0x9')](cmHopper[_0x040d('0x1a')](_0x8d5b2c))['catch'](loggerCatch(_0x040d('0x1b')));};exports[_0x040d('0x1c')]=function(_0x1fa0d3){return BPromise['resolve']()[_0x040d('0x9')](cmHopper[_0x040d('0x1c')]({'UserId':null},_0x1fa0d3,0x1))['catch'](loggerCatch(_0x040d('0x1d')));};exports[_0x040d('0x1e')]=function(_0x15672c){return BPromise[_0x040d('0xc')]()[_0x040d('0x9')](cmHopper[_0x040d('0x1c')]({'active':![]},_0x15672c,0x1))[_0x040d('0xa')](loggerCatch('[activeContact]\x20'));};exports['crateCustomerReportQueue']=function(_0x278859){var _0x2f7815={};_0x2f7815[_0x040d('0x1f')]=_0x278859[_0x040d('0x1f')];_0x2f7815[_0x040d('0x20')]=_0x278859['uniqueid'];_0x2f7815[_0x040d('0x21')]=_0x278859[_0x040d('0x21')];_0x2f7815[_0x040d('0x22')]=_0x278859['calleridname'];_0x2f7815[_0x040d('0x23')]=_0x278859[_0x040d('0x23')];_0x2f7815[_0x040d('0x24')]=_0x278859[_0x040d('0x25')];_0x2f7815[_0x040d('0x26')]=_0x278859[_0x040d('0x25')];_0x2f7815['queuecallercomplete']=0x1;_0x2f7815[_0x040d('0x27')]=_0x278859[_0x040d('0x28')];_0x2f7815[_0x040d('0x29')]=_0x278859['membername'];_0x2f7815['context']='from-sip';_0x2f7815['exten']=_0x040d('0x2a');_0x2f7815[_0x040d('0x2b')]=0x0;_0x2f7815[_0x040d('0x2c')]=0x1;_0x2f7815[_0x040d('0x2d')]=_0x278859['membername'];_0x2f7815['queuecallerexitreason']=_0x040d('0x2e');return BPromise['resolve']()[_0x040d('0x9')](voiceQueueReport[_0x040d('0x2f')](_0x2f7815))[_0x040d('0xa')](loggerCatch(_0x040d('0x30')));};exports[_0x040d('0x31')]=function(_0x5b3f00,_0x1dc69e){return BPromise[_0x040d('0xc')]()[_0x040d('0x9')](cmHopper[_0x040d('0x31')](_0x5b3f00,_0x1dc69e))[_0x040d('0xa')](loggerCatch(_0x040d('0x32')));};exports[_0x040d('0x33')]=function(_0x3cff5e){return BPromise[_0x040d('0xc')]()[_0x040d('0x9')](cmHopper['rescheduleContact'](_0x3cff5e,!![],!![]))[_0x040d('0xa')](loggerCatch(_0x040d('0x34')));};
\ No newline at end of file
index 0744ef6..90be709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa56=['getDiff','seconds','CampaignId','filterKey','idContact','type','campaigntype','scheduledat','countbusyretry','countglobal','callbackuniqueid','callbackat','recallme','sipcallid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','extractCalleridNumber','match','util','moment','../../../../config/logger','preview','env','milliseconds','diff','loggerCatch','error','logger','loggerError','inspect','logger2','info','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','tags','updatedAt','%s%s','toUpper','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','Failure','RECALL','BOOKED','originate','xcally-motion-preview','from-sip','timeout','totalGlobal','countcongestionretry','countnosuchnumberretry','cloneAction','clone','scheduledAt','active','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','lastevent','queue','interface','channelAgent','motionChannel','voice','mandatoryDisposition','uniqueid','agentReadyId','not_inuse','reachable'];(function(_0x8bab3a,_0x563440){var _0x2ed2db=function(_0xa2818e){while(--_0xa2818e){_0x8bab3a['push'](_0x8bab3a['shift']());}};_0x2ed2db(++_0x563440);}(_0xaa56,0x14c));var _0x6aa5=function(_0x3d4c88,_0x4a98b7){_0x3d4c88=_0x3d4c88-0x0;var _0x582483=_0xaa56[_0x3d4c88];return _0x582483;};'use strict';var util=require(_0x6aa5('0x0'));var _=require('lodash');var moment=require(_0x6aa5('0x1'));var logger=require(_0x6aa5('0x2'))(_0x6aa5('0x3'));var ipAgi=process[_0x6aa5('0x4')]['XCALLY_IP_AGI']||'127.0.0.1';function getSeconds(_0x147b36,_0x5ed6ad){var _0x5c49b1=moment(_0x147b36)[_0x6aa5('0x5')](0x0);var _0x502778=moment(_0x5ed6ad)[_0x6aa5('0x5')](0x0);return _0x5c49b1[_0x6aa5('0x6')](_0x502778,'seconds');}exports[_0x6aa5('0x7')]=function(_0x799994){return function(_0x5da3b7){logger[_0x6aa5('0x8')](_0x799994,util['inspect'](_0x5da3b7,{'showHidden':![],'depth':null}));};};exports[_0x6aa5('0x9')]=function(_0x4c7aa3,_0x2bfed7){logger['info'](_0x4c7aa3,util['inspect'](_0x2bfed7,{'showHidden':![],'depth':null}));};exports[_0x6aa5('0xa')]=function(_0x80aac7,_0x50ce2b){logger[_0x6aa5('0x8')](_0x80aac7,util[_0x6aa5('0xb')](_0x50ce2b,{'showHidden':![],'depth':null}));};exports[_0x6aa5('0xc')]=function(_0x8d47b7){return function(_0x4b2c20){logger[_0x6aa5('0xd')](_0x8d47b7,util[_0x6aa5('0xb')](_0x4b2c20,{'showHidden':![],'depth':null}));};};exports[_0x6aa5('0xe')]=function(_0x3400dd,_0x124f8a,_0x290b6d){return{'message':_0x3400dd,'unlock':_0x124f8a,'active':_0x290b6d};};exports[_0x6aa5('0xf')]=function(_0x38fc62,_0x1152a0,_0x1f7007){if(!_[_0x6aa5('0x10')](_0x1f7007)&&_0x6aa5('0x11')===typeof _0x1f7007&&!_[_0x6aa5('0x12')](_0x1f7007)){if(!_[_0x6aa5('0x10')](_0x1152a0)&&_0x6aa5('0x11')===typeof _0x1152a0&&!_[_0x6aa5('0x12')](_0x1152a0)){return util['format'](_0x6aa5('0x13'),_0x1152a0,_0x1f7007);}return util[_0x6aa5('0x14')]('\x22%s\x22\x20<%s>',_0x1f7007,_0x1f7007);}if(!_[_0x6aa5('0x10')](_0x38fc62)&&_0x6aa5('0x11')===typeof _0x38fc62&&!_[_0x6aa5('0x12')](_0x38fc62)){return _0x38fc62;}return _0x6aa5('0x15');};exports[_0x6aa5('0x16')]=function(_0x4cc0d7){if(_[_0x6aa5('0x17')](_0x4cc0d7)){return![];}return _0x4cc0d7;};exports[_0x6aa5('0x18')]=function(_0x181c5b,_0x1d10ea,_0x454da5,_0x435fd2,_0x3d2ec1,_0x1613ce){var _0x3ae850={'XMD-QUEUE':_0x1d10ea[_0x6aa5('0x19')]?_0x1d10ea['Queue']['name']:'','XMD-CALLERID':_0x435fd2,'XMD-CALLERID-PREVIEW':_0x1613ce?util[_0x6aa5('0x14')](_0x6aa5('0x13'),_0x1613ce[_0x6aa5('0x1a')],_0x1613ce[_0x6aa5('0x1b')]):_0x435fd2,'XMD-DIALID':_0x3d2ec1,'XMD-CONTACTID':_0x1d10ea[_0x6aa5('0x1c')],'XMD-CDRTYPE':_0x6aa5('0x1d'),'CALLERID(all)':_0x435fd2,'XMD-VOICEQUEUEID':_0x1d10ea[_0x6aa5('0x1e')],'XMD-DIALCHANNEL':_0x454da5,'XMD-DIALTIMEOUT':_0x181c5b[_0x6aa5('0x1f')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x6aa5('0x20'),_0x181c5b[_0x6aa5('0x21')]?'g':'',_['isEmpty'](_0x181c5b[_0x6aa5('0x22')])?'':_0x6aa5('0x23')),'XMD-DIALURL':_0x181c5b[_0x6aa5('0x24')]||'','XMD-AGI':_0x181c5b[_0x6aa5('0x25')]?util[_0x6aa5('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x181c5b[_0x6aa5('0x25')]):_0x6aa5('0x26'),'XMD-AGIAFTER':_0x181c5b['dialQueueProject2']?util['format'](_0x6aa5('0x27'),ipAgi,_0x181c5b[_0x6aa5('0x21')]):_0x6aa5('0x26'),'XMD-ORIGINATECALLERIDNUM':_0x1613ce?_0x1613ce[_0x6aa5('0x28')]:'','XMD-ORIGINATECALLERIDNAME':_0x1613ce?_0x1613ce[_0x6aa5('0x29')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x6aa5('0x12')](_0x181c5b['monitor_format'])){_0x3ae850[util['format']('%s',_0x6aa5('0x2a'))]=_0x181c5b[_0x6aa5('0x22')];_0x3ae850[util[_0x6aa5('0x14')]('%s',_0x6aa5('0x2b'))]=_0x3d2ec1;}if(_0x1d10ea&&_0x1d10ea[_0x6aa5('0x2c')]){for(var _0xf432e5 in _0x1d10ea[_0x6aa5('0x2c')]){if(_0x1d10ea[_0x6aa5('0x2c')]['hasOwnProperty'](_0xf432e5)){if(!_[_0x6aa5('0x17')](_0x1d10ea[_0x6aa5('0x2c')][_0xf432e5])&&_0xf432e5!=='id'&&_0xf432e5!==_0x6aa5('0x2d')&&_0xf432e5!=='createdAt'&&_0xf432e5!==_0x6aa5('0x2e')){_0x3ae850[util[_0x6aa5('0x14')](_0x6aa5('0x2f'),'XMD-',_[_0x6aa5('0x30')](_0xf432e5))]=_0x1d10ea[_0x6aa5('0x2c')][_0xf432e5];}}}}return _0x3ae850;};exports[_0x6aa5('0x31')]=function(_0x503a64){var _0x1be4f2={};for(var _0x31ec5c in _0x503a64){if(_0x503a64[_0x6aa5('0x32')](_0x31ec5c)){_0x1be4f2[util[_0x6aa5('0x14')]('%s',_[_0x6aa5('0x33')](_0x31ec5c))]=_0x503a64[_0x31ec5c];}}return{'variables':_0x1be4f2};};exports[_0x6aa5('0x34')]=function(_0x48310e,_0x20cd57){if(!_[_0x6aa5('0x17')](_0x48310e)){if(_0x48310e['hasOwnProperty']('originated')){if(_0x48310e[_0x6aa5('0x35')]>0x0){_0x48310e[_0x6aa5('0x35')]-=0x1;}else{logger[_0x6aa5('0x8')](_0x6aa5('0x36'),_0x20cd57);}}}else{logger[_0x6aa5('0x8')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x20cd57);}};exports[_0x6aa5('0x37')]=function(_0x11376a){var _0x2d1605=moment()[_0x6aa5('0x14')](_0x6aa5('0x38'));_0x11376a[_0x6aa5('0x39')]=0xd;_0x11376a[_0x6aa5('0x3a')]=_0x6aa5('0x3b');_0x11376a[_0x6aa5('0x3c')]=_0x2d1605;_0x11376a[_0x6aa5('0x3d')]=_0x2d1605;_0x11376a[_0x6aa5('0x3e')]=_0x2d1605;};exports[_0x6aa5('0x3f')]=function(_0x945443,_0x3f0692,_0x176cb7){var _0x41c43f=moment()[_0x6aa5('0x14')](_0x6aa5('0x38'));_0x945443['state']=_0x3f0692;_0x945443[_0x6aa5('0x3a')]=_0x176cb7;_0x945443[_0x6aa5('0x3d')]=_0x41c43f;_0x945443[_0x6aa5('0x40')]=getSeconds(_0x945443[_0x6aa5('0x3d')],_0x945443['starttime']);};exports[_0x6aa5('0x41')]=function(_0x3979c4,_0x3e0b56,_0x4e142d){_0x3979c4[_0x6aa5('0x42')]=_0x3e0b56;_0x3979c4[_0x6aa5('0x43')]=_0x4e142d;};exports[_0x6aa5('0x44')]=function(_0x77cf38,_0x1ec4ad,_0x1b8f57){var _0x48d8e0=moment()['format'](_0x6aa5('0x38'));_0x77cf38[_0x6aa5('0x39')]=_0x1ec4ad;_0x77cf38[_0x6aa5('0x3a')]=_0x1b8f57;_0x77cf38[_0x6aa5('0x3d')]=_0x77cf38[_0x6aa5('0x3d')]?_0x77cf38[_0x6aa5('0x3d')]:_0x48d8e0;_0x77cf38[_0x6aa5('0x3e')]=_0x77cf38[_0x6aa5('0x3e')]?_0x77cf38['endtime']:_0x48d8e0;_0x77cf38[_0x6aa5('0x40')]=getSeconds(_0x77cf38[_0x6aa5('0x3d')]||0x0,_0x77cf38[_0x6aa5('0x3c')]||0x0);_0x77cf38[_0x6aa5('0x45')]=_0x77cf38[_0x6aa5('0x46')]?getSeconds(_0x77cf38[_0x6aa5('0x3e')],_0x77cf38['answertime']):0x0;};exports['isFailure']=function(_0x3eb718){return _0x3eb718===_0x6aa5('0x47');};exports['variablesAction']=function(_0x30e59c,_0x2b8b90,_0x19da5a,_0x12aa6f,_0x3bc1d3){var _0x3bf490=_0x12aa6f?_0x6aa5('0x48'):_0x30e59c['calleridname'];_0x3bf490=_0x3bc1d3?_0x6aa5('0x49'):_0x3bf490;return{'actionid':_0x30e59c['uniqueid'],'action':_0x6aa5('0x4a'),'channel':_0x30e59c['channelAgent'],'callerid':util[_0x6aa5('0x14')](_0x6aa5('0x13'),_0x3bf490,_0x30e59c[_0x6aa5('0x1b')]),'Exten':_0x6aa5('0x4b'),'Context':_0x6aa5('0x4c'),'Priority':'1','variable':_0x19da5a,'timeout':(_0x2b8b90[_0x6aa5('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x30e59c['uniqueid']};};exports[_0x6aa5('0x4e')]=function(_0x27de90){return _0x27de90['countbusyretry']+_0x27de90[_0x6aa5('0x4f')]+_0x27de90['countnoanswerretry']+_0x27de90['countagentrejectretry']+_0x27de90[_0x6aa5('0x50')];};exports[_0x6aa5('0x51')]=function(_0x313748){var _0x63e167=_[_0x6aa5('0x52')](_0x313748);_0x63e167[_0x6aa5('0x39')]=0xf;_0x63e167['statedesc']='Global';return _0x63e167;};exports[_0x6aa5('0x53')]=function(_0x25b9d1,_0x312f08,_0x5eca00){var _0x158b1b={};_0x158b1b[_0x312f08]=_0x25b9d1[_0x312f08];_0x158b1b[_0x6aa5('0x54')]=![];_0x158b1b['scheduledat']=moment()['add'](_0x5eca00,_0x6aa5('0x55'))[_0x6aa5('0x14')](_0x6aa5('0x38'));_0x158b1b[_0x6aa5('0x1c')]=_0x25b9d1['ContactId'];_0x158b1b[_0x6aa5('0x56')]=_0x25b9d1['ListId'];_0x158b1b['VoiceQueueId']=_0x25b9d1[_0x6aa5('0x1e')]||undefined;return _0x158b1b;};exports[_0x6aa5('0x57')]=function(_0x30ac2d,_0xb2ed05){if(!_[_0x6aa5('0x17')](_0x30ac2d)){if(_0x30ac2d[_0x6aa5('0x58')]>0x0){_0x30ac2d[_0x6aa5('0x58')]-=0x1;}else{logger[_0x6aa5('0x8')](_0xb2ed05,_0x6aa5('0x59'));}}else{logger[_0x6aa5('0x8')](_0xb2ed05,_0x6aa5('0x5a'));}};exports['IsNotLoggedIn']=function(_0x1a1094){if(_0x1a1094<=0x0){return!![];}return![];};exports[_0x6aa5('0x5b')]=function(_0x58a030,_0x21ee3a,_0x264796){_0x58a030[_0x6aa5('0x5c')]=_0x21ee3a;_0x58a030['name']=_0x58a030[_0x6aa5('0x5d')];_0x58a030[_0x6aa5('0x5e')]=_0x58a030[_0x6aa5('0x5f')];_0x58a030[_0x6aa5('0x60')]=_0x6aa5('0x61');if(_0x264796){_0x58a030[_0x6aa5('0x62')]=_0x264796[_0x6aa5('0x62')];}return _0x58a030;};exports['buildAcw']=function(_0x57598c){var _0x1593ab={};_0x1593ab[_0x6aa5('0x5d')]=_0x57598c[_0x6aa5('0x5d')];_0x1593ab['interface']=_0x57598c[_0x6aa5('0x5f')];_0x1593ab[_0x6aa5('0x63')]=_0x57598c[_0x6aa5('0x63')];return _0x1593ab;};exports[_0x6aa5('0x64')]=function(_0x4dd191){var _0x54126d=[];for(var _0x5568e2 in _0x4dd191){if(_0x4dd191[_0x6aa5('0x32')](_0x5568e2)){if(!_[_0x6aa5('0x17')](_0x4dd191[_0x5568e2])&&_0x4dd191[_0x5568e2][_0x6aa5('0x39')]===_0x6aa5('0x65')&&_0x4dd191[_0x5568e2]['status']===_0x6aa5('0x66')){_0x54126d['push'](_0x4dd191[_0x5568e2]['id']);}}}return _0x54126d;};exports[_0x6aa5('0x67')]=function(_0x461a87){var _0x555055=moment()['milliseconds'](0x0);var _0x187f20=moment(_0x461a87)['milliseconds'](0x0);return _0x555055['diff'](_0x187f20,_0x6aa5('0x68'));};exports['createBody']=function(_0x1da316){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x1da316[_0x6aa5('0x1c')],'ListId':_0x1da316[_0x6aa5('0x56')],'VoiceQueueId':_0x1da316[_0x6aa5('0x1e')]||undefined,'CampaignId':_0x1da316[_0x6aa5('0x69')]||undefined};};exports[_0x6aa5('0x6a')]=function(_0xfdc431){if(_0xfdc431==='uniqueid'||_0xfdc431===_0x6aa5('0x6b')||_0xfdc431===_0x6aa5('0x5d')||_0xfdc431===_0x6aa5('0x6c')||_0xfdc431===_0x6aa5('0x6d')||_0xfdc431==='dialAnswer'||_0xfdc431===_0x6aa5('0x42')||_0xfdc431===_0x6aa5('0x5f')||_0xfdc431==='calleridname'||_0xfdc431===_0x6aa5('0x54')||_0xfdc431===_0x6aa5('0x1b')||_0xfdc431===_0x6aa5('0x6e')||_0xfdc431===_0x6aa5('0x6f')||_0xfdc431===_0x6aa5('0x4f')||_0xfdc431==='countnoanswerretry'||_0xfdc431===_0x6aa5('0x70')||_0xfdc431==='callback'||_0xfdc431===_0x6aa5('0x71')||_0xfdc431===_0x6aa5('0x72')||_0xfdc431===_0x6aa5('0x73')||_0xfdc431===_0x6aa5('0x1c')||_0xfdc431===_0x6aa5('0x56')||_0xfdc431==='UserId'||_0xfdc431===_0x6aa5('0x1e')||_0xfdc431===_0x6aa5('0x74')||_0xfdc431==='xmd-voicequeueid'||_0xfdc431===_0x6aa5('0x75')||_0xfdc431===_0x6aa5('0x76')||_0xfdc431===_0x6aa5('0x77')||_0xfdc431===_0x6aa5('0x78')||_0xfdc431===_0x6aa5('0x79')||_0xfdc431==='xmd-dialoptions'||_0xfdc431===_0x6aa5('0x7a')||_0xfdc431===_0x6aa5('0x7b')||_0xfdc431===_0x6aa5('0x7c')||_0xfdc431===_0x6aa5('0x7d')||_0xfdc431==='xmd-callerid'||_0xfdc431===_0x6aa5('0x7e')||_0xfdc431===_0x6aa5('0x7f')||_0xfdc431===_0x6aa5('0x80')||_0xfdc431==='rtpaudioqosbridged'||_0xfdc431===_0x6aa5('0x81')||_0xfdc431===_0x6aa5('0x82')||_0xfdc431===_0x6aa5('0x83')||_0xfdc431===_0x6aa5('0x84')||_0xfdc431===_0x6aa5('0x85')||_0xfdc431===_0x6aa5('0x86')||_0xfdc431===_0x6aa5('0x80')||_0xfdc431===_0x6aa5('0x87')||_0xfdc431===_0x6aa5('0x81')||_0xfdc431===_0x6aa5('0x82')||_0xfdc431===_0x6aa5('0x83')||_0xfdc431===_0x6aa5('0x84')||_0xfdc431===_0x6aa5('0x85')||_0xfdc431===_0x6aa5('0x86')||_0xfdc431===_0x6aa5('0x88')||_0xfdc431===_0x6aa5('0x89')||_0xfdc431===_0x6aa5('0x39')||_0xfdc431===_0x6aa5('0x3a')){return![];}return!![];};exports[_0x6aa5('0x8a')]=function(_0x54b997,_0x55214c){var _0x4c1c39,_0x1ef63d,_0x1abf1e;if(_0x55214c<=0x0){_0x55214c=0x1;}_0x4c1c39=new RegExp(_0x6aa5('0x8b')+_0x55214c+'}$');_0x1ef63d=Math[_0x6aa5('0x8c')](0xa,_0x55214c-0x1);_0x1abf1e=Math['pow'](0xa,_0x55214c)-0x1;return util[_0x6aa5('0x14')]('%s',_[_0x6aa5('0x8d')](_0x54b997,_0x4c1c39,_['random'](_0x1ef63d,_0x1abf1e)));};exports[_0x6aa5('0x8e')]=function(_0x362957){var _0xbc52d4=_0x362957['match'](/"(.*?)"/);return _0xbc52d4?_0xbc52d4[0x1]:_0x362957;};exports[_0x6aa5('0x8f')]=function(_0x1d7d83){var _0x2239f2=_0x1d7d83[_0x6aa5('0x90')](/<(.*?)>/);return _0x2239f2?_0x2239f2[0x1]:_0x1d7d83;};
\ No newline at end of file
+var _0xa413=['NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','monitor_format','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','error','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','Blacklist','starttime','responsetime','endtime','logAgent','state','statedesc','ringtime','membername','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','originate','from-sip','timeout','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','active','scheduledat','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','channelAgent','mandatoryDisposition','uniqueid','agentReadyId','not_inuse','status','reachable','push','getDiff','milliseconds','createBody','CampaignId','filterKey','idContact','campaigntype','dialAnswer','countbusyretry','countnoanswerretry','countglobal','callback','callbackuniqueid','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-callerid','xmd-agi','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','util','moment','../../../../config/logger','preview','XCALLY_IP_AGI','127.0.0.1','diff','seconds','inspect','logger','info','getCallerId','isUndefined','isEmpty','format','\x22%s\x22\x20<%s>','string','\x22\x22\x20<>','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialer','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22'];(function(_0x2bced3,_0x5e0d41){var _0x1ed985=function(_0x56f025){while(--_0x56f025){_0x2bced3['push'](_0x2bced3['shift']());}};_0x1ed985(++_0x5e0d41);}(_0xa413,0x72));var _0x3a41=function(_0x26e251,_0x4258c6){_0x26e251=_0x26e251-0x0;var _0x40ecbf=_0xa413[_0x26e251];return _0x40ecbf;};'use strict';var util=require(_0x3a41('0x0'));var _=require('lodash');var moment=require(_0x3a41('0x1'));var logger=require(_0x3a41('0x2'))(_0x3a41('0x3'));var ipAgi=process['env'][_0x3a41('0x4')]||_0x3a41('0x5');function getSeconds(_0x12ae13,_0x4b0087){var _0xc4fdb1=moment(_0x12ae13)['milliseconds'](0x0);var _0x45aae4=moment(_0x4b0087)['milliseconds'](0x0);return _0xc4fdb1[_0x3a41('0x6')](_0x45aae4,_0x3a41('0x7'));}exports['loggerCatch']=function(_0x34fc30){return function(_0x26218f){logger['error'](_0x34fc30,util[_0x3a41('0x8')](_0x26218f,{'showHidden':![],'depth':null}));};};exports[_0x3a41('0x9')]=function(_0x229a7b,_0x1ac9db){logger[_0x3a41('0xa')](_0x229a7b,util[_0x3a41('0x8')](_0x1ac9db,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x5992ba,_0x354b4c){logger['error'](_0x5992ba,util[_0x3a41('0x8')](_0x354b4c,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x4f9a6b){return function(_0x49e154){logger['info'](_0x4f9a6b,util[_0x3a41('0x8')](_0x49e154,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x1943c3,_0x2fdc47,_0x55aae0){return{'message':_0x1943c3,'unlock':_0x2fdc47,'active':_0x55aae0};};exports[_0x3a41('0xb')]=function(_0x94cc13,_0x3b5051,_0x1480f7){if(!_[_0x3a41('0xc')](_0x1480f7)&&'string'===typeof _0x1480f7&&!_[_0x3a41('0xd')](_0x1480f7)){if(!_[_0x3a41('0xc')](_0x3b5051)&&'string'===typeof _0x3b5051&&!_['isEmpty'](_0x3b5051)){return util[_0x3a41('0xe')]('\x22%s\x22\x20<%s>',_0x3b5051,_0x1480f7);}return util[_0x3a41('0xe')](_0x3a41('0xf'),_0x1480f7,_0x1480f7);}if(!_['isUndefined'](_0x94cc13)&&_0x3a41('0x10')===typeof _0x94cc13&&!_['isEmpty'](_0x94cc13)){return _0x94cc13;}return _0x3a41('0x11');};exports['isActive']=function(_0x2cb70f){if(_['isNil'](_0x2cb70f)){return![];}return _0x2cb70f;};exports[_0x3a41('0x12')]=function(_0x317582,_0xe17da9,_0x5a59cc,_0x31f488,_0x43c7dd,_0x5b0c5c){var _0x38bf3f={'XMD-QUEUE':_0xe17da9['Queue']?_0xe17da9[_0x3a41('0x13')][_0x3a41('0x14')]:'','XMD-CALLERID':_0x31f488,'XMD-CALLERID-PREVIEW':_0x5b0c5c?util['format'](_0x3a41('0xf'),_0x5b0c5c[_0x3a41('0x15')],_0x5b0c5c[_0x3a41('0x16')]):_0x31f488,'XMD-DIALID':_0x43c7dd,'XMD-CONTACTID':_0xe17da9[_0x3a41('0x17')],'XMD-CDRTYPE':_0x3a41('0x18'),'CALLERID(all)':_0x31f488,'XMD-VOICEQUEUEID':_0xe17da9['VoiceQueueId'],'XMD-DIALCHANNEL':_0x5a59cc,'XMD-DIALTIMEOUT':_0x317582['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x3a41('0xe')](_0x3a41('0x19'),_0x317582[_0x3a41('0x1a')]?'g':'',_[_0x3a41('0xd')](_0x317582['monitor_format'])?'':_0x3a41('0x1b')),'XMD-DIALURL':_0x317582[_0x3a41('0x1c')]||'','XMD-AGI':_0x317582[_0x3a41('0x1d')]?util['format'](_0x3a41('0x1e'),ipAgi,_0x317582[_0x3a41('0x1d')]):_0x3a41('0x1f'),'XMD-AGIAFTER':_0x317582['dialQueueProject2']?util[_0x3a41('0xe')]('\x22agi://%s/square,%s\x22',ipAgi,_0x317582[_0x3a41('0x1a')]):_0x3a41('0x1f'),'XMD-ORIGINATECALLERIDNUM':_0x5b0c5c?_0x5b0c5c[_0x3a41('0x20')]:'','XMD-ORIGINATECALLERIDNAME':_0x5b0c5c?_0x5b0c5c[_0x3a41('0x21')]:'','XMD-DESTINATION':_0x3a41('0x22')};if(!_[_0x3a41('0xd')](_0x317582[_0x3a41('0x23')])){_0x38bf3f[util[_0x3a41('0xe')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x317582[_0x3a41('0x23')];_0x38bf3f[util[_0x3a41('0xe')]('%s',_0x3a41('0x24'))]=_0x43c7dd;}if(_0xe17da9&&_0xe17da9['Contact']){for(var _0x2e83d3 in _0xe17da9[_0x3a41('0x25')]){if(_0xe17da9[_0x3a41('0x25')][_0x3a41('0x26')](_0x2e83d3)){if(!_[_0x3a41('0x27')](_0xe17da9['Contact'][_0x2e83d3])&&_0x2e83d3!=='id'&&_0x2e83d3!==_0x3a41('0x28')&&_0x2e83d3!==_0x3a41('0x29')&&_0x2e83d3!==_0x3a41('0x2a')){_0x38bf3f[util[_0x3a41('0xe')](_0x3a41('0x2b'),_0x3a41('0x2c'),_[_0x3a41('0x2d')](_0x2e83d3))]=_0xe17da9[_0x3a41('0x25')][_0x2e83d3];}}}}return _0x38bf3f;};exports[_0x3a41('0x2e')]=function(_0x1037b9){var _0x1876f9={};for(var _0x3745b4 in _0x1037b9){if(_0x1037b9[_0x3a41('0x26')](_0x3745b4)){_0x1876f9[util[_0x3a41('0xe')]('%s',_[_0x3a41('0x2f')](_0x3745b4))]=_0x1037b9[_0x3745b4];}}return{'variables':_0x1876f9};};exports[_0x3a41('0x30')]=function(_0x1d324e,_0x14b2ba){if(!_[_0x3a41('0x27')](_0x1d324e)){if(_0x1d324e['hasOwnProperty']('originated')){if(_0x1d324e[_0x3a41('0x31')]>0x0){_0x1d324e[_0x3a41('0x31')]-=0x1;}else{logger[_0x3a41('0x32')](_0x3a41('0x33'),_0x14b2ba);}}}else{logger['error'](_0x3a41('0x34'),_0x14b2ba);}};exports[_0x3a41('0x35')]=function(_0x303056){var _0x5301b9=moment()[_0x3a41('0xe')](_0x3a41('0x36'));_0x303056['state']=0xd;_0x303056['statedesc']=_0x3a41('0x37');_0x303056[_0x3a41('0x38')]=_0x5301b9;_0x303056[_0x3a41('0x39')]=_0x5301b9;_0x303056[_0x3a41('0x3a')]=_0x5301b9;};exports[_0x3a41('0x3b')]=function(_0x1b01af,_0x4623a0,_0x4938ff){var _0x42317f=moment()[_0x3a41('0xe')]('YYYY-MM-DD\x20HH:mm:ss');_0x1b01af[_0x3a41('0x3c')]=_0x4623a0;_0x1b01af[_0x3a41('0x3d')]=_0x4938ff;_0x1b01af[_0x3a41('0x39')]=_0x42317f;_0x1b01af[_0x3a41('0x3e')]=getSeconds(_0x1b01af[_0x3a41('0x39')],_0x1b01af[_0x3a41('0x38')]);};exports['logLookAgent']=function(_0x3000bb,_0x5cdb55,_0x24c33f){_0x3000bb[_0x3a41('0x3f')]=_0x5cdb55;_0x3000bb['UserId']=_0x24c33f;};exports[_0x3a41('0x40')]=function(_0x5d3006,_0x184ea5,_0x5a09eb){var _0xff33e6=moment()[_0x3a41('0xe')](_0x3a41('0x36'));_0x5d3006[_0x3a41('0x3c')]=_0x184ea5;_0x5d3006[_0x3a41('0x3d')]=_0x5a09eb;_0x5d3006[_0x3a41('0x39')]=_0x5d3006['responsetime']?_0x5d3006[_0x3a41('0x39')]:_0xff33e6;_0x5d3006[_0x3a41('0x3a')]=_0x5d3006[_0x3a41('0x3a')]?_0x5d3006['endtime']:_0xff33e6;_0x5d3006[_0x3a41('0x3e')]=getSeconds(_0x5d3006[_0x3a41('0x39')]||0x0,_0x5d3006[_0x3a41('0x38')]||0x0);_0x5d3006[_0x3a41('0x41')]=_0x5d3006[_0x3a41('0x42')]?getSeconds(_0x5d3006[_0x3a41('0x3a')],_0x5d3006[_0x3a41('0x42')]):0x0;};exports[_0x3a41('0x43')]=function(_0x50e788){return _0x50e788===_0x3a41('0x44');};exports[_0x3a41('0x45')]=function(_0x3cea4f,_0x98486c,_0x236c7a,_0x5d6d70,_0x5e7d78){var _0x2c5ee1=_0x5d6d70?'RECALL':_0x3cea4f['calleridname'];_0x2c5ee1=_0x5e7d78?_0x3a41('0x46'):_0x2c5ee1;return{'actionid':_0x3cea4f['uniqueid'],'action':_0x3a41('0x47'),'channel':_0x3cea4f['channelAgent'],'callerid':util[_0x3a41('0xe')](_0x3a41('0xf'),_0x2c5ee1,_0x3cea4f[_0x3a41('0x16')]),'Exten':'xcally-motion-preview','Context':_0x3a41('0x48'),'Priority':'1','variable':_0x236c7a,'timeout':(_0x98486c[_0x3a41('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0x3cea4f['uniqueid']};};exports['totalGlobal']=function(_0x5ec905){return _0x5ec905['countbusyretry']+_0x5ec905[_0x3a41('0x4a')]+_0x5ec905['countnoanswerretry']+_0x5ec905[_0x3a41('0x4b')]+_0x5ec905[_0x3a41('0x4c')];};exports[_0x3a41('0x4d')]=function(_0x5bf8c2){var _0x3861a4=_['clone'](_0x5bf8c2);_0x3861a4['state']=0xf;_0x3861a4['statedesc']=_0x3a41('0x4e');return _0x3861a4;};exports[_0x3a41('0x4f')]=function(_0x30607d,_0x4f2fcb,_0x1f828e){var _0x5c688f={};_0x5c688f[_0x4f2fcb]=_0x30607d[_0x4f2fcb];_0x5c688f[_0x3a41('0x50')]=![];_0x5c688f[_0x3a41('0x51')]=moment()['add'](_0x1f828e,_0x3a41('0x52'))[_0x3a41('0xe')](_0x3a41('0x36'));_0x5c688f[_0x3a41('0x17')]=_0x30607d[_0x3a41('0x17')];_0x5c688f[_0x3a41('0x53')]=_0x30607d[_0x3a41('0x53')];_0x5c688f[_0x3a41('0x54')]=_0x30607d['VoiceQueueId']||undefined;return _0x5c688f;};exports[_0x3a41('0x55')]=function(_0x127e49,_0x56a1c3){if(!_['isNil'](_0x127e49)){if(_0x127e49[_0x3a41('0x56')]>0x0){_0x127e49[_0x3a41('0x56')]-=0x1;}else{logger[_0x3a41('0x32')](_0x56a1c3,_0x3a41('0x57'));}}else{logger[_0x3a41('0x32')](_0x56a1c3,_0x3a41('0x58'));}};exports[_0x3a41('0x59')]=function(_0x4c9b6d){if(_0x4c9b6d<=0x0){return!![];}return![];};exports[_0x3a41('0x5a')]=function(_0x3a539e,_0x1fbd61,_0x41ef5a){_0x3a539e[_0x3a41('0x5b')]=_0x1fbd61;_0x3a539e[_0x3a41('0x14')]=_0x3a539e[_0x3a41('0x5c')];_0x3a539e[_0x3a41('0x5d')]=_0x3a539e[_0x3a41('0x5e')];if(_0x41ef5a){_0x3a539e[_0x3a41('0x5f')]=_0x41ef5a[_0x3a41('0x5f')];}return _0x3a539e;};exports['buildAcw']=function(_0x336d72){var _0x4f52c1={};_0x4f52c1[_0x3a41('0x5c')]=_0x336d72[_0x3a41('0x5c')];_0x4f52c1[_0x3a41('0x5d')]=_0x336d72['channelAgent'];_0x4f52c1[_0x3a41('0x60')]=_0x336d72[_0x3a41('0x60')];return _0x4f52c1;};exports[_0x3a41('0x61')]=function(_0x36c52a){var _0x55369b=[];for(var _0x405ede in _0x36c52a){if(_0x36c52a[_0x3a41('0x26')](_0x405ede)){if(!_[_0x3a41('0x27')](_0x36c52a[_0x405ede])&&_0x36c52a[_0x405ede][_0x3a41('0x3c')]===_0x3a41('0x62')&&_0x36c52a[_0x405ede][_0x3a41('0x63')]===_0x3a41('0x64')){_0x55369b[_0x3a41('0x65')](_0x36c52a[_0x405ede]['id']);}}}return _0x55369b;};exports[_0x3a41('0x66')]=function(_0xd0b74e){var _0xeaeeaf=moment()[_0x3a41('0x67')](0x0);var _0x2c7441=moment(_0xd0b74e)['milliseconds'](0x0);return _0xeaeeaf[_0x3a41('0x6')](_0x2c7441,'seconds');};exports[_0x3a41('0x68')]=function(_0x49b037){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x49b037[_0x3a41('0x17')],'ListId':_0x49b037[_0x3a41('0x53')],'VoiceQueueId':_0x49b037[_0x3a41('0x54')]||undefined,'CampaignId':_0x49b037[_0x3a41('0x69')]||undefined};};exports[_0x3a41('0x6a')]=function(_0xd9c2ef){if(_0xd9c2ef===_0x3a41('0x60')||_0xd9c2ef===_0x3a41('0x6b')||_0xd9c2ef==='queue'||_0xd9c2ef==='type'||_0xd9c2ef===_0x3a41('0x6c')||_0xd9c2ef===_0x3a41('0x6d')||_0xd9c2ef===_0x3a41('0x3f')||_0xd9c2ef==='channelAgent'||_0xd9c2ef===_0x3a41('0x15')||_0xd9c2ef===_0x3a41('0x50')||_0xd9c2ef==='calleridnum'||_0xd9c2ef===_0x3a41('0x51')||_0xd9c2ef===_0x3a41('0x6e')||_0xd9c2ef===_0x3a41('0x4a')||_0xd9c2ef===_0x3a41('0x6f')||_0xd9c2ef===_0x3a41('0x70')||_0xd9c2ef===_0x3a41('0x71')||_0xd9c2ef===_0x3a41('0x72')||_0xd9c2ef==='callbackat'||_0xd9c2ef===_0x3a41('0x73')||_0xd9c2ef===_0x3a41('0x17')||_0xd9c2ef===_0x3a41('0x53')||_0xd9c2ef===_0x3a41('0x74')||_0xd9c2ef===_0x3a41('0x54')||_0xd9c2ef===_0x3a41('0x75')||_0xd9c2ef===_0x3a41('0x76')||_0xd9c2ef===_0x3a41('0x77')||_0xd9c2ef===_0x3a41('0x78')||_0xd9c2ef===_0x3a41('0x79')||_0xd9c2ef===_0x3a41('0x7a')||_0xd9c2ef===_0x3a41('0x7b')||_0xd9c2ef===_0x3a41('0x7c')||_0xd9c2ef===_0x3a41('0x7d')||_0xd9c2ef==='xmd-dialchannel'||_0xd9c2ef===_0x3a41('0x7e')||_0xd9c2ef==='xmd-cdrtype'||_0xd9c2ef===_0x3a41('0x7f')||_0xd9c2ef==='xmd-agiafter'||_0xd9c2ef===_0x3a41('0x80')||_0xd9c2ef==='rtpaudioqos'||_0xd9c2ef==='rtpaudioqosbridged'||_0xd9c2ef===_0x3a41('0x81')||_0xd9c2ef==='rtpaudioqosjitterbridged'||_0xd9c2ef==='rtpaudioqosloss'||_0xd9c2ef===_0x3a41('0x82')||_0xd9c2ef==='rtpaudioqosrtt'||_0xd9c2ef===_0x3a41('0x83')||_0xd9c2ef===_0x3a41('0x84')||_0xd9c2ef==='rtpaudioqosbridged'||_0xd9c2ef===_0x3a41('0x81')||_0xd9c2ef===_0x3a41('0x85')||_0xd9c2ef===_0x3a41('0x86')||_0xd9c2ef==='rtpaudioqoslossbridged'||_0xd9c2ef==='rtpaudioqosrtt'||_0xd9c2ef===_0x3a41('0x83')||_0xd9c2ef===_0x3a41('0x87')||_0xd9c2ef===_0x3a41('0x88')||_0xd9c2ef===_0x3a41('0x3c')||_0xd9c2ef===_0x3a41('0x3d')){return![];}return!![];};exports[_0x3a41('0x89')]=function(_0x455ffa,_0x74bbf){var _0x2f1f64,_0x1a9ba8,_0x274875;if(_0x74bbf<=0x0){_0x74bbf=0x1;}_0x2f1f64=new RegExp(_0x3a41('0x8a')+_0x74bbf+'}$');_0x1a9ba8=Math[_0x3a41('0x8b')](0xa,_0x74bbf-0x1);_0x274875=Math[_0x3a41('0x8b')](0xa,_0x74bbf)-0x1;return util['format']('%s',_[_0x3a41('0x8c')](_0x455ffa,_0x2f1f64,_[_0x3a41('0x8d')](_0x1a9ba8,_0x274875)));};exports[_0x3a41('0x8e')]=function(_0x1739cb){var _0x1d6684=_0x1739cb['match'](/"(.*?)"/);return _0x1d6684?_0x1d6684[0x1]:_0x1739cb;};exports[_0x3a41('0x8f')]=function(_0x27ac8e){var _0x998fc8=_0x27ac8e[_0x3a41('0x90')](/<(.*?)>/);return _0x998fc8?_0x998fc8[0x1]:_0x27ac8e;};
\ No newline at end of file
index 9063d63..81432c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ab=['reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean'];(function(_0x275399,_0x5dd3ac){var _0x106218=function(_0x3b8175){while(--_0x3b8175){_0x275399['push'](_0x275399['shift']());}};_0x106218(++_0x5dd3ac);}(_0xb9ab,0x1d0));var _0xbb9a=function(_0x2e6c3a,_0x39199f){_0x2e6c3a=_0x2e6c3a-0x0;var _0x1b36bd=_0xb9ab[_0x2e6c3a];return _0x1b36bd;};'use strict';exports[_0xbb9a('0x0')]={'queue':{'type':_0xbb9a('0x1'),'required':!![]},'interface':{'type':_0xbb9a('0x1'),'required':!![]},'membername':{'type':_0xbb9a('0x1'),'required':!![]},'penalty':{'type':_0xbb9a('0x2'),'required':![]},'paused':{'type':_0xbb9a('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0xbb9a('0x1'),'required':!![]},'interface':{'type':_0xbb9a('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':'string','required':!![]},'paused':{'type':_0xbb9a('0x3')},'reason':{'type':_0xbb9a('0x1'),'required':![]}};exports[_0xbb9a('0x4')]={'module':{'type':_0xbb9a('0x1'),'required':![]}};exports[_0xbb9a('0x5')]={'uniqueid':{'type':_0xbb9a('0x1'),'required':!![]}};exports[_0xbb9a('0x6')]={'uniqueid':{'type':_0xbb9a('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0xbb9a('0x1')},'mixmonitorid':{'type':_0xbb9a('0x1')}};exports[_0xbb9a('0x7')]={'uniqueid':{'type':_0xbb9a('0x1'),'required':!![]}};exports[_0xbb9a('0x8')]={'uniqueid':{'type':_0xbb9a('0x1'),'required':!![]},'exten':{'type':_0xbb9a('0x1'),'required':!![]},'context':{'type':_0xbb9a('0x1')}};
\ No newline at end of file
+var _0xd308=['voicequeuechannelredirect','queueadd','string','number','boolean','queuepause','reload','voicequeuechannel','voicechannel'];(function(_0x13594e,_0x6f0ed0){var _0x1a4f42=function(_0x30b064){while(--_0x30b064){_0x13594e['push'](_0x13594e['shift']());}};_0x1a4f42(++_0x6f0ed0);}(_0xd308,0x1a8));var _0x8d30=function(_0x2ae423,_0x54f1b8){_0x2ae423=_0x2ae423-0x0;var _0x8ba047=_0xd308[_0x2ae423];return _0x8ba047;};'use strict';exports[_0x8d30('0x0')]={'queue':{'type':_0x8d30('0x1'),'required':!![]},'interface':{'type':_0x8d30('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x8d30('0x2'),'required':![]},'paused':{'type':_0x8d30('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0x8d30('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x8d30('0x4')]={'interface':{'type':_0x8d30('0x1'),'required':!![]},'paused':{'type':_0x8d30('0x3')},'reason':{'type':_0x8d30('0x1'),'required':![]}};exports[_0x8d30('0x5')]={'module':{'type':_0x8d30('0x1'),'required':![]}};exports[_0x8d30('0x6')]={'uniqueid':{'type':_0x8d30('0x1'),'required':!![]}};exports[_0x8d30('0x7')]={'uniqueid':{'type':_0x8d30('0x1'),'required':!![]},'filename':{'type':_0x8d30('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x8d30('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0x8d30('0x8')]={'uniqueid':{'type':_0x8d30('0x1'),'required':!![]},'exten':{'type':_0x8d30('0x1'),'required':!![]},'context':{'type':_0x8d30('0x1')}};
\ No newline at end of file
index 7b64ebe..f1391cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2cd=['sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','total','abandoned','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','interface','isUndefined','initTrunks','initVoiceQueues','initTriggers','triggers','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initSugarcrmAccounts','sugarcrmAccounts','vtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','uniqueid','queuecallerexit','unmanaged','diff','queuecallerjoinAt','queuecallerexitAt','seconds','queuecallercomplete','answered','queuecallercompleteAt','queuecallerleaveAt','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','initFaxAccounts','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','trunks','voiceQueues','templates','outbound','voiceExtensions','channels','queueChannels','timers','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','format','SIP/%s','name','hasOwnProperty','isNil','sumHoldTime'];(function(_0x412a65,_0x37a0dc){var _0x5b2249=function(_0x6048af){while(--_0x6048af){_0x412a65['push'](_0x412a65['shift']());}};_0x5b2249(++_0x37a0dc);}(_0xc2cd,0x164));var _0xdc2c=function(_0xa5ad2,_0x5cc25d){_0xa5ad2=_0xa5ad2-0x0;var _0x15a7e7=_0xc2cd[_0xa5ad2];return _0x15a7e7;};'use strict';var BPromise=require(_0xdc2c('0x0'));var util=require(_0xdc2c('0x1'));var _=require(_0xdc2c('0x2'));var moment=require(_0xdc2c('0x3'));var Agent=require(_0xdc2c('0x4'));var Telephone=require(_0xdc2c('0x5'));var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0xdc2c('0x6'));var Template=require(_0xdc2c('0x7'));var Campaign=require(_0xdc2c('0x8'));var VoiceExtension=require(_0xdc2c('0x9'));var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0xdc2c('0xa'));var FreshdeskAccount=require(_0xdc2c('0xb'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0xdc2c('0xc'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0xdc2c('0xd'));var FreshsalesAccount=require(_0xdc2c('0xe'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xdc2c('0xf')]={};this[_0xdc2c('0x10')]={};this[_0xdc2c('0x11')]={};this[_0xdc2c('0x12')]={};this['triggers']={};this['campaigns']={};this[_0xdc2c('0x13')]={};this[_0xdc2c('0x14')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xdc2c('0x15')]={};this[_0xdc2c('0x16')]={};this[_0xdc2c('0x17')]={};this['outboundChannels']={};this[_0xdc2c('0x18')]={};this[_0xdc2c('0x19')]={};this[_0xdc2c('0x1a')]={};this[_0xdc2c('0x1b')]={};this['sugarcrmAccounts']={};this[_0xdc2c('0x1c')]={};this[_0xdc2c('0x1d')]={};this[_0xdc2c('0x1e')]={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0xdc2c('0x1f')]={};this[_0xdc2c('0x20')]={};this[_0xdc2c('0x21')]={};};function freeIsNotKey(_0x4142d6,_0x4fdd4c,_0x2158e7){var _0x3e4d7f=_['mapKeys'](_0x4142d6,function(_0x11ff85,_0x25e845){return _0x11ff85[_0x2158e7];});for(var _0x3d478e in _0x4fdd4c){if(_0x4fdd4c['hasOwnProperty'](_0x3d478e)){if(!_0x3e4d7f[_0x3d478e]){delete _0x4fdd4c[_0x3d478e];}}}}function freeIsNotKeySip(_0x5bef1e,_0x37c251){var _0x40f5e9=_['mapKeys'](_0x5bef1e,function(_0x2a3383,_0x596c26){return util[_0xdc2c('0x22')](_0xdc2c('0x23'),_0x2a3383[_0xdc2c('0x24')]);});for(var _0x592460 in _0x37c251){if(_0x37c251[_0xdc2c('0x25')](_0x592460)){if(!_0x40f5e9[_0x592460]){delete _0x37c251[_0x592460];}}}}function freeIsNotKeyAgent(_0x38bcfb,_0x1776de){var _0x2fdd12=_['mapKeys'](_0x38bcfb,function(_0x1e83e1,_0x3b94fe){var _0x22c6b1=_[_0xdc2c('0x26')](_0x1e83e1['interface'])?util[_0xdc2c('0x22')](_0xdc2c('0x23'),_0x1e83e1[_0xdc2c('0x24')]):_0x1e83e1['interface'];return _0x22c6b1;});for(var _0x54a895 in _0x1776de){if(_0x1776de[_0xdc2c('0x25')](_0x54a895)){if(!_0x2fdd12[_0x54a895]){delete _0x1776de[_0x54a895];}}}}function clearVoiceCallReports(_0x5ab6d6){_0x5ab6d6['total']=0x0;_0x5ab6d6['answered']=0x0;_0x5ab6d6[_0xdc2c('0x27')]=0x0;_0x5ab6d6[_0xdc2c('0x28')]=0x0;_0x5ab6d6[_0xdc2c('0x29')]=0x0;}function clearCampaigns(_0x96054f){if(!_[_0xdc2c('0x2a')](_0x96054f)){for(var _0x292fa7 in _0x96054f){if(_0x96054f[_0xdc2c('0x25')](_0x292fa7)){_0x96054f[_0x292fa7]['ivrTotalCallsDays']=0x0;_0x96054f[_0x292fa7][_0xdc2c('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x2b279c){if(!_[_0xdc2c('0x2a')](_0x2b279c)){for(var _0x193514 in _0x2b279c){if(_0x2b279c[_0xdc2c('0x25')](_0x193514)){_0x2b279c[_0x193514][_0xdc2c('0x2c')]=0x0;_0x2b279c[_0x193514]['answered']=0x0;_0x2b279c[_0x193514]['unmanaged']=0x0;_0x2b279c[_0x193514][_0xdc2c('0x2d')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x27')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x28')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x29')]=0x0;_0x2b279c[_0x193514]['outboundAnswerAgiCallsDay']=0x0;_0x2b279c[_0x193514]['outboundNoAnswerCallsDay']=0x0;_0x2b279c[_0x193514]['outboundBusyCallsDay']=0x0;_0x2b279c[_0x193514][_0xdc2c('0x2e')]=0x0;_0x2b279c[_0x193514]['outboundNoSuchCallsDay']=0x0;_0x2b279c[_0x193514][_0xdc2c('0x2f')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x30')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x31')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x32')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x33')]=0x0;_0x2b279c[_0x193514]['outboundRejectCallsDay']=0x0;_0x2b279c[_0x193514][_0xdc2c('0x34')]=0x0;_0x2b279c[_0x193514][_0xdc2c('0x35')]=0x0;_0x2b279c[_0x193514]['outboundAnswerCallsDay']=0x0;_0x2b279c[_0x193514][_0xdc2c('0x36')]=!![];}}}}Realtime[_0xdc2c('0x37')][_0xdc2c('0x38')]=function(_0x5074c8,_0x2cdbe6){for(var _0x3a502d in _0x2cdbe6){if(_0x5074c8[_0xdc2c('0x25')](_0x3a502d)){_0x5074c8[_0x3a502d]=_0x2cdbe6[_0x3a502d];}}};Realtime[_0xdc2c('0x37')][_0xdc2c('0x39')]=function(){var _0x8f497f=this;return function(_0x4c8dc6){if(_0x4c8dc6){freeIsNotKeyAgent(_0x4c8dc6,_0x8f497f[_0xdc2c('0xf')]);for(var _0x1e0055=0x0,_0x217a08={},_0x15e5d9={};_0x1e0055<_0x4c8dc6[_0xdc2c('0x3a')];_0x1e0055+=0x1){_0x217a08=_0x4c8dc6[_0x1e0055];var _0x3492b2=_[_0xdc2c('0x26')](_0x217a08[_0xdc2c('0x3b')])?util[_0xdc2c('0x22')]('SIP/%s',_0x217a08[_0xdc2c('0x24')]):_0x217a08[_0xdc2c('0x3b')];if(_[_0xdc2c('0x3c')](_0x8f497f['agents'][_0x3492b2])){_0x8f497f[_0xdc2c('0xf')][_0x3492b2]=new Agent(_0x217a08);}else{_0x8f497f[_0xdc2c('0x38')](_0x8f497f[_0xdc2c('0xf')][_0x3492b2],_0x217a08);}}}return _0x8f497f[_0xdc2c('0xf')];};};Realtime[_0xdc2c('0x37')]['initTelephones']=function(){var _0x24940e=this;return function(_0x57e752){if(_0x57e752){freeIsNotKeySip(_0x57e752,_0x24940e[_0xdc2c('0x10')]);for(var _0x1fa347=0x0,_0x63858={},_0x43fed8={};_0x1fa347<_0x57e752[_0xdc2c('0x3a')];_0x1fa347+=0x1){_0x63858=_0x57e752[_0x1fa347];if(_[_0xdc2c('0x3c')](_0x24940e[_0xdc2c('0x10')][util[_0xdc2c('0x22')](_0xdc2c('0x23'),_0x63858['name'])])){_0x24940e[_0xdc2c('0x10')][util[_0xdc2c('0x22')](_0xdc2c('0x23'),_0x63858[_0xdc2c('0x24')])]=new Telephone(_0x63858);}else{_0x24940e[_0xdc2c('0x38')](_0x24940e[_0xdc2c('0x10')][util[_0xdc2c('0x22')](_0xdc2c('0x23'),_0x63858[_0xdc2c('0x24')])],_0x63858);}}}return _0x24940e[_0xdc2c('0x10')];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x3d')]=function(){var _0x3aaf8b=this;return function(_0x50a13a){if(_0x50a13a){freeIsNotKeySip(_0x50a13a,_0x3aaf8b[_0xdc2c('0x11')]);for(var _0x33b66f=0x0,_0x1fd392={},_0xd526ca={};_0x33b66f<_0x50a13a[_0xdc2c('0x3a')];_0x33b66f+=0x1){_0x1fd392=_0x50a13a[_0x33b66f];if(_[_0xdc2c('0x3c')](_0x3aaf8b[_0xdc2c('0x11')][util['format'](_0xdc2c('0x23'),_0x1fd392[_0xdc2c('0x24')])])){_0x3aaf8b[_0xdc2c('0x11')][util[_0xdc2c('0x22')]('SIP/%s',_0x1fd392[_0xdc2c('0x24')])]=new Trunk(_0x1fd392);}else{_0x3aaf8b['mergeFromDatabase'](_0x3aaf8b['trunks'][util[_0xdc2c('0x22')]('SIP/%s',_0x1fd392[_0xdc2c('0x24')])],_0x1fd392);}}}return _0x3aaf8b[_0xdc2c('0x11')];};};Realtime['prototype'][_0xdc2c('0x3e')]=function(){var _0xfcfa5e=this;return function(_0x36d779){if(_0x36d779){freeIsNotKey(_0x36d779,_0xfcfa5e[_0xdc2c('0x12')],_0xdc2c('0x24'));for(var _0x3ad3eb=0x0,_0x2e188f={},_0x571c0e={};_0x3ad3eb<_0x36d779[_0xdc2c('0x3a')];_0x3ad3eb+=0x1){_0x2e188f=_0x36d779[_0x3ad3eb];if(_['isUndefined'](_0xfcfa5e['voiceQueues'][_0x2e188f['name']])){_0xfcfa5e[_0xdc2c('0x12')][_0x2e188f['name']]=new VoiceQueue(_0x2e188f);}else{_0xfcfa5e[_0xdc2c('0x38')](_0xfcfa5e['voiceQueues'][_0x2e188f[_0xdc2c('0x24')]],_0x2e188f);}}}return _0xfcfa5e[_0xdc2c('0x12')];};};Realtime['prototype'][_0xdc2c('0x3f')]=function(){var _0x4b9144=this;return function(_0x585ac5){if(_0x585ac5){freeIsNotKey(_0x585ac5,_0x4b9144[_0xdc2c('0x40')],'id');for(var _0x38a897=0x0,_0xdcfac={},_0x1ed7ec={};_0x38a897<_0x585ac5['length'];_0x38a897+=0x1){_0xdcfac=_0x585ac5[_0x38a897];if(_[_0xdc2c('0x3c')](_0x4b9144[_0xdc2c('0x40')][_0xdcfac['id']])){_0x4b9144[_0xdc2c('0x40')][_0xdcfac['id']]=new Trigger(_0xdcfac);}else{_0x4b9144[_0xdc2c('0x38')](_0x4b9144[_0xdc2c('0x40')][_0xdcfac['id']],_0xdcfac);}}}return _0x4b9144['triggers'];};};Realtime[_0xdc2c('0x37')]['initTemplates']=function(){var _0x59d2eb=this;return function(_0xa68ec9){if(_0xa68ec9){freeIsNotKey(_0xa68ec9,_0x59d2eb[_0xdc2c('0x13')],'id');for(var _0x52f8b2=0x0,_0x1e1895={},_0x41630e={};_0x52f8b2<_0xa68ec9['length'];_0x52f8b2+=0x1){_0x1e1895=_0xa68ec9[_0x52f8b2];if(_[_0xdc2c('0x3c')](_0x59d2eb[_0xdc2c('0x13')][_0x1e1895['id']])){_0x59d2eb['templates'][_0x1e1895['id']]=new Template(_0x1e1895);}else{_0x59d2eb[_0xdc2c('0x38')](_0x59d2eb[_0xdc2c('0x13')][_0x1e1895['id']],_0x1e1895);}}}return _0x59d2eb[_0xdc2c('0x13')];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x41')]=function(){var _0xab38b=this;return function(_0x3c25d){if(_0x3c25d){freeIsNotKey(_0x3c25d,_0xab38b['zendeskAccounts'],'id');for(var _0x1c259a=0x0,_0x40efc4={},_0x30bbfe={};_0x1c259a<_0x3c25d['length'];_0x1c259a+=0x1){_0x40efc4=_0x3c25d[_0x1c259a];if(_[_0xdc2c('0x3c')](_0xab38b[_0xdc2c('0x1a')][_0x40efc4['id']])){_0xab38b[_0xdc2c('0x1a')][_0x40efc4['id']]=new ZendeskAccount(_0x40efc4);}else{_0xab38b['mergeFromDatabase'](_0xab38b[_0xdc2c('0x1a')][_0x40efc4['id']],_0x40efc4);}}}return _0xab38b[_0xdc2c('0x1a')];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x42')]=function(){var _0x3fcb18=this;return function(_0x3934a7){if(_0x3934a7){freeIsNotKey(_0x3934a7,_0x3fcb18[_0xdc2c('0x1b')],'id');for(var _0x2f4686=0x0,_0x5865bd={},_0x33b501={};_0x2f4686<_0x3934a7[_0xdc2c('0x3a')];_0x2f4686+=0x1){_0x5865bd=_0x3934a7[_0x2f4686];if(_[_0xdc2c('0x3c')](_0x3fcb18['salesforceAccounts'][_0x5865bd['id']])){_0x3fcb18[_0xdc2c('0x1b')][_0x5865bd['id']]=new SalesforceAccount(_0x5865bd);}else{_0x3fcb18[_0xdc2c('0x38')](_0x3fcb18[_0xdc2c('0x1b')][_0x5865bd['id']],_0x5865bd);}}}return _0x3fcb18[_0xdc2c('0x1b')];};};Realtime['prototype'][_0xdc2c('0x43')]=function(){var _0x30308b=this;return function(_0x3cfc74){if(_0x3cfc74){freeIsNotKey(_0x3cfc74,_0x30308b['freshdeskAccounts'],'id');for(var _0x4b6bb6=0x0,_0x1b0a3b={},_0x2487ba={};_0x4b6bb6<_0x3cfc74[_0xdc2c('0x3a')];_0x4b6bb6+=0x1){_0x1b0a3b=_0x3cfc74[_0x4b6bb6];if(_['isUndefined'](_0x30308b[_0xdc2c('0x1c')][_0x1b0a3b['id']])){_0x30308b[_0xdc2c('0x1c')][_0x1b0a3b['id']]=new FreshdeskAccount(_0x1b0a3b);}else{_0x30308b['mergeFromDatabase'](_0x30308b[_0xdc2c('0x1c')][_0x1b0a3b['id']],_0x1b0a3b);}}}return _0x30308b[_0xdc2c('0x1c')];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x44')]=function(){var _0xaeb0c4=this;return function(_0x4595a3){if(_0x4595a3){freeIsNotKey(_0x4595a3,_0xaeb0c4[_0xdc2c('0x1d')],'id');for(var _0x4e3832=0x0,_0x3b64c8={},_0x50c9e8={};_0x4e3832<_0x4595a3['length'];_0x4e3832+=0x1){_0x3b64c8=_0x4595a3[_0x4e3832];if(_['isUndefined'](_0xaeb0c4[_0xdc2c('0x1d')][_0x3b64c8['id']])){_0xaeb0c4[_0xdc2c('0x1d')][_0x3b64c8['id']]=new ZohoAccount(_0x3b64c8);}else{_0xaeb0c4['mergeFromDatabase'](_0xaeb0c4['zohoAccounts'][_0x3b64c8['id']],_0x3b64c8);}}}return _0xaeb0c4[_0xdc2c('0x1d')];};};Realtime[_0xdc2c('0x37')]['initDeskAccounts']=function(){var _0x4c1374=this;return function(_0x5dacf3){if(_0x5dacf3){freeIsNotKey(_0x5dacf3,_0x4c1374[_0xdc2c('0x1e')],'id');for(var _0x289559=0x0,_0x18f5dc={},_0x550f4b={};_0x289559<_0x5dacf3[_0xdc2c('0x3a')];_0x289559+=0x1){_0x18f5dc=_0x5dacf3[_0x289559];if(_['isUndefined'](_0x4c1374['deskAccounts'][_0x18f5dc['id']])){_0x4c1374['deskAccounts'][_0x18f5dc['id']]=new DeskAccount(_0x18f5dc);}else{_0x4c1374[_0xdc2c('0x38')](_0x4c1374[_0xdc2c('0x1e')][_0x18f5dc['id']],_0x18f5dc);}}}return _0x4c1374[_0xdc2c('0x1e')];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x45')]=function(){var _0x50ce76=this;return function(_0xfb5118){if(_0xfb5118){freeIsNotKey(_0xfb5118,_0x50ce76[_0xdc2c('0x46')],'id');for(var _0x166677=0x0,_0x3dac19={},_0x14239c={};_0x166677<_0xfb5118[_0xdc2c('0x3a')];_0x166677+=0x1){_0x3dac19=_0xfb5118[_0x166677];if(_[_0xdc2c('0x3c')](_0x50ce76[_0xdc2c('0x46')][_0x3dac19['id']])){_0x50ce76[_0xdc2c('0x46')][_0x3dac19['id']]=new SugarcrmAccount(_0x3dac19);}else{_0x50ce76['mergeFromDatabase'](_0x50ce76[_0xdc2c('0x46')][_0x3dac19['id']],_0x3dac19);}}}return _0x50ce76[_0xdc2c('0x46')];};};Realtime['prototype']['initVtigerAccounts']=function(){var _0x191196=this;return function(_0x56dcd5){if(_0x56dcd5){freeIsNotKey(_0x56dcd5,_0x191196['vtigerAccounts'],'id');for(var _0x245c2c=0x0,_0x56eba0={},_0xe1ea6b={};_0x245c2c<_0x56dcd5[_0xdc2c('0x3a')];_0x245c2c+=0x1){_0x56eba0=_0x56dcd5[_0x245c2c];if(_['isUndefined'](_0x191196[_0xdc2c('0x47')][_0x56eba0['id']])){_0x191196['vtigerAccounts'][_0x56eba0['id']]=new VtigerAccount(_0x56eba0);}else{_0x191196[_0xdc2c('0x38')](_0x191196[_0xdc2c('0x47')][_0x56eba0['id']],_0x56eba0);}}}return _0x191196[_0xdc2c('0x47')];};};Realtime['prototype'][_0xdc2c('0x48')]=function(){var _0x42855e=this;return function(_0x5b2698){if(_0x5b2698){freeIsNotKey(_0x5b2698,_0x42855e[_0xdc2c('0x49')],'id');for(var _0x3d6686=0x0,_0x3d40c8={},_0x4c0c0e={};_0x3d6686<_0x5b2698[_0xdc2c('0x3a')];_0x3d6686+=0x1){_0x3d40c8=_0x5b2698[_0x3d6686];if(_[_0xdc2c('0x3c')](_0x42855e[_0xdc2c('0x49')][_0x3d40c8['id']])){_0x42855e[_0xdc2c('0x49')][_0x3d40c8['id']]=new ServicenowAccount(_0x3d40c8);}else{_0x42855e['mergeFromDatabase'](_0x42855e[_0xdc2c('0x49')][_0x3d40c8['id']],_0x3d40c8);}}}return _0x42855e[_0xdc2c('0x49')];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x4a')]=function(){var _0xfc3ced=this;return function(_0x3e1eba){if(_0x3e1eba){freeIsNotKey(_0x3e1eba,_0xfc3ced[_0xdc2c('0x1f')],'id');for(var _0x17ce10=0x0,_0x4499eb={},_0xd9c06={};_0x17ce10<_0x3e1eba[_0xdc2c('0x3a')];_0x17ce10+=0x1){_0x4499eb=_0x3e1eba[_0x17ce10];if(_[_0xdc2c('0x3c')](_0xfc3ced[_0xdc2c('0x1f')][_0x4499eb['id']])){_0xfc3ced[_0xdc2c('0x1f')][_0x4499eb['id']]=new Dynamics365Account(_0x4499eb);}else{_0xfc3ced[_0xdc2c('0x38')](_0xfc3ced['dynamics365Accounts'][_0x4499eb['id']],_0x4499eb);}}}return _0xfc3ced['dynamics365Accounts'];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x4b')]=function(){var _0x587675=this;return function(_0x184f6b){if(_0x184f6b){freeIsNotKey(_0x184f6b,_0x587675[_0xdc2c('0x20')],'id');for(var _0x3dbc8d=0x0,_0x3bd19f={},_0x5d8adf={};_0x3dbc8d<_0x184f6b[_0xdc2c('0x3a')];_0x3dbc8d+=0x1){_0x3bd19f=_0x184f6b[_0x3dbc8d];if(_['isUndefined'](_0x587675[_0xdc2c('0x20')][_0x3bd19f['id']])){_0x587675[_0xdc2c('0x20')][_0x3bd19f['id']]=new FreshsalesAccount(_0x3bd19f);}else{_0x587675[_0xdc2c('0x38')](_0x587675[_0xdc2c('0x20')][_0x3bd19f['id']],_0x3bd19f);}}}return _0x587675['freshsalesAccounts'];};};Realtime['prototype'][_0xdc2c('0x4c')]=function(){var _0xb24ae7=this;return function(_0x38f1bc){for(var _0x3603db=0x0;_0x3603db<_0x38f1bc[_0xdc2c('0x3a')];_0x3603db+=0x1){_[_0xdc2c('0x4d')](_0xb24ae7[_0xdc2c('0x12')][_0x38f1bc[_0x3603db][_0xdc2c('0x24')]],_0x38f1bc[_0x3603db]);}return _0xb24ae7[_0xdc2c('0x12')];};};Realtime[_0xdc2c('0x37')]['initVoiceQueueReports']=function(){var _0x1fe2a6=this;return function(_0x4c0f90){clearVoiceQueues(_0x1fe2a6[_0xdc2c('0x12')]);if(_0x4c0f90){_0x4c0f90=_['groupBy'](_0x4c0f90,_0xdc2c('0x4e'));for(var _0x36bab5 in _0x4c0f90){if(_0x4c0f90['hasOwnProperty'](_0x36bab5)){var _0x14582c={};for(var _0x5451b3=0x0;_0x5451b3<_0x4c0f90[_0x36bab5]['length'];_0x5451b3+=0x1){var _0x504578=_0x4c0f90[_0x36bab5][_0x5451b3]['queue'];if(_0x1fe2a6['voiceQueues'][_0x504578]){if(_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x4f')]){_0x1fe2a6['voiceQueues'][_0x504578][_0xdc2c('0x50')]+=0x1;}if(_0x4c0f90[_0x36bab5][_0x5451b3]['queuecallerabandon']){_0x1fe2a6[_0xdc2c('0x12')][_0x504578][_0xdc2c('0x2d')]+=0x1;}_0x1fe2a6[_0xdc2c('0x12')][_0x504578][_0xdc2c('0x27')]+=moment(_0x4c0f90[_0x36bab5][_0x5451b3]['queuecallerleaveAt'])[_0xdc2c('0x51')](moment(_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x52')]),'seconds')||0x0;if(_0x5451b3===_0x4c0f90[_0x36bab5]['length']-0x1){_0x1fe2a6['voiceQueues'][_0x504578][_0xdc2c('0x28')]+=moment(_0x4c0f90[_0x36bab5][_0x5451b3]['queuecallercompleteAt']||_0x4c0f90[_0x36bab5][_0x5451b3]['queuecallerabandonAt']||_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x53')])['diff'](moment(_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x52')]),_0xdc2c('0x54'))||0x0;_0x1fe2a6[_0xdc2c('0x12')][_0x504578][_0xdc2c('0x2c')]+=0x1;if(_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x55')]){_0x1fe2a6[_0xdc2c('0x12')][_0x504578][_0xdc2c('0x56')]+=0x1;_0x1fe2a6[_0xdc2c('0x12')][_0x504578]['sumBillable']+=moment(_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x57')])[_0xdc2c('0x51')](moment(_0x4c0f90[_0x36bab5][_0x5451b3][_0xdc2c('0x58')]),_0xdc2c('0x54'))||0x0;}}else{_0x1fe2a6['voiceQueues'][_0x504578]['sumDuration']+=_0x1fe2a6[_0xdc2c('0x12')][_0x504578]['sumHoldTime']||0x0;}}}}}}return _0x1fe2a6['voiceQueues'];};};Realtime[_0xdc2c('0x37')]['initVoiceCallReports']=function(){var _0x4ae449=this;return function(_0x41ef43){clearVoiceCallReports(_0x4ae449['outbound']);if(_0x41ef43){for(var _0x531b32=0x0;_0x531b32<_0x41ef43[_0xdc2c('0x3a')];_0x531b32+=0x1){_0x4ae449[_0xdc2c('0x14')][_0xdc2c('0x2c')]+=0x1;_0x4ae449[_0xdc2c('0x14')][_0xdc2c('0x28')]+=_0x41ef43[_0x531b32][_0xdc2c('0x59')];if(_0x41ef43[_0x531b32][_0xdc2c('0x5a')]===_0xdc2c('0x5b')){_0x4ae449[_0xdc2c('0x14')][_0xdc2c('0x56')]+=0x1;_0x4ae449[_0xdc2c('0x14')]['sumHoldTime']+=_0x41ef43[_0x531b32][_0xdc2c('0x59')]-_0x41ef43[_0x531b32][_0xdc2c('0x5c')]||0x0;_0x4ae449[_0xdc2c('0x14')][_0xdc2c('0x29')]+=_0x41ef43[_0x531b32][_0xdc2c('0x5c')];}}}return _0x4ae449[_0xdc2c('0x14')];};};Realtime['prototype'][_0xdc2c('0x5d')]=function(){var _0x20fd0d=this;return function(_0x5f01c6){if(_0x5f01c6){freeIsNotKey(_0x5f01c6,_0x20fd0d[_0xdc2c('0x5e')],'name');for(var _0x2a29d0=0x0,_0x300e8d={};_0x2a29d0<_0x5f01c6['length'];_0x2a29d0+=0x1){_0x300e8d=_0x5f01c6[_0x2a29d0];if(_[_0xdc2c('0x3c')](_0x20fd0d['campaigns'][_0x300e8d[_0xdc2c('0x24')]])){_0x20fd0d[_0xdc2c('0x5e')][_0x300e8d[_0xdc2c('0x24')]]=new Campaign(_0x300e8d);}else{_0x20fd0d[_0xdc2c('0x38')](_0x20fd0d['campaigns'][_0x300e8d[_0xdc2c('0x24')]],_0x300e8d);_0x20fd0d[_0xdc2c('0x5e')][_0x300e8d[_0xdc2c('0x24')]][_0xdc2c('0x5f')]=_0x300e8d[_0xdc2c('0x60')]?_0x300e8d['SquareProject'][_0xdc2c('0x24')]:undefined;}}}return _0x20fd0d['campaigns'];};};Realtime['prototype'][_0xdc2c('0x61')]=function(){var _0x257c5f=this;return function(_0x1529d8){if(_0x1529d8){freeIsNotKey(_0x1529d8,_0x257c5f[_0xdc2c('0x15')],'id');for(var _0x246d32=0x0,_0x5a0f0d={};_0x246d32<_0x1529d8[_0xdc2c('0x3a')];_0x246d32+=0x1){_0x5a0f0d=_0x1529d8[_0x246d32];if(_[_0xdc2c('0x3c')](_0x257c5f[_0xdc2c('0x15')][_0x5a0f0d['id']])){_0x257c5f[_0xdc2c('0x15')][_0x5a0f0d['id']]=new VoiceExtension(_0x5a0f0d);}else{_0x257c5f['mergeFromDatabase'](_0x257c5f['voiceExtensions'][_0x5a0f0d['id']],_0x5a0f0d);}}}return _0x257c5f[_0xdc2c('0x15')];};};Realtime[_0xdc2c('0x37')]['initCampaignHopperHistory']=function(){var _0x45f2db=this;return function(_0x16b9db){clearCampaigns(_0x45f2db['campaigns']);for(var _0x201fe7=0x0;_0x201fe7<_0x16b9db[_0xdc2c('0x3a')];_0x201fe7+=0x1){_[_0xdc2c('0x4d')](_0x45f2db[_0xdc2c('0x5e')][_0x16b9db[_0x201fe7][_0xdc2c('0x24')]],_0x16b9db[_0x201fe7]);}return _0x45f2db['campaigns'];};};Realtime[_0xdc2c('0x37')][_0xdc2c('0x62')]=function(){var _0x11cd95=this;return function(_0x58f18d){if(_0x58f18d){freeIsNotKey(_0x58f18d,_0x11cd95[_0xdc2c('0x21')],'id');for(var _0x532e1b=0x0,_0x130851={},_0x53b268={};_0x532e1b<_0x58f18d[_0xdc2c('0x3a')];_0x532e1b+=0x1){_0x130851=_0x58f18d[_0x532e1b];if(_[_0xdc2c('0x3c')](_0x11cd95[_0xdc2c('0x21')][_0x130851['id']])){_0x11cd95['faxAccounts'][_0x130851['id']]=new FaxAccount(_0x130851);}else{_0x11cd95[_0xdc2c('0x38')](_0x11cd95['faxAccounts'][_0x130851['id']],_0x130851);}}}return _0x11cd95[_0xdc2c('0x21')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x7e0c=['outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isUndefined','initTelephones','telephones','initTrunks','trunks','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','queue','queuecallerexit','queuecallerabandon','sumHoldTime','queuecallerleaveAt','diff','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','queuecallercomplete','initVoiceCallReports','disposition','ANSWERED','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions','initFaxAccounts','bluebird','moment','../model/telephone','../model/trunk','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/vtigerAccount','../model/freshsalesAccount','../model/faxAccount','agents','voiceQueues','triggers','campaigns','templates','outbound','channels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','isNil','name','interface','hasOwnProperty','sumDuration','sumBillable','isEmpty','total','answered','unmanaged','abandoned'];(function(_0x2b74f9,_0xcba14b){var _0x517c8c=function(_0x2c55cd){while(--_0x2c55cd){_0x2b74f9['push'](_0x2b74f9['shift']());}};_0x517c8c(++_0xcba14b);}(_0x7e0c,0x163));var _0xc7e0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e0c[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xc7e0('0x0'));var util=require('util');var _=require('lodash');var moment=require(_0xc7e0('0x1'));var Agent=require('../model/agent');var Telephone=require(_0xc7e0('0x2'));var Trunk=require(_0xc7e0('0x3'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require('../model/trigger');var Template=require('../model/template');var Campaign=require('../model/campaign');var VoiceExtension=require(_0xc7e0('0x4'));var ZendeskAccount=require(_0xc7e0('0x5'));var SalesforceAccount=require(_0xc7e0('0x6'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xc7e0('0x7'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xc7e0('0x8'));var FaxAccount=require(_0xc7e0('0x9'));var Realtime=function(){this[_0xc7e0('0xa')]={};this['telephones']={};this['trunks']={};this[_0xc7e0('0xb')]={};this[_0xc7e0('0xc')]={};this[_0xc7e0('0xd')]={};this[_0xc7e0('0xe')]={};this[_0xc7e0('0xf')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0xc7e0('0x10')]={};this['queueChannels']={};this[_0xc7e0('0x11')]={};this[_0xc7e0('0x12')]={};this[_0xc7e0('0x13')]={};this[_0xc7e0('0x14')]={};this[_0xc7e0('0x15')]={};this[_0xc7e0('0x16')]={};this[_0xc7e0('0x17')]={};this[_0xc7e0('0x18')]={};this[_0xc7e0('0x19')]={};this[_0xc7e0('0x1a')]={};this[_0xc7e0('0x1b')]={};this[_0xc7e0('0x1c')]={};this[_0xc7e0('0x1d')]={};this[_0xc7e0('0x1e')]={};};function freeIsNotKey(_0x2a7bd1,_0x2114aa,_0x1196b9){var _0x2cbeb5=_[_0xc7e0('0x1f')](_0x2a7bd1,function(_0x281ae2,_0x31d051){return _0x281ae2[_0x1196b9];});for(var _0xc49ea8 in _0x2114aa){if(_0x2114aa['hasOwnProperty'](_0xc49ea8)){if(!_0x2cbeb5[_0xc49ea8]){delete _0x2114aa[_0xc49ea8];}}}}function freeIsNotKeySip(_0x3e5faa,_0x1c5a40){var _0x44ce3e=_[_0xc7e0('0x1f')](_0x3e5faa,function(_0x44f136,_0x27db2a){return util[_0xc7e0('0x20')](_0xc7e0('0x21'),_0x44f136['name']);});for(var _0x42cf16 in _0x1c5a40){if(_0x1c5a40['hasOwnProperty'](_0x42cf16)){if(!_0x44ce3e[_0x42cf16]){delete _0x1c5a40[_0x42cf16];}}}}function freeIsNotKeyAgent(_0x332e97,_0x5a5082){var _0x300d03=_[_0xc7e0('0x1f')](_0x332e97,function(_0x36f754,_0x160cc6){var _0x52c15a=_[_0xc7e0('0x22')](_0x36f754['interface'])?util[_0xc7e0('0x20')](_0xc7e0('0x21'),_0x36f754[_0xc7e0('0x23')]):_0x36f754[_0xc7e0('0x24')];return _0x52c15a;});for(var _0x40e588 in _0x5a5082){if(_0x5a5082[_0xc7e0('0x25')](_0x40e588)){if(!_0x300d03[_0x40e588]){delete _0x5a5082[_0x40e588];}}}}function clearVoiceCallReports(_0x6b0895){_0x6b0895['total']=0x0;_0x6b0895['answered']=0x0;_0x6b0895['sumHoldTime']=0x0;_0x6b0895[_0xc7e0('0x26')]=0x0;_0x6b0895[_0xc7e0('0x27')]=0x0;}function clearCampaigns(_0x1d4849){if(!_['isEmpty'](_0x1d4849)){for(var _0x58ae44 in _0x1d4849){if(_0x1d4849[_0xc7e0('0x25')](_0x58ae44)){_0x1d4849[_0x58ae44]['ivrTotalCallsDays']=0x0;_0x1d4849[_0x58ae44]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0xcb06f){if(!_[_0xc7e0('0x28')](_0xcb06f)){for(var _0x46dd66 in _0xcb06f){if(_0xcb06f[_0xc7e0('0x25')](_0x46dd66)){_0xcb06f[_0x46dd66][_0xc7e0('0x29')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x2a')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x2b')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x2c')]=0x0;_0xcb06f[_0x46dd66]['sumHoldTime']=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x26')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x27')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x2d')]=0x0;_0xcb06f[_0x46dd66]['outboundNoAnswerCallsDay']=0x0;_0xcb06f[_0x46dd66]['outboundBusyCallsDay']=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x2e')]=0x0;_0xcb06f[_0x46dd66]['outboundNoSuchCallsDay']=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x2f')]=0x0;_0xcb06f[_0x46dd66]['outboundDropCallsDayTimeout']=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x30')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x31')]=0x0;_0xcb06f[_0x46dd66]['outboundOriginateFailureCallsDay']=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x32')]=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x33')]=0x0;_0xcb06f[_0x46dd66]['outboundAnswerAgiCallsDay']=0x0;_0xcb06f[_0x46dd66]['outboundAnswerCallsDay']=0x0;_0xcb06f[_0x46dd66][_0xc7e0('0x34')]=!![];}}}}Realtime['prototype'][_0xc7e0('0x35')]=function(_0x3680ce,_0x37c3d1){for(var _0x389f9d in _0x37c3d1){if(_0x3680ce['hasOwnProperty'](_0x389f9d)){_0x3680ce[_0x389f9d]=_0x37c3d1[_0x389f9d];}}};Realtime[_0xc7e0('0x36')][_0xc7e0('0x37')]=function(){var _0x1347a5=this;return function(_0x509dc9){if(_0x509dc9){freeIsNotKeyAgent(_0x509dc9,_0x1347a5[_0xc7e0('0xa')]);for(var _0x156dbd=0x0,_0x184f73={},_0x21e1e2={};_0x156dbd<_0x509dc9[_0xc7e0('0x38')];_0x156dbd+=0x1){_0x184f73=_0x509dc9[_0x156dbd];var _0x268a09=_[_0xc7e0('0x22')](_0x184f73['interface'])?util[_0xc7e0('0x20')]('SIP/%s',_0x184f73[_0xc7e0('0x23')]):_0x184f73[_0xc7e0('0x24')];if(_[_0xc7e0('0x39')](_0x1347a5[_0xc7e0('0xa')][_0x268a09])){_0x1347a5[_0xc7e0('0xa')][_0x268a09]=new Agent(_0x184f73);}else{_0x1347a5[_0xc7e0('0x35')](_0x1347a5[_0xc7e0('0xa')][_0x268a09],_0x184f73);}}}return _0x1347a5[_0xc7e0('0xa')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x3a')]=function(){var _0x37a2a0=this;return function(_0xdacd6e){if(_0xdacd6e){freeIsNotKeySip(_0xdacd6e,_0x37a2a0[_0xc7e0('0x3b')]);for(var _0x4801fc=0x0,_0x2834cc={},_0x578f41={};_0x4801fc<_0xdacd6e['length'];_0x4801fc+=0x1){_0x2834cc=_0xdacd6e[_0x4801fc];if(_['isUndefined'](_0x37a2a0['telephones'][util[_0xc7e0('0x20')](_0xc7e0('0x21'),_0x2834cc[_0xc7e0('0x23')])])){_0x37a2a0[_0xc7e0('0x3b')][util[_0xc7e0('0x20')](_0xc7e0('0x21'),_0x2834cc[_0xc7e0('0x23')])]=new Telephone(_0x2834cc);}else{_0x37a2a0[_0xc7e0('0x35')](_0x37a2a0[_0xc7e0('0x3b')][util['format'](_0xc7e0('0x21'),_0x2834cc[_0xc7e0('0x23')])],_0x2834cc);}}}return _0x37a2a0['telephones'];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x3c')]=function(){var _0x3e1428=this;return function(_0x2298f4){if(_0x2298f4){freeIsNotKeySip(_0x2298f4,_0x3e1428['trunks']);for(var _0x5bd751=0x0,_0x503732={},_0x3ede59={};_0x5bd751<_0x2298f4[_0xc7e0('0x38')];_0x5bd751+=0x1){_0x503732=_0x2298f4[_0x5bd751];if(_[_0xc7e0('0x39')](_0x3e1428[_0xc7e0('0x3d')][util[_0xc7e0('0x20')](_0xc7e0('0x21'),_0x503732[_0xc7e0('0x23')])])){_0x3e1428[_0xc7e0('0x3d')][util[_0xc7e0('0x20')]('SIP/%s',_0x503732['name'])]=new Trunk(_0x503732);}else{_0x3e1428['mergeFromDatabase'](_0x3e1428[_0xc7e0('0x3d')][util['format'](_0xc7e0('0x21'),_0x503732[_0xc7e0('0x23')])],_0x503732);}}}return _0x3e1428[_0xc7e0('0x3d')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x3e')]=function(){var _0x3cf986=this;return function(_0x5d9b51){if(_0x5d9b51){freeIsNotKey(_0x5d9b51,_0x3cf986['voiceQueues'],_0xc7e0('0x23'));for(var _0x4c96bb=0x0,_0x48f629={},_0x9e9eb5={};_0x4c96bb<_0x5d9b51['length'];_0x4c96bb+=0x1){_0x48f629=_0x5d9b51[_0x4c96bb];if(_[_0xc7e0('0x39')](_0x3cf986[_0xc7e0('0xb')][_0x48f629[_0xc7e0('0x23')]])){_0x3cf986['voiceQueues'][_0x48f629[_0xc7e0('0x23')]]=new VoiceQueue(_0x48f629);}else{_0x3cf986[_0xc7e0('0x35')](_0x3cf986[_0xc7e0('0xb')][_0x48f629[_0xc7e0('0x23')]],_0x48f629);}}}return _0x3cf986[_0xc7e0('0xb')];};};Realtime['prototype'][_0xc7e0('0x3f')]=function(){var _0x326f67=this;return function(_0x335038){if(_0x335038){freeIsNotKey(_0x335038,_0x326f67[_0xc7e0('0xc')],'id');for(var _0x593122=0x0,_0x230f1c={},_0x5b4180={};_0x593122<_0x335038[_0xc7e0('0x38')];_0x593122+=0x1){_0x230f1c=_0x335038[_0x593122];if(_[_0xc7e0('0x39')](_0x326f67[_0xc7e0('0xc')][_0x230f1c['id']])){_0x326f67[_0xc7e0('0xc')][_0x230f1c['id']]=new Trigger(_0x230f1c);}else{_0x326f67[_0xc7e0('0x35')](_0x326f67['triggers'][_0x230f1c['id']],_0x230f1c);}}}return _0x326f67[_0xc7e0('0xc')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x40')]=function(){var _0x57a2f9=this;return function(_0x245083){if(_0x245083){freeIsNotKey(_0x245083,_0x57a2f9[_0xc7e0('0xe')],'id');for(var _0x5e96ce=0x0,_0x1e6b1c={},_0x235864={};_0x5e96ce<_0x245083[_0xc7e0('0x38')];_0x5e96ce+=0x1){_0x1e6b1c=_0x245083[_0x5e96ce];if(_[_0xc7e0('0x39')](_0x57a2f9[_0xc7e0('0xe')][_0x1e6b1c['id']])){_0x57a2f9['templates'][_0x1e6b1c['id']]=new Template(_0x1e6b1c);}else{_0x57a2f9['mergeFromDatabase'](_0x57a2f9[_0xc7e0('0xe')][_0x1e6b1c['id']],_0x1e6b1c);}}}return _0x57a2f9[_0xc7e0('0xe')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x41')]=function(){var _0x467737=this;return function(_0x4a158f){if(_0x4a158f){freeIsNotKey(_0x4a158f,_0x467737[_0xc7e0('0x14')],'id');for(var _0x22222e=0x0,_0x2bf369={},_0x4bea26={};_0x22222e<_0x4a158f[_0xc7e0('0x38')];_0x22222e+=0x1){_0x2bf369=_0x4a158f[_0x22222e];if(_[_0xc7e0('0x39')](_0x467737[_0xc7e0('0x14')][_0x2bf369['id']])){_0x467737[_0xc7e0('0x14')][_0x2bf369['id']]=new ZendeskAccount(_0x2bf369);}else{_0x467737[_0xc7e0('0x35')](_0x467737[_0xc7e0('0x14')][_0x2bf369['id']],_0x2bf369);}}}return _0x467737[_0xc7e0('0x14')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x42')]=function(){var _0x46d098=this;return function(_0x243226){if(_0x243226){freeIsNotKey(_0x243226,_0x46d098['salesforceAccounts'],'id');for(var _0x43f6de=0x0,_0x42320a={},_0x3b8b9f={};_0x43f6de<_0x243226[_0xc7e0('0x38')];_0x43f6de+=0x1){_0x42320a=_0x243226[_0x43f6de];if(_[_0xc7e0('0x39')](_0x46d098['salesforceAccounts'][_0x42320a['id']])){_0x46d098[_0xc7e0('0x15')][_0x42320a['id']]=new SalesforceAccount(_0x42320a);}else{_0x46d098[_0xc7e0('0x35')](_0x46d098[_0xc7e0('0x15')][_0x42320a['id']],_0x42320a);}}}return _0x46d098['salesforceAccounts'];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x43')]=function(){var _0x423471=this;return function(_0x1fcb39){if(_0x1fcb39){freeIsNotKey(_0x1fcb39,_0x423471['freshdeskAccounts'],'id');for(var _0x5a06af=0x0,_0x468c56={},_0x479fbb={};_0x5a06af<_0x1fcb39[_0xc7e0('0x38')];_0x5a06af+=0x1){_0x468c56=_0x1fcb39[_0x5a06af];if(_[_0xc7e0('0x39')](_0x423471[_0xc7e0('0x17')][_0x468c56['id']])){_0x423471[_0xc7e0('0x17')][_0x468c56['id']]=new FreshdeskAccount(_0x468c56);}else{_0x423471[_0xc7e0('0x35')](_0x423471['freshdeskAccounts'][_0x468c56['id']],_0x468c56);}}}return _0x423471[_0xc7e0('0x17')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x44')]=function(){var _0x4150a5=this;return function(_0x458b2b){if(_0x458b2b){freeIsNotKey(_0x458b2b,_0x4150a5[_0xc7e0('0x18')],'id');for(var _0x293fe5=0x0,_0x1340ce={},_0x47aade={};_0x293fe5<_0x458b2b[_0xc7e0('0x38')];_0x293fe5+=0x1){_0x1340ce=_0x458b2b[_0x293fe5];if(_[_0xc7e0('0x39')](_0x4150a5[_0xc7e0('0x18')][_0x1340ce['id']])){_0x4150a5['zohoAccounts'][_0x1340ce['id']]=new ZohoAccount(_0x1340ce);}else{_0x4150a5[_0xc7e0('0x35')](_0x4150a5[_0xc7e0('0x18')][_0x1340ce['id']],_0x1340ce);}}}return _0x4150a5[_0xc7e0('0x18')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x45')]=function(){var _0x2c5e83=this;return function(_0x41e5bc){if(_0x41e5bc){freeIsNotKey(_0x41e5bc,_0x2c5e83['deskAccounts'],'id');for(var _0x50113d=0x0,_0x8cca46={},_0xd3c908={};_0x50113d<_0x41e5bc[_0xc7e0('0x38')];_0x50113d+=0x1){_0x8cca46=_0x41e5bc[_0x50113d];if(_[_0xc7e0('0x39')](_0x2c5e83[_0xc7e0('0x19')][_0x8cca46['id']])){_0x2c5e83[_0xc7e0('0x19')][_0x8cca46['id']]=new DeskAccount(_0x8cca46);}else{_0x2c5e83['mergeFromDatabase'](_0x2c5e83[_0xc7e0('0x19')][_0x8cca46['id']],_0x8cca46);}}}return _0x2c5e83[_0xc7e0('0x19')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x46')]=function(){var _0x203a3f=this;return function(_0x34f940){if(_0x34f940){freeIsNotKey(_0x34f940,_0x203a3f['sugarcrmAccounts'],'id');for(var _0x22e82f=0x0,_0x4fb413={},_0x472293={};_0x22e82f<_0x34f940[_0xc7e0('0x38')];_0x22e82f+=0x1){_0x4fb413=_0x34f940[_0x22e82f];if(_[_0xc7e0('0x39')](_0x203a3f[_0xc7e0('0x16')][_0x4fb413['id']])){_0x203a3f[_0xc7e0('0x16')][_0x4fb413['id']]=new SugarcrmAccount(_0x4fb413);}else{_0x203a3f[_0xc7e0('0x35')](_0x203a3f['sugarcrmAccounts'][_0x4fb413['id']],_0x4fb413);}}}return _0x203a3f[_0xc7e0('0x16')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x47')]=function(){var _0x5b7ba6=this;return function(_0x24b19a){if(_0x24b19a){freeIsNotKey(_0x24b19a,_0x5b7ba6['vtigerAccounts'],'id');for(var _0x1c81cf=0x0,_0x5448bd={},_0x13f300={};_0x1c81cf<_0x24b19a[_0xc7e0('0x38')];_0x1c81cf+=0x1){_0x5448bd=_0x24b19a[_0x1c81cf];if(_[_0xc7e0('0x39')](_0x5b7ba6[_0xc7e0('0x1a')][_0x5448bd['id']])){_0x5b7ba6['vtigerAccounts'][_0x5448bd['id']]=new VtigerAccount(_0x5448bd);}else{_0x5b7ba6[_0xc7e0('0x35')](_0x5b7ba6['vtigerAccounts'][_0x5448bd['id']],_0x5448bd);}}}return _0x5b7ba6[_0xc7e0('0x1a')];};};Realtime[_0xc7e0('0x36')]['initServicenowAccounts']=function(){var _0x2f4eb0=this;return function(_0x24fec2){if(_0x24fec2){freeIsNotKey(_0x24fec2,_0x2f4eb0[_0xc7e0('0x1b')],'id');for(var _0x196c40=0x0,_0x446799={},_0x142442={};_0x196c40<_0x24fec2[_0xc7e0('0x38')];_0x196c40+=0x1){_0x446799=_0x24fec2[_0x196c40];if(_[_0xc7e0('0x39')](_0x2f4eb0[_0xc7e0('0x1b')][_0x446799['id']])){_0x2f4eb0['servicenowAccounts'][_0x446799['id']]=new ServicenowAccount(_0x446799);}else{_0x2f4eb0[_0xc7e0('0x35')](_0x2f4eb0[_0xc7e0('0x1b')][_0x446799['id']],_0x446799);}}}return _0x2f4eb0[_0xc7e0('0x1b')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x48')]=function(){var _0x4ddb18=this;return function(_0x506420){if(_0x506420){freeIsNotKey(_0x506420,_0x4ddb18['dynamics365Accounts'],'id');for(var _0x16d2a2=0x0,_0x34aa70={},_0x2a08af={};_0x16d2a2<_0x506420[_0xc7e0('0x38')];_0x16d2a2+=0x1){_0x34aa70=_0x506420[_0x16d2a2];if(_[_0xc7e0('0x39')](_0x4ddb18['dynamics365Accounts'][_0x34aa70['id']])){_0x4ddb18[_0xc7e0('0x1c')][_0x34aa70['id']]=new Dynamics365Account(_0x34aa70);}else{_0x4ddb18[_0xc7e0('0x35')](_0x4ddb18['dynamics365Accounts'][_0x34aa70['id']],_0x34aa70);}}}return _0x4ddb18['dynamics365Accounts'];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x49')]=function(){var _0x20236b=this;return function(_0xf20b23){if(_0xf20b23){freeIsNotKey(_0xf20b23,_0x20236b['freshsalesAccounts'],'id');for(var _0x13e43d=0x0,_0xc8c96c={},_0x2696a3={};_0x13e43d<_0xf20b23[_0xc7e0('0x38')];_0x13e43d+=0x1){_0xc8c96c=_0xf20b23[_0x13e43d];if(_[_0xc7e0('0x39')](_0x20236b[_0xc7e0('0x1d')][_0xc8c96c['id']])){_0x20236b[_0xc7e0('0x1d')][_0xc8c96c['id']]=new FreshsalesAccount(_0xc8c96c);}else{_0x20236b['mergeFromDatabase'](_0x20236b[_0xc7e0('0x1d')][_0xc8c96c['id']],_0xc8c96c);}}}return _0x20236b['freshsalesAccounts'];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x4a')]=function(){var _0x1f3638=this;return function(_0x1ae38e){for(var _0x4b61e4=0x0;_0x4b61e4<_0x1ae38e[_0xc7e0('0x38')];_0x4b61e4+=0x1){_[_0xc7e0('0x4b')](_0x1f3638[_0xc7e0('0xb')][_0x1ae38e[_0x4b61e4][_0xc7e0('0x23')]],_0x1ae38e[_0x4b61e4]);}return _0x1f3638['voiceQueues'];};};Realtime['prototype'][_0xc7e0('0x4c')]=function(){var _0x1099d2=this;return function(_0xfa93d7){clearVoiceQueues(_0x1099d2[_0xc7e0('0xb')]);if(_0xfa93d7){_0xfa93d7=_['groupBy'](_0xfa93d7,'uniqueid');for(var _0x233996 in _0xfa93d7){if(_0xfa93d7['hasOwnProperty'](_0x233996)){var _0x12d030={};for(var _0x2f1af2=0x0;_0x2f1af2<_0xfa93d7[_0x233996][_0xc7e0('0x38')];_0x2f1af2+=0x1){var _0x1938f8=_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x4d')];if(_0x1099d2[_0xc7e0('0xb')][_0x1938f8]){if(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x4e')]){_0x1099d2[_0xc7e0('0xb')][_0x1938f8]['unmanaged']+=0x1;}if(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x4f')]){_0x1099d2[_0xc7e0('0xb')][_0x1938f8][_0xc7e0('0x2c')]+=0x1;}_0x1099d2[_0xc7e0('0xb')][_0x1938f8][_0xc7e0('0x50')]+=moment(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x51')])[_0xc7e0('0x52')](moment(_0xfa93d7[_0x233996][_0x2f1af2]['queuecallerjoinAt']),_0xc7e0('0x53'))||0x0;if(_0x2f1af2===_0xfa93d7[_0x233996][_0xc7e0('0x38')]-0x1){_0x1099d2['voiceQueues'][_0x1938f8]['sumDuration']+=moment(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x54')]||_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x55')]||_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x56')])[_0xc7e0('0x52')](moment(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x57')]),'seconds')||0x0;_0x1099d2['voiceQueues'][_0x1938f8][_0xc7e0('0x29')]+=0x1;if(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x58')]){_0x1099d2[_0xc7e0('0xb')][_0x1938f8][_0xc7e0('0x2a')]+=0x1;_0x1099d2[_0xc7e0('0xb')][_0x1938f8][_0xc7e0('0x27')]+=moment(_0xfa93d7[_0x233996][_0x2f1af2][_0xc7e0('0x54')])[_0xc7e0('0x52')](moment(_0xfa93d7[_0x233996][_0x2f1af2]['queuecallerleaveAt']),_0xc7e0('0x53'))||0x0;}}else{_0x1099d2[_0xc7e0('0xb')][_0x1938f8][_0xc7e0('0x26')]+=_0x1099d2['voiceQueues'][_0x1938f8]['sumHoldTime']||0x0;}}}}}}return _0x1099d2[_0xc7e0('0xb')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x59')]=function(){var _0x32f7f7=this;return function(_0x2f93bb){clearVoiceCallReports(_0x32f7f7['outbound']);if(_0x2f93bb){for(var _0x46efc6=0x0;_0x46efc6<_0x2f93bb[_0xc7e0('0x38')];_0x46efc6+=0x1){_0x32f7f7['outbound'][_0xc7e0('0x29')]+=0x1;_0x32f7f7[_0xc7e0('0xf')]['sumDuration']+=_0x2f93bb[_0x46efc6]['duration'];if(_0x2f93bb[_0x46efc6][_0xc7e0('0x5a')]===_0xc7e0('0x5b')){_0x32f7f7['outbound'][_0xc7e0('0x2a')]+=0x1;_0x32f7f7[_0xc7e0('0xf')][_0xc7e0('0x50')]+=_0x2f93bb[_0x46efc6][_0xc7e0('0x5c')]-_0x2f93bb[_0x46efc6]['billableseconds']||0x0;_0x32f7f7[_0xc7e0('0xf')][_0xc7e0('0x27')]+=_0x2f93bb[_0x46efc6][_0xc7e0('0x5d')];}}}return _0x32f7f7[_0xc7e0('0xf')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x5e')]=function(){var _0x1e8bb6=this;return function(_0x4970d6){if(_0x4970d6){freeIsNotKey(_0x4970d6,_0x1e8bb6[_0xc7e0('0xd')],_0xc7e0('0x23'));for(var _0x5bdced=0x0,_0x50dc2f={};_0x5bdced<_0x4970d6['length'];_0x5bdced+=0x1){_0x50dc2f=_0x4970d6[_0x5bdced];if(_[_0xc7e0('0x39')](_0x1e8bb6[_0xc7e0('0xd')][_0x50dc2f[_0xc7e0('0x23')]])){_0x1e8bb6[_0xc7e0('0xd')][_0x50dc2f[_0xc7e0('0x23')]]=new Campaign(_0x50dc2f);}else{_0x1e8bb6[_0xc7e0('0x35')](_0x1e8bb6[_0xc7e0('0xd')][_0x50dc2f[_0xc7e0('0x23')]],_0x50dc2f);_0x1e8bb6[_0xc7e0('0xd')][_0x50dc2f[_0xc7e0('0x23')]][_0xc7e0('0x5f')]=_0x50dc2f[_0xc7e0('0x60')]?_0x50dc2f[_0xc7e0('0x60')][_0xc7e0('0x23')]:undefined;}}}return _0x1e8bb6[_0xc7e0('0xd')];};};Realtime['prototype'][_0xc7e0('0x61')]=function(){var _0x2b69c6=this;return function(_0x5eab5b){if(_0x5eab5b){freeIsNotKey(_0x5eab5b,_0x2b69c6[_0xc7e0('0x62')],'id');for(var _0x4dd5c5=0x0,_0x12a90a={};_0x4dd5c5<_0x5eab5b[_0xc7e0('0x38')];_0x4dd5c5+=0x1){_0x12a90a=_0x5eab5b[_0x4dd5c5];if(_[_0xc7e0('0x39')](_0x2b69c6[_0xc7e0('0x62')][_0x12a90a['id']])){_0x2b69c6['voiceExtensions'][_0x12a90a['id']]=new VoiceExtension(_0x12a90a);}else{_0x2b69c6[_0xc7e0('0x35')](_0x2b69c6[_0xc7e0('0x62')][_0x12a90a['id']],_0x12a90a);}}}return _0x2b69c6[_0xc7e0('0x62')];};};Realtime[_0xc7e0('0x36')]['initCampaignHopperHistory']=function(){var _0x436054=this;return function(_0x63a6f2){clearCampaigns(_0x436054[_0xc7e0('0xd')]);for(var _0x51a4cc=0x0;_0x51a4cc<_0x63a6f2[_0xc7e0('0x38')];_0x51a4cc+=0x1){_[_0xc7e0('0x4b')](_0x436054[_0xc7e0('0xd')][_0x63a6f2[_0x51a4cc]['name']],_0x63a6f2[_0x51a4cc]);}return _0x436054[_0xc7e0('0xd')];};};Realtime[_0xc7e0('0x36')][_0xc7e0('0x63')]=function(){var _0x1c1ceb=this;return function(_0x814161){if(_0x814161){freeIsNotKey(_0x814161,_0x1c1ceb['faxAccounts'],'id');for(var _0x60e272=0x0,_0x48b37b={},_0x17fdf0={};_0x60e272<_0x814161[_0xc7e0('0x38')];_0x60e272+=0x1){_0x48b37b=_0x814161[_0x60e272];if(_[_0xc7e0('0x39')](_0x1c1ceb['faxAccounts'][_0x48b37b['id']])){_0x1c1ceb[_0xc7e0('0x1e')][_0x48b37b['id']]=new FaxAccount(_0x48b37b);}else{_0x1c1ceb[_0xc7e0('0x35')](_0x1c1ceb[_0xc7e0('0x1e')][_0x48b37b['id']],_0x48b37b);}}}return _0x1c1ceb['faxAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
index 4fec64d..c41a7a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4e=['destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','linkedid','transfers','transfereelinkedid','blindTransfer','create','monitor','monitors','monitorFilename','filename','createdAt','calleridname','connectedlinename','membername','isArray','forEach','startsWith','Local','substring','indexOf','phone','lastIndexOf','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','findAgent','find','accountcode','isNil','format','SIP/%s','name','length','connectedlinenum','assigned','lastAssignedTo','interface','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','match','destination','exten','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum'];(function(_0x1edea9,_0x4b9a1b){var _0xf0ac12=function(_0x519833){while(--_0x519833){_0x1edea9['push'](_0x1edea9['shift']());}};_0xf0ac12(++_0x4b9a1b);}(_0x0d4e,0x17c));var _0xe0d4=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x0d4e[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0xe0d4('0x0'));var moment=require(_0xe0d4('0x1'));var util=require(_0xe0d4('0x2'));var config=require(_0xe0d4('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require(_0xe0d4('0x4'));var RpcVoiceCallReport=require(_0xe0d4('0x5'));var RpcVoiceDialReport=require(_0xe0d4('0x6'));var RpcMemberReport=require(_0xe0d4('0x7'));var RpcVoiceQueueReport=require(_0xe0d4('0x8'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0xe0d4('0x9'));var VoiceQueueReport=require(_0xe0d4('0xa'));var VoiceCallReport=require(_0xe0d4('0xb'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0xe0d4('0xc'));var UserReport=require('./userReport');function Report(_0x4e4d33){this[_0xe0d4('0xd')]=_0x4e4d33;this['agents']=_0x4e4d33[_0xe0d4('0xe')];this[_0xe0d4('0xf')]=_0x4e4d33[_0xe0d4('0xf')];}Report[_0xe0d4('0x10')][_0xe0d4('0x11')]=function(_0x55fa2c){var _0x214d8b=new VoiceQueueReport(this['realtime']);var _0x210865=new VoiceAgentReport(this[_0xe0d4('0xd')]);var _0x7d3494=new VoiceDialReport(this[_0xe0d4('0xd')]);var _0x3db5ae=new VoiceCallReport(this[_0xe0d4('0xd')]);var _0x579ce4=new UserReport(this[_0xe0d4('0xd')]);if(config[_0xe0d4('0x12')]&&config[_0xe0d4('0x12')][_0xe0d4('0x13')]){ami['on'](_0xe0d4('0x14'),this[_0xe0d4('0x15')][_0xe0d4('0x16')](this));ami['on']('custom:voiceCallReport',this[_0xe0d4('0x17')][_0xe0d4('0x16')](this));ami['on'](_0xe0d4('0x18'),this[_0xe0d4('0x19')]['bind'](this));ami['on'](_0xe0d4('0x1a'),this[_0xe0d4('0x1b')][_0xe0d4('0x16')](this));ami['on'](_0xe0d4('0x1c'),this['blindTransfer'][_0xe0d4('0x16')](this));ami['on'](_0xe0d4('0x1d'),this['attendedTransfer'][_0xe0d4('0x16')](this));}};Report[_0xe0d4('0x10')][_0xe0d4('0x1e')]=function(_0x4c29ef){var _0x164de1;_0x164de1=_[_0xe0d4('0x1f')](this[_0xe0d4('0xe')],function(_0x72c3a8){return _0x72c3a8[_0xe0d4('0x20')]==_0x4c29ef||_0x72c3a8['name']==_0x4c29ef;});if(_[_0xe0d4('0x21')](_0x164de1)){var _0x572792=_[_0xe0d4('0x1f')](this['telephones'],function(_0x48a98c){return _0x48a98c[_0xe0d4('0x20')]==_0x4c29ef||_0x48a98c['name']==_0x4c29ef;});if(_0x572792){_0x164de1=_[_0xe0d4('0x1f')](this[_0xe0d4('0xe')],function(_0x363e3c){return _0x363e3c['interface']==util[_0xe0d4('0x22')](_0xe0d4('0x23'),_0x572792[_0xe0d4('0x24')]);});}}return _0x164de1;};Report['prototype']['voiceQueueReport']=function(_0x26fa90){for(var _0x1ae33d=0x0;_0x1ae33d<_0x26fa90[_0xe0d4('0x25')];_0x1ae33d+=0x1){var _0x2f2633=this['findAgent'](_0x26fa90[_0x1ae33d][_0xe0d4('0x26')]);if(_0x2f2633){_0x26fa90[_0x1ae33d][_0xe0d4('0x20')]=_0x2f2633[_0xe0d4('0x20')];_0x26fa90[_0x1ae33d][_0xe0d4('0x27')]=!![];_0x26fa90[_0x1ae33d][_0xe0d4('0x28')]=_0x2f2633[_0xe0d4('0x24')];_0x26fa90[_0x1ae33d]['interface']=_[_0xe0d4('0x21')](_0x2f2633[_0xe0d4('0x29')])?util[_0xe0d4('0x22')]('SIP/%s',_0x2f2633[_0xe0d4('0x24')]):_0x2f2633[_0xe0d4('0x29')];if(_0x26fa90[_0x1ae33d]['queuecallercomplete']){_0x26fa90[_0x1ae33d][_0xe0d4('0x2a')]=moment()[_0xe0d4('0x22')](_0xe0d4('0x2b'));}if(_0x26fa90[_0x1ae33d][_0xe0d4('0x2c')]){_0x26fa90[_0x1ae33d]['queuecallerexitAt']=moment()[_0xe0d4('0x22')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0xe0d4('0x15')](_0x26fa90[_0x1ae33d]);}RpcVoiceQueueReport['create'](_0x26fa90[_0x1ae33d]);}};function extractCalleridNumber(_0x56ca62){var _0x4b1168=_0x56ca62[_0xe0d4('0x2d')](/<(.*?)>/);return _0x4b1168?_0x4b1168[0x1]:_0x56ca62;}Report['prototype']['voiceCallReport']=function(_0x348291){_0x348291['destination']=_0x348291[_0xe0d4('0x2e')]||_0x348291[_0xe0d4('0x2f')];if(_0x348291['type']==_0xe0d4('0x30')){_0x348291[_0xe0d4('0x31')]=_0xe0d4('0x32');_0x348291[_0xe0d4('0x33')]=_0x348291[_0xe0d4('0x32')];if(_0x348291[_0xe0d4('0x34')]==_0xe0d4('0x35')){_0x348291[_0xe0d4('0x20')]='';_0x348291[_0xe0d4('0x2e')]=extractCalleridNumber(_0x348291[_0xe0d4('0x36')]);}else if(_0x348291[_0xe0d4('0x34')]==_0xe0d4('0x37')){if(_0x348291[_0xe0d4('0x2e')]==_0xe0d4('0x38')){_0x348291[_0xe0d4('0x2e')]=extractCalleridNumber(_0x348291[_0xe0d4('0x39')]);_0x348291[_0xe0d4('0x3a')]=_0x348291[_0xe0d4('0x3b')];_0x348291[_0xe0d4('0x3c')]=[_0x348291[_0xe0d4('0x3d')],_0x348291[_0xe0d4('0x3d')]=_0x348291['destinationchannel']][0x0];_0x348291[_0xe0d4('0x36')]=_0x348291[_0xe0d4('0x39')];}else{_0x348291[_0xe0d4('0x2e')]=_0x348291[_0xe0d4('0x3a')];_0x348291[_0xe0d4('0x3a')]=_0x348291[_0xe0d4('0x3b')];if(_0x348291[_0xe0d4('0x3e')]==_0xe0d4('0x3f')){_0x348291['accountcode']=_0x348291[_0xe0d4('0x26')];}else{_0x348291[_0xe0d4('0x20')]='';}}}}else{_0x348291[_0xe0d4('0x36')]=util[_0xe0d4('0x22')](_0xe0d4('0x40'),_0x348291['calleridname'],_0x348291[_0xe0d4('0x3a')]);}if(RpcVoiceTransferReport['transfers'][_0x348291[_0xe0d4('0x41')]]){var _0x35108d=RpcVoiceTransferReport[_0xe0d4('0x42')][_0x348291[_0xe0d4('0x41')]];_0x35108d[_0xe0d4('0x43')]=_0x348291['uniqueid'];RpcVoiceTransferReport[_0xe0d4('0x44')](_0x35108d);delete RpcVoiceTransferReport[_0xe0d4('0x42')][_0x348291[_0xe0d4('0x41')]];}RpcVoiceCallReport[_0xe0d4('0x45')](_0x348291);if(_0x348291[_0xe0d4('0x46')]){for(var _0x3f4ebc=0x0;_0x3f4ebc<_0x348291[_0xe0d4('0x47')][_0xe0d4('0x25')];_0x3f4ebc+=0x1){_0x348291[_0xe0d4('0x48')]=_0x348291['monitors'][_0x3f4ebc][_0xe0d4('0x49')];_0x348291['createdAt']=_0x348291[_0xe0d4('0x47')][_0x3f4ebc][_0xe0d4('0x4a')];if(_0x348291[_0xe0d4('0x2f')]==_0xe0d4('0x38')){_0x348291['calleridnum']=_0x348291['connectedlinenum'];_0x348291[_0xe0d4('0x4b')]=_0x348291[_0xe0d4('0x4c')];_0x348291['connectedlinenum']=_0x348291[_0xe0d4('0x20')];_0x348291[_0xe0d4('0x4c')]=_0x348291[_0xe0d4('0x4d')];_0x348291[_0xe0d4('0x2f')]=_0x348291[_0xe0d4('0x3b')];}else if(_0x348291[_0xe0d4('0x2f')]=='xcally-motion-dialer'){_0x348291[_0xe0d4('0x3a')]=_0x348291['destination'];_0x348291[_0xe0d4('0x2f')]=_0x348291[_0xe0d4('0x3b')];}RpcVoiceRecording[_0xe0d4('0x45')](_0x348291);}}};Report['prototype']['voiceAgentReport']=function(_0x960cc7){if(_[_0xe0d4('0x4e')](_0x960cc7)){_0x960cc7[_0xe0d4('0x4f')](function(_0x1ab8fc){RpcVoiceAgentReport[_0xe0d4('0x45')](_0x1ab8fc);});}else{RpcVoiceAgentReport[_0xe0d4('0x45')](_0x960cc7);}};Report[_0xe0d4('0x10')][_0xe0d4('0x1b')]=function(_0x5f17d8){RpcVoiceDialReport['create'](_0x5f17d8);var _0x521836;var _0x19fc75;var _0x4e2514=_0x5f17d8[_0xe0d4('0x3d')];if(_[_0xe0d4('0x50')](_0x4e2514,_0xe0d4('0x51'))){_0x19fc75=_0x4e2514[_0xe0d4('0x52')](_0x4e2514[_0xe0d4('0x53')]('/')+0x1,_0x4e2514[_0xe0d4('0x53')]('@'));_0x521836=_[_0xe0d4('0x1f')](this[_0xe0d4('0xe')],function(_0x45b398){return _0x45b398['mobile']==_0x19fc75||_0x45b398[_0xe0d4('0x54')]==_0x19fc75||_0x45b398[_0xe0d4('0x20')]==_0x19fc75;});}else{_0x19fc75=_0x4e2514[_0xe0d4('0x52')](_0x4e2514[_0xe0d4('0x53')]('/')+0x1,_0x4e2514[_0xe0d4('0x55')]('-'));_0x521836=this[_0xe0d4('0x1e')](_0x19fc75);}if(_0x521836){_0x5f17d8[_0xe0d4('0x29')]=_[_0xe0d4('0x21')](_0x521836[_0xe0d4('0x29')])?util[_0xe0d4('0x22')](_0xe0d4('0x23'),_0x521836[_0xe0d4('0x24')]):_0x521836[_0xe0d4('0x29')];_0x5f17d8[_0xe0d4('0x4d')]=_0x521836[_0xe0d4('0x24')];_0x5f17d8[_0xe0d4('0x20')]=_0x521836['accountcode'];RpcMemberReport[_0xe0d4('0x1b')](_0x5f17d8);}};Report[_0xe0d4('0x10')][_0xe0d4('0x44')]=function(_0x52e7e3){RpcVoiceTransferReport['transfers'][_0x52e7e3['transfererlinkedid']]=_0x52e7e3;};Report[_0xe0d4('0x10')][_0xe0d4('0x56')]=function(_0x1c0ee1){RpcVoiceTransferReport[_0xe0d4('0x56')](_0x1c0ee1);};module[_0xe0d4('0x57')]=Report;
\ No newline at end of file
+var _0x462d=['custom:voiceQueueReport','voiceQueueReport','voiceCallReport','voiceAgentReport','bind','custom:voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','prototype','findAgent','accountcode','isNil','find','interface','format','SIP/%s','name','length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','match','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','calleridnum','destinationchannel','channel','originatecalleridnum','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','blindTransfer','create','monitor','monitors','filename','createdAt','xcally-motion-preview','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','voiceDialReport','startsWith','Local','indexOf','mobile','phone','substring','lastIndexOf','transfererlinkedid','exports','moment','util','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','xdr','disabled'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x462d,0xa1));var _0xd462=function(_0x59f2e6,_0x2cdb2f){_0x59f2e6=_0x59f2e6-0x0;var _0x3d285d=_0x462d[_0x59f2e6];return _0x3d285d;};'use strict';var _=require('lodash');var moment=require(_0xd462('0x0'));var util=require(_0xd462('0x1'));var config=require('../../../config/environment');var ami=require(_0xd462('0x2'));var RpcVoiceAgentReport=require(_0xd462('0x3'));var RpcVoiceCallReport=require(_0xd462('0x4'));var RpcVoiceDialReport=require(_0xd462('0x5'));var RpcMemberReport=require(_0xd462('0x6'));var RpcVoiceQueueReport=require(_0xd462('0x7'));var RpcVoiceRecording=require(_0xd462('0x8'));var RpcVoiceTransferReport=require(_0xd462('0x9'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xd462('0xa'));var VoiceAgentReport=require(_0xd462('0xb'));var VoiceDialReport=require(_0xd462('0xc'));var UserReport=require(_0xd462('0xd'));function Report(_0x52ae71){this[_0xd462('0xe')]=_0x52ae71;this[_0xd462('0xf')]=_0x52ae71['agents'];this[_0xd462('0x10')]=_0x52ae71['telephones'];}Report['prototype']['sync']=function(_0x1e333d){var _0x2edbcc=new VoiceQueueReport(this[_0xd462('0xe')]);var _0x40a555=new VoiceAgentReport(this[_0xd462('0xe')]);var _0x37ce14=new VoiceDialReport(this['realtime']);var _0x357467=new VoiceCallReport(this[_0xd462('0xe')]);var _0x118893=new UserReport(this['realtime']);if(config['xdr']&&config[_0xd462('0x11')][_0xd462('0x12')]){ami['on'](_0xd462('0x13'),this[_0xd462('0x14')]['bind'](this));ami['on']('custom:voiceCallReport',this[_0xd462('0x15')]['bind'](this));ami['on']('custom:voiceAgentReport',this[_0xd462('0x16')][_0xd462('0x17')](this));ami['on'](_0xd462('0x18'),this['voiceDialReport'][_0xd462('0x17')](this));ami['on'](_0xd462('0x19'),this['blindTransfer'][_0xd462('0x17')](this));ami['on'](_0xd462('0x1a'),this[_0xd462('0x1b')][_0xd462('0x17')](this));}};Report[_0xd462('0x1c')][_0xd462('0x1d')]=function(_0x1f5951){var _0x49016f;_0x49016f=_['find'](this['agents'],function(_0xc37163){return _0xc37163[_0xd462('0x1e')]==_0x1f5951||_0xc37163['name']==_0x1f5951;});if(_[_0xd462('0x1f')](_0x49016f)){var _0x44896d=_[_0xd462('0x20')](this['telephones'],function(_0x5f1366){return _0x5f1366[_0xd462('0x1e')]==_0x1f5951||_0x5f1366['name']==_0x1f5951;});if(_0x44896d){_0x49016f=_[_0xd462('0x20')](this['agents'],function(_0x56b025){return _0x56b025[_0xd462('0x21')]==util[_0xd462('0x22')](_0xd462('0x23'),_0x44896d[_0xd462('0x24')]);});}}return _0x49016f;};Report[_0xd462('0x1c')]['voiceQueueReport']=function(_0x5af4d9){for(var _0x25aede=0x0;_0x25aede<_0x5af4d9[_0xd462('0x25')];_0x25aede+=0x1){var _0xcdb8f0=this[_0xd462('0x1d')](_0x5af4d9[_0x25aede][_0xd462('0x26')]);if(_0xcdb8f0){_0x5af4d9[_0x25aede][_0xd462('0x1e')]=_0xcdb8f0[_0xd462('0x1e')];_0x5af4d9[_0x25aede][_0xd462('0x27')]=!![];_0x5af4d9[_0x25aede][_0xd462('0x28')]=_0xcdb8f0[_0xd462('0x24')];_0x5af4d9[_0x25aede][_0xd462('0x21')]=_[_0xd462('0x1f')](_0xcdb8f0['interface'])?util[_0xd462('0x22')](_0xd462('0x23'),_0xcdb8f0[_0xd462('0x24')]):_0xcdb8f0['interface'];if(_0x5af4d9[_0x25aede][_0xd462('0x29')]){_0x5af4d9[_0x25aede]['queuecallercompleteAt']=moment()[_0xd462('0x22')](_0xd462('0x2a'));}if(_0x5af4d9[_0x25aede][_0xd462('0x2b')]){_0x5af4d9[_0x25aede][_0xd462('0x2c')]=moment()[_0xd462('0x22')](_0xd462('0x2a'));}RpcMemberReport[_0xd462('0x14')](_0x5af4d9[_0x25aede]);}RpcVoiceQueueReport['create'](_0x5af4d9[_0x25aede]);}};function extractCalleridNumber(_0x3b4c8c){var _0x3fce31=_0x3b4c8c[_0xd462('0x2d')](/<(.*?)>/);return _0x3fce31?_0x3fce31[0x1]:_0x3b4c8c;}Report[_0xd462('0x1c')]['voiceCallReport']=function(_0x354be3){_0x354be3[_0xd462('0x2e')]=_0x354be3[_0xd462('0x2e')]||_0x354be3[_0xd462('0x2f')];if(_0x354be3[_0xd462('0x30')]=='dialer'){_0x354be3[_0xd462('0x31')]=_0xd462('0x32');_0x354be3[_0xd462('0x33')]=_0x354be3['queue'];if(_0x354be3[_0xd462('0x34')]==_0xd462('0x35')){_0x354be3[_0xd462('0x1e')]='';_0x354be3[_0xd462('0x2e')]=extractCalleridNumber(_0x354be3[_0xd462('0x36')]);}else if(_0x354be3[_0xd462('0x34')]==_0xd462('0x37')){if(_0x354be3[_0xd462('0x2e')]=='xcally-motion-preview'){_0x354be3[_0xd462('0x2e')]=extractCalleridNumber(_0x354be3['calleridpreview']);_0x354be3[_0xd462('0x38')]=_0x354be3['originatecalleridnum'];_0x354be3[_0xd462('0x39')]=[_0x354be3[_0xd462('0x3a')],_0x354be3[_0xd462('0x3a')]=_0x354be3['destinationchannel']][0x0];_0x354be3[_0xd462('0x36')]=_0x354be3['calleridpreview'];}else{_0x354be3['destination']=_0x354be3[_0xd462('0x38')];_0x354be3[_0xd462('0x38')]=_0x354be3[_0xd462('0x3b')];if(_0x354be3[_0xd462('0x3c')]==_0xd462('0x3d')){_0x354be3[_0xd462('0x1e')]=_0x354be3[_0xd462('0x26')];}else{_0x354be3[_0xd462('0x1e')]='';}}}}else{_0x354be3[_0xd462('0x36')]=util[_0xd462('0x22')](_0xd462('0x3e'),_0x354be3[_0xd462('0x3f')],_0x354be3[_0xd462('0x38')]);}if(RpcVoiceTransferReport[_0xd462('0x40')][_0x354be3[_0xd462('0x41')]]){var _0xc22ee8=RpcVoiceTransferReport[_0xd462('0x40')][_0x354be3[_0xd462('0x41')]];_0xc22ee8[_0xd462('0x42')]=_0x354be3[_0xd462('0x43')];RpcVoiceTransferReport[_0xd462('0x44')](_0xc22ee8);delete RpcVoiceTransferReport[_0xd462('0x40')][_0x354be3[_0xd462('0x41')]];}RpcVoiceCallReport[_0xd462('0x45')](_0x354be3);if(_0x354be3[_0xd462('0x46')]){for(var _0xda40f9=0x0;_0xda40f9<_0x354be3[_0xd462('0x47')]['length'];_0xda40f9+=0x1){_0x354be3['monitorFilename']=_0x354be3[_0xd462('0x47')][_0xda40f9][_0xd462('0x48')];_0x354be3[_0xd462('0x49')]=_0x354be3[_0xd462('0x47')][_0xda40f9][_0xd462('0x49')];if(_0x354be3[_0xd462('0x2f')]==_0xd462('0x4a')){_0x354be3['calleridnum']=_0x354be3[_0xd462('0x26')];_0x354be3[_0xd462('0x3f')]=_0x354be3[_0xd462('0x4b')];_0x354be3[_0xd462('0x26')]=_0x354be3[_0xd462('0x1e')];_0x354be3[_0xd462('0x4b')]=_0x354be3[_0xd462('0x4c')];_0x354be3[_0xd462('0x2f')]=_0x354be3[_0xd462('0x3b')];}else if(_0x354be3[_0xd462('0x2f')]==_0xd462('0x4d')){_0x354be3[_0xd462('0x38')]=_0x354be3[_0xd462('0x2e')];_0x354be3['exten']=_0x354be3[_0xd462('0x3b')];}RpcVoiceRecording['create'](_0x354be3);}}};Report[_0xd462('0x1c')][_0xd462('0x16')]=function(_0x16cc40){if(_[_0xd462('0x4e')](_0x16cc40)){_0x16cc40[_0xd462('0x4f')](function(_0x203ea8){RpcVoiceAgentReport[_0xd462('0x45')](_0x203ea8);});}else{RpcVoiceAgentReport[_0xd462('0x45')](_0x16cc40);}};Report['prototype'][_0xd462('0x50')]=function(_0x26dd70){RpcVoiceDialReport[_0xd462('0x45')](_0x26dd70);var _0x375303;var _0x195843;var _0x1cffff=_0x26dd70[_0xd462('0x3a')];if(_[_0xd462('0x51')](_0x1cffff,_0xd462('0x52'))){_0x195843=_0x1cffff['substring'](_0x1cffff['indexOf']('/')+0x1,_0x1cffff[_0xd462('0x53')]('@'));_0x375303=_[_0xd462('0x20')](this['agents'],function(_0x5c209f){return _0x5c209f[_0xd462('0x54')]==_0x195843||_0x5c209f[_0xd462('0x55')]==_0x195843||_0x5c209f[_0xd462('0x1e')]==_0x195843;});}else{_0x195843=_0x1cffff[_0xd462('0x56')](_0x1cffff[_0xd462('0x53')]('/')+0x1,_0x1cffff[_0xd462('0x57')]('-'));_0x375303=this[_0xd462('0x1d')](_0x195843);}if(_0x375303){_0x26dd70[_0xd462('0x21')]=_[_0xd462('0x1f')](_0x375303['interface'])?util[_0xd462('0x22')](_0xd462('0x23'),_0x375303['name']):_0x375303[_0xd462('0x21')];_0x26dd70[_0xd462('0x4c')]=_0x375303[_0xd462('0x24')];_0x26dd70[_0xd462('0x1e')]=_0x375303[_0xd462('0x1e')];RpcMemberReport[_0xd462('0x50')](_0x26dd70);}};Report[_0xd462('0x1c')][_0xd462('0x44')]=function(_0x3c2bdb){RpcVoiceTransferReport[_0xd462('0x40')][_0x3c2bdb[_0xd462('0x58')]]=_0x3c2bdb;};Report['prototype']['attendedTransfer']=function(_0xc3c6f6){RpcVoiceTransferReport[_0xd462('0x1b')](_0xc3c6f6);};module[_0xd462('0x59')]=Report;
\ No newline at end of file
index 1eb6340..8e1183f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e9a=['accountcode','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','ioredis','bluebird','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','[userReport][registry]','find','username','stateRegistry','state','merge','omit','event','debug','format','trunk:%s','name','trunk:save','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone'];(function(_0x189db7,_0x38cbd5){var _0x1c5fd9=function(_0x3f6694){while(--_0x3f6694){_0x189db7['push'](_0x189db7['shift']());}};_0x1c5fd9(++_0x38cbd5);}(_0x8e9a,0xf6));var _0xa8e9=function(_0x5655db,_0x1e1c4d){_0x5655db=_0x5655db-0x0;var _0x2f21d2=_0x8e9a[_0x5655db];return _0x2f21d2;};'use strict';var _=require('lodash');var moment=require(_0xa8e9('0x0'));var util=require(_0xa8e9('0x1'));var Redis=require(_0xa8e9('0x2'));var BPromise=require(_0xa8e9('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xa8e9('0x4'));var ami=require(_0xa8e9('0x5'));config[_0xa8e9('0x6')]=_[_0xa8e9('0x7')](config[_0xa8e9('0x6')],{'host':_0xa8e9('0x8'),'port':0x18eb});var io=require(_0xa8e9('0x9'))(new Redis(config[_0xa8e9('0x6')]));function UserReport(_0x4b266c){this[_0xa8e9('0xa')]=_0x4b266c[_0xa8e9('0xa')];this[_0xa8e9('0xb')]=_0x4b266c[_0xa8e9('0xb')];this[_0xa8e9('0xc')]=_0x4b266c['telephones'];ami['on'](_0xa8e9('0xd'),this[_0xa8e9('0xe')][_0xa8e9('0xf')](this));ami['on'](_0xa8e9('0x10'),this['syncRegistry']['bind'](this));ami['on'](_0xa8e9('0x11'),this[_0xa8e9('0x12')][_0xa8e9('0xf')](this));ami['on']('peerstatus',this[_0xa8e9('0x13')][_0xa8e9('0xf')](this));return this[_0xa8e9('0x14')]();}function showSipRegistrations(){Promise[_0xa8e9('0x15')]()[_0xa8e9('0x16')](ami[_0xa8e9('0x17')]())[_0xa8e9('0x18')](function(_0x1a8eb5){logger[_0xa8e9('0x19')](_0xa8e9('0x1a'),util['inspect'](_0x1a8eb5,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xa8e9('0x15')]()['then'](ami[_0xa8e9('0x1b')]())[_0xa8e9('0x18')](function(_0x2bd452){logger[_0xa8e9('0x19')](_0xa8e9('0x1c'),util[_0xa8e9('0x1d')](_0x2bd452,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xa8e9('0x15')]()['then'](ami[_0xa8e9('0x1e')]())[_0xa8e9('0x18')](function(_0x4e289b){logger[_0xa8e9('0x19')](_0xa8e9('0x1f'),util[_0xa8e9('0x1d')](_0x4e289b,{'showHidden':![],'depth':null}));});}UserReport[_0xa8e9('0x20')][_0xa8e9('0x14')]=function(){setInterval(function(){BPromise[_0xa8e9('0x15')]()['then'](showSipRegistrations())[_0xa8e9('0x16')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xa8e9('0x20')][_0xa8e9('0x21')]=function(_0x178b53){return _0x178b53!==null&&!_['isUndefined'](_0x178b53);};UserReport[_0xa8e9('0x20')]['emit']=function(_0x15d89a,_0x110090,_0x32553c){io['to'](_0x15d89a)[_0xa8e9('0x22')](_0x110090,_0x32553c);};UserReport[_0xa8e9('0x20')][_0xa8e9('0xe')]=function(_0x20c8b4){try{if(this[_0xa8e9('0x21')](_0x20c8b4)){logger[_0xa8e9('0x23')](_0xa8e9('0x24'),_0x20c8b4['username'],_0x20c8b4['state']);logger['debug'](_0xa8e9('0x25'),util[_0xa8e9('0x1d')](_0x20c8b4,{'showHidden':![],'depth':null}));var _0x46bc8c=_[_0xa8e9('0x26')](this['trunks'],{'defaultuser':_0x20c8b4[_0xa8e9('0x27')]});if(_0x46bc8c){_0x20c8b4[_0xa8e9('0x28')]=_0x20c8b4[_0xa8e9('0x29')];_[_0xa8e9('0x2a')](_0x46bc8c,_[_0xa8e9('0x2b')](_0x20c8b4,[_0xa8e9('0x2c'),'actionid',_0xa8e9('0x27'),'state']));logger[_0xa8e9('0x2d')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xa8e9('0x1d')](_0x46bc8c,{'showHidden':![],'depth':null}));this['emit'](util[_0xa8e9('0x2e')](_0xa8e9('0x2f'),_0x46bc8c[_0xa8e9('0x30')]),_0xa8e9('0x31'),_0x46bc8c);}}}catch(_0xc8c60d){logger[_0xa8e9('0x19')](_0xa8e9('0x25'),util['inspect'](_0xc8c60d,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xa8e9('0x12')]=function(_0xc3620a){try{if(this['isNotNull'](_0xc3620a)){logger[_0xa8e9('0x23')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0xc3620a[_0xa8e9('0x32')],_0xc3620a[_0xa8e9('0x29')]);logger['debug'](_0xa8e9('0x33'),util['inspect'](_0xc3620a,{'showHidden':![],'depth':null}));if(this[_0xa8e9('0xb')][_0xc3620a[_0xa8e9('0x32')]]){if(!this[_0xa8e9('0xb')][_0xc3620a['device']][_0xa8e9('0x34')]||_0xc3620a[_0xa8e9('0x29')][_0xa8e9('0x35')]()=='inuse'){this[_0xa8e9('0xb')][_0xc3620a['device']][_0xa8e9('0x34')]=![];if(this[_0xa8e9('0xb')][_0xc3620a[_0xa8e9('0x32')]][_0xa8e9('0x29')]!==_0xc3620a['state'][_0xa8e9('0x35')]()){this[_0xa8e9('0xb')][_0xc3620a[_0xa8e9('0x32')]][_0xa8e9('0x36')]=_[_0xa8e9('0x37')](moment()['format']('x'));}this[_0xa8e9('0xb')][_0xc3620a[_0xa8e9('0x32')]]['state']=_0xc3620a[_0xa8e9('0x29')]['toLowerCase']();this['agents'][_0xc3620a['device']][_0xa8e9('0x38')](_0xc3620a);}}else if(this[_0xa8e9('0xc')][_0xc3620a[_0xa8e9('0x32')]]){if(this[_0xa8e9('0xc')][_0xc3620a[_0xa8e9('0x32')]][_0xa8e9('0x29')]!==_0xc3620a[_0xa8e9('0x29')][_0xa8e9('0x35')]()){this[_0xa8e9('0xc')][_0xc3620a['device']][_0xa8e9('0x36')]=_[_0xa8e9('0x37')](moment()['format']('x'));}this[_0xa8e9('0xc')][_0xc3620a[_0xa8e9('0x32')]][_0xa8e9('0x29')]=_0xc3620a['state'][_0xa8e9('0x35')]();logger[_0xa8e9('0x2d')](_0xa8e9('0x39'),util[_0xa8e9('0x1d')](this[_0xa8e9('0xc')][_0xc3620a['device']],{'showHidden':![],'depth':null}));this[_0xa8e9('0x22')](util['format'](_0xa8e9('0x3a'),this[_0xa8e9('0xc')][_0xc3620a['device']][_0xa8e9('0x30')]),'telephone:save',this[_0xa8e9('0xc')][_0xc3620a[_0xa8e9('0x32')]]);}else if(this[_0xa8e9('0xa')][_0xc3620a[_0xa8e9('0x32')]]){if(this[_0xa8e9('0xa')][_0xc3620a[_0xa8e9('0x32')]][_0xa8e9('0x29')]!==_0xc3620a[_0xa8e9('0x29')]['toLowerCase']()){this[_0xa8e9('0xa')][_0xc3620a[_0xa8e9('0x32')]][_0xa8e9('0x36')]=_[_0xa8e9('0x37')](moment()[_0xa8e9('0x2e')]('x'));}this['trunks'][_0xc3620a['device']][_0xa8e9('0x29')]=_0xc3620a['state'][_0xa8e9('0x35')]();logger[_0xa8e9('0x2d')](_0xa8e9('0x3b'),util[_0xa8e9('0x1d')](this['trunks'][_0xc3620a[_0xa8e9('0x32')]],{'showHidden':![],'depth':null}));this[_0xa8e9('0x22')](util[_0xa8e9('0x2e')]('trunk:%s',this[_0xa8e9('0xa')][_0xc3620a['device']][_0xa8e9('0x30')]),'trunk:save',this[_0xa8e9('0xa')][_0xc3620a[_0xa8e9('0x32')]]);}else if(_[_0xa8e9('0x3c')](_0xc3620a[_0xa8e9('0x32')],_0xa8e9('0x3d'))){var _0x2f2595=_0xc3620a[_0xa8e9('0x32')];var _0x45ca2f=_0x2f2595[_0xa8e9('0x3e')](_0x2f2595[_0xa8e9('0x3f')]('/')+0x1,_0x2f2595['indexOf']('@'));var _0x42144c=_[_0xa8e9('0x26')](this[_0xa8e9('0xb')],function(_0x4131d8){return _0x4131d8[_0xa8e9('0x40')]==_0x45ca2f||_0x4131d8[_0xa8e9('0x41')]==_0x45ca2f||_0x4131d8[_0xa8e9('0x42')]==_0x45ca2f;});if(_0x42144c){if(_0x42144c[_0xa8e9('0x29')]!==_0xc3620a[_0xa8e9('0x29')][_0xa8e9('0x35')]()){_0x42144c[_0xa8e9('0x36')]=_['toNumber'](moment()[_0xa8e9('0x2e')]('x'));}_0x42144c[_0xa8e9('0x29')]=_0xc3620a[_0xa8e9('0x29')][_0xa8e9('0x35')]();_0x42144c['local']=!![];_0x42144c[_0xa8e9('0x38')](_0xc3620a);}}}}catch(_0x103804){logger[_0xa8e9('0x19')](_0xa8e9('0x33'),util['inspect'](_0x103804,{'showHidden':![],'depth':null}));}};UserReport[_0xa8e9('0x20')]['syncPeerStatus']=function(_0x4bdfbd){try{if(this[_0xa8e9('0x21')](_0x4bdfbd)&&this[_0xa8e9('0x21')](_0x4bdfbd[_0xa8e9('0x43')])){logger[_0xa8e9('0x23')](_0xa8e9('0x44'),_0x4bdfbd[_0xa8e9('0x45')],_0x4bdfbd[_0xa8e9('0x46')],_0x4bdfbd[_0xa8e9('0x43')]);logger['debug'](_0xa8e9('0x47'),util['inspect'](_0x4bdfbd,{'showHidden':![],'depth':null}));if(this[_0xa8e9('0xb')][_0x4bdfbd[_0xa8e9('0x45')]]){if(!this[_0xa8e9('0xb')][_0x4bdfbd[_0xa8e9('0x45')]]['local']||_0x4bdfbd[_0xa8e9('0x43')][_0xa8e9('0x35')]()==_0xa8e9('0x48')){this['agents'][_0x4bdfbd['peer']]['local']=![];this[_0xa8e9('0xb')][_0x4bdfbd[_0xa8e9('0x45')]]['status']=_0x4bdfbd[_0xa8e9('0x43')]['toLowerCase']();this[_0xa8e9('0xb')][_0x4bdfbd[_0xa8e9('0x45')]][_0xa8e9('0x46')]=_0x4bdfbd['address'];this['agents'][_0x4bdfbd['peer']][_0xa8e9('0x38')](_0x4bdfbd);}}else if(this['telephones'][_0x4bdfbd['peer']]){this['telephones'][_0x4bdfbd[_0xa8e9('0x45')]]['status']=_0x4bdfbd[_0xa8e9('0x43')][_0xa8e9('0x35')]();this['telephones'][_0x4bdfbd[_0xa8e9('0x45')]][_0xa8e9('0x46')]=_0x4bdfbd[_0xa8e9('0x46')];logger[_0xa8e9('0x2d')](_0xa8e9('0x49'),util[_0xa8e9('0x1d')](this[_0xa8e9('0xc')][_0x4bdfbd[_0xa8e9('0x45')]],{'showHidden':![],'depth':null}));this[_0xa8e9('0x22')](util[_0xa8e9('0x2e')](_0xa8e9('0x3a'),this[_0xa8e9('0xc')][_0x4bdfbd[_0xa8e9('0x45')]][_0xa8e9('0x30')]),_0xa8e9('0x4a'),this[_0xa8e9('0xc')][_0x4bdfbd[_0xa8e9('0x45')]]);}else if(this[_0xa8e9('0xa')][_0x4bdfbd[_0xa8e9('0x45')]]){this[_0xa8e9('0xa')][_0x4bdfbd[_0xa8e9('0x45')]][_0xa8e9('0x4b')]=_0x4bdfbd[_0xa8e9('0x43')][_0xa8e9('0x35')]();this[_0xa8e9('0xa')][_0x4bdfbd[_0xa8e9('0x45')]]['address']=_0x4bdfbd[_0xa8e9('0x46')];logger[_0xa8e9('0x2d')](_0xa8e9('0x4c'),util[_0xa8e9('0x1d')](this['trunks'][_0x4bdfbd[_0xa8e9('0x45')]],{'showHidden':![],'depth':null}));this[_0xa8e9('0x22')](util[_0xa8e9('0x2e')](_0xa8e9('0x2f'),this[_0xa8e9('0xa')][_0x4bdfbd[_0xa8e9('0x45')]][_0xa8e9('0x30')]),_0xa8e9('0x31'),this[_0xa8e9('0xa')][_0x4bdfbd['peer']]);}}}catch(_0x5e9c69){logger['error']('[userReport][peerstatus]',util[_0xa8e9('0x1d')](_0x5e9c69,{'showHidden':![],'depth':null}));}};module[_0xa8e9('0x4d')]=UserReport;
\ No newline at end of file
+var _0xdfef=['[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','bind','registry','devicestatechange','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','resolve','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','info','[userReport][registry]\x20registry:%s\x20state:%s','state','find','username','stateRegistry','merge','omit','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','[userReport][registry]','syncDeviceState','[userReport][devicestatechange]','device','toLowerCase','inuse','local','stateTime','toNumber','updateStatusRealtime','format','emit','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','Local','indexOf','mobile','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:'];(function(_0x54eae3,_0x3f2835){var _0x4561fa=function(_0x9591f7){while(--_0x9591f7){_0x54eae3['push'](_0x54eae3['shift']());}};_0x4561fa(++_0x3f2835);}(_0xdfef,0x95));var _0xfdfe=function(_0x552ab4,_0x2a0db2){_0x552ab4=_0x552ab4-0x0;var _0x36ed30=_0xdfef[_0x552ab4];return _0x36ed30;};'use strict';var _=require(_0xfdfe('0x0'));var moment=require(_0xfdfe('0x1'));var util=require(_0xfdfe('0x2'));var Redis=require('ioredis');var BPromise=require(_0xfdfe('0x3'));var config=require(_0xfdfe('0x4'));var logger=require(_0xfdfe('0x5'))('ami');var ami=require(_0xfdfe('0x6'));config[_0xfdfe('0x7')]=_[_0xfdfe('0x8')](config[_0xfdfe('0x7')],{'host':_0xfdfe('0x9'),'port':0x18eb});var io=require(_0xfdfe('0xa'))(new Redis(config[_0xfdfe('0x7')]));function UserReport(_0x3c71e0){this[_0xfdfe('0xb')]=_0x3c71e0[_0xfdfe('0xb')];this[_0xfdfe('0xc')]=_0x3c71e0[_0xfdfe('0xc')];this[_0xfdfe('0xd')]=_0x3c71e0[_0xfdfe('0xd')];ami['on'](_0xfdfe('0xe'),this['syncRegistry'][_0xfdfe('0xf')](this));ami['on'](_0xfdfe('0x10'),this['syncRegistry'][_0xfdfe('0xf')](this));ami['on'](_0xfdfe('0x11'),this['syncDeviceState'][_0xfdfe('0xf')](this));ami['on'](_0xfdfe('0x12'),this[_0xfdfe('0x13')][_0xfdfe('0xf')](this));return this[_0xfdfe('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0xfdfe('0x15')](ami[_0xfdfe('0x16')]())[_0xfdfe('0x17')](function(_0xf40e8f){logger[_0xfdfe('0x18')]('[userReport][sipshowregistry]',util['inspect'](_0xf40e8f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xfdfe('0x19')]()['then'](ami[_0xfdfe('0x1a')]())[_0xfdfe('0x17')](function(_0x4f228d){logger[_0xfdfe('0x18')](_0xfdfe('0x1b'),util[_0xfdfe('0x1c')](_0x4f228d,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xfdfe('0x19')]()[_0xfdfe('0x15')](ami[_0xfdfe('0x1d')]())[_0xfdfe('0x17')](function(_0x40f424){logger[_0xfdfe('0x18')](_0xfdfe('0x1e'),util[_0xfdfe('0x1c')](_0x40f424,{'showHidden':![],'depth':null}));});}UserReport[_0xfdfe('0x1f')][_0xfdfe('0x14')]=function(){setInterval(function(){BPromise[_0xfdfe('0x19')]()[_0xfdfe('0x15')](showSipRegistrations())['then'](listDeviceStates())[_0xfdfe('0x15')](showPeersStatus());},0x32c8);};UserReport[_0xfdfe('0x1f')][_0xfdfe('0x20')]=function(_0x5f27b3){return _0x5f27b3!==null&&!_[_0xfdfe('0x21')](_0x5f27b3);};UserReport[_0xfdfe('0x1f')]['emit']=function(_0x693c12,_0x46cebe,_0x4fb61c){io['to'](_0x693c12)['emit'](_0x46cebe,_0x4fb61c);};UserReport[_0xfdfe('0x1f')]['syncRegistry']=function(_0x79a012){try{if(this[_0xfdfe('0x20')](_0x79a012)){logger[_0xfdfe('0x22')](_0xfdfe('0x23'),_0x79a012['username'],_0x79a012[_0xfdfe('0x24')]);logger['debug']('[userReport][registry]',util[_0xfdfe('0x1c')](_0x79a012,{'showHidden':![],'depth':null}));var _0x241cb7=_[_0xfdfe('0x25')](this[_0xfdfe('0xb')],{'defaultuser':_0x79a012[_0xfdfe('0x26')]});if(_0x241cb7){_0x79a012[_0xfdfe('0x27')]=_0x79a012[_0xfdfe('0x24')];_[_0xfdfe('0x28')](_0x241cb7,_[_0xfdfe('0x29')](_0x79a012,[_0xfdfe('0x2a'),_0xfdfe('0x2b'),_0xfdfe('0x26'),_0xfdfe('0x24')]));logger[_0xfdfe('0x2c')](_0xfdfe('0x2d'),util[_0xfdfe('0x1c')](_0x241cb7,{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',_0x241cb7[_0xfdfe('0x2e')]),'trunk:save',_0x241cb7);}}}catch(_0x3e3e76){logger[_0xfdfe('0x18')](_0xfdfe('0x2f'),util[_0xfdfe('0x1c')](_0x3e3e76,{'showHidden':![],'depth':null}));}};UserReport[_0xfdfe('0x1f')][_0xfdfe('0x30')]=function(_0x5b57c1){try{if(this['isNotNull'](_0x5b57c1)){logger[_0xfdfe('0x22')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x5b57c1['device'],_0x5b57c1['state']);logger['debug'](_0xfdfe('0x31'),util['inspect'](_0x5b57c1,{'showHidden':![],'depth':null}));if(this[_0xfdfe('0xc')][_0x5b57c1[_0xfdfe('0x32')]]){if(!this['agents'][_0x5b57c1[_0xfdfe('0x32')]]['local']||_0x5b57c1[_0xfdfe('0x24')][_0xfdfe('0x33')]()==_0xfdfe('0x34')){this[_0xfdfe('0xc')][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x35')]=![];if(this[_0xfdfe('0xc')][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x24')]!==_0x5b57c1['state'][_0xfdfe('0x33')]()){this['agents'][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x36')]=_[_0xfdfe('0x37')](moment()['format']('x'));}this['agents'][_0x5b57c1[_0xfdfe('0x32')]]['state']=_0x5b57c1[_0xfdfe('0x24')][_0xfdfe('0x33')]();this[_0xfdfe('0xc')][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x38')](_0x5b57c1);}}else if(this['telephones'][_0x5b57c1[_0xfdfe('0x32')]]){if(this[_0xfdfe('0xd')][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x24')]!==_0x5b57c1['state'][_0xfdfe('0x33')]()){this[_0xfdfe('0xd')][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x36')]=_[_0xfdfe('0x37')](moment()[_0xfdfe('0x39')]('x'));}this[_0xfdfe('0xd')][_0x5b57c1['device']][_0xfdfe('0x24')]=_0x5b57c1['state'][_0xfdfe('0x33')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xfdfe('0x1c')](this[_0xfdfe('0xd')][_0x5b57c1[_0xfdfe('0x32')]],{'showHidden':![],'depth':null}));this[_0xfdfe('0x3a')](util[_0xfdfe('0x39')](_0xfdfe('0x3b'),this['telephones'][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x2e')]),_0xfdfe('0x3c'),this[_0xfdfe('0xd')][_0x5b57c1[_0xfdfe('0x32')]]);}else if(this['trunks'][_0x5b57c1[_0xfdfe('0x32')]]){if(this['trunks'][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x24')]!==_0x5b57c1['state'][_0xfdfe('0x33')]()){this[_0xfdfe('0xb')][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x36')]=_[_0xfdfe('0x37')](moment()[_0xfdfe('0x39')]('x'));}this['trunks'][_0x5b57c1[_0xfdfe('0x32')]][_0xfdfe('0x24')]=_0x5b57c1[_0xfdfe('0x24')]['toLowerCase']();logger[_0xfdfe('0x2c')](_0xfdfe('0x3d'),util[_0xfdfe('0x1c')](this['trunks'][_0x5b57c1['device']],{'showHidden':![],'depth':null}));this[_0xfdfe('0x3a')](util['format'](_0xfdfe('0x3e'),this[_0xfdfe('0xb')][_0x5b57c1[_0xfdfe('0x32')]]['name']),_0xfdfe('0x3f'),this[_0xfdfe('0xb')][_0x5b57c1[_0xfdfe('0x32')]]);}else if(_['startsWith'](_0x5b57c1[_0xfdfe('0x32')],_0xfdfe('0x40'))){var _0x5454df=_0x5b57c1[_0xfdfe('0x32')];var _0x1dcf9a=_0x5454df['substring'](_0x5454df['indexOf']('/')+0x1,_0x5454df[_0xfdfe('0x41')]('@'));var _0x1c098d=_[_0xfdfe('0x25')](this['agents'],function(_0x13be43){return _0x13be43[_0xfdfe('0x42')]==_0x1dcf9a||_0x13be43['phone']==_0x1dcf9a||_0x13be43['accountcode']==_0x1dcf9a;});if(_0x1c098d){if(_0x1c098d[_0xfdfe('0x24')]!==_0x5b57c1['state'][_0xfdfe('0x33')]()){_0x1c098d['stateTime']=_['toNumber'](moment()[_0xfdfe('0x39')]('x'));}_0x1c098d[_0xfdfe('0x24')]=_0x5b57c1[_0xfdfe('0x24')][_0xfdfe('0x33')]();_0x1c098d[_0xfdfe('0x35')]=!![];_0x1c098d[_0xfdfe('0x38')](_0x5b57c1);}}}}catch(_0x53e3f3){logger[_0xfdfe('0x18')]('[userReport][devicestatechange]',util['inspect'](_0x53e3f3,{'showHidden':![],'depth':null}));}};UserReport[_0xfdfe('0x1f')][_0xfdfe('0x13')]=function(_0x29cb35){try{if(this[_0xfdfe('0x20')](_0x29cb35)&&this['isNotNull'](_0x29cb35[_0xfdfe('0x12')])){logger[_0xfdfe('0x22')](_0xfdfe('0x43'),_0x29cb35[_0xfdfe('0x44')],_0x29cb35['address'],_0x29cb35[_0xfdfe('0x12')]);logger[_0xfdfe('0x2c')](_0xfdfe('0x45'),util[_0xfdfe('0x1c')](_0x29cb35,{'showHidden':![],'depth':null}));if(this[_0xfdfe('0xc')][_0x29cb35[_0xfdfe('0x44')]]){if(!this['agents'][_0x29cb35[_0xfdfe('0x44')]]['local']||_0x29cb35[_0xfdfe('0x12')][_0xfdfe('0x33')]()=='registered'){this[_0xfdfe('0xc')][_0x29cb35['peer']][_0xfdfe('0x35')]=![];this['agents'][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x46')]=_0x29cb35['peerstatus'][_0xfdfe('0x33')]();this[_0xfdfe('0xc')][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x47')]=_0x29cb35['address'];this['agents'][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x38')](_0x29cb35);}}else if(this[_0xfdfe('0xd')][_0x29cb35['peer']]){this[_0xfdfe('0xd')][_0x29cb35['peer']][_0xfdfe('0x46')]=_0x29cb35[_0xfdfe('0x12')][_0xfdfe('0x33')]();this['telephones'][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x47')]=_0x29cb35[_0xfdfe('0x47')];logger[_0xfdfe('0x2c')](_0xfdfe('0x48'),util['inspect'](this[_0xfdfe('0xd')][_0x29cb35[_0xfdfe('0x44')]],{'showHidden':![],'depth':null}));this[_0xfdfe('0x3a')](util[_0xfdfe('0x39')]('telephone:%s',this['telephones'][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x2e')]),'telephone:save',this[_0xfdfe('0xd')][_0x29cb35[_0xfdfe('0x44')]]);}else if(this[_0xfdfe('0xb')][_0x29cb35['peer']]){this[_0xfdfe('0xb')][_0x29cb35['peer']][_0xfdfe('0x46')]=_0x29cb35[_0xfdfe('0x12')][_0xfdfe('0x33')]();this['trunks'][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x47')]=_0x29cb35[_0xfdfe('0x47')];logger[_0xfdfe('0x2c')](_0xfdfe('0x49'),util[_0xfdfe('0x1c')](this[_0xfdfe('0xb')][_0x29cb35[_0xfdfe('0x44')]],{'showHidden':![],'depth':null}));this[_0xfdfe('0x3a')](util[_0xfdfe('0x39')](_0xfdfe('0x3e'),this['trunks'][_0x29cb35[_0xfdfe('0x44')]][_0xfdfe('0x2e')]),'trunk:save',this[_0xfdfe('0xb')][_0x29cb35[_0xfdfe('0x44')]]);}}}catch(_0x452df2){logger[_0xfdfe('0x18')](_0xfdfe('0x45'),util[_0xfdfe('0x1c')](_0x452df2,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index 5d300e6..f247cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f6=['hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answeredelsewheremembername','reason','answered_elsewhere','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','transfer','agent','talktime','acwTimeout','agentacw','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','localhost','socket.io-emitter','redis','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','bind','agentconnect','syncAgentConnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','error','[%s][voiceAgentReport][agentconnect]\x20event:'];(function(_0x137098,_0x4ef0ad){var _0x5bf43b=function(_0x2c34b6){while(--_0x2c34b6){_0x137098['push'](_0x137098['shift']());}};_0x5bf43b(++_0x4ef0ad);}(_0xa1f6,0x19d));var _0x6a1f=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0xa1f6[_0x5627e1];return _0x2f013f;};'use strict';var _=require(_0x6a1f('0x0'));var moment=require(_0x6a1f('0x1'));var util=require(_0x6a1f('0x2'));var Redis=require(_0x6a1f('0x3'));var config=require(_0x6a1f('0x4'));var logger=require(_0x6a1f('0x5'))('ami');var ami=require('../ami');config['redis']=_['defaults'](config['redis'],{'host':_0x6a1f('0x6'),'port':0x18eb});var io=require(_0x6a1f('0x7'))(new Redis(config[_0x6a1f('0x8')]));function VoiceAgentReport(_0x3a772b){this[_0x6a1f('0x9')]={};this[_0x6a1f('0xa')]=_0x3a772b[_0x6a1f('0x9')];this['voiceQueues']=_0x3a772b[_0x6a1f('0xb')];this[_0x6a1f('0xc')]=_0x3a772b[_0x6a1f('0xc')];this[_0x6a1f('0xd')]={};ami['on'](_0x6a1f('0xe'),this['syncAgentCalled'][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x10'),this[_0x6a1f('0x11')][_0x6a1f('0xf')](this));ami['on']('agentringnoanswer',this[_0x6a1f('0x12')]['bind'](this));ami['on'](_0x6a1f('0x13'),this[_0x6a1f('0x14')][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x15'),this[_0x6a1f('0x16')][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x17'),this[_0x6a1f('0x18')][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x19'),this[_0x6a1f('0x1a')][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x1b'),this[_0x6a1f('0x1c')][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x1d'),this[_0x6a1f('0x1e')][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x1f'),this['syncAttendedTransfer'][_0x6a1f('0xf')](this));ami['on'](_0x6a1f('0x20'),this[_0x6a1f('0x21')][_0x6a1f('0xf')](this));}VoiceAgentReport[_0x6a1f('0x22')][_0x6a1f('0x23')]=function(_0x19562a,_0x2840cc,_0x5cb044){io['to'](_0x19562a)[_0x6a1f('0x23')](_0x2840cc,_0x5cb044);};VoiceAgentReport['prototype'][_0x6a1f('0x24')]=function(_0x2dfd4e){return _0x2dfd4e!==null&&!_[_0x6a1f('0x25')](_0x2dfd4e);};VoiceAgentReport[_0x6a1f('0x22')][_0x6a1f('0x26')]=function(_0x4eae7f){try{if(this[_0x6a1f('0x24')](_0x4eae7f)){logger[_0x6a1f('0x27')](_0x6a1f('0x28'),_0x4eae7f[_0x6a1f('0x29')],_0x4eae7f[_0x6a1f('0x2a')],_0x4eae7f[_0x6a1f('0x2b')]);logger[_0x6a1f('0x2c')](_0x6a1f('0x2d'),_0x4eae7f['uniqueid'],util[_0x6a1f('0x2e')](_0x4eae7f,{'showHidden':![],'depth':null}));if(_[_0x6a1f('0x25')](this['channels'][_0x4eae7f['uniqueid']])){this['channels'][_0x4eae7f['uniqueid']]={};}if(_[_0x6a1f('0x25')](this['channels'][_0x4eae7f['uniqueid']][_0x4eae7f[_0x6a1f('0x2b')]])){this[_0x6a1f('0x9')][_0x4eae7f[_0x6a1f('0x29')]][_0x4eae7f[_0x6a1f('0x2b')]]={'agentcalledAt':moment()[_0x6a1f('0x2f')](_0x6a1f('0x30')),'lastevent':_0x6a1f('0x31'),'mandatoryDisposition':this[_0x6a1f('0xb')][_0x4eae7f['queue']]?this[_0x6a1f('0xb')][_0x4eae7f[_0x6a1f('0x32')]][_0x6a1f('0x33')]||![]:![],'type':this['voiceQueues'][_0x4eae7f[_0x6a1f('0x32')]]?this[_0x6a1f('0xb')][_0x4eae7f[_0x6a1f('0x32')]][_0x6a1f('0x34')]||_0x6a1f('0x35'):_0x6a1f('0x35'),'variables':this[_0x6a1f('0xd')][_0x4eae7f['uniqueid']],'motionChannel':'voice'};}_[_0x6a1f('0x36')](this[_0x6a1f('0x9')][_0x4eae7f[_0x6a1f('0x29')]][_0x4eae7f[_0x6a1f('0x2b')]],_[_0x6a1f('0x37')](_0x4eae7f,[_0x6a1f('0x38'),_0x6a1f('0x39')]));logger['debug'](_0x6a1f('0x3a'),_0x4eae7f[_0x6a1f('0x29')],util['inspect'](this[_0x6a1f('0x9')][_0x4eae7f[_0x6a1f('0x29')]][_0x4eae7f[_0x6a1f('0x2b')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcalled',this[_0x6a1f('0x9')][_0x4eae7f[_0x6a1f('0x29')]][_0x4eae7f[_0x6a1f('0x2b')]]);logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x4eae7f[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](this[_0x6a1f('0x9')][_0x4eae7f[_0x6a1f('0x29')]][_0x4eae7f[_0x6a1f('0x2b')]],{'showHidden':![],'depth':null}));this[_0x6a1f('0x23')](util[_0x6a1f('0x2f')]('user:%s',_0x4eae7f[_0x6a1f('0x2a')]),'user:called',this[_0x6a1f('0x9')][_0x4eae7f[_0x6a1f('0x29')]][_0x4eae7f['destuniqueid']]);}}catch(_0x25e8ef){logger[_0x6a1f('0x3b')]('[%s][voiceAgentReport][agentcalled]',_0x4eae7f[_0x6a1f('0x29')],util['inspect'](_0x25e8ef,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')]['syncAgentConnect']=function(_0x45b7d4){try{if(this['isNotNull'](_0x45b7d4)){if(this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]]){logger['debug'](_0x6a1f('0x3c'),_0x45b7d4[_0x6a1f('0x29')],util['inspect'](_0x45b7d4,{'showHidden':![],'depth':null}));for(var _0x5beb28 in this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]]){if(this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x6a1f('0x3d')](_0x5beb28)){if(_0x45b7d4[_0x6a1f('0x2b')]===_0x5beb28){logger['info'](_0x6a1f('0x3e'),_0x45b7d4[_0x6a1f('0x29')],_0x45b7d4[_0x6a1f('0x2a')],_0x45b7d4[_0x6a1f('0x2b')]);this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x3f')]=moment()[_0x6a1f('0x2f')](_0x6a1f('0x30'));this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28]['connectedlinename']=_0x45b7d4[_0x6a1f('0x40')];this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x41')]=_0x45b7d4[_0x6a1f('0x41')];this[_0x6a1f('0x9')][_0x45b7d4['uniqueid']][_0x5beb28][_0x6a1f('0x42')]=_0x45b7d4['destchannelstate'];this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x43')]=_0x45b7d4[_0x6a1f('0x43')];this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28]['holdtime']=_0x45b7d4[_0x6a1f('0x44')];this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x45')]=_0x6a1f('0x46');if(this[_0x6a1f('0xa')][this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x29')]]){var _0x292844=this['voiceChannels'][this['channels'][_0x45b7d4['uniqueid']][_0x5beb28][_0x6a1f('0x29')]][_0x6a1f('0x47')];this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x47')]=_0x292844;_0x45b7d4[_0x6a1f('0x47')]=_0x292844;}_['merge'](this[_0x6a1f('0xc')][_0x45b7d4['interface']],_[_0x6a1f('0x48')](_0x45b7d4,[_0x6a1f('0x32'),'destconnectedlinenum',_0x6a1f('0x47')]));logger['debug'](_0x6a1f('0x49'),_0x45b7d4[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x45b7d4[_0x6a1f('0x2b')]],{'showHidden':![],'depth':null}));ami['emit'](_0x6a1f('0x4a'),this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x45b7d4[_0x6a1f('0x2b')]]);logger[_0x6a1f('0x2c')](_0x6a1f('0x4b'),_0x45b7d4[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](this['channels'][_0x45b7d4[_0x6a1f('0x29')]][_0x45b7d4[_0x6a1f('0x2b')]],{'showHidden':![],'depth':null}));this[_0x6a1f('0x23')](util['format'](_0x6a1f('0x4c'),_0x45b7d4['membername']),_0x6a1f('0x4d'),this['channels'][_0x45b7d4[_0x6a1f('0x29')]][_0x45b7d4['destuniqueid']]);}else if(!this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x4e')]&&!this['channels'][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28]['agentcomplete']){logger[_0x6a1f('0x27')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x45b7d4['uniqueid'],this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28]['membername'],_0x5beb28);this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x4e')]=!![];this['channels'][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x4f')]=moment()[_0x6a1f('0x2f')](_0x6a1f('0x30'));this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28]['answeredelsewheredestinationuniqueid']=_0x45b7d4[_0x6a1f('0x2b')];this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x50')]=_0x45b7d4[_0x6a1f('0x2a')];this['channels'][_0x45b7d4['uniqueid']][_0x5beb28][_0x6a1f('0x45')]='answered_elsewhere';this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28][_0x6a1f('0x51')]=_0x6a1f('0x52');logger[_0x6a1f('0x2c')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x45b7d4[_0x6a1f('0x29')],util['inspect'](this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28],{'showHidden':![],'depth':null}));ami[_0x6a1f('0x23')](_0x6a1f('0x53'),this[_0x6a1f('0x9')][_0x45b7d4[_0x6a1f('0x29')]][_0x5beb28]);}}}}}}catch(_0x5af3c7){logger[_0x6a1f('0x3b')]('[%s][voiceAgentReport][agentconnect]',_0x45b7d4['uniqueid'],util['inspect'](_0x5af3c7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')][_0x6a1f('0x12')]=function(_0x5b686d){try{if(this[_0x6a1f('0x24')](_0x5b686d)){logger[_0x6a1f('0x2c')](_0x6a1f('0x54'),_0x5b686d['uniqueid'],util[_0x6a1f('0x2e')](_0x5b686d,{'showHidden':![],'depth':null}));if(this['channels'][_0x5b686d[_0x6a1f('0x29')]]&&this[_0x6a1f('0x9')][_0x5b686d[_0x6a1f('0x29')]][_0x5b686d['destuniqueid']]){logger[_0x6a1f('0x27')](_0x6a1f('0x55'),_0x5b686d[_0x6a1f('0x29')],_0x5b686d[_0x6a1f('0x2a')],_0x5b686d[_0x6a1f('0x2b')]);this[_0x6a1f('0x9')][_0x5b686d[_0x6a1f('0x29')]][_0x5b686d[_0x6a1f('0x2b')]][_0x6a1f('0x4e')]=!![];this[_0x6a1f('0x9')][_0x5b686d[_0x6a1f('0x29')]][_0x5b686d[_0x6a1f('0x2b')]][_0x6a1f('0x4f')]=moment()[_0x6a1f('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6a1f('0x9')][_0x5b686d[_0x6a1f('0x29')]][_0x5b686d['destuniqueid']][_0x6a1f('0x45')]=_0x6a1f('0x56');this[_0x6a1f('0x9')][_0x5b686d[_0x6a1f('0x29')]][_0x5b686d[_0x6a1f('0x2b')]][_0x6a1f('0x51')]=_0x6a1f('0x56');logger[_0x6a1f('0x2c')](_0x6a1f('0x57'),_0x5b686d['uniqueid'],util[_0x6a1f('0x2e')](this[_0x6a1f('0x9')][_0x5b686d['uniqueid']][_0x5b686d['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x6a1f('0x23')](_0x6a1f('0x58'),this[_0x6a1f('0x9')][_0x5b686d[_0x6a1f('0x29')]][_0x5b686d[_0x6a1f('0x2b')]]);}}}catch(_0x36419f){logger[_0x6a1f('0x3b')](_0x6a1f('0x59'),_0x5b686d['uniqueid'],util[_0x6a1f('0x2e')](_0x36419f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')]['syncQueueCallerAbandon']=function(_0x2a3a28){try{if(this[_0x6a1f('0x24')](_0x2a3a28)){logger[_0x6a1f('0x2c')](_0x6a1f('0x5a'),_0x2a3a28['uniqueid'],util[_0x6a1f('0x2e')](_0x2a3a28,{'showHidden':![],'depth':null}));if(this[_0x6a1f('0x9')][_0x2a3a28['uniqueid']]){for(var _0xdf0e07 in this[_0x6a1f('0x9')][_0x2a3a28['uniqueid']]){if(this['channels'][_0x2a3a28[_0x6a1f('0x29')]][_0x6a1f('0x3d')](_0xdf0e07)&&!this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07][_0x6a1f('0x4e')]&&!this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07]['agentcomplete']){logger[_0x6a1f('0x27')](_0x6a1f('0x5b'),_0x2a3a28[_0x6a1f('0x29')],this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07][_0x6a1f('0x2a')],_0xdf0e07);this['channels'][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07][_0x6a1f('0x4e')]=!![];this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07][_0x6a1f('0x4f')]=moment()[_0x6a1f('0x2f')](_0x6a1f('0x30'));this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07][_0x6a1f('0x45')]=_0x6a1f('0x5c');this[_0x6a1f('0x9')][_0x2a3a28['uniqueid']][_0xdf0e07][_0x6a1f('0x51')]=_0x6a1f('0x5c');logger[_0x6a1f('0x2c')](_0x6a1f('0x5d'),_0x2a3a28[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07],{'showHidden':![],'depth':null}));ami[_0x6a1f('0x23')](_0x6a1f('0x5e'),this[_0x6a1f('0x9')][_0x2a3a28[_0x6a1f('0x29')]][_0xdf0e07]);}}}}}catch(_0x280f9a){logger[_0x6a1f('0x3b')]('[%s][voiceAgentReport][queuecallerabandon]',_0x2a3a28[_0x6a1f('0x29')],util['inspect'](_0x280f9a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6a1f('0x16')]=function(_0x582024){try{if(this['isNotNull'](_0x582024)){logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x582024[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x582024,{'showHidden':![],'depth':null}));if(this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]]){for(var _0x311e61 in this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]]){if(this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x6a1f('0x3d')](_0x311e61)){if(this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61]['agentconnectAt']&&!this[_0x6a1f('0x9')][_0x582024['uniqueid']][_0x311e61][_0x6a1f('0x15')]){logger['info'](_0x6a1f('0x5f'),_0x582024[_0x6a1f('0x29')],this['channels'][_0x582024[_0x6a1f('0x29')]][_0x311e61][_0x6a1f('0x2a')],_0x311e61);this['channels'][_0x582024['uniqueid']][_0x311e61][_0x6a1f('0x15')]=!![];this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61][_0x6a1f('0x60')]=moment()[_0x6a1f('0x2f')](_0x6a1f('0x30'));this['channels'][_0x582024['uniqueid']][_0x311e61]['lastevent']='complete';this['channels'][_0x582024[_0x6a1f('0x29')]][_0x311e61][_0x6a1f('0x51')]=_0x582024[_0x6a1f('0x51')]==_0x6a1f('0x61')?_0x6a1f('0x62'):_0x582024[_0x6a1f('0x51')];this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61][_0x6a1f('0x63')]=_0x582024[_0x6a1f('0x63')];if(this['voiceQueues'][_0x582024['queue']]&&this[_0x6a1f('0xb')][_0x582024[_0x6a1f('0x32')]]['acw']){this[_0x6a1f('0x9')][_0x582024['uniqueid']][_0x311e61]['acwtime']=this[_0x6a1f('0xb')][_0x582024[_0x6a1f('0x32')]][_0x6a1f('0x64')];this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61][_0x6a1f('0x65')]=!![];}this[_0x6a1f('0xc')][_0x582024[_0x6a1f('0x66')]]=_['omit'](this['agents'][_0x582024[_0x6a1f('0x66')]],[_0x6a1f('0x32'),'destconnectedlinenum']);logger[_0x6a1f('0x2c')](_0x6a1f('0x67'),_0x582024['uniqueid'],util[_0x6a1f('0x2e')](this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61],{'showHidden':![],'depth':null}));ami[_0x6a1f('0x23')](_0x6a1f('0x68'),this[_0x6a1f('0x9')][_0x582024['uniqueid']][_0x311e61]);logger['debug'](_0x6a1f('0x69'),_0x582024[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61],{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',_0x582024[_0x6a1f('0x2a')]),_0x6a1f('0x6a'),this[_0x6a1f('0x9')][_0x582024[_0x6a1f('0x29')]][_0x311e61]);}}}}}}catch(_0x4a6fba){logger[_0x6a1f('0x3b')](_0x6a1f('0x6b'),_0x582024[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x4a6fba,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')]['syncVarSet']=function(_0x4ed7dc){try{if(this['isNotNull'](_0x4ed7dc)){logger[_0x6a1f('0x2c')]('[%s][voiceAgentReport][varset]\x20event:',_0x4ed7dc[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x4ed7dc,{'showHidden':![],'depth':null}));this[_0x6a1f('0x6c')](_0x4ed7dc[_0x6a1f('0x29')],_[_0x6a1f('0x6d')](_0x4ed7dc[_0x6a1f('0x6e')])[0x0],_0x4ed7dc[_0x6a1f('0x6f')]);if(this[_0x6a1f('0x9')][_0x4ed7dc[_0x6a1f('0x29')]]){for(var _0x143afc in this[_0x6a1f('0x9')][_0x4ed7dc[_0x6a1f('0x29')]]){if(this[_0x6a1f('0x9')][_0x4ed7dc[_0x6a1f('0x29')]][_0x6a1f('0x3d')](_0x143afc)){logger[_0x6a1f('0x27')](_0x6a1f('0x70'),_0x4ed7dc['uniqueid'],_0x143afc,_[_0x6a1f('0x6d')](_0x4ed7dc[_0x6a1f('0x6e')])[0x0],_0x4ed7dc[_0x6a1f('0x6f')]);if(_['isUndefined'](this[_0x6a1f('0x9')][_0x4ed7dc[_0x6a1f('0x29')]][_0x143afc][_0x6a1f('0xd')])){this[_0x6a1f('0x9')][_0x4ed7dc[_0x6a1f('0x29')]][_0x143afc][_0x6a1f('0xd')]={};}this[_0x6a1f('0x9')][_0x4ed7dc['uniqueid']][_0x143afc][_0x6a1f('0xd')]=this[_0x6a1f('0xd')][_0x4ed7dc['uniqueid']];}}}}}catch(_0x548f8c){logger[_0x6a1f('0x3b')]('[%s][voiceAgentReport][varset]',_0x4ed7dc[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x548f8c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')][_0x6a1f('0x6c')]=function(_0x461ead,_0x303fdb,_0x349140){var _0x2b8d9a=[_0x6a1f('0x71'),_0x6a1f('0x72'),_0x6a1f('0x73'),_0x6a1f('0x74'),_0x6a1f('0x75'),_0x6a1f('0x76'),_0x6a1f('0x77'),_0x6a1f('0x78'),'sipcallid',_0x6a1f('0x79'),_0x6a1f('0x7a'),_0x6a1f('0x7b'),_0x6a1f('0x7c'),_0x6a1f('0x7d'),_0x6a1f('0x7e'),_0x6a1f('0x7f'),'membername',_0x6a1f('0x80'),_0x6a1f('0x81')];if(!_['isNil'](_0x303fdb)&&!_[_0x6a1f('0x82')](_0x2b8d9a,_0x303fdb)){if(_[_0x6a1f('0x25')](this[_0x6a1f('0xd')][_0x461ead])){this[_0x6a1f('0xd')][_0x461ead]={};}this[_0x6a1f('0xd')][_0x461ead][_0x303fdb]=_0x349140;}};VoiceAgentReport[_0x6a1f('0x22')][_0x6a1f('0x1a')]=function(_0x1823d7){try{if(this[_0x6a1f('0x24')](_0x1823d7)){logger[_0x6a1f('0x2c')](_0x6a1f('0x83'),_0x1823d7[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x1823d7,{'showHidden':![],'depth':null}));if(this[_0x6a1f('0x9')][_0x1823d7['uniqueid']]){for(var _0x266db5 in this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]]){if(this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]][_0x6a1f('0x3d')](_0x266db5)){if(this['channels'][_0x1823d7[_0x6a1f('0x29')]][_0x266db5][_0x6a1f('0x51')]=='transfer'&&this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]][_0x266db5][_0x6a1f('0x15')]){logger[_0x6a1f('0x27')](_0x6a1f('0x84'),_0x1823d7[_0x6a1f('0x29')],_0x266db5);this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]][_0x266db5][_0x6a1f('0x60')]=moment()[_0x6a1f('0x2f')](_0x6a1f('0x30'));}}}logger[_0x6a1f('0x2c')](_0x6a1f('0x85'),_0x1823d7['uniqueid'],util[_0x6a1f('0x2e')](_[_0x6a1f('0x86')](this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]]),{'showHidden':![],'depth':null}));ami[_0x6a1f('0x23')](_0x6a1f('0x87'),_[_0x6a1f('0x86')](this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]]));delete this[_0x6a1f('0x9')][_0x1823d7[_0x6a1f('0x29')]];}if(this[_0x6a1f('0xd')][_0x1823d7[_0x6a1f('0x29')]]){delete this['variables'][_0x1823d7[_0x6a1f('0x29')]];}}}catch(_0x4d5d3f){logger['error']('[%s][voiceAgentReport][hangup]',_0x1823d7['uniqueid'],util['inspect'](_0x4d5d3f,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAttendedTransfer']=function(_0x1c8ca5){try{if(this[_0x6a1f('0x24')](_0x1c8ca5)){logger[_0x6a1f('0x2c')](_0x6a1f('0x88'),_0x1c8ca5[_0x6a1f('0x29')],util['inspect'](_0x1c8ca5,{'showHidden':![],'depth':null}));if(this['channels'][_0x1c8ca5[_0x6a1f('0x89')]]){for(var _0x5cc8eb in this['channels'][_0x1c8ca5[_0x6a1f('0x89')]]){if(this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x89')]]['hasOwnProperty'](_0x5cc8eb)){if(_0x1c8ca5[_0x6a1f('0x8a')]===_0x5cc8eb){logger[_0x6a1f('0x27')](_0x6a1f('0x8b'),_0x1c8ca5[_0x6a1f('0x29')],this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x89')]][_0x5cc8eb][_0x6a1f('0x2a')],_0x5cc8eb);var _0x25bb9f=moment();this[_0x6a1f('0x9')][_0x1c8ca5['transfereeuniqueid']][_0x5cc8eb][_0x6a1f('0x15')]=!![];this[_0x6a1f('0x9')][_0x1c8ca5['transfereeuniqueid']][_0x5cc8eb][_0x6a1f('0x60')]=moment()['format'](_0x6a1f('0x30'));this[_0x6a1f('0x9')][_0x1c8ca5['transfereeuniqueid']][_0x5cc8eb]['lastevent']=_0x6a1f('0x8c');this[_0x6a1f('0x9')][_0x1c8ca5['transfereeuniqueid']][_0x5cc8eb][_0x6a1f('0x51')]='transfer';this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x89')]][_0x5cc8eb]['talktime']=_0x25bb9f[_0x6a1f('0x8d')](this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x89')]][_0x5cc8eb][_0x6a1f('0x3f')],'seconds');}}}}if(this[_0x6a1f('0x9')][_0x1c8ca5['secondtransfereruniqueid']]){var _0x1049ab=this[_0x6a1f('0x9')][_0x1c8ca5['secondtransfereruniqueid']];this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x8e')]]=this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x89')]];this[_0x6a1f('0x9')][_0x1c8ca5[_0x6a1f('0x89')]]=_0x1049ab;}}}catch(_0x5ca9ff){logger[_0x6a1f('0x3b')](_0x6a1f('0x8f'),_0x1c8ca5[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x5ca9ff,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6a1f('0x21')]=function(_0x5363a9){try{if(this[_0x6a1f('0x24')](_0x5363a9)){logger['debug']('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x5363a9['uniqueid'],util['inspect'](_0x5363a9,{'showHidden':![],'depth':null}));if(this[_0x6a1f('0x9')][_0x5363a9['transfereeuniqueid']]){for(var _0x577529 in this['channels'][_0x5363a9[_0x6a1f('0x89')]]){if(this[_0x6a1f('0x9')][_0x5363a9['transfereeuniqueid']][_0x6a1f('0x3d')](_0x577529)){if(_0x5363a9[_0x6a1f('0x90')]===_0x577529){logger['info'](_0x6a1f('0x91'),_0x5363a9['uniqueid'],this[_0x6a1f('0x9')][_0x5363a9[_0x6a1f('0x89')]][_0x577529]['membername'],_0x577529);var _0x51b54d=moment();this[_0x6a1f('0x9')][_0x5363a9[_0x6a1f('0x89')]][_0x577529]['agentcomplete']=!![];this[_0x6a1f('0x9')][_0x5363a9[_0x6a1f('0x89')]][_0x577529][_0x6a1f('0x60')]=_0x51b54d;this[_0x6a1f('0x9')][_0x5363a9['transfereeuniqueid']][_0x577529][_0x6a1f('0x45')]=_0x6a1f('0x8c');this['channels'][_0x5363a9[_0x6a1f('0x89')]][_0x577529][_0x6a1f('0x51')]='transfer';this[_0x6a1f('0x9')][_0x5363a9[_0x6a1f('0x89')]][_0x577529][_0x6a1f('0x63')]=_0x51b54d[_0x6a1f('0x8d')](this[_0x6a1f('0x9')][_0x5363a9[_0x6a1f('0x89')]][_0x577529][_0x6a1f('0x3f')],_0x6a1f('0x92'));}}}}}}catch(_0x55ee04){logger[_0x6a1f('0x3b')](_0x6a1f('0x93'),_0x5363a9['uniqueid'],util[_0x6a1f('0x2e')](_0x55ee04,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')]['syncMusicOnHoldStart']=function(_0x19213d){var _0x39d567='';try{if(this[_0x6a1f('0x24')](_0x19213d)){logger['debug'](_0x6a1f('0x94'),_0x19213d[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x19213d,{'showHidden':![],'depth':null}));if(_0x19213d[_0x6a1f('0x95')]){_0x39d567=_0x19213d[_0x6a1f('0x95')][_0x6a1f('0x96')](0x0,_0x19213d[_0x6a1f('0x95')][_0x6a1f('0x97')]('-'));if(this[_0x6a1f('0xc')][_0x39d567]){logger[_0x6a1f('0x27')](_0x6a1f('0x98'),_0x19213d[_0x6a1f('0x29')],_0x39d567);this['agents'][_0x39d567][_0x6a1f('0x99')]=!![];}}}}catch(_0x601080){logger[_0x6a1f('0x3b')](_0x6a1f('0x9a'),_0x19213d[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x601080,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6a1f('0x22')][_0x6a1f('0x1e')]=function(_0x1d4550){var _0x556bfe='';try{if(this['isNotNull'](_0x1d4550)){logger[_0x6a1f('0x2c')](_0x6a1f('0x9b'),_0x1d4550[_0x6a1f('0x29')],util[_0x6a1f('0x2e')](_0x1d4550,{'showHidden':![],'depth':null}));if(_0x1d4550[_0x6a1f('0x95')]){_0x556bfe=_0x1d4550[_0x6a1f('0x95')][_0x6a1f('0x96')](0x0,_0x1d4550['channel']['lastIndexOf']('-'));if(this[_0x6a1f('0xc')][_0x556bfe]){logger[_0x6a1f('0x27')](_0x6a1f('0x9c'),_0x1d4550[_0x6a1f('0x29')],_0x556bfe);this[_0x6a1f('0xc')][_0x556bfe]['onhold']=![];}}}}catch(_0x44deb1){logger[_0x6a1f('0x3b')]('[%s][voiceAgentReport][musiconholdstop]',_0x1d4550[_0x6a1f('0x29')],util['inspect'](_0x44deb1,{'showHidden':![],'depth':null}));}};module[_0x6a1f('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+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(_0x1c18c1,_0x36352a){var _0x298118=function(_0x442a87){while(--_0x442a87){_0x1c18c1['push'](_0x1c18c1['shift']());}};_0x298118(++_0x36352a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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
index 74cff5a..194ecfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff05=['[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','answertime','omit','user:agentcomplete','resolve','then','transferType','undefined','isEmpty','stopRecordingOnTransfer','Action','StopMixMonitor','catch','destinationchannel','event','BlindTransfer','blindTransfers','type','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','transfertargetcalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','ATTENDED','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','transfercalleridnum','BLIND','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','util','path','ioredis','../../../config/logger','../ami','../rpc/setting','not_inuse','busy','ringing','ringinuse','set','queue','agi','playback','voicemail','NO\x20ANSWER','BUSY','FAILED','redis','socket.io-emitter','channels','agents','syncNewExten','bind','newexten','syncNewChannel','newstate','syncNewState','varset','hangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','error','inspect','isNotNull','isUndefined','prototype','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','linkedid','merge','keys','from-sip','channel','split','xcally-motion-preview','connectedlinenum','name','accountcode','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','format','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','pick','context','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','exten','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','lastdata','cdr(','match','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','holdtime','connectedlinename','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','.WAV','find','isNil','monitors','push','rec','syncVarSet','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','xmd-callerid','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','calleridpreview','sipcallid','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s'];(function(_0x29acb1,_0x13c989){var _0x34ee8b=function(_0x24a661){while(--_0x24a661){_0x29acb1['push'](_0x29acb1['shift']());}};_0x34ee8b(++_0x13c989);}(_0xff05,0x1ac));var _0x5ff0=function(_0x4ee65d,_0x1f3e64){_0x4ee65d=_0x4ee65d-0x0;var _0x5d09d0=_0xff05[_0x4ee65d];return _0x5d09d0;};'use strict';var BPromise=require(_0x5ff0('0x0'));var _=require(_0x5ff0('0x1'));var moment=require(_0x5ff0('0x2'));var util=require(_0x5ff0('0x3'));var path=require(_0x5ff0('0x4'));var Redis=require(_0x5ff0('0x5'));var config=require('../../../config/environment');var logger=require(_0x5ff0('0x6'))('ami');var ami=require(_0x5ff0('0x7'));var Channel=require('../model/channel');var RpcSetting=require(_0x5ff0('0x8'));var statusDesc=['unknown',_0x5ff0('0x9'),'inuse',_0x5ff0('0xa'),'invalid','unavailable',_0x5ff0('0xb'),_0x5ff0('0xc'),'onhold'];var applications=[_0x5ff0('0xd'),_0x5ff0('0xe'),_0x5ff0('0xf'),'dial',_0x5ff0('0x10'),_0x5ff0('0x11')];var dispositions=['NO\x20ANSWER','FAILED','FAILED','NO\x20ANSWER',_0x5ff0('0x12'),_0x5ff0('0x12'),'ANSWERED',_0x5ff0('0x13'),_0x5ff0('0x14'),_0x5ff0('0x14'),_0x5ff0('0x14')];var actions={};config['redis']=_['defaults'](config[_0x5ff0('0x15')],{'host':'localhost','port':0x18eb});var io=require(_0x5ff0('0x16'))(new Redis(config[_0x5ff0('0x15')]));function VoiceCallReport(_0x4facc8){this[_0x5ff0('0x17')]=_0x4facc8[_0x5ff0('0x17')];this[_0x5ff0('0x18')]=_0x4facc8[_0x5ff0('0x18')];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0x5ff0('0x19')][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x1b'),this[_0x5ff0('0x19')][_0x5ff0('0x1a')](this));ami['on']('newchannel',this[_0x5ff0('0x1c')][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x1d'),this[_0x5ff0('0x1e')][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x1f'),this['syncVarSet']['bind'](this));ami['on'](_0x5ff0('0x20'),this['syncHangup'][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x21'),this[_0x5ff0('0x22')][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x23'),this[_0x5ff0('0x24')]['bind'](this));ami['on']('blindtransfer',this[_0x5ff0('0x25')][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x26'),this['syncMusicOnHoldStart'][_0x5ff0('0x1a')](this));ami['on'](_0x5ff0('0x27'),this['syncMusicOnHoldStop']['bind'](this));try{logger[_0x5ff0('0x28')](_0x5ff0('0x29'));ami['actionCoreShowChannels']();}catch(_0x14b86e){logger[_0x5ff0('0x2a')]('[voiceCallReport][coreshowchannels]',util[_0x5ff0('0x2b')](_0x14b86e,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x5ff0('0x2c')]=function(_0x5ee0c0){return _0x5ee0c0!==null&&!_[_0x5ff0('0x2d')](_0x5ee0c0);};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0x2f')]=function(_0x409b37,_0x3cf705,_0xd8b861){io['to'](_0x409b37)['emit'](_0x3cf705,_0xd8b861);};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0x22')]=function(_0x35fda4){try{if(this['isNotNull'](_0x35fda4)){logger[_0x5ff0('0x28')](_0x5ff0('0x30'),_0x35fda4['uniqueid'],_0x35fda4[_0x5ff0('0x31')],_0x35fda4[_0x5ff0('0x32')]);logger[_0x5ff0('0x33')](_0x5ff0('0x34'),_0x35fda4[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x35fda4,{'showHidden':![],'depth':null}));if(_0x35fda4[_0x5ff0('0x35')]===_0x35fda4[_0x5ff0('0x36')]){if(!_[_0x5ff0('0x2d')](this['channels'][_0x35fda4[_0x5ff0('0x35')]])){_[_0x5ff0('0x37')](this[_0x5ff0('0x17')][_0x35fda4[_0x5ff0('0x35')]],_['pick'](_0x35fda4,_[_0x5ff0('0x38')](this[_0x5ff0('0x17')][_0x35fda4['uniqueid']])));}}if(_0x35fda4['context']===_0x5ff0('0x39')){if(this[_0x5ff0('0x18')][_0x35fda4[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]){if(_0x35fda4['exten']==_0x5ff0('0x3c')){this['agents'][_0x35fda4[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]['destconnectedlinenum']=_0x35fda4[_0x5ff0('0x3d')];this[_0x5ff0('0x2f')](util['format']('user:%s',this['agents'][_0x35fda4[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3e')]),'user:agentconnect',{'destaccountcode':this['agents'][_0x35fda4[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3f')],'destconnectedlinenum':_0x35fda4[_0x5ff0('0x3d')]});}}}}}catch(_0x3bc517){logger[_0x5ff0('0x2a')]('[%s][voiceCallReport][newcallerid]',_0x35fda4['uniqueid'],util[_0x5ff0('0x2b')](_0x3bc517,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x5ff0('0x1c')]=function(_0x289a61){try{if(this[_0x5ff0('0x2c')](_0x289a61)){logger['debug'](_0x5ff0('0x40'),_0x289a61[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x289a61,{'showHidden':![],'depth':null}));if(_0x289a61[_0x5ff0('0x35')]===_0x289a61[_0x5ff0('0x36')]&&_0x289a61[_0x5ff0('0x3a')]!=_0x5ff0('0x41')){if(_[_0x5ff0('0x2d')](this['channels'][_0x289a61[_0x5ff0('0x35')]])){logger['info'](_0x5ff0('0x42'),_0x289a61[_0x5ff0('0x35')],_0x289a61['context'],_0x289a61['exten']);this['channels'][_0x289a61[_0x5ff0('0x35')]]=new Channel();this[_0x5ff0('0x17')][_0x289a61['uniqueid']][_0x5ff0('0x43')]=moment()[_0x5ff0('0x44')](_0x5ff0('0x45'));this['channels'][_0x289a61[_0x5ff0('0x35')]][_0x5ff0('0x46')]=dispositions[_[_0x5ff0('0x47')](_0x289a61[_0x5ff0('0x48')])];_['merge'](this[_0x5ff0('0x17')][_0x289a61[_0x5ff0('0x35')]],_[_0x5ff0('0x49')](_0x289a61,_[_0x5ff0('0x38')](this[_0x5ff0('0x17')][_0x289a61['uniqueid']])));if(_0x289a61[_0x5ff0('0x4a')]===_0x5ff0('0x39')){if(this['agents'][_0x289a61[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]){if(_['isUndefined'](this[_0x5ff0('0x18')][_0x289a61[_0x5ff0('0x3a')]['split']('-')[0x0]][_0x5ff0('0x4b')])){this['agents'][_0x289a61[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x4b')]=_0x289a61['exten'];logger[_0x5ff0('0x33')](_0x5ff0('0x4c'),_0x289a61[_0x5ff0('0x35')],util[_0x5ff0('0x2b')]({'destaccountcode':this[_0x5ff0('0x18')][_0x289a61['channel'][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3f')],'destconnectedlinenum':_0x289a61[_0x5ff0('0x4d')]},{'showHidden':![],'depth':null}));this[_0x5ff0('0x2f')](util['format']('user:%s',this[_0x5ff0('0x18')][_0x289a61['channel'][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3e')]),'user:agentconnect',{'destaccountcode':this[_0x5ff0('0x18')][_0x289a61[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3f')],'destconnectedlinenum':_0x289a61[_0x5ff0('0x4d')]});}}}}}}}catch(_0x19b055){logger[_0x5ff0('0x2a')]('[%s][voiceCallReport][newchannel]',_0x289a61[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x19b055,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')]['syncNewExten']=function(_0x418f62){try{if(this['isNotNull'](_0x418f62)){logger['debug'](_0x5ff0('0x4e'),_0x418f62['uniqueid'],util[_0x5ff0('0x2b')](_0x418f62,{'showHidden':![],'depth':null}));if(_0x418f62[_0x5ff0('0x35')]===_0x418f62[_0x5ff0('0x36')]&&_0x418f62[_0x5ff0('0x4d')]!='h'&&_0x418f62[_0x5ff0('0x3a')]!=_0x5ff0('0x41')){_0x418f62[_0x5ff0('0x4f')]=_0x418f62[_0x5ff0('0x4f')][_0x5ff0('0x50')]();_0x418f62[_0x5ff0('0x51')]=_0x418f62['appdata']&&_0x418f62[_0x5ff0('0x52')]['startsWith'](_0x5ff0('0x53'))?_0x418f62[_0x5ff0('0x52')]:(_0x418f62['appdata']||_0x418f62[_0x5ff0('0x51')])[_0x5ff0('0x50')]();logger[_0x5ff0('0x28')](_0x5ff0('0x54'),_0x418f62[_0x5ff0('0x35')],_0x418f62[_0x5ff0('0x4f')],_0x418f62[_0x5ff0('0x51')]);if(_[_0x5ff0('0x2d')](this['channels'][_0x418f62['uniqueid']])){this[_0x5ff0('0x17')][_0x418f62[_0x5ff0('0x35')]]=new Channel();this['channels'][_0x418f62[_0x5ff0('0x35')]][_0x5ff0('0x43')]=_0x418f62[_0x5ff0('0x55')]?moment()[_0x5ff0('0x56')](moment[_0x5ff0('0x55')](_0x418f62[_0x5ff0('0x55')])['seconds'](),_0x5ff0('0x57'))[_0x5ff0('0x44')](_0x5ff0('0x45')):moment()[_0x5ff0('0x44')](_0x5ff0('0x45'));this['channels'][_0x418f62['uniqueid']][_0x5ff0('0x46')]=_0x5ff0('0x12');}_[_0x5ff0('0x37')](this[_0x5ff0('0x17')][_0x418f62[_0x5ff0('0x35')]],_[_0x5ff0('0x49')](_0x418f62,_[_0x5ff0('0x38')](this[_0x5ff0('0x17')][_0x418f62[_0x5ff0('0x35')]])));if(_[_0x5ff0('0x58')](applications,_0x418f62['application'])){this[_0x5ff0('0x17')][_0x418f62['uniqueid']][_0x5ff0('0x59')]=_0x418f62[_0x5ff0('0x4f')];this['channels'][_0x418f62['uniqueid']][_0x5ff0('0x5a')]=_0x418f62[_0x5ff0('0x51')];if(_0x418f62[_0x5ff0('0x4f')]===_0x5ff0('0xd')&&_['startsWith'](_0x418f62['applicationdata'][_0x5ff0('0x50')](),_0x5ff0('0x5b'))){var _0xe1c2c3=_0x418f62[_0x5ff0('0x51')][_0x5ff0('0x3b')]('=');var _0x329e2b=_0xe1c2c3[0x0][_0x5ff0('0x50')]()[_0x5ff0('0x5c')](/cdr\((.*)\)/);if(_0x329e2b){this[_0x5ff0('0x17')][_0x418f62['uniqueid']][_0x329e2b[0x1]]=_0xe1c2c3[0x1];}}else if(_0x418f62[_0x5ff0('0x4f')]===_0x5ff0('0xe')){this[_0x5ff0('0x17')][_0x418f62[_0x5ff0('0x35')]][_0x5ff0('0xe')]=_0x418f62[_0x5ff0('0x51')][_0x5ff0('0x3b')](',')[0x0];}}}}}catch(_0x965ef6){logger[_0x5ff0('0x2a')]('[%s][voiceCallReport][newexten]',_0x418f62[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x965ef6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')]['syncNewState']=function(_0x4ba837){try{if(this[_0x5ff0('0x2c')](_0x4ba837)){logger[_0x5ff0('0x28')](_0x5ff0('0x5d'),_0x4ba837[_0x5ff0('0x35')],_0x4ba837[_0x5ff0('0x36')],_0x4ba837[_0x5ff0('0x31')],_0x4ba837[_0x5ff0('0x32')]);logger['debug']('[%s][voiceCallReport][newstate]\x20event:',_0x4ba837[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x4ba837,{'showHidden':![],'depth':null}));if(_0x4ba837[_0x5ff0('0x35')]!==_0x4ba837[_0x5ff0('0x36')]){if(this['channels'][_0x4ba837[_0x5ff0('0x36')]]){if(_0x4ba837[_0x5ff0('0x48')]==='6'){if(!this['channels'][_0x4ba837[_0x5ff0('0x36')]][_0x5ff0('0x5e')]){var _0x4ecf38=moment();this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x36')]]['answered']=!![];this['channels'][_0x4ba837[_0x5ff0('0x36')]]['answertime']=_0x4ecf38['format'](_0x5ff0('0x45'));if(this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x36')]][_0x5ff0('0x43')]){this[_0x5ff0('0x17')][_0x4ba837['linkedid']][_0x5ff0('0x5f')]=_0x4ecf38['diff'](this['channels'][_0x4ba837[_0x5ff0('0x36')]][_0x5ff0('0x43')],_0x5ff0('0x57'));}}this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x36')]]['linkedid']=_0x4ba837[_0x5ff0('0x35')];if(_0x4ba837[_0x5ff0('0x32')]!==_0x5ff0('0x3c')){this[_0x5ff0('0x17')][_0x4ba837['linkedid']][_0x5ff0('0x3d')]=_0x4ba837[_0x5ff0('0x32')];}this['channels'][_0x4ba837['linkedid']][_0x5ff0('0x60')]=_0x4ba837[_0x5ff0('0x31')];this['channels'][_0x4ba837['linkedid']]['destinationchannel']=_0x4ba837['channel'];this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x36')]][_0x5ff0('0x46')]=dispositions[_[_0x5ff0('0x47')](_0x4ba837[_0x5ff0('0x48')])];if(this[_0x5ff0('0x18')][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]){this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x36')]]['UserId']=this[_0x5ff0('0x18')][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]['id'];this['channels'][_0x4ba837[_0x5ff0('0x36')]][_0x5ff0('0x61')]=this[_0x5ff0('0x18')][_0x4ba837['channel']['split']('-')[0x0]][_0x5ff0('0x3e')];}}}}else{if(this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x35')]]){if(_0x4ba837[_0x5ff0('0x48')]==='6'){if(this['agents'][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]){this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x35')]]['UserId']=this[_0x5ff0('0x18')][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]['id'];this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x35')]][_0x5ff0('0x61')]=this[_0x5ff0('0x18')][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3e')];}}}}if(_0x4ba837[_0x5ff0('0x48')]==='6'&&_0x4ba837['context']===_0x5ff0('0x39')){if(this[_0x5ff0('0x18')][_0x4ba837['channel'][_0x5ff0('0x3b')]('-')[0x0]]){this['agents'][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x4b')]=_0x4ba837['exten'];var _0x1e7fdd;if(this[_0x5ff0('0x17')][_0x4ba837['uniqueid']])_0x1e7fdd=this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x35')]]['routealias'];else if(this['channels'][_0x4ba837[_0x5ff0('0x36')]])_0x1e7fdd=this[_0x5ff0('0x17')][_0x4ba837[_0x5ff0('0x36')]][_0x5ff0('0x62')];logger[_0x5ff0('0x33')](_0x5ff0('0x63'),_0x4ba837[_0x5ff0('0x35')],util['inspect']({'destaccountcode':this[_0x5ff0('0x18')][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4ba837[_0x5ff0('0x4d')],'routealias':_0x1e7fdd},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x5ff0('0x64'),this['agents'][_0x4ba837[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3e')]),_0x5ff0('0x65'),{'destaccountcode':this[_0x5ff0('0x18')][_0x4ba837[_0x5ff0('0x3a')]['split']('-')[0x0]][_0x5ff0('0x3f')],'destconnectedlinenum':_0x4ba837['exten'],'routealias':_0x1e7fdd});}}}}catch(_0x205ddb){logger[_0x5ff0('0x2a')](_0x5ff0('0x66'),_0x4ba837[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x205ddb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0x67')]=function(_0x5d2a24,_0x1cd2ae){try{if(this[_0x5ff0('0x17')][_0x5d2a24]){logger[_0x5ff0('0x28')](_0x5ff0('0x68'),_0x5d2a24,_0x1cd2ae);this[_0x5ff0('0x17')][_0x5d2a24][_0x5ff0('0x69')]=!![];if(_[_0x5ff0('0x6a')](_0x1cd2ae,'.wav49')){_0x1cd2ae=_0x1cd2ae['replace'](_0x5ff0('0x6b'),_0x5ff0('0x6c'));}this[_0x5ff0('0x17')][_0x5d2a24]['monitorFilename']=_0x1cd2ae;var _0x513771=_[_0x5ff0('0x6d')](this[_0x5ff0('0x17')][_0x5d2a24]['monitors'],{'filename':_0x1cd2ae});if(_[_0x5ff0('0x6e')](_0x513771)){this[_0x5ff0('0x17')][_0x5d2a24][_0x5ff0('0x6f')][_0x5ff0('0x70')]({'filename':_0x1cd2ae,'createdAt':moment()[_0x5ff0('0x44')](_0x5ff0('0x45')),'mixmonitorid':'','status':_0x5ff0('0x71')});}}}catch(_0x11c5d2){logger[_0x5ff0('0x2a')]('[%s][voiceCallReport][mixMonitorFilename]',_0x5d2a24,util[_0x5ff0('0x2b')](_0x11c5d2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0x72')]=function(_0x1cb945){try{if(this[_0x5ff0('0x2c')](_0x1cb945)){logger[_0x5ff0('0x33')](_0x5ff0('0x73'),_0x1cb945[_0x5ff0('0x35')],util['inspect'](_0x1cb945,{'showHidden':![],'depth':null}));if(this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]]&&_0x1cb945[_0x5ff0('0x3a')]!='OutgoingSpoolFailed'){if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')])){if(this[_0x5ff0('0x2c')](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x75')])){logger[_0x5ff0('0x28')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x1cb945[_0x5ff0('0x35')],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x67')](_0x1cb945[_0x5ff0('0x35')],_0x1cb945['value']);}else if(this[_0x5ff0('0x2c')](_0x1cb945[_0x5ff0('0x74')]['xmd-phone'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x1cb945['uniqueid'],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]][_0x5ff0('0x32')]=_0x1cb945[_0x5ff0('0x76')];}else if(this[_0x5ff0('0x2c')](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x77')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x1cb945[_0x5ff0('0x35')],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]]['callerid']=_0x1cb945[_0x5ff0('0x76')];}else if(this[_0x5ff0('0x2c')](_0x1cb945[_0x5ff0('0x74')]['xmd-cdrtype'])){logger[_0x5ff0('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x1cb945['uniqueid'],_0x1cb945[_0x5ff0('0x76')]);this['channels'][_0x1cb945[_0x5ff0('0x35')]]['type']=_0x1cb945[_0x5ff0('0x76')];}else if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x78')])){logger[_0x5ff0('0x28')](_0x5ff0('0x79'),_0x1cb945[_0x5ff0('0x35')],_0x1cb945[_0x5ff0('0x76')]['split'](',')[0x0]);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]][_0x5ff0('0xe')]=_0x1cb945[_0x5ff0('0x76')][_0x5ff0('0x3b')](',')[0x0];}else if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x7a')])){logger[_0x5ff0('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x1cb945[_0x5ff0('0x35')],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]]['originatecalleridnum']=_0x1cb945[_0x5ff0('0x76')];}else if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x7b')])){logger[_0x5ff0('0x28')](_0x5ff0('0x7c'),_0x1cb945[_0x5ff0('0x35')],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x17')][_0x1cb945['uniqueid']][_0x5ff0('0x7d')]=_0x1cb945['value'];}else if(this[_0x5ff0('0x2c')](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x7e')])){logger[_0x5ff0('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x1cb945[_0x5ff0('0x35')],_0x1cb945['value']);this[_0x5ff0('0x17')][_0x1cb945['uniqueid']][_0x5ff0('0x7f')]=_0x1cb945['value'];}else if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')]['xmcs-queue'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x1cb945['uniqueid'],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]][_0x5ff0('0xe')]=_0x1cb945[_0x5ff0('0x76')];}else if(this[_0x5ff0('0x2c')](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x80')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x1cb945[_0x5ff0('0x35')],_0x1cb945['value']);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x35')]]['sipcalluniqueid']=_0x1cb945[_0x5ff0('0x76')];}}}else if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x75')])){if(_0x1cb945[_0x5ff0('0x76')]){var _0x1ed676=path['parse'](_0x1cb945[_0x5ff0('0x76')])[_0x5ff0('0x3e')];logger[_0x5ff0('0x28')](_0x5ff0('0x81'),_0x1ed676,_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x67')](_0x1ed676,_0x1cb945['value']);}}else if(this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x36')]]){if(this[_0x5ff0('0x2c')](_0x1cb945['variable'])){if(this['isNotNull'](_0x1cb945[_0x5ff0('0x74')][_0x5ff0('0x80')])){logger[_0x5ff0('0x28')](_0x5ff0('0x82'),_0x1cb945[_0x5ff0('0x36')],_0x1cb945[_0x5ff0('0x76')]);this[_0x5ff0('0x17')][_0x1cb945[_0x5ff0('0x36')]][_0x5ff0('0x83')]=_0x1cb945['value'];}}}}}catch(_0x461b9c){logger[_0x5ff0('0x2a')](_0x5ff0('0x84'),_0x1cb945[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x461b9c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0x85')]=function(_0x28b021){try{if(this[_0x5ff0('0x2c')](_0x28b021)){logger[_0x5ff0('0x33')](_0x5ff0('0x86'),_0x28b021[_0x5ff0('0x35')],util['inspect'](_0x28b021,{'showHidden':![],'depth':null}));if(this[_0x5ff0('0x17')][_0x28b021['uniqueid']]){logger['info'](_0x5ff0('0x87'),_0x28b021[_0x5ff0('0x35')],_0x28b021[_0x5ff0('0x88')]);var _0x1bd53c=moment();this['channels'][_0x28b021['uniqueid']]['endtime']=_0x1bd53c[_0x5ff0('0x44')](_0x5ff0('0x45'));this['channels'][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x55')]=_0x1bd53c['diff'](this[_0x5ff0('0x17')][_0x28b021['uniqueid']][_0x5ff0('0x43')],_0x5ff0('0x57'));if(this[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x5e')]){this[_0x5ff0('0x17')][_0x28b021['uniqueid']][_0x5ff0('0x89')]=_0x1bd53c['diff'](this[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x8a')],'seconds');this[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]]['holdtime']=this[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x55')]-this['channels'][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x89')];}if(_0x28b021[_0x5ff0('0x4a')]==='from-sip'){if(this['agents'][_0x28b021[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]){this['agents'][_0x28b021['channel'][_0x5ff0('0x3b')]('-')[0x0]]=_[_0x5ff0('0x8b')](this[_0x5ff0('0x18')][_0x28b021[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]],['destconnectedlinenum']);logger[_0x5ff0('0x33')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x28b021[_0x5ff0('0x35')],util[_0x5ff0('0x2b')]({'id':this[_0x5ff0('0x18')][_0x28b021['channel'][_0x5ff0('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x5ff0('0x18')][_0x28b021[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3f')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x5ff0('0x64'),this[_0x5ff0('0x18')][_0x28b021[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]]['name']),_0x5ff0('0x8c'),{'id':this[_0x5ff0('0x18')][_0x28b021['channel'][_0x5ff0('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x5ff0('0x18')][_0x28b021[_0x5ff0('0x3a')][_0x5ff0('0x3b')]('-')[0x0]][_0x5ff0('0x3f')]});}}var _0x46714f=this;Promise[_0x5ff0('0x8d')]()[_0x5ff0('0x8e')](function(){var _0xa16dff=_0x46714f[_0x5ff0('0x17')][_0x28b021['uniqueid']];if(typeof _0xa16dff[_0x5ff0('0x8f')]===_0x5ff0('0x90'))return;if(_[_0x5ff0('0x91')](_0xa16dff[_0x5ff0('0x6f')]))return;return RpcSetting['getSettings']()[_0x5ff0('0x8e')](function(_0x1e00b0){if(!_0x1e00b0[_0x5ff0('0x92')])return;return Promise[_0x5ff0('0x8d')]()['then'](function(){return ami[_0x5ff0('0x93')]({'action':_0x5ff0('0x94'),'channel':_0xa16dff['channel']})[_0x5ff0('0x95')](function(){});})[_0x5ff0('0x8e')](function(){return ami['Action']({'action':_0x5ff0('0x94'),'channel':_0xa16dff[_0x5ff0('0x96')]})[_0x5ff0('0x95')](function(){})['finally'](function(){var _0x32af1b=_0x46714f[_0x5ff0('0x18')][_0xa16dff[_0x5ff0('0x96')][_0x5ff0('0x3b')]('-')[0x0]];if(!_0x32af1b)return;io[_0x5ff0('0x2f')]('webbar:stopmonitors',{'agentId':_0x32af1b['id'],'uniqueid':_0xa16dff[_0x5ff0('0x35')]});});});});})['then'](function(){if(_0x28b021[_0x5ff0('0x97')]===_0x5ff0('0x98')){_0x46714f[_0x5ff0('0x99')][_0x28b021['uniqueid']]=_0x46714f[_0x5ff0('0x17')][_0x28b021['uniqueid']];}else{if(_0x46714f[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x9a')]===_0x5ff0('0x9b')&&_0x46714f[_0x5ff0('0x99')][_0x28b021[_0x5ff0('0x35')]]){_0x46714f[_0x5ff0('0x17')][_0x28b021['uniqueid']]['uniqueid']=[_0x46714f[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]][_0x5ff0('0x36')],_0x46714f[_0x5ff0('0x17')][_0x28b021['uniqueid']][_0x5ff0('0x36')]=_0x46714f['channels'][_0x28b021[_0x5ff0('0x35')]]['uniqueid']][0x0];delete _0x46714f[_0x5ff0('0x99')][_0x28b021[_0x5ff0('0x35')]];}}logger[_0x5ff0('0x33')](_0x5ff0('0x9c'),_0x28b021['uniqueid'],util[_0x5ff0('0x2b')](_0x46714f['channels'][_0x28b021[_0x5ff0('0x35')]],{'showHidden':![],'depth':null}));ami[_0x5ff0('0x2f')](_0x5ff0('0x9d'),_0x46714f[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]]);delete _0x46714f[_0x5ff0('0x17')][_0x28b021[_0x5ff0('0x35')]];});}}}catch(_0x27342d){logger[_0x5ff0('0x2a')](_0x5ff0('0x9e'),_0x28b021['uniqueid'],util[_0x5ff0('0x2b')](_0x27342d,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncAttendedTransfer']=function(_0x4c2f8f){try{if(this[_0x5ff0('0x2c')](_0x4c2f8f)){logger['info'](_0x5ff0('0x9f'),_0x4c2f8f['uniqueid'],_0x4c2f8f[_0x5ff0('0xa0')],_0x4c2f8f['transfertargetcalleridnum']);logger[_0x5ff0('0x33')](_0x5ff0('0xa1'),_0x4c2f8f[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x4c2f8f,{'showHidden':![],'depth':null}));if(this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa2')]]){this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa2')]]['transfercalleridnum']=_0x4c2f8f[_0x5ff0('0xa0')];this['channels'][_0x4c2f8f[_0x5ff0('0xa2')]][_0x5ff0('0xa3')]=_0x4c2f8f['transfertargetcalleridnum'];if(this['channels'][_0x4c2f8f[_0x5ff0('0xa4')]]){var _0x20ebba=this['channels'][_0x4c2f8f[_0x5ff0('0xa4')]];this['channels'][_0x4c2f8f['secondtransfereruniqueid']]=this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa2')]];this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa2')]]=_0x20ebba;}}else if(this['channels'][_0x4c2f8f[_0x5ff0('0xa5')]]){this['channels'][_0x4c2f8f[_0x5ff0('0xa5')]]['transfercalleridnum']=_0x4c2f8f[_0x5ff0('0xa0')];this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa5')]]['transferconnectedlinenum']=_0x4c2f8f[_0x5ff0('0xa6')];if(this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa7')]]){var _0x20ebba=this['channels'][_0x4c2f8f['origtransfereruniqueid']];this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa7')]]=this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa5')]];this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa5')]]=_0x20ebba;}}if((this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa7')]]||this['channels'][_0x4c2f8f[_0x5ff0('0xa8')]])&&this[_0x5ff0('0x17')][_0x4c2f8f['secondtransfereruniqueid']]){var _0x6c2578=_[_0x5ff0('0xa9')]([this[_0x5ff0('0x17')][_0x4c2f8f['origtransfereruniqueid']],this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa8')]],this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa4')]]],function(_0x8dd34d){return _0x8dd34d&&_0x8dd34d[_0x5ff0('0x9a')]===_0x5ff0('0x9b')&&_0x8dd34d['routeid'];});if(_0x6c2578){if(this['channels'][_0x4c2f8f[_0x5ff0('0xa7')]])this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa7')]][_0x5ff0('0x8f')]=_0x5ff0('0xaa');if(this[_0x5ff0('0x17')][_0x4c2f8f[_0x5ff0('0xa8')]])this['channels'][_0x4c2f8f[_0x5ff0('0xa8')]]['transferType']=_0x5ff0('0xaa');this['channels'][_0x4c2f8f[_0x5ff0('0xa4')]][_0x5ff0('0x8f')]=_0x5ff0('0xaa');}}}}catch(_0x2de688){logger[_0x5ff0('0x2a')]('[%s][voiceCallReport][attendedtransfer]',_0x4c2f8f['uniqueid'],util[_0x5ff0('0x2b')](_0x2de688,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0x25')]=function(_0xd9b3a5){try{if(this['isNotNull'](_0xd9b3a5)){logger[_0x5ff0('0x28')](_0x5ff0('0xab'),_0xd9b3a5['uniqueid'],_0xd9b3a5[_0x5ff0('0xac')],_0xd9b3a5[_0x5ff0('0xad')]);logger[_0x5ff0('0x33')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0xd9b3a5[_0x5ff0('0x35')],util['inspect'](_0xd9b3a5,{'showHidden':![],'depth':null}));if(this[_0x5ff0('0x17')][_0xd9b3a5['transfereeuniqueid']]){this['channels'][_0xd9b3a5[_0x5ff0('0xa2')]][_0x5ff0('0xae')]=_0xd9b3a5[_0x5ff0('0xac')];this['channels'][_0xd9b3a5[_0x5ff0('0xa2')]][_0x5ff0('0xa3')]=_0xd9b3a5[_0x5ff0('0xad')];this[_0x5ff0('0x17')][_0xd9b3a5[_0x5ff0('0xa2')]]['transferType']=_0x5ff0('0xaf');this[_0x5ff0('0x85')]({'event':'BlindTransfer','uniqueid':_0xd9b3a5[_0x5ff0('0xa2')],'context':_0xd9b3a5[_0x5ff0('0x4a')],'channel':_0xd9b3a5[_0x5ff0('0xb0')]});}else{this[_0x5ff0('0x17')][_0xd9b3a5['transfereruniqueid']]['transferType']=_0x5ff0('0xaf');}}}catch(_0x2e938c){logger[_0x5ff0('0x2a')]('[%s][voiceCallReport][blindtransfer]',_0xd9b3a5['uniqueid'],util[_0x5ff0('0x2b')](_0x2e938c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')]['syncMusicOnHoldStart']=function(_0x1ac983){try{if(this['isNotNull'](_0x1ac983)){logger['debug'](_0x5ff0('0xb1'),_0x1ac983[_0x5ff0('0x35')],util['inspect'](_0x1ac983,{'showHidden':![],'depth':null}));if(this[_0x5ff0('0x17')][_0x1ac983[_0x5ff0('0x35')]]){if(!_[_0x5ff0('0x6e')](this[_0x5ff0('0x17')][_0x1ac983[_0x5ff0('0x35')]]['answertime'])){this[_0x5ff0('0x17')][_0x1ac983['uniqueid']][_0x5ff0('0xb2')]=moment()[_0x5ff0('0x44')](_0x5ff0('0x45'));logger['info'](_0x5ff0('0xb3'),_0x1ac983[_0x5ff0('0x35')],this['channels'][_0x1ac983[_0x5ff0('0x35')]][_0x5ff0('0xb2')]);}}}}catch(_0x58ada8){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x1ac983[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x58ada8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5ff0('0x2e')][_0x5ff0('0xb4')]=function(_0x303364){try{if(this[_0x5ff0('0x2c')](_0x303364)){logger[_0x5ff0('0x33')](_0x5ff0('0xb5'),_0x303364[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x303364,{'showHidden':![],'depth':null}));if(this[_0x5ff0('0x17')][_0x303364[_0x5ff0('0x35')]]){if(!_['isNil'](this[_0x5ff0('0x17')][_0x303364[_0x5ff0('0x35')]][_0x5ff0('0xb2')])){this['channels'][_0x303364[_0x5ff0('0x35')]][_0x5ff0('0xb6')]+=moment()['milliseconds'](0x0)['diff'](this['channels'][_0x303364[_0x5ff0('0x35')]][_0x5ff0('0xb2')],_0x5ff0('0x57'));logger[_0x5ff0('0x28')](_0x5ff0('0xb7'),_0x303364[_0x5ff0('0x35')],this[_0x5ff0('0x17')][_0x303364['uniqueid']][_0x5ff0('0xb6')]);delete this[_0x5ff0('0x17')][_0x303364[_0x5ff0('0x35')]][_0x5ff0('0xb2')];}}}}catch(_0x14527e){logger[_0x5ff0('0x2a')](_0x5ff0('0xb8'),_0x303364[_0x5ff0('0x35')],util[_0x5ff0('0x2b')](_0x14527e,{'showHidden':![],'depth':null}));}};module[_0x5ff0('0xb9')]=VoiceCallReport;
\ No newline at end of file
+var _0x0928=['includes','lastapplication','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','monitor','.wav49','replace','.WAV','find','monitors','isNil','push','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%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','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','resolve','then','isEmpty','stopRecordingOnTransfer','catch','StopMixMonitor','destinationchannel','finally','webbar:stopmonitors','event','outbound','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','transferType','ATTENDED','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','extension','BLIND','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','mohtime','exports','bluebird','moment','util','path','ami','../ami','../rpc/setting','unknown','not_inuse','inuse','busy','invalid','ringinuse','onhold','set','queue','dial','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','redis','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','isNotNull','uniqueid','calleridname','calleridnum','merge','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','user:%s','user:agentconnect','accountcode','debug','[%s][voiceCallReport][newchannel]\x20event:','linkedid','OutgoingSpoolFailed','starttime','format','toNumber','channelstate','pick','name','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','disposition'];(function(_0x503492,_0x158832){var _0x484e1f=function(_0x1dcc1c){while(--_0x1dcc1c){_0x503492['push'](_0x503492['shift']());}};_0x484e1f(++_0x158832);}(_0x0928,0x12e));var _0x8092=function(_0x6b1d32,_0x26ec16){_0x6b1d32=_0x6b1d32-0x0;var _0x33d5d1=_0x0928[_0x6b1d32];return _0x33d5d1;};'use strict';var BPromise=require(_0x8092('0x0'));var _=require('lodash');var moment=require(_0x8092('0x1'));var util=require(_0x8092('0x2'));var path=require(_0x8092('0x3'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x8092('0x4'));var ami=require(_0x8092('0x5'));var Channel=require('../model/channel');var RpcSetting=require(_0x8092('0x6'));var statusDesc=[_0x8092('0x7'),_0x8092('0x8'),_0x8092('0x9'),_0x8092('0xa'),_0x8092('0xb'),'unavailable','ringing',_0x8092('0xc'),_0x8092('0xd')];var applications=[_0x8092('0xe'),_0x8092('0xf'),'agi',_0x8092('0x10'),_0x8092('0x11'),_0x8092('0x12')];var dispositions=['NO\x20ANSWER',_0x8092('0x13'),_0x8092('0x13'),'NO\x20ANSWER',_0x8092('0x14'),_0x8092('0x14'),_0x8092('0x15'),_0x8092('0x16'),_0x8092('0x13'),_0x8092('0x13'),'FAILED'];var actions={};config['redis']=_['defaults'](config[_0x8092('0x17')],{'host':_0x8092('0x18'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8092('0x17')]));function VoiceCallReport(_0x39aab1){this[_0x8092('0x19')]=_0x39aab1['channels'];this[_0x8092('0x1a')]=_0x39aab1['agents'];this[_0x8092('0x1b')]={};ami['on'](_0x8092('0x1c'),this[_0x8092('0x1d')]['bind'](this));ami['on'](_0x8092('0x1e'),this[_0x8092('0x1d')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x20'),this[_0x8092('0x21')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x22'),this[_0x8092('0x23')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x24'),this[_0x8092('0x25')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x26'),this[_0x8092('0x27')]['bind'](this));ami['on'](_0x8092('0x28'),this['syncNewCallerId'][_0x8092('0x1f')](this));ami['on'](_0x8092('0x29'),this[_0x8092('0x2a')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x2b'),this[_0x8092('0x2c')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x2d'),this[_0x8092('0x2e')][_0x8092('0x1f')](this));ami['on'](_0x8092('0x2f'),this[_0x8092('0x30')][_0x8092('0x1f')](this));try{logger[_0x8092('0x31')](_0x8092('0x32'));ami[_0x8092('0x33')]();}catch(_0x12f13e){logger[_0x8092('0x34')](_0x8092('0x35'),util[_0x8092('0x36')](_0x12f13e,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x8092('0x37')]['isNotNull']=function(_0x1d994e){return _0x1d994e!==null&&!_[_0x8092('0x38')](_0x1d994e);};VoiceCallReport[_0x8092('0x37')]['emit']=function(_0x44ef58,_0xde0c40,_0x2f946f){io['to'](_0x44ef58)[_0x8092('0x39')](_0xde0c40,_0x2f946f);};VoiceCallReport[_0x8092('0x37')]['syncNewCallerId']=function(_0x21a994){try{if(this[_0x8092('0x3a')](_0x21a994)){logger[_0x8092('0x31')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x21a994[_0x8092('0x3b')],_0x21a994[_0x8092('0x3c')],_0x21a994[_0x8092('0x3d')]);logger['debug']('[%s][voiceCallReport][newcallerid]\x20event:',_0x21a994[_0x8092('0x3b')],util[_0x8092('0x36')](_0x21a994,{'showHidden':![],'depth':null}));if(_0x21a994[_0x8092('0x3b')]===_0x21a994['linkedid']){if(!_[_0x8092('0x38')](this[_0x8092('0x19')][_0x21a994['uniqueid']])){_[_0x8092('0x3e')](this[_0x8092('0x19')][_0x21a994[_0x8092('0x3b')]],_['pick'](_0x21a994,_[_0x8092('0x3f')](this[_0x8092('0x19')][_0x21a994[_0x8092('0x3b')]])));}}if(_0x21a994[_0x8092('0x40')]===_0x8092('0x41')){if(this[_0x8092('0x1a')][_0x21a994[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]){if(_0x21a994[_0x8092('0x44')]==_0x8092('0x45')){this['agents'][_0x21a994[_0x8092('0x42')]['split']('-')[0x0]][_0x8092('0x46')]=_0x21a994[_0x8092('0x47')];this[_0x8092('0x39')](util['format'](_0x8092('0x48'),this[_0x8092('0x1a')][_0x21a994['channel'][_0x8092('0x43')]('-')[0x0]]['name']),_0x8092('0x49'),{'destaccountcode':this[_0x8092('0x1a')][_0x21a994[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x4a')],'destconnectedlinenum':_0x21a994[_0x8092('0x47')]});}}}}}catch(_0x54b7b9){logger['error']('[%s][voiceCallReport][newcallerid]',_0x21a994['uniqueid'],util['inspect'](_0x54b7b9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')]['syncNewChannel']=function(_0x25e06b){try{if(this[_0x8092('0x3a')](_0x25e06b)){logger[_0x8092('0x4b')](_0x8092('0x4c'),_0x25e06b['uniqueid'],util['inspect'](_0x25e06b,{'showHidden':![],'depth':null}));if(_0x25e06b[_0x8092('0x3b')]===_0x25e06b[_0x8092('0x4d')]&&_0x25e06b[_0x8092('0x42')]!=_0x8092('0x4e')){if(_[_0x8092('0x38')](this[_0x8092('0x19')][_0x25e06b[_0x8092('0x3b')]])){logger[_0x8092('0x31')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x25e06b[_0x8092('0x3b')],_0x25e06b[_0x8092('0x40')],_0x25e06b[_0x8092('0x44')]);this['channels'][_0x25e06b[_0x8092('0x3b')]]=new Channel();this[_0x8092('0x19')][_0x25e06b['uniqueid']][_0x8092('0x4f')]=moment()[_0x8092('0x50')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x8092('0x19')][_0x25e06b[_0x8092('0x3b')]]['disposition']=dispositions[_[_0x8092('0x51')](_0x25e06b[_0x8092('0x52')])];_['merge'](this[_0x8092('0x19')][_0x25e06b[_0x8092('0x3b')]],_[_0x8092('0x53')](_0x25e06b,_['keys'](this[_0x8092('0x19')][_0x25e06b[_0x8092('0x3b')]])));if(_0x25e06b[_0x8092('0x40')]===_0x8092('0x41')){if(this[_0x8092('0x1a')][_0x25e06b[_0x8092('0x42')]['split']('-')[0x0]]){if(_[_0x8092('0x38')](this[_0x8092('0x1a')][_0x25e06b['channel'][_0x8092('0x43')]('-')[0x0]]['destconnectedlinenum'])){this[_0x8092('0x1a')][_0x25e06b[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]['destconnectedlinenum']=_0x25e06b[_0x8092('0x44')];logger['debug']('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x25e06b[_0x8092('0x3b')],util[_0x8092('0x36')]({'destaccountcode':this[_0x8092('0x1a')][_0x25e06b[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x4a')],'destconnectedlinenum':_0x25e06b[_0x8092('0x44')]},{'showHidden':![],'depth':null}));this[_0x8092('0x39')](util[_0x8092('0x50')](_0x8092('0x48'),this[_0x8092('0x1a')][_0x25e06b[_0x8092('0x42')]['split']('-')[0x0]][_0x8092('0x54')]),'user:agentconnect',{'destaccountcode':this[_0x8092('0x1a')][_0x25e06b[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x25e06b[_0x8092('0x44')]});}}}}}}}catch(_0x2f7a8e){logger[_0x8092('0x34')]('[%s][voiceCallReport][newchannel]',_0x25e06b[_0x8092('0x3b')],util[_0x8092('0x36')](_0x2f7a8e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')][_0x8092('0x1d')]=function(_0x23864b){try{if(this[_0x8092('0x3a')](_0x23864b)){logger[_0x8092('0x4b')](_0x8092('0x55'),_0x23864b[_0x8092('0x3b')],util[_0x8092('0x36')](_0x23864b,{'showHidden':![],'depth':null}));if(_0x23864b[_0x8092('0x3b')]===_0x23864b[_0x8092('0x4d')]&&_0x23864b[_0x8092('0x44')]!='h'&&_0x23864b[_0x8092('0x42')]!='OutgoingSpoolFailed'){_0x23864b[_0x8092('0x56')]=_0x23864b[_0x8092('0x56')][_0x8092('0x57')]();_0x23864b[_0x8092('0x58')]=_0x23864b['appdata']&&_0x23864b[_0x8092('0x59')][_0x8092('0x5a')](_0x8092('0x5b'))?_0x23864b['appdata']:(_0x23864b[_0x8092('0x59')]||_0x23864b[_0x8092('0x58')])[_0x8092('0x57')]();logger['info'](_0x8092('0x5c'),_0x23864b['uniqueid'],_0x23864b[_0x8092('0x56')],_0x23864b[_0x8092('0x58')]);if(_['isUndefined'](this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]])){this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]]=new Channel();this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]]['starttime']=_0x23864b[_0x8092('0x5d')]?moment()[_0x8092('0x5e')](moment[_0x8092('0x5d')](_0x23864b['duration'])[_0x8092('0x5f')](),'seconds')[_0x8092('0x50')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x8092('0x50')](_0x8092('0x60'));this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]][_0x8092('0x61')]=_0x8092('0x14');}_[_0x8092('0x3e')](this['channels'][_0x23864b[_0x8092('0x3b')]],_[_0x8092('0x53')](_0x23864b,_['keys'](this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]])));if(_[_0x8092('0x62')](applications,_0x23864b[_0x8092('0x56')])){this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]][_0x8092('0x63')]=_0x23864b[_0x8092('0x56')];this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]][_0x8092('0x64')]=_0x23864b[_0x8092('0x58')];if(_0x23864b[_0x8092('0x56')]===_0x8092('0xe')&&_[_0x8092('0x5a')](_0x23864b['applicationdata'][_0x8092('0x57')](),_0x8092('0x65'))){var _0x410908=_0x23864b[_0x8092('0x58')][_0x8092('0x43')]('=');var _0x1ea2ad=_0x410908[0x0][_0x8092('0x57')]()[_0x8092('0x66')](/cdr\((.*)\)/);if(_0x1ea2ad){this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]][_0x1ea2ad[0x1]]=_0x410908[0x1];}}else if(_0x23864b[_0x8092('0x56')]===_0x8092('0xf')){this[_0x8092('0x19')][_0x23864b[_0x8092('0x3b')]][_0x8092('0xf')]=_0x23864b[_0x8092('0x58')][_0x8092('0x43')](',')[0x0];}}}}}catch(_0x108f9b){logger['error'](_0x8092('0x67'),_0x23864b[_0x8092('0x3b')],util[_0x8092('0x36')](_0x108f9b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')][_0x8092('0x23')]=function(_0x34df1e){try{if(this[_0x8092('0x3a')](_0x34df1e)){logger[_0x8092('0x31')](_0x8092('0x68'),_0x34df1e[_0x8092('0x3b')],_0x34df1e['linkedid'],_0x34df1e[_0x8092('0x3c')],_0x34df1e[_0x8092('0x3d')]);logger[_0x8092('0x4b')](_0x8092('0x69'),_0x34df1e[_0x8092('0x3b')],util['inspect'](_0x34df1e,{'showHidden':![],'depth':null}));if(_0x34df1e[_0x8092('0x3b')]!==_0x34df1e[_0x8092('0x4d')]){if(this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]]){if(_0x34df1e[_0x8092('0x52')]==='6'){if(!this[_0x8092('0x19')][_0x34df1e['linkedid']][_0x8092('0x6a')]){var _0x39d0bf=moment();this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]][_0x8092('0x6a')]=!![];this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]][_0x8092('0x6b')]=_0x39d0bf[_0x8092('0x50')](_0x8092('0x60'));if(this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]][_0x8092('0x4f')]){this['channels'][_0x34df1e[_0x8092('0x4d')]]['holdtime']=_0x39d0bf[_0x8092('0x6c')](this['channels'][_0x34df1e[_0x8092('0x4d')]][_0x8092('0x4f')],_0x8092('0x5f'));}}this[_0x8092('0x19')][_0x34df1e['linkedid']][_0x8092('0x4d')]=_0x34df1e[_0x8092('0x3b')];if(_0x34df1e['calleridnum']!==_0x8092('0x45')){this[_0x8092('0x19')][_0x34df1e['linkedid']]['connectedlinenum']=_0x34df1e[_0x8092('0x3d')];}this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]][_0x8092('0x6d')]=_0x34df1e['calleridname'];this[_0x8092('0x19')][_0x34df1e['linkedid']]['destinationchannel']=_0x34df1e['channel'];this[_0x8092('0x19')][_0x34df1e['linkedid']][_0x8092('0x61')]=dispositions[_[_0x8092('0x51')](_0x34df1e['channelstate'])];if(this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')]['split']('-')[0x0]]){this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]]['UserId']=this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]['id'];this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]][_0x8092('0x6e')]=this[_0x8092('0x1a')][_0x34df1e['channel'][_0x8092('0x43')]('-')[0x0]]['name'];}}}}else{if(this[_0x8092('0x19')][_0x34df1e[_0x8092('0x3b')]]){if(_0x34df1e['channelstate']==='6'){if(this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]){this[_0x8092('0x19')][_0x34df1e['uniqueid']]['UserId']=this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]['id'];this[_0x8092('0x19')][_0x34df1e[_0x8092('0x3b')]]['membername']=this['agents'][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x54')];}}}}if(_0x34df1e[_0x8092('0x52')]==='6'&&_0x34df1e[_0x8092('0x40')]===_0x8092('0x41')){if(this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')]['split']('-')[0x0]]){this[_0x8092('0x1a')][_0x34df1e['channel']['split']('-')[0x0]]['destconnectedlinenum']=_0x34df1e[_0x8092('0x44')];var _0x11daae;if(this['channels'][_0x34df1e[_0x8092('0x3b')]])_0x11daae=this[_0x8092('0x19')][_0x34df1e['uniqueid']][_0x8092('0x6f')];else if(this[_0x8092('0x19')][_0x34df1e[_0x8092('0x4d')]])_0x11daae=this[_0x8092('0x19')][_0x34df1e['linkedid']][_0x8092('0x6f')];logger['debug'](_0x8092('0x70'),_0x34df1e[_0x8092('0x3b')],util['inspect']({'destaccountcode':this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x4a')],'destconnectedlinenum':_0x34df1e['exten'],'routealias':_0x11daae},{'showHidden':![],'depth':null}));this[_0x8092('0x39')](util[_0x8092('0x50')](_0x8092('0x48'),this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x54')]),_0x8092('0x49'),{'destaccountcode':this[_0x8092('0x1a')][_0x34df1e[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x4a')],'destconnectedlinenum':_0x34df1e[_0x8092('0x44')],'routealias':_0x11daae});}}}}catch(_0x414784){logger[_0x8092('0x34')]('[%s][voiceCallReport][newstate]',_0x34df1e['uniqueid'],util[_0x8092('0x36')](_0x414784,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')]['syncMixMonitorFilename']=function(_0x252171,_0x168e1b){try{if(this[_0x8092('0x19')][_0x252171]){logger[_0x8092('0x31')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x252171,_0x168e1b);this[_0x8092('0x19')][_0x252171][_0x8092('0x71')]=!![];if(_['endsWith'](_0x168e1b,_0x8092('0x72'))){_0x168e1b=_0x168e1b[_0x8092('0x73')]('.wav49',_0x8092('0x74'));}this[_0x8092('0x19')][_0x252171]['monitorFilename']=_0x168e1b;var _0x7b251c=_[_0x8092('0x75')](this['channels'][_0x252171][_0x8092('0x76')],{'filename':_0x168e1b});if(_[_0x8092('0x77')](_0x7b251c)){this['channels'][_0x252171]['monitors'][_0x8092('0x78')]({'filename':_0x168e1b,'createdAt':moment()[_0x8092('0x50')](_0x8092('0x60')),'mixmonitorid':'','status':'rec'});}}}catch(_0x30bd5f){logger['error'](_0x8092('0x79'),_0x252171,util[_0x8092('0x36')](_0x30bd5f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')][_0x8092('0x25')]=function(_0x145469){try{if(this[_0x8092('0x3a')](_0x145469)){logger[_0x8092('0x4b')](_0x8092('0x7a'),_0x145469[_0x8092('0x3b')],util[_0x8092('0x36')](_0x145469,{'showHidden':![],'depth':null}));if(this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]]&&_0x145469[_0x8092('0x42')]!=_0x8092('0x4e')){if(this['isNotNull'](_0x145469[_0x8092('0x7b')])){if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')][_0x8092('0x7c')])){logger[_0x8092('0x31')](_0x8092('0x7d'),_0x145469['uniqueid'],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x7f')](_0x145469[_0x8092('0x3b')],_0x145469['value']);}else if(this['isNotNull'](_0x145469[_0x8092('0x7b')][_0x8092('0x80')])){logger['info'](_0x8092('0x81'),_0x145469[_0x8092('0x3b')],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]]['calleridnum']=_0x145469[_0x8092('0x7e')];}else if(this[_0x8092('0x3a')](_0x145469['variable'][_0x8092('0x82')])){logger[_0x8092('0x31')](_0x8092('0x83'),_0x145469['uniqueid'],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]][_0x8092('0x84')]=_0x145469[_0x8092('0x7e')];}else if(this['isNotNull'](_0x145469[_0x8092('0x7b')][_0x8092('0x85')])){logger[_0x8092('0x31')](_0x8092('0x86'),_0x145469[_0x8092('0x3b')],_0x145469['value']);this['channels'][_0x145469[_0x8092('0x3b')]][_0x8092('0x87')]=_0x145469['value'];}else if(this['isNotNull'](_0x145469[_0x8092('0x7b')][_0x8092('0x88')])){logger['info'](_0x8092('0x89'),_0x145469['uniqueid'],_0x145469[_0x8092('0x7e')]['split'](',')[0x0]);this[_0x8092('0x19')][_0x145469['uniqueid']][_0x8092('0xf')]=_0x145469[_0x8092('0x7e')]['split'](',')[0x0];}else if(this[_0x8092('0x3a')](_0x145469['variable'][_0x8092('0x8a')])){logger[_0x8092('0x31')](_0x8092('0x8b'),_0x145469[_0x8092('0x3b')],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]]['originatecalleridnum']=_0x145469[_0x8092('0x7e')];}else if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')][_0x8092('0x8c')])){logger[_0x8092('0x31')](_0x8092('0x8d'),_0x145469[_0x8092('0x3b')],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]][_0x8092('0x8e')]=_0x145469['value'];}else if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')][_0x8092('0x8f')])){logger[_0x8092('0x31')](_0x8092('0x90'),_0x145469['uniqueid'],_0x145469['value']);this['channels'][_0x145469[_0x8092('0x3b')]][_0x8092('0x91')]=_0x145469[_0x8092('0x7e')];}else if(this['isNotNull'](_0x145469['variable'][_0x8092('0x92')])){logger[_0x8092('0x31')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x145469[_0x8092('0x3b')],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]][_0x8092('0xf')]=_0x145469[_0x8092('0x7e')];}else if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')][_0x8092('0x93')])){logger['info'](_0x8092('0x94'),_0x145469[_0x8092('0x3b')],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469[_0x8092('0x3b')]][_0x8092('0x95')]=_0x145469['value'];}}}else if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')][_0x8092('0x7c')])){if(_0x145469[_0x8092('0x7e')]){var _0x21e6f5=path[_0x8092('0x96')](_0x145469[_0x8092('0x7e')])[_0x8092('0x54')];logger['info'](_0x8092('0x7d'),_0x21e6f5,_0x145469[_0x8092('0x7e')]);this[_0x8092('0x7f')](_0x21e6f5,_0x145469[_0x8092('0x7e')]);}}else if(this[_0x8092('0x19')][_0x145469[_0x8092('0x4d')]]){if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')])){if(this[_0x8092('0x3a')](_0x145469[_0x8092('0x7b')][_0x8092('0x93')])){logger[_0x8092('0x31')](_0x8092('0x94'),_0x145469['linkedid'],_0x145469[_0x8092('0x7e')]);this[_0x8092('0x19')][_0x145469['linkedid']][_0x8092('0x97')]=_0x145469[_0x8092('0x7e')];}}}}}catch(_0x1c4322){logger[_0x8092('0x34')](_0x8092('0x98'),_0x145469[_0x8092('0x3b')],util[_0x8092('0x36')](_0x1c4322,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')][_0x8092('0x27')]=function(_0x28e6d5){try{if(this[_0x8092('0x3a')](_0x28e6d5)){logger[_0x8092('0x4b')](_0x8092('0x99'),_0x28e6d5[_0x8092('0x3b')],util[_0x8092('0x36')](_0x28e6d5,{'showHidden':![],'depth':null}));if(this['channels'][_0x28e6d5['uniqueid']]){logger[_0x8092('0x31')](_0x8092('0x9a'),_0x28e6d5[_0x8092('0x3b')],_0x28e6d5[_0x8092('0x9b')]);var _0x2e7d87=moment();this[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x9c')]=_0x2e7d87[_0x8092('0x50')](_0x8092('0x60'));this['channels'][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x5d')]=_0x2e7d87['diff'](this[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x4f')],_0x8092('0x5f'));if(this[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]]['answered']){this[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x9d')]=_0x2e7d87['diff'](this['channels'][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x6b')],_0x8092('0x5f'));this[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]]['holdtime']=this['channels'][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x5d')]-this['channels'][_0x28e6d5['uniqueid']]['billableseconds'];}if(_0x28e6d5[_0x8092('0x40')]===_0x8092('0x41')){if(this['agents'][_0x28e6d5[_0x8092('0x42')]['split']('-')[0x0]]){this[_0x8092('0x1a')][_0x28e6d5[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]=_['omit'](this['agents'][_0x28e6d5['channel']['split']('-')[0x0]],[_0x8092('0x46')]);logger[_0x8092('0x4b')](_0x8092('0x9e'),_0x28e6d5['uniqueid'],util[_0x8092('0x36')]({'id':this[_0x8092('0x1a')][_0x28e6d5[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x28e6d5[_0x8092('0x42')]['split']('-')[0x0]][_0x8092('0x4a')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x8092('0x50')](_0x8092('0x48'),this[_0x8092('0x1a')][_0x28e6d5[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x54')]),'user:agentcomplete',{'id':this[_0x8092('0x1a')][_0x28e6d5[_0x8092('0x42')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x8092('0x1a')][_0x28e6d5[_0x8092('0x42')][_0x8092('0x43')]('-')[0x0]][_0x8092('0x4a')]});}}var _0x51dd7b=this;Promise[_0x8092('0x9f')]()[_0x8092('0xa0')](function(){var _0x1729bf=_0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]];if(typeof _0x1729bf['transferType']==='undefined')return;if(_[_0x8092('0xa1')](_0x1729bf[_0x8092('0x76')]))return;return RpcSetting['getSettings']()['then'](function(_0x37156d){if(!_0x37156d[_0x8092('0xa2')])return;return Promise['resolve']()[_0x8092('0xa0')](function(){return ami['Action']({'action':'StopMixMonitor','channel':_0x1729bf[_0x8092('0x42')]})[_0x8092('0xa3')](function(){});})['then'](function(){return ami['Action']({'action':_0x8092('0xa4'),'channel':_0x1729bf[_0x8092('0xa5')]})[_0x8092('0xa3')](function(){})[_0x8092('0xa6')](function(){var _0x15ae2a=_0x51dd7b[_0x8092('0x1a')][_0x1729bf['destinationchannel'][_0x8092('0x43')]('-')[0x0]];if(!_0x15ae2a)return;io['emit'](_0x8092('0xa7'),{'agentId':_0x15ae2a['id'],'uniqueid':_0x1729bf[_0x8092('0x3b')]});});});});})[_0x8092('0xa0')](function(){if(_0x28e6d5[_0x8092('0xa8')]==='BlindTransfer'){_0x51dd7b[_0x8092('0x1b')][_0x28e6d5['uniqueid']]=_0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]];}else{if(_0x51dd7b[_0x8092('0x19')][_0x28e6d5['uniqueid']]['type']===_0x8092('0xa9')&&_0x51dd7b[_0x8092('0x1b')][_0x28e6d5[_0x8092('0x3b')]]){_0x51dd7b['channels'][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x3b')]=[_0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]]['linkedid'],_0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x4d')]=_0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]][_0x8092('0x3b')]][0x0];delete _0x51dd7b[_0x8092('0x1b')][_0x28e6d5['uniqueid']];}}logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x28e6d5[_0x8092('0x3b')],util[_0x8092('0x36')](_0x51dd7b[_0x8092('0x19')][_0x28e6d5['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x8092('0x39')]('custom:voiceCallReport',_0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]]);delete _0x51dd7b[_0x8092('0x19')][_0x28e6d5[_0x8092('0x3b')]];});}}}catch(_0xb857fe){logger[_0x8092('0x34')]('[%s][voiceCallReport][hangup]',_0x28e6d5[_0x8092('0x3b')],util[_0x8092('0x36')](_0xb857fe,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x8092('0x2a')]=function(_0x20a657){try{if(this[_0x8092('0x3a')](_0x20a657)){logger[_0x8092('0x31')](_0x8092('0xaa'),_0x20a657[_0x8092('0x3b')],_0x20a657[_0x8092('0xab')],_0x20a657[_0x8092('0xac')]);logger['debug'](_0x8092('0xad'),_0x20a657['uniqueid'],util[_0x8092('0x36')](_0x20a657,{'showHidden':![],'depth':null}));if(this[_0x8092('0x19')][_0x20a657['transfereeuniqueid']]){this[_0x8092('0x19')][_0x20a657[_0x8092('0xae')]][_0x8092('0xaf')]=_0x20a657['origtransferercalleridnum'];this['channels'][_0x20a657['transfereeuniqueid']][_0x8092('0xb0')]=_0x20a657[_0x8092('0xac')];if(this['channels'][_0x20a657[_0x8092('0xb1')]]){var _0x4044b0=this[_0x8092('0x19')][_0x20a657['secondtransfereruniqueid']];this[_0x8092('0x19')][_0x20a657[_0x8092('0xb1')]]=this[_0x8092('0x19')][_0x20a657[_0x8092('0xae')]];this[_0x8092('0x19')][_0x20a657[_0x8092('0xae')]]=_0x4044b0;}}else if(this[_0x8092('0x19')][_0x20a657['transfertargetuniqueid']]){this[_0x8092('0x19')][_0x20a657['transfertargetuniqueid']][_0x8092('0xaf')]=_0x20a657[_0x8092('0xab')];this[_0x8092('0x19')][_0x20a657[_0x8092('0xb2')]]['transferconnectedlinenum']=_0x20a657['transfertargetcalleridnum'];if(this[_0x8092('0x19')][_0x20a657['origtransfereruniqueid']]){var _0x4044b0=this[_0x8092('0x19')][_0x20a657[_0x8092('0xb3')]];this[_0x8092('0x19')][_0x20a657[_0x8092('0xb3')]]=this['channels'][_0x20a657['transfertargetuniqueid']];this[_0x8092('0x19')][_0x20a657[_0x8092('0xb2')]]=_0x4044b0;}}if((this[_0x8092('0x19')][_0x20a657[_0x8092('0xb3')]]||this[_0x8092('0x19')][_0x20a657[_0x8092('0xb4')]])&&this[_0x8092('0x19')][_0x20a657[_0x8092('0xb1')]]){var _0x5e7e03=_[_0x8092('0xb5')]([this[_0x8092('0x19')][_0x20a657['origtransfereruniqueid']],this['channels'][_0x20a657[_0x8092('0xb4')]],this[_0x8092('0x19')][_0x20a657['secondtransfereruniqueid']]],function(_0x14dd85){return _0x14dd85&&_0x14dd85[_0x8092('0x87')]==='outbound'&&_0x14dd85['routeid'];});if(_0x5e7e03){if(this['channels'][_0x20a657[_0x8092('0xb3')]])this[_0x8092('0x19')][_0x20a657[_0x8092('0xb3')]][_0x8092('0xb6')]=_0x8092('0xb7');if(this['channels'][_0x20a657['origtransfererlinkedid']])this[_0x8092('0x19')][_0x20a657[_0x8092('0xb4')]][_0x8092('0xb6')]=_0x8092('0xb7');this[_0x8092('0x19')][_0x20a657[_0x8092('0xb1')]][_0x8092('0xb6')]=_0x8092('0xb7');}}}}catch(_0x26d87a){logger[_0x8092('0x34')]('[%s][voiceCallReport][attendedtransfer]',_0x20a657[_0x8092('0x3b')],util[_0x8092('0x36')](_0x26d87a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')][_0x8092('0x2c')]=function(_0x1a8c27){try{if(this[_0x8092('0x3a')](_0x1a8c27)){logger[_0x8092('0x31')](_0x8092('0xb8'),_0x1a8c27[_0x8092('0x3b')],_0x1a8c27['transfereecalleridnum'],_0x1a8c27['extension']);logger[_0x8092('0x4b')](_0x8092('0xb9'),_0x1a8c27[_0x8092('0x3b')],util[_0x8092('0x36')](_0x1a8c27,{'showHidden':![],'depth':null}));if(this['channels'][_0x1a8c27[_0x8092('0xae')]]){this[_0x8092('0x19')][_0x1a8c27[_0x8092('0xae')]][_0x8092('0xaf')]=_0x1a8c27[_0x8092('0xba')];this[_0x8092('0x19')][_0x1a8c27[_0x8092('0xae')]][_0x8092('0xb0')]=_0x1a8c27[_0x8092('0xbb')];this['channels'][_0x1a8c27[_0x8092('0xae')]][_0x8092('0xb6')]=_0x8092('0xbc');this[_0x8092('0x27')]({'event':_0x8092('0xbd'),'uniqueid':_0x1a8c27[_0x8092('0xae')],'context':_0x1a8c27[_0x8092('0x40')],'channel':_0x1a8c27[_0x8092('0xbe')]});}else{this[_0x8092('0x19')][_0x1a8c27[_0x8092('0xbf')]][_0x8092('0xb6')]='BLIND';}}}catch(_0x1f83cb){logger[_0x8092('0x34')](_0x8092('0xc0'),_0x1a8c27[_0x8092('0x3b')],util[_0x8092('0x36')](_0x1f83cb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')]['syncMusicOnHoldStart']=function(_0x5300f7){try{if(this[_0x8092('0x3a')](_0x5300f7)){logger[_0x8092('0x4b')](_0x8092('0xc1'),_0x5300f7['uniqueid'],util[_0x8092('0x36')](_0x5300f7,{'showHidden':![],'depth':null}));if(this[_0x8092('0x19')][_0x5300f7[_0x8092('0x3b')]]){if(!_[_0x8092('0x77')](this[_0x8092('0x19')][_0x5300f7['uniqueid']][_0x8092('0x6b')])){this['channels'][_0x5300f7[_0x8092('0x3b')]]['mohstarttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x8092('0x31')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x5300f7[_0x8092('0x3b')],this[_0x8092('0x19')][_0x5300f7['uniqueid']][_0x8092('0xc2')]);}}}}catch(_0x4f0830){logger[_0x8092('0x34')](_0x8092('0xc3'),_0x5300f7[_0x8092('0x3b')],util['inspect'](_0x4f0830,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8092('0x37')][_0x8092('0x30')]=function(_0x2e01ce){try{if(this[_0x8092('0x3a')](_0x2e01ce)){logger['debug'](_0x8092('0xc4'),_0x2e01ce['uniqueid'],util[_0x8092('0x36')](_0x2e01ce,{'showHidden':![],'depth':null}));if(this['channels'][_0x2e01ce[_0x8092('0x3b')]]){if(!_['isNil'](this[_0x8092('0x19')][_0x2e01ce[_0x8092('0x3b')]]['mohstarttime'])){this['channels'][_0x2e01ce[_0x8092('0x3b')]]['mohtime']+=moment()[_0x8092('0xc5')](0x0)[_0x8092('0x6c')](this[_0x8092('0x19')][_0x2e01ce['uniqueid']][_0x8092('0xc2')],_0x8092('0x5f'));logger['info']('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x2e01ce['uniqueid'],this[_0x8092('0x19')][_0x2e01ce['uniqueid']][_0x8092('0xc6')]);delete this[_0x8092('0x19')][_0x2e01ce[_0x8092('0x3b')]]['mohstarttime'];}}}}catch(_0x5463a6){logger['error']('[%s][voiceCallReport][musiconholdstop]',_0x2e01ce[_0x8092('0x3b')],util['inspect'](_0x5463a6,{'showHidden':![],'depth':null}));}};module[_0x8092('0xc7')]=VoiceCallReport;
\ No newline at end of file
index abf7c0b..5df0424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd04c=['answered','starttime','billableseconds','holdtime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%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','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','appdata','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','applications','dialbegin','syncDialBegin','dialend','bind','varset','syncVarSet','newexten','syncNewExten','hangup','syncHangup','isNotNull','prototype','emit','debug','uniqueid','inspect','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','substring','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','isUndefined','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','variables','[%s][voiceDialReport][hangup]\x20event:','cause-txt','endtime','duration','diff','seconds','complete','total'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd04c,0x115));var _0xcd04=function(_0x2e3bd5,_0x4a79e9){_0x2e3bd5=_0x2e3bd5-0x0;var _0x311415=_0xd04c[_0x2e3bd5];return _0x311415;};'use strict';var _=require(_0xcd04('0x0'));var moment=require(_0xcd04('0x1'));var util=require('util');var Redis=require(_0xcd04('0x2'));var config=require(_0xcd04('0x3'));var logger=require(_0xcd04('0x4'))(_0xcd04('0x5'));var ami=require(_0xcd04('0x6'));config[_0xcd04('0x7')]=_[_0xcd04('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xcd04('0x9'))(new Redis(config[_0xcd04('0x7')]));function VoiceDialReport(_0x5f323a){this[_0xcd04('0xa')]=_0x5f323a[_0xcd04('0xb')];this['outbound']=_0x5f323a[_0xcd04('0xc')];this[_0xcd04('0xd')]={};this['variables']={};ami['on'](_0xcd04('0xe'),this[_0xcd04('0xf')]['bind'](this));ami['on'](_0xcd04('0x10'),this['syncDialEnd'][_0xcd04('0x11')](this));ami['on'](_0xcd04('0x12'),this[_0xcd04('0x13')][_0xcd04('0x11')](this));ami['on'](_0xcd04('0x14'),this[_0xcd04('0x15')][_0xcd04('0x11')](this));ami['on'](_0xcd04('0x16'),this[_0xcd04('0x17')][_0xcd04('0x11')](this));}VoiceDialReport['prototype'][_0xcd04('0x18')]=function(_0x2efc40){return _0x2efc40!==null&&!_['isUndefined'](_0x2efc40);};VoiceDialReport[_0xcd04('0x19')][_0xcd04('0x1a')]=function(_0x1ea1be,_0x185320,_0x463f70){io['to'](_0x1ea1be)[_0xcd04('0x1a')](_0x185320,_0x463f70);};VoiceDialReport[_0xcd04('0x19')][_0xcd04('0xf')]=function(_0x4fe15d){try{if(this[_0xcd04('0x18')](_0x4fe15d)){logger[_0xcd04('0x1b')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x4fe15d[_0xcd04('0x1c')],util[_0xcd04('0x1d')](_0x4fe15d,{'showHidden':![],'depth':null}));if(this[_0xcd04('0xa')][_0x4fe15d['uniqueid']]){_['merge'](this[_0xcd04('0xa')][_0x4fe15d['uniqueid']],{'starttime':moment()[_0xcd04('0x1e')](_0xcd04('0x1f')),'lastevent':_0xcd04('0x20'),'interface':_0x4fe15d[_0xcd04('0x21')]['substring'](0x0,_0x4fe15d[_0xcd04('0x21')][_0xcd04('0x22')]('-')),'membername':_0x4fe15d[_0xcd04('0x21')]['substring'](_0x4fe15d['channel']['lastIndexOf']('/')+0x1,_0x4fe15d[_0xcd04('0x21')][_0xcd04('0x22')]('-'))},_[_0xcd04('0x23')](_0x4fe15d,[_0xcd04('0x24'),_0xcd04('0x25')]));logger[_0xcd04('0x26')](_0xcd04('0x27'),_0x4fe15d['uniqueid'],this[_0xcd04('0xa')][_0x4fe15d['uniqueid']][_0xcd04('0x28')],this[_0xcd04('0xa')][_0x4fe15d[_0xcd04('0x1c')]][_0xcd04('0x29')]);logger[_0xcd04('0x1b')](_0xcd04('0x2a'),_0x4fe15d[_0xcd04('0x1c')],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x4fe15d[_0xcd04('0x1c')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x4fe15d[_0xcd04('0x1c')]])_['merge'](this[_0xcd04('0xa')][_0x4fe15d[_0xcd04('0x1c')]],this[_0xcd04('0xd')][_0x4fe15d['uniqueid']]);this[_0xcd04('0x1a')](_0xcd04('0x2b'),_0xcd04('0x2c'),this['channels'][_0x4fe15d[_0xcd04('0x1c')]]);logger[_0xcd04('0x1b')](_0xcd04('0x2d'),_0x4fe15d[_0xcd04('0x1c')],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x4fe15d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xcd04('0x1a')](_0xcd04('0x2e'),this[_0xcd04('0xa')][_0x4fe15d[_0xcd04('0x1c')]]);}}}catch(_0x1d2bf7){logger[_0xcd04('0x2f')](_0xcd04('0x30'),_0x4fe15d['uniqueid'],util['inspect'](_0x1d2bf7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xcd04('0x19')][_0xcd04('0x31')]=function(_0x5de077){try{if(this['isNotNull'](_0x5de077)){logger['debug']('[%s][voiceDialReport][dialend]\x20event:',_0x5de077[_0xcd04('0x1c')],util[_0xcd04('0x1d')](_0x5de077,{'showHidden':![],'depth':null}));if(this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]]){this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]][_0xcd04('0x32')]=_0x5de077[_0xcd04('0x32')];if(_0x5de077[_0xcd04('0x32')]===_0xcd04('0x33')){this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]][_0xcd04('0x34')]=_0x5de077[_0xcd04('0x34')];this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]][_0xcd04('0x35')]=_0x5de077[_0xcd04('0x35')];this['channels'][_0x5de077[_0xcd04('0x1c')]][_0xcd04('0x36')]=moment()[_0xcd04('0x1e')](_0xcd04('0x1f'));this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]][_0xcd04('0x37')]=_0xcd04('0x38');logger['info'](_0xcd04('0x39'),_0x5de077[_0xcd04('0x1c')],_0x5de077[_0xcd04('0x21')][_0xcd04('0x3a')](_0x5de077[_0xcd04('0x21')]['lastIndexOf']('/')+0x1,_0x5de077[_0xcd04('0x21')]['lastIndexOf']('-')));logger[_0xcd04('0x1b')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x5de077['uniqueid'],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0xcd04('0x3b'),this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]]);}logger[_0xcd04('0x1b')](_0xcd04('0x3c'),_0x5de077[_0xcd04('0x1c')],util['inspect'](this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]],{'showHidden':![],'depth':null}));this[_0xcd04('0x1a')](_0xcd04('0x2b'),'voice_outbound_channel:save',this[_0xcd04('0xa')][_0x5de077[_0xcd04('0x1c')]]);}}}catch(_0x462cf4){logger[_0xcd04('0x2f')](_0xcd04('0x3d'),_0x5de077[_0xcd04('0x1c')],util[_0xcd04('0x1d')](_0x462cf4,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xcd04('0x19')]['syncVarSet']=function(_0x350e5d){try{if(this[_0xcd04('0x18')](_0x350e5d)){logger[_0xcd04('0x1b')](_0xcd04('0x3e'),_0x350e5d[_0xcd04('0x1c')],util['inspect'](_0x350e5d,{'showHidden':![],'depth':null}));this[_0xcd04('0x3f')](_0x350e5d['uniqueid'],_[_0xcd04('0x40')](_0x350e5d[_0xcd04('0x41')])[0x0],_0x350e5d[_0xcd04('0x42')]);if(this[_0xcd04('0x18')](_0x350e5d[_0xcd04('0x41')])&&this[_0xcd04('0x18')](_0x350e5d[_0xcd04('0x41')][_0xcd04('0x43')])){if(_[_0xcd04('0x44')](this[_0xcd04('0xa')][_0x350e5d['uniqueid']])){this['channels'][_0x350e5d[_0xcd04('0x1c')]]={'routeId':_0x350e5d[_0xcd04('0x42')],'variables':this['variables'][_0x350e5d[_0xcd04('0x1c')]],'motionChannel':_0xcd04('0x45')};logger[_0xcd04('0x26')](_0xcd04('0x46'),_0x350e5d['uniqueid'],_0x350e5d[_0xcd04('0x41')][_0xcd04('0x43')],_['keys'](_0x350e5d[_0xcd04('0x41')])[0x0],_0x350e5d['value']);logger[_0xcd04('0x1b')](_0xcd04('0x47'),_0x350e5d[_0xcd04('0x1c')],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x350e5d['uniqueid']],{'showHidden':![],'depth':null}));this[_0xcd04('0x1a')]('voice:outbound',_0xcd04('0x2c'),this[_0xcd04('0xa')][_0x350e5d[_0xcd04('0x1c')]]);}}}}catch(_0x5a2e75){logger[_0xcd04('0x2f')](_0xcd04('0x48'),_0x350e5d[_0xcd04('0x1c')],util[_0xcd04('0x1d')](_0x5a2e75,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xcd04('0x19')][_0xcd04('0x3f')]=function(_0x19aabd,_0x3831d9,_0xce79c2){var _0x3419f7=[_0xcd04('0x49'),_0xcd04('0x4a'),'rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss',_0xcd04('0x4b'),_0xcd04('0x4c'),_0xcd04('0x4d'),_0xcd04('0x4e'),_0xcd04('0x4f'),_0xcd04('0x50'),_0xcd04('0x51'),_0xcd04('0x52'),_0xcd04('0x53'),_0xcd04('0x54'),'memberlastcall',_0xcd04('0x28'),_0xcd04('0x55'),_0xcd04('0x56')];if(!_[_0xcd04('0x57')](_0x3831d9)&&!_[_0xcd04('0x58')](_0x3419f7,_0x3831d9)){if(_[_0xcd04('0x44')](this[_0xcd04('0x59')][_0x19aabd])){this[_0xcd04('0x59')][_0x19aabd]={};}this[_0xcd04('0x59')][_0x19aabd][_0x3831d9]=_0xce79c2;}};VoiceDialReport[_0xcd04('0x19')][_0xcd04('0x17')]=function(_0x456c7f){try{if(this[_0xcd04('0x18')](_0x456c7f)){logger[_0xcd04('0x1b')](_0xcd04('0x5a'),_0x456c7f[_0xcd04('0x1c')],util[_0xcd04('0x1d')](_0x456c7f,{'showHidden':![],'depth':null}));if(this['channels'][_0x456c7f[_0xcd04('0x1c')]]){logger['info']('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x456c7f[_0xcd04('0x1c')],_0x456c7f[_0xcd04('0x5b')]);this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x5c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x5d')]=moment(this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x5c')])[_0xcd04('0x5e')](this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]]['starttime'],_0xcd04('0x5f'));this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x37')]=_0xcd04('0x60');this[_0xcd04('0xc')][_0xcd04('0x61')]+=0x1;if(this['channels'][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x36')]){this[_0xcd04('0xc')][_0xcd04('0x62')]+=0x1;this['channels'][_0x456c7f[_0xcd04('0x1c')]]['holdtime']=moment(this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]]['answertime'])[_0xcd04('0x5e')](this[_0xcd04('0xa')][_0x456c7f['uniqueid']][_0xcd04('0x63')],'seconds');this[_0xcd04('0xa')][_0x456c7f['uniqueid']][_0xcd04('0x64')]=moment(this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x5c')])['diff'](this[_0xcd04('0xa')][_0x456c7f['uniqueid']][_0xcd04('0x36')],'seconds');this['outbound']['sumHoldTime']+=this['channels'][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x65')]||0x0;this[_0xcd04('0xc')][_0xcd04('0x66')]+=this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]][_0xcd04('0x64')];}this[_0xcd04('0xc')][_0xcd04('0x67')]+=this[_0xcd04('0xa')][_0x456c7f['uniqueid']][_0xcd04('0x5d')];logger['debug'](_0xcd04('0x68'),_0x456c7f['uniqueid'],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xcd04('0x1a')]('custom:voiceDialReport',this['channels'][_0x456c7f[_0xcd04('0x1c')]]);logger[_0xcd04('0x1b')](_0xcd04('0x69'),_0x456c7f['uniqueid'],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x456c7f['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xcd04('0x1a')](_0xcd04('0x6a'),this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]]);logger[_0xcd04('0x1b')](_0xcd04('0x6b'),_0x456c7f[_0xcd04('0x1c')],util[_0xcd04('0x1d')](this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0xcd04('0x2b'),_0xcd04('0x6c'),this[_0xcd04('0xc')]);logger[_0xcd04('0x26')](_0xcd04('0x6d'),JSON[_0xcd04('0x6e')](this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x1c')]]));logger[_0xcd04('0x1b')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x456c7f[_0xcd04('0x1c')],util[_0xcd04('0x1d')](this['channels'][_0x456c7f[_0xcd04('0x1c')]],{'showHidden':![],'depth':null}));this[_0xcd04('0x1a')](_0xcd04('0x2b'),_0xcd04('0x6f'),this['channels'][_0x456c7f[_0xcd04('0x1c')]]);delete this['channels'][_0x456c7f['uniqueid']];}else if(this['channels'][_0x456c7f[_0xcd04('0x70')]]){this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x70')]]['uniqueid']=this[_0xcd04('0xa')][_0x456c7f[_0xcd04('0x70')]][_0xcd04('0x71')];}if(this['variables'][_0x456c7f[_0xcd04('0x1c')]]){delete this['variables'][_0x456c7f[_0xcd04('0x1c')]];}}}catch(_0x51345c){logger[_0xcd04('0x2f')](_0xcd04('0x72'),_0x456c7f['uniqueid'],util['inspect'](_0x51345c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xcd04('0x19')]['syncNewExten']=function(_0x1634b8){try{if(this[_0xcd04('0x18')](_0x1634b8)){logger[_0xcd04('0x1b')](_0xcd04('0x73'),_0x1634b8['uniqueid'],util['inspect'](_0x1634b8,{'showHidden':![],'depth':null}));if(_0x1634b8[_0xcd04('0x74')][_0xcd04('0x75')]()===_0xcd04('0x76')){_0x1634b8['applicationdata']=(_0x1634b8[_0xcd04('0x77')]||_0x1634b8[_0xcd04('0x78')])[_0xcd04('0x75')]();if(_['startsWith'](_0x1634b8[_0xcd04('0x78')],_0xcd04('0x79'))){if(_['isUndefined'](this[_0xcd04('0xd')][_0x1634b8['uniqueid']]))this[_0xcd04('0xd')][_0x1634b8['uniqueid']]={};logger[_0xcd04('0x26')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x1634b8[_0xcd04('0x1c')],_0x1634b8['application'],_0x1634b8[_0xcd04('0x78')]);var _0x43948d=_0x1634b8[_0xcd04('0x78')][_0xcd04('0x7a')]('=');var _0x3a2fdc=_0x43948d[0x0][_0xcd04('0x7b')](/cdr\((.*)\)/);if(_0x3a2fdc)this[_0xcd04('0xd')][_0x1634b8[_0xcd04('0x1c')]][_0x3a2fdc[0x1]]=_0x43948d[0x1];}}}}catch(_0x12ba79){logger[_0xcd04('0x2f')](_0xcd04('0x7c'),_0x1634b8[_0xcd04('0x1c')],util[_0xcd04('0x1d')](_0x12ba79,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
+var _0x8d04=['[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','merge','voice:outbound','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','debug','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','duration','endtime','diff','starttime','seconds','answered','holdtime','billableseconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','moment','util','ioredis','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','channels','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface'];(function(_0x403cff,_0x1cf463){var _0x5a7c56=function(_0x1bab9d){while(--_0x1bab9d){_0x403cff['push'](_0x403cff['shift']());}};_0x5a7c56(++_0x1cf463);}(_0x8d04,0x1ab));var _0x48d0=function(_0x3b8205,_0x186658){_0x3b8205=_0x3b8205-0x0;var _0xb94c34=_0x8d04[_0x3b8205];return _0xb94c34;};'use strict';var _=require('lodash');var moment=require(_0x48d0('0x0'));var util=require(_0x48d0('0x1'));var Redis=require(_0x48d0('0x2'));var config=require('../../../config/environment');var logger=require(_0x48d0('0x3'))(_0x48d0('0x4'));var ami=require('../ami');config[_0x48d0('0x5')]=_[_0x48d0('0x6')](config[_0x48d0('0x5')],{'host':_0x48d0('0x7'),'port':0x18eb});var io=require(_0x48d0('0x8'))(new Redis(config[_0x48d0('0x5')]));function VoiceDialReport(_0x4d93d1){this['channels']=_0x4d93d1['outboundChannels'];this['outbound']=_0x4d93d1[_0x48d0('0x9')];this[_0x48d0('0xa')]={};this[_0x48d0('0xb')]={};ami['on'](_0x48d0('0xc'),this[_0x48d0('0xd')][_0x48d0('0xe')](this));ami['on'](_0x48d0('0xf'),this['syncDialEnd'][_0x48d0('0xe')](this));ami['on']('varset',this['syncVarSet'][_0x48d0('0xe')](this));ami['on']('newexten',this[_0x48d0('0x10')][_0x48d0('0xe')](this));ami['on'](_0x48d0('0x11'),this[_0x48d0('0x12')]['bind'](this));}VoiceDialReport[_0x48d0('0x13')][_0x48d0('0x14')]=function(_0x173d9e){return _0x173d9e!==null&&!_[_0x48d0('0x15')](_0x173d9e);};VoiceDialReport[_0x48d0('0x13')][_0x48d0('0x16')]=function(_0x297d79,_0x2bfe46,_0x108123){io['to'](_0x297d79)[_0x48d0('0x16')](_0x2bfe46,_0x108123);};VoiceDialReport['prototype']['syncDialBegin']=function(_0x1cc0b9){try{if(this[_0x48d0('0x14')](_0x1cc0b9)){logger['debug'](_0x48d0('0x17'),_0x1cc0b9[_0x48d0('0x18')],util['inspect'](_0x1cc0b9,{'showHidden':![],'depth':null}));if(this[_0x48d0('0x19')][_0x1cc0b9[_0x48d0('0x18')]]){_['merge'](this['channels'][_0x1cc0b9[_0x48d0('0x18')]],{'starttime':moment()['format'](_0x48d0('0x1a')),'lastevent':'called','interface':_0x1cc0b9[_0x48d0('0x1b')][_0x48d0('0x1c')](0x0,_0x1cc0b9[_0x48d0('0x1b')][_0x48d0('0x1d')]('-')),'membername':_0x1cc0b9[_0x48d0('0x1b')][_0x48d0('0x1c')](_0x1cc0b9[_0x48d0('0x1b')][_0x48d0('0x1d')]('/')+0x1,_0x1cc0b9[_0x48d0('0x1b')][_0x48d0('0x1d')]('-'))},_[_0x48d0('0x1e')](_0x1cc0b9,[_0x48d0('0x1f'),_0x48d0('0x20')]));logger[_0x48d0('0x21')](_0x48d0('0x22'),_0x1cc0b9[_0x48d0('0x18')],this['channels'][_0x1cc0b9['uniqueid']][_0x48d0('0x23')],this[_0x48d0('0x19')][_0x1cc0b9[_0x48d0('0x18')]][_0x48d0('0x24')]);logger['debug'](_0x48d0('0x25'),_0x1cc0b9[_0x48d0('0x18')],util[_0x48d0('0x26')](this['channels'][_0x1cc0b9[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x48d0('0xa')][_0x1cc0b9[_0x48d0('0x18')]])_[_0x48d0('0x27')](this[_0x48d0('0x19')][_0x1cc0b9[_0x48d0('0x18')]],this[_0x48d0('0xa')][_0x1cc0b9['uniqueid']]);this[_0x48d0('0x16')](_0x48d0('0x28'),'voice_outbound_channel:save',this[_0x48d0('0x19')][_0x1cc0b9[_0x48d0('0x18')]]);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x1cc0b9[_0x48d0('0x18')],util['inspect'](this[_0x48d0('0x19')][_0x1cc0b9[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));ami[_0x48d0('0x16')](_0x48d0('0x29'),this[_0x48d0('0x19')][_0x1cc0b9[_0x48d0('0x18')]]);}}}catch(_0x18d569){logger[_0x48d0('0x2a')](_0x48d0('0x2b'),_0x1cc0b9[_0x48d0('0x18')],util['inspect'](_0x18d569,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x48d0('0x13')][_0x48d0('0x2c')]=function(_0x333100){try{if(this[_0x48d0('0x14')](_0x333100)){logger[_0x48d0('0x2d')]('[%s][voiceDialReport][dialend]\x20event:',_0x333100[_0x48d0('0x18')],util[_0x48d0('0x26')](_0x333100,{'showHidden':![],'depth':null}));if(this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]]){this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]][_0x48d0('0x2e')]=_0x333100[_0x48d0('0x2e')];if(_0x333100['dialstatus']===_0x48d0('0x2f')){this['channels'][_0x333100['uniqueid']][_0x48d0('0x30')]=_0x333100[_0x48d0('0x30')];this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]]['connectedlinename']=_0x333100[_0x48d0('0x31')];this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]][_0x48d0('0x32')]=moment()[_0x48d0('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]][_0x48d0('0x34')]=_0x48d0('0x35');logger[_0x48d0('0x21')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x333100[_0x48d0('0x18')],_0x333100[_0x48d0('0x1b')][_0x48d0('0x1c')](_0x333100['channel'][_0x48d0('0x1d')]('/')+0x1,_0x333100[_0x48d0('0x1b')]['lastIndexOf']('-')));logger['debug'](_0x48d0('0x36'),_0x333100[_0x48d0('0x18')],util[_0x48d0('0x26')](this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));ami[_0x48d0('0x16')](_0x48d0('0x37'),this['channels'][_0x333100[_0x48d0('0x18')]]);}logger[_0x48d0('0x2d')](_0x48d0('0x38'),_0x333100[_0x48d0('0x18')],util[_0x48d0('0x26')](this[_0x48d0('0x19')][_0x333100[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0x48d0('0x19')][_0x333100['uniqueid']]);}}}catch(_0x361081){logger[_0x48d0('0x2a')](_0x48d0('0x39'),_0x333100['uniqueid'],util[_0x48d0('0x26')](_0x361081,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x48d0('0x13')][_0x48d0('0x3a')]=function(_0x2e884e){try{if(this['isNotNull'](_0x2e884e)){logger['debug'](_0x48d0('0x3b'),_0x2e884e[_0x48d0('0x18')],util[_0x48d0('0x26')](_0x2e884e,{'showHidden':![],'depth':null}));this[_0x48d0('0x3c')](_0x2e884e[_0x48d0('0x18')],_[_0x48d0('0x3d')](_0x2e884e[_0x48d0('0x3e')])[0x0],_0x2e884e[_0x48d0('0x3f')]);if(this['isNotNull'](_0x2e884e[_0x48d0('0x3e')])&&this[_0x48d0('0x14')](_0x2e884e[_0x48d0('0x3e')][_0x48d0('0x40')])){if(_[_0x48d0('0x15')](this[_0x48d0('0x19')][_0x2e884e[_0x48d0('0x18')]])){this[_0x48d0('0x19')][_0x2e884e[_0x48d0('0x18')]]={'routeId':_0x2e884e[_0x48d0('0x3f')],'variables':this[_0x48d0('0xb')][_0x2e884e['uniqueid']]};logger[_0x48d0('0x21')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x2e884e['uniqueid'],_0x2e884e[_0x48d0('0x3e')]['outboundrouteid'],_['keys'](_0x2e884e[_0x48d0('0x3e')])[0x0],_0x2e884e[_0x48d0('0x3f')]);logger[_0x48d0('0x2d')](_0x48d0('0x41'),_0x2e884e[_0x48d0('0x18')],util[_0x48d0('0x26')](this[_0x48d0('0x19')][_0x2e884e[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));this[_0x48d0('0x16')]('voice:outbound',_0x48d0('0x42'),this[_0x48d0('0x19')][_0x2e884e[_0x48d0('0x18')]]);}}}}catch(_0x2f8659){logger['error'](_0x48d0('0x43'),_0x2e884e[_0x48d0('0x18')],util[_0x48d0('0x26')](_0x2f8659,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x48d0('0x13')]['addVariable']=function(_0x20f233,_0x5ac433,_0x38fdd7){var _0x4af582=[_0x48d0('0x44'),'rtpaudioqosbridged',_0x48d0('0x45'),'rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged',_0x48d0('0x46'),_0x48d0('0x47'),_0x48d0('0x48'),'sipuri',_0x48d0('0x49'),_0x48d0('0x4a'),'membercalls',_0x48d0('0x4b'),_0x48d0('0x4c'),_0x48d0('0x4d'),'membername',_0x48d0('0x4e'),_0x48d0('0x4f')];if(!_[_0x48d0('0x50')](_0x5ac433)&&!_[_0x48d0('0x51')](_0x4af582,_0x5ac433)){if(_['isUndefined'](this[_0x48d0('0xb')][_0x20f233])){this[_0x48d0('0xb')][_0x20f233]={};}this[_0x48d0('0xb')][_0x20f233][_0x5ac433]=_0x38fdd7;}};VoiceDialReport['prototype']['syncHangup']=function(_0x4f7f98){try{if(this[_0x48d0('0x14')](_0x4f7f98)){logger[_0x48d0('0x2d')]('[%s][voiceDialReport][hangup]\x20event:',_0x4f7f98[_0x48d0('0x18')],util[_0x48d0('0x26')](_0x4f7f98,{'showHidden':![],'depth':null}));if(this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]]){logger[_0x48d0('0x21')](_0x48d0('0x52'),_0x4f7f98[_0x48d0('0x18')],_0x4f7f98[_0x48d0('0x53')]);this[_0x48d0('0x19')][_0x4f7f98['uniqueid']]['endtime']=moment()['format'](_0x48d0('0x1a'));this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x54')]=moment(this['channels'][_0x4f7f98['uniqueid']][_0x48d0('0x55')])[_0x48d0('0x56')](this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x57')],_0x48d0('0x58'));this[_0x48d0('0x19')][_0x4f7f98['uniqueid']]['lastevent']='complete';this[_0x48d0('0x9')]['total']+=0x1;if(this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x32')]){this[_0x48d0('0x9')][_0x48d0('0x59')]+=0x1;this[_0x48d0('0x19')][_0x4f7f98['uniqueid']][_0x48d0('0x5a')]=moment(this[_0x48d0('0x19')][_0x4f7f98['uniqueid']][_0x48d0('0x32')])['diff'](this['channels'][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x57')],_0x48d0('0x58'));this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x5b')]=moment(this[_0x48d0('0x19')][_0x4f7f98['uniqueid']][_0x48d0('0x55')])[_0x48d0('0x56')](this[_0x48d0('0x19')][_0x4f7f98['uniqueid']][_0x48d0('0x32')],'seconds');this[_0x48d0('0x9')][_0x48d0('0x5c')]+=this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]]['holdtime']||0x0;this[_0x48d0('0x9')][_0x48d0('0x5d')]+=this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x5b')];}this[_0x48d0('0x9')][_0x48d0('0x5e')]+=this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]][_0x48d0('0x54')];logger[_0x48d0('0x2d')](_0x48d0('0x5f'),_0x4f7f98[_0x48d0('0x18')],util[_0x48d0('0x26')](this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));ami[_0x48d0('0x16')](_0x48d0('0x60'),this[_0x48d0('0x19')][_0x4f7f98['uniqueid']]);logger[_0x48d0('0x2d')](_0x48d0('0x61'),_0x4f7f98[_0x48d0('0x18')],util[_0x48d0('0x26')](this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialend',this[_0x48d0('0x19')][_0x4f7f98['uniqueid']]);logger[_0x48d0('0x2d')](_0x48d0('0x62'),_0x4f7f98[_0x48d0('0x18')],util[_0x48d0('0x26')](this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]],{'showHidden':![],'depth':null}));this[_0x48d0('0x16')](_0x48d0('0x28'),_0x48d0('0x63'),this['outbound']);logger[_0x48d0('0x21')](_0x48d0('0x64'),JSON[_0x48d0('0x65')](this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]]));logger[_0x48d0('0x2d')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x4f7f98[_0x48d0('0x18')],util[_0x48d0('0x26')](this['channels'][_0x4f7f98['uniqueid']],{'showHidden':![],'depth':null}));this[_0x48d0('0x16')](_0x48d0('0x28'),_0x48d0('0x66'),this['channels'][_0x4f7f98[_0x48d0('0x18')]]);delete this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x18')]];}else if(this[_0x48d0('0x19')][_0x4f7f98['linkedid']]){this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x67')]][_0x48d0('0x18')]=this[_0x48d0('0x19')][_0x4f7f98[_0x48d0('0x67')]][_0x48d0('0x68')];}if(this['variables'][_0x4f7f98[_0x48d0('0x18')]]){delete this[_0x48d0('0xb')][_0x4f7f98[_0x48d0('0x18')]];}}}catch(_0x55ad5a){logger[_0x48d0('0x2a')](_0x48d0('0x69'),_0x4f7f98[_0x48d0('0x18')],util['inspect'](_0x55ad5a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x48d0('0x13')][_0x48d0('0x10')]=function(_0x13125d){try{if(this[_0x48d0('0x14')](_0x13125d)){logger['debug'](_0x48d0('0x6a'),_0x13125d[_0x48d0('0x18')],util['inspect'](_0x13125d,{'showHidden':![],'depth':null}));if(_0x13125d[_0x48d0('0x6b')][_0x48d0('0x6c')]()==='set'){_0x13125d[_0x48d0('0x6d')]=(_0x13125d['appdata']||_0x13125d[_0x48d0('0x6d')])[_0x48d0('0x6c')]();if(_[_0x48d0('0x6e')](_0x13125d[_0x48d0('0x6d')],_0x48d0('0x6f'))){if(_['isUndefined'](this['applications'][_0x13125d['uniqueid']]))this[_0x48d0('0xa')][_0x13125d[_0x48d0('0x18')]]={};logger[_0x48d0('0x21')](_0x48d0('0x70'),_0x13125d['uniqueid'],_0x13125d[_0x48d0('0x6b')],_0x13125d['applicationdata']);var _0xecd9eb=_0x13125d[_0x48d0('0x6d')][_0x48d0('0x71')]('=');var _0x1b9e9c=_0xecd9eb[0x0]['match'](/cdr\((.*)\)/);if(_0x1b9e9c)this[_0x48d0('0xa')][_0x13125d[_0x48d0('0x18')]][_0x1b9e9c[0x1]]=_0xecd9eb[0x1];}}}}catch(_0x543a81){logger['error'](_0x48d0('0x72'),_0x13125d[_0x48d0('0x18')],util[_0x48d0('0x26')](_0x543a81,{'showHidden':![],'depth':null}));}};module[_0x48d0('0x73')]=VoiceDialReport;
\ No newline at end of file
index ca16c88..4542938 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['hangup','fullybooted','syncFullyBooted','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','queueStatusComplete','unlockRR','switch','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','queueReports','[%s][voiceQueueReport][checkQueueReport]','inspect','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','Trunk','active','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedIn','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','emitVoiceQueueChannelSave','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexit','transfer','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','local/','linkedid','seconds','FORWARDTRANSFER','transfertype','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','queuecallerexitAt','lastevent','custom:timeout','varset','queueposition','EXITWITHKEY','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%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:','syncAttendedTransfer','transfereeuniqueid','transferexten','secondtransfererexten','ATTENDEDTRANSFER','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','[%s][voiceQueueReport][attendedtransfer]','BLINDTRANSFER','BLIND','extension','transfererchannel','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','agents','channels','queueChannels','voiceQueues','flagQueueSummary','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','syncVarSet'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0xb458,0xca));var _0x8b45=function(_0x29f56c,_0x2d2032){_0x29f56c=_0x29f56c-0x0;var _0x4f10bf=_0xb458[_0x29f56c];return _0x4f10bf;};'use strict';var _=require(_0x8b45('0x0'));var moment=require(_0x8b45('0x1'));var util=require(_0x8b45('0x2'));var md5=require(_0x8b45('0x3'));var Redis=require('ioredis');var config=require(_0x8b45('0x4'));var logger=require(_0x8b45('0x5'))(_0x8b45('0x6'));var ami=require(_0x8b45('0x7'));var QueueReport=require(_0x8b45('0x8'));config[_0x8b45('0x9')]=_[_0x8b45('0xa')](config[_0x8b45('0x9')],{'host':_0x8b45('0xb'),'port':0x18eb});var io=require(_0x8b45('0xc'))(new Redis(config[_0x8b45('0x9')]));var Sequence=function(){};Sequence[_0x8b45('0xd')][_0x8b45('0xe')]=function(_0x54f299){this[_0x8b45('0xf')]=this['tail']?this['tail'][_0x8b45('0x10')](_0x54f299):_0x54f299();};function VoiceQueueReport(_0x40b585){this[_0x8b45('0x11')]=new Sequence();this['queueReports']={};this[_0x8b45('0x12')]=_0x40b585['agents'];this[_0x8b45('0x13')]=_0x40b585[_0x8b45('0x14')];this[_0x8b45('0x15')]=_0x40b585[_0x8b45('0x15')];this[_0x8b45('0x16')]=!![];this['campaigns']=_0x40b585['campaigns'];this[_0x8b45('0x17')]={};ami['on'](_0x8b45('0x18'),this[_0x8b45('0x19')][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x1b'),this[_0x8b45('0x1c')][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x1d'),this[_0x8b45('0x1e')][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x1f'),this[_0x8b45('0x20')][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x21'),this[_0x8b45('0x22')]['bind'](this));ami['on']('agentcomplete',this[_0x8b45('0x23')][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x24'),this[_0x8b45('0x25')][_0x8b45('0x1a')](this));ami['on']('varset',this[_0x8b45('0x26')]['bind'](this));ami['on'](_0x8b45('0x27'),this['syncHangup'][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x28'),this[_0x8b45('0x29')]['bind'](this));ami['on'](_0x8b45('0x2a'),this[_0x8b45('0x2b')]['bind'](this));ami['on'](_0x8b45('0x2c'),this[_0x8b45('0x2d')][_0x8b45('0x1a')](this));ami['on']('musiconholdstop',this[_0x8b45('0x2e')][_0x8b45('0x1a')](this));ami['on'](_0x8b45('0x2f'),this['syncAttendedTransfer'][_0x8b45('0x1a')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x8b45('0x1a')](this));this[_0x8b45('0x30')]();this[_0x8b45('0x31')]();}function clearChannels(_0x1c38a3){if(!_[_0x8b45('0x32')](_0x1c38a3)){for(var _0x5ce26a in _0x1c38a3){if(_0x1c38a3[_0x8b45('0x33')](_0x5ce26a)){delete _0x1c38a3[_0x5ce26a];}}}}function clearCampaigns(_0x120b37){if(!_['isEmpty'](_0x120b37)){for(var _0x4b6465 in _0x120b37){if(_0x120b37['hasOwnProperty'](_0x4b6465)){_0x120b37[_0x4b6465][_0x8b45('0x34')]=0x0;}}}}function clearVoiceQueues(_0x4160f7){if(!_['isEmpty'](_0x4160f7)){for(var _0x4ca445 in _0x4160f7){if(_0x4160f7['hasOwnProperty'](_0x4ca445)){_0x4160f7[_0x4ca445]['originated']=0x0;_0x4160f7[_0x4ca445]['talking']=0x0;_0x4160f7[_0x4ca445][_0x8b45('0x35')]=0x0;_0x4160f7[_0x4ca445]['waiting']=0x0;_0x4160f7[_0x4ca445][_0x8b45('0x36')]=!![];}}}}function clearAgentBooked(_0x275c07){if(!_[_0x8b45('0x32')](_0x275c07)){for(var _0x33dbb4 in _0x275c07){if(_0x275c07['hasOwnProperty'](_0x33dbb4)){_0x275c07[_0x33dbb4][_0x8b45('0x37')]=!![];}}}}VoiceQueueReport['prototype']['clearZombieChannels']=function(){var _0x1d4bc0=this;for(var _0x2acae9 in this[_0x8b45('0x13')]){if(this[_0x8b45('0x13')][_0x8b45('0x33')](_0x2acae9)&&!this[_0x8b45('0x13')][_0x2acae9][_0x8b45('0x38')]){this[_0x8b45('0x11')][_0x8b45('0xe')](function(){if(!_[_0x8b45('0x39')](_0x1d4bc0[_0x8b45('0x13')][_0x2acae9])){return ami[_0x8b45('0x3a')]({'action':_0x8b45('0x3b'),'channel':_0x1d4bc0[_0x8b45('0x13')][_0x2acae9][_0x8b45('0x3c')]})[_0x8b45('0x3d')](function(_0x4e4205){if(_0x4e4205[_0x8b45('0x3e')]===_0x8b45('0x3f')){setTimeout(function(){if(_0x1d4bc0['channels'][_0x2acae9]){delete _0x1d4bc0[_0x8b45('0x13')][_0x2acae9];logger[_0x8b45('0x40')](_0x8b45('0x41'),_0x2acae9,util['inspect'](_0x4e4205,{'showHidden':![],'depth':null}));}if(_0x1d4bc0[_0x8b45('0x42')][_0x2acae9]){delete _0x1d4bc0[_0x8b45('0x42')][_0x2acae9];logger['error'](_0x8b45('0x43'),_0x2acae9,util['inspect'](_0x4e4205,{'showHidden':![],'depth':null}));}if(_0x1d4bc0[_0x8b45('0x17')][_0x2acae9]){delete _0x1d4bc0['variables'][_0x2acae9];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x2acae9,util[_0x8b45('0x44')](_0x4e4205,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x29')]=function(){logger[_0x8b45('0x40')](_0x8b45('0x45'));clearChannels(this[_0x8b45('0x13')]);this['clearQueueReport'](this[_0x8b45('0x42')]);clearAgentBooked(this[_0x8b45('0x12')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x46')]=function(_0x2c4131){var _0x436712=this;if(!_[_0x8b45('0x32')](_0x2c4131)){for(var _0x4f32e3 in _0x2c4131){if(_0x2c4131['hasOwnProperty'](_0x4f32e3)){_0x436712[_0x8b45('0x47')](_0x2c4131[_0x4f32e3],'clearqueuereport');delete _0x2c4131[_0x4f32e3];}}}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x48')]=function(_0x4bf950,_0x3b94dc,_0x2674f5){io['to'](_0x4bf950)['emit'](_0x3b94dc,_0x2674f5);};VoiceQueueReport[_0x8b45('0xd')]['emitVoiceQueueChannelSave']=function(_0x3834a6,_0x4fc6d3){logger[_0x8b45('0x49')](_0x8b45('0x4a')+_0x4fc6d3+_0x8b45('0x4b'),_0x3834a6[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x3834a6,{'showHidden':![],'depth':null}));this[_0x8b45('0x48')](util[_0x8b45('0x4d')](_0x8b45('0x4e'),_0x3834a6[_0x8b45('0x4f')]),_0x8b45('0x50'),_0x3834a6);io[_0x8b45('0x48')](_0x8b45('0x51'),_0x3834a6);};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x47')]=function(_0x587b00,_0x2464cc){logger[_0x8b45('0x49')](_0x8b45('0x4a')+_0x2464cc+_0x8b45('0x52'),_0x587b00[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x587b00,{'showHidden':![],'depth':null}));this[_0x8b45('0x48')](util[_0x8b45('0x4d')](_0x8b45('0x4e'),_0x587b00[_0x8b45('0x4f')]),'voice_queue_channel:remove',_0x587b00);io[_0x8b45('0x48')](_0x8b45('0x53'),_0x587b00);};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x54')]=function(_0x4d5390,_0x38fb3f){if(_0x4d5390[_0x8b45('0x55')]===_0x8b45('0x56')){var _0xb4e3ad={'id':_0x4d5390['id'],'name':_0x4d5390[_0x8b45('0x4f')],'strategy':_0x4d5390[_0x8b45('0x57')],'answered':_0x4d5390[_0x8b45('0x58')],'available':_0x4d5390[_0x8b45('0x59')],'loggedIn':_0x4d5390['loggedIn'],'pTalking':_0x4d5390[_0x8b45('0x35')],'sumBillable':_0x4d5390[_0x8b45('0x5a')],'sumDuration':_0x4d5390[_0x8b45('0x5b')],'sumHoldTime':_0x4d5390[_0x8b45('0x5c')]||0x0,'talking':_0x4d5390[_0x8b45('0x5d')],'total':_0x4d5390[_0x8b45('0x5e')],'type':_0x4d5390[_0x8b45('0x55')],'unmanaged':_0x4d5390[_0x8b45('0x5f')],'abandoned':_0x4d5390['abandoned'],'waiting':_0x4d5390[_0x8b45('0x60')]};if(_0x4d5390[_0x8b45('0x61')]){_0xb4e3ad[_0x8b45('0x61')]={'id':_0x4d5390[_0x8b45('0x61')]['id'],'name':_0x4d5390['Trunk']['name'],'active':_0x4d5390[_0x8b45('0x61')][_0x8b45('0x62')],'callerid':_0x4d5390[_0x8b45('0x61')]['callerid']};}if(_0x4d5390[_0x8b45('0x63')]){_0xb4e3ad[_0x8b45('0x63')]={'id':_0x4d5390[_0x8b45('0x63')]['id'],'name':_0x4d5390[_0x8b45('0x63')][_0x8b45('0x4f')]};}var _0x2edc95=md5(JSON[_0x8b45('0x64')](_0xb4e3ad));if(_0x4d5390['md5']!==_0x2edc95){_0x4d5390[_0x8b45('0x3')]=_0x2edc95;logger[_0x8b45('0x49')](_0x8b45('0x65')+_0x38fb3f+_0x8b45('0x66'),util[_0x8b45('0x44')](_0xb4e3ad,{'showHidden':![],'depth':null}));this[_0x8b45('0x48')](util[_0x8b45('0x4d')](_0x8b45('0x4e'),_0xb4e3ad[_0x8b45('0x4f')]),_0x8b45('0x67'),_0xb4e3ad);}}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x68')]=function(_0x35399a){return _0x35399a!==null&&!_[_0x8b45('0x69')](_0x35399a);};VoiceQueueReport[_0x8b45('0xd')]['loopQueueShow']=function(){var _0x3d5f7b=this;setInterval(function(){_0x3d5f7b[_0x8b45('0x6a')]();ami[_0x8b45('0x3a')]({'action':'queues'})[_0x8b45('0x3d')](function(_0x44d32a){logger[_0x8b45('0x40')](_0x8b45('0x6b'),util[_0x8b45('0x44')](_0x44d32a,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x8b45('0xd')]['loopQueueSummary']=function(){var _0x21f441=this;setInterval(function(){if(_0x21f441['flagQueueSummary']){return ami['Action']({'action':_0x8b45('0x18')})[_0x8b45('0x6c')](function(_0x35ef77){_0x21f441[_0x8b45('0x16')]=![];})['catch'](function(_0x2259ec){logger['error'](_0x8b45('0x6d'),util[_0x8b45('0x44')](_0x2259ec,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype']['syncQueueSummary']=function(_0x36cf48){try{if(this['isNotNull'](_0x36cf48)&&this['isNotNull'](_0x36cf48[_0x8b45('0x6e')])){logger[_0x8b45('0x49')](_0x8b45('0x6f'),util['inspect'](_0x36cf48,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x15')][_0x36cf48['queue']]){logger[_0x8b45('0x70')](_0x8b45('0x71'),_0x36cf48[_0x8b45('0x6e')]);var _0x15dfab=_['countBy'](this[_0x8b45('0x13')],'queue')[_0x36cf48[_0x8b45('0x6e')]]||0x0;var _0x3e4354=_0x15dfab-_0x36cf48[_0x8b45('0x72')];if(this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]][_0x8b45('0x60')]!==_[_0x8b45('0x73')](_0x36cf48[_0x8b45('0x72')])||this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]][_0x8b45('0x74')]!==_[_0x8b45('0x73')](_0x36cf48[_0x8b45('0x75')])||this[_0x8b45('0x15')][_0x36cf48['queue']]['available']!==_['toNumber'](_0x36cf48['available'])||this[_0x8b45('0x15')][_0x36cf48['queue']][_0x8b45('0x5d')]!==_0x3e4354){this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]]['waiting']=_[_0x8b45('0x73')](_0x36cf48[_0x8b45('0x72')]);this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]][_0x8b45('0x74')]=_[_0x8b45('0x73')](_0x36cf48[_0x8b45('0x75')]);this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]]['available']=_[_0x8b45('0x73')](_0x36cf48[_0x8b45('0x59')]);this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]][_0x8b45('0x5d')]=_0x3e4354>0x0?_0x3e4354:0x0;this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]][_0x8b45('0x5d')]=this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]][_0x8b45('0x5d')]>_[_0x8b45('0x73')](_0x36cf48['loggedin'])?_[_0x8b45('0x73')](_0x36cf48['loggedin']):this['voiceQueues'][_0x36cf48['queue']][_0x8b45('0x5d')];this[_0x8b45('0x54')](this[_0x8b45('0x15')][_0x36cf48[_0x8b45('0x6e')]],'queuesummary');}logger[_0x8b45('0x49')](_0x8b45('0x76'),util[_0x8b45('0x44')](this['voiceQueues'][_0x36cf48[_0x8b45('0x6e')]],{'showHidden':![],'depth':null}));ami['emit'](_0x8b45('0x77'),this[_0x8b45('0x15')][_0x36cf48['queue']]);}}}catch(_0x42084f){logger['error'](_0x8b45('0x6d'),util['inspect'](_0x42084f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8b45('0x1c')]=function(_0x51737c){logger[_0x8b45('0x49')](_0x8b45('0x78'),util[_0x8b45('0x44')](_0x51737c,{'showHidden':![],'depth':null}));this[_0x8b45('0x16')]=!![];};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x52bea8){try{if(this[_0x8b45('0x68')](_0x52bea8)){logger[_0x8b45('0x49')]('[%s][voiceQueueReport][queuecallerjoin]',_0x52bea8['uniqueid'],util[_0x8b45('0x44')](_0x52bea8,{'showHidden':![],'depth':null}));if(_[_0x8b45('0x69')](this[_0x8b45('0x42')][_0x52bea8['uniqueid']]))this[_0x8b45('0x42')][_0x52bea8[_0x8b45('0x4c')]]=[];if(_[_0x8b45('0x69')](this[_0x8b45('0x13')][_0x52bea8['uniqueid']]))this[_0x8b45('0x13')][_0x52bea8[_0x8b45('0x4c')]]={};var _0x30d4ac=new QueueReport();_0x30d4ac[_0x8b45('0x4f')]=_0x52bea8['queue'];_0x30d4ac['type']=this[_0x8b45('0x15')][_0x30d4ac[_0x8b45('0x4f')]]&&this[_0x8b45('0x15')][_0x30d4ac[_0x8b45('0x4f')]][_0x8b45('0x55')]?this[_0x8b45('0x15')][_0x30d4ac[_0x8b45('0x4f')]][_0x8b45('0x55')]||_0x8b45('0x56'):_0x8b45('0x56');_0x30d4ac[_0x8b45('0x6e')]=_0x52bea8[_0x8b45('0x6e')];_0x30d4ac[_0x8b45('0x79')]=moment()[_0x8b45('0x4d')](_0x8b45('0x7a'));_0x30d4ac['position']=_0x52bea8['position'];_0x30d4ac[_0x8b45('0x7b')]=_0x52bea8[_0x8b45('0x7b')];_0x30d4ac[_0x8b45('0x4c')]=_0x52bea8[_0x8b45('0x4c')];_0x30d4ac[_0x8b45('0x7c')]=this[_0x8b45('0x13')][_0x52bea8[_0x8b45('0x4c')]][_0x8b45('0x7c')];logger[_0x8b45('0x70')](_0x8b45('0x7d'),_0x30d4ac[_0x8b45('0x4f')],_0x30d4ac[_0x8b45('0x55')]);_[_0x8b45('0x7e')](_0x30d4ac,_[_0x8b45('0x7f')](_0x52bea8,_[_0x8b45('0x80')](_0x30d4ac)));this[_0x8b45('0x42')][_0x52bea8[_0x8b45('0x4c')]][_0x8b45('0x81')](_0x30d4ac);this[_0x8b45('0x13')][_0x52bea8[_0x8b45('0x4c')]]=_0x30d4ac;this['emitVoiceQueueChannelSave'](_0x30d4ac,_0x8b45('0x1d'));}}catch(_0x1c8b56){logger[_0x8b45('0x40')](_0x8b45('0x82'),_0x52bea8[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x1c8b56,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x20')]=function(_0x292ada){try{if(this['isNotNull'](_0x292ada)){logger[_0x8b45('0x49')](_0x8b45('0x83'),_0x292ada[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x292ada,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x292ada[_0x8b45('0x4c')]]){var _0xc71e7f=_[_0x8b45('0x84')](this['queueReports'][_0x292ada[_0x8b45('0x4c')]]);_0xc71e7f[_0x8b45('0x85')]=![];_0xc71e7f[_0x8b45('0x86')]=null;_0xc71e7f[_0x8b45('0x87')]=_0x292ada['holdtime'];_0xc71e7f[_0x8b45('0x88')]=_0x292ada[_0x8b45('0x88')];_0xc71e7f[_0x8b45('0x1f')]=!![];_0xc71e7f[_0x8b45('0x89')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xc71e7f[_0x8b45('0x8a')]=_0x8b45('0x8b');_0xc71e7f['lastAssignedTo']=null;logger[_0x8b45('0x70')](_0x8b45('0x8c'),_0xc71e7f[_0x8b45('0x4f')],_0xc71e7f[_0x8b45('0x55')]);this[_0x8b45('0x13')][_0x292ada[_0x8b45('0x4c')]]=_0xc71e7f;this[_0x8b45('0x47')](_0xc71e7f,_0x8b45('0x1f'));}}}catch(_0x5ba9cd){logger['error']('[%s][voiceQueueReport][queuecallerabandon]',_0x292ada[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x5ba9cd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')]['syncQueueCallerLeave']=function(_0x119da2){try{if(this['isNotNull'](_0x119da2)){logger[_0x8b45('0x49')](_0x8b45('0x8d'),_0x119da2[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x119da2,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x42')][_0x119da2[_0x8b45('0x4c')]]){var _0x500046=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x119da2[_0x8b45('0x4c')]]);_0x500046[_0x8b45('0x8e')]=moment()['format'](_0x8b45('0x7a'));_0x500046[_0x8b45('0x8f')]=_0x119da2[_0x8b45('0x8f')];_0x500046[_0x8b45('0x90')]=_0x119da2[_0x8b45('0x90')];logger[_0x8b45('0x70')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x500046[_0x8b45('0x4f')],_0x500046[_0x8b45('0x55')],_0x119da2['connectedlinenum'],_0x119da2[_0x8b45('0x90')]);this['channels'][_0x119da2[_0x8b45('0x4c')]]=_0x500046;this[_0x8b45('0x91')](_0x500046,_0x8b45('0x21'));}}}catch(_0x328da3){logger[_0x8b45('0x40')]('[%s][voiceQueueReport][queuecallerleave]',_0x119da2[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x328da3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x25')]=function(_0xafbab5){try{if(this[_0x8b45('0x68')](_0xafbab5)){logger[_0x8b45('0x49')]('[%s][voiceQueueReport][agentconnect]',_0xafbab5[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0xafbab5,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x42')][_0xafbab5[_0x8b45('0x4c')]]){var _0x1f51f1=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0xafbab5[_0x8b45('0x4c')]]);_0x1f51f1[_0x8b45('0x85')]=!![];_0x1f51f1[_0x8b45('0x8a')]=_0x8b45('0x92');logger[_0x8b45('0x70')](_0x8b45('0x93'),_0x1f51f1[_0x8b45('0x4f')],_0x1f51f1[_0x8b45('0x55')]);}}}catch(_0x46a232){logger[_0x8b45('0x40')](_0x8b45('0x94'),_0xafbab5[_0x8b45('0x4c')],util['inspect'](_0x46a232,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0x23')]=function(_0x33b48b){try{if(this[_0x8b45('0x68')](_0x33b48b)){logger[_0x8b45('0x49')](_0x8b45('0x95'),_0x33b48b['uniqueid'],util[_0x8b45('0x44')](_0x33b48b,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x42')][_0x33b48b['uniqueid']]){var _0x322312=_['last'](this[_0x8b45('0x42')][_0x33b48b[_0x8b45('0x4c')]]);_0x322312['queuecallerabandon']=![];_0x322312[_0x8b45('0x89')]=null;_0x322312[_0x8b45('0x96')]=!![];_0x322312[_0x8b45('0x97')]=_0x33b48b[_0x8b45('0x98')];_0x322312[_0x8b45('0x87')]=_0x33b48b[_0x8b45('0x87')];_0x322312['queuecallercomplete']=!![];_0x322312[_0x8b45('0x99')]=![];_0x322312['queuecallerexitAt']=null;if(!_0x322312[_0x8b45('0x9a')]){if(_0x33b48b[_0x8b45('0x9b')]==_0x8b45('0x9a')){_0x322312[_0x8b45('0x8a')]='COMPLETED';logger[_0x8b45('0x70')](_0x8b45('0x9c'),_0x322312[_0x8b45('0x4f')],_0x322312[_0x8b45('0x55')]);}else{if(_['startsWith'](_0x33b48b[_0x8b45('0x3c')]['toLowerCase'](),_0x8b45('0x9d'))){if(this['queueReports'][_0x33b48b[_0x8b45('0x9e')]]){var _0x5c8ca7=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x33b48b[_0x8b45('0x9e')]]);_0x5c8ca7[_0x8b45('0x85')]=![];_0x5c8ca7[_0x8b45('0x99')]=!![];_0x5c8ca7['queuecallerexitAt']=moment(_0x322312[_0x8b45('0x79')])['add'](_0x33b48b[_0x8b45('0x87')],_0x8b45('0x9f'))[_0x8b45('0x4d')](_0x8b45('0x7a'));_0x5c8ca7[_0x8b45('0x8a')]=_0x8b45('0xa0');_0x5c8ca7[_0x8b45('0x9a')]=!![];_0x5c8ca7[_0x8b45('0xa1')]='FORWARD';_0x5c8ca7['transferexten']=_0x33b48b[_0x8b45('0xa2')];_0x5c8ca7[_0x8b45('0xa3')]=_0x33b48b[_0x8b45('0x4c')];logger['info'](_0x8b45('0xa4'),_0x5c8ca7[_0x8b45('0x4f')],_0x5c8ca7['type']);var _0x22338e=this[_0x8b45('0x42')][_0x33b48b[_0x8b45('0x9e')]];this[_0x8b45('0x42')][_0x33b48b[_0x8b45('0x9e')]]=this[_0x8b45('0x42')][_0x33b48b[_0x8b45('0x4c')]];this['queueReports'][_0x33b48b[_0x8b45('0x4c')]]=_0x22338e;}}else{_0x322312[_0x8b45('0x8a')]='COMPLETEDBY'+_0x33b48b[_0x8b45('0x9b')][_0x8b45('0xa5')]();logger['info'](_0x8b45('0xa6'),_0x322312[_0x8b45('0x4f')],_0x322312[_0x8b45('0x55')],_0x322312['queuecallerexitreason']);}}}this[_0x8b45('0x13')][_0x33b48b[_0x8b45('0x4c')]]=_0x322312;this[_0x8b45('0x47')](_0x322312,_0x8b45('0xa7'));}}}catch(_0x38fb02){logger[_0x8b45('0x40')]('[%s][voiceQueueReport][agentcomplete]',_0x33b48b['uniqueid'],util[_0x8b45('0x44')](_0x38fb02,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x2c98b5){try{if(this[_0x8b45('0x68')](_0x2c98b5)){logger['debug'](_0x8b45('0xa8'),_0x2c98b5[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x2c98b5,{'showHidden':![],'depth':null}));this[_0x8b45('0xa9')](_0x2c98b5['uniqueid'],_[_0x8b45('0x80')](_0x2c98b5[_0x8b45('0xaa')])[0x0],_0x2c98b5[_0x8b45('0xab')]);if(this[_0x8b45('0x42')][_0x2c98b5['uniqueid']]){var _0x554d8c=_[_0x8b45('0x84')](this['queueReports'][_0x2c98b5[_0x8b45('0x4c')]]);if(_0x554d8c){if(this[_0x8b45('0x68')](_0x2c98b5[_0x8b45('0xaa')])&&this[_0x8b45('0x68')](_0x2c98b5[_0x8b45('0xaa')][_0x8b45('0xac')])){switch(_0x2c98b5[_0x8b45('0xab')]){case'CONTINUE':_0x554d8c[_0x8b45('0x99')]=![];_0x554d8c[_0x8b45('0xad')]=null;break;case'TIMEOUT':_0x554d8c[_0x8b45('0xae')]='timeout';_0x554d8c['queuecallerexit']=!![];_0x554d8c[_0x8b45('0xad')]=moment()['format'](_0x8b45('0x7a'));_0x554d8c[_0x8b45('0x8e')]=moment()['format'](_0x8b45('0x7a'));logger[_0x8b45('0x49')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x2c98b5['uniqueid'],util[_0x8b45('0x44')](_0x554d8c,{'showHidden':![],'depth':null}));ami[_0x8b45('0x48')](_0x8b45('0xaf'),_0x554d8c);break;default:_0x554d8c[_0x8b45('0x99')]=!![];_0x554d8c[_0x8b45('0xad')]=moment()[_0x8b45('0x4d')](_0x8b45('0x7a'));_0x554d8c[_0x8b45('0x8e')]=moment()[_0x8b45('0x4d')](_0x8b45('0x7a'));}_0x554d8c[_0x8b45('0x1f')]=![];_0x554d8c[_0x8b45('0x89')]=null;_0x554d8c['queuecallerexitreason']=_0x2c98b5[_0x8b45('0xab')];this[_0x8b45('0x13')][_0x2c98b5[_0x8b45('0x4c')]]=_0x554d8c;this[_0x8b45('0x47')](_0x554d8c,_0x8b45('0xb0'));}else if(this[_0x8b45('0x68')](_0x2c98b5[_0x8b45('0xaa')])&&this[_0x8b45('0x68')](_0x2c98b5[_0x8b45('0xaa')][_0x8b45('0xb1')])){if(!_0x554d8c[_0x8b45('0x1f')]){_0x554d8c[_0x8b45('0x99')]=!![];_0x554d8c[_0x8b45('0xad')]=moment()['format'](_0x8b45('0x7a'));_0x554d8c[_0x8b45('0x8a')]=_0x8b45('0xb2');_0x554d8c['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x8b45('0x13')][_0x2c98b5[_0x8b45('0x4c')]]=_0x554d8c;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x2c98b5[_0x8b45('0x4c')],_0x554d8c[_0x8b45('0x4f')],_0x554d8c[_0x8b45('0x55')],_[_0x8b45('0x80')](_0x2c98b5[_0x8b45('0xaa')])[0x0],_0x2c98b5[_0x8b45('0xab')]);_0x554d8c['variables']=this[_0x8b45('0x17')][_0x2c98b5[_0x8b45('0x4c')]];}}}}catch(_0x493e76){logger[_0x8b45('0x40')](_0x8b45('0xa8'),_0x2c98b5[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x493e76,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0xa9')]=function(_0x5324ae,_0x5b9fc2,_0x280e56){var _0x457285=['rtpaudioqos','rtpaudioqosbridged',_0x8b45('0xb3'),_0x8b45('0xb4'),_0x8b45('0xb5'),_0x8b45('0xb6'),_0x8b45('0xb7'),_0x8b45('0xb8'),'sipcallid',_0x8b45('0xb9'),_0x8b45('0xba'),'bridgepvtcallid',_0x8b45('0xbb'),_0x8b45('0xbc'),_0x8b45('0xbd'),_0x8b45('0xbe'),_0x8b45('0x98'),_0x8b45('0xbf'),_0x8b45('0xc0')];if(!_[_0x8b45('0x39')](_0x5b9fc2)&&!_[_0x8b45('0xc1')](_0x457285,_0x5b9fc2)){if(_['isUndefined'](this[_0x8b45('0x17')][_0x5324ae])){this[_0x8b45('0x17')][_0x5324ae]={};}this['variables'][_0x5324ae][_0x5b9fc2]=_0x280e56;}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0xc2')]=function(_0x97a9e2){try{if(this[_0x8b45('0x68')](_0x97a9e2)){logger['debug'](_0x8b45('0xc3'),_0x97a9e2[_0x8b45('0x4c')],util['inspect'](_0x97a9e2,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x42')][_0x97a9e2[_0x8b45('0x4c')]]){for(var _0x173a20=0x0,_0x17af56={};_0x173a20<this['queueReports'][_0x97a9e2[_0x8b45('0x4c')]][_0x8b45('0xc4')];_0x173a20+=0x1){_0x17af56=this['queueReports'][_0x97a9e2[_0x8b45('0x4c')]][_0x173a20];if(this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]]){if(_0x17af56['queuecallerexit']&&_0x17af56[_0x8b45('0x9a')]!=!![]){this['voiceQueues'][_0x17af56[_0x8b45('0x6e')]][_0x8b45('0x5f')]+=0x1;}if(_0x17af56[_0x8b45('0x1f')]){this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]]['abandoned']+=0x1;}this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]][_0x8b45('0x5c')]+=moment(_0x17af56[_0x8b45('0x8e')])[_0x8b45('0xc5')](_0x17af56[_0x8b45('0x79')],_0x8b45('0x9f'))||0x0;if(_0x173a20===this[_0x8b45('0x42')][_0x97a9e2['uniqueid']][_0x8b45('0xc4')]-0x1){this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]]['sumDuration']+=moment()[_0x8b45('0xc6')](0x0)[_0x8b45('0xc5')](_0x17af56[_0x8b45('0x79')],'seconds');this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]][_0x8b45('0x5e')]+=0x1;if(_0x17af56[_0x8b45('0x85')]){this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]]['answered']+=0x1;this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]][_0x8b45('0x5a')]+=moment()[_0x8b45('0xc6')](0x0)['diff'](_0x17af56[_0x8b45('0x8e')],_0x8b45('0x9f'));_0x17af56[_0x8b45('0x86')]=moment()[_0x8b45('0x4d')](_0x8b45('0x7a'));_0x17af56[_0x8b45('0x99')]=![];_0x17af56[_0x8b45('0xad')]=null;}if(_0x17af56['queuecallerexit']&&_0x17af56[_0x8b45('0x9a')]!=!![]){_0x17af56[_0x8b45('0xae')]=_0x8b45('0x5f');logger['debug'](_0x8b45('0xc7'),_0x97a9e2[_0x8b45('0x4c')],util['inspect'](_0x17af56,{'showHidden':![],'depth':null}));ami[_0x8b45('0x48')](_0x8b45('0xc8'),_0x17af56);}if(_0x17af56[_0x8b45('0x1f')]){_0x17af56[_0x8b45('0xae')]=_0x8b45('0xc9');logger[_0x8b45('0x49')](_0x8b45('0xca'),_0x97a9e2[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x17af56,{'showHidden':![],'depth':null}));ami[_0x8b45('0x48')](_0x8b45('0xcb'),_0x17af56);}}else{this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]][_0x8b45('0x5b')]+=this[_0x8b45('0x15')][_0x17af56['queue']][_0x8b45('0x5c')];}logger[_0x8b45('0x70')](_0x8b45('0xcc'),_0x97a9e2[_0x8b45('0x4c')],_0x17af56[_0x8b45('0x4f')],_0x17af56[_0x8b45('0x55')],_0x97a9e2[_0x8b45('0xcd')]);this[_0x8b45('0x13')][_0x97a9e2['uniqueid']]=_0x17af56;this['emitVoiceQueueChannelRemove'](_0x17af56,_0x8b45('0x27'));this[_0x8b45('0x54')](this[_0x8b45('0x15')][_0x17af56[_0x8b45('0x6e')]],_0x8b45('0x27'));}}logger['debug'](_0x8b45('0xce'),_0x97a9e2[_0x8b45('0x4c')],util[_0x8b45('0x44')](this['queueReports'][_0x97a9e2['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x8b45('0x48')]('custom:voiceQueueReport',this[_0x8b45('0x42')][_0x97a9e2[_0x8b45('0x4c')]]);delete this[_0x8b45('0x42')][_0x97a9e2[_0x8b45('0x4c')]];delete this[_0x8b45('0x13')][_0x97a9e2[_0x8b45('0x4c')]];}if(this[_0x8b45('0x17')][_0x97a9e2[_0x8b45('0x4c')]]){delete this[_0x8b45('0x17')][_0x97a9e2[_0x8b45('0x4c')]];}}}catch(_0x3c3aae){logger[_0x8b45('0x40')](_0x8b45('0xc3'),_0x97a9e2[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x3c3aae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')][_0x8b45('0xcf')]=function(_0x4e8672){try{if(this[_0x8b45('0x68')](_0x4e8672)){logger[_0x8b45('0x49')]('[%s][voiceQueueReport][attendedtransfer]',_0x4e8672[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x4e8672,{'showHidden':![],'depth':null}));var _0x3445d1;if(this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd0')]]){_0x3445d1=_['last'](this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd0')]]);_0x3445d1[_0x8b45('0xd1')]=_0x4e8672[_0x8b45('0xd2')];_0x3445d1[_0x8b45('0xa3')]=_0x4e8672['secondtransfereruniqueid'];_0x3445d1['queuecallerexitreason']=_0x8b45('0xd3');_0x3445d1[_0x8b45('0x9a')]=!![];_0x3445d1['transfertype']=_0x8b45('0xd4');if(this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd5')]]){var _0x66d7d8=this[_0x8b45('0x42')][_0x4e8672['secondtransfereruniqueid']];this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd5')]]=this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd0')]];this['queueReports'][_0x4e8672[_0x8b45('0xd0')]]=_0x66d7d8;var _0x192541=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd0')]]);_0x192541['switch']=!![];}logger[_0x8b45('0x70')](_0x8b45('0xd6'),_0x4e8672[_0x8b45('0x4c')],_0x3445d1['name'],_0x3445d1[_0x8b45('0x55')],_0x3445d1[_0x8b45('0xd1')],_0x3445d1[_0x8b45('0xa3')]);}else if(this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd7')]]){_0x3445d1=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x4e8672['transfertargetuniqueid']]);_0x3445d1[_0x8b45('0xd1')]=_0x4e8672['origtransfererexten'];_0x3445d1[_0x8b45('0xa3')]=_0x4e8672[_0x8b45('0xd8')];_0x3445d1[_0x8b45('0x8a')]=_0x8b45('0xd3');_0x3445d1[_0x8b45('0x9a')]=!![];_0x3445d1[_0x8b45('0xa1')]='ATTENDED';if(this['queueReports'][_0x4e8672['origtransfereruniqueid']]){var _0x66d7d8=this['queueReports'][_0x4e8672['origtransfereruniqueid']];this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd8')]]=this[_0x8b45('0x42')][_0x4e8672['transfertargetuniqueid']];this['queueReports'][_0x4e8672[_0x8b45('0xd7')]]=_0x66d7d8;var _0x192541=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x4e8672[_0x8b45('0xd7')]]);_0x192541[_0x8b45('0x38')]=!![];}logger[_0x8b45('0x70')](_0x8b45('0xd6'),_0x4e8672['uniqueid'],_0x3445d1[_0x8b45('0x4f')],_0x3445d1['type'],_0x3445d1[_0x8b45('0xd1')],_0x3445d1['transferuniqueid']);}}}catch(_0xcd3069){logger['error'](_0x8b45('0xd9'),_0x4e8672['uniqueid'],util[_0x8b45('0x44')](_0xcd3069,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x8b45('0xd')]['syncBlindTransfer']=function(_0x585d76){try{if(this[_0x8b45('0x68')](_0x585d76)){logger[_0x8b45('0x49')]('[%s][voiceQueueReport][blindtransfer]',_0x585d76[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x585d76,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x42')][_0x585d76[_0x8b45('0xd0')]]){var _0x3d0941=_['last'](this[_0x8b45('0x42')][_0x585d76[_0x8b45('0xd0')]]);_0x3d0941[_0x8b45('0x8a')]=_0x8b45('0xda');_0x3d0941[_0x8b45('0x9a')]=!![];_0x3d0941[_0x8b45('0xa1')]=_0x8b45('0xdb');_0x3d0941['transferexten']=_0x585d76[_0x8b45('0xdc')];_0x3d0941[_0x8b45('0xa3')]=_0x585d76[_0x8b45('0xd0')];logger[_0x8b45('0x70')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x585d76[_0x8b45('0x4c')],_0x3d0941[_0x8b45('0x4f')],_0x3d0941[_0x8b45('0x55')],_0x3d0941[_0x8b45('0xd1')],_0x3d0941[_0x8b45('0xa3')]);this[_0x8b45('0xc2')]({'event':'BlindTransfer','uniqueid':_0x585d76[_0x8b45('0xd0')],'context':_0x585d76['context'],'channel':_0x585d76[_0x8b45('0xdd')]});}}}catch(_0x332f81){logger['error'](_0x8b45('0xde'),_0x585d76['uniqueid'],util[_0x8b45('0x44')](_0x332f81,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8b45('0x2d')]=function(_0x123f33){try{if(this[_0x8b45('0x68')](_0x123f33)){logger[_0x8b45('0x49')](_0x8b45('0xdf'),_0x123f33[_0x8b45('0x4c')],util['inspect'](_0x123f33,{'showHidden':![],'depth':null}));if(this[_0x8b45('0x42')][_0x123f33['uniqueid']]){var _0x584939=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x123f33[_0x8b45('0x4c')]]);if(!_[_0x8b45('0x39')](_0x584939['queuecallerleaveAt'])){_0x584939['mohstarttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x8b45('0x70')](_0x8b45('0xe0'),_0x123f33[_0x8b45('0x4c')],_0x584939[_0x8b45('0xe1')]);}}}}catch(_0x3ffcc3){logger[_0x8b45('0x40')](_0x8b45('0xdf'),_0x123f33[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x3ffcc3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x5743bc){try{if(this[_0x8b45('0x68')](_0x5743bc)){logger[_0x8b45('0x49')](_0x8b45('0xe2'),_0x5743bc[_0x8b45('0x4c')],util['inspect'](_0x5743bc,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5743bc[_0x8b45('0x4c')]]){var _0x5c6378=_[_0x8b45('0x84')](this[_0x8b45('0x42')][_0x5743bc[_0x8b45('0x4c')]]);if(!_[_0x8b45('0x39')](_0x5c6378[_0x8b45('0xe1')])){_0x5c6378['mohtime']+=moment()[_0x8b45('0xc6')](0x0)[_0x8b45('0xc5')](_0x5c6378[_0x8b45('0xe1')],'seconds');logger[_0x8b45('0x70')](_0x8b45('0xe3'),_0x5743bc[_0x8b45('0x4c')],_0x5c6378['mohtime']);delete _0x5c6378[_0x8b45('0xe1')];}}}}catch(_0x5936a0){logger[_0x8b45('0x40')](_0x8b45('0xe2'),_0x5743bc[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x5936a0,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x8b45('0x2b')]=function(_0x418a84){try{if(this[_0x8b45('0x68')](_0x418a84)){logger[_0x8b45('0x49')](_0x8b45('0xe4'),_0x418a84[_0x8b45('0x4c')],util['inspect'](_0x418a84,{'showHidden':![],'depth':null}));if(_0x418a84[_0x8b45('0xe5')][_0x8b45('0xe6')]()==='set'){_0x418a84[_0x8b45('0xe7')]=_0x418a84[_0x8b45('0xe8')]&&_0x418a84[_0x8b45('0xe8')][_0x8b45('0xe9')](_0x8b45('0xea'))?_0x418a84[_0x8b45('0xe8')]:(_0x418a84[_0x8b45('0xe8')]||_0x418a84[_0x8b45('0xe7')])['toLowerCase']();if(_['startsWith'](_0x418a84[_0x8b45('0xe7')]['toLowerCase'](),_0x8b45('0xeb'))){logger[_0x8b45('0x70')](_0x8b45('0xec'),_0x418a84[_0x8b45('0x4c')],_0x418a84['application'],_0x418a84[_0x8b45('0xe7')]);if(_['isUndefined'](this[_0x8b45('0x13')][_0x418a84[_0x8b45('0x4c')]]))this[_0x8b45('0x13')][_0x418a84[_0x8b45('0x4c')]]={};var _0x17f7cb=_0x418a84[_0x8b45('0xe7')][_0x8b45('0xed')]('=');var _0x216701=_0x17f7cb[0x0]['toLowerCase']()[_0x8b45('0xee')](/cdr\((.*)\)/);if(_0x216701)this[_0x8b45('0x13')][_0x418a84[_0x8b45('0x4c')]][_0x216701[0x1]]=_0x17f7cb[0x1];}}}}catch(_0x2f3256){logger['error'](_0x8b45('0xef'),_0x418a84[_0x8b45('0x4c')],util[_0x8b45('0x44')](_0x2f3256,{'showHidden':![],'depth':null}));}};module[_0x8b45('0xf0')]=VoiceQueueReport;
\ No newline at end of file
+var _0x43c8=['channel','message','error','inspect','[%s][voiceQueueReport][checkVariables]','syncFullyBooted','clearQueueReport','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','strategy','answered','available','sumDuration','sumHoldTime','total','type','unmanaged','abandoned','Trunk','active','callerid','Interval','debug',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','queues','catch','[voiceQueueReport][queues]','then','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedIn','loggedin','emitVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','isUndefined','inbound','queuecallerjoinAt','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','add','seconds','transfer','transferexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','[%s][voiceQueueReport][hangup]','length','diff','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','syncAttendedTransfer','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','transfertype','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','moment','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','defaults','redis','localhost','socket.io-emitter','enqueue','tail','queueReports','agents','channels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncNewExten','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','originated','isEmpty','talking','pTalking','waiting','queueStatusComplete','unlockRR','prototype','clearZombieChannels','switch','sequence','isNil','Action','status'];(function(_0x56c56a,_0x54e5fb){var _0x31e15d=function(_0x58f5a3){while(--_0x58f5a3){_0x56c56a['push'](_0x56c56a['shift']());}};_0x31e15d(++_0x54e5fb);}(_0x43c8,0xaf));var _0x843c=function(_0x5501c9,_0xea3b23){_0x5501c9=_0x5501c9-0x0;var _0x1ff31c=_0x43c8[_0x5501c9];return _0x1ff31c;};'use strict';var _=require('lodash');var moment=require(_0x843c('0x0'));var util=require('util');var md5=require(_0x843c('0x1'));var Redis=require(_0x843c('0x2'));var config=require(_0x843c('0x3'));var logger=require(_0x843c('0x4'))(_0x843c('0x5'));var ami=require(_0x843c('0x6'));var QueueReport=require(_0x843c('0x7'));config['redis']=_[_0x843c('0x8')](config[_0x843c('0x9')],{'host':_0x843c('0xa'),'port':0x18eb});var io=require(_0x843c('0xb'))(new Redis(config[_0x843c('0x9')]));var Sequence=function(){};Sequence['prototype'][_0x843c('0xc')]=function(_0x41f56d){this['tail']=this[_0x843c('0xd')]?this['tail']['finally'](_0x41f56d):_0x41f56d();};function VoiceQueueReport(_0x204fdb){this['sequence']=new Sequence();this[_0x843c('0xe')]={};this[_0x843c('0xf')]=_0x204fdb[_0x843c('0xf')];this[_0x843c('0x10')]=_0x204fdb['queueChannels'];this[_0x843c('0x11')]=_0x204fdb[_0x843c('0x11')];this[_0x843c('0x12')]=!![];this[_0x843c('0x13')]=_0x204fdb[_0x843c('0x13')];this[_0x843c('0x14')]={};ami['on'](_0x843c('0x15'),this[_0x843c('0x16')][_0x843c('0x17')](this));ami['on'](_0x843c('0x18'),this[_0x843c('0x19')][_0x843c('0x17')](this));ami['on'](_0x843c('0x1a'),this[_0x843c('0x1b')][_0x843c('0x17')](this));ami['on']('queuecallerabandon',this[_0x843c('0x1c')][_0x843c('0x17')](this));ami['on'](_0x843c('0x1d'),this[_0x843c('0x1e')][_0x843c('0x17')](this));ami['on']('agentcomplete',this[_0x843c('0x1f')][_0x843c('0x17')](this));ami['on'](_0x843c('0x20'),this[_0x843c('0x21')]['bind'](this));ami['on'](_0x843c('0x22'),this[_0x843c('0x23')][_0x843c('0x17')](this));ami['on'](_0x843c('0x24'),this[_0x843c('0x25')]['bind'](this));ami['on'](_0x843c('0x26'),this['syncFullyBooted'][_0x843c('0x17')](this));ami['on']('newexten',this[_0x843c('0x27')][_0x843c('0x17')](this));ami['on']('musiconholdstart',this[_0x843c('0x28')][_0x843c('0x17')](this));ami['on'](_0x843c('0x29'),this[_0x843c('0x2a')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x843c('0x17')](this));ami['on'](_0x843c('0x2b'),this[_0x843c('0x2c')][_0x843c('0x17')](this));this[_0x843c('0x2d')]();this[_0x843c('0x2e')]();}function clearChannels(_0x37bc86){if(!_['isEmpty'](_0x37bc86)){for(var _0x4584be in _0x37bc86){if(_0x37bc86[_0x843c('0x2f')](_0x4584be)){delete _0x37bc86[_0x4584be];}}}}function clearCampaigns(_0x1a6a52){if(!_['isEmpty'](_0x1a6a52)){for(var _0x2a34d2 in _0x1a6a52){if(_0x1a6a52['hasOwnProperty'](_0x2a34d2)){_0x1a6a52[_0x2a34d2][_0x843c('0x30')]=0x0;}}}}function clearVoiceQueues(_0x1ee7e3){if(!_[_0x843c('0x31')](_0x1ee7e3)){for(var _0x4f61af in _0x1ee7e3){if(_0x1ee7e3[_0x843c('0x2f')](_0x4f61af)){_0x1ee7e3[_0x4f61af][_0x843c('0x30')]=0x0;_0x1ee7e3[_0x4f61af][_0x843c('0x32')]=0x0;_0x1ee7e3[_0x4f61af][_0x843c('0x33')]=0x0;_0x1ee7e3[_0x4f61af][_0x843c('0x34')]=0x0;_0x1ee7e3[_0x4f61af][_0x843c('0x35')]=!![];}}}}function clearAgentBooked(_0x4e2a13){if(!_[_0x843c('0x31')](_0x4e2a13)){for(var _0x4d23bd in _0x4e2a13){if(_0x4e2a13[_0x843c('0x2f')](_0x4d23bd)){_0x4e2a13[_0x4d23bd][_0x843c('0x36')]=!![];}}}}VoiceQueueReport[_0x843c('0x37')][_0x843c('0x38')]=function(){var _0x51aebb=this;for(var _0x1ac9a5 in this[_0x843c('0x10')]){if(this[_0x843c('0x10')][_0x843c('0x2f')](_0x1ac9a5)&&!this[_0x843c('0x10')][_0x1ac9a5][_0x843c('0x39')]){this[_0x843c('0x3a')][_0x843c('0xc')](function(){if(!_[_0x843c('0x3b')](_0x51aebb[_0x843c('0x10')][_0x1ac9a5])){return ami[_0x843c('0x3c')]({'action':_0x843c('0x3d'),'channel':_0x51aebb['channels'][_0x1ac9a5][_0x843c('0x3e')]})['catch'](function(_0x326979){if(_0x326979[_0x843c('0x3f')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x51aebb[_0x843c('0x10')][_0x1ac9a5]){delete _0x51aebb[_0x843c('0x10')][_0x1ac9a5];logger[_0x843c('0x40')]('[%s][voiceQueueReport][checkChannel]',_0x1ac9a5,util[_0x843c('0x41')](_0x326979,{'showHidden':![],'depth':null}));}if(_0x51aebb[_0x843c('0xe')][_0x1ac9a5]){delete _0x51aebb['queueReports'][_0x1ac9a5];logger[_0x843c('0x40')]('[%s][voiceQueueReport][checkQueueReport]',_0x1ac9a5,util[_0x843c('0x41')](_0x326979,{'showHidden':![],'depth':null}));}if(_0x51aebb[_0x843c('0x14')][_0x1ac9a5]){delete _0x51aebb[_0x843c('0x14')][_0x1ac9a5];logger['error'](_0x843c('0x42'),_0x1ac9a5,util[_0x843c('0x41')](_0x326979,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x43')]=function(){logger[_0x843c('0x40')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x843c('0x10')]);this[_0x843c('0x44')](this[_0x843c('0xe')]);clearAgentBooked(this[_0x843c('0xf')]);clearVoiceQueues(this[_0x843c('0x11')]);clearCampaigns(this[_0x843c('0x13')]);};VoiceQueueReport['prototype'][_0x843c('0x44')]=function(_0x2b6e4c){var _0x256f02=this;if(!_[_0x843c('0x31')](_0x2b6e4c)){for(var _0x462ddb in _0x2b6e4c){if(_0x2b6e4c[_0x843c('0x2f')](_0x462ddb)){_0x256f02[_0x843c('0x45')](_0x2b6e4c[_0x462ddb],'clearqueuereport');delete _0x2b6e4c[_0x462ddb];}}}};VoiceQueueReport['prototype'][_0x843c('0x46')]=function(_0x3b0ce7,_0x346a86,_0x52c9a1){io['to'](_0x3b0ce7)[_0x843c('0x46')](_0x346a86,_0x52c9a1);};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x47')]=function(_0x2083da,_0xdd9ce){logger['debug'](_0x843c('0x48')+_0xdd9ce+_0x843c('0x49'),_0x2083da[_0x843c('0x4a')],util[_0x843c('0x41')](_0x2083da,{'showHidden':![],'depth':null}));this[_0x843c('0x46')](util[_0x843c('0x4b')](_0x843c('0x4c'),_0x2083da[_0x843c('0x4d')]),_0x843c('0x4e'),_0x2083da);io[_0x843c('0x46')](_0x843c('0x4f'),_0x2083da);};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x45')]=function(_0x1846d7,_0x33243a){logger['debug']('[%s][voiceQueueReport]['+_0x33243a+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x1846d7[_0x843c('0x4a')],util['inspect'](_0x1846d7,{'showHidden':![],'depth':null}));this[_0x843c('0x46')](util[_0x843c('0x4b')]('voice:queue:%s',_0x1846d7[_0x843c('0x4d')]),'voice_queue_channel:remove',_0x1846d7);io['emit']('voice_queue_presence:remove',_0x1846d7);};VoiceQueueReport[_0x843c('0x37')]['emitVoiceQueueSummary']=function(_0x1d89a1,_0x2b26d0){if(_0x1d89a1['type']==='inbound'){var _0x10d611={'id':_0x1d89a1['id'],'name':_0x1d89a1[_0x843c('0x4d')],'strategy':_0x1d89a1[_0x843c('0x50')],'answered':_0x1d89a1[_0x843c('0x51')],'available':_0x1d89a1[_0x843c('0x52')],'loggedIn':_0x1d89a1['loggedIn'],'pTalking':_0x1d89a1[_0x843c('0x33')],'sumBillable':_0x1d89a1['sumBillable'],'sumDuration':_0x1d89a1[_0x843c('0x53')],'sumHoldTime':_0x1d89a1[_0x843c('0x54')]||0x0,'talking':_0x1d89a1[_0x843c('0x32')],'total':_0x1d89a1[_0x843c('0x55')],'type':_0x1d89a1[_0x843c('0x56')],'unmanaged':_0x1d89a1[_0x843c('0x57')],'abandoned':_0x1d89a1[_0x843c('0x58')],'waiting':_0x1d89a1[_0x843c('0x34')]};if(_0x1d89a1[_0x843c('0x59')]){_0x10d611[_0x843c('0x59')]={'id':_0x1d89a1[_0x843c('0x59')]['id'],'name':_0x1d89a1[_0x843c('0x59')][_0x843c('0x4d')],'active':_0x1d89a1[_0x843c('0x59')][_0x843c('0x5a')],'callerid':_0x1d89a1[_0x843c('0x59')][_0x843c('0x5b')]};}if(_0x1d89a1['Interval']){_0x10d611[_0x843c('0x5c')]={'id':_0x1d89a1[_0x843c('0x5c')]['id'],'name':_0x1d89a1[_0x843c('0x5c')][_0x843c('0x4d')]};}var _0x258378=md5(JSON['stringify'](_0x10d611));if(_0x1d89a1[_0x843c('0x1')]!==_0x258378){_0x1d89a1['md5']=_0x258378;logger[_0x843c('0x5d')]('[voiceQueueReport]['+_0x2b26d0+_0x843c('0x5e'),util[_0x843c('0x41')](_0x10d611,{'showHidden':![],'depth':null}));this[_0x843c('0x46')](util[_0x843c('0x4b')](_0x843c('0x4c'),_0x10d611[_0x843c('0x4d')]),_0x843c('0x5f'),_0x10d611);}}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x60')]=function(_0x3b290a){return _0x3b290a!==null&&!_['isUndefined'](_0x3b290a);};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x2e')]=function(){var _0x1e6802=this;setInterval(function(){_0x1e6802[_0x843c('0x38')]();ami[_0x843c('0x3c')]({'action':_0x843c('0x61')})[_0x843c('0x62')](function(_0x428884){logger[_0x843c('0x40')](_0x843c('0x63'),util['inspect'](_0x428884,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x2d')]=function(){var _0x37920d=this;setInterval(function(){if(_0x37920d['flagQueueSummary']){return ami[_0x843c('0x3c')]({'action':_0x843c('0x15')})[_0x843c('0x64')](function(_0x4eedf9){_0x37920d[_0x843c('0x12')]=![];})[_0x843c('0x62')](function(_0x124123){logger[_0x843c('0x40')]('[voiceQueueReport][queuesummary]',util['inspect'](_0x124123,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x16')]=function(_0x33cbd5){try{if(this['isNotNull'](_0x33cbd5)&&this[_0x843c('0x60')](_0x33cbd5[_0x843c('0x65')])){logger[_0x843c('0x5d')](_0x843c('0x66'),util[_0x843c('0x41')](_0x33cbd5,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x33cbd5[_0x843c('0x65')]]){logger['info'](_0x843c('0x67'),_0x33cbd5[_0x843c('0x65')]);var _0x3faa1f=_[_0x843c('0x68')](this[_0x843c('0x10')],'queue')[_0x33cbd5[_0x843c('0x65')]]||0x0;var _0x4f93a2=_0x3faa1f-_0x33cbd5[_0x843c('0x69')];if(this[_0x843c('0x11')][_0x33cbd5['queue']][_0x843c('0x34')]!==_[_0x843c('0x6a')](_0x33cbd5[_0x843c('0x69')])||this[_0x843c('0x11')][_0x33cbd5[_0x843c('0x65')]][_0x843c('0x6b')]!==_[_0x843c('0x6a')](_0x33cbd5[_0x843c('0x6c')])||this[_0x843c('0x11')][_0x33cbd5['queue']][_0x843c('0x52')]!==_[_0x843c('0x6a')](_0x33cbd5['available'])||this[_0x843c('0x11')][_0x33cbd5[_0x843c('0x65')]]['talking']!==_0x4f93a2){this[_0x843c('0x11')][_0x33cbd5[_0x843c('0x65')]][_0x843c('0x34')]=_['toNumber'](_0x33cbd5['callers']);this[_0x843c('0x11')][_0x33cbd5['queue']][_0x843c('0x6b')]=_[_0x843c('0x6a')](_0x33cbd5[_0x843c('0x6c')]);this[_0x843c('0x11')][_0x33cbd5[_0x843c('0x65')]][_0x843c('0x52')]=_[_0x843c('0x6a')](_0x33cbd5[_0x843c('0x52')]);this[_0x843c('0x11')][_0x33cbd5['queue']][_0x843c('0x32')]=_0x4f93a2>0x0?_0x4f93a2:0x0;this['voiceQueues'][_0x33cbd5[_0x843c('0x65')]]['talking']=this[_0x843c('0x11')][_0x33cbd5[_0x843c('0x65')]][_0x843c('0x32')]>_[_0x843c('0x6a')](_0x33cbd5['loggedin'])?_[_0x843c('0x6a')](_0x33cbd5[_0x843c('0x6c')]):this[_0x843c('0x11')][_0x33cbd5['queue']][_0x843c('0x32')];this[_0x843c('0x6d')](this[_0x843c('0x11')][_0x33cbd5[_0x843c('0x65')]],'queuesummary');}logger[_0x843c('0x5d')](_0x843c('0x6e'),util['inspect'](this[_0x843c('0x11')][_0x33cbd5['queue']],{'showHidden':![],'depth':null}));ami[_0x843c('0x46')](_0x843c('0x6f'),this[_0x843c('0x11')][_0x33cbd5['queue']]);}}}catch(_0x4770da){logger['error'](_0x843c('0x70'),util[_0x843c('0x41')](_0x4770da,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x19')]=function(_0x26fd19){logger[_0x843c('0x5d')](_0x843c('0x71'),util[_0x843c('0x41')](_0x26fd19,{'showHidden':![],'depth':null}));this[_0x843c('0x12')]=!![];};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x1b')]=function(_0x3e4ebb){try{if(this[_0x843c('0x60')](_0x3e4ebb)){logger[_0x843c('0x5d')](_0x843c('0x72'),_0x3e4ebb[_0x843c('0x4a')],util[_0x843c('0x41')](_0x3e4ebb,{'showHidden':![],'depth':null}));if(_[_0x843c('0x73')](this[_0x843c('0xe')][_0x3e4ebb[_0x843c('0x4a')]]))this[_0x843c('0xe')][_0x3e4ebb[_0x843c('0x4a')]]=[];if(_[_0x843c('0x73')](this['channels'][_0x3e4ebb[_0x843c('0x4a')]]))this['channels'][_0x3e4ebb[_0x843c('0x4a')]]={};var _0x323f27=new QueueReport();_0x323f27['name']=_0x3e4ebb['queue'];_0x323f27['type']=this[_0x843c('0x11')][_0x323f27[_0x843c('0x4d')]]&&this[_0x843c('0x11')][_0x323f27['name']][_0x843c('0x56')]?this[_0x843c('0x11')][_0x323f27[_0x843c('0x4d')]][_0x843c('0x56')]||_0x843c('0x74'):'inbound';_0x323f27[_0x843c('0x65')]=_0x3e4ebb[_0x843c('0x65')];_0x323f27[_0x843c('0x75')]=moment()[_0x843c('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x323f27[_0x843c('0x76')]=_0x3e4ebb['position'];_0x323f27['count']=_0x3e4ebb[_0x843c('0x77')];_0x323f27[_0x843c('0x4a')]=_0x3e4ebb[_0x843c('0x4a')];_0x323f27[_0x843c('0x78')]=this['channels'][_0x3e4ebb['uniqueid']][_0x843c('0x78')];logger[_0x843c('0x79')](_0x843c('0x7a'),_0x323f27[_0x843c('0x4d')],_0x323f27[_0x843c('0x56')]);_[_0x843c('0x7b')](_0x323f27,_[_0x843c('0x7c')](_0x3e4ebb,_[_0x843c('0x7d')](_0x323f27)));this[_0x843c('0xe')][_0x3e4ebb[_0x843c('0x4a')]][_0x843c('0x7e')](_0x323f27);this[_0x843c('0x10')][_0x3e4ebb[_0x843c('0x4a')]]=_0x323f27;this[_0x843c('0x47')](_0x323f27,_0x843c('0x1a'));}}catch(_0x319564){logger[_0x843c('0x40')](_0x843c('0x72'),_0x3e4ebb[_0x843c('0x4a')],util['inspect'](_0x319564,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x843c('0x1c')]=function(_0x44a77a){try{if(this[_0x843c('0x60')](_0x44a77a)){logger['debug']('[%s][voiceQueueReport][queuecallerabandon]',_0x44a77a['uniqueid'],util[_0x843c('0x41')](_0x44a77a,{'showHidden':![],'depth':null}));if(this[_0x843c('0xe')][_0x44a77a[_0x843c('0x4a')]]){var _0x3ad05d=_['last'](this['queueReports'][_0x44a77a[_0x843c('0x4a')]]);_0x3ad05d[_0x843c('0x7f')]=![];_0x3ad05d[_0x843c('0x80')]=null;_0x3ad05d[_0x843c('0x81')]=_0x44a77a[_0x843c('0x81')];_0x3ad05d['originalposition']=_0x44a77a[_0x843c('0x82')];_0x3ad05d[_0x843c('0x83')]=!![];_0x3ad05d['queuecallerabandonAt']=moment()[_0x843c('0x4b')](_0x843c('0x84'));_0x3ad05d[_0x843c('0x85')]=_0x843c('0x86');_0x3ad05d['lastAssignedTo']=null;logger[_0x843c('0x79')](_0x843c('0x87'),_0x3ad05d['name'],_0x3ad05d['type']);this[_0x843c('0x10')][_0x44a77a[_0x843c('0x4a')]]=_0x3ad05d;this[_0x843c('0x45')](_0x3ad05d,'queuecallerabandon');}}}catch(_0x1441fb){logger[_0x843c('0x40')]('[%s][voiceQueueReport][queuecallerabandon]',_0x44a77a['uniqueid'],util[_0x843c('0x41')](_0x1441fb,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x843c('0x1e')]=function(_0x44642a){try{if(this[_0x843c('0x60')](_0x44642a)){logger[_0x843c('0x5d')](_0x843c('0x88'),_0x44642a[_0x843c('0x4a')],util[_0x843c('0x41')](_0x44642a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x44642a[_0x843c('0x4a')]]){var _0x5959a8=_[_0x843c('0x89')](this[_0x843c('0xe')][_0x44642a[_0x843c('0x4a')]]);_0x5959a8[_0x843c('0x8a')]=moment()[_0x843c('0x4b')](_0x843c('0x84'));_0x5959a8['connectedlinenum']=_0x44642a[_0x843c('0x8b')];_0x5959a8['connectedlinename']=_0x44642a[_0x843c('0x8c')];logger[_0x843c('0x79')](_0x843c('0x8d'),_0x5959a8[_0x843c('0x4d')],_0x5959a8['type'],_0x44642a[_0x843c('0x8b')],_0x44642a[_0x843c('0x8c')]);this[_0x843c('0x10')][_0x44642a[_0x843c('0x4a')]]=_0x5959a8;this[_0x843c('0x47')](_0x5959a8,_0x843c('0x1d'));}}}catch(_0x3c682d){logger[_0x843c('0x40')](_0x843c('0x88'),_0x44642a['uniqueid'],util['inspect'](_0x3c682d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')]['syncAgentConnect']=function(_0x381f2a){try{if(this['isNotNull'](_0x381f2a)){logger[_0x843c('0x5d')]('[%s][voiceQueueReport][agentconnect]',_0x381f2a[_0x843c('0x4a')],util['inspect'](_0x381f2a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x381f2a['uniqueid']]){var _0x5a537c=_[_0x843c('0x89')](this[_0x843c('0xe')][_0x381f2a[_0x843c('0x4a')]]);_0x5a537c[_0x843c('0x7f')]=!![];_0x5a537c[_0x843c('0x85')]=_0x843c('0x8e');logger['info'](_0x843c('0x8f'),_0x5a537c[_0x843c('0x4d')],_0x5a537c[_0x843c('0x56')]);}}}catch(_0x4d49c0){logger[_0x843c('0x40')](_0x843c('0x90'),_0x381f2a[_0x843c('0x4a')],util[_0x843c('0x41')](_0x4d49c0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x1f')]=function(_0x8c6be3){try{if(this[_0x843c('0x60')](_0x8c6be3)){logger[_0x843c('0x5d')](_0x843c('0x91'),_0x8c6be3['uniqueid'],util['inspect'](_0x8c6be3,{'showHidden':![],'depth':null}));if(this[_0x843c('0xe')][_0x8c6be3[_0x843c('0x4a')]]){var _0x5366ce=_[_0x843c('0x89')](this[_0x843c('0xe')][_0x8c6be3[_0x843c('0x4a')]]);_0x5366ce[_0x843c('0x83')]=![];_0x5366ce[_0x843c('0x92')]=null;_0x5366ce['assigned']=!![];_0x5366ce[_0x843c('0x93')]=_0x8c6be3[_0x843c('0x94')];_0x5366ce[_0x843c('0x81')]=_0x8c6be3[_0x843c('0x81')];_0x5366ce[_0x843c('0x7f')]=!![];_0x5366ce[_0x843c('0x95')]=![];_0x5366ce[_0x843c('0x96')]=null;if(!_0x5366ce['transfer']){if(_0x8c6be3[_0x843c('0x97')]=='transfer'){_0x5366ce[_0x843c('0x85')]=_0x843c('0x98');logger[_0x843c('0x79')](_0x843c('0x99'),_0x5366ce[_0x843c('0x4d')],_0x5366ce[_0x843c('0x56')]);}else{if(_[_0x843c('0x9a')](_0x8c6be3[_0x843c('0x3e')]['toLowerCase'](),_0x843c('0x9b'))){if(this[_0x843c('0xe')][_0x8c6be3[_0x843c('0x9c')]]){var _0x1c3240=_['last'](this['queueReports'][_0x8c6be3[_0x843c('0x9c')]]);_0x1c3240[_0x843c('0x7f')]=![];_0x1c3240['queuecallerexit']=!![];_0x1c3240[_0x843c('0x96')]=moment(_0x5366ce['queuecallerjoinAt'])[_0x843c('0x9d')](_0x8c6be3[_0x843c('0x81')],_0x843c('0x9e'))[_0x843c('0x4b')](_0x843c('0x84'));_0x1c3240[_0x843c('0x85')]='FORWARDTRANSFER';_0x1c3240[_0x843c('0x9f')]=!![];_0x1c3240['transfertype']='FORWARD';_0x1c3240[_0x843c('0xa0')]=_0x8c6be3['destexten'];_0x1c3240[_0x843c('0xa1')]=_0x8c6be3[_0x843c('0x4a')];logger[_0x843c('0x79')](_0x843c('0xa2'),_0x1c3240[_0x843c('0x4d')],_0x1c3240[_0x843c('0x56')]);var _0x4d3d13=this[_0x843c('0xe')][_0x8c6be3['linkedid']];this[_0x843c('0xe')][_0x8c6be3[_0x843c('0x9c')]]=this['queueReports'][_0x8c6be3[_0x843c('0x4a')]];this[_0x843c('0xe')][_0x8c6be3[_0x843c('0x4a')]]=_0x4d3d13;}}else{_0x5366ce[_0x843c('0x85')]=_0x843c('0xa3')+_0x8c6be3[_0x843c('0x97')]['toUpperCase']();logger['info'](_0x843c('0xa4'),_0x5366ce[_0x843c('0x4d')],_0x5366ce[_0x843c('0x56')],_0x5366ce[_0x843c('0x85')]);}}}this['channels'][_0x8c6be3[_0x843c('0x4a')]]=_0x5366ce;this[_0x843c('0x45')](_0x5366ce,_0x843c('0xa5'));}}}catch(_0x16b5aa){logger[_0x843c('0x40')]('[%s][voiceQueueReport][agentcomplete]',_0x8c6be3[_0x843c('0x4a')],util['inspect'](_0x16b5aa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')]['syncVarSet']=function(_0x1ff38a){try{if(this[_0x843c('0x60')](_0x1ff38a)){logger[_0x843c('0x5d')]('[%s][voiceQueueReport][varset]',_0x1ff38a['uniqueid'],util[_0x843c('0x41')](_0x1ff38a,{'showHidden':![],'depth':null}));this[_0x843c('0xa6')](_0x1ff38a['uniqueid'],_[_0x843c('0x7d')](_0x1ff38a[_0x843c('0xa7')])[0x0],_0x1ff38a[_0x843c('0xa8')]);if(this[_0x843c('0xe')][_0x1ff38a[_0x843c('0x4a')]]){var _0x4571de=_['last'](this['queueReports'][_0x1ff38a[_0x843c('0x4a')]]);if(_0x4571de){if(this[_0x843c('0x60')](_0x1ff38a[_0x843c('0xa7')])&&this[_0x843c('0x60')](_0x1ff38a[_0x843c('0xa7')][_0x843c('0xa9')])){switch(_0x1ff38a[_0x843c('0xa8')]){case _0x843c('0xaa'):_0x4571de[_0x843c('0x95')]=![];_0x4571de['queuecallerexitAt']=null;break;case _0x843c('0xab'):_0x4571de[_0x843c('0xac')]=_0x843c('0xad');_0x4571de[_0x843c('0x95')]=!![];_0x4571de[_0x843c('0x96')]=moment()[_0x843c('0x4b')](_0x843c('0x84'));_0x4571de[_0x843c('0x8a')]=moment()['format'](_0x843c('0x84'));logger['debug'](_0x843c('0xae'),_0x1ff38a[_0x843c('0x4a')],util[_0x843c('0x41')](_0x4571de,{'showHidden':![],'depth':null}));ami['emit'](_0x843c('0xaf'),_0x4571de);break;default:_0x4571de[_0x843c('0x95')]=!![];_0x4571de[_0x843c('0x96')]=moment()[_0x843c('0x4b')](_0x843c('0x84'));_0x4571de['queuecallerleaveAt']=moment()[_0x843c('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4571de[_0x843c('0x83')]=![];_0x4571de[_0x843c('0x92')]=null;_0x4571de[_0x843c('0x85')]=_0x1ff38a['value'];this[_0x843c('0x10')][_0x1ff38a[_0x843c('0x4a')]]=_0x4571de;this[_0x843c('0x45')](_0x4571de,'varset');}else if(this[_0x843c('0x60')](_0x1ff38a['variable'])&&this[_0x843c('0x60')](_0x1ff38a[_0x843c('0xa7')][_0x843c('0xb0')])){if(!_0x4571de[_0x843c('0x83')]){_0x4571de['queuecallerexit']=!![];_0x4571de[_0x843c('0x96')]=moment()[_0x843c('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4571de[_0x843c('0x85')]='EXITWITHKEY';_0x4571de[_0x843c('0x8a')]=moment()['format'](_0x843c('0x84'));this[_0x843c('0x10')][_0x1ff38a['uniqueid']]=_0x4571de;}}logger['info'](_0x843c('0xb1'),_0x1ff38a['uniqueid'],_0x4571de[_0x843c('0x4d')],_0x4571de['type'],_[_0x843c('0x7d')](_0x1ff38a[_0x843c('0xa7')])[0x0],_0x1ff38a[_0x843c('0xa8')]);_0x4571de['variables']=this[_0x843c('0x14')][_0x1ff38a[_0x843c('0x4a')]];}}}}catch(_0x5b6f23){logger['error']('[%s][voiceQueueReport][varset]',_0x1ff38a['uniqueid'],util[_0x843c('0x41')](_0x5b6f23,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0xa6')]=function(_0x47cdf0,_0x39f844,_0x3df169){var _0x3b5de2=[_0x843c('0xb2'),_0x843c('0xb3'),'rtpaudioqosjitter','rtpaudioqosjitterbridged',_0x843c('0xb4'),_0x843c('0xb5'),_0x843c('0xb6'),'rtpaudioqosrttbridged',_0x843c('0xb7'),_0x843c('0xb8'),_0x843c('0xb9'),'bridgepvtcallid',_0x843c('0xba'),_0x843c('0xbb'),_0x843c('0xbc'),_0x843c('0xbd'),'membername',_0x843c('0xbe'),_0x843c('0xbf')];if(!_[_0x843c('0x3b')](_0x39f844)&&!_['includes'](_0x3b5de2,_0x39f844)){if(_[_0x843c('0x73')](this['variables'][_0x47cdf0])){this['variables'][_0x47cdf0]={};}this[_0x843c('0x14')][_0x47cdf0][_0x39f844]=_0x3df169;}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x25')]=function(_0x102a7f){try{if(this['isNotNull'](_0x102a7f)){logger['debug'](_0x843c('0xc0'),_0x102a7f[_0x843c('0x4a')],util[_0x843c('0x41')](_0x102a7f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x102a7f[_0x843c('0x4a')]]){for(var _0x2e234f=0x0,_0x1259ed={};_0x2e234f<this['queueReports'][_0x102a7f['uniqueid']][_0x843c('0xc1')];_0x2e234f+=0x1){_0x1259ed=this[_0x843c('0xe')][_0x102a7f['uniqueid']][_0x2e234f];if(this[_0x843c('0x11')][_0x1259ed[_0x843c('0x65')]]){if(_0x1259ed[_0x843c('0x95')]&&_0x1259ed[_0x843c('0x9f')]!=!![]){this[_0x843c('0x11')][_0x1259ed[_0x843c('0x65')]][_0x843c('0x57')]+=0x1;}if(_0x1259ed[_0x843c('0x83')]){this['voiceQueues'][_0x1259ed[_0x843c('0x65')]][_0x843c('0x58')]+=0x1;}this[_0x843c('0x11')][_0x1259ed[_0x843c('0x65')]][_0x843c('0x54')]+=moment(_0x1259ed[_0x843c('0x8a')])[_0x843c('0xc2')](_0x1259ed[_0x843c('0x75')],_0x843c('0x9e'))||0x0;if(_0x2e234f===this[_0x843c('0xe')][_0x102a7f[_0x843c('0x4a')]][_0x843c('0xc1')]-0x1){this[_0x843c('0x11')][_0x1259ed[_0x843c('0x65')]][_0x843c('0x53')]+=moment()['milliseconds'](0x0)[_0x843c('0xc2')](_0x1259ed['queuecallerjoinAt'],_0x843c('0x9e'));this['voiceQueues'][_0x1259ed[_0x843c('0x65')]][_0x843c('0x55')]+=0x1;if(_0x1259ed['queuecallercomplete']){this['voiceQueues'][_0x1259ed[_0x843c('0x65')]][_0x843c('0x51')]+=0x1;this[_0x843c('0x11')][_0x1259ed['queue']][_0x843c('0xc3')]+=moment()['milliseconds'](0x0)[_0x843c('0xc2')](_0x1259ed[_0x843c('0x8a')],_0x843c('0x9e'));_0x1259ed[_0x843c('0x80')]=moment()[_0x843c('0x4b')](_0x843c('0x84'));_0x1259ed[_0x843c('0x95')]=![];_0x1259ed['queuecallerexitAt']=null;}if(_0x1259ed[_0x843c('0x95')]&&_0x1259ed['transfer']!=!![]){_0x1259ed[_0x843c('0xac')]=_0x843c('0x57');logger[_0x843c('0x5d')](_0x843c('0xc4'),_0x102a7f['uniqueid'],util[_0x843c('0x41')](_0x1259ed,{'showHidden':![],'depth':null}));ami[_0x843c('0x46')](_0x843c('0xc5'),_0x1259ed);}if(_0x1259ed[_0x843c('0x83')]){_0x1259ed[_0x843c('0xac')]='abandoned';logger[_0x843c('0x5d')](_0x843c('0xc6'),_0x102a7f[_0x843c('0x4a')],util['inspect'](_0x1259ed,{'showHidden':![],'depth':null}));ami[_0x843c('0x46')]('custom:queuecallerabandon',_0x1259ed);}}else{this['voiceQueues'][_0x1259ed[_0x843c('0x65')]][_0x843c('0x53')]+=this[_0x843c('0x11')][_0x1259ed['queue']]['sumHoldTime'];}logger[_0x843c('0x79')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x102a7f[_0x843c('0x4a')],_0x1259ed[_0x843c('0x4d')],_0x1259ed[_0x843c('0x56')],_0x102a7f[_0x843c('0xc7')]);this[_0x843c('0x10')][_0x102a7f[_0x843c('0x4a')]]=_0x1259ed;this[_0x843c('0x45')](_0x1259ed,_0x843c('0x24'));this['emitVoiceQueueSummary'](this[_0x843c('0x11')][_0x1259ed[_0x843c('0x65')]],_0x843c('0x24'));}}logger[_0x843c('0x5d')](_0x843c('0xc8'),_0x102a7f[_0x843c('0x4a')],util[_0x843c('0x41')](this[_0x843c('0xe')][_0x102a7f[_0x843c('0x4a')]],{'showHidden':![],'depth':null}));ami['emit'](_0x843c('0xc9'),this[_0x843c('0xe')][_0x102a7f[_0x843c('0x4a')]]);delete this['queueReports'][_0x102a7f[_0x843c('0x4a')]];delete this[_0x843c('0x10')][_0x102a7f['uniqueid']];}if(this['variables'][_0x102a7f['uniqueid']]){delete this[_0x843c('0x14')][_0x102a7f['uniqueid']];}}}catch(_0x177f7a){logger['error'](_0x843c('0xc0'),_0x102a7f[_0x843c('0x4a')],util[_0x843c('0x41')](_0x177f7a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0xca')]=function(_0x1824fc){try{if(this['isNotNull'](_0x1824fc)){logger[_0x843c('0x5d')](_0x843c('0xcb'),_0x1824fc['uniqueid'],util['inspect'](_0x1824fc,{'showHidden':![],'depth':null}));var _0x305668;if(this[_0x843c('0xe')][_0x1824fc[_0x843c('0xcc')]]){_0x305668=_[_0x843c('0x89')](this['queueReports'][_0x1824fc[_0x843c('0xcc')]]);_0x305668[_0x843c('0xa0')]=_0x1824fc['secondtransfererexten'];_0x305668[_0x843c('0xa1')]=_0x1824fc[_0x843c('0xcd')];_0x305668[_0x843c('0x85')]=_0x843c('0xce');_0x305668[_0x843c('0x9f')]=!![];_0x305668['transfertype']=_0x843c('0xcf');if(this[_0x843c('0xe')][_0x1824fc['secondtransfereruniqueid']]){var _0x1bf68f=this[_0x843c('0xe')][_0x1824fc[_0x843c('0xcd')]];this[_0x843c('0xe')][_0x1824fc[_0x843c('0xcd')]]=this['queueReports'][_0x1824fc[_0x843c('0xcc')]];this[_0x843c('0xe')][_0x1824fc[_0x843c('0xcc')]]=_0x1bf68f;var _0x353948=_['last'](this[_0x843c('0xe')][_0x1824fc['transfereeuniqueid']]);_0x353948['switch']=!![];}logger['info'](_0x843c('0xd0'),_0x1824fc[_0x843c('0x4a')],_0x305668[_0x843c('0x4d')],_0x305668[_0x843c('0x56')],_0x305668[_0x843c('0xa0')],_0x305668['transferuniqueid']);}else if(this[_0x843c('0xe')][_0x1824fc[_0x843c('0xd1')]]){_0x305668=_[_0x843c('0x89')](this[_0x843c('0xe')][_0x1824fc[_0x843c('0xd1')]]);_0x305668[_0x843c('0xa0')]=_0x1824fc[_0x843c('0xd2')];_0x305668[_0x843c('0xa1')]=_0x1824fc[_0x843c('0xd3')];_0x305668[_0x843c('0x85')]=_0x843c('0xce');_0x305668['transfer']=!![];_0x305668[_0x843c('0xd4')]='ATTENDED';if(this[_0x843c('0xe')][_0x1824fc[_0x843c('0xd3')]]){var _0x1bf68f=this['queueReports'][_0x1824fc[_0x843c('0xd3')]];this[_0x843c('0xe')][_0x1824fc[_0x843c('0xd3')]]=this[_0x843c('0xe')][_0x1824fc[_0x843c('0xd1')]];this[_0x843c('0xe')][_0x1824fc['transfertargetuniqueid']]=_0x1bf68f;var _0x353948=_[_0x843c('0x89')](this[_0x843c('0xe')][_0x1824fc[_0x843c('0xd1')]]);_0x353948[_0x843c('0x39')]=!![];}logger[_0x843c('0x79')](_0x843c('0xd0'),_0x1824fc[_0x843c('0x4a')],_0x305668['name'],_0x305668['type'],_0x305668['transferexten'],_0x305668[_0x843c('0xa1')]);}}}catch(_0xb96b7f){logger[_0x843c('0x40')](_0x843c('0xcb'),_0x1824fc[_0x843c('0x4a')],util[_0x843c('0x41')](_0xb96b7f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x843c('0x2c')]=function(_0x4f67b6){try{if(this[_0x843c('0x60')](_0x4f67b6)){logger[_0x843c('0x5d')](_0x843c('0xd5'),_0x4f67b6[_0x843c('0x4a')],util[_0x843c('0x41')](_0x4f67b6,{'showHidden':![],'depth':null}));if(this[_0x843c('0xe')][_0x4f67b6[_0x843c('0xcc')]]){var _0x22067b=_[_0x843c('0x89')](this['queueReports'][_0x4f67b6['transfereeuniqueid']]);_0x22067b[_0x843c('0x85')]=_0x843c('0xd6');_0x22067b['transfer']=!![];_0x22067b[_0x843c('0xd4')]='BLIND';_0x22067b[_0x843c('0xa0')]=_0x4f67b6[_0x843c('0xd7')];_0x22067b[_0x843c('0xa1')]=_0x4f67b6['transfereeuniqueid'];logger['info'](_0x843c('0xd8'),_0x4f67b6[_0x843c('0x4a')],_0x22067b[_0x843c('0x4d')],_0x22067b[_0x843c('0x56')],_0x22067b['transferexten'],_0x22067b[_0x843c('0xa1')]);this[_0x843c('0x25')]({'event':_0x843c('0xd9'),'uniqueid':_0x4f67b6[_0x843c('0xcc')],'context':_0x4f67b6[_0x843c('0xda')],'channel':_0x4f67b6['transfererchannel']});}}}catch(_0x17de1a){logger[_0x843c('0x40')]('[%s][voiceQueueReport][blindtransfer]',_0x4f67b6[_0x843c('0x4a')],util['inspect'](_0x17de1a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')][_0x843c('0x28')]=function(_0x114383){try{if(this[_0x843c('0x60')](_0x114383)){logger[_0x843c('0x5d')](_0x843c('0xdb'),_0x114383['uniqueid'],util['inspect'](_0x114383,{'showHidden':![],'depth':null}));if(this[_0x843c('0xe')][_0x114383[_0x843c('0x4a')]]){var _0x35841e=_['last'](this[_0x843c('0xe')][_0x114383['uniqueid']]);if(!_[_0x843c('0x3b')](_0x35841e[_0x843c('0x8a')])){_0x35841e[_0x843c('0xdc')]=moment()[_0x843c('0x4b')](_0x843c('0x84'));logger[_0x843c('0x79')](_0x843c('0xdd'),_0x114383['uniqueid'],_0x35841e[_0x843c('0xdc')]);}}}}catch(_0x3396d0){logger[_0x843c('0x40')](_0x843c('0xdb'),_0x114383[_0x843c('0x4a')],util[_0x843c('0x41')](_0x3396d0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x843c('0x37')]['syncMusicOnHoldStop']=function(_0x21098d){try{if(this['isNotNull'](_0x21098d)){logger[_0x843c('0x5d')](_0x843c('0xde'),_0x21098d[_0x843c('0x4a')],util[_0x843c('0x41')](_0x21098d,{'showHidden':![],'depth':null}));if(this[_0x843c('0xe')][_0x21098d[_0x843c('0x4a')]]){var _0x4dcfe8=_[_0x843c('0x89')](this[_0x843c('0xe')][_0x21098d[_0x843c('0x4a')]]);if(!_[_0x843c('0x3b')](_0x4dcfe8[_0x843c('0xdc')])){_0x4dcfe8['mohtime']+=moment()['milliseconds'](0x0)[_0x843c('0xc2')](_0x4dcfe8[_0x843c('0xdc')],_0x843c('0x9e'));logger[_0x843c('0x79')](_0x843c('0xdf'),_0x21098d['uniqueid'],_0x4dcfe8[_0x843c('0xe0')]);delete _0x4dcfe8[_0x843c('0xdc')];}}}}catch(_0x41fefc){logger[_0x843c('0x40')](_0x843c('0xde'),_0x21098d[_0x843c('0x4a')],util['inspect'](_0x41fefc,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x843c('0x27')]=function(_0x5b9eee){try{if(this[_0x843c('0x60')](_0x5b9eee)){logger[_0x843c('0x5d')](_0x843c('0xe1'),_0x5b9eee[_0x843c('0x4a')],util[_0x843c('0x41')](_0x5b9eee,{'showHidden':![],'depth':null}));if(_0x5b9eee[_0x843c('0xe2')][_0x843c('0xe3')]()==='set'){_0x5b9eee[_0x843c('0xe4')]=_0x5b9eee[_0x843c('0xe5')]&&_0x5b9eee[_0x843c('0xe5')][_0x843c('0x9a')](_0x843c('0xe6'))?_0x5b9eee[_0x843c('0xe5')]:(_0x5b9eee[_0x843c('0xe5')]||_0x5b9eee[_0x843c('0xe4')])[_0x843c('0xe3')]();if(_[_0x843c('0x9a')](_0x5b9eee[_0x843c('0xe4')][_0x843c('0xe3')](),_0x843c('0xe7'))){logger[_0x843c('0x79')](_0x843c('0xe8'),_0x5b9eee[_0x843c('0x4a')],_0x5b9eee[_0x843c('0xe2')],_0x5b9eee[_0x843c('0xe4')]);if(_[_0x843c('0x73')](this[_0x843c('0x10')][_0x5b9eee[_0x843c('0x4a')]]))this[_0x843c('0x10')][_0x5b9eee[_0x843c('0x4a')]]={};var _0x3fc6aa=_0x5b9eee[_0x843c('0xe4')][_0x843c('0xe9')]('=');var _0xf42fc1=_0x3fc6aa[0x0]['toLowerCase']()[_0x843c('0xea')](/cdr\((.*)\)/);if(_0xf42fc1)this['channels'][_0x5b9eee['uniqueid']][_0xf42fc1[0x1]]=_0x3fc6aa[0x1];}}}}catch(_0x162386){logger[_0x843c('0x40')](_0x843c('0xeb'),_0x5b9eee['uniqueid'],util[_0x843c('0x41')](_0x162386,{'showHidden':![],'depth':null}));}};module[_0x843c('0xec')]=VoiceQueueReport;
\ No newline at end of file
index 7f6203b..c11ddc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fb5=['campaign','queue','CreateReportAgentPreview','../client'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0x2fb5,0x67));var _0x52fb=function(_0x1fafa5,_0x1aa281){_0x1fafa5=_0x1fafa5-0x0;var _0xcf08c9=_0x2fb5[_0x1fafa5];return _0xcf08c9;};'use strict';var client=require(_0x52fb('0x0'));exports['createHistory']=function(_0x2d201e){return function(){_0x2d201e[_0x52fb('0x1')]=_0x2d201e[_0x52fb('0x2')];return client['Request']('CreateReportAgentPreview',{'body':_0x2d201e,'log':_0x52fb('0x3')});};};
\ No newline at end of file
+var _0x0f7d=['createHistory','campaign','queue','CreateReportAgentPreview'];(function(_0x194058,_0x235389){var _0x5a719d=function(_0x28af14){while(--_0x28af14){_0x194058['push'](_0x194058['shift']());}};_0x5a719d(++_0x235389);}(_0x0f7d,0x1d8));var _0xd0f7=function(_0x51f40e,_0x14e8ea){_0x51f40e=_0x51f40e-0x0;var _0xb37761=_0x0f7d[_0x51f40e];return _0xb37761;};'use strict';var client=require('../client');exports[_0xd0f7('0x0')]=function(_0x2c9b25){return function(){_0x2c9b25[_0xd0f7('0x1')]=_0x2c9b25[_0xd0f7('0x2')];return client['Request']('CreateReportAgentPreview',{'body':_0x2c9b25,'log':_0xd0f7('0x3')});};};
\ No newline at end of file
index 4fe6692..abd7da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c5=['create'];(function(_0x191fd3,_0x9e8972){var _0x2583b3=function(_0xa54d4){while(--_0xa54d4){_0x191fd3['push'](_0x191fd3['shift']());}};_0x2583b3(++_0x9e8972);}(_0xe2c5,0xd3));var _0x5e2c=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xe2c5[_0x19b3f9];return _0x18c3f6;};'use strict';var client=require('../client');exports[_0x5e2c('0x0')]=function(_0x10edd3){return client['Request']('CreateAttachment',{'body':_0x10edd3,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x06f7=['create','Request','CreateAttachment','../client'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x06f7,0xd7));var _0x706f=function(_0x3fb9dd,_0x174fff){_0x3fb9dd=_0x3fb9dd-0x0;var _0x20136a=_0x06f7[_0x3fb9dd];return _0x20136a;};'use strict';var client=require(_0x706f('0x0'));exports[_0x706f('0x1')]=function(_0x236490){return client[_0x706f('0x2')](_0x706f('0x3'),{'body':_0x236490,'log':_0x706f('0x3')});};
\ No newline at end of file
index 0cb23ef..8daacaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x3ca476,_0x36081c){var _0x9b0f92=function(_0x9e792){while(--_0x9e792){_0x3ca476['push'](_0x3ca476['shift']());}};_0x9b0f92(++_0x36081c);}(_0x7a54,0x106));var _0x47a5=function(_0x1236e3,_0x3eda8f){_0x1236e3=_0x1236e3-0x0;var _0x5e0ffd=_0x7a54[_0x1236e3];return _0x5e0ffd;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0xadb5=['dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialCutDigit','Trunk','callerid','active','TrunkBackup','Interval','SquareProject','getCampaign','getCampaigns','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength'];(function(_0x4a84c7,_0x476ce8){var _0x3a5b5d=function(_0x429637){while(--_0x429637){_0x4a84c7['push'](_0x4a84c7['shift']());}};_0x3a5b5d(++_0x476ce8);}(_0xadb5,0xad));var _0x5adb=function(_0x1abca2,_0x3c0d78){_0x1abca2=_0x1abca2-0x0;var _0x2a8351=_0xadb5[_0x1abca2];return _0x2a8351;};'use strict';var client=require('../client');exports[_0x5adb('0x0')]=function(){return function(){return client['Request'](_0x5adb('0x1'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x2'),_0x5adb('0x3'),'active',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'dialOriginateTimeout',_0x5adb('0x7'),_0x5adb('0x8'),_0x5adb('0x9'),_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe'),_0x5adb('0xf'),_0x5adb('0x10'),_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),_0x5adb('0x14'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0x17'),'dialAMDActive',_0x5adb('0x18'),'dialAMDGreeting',_0x5adb('0x19'),'dialAMDTotalAnalysisTime',_0x5adb('0x1a'),_0x5adb('0x1b'),_0x5adb('0x1c'),'dialAMDSilenceThreshold',_0x5adb('0x1d'),_0x5adb('0x1e'),_0x5adb('0x1f'),'dialRandomLastDigitCallerIdNumber',_0x5adb('0x20')],'include':[{'model':'Trunk','as':_0x5adb('0x21'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':_0x5adb('0x21'),'as':_0x5adb('0x24'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':'Interval','as':_0x5adb('0x25'),'attributes':['id','name'],'include':[{'model':_0x5adb('0x25'),'as':'Intervals','attributes':['id',_0x5adb('0x2'),'interval']}]},{'model':'SquareProject','as':_0x5adb('0x26'),'attributes':['id',_0x5adb('0x2')]}]},'log':_0x5adb('0x27')});};};
\ No newline at end of file
index 9938f39..cbf10e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa502=['../client','createContact','CreateCmContact','Request','GetCmContact'];(function(_0x2ee133,_0xc8f9ae){var _0x4ae132=function(_0x1bcd9e){while(--_0x1bcd9e){_0x2ee133['push'](_0x2ee133['shift']());}};_0x4ae132(++_0xc8f9ae);}(_0xa502,0xfa));var _0x2a50=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa502[_0x2dafbe];return _0x58a45a;};'use strict';var client=require(_0x2a50('0x0'));exports[_0x2a50('0x1')]=function(_0x473f5d){return function(){return client['Request'](_0x2a50('0x2'),{'body':_0x473f5d,'log':'CreateCmContact'});};};exports['getContacts']=function(_0xb0a186){return function(){return client[_0x2a50('0x3')]('GetCmContact',{'options':_0xb0a186,'log':_0x2a50('0x4')});};};
\ No newline at end of file
+var _0x5dc4=['GetCmContact','../client','Request','CreateCmContact'];(function(_0x5be5c3,_0x13f40c){var _0x190643=function(_0x1dcb9c){while(--_0x1dcb9c){_0x5be5c3['push'](_0x5be5c3['shift']());}};_0x190643(++_0x13f40c);}(_0x5dc4,0xf1));var _0x45dc=function(_0x57bd7e,_0x327a8e){_0x57bd7e=_0x57bd7e-0x0;var _0x14d335=_0x5dc4[_0x57bd7e];return _0x14d335;};'use strict';var client=require(_0x45dc('0x0'));exports['createContact']=function(_0x5de4e5){return function(){return client[_0x45dc('0x1')](_0x45dc('0x2'),{'body':_0x5de4e5,'log':'CreateCmContact'});};};exports['getContacts']=function(_0x3a7bfb){return function(){return client[_0x45dc('0x1')](_0x45dc('0x3'),{'options':_0x3a7bfb,'log':_0x45dc('0x3')});};};
\ No newline at end of file
index 777b68f..142c82c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b5f=['moment','lodash','Request','GetCmHopper','CmContact','Contact','getCmHopper','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','VoiceQueueId','CampaignId','rescheduleContact','destroyContact','DestroyCmHopper','priority','DESC','scheduledat','GetContactDialer','getContactDialerIvr','format','ASC','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','Agent','name','unlockContact','getContactRecallMe','GetContactRecallMe','User','voicePause','../client'];(function(_0x5c5718,_0x32fb34){var _0x3bbcc5=function(_0x1a612d){while(--_0x1a612d){_0x5c5718['push'](_0x5c5718['shift']());}};_0x3bbcc5(++_0x32fb34);}(_0x6b5f,0x15e));var _0xf6b5=function(_0x468a18,_0x284281){_0x468a18=_0x468a18-0x0;var _0x1feec7=_0x6b5f[_0x468a18];return _0x1feec7;};'use strict';var client=require(_0xf6b5('0x0'));var moment=require(_0xf6b5('0x1'));var _=require(_0xf6b5('0x2'));exports['getContacts']=function(_0x3b926d,_0x463245){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x4'),{'options':{'where':{'VoiceQueueId':_0x3b926d},'include':[{'model':_0xf6b5('0x5'),'as':_0xf6b5('0x6')}],'limit':_0x463245,'raw':![]},'log':_0xf6b5('0x7')});};};exports['updateContacts']=function(_0x57aa0c,_0x26d173,_0x3d1244){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x8'),{'body':_0x57aa0c,'options':{'where':{'VoiceQueueId':_0x26d173,'scheduledat':{'$lte':moment()['format'](_0xf6b5('0x9'))}},'limit':_0x3d1244},'log':'UpdateCmHopper'});};};exports['rescheduleContact']=function(_0x2f3175){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x8'),{'body':_0x2f3175,'options':{'where':{'ContactId':_0x2f3175[_0xf6b5('0xa')],'ListId':_0x2f3175[_0xf6b5('0xb')],'VoiceQueueId':_0x2f3175[_0xf6b5('0xc')],'CampaignId':_0x2f3175[_0xf6b5('0xd')]}},'log':_0xf6b5('0xe')});};};exports[_0xf6b5('0xf')]=function(_0x423a76,_0x1c3981,_0x23266b){return function(){return client['Request']('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x423a76,'ListId':_0x1c3981,'ContactId':_0x23266b}},'log':_0xf6b5('0x10')});};};exports['getContactDialer']=function(_0x1c530d,_0xbcc18e,_0xf30fbd,_0x584e77){return function(){return client[_0xf6b5('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1c530d,'active':![],'scheduledat':{'$lte':moment()['format'](_0xf6b5('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0xbcc18e}}]},'order':[[_0xf6b5('0x11'),_0xf6b5('0x12')],[_0xf6b5('0x13'),_0x584e77],['id','ASC']],'raw':!![],'limit':_0xf30fbd},'log':_0xf6b5('0x14')});};};exports[_0xf6b5('0x15')]=function(_0x415d15,_0x257063,_0x492ed1){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x415d15,'active':![],'scheduledat':{'$lte':moment()[_0xf6b5('0x16')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0xf6b5('0x5'),'as':_0xf6b5('0x6')}],'order':[[_0xf6b5('0x11'),'DESC'],[_0xf6b5('0x13'),_0x492ed1],['id',_0xf6b5('0x17')]],'raw':!![],'limit':_0x257063},'log':'GetContactDialerIvr'});};};exports[_0xf6b5('0x18')]=function(_0x473019,_0x317808){return function(){_0x473019[_0xf6b5('0x19')]=_0x473019[_0xf6b5('0x1a')];return client[_0xf6b5('0x3')](_0xf6b5('0x1b'),{'body':_0x473019,'options':{'where':{'ContactId':_0x473019[_0xf6b5('0xa')],'ListId':_0x473019[_0xf6b5('0xb')],'VoiceQueueId':_0x473019['VoiceQueueId'],'CampaignId':_0x473019[_0xf6b5('0xd')],'active':_0x317808?undefined:!![]}},'log':_0xf6b5('0x1b')});};};exports[_0xf6b5('0x1c')]=function(_0x418e5b){return function(){return client['Request'](_0xf6b5('0x1d'),{'options':{'where':{'VoiceQueueId':_0x418e5b['id']?_0x418e5b['id']||null:null}},'log':_0xf6b5('0x1c')});};};exports[_0xf6b5('0x1e')]=function(_0xd9c348){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x1f'),{'options':{'where':{'id':_0xd9c348},'include':[{'model':_0xf6b5('0x5'),'as':_0xf6b5('0x6')},{'model':'User','as':_0xf6b5('0x20'),'attributes':['id','name']},{'model':'VoiceQueue','as':'Queue','attributes':['id',_0xf6b5('0x21')]}],'raw':!![]},'log':_0xf6b5('0x7')});};};exports[_0xf6b5('0x22')]=function(_0x2e61ed,_0x1de9e8,_0x11f6ea){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x8'),{'body':_0x2e61ed,'options':{'where':{'id':_0x1de9e8},'limit':_0x11f6ea},'log':'UpdateCmHopper'});};};exports[_0xf6b5('0x23')]=function(_0x3657fe,_0x5c0729){return function(){return client[_0xf6b5('0x3')](_0xf6b5('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3657fe,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xf6b5('0x16')](_0xf6b5('0x9'))},'UserId':{'$in':_0x5c0729}},'order':[[_0xf6b5('0x11'),'DESC'],['scheduledat','DESC'],['id',_0xf6b5('0x17')]],'include':[{'model':_0xf6b5('0x5'),'as':_0xf6b5('0x6')},{'model':_0xf6b5('0x25'),'as':'Agent','attributes':['id',_0xf6b5('0x21'),_0xf6b5('0x26')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xf6b5('0x14')});};};
\ No newline at end of file
+var _0x627b=['getContacts','GetCmHopper','CmContact','Contact','getCmHopper','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','DESC','scheduledat','ASC','priority','GetContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','VoiceQueue','name','GetContactRecallMe','voicePause','db.CmHopper.UserId','../client','moment','lodash'];(function(_0x15f359,_0x4ae777){var _0x6de0ff=function(_0x13b047){while(--_0x13b047){_0x15f359['push'](_0x15f359['shift']());}};_0x6de0ff(++_0x4ae777);}(_0x627b,0x6f));var _0xb627=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x627b[_0x32d457];return _0x338386;};'use strict';var client=require(_0xb627('0x0'));var moment=require(_0xb627('0x1'));var _=require(_0xb627('0x2'));exports[_0xb627('0x3')]=function(_0x4f417d,_0x1cd3a2){return function(){return client['Request'](_0xb627('0x4'),{'options':{'where':{'VoiceQueueId':_0x4f417d},'include':[{'model':_0xb627('0x5'),'as':_0xb627('0x6')}],'limit':_0x1cd3a2,'raw':![]},'log':_0xb627('0x7')});};};exports['updateContacts']=function(_0x20fe50,_0x28d953,_0x33d0f5){return function(){return client[_0xb627('0x8')](_0xb627('0x9'),{'body':_0x20fe50,'options':{'where':{'VoiceQueueId':_0x28d953,'scheduledat':{'$lte':moment()[_0xb627('0xa')](_0xb627('0xb'))}},'limit':_0x33d0f5},'log':_0xb627('0x9')});};};exports[_0xb627('0xc')]=function(_0x1ff968){return function(){return client[_0xb627('0x8')](_0xb627('0x9'),{'body':_0x1ff968,'options':{'where':{'ContactId':_0x1ff968['ContactId'],'ListId':_0x1ff968[_0xb627('0xd')],'VoiceQueueId':_0x1ff968[_0xb627('0xe')],'CampaignId':_0x1ff968[_0xb627('0xf')]}},'log':'rescheduleContact'});};};exports[_0xb627('0x10')]=function(_0x107959,_0x1170be,_0x46ae96){return function(){return client['Request'](_0xb627('0x11'),{'options':{'where':{'VoiceQueueId':_0x107959,'ListId':_0x1170be,'ContactId':_0x46ae96}},'log':_0xb627('0x11')});};};exports[_0xb627('0x12')]=function(_0x36787c,_0x3451c1,_0x410608,_0x3f2916){return function(){return client[_0xb627('0x8')](_0xb627('0x13'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x36787c,'active':![],'scheduledat':{'$lte':moment()[_0xb627('0xa')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x3451c1}}]},'order':[['priority',_0xb627('0x14')],[_0xb627('0x15'),_0x3f2916],['id',_0xb627('0x16')]],'raw':!![],'limit':_0x410608},'log':'GetContactDialer'});};};exports['getContactDialerIvr']=function(_0x90bdcc,_0x1c979e,_0x41f6e0){return function(){return client[_0xb627('0x8')](_0xb627('0x13'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x90bdcc,'active':![],'scheduledat':{'$lte':moment()[_0xb627('0xa')](_0xb627('0xb'))}},'include':[{'model':'CmContact','as':_0xb627('0x6')}],'order':[[_0xb627('0x17'),_0xb627('0x14')],[_0xb627('0x15'),_0x41f6e0],['id','ASC']],'raw':!![],'limit':_0x1c979e},'log':_0xb627('0x18')});};};exports[_0xb627('0x19')]=function(_0x35f441,_0x248c91){return function(){_0x35f441[_0xb627('0x1a')]=_0x35f441['queue'];return client[_0xb627('0x8')](_0xb627('0x1b'),{'body':_0x35f441,'options':{'where':{'ContactId':_0x35f441['ContactId'],'ListId':_0x35f441[_0xb627('0xd')],'VoiceQueueId':_0x35f441[_0xb627('0xe')],'CampaignId':_0x35f441[_0xb627('0xf')],'active':_0x248c91?undefined:!![]}},'log':_0xb627('0x1b')});};};exports[_0xb627('0x1c')]=function(_0x42ad89){return function(){return client[_0xb627('0x8')](_0xb627('0x1d'),{'options':{'where':{'VoiceQueueId':_0x42ad89['id']?_0x42ad89['id']||null:null}},'log':_0xb627('0x1c')});};};exports[_0xb627('0x1e')]=function(_0x25f76e){return function(){return client[_0xb627('0x8')](_0xb627('0x1f'),{'options':{'where':{'id':_0x25f76e},'include':[{'model':_0xb627('0x5'),'as':_0xb627('0x6')},{'model':_0xb627('0x20'),'as':'Agent','attributes':['id','name']},{'model':_0xb627('0x21'),'as':'Queue','attributes':['id',_0xb627('0x22')]}],'raw':!![]},'log':_0xb627('0x7')});};};exports['unlockContact']=function(_0x451bb2,_0x1a8475,_0x21844a){return function(){return client[_0xb627('0x8')](_0xb627('0x9'),{'body':_0x451bb2,'options':{'where':{'id':_0x1a8475},'limit':_0x21844a},'log':_0xb627('0x9')});};};exports['getContactRecallMe']=function(_0x8b98a2,_0x523ea6){return function(){return client['Request'](_0xb627('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x8b98a2,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xb627('0xb'))},'UserId':{'$in':_0x523ea6}},'order':[[_0xb627('0x17'),_0xb627('0x14')],[_0xb627('0x15'),_0xb627('0x14')],['id','ASC']],'include':[{'model':'CmContact','as':_0xb627('0x6')},{'model':'User','as':'Agent','attributes':['id',_0xb627('0x22'),_0xb627('0x24')]}],'group':_0xb627('0x25'),'raw':!![]},'log':_0xb627('0x13')});};};
\ No newline at end of file
index 25e13c7..bb0c145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0565=['checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','Contact','phone','checkIsBlackListIvr','CampaignId','../client'];(function(_0x7512ae,_0x31aa95){var _0x37eeac=function(_0x101266){while(--_0x101266){_0x7512ae['push'](_0x7512ae['shift']());}};_0x37eeac(++_0x31aa95);}(_0x0565,0xf2));var _0x5056=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x0565[_0x411017];return _0x2adeea;};'use strict';var client=require(_0x5056('0x0'));exports[_0x5056('0x1')]=function(_0x2790a7){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'where':{'VoiceQueueId':_0x2790a7[_0x5056('0x4')],'phone':_0x2790a7[_0x5056('0x5')][_0x5056('0x6')]},'raw':![]},'log':_0x5056('0x3')});};};exports[_0x5056('0x7')]=function(_0x554040){return function(){return client[_0x5056('0x2')](_0x5056('0x3'),{'options':{'where':{'CampaignId':_0x554040[_0x5056('0x8')],'phone':_0x554040[_0x5056('0x5')]['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x2547=['VoiceQueueId','Contact','phone','CampaignId','GetCmHopperBlackIvr','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x1b455f,_0x4cfd39){var _0xe59ed5=function(_0x1554e9){while(--_0x1554e9){_0x1b455f['push'](_0x1b455f['shift']());}};_0xe59ed5(++_0x4cfd39);}(_0x2547,0x1cd));var _0x7254=function(_0x4fabe8,_0x234147){_0x4fabe8=_0x4fabe8-0x0;var _0x2ad9ec=_0x2547[_0x4fabe8];return _0x2ad9ec;};'use strict';var client=require('../client');exports[_0x7254('0x0')]=function(_0x23e38c){return function(){return client[_0x7254('0x1')](_0x7254('0x2'),{'options':{'where':{'VoiceQueueId':_0x23e38c[_0x7254('0x3')],'phone':_0x23e38c[_0x7254('0x4')][_0x7254('0x5')]},'raw':![]},'log':_0x7254('0x2')});};};exports['checkIsBlackListIvr']=function(_0x2ddeae){return function(){return client[_0x7254('0x1')](_0x7254('0x2'),{'options':{'where':{'CampaignId':_0x2ddeae[_0x7254('0x6')],'phone':_0x2ddeae['Contact'][_0x7254('0x5')]},'raw':![]},'log':_0x7254('0x7')});};};
\ No newline at end of file
index 5ac388f..1c04fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6212=['createContact','queue','Request','CreateCmHopperFinal','../client'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6212,0x17b));var _0x2621=function(_0x16a4cc,_0x3410d8){_0x16a4cc=_0x16a4cc-0x0;var _0x7ad864=_0x6212[_0x16a4cc];return _0x7ad864;};'use strict';var client=require(_0x2621('0x0'));exports[_0x2621('0x1')]=function(_0x5d57ae){return function(){_0x5d57ae['campaign']=_0x5d57ae[_0x2621('0x2')];return client[_0x2621('0x3')](_0x2621('0x4'),{'body':_0x5d57ae,'log':_0x2621('0x4')});};};
\ No newline at end of file
+var _0x1243=['queue','CreateCmHopperFinal','../client','campaign'];(function(_0x31ead7,_0x2e9a7c){var _0x3516f0=function(_0x47fa36){while(--_0x47fa36){_0x31ead7['push'](_0x31ead7['shift']());}};_0x3516f0(++_0x2e9a7c);}(_0x1243,0x142));var _0x3124=function(_0x5124f3,_0x4d1c84){_0x5124f3=_0x5124f3-0x0;var _0x450eba=_0x1243[_0x5124f3];return _0x450eba;};'use strict';var client=require(_0x3124('0x0'));exports['createContact']=function(_0x4a9988){return function(){_0x4a9988[_0x3124('0x1')]=_0x4a9988[_0x3124('0x2')];return client['Request']('CreateCmHopperFinal',{'body':_0x4a9988,'log':_0x3124('0x3')});};};
\ No newline at end of file
index 0187087..92a7a31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4187=['CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','startOf','endOf','queue','getCampaignHopperHistory','GetCampaignHopperHistory','day','ivr','../client','moment','campaign','Request'];(function(_0x3849ff,_0x4ae25e){var _0x3ab676=function(_0x50a39e){while(--_0x50a39e){_0x3849ff['push'](_0x3849ff['shift']());}};_0x3ab676(++_0x4ae25e);}(_0x4187,0x84));var _0x7418=function(_0x204dfe,_0x4bbaba){_0x204dfe=_0x204dfe-0x0;var _0x421836=_0x4187[_0x204dfe];return _0x421836;};'use strict';var client=require(_0x7418('0x0'));var moment=require(_0x7418('0x1'));exports['createHistory']=function(_0x15d756){return function(){_0x15d756[_0x7418('0x2')]=_0x15d756['queue'];return client[_0x7418('0x3')](_0x7418('0x4'),{'body':_0x15d756,'log':_0x7418('0x4')});};};exports[_0x7418('0x5')]=function(_0x1f51c1){return function(){return client[_0x7418('0x3')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x7418('0x6')](_0x1f51c1,_0x7418('0x7'))[_0x7418('0x8')](_0x7418('0x9')),moment()[_0x7418('0x8')](_0x7418('0x9'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports['getVoiceQueueHopperHistory']=function(_0x2b9c50){return function(){return client[_0x7418('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x7418('0xa')]('day')[_0x7418('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x7418('0xb')]('day')[_0x7418('0x8')](_0x7418('0x9'))]},'campaigntype':_0x7418('0xc')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x7418('0xd')]=function(_0x4064c4){return function(){return client[_0x7418('0x3')](_0x7418('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x7418('0xa')](_0x7418('0xf'))[_0x7418('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x7418('0xf'))['format'](_0x7418('0x9'))]},'campaigntype':_0x7418('0x10')},'raw':![]},'log':_0x7418('0xe')});};};
\ No newline at end of file
+var _0xa80f=['CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss','format','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','queue','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','ivr','../client','moment','createHistory','campaign','Request'];(function(_0x3a47c7,_0x4537a8){var _0x1b1b24=function(_0x1b1f68){while(--_0x1b1f68){_0x3a47c7['push'](_0x3a47c7['shift']());}};_0x1b1b24(++_0x4537a8);}(_0xa80f,0xd7));var _0xfa80=function(_0x409f30,_0xec568a){_0x409f30=_0x409f30-0x0;var _0x449122=_0xa80f[_0x409f30];return _0x449122;};'use strict';var client=require(_0xfa80('0x0'));var moment=require(_0xfa80('0x1'));exports[_0xfa80('0x2')]=function(_0x995cc1){return function(){_0x995cc1[_0xfa80('0x3')]=_0x995cc1['queue'];return client[_0xfa80('0x4')](_0xfa80('0x5'),{'body':_0x995cc1,'log':'CreateCmHopperHistory'});};};exports[_0xfa80('0x6')]=function(_0x58d329){return function(){return client['Request'](_0xfa80('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0xfa80('0x8')](_0x58d329,_0xfa80('0x9'))['format'](_0xfa80('0xa')),moment()[_0xfa80('0xb')](_0xfa80('0xa'))]}},'raw':![]},'log':_0xfa80('0xc')});};};exports[_0xfa80('0xd')]=function(_0x48374d){return function(){return client['Request'](_0xfa80('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xfa80('0xf'))[_0xfa80('0xb')](_0xfa80('0xa')),moment()[_0xfa80('0x10')]('day')[_0xfa80('0xb')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xfa80('0x11')},'raw':![]},'log':_0xfa80('0xe')});};};exports[_0xfa80('0x12')]=function(_0x307ed1){return function(){return client[_0xfa80('0x4')](_0xfa80('0x13'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xfa80('0x14')](_0xfa80('0xf'))[_0xfa80('0xb')](_0xfa80('0xa')),moment()[_0xfa80('0x10')](_0xfa80('0xf'))[_0xfa80('0xb')](_0xfa80('0xa'))]},'campaigntype':_0xfa80('0x15')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index 537a988..3b33041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8969=['../client','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','maxrate','faxdetect','t38timeout','tech','ListId','key','Trunk','callerid','getFaxAccount','notify','NotifyFaxAccount'];(function(_0x49dd98,_0x8dc77f){var _0x590ce3=function(_0x4826d3){while(--_0x4826d3){_0x49dd98['push'](_0x49dd98['shift']());}};_0x590ce3(++_0x8dc77f);}(_0x8969,0x130));var _0x9896=function(_0x340088,_0x25f012){_0x340088=_0x340088-0x0;var _0x51961c=_0x8969[_0x340088];return _0x51961c;};'use strict';var client=require(_0x9896('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x9896('0x1')](_0x9896('0x2'),{'options':{'raw':![],'attributes':['id',_0x9896('0x3'),_0x9896('0x4'),_0x9896('0x5'),_0x9896('0x6'),_0x9896('0x7'),'minrate',_0x9896('0x8'),'modem','gateway',_0x9896('0x9'),_0x9896('0xa'),_0x9896('0xb'),'TrunkId',_0x9896('0xc'),_0x9896('0xd')],'include':[{'model':_0x9896('0xe'),'as':'Trunk','attributes':['id',_0x9896('0x3'),_0x9896('0xf'),'active']}]},'log':_0x9896('0x10')});};};exports[_0x9896('0x11')]=function(_0x53316e,_0x3e9845){return client[_0x9896('0x1')](_0x9896('0x12'),{'account':{'id':_0x53316e},'body':_0x3e9845,'log':_0x9896('0x12')});};
\ No newline at end of file
+var _0x2542=['name','callerid','active','notify','../client','getFaxAccounts','Request','GetFaxAccount','description','headerinfo','localstationid','minrate','maxrate','modem','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk'];(function(_0xbc6d77,_0x395ab4){var _0x4e0278=function(_0x348198){while(--_0x348198){_0xbc6d77['push'](_0xbc6d77['shift']());}};_0x4e0278(++_0x395ab4);}(_0x2542,0x169));var _0x2254=function(_0xfb29f6,_0x1fcc34){_0xfb29f6=_0xfb29f6-0x0;var _0x383aeb=_0x2542[_0xfb29f6];return _0x383aeb;};'use strict';var client=require(_0x2254('0x0'));exports[_0x2254('0x1')]=function(){return function(){return client[_0x2254('0x2')](_0x2254('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x2254('0x4'),'ecm',_0x2254('0x5'),_0x2254('0x6'),_0x2254('0x7'),_0x2254('0x8'),_0x2254('0x9'),'gateway',_0x2254('0xa'),_0x2254('0xb'),_0x2254('0xc'),_0x2254('0xd'),_0x2254('0xe'),_0x2254('0xf')],'include':[{'model':_0x2254('0x10'),'as':_0x2254('0x10'),'attributes':['id',_0x2254('0x11'),_0x2254('0x12'),_0x2254('0x13')]}]},'log':'getFaxAccount'});};};exports[_0x2254('0x14')]=function(_0x2655ea,_0x506abe){return client[_0x2254('0x2')]('NotifyFaxAccount',{'account':{'id':_0x2655ea},'body':_0x506abe,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index 9e4c9ba..a1a288b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa9=['Request','UpdateFaxMessage','../client','update'];(function(_0x22b68a,_0x2bffc3){var _0x1ac67a=function(_0x25f9d5){while(--_0x25f9d5){_0x22b68a['push'](_0x22b68a['shift']());}};_0x1ac67a(++_0x2bffc3);}(_0x9fa9,0x15e));var _0x99fa=function(_0xe09ca2,_0x545d6e){_0xe09ca2=_0xe09ca2-0x0;var _0x39ad82=_0x9fa9[_0xe09ca2];return _0x39ad82;};'use strict';var client=require(_0x99fa('0x0'));exports[_0x99fa('0x1')]=function(_0x37ca96,_0x1d3949){return client[_0x99fa('0x2')](_0x99fa('0x3'),{'body':_0x1d3949,'options':{'where':{'AttachmentId':_0x37ca96}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0x700e=['../client','update','Request','UpdateFaxMessage'];(function(_0x52ebd0,_0x23a376){var _0x2e15e3=function(_0xf9f1b9){while(--_0xf9f1b9){_0x52ebd0['push'](_0x52ebd0['shift']());}};_0x2e15e3(++_0x23a376);}(_0x700e,0x98));var _0xe700=function(_0x17a796,_0x55d871){_0x17a796=_0x17a796-0x0;var _0x2fecf8=_0x700e[_0x17a796];return _0x2fecf8;};'use strict';var client=require(_0xe700('0x0'));exports[_0xe700('0x1')]=function(_0x2301b3,_0x37e44a){return client[_0xe700('0x2')](_0xe700('0x3'),{'body':_0x37e44a,'options':{'where':{'AttachmentId':_0x2301b3}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index 0588311..98943d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d83=['Subjects','variableName','Variable','content','key','keyType','keyContent','Fields','idField','customField','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','name'];(function(_0x419484,_0x28ed8e){var _0x31874e=function(_0x36d721){while(--_0x36d721){_0x419484['push'](_0x419484['shift']());}};_0x31874e(++_0x28ed8e);}(_0x1d83,0x1cd));var _0x31d8=function(_0x2e19ab,_0x4d527f){_0x2e19ab=_0x2e19ab-0x0;var _0x510981=_0x1d83[_0x2e19ab];return _0x510981;};'use strict';var client=require(_0x31d8('0x0'));exports[_0x31d8('0x1')]=function(){return function(_0x224af3){return client[_0x31d8('0x2')](_0x31d8('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x31d8('0x4'),_0x31d8('0x5'),_0x31d8('0x6'),_0x31d8('0x7'),_0x31d8('0x8'),_0x31d8('0x9'),_0x31d8('0xa')],'include':[{'model':_0x31d8('0xb'),'as':_0x31d8('0xc'),'attributes':['id',_0x31d8('0xd')],'include':[{'model':'DeskField','as':_0x31d8('0xe'),'attributes':['id',_0x31d8('0x9'),'content',_0x31d8('0xf')],'include':[{'model':_0x31d8('0x10'),'as':_0x31d8('0x10'),'attributes':['id',_0x31d8('0xd')]}]},{'model':'DeskField','as':'Descriptions','attributes':['id',_0x31d8('0x9'),_0x31d8('0x11'),_0x31d8('0x12'),_0x31d8('0x13'),_0x31d8('0x14'),_0x31d8('0xf')],'include':[{'model':'Variable','as':_0x31d8('0x10'),'attributes':['id',_0x31d8('0xd')]}]},{'model':'DeskField','as':_0x31d8('0x15'),'attributes':['id',_0x31d8('0x9'),_0x31d8('0x11'),_0x31d8('0x16'),'nameField',_0x31d8('0x17'),'variableName'],'include':[{'model':_0x31d8('0x10'),'as':'Variable','attributes':['id',_0x31d8('0xd')]}]},{'model':'Tag','as':_0x31d8('0x18'),'attributes':['id',_0x31d8('0xd')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0xc0f7=['serverUrl','DeskConfiguration','DeskField','content','variableName','Variable','Descriptions','key','keyType','Fields','nameField','customField','Tag','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','remoteUri','authType','type'];(function(_0x29821c,_0x5132f5){var _0x38f5bc=function(_0x1cbd6b){while(--_0x1cbd6b){_0x29821c['push'](_0x29821c['shift']());}};_0x38f5bc(++_0x5132f5);}(_0xc0f7,0x6d));var _0x7c0f=function(_0x4f468f,_0x5423c9){_0x4f468f=_0x4f468f-0x0;var _0x2b69c2=_0xc0f7[_0x4f468f];return _0x2b69c2;};'use strict';var client=require(_0x7c0f('0x0'));exports[_0x7c0f('0x1')]=function(){return function(_0x2ec8d4){return client[_0x7c0f('0x2')](_0x7c0f('0x3'),{'options':{'raw':![],'attributes':['id',_0x7c0f('0x4'),_0x7c0f('0x5'),_0x7c0f('0x6'),_0x7c0f('0x7'),_0x7c0f('0x8'),_0x7c0f('0x9'),_0x7c0f('0xa'),_0x7c0f('0xb')],'include':[{'model':_0x7c0f('0xc'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x7c0f('0xd'),'as':'Subjects','attributes':['id','type',_0x7c0f('0xe'),_0x7c0f('0xf')],'include':[{'model':_0x7c0f('0x10'),'as':_0x7c0f('0x10'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x7c0f('0x11'),'attributes':['id',_0x7c0f('0xa'),_0x7c0f('0xe'),_0x7c0f('0x12'),_0x7c0f('0x13'),'keyContent',_0x7c0f('0xf')],'include':[{'model':_0x7c0f('0x10'),'as':'Variable','attributes':['id',_0x7c0f('0x4')]}]},{'model':_0x7c0f('0xd'),'as':_0x7c0f('0x14'),'attributes':['id',_0x7c0f('0xa'),'content','idField',_0x7c0f('0x15'),_0x7c0f('0x16'),_0x7c0f('0xf')],'include':[{'model':_0x7c0f('0x10'),'as':_0x7c0f('0x10'),'attributes':['id',_0x7c0f('0x4')]}]},{'model':_0x7c0f('0x17'),'as':'Tags','attributes':['id',_0x7c0f('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index e215a4b..0318825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6614=['Subjects','type','Variable','Descriptions','content','key','variableName','Fields','idField','nameField','customField','../../client','Request','GetDynamics365Account','username','password','remoteUri','tenantId','clientId','serverUrl','description','Dynamics365Configuration','name','ticketType','Dynamics365Field'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x6614,0x182));var _0x4661=function(_0xc77c92,_0x8a9f1){_0xc77c92=_0xc77c92-0x0;var _0x51319b=_0x6614[_0xc77c92];return _0x51319b;};'use strict';var client=require(_0x4661('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x2b5bb4){return client[_0x4661('0x1')](_0x4661('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x4661('0x3'),_0x4661('0x4'),_0x4661('0x5'),_0x4661('0x6'),_0x4661('0x7'),'clientSecret',_0x4661('0x8'),_0x4661('0x9')],'include':[{'model':_0x4661('0xa'),'as':'Configurations','attributes':['id',_0x4661('0xb'),_0x4661('0xc')],'include':[{'model':_0x4661('0xd'),'as':_0x4661('0xe'),'attributes':['id',_0x4661('0xf'),'content','variableName'],'include':[{'model':_0x4661('0x10'),'as':'Variable','attributes':['id',_0x4661('0xb')]}]},{'model':_0x4661('0xd'),'as':_0x4661('0x11'),'attributes':['id',_0x4661('0xf'),_0x4661('0x12'),_0x4661('0x13'),'keyType','keyContent',_0x4661('0x14')],'include':[{'model':_0x4661('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x4661('0xd'),'as':_0x4661('0x15'),'attributes':['id',_0x4661('0xf'),_0x4661('0x12'),_0x4661('0x16'),_0x4661('0x17'),_0x4661('0x18'),_0x4661('0x14')],'include':[{'model':_0x4661('0x10'),'as':_0x4661('0x10'),'attributes':['id','name']}]}]}]},'log':_0x4661('0x2')});};};
\ No newline at end of file
+var _0xcfa2=['Request','GetDynamics365Account','name','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Dynamics365Configuration','ticketType','Dynamics365Field','type','Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','../../client','getDynamics365Accounts'];(function(_0x76e841,_0x302099){var _0x1e806b=function(_0x10fefe){while(--_0x10fefe){_0x76e841['push'](_0x76e841['shift']());}};_0x1e806b(++_0x302099);}(_0xcfa2,0xb6));var _0x2cfa=function(_0x3f793e,_0x3418ae){_0x3f793e=_0x3f793e-0x0;var _0x3ec72f=_0xcfa2[_0x3f793e];return _0x3ec72f;};'use strict';var client=require(_0x2cfa('0x0'));exports[_0x2cfa('0x1')]=function(){return function(_0x29468a){return client[_0x2cfa('0x2')](_0x2cfa('0x3'),{'options':{'raw':![],'attributes':['id',_0x2cfa('0x4'),'username',_0x2cfa('0x5'),_0x2cfa('0x6'),_0x2cfa('0x7'),_0x2cfa('0x8'),_0x2cfa('0x9'),_0x2cfa('0xa'),'description'],'include':[{'model':_0x2cfa('0xb'),'as':'Configurations','attributes':['id',_0x2cfa('0x4'),_0x2cfa('0xc')],'include':[{'model':_0x2cfa('0xd'),'as':'Subjects','attributes':['id',_0x2cfa('0xe'),'content','variableName'],'include':[{'model':_0x2cfa('0xf'),'as':_0x2cfa('0xf'),'attributes':['id',_0x2cfa('0x4')]}]},{'model':'Dynamics365Field','as':_0x2cfa('0x10'),'attributes':['id',_0x2cfa('0xe'),_0x2cfa('0x11'),_0x2cfa('0x12'),_0x2cfa('0x13'),_0x2cfa('0x14'),'variableName'],'include':[{'model':_0x2cfa('0xf'),'as':_0x2cfa('0xf'),'attributes':['id',_0x2cfa('0x4')]}]},{'model':'Dynamics365Field','as':_0x2cfa('0x15'),'attributes':['id',_0x2cfa('0xe'),_0x2cfa('0x11'),_0x2cfa('0x16'),'nameField','customField','variableName'],'include':[{'model':_0x2cfa('0xf'),'as':'Variable','attributes':['id',_0x2cfa('0x4')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index d3dc0f2..4a9a253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6372=['Fields','nameField','customField','../../client','GetFreshdeskAccount','name','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','type','Variable','content','key','keyType','keyContent','variableName'];(function(_0x53ba51,_0x2f2321){var _0x2e776e=function(_0x16b5cf){while(--_0x16b5cf){_0x53ba51['push'](_0x53ba51['shift']());}};_0x2e776e(++_0x2f2321);}(_0x6372,0x1b8));var _0x2637=function(_0x3f8428,_0x5b31e1){_0x3f8428=_0x3f8428-0x0;var _0x4f8f24=_0x6372[_0x3f8428];return _0x4f8f24;};'use strict';var client=require(_0x2637('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x3373ec){return client['Request'](_0x2637('0x1'),{'options':{'raw':![],'attributes':['id',_0x2637('0x2'),'username',_0x2637('0x3'),_0x2637('0x4'),_0x2637('0x5')],'include':[{'model':_0x2637('0x6'),'as':_0x2637('0x7'),'attributes':['id','name'],'include':[{'model':_0x2637('0x8'),'attributes':['id','name']},{'model':'FreshdeskField','as':'Subjects','attributes':['id',_0x2637('0x9'),'content','variableName'],'include':[{'model':_0x2637('0xa'),'as':_0x2637('0xa'),'attributes':['id',_0x2637('0x2')]}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x2637('0x9'),_0x2637('0xb'),_0x2637('0xc'),_0x2637('0xd'),_0x2637('0xe'),_0x2637('0xf')],'include':[{'model':_0x2637('0xa'),'as':_0x2637('0xa'),'attributes':['id',_0x2637('0x2')]}]},{'model':'FreshdeskField','as':_0x2637('0x10'),'attributes':['id',_0x2637('0x9'),_0x2637('0xb'),'idField',_0x2637('0x11'),_0x2637('0x12'),_0x2637('0xf')],'include':[{'model':_0x2637('0xa'),'as':'Variable','attributes':['id',_0x2637('0x2')]}]}]}]},'log':_0x2637('0x1')});};};
\ No newline at end of file
+var _0x5f6a=['Subjects','type','Variable','Descriptions','key','keyType','variableName','Fields','content','idField','nameField','customField','../../client','Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField'];(function(_0x5593ac,_0x23b931){var _0x15b90f=function(_0x1f9172){while(--_0x1f9172){_0x5593ac['push'](_0x5593ac['shift']());}};_0x15b90f(++_0x23b931);}(_0x5f6a,0xc4));var _0xa5f6=function(_0x6ec994,_0x21c654){_0x6ec994=_0x6ec994-0x0;var _0x2d954b=_0x5f6a[_0x6ec994];return _0x2d954b;};'use strict';var client=require(_0xa5f6('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x59c041){return client[_0xa5f6('0x1')](_0xa5f6('0x2'),{'options':{'raw':![],'attributes':['id',_0xa5f6('0x3'),_0xa5f6('0x4'),'apiKey',_0xa5f6('0x5'),_0xa5f6('0x6')],'include':[{'model':_0xa5f6('0x7'),'as':_0xa5f6('0x8'),'attributes':['id',_0xa5f6('0x3')],'include':[{'model':_0xa5f6('0x9'),'attributes':['id',_0xa5f6('0x3')]},{'model':_0xa5f6('0xa'),'as':_0xa5f6('0xb'),'attributes':['id',_0xa5f6('0xc'),'content','variableName'],'include':[{'model':'Variable','as':_0xa5f6('0xd'),'attributes':['id',_0xa5f6('0x3')]}]},{'model':_0xa5f6('0xa'),'as':_0xa5f6('0xe'),'attributes':['id',_0xa5f6('0xc'),'content',_0xa5f6('0xf'),_0xa5f6('0x10'),'keyContent',_0xa5f6('0x11')],'include':[{'model':'Variable','as':_0xa5f6('0xd'),'attributes':['id','name']}]},{'model':_0xa5f6('0xa'),'as':_0xa5f6('0x12'),'attributes':['id','type',_0xa5f6('0x13'),_0xa5f6('0x14'),_0xa5f6('0x15'),_0xa5f6('0x16'),'variableName'],'include':[{'model':_0xa5f6('0xd'),'as':_0xa5f6('0xd'),'attributes':['id',_0xa5f6('0x3')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 460d38d..f30e9bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['remoteUri','Configurations','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions','keyContent','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username'];(function(_0x5a01fa,_0x492a5f){var _0x4d7a04=function(_0x32b31d){while(--_0x32b31d){_0x5a01fa['push'](_0x5a01fa['shift']());}};_0x4d7a04(++_0x492a5f);}(_0x2eb2,0x19f));var _0x22eb=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0x2eb2[_0x5c3c0b];return _0x52ecd2;};'use strict';var client=require('../../client');exports[_0x22eb('0x0')]=function(){return function(_0x15ce90){return client[_0x22eb('0x1')](_0x22eb('0x2'),{'options':{'raw':![],'attributes':['id',_0x22eb('0x3'),_0x22eb('0x4'),'apiKey',_0x22eb('0x5'),'serverUrl'],'include':[{'model':'FreshsalesConfiguration','as':_0x22eb('0x6'),'attributes':['id',_0x22eb('0x3')],'include':[{'model':_0x22eb('0x7'),'as':_0x22eb('0x8'),'attributes':['id',_0x22eb('0x9'),_0x22eb('0xa'),_0x22eb('0xb')],'include':[{'model':_0x22eb('0xc'),'as':_0x22eb('0xc'),'attributes':['id',_0x22eb('0x3')]}]},{'model':_0x22eb('0x7'),'as':_0x22eb('0xd'),'attributes':['id','type',_0x22eb('0xa'),'key','keyType',_0x22eb('0xe'),'variableName'],'include':[{'model':_0x22eb('0xc'),'as':_0x22eb('0xc'),'attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0xd101=['serverUrl','Configurations','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','GetFreshsalesccount','../../client','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri'];(function(_0x5e435d,_0x8d455c){var _0xf7650b=function(_0x5c10f2){while(--_0x5c10f2){_0x5e435d['push'](_0x5e435d['shift']());}};_0xf7650b(++_0x8d455c);}(_0xd101,0xc1));var _0x1d10=function(_0x8be0c5,_0xce18f6){_0x8be0c5=_0x8be0c5-0x0;var _0x1ad4ed=_0xd101[_0x8be0c5];return _0x1ad4ed;};'use strict';var client=require(_0x1d10('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x2ced74){return client[_0x1d10('0x1')](_0x1d10('0x2'),{'options':{'raw':![],'attributes':['id',_0x1d10('0x3'),_0x1d10('0x4'),_0x1d10('0x5'),_0x1d10('0x6'),_0x1d10('0x7')],'include':[{'model':'FreshsalesConfiguration','as':_0x1d10('0x8'),'attributes':['id',_0x1d10('0x3')],'include':[{'model':_0x1d10('0x9'),'as':_0x1d10('0xa'),'attributes':['id',_0x1d10('0xb'),_0x1d10('0xc'),_0x1d10('0xd')],'include':[{'model':_0x1d10('0xe'),'as':_0x1d10('0xe'),'attributes':['id',_0x1d10('0x3')]}]},{'model':_0x1d10('0x9'),'as':_0x1d10('0xf'),'attributes':['id',_0x1d10('0xb'),_0x1d10('0xc'),_0x1d10('0x10'),_0x1d10('0x11'),_0x1d10('0x12'),'variableName'],'include':[{'model':_0x1d10('0xe'),'as':_0x1d10('0xe'),'attributes':['id',_0x1d10('0x3')]}]}]}]},'log':_0x1d10('0x13')});};};
\ No newline at end of file
index 1ec9518..029eb7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64eb=['type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','GetSalesforceAccount','../../client','getSalesforceAccounts','Request','name','username','password','clientId','securityToken','serverUrl'];(function(_0x5e21f1,_0x1111be){var _0x22e236=function(_0x5662dc){while(--_0x5662dc){_0x5e21f1['push'](_0x5e21f1['shift']());}};_0x22e236(++_0x1111be);}(_0x64eb,0xc6));var _0xb64e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x64eb[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xb64e('0x0'));exports[_0xb64e('0x1')]=function(){return function(_0x4d0eac){return client[_0xb64e('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0xb64e('0x3'),_0xb64e('0x4'),_0xb64e('0x5'),'remoteUri',_0xb64e('0x6'),'clientSecret',_0xb64e('0x7'),_0xb64e('0x8'),_0xb64e('0x9')],'include':[{'model':_0xb64e('0xa'),'as':_0xb64e('0xb'),'attributes':['id',_0xb64e('0x3'),_0xb64e('0xc'),_0xb64e('0xd'),_0xb64e('0xe'),'leadId','additionalSearchAccount',_0xb64e('0xf'),_0xb64e('0x10')],'include':[{'model':_0xb64e('0x11'),'as':_0xb64e('0x12'),'include':[{'model':_0xb64e('0x13'),'as':_0xb64e('0x13'),'attributes':['id',_0xb64e('0x3')]}]},{'model':_0xb64e('0x11'),'as':_0xb64e('0x14'),'include':[{'model':_0xb64e('0x13'),'as':_0xb64e('0x13'),'attributes':['id',_0xb64e('0x3')]}]},{'model':'SalesforceField','as':_0xb64e('0x15'),'include':[{'model':_0xb64e('0x13'),'as':_0xb64e('0x13'),'attributes':['id',_0xb64e('0x3')]}]}]}]},'log':_0xb64e('0x16')});};};
\ No newline at end of file
+var _0xeaa0=['Request','GetSalesforceAccount','username','password','clientId','clientSecret','securityToken','serverUrl','type','Configurations','name','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Fields','../../client','getSalesforceAccounts'];(function(_0xd258a6,_0x4ebbab){var _0x141384=function(_0x565162){while(--_0x565162){_0xd258a6['push'](_0xd258a6['shift']());}};_0x141384(++_0x4ebbab);}(_0xeaa0,0x16e));var _0x0eaa=function(_0x578b6c,_0x2838aa){_0x578b6c=_0x578b6c-0x0;var _0x24a715=_0xeaa0[_0x578b6c];return _0x24a715;};'use strict';var client=require(_0x0eaa('0x0'));exports[_0x0eaa('0x1')]=function(){return function(_0x2c2529){return client[_0x0eaa('0x2')](_0x0eaa('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x0eaa('0x4'),_0x0eaa('0x5'),'remoteUri',_0x0eaa('0x6'),_0x0eaa('0x7'),_0x0eaa('0x8'),_0x0eaa('0x9'),_0x0eaa('0xa')],'include':[{'model':'SalesforceConfiguration','as':_0x0eaa('0xb'),'attributes':['id',_0x0eaa('0xc'),_0x0eaa('0xd'),_0x0eaa('0xe'),'ticketType',_0x0eaa('0xf'),_0x0eaa('0x10'),_0x0eaa('0x11'),_0x0eaa('0x12')],'include':[{'model':'SalesforceField','as':_0x0eaa('0x13'),'include':[{'model':_0x0eaa('0x14'),'as':_0x0eaa('0x14'),'attributes':['id','name']}]},{'model':_0x0eaa('0x15'),'as':'Descriptions','include':[{'model':_0x0eaa('0x14'),'as':_0x0eaa('0x14'),'attributes':['id','name']}]},{'model':_0x0eaa('0x15'),'as':_0x0eaa('0x16'),'include':[{'model':_0x0eaa('0x14'),'as':'Variable','attributes':['id',_0x0eaa('0xc')]}]}]}]},'log':_0x0eaa('0x3')});};};
\ No newline at end of file
index f9c0b00..b543431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetServicenowAccount'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x524e,0x15e));var _0xe524=function(_0x431e66,_0x453d45){_0x431e66=_0x431e66-0x0;var _0x26b647=_0x524e[_0x431e66];return _0x26b647;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x0295=['name','content','Variable','Descriptions','type','keyType','keyContent','variableName','idField','nameField','customField','GetServicenowkAccount','../../client','Request','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations'];(function(_0x24059d,_0x1fb57f){var _0x43e7ea=function(_0x5cdcf8){while(--_0x5cdcf8){_0x24059d['push'](_0x24059d['shift']());}};_0x43e7ea(++_0x1fb57f);}(_0x0295,0x1f0));var _0x5029=function(_0x4ee386,_0x1a9032){_0x4ee386=_0x4ee386-0x0;var _0x42450c=_0x0295[_0x4ee386];return _0x42450c;};'use strict';var client=require(_0x5029('0x0'));exports['getServicenowAccounts']=function(){return function(_0x5e71d0){return client[_0x5029('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id','name',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7')],'include':[{'model':_0x5029('0x8'),'as':_0x5029('0x9'),'attributes':['id',_0x5029('0xa')],'include':[{'model':'ServicenowField','as':'Subjects','attributes':['id','type',_0x5029('0xb'),'variableName'],'include':[{'model':_0x5029('0xc'),'as':'Variable','attributes':['id',_0x5029('0xa')]}]},{'model':'ServicenowField','as':_0x5029('0xd'),'attributes':['id',_0x5029('0xe'),_0x5029('0xb'),'key',_0x5029('0xf'),_0x5029('0x10'),_0x5029('0x11')],'include':[{'model':'Variable','as':_0x5029('0xc'),'attributes':['id',_0x5029('0xa')]}]},{'model':'ServicenowField','as':'Fields','attributes':['id','type','content',_0x5029('0x12'),_0x5029('0x13'),_0x5029('0x14'),_0x5029('0x11')],'include':[{'model':_0x5029('0xc'),'as':_0x5029('0xc'),'attributes':['id',_0x5029('0xa')]}]}]}]},'log':_0x5029('0x15')});};};
\ No newline at end of file
index e3c785f..60ec93a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x344c3f,_0x3454f7){var _0x3219e5=function(_0x40414f){while(--_0x40414f){_0x344c3f['push'](_0x344c3f['shift']());}};_0x3219e5(++_0x3454f7);}(_0x66fa,0x117));var _0xa66f=function(_0x2ff65a,_0x3fbc5d){_0x2ff65a=_0x2ff65a-0x0;var _0x224ee9=_0x66fa[_0x2ff65a];return _0x224ee9;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ 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(_0x25b4a4,_0x2e081b){var _0x707267=function(_0x440123){while(--_0x440123){_0x25b4a4['push'](_0x25b4a4['shift']());}};_0x707267(++_0x2e081b);}(_0x14a0,0x8e));var _0x014a=function(_0x5e1081,_0x97c654){_0x5e1081=_0x5e1081-0x0;var _0x2fec15=_0x14a0[_0x5e1081];return _0x2fec15;};'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 bbaff08..503765b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958c=['accessKey','remoteUri','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','idField','nameField','customField','getVtigerAccounts','Request','GetVtigerAccount','name','username'];(function(_0x1db23e,_0x2ea60a){var _0x10228a=function(_0x1ea625){while(--_0x1ea625){_0x1db23e['push'](_0x1db23e['shift']());}};_0x10228a(++_0x2ea60a);}(_0x958c,0x1c9));var _0xc958=function(_0x5da27f,_0x504b76){_0x5da27f=_0x5da27f-0x0;var _0x54a3fb=_0x958c[_0x5da27f];return _0x54a3fb;};'use strict';var client=require('../../client');exports[_0xc958('0x0')]=function(){return function(_0x36b633){return client[_0xc958('0x1')](_0xc958('0x2'),{'options':{'raw':![],'attributes':['id',_0xc958('0x3'),'description',_0xc958('0x4'),_0xc958('0x5'),_0xc958('0x6'),'serverUrl'],'include':[{'model':_0xc958('0x7'),'as':_0xc958('0x8'),'attributes':['id',_0xc958('0x3')],'include':[{'model':_0xc958('0x9'),'as':_0xc958('0xa'),'attributes':['id',_0xc958('0xb'),_0xc958('0xc'),_0xc958('0xd')],'include':[{'model':_0xc958('0xe'),'as':_0xc958('0xe'),'attributes':['id',_0xc958('0x3')]}]},{'model':_0xc958('0x9'),'as':_0xc958('0xf'),'attributes':['id',_0xc958('0xb'),_0xc958('0xc'),_0xc958('0x10'),_0xc958('0x11'),'keyContent',_0xc958('0xd')],'include':[{'model':_0xc958('0xe'),'as':'Variable','attributes':['id','name']}]},{'model':_0xc958('0x9'),'as':'Fields','attributes':['id',_0xc958('0xb'),_0xc958('0xc'),_0xc958('0x12'),_0xc958('0x13'),_0xc958('0x14'),_0xc958('0xd')],'include':[{'model':_0xc958('0xe'),'as':_0xc958('0xe'),'attributes':['id',_0xc958('0x3')]}]}]}]},'log':_0xc958('0x2')});};};
\ No newline at end of file
+var _0x35a2=['Descriptions','key','keyType','keyContent','idField','customField','Request','GetVtigerAccount','name','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','VtigerField','Subjects','type','content','variableName','Variable'];(function(_0x51a182,_0x5639a7){var _0x46aa3e=function(_0x287abb){while(--_0x287abb){_0x51a182['push'](_0x51a182['shift']());}};_0x46aa3e(++_0x5639a7);}(_0x35a2,0xf6));var _0x235a=function(_0xddc3c0,_0x43fdd3){_0xddc3c0=_0xddc3c0-0x0;var _0x5dadf0=_0x35a2[_0xddc3c0];return _0x5dadf0;};'use strict';var client=require('../../client');exports['getVtigerAccounts']=function(){return function(_0x24cc72){return client[_0x235a('0x0')](_0x235a('0x1'),{'options':{'raw':![],'attributes':['id',_0x235a('0x2'),'description',_0x235a('0x3'),_0x235a('0x4'),_0x235a('0x5'),_0x235a('0x6')],'include':[{'model':_0x235a('0x7'),'as':'Configurations','attributes':['id',_0x235a('0x2')],'include':[{'model':_0x235a('0x8'),'as':_0x235a('0x9'),'attributes':['id',_0x235a('0xa'),_0x235a('0xb'),_0x235a('0xc')],'include':[{'model':_0x235a('0xd'),'as':_0x235a('0xd'),'attributes':['id',_0x235a('0x2')]}]},{'model':'VtigerField','as':_0x235a('0xe'),'attributes':['id',_0x235a('0xa'),_0x235a('0xb'),_0x235a('0xf'),_0x235a('0x10'),_0x235a('0x11'),_0x235a('0xc')],'include':[{'model':_0x235a('0xd'),'as':_0x235a('0xd'),'attributes':['id',_0x235a('0x2')]}]},{'model':_0x235a('0x8'),'as':'Fields','attributes':['id',_0x235a('0xa'),_0x235a('0xb'),_0x235a('0x12'),'nameField',_0x235a('0x13'),_0x235a('0xc')],'include':[{'model':'Variable','as':_0x235a('0xd'),'attributes':['id',_0x235a('0x2')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index e3706e8..d09d1ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc82b=['GetZendeskAccount','username','password','token','authType','type','ZendeskConfiguration','Configurations','name','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','idField','nameField','customField','Request'];(function(_0x276468,_0x29685a){var _0x36dc3a=function(_0x291f0a){while(--_0x291f0a){_0x276468['push'](_0x276468['shift']());}};_0x36dc3a(++_0x29685a);}(_0xc82b,0x89));var _0xbc82=function(_0x307833,_0x33ffdb){_0x307833=_0x307833-0x0;var _0x52c17b=_0xc82b[_0x307833];return _0x52c17b;};'use strict';var client=require('../../client');exports['getZendeskAccounts']=function(){return function(_0x176771){return client[_0xbc82('0x0')](_0xbc82('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xbc82('0x2'),_0xbc82('0x3'),_0xbc82('0x4'),'remoteUri',_0xbc82('0x5'),'serverUrl',_0xbc82('0x6')],'include':[{'model':_0xbc82('0x7'),'as':_0xbc82('0x8'),'attributes':['id',_0xbc82('0x9')],'include':[{'model':_0xbc82('0xa'),'attributes':['id',_0xbc82('0x9')]},{'model':_0xbc82('0xb'),'as':_0xbc82('0xc'),'attributes':['id',_0xbc82('0x6'),_0xbc82('0xd'),_0xbc82('0xe')],'include':[{'model':_0xbc82('0xf'),'as':'Variable','attributes':['id',_0xbc82('0x9')]}]},{'model':'ZendeskField','as':_0xbc82('0x10'),'attributes':['id',_0xbc82('0x6'),_0xbc82('0xd'),_0xbc82('0x11'),_0xbc82('0x12'),_0xbc82('0x13'),_0xbc82('0xe')],'include':[{'model':_0xbc82('0xf'),'as':_0xbc82('0xf'),'attributes':['id',_0xbc82('0x9')]}]},{'model':_0xbc82('0xb'),'as':'Fields','attributes':['id',_0xbc82('0x6'),_0xbc82('0xd'),_0xbc82('0x14'),_0xbc82('0x15'),_0xbc82('0x16'),_0xbc82('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xbc82('0x9')]}]}]}]},'log':_0xbc82('0x1')});};};
\ No newline at end of file
+var _0xb466=['keyContent','Fields','customField','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','token','authType','ZendeskConfiguration','Configurations','Subjects','type','variableName','Variable','ZendeskField','Descriptions','content','keyType'];(function(_0x29b2c3,_0x2f4132){var _0x1ee5d6=function(_0x13d249){while(--_0x13d249){_0x29b2c3['push'](_0x29b2c3['shift']());}};_0x1ee5d6(++_0x2f4132);}(_0xb466,0xea));var _0x6b46=function(_0x428c20,_0x145a81){_0x428c20=_0x428c20-0x0;var _0x49ce9a=_0xb466[_0x428c20];return _0x49ce9a;};'use strict';var client=require('../../client');exports[_0x6b46('0x0')]=function(){return function(_0x58b570){return client[_0x6b46('0x1')](_0x6b46('0x2'),{'options':{'raw':![],'attributes':['id',_0x6b46('0x3'),_0x6b46('0x4'),_0x6b46('0x5'),_0x6b46('0x6'),'remoteUri',_0x6b46('0x7'),'serverUrl','type'],'include':[{'model':_0x6b46('0x8'),'as':_0x6b46('0x9'),'attributes':['id',_0x6b46('0x3')],'include':[{'model':'Tag','attributes':['id',_0x6b46('0x3')]},{'model':'ZendeskField','as':_0x6b46('0xa'),'attributes':['id',_0x6b46('0xb'),'content',_0x6b46('0xc')],'include':[{'model':_0x6b46('0xd'),'as':_0x6b46('0xd'),'attributes':['id',_0x6b46('0x3')]}]},{'model':_0x6b46('0xe'),'as':_0x6b46('0xf'),'attributes':['id','type',_0x6b46('0x10'),'key',_0x6b46('0x11'),_0x6b46('0x12'),'variableName'],'include':[{'model':_0x6b46('0xd'),'as':_0x6b46('0xd'),'attributes':['id',_0x6b46('0x3')]}]},{'model':_0x6b46('0xe'),'as':_0x6b46('0x13'),'attributes':['id',_0x6b46('0xb'),_0x6b46('0x10'),'idField','nameField',_0x6b46('0x14'),_0x6b46('0xc')],'include':[{'model':_0x6b46('0xd'),'as':_0x6b46('0xd'),'attributes':['id',_0x6b46('0x3')]}]}]}]},'log':_0x6b46('0x2')});};};
\ No newline at end of file
index c77ea2d..a80adb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21bb=['serverUrl','code','refreshToken','ZohoConfiguration','name','moduleCreate','ZohoField','Subjects','type','content','key','keyContent','variableName','nameField','customField','Variable','../../client','getZohoAccounts','Request','GetZohoAccount','description','host','zone'];(function(_0xb0f4a4,_0x18dc71){var _0x228c43=function(_0x529b35){while(--_0x529b35){_0xb0f4a4['push'](_0xb0f4a4['shift']());}};_0x228c43(++_0x18dc71);}(_0x21bb,0x13b));var _0xb21b=function(_0x3848ab,_0x2e3e73){_0x3848ab=_0x3848ab-0x0;var _0x3294ae=_0x21bb[_0x3848ab];return _0x3294ae;};'use strict';var client=require(_0xb21b('0x0'));exports[_0xb21b('0x1')]=function(){return function(_0x5b48b0){return client[_0xb21b('0x2')](_0xb21b('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb21b('0x4'),_0xb21b('0x5'),_0xb21b('0x6'),'clientId','clientSecret',_0xb21b('0x7'),_0xb21b('0x8'),_0xb21b('0x9')],'include':[{'model':_0xb21b('0xa'),'as':'Configurations','attributes':['id',_0xb21b('0xb'),_0xb21b('0xc'),'moduleSearch',_0xb21b('0x4')],'include':[{'model':_0xb21b('0xd'),'as':_0xb21b('0xe'),'attributes':['id',_0xb21b('0xf'),_0xb21b('0x10'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb21b('0xb')]}]},{'model':_0xb21b('0xd'),'as':'Descriptions','attributes':['id',_0xb21b('0xf'),_0xb21b('0x10'),_0xb21b('0x11'),'keyType',_0xb21b('0x12'),_0xb21b('0x13')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb21b('0xb')]}]},{'model':_0xb21b('0xd'),'as':'Fields','attributes':['id','type',_0xb21b('0x10'),'idField',_0xb21b('0x14'),_0xb21b('0x15'),'variableName'],'include':[{'model':_0xb21b('0x16'),'as':_0xb21b('0x16'),'attributes':['id',_0xb21b('0xb')]}]}]}]},'log':_0xb21b('0x3')});};};
\ No newline at end of file
+var _0xbf34=['zone','clientId','serverUrl','refreshToken','ZohoConfiguration','moduleCreate','moduleSearch','description','ZohoField','Subjects','type','content','Variable','Descriptions','key','keyContent','idField','nameField','getZohoAccounts','Request','GetZohoAccount','name'];(function(_0x342cc7,_0x50d57b){var _0x342a8c=function(_0x9fdd4f){while(--_0x9fdd4f){_0x342cc7['push'](_0x342cc7['shift']());}};_0x342a8c(++_0x50d57b);}(_0xbf34,0x1b4));var _0x4bf3=function(_0x1efe8b,_0x3dd139){_0x1efe8b=_0x1efe8b-0x0;var _0x163bce=_0xbf34[_0x1efe8b];return _0x163bce;};'use strict';var client=require('../../client');exports[_0x4bf3('0x0')]=function(){return function(_0x5d189d){return client[_0x4bf3('0x1')](_0x4bf3('0x2'),{'options':{'raw':![],'attributes':['id',_0x4bf3('0x3'),'description','host',_0x4bf3('0x4'),_0x4bf3('0x5'),'clientSecret',_0x4bf3('0x6'),'code',_0x4bf3('0x7')],'include':[{'model':_0x4bf3('0x8'),'as':'Configurations','attributes':['id','name',_0x4bf3('0x9'),_0x4bf3('0xa'),_0x4bf3('0xb')],'include':[{'model':_0x4bf3('0xc'),'as':_0x4bf3('0xd'),'attributes':['id',_0x4bf3('0xe'),_0x4bf3('0xf'),'variableName'],'include':[{'model':_0x4bf3('0x10'),'as':_0x4bf3('0x10'),'attributes':['id','name']}]},{'model':_0x4bf3('0xc'),'as':_0x4bf3('0x11'),'attributes':['id',_0x4bf3('0xe'),_0x4bf3('0xf'),_0x4bf3('0x12'),'keyType',_0x4bf3('0x13'),'variableName'],'include':[{'model':_0x4bf3('0x10'),'as':'Variable','attributes':['id',_0x4bf3('0x3')]}]},{'model':_0x4bf3('0xc'),'as':'Fields','attributes':['id',_0x4bf3('0xe'),_0x4bf3('0xf'),_0x4bf3('0x14'),_0x4bf3('0x15'),'customField','variableName'],'include':[{'model':_0x4bf3('0x10'),'as':_0x4bf3('0x10'),'attributes':['id',_0x4bf3('0x3')]}]}]}]},'log':_0x4bf3('0x2')});};};
\ No newline at end of file
index 37bd203..678733b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ae=['queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','outbound','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','interface','SIP/%s','queuecallerleaveAt','diff','seconds','inbound','calleridnum','exten'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x33ae,0x155));var _0xe33a=function(_0x574162,_0x2425ea){_0x574162=_0x574162-0x0;var _0x39c245=_0x33ae[_0x574162];return _0x39c245;};'use strict';var moment=require(_0xe33a('0x0'));var _=require(_0xe33a('0x1'));var util=require(_0xe33a('0x2'));var client=require(_0xe33a('0x3'));exports[_0xe33a('0x4')]=function(_0x4adbda){var _0x4a587a=_0x4adbda[_0xe33a('0x5')]||_0x4adbda[_0xe33a('0x6')];return client[_0xe33a('0x7')](_0xe33a('0x8'),{'body':{'channel':_0xe33a('0x9'),'membername':_0x4adbda[_0xe33a('0xa')],'interface':_['isNil'](_0x4adbda[_0xe33a('0xb')])?util['format'](_0xe33a('0xc'),_0x4adbda[_0xe33a('0xa')]):_0x4adbda[_0xe33a('0xb')],'type':'TALKING','enterAt':_0x4adbda[_0xe33a('0xd')],'exitAt':_0x4a587a,'duration':moment(_0x4a587a)[_0xe33a('0xe')](_0x4adbda[_0xe33a('0xd')],_0xe33a('0xf')),'data1':_0xe33a('0x10'),'data2':_0x4adbda[_0xe33a('0x11')],'data3':_0x4adbda[_0xe33a('0x12')],'data4':null,'data5':_0x4adbda[_0xe33a('0x13')],'role':_0xe33a('0x14'),'internal':_0x4adbda[_0xe33a('0x15')]?_[_0xe33a('0x16')](_0x4adbda[_0xe33a('0x15')]):undefined,'uniqueid':_0x4adbda[_0xe33a('0x17')]},'log':'CreateMemberReport'});};exports[_0xe33a('0x18')]=function(_0x359126){return client[_0xe33a('0x7')](_0xe33a('0x8'),{'body':{'channel':_0xe33a('0x9'),'membername':_0x359126[_0xe33a('0x19')],'interface':_0x359126[_0xe33a('0xb')],'type':'TALKING','enterAt':_0x359126[_0xe33a('0x1a')],'exitAt':_0x359126['endtime'],'duration':moment(_0x359126[_0xe33a('0x1b')])[_0xe33a('0xe')](_0x359126[_0xe33a('0x1a')],_0xe33a('0xf'))>=0x0?moment(_0x359126[_0xe33a('0x1b')])[_0xe33a('0xe')](_0x359126['starttime'],_0xe33a('0xf')):null,'data1':_0xe33a('0x1c'),'data2':_0x359126[_0xe33a('0x15')],'data3':_0x359126[_0xe33a('0x12')],'data4':_0x359126[_0xe33a('0x1d')]||null,'role':_0xe33a('0x14'),'internal':_0x359126[_0xe33a('0x15')]?_['toNumber'](_0x359126[_0xe33a('0x15')]):undefined,'uniqueid':_0x359126[_0xe33a('0x17')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x64ce=['calleridnum','exten','toNumber','accountcode','uniqueid','voiceDialReport','membername','starttime','endtime','diff','outbound','dialstring','agent','lodash','voiceQueueReport','Request','CreateMemberReport','voice','lastAssignedTo','isNil','format','SIP/%s','interface','TALKING','queuecallerleaveAt','seconds','inbound'];(function(_0x1d9ec8,_0x210c79){var _0x5a2a9c=function(_0x5c521b){while(--_0x5c521b){_0x1d9ec8['push'](_0x1d9ec8['shift']());}};_0x5a2a9c(++_0x210c79);}(_0x64ce,0x1a2));var _0xe64c=function(_0x4351e9,_0x17096f){_0x4351e9=_0x4351e9-0x0;var _0x27e19e=_0x64ce[_0x4351e9];return _0x27e19e;};'use strict';var moment=require('moment');var _=require(_0xe64c('0x0'));var util=require('util');var client=require('../client');exports[_0xe64c('0x1')]=function(_0x506f69){var _0x5ee25f=_0x506f69['queuecallercompleteAt']||_0x506f69['queuecallerexitAt'];return client[_0xe64c('0x2')](_0xe64c('0x3'),{'body':{'channel':_0xe64c('0x4'),'membername':_0x506f69[_0xe64c('0x5')],'interface':_[_0xe64c('0x6')](_0x506f69['interface'])?util[_0xe64c('0x7')](_0xe64c('0x8'),_0x506f69['lastAssignedTo']):_0x506f69[_0xe64c('0x9')],'type':_0xe64c('0xa'),'enterAt':_0x506f69['queuecallerleaveAt'],'exitAt':_0x5ee25f,'duration':moment(_0x5ee25f)['diff'](_0x506f69[_0xe64c('0xb')],_0xe64c('0xc')),'data1':_0xe64c('0xd'),'data2':_0x506f69[_0xe64c('0xe')],'data3':_0x506f69[_0xe64c('0xf')],'data4':null,'data5':_0x506f69['queue'],'role':'agent','internal':_0x506f69['accountcode']?_[_0xe64c('0x10')](_0x506f69[_0xe64c('0x11')]):undefined,'uniqueid':_0x506f69[_0xe64c('0x12')]},'log':'CreateMemberReport'});};exports[_0xe64c('0x13')]=function(_0x1ad54c){return client['Request'](_0xe64c('0x3'),{'body':{'channel':_0xe64c('0x4'),'membername':_0x1ad54c[_0xe64c('0x14')],'interface':_0x1ad54c[_0xe64c('0x9')],'type':_0xe64c('0xa'),'enterAt':_0x1ad54c[_0xe64c('0x15')],'exitAt':_0x1ad54c[_0xe64c('0x16')],'duration':moment(_0x1ad54c[_0xe64c('0x16')])[_0xe64c('0x17')](_0x1ad54c['starttime'],_0xe64c('0xc'))>=0x0?moment(_0x1ad54c[_0xe64c('0x16')])[_0xe64c('0x17')](_0x1ad54c[_0xe64c('0x15')],_0xe64c('0xc')):null,'data1':_0xe64c('0x18'),'data2':_0x1ad54c[_0xe64c('0x11')],'data3':_0x1ad54c[_0xe64c('0xf')],'data4':_0x1ad54c[_0xe64c('0x19')]||null,'role':_0xe64c('0x1a'),'internal':_0x1ad54c['accountcode']?_[_0xe64c('0x10')](_0x1ad54c[_0xe64c('0x11')]):undefined,'uniqueid':_0x1ad54c['uniqueid']},'log':_0xe64c('0x3')});};
\ No newline at end of file
index 8bb5fa5..85ef386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8d8=['GetSettings','../client','getSettings','Request','ShowSetting','stopRecordingOnTransfer'];(function(_0x135e73,_0x53d25e){var _0x207d86=function(_0x4803a5){while(--_0x4803a5){_0x135e73['push'](_0x135e73['shift']());}};_0x207d86(++_0x53d25e);}(_0xa8d8,0x79));var _0x8a8d=function(_0x47da64,_0x34a4ba){_0x47da64=_0x47da64-0x0;var _0x154bd3=_0xa8d8[_0x47da64];return _0x154bd3;};'use strict';var client=require(_0x8a8d('0x0'));exports[_0x8a8d('0x1')]=function(){return client[_0x8a8d('0x2')](_0x8a8d('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x8a8d('0x4')]},'log':_0x8a8d('0x5')});};
\ No newline at end of file
+var _0x4711=['Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x16de68,_0x33d7ff){var _0x1c277e=function(_0x1d8549){while(--_0x1d8549){_0x16de68['push'](_0x16de68['shift']());}};_0x1c277e(++_0x33d7ff);}(_0x4711,0x10c));var _0x1471=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4711[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0x1471('0x0'));exports[_0x1471('0x1')]=function(){return client[_0x1471('0x2')](_0x1471('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x1471('0x4')]},'log':_0x1471('0x5')});};
\ No newline at end of file
index 9d4ab65..193b961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x311a=['name','html','GetTemplate','../client','getTemplates','Request'];(function(_0x54c562,_0x1fc60b){var _0x1efd67=function(_0x3faecc){while(--_0x3faecc){_0x54c562['push'](_0x54c562['shift']());}};_0x1efd67(++_0x1fc60b);}(_0x311a,0xf9));var _0xa311=function(_0x3be3b1,_0x1f8857){_0x3be3b1=_0x3be3b1-0x0;var _0x5e55df=_0x311a[_0x3be3b1];return _0x5e55df;};'use strict';var client=require(_0xa311('0x0'));exports[_0xa311('0x1')]=function(_0x5331ba){return function(_0x30e49e){return client[_0xa311('0x2')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0xa311('0x3'),_0xa311('0x4')]},'log':_0xa311('0x5')});};};
\ No newline at end of file
+var _0x8efe=['name','html','getTemplates','Request','GetTemplate'];(function(_0x2a8d5e,_0x1abf24){var _0x195f9b=function(_0x46f852){while(--_0x46f852){_0x2a8d5e['push'](_0x2a8d5e['shift']());}};_0x195f9b(++_0x1abf24);}(_0x8efe,0x1e2));var _0xe8ef=function(_0x5315bf,_0x140a59){_0x5315bf=_0x5315bf-0x0;var _0x30aa1f=_0x8efe[_0x5315bf];return _0x30aa1f;};'use strict';var client=require('../client');exports[_0xe8ef('0x0')]=function(_0x21d8f5){return function(_0x28e5d1){return client[_0xe8ef('0x1')](_0xe8ef('0x2'),{'options':{'raw':!![],'attributes':['id',_0xe8ef('0x3'),_0xe8ef('0x4')]},'log':'GetTemplate'});};};
\ No newline at end of file
index 25ec6dc..a109c71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e58=['channel','AllConditions','field','operator','value','Condition','AnyConditions','Actions','action','data3','data4','data5','data6','data7','../client','getTriggers','Request','GetTrigger'];(function(_0x121b24,_0x213b8c){var _0x506b65=function(_0x257be4){while(--_0x257be4){_0x121b24['push'](_0x121b24['shift']());}};_0x506b65(++_0x213b8c);}(_0x6e58,0x1ac));var _0x86e5=function(_0xdae558,_0x1ff237){_0xdae558=_0xdae558-0x0;var _0x2a5842=_0x6e58[_0xdae558];return _0x2a5842;};'use strict';var client=require(_0x86e5('0x0'));exports[_0x86e5('0x1')]=function(_0x5a2e6c){return function(_0x38acf4){return client[_0x86e5('0x2')](_0x86e5('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x86e5('0x4'),'status'],'include':[{'model':'Condition','as':_0x86e5('0x5'),'attributes':['id',_0x86e5('0x6'),_0x86e5('0x7'),_0x86e5('0x8')]},{'model':_0x86e5('0x9'),'as':_0x86e5('0xa'),'attributes':['id',_0x86e5('0x6'),_0x86e5('0x7'),_0x86e5('0x8')]},{'model':'Action','as':_0x86e5('0xb'),'attributes':['id',_0x86e5('0xc'),'data1','data2',_0x86e5('0xd'),_0x86e5('0xe'),_0x86e5('0xf'),_0x86e5('0x10'),_0x86e5('0x11')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0x48e1=['value','AnyConditions','action','data1','data2','data3','data4','data5','data6','data7','../client','Request','GetTrigger','channel','Condition','field','operator'];(function(_0x3059b3,_0x225e09){var _0x256e46=function(_0x535e9b){while(--_0x535e9b){_0x3059b3['push'](_0x3059b3['shift']());}};_0x256e46(++_0x225e09);}(_0x48e1,0xc5));var _0x148e=function(_0x2498fd,_0x26cb7c){_0x2498fd=_0x2498fd-0x0;var _0x2fc093=_0x48e1[_0x2498fd];return _0x2fc093;};'use strict';var client=require(_0x148e('0x0'));exports['getTriggers']=function(_0x47f57f){return function(_0x2246d3){return client[_0x148e('0x1')](_0x148e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x148e('0x3'),'status'],'include':[{'model':_0x148e('0x4'),'as':'AllConditions','attributes':['id',_0x148e('0x5'),_0x148e('0x6'),_0x148e('0x7')]},{'model':'Condition','as':_0x148e('0x8'),'attributes':['id',_0x148e('0x5'),_0x148e('0x6'),_0x148e('0x7')]},{'model':'Action','as':'Actions','attributes':['id',_0x148e('0x9'),_0x148e('0xa'),_0x148e('0xb'),_0x148e('0xc'),_0x148e('0xd'),_0x148e('0xe'),_0x148e('0xf'),_0x148e('0x10')]}]},'log':_0x148e('0x2')});};};
\ No newline at end of file
index 77c7724..c4753cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef72=['name','defaultuser','GetTrunk','../client','getTrunks'];(function(_0x84ca35,_0x1ff9e0){var _0x2dfb80=function(_0x5dbd6b){while(--_0x5dbd6b){_0x84ca35['push'](_0x84ca35['shift']());}};_0x2dfb80(++_0x1ff9e0);}(_0xef72,0xf8));var _0x2ef7=function(_0x2298f0,_0x3bbf4f){_0x2298f0=_0x2298f0-0x0;var _0x39b136=_0xef72[_0x2298f0];return _0x39b136;};'use strict';var client=require(_0x2ef7('0x0'));exports[_0x2ef7('0x1')]=function(_0x2b43b4){return function(_0x56b415){return client['Request']('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x2ef7('0x2'),'registry',_0x2ef7('0x3')]},'log':_0x2ef7('0x4')});};};
\ No newline at end of file
+var _0x3532=['GetTrunk','name','registry','../client'];(function(_0x4e7c2,_0x3b3347){var _0x84bb35=function(_0x217b38){while(--_0x217b38){_0x4e7c2['push'](_0x4e7c2['shift']());}};_0x84bb35(++_0x3b3347);}(_0x3532,0x1bf));var _0x2353=function(_0x19baeb,_0x241228){_0x19baeb=_0x19baeb-0x0;var _0xa7ea12=_0x3532[_0x19baeb];return _0xa7ea12;};'use strict';var client=require(_0x2353('0x0'));exports['getTrunks']=function(_0x2d25b0){return function(_0x2dea47){return client['Request'](_0x2353('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x2353('0x2'),_0x2353('0x3'),'defaultuser']},'log':_0x2353('0x1')});};};
\ No newline at end of file
index ced880f..72387e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x59d6f7,_0x47b42a){var _0x4d0c74=function(_0x4839c1){while(--_0x4839c1){_0x59d6f7['push'](_0x59d6f7['shift']());}};_0x4d0c74(++_0x47b42a);}(_0x9c44,0x178));var _0x49c4=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x9c44[_0x32f7d7];return _0x133d09;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
+var _0xedd9=['mobile','getTelephones','internal','PauseUser','savePause','saveUnpause','UnpauseUser','ShowUser','interface','getAgent','getAgents','Request','GetUser','agent','name','email','accountcode','fullname','lastLoginAt','pauseType','lastPauseAt','voicePause'];(function(_0x185fa9,_0x522c3d){var _0x564c2d=function(_0x51dcd9){while(--_0x51dcd9){_0x185fa9['push'](_0x185fa9['shift']());}};_0x564c2d(++_0x522c3d);}(_0xedd9,0xfc));var _0x9edd=function(_0x2906bf,_0x3aabbe){_0x2906bf=_0x2906bf-0x0;var _0x254032=_0xedd9[_0x2906bf];return _0x254032;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3')},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),_0x9edd('0xb'),'phone',_0x9edd('0xc'),'interface']},'log':_0x9edd('0x0')});};};exports[_0x9edd('0xd')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x9edd('0x4'),'accountcode',_0x9edd('0xe')]},'log':_0x9edd('0xd')});};};exports['savePause']=function(_0xbf9da6,_0x13dc4f,_0x5b6c00){return client[_0x9edd('0x1')](_0x9edd('0xf'),{'body':{'type':_0x13dc4f,'uniqueid':_0x5b6c00},'options':{'where':{'id':_0xbf9da6['id']}},'log':_0x9edd('0x10')});};exports[_0x9edd('0x11')]=function(_0x287ddd){return client[_0x9edd('0x1')](_0x9edd('0x12'),{'body':{},'options':{'where':{'id':_0x287ddd['id']}},'log':_0x9edd('0x10')});};exports['getAgent']=function(_0x176bfa){return client[_0x9edd('0x1')](_0x9edd('0x13'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3'),'id':_0x176bfa},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),'voicePause',_0x9edd('0x14')]},'log':_0x9edd('0x15')});};
\ No newline at end of file
index 71643fb..7f04934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0168=['CreateVoiceAgentReport','UpdateVoiceAgentReport','../client','create','Request'];(function(_0x1780f8,_0x11ba93){var _0x33a410=function(_0x2a015f){while(--_0x2a015f){_0x1780f8['push'](_0x1780f8['shift']());}};_0x33a410(++_0x11ba93);}(_0x0168,0x9d));var _0x8016=function(_0x4f0837,_0x2ef53b){_0x4f0837=_0x4f0837-0x0;var _0x30abc4=_0x0168[_0x4f0837];return _0x30abc4;};'use strict';var client=require(_0x8016('0x0'));exports[_0x8016('0x1')]=function(_0x3d6098){return client[_0x8016('0x2')](_0x8016('0x3'),{'body':_0x3d6098,'log':_0x8016('0x3')});};exports['update']=function(_0x258fa4,_0x3c5e50,_0x918d77){return client['Request']('UpdateVoiceAgentReport',{'body':_0x258fa4,'options':{'where':{'uniqueid':_0x3c5e50,'interface':_0x918d77,'agentcomplete':!![]}},'log':_0x8016('0x4')});};
\ No newline at end of file
+var _0xc003=['update','Request','UpdateVoiceAgentReport','create','CreateVoiceAgentReport'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0xc003,0xcb));var _0x3c00=function(_0xd1aae2,_0x2ebd3f){_0xd1aae2=_0xd1aae2-0x0;var _0x58531c=_0xc003[_0xd1aae2];return _0x58531c;};'use strict';var client=require('../client');exports[_0x3c00('0x0')]=function(_0x4d7db0){return client['Request']('CreateVoiceAgentReport',{'body':_0x4d7db0,'log':_0x3c00('0x1')});};exports[_0x3c00('0x2')]=function(_0x2a76f2,_0x311c97,_0x5b1a16){return client[_0x3c00('0x3')](_0x3c00('0x4'),{'body':_0x2a76f2,'options':{'where':{'uniqueid':_0x311c97,'interface':_0x5b1a16,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index a704894..2521bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f27=['endOf','format','disposition','duration','billableseconds','GetVoiceCallReports','moment','util','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xd1449d,_0x435ecb){var _0x3199d9=function(_0x4f6a46){while(--_0x4f6a46){_0xd1449d['push'](_0xd1449d['shift']());}};_0x3199d9(++_0x435ecb);}(_0x6f27,0x1a8));var _0x76f2=function(_0x602a10,_0x1e0c32){_0x602a10=_0x602a10-0x0;var _0x3d6837=_0x6f27[_0x602a10];return _0x3d6837;};'use strict';var moment=require(_0x76f2('0x0'));var util=require(_0x76f2('0x1'));var _=require('lodash');var client=require('../client');exports[_0x76f2('0x2')]=function(_0x1cc0e4){return client[_0x76f2('0x3')](_0x76f2('0x4'),{'body':_[_0x76f2('0x5')](_0x1cc0e4,{'source':_0x1cc0e4[_0x76f2('0x6')],'destinationcontext':_0x1cc0e4[_0x76f2('0x7')],'callerid':_0x1cc0e4[_0x76f2('0x8')],'amaflags':_0x76f2('0x9')}),'log':_0x76f2('0x4')});};exports[_0x76f2('0xa')]=function(){return function(){return client[_0x76f2('0x3')](_0x76f2('0xb'),{'options':{'where':{'type':[_0x76f2('0xc')],'createdAt':{'$between':[moment()[_0x76f2('0xd')](_0x76f2('0xe'))['format'](_0x76f2('0xf')),moment()[_0x76f2('0x10')](_0x76f2('0xe'))[_0x76f2('0x11')](_0x76f2('0xf'))]}},'attributes':['type',_0x76f2('0x12'),_0x76f2('0x13'),_0x76f2('0x14')]},'log':_0x76f2('0x15')});};};
\ No newline at end of file
+var _0x7eee=['moment','../client','create','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','GetVoiceCallReports'];(function(_0x4cbf20,_0x1bfa66){var _0x582ae4=function(_0x5eca38){while(--_0x5eca38){_0x4cbf20['push'](_0x4cbf20['shift']());}};_0x582ae4(++_0x1bfa66);}(_0x7eee,0x104));var _0xe7ee=function(_0x204789,_0x41dea0){_0x204789=_0x204789-0x0;var _0x496fb4=_0x7eee[_0x204789];return _0x496fb4;};'use strict';var moment=require(_0xe7ee('0x0'));var util=require('util');var _=require('lodash');var client=require(_0xe7ee('0x1'));exports[_0xe7ee('0x2')]=function(_0x41a1f1){return client['Request'](_0xe7ee('0x3'),{'body':_[_0xe7ee('0x4')](_0x41a1f1,{'source':_0x41a1f1[_0xe7ee('0x5')],'destinationcontext':_0x41a1f1[_0xe7ee('0x6')],'callerid':_0x41a1f1[_0xe7ee('0x7')],'amaflags':_0xe7ee('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0xe7ee('0x9')]=function(){return function(){return client['Request'](_0xe7ee('0xa'),{'options':{'where':{'type':[_0xe7ee('0xb')],'createdAt':{'$between':[moment()[_0xe7ee('0xc')](_0xe7ee('0xd'))[_0xe7ee('0xe')](_0xe7ee('0xf')),moment()[_0xe7ee('0x10')]('day')[_0xe7ee('0xe')](_0xe7ee('0xf'))]}},'attributes':[_0xe7ee('0x11'),_0xe7ee('0x12'),'duration','billableseconds']},'log':_0xe7ee('0x13')});};};
\ No newline at end of file
index 419989d..58230a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['CreateVoiceDialReport','../client'];(function(_0x303b91,_0x47524c){var _0x31dc24=function(_0x3f3208){while(--_0x3f3208){_0x303b91['push'](_0x303b91['shift']());}};_0x31dc24(++_0x47524c);}(_0xbdb7,0x11b));var _0x7bdb=function(_0x168120,_0x4e19de){_0x168120=_0x168120-0x0;var _0x5c827e=_0xbdb7[_0x168120];return _0x5c827e;};'use strict';var client=require(_0x7bdb('0x0'));exports['create']=function(_0x3be2ca){return client['Request'](_0x7bdb('0x1'),{'body':_0x3be2ca,'log':_0x7bdb('0x1')});};
\ No newline at end of file
+var _0x2190=['../client','create','Request','CreateVoiceDialReport'];(function(_0x5672af,_0x338cc3){var _0xfce1e=function(_0x2cc4e3){while(--_0x2cc4e3){_0x5672af['push'](_0x5672af['shift']());}};_0xfce1e(++_0x338cc3);}(_0x2190,0x88));var _0x0219=function(_0x531f56,_0x334fcc){_0x531f56=_0x531f56-0x0;var _0x2cd1d4=_0x2190[_0x531f56];return _0x2cd1d4;};'use strict';var client=require(_0x0219('0x0'));exports[_0x0219('0x1')]=function(_0x17d570){return client[_0x0219('0x2')](_0x0219('0x3'),{'body':_0x17d570,'log':_0x0219('0x3')});};
\ No newline at end of file
index 27fba75..60d782b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f37=['../client','getVoiceExtensions','Request','recordingFormat'];(function(_0x50fb34,_0x56b847){var _0x478797=function(_0x2a45df){while(--_0x2a45df){_0x50fb34['push'](_0x50fb34['shift']());}};_0x478797(++_0x56b847);}(_0x8f37,0x190));var _0x78f3=function(_0x3f2ffd,_0x461ee3){_0x3f2ffd=_0x3f2ffd-0x0;var _0x4dff7f=_0x8f37[_0x3f2ffd];return _0x4dff7f;};'use strict';var client=require(_0x78f3('0x0'));exports[_0x78f3('0x1')]=function(){return function(){return client[_0x78f3('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id','exten',_0x78f3('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x78f3('0x1')});};};
\ No newline at end of file
+var _0xcb91=['recordingFormat','Request','GetVoiceExtension','exten'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0xcb91[_0x288f5e];return _0x476cc9;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':!![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index 6e05680..a0feb36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87e1=['dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','name','callerid','active','Pause','TrunkBackup','Interval','Intervals','interval','getVoiceQueues','Request','acw','autopause','monitor_format','type','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x87e1,0x67));var _0x187e=function(_0x1b29b2,_0x3b6b11){_0x1b29b2=_0x1b29b2-0x0;var _0x560b68=_0x87e1[_0x1b29b2];return _0x560b68;};'use strict';var client=require('../client');exports[_0x187e('0x0')]=function(){return function(){return client[_0x187e('0x1')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id','name',_0x187e('0x2'),'acwTimeout',_0x187e('0x3'),_0x187e('0x4'),_0x187e('0x5'),'dialActive',_0x187e('0x6'),_0x187e('0x7'),_0x187e('0x8'),_0x187e('0x9'),_0x187e('0xa'),_0x187e('0xb'),_0x187e('0xc'),_0x187e('0xd'),_0x187e('0xe'),_0x187e('0xf'),_0x187e('0x10'),_0x187e('0x11'),_0x187e('0x12'),_0x187e('0x13'),'dialCongestionRetryFrequency',_0x187e('0x14'),_0x187e('0x15'),_0x187e('0x16'),_0x187e('0x17'),_0x187e('0x18'),'dialTimezone',_0x187e('0x19'),_0x187e('0x1a'),_0x187e('0x1b'),_0x187e('0x1c'),_0x187e('0x1d'),_0x187e('0x1e'),'dialAMDAfterGreetingSilence',_0x187e('0x1f'),'dialAMDMinWordLength',_0x187e('0x20'),_0x187e('0x21'),_0x187e('0x22'),_0x187e('0x23'),_0x187e('0x24'),'dialRecallMeTimeout','dialRecallInQueue',_0x187e('0x25'),_0x187e('0x26'),'dialAgiAfterHangupClient',_0x187e('0x27'),_0x187e('0x4'),_0x187e('0x28'),_0x187e('0x29'),'dialCutDigit',_0x187e('0x2a'),_0x187e('0x2b'),_0x187e('0x2c'),_0x187e('0x2d'),_0x187e('0x2e'),_0x187e('0x2f'),_0x187e('0x30'),'dialMachineRetryFrequency',_0x187e('0x31'),'dialAgentRejectRetryFrequency','mandatoryDisposition',_0x187e('0x32'),_0x187e('0x33')],'include':[{'model':_0x187e('0x34'),'as':'Trunk','attributes':['id',_0x187e('0x35'),_0x187e('0x36'),_0x187e('0x37')]},{'model':_0x187e('0x38'),'as':'mandatoryDispositionPause','attributes':['id',_0x187e('0x35')]},{'model':_0x187e('0x34'),'as':_0x187e('0x39'),'attributes':['id','name',_0x187e('0x36'),_0x187e('0x37')]},{'model':_0x187e('0x3a'),'as':_0x187e('0x3a'),'attributes':['id','name'],'include':[{'model':_0x187e('0x3a'),'as':_0x187e('0x3b'),'attributes':['id',_0x187e('0x35'),_0x187e('0x3c')]}]}]},'log':_0x187e('0x0')});};};
\ No newline at end of file
+var _0xd5d1=['dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdNumber','dialQueueOptions','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','getVoiceQueues','Request','name','autopause','type','dialActive','dialMethod','dialLimitChannel'];(function(_0x23cb27,_0x167753){var _0x554433=function(_0x2b5c51){while(--_0x2b5c51){_0x23cb27['push'](_0x23cb27['shift']());}};_0x554433(++_0x167753);}(_0xd5d1,0xdc));var _0x1d5d=function(_0x11a381,_0xc3adb7){_0x11a381=_0x11a381-0x0;var _0x239576=_0xd5d1[_0x11a381];return _0x239576;};'use strict';var client=require('../client');exports[_0x1d5d('0x0')]=function(){return function(){return client[_0x1d5d('0x1')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x1d5d('0x2'),'acw','acwTimeout',_0x1d5d('0x3'),'monitor_format',_0x1d5d('0x4'),_0x1d5d('0x5'),_0x1d5d('0x6'),_0x1d5d('0x7'),_0x1d5d('0x8'),_0x1d5d('0x9'),_0x1d5d('0xa'),_0x1d5d('0xb'),'dialPredictiveInterval','dialOriginateCallerIdName',_0x1d5d('0xc'),'dialOriginateTimeout',_0x1d5d('0xd'),'dialQueueTimeout','dialQueueProject',_0x1d5d('0xe'),_0x1d5d('0xf'),_0x1d5d('0x10'),_0x1d5d('0x11'),'dialNoAnswerMaxRetry',_0x1d5d('0x12'),_0x1d5d('0x13'),_0x1d5d('0x14'),'dialGlobalInterval',_0x1d5d('0x15'),'dialCheckDuplicateType',_0x1d5d('0x16'),_0x1d5d('0x17'),_0x1d5d('0x18'),'dialAMDAfterGreetingSilence',_0x1d5d('0x19'),'dialAMDMinWordLength',_0x1d5d('0x1a'),_0x1d5d('0x1b'),_0x1d5d('0x1c'),_0x1d5d('0x1d'),_0x1d5d('0x1e'),_0x1d5d('0x1f'),'dialRecallInQueue',_0x1d5d('0x20'),_0x1d5d('0x21'),'dialAgiAfterHangupClient',_0x1d5d('0x22'),'monitor_format',_0x1d5d('0x23'),_0x1d5d('0x24'),_0x1d5d('0x25'),'dialNoSuchNumberMaxRetry',_0x1d5d('0x26'),'dialDropMaxRetry',_0x1d5d('0x27'),_0x1d5d('0x28'),_0x1d5d('0x29'),_0x1d5d('0x2a'),_0x1d5d('0x2b'),'dialAgentRejectMaxRetry',_0x1d5d('0x2c'),_0x1d5d('0x2d'),_0x1d5d('0x2e'),_0x1d5d('0x2f')],'include':[{'model':_0x1d5d('0x30'),'as':_0x1d5d('0x30'),'attributes':['id',_0x1d5d('0x2'),_0x1d5d('0x31'),_0x1d5d('0x32')]},{'model':_0x1d5d('0x33'),'as':_0x1d5d('0x34'),'attributes':['id',_0x1d5d('0x2')]},{'model':'Trunk','as':_0x1d5d('0x35'),'attributes':['id','name','callerid',_0x1d5d('0x32')]},{'model':_0x1d5d('0x36'),'as':'Interval','attributes':['id',_0x1d5d('0x2')],'include':[{'model':_0x1d5d('0x36'),'as':_0x1d5d('0x37'),'attributes':['id',_0x1d5d('0x2'),_0x1d5d('0x38')]}]}]},'log':_0x1d5d('0x0')});};};
\ No newline at end of file
index e6926d9..ac0311b 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(_0x466bc5,_0x3a0f2a){var _0x138952=function(_0x392fa2){while(--_0x392fa2){_0x466bc5['push'](_0x466bc5['shift']());}};_0x138952(++_0x3a0f2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x23d9a9,_0x39f1f2){var _0x144f4d=function(_0x5e0928){while(--_0x5e0928){_0x23d9a9['push'](_0x23d9a9['shift']());}};_0x144f4d(++_0x39f1f2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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 fa14a90..9ff3641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f4=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x418825,_0x1ebf6d){var _0x41e87d=function(_0x49bfb2){while(--_0x49bfb2){_0x418825['push'](_0x418825['shift']());}};_0x41e87d(++_0x1ebf6d);}(_0x45f4,0x6c));var _0x445f=function(_0x3eca3b,_0x4a2198){_0x3eca3b=_0x3eca3b-0x0;var _0xec2064=_0x45f4[_0x3eca3b];return _0xec2064;};'use strict';var client=require('../client');exports[_0x445f('0x0')]=function(_0x44b1f2){return function(){return client[_0x445f('0x1')](_0x445f('0x2'),{'options':{'where':{'VoiceQueueId':_0x44b1f2,'paused':!![]},'raw':!![]},'log':_0x445f('0x0')});};};
\ No newline at end of file
+var _0x2b42=['Request','getVoiceQueueRtPauses'];(function(_0x4b75c6,_0x18895d){var _0x3fe0a7=function(_0x13dd60){while(--_0x13dd60){_0x4b75c6['push'](_0x4b75c6['shift']());}};_0x3fe0a7(++_0x18895d);}(_0x2b42,0x1d4));var _0x22b4=function(_0x502598,_0x1e95c8){_0x502598=_0x502598-0x0;var _0xbdee21=_0x2b42[_0x502598];return _0xbdee21;};'use strict';var client=require('../client');exports['getVoiceQueueRtPauses']=function(_0x3e09c1){return function(){return client[_0x22b4('0x0')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x3e09c1,'paused':!![]},'raw':!![]},'log':_0x22b4('0x1')});};};
\ No newline at end of file
index 68ccfe2..61914b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x5b532b,_0x70c4f5){var _0x197b6=function(_0x3686fe){while(--_0x3686fe){_0x5b532b['push'](_0x5b532b['shift']());}};_0x197b6(++_0x70c4f5);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x393417,_0x5cf55f){var _0x1e55c5=function(_0xee63bf){while(--_0xee63bf){_0x393417['push'](_0x393417['shift']());}};_0x1e55c5(++_0x5cf55f);}(_0x7a54,0x106));var _0x47a5=function(_0x5c10c5,_0x11b5b7){_0x5c10c5=_0x5c10c5-0x0;var _0x536f79=_0x7a54[_0x5c10c5];return _0x536f79;};'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 c4b356d..107aaa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23e7=['origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','origtransferercontext','origtransfererexten','../client','blindTransfer','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','blind','attendedTransfer','result'];(function(_0x219f59,_0x207967){var _0x24c85a=function(_0x305227){while(--_0x305227){_0x219f59['push'](_0x219f59['shift']());}};_0x24c85a(++_0x207967);}(_0x23e7,0xdd));var _0x723e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0x23e7[_0x173d7e];return _0x2220d6;};'use strict';var client=require(_0x723e('0x0'));exports['transfers']={};exports[_0x723e('0x1')]=function(_0x3d8c3d){return client['Request'](_0x723e('0x2'),{'body':{'result':_0x3d8c3d['result'],'transfererchannel':_0x3d8c3d[_0x723e('0x3')],'transferercalleridnum':_0x3d8c3d[_0x723e('0x4')],'transferercalleridname':_0x3d8c3d[_0x723e('0x5')],'transfererconnectedlinenum':_0x3d8c3d[_0x723e('0x6')],'transfererconnectedlinename':_0x3d8c3d[_0x723e('0x7')],'transfereraccountcode':_0x3d8c3d['transfereraccountcode'],'transferercontext':_0x3d8c3d[_0x723e('0x8')],'transfererexten':_0x3d8c3d[_0x723e('0x9')],'transfererlinkedid':_0x3d8c3d[_0x723e('0xa')],'transfereechannel':_0x3d8c3d[_0x723e('0xb')],'transfereecalleridnum':_0x3d8c3d[_0x723e('0xc')],'transfereecalleridname':_0x3d8c3d[_0x723e('0xd')],'transfereeconnectedlinenum':_0x3d8c3d[_0x723e('0xe')],'transfereeconnectedlinename':_0x3d8c3d[_0x723e('0xf')],'transfereeaccountcode':_0x3d8c3d[_0x723e('0x10')],'transfereecontext':_0x3d8c3d[_0x723e('0x11')],'transfereeexten':_0x3d8c3d[_0x723e('0x12')],'transfereelinkedid':_0x3d8c3d[_0x723e('0x13')],'isexternal':_0x3d8c3d[_0x723e('0x14')],'context':_0x3d8c3d[_0x723e('0x15')],'extension':_0x3d8c3d['extension'],'type':_0x723e('0x16')},'log':_0x723e('0x2')});};exports[_0x723e('0x17')]=function(_0x2ceb5f){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x2ceb5f[_0x723e('0x18')],'transfererchannel':_0x2ceb5f[_0x723e('0x19')],'transferercalleridnum':_0x2ceb5f[_0x723e('0x1a')],'transferercalleridname':_0x2ceb5f[_0x723e('0x1b')],'transfererconnectedlinenum':_0x2ceb5f[_0x723e('0x1c')],'transfererconnectedlinename':_0x2ceb5f[_0x723e('0x1d')],'transfereraccountcode':_0x2ceb5f[_0x723e('0x1e')],'transferercontext':_0x2ceb5f[_0x723e('0x1f')],'transfererexten':_0x2ceb5f[_0x723e('0x20')],'transfererlinkedid':_0x2ceb5f[_0x723e('0x21')],'transfereechannel':_0x2ceb5f[_0x723e('0x22')],'transfereecalleridnum':_0x2ceb5f['transfertargetcalleridnum'],'transfereecalleridname':_0x2ceb5f[_0x723e('0x23')],'transfereeconnectedlinenum':_0x2ceb5f['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x2ceb5f[_0x723e('0x24')],'transfereeaccountcode':_0x2ceb5f['transfertargetaccountcode'],'transfereecontext':_0x2ceb5f[_0x723e('0x25')],'transfereeexten':_0x2ceb5f[_0x723e('0x26')],'transfereelinkedid':_0x2ceb5f['transfertargetlinkedid'],'isexternal':_0x2ceb5f[_0x723e('0x14')],'context':_0x2ceb5f[_0x723e('0x27')],'extension':_0x2ceb5f[_0x723e('0x28')],'type':'attended'},'log':_0x723e('0x2')});};
\ No newline at end of file
+var _0x3e63=['transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinename','transfereeaccountcode','transfereeexten','context','blind','attendedTransfer','origtransferercalleridnum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','transfers','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfereraccountcode','transferercontext'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x3e63,0x1d6));var _0x33e6=function(_0x1cd47d,_0x55bc75){_0x1cd47d=_0x1cd47d-0x0;var _0x29d52f=_0x3e63[_0x1cd47d];return _0x29d52f;};'use strict';var client=require('../client');exports[_0x33e6('0x0')]={};exports['blindTransfer']=function(_0x47c39c){return client[_0x33e6('0x1')](_0x33e6('0x2'),{'body':{'result':_0x47c39c[_0x33e6('0x3')],'transfererchannel':_0x47c39c[_0x33e6('0x4')],'transferercalleridnum':_0x47c39c[_0x33e6('0x5')],'transferercalleridname':_0x47c39c[_0x33e6('0x6')],'transfererconnectedlinenum':_0x47c39c['transfererconnectedlinenum'],'transfererconnectedlinename':_0x47c39c[_0x33e6('0x7')],'transfereraccountcode':_0x47c39c[_0x33e6('0x8')],'transferercontext':_0x47c39c[_0x33e6('0x9')],'transfererexten':_0x47c39c['transfererexten'],'transfererlinkedid':_0x47c39c['transfererlinkedid'],'transfereechannel':_0x47c39c[_0x33e6('0xa')],'transfereecalleridnum':_0x47c39c[_0x33e6('0xb')],'transfereecalleridname':_0x47c39c[_0x33e6('0xc')],'transfereeconnectedlinenum':_0x47c39c['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x47c39c[_0x33e6('0xd')],'transfereeaccountcode':_0x47c39c[_0x33e6('0xe')],'transfereecontext':_0x47c39c['transfereecontext'],'transfereeexten':_0x47c39c[_0x33e6('0xf')],'transfereelinkedid':_0x47c39c['transfereelinkedid'],'isexternal':_0x47c39c['isexternal'],'context':_0x47c39c[_0x33e6('0x10')],'extension':_0x47c39c['extension'],'type':_0x33e6('0x11')},'log':_0x33e6('0x2')});};exports[_0x33e6('0x12')]=function(_0x1e7d12){return client[_0x33e6('0x1')](_0x33e6('0x2'),{'body':{'result':_0x1e7d12[_0x33e6('0x3')],'transfererchannel':_0x1e7d12['origtransfererchannel'],'transferercalleridnum':_0x1e7d12[_0x33e6('0x13')],'transferercalleridname':_0x1e7d12['origtransferercalleridname'],'transfererconnectedlinenum':_0x1e7d12['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x1e7d12[_0x33e6('0x14')],'transfereraccountcode':_0x1e7d12[_0x33e6('0x15')],'transferercontext':_0x1e7d12[_0x33e6('0x16')],'transfererexten':_0x1e7d12[_0x33e6('0x17')],'transfererlinkedid':_0x1e7d12['origtransfererlinkedid'],'transfereechannel':_0x1e7d12['transfertargetchannel'],'transfereecalleridnum':_0x1e7d12['transfertargetcalleridnum'],'transfereecalleridname':_0x1e7d12[_0x33e6('0x18')],'transfereeconnectedlinenum':_0x1e7d12['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x1e7d12[_0x33e6('0x19')],'transfereeaccountcode':_0x1e7d12[_0x33e6('0x1a')],'transfereecontext':_0x1e7d12[_0x33e6('0x1b')],'transfereeexten':_0x1e7d12['transfertargetexten'],'transfereelinkedid':_0x1e7d12[_0x33e6('0x1c')],'isexternal':_0x1e7d12['isexternal'],'context':_0x1e7d12[_0x33e6('0x1d')],'extension':_0x1e7d12[_0x33e6('0x1e')],'type':_0x33e6('0x1f')},'log':_0x33e6('0x2')});};
\ No newline at end of file
index e8bdb6c..42a7cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb9=['then','catch','error','message','isConnected','command','Command','voiceQueues','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','type','unmanaged','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','push','find','undefined','values','channels','length','voicechannel','map','uniqueid','channel','%s.%s','filename','wav','ai(mixmonitorid)','isNil','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','resolve','StopMixMonitor','destinationchannel','stop','monitors','StopMixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','queueChannels','voicequeuechannel','Hangup','voicequeuechannelredirect','exten','context','telephones','trunks','outboundChannels','campaigns','event','Event\x20name\x20mandatory','custom:','send','checkAfterSend','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','../ami','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','asterisk','username','ami\x20disconnected','join','pick','keys','action','Reload','Action'];(function(_0x237d4b,_0x260383){var _0x14d1ad=function(_0x34e762){while(--_0x34e762){_0x237d4b['push'](_0x237d4b['shift']());}};_0x14d1ad(++_0x260383);}(_0xafb9,0x68));var _0x9afb=function(_0x2c842f,_0x179c36){_0x2c842f=_0x2c842f-0x0;var _0x103db7=_0xafb9[_0x2c842f];return _0x103db7;};'use strict';var _=require(_0x9afb('0x0'));var util=require(_0x9afb('0x1'));var jayson=require(_0x9afb('0x2'));var schema=require(_0x9afb('0x3'));var BPromise=require(_0x9afb('0x4'));var moment=require(_0x9afb('0x5'));var config=require(_0x9afb('0x6'));var properties=require(_0x9afb('0x7'));var ami=require(_0x9afb('0x8'));exports['listen']=function(_0x498463,_0x91ffa0,_0x56a139){return new BPromise(function(_0x1ccf93,_0x548b24){var _0x556880={'QueuePause':function(_0x4c0e9d){return new Promise(function(_0x1edf77,_0x20b8c1){var _0x51dc88=util[_0x9afb('0x9')](_0x9afb('0xa'),_0x9afb('0xb'),_0x4c0e9d[_0x9afb('0xc')]);if(_0x498463[_0x9afb('0xd')]&&_0x498463['timers'][_0x51dc88]&&_0x498463['timers'][_0x51dc88][_0x9afb('0xe')]){_0x498463[_0x9afb('0xd')][_0x51dc88][_0x9afb('0xf')]();}if(_0x498463[_0x9afb('0x10')][_0x51dc88]){_0x498463[_0x9afb('0x10')][_0x51dc88][_0x9afb('0x11')]({'statePause':_0x4c0e9d[_0x9afb('0x12')]?!![]:![]});}_0x1edf77({'code':0xc8,'message':_0x9afb('0x13')});});},'Reload':function(_0x464462){var _0x10602b=this;return new Promise(function(_0x47a804,_0x27137c){if(ami['isConnected']()==![]){return _0x27137c(_0x10602b['error'](0x1f4,[config[_0x9afb('0x14')]['ip'],config[_0x9afb('0x14')][_0x9afb('0x15')],_0x9afb('0x16')][_0x9afb('0x17')]('\x20')));}_0x464462=_[_0x9afb('0x18')](_0x464462,_[_0x9afb('0x19')](properties['module']));_0x464462[_0x9afb('0x1a')]=_0x9afb('0x1b');return ami[_0x9afb('0x1c')](_0x464462)[_0x9afb('0x1d')](function(_0x223aef){_0x47a804({'code':0xc8,'message':_0x223aef['message']});})[_0x9afb('0x1e')](function(_0x50a7e4){_0x27137c(_0x10602b[_0x9afb('0x1f')](0x1f5,_0x50a7e4[_0x9afb('0x20')]));});});},'Command':function(_0x4a856b){var _0x4a1c74=this;return new Promise(function(_0x3ac42f,_0x1217d9){if(ami[_0x9afb('0x21')]()==![]){return _0x1217d9(_0x4a1c74[_0x9afb('0x1f')](0x1f4,[config[_0x9afb('0x14')]['ip'],config['asterisk'][_0x9afb('0x15')],'ami\x20disconnected']['join']('\x20')));}_0x4a856b=_[_0x9afb('0x18')](_0x4a856b,_0x9afb('0x22'));_0x4a856b[_0x9afb('0x1a')]=_0x9afb('0x23');return ami['Action'](_0x4a856b)[_0x9afb('0x1d')](function(_0x725a04){_0x3ac42f({'code':0xc8,'message':_0x725a04['content']});})['catch'](function(_0x5b5dab){_0x1217d9(_0x4a1c74[_0x9afb('0x1f')](0x1f5,_0x5b5dab['message']));});});},'VoiceQueues':function(_0x387379){return new Promise(function(_0x123510,_0x50a919){var _0x324293=[];for(var _0x28beba in _0x498463[_0x9afb('0x24')]){if(_0x498463[_0x9afb('0x24')]['hasOwnProperty'](_0x28beba)){var _0x348255=_0x498463['voiceQueues'][_0x28beba];var _0x29e092={'id':_0x348255['id'],'name':_0x348255['name'],'strategy':_0x348255['strategy'],'answered':_0x348255[_0x9afb('0x25')],'available':_0x348255[_0x9afb('0x26')],'loggedIn':_0x348255[_0x9afb('0x27')],'pTalking':_0x348255[_0x9afb('0x28')],'sumBillable':_0x348255[_0x9afb('0x29')],'sumDuration':_0x348255[_0x9afb('0x2a')],'sumHoldTime':_0x348255[_0x9afb('0x2b')]||0x0,'talking':_0x348255['talking'],'total':_0x348255['total'],'type':_0x348255[_0x9afb('0x2c')],'unmanaged':_0x348255[_0x9afb('0x2d')],'abandoned':_0x348255['abandoned'],'waiting':_0x348255[_0x9afb('0x2e')],'loggedInDb':_0x348255[_0x9afb('0x2f')]};if(_0x348255['type']===_0x9afb('0x30')){_0x29e092[_0x9afb('0x31')]=_0x348255[_0x9afb('0x31')];_0x29e092[_0x9afb('0x32')]=_0x348255[_0x9afb('0x32')];_0x29e092[_0x9afb('0x33')]=_0x348255[_0x9afb('0x33')];_0x29e092[_0x9afb('0x34')]=_0x348255['dialOriginateCallerIdNumber'];_0x29e092['dialOriginateTimeout']=_0x348255[_0x9afb('0x35')];_0x29e092[_0x9afb('0x36')]=_0x348255[_0x9afb('0x36')];_0x29e092[_0x9afb('0x37')]=_0x348255[_0x9afb('0x37')];_0x29e092[_0x9afb('0x38')]=_0x348255[_0x9afb('0x38')];_0x29e092['outboundAnswerCallsDay']=_0x348255['outboundAnswerCallsDay'];_0x29e092[_0x9afb('0x39')]=_0x348255[_0x9afb('0x39')];_0x29e092['outboundBusyCallsDay']=_0x348255[_0x9afb('0x3a')];_0x29e092['outboundCongestionCallsDay']=_0x348255[_0x9afb('0x3b')];_0x29e092[_0x9afb('0x3c')]=_0x348255['outboundDropCallsDayACS'];_0x29e092[_0x9afb('0x3d')]=_0x348255['outboundDropCallsDayCallersExit'];_0x29e092[_0x9afb('0x3e')]=_0x348255[_0x9afb('0x3e')];_0x29e092[_0x9afb('0x3f')]=_0x348255[_0x9afb('0x3f')];_0x29e092[_0x9afb('0x40')]=_0x348255[_0x9afb('0x40')];_0x29e092[_0x9afb('0x41')]=_0x348255[_0x9afb('0x41')];_0x29e092['outboundReCallsDay']=_0x348255[_0x9afb('0x42')];_0x29e092['outboundRejectCallsDay']=_0x348255[_0x9afb('0x43')];_0x29e092[_0x9afb('0x44')]=_0x348255[_0x9afb('0x44')];_0x29e092[_0x9afb('0x45')]=_0x348255[_0x9afb('0x45')];_0x29e092[_0x9afb('0x46')]=_0x348255[_0x9afb('0x46')];_0x29e092[_0x9afb('0x47')]=_0x348255[_0x9afb('0x47')];_0x29e092['predictiveIntervalDroppedCallsCallersExit']=_0x348255[_0x9afb('0x48')];_0x29e092['predictiveIntervalDroppedCallsTimeout']=_0x348255[_0x9afb('0x49')];_0x29e092[_0x9afb('0x4a')]=_0x348255[_0x9afb('0x4a')];_0x29e092['predictiveIntervalErlangCallsDroppedCalls']=_0x348255[_0x9afb('0x4b')];_0x29e092[_0x9afb('0x4c')]=_0x348255[_0x9afb('0x4c')];_0x29e092[_0x9afb('0x4d')]=_0x348255[_0x9afb('0x4d')];_0x29e092[_0x9afb('0x4e')]=_0x348255[_0x9afb('0x4e')];_0x29e092['predictiveIntervalAvailable']=_0x348255[_0x9afb('0x4f')];_0x29e092[_0x9afb('0x50')]=_0x348255[_0x9afb('0x50')];_0x29e092[_0x9afb('0x20')]=_0x348255[_0x9afb('0x20')];_0x29e092[_0x9afb('0x51')]=_0x348255[_0x9afb('0x51')];_0x29e092[_0x9afb('0x52')]=_0x348255['erlangCalls'];_0x29e092[_0x9afb('0x53')]=_0x348255['erlangCallToSecond'];_0x29e092['erlangAbandonmentRate']=_0x348255['erlangAbandonmentRate'];_0x29e092[_0x9afb('0x54')]=_0x348255[_0x9afb('0x54')];_0x29e092['startPredictive']=_0x348255[_0x9afb('0x55')];_0x29e092[_0x9afb('0x56')]=_0x348255[_0x9afb('0x56')];}if(_0x348255[_0x9afb('0x57')]){_0x29e092[_0x9afb('0x57')]={'id':_0x348255[_0x9afb('0x57')]['id'],'name':_0x348255[_0x9afb('0x57')][_0x9afb('0xc')],'active':_0x348255[_0x9afb('0x57')]['active'],'callerid':_0x348255[_0x9afb('0x57')][_0x9afb('0x58')]};}if(_0x348255[_0x9afb('0x59')]){_0x29e092[_0x9afb('0x59')]={'id':_0x348255['Interval']['id'],'name':_0x348255[_0x9afb('0x59')][_0x9afb('0xc')]};}_0x324293[_0x9afb('0x5a')](_0x29e092);}}_0x123510({'count':_0x324293['length'],'rows':_0x324293});});},'UpdateVoiceQueue':function(_0x24f76c){return new Promise(function(_0x1d79b1,_0x13179d){var _0x12eddf=_[_0x9afb('0x5b')](_0x498463[_0x9afb('0x24')],{'id':parseInt(_0x24f76c['id'])});var _0x21ce09=_['omit'](_0x24f76c,['id']);if(_0x12eddf){for(var _0x5a36e4 in _0x21ce09){if(typeof _0x21ce09[_0x5a36e4]!=='undefined'&&typeof _0x12eddf[_0x5a36e4]!==_0x9afb('0x5c')){_0x12eddf[_0x5a36e4]=_0x21ce09[_0x5a36e4];}}_0x1d79b1(_0x12eddf);}else{_0x13179d();}});},'VoiceChannels':function(_0x29cde4){return new Promise(function(_0x5a1507,_0x20bd33){var _0xdcfefd=_[_0x9afb('0x5d')](_0x498463[_0x9afb('0x5e')]);_0x5a1507({'count':_0xdcfefd[_0x9afb('0x5f')],'rows':_0xdcfefd});});},'VoiceChannelMixMonitor':function(_0x122a35){var _0xdb82c3=this;return new Promise(function(_0x1de5cf,_0x20abe4){if(ami[_0x9afb('0x21')]()==![]){return _0x20abe4(_0xdb82c3[_0x9afb('0x1f')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x9afb('0x15')],'ami\x20disconnected'][_0x9afb('0x17')]('\x20')));}var _0xd41258=schema(properties[_0x9afb('0x60')])[_0x9afb('0x3')](_0x122a35);if(_0xd41258[_0x9afb('0x5f')]>0x0){return _0x20abe4(_0xdb82c3['error'](0x1f4,_[_0x9afb('0x61')](_0xd41258,'message')[_0x9afb('0x17')](',\x20')));}var _0x222ee0=_[_0x9afb('0x5b')](_0x498463[_0x9afb('0x5e')],{'uniqueid':_0x122a35[_0x9afb('0x62')]});if(_0x222ee0&&_0x222ee0[_0x9afb('0x63')]){var _0x449a7e=util['format'](_0x9afb('0x64'),_0x122a35[_0x9afb('0x65')]||_0x122a35[_0x9afb('0x62')],_0x122a35['format']||_0x9afb('0x66'));return ami[_0x9afb('0x1c')]({'action':'MixMonitor','channel':_0x222ee0[_0x9afb('0x63')],'file':_0x449a7e,'options':_0x9afb('0x67')})[_0x9afb('0x1d')](function(_0x5bcea5){var _0x3975c0=_[_0x9afb('0x5b')](_0x222ee0['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x449a7e['toLowerCase']()});if(_[_0x9afb('0x68')](_0x3975c0)){_0x222ee0['monitors'][_0x9afb('0x5a')]({'filename':'/var/spool/asterisk/monitor/'+_0x449a7e[_0x9afb('0x69')](),'createdAt':moment()[_0x9afb('0x9')](_0x9afb('0x6a')),'mixmonitorid':_0x5bcea5['mixmonitorid'],'status':_0x9afb('0x6b')});}else{_0x3975c0[_0x9afb('0x6c')]=_0x5bcea5[_0x9afb('0x6c')];_0x3975c0[_0x9afb('0x6d')]=_0x9afb('0x6b');}_0x1de5cf({'code':0xc8,'message':[_0x122a35[_0x9afb('0x62')],'MixMonitor\x20Success',_0x5bcea5[_0x9afb('0x6c')]][_0x9afb('0x17')]('\x20'),'mixmonitorid':_0x5bcea5[_0x9afb('0x6c')]});})[_0x9afb('0x1e')](function(_0x54aeff){_0x20abe4(_0xdb82c3[_0x9afb('0x1f')](0x1f5,[_0x122a35[_0x9afb('0x62')],_0x54aeff['message'][_0x9afb('0x69')]()][_0x9afb('0x17')]('\x20')));});}else{return _0x20abe4(_0xdb82c3[_0x9afb('0x1f')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x347ce8){var _0x12b44e=this;return new Promise(function(_0x158dfd,_0x41bb8e){if(ami[_0x9afb('0x21')]()==![]){return _0x41bb8e(_0x12b44e[_0x9afb('0x1f')](0x1f4,[config[_0x9afb('0x14')]['ip'],config[_0x9afb('0x14')][_0x9afb('0x15')],_0x9afb('0x16')][_0x9afb('0x17')]('\x20')));}var _0x2404aa=schema(properties[_0x9afb('0x60')])['validate'](_0x347ce8);if(_0x2404aa[_0x9afb('0x5f')]>0x0){return _0x41bb8e(_0x12b44e[_0x9afb('0x1f')](0x1f4,_['map'](_0x2404aa,_0x9afb('0x20'))[_0x9afb('0x17')](',\x20')));}var _0x597bc7=_['find'](_0x498463[_0x9afb('0x5e')],{'uniqueid':_0x347ce8[_0x9afb('0x62')]});if(_0x597bc7){return BPromise[_0x9afb('0x6e')]()[_0x9afb('0x1d')](function(){if(_0x597bc7[_0x9afb('0x63')]){return ami['Action']({'action':_0x9afb('0x6f'),'channel':_0x597bc7[_0x9afb('0x63')],'mixmonitorid':_0x347ce8[_0x9afb('0x6c')]})[_0x9afb('0x1e')](function(_0xcd741f){});}})[_0x9afb('0x1d')](function(){if(_0x597bc7[_0x9afb('0x70')]){return ami[_0x9afb('0x1c')]({'action':'StopMixMonitor','channel':_0x597bc7[_0x9afb('0x70')],'mixmonitorid':_0x347ce8['mixmonitorid']})[_0x9afb('0x1e')](function(_0x1ff543){});}})[_0x9afb('0x1d')](function(_0x22ffa){var _0x20b9d4=_['find'](_0x597bc7['monitors'],{'mixmonitorid':_0x347ce8[_0x9afb('0x6c')]});if(_0x20b9d4){_0x20b9d4[_0x9afb('0x6d')]=_0x9afb('0x71');}})[_0x9afb('0x1d')](function(){var _0x1ecbd1=util['format'](_0x9afb('0x64'),_0x347ce8[_0x9afb('0x65')]||_0x347ce8['uniqueid'],_0x347ce8[_0x9afb('0x9')]||_0x9afb('0x66'));var _0x480c4a=_[_0x9afb('0x5b')](_0x597bc7[_0x9afb('0x72')],{'filename':'/var/spool/asterisk/monitor/'+_0x1ecbd1[_0x9afb('0x69')]()});if(_0x480c4a){_0x480c4a['status']=_0x9afb('0x71');}})[_0x9afb('0x1d')](function(){_0x158dfd({'code':0xc8,'message':[_0x347ce8[_0x9afb('0x62')],_0x9afb('0x73')][_0x9afb('0x17')]('\x20')});})['catch'](function(_0x4be2a5){_0x41bb8e(_0x12b44e[_0x9afb('0x1f')](0x1f5,[_0x347ce8[_0x9afb('0x62')],_0x4be2a5[_0x9afb('0x20')]['toLowerCase']()][_0x9afb('0x17')]('\x20')));});}else{return _0x41bb8e(_0x12b44e[_0x9afb('0x1f')](0x1f5,_0x9afb('0x74')));}});},'VoiceQueuesChannels':function(_0x5357b4){return new Promise(function(_0x3c16a8,_0x1ee714){var _0x134716=_[_0x9afb('0x5d')](_0x498463[_0x9afb('0x75')]);_0x3c16a8({'count':_0x134716[_0x9afb('0x5f')],'rows':_0x134716});});},'VoiceQueuesChannel':function(_0x4f3a42){var _0x3084b3=this;return new Promise(function(_0x5b8b4a,_0x463df3){var _0x1f5a39=schema(properties[_0x9afb('0x76')])['validate'](_0x4f3a42);if(_0x1f5a39[_0x9afb('0x5f')]>0x0){return _0x463df3(_0x3084b3['error'](0x1f4,_[_0x9afb('0x61')](_0x1f5a39,_0x9afb('0x20'))['join'](',\x20')));}var _0x1a43bf=_[_0x9afb('0x5b')](_0x498463[_0x9afb('0x75')],{'uniqueid':_0x4f3a42[_0x9afb('0x62')]});if(_0x1a43bf){_0x5b8b4a(_0x1a43bf);}else{return _0x463df3(_0x3084b3['error'](0x1f5,_0x9afb('0x74')));}});},'VoiceQueuesChannelHangup':function(_0x2c8f29){var _0x3af5af=this;return new Promise(function(_0x1e3500,_0x1fa9cc){if(ami['isConnected']()==![]){return _0x1fa9cc(_0x3af5af[_0x9afb('0x1f')](0x1f4,[config[_0x9afb('0x14')]['ip'],config['asterisk'][_0x9afb('0x15')],_0x9afb('0x16')][_0x9afb('0x17')]('\x20')));}var _0x203e5e=schema(properties['voicequeuechannelhangup'])[_0x9afb('0x3')](_0x2c8f29);if(_0x203e5e[_0x9afb('0x5f')]>0x0){return _0x1fa9cc(_0x3af5af[_0x9afb('0x1f')](0x1f4,_[_0x9afb('0x61')](_0x203e5e,_0x9afb('0x20'))[_0x9afb('0x17')](',\x20')));}var _0x5a4596=_[_0x9afb('0x5b')](_0x498463['queueChannels'],{'uniqueid':_0x2c8f29[_0x9afb('0x62')]});if(_0x5a4596&&_0x5a4596[_0x9afb('0x63')]){return ami[_0x9afb('0x1c')]({'action':_0x9afb('0x77'),'channel':_0x5a4596[_0x9afb('0x63')]})[_0x9afb('0x1d')](function(_0x3db3bb){_0x1e3500({'code':0xc8,'message':[_0x2c8f29[_0x9afb('0x62')],_0x3db3bb['message'][_0x9afb('0x69')]()][_0x9afb('0x17')]('\x20')});})[_0x9afb('0x1e')](function(_0x34ae00){_0x1fa9cc(_0x3af5af[_0x9afb('0x1f')](0x1f5,[_0x2c8f29[_0x9afb('0x62')],_0x34ae00[_0x9afb('0x20')][_0x9afb('0x69')]()][_0x9afb('0x17')]('\x20')));});}else{return _0x1fa9cc(_0x3af5af['error'](0x1f5,_0x9afb('0x74')));}});},'VoiceQueuesChannelRedirect':function(_0x9be6f0){var _0x378462=this;return new Promise(function(_0x14a47f,_0x207180){if(ami[_0x9afb('0x21')]()==![]){return _0x207180(_0x378462['error'](0x1f4,[config[_0x9afb('0x14')]['ip'],config[_0x9afb('0x14')][_0x9afb('0x15')],_0x9afb('0x16')]['join']('\x20')));}var _0x372aed=schema(properties[_0x9afb('0x78')])[_0x9afb('0x3')](_0x9be6f0);if(_0x372aed[_0x9afb('0x5f')]>0x0){return _0x207180(_0x378462['error'](0x1f4,_[_0x9afb('0x61')](_0x372aed,'message')[_0x9afb('0x17')](',\x20')));}var _0x5d1d8e=_[_0x9afb('0x5b')](_0x498463[_0x9afb('0x75')],{'uniqueid':_0x9be6f0[_0x9afb('0x62')]});if(_0x5d1d8e&&_0x5d1d8e['channel']){return ami[_0x9afb('0x1c')]({'action':'Redirect','channel':_0x5d1d8e['channel'],'exten':_0x9be6f0[_0x9afb('0x79')],'context':_0x9be6f0['context']||_0x5d1d8e[_0x9afb('0x7a')],'priority':0x1})[_0x9afb('0x1d')](function(_0x5ce675){_0x14a47f({'code':0xc8,'message':[_0x9be6f0['uniqueid'],_0x5ce675[_0x9afb('0x20')][_0x9afb('0x69')]()]['join']('\x20')});})[_0x9afb('0x1e')](function(_0x29f1f2){_0x207180(_0x378462[_0x9afb('0x1f')](0x1f5,[_0x9be6f0['uniqueid'],_0x29f1f2['message'][_0x9afb('0x69')]()][_0x9afb('0x17')]('\x20')));});}else{return _0x207180(_0x378462[_0x9afb('0x1f')](0x1f5,_0x9afb('0x74')));}});},'Agents':function(_0x46ff4c){return new Promise(function(_0x2991d3,_0x19667d){var _0x369bfb=_[_0x9afb('0x5d')](_0x498463[_0x9afb('0x10')]);_0x2991d3({'count':_0x369bfb['length'],'rows':_0x369bfb});});},'Telephones':function(_0x3c0107){return new Promise(function(_0x14d0f5,_0x535977){var _0x29f047=_['values'](_0x498463[_0x9afb('0x7b')]);_0x14d0f5({'count':_0x29f047[_0x9afb('0x5f')],'rows':_0x29f047});});},'Trunks':function(_0x3ccba9){return new Promise(function(_0xb4a934,_0x538303){var _0x357f57=_['values'](_0x498463[_0x9afb('0x7c')]);_0xb4a934({'count':_0x357f57[_0x9afb('0x5f')],'rows':_0x357f57});});},'OutboundChannels':function(_0x267f7b){return new Promise(function(_0x9acaba,_0x2d6cf1){var _0x4e5467=_['values'](_0x498463[_0x9afb('0x7d')]);_0x9acaba({'count':_0x4e5467['length'],'rows':_0x4e5467});});},'Outbound':function(_0x3cc289){return new Promise(function(_0x2269cc,_0xa3b371){_0x2269cc(_0x498463[_0x9afb('0x30')]);});},'Campaigns':function(_0x4866bd){return new Promise(function(_0x3e5b87,_0x1222f9){var _0x3c96a2=_['values'](_0x498463[_0x9afb('0x7e')]);_0x3e5b87({'count':_0x3c96a2[_0x9afb('0x5f')],'rows':_0x3c96a2});});},'VoiceQueuesPreview':function(_0x24d635){var _0x53d995=this;return new Promise(function(_0x3ebfea,_0x44e3f7){_0x91ffa0['run'](_0x24d635['id'])['then'](function(_0x422edb){_0x3ebfea({'code':0xc8,'message':_0x422edb[_0x9afb('0x20')]});})[_0x9afb('0x1e')](function(_0x83e860){_0x44e3f7(_0x53d995['error'](0x1f4,_0x83e860[_0x9afb('0x20')]));});});},'EventManager':function(_0x120f44){var _0x24a00b=this;return new Promise(function(_0x19a30d,_0xf484b8){if(!_0x120f44[_0x9afb('0x7f')]){return _0xf484b8(_0x24a00b[_0x9afb('0x1f')](0x1f4,_0x9afb('0x80')));}ami['emit'](_0x9afb('0x81')+_0x120f44[_0x9afb('0x7f')],_0x120f44[_0x9afb('0x20')]);_0x19a30d({'code':0xc8,'message':_0x120f44});});},'FaxAccounts':function(_0x2c7a5b){return new Promise(function(_0x194263,_0x173e75){var _0x1faa74=_[_0x9afb('0x5d')](_0x498463['faxAccounts']);_0x194263({'count':_0x1faa74[_0x9afb('0x5f')],'rows':_0x1faa74});});},'SendFax':function(_0x5e5325){var _0xabe6c=this;return new Promise(function(_0x3c6761,_0x3fb617){_0x56a139[_0x9afb('0x82')](_0x5e5325)['then'](function(_0x8cabe2){_0x3c6761({'code':0xc8,'message':_0x8cabe2['message']});})[_0x9afb('0x1e')](function(_0x349fcd){_0x3fb617(_0xabe6c['error'](0x1f4,_0x349fcd[_0x9afb('0x20')]));});});},'CheckAfterSend':function(_0x1997fa){var _0x1c0150=this;return new Promise(function(_0x1cf4ed,_0x287583){_0x56a139[_0x9afb('0x83')](_0x1997fa)[_0x9afb('0x1d')](function(_0x3ba7d7){_0x1cf4ed({'code':0xc8,'message':_0x3ba7d7[_0x9afb('0x20')]});})[_0x9afb('0x1e')](function(_0x17fc1c){_0x287583(_0x1c0150[_0x9afb('0x1f')](0x1f4,_0x17fc1c[_0x9afb('0x20')]));});});}};var _0x376f63=jayson['server'](_0x556880)['http']();_0x376f63['on']('error',function(_0x23a5ad){return _0x548b24(_0x23a5ad);});_0x376f63['listen'](0x232a,'127.0.0.1',function(){console['log'](_0x9afb('0x84'),0x232a);return _0x1ccf93('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x4819=['predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','length','find','omit','undefined','voicechannel','map','channels','uniqueid','channel','format','wav','monitors','toLowerCase','/var/spool/asterisk/monitor/','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','status','%s.%s','filename','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','exten','context','values','telephones','trunks','outboundChannels','campaigns','run','Event\x20name\x20mandatory','emit','custom:','event','faxAccounts','checkAfterSend','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','../ami','listen','%s/%s','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','error','asterisk','ami\x20disconnected','join','keys','action','Reload','Action','then','catch','message','username','command','content','voiceQueues','hasOwnProperty','strategy','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','abandoned','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit'];(function(_0x435ce7,_0x5bf1ef){var _0x47edc0=function(_0x3510a8){while(--_0x3510a8){_0x435ce7['push'](_0x435ce7['shift']());}};_0x47edc0(++_0x5bf1ef);}(_0x4819,0xcd));var _0x9481=function(_0x4a7458,_0x5e0843){_0x4a7458=_0x4a7458-0x0;var _0x35226d=_0x4819[_0x4a7458];return _0x35226d;};'use strict';var _=require('lodash');var util=require(_0x9481('0x0'));var jayson=require(_0x9481('0x1'));var schema=require(_0x9481('0x2'));var BPromise=require(_0x9481('0x3'));var moment=require(_0x9481('0x4'));var config=require(_0x9481('0x5'));var properties=require(_0x9481('0x6'));var ami=require(_0x9481('0x7'));exports[_0x9481('0x8')]=function(_0x16c617,_0x5ac51c,_0x4d9e3a){return new BPromise(function(_0x5def07,_0x54cc78){var _0x14e05a={'QueuePause':function(_0x6c6a08){return new Promise(function(_0x27c033,_0x3278ff){var _0x15d895=util['format'](_0x9481('0x9'),'SIP',_0x6c6a08[_0x9481('0xa')]);if(_0x16c617['timers']&&_0x16c617[_0x9481('0xb')][_0x15d895]&&_0x16c617[_0x9481('0xb')][_0x15d895][_0x9481('0xc')]){_0x16c617[_0x9481('0xb')][_0x15d895][_0x9481('0xd')]();}if(_0x16c617[_0x9481('0xe')][_0x15d895]){_0x16c617[_0x9481('0xe')][_0x15d895][_0x9481('0xf')]({'statePause':_0x6c6a08[_0x9481('0x10')]?!![]:![]});}_0x27c033({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x5aac02){var _0xce6fa2=this;return new Promise(function(_0x150276,_0x2f0032){if(ami[_0x9481('0x11')]()==![]){return _0x2f0032(_0xce6fa2[_0x9481('0x12')](0x1f4,[config[_0x9481('0x13')]['ip'],config[_0x9481('0x13')]['username'],_0x9481('0x14')][_0x9481('0x15')]('\x20')));}_0x5aac02=_['pick'](_0x5aac02,_[_0x9481('0x16')](properties['module']));_0x5aac02[_0x9481('0x17')]=_0x9481('0x18');return ami[_0x9481('0x19')](_0x5aac02)[_0x9481('0x1a')](function(_0x546fce){_0x150276({'code':0xc8,'message':_0x546fce['message']});})[_0x9481('0x1b')](function(_0x50a559){_0x2f0032(_0xce6fa2['error'](0x1f5,_0x50a559[_0x9481('0x1c')]));});});},'Command':function(_0x33e32b){var _0x18c6f5=this;return new Promise(function(_0x41051d,_0x7000e7){if(ami[_0x9481('0x11')]()==![]){return _0x7000e7(_0x18c6f5['error'](0x1f4,[config[_0x9481('0x13')]['ip'],config[_0x9481('0x13')][_0x9481('0x1d')],_0x9481('0x14')][_0x9481('0x15')]('\x20')));}_0x33e32b=_['pick'](_0x33e32b,_0x9481('0x1e'));_0x33e32b[_0x9481('0x17')]='Command';return ami[_0x9481('0x19')](_0x33e32b)[_0x9481('0x1a')](function(_0x352b3a){_0x41051d({'code':0xc8,'message':_0x352b3a[_0x9481('0x1f')]});})[_0x9481('0x1b')](function(_0x49ecfa){_0x7000e7(_0x18c6f5[_0x9481('0x12')](0x1f5,_0x49ecfa[_0x9481('0x1c')]));});});},'VoiceQueues':function(_0x56c889){return new Promise(function(_0x5eb4f5,_0x12b0c3){var _0x299e28=[];for(var _0x550fce in _0x16c617[_0x9481('0x20')]){if(_0x16c617[_0x9481('0x20')][_0x9481('0x21')](_0x550fce)){var _0x28ae1b=_0x16c617['voiceQueues'][_0x550fce];var _0x14f03e={'id':_0x28ae1b['id'],'name':_0x28ae1b[_0x9481('0xa')],'strategy':_0x28ae1b[_0x9481('0x22')],'answered':_0x28ae1b['answered'],'available':_0x28ae1b[_0x9481('0x23')],'loggedIn':_0x28ae1b['loggedIn'],'pTalking':_0x28ae1b[_0x9481('0x24')],'sumBillable':_0x28ae1b[_0x9481('0x25')],'sumDuration':_0x28ae1b[_0x9481('0x26')],'sumHoldTime':_0x28ae1b[_0x9481('0x27')]||0x0,'talking':_0x28ae1b[_0x9481('0x28')],'total':_0x28ae1b['total'],'type':_0x28ae1b[_0x9481('0x29')],'unmanaged':_0x28ae1b[_0x9481('0x2a')],'abandoned':_0x28ae1b[_0x9481('0x2b')],'waiting':_0x28ae1b['waiting'],'loggedInDb':_0x28ae1b['loggedInDb']};if(_0x28ae1b[_0x9481('0x29')]===_0x9481('0x2c')){_0x14f03e[_0x9481('0x2d')]=_0x28ae1b[_0x9481('0x2d')];_0x14f03e['dialMethod']=_0x28ae1b['dialMethod'];_0x14f03e['dialOriginateCallerIdName']=_0x28ae1b[_0x9481('0x2e')];_0x14f03e['dialOriginateCallerIdNumber']=_0x28ae1b[_0x9481('0x2f')];_0x14f03e['dialOriginateTimeout']=_0x28ae1b[_0x9481('0x30')];_0x14f03e[_0x9481('0x31')]=_0x28ae1b[_0x9481('0x31')];_0x14f03e[_0x9481('0x32')]=_0x28ae1b[_0x9481('0x32')];_0x14f03e['outboundAnswerAgiCallsDay']=_0x28ae1b[_0x9481('0x33')];_0x14f03e[_0x9481('0x34')]=_0x28ae1b[_0x9481('0x34')];_0x14f03e['outboundBlacklistCallsDay']=_0x28ae1b[_0x9481('0x35')];_0x14f03e[_0x9481('0x36')]=_0x28ae1b[_0x9481('0x36')];_0x14f03e[_0x9481('0x37')]=_0x28ae1b[_0x9481('0x37')];_0x14f03e[_0x9481('0x38')]=_0x28ae1b['outboundDropCallsDayACS'];_0x14f03e[_0x9481('0x39')]=_0x28ae1b['outboundDropCallsDayCallersExit'];_0x14f03e[_0x9481('0x3a')]=_0x28ae1b[_0x9481('0x3a')];_0x14f03e[_0x9481('0x3b')]=_0x28ae1b[_0x9481('0x3b')];_0x14f03e[_0x9481('0x3c')]=_0x28ae1b[_0x9481('0x3c')];_0x14f03e['outboundOriginateFailureCallsDay']=_0x28ae1b[_0x9481('0x3d')];_0x14f03e[_0x9481('0x3e')]=_0x28ae1b['outboundReCallsDay'];_0x14f03e['outboundRejectCallsDay']=_0x28ae1b[_0x9481('0x3f')];_0x14f03e['outboundUnknownCallsDay']=_0x28ae1b[_0x9481('0x40')];_0x14f03e[_0x9481('0x41')]=_0x28ae1b[_0x9481('0x41')];_0x14f03e[_0x9481('0x42')]=_0x28ae1b['predictiveIntervalAvgHoldtime'];_0x14f03e[_0x9481('0x43')]=_0x28ae1b['predictiveIntervalAvgTalktime'];_0x14f03e[_0x9481('0x44')]=_0x28ae1b['predictiveIntervalDroppedCallsCallersExit'];_0x14f03e[_0x9481('0x45')]=_0x28ae1b['predictiveIntervalDroppedCallsTimeout'];_0x14f03e[_0x9481('0x46')]=_0x28ae1b[_0x9481('0x46')];_0x14f03e[_0x9481('0x47')]=_0x28ae1b[_0x9481('0x47')];_0x14f03e[_0x9481('0x48')]=_0x28ae1b[_0x9481('0x48')];_0x14f03e[_0x9481('0x49')]=_0x28ae1b['predictiveIntervalMultiplicativeFactor'];_0x14f03e[_0x9481('0x4a')]=_0x28ae1b[_0x9481('0x4a')];_0x14f03e[_0x9481('0x4b')]=_0x28ae1b[_0x9481('0x4b')];_0x14f03e[_0x9481('0x4c')]=_0x28ae1b[_0x9481('0x4c')];_0x14f03e[_0x9481('0x1c')]=_0x28ae1b['message'];_0x14f03e[_0x9481('0x4d')]=_0x28ae1b[_0x9481('0x4d')];_0x14f03e['erlangCalls']=_0x28ae1b[_0x9481('0x4e')];_0x14f03e[_0x9481('0x4f')]=_0x28ae1b[_0x9481('0x4f')];_0x14f03e[_0x9481('0x50')]=_0x28ae1b[_0x9481('0x50')];_0x14f03e['erlangBusyFactor']=_0x28ae1b[_0x9481('0x51')];_0x14f03e['startPredictive']=_0x28ae1b[_0x9481('0x52')];_0x14f03e[_0x9481('0x53')]=_0x28ae1b['startProgressive'];}if(_0x28ae1b['Trunk']){_0x14f03e[_0x9481('0x54')]={'id':_0x28ae1b[_0x9481('0x54')]['id'],'name':_0x28ae1b[_0x9481('0x54')]['name'],'active':_0x28ae1b[_0x9481('0x54')][_0x9481('0x55')],'callerid':_0x28ae1b['Trunk']['callerid']};}if(_0x28ae1b[_0x9481('0x56')]){_0x14f03e['Interval']={'id':_0x28ae1b[_0x9481('0x56')]['id'],'name':_0x28ae1b[_0x9481('0x56')][_0x9481('0xa')]};}_0x299e28[_0x9481('0x57')](_0x14f03e);}}_0x5eb4f5({'count':_0x299e28[_0x9481('0x58')],'rows':_0x299e28});});},'UpdateVoiceQueue':function(_0x52926b){return new Promise(function(_0xc1fcfc,_0xc1bb0e){var _0x4d6a2f=_[_0x9481('0x59')](_0x16c617[_0x9481('0x20')],{'id':parseInt(_0x52926b['id'])});var _0x1e0f4e=_[_0x9481('0x5a')](_0x52926b,['id']);if(_0x4d6a2f){for(var _0x4db2d3 in _0x1e0f4e){if(typeof _0x1e0f4e[_0x4db2d3]!==_0x9481('0x5b')&&typeof _0x4d6a2f[_0x4db2d3]!==_0x9481('0x5b')){_0x4d6a2f[_0x4db2d3]=_0x1e0f4e[_0x4db2d3];}}_0xc1fcfc(_0x4d6a2f);}else{_0xc1bb0e();}});},'VoiceChannels':function(_0x2b8b00){return new Promise(function(_0x17c56,_0x5ab395){var _0xd36133=_['values'](_0x16c617['channels']);_0x17c56({'count':_0xd36133[_0x9481('0x58')],'rows':_0xd36133});});},'VoiceChannelMixMonitor':function(_0x5c8078){var _0x2b174b=this;return new Promise(function(_0xd02fd7,_0x47f8b2){if(ami[_0x9481('0x11')]()==![]){return _0x47f8b2(_0x2b174b[_0x9481('0x12')](0x1f4,[config[_0x9481('0x13')]['ip'],config[_0x9481('0x13')][_0x9481('0x1d')],_0x9481('0x14')]['join']('\x20')));}var _0x5a2893=schema(properties[_0x9481('0x5c')])[_0x9481('0x2')](_0x5c8078);if(_0x5a2893[_0x9481('0x58')]>0x0){return _0x47f8b2(_0x2b174b[_0x9481('0x12')](0x1f4,_[_0x9481('0x5d')](_0x5a2893,_0x9481('0x1c'))[_0x9481('0x15')](',\x20')));}var _0x3d2250=_['find'](_0x16c617[_0x9481('0x5e')],{'uniqueid':_0x5c8078[_0x9481('0x5f')]});if(_0x3d2250&&_0x3d2250[_0x9481('0x60')]){var _0x3b29bc=util[_0x9481('0x61')]('%s.%s',_0x5c8078['filename']||_0x5c8078[_0x9481('0x5f')],_0x5c8078[_0x9481('0x61')]||_0x9481('0x62'));return ami['Action']({'action':'MixMonitor','channel':_0x3d2250['channel'],'file':_0x3b29bc,'options':'ai(mixmonitorid)'})['then'](function(_0x5b4b70){var _0x56b06d=_[_0x9481('0x59')](_0x3d2250[_0x9481('0x63')],{'filename':'/var/spool/asterisk/monitor/'+_0x3b29bc[_0x9481('0x64')]()});if(_['isNil'](_0x56b06d)){_0x3d2250[_0x9481('0x63')][_0x9481('0x57')]({'filename':_0x9481('0x65')+_0x3b29bc[_0x9481('0x64')](),'createdAt':moment()[_0x9481('0x61')](_0x9481('0x66')),'mixmonitorid':_0x5b4b70[_0x9481('0x67')],'status':'rec'});}else{_0x56b06d[_0x9481('0x67')]=_0x5b4b70[_0x9481('0x67')];_0x56b06d['status']=_0x9481('0x68');}_0xd02fd7({'code':0xc8,'message':[_0x5c8078[_0x9481('0x5f')],_0x9481('0x69'),_0x5b4b70[_0x9481('0x67')]][_0x9481('0x15')]('\x20'),'mixmonitorid':_0x5b4b70['mixmonitorid']});})[_0x9481('0x1b')](function(_0x1ef3a9){_0x47f8b2(_0x2b174b[_0x9481('0x12')](0x1f5,[_0x5c8078[_0x9481('0x5f')],_0x1ef3a9[_0x9481('0x1c')][_0x9481('0x64')]()][_0x9481('0x15')]('\x20')));});}else{return _0x47f8b2(_0x2b174b[_0x9481('0x12')](0x1f5,_0x9481('0x6a')));}});},'VoiceChannelStopMixMonitor':function(_0x4e3379){var _0x5b9e49=this;return new Promise(function(_0x5b4234,_0x3240df){if(ami[_0x9481('0x11')]()==![]){return _0x3240df(_0x5b9e49['error'](0x1f4,[config[_0x9481('0x13')]['ip'],config[_0x9481('0x13')][_0x9481('0x1d')],_0x9481('0x14')][_0x9481('0x15')]('\x20')));}var _0x34dd08=schema(properties['voicechannel'])['validate'](_0x4e3379);if(_0x34dd08[_0x9481('0x58')]>0x0){return _0x3240df(_0x5b9e49[_0x9481('0x12')](0x1f4,_[_0x9481('0x5d')](_0x34dd08,_0x9481('0x1c'))[_0x9481('0x15')](',\x20')));}var _0x205b96=_['find'](_0x16c617['channels'],{'uniqueid':_0x4e3379[_0x9481('0x5f')]});if(_0x205b96){return BPromise['resolve']()[_0x9481('0x1a')](function(){if(_0x205b96['channel']){return ami[_0x9481('0x19')]({'action':_0x9481('0x6b'),'channel':_0x205b96[_0x9481('0x60')],'mixmonitorid':_0x4e3379['mixmonitorid']})[_0x9481('0x1b')](function(_0x2c75c8){});}})['then'](function(){if(_0x205b96['destinationchannel']){return ami['Action']({'action':'StopMixMonitor','channel':_0x205b96[_0x9481('0x6c')],'mixmonitorid':_0x4e3379['mixmonitorid']})[_0x9481('0x1b')](function(_0x3a3ca5){});}})[_0x9481('0x1a')](function(_0x57c75c){var _0x421746=_['find'](_0x205b96[_0x9481('0x63')],{'mixmonitorid':_0x4e3379[_0x9481('0x67')]});if(_0x421746){_0x421746[_0x9481('0x6d')]='stop';}})[_0x9481('0x1a')](function(){var _0x40fed2=util['format'](_0x9481('0x6e'),_0x4e3379[_0x9481('0x6f')]||_0x4e3379[_0x9481('0x5f')],_0x4e3379[_0x9481('0x61')]||_0x9481('0x62'));var _0xa4ee8d=_[_0x9481('0x59')](_0x205b96[_0x9481('0x63')],{'filename':_0x9481('0x65')+_0x40fed2[_0x9481('0x64')]()});if(_0xa4ee8d){_0xa4ee8d[_0x9481('0x6d')]=_0x9481('0x70');}})[_0x9481('0x1a')](function(){_0x5b4234({'code':0xc8,'message':[_0x4e3379[_0x9481('0x5f')],_0x9481('0x71')][_0x9481('0x15')]('\x20')});})[_0x9481('0x1b')](function(_0x49184f){_0x3240df(_0x5b9e49[_0x9481('0x12')](0x1f5,[_0x4e3379['uniqueid'],_0x49184f['message'][_0x9481('0x64')]()]['join']('\x20')));});}else{return _0x3240df(_0x5b9e49['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x1b1967){return new Promise(function(_0x1b8f9f,_0x2486a7){var _0x2507ee=_['values'](_0x16c617[_0x9481('0x72')]);_0x1b8f9f({'count':_0x2507ee[_0x9481('0x58')],'rows':_0x2507ee});});},'VoiceQueuesChannel':function(_0x2a053a){var _0x2a4517=this;return new Promise(function(_0x54323e,_0x4b4e4c){var _0x178373=schema(properties[_0x9481('0x73')])[_0x9481('0x2')](_0x2a053a);if(_0x178373[_0x9481('0x58')]>0x0){return _0x4b4e4c(_0x2a4517[_0x9481('0x12')](0x1f4,_['map'](_0x178373,_0x9481('0x1c'))[_0x9481('0x15')](',\x20')));}var _0x2086f4=_[_0x9481('0x59')](_0x16c617[_0x9481('0x72')],{'uniqueid':_0x2a053a[_0x9481('0x5f')]});if(_0x2086f4){_0x54323e(_0x2086f4);}else{return _0x4b4e4c(_0x2a4517[_0x9481('0x12')](0x1f5,_0x9481('0x6a')));}});},'VoiceQueuesChannelHangup':function(_0x14fbe2){var _0x304570=this;return new Promise(function(_0x32016d,_0x40d508){if(ami[_0x9481('0x11')]()==![]){return _0x40d508(_0x304570[_0x9481('0x12')](0x1f4,[config[_0x9481('0x13')]['ip'],config['asterisk'][_0x9481('0x1d')],_0x9481('0x14')][_0x9481('0x15')]('\x20')));}var _0x15a28a=schema(properties[_0x9481('0x74')])[_0x9481('0x2')](_0x14fbe2);if(_0x15a28a[_0x9481('0x58')]>0x0){return _0x40d508(_0x304570['error'](0x1f4,_[_0x9481('0x5d')](_0x15a28a,_0x9481('0x1c'))['join'](',\x20')));}var _0x4ed94a=_[_0x9481('0x59')](_0x16c617['queueChannels'],{'uniqueid':_0x14fbe2['uniqueid']});if(_0x4ed94a&&_0x4ed94a[_0x9481('0x60')]){return ami['Action']({'action':_0x9481('0x75'),'channel':_0x4ed94a[_0x9481('0x60')]})[_0x9481('0x1a')](function(_0x9c1b70){_0x32016d({'code':0xc8,'message':[_0x14fbe2['uniqueid'],_0x9c1b70[_0x9481('0x1c')]['toLowerCase']()][_0x9481('0x15')]('\x20')});})[_0x9481('0x1b')](function(_0x17c6fc){_0x40d508(_0x304570['error'](0x1f5,[_0x14fbe2['uniqueid'],_0x17c6fc['message'][_0x9481('0x64')]()]['join']('\x20')));});}else{return _0x40d508(_0x304570['error'](0x1f5,_0x9481('0x6a')));}});},'VoiceQueuesChannelRedirect':function(_0xd7bf00){var _0xf45886=this;return new Promise(function(_0x579780,_0x905ee6){if(ami[_0x9481('0x11')]()==![]){return _0x905ee6(_0xf45886['error'](0x1f4,[config[_0x9481('0x13')]['ip'],config[_0x9481('0x13')][_0x9481('0x1d')],_0x9481('0x14')]['join']('\x20')));}var _0x2e585d=schema(properties['voicequeuechannelredirect'])[_0x9481('0x2')](_0xd7bf00);if(_0x2e585d[_0x9481('0x58')]>0x0){return _0x905ee6(_0xf45886['error'](0x1f4,_[_0x9481('0x5d')](_0x2e585d,_0x9481('0x1c'))[_0x9481('0x15')](',\x20')));}var _0x4f6e33=_['find'](_0x16c617[_0x9481('0x72')],{'uniqueid':_0xd7bf00['uniqueid']});if(_0x4f6e33&&_0x4f6e33[_0x9481('0x60')]){return ami[_0x9481('0x19')]({'action':_0x9481('0x76'),'channel':_0x4f6e33['channel'],'exten':_0xd7bf00[_0x9481('0x77')],'context':_0xd7bf00[_0x9481('0x78')]||_0x4f6e33[_0x9481('0x78')],'priority':0x1})['then'](function(_0x2f685e){_0x579780({'code':0xc8,'message':[_0xd7bf00[_0x9481('0x5f')],_0x2f685e[_0x9481('0x1c')][_0x9481('0x64')]()][_0x9481('0x15')]('\x20')});})[_0x9481('0x1b')](function(_0x25f284){_0x905ee6(_0xf45886[_0x9481('0x12')](0x1f5,[_0xd7bf00[_0x9481('0x5f')],_0x25f284[_0x9481('0x1c')]['toLowerCase']()][_0x9481('0x15')]('\x20')));});}else{return _0x905ee6(_0xf45886['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x5446ec){return new Promise(function(_0x2d4967,_0x16d1a0){var _0x429ec2=_[_0x9481('0x79')](_0x16c617[_0x9481('0xe')]);_0x2d4967({'count':_0x429ec2['length'],'rows':_0x429ec2});});},'Telephones':function(_0x41ac47){return new Promise(function(_0xc18e09,_0x2e7d07){var _0x455a85=_[_0x9481('0x79')](_0x16c617[_0x9481('0x7a')]);_0xc18e09({'count':_0x455a85[_0x9481('0x58')],'rows':_0x455a85});});},'Trunks':function(_0x1ab165){return new Promise(function(_0x28d924,_0x426d56){var _0x5808c8=_[_0x9481('0x79')](_0x16c617[_0x9481('0x7b')]);_0x28d924({'count':_0x5808c8[_0x9481('0x58')],'rows':_0x5808c8});});},'OutboundChannels':function(_0x1cbc8c){return new Promise(function(_0x2a73ba,_0x38eacc){var _0x1fa7c2=_[_0x9481('0x79')](_0x16c617[_0x9481('0x7c')]);_0x2a73ba({'count':_0x1fa7c2[_0x9481('0x58')],'rows':_0x1fa7c2});});},'Outbound':function(_0x5557d7){return new Promise(function(_0x12a450,_0x2e9bfe){_0x12a450(_0x16c617[_0x9481('0x2c')]);});},'Campaigns':function(_0x1f10c8){return new Promise(function(_0x1e9044,_0x37dbf4){var _0x16311f=_[_0x9481('0x79')](_0x16c617[_0x9481('0x7d')]);_0x1e9044({'count':_0x16311f['length'],'rows':_0x16311f});});},'VoiceQueuesPreview':function(_0x44e2c2){var _0x4cedf2=this;return new Promise(function(_0x5b1486,_0xf42781){_0x5ac51c[_0x9481('0x7e')](_0x44e2c2['id'])[_0x9481('0x1a')](function(_0x33b58d){_0x5b1486({'code':0xc8,'message':_0x33b58d[_0x9481('0x1c')]});})[_0x9481('0x1b')](function(_0x4d87c9){_0xf42781(_0x4cedf2[_0x9481('0x12')](0x1f4,_0x4d87c9['message']));});});},'EventManager':function(_0x4bc7ea){var _0x38237d=this;return new Promise(function(_0xb6e94,_0x5501ef){if(!_0x4bc7ea['event']){return _0x5501ef(_0x38237d[_0x9481('0x12')](0x1f4,_0x9481('0x7f')));}ami[_0x9481('0x80')](_0x9481('0x81')+_0x4bc7ea[_0x9481('0x82')],_0x4bc7ea[_0x9481('0x1c')]);_0xb6e94({'code':0xc8,'message':_0x4bc7ea});});},'FaxAccounts':function(_0x17c099){return new Promise(function(_0x2c8d0d,_0x3fbedd){var _0x53013d=_[_0x9481('0x79')](_0x16c617[_0x9481('0x83')]);_0x2c8d0d({'count':_0x53013d['length'],'rows':_0x53013d});});},'SendFax':function(_0x2c53df){var _0x534979=this;return new Promise(function(_0x616b77,_0x1d84ea){_0x4d9e3a['send'](_0x2c53df)[_0x9481('0x1a')](function(_0x15e194){_0x616b77({'code':0xc8,'message':_0x15e194[_0x9481('0x1c')]});})['catch'](function(_0x393a0c){_0x1d84ea(_0x534979[_0x9481('0x12')](0x1f4,_0x393a0c['message']));});});},'CheckAfterSend':function(_0x3de4fa){var _0x5c7602=this;return new Promise(function(_0x1129ec,_0x3d34c4){_0x4d9e3a[_0x9481('0x84')](_0x3de4fa)['then'](function(_0x551013){_0x1129ec({'code':0xc8,'message':_0x551013[_0x9481('0x1c')]});})[_0x9481('0x1b')](function(_0x1217d4){_0x3d34c4(_0x5c7602[_0x9481('0x12')](0x1f4,_0x1217d4[_0x9481('0x1c')]));});});}};var _0x4181b5=jayson['server'](_0x14e05a)[_0x9481('0x85')]();_0x4181b5['on'](_0x9481('0x12'),function(_0x232b8c){return _0x54cc78(_0x232b8c);});_0x4181b5[_0x9481('0x8')](0x232a,_0x9481('0x86'),function(){console[_0x9481('0x87')](_0x9481('0x88'),0x232a);return _0x5def07('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 4a0ce89..1a16cc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8772=['data1','data2','xmd-contactid','ListId','data3','$or','map','routeId','destcalleridnum','calleridnum','lastName','phone','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','calleridname','<unknown>','firstName','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','Unknown','format','user:%s','name','action','toLowerCase','merge','lodash','ioredis','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','exec'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8772,0x1c2));var _0x2877=function(_0x13131a,_0x4c5e8d){_0x13131a=_0x13131a-0x0;var _0x4b3753=_0x8772[_0x13131a];return _0x4b3753;};'use strict';var _=require(_0x2877('0x0'));var BPromise=require('bluebird');var Redis=require(_0x2877('0x1'));var util=require('util');var config=require(_0x2877('0x2'));var logger=require(_0x2877('0x3'))(_0x2877('0x4'));var cmContactRpc=require(_0x2877('0x5'));config['redis']=_[_0x2877('0x6')](config[_0x2877('0x7')],{'host':_0x2877('0x8'),'port':0x18eb});var io=require(_0x2877('0x9'))(new Redis(config[_0x2877('0x7')]));function emit(_0x554662,_0x35fd4a,_0x52a788,_0x2a2c6f,_0xc7a439){logger[_0x2877('0xa')](_0x2877('0xb'),_0x554662,_0x35fd4a['id'],_0x52a788,_0x2a2c6f,JSON[_0x2877('0xc')](_0xc7a439));io['to'](_0x52a788)['emit'](_0x2a2c6f,_0xc7a439);}exports[_0x2877('0xd')]=function(_0x560950,_0x3148a5,_0x25acb4,_0x455853){var _0x3b5ef3,_0xb288ed;var _0xf6f946={};var _0x237149=Number(_0x25acb4[_0x2877('0xe')]);var _0x530080=_0x25acb4[_0x2877('0xf')]?Boolean(Number(_0x25acb4[_0x2877('0xf')])):![];var _0x431eda;if(_0x455853['xmd-contactid']){_0xf6f946['id']=_0x455853[_0x2877('0x10')];}if(!_0xf6f946['id']){_0xf6f946[_0x2877('0x11')]=_0x237149;_0x431eda=_0x25acb4[_0x2877('0x12')]&&_0x25acb4[_0x2877('0x12')]!=='0'?_0x25acb4[_0x2877('0x12')]['split'](','):['phone'];_0xf6f946[_0x2877('0x13')]=_[_0x2877('0x14')](_0x431eda,function(_0x565940){var _0x28181a={};_0x28181a[_0x565940]=_0x455853[_0x2877('0x15')]?_0x455853[_0x2877('0x16')]:_0x455853[_0x2877('0x17')];return _0x28181a;});}var _0x46ccfd=['id','firstName',_0x2877('0x18'),_0x2877('0x19'),'mobile',_0x2877('0x1a'),_0x2877('0x11'),_0x2877('0x1b'),_0x2877('0x1c'),_0x2877('0x1d')];var _0x44e40e=_[_0x2877('0x1e')](_0x46ccfd,_0x431eda);BPromise[_0x2877('0x1f')]()[_0x2877('0x20')](cmContactRpc[_0x2877('0x21')]({'attributes':_0x44e40e,'where':_0xf6f946}))[_0x2877('0x20')](function(_0x145211){_0xb288ed=_0x145211;if(!_[_0x2877('0x22')](_0xb288ed)){if(_0xb288ed[_0x2877('0x23')]===0x1){_0x3b5ef3=_0xb288ed[0x0];logger['info'](_0x2877('0x24'),_0x455853[_0x2877('0x25')],_0x3148a5['id'],_0x3b5ef3['id']);}else{logger[_0x2877('0xa')](_0x2877('0x26'),_0x455853[_0x2877('0x25')],_0x3148a5['id'],_['map'](_0xb288ed,'id')[_0x2877('0x27')](','));}return;}else{logger['info'](_0x2877('0x28'),_0x455853[_0x2877('0x25')],_0x3148a5['id']);var _0x197b17={'ListId':_0x237149};var _0xb6ad5d=_0x25acb4[_0x2877('0x29')]&&_0x25acb4[_0x2877('0x29')]!=='0'?_0x25acb4[_0x2877('0x29')]:_0x2877('0x19');if(_0x530080){logger[_0x2877('0xa')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x455853[_0x2877('0x25')],_0x3148a5['id']);_0x197b17[_0xb6ad5d]=_[_0x2877('0x2a')](_0x455853[_0x2877('0x15')])?_0x455853[_0x2877('0x17')]:_0x455853[_0x2877('0x16')];if(_[_0x2877('0x2a')](_0x455853['routeId'])){_0x197b17['firstName']=_0x455853[_0x2877('0x2b')]&&_0x455853[_0x2877('0x2b')]!==_0x2877('0x2c')?_0x455853[_0x2877('0x2b')]:'Unknown';}else{_0x197b17[_0x2877('0x2d')]=_0x455853[_0x2877('0x2e')]&&_0x455853[_0x2877('0x2e')]!==_0x2877('0x2c')?_0x455853[_0x2877('0x2e')]:'Unknown';}return BPromise[_0x2877('0x1f')]()[_0x2877('0x20')](cmContactRpc[_0x2877('0x2f')](_0x197b17))[_0x2877('0x20')](function(_0x4b56b7){_0x3b5ef3=_0x4b56b7;_0xb288ed[_0x2877('0x30')](_0x4b56b7);if(_0x3b5ef3){logger[_0x2877('0xa')](_0x2877('0x31'),_0x455853[_0x2877('0x25')],_0x3148a5['id'],_0x3b5ef3['id']);}return;});}else{logger['info'](_0x2877('0x32'),_0x455853[_0x2877('0x25')],_0x3148a5['id']);_0x197b17[_0xb6ad5d]=_[_0x2877('0x2a')](_0x455853[_0x2877('0x15')])?_0x455853[_0x2877('0x17')]:_0x455853['destcalleridnum'];if(_['isNil'](_0x455853[_0x2877('0x15')])){_0x197b17[_0x2877('0x2d')]=_0x455853[_0x2877('0x2b')]&&_0x455853[_0x2877('0x2b')]!==_0x2877('0x2c')?_0x455853[_0x2877('0x2b')]:'Unknown';}else{_0x197b17[_0x2877('0x2d')]=_0x455853[_0x2877('0x2e')]&&_0x455853['destcalleridname']!==_0x2877('0x2c')?_0x455853[_0x2877('0x2e')]:_0x2877('0x33');}_0x3b5ef3=_0x197b17;_0xb288ed[_0x2877('0x30')](_0x197b17);return;}}})['then'](function(){if(_0x560950){emit(_0x455853[_0x2877('0x25')],_0x3148a5,util[_0x2877('0x34')](_0x2877('0x35'),_0x560950[_0x2877('0x36')]),util[_0x2877('0x34')]('trigger:%s',_0x25acb4[_0x2877('0x37')][_0x2877('0x38')]()),{'evt':_[_0x2877('0x39')](_0x455853,{'autoCreate':_0x530080}),'contact':_0x3b5ef3===undefined?{}:_0x3b5ef3,'contacts':_0xb288ed[_0x2877('0x23')]===0x0?undefined:_0xb288ed});}});};
\ No newline at end of file
+var _0xd599=['xmd-contactid','data3','split','phone','$or','map','routeId','destcalleridnum','firstName','lastName','mobile','fax','ListId','createdAt','scheduledAt','updatedAt','union','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridnum','isNil','calleridname','Unknown','destcalleridname','<unknown>','resolve','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','trigger:%s','action','toLowerCase','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2'];(function(_0x493b29,_0x9bd75f){var _0x1fb2af=function(_0x33e5b5){while(--_0x33e5b5){_0x493b29['push'](_0x493b29['shift']());}};_0x1fb2af(++_0x9bd75f);}(_0xd599,0x1c7));var _0x9d59=function(_0x5f1c80,_0x167608){_0x5f1c80=_0x5f1c80-0x0;var _0x422e9f=_0xd599[_0x5f1c80];return _0x422e9f;};'use strict';var _=require('lodash');var BPromise=require(_0x9d59('0x0'));var Redis=require(_0x9d59('0x1'));var util=require(_0x9d59('0x2'));var config=require(_0x9d59('0x3'));var logger=require(_0x9d59('0x4'))(_0x9d59('0x5'));var cmContactRpc=require(_0x9d59('0x6'));config[_0x9d59('0x7')]=_[_0x9d59('0x8')](config[_0x9d59('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x9d59('0x9'))(new Redis(config[_0x9d59('0x7')]));function emit(_0x5c68fe,_0x39131d,_0x6ac1ec,_0x1e83dc,_0x429d98){logger[_0x9d59('0xa')](_0x9d59('0xb'),_0x5c68fe,_0x39131d['id'],_0x6ac1ec,_0x1e83dc,JSON[_0x9d59('0xc')](_0x429d98));io['to'](_0x6ac1ec)[_0x9d59('0xd')](_0x1e83dc,_0x429d98);}exports[_0x9d59('0xe')]=function(_0x147ba7,_0x4db874,_0x3238fe,_0x304b5f){var _0xd0b05d,_0x20accf;var _0x1a5c9e={};var _0x4ebdfa=Number(_0x3238fe[_0x9d59('0xf')]);var _0x2a8cda=_0x3238fe[_0x9d59('0x10')]?Boolean(Number(_0x3238fe[_0x9d59('0x10')])):![];var _0x4276d5;if(_0x304b5f[_0x9d59('0x11')]){_0x1a5c9e['id']=_0x304b5f['xmd-contactid'];}if(!_0x1a5c9e['id']){_0x1a5c9e['ListId']=_0x4ebdfa;_0x4276d5=_0x3238fe[_0x9d59('0x12')]&&_0x3238fe[_0x9d59('0x12')]!=='0'?_0x3238fe[_0x9d59('0x12')][_0x9d59('0x13')](','):[_0x9d59('0x14')];_0x1a5c9e[_0x9d59('0x15')]=_[_0x9d59('0x16')](_0x4276d5,function(_0x454d9d){var _0x220b74={};_0x220b74[_0x454d9d]=_0x304b5f[_0x9d59('0x17')]?_0x304b5f[_0x9d59('0x18')]:_0x304b5f['calleridnum'];return _0x220b74;});}var _0x8c1be5=['id',_0x9d59('0x19'),_0x9d59('0x1a'),_0x9d59('0x14'),_0x9d59('0x1b'),_0x9d59('0x1c'),_0x9d59('0x1d'),_0x9d59('0x1e'),_0x9d59('0x1f'),_0x9d59('0x20')];var _0x2b7add=_[_0x9d59('0x21')](_0x8c1be5,_0x4276d5);BPromise['resolve']()[_0x9d59('0x22')](cmContactRpc['getContacts']({'attributes':_0x2b7add,'where':_0x1a5c9e}))[_0x9d59('0x22')](function(_0x2cc10b){_0x20accf=_0x2cc10b;if(!_[_0x9d59('0x23')](_0x20accf)){if(_0x20accf[_0x9d59('0x24')]===0x1){_0xd0b05d=_0x20accf[0x0];logger[_0x9d59('0xa')](_0x9d59('0x25'),_0x304b5f['uniqueid'],_0x4db874['id'],_0xd0b05d['id']);}else{logger[_0x9d59('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x304b5f[_0x9d59('0x26')],_0x4db874['id'],_['map'](_0x20accf,'id')[_0x9d59('0x27')](','));}return;}else{logger['info'](_0x9d59('0x28'),_0x304b5f[_0x9d59('0x26')],_0x4db874['id']);var _0x23f8fb={'ListId':_0x4ebdfa};var _0x5e0469=_0x3238fe['data4']&&_0x3238fe[_0x9d59('0x29')]!=='0'?_0x3238fe[_0x9d59('0x29')]:_0x9d59('0x14');if(_0x2a8cda){logger[_0x9d59('0xa')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x304b5f[_0x9d59('0x26')],_0x4db874['id']);_0x23f8fb[_0x5e0469]=_['isNil'](_0x304b5f[_0x9d59('0x17')])?_0x304b5f[_0x9d59('0x2a')]:_0x304b5f[_0x9d59('0x18')];if(_[_0x9d59('0x2b')](_0x304b5f[_0x9d59('0x17')])){_0x23f8fb[_0x9d59('0x19')]=_0x304b5f[_0x9d59('0x2c')]&&_0x304b5f[_0x9d59('0x2c')]!=='<unknown>'?_0x304b5f[_0x9d59('0x2c')]:_0x9d59('0x2d');}else{_0x23f8fb[_0x9d59('0x19')]=_0x304b5f[_0x9d59('0x2e')]&&_0x304b5f[_0x9d59('0x2e')]!==_0x9d59('0x2f')?_0x304b5f[_0x9d59('0x2e')]:_0x9d59('0x2d');}return BPromise[_0x9d59('0x30')]()[_0x9d59('0x22')](cmContactRpc[_0x9d59('0x31')](_0x23f8fb))[_0x9d59('0x22')](function(_0x22ce5b){_0xd0b05d=_0x22ce5b;_0x20accf[_0x9d59('0x32')](_0x22ce5b);if(_0xd0b05d){logger[_0x9d59('0xa')](_0x9d59('0x33'),_0x304b5f[_0x9d59('0x26')],_0x4db874['id'],_0xd0b05d['id']);}return;});}else{logger['info'](_0x9d59('0x34'),_0x304b5f[_0x9d59('0x26')],_0x4db874['id']);_0x23f8fb[_0x5e0469]=_[_0x9d59('0x2b')](_0x304b5f[_0x9d59('0x17')])?_0x304b5f['calleridnum']:_0x304b5f['destcalleridnum'];if(_['isNil'](_0x304b5f[_0x9d59('0x17')])){_0x23f8fb[_0x9d59('0x19')]=_0x304b5f[_0x9d59('0x2c')]&&_0x304b5f[_0x9d59('0x2c')]!==_0x9d59('0x2f')?_0x304b5f[_0x9d59('0x2c')]:'Unknown';}else{_0x23f8fb[_0x9d59('0x19')]=_0x304b5f[_0x9d59('0x2e')]&&_0x304b5f[_0x9d59('0x2e')]!==_0x9d59('0x2f')?_0x304b5f[_0x9d59('0x2e')]:'Unknown';}_0xd0b05d=_0x23f8fb;_0x20accf[_0x9d59('0x32')](_0x23f8fb);return;}}})[_0x9d59('0x22')](function(){if(_0x147ba7){emit(_0x304b5f['uniqueid'],_0x4db874,util['format'](_0x9d59('0x35'),_0x147ba7[_0x9d59('0x36')]),util[_0x9d59('0x37')](_0x9d59('0x38'),_0x3238fe[_0x9d59('0x39')][_0x9d59('0x3a')]()),{'evt':_['merge'](_0x304b5f,{'autoCreate':_0x2a8cda}),'contact':_0xd0b05d===undefined?{}:_0xd0b05d,'contacts':_0x20accf[_0x9d59('0x24')]===0x0?undefined:_0x20accf});}});};
\ No newline at end of file
index 799778d..9602a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8a6=['emit','clone','motionChannel','voice','checkTriggers','hasOwnProperty','status','checkTrigger','variables','Actions','length','action','toLowerCase','motionbar','browser','data1','TemplateId','data2','html','templates','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','800','windowHeight','data6','600','winApplication','winArguments','format','user:%s','interface','name','trigger:%s:%s','merge','jscripty','trigger:%s','contactmanager','exec','queue','routeId','urlforward','script','parse','query','search','channel','AllConditions','every','checkConditions','AnyConditions','some','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','trigger','defaults','redis','localhost','winapp','triggers','agents','voiceQueues','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','custom:agentconnect','bind','custom:agentringnoanswer','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','prototype','info'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xc8a6,0x146));var _0x6c8a=function(_0x35684a,_0x454597){_0x35684a=_0x35684a-0x0;var _0x5e5d7d=_0xc8a6[_0x35684a];return _0x5e5d7d;};'use strict';var util=require(_0x6c8a('0x0'));var _=require(_0x6c8a('0x1'));var url=require(_0x6c8a('0x2'));var Mustache=require(_0x6c8a('0x3'));var Redis=require(_0x6c8a('0x4'));var urlforward=require(_0x6c8a('0x5'));var integration=require(_0x6c8a('0x6'));var cmContact=require(_0x6c8a('0x7'));var script=require(_0x6c8a('0x8'));var config=require(_0x6c8a('0x9'));var logger=require('../../../config/logger')(_0x6c8a('0xa'));var ami=require('../ami');config['redis']=_[_0x6c8a('0xb')](config[_0x6c8a('0xc')],{'host':_0x6c8a('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var operators={'equals':function(_0x4c4c73,_0x1110d2){return _0x4c4c73==_0x1110d2;},'not_equals':function(_0x27d96e,_0x295656){return _0x27d96e!=_0x295656;}};var barAndWebActions=['popup',_0x6c8a('0x2'),_0x6c8a('0xe')];function Trigger(_0x4082da){this[_0x6c8a('0xf')]=_0x4082da[_0x6c8a('0xf')];this[_0x6c8a('0x10')]=_0x4082da[_0x6c8a('0x10')];this[_0x6c8a('0x11')]=_0x4082da[_0x6c8a('0x11')];this['templates']=_0x4082da['templates'];this[_0x6c8a('0x12')]=_0x4082da['voiceExtensions'];this[_0x6c8a('0x13')]=_0x4082da[_0x6c8a('0x13')];this[_0x6c8a('0x14')]=_0x4082da[_0x6c8a('0x14')];this[_0x6c8a('0x15')]=_0x4082da[_0x6c8a('0x15')];this[_0x6c8a('0x16')]=_0x4082da[_0x6c8a('0x16')];this[_0x6c8a('0x17')]=_0x4082da[_0x6c8a('0x17')];this[_0x6c8a('0x18')]=_0x4082da[_0x6c8a('0x18')];this[_0x6c8a('0x19')]=_0x4082da[_0x6c8a('0x19')];this[_0x6c8a('0x1a')]=_0x4082da[_0x6c8a('0x1a')];this[_0x6c8a('0x1b')]=_0x4082da[_0x6c8a('0x1b')];this['freshsalesAccounts']=_0x4082da[_0x6c8a('0x1c')];this[_0x6c8a('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x6c8a('0x15')],'freshdesk':this[_0x6c8a('0x14')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x6c8a('0x17')],'desk':this[_0x6c8a('0x18')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x6c8a('0x1b')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x6c8a('0x1a')]};ami['on'](_0x6c8a('0x1e'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6c8a('0x1f'),this['syncCustomEvent'][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x21'),this[_0x6c8a('0x22')]['bind'](this));ami['on'](_0x6c8a('0x23'),this['syncCustomEvent'][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6c8a('0x25'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x26'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x27'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x28'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x29'),this['syncCustomEvent'][_0x6c8a('0x20')](this));ami['on']('custom:queuecallerabandon',this['syncCustomEvent'][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x2a'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x2b'),this[_0x6c8a('0x2c')][_0x6c8a('0x20')](this));ami['on']('custom:dialconnect',this[_0x6c8a('0x2c')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x2d'),this[_0x6c8a('0x2c')][_0x6c8a('0x20')](this));ami['on']('custom:newinteraction',this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x2e'),this['syncCustomEvent'][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x2f'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on']('custom:outgoingmessage',this['syncCustomEvent'][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x30'),this[_0x6c8a('0x22')][_0x6c8a('0x20')](this));ami['on'](_0x6c8a('0x31'),this['syncCustomEvent']['bind'](this));}Trigger[_0x6c8a('0x32')]['emit']=function(_0x5e1202,_0x2a7c10,_0x2c1a65){logger[_0x6c8a('0x33')](_0x5e1202,_0x2a7c10,JSON['stringify'](_0x2c1a65));io['to'](_0x5e1202)[_0x6c8a('0x34')](_0x2a7c10,_0x2c1a65);};Trigger['prototype'][_0x6c8a('0x22')]=function(_0x573a48){var _0x2736f5=_[_0x6c8a('0x35')](_0x573a48);if(typeof _0x2736f5[_0x6c8a('0x36')]==='undefined'){_0x2736f5[_0x6c8a('0x36')]=_0x6c8a('0x37');}this[_0x6c8a('0x38')](_0x2736f5);};Trigger[_0x6c8a('0x32')][_0x6c8a('0x2c')]=function(_0xb905db){if(this[_0x6c8a('0x10')][_0xb905db['interface']]){this['syncCustomEvent'](_0xb905db);}};Trigger['prototype'][_0x6c8a('0x38')]=function(_0xc67fe8){var _0x3e01f8;for(var _0x1c4a3f in this['triggers']){if(this[_0x6c8a('0xf')][_0x6c8a('0x39')](_0x1c4a3f)){if(this[_0x6c8a('0xf')][_0x1c4a3f][_0x6c8a('0x3a')]){_0x3e01f8=this[_0x6c8a('0x3b')](this[_0x6c8a('0xf')][_0x1c4a3f],_0xc67fe8);if(_0x3e01f8){_['merge'](_0xc67fe8,_0xc67fe8[_0x6c8a('0x3c')]);for(var _0x160c22=0x0,_0x150f69,_0x4daaeb,_0x254599;_0x160c22<this[_0x6c8a('0xf')][_0x1c4a3f][_0x6c8a('0x3d')][_0x6c8a('0x3e')];_0x160c22+=0x1){_0x150f69=this[_0x6c8a('0xf')][_0x1c4a3f][_0x6c8a('0x3d')][_0x160c22];if(this[_0x6c8a('0x10')][_0xc67fe8['interface']]){switch(_0x150f69[_0x6c8a('0x3f')][_0x6c8a('0x40')]()){case'contactmanager':break;case _0x6c8a('0x41'):case _0x6c8a('0x42'):var _0x4260ec={};switch(barAndWebActions[_0x150f69[_0x6c8a('0x43')]]){case'popup':_0x4260ec[_0x6c8a('0x44')]=_0x150f69[_0x6c8a('0x45')];_0x4260ec[_0x6c8a('0x46')]=this[_0x6c8a('0x47')][_0x150f69['data2']]?Mustache[_0x6c8a('0x48')](this['templates'][_0x150f69[_0x6c8a('0x45')]]['html'],_0xc67fe8):_0x6c8a('0x49');break;case _0x6c8a('0x2'):_0x4260ec[_0x6c8a('0x4a')]=this[_0x6c8a('0x4b')](_0x150f69[_0x6c8a('0x45')],_0xc67fe8,_[_0x6c8a('0x4c')](_0x150f69['data3'])?!![]:parseInt(_0x150f69[_0x6c8a('0x4d')],0xa));if(_[_0x6c8a('0x4c')](_0x150f69['data4'])){_0x4260ec[_0x6c8a('0x4e')]='0';}else{_0x4260ec[_0x6c8a('0x4f')]=_0x150f69[_0x6c8a('0x50')];_0x4260ec[_0x6c8a('0x51')]=_['isNil'](_0x150f69[_0x6c8a('0x52')])?_0x6c8a('0x53'):_0x150f69[_0x6c8a('0x52')];_0x4260ec[_0x6c8a('0x54')]=_[_0x6c8a('0x4c')](_0x150f69[_0x6c8a('0x55')])?_0x6c8a('0x56'):_0x150f69['data6'];}break;case _0x6c8a('0xe'):_0x4260ec[_0x6c8a('0x57')]=_0x150f69[_0x6c8a('0x45')]?Mustache[_0x6c8a('0x48')](_0x150f69[_0x6c8a('0x45')],_0xc67fe8):'';_0x4260ec[_0x6c8a('0x58')]=_0x150f69[_0x6c8a('0x4d')]?Mustache['render'](_0x150f69[_0x6c8a('0x4d')],_0xc67fe8):'';break;}this['emit'](util[_0x6c8a('0x59')](_0x6c8a('0x5a'),this[_0x6c8a('0x10')][_0xc67fe8[_0x6c8a('0x5b')]][_0x6c8a('0x5c')]),util[_0x6c8a('0x59')](_0x6c8a('0x5d'),_0x150f69['action'][_0x6c8a('0x40')](),barAndWebActions[_0x150f69[_0x6c8a('0x43')]]),_[_0x6c8a('0x5e')](_0x4260ec,_0xc67fe8));break;case _0x6c8a('0x5f'):this[_0x6c8a('0x34')](util[_0x6c8a('0x59')]('user:%s',this['agents'][_0xc67fe8['interface']][_0x6c8a('0x5c')]),util['format'](_0x6c8a('0x60'),_0x150f69[_0x6c8a('0x3f')][_0x6c8a('0x40')]()),_[_0x6c8a('0x5e')]({'ProjectId':parseInt(_0x150f69['data1'],0xa)},_0xc67fe8));break;default:this[_0x6c8a('0x34')](util[_0x6c8a('0x59')](_0x6c8a('0x5a'),this['agents'][_0xc67fe8[_0x6c8a('0x5b')]][_0x6c8a('0x5c')]),util[_0x6c8a('0x59')](_0x6c8a('0x60'),_0x150f69[_0x6c8a('0x3f')][_0x6c8a('0x40')]()),_[_0x6c8a('0x5e')]({},_0x150f69,_0xc67fe8));}}switch(_0x150f69['action'][_0x6c8a('0x40')]()){case _0x6c8a('0x61'):cmContact[_0x6c8a('0x62')](this[_0x6c8a('0x10')][_0xc67fe8[_0x6c8a('0x5b')]],this['triggers'][_0x1c4a3f],_0x150f69,_0xc67fe8);break;case'integration':integration[_0x6c8a('0x62')](_0x150f69,_0xc67fe8,this[_0x6c8a('0x1d')],this[_0x6c8a('0x10')][_0xc67fe8['interface']],this[_0x6c8a('0x11')][_0xc67fe8[_0x6c8a('0x63')]],this[_0x6c8a('0x12')][_0xc67fe8[_0x6c8a('0x64')]]);break;case _0x6c8a('0x65'):urlforward[_0x6c8a('0x62')](_0x150f69,_0xc67fe8);break;case _0x6c8a('0x66'):script['exec'](_0x150f69,_0xc67fe8);break;}}}}}}};Trigger['prototype'][_0x6c8a('0x4b')]=function(_0x3e5c77,_0xd797f7,_0x4872e7){var _0x3505c1=url[_0x6c8a('0x67')](Mustache[_0x6c8a('0x48')](_0x3e5c77,_0xd797f7),!![]);if(_0x4872e7){_[_0x6c8a('0x5e')](_0x3505c1[_0x6c8a('0x68')],_0xd797f7);}delete _0x3505c1[_0x6c8a('0x69')];var _0x2ebf74=url[_0x6c8a('0x59')](_0x3505c1);_0x2ebf74=_0x2ebf74['replace'](/\/\?/g,'?');return _0x2ebf74;};Trigger[_0x6c8a('0x32')]['checkTrigger']=function(_0x34331d,_0x487635){var _0x43be1f=!![];var _0x1cd0e2=!![];var _0x3f647f=![];if(_0x34331d[_0x6c8a('0x6a')]===_0x487635[_0x6c8a('0x36')]){_0x3f647f=!![];}if(_0x34331d[_0x6c8a('0x6b')][_0x6c8a('0x3e')]){_0x43be1f=_[_0x6c8a('0x6c')](_0x34331d[_0x6c8a('0x6b')],this[_0x6c8a('0x6d')](_0x487635,_0x34331d['channel']));}if(_0x34331d[_0x6c8a('0x6e')]['length']){_0x1cd0e2=_[_0x6c8a('0x6f')](_0x34331d[_0x6c8a('0x6e')],this['checkConditions'](_0x487635,_0x34331d[_0x6c8a('0x6a')]));}return _0x3f647f&&_0x43be1f&&_0x1cd0e2;};Trigger[_0x6c8a('0x32')][_0x6c8a('0x6d')]=function(_0x11446a,_0x3340b5){return function(_0x4c88c9){switch(_0x4c88c9['field']){case _0x6c8a('0x70'):if(_0x11446a['channel']===_0x3340b5){if(_0x3340b5===_0x6c8a('0x71')){return _0x11446a[_0x6c8a('0x72')]?operators[_0x4c88c9[_0x6c8a('0x73')]](Number(_0x4c88c9[_0x6c8a('0x74')]),_0x11446a[_0x6c8a('0x72')]):![];}else{return _0x11446a[_[_0x6c8a('0x75')](_0x3340b5)+'AccountId']?operators[_0x4c88c9['operator']](Number(_0x4c88c9[_0x6c8a('0x74')]),_0x11446a[_[_0x6c8a('0x75')](_0x3340b5)+_0x6c8a('0x76')]):![];}}break;case _0x6c8a('0x77'):case _0x6c8a('0x78'):if(_0x11446a['channel']===_0x3340b5){return _0x11446a[_0x6c8a('0x79')]?operators[_0x4c88c9[_0x6c8a('0x73')]](_0x4c88c9['value'],_0x11446a[_0x6c8a('0x79')]):![];}break;case _0x6c8a('0x63'):return _0x11446a['queue']?operators[_0x4c88c9[_0x6c8a('0x73')]](_0x4c88c9['value'],_0x11446a[_0x6c8a('0x63')]):![];case _0x6c8a('0x7a'):return _0x11446a[_0x6c8a('0x7b')]?operators[_0x4c88c9[_0x6c8a('0x73')]](_0x4c88c9['value'],_0x11446a['membername']):![];case _0x6c8a('0x7c'):return _0x11446a[_0x6c8a('0x7c')]?operators[_0x4c88c9[_0x6c8a('0x73')]](_0x4c88c9[_0x6c8a('0x74')],_0x11446a['lastevent']):![];case _0x6c8a('0x64'):return _0x11446a['routeId']?operators[_0x4c88c9[_0x6c8a('0x73')]](_0x4c88c9[_0x6c8a('0x74')],_0x11446a[_0x6c8a('0x64')]):![];}return![];};};module[_0x6c8a('0x7d')]=Trigger;
\ No newline at end of file
+var _0xce56=['accounts','routeId','urlforward','script','parse','query','search','replace','AllConditions','checkConditions','channel','AnyConditions','some','account','chat','ChatWebsiteId','operator','upperFirst','AccountId','message','event','value','queue','agent','membername','lastevent','exports','url','mustache','ioredis','./integration','./cmContact','./script','../../../config/environment','trigger','../ami','redis','localhost','socket.io-emitter','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','zohoAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','emit','info','stringify','clone','checkTriggers','hasOwnProperty','status','merge','variables','length','Actions','interface','action','toLowerCase','contactmanager','browser','data1','popup','data2','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winApplication','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','exec','integration'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xce56,0x8c));var _0x6ce5=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xce56[_0x139a3c];return _0x2b375b;};'use strict';var util=require('util');var _=require('lodash');var url=require(_0x6ce5('0x0'));var Mustache=require(_0x6ce5('0x1'));var Redis=require(_0x6ce5('0x2'));var urlforward=require('./urlforward');var integration=require(_0x6ce5('0x3'));var cmContact=require(_0x6ce5('0x4'));var script=require(_0x6ce5('0x5'));var config=require(_0x6ce5('0x6'));var logger=require('../../../config/logger')(_0x6ce5('0x7'));var ami=require(_0x6ce5('0x8'));config['redis']=_['defaults'](config[_0x6ce5('0x9')],{'host':_0x6ce5('0xa'),'port':0x18eb});var io=require(_0x6ce5('0xb'))(new Redis(config[_0x6ce5('0x9')]));var operators={'equals':function(_0xe0171a,_0x1649e0){return _0xe0171a==_0x1649e0;},'not_equals':function(_0x46739b,_0x55fd81){return _0x46739b!=_0x55fd81;}};var barAndWebActions=['popup',_0x6ce5('0x0'),'winapp'];function Trigger(_0x12074d){this['triggers']=_0x12074d[_0x6ce5('0xc')];this[_0x6ce5('0xd')]=_0x12074d[_0x6ce5('0xd')];this[_0x6ce5('0xe')]=_0x12074d[_0x6ce5('0xe')];this[_0x6ce5('0xf')]=_0x12074d['templates'];this['voiceExtensions']=_0x12074d[_0x6ce5('0x10')];this[_0x6ce5('0x11')]=_0x12074d[_0x6ce5('0x11')];this[_0x6ce5('0x12')]=_0x12074d[_0x6ce5('0x12')];this[_0x6ce5('0x13')]=_0x12074d[_0x6ce5('0x13')];this['sugarcrmAccounts']=_0x12074d[_0x6ce5('0x14')];this['zohoAccounts']=_0x12074d['zohoAccounts'];this[_0x6ce5('0x15')]=_0x12074d[_0x6ce5('0x15')];this[_0x6ce5('0x16')]=_0x12074d[_0x6ce5('0x16')];this[_0x6ce5('0x17')]=_0x12074d[_0x6ce5('0x17')];this[_0x6ce5('0x18')]=_0x12074d[_0x6ce5('0x18')];this[_0x6ce5('0x19')]=_0x12074d[_0x6ce5('0x19')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x6ce5('0x14')],'zoho':this[_0x6ce5('0x1a')],'desk':this['deskAccounts'],'vtiger':this[_0x6ce5('0x16')],'dynamics365':this[_0x6ce5('0x18')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x6ce5('0x17')]};ami['on'](_0x6ce5('0x1b'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x1e'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on']('custom:agentringnoanswer',this['syncCustomEvent'][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x1f'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on']('custom:agentnosuchnumber',this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on']('custom:agentnoanswer',this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x20'),this[_0x6ce5('0x1c')]['bind'](this));ami['on'](_0x6ce5('0x21'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x22'),this[_0x6ce5('0x1c')]['bind'](this));ami['on'](_0x6ce5('0x23'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x24'),this[_0x6ce5('0x1c')]['bind'](this));ami['on'](_0x6ce5('0x25'),this[_0x6ce5('0x1c')]['bind'](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0x6ce5('0x1d')](this));ami['on']('custom:dialconnect',this[_0x6ce5('0x26')][_0x6ce5('0x1d')](this));ami['on']('custom:dialend',this[_0x6ce5('0x26')]['bind'](this));ami['on']('custom:newinteraction',this[_0x6ce5('0x1c')]['bind'](this));ami['on'](_0x6ce5('0x27'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x28'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x29'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on']('custom:acceptmessage',this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));ami['on'](_0x6ce5('0x2a'),this[_0x6ce5('0x1c')][_0x6ce5('0x1d')](this));}Trigger[_0x6ce5('0x2b')][_0x6ce5('0x2c')]=function(_0x252481,_0x5273df,_0x3f49c5){logger[_0x6ce5('0x2d')](_0x252481,_0x5273df,JSON[_0x6ce5('0x2e')](_0x3f49c5));io['to'](_0x252481)[_0x6ce5('0x2c')](_0x5273df,_0x3f49c5);};Trigger[_0x6ce5('0x2b')][_0x6ce5('0x1c')]=function(_0x2d2925){var _0x237adc=_[_0x6ce5('0x2f')](_0x2d2925);this['checkTriggers'](_0x237adc);};Trigger[_0x6ce5('0x2b')][_0x6ce5('0x26')]=function(_0x293126){if(this['agents'][_0x293126['interface']]){this[_0x6ce5('0x1c')](_0x293126);}};Trigger['prototype'][_0x6ce5('0x30')]=function(_0x32dfcc){var _0x518069;for(var _0x1e05a3 in this['triggers']){if(this[_0x6ce5('0xc')][_0x6ce5('0x31')](_0x1e05a3)){if(this[_0x6ce5('0xc')][_0x1e05a3][_0x6ce5('0x32')]){_0x518069=this['checkTrigger'](this[_0x6ce5('0xc')][_0x1e05a3],_0x32dfcc);if(_0x518069){_[_0x6ce5('0x33')](_0x32dfcc,_0x32dfcc[_0x6ce5('0x34')]);for(var _0x2054f8=0x0,_0x2e00a9,_0x1555d8,_0x36bb9e;_0x2054f8<this['triggers'][_0x1e05a3]['Actions'][_0x6ce5('0x35')];_0x2054f8+=0x1){_0x2e00a9=this[_0x6ce5('0xc')][_0x1e05a3][_0x6ce5('0x36')][_0x2054f8];if(this[_0x6ce5('0xd')][_0x32dfcc[_0x6ce5('0x37')]]){switch(_0x2e00a9[_0x6ce5('0x38')][_0x6ce5('0x39')]()){case _0x6ce5('0x3a'):break;case'motionbar':case _0x6ce5('0x3b'):var _0x2faad4={};switch(barAndWebActions[_0x2e00a9[_0x6ce5('0x3c')]]){case _0x6ce5('0x3d'):_0x2faad4['TemplateId']=_0x2e00a9[_0x6ce5('0x3e')];_0x2faad4['html']=this[_0x6ce5('0xf')][_0x2e00a9[_0x6ce5('0x3e')]]?Mustache[_0x6ce5('0x3f')](this[_0x6ce5('0xf')][_0x2e00a9[_0x6ce5('0x3e')]]['html'],_0x32dfcc):_0x6ce5('0x40');break;case _0x6ce5('0x0'):_0x2faad4[_0x6ce5('0x41')]=this[_0x6ce5('0x42')](_0x2e00a9[_0x6ce5('0x3e')],_0x32dfcc,_[_0x6ce5('0x43')](_0x2e00a9[_0x6ce5('0x44')])?!![]:parseInt(_0x2e00a9[_0x6ce5('0x44')],0xa));if(_[_0x6ce5('0x43')](_0x2e00a9[_0x6ce5('0x45')])){_0x2faad4['location']='0';}else{_0x2faad4[_0x6ce5('0x46')]=_0x2e00a9[_0x6ce5('0x45')];_0x2faad4[_0x6ce5('0x47')]=_[_0x6ce5('0x43')](_0x2e00a9[_0x6ce5('0x48')])?_0x6ce5('0x49'):_0x2e00a9[_0x6ce5('0x48')];_0x2faad4[_0x6ce5('0x4a')]=_[_0x6ce5('0x43')](_0x2e00a9[_0x6ce5('0x4b')])?_0x6ce5('0x4c'):_0x2e00a9['data6'];}break;case'winapp':_0x2faad4[_0x6ce5('0x4d')]=_0x2e00a9['data2']?Mustache['render'](_0x2e00a9['data2'],_0x32dfcc):'';_0x2faad4[_0x6ce5('0x4e')]=_0x2e00a9['data3']?Mustache[_0x6ce5('0x3f')](_0x2e00a9[_0x6ce5('0x44')],_0x32dfcc):'';break;}this[_0x6ce5('0x2c')](util[_0x6ce5('0x4f')](_0x6ce5('0x50'),this[_0x6ce5('0xd')][_0x32dfcc[_0x6ce5('0x37')]][_0x6ce5('0x51')]),util[_0x6ce5('0x4f')](_0x6ce5('0x52'),_0x2e00a9[_0x6ce5('0x38')]['toLowerCase'](),barAndWebActions[_0x2e00a9[_0x6ce5('0x3c')]]),_[_0x6ce5('0x33')](_0x2faad4,_0x32dfcc));break;case _0x6ce5('0x53'):this['emit'](util[_0x6ce5('0x4f')](_0x6ce5('0x50'),this['agents'][_0x32dfcc['interface']][_0x6ce5('0x51')]),util[_0x6ce5('0x4f')]('trigger:%s',_0x2e00a9[_0x6ce5('0x38')][_0x6ce5('0x39')]()),_[_0x6ce5('0x33')]({'ProjectId':parseInt(_0x2e00a9[_0x6ce5('0x3c')],0xa)},_0x32dfcc));break;default:this['emit'](util['format'](_0x6ce5('0x50'),this[_0x6ce5('0xd')][_0x32dfcc[_0x6ce5('0x37')]][_0x6ce5('0x51')]),util[_0x6ce5('0x4f')]('trigger:%s',_0x2e00a9[_0x6ce5('0x38')][_0x6ce5('0x39')]()),_[_0x6ce5('0x33')]({},_0x2e00a9,_0x32dfcc));}}switch(_0x2e00a9[_0x6ce5('0x38')]['toLowerCase']()){case'contactmanager':cmContact[_0x6ce5('0x54')](this[_0x6ce5('0xd')][_0x32dfcc['interface']],this[_0x6ce5('0xc')][_0x1e05a3],_0x2e00a9,_0x32dfcc);break;case _0x6ce5('0x55'):integration['exec'](_0x2e00a9,_0x32dfcc,this[_0x6ce5('0x56')],this[_0x6ce5('0xd')][_0x32dfcc[_0x6ce5('0x37')]],this[_0x6ce5('0xe')][_0x32dfcc['queue']],this[_0x6ce5('0x10')][_0x32dfcc[_0x6ce5('0x57')]]);break;case _0x6ce5('0x58'):urlforward[_0x6ce5('0x54')](_0x2e00a9,_0x32dfcc);break;case _0x6ce5('0x59'):script[_0x6ce5('0x54')](_0x2e00a9,_0x32dfcc);break;}}}}}}};Trigger['prototype'][_0x6ce5('0x42')]=function(_0x6c0f6,_0xac17e3,_0x3a536f){var _0x1681e4=url[_0x6ce5('0x5a')](Mustache[_0x6ce5('0x3f')](_0x6c0f6,_0xac17e3),!![]);if(_0x3a536f){_[_0x6ce5('0x33')](_0x1681e4[_0x6ce5('0x5b')],_0xac17e3);}delete _0x1681e4[_0x6ce5('0x5c')];var _0x249e1c=url[_0x6ce5('0x4f')](_0x1681e4);_0x249e1c=_0x249e1c[_0x6ce5('0x5d')](/\/\?/g,'?');return _0x249e1c;};Trigger['prototype']['checkTrigger']=function(_0x40d646,_0x2418d3){var _0x2c1b65=!![],_0x5aef5f=!![];if(_0x40d646[_0x6ce5('0x5e')][_0x6ce5('0x35')]){_0x2c1b65=_['every'](_0x40d646['AllConditions'],this[_0x6ce5('0x5f')](_0x2418d3,_0x40d646[_0x6ce5('0x60')]));}if(_0x40d646[_0x6ce5('0x61')][_0x6ce5('0x35')]){_0x5aef5f=_[_0x6ce5('0x62')](_0x40d646[_0x6ce5('0x61')],this[_0x6ce5('0x5f')](_0x2418d3,_0x40d646[_0x6ce5('0x60')]));}return _0x2c1b65&&_0x5aef5f;};Trigger[_0x6ce5('0x2b')][_0x6ce5('0x5f')]=function(_0x5b6ac7,_0x1c5589){return function(_0x3dbae4){switch(_0x3dbae4['field']){case _0x6ce5('0x63'):if(_0x5b6ac7[_0x6ce5('0x60')]===_0x1c5589){if(_0x1c5589===_0x6ce5('0x64')){return _0x5b6ac7[_0x6ce5('0x65')]?operators[_0x3dbae4[_0x6ce5('0x66')]](Number(_0x3dbae4['value']),_0x5b6ac7['ChatWebsiteId']):![];}else{return _0x5b6ac7[_[_0x6ce5('0x67')](_0x1c5589)+_0x6ce5('0x68')]?operators[_0x3dbae4[_0x6ce5('0x66')]](Number(_0x3dbae4['value']),_0x5b6ac7[_[_0x6ce5('0x67')](_0x1c5589)+_0x6ce5('0x68')]):![];}}break;case'interaction':case _0x6ce5('0x69'):if(_0x5b6ac7[_0x6ce5('0x60')]===_0x1c5589){return _0x5b6ac7[_0x6ce5('0x6a')]?operators[_0x3dbae4[_0x6ce5('0x66')]](_0x3dbae4[_0x6ce5('0x6b')],_0x5b6ac7[_0x6ce5('0x6a')]):![];}break;case _0x6ce5('0x6c'):return _0x5b6ac7[_0x6ce5('0x6c')]?operators[_0x3dbae4[_0x6ce5('0x66')]](_0x3dbae4[_0x6ce5('0x6b')],_0x5b6ac7[_0x6ce5('0x6c')]):![];case _0x6ce5('0x6d'):return _0x5b6ac7[_0x6ce5('0x6e')]?operators[_0x3dbae4['operator']](_0x3dbae4[_0x6ce5('0x6b')],_0x5b6ac7[_0x6ce5('0x6e')]):![];case _0x6ce5('0x6f'):return _0x5b6ac7[_0x6ce5('0x6f')]?operators[_0x3dbae4['operator']](_0x3dbae4[_0x6ce5('0x6b')],_0x5b6ac7['lastevent']):![];case'routeId':return _0x5b6ac7[_0x6ce5('0x57')]?operators[_0x3dbae4[_0x6ce5('0x66')]](_0x3dbae4[_0x6ce5('0x6b')],_0x5b6ac7[_0x6ce5('0x57')]):![];}return![];};};module[_0x6ce5('0x70')]=Trigger;
\ No newline at end of file
index a845e09..b0f1ec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','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','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x23c181,_0xc29c){var _0x1dc6aa=function(_0x3bfe44){while(--_0x3bfe44){_0x23c181['push'](_0x23c181['shift']());}};_0x1dc6aa(++_0xc29c);}(_0x55ca,0x126));var _0xa55c=function(_0xb875ee,_0x583042){_0xb875ee=_0xb875ee-0x0;var _0x4c7f3a=_0x55ca[_0xb875ee];return _0x4c7f3a;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
+var _0x7217=['format','%s/users','remoteUri','then','total_entries','find','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','stringify','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','_embedded','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','length','map','forEach','string','picklist','nameField','customField','content','toString','includes','idField','custom_fields','variable','variableName','type','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','new','xCALLY','Motion','CTI','Tags','Descriptions','user','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','integrationTab','Displaying\x20ticket\x20to\x20agent...','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','error','catch','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','unmanaged','lastevent','toUpperCase','calleridname','lodash','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email'];(function(_0x25f705,_0x41cd4d){var _0x2054d5=function(_0x1ada3d){while(--_0x1ada3d){_0x25f705['push'](_0x25f705['shift']());}};_0x2054d5(++_0x41cd4d);}(_0x7217,0x19e));var _0x7721=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x7217[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x7721('0x0'));var rp=require('request-promise');var md5=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var Redis=require(_0x7721('0x3'));var intUtil=require(_0x7721('0x4'));var config=require(_0x7721('0x5'));var logger=require('../../../../config/logger')('desk');config[_0x7721('0x6')]=_[_0x7721('0x7')](config[_0x7721('0x6')],{'host':_0x7721('0x8'),'port':0x18eb});var io=require(_0x7721('0x9'))(new Redis(config[_0x7721('0x6')]));function emit(_0x18ab6b,_0x21f680,_0x225610){io['to'](_0x18ab6b)[_0x7721('0xa')](_0x21f680,_0x225610);}var headers={'Content-Type':_0x7721('0xb'),'Accept':_0x7721('0xb')};function getUser(_0xfa8835,_0x138740){if(intUtil[_0x7721('0xc')](_0x138740)===!![]){logger['info'](_0x7721('0xd'),_0x138740);return request({'uri':util[_0x7721('0xe')](_0x7721('0xf'),_0xfa8835[_0x7721('0x10')])})[_0x7721('0x11')](function(_0x409b37){if(_0x409b37[_0x7721('0x12')]){return _[_0x7721('0x13')](_0x409b37['_embedded'][_0x7721('0x14')],{'email':_0x138740});}})[_0x7721('0x11')](function(_0x57ff6d){if(_0x57ff6d){logger[_0x7721('0x15')](_0x7721('0x16'));return _0x57ff6d;}else{logger[_0x7721('0x15')](_0x7721('0x17'));return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}}function request(_0x3cc909){logger[_0x7721('0x19')]('[HTTP]',JSON[_0x7721('0x1a')](_0x3cc909));return rp(_['defaults'](_0x3cc909,{'method':_0x7721('0x1b'),'headers':headers,'json':!![]}));}function getAuth(_0x5cb0e6){var _0xfec626;if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x1d')){_0xfec626=util[_0x7721('0xe')](_0x7721('0x1e'),_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x20')]);}else if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x21')){_0xfec626=util[_0x7721('0xe')]('%s/token:%s',_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x21')]);}return util[_0x7721('0xe')](_0x7721('0x22'),new Buffer(_0xfec626)['toString'](_0x7721('0x23')));}function getEndUser(_0x512f31,_0xb9e9dd,_0x288e3a){logger[_0x7721('0x15')](_0x7721('0x24'),_0x288e3a);return request({'uri':util[_0x7721('0xe')](_0x7721('0x25'),_0x512f31[_0x7721('0x10')]),'qs':{'phone':_0x288e3a}})['then'](function(_0x216f20){if(_0x216f20[_0x7721('0x12')]){logger[_0x7721('0x15')](_0x7721('0x26'));return _0x216f20[_0x7721('0x27')][_0x7721('0x14')][0x0];}else{logger[_0x7721('0x15')](_0x7721('0x28'));return request({'uri':util[_0x7721('0xe')]('%s/customers',_0x512f31[_0x7721('0x10')]),'method':'POST','body':{'first_name':_0xb9e9dd,'title':_0xb9e9dd,'phone_numbers':[{'type':'work','value':_0x288e3a}]}});}});}function getTags(_0x315202,_0x343c19){var _0x53c904=[];if(_0x315202&&_0x315202[_0x7721('0x29')]>0x0){_0x53c904=_[_0x7721('0x2a')](_0x315202,_0x343c19);}return _0x53c904;}function getCustomFields(_0x37b9f0,_0xd7d703){var _0x1da2d8=[];var _0x5c54f0={'custom_fields':{}};if(_0x37b9f0[_0x7721('0x29')]>0x0){_[_0x7721('0x2b')](_0x37b9f0,function(_0x497f9f){if(_['includes']([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x2e')]&&!_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x497f9f[_0x7721('0x2e')]['toLowerCase']()]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_[_0x7721('0x32')]([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x7721('0x34')][_0x497f9f['idField']]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_0x497f9f['type']===_0x7721('0x35')&&_0x497f9f['variableName']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0xd7d703[_0x497f9f[_0x7721('0x36')]]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x36')]][_0x7721('0x31')]());}else if(_0x497f9f[_0x7721('0x37')]===_0x7721('0x38')&&_0x497f9f[_0x7721('0x39')]&&_0x497f9f[_0x7721('0x39')]['name']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f['customField']){_0xd7d703[_0x497f9f[_0x7721('0x39')][_0x7721('0x3a')][_0x7721('0x3b')]()]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x39')]['name']['toLowerCase']()]['toString']());}});}if(_0x5c54f0['priority']){_0x5c54f0[_0x7721('0x3c')]=Number(_0x5c54f0[_0x7721('0x3c')]);}return _0x5c54f0;}function getTicket(_0x1acc72,_0x22ef35,_0x4a90ce,_0xa389fa,_0x4cf659){logger[_0x7721('0x15')](_0x7721('0x3d'));var _0x5a278e=_[_0x7721('0x3e')]({'subject':intUtil[_0x7721('0x3f')](_0xa389fa['Subjects'],_0x4cf659,'\x20'),'type':'phone','status':_0x7721('0x40'),'labels':[_0x7721('0x41'),_0x7721('0x42'),_0x7721('0x43')]['concat'](getTags(_0xa389fa[_0x7721('0x44')],_0x7721('0x3a'))),'description':intUtil[_0x7721('0x3f')](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7721('0xe')]('/api/v2/users/%d',_0x22ef35['id']),'class':_0x7721('0x46')}},'message':{'direction':'in','body':intUtil['getString'](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a')}},getCustomFields(_0xa389fa['Fields'],_0x4cf659));return request({'uri':util[_0x7721('0xe')](_0x7721('0x47'),_0x1acc72[_0x7721('0x10')],_0x4a90ce['id']),'method':'POST','body':_0x5a278e});}exports[_0x7721('0x48')]=function(_0x11d853,_0x1ad315,_0x481fa8,_0x9f7b1d,_0x754071,_0xdb3033){var _0x2d5f35,_0x135dbc;_0xdb3033[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0xdb3033['remoteUri']);_0xdb3033['serverUrl']=intUtil[_0x7721('0x49')](_0xdb3033[_0x7721('0x4a')]);if(_0x754071&&_0x754071[_0x7721('0x4b')]){logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x4d'));_0x1ad315[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0xdb3033[_0x7721('0x4a')],_0x1ad315['uniqueid'],md5(_0x1ad315['uniqueid']));}else{_0x1ad315[_0x7721('0x4e')]='';}headers[_0x7721('0x50')]=getAuth(_0xdb3033);return getUser(_0xdb3033,_0x9f7b1d[_0x7721('0x51')])[_0x7721('0x11')](function(_0x589e95){_0x2d5f35=_0x589e95;logger[_0x7721('0x15')](_0x7721('0x52'),_0x2d5f35['id']);return getEndUser(_0xdb3033,_0x1ad315['calleridname'],_0x1ad315[_0x7721('0x53')]);})['then'](function(_0x2682b1){_0x135dbc=_0x2682b1;logger['info'](_0x7721('0x54'),_0x135dbc['id']);return getTicket(_0xdb3033,_0x2d5f35,_0x135dbc,_0x481fa8,_0x1ad315);})[_0x7721('0x11')](function(_0xf17c40){if(_0xf17c40){logger['info'](_0x7721('0x55'));logger[_0x7721('0x15')]('The\x20Ticket\x20ID\x20is:',_0xf17c40['id']);switch(_0xdb3033[_0x7721('0x37')]){case _0x7721('0x56'):logger[_0x7721('0x15')]('[QUEUE]',_0x7721('0x57'));emit(util['format'](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0xf17c40['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x5d'),_0xf17c40['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x4c'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2f6f30){console[_0x7721('0x5e')](_0x2f6f30);logger[_0x7721('0x5e')](_0x7721('0x4c'),JSON[_0x7721('0x1a')](_0x2f6f30));});};exports[_0x7721('0x60')]=function(_0x57484c,_0x234bee,_0x17036e,_0x134908,_0x3b7382,_0x1f1e84,_0x9c0d4){var _0x7fbd6c,_0x33287d;_0x1f1e84[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x10')]);_0x1f1e84['serverUrl']=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x4a')]);if(_0x9c0d4&&_0x9c0d4[_0x7721('0x61')]&&_0x9c0d4[_0x7721('0x61')]!==_0x7721('0x62')){logger[_0x7721('0x15')](_0x7721('0x63'),_0x7721('0x4d'));_0x234bee[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0x1f1e84[_0x7721('0x4a')],_0x234bee[_0x7721('0x64')],md5(_0x234bee[_0x7721('0x64')]));}headers[_0x7721('0x50')]=getAuth(_0x1f1e84);return getUser(_0x1f1e84,_0x134908['email'])['then'](function(_0x4e112e){_0x7fbd6c=_0x4e112e;logger[_0x7721('0x15')]('The\x20User\x20ID\x20is:',_0x7fbd6c['id']);return getEndUser(_0x1f1e84,_0x234bee['destcalleridname'],_0x234bee['destcalleridnum']);})['then'](function(_0x47925a){_0x33287d=_0x47925a;logger[_0x7721('0x15')](_0x7721('0x54'),_0x33287d['id']);return getTicket(_0x1f1e84,_0x7fbd6c,_0x33287d,_0x17036e,_0x234bee);})['then'](function(_0x5181d7){if(_0x5181d7){logger['info']('Ticket\x20created!');logger['info'](_0x7721('0x65'),_0x5181d7['id']);switch(_0x1f1e84['type']){case'integrationTab':logger['info'](_0x7721('0x4c'),_0x7721('0x57'));emit(util[_0x7721('0xe')]('user:%s',_0x134908[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0x5181d7['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x134908[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x66'),_0x1f1e84[_0x7721('0x10')],_0x5181d7['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x63'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2c93b0){logger[_0x7721('0x5e')](_0x7721('0x63'),JSON['stringify'](_0x2c93b0));});};exports[_0x7721('0x67')]=function(_0x104f05,_0x4c8284,_0x3e7df3,_0x5d37ad,_0x1f508d,_0x4bfb48){var _0x36a3a6,_0x3f9eaa;_0x4bfb48[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x4bfb48[_0x7721('0x10')]);_0x4bfb48[_0x7721('0x4a')]=intUtil[_0x7721('0x49')](_0x4bfb48['serverUrl']);if(_0x1f508d&&_0x1f508d[_0x7721('0x4b')]){logger[_0x7721('0x15')]('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',_0x7721('0x4d'));_0x4c8284[_0x7721('0x4e')]=util[_0x7721('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bfb48[_0x7721('0x4a')],_0x4c8284[_0x7721('0x64')],md5(_0x4c8284['uniqueid']));}else{_0x4c8284[_0x7721('0x4e')]='';}headers['Authorization']=getAuth(_0x4bfb48);return getUser(_0x4bfb48)[_0x7721('0x11')](function(_0x382800){_0x36a3a6=_0x382800;logger[_0x7721('0x15')](_0x7721('0x52'),_0x36a3a6['id']);return getEndUser(_0x4bfb48,_0x4c8284[_0x7721('0x6a')],_0x4c8284[_0x7721('0x53')]);})[_0x7721('0x11')](function(_0x5dca04){_0x3f9eaa=_0x5dca04;logger[_0x7721('0x15')](_0x7721('0x54'),_0x3f9eaa['id']);return getTicket(_0x4bfb48,_0x36a3a6,_0x3f9eaa,_0x3e7df3,_0x4c8284);})[_0x7721('0x11')](function(_0x5f08cc){if(_0x5f08cc){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x5f08cc['id']);}})[_0x7721('0x5f')](function(_0x2645dd){logger['error']('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',JSON[_0x7721('0x1a')](_0x2645dd));});};
\ No newline at end of file
index 444bfe7..19b30c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7809=[']\x20Enduser\x20Created!','forEach','includes','picklist','type','nameField','idField','indexOf','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','phonecalls','callDirection','queue','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','stripTrailingSlash','serverUrl','unmanaged','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','bluebird','request-promise','./util','md5','ioredis','defaults','localhost','socket.io-emitter','redis','POST','clientId','remoteUri','username','password','access_token','catch','error','toUpperCase','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','internalemailaddress','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','substring','lastIndexOf','message','toLowerCase','then','replace','%2b','telephone1','enduserId','contactid'];(function(_0x10bb45,_0xa57a18){var _0x4f1846=function(_0x319b89){while(--_0x319b89){_0x10bb45['push'](_0x10bb45['shift']());}};_0x4f1846(++_0xa57a18);}(_0x7809,0xe3));var _0x9780=function(_0xb1e248,_0x25790b){_0xb1e248=_0xb1e248-0x0;var _0x5a19cb=_0x7809[_0xb1e248];return _0x5a19cb;};'use strict';var _=require('lodash');var BPromise=require(_0x9780('0x0'));var rp=require(_0x9780('0x1'));var util=require('util');var intUtil=require(_0x9780('0x2'));var md5=require(_0x9780('0x3'));var Redis=require(_0x9780('0x4'));var logger=require('../../../../config/logger')('dynamics365');var config=require('../../../../config/environment');config['redis']=_[_0x9780('0x5')](config['redis'],{'host':_0x9780('0x6'),'port':0x18eb});var io=require(_0x9780('0x7'))(new Redis(config[_0x9780('0x8')]));function getAuthToken(_0x46565f,_0x9a6fd5,_0x296ab4){var _0x369452={'method':_0x9780('0x9'),'uri':_0x9a6fd5,'form':{'client_id':_0x46565f[_0x9780('0xa')],'resource':_0x46565f[_0x9780('0xb')],'username':_0x46565f[_0x9780('0xc')],'password':_0x46565f['password'],'grant_type':_0x9780('0xd'),'client_secret':_0x46565f['clientSecret']},'json':!![]};return rp(_0x369452)['then'](function(_0x34a698){return _0x34a698[_0x9780('0xe')];})[_0x9780('0xf')](function(_0x5d1420){logger[_0x9780('0x10')]('['+[_0x296ab4[_0x9780('0x11')]()]+']\x20Wrong\x20credentials!');return _0x5d1420['message'];});}function getUser(_0x4b1cf4,_0x3a9015,_0x69dd91,_0x342b8e,_0xd37f77,_0x9c6604){return new BPromise(function(_0x2fbfe6,_0x39169b){return getAuthToken(_0x3a9015,_0x342b8e,_0x9c6604)['then'](function(_0x4aa859){var _0xfe76f5={'method':_0x9780('0x12'),'uri':_0xd37f77+_0x9780('0x13'),'headers':{'Authorization':_0x9780('0x14')+_0x4aa859,'OData-Version':_0x9780('0x15')},'json':!![]};return rp(_0xfe76f5);})['then'](function(_0x3477d5){var _0x5af2b6=_0x3477d5[_0x9780('0x16')];var _0x50dded=![];var _0x412bf6=null;if(!_[_0x9780('0x17')](_0x69dd91)){if(intUtil[_0x9780('0x18')](_0x69dd91[_0x9780('0x19')])){_0x4b1cf4['userEmail']=_0x69dd91[_0x9780('0x19')];for(_0x412bf6=0x0;_0x412bf6<_0x5af2b6[_0x9780('0x1a')];_0x412bf6++){if(_0x5af2b6[_0x412bf6]['internalemailaddress']===_0x69dd91['email']&&!_0x5af2b6[_0x412bf6][_0x9780('0x1b')]){_0x50dded=!![];logger[_0x9780('0x1c')]('['+[_0x9c6604[_0x9780('0x11')]()]+_0x9780('0x1d')+_0x5af2b6[_0x412bf6][_0x9780('0x1e')]+'!');_0x4b1cf4[_0x9780('0x1f')]=_0x5af2b6[_0x412bf6][_0x9780('0x1e')];}}}}if(!_0x50dded){logger[_0x9780('0x1c')]('['+[_0x9c6604['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x4b1cf4['userEmail']=_0x3a9015[_0x9780('0xc')];for(_0x412bf6=0x0;_0x412bf6<_0x5af2b6[_0x9780('0x1a')];_0x412bf6++){if(_0x5af2b6[_0x412bf6][_0x9780('0x20')]===_0x3a9015[_0x9780('0xc')]){_0x4b1cf4['userId']=_0x5af2b6[_0x412bf6]['systemuserid'];}}}_0x2fbfe6(_0x4b1cf4);})[_0x9780('0xf')](function(_0x1587fe){_0x39169b(_0x1587fe['message']);});});}function createEndUser(_0x12e549,_0x2d016c,_0x1306f8,_0x5f0af8,_0x17efce,_0xc3c85a){return new BPromise(function(_0x26f8ac,_0x9a9d5a){return getAuthToken(_0x2d016c,_0x1306f8,_0xc3c85a)['then'](function(_0x23ba4a){var _0x252c48=_0xc3c85a['toLowerCase']()===_0x9780('0x21')?_0x17efce[_0x9780('0x22')]:_0x17efce[_0x9780('0x23')];var _0x2e4cb9={'method':'POST','uri':_0x5f0af8+_0x9780('0x24'),'body':{'telephone1':_0x252c48,'fullname':_0x252c48,'firstname':_0x252c48,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x9780('0x25')+_0x12e549['userId']+')'},'headers':{'Authorization':'Bearer\x20'+_0x23ba4a,'OData-Version':_0x9780('0x15')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x2e4cb9);})['then'](function(_0x25941f){var _0x46810a=_0x25941f[_0x9780('0x26')]['odata-entityid'];var _0x1bdd23=_0x46810a[_0x9780('0x27')](_0x46810a[_0x9780('0x28')]('(')+0x1,_0x46810a[_0x9780('0x28')](')'));_0x12e549['enduserId']=_0x1bdd23;_0x26f8ac(_0x12e549);})['catch'](function(_0x4b3e7c){_0x9a9d5a(_0x4b3e7c[_0x9780('0x29')]);});});}function getEndUser(_0x1ace37,_0x54d829,_0x1e2aff,_0x57fe33,_0x112ecd,_0x2cfb6f){return new BPromise(function(_0x4d79b2,_0x58ceca){var _0x163f59=_0x2cfb6f[_0x9780('0x2a')]()===_0x9780('0x21')?_0x112ecd[_0x9780('0x22')]:_0x112ecd['calleridnum'];return getAuthToken(_0x54d829,_0x1e2aff,_0x2cfb6f)[_0x9780('0x2b')](function(_0x18c1a7){var _0x1e25ae={'method':_0x9780('0x12'),'uri':_0x57fe33+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x163f59[_0x9780('0x2c')]('+',_0x9780('0x2d'))+'\x27','headers':{'Authorization':_0x9780('0x14')+_0x18c1a7,'If-None-Match':null,'OData-Version':_0x9780('0x15')},'json':!![]};return rp(_0x1e25ae);})[_0x9780('0x2b')](function(_0x240daa){var _0x4b8bb2=null;if(_0x240daa){var _0x5a9722=_0x240daa['value'];var _0x4e6173=![];for(_0x4b8bb2=0x0;_0x4b8bb2<_0x5a9722[_0x9780('0x1a')];_0x4b8bb2++){if(_0x5a9722[_0x4b8bb2][_0x9780('0x2e')]===_0x163f59){_0x4e6173=!![];_0x1ace37[_0x9780('0x2f')]=_0x5a9722[_0x4b8bb2][_0x9780('0x30')];}}if(_0x4e6173){_0x4d79b2(_0x1ace37);}else{return createEndUser(_0x1ace37,_0x54d829,_0x1e2aff,_0x57fe33,_0x112ecd,_0x2cfb6f)['then'](function(_0x30f1e4){logger[_0x9780('0x1c')]('['+[_0x2cfb6f['toUpperCase']()]+']\x20Enduser\x20created!',_0x30f1e4[_0x9780('0x2f')]);_0x4d79b2(_0x30f1e4);});}}else{return createEndUser(_0x1ace37,_0x54d829,_0x1e2aff,_0x57fe33,_0x112ecd,_0x2cfb6f)['then'](function(_0x3989e7){logger[_0x9780('0x1c')]('['+[_0x2cfb6f[_0x9780('0x11')]()]+_0x9780('0x31'),_0x3989e7['enduserId']);_0x4d79b2(_0x3989e7);});}});});}function getCustomFields(_0x505e62,_0x18bc2c,_0x63ea28){var _0x36caac={};if(_0x505e62['length']>0x0){_[_0x9780('0x32')](_0x505e62,function(_0x4d5ce9){if(_[_0x9780('0x33')](['string',_0x9780('0x34')],_0x4d5ce9[_0x9780('0x35')])&&_0x4d5ce9[_0x9780('0x36')]&&!_0x4d5ce9['customField']){var _0x429852=_0x4d5ce9[_0x9780('0x37')][_0x9780('0x2a')]();var _0x188d0a=_0x429852[_0x9780('0x27')](0x0,_0x429852[_0x9780('0x38')]('_'));var _0x59223b=_0x429852[_0x9780('0x27')](_0x429852['indexOf']('_')+0x1);if(_0x188d0a===_0x63ea28){_0x36caac[_0x59223b]=_0x4d5ce9['content'];}}});}return _0x36caac;}function getTicket(_0x9cb001,_0xedbd12,_0x3fa49e,_0xf9d372,_0x246ae0,_0x4b290c,_0x2cbda4){return new BPromise(function(_0x3fdef0,_0x4c8bfc){var _0x579fb5;return getAuthToken(_0xedbd12,_0x3fa49e,_0x2cbda4)[_0x9780('0x2b')](function(_0xa0448a){if(_0x4b290c[_0x9780('0x39')]==='incident'){_0x579fb5={'method':_0x9780('0x9'),'uri':_0xf9d372+_0x9780('0x3a'),'body':Object[_0x9780('0x3b')]({},{'title':intUtil[_0x9780('0x3c')](_0x4b290c[_0x9780('0x3d')],_0x246ae0,'\x20'),'description':intUtil[_0x9780('0x3c')](_0x4b290c[_0x9780('0x3e')],_0x246ae0,'\x0a'),'customerid_contact@odata.bind':_0x9780('0x3f')+_0x9cb001[_0x9780('0x2f')]+')','ownerid@odata.bind':_0x9780('0x25')+_0x9cb001['userId']+')','caseorigincode':'1'},getCustomFields(_0x4b290c['Fields'],_0x246ae0,_0x4b290c['ticketType'])),'headers':{'Authorization':_0x9780('0x14')+_0xa0448a,'OData-Version':_0x9780('0x15')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4b290c[_0x9780('0x39')]==='phonecall'){_0x579fb5={'method':_0x9780('0x9'),'uri':_0xf9d372+_0x9780('0x40'),'body':Object[_0x9780('0x3b')]({},{'subject':intUtil[_0x9780('0x3c')](_0x4b290c['Subjects'],_0x246ae0,'\x20'),'phonenumber':String(_0x246ae0[_0x9780('0x23')]),'description':intUtil[_0x9780('0x3c')](_0x4b290c[_0x9780('0x3e')],_0x246ae0,'\x0a'),'regardingobjectid_contact@odata.bind':_0x9780('0x3f')+_0x9cb001[_0x9780('0x2f')]+')','ownerid@odata.bind':_0x9780('0x25')+_0x9cb001[_0x9780('0x1f')]+')','directioncode':_0x9cb001[_0x9780('0x41')]===_0x9780('0x42')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x9780('0x25')+_0x9cb001['userId']+')','participationtypemask':_0x9cb001[_0x9780('0x41')]===_0x9780('0x42')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x9cb001[_0x9780('0x2f')]+')','participationtypemask':_0x9cb001[_0x9780('0x41')]==='queue'?0x1:0x2}]},getCustomFields(_0x4b290c['Fields'],_0x246ae0,_0x4b290c[_0x9780('0x39')])),'headers':{'Authorization':_0x9780('0x14')+_0xa0448a,'OData-Version':_0x9780('0x15')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x579fb5);})[_0x9780('0x2b')](function(_0x10c1b1){var _0x4f4148=_0x10c1b1[_0x9780('0x26')][_0x9780('0x43')];var _0x5d74b9=_0x4f4148['substring'](_0x4f4148[_0x9780('0x28')]('(')+0x1,_0x4f4148['lastIndexOf'](')'));_0x9cb001[_0x9780('0x44')]=_0x5d74b9;_0x3fdef0(_0x9cb001);})[_0x9780('0xf')](function(_0x511704){_0x4c8bfc(_0x511704[_0x9780('0x29')]);});});}function emit(_0x41813d,_0x4f81ae,_0x586cd9,_0x37f508){var _0x312e13={'uri':util[_0x9780('0x45')](_0x9780('0x46'),_0x41813d,_0x586cd9,_0x37f508)};io['to'](util['format']('user:%s',_0x4f81ae))[_0x9780('0x47')]('trigger:browser:url',_0x312e13);}exports['cs']=function(_0x2f0493,_0xb77f9d,_0x48f3af,_0x1d6ab6,_0x1cb595,_0x44df53,_0x308920,_0x641335){var _0x20fc4a={};_0x44df53[_0x9780('0xb')]=intUtil[_0x9780('0x48')](_0x44df53['remoteUri']);_0x44df53[_0x9780('0x49')]=intUtil[_0x9780('0x48')](_0x44df53[_0x9780('0x49')]);_0x20fc4a[_0x9780('0x41')]=_0x641335===_0x9780('0x42')||_0x641335===_0x9780('0x4a')?_0x9780('0x42'):_0x9780('0x21');var _0x5f09f7=util[_0x9780('0x45')]('%s/api/data/v9.0/',_0x44df53[_0x9780('0xb')]);var _0x1ac027=util['format']('https://login.microsoftonline.com/%s/oauth2/token',_0x44df53[_0x9780('0x4b')]);var _0x5d57dc=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x44df53[_0x9780('0x49')],_0xb77f9d[_0x9780('0x4c')],md5(_0xb77f9d['uniqueid']));if(_0x1cb595&&_0x1cb595[_0x9780('0x4d')]){logger[_0x9780('0x1c')](_0x9780('0x4e'),_0x9780('0x4f'));_0xb77f9d['recordingURL']=_0x5d57dc;}else if(_0x308920&&_0x308920['recordingFormat']&&_0x308920[_0x9780('0x50')]!==_0x9780('0x51')){logger[_0x9780('0x1c')](_0x9780('0x52'),'Recording\x20is\x20enabled!');_0xb77f9d[_0x9780('0x53')]=_0x5d57dc;}else{_0xb77f9d[_0x9780('0x53')]='';}return getUser(_0x20fc4a,_0x44df53,_0x1d6ab6,_0x1ac027,_0x5f09f7,_0x641335)['then'](function(_0x133023){logger[_0x9780('0x1c')]('['+_0x641335['toUpperCase']()+_0x9780('0x54'),_0x133023[_0x9780('0x1f')]);logger[_0x9780('0x1c')]('['+_0x641335['toUpperCase']()+_0x9780('0x55'),_0x133023['userEmail']);return getEndUser(_0x133023,_0x44df53,_0x1ac027,_0x5f09f7,_0xb77f9d,_0x641335);})['then'](function(_0x3add58){logger[_0x9780('0x1c')]('['+_0x641335['toUpperCase']()+_0x9780('0x56'),_0x3add58[_0x9780('0x2f')]);logger[_0x9780('0x1c')]('['+_0x641335[_0x9780('0x11')]()+']\x20The\x20Enduser\x20phone\x20is:',_0xb77f9d[_0x9780('0x23')]);return getTicket(_0x3add58,_0x44df53,_0x1ac027,_0x5f09f7,_0xb77f9d,_0x48f3af,_0x641335);})[_0x9780('0x2b')](function(_0x34eb83){logger[_0x9780('0x1c')](util[_0x9780('0x45')]('['+_0x641335[_0x9780('0x11')]()+_0x9780('0x57'),_0x48f3af[_0x9780('0x39')],_0x34eb83[_0x9780('0x44')]));logger[_0x9780('0x1c')](util[_0x9780('0x45')]('['+_0x641335['toUpperCase']()+_0x9780('0x58'),_0x641335));if(_0x641335!=='unmanaged'){logger['info']('['+_0x641335[_0x9780('0x11')]()+']',_0x9780('0x59'));emit(_0x44df53[_0x9780('0xb')],_0x1d6ab6[_0x9780('0x5a')],_0x48f3af[_0x9780('0x39')],_0x34eb83[_0x9780('0x44')]);}})[_0x9780('0xf')](function(_0x18b2be){logger[_0x9780('0x10')]('['+_0x641335['toUpperCase']()+_0x9780('0x5b'),util['inspect'](_0x18b2be,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1ad2=['error','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','isNil','validateEmail','userEmail','length','internalemailaddress','email','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','Bearer\x20','4.0','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','GET','replace','%2b','value','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','string','picklist','type','nameField','idField','indexOf','content','ticketType','incidents','assign','getString','/contacts(','phonecall','Subjects','Descriptions','callDirection','queue','Fields','ticketId','format','user:%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20Enduser\x20phone\x20is:','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','POST','username','password','clientSecret','then','access_token','catch'];(function(_0x8bc046,_0x5be797){var _0x2f19d5=function(_0x39579d){while(--_0x39579d){_0x8bc046['push'](_0x8bc046['shift']());}};_0x2f19d5(++_0x5be797);}(_0x1ad2,0x1de));var _0x21ad=function(_0x145c3f,_0x2da04b){_0x145c3f=_0x145c3f-0x0;var _0x43ef12=_0x1ad2[_0x145c3f];return _0x43ef12;};'use strict';var _=require('lodash');var BPromise=require(_0x21ad('0x0'));var rp=require(_0x21ad('0x1'));var util=require('util');var intUtil=require(_0x21ad('0x2'));var md5=require(_0x21ad('0x3'));var Redis=require(_0x21ad('0x4'));var logger=require(_0x21ad('0x5'))(_0x21ad('0x6'));var config=require(_0x21ad('0x7'));config[_0x21ad('0x8')]=_[_0x21ad('0x9')](config[_0x21ad('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x21ad('0x8')]));function getAuthToken(_0x33e91b,_0x4cf505,_0x1c5f24){var _0x3317e2={'method':_0x21ad('0xa'),'uri':_0x4cf505,'form':{'client_id':_0x33e91b['clientId'],'resource':_0x33e91b['remoteUri'],'username':_0x33e91b[_0x21ad('0xb')],'password':_0x33e91b[_0x21ad('0xc')],'grant_type':_0x21ad('0xc'),'client_secret':_0x33e91b[_0x21ad('0xd')]},'json':!![]};return rp(_0x3317e2)[_0x21ad('0xe')](function(_0x430811){return _0x430811[_0x21ad('0xf')];})[_0x21ad('0x10')](function(_0x3140dc){logger[_0x21ad('0x11')]('['+[_0x1c5f24[_0x21ad('0x12')]()]+_0x21ad('0x13'));return _0x3140dc[_0x21ad('0x14')];});}function getUser(_0x36606,_0x52baf8,_0x30f393,_0x39fa79,_0x96cad4,_0x36a1ae){return new BPromise(function(_0x1107aa,_0x5d4313){return getAuthToken(_0x52baf8,_0x39fa79,_0x36a1ae)[_0x21ad('0xe')](function(_0x12b333){var _0x2156ba={'method':'GET','uri':_0x96cad4+_0x21ad('0x15'),'headers':{'Authorization':'Bearer\x20'+_0x12b333,'OData-Version':'4.0'},'json':!![]};return rp(_0x2156ba);})['then'](function(_0x2cecbe){var _0x56c86a=_0x2cecbe['value'];var _0x43c203=![];var _0x48b8dc=null;if(!_[_0x21ad('0x16')](_0x30f393)){if(intUtil[_0x21ad('0x17')](_0x30f393['email'])){_0x36606[_0x21ad('0x18')]=_0x30f393['email'];for(_0x48b8dc=0x0;_0x48b8dc<_0x56c86a[_0x21ad('0x19')];_0x48b8dc++){if(_0x56c86a[_0x48b8dc][_0x21ad('0x1a')]===_0x30f393[_0x21ad('0x1b')]&&!_0x56c86a[_0x48b8dc][_0x21ad('0x1c')]){_0x43c203=!![];logger[_0x21ad('0x1d')]('['+[_0x36a1ae[_0x21ad('0x12')]()]+_0x21ad('0x1e')+_0x56c86a[_0x48b8dc][_0x21ad('0x1f')]+'!');_0x36606[_0x21ad('0x20')]=_0x56c86a[_0x48b8dc][_0x21ad('0x1f')];}}}}if(!_0x43c203){logger[_0x21ad('0x1d')]('['+[_0x36a1ae['toUpperCase']()]+_0x21ad('0x21'));_0x36606[_0x21ad('0x18')]=_0x52baf8[_0x21ad('0xb')];for(_0x48b8dc=0x0;_0x48b8dc<_0x56c86a[_0x21ad('0x19')];_0x48b8dc++){if(_0x56c86a[_0x48b8dc][_0x21ad('0x1a')]===_0x52baf8[_0x21ad('0xb')]){_0x36606['userId']=_0x56c86a[_0x48b8dc][_0x21ad('0x1f')];}}}_0x1107aa(_0x36606);})[_0x21ad('0x10')](function(_0x5ebc46){_0x5d4313(_0x5ebc46[_0x21ad('0x14')]);});});}function createEndUser(_0x299ffa,_0x5a17b4,_0x564ccc,_0x1cbc92,_0x3fc711,_0x1a7dda){return new BPromise(function(_0x24c2ea,_0x282230){return getAuthToken(_0x5a17b4,_0x564ccc,_0x1a7dda)[_0x21ad('0xe')](function(_0x1c0823){var _0x5d344c=_0x1a7dda[_0x21ad('0x22')]()==='outbound'?_0x3fc711[_0x21ad('0x23')]:_0x3fc711[_0x21ad('0x24')];var _0x5c8627={'method':_0x21ad('0xa'),'uri':_0x1cbc92+_0x21ad('0x25'),'body':{'telephone1':_0x5d344c,'fullname':_0x5d344c,'firstname':_0x5d344c,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x21ad('0x26')+_0x299ffa[_0x21ad('0x20')]+')'},'headers':{'Authorization':_0x21ad('0x27')+_0x1c0823,'OData-Version':_0x21ad('0x28')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5c8627);})[_0x21ad('0xe')](function(_0x26f7ea){var _0x2882fc=_0x26f7ea[_0x21ad('0x29')][_0x21ad('0x2a')];var _0x2bc7db=_0x2882fc[_0x21ad('0x2b')](_0x2882fc['lastIndexOf']('(')+0x1,_0x2882fc[_0x21ad('0x2c')](')'));_0x299ffa[_0x21ad('0x2d')]=_0x2bc7db;_0x24c2ea(_0x299ffa);})[_0x21ad('0x10')](function(_0x633f11){_0x282230(_0x633f11[_0x21ad('0x14')]);});});}function getEndUser(_0x352a88,_0x5cb126,_0x36b5eb,_0x48b00b,_0x4337a5,_0x9fc5e5){return new BPromise(function(_0x808911,_0x27af7a){var _0x482937=_0x9fc5e5[_0x21ad('0x22')]()===_0x21ad('0x2e')?_0x4337a5[_0x21ad('0x23')]:_0x4337a5[_0x21ad('0x24')];return getAuthToken(_0x5cb126,_0x36b5eb,_0x9fc5e5)[_0x21ad('0xe')](function(_0xfdfa82){var _0x482424={'method':_0x21ad('0x2f'),'uri':_0x48b00b+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x482937[_0x21ad('0x30')]('+',_0x21ad('0x31'))+'\x27','headers':{'Authorization':_0x21ad('0x27')+_0xfdfa82,'If-None-Match':null,'OData-Version':_0x21ad('0x28')},'json':!![]};return rp(_0x482424);})[_0x21ad('0xe')](function(_0x330f21){var _0x55dc6d=null;if(_0x330f21){var _0x324ef9=_0x330f21[_0x21ad('0x32')];var _0x3b76bd=![];for(_0x55dc6d=0x0;_0x55dc6d<_0x324ef9[_0x21ad('0x19')];_0x55dc6d++){if(_0x324ef9[_0x55dc6d]['telephone1']===_0x482937){_0x3b76bd=!![];_0x352a88['enduserId']=_0x324ef9[_0x55dc6d][_0x21ad('0x33')];}}if(_0x3b76bd){_0x808911(_0x352a88);}else{return createEndUser(_0x352a88,_0x5cb126,_0x36b5eb,_0x48b00b,_0x4337a5,_0x9fc5e5)['then'](function(_0x282f76){logger[_0x21ad('0x1d')]('['+[_0x9fc5e5[_0x21ad('0x12')]()]+_0x21ad('0x34'),_0x282f76[_0x21ad('0x2d')]);_0x808911(_0x282f76);});}}else{return createEndUser(_0x352a88,_0x5cb126,_0x36b5eb,_0x48b00b,_0x4337a5,_0x9fc5e5)[_0x21ad('0xe')](function(_0x1b2382){logger[_0x21ad('0x1d')]('['+[_0x9fc5e5[_0x21ad('0x12')]()]+_0x21ad('0x35'),_0x1b2382[_0x21ad('0x2d')]);_0x808911(_0x1b2382);});}});});}function getCustomFields(_0x203e1e,_0x391909,_0x35074a){var _0x2158b1={};if(_0x203e1e[_0x21ad('0x19')]>0x0){_['forEach'](_0x203e1e,function(_0x1864f6){if(_[_0x21ad('0x36')]([_0x21ad('0x37'),_0x21ad('0x38')],_0x1864f6[_0x21ad('0x39')])&&_0x1864f6[_0x21ad('0x3a')]&&!_0x1864f6['customField']){var _0x8a8a98=_0x1864f6[_0x21ad('0x3b')][_0x21ad('0x22')]();var _0x44d107=_0x8a8a98['substring'](0x0,_0x8a8a98[_0x21ad('0x3c')]('_'));var _0x1785e5=_0x8a8a98[_0x21ad('0x2b')](_0x8a8a98['indexOf']('_')+0x1);if(_0x44d107===_0x35074a){_0x2158b1[_0x1785e5]=_0x1864f6[_0x21ad('0x3d')];}}});}return _0x2158b1;}function getTicket(_0x4775a7,_0x3a2257,_0x4c644e,_0x570827,_0x35c449,_0x3eb123,_0x218788){return new BPromise(function(_0x1aeeab,_0x2bccd0){var _0x59ead9;return getAuthToken(_0x3a2257,_0x4c644e,_0x218788)[_0x21ad('0xe')](function(_0x2153db){if(_0x3eb123[_0x21ad('0x3e')]==='incident'){_0x59ead9={'method':'POST','uri':_0x570827+_0x21ad('0x3f'),'body':Object[_0x21ad('0x40')]({},{'title':intUtil[_0x21ad('0x41')](_0x3eb123['Subjects'],_0x35c449,'\x20'),'description':intUtil[_0x21ad('0x41')](_0x3eb123['Descriptions'],_0x35c449,'\x0a'),'customerid_contact@odata.bind':_0x21ad('0x42')+_0x4775a7[_0x21ad('0x2d')]+')','ownerid@odata.bind':_0x21ad('0x26')+_0x4775a7[_0x21ad('0x20')]+')','caseorigincode':'1'},getCustomFields(_0x3eb123['Fields'],_0x35c449,_0x3eb123['ticketType'])),'headers':{'Authorization':_0x21ad('0x27')+_0x2153db,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3eb123[_0x21ad('0x3e')]===_0x21ad('0x43')){_0x59ead9={'method':_0x21ad('0xa'),'uri':_0x570827+'phonecalls','body':Object[_0x21ad('0x40')]({},{'subject':intUtil['getString'](_0x3eb123[_0x21ad('0x44')],_0x35c449,'\x20'),'phonenumber':String(_0x35c449[_0x21ad('0x24')]),'description':intUtil['getString'](_0x3eb123[_0x21ad('0x45')],_0x35c449,'\x0a'),'regardingobjectid_contact@odata.bind':_0x21ad('0x42')+_0x4775a7[_0x21ad('0x2d')]+')','ownerid@odata.bind':_0x21ad('0x26')+_0x4775a7[_0x21ad('0x20')]+')','directioncode':_0x4775a7[_0x21ad('0x46')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x21ad('0x26')+_0x4775a7[_0x21ad('0x20')]+')','participationtypemask':_0x4775a7['callDirection']===_0x21ad('0x47')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x4775a7[_0x21ad('0x2d')]+')','participationtypemask':_0x4775a7[_0x21ad('0x46')]===_0x21ad('0x47')?0x1:0x2}]},getCustomFields(_0x3eb123[_0x21ad('0x48')],_0x35c449,_0x3eb123[_0x21ad('0x3e')])),'headers':{'Authorization':_0x21ad('0x27')+_0x2153db,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x59ead9);})[_0x21ad('0xe')](function(_0x54862b){var _0x165d17=_0x54862b[_0x21ad('0x29')][_0x21ad('0x2a')];var _0x32a5fe=_0x165d17['substring'](_0x165d17['lastIndexOf']('(')+0x1,_0x165d17[_0x21ad('0x2c')](')'));_0x4775a7[_0x21ad('0x49')]=_0x32a5fe;_0x1aeeab(_0x4775a7);})['catch'](function(_0xbe4ece){_0x2bccd0(_0xbe4ece[_0x21ad('0x14')]);});});}function emit(_0x530cb5,_0x5e7210,_0x47d36e,_0x36aba3){var _0x3e8bd4={'uri':util[_0x21ad('0x4a')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x530cb5,_0x47d36e,_0x36aba3)};io['to'](util[_0x21ad('0x4a')](_0x21ad('0x4b'),_0x5e7210))[_0x21ad('0x4c')](_0x21ad('0x4d'),_0x3e8bd4);}exports['cs']=function(_0x1b7f65,_0x4aa1f8,_0x521096,_0x447861,_0x58fbb1,_0x34048f,_0x2a5453,_0x4aaefc){var _0x3a63be={};_0x34048f[_0x21ad('0x4e')]=intUtil[_0x21ad('0x4f')](_0x34048f[_0x21ad('0x4e')]);_0x34048f[_0x21ad('0x50')]=intUtil[_0x21ad('0x4f')](_0x34048f[_0x21ad('0x50')]);_0x3a63be[_0x21ad('0x46')]=_0x4aaefc===_0x21ad('0x47')||_0x4aaefc===_0x21ad('0x51')?'queue':_0x21ad('0x2e');var _0xd5a8b5=util[_0x21ad('0x4a')](_0x21ad('0x52'),_0x34048f[_0x21ad('0x4e')]);var _0x2aebe1=util['format'](_0x21ad('0x53'),_0x34048f[_0x21ad('0x54')]);var _0xf1cd24=util[_0x21ad('0x4a')](_0x21ad('0x55'),_0x34048f[_0x21ad('0x50')],_0x4aa1f8[_0x21ad('0x56')],md5(_0x4aa1f8[_0x21ad('0x56')]));if(_0x58fbb1&&_0x58fbb1[_0x21ad('0x57')]){logger[_0x21ad('0x1d')](_0x21ad('0x58'),_0x21ad('0x59'));_0x4aa1f8[_0x21ad('0x5a')]=_0xf1cd24;}else if(_0x2a5453&&_0x2a5453['recordingFormat']&&_0x2a5453[_0x21ad('0x5b')]!==_0x21ad('0x5c')){logger[_0x21ad('0x1d')](_0x21ad('0x5d'),_0x21ad('0x59'));_0x4aa1f8['recordingURL']=_0xf1cd24;}else{_0x4aa1f8[_0x21ad('0x5a')]='';}return getUser(_0x3a63be,_0x34048f,_0x447861,_0x2aebe1,_0xd5a8b5,_0x4aaefc)[_0x21ad('0xe')](function(_0x1ce504){logger[_0x21ad('0x1d')]('['+_0x4aaefc['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x1ce504[_0x21ad('0x20')]);logger['info']('['+_0x4aaefc[_0x21ad('0x12')]()+']\x20The\x20User\x20email\x20is:',_0x1ce504['userEmail']);return getEndUser(_0x1ce504,_0x34048f,_0x2aebe1,_0xd5a8b5,_0x4aa1f8,_0x4aaefc);})[_0x21ad('0xe')](function(_0x27fea7){logger['info']('['+_0x4aaefc[_0x21ad('0x12')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x27fea7[_0x21ad('0x2d')]);logger[_0x21ad('0x1d')]('['+_0x4aaefc[_0x21ad('0x12')]()+_0x21ad('0x5e'),_0x4aa1f8['calleridnum']);return getTicket(_0x27fea7,_0x34048f,_0x2aebe1,_0xd5a8b5,_0x4aa1f8,_0x521096,_0x4aaefc);})['then'](function(_0x2cd7ce){logger[_0x21ad('0x1d')](util[_0x21ad('0x4a')]('['+_0x4aaefc[_0x21ad('0x12')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x521096[_0x21ad('0x3e')],_0x2cd7ce[_0x21ad('0x49')]));logger[_0x21ad('0x1d')](util[_0x21ad('0x4a')]('['+_0x4aaefc[_0x21ad('0x12')]()+']\x20Call\x20direction:\x20%s',_0x4aaefc));if(_0x4aaefc!==_0x21ad('0x51')){logger[_0x21ad('0x1d')]('['+_0x4aaefc[_0x21ad('0x12')]()+']',_0x21ad('0x5f'));emit(_0x34048f['remoteUri'],_0x447861[_0x21ad('0x60')],_0x521096[_0x21ad('0x3e')],_0x2cd7ce[_0x21ad('0x49')]);}})['catch'](function(_0x154041){logger[_0x21ad('0x11')]('['+_0x4aaefc[_0x21ad('0x12')]()+_0x21ad('0x61'),util[_0x21ad('0x62')](_0x154041,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 6f49130..47635c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa255=['The\x20Ticket\x20ID\x20is:','stringify','unmanaged','lastevent','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','redis','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','value','POST','then','Ticket\x20created!','validateEmail','remoteUri','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','GET','includes','string','type','nameField','customField','toLowerCase','content','picklist','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridnum','The\x20Enduser\x20ID\x20is:'];(function(_0x373706,_0x4a0080){var _0x2e6ffe=function(_0x14aeaf){while(--_0x14aeaf){_0x373706['push'](_0x373706['shift']());}};_0x2e6ffe(++_0x4a0080);}(_0xa255,0xba));var _0x5a25=function(_0x35173b,_0x16711b){_0x35173b=_0x35173b-0x0;var _0x51cdf4=_0xa255[_0x35173b];return _0x51cdf4;};'use strict';var _=require(_0x5a25('0x0'));var rp=require(_0x5a25('0x1'));var md5=require(_0x5a25('0x2'));var util=require(_0x5a25('0x3'));var Redis=require('ioredis');var intUtil=require(_0x5a25('0x4'));var config=require(_0x5a25('0x5'));var logger=require(_0x5a25('0x6'))('freshdesk');config[_0x5a25('0x7')]=_['defaults'](config[_0x5a25('0x7')],{'host':_0x5a25('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x5a25('0x9'),'Accept':_0x5a25('0x9')};function emit(_0x4158cf,_0x4c34d7,_0x2c0d13){io['to'](_0x4158cf)[_0x5a25('0xa')](_0x4c34d7,_0x2c0d13);}function getTicket(_0x53ac35,_0x534e24,_0x4e35db,_0x2e9829,_0x92f5ef){logger[_0x5a25('0xb')](_0x5a25('0xc'));var _0x550eb8=_[_0x5a25('0xd')]({'responder_id':_0x534e24['id'],'requester_id':_0x4e35db['id'],'name':util[_0x5a25('0xe')](_0x5a25('0xf'),_0x92f5ef[_0x5a25('0x10')]),'phone':_0x92f5ef[_0x5a25('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x5a25('0x12')](_0x2e9829[_0x5a25('0x13')],_0x92f5ef,'\x20'),'description':intUtil['getString'](_0x2e9829[_0x5a25('0x14')],_0x92f5ef,_0x5a25('0x15')),'tags':getTags(_0x2e9829[_0x5a25('0x16')],_0x5a25('0x17'))},getCustomFields(_0x2e9829['Fields'],_0x92f5ef));_0x550eb8[_0x5a25('0x18')]=_[_0x5a25('0x19')](_[_0x5a25('0x1a')](_0x550eb8[_0x5a25('0x18')],'id'),_0x5a25('0x1b'));return request({'uri':util['format']('%s/api/v2/tickets',_0x53ac35['remoteUri']),'method':_0x5a25('0x1c'),'body':_0x550eb8})[_0x5a25('0x1d')](function(_0x340b95){logger[_0x5a25('0xb')](_0x5a25('0x1e'));return _0x340b95;});}function getUser(_0x363d8d,_0x26fe72){if(intUtil[_0x5a25('0x1f')](_0x26fe72)){return request({'uri':util[_0x5a25('0xe')]('%s/api/v2/agents',_0x363d8d[_0x5a25('0x20')]),'qs':{'email':_0x26fe72}})[_0x5a25('0x1d')](function(_0x2a58c1){if(_0x2a58c1['length']){logger[_0x5a25('0xb')]('Agent\x20found!');return _['find'](_0x2a58c1,function(_0x50dc1){return _0x50dc1['contact'][_0x5a25('0x21')]===_0x26fe72;});}else{logger[_0x5a25('0xb')](_0x5a25('0x22'));return request({'uri':util[_0x5a25('0xe')]('%s/api/v2/agents/me',_0x363d8d[_0x5a25('0x20')])})['then'](function(_0x1b8adc){logger[_0x5a25('0xb')](_0x5a25('0x23'));return _0x1b8adc;});}});}else{logger[_0x5a25('0xb')](_0x5a25('0x24'));return request({'uri':util[_0x5a25('0xe')]('%s/api/v2/agents/me',_0x363d8d['remoteUri'])})[_0x5a25('0x1d')](function(_0x7792c1){logger[_0x5a25('0xb')](_0x5a25('0x23'));return _0x7792c1;});}}function getEndUser(_0x1db57f,_0x27f609,_0x24b406){logger[_0x5a25('0xb')](_0x5a25('0x25'),_0x24b406);return request({'uri':util[_0x5a25('0xe')](_0x5a25('0x26'),_0x1db57f[_0x5a25('0x20')]),'qs':{'phone':_0x24b406}})['then'](function(_0x5c4d44){if(_0x5c4d44[_0x5a25('0x27')]){logger[_0x5a25('0xb')]('Enduser\x20found!');return _['find'](_0x5c4d44,{'phone':_0x24b406});}else{logger['info'](_0x5a25('0x28'));return request({'uri':util['format'](_0x5a25('0x26'),_0x1db57f[_0x5a25('0x20')]),'method':_0x5a25('0x1c'),'body':{'name':_0x27f609,'phone':_0x24b406}})['then'](function(_0x16de78){logger[_0x5a25('0xb')](_0x5a25('0x29'));return _0x16de78;});}});}function getAuth(_0x271338){return util['format'](_0x5a25('0x2a'),new Buffer(_0x271338['apiKey']+':X')[_0x5a25('0x2b')](_0x5a25('0x2c')));}function request(_0x30bfd0){logger[_0x5a25('0x2d')](_0x5a25('0x2e'),JSON['stringify'](_0x30bfd0));return rp(_['defaults'](_0x30bfd0,{'method':_0x5a25('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x3b7a1e,_0x1cd28b){var _0x363ebc=[];if(_0x3b7a1e&&_0x3b7a1e[_0x5a25('0x27')]>0x0){_0x363ebc=_['map'](_0x3b7a1e,_0x1cd28b);}return _0x363ebc;}function getCustomFields(_0x419823,_0x3e05ae){var _0x2f361d=[];var _0x43414d={'custom_fields':[]};if(_0x419823[_0x5a25('0x27')]>0x0){_['forEach'](_0x419823,function(_0x36f0ce){if(_[_0x5a25('0x30')]([_0x5a25('0x31'),'picklist'],_0x36f0ce[_0x5a25('0x32')])&&_0x36f0ce[_0x5a25('0x33')]&&!_0x36f0ce[_0x5a25('0x34')]){_0x43414d[_0x36f0ce['nameField'][_0x5a25('0x35')]()]=_0x36f0ce[_0x5a25('0x36')][_0x5a25('0x2b')]();}else if(_[_0x5a25('0x30')]([_0x5a25('0x31'),_0x5a25('0x37')],_0x36f0ce[_0x5a25('0x32')])&&_0x36f0ce[_0x5a25('0x38')]&&_0x36f0ce[_0x5a25('0x34')]){_0x43414d['custom_fields'][_0x5a25('0x39')]({'id':_0x36f0ce[_0x5a25('0x38')],'value':_0x36f0ce[_0x5a25('0x36')][_0x5a25('0x2b')]()});}else if(_0x36f0ce[_0x5a25('0x32')]===_0x5a25('0x3a')&&_0x36f0ce[_0x5a25('0x3b')]&&_0x36f0ce[_0x5a25('0x38')]&&_0x36f0ce[_0x5a25('0x34')]){_0x3e05ae[_0x36f0ce[_0x5a25('0x3b')]]&&_0x43414d['custom_fields'][_0x5a25('0x39')]({'id':_0x36f0ce['idField'],'value':_0x3e05ae[_0x36f0ce[_0x5a25('0x3b')]][_0x5a25('0x2b')]()});}else if(_0x36f0ce[_0x5a25('0x32')]===_0x5a25('0x3c')&&_0x36f0ce[_0x5a25('0x3d')]&&_0x36f0ce[_0x5a25('0x3d')][_0x5a25('0x17')]&&_0x36f0ce[_0x5a25('0x38')]&&_0x36f0ce['customField']){_0x3e05ae[_0x36f0ce[_0x5a25('0x3d')]['name'][_0x5a25('0x35')]()]&&_0x43414d[_0x5a25('0x18')]['push']({'id':_0x36f0ce[_0x5a25('0x38')],'value':_0x3e05ae[_0x36f0ce[_0x5a25('0x3d')][_0x5a25('0x17')][_0x5a25('0x35')]()][_0x5a25('0x2b')]()});}});}return _0x43414d;}exports[_0x5a25('0x3e')]=function(_0x4f9308,_0x5dfcd4,_0x1e7de7,_0x514f1d,_0x1e10ca,_0x5ab964){var _0x126ed2,_0x57d592;_0x5ab964[_0x5a25('0x20')]=intUtil[_0x5a25('0x3f')](_0x5ab964[_0x5a25('0x20')]);_0x5ab964[_0x5a25('0x40')]=intUtil[_0x5a25('0x3f')](_0x5ab964['serverUrl']);if(_0x1e10ca&&_0x1e10ca[_0x5a25('0x41')]){logger[_0x5a25('0xb')](_0x5a25('0x42'),_0x5a25('0x43'));_0x5dfcd4[_0x5a25('0x44')]=util[_0x5a25('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5ab964['serverUrl'],_0x5dfcd4[_0x5a25('0x45')],md5(_0x5dfcd4['uniqueid']));}else{_0x5dfcd4[_0x5a25('0x44')]='';}headers[_0x5a25('0x46')]=getAuth(_0x5ab964);return getUser(_0x5ab964,_0x514f1d[_0x5a25('0x21')])[_0x5a25('0x1d')](function(_0x355d2b){_0x126ed2=_0x355d2b;logger[_0x5a25('0xb')]('The\x20User\x20ID\x20is:',_0x126ed2['id']);return getEndUser(_0x5ab964,_0x5dfcd4['calleridname'],_0x5dfcd4[_0x5a25('0x11')]);})[_0x5a25('0x1d')](function(_0x599800){_0x57d592=_0x599800;logger[_0x5a25('0xb')]('The\x20Enduser\x20ID\x20is:',_0x57d592['id']);return getTicket(_0x5ab964,_0x126ed2,_0x57d592,_0x1e7de7,_0x5dfcd4);})[_0x5a25('0x1d')](function(_0x1c83ec){if(_0x1c83ec&&_0x1c83ec['id']){logger[_0x5a25('0xb')](_0x5a25('0x1e'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x1c83ec['id']);logger[_0x5a25('0xb')](_0x5a25('0x42'),_0x5a25('0x47'));emit(util[_0x5a25('0xe')](_0x5a25('0x48'),_0x514f1d[_0x5a25('0x17')]),_0x5a25('0x49'),{'uri':util[_0x5a25('0xe')](_0x5a25('0x4a'),_0x5ab964[_0x5a25('0x20')],_0x1c83ec['id'])});}})[_0x5a25('0x4b')](function(_0x5209f9){logger[_0x5a25('0x4c')](_0x5a25('0x42'),JSON['stringify'](_0x5209f9));});};exports[_0x5a25('0x4d')]=function(_0x154111,_0x86eee,_0xb3c23e,_0x5460b5,_0x56f4e8,_0x5ca422,_0x5dbbf2){var _0x8d5e23,_0x686e5;_0x5ca422['remoteUri']=intUtil[_0x5a25('0x3f')](_0x5ca422[_0x5a25('0x20')]);_0x5ca422[_0x5a25('0x40')]=intUtil[_0x5a25('0x3f')](_0x5ca422['serverUrl']);if(_0x5dbbf2&&_0x5dbbf2[_0x5a25('0x4e')]&&_0x5dbbf2['recordingFormat']!==_0x5a25('0x4f')){logger[_0x5a25('0xb')](_0x5a25('0x50'),_0x5a25('0x43'));_0x86eee[_0x5a25('0x44')]=util[_0x5a25('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5ca422[_0x5a25('0x40')],_0x86eee[_0x5a25('0x45')],md5(_0x86eee[_0x5a25('0x45')]));}headers['Authorization']=getAuth(_0x5ca422);return getUser(_0x5ca422,_0x5460b5[_0x5a25('0x21')])[_0x5a25('0x1d')](function(_0x284f29){_0x8d5e23=_0x284f29;logger[_0x5a25('0xb')](_0x5a25('0x51'),_0x8d5e23['id']);return getEndUser(_0x5ca422,_0x86eee['destcalleridname'],_0x86eee[_0x5a25('0x52')]);})[_0x5a25('0x1d')](function(_0x1ecdff){_0x686e5=_0x1ecdff;logger['info'](_0x5a25('0x53'),_0x686e5['id']);return getTicket(_0x5ca422,_0x8d5e23,_0x686e5,_0xb3c23e,_0x86eee);})['then'](function(_0x50a4ff){if(_0x50a4ff&&_0x50a4ff['id']){logger[_0x5a25('0xb')](_0x5a25('0x1e'));logger[_0x5a25('0xb')](_0x5a25('0x54'),_0x50a4ff['id']);logger[_0x5a25('0xb')](_0x5a25('0x50'),_0x5a25('0x47'));emit(util[_0x5a25('0xe')](_0x5a25('0x48'),_0x5460b5['name']),'trigger:browser:url',{'uri':util[_0x5a25('0xe')](_0x5a25('0x4a'),_0x5ca422['remoteUri'],_0x50a4ff['id'])});}})['catch'](function(_0x4c50eb){logger[_0x5a25('0x4c')](_0x5a25('0x50'),JSON[_0x5a25('0x55')](_0x4c50eb));});};exports[_0x5a25('0x56')]=function(_0x413d72,_0x39c111,_0x5c3732,_0x1c3088,_0x380074,_0x2da24a){var _0x215acf,_0x23bb16;_0x2da24a[_0x5a25('0x20')]=intUtil[_0x5a25('0x3f')](_0x2da24a['remoteUri']);_0x2da24a[_0x5a25('0x40')]=intUtil['stripTrailingSlash'](_0x2da24a['serverUrl']);if(_0x380074&&_0x380074['monitor_format']){logger[_0x5a25('0xb')]('['+_0x39c111[_0x5a25('0x57')]['toUpperCase']()+']',_0x5a25('0x43'));_0x39c111[_0x5a25('0x44')]=util[_0x5a25('0xe')](_0x5a25('0x58'),_0x2da24a[_0x5a25('0x40')],_0x39c111[_0x5a25('0x45')],md5(_0x39c111[_0x5a25('0x45')]));}else{_0x39c111[_0x5a25('0x44')]='';}headers['Authorization']=getAuth(_0x2da24a);return getUser(_0x2da24a,'')[_0x5a25('0x1d')](function(_0x5429bd){_0x215acf=_0x5429bd;logger[_0x5a25('0xb')](_0x5a25('0x51'),_0x215acf['id']);return getEndUser(_0x2da24a,_0x39c111[_0x5a25('0x10')],_0x39c111['calleridnum']);})[_0x5a25('0x1d')](function(_0x57488e){_0x23bb16=_0x57488e;logger[_0x5a25('0xb')](_0x5a25('0x53'),_0x23bb16['id']);return getTicket(_0x2da24a,_0x215acf,_0x23bb16,_0x5c3732,_0x39c111);})[_0x5a25('0x1d')](function(_0x3ae084){if(_0x3ae084){logger['info'](_0x5a25('0x1e'));logger[_0x5a25('0xb')]('The\x20Ticket\x20ID\x20is:',_0x3ae084['id']);}})['catch'](function(_0x4d53a3){logger['error']('['+_0x39c111[_0x5a25('0x57')][_0x5a25('0x59')]()+']',JSON[_0x5a25('0x55')](_0x4d53a3));});};
\ No newline at end of file
+var _0x9e3d=['apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','picklist','idField','push','content','variable','variableName','customVariable','Variable','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','toUpperCase','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!'];(function(_0x3b5a27,_0x1fa536){var _0x1809b8=function(_0x5ee498){while(--_0x5ee498){_0x3b5a27['push'](_0x3b5a27['shift']());}};_0x1809b8(++_0x1fa536);}(_0x9e3d,0xef));var _0xd9e3=function(_0x3836e5,_0x24945f){_0x3836e5=_0x3836e5-0x0;var _0x246e1a=_0x9e3d[_0x3836e5];return _0x246e1a;};'use strict';var _=require(_0xd9e3('0x0'));var rp=require(_0xd9e3('0x1'));var md5=require('md5');var util=require(_0xd9e3('0x2'));var Redis=require(_0xd9e3('0x3'));var intUtil=require(_0xd9e3('0x4'));var config=require(_0xd9e3('0x5'));var logger=require(_0xd9e3('0x6'))(_0xd9e3('0x7'));config[_0xd9e3('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xd9e3('0x9'))(new Redis(config[_0xd9e3('0x8')]));var headers={'Content-Type':'application/json','Accept':_0xd9e3('0xa')};function emit(_0x11c755,_0x172858,_0x418d5f){io['to'](_0x11c755)[_0xd9e3('0xb')](_0x172858,_0x418d5f);}function getTicket(_0x1e834f,_0x3e0168,_0x321223,_0x42fde1,_0x262b62){logger['info'](_0xd9e3('0xc'));var _0x10e4c7=_[_0xd9e3('0xd')]({'responder_id':_0x3e0168['id'],'requester_id':_0x321223['id'],'name':util['format'](_0xd9e3('0xe'),_0x262b62[_0xd9e3('0xf')]),'phone':_0x262b62[_0xd9e3('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd9e3('0x11')](_0x42fde1[_0xd9e3('0x12')],_0x262b62,'\x20'),'description':intUtil[_0xd9e3('0x11')](_0x42fde1[_0xd9e3('0x13')],_0x262b62,'<br>'),'tags':getTags(_0x42fde1[_0xd9e3('0x14')],_0xd9e3('0x15'))},getCustomFields(_0x42fde1['Fields'],_0x262b62));_0x10e4c7[_0xd9e3('0x16')]=_[_0xd9e3('0x17')](_[_0xd9e3('0x18')](_0x10e4c7[_0xd9e3('0x16')],'id'),_0xd9e3('0x19'));return request({'uri':util[_0xd9e3('0x1a')](_0xd9e3('0x1b'),_0x1e834f[_0xd9e3('0x1c')]),'method':_0xd9e3('0x1d'),'body':_0x10e4c7})[_0xd9e3('0x1e')](function(_0x1c8897){logger[_0xd9e3('0x1f')](_0xd9e3('0x20'));return _0x1c8897;});}function getUser(_0xba608e,_0x4f97bd){if(intUtil['validateEmail'](_0x4f97bd)){return request({'uri':util[_0xd9e3('0x1a')](_0xd9e3('0x21'),_0xba608e['remoteUri']),'qs':{'email':_0x4f97bd}})[_0xd9e3('0x1e')](function(_0x2d7eb0){if(_0x2d7eb0[_0xd9e3('0x22')]){logger['info'](_0xd9e3('0x23'));return _[_0xd9e3('0x24')](_0x2d7eb0,function(_0x3491ca){return _0x3491ca[_0xd9e3('0x25')][_0xd9e3('0x26')]===_0x4f97bd;});}else{logger[_0xd9e3('0x1f')](_0xd9e3('0x27'));return request({'uri':util['format'](_0xd9e3('0x28'),_0xba608e[_0xd9e3('0x1c')])})[_0xd9e3('0x1e')](function(_0x105dcf){logger[_0xd9e3('0x1f')](_0xd9e3('0x29'));return _0x105dcf;});}});}else{logger['info'](_0xd9e3('0x2a'));return request({'uri':util['format'](_0xd9e3('0x28'),_0xba608e['remoteUri'])})['then'](function(_0x3353e8){logger[_0xd9e3('0x1f')](_0xd9e3('0x29'));return _0x3353e8;});}}function getEndUser(_0x783af9,_0x3e0381,_0x15ffc1){logger[_0xd9e3('0x1f')](_0xd9e3('0x2b'),_0x15ffc1);return request({'uri':util['format']('%s/api/v2/contacts',_0x783af9[_0xd9e3('0x1c')]),'qs':{'phone':_0x15ffc1}})[_0xd9e3('0x1e')](function(_0x49d731){if(_0x49d731[_0xd9e3('0x22')]){logger[_0xd9e3('0x1f')](_0xd9e3('0x2c'));return _['find'](_0x49d731,{'phone':_0x15ffc1});}else{logger['info'](_0xd9e3('0x2d'));return request({'uri':util[_0xd9e3('0x1a')]('%s/api/v2/contacts',_0x783af9[_0xd9e3('0x1c')]),'method':'POST','body':{'name':_0x3e0381,'phone':_0x15ffc1}})[_0xd9e3('0x1e')](function(_0x3f13eb){logger[_0xd9e3('0x1f')]('Enduser\x20created.');return _0x3f13eb;});}});}function getAuth(_0x551b7c){return util[_0xd9e3('0x1a')]('Basic\x20%s',new Buffer(_0x551b7c[_0xd9e3('0x2e')]+':X')[_0xd9e3('0x2f')](_0xd9e3('0x30')));}function request(_0x118d9d){logger[_0xd9e3('0x31')](_0xd9e3('0x32'),JSON[_0xd9e3('0x33')](_0x118d9d));return rp(_['defaults'](_0x118d9d,{'method':_0xd9e3('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x1ca962,_0x230d83){var _0x1b41bb=[];if(_0x1ca962&&_0x1ca962[_0xd9e3('0x22')]>0x0){_0x1b41bb=_[_0xd9e3('0x35')](_0x1ca962,_0x230d83);}return _0x1b41bb;}function getCustomFields(_0x308303,_0x178be3){var _0x5c0b3b=[];var _0x47882b={'custom_fields':[]};if(_0x308303[_0xd9e3('0x22')]>0x0){_[_0xd9e3('0x36')](_0x308303,function(_0x15c53c){if(_[_0xd9e3('0x37')]([_0xd9e3('0x38'),'picklist'],_0x15c53c[_0xd9e3('0x39')])&&_0x15c53c[_0xd9e3('0x3a')]&&!_0x15c53c[_0xd9e3('0x3b')]){_0x47882b[_0x15c53c[_0xd9e3('0x3a')][_0xd9e3('0x3c')]()]=_0x15c53c['content'][_0xd9e3('0x2f')]();}else if(_[_0xd9e3('0x37')]([_0xd9e3('0x38'),_0xd9e3('0x3d')],_0x15c53c[_0xd9e3('0x39')])&&_0x15c53c[_0xd9e3('0x3e')]&&_0x15c53c[_0xd9e3('0x3b')]){_0x47882b[_0xd9e3('0x16')][_0xd9e3('0x3f')]({'id':_0x15c53c[_0xd9e3('0x3e')],'value':_0x15c53c[_0xd9e3('0x40')][_0xd9e3('0x2f')]()});}else if(_0x15c53c[_0xd9e3('0x39')]===_0xd9e3('0x41')&&_0x15c53c[_0xd9e3('0x42')]&&_0x15c53c[_0xd9e3('0x3e')]&&_0x15c53c[_0xd9e3('0x3b')]){_0x178be3[_0x15c53c[_0xd9e3('0x42')]]&&_0x47882b['custom_fields']['push']({'id':_0x15c53c[_0xd9e3('0x3e')],'value':_0x178be3[_0x15c53c['variableName']][_0xd9e3('0x2f')]()});}else if(_0x15c53c[_0xd9e3('0x39')]===_0xd9e3('0x43')&&_0x15c53c['Variable']&&_0x15c53c[_0xd9e3('0x44')][_0xd9e3('0x15')]&&_0x15c53c['idField']&&_0x15c53c[_0xd9e3('0x3b')]){_0x178be3[_0x15c53c[_0xd9e3('0x44')][_0xd9e3('0x15')][_0xd9e3('0x3c')]()]&&_0x47882b[_0xd9e3('0x16')][_0xd9e3('0x3f')]({'id':_0x15c53c['idField'],'value':_0x178be3[_0x15c53c['Variable'][_0xd9e3('0x15')][_0xd9e3('0x3c')]()][_0xd9e3('0x2f')]()});}});}return _0x47882b;}exports['queue']=function(_0xf39650,_0x53381b,_0x212e5b,_0x1c5f62,_0x447b72,_0x1824e3){var _0x3f059f,_0x57d62f;_0x1824e3[_0xd9e3('0x1c')]=intUtil[_0xd9e3('0x45')](_0x1824e3['remoteUri']);_0x1824e3['serverUrl']=intUtil[_0xd9e3('0x45')](_0x1824e3['serverUrl']);if(_0x447b72&&_0x447b72[_0xd9e3('0x46')]){logger['info'](_0xd9e3('0x47'),_0xd9e3('0x48'));_0x53381b[_0xd9e3('0x49')]=util[_0xd9e3('0x1a')](_0xd9e3('0x4a'),_0x1824e3[_0xd9e3('0x4b')],_0x53381b[_0xd9e3('0x4c')],md5(_0x53381b[_0xd9e3('0x4c')]));}else{_0x53381b[_0xd9e3('0x49')]='';}headers[_0xd9e3('0x4d')]=getAuth(_0x1824e3);return getUser(_0x1824e3,_0x1c5f62['email'])[_0xd9e3('0x1e')](function(_0x426cbf){_0x3f059f=_0x426cbf;logger[_0xd9e3('0x1f')](_0xd9e3('0x4e'),_0x3f059f['id']);return getEndUser(_0x1824e3,_0x53381b['calleridname'],_0x53381b['calleridnum']);})['then'](function(_0x4de746){_0x57d62f=_0x4de746;logger['info']('The\x20Enduser\x20ID\x20is:',_0x57d62f['id']);return getTicket(_0x1824e3,_0x3f059f,_0x57d62f,_0x212e5b,_0x53381b);})['then'](function(_0x197848){if(_0x197848&&_0x197848['id']){logger['info'](_0xd9e3('0x20'));logger[_0xd9e3('0x1f')](_0xd9e3('0x4f'),_0x197848['id']);logger[_0xd9e3('0x1f')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd9e3('0x1a')](_0xd9e3('0x50'),_0x1c5f62[_0xd9e3('0x15')]),_0xd9e3('0x51'),{'uri':util[_0xd9e3('0x1a')](_0xd9e3('0x52'),_0x1824e3[_0xd9e3('0x1c')],_0x197848['id'])});}})[_0xd9e3('0x53')](function(_0x4385ce){logger[_0xd9e3('0x54')](_0xd9e3('0x47'),JSON['stringify'](_0x4385ce));});};exports[_0xd9e3('0x55')]=function(_0x891e58,_0x5debb3,_0x1d308b,_0x42a902,_0x1030d1,_0x27409b,_0x122150){var _0x56bcbf,_0x106750;_0x27409b[_0xd9e3('0x1c')]=intUtil[_0xd9e3('0x45')](_0x27409b[_0xd9e3('0x1c')]);_0x27409b['serverUrl']=intUtil['stripTrailingSlash'](_0x27409b[_0xd9e3('0x4b')]);if(_0x122150&&_0x122150['recordingFormat']&&_0x122150['recordingFormat']!==_0xd9e3('0x56')){logger[_0xd9e3('0x1f')](_0xd9e3('0x57'),_0xd9e3('0x48'));_0x5debb3['recordingURL']=util[_0xd9e3('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x27409b[_0xd9e3('0x4b')],_0x5debb3[_0xd9e3('0x4c')],md5(_0x5debb3[_0xd9e3('0x4c')]));}headers['Authorization']=getAuth(_0x27409b);return getUser(_0x27409b,_0x42a902['email'])[_0xd9e3('0x1e')](function(_0x40cf83){_0x56bcbf=_0x40cf83;logger[_0xd9e3('0x1f')](_0xd9e3('0x4e'),_0x56bcbf['id']);return getEndUser(_0x27409b,_0x5debb3[_0xd9e3('0x58')],_0x5debb3[_0xd9e3('0x59')]);})['then'](function(_0x3519e2){_0x106750=_0x3519e2;logger['info'](_0xd9e3('0x5a'),_0x106750['id']);return getTicket(_0x27409b,_0x56bcbf,_0x106750,_0x1d308b,_0x5debb3);})[_0xd9e3('0x1e')](function(_0x5b3702){if(_0x5b3702&&_0x5b3702['id']){logger[_0xd9e3('0x1f')](_0xd9e3('0x20'));logger[_0xd9e3('0x1f')]('The\x20Ticket\x20ID\x20is:',_0x5b3702['id']);logger[_0xd9e3('0x1f')](_0xd9e3('0x57'),_0xd9e3('0x5b'));emit(util[_0xd9e3('0x1a')](_0xd9e3('0x50'),_0x42a902['name']),_0xd9e3('0x51'),{'uri':util['format'](_0xd9e3('0x52'),_0x27409b[_0xd9e3('0x1c')],_0x5b3702['id'])});}})[_0xd9e3('0x53')](function(_0x448e95){logger[_0xd9e3('0x54')](_0xd9e3('0x57'),JSON['stringify'](_0x448e95));});};exports[_0xd9e3('0x5c')]=function(_0x61fef8,_0x56d60d,_0x162898,_0x5c8bff,_0x39a8a6,_0x14d61d){var _0x2357f0,_0x384d53;_0x14d61d[_0xd9e3('0x1c')]=intUtil[_0xd9e3('0x45')](_0x14d61d[_0xd9e3('0x1c')]);_0x14d61d[_0xd9e3('0x4b')]=intUtil[_0xd9e3('0x45')](_0x14d61d[_0xd9e3('0x4b')]);if(_0x39a8a6&&_0x39a8a6['monitor_format']){logger[_0xd9e3('0x1f')]('['+_0x56d60d[_0xd9e3('0x5d')][_0xd9e3('0x5e')]()+']',_0xd9e3('0x48'));_0x56d60d[_0xd9e3('0x49')]=util[_0xd9e3('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x14d61d[_0xd9e3('0x4b')],_0x56d60d['uniqueid'],md5(_0x56d60d['uniqueid']));}else{_0x56d60d['recordingURL']='';}headers[_0xd9e3('0x4d')]=getAuth(_0x14d61d);return getUser(_0x14d61d,'')[_0xd9e3('0x1e')](function(_0x586e1f){_0x2357f0=_0x586e1f;logger[_0xd9e3('0x1f')](_0xd9e3('0x4e'),_0x2357f0['id']);return getEndUser(_0x14d61d,_0x56d60d[_0xd9e3('0xf')],_0x56d60d['calleridnum']);})[_0xd9e3('0x1e')](function(_0x511bdd){_0x384d53=_0x511bdd;logger['info'](_0xd9e3('0x5a'),_0x384d53['id']);return getTicket(_0x14d61d,_0x2357f0,_0x384d53,_0x162898,_0x56d60d);})[_0xd9e3('0x1e')](function(_0x2d71ee){if(_0x2d71ee){logger[_0xd9e3('0x1f')](_0xd9e3('0x20'));logger[_0xd9e3('0x1f')](_0xd9e3('0x4f'),_0x2d71ee['id']);}})['catch'](function(_0x3b0a24){logger['error']('['+_0x56d60d[_0xd9e3('0x5d')][_0xd9e3('0x5e')]()+']',JSON['stringify'](_0x3b0a24));});};
\ No newline at end of file
index 38b5622..660a3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf890=['Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','Contact','YYYY-MM-DDTHH:mm:ss','add','ticketId','Task\x20created:','/contacts/','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','length','email','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','toUpperCase','GET','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','adminEmail','catch','error','message','&entities=contact','find','contacts','format'];(function(_0x53964a,_0x3ec4f8){var _0x245343=function(_0x1ec4ce){while(--_0x1ec4ce){_0x53964a['push'](_0x53964a['shift']());}};_0x245343(++_0x3ec4f8);}(_0xf890,0x182));var _0x0f89=function(_0x161e42,_0x3fb34c){_0x161e42=_0x161e42-0x0;var _0x3d231f=_0xf890[_0x161e42];return _0x3d231f;};'use strict';var _=require('lodash');var rp=require(_0x0f89('0x0'));var md5=require(_0x0f89('0x1'));var util=require(_0x0f89('0x2'));var moment=require('moment');var Promise=require(_0x0f89('0x3'));var Redis=require(_0x0f89('0x4'));var intUtil=require(_0x0f89('0x5'));var config=require(_0x0f89('0x6'));var logger=require(_0x0f89('0x7'))(_0x0f89('0x8'));config['redis']=_[_0x0f89('0x9')](config[_0x0f89('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x0f89('0xb'))(new Redis(config[_0x0f89('0xa')]));function getAdminId(_0xbbad70,_0x170b81,_0xb9c1e9,_0x2eb411){return new Promise(function(_0x546c94,_0x5d94b4){var _0x49c2b0=![];var _0x43540b={'method':'GET','uri':_0x2eb411+_0x0f89('0xc'),'json':!![]};_0x43540b[_0x0f89('0xd')]=_0xb9c1e9;logger[_0x0f89('0xe')](_0x0f89('0xf'));return rp(_0x43540b)[_0x0f89('0x10')](function(_0x3dfdd5){if(_0x3dfdd5){var _0xc473df=_0x3dfdd5['users'];var _0x3aaf7c=null;for(_0x3aaf7c=0x0;_0x3aaf7c<_0xc473df[_0x0f89('0x11')];_0x3aaf7c++){if(_0xc473df[_0x3aaf7c][_0x0f89('0x12')]===_0xbbad70['adminEmail']){_0xbbad70['adminId']=_0xc473df[_0x3aaf7c]['id'];_0x49c2b0=!![];}}if(_0x49c2b0){logger[_0x0f89('0xe')](_0x0f89('0x13'),_0xbbad70[_0x0f89('0x14')]);_0x546c94(_0xbbad70);}else{_0x5d94b4({'statusCode':0x194,'message':_0x0f89('0x15')});}}else{_0x5d94b4({'statusCode':0x194,'message':_0x0f89('0x15')});}})['catch'](function(_0x528f17){logger['error']('['+[_0x170b81[_0x0f89('0x16')]()]+']',_0x528f17['message']);_0x5d94b4(_0x528f17);});});}function getUser(_0x565d2b,_0x42e72b,_0x2bc0cf){return function(_0x4b7b40){return new Promise(function(_0x5623a3,_0x427407){var _0x14dc64={'method':_0x0f89('0x17'),'uri':_0x2bc0cf+_0x0f89('0xc'),'json':!![]};_0x14dc64[_0x0f89('0xd')]=_0x42e72b;logger[_0x0f89('0xe')](_0x0f89('0x18'));return rp(_0x14dc64)[_0x0f89('0x10')](function(_0x2aaee2){if(_0x2aaee2){var _0x189133=_0x2aaee2[_0x0f89('0x19')];var _0x1359b7=![];var _0x3e5c20=null;if(_0x4b7b40[_0x0f89('0x1a')]!==null){logger[_0x0f89('0xe')](_0x0f89('0x1b'),_0x4b7b40['agentEmail']);_0x4b7b40[_0x0f89('0x1c')]=_0x4b7b40[_0x0f89('0x1a')];for(_0x3e5c20=0x0;_0x3e5c20<_0x189133[_0x0f89('0x11')];_0x3e5c20++){if(_0x189133[_0x3e5c20][_0x0f89('0x12')]===_0x4b7b40[_0x0f89('0x1a')]){_0x1359b7=!![];_0x4b7b40['userId']=_0x189133[_0x3e5c20]['id'];logger[_0x0f89('0xe')]('User\x20found:',_0x4b7b40[_0x0f89('0x1d')]);}}}if(!_0x1359b7){logger['info'](_0x0f89('0x1e'));_0x4b7b40[_0x0f89('0x1c')]=_0x4b7b40[_0x0f89('0x1f')];_0x4b7b40[_0x0f89('0x1d')]=_0x4b7b40['adminId'];_0x1359b7=!![];}if(_0x1359b7){_0x5623a3(_0x4b7b40);}else{_0x427407({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x427407({'statusCode':0x194,'message':_0x0f89('0x15')});}})[_0x0f89('0x20')](function(_0x4c85ca){logger[_0x0f89('0x21')]('['+[_0x565d2b[_0x0f89('0x16')]()]+']',_0x4c85ca[_0x0f89('0x22')]);_0x427407(_0x4c85ca);});});};}function searchContact(_0x4123bf,_0x457e1a,_0x31717b,_0x563f62){return new Promise(function(_0x4651b6,_0x370da7){var _0x252024={'method':'GET','headers':_0x457e1a,'uri':_0x4123bf+'/api/lookup?q='+_0x563f62+'&f='+_0x31717b+_0x0f89('0x23'),'json':!![]};rp(_0x252024)[_0x0f89('0x10')](function(_0x2a33b1){var _0x5c9d7a=_[_0x0f89('0x24')](_0x2a33b1[_0x0f89('0x25')]['contacts'],[_0x31717b,_0x563f62]);_0x4651b6(_0x5c9d7a);})['catch'](function(_0x3d599c){_0x370da7(_0x3d599c);});});}function getEndUser(_0x241201,_0x50fe65,_0x4b51c0){return function(_0x38d96b){return new Promise(function(_0x2ecd06,_0x4c3f9a){logger[_0x0f89('0xe')](util[_0x0f89('0x26')](_0x0f89('0x27'),_0x38d96b[_0x0f89('0x28')]));searchContact(_0x4b51c0,_0x50fe65,'mobile_number',_0x38d96b[_0x0f89('0x28')])[_0x0f89('0x10')](function(_0x13b52c){if(_0x13b52c){_0x38d96b[_0x0f89('0x29')]=_0x13b52c['id'];logger[_0x0f89('0xe')](_0x0f89('0x2a'),_0x38d96b[_0x0f89('0x29')]);return _0x2ecd06(_0x38d96b);}searchContact(_0x4b51c0,_0x50fe65,'work_number',_0x38d96b[_0x0f89('0x28')])[_0x0f89('0x10')](function(_0x37b455){if(_0x37b455){_0x38d96b[_0x0f89('0x29')]=_0x37b455['id'];logger[_0x0f89('0xe')](_0x0f89('0x2b'),_0x38d96b[_0x0f89('0x29')]);return _0x2ecd06(_0x38d96b);}createEndUser(_0x38d96b,_0x241201,_0x50fe65,_0x4b51c0)[_0x0f89('0x10')](function(_0x1eee74){logger[_0x0f89('0xe')](_0x0f89('0x2c'),_0x1eee74[_0x0f89('0x29')]);return _0x2ecd06(_0x1eee74);});});})[_0x0f89('0x20')](function(_0x21eeb9){_0x4c3f9a(_0x21eeb9);});});};}function createEndUser(_0x4693da,_0x3001e4,_0x156583,_0x3cdd02){return new Promise(function(_0x4456de,_0x2feeae){var _0x1a5f2c=moment();var _0x26ff53={'method':_0x0f89('0x2d'),'uri':_0x3cdd02+'/api/contacts','body':{'contact':{'last_name':_0x4693da['contactNumber'],'work_number':_0x4693da['contactNumber'],'mobile_number':_0x4693da[_0x0f89('0x28')],'owner_id':_0x4693da[_0x0f89('0x1d')],'created_at':_0x1a5f2c[_0x0f89('0x26')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x26ff53['headers']=_0x156583;logger[_0x0f89('0xe')](_0x0f89('0x2e'));return rp(_0x26ff53)[_0x0f89('0x10')](function(_0x450a1a){_0x4693da[_0x0f89('0x29')]=_0x450a1a[_0x0f89('0x2f')]['id'];_0x4456de(_0x4693da);})[_0x0f89('0x20')](function(_0x6c7447){logger[_0x0f89('0x21')]('['+[_0x3001e4[_0x0f89('0x16')]()]+']',_0x6c7447['message']);_0x2feeae(_0x6c7447[_0x0f89('0x22')]);});});}function getTicket(_0x47e4b6,_0x224655,_0x3f58f1,_0x9739c2,_0x3aa7f4){return function(_0x4b7047){logger[_0x0f89('0xe')](_0x0f89('0x30'));return new Promise(function(_0x4b54e4,_0x14f1ff){var _0x537e51=moment();var _0x4dd87c={'method':'POST','uri':_0x3f58f1+_0x0f89('0x31'),'body':{'title':intUtil[_0x0f89('0x32')](_0x9739c2['Subjects'],_0x3aa7f4,'\x20'),'description':intUtil['getString'](_0x9739c2[_0x0f89('0x33')],_0x3aa7f4,'\x0a'),'owner_id':_0x4b7047['userId'],'creater_id':_0x4b7047['adminId'],'targetable_id':_0x4b7047['endUserId'],'targetable_type':_0x0f89('0x34'),'created_at':_0x537e51[_0x0f89('0x26')](_0x0f89('0x35')),'due_date':_0x537e51[_0x0f89('0x36')](0x1e,'m')[_0x0f89('0x26')](_0x0f89('0x35'))},'json':!![]};_0x4dd87c[_0x0f89('0xd')]=_0x224655;return rp(_0x4dd87c)['then'](function(_0x22d179){_0x4b7047[_0x0f89('0x37')]=_0x22d179['task']['id'];logger[_0x0f89('0xe')](_0x0f89('0x38'),_0x4b7047['ticketId']);_0x4b54e4(_0x4b7047);})[_0x0f89('0x20')](function(_0x936a4){logger[_0x0f89('0x21')]('['+[_0x47e4b6[_0x0f89('0x16')]()]+']',_0x936a4[_0x0f89('0x22')]);_0x14f1ff(_0x936a4['message']);});});};}function emit(_0x4aa4b6,_0x19e7f5,_0x5acf9b){var _0x342e78={'uri':_0x4aa4b6+_0x0f89('0x39')+_0x5acf9b};io['to'](util[_0x0f89('0x26')]('user:%s',_0x19e7f5))[_0x0f89('0x3a')](_0x0f89('0x3b'),_0x342e78);}exports['cs']=function(_0x4612ae,_0x26a143,_0x148920,_0x11fadc,_0x1fda5d,_0x376d3d,_0x203144,_0x195c79){var _0x452435={};var _0x5be5b7={'Authorization':_0x0f89('0x3c')+_0x376d3d['apiKey']};_0x376d3d[_0x0f89('0x3d')]=intUtil[_0x0f89('0x3e')](_0x376d3d[_0x0f89('0x3d')]);_0x376d3d[_0x0f89('0x3f')]=intUtil['stripTrailingSlash'](_0x376d3d['serverUrl']);var _0xb9f940=_0x376d3d[_0x0f89('0x3d')];_0x452435[_0x0f89('0x1f')]=_0x376d3d[_0x0f89('0x40')];_0x452435[_0x0f89('0x28')]=_0x195c79[_0x0f89('0x41')]()==='outbound'?_0x26a143[_0x0f89('0x42')]:_0x26a143[_0x0f89('0x43')];_0x452435[_0x0f89('0x44')]=_0x195c79===_0x0f89('0x45')||_0x195c79===_0x0f89('0x46')?'queue':_0x0f89('0x47');if(_0x11fadc){_0x452435[_0x0f89('0x1a')]=_0x11fadc['email'];}var _0x35e051=util[_0x0f89('0x26')](_0x0f89('0x48'),_0x376d3d['serverUrl'],_0x26a143[_0x0f89('0x49')],md5(_0x26a143[_0x0f89('0x49')]));if(_0x1fda5d&&_0x1fda5d[_0x0f89('0x4a')]){logger[_0x0f89('0xe')]('[QUEUE]',_0x0f89('0x4b'));_0x26a143[_0x0f89('0x4c')]=_0x35e051;}else if(_0x203144&&_0x203144[_0x0f89('0x4d')]&&_0x203144[_0x0f89('0x4d')]!==_0x0f89('0x4e')){logger['info'](_0x0f89('0x4f'),_0x0f89('0x4b'));_0x26a143['recordingURL']=_0x35e051;}else{_0x26a143[_0x0f89('0x4c')]='';}return getAdminId(_0x452435,_0x195c79,_0x5be5b7,_0xb9f940)[_0x0f89('0x10')](getUser(_0x195c79,_0x5be5b7,_0xb9f940))['then'](getEndUser(_0x195c79,_0x5be5b7,_0xb9f940))['then'](getTicket(_0x195c79,_0x5be5b7,_0xb9f940,_0x148920,_0x26a143))['then'](function(_0x2638e){logger[_0x0f89('0xe')](util[_0x0f89('0x26')](_0x0f89('0x50'),_0x2638e[_0x0f89('0x37')]));if(_0x195c79!==_0x0f89('0x46')){logger['info']('['+[_0x195c79[_0x0f89('0x16')]()]+']',_0x0f89('0x51'));emit(_0xb9f940,_0x11fadc[_0x0f89('0x52')],_0x2638e[_0x0f89('0x29')]);}})['catch'](function(_0x52caf6){logger[_0x0f89('0x21')]('['+[_0x195c79['toUpperCase']()]+_0x0f89('0x53'),util[_0x0f89('0x54')](_0x52caf6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xff1d=['Admin\x20selected','catch','/api/lookup?q=','&f=','find','contacts','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Subjects','Descriptions','Contact','ticketId','task','/contacts/','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','request-promise','util','moment','bluebird','ioredis','./util','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','userId','User\x20found:'];(function(_0x37623b,_0x36b529){var _0x475880=function(_0x34a904){while(--_0x34a904){_0x37623b['push'](_0x37623b['shift']());}};_0x475880(++_0x36b529);}(_0xff1d,0x1b0));var _0xdff1=function(_0x23f9bc,_0x1f884b){_0x23f9bc=_0x23f9bc-0x0;var _0x30d78c=_0xff1d[_0x23f9bc];return _0x30d78c;};'use strict';var _=require('lodash');var rp=require(_0xdff1('0x0'));var md5=require('md5');var util=require(_0xdff1('0x1'));var moment=require(_0xdff1('0x2'));var Promise=require(_0xdff1('0x3'));var Redis=require(_0xdff1('0x4'));var intUtil=require(_0xdff1('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('freshsales');config[_0xdff1('0x6')]=_[_0xdff1('0x7')](config[_0xdff1('0x6')],{'host':_0xdff1('0x8'),'port':0x18eb});var io=require(_0xdff1('0x9'))(new Redis(config['redis']));function getAdminId(_0x5b15c4,_0x53e799,_0x4a84f9,_0x194cab){return new Promise(function(_0xc0c0f2,_0x367e40){var _0x181d82=![];var _0x424041={'method':_0xdff1('0xa'),'uri':_0x194cab+_0xdff1('0xb'),'json':!![]};_0x424041[_0xdff1('0xc')]=_0x4a84f9;logger[_0xdff1('0xd')](_0xdff1('0xe'));return rp(_0x424041)[_0xdff1('0xf')](function(_0x226458){if(_0x226458){var _0x332ac2=_0x226458['users'];var _0x3c7c95=null;for(_0x3c7c95=0x0;_0x3c7c95<_0x332ac2['length'];_0x3c7c95++){if(_0x332ac2[_0x3c7c95][_0xdff1('0x10')]===_0x5b15c4[_0xdff1('0x11')]){_0x5b15c4['adminId']=_0x332ac2[_0x3c7c95]['id'];_0x181d82=!![];}}if(_0x181d82){logger[_0xdff1('0xd')]('Admin\x20found:',_0x5b15c4[_0xdff1('0x12')]);_0xc0c0f2(_0x5b15c4);}else{_0x367e40({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x367e40({'statusCode':0x194,'message':_0xdff1('0x13')});}})['catch'](function(_0x12a722){logger[_0xdff1('0x14')]('['+[_0x53e799[_0xdff1('0x15')]()]+']',_0x12a722[_0xdff1('0x16')]);_0x367e40(_0x12a722);});});}function getUser(_0x4c3c1c,_0x4dfe23,_0x546ca4){return function(_0x2b074c){return new Promise(function(_0x1a709a,_0x2c8973){var _0x156d81={'method':_0xdff1('0xa'),'uri':_0x546ca4+_0xdff1('0xb'),'json':!![]};_0x156d81[_0xdff1('0xc')]=_0x4dfe23;logger[_0xdff1('0xd')]('Getting\x20user\x20list');return rp(_0x156d81)['then'](function(_0x2d341d){if(_0x2d341d){var _0x54edf2=_0x2d341d[_0xdff1('0x17')];var _0x3052fe=![];var _0x78d32f=null;if(_0x2b074c[_0xdff1('0x18')]!==null){logger[_0xdff1('0xd')](_0xdff1('0x19'),_0x2b074c[_0xdff1('0x18')]);_0x2b074c[_0xdff1('0x1a')]=_0x2b074c[_0xdff1('0x18')];for(_0x78d32f=0x0;_0x78d32f<_0x54edf2[_0xdff1('0x1b')];_0x78d32f++){if(_0x54edf2[_0x78d32f][_0xdff1('0x10')]===_0x2b074c[_0xdff1('0x18')]){_0x3052fe=!![];_0x2b074c[_0xdff1('0x1c')]=_0x54edf2[_0x78d32f]['id'];logger['info'](_0xdff1('0x1d'),_0x2b074c[_0xdff1('0x1c')]);}}}if(!_0x3052fe){logger[_0xdff1('0xd')](_0xdff1('0x1e'));_0x2b074c[_0xdff1('0x1a')]=_0x2b074c[_0xdff1('0x11')];_0x2b074c['userId']=_0x2b074c[_0xdff1('0x12')];_0x3052fe=!![];}if(_0x3052fe){_0x1a709a(_0x2b074c);}else{_0x2c8973({'statusCode':0x194,'message':_0xdff1('0x13')});}}else{_0x2c8973({'statusCode':0x194,'message':_0xdff1('0x13')});}})[_0xdff1('0x1f')](function(_0xc090de){logger['error']('['+[_0x4c3c1c[_0xdff1('0x15')]()]+']',_0xc090de['message']);_0x2c8973(_0xc090de);});});};}function searchContact(_0x152b1c,_0x55182e,_0xa35799,_0x410e0d){return new Promise(function(_0x4e04e0,_0xa076e7){var _0x3d31f7={'method':_0xdff1('0xa'),'headers':_0x55182e,'uri':_0x152b1c+_0xdff1('0x20')+_0x410e0d+_0xdff1('0x21')+_0xa35799+'&entities=contact','json':!![]};rp(_0x3d31f7)[_0xdff1('0xf')](function(_0x47b33f){var _0x5de463=_[_0xdff1('0x22')](_0x47b33f[_0xdff1('0x23')][_0xdff1('0x23')],[_0xa35799,_0x410e0d]);_0x4e04e0(_0x5de463);})['catch'](function(_0x2dbc6e){_0xa076e7(_0x2dbc6e);});});}function getEndUser(_0x1b5281,_0x21ac46,_0x1a44cf){return function(_0x4ce7ba){return new Promise(function(_0x38be1b,_0x144b5a){logger['info'](util['format']('Searching\x20contact\x20with\x20phone\x20%s',_0x4ce7ba[_0xdff1('0x24')]));searchContact(_0x1a44cf,_0x21ac46,_0xdff1('0x25'),_0x4ce7ba[_0xdff1('0x24')])[_0xdff1('0xf')](function(_0x4bc120){if(_0x4bc120){_0x4ce7ba['endUserId']=_0x4bc120['id'];logger['info'](_0xdff1('0x26'),_0x4ce7ba[_0xdff1('0x27')]);return _0x38be1b(_0x4ce7ba);}searchContact(_0x1a44cf,_0x21ac46,_0xdff1('0x28'),_0x4ce7ba[_0xdff1('0x24')])[_0xdff1('0xf')](function(_0x28ab23){if(_0x28ab23){_0x4ce7ba[_0xdff1('0x27')]=_0x28ab23['id'];logger[_0xdff1('0xd')](_0xdff1('0x29'),_0x4ce7ba[_0xdff1('0x27')]);return _0x38be1b(_0x4ce7ba);}createEndUser(_0x4ce7ba,_0x1b5281,_0x21ac46,_0x1a44cf)[_0xdff1('0xf')](function(_0x4c207d){logger['info'](_0xdff1('0x2a'),_0x4c207d['endUserId']);return _0x38be1b(_0x4c207d);});});})['catch'](function(_0x515e32){_0x144b5a(_0x515e32);});});};}function createEndUser(_0xd63740,_0x21d576,_0x5528aa,_0x5d2d54){return new Promise(function(_0x11d25f,_0x3af81e){var _0x550da0=moment();var _0x3adbe5={'method':_0xdff1('0x2b'),'uri':_0x5d2d54+_0xdff1('0x2c'),'body':{'contact':{'last_name':_0xd63740[_0xdff1('0x24')],'work_number':_0xd63740[_0xdff1('0x24')],'mobile_number':_0xd63740[_0xdff1('0x24')],'owner_id':_0xd63740[_0xdff1('0x1c')],'created_at':_0x550da0[_0xdff1('0x2d')](_0xdff1('0x2e'))}},'json':!![]};_0x3adbe5[_0xdff1('0xc')]=_0x5528aa;logger[_0xdff1('0xd')](_0xdff1('0x2f'));return rp(_0x3adbe5)['then'](function(_0x211c6f){_0xd63740[_0xdff1('0x27')]=_0x211c6f[_0xdff1('0x30')]['id'];_0x11d25f(_0xd63740);})['catch'](function(_0x365d1a){logger[_0xdff1('0x14')]('['+[_0x21d576['toUpperCase']()]+']',_0x365d1a[_0xdff1('0x16')]);_0x3af81e(_0x365d1a['message']);});});}function getTicket(_0x55a493,_0x48fa49,_0x44746c,_0x3c244d,_0x31c3b1){return function(_0x500949){logger[_0xdff1('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x325dba,_0x44e4b2){var _0x516046=moment();var _0xa3a402={'method':_0xdff1('0x2b'),'uri':_0x44746c+'/api/tasks','body':{'title':intUtil[_0xdff1('0x31')](_0x3c244d[_0xdff1('0x32')],_0x31c3b1,'\x20'),'description':intUtil['getString'](_0x3c244d[_0xdff1('0x33')],_0x31c3b1,'\x0a'),'owner_id':_0x500949[_0xdff1('0x1c')],'creater_id':_0x500949['adminId'],'targetable_id':_0x500949['endUserId'],'targetable_type':_0xdff1('0x34'),'created_at':_0x516046[_0xdff1('0x2d')](_0xdff1('0x2e')),'due_date':_0x516046['add'](0x1e,'m')['format'](_0xdff1('0x2e'))},'json':!![]};_0xa3a402[_0xdff1('0xc')]=_0x48fa49;return rp(_0xa3a402)['then'](function(_0x2db016){_0x500949[_0xdff1('0x35')]=_0x2db016[_0xdff1('0x36')]['id'];logger[_0xdff1('0xd')]('Task\x20created:',_0x500949[_0xdff1('0x35')]);_0x325dba(_0x500949);})[_0xdff1('0x1f')](function(_0x56f7d4){logger[_0xdff1('0x14')]('['+[_0x55a493[_0xdff1('0x15')]()]+']',_0x56f7d4[_0xdff1('0x16')]);_0x44e4b2(_0x56f7d4[_0xdff1('0x16')]);});});};}function emit(_0x9827ce,_0x5e5308,_0x368f19){var _0x5a4cfa={'uri':_0x9827ce+_0xdff1('0x37')+_0x368f19};io['to'](util[_0xdff1('0x2d')]('user:%s',_0x5e5308))['emit']('trigger:browser:url',_0x5a4cfa);}exports['cs']=function(_0x140dc3,_0x475792,_0x1fd9c5,_0xd1e0c7,_0x3ff867,_0x223e64,_0x1c8e6e,_0x90c006){var _0x1122fa={};var _0x113aea={'Authorization':_0xdff1('0x38')+_0x223e64['apiKey']};_0x223e64[_0xdff1('0x39')]=intUtil[_0xdff1('0x3a')](_0x223e64[_0xdff1('0x39')]);_0x223e64[_0xdff1('0x3b')]=intUtil[_0xdff1('0x3a')](_0x223e64['serverUrl']);var _0x5e9a9e=_0x223e64[_0xdff1('0x39')];_0x1122fa[_0xdff1('0x11')]=_0x223e64[_0xdff1('0x3c')];_0x1122fa['contactNumber']=_0x90c006[_0xdff1('0x3d')]()===_0xdff1('0x3e')?_0x475792['destcalleridnum']:_0x475792[_0xdff1('0x3f')];_0x1122fa[_0xdff1('0x40')]=_0x90c006===_0xdff1('0x41')||_0x90c006==='unmanaged'?'queue':'outbound';if(_0xd1e0c7){_0x1122fa[_0xdff1('0x18')]=_0xd1e0c7[_0xdff1('0x10')];}var _0x13a874=util['format'](_0xdff1('0x42'),_0x223e64[_0xdff1('0x3b')],_0x475792[_0xdff1('0x43')],md5(_0x475792[_0xdff1('0x43')]));if(_0x3ff867&&_0x3ff867[_0xdff1('0x44')]){logger[_0xdff1('0xd')]('[QUEUE]',_0xdff1('0x45'));_0x475792['recordingURL']=_0x13a874;}else if(_0x1c8e6e&&_0x1c8e6e['recordingFormat']&&_0x1c8e6e['recordingFormat']!==_0xdff1('0x46')){logger[_0xdff1('0xd')](_0xdff1('0x47'),'Recording\x20is\x20enabled!');_0x475792[_0xdff1('0x48')]=_0x13a874;}else{_0x475792[_0xdff1('0x48')]='';}return getAdminId(_0x1122fa,_0x90c006,_0x113aea,_0x5e9a9e)['then'](getUser(_0x90c006,_0x113aea,_0x5e9a9e))['then'](getEndUser(_0x90c006,_0x113aea,_0x5e9a9e))[_0xdff1('0xf')](getTicket(_0x90c006,_0x113aea,_0x5e9a9e,_0x1fd9c5,_0x475792))[_0xdff1('0xf')](function(_0x2daab8){logger[_0xdff1('0xd')](util['format'](_0xdff1('0x49'),_0x2daab8[_0xdff1('0x35')]));if(_0x90c006!=='unmanaged'){logger['info']('['+[_0x90c006[_0xdff1('0x15')]()]+']',_0xdff1('0x4a'));emit(_0x5e9a9e,_0xd1e0c7[_0xdff1('0x4b')],_0x2daab8[_0xdff1('0x27')]);}})[_0xdff1('0x1f')](function(_0x2273d4){logger['error']('['+[_0x90c006['toUpperCase']()]+_0xdff1('0x4c'),util['inspect'](_0x2273d4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0b54601..f7e94d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb0=['util','./zoho','./desk','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','zoho','vtiger','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','unmanaged','freshdesk','desk','dynamics365','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash'];(function(_0x39c953,_0x39cc76){var _0x712eb4=function(_0x254163){while(--_0x254163){_0x39c953['push'](_0x39c953['shift']());}};_0x712eb4(++_0x39cc76);}(_0xdcb0,0x1af));var _0x0dcb=function(_0x31b536,_0x49953c){_0x31b536=_0x31b536-0x0;var _0x30db45=_0xdcb0[_0x31b536];return _0x30db45;};'use strict';var _=require(_0x0dcb('0x0'));var util=require(_0x0dcb('0x1'));var zendesk=require('./zendesk');var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require(_0x0dcb('0x2'));var desk=require(_0x0dcb('0x3'));var vtiger=require('./vtiger');var servicenow=require(_0x0dcb('0x4'));var dynamics365=require(_0x0dcb('0x5'));var freshsales=require(_0x0dcb('0x6'));var integrations=[_0x0dcb('0x7'),_0x0dcb('0x8'),_0x0dcb('0x9'),'freshdesk',_0x0dcb('0xa'),'desk',_0x0dcb('0xb'),'dynamics365',_0x0dcb('0xc'),_0x0dcb('0xd')];exports[_0x0dcb('0xe')]=function(_0x409556,_0x85cc6c,_0x1e5364,_0x340cec,_0x232394,_0x26ee18){if(_0x1e5364){if(_[_0x0dcb('0xf')](integrations,_0x409556[_0x0dcb('0x10')][_0x0dcb('0x11')]())){try{var _0x512d28=null;var _0x4de16b='';var _0x57d057=_0x1e5364[_0x409556['data1']['toLowerCase']()];if(_0x57d057){var _0x134e3e=_0x57d057[_0x409556[_0x0dcb('0x12')]];if(_0x134e3e){var _0x204588=_[_0x0dcb('0x13')](_0x134e3e[_0x0dcb('0x14')],{'id':parseInt(_0x409556[_0x0dcb('0x15')],0xa)});if(_0x204588){if(_0x340cec){if(_0x232394&&_0x85cc6c[_0x0dcb('0x16')]){_0x4de16b='queue';}else if(_0x85cc6c[_0x0dcb('0x17')]){_0x4de16b=_0x0dcb('0x18');}else{console['log']('EVENT\x20UNKNOWN',_0x85cc6c);}}else{_0x4de16b=_0x0dcb('0x19');}switch(_0x409556[_0x0dcb('0x10')]['toLowerCase']()){case'zendesk':zendesk[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0x8'):salesforce[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0x9'):sugarcrm[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0x1a'):freshdesk[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0xa'):zoho[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0x1b'):desk[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0xb'):vtiger[_0x4de16b](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18);break;case _0x0dcb('0xc'):freshsales['cs'](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18,_0x4de16b);break;case'servicenow':servicenow['cs'](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18,_0x4de16b);break;case _0x0dcb('0x1c'):dynamics365['cs'](_0x409556,_0x85cc6c,_0x204588,_0x340cec,_0x232394,_0x134e3e,_0x26ee18,_0x4de16b);break;default:console['log'](_0x0dcb('0x1d'));}}else{_0x512d28=require(_0x0dcb('0x1e'))(_0x409556[_0x0dcb('0x10')][_0x0dcb('0x11')]());_0x512d28[_0x0dcb('0x1f')](_0x0dcb('0x20'),util[_0x0dcb('0x21')](_0x0dcb('0x22'),_0x409556['data1'][_0x0dcb('0x11')](),_0x409556[_0x0dcb('0x15')]));}}else{_0x512d28=require('../../../../config/logger')(_0x409556[_0x0dcb('0x10')][_0x0dcb('0x11')]());_0x512d28[_0x0dcb('0x1f')](_0x0dcb('0x20'),util[_0x0dcb('0x21')](_0x0dcb('0x23'),_0x409556[_0x0dcb('0x10')]['toLowerCase'](),_0x409556[_0x0dcb('0x12')]));}}else{}}catch(_0x234f12){console['error'](_0x234f12);}}}};
\ No newline at end of file
+var _0x0495=['./servicenow','./dynamics365','./freshsales','sugarcrm','freshdesk','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','toLowerCase','data1','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','zendesk','salesforce','zoho','unknown\x20integration','../../../../config/logger','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','data2','error','lodash','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./vtiger'];(function(_0x3277bb,_0x359285){var _0x588c43=function(_0x5a2b05){while(--_0x5a2b05){_0x3277bb['push'](_0x3277bb['shift']());}};_0x588c43(++_0x359285);}(_0x0495,0x9d));var _0x5049=function(_0x4234a8,_0x3ef2b4){_0x4234a8=_0x4234a8-0x0;var _0x42d1b5=_0x0495[_0x4234a8];return _0x42d1b5;};'use strict';var _=require(_0x5049('0x0'));var util=require('util');var zendesk=require(_0x5049('0x1'));var salesforce=require(_0x5049('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0x5049('0x3'));var zoho=require(_0x5049('0x4'));var desk=require(_0x5049('0x5'));var vtiger=require(_0x5049('0x6'));var servicenow=require(_0x5049('0x7'));var dynamics365=require(_0x5049('0x8'));var freshsales=require(_0x5049('0x9'));var integrations=['zendesk','salesforce',_0x5049('0xa'),_0x5049('0xb'),'zoho',_0x5049('0xc'),_0x5049('0xd'),_0x5049('0xe'),_0x5049('0xf'),_0x5049('0x10')];exports[_0x5049('0x11')]=function(_0x160ad3,_0x4faa2c,_0xa753c,_0x358d50,_0x59b7cf,_0x16354b){if(_0xa753c){if(_[_0x5049('0x12')](integrations,_0x160ad3['data1'][_0x5049('0x13')]())){try{var _0x2f2a0e=null;var _0x474c2c='';var _0x2058b1=_0xa753c[_0x160ad3[_0x5049('0x14')][_0x5049('0x13')]()];if(_0x2058b1){var _0x1172fc=_0x2058b1[_0x160ad3['data2']];if(_0x1172fc){var _0xd369a1=_[_0x5049('0x15')](_0x1172fc[_0x5049('0x16')],{'id':parseInt(_0x160ad3[_0x5049('0x17')],0xa)});if(_0xd369a1){if(_0x358d50){if(_0x59b7cf&&_0x4faa2c[_0x5049('0x18')]){_0x474c2c=_0x5049('0x18');}else if(_0x4faa2c[_0x5049('0x19')]){_0x474c2c=_0x5049('0x1a');}else{console[_0x5049('0x1b')](_0x5049('0x1c'),_0x4faa2c);}}else{_0x474c2c=_0x5049('0x1d');}switch(_0x160ad3['data1'][_0x5049('0x13')]()){case _0x5049('0x1e'):zendesk[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0x1f'):salesforce[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0xa'):sugarcrm[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0xb'):freshdesk[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0x20'):zoho[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0xc'):desk[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0xd'):vtiger[_0x474c2c](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b);break;case _0x5049('0xf'):freshsales['cs'](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b,_0x474c2c);break;case _0x5049('0x10'):servicenow['cs'](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b,_0x474c2c);break;case _0x5049('0xe'):dynamics365['cs'](_0x160ad3,_0x4faa2c,_0xd369a1,_0x358d50,_0x59b7cf,_0x1172fc,_0x16354b,_0x474c2c);break;default:console[_0x5049('0x1b')](_0x5049('0x21'));}}else{_0x2f2a0e=require(_0x5049('0x22'))(_0x160ad3[_0x5049('0x14')][_0x5049('0x13')]());_0x2f2a0e['error'](_0x5049('0x23'),util[_0x5049('0x24')](_0x5049('0x25'),_0x160ad3[_0x5049('0x14')][_0x5049('0x13')](),_0x160ad3[_0x5049('0x17')]));}}else{_0x2f2a0e=require('../../../../config/logger')(_0x160ad3[_0x5049('0x14')][_0x5049('0x13')]());_0x2f2a0e['error'](_0x5049('0x23'),util[_0x5049('0x24')](_0x5049('0x26'),_0x160ad3[_0x5049('0x14')][_0x5049('0x13')](),_0x160ad3[_0x5049('0x27')]));}}else{}}catch(_0x1f49c1){console[_0x5049('0x28')](_0x1f49c1);}}}};
\ No newline at end of file
index c366520..78fa89a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9672=['newTab','%s/%s/e','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','outbound','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','error','monitor_format','lastevent','toUpperCase','Fields',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','catch','lodash','moment','md5','util','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','Subjects','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','lead','WhoId','account','contact','ContactId','AccountId','leadId','sobject','create','isNil','User','find','execute','length','Agent\x20%s\x20found.','resolve','Name','info','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','then','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','merge','$or','Contact','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','additionalSearchContact','Account','Phone','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','upperFirst','forEach','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','queue','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s'];(function(_0x19106c,_0x22da38){var _0xbe5a82=function(_0x45d112){while(--_0x45d112){_0x19106c['push'](_0x19106c['shift']());}};_0xbe5a82(++_0x22da38);}(_0x9672,0x8f));var _0x2967=function(_0x5d3a87,_0x1309b5){_0x5d3a87=_0x5d3a87-0x0;var _0x493b54=_0x9672[_0x5d3a87];return _0x493b54;};'use strict';var _=require(_0x2967('0x0'));var rp=require('request-promise');var moment=require(_0x2967('0x1'));var BPromise=require('bluebird');var md5=require(_0x2967('0x2'));var jsforce=require('jsforce');var util=require(_0x2967('0x3'));var Redis=require(_0x2967('0x4'));var intUtil=require(_0x2967('0x5'));var config=require(_0x2967('0x6'));var logger=require('../../../../config/logger')(_0x2967('0x7'));config[_0x2967('0x8')]=_[_0x2967('0x9')](config['redis'],{'host':_0x2967('0xa'),'port':0x18eb});var io=require(_0x2967('0xb'))(new Redis(config[_0x2967('0x8')]));function emit(_0x1b1dd1,_0x51e277,_0x793462){io['to'](_0x1b1dd1)[_0x2967('0xc')](_0x51e277,_0x793462);}function getTicket(_0xf70d6a,_0x459dcd,_0x3cc02a,_0x40de51,_0x4a27f0,_0xcb339f,_0x3e2e30,_0x517e5e){var _0x47c886=Object['assign']({},{'OwnerId':_0x459dcd['id'],'Subject':intUtil['getString'](_0x40de51[_0x2967('0xd')],_0x4a27f0,'\x20'),'Description':intUtil[_0x2967('0xe')](_0x40de51[_0x2967('0xf')],_0x4a27f0,'\x0a')},getCustomFields(_0xcb339f,_0x4a27f0));if(_0x3cc02a){if(_0x40de51[_0x2967('0x10')]===_0x2967('0x11')){_0x47c886[_0x2967('0x12')]=moment[_0x2967('0x13')]();_0x47c886[_0x2967('0x14')]=![];_0x47c886[_0x2967('0x15')]=![];if(_0x3cc02a[_0x2967('0x16')]==='contact'||_0x3cc02a['endUserType']===_0x2967('0x17')){_0x47c886[_0x2967('0x18')]=_0x3cc02a['id'];}else if(_0x3cc02a[_0x2967('0x16')]===_0x2967('0x19')){_0x47c886['WhatId']=_0x3cc02a['id'];}}else if(_0x40de51[_0x2967('0x10')]==='Case'){if(_0x3cc02a[_0x2967('0x16')]===_0x2967('0x1a')){_0x47c886[_0x2967('0x1b')]=_0x3cc02a['id'];}else if(_0x3cc02a['endUserType']===_0x2967('0x19')){_0x47c886[_0x2967('0x1c')]=_0x3cc02a['id'];}else if(_0x3cc02a[_0x2967('0x16')]===_0x2967('0x17')&&_0x40de51[_0x2967('0x1d')]){_0x47c886[_0x40de51[_0x2967('0x1d')]]=_0x3cc02a['id'];}else{logger['info']('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x3e2e30[_0x2967('0x1e')](_0x40de51[_0x2967('0x10')])[_0x2967('0x1f')](_0x47c886);}function getUser(_0x4d8f55,_0x2f39c6,_0x151b3e){if(!_[_0x2967('0x20')](_0x2f39c6)&&intUtil['validateEmail'](_0x2f39c6)){var _0x590f4f={'Email':_0x2f39c6};var _0x2a0dfc={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x151b3e[_0x2967('0x1e')](_0x2967('0x21'))[_0x2967('0x22')](_0x590f4f,_0x2a0dfc)[_0x2967('0x23')]()['then'](function(_0x59d6b6){if(_0x59d6b6[_0x2967('0x24')]){var _0x17e32d=_['find'](_0x59d6b6,function(_0x3403ce){return _0x3403ce['Email']===_0x2f39c6;});if(_0x17e32d){logger['info'](_0x2967('0x25'),_0x2f39c6);return BPromise[_0x2967('0x26')]({'id':_0x17e32d['Id'],'name':_0x17e32d[_0x2967('0x27')]});}}else{logger[_0x2967('0x28')](_0x2967('0x29'),_0x2f39c6);return _0x151b3e[_0x2967('0x2a')]()[_0x2967('0x2b')](function(_0x23e331){return BPromise[_0x2967('0x26')]({'id':_0x23e331[_0x2967('0x2c')],'name':_0x23e331[_0x2967('0x2d')]});});}});}else{logger[_0x2967('0x28')](_0x2967('0x29'),_0x2f39c6);return _0x151b3e[_0x2967('0x2a')]()[_0x2967('0x2b')](function(_0x5f164b){return BPromise[_0x2967('0x26')]({'id':_0x5f164b[_0x2967('0x2c')],'name':_0x5f164b['display_name']});});}}function getEndUser(_0x1410fa,_0x3bd69a,_0x436a37,_0x28cca3,_0x3b0c3c){var _0x53978e={'$or':{'Phone':_0x28cca3}};var _0x57fd89={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x2967('0x26')]()[_0x2967('0x2b')](function(){logger[_0x2967('0x28')](_0x2967('0x2e'),_0x28cca3,_0x3bd69a[_0x2967('0x2f')]);switch(_0x3bd69a['moduleSearch']){case'contact_lead':var _0x3bea72=_[_0x2967('0x30')](_0x53978e);if(_0x3bd69a['additionalSearchContact']){var _0x4c48ec={};_0x4c48ec[_0x3bd69a['additionalSearchContact']]=_0x28cca3;_[_0x2967('0x31')](_0x3bea72[_0x2967('0x32')],_0x4c48ec);}return _0x3b0c3c[_0x2967('0x1e')](_0x2967('0x33'))[_0x2967('0x22')](_0x3bea72,_0x57fd89)['execute']()[_0x2967('0x2b')](function(_0x184c9a){if(_0x184c9a&&_0x184c9a[_0x2967('0x24')]){return _0x184c9a;}else{var _0x1eebad=_[_0x2967('0x30')](_0x53978e);if(_0x3bd69a['additionalSearchLead']){var _0x16fd3d={};_0x16fd3d[_0x3bd69a[_0x2967('0x34')]]=_0x28cca3;_[_0x2967('0x31')](_0x1eebad[_0x2967('0x32')],_0x16fd3d);}return _0x3b0c3c[_0x2967('0x1e')](_0x2967('0x35'))[_0x2967('0x22')](_0x1eebad,_0x57fd89);}});case _0x2967('0x36'):var _0x24f1e4=_[_0x2967('0x30')](_0x53978e);if(_0x3bd69a[_0x2967('0x37')]){var _0x4c48ec={};_0x4c48ec[_0x3bd69a['additionalSearchAccount']]=_0x28cca3;_['merge'](_0x24f1e4[_0x2967('0x32')],_0x4c48ec);}return _0x3b0c3c[_0x2967('0x1e')]('Account')[_0x2967('0x22')](_0x24f1e4,_0x57fd89)[_0x2967('0x23')]()[_0x2967('0x2b')](function(_0x3d5ebb){if(_0x3d5ebb&&_0x3d5ebb[_0x2967('0x24')]){return _0x3d5ebb;}else{var _0x2260a9=_['cloneDeep'](_0x53978e);if(_0x3bd69a[_0x2967('0x38')]){var _0x319080={};_0x319080[_0x3bd69a['additionalSearchContact']]=_0x28cca3;_[_0x2967('0x31')](_0x2260a9[_0x2967('0x32')],_0x319080);}return _0x3b0c3c[_0x2967('0x1e')](_0x2967('0x33'))[_0x2967('0x22')](_0x2260a9,_0x57fd89)[_0x2967('0x2b')](function(_0x3e61d2){if(_0x3e61d2&&_0x3e61d2[_0x2967('0x24')]){return _0x3e61d2;}else{var _0x45aa89=_[_0x2967('0x30')](_0x53978e);if(_0x3bd69a[_0x2967('0x34')]){var _0x10bef3={};_0x10bef3[_0x3bd69a[_0x2967('0x34')]]=_0x28cca3;_[_0x2967('0x31')](_0x45aa89[_0x2967('0x32')],_0x10bef3);}return _0x3b0c3c['sobject'](_0x2967('0x35'))[_0x2967('0x22')](_0x45aa89,_0x57fd89);}});}});case _0x2967('0x1a'):var _0x3bea72=_['cloneDeep'](_0x53978e);if(_0x3bd69a['additionalSearchContact']){var _0x4c48ec={};_0x4c48ec[_0x3bd69a[_0x2967('0x38')]]=_0x28cca3;_[_0x2967('0x31')](_0x3bea72[_0x2967('0x32')],_0x4c48ec);}return _0x3b0c3c['sobject']('Contact')[_0x2967('0x22')](_0x3bea72,_0x57fd89)[_0x2967('0x23')]();case _0x2967('0x17'):var _0x8749d8=_[_0x2967('0x30')](_0x53978e);if(_0x3bd69a['additionalSearchLead']){var _0x4c48ec={};_0x4c48ec[_0x3bd69a[_0x2967('0x34')]]=_0x28cca3;_[_0x2967('0x31')](_0x8749d8[_0x2967('0x32')],_0x4c48ec);}return _0x3b0c3c['sobject']('Lead')['find'](_0x8749d8,_0x57fd89);case _0x2967('0x19'):var _0x24f1e4=_['cloneDeep'](_0x53978e);if(_0x3bd69a[_0x2967('0x37')]){var _0x4c48ec={};_0x4c48ec[_0x3bd69a[_0x2967('0x37')]]=_0x28cca3;_[_0x2967('0x31')](_0x24f1e4[_0x2967('0x32')],_0x4c48ec);}return _0x3b0c3c[_0x2967('0x1e')](_0x2967('0x39'))[_0x2967('0x22')](_0x24f1e4,_0x57fd89);default:return null;}})[_0x2967('0x2b')](function(_0x4fb9d7){if(_0x4fb9d7&&_0x4fb9d7[_0x2967('0x24')]){var _0x2df82b=_['first'](_0x4fb9d7);if(_0x2df82b){return BPromise[_0x2967('0x26')]({'id':_0x2df82b['Id'],'name':_0x2df82b[_0x2967('0x27')],'phone':_0x2df82b[_0x2967('0x3a')],'endUserType':_0x2df82b['attributes'][_0x2967('0x3b')][_0x2967('0x3c')]()});}}})[_0x2967('0x2b')](function(_0x33dd38){if(_0x33dd38){logger[_0x2967('0x28')](_0x2967('0x3d'),_0x33dd38[_0x2967('0x16')],_0x28cca3);return BPromise[_0x2967('0x26')](_0x33dd38);}else{logger[_0x2967('0x28')](_0x2967('0x3e'),_0x28cca3);var _0x56fcca={'Phone':_0x28cca3};if(_0x3bd69a[_0x2967('0x3f')]){if(_0x3bd69a[_0x2967('0x3f')]===_0x2967('0x1a')){logger[_0x2967('0x28')](_0x2967('0x40'),_0x28cca3,_0x3bd69a[_0x2967('0x3f')]);_0x56fcca[_0x2967('0x41')]=_0x436a37!==_0x2967('0x42')?_0x436a37:util[_0x2967('0x43')]('Caller\x20-\x20%s',_0x28cca3);}else if(_0x3bd69a[_0x2967('0x3f')]===_0x2967('0x17')){logger[_0x2967('0x28')](_0x2967('0x40'),_0x28cca3,_0x3bd69a[_0x2967('0x3f')]);_0x56fcca[_0x2967('0x41')]=_0x436a37!==_0x2967('0x42')?_0x436a37:util[_0x2967('0x43')](_0x2967('0x44'),_0x28cca3);_0x56fcca[_0x2967('0x45')]='No\x20Company';}else if(_0x3bd69a['moduleCreate']===_0x2967('0x19')){logger[_0x2967('0x28')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x28cca3,_0x3bd69a['moduleCreate']);_0x56fcca['Name']=_0x436a37!==_0x2967('0x42')?_0x436a37:util[_0x2967('0x43')](_0x2967('0x44'),_0x28cca3);}else{return null;}}return _0x3b0c3c['sobject'](_[_0x2967('0x46')](_0x3bd69a[_0x2967('0x3f')]))[_0x2967('0x1f')](_0x56fcca)['then'](function(_0x1bf0c4){return BPromise[_0x2967('0x26')]({'id':_0x1bf0c4['id'],'endUserType':_0x3bd69a[_0x2967('0x3f')]});});}});}function getCustomFields(_0x2dc948,_0x5bbab6){var _0x7e666e={};if(_0x2dc948[_0x2967('0x24')]>0x0){_[_0x2967('0x47')](_0x2dc948,function(_0x13caa5){if(_['includes']([_0x2967('0x48'),_0x2967('0x49')],_0x13caa5['type'])&&_0x13caa5[_0x2967('0x4a')]){_0x7e666e[_0x13caa5[_0x2967('0x4a')]]=_0x13caa5[_0x2967('0x4b')][_0x2967('0x4c')]();}else if(_0x13caa5['type']===_0x2967('0x4d')&&_0x13caa5[_0x2967('0x4e')]&&_0x13caa5[_0x2967('0x4a')]){_0x5bbab6[_0x13caa5[_0x2967('0x4e')]]&&(_0x7e666e[_0x13caa5[_0x2967('0x4a')]]=_0x5bbab6[_0x13caa5['variableName']]['toString']());}else if(_0x13caa5[_0x2967('0x3b')]===_0x2967('0x4f')&&_0x13caa5['Variable']&&_0x13caa5['Variable']['name']&&_0x13caa5['idField']){_0x5bbab6[_0x13caa5[_0x2967('0x50')][_0x2967('0x51')][_0x2967('0x3c')]()]&&(_0x7e666e[_0x13caa5['idField']]=_0x5bbab6[_0x13caa5['Variable'][_0x2967('0x51')][_0x2967('0x3c')]()][_0x2967('0x4c')]());}});}return _0x7e666e;}function getConnection(_0x4e56c6){var _0x25f75a=_0x4e56c6[_0x2967('0x52')][_0x2967('0x53')](_0x4e56c6[_0x2967('0x54')]);var _0xd82532=new jsforce[(_0x2967('0x55'))]({'oauth2':{'loginUrl':_0x4e56c6[_0x2967('0x56')]||_0x2967('0x57'),'clientId':_0x4e56c6[_0x2967('0x58')],'clientSecret':_0x4e56c6[_0x2967('0x59')]}});return _0xd82532[_0x2967('0x5a')](_0x4e56c6['username'],_0x25f75a)[_0x2967('0x2b')](function(){logger['info']('Connection\x20established.');return _0xd82532;});}exports[_0x2967('0x5b')]=function(_0xa28b11,_0x15ce23,_0x131081,_0x9ea5d3,_0x260fa2,_0x4ac3c8){var _0x1fb280,_0x37da19,_0x19e676,_0x3b788e;_0x4ac3c8[_0x2967('0x5c')]=intUtil[_0x2967('0x5d')](_0x4ac3c8[_0x2967('0x5c')]);_0x4ac3c8['remoteUri']=intUtil[_0x2967('0x5d')](_0x4ac3c8[_0x2967('0x56')]);if(_0x260fa2&&_0x260fa2['monitor_format']){logger[_0x2967('0x28')](_0x2967('0x5e'),'Recording\x20is\x20enabled!');_0x15ce23[_0x2967('0x5f')]=util['format'](_0x2967('0x60'),_0x4ac3c8[_0x2967('0x5c')],_0x15ce23['uniqueid'],md5(_0x15ce23[_0x2967('0x61')]));}else{_0x15ce23['recordingURL']='';}return getConnection(_0x4ac3c8)[_0x2967('0x2b')](function(_0x492700){_0x3b788e=_0x492700;return getUser(_0x4ac3c8,_0x9ea5d3['email'],_0x3b788e);})['then'](function(_0x219e70){_0x1fb280=_0x219e70;return getEndUser(_0x4ac3c8,_0x131081,_0x15ce23[_0x2967('0x62')],_0x15ce23[_0x2967('0x63')],_0x3b788e);})[_0x2967('0x2b')](function(_0x32fb02){_0x37da19=_0x32fb02;return getTicket(_0x4ac3c8,_0x1fb280,_0x37da19,_0x131081,_0x15ce23,_0x131081['Fields'],_0x3b788e,'queue');})['then'](function(_0x30dd0b){_0x19e676=_0x30dd0b;logger[_0x2967('0x28')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x19e676['id']);logger[_0x2967('0x28')](_0x2967('0x64'),_0x19e676['id'],_0x9ea5d3['name'],_0x4ac3c8[_0x2967('0x3b')]);switch(_0x4ac3c8[_0x2967('0x3b')]){case _0x2967('0x65'):emit(util[_0x2967('0x43')](_0x2967('0x66'),_0x9ea5d3['name']),'trigger:salesforce:display',{'recordId':_0x19e676['id']});break;case _0x2967('0x67'):emit(util['format'](_0x2967('0x66'),_0x9ea5d3['name']),'trigger:browser:url',{'uri':util[_0x2967('0x43')](_0x2967('0x68'),_0x3b788e[_0x2967('0x69')],_0x19e676['id'])});break;default:logger['error'](_0x2967('0x6a'));}})['catch'](function(_0x4d4b99){logger['error']('[QUEUE]',_0x4d4b99);});};exports['outbound']=function(_0x1d5822,_0x1f9801,_0x1538ad,_0x416782,_0x63c82e,_0x459b97,_0x7b1d02){var _0x19e968,_0x3b964b,_0x39e95a,_0x37b5d7;_0x459b97['serverUrl']=intUtil['stripTrailingSlash'](_0x459b97[_0x2967('0x5c')]);_0x459b97['remoteUri']=intUtil[_0x2967('0x5d')](_0x459b97['remoteUri']);if(_0x7b1d02&&_0x7b1d02[_0x2967('0x6b')]&&_0x7b1d02[_0x2967('0x6b')]!==_0x2967('0x6c')){logger[_0x2967('0x28')](_0x2967('0x6d'),_0x2967('0x6e'));_0x1f9801['recordingURL']=util[_0x2967('0x43')](_0x2967('0x60'),_0x459b97[_0x2967('0x5c')],_0x1f9801[_0x2967('0x61')],md5(_0x1f9801[_0x2967('0x61')]));}return getConnection(_0x459b97)[_0x2967('0x2b')](function(_0x98cd74){_0x37b5d7=_0x98cd74;return getUser(_0x459b97,_0x416782['email'],_0x37b5d7);})['then'](function(_0x5267ae){_0x19e968=_0x5267ae;return getEndUser(_0x459b97,_0x1538ad,_0x1f9801[_0x2967('0x6f')],_0x1f9801[_0x2967('0x70')],_0x37b5d7);})['then'](function(_0x1a10c6){_0x3b964b=_0x1a10c6;return getTicket(_0x459b97,_0x19e968,_0x3b964b,_0x1538ad,_0x1f9801,_0x1538ad['Fields'],_0x37b5d7,_0x2967('0x71'));})[_0x2967('0x2b')](function(_0x52e150){_0x39e95a=_0x52e150;logger[_0x2967('0x28')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x39e95a['id']);logger['info'](_0x2967('0x72'),_0x39e95a['id'],_0x416782[_0x2967('0x51')],_0x459b97[_0x2967('0x3b')]);switch(_0x459b97[_0x2967('0x3b')]){case _0x2967('0x65'):emit(util[_0x2967('0x43')]('user:%s',_0x416782[_0x2967('0x51')]),'trigger:salesforce:display',{'recordId':_0x39e95a['id']});break;case _0x2967('0x67'):emit(util[_0x2967('0x43')]('user:%s',_0x416782[_0x2967('0x51')]),'trigger:browser:url',{'uri':util[_0x2967('0x43')](_0x2967('0x68'),_0x37b5d7[_0x2967('0x69')],_0x39e95a['id'])});break;default:logger[_0x2967('0x73')](_0x2967('0x6d'),'Salesforce\x20account\x20type\x20not\x20recognized');}})['catch'](function(_0x407d43){logger[_0x2967('0x73')]('[OUTBOUND]',_0x407d43);});};exports['unmanaged']=function(_0x41d18a,_0x1a6366,_0x4a0349,_0x152bd2,_0x51da1c,_0x3e8cbf){var _0xd5b615,_0x5b7832,_0x2fae5a,_0x3ced42;_0x3e8cbf[_0x2967('0x5c')]=intUtil[_0x2967('0x5d')](_0x3e8cbf[_0x2967('0x5c')]);_0x3e8cbf[_0x2967('0x56')]=intUtil[_0x2967('0x5d')](_0x3e8cbf['remoteUri']);if(_0x51da1c&&_0x51da1c[_0x2967('0x74')]){logger[_0x2967('0x28')]('['+_0x1a6366[_0x2967('0x75')][_0x2967('0x76')]()+']',_0x2967('0x6e'));_0x1a6366[_0x2967('0x5f')]=util[_0x2967('0x43')](_0x2967('0x60'),_0x3e8cbf['serverUrl'],_0x1a6366[_0x2967('0x61')],md5(_0x1a6366[_0x2967('0x61')]));}else{_0x1a6366[_0x2967('0x5f')]='';}return getConnection(_0x3e8cbf)[_0x2967('0x2b')](function(_0xb7c803){_0x3ced42=_0xb7c803;if(!_[_0x2967('0x20')](_0x152bd2)){return getUser(_0x3e8cbf,_0x152bd2[_0x2967('0x51')],_0x3ced42);}else{return getUser(_0x3e8cbf,null,_0x3ced42);}})[_0x2967('0x2b')](function(_0x3ea8c7){_0xd5b615=_0x3ea8c7;return getEndUser(_0x3e8cbf,_0x4a0349,_0x1a6366[_0x2967('0x62')],_0x1a6366[_0x2967('0x63')],_0x3ced42);})[_0x2967('0x2b')](function(_0x5b427c){_0x5b7832=_0x5b427c;return getTicket(_0x3e8cbf,_0xd5b615,_0x5b7832,_0x4a0349,_0x1a6366,_0x4a0349[_0x2967('0x77')],_0x3ced42);})[_0x2967('0x2b')](function(_0x53d097){_0x2fae5a=_0x53d097;logger['info']('['+_0x1a6366['lastevent']['toUpperCase']()+_0x2967('0x78'),_0x2fae5a['id']);logger[_0x2967('0x28')]('['+_0x1a6366[_0x2967('0x75')][_0x2967('0x76')]()+_0x2967('0x79'),_0x3e8cbf[_0x2967('0x3b')]);})[_0x2967('0x7a')](function(_0x542411){logger[_0x2967('0x73')]('['+_0x1a6366[_0x2967('0x75')][_0x2967('0x76')]()+']',_0x542411);});};
\ No newline at end of file
+var _0x9528=['<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','account','Name','upperFirst','create','forEach','includes','picklist','idField','content','toString','variableName','Variable','name','concat','securityToken','remoteUri','https://login.salesforce.com','clientSecret','login','username','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','Fields','queue','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum',']\x20Ticket\x20%s\x20created.','lodash','moment','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','assign','getString','Descriptions','ticketType','ActivityDate','utc','IsReminderSet','endUserType','contact','lead','WhoId','WhatId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','isNil','validateEmail','sobject','find','execute','then','length','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','account_contact_lead','additionalSearchAccount','merge','Account','Lead','first','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'];(function(_0xfa9904,_0x4b76ff){var _0x242d7f=function(_0x5210bd){while(--_0x5210bd){_0xfa9904['push'](_0xfa9904['shift']());}};_0x242d7f(++_0x4b76ff);}(_0x9528,0x1ad));var _0x8952=function(_0x1f2b72,_0x2c5d5b){_0x1f2b72=_0x1f2b72-0x0;var _0x5512c8=_0x9528[_0x1f2b72];return _0x5512c8;};'use strict';var _=require(_0x8952('0x0'));var rp=require('request-promise');var moment=require(_0x8952('0x1'));var BPromise=require('bluebird');var md5=require(_0x8952('0x2'));var jsforce=require('jsforce');var util=require(_0x8952('0x3'));var Redis=require(_0x8952('0x4'));var intUtil=require(_0x8952('0x5'));var config=require(_0x8952('0x6'));var logger=require(_0x8952('0x7'))(_0x8952('0x8'));config[_0x8952('0x9')]=_[_0x8952('0xa')](config[_0x8952('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x8952('0xb'))(new Redis(config[_0x8952('0x9')]));function emit(_0x119d04,_0x511c57,_0x44d732){io['to'](_0x119d04)[_0x8952('0xc')](_0x511c57,_0x44d732);}function getTicket(_0x167d2d,_0x20f169,_0x4591a8,_0x3f5035,_0x31004d,_0x4ca631,_0x37fbdf,_0x5310c3){var _0x5a8849=Object[_0x8952('0xd')]({},{'OwnerId':_0x20f169['id'],'Subject':intUtil['getString'](_0x3f5035['Subjects'],_0x31004d,'\x20'),'Description':intUtil[_0x8952('0xe')](_0x3f5035[_0x8952('0xf')],_0x31004d,'\x0a')},getCustomFields(_0x4ca631,_0x31004d));if(_0x4591a8){if(_0x3f5035[_0x8952('0x10')]==='Task'){_0x5a8849[_0x8952('0x11')]=moment[_0x8952('0x12')]();_0x5a8849[_0x8952('0x13')]=![];_0x5a8849['IsRecurrence']=![];if(_0x4591a8[_0x8952('0x14')]===_0x8952('0x15')||_0x4591a8[_0x8952('0x14')]===_0x8952('0x16')){_0x5a8849[_0x8952('0x17')]=_0x4591a8['id'];}else if(_0x4591a8['endUserType']==='account'){_0x5a8849[_0x8952('0x18')]=_0x4591a8['id'];}}else if(_0x3f5035[_0x8952('0x10')]==='Case'){if(_0x4591a8['endUserType']==='contact'){_0x5a8849['ContactId']=_0x4591a8['id'];}else if(_0x4591a8[_0x8952('0x14')]==='account'){_0x5a8849['AccountId']=_0x4591a8['id'];}else if(_0x4591a8[_0x8952('0x14')]===_0x8952('0x16')&&_0x3f5035[_0x8952('0x19')]){_0x5a8849[_0x3f5035[_0x8952('0x19')]]=_0x4591a8['id'];}else{logger[_0x8952('0x1a')](_0x8952('0x1b'));}}}return _0x37fbdf['sobject'](_0x3f5035[_0x8952('0x10')])['create'](_0x5a8849);}function getUser(_0x56aa24,_0x52e5f7,_0x4b3403){if(!_[_0x8952('0x1c')](_0x52e5f7)&&intUtil[_0x8952('0x1d')](_0x52e5f7)){var _0x5d0e22={'Email':_0x52e5f7};var _0x28ce0b={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4b3403[_0x8952('0x1e')]('User')[_0x8952('0x1f')](_0x5d0e22,_0x28ce0b)[_0x8952('0x20')]()[_0x8952('0x21')](function(_0x2363aa){if(_0x2363aa[_0x8952('0x22')]){var _0x502ff2=_[_0x8952('0x1f')](_0x2363aa,function(_0x4f0f04){return _0x4f0f04['Email']===_0x52e5f7;});if(_0x502ff2){logger['info'](_0x8952('0x23'),_0x52e5f7);return BPromise[_0x8952('0x24')]({'id':_0x502ff2['Id'],'name':_0x502ff2['Name']});}}else{logger[_0x8952('0x1a')](_0x8952('0x25'),_0x52e5f7);return _0x4b3403['identity']()[_0x8952('0x21')](function(_0x5c5473){return BPromise[_0x8952('0x24')]({'id':_0x5c5473[_0x8952('0x26')],'name':_0x5c5473[_0x8952('0x27')]});});}});}else{logger[_0x8952('0x1a')](_0x8952('0x25'),_0x52e5f7);return _0x4b3403[_0x8952('0x28')]()[_0x8952('0x21')](function(_0x4df179){return BPromise[_0x8952('0x24')]({'id':_0x4df179[_0x8952('0x26')],'name':_0x4df179[_0x8952('0x27')]});});}}function getEndUser(_0x32bdaa,_0x57b50e,_0x1f31de,_0x11d22f,_0xea0984){var _0x405570={'$or':{'Phone':_0x11d22f}};var _0x49ce0a={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x8952('0x24')]()['then'](function(){logger[_0x8952('0x1a')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x11d22f,_0x57b50e[_0x8952('0x29')]);switch(_0x57b50e[_0x8952('0x29')]){case _0x8952('0x2a'):var _0x163a74=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e[_0x8952('0x2c')]){var _0x5a953d={};_0x5a953d[_0x57b50e[_0x8952('0x2c')]]=_0x11d22f;_['merge'](_0x163a74[_0x8952('0x2d')],_0x5a953d);}return _0xea0984[_0x8952('0x1e')](_0x8952('0x2e'))[_0x8952('0x1f')](_0x163a74,_0x49ce0a)[_0x8952('0x20')]()['then'](function(_0x18e46b){if(_0x18e46b&&_0x18e46b['length']){return _0x18e46b;}else{var _0x2ba875=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e['additionalSearchLead']){var _0x526713={};_0x526713[_0x57b50e[_0x8952('0x2f')]]=_0x11d22f;_['merge'](_0x2ba875[_0x8952('0x2d')],_0x526713);}return _0xea0984[_0x8952('0x1e')]('Lead')[_0x8952('0x1f')](_0x2ba875,_0x49ce0a);}});case _0x8952('0x30'):var _0x1a59f1=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e[_0x8952('0x31')]){var _0x5a953d={};_0x5a953d[_0x57b50e[_0x8952('0x31')]]=_0x11d22f;_[_0x8952('0x32')](_0x1a59f1[_0x8952('0x2d')],_0x5a953d);}return _0xea0984['sobject'](_0x8952('0x33'))['find'](_0x1a59f1,_0x49ce0a)[_0x8952('0x20')]()[_0x8952('0x21')](function(_0x5f10e7){if(_0x5f10e7&&_0x5f10e7['length']){return _0x5f10e7;}else{var _0x24e490=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e[_0x8952('0x2c')]){var _0x42c4b3={};_0x42c4b3[_0x57b50e[_0x8952('0x2c')]]=_0x11d22f;_[_0x8952('0x32')](_0x24e490[_0x8952('0x2d')],_0x42c4b3);}return _0xea0984[_0x8952('0x1e')](_0x8952('0x2e'))[_0x8952('0x1f')](_0x24e490,_0x49ce0a)[_0x8952('0x21')](function(_0x2541d3){if(_0x2541d3&&_0x2541d3['length']){return _0x2541d3;}else{var _0xfbfc97=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e[_0x8952('0x2f')]){var _0x41661a={};_0x41661a[_0x57b50e[_0x8952('0x2f')]]=_0x11d22f;_[_0x8952('0x32')](_0xfbfc97[_0x8952('0x2d')],_0x41661a);}return _0xea0984['sobject'](_0x8952('0x34'))[_0x8952('0x1f')](_0xfbfc97,_0x49ce0a);}});}});case _0x8952('0x15'):var _0x163a74=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e[_0x8952('0x2c')]){var _0x5a953d={};_0x5a953d[_0x57b50e['additionalSearchContact']]=_0x11d22f;_['merge'](_0x163a74[_0x8952('0x2d')],_0x5a953d);}return _0xea0984[_0x8952('0x1e')](_0x8952('0x2e'))[_0x8952('0x1f')](_0x163a74,_0x49ce0a)['execute']();case'lead':var _0x299a72=_[_0x8952('0x2b')](_0x405570);if(_0x57b50e[_0x8952('0x2f')]){var _0x5a953d={};_0x5a953d[_0x57b50e[_0x8952('0x2f')]]=_0x11d22f;_[_0x8952('0x32')](_0x299a72[_0x8952('0x2d')],_0x5a953d);}return _0xea0984[_0x8952('0x1e')](_0x8952('0x34'))[_0x8952('0x1f')](_0x299a72,_0x49ce0a);case'account':var _0x1a59f1=_['cloneDeep'](_0x405570);if(_0x57b50e[_0x8952('0x31')]){var _0x5a953d={};_0x5a953d[_0x57b50e['additionalSearchAccount']]=_0x11d22f;_[_0x8952('0x32')](_0x1a59f1[_0x8952('0x2d')],_0x5a953d);}return _0xea0984[_0x8952('0x1e')](_0x8952('0x33'))[_0x8952('0x1f')](_0x1a59f1,_0x49ce0a);default:return null;}})[_0x8952('0x21')](function(_0x54db86){if(_0x54db86&&_0x54db86[_0x8952('0x22')]){var _0x1dae4c=_[_0x8952('0x35')](_0x54db86);if(_0x1dae4c){return BPromise[_0x8952('0x24')]({'id':_0x1dae4c['Id'],'name':_0x1dae4c['Name'],'phone':_0x1dae4c[_0x8952('0x36')],'endUserType':_0x1dae4c[_0x8952('0x37')][_0x8952('0x38')][_0x8952('0x39')]()});}}})[_0x8952('0x21')](function(_0x239098){if(_0x239098){logger[_0x8952('0x1a')](_0x8952('0x3a'),_0x239098[_0x8952('0x14')],_0x11d22f);return BPromise[_0x8952('0x24')](_0x239098);}else{logger[_0x8952('0x1a')](_0x8952('0x3b'),_0x11d22f);var _0x5cae8d={'Phone':_0x11d22f};if(_0x57b50e[_0x8952('0x3c')]){if(_0x57b50e['moduleCreate']==='contact'){logger[_0x8952('0x1a')](_0x8952('0x3d'),_0x11d22f,_0x57b50e[_0x8952('0x3c')]);_0x5cae8d[_0x8952('0x3e')]=_0x1f31de!==_0x8952('0x3f')?_0x1f31de:util[_0x8952('0x40')](_0x8952('0x41'),_0x11d22f);}else if(_0x57b50e[_0x8952('0x3c')]==='lead'){logger[_0x8952('0x1a')](_0x8952('0x3d'),_0x11d22f,_0x57b50e[_0x8952('0x3c')]);_0x5cae8d[_0x8952('0x3e')]=_0x1f31de!=='<unknown>'?_0x1f31de:util[_0x8952('0x40')](_0x8952('0x41'),_0x11d22f);_0x5cae8d[_0x8952('0x42')]=_0x8952('0x43');}else if(_0x57b50e[_0x8952('0x3c')]===_0x8952('0x44')){logger['info'](_0x8952('0x3d'),_0x11d22f,_0x57b50e[_0x8952('0x3c')]);_0x5cae8d[_0x8952('0x45')]=_0x1f31de!==_0x8952('0x3f')?_0x1f31de:util['format'](_0x8952('0x41'),_0x11d22f);}else{return null;}}return _0xea0984[_0x8952('0x1e')](_[_0x8952('0x46')](_0x57b50e[_0x8952('0x3c')]))[_0x8952('0x47')](_0x5cae8d)[_0x8952('0x21')](function(_0x419b8f){return BPromise[_0x8952('0x24')]({'id':_0x419b8f['id'],'endUserType':_0x57b50e[_0x8952('0x3c')]});});}});}function getCustomFields(_0x268e71,_0x3bae7c){var _0x1c5079={};if(_0x268e71[_0x8952('0x22')]>0x0){_[_0x8952('0x48')](_0x268e71,function(_0x19c916){if(_[_0x8952('0x49')](['string',_0x8952('0x4a')],_0x19c916[_0x8952('0x38')])&&_0x19c916[_0x8952('0x4b')]){_0x1c5079[_0x19c916[_0x8952('0x4b')]]=_0x19c916[_0x8952('0x4c')][_0x8952('0x4d')]();}else if(_0x19c916[_0x8952('0x38')]==='variable'&&_0x19c916['variableName']&&_0x19c916[_0x8952('0x4b')]){_0x3bae7c[_0x19c916[_0x8952('0x4e')]]&&(_0x1c5079[_0x19c916['idField']]=_0x3bae7c[_0x19c916['variableName']][_0x8952('0x4d')]());}else if(_0x19c916['type']==='customVariable'&&_0x19c916['Variable']&&_0x19c916[_0x8952('0x4f')][_0x8952('0x50')]&&_0x19c916[_0x8952('0x4b')]){_0x3bae7c[_0x19c916['Variable'][_0x8952('0x50')][_0x8952('0x39')]()]&&(_0x1c5079[_0x19c916[_0x8952('0x4b')]]=_0x3bae7c[_0x19c916['Variable'][_0x8952('0x50')][_0x8952('0x39')]()][_0x8952('0x4d')]());}});}return _0x1c5079;}function getConnection(_0x33f626){var _0x135ecc=_0x33f626['password'][_0x8952('0x51')](_0x33f626[_0x8952('0x52')]);var _0x4bf6da=new jsforce['Connection']({'oauth2':{'loginUrl':_0x33f626[_0x8952('0x53')]||_0x8952('0x54'),'clientId':_0x33f626['clientId'],'clientSecret':_0x33f626[_0x8952('0x55')]}});return _0x4bf6da[_0x8952('0x56')](_0x33f626[_0x8952('0x57')],_0x135ecc)['then'](function(){logger[_0x8952('0x1a')]('Connection\x20established.');return _0x4bf6da;});}exports['queue']=function(_0x5ca970,_0x2f664d,_0x2d7bb9,_0x3af4a7,_0xbe2876,_0x19f93a){var _0x192eb1,_0x489429,_0x258f98,_0x275ad8;_0x19f93a[_0x8952('0x58')]=intUtil[_0x8952('0x59')](_0x19f93a[_0x8952('0x58')]);_0x19f93a[_0x8952('0x53')]=intUtil['stripTrailingSlash'](_0x19f93a[_0x8952('0x53')]);if(_0xbe2876&&_0xbe2876['monitor_format']){logger[_0x8952('0x1a')](_0x8952('0x5a'),_0x8952('0x5b'));_0x2f664d['recordingURL']=util['format'](_0x8952('0x5c'),_0x19f93a['serverUrl'],_0x2f664d[_0x8952('0x5d')],md5(_0x2f664d[_0x8952('0x5d')]));}else{_0x2f664d[_0x8952('0x5e')]='';}return getConnection(_0x19f93a)[_0x8952('0x21')](function(_0x2d6985){_0x275ad8=_0x2d6985;return getUser(_0x19f93a,_0x3af4a7['email'],_0x275ad8);})[_0x8952('0x21')](function(_0x4a177d){_0x192eb1=_0x4a177d;return getEndUser(_0x19f93a,_0x2d7bb9,_0x2f664d[_0x8952('0x5f')],_0x2f664d['calleridnum'],_0x275ad8);})[_0x8952('0x21')](function(_0x4c7192){_0x489429=_0x4c7192;return getTicket(_0x19f93a,_0x192eb1,_0x489429,_0x2d7bb9,_0x2f664d,_0x2d7bb9[_0x8952('0x60')],_0x275ad8,_0x8952('0x61'));})[_0x8952('0x21')](function(_0x35bdc6){_0x258f98=_0x35bdc6;logger[_0x8952('0x1a')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x258f98['id']);logger[_0x8952('0x1a')](_0x8952('0x62'),_0x258f98['id'],_0x3af4a7[_0x8952('0x50')],_0x19f93a['type']);switch(_0x19f93a[_0x8952('0x38')]){case _0x8952('0x63'):emit(util[_0x8952('0x40')]('user:%s',_0x3af4a7['name']),_0x8952('0x64'),{'recordId':_0x258f98['id']});break;case _0x8952('0x65'):emit(util[_0x8952('0x40')](_0x8952('0x66'),_0x3af4a7[_0x8952('0x50')]),_0x8952('0x67'),{'uri':util['format'](_0x8952('0x68'),_0x275ad8[_0x8952('0x69')],_0x258f98['id'])});break;default:logger[_0x8952('0x6a')](_0x8952('0x6b'));}})[_0x8952('0x6c')](function(_0x3f79a4){logger[_0x8952('0x6a')](_0x8952('0x5a'),_0x3f79a4);});};exports[_0x8952('0x6d')]=function(_0x5ba05b,_0x3b7606,_0xf45e9e,_0x3d12fb,_0x443f9e,_0x2a11f2,_0x37999e){var _0x278e95,_0xc3c2af,_0x48d118,_0x1f5966;_0x2a11f2[_0x8952('0x58')]=intUtil[_0x8952('0x59')](_0x2a11f2['serverUrl']);_0x2a11f2[_0x8952('0x53')]=intUtil['stripTrailingSlash'](_0x2a11f2[_0x8952('0x53')]);if(_0x37999e&&_0x37999e['recordingFormat']&&_0x37999e[_0x8952('0x6e')]!==_0x8952('0x6f')){logger['info'](_0x8952('0x70'),_0x8952('0x5b'));_0x3b7606['recordingURL']=util[_0x8952('0x40')](_0x8952('0x5c'),_0x2a11f2[_0x8952('0x58')],_0x3b7606[_0x8952('0x5d')],md5(_0x3b7606[_0x8952('0x5d')]));}return getConnection(_0x2a11f2)[_0x8952('0x21')](function(_0x2a607f){_0x1f5966=_0x2a607f;return getUser(_0x2a11f2,_0x3d12fb['email'],_0x1f5966);})[_0x8952('0x21')](function(_0x2fd750){_0x278e95=_0x2fd750;return getEndUser(_0x2a11f2,_0xf45e9e,_0x3b7606[_0x8952('0x71')],_0x3b7606[_0x8952('0x72')],_0x1f5966);})[_0x8952('0x21')](function(_0x305b4c){_0xc3c2af=_0x305b4c;return getTicket(_0x2a11f2,_0x278e95,_0xc3c2af,_0xf45e9e,_0x3b7606,_0xf45e9e['Fields'],_0x1f5966,_0x8952('0x6d'));})[_0x8952('0x21')](function(_0x1043bb){_0x48d118=_0x1043bb;logger[_0x8952('0x1a')](_0x8952('0x73'),_0x48d118['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x48d118['id'],_0x3d12fb[_0x8952('0x50')],_0x2a11f2[_0x8952('0x38')]);switch(_0x2a11f2['type']){case _0x8952('0x63'):emit(util[_0x8952('0x40')](_0x8952('0x66'),_0x3d12fb['name']),_0x8952('0x64'),{'recordId':_0x48d118['id']});break;case _0x8952('0x65'):emit(util[_0x8952('0x40')](_0x8952('0x66'),_0x3d12fb['name']),_0x8952('0x67'),{'uri':util[_0x8952('0x40')](_0x8952('0x68'),_0x1f5966[_0x8952('0x69')],_0x48d118['id'])});break;default:logger[_0x8952('0x6a')](_0x8952('0x70'),_0x8952('0x74'));}})[_0x8952('0x6c')](function(_0x2fc8aa){logger['error'](_0x8952('0x70'),_0x2fc8aa);});};exports[_0x8952('0x75')]=function(_0x5e48f8,_0x2852de,_0x424721,_0x1f3a2f,_0x3e0fc7,_0x3218df){var _0x43d5ca,_0x192137,_0x33e3f3,_0x1e4a60;_0x3218df[_0x8952('0x58')]=intUtil[_0x8952('0x59')](_0x3218df['serverUrl']);_0x3218df['remoteUri']=intUtil[_0x8952('0x59')](_0x3218df[_0x8952('0x53')]);if(_0x3e0fc7&&_0x3e0fc7[_0x8952('0x76')]){logger['info']('['+_0x2852de[_0x8952('0x77')][_0x8952('0x78')]()+']',_0x8952('0x5b'));_0x2852de['recordingURL']=util[_0x8952('0x40')](_0x8952('0x5c'),_0x3218df['serverUrl'],_0x2852de[_0x8952('0x5d')],md5(_0x2852de[_0x8952('0x5d')]));}else{_0x2852de[_0x8952('0x5e')]='';}return getConnection(_0x3218df)['then'](function(_0xec5744){_0x1e4a60=_0xec5744;if(!_[_0x8952('0x1c')](_0x1f3a2f)){return getUser(_0x3218df,_0x1f3a2f['name'],_0x1e4a60);}else{return getUser(_0x3218df,null,_0x1e4a60);}})['then'](function(_0x2af44c){_0x43d5ca=_0x2af44c;return getEndUser(_0x3218df,_0x424721,_0x2852de[_0x8952('0x5f')],_0x2852de[_0x8952('0x79')],_0x1e4a60);})['then'](function(_0x25f82f){_0x192137=_0x25f82f;return getTicket(_0x3218df,_0x43d5ca,_0x192137,_0x424721,_0x2852de,_0x424721[_0x8952('0x60')],_0x1e4a60);})[_0x8952('0x21')](function(_0x5d3558){_0x33e3f3=_0x5d3558;logger['info']('['+_0x2852de[_0x8952('0x77')][_0x8952('0x78')]()+_0x8952('0x7a'),_0x33e3f3['id']);logger[_0x8952('0x1a')]('['+_0x2852de[_0x8952('0x77')][_0x8952('0x78')]()+']\x20Integration\x20account\x20type\x20%s.',_0x3218df[_0x8952('0x38')]);})[_0x8952('0x6c')](function(_0x4a3864){logger[_0x8952('0x6a')]('['+_0x2852de['lastevent'][_0x8952('0x78')]()+']',_0x4a3864);});};
\ No newline at end of file
index 3404eb8..e848b9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2381=['includes','string','type','customField','nameField','toLowerCase','content','toString','idField','variable','variableName','customVariable','Variable','name','outbound','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','username','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','format','The\x20ticket\x20ID\x20is:\x20%s','ticketId','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','],\x20getAdminUser\x20crm','catch','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','true','userId','adminId','adminEmail','error','POST','sys_user?','user','endUserNumber','System','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach'];(function(_0x3aa625,_0x2befae){var _0x3b735e=function(_0x5e98a2){while(--_0x5e98a2){_0x3aa625['push'](_0x3aa625['shift']());}};_0x3b735e(++_0x2befae);}(_0x2381,0x116));var _0x1238=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x2381[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0x1238('0x0'));var Promise=require(_0x1238('0x1'));var rp=require('request-promise');var util=require(_0x1238('0x2'));var md5=require(_0x1238('0x3'));var Redis=require(_0x1238('0x4'));var intUtil=require(_0x1238('0x5'));var config=require(_0x1238('0x6'));var logger=require(_0x1238('0x7'))('servicenow');config[_0x1238('0x8')]=_['defaults'](config['redis'],{'host':_0x1238('0x9'),'port':0x18eb});var io=require(_0x1238('0xa'))(new Redis(config[_0x1238('0x8')]));function getAdminUser(_0x4a2ce7,_0x4939b1,_0x15e431,_0x54cb03,_0x466818,_0xdb368b){return new Promise(function(_0x5c8737,_0x4238e3){var _0x23606a={'method':_0x1238('0xb'),'uri':_0x54cb03+_0x1238('0xc')+'&'+_0x466818+'&'+_0xdb368b,'auth':_0x4939b1,'json':!![]};return rp(_0x23606a)[_0x1238('0xd')](function(_0x350376){if(_0x350376[_0x1238('0xe')][_0x1238('0xf')]>0x0){_0x15e431['adminId']=_0x350376[_0x1238('0xe')][0x0][_0x1238('0x10')];}logger[_0x1238('0x11')]('['+[_0x4a2ce7['toUpperCase']()]+_0x1238('0x12'),_0x15e431);_0x5c8737(_0x15e431);})[_0x1238('0x13')](function(_0x13edc2){logger['error']('['+[_0x4a2ce7[_0x1238('0x14')]()]+']',_0x13edc2[_0x1238('0x15')]);_0x4238e3(_0x13edc2[_0x1238('0x15')]);});});}function getUser(_0x14cf4d,_0x1c5b9a,_0x3fde92,_0x44e1b3,_0x4209fb){return function(_0x5c58e5){logger[_0x1238('0x11')]('['+[_0x14cf4d[_0x1238('0x14')]()]+_0x1238('0x16'),_0x5c58e5);return new Promise(function(_0x1f90f0,_0x3fb8b6){if(intUtil[_0x1238('0x17')](_0x5c58e5[_0x1238('0x18')])){var _0x5046d3={'method':_0x1238('0xb'),'uri':_0x3fde92+_0x1238('0x19')+_0x5c58e5[_0x1238('0x18')]+'&'+_0x44e1b3+'&'+_0x4209fb,'auth':_0x1c5b9a,'json':!![]};logger['info']('['+[_0x14cf4d[_0x1238('0x14')]()]+'],\x20getUser\x20rp\x20obj',_0x5046d3);return rp(_0x5046d3)[_0x1238('0xd')](function(_0x1a3c41){logger[_0x1238('0x11')]('['+[_0x14cf4d[_0x1238('0x14')]()]+_0x1238('0x1a'),_0x1a3c41);if(_0x1a3c41['result'][_0x1238('0xf')]>0x0&&String(_0x1a3c41[_0x1238('0xe')][0x0][_0x1238('0x1b')])===_0x1238('0x1c')){_0x5c58e5[_0x1238('0x1d')]=_0x1a3c41[_0x1238('0xe')][0x0]['sys_id'];}else{_0x5c58e5['userId']=_0x5c58e5[_0x1238('0x1e')];_0x5c58e5[_0x1238('0x18')]=_0x5c58e5[_0x1238('0x1f')];}logger[_0x1238('0x11')]('['+[_0x14cf4d[_0x1238('0x14')]()]+'],\x20getUser\x20crm',_0x5c58e5);_0x1f90f0(_0x5c58e5);})[_0x1238('0x13')](function(_0x446a05){logger[_0x1238('0x20')]('['+[_0x14cf4d[_0x1238('0x14')]()]+']',_0x446a05['message']);_0x3fb8b6(_0x446a05[_0x1238('0x15')]);});}else{logger[_0x1238('0x11')]('['+[_0x14cf4d[_0x1238('0x14')]()]+']\x20using\x20admin\x20profile');_0x5c58e5[_0x1238('0x1d')]=_0x5c58e5[_0x1238('0x1e')];_0x5c58e5[_0x1238('0x18')]=_0x5c58e5['adminEmail'];_0x1f90f0(_0x5c58e5);}});};}function createEndUser(_0x5a26ba,_0x24466c,_0x2c4791,_0xe563fc,_0x58c49d){logger[_0x1238('0x11')]('['+[_0x5a26ba[_0x1238('0x14')]()]+'],\x20createEndUser\x20input\x20crm',_0x2c4791);return new Promise(function(_0x5055e3,_0x57dee5){var _0x239ea4={'method':_0x1238('0x21'),'uri':_0xe563fc+_0x1238('0x22')+_0x58c49d,'body':{'user_name':_0x2c4791['endUserNumber'],'roles':_0x1238('0x23'),'first_name':_0x2c4791[_0x1238('0x24')],'active':_0x1238('0x1c'),'date_format':_0x1238('0x25'),'phone':_0x2c4791[_0x1238('0x24')]},'auth':_0x24466c,'json':!![]};return rp(_0x239ea4)[_0x1238('0xd')](function(_0x124b01){logger[_0x1238('0x11')]('['+[_0x5a26ba[_0x1238('0x14')]()]+'],\x20EndUser\x20schema',_0x124b01[_0x1238('0xe')]);_0x2c4791[_0x1238('0x26')]=_0x124b01['result'][_0x1238('0x10')];_0x5055e3(_0x2c4791);})[_0x1238('0x13')](function(_0xcf5d63){logger[_0x1238('0x20')]('['+[_0x5a26ba[_0x1238('0x14')]()]+']',_0xcf5d63[_0x1238('0x15')]);_0x57dee5(_0xcf5d63[_0x1238('0x15')]);});});}function getEndUser(_0x1e5f1a,_0x40ef70,_0x17dcc3,_0x6a8438,_0x5d9138){return function(_0x4370ea){logger[_0x1238('0x11')]('['+[_0x1e5f1a[_0x1238('0x14')]()]+'],\x20getEndUser\x20input\x20crm',_0x4370ea);return new Promise(function(_0x4d8c6f,_0x41887e){var _0x43fb2a={'method':_0x1238('0xb'),'uri':_0x17dcc3+_0x1238('0x27')+_0x4370ea[_0x1238('0x24')]+'&'+_0x6a8438+'&'+_0x5d9138,'auth':_0x40ef70,'json':!![]};return rp(_0x43fb2a)[_0x1238('0xd')](function(_0x195f70){if(_0x195f70[_0x1238('0xe')]['length']>0x0){_0x4370ea[_0x1238('0x26')]=_0x195f70[_0x1238('0xe')][0x0][_0x1238('0x10')];logger['info']('['+[_0x1e5f1a['toUpperCase']()]+_0x1238('0x28'),_0x4370ea);_0x4d8c6f(_0x4370ea);}else{return createEndUser(_0x1e5f1a,_0x40ef70,_0x4370ea,_0x17dcc3,_0x6a8438)[_0x1238('0xd')](function(_0x583d8a){logger[_0x1238('0x11')]('['+[_0x1e5f1a[_0x1238('0x14')]()]+_0x1238('0x29'),_0x583d8a);_0x4d8c6f(_0x583d8a);});}})[_0x1238('0x13')](function(_0x37c8fc){logger[_0x1238('0x20')]('['+[_0x1e5f1a[_0x1238('0x14')]()]+']',_0x37c8fc[_0x1238('0x15')]);_0x41887e(_0x37c8fc[_0x1238('0x15')]);});});};}function getCustomFields(_0x4b6093,_0xb8ae8d){var _0x3357bd={};if(_0x4b6093[_0x1238('0xf')]>0x0){_[_0x1238('0x2a')](_0x4b6093,function(_0x13266d){if(_[_0x1238('0x2b')]([_0x1238('0x2c'),'picklist'],_0x13266d[_0x1238('0x2d')])&&_0x13266d['nameField']&&!_0x13266d[_0x1238('0x2e')]){_0x3357bd[_0x13266d[_0x1238('0x2f')][_0x1238('0x30')]()]=_0x13266d[_0x1238('0x31')][_0x1238('0x32')]();}else if(_['includes']([_0x1238('0x2c'),'picklist'],_0x13266d['type'])&&_0x13266d['idField']&&_0x13266d[_0x1238('0x2e')]){_0x3357bd[_0x13266d[_0x1238('0x33')]['toLowerCase']()]=_0x13266d[_0x1238('0x31')][_0x1238('0x32')]();}else if(_0x13266d[_0x1238('0x2d')]===_0x1238('0x34')&&_0x13266d[_0x1238('0x35')]&&_0x13266d[_0x1238('0x33')]&&_0x13266d[_0x1238('0x2e')]){_0x3357bd[_0x13266d[_0x1238('0x33')][_0x1238('0x30')]()]=_0xb8ae8d[_0x13266d[_0x1238('0x35')]][_0x1238('0x32')]();}else if(_0x13266d[_0x1238('0x2d')]===_0x1238('0x36')&&_0x13266d[_0x1238('0x37')]&&_0x13266d[_0x1238('0x37')]['name']&&_0x13266d['idField']&&_0x13266d[_0x1238('0x2e')]){_0x3357bd[_0x13266d['idField'][_0x1238('0x30')]()]=_0xb8ae8d[_0x13266d[_0x1238('0x37')][_0x1238('0x38')][_0x1238('0x30')]()][_0x1238('0x32')]();}});}return _0x3357bd;}function getTicket(_0x5d8c62,_0xec67d8,_0x138853,_0x507778,_0x29884a,_0x33118b){return function(_0x2111a2){logger[_0x1238('0x11')]('['+[_0x5d8c62[_0x1238('0x14')]()]+']\x20getTicket\x20input\x20crm',_0x2111a2);return new Promise(function(_0x46b744,_0x89e81e){var _0x5b6253=_0x5d8c62['toLowerCase']()===_0x1238('0x39')?_0x2111a2[_0x1238('0x1d')]:_0x2111a2['endUserId'];var _0x37adf7={'method':_0x1238('0x21'),'uri':_0x138853+_0x1238('0x3a')+'?'+_0x33118b,'body':Object[_0x1238('0x3b')]({},{'active':_0x1238('0x1c'),'caller_id':_0x5b6253,'assigned_to':_0x2111a2[_0x1238('0x1d')],'short_description':intUtil[_0x1238('0x3c')](_0x507778[_0x1238('0x3d')],_0x29884a,'\x20'),'description':intUtil[_0x1238('0x3c')](_0x507778[_0x1238('0x3e')],_0x29884a,'\x0a')},getCustomFields(_0x507778[_0x1238('0x3f')],_0x29884a)),'auth':_0xec67d8,'json':!![]};return rp(_0x37adf7)['then'](function(_0xdc2873){logger[_0x1238('0x11')]('['+[_0x5d8c62[_0x1238('0x14')]()]+_0x1238('0x40'),_0xdc2873[_0x1238('0xe')]);_0x2111a2['ticketId']=_0xdc2873[_0x1238('0xe')][_0x1238('0x10')];_0x2111a2[_0x1238('0x41')]=_0xdc2873[_0x1238('0xe')][_0x1238('0x42')];logger[_0x1238('0x11')]('['+[_0x5d8c62[_0x1238('0x14')]()]+_0x1238('0x43'),_0x2111a2);_0x46b744(_0x2111a2);})[_0x1238('0x13')](function(_0x573a9d){logger[_0x1238('0x20')]('['+[_0x5d8c62[_0x1238('0x14')]()]+']',_0x573a9d[_0x1238('0x15')]);_0x89e81e(_0x573a9d[_0x1238('0x15')]);});});};}function createRemoteTag(_0x113791,_0xe5dcf2,_0x94abff,_0x2a74c9){return new Promise(function(_0x20b4c3,_0x34e36f){var _0x19b72e={'method':_0x1238('0x21'),'uri':_0x94abff+_0x1238('0x44')+'?'+_0x2a74c9,'body':{'short_description':_0x113791,'global':!![],'active':!![],'name':_0x113791},'auth':_0xe5dcf2,'json':!![]};return rp(_0x19b72e)['then'](function(_0x4ab52c){var _0x42f583=_0x4ab52c[_0x1238('0xe')][_0x1238('0x10')];_0x20b4c3(_0x42f583);});});}function getRemoteTag(_0x4b534d,_0x1b7ac3,_0x53dcdd,_0x534c65,_0x1439fe){return new Promise(function(_0x27e57c,_0x2f7026){var _0x31261b={'method':_0x1238('0xb'),'uri':_0x53dcdd+_0x1238('0x44')+_0x1238('0x45')+_0x4b534d+'&'+_0x534c65,'auth':_0x1b7ac3,'json':!![]};return rp(_0x31261b)[_0x1238('0xd')](function(_0x5c3724){if(_0x5c3724[_0x1238('0xe')][_0x1238('0xf')]>0x0){var _0x4788ba=_0x5c3724['result'][0x0][_0x1238('0x10')];_0x27e57c(_0x4788ba);}else{return createRemoteTag(_0x4b534d,_0x1b7ac3,_0x53dcdd,_0x534c65)[_0x1238('0xd')](function(_0x2c657a){_0x27e57c(_0x2c657a);});}});});}function assignTagToIncident(_0x34c393,_0x926c40,_0x2ea25e,_0x48721b,_0xc926e3){return new Promise(function(_0x4a909e,_0x15de6f){var _0x5a7885={'method':_0x1238('0x21'),'uri':_0x2ea25e+_0x1238('0x46')+'?'+_0xc926e3,'body':{'label':_0x34c393,'table':_0x1238('0x3a'),'id_type':'Incident','table_key':_0x48721b['ticketId'],'title':_0x1238('0x47')+_0x48721b[_0x1238('0x41')],'id_display':_0x48721b[_0x1238('0x41')]},'auth':_0x926c40,'json':!![]};return rp(_0x5a7885)[_0x1238('0xd')](function(_0x161341){_0x4a909e();})[_0x1238('0x13')](function(){_0x4a909e();});});}function manageTags(_0x5d6346,_0x385140,_0x11f340,_0x302d8a,_0x1be98c,_0xfe8293,_0x377ce2){return new Promise(function(_0x3dc73f,_0x545e9e){var _0x1b995a=[];_0x385140['forEach'](function(_0x5c8e21){_0x1b995a[_0x1238('0x48')](getRemoteTag(_0x5c8e21,_0x11f340,_0x302d8a,_0xfe8293,_0x377ce2));});return Promise[_0x1238('0x49')](_0x1b995a)['then'](function(_0x253ee3){if(_0x253ee3['length']){logger[_0x1238('0x11')]('['+[_0x5d6346[_0x1238('0x14')]()]+_0x1238('0x4a'),_0x253ee3);var _0x443382=[];_0x253ee3[_0x1238('0x2a')](function(_0x4a2b36){_0x443382[_0x1238('0x48')](assignTagToIncident(_0x4a2b36,_0x11f340,_0x302d8a,_0x1be98c,_0xfe8293));});return Promise[_0x1238('0x49')](_0x443382)['then'](function(){_0x3dc73f();})[_0x1238('0x13')](function(){_0x3dc73f();});}else{_0x3dc73f();}});});}function getTags(_0x43b6b2,_0x42609f,_0x57bf64,_0x46347b,_0x8fa3b4,_0x23e1bf){return function(_0x3a4707){return new Promise(function(_0x4a85e1,_0x198747){var _0x23078d=[];var _0x503f95=_0x46347b[_0x1238('0x4b')];if(_0x503f95&&_0x503f95['length']>0x0){_0x23078d=_[_0x1238('0x4c')](_0x503f95,_0x1238('0x38'));}if(_0x23078d[_0x1238('0xf')]>0x0){return manageTags(_0x43b6b2,_0x23078d,_0x42609f,_0x57bf64,_0x3a4707,_0x8fa3b4,_0x23e1bf)[_0x1238('0xd')](function(){_0x4a85e1(_0x3a4707);});}else{_0x4a85e1(_0x3a4707);}});};}function emit(_0x4624a8,_0x29a44f,_0x16b638){var _0x15cbb5=_0x1238('0x4d')+_0x1238('0x4e')+_0x1238('0x4f')+'%255EORDERBYDESCnumber';var _0x311af2={'uri':_0x4624a8+_0x1238('0x50')+_0x16b638+_0x15cbb5};io['to'](util['format'](_0x1238('0x51'),_0x29a44f))['emit']('trigger:browser:url',_0x311af2);}exports['cs']=function(_0x529950,_0x3f589a,_0x1d3822,_0x5a0614,_0x167db3,_0x1ddf5f,_0x31185b,_0x14fc3b){var _0x1563fc={};var _0x688e1={'user':_0x1ddf5f[_0x1238('0x52')],'pass':_0x1ddf5f['password']};var _0x227674=_0x1238('0x53');var _0x280f3e=_0x1238('0x54');_0x1ddf5f['remoteUri']=intUtil[_0x1238('0x55')](_0x1ddf5f[_0x1238('0x56')]);_0x1ddf5f[_0x1238('0x57')]=intUtil[_0x1238('0x55')](_0x1ddf5f[_0x1238('0x57')]);var _0x1efe86=util['format']('%s/api/now/table/',_0x1ddf5f[_0x1238('0x56')]);_0x1563fc[_0x1238('0x18')]=!_[_0x1238('0x58')](_0x5a0614)?_0x5a0614[_0x1238('0x59')]:null;_0x1563fc[_0x1238('0x1f')]=_0x1ddf5f[_0x1238('0x59')];_0x1563fc[_0x1238('0x24')]=_0x14fc3b['toLowerCase']()===_0x1238('0x39')?_0x3f589a[_0x1238('0x5a')]:_0x3f589a[_0x1238('0x5b')];_0x1563fc[_0x1238('0x5c')]=_0x14fc3b==='queue'||_0x14fc3b==='unmanaged'?_0x1238('0x5d'):_0x1238('0x39');var _0x52c6df=util['format'](_0x1238('0x5e'),_0x1ddf5f[_0x1238('0x57')],_0x3f589a[_0x1238('0x5f')],md5(_0x3f589a[_0x1238('0x5f')]));if(_0x167db3&&_0x167db3['monitor_format']){logger[_0x1238('0x11')](_0x1238('0x60'),_0x1238('0x61'));_0x3f589a[_0x1238('0x62')]=_0x52c6df;}else if(_0x31185b&&_0x31185b['recordingFormat']&&_0x31185b[_0x1238('0x63')]!==_0x1238('0x64')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x3f589a[_0x1238('0x62')]=_0x52c6df;}else{_0x3f589a[_0x1238('0x62')]='';}return getAdminUser(_0x14fc3b,_0x688e1,_0x1563fc,_0x1efe86,_0x280f3e,_0x227674)[_0x1238('0xd')](getUser(_0x14fc3b,_0x688e1,_0x1efe86,_0x280f3e,_0x227674))[_0x1238('0xd')](getEndUser(_0x14fc3b,_0x688e1,_0x1efe86,_0x280f3e,_0x227674))[_0x1238('0xd')](getTicket(_0x14fc3b,_0x688e1,_0x1efe86,_0x1d3822,_0x3f589a,_0x280f3e))[_0x1238('0xd')](function(_0x6f2f3d){logger['info'](util[_0x1238('0x65')](_0x1238('0x66'),_0x6f2f3d[_0x1238('0x67')]));logger[_0x1238('0x11')](util['format']('call\x20direction:\x20%s',_0x14fc3b));if(_0x14fc3b!==_0x1238('0x68')){logger['info']('['+[_0x14fc3b[_0x1238('0x14')]()]+']',_0x1238('0x69'));emit(_0x1ddf5f[_0x1238('0x56')],_0x5a0614['name'],_0x6f2f3d[_0x1238('0x67')]);}})[_0x1238('0x13')](function(_0x2a3ac){logger[_0x1238('0x20')]('['+[_0x14fc3b['toUpperCase']()]+_0x1238('0x6a'),util['inspect'](_0x2a3ac,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x81ab=['uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','string','type','nameField','toLowerCase','toString','includes','picklist','idField','content','variable','variableName','customField','Variable','name',']\x20getTicket\x20input\x20crm','endUserId','POST','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','incident','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','outbound','destcalleridnum','calleridnum','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x358731,_0x5c5be2){var _0x209ef2=function(_0x5c8cba){while(--_0x5c8cba){_0x358731['push'](_0x358731['shift']());}};_0x209ef2(++_0x5c5be2);}(_0x81ab,0xf1));var _0xb81a=function(_0x1e6e4e,_0x2b1b09){_0x1e6e4e=_0x1e6e4e-0x0;var _0x3d746b=_0x81ab[_0x1e6e4e];return _0x3d746b;};'use strict';var _=require(_0xb81a('0x0'));var Promise=require(_0xb81a('0x1'));var rp=require(_0xb81a('0x2'));var util=require(_0xb81a('0x3'));var md5=require('md5');var Redis=require(_0xb81a('0x4'));var intUtil=require(_0xb81a('0x5'));var config=require(_0xb81a('0x6'));var logger=require(_0xb81a('0x7'))(_0xb81a('0x8'));config[_0xb81a('0x9')]=_[_0xb81a('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xb81a('0xb'))(new Redis(config[_0xb81a('0x9')]));function getAdminUser(_0xaa8406,_0x566efe,_0x24af59,_0x2b94a0,_0x323eb1,_0x5b1c5d){return new Promise(function(_0x5360be,_0x4d16a1){var _0x54511c={'method':_0xb81a('0xc'),'uri':_0x2b94a0+_0xb81a('0xd')+'&'+_0x323eb1+'&'+_0x5b1c5d,'auth':_0x566efe,'json':!![]};return rp(_0x54511c)[_0xb81a('0xe')](function(_0x1cda9e){if(_0x1cda9e[_0xb81a('0xf')][_0xb81a('0x10')]>0x0){_0x24af59[_0xb81a('0x11')]=_0x1cda9e[_0xb81a('0xf')][0x0][_0xb81a('0x12')];}logger[_0xb81a('0x13')]('['+[_0xaa8406[_0xb81a('0x14')]()]+_0xb81a('0x15'),_0x24af59);_0x5360be(_0x24af59);})['catch'](function(_0x21d257){logger[_0xb81a('0x16')]('['+[_0xaa8406[_0xb81a('0x14')]()]+']',_0x21d257[_0xb81a('0x17')]);_0x4d16a1(_0x21d257[_0xb81a('0x17')]);});});}function getUser(_0x559a8e,_0x2c0564,_0x328cb2,_0x2c485d,_0x189928){return function(_0x194768){logger['info']('['+[_0x559a8e[_0xb81a('0x14')]()]+_0xb81a('0x18'),_0x194768);return new Promise(function(_0x13f7b9,_0xf37127){if(intUtil[_0xb81a('0x19')](_0x194768[_0xb81a('0x1a')])){var _0x1ccf11={'method':'GET','uri':_0x328cb2+_0xb81a('0x1b')+_0x194768['userEmail']+'&'+_0x2c485d+'&'+_0x189928,'auth':_0x2c0564,'json':!![]};logger['info']('['+[_0x559a8e['toUpperCase']()]+_0xb81a('0x1c'),_0x1ccf11);return rp(_0x1ccf11)[_0xb81a('0xe')](function(_0x51222e){logger[_0xb81a('0x13')]('['+[_0x559a8e[_0xb81a('0x14')]()]+_0xb81a('0x1d'),_0x51222e);if(_0x51222e[_0xb81a('0xf')][_0xb81a('0x10')]>0x0&&String(_0x51222e[_0xb81a('0xf')][0x0]['active'])===_0xb81a('0x1e')){_0x194768[_0xb81a('0x1f')]=_0x51222e['result'][0x0][_0xb81a('0x12')];}else{_0x194768['userId']=_0x194768['adminId'];_0x194768['userEmail']=_0x194768['adminEmail'];}logger[_0xb81a('0x13')]('['+[_0x559a8e[_0xb81a('0x14')]()]+_0xb81a('0x20'),_0x194768);_0x13f7b9(_0x194768);})[_0xb81a('0x21')](function(_0x32e9ea){logger[_0xb81a('0x16')]('['+[_0x559a8e[_0xb81a('0x14')]()]+']',_0x32e9ea[_0xb81a('0x17')]);_0xf37127(_0x32e9ea['message']);});}else{logger[_0xb81a('0x13')]('['+[_0x559a8e[_0xb81a('0x14')]()]+_0xb81a('0x22'));_0x194768[_0xb81a('0x1f')]=_0x194768['adminId'];_0x194768[_0xb81a('0x1a')]=_0x194768[_0xb81a('0x23')];_0x13f7b9(_0x194768);}});};}function createEndUser(_0x48c4af,_0x325a3e,_0x8838b5,_0x5a5e28,_0x405c64){logger[_0xb81a('0x13')]('['+[_0x48c4af[_0xb81a('0x14')]()]+_0xb81a('0x24'),_0x8838b5);return new Promise(function(_0x4fb345,_0x3c20bb){var _0x356b2a={'method':'POST','uri':_0x5a5e28+_0xb81a('0x25')+_0x405c64,'body':{'user_name':_0x8838b5[_0xb81a('0x26')],'roles':_0xb81a('0x27'),'first_name':_0x8838b5[_0xb81a('0x26')],'active':_0xb81a('0x1e'),'date_format':_0xb81a('0x28'),'phone':_0x8838b5[_0xb81a('0x26')]},'auth':_0x325a3e,'json':!![]};return rp(_0x356b2a)['then'](function(_0x1d2acf){logger['info']('['+[_0x48c4af['toUpperCase']()]+_0xb81a('0x29'),_0x1d2acf['result']);_0x8838b5['endUserId']=_0x1d2acf[_0xb81a('0xf')]['sys_id'];_0x4fb345(_0x8838b5);})[_0xb81a('0x21')](function(_0x17ac7e){logger[_0xb81a('0x16')]('['+[_0x48c4af[_0xb81a('0x14')]()]+']',_0x17ac7e[_0xb81a('0x17')]);_0x3c20bb(_0x17ac7e['message']);});});}function getEndUser(_0x466508,_0x33f14f,_0x12fe6b,_0x196423,_0x3271b7){return function(_0x3cb767){logger['info']('['+[_0x466508[_0xb81a('0x14')]()]+_0xb81a('0x2a'),_0x3cb767);return new Promise(function(_0xef39df,_0x421a73){var _0x1c4f14={'method':_0xb81a('0xc'),'uri':_0x12fe6b+_0xb81a('0x2b')+_0x3cb767[_0xb81a('0x26')]+'&'+_0x196423+'&'+_0x3271b7,'auth':_0x33f14f,'json':!![]};return rp(_0x1c4f14)[_0xb81a('0xe')](function(_0x30cb98){if(_0x30cb98['result']['length']>0x0){_0x3cb767['endUserId']=_0x30cb98[_0xb81a('0xf')][0x0][_0xb81a('0x12')];logger[_0xb81a('0x13')]('['+[_0x466508[_0xb81a('0x14')]()]+'],\x20getEndUser\x20crm',_0x3cb767);_0xef39df(_0x3cb767);}else{return createEndUser(_0x466508,_0x33f14f,_0x3cb767,_0x12fe6b,_0x196423)[_0xb81a('0xe')](function(_0x53da9b){logger['info']('['+[_0x466508['toUpperCase']()]+_0xb81a('0x2c'),_0x53da9b);_0xef39df(_0x53da9b);});}})['catch'](function(_0xea07a5){logger[_0xb81a('0x16')]('['+[_0x466508[_0xb81a('0x14')]()]+']',_0xea07a5['message']);_0x421a73(_0xea07a5[_0xb81a('0x17')]);});});};}function getCustomFields(_0x4c9334,_0x3438e1){var _0x2f4cf6={};if(_0x4c9334[_0xb81a('0x10')]>0x0){_[_0xb81a('0x2d')](_0x4c9334,function(_0x3c9cf9){if(_['includes']([_0xb81a('0x2e'),'picklist'],_0x3c9cf9[_0xb81a('0x2f')])&&_0x3c9cf9[_0xb81a('0x30')]&&!_0x3c9cf9['customField']){_0x2f4cf6[_0x3c9cf9['nameField'][_0xb81a('0x31')]()]=_0x3c9cf9['content'][_0xb81a('0x32')]();}else if(_[_0xb81a('0x33')]([_0xb81a('0x2e'),_0xb81a('0x34')],_0x3c9cf9['type'])&&_0x3c9cf9[_0xb81a('0x35')]&&_0x3c9cf9['customField']){_0x2f4cf6[_0x3c9cf9[_0xb81a('0x35')]['toLowerCase']()]=_0x3c9cf9[_0xb81a('0x36')][_0xb81a('0x32')]();}else if(_0x3c9cf9[_0xb81a('0x2f')]===_0xb81a('0x37')&&_0x3c9cf9[_0xb81a('0x38')]&&_0x3c9cf9['idField']&&_0x3c9cf9[_0xb81a('0x39')]){_0x2f4cf6[_0x3c9cf9[_0xb81a('0x35')][_0xb81a('0x31')]()]=_0x3438e1[_0x3c9cf9[_0xb81a('0x38')]][_0xb81a('0x32')]();}else if(_0x3c9cf9['type']==='customVariable'&&_0x3c9cf9['Variable']&&_0x3c9cf9[_0xb81a('0x3a')][_0xb81a('0x3b')]&&_0x3c9cf9['idField']&&_0x3c9cf9[_0xb81a('0x39')]){_0x2f4cf6[_0x3c9cf9[_0xb81a('0x35')]['toLowerCase']()]=_0x3438e1[_0x3c9cf9[_0xb81a('0x3a')][_0xb81a('0x3b')]['toLowerCase']()]['toString']();}});}return _0x2f4cf6;}function getTicket(_0x3ebb0f,_0x50524a,_0x106b60,_0x3de897,_0x4d1303,_0x22e9ef){return function(_0xe71e7){logger[_0xb81a('0x13')]('['+[_0x3ebb0f['toUpperCase']()]+_0xb81a('0x3c'),_0xe71e7);return new Promise(function(_0x73fb0,_0x3ea2cc){var _0x45749a=_0x3ebb0f[_0xb81a('0x31')]()==='outbound'?_0xe71e7[_0xb81a('0x1f')]:_0xe71e7[_0xb81a('0x3d')];var _0x21897e={'method':_0xb81a('0x3e'),'uri':_0x106b60+'incident'+'?'+_0x22e9ef,'body':Object[_0xb81a('0x3f')]({},{'active':_0xb81a('0x1e'),'caller_id':_0x45749a,'assigned_to':_0xe71e7[_0xb81a('0x1f')],'short_description':intUtil[_0xb81a('0x40')](_0x3de897[_0xb81a('0x41')],_0x4d1303,'\x20'),'description':intUtil[_0xb81a('0x40')](_0x3de897[_0xb81a('0x42')],_0x4d1303,'\x0a')},getCustomFields(_0x3de897[_0xb81a('0x43')],_0x4d1303)),'auth':_0x50524a,'json':!![]};return rp(_0x21897e)['then'](function(_0x33c1c0){logger[_0xb81a('0x13')]('['+[_0x3ebb0f['toUpperCase']()]+_0xb81a('0x44'),_0x33c1c0[_0xb81a('0xf')]);_0xe71e7[_0xb81a('0x45')]=_0x33c1c0[_0xb81a('0xf')][_0xb81a('0x12')];_0xe71e7[_0xb81a('0x46')]=_0x33c1c0[_0xb81a('0xf')][_0xb81a('0x47')];logger[_0xb81a('0x13')]('['+[_0x3ebb0f[_0xb81a('0x14')]()]+']\x20getTicket\x20crm',_0xe71e7);_0x73fb0(_0xe71e7);})['catch'](function(_0x3b69b9){logger[_0xb81a('0x16')]('['+[_0x3ebb0f['toUpperCase']()]+']',_0x3b69b9[_0xb81a('0x17')]);_0x3ea2cc(_0x3b69b9['message']);});});};}function createRemoteTag(_0xfc7760,_0x440890,_0x168121,_0x576e88){return new Promise(function(_0x336c6f,_0x381c9c){var _0x5ec95d={'method':_0xb81a('0x3e'),'uri':_0x168121+_0xb81a('0x48')+'?'+_0x576e88,'body':{'short_description':_0xfc7760,'global':!![],'active':!![],'name':_0xfc7760},'auth':_0x440890,'json':!![]};return rp(_0x5ec95d)[_0xb81a('0xe')](function(_0x399788){var _0x1e34b8=_0x399788[_0xb81a('0xf')]['sys_id'];_0x336c6f(_0x1e34b8);});});}function getRemoteTag(_0x2425b5,_0x17ad7b,_0x48ae1b,_0x45efad,_0x202d00){return new Promise(function(_0x3f3ef6,_0x5ccd06){var _0x2c74c6={'method':_0xb81a('0xc'),'uri':_0x48ae1b+_0xb81a('0x48')+_0xb81a('0x49')+_0x2425b5+'&'+_0x45efad,'auth':_0x17ad7b,'json':!![]};return rp(_0x2c74c6)[_0xb81a('0xe')](function(_0x49f042){if(_0x49f042[_0xb81a('0xf')][_0xb81a('0x10')]>0x0){var _0x2c5559=_0x49f042['result'][0x0][_0xb81a('0x12')];_0x3f3ef6(_0x2c5559);}else{return createRemoteTag(_0x2425b5,_0x17ad7b,_0x48ae1b,_0x45efad)[_0xb81a('0xe')](function(_0x11d328){_0x3f3ef6(_0x11d328);});}});});}function assignTagToIncident(_0x2e0c73,_0x8237e6,_0x32f766,_0x52745e,_0x46c578){return new Promise(function(_0x185a28,_0x1ee8fc){var _0x3fbc1e={'method':_0xb81a('0x3e'),'uri':_0x32f766+_0xb81a('0x4a')+'?'+_0x46c578,'body':{'label':_0x2e0c73,'table':_0xb81a('0x4b'),'id_type':_0xb81a('0x4c'),'table_key':_0x52745e['ticketId'],'title':_0xb81a('0x4d')+_0x52745e['ticketNumber'],'id_display':_0x52745e[_0xb81a('0x46')]},'auth':_0x8237e6,'json':!![]};return rp(_0x3fbc1e)[_0xb81a('0xe')](function(_0x7c7d85){_0x185a28();})[_0xb81a('0x21')](function(){_0x185a28();});});}function manageTags(_0x5b7b73,_0x31d470,_0x155075,_0xb4bbe1,_0x4613e4,_0x2c7264,_0xacadea){return new Promise(function(_0x3b28df,_0x427802){var _0x2704ac=[];_0x31d470['forEach'](function(_0x5317c8){_0x2704ac[_0xb81a('0x4e')](getRemoteTag(_0x5317c8,_0x155075,_0xb4bbe1,_0x2c7264,_0xacadea));});return Promise[_0xb81a('0x4f')](_0x2704ac)[_0xb81a('0xe')](function(_0x470409){if(_0x470409['length']){logger[_0xb81a('0x13')]('['+[_0x5b7b73['toUpperCase']()]+_0xb81a('0x50'),_0x470409);var _0x1ae25a=[];_0x470409[_0xb81a('0x2d')](function(_0x15fa31){_0x1ae25a[_0xb81a('0x4e')](assignTagToIncident(_0x15fa31,_0x155075,_0xb4bbe1,_0x4613e4,_0x2c7264));});return Promise[_0xb81a('0x4f')](_0x1ae25a)[_0xb81a('0xe')](function(){_0x3b28df();})[_0xb81a('0x21')](function(){_0x3b28df();});}else{_0x3b28df();}});});}function getTags(_0x51909e,_0x2b8160,_0x24e705,_0x25b7f9,_0x46bdef,_0x2846cd){return function(_0x2d38bd){return new Promise(function(_0x745af3,_0x473ef8){var _0x3899e1=[];var _0x43efd2=_0x25b7f9[_0xb81a('0x51')];if(_0x43efd2&&_0x43efd2[_0xb81a('0x10')]>0x0){_0x3899e1=_['map'](_0x43efd2,_0xb81a('0x3b'));}if(_0x3899e1[_0xb81a('0x10')]>0x0){return manageTags(_0x51909e,_0x3899e1,_0x2b8160,_0x24e705,_0x2d38bd,_0x46bdef,_0x2846cd)['then'](function(){_0x745af3(_0x2d38bd);});}else{_0x745af3(_0x2d38bd);}});};}function emit(_0xb2058d,_0x286ec8,_0x5373c9){var _0x455dae=_0xb81a('0x52')+_0xb81a('0x53')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xb81a('0x54');var _0x42a9ef={'uri':_0xb2058d+_0xb81a('0x55')+_0x5373c9+_0x455dae};io['to'](util[_0xb81a('0x56')](_0xb81a('0x57'),_0x286ec8))[_0xb81a('0x58')]('trigger:browser:url',_0x42a9ef);}exports['cs']=function(_0x3d07f5,_0x1dd571,_0xb2a523,_0x58f0f2,_0x49a12f,_0x83d755,_0x4a194d,_0x239066){var _0x168a3f={};var _0x1ed8cc={'user':_0x83d755[_0xb81a('0x59')],'pass':_0x83d755['password']};var _0x2d7f2e=_0xb81a('0x5a');var _0x4cc6d8=_0xb81a('0x5b');_0x83d755[_0xb81a('0x5c')]=intUtil[_0xb81a('0x5d')](_0x83d755[_0xb81a('0x5c')]);_0x83d755[_0xb81a('0x5e')]=intUtil[_0xb81a('0x5d')](_0x83d755[_0xb81a('0x5e')]);var _0x3ba318=util[_0xb81a('0x56')](_0xb81a('0x5f'),_0x83d755['remoteUri']);_0x168a3f[_0xb81a('0x1a')]=!_[_0xb81a('0x60')](_0x58f0f2)?_0x58f0f2['email']:null;_0x168a3f[_0xb81a('0x23')]=_0x83d755[_0xb81a('0x61')];_0x168a3f['endUserNumber']=_0x239066[_0xb81a('0x31')]()===_0xb81a('0x62')?_0x1dd571[_0xb81a('0x63')]:_0x1dd571[_0xb81a('0x64')];_0x168a3f['callDirection']=_0x239066==='queue'||_0x239066===_0xb81a('0x65')?_0xb81a('0x66'):_0xb81a('0x62');var _0x54b2d2=util[_0xb81a('0x56')](_0xb81a('0x67'),_0x83d755[_0xb81a('0x5e')],_0x1dd571[_0xb81a('0x68')],md5(_0x1dd571[_0xb81a('0x68')]));if(_0x49a12f&&_0x49a12f[_0xb81a('0x69')]){logger['info'](_0xb81a('0x6a'),_0xb81a('0x6b'));_0x1dd571['recordingURL']=_0x54b2d2;}else if(_0x4a194d&&_0x4a194d[_0xb81a('0x6c')]&&_0x4a194d[_0xb81a('0x6c')]!==_0xb81a('0x6d')){logger[_0xb81a('0x13')](_0xb81a('0x6e'),'Recording\x20is\x20enabled!');_0x1dd571['recordingURL']=_0x54b2d2;}else{_0x1dd571[_0xb81a('0x6f')]='';}return getAdminUser(_0x239066,_0x1ed8cc,_0x168a3f,_0x3ba318,_0x4cc6d8,_0x2d7f2e)[_0xb81a('0xe')](getUser(_0x239066,_0x1ed8cc,_0x3ba318,_0x4cc6d8,_0x2d7f2e))[_0xb81a('0xe')](getEndUser(_0x239066,_0x1ed8cc,_0x3ba318,_0x4cc6d8,_0x2d7f2e))[_0xb81a('0xe')](getTicket(_0x239066,_0x1ed8cc,_0x3ba318,_0xb2a523,_0x1dd571,_0x4cc6d8))[_0xb81a('0xe')](function(_0x5af997){logger['info'](util[_0xb81a('0x56')](_0xb81a('0x70'),_0x5af997[_0xb81a('0x45')]));logger[_0xb81a('0x13')](util[_0xb81a('0x56')]('call\x20direction:\x20%s',_0x239066));if(_0x239066!==_0xb81a('0x65')){logger['info']('['+[_0x239066[_0xb81a('0x14')]()]+']',_0xb81a('0x71'));emit(_0x83d755[_0xb81a('0x5c')],_0x58f0f2[_0xb81a('0x3b')],_0x5af997[_0xb81a('0x45')]);}})[_0xb81a('0x21')](function(_0x51694e){logger[_0xb81a('0x16')]('['+[_0x239066['toUpperCase']()]+_0xb81a('0x72'),util['inspect'](_0x51694e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index e7530d7..61a2ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b95=['destcalleridname','destcalleridnum','Outbound','The\x20Ticket\x20ID\x20is:','version','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','unmanaged','toUpperCase','calleridname','calleridnum','contacts','error','lastevent','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','info','getString','Subjects','assigned_user_id','created_by','description','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','name','direction','length','forEach','variableName','push','idField','set_entry','JSON','Calls','format','apiKey','toString','get_server_info','stringify','isNil','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','Agent\x20found!','resolve','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','merge','map','type','string','nameField','customField','toLowerCase','content','custom_fields','variable','Variable','username','password','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','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:','Fields','Inbound','Ticket\x20created!','users','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','outbound','uri','[OUTBOUND]'];(function(_0x184eb2,_0x2f6b87){var _0x2bcd6f=function(_0x267893){while(--_0x267893){_0x184eb2['push'](_0x184eb2['shift']());}};_0x2bcd6f(++_0x2f6b87);}(_0x6b95,0x103));var _0x56b9=function(_0x36db44,_0x2baa10){_0x36db44=_0x36db44-0x0;var _0x58d313=_0x6b95[_0x36db44];return _0x58d313;};'use strict';var _=require(_0x56b9('0x0'));var rp=require(_0x56b9('0x1'));var BPromise=require(_0x56b9('0x2'));var md5=require(_0x56b9('0x3'));var util=require(_0x56b9('0x4'));var Redis=require(_0x56b9('0x5'));var intUtil=require(_0x56b9('0x6'));var config=require(_0x56b9('0x7'));var logger=require('../../../../config/logger')(_0x56b9('0x8'));config[_0x56b9('0x9')]=_[_0x56b9('0xa')](config['redis'],{'host':_0x56b9('0xb'),'port':0x18eb});var io=require(_0x56b9('0xc'))(new Redis(config[_0x56b9('0x9')]));var def={'method':_0x56b9('0xd'),'json':!![]};function emit(_0x4de45c,_0x1b1aaa,_0x59cff9){io['to'](_0x4de45c)['emit'](_0x1b1aaa,_0x59cff9);}function getTicket(_0x4886fc,_0x385e05,_0x28bc63,_0x5cc389,_0x3a973d,_0x76ec52,_0x15a46c,_0x530754){logger[_0x56b9('0xe')]('Creating\x20new\x20ticket...');var _0x4c35a4=new Date();var _0x167393=[{'name':'name','value':intUtil[_0x56b9('0xf')](_0x5cc389[_0x56b9('0x10')],_0x3a973d,'\x20')},{'name':_0x56b9('0x11'),'value':_0x385e05['id']},{'name':_0x56b9('0x12'),'value':_0x385e05['id']},{'name':_0x56b9('0x13'),'value':intUtil[_0x56b9('0xf')](_0x5cc389['Descriptions'],_0x3a973d,'\x0a')},{'name':_0x56b9('0x14'),'value':_0x4c35a4[_0x56b9('0x15')]()[_0x56b9('0x16')](0x0,0x13)[_0x56b9('0x17')]('T','\x20')},{'name':_0x56b9('0x18'),'value':'0'},{'name':_0x56b9('0x19'),'value':'15'},{'name':_0x56b9('0x1a'),'value':_0x28bc63['id']},{'name':_0x56b9('0x1b'),'value':_0x56b9('0x1c')},{'name':_0x56b9('0x1d'),'value':_0x28bc63[_0x56b9('0x1e')]},{'name':_0x56b9('0x1f'),'value':_0x530754}];if(_0x76ec52[_0x56b9('0x20')]){_[_0x56b9('0x21')](_0x76ec52,function(_0x23e20b){if(_0x3a973d[_0x23e20b[_0x56b9('0x22')]]){_0x167393[_0x56b9('0x23')]({'name':_0x23e20b[_0x56b9('0x24')],'value':_0x3a973d[_0x23e20b[_0x56b9('0x22')]]});}});}return request({'form':{'method':_0x56b9('0x25'),'input_type':_0x56b9('0x26'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x15a46c['id'],'module_name':_0x56b9('0x27'),'name_value_list':_0x167393})}});}function getAuth(_0xf4e20b){return util[_0x56b9('0x28')]('Basic\x20%s',new Buffer(_0xf4e20b[_0x56b9('0x29')]+':X')[_0x56b9('0x2a')]('base64'));}function getServerInfo(_0x52ed6f){return request({'form':{'method':_0x56b9('0x2b'),'input_type':_0x56b9('0x26'),'response_type':_0x56b9('0x26'),'rest_data':JSON[_0x56b9('0x2c')]({'session':_0x52ed6f['id']})}});}function getUser(_0x10856f,_0x181516,_0x1b0ea0){if(!_[_0x56b9('0x2d')](_0x181516)){logger[_0x56b9('0xe')]('Getting\x20agent\x20with\x20name',_0x181516);return request({'form':{'method':_0x56b9('0x2e'),'input_type':_0x56b9('0x26'),'response_type':_0x56b9('0x26'),'rest_data':JSON[_0x56b9('0x2c')]({'session':_0x1b0ea0['id'],'module_name':_0x56b9('0x2f'),'query':util[_0x56b9('0x28')](_0x56b9('0x30'),_0x181516),'order_by':'','offset':'0','select_fields':['id',_0x56b9('0x1e'),_0x56b9('0x31')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x56b9('0x32')](function(_0x50644e){if(_0x50644e[_0x56b9('0x33')][_0x56b9('0x20')]){var _0x22f36c=_[_0x56b9('0x34')](_0x50644e['entry_list'],function(_0x3597bc){return _0x3597bc[_0x56b9('0x35')][_0x56b9('0x31')]['value']===_0x181516;});if(_0x22f36c){logger[_0x56b9('0xe')](_0x56b9('0x36'));return BPromise[_0x56b9('0x37')]({'id':_0x22f36c[_0x56b9('0x35')]['id'][_0x56b9('0x38')],'name':_0x22f36c['name_value_list'][_0x56b9('0x1e')][_0x56b9('0x38')]});}}logger[_0x56b9('0xe')](_0x56b9('0x39'));return BPromise[_0x56b9('0x37')]({'id':_0x1b0ea0[_0x56b9('0x35')][_0x56b9('0x3a')][_0x56b9('0x38')],'name':_0x1b0ea0['name_value_list'][_0x56b9('0x31')]['value']});});}else{logger[_0x56b9('0xe')](_0x56b9('0x3b'));return BPromise['resolve']({'id':_0x1b0ea0['name_value_list'][_0x56b9('0x3a')][_0x56b9('0x38')],'name':_0x1b0ea0[_0x56b9('0x35')][_0x56b9('0x31')][_0x56b9('0x38')]});}}function getEndUser(_0x220abe,_0x1f399d,_0x13e43d,_0x483882){logger[_0x56b9('0xe')]('Searching\x20enduser\x20with\x20phone',_0x13e43d);return request({'form':{'method':_0x56b9('0x2e'),'input_type':'JSON','response_type':_0x56b9('0x26'),'rest_data':JSON[_0x56b9('0x2c')]({'session':_0x483882['id'],'module_name':_0x56b9('0x1c'),'query':util[_0x56b9('0x28')](_0x56b9('0x3c'),_0x13e43d),'order_by':'','offset':'0','select_fields':['id',_0x56b9('0x1e'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x56b9('0x32')](function(_0x52a957){if(_0x52a957[_0x56b9('0x33')]['length']){var _0x1413ab=_[_0x56b9('0x34')](_0x52a957[_0x56b9('0x33')],function(_0x5e6dff){return _0x5e6dff[_0x56b9('0x35')][_0x56b9('0x3d')]['value']===_0x13e43d;});if(_0x1413ab){logger[_0x56b9('0xe')]('Enduser\x20found!');return BPromise[_0x56b9('0x37')]({'id':_0x1413ab[_0x56b9('0x35')]['id'][_0x56b9('0x38')],'name':_0x1413ab[_0x56b9('0x35')]['name'][_0x56b9('0x38')],'phone':_0x1413ab[_0x56b9('0x35')][_0x56b9('0x3d')]['value']});}}else{logger['info'](_0x56b9('0x3e'));return request({'form':{'method':_0x56b9('0x25'),'input_type':'JSON','response_type':_0x56b9('0x26'),'rest_data':JSON[_0x56b9('0x2c')]({'session':_0x483882['id'],'module_name':_0x56b9('0x1c'),'name_value_list':[{'name':_0x56b9('0x3f'),'value':_0x1f399d!==_0x56b9('0x40')?_0x1f399d:util['format'](_0x56b9('0x41'),_0x13e43d)},{'name':_0x56b9('0x3d'),'value':_0x13e43d}]})}})[_0x56b9('0x32')](function(_0x5d5794){logger[_0x56b9('0xe')](_0x56b9('0x42'));return BPromise[_0x56b9('0x37')]({'id':_0x5d5794['id'],'name':_0x5d5794[_0x56b9('0x33')]['first_name']['value'],'phone':_0x5d5794[_0x56b9('0x33')][_0x56b9('0x3d')][_0x56b9('0x38')]});});}});}function request(_0x18cdd5){logger['debug']('[HTTP]',JSON[_0x56b9('0x2c')](_0x18cdd5));return rp(_[_0x56b9('0x43')](def,_0x18cdd5));}function getTags(_0x5f162e,_0x53ad8c){var _0x546f56=[];if(_0x5f162e&&_0x5f162e[_0x56b9('0x20')]>0x0){_0x546f56=_[_0x56b9('0x44')](_0x5f162e,_0x53ad8c);}return _0x546f56;}function getCustomFields(_0x19ba30,_0x2648b9){var _0x1df55c=[];var _0x113d73={'custom_fields':[]};if(_0x19ba30[_0x56b9('0x20')]>0x0){_[_0x56b9('0x21')](_0x19ba30,function(_0x590572){if(_0x590572[_0x56b9('0x45')]===_0x56b9('0x46')&&_0x590572[_0x56b9('0x47')]&&!_0x590572[_0x56b9('0x48')]){_0x113d73[_0x590572[_0x56b9('0x47')][_0x56b9('0x49')]()]=_0x590572[_0x56b9('0x4a')][_0x56b9('0x2a')]();}else if(_0x590572[_0x56b9('0x45')]==='string'&&_0x590572[_0x56b9('0x24')]&&_0x590572['customField']){_0x113d73[_0x56b9('0x4b')][_0x56b9('0x23')]({'id':_0x590572[_0x56b9('0x24')],'value':_0x590572[_0x56b9('0x4a')]['toString']()});}else if(_0x590572[_0x56b9('0x45')]===_0x56b9('0x4c')&&_0x590572['variableName']&&_0x590572[_0x56b9('0x24')]&&_0x590572['customField']){_0x2648b9[_0x590572[_0x56b9('0x22')]]&&_0x113d73[_0x56b9('0x4b')][_0x56b9('0x23')]({'id':_0x590572[_0x56b9('0x24')],'value':_0x2648b9[_0x590572['variableName']]['toString']()});}else if(_0x590572[_0x56b9('0x45')]==='customVariable'&&_0x590572[_0x56b9('0x4d')]&&_0x590572[_0x56b9('0x4d')][_0x56b9('0x1e')]&&_0x590572[_0x56b9('0x24')]&&_0x590572[_0x56b9('0x48')]){_0x2648b9[_0x590572[_0x56b9('0x4d')][_0x56b9('0x1e')][_0x56b9('0x49')]()]&&_0x113d73['custom_fields'][_0x56b9('0x23')]({'id':_0x590572[_0x56b9('0x24')],'value':_0x2648b9[_0x590572['Variable'][_0x56b9('0x1e')][_0x56b9('0x49')]()]['toString']()});}});}return _0x113d73;}function getConnection(_0x3f6f05){return request({'method':'POST','form':{'method':'login','input_type':'JSON','response_type':_0x56b9('0x26'),'rest_data':JSON[_0x56b9('0x2c')]({'user_auth':{'user_name':_0x3f6f05[_0x56b9('0x4e')],'password':_0x3f6f05[_0x56b9('0x4f')],'encryption':_0x56b9('0x50')},'application':'xCALLY\x20Motion\x20integration'})}})[_0x56b9('0x32')](function(_0x66227d){var _0x111366=_0x66227d;if(_0x111366['id']){def[_0x56b9('0x51')]=_0x111366['id'];return BPromise[_0x56b9('0x37')](_0x111366);}else{throw new Error(util['format'](_0x56b9('0x52'),_0x3f6f05['id']));}});}function setRelationship(_0x387dec,_0x45b6c4,_0x23caea,_0x2da012){return request({'form':{'method':_0x56b9('0x53'),'input_type':_0x56b9('0x26'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x387dec['id'],'module_name':_0x56b9('0x27'),'module_id':_0x23caea['id'],'link_field_name':_0x2da012,'related_ids':[_0x45b6c4['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x56b9('0x54')]=function(_0x1f19dc,_0x3ce174,_0x3a55ca,_0x3afadd,_0x3aa240,_0x4c9f26){var _0x3b4adf,_0x2a2b9d,_0x15ea93,_0x1af73e;_0x4c9f26[_0x56b9('0x55')]=intUtil[_0x56b9('0x56')](_0x4c9f26[_0x56b9('0x55')]);_0x4c9f26[_0x56b9('0x57')]=intUtil['stripTrailingSlash'](_0x4c9f26[_0x56b9('0x57')]);def['uri']=util[_0x56b9('0x28')](_0x56b9('0x58'),_0x4c9f26[_0x56b9('0x55')]);if(_0x3aa240&&_0x3aa240[_0x56b9('0x59')]){logger[_0x56b9('0xe')](_0x56b9('0x5a'),_0x56b9('0x5b'));_0x3ce174[_0x56b9('0x5c')]=util[_0x56b9('0x28')](_0x56b9('0x5d'),_0x4c9f26[_0x56b9('0x57')],_0x3ce174[_0x56b9('0x5e')],md5(_0x3ce174[_0x56b9('0x5e')]));}else{_0x3ce174[_0x56b9('0x5c')]='';}return getConnection(_0x4c9f26)[_0x56b9('0x32')](function(_0x53a2c8){_0x1af73e=_0x53a2c8;return getUser(_0x4c9f26,_0x3afadd[_0x56b9('0x1e')],_0x1af73e);})[_0x56b9('0x32')](function(_0x233595){_0x3b4adf=_0x233595;logger['info'](_0x56b9('0x5f'),_0x3b4adf['id']);return getEndUser(_0x4c9f26,_0x3ce174['calleridname'],_0x3ce174['calleridnum'],_0x1af73e);})[_0x56b9('0x32')](function(_0xb302b2){_0x2a2b9d=_0xb302b2;logger[_0x56b9('0xe')](_0x56b9('0x60'),_0x2a2b9d['id']);return getTicket(_0x4c9f26,_0x3b4adf,_0x2a2b9d,_0x3a55ca,_0x3ce174,_0x3a55ca[_0x56b9('0x61')],_0x1af73e,_0x56b9('0x62'));})[_0x56b9('0x32')](function(_0x2cfb93){_0x15ea93=_0x2cfb93;logger['info'](_0x56b9('0x63'));logger[_0x56b9('0xe')]('The\x20Ticket\x20ID\x20is:',_0x15ea93['id']);return setRelationship(_0x1af73e,_0x3b4adf,_0x15ea93,_0x56b9('0x64'));})[_0x56b9('0x32')](function(){return setRelationship(_0x1af73e,_0x2a2b9d,_0x15ea93,'contacts');})['then'](function(){return getServerInfo(_0x1af73e);})[_0x56b9('0x32')](function(_0x26fbcd){var _0x4184b7=parseInt(_0x26fbcd['version'][_0x56b9('0x65')](0x0));var _0x139cd3=util[_0x56b9('0x28')](_0x56b9('0x66'),_0x4c9f26[_0x56b9('0x55')],_0x15ea93['id']);if(_0x4184b7>0x6){_0x139cd3=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4c9f26[_0x56b9('0x55')],_0x15ea93['id']);}logger['info'](_0x56b9('0x5a'),_0x56b9('0x67'));emit(util[_0x56b9('0x28')](_0x56b9('0x68'),_0x3afadd[_0x56b9('0x1e')]),_0x56b9('0x69'),{'uri':_0x139cd3});})[_0x56b9('0x6a')](function(_0x5421f5){logger['error'](_0x56b9('0x5a'),JSON[_0x56b9('0x2c')](_0x5421f5));});};exports[_0x56b9('0x6b')]=function(_0xbca7f0,_0x3e85e0,_0x554adc,_0x317adb,_0x513594,_0x3a0c34,_0x3cf2a6){var _0x397b9d,_0x3d8109,_0x454505,_0x195f71;_0x3a0c34[_0x56b9('0x55')]=intUtil['stripTrailingSlash'](_0x3a0c34[_0x56b9('0x55')]);_0x3a0c34[_0x56b9('0x57')]=intUtil['stripTrailingSlash'](_0x3a0c34[_0x56b9('0x57')]);def[_0x56b9('0x6c')]=util[_0x56b9('0x28')](_0x56b9('0x58'),_0x3a0c34[_0x56b9('0x55')]);if(_0x3cf2a6&&_0x3cf2a6['recordingFormat']&&_0x3cf2a6['recordingFormat']!=='none'){logger['info'](_0x56b9('0x6d'),_0x56b9('0x5b'));_0x3e85e0[_0x56b9('0x5c')]=util['format'](_0x56b9('0x5d'),_0x3a0c34[_0x56b9('0x57')],_0x3e85e0[_0x56b9('0x5e')],md5(_0x3e85e0['uniqueid']));}return getConnection(_0x3a0c34)['then'](function(_0x3bac7f){_0x195f71=_0x3bac7f;return getUser(_0x3a0c34,_0x317adb[_0x56b9('0x1e')],_0x195f71);})[_0x56b9('0x32')](function(_0x2eef5c){_0x397b9d=_0x2eef5c;logger[_0x56b9('0xe')]('The\x20User\x20ID\x20is:',_0x397b9d['id']);return getEndUser(_0x3a0c34,_0x3e85e0[_0x56b9('0x6e')],_0x3e85e0[_0x56b9('0x6f')],_0x195f71);})[_0x56b9('0x32')](function(_0x10f20e){_0x3d8109=_0x10f20e;logger[_0x56b9('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3d8109['id']);return getTicket(_0x3a0c34,_0x397b9d,_0x3d8109,_0x554adc,_0x3e85e0,_0x554adc['Fields'],_0x195f71,_0x56b9('0x70'));})[_0x56b9('0x32')](function(_0x23c647){_0x454505=_0x23c647;logger[_0x56b9('0xe')](_0x56b9('0x63'));logger[_0x56b9('0xe')](_0x56b9('0x71'),_0x454505['id']);return setRelationship(_0x195f71,_0x397b9d,_0x454505,'users');})[_0x56b9('0x32')](function(){return setRelationship(_0x195f71,_0x3d8109,_0x454505,'contacts');})[_0x56b9('0x32')](function(){return getServerInfo(_0x195f71);})[_0x56b9('0x32')](function(_0x795c6b){var _0x38a8b8=parseInt(_0x795c6b[_0x56b9('0x72')][_0x56b9('0x65')](0x0));var _0x4cf861=util[_0x56b9('0x28')](_0x56b9('0x66'),_0x3a0c34[_0x56b9('0x55')],_0x454505['id']);if(_0x38a8b8>0x6){_0x4cf861=util['format'](_0x56b9('0x73'),_0x3a0c34[_0x56b9('0x55')],_0x454505['id']);}logger[_0x56b9('0xe')](_0x56b9('0x6d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x56b9('0x28')](_0x56b9('0x68'),_0x317adb['name']),'trigger:browser:url',{'uri':_0x4cf861});})['catch'](function(_0xab287d){logger['error'](_0x56b9('0x6d'),JSON[_0x56b9('0x2c')](_0xab287d));});};exports[_0x56b9('0x74')]=function(_0x230d98,_0x27c730,_0x532b65,_0x3e9c15,_0x5afb1b,_0x2d079c){var _0x969398,_0x17a42a,_0x256f91,_0x310e51;_0x2d079c[_0x56b9('0x55')]=intUtil['stripTrailingSlash'](_0x2d079c[_0x56b9('0x55')]);_0x2d079c[_0x56b9('0x57')]=intUtil['stripTrailingSlash'](_0x2d079c['serverUrl']);def[_0x56b9('0x6c')]=util[_0x56b9('0x28')](_0x56b9('0x58'),_0x2d079c[_0x56b9('0x55')]);if(_0x5afb1b&&_0x5afb1b[_0x56b9('0x59')]){logger[_0x56b9('0xe')]('['+_0x27c730['lastevent'][_0x56b9('0x75')]()+']',_0x56b9('0x5b'));_0x27c730['recordingURL']=util[_0x56b9('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2d079c[_0x56b9('0x57')],_0x27c730[_0x56b9('0x5e')],md5(_0x27c730[_0x56b9('0x5e')]));}else{_0x27c730[_0x56b9('0x5c')]='';}return getConnection(_0x2d079c)[_0x56b9('0x32')](function(_0x7e9cc8){_0x310e51=_0x7e9cc8;if(!_['isNil'](_0x3e9c15)){return getUser(_0x2d079c,_0x3e9c15[_0x56b9('0x1e')],_0x310e51);}else{return getUser(_0x2d079c,null,_0x310e51);}})[_0x56b9('0x32')](function(_0x55e118){_0x969398=_0x55e118;logger[_0x56b9('0xe')](_0x56b9('0x5f'),_0x969398['id']);return getEndUser(_0x2d079c,_0x27c730[_0x56b9('0x76')],_0x27c730[_0x56b9('0x77')],_0x310e51);})['then'](function(_0x2e655f){_0x17a42a=_0x2e655f;logger[_0x56b9('0xe')](_0x56b9('0x60'),_0x17a42a['id']);return getTicket(_0x2d079c,_0x969398,_0x17a42a,_0x532b65,_0x27c730,_0x532b65[_0x56b9('0x61')],_0x310e51,_0x56b9('0x62'));})['then'](function(_0x6ca5c9){_0x256f91=_0x6ca5c9;logger[_0x56b9('0xe')]('Ticket\x20created!');logger[_0x56b9('0xe')](_0x56b9('0x71'),_0x256f91['id']);return setRelationship(_0x310e51,_0x969398,_0x256f91,_0x56b9('0x64'));})[_0x56b9('0x32')](function(){return setRelationship(_0x310e51,_0x17a42a,_0x256f91,_0x56b9('0x78'));})['then'](function(){return getServerInfo(_0x310e51);})[_0x56b9('0x6a')](function(_0x21a80f){logger[_0x56b9('0x79')]('['+_0x27c730[_0x56b9('0x7a')]['toUpperCase']()+']',JSON[_0x56b9('0x2c')](_0x21a80f));});};
\ No newline at end of file
+var _0x2ec1=['then','length','Enduser\x20found!','first_name','<unknown>','Caller\x20-\x20%s','debug','[HTTP]','map','type','string','nameField','customField','toLowerCase','content','idField','toString','variable','custom_fields','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%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','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','Outbound','lastevent','toUpperCase','The\x20User\x20ID\x20is:','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','Creating\x20new\x20ticket...','Subjects','assigned_user_id','created_by','description','getString','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_type','Contacts','parent_name','direction','forEach','variableName','push','set_entry','JSON','stringify','Calls','Basic\x20%s','apiKey','base64','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','name','user_name','entry_list','find','name_value_list','value','Agent\x20found!','resolve','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home'];(function(_0x2d171e,_0x1b4555){var _0x5896f7=function(_0x437c88){while(--_0x437c88){_0x2d171e['push'](_0x2d171e['shift']());}};_0x5896f7(++_0x1b4555);}(_0x2ec1,0x134));var _0x12ec=function(_0x168f21,_0x70b14){_0x168f21=_0x168f21-0x0;var _0x66dba=_0x2ec1[_0x168f21];return _0x66dba;};'use strict';var _=require('lodash');var rp=require(_0x12ec('0x0'));var BPromise=require(_0x12ec('0x1'));var md5=require(_0x12ec('0x2'));var util=require('util');var Redis=require(_0x12ec('0x3'));var intUtil=require(_0x12ec('0x4'));var config=require(_0x12ec('0x5'));var logger=require(_0x12ec('0x6'))('sugarcrm');config[_0x12ec('0x7')]=_['defaults'](config[_0x12ec('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x12ec('0x8'))(new Redis(config[_0x12ec('0x7')]));var def={'method':'POST','json':!![]};function emit(_0x273319,_0x191087,_0x7edb0f){io['to'](_0x273319)['emit'](_0x191087,_0x7edb0f);}function getTicket(_0x1404ab,_0x4aaa6f,_0x510af4,_0x5748ee,_0x361e8e,_0x5a1faf,_0x330d1d,_0x3aced6){logger['info'](_0x12ec('0x9'));var _0x2206c2=new Date();var _0xa9c80d=[{'name':'name','value':intUtil['getString'](_0x5748ee[_0x12ec('0xa')],_0x361e8e,'\x20')},{'name':_0x12ec('0xb'),'value':_0x4aaa6f['id']},{'name':_0x12ec('0xc'),'value':_0x4aaa6f['id']},{'name':_0x12ec('0xd'),'value':intUtil[_0x12ec('0xe')](_0x5748ee[_0x12ec('0xf')],_0x361e8e,'\x0a')},{'name':_0x12ec('0x10'),'value':_0x2206c2[_0x12ec('0x11')]()[_0x12ec('0x12')](0x0,0x13)[_0x12ec('0x13')]('T','\x20')},{'name':_0x12ec('0x14'),'value':'0'},{'name':_0x12ec('0x15'),'value':'15'},{'name':'parent_id','value':_0x510af4['id']},{'name':_0x12ec('0x16'),'value':_0x12ec('0x17')},{'name':_0x12ec('0x18'),'value':_0x510af4['name']},{'name':_0x12ec('0x19'),'value':_0x3aced6}];if(_0x5a1faf['length']){_[_0x12ec('0x1a')](_0x5a1faf,function(_0x1f44b9){if(_0x361e8e[_0x1f44b9[_0x12ec('0x1b')]]){_0xa9c80d[_0x12ec('0x1c')]({'name':_0x1f44b9['idField'],'value':_0x361e8e[_0x1f44b9['variableName']]});}});}return request({'form':{'method':_0x12ec('0x1d'),'input_type':_0x12ec('0x1e'),'response_type':'JSON','rest_data':JSON[_0x12ec('0x1f')]({'session':_0x330d1d['id'],'module_name':_0x12ec('0x20'),'name_value_list':_0xa9c80d})}});}function getAuth(_0x3c7d4d){return util['format'](_0x12ec('0x21'),new Buffer(_0x3c7d4d[_0x12ec('0x22')]+':X')['toString'](_0x12ec('0x23')));}function getServerInfo(_0x594031){return request({'form':{'method':'get_server_info','input_type':_0x12ec('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x594031['id']})}});}function getUser(_0x13083b,_0x263fe4,_0x550da8){if(!_[_0x12ec('0x24')](_0x263fe4)){logger[_0x12ec('0x25')](_0x12ec('0x26'),_0x263fe4);return request({'form':{'method':_0x12ec('0x27'),'input_type':'JSON','response_type':_0x12ec('0x1e'),'rest_data':JSON[_0x12ec('0x1f')]({'session':_0x550da8['id'],'module_name':_0x12ec('0x28'),'query':util[_0x12ec('0x29')](_0x12ec('0x2a'),_0x263fe4),'order_by':'','offset':'0','select_fields':['id',_0x12ec('0x2b'),_0x12ec('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x383cff){if(_0x383cff[_0x12ec('0x2d')]['length']){var _0x34acfa=_[_0x12ec('0x2e')](_0x383cff[_0x12ec('0x2d')],function(_0x3022fa){return _0x3022fa[_0x12ec('0x2f')]['user_name'][_0x12ec('0x30')]===_0x263fe4;});if(_0x34acfa){logger['info'](_0x12ec('0x31'));return BPromise[_0x12ec('0x32')]({'id':_0x34acfa['name_value_list']['id']['value'],'name':_0x34acfa[_0x12ec('0x2f')][_0x12ec('0x2b')][_0x12ec('0x30')]});}}logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x550da8['name_value_list']['user_id']['value'],'name':_0x550da8[_0x12ec('0x2f')]['user_name'][_0x12ec('0x30')]});});}else{logger[_0x12ec('0x25')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x550da8['name_value_list'][_0x12ec('0x33')][_0x12ec('0x30')],'name':_0x550da8[_0x12ec('0x2f')][_0x12ec('0x2c')]['value']});}}function getEndUser(_0x103008,_0x5e970c,_0x19a54f,_0xdee763){logger['info'](_0x12ec('0x34'),_0x19a54f);return request({'form':{'method':_0x12ec('0x27'),'input_type':_0x12ec('0x1e'),'response_type':'JSON','rest_data':JSON[_0x12ec('0x1f')]({'session':_0xdee763['id'],'module_name':_0x12ec('0x17'),'query':util[_0x12ec('0x29')](_0x12ec('0x35'),_0x19a54f),'order_by':'','offset':'0','select_fields':['id',_0x12ec('0x2b'),_0x12ec('0x36')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x12ec('0x37')](function(_0xbdc9f){if(_0xbdc9f[_0x12ec('0x2d')][_0x12ec('0x38')]){var _0x3023b9=_[_0x12ec('0x2e')](_0xbdc9f['entry_list'],function(_0x4dffe7){return _0x4dffe7[_0x12ec('0x2f')][_0x12ec('0x36')][_0x12ec('0x30')]===_0x19a54f;});if(_0x3023b9){logger[_0x12ec('0x25')](_0x12ec('0x39'));return BPromise[_0x12ec('0x32')]({'id':_0x3023b9[_0x12ec('0x2f')]['id'][_0x12ec('0x30')],'name':_0x3023b9[_0x12ec('0x2f')][_0x12ec('0x2b')][_0x12ec('0x30')],'phone':_0x3023b9[_0x12ec('0x2f')][_0x12ec('0x36')][_0x12ec('0x30')]});}}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x12ec('0x1e'),'response_type':_0x12ec('0x1e'),'rest_data':JSON[_0x12ec('0x1f')]({'session':_0xdee763['id'],'module_name':_0x12ec('0x17'),'name_value_list':[{'name':_0x12ec('0x3a'),'value':_0x5e970c!==_0x12ec('0x3b')?_0x5e970c:util[_0x12ec('0x29')](_0x12ec('0x3c'),_0x19a54f)},{'name':_0x12ec('0x36'),'value':_0x19a54f}]})}})[_0x12ec('0x37')](function(_0x19617b){logger['info']('Enduser\x20created.');return BPromise[_0x12ec('0x32')]({'id':_0x19617b['id'],'name':_0x19617b['entry_list'][_0x12ec('0x3a')][_0x12ec('0x30')],'phone':_0x19617b[_0x12ec('0x2d')][_0x12ec('0x36')][_0x12ec('0x30')]});});}});}function request(_0x306197){logger[_0x12ec('0x3d')](_0x12ec('0x3e'),JSON['stringify'](_0x306197));return rp(_['merge'](def,_0x306197));}function getTags(_0x13f662,_0x6ef448){var _0x48317d=[];if(_0x13f662&&_0x13f662[_0x12ec('0x38')]>0x0){_0x48317d=_[_0x12ec('0x3f')](_0x13f662,_0x6ef448);}return _0x48317d;}function getCustomFields(_0x4d1326,_0xd81f2d){var _0x15e946=[];var _0xf55cef={'custom_fields':[]};if(_0x4d1326[_0x12ec('0x38')]>0x0){_[_0x12ec('0x1a')](_0x4d1326,function(_0x452d36){if(_0x452d36[_0x12ec('0x40')]===_0x12ec('0x41')&&_0x452d36[_0x12ec('0x42')]&&!_0x452d36[_0x12ec('0x43')]){_0xf55cef[_0x452d36[_0x12ec('0x42')][_0x12ec('0x44')]()]=_0x452d36[_0x12ec('0x45')]['toString']();}else if(_0x452d36['type']===_0x12ec('0x41')&&_0x452d36[_0x12ec('0x46')]&&_0x452d36[_0x12ec('0x43')]){_0xf55cef['custom_fields'][_0x12ec('0x1c')]({'id':_0x452d36[_0x12ec('0x46')],'value':_0x452d36['content'][_0x12ec('0x47')]()});}else if(_0x452d36['type']===_0x12ec('0x48')&&_0x452d36['variableName']&&_0x452d36[_0x12ec('0x46')]&&_0x452d36[_0x12ec('0x43')]){_0xd81f2d[_0x452d36['variableName']]&&_0xf55cef[_0x12ec('0x49')][_0x12ec('0x1c')]({'id':_0x452d36[_0x12ec('0x46')],'value':_0xd81f2d[_0x452d36[_0x12ec('0x1b')]][_0x12ec('0x47')]()});}else if(_0x452d36[_0x12ec('0x40')]===_0x12ec('0x4a')&&_0x452d36[_0x12ec('0x4b')]&&_0x452d36[_0x12ec('0x4b')][_0x12ec('0x2b')]&&_0x452d36[_0x12ec('0x46')]&&_0x452d36[_0x12ec('0x43')]){_0xd81f2d[_0x452d36[_0x12ec('0x4b')][_0x12ec('0x2b')]['toLowerCase']()]&&_0xf55cef[_0x12ec('0x49')][_0x12ec('0x1c')]({'id':_0x452d36[_0x12ec('0x46')],'value':_0xd81f2d[_0x452d36[_0x12ec('0x4b')][_0x12ec('0x2b')][_0x12ec('0x44')]()][_0x12ec('0x47')]()});}});}return _0xf55cef;}function getConnection(_0x11315b){return request({'method':'POST','form':{'method':_0x12ec('0x4c'),'input_type':_0x12ec('0x1e'),'response_type':_0x12ec('0x1e'),'rest_data':JSON[_0x12ec('0x1f')]({'user_auth':{'user_name':_0x11315b[_0x12ec('0x4d')],'password':_0x11315b[_0x12ec('0x4e')],'encryption':_0x12ec('0x4f')},'application':_0x12ec('0x50')})}})['then'](function(_0x39a29d){var _0xdaf8ae=_0x39a29d;if(_0xdaf8ae['id']){def['sessionID']=_0xdaf8ae['id'];return BPromise[_0x12ec('0x32')](_0xdaf8ae);}else{throw new Error(util[_0x12ec('0x29')](_0x12ec('0x51'),_0x11315b['id']));}});}function setRelationship(_0x2b4346,_0x10e5e1,_0x1466b9,_0xbbacda){return request({'form':{'method':_0x12ec('0x52'),'input_type':_0x12ec('0x1e'),'response_type':_0x12ec('0x1e'),'rest_data':JSON[_0x12ec('0x1f')]({'session':_0x2b4346['id'],'module_name':_0x12ec('0x20'),'module_id':_0x1466b9['id'],'link_field_name':_0xbbacda,'related_ids':[_0x10e5e1['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x12ec('0x53')]=function(_0x5035e4,_0x2e4e6c,_0x3ea55a,_0x22c983,_0x53119d,_0x52d4a8){var _0x398793,_0x49ebb3,_0x44ee45,_0x2ff720;_0x52d4a8[_0x12ec('0x54')]=intUtil[_0x12ec('0x55')](_0x52d4a8[_0x12ec('0x54')]);_0x52d4a8['serverUrl']=intUtil[_0x12ec('0x55')](_0x52d4a8['serverUrl']);def[_0x12ec('0x56')]=util[_0x12ec('0x29')]('%s/service/v4_1/rest.php',_0x52d4a8[_0x12ec('0x54')]);if(_0x53119d&&_0x53119d[_0x12ec('0x57')]){logger['info'](_0x12ec('0x58'),_0x12ec('0x59'));_0x2e4e6c[_0x12ec('0x5a')]=util[_0x12ec('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x52d4a8[_0x12ec('0x5b')],_0x2e4e6c['uniqueid'],md5(_0x2e4e6c[_0x12ec('0x5c')]));}else{_0x2e4e6c[_0x12ec('0x5a')]='';}return getConnection(_0x52d4a8)[_0x12ec('0x37')](function(_0x161b09){_0x2ff720=_0x161b09;return getUser(_0x52d4a8,_0x22c983[_0x12ec('0x2b')],_0x2ff720);})[_0x12ec('0x37')](function(_0x353a34){_0x398793=_0x353a34;logger[_0x12ec('0x25')]('The\x20User\x20ID\x20is:',_0x398793['id']);return getEndUser(_0x52d4a8,_0x2e4e6c[_0x12ec('0x5d')],_0x2e4e6c[_0x12ec('0x5e')],_0x2ff720);})[_0x12ec('0x37')](function(_0x250949){_0x49ebb3=_0x250949;logger[_0x12ec('0x25')](_0x12ec('0x5f'),_0x49ebb3['id']);return getTicket(_0x52d4a8,_0x398793,_0x49ebb3,_0x3ea55a,_0x2e4e6c,_0x3ea55a[_0x12ec('0x60')],_0x2ff720,_0x12ec('0x61'));})[_0x12ec('0x37')](function(_0x19116f){_0x44ee45=_0x19116f;logger[_0x12ec('0x25')](_0x12ec('0x62'));logger[_0x12ec('0x25')](_0x12ec('0x63'),_0x44ee45['id']);return setRelationship(_0x2ff720,_0x398793,_0x44ee45,_0x12ec('0x64'));})['then'](function(){return setRelationship(_0x2ff720,_0x49ebb3,_0x44ee45,_0x12ec('0x65'));})[_0x12ec('0x37')](function(){return getServerInfo(_0x2ff720);})[_0x12ec('0x37')](function(_0x21aa14){var _0x139f23=parseInt(_0x21aa14[_0x12ec('0x66')][_0x12ec('0x67')](0x0));var _0x19bab5=util[_0x12ec('0x29')](_0x12ec('0x68'),_0x52d4a8['remoteUri'],_0x44ee45['id']);if(_0x139f23>0x6){_0x19bab5=util['format'](_0x12ec('0x69'),_0x52d4a8['remoteUri'],_0x44ee45['id']);}logger[_0x12ec('0x25')](_0x12ec('0x58'),_0x12ec('0x6a'));emit(util[_0x12ec('0x29')](_0x12ec('0x6b'),_0x22c983[_0x12ec('0x2b')]),_0x12ec('0x6c'),{'uri':_0x19bab5});})[_0x12ec('0x6d')](function(_0x4115e3){logger[_0x12ec('0x6e')](_0x12ec('0x58'),JSON['stringify'](_0x4115e3));});};exports['outbound']=function(_0x3b273f,_0x3c4c2c,_0x577cd8,_0x17324f,_0x52a918,_0x349b0e,_0x336cec){var _0x446739,_0x35e11b,_0x20e9a8,_0x4b9bc4;_0x349b0e['remoteUri']=intUtil[_0x12ec('0x55')](_0x349b0e[_0x12ec('0x54')]);_0x349b0e[_0x12ec('0x5b')]=intUtil[_0x12ec('0x55')](_0x349b0e['serverUrl']);def['uri']=util['format'](_0x12ec('0x6f'),_0x349b0e[_0x12ec('0x54')]);if(_0x336cec&&_0x336cec[_0x12ec('0x70')]&&_0x336cec[_0x12ec('0x70')]!==_0x12ec('0x71')){logger['info'](_0x12ec('0x72'),_0x12ec('0x59'));_0x3c4c2c['recordingURL']=util[_0x12ec('0x29')](_0x12ec('0x73'),_0x349b0e[_0x12ec('0x5b')],_0x3c4c2c[_0x12ec('0x5c')],md5(_0x3c4c2c['uniqueid']));}return getConnection(_0x349b0e)['then'](function(_0x58f70a){_0x4b9bc4=_0x58f70a;return getUser(_0x349b0e,_0x17324f['name'],_0x4b9bc4);})['then'](function(_0x570f80){_0x446739=_0x570f80;logger['info']('The\x20User\x20ID\x20is:',_0x446739['id']);return getEndUser(_0x349b0e,_0x3c4c2c[_0x12ec('0x74')],_0x3c4c2c['destcalleridnum'],_0x4b9bc4);})[_0x12ec('0x37')](function(_0x42ea3a){_0x35e11b=_0x42ea3a;logger[_0x12ec('0x25')]('The\x20Enduser\x20ID\x20is:',_0x35e11b['id']);return getTicket(_0x349b0e,_0x446739,_0x35e11b,_0x577cd8,_0x3c4c2c,_0x577cd8[_0x12ec('0x60')],_0x4b9bc4,_0x12ec('0x75'));})['then'](function(_0x168901){_0x20e9a8=_0x168901;logger[_0x12ec('0x25')](_0x12ec('0x62'));logger[_0x12ec('0x25')](_0x12ec('0x63'),_0x20e9a8['id']);return setRelationship(_0x4b9bc4,_0x446739,_0x20e9a8,_0x12ec('0x64'));})[_0x12ec('0x37')](function(){return setRelationship(_0x4b9bc4,_0x35e11b,_0x20e9a8,_0x12ec('0x65'));})[_0x12ec('0x37')](function(){return getServerInfo(_0x4b9bc4);})['then'](function(_0x4f53a3){var _0x20ebfe=parseInt(_0x4f53a3[_0x12ec('0x66')][_0x12ec('0x67')](0x0));var _0x32ee01=util['format'](_0x12ec('0x68'),_0x349b0e[_0x12ec('0x54')],_0x20e9a8['id']);if(_0x20ebfe>0x6){_0x32ee01=util[_0x12ec('0x29')](_0x12ec('0x69'),_0x349b0e[_0x12ec('0x54')],_0x20e9a8['id']);}logger[_0x12ec('0x25')](_0x12ec('0x72'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x12ec('0x29')]('user:%s',_0x17324f[_0x12ec('0x2b')]),_0x12ec('0x6c'),{'uri':_0x32ee01});})['catch'](function(_0x139da7){logger[_0x12ec('0x6e')](_0x12ec('0x72'),JSON['stringify'](_0x139da7));});};exports['unmanaged']=function(_0x28686b,_0x385fe5,_0x5beab1,_0x1ff3c4,_0x107b6e,_0x3beeb6){var _0x50376c,_0x19ea5e,_0x3d8429,_0x7c43ee;_0x3beeb6[_0x12ec('0x54')]=intUtil['stripTrailingSlash'](_0x3beeb6['remoteUri']);_0x3beeb6[_0x12ec('0x5b')]=intUtil[_0x12ec('0x55')](_0x3beeb6[_0x12ec('0x5b')]);def[_0x12ec('0x56')]=util[_0x12ec('0x29')](_0x12ec('0x6f'),_0x3beeb6['remoteUri']);if(_0x107b6e&&_0x107b6e[_0x12ec('0x57')]){logger['info']('['+_0x385fe5[_0x12ec('0x76')][_0x12ec('0x77')]()+']',_0x12ec('0x59'));_0x385fe5[_0x12ec('0x5a')]=util[_0x12ec('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3beeb6[_0x12ec('0x5b')],_0x385fe5[_0x12ec('0x5c')],md5(_0x385fe5[_0x12ec('0x5c')]));}else{_0x385fe5[_0x12ec('0x5a')]='';}return getConnection(_0x3beeb6)['then'](function(_0x2c4252){_0x7c43ee=_0x2c4252;if(!_[_0x12ec('0x24')](_0x1ff3c4)){return getUser(_0x3beeb6,_0x1ff3c4['name'],_0x7c43ee);}else{return getUser(_0x3beeb6,null,_0x7c43ee);}})[_0x12ec('0x37')](function(_0x9eae2f){_0x50376c=_0x9eae2f;logger[_0x12ec('0x25')](_0x12ec('0x78'),_0x50376c['id']);return getEndUser(_0x3beeb6,_0x385fe5[_0x12ec('0x5d')],_0x385fe5[_0x12ec('0x5e')],_0x7c43ee);})[_0x12ec('0x37')](function(_0x4f3799){_0x19ea5e=_0x4f3799;logger[_0x12ec('0x25')](_0x12ec('0x5f'),_0x19ea5e['id']);return getTicket(_0x3beeb6,_0x50376c,_0x19ea5e,_0x5beab1,_0x385fe5,_0x5beab1[_0x12ec('0x60')],_0x7c43ee,'Inbound');})[_0x12ec('0x37')](function(_0x5d723d){_0x3d8429=_0x5d723d;logger[_0x12ec('0x25')](_0x12ec('0x62'));logger[_0x12ec('0x25')](_0x12ec('0x63'),_0x3d8429['id']);return setRelationship(_0x7c43ee,_0x50376c,_0x3d8429,_0x12ec('0x64'));})[_0x12ec('0x37')](function(){return setRelationship(_0x7c43ee,_0x19ea5e,_0x3d8429,_0x12ec('0x65'));})['then'](function(){return getServerInfo(_0x7c43ee);})[_0x12ec('0x6d')](function(_0x52feaa){logger[_0x12ec('0x6e')]('['+_0x385fe5[_0x12ec('0x76')]['toUpperCase']()+']',JSON['stringify'](_0x52feaa));});};
\ No newline at end of file
index 5732911..0c2824a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c4=['toString','customVariable','Variable','name','toLowerCase','keyValue','%s:\x20%s','keyContent','variable','key','keyType','format','stripTrailingSlash','slice','substring','validateEmail','isNil','test','util','getString','sortBy','length','string','push','content','type','variableName'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xc6c4,0x171));var _0x4c6c=function(_0x405ce2,_0x2ac69a){_0x405ce2=_0x405ce2-0x0;var _0x4ca138=_0xc6c4[_0x405ce2];return _0x4ca138;};'use strict';var _=require('lodash');var util=require(_0x4c6c('0x0'));exports[_0x4c6c('0x1')]=function(_0x37e868,_0x1cdcbf,_0x5b6cce){var _0x1f09cf=[];if(_0x37e868['length']>0x0){var _0x2bb458=_[_0x4c6c('0x2')](_0x37e868,['id']);for(var _0x1e3001=0x0;_0x1e3001<_0x2bb458[_0x4c6c('0x3')];_0x1e3001++){var _0x572d3a=_0x2bb458[_0x1e3001];if(_0x572d3a['type']===_0x4c6c('0x4')){_0x1f09cf[_0x4c6c('0x5')](_0x572d3a[_0x4c6c('0x6')]);}else if(_0x572d3a[_0x4c6c('0x7')]==='variable'&&_0x572d3a[_0x4c6c('0x8')]){_0x1cdcbf[_0x572d3a['variableName']]&&_0x1f09cf[_0x4c6c('0x5')](_0x1cdcbf[_0x572d3a[_0x4c6c('0x8')]][_0x4c6c('0x9')]());}else if(_0x572d3a[_0x4c6c('0x7')]===_0x4c6c('0xa')&&_0x572d3a[_0x4c6c('0xb')]&&_0x572d3a[_0x4c6c('0xb')][_0x4c6c('0xc')]){_0x1cdcbf[_0x572d3a[_0x4c6c('0xb')][_0x4c6c('0xc')][_0x4c6c('0xd')]()]&&_0x1f09cf[_0x4c6c('0x5')](_0x1cdcbf[_0x572d3a[_0x4c6c('0xb')][_0x4c6c('0xc')][_0x4c6c('0xd')]()][_0x4c6c('0x9')]());}else if(_0x572d3a[_0x4c6c('0x7')]===_0x4c6c('0xe')){if(_0x572d3a['keyType']===_0x4c6c('0x4')&&_0x572d3a['key']){_0x1f09cf[_0x4c6c('0x5')](util['format'](_0x4c6c('0xf'),_0x572d3a['key'],_0x572d3a[_0x4c6c('0x10')]));}else if(_0x572d3a['keyType']===_0x4c6c('0x11')&&_0x572d3a[_0x4c6c('0x8')]&&_0x572d3a[_0x4c6c('0x12')]){_0x1cdcbf[_0x572d3a['variableName']]&&_0x1f09cf[_0x4c6c('0x5')](util['format']('%s:\x20%s',_0x572d3a['key'],_0x1cdcbf[_0x572d3a[_0x4c6c('0x8')]]));}else if(_0x572d3a[_0x4c6c('0x13')]===_0x4c6c('0xa')&&_0x572d3a[_0x4c6c('0xb')]&&_0x572d3a[_0x4c6c('0xb')][_0x4c6c('0xc')]&&_0x572d3a[_0x4c6c('0x12')]){_0x1cdcbf[_0x572d3a[_0x4c6c('0xb')]['name'][_0x4c6c('0xd')]()]&&_0x1f09cf['push'](util[_0x4c6c('0x14')]('%s:\x20%s',_0x572d3a[_0x4c6c('0x12')],_0x1cdcbf[_0x572d3a['Variable'][_0x4c6c('0xc')]['toLowerCase']()]));}}}}return _0x1f09cf['join'](_0x5b6cce);};exports[_0x4c6c('0x15')]=function(_0x58030f){var _0x229acd=_0x58030f[_0x4c6c('0x16')](-0x1);if(_0x229acd==='/'){_0x58030f=_0x58030f[_0x4c6c('0x17')](0x0,_0x58030f['lastIndexOf'](_0x229acd));}return _0x58030f;};exports[_0x4c6c('0x18')]=function(_0x1c146c){if(!_[_0x4c6c('0x19')](_0x1c146c)&&_0x1c146c!==''){var _0x2d590c=/^(([^<>()\[\]\\.,;:\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 _0x2d590c[_0x4c6c('0x1a')](String(_0x1c146c)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x6e70=['lastIndexOf','lodash','util','sortBy','length','type','content','variableName','customVariable','Variable','name','toLowerCase','toString','keyValue','keyType','key','push','keyContent','format','%s:\x20%s','join','stripTrailingSlash'];(function(_0x489c08,_0x2f5221){var _0x56d391=function(_0x1660ba){while(--_0x1660ba){_0x489c08['push'](_0x489c08['shift']());}};_0x56d391(++_0x2f5221);}(_0x6e70,0x14b));var _0x06e7=function(_0x5d8665,_0x56f4c1){_0x5d8665=_0x5d8665-0x0;var _0xa392e=_0x6e70[_0x5d8665];return _0xa392e;};'use strict';var _=require(_0x06e7('0x0'));var util=require(_0x06e7('0x1'));exports['getString']=function(_0x1442cf,_0x4afb96,_0x4afea2){var _0xe82570=[];if(_0x1442cf['length']>0x0){var _0x5603d7=_[_0x06e7('0x2')](_0x1442cf,['id']);for(var _0x132109=0x0;_0x132109<_0x5603d7[_0x06e7('0x3')];_0x132109++){var _0x331416=_0x5603d7[_0x132109];if(_0x331416[_0x06e7('0x4')]==='string'){_0xe82570['push'](_0x331416[_0x06e7('0x5')]);}else if(_0x331416[_0x06e7('0x4')]==='variable'&&_0x331416[_0x06e7('0x6')]){_0x4afb96[_0x331416[_0x06e7('0x6')]]&&_0xe82570['push'](_0x4afb96[_0x331416[_0x06e7('0x6')]]['toString']());}else if(_0x331416[_0x06e7('0x4')]===_0x06e7('0x7')&&_0x331416[_0x06e7('0x8')]&&_0x331416[_0x06e7('0x8')][_0x06e7('0x9')]){_0x4afb96[_0x331416['Variable'][_0x06e7('0x9')][_0x06e7('0xa')]()]&&_0xe82570['push'](_0x4afb96[_0x331416[_0x06e7('0x8')][_0x06e7('0x9')][_0x06e7('0xa')]()][_0x06e7('0xb')]());}else if(_0x331416['type']===_0x06e7('0xc')){if(_0x331416[_0x06e7('0xd')]==='string'&&_0x331416[_0x06e7('0xe')]){_0xe82570[_0x06e7('0xf')](util['format']('%s:\x20%s',_0x331416['key'],_0x331416[_0x06e7('0x10')]));}else if(_0x331416[_0x06e7('0xd')]==='variable'&&_0x331416[_0x06e7('0x6')]&&_0x331416['key']){_0x4afb96[_0x331416[_0x06e7('0x6')]]&&_0xe82570[_0x06e7('0xf')](util[_0x06e7('0x11')](_0x06e7('0x12'),_0x331416['key'],_0x4afb96[_0x331416[_0x06e7('0x6')]]));}else if(_0x331416[_0x06e7('0xd')]==='customVariable'&&_0x331416[_0x06e7('0x8')]&&_0x331416[_0x06e7('0x8')][_0x06e7('0x9')]&&_0x331416[_0x06e7('0xe')]){_0x4afb96[_0x331416[_0x06e7('0x8')][_0x06e7('0x9')][_0x06e7('0xa')]()]&&_0xe82570[_0x06e7('0xf')](util[_0x06e7('0x11')](_0x06e7('0x12'),_0x331416[_0x06e7('0xe')],_0x4afb96[_0x331416[_0x06e7('0x8')][_0x06e7('0x9')]['toLowerCase']()]));}}}}return _0xe82570[_0x06e7('0x13')](_0x4afea2);};exports[_0x06e7('0x14')]=function(_0x56fb48){var _0x28803b=_0x56fb48['slice'](-0x1);if(_0x28803b==='/'){_0x56fb48=_0x56fb48['substring'](0x0,_0x56fb48[_0x06e7('0x15')](_0x28803b));}return _0x56fb48;};exports['validateEmail']=function(_0x4a45b4){if(!_['isNil'](_0x4a45b4)&&_0x4a45b4!==''){var _0x2ea1fe=/^(([^<>()\[\]\\.,;:\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 _0x2ea1fe['test'](String(_0x4a45b4)[_0x06e7('0xa')]());}else{return![];}};
\ No newline at end of file
index 399ffc5..f161d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','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','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x38680a,_0x19a82b){var _0x3cba5f=function(_0x43dc0f){while(--_0x43dc0f){_0x38680a['push'](_0x38680a['shift']());}};_0x3cba5f(++_0x19a82b);}(_0x9c44,0x178));var _0x49c4=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x9c44[_0x6cf19c];return _0xce14f3;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
+var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','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','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x30c0f0,_0x417a5d){var _0x3cabd4=function(_0x3e62b){while(--_0x3e62b){_0x30c0f0['push'](_0x30c0f0['shift']());}};_0x3cabd4(++_0x417a5d);}(_0x9c44,0x178));var _0x49c4=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x9c44[_0x36c5b0];return _0xf19333;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index 40e9823..093467b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5cc=['zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Ticket\x20created!','ticket','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','find','results','agent','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','password','%s:%s','username','authType','token','toString','base64','[HTTP]','stringify','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','push','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','[OUTBOUND]','Authorization','email','The\x20User\x20ID\x20is:','destcalleridname','integrationTab','error','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','The\x20Ticket\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger'];(function(_0x576266,_0x4002b0){var _0x18234f=function(_0x4e9ad5){while(--_0x4e9ad5){_0x576266['push'](_0x576266['shift']());}};_0x18234f(++_0x4002b0);}(_0xf5cc,0x1bd));var _0xcf5c=function(_0x16cb03,_0x43ea58){_0x16cb03=_0x16cb03-0x0;var _0x10944e=_0xf5cc[_0x16cb03];return _0x10944e;};'use strict';var _=require(_0xcf5c('0x0'));var rp=require(_0xcf5c('0x1'));var md5=require(_0xcf5c('0x2'));var util=require(_0xcf5c('0x3'));var Redis=require(_0xcf5c('0x4'));var intUtil=require(_0xcf5c('0x5'));var config=require('../../../../config/environment');var logger=require(_0xcf5c('0x6'))(_0xcf5c('0x7'));config[_0xcf5c('0x8')]=_[_0xcf5c('0x9')](config['redis'],{'host':_0xcf5c('0xa'),'port':0x18eb});var io=require(_0xcf5c('0xb'))(new Redis(config['redis']));function emit(_0x40661a,_0x251f97,_0xe84ae){io['to'](_0x40661a)[_0xcf5c('0xc')](_0x251f97,_0xe84ae);}var headers={'Content-Type':_0xcf5c('0xd'),'Accept':_0xcf5c('0xd')};function getTicket(_0x6436ac,_0x180bb4,_0x1b3671,_0x2ce20d,_0x10d786){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util['format'](_0xcf5c('0xe'),_0x6436ac[_0xcf5c('0xf')]),'method':_0xcf5c('0x10'),'body':{'ticket':_[_0xcf5c('0x11')]({'requester_id':_0x1b3671['id'],'submitter_id':_0x180bb4?_0x180bb4['id']:undefined,'assignee_id':_0x180bb4?_0x180bb4['id']:undefined,'tags':getTags(_0x2ce20d[_0xcf5c('0x12')],_0xcf5c('0x13')),'subject':intUtil[_0xcf5c('0x14')](_0x2ce20d[_0xcf5c('0x15')],_0x10d786,'\x20'),'description':intUtil[_0xcf5c('0x14')](_0x2ce20d[_0xcf5c('0x16')],_0x10d786,'\x0a'),'comment':{'public':![],'body':intUtil[_0xcf5c('0x14')](_0x2ce20d[_0xcf5c('0x16')],_0x10d786,'\x0a')}},getCustomFields(_0x2ce20d['Fields'],_0x10d786))}})['then'](function(_0x151e9c){logger['info'](_0xcf5c('0x17'));return _0x151e9c[_0xcf5c('0x18')];});}function getUser(_0x2ddc9d,_0x672db9){if(intUtil[_0xcf5c('0x19')](_0x672db9)){logger[_0xcf5c('0x1a')](_0xcf5c('0x1b'),_0x672db9);return request({'uri':util[_0xcf5c('0x1c')](_0xcf5c('0x1d'),_0x2ddc9d['remoteUri']),'qs':{'query':util[_0xcf5c('0x1c')](_0xcf5c('0x1e'),_0x672db9)}})[_0xcf5c('0x1f')](function(_0x19762b){if(_0x19762b[_0xcf5c('0x20')]){logger[_0xcf5c('0x1a')]('Agent\x20found!');return _[_0xcf5c('0x21')](_0x19762b[_0xcf5c('0x22')],{'email':_0x672db9,'role':_0xcf5c('0x23')});}else{logger[_0xcf5c('0x1a')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xcf5c('0x1c')]('%s/users/me.json',_0x2ddc9d[_0xcf5c('0xf')])})[_0xcf5c('0x1f')](function(_0x38e72b){logger[_0xcf5c('0x1a')](_0xcf5c('0x24'));return _0x38e72b[_0xcf5c('0x25')];});}});}else{logger['info'](_0xcf5c('0x26'));return request({'uri':util[_0xcf5c('0x1c')](_0xcf5c('0x27'),_0x2ddc9d[_0xcf5c('0xf')])})[_0xcf5c('0x1f')](function(_0x47a53b){logger[_0xcf5c('0x1a')](_0xcf5c('0x24'));return _0x47a53b[_0xcf5c('0x25')];});}}function getEndUser(_0x56431a,_0x51880f,_0x5e26f7){logger[_0xcf5c('0x1a')](_0xcf5c('0x28'),_0x5e26f7);return request({'uri':util[_0xcf5c('0x1c')](_0xcf5c('0x1d'),_0x56431a[_0xcf5c('0xf')]),'qs':{'query':util[_0xcf5c('0x1c')](_0xcf5c('0x29'),_0x5e26f7)}})['then'](function(_0x54a37e){var _0x2f6bb3;if(_0x54a37e[_0xcf5c('0x22')][_0xcf5c('0x2a')]){_0x54a37e[_0xcf5c('0x22')]=_[_0xcf5c('0x2b')](_0x54a37e[_0xcf5c('0x22')],{'suspended':![],'role':_0xcf5c('0x2c')});if(_0x54a37e[_0xcf5c('0x22')][_0xcf5c('0x2a')]){_0x2f6bb3=_[_0xcf5c('0x2d')](_0x54a37e['results']);}}if(_0x2f6bb3){logger[_0xcf5c('0x1a')]('Enduser\x20found!');return _0x2f6bb3;}else{logger['info'](_0xcf5c('0x2e'));return request({'uri':util[_0xcf5c('0x1c')](_0xcf5c('0x2f'),_0x56431a[_0xcf5c('0xf')]),'method':_0xcf5c('0x10'),'body':{'user':{'role':'end-user','name':util[_0xcf5c('0x1c')]('Caller\x20-\x20%s',_0x51880f||_0x5e26f7),'phone':_0x5e26f7}}})[_0xcf5c('0x1f')](function(_0x30795b){logger[_0xcf5c('0x1a')](_0xcf5c('0x30'));return _0x30795b[_0xcf5c('0x25')];});}});}function getAuth(_0x3d6b4b){var _0x3a9fcf;if(_0x3d6b4b['authType']===_0xcf5c('0x31')){_0x3a9fcf=util[_0xcf5c('0x1c')](_0xcf5c('0x32'),_0x3d6b4b[_0xcf5c('0x33')],_0x3d6b4b[_0xcf5c('0x31')]);}else if(_0x3d6b4b[_0xcf5c('0x34')]===_0xcf5c('0x35')){_0x3a9fcf=util[_0xcf5c('0x1c')]('%s/token:%s',_0x3d6b4b[_0xcf5c('0x33')],_0x3d6b4b[_0xcf5c('0x35')]);}return util['format']('Basic\x20%s',new Buffer(_0x3a9fcf)[_0xcf5c('0x36')](_0xcf5c('0x37')));}function request(_0x1a6828){logger['debug'](_0xcf5c('0x38'),JSON[_0xcf5c('0x39')](_0x1a6828));return rp(_[_0xcf5c('0x9')](_0x1a6828,{'method':_0xcf5c('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x433774,_0x152977){var _0x2a6362=[];if(_0x433774&&_0x433774[_0xcf5c('0x2a')]>0x0){_0x2a6362=_[_0xcf5c('0x3b')](_0x433774,_0x152977);}return _0x2a6362;}function getCustomFields(_0x5bebc8,_0x5d2647){var _0x12c42a=[];var _0x4b0fa0={'custom_fields':[]};if(_0x5bebc8[_0xcf5c('0x2a')]>0x0){_[_0xcf5c('0x3c')](_0x5bebc8,function(_0x62618c){if(_[_0xcf5c('0x3d')](['string',_0xcf5c('0x3e')],_0x62618c[_0xcf5c('0x3f')])&&_0x62618c[_0xcf5c('0x40')]&&!_0x62618c[_0xcf5c('0x41')]){_0x4b0fa0[_0x62618c[_0xcf5c('0x40')][_0xcf5c('0x42')]()]=_0x62618c[_0xcf5c('0x43')][_0xcf5c('0x36')]();}else if(_[_0xcf5c('0x3d')](['string','picklist'],_0x62618c[_0xcf5c('0x3f')])&&_0x62618c[_0xcf5c('0x44')]&&_0x62618c[_0xcf5c('0x41')]){_0x4b0fa0[_0xcf5c('0x45')][_0xcf5c('0x46')]({'id':_0x62618c[_0xcf5c('0x44')],'value':_0x62618c['content']['toString']()});}else if(_0x62618c['type']==='variable'&&_0x62618c[_0xcf5c('0x47')]&&_0x62618c[_0xcf5c('0x44')]&&_0x62618c[_0xcf5c('0x41')]){_0x5d2647[_0x62618c['variableName']]&&_0x4b0fa0[_0xcf5c('0x45')][_0xcf5c('0x46')]({'id':_0x62618c[_0xcf5c('0x44')],'value':_0x5d2647[_0x62618c[_0xcf5c('0x47')]][_0xcf5c('0x36')]()});}else if(_0x62618c[_0xcf5c('0x3f')]==='customVariable'&&_0x62618c['Variable']&&_0x62618c[_0xcf5c('0x48')][_0xcf5c('0x13')]&&_0x62618c[_0xcf5c('0x44')]&&_0x62618c['customField']){_0x5d2647[_0x62618c[_0xcf5c('0x48')][_0xcf5c('0x13')][_0xcf5c('0x42')]()]&&_0x4b0fa0[_0xcf5c('0x45')][_0xcf5c('0x46')]({'id':_0x62618c[_0xcf5c('0x44')],'value':_0x5d2647[_0x62618c['Variable'][_0xcf5c('0x13')][_0xcf5c('0x42')]()][_0xcf5c('0x36')]()});}});}return _0x4b0fa0;}exports[_0xcf5c('0x49')]=function(_0x5b6f29,_0x31c065,_0x141aa4,_0x125b0f,_0x426f3d,_0x586dd2){var _0x52d878,_0x31296a;_0x586dd2[_0xcf5c('0xf')]=intUtil['stripTrailingSlash'](_0x586dd2[_0xcf5c('0xf')]);_0x586dd2['serverUrl']=intUtil[_0xcf5c('0x4a')](_0x586dd2[_0xcf5c('0x4b')]);if(_0x426f3d&&_0x426f3d[_0xcf5c('0x4c')]){logger['info'](_0xcf5c('0x4d'),_0xcf5c('0x4e'));_0x31c065[_0xcf5c('0x4f')]=util[_0xcf5c('0x1c')](_0xcf5c('0x50'),_0x586dd2[_0xcf5c('0x4b')],_0x31c065[_0xcf5c('0x51')],md5(_0x31c065[_0xcf5c('0x51')]));}else{_0x31c065[_0xcf5c('0x4f')]='';}headers['Authorization']=getAuth(_0x586dd2);return getUser(_0x586dd2,_0x125b0f['email'])['then'](function(_0x1fe8a8){_0x52d878=_0x1fe8a8;logger[_0xcf5c('0x1a')]('The\x20User\x20ID\x20is:',_0x52d878['id']);return getEndUser(_0x586dd2,_0x31c065[_0xcf5c('0x52')],_0x31c065[_0xcf5c('0x53')]);})[_0xcf5c('0x1f')](function(_0x5791e5){_0x31296a=_0x5791e5;logger[_0xcf5c('0x1a')](_0xcf5c('0x54'),_0x31296a['id']);return getTicket(_0x586dd2,_0x52d878,_0x31296a,_0x141aa4,_0x31c065);})[_0xcf5c('0x1f')](function(_0x5218b3){if(_0x5218b3){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5218b3['id']);switch(_0x586dd2['type']){case'integrationTab':logger['info'](_0xcf5c('0x4d'),_0xcf5c('0x55'));return request({'uri':util[_0xcf5c('0x1c')](_0xcf5c('0x56'),_0x586dd2[_0xcf5c('0xf')],_0x52d878['id'],_0x5218b3['id']),'method':'POST'});case _0xcf5c('0x57'):logger[_0xcf5c('0x1a')](_0xcf5c('0x4d'),_0xcf5c('0x58'));emit(util['format'](_0xcf5c('0x59'),_0x125b0f['name']),_0xcf5c('0x5a'),{'uri':util[_0xcf5c('0x1c')](_0xcf5c('0x5b'),_0x586dd2[_0xcf5c('0xf')][_0xcf5c('0x5c')](_0xcf5c('0x5d'),''),_0x5218b3['id'])});break;default:logger['error']('[QUEUE]',_0xcf5c('0x5e'));}}})[_0xcf5c('0x5f')](function(_0x513271){logger['error'](_0xcf5c('0x60'),util[_0xcf5c('0x61')](_0x513271,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0xe4acfa,_0x5e2339,_0x505265,_0x3502da,_0x4b9e72,_0xd9895a,_0x7ac3bb){var _0xb3873d,_0x13e89e;_0xd9895a[_0xcf5c('0xf')]=intUtil[_0xcf5c('0x4a')](_0xd9895a[_0xcf5c('0xf')]);_0xd9895a[_0xcf5c('0x4b')]=intUtil[_0xcf5c('0x4a')](_0xd9895a['serverUrl']);if(_0x7ac3bb&&_0x7ac3bb[_0xcf5c('0x62')]&&_0x7ac3bb[_0xcf5c('0x62')]!==_0xcf5c('0x63')){logger[_0xcf5c('0x1a')](_0xcf5c('0x64'),'Recording\x20is\x20enabled!');_0x5e2339[_0xcf5c('0x4f')]=util['format'](_0xcf5c('0x50'),_0xd9895a[_0xcf5c('0x4b')],_0x5e2339[_0xcf5c('0x51')],md5(_0x5e2339[_0xcf5c('0x51')]));}headers[_0xcf5c('0x65')]=getAuth(_0xd9895a);return getUser(_0xd9895a,_0x3502da[_0xcf5c('0x66')])[_0xcf5c('0x1f')](function(_0x49c5eb){_0xb3873d=_0x49c5eb;logger[_0xcf5c('0x1a')](_0xcf5c('0x67'),_0xb3873d['id']);return getEndUser(_0xd9895a,_0x5e2339[_0xcf5c('0x68')],_0x5e2339['destcalleridnum']);})[_0xcf5c('0x1f')](function(_0x36503e){_0x13e89e=_0x36503e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x13e89e['id']);return getTicket(_0xd9895a,_0xb3873d,_0x13e89e,_0x505265,_0x5e2339);})['then'](function(_0x2498c5){if(_0x2498c5){logger[_0xcf5c('0x1a')]('The\x20Ticket\x20ID\x20is:',_0x2498c5['id']);switch(_0xd9895a[_0xcf5c('0x3f')]){case _0xcf5c('0x69'):logger['info'](_0xcf5c('0x64'),_0xcf5c('0x55'));return request({'uri':util['format'](_0xcf5c('0x56'),_0xd9895a[_0xcf5c('0xf')],_0xb3873d['id'],_0x2498c5['id']),'method':'POST'});case _0xcf5c('0x57'):logger[_0xcf5c('0x1a')](_0xcf5c('0x64'),_0xcf5c('0x58'));emit(util[_0xcf5c('0x1c')](_0xcf5c('0x59'),_0x3502da[_0xcf5c('0x13')]),_0xcf5c('0x5a'),{'uri':util['format'](_0xcf5c('0x5b'),_0xd9895a['remoteUri'][_0xcf5c('0x5c')](_0xcf5c('0x5d'),''),_0x2498c5['id'])});break;default:logger[_0xcf5c('0x6a')](_0xcf5c('0x64'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x4992df){logger[_0xcf5c('0x6a')](_0xcf5c('0x6b'),util[_0xcf5c('0x61')](_0x4992df,{'showHidden':!![],'depth':null}));});};exports[_0xcf5c('0x6c')]=function(_0x427bd2,_0x33b57f,_0xa7b55c,_0xb6270d,_0x473b40,_0x225b3b){var _0x139d59,_0x43413e;_0x225b3b[_0xcf5c('0xf')]=intUtil[_0xcf5c('0x4a')](_0x225b3b[_0xcf5c('0xf')]);_0x225b3b['serverUrl']=intUtil[_0xcf5c('0x4a')](_0x225b3b[_0xcf5c('0x4b')]);if(_0x473b40&&_0x473b40[_0xcf5c('0x4c')]){logger[_0xcf5c('0x1a')]('['+_0x33b57f[_0xcf5c('0x6d')][_0xcf5c('0x6e')]()+']','Recording\x20is\x20enabled!');_0x33b57f[_0xcf5c('0x4f')]=util[_0xcf5c('0x1c')](_0xcf5c('0x50'),_0x225b3b[_0xcf5c('0x4b')],_0x33b57f[_0xcf5c('0x51')],md5(_0x33b57f[_0xcf5c('0x51')]));}else{_0x33b57f['recordingURL']='';}headers[_0xcf5c('0x65')]=getAuth(_0x225b3b);return getUser(_0x225b3b)['then'](function(_0x31a19e){_0x139d59=_0x31a19e;logger['info'](_0xcf5c('0x67'),_0x139d59['id']);return getEndUser(_0x225b3b,_0x33b57f[_0xcf5c('0x52')],_0x33b57f['calleridnum']);})[_0xcf5c('0x1f')](function(_0x14b301){_0x43413e=_0x14b301;logger[_0xcf5c('0x1a')]('The\x20Enduser\x20ID\x20is:',_0x43413e['id']);return getTicket(_0x225b3b,_0x139d59,_0x43413e,_0xa7b55c,_0x33b57f);})[_0xcf5c('0x1f')](function(_0x329f18){if(_0x329f18){logger['info'](_0xcf5c('0x6f'),_0x329f18['id']);}})[_0xcf5c('0x5f')](function(_0x8899fc){logger[_0xcf5c('0x6a')]('['+_0x33b57f[_0xcf5c('0x6d')][_0xcf5c('0x6e')]()+']'+_0xcf5c('0x70'),util[_0xcf5c('0x61')](_0x8899fc,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf27b=['customField','toLowerCase','content','type','idField','push','variable','variableName','custom_fields','Variable','name','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','none','[OUTBOUND]','The\x20User\x20ID\x20is:','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','ioredis','./util','zendesk','defaults','redis','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Caller\x20-\x20%s','Enduser\x20created.','password','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','includes','string','picklist','nameField'];(function(_0x39d434,_0x117a5d){var _0x2bdfeb=function(_0x421fbe){while(--_0x421fbe){_0x39d434['push'](_0x39d434['shift']());}};_0x2bdfeb(++_0x117a5d);}(_0xf27b,0x168));var _0xbf27=function(_0x514260,_0x1891e1){_0x514260=_0x514260-0x0;var _0x4ac81b=_0xf27b[_0x514260];return _0x4ac81b;};'use strict';var _=require(_0xbf27('0x0'));var rp=require(_0xbf27('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbf27('0x2'));var intUtil=require(_0xbf27('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xbf27('0x4'));config['redis']=_[_0xbf27('0x5')](config[_0xbf27('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xbf27('0x7'))(new Redis(config[_0xbf27('0x6')]));function emit(_0x4b6b51,_0x48a3bc,_0x3205ab){io['to'](_0x4b6b51)[_0xbf27('0x8')](_0x48a3bc,_0x3205ab);}var headers={'Content-Type':_0xbf27('0x9'),'Accept':_0xbf27('0x9')};function getTicket(_0x39554c,_0x35a021,_0x499841,_0x45bfad,_0x2ab3af){logger[_0xbf27('0xa')](_0xbf27('0xb'));return request({'uri':util[_0xbf27('0xc')](_0xbf27('0xd'),_0x39554c[_0xbf27('0xe')]),'method':_0xbf27('0xf'),'body':{'ticket':_[_0xbf27('0x10')]({'requester_id':_0x499841['id'],'submitter_id':_0x35a021?_0x35a021['id']:undefined,'assignee_id':_0x35a021?_0x35a021['id']:undefined,'tags':getTags(_0x45bfad[_0xbf27('0x11')],'name'),'subject':intUtil[_0xbf27('0x12')](_0x45bfad[_0xbf27('0x13')],_0x2ab3af,'\x20'),'description':intUtil[_0xbf27('0x12')](_0x45bfad[_0xbf27('0x14')],_0x2ab3af,'\x0a'),'comment':{'public':![],'body':intUtil[_0xbf27('0x12')](_0x45bfad[_0xbf27('0x14')],_0x2ab3af,'\x0a')}},getCustomFields(_0x45bfad[_0xbf27('0x15')],_0x2ab3af))}})[_0xbf27('0x16')](function(_0x4dd2a7){logger[_0xbf27('0xa')]('Ticket\x20created!');return _0x4dd2a7[_0xbf27('0x17')];});}function getUser(_0x560270,_0x37639e){if(intUtil[_0xbf27('0x18')](_0x37639e)){logger['info']('Getting\x20agent\x20with\x20email',_0x37639e);return request({'uri':util[_0xbf27('0xc')](_0xbf27('0x19'),_0x560270['remoteUri']),'qs':{'query':util[_0xbf27('0xc')](_0xbf27('0x1a'),_0x37639e)}})['then'](function(_0x54f7ed){if(_0x54f7ed[_0xbf27('0x1b')]){logger[_0xbf27('0xa')](_0xbf27('0x1c'));return _[_0xbf27('0x1d')](_0x54f7ed['results'],{'email':_0x37639e,'role':_0xbf27('0x1e')});}else{logger[_0xbf27('0xa')](_0xbf27('0x1f'));return request({'uri':util[_0xbf27('0xc')](_0xbf27('0x20'),_0x560270[_0xbf27('0xe')])})[_0xbf27('0x16')](function(_0x257794){logger['info'](_0xbf27('0x21'));return _0x257794[_0xbf27('0x22')];});}});}else{logger[_0xbf27('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xbf27('0x20'),_0x560270['remoteUri'])})[_0xbf27('0x16')](function(_0x13f6ab){logger[_0xbf27('0xa')](_0xbf27('0x21'));return _0x13f6ab[_0xbf27('0x22')];});}}function getEndUser(_0x427841,_0x4dab71,_0xd44878){logger[_0xbf27('0xa')](_0xbf27('0x23'),_0xd44878);return request({'uri':util['format'](_0xbf27('0x19'),_0x427841[_0xbf27('0xe')]),'qs':{'query':util[_0xbf27('0xc')](_0xbf27('0x24'),_0xd44878)}})[_0xbf27('0x16')](function(_0x51944c){var _0x58998d;if(_0x51944c[_0xbf27('0x25')][_0xbf27('0x26')]){_0x51944c[_0xbf27('0x25')]=_[_0xbf27('0x27')](_0x51944c[_0xbf27('0x25')],{'suspended':![],'role':_0xbf27('0x28')});if(_0x51944c[_0xbf27('0x25')][_0xbf27('0x26')]){_0x58998d=_[_0xbf27('0x29')](_0x51944c[_0xbf27('0x25')]);}}if(_0x58998d){logger[_0xbf27('0xa')](_0xbf27('0x2a'));return _0x58998d;}else{logger[_0xbf27('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbf27('0xc')]('%s/users.json',_0x427841[_0xbf27('0xe')]),'method':'POST','body':{'user':{'role':_0xbf27('0x28'),'name':util[_0xbf27('0xc')](_0xbf27('0x2b'),_0x4dab71||_0xd44878),'phone':_0xd44878}}})['then'](function(_0x370aa0){logger[_0xbf27('0xa')](_0xbf27('0x2c'));return _0x370aa0[_0xbf27('0x22')];});}});}function getAuth(_0x58faf2){var _0x109e48;if(_0x58faf2['authType']===_0xbf27('0x2d')){_0x109e48=util[_0xbf27('0xc')]('%s:%s',_0x58faf2[_0xbf27('0x2e')],_0x58faf2[_0xbf27('0x2d')]);}else if(_0x58faf2[_0xbf27('0x2f')]===_0xbf27('0x30')){_0x109e48=util[_0xbf27('0xc')](_0xbf27('0x31'),_0x58faf2[_0xbf27('0x2e')],_0x58faf2[_0xbf27('0x30')]);}return util['format'](_0xbf27('0x32'),new Buffer(_0x109e48)[_0xbf27('0x33')](_0xbf27('0x34')));}function request(_0x54f892){logger[_0xbf27('0x35')](_0xbf27('0x36'),JSON[_0xbf27('0x37')](_0x54f892));return rp(_[_0xbf27('0x5')](_0x54f892,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x108aba,_0x48c9dc){var _0x30b797=[];if(_0x108aba&&_0x108aba[_0xbf27('0x26')]>0x0){_0x30b797=_['map'](_0x108aba,_0x48c9dc);}return _0x30b797;}function getCustomFields(_0x2d3a05,_0x5080cf){var _0x1c89c6=[];var _0x9c10d2={'custom_fields':[]};if(_0x2d3a05[_0xbf27('0x26')]>0x0){_['forEach'](_0x2d3a05,function(_0xf41d58){if(_[_0xbf27('0x38')]([_0xbf27('0x39'),_0xbf27('0x3a')],_0xf41d58['type'])&&_0xf41d58[_0xbf27('0x3b')]&&!_0xf41d58[_0xbf27('0x3c')]){_0x9c10d2[_0xf41d58[_0xbf27('0x3b')][_0xbf27('0x3d')]()]=_0xf41d58[_0xbf27('0x3e')][_0xbf27('0x33')]();}else if(_[_0xbf27('0x38')]([_0xbf27('0x39'),'picklist'],_0xf41d58[_0xbf27('0x3f')])&&_0xf41d58[_0xbf27('0x40')]&&_0xf41d58[_0xbf27('0x3c')]){_0x9c10d2['custom_fields'][_0xbf27('0x41')]({'id':_0xf41d58[_0xbf27('0x40')],'value':_0xf41d58[_0xbf27('0x3e')]['toString']()});}else if(_0xf41d58[_0xbf27('0x3f')]===_0xbf27('0x42')&&_0xf41d58[_0xbf27('0x43')]&&_0xf41d58[_0xbf27('0x40')]&&_0xf41d58[_0xbf27('0x3c')]){_0x5080cf[_0xf41d58[_0xbf27('0x43')]]&&_0x9c10d2[_0xbf27('0x44')][_0xbf27('0x41')]({'id':_0xf41d58[_0xbf27('0x40')],'value':_0x5080cf[_0xf41d58[_0xbf27('0x43')]]['toString']()});}else if(_0xf41d58[_0xbf27('0x3f')]==='customVariable'&&_0xf41d58[_0xbf27('0x45')]&&_0xf41d58[_0xbf27('0x45')][_0xbf27('0x46')]&&_0xf41d58['idField']&&_0xf41d58[_0xbf27('0x3c')]){_0x5080cf[_0xf41d58[_0xbf27('0x45')][_0xbf27('0x46')][_0xbf27('0x3d')]()]&&_0x9c10d2[_0xbf27('0x44')]['push']({'id':_0xf41d58[_0xbf27('0x40')],'value':_0x5080cf[_0xf41d58[_0xbf27('0x45')][_0xbf27('0x46')][_0xbf27('0x3d')]()][_0xbf27('0x33')]()});}});}return _0x9c10d2;}exports['queue']=function(_0x4065c6,_0x36cb32,_0x266ea6,_0x293a2f,_0x30acc7,_0x42649f){var _0x4754a9,_0x59950c;_0x42649f['remoteUri']=intUtil['stripTrailingSlash'](_0x42649f[_0xbf27('0xe')]);_0x42649f[_0xbf27('0x47')]=intUtil[_0xbf27('0x48')](_0x42649f[_0xbf27('0x47')]);if(_0x30acc7&&_0x30acc7['monitor_format']){logger[_0xbf27('0xa')](_0xbf27('0x49'),_0xbf27('0x4a'));_0x36cb32[_0xbf27('0x4b')]=util['format'](_0xbf27('0x4c'),_0x42649f[_0xbf27('0x47')],_0x36cb32[_0xbf27('0x4d')],md5(_0x36cb32[_0xbf27('0x4d')]));}else{_0x36cb32[_0xbf27('0x4b')]='';}headers[_0xbf27('0x4e')]=getAuth(_0x42649f);return getUser(_0x42649f,_0x293a2f[_0xbf27('0x4f')])['then'](function(_0x2a6c5f){_0x4754a9=_0x2a6c5f;logger[_0xbf27('0xa')]('The\x20User\x20ID\x20is:',_0x4754a9['id']);return getEndUser(_0x42649f,_0x36cb32[_0xbf27('0x50')],_0x36cb32['calleridnum']);})['then'](function(_0x5d99a0){_0x59950c=_0x5d99a0;logger['info'](_0xbf27('0x51'),_0x59950c['id']);return getTicket(_0x42649f,_0x4754a9,_0x59950c,_0x266ea6,_0x36cb32);})[_0xbf27('0x16')](function(_0x23c4d3){if(_0x23c4d3){logger[_0xbf27('0xa')](_0xbf27('0x52'),_0x23c4d3['id']);switch(_0x42649f[_0xbf27('0x3f')]){case _0xbf27('0x53'):logger['info']('[QUEUE]',_0xbf27('0x54'));return request({'uri':util[_0xbf27('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x42649f[_0xbf27('0xe')],_0x4754a9['id'],_0x23c4d3['id']),'method':'POST'});case _0xbf27('0x55'):logger[_0xbf27('0xa')](_0xbf27('0x49'),_0xbf27('0x56'));emit(util[_0xbf27('0xc')](_0xbf27('0x57'),_0x293a2f[_0xbf27('0x46')]),_0xbf27('0x58'),{'uri':util[_0xbf27('0xc')](_0xbf27('0x59'),_0x42649f[_0xbf27('0xe')][_0xbf27('0x5a')]('/api/v2',''),_0x23c4d3['id'])});break;default:logger[_0xbf27('0x5b')](_0xbf27('0x49'),_0xbf27('0x5c'));}}})[_0xbf27('0x5d')](function(_0x5c3126){logger['error'](_0xbf27('0x5e'),util[_0xbf27('0x5f')](_0x5c3126,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x569afe,_0x2bb572,_0xd189bd,_0x175350,_0x34fa19,_0x277640,_0x12601b){var _0xee4288,_0x2d7d3a;_0x277640[_0xbf27('0xe')]=intUtil[_0xbf27('0x48')](_0x277640['remoteUri']);_0x277640['serverUrl']=intUtil[_0xbf27('0x48')](_0x277640[_0xbf27('0x47')]);if(_0x12601b&&_0x12601b['recordingFormat']&&_0x12601b['recordingFormat']!==_0xbf27('0x60')){logger[_0xbf27('0xa')](_0xbf27('0x61'),'Recording\x20is\x20enabled!');_0x2bb572['recordingURL']=util[_0xbf27('0xc')](_0xbf27('0x4c'),_0x277640[_0xbf27('0x47')],_0x2bb572[_0xbf27('0x4d')],md5(_0x2bb572[_0xbf27('0x4d')]));}headers[_0xbf27('0x4e')]=getAuth(_0x277640);return getUser(_0x277640,_0x175350[_0xbf27('0x4f')])['then'](function(_0x9d8588){_0xee4288=_0x9d8588;logger[_0xbf27('0xa')](_0xbf27('0x62'),_0xee4288['id']);return getEndUser(_0x277640,_0x2bb572['destcalleridname'],_0x2bb572['destcalleridnum']);})[_0xbf27('0x16')](function(_0x5bd010){_0x2d7d3a=_0x5bd010;logger[_0xbf27('0xa')]('The\x20Enduser\x20ID\x20is:',_0x2d7d3a['id']);return getTicket(_0x277640,_0xee4288,_0x2d7d3a,_0xd189bd,_0x2bb572);})[_0xbf27('0x16')](function(_0x1cd6ba){if(_0x1cd6ba){logger['info'](_0xbf27('0x52'),_0x1cd6ba['id']);switch(_0x277640['type']){case _0xbf27('0x53'):logger[_0xbf27('0xa')](_0xbf27('0x61'),_0xbf27('0x54'));return request({'uri':util[_0xbf27('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x277640['remoteUri'],_0xee4288['id'],_0x1cd6ba['id']),'method':_0xbf27('0xf')});case _0xbf27('0x55'):logger['info']('[OUTBOUND]',_0xbf27('0x56'));emit(util['format'](_0xbf27('0x57'),_0x175350[_0xbf27('0x46')]),_0xbf27('0x58'),{'uri':util['format'](_0xbf27('0x59'),_0x277640[_0xbf27('0xe')][_0xbf27('0x5a')]('/api/v2',''),_0x1cd6ba['id'])});break;default:logger[_0xbf27('0x5b')](_0xbf27('0x61'),_0xbf27('0x5c'));}}})['catch'](function(_0x2adde3){logger[_0xbf27('0x5b')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xbf27('0x5f')](_0x2adde3,{'showHidden':!![],'depth':null}));});};exports[_0xbf27('0x63')]=function(_0xd200a3,_0x3f2f5a,_0x368e39,_0x327956,_0xffb57e,_0x6cc25f){var _0x56e930,_0x38d006;_0x6cc25f[_0xbf27('0xe')]=intUtil[_0xbf27('0x48')](_0x6cc25f['remoteUri']);_0x6cc25f[_0xbf27('0x47')]=intUtil[_0xbf27('0x48')](_0x6cc25f[_0xbf27('0x47')]);if(_0xffb57e&&_0xffb57e[_0xbf27('0x64')]){logger[_0xbf27('0xa')]('['+_0x3f2f5a[_0xbf27('0x65')][_0xbf27('0x66')]()+']',_0xbf27('0x4a'));_0x3f2f5a[_0xbf27('0x4b')]=util[_0xbf27('0xc')](_0xbf27('0x4c'),_0x6cc25f[_0xbf27('0x47')],_0x3f2f5a[_0xbf27('0x4d')],md5(_0x3f2f5a[_0xbf27('0x4d')]));}else{_0x3f2f5a['recordingURL']='';}headers['Authorization']=getAuth(_0x6cc25f);return getUser(_0x6cc25f)['then'](function(_0x6d23bd){_0x56e930=_0x6d23bd;logger[_0xbf27('0xa')](_0xbf27('0x62'),_0x56e930['id']);return getEndUser(_0x6cc25f,_0x3f2f5a[_0xbf27('0x50')],_0x3f2f5a[_0xbf27('0x67')]);})[_0xbf27('0x16')](function(_0x529d5a){_0x38d006=_0x529d5a;logger['info'](_0xbf27('0x51'),_0x38d006['id']);return getTicket(_0x6cc25f,_0x56e930,_0x38d006,_0x368e39,_0x3f2f5a);})['then'](function(_0x22b506){if(_0x22b506){logger[_0xbf27('0xa')](_0xbf27('0x52'),_0x22b506['id']);}})[_0xbf27('0x5d')](function(_0x4f1301){logger['error']('['+_0x3f2f5a[_0xbf27('0x65')][_0xbf27('0x66')]()+']'+_0xbf27('0x68'),util[_0xbf27('0x5f')](_0x4f1301,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 9c6ba2a..c2cc502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7070=['The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','unmanaged','toUpperCase','calleridname','request-promise','util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','picklist','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','refresh_token','then','seconds','catch','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','isNil','findIndex','email','Agent\x20found!','profile','Administrator','user','Using\x20the\x20admin\x20account!','The\x20failing\x20result\x20is','error','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','SUCCESS','startCase','Error:\x20','log','CREATE\x20ERROR','moduleSearch','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','Subject','getString','Subjects','Descriptions','Who_Id','First_Name','Last_Name','What_Id','Full_Name','$se_module','talktime','answertime','Call_Duration','utc','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','outbound','agentcalledAt','merge','err','queue','host','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','com','The\x20User\x20ID\x20is:','calleridnum','Inbound','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','zoho.eu','destcalleridname','Outbound'];(function(_0x3e6d3e,_0x3b9f84){var _0x22dfe1=function(_0x352730){while(--_0x352730){_0x3e6d3e['push'](_0x3e6d3e['shift']());}};_0x22dfe1(++_0x3b9f84);}(_0x7070,0x1d7));var _0x0707=function(_0x2442eb,_0x2144b3){_0x2442eb=_0x2442eb-0x0;var _0x3007cd=_0x7070[_0x2442eb];return _0x3007cd;};'use strict';var _=require('lodash');var rp=require(_0x0707('0x0'));var md5=require('md5');var util=require(_0x0707('0x1'));var intUtil=require('./util');var moment=require('moment');var Redis=require(_0x0707('0x2'));var BPromise=require(_0x0707('0x3'));var config=require(_0x0707('0x4'));var logger=require(_0x0707('0x5'))('zoho');config[_0x0707('0x6')]=_[_0x0707('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x0707('0x8'))(new Redis(config['redis']));function emit(_0x5777eb,_0x170332,_0xacf92){io['to'](_0x5777eb)[_0x0707('0x9')](_0x170332,_0xacf92);}function request(_0x36cc62){logger[_0x0707('0xa')](_0x0707('0xb'),JSON[_0x0707('0xc')](_0x36cc62));return rp(_0x36cc62);}function getCustomFields(_0x3ad4f7,_0x403877){var _0x2056c0={};if(_0x3ad4f7['length']>0x0){_[_0x0707('0xd')](_0x3ad4f7,function(_0x5462c4){if(_[_0x0707('0xe')](['string',_0x0707('0xf')],_0x5462c4[_0x0707('0x10')])&&_0x5462c4[_0x0707('0x11')]){_0x2056c0[_0x5462c4[_0x0707('0x11')]]=_0x5462c4[_0x0707('0x12')][_0x0707('0x13')]();}else if(_0x5462c4[_0x0707('0x10')]===_0x0707('0x14')&&_0x5462c4[_0x0707('0x15')]&&_0x5462c4[_0x0707('0x11')]&&_0x403877[_0x5462c4['variableName']]){_0x2056c0[_0x5462c4['idField']]=_0x403877[_0x5462c4[_0x0707('0x15')]][_0x0707('0x13')]();}else if(_0x5462c4[_0x0707('0x10')]===_0x0707('0x16')&&_0x5462c4['Variable']&&_0x5462c4[_0x0707('0x17')][_0x0707('0x18')]&&_0x5462c4[_0x0707('0x11')]&&_0x403877[_0x5462c4['Variable'][_0x0707('0x18')]['toLowerCase']()]){_0x2056c0[_0x5462c4[_0x0707('0x11')]]=_0x403877[_0x5462c4['Variable'][_0x0707('0x18')][_0x0707('0x19')]()][_0x0707('0x13')]();}});}return _0x2056c0;}function getName(_0x2bd9b4){if(_0x2bd9b4[_0x0707('0x1a')]('\x20')>0x0){var _0x5ab0f8=_0x2bd9b4[_0x0707('0x1b')](/ (.+)/);if(_0x5ab0f8[0x1]){return _0x5ab0f8;}}return[_0x2bd9b4,_0x2bd9b4];}var accountsTokens={};function getAccessToken(_0x360caf){return new Promise(function(_0x37d1fd,_0x4bbb35){if(!_['isNil'](accountsTokens[_0x360caf['id']])&&!_['isNil'](accountsTokens[_0x360caf['id']][_0x0707('0x1c')])){if(moment()[_0x0707('0x1d')](accountsTokens[_0x360caf['id']][_0x0707('0x1e')])){_0x37d1fd(accountsTokens[_0x360caf['id']]['access_token']);}}var _0x51a344;switch(_0x360caf[_0x0707('0x1f')]){case'US':_0x51a344=_0x0707('0x20');break;case'AU':_0x51a344=_0x0707('0x21');break;case'EU':_0x51a344=_0x0707('0x22');break;case'IN':_0x51a344=_0x0707('0x23');break;case'CN':_0x51a344=_0x0707('0x24');break;default:_0x51a344=_0x0707('0x22');break;}var _0x57c868={'method':_0x0707('0x25'),'uri':_0x51a344+_0x0707('0x26'),'qs':{'refresh_token':_0x360caf[_0x0707('0x27')],'client_id':_0x360caf[_0x0707('0x28')],'client_secret':_0x360caf['clientSecret'],'grant_type':_0x0707('0x29')},'json':!![]};return rp(_0x57c868)[_0x0707('0x2a')](function(_0x3be832){accountsTokens[_0x360caf['id']]={'access_token':_0x3be832[_0x0707('0x1c')],'expires_in':moment()['add'](_0x3be832[_0x0707('0x1e')],_0x0707('0x2b'))};_0x37d1fd(_0x3be832[_0x0707('0x1c')]);})[_0x0707('0x2c')](function(_0x428bd5){logger['error'](_0x0707('0x2d'),_0x428bd5[_0x0707('0x2e')]);_0x4bbb35(_0x428bd5);});});}function getUser(_0x2f0ed2,_0x2d7c68,_0x5e8cbf,_0x11b444){logger[_0x0707('0x2f')](_0x0707('0x30'));return request({'method':_0x0707('0x31'),'uri':util[_0x0707('0x32')](_0x0707('0x33'),_0x2d7c68),'qs':{'type':_0x0707('0x34')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2f0ed2},'json':!![]})['then'](function(_0x1ed31b){if(_0x1ed31b[_0x0707('0x35')]){var _0x24fda7=-0x1;if(_[_0x0707('0x36')](_0x1ed31b['users'])){if(!_[_0x0707('0x37')](_0x11b444)){_0x24fda7=_[_0x0707('0x38')](_0x1ed31b['users'],function(_0x429cf5){return _0x429cf5[_0x0707('0x39')]===_0x11b444;});}if(_0x24fda7>=0x0){logger['info'](_0x0707('0x3a'));}else{logger[_0x0707('0x2f')]('Using\x20the\x20admin\x20account!');_0x24fda7=_[_0x0707('0x38')](_0x1ed31b[_0x0707('0x35')],function(_0x5b2167){return _0x5b2167[_0x0707('0x3b')][_0x0707('0x18')]===_0x0707('0x3c');});}return _0x1ed31b[_0x0707('0x35')][_0x24fda7];}else{if(_0x1ed31b[_0x0707('0x3d')][_0x0707('0x3b')][_0x0707('0x18')]==='Administrator'){logger[_0x0707('0x2f')](_0x0707('0x3e'));user=_0x1ed31b[_0x0707('0x3d')];return user;}else{logger['error'](_0x0707('0x3f'),JSON[_0x0707('0xc')](_0x1ed31b));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x0707('0xc')](_0x1ed31b));}}}else{logger[_0x0707('0x40')](_0x0707('0x3f'),JSON['stringify'](_0x1ed31b));throw new Error(_0x0707('0x41')+JSON['stringify'](_0x1ed31b));}})[_0x0707('0x2c')](function(_0x4093c6){console[_0x0707('0x40')](_0x4093c6);});}function getZohoUser(_0x2d3bd6,_0x40cf83){return new BPromise(function(_0x4318dc,_0x411300){request(_0x2d3bd6)[_0x0707('0x2a')](function(_0xe70346){var _0x1ec918=null;if(_0xe70346){_0x1ec918=_0xe70346[_0x0707('0x42')][0x0];_0x1ec918[_0x0707('0x43')]=_0x40cf83;}_0x4318dc(_0x1ec918);})[_0x0707('0x2c')](function(_0x28141c){_0x411300(_0x28141c);});});}function createEndUser(_0x1bb992,_0x30765c,_0x374e21,_0x28403,_0x1e3d16,_0x507f5b){var _0x374e21=getName(_0x374e21);return request({'method':_0x0707('0x25'),'uri':_0x0707('0x44')+_0x30765c+'/crm/v2/'+_['startCase'](_0x507f5b[_0x0707('0x45')])+'s','body':{'data':[{'Last_Name':_0x374e21[0x1],'First_Name':_0x374e21[0x0],'Phone':_0x28403,'Owner':{'name':!_[_0x0707('0x37')](_0x1e3d16['role'][_0x0707('0x18')])?_0x1e3d16[_0x0707('0x46')][_0x0707('0x18')]:!_[_0x0707('0x37')](_0x1e3d16[_0x0707('0x47')])?_0x1e3d16['first_name']+'\x20'+_0x1e3d16[_0x0707('0x48')]:_0x1e3d16[_0x0707('0x48')],'id':_0x1e3d16['id']}}]},'headers':{'Authorization':_0x0707('0x49')+_0x1bb992},'json':!![]})['then'](function(_0x884932){if(_0x884932&&_0x884932[_0x0707('0x42')][0x0][_0x0707('0x4a')]===_0x0707('0x4b')){var _0x11eac5=_0x884932[_0x0707('0x42')][0x0]['details'];_0x11eac5[_0x0707('0x43')]=_[_0x0707('0x4c')](_0x507f5b[_0x0707('0x45')])+'s';return _0x11eac5;}logger[_0x0707('0x40')]('The\x20failing\x20result\x20is',JSON['stringify'](data));throw new Error(_0x0707('0x4d')+JSON[_0x0707('0xc')](data));})[_0x0707('0x2c')](function(_0x61f2f6){console[_0x0707('0x4e')](_0x0707('0x4f'),_0x61f2f6);});}function getEndUser(_0x3643ff,_0x35491e,_0x24e942,_0x20d111,_0xe547be,_0x4d0ac7,_0x7a3311){var _0x45f2f4={'method':_0x0707('0x31'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3643ff},'json':!![]};switch(_0x7a3311[_0x0707('0x50')]){case _0x0707('0x51'):_0x45f2f4[_0x0707('0x52')]=_0x0707('0x44')+_0x35491e+_0x0707('0x53')+_0xe547be+'))';return getZohoUser(_0x45f2f4,_0x0707('0x54'))[_0x0707('0x2a')](function(_0x20ee4d){if(_0x20ee4d)return _0x20ee4d;_0x45f2f4['uri']=_0x0707('0x44')+_0x35491e+_0x0707('0x55')+_0xe547be+'))';return getZohoUser(_0x45f2f4,_0x0707('0x56'))[_0x0707('0x2a')](function(_0x19a4df){if(_0x19a4df)return _0x19a4df;if(_0x7a3311['moduleCreate']!=_0x0707('0x57')){return createEndUser(_0x3643ff,_0x35491e,_0x20d111,_0xe547be,_0x4d0ac7,_0x7a3311);}else{return{};}});});break;case _0x0707('0x58'):_0x45f2f4[_0x0707('0x52')]=_0x0707('0x44')+_0x35491e+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0xe547be+'))';return getZohoUser(_0x45f2f4,_0x0707('0x54'))['then'](function(_0x1f8118){if(_0x1f8118)return _0x1f8118;if(_0x7a3311[_0x0707('0x45')]!=_0x0707('0x57')){return createEndUser(_0x3643ff,_0x35491e,_0x20d111,_0xe547be,_0x4d0ac7,_0x7a3311);}else{return{};}});break;case _0x0707('0x59'):_0x45f2f4['uri']=_0x0707('0x44')+_0x35491e+_0x0707('0x55')+_0xe547be+'))';return getZohoUser(_0x45f2f4,_0x0707('0x56'))[_0x0707('0x2a')](function(_0x2a35d6){if(_0x2a35d6)return _0x2a35d6;if(_0x7a3311[_0x0707('0x45')]!='nothing'){return createEndUser(_0x3643ff,_0x35491e,_0x20d111,_0xe547be,_0x4d0ac7,_0x7a3311);}else{return{};}});break;}}function getCall(_0x27c306,_0x1db4b5,_0x474463,_0x2f9092,_0x4114e9,_0x3b944f,_0x562996,_0x38b1ef){logger[_0x0707('0x2f')](_0x0707('0x5a'));var _0x40f267={};_0x40f267[_0x0707('0x5b')]={'name':!_[_0x0707('0x37')](_0x2f9092['role'][_0x0707('0x18')])&&!_[_0x0707('0x37')](_0x2f9092[_0x0707('0x3b')]['name'])&&_0x2f9092[_0x0707('0x3b')][_0x0707('0x18')]==='administrator'?_0x2f9092['role'][_0x0707('0x18')]:!_[_0x0707('0x37')](_0x2f9092['first_name'])?_0x2f9092[_0x0707('0x47')]+'\x20'+_0x2f9092[_0x0707('0x48')]:_0x2f9092[_0x0707('0x48')],'id':_0x2f9092['id']};_0x40f267[_0x0707('0x5c')]=intUtil[_0x0707('0x5d')](_0x3b944f[_0x0707('0x5e')],_0x562996,'\x20');_0x40f267['Description']=intUtil[_0x0707('0x5d')](_0x3b944f[_0x0707('0x5f')],_0x562996,'\x0a');if(_0x4114e9[_0x0707('0x43')]===_0x0707('0x54')){_0x40f267[_0x0707('0x60')]={'name':!_[_0x0707('0x37')](_0x4114e9['Full_Name'])?_0x4114e9['Full_Name']:!_[_0x0707('0x37')](_0x4114e9[_0x0707('0x61')])?_0x4114e9[_0x0707('0x61')]+'\x20'+_0x4114e9[_0x0707('0x62')]:_0x4114e9[_0x0707('0x62')],'id':_0x4114e9['id']};}if(_0x4114e9[_0x0707('0x43')]===_0x0707('0x56')){_0x40f267[_0x0707('0x63')]={'name':!_[_0x0707('0x37')](_0x4114e9[_0x0707('0x64')])?_0x4114e9[_0x0707('0x64')]:!_[_0x0707('0x37')](_0x4114e9[_0x0707('0x61')])?_0x4114e9[_0x0707('0x61')]+'\x20'+_0x4114e9['Last_Name']:_0x4114e9[_0x0707('0x62')],'id':_0x4114e9['id']};_0x40f267[_0x0707('0x65')]=_[_0x0707('0x4c')](_0x4114e9['enduserType']);}if(_0x562996['talktime']){_0x40f267['Call_Duration']=moment['utc'](parseInt(_0x562996[_0x0707('0x66')])*0x3e8)['format']('mm:ss');}else if(_0x562996[_0x0707('0x67')]&&_0x562996['endtime']){_0x40f267[_0x0707('0x68')]=moment[_0x0707('0x69')](moment(_0x562996[_0x0707('0x6a')],_0x0707('0x6b'))[_0x0707('0x6c')](moment(_0x562996[_0x0707('0x6d')],_0x0707('0x6b'))))[_0x0707('0x32')]('mm:ss');}switch(_0x562996[_0x0707('0x6e')]){case _0x0707('0x6f'):_0x40f267[_0x0707('0x70')]=_0x0707('0x71');break;case _0x0707('0x72'):case _0x0707('0x73'):_0x40f267['Call_Result']=_0x0707('0x74');break;case _0x0707('0x75'):_0x40f267[_0x0707('0x70')]=_0x0707('0x76');break;case _0x0707('0x77'):_0x40f267[_0x0707('0x70')]=_0x0707('0x78');break;case _0x0707('0x79'):_0x40f267[_0x0707('0x70')]=_0x0707('0x7a');default:}_0x40f267['Call_Start_Time']=(_0x38b1ef===_0x0707('0x7b')?moment(_0x562996[_0x0707('0x6d')])[_0x0707('0x32')](_0x0707('0x6b')):moment(_0x562996[_0x0707('0x7c')])[_0x0707('0x32')](_0x0707('0x6b')))||moment()[_0x0707('0x32')](_0x0707('0x6b'));_0x40f267['Call_Type']=_0x38b1ef||'Inbound';_0x40f267=_[_0x0707('0x7d')](_0x40f267,getCustomFields(_0x3b944f['Fields'],_0x562996));return request({'method':_0x0707('0x25'),'uri':_0x0707('0x44')+_0x1db4b5+'/crm/v2/Calls','headers':{'Authorization':_0x0707('0x49')+_0x27c306},'body':{'data':[_0x40f267]},'json':!![]})[_0x0707('0x2a')](function(_0x4ab42d){if(_0x4ab42d&&_0x4ab42d[_0x0707('0x42')][0x0][_0x0707('0x4a')]===_0x0707('0x4b')){logger[_0x0707('0x2f')]('Call\x20created!');return{'id':_0x4ab42d[_0x0707('0x42')][0x0]['details']['id']};}})[_0x0707('0x2c')](function(_0xf92d64){logger[_0x0707('0x2f')]('err',_0xf92d64[_0x0707('0x2e')]);console[_0x0707('0x4e')](_0x0707('0x7e'),_0xf92d64);});}exports[_0x0707('0x7f')]=function(_0x1ad8cb,_0x50ee65,_0x64a574,_0x4a30c3,_0x4f5806,_0x3b2a93){var _0x1c9a4b,_0xb7340f,_0x1aca27;_0x3b2a93[_0x0707('0x80')]=intUtil['stripTrailingSlash'](_0x3b2a93[_0x0707('0x80')]);_0x3b2a93[_0x0707('0x81')]=intUtil[_0x0707('0x82')](_0x3b2a93[_0x0707('0x81')]);if(_0x4f5806&&_0x4f5806['monitor_format']){logger[_0x0707('0x2f')](_0x0707('0x83'),_0x0707('0x84'));_0x50ee65[_0x0707('0x85')]=_0x3b2a93[_0x0707('0x81')]+_0x0707('0x86')+_0x50ee65['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x50ee65[_0x0707('0x87')]);}else{_0x50ee65[_0x0707('0x85')]='';}var _0x433c60=_0x3b2a93[_0x0707('0x80')]==='zoho.eu'?'eu':_0x0707('0x88');return getAccessToken(_0x3b2a93)['then'](function(_0x18fac8){_0x1aca27=_0x18fac8;return getUser(_0x1aca27,_0x433c60,_0x3b2a93,_0x4a30c3[_0x0707('0x39')]);})[_0x0707('0x2a')](function(_0x2e6b69){_0x1c9a4b=_0x2e6b69;logger['info'](_0x0707('0x89'),_0x1c9a4b['id']);return getEndUser(_0x1aca27,_0x433c60,_0x3b2a93,_0x50ee65['calleridname'],_0x50ee65[_0x0707('0x8a')],_0x1c9a4b,_0x64a574);})[_0x0707('0x2a')](function(_0x4559ea){_0xb7340f=_0x4559ea;return getCall(_0x1aca27,_0x433c60,_0x3b2a93,_0x1c9a4b,_0xb7340f,_0x64a574,_0x50ee65,_0x0707('0x8b'));})[_0x0707('0x2a')](function(_0x41a471){if(_0x41a471){logger['info']('The\x20Call\x20ID\x20is:',_0x41a471['id']);logger[_0x0707('0x2f')](_0x0707('0x83'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0707('0x32')](_0x0707('0x8c'),_0x4a30c3['name']),_0x0707('0x8d'),{'uri':'https://crm.'+_0x3b2a93['host']+_0x0707('0x8e')+_0x41a471['id']});}})[_0x0707('0x2c')](function(_0x5171bc){logger['error'](_0x0707('0x83'),JSON[_0x0707('0xc')](_0x5171bc));});};exports[_0x0707('0x7b')]=function(_0x199191,_0xdbd39e,_0xbe520d,_0x5e1cb7,_0xa9f08c,_0x23978c,_0x15d398){var _0xba43c1,_0x412079,_0x3f323b;_0x23978c[_0x0707('0x80')]=intUtil[_0x0707('0x82')](_0x23978c[_0x0707('0x80')]);_0x23978c[_0x0707('0x81')]=intUtil[_0x0707('0x82')](_0x23978c[_0x0707('0x81')]);if(_0x15d398&&_0x15d398['recordingFormat']&&_0x15d398[_0x0707('0x8f')]!==_0x0707('0x90')){logger['info'](_0x0707('0x91'),'Recording\x20is\x20enabled!');_0xdbd39e['recordingURL']=_0x23978c['serverUrl']+_0x0707('0x86')+_0xdbd39e['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0xdbd39e['uniqueid']);}var _0x2af8ae=_0x23978c[_0x0707('0x80')]===_0x0707('0x92')?'eu':_0x0707('0x88');return getAccessToken(_0x23978c)[_0x0707('0x2a')](function(_0x109932){_0x3f323b=_0x109932;return getUser(_0x3f323b,_0x2af8ae,_0x23978c,_0x5e1cb7[_0x0707('0x39')]);})[_0x0707('0x2a')](function(_0x4b37ea){_0xba43c1=_0x4b37ea;logger[_0x0707('0x2f')](_0x0707('0x89'),_0xba43c1['id']);return getEndUser(_0x3f323b,_0x2af8ae,_0x23978c,_0xdbd39e[_0x0707('0x93')],_0xdbd39e['destcalleridnum'],_0xba43c1,_0xbe520d);})[_0x0707('0x2a')](function(_0x3a4087){_0x412079=_0x3a4087;return getCall(_0x3f323b,_0x2af8ae,_0x23978c,_0xba43c1,_0x412079,_0xbe520d,_0xdbd39e,_0x0707('0x94'));})[_0x0707('0x2a')](function(_0x3eee88){if(_0x3eee88){logger[_0x0707('0x2f')](_0x0707('0x95'),_0x3eee88['id']);logger['info'](_0x0707('0x91'),_0x0707('0x96'));emit(util[_0x0707('0x32')]('user:%s',_0x5e1cb7['name']),_0x0707('0x8d'),{'uri':_0x0707('0x97')+_0x23978c[_0x0707('0x80')]+_0x0707('0x8e')+_0x3eee88['id']});}})[_0x0707('0x2c')](function(_0x459f8a){logger[_0x0707('0x40')](_0x0707('0x91'),JSON[_0x0707('0xc')](_0x459f8a));});};exports[_0x0707('0x98')]=function(_0x503d24,_0x2f46d3,_0x2377e1,_0x2386cf,_0x20d368,_0x1ed1b8){var _0xca044a,_0x37350f,_0x8329b2;_0x1ed1b8[_0x0707('0x80')]=intUtil[_0x0707('0x82')](_0x1ed1b8['host']);_0x1ed1b8[_0x0707('0x81')]=intUtil['stripTrailingSlash'](_0x1ed1b8['serverUrl']);if(_0x20d368&&_0x20d368['monitor_format']){logger[_0x0707('0x2f')]('['+_0x2f46d3[_0x0707('0x6e')][_0x0707('0x99')]()+']','Recording\x20is\x20enabled!');_0x2f46d3[_0x0707('0x85')]=_0x1ed1b8[_0x0707('0x81')]+_0x0707('0x86')+_0x2f46d3['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x2f46d3[_0x0707('0x87')]);}else{_0x2f46d3[_0x0707('0x85')]='';}var _0x3c6332=_0x1ed1b8[_0x0707('0x80')]===_0x0707('0x92')?'eu':_0x0707('0x88');return getAccessToken(_0x1ed1b8)[_0x0707('0x2a')](function(_0x1f02eb){_0x8329b2=_0x1f02eb;return getUser(_0x8329b2,_0x3c6332,_0x1ed1b8);})[_0x0707('0x2a')](function(_0x38cf4a){_0xca044a=_0x38cf4a;logger[_0x0707('0x2f')](_0x0707('0x89'),_0xca044a['id']);return getEndUser(_0x8329b2,_0x3c6332,_0x1ed1b8,_0x2f46d3[_0x0707('0x9a')],_0x2f46d3['calleridnum'],_0xca044a,_0x2377e1);})[_0x0707('0x2a')](function(_0x1f5145){_0x37350f=_0x1f5145;return getCall(_0x8329b2,_0x3c6332,_0x1ed1b8,_0xca044a,_0x37350f,_0x2377e1,_0x2f46d3,_0x0707('0x8b'));})[_0x0707('0x2a')](function(_0x37442f){if(_0x37442f){logger[_0x0707('0x2f')]('The\x20Call\x20ID\x20is:',_0x37442f['id']);}})[_0x0707('0x2c')](function(_0x552507){logger['error']('['+_0x2f46d3[_0x0707('0x6e')]['toUpperCase']()+']',JSON[_0x0707('0xc')](_0x552507));});};
\ No newline at end of file
+var _0x9624=['merge','/crm/v2/Calls','code','SUCCESS','Call\x20created!','err','host','serverUrl','stripTrailingSlash','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridnum','Inbound','[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','recordingURL','/downloads?type=uniqueid&token=','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','user:%s','unmanaged','monitor_format','calleridname','toUpperCase','lodash','request-promise','md5','util','./util','ioredis','bluebird','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','stringify','length','forEach','includes','string','picklist','type','idField','variable','variableName','toString','customVariable','Variable','name','toLowerCase','split','expires_in','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Using\x20the\x20admin\x20account!','profile','Administrator','user','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','isNil','role','first_name','last_name','data','details','Error:\x20','log','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','Subject','getString','Subjects','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','talktime','utc','answertime','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','mm:ss','lastevent','called','Called','connect','Call_Result','Answered','rejected','Rejected','Abandoned','timeout','Timeout','Call_Start_Time','outbound','Call_Type'];(function(_0x2eb079,_0x5b02b4){var _0x5842c9=function(_0x1e3f57){while(--_0x1e3f57){_0x2eb079['push'](_0x2eb079['shift']());}};_0x5842c9(++_0x5b02b4);}(_0x9624,0xc0));var _0x4962=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9624[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4962('0x0'));var rp=require(_0x4962('0x1'));var md5=require(_0x4962('0x2'));var util=require(_0x4962('0x3'));var intUtil=require(_0x4962('0x4'));var moment=require('moment');var Redis=require(_0x4962('0x5'));var BPromise=require(_0x4962('0x6'));var config=require(_0x4962('0x7'));var logger=require('../../../../config/logger')(_0x4962('0x8'));config[_0x4962('0x9')]=_[_0x4962('0xa')](config[_0x4962('0x9')],{'host':_0x4962('0xb'),'port':0x18eb});var io=require(_0x4962('0xc'))(new Redis(config[_0x4962('0x9')]));function emit(_0x80593e,_0x50668c,_0x327ee6){io['to'](_0x80593e)[_0x4962('0xd')](_0x50668c,_0x327ee6);}function request(_0x4a794c){logger['debug']('[HTTP]',JSON[_0x4962('0xe')](_0x4a794c));return rp(_0x4a794c);}function getCustomFields(_0x2afa06,_0x3e021d){var _0x385474={};if(_0x2afa06[_0x4962('0xf')]>0x0){_[_0x4962('0x10')](_0x2afa06,function(_0x1ad6ca){if(_[_0x4962('0x11')]([_0x4962('0x12'),_0x4962('0x13')],_0x1ad6ca[_0x4962('0x14')])&&_0x1ad6ca[_0x4962('0x15')]){_0x385474[_0x1ad6ca[_0x4962('0x15')]]=_0x1ad6ca['content']['toString']();}else if(_0x1ad6ca[_0x4962('0x14')]===_0x4962('0x16')&&_0x1ad6ca['variableName']&&_0x1ad6ca[_0x4962('0x15')]&&_0x3e021d[_0x1ad6ca[_0x4962('0x17')]]){_0x385474[_0x1ad6ca[_0x4962('0x15')]]=_0x3e021d[_0x1ad6ca[_0x4962('0x17')]][_0x4962('0x18')]();}else if(_0x1ad6ca[_0x4962('0x14')]===_0x4962('0x19')&&_0x1ad6ca[_0x4962('0x1a')]&&_0x1ad6ca[_0x4962('0x1a')][_0x4962('0x1b')]&&_0x1ad6ca[_0x4962('0x15')]&&_0x3e021d[_0x1ad6ca[_0x4962('0x1a')][_0x4962('0x1b')][_0x4962('0x1c')]()]){_0x385474[_0x1ad6ca['idField']]=_0x3e021d[_0x1ad6ca[_0x4962('0x1a')][_0x4962('0x1b')][_0x4962('0x1c')]()][_0x4962('0x18')]();}});}return _0x385474;}function getName(_0x52928f){if(_0x52928f['indexOf']('\x20')>0x0){var _0x1a6f1f=_0x52928f[_0x4962('0x1d')](/ (.+)/);if(_0x1a6f1f[0x1]){return _0x1a6f1f;}}return[_0x52928f,_0x52928f];}var accountsTokens={};function getAccessToken(_0x32b90e){return new Promise(function(_0xeecc00,_0x13e760){if(!_['isNil'](accountsTokens[_0x32b90e['id']])&&!_['isNil'](accountsTokens[_0x32b90e['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x32b90e['id']][_0x4962('0x1e')])){_0xeecc00(accountsTokens[_0x32b90e['id']][_0x4962('0x1f')]);}}var _0x57f9c7;switch(_0x32b90e[_0x4962('0x20')]){case'US':_0x57f9c7=_0x4962('0x21');break;case'AU':_0x57f9c7=_0x4962('0x22');break;case'EU':_0x57f9c7='https://accounts.zoho.eu';break;case'IN':_0x57f9c7=_0x4962('0x23');break;case'CN':_0x57f9c7=_0x4962('0x24');break;default:_0x57f9c7=_0x4962('0x25');break;}var _0x2ea337={'method':_0x4962('0x26'),'uri':_0x57f9c7+_0x4962('0x27'),'qs':{'refresh_token':_0x32b90e[_0x4962('0x28')],'client_id':_0x32b90e[_0x4962('0x29')],'client_secret':_0x32b90e[_0x4962('0x2a')],'grant_type':_0x4962('0x2b')},'json':!![]};return rp(_0x2ea337)[_0x4962('0x2c')](function(_0xddf703){accountsTokens[_0x32b90e['id']]={'access_token':_0xddf703[_0x4962('0x1f')],'expires_in':moment()['add'](_0xddf703[_0x4962('0x1e')],_0x4962('0x2d'))};_0xeecc00(_0xddf703[_0x4962('0x1f')]);})[_0x4962('0x2e')](function(_0x35b684){logger[_0x4962('0x2f')](_0x4962('0x30'),_0x35b684[_0x4962('0x31')]);_0x13e760(_0x35b684);});});}function getUser(_0x3a2a5b,_0x2c722e,_0x101b60,_0x50c0c1){logger[_0x4962('0x32')](_0x4962('0x33'));return request({'method':_0x4962('0x34'),'uri':util[_0x4962('0x35')](_0x4962('0x36'),_0x2c722e),'qs':{'type':_0x4962('0x37')},'headers':{'Authorization':_0x4962('0x38')+_0x3a2a5b},'json':!![]})[_0x4962('0x2c')](function(_0x51689e){if(_0x51689e[_0x4962('0x39')]){var _0xdf644c=-0x1;if(_[_0x4962('0x3a')](_0x51689e[_0x4962('0x39')])){if(!_['isNil'](_0x50c0c1)){_0xdf644c=_[_0x4962('0x3b')](_0x51689e[_0x4962('0x39')],function(_0x11e58b){return _0x11e58b[_0x4962('0x3c')]===_0x50c0c1;});}if(_0xdf644c>=0x0){logger[_0x4962('0x32')]('Agent\x20found!');}else{logger[_0x4962('0x32')](_0x4962('0x3d'));_0xdf644c=_['findIndex'](_0x51689e['users'],function(_0x1c5029){return _0x1c5029[_0x4962('0x3e')][_0x4962('0x1b')]===_0x4962('0x3f');});}return _0x51689e[_0x4962('0x39')][_0xdf644c];}else{if(_0x51689e[_0x4962('0x40')]['profile'][_0x4962('0x1b')]===_0x4962('0x3f')){logger['info'](_0x4962('0x3d'));user=_0x51689e[_0x4962('0x40')];return user;}else{logger[_0x4962('0x2f')]('The\x20failing\x20result\x20is',JSON[_0x4962('0xe')](_0x51689e));throw new Error(_0x4962('0x41')+JSON['stringify'](_0x51689e));}}}else{logger[_0x4962('0x2f')](_0x4962('0x42'),JSON[_0x4962('0xe')](_0x51689e));throw new Error(_0x4962('0x41')+JSON[_0x4962('0xe')](_0x51689e));}})[_0x4962('0x2e')](function(_0x127cac){console[_0x4962('0x2f')](_0x127cac);});}function getZohoUser(_0x57007d,_0x235c56){return new BPromise(function(_0x1fa63e,_0x2b22a1){request(_0x57007d)[_0x4962('0x2c')](function(_0x316e09){var _0x2e78e5=null;if(_0x316e09){_0x2e78e5=_0x316e09['data'][0x0];_0x2e78e5[_0x4962('0x43')]=_0x235c56;}_0x1fa63e(_0x2e78e5);})['catch'](function(_0x5baeca){_0x2b22a1(_0x5baeca);});});}function createEndUser(_0x7672e7,_0x4c5c3d,_0x387045,_0x531499,_0x5f146b,_0x1a9b2f){var _0x387045=getName(_0x387045);return request({'method':_0x4962('0x26'),'uri':_0x4962('0x44')+_0x4c5c3d+_0x4962('0x45')+_[_0x4962('0x46')](_0x1a9b2f[_0x4962('0x47')])+'s','body':{'data':[{'Last_Name':_0x387045[0x1],'First_Name':_0x387045[0x0],'Phone':_0x531499,'Owner':{'name':!_[_0x4962('0x48')](_0x5f146b['role'][_0x4962('0x1b')])?_0x5f146b[_0x4962('0x49')][_0x4962('0x1b')]:!_[_0x4962('0x48')](_0x5f146b[_0x4962('0x4a')])?_0x5f146b[_0x4962('0x4a')]+'\x20'+_0x5f146b[_0x4962('0x4b')]:_0x5f146b[_0x4962('0x4b')],'id':_0x5f146b['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x7672e7},'json':!![]})[_0x4962('0x2c')](function(_0xf91114){if(_0xf91114&&_0xf91114[_0x4962('0x4c')][0x0]['code']==='SUCCESS'){var _0x4e23f7=_0xf91114[_0x4962('0x4c')][0x0][_0x4962('0x4d')];_0x4e23f7[_0x4962('0x43')]=_[_0x4962('0x46')](_0x1a9b2f[_0x4962('0x47')])+'s';return _0x4e23f7;}logger[_0x4962('0x2f')](_0x4962('0x42'),JSON[_0x4962('0xe')](data));throw new Error(_0x4962('0x4e')+JSON[_0x4962('0xe')](data));})[_0x4962('0x2e')](function(_0x18a7b3){console[_0x4962('0x4f')]('CREATE\x20ERROR',_0x18a7b3);});}function getEndUser(_0x4a7fae,_0x47d549,_0x59ff93,_0x1875c4,_0x436bbf,_0x1799ab,_0x55c061){var _0x5869c4={'method':'GET','uri':'','headers':{'Authorization':_0x4962('0x38')+_0x4a7fae},'json':!![]};switch(_0x55c061['moduleSearch']){case'contact_lead':_0x5869c4[_0x4962('0x50')]=_0x4962('0x44')+_0x47d549+_0x4962('0x51')+_0x436bbf+'))';return getZohoUser(_0x5869c4,_0x4962('0x52'))['then'](function(_0x50149d){if(_0x50149d)return _0x50149d;_0x5869c4['uri']='https://www.zohoapis.'+_0x47d549+_0x4962('0x53')+_0x436bbf+'))';return getZohoUser(_0x5869c4,_0x4962('0x54'))[_0x4962('0x2c')](function(_0x34006c){if(_0x34006c)return _0x34006c;if(_0x55c061[_0x4962('0x47')]!=_0x4962('0x55')){return createEndUser(_0x4a7fae,_0x47d549,_0x1875c4,_0x436bbf,_0x1799ab,_0x55c061);}else{return{};}});});break;case _0x4962('0x56'):_0x5869c4[_0x4962('0x50')]=_0x4962('0x44')+_0x47d549+_0x4962('0x51')+_0x436bbf+'))';return getZohoUser(_0x5869c4,_0x4962('0x52'))[_0x4962('0x2c')](function(_0x53f908){if(_0x53f908)return _0x53f908;if(_0x55c061[_0x4962('0x47')]!=_0x4962('0x55')){return createEndUser(_0x4a7fae,_0x47d549,_0x1875c4,_0x436bbf,_0x1799ab,_0x55c061);}else{return{};}});break;case _0x4962('0x57'):_0x5869c4[_0x4962('0x50')]='https://www.zohoapis.'+_0x47d549+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x436bbf+'))';return getZohoUser(_0x5869c4,_0x4962('0x54'))['then'](function(_0x1d87ea){if(_0x1d87ea)return _0x1d87ea;if(_0x55c061[_0x4962('0x47')]!=_0x4962('0x55')){return createEndUser(_0x4a7fae,_0x47d549,_0x1875c4,_0x436bbf,_0x1799ab,_0x55c061);}else{return{};}});break;}}function getCall(_0x24cd0f,_0x23e7b5,_0x30b647,_0x475157,_0x5a2400,_0x50407b,_0x508448,_0x207507){logger[_0x4962('0x32')](_0x4962('0x58'));var _0x1c35bd={};_0x1c35bd[_0x4962('0x59')]={'name':!_[_0x4962('0x48')](_0x475157[_0x4962('0x49')][_0x4962('0x1b')])&&!_[_0x4962('0x48')](_0x475157[_0x4962('0x3e')][_0x4962('0x1b')])&&_0x475157[_0x4962('0x3e')]['name']===_0x4962('0x5a')?_0x475157[_0x4962('0x49')][_0x4962('0x1b')]:!_[_0x4962('0x48')](_0x475157['first_name'])?_0x475157[_0x4962('0x4a')]+'\x20'+_0x475157[_0x4962('0x4b')]:_0x475157[_0x4962('0x4b')],'id':_0x475157['id']};_0x1c35bd[_0x4962('0x5b')]=intUtil[_0x4962('0x5c')](_0x50407b[_0x4962('0x5d')],_0x508448,'\x20');_0x1c35bd['Description']=intUtil[_0x4962('0x5c')](_0x50407b[_0x4962('0x5e')],_0x508448,'\x0a');if(_0x5a2400[_0x4962('0x43')]===_0x4962('0x52')){_0x1c35bd[_0x4962('0x5f')]={'name':!_[_0x4962('0x48')](_0x5a2400[_0x4962('0x60')])?_0x5a2400[_0x4962('0x60')]:!_[_0x4962('0x48')](_0x5a2400[_0x4962('0x61')])?_0x5a2400[_0x4962('0x61')]+'\x20'+_0x5a2400['Last_Name']:_0x5a2400[_0x4962('0x62')],'id':_0x5a2400['id']};}if(_0x5a2400[_0x4962('0x43')]===_0x4962('0x54')){_0x1c35bd[_0x4962('0x63')]={'name':!_[_0x4962('0x48')](_0x5a2400[_0x4962('0x60')])?_0x5a2400[_0x4962('0x60')]:!_['isNil'](_0x5a2400[_0x4962('0x61')])?_0x5a2400[_0x4962('0x61')]+'\x20'+_0x5a2400[_0x4962('0x62')]:_0x5a2400[_0x4962('0x62')],'id':_0x5a2400['id']};_0x1c35bd['$se_module']=_['startCase'](_0x5a2400[_0x4962('0x43')]);}if(_0x508448[_0x4962('0x64')]){_0x1c35bd['Call_Duration']=moment[_0x4962('0x65')](parseInt(_0x508448[_0x4962('0x64')])*0x3e8)[_0x4962('0x35')]('mm:ss');}else if(_0x508448[_0x4962('0x66')]&&_0x508448[_0x4962('0x67')]){_0x1c35bd['Call_Duration']=moment[_0x4962('0x65')](moment(_0x508448[_0x4962('0x67')],'YYYY-MM-DDTHH:mm:ss')[_0x4962('0x68')](moment(_0x508448[_0x4962('0x69')],_0x4962('0x6a'))))[_0x4962('0x35')](_0x4962('0x6b'));}switch(_0x508448[_0x4962('0x6c')]){case _0x4962('0x6d'):_0x1c35bd['Call_Result']=_0x4962('0x6e');break;case'complete':case _0x4962('0x6f'):_0x1c35bd[_0x4962('0x70')]=_0x4962('0x71');break;case _0x4962('0x72'):_0x1c35bd['Call_Result']=_0x4962('0x73');break;case'abandoned':_0x1c35bd[_0x4962('0x70')]=_0x4962('0x74');break;case _0x4962('0x75'):_0x1c35bd[_0x4962('0x70')]=_0x4962('0x76');default:}_0x1c35bd[_0x4962('0x77')]=(_0x207507===_0x4962('0x78')?moment(_0x508448[_0x4962('0x69')])[_0x4962('0x35')](_0x4962('0x6a')):moment(_0x508448['agentcalledAt'])['format']('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x4962('0x35')]('YYYY-MM-DDTHH:mm:ss');_0x1c35bd[_0x4962('0x79')]=_0x207507||'Inbound';_0x1c35bd=_[_0x4962('0x7a')](_0x1c35bd,getCustomFields(_0x50407b['Fields'],_0x508448));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x23e7b5+_0x4962('0x7b'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x24cd0f},'body':{'data':[_0x1c35bd]},'json':!![]})[_0x4962('0x2c')](function(_0x51597c){if(_0x51597c&&_0x51597c[_0x4962('0x4c')][0x0][_0x4962('0x7c')]===_0x4962('0x7d')){logger[_0x4962('0x32')](_0x4962('0x7e'));return{'id':_0x51597c[_0x4962('0x4c')][0x0][_0x4962('0x4d')]['id']};}})['catch'](function(_0x225180){logger[_0x4962('0x32')](_0x4962('0x7f'),_0x225180[_0x4962('0x31')]);console[_0x4962('0x4f')](_0x4962('0x7f'),_0x225180);});}exports['queue']=function(_0x1475cf,_0xebf47c,_0x4b1ead,_0x2ef9e0,_0x282587,_0x50bd9e){var _0x3ce69f,_0x9ecb77,_0x3ec00f;_0x50bd9e[_0x4962('0x80')]=intUtil['stripTrailingSlash'](_0x50bd9e[_0x4962('0x80')]);_0x50bd9e[_0x4962('0x81')]=intUtil[_0x4962('0x82')](_0x50bd9e['serverUrl']);if(_0x282587&&_0x282587['monitor_format']){logger[_0x4962('0x32')]('[QUEUE]',_0x4962('0x83'));_0xebf47c['recordingURL']=_0x50bd9e['serverUrl']+_0x4962('0x84')+_0xebf47c[_0x4962('0x85')]+'/downloads?type=uniqueid&token='+md5(_0xebf47c[_0x4962('0x85')]);}else{_0xebf47c['recordingURL']='';}var _0x354b92=_0x50bd9e[_0x4962('0x80')]===_0x4962('0x86')?'eu':_0x4962('0x87');return getAccessToken(_0x50bd9e)['then'](function(_0x570ae3){_0x3ec00f=_0x570ae3;return getUser(_0x3ec00f,_0x354b92,_0x50bd9e,_0x2ef9e0[_0x4962('0x3c')]);})[_0x4962('0x2c')](function(_0x4b243e){_0x3ce69f=_0x4b243e;logger['info'](_0x4962('0x88'),_0x3ce69f['id']);return getEndUser(_0x3ec00f,_0x354b92,_0x50bd9e,_0xebf47c['calleridname'],_0xebf47c[_0x4962('0x89')],_0x3ce69f,_0x4b1ead);})[_0x4962('0x2c')](function(_0x3ec40f){_0x9ecb77=_0x3ec40f;return getCall(_0x3ec00f,_0x354b92,_0x50bd9e,_0x3ce69f,_0x9ecb77,_0x4b1ead,_0xebf47c,_0x4962('0x8a'));})[_0x4962('0x2c')](function(_0x5b9995){if(_0x5b9995){logger[_0x4962('0x32')]('The\x20Call\x20ID\x20is:',_0x5b9995['id']);logger[_0x4962('0x32')](_0x4962('0x8b'),_0x4962('0x8c'));emit(util[_0x4962('0x35')]('user:%s',_0x2ef9e0[_0x4962('0x1b')]),_0x4962('0x8d'),{'uri':_0x4962('0x8e')+_0x50bd9e[_0x4962('0x80')]+_0x4962('0x8f')+_0x5b9995['id']});}})[_0x4962('0x2e')](function(_0xcf0b7){logger[_0x4962('0x2f')]('[QUEUE]',JSON[_0x4962('0xe')](_0xcf0b7));});};exports[_0x4962('0x78')]=function(_0x439a9b,_0x1621c9,_0x976cb9,_0x3576f2,_0xcba00c,_0x31679d,_0x4fbcd5){var _0x51641a,_0x1fe3b6,_0x501204;_0x31679d['host']=intUtil[_0x4962('0x82')](_0x31679d[_0x4962('0x80')]);_0x31679d[_0x4962('0x81')]=intUtil[_0x4962('0x82')](_0x31679d[_0x4962('0x81')]);if(_0x4fbcd5&&_0x4fbcd5[_0x4962('0x90')]&&_0x4fbcd5[_0x4962('0x90')]!==_0x4962('0x91')){logger[_0x4962('0x32')](_0x4962('0x92'),_0x4962('0x83'));_0x1621c9[_0x4962('0x93')]=_0x31679d[_0x4962('0x81')]+_0x4962('0x84')+_0x1621c9['uniqueid']+_0x4962('0x94')+md5(_0x1621c9[_0x4962('0x85')]);}var _0x3e6fb3=_0x31679d[_0x4962('0x80')]===_0x4962('0x86')?'eu':'com';return getAccessToken(_0x31679d)['then'](function(_0x588aa9){_0x501204=_0x588aa9;return getUser(_0x501204,_0x3e6fb3,_0x31679d,_0x3576f2[_0x4962('0x3c')]);})[_0x4962('0x2c')](function(_0x3e2423){_0x51641a=_0x3e2423;logger[_0x4962('0x32')]('The\x20User\x20ID\x20is:',_0x51641a['id']);return getEndUser(_0x501204,_0x3e6fb3,_0x31679d,_0x1621c9['destcalleridname'],_0x1621c9[_0x4962('0x95')],_0x51641a,_0x976cb9);})['then'](function(_0x5b7a1d){_0x1fe3b6=_0x5b7a1d;return getCall(_0x501204,_0x3e6fb3,_0x31679d,_0x51641a,_0x1fe3b6,_0x976cb9,_0x1621c9,_0x4962('0x96'));})[_0x4962('0x2c')](function(_0xcd6476){if(_0xcd6476){logger['info'](_0x4962('0x97'),_0xcd6476['id']);logger[_0x4962('0x32')](_0x4962('0x92'),_0x4962('0x8c'));emit(util[_0x4962('0x35')](_0x4962('0x98'),_0x3576f2[_0x4962('0x1b')]),_0x4962('0x8d'),{'uri':_0x4962('0x8e')+_0x31679d[_0x4962('0x80')]+_0x4962('0x8f')+_0xcd6476['id']});}})['catch'](function(_0x230eee){logger[_0x4962('0x2f')](_0x4962('0x92'),JSON[_0x4962('0xe')](_0x230eee));});};exports[_0x4962('0x99')]=function(_0x2a1733,_0x4bc6bd,_0x23ba19,_0x2bb6d8,_0x5e014f,_0x51fccb){var _0x4cdef6,_0x46c5bb,_0x4c7c98;_0x51fccb[_0x4962('0x80')]=intUtil[_0x4962('0x82')](_0x51fccb[_0x4962('0x80')]);_0x51fccb[_0x4962('0x81')]=intUtil[_0x4962('0x82')](_0x51fccb[_0x4962('0x81')]);if(_0x5e014f&&_0x5e014f[_0x4962('0x9a')]){logger[_0x4962('0x32')]('['+_0x4bc6bd['lastevent']['toUpperCase']()+']',_0x4962('0x83'));_0x4bc6bd[_0x4962('0x93')]=_0x51fccb[_0x4962('0x81')]+'/api/voice/recordings/'+_0x4bc6bd['uniqueid']+_0x4962('0x94')+md5(_0x4bc6bd['uniqueid']);}else{_0x4bc6bd['recordingURL']='';}var _0xf9c236=_0x51fccb[_0x4962('0x80')]===_0x4962('0x86')?'eu':'com';return getAccessToken(_0x51fccb)['then'](function(_0x2181ff){_0x4c7c98=_0x2181ff;return getUser(_0x4c7c98,_0xf9c236,_0x51fccb);})['then'](function(_0x3ec8e6){_0x4cdef6=_0x3ec8e6;logger[_0x4962('0x32')](_0x4962('0x88'),_0x4cdef6['id']);return getEndUser(_0x4c7c98,_0xf9c236,_0x51fccb,_0x4bc6bd[_0x4962('0x9b')],_0x4bc6bd[_0x4962('0x89')],_0x4cdef6,_0x23ba19);})['then'](function(_0x1541ac){_0x46c5bb=_0x1541ac;return getCall(_0x4c7c98,_0xf9c236,_0x51fccb,_0x4cdef6,_0x46c5bb,_0x23ba19,_0x4bc6bd,_0x4962('0x8a'));})[_0x4962('0x2c')](function(_0x4a1df4){if(_0x4a1df4){logger[_0x4962('0x32')](_0x4962('0x97'),_0x4a1df4['id']);}})[_0x4962('0x2e')](function(_0x351963){logger[_0x4962('0x2f')]('['+_0x4bc6bd[_0x4962('0x6c')][_0x4962('0x9c')]()+']',JSON['stringify'](_0x351963));});};
\ No newline at end of file
index 6078c3a..afc29a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa14d=['data3','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','trigger','exec','data2','Script'];(function(_0x225d44,_0x399b52){var _0x4aa98a=function(_0xeffa74){while(--_0xeffa74){_0x225d44['push'](_0x225d44['shift']());}};_0x4aa98a(++_0x399b52);}(_0xa14d,0x88));var _0xda14=function(_0x5431cc,_0x4e2dea){_0x5431cc=_0x5431cc-0x0;var _0xabce85=_0xa14d[_0x5431cc];return _0xabce85;};'use strict';var util=require(_0xda14('0x0'));var sh=require(_0xda14('0x1'));var Mustache=require(_0xda14('0x2'));var logger=require('../../../../config/logger')(_0xda14('0x3'));exports[_0xda14('0x4')]=function(_0xfab78d,_0x1dfaae){var _0x5ee330=_0xfab78d[_0xda14('0x5')]?_0xfab78d['data2']:_0xda14('0x6');var _0x271f1e=_0xfab78d[_0xda14('0x7')]?Mustache['render'](_0xfab78d[_0xda14('0x7')],_0x1dfaae):_0x1dfaae;sh[_0xda14('0x4')](_0x271f1e,function(_0x2e6b0e,_0xe2ffd1,_0x447e5c){if(_0x2e6b0e!==0x0){logger['error'](util[_0xda14('0x8')](_0xda14('0x9'),_0x5ee330,_0x271f1e,_0x2e6b0e,_0x447e5c));}else{logger[_0xda14('0xa')](util[_0xda14('0x8')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x5ee330,_0x271f1e,_0xe2ffd1));}});};
\ No newline at end of file
+var _0xe8ae=['shelljs','mustache','../../../../config/logger','trigger','data2','render','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'];(function(_0x5828b3,_0x5bcf8e){var _0x332769=function(_0x5c155d){while(--_0x5c155d){_0x5828b3['push'](_0x5828b3['shift']());}};_0x332769(++_0x5bcf8e);}(_0xe8ae,0x185));var _0xee8a=function(_0xd4fb07,_0xa2ffe1){_0xd4fb07=_0xd4fb07-0x0;var _0x76ccd1=_0xe8ae[_0xd4fb07];return _0x76ccd1;};'use strict';var util=require(_0xee8a('0x0'));var sh=require(_0xee8a('0x1'));var Mustache=require(_0xee8a('0x2'));var logger=require(_0xee8a('0x3'))(_0xee8a('0x4'));exports['exec']=function(_0x84ea79,_0x53d02f){var _0x51d3c9=_0x84ea79[_0xee8a('0x5')]?_0x84ea79[_0xee8a('0x5')]:'Script';var _0x56709c=_0x84ea79['data3']?Mustache[_0xee8a('0x6')](_0x84ea79[_0xee8a('0x7')],_0x53d02f):_0x53d02f;sh['exec'](_0x56709c,function(_0x314e24,_0x50e853,_0x287a70){if(_0x314e24!==0x0){logger[_0xee8a('0x8')](util[_0xee8a('0x9')](_0xee8a('0xa'),_0x51d3c9,_0x56709c,_0x314e24,_0x287a70));}else{logger[_0xee8a('0xb')](util['format'](_0xee8a('0xc'),_0x51d3c9,_0x56709c,_0x50e853));}});};
\ No newline at end of file
index 4a1450c..c8b7b70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8810=['mustache','../../../../config/logger','trigger','data1','toUpperCase','render','data2','data5','headers','data6','parse','error','GET','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','stringify','then','isNil',',\x20request\x20body:\x20','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','name','message','request-promise','util','lodash'];(function(_0x463dc,_0x2aa6e0){var _0x1b573e=function(_0x3896fa){while(--_0x3896fa){_0x463dc['push'](_0x463dc['shift']());}};_0x1b573e(++_0x2aa6e0);}(_0x8810,0xf5));var _0x0881=function(_0x49e519,_0x13f2be){_0x49e519=_0x49e519-0x0;var _0x50d7b8=_0x8810[_0x49e519];return _0x50d7b8;};'use strict';var rp=require(_0x0881('0x0'));var util=require(_0x0881('0x1'));var _=require(_0x0881('0x2'));var Mustache=require(_0x0881('0x3'));var logger=require(_0x0881('0x4'))(_0x0881('0x5'));exports['exec']=function(_0x3cd925,_0x5ef4b7){var _0x2f5719,_0x5400f7;var _0x1e59d6={'method':_0x3cd925[_0x0881('0x6')][_0x0881('0x7')](),'uri':Mustache[_0x0881('0x8')](_0x3cd925[_0x0881('0x9')],_0x5ef4b7),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x3cd925[_0x0881('0xa')])==='number'&&parseInt(_0x3cd925[_0x0881('0xa')])>=0x1&&parseInt(_0x3cd925[_0x0881('0xa')])<=0xa?parseInt(_0x3cd925['data5'])*0x3e8:0x5*0x3e8};try{_0x1e59d6[_0x0881('0xb')]=_0x3cd925[_0x0881('0xc')]?JSON[_0x0881('0xd')](Mustache['render'](_0x3cd925['data6'],_0x5ef4b7)):{};}catch(_0x2c2fbf){logger[_0x0881('0xe')](_0x2c2fbf['stack']);}switch(_0x3cd925[_0x0881('0x6')][_0x0881('0x7')]()){case _0x0881('0xf'):case'DELETE':_0x2f5719=null;_0x1e59d6['qs']=_0x5ef4b7;break;case'POST':case'PUT':if(_0x3cd925[_0x0881('0x10')]){try{_0x2f5719=JSON[_0x0881('0xd')](Mustache[_0x0881('0x8')](_0x3cd925[_0x0881('0x10')],_0x5ef4b7));_0x1e59d6[_0x0881('0x11')]=_0x2f5719;}catch(_0x235d99){logger[_0x0881('0xe')](_0x235d99[_0x0881('0x12')]);logger[_0x0881('0xe')](_0x0881('0x13'));}}else{_0x2f5719=_0x5ef4b7;_0x1e59d6[_0x0881('0x11')]=_0x2f5719;}break;}logger[_0x0881('0x14')](util['format']('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x3cd925['data1'],_0x3cd925['data2'],JSON[_0x0881('0x15')](_0x1e59d6)));rp(_0x1e59d6)[_0x0881('0x16')](function(_0x4bd16f){_0x2f5719=!_[_0x0881('0x17')](_0x2f5719)?_0x0881('0x18')+_0x2f5719:'';_0x5400f7=typeof _0x4bd16f[_0x0881('0x11')]==='object'?JSON[_0x0881('0x15')](_0x4bd16f[_0x0881('0x11')]):_0x4bd16f[_0x0881('0x11')];logger[_0x0881('0x14')](util[_0x0881('0x19')](_0x0881('0x1a'),_0x3cd925[_0x0881('0x6')],_0x3cd925[_0x0881('0x9')],_0x4bd16f[_0x0881('0x1b')],_0x5400f7));})[_0x0881('0x1c')](function(_0x4747d7){logger[_0x0881('0xe')](util['format']('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x3cd925[_0x0881('0x6')],_0x3cd925['data2'],_0x4747d7[_0x0881('0x1b')],_0x4747d7[_0x0881('0x1d')],_0x4747d7[_0x0881('0x1e')]));});};
\ No newline at end of file
+var _0x7c19=['body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','isNil',',\x20request\x20body:\x20','object','stringify','info','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','data2','data5','number','headers','data6','parse','error','stack','toUpperCase','GET','POST','PUT','data7','render','body'];(function(_0x44f974,_0x4db616){var _0x805dbd=function(_0x1a56b7){while(--_0x1a56b7){_0x44f974['push'](_0x44f974['shift']());}};_0x805dbd(++_0x4db616);}(_0x7c19,0x79));var _0x97c1=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x7c19[_0x556bb1];return _0x45455f;};'use strict';var rp=require(_0x97c1('0x0'));var util=require(_0x97c1('0x1'));var _=require(_0x97c1('0x2'));var Mustache=require(_0x97c1('0x3'));var logger=require(_0x97c1('0x4'))(_0x97c1('0x5'));exports[_0x97c1('0x6')]=function(_0x50bf88,_0x2d09e9){var _0x4d9740,_0x29b809;var _0x4413c2={'method':_0x50bf88[_0x97c1('0x7')]['toUpperCase'](),'uri':Mustache['render'](_0x50bf88[_0x97c1('0x8')],_0x2d09e9),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x50bf88[_0x97c1('0x9')])===_0x97c1('0xa')&&parseInt(_0x50bf88[_0x97c1('0x9')])>=0x1&&parseInt(_0x50bf88[_0x97c1('0x9')])<=0xa?parseInt(_0x50bf88[_0x97c1('0x9')])*0x3e8:0x5*0x3e8};try{_0x4413c2[_0x97c1('0xb')]=_0x50bf88[_0x97c1('0xc')]?JSON[_0x97c1('0xd')](Mustache['render'](_0x50bf88[_0x97c1('0xc')],_0x2d09e9)):{};}catch(_0x119ceb){logger[_0x97c1('0xe')](_0x119ceb[_0x97c1('0xf')]);}switch(_0x50bf88['data1'][_0x97c1('0x10')]()){case _0x97c1('0x11'):case'DELETE':_0x4d9740=null;_0x4413c2['qs']=_0x2d09e9;break;case _0x97c1('0x12'):case _0x97c1('0x13'):if(_0x50bf88[_0x97c1('0x14')]){try{_0x4d9740=JSON[_0x97c1('0xd')](Mustache[_0x97c1('0x15')](_0x50bf88[_0x97c1('0x14')],_0x2d09e9));_0x4413c2[_0x97c1('0x16')]=_0x4d9740;}catch(_0x2d201a){logger[_0x97c1('0xe')](_0x2d201a[_0x97c1('0xf')]);logger['error'](_0x97c1('0x17'));}}else{_0x4d9740=_0x2d09e9;_0x4413c2['body']=_0x4d9740;}break;}logger['info'](util[_0x97c1('0x18')](_0x97c1('0x19'),_0x50bf88[_0x97c1('0x7')],_0x50bf88[_0x97c1('0x8')],JSON['stringify'](_0x4413c2)));rp(_0x4413c2)['then'](function(_0x56e774){_0x4d9740=!_[_0x97c1('0x1a')](_0x4d9740)?_0x97c1('0x1b')+_0x4d9740:'';_0x29b809=typeof _0x56e774[_0x97c1('0x16')]===_0x97c1('0x1c')?JSON[_0x97c1('0x1d')](_0x56e774[_0x97c1('0x16')]):_0x56e774['body'];logger[_0x97c1('0x1e')](util[_0x97c1('0x18')](_0x97c1('0x1f'),_0x50bf88[_0x97c1('0x7')],_0x50bf88[_0x97c1('0x8')],_0x56e774['statusCode'],_0x29b809));})['catch'](function(_0x5c7aaa){logger[_0x97c1('0xe')](util[_0x97c1('0x18')](_0x97c1('0x20'),_0x50bf88[_0x97c1('0x7')],_0x50bf88[_0x97c1('0x8')],_0x5c7aaa[_0x97c1('0x21')],_0x5c7aaa[_0x97c1('0x22')],_0x5c7aaa[_0x97c1('0x23')]));});};
\ No newline at end of file
index bcfd2e1..1359d1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc2c=['http','Request','then','debug','rpc','error','message','result','exports','jayson/promise','../../config/logger','routing'];(function(_0x951034,_0x1e75dd){var _0x3335e0=function(_0x2d8be4){while(--_0x2d8be4){_0x951034['push'](_0x951034['shift']());}};_0x3335e0(++_0x1e75dd);}(_0xbc2c,0xd5));var _0xcbc2=function(_0x160dce,_0x54cbd1){_0x160dce=_0x160dce-0x0;var _0x2faf7d=_0xbc2c[_0x160dce];return _0x2faf7d;};'use strict';var jayson=require(_0xcbc2('0x0'));var BPromise=require('bluebird');var logger=require(_0xcbc2('0x1'))(_0xcbc2('0x2'));var client=jayson['client'][_0xcbc2('0x3')]({'port':0x2329});client[_0xcbc2('0x4')]=function(_0x2e19c9,_0x588348){return new BPromise(function(_0x3232f7,_0xa154e6){return client['request'](_0x2e19c9,_0x588348)[_0xcbc2('0x5')](function(_0x213436){logger[_0xcbc2('0x6')](_0xcbc2('0x7'),_0xcbc2('0x2'),_0x2e19c9,_0x588348,_0x213436);if(_0x213436['error']){logger[_0xcbc2('0x8')](_0xcbc2('0x7'),'routing',_0x2e19c9,_0x213436[_0xcbc2('0x8')]['message'],_0x588348);return _0xa154e6(_0x213436[_0xcbc2('0x8')][_0xcbc2('0x9')]);}else{return _0x3232f7(_0x213436[_0xcbc2('0xa')]);}})['catch'](function(_0xffa628){logger[_0xcbc2('0x8')](_0xcbc2('0x7'),'routing',_0x2e19c9,_0xffa628,_0x588348);return _0xa154e6(_0xffa628);});});};module[_0xcbc2('0xb')]=client;
\ No newline at end of file
+var _0xd5be=['routing','http','Request','debug','rpc','error','message','catch','exports','jayson/promise','bluebird','../../config/logger'];(function(_0x5cafd1,_0x44d616){var _0x2b10a7=function(_0x5f2678){while(--_0x5f2678){_0x5cafd1['push'](_0x5cafd1['shift']());}};_0x2b10a7(++_0x44d616);}(_0xd5be,0x165));var _0xed5b=function(_0x4dd15b,_0x1d880a){_0x4dd15b=_0x4dd15b-0x0;var _0x2445f2=_0xd5be[_0x4dd15b];return _0x2445f2;};'use strict';var jayson=require(_0xed5b('0x0'));var BPromise=require(_0xed5b('0x1'));var logger=require(_0xed5b('0x2'))(_0xed5b('0x3'));var client=jayson['client'][_0xed5b('0x4')]({'port':0x2329});client[_0xed5b('0x5')]=function(_0x34defb,_0x47826f){return new BPromise(function(_0x9161b3,_0x5a094b){return client['request'](_0x34defb,_0x47826f)['then'](function(_0x41230d){logger[_0xed5b('0x6')](_0xed5b('0x7'),_0xed5b('0x3'),_0x34defb,_0x47826f,_0x41230d);if(_0x41230d['error']){logger['error'](_0xed5b('0x7'),'routing',_0x34defb,_0x41230d[_0xed5b('0x8')]['message'],_0x47826f);return _0x5a094b(_0x41230d['error'][_0xed5b('0x9')]);}else{return _0x9161b3(_0x41230d['result']);}})[_0xed5b('0xa')](function(_0x3ebd8e){logger[_0xed5b('0x8')]('rpc',_0xed5b('0x3'),_0x34defb,_0x3ebd8e,_0x47826f);return _0x5a094b(_0x3ebd8e);});});};module[_0xed5b('0xb')]=client;
\ No newline at end of file
index 645a4e0..47f63d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d35=['refresh','getSettings','loginMailFrequency','log','bluebird','./server','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','getMailAccounts','initMailAccounts'];(function(_0x54a3a5,_0x5e47ed){var _0xbeee34=function(_0x438f61){while(--_0x438f61){_0x54a3a5['push'](_0x54a3a5['shift']());}};_0xbeee34(++_0x5e47ed);}(_0x3d35,0x86));var _0x53d3=function(_0x57306c,_0xdeff85){_0x57306c=_0x57306c-0x0;var _0x413cfb=_0x3d35[_0x57306c];return _0x413cfb;};'use strict';var BPromise=require(_0x53d3('0x0'));var server=require(_0x53d3('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0x53d3('0x2'));var mailAccount=require(_0x53d3('0x3'));var setting=require(_0x53d3('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x53d3('0x5')]()[_0x53d3('0x6')](mailAccount[_0x53d3('0x7')]())[_0x53d3('0x6')](realtime[_0x53d3('0x8')]())['then'](function(){email[_0x53d3('0x9')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)['then'](function(){return initRealtime();})[_0x53d3('0x6')](function(){return setting[_0x53d3('0xa')]();})['then'](function(_0x3d2c0f){return setInterval(initRealtime,_0x3d2c0f[_0x53d3('0xb')]*0x3e8);})['catch'](function(_0x3d6c5f){console[_0x53d3('0xc')](_0x3d6c5f);});}main();
\ No newline at end of file
+var _0xb0cf=['loginMailFrequency','catch','log','bluebird','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','getMailAccounts','then','refresh','mailAccounts','listen','getSettings'];(function(_0x43c345,_0x4efb4d){var _0x138bfc=function(_0x248984){while(--_0x248984){_0x43c345['push'](_0x43c345['shift']());}};_0x138bfc(++_0x4efb4d);}(_0xb0cf,0xc3));var _0xfb0c=function(_0x1dacd0,_0x666b8e){_0x1dacd0=_0x1dacd0-0x0;var _0x1b2506=_0xb0cf[_0x1dacd0];return _0x1b2506;};'use strict';var BPromise=require(_0xfb0c('0x0'));var server=require(_0xfb0c('0x1'));var Realtime=require(_0xfb0c('0x2'));var EmailChannel=require(_0xfb0c('0x3'));var mailAccount=require(_0xfb0c('0x4'));var setting=require(_0xfb0c('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xfb0c('0x6')]()['then'](mailAccount[_0xfb0c('0x7')]())[_0xfb0c('0x8')](realtime['initMailAccounts']())['then'](function(){email[_0xfb0c('0x9')](realtime[_0xfb0c('0xa')]);return realtime;});}function main(){return server[_0xfb0c('0xb')](realtime,email)[_0xfb0c('0x8')](function(){return initRealtime();})[_0xfb0c('0x8')](function(){return setting[_0xfb0c('0xc')]();})[_0xfb0c('0x8')](function(_0x50e329){return setInterval(initRealtime,_0x50e329[_0xfb0c('0xd')]*0x3e8);})[_0xfb0c('0xe')](function(_0x2f46f1){console[_0xfb0c('0xf')](_0x2f46f1);});}main();
\ No newline at end of file
index ae06684..dccadf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2a0=['handleImapEmail','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','handleImapError','sendMail','send','verifySmtp','Smtp','verify','verified','exports','moment','bluebird','ioredis','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','active','Imap','status','messageStatus','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','box','bind','end','handleImapEnd','error','disabled','handleImapBox','connected','name','total'];(function(_0x3f0e13,_0x4b5ec8){var _0x5185a4=function(_0x24e91d){while(--_0x24e91d){_0x3f0e13['push'](_0x3f0e13['shift']());}};_0x5185a4(++_0x4b5ec8);}(_0xb2a0,0x155));var _0x0b2a=function(_0x39749d,_0x45dae2){_0x39749d=_0x39749d-0x0;var _0x4f0551=_0xb2a0[_0x39749d];return _0x4f0551;};'use strict';var _=require('lodash');var moment=require(_0x0b2a('0x0'));var BPromise=require(_0x0b2a('0x1'));var md5=require('md5');var Redis=require(_0x0b2a('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x0b2a('0x3'));config[_0x0b2a('0x4')]=_[_0x0b2a('0x5')](config[_0x0b2a('0x4')],{'host':_0x0b2a('0x6'),'port':0x18eb});var io=require(_0x0b2a('0x7'))(new Redis(config[_0x0b2a('0x4')]));var EmailImap=require(_0x0b2a('0x8'));var EmailSmtp=require(_0x0b2a('0x9'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x446c7d){logger[_0x0b2a('0xa')](_0x0b2a('0xb'));this['mailAccounts']=_0x446c7d[_0x0b2a('0xc')];this[_0x0b2a('0xd')]={};this[_0x0b2a('0xe')]=new EmailSmtp();}EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x10')]=function(_0x54e4c1){var _0x247c61=this[_0x0b2a('0xc')][_0x54e4c1];var _0x485257={'id':_0x247c61['id'],'name':_0x247c61['name'],'key':_0x247c61['key'],'active':_0x247c61[_0x0b2a('0x11')],'Imap':{'status':_0x247c61[_0x0b2a('0x12')][_0x0b2a('0x13')],'messageStatus':_0x247c61['Imap'][_0x0b2a('0x14')],'total':_0x247c61[_0x0b2a('0x12')]['total']}};if(_[_0x0b2a('0x15')](md5Accounts[_0x54e4c1])){md5Accounts[_0x54e4c1]={};}var _0x1a8986=md5(JSON[_0x0b2a('0x16')](_0x485257));if(md5Accounts[_0x54e4c1]['md5']!==_0x1a8986){md5Accounts[_0x54e4c1][_0x0b2a('0x17')]=_0x1a8986;io['emit'](_0x0b2a('0x18'),_0x485257);}};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x19')]=function(_0x1c0e3f){for(var _0x4a994b in _0x1c0e3f){if(_0x1c0e3f['hasOwnProperty'](_0x4a994b)){if(_0x1c0e3f[_0x4a994b][_0x0b2a('0x12')]&&_0x1c0e3f[_0x4a994b][_0x0b2a('0x11')]){var _0x1c86f9=_0x1c0e3f[_0x4a994b]['Imap'];if(!this[_0x0b2a('0xd')][_0x0b2a('0x1a')](_0x1c86f9['id'])){this[_0x0b2a('0xd')][_0x1c86f9['id']]=new EmailImap(_0x1c86f9,_0x1c0e3f[_0x4a994b][_0x0b2a('0x3')]);this[_0x0b2a('0xd')][_0x1c86f9['id']]['on'](_0x0b2a('0x1b'),this['handleImapBox'][_0x0b2a('0x1c')](this,_0x4a994b));this[_0x0b2a('0xd')][_0x1c86f9['id']]['on'](_0x0b2a('0x3'),this['handleImapEmail'][_0x0b2a('0x1c')](this,_0x4a994b));this['imapAccounts'][_0x1c86f9['id']]['on'](_0x0b2a('0x1d'),this[_0x0b2a('0x1e')][_0x0b2a('0x1c')](this,_0x4a994b));this[_0x0b2a('0xd')][_0x1c86f9['id']]['on'](_0x0b2a('0x1f'),this['handleImapError'][_0x0b2a('0x1c')](this,_0x4a994b));}}else{if(_[_0x0b2a('0x15')](this[_0x0b2a('0xc')][_0x4a994b][_0x0b2a('0x12')])){this['mailAccounts'][_0x4a994b][_0x0b2a('0x12')]={};}this[_0x0b2a('0xc')][_0x4a994b]['Imap']['status']=_0x0b2a('0x20');this['mailAccounts'][_0x4a994b][_0x0b2a('0x12')][_0x0b2a('0x14')]='';this[_0x0b2a('0x10')](_0x4a994b);}}}};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x21')]=function(_0x3ed29a,_0x147896){if(this['mailAccounts'][_0x3ed29a]){this[_0x0b2a('0xc')][_0x3ed29a][_0x0b2a('0x12')][_0x0b2a('0x13')]=_0x0b2a('0x22');this[_0x0b2a('0xc')][_0x3ed29a][_0x0b2a('0x12')][_0x0b2a('0x14')]=_0x147896[_0x0b2a('0x23')];if(_0x147896['messages']){this[_0x0b2a('0xc')][_0x3ed29a]['Imap'][_0x0b2a('0x24')]=_0x147896['messages'][_0x0b2a('0x24')];}return this[_0x0b2a('0x10')](_0x3ed29a);}};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x25')]=function(_0x3db030,_0x328a8c){logger['info'](_0x0b2a('0x26'),_0x328a8c['firstName'],_0x328a8c[_0x0b2a('0x27')],_0x328a8c[_0x0b2a('0x28')],_0x3db030);if(this[_0x0b2a('0xc')][_0x3db030]){return mailAccount[_0x0b2a('0x29')](_0x3db030,_0x328a8c)[_0x0b2a('0x2a')](function(_0x1db655){if(_0x1db655){logger['info'](_0x0b2a('0x2b'));}})[_0x0b2a('0x2c')](function(_0x2e864d){logger['error'](_0x0b2a('0x2d'),JSON['stringify'](_0x2e864d));});}};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x1e')]=function(_0x121762){if(this[_0x0b2a('0xc')][_0x121762]&&this[_0x0b2a('0xc')][_0x121762][_0x0b2a('0x12')]){if(this[_0x0b2a('0xd')][this['mailAccounts'][_0x121762]['Imap']['id']]){delete this[_0x0b2a('0xd')][this[_0x0b2a('0xc')][_0x121762]['Imap']['id']];}this[_0x0b2a('0xc')][_0x121762][_0x0b2a('0x12')]['lastSync']=moment();this[_0x0b2a('0x10')](_0x121762);}};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x2e')]=function(_0x516f10,_0xb5abcc){if(this[_0x0b2a('0xc')][_0x516f10]){this['mailAccounts'][_0x516f10][_0x0b2a('0x12')][_0x0b2a('0x13')]=_0x0b2a('0x1f');this[_0x0b2a('0xc')][_0x516f10][_0x0b2a('0x12')][_0x0b2a('0x14')]=_0xb5abcc;return this[_0x0b2a('0x10')](_0x516f10);}};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x2f')]=function(_0x54753b,_0x33c8f3){return this[_0x0b2a('0xe')][_0x0b2a('0x30')](_0x54753b,_0x33c8f3);};EmailChannel[_0x0b2a('0xf')][_0x0b2a('0x31')]=function(_0x47db40){var _0x9f711c=this;if(this['mailAccounts'][_0x47db40['id']]){if(_['isNil'](this['mailAccounts'][_0x47db40['id']]['Smtp'])){this[_0x0b2a('0xc')][_0x47db40['id']][_0x0b2a('0x32')]={};}this[_0x0b2a('0xc')][_0x47db40['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x325fdc,_0x5d6fda){return _0x9f711c[_0x0b2a('0xe')][_0x0b2a('0x33')](_0x47db40)[_0x0b2a('0x2a')](function(_0x2d9d31){_0x9f711c[_0x0b2a('0xc')][_0x47db40['id']]['Smtp'][_0x0b2a('0x13')]=_0x0b2a('0x34');_0x9f711c[_0x0b2a('0xc')][_0x47db40['id']][_0x0b2a('0x32')][_0x0b2a('0x14')]='';_0x9f711c[_0x0b2a('0x10')](_0x47db40['id']);_0x325fdc(_0x2d9d31);})[_0x0b2a('0x2c')](function(_0x523a83){_0x9f711c[_0x0b2a('0xc')][_0x47db40['id']][_0x0b2a('0x32')][_0x0b2a('0x13')]='error';_0x9f711c[_0x0b2a('0xc')][_0x47db40['id']][_0x0b2a('0x32')][_0x0b2a('0x14')]=_0x523a83;_0x9f711c['emit'](_0x47db40['id']);_0x5d6fda(_0x523a83);});});}return this[_0x0b2a('0xe')][_0x0b2a('0x33')](_0x47db40);};module[_0x0b2a('0x35')]=EmailChannel;
\ No newline at end of file
+var _0x2847=['key','active','status','Imap','messageStatus','isNil','stringify','mailAccount:update','refresh','imapAccounts','hasOwnProperty','box','bind','error','handleImapError','handleImapBox','total','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','send','Smtp','verify','exports','lodash','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','socket.io-emitter','redis','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','name'];(function(_0x46c882,_0x54c2e1){var _0x22c031=function(_0x26057c){while(--_0x26057c){_0x46c882['push'](_0x46c882['shift']());}};_0x22c031(++_0x54c2e1);}(_0x2847,0xe7));var _0x7284=function(_0x52e0ee,_0x52f7c1){_0x52e0ee=_0x52e0ee-0x0;var _0x32534c=_0x2847[_0x52e0ee];return _0x32534c;};'use strict';var _=require(_0x7284('0x0'));var moment=require(_0x7284('0x1'));var BPromise=require(_0x7284('0x2'));var md5=require(_0x7284('0x3'));var Redis=require('ioredis');var config=require(_0x7284('0x4'));var logger=require(_0x7284('0x5'))(_0x7284('0x6'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x7284('0x7'))(new Redis(config[_0x7284('0x8')]));var EmailImap=require(_0x7284('0x9'));var EmailSmtp=require(_0x7284('0xa'));var mailAccount=require(_0x7284('0xb'));var md5Accounts={};function EmailChannel(_0x104392){logger[_0x7284('0xc')](_0x7284('0xd'));this['mailAccounts']=_0x104392[_0x7284('0xe')];this['imapAccounts']={};this[_0x7284('0xf')]=new EmailSmtp();}EmailChannel[_0x7284('0x10')][_0x7284('0x11')]=function(_0x7a6c6f){var _0x348e3f=this['mailAccounts'][_0x7a6c6f];var _0x3fde87={'id':_0x348e3f['id'],'name':_0x348e3f[_0x7284('0x12')],'key':_0x348e3f[_0x7284('0x13')],'active':_0x348e3f[_0x7284('0x14')],'Imap':{'status':_0x348e3f['Imap'][_0x7284('0x15')],'messageStatus':_0x348e3f[_0x7284('0x16')][_0x7284('0x17')],'total':_0x348e3f['Imap']['total']}};if(_[_0x7284('0x18')](md5Accounts[_0x7a6c6f])){md5Accounts[_0x7a6c6f]={};}var _0x57e1c3=md5(JSON[_0x7284('0x19')](_0x3fde87));if(md5Accounts[_0x7a6c6f][_0x7284('0x3')]!==_0x57e1c3){md5Accounts[_0x7a6c6f][_0x7284('0x3')]=_0x57e1c3;io['emit'](_0x7284('0x1a'),_0x3fde87);}};EmailChannel[_0x7284('0x10')][_0x7284('0x1b')]=function(_0x39cfc2){for(var _0x1ed045 in _0x39cfc2){if(_0x39cfc2['hasOwnProperty'](_0x1ed045)){if(_0x39cfc2[_0x1ed045][_0x7284('0x16')]&&_0x39cfc2[_0x1ed045][_0x7284('0x14')]){var _0x514e0d=_0x39cfc2[_0x1ed045]['Imap'];if(!this[_0x7284('0x1c')][_0x7284('0x1d')](_0x514e0d['id'])){this[_0x7284('0x1c')][_0x514e0d['id']]=new EmailImap(_0x514e0d,_0x39cfc2[_0x1ed045][_0x7284('0x6')]);this[_0x7284('0x1c')][_0x514e0d['id']]['on'](_0x7284('0x1e'),this['handleImapBox']['bind'](this,_0x1ed045));this[_0x7284('0x1c')][_0x514e0d['id']]['on'](_0x7284('0x6'),this['handleImapEmail'][_0x7284('0x1f')](this,_0x1ed045));this[_0x7284('0x1c')][_0x514e0d['id']]['on']('end',this['handleImapEnd'][_0x7284('0x1f')](this,_0x1ed045));this['imapAccounts'][_0x514e0d['id']]['on'](_0x7284('0x20'),this[_0x7284('0x21')][_0x7284('0x1f')](this,_0x1ed045));}}else{if(_['isNil'](this[_0x7284('0xe')][_0x1ed045][_0x7284('0x16')])){this[_0x7284('0xe')][_0x1ed045]['Imap']={};}this[_0x7284('0xe')][_0x1ed045][_0x7284('0x16')][_0x7284('0x15')]='disabled';this[_0x7284('0xe')][_0x1ed045][_0x7284('0x16')][_0x7284('0x17')]='';this[_0x7284('0x11')](_0x1ed045);}}}};EmailChannel['prototype'][_0x7284('0x22')]=function(_0x3a3d9d,_0x303656){if(this[_0x7284('0xe')][_0x3a3d9d]){this[_0x7284('0xe')][_0x3a3d9d][_0x7284('0x16')][_0x7284('0x15')]='connected';this[_0x7284('0xe')][_0x3a3d9d][_0x7284('0x16')][_0x7284('0x17')]=_0x303656[_0x7284('0x12')];if(_0x303656['messages']){this[_0x7284('0xe')][_0x3a3d9d][_0x7284('0x16')]['total']=_0x303656['messages'][_0x7284('0x23')];}return this['emit'](_0x3a3d9d);}};EmailChannel[_0x7284('0x10')][_0x7284('0x24')]=function(_0x400ac2,_0x4e5107){logger['info'](_0x7284('0x25'),_0x4e5107[_0x7284('0x26')],_0x4e5107[_0x7284('0x27')],_0x4e5107['from'],_0x400ac2);if(this[_0x7284('0xe')][_0x400ac2]){return mailAccount[_0x7284('0x28')](_0x400ac2,_0x4e5107)[_0x7284('0x29')](function(_0x11409c){if(_0x11409c){logger[_0x7284('0xc')](_0x7284('0x2a'));}})[_0x7284('0x2b')](function(_0x41fde5){logger['error'](_0x7284('0x2c'),JSON[_0x7284('0x19')](_0x41fde5));});}};EmailChannel[_0x7284('0x10')]['handleImapEnd']=function(_0x52a099){if(this[_0x7284('0xe')][_0x52a099]&&this[_0x7284('0xe')][_0x52a099]['Imap']){if(this[_0x7284('0x1c')][this['mailAccounts'][_0x52a099][_0x7284('0x16')]['id']]){delete this['imapAccounts'][this[_0x7284('0xe')][_0x52a099][_0x7284('0x16')]['id']];}this['mailAccounts'][_0x52a099]['Imap'][_0x7284('0x2d')]=moment();this[_0x7284('0x11')](_0x52a099);}};EmailChannel[_0x7284('0x10')][_0x7284('0x21')]=function(_0x507d0e,_0x4c8b44){if(this['mailAccounts'][_0x507d0e]){this[_0x7284('0xe')][_0x507d0e][_0x7284('0x16')]['status']=_0x7284('0x20');this[_0x7284('0xe')][_0x507d0e][_0x7284('0x16')][_0x7284('0x17')]=_0x4c8b44;return this[_0x7284('0x11')](_0x507d0e);}};EmailChannel[_0x7284('0x10')]['sendMail']=function(_0x1540dd,_0x20210e){return this[_0x7284('0xf')][_0x7284('0x2e')](_0x1540dd,_0x20210e);};EmailChannel['prototype']['verifySmtp']=function(_0x5d2fd4){var _0x1f2220=this;if(this[_0x7284('0xe')][_0x5d2fd4['id']]){if(_['isNil'](this['mailAccounts'][_0x5d2fd4['id']][_0x7284('0x2f')])){this[_0x7284('0xe')][_0x5d2fd4['id']][_0x7284('0x2f')]={};}this[_0x7284('0xe')][_0x5d2fd4['id']][_0x7284('0x2f')][_0x7284('0x2d')]=moment();return new BPromise(function(_0x17b029,_0x26401a){return _0x1f2220['smtp'][_0x7284('0x30')](_0x5d2fd4)[_0x7284('0x29')](function(_0x24bfe9){_0x1f2220['mailAccounts'][_0x5d2fd4['id']]['Smtp'][_0x7284('0x15')]='verified';_0x1f2220[_0x7284('0xe')][_0x5d2fd4['id']][_0x7284('0x2f')][_0x7284('0x17')]='';_0x1f2220[_0x7284('0x11')](_0x5d2fd4['id']);_0x17b029(_0x24bfe9);})['catch'](function(_0x153fa8){_0x1f2220['mailAccounts'][_0x5d2fd4['id']][_0x7284('0x2f')]['status']=_0x7284('0x20');_0x1f2220[_0x7284('0xe')][_0x5d2fd4['id']][_0x7284('0x2f')][_0x7284('0x17')]=_0x153fa8;_0x1f2220['emit'](_0x5d2fd4['id']);_0x26401a(_0x153fa8);});});}return this[_0x7284('0xf')]['verify'](_0x5d2fd4);};module[_0x7284('0x31')]=EmailChannel;
\ No newline at end of file
index 7ba08fe..0c9ba33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc17=['textCode','upperFirst','path','imap','lodash','simpleParser','iconv','Iconv','events','EventEmitter','./utils','../../../config/logger','email','INBOX','account','getAccount','handleReady','bind','once','end','error','connect','inherits','prototype','connTimeout','authTimeout','isNil','authentication','user','host','port','tls','autotls','password','getHost','service','anonymous@xcally.com','openBox','mailbox','handleOpenBox','emit','box','handleError','readUnseen','search','UNSEEN','length','fetch','message','handleFetchError','handleCloseBox','handleFetchMessage','body','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','closeBox','handleEnd','stringify'];(function(_0x5d0a81,_0x495f5d){var _0x152dad=function(_0x159723){while(--_0x159723){_0x5d0a81['push'](_0x5d0a81['shift']());}};_0x152dad(++_0x495f5d);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x488e89,_0x5e41e7){_0x488e89=_0x488e89-0x0;var _0x4795c9=_0xfc17[_0x488e89];return _0x4795c9;};'use strict';var fs=require('fs');var path=require(_0x7fc1('0x0'));var util=require('util');var Imap=require(_0x7fc1('0x1'));var _=require(_0x7fc1('0x2'));var rs=require('randomstring');var simpleParser=require('mailparser')[_0x7fc1('0x3')];var Iconv=require(_0x7fc1('0x4'))[_0x7fc1('0x5')];var EventEmitter=require(_0x7fc1('0x6'))[_0x7fc1('0x7')];var utils=require(_0x7fc1('0x8'));var logger=require(_0x7fc1('0x9'))(_0x7fc1('0xa'));function EmailImap(_0x3e0947,_0x6d5efe){this['mailbox']=_0x7fc1('0xb');this[_0x7fc1('0xc')]=this[_0x7fc1('0xd')](_0x3e0947,_0x6d5efe);this[_0x7fc1('0x1')]=new Imap(this['account']);this[_0x7fc1('0x1')]['once']('ready',this[_0x7fc1('0xe')][_0x7fc1('0xf')](this));this[_0x7fc1('0x1')][_0x7fc1('0x10')](_0x7fc1('0x11'),this['handleEnd'][_0x7fc1('0xf')](this));this['imap']['on'](_0x7fc1('0x12'),this['handleError']['bind'](this));this[_0x7fc1('0x1')][_0x7fc1('0x13')]();}util[_0x7fc1('0x14')](EmailImap,EventEmitter);EmailImap[_0x7fc1('0x15')][_0x7fc1('0xd')]=function(_0x2a9d52,_0x51e590){var _0x551352={'connTimeout':_0x2a9d52[_0x7fc1('0x16')]?_0x2a9d52[_0x7fc1('0x16')]*0x3e8:0x2710,'authTimeout':_0x2a9d52[_0x7fc1('0x17')]?_0x2a9d52[_0x7fc1('0x17')]*0x3e8:0x1388};if(_[_0x7fc1('0x18')](_0x2a9d52['service'])){if(_0x2a9d52[_0x7fc1('0x19')]){_0x551352[_0x7fc1('0x1a')]=_0x2a9d52[_0x7fc1('0x1a')];_0x551352['password']=_0x2a9d52['password'];}_0x551352['host']=_0x2a9d52[_0x7fc1('0x1b')];_0x551352[_0x7fc1('0x1c')]=_0x2a9d52[_0x7fc1('0x1c')]||0x3e1;if(_0x2a9d52['tls']){_0x551352[_0x7fc1('0x1d')]=!![];}else{_0x551352[_0x7fc1('0x1d')]=![];_0x551352[_0x7fc1('0x1e')]='required';}}else{_0x551352[_0x7fc1('0x1a')]=_0x2a9d52['user'];_0x551352[_0x7fc1('0x1f')]=_0x2a9d52[_0x7fc1('0x1f')];_0x551352[_0x7fc1('0x1b')]=utils[_0x7fc1('0x20')](_0x2a9d52[_0x7fc1('0x21')]);_0x551352[_0x7fc1('0x1c')]=0x3e1;_0x551352[_0x7fc1('0x1d')]=!![];}_0x551352[_0x7fc1('0xa')]=_0x51e590||_0x2a9d52[_0x7fc1('0x1a')]||_0x7fc1('0x22');return _0x551352;};EmailImap[_0x7fc1('0x15')]['handleReady']=function(){this[_0x7fc1('0x1')][_0x7fc1('0x23')](this[_0x7fc1('0x24')],![],this[_0x7fc1('0x25')]['bind'](this));};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x25')]=function(_0xcbe065,_0x4cd9ac){if(_0xcbe065){this['handleError'](_0xcbe065,!![]);}else{this[_0x7fc1('0x26')](_0x7fc1('0x27'),_0x4cd9ac);this['readUnseen']();}};EmailImap['prototype']['handleCloseBox']=function(_0x312992){if(_0x312992){this[_0x7fc1('0x28')](_0x312992,!![]);}else{this[_0x7fc1('0x1')][_0x7fc1('0x11')]();}};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x29')]=function(){this['imap'][_0x7fc1('0x2a')]([_0x7fc1('0x2b')],this['handleReadUnseen'][_0x7fc1('0xf')](this));};EmailImap[_0x7fc1('0x15')]['handleReadUnseen']=function(_0xe24a25,_0x4f37a8){if(_0xe24a25){this[_0x7fc1('0x28')](_0xe24a25,!![]);}else{if(_0x4f37a8[_0x7fc1('0x2c')]){try{var _0x381545=this[_0x7fc1('0x1')][_0x7fc1('0x2d')](_0x4f37a8,{'bodies':'','markSeen':!![]});_0x381545['on'](_0x7fc1('0x2e'),this['handleFetchMessage']['bind'](this));_0x381545[_0x7fc1('0x10')](_0x7fc1('0x12'),this[_0x7fc1('0x2f')][_0x7fc1('0xf')](this));_0x381545[_0x7fc1('0x10')](_0x7fc1('0x11'),this['handleFetchEnd'][_0x7fc1('0xf')](this));}catch(_0x280606){logger['error'](_0x280606);}}else{this[_0x7fc1('0x1')]['closeBox'](!![],this[_0x7fc1('0x30')][_0x7fc1('0xf')](this));}}};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x31')]=function(_0x470c5a,_0x4f0299){_0x470c5a['on'](_0x7fc1('0x32'),this['handleMessageBody'][_0x7fc1('0xf')](this));_0x470c5a['once'](_0x7fc1('0x33'),this[_0x7fc1('0x34')]['bind'](this));_0x470c5a[_0x7fc1('0x10')](_0x7fc1('0x11'),this['handleMessageEnd'][_0x7fc1('0xf')](this));};EmailImap['prototype']['handleMessageBody']=function(_0x196c86,_0x2c5d86){simpleParser(_0x196c86,{'Iconv':Iconv},this['handleSimpleParser'][_0x7fc1('0xf')](this));};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x34')]=function(_0x3e627e){};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x35')]=function(){};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x36')]=function(_0x11dc75,_0x1e4b6a){if(_0x11dc75){logger[_0x7fc1('0x12')](_0x11dc75);}else{var _0x3c3dfb=this;utils[_0x7fc1('0x37')](this[_0x7fc1('0xc')],_0x1e4b6a,function(_0xdb44d9){_0x3c3dfb['emit']('email',_0xdb44d9);});}};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x38')]=function(){this[_0x7fc1('0x1')][_0x7fc1('0x39')](!![],this[_0x7fc1('0x30')][_0x7fc1('0xf')](this));};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x2f')]=function(_0xfcc85f){this[_0x7fc1('0x28')](_0xfcc85f);this[_0x7fc1('0x1')][_0x7fc1('0x39')](!![],this[_0x7fc1('0x30')][_0x7fc1('0xf')](this));};EmailImap[_0x7fc1('0x15')][_0x7fc1('0x3a')]=function(){this[_0x7fc1('0x26')](_0x7fc1('0x11'));};EmailImap['prototype'][_0x7fc1('0x28')]=function(_0x25aea6,_0x1f2706){logger[_0x7fc1('0x12')](_0x7fc1('0x28'),this[_0x7fc1('0xc')]['email'],JSON[_0x7fc1('0x3b')](_0x25aea6));var _0x16b2cd='';if(_0x25aea6){if(_0x25aea6[_0x7fc1('0x3c')]){_0x16b2cd=_0x25aea6[_0x7fc1('0x3c')];}else{for(var _0x5741dc in _0x25aea6){if(_0x25aea6['hasOwnProperty'](_0x5741dc)){_0x16b2cd+=_[_0x7fc1('0x3d')](_0x5741dc)+':\x20'+_0x25aea6[_0x5741dc]+'\x0a';}}}}if(_0x1f2706){this[_0x7fc1('0x1')][_0x7fc1('0x11')]();}else{this[_0x7fc1('0x26')](_0x7fc1('0x12'),_0x16b2cd);this['emit'](_0x7fc1('0x11'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x2b95=['./utils','../../../config/logger','mailbox','account','getAccount','once','ready','handleReady','bind','end','handleError','inherits','prototype','connTimeout','authTimeout','isNil','service','user','password','host','port','tls','getHost','email','anonymous@xcally.com','openBox','handleOpenBox','emit','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','error','handleFetchEnd','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','closeBox','handleFetchError','stringify','textCode','upperFirst','exports','imap','lodash','randomstring','mailparser','simpleParser','iconv','Iconv','events','EventEmitter'];(function(_0x2a68e0,_0x5c5f3f){var _0x172280=function(_0x345999){while(--_0x345999){_0x2a68e0['push'](_0x2a68e0['shift']());}};_0x172280(++_0x5c5f3f);}(_0x2b95,0x159));var _0x52b9=function(_0x409fb8,_0x5ab3d3){_0x409fb8=_0x409fb8-0x0;var _0x278270=_0x2b95[_0x409fb8];return _0x278270;};'use strict';var fs=require('fs');var path=require('path');var util=require('util');var Imap=require(_0x52b9('0x0'));var _=require(_0x52b9('0x1'));var rs=require(_0x52b9('0x2'));var simpleParser=require(_0x52b9('0x3'))[_0x52b9('0x4')];var Iconv=require(_0x52b9('0x5'))[_0x52b9('0x6')];var EventEmitter=require(_0x52b9('0x7'))[_0x52b9('0x8')];var utils=require(_0x52b9('0x9'));var logger=require(_0x52b9('0xa'))('email');function EmailImap(_0x5560d2,_0xee7714){this[_0x52b9('0xb')]='INBOX';this[_0x52b9('0xc')]=this[_0x52b9('0xd')](_0x5560d2,_0xee7714);this[_0x52b9('0x0')]=new Imap(this[_0x52b9('0xc')]);this[_0x52b9('0x0')][_0x52b9('0xe')](_0x52b9('0xf'),this[_0x52b9('0x10')][_0x52b9('0x11')](this));this['imap'][_0x52b9('0xe')](_0x52b9('0x12'),this['handleEnd'][_0x52b9('0x11')](this));this[_0x52b9('0x0')]['on']('error',this[_0x52b9('0x13')]['bind'](this));this[_0x52b9('0x0')]['connect']();}util[_0x52b9('0x14')](EmailImap,EventEmitter);EmailImap[_0x52b9('0x15')][_0x52b9('0xd')]=function(_0xe17d16,_0x3d57a5){var _0x37f21a={'connTimeout':_0xe17d16[_0x52b9('0x16')]?_0xe17d16[_0x52b9('0x16')]*0x3e8:0x2710,'authTimeout':_0xe17d16[_0x52b9('0x17')]?_0xe17d16[_0x52b9('0x17')]*0x3e8:0x1388};if(_[_0x52b9('0x18')](_0xe17d16[_0x52b9('0x19')])){if(_0xe17d16['authentication']){_0x37f21a[_0x52b9('0x1a')]=_0xe17d16['user'];_0x37f21a[_0x52b9('0x1b')]=_0xe17d16[_0x52b9('0x1b')];}_0x37f21a['host']=_0xe17d16[_0x52b9('0x1c')];_0x37f21a[_0x52b9('0x1d')]=_0xe17d16[_0x52b9('0x1d')]||0x3e1;if(_0xe17d16['tls']){_0x37f21a[_0x52b9('0x1e')]=!![];}else{_0x37f21a[_0x52b9('0x1e')]=![];_0x37f21a['autotls']='required';}}else{_0x37f21a['user']=_0xe17d16[_0x52b9('0x1a')];_0x37f21a[_0x52b9('0x1b')]=_0xe17d16[_0x52b9('0x1b')];_0x37f21a[_0x52b9('0x1c')]=utils[_0x52b9('0x1f')](_0xe17d16[_0x52b9('0x19')]);_0x37f21a['port']=0x3e1;_0x37f21a[_0x52b9('0x1e')]=!![];}_0x37f21a[_0x52b9('0x20')]=_0x3d57a5||_0xe17d16[_0x52b9('0x1a')]||_0x52b9('0x21');return _0x37f21a;};EmailImap['prototype']['handleReady']=function(){this[_0x52b9('0x0')][_0x52b9('0x22')](this[_0x52b9('0xb')],![],this['handleOpenBox']['bind'](this));};EmailImap[_0x52b9('0x15')][_0x52b9('0x23')]=function(_0x581562,_0x2fa2ae){if(_0x581562){this[_0x52b9('0x13')](_0x581562,!![]);}else{this[_0x52b9('0x24')]('box',_0x2fa2ae);this['readUnseen']();}};EmailImap[_0x52b9('0x15')][_0x52b9('0x25')]=function(_0x50d849){if(_0x50d849){this[_0x52b9('0x13')](_0x50d849,!![]);}else{this[_0x52b9('0x0')][_0x52b9('0x12')]();}};EmailImap['prototype'][_0x52b9('0x26')]=function(){this[_0x52b9('0x0')][_0x52b9('0x27')]([_0x52b9('0x28')],this['handleReadUnseen'][_0x52b9('0x11')](this));};EmailImap[_0x52b9('0x15')][_0x52b9('0x29')]=function(_0x11fd32,_0x176f28){if(_0x11fd32){this[_0x52b9('0x13')](_0x11fd32,!![]);}else{if(_0x176f28[_0x52b9('0x2a')]){try{var _0xab2a90=this['imap'][_0x52b9('0x2b')](_0x176f28,{'bodies':'','markSeen':!![]});_0xab2a90['on']('message',this[_0x52b9('0x2c')][_0x52b9('0x11')](this));_0xab2a90[_0x52b9('0xe')](_0x52b9('0x2d'),this['handleFetchError']['bind'](this));_0xab2a90['once'](_0x52b9('0x12'),this[_0x52b9('0x2e')][_0x52b9('0x11')](this));}catch(_0x38d283){logger[_0x52b9('0x2d')](_0x38d283);}}else{this[_0x52b9('0x0')]['closeBox'](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0x52b9('0x15')]['handleFetchMessage']=function(_0x32b8c7,_0x13182a){_0x32b8c7['on'](_0x52b9('0x2f'),this[_0x52b9('0x30')]['bind'](this));_0x32b8c7['once'](_0x52b9('0x31'),this[_0x52b9('0x32')][_0x52b9('0x11')](this));_0x32b8c7[_0x52b9('0xe')](_0x52b9('0x12'),this[_0x52b9('0x33')][_0x52b9('0x11')](this));};EmailImap[_0x52b9('0x15')][_0x52b9('0x30')]=function(_0x80b35a,_0x5557e){simpleParser(_0x80b35a,{'Iconv':Iconv},this[_0x52b9('0x34')]['bind'](this));};EmailImap[_0x52b9('0x15')]['handleMessageAttributes']=function(_0x1e1e8a){};EmailImap[_0x52b9('0x15')][_0x52b9('0x33')]=function(){};EmailImap[_0x52b9('0x15')][_0x52b9('0x34')]=function(_0x281901,_0x22f4c6){if(_0x281901){logger[_0x52b9('0x2d')](_0x281901);}else{var _0x456a3b=this;utils['parser'](this[_0x52b9('0xc')],_0x22f4c6,function(_0x3d7930){_0x456a3b[_0x52b9('0x24')](_0x52b9('0x20'),_0x3d7930);});}};EmailImap[_0x52b9('0x15')][_0x52b9('0x2e')]=function(){this[_0x52b9('0x0')][_0x52b9('0x35')](!![],this['handleCloseBox'][_0x52b9('0x11')](this));};EmailImap[_0x52b9('0x15')][_0x52b9('0x36')]=function(_0x13604e){this[_0x52b9('0x13')](_0x13604e);this[_0x52b9('0x0')]['closeBox'](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0x52b9('0x15')]['handleEnd']=function(){this['emit'](_0x52b9('0x12'));};EmailImap[_0x52b9('0x15')][_0x52b9('0x13')]=function(_0x4546b1,_0x360032){logger[_0x52b9('0x2d')](_0x52b9('0x13'),this['account'][_0x52b9('0x20')],JSON[_0x52b9('0x37')](_0x4546b1));var _0x12947c='';if(_0x4546b1){if(_0x4546b1[_0x52b9('0x38')]){_0x12947c=_0x4546b1['textCode'];}else{for(var _0x453670 in _0x4546b1){if(_0x4546b1['hasOwnProperty'](_0x453670)){_0x12947c+=_[_0x52b9('0x39')](_0x453670)+':\x20'+_0x4546b1[_0x453670]+'\x0a';}}}}if(_0x360032){this[_0x52b9('0x0')][_0x52b9('0x12')]();}else{this[_0x52b9('0x24')]('error',_0x12947c);this[_0x52b9('0x24')](_0x52b9('0x12'));}};module[_0x52b9('0x3a')]=EmailImap;
\ No newline at end of file
index bfecc13..dfa2101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b96=['nodemailer-plugin-inline-base64','prototype','send','createTransport','toString','verify','exports'];(function(_0x568f97,_0x1bbeca){var _0x347b5f=function(_0x432a3a){while(--_0x432a3a){_0x568f97['push'](_0x568f97['shift']());}};_0x347b5f(++_0x1bbeca);}(_0x4b96,0x85));var _0x64b9=function(_0x148460,_0x1cc22d){_0x148460=_0x148460-0x0;var _0x55ea14=_0x4b96[_0x148460];return _0x55ea14;};'use strict';var nodemailer=require('nodemailer');var BPromise=require('bluebird');var inlineBase64=require(_0x64b9('0x0'));function EmailSmtp(){}EmailSmtp[_0x64b9('0x1')][_0x64b9('0x2')]=function(_0x4e74c4,_0x2cdade){return new BPromise(function(_0x2be3d1,_0x12df54){var _0x42afbb=nodemailer[_0x64b9('0x3')](_0x4e74c4);_0x42afbb['use']('compile',inlineBase64());_0x42afbb['sendMail'](_0x2cdade,function(_0x2016a9,_0x19a6fa){if(_0x2016a9){_0x12df54(_0x2016a9[_0x64b9('0x4')]());}else{_0x2be3d1(_0x19a6fa);}});});};EmailSmtp['prototype'][_0x64b9('0x5')]=function(_0x546753){return new BPromise(function(_0x154ca9,_0x159778){var _0x58ed9e=nodemailer['createTransport'](_0x546753);_0x58ed9e[_0x64b9('0x5')](function(_0x105214,_0x28e365){if(_0x105214){_0x159778(_0x105214[_0x64b9('0x4')]());}else{if(_0x28e365){_0x154ca9(_0x28e365);}else{_0x159778('Not\x20verifired');}}});});};module[_0x64b9('0x6')]=EmailSmtp;
\ No newline at end of file
+var _0x8f4f=['nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','toString','verify','Not\x20verifired','exports'];(function(_0x15156e,_0x5d9284){var _0x3cfc57=function(_0x3219d0){while(--_0x3219d0){_0x15156e['push'](_0x15156e['shift']());}};_0x3cfc57(++_0x5d9284);}(_0x8f4f,0xcc));var _0xf8f4=function(_0x440b33,_0x43ef87){_0x440b33=_0x440b33-0x0;var _0x1426cd=_0x8f4f[_0x440b33];return _0x1426cd;};'use strict';var nodemailer=require(_0xf8f4('0x0'));var BPromise=require('bluebird');var inlineBase64=require(_0xf8f4('0x1'));function EmailSmtp(){}EmailSmtp[_0xf8f4('0x2')][_0xf8f4('0x3')]=function(_0x27adca,_0x4a1f9c){return new BPromise(function(_0xdead33,_0x4eef8a){var _0x4b47e5=nodemailer[_0xf8f4('0x4')](_0x27adca);_0x4b47e5[_0xf8f4('0x5')](_0xf8f4('0x6'),inlineBase64());_0x4b47e5[_0xf8f4('0x7')](_0x4a1f9c,function(_0x2a66c3,_0x24bce2){if(_0x2a66c3){_0x4eef8a(_0x2a66c3[_0xf8f4('0x8')]());}else{_0xdead33(_0x24bce2);}});});};EmailSmtp[_0xf8f4('0x2')][_0xf8f4('0x9')]=function(_0xc9755f){return new BPromise(function(_0x1c528b,_0x50cb4b){var _0x3cba47=nodemailer[_0xf8f4('0x4')](_0xc9755f);_0x3cba47[_0xf8f4('0x9')](function(_0x2d80a6,_0x5da71d){if(_0x2d80a6){_0x50cb4b(_0x2d80a6['toString']());}else{if(_0x5da71d){_0x1c528b(_0x5da71d);}else{_0x50cb4b(_0xf8f4('0xa'));}}});});};module[_0xf8f4('0xb')]=EmailSmtp;
\ No newline at end of file
index f9b6229..b3009fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed20=['@xcally.com','name','substring','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','html','replace','includes','<img','attachments','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','message','originTo','originCc','bcc','attach','type','attachment-','format','%s-%s','now','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','from','subject','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','BodyHTML','Attachments','Title','Data','<p>Empty\x20message</p>','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','lodash','moment','randomstring','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xed20,0xce));var _0x0ed2=function(_0x233ce4,_0x27fae9){_0x233ce4=_0x233ce4-0x0;var _0xd953a4=_0xed20[_0x233ce4];return _0xd953a4;};'use strict';var _=require(_0x0ed2('0x0'));var moment=require(_0x0ed2('0x1'));var random=require(_0x0ed2('0x2'));var fs=require('fs');var path=require('path');var util=require(_0x0ed2('0x3'));var tnef=require(_0x0ed2('0x4'));var logger=require(_0x0ed2('0x5'))(_0x0ed2('0x6'));var config=require(_0x0ed2('0x7'));function getAddress(_0x20cac9){var _0x5693ea=_[_0x0ed2('0x8')](_0x20cac9[_0x0ed2('0x9')]);return _0x5693ea&&_0x5693ea['address']?_0x5693ea[_0x0ed2('0xa')]:_0x0ed2('0xb')+random[_0x0ed2('0xc')](0x6)+_0x0ed2('0xd');}function getFirstName(_0x5c6c0c){var _0x686f75=_[_0x0ed2('0x8')](_0x5c6c0c[_0x0ed2('0x9')]);if(_0x686f75&&_0x686f75[_0x0ed2('0xe')]){if(_0x686f75['name']==_0x686f75['address']){return _0x686f75[_0x0ed2('0xe')][_0x0ed2('0xf')](0x0,_0x686f75[_0x0ed2('0xe')][_0x0ed2('0x10')]('@'));}var _0x187709=_0x686f75[_0x0ed2('0xe')][_0x0ed2('0x11')](/\s+/);return _0x187709[_0x0ed2('0x12')]>0x1?_0x187709[_0x0ed2('0x13')](0x0,-0x1)[_0x0ed2('0x14')]('\x20'):_0x686f75[_0x0ed2('0xe')];}return _0x0ed2('0x15');}function getLastName(_0x52c70b){var _0x30e94e=_[_0x0ed2('0x8')](_0x52c70b[_0x0ed2('0x9')]);if(_0x30e94e&&_0x30e94e[_0x0ed2('0xe')]){var _0xcbed53=_0x30e94e['name'][_0x0ed2('0x11')](/\s+/);return _0xcbed53[_0x0ed2('0x12')]>0x1?_0xcbed53[_0x0ed2('0x16')]():'';}return'';}function getMails(_0x5101f2,_0x41bea7){var _0x565cc7='';for(var _0x225e4a=0x0;_0x225e4a<_0x41bea7[_0x0ed2('0x9')][_0x0ed2('0x12')];_0x225e4a+=0x1){if(_0x41bea7['value'][_0x225e4a]['address']!==_0x5101f2){if(!_[_0x0ed2('0x17')](_0x565cc7)){_0x565cc7+=',';}_0x565cc7+=_0x41bea7[_0x0ed2('0x9')][_0x225e4a]['name']||_0x41bea7[_0x0ed2('0x9')][_0x225e4a]['address']||'';_0x565cc7+='\x20<';_0x565cc7+=_0x41bea7[_0x0ed2('0x9')][_0x225e4a][_0x0ed2('0xa')]?_0x41bea7['value'][_0x225e4a]['address']:'anonymous'+random[_0x0ed2('0xc')](0x6)+_0x0ed2('0xd');_0x565cc7+='>';}}return _0x565cc7;}function parseEmail(_0x9ac513,_0x1206e3,_0x4712e3){if(_0x1206e3[_0x0ed2('0x18')]){var _0x13d3b7=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x13d3b7['test'](_0x1206e3['html'])){_0x1206e3[_0x0ed2('0x18')]=_0x1206e3[_0x0ed2('0x18')][_0x0ed2('0x19')](_0x13d3b7,'');}if(_0x1206e3[_0x0ed2('0x18')][_0x0ed2('0x1a')](_0x0ed2('0x1b'))){var _0x311261=[];_0x1206e3[_0x0ed2('0x1c')]['forEach'](_0x1da1a2=>{_0x311261[_0x0ed2('0x1d')](_0x1da1a2[_0x0ed2('0x1e')]);});var _0x19ffde=/<img.*? _SRC(.*?)[^>]+>/g;var _0x466b49=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5bb903=_0x1206e3[_0x0ed2('0x18')][_0x0ed2('0x19')](_0x466b49,_0x0ed2('0x1f'));var _0x182471=_0x5bb903[_0x0ed2('0x19')](_0x19ffde,_0x0ed2('0x20'));for(let _0x194380=0x0;_0x194380<_0x311261[_0x0ed2('0x12')];_0x194380++){var _0x1e62a8=_0x182471[_0x0ed2('0x19')]('_IMG',_0x0ed2('0x21')+_0x311261[_0x194380]+'\x20]</span>');_0x182471=_0x1e62a8;}_0x1206e3['html']=_0x182471;}_0x4712e3[_0x0ed2('0x22')]=_0x1206e3[_0x0ed2('0x18')];}else{_0x4712e3[_0x0ed2('0x22')]=_0x1206e3[_0x0ed2('0x23')];}if(_0x4712e3[_0x0ed2('0x22')]){_0x4712e3[_0x0ed2('0x22')]=_0x4712e3['body']['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x1206e3['to']){_0x4712e3[_0x0ed2('0x24')][_0x0ed2('0x25')]=getMails(null,_0x1206e3['to']);var _0x41543f=getMails(_0x9ac513[_0x0ed2('0x6')],_0x1206e3['to']);if(!_['isEmpty'](_0x41543f)){_0x4712e3[_0x0ed2('0x24')]['cc']+=_0x41543f;}}if(_0x1206e3['cc']){_0x4712e3['message'][_0x0ed2('0x26')]=getMails(null,_0x1206e3['cc']);var _0x793700=getMails(_0x9ac513['email'],_0x1206e3['cc']);if(!_[_0x0ed2('0x17')](_0x793700)){if(!_['isEmpty'](_0x4712e3[_0x0ed2('0x24')]['cc'])){_0x4712e3[_0x0ed2('0x24')]['cc']+=',';}_0x4712e3[_0x0ed2('0x24')]['cc']+=_0x793700;}}if(!_[_0x0ed2('0x1a')](_0x4712e3['message'][_0x0ed2('0x25')],_0x9ac513[_0x0ed2('0x6')])&&!_['includes'](_0x4712e3[_0x0ed2('0x24')][_0x0ed2('0x26')],_0x9ac513[_0x0ed2('0x6')])){_0x4712e3[_0x0ed2('0x24')][_0x0ed2('0x27')]=_0x9ac513[_0x0ed2('0x6')];}if(_0x1206e3[_0x0ed2('0x1c')]&&_0x1206e3[_0x0ed2('0x1c')][_0x0ed2('0x12')]){_0x4712e3[_0x0ed2('0x24')][_0x0ed2('0x28')]=_0x1206e3[_0x0ed2('0x1c')]['length'];for(var _0x533114=0x0,_0x11bb54,_0x5b022a,_0x39c8f3;_0x533114<_0x1206e3[_0x0ed2('0x1c')][_0x0ed2('0x12')];_0x533114+=0x1){if(_0x1206e3[_0x0ed2('0x1c')][_0x533114][_0x0ed2('0x29')]==='attachment'){_0x39c8f3=_0x1206e3[_0x0ed2('0x1c')][_0x533114][_0x0ed2('0x1e')]||_0x0ed2('0x2a')+_0x533114;_0x11bb54=util[_0x0ed2('0x2b')](_0x0ed2('0x2c'),Date[_0x0ed2('0x2d')](),_0x39c8f3);_0x5b022a=path[_0x0ed2('0x14')](config['root'],'server/files/attachments/',_0x11bb54);fs['writeFileSync'](_0x5b022a,_0x1206e3[_0x0ed2('0x1c')][_0x533114][_0x0ed2('0x2e')]);_0x4712e3[_0x0ed2('0x24')]['attachments'][_0x0ed2('0x1d')]({'name':_0x39c8f3,'basename':_0x11bb54,'type':_0x1206e3['attachments'][_0x533114][_0x0ed2('0x2f')],'filepath':_0x5b022a});}}}if(_0x1206e3[_0x0ed2('0x30')]&&_0x1206e3[_0x0ed2('0x30')][_0x0ed2('0x12')]>0x0){var _0x1c0bd1=[_0x0ed2('0x31'),_0x0ed2('0x32'),'Precedence:\x20auto_reply'];for(var _0x49809b=0x0;_0x49809b<_0x1206e3[_0x0ed2('0x30')]['length'];_0x49809b++){var _0xb1d517=_[_0x0ed2('0x10')](_0x1c0bd1,_0x1206e3['headerLines'][_0x49809b][_0x0ed2('0x33')]);if(_0xb1d517>=0x0){_0x4712e3[_0x0ed2('0x34')]=!![];}}}return _0x4712e3;}exports['parser']=function(_0x1b4103,_0x11c59d,_0x51a65b){var _0x605a5e={'from':getAddress(_0x11c59d['from']),'firstName':getFirstName(_0x11c59d[_0x0ed2('0x35')]),'lastName':getLastName(_0x11c59d[_0x0ed2('0x35')]),'mapKey':_0x0ed2('0x6'),'message':{'from':getMails(_0x1b4103['email'],_0x11c59d['from']),'to':_0x1b4103[_0x0ed2('0x6')],'cc':'','subject':_0x11c59d[_0x0ed2('0x36')]||'','messageId':_0x11c59d[_0x0ed2('0x37')],'inReplyTo':_0x11c59d[_0x0ed2('0x38')],'sentAt':moment(_0x11c59d['date'])['format'](_0x0ed2('0x39')),'attach':![],'attachments':[]}};if(!_0x11c59d['html']&&!_0x11c59d[_0x0ed2('0x23')]){var _0x529c96=_[_0x0ed2('0x3a')](_0x11c59d[_0x0ed2('0x1c')],{'contentType':_0x0ed2('0x3b')});if(_0x529c96['length']){logger[_0x0ed2('0x3c')](util[_0x0ed2('0x2b')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x11c59d[_0x0ed2('0x37')]));tnef['parseBuffer'](_['first'](_0x529c96)[_0x0ed2('0x2e')],function(_0x4374a9,_0x1512ee){if(_0x1512ee){_0x11c59d[_0x0ed2('0x18')]=_0x1512ee[_0x0ed2('0x3d')]||'<p>Empty\x20message</p>';if(_0x1512ee['Attachments']){for(var _0xa5b266=0x0;_0xa5b266<_0x1512ee[_0x0ed2('0x3e')][_0x0ed2('0x12')];_0xa5b266++){var _0x2bee7c=_0x1512ee[_0x0ed2('0x3e')][_0xa5b266];_0x605a5e[_0x0ed2('0x24')][_0x0ed2('0x1c')][_0x0ed2('0x1d')]({'filename':_0x2bee7c[_0x0ed2('0x3f')],'content':Buffer[_0x0ed2('0x35')](_0x2bee7c[_0x0ed2('0x40')])});}}}_0x51a65b(parseEmail(_0x1b4103,_0x11c59d,_0x605a5e));});}else{_0x11c59d[_0x0ed2('0x18')]=_0x0ed2('0x41');_0x51a65b(parseEmail(_0x1b4103,_0x11c59d,_0x605a5e));}}else{_0x51a65b(parseEmail(_0x1b4103,_0x11c59d,_0x605a5e));}};exports[_0x0ed2('0x42')]=function(_0x39b94c){switch(_0x39b94c){case _0x0ed2('0x43'):return _0x0ed2('0x44');case'yahoo':return _0x0ed2('0x45');case _0x0ed2('0x46'):return _0x0ed2('0x47');case'outlook365':return _0x0ed2('0x48');}return'127.0.0.1';};
\ No newline at end of file
+var _0xcd6f=['imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','util','node-tnef','email','../../../config/environment','value','address','generate','@xcally.com','name','indexOf','split','length','slice','join','Anonymous','head','anonymous','html','replace','includes','<img','attachments','forEach','filename','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','isEmpty','message','originTo','originCc','attach','type','attachment','attachment-','format','now','server/files/attachments/','writeFileSync','push','contentType','headerLines','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','from','subject','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail'];(function(_0x3156c1,_0x237bc3){var _0x5a3fea=function(_0x232763){while(--_0x232763){_0x3156c1['push'](_0x3156c1['shift']());}};_0x5a3fea(++_0x237bc3);}(_0xcd6f,0x17b));var _0xfcd6=function(_0x1994b5,_0x330b29){_0x1994b5=_0x1994b5-0x0;var _0x5c600b=_0xcd6f[_0x1994b5];return _0x5c600b;};'use strict';var _=require(_0xfcd6('0x0'));var moment=require(_0xfcd6('0x1'));var random=require(_0xfcd6('0x2'));var fs=require('fs');var path=require(_0xfcd6('0x3'));var util=require(_0xfcd6('0x4'));var tnef=require(_0xfcd6('0x5'));var logger=require('../../../config/logger')(_0xfcd6('0x6'));var config=require(_0xfcd6('0x7'));function getAddress(_0x43c662){var _0x23ae87=_['head'](_0x43c662[_0xfcd6('0x8')]);return _0x23ae87&&_0x23ae87['address']?_0x23ae87[_0xfcd6('0x9')]:'anonymous'+random[_0xfcd6('0xa')](0x6)+_0xfcd6('0xb');}function getFirstName(_0x544104){var _0x7a7f84=_['head'](_0x544104[_0xfcd6('0x8')]);if(_0x7a7f84&&_0x7a7f84['name']){if(_0x7a7f84['name']==_0x7a7f84['address']){return _0x7a7f84[_0xfcd6('0xc')]['substring'](0x0,_0x7a7f84['name'][_0xfcd6('0xd')]('@'));}var _0xcc5317=_0x7a7f84['name'][_0xfcd6('0xe')](/\s+/);return _0xcc5317[_0xfcd6('0xf')]>0x1?_0xcc5317[_0xfcd6('0x10')](0x0,-0x1)[_0xfcd6('0x11')]('\x20'):_0x7a7f84[_0xfcd6('0xc')];}return _0xfcd6('0x12');}function getLastName(_0x340477){var _0x2508f2=_[_0xfcd6('0x13')](_0x340477[_0xfcd6('0x8')]);if(_0x2508f2&&_0x2508f2[_0xfcd6('0xc')]){var _0x2b4344=_0x2508f2[_0xfcd6('0xc')][_0xfcd6('0xe')](/\s+/);return _0x2b4344['length']>0x1?_0x2b4344['pop']():'';}return'';}function getMails(_0xc53a5c,_0x2ae7f4){var _0x56756f='';for(var _0x29d25d=0x0;_0x29d25d<_0x2ae7f4[_0xfcd6('0x8')][_0xfcd6('0xf')];_0x29d25d+=0x1){if(_0x2ae7f4[_0xfcd6('0x8')][_0x29d25d]['address']!==_0xc53a5c){if(!_['isEmpty'](_0x56756f)){_0x56756f+=',';}_0x56756f+=_0x2ae7f4[_0xfcd6('0x8')][_0x29d25d][_0xfcd6('0xc')]||_0x2ae7f4[_0xfcd6('0x8')][_0x29d25d][_0xfcd6('0x9')]||'';_0x56756f+='\x20<';_0x56756f+=_0x2ae7f4['value'][_0x29d25d][_0xfcd6('0x9')]?_0x2ae7f4['value'][_0x29d25d][_0xfcd6('0x9')]:_0xfcd6('0x14')+random[_0xfcd6('0xa')](0x6)+_0xfcd6('0xb');_0x56756f+='>';}}return _0x56756f;}function parseEmail(_0x42d685,_0x3affd6,_0x29b9b8){if(_0x3affd6[_0xfcd6('0x15')]){var _0x44bbb3=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x44bbb3['test'](_0x3affd6[_0xfcd6('0x15')])){_0x3affd6['html']=_0x3affd6[_0xfcd6('0x15')][_0xfcd6('0x16')](_0x44bbb3,'');}if(_0x3affd6['html'][_0xfcd6('0x17')](_0xfcd6('0x18'))){var _0x23a6ca=[];_0x3affd6[_0xfcd6('0x19')][_0xfcd6('0x1a')](_0x23b36b=>{_0x23a6ca['push'](_0x23b36b[_0xfcd6('0x1b')]);});var _0x584c05=/<img.*? _SRC(.*?)[^>]+>/g;var _0x24ec43=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x1d46f3=_0x3affd6[_0xfcd6('0x15')][_0xfcd6('0x16')](_0x24ec43,'_SRC');var _0x4af752=_0x1d46f3['replace'](_0x584c05,'_IMG');for(let _0x5e0d78=0x0;_0x5e0d78<_0x23a6ca[_0xfcd6('0xf')];_0x5e0d78++){var _0xa5f72d=_0x4af752['replace']('_IMG',_0xfcd6('0x1c')+_0x23a6ca[_0x5e0d78]+_0xfcd6('0x1d'));_0x4af752=_0xa5f72d;}_0x3affd6[_0xfcd6('0x15')]=_0x4af752;}_0x29b9b8[_0xfcd6('0x1e')]=_0x3affd6[_0xfcd6('0x15')];}else{_0x29b9b8[_0xfcd6('0x1e')]=_0x3affd6['textAsHtml'];}if(_0x29b9b8[_0xfcd6('0x1e')]){_0x29b9b8[_0xfcd6('0x1e')]=_0x29b9b8[_0xfcd6('0x1e')][_0xfcd6('0x16')](/<a\s+/gi,_0xfcd6('0x1f'));}if(_0x3affd6['to']){_0x29b9b8['message']['originTo']=getMails(null,_0x3affd6['to']);var _0x8098fc=getMails(_0x42d685[_0xfcd6('0x6')],_0x3affd6['to']);if(!_[_0xfcd6('0x20')](_0x8098fc)){_0x29b9b8[_0xfcd6('0x21')]['cc']+=_0x8098fc;}}if(_0x3affd6['cc']){_0x29b9b8[_0xfcd6('0x21')]['originCc']=getMails(null,_0x3affd6['cc']);var _0x489129=getMails(_0x42d685[_0xfcd6('0x6')],_0x3affd6['cc']);if(!_[_0xfcd6('0x20')](_0x489129)){if(!_['isEmpty'](_0x29b9b8[_0xfcd6('0x21')]['cc'])){_0x29b9b8[_0xfcd6('0x21')]['cc']+=',';}_0x29b9b8[_0xfcd6('0x21')]['cc']+=_0x489129;}}if(!_[_0xfcd6('0x17')](_0x29b9b8[_0xfcd6('0x21')][_0xfcd6('0x22')],_0x42d685[_0xfcd6('0x6')])&&!_['includes'](_0x29b9b8['message'][_0xfcd6('0x23')],_0x42d685[_0xfcd6('0x6')])){_0x29b9b8['message']['bcc']=_0x42d685['email'];}if(_0x3affd6[_0xfcd6('0x19')]&&_0x3affd6[_0xfcd6('0x19')]['length']){_0x29b9b8['message'][_0xfcd6('0x24')]=_0x3affd6[_0xfcd6('0x19')][_0xfcd6('0xf')];for(var _0x1a5ea4=0x0,_0x4aa581,_0x39d0ba,_0x160510;_0x1a5ea4<_0x3affd6[_0xfcd6('0x19')][_0xfcd6('0xf')];_0x1a5ea4+=0x1){if(_0x3affd6['attachments'][_0x1a5ea4][_0xfcd6('0x25')]===_0xfcd6('0x26')){_0x160510=_0x3affd6[_0xfcd6('0x19')][_0x1a5ea4][_0xfcd6('0x1b')]||_0xfcd6('0x27')+_0x1a5ea4;_0x4aa581=util[_0xfcd6('0x28')]('%s-%s',Date[_0xfcd6('0x29')](),_0x160510);_0x39d0ba=path[_0xfcd6('0x11')](config['root'],_0xfcd6('0x2a'),_0x4aa581);fs[_0xfcd6('0x2b')](_0x39d0ba,_0x3affd6['attachments'][_0x1a5ea4]['content']);_0x29b9b8[_0xfcd6('0x21')][_0xfcd6('0x19')][_0xfcd6('0x2c')]({'name':_0x160510,'basename':_0x4aa581,'type':_0x3affd6[_0xfcd6('0x19')][_0x1a5ea4][_0xfcd6('0x2d')],'filepath':_0x39d0ba});}}}if(_0x3affd6[_0xfcd6('0x2e')]&&_0x3affd6['headerLines'][_0xfcd6('0xf')]>0x0){var _0x226b90=['Auto-Submitted:\x20auto-replied',_0xfcd6('0x2f'),'Precedence:\x20auto_reply'];for(var _0x5c8571=0x0;_0x5c8571<_0x3affd6[_0xfcd6('0x2e')][_0xfcd6('0xf')];_0x5c8571++){var _0x137df7=_[_0xfcd6('0xd')](_0x226b90,_0x3affd6[_0xfcd6('0x2e')][_0x5c8571][_0xfcd6('0x30')]);if(_0x137df7>=0x0){_0x29b9b8[_0xfcd6('0x31')]=!![];}}}return _0x29b9b8;}exports[_0xfcd6('0x32')]=function(_0x3cb6a7,_0xceca99,_0x1cb53d){var _0x57b860={'from':getAddress(_0xceca99[_0xfcd6('0x33')]),'firstName':getFirstName(_0xceca99[_0xfcd6('0x33')]),'lastName':getLastName(_0xceca99[_0xfcd6('0x33')]),'mapKey':'email','message':{'from':getMails(_0x3cb6a7['email'],_0xceca99[_0xfcd6('0x33')]),'to':_0x3cb6a7[_0xfcd6('0x6')],'cc':'','subject':_0xceca99[_0xfcd6('0x34')]||'','messageId':_0xceca99[_0xfcd6('0x35')],'inReplyTo':_0xceca99[_0xfcd6('0x36')],'sentAt':moment(_0xceca99['date'])[_0xfcd6('0x28')](_0xfcd6('0x37')),'attach':![],'attachments':[]}};if(!_0xceca99['html']&&!_0xceca99[_0xfcd6('0x38')]){var _0x303ad7=_[_0xfcd6('0x39')](_0xceca99['attachments'],{'contentType':'application/ms-tnef'});if(_0x303ad7[_0xfcd6('0xf')]){logger['info'](util[_0xfcd6('0x28')](_0xfcd6('0x3a'),_0xceca99[_0xfcd6('0x35')]));tnef['parseBuffer'](_[_0xfcd6('0x3b')](_0x303ad7)[_0xfcd6('0x3c')],function(_0x194ce9,_0x701eb2){if(_0x701eb2){_0xceca99['html']=_0x701eb2[_0xfcd6('0x3d')]||_0xfcd6('0x3e');if(_0x701eb2[_0xfcd6('0x3f')]){for(var _0x3988ef=0x0;_0x3988ef<_0x701eb2[_0xfcd6('0x3f')][_0xfcd6('0xf')];_0x3988ef++){var _0xddd44=_0x701eb2[_0xfcd6('0x3f')][_0x3988ef];_0x57b860[_0xfcd6('0x21')][_0xfcd6('0x19')][_0xfcd6('0x2c')]({'filename':_0xddd44['Title'],'content':Buffer[_0xfcd6('0x33')](_0xddd44[_0xfcd6('0x40')])});}}}_0x1cb53d(parseEmail(_0x3cb6a7,_0xceca99,_0x57b860));});}else{_0xceca99[_0xfcd6('0x15')]='<p>Empty\x20message</p>';_0x1cb53d(parseEmail(_0x3cb6a7,_0xceca99,_0x57b860));}}else{_0x1cb53d(parseEmail(_0x3cb6a7,_0xceca99,_0x57b860));}};exports[_0xfcd6('0x41')]=function(_0x41e5cb){switch(_0x41e5cb){case _0xfcd6('0x42'):return _0xfcd6('0x43');case _0xfcd6('0x44'):return _0xfcd6('0x45');case _0xfcd6('0x46'):return _0xfcd6('0x47');case _0xfcd6('0x48'):return _0xfcd6('0x49');}return _0xfcd6('0x4a');};
\ No newline at end of file
index 6ff8fdb..66ca87a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x840e=['Imap','Smtp','lodash','name','Service','key','SERV','active'];(function(_0x32b356,_0x1ee16b){var _0x9e4be0=function(_0x29b21d){while(--_0x29b21d){_0x32b356['push'](_0x32b356['shift']());}};_0x9e4be0(++_0x1ee16b);}(_0x840e,0x142));var _0xe840=function(_0x4fb1b8,_0x32d98d){_0x4fb1b8=_0x4fb1b8-0x0;var _0x146c71=_0x840e[_0x4fb1b8];return _0x146c71;};'use strict';var _=require(_0xe840('0x0'));function MailAccount(_0x56920a){this['id']=_0x56920a['id']||0x0;this[_0xe840('0x1')]=_0x56920a['name']||_0xe840('0x2');this[_0xe840('0x3')]=_0x56920a['key']||_0xe840('0x4');this['active']=_0x56920a[_0xe840('0x5')]||![];this[_0xe840('0x6')]=_0x56920a['Imap']||[];this['Smtp']=_0x56920a[_0xe840('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0xbfc7=['Smtp','exports','name','key','SERV','active','Imap'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbfc7,0xf0));var _0x7bfc=function(_0x3295e8,_0x42e371){_0x3295e8=_0x3295e8-0x0;var _0x18e999=_0xbfc7[_0x3295e8];return _0x18e999;};'use strict';var _=require('lodash');function MailAccount(_0x4a8c83){this['id']=_0x4a8c83['id']||0x0;this['name']=_0x4a8c83[_0x7bfc('0x0')]||'Service';this['key']=_0x4a8c83[_0x7bfc('0x1')]||_0x7bfc('0x2');this[_0x7bfc('0x3')]=_0x4a8c83[_0x7bfc('0x3')]||![];this[_0x7bfc('0x4')]=_0x4a8c83['Imap']||[];this[_0x7bfc('0x5')]=_0x4a8c83[_0x7bfc('0x5')]||[];}module[_0x7bfc('0x6')]=MailAccount;
\ No newline at end of file
index 9832065..0c0e85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0583=['prototype','mergeFromDatabase','initMailAccounts','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty'];(function(_0x2de062,_0x4b97e6){var _0x4adab4=function(_0x111eec){while(--_0x111eec){_0x2de062['push'](_0x2de062['shift']());}};_0x4adab4(++_0x4b97e6);}(_0x0583,0x12d));var _0x3058=function(_0x41aa5a,_0x2dbf0f){_0x41aa5a=_0x41aa5a-0x0;var _0x2e37a4=_0x0583[_0x41aa5a];return _0x2e37a4;};'use strict';var _=require(_0x3058('0x0'));var MailAccount=require(_0x3058('0x1'));var Realtime=function(){this[_0x3058('0x2')]={};};function freeIsNotKey(_0x4e2c0f,_0x20ca42,_0x3f133c){var _0x1a0bc4=_[_0x3058('0x3')](_0x4e2c0f,function(_0x459184,_0x4ef048){return _0x459184[_0x3f133c];});for(var _0x709ea5 in _0x20ca42){if(_0x20ca42[_0x3058('0x4')](_0x709ea5)){if(!_0x1a0bc4[_0x709ea5]){delete _0x20ca42[_0x709ea5];}}}}Realtime[_0x3058('0x5')][_0x3058('0x6')]=function(_0x397060,_0x40daff){for(var _0x3d416f in _0x40daff){if(_0x397060[_0x3058('0x4')](_0x3d416f)){_0x397060[_0x3d416f]=_0x40daff[_0x3d416f];}}};Realtime['prototype'][_0x3058('0x7')]=function(){var _0x4a7e7e=this;return function(_0x799762){if(_0x799762){freeIsNotKey(_0x799762,_0x4a7e7e[_0x3058('0x2')],'id');for(var _0x379a6f=0x0,_0x284eb1={},_0x56da1f={};_0x379a6f<_0x799762['length'];_0x379a6f+=0x1){_0x284eb1=_0x799762[_0x379a6f];if(_['isUndefined'](_0x4a7e7e['mailAccounts'][_0x284eb1['id']])){_0x4a7e7e[_0x3058('0x2')][_0x284eb1['id']]=new MailAccount(_0x284eb1);}else{_['merge'](_0x4a7e7e[_0x3058('0x2')][_0x284eb1['id']],_0x284eb1);}}}return _0x4a7e7e[_0x3058('0x2')];};};module[_0x3058('0x8')]=Realtime;
\ No newline at end of file
+var _0xe818=['mergeFromDatabase','initMailAccounts','length','isUndefined','merge','lodash','../model/mailAccount','mailAccounts','hasOwnProperty','prototype'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0xe818,0x73));var _0x8e81=function(_0x94d18b,_0x5e4035){_0x94d18b=_0x94d18b-0x0;var _0x193171=_0xe818[_0x94d18b];return _0x193171;};'use strict';var _=require(_0x8e81('0x0'));var MailAccount=require(_0x8e81('0x1'));var Realtime=function(){this[_0x8e81('0x2')]={};};function freeIsNotKey(_0x33b34c,_0xc7f842,_0x34c535){var _0x17943d=_['mapKeys'](_0x33b34c,function(_0x113c38,_0xf45d9e){return _0x113c38[_0x34c535];});for(var _0xf4ea9b in _0xc7f842){if(_0xc7f842[_0x8e81('0x3')](_0xf4ea9b)){if(!_0x17943d[_0xf4ea9b]){delete _0xc7f842[_0xf4ea9b];}}}}Realtime[_0x8e81('0x4')][_0x8e81('0x5')]=function(_0x4ece45,_0x365a5d){for(var _0xc1018 in _0x365a5d){if(_0x4ece45[_0x8e81('0x3')](_0xc1018)){_0x4ece45[_0xc1018]=_0x365a5d[_0xc1018];}}};Realtime[_0x8e81('0x4')][_0x8e81('0x6')]=function(){var _0x1700d0=this;return function(_0x22e164){if(_0x22e164){freeIsNotKey(_0x22e164,_0x1700d0[_0x8e81('0x2')],'id');for(var _0x4e4e04=0x0,_0x395443={},_0x1051f5={};_0x4e4e04<_0x22e164[_0x8e81('0x7')];_0x4e4e04+=0x1){_0x395443=_0x22e164[_0x4e4e04];if(_[_0x8e81('0x8')](_0x1700d0[_0x8e81('0x2')][_0x395443['id']])){_0x1700d0[_0x8e81('0x2')][_0x395443['id']]=new MailAccount(_0x395443);}else{_[_0x8e81('0x9')](_0x1700d0[_0x8e81('0x2')][_0x395443['id']],_0x395443);}}}return _0x1700d0[_0x8e81('0x2')];};};module['exports']=Realtime;
\ No newline at end of file
index 0b81bd7..0bca260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0d4=['NotifyMailAccount','Request','GetMailAccount','name','service','email','active','key','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','notify'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb0d4,0x1e1));var _0x4b0d=function(_0x357de1,_0x406616){_0x357de1=_0x357de1-0x0;var _0x54e2e4=_0xb0d4[_0x357de1];return _0x54e2e4;};'use strict';var client=require('../client');exports['getMailAccounts']=function(){return function(){return client[_0x4b0d('0x0')](_0x4b0d('0x1'),{'options':{'attributes':['id',_0x4b0d('0x2'),_0x4b0d('0x3'),_0x4b0d('0x4'),_0x4b0d('0x5'),_0x4b0d('0x6'),'ListId',_0x4b0d('0x7')],'raw':![],'include':[{'model':_0x4b0d('0x8'),'as':_0x4b0d('0x9')},{'model':_0x4b0d('0xa'),'as':_0x4b0d('0xb')}]},'log':_0x4b0d('0xc')});};};exports[_0x4b0d('0xd')]=function(_0x305d51,_0x2377c1){return client[_0x4b0d('0x0')]('NotifyMailAccount',{'account':{'id':_0x305d51},'body':_0x2377c1,'log':_0x4b0d('0xe')});};
\ No newline at end of file
+var _0x1bec=['active','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','notify','NotifyMailAccount','Request','name','service','email'];(function(_0x241d05,_0x1168f7){var _0x268896=function(_0x1c1c3f){while(--_0x1c1c3f){_0x241d05['push'](_0x241d05['shift']());}};_0x268896(++_0x1168f7);}(_0x1bec,0x168));var _0xc1be=function(_0x3a60b8,_0x47caab){_0x3a60b8=_0x3a60b8-0x0;var _0x4eb583=_0x1bec[_0x3a60b8];return _0x4eb583;};'use strict';var client=require('../client');exports['getMailAccounts']=function(){return function(){return client[_0xc1be('0x0')]('GetMailAccount',{'options':{'attributes':['id',_0xc1be('0x1'),_0xc1be('0x2'),_0xc1be('0x3'),_0xc1be('0x4'),'key',_0xc1be('0x5'),_0xc1be('0x6')],'raw':![],'include':[{'model':_0xc1be('0x7'),'as':_0xc1be('0x8')},{'model':_0xc1be('0x9'),'as':_0xc1be('0xa')}]},'log':_0xc1be('0xb')});};};exports[_0xc1be('0xc')]=function(_0x2b8db3,_0x358894){return client['Request'](_0xc1be('0xd'),{'account':{'id':_0x2b8db3},'body':_0x358894,'log':_0xc1be('0xd')});};
\ No newline at end of file
index 9e6cf91..33212a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9937=['loginMailFrequency','GetSettings','../client','getSettings','Request','ShowSetting'];(function(_0x2d2930,_0x54a946){var _0x50766a=function(_0x3ebf85){while(--_0x3ebf85){_0x2d2930['push'](_0x2d2930['shift']());}};_0x50766a(++_0x54a946);}(_0x9937,0x6e));var _0x7993=function(_0xb92c9d,_0x278637){_0xb92c9d=_0xb92c9d-0x0;var _0x3cf4eb=_0x9937[_0xb92c9d];return _0x3cf4eb;};'use strict';var client=require(_0x7993('0x0'));exports[_0x7993('0x1')]=function(){return client[_0x7993('0x2')](_0x7993('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x7993('0x4')]},'log':_0x7993('0x5')});};
\ No newline at end of file
+var _0xf5ed=['Request','ShowSetting','loginMailFrequency','GetSettings','../client','getSettings'];(function(_0x7a8eba,_0xfdd10c){var _0x4c1da0=function(_0x5de6b2){while(--_0x5de6b2){_0x7a8eba['push'](_0x7a8eba['shift']());}};_0x4c1da0(++_0xfdd10c);}(_0xf5ed,0x166));var _0xdf5e=function(_0x41a2f1,_0x3ce063){_0x41a2f1=_0x41a2f1-0x0;var _0x34de3b=_0xf5ed[_0x41a2f1];return _0x34de3b;};'use strict';var client=require(_0xdf5e('0x0'));exports[_0xdf5e('0x1')]=function(){return client[_0xdf5e('0x2')](_0xdf5e('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xdf5e('0x4')]},'log':_0xdf5e('0x5')});};
\ No newline at end of file
index d9eade2..622e60a 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 79180aa..dc6fd6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc42=['redis','localhost','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','port','http','express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','socket.io','websocket','polling'];(function(_0x47bbd5,_0xfab6bc){var _0xea2a13=function(_0xc1964c){while(--_0xc1964c){_0x47bbd5['push'](_0x47bbd5['shift']());}};_0xea2a13(++_0xfab6bc);}(_0xbc42,0x68));var _0x2bc4=function(_0x49d7ef,_0x16c39f){_0x49d7ef=_0x49d7ef-0x0;var _0x3ff0a0=_0xbc42[_0x49d7ef];return _0x3ff0a0;};'use strict';var _=require('lodash');var http=require(_0x2bc4('0x0'));var express=require(_0x2bc4('0x1'));var sticky=require(_0x2bc4('0x2'));var Redis=require(_0x2bc4('0x3'));var config=require(_0x2bc4('0x4'));var app=express();var server=http[_0x2bc4('0x5')](app);server[_0x2bc4('0x6')]=0xdbba0;if(sticky[_0x2bc4('0x7')](server,config['port'])){var socketio=require(_0x2bc4('0x8'))(server,{'transports':[_0x2bc4('0x9'),_0x2bc4('0xa')]});config[_0x2bc4('0xb')]=_['defaults'](config['redis'],{'host':_0x2bc4('0xc'),'port':0x18eb});socketio['adapter'](require(_0x2bc4('0xd'))({'pubClient':new Redis(config[_0x2bc4('0xb')]),'subClient':new Redis(config[_0x2bc4('0xb')])}));require(_0x2bc4('0xe'))[_0x2bc4('0xf')]();require(_0x2bc4('0x10'))[_0x2bc4('0xf')](socketio);require(_0x2bc4('0x11'))[_0x2bc4('0xf')](app);require(_0x2bc4('0x12'))[_0x2bc4('0xf')](app);}else{server[_0x2bc4('0x13')]('listening',function(){console[_0x2bc4('0x14')](_0x2bc4('0x15'),config[_0x2bc4('0x16')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0xd261=['ioredis','../../config/environment','createServer','timeout','listen','websocket','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','log','port','exports','http','express'];(function(_0x44b9a8,_0x217913){var _0x56c80b=function(_0xfdaddc){while(--_0xfdaddc){_0x44b9a8['push'](_0x44b9a8['shift']());}};_0x56c80b(++_0x217913);}(_0xd261,0x148));var _0x1d26=function(_0x2a5203,_0x42834d){_0x2a5203=_0x2a5203-0x0;var _0x580809=_0xd261[_0x2a5203];return _0x580809;};'use strict';var _=require('lodash');var http=require(_0x1d26('0x0'));var express=require(_0x1d26('0x1'));var sticky=require('sticky-session');var Redis=require(_0x1d26('0x2'));var config=require(_0x1d26('0x3'));var app=express();var server=http[_0x1d26('0x4')](app);server[_0x1d26('0x5')]=0xdbba0;if(sticky[_0x1d26('0x6')](server,config['port'])){var socketio=require('socket.io')(server,{'transports':[_0x1d26('0x7'),'polling']});config[_0x1d26('0x8')]=_[_0x1d26('0x9')](config[_0x1d26('0x8')],{'host':_0x1d26('0xa'),'port':0x18eb});socketio[_0x1d26('0xb')](require(_0x1d26('0xc'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config['redis'])}));require(_0x1d26('0xd'))[_0x1d26('0xe')]();require(_0x1d26('0xf'))[_0x1d26('0xe')](socketio);require(_0x1d26('0x10'))['default'](app);require(_0x1d26('0x11'))[_0x1d26('0xe')](app);}else{server[_0x1d26('0x12')]('listening',function(){console[_0x1d26('0x13')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x1d26('0x14')]);});}exports=module[_0x1d26('0x15')]=app;
\ No newline at end of file
index 1791d28..c6b4de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1550=['client','http','Request','request','then','debug','rpc','error','message','result','catch','exports','jayson/promise','../../config/logger','routing'];(function(_0x598be5,_0x5745b8){var _0x12672a=function(_0x3a3a59){while(--_0x3a3a59){_0x598be5['push'](_0x598be5['shift']());}};_0x12672a(++_0x5745b8);}(_0x1550,0x93));var _0x0155=function(_0x2d0a55,_0x32241c){_0x2d0a55=_0x2d0a55-0x0;var _0x375fd2=_0x1550[_0x2d0a55];return _0x375fd2;};'use strict';var jayson=require(_0x0155('0x0'));var BPromise=require('bluebird');var logger=require(_0x0155('0x1'))(_0x0155('0x2'));var client=jayson[_0x0155('0x3')][_0x0155('0x4')]({'port':0x2329});client[_0x0155('0x5')]=function(_0x25b9c8,_0xc73eef){return new BPromise(function(_0x17707c,_0x5b37b1){return client[_0x0155('0x6')](_0x25b9c8,_0xc73eef)[_0x0155('0x7')](function(_0x37f864){logger[_0x0155('0x8')](_0x0155('0x9'),_0x0155('0x2'),_0x25b9c8,_0xc73eef,_0x37f864);if(_0x37f864[_0x0155('0xa')]){logger[_0x0155('0xa')]('rpc','routing',_0x25b9c8,_0x37f864[_0x0155('0xa')]['message'],_0xc73eef);return _0x5b37b1(_0x37f864[_0x0155('0xa')][_0x0155('0xb')]);}else{return _0x17707c(_0x37f864[_0x0155('0xc')]);}})[_0x0155('0xd')](function(_0x5b0e70){logger['error'](_0x0155('0x9'),_0x0155('0x2'),_0x25b9c8,_0x5b0e70,_0xc73eef);return _0x5b37b1(_0x5b0e70);});});};module[_0x0155('0xe')]=client;
\ No newline at end of file
+var _0x5aaa=['../../config/logger','routing','client','http','Request','then','rpc','error','message','catch','exports','jayson/promise','bluebird'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x5aaa,0x1ab));var _0xa5aa=function(_0x46d828,_0x1f65c7){_0x46d828=_0x46d828-0x0;var _0x5f1f33=_0x5aaa[_0x46d828];return _0x5f1f33;};'use strict';var jayson=require(_0xa5aa('0x0'));var BPromise=require(_0xa5aa('0x1'));var logger=require(_0xa5aa('0x2'))(_0xa5aa('0x3'));var client=jayson[_0xa5aa('0x4')][_0xa5aa('0x5')]({'port':0x2329});client[_0xa5aa('0x6')]=function(_0x3a103f,_0x13ce9a){return new BPromise(function(_0x2e4599,_0x1ce6a6){return client['request'](_0x3a103f,_0x13ce9a)[_0xa5aa('0x7')](function(_0x50471d){logger['debug'](_0xa5aa('0x8'),_0xa5aa('0x3'),_0x3a103f,_0x13ce9a,_0x50471d);if(_0x50471d[_0xa5aa('0x9')]){logger[_0xa5aa('0x9')]('rpc',_0xa5aa('0x3'),_0x3a103f,_0x50471d[_0xa5aa('0x9')][_0xa5aa('0xa')],_0x13ce9a);return _0x1ce6a6(_0x50471d['error'][_0xa5aa('0xa')]);}else{return _0x2e4599(_0x50471d['result']);}})[_0xa5aa('0xb')](function(_0x4233c1){logger[_0xa5aa('0x9')]('rpc',_0xa5aa('0x3'),_0x3a103f,_0x4233c1,_0x13ce9a);return _0x1ce6a6(_0x4233c1);});});};module[_0xa5aa('0xc')]=client;
\ No newline at end of file
index 645efec..854dfc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d35=['./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/whatsappQueue','resolve','getAgents','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initSmsQueues','getMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','bluebird','./server','./rpc/interval'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0x1d35,0x1e0));var _0x51d3=function(_0x59d6d8,_0x4e81ae){_0x59d6d8=_0x59d6d8-0x0;var _0x45e804=_0x1d35[_0x59d6d8];return _0x45e804;};'use strict';var BPromise=require(_0x51d3('0x0'));var server=require(_0x51d3('0x1'));var Realtime=require('./realtime');var user=require('./rpc/user');var interval=require(_0x51d3('0x2'));var openchannelQueue=require(_0x51d3('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x51d3('0x4'));var mailQueue=require(_0x51d3('0x5'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x51d3('0x6'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x51d3('0x7')]()['then'](user[_0x51d3('0x8')]())[_0x51d3('0x9')](realtime[_0x51d3('0xa')]())['then'](interval[_0x51d3('0xb')]())[_0x51d3('0x9')](realtime[_0x51d3('0xc')]())[_0x51d3('0x9')](openchannelQueue[_0x51d3('0xd')]())[_0x51d3('0x9')](realtime[_0x51d3('0xe')]())[_0x51d3('0x9')](chatQueue[_0x51d3('0xf')]())[_0x51d3('0x9')](realtime['initChatQueues']())[_0x51d3('0x9')](smsQueue['getSmsQueues']())[_0x51d3('0x9')](realtime[_0x51d3('0x10')]())[_0x51d3('0x9')](mailQueue[_0x51d3('0x11')]())['then'](realtime['initMailQueues']())[_0x51d3('0x9')](faxQueue['getFaxQueues']())[_0x51d3('0x9')](realtime[_0x51d3('0x12')]())[_0x51d3('0x9')](whatsappQueue[_0x51d3('0x13')]())['then'](realtime[_0x51d3('0x14')]())['then'](function(){return realtime;});}function main(){return server[_0x51d3('0x15')](realtime)[_0x51d3('0x9')](function(_0x15e2af){return initRealtime();})['then'](function(_0x3c8a94){return setInterval(initRealtime,0x1388);})[_0x51d3('0x16')](function(_0x2260ec){console['log'](_0x2260ec);});}main();
\ No newline at end of file
+var _0x64df=['./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','resolve','then','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','log','./server'];(function(_0x1fa828,_0x26da0f){var _0x3eb151=function(_0x253927){while(--_0x253927){_0x1fa828['push'](_0x1fa828['shift']());}};_0x3eb151(++_0x26da0f);}(_0x64df,0x1df));var _0xf64d=function(_0x21ddfe,_0x4b0d5c){_0x21ddfe=_0x21ddfe-0x0;var _0x5e086f=_0x64df[_0x21ddfe];return _0x5e086f;};'use strict';var BPromise=require('bluebird');var server=require(_0xf64d('0x0'));var Realtime=require(_0xf64d('0x1'));var user=require(_0xf64d('0x2'));var interval=require(_0xf64d('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0xf64d('0x4'));var smsQueue=require(_0xf64d('0x5'));var mailQueue=require(_0xf64d('0x6'));var faxQueue=require(_0xf64d('0x7'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0xf64d('0x8')]()[_0xf64d('0x9')](user['getAgents']())['then'](realtime['initAgents']())[_0xf64d('0x9')](interval['getIntervals']())['then'](realtime['initIntervals']())[_0xf64d('0x9')](openchannelQueue[_0xf64d('0xa')]())['then'](realtime[_0xf64d('0xb')]())['then'](chatQueue[_0xf64d('0xc')]())[_0xf64d('0x9')](realtime[_0xf64d('0xd')]())[_0xf64d('0x9')](smsQueue[_0xf64d('0xe')]())[_0xf64d('0x9')](realtime[_0xf64d('0xf')]())['then'](mailQueue[_0xf64d('0x10')]())[_0xf64d('0x9')](realtime[_0xf64d('0x11')]())[_0xf64d('0x9')](faxQueue[_0xf64d('0x12')]())[_0xf64d('0x9')](realtime[_0xf64d('0x13')]())[_0xf64d('0x9')](whatsappQueue[_0xf64d('0x14')]())[_0xf64d('0x9')](realtime[_0xf64d('0x15')]())[_0xf64d('0x9')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0xf64d('0x9')](function(_0x2cad56){return initRealtime();})['then'](function(_0x548885){return setInterval(initRealtime,0x1388);})[_0xf64d('0x16')](function(_0x130c1f){console[_0xf64d('0x17')](_0x130c1f);});}main();
\ No newline at end of file
index 0e8ddce..cd96515 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(_0x113bc1,_0x200ad4){var _0x39abbe=function(_0x5053d6){while(--_0x5053d6){_0x113bc1['push'](_0x113bc1['shift']());}};_0x39abbe(++_0x200ad4);}(_0x326f,0xd1));var _0xf326=function(_0x2f0629,_0x391a89){_0x2f0629=_0x2f0629-0x0;var _0x25a916=_0x326f[_0x2f0629];return _0x25a916;};'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(_0x97a80f,_0x3d70d7){var _0x534071=function(_0xd8966e){while(--_0xd8966e){_0x97a80f['push'](_0x97a80f['shift']());}};_0x534071(++_0x3d70d7);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5a19fc,_0x58f9f4){_0x5a19fc=_0x5a19fc-0x0;var _0x34b413=_0x5fc3[_0x5a19fc];return _0x34b413;};'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 20785de..b85478a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd031=['client','then','error','message','catch','sendMailMessage','SendMail'];(function(_0x19c05b,_0x83797b){var _0x5e99ca=function(_0x1e9984){while(--_0x1e9984){_0x19c05b['push'](_0x19c05b['shift']());}};_0x5e99ca(++_0x83797b);}(_0xd031,0x181));var _0x1d03=function(_0x539a2f,_0x40a061){_0x539a2f=_0x539a2f-0x0;var _0x131e3e=_0xd031[_0x539a2f];return _0x131e3e;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x1d03('0x0')]['http']({'port':0x232b});function request(_0x5497de,_0x331f4d){return new BPromise(function(_0x1635df,_0x60f0c7){return client['request'](_0x5497de,_0x331f4d)[_0x1d03('0x1')](function(_0x4c979d){if(_0x4c979d[_0x1d03('0x2')]){return _0x60f0c7(_0x4c979d[_0x1d03('0x2')][_0x1d03('0x3')]);}else{return _0x1635df(_0x4c979d['result']);}})[_0x1d03('0x4')](function(_0x547ff9){return _0x60f0c7(_0x547ff9);});});}exports[_0x1d03('0x5')]=function(_0x11ac43,_0xdbc73b){return request(_0x1d03('0x6'),{'account':_0x11ac43,'message':_0xdbc73b});};
\ No newline at end of file
+var _0x77f0=['message','result','catch','sendMailMessage','SendMail','jayson/promise','request','then','error'];(function(_0x1d5774,_0x346aad){var _0x204244=function(_0x17c011){while(--_0x17c011){_0x1d5774['push'](_0x1d5774['shift']());}};_0x204244(++_0x346aad);}(_0x77f0,0x1a3));var _0x077f=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0x77f0[_0x576170];return _0x397c70;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x077f('0x0'));var client=jayson['client']['http']({'port':0x232b});function request(_0x216794,_0x41d2bc){return new BPromise(function(_0x58993a,_0xfbc773){return client[_0x077f('0x1')](_0x216794,_0x41d2bc)[_0x077f('0x2')](function(_0x564989){if(_0x564989[_0x077f('0x3')]){return _0xfbc773(_0x564989[_0x077f('0x3')][_0x077f('0x4')]);}else{return _0x58993a(_0x564989[_0x077f('0x5')]);}})[_0x077f('0x6')](function(_0x2e7cc8){return _0xfbc773(_0x2e7cc8);});});}exports[_0x077f('0x7')]=function(_0x1e3a63,_0x4cfbca){return request(_0x077f('0x8'),{'account':_0x1e3a63,'message':_0x4cfbca});};
\ No newline at end of file
index 2ff8f2f..4674852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3b2=['toNumber','smsPause','chatCurrentCapacity','smsCurrentCapacity','stringify','emit','user:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','CurrentCapacity','Capacity','working','fax','sms','whatsapp','length','getChannelStatus','Status'];(function(_0x246276,_0x3ad78e){var _0x577d66=function(_0x33330b){while(--_0x33330b){_0x246276['push'](_0x246276['shift']());}};_0x577d66(++_0x3ad78e);}(_0xf3b2,0x152));var _0x2f3b=function(_0x10cfc2,_0x88b59d){_0x10cfc2=_0x10cfc2-0x0;var _0x25b436=_0xf3b2[_0x10cfc2];return _0x25b436;};'use strict';var _=require(_0x2f3b('0x0'));var moment=require('moment');var md5=require(_0x2f3b('0x1'));var Redis=require(_0x2f3b('0x2'));var config=require(_0x2f3b('0x3'));config[_0x2f3b('0x4')]=_[_0x2f3b('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x2f3b('0x6'))(new Redis(config[_0x2f3b('0x4')]));function Agent(_0x47e3cf){this['id']=_0x47e3cf['id']||0x0;this[_0x2f3b('0x7')]=_0x47e3cf[_0x2f3b('0x7')]||'';this[_0x2f3b('0x8')]=_0x47e3cf[_0x2f3b('0x8')]||!![];this[_0x2f3b('0x9')]=_0x47e3cf[_0x2f3b('0x9')]||![];this[_0x2f3b('0xa')]=_0x47e3cf[_0x2f3b('0xa')]||![];this[_0x2f3b('0xb')]=_0x47e3cf[_0x2f3b('0xb')]||![];this['faxPause']=_0x47e3cf[_0x2f3b('0xc')]||![];this['smsPause']=_0x47e3cf['smsPause']||![];this[_0x2f3b('0xd')]=_0x47e3cf[_0x2f3b('0xd')]||![];this[_0x2f3b('0xe')]='unknown';this[_0x2f3b('0xf')]=0x0;this['chatCapacity']=_0x47e3cf[_0x2f3b('0x10')]||0x0;this['chatCurrentCapacity']=0x0;this['mailStatus']=_0x2f3b('0x11');this[_0x2f3b('0x12')]=0x0;this['mailCapacity']=_0x47e3cf[_0x2f3b('0x13')]||0x0;this[_0x2f3b('0x14')]=0x0;this['faxStatus']=_0x2f3b('0x11');this[_0x2f3b('0x15')]=0x0;this[_0x2f3b('0x16')]=_0x47e3cf[_0x2f3b('0x16')]||0x0;this[_0x2f3b('0x17')]=0x0;this[_0x2f3b('0x18')]=_0x2f3b('0x11');this[_0x2f3b('0x19')]=0x0;this[_0x2f3b('0x1a')]=_0x47e3cf[_0x2f3b('0x1a')]||0x0;this['smsCurrentCapacity']=0x0;this[_0x2f3b('0x1b')]='unknown';this[_0x2f3b('0x1c')]=0x0;this[_0x2f3b('0x1d')]=_0x47e3cf[_0x2f3b('0x1d')]||0x0;this[_0x2f3b('0x1e')]=0x0;this['openchannelStatus']=_0x2f3b('0x11');this[_0x2f3b('0x1f')]=0x0;this[_0x2f3b('0x20')]=_0x47e3cf[_0x2f3b('0x20')]||0x0;this[_0x2f3b('0x21')]=0x0;this[_0x2f3b('0x22')]=![];this[_0x2f3b('0x23')]=undefined;this[_0x2f3b('0x1')]='';this[_0x2f3b('0x24')]();}Agent[_0x2f3b('0x25')]['getChannelStatus']=function(_0x59023a){if(this[_0x59023a+_0x2f3b('0x26')]>0x0){if(this[_0x59023a+'Capacity']>0x0&&this[_0x59023a+_0x2f3b('0x26')]>=this[_0x59023a+_0x2f3b('0x27')]){return'maxcapacity';}else{return _0x2f3b('0x28');}}else{return'idle';}};Agent[_0x2f3b('0x25')][_0x2f3b('0x24')]=function(){var _0x3b7153=['mail','chat','openchannel',_0x2f3b('0x29'),_0x2f3b('0x2a'),_0x2f3b('0x2b')];for(var _0x8d2e52=0x0;_0x8d2e52<_0x3b7153[_0x2f3b('0x2c')];_0x8d2e52+=0x1){var _0x1300dc=this[_0x2f3b('0x2d')](_0x3b7153[_0x8d2e52]);if(this[_0x3b7153[_0x8d2e52]+_0x2f3b('0x2e')]!==_0x1300dc){this[_0x3b7153[_0x8d2e52]+'StatusTime']=_[_0x2f3b('0x2f')](moment()['format']('x'));}this[_0x3b7153[_0x8d2e52]+'Status']=_0x1300dc;}var _0x4d9e5f={'id':this['id'],'name':this[_0x2f3b('0x7')],'online':this[_0x2f3b('0x8')],'voicePause':this[_0x2f3b('0x9')],'chatPause':this[_0x2f3b('0xa')],'mailPause':this['mailPause'],'smsPause':this[_0x2f3b('0x30')],'faxPause':this[_0x2f3b('0xc')],'openchannelPause':this[_0x2f3b('0xd')],'chatStatus':this[_0x2f3b('0xe')],'chatStatusTime':this[_0x2f3b('0xf')],'chatCapacity':this[_0x2f3b('0x10')],'chatCurrentCapacity':this[_0x2f3b('0x31')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x2f3b('0x12')],'mailCapacity':this[_0x2f3b('0x13')],'mailCurrentCapacity':this[_0x2f3b('0x14')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x2f3b('0x15')],'faxCapacity':this[_0x2f3b('0x16')],'faxCurrentCapacity':this[_0x2f3b('0x17')],'smsStatus':this[_0x2f3b('0x18')],'smsStatusTime':this[_0x2f3b('0x19')],'smsCapacity':this[_0x2f3b('0x1a')],'smsCurrentCapacity':this[_0x2f3b('0x32')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x2f3b('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x2f3b('0x1f')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x2f3b('0x21')],'busy':this[_0x2f3b('0x22')],'busyQueue':this[_0x2f3b('0x23')]};var _0x134b02=md5(JSON[_0x2f3b('0x33')](_0x4d9e5f));if(this[_0x2f3b('0x1')]!==_0x134b02){this['md5']=_0x134b02;io[_0x2f3b('0x34')](_0x2f3b('0x35'),_0x4d9e5f);}};module[_0x2f3b('0x36')]=Agent;
\ No newline at end of file
+var _0x15ad=['redis','defaults','socket.io-emitter','name','online','voicePause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','chat','openchannel','sms','length','Status','toNumber','format','chatPause','whatsappStatus','whatsappCurrentCapacity','stringify','md5','emit','user:save','exports','lodash','../../../config/environment'];(function(_0x236d47,_0x520317){var _0x3a2bc3=function(_0x3dee15){while(--_0x3dee15){_0x236d47['push'](_0x236d47['shift']());}};_0x3a2bc3(++_0x520317);}(_0x15ad,0xb2));var _0xd15a=function(_0x27f344,_0x480f24){_0x27f344=_0x27f344-0x0;var _0x3ff9d1=_0x15ad[_0x27f344];return _0x3ff9d1;};'use strict';var _=require(_0xd15a('0x0'));var moment=require('moment');var md5=require('md5');var Redis=require('ioredis');var config=require(_0xd15a('0x1'));config[_0xd15a('0x2')]=_[_0xd15a('0x3')](config[_0xd15a('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0xd15a('0x4'))(new Redis(config[_0xd15a('0x2')]));function Agent(_0x3c3b91){this['id']=_0x3c3b91['id']||0x0;this[_0xd15a('0x5')]=_0x3c3b91[_0xd15a('0x5')]||'';this['online']=_0x3c3b91[_0xd15a('0x6')]||!![];this[_0xd15a('0x7')]=_0x3c3b91['voicePause']||![];this['chatPause']=_0x3c3b91['chatPause']||![];this[_0xd15a('0x8')]=_0x3c3b91[_0xd15a('0x8')]||![];this[_0xd15a('0x9')]=_0x3c3b91[_0xd15a('0x9')]||![];this[_0xd15a('0xa')]=_0x3c3b91[_0xd15a('0xa')]||![];this[_0xd15a('0xb')]=_0x3c3b91['openchannelPause']||![];this[_0xd15a('0xc')]='unknown';this[_0xd15a('0xd')]=0x0;this[_0xd15a('0xe')]=_0x3c3b91[_0xd15a('0xe')]||0x0;this[_0xd15a('0xf')]=0x0;this[_0xd15a('0x10')]=_0xd15a('0x11');this[_0xd15a('0x12')]=0x0;this[_0xd15a('0x13')]=_0x3c3b91[_0xd15a('0x13')]||0x0;this[_0xd15a('0x14')]=0x0;this[_0xd15a('0x15')]=_0xd15a('0x11');this[_0xd15a('0x16')]=0x0;this[_0xd15a('0x17')]=_0x3c3b91['faxCapacity']||0x0;this[_0xd15a('0x18')]=0x0;this[_0xd15a('0x19')]=_0xd15a('0x11');this[_0xd15a('0x1a')]=0x0;this[_0xd15a('0x1b')]=_0x3c3b91[_0xd15a('0x1b')]||0x0;this[_0xd15a('0x1c')]=0x0;this['whatsappStatus']=_0xd15a('0x11');this[_0xd15a('0x1d')]=0x0;this['whatsappCapacity']=_0x3c3b91[_0xd15a('0x1e')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0xd15a('0x1f')]=_0xd15a('0x11');this[_0xd15a('0x20')]=0x0;this['openchannelCapacity']=_0x3c3b91[_0xd15a('0x21')]||0x0;this[_0xd15a('0x22')]=0x0;this[_0xd15a('0x23')]=![];this[_0xd15a('0x24')]=undefined;this['md5']='';this['updateRealtime']();}Agent[_0xd15a('0x25')][_0xd15a('0x26')]=function(_0x260a6f){if(this[_0x260a6f+_0xd15a('0x27')]>0x0){if(this[_0x260a6f+'Capacity']>0x0&&this[_0x260a6f+_0xd15a('0x27')]>=this[_0x260a6f+_0xd15a('0x28')]){return _0xd15a('0x29');}else{return _0xd15a('0x2a');}}else{return _0xd15a('0x2b');}};Agent[_0xd15a('0x25')][_0xd15a('0x2c')]=function(){var _0x50b477=['mail',_0xd15a('0x2d'),_0xd15a('0x2e'),'fax',_0xd15a('0x2f'),'whatsapp'];for(var _0x48d184=0x0;_0x48d184<_0x50b477[_0xd15a('0x30')];_0x48d184+=0x1){var _0x418c78=this[_0xd15a('0x26')](_0x50b477[_0x48d184]);if(this[_0x50b477[_0x48d184]+_0xd15a('0x31')]!==_0x418c78){this[_0x50b477[_0x48d184]+'StatusTime']=_[_0xd15a('0x32')](moment()[_0xd15a('0x33')]('x'));}this[_0x50b477[_0x48d184]+'Status']=_0x418c78;}var _0x226901={'id':this['id'],'name':this[_0xd15a('0x5')],'online':this[_0xd15a('0x6')],'voicePause':this[_0xd15a('0x7')],'chatPause':this[_0xd15a('0x34')],'mailPause':this[_0xd15a('0x8')],'smsPause':this[_0xd15a('0xa')],'faxPause':this[_0xd15a('0x9')],'openchannelPause':this[_0xd15a('0xb')],'chatStatus':this[_0xd15a('0xc')],'chatStatusTime':this[_0xd15a('0xd')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xd15a('0x10')],'mailStatusTime':this[_0xd15a('0x12')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xd15a('0x14')],'faxStatus':this[_0xd15a('0x15')],'faxStatusTime':this[_0xd15a('0x16')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0xd15a('0x18')],'smsStatus':this[_0xd15a('0x19')],'smsStatusTime':this[_0xd15a('0x1a')],'smsCapacity':this[_0xd15a('0x1b')],'smsCurrentCapacity':this[_0xd15a('0x1c')],'whatsappStatus':this[_0xd15a('0x35')],'whatsappStatusTime':this[_0xd15a('0x1d')],'whatsappCapacity':this[_0xd15a('0x1e')],'whatsappCurrentCapacity':this[_0xd15a('0x36')],'openchannelStatus':this[_0xd15a('0x1f')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xd15a('0x21')],'openchannelCurrentCapacity':this[_0xd15a('0x22')],'busy':this[_0xd15a('0x23')],'busyQueue':this['busyQueue']};var _0x76eda1=md5(JSON[_0xd15a('0x37')](_0x226901));if(this[_0xd15a('0x38')]!==_0x76eda1){this[_0xd15a('0x38')]=_0x76eda1;io[_0xd15a('0x39')](_0xd15a('0x3a'),_0x226901);}};module[_0xd15a('0x3b')]=Agent;
\ No newline at end of file
index 8fccf51..7d2a8b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6a2=['socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','length','online','paused','available','loggedIn','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost'];(function(_0x4e566d,_0x173758){var _0x2f4185=function(_0x58e789){while(--_0x58e789){_0x4e566d['push'](_0x4e566d['shift']());}};_0x2f4185(++_0x173758);}(_0xf6a2,0xbd));var _0x2f6a=function(_0x590851,_0x496bee){_0x590851=_0x590851-0x0;var _0x3b0115=_0xf6a2[_0x590851];return _0x3b0115;};'use strict';var _=require(_0x2f6a('0x0'));var md5=require(_0x2f6a('0x1'));var util=require(_0x2f6a('0x2'));var Redis=require(_0x2f6a('0x3'));var config=require(_0x2f6a('0x4'));config[_0x2f6a('0x5')]=_['defaults'](config['redis'],{'host':_0x2f6a('0x6'),'port':0x18eb});var io=require(_0x2f6a('0x7'))(new Redis(config[_0x2f6a('0x5')]));function ChatQueue(_0x5815fd){this['id']=_0x5815fd['id']||0x0;this[_0x2f6a('0x8')]=_0x5815fd['name']||'';this[_0x2f6a('0x9')]=_0x5815fd[_0x2f6a('0x9')]||0xa;this[_0x2f6a('0xa')]=_0x5815fd['strategy']||_0x2f6a('0xb');this['Agents']=_0x5815fd[_0x2f6a('0xc')];this[_0x2f6a('0xd')]={};this[_0x2f6a('0xe')]=0x0;this[_0x2f6a('0x1')]='';this[_0x2f6a('0xf')]();this[_0x2f6a('0x10')]();}ChatQueue['prototype'][_0x2f6a('0xf')]=function(){var _0x1f65db=this[_0x2f6a('0xd')]['_rr'];this[_0x2f6a('0xd')]=_['map'](this[_0x2f6a('0xc')],'id');this[_0x2f6a('0xd')]['_rr']=_0x1f65db;};ChatQueue[_0x2f6a('0x11')][_0x2f6a('0x10')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x44608e=0x0;_0x44608e<this[_0x2f6a('0xc')][_0x2f6a('0x12')];_0x44608e+=0x1){if(this[_0x2f6a('0xc')][_0x44608e][_0x2f6a('0x13')]){this['loggedIn']+=0x1;}if(this[_0x2f6a('0xc')][_0x44608e]['chatPause']){this[_0x2f6a('0x14')]+=0x1;}}this[_0x2f6a('0x15')]=this[_0x2f6a('0x16')]-this[_0x2f6a('0x14')];this[_0x2f6a('0x15')]=this[_0x2f6a('0x15')]>=0x0?this[_0x2f6a('0x15')]:0x0;var _0x1f05b8={'id':this['id'],'available':this[_0x2f6a('0x15')],'loggedIn':this[_0x2f6a('0x16')],'name':this[_0x2f6a('0x8')],'paused':this[_0x2f6a('0x14')],'waiting':this[_0x2f6a('0xe')]};var _0x5e9b3d=md5(JSON['stringify'](_0x1f05b8));if(this[_0x2f6a('0x1')]!==_0x5e9b3d){this['md5']=_0x5e9b3d;io['to'](util[_0x2f6a('0x17')](_0x2f6a('0x18'),_0x1f05b8[_0x2f6a('0x8')]))[_0x2f6a('0x19')](_0x2f6a('0x1a'),_0x1f05b8);}};module[_0x2f6a('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0xdb42=['available','stringify','format','chat:queue:%s','emit','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','_rr','map','prototype','updateRealtime','loggedIn','length','online','chatPause','paused'];(function(_0x36597c,_0x480d7d){var _0x6ddc8f=function(_0x38138c){while(--_0x38138c){_0x36597c['push'](_0x36597c['shift']());}};_0x6ddc8f(++_0x480d7d);}(_0xdb42,0x19b));var _0x2db4=function(_0x6ba418,_0x53fe35){_0x6ba418=_0x6ba418-0x0;var _0x4d941a=_0xdb42[_0x6ba418];return _0x4d941a;};'use strict';var _=require(_0x2db4('0x0'));var md5=require(_0x2db4('0x1'));var util=require('util');var Redis=require(_0x2db4('0x2'));var config=require(_0x2db4('0x3'));config[_0x2db4('0x4')]=_[_0x2db4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x2db4('0x6'))(new Redis(config[_0x2db4('0x4')]));function ChatQueue(_0x3cc721){this['id']=_0x3cc721['id']||0x0;this[_0x2db4('0x7')]=_0x3cc721[_0x2db4('0x7')]||'';this['timeout']=_0x3cc721[_0x2db4('0x8')]||0xa;this[_0x2db4('0x9')]=_0x3cc721[_0x2db4('0x9')]||_0x2db4('0xa');this[_0x2db4('0xb')]=_0x3cc721[_0x2db4('0xb')];this[_0x2db4('0xc')]={};this[_0x2db4('0xd')]=0x0;this['md5']='';this[_0x2db4('0xe')]();this['updateRealtime']();}ChatQueue['prototype'][_0x2db4('0xe')]=function(){var _0x55062d=this['mapAgentsId'][_0x2db4('0xf')];this[_0x2db4('0xc')]=_[_0x2db4('0x10')](this['Agents'],'id');this[_0x2db4('0xc')][_0x2db4('0xf')]=_0x55062d;};ChatQueue[_0x2db4('0x11')][_0x2db4('0x12')]=function(){this[_0x2db4('0x13')]=0x0;this['paused']=0x0;for(var _0x152af0=0x0;_0x152af0<this[_0x2db4('0xb')][_0x2db4('0x14')];_0x152af0+=0x1){if(this[_0x2db4('0xb')][_0x152af0][_0x2db4('0x15')]){this[_0x2db4('0x13')]+=0x1;}if(this[_0x2db4('0xb')][_0x152af0][_0x2db4('0x16')]){this[_0x2db4('0x17')]+=0x1;}}this[_0x2db4('0x18')]=this['loggedIn']-this[_0x2db4('0x17')];this[_0x2db4('0x18')]=this[_0x2db4('0x18')]>=0x0?this[_0x2db4('0x18')]:0x0;var _0x3173e0={'id':this['id'],'available':this['available'],'loggedIn':this[_0x2db4('0x13')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x2db4('0xd')]};var _0x153608=md5(JSON[_0x2db4('0x19')](_0x3173e0));if(this[_0x2db4('0x1')]!==_0x153608){this[_0x2db4('0x1')]=_0x153608;io['to'](util[_0x2db4('0x1a')](_0x2db4('0x1b'),_0x3173e0[_0x2db4('0x7')]))[_0x2db4('0x1c')]('chat_queue:save',_0x3173e0);}};module['exports']=ChatQueue;
\ No newline at end of file
index 2dfee20..6d08723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f84=['mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','prototype','loggedIn','length','online','faxPause','paused','available','stringify','format','emit','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents'];(function(_0x328638,_0x1ae9a3){var _0x734217=function(_0x258159){while(--_0x258159){_0x328638['push'](_0x328638['shift']());}};_0x734217(++_0x1ae9a3);}(_0x0f84,0x89));var _0x40f8=function(_0x3f5485,_0x1d2e2d){_0x3f5485=_0x3f5485-0x0;var _0xf3cad7=_0x0f84[_0x3f5485];return _0xf3cad7;};'use strict';var _=require('lodash');var md5=require(_0x40f8('0x0'));var util=require(_0x40f8('0x1'));var Redis=require(_0x40f8('0x2'));var config=require(_0x40f8('0x3'));config[_0x40f8('0x4')]=_[_0x40f8('0x5')](config[_0x40f8('0x4')],{'host':_0x40f8('0x6'),'port':0x18eb});var io=require(_0x40f8('0x7'))(new Redis(config[_0x40f8('0x4')]));function FaxQueue(_0x4a12ee){this['id']=_0x4a12ee['id']||0x0;this[_0x40f8('0x8')]=_0x4a12ee['name']||'';this['timeout']=_0x4a12ee[_0x40f8('0x9')]||0xa;this['strategy']=_0x4a12ee[_0x40f8('0xa')]||_0x40f8('0xb');this[_0x40f8('0xc')]=_0x4a12ee[_0x40f8('0xc')];this[_0x40f8('0xd')]={};this[_0x40f8('0xe')]=0x0;this['md5']='';this[_0x40f8('0xf')]();this[_0x40f8('0x10')]();}FaxQueue['prototype'][_0x40f8('0xf')]=function(){var _0x53485e=this['mapAgentsId'][_0x40f8('0x11')];this[_0x40f8('0xd')]=_[_0x40f8('0x12')](this['Agents'],'id');this[_0x40f8('0xd')][_0x40f8('0x11')]=_0x53485e;};FaxQueue[_0x40f8('0x13')]['updateRealtime']=function(){this[_0x40f8('0x14')]=0x0;this['paused']=0x0;for(var _0x33c216=0x0;_0x33c216<this[_0x40f8('0xc')][_0x40f8('0x15')];_0x33c216+=0x1){if(this[_0x40f8('0xc')][_0x33c216][_0x40f8('0x16')]){this[_0x40f8('0x14')]+=0x1;}if(this['Agents'][_0x33c216][_0x40f8('0x17')]){this[_0x40f8('0x18')]+=0x1;}}this['available']=this[_0x40f8('0x14')]-this[_0x40f8('0x18')];this['available']=this[_0x40f8('0x19')]>=0x0?this[_0x40f8('0x19')]:0x0;var _0x3d51dc={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0x40f8('0x8')],'paused':this['paused'],'waiting':this[_0x40f8('0xe')]};var _0xe24f0=md5(JSON[_0x40f8('0x1a')](_0x3d51dc));if(this['md5']!==_0xe24f0){this[_0x40f8('0x0')]=_0xe24f0;io['to'](util[_0x40f8('0x1b')]('fax:queue:%s',_0x3d51dc[_0x40f8('0x8')]))[_0x40f8('0x1c')]('fax_queue:save',_0x3d51dc);}};module[_0x40f8('0x1d')]=FaxQueue;
\ No newline at end of file
+var _0xdd0b=['redis','defaults','localhost','socket.io-emitter','name','strategy','beepall','Agents','waiting','md5','updateRouting','updateRealtime','_rr','mapAgentsId','prototype','paused','length','online','faxPause','available','loggedIn','stringify','format','fax:queue:%s','fax_queue:save','exports','lodash','util','ioredis','../../../config/environment'];(function(_0x13f980,_0x1e1c56){var _0x27153c=function(_0x3953d5){while(--_0x3953d5){_0x13f980['push'](_0x13f980['shift']());}};_0x27153c(++_0x1e1c56);}(_0xdd0b,0x164));var _0xbdd0=function(_0x596207,_0x1fc5c3){_0x596207=_0x596207-0x0;var _0x35a7b7=_0xdd0b[_0x596207];return _0x35a7b7;};'use strict';var _=require(_0xbdd0('0x0'));var md5=require('md5');var util=require(_0xbdd0('0x1'));var Redis=require(_0xbdd0('0x2'));var config=require(_0xbdd0('0x3'));config[_0xbdd0('0x4')]=_[_0xbdd0('0x5')](config[_0xbdd0('0x4')],{'host':_0xbdd0('0x6'),'port':0x18eb});var io=require(_0xbdd0('0x7'))(new Redis(config[_0xbdd0('0x4')]));function FaxQueue(_0x146fb2){this['id']=_0x146fb2['id']||0x0;this[_0xbdd0('0x8')]=_0x146fb2[_0xbdd0('0x8')]||'';this['timeout']=_0x146fb2['timeout']||0xa;this[_0xbdd0('0x9')]=_0x146fb2[_0xbdd0('0x9')]||_0xbdd0('0xa');this[_0xbdd0('0xb')]=_0x146fb2[_0xbdd0('0xb')];this['mapAgentsId']={};this[_0xbdd0('0xc')]=0x0;this[_0xbdd0('0xd')]='';this[_0xbdd0('0xe')]();this[_0xbdd0('0xf')]();}FaxQueue['prototype'][_0xbdd0('0xe')]=function(){var _0x109ba0=this['mapAgentsId'][_0xbdd0('0x10')];this[_0xbdd0('0x11')]=_['map'](this[_0xbdd0('0xb')],'id');this[_0xbdd0('0x11')][_0xbdd0('0x10')]=_0x109ba0;};FaxQueue[_0xbdd0('0x12')][_0xbdd0('0xf')]=function(){this['loggedIn']=0x0;this[_0xbdd0('0x13')]=0x0;for(var _0x4e899f=0x0;_0x4e899f<this[_0xbdd0('0xb')][_0xbdd0('0x14')];_0x4e899f+=0x1){if(this['Agents'][_0x4e899f][_0xbdd0('0x15')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4e899f][_0xbdd0('0x16')]){this[_0xbdd0('0x13')]+=0x1;}}this[_0xbdd0('0x17')]=this[_0xbdd0('0x18')]-this[_0xbdd0('0x13')];this[_0xbdd0('0x17')]=this['available']>=0x0?this['available']:0x0;var _0x54e1e3={'id':this['id'],'available':this[_0xbdd0('0x17')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x1878f2=md5(JSON[_0xbdd0('0x19')](_0x54e1e3));if(this[_0xbdd0('0xd')]!==_0x1878f2){this[_0xbdd0('0xd')]=_0x1878f2;io['to'](util[_0xbdd0('0x1a')](_0xbdd0('0x1b'),_0x54e1e3[_0xbdd0('0x8')]))['emit'](_0xbdd0('0x1c'),_0x54e1e3);}};module[_0xbdd0('0x1d')]=FaxQueue;
\ No newline at end of file
index 7eae523..b33dcad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcb3=['exports','name','Intervals'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfcb3,0x196));var _0x3fcb=function(_0x14c71e,_0x58d3dc){_0x14c71e=_0x14c71e-0x0;var _0x22333e=_0xfcb3[_0x14c71e];return _0x22333e;};'use strict';function Interval(_0x5abccb){this['id']=_0x5abccb['id']||0x0;this[_0x3fcb('0x0')]=_0x5abccb[_0x3fcb('0x0')]||'';this[_0x3fcb('0x1')]=_0x5abccb[_0x3fcb('0x1')]||{};}module[_0x3fcb('0x2')]=Interval;
\ No newline at end of file
+var _0x0a64=['name','Intervals'];(function(_0x566661,_0x3ef886){var _0x2d07d9=function(_0x3badd1){while(--_0x3badd1){_0x566661['push'](_0x566661['shift']());}};_0x2d07d9(++_0x3ef886);}(_0x0a64,0xf2));var _0x40a6=function(_0x3c19ca,_0x131d1c){_0x3c19ca=_0x3c19ca-0x0;var _0x425bee=_0x0a64[_0x3c19ca];return _0x425bee;};'use strict';function Interval(_0x303d3d){this['id']=_0x303d3d['id']||0x0;this[_0x40a6('0x0')]=_0x303d3d['name']||'';this[_0x40a6('0x1')]=_0x303d3d[_0x40a6('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index aedc118..3aafff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x719f=['loggedIn','paused','length','online','mailPause','available','waiting','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','name','timeout','strategy','Agents','updateRouting','updateRealtime','mapAgentsId','_rr','map'];(function(_0x2d51c4,_0x1f7268){var _0x308793=function(_0xd0a214){while(--_0xd0a214){_0x2d51c4['push'](_0x2d51c4['shift']());}};_0x308793(++_0x1f7268);}(_0x719f,0xdf));var _0xf719=function(_0x382c73,_0x199cab){_0x382c73=_0x382c73-0x0;var _0x1dd0bf=_0x719f[_0x382c73];return _0x1dd0bf;};'use strict';var _=require(_0xf719('0x0'));var md5=require(_0xf719('0x1'));var util=require(_0xf719('0x2'));var Redis=require(_0xf719('0x3'));var config=require(_0xf719('0x4'));config['redis']=_[_0xf719('0x5')](config[_0xf719('0x6')],{'host':_0xf719('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf719('0x6')]));function MailQueue(_0x10db5b){this['id']=_0x10db5b['id']||0x0;this[_0xf719('0x8')]=_0x10db5b[_0xf719('0x8')]||'';this[_0xf719('0x9')]=_0x10db5b[_0xf719('0x9')]||0xa;this[_0xf719('0xa')]=_0x10db5b[_0xf719('0xa')]||'beepall';this[_0xf719('0xb')]=_0x10db5b[_0xf719('0xb')];this['mapAgentsId']={};this['waiting']=0x0;this[_0xf719('0x1')]='';this[_0xf719('0xc')]();this[_0xf719('0xd')]();}MailQueue['prototype'][_0xf719('0xc')]=function(){var _0x5995d4=this[_0xf719('0xe')][_0xf719('0xf')];this[_0xf719('0xe')]=_[_0xf719('0x10')](this['Agents'],'id');this[_0xf719('0xe')][_0xf719('0xf')]=_0x5995d4;};MailQueue['prototype']['updateRealtime']=function(){this[_0xf719('0x11')]=0x0;this[_0xf719('0x12')]=0x0;for(var _0xb7225=0x0;_0xb7225<this[_0xf719('0xb')][_0xf719('0x13')];_0xb7225+=0x1){if(this[_0xf719('0xb')][_0xb7225][_0xf719('0x14')]){this[_0xf719('0x11')]+=0x1;}if(this['Agents'][_0xb7225][_0xf719('0x15')]){this['paused']+=0x1;}}this[_0xf719('0x16')]=this[_0xf719('0x11')]-this[_0xf719('0x12')];this['available']=this[_0xf719('0x16')]>=0x0?this[_0xf719('0x16')]:0x0;var _0x5bc401={'id':this['id'],'available':this[_0xf719('0x16')],'loggedIn':this[_0xf719('0x11')],'name':this['name'],'paused':this[_0xf719('0x12')],'waiting':this[_0xf719('0x17')]};var _0x5d4028=md5(JSON[_0xf719('0x18')](_0x5bc401));if(this[_0xf719('0x1')]!==_0x5d4028){this[_0xf719('0x1')]=_0x5d4028;io['to'](util[_0xf719('0x19')](_0xf719('0x1a'),_0x5bc401[_0xf719('0x8')]))[_0xf719('0x1b')](_0xf719('0x1c'),_0x5bc401);}};module[_0xf719('0x1d')]=MailQueue;
\ No newline at end of file
+var _0x0cd8=['loggedIn','mailPause','available','stringify','format','mail:queue:%s','emit','mail_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','updateRouting','_rr','prototype','paused','length','online'];(function(_0x293fa7,_0x1bdf5c){var _0x3f54dc=function(_0x465ae5){while(--_0x465ae5){_0x293fa7['push'](_0x293fa7['shift']());}};_0x3f54dc(++_0x1bdf5c);}(_0x0cd8,0x170));var _0x80cd=function(_0x370f8c,_0x419047){_0x370f8c=_0x370f8c-0x0;var _0x510c5b=_0x0cd8[_0x370f8c];return _0x510c5b;};'use strict';var _=require(_0x80cd('0x0'));var md5=require(_0x80cd('0x1'));var util=require(_0x80cd('0x2'));var Redis=require(_0x80cd('0x3'));var config=require(_0x80cd('0x4'));config[_0x80cd('0x5')]=_[_0x80cd('0x6')](config[_0x80cd('0x5')],{'host':_0x80cd('0x7'),'port':0x18eb});var io=require(_0x80cd('0x8'))(new Redis(config[_0x80cd('0x5')]));function MailQueue(_0x19832d){this['id']=_0x19832d['id']||0x0;this[_0x80cd('0x9')]=_0x19832d[_0x80cd('0x9')]||'';this[_0x80cd('0xa')]=_0x19832d[_0x80cd('0xa')]||0xa;this['strategy']=_0x19832d[_0x80cd('0xb')]||'beepall';this['Agents']=_0x19832d[_0x80cd('0xc')];this[_0x80cd('0xd')]={};this[_0x80cd('0xe')]=0x0;this['md5']='';this['updateRouting']();this[_0x80cd('0xf')]();}MailQueue['prototype'][_0x80cd('0x10')]=function(){var _0x3e33fa=this[_0x80cd('0xd')][_0x80cd('0x11')];this['mapAgentsId']=_['map'](this[_0x80cd('0xc')],'id');this[_0x80cd('0xd')][_0x80cd('0x11')]=_0x3e33fa;};MailQueue[_0x80cd('0x12')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x80cd('0x13')]=0x0;for(var _0x2b388b=0x0;_0x2b388b<this[_0x80cd('0xc')][_0x80cd('0x14')];_0x2b388b+=0x1){if(this[_0x80cd('0xc')][_0x2b388b][_0x80cd('0x15')]){this[_0x80cd('0x16')]+=0x1;}if(this[_0x80cd('0xc')][_0x2b388b][_0x80cd('0x17')]){this[_0x80cd('0x13')]+=0x1;}}this[_0x80cd('0x18')]=this['loggedIn']-this[_0x80cd('0x13')];this[_0x80cd('0x18')]=this[_0x80cd('0x18')]>=0x0?this[_0x80cd('0x18')]:0x0;var _0x5b50f7={'id':this['id'],'available':this[_0x80cd('0x18')],'loggedIn':this[_0x80cd('0x16')],'name':this[_0x80cd('0x9')],'paused':this[_0x80cd('0x13')],'waiting':this[_0x80cd('0xe')]};var _0x18df88=md5(JSON[_0x80cd('0x19')](_0x5b50f7));if(this[_0x80cd('0x1')]!==_0x18df88){this[_0x80cd('0x1')]=_0x18df88;io['to'](util[_0x80cd('0x1a')](_0x80cd('0x1b'),_0x5b50f7[_0x80cd('0x9')]))[_0x80cd('0x1c')](_0x80cd('0x1d'),_0x5b50f7);}};module['exports']=MailQueue;
\ No newline at end of file
index a9a4338..95e2d94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5b687d,_0x5239fd){var _0x5c3d75=function(_0x2422d0){while(--_0x2422d0){_0x5b687d['push'](_0x5b687d['shift']());}};_0x5c3d75(++_0x5239fd);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3b231a,_0x53a00d){_0x3b231a=_0x3b231a-0x0;var _0x18d67a=_0x5fc3[_0x3b231a];return _0x18d67a;};'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
+var _0x2ef3=['stringify','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','timeout','strategy','beepall','Agents','mapAgentsId','waiting','prototype','updateRouting','_rr','paused','length','online','available','loggedIn','name'];(function(_0x50e593,_0x3ae998){var _0x3821d0=function(_0x53c295){while(--_0x53c295){_0x50e593['push'](_0x50e593['shift']());}};_0x3821d0(++_0x3ae998);}(_0x2ef3,0xba));var _0x32ef=function(_0x4dec2a,_0x567cc9){_0x4dec2a=_0x4dec2a-0x0;var _0x464368=_0x2ef3[_0x4dec2a];return _0x464368;};'use strict';var _=require(_0x32ef('0x0'));var md5=require(_0x32ef('0x1'));var util=require(_0x32ef('0x2'));var Redis=require(_0x32ef('0x3'));var config=require(_0x32ef('0x4'));config[_0x32ef('0x5')]=_['defaults'](config[_0x32ef('0x5')],{'host':_0x32ef('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x32ef('0x5')]));function OpenchannelQueue(_0x37dd1d){this['id']=_0x37dd1d['id']||0x0;this['name']=_0x37dd1d['name']||'';this[_0x32ef('0x7')]=_0x37dd1d[_0x32ef('0x7')]||0xa;this[_0x32ef('0x8')]=_0x37dd1d[_0x32ef('0x8')]||_0x32ef('0x9');this[_0x32ef('0xa')]=_0x37dd1d[_0x32ef('0xa')];this[_0x32ef('0xb')]={};this[_0x32ef('0xc')]=0x0;this[_0x32ef('0x1')]='';this['updateRouting']();this['updateRealtime']();}OpenchannelQueue[_0x32ef('0xd')][_0x32ef('0xe')]=function(){var _0x45bfd5=this[_0x32ef('0xb')]['_rr'];this[_0x32ef('0xb')]=_['map'](this[_0x32ef('0xa')],'id');this['mapAgentsId'][_0x32ef('0xf')]=_0x45bfd5;};OpenchannelQueue[_0x32ef('0xd')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x32ef('0x10')]=0x0;for(var _0x4d8009=0x0;_0x4d8009<this[_0x32ef('0xa')][_0x32ef('0x11')];_0x4d8009+=0x1){if(this[_0x32ef('0xa')][_0x4d8009][_0x32ef('0x12')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4d8009]['openchannelPause']){this[_0x32ef('0x10')]+=0x1;}}this[_0x32ef('0x13')]=this[_0x32ef('0x14')]-this['paused'];this['available']=this[_0x32ef('0x13')]>=0x0?this[_0x32ef('0x13')]:0x0;var _0x286bfb={'id':this['id'],'available':this['available'],'loggedIn':this[_0x32ef('0x14')],'name':this[_0x32ef('0x15')],'paused':this['paused'],'waiting':this[_0x32ef('0xc')]};var _0x314ef1=md5(JSON[_0x32ef('0x16')](_0x286bfb));if(this[_0x32ef('0x1')]!==_0x314ef1){this[_0x32ef('0x1')]=_0x314ef1;io['to'](util[_0x32ef('0x17')]('openchannel:queue:%s',_0x286bfb[_0x32ef('0x15')]))['emit'](_0x32ef('0x18'),_0x286bfb);}};module[_0x32ef('0x19')]=OpenchannelQueue;
\ No newline at end of file
index 4b79464..03f0e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cc=['timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','smsPause','paused','available','format','sms:queue:%s','name','emit','sms_queue:save','lodash','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter'];(function(_0xa310b6,_0x1b2c23){var _0x29c845=function(_0x5723d5){while(--_0x5723d5){_0xa310b6['push'](_0xa310b6['shift']());}};_0x29c845(++_0x1b2c23);}(_0xe2cc,0x69));var _0xce2c=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0xe2cc[_0x36eaaa];return _0x461349;};'use strict';var _=require(_0xce2c('0x0'));var md5=require(_0xce2c('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0xce2c('0x2'));config[_0xce2c('0x3')]=_[_0xce2c('0x4')](config[_0xce2c('0x3')],{'host':_0xce2c('0x5'),'port':0x18eb});var io=require(_0xce2c('0x6'))(new Redis(config[_0xce2c('0x3')]));function SmsQueue(_0x16312a){this['id']=_0x16312a['id']||0x0;this['name']=_0x16312a['name']||'';this[_0xce2c('0x7')]=_0x16312a[_0xce2c('0x7')]||0xa;this[_0xce2c('0x8')]=_0x16312a[_0xce2c('0x8')]||_0xce2c('0x9');this[_0xce2c('0xa')]=_0x16312a['Agents'];this[_0xce2c('0xb')]={};this[_0xce2c('0xc')]=0x0;this[_0xce2c('0x1')]='';this[_0xce2c('0xd')]();this[_0xce2c('0xe')]();}SmsQueue[_0xce2c('0xf')][_0xce2c('0xd')]=function(){var _0x6fc2c3=this[_0xce2c('0xb')][_0xce2c('0x10')];this[_0xce2c('0xb')]=_[_0xce2c('0x11')](this[_0xce2c('0xa')],'id');this[_0xce2c('0xb')][_0xce2c('0x10')]=_0x6fc2c3;};SmsQueue['prototype']['updateRealtime']=function(){this[_0xce2c('0x12')]=0x0;this['paused']=0x0;for(var _0x214c62=0x0;_0x214c62<this[_0xce2c('0xa')][_0xce2c('0x13')];_0x214c62+=0x1){if(this[_0xce2c('0xa')][_0x214c62]['online']){this[_0xce2c('0x12')]+=0x1;}if(this[_0xce2c('0xa')][_0x214c62][_0xce2c('0x14')]){this[_0xce2c('0x15')]+=0x1;}}this[_0xce2c('0x16')]=this[_0xce2c('0x12')]-this[_0xce2c('0x15')];this['available']=this[_0xce2c('0x16')]>=0x0?this[_0xce2c('0x16')]:0x0;var _0x383085={'id':this['id'],'available':this[_0xce2c('0x16')],'loggedIn':this[_0xce2c('0x12')],'name':this['name'],'paused':this[_0xce2c('0x15')],'waiting':this[_0xce2c('0xc')]};var _0x591921=md5(JSON['stringify'](_0x383085));if(this[_0xce2c('0x1')]!==_0x591921){this[_0xce2c('0x1')]=_0x591921;io['to'](util[_0xce2c('0x17')](_0xce2c('0x18'),_0x383085[_0xce2c('0x19')]))[_0xce2c('0x1a')](_0xce2c('0x1b'),_0x383085);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x0207=['emit','sms_queue:save','exports','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','updateRealtime','paused','length','online','loggedIn','available','format','sms:queue:%s'];(function(_0x5a9969,_0x362f96){var _0x6485c1=function(_0x374916){while(--_0x374916){_0x5a9969['push'](_0x5a9969['shift']());}};_0x6485c1(++_0x362f96);}(_0x0207,0x162));var _0x7020=function(_0x28638e,_0x30c330){_0x28638e=_0x28638e-0x0;var _0x20a408=_0x0207[_0x28638e];return _0x20a408;};'use strict';var _=require('lodash');var md5=require(_0x7020('0x0'));var util=require('util');var Redis=require('ioredis');var config=require(_0x7020('0x1'));config[_0x7020('0x2')]=_[_0x7020('0x3')](config[_0x7020('0x2')],{'host':_0x7020('0x4'),'port':0x18eb});var io=require(_0x7020('0x5'))(new Redis(config[_0x7020('0x2')]));function SmsQueue(_0x5b7cf1){this['id']=_0x5b7cf1['id']||0x0;this['name']=_0x5b7cf1[_0x7020('0x6')]||'';this[_0x7020('0x7')]=_0x5b7cf1[_0x7020('0x7')]||0xa;this[_0x7020('0x8')]=_0x5b7cf1[_0x7020('0x8')]||_0x7020('0x9');this[_0x7020('0xa')]=_0x5b7cf1['Agents'];this['mapAgentsId']={};this[_0x7020('0xb')]=0x0;this[_0x7020('0x0')]='';this[_0x7020('0xc')]();this['updateRealtime']();}SmsQueue[_0x7020('0xd')][_0x7020('0xc')]=function(){var _0x4e16da=this[_0x7020('0xe')][_0x7020('0xf')];this[_0x7020('0xe')]=_['map'](this[_0x7020('0xa')],'id');this[_0x7020('0xe')][_0x7020('0xf')]=_0x4e16da;};SmsQueue[_0x7020('0xd')][_0x7020('0x10')]=function(){this['loggedIn']=0x0;this[_0x7020('0x11')]=0x0;for(var _0x5f5872=0x0;_0x5f5872<this[_0x7020('0xa')][_0x7020('0x12')];_0x5f5872+=0x1){if(this[_0x7020('0xa')][_0x5f5872][_0x7020('0x13')]){this[_0x7020('0x14')]+=0x1;}if(this[_0x7020('0xa')][_0x5f5872]['smsPause']){this[_0x7020('0x11')]+=0x1;}}this['available']=this[_0x7020('0x14')]-this[_0x7020('0x11')];this[_0x7020('0x15')]=this[_0x7020('0x15')]>=0x0?this['available']:0x0;var _0x3d5d25={'id':this['id'],'available':this[_0x7020('0x15')],'loggedIn':this[_0x7020('0x14')],'name':this[_0x7020('0x6')],'paused':this[_0x7020('0x11')],'waiting':this[_0x7020('0xb')]};var _0x59b5d2=md5(JSON['stringify'](_0x3d5d25));if(this[_0x7020('0x0')]!==_0x59b5d2){this[_0x7020('0x0')]=_0x59b5d2;io['to'](util[_0x7020('0x16')](_0x7020('0x17'),_0x3d5d25['name']))[_0x7020('0x18')](_0x7020('0x19'),_0x3d5d25);}};module[_0x7020('0x1a')]=SmsQueue;
\ No newline at end of file
index 1fe1887..75002cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe39f=['paused','available','stringify','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','mapAgentsId','waiting','updateRouting','prototype','Agents','_rr','updateRealtime','loggedIn','whatsappPause'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe39f,0x173));var _0xfe39=function(_0x2d5aca,_0x19beca){_0x2d5aca=_0x2d5aca-0x0;var _0x24ae42=_0xe39f[_0x2d5aca];return _0x24ae42;};'use strict';var _=require(_0xfe39('0x0'));var md5=require(_0xfe39('0x1'));var util=require(_0xfe39('0x2'));var Redis=require('ioredis');var config=require(_0xfe39('0x3'));config[_0xfe39('0x4')]=_[_0xfe39('0x5')](config[_0xfe39('0x4')],{'host':_0xfe39('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x41109d){this['id']=_0x41109d['id']||0x0;this['name']=_0x41109d[_0xfe39('0x7')]||'';this['timeout']=_0x41109d[_0xfe39('0x8')]||0xa;this[_0xfe39('0x9')]=_0x41109d[_0xfe39('0x9')]||'beepall';this['Agents']=_0x41109d['Agents'];this[_0xfe39('0xa')]={};this[_0xfe39('0xb')]=0x0;this['md5']='';this[_0xfe39('0xc')]();this['updateRealtime']();}WhatsappQueue[_0xfe39('0xd')][_0xfe39('0xc')]=function(){var _0x29c54e=this[_0xfe39('0xa')]['_rr'];this[_0xfe39('0xa')]=_['map'](this[_0xfe39('0xe')],'id');this[_0xfe39('0xa')][_0xfe39('0xf')]=_0x29c54e;};WhatsappQueue['prototype'][_0xfe39('0x10')]=function(){this[_0xfe39('0x11')]=0x0;this['paused']=0x0;for(var _0x634902=0x0;_0x634902<this[_0xfe39('0xe')]['length'];_0x634902+=0x1){if(this[_0xfe39('0xe')][_0x634902]['online']){this[_0xfe39('0x11')]+=0x1;}if(this[_0xfe39('0xe')][_0x634902][_0xfe39('0x12')]){this[_0xfe39('0x13')]+=0x1;}}this[_0xfe39('0x14')]=this[_0xfe39('0x11')]-this[_0xfe39('0x13')];this[_0xfe39('0x14')]=this['available']>=0x0?this[_0xfe39('0x14')]:0x0;var _0x510256={'id':this['id'],'available':this['available'],'loggedIn':this[_0xfe39('0x11')],'name':this[_0xfe39('0x7')],'paused':this[_0xfe39('0x13')],'waiting':this[_0xfe39('0xb')]};var _0x45dc77=md5(JSON[_0xfe39('0x15')](_0x510256));if(this[_0xfe39('0x1')]!==_0x45dc77){this[_0xfe39('0x1')]=_0x45dc77;io['to'](util['format'](_0xfe39('0x16'),_0x510256[_0xfe39('0x7')]))[_0xfe39('0x17')](_0xfe39('0x18'),_0x510256);}};module[_0xfe39('0x19')]=WhatsappQueue;
\ No newline at end of file
+var _0xe1db=['beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','prototype','online','loggedIn','whatsappPause','available','paused','stringify','format','emit','exports','lodash','md5','util','ioredis','redis','defaults','socket.io-emitter','name','timeout','strategy'];(function(_0x1e3bd3,_0x380bf2){var _0x110df1=function(_0x3bac27){while(--_0x3bac27){_0x1e3bd3['push'](_0x1e3bd3['shift']());}};_0x110df1(++_0x380bf2);}(_0xe1db,0x66));var _0xbe1d=function(_0x1744c5,_0x372071){_0x1744c5=_0x1744c5-0x0;var _0x12501d=_0xe1db[_0x1744c5];return _0x12501d;};'use strict';var _=require(_0xbe1d('0x0'));var md5=require(_0xbe1d('0x1'));var util=require(_0xbe1d('0x2'));var Redis=require(_0xbe1d('0x3'));var config=require('../../../config/environment');config[_0xbe1d('0x4')]=_[_0xbe1d('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xbe1d('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x34d097){this['id']=_0x34d097['id']||0x0;this[_0xbe1d('0x7')]=_0x34d097[_0xbe1d('0x7')]||'';this[_0xbe1d('0x8')]=_0x34d097[_0xbe1d('0x8')]||0xa;this[_0xbe1d('0x9')]=_0x34d097['strategy']||_0xbe1d('0xa');this[_0xbe1d('0xb')]=_0x34d097['Agents'];this[_0xbe1d('0xc')]={};this[_0xbe1d('0xd')]=0x0;this[_0xbe1d('0x1')]='';this[_0xbe1d('0xe')]();this[_0xbe1d('0xf')]();}WhatsappQueue['prototype'][_0xbe1d('0xe')]=function(){var _0x3d6f68=this[_0xbe1d('0xc')][_0xbe1d('0x10')];this['mapAgentsId']=_[_0xbe1d('0x11')](this[_0xbe1d('0xb')],'id');this[_0xbe1d('0xc')]['_rr']=_0x3d6f68;};WhatsappQueue[_0xbe1d('0x12')]['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x42d862=0x0;_0x42d862<this[_0xbe1d('0xb')]['length'];_0x42d862+=0x1){if(this['Agents'][_0x42d862][_0xbe1d('0x13')]){this[_0xbe1d('0x14')]+=0x1;}if(this[_0xbe1d('0xb')][_0x42d862][_0xbe1d('0x15')]){this['paused']+=0x1;}}this[_0xbe1d('0x16')]=this[_0xbe1d('0x14')]-this['paused'];this[_0xbe1d('0x16')]=this[_0xbe1d('0x16')]>=0x0?this[_0xbe1d('0x16')]:0x0;var _0x112f70={'id':this['id'],'available':this[_0xbe1d('0x16')],'loggedIn':this['loggedIn'],'name':this[_0xbe1d('0x7')],'paused':this[_0xbe1d('0x17')],'waiting':this[_0xbe1d('0xd')]};var _0xdf596a=md5(JSON[_0xbe1d('0x18')](_0x112f70));if(this[_0xbe1d('0x1')]!==_0xdf596a){this['md5']=_0xdf596a;io['to'](util[_0xbe1d('0x19')]('whatsapp:queue:%s',_0x112f70[_0xbe1d('0x7')]))[_0xbe1d('0x1a')]('whatsapp_queue:save',_0x112f70);}};module[_0xbe1d('0x1b')]=WhatsappQueue;
\ No newline at end of file
index a18a1a2..b576f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x3dcf4f,_0x5426f1){var _0x3334d5=function(_0x178009){while(--_0x178009){_0x3dcf4f['push'](_0x3dcf4f['shift']());}};_0x3334d5(++_0x5426f1);}(_0xb10b,0x12a));var _0xbb10=function(_0x394c4c,_0x201031){_0x394c4c=_0x394c4c-0x0;var _0x5bfa5a=_0xb10b[_0x394c4c];return _0x5bfa5a;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=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(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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 4b5b750..ebe31ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe44c=['update','UpdateChatInteraction','updateChatInteraction','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x294988,_0x3aeb5d){var _0x21e5b7=function(_0x44f969){while(--_0x44f969){_0x294988['push'](_0x294988['shift']());}};_0x21e5b7(++_0x3aeb5d);}(_0xe44c,0x12d));var _0xce44=function(_0x2f1d10,_0x49296b){_0x2f1d10=_0x2f1d10-0x0;var _0x23e49b=_0xe44c[_0x2f1d10];return _0x23e49b;};'use strict';var client=require('../client');exports[_0xce44('0x0')]=function(_0x39b7c1,_0x2a744f){return client['Request'](_0xce44('0x1'),{'body':_0x2a744f,'options':{'where':{'id':_0x39b7c1}},'log':_0xce44('0x2')});};exports[_0xce44('0x3')]=function(_0x277f50,_0x327b7e){return client[_0xce44('0x4')](_0xce44('0x5'),{'body':_0x327b7e,'options':{'where':{'id':_0x277f50}},'log':_0xce44('0x6')});};
\ No newline at end of file
+var _0x4aac=['../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4aac,0x111));var _0xc4aa=function(_0x288536,_0x369b51){_0x288536=_0x288536-0x0;var _0x525e94=_0x4aac[_0x288536];return _0x525e94;};'use strict';var client=require(_0xc4aa('0x0'));exports[_0xc4aa('0x1')]=function(_0x47ebd9,_0x3f00c1){return client[_0xc4aa('0x2')](_0xc4aa('0x3'),{'body':_0x3f00c1,'options':{'where':{'id':_0x47ebd9}},'log':_0xc4aa('0x4')});};exports[_0xc4aa('0x5')]=function(_0x8e51d7,_0x51d1d4){return client[_0xc4aa('0x2')](_0xc4aa('0x6'),{'body':_0x51d1d4,'options':{'where':{'id':_0x8e51d7}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 36aba39..8d28089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf59=['Request','CreateChatMessage','../client','create'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xdf59,0xd6));var _0x9df5=function(_0x840598,_0x45055e){_0x840598=_0x840598-0x0;var _0x4f8545=_0xdf59[_0x840598];return _0x4f8545;};'use strict';var client=require(_0x9df5('0x0'));exports[_0x9df5('0x1')]=function(_0x136040){return client[_0x9df5('0x2')](_0x9df5('0x3'),{'body':_0x136040,'log':'createChatMessage'});};
\ No newline at end of file
+var _0xe481=['createChatMessage','Request','CreateChatMessage'];(function(_0x1ebeea,_0x2f54f4){var _0x576465=function(_0x47fc77){while(--_0x47fc77){_0x1ebeea['push'](_0x1ebeea['shift']());}};_0x576465(++_0x2f54f4);}(_0xe481,0xa0));var _0x1e48=function(_0x120438,_0x31a297){_0x120438=_0x120438-0x0;var _0x20deab=_0xe481[_0x120438];return _0x20deab;};'use strict';var client=require('../client');exports['create']=function(_0xb3d23c){return client[_0x1e48('0x0')](_0x1e48('0x1'),{'body':_0xb3d23c,'log':_0x1e48('0x2')});};
\ No newline at end of file
index 7c59485..02d93a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['timeout','strategy','User','online','chatPause','getChatQueues','Request','GetChatQueue','name'];(function(_0x5315d4,_0x215eee){var _0x4f9b12=function(_0x144c5b){while(--_0x144c5b){_0x5315d4['push'](_0x5315d4['shift']());}};_0x4f9b12(++_0x215eee);}(_0x55d2,0x9f));var _0x255d=function(_0x38b40e,_0x2236eb){_0x38b40e=_0x38b40e-0x0;var _0x5ee0ed=_0x55d2[_0x38b40e];return _0x5ee0ed;};'use strict';var client=require('../client');exports['getChatQueues']=function(){return function(){return client[_0x255d('0x0')](_0x255d('0x1'),{'options':{'raw':![],'attributes':['id',_0x255d('0x2'),_0x255d('0x3'),_0x255d('0x4')],'include':[{'model':_0x255d('0x5'),'as':'Agents','attributes':['id',_0x255d('0x2'),_0x255d('0x6'),_0x255d('0x7')]}]},'log':_0x255d('0x8')});};};
\ No newline at end of file
+var _0x3e9d=['online','chatPause','../client','getChatQueues','GetChatQueue','name','timeout','strategy'];(function(_0x4dbba7,_0x34d6d1){var _0x43ef83=function(_0x27acf1){while(--_0x27acf1){_0x4dbba7['push'](_0x4dbba7['shift']());}};_0x43ef83(++_0x34d6d1);}(_0x3e9d,0x1ba));var _0xd3e9=function(_0x504ef2,_0x1082a3){_0x504ef2=_0x504ef2-0x0;var _0x195760=_0x3e9d[_0x504ef2];return _0x195760;};'use strict';var client=require(_0xd3e9('0x0'));exports[_0xd3e9('0x1')]=function(){return function(){return client['Request'](_0xd3e9('0x2'),{'options':{'raw':![],'attributes':['id',_0xd3e9('0x3'),_0xd3e9('0x4'),_0xd3e9('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0xd3e9('0x3'),_0xd3e9('0x6'),_0xd3e9('0x7')]}]},'log':_0xd3e9('0x1')});};};
\ No newline at end of file
index 5128bea..cce2ca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca2b=['../client','create','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x539804,_0x1c46bf){var _0x1cb419=function(_0xa2f0a1){while(--_0xa2f0a1){_0x539804['push'](_0x539804['shift']());}};_0x1cb419(++_0x1c46bf);}(_0xca2b,0x156));var _0xbca2=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xca2b[_0x4565bf];return _0x5610ba;};'use strict';var client=require(_0xbca2('0x0'));exports[_0xbca2('0x1')]=function(_0x473cac){return client[_0xbca2('0x2')](_0xbca2('0x3'),{'body':_0x473cac,'log':_0xbca2('0x3')});};exports[_0xbca2('0x4')]=function(_0x180a93,_0x48a06a){return client[_0xbca2('0x2')](_0xbca2('0x5'),{'body':_0x48a06a,'options':{'where':{'uniqueid':_0x180a93},'order':[['id','DESC']],'limit':0x1},'log':_0xbca2('0x5')});};
\ No newline at end of file
+var _0x3451=['CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client','create','Request'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x3451,0x19a));var _0x1345=function(_0x5b8ada,_0x5cd1ac){_0x5b8ada=_0x5b8ada-0x0;var _0x25b462=_0x3451[_0x5b8ada];return _0x25b462;};'use strict';var client=require(_0x1345('0x0'));exports[_0x1345('0x1')]=function(_0x551ece){return client[_0x1345('0x2')](_0x1345('0x3'),{'body':_0x551ece,'log':_0x1345('0x3')});};exports[_0x1345('0x4')]=function(_0x24d48e,_0xb90830){return client[_0x1345('0x2')](_0x1345('0x5'),{'body':_0xb90830,'options':{'where':{'uniqueid':_0x24d48e},'order':[['id',_0x1345('0x6')]],'limit':0x1},'log':_0x1345('0x5')});};
\ No newline at end of file
index 6b5f4c7..45ee1dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x644560,_0x1783aa){var _0x41b76b=function(_0xff8c89){while(--_0xff8c89){_0x644560['push'](_0x644560['shift']());}};_0x41b76b(++_0x1783aa);}(_0x7a54,0x106));var _0x47a5=function(_0x520abb,_0x475e1a){_0x520abb=_0x520abb-0x0;var _0x5fda44=_0x7a54[_0x520abb];return _0x5fda44;};'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(_0x530c0c,_0x4039e0){var _0x3b56f2=function(_0x3a038b){while(--_0x3a038b){_0x530c0c['push'](_0x530c0c['shift']());}};_0x3b56f2(++_0x4039e0);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'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 1fe9aef..4549745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f97=['Request','CreateFaxMessage','createFaxMessage','../client','create'];(function(_0x261b8a,_0x553ec4){var _0x3455e8=function(_0xdf10d4){while(--_0xdf10d4){_0x261b8a['push'](_0x261b8a['shift']());}};_0x3455e8(++_0x553ec4);}(_0x6f97,0x67));var _0x76f9=function(_0x5211cd,_0x266b93){_0x5211cd=_0x5211cd-0x0;var _0x366c0f=_0x6f97[_0x5211cd];return _0x366c0f;};'use strict';var client=require(_0x76f9('0x0'));exports[_0x76f9('0x1')]=function(_0x304a6a){return client[_0x76f9('0x2')](_0x76f9('0x3'),{'body':_0x304a6a,'log':_0x76f9('0x4')});};
\ No newline at end of file
+var _0xea3a=['Request','createFaxMessage','../client','create'];(function(_0x1c3e8f,_0xc379ea){var _0x18f1de=function(_0x5614b1){while(--_0x5614b1){_0x1c3e8f['push'](_0x1c3e8f['shift']());}};_0x18f1de(++_0xc379ea);}(_0xea3a,0x17e));var _0xaea3=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xea3a[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0xaea3('0x0'));exports[_0xaea3('0x1')]=function(_0x46c574){return client[_0xaea3('0x2')]('CreateFaxMessage',{'body':_0x46c574,'log':_0xaea3('0x3')});};
\ No newline at end of file
index 9ce83ff..f9178ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7de4=['Request','timeout','strategy','User','Agents','name','online','faxPause','../client','getFaxQueues'];(function(_0x28aea5,_0x3bb12e){var _0x6a55f9=function(_0xf6ece8){while(--_0xf6ece8){_0x28aea5['push'](_0x28aea5['shift']());}};_0x6a55f9(++_0x3bb12e);}(_0x7de4,0xa8));var _0x47de=function(_0x41ca79,_0x331641){_0x41ca79=_0x41ca79-0x0;var _0x24669a=_0x7de4[_0x41ca79];return _0x24669a;};'use strict';var client=require(_0x47de('0x0'));exports[_0x47de('0x1')]=function(){return function(){return client[_0x47de('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id','name',_0x47de('0x3'),_0x47de('0x4')],'include':[{'model':_0x47de('0x5'),'as':_0x47de('0x6'),'attributes':['id',_0x47de('0x7'),_0x47de('0x8'),_0x47de('0x9')]}]},'log':_0x47de('0x1')});};};
\ No newline at end of file
+var _0x4edc=['Agents','online','../client','getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User'];(function(_0x2f3b34,_0x25df33){var _0x541ce0=function(_0x28e31d){while(--_0x28e31d){_0x2f3b34['push'](_0x2f3b34['shift']());}};_0x541ce0(++_0x25df33);}(_0x4edc,0xfc));var _0xc4ed=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x4edc[_0x4c12ec];return _0x3ae42c;};'use strict';var client=require(_0xc4ed('0x0'));exports[_0xc4ed('0x1')]=function(){return function(){return client[_0xc4ed('0x2')](_0xc4ed('0x3'),{'options':{'raw':![],'attributes':['id',_0xc4ed('0x4'),_0xc4ed('0x5'),_0xc4ed('0x6')],'include':[{'model':_0xc4ed('0x7'),'as':_0xc4ed('0x8'),'attributes':['id',_0xc4ed('0x4'),_0xc4ed('0x9'),'faxPause']}]},'log':_0xc4ed('0x1')});};};
\ No newline at end of file
index ac22635..39bb644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x829c=['UpdateFaxQueueReport','../client','create','Request','CreateFaxQueueReport'];(function(_0x33fcfd,_0x2e4462){var _0x2976c0=function(_0xe2ec49){while(--_0xe2ec49){_0x33fcfd['push'](_0x33fcfd['shift']());}};_0x2976c0(++_0x2e4462);}(_0x829c,0x128));var _0xc829=function(_0xdea2d,_0x58e1e8){_0xdea2d=_0xdea2d-0x0;var _0x19eb78=_0x829c[_0xdea2d];return _0x19eb78;};'use strict';var client=require(_0xc829('0x0'));exports[_0xc829('0x1')]=function(_0x4937bb){return client[_0xc829('0x2')](_0xc829('0x3'),{'body':_0x4937bb,'log':_0xc829('0x3')});};exports['update']=function(_0x21a8a2,_0x562059){return client[_0xc829('0x2')](_0xc829('0x4'),{'body':_0x562059,'options':{'where':{'uniqueid':_0x21a8a2},'order':[['id','DESC']],'limit':0x1},'log':_0xc829('0x4')});};
\ No newline at end of file
+var _0xada9=['CreateFaxQueueReport','UpdateFaxQueueReport','../client','create','Request'];(function(_0x41fdd5,_0x36fcd7){var _0x7a8348=function(_0x292915){while(--_0x292915){_0x41fdd5['push'](_0x41fdd5['shift']());}};_0x7a8348(++_0x36fcd7);}(_0xada9,0x70));var _0x9ada=function(_0x1b6c13,_0x3a8eb0){_0x1b6c13=_0x1b6c13-0x0;var _0x53c0c5=_0xada9[_0x1b6c13];return _0x53c0c5;};'use strict';var client=require(_0x9ada('0x0'));exports[_0x9ada('0x1')]=function(_0x43c9be){return client[_0x9ada('0x2')](_0x9ada('0x3'),{'body':_0x43c9be,'log':_0x9ada('0x3')});};exports['update']=function(_0x57657b,_0x582f1b){return client[_0x9ada('0x2')](_0x9ada('0x4'),{'body':_0x582f1b,'options':{'where':{'uniqueid':_0x57657b},'order':[['id','DESC']],'limit':0x1},'log':_0x9ada('0x4')});};
\ No newline at end of file
index 72a721a..f3ebf50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb05d=['interval','../client','getIntervals','GetInterval','name','Interval','Intervals'];(function(_0x1ddd66,_0x1eec3e){var _0x345fff=function(_0x44e002){while(--_0x44e002){_0x1ddd66['push'](_0x1ddd66['shift']());}};_0x345fff(++_0x1eec3e);}(_0xb05d,0x1ac));var _0xdb05=function(_0x2da357,_0x1f9b2f){_0x2da357=_0x2da357-0x0;var _0x138fdd=_0xb05d[_0x2da357];return _0x138fdd;};'use strict';var client=require(_0xdb05('0x0'));exports[_0xdb05('0x1')]=function(){return function(){return client['Request'](_0xdb05('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xdb05('0x3')],'include':[{'model':_0xdb05('0x4'),'as':_0xdb05('0x5'),'attributes':['id','name',_0xdb05('0x6')]}]},'log':_0xdb05('0x1')});};};
\ No newline at end of file
+var _0x07ae=['../client','getIntervals','Request','GetInterval','Intervals','name','interval'];(function(_0x4a1b18,_0x58a4c0){var _0x4ccb41=function(_0x102c33){while(--_0x102c33){_0x4a1b18['push'](_0x4a1b18['shift']());}};_0x4ccb41(++_0x58a4c0);}(_0x07ae,0x1a4));var _0xe07a=function(_0x3763e8,_0x30a9a4){_0x3763e8=_0x3763e8-0x0;var _0x22315d=_0x07ae[_0x3763e8];return _0x22315d;};'use strict';var client=require(_0xe07a('0x0'));exports[_0xe07a('0x1')]=function(){return function(){return client[_0xe07a('0x2')](_0xe07a('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':'Interval','as':_0xe07a('0x4'),'attributes':['id',_0xe07a('0x5'),_0xe07a('0x6')]}]},'log':_0xe07a('0x1')});};};
\ No newline at end of file
index 7fb8ade..4d38da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['Request','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x154cb4,_0x331235){var _0x4955a6=function(_0x1c274b){while(--_0x1c274b){_0x154cb4['push'](_0x154cb4['shift']());}};_0x4955a6(++_0x331235);}(_0x6a55,0xdb));var _0x56a5=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0x6a55[_0x21353c];return _0xa99120;};'use strict';var client=require(_0x56a5('0x0'));exports['update']=function(_0x5d894b,_0x4ec858){return client[_0x56a5('0x1')]('UpdateMailInteraction',{'body':_0x4ec858,'options':{'where':{'id':_0x5d894b}},'log':'updateMailInteraction'});};exports[_0x56a5('0x2')]=function(_0x5e5a32,_0x3ff76a){return client['Request'](_0x56a5('0x3'),{'body':_0x3ff76a,'options':{'where':{'id':_0x5e5a32}},'log':_0x56a5('0x4')});};
\ No newline at end of file
+var _0x1a37=['Request','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','../client','update'];(function(_0x80a21b,_0x3d8559){var _0x1fc197=function(_0x4b29ad){while(--_0x4b29ad){_0x80a21b['push'](_0x80a21b['shift']());}};_0x1fc197(++_0x3d8559);}(_0x1a37,0xb4));var _0x71a3=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x1a37[_0x33032e];return _0x13316b;};'use strict';var client=require(_0x71a3('0x0'));exports[_0x71a3('0x1')]=function(_0x32781b,_0x28e254){return client[_0x71a3('0x2')](_0x71a3('0x3'),{'body':_0x28e254,'options':{'where':{'id':_0x32781b}},'log':_0x71a3('0x4')});};exports[_0x71a3('0x5')]=function(_0x29c54f,_0x100181){return client['Request'](_0x71a3('0x6'),{'body':_0x100181,'options':{'where':{'id':_0x29c54f}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 033ff87..86b01d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa138=['createMailMessage','../client','create','Request'];(function(_0x1d8c58,_0x55b8db){var _0x4a0efe=function(_0x5f1f75){while(--_0x5f1f75){_0x1d8c58['push'](_0x1d8c58['shift']());}};_0x4a0efe(++_0x55b8db);}(_0xa138,0xfd));var _0x8a13=function(_0x5199a2,_0x2a4056){_0x5199a2=_0x5199a2-0x0;var _0x53759a=_0xa138[_0x5199a2];return _0x53759a;};'use strict';var client=require(_0x8a13('0x0'));exports[_0x8a13('0x1')]=function(_0x5b986d){return client[_0x8a13('0x2')]('CreateMailMessage',{'body':_0x5b986d,'log':_0x8a13('0x3')});};
\ No newline at end of file
+var _0x81e7=['CreateMailMessage','createMailMessage','../client'];(function(_0x157992,_0x2f66fe){var _0x4906c3=function(_0x273b06){while(--_0x273b06){_0x157992['push'](_0x157992['shift']());}};_0x4906c3(++_0x2f66fe);}(_0x81e7,0x110));var _0x781e=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0x81e7[_0x26462c];return _0x509a42;};'use strict';var client=require(_0x781e('0x0'));exports['create']=function(_0x567c9a){return client['Request'](_0x781e('0x1'),{'body':_0x567c9a,'log':_0x781e('0x2')});};
\ No newline at end of file
index c73cd37..3ec6aa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a9=['../client','Request','name','strategy','User','Agents','online','getMailQueues'];(function(_0x5d3d0b,_0x487b38){var _0x26957c=function(_0x24f5c5){while(--_0x24f5c5){_0x5d3d0b['push'](_0x5d3d0b['shift']());}};_0x26957c(++_0x487b38);}(_0xf5a9,0x188));var _0x9f5a=function(_0x2792e8,_0x271ec6){_0x2792e8=_0x2792e8-0x0;var _0x1fa0cb=_0xf5a9[_0x2792e8];return _0x1fa0cb;};'use strict';var client=require(_0x9f5a('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x9f5a('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x9f5a('0x2'),'timeout',_0x9f5a('0x3')],'include':[{'model':_0x9f5a('0x4'),'as':_0x9f5a('0x5'),'attributes':['id',_0x9f5a('0x2'),_0x9f5a('0x6'),'mailPause']}]},'log':_0x9f5a('0x7')});};};
\ No newline at end of file
+var _0xc853=['timeout','strategy','Agents','name','online','mailPause','../client','Request'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xc853,0x1c6));var _0x3c85=function(_0x5adad3,_0x48699c){_0x5adad3=_0x5adad3-0x0;var _0x579fc9=_0xc853[_0x5adad3];return _0x579fc9;};'use strict';var client=require(_0x3c85('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x3c85('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id','name',_0x3c85('0x2'),_0x3c85('0x3')],'include':[{'model':'User','as':_0x3c85('0x4'),'attributes':['id',_0x3c85('0x5'),_0x3c85('0x6'),_0x3c85('0x7')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 7a35f3f..68851f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f8=['Request','DESC','UpdateMailQueueReport','../client','create','CreateMailQueueReport','update'];(function(_0x20d2c7,_0x339523){var _0xd626f8=function(_0x56f52b){while(--_0x56f52b){_0x20d2c7['push'](_0x20d2c7['shift']());}};_0xd626f8(++_0x339523);}(_0x88f8,0x9d));var _0x888f=function(_0x59d015,_0x18ea4f){_0x59d015=_0x59d015-0x0;var _0x4c5020=_0x88f8[_0x59d015];return _0x4c5020;};'use strict';var client=require(_0x888f('0x0'));exports[_0x888f('0x1')]=function(_0x13c252){return client['Request'](_0x888f('0x2'),{'body':_0x13c252,'log':_0x888f('0x2')});};exports[_0x888f('0x3')]=function(_0x2caab,_0x278955){return client[_0x888f('0x4')]('UpdateMailQueueReport',{'body':_0x278955,'options':{'where':{'uniqueid':_0x2caab},'order':[['id',_0x888f('0x5')]],'limit':0x1},'log':_0x888f('0x6')});};
\ No newline at end of file
+var _0x8d41=['UpdateMailQueueReport','DESC','../client','Request','CreateMailQueueReport','update'];(function(_0x487683,_0x58b9b8){var _0x178a4d=function(_0x1f9813){while(--_0x1f9813){_0x487683['push'](_0x487683['shift']());}};_0x178a4d(++_0x58b9b8);}(_0x8d41,0x122));var _0x18d4=function(_0x574de7,_0x24ce60){_0x574de7=_0x574de7-0x0;var _0x568f46=_0x8d41[_0x574de7];return _0x568f46;};'use strict';var client=require(_0x18d4('0x0'));exports['create']=function(_0x5626f3){return client[_0x18d4('0x1')]('CreateMailQueueReport',{'body':_0x5626f3,'log':_0x18d4('0x2')});};exports[_0x18d4('0x3')]=function(_0x9971c3,_0x2d5b36){return client[_0x18d4('0x1')](_0x18d4('0x4'),{'body':_0x2d5b36,'options':{'where':{'uniqueid':_0x9971c3},'order':[['id',_0x18d4('0x5')]],'limit':0x1},'log':_0x18d4('0x4')});};
\ No newline at end of file
index 1fa315e..6a5a503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd6=['addTagsToChatInteraction','../client','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0xdcd6,0xa9));var _0x6dcd=function(_0x3436f6,_0xc22b38){_0x3436f6=_0x3436f6-0x0;var _0x346a25=_0xdcd6[_0x3436f6];return _0x346a25;};'use strict';var client=require(_0x6dcd('0x0'));exports[_0x6dcd('0x1')]=function(_0x1899b1,_0x1d6daa){return client[_0x6dcd('0x2')](_0x6dcd('0x3'),{'body':_0x1d6daa,'options':{'where':{'id':_0x1899b1}},'log':_0x6dcd('0x4')});};exports[_0x6dcd('0x5')]=function(_0x290e81,_0x533436){return client['Request'](_0x6dcd('0x6'),{'body':_0x533436,'options':{'where':{'id':_0x290e81}},'log':_0x6dcd('0x7')});};
\ No newline at end of file
+var _0x5c98=['Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x5c98,0x1d6));var _0x85c9=function(_0x2ee63f,_0x56f775){_0x2ee63f=_0x2ee63f-0x0;var _0x53ab7b=_0x5c98[_0x2ee63f];return _0x53ab7b;};'use strict';var client=require(_0x85c9('0x0'));exports[_0x85c9('0x1')]=function(_0x4321d3,_0x848e4d){return client[_0x85c9('0x2')](_0x85c9('0x3'),{'body':_0x848e4d,'options':{'where':{'id':_0x4321d3}},'log':_0x85c9('0x4')});};exports[_0x85c9('0x5')]=function(_0x3c0c55,_0x4c95f9){return client[_0x85c9('0x2')](_0x85c9('0x6'),{'body':_0x4c95f9,'options':{'where':{'id':_0x3c0c55}},'log':_0x85c9('0x7')});};
\ No newline at end of file
index 3cf289a..05914b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84c3=['../client','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x1ab43d,_0x381825){var _0x56f236=function(_0x4c9099){while(--_0x4c9099){_0x1ab43d['push'](_0x1ab43d['shift']());}};_0x56f236(++_0x381825);}(_0x84c3,0x1bc));var _0x384c=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x84c3[_0x45f951];return _0x24756c;};'use strict';var client=require(_0x384c('0x0'));exports['create']=function(_0x3f278b){return client[_0x384c('0x1')](_0x384c('0x2'),{'body':_0x3f278b,'log':_0x384c('0x3')});};
\ No newline at end of file
+var _0x1d8f=['../client','create','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x42defc,_0x4728de){var _0x139744=function(_0x5c41a6){while(--_0x5c41a6){_0x42defc['push'](_0x42defc['shift']());}};_0x139744(++_0x4728de);}(_0x1d8f,0x1f4));var _0xf1d8=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x1d8f[_0x6cf19c];return _0xce14f3;};'use strict';var client=require(_0xf1d8('0x0'));exports[_0xf1d8('0x1')]=function(_0x40d974){return client[_0xf1d8('0x2')](_0xf1d8('0x3'),{'body':_0x40d974,'log':_0xf1d8('0x4')});};
\ No newline at end of file
index ec6f1ab..b6a9fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d2=['online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','Agents'];(function(_0x1d4e93,_0x42d0c7){var _0x479c9b=function(_0x86ecd7){while(--_0x86ecd7){_0x1d4e93['push'](_0x1d4e93['shift']());}};_0x479c9b(++_0x42d0c7);}(_0x78d2,0x1c4));var _0x278d=function(_0x5d8afd,_0xd7f769){_0x5d8afd=_0x5d8afd-0x0;var _0x336c61=_0x78d2[_0x5d8afd];return _0x336c61;};'use strict';var client=require(_0x278d('0x0'));exports[_0x278d('0x1')]=function(){return function(){return client[_0x278d('0x2')](_0x278d('0x3'),{'options':{'raw':![],'attributes':['id',_0x278d('0x4'),_0x278d('0x5'),'strategy'],'include':[{'model':'User','as':_0x278d('0x6'),'attributes':['id',_0x278d('0x4'),_0x278d('0x7'),_0x278d('0x8')]}]},'log':_0x278d('0x1')});};};
\ No newline at end of file
+var _0x163f=['timeout','User','Agents','name','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue'];(function(_0x2f6495,_0x362c50){var _0x1bae98=function(_0x503998){while(--_0x503998){_0x2f6495['push'](_0x2f6495['shift']());}};_0x1bae98(++_0x362c50);}(_0x163f,0x6a));var _0xf163=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x163f[_0x3e5086];return _0xfeb102;};'use strict';var client=require(_0xf163('0x0'));exports[_0xf163('0x1')]=function(){return function(){return client[_0xf163('0x2')](_0xf163('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xf163('0x4'),'strategy'],'include':[{'model':_0xf163('0x5'),'as':_0xf163('0x6'),'attributes':['id',_0xf163('0x7'),_0xf163('0x8'),_0xf163('0x9')]}]},'log':_0xf163('0x1')});};};
\ No newline at end of file
index 3db09a1..feb8765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a8=['UpdateOpenchannelQueueReport','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0x3f712a,_0x15d81b){var _0x2dfa62=function(_0x57496e){while(--_0x57496e){_0x3f712a['push'](_0x3f712a['shift']());}};_0x2dfa62(++_0x15d81b);}(_0x18a8,0x127));var _0x818a=function(_0x49c283,_0x5e798a){_0x49c283=_0x49c283-0x0;var _0xab1b6c=_0x18a8[_0x49c283];return _0xab1b6c;};'use strict';var client=require(_0x818a('0x0'));exports[_0x818a('0x1')]=function(_0x4ad356){return client[_0x818a('0x2')](_0x818a('0x3'),{'body':_0x4ad356,'log':_0x818a('0x3')});};exports[_0x818a('0x4')]=function(_0x39cb94,_0x5e71e7){return client[_0x818a('0x2')](_0x818a('0x5'),{'body':_0x5e71e7,'options':{'where':{'uniqueid':_0x39cb94},'order':[['id','DESC']],'limit':0x1},'log':_0x818a('0x5')});};
\ No newline at end of file
+var _0xe0d6=['create','Request','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','../client'];(function(_0x43696d,_0x3a7cdf){var _0x3db3c4=function(_0x3f2d2f){while(--_0x3f2d2f){_0x43696d['push'](_0x43696d['shift']());}};_0x3db3c4(++_0x3a7cdf);}(_0xe0d6,0x18f));var _0x6e0d=function(_0x38d2bd,_0x3f3bc3){_0x38d2bd=_0x38d2bd-0x0;var _0x454b1f=_0xe0d6[_0x38d2bd];return _0x454b1f;};'use strict';var client=require(_0x6e0d('0x0'));exports[_0x6e0d('0x1')]=function(_0x128710){return client[_0x6e0d('0x2')](_0x6e0d('0x3'),{'body':_0x128710,'log':_0x6e0d('0x3')});};exports['update']=function(_0x3f420c,_0x2eba77){return client[_0x6e0d('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x2eba77,'options':{'where':{'uniqueid':_0x3f420c},'order':[['id','DESC']],'limit':0x1},'log':_0x6e0d('0x4')});};
\ No newline at end of file
index 7480949..1e7a15d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e7=['updateSmsInteraction','addTags','addTagsToSmsInteraction','update','Request','UpdateSmsInteraction'];(function(_0x2bdd9b,_0x3df1bc){var _0x103e81=function(_0x26184b){while(--_0x26184b){_0x2bdd9b['push'](_0x2bdd9b['shift']());}};_0x103e81(++_0x3df1bc);}(_0x56e7,0x7b));var _0x756e=function(_0x5660c2,_0x27a453){_0x5660c2=_0x5660c2-0x0;var _0x59d3da=_0x56e7[_0x5660c2];return _0x59d3da;};'use strict';var client=require('../client');exports[_0x756e('0x0')]=function(_0x418b7b,_0x590286){return client[_0x756e('0x1')](_0x756e('0x2'),{'body':_0x590286,'options':{'where':{'id':_0x418b7b}},'log':_0x756e('0x3')});};exports[_0x756e('0x4')]=function(_0x11ce5f,_0x38546a){return client[_0x756e('0x1')]('AddTagsToSmsInteraction',{'body':_0x38546a,'options':{'where':{'id':_0x11ce5f}},'log':_0x756e('0x5')});};
\ No newline at end of file
+var _0x09f4=['Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction'];(function(_0x340cf5,_0xd979e1){var _0x297d14=function(_0x31683f){while(--_0x31683f){_0x340cf5['push'](_0x340cf5['shift']());}};_0x297d14(++_0xd979e1);}(_0x09f4,0xe4));var _0x409f=function(_0x2a97b7,_0x2ee10b){_0x2a97b7=_0x2a97b7-0x0;var _0x5866de=_0x09f4[_0x2a97b7];return _0x5866de;};'use strict';var client=require('../client');exports['update']=function(_0x203895,_0x1e5329){return client[_0x409f('0x0')](_0x409f('0x1'),{'body':_0x1e5329,'options':{'where':{'id':_0x203895}},'log':_0x409f('0x2')});};exports[_0x409f('0x3')]=function(_0x1d859b,_0x3c329a){return client[_0x409f('0x0')](_0x409f('0x4'),{'body':_0x3c329a,'options':{'where':{'id':_0x1d859b}},'log':_0x409f('0x5')});};
\ No newline at end of file
index 2a0ce3c..f5e194a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf30d=['Request','CreateSmsMessage','createSmsMessage','../client','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf30d,0x152));var _0xdf30=function(_0xca504,_0x3123ad){_0xca504=_0xca504-0x0;var _0x4af415=_0xf30d[_0xca504];return _0x4af415;};'use strict';var client=require(_0xdf30('0x0'));exports[_0xdf30('0x1')]=function(_0x1af310){return client[_0xdf30('0x2')](_0xdf30('0x3'),{'body':_0x1af310,'log':_0xdf30('0x4')});};
\ No newline at end of file
+var _0x151d=['../client','create','Request','createSmsMessage'];(function(_0x32b97f,_0xd8956a){var _0x971ecb=function(_0x136671){while(--_0x136671){_0x32b97f['push'](_0x32b97f['shift']());}};_0x971ecb(++_0xd8956a);}(_0x151d,0x160));var _0xd151=function(_0x14d151,_0x11736e){_0x14d151=_0x14d151-0x0;var _0x3ef99c=_0x151d[_0x14d151];return _0x3ef99c;};'use strict';var client=require(_0xd151('0x0'));exports[_0xd151('0x1')]=function(_0x23a2bb){return client[_0xd151('0x2')]('CreateSmsMessage',{'body':_0x23a2bb,'log':_0xd151('0x3')});};
\ No newline at end of file
index 003878e..1cf8b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x143db0,_0x40b14e){var _0x402d2b=function(_0x3943fb){while(--_0x3943fb){_0x143db0['push'](_0x143db0['shift']());}};_0x402d2b(++_0x40b14e);}(_0xe706,0xa3));var _0x6e70=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xe706[_0x4709c0];return _0x13348b;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
+var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x51f420,_0x5eab60){var _0x4d9bda=function(_0x2b7d11){while(--_0x2b7d11){_0x51f420['push'](_0x51f420['shift']());}};_0x4d9bda(++_0x5eab60);}(_0xe706,0xa3));var _0x6e70=function(_0x3d09c7,_0x3ff87d){_0x3d09c7=_0x3d09c7-0x0;var _0x43db15=_0xe706[_0x3d09c7];return _0x43db15;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
index 33ef263..cf8395d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x372b66,_0x273f96){var _0x240d76=function(_0x937994){while(--_0x937994){_0x372b66['push'](_0x372b66['shift']());}};_0x240d76(++_0x273f96);}(_0x3e74,0x175));var _0x43e7=function(_0x2ad9f4,_0x175c2f){_0x2ad9f4=_0x2ad9f4-0x0;var _0x41c618=_0x3e74[_0x2ad9f4];return _0x41c618;};'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
+var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x523c65,_0x188dc9){var _0x5daee2=function(_0x49d7a7){while(--_0x49d7a7){_0x523c65['push'](_0x523c65['shift']());}};_0x5daee2(++_0x188dc9);}(_0x70e0,0x17b));var _0x070e=function(_0x1ad6bf,_0xca3b80){_0x1ad6bf=_0x1ad6bf-0x0;var _0x52fbbd=_0x70e0[_0x1ad6bf];return _0x52fbbd;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
index 0ab4140..44d5ce2 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(_0x1bdbd7,_0x1e269){var _0x1d98ca=function(_0x5df7e4){while(--_0x5df7e4){_0x1bdbd7['push'](_0x1bdbd7['shift']());}};_0x1d98ca(++_0x1e269);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x5044eb,_0x381841){var _0x1369f2=function(_0x269455){while(--_0x269455){_0x5044eb['push'](_0x5044eb['shift']());}};_0x1369f2(++_0x381841);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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 65b5fcc..2fe8cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde7=['addTagsToWhatsappInteraction','Request','addTags','AddTagsToWhatsappInteraction'];(function(_0x1fb200,_0x434c96){var _0xfea8eb=function(_0x26c8c2){while(--_0x26c8c2){_0x1fb200['push'](_0x1fb200['shift']());}};_0xfea8eb(++_0x434c96);}(_0xcde7,0x65));var _0x7cde=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xcde7[_0x4a9fb1];return _0x348672;};'use strict';var client=require('../client');exports['update']=function(_0x210314,_0x2e1936){return client[_0x7cde('0x0')]('UpdateWhatsappInteraction',{'body':_0x2e1936,'options':{'where':{'id':_0x210314}},'log':'updateWhatsappInteraction'});};exports[_0x7cde('0x1')]=function(_0x47962e,_0x23ec50){return client[_0x7cde('0x0')](_0x7cde('0x2'),{'body':_0x23ec50,'options':{'where':{'id':_0x47962e}},'log':_0x7cde('0x3')});};
\ No newline at end of file
+var _0x3d49=['addTags','AddTagsToWhatsappInteraction','update','Request','updateWhatsappInteraction'];(function(_0x40ceab,_0x24abeb){var _0x1e79f1=function(_0x3fb109){while(--_0x3fb109){_0x40ceab['push'](_0x40ceab['shift']());}};_0x1e79f1(++_0x24abeb);}(_0x3d49,0x151));var _0x93d4=function(_0x32f6b9,_0x2d4aa9){_0x32f6b9=_0x32f6b9-0x0;var _0x267d52=_0x3d49[_0x32f6b9];return _0x267d52;};'use strict';var client=require('../client');exports[_0x93d4('0x0')]=function(_0x444cad,_0xae3607){return client[_0x93d4('0x1')]('UpdateWhatsappInteraction',{'body':_0xae3607,'options':{'where':{'id':_0x444cad}},'log':_0x93d4('0x2')});};exports[_0x93d4('0x3')]=function(_0xa1de2e,_0x41313a){return client[_0x93d4('0x1')](_0x93d4('0x4'),{'body':_0x41313a,'options':{'where':{'id':_0xa1de2e}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index e403eef..b5dbb58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e3=['../client','create','Request'];(function(_0x20d66c,_0x1718d3){var _0x2cee16=function(_0x39cc5c){while(--_0x39cc5c){_0x20d66c['push'](_0x20d66c['shift']());}};_0x2cee16(++_0x1718d3);}(_0x48e3,0x1e0));var _0x348e=function(_0x12f724,_0x182e20){_0x12f724=_0x12f724-0x0;var _0x7e06e9=_0x48e3[_0x12f724];return _0x7e06e9;};'use strict';var client=require(_0x348e('0x0'));exports[_0x348e('0x1')]=function(_0x46dcbf){return client[_0x348e('0x2')]('CreateWhatsappMessage',{'body':_0x46dcbf,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x60dd=['CreateWhatsappMessage','createWhatsappMessage','create','Request'];(function(_0x328300,_0x179d41){var _0x2cab77=function(_0x14f469){while(--_0x14f469){_0x328300['push'](_0x328300['shift']());}};_0x2cab77(++_0x179d41);}(_0x60dd,0x1e6));var _0xd60d=function(_0x5acdd8,_0x5967ef){_0x5acdd8=_0x5acdd8-0x0;var _0x159510=_0x60dd[_0x5acdd8];return _0x159510;};'use strict';var client=require('../client');exports[_0xd60d('0x0')]=function(_0x71a838){return client[_0xd60d('0x1')](_0xd60d('0x2'),{'body':_0x71a838,'log':_0xd60d('0x3')});};
\ No newline at end of file
index cb918ba..ac00a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4974=['timeout','Agents','online','whatsappPause','../client','getWhatsappQueues','Request','name'];(function(_0x471b17,_0x553cff){var _0x2cba66=function(_0x4d9709){while(--_0x4d9709){_0x471b17['push'](_0x471b17['shift']());}};_0x2cba66(++_0x553cff);}(_0x4974,0xa4));var _0x4497=function(_0x3a8128,_0x4b3ae2){_0x3a8128=_0x3a8128-0x0;var _0x934bbb=_0x4974[_0x3a8128];return _0x934bbb;};'use strict';var client=require(_0x4497('0x0'));exports[_0x4497('0x1')]=function(){return function(){return client[_0x4497('0x2')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x4497('0x3'),_0x4497('0x4'),'strategy'],'include':[{'model':'User','as':_0x4497('0x5'),'attributes':['id','name',_0x4497('0x6'),_0x4497('0x7')]}]},'log':_0x4497('0x1')});};};
\ No newline at end of file
+var _0x3903=['online','getWhatsappQueues','../client','Request','GetWhatsappQueue','timeout','strategy','Agents'];(function(_0x2f56be,_0x4ec278){var _0x46db32=function(_0x29af80){while(--_0x29af80){_0x2f56be['push'](_0x2f56be['shift']());}};_0x46db32(++_0x4ec278);}(_0x3903,0x19a));var _0x3390=function(_0x1e2010,_0x23cbe){_0x1e2010=_0x1e2010-0x0;var _0x4af1bb=_0x3903[_0x1e2010];return _0x4af1bb;};'use strict';var client=require(_0x3390('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0x3390('0x1')](_0x3390('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x3390('0x3'),_0x3390('0x4')],'include':[{'model':'User','as':_0x3390('0x5'),'attributes':['id','name',_0x3390('0x6'),'whatsappPause']}]},'log':_0x3390('0x7')});};};
\ No newline at end of file
index aab91f6..61cac5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4999=['create','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','DESC','../client'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x4999,0x112));var _0x9499=function(_0x21ed71,_0x3fca8e){_0x21ed71=_0x21ed71-0x0;var _0x515130=_0x4999[_0x21ed71];return _0x515130;};'use strict';var client=require(_0x9499('0x0'));exports[_0x9499('0x1')]=function(_0x29195f){return client['Request'](_0x9499('0x2'),{'body':_0x29195f,'log':'CreateWhatsappQueueReport'});};exports['update']=function(_0x1a39d0,_0x4ee7cb){return client['Request'](_0x9499('0x3'),{'body':_0x4ee7cb,'options':{'where':{'uniqueid':_0x1a39d0},'order':[['id',_0x9499('0x4')]],'limit':0x1},'log':_0x9499('0x3')});};
\ No newline at end of file
+var _0xa85f=['../client','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC'];(function(_0x39a9b8,_0x1c2b02){var _0x1fe68a=function(_0x284130){while(--_0x284130){_0x39a9b8['push'](_0x39a9b8['shift']());}};_0x1fe68a(++_0x1c2b02);}(_0xa85f,0x111));var _0xfa85=function(_0x362518,_0x314723){_0x362518=_0x362518-0x0;var _0x4ee191=_0xa85f[_0x362518];return _0x4ee191;};'use strict';var client=require(_0xfa85('0x0'));exports[_0xfa85('0x1')]=function(_0xf8edef){return client[_0xfa85('0x2')](_0xfa85('0x3'),{'body':_0xf8edef,'log':_0xfa85('0x3')});};exports[_0xfa85('0x4')]=function(_0x11a7ef,_0x58878c){return client[_0xfa85('0x2')](_0xfa85('0x5'),{'body':_0x58878c,'options':{'where':{'uniqueid':_0x11a7ef},'order':[['id',_0xfa85('0x6')]],'limit':0x1},'log':_0xfa85('0x5')});};
\ No newline at end of file
index d14635c..4487714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c3=['./strategy','string','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','error','[%s][AGENT]\x20%s','map','join','find','agents','timeout','createQueue','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','stop','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','seq-queue','../../../../config/logger','routing'];(function(_0x67ef43,_0x3fe93c){var _0x3c5224=function(_0x475911){while(--_0x475911){_0x67ef43['push'](_0x67ef43['shift']());}};_0x3c5224(++_0x3fe93c);}(_0x45c3,0xda));var _0x345c=function(_0xb60ae4,_0x48b458){_0xb60ae4=_0xb60ae4-0x0;var _0x53d530=_0x45c3[_0xb60ae4];return _0x53d530;};'use strict';var schema=require(_0x345c('0x0'));var _=require('lodash');var util=require('util');var seqqueue=require(_0x345c('0x1'));var logger=require(_0x345c('0x2'))(_0x345c('0x3'));var strategy=require(_0x345c('0x4'));var queue=schema({'name':{'type':_0x345c('0x5'),'required':!![],'message':_0x345c('0x6')},'timeout':{'type':_0x345c('0x7'),'message':_0x345c('0x8')}});function writeLog(_0x7ebec4,_0x199238,_0x4e9502){return logger[_0x345c('0x9')](util[_0x345c('0xa')](_0x345c('0xb'),_0x7ebec4,_0x199238[_0x345c('0xc')],_0x4e9502));}function handleFindAgent(_0x37b4b6){return function(_0xd3ca93){return _0xd3ca93[_0x345c('0xc')][_0x345c('0xd')]()===_0x37b4b6['toLowerCase']();};}exports[_0x345c('0xe')]=function(_0x4db9d0,_0x25f31d,_0x3369af,_0x59ceb5){return function(_0x370862){try{var _0x2118c3={'name':_0x25f31d[0x0],'timeout':_0x25f31d[0x1]};var _0x5941b5=queue[_0x345c('0x0')](_0x2118c3,{'typecast':!![]});if(_0x5941b5[_0x345c('0xf')]){logger[_0x345c('0x10')](_0x345c('0x11'),_0x4db9d0,_[_0x345c('0x12')](_0x5941b5,'message')[_0x345c('0x13')](',\x20'));_0x370862['stop']();}else{var _0x586bd0=_[_0x345c('0x14')](_0x3369af[_0x345c('0x15')],handleFindAgent(_0x2118c3[_0x345c('0xc')]));if(_0x586bd0){var _0x3dd850=(_0x2118c3[_0x345c('0x16')]||0xa)*0x3e8;var _0x5d2f86,_0x43f873;var _0x15cf3b=seqqueue[_0x345c('0x17')](_0x3dd850);_0x15cf3b['id']=_0x4db9d0;_0x15cf3b['atimeout']=_0x3dd850;_0x15cf3b[_0x345c('0x18')]=_0x59ceb5[_0x345c('0x18')];writeLog(_0x4db9d0,_0x586bd0,util['format']('START:%s',_0x3dd850));_0x3369af[_0x345c('0x19')][_0x4db9d0]['on'](_0x345c('0x1a'),function(){logger[_0x345c('0x9')](_0x345c('0x1b'),_0x4db9d0);clearTimeout(_0x43f873);_0x43f873=undefined;_0x15cf3b['close']();if(_0x3369af[_0x345c('0x19')][_0x4db9d0]){delete _0x3369af[_0x345c('0x19')][_0x4db9d0];}_0x370862[_0x345c('0x1c')]();});_0x3369af[_0x345c('0x19')][_0x4db9d0]['on']('complete',function(){if(_0x3369af['rules'][_0x4db9d0]){delete _0x3369af[_0x345c('0x19')][_0x4db9d0];}});_0x43f873=setTimeout(function(){logger[_0x345c('0x9')](_0x345c('0x1d'),_0x4db9d0);clearTimeout(_0x43f873);_0x15cf3b[_0x345c('0x1e')]();_0x370862[_0x345c('0x1f')]();},_0x3dd850);strategy[_0x345c('0x20')](_0x15cf3b,_0x586bd0,_0x3369af,_0x59ceb5);}else{logger[_0x345c('0x10')](_0x345c('0x21'),_0x4db9d0,_0x2118c3['name']);_0x370862[_0x345c('0x1c')]();}}}catch(_0x54a182){console[_0x345c('0x22')](_0x54a182);logger['error'](_0x345c('0x23'),_0x4db9d0,_0x54a182[_0x345c('0x24')]);_0x370862[_0x345c('0x1c')]();}};};
\ No newline at end of file
+var _0xe2b4=['channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','lodash','util','seq-queue','../../../../config/logger','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','map','join','stop','find','timeout','createQueue','atimeout'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0xe2b4,0x12c));var _0x4e2b=function(_0x49dde8,_0x3ae565){_0x49dde8=_0x49dde8-0x0;var _0xa7ef97=_0xe2b4[_0x49dde8];return _0xa7ef97;};'use strict';var schema=require('validate');var _=require(_0x4e2b('0x0'));var util=require(_0x4e2b('0x1'));var seqqueue=require(_0x4e2b('0x2'));var logger=require(_0x4e2b('0x3'))(_0x4e2b('0x4'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0x4e2b('0x5'),'required':!![],'message':_0x4e2b('0x6')},'timeout':{'type':_0x4e2b('0x7'),'message':_0x4e2b('0x8')}});function writeLog(_0x175cc3,_0x121197,_0x5bf94d){return logger[_0x4e2b('0x9')](util[_0x4e2b('0xa')](_0x4e2b('0xb'),_0x175cc3,_0x121197[_0x4e2b('0xc')],_0x5bf94d));}function handleFindAgent(_0x487ed6){return function(_0x155298){return _0x155298['name'][_0x4e2b('0xd')]()===_0x487ed6['toLowerCase']();};}exports[_0x4e2b('0xe')]=function(_0x21d996,_0xd4795d,_0x122a2d,_0x30f44f){return function(_0x44fc79){try{var _0x3f9065={'name':_0xd4795d[0x0],'timeout':_0xd4795d[0x1]};var _0x3357f2=queue['validate'](_0x3f9065,{'typecast':!![]});if(_0x3357f2['length']){logger[_0x4e2b('0xf')](_0x4e2b('0x10'),_0x21d996,_[_0x4e2b('0x11')](_0x3357f2,'message')[_0x4e2b('0x12')](',\x20'));_0x44fc79[_0x4e2b('0x13')]();}else{var _0x575354=_[_0x4e2b('0x14')](_0x122a2d['agents'],handleFindAgent(_0x3f9065['name']));if(_0x575354){var _0x395241=(_0x3f9065[_0x4e2b('0x15')]||0xa)*0x3e8;var _0x1a2fcd,_0x3119e3;var _0x5434bb=seqqueue[_0x4e2b('0x16')](_0x395241);_0x5434bb['id']=_0x21d996;_0x5434bb[_0x4e2b('0x17')]=_0x395241;_0x5434bb[_0x4e2b('0x18')]=_0x30f44f[_0x4e2b('0x18')];writeLog(_0x21d996,_0x575354,util[_0x4e2b('0xa')]('START:%s',_0x395241));_0x122a2d[_0x4e2b('0x19')][_0x21d996]['on'](_0x4e2b('0x1a'),function(){logger[_0x4e2b('0x9')](_0x4e2b('0x1b'),_0x21d996);clearTimeout(_0x3119e3);_0x3119e3=undefined;_0x5434bb['close']();if(_0x122a2d[_0x4e2b('0x19')][_0x21d996]){delete _0x122a2d[_0x4e2b('0x19')][_0x21d996];}_0x44fc79[_0x4e2b('0x13')]();});_0x122a2d[_0x4e2b('0x19')][_0x21d996]['on'](_0x4e2b('0x1c'),function(){if(_0x122a2d[_0x4e2b('0x19')][_0x21d996]){delete _0x122a2d[_0x4e2b('0x19')][_0x21d996];}});_0x3119e3=setTimeout(function(){logger['info'](_0x4e2b('0x1d'),_0x21d996);clearTimeout(_0x3119e3);_0x5434bb[_0x4e2b('0x1e')]();_0x44fc79[_0x4e2b('0x1f')]();},_0x395241);strategy[_0x4e2b('0x20')](_0x5434bb,_0x575354,_0x122a2d,_0x30f44f);}else{logger[_0x4e2b('0xf')](_0x4e2b('0x21'),_0x21d996,_0x3f9065[_0x4e2b('0xc')]);_0x44fc79['stop']();}}}catch(_0xef04de){console['log'](_0xef04de);logger['error'](_0x4e2b('0x22'),_0x21d996,_0xef04de[_0x4e2b('0x23')]);_0x44fc79[_0x4e2b('0x13')]();}};};
\ No newline at end of file
index 48e67ed..f61b744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567e=['Message','create','dialogState','Failed','catch','moment','aws-sdk','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','then','error','stringify','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','postText','amazonlex','providerName','providerResponse'];(function(_0x1b35bd,_0x4f5b7c){var _0x1cf531=function(_0x3c2155){while(--_0x3c2155){_0x1b35bd['push'](_0x1b35bd['shift']());}};_0x1cf531(++_0x4f5b7c);}(_0x567e,0x109));var _0xe567=function(_0x2bf1db,_0x1fb1ba){_0x2bf1db=_0x2bf1db-0x0;var _0x32d9f3=_0x567e[_0x2bf1db];return _0x32d9f3;};'use strict';var _=require('lodash');var moment=require(_0xe567('0x0'));var AWS=require(_0xe567('0x1'));var utils=require(_0xe567('0x2'));var logger=require('../../../../config/logger')(_0xe567('0x3'));var rpc={'chatMessage':require(_0xe567('0x4')),'openchannelMessage':require(_0xe567('0x5')),'mailMessage':require(_0xe567('0x6')),'smsMessage':require(_0xe567('0x7')),'faxMessage':require(_0xe567('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xe567('0x9')]=function(_0x48cda1,_0x41574e){return function(_0x40be2b){try{if(!_[_0xe567('0xa')](this['interaction'][_0xe567('0xb')])){logger[_0xe567('0xc')](_0xe567('0xd'),_0x48cda1,_0xe567('0xe'));return _0x40be2b[_0xe567('0xf')]();}var _0x35e7a6={'ContactId':this['contact']['id'],'sentAt':moment()[_0xe567('0x10')](_0xe567('0x11')),'direction':_0xe567('0x12')};if(this[_0xe567('0x13')]===_0xe567('0x14')||this[_0xe567('0x13')]===_0xe567('0x15')){_0x35e7a6[_0xe567('0x16')]=this[_0xe567('0x17')][_0xe567('0x16')];}var _0x53b1d6=this[_0xe567('0x13')];if(_0x53b1d6===_0xe567('0x18')){_0x35e7a6[_0xe567('0x19')]=this[_0xe567('0x1a')]['id'];}else{_0x35e7a6[_[_0xe567('0x1b')](_0x53b1d6)+_0xe567('0x1c')]=this['account']['id'];}_0x35e7a6[_[_0xe567('0x1b')](_0x53b1d6)+_0xe567('0x1d')]=this[_0xe567('0x17')]['id'];if(this[_0xe567('0x17')][_0xe567('0x1e')]){var _0x579338=_0x41574e[0x4];if(!_[_0xe567('0x1f')](_0x579338)){_0x35e7a6[_0xe567('0x20')]=utils[_0xe567('0x21')](_0x579338,this);return rpc[_0x53b1d6+'Message']['create'](_0x35e7a6)[_0xe567('0x22')](function(_0x4ddc18){logger[_0xe567('0xc')](_0xe567('0xd'),_0x48cda1,_0x35e7a6[_0xe567('0x20')]);})['catch'](function(_0x292688){logger[_0xe567('0x23')](_0xe567('0xd'),_0x48cda1,JSON[_0xe567('0x24')](_0x292688));})['finally'](function(){logger[_0xe567('0xc')](_0xe567('0x25'),_0x48cda1);_0x40be2b[_0xe567('0x26')]();});}else{logger[_0xe567('0xc')](_0xe567('0x27'),_0x48cda1);_0x40be2b[_0xe567('0x26')]();}}else{var _0x521995=this;var _0x3c62f4=new AWS[(_0xe567('0x28'))]({'accessKeyId':_0x41574e[0x0],'secretAccessKey':_0x41574e[0x1],'region':_0x41574e[0x2]});var _0x2029b2={'botAlias':_0xe567('0x29'),'botName':_0x41574e[0x3],'inputText':this[_0xe567('0x2a')]['body'],'userId':this[_0xe567('0x13')]+':'+this['interaction']['id']['toString']()};_0x3c62f4[_0xe567('0x2b')](_0x2029b2,function(_0x424891,_0x2d65ce){if(_0x424891){logger[_0xe567('0x23')]('[%s][AMAZONLEX]\x20%s',_0x48cda1,_0x424891[_0xe567('0x2a')]);_0x40be2b['next']();}else if(_0x2d65ce&&_0x2d65ce[_0xe567('0x2a')]){_0x521995[_0xe567('0x20')][_0xe567('0x2c')]=_0x2d65ce;_0x35e7a6[_0xe567('0x20')]=_0x2d65ce[_0xe567('0x2a')];_0x35e7a6[_0xe567('0x2d')]='amazonlex';_0x35e7a6[_0xe567('0x2e')]=JSON['stringify'](_0x2d65ce);return rpc[_0x53b1d6+_0xe567('0x2f')][_0xe567('0x30')](_0x35e7a6)[_0xe567('0x22')](function(_0x317041){logger[_0xe567('0xc')](_0xe567('0xd'),_0x48cda1,_0x35e7a6['body']);if(_0x2d65ce[_0xe567('0x31')]==_0xe567('0x32')){_0x40be2b[_0xe567('0xf')]();}else{_0x40be2b[_0xe567('0x26')]();}})[_0xe567('0x33')](function(_0x4c408c){logger['error']('[%s][AMAZONLEX]\x20%s',_0x48cda1,JSON['stringify'](_0x4c408c));_0x40be2b[_0xe567('0xf')]();});}else{_0x40be2b[_0xe567('0xf')]();}});}}catch(_0x1055d2){logger[_0xe567('0x23')](_0xe567('0xd'),_0x48cda1,JSON[_0xe567('0x24')](_0x1055d2));_0x40be2b[_0xe567('0x26')]();}};};
\ No newline at end of file
+var _0x0c82=['AccountId','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','finally','info','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','providerName','amazonlex','stringify','dialogState','Failed','lodash','moment','aws-sdk','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account'];(function(_0x2deb4a,_0x2f672a){var _0x146b33=function(_0x65f62d){while(--_0x65f62d){_0x2deb4a['push'](_0x2deb4a['shift']());}};_0x146b33(++_0x2f672a);}(_0x0c82,0x186));var _0x20c8=function(_0x4d9787,_0x96d522){_0x4d9787=_0x4d9787-0x0;var _0x3b96ef=_0x0c82[_0x4d9787];return _0x3b96ef;};'use strict';var _=require(_0x20c8('0x0'));var moment=require(_0x20c8('0x1'));var AWS=require(_0x20c8('0x2'));var utils=require(_0x20c8('0x3'));var logger=require('../../../../config/logger')(_0x20c8('0x4'));var rpc={'chatMessage':require(_0x20c8('0x5')),'openchannelMessage':require(_0x20c8('0x6')),'mailMessage':require(_0x20c8('0x7')),'smsMessage':require(_0x20c8('0x8')),'faxMessage':require(_0x20c8('0x9')),'whatsappMessage':require(_0x20c8('0xa'))};exports[_0x20c8('0xb')]=function(_0x427ff2,_0x2fb878){return function(_0x1e38f6){try{if(!_[_0x20c8('0xc')](this[_0x20c8('0xd')][_0x20c8('0xe')])){logger['info'](_0x20c8('0xf'),_0x427ff2,_0x20c8('0x10'));return _0x1e38f6[_0x20c8('0x11')]();}var _0x43d081={'ContactId':this['contact']['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x20c8('0x12')};if(this[_0x20c8('0x13')]===_0x20c8('0x14')||this[_0x20c8('0x13')]===_0x20c8('0x15')){_0x43d081[_0x20c8('0x16')]=this[_0x20c8('0xd')]['phone'];}var _0x5e2fc7=this[_0x20c8('0x13')];if(_0x5e2fc7===_0x20c8('0x17')){_0x43d081[_0x20c8('0x18')]=this[_0x20c8('0x19')]['id'];}else{_0x43d081[_['upperFirst'](_0x5e2fc7)+_0x20c8('0x1a')]=this[_0x20c8('0x19')]['id'];}_0x43d081[_[_0x20c8('0x1b')](_0x5e2fc7)+_0x20c8('0x1c')]=this['interaction']['id'];if(this[_0x20c8('0xd')][_0x20c8('0x1d')]){var _0x219fe1=_0x2fb878[0x4];if(!_[_0x20c8('0x1e')](_0x219fe1)){_0x43d081[_0x20c8('0x1f')]=utils[_0x20c8('0x20')](_0x219fe1,this);return rpc[_0x5e2fc7+_0x20c8('0x21')][_0x20c8('0x22')](_0x43d081)[_0x20c8('0x23')](function(_0x2ec615){logger['info'](_0x20c8('0xf'),_0x427ff2,_0x43d081[_0x20c8('0x1f')]);})[_0x20c8('0x24')](function(_0x4ac0b2){logger[_0x20c8('0x25')](_0x20c8('0xf'),_0x427ff2,JSON['stringify'](_0x4ac0b2));})[_0x20c8('0x26')](function(){logger[_0x20c8('0x27')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x427ff2);_0x1e38f6[_0x20c8('0x28')]();});}else{logger[_0x20c8('0x27')](_0x20c8('0x29'),_0x427ff2);_0x1e38f6[_0x20c8('0x28')]();}}else{var _0x9576de=this;var _0x1fb084=new AWS[(_0x20c8('0x2a'))]({'accessKeyId':_0x2fb878[0x0],'secretAccessKey':_0x2fb878[0x1],'region':_0x2fb878[0x2]});var _0x445860={'botAlias':_0x20c8('0x2b'),'botName':_0x2fb878[0x3],'inputText':this[_0x20c8('0x2c')][_0x20c8('0x1f')],'userId':this[_0x20c8('0x13')]+':'+this[_0x20c8('0xd')]['id'][_0x20c8('0x2d')]()};_0x1fb084[_0x20c8('0x2e')](_0x445860,function(_0xb19130,_0x1dde1f){if(_0xb19130){logger[_0x20c8('0x25')](_0x20c8('0xf'),_0x427ff2,_0xb19130[_0x20c8('0x2c')]);_0x1e38f6[_0x20c8('0x11')]();}else if(_0x1dde1f&&_0x1dde1f[_0x20c8('0x2c')]){_0x9576de[_0x20c8('0x1f')]['amazonlex']=_0x1dde1f;_0x43d081[_0x20c8('0x1f')]=_0x1dde1f[_0x20c8('0x2c')];_0x43d081[_0x20c8('0x2f')]=_0x20c8('0x30');_0x43d081['providerResponse']=JSON[_0x20c8('0x31')](_0x1dde1f);return rpc[_0x5e2fc7+_0x20c8('0x21')][_0x20c8('0x22')](_0x43d081)[_0x20c8('0x23')](function(_0x392c38){logger[_0x20c8('0x27')](_0x20c8('0xf'),_0x427ff2,_0x43d081[_0x20c8('0x1f')]);if(_0x1dde1f[_0x20c8('0x32')]==_0x20c8('0x33')){_0x1e38f6[_0x20c8('0x11')]();}else{_0x1e38f6[_0x20c8('0x28')]();}})[_0x20c8('0x24')](function(_0x2f1720){logger[_0x20c8('0x25')](_0x20c8('0xf'),_0x427ff2,JSON[_0x20c8('0x31')](_0x2f1720));_0x1e38f6[_0x20c8('0x11')]();});}else{_0x1e38f6['next']();}});}}catch(_0x7fe950){logger[_0x20c8('0x25')](_0x20c8('0xf'),_0x427ff2,JSON['stringify'](_0x7fe950));_0x1e38f6[_0x20c8('0x28')]();}};};
\ No newline at end of file
index 2bcd9d6..223be1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7df=['Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:\x20','chat','account','upperFirst','AccountId','Message','Smtp','service','host','port','secure','authentication','auth','user','pass','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','auto-replied','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','[%s][AUTOREPLY]\x20%s','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','lodash','moment','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','info'];(function(_0x470e1d,_0x39605d){var _0x48b75a=function(_0x422367){while(--_0x422367){_0x470e1d['push'](_0x470e1d['shift']());}};_0x48b75a(++_0x39605d);}(_0xe7df,0x152));var _0xfe7d=function(_0x1f99a7,_0x2201c){_0x1f99a7=_0x1f99a7-0x0;var _0x18876e=_0xe7df[_0x1f99a7];return _0x18876e;};'use strict';var _=require(_0xfe7d('0x0'));var moment=require(_0xfe7d('0x1'));var utils=require('./utils');var logger=require(_0xfe7d('0x2'))('routing');var rpc={'chatMessage':require(_0xfe7d('0x3')),'openchannelMessage':require(_0xfe7d('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xfe7d('0x5')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0xfe7d('0x6')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xfe7d('0x7')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xfe7d('0x8')),'whatsappInteraction':require(_0xfe7d('0x9'))};var mailRpc=require(_0xfe7d('0xa'));exports[_0xfe7d('0xb')]=function(_0x3f7cc6,_0x19ef92,_0x3f85cf,_0xf5724){return function(_0xa2608f){try{var _0x327651=this[_0xfe7d('0xc')];if(_0x327651===_0xfe7d('0xd')&&_0xf5724[_0xfe7d('0xe')][_0xfe7d('0xf')]){logger[_0xfe7d('0x10')]('[%s][AUTOREPLY]\x20%s',_0x3f7cc6,_0xfe7d('0x11'));return _0xa2608f[_0xfe7d('0x12')]();}if(_0x19ef92[0x0]==='1'&&(_['isNil'](this[_0xfe7d('0x13')]['created'])||!this[_0xfe7d('0x13')][_0xfe7d('0x14')])){logger[_0xfe7d('0x10')]('[%s][AUTOREPLY]\x20%s',_0x3f7cc6,_0xfe7d('0x15'));return _0xa2608f[_0xfe7d('0x12')]();}if(_0x19ef92[0x0]==='2'&&this[_0xfe7d('0x13')][_0xfe7d('0x16')]){logger[_0xfe7d('0x10')](_0xfe7d('0x17'),_0x3f7cc6,_0xfe7d('0x18'));return _0xa2608f['next']();}var _0x212076={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0xfe7d('0x19')),'direction':_0xfe7d('0x1a')};if(this[_0xfe7d('0xc')]===_0xfe7d('0xd')){_0x212076[_0xfe7d('0xe')]=utils[_0xfe7d('0x1b')](_0x19ef92[0x2],this);}else{_0x212076[_0xfe7d('0xe')]=utils[_0xfe7d('0x1b')](_0x19ef92[0x1],this);}if(this[_0xfe7d('0x1c')]){_0x212076['to']=this['message'][_0xfe7d('0x1d')]||'';if(this[_0xfe7d('0xc')]===_0xfe7d('0xd')&&_0x19ef92[0x1]==='1'){_0x212076['cc']=this[_0xfe7d('0x1c')]['cc']||'';}_0x212076[_0xfe7d('0x1d')]=this[_0xfe7d('0x1c')]['to']||'';_0x212076[_0xfe7d('0x1e')]=this[_0xfe7d('0x1c')]['phone']||'';_0x212076[_0xfe7d('0x1f')]=!![];if(this['message'][_0xfe7d('0x20')]){_0x212076[_0xfe7d('0x20')]='';_0x212076[_0xfe7d('0x20')]+=_[_0xfe7d('0x21')](this[_0xfe7d('0x1c')][_0xfe7d('0x20')],'Re:')?'':_0xfe7d('0x22');_0x212076[_0xfe7d('0x20')]+=this['message'][_0xfe7d('0x20')];}}if(this['channel']===_0xfe7d('0x23')){_0x212076['ChatWebsiteId']=this[_0xfe7d('0x24')]['id'];}else{_0x212076[_[_0xfe7d('0x25')](this['channel'])+_0xfe7d('0x26')]=this[_0xfe7d('0x24')]['id'];}_0x212076[_[_0xfe7d('0x25')](this[_0xfe7d('0xc')])+'InteractionId']=this['interaction']['id'];var _0x5e787b=this[_0xfe7d('0x13')];if(rpc[this['channel']+_0xfe7d('0x27')]){if(this[_0xfe7d('0xc')]==='mail'){var _0x100a4c={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0xfe7d('0x28')][_0xfe7d('0x29')]){_0x100a4c[_0xfe7d('0x29')]=this[_0xfe7d('0x24')][_0xfe7d('0x28')][_0xfe7d('0x29')];}else{_0x100a4c[_0xfe7d('0x2a')]=this[_0xfe7d('0x24')][_0xfe7d('0x28')][_0xfe7d('0x2a')];_0x100a4c[_0xfe7d('0x2b')]=this[_0xfe7d('0x24')][_0xfe7d('0x28')][_0xfe7d('0x2b')];_0x100a4c[_0xfe7d('0x2c')]=this['account'][_0xfe7d('0x28')][_0xfe7d('0x2c')];}if(this['account'][_0xfe7d('0x28')][_0xfe7d('0x2d')]){_0x100a4c[_0xfe7d('0x2e')]={'user':this['account']['Smtp'][_0xfe7d('0x2f')],'pass':this[_0xfe7d('0x24')]['Smtp'][_0xfe7d('0x30')]};}_0x212076[_0xfe7d('0x31')]=this[_0xfe7d('0x1c')]['messageId'];_0x212076[_0xfe7d('0x32')]=_0xfe7d('0x33')+_[_0xfe7d('0x34')](_0x212076['body'],'<div\x20id=\x22xm-mail-content\x22',_0xfe7d('0x35'))+'</div>';_0x212076['headers']={'Auto-Submitted':_0xfe7d('0x36'),'X-Auto-Response-Suppress':'All','Precedence':_0xfe7d('0x37')};return mailRpc[_0xfe7d('0x38')](_0x100a4c,_0x212076)[_0xfe7d('0x39')](function(_0x10537d){logger['info'](_0xfe7d('0x3a'),_0x3f7cc6);_0x212076[_0xfe7d('0x3b')]=_0x10537d[_0xfe7d('0x1c')][_0xfe7d('0x3b')];return rpc[_0x327651+_0xfe7d('0x27')][_0xfe7d('0x3c')](_0x212076);})[_0xfe7d('0x39')](function(_0xa9103c){logger[_0xfe7d('0x10')](_0xfe7d('0x3d'),_0x3f7cc6,JSON[_0xfe7d('0x3e')](_0xa9103c));})[_0xfe7d('0x3f')](function(_0x4ed7c3){logger['error'](_0xfe7d('0x40'),_0x3f7cc6,JSON[_0xfe7d('0x3e')](_0x4ed7c3));})[_0xfe7d('0x41')](function(){Promise[_0xfe7d('0x42')]()[_0xfe7d('0x39')](function(){if(_0x19ef92[0x0]!=='2'||_0x5e787b[_0xfe7d('0x16')])return;return rpc[_0x327651+_0xfe7d('0x43')][_0xfe7d('0x44')](_0x5e787b['id'],{'autoreplyExecuted':!![]})[_0xfe7d('0x39')](function(_0x59ce02){logger[_0xfe7d('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3f7cc6,JSON['stringify'](_0x59ce02));})['catch'](function(_0x45afc4){logger['error'](_0xfe7d('0x45'),_0x3f7cc6,JSON['stringify'](_0x45afc4));});})[_0xfe7d('0x39')](function(){_0xa2608f[_0xfe7d('0x12')]();});});}else{return rpc[this[_0xfe7d('0xc')]+'Message'][_0xfe7d('0x3c')](_0x212076)[_0xfe7d('0x39')](function(_0x3cbbfe){logger['info'](_0xfe7d('0x3d'),_0x3f7cc6,_0x212076['body']);})['catch'](function(_0x568633){logger[_0xfe7d('0x46')](_0xfe7d('0x3d'),_0x3f7cc6,JSON[_0xfe7d('0x3e')](_0x568633));})['finally'](function(){Promise[_0xfe7d('0x42')]()[_0xfe7d('0x39')](function(){if(_0x19ef92[0x0]!=='2'||_0x5e787b[_0xfe7d('0x16')])return;return rpc[_0x327651+_0xfe7d('0x43')][_0xfe7d('0x44')](_0x5e787b['id'],{'autoreplyExecuted':!![]})['then'](function(_0x4b9967){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3f7cc6,JSON[_0xfe7d('0x3e')](_0x4b9967));})[_0xfe7d('0x3f')](function(_0x1ab5a0){logger[_0xfe7d('0x46')](_0xfe7d('0x45'),_0x3f7cc6,JSON[_0xfe7d('0x3e')](_0x1ab5a0));});})[_0xfe7d('0x39')](function(){_0xa2608f[_0xfe7d('0x12')]();});});}}}catch(_0x203ffa){logger[_0xfe7d('0x46')](_0xfe7d('0x3d'),_0x3f7cc6,JSON[_0xfe7d('0x3e')](_0x203ffa));_0xa2608f['stop']();}};};
\ No newline at end of file
+var _0x5c52=['replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','Interaction','update','stop','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','next','contact','format','out','mail','body','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','Message','Smtp','service','host','port','secure','authentication','auth','user','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x5c52,0x1a1));var _0x25c5=function(_0x48c47d,_0x4c9813){_0x48c47d=_0x48c47d-0x0;var _0xcd2698=_0x5c52[_0x48c47d];return _0xcd2698;};'use strict';var _=require('lodash');var moment=require(_0x25c5('0x0'));var utils=require(_0x25c5('0x1'));var logger=require(_0x25c5('0x2'))('routing');var rpc={'chatMessage':require(_0x25c5('0x3')),'openchannelMessage':require(_0x25c5('0x4')),'mailMessage':require(_0x25c5('0x5')),'smsMessage':require(_0x25c5('0x6')),'faxMessage':require(_0x25c5('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x25c5('0x8')),'mailInteraction':require(_0x25c5('0x9')),'smsInteraction':require(_0x25c5('0xa')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x25c5('0xb'))};var mailRpc=require(_0x25c5('0xc'));exports[_0x25c5('0xd')]=function(_0x402d4f,_0x155586,_0x39ee55,_0x4407b5){return function(_0x2ba246){try{var _0x4fd25a=this[_0x25c5('0xe')];if(_0x4fd25a==='mail'&&_0x4407b5['body']['isAutoreply']){logger[_0x25c5('0xf')](_0x25c5('0x10'),_0x402d4f,_0x25c5('0x11'));return _0x2ba246['next']();}if(_0x155586[0x0]==='1'&&(_[_0x25c5('0x12')](this[_0x25c5('0x13')][_0x25c5('0x14')])||!this[_0x25c5('0x13')]['created'])){logger['info'](_0x25c5('0x10'),_0x402d4f,_0x25c5('0x15'));return _0x2ba246['next']();}if(_0x155586[0x0]==='2'&&this[_0x25c5('0x13')][_0x25c5('0x16')]){logger['info'](_0x25c5('0x17'),_0x402d4f,_0x25c5('0x18'));return _0x2ba246[_0x25c5('0x19')]();}var _0x2c00b8={'ContactId':this[_0x25c5('0x1a')]['id'],'sentAt':moment()[_0x25c5('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x25c5('0x1c')};if(this['channel']===_0x25c5('0x1d')){_0x2c00b8['body']=utils['getMustacheRender'](_0x155586[0x2],this);}else{_0x2c00b8[_0x25c5('0x1e')]=utils['getMustacheRender'](_0x155586[0x1],this);}if(this[_0x25c5('0x1f')]){_0x2c00b8['to']=this[_0x25c5('0x1f')][_0x25c5('0x20')]||'';if(this[_0x25c5('0xe')]===_0x25c5('0x1d')&&_0x155586[0x1]==='1'){_0x2c00b8['cc']=this[_0x25c5('0x1f')]['cc']||'';}_0x2c00b8['from']=this[_0x25c5('0x1f')]['to']||'';_0x2c00b8[_0x25c5('0x21')]=this['message'][_0x25c5('0x21')]||'';_0x2c00b8[_0x25c5('0x22')]=!![];if(this[_0x25c5('0x1f')]['subject']){_0x2c00b8[_0x25c5('0x23')]='';_0x2c00b8['subject']+=_[_0x25c5('0x24')](this[_0x25c5('0x1f')][_0x25c5('0x23')],_0x25c5('0x25'))?'':_0x25c5('0x26');_0x2c00b8[_0x25c5('0x23')]+=this['message'][_0x25c5('0x23')];}}if(this[_0x25c5('0xe')]===_0x25c5('0x27')){_0x2c00b8[_0x25c5('0x28')]=this['account']['id'];}else{_0x2c00b8[_['upperFirst'](this[_0x25c5('0xe')])+'AccountId']=this[_0x25c5('0x29')]['id'];}_0x2c00b8[_[_0x25c5('0x2a')](this['channel'])+'InteractionId']=this['interaction']['id'];var _0x2e8542=this['interaction'];if(rpc[this[_0x25c5('0xe')]+_0x25c5('0x2b')]){if(this['channel']===_0x25c5('0x1d')){var _0x28da55={'tls':{'rejectUnauthorized':![]}};if(this[_0x25c5('0x29')][_0x25c5('0x2c')][_0x25c5('0x2d')]){_0x28da55[_0x25c5('0x2d')]=this[_0x25c5('0x29')][_0x25c5('0x2c')][_0x25c5('0x2d')];}else{_0x28da55[_0x25c5('0x2e')]=this['account'][_0x25c5('0x2c')][_0x25c5('0x2e')];_0x28da55['port']=this['account']['Smtp'][_0x25c5('0x2f')];_0x28da55[_0x25c5('0x30')]=this[_0x25c5('0x29')][_0x25c5('0x2c')][_0x25c5('0x30')];}if(this['account'][_0x25c5('0x2c')][_0x25c5('0x31')]){_0x28da55[_0x25c5('0x32')]={'user':this[_0x25c5('0x29')]['Smtp'][_0x25c5('0x33')],'pass':this[_0x25c5('0x29')]['Smtp'][_0x25c5('0x34')]};}_0x2c00b8[_0x25c5('0x35')]=this[_0x25c5('0x1f')][_0x25c5('0x36')];_0x2c00b8[_0x25c5('0x37')]=_0x25c5('0x38')+_[_0x25c5('0x39')](_0x2c00b8[_0x25c5('0x1e')],_0x25c5('0x3a'),_0x25c5('0x3b'))+_0x25c5('0x3c');_0x2c00b8[_0x25c5('0x3d')]={'Auto-Submitted':_0x25c5('0x3e'),'X-Auto-Response-Suppress':_0x25c5('0x3f'),'Precedence':_0x25c5('0x40')};return mailRpc[_0x25c5('0x41')](_0x28da55,_0x2c00b8)[_0x25c5('0x42')](function(_0x70f9c2){logger['info'](_0x25c5('0x43'),_0x402d4f);_0x2c00b8[_0x25c5('0x36')]=_0x70f9c2['message'][_0x25c5('0x36')];return rpc[_0x4fd25a+'Message']['create'](_0x2c00b8);})[_0x25c5('0x42')](function(_0x12d409){logger['info']('[%s][AUTOREPLY]\x20%s',_0x402d4f,JSON[_0x25c5('0x44')](_0x12d409));})[_0x25c5('0x45')](function(_0x58a1f5){logger['error'](_0x25c5('0x46'),_0x402d4f,JSON[_0x25c5('0x44')](_0x58a1f5));})[_0x25c5('0x47')](function(){Promise[_0x25c5('0x48')]()[_0x25c5('0x42')](function(){if(_0x155586[0x0]!=='2'||_0x2e8542['autoreplyExecuted'])return;return rpc[_0x4fd25a+'Interaction']['update'](_0x2e8542['id'],{'autoreplyExecuted':!![]})['then'](function(_0x30d6a5){logger[_0x25c5('0xf')](_0x25c5('0x17'),_0x402d4f,JSON['stringify'](_0x30d6a5));})[_0x25c5('0x45')](function(_0x12504e){logger[_0x25c5('0x49')](_0x25c5('0x4a'),_0x402d4f,JSON[_0x25c5('0x44')](_0x12504e));});})[_0x25c5('0x42')](function(){_0x2ba246[_0x25c5('0x19')]();});});}else{return rpc[this[_0x25c5('0xe')]+'Message'][_0x25c5('0x4b')](_0x2c00b8)['then'](function(_0x5851cd){logger['info'](_0x25c5('0x10'),_0x402d4f,_0x2c00b8[_0x25c5('0x1e')]);})[_0x25c5('0x45')](function(_0x56c6f4){logger[_0x25c5('0x49')]('[%s][AUTOREPLY]\x20%s',_0x402d4f,JSON[_0x25c5('0x44')](_0x56c6f4));})[_0x25c5('0x47')](function(){Promise['resolve']()[_0x25c5('0x42')](function(){if(_0x155586[0x0]!=='2'||_0x2e8542[_0x25c5('0x16')])return;return rpc[_0x4fd25a+_0x25c5('0x4c')][_0x25c5('0x4d')](_0x2e8542['id'],{'autoreplyExecuted':!![]})[_0x25c5('0x42')](function(_0x367c12){logger[_0x25c5('0xf')](_0x25c5('0x17'),_0x402d4f,JSON['stringify'](_0x367c12));})[_0x25c5('0x45')](function(_0x345e96){logger[_0x25c5('0x49')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x402d4f,JSON['stringify'](_0x345e96));});})[_0x25c5('0x42')](function(){_0x2ba246[_0x25c5('0x19')]();});});}}}catch(_0x464070){logger[_0x25c5('0x49')](_0x25c5('0x10'),_0x402d4f,JSON[_0x25c5('0x44')](_0x464070));_0x2ba246[_0x25c5('0x4e')]();}};};
\ No newline at end of file
index 493e694..a7066d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbfc=['routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','info','format','system','Interaction','channel','update','interaction','then','catch','error','[%s][CLOSE]\x20%s','stop','moment','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcbfc,0xee));var _0xccbf=function(_0x105df9,_0x437d4b){_0x105df9=_0x105df9-0x0;var _0x1587da=_0xcbfc[_0x105df9];return _0x1587da;};'use strict';var moment=require(_0xccbf('0x0'));var logger=require(_0xccbf('0x1'))(_0xccbf('0x2'));var rpc={'chatInteraction':require(_0xccbf('0x3')),'openchannelInteraction':require(_0xccbf('0x4')),'smsInteraction':require(_0xccbf('0x5')),'mailInteraction':require(_0xccbf('0x6')),'faxInteraction':require(_0xccbf('0x7')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports['consequence']=function(_0x3b2b2c,_0x136fd8,_0x4ab083,_0x41264f){return function(_0x319e1c){try{logger[_0xccbf('0x8')]('[%s][CLOSE]\x20reason\x20%s',_0x3b2b2c,_0x136fd8[0x0]);var _0x2cffeb={'closed':0x1,'closedAt':moment()[_0xccbf('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0xccbf('0xa'),'disposition':_0x136fd8[0x0]};if(rpc[_0x41264f['channel']+_0xccbf('0xb')]){rpc[_0x41264f[_0xccbf('0xc')]+'Interaction'][_0xccbf('0xd')](_0x41264f[_0xccbf('0xe')]['id'],_0x2cffeb)[_0xccbf('0xf')](function(_0x503f9f){logger[_0xccbf('0x8')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x3b2b2c,_0x41264f[_0xccbf('0xe')]['id']);})[_0xccbf('0x10')](function(_0x372a40){logger[_0xccbf('0x11')](_0xccbf('0x12'),_0x3b2b2c,JSON['stringify'](_0x372a40));})['finally'](function(){_0x319e1c[_0xccbf('0x13')]();});}}catch(_0x34f3bb){logger[_0xccbf('0x11')](_0xccbf('0x12'),_0x3b2b2c,JSON['stringify'](_0x34f3bb));_0x319e1c[_0xccbf('0x13')]();}};};
\ No newline at end of file
+var _0x15c1=['finally','stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify'];(function(_0x9cfe28,_0x1a335c){var _0x54a1d0=function(_0x46bc02){while(--_0x46bc02){_0x9cfe28['push'](_0x9cfe28['shift']());}};_0x54a1d0(++_0x1a335c);}(_0x15c1,0xd1));var _0x115c=function(_0x5a969f,_0x3a4855){_0x5a969f=_0x5a969f-0x0;var _0x63d1f2=_0x15c1[_0x5a969f];return _0x63d1f2;};'use strict';var moment=require(_0x115c('0x0'));var logger=require(_0x115c('0x1'))(_0x115c('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x115c('0x3')),'smsInteraction':require(_0x115c('0x4')),'mailInteraction':require(_0x115c('0x5')),'faxInteraction':require(_0x115c('0x6')),'whatsappInteraction':require(_0x115c('0x7'))};exports['consequence']=function(_0xcc0fea,_0x453745,_0x5dd00d,_0x5d36a6){return function(_0x1b8cc4){try{logger['info']('[%s][CLOSE]\x20reason\x20%s',_0xcc0fea,_0x453745[0x0]);var _0x2118b2={'closed':0x1,'closedAt':moment()[_0x115c('0x8')](_0x115c('0x9')),'closeReason':_0x115c('0xa'),'disposition':_0x453745[0x0]};if(rpc[_0x5d36a6[_0x115c('0xb')]+'Interaction']){rpc[_0x5d36a6[_0x115c('0xb')]+_0x115c('0xc')][_0x115c('0xd')](_0x5d36a6[_0x115c('0xe')]['id'],_0x2118b2)[_0x115c('0xf')](function(_0x59f400){logger['info'](_0x115c('0x10'),_0xcc0fea,_0x5d36a6[_0x115c('0xe')]['id']);})[_0x115c('0x11')](function(_0x372962){logger[_0x115c('0x12')](_0x115c('0x13'),_0xcc0fea,JSON[_0x115c('0x14')](_0x372962));})[_0x115c('0x15')](function(){_0x1b8cc4[_0x115c('0x16')]();});}}catch(_0x1d6665){logger[_0x115c('0x12')](_0x115c('0x13'),_0xcc0fea,JSON['stringify'](_0x1d6665));_0x1b8cc4[_0x115c('0x16')]();}};};
\ No newline at end of file
index 023f86a..b65218d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1224=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','providerName','dialogflow','providerResponse','result','metadata','catch','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','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','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','body','getMustacheRender','Message','create','then','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop'];(function(_0x13f5d1,_0x12e3f7){var _0x5621f3=function(_0x3e589e){while(--_0x3e589e){_0x13f5d1['push'](_0x13f5d1['shift']());}};_0x5621f3(++_0x12e3f7);}(_0x1224,0x10d));var _0x4122=function(_0x5ee287,_0x49b6a1){_0x5ee287=_0x5ee287-0x0;var _0x2a1adf=_0x1224[_0x5ee287];return _0x2a1adf;};'use strict';var _=require(_0x4122('0x0'));var moment=require(_0x4122('0x1'));var apiai=require(_0x4122('0x2'));var md5=require(_0x4122('0x3'));var utils=require(_0x4122('0x4'));var logger=require(_0x4122('0x5'))('routing');var rpc={'chatMessage':require(_0x4122('0x6')),'openchannelMessage':require(_0x4122('0x7')),'mailMessage':require(_0x4122('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x4122('0x9')),'whatsappMessage':require(_0x4122('0xa'))};exports[_0x4122('0xb')]=function(_0x40b5e4,_0x2a952c){return function(_0x431470){try{if(!_[_0x4122('0xc')](this[_0x4122('0xd')][_0x4122('0xe')])){logger[_0x4122('0xf')](_0x4122('0x10'),_0x40b5e4,_0x4122('0x11'));return _0x431470[_0x4122('0x12')]();}var _0x35160c={'ContactId':this[_0x4122('0x13')]['id'],'sentAt':moment()[_0x4122('0x14')](_0x4122('0x15')),'direction':_0x4122('0x16')};if(this[_0x4122('0x17')]===_0x4122('0x18')||this[_0x4122('0x17')]===_0x4122('0x19')){_0x35160c[_0x4122('0x1a')]=this[_0x4122('0xd')][_0x4122('0x1a')];}var _0x292932=this[_0x4122('0x17')];if(_0x292932===_0x4122('0x1b')){_0x35160c[_0x4122('0x1c')]=this[_0x4122('0x1d')]['id'];}else{_0x35160c[_[_0x4122('0x1e')](_0x292932)+'AccountId']=this[_0x4122('0x1d')]['id'];}_0x35160c[_[_0x4122('0x1e')](_0x292932)+_0x4122('0x1f')]=this[_0x4122('0xd')]['id'];if(this['interaction'][_0x4122('0x20')]){var _0x19684e=_0x2a952c[0x2];if(!_['isEmpty'](_0x19684e)){_0x35160c[_0x4122('0x21')]=utils[_0x4122('0x22')](_0x19684e,this);return rpc[_0x292932+_0x4122('0x23')][_0x4122('0x24')](_0x35160c)[_0x4122('0x25')](function(_0x42374d){logger[_0x4122('0xf')]('[%s][DIALOGFLOW]\x20%s',_0x40b5e4,_0x35160c['body']);})['catch'](function(_0x43ebe7){logger[_0x4122('0x26')](_0x4122('0x10'),_0x40b5e4,JSON[_0x4122('0x27')](_0x43ebe7));})[_0x4122('0x28')](function(){logger[_0x4122('0xf')](_0x4122('0x29'),_0x40b5e4);_0x431470[_0x4122('0x2a')]();});}else{logger['info'](_0x4122('0x2b'),_0x40b5e4);_0x431470['stop']();}}else{var _0x4f949a=this;var _0x508cd7=apiai(_0x2a952c[0x0],{'language':_0x2a952c[0x1]||'en'});return _0x508cd7[_0x4122('0x2c')](this[_0x4122('0x2d')][_0x4122('0x21')],{'sessionId':md5(this['interaction']['id'])})[_0x4122('0x25')](function(_0x386cdc){_0x4f949a['body']['dialogflow']=_0x386cdc;_0x35160c[_0x4122('0x21')]=_0x386cdc['result']['fulfillment']['speech'];_0x35160c[_0x4122('0x2e')]=_0x4122('0x2f');_0x35160c[_0x4122('0x30')]=JSON[_0x4122('0x27')](_0x386cdc);return rpc[_0x292932+_0x4122('0x23')][_0x4122('0x24')](_0x35160c)[_0x4122('0x25')](function(_0x7fe50d){logger[_0x4122('0xf')](_0x4122('0x10'),_0x40b5e4,_0x35160c[_0x4122('0x21')]);if(_0x386cdc[_0x4122('0x31')][_0x4122('0x32')]['endConversation']){_0x431470[_0x4122('0x12')]();}else{_0x431470[_0x4122('0x2a')]();}})[_0x4122('0x33')](function(_0x31f141){logger['error'](_0x4122('0x10'),_0x40b5e4,JSON['stringify'](_0x31f141));_0x431470[_0x4122('0x12')]();});})[_0x4122('0x33')](function(_0x3a9633){logger[_0x4122('0x26')](_0x4122('0x10'),_0x40b5e4,_0x3a9633[_0x4122('0x2d')]);_0x431470[_0x4122('0x12')]();});}}catch(_0x427e8a){logger['error'](_0x4122('0x10'),_0x40b5e4,JSON[_0x4122('0x27')](_0x427e8a));_0x431470['stop']();}};};
\ No newline at end of file
+var _0x82c4=['message','speech','providerName','dialogflow','providerResponse','create','endConversation','catch','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','isNil','interaction','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','Message','then','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest'];(function(_0x316856,_0x330df1){var _0x153054=function(_0x410527){while(--_0x410527){_0x316856['push'](_0x316856['shift']());}};_0x153054(++_0x330df1);}(_0x82c4,0x1ca));var _0x482c=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x82c4[_0x5cb1af];return _0x8d7940;};'use strict';var _=require(_0x482c('0x0'));var moment=require(_0x482c('0x1'));var apiai=require(_0x482c('0x2'));var md5=require(_0x482c('0x3'));var utils=require(_0x482c('0x4'));var logger=require(_0x482c('0x5'))(_0x482c('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x482c('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x482c('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x482c('0x9'))};exports['consequence']=function(_0xfdb92,_0x32a503){return function(_0x35cdab){try{if(!_[_0x482c('0xa')](this[_0x482c('0xb')]['UserId'])){logger[_0x482c('0xc')](_0x482c('0xd'),_0xfdb92,_0x482c('0xe'));return _0x35cdab[_0x482c('0xf')]();}var _0x3c6c56={'ContactId':this[_0x482c('0x10')]['id'],'sentAt':moment()['format'](_0x482c('0x11')),'direction':_0x482c('0x12')};if(this[_0x482c('0x13')]==='sms'||this[_0x482c('0x13')]===_0x482c('0x14')){_0x3c6c56[_0x482c('0x15')]=this['interaction']['phone'];}var _0x7b12cf=this[_0x482c('0x13')];if(_0x7b12cf==='chat'){_0x3c6c56['ChatWebsiteId']=this[_0x482c('0x16')]['id'];}else{_0x3c6c56[_[_0x482c('0x17')](_0x7b12cf)+_0x482c('0x18')]=this[_0x482c('0x16')]['id'];}_0x3c6c56[_[_0x482c('0x17')](_0x7b12cf)+_0x482c('0x19')]=this[_0x482c('0xb')]['id'];if(this[_0x482c('0xb')][_0x482c('0x1a')]){var _0x1758fb=_0x32a503[0x2];if(!_[_0x482c('0x1b')](_0x1758fb)){_0x3c6c56[_0x482c('0x1c')]=utils['getMustacheRender'](_0x1758fb,this);return rpc[_0x7b12cf+_0x482c('0x1d')]['create'](_0x3c6c56)[_0x482c('0x1e')](function(_0x258148){logger['info']('[%s][DIALOGFLOW]\x20%s',_0xfdb92,_0x3c6c56[_0x482c('0x1c')]);})['catch'](function(_0x16fe9a){logger[_0x482c('0x1f')](_0x482c('0xd'),_0xfdb92,JSON[_0x482c('0x20')](_0x16fe9a));})['finally'](function(){logger[_0x482c('0xc')](_0x482c('0x21'),_0xfdb92);_0x35cdab[_0x482c('0x22')]();});}else{logger[_0x482c('0xc')](_0x482c('0x23'),_0xfdb92);_0x35cdab['stop']();}}else{var _0x4afcd9=this;var _0x238503=apiai(_0x32a503[0x0],{'language':_0x32a503[0x1]||'en'});return _0x238503[_0x482c('0x24')](this[_0x482c('0x25')]['body'],{'sessionId':md5(this[_0x482c('0xb')]['id'])})['then'](function(_0x2f3f96){_0x4afcd9[_0x482c('0x1c')]['dialogflow']=_0x2f3f96;_0x3c6c56[_0x482c('0x1c')]=_0x2f3f96['result']['fulfillment'][_0x482c('0x26')];_0x3c6c56[_0x482c('0x27')]=_0x482c('0x28');_0x3c6c56[_0x482c('0x29')]=JSON[_0x482c('0x20')](_0x2f3f96);return rpc[_0x7b12cf+_0x482c('0x1d')][_0x482c('0x2a')](_0x3c6c56)['then'](function(_0xb65836){logger[_0x482c('0xc')]('[%s][DIALOGFLOW]\x20%s',_0xfdb92,_0x3c6c56[_0x482c('0x1c')]);if(_0x2f3f96['result']['metadata'][_0x482c('0x2b')]){_0x35cdab['next']();}else{_0x35cdab[_0x482c('0x22')]();}})[_0x482c('0x2c')](function(_0x3079df){logger[_0x482c('0x1f')](_0x482c('0xd'),_0xfdb92,JSON[_0x482c('0x20')](_0x3079df));_0x35cdab[_0x482c('0xf')]();});})[_0x482c('0x2c')](function(_0x24b4df){logger[_0x482c('0x1f')](_0x482c('0xd'),_0xfdb92,_0x24b4df[_0x482c('0x25')]);_0x35cdab[_0x482c('0xf')]();});}}catch(_0x8779c2){logger[_0x482c('0x1f')](_0x482c('0xd'),_0xfdb92,JSON[_0x482c('0x20')](_0x8779c2));_0x35cdab[_0x482c('0x22')]();}};};
\ No newline at end of file
index 315bbdd..309a5a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa859=['create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','out','channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','stringify','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','fulfillmentText','all','message','lodash','dialogflow','md5','moment','bluebird','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','clone','body','Message'];(function(_0x2a4949,_0x444420){var _0x2bb1d9=function(_0x41534a){while(--_0x41534a){_0x2a4949['push'](_0x2a4949['shift']());}};_0x2bb1d9(++_0x444420);}(_0xa859,0x77));var _0x9a85=function(_0x387064,_0x257f4a){_0x387064=_0x387064-0x0;var _0x3c64dd=_0xa859[_0x387064];return _0x3c64dd;};'use strict';var _=require(_0x9a85('0x0'));var dialogflow=require(_0x9a85('0x1'));var md5=require(_0x9a85('0x2'));var moment=require(_0x9a85('0x3'));var Promise=require(_0x9a85('0x4'));var logger=require('../../../../config/logger')(_0x9a85('0x5'));var utils=require('./utils');var rpc={'chatMessage':require(_0x9a85('0x6')),'openchannelMessage':require(_0x9a85('0x7')),'mailMessage':require(_0x9a85('0x8')),'smsMessage':require(_0x9a85('0x9')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x4b5238,_0x18f40b,_0x5dac3e,_0x23d1d6){return new Promise(function(_0x1433de,_0x57dc49){var _0x425d47=_[_0x9a85('0xa')](_0x5dac3e);_0x425d47[_0x9a85('0xb')]=_0x23d1d6;return rpc[_0x18f40b+_0x9a85('0xc')][_0x9a85('0xd')](_0x425d47)[_0x9a85('0xe')](function(){logger['info'](_0x9a85('0xf'),_0x4b5238,_0x425d47[_0x9a85('0xb')]);_0x1433de();})[_0x9a85('0x10')](function(_0x513c39){logger[_0x9a85('0x11')](_0x9a85('0xf'),_0x4b5238,JSON['stringify'](_0x513c39));_0x57dc49(_0x513c39);});});}exports['consequence']=function(_0x262b0b,_0x2beee2){return function(_0x4d867d){try{if(!_[_0x9a85('0x12')](this[_0x9a85('0x13')][_0x9a85('0x14')])){logger[_0x9a85('0x15')](_0x9a85('0xf'),_0x262b0b,_0x9a85('0x16'));return _0x4d867d[_0x9a85('0x17')]();}var _0x56f554={'ContactId':this[_0x9a85('0x18')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x9a85('0x19')};if(this[_0x9a85('0x1a')]===_0x9a85('0x1b')||this['channel']==='whatsapp'){_0x56f554[_0x9a85('0x1c')]=this[_0x9a85('0x13')][_0x9a85('0x1c')];}var _0x293dbe=this['channel'];if(_0x293dbe===_0x9a85('0x1d')){_0x56f554[_0x9a85('0x1e')]=this[_0x9a85('0x1f')]['id'];}else{_0x56f554[_[_0x9a85('0x20')](_0x293dbe)+_0x9a85('0x21')]=this[_0x9a85('0x1f')]['id'];}_0x56f554[_['upperFirst'](_0x293dbe)+_0x9a85('0x22')]=this['interaction']['id'];if(this[_0x9a85('0x13')][_0x9a85('0x23')]){var _0x28d8ec=_0x2beee2[0x4];if(!_[_0x9a85('0x24')](_0x28d8ec)){_0x56f554[_0x9a85('0xb')]=utils[_0x9a85('0x25')](_0x28d8ec,this);return rpc[_0x293dbe+_0x9a85('0xc')][_0x9a85('0xd')](_0x56f554)[_0x9a85('0xe')](function(_0x4b3a89){logger[_0x9a85('0x15')](_0x9a85('0xf'),_0x262b0b,_0x56f554[_0x9a85('0xb')]);})[_0x9a85('0x10')](function(_0x5883e4){logger[_0x9a85('0x11')](_0x9a85('0xf'),_0x262b0b,JSON[_0x9a85('0x26')](_0x5883e4));})['finally'](function(){logger[_0x9a85('0x15')](_0x9a85('0x27'),_0x262b0b);_0x4d867d[_0x9a85('0x28')]();});}else{logger['info'](_0x9a85('0x29'),_0x262b0b);_0x4d867d['stop']();}}else{var _0x7e501f=this;var _0x42eb0e=_0x2beee2[0x2][_0x9a85('0x2a')](/\\n/g,'\x0a');var _0x5a7d37={'credentials':{'private_key':_0x42eb0e,'client_email':_0x2beee2[0x1]}};var _0xb2a9f0=new dialogflow['SessionsClient'](_0x5a7d37);var _0x3dd876=_0xb2a9f0['sessionPath'](_0x2beee2[0x0],md5(_0x7e501f[_0x9a85('0x13')]['id']));var _0x27a538={'session':_0x3dd876,'queryInput':{'text':{'text':_0x7e501f['message']['body'],'languageCode':_0x2beee2[0x3]||'en'}}};return _0xb2a9f0[_0x9a85('0x2b')](_0x27a538)['then'](function(_0x572c35){if(_0x572c35&&_0x572c35[_0x9a85('0x2c')]){_0x7e501f[_0x9a85('0xb')][_0x9a85('0x2d')]=_0x572c35;var _0x54f2d2=_0x572c35[0x0];var _0x1939f7=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x2f')]&&_0x54f2d2[_0x9a85('0x2e')]['diagnosticInfo'][_0x9a85('0x30')]?_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x2f')]['fields'][_0x9a85('0x31')][_0x9a85('0x32')]:![];_0x7e501f[_0x9a85('0xb')][_0x9a85('0x33')]=_0x54f2d2[_0x9a85('0x2e')]['action'];_0x7e501f[_0x9a85('0xb')][_0x9a85('0x34')]=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x35')];_0x7e501f[_0x9a85('0xb')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x2f')]&&_0x54f2d2['queryResult'][_0x9a85('0x2f')]['fields']?_0x54f2d2['queryResult'][_0x9a85('0x2f')][_0x9a85('0x30')][_0x9a85('0x31')][_0x9a85('0x32')]:![];_0x7e501f[_0x9a85('0xb')][_0x9a85('0x36')]=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x37')]['name'];_0x7e501f[_0x9a85('0xb')][_0x9a85('0x38')]=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x37')]['displayName'];_0x7e501f[_0x9a85('0xb')][_0x9a85('0x39')]=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x37')]['isFallback'];_0x7e501f[_0x9a85('0xb')][_0x9a85('0x3a')]=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x3b')];_0x7e501f[_0x9a85('0xb')]['DIALOGFLOWV2_QUERYTEXT']=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x3c')];_0x7e501f['body'][_0x9a85('0x3d')]=_0x54f2d2[_0x9a85('0x2e')][_0x9a85('0x3e')];_0x56f554['providerName']=_0x9a85('0x2d');_0x56f554['providerResponse']=JSON['stringify'](_0x572c35);var _0x28d19e=[];for(var _0x3c9b19=0x0;_0x3c9b19<_0x572c35[_0x9a85('0x2c')];_0x3c9b19++){var _0x41d7b8=_0x572c35[_0x3c9b19];if(_0x41d7b8&&_0x41d7b8['queryResult']&&_0x41d7b8[_0x9a85('0x2e')]['fulfillmentText']){_0x28d19e['push'](createMessage(_0x262b0b,_0x293dbe,_0x56f554,_0x41d7b8[_0x9a85('0x2e')][_0x9a85('0x3f')]));}}return Promise[_0x9a85('0x40')](_0x28d19e)[_0x9a85('0xe')](function(){if(_0x1939f7){_0x4d867d[_0x9a85('0x17')]();}else{_0x4d867d[_0x9a85('0x28')]();}})[_0x9a85('0x10')](function(_0x454ef9){logger[_0x9a85('0x11')](_0x9a85('0xf'),_0x262b0b,JSON[_0x9a85('0x26')](_0x454ef9));_0x4d867d[_0x9a85('0x17')]();});}})[_0x9a85('0x10')](function(_0x3d85cd){logger['error'](_0x9a85('0xf'),_0x262b0b,_0x3d85cd[_0x9a85('0x41')]);_0x4d867d[_0x9a85('0x17')]();});}}catch(_0x4908c2){logger['error'](_0x9a85('0xf'),_0x262b0b,JSON[_0x9a85('0x26')](_0x4908c2));_0x4d867d[_0x9a85('0x28')]();}};};
\ No newline at end of file
+var _0xf849=['DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','all','next','lodash','dialogflow','md5','bluebird','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','isNil','interaction','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','SessionsClient','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation'];(function(_0x5780f0,_0x107a14){var _0x492659=function(_0x1f80cc){while(--_0x1f80cc){_0x5780f0['push'](_0x5780f0['shift']());}};_0x492659(++_0x107a14);}(_0xf849,0x193));var _0x9f84=function(_0x595c4e,_0x444249){_0x595c4e=_0x595c4e-0x0;var _0x1e224c=_0xf849[_0x595c4e];return _0x1e224c;};'use strict';var _=require(_0x9f84('0x0'));var dialogflow=require(_0x9f84('0x1'));var md5=require(_0x9f84('0x2'));var moment=require('moment');var Promise=require(_0x9f84('0x3'));var logger=require(_0x9f84('0x4'))(_0x9f84('0x5'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x9f84('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x9f84('0x7'))};function createMessage(_0x598edf,_0x5643c9,_0x11eea9,_0x583aca){return new Promise(function(_0xf06203,_0x463b93){var _0x1bac72=_[_0x9f84('0x8')](_0x11eea9);_0x1bac72[_0x9f84('0x9')]=_0x583aca;return rpc[_0x5643c9+_0x9f84('0xa')][_0x9f84('0xb')](_0x1bac72)[_0x9f84('0xc')](function(){logger[_0x9f84('0xd')](_0x9f84('0xe'),_0x598edf,_0x1bac72[_0x9f84('0x9')]);_0xf06203();})[_0x9f84('0xf')](function(_0x425e52){logger[_0x9f84('0x10')](_0x9f84('0xe'),_0x598edf,JSON[_0x9f84('0x11')](_0x425e52));_0x463b93(_0x425e52);});});}exports['consequence']=function(_0x2bd258,_0x3fc0c7){return function(_0x27e479){try{if(!_[_0x9f84('0x12')](this[_0x9f84('0x13')]['UserId'])){logger[_0x9f84('0xd')](_0x9f84('0xe'),_0x2bd258,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x27e479['next']();}var _0xc359b5={'ContactId':this[_0x9f84('0x14')]['id'],'sentAt':moment()[_0x9f84('0x15')](_0x9f84('0x16')),'direction':_0x9f84('0x17')};if(this['channel']===_0x9f84('0x18')||this[_0x9f84('0x19')]==='whatsapp'){_0xc359b5[_0x9f84('0x1a')]=this[_0x9f84('0x13')]['phone'];}var _0x3c2c01=this['channel'];if(_0x3c2c01==='chat'){_0xc359b5[_0x9f84('0x1b')]=this[_0x9f84('0x1c')]['id'];}else{_0xc359b5[_[_0x9f84('0x1d')](_0x3c2c01)+_0x9f84('0x1e')]=this[_0x9f84('0x1c')]['id'];}_0xc359b5[_['upperFirst'](_0x3c2c01)+_0x9f84('0x1f')]=this['interaction']['id'];if(this[_0x9f84('0x13')][_0x9f84('0x20')]){var _0x126860=_0x3fc0c7[0x4];if(!_[_0x9f84('0x21')](_0x126860)){_0xc359b5[_0x9f84('0x9')]=utils['getMustacheRender'](_0x126860,this);return rpc[_0x3c2c01+_0x9f84('0xa')]['create'](_0xc359b5)[_0x9f84('0xc')](function(_0x44c857){logger[_0x9f84('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x2bd258,_0xc359b5[_0x9f84('0x9')]);})['catch'](function(_0x430c66){logger[_0x9f84('0x10')](_0x9f84('0xe'),_0x2bd258,JSON[_0x9f84('0x11')](_0x430c66));})[_0x9f84('0x22')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x2bd258);_0x27e479['stop']();});}else{logger[_0x9f84('0xd')](_0x9f84('0x23'),_0x2bd258);_0x27e479[_0x9f84('0x24')]();}}else{var _0x1c9ba3=this;var _0x826b26=_0x3fc0c7[0x2]['replace'](/\\n/g,'\x0a');var _0x2bdd0f={'credentials':{'private_key':_0x826b26,'client_email':_0x3fc0c7[0x1]}};var _0x17dd4a=new dialogflow[(_0x9f84('0x25'))](_0x2bdd0f);var _0x155cb5=_0x17dd4a['sessionPath'](_0x3fc0c7[0x0],md5(_0x1c9ba3['interaction']['id']));var _0xd2c673={'session':_0x155cb5,'queryInput':{'text':{'text':_0x1c9ba3[_0x9f84('0x26')][_0x9f84('0x9')],'languageCode':_0x3fc0c7[0x3]||'en'}}};return _0x17dd4a['detectIntent'](_0xd2c673)['then'](function(_0x5e3574){if(_0x5e3574&&_0x5e3574[_0x9f84('0x27')]){_0x1c9ba3['body'][_0x9f84('0x28')]=_0x5e3574;var _0x30426f=_0x5e3574[0x0];var _0x1ecc89=_0x30426f[_0x9f84('0x29')][_0x9f84('0x2a')]&&_0x30426f[_0x9f84('0x29')][_0x9f84('0x2a')]['fields']?_0x30426f['queryResult'][_0x9f84('0x2a')][_0x9f84('0x2b')][_0x9f84('0x2c')]['boolValue']:![];_0x1c9ba3['body'][_0x9f84('0x2d')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x2e')];_0x1c9ba3['body'][_0x9f84('0x2f')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x30')];_0x1c9ba3[_0x9f84('0x9')][_0x9f84('0x31')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x2a')]&&_0x30426f['queryResult'][_0x9f84('0x2a')][_0x9f84('0x2b')]?_0x30426f['queryResult'][_0x9f84('0x2a')][_0x9f84('0x2b')]['end_conversation']['boolValue']:![];_0x1c9ba3[_0x9f84('0x9')][_0x9f84('0x32')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x33')][_0x9f84('0x34')];_0x1c9ba3['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x30426f[_0x9f84('0x29')][_0x9f84('0x33')]['displayName'];_0x1c9ba3[_0x9f84('0x9')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x30426f[_0x9f84('0x29')][_0x9f84('0x33')][_0x9f84('0x35')];_0x1c9ba3[_0x9f84('0x9')][_0x9f84('0x36')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x37')];_0x1c9ba3[_0x9f84('0x9')][_0x9f84('0x38')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x39')];_0x1c9ba3[_0x9f84('0x9')][_0x9f84('0x3a')]=_0x30426f[_0x9f84('0x29')][_0x9f84('0x3b')];_0xc359b5['providerName']=_0x9f84('0x28');_0xc359b5[_0x9f84('0x3c')]=JSON[_0x9f84('0x11')](_0x5e3574);var _0x10e2f9=[];for(var _0x228e36=0x0;_0x228e36<_0x5e3574[_0x9f84('0x27')];_0x228e36++){var _0x37c6b9=_0x5e3574[_0x228e36];if(_0x37c6b9&&_0x37c6b9[_0x9f84('0x29')]&&_0x37c6b9['queryResult']['fulfillmentText']){_0x10e2f9['push'](createMessage(_0x2bd258,_0x3c2c01,_0xc359b5,_0x37c6b9[_0x9f84('0x29')][_0x9f84('0x3d')]));}}return Promise[_0x9f84('0x3e')](_0x10e2f9)[_0x9f84('0xc')](function(){if(_0x1ecc89){_0x27e479[_0x9f84('0x3f')]();}else{_0x27e479[_0x9f84('0x24')]();}})['catch'](function(_0x418d83){logger[_0x9f84('0x10')](_0x9f84('0xe'),_0x2bd258,JSON[_0x9f84('0x11')](_0x418d83));_0x27e479[_0x9f84('0x3f')]();});}})['catch'](function(_0x51ccfb){logger['error'](_0x9f84('0xe'),_0x2bd258,_0x51ccfb['message']);_0x27e479['next']();});}}catch(_0x120291){logger[_0x9f84('0x10')](_0x9f84('0xe'),_0x2bd258,JSON[_0x9f84('0x11')](_0x120291));_0x27e479[_0x9f84('0x24')]();}};};
\ No newline at end of file
index effffb7..5d2dc42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcef=['number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','message','stop','priorityTrue','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','condition','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','validate','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x63af6c,_0x544156){var _0x5d97b4=function(_0x1b93b6){while(--_0x1b93b6){_0x63af6c['push'](_0x63af6c['shift']());}};_0x5d97b4(++_0x544156);}(_0xbcef,0x80));var _0xfbce=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xbcef[_0x3b380d];return _0x54502b;};'use strict';var schema=require(_0xfbce('0x0'));var _=require('lodash');var htmlToText=require('html-to-text');var utils=require('./utils');var logger=require(_0xfbce('0x1'))('routing');var gotoif=schema({'condition':{'type':_0xfbce('0x2'),'required':!![],'message':_0xfbce('0x3')},'priorityTrue':{'type':_0xfbce('0x4'),'message':_0xfbce('0x5')},'priorityFalse':{'type':_0xfbce('0x4'),'message':_0xfbce('0x6')}});exports[_0xfbce('0x7')]=function(_0x2a50e8,_0x3da9f1){return function(_0x14bc28){try{var _0x4e6ca8={'condition':htmlToText['fromString'](utils[_0xfbce('0x8')](_0x3da9f1[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x3da9f1[0x1],'priorityFalse':_0x3da9f1[0x2]};var _0x506fc8=gotoif[_0xfbce('0x0')](_0x4e6ca8,{'typecast':!![]});if(_0x506fc8[_0xfbce('0x9')]){logger[_0xfbce('0xa')](_0xfbce('0xb'),_0x2a50e8,_[_0xfbce('0xc')](_0x506fc8,_0xfbce('0xd'))['join'](',\x20'));_0x14bc28[_0xfbce('0xe')]();}else{try{var _0x5a9506=eval('('+_0x4e6ca8['condition']+')');var _0x338c50=_0x5a9506?_0x4e6ca8[_0xfbce('0xf')]:_0x4e6ca8['priorityFalse'];logger[_0xfbce('0x10')](_0xfbce('0x11'),_0x2a50e8,_0x4e6ca8[_0xfbce('0x12')],_0x5a9506,_0x338c50||'next');if(_0x338c50){var _0x2f6d95=_['findIndex'](_0x14bc28[_0xfbce('0x13')](),{'p':_0x338c50});if(_0x2f6d95>=0x0){logger[_0xfbce('0x10')](_0xfbce('0x14'),_0x2a50e8,_0x338c50||_0xfbce('0x15'),_0x2f6d95);_0x14bc28[_0xfbce('0x15')](_0x2f6d95);}else{logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x2a50e8,_0x338c50||_0xfbce('0x15'));_0x14bc28[_0xfbce('0xe')]();}}else{_0x14bc28[_0xfbce('0x15')]();}}catch(_0xa2d2ee){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x2a50e8,_0xa2d2ee[_0xfbce('0xd')]);_0x14bc28[_0xfbce('0xe')]();}}}catch(_0x2e033c){logger['error'](_0xfbce('0xb'),_0x2a50e8,JSON['stringify'](_0x2e033c));_0x14bc28[_0xfbce('0xe')]();}};};
\ No newline at end of file
+var _0x595a=['condition','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','./utils','../../../../config/logger','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','[%s][GOTOIF]\x20%s','map','message','stop','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x595a,0xfc));var _0xa595=function(_0x493dda,_0x1528d3){_0x493dda=_0x493dda-0x0;var _0x31a5a6=_0x595a[_0x493dda];return _0x31a5a6;};'use strict';var schema=require(_0xa595('0x0'));var _=require(_0xa595('0x1'));var htmlToText=require('html-to-text');var utils=require(_0xa595('0x2'));var logger=require(_0xa595('0x3'))('routing');var gotoif=schema({'condition':{'type':_0xa595('0x4'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0xa595('0x5'),'message':_0xa595('0x6')},'priorityFalse':{'type':_0xa595('0x5'),'message':_0xa595('0x7')}});exports[_0xa595('0x8')]=function(_0x32c9c3,_0xb8efe0){return function(_0x1efdbc){try{var _0x2452c7={'condition':htmlToText['fromString'](utils[_0xa595('0x9')](_0xb8efe0[0x0],this),{'wordwrap':![]})[_0xa595('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0xb8efe0[0x1],'priorityFalse':_0xb8efe0[0x2]};var _0x383a8d=gotoif[_0xa595('0x0')](_0x2452c7,{'typecast':!![]});if(_0x383a8d[_0xa595('0xb')]){logger['error'](_0xa595('0xc'),_0x32c9c3,_[_0xa595('0xd')](_0x383a8d,_0xa595('0xe'))['join'](',\x20'));_0x1efdbc[_0xa595('0xf')]();}else{try{var _0x3b13c3=eval('('+_0x2452c7['condition']+')');var _0x3db49e=_0x3b13c3?_0x2452c7['priorityTrue']:_0x2452c7['priorityFalse'];logger[_0xa595('0x10')](_0xa595('0x11'),_0x32c9c3,_0x2452c7[_0xa595('0x12')],_0x3b13c3,_0x3db49e||_0xa595('0x13'));if(_0x3db49e){var _0x461b50=_[_0xa595('0x14')](_0x1efdbc[_0xa595('0x15')](),{'p':_0x3db49e});if(_0x461b50>=0x0){logger[_0xa595('0x10')](_0xa595('0x16'),_0x32c9c3,_0x3db49e||_0xa595('0x13'),_0x461b50);_0x1efdbc['next'](_0x461b50);}else{logger['info'](_0xa595('0x17'),_0x32c9c3,_0x3db49e||_0xa595('0x13'));_0x1efdbc[_0xa595('0xf')]();}}else{_0x1efdbc[_0xa595('0x13')]();}}catch(_0x3d2054){logger[_0xa595('0x18')](_0xa595('0x19'),_0x32c9c3,_0x3d2054[_0xa595('0xe')]);_0x1efdbc[_0xa595('0xf')]();}}}catch(_0x2ff0ea){logger['error']('[%s][GOTOIF]\x20%s',_0x32c9c3,JSON[_0xa595('0x1a')](_0x2ff0ea));_0x1efdbc[_0xa595('0xf')]();}};};
\ No newline at end of file
index 9dd0f25..9848e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f7=['length','error','[%s][GOTOP]\x20%s','map','message','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','validate','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence'];(function(_0x412e1a,_0x48f2e4){var _0x279b6a=function(_0x45f97d){while(--_0x45f97d){_0x412e1a['push'](_0x412e1a['shift']());}};_0x279b6a(++_0x48f2e4);}(_0xb2f7,0xc2));var _0x7b2f=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xb2f7[_0x2d7f0e];return _0x110b07;};'use strict';var schema=require(_0x7b2f('0x0'));var _=require('lodash');var logger=require('../../../../config/logger')('routing');var gotop=schema({'priority':{'type':_0x7b2f('0x1'),'required':!![],'message':_0x7b2f('0x2')}});exports[_0x7b2f('0x3')]=function(_0x3650a5,_0x1787b1){return function(_0x52cef2){try{var _0x1bd31a={'priority':_0x1787b1[0x0]};var _0x39123e=gotop['validate'](_0x1bd31a,{'typecast':!![]});if(_0x39123e[_0x7b2f('0x4')]){logger[_0x7b2f('0x5')](_0x7b2f('0x6'),_0x3650a5,_[_0x7b2f('0x7')](_0x39123e,_0x7b2f('0x8'))['join'](',\x20'));_0x52cef2[_0x7b2f('0x9')]();}else{logger[_0x7b2f('0xa')](_0x7b2f('0xb'),_0x3650a5,_0x1bd31a[_0x7b2f('0xc')]);if(_0x1bd31a[_0x7b2f('0xc')]){var _0x26c29e=_[_0x7b2f('0xd')](_0x52cef2[_0x7b2f('0xe')](),{'p':_0x1bd31a[_0x7b2f('0xc')]});if(_0x26c29e>=0x0){logger['info'](_0x7b2f('0xf'),_0x3650a5,_0x1bd31a[_0x7b2f('0xc')]||_0x7b2f('0x10'),_0x26c29e);_0x52cef2[_0x7b2f('0x10')](_0x26c29e);}else{logger['info'](_0x7b2f('0x11'),_0x3650a5,_0x1bd31a[_0x7b2f('0xc')]||_0x7b2f('0x10'));_0x52cef2['stop']();}}else{_0x52cef2[_0x7b2f('0x10')]();}}}catch(_0x4579bb){logger['error'](_0x7b2f('0x6'),_0x3650a5,JSON['stringify'](_0x4579bb));_0x52cef2[_0x7b2f('0x9')]();}};};
\ No newline at end of file
+var _0x3f53=['consequence','validate','error','map','message','join','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','next','stop','[%s][GOTOP]\x20%s','stringify','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'];(function(_0xe9a384,_0x2e44b3){var _0x4d47aa=function(_0x52e705){while(--_0x52e705){_0xe9a384['push'](_0xe9a384['shift']());}};_0x4d47aa(++_0x2e44b3);}(_0x3f53,0x121));var _0x33f5=function(_0x4995fc,_0xcf8a8a){_0x4995fc=_0x4995fc-0x0;var _0x1a28c1=_0x3f53[_0x4995fc];return _0x1a28c1;};'use strict';var schema=require('validate');var _=require(_0x33f5('0x0'));var logger=require(_0x33f5('0x1'))(_0x33f5('0x2'));var gotop=schema({'priority':{'type':_0x33f5('0x3'),'required':!![],'message':_0x33f5('0x4')}});exports[_0x33f5('0x5')]=function(_0x2c434f,_0x300aa5){return function(_0x2e1052){try{var _0x1076c8={'priority':_0x300aa5[0x0]};var _0x514969=gotop[_0x33f5('0x6')](_0x1076c8,{'typecast':!![]});if(_0x514969['length']){logger[_0x33f5('0x7')]('[%s][GOTOP]\x20%s',_0x2c434f,_[_0x33f5('0x8')](_0x514969,_0x33f5('0x9'))[_0x33f5('0xa')](',\x20'));_0x2e1052['stop']();}else{logger[_0x33f5('0xb')](_0x33f5('0xc'),_0x2c434f,_0x1076c8[_0x33f5('0xd')]);if(_0x1076c8[_0x33f5('0xd')]){var _0x43413d=_[_0x33f5('0xe')](_0x2e1052[_0x33f5('0xf')](),{'p':_0x1076c8[_0x33f5('0xd')]});if(_0x43413d>=0x0){logger[_0x33f5('0xb')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x2c434f,_0x1076c8[_0x33f5('0xd')]||'next',_0x43413d);_0x2e1052['next'](_0x43413d);}else{logger['info'](_0x33f5('0x10'),_0x2c434f,_0x1076c8[_0x33f5('0xd')]||_0x33f5('0x11'));_0x2e1052[_0x33f5('0x12')]();}}else{_0x2e1052[_0x33f5('0x11')]();}}}catch(_0x3f045d){logger['error'](_0x33f5('0x13'),_0x2c434f,JSON[_0x33f5('0x14')](_0x3f045d));_0x2e1052[_0x33f5('0x12')]();}};};
\ No newline at end of file
index b393ca2..bdfbd32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff17=['AccountId','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','catch','error','stop','stringify','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','account','upperFirst'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xff17,0x1ee));var _0x7ff1=function(_0x427617,_0x38e793){_0x427617=_0x427617-0x0;var _0xcc89e8=_0xff17[_0x427617];return _0xcc89e8;};'use strict';var _=require(_0x7ff1('0x0'));var utils=require(_0x7ff1('0x1'));var logger=require('../../../../config/logger')(_0x7ff1('0x2'));var rpc={'chatMessage':require(_0x7ff1('0x3')),'openchannelMessage':require(_0x7ff1('0x4')),'mailMessage':require(_0x7ff1('0x5')),'smsMessage':require(_0x7ff1('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7ff1('0x7'))};exports[_0x7ff1('0x8')]=function(_0x48c2e9,_0x503ae2){return function(_0x2fa878){try{var _0x2c473f={'body':utils[_0x7ff1('0x9')](_0x503ae2[0x0],this),'ContactId':this[_0x7ff1('0xa')]['id']};if(this[_0x7ff1('0xb')]===_0x7ff1('0xc')){_0x2c473f[_0x7ff1('0xd')]=this[_0x7ff1('0xe')]['id'];}else{_0x2c473f[_[_0x7ff1('0xf')](this['channel'])+_0x7ff1('0x10')]=this[_0x7ff1('0xe')]['id'];}_0x2c473f[_[_0x7ff1('0xf')](this[_0x7ff1('0xb')])+_0x7ff1('0x11')]=this[_0x7ff1('0x12')]['id'];if(rpc[this[_0x7ff1('0xb')]+'Message']){return rpc[this['channel']+_0x7ff1('0x13')][_0x7ff1('0x14')](_0x2c473f)[_0x7ff1('0x15')](function(_0x3b2e50){logger[_0x7ff1('0x16')](_0x7ff1('0x17'),_0x48c2e9,_0x2c473f[_0x7ff1('0x18')]);_0x2fa878[_0x7ff1('0x19')]();})[_0x7ff1('0x1a')](function(_0x376a1d){logger[_0x7ff1('0x1b')](_0x7ff1('0x17'),_0x48c2e9,JSON['stringify'](_0x376a1d));_0x2fa878[_0x7ff1('0x1c')]();});}}catch(_0x2fb5b4){logger[_0x7ff1('0x1b')](_0x7ff1('0x17'),_0x48c2e9,JSON[_0x7ff1('0x1d')](_0x2fb5b4));_0x2fa878[_0x7ff1('0x1c')]();}};};
\ No newline at end of file
+var _0xc4b0=['error','lodash','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','contact','chat','account','upperFirst','channel','InteractionId','interaction','create','then','info','[%s][MESSAGE]\x20%s','next','catch','stringify','stop'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xc4b0,0xfb));var _0x0c4b=function(_0x2157ab,_0x379b9d){_0x2157ab=_0x2157ab-0x0;var _0x4d1011=_0xc4b0[_0x2157ab];return _0x4d1011;};'use strict';var _=require(_0x0c4b('0x0'));var utils=require('./utils');var logger=require(_0x0c4b('0x1'))(_0x0c4b('0x2'));var rpc={'chatMessage':require(_0x0c4b('0x3')),'openchannelMessage':require(_0x0c4b('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x0c4b('0x5')),'faxMessage':require(_0x0c4b('0x6')),'whatsappMessage':require(_0x0c4b('0x7'))};exports[_0x0c4b('0x8')]=function(_0xffae4a,_0x2a9b3e){return function(_0x3b0593){try{var _0x5637ed={'body':utils['getMustacheRender'](_0x2a9b3e[0x0],this),'ContactId':this[_0x0c4b('0x9')]['id']};if(this['channel']===_0x0c4b('0xa')){_0x5637ed['ChatWebsiteId']=this[_0x0c4b('0xb')]['id'];}else{_0x5637ed[_[_0x0c4b('0xc')](this[_0x0c4b('0xd')])+'AccountId']=this[_0x0c4b('0xb')]['id'];}_0x5637ed[_['upperFirst'](this['channel'])+_0x0c4b('0xe')]=this[_0x0c4b('0xf')]['id'];if(rpc[this['channel']+'Message']){return rpc[this['channel']+'Message'][_0x0c4b('0x10')](_0x5637ed)[_0x0c4b('0x11')](function(_0x3b91ef){logger[_0x0c4b('0x12')](_0x0c4b('0x13'),_0xffae4a,_0x5637ed['body']);_0x3b0593[_0x0c4b('0x14')]();})[_0x0c4b('0x15')](function(_0x568e2f){logger['error'](_0x0c4b('0x13'),_0xffae4a,JSON[_0x0c4b('0x16')](_0x568e2f));_0x3b0593[_0x0c4b('0x17')]();});}}catch(_0x7a5547){logger[_0x0c4b('0x18')](_0x0c4b('0x13'),_0xffae4a,JSON[_0x0c4b('0x16')](_0x7a5547));_0x3b0593[_0x0c4b('0x17')]();}};};
\ No newline at end of file
index cb9a586..94de6a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4faa=['[%s][NOOP]\x20%s','stringify','stop','./utils','../../../../config/logger','routing','info','getMustacheRender','next'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4faa,0x198));var _0xa4fa=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0x4faa[_0x58afd5];return _0x3e503b;};'use strict';var utils=require(_0xa4fa('0x0'));var logger=require(_0xa4fa('0x1'))(_0xa4fa('0x2'));exports['consequence']=function(_0x2632fa,_0x233720){return function(_0x100831){try{logger[_0xa4fa('0x3')]('[%s][NOOP]\x20%s',_0x2632fa,utils[_0xa4fa('0x4')](_0x233720[0x0],this));_0x100831[_0xa4fa('0x5')]();}catch(_0x579392){logger['error'](_0xa4fa('0x6'),_0x2632fa,JSON[_0xa4fa('0x7')](_0x579392));_0x100831[_0xa4fa('0x8')]();}};};
\ No newline at end of file
+var _0xa8fa=['error','[%s][NOOP]\x20%s','stringify','../../../../config/logger','routing','consequence','getMustacheRender','next'];(function(_0x116249,_0x57af30){var _0x53b8a3=function(_0x44852d){while(--_0x44852d){_0x116249['push'](_0x116249['shift']());}};_0x53b8a3(++_0x57af30);}(_0xa8fa,0x17b));var _0xaa8f=function(_0x3524a0,_0x368655){_0x3524a0=_0x3524a0-0x0;var _0x1e8636=_0xa8fa[_0x3524a0];return _0x1e8636;};'use strict';var utils=require('./utils');var logger=require(_0xaa8f('0x0'))(_0xaa8f('0x1'));exports[_0xaa8f('0x2')]=function(_0x5694a3,_0x318354){return function(_0x5a90c7){try{logger['info']('[%s][NOOP]\x20%s',_0x5694a3,utils[_0xaa8f('0x3')](_0x318354[0x0],this));_0x5a90c7[_0xaa8f('0x4')]();}catch(_0x492690){logger[_0xaa8f('0x5')](_0xaa8f('0x6'),_0x5694a3,JSON[_0xaa8f('0x7')](_0x492690));_0x5a90c7['stop']();}};};
\ No newline at end of file
index 3ebf130..ca39681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa9c=['create\x20queue\x20report','waiting','[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','timeout','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','ioredis','../../../../config/environment','routing','./strategy','redis','localhost','socket.io-emitter','queue_id','account','queue','from','clone','format','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','QueueId','InteractionId','interaction','channel','MessageId','message','chat','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','error'];(function(_0x494a80,_0x4a5b20){var _0x20b8d6=function(_0x5c016c){while(--_0x5c016c){_0x494a80['push'](_0x494a80['shift']());}};_0x20b8d6(++_0x4a5b20);}(_0xfa9c,0xae));var _0xcfa9=function(_0x41f967,_0x2fb3a2){_0x41f967=_0x41f967-0x0;var _0x2beb40=_0xfa9c[_0x41f967];return _0x2beb40;};'use strict';var schema=require('validate');var _=require(_0xcfa9('0x0'));var util=require(_0xcfa9('0x1'));var seqqueue=require('seq-queue');var moment=require('moment');var Redis=require(_0xcfa9('0x2'));var config=require(_0xcfa9('0x3'));var logger=require('../../../../config/logger')(_0xcfa9('0x4'));var strategy=require(_0xcfa9('0x5'));config[_0xcfa9('0x6')]=_['defaults'](config[_0xcfa9('0x6')],{'host':_0xcfa9('0x7'),'port':0x18eb});var io=require(_0xcfa9('0x8'))(new Redis(config[_0xcfa9('0x6')]));var attributes=['id',_0xcfa9('0x9'),_0xcfa9('0xa'),_0xcfa9('0xb'),_0xcfa9('0xc'),'joinAt'];function emit(_0x4cf91b,_0x3a503a,_0xfe94c5){io['to'](_0x4cf91b)['emit'](_0x3a503a,_0xfe94c5);}function emitChannelQueueInteraction(_0x3ff6b4,_0x414fc5,_0x5c95b4,_0x3a6888,_0x596332,_0x101173,_0x14d490,_0x303b05){var _0x401262=_[_0xcfa9('0xd')](_0x5c95b4);_0x401262['queue_id']=_0x303b05;_0x401262[_0xcfa9('0xb')]=_0x414fc5;_0x401262[_0xcfa9('0xa')]=_0x3a6888;_0x401262['id']=_0x596332;if(_0x101173){_0x14d490[util[_0xcfa9('0xe')]('%sQueuesWaitingInteractions',_0x3ff6b4)][_0x596332]=_[_0xcfa9('0xf')](_0x401262,attributes);}else{delete _0x14d490[util[_0xcfa9('0xe')]('%sQueuesWaitingInteractions',_0x3ff6b4)][_0x596332];}emit(util[_0xcfa9('0xe')](_0xcfa9('0x10'),_0x3ff6b4,_0x414fc5),util[_0xcfa9('0xe')](_0xcfa9('0x11'),_0x3ff6b4,_0x101173?'save':_0xcfa9('0x12')),_[_0xcfa9('0xf')](_0x401262,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xcfa9('0x13')),'chatQueueReport':require(_0xcfa9('0x14')),'smsQueueReport':require(_0xcfa9('0x15')),'faxQueueReport':require(_0xcfa9('0x16')),'whatsappQueueReport':require(_0xcfa9('0x17'))};var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xcfa9('0x18'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x1a5991,_0x37ff51,_0x5ba19f,_0x3bf195){if(_0x1a5991&&_0x37ff51&&_0x5ba19f){_0x37ff51['waiting']+=0x1;var _0x2c42ff={'uniqueid':_0x1a5991,'from':_0x5ba19f[_0xcfa9('0x19')]?_0x5ba19f['body'][_0xcfa9('0xc')]:'','joinAt':moment()[_0xcfa9('0xe')](_0xcfa9('0x1a')),'ContactId':_0x5ba19f[_0xcfa9('0x1b')]?_0x5ba19f['contact']['id']:null,'ListId':_0x5ba19f[_0xcfa9('0x1c')]?_0x5ba19f['list']['id']:null};_0x2c42ff[_[_0xcfa9('0x1d')](_0x5ba19f['channel'])+_0xcfa9('0x1e')]=_0x37ff51['id']||null;_0x2c42ff[_[_0xcfa9('0x1d')](_0x5ba19f['channel'])+_0xcfa9('0x1f')]=_0x5ba19f[_0xcfa9('0x20')]?_0x5ba19f[_0xcfa9('0x20')]['id']:null;_0x2c42ff[_[_0xcfa9('0x1d')](_0x5ba19f[_0xcfa9('0x21')])+_0xcfa9('0x22')]=_0x5ba19f[_0xcfa9('0x23')]?_0x5ba19f[_0xcfa9('0x23')]['id']:null;_0x2c42ff[_[_0xcfa9('0x1d')](_0x5ba19f[_0xcfa9('0x21')])+(_0x5ba19f['channel']!==_0xcfa9('0x24')?'AccountId':'WebsiteId')]=_0x5ba19f['account']?_0x5ba19f[_0xcfa9('0xa')]['id']:null;logger[_0xcfa9('0x25')](util[_0xcfa9('0xe')](_0xcfa9('0x26'),_0x1a5991,_0x37ff51['name']));emitChannelQueueInteraction(_0x5ba19f['channel'],_0x37ff51[_0xcfa9('0x27')],_0x2c42ff,_0x5ba19f[_0xcfa9('0xa')][_0xcfa9('0x27')],_0x5ba19f['message']['id'],!![],_0x3bf195,_0x37ff51['id']);if(rpc[_0x5ba19f[_0xcfa9('0x21')]+_0xcfa9('0x28')]){return rpc[_0x5ba19f[_0xcfa9('0x21')]+_0xcfa9('0x28')]['create'](_0x2c42ff)['catch'](function(_0x22d0b8){logger[_0xcfa9('0x29')](_0xcfa9('0x2a'));});}}}function stopRouting(_0x3a764a,_0x1fb576,_0x301aea,_0x8c0677){if(_0x3a764a&&_0x1fb576){_0x1fb576[_0xcfa9('0x2b')]-=0x1;var _0x2561fe={'leaveAt':moment()[_0xcfa9('0xe')](_0xcfa9('0x1a')),'acceptAt':moment()[_0xcfa9('0xe')](_0xcfa9('0x1a')),'reason':'accepted'};logger[_0xcfa9('0x25')](util[_0xcfa9('0xe')](_0xcfa9('0x2c'),_0x3a764a,_0x1fb576[_0xcfa9('0x27')]));emitChannelQueueInteraction(_0x301aea[_0xcfa9('0x21')],_0x1fb576[_0xcfa9('0x27')],_0x301aea[_0xcfa9('0x19')],_0x301aea[_0xcfa9('0xa')][_0xcfa9('0x27')],_0x301aea[_0xcfa9('0x23')]['id'],![],_0x8c0677,_0x1fb576['id']);if(rpc[_0x301aea['channel']+'QueueReport']){return rpc[_0x301aea[_0xcfa9('0x21')]+_0xcfa9('0x28')][_0xcfa9('0x2d')](_0x3a764a,_0x2561fe)[_0xcfa9('0x2e')](function(_0x54fd34){logger[_0xcfa9('0x29')](_0xcfa9('0x2f'));});}}}function endRouting(_0xf223a1,_0x2a8bc8,_0x16d5bb,_0x192d45){if(_0xf223a1&&_0x2a8bc8){_0x2a8bc8[_0xcfa9('0x2b')]-=0x1;var _0x35baf2={'leaveAt':moment()[_0xcfa9('0xe')](_0xcfa9('0x1a')),'exitAt':moment()[_0xcfa9('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger[_0xcfa9('0x25')](util['format'](_0xcfa9('0x30'),_0xf223a1,_0x2a8bc8['name']));emitChannelQueueInteraction(_0x16d5bb['channel'],_0x2a8bc8['name'],_0x16d5bb[_0xcfa9('0x19')],_0x16d5bb[_0xcfa9('0xa')][_0xcfa9('0x27')],_0x16d5bb[_0xcfa9('0x23')]['id'],![],_0x192d45);if(rpc[_0x16d5bb['channel']+_0xcfa9('0x28')]){return rpc[_0x16d5bb[_0xcfa9('0x21')]+_0xcfa9('0x28')]['update'](_0xf223a1,_0x35baf2)[_0xcfa9('0x2e')](function(_0x41ce97){logger[_0xcfa9('0x29')](_0xcfa9('0x2f'));});}}}function handleFindQueue(_0x5542ab){return function(_0x1c74a8){return _0x1c74a8['name'][_0xcfa9('0x31')]()===_0x5542ab[_0xcfa9('0x31')]();};}exports[_0xcfa9('0x32')]=function(_0x8b3136,_0x57f723,_0x149402,_0x1c08e1){return function(_0x152291){try{var _0x3235df={'name':_0x57f723[0x0],'timeout':_0x57f723[0x1]};var _0x52aec2=queue[_0xcfa9('0x33')](_0x3235df,{'typecast':!![]});if(_0x52aec2[_0xcfa9('0x34')]){logger[_0xcfa9('0x29')](_0xcfa9('0x35'),_0x8b3136,_[_0xcfa9('0x36')](_0x52aec2,_0xcfa9('0x23'))[_0xcfa9('0x37')](',\x20'));_0x152291[_0xcfa9('0x38')]();}else{var _0x1b18fc=_[_0xcfa9('0x39')](_0x149402[_0x1c08e1[_0xcfa9('0x21')]+_0xcfa9('0x3a')],handleFindQueue(_0x3235df['name']));if(_0x1b18fc){startRouting(_0x8b3136,_0x1b18fc,_0x1c08e1,_0x149402);var _0x42de5d=(_0x1b18fc['timeout']||0xa)*0x3e8;var _0x51d3ba=(_0x3235df[_0xcfa9('0x3b')]||0x14)*0x3e8;var _0x341999,_0x482edf;if(_0x42de5d>_0x51d3ba){_0x51d3ba=_0x42de5d;}var _0x3f7343=seqqueue['createQueue'](_0x42de5d);_0x3f7343['id']=_0x8b3136;_0x3f7343[_0xcfa9('0x3c')]=_0x42de5d;_0x3f7343['qtimeout']=_0x51d3ba;_0x3f7343[_0xcfa9('0x21')]=_0x1c08e1['channel'];_0x149402[_0xcfa9('0x3d')][_0x8b3136]['on'](_0xcfa9('0x3e'),function(){logger[_0xcfa9('0x25')](_0xcfa9('0x3f'),_0x8b3136);stopRouting(_0x8b3136,_0x1b18fc,_0x1c08e1,_0x149402);clearTimeout(_0x341999);_0x341999=undefined;_0x3f7343[_0xcfa9('0x40')](!![]);if(_0x149402['rules'][_0x8b3136]){delete _0x149402[_0xcfa9('0x3d')][_0x8b3136];}_0x152291[_0xcfa9('0x38')]();});_0x149402[_0xcfa9('0x3d')][_0x8b3136]['on'](_0xcfa9('0x41'),function(){if(_0x149402[_0xcfa9('0x3d')][_0x8b3136]){delete _0x149402['rules'][_0x8b3136];}});_0x341999=setTimeout(function(){logger[_0xcfa9('0x25')](_0xcfa9('0x42'),_0x8b3136);endRouting(_0x8b3136,_0x1b18fc,_0x1c08e1,_0x149402);clearTimeout(_0x341999);_0x3f7343['close'](!![]);_0x152291['next']();},_0x51d3ba);switch(_0x1b18fc['strategy']){case _0xcfa9('0x43'):strategy[_0xcfa9('0x43')](_0x3f7343,_0x1b18fc,_0x149402,_0x1c08e1);break;default:strategy[_0xcfa9('0x44')](_0x3f7343,_0x1b18fc,_0x149402,_0x1c08e1);}}else{logger['error'](_0xcfa9('0x45'),_0x8b3136,_0x3235df[_0xcfa9('0x27')]);_0x152291[_0xcfa9('0x38')]();}}}catch(_0x21bb27){console[_0xcfa9('0x46')](_0x21bb27);logger['error']('[%s][QUEUE]\x20%s',_0x8b3136,_0x21bb27[_0xcfa9('0x47')]);_0x152291[_0xcfa9('0x38')]();}};};
\ No newline at end of file
+var _0x9ed4=['QueueId','channel','InteractionId','interaction','MessageId','message','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','accepted','info','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','find','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','localhost','socket.io-emitter','queue_id','account','emit','clone','queue','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','save','remove','../../rpc/openchannelQueueReport','../../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','upperFirst'];(function(_0xe7dfa7,_0x3d17ee){var _0x1a9fbf=function(_0x2ef98a){while(--_0x2ef98a){_0xe7dfa7['push'](_0xe7dfa7['shift']());}};_0x1a9fbf(++_0x3d17ee);}(_0x9ed4,0x1a7));var _0x49ed=function(_0x594686,_0x1bd2e9){_0x594686=_0x594686-0x0;var _0x437d26=_0x9ed4[_0x594686];return _0x437d26;};'use strict';var schema=require(_0x49ed('0x0'));var _=require(_0x49ed('0x1'));var util=require(_0x49ed('0x2'));var seqqueue=require(_0x49ed('0x3'));var moment=require(_0x49ed('0x4'));var Redis=require(_0x49ed('0x5'));var config=require(_0x49ed('0x6'));var logger=require(_0x49ed('0x7'))(_0x49ed('0x8'));var strategy=require(_0x49ed('0x9'));config[_0x49ed('0xa')]=_['defaults'](config[_0x49ed('0xa')],{'host':_0x49ed('0xb'),'port':0x18eb});var io=require(_0x49ed('0xc'))(new Redis(config[_0x49ed('0xa')]));var attributes=['id',_0x49ed('0xd'),_0x49ed('0xe'),'queue','from','joinAt'];function emit(_0x3eb28e,_0x557bf3,_0x170656){io['to'](_0x3eb28e)[_0x49ed('0xf')](_0x557bf3,_0x170656);}function emitChannelQueueInteraction(_0xf61933,_0x405918,_0x2973a1,_0x32c0af,_0x2381f4,_0x33fde6,_0xbaf596,_0x318263){var _0x45701a=_[_0x49ed('0x10')](_0x2973a1);_0x45701a[_0x49ed('0xd')]=_0x318263;_0x45701a[_0x49ed('0x11')]=_0x405918;_0x45701a['account']=_0x32c0af;_0x45701a['id']=_0x2381f4;if(_0x33fde6){_0xbaf596[util[_0x49ed('0x12')](_0x49ed('0x13'),_0xf61933)][_0x2381f4]=_[_0x49ed('0x14')](_0x45701a,attributes);}else{delete _0xbaf596[util[_0x49ed('0x12')]('%sQueuesWaitingInteractions',_0xf61933)][_0x2381f4];}emit(util['format'](_0x49ed('0x15'),_0xf61933,_0x405918),util['format']('%s_queue_waiting_interaction:%s',_0xf61933,_0x33fde6?_0x49ed('0x16'):_0x49ed('0x17')),_[_0x49ed('0x14')](_0x45701a,attributes));}var rpc={'openchannelQueueReport':require(_0x49ed('0x18')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x49ed('0x19')),'faxQueueReport':require(_0x49ed('0x1a')),'whatsappQueueReport':require(_0x49ed('0x1b'))};var queue=schema({'name':{'type':_0x49ed('0x1c'),'required':!![],'message':_0x49ed('0x1d')},'timeout':{'type':_0x49ed('0x1e'),'message':_0x49ed('0x1f')}});function startRouting(_0x136340,_0x42cbbf,_0x1e0aff,_0x42e66e){if(_0x136340&&_0x42cbbf&&_0x1e0aff){_0x42cbbf[_0x49ed('0x20')]+=0x1;var _0x496661={'uniqueid':_0x136340,'from':_0x1e0aff[_0x49ed('0x21')]?_0x1e0aff[_0x49ed('0x21')][_0x49ed('0x22')]:'','joinAt':moment()['format'](_0x49ed('0x23')),'ContactId':_0x1e0aff['contact']?_0x1e0aff[_0x49ed('0x24')]['id']:null,'ListId':_0x1e0aff[_0x49ed('0x25')]?_0x1e0aff[_0x49ed('0x25')]['id']:null};_0x496661[_[_0x49ed('0x26')](_0x1e0aff['channel'])+_0x49ed('0x27')]=_0x42cbbf['id']||null;_0x496661[_['upperFirst'](_0x1e0aff[_0x49ed('0x28')])+_0x49ed('0x29')]=_0x1e0aff['interaction']?_0x1e0aff[_0x49ed('0x2a')]['id']:null;_0x496661[_[_0x49ed('0x26')](_0x1e0aff['channel'])+_0x49ed('0x2b')]=_0x1e0aff[_0x49ed('0x2c')]?_0x1e0aff[_0x49ed('0x2c')]['id']:null;_0x496661[_[_0x49ed('0x26')](_0x1e0aff[_0x49ed('0x28')])+(_0x1e0aff[_0x49ed('0x28')]!=='chat'?_0x49ed('0x2d'):_0x49ed('0x2e'))]=_0x1e0aff[_0x49ed('0xe')]?_0x1e0aff[_0x49ed('0xe')]['id']:null;logger['info'](util[_0x49ed('0x12')](_0x49ed('0x2f'),_0x136340,_0x42cbbf[_0x49ed('0x30')]));emitChannelQueueInteraction(_0x1e0aff[_0x49ed('0x28')],_0x42cbbf['name'],_0x496661,_0x1e0aff[_0x49ed('0xe')][_0x49ed('0x30')],_0x1e0aff[_0x49ed('0x2c')]['id'],!![],_0x42e66e,_0x42cbbf['id']);if(rpc[_0x1e0aff[_0x49ed('0x28')]+_0x49ed('0x31')]){return rpc[_0x1e0aff['channel']+_0x49ed('0x31')][_0x49ed('0x32')](_0x496661)[_0x49ed('0x33')](function(_0x3b2065){logger[_0x49ed('0x34')]('create\x20queue\x20report');});}}}function stopRouting(_0x56016d,_0x13e91d,_0x2cb753,_0xfb0a9d){if(_0x56016d&&_0x13e91d){_0x13e91d['waiting']-=0x1;var _0x540f0a={'leaveAt':moment()[_0x49ed('0x12')](_0x49ed('0x23')),'acceptAt':moment()[_0x49ed('0x12')](_0x49ed('0x23')),'reason':_0x49ed('0x35')};logger[_0x49ed('0x36')](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x56016d,_0x13e91d[_0x49ed('0x30')]));emitChannelQueueInteraction(_0x2cb753[_0x49ed('0x28')],_0x13e91d[_0x49ed('0x30')],_0x2cb753[_0x49ed('0x21')],_0x2cb753[_0x49ed('0xe')][_0x49ed('0x30')],_0x2cb753[_0x49ed('0x2c')]['id'],![],_0xfb0a9d,_0x13e91d['id']);if(rpc[_0x2cb753[_0x49ed('0x28')]+'QueueReport']){return rpc[_0x2cb753['channel']+'QueueReport'][_0x49ed('0x37')](_0x56016d,_0x540f0a)[_0x49ed('0x33')](function(_0x557b98){logger[_0x49ed('0x34')](_0x49ed('0x38'));});}}}function endRouting(_0xb779bd,_0x59ae5d,_0x4c96b9,_0x6105e){if(_0xb779bd&&_0x59ae5d){_0x59ae5d[_0x49ed('0x20')]-=0x1;var _0x28e50d={'leaveAt':moment()['format'](_0x49ed('0x23')),'exitAt':moment()[_0x49ed('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x49ed('0x39')};logger['info'](util[_0x49ed('0x12')](_0x49ed('0x3a'),_0xb779bd,_0x59ae5d[_0x49ed('0x30')]));emitChannelQueueInteraction(_0x4c96b9[_0x49ed('0x28')],_0x59ae5d[_0x49ed('0x30')],_0x4c96b9[_0x49ed('0x21')],_0x4c96b9[_0x49ed('0xe')][_0x49ed('0x30')],_0x4c96b9[_0x49ed('0x2c')]['id'],![],_0x6105e);if(rpc[_0x4c96b9[_0x49ed('0x28')]+_0x49ed('0x31')]){return rpc[_0x4c96b9[_0x49ed('0x28')]+_0x49ed('0x31')][_0x49ed('0x37')](_0xb779bd,_0x28e50d)[_0x49ed('0x33')](function(_0x4c8a00){logger[_0x49ed('0x34')]('update\x20queue\x20report');});}}}function handleFindQueue(_0xf0e931){return function(_0x9831dc){return _0x9831dc[_0x49ed('0x30')]['toLowerCase']()===_0xf0e931[_0x49ed('0x3b')]();};}exports[_0x49ed('0x3c')]=function(_0xb020aa,_0x591242,_0x4c58be,_0x167664){return function(_0x4b98f5){try{var _0x15244e={'name':_0x591242[0x0],'timeout':_0x591242[0x1]};var _0x329272=queue[_0x49ed('0x0')](_0x15244e,{'typecast':!![]});if(_0x329272[_0x49ed('0x3d')]){logger[_0x49ed('0x34')](_0x49ed('0x3e'),_0xb020aa,_['map'](_0x329272,_0x49ed('0x2c'))[_0x49ed('0x3f')](',\x20'));_0x4b98f5['stop']();}else{var _0x18c788=_[_0x49ed('0x40')](_0x4c58be[_0x167664['channel']+'Queues'],handleFindQueue(_0x15244e[_0x49ed('0x30')]));if(_0x18c788){startRouting(_0xb020aa,_0x18c788,_0x167664,_0x4c58be);var _0x3c071c=(_0x18c788[_0x49ed('0x39')]||0xa)*0x3e8;var _0x2ff17e=(_0x15244e['timeout']||0x14)*0x3e8;var _0xbdb53,_0x331484;if(_0x3c071c>_0x2ff17e){_0x2ff17e=_0x3c071c;}var _0x5bf085=seqqueue[_0x49ed('0x41')](_0x3c071c);_0x5bf085['id']=_0xb020aa;_0x5bf085[_0x49ed('0x42')]=_0x3c071c;_0x5bf085['qtimeout']=_0x2ff17e;_0x5bf085[_0x49ed('0x28')]=_0x167664[_0x49ed('0x28')];_0x4c58be[_0x49ed('0x43')][_0xb020aa]['on'](_0x49ed('0x44'),function(){logger[_0x49ed('0x36')](_0x49ed('0x45'),_0xb020aa);stopRouting(_0xb020aa,_0x18c788,_0x167664,_0x4c58be);clearTimeout(_0xbdb53);_0xbdb53=undefined;_0x5bf085[_0x49ed('0x46')](!![]);if(_0x4c58be[_0x49ed('0x43')][_0xb020aa]){delete _0x4c58be[_0x49ed('0x43')][_0xb020aa];}_0x4b98f5['stop']();});_0x4c58be[_0x49ed('0x43')][_0xb020aa]['on'](_0x49ed('0x47'),function(){if(_0x4c58be[_0x49ed('0x43')][_0xb020aa]){delete _0x4c58be[_0x49ed('0x43')][_0xb020aa];}});_0xbdb53=setTimeout(function(){logger[_0x49ed('0x36')](_0x49ed('0x48'),_0xb020aa);endRouting(_0xb020aa,_0x18c788,_0x167664,_0x4c58be);clearTimeout(_0xbdb53);_0x5bf085[_0x49ed('0x46')](!![]);_0x4b98f5['next']();},_0x2ff17e);switch(_0x18c788[_0x49ed('0x49')]){case'rrmemory':strategy['rrmemory'](_0x5bf085,_0x18c788,_0x4c58be,_0x167664);break;default:strategy[_0x49ed('0x4a')](_0x5bf085,_0x18c788,_0x4c58be,_0x167664);}}else{logger[_0x49ed('0x34')](_0x49ed('0x4b'),_0xb020aa,_0x15244e[_0x49ed('0x30')]);_0x4b98f5['stop']();}}}catch(_0x45b204){console['log'](_0x45b204);logger[_0x49ed('0x34')]('[%s][QUEUE]\x20%s',_0xb020aa,_0x45b204[_0x49ed('0x4c')]);_0x4b98f5['stop']();}};};
\ No newline at end of file
index 1211dd5..134da8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3477=['realtime','push','handleRun','handleTimeout','bind','timeout','handleDrained','prototype','info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','channel','busy','showNotification','notificationId','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','lodash','uuid','./util','../../../../../config/logger','routing','squeue','agent'];(function(_0x4d2c02,_0x125a4d){var _0x930f6=function(_0x24bf0d){while(--_0x24bf0d){_0x4d2c02['push'](_0x4d2c02['shift']());}};_0x930f6(++_0x125a4d);}(_0x3477,0xad));var _0x7347=function(_0xcda38d,_0x51fe83){_0xcda38d=_0xcda38d-0x0;var _0x4676ae=_0x3477[_0xcda38d];return _0x4676ae;};'use strict';var _=require(_0x7347('0x0'));var uuid=require(_0x7347('0x1'));var util=require(_0x7347('0x2'));var logger=require(_0x7347('0x3'))(_0x7347('0x4'));var Agent=function(_0x58c455,_0x2f264b,_0x5e019d,_0x546ed2){this['notificationId']=uuid['v4']();this[_0x7347('0x5')]=_0x58c455;this[_0x7347('0x6')]=_0x2f264b;this[_0x7347('0x7')]=_0x5e019d;this[_0x7347('0x4')]=_0x546ed2;this['squeue'][_0x7347('0x8')](this[_0x7347('0x9')]['bind'](this),this[_0x7347('0xa')][_0x7347('0xb')](this));this[_0x7347('0x5')]['on'](_0x7347('0xc'),this['handleTimeout'][_0x7347('0xb')](this));this[_0x7347('0x5')]['on']('drained',this[_0x7347('0xd')][_0x7347('0xb')](this));};Agent[_0x7347('0xe')][_0x7347('0x8')]=function(){this[_0x7347('0x5')]['push'](this[_0x7347('0x9')][_0x7347('0xb')](this),this[_0x7347('0xa')]['bind'](this));};Agent[_0x7347('0xe')][_0x7347('0xd')]=function(){this[_0x7347('0xa')](!![]);};Agent[_0x7347('0xe')][_0x7347('0x9')]=function(_0x3614c2){logger[_0x7347('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x7347('0x5')]['id'],this['agent']['id']);if(_[_0x7347('0x10')](this['realtime'][_0x7347('0x11')][this[_0x7347('0x6')]['id']])){logger[_0x7347('0xf')](_0x7347('0x12'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0x7347('0x8')][_0x7347('0xb')](this),0x3e8);}else{if(this[_0x7347('0x4')][_0x7347('0x13')]||util['isAgentAvailable'](this['squeue']['id'],this[_0x7347('0x7')][_0x7347('0x11')][this['agent']['id']],this['squeue'][_0x7347('0x14')],![])){this['realtime'][_0x7347('0x11')][this[_0x7347('0x6')]['id']][_0x7347('0x15')]=!![];this[_0x7347('0x7')]['agents'][this['agent']['id']]['busyQueue']=undefined;util[_0x7347('0x16')](this[_0x7347('0x17')],this[_0x7347('0x5')]['id'],this[_0x7347('0x7')][_0x7347('0x11')][this['agent']['id']],null,this['routing']);util[_0x7347('0x18')](this[_0x7347('0x5')]['id'],this['realtime']['agents'][this[_0x7347('0x6')]['id']],'RINGING'+(this[_0x7347('0x4')][_0x7347('0x13')]?_0x7347('0x19'):''));}else{logger[_0x7347('0xf')](_0x7347('0x1a'),this[_0x7347('0x5')]['id'],this[_0x7347('0x6')]['id']);setTimeout(this[_0x7347('0x8')][_0x7347('0xb')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x590370){if(_['isNil'](this[_0x7347('0x7')][_0x7347('0x11')][this[_0x7347('0x6')]['id']])){return logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x7347('0x5')]['id'],this[_0x7347('0x6')]['id']);}else{logger[_0x7347('0xf')](_0x7347('0x1b'),this['squeue']['id'],this['agent']['id']);util[_0x7347('0x1c')](this['notificationId'],this[_0x7347('0x5')]['id'],this[_0x7347('0x7')][_0x7347('0x11')][this[_0x7347('0x6')]['id']],null,this[_0x7347('0x4')]);this[_0x7347('0x7')][_0x7347('0x11')][this['agent']['id']]['busy']=![];this[_0x7347('0x7')]['agents'][this[_0x7347('0x6')]['id']]['busyQueue']=undefined;util[_0x7347('0x18')](this['squeue']['id'],this[_0x7347('0x7')][_0x7347('0x11')][this['agent']['id']],_0x590370?_0x7347('0x1d'):'TIMEOUT');}if(!_0x590370){setTimeout(this[_0x7347('0x8')]['bind'](this),0x3e8);}};function agent(_0x2c8df6,_0x2d141b,_0x3acb72,_0x4d83bf){return new Agent(_0x2c8df6,_0x2d141b,_0x3acb72,_0x4d83bf);}module['exports']=agent;
\ No newline at end of file
+var _0x077b=[':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','writeLog','STOP','TIMEOUT','uuid','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','info','isNil','agents','forcedOwnership','isAgentAvailable','busy','busyQueue','RINGING'];(function(_0x291fcb,_0x57bc59){var _0x15c92d=function(_0x445dc8){while(--_0x445dc8){_0x291fcb['push'](_0x291fcb['shift']());}};_0x15c92d(++_0x57bc59);}(_0x077b,0x151));var _0xb077=function(_0x577519,_0x346daf){_0x577519=_0x577519-0x0;var _0x5b12f7=_0x077b[_0x577519];return _0x5b12f7;};'use strict';var _=require('lodash');var uuid=require(_0xb077('0x0'));var util=require('./util');var logger=require(_0xb077('0x1'))('routing');var Agent=function(_0x42ed88,_0x172e0c,_0x3eddb4,_0x8655c3){this[_0xb077('0x2')]=uuid['v4']();this[_0xb077('0x3')]=_0x42ed88;this[_0xb077('0x4')]=_0x172e0c;this[_0xb077('0x5')]=_0x3eddb4;this[_0xb077('0x6')]=_0x8655c3;this['squeue']['push'](this[_0xb077('0x7')][_0xb077('0x8')](this),this[_0xb077('0x9')][_0xb077('0x8')](this));this[_0xb077('0x3')]['on'](_0xb077('0xa'),this[_0xb077('0x9')][_0xb077('0x8')](this));this[_0xb077('0x3')]['on'](_0xb077('0xb'),this[_0xb077('0xc')][_0xb077('0x8')](this));};Agent[_0xb077('0xd')][_0xb077('0xe')]=function(){this[_0xb077('0x3')]['push'](this[_0xb077('0x7')]['bind'](this),this[_0xb077('0x9')]['bind'](this));};Agent[_0xb077('0xd')][_0xb077('0xc')]=function(){this[_0xb077('0x9')](!![]);};Agent[_0xb077('0xd')]['handleRun']=function(_0x5b3c06){logger[_0xb077('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xb077('0x3')]['id'],this[_0xb077('0x4')]['id']);if(_[_0xb077('0x10')](this['realtime'][_0xb077('0x11')][this[_0xb077('0x4')]['id']])){logger[_0xb077('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xb077('0x3')]['id'],this['agent']['id']);setTimeout(this[_0xb077('0xe')][_0xb077('0x8')](this),0x3e8);}else{if(this[_0xb077('0x6')][_0xb077('0x12')]||util[_0xb077('0x13')](this[_0xb077('0x3')]['id'],this[_0xb077('0x5')][_0xb077('0x11')][this[_0xb077('0x4')]['id']],this[_0xb077('0x3')]['channel'],![])){this[_0xb077('0x5')][_0xb077('0x11')][this[_0xb077('0x4')]['id']][_0xb077('0x14')]=!![];this[_0xb077('0x5')][_0xb077('0x11')][this[_0xb077('0x4')]['id']][_0xb077('0x15')]=undefined;util['showNotification'](this[_0xb077('0x2')],this[_0xb077('0x3')]['id'],this[_0xb077('0x5')][_0xb077('0x11')][this['agent']['id']],null,this[_0xb077('0x6')]);util['writeLog'](this[_0xb077('0x3')]['id'],this['realtime'][_0xb077('0x11')][this['agent']['id']],_0xb077('0x16')+(this[_0xb077('0x6')][_0xb077('0x12')]?_0xb077('0x17'):''));}else{logger[_0xb077('0xf')](_0xb077('0x18'),this[_0xb077('0x3')]['id'],this[_0xb077('0x4')]['id']);setTimeout(this[_0xb077('0xe')][_0xb077('0x8')](this),0x3e8);}}};Agent[_0xb077('0xd')]['handleTimeout']=function(_0x28ceba){if(_[_0xb077('0x10')](this[_0xb077('0x5')][_0xb077('0x11')][this[_0xb077('0x4')]['id']])){return logger[_0xb077('0xf')](_0xb077('0x19'),this[_0xb077('0x3')]['id'],this[_0xb077('0x4')]['id']);}else{logger[_0xb077('0xf')](_0xb077('0x1a'),this[_0xb077('0x3')]['id'],this[_0xb077('0x4')]['id']);util['hideNotification'](this[_0xb077('0x2')],this[_0xb077('0x3')]['id'],this[_0xb077('0x5')][_0xb077('0x11')][this['agent']['id']],null,this[_0xb077('0x6')]);this[_0xb077('0x5')][_0xb077('0x11')][this['agent']['id']][_0xb077('0x14')]=![];this[_0xb077('0x5')][_0xb077('0x11')][this['agent']['id']][_0xb077('0x15')]=undefined;util[_0xb077('0x1b')](this['squeue']['id'],this[_0xb077('0x5')][_0xb077('0x11')][this[_0xb077('0x4')]['id']],_0x28ceba?_0xb077('0x1c'):_0xb077('0x1d'));}if(!_0x28ceba){setTimeout(this[_0xb077('0xe')][_0xb077('0x8')](this),0x3e8);}};function agent(_0x5d6528,_0x1ebf67,_0x3ed461,_0x50896a){return new Agent(_0x5d6528,_0x1ebf67,_0x3ed461,_0x50896a);}module['exports']=agent;
\ No newline at end of file
index df4a3fc..d0205fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b5=['Agents','length','agents','info','isAgentAvailable','writeLog','RINGING','busy','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','STOP','TIMEOUT','busyQueue','exports','lodash','./util','../../../../../config/logger','routing','notificationId','queue','realtime','push','handleRun','bind','handleTimeout','squeue','timeout','drained','handleDrained','prototype','isNil'];(function(_0x4b02ed,_0x1859b7){var _0x5995c8=function(_0x25bd9e){while(--_0x25bd9e){_0x4b02ed['push'](_0x4b02ed['shift']());}};_0x5995c8(++_0x1859b7);}(_0x90b5,0x139));var _0x590b=function(_0x57198b,_0x231c46){_0x57198b=_0x57198b-0x0;var _0x15b37a=_0x90b5[_0x57198b];return _0x15b37a;};'use strict';var _=require(_0x590b('0x0'));var uuid=require('uuid');var util=require(_0x590b('0x1'));var logger=require(_0x590b('0x2'))(_0x590b('0x3'));var Beepall=function(_0xa7594d,_0x5dd1b2,_0x4cf794,_0x2318b8){this[_0x590b('0x4')]=uuid['v4']();this['squeue']=_0xa7594d;this[_0x590b('0x5')]=_0x5dd1b2;this[_0x590b('0x6')]=_0x4cf794;this[_0x590b('0x3')]=_0x2318b8;this['squeue'][_0x590b('0x7')](this[_0x590b('0x8')][_0x590b('0x9')](this),this[_0x590b('0xa')][_0x590b('0x9')](this));this[_0x590b('0xb')]['on'](_0x590b('0xc'),this[_0x590b('0xa')][_0x590b('0x9')](this));this['squeue']['on'](_0x590b('0xd'),this[_0x590b('0xe')]['bind'](this));};Beepall[_0x590b('0xf')]['push']=function(){this[_0x590b('0xb')][_0x590b('0x7')](this[_0x590b('0x8')][_0x590b('0x9')](this),this['handleTimeout'][_0x590b('0x9')](this));};Beepall[_0x590b('0xf')][_0x590b('0xe')]=function(_0x1c8607){this[_0x590b('0xa')](!![]);};Beepall[_0x590b('0xf')][_0x590b('0x8')]=function(_0x1460e8){var _0x168bde=!![];if(!_[_0x590b('0x10')](this[_0x590b('0x5')])&&!_[_0x590b('0x10')](this[_0x590b('0x5')][_0x590b('0x11')])&&this[_0x590b('0x5')]['Agents'][_0x590b('0x12')]>0x0){for(var _0x530e24=0x0,_0x5c788;_0x530e24<this[_0x590b('0x5')][_0x590b('0x11')]['length'];_0x530e24+=0x1){_0x5c788=this['queue'][_0x590b('0x11')][_0x530e24]['id'];if(_['isNil'](this[_0x590b('0x6')][_0x590b('0x13')][_0x5c788])){logger[_0x590b('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x590b('0xb')]['id'],_0x5c788);}else{if(util[_0x590b('0x15')](this[_0x590b('0xb')]['id'],this[_0x590b('0x6')]['agents'][_0x5c788],this[_0x590b('0xb')]['channel'],!![])){_0x168bde=![];util[_0x590b('0x16')](this[_0x590b('0xb')]['id'],this['realtime']['agents'][_0x5c788],_0x590b('0x17'));this[_0x590b('0x6')]['agents'][_0x5c788][_0x590b('0x18')]=!![];this[_0x590b('0x6')]['agents'][_0x5c788]['busyQueue']=this[_0x590b('0x5')]['name'];util[_0x590b('0x19')](this['notificationId'],this['squeue']['id'],this[_0x590b('0x6')][_0x590b('0x13')][_0x5c788],this['queue'],this[_0x590b('0x3')]);}}}if(_0x168bde){logger[_0x590b('0x14')](_0x590b('0x1a'),this[_0x590b('0xb')]['id']);setTimeout(this[_0x590b('0x7')]['bind'](this),0x3e8);}}else{logger[_0x590b('0x14')](_0x590b('0x1b'),this[_0x590b('0xb')]['id']);setTimeout(this[_0x590b('0x7')][_0x590b('0x9')](this),0x3e8);}};Beepall[_0x590b('0xf')]['handleTimeout']=function(_0x1dfce0){if(!_['isNil'](this[_0x590b('0x5')])&&!_[_0x590b('0x10')](this[_0x590b('0x5')][_0x590b('0x11')])){for(var _0x53a751=0x0,_0x1041e5;_0x53a751<this['queue'][_0x590b('0x11')][_0x590b('0x12')];_0x53a751+=0x1){_0x1041e5=this[_0x590b('0x5')][_0x590b('0x11')][_0x53a751]['id'];if(_[_0x590b('0x10')](this['realtime'][_0x590b('0x13')][_0x1041e5])){logger[_0x590b('0x14')](_0x590b('0x1c'),this[_0x590b('0xb')]['id'],_0x1041e5);}else{util['hideNotification'](this['notificationId'],this[_0x590b('0xb')]['id'],this[_0x590b('0x6')][_0x590b('0x13')][_0x1041e5],this[_0x590b('0x5')],this['routing']);util['writeLog'](this[_0x590b('0xb')]['id'],this['realtime'][_0x590b('0x13')][_0x1041e5],_0x1dfce0?_0x590b('0x1d'):_0x590b('0x1e'));this[_0x590b('0x6')][_0x590b('0x13')][_0x1041e5][_0x590b('0x18')]=![];this[_0x590b('0x6')][_0x590b('0x13')][_0x1041e5][_0x590b('0x1f')]=undefined;}}}if(!_0x1dfce0){setTimeout(this[_0x590b('0x7')]['bind'](this),0x3e8);}};function beepall(_0x5d3fe6,_0x322940,_0x446db1,_0x386d40){return new Beepall(_0x5d3fe6,_0x322940,_0x446db1,_0x386d40);}module[_0x590b('0x20')]=beepall;
\ No newline at end of file
+var _0x7d9f=['queue','isNil','Agents','length','realtime','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','handleRun','bind','timeout','handleTimeout','drained','handleDrained','push','prototype'];(function(_0x2b933a,_0x2cd6b0){var _0x117ca4=function(_0x557032){while(--_0x557032){_0x2b933a['push'](_0x2b933a['shift']());}};_0x117ca4(++_0x2cd6b0);}(_0x7d9f,0x15c));var _0xf7d9=function(_0x1acf4d,_0x271e6b){_0x1acf4d=_0x1acf4d-0x0;var _0x2880a0=_0x7d9f[_0x1acf4d];return _0x2880a0;};'use strict';var _=require(_0xf7d9('0x0'));var uuid=require(_0xf7d9('0x1'));var util=require(_0xf7d9('0x2'));var logger=require(_0xf7d9('0x3'))(_0xf7d9('0x4'));var Beepall=function(_0x538e69,_0x15a23b,_0x1051a9,_0xd43b74){this[_0xf7d9('0x5')]=uuid['v4']();this[_0xf7d9('0x6')]=_0x538e69;this['queue']=_0x15a23b;this['realtime']=_0x1051a9;this[_0xf7d9('0x4')]=_0xd43b74;this[_0xf7d9('0x6')]['push'](this[_0xf7d9('0x7')][_0xf7d9('0x8')](this),this['handleTimeout'][_0xf7d9('0x8')](this));this['squeue']['on'](_0xf7d9('0x9'),this[_0xf7d9('0xa')]['bind'](this));this['squeue']['on'](_0xf7d9('0xb'),this[_0xf7d9('0xc')][_0xf7d9('0x8')](this));};Beepall['prototype']['push']=function(){this[_0xf7d9('0x6')][_0xf7d9('0xd')](this[_0xf7d9('0x7')][_0xf7d9('0x8')](this),this['handleTimeout'][_0xf7d9('0x8')](this));};Beepall[_0xf7d9('0xe')][_0xf7d9('0xc')]=function(_0x403859){this['handleTimeout'](!![]);};Beepall[_0xf7d9('0xe')][_0xf7d9('0x7')]=function(_0x296348){var _0x18b119=!![];if(!_['isNil'](this[_0xf7d9('0xf')])&&!_[_0xf7d9('0x10')](this[_0xf7d9('0xf')]['Agents'])&&this['queue'][_0xf7d9('0x11')][_0xf7d9('0x12')]>0x0){for(var _0xe29103=0x0,_0x5d1098;_0xe29103<this[_0xf7d9('0xf')][_0xf7d9('0x11')]['length'];_0xe29103+=0x1){_0x5d1098=this[_0xf7d9('0xf')]['Agents'][_0xe29103]['id'];if(_[_0xf7d9('0x10')](this[_0xf7d9('0x13')]['agents'][_0x5d1098])){logger[_0xf7d9('0x14')](_0xf7d9('0x15'),this[_0xf7d9('0x6')]['id'],_0x5d1098);}else{if(util[_0xf7d9('0x16')](this[_0xf7d9('0x6')]['id'],this[_0xf7d9('0x13')][_0xf7d9('0x17')][_0x5d1098],this[_0xf7d9('0x6')]['channel'],!![])){_0x18b119=![];util['writeLog'](this[_0xf7d9('0x6')]['id'],this['realtime'][_0xf7d9('0x17')][_0x5d1098],_0xf7d9('0x18'));this['realtime'][_0xf7d9('0x17')][_0x5d1098][_0xf7d9('0x19')]=!![];this['realtime']['agents'][_0x5d1098][_0xf7d9('0x1a')]=this[_0xf7d9('0xf')][_0xf7d9('0x1b')];util['showNotification'](this[_0xf7d9('0x5')],this['squeue']['id'],this[_0xf7d9('0x13')][_0xf7d9('0x17')][_0x5d1098],this[_0xf7d9('0xf')],this['routing']);}}}if(_0x18b119){logger[_0xf7d9('0x14')](_0xf7d9('0x1c'),this[_0xf7d9('0x6')]['id']);setTimeout(this[_0xf7d9('0xd')][_0xf7d9('0x8')](this),0x3e8);}}else{logger['info'](_0xf7d9('0x1d'),this[_0xf7d9('0x6')]['id']);setTimeout(this[_0xf7d9('0xd')][_0xf7d9('0x8')](this),0x3e8);}};Beepall['prototype'][_0xf7d9('0xa')]=function(_0x193add){if(!_[_0xf7d9('0x10')](this[_0xf7d9('0xf')])&&!_[_0xf7d9('0x10')](this[_0xf7d9('0xf')]['Agents'])){for(var _0x5d963f=0x0,_0x5a673a;_0x5d963f<this[_0xf7d9('0xf')]['Agents'][_0xf7d9('0x12')];_0x5d963f+=0x1){_0x5a673a=this['queue'][_0xf7d9('0x11')][_0x5d963f]['id'];if(_['isNil'](this['realtime']['agents'][_0x5a673a])){logger[_0xf7d9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf7d9('0x6')]['id'],_0x5a673a);}else{util[_0xf7d9('0x1e')](this[_0xf7d9('0x5')],this[_0xf7d9('0x6')]['id'],this[_0xf7d9('0x13')][_0xf7d9('0x17')][_0x5a673a],this[_0xf7d9('0xf')],this[_0xf7d9('0x4')]);util['writeLog'](this[_0xf7d9('0x6')]['id'],this[_0xf7d9('0x13')]['agents'][_0x5a673a],_0x193add?'STOP':_0xf7d9('0x1f'));this[_0xf7d9('0x13')][_0xf7d9('0x17')][_0x5a673a]['busy']=![];this[_0xf7d9('0x13')][_0xf7d9('0x17')][_0x5a673a][_0xf7d9('0x1a')]=undefined;}}}if(!_0x193add){setTimeout(this[_0xf7d9('0xd')][_0xf7d9('0x8')](this),0x3e8);}};function beepall(_0xa74e15,_0x427963,_0x1280fa,_0x447508){return new Beepall(_0xa74e15,_0x427963,_0x1280fa,_0x447508);}module[_0xf7d9('0x20')]=beepall;
\ No newline at end of file
index b574059..90b700e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec66=['./agent','exports','./beepall'];(function(_0x306646,_0xdc2e1b){var _0x40bd8d=function(_0x397d05){while(--_0x397d05){_0x306646['push'](_0x306646['shift']());}};_0x40bd8d(++_0xdc2e1b);}(_0xec66,0x1bd));var _0x6ec6=function(_0x3d8d0a,_0x11bb87){_0x3d8d0a=_0x3d8d0a-0x0;var _0x5b9df5=_0xec66[_0x3d8d0a];return _0x5b9df5;};'use strict';module[_0x6ec6('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x6ec6('0x1')),'agent':require(_0x6ec6('0x2'))};
\ No newline at end of file
+var _0xc4fa=['./rrmemory','./beepall','exports'];(function(_0x48282c,_0x5590e9){var _0x255aa6=function(_0x1d7fa5){while(--_0x1d7fa5){_0x48282c['push'](_0x48282c['shift']());}};_0x255aa6(++_0x5590e9);}(_0xc4fa,0x107));var _0xac4f=function(_0x23292a,_0x1e08ea){_0x23292a=_0x23292a-0x0;var _0x4564f2=_0xc4fa[_0x23292a];return _0x4564f2;};'use strict';module[_0xac4f('0x0')]={'rrmemory':require(_0xac4f('0x1')),'beepall':require(_0xac4f('0x2')),'agent':require('./agent')};
\ No newline at end of file
index 225a661..b4d4e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e36=['queue','realtime','routing','push','handleRun','bind','module','timeout','handleTimeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','agentId','channel','[%s][QUEUE]\x20available\x20again\x20%s','intervals','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','name','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','busyQueue','exports','./util','../../../../../config/logger','squeue'];(function(_0x16d214,_0x6c620e){var _0x5e1580=function(_0x45ecce){while(--_0x45ecce){_0x16d214['push'](_0x16d214['shift']());}};_0x5e1580(++_0x6c620e);}(_0x0e36,0x72));var _0x60e3=function(_0x398c48,_0x436c87){_0x398c48=_0x398c48-0x0;var _0x1704d8=_0x0e36[_0x398c48];return _0x1704d8;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require('uuid');var util=require(_0x60e3('0x0'));var logger=require(_0x60e3('0x1'))('routing');var RRMemory=function(_0x9cf98c,_0x131538,_0x571ae5,_0x3b82a6){this['notificationId']=uuid['v4']();this[_0x60e3('0x2')]=_0x9cf98c;this[_0x60e3('0x3')]=_0x131538;this[_0x60e3('0x4')]=_0x571ae5;this[_0x60e3('0x5')]=_0x3b82a6;this['intervals']={};this['squeue'][_0x60e3('0x6')](this[_0x60e3('0x7')][_0x60e3('0x8')](this),this['handleTimeout'][_0x60e3('0x8')](this),this[_0x60e3('0x9')]);this[_0x60e3('0x2')]['on'](_0x60e3('0xa'),this[_0x60e3('0xb')][_0x60e3('0x8')](this));this['squeue']['on'](_0x60e3('0xc'),this[_0x60e3('0xd')][_0x60e3('0x8')](this));};RRMemory['prototype'][_0x60e3('0x6')]=function(){this['squeue'][_0x60e3('0x6')](this[_0x60e3('0x7')][_0x60e3('0x8')](this),this[_0x60e3('0xb')][_0x60e3('0x8')](this));};RRMemory[_0x60e3('0xe')]['handleDrained']=function(_0x3cc445){this['handleTimeout'](!![]);};RRMemory[_0x60e3('0xe')][_0x60e3('0xf')]=function(_0x5aea87){if(util[_0x60e3('0x10')](this[_0x60e3('0x2')]['id'],this[_0x60e3('0x4')]['agents'][this[_0x60e3('0x11')]],this[_0x60e3('0x2')][_0x60e3('0x12')],!![])){logger['info'](_0x60e3('0x13'),this[_0x60e3('0x2')]['id'],this[_0x60e3('0x11')]);clearInterval(this[_0x60e3('0x14')][this[_0x60e3('0x11')]]);_0x5aea87['done']();setTimeout(this['push'][_0x60e3('0x8')](this),0x3e8);}};RRMemory[_0x60e3('0xe')][_0x60e3('0x7')]=function(_0x213424){this['agentId']=rr(this[_0x60e3('0x3')][_0x60e3('0x15')]);logger['info'](_0x60e3('0x16'),this['squeue']['id'],this[_0x60e3('0x11')]);if(_[_0x60e3('0x17')](this['realtime'][_0x60e3('0x18')][this[_0x60e3('0x11')]])){logger[_0x60e3('0x19')](_0x60e3('0x1a'),this[_0x60e3('0x2')]['id'],this[_0x60e3('0x11')]);_0x213424['done']();setTimeout(this['push'][_0x60e3('0x8')](this),0x3e8);}else{if(util[_0x60e3('0x10')](this['squeue']['id'],this['realtime'][_0x60e3('0x18')][this[_0x60e3('0x11')]],this['squeue'][_0x60e3('0x12')],!![])){this[_0x60e3('0x4')][_0x60e3('0x18')][this['agentId']][_0x60e3('0x1b')]=!![];this['realtime']['agents'][this[_0x60e3('0x11')]]['busyQueue']=this[_0x60e3('0x3')][_0x60e3('0x1c')];util[_0x60e3('0x1d')](this[_0x60e3('0x1e')],this['squeue']['id'],this[_0x60e3('0x4')][_0x60e3('0x18')][this['agentId']],this[_0x60e3('0x3')],this[_0x60e3('0x5')]);util[_0x60e3('0x1f')](this['squeue']['id'],this['realtime'][_0x60e3('0x18')][this[_0x60e3('0x11')]],_0x60e3('0x20'));this[_0x60e3('0x14')][this[_0x60e3('0x11')]]=setInterval(this[_0x60e3('0xf')][_0x60e3('0x8')](this,_0x213424),0x3e8);}else{logger[_0x60e3('0x19')](_0x60e3('0x21'),this['squeue']['id'],this[_0x60e3('0x11')]);_0x213424['done']();setTimeout(this[_0x60e3('0x6')]['bind'](this),0x3e8);}}};RRMemory[_0x60e3('0xe')][_0x60e3('0xb')]=function(_0x19c66c){logger[_0x60e3('0x19')](_0x60e3('0x22'),this['squeue']['id'],this[_0x60e3('0x11')]);if(_[_0x60e3('0x17')](this[_0x60e3('0x4')][_0x60e3('0x18')][this[_0x60e3('0x11')]])){logger[_0x60e3('0x19')](_0x60e3('0x1a'),this[_0x60e3('0x2')]['id'],this[_0x60e3('0x11')]);}else{clearInterval(this[_0x60e3('0x14')][this[_0x60e3('0x11')]]);util[_0x60e3('0x23')](this['notificationId'],this['squeue']['id'],this[_0x60e3('0x4')][_0x60e3('0x18')][this[_0x60e3('0x11')]],this['queue'],this[_0x60e3('0x5')]);util[_0x60e3('0x1f')](this['squeue']['id'],this[_0x60e3('0x4')][_0x60e3('0x18')][this[_0x60e3('0x11')]],_0x60e3('0x24'));this[_0x60e3('0x4')][_0x60e3('0x18')][this['agentId']][_0x60e3('0x1b')]=![];this[_0x60e3('0x4')][_0x60e3('0x18')][this[_0x60e3('0x11')]][_0x60e3('0x25')]=undefined;}if(!_0x19c66c){setTimeout(this[_0x60e3('0x6')][_0x60e3('0x8')](this),0x3e8);}};function rrmemory(_0x412dbb,_0x4657b1,_0x3e0cb6,_0xbe40ef){return new RRMemory(_0x412dbb,_0x4657b1,_0x3e0cb6,_0xbe40ef);}module[_0x60e3('0x26')]=rrmemory;
\ No newline at end of file
+var _0x4afc=['handleDrained','prototype','push','handleCheckReject','agents','agentId','channel','info','done','queue','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','exports','lodash','uuid','./util','routing','notificationId','realtime','intervals','squeue','handleRun','handleTimeout','bind','timeout','drained'];(function(_0x313ec7,_0x378215){var _0x5be11e=function(_0x3725b7){while(--_0x3725b7){_0x313ec7['push'](_0x313ec7['shift']());}};_0x5be11e(++_0x378215);}(_0x4afc,0xef));var _0xc4af=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x4afc[_0x2c91e9];return _0x13f0ff;};'use strict';var rr=require('rr');var _=require(_0xc4af('0x0'));var uuid=require(_0xc4af('0x1'));var util=require(_0xc4af('0x2'));var logger=require('../../../../../config/logger')(_0xc4af('0x3'));var RRMemory=function(_0x34636b,_0x2bf0f7,_0x33d801,_0x363700){this[_0xc4af('0x4')]=uuid['v4']();this['squeue']=_0x34636b;this['queue']=_0x2bf0f7;this[_0xc4af('0x5')]=_0x33d801;this[_0xc4af('0x3')]=_0x363700;this[_0xc4af('0x6')]={};this[_0xc4af('0x7')]['push'](this[_0xc4af('0x8')]['bind'](this),this[_0xc4af('0x9')][_0xc4af('0xa')](this),this['module']);this[_0xc4af('0x7')]['on'](_0xc4af('0xb'),this[_0xc4af('0x9')][_0xc4af('0xa')](this));this[_0xc4af('0x7')]['on'](_0xc4af('0xc'),this[_0xc4af('0xd')][_0xc4af('0xa')](this));};RRMemory[_0xc4af('0xe')][_0xc4af('0xf')]=function(){this['squeue'][_0xc4af('0xf')](this[_0xc4af('0x8')][_0xc4af('0xa')](this),this['handleTimeout']['bind'](this));};RRMemory[_0xc4af('0xe')]['handleDrained']=function(_0x2c825b){this[_0xc4af('0x9')](!![]);};RRMemory[_0xc4af('0xe')][_0xc4af('0x10')]=function(_0x4f35cc){if(util['isAgentAvailable'](this[_0xc4af('0x7')]['id'],this['realtime'][_0xc4af('0x11')][this[_0xc4af('0x12')]],this[_0xc4af('0x7')][_0xc4af('0x13')],!![])){logger[_0xc4af('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0xc4af('0x7')]['id'],this['agentId']);clearInterval(this[_0xc4af('0x6')][this[_0xc4af('0x12')]]);_0x4f35cc[_0xc4af('0x15')]();setTimeout(this['push'][_0xc4af('0xa')](this),0x3e8);}};RRMemory[_0xc4af('0xe')][_0xc4af('0x8')]=function(_0x42225f){this[_0xc4af('0x12')]=rr(this[_0xc4af('0x16')]['mapAgentsId']);logger['info'](_0xc4af('0x17'),this[_0xc4af('0x7')]['id'],this[_0xc4af('0x12')]);if(_[_0xc4af('0x18')](this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]])){logger[_0xc4af('0x14')](_0xc4af('0x19'),this['squeue']['id'],this[_0xc4af('0x12')]);_0x42225f['done']();setTimeout(this[_0xc4af('0xf')][_0xc4af('0xa')](this),0x3e8);}else{if(util['isAgentAvailable'](this['squeue']['id'],this['realtime'][_0xc4af('0x11')][this[_0xc4af('0x12')]],this[_0xc4af('0x7')][_0xc4af('0x13')],!![])){this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]][_0xc4af('0x1a')]=!![];this[_0xc4af('0x5')]['agents'][this[_0xc4af('0x12')]][_0xc4af('0x1b')]=this[_0xc4af('0x16')][_0xc4af('0x1c')];util[_0xc4af('0x1d')](this[_0xc4af('0x4')],this['squeue']['id'],this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]],this['queue'],this[_0xc4af('0x3')]);util[_0xc4af('0x1e')](this[_0xc4af('0x7')]['id'],this['realtime'][_0xc4af('0x11')][this[_0xc4af('0x12')]],_0xc4af('0x1f'));this['intervals'][this['agentId']]=setInterval(this[_0xc4af('0x10')][_0xc4af('0xa')](this,_0x42225f),0x3e8);}else{logger[_0xc4af('0x14')](_0xc4af('0x20'),this['squeue']['id'],this[_0xc4af('0x12')]);_0x42225f[_0xc4af('0x15')]();setTimeout(this['push']['bind'](this),0x3e8);}}};RRMemory[_0xc4af('0xe')][_0xc4af('0x9')]=function(_0x589714){logger[_0xc4af('0x14')](_0xc4af('0x21'),this['squeue']['id'],this[_0xc4af('0x12')]);if(_[_0xc4af('0x18')](this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]])){logger[_0xc4af('0x14')](_0xc4af('0x19'),this[_0xc4af('0x7')]['id'],this[_0xc4af('0x12')]);}else{clearInterval(this['intervals'][this[_0xc4af('0x12')]]);util[_0xc4af('0x22')](this[_0xc4af('0x4')],this[_0xc4af('0x7')]['id'],this['realtime']['agents'][this[_0xc4af('0x12')]],this['queue'],this[_0xc4af('0x3')]);util['writeLog'](this['squeue']['id'],this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]],'TIMEOUT');this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]]['busy']=![];this[_0xc4af('0x5')][_0xc4af('0x11')][this[_0xc4af('0x12')]]['busyQueue']=undefined;}if(!_0x589714){setTimeout(this[_0xc4af('0xf')][_0xc4af('0xa')](this),0x3e8);}};function rrmemory(_0x18f5b4,_0x5a5813,_0x5a1c32,_0x18f16d){return new RRMemory(_0x18f5b4,_0x5a5813,_0x5a1c32,_0x18f16d);}module[_0xc4af('0x23')]=rrmemory;
\ No newline at end of file
index b4ba3ee..b6eaebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca9=['user:%s','name','user:save','\x20interaction','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','save','remove','info','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','Capacity','CurrentCapacity','\x20MAXCAPACITY','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','defaults','localhost','redis','emit','format'];(function(_0x2f2075,_0x472ec5){var _0x1454b0=function(_0x4d236d){while(--_0x4d236d){_0x2f2075['push'](_0x2f2075['shift']());}};_0x1454b0(++_0x472ec5);}(_0x8ca9,0x9c));var _0x98ca=function(_0x2a4ab6,_0x47a83c){_0x2a4ab6=_0x2a4ab6-0x0;var _0x1f6d53=_0x8ca9[_0x2a4ab6];return _0x1f6d53;};'use strict';var _=require(_0x98ca('0x0'));var util=require(_0x98ca('0x1'));var utils=require(_0x98ca('0x2'));var Mustache=require(_0x98ca('0x3'));var Redis=require(_0x98ca('0x4'));var config=require(_0x98ca('0x5'));var logger=require(_0x98ca('0x6'))('routing');config['redis']=_[_0x98ca('0x7')](config['redis'],{'host':_0x98ca('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x98ca('0x9')]));function emit(_0xca4097,_0x18c349,_0x2852a0){io['to'](_0xca4097)[_0x98ca('0xa')](_0x18c349,_0x2852a0);}function sendNotification(_0x28a37a,_0x162bd0,_0x210234,_0x277c29,_0x404cc1,_0x572858){io['to'](util[_0x98ca('0xb')](_0x98ca('0xc'),_0x277c29[_0x98ca('0xd')]))[_0x98ca('0xa')](_0x98ca('0xe'),_0x277c29);var _0x276213=_0x572858||{};var _0x17ee87=_0x210234['split']('.');var _0x16221a={'uniqueid':_0x162bd0,'channel':_0x17ee87[0x0],'id':_0x17ee87[0x1],'title':_0x17ee87[0x0]+_0x98ca('0xf'),'interactionId':_0x17ee87[0x2],'queue':_0x404cc1?_0x404cc1[_0x98ca('0xd')]:null,'sound':_0x276213[_0x98ca('0x10')]['notificationSound'],'shake':_0x276213[_0x98ca('0x10')][_0x98ca('0x11')]};try{if(!_0x276213[_0x98ca('0x12')]){_0x276213[_0x98ca('0x12')]={};}if(_0x404cc1){_0x276213[_0x98ca('0x12')][_0x98ca('0x13')]=_0x404cc1;}else if(_0x276213[_0x98ca('0x12')]['queue']){delete _0x276213[_0x98ca('0x12')][_0x98ca('0x13')];}_0x16221a[_0x98ca('0x14')]=utils[_0x98ca('0x15')](_0x276213['account'][_0x98ca('0x16')],_0x276213);}catch(_0x3c2f65){_0x16221a[_0x98ca('0x14')]=_0x98ca('0x17');logger[_0x98ca('0x18')](util[_0x98ca('0xb')](_0x98ca('0x19'),_0x162bd0,_0x3c2f65[_0x98ca('0x1a')]));}io['to'](util[_0x98ca('0xb')](_0x98ca('0xc'),_0x277c29[_0x98ca('0xd')]))['emit'](util[_0x98ca('0xb')]('notification:%s',_0x28a37a?_0x98ca('0x1b'):_0x98ca('0x1c')),_0x16221a);}function writeLog(_0x50f8b4,_0x5ca905,_0x4620e3){return logger[_0x98ca('0x1d')](util[_0x98ca('0xb')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x50f8b4,_0x5ca905[_0x98ca('0xd')],_0x4620e3));}exports[_0x98ca('0x1e')]=function(_0x56f799,_0x6651c8,_0x5dc400,_0x3fd0bd){if(_0x6651c8[_0x98ca('0x1f')]){writeLog(_0x56f799,_0x6651c8,_0x98ca('0x20'));return![];}if(!_0x6651c8[_0x98ca('0x21')]){writeLog(_0x56f799,_0x6651c8,_0x98ca('0x22'));return![];}if(_0x6651c8[_0x5dc400+_0x98ca('0x23')]){writeLog(_0x56f799,_0x6651c8,_0x98ca('0x24'));return![];}if(_0x3fd0bd&&_0x6651c8['hasOwnProperty'](_0x5dc400+_0x98ca('0x25'))&&_0x6651c8['hasOwnProperty'](_0x5dc400+_0x98ca('0x26'))){if(_0x6651c8[_0x5dc400+_0x98ca('0x25')]>0x0&&_0x6651c8[_0x5dc400+'CurrentCapacity']>=_0x6651c8[_0x5dc400+_0x98ca('0x25')]){writeLog(_0x56f799,_0x6651c8,_0x5dc400['toUpperCase']()+_0x98ca('0x27'));return![];}}return!![];};exports['showNotification']=function(_0x5bf77d,_0x14bfb4,_0x540f45,_0x342a83,_0x35b920){return sendNotification(!![],_0x5bf77d,_0x14bfb4,_0x540f45,_0x342a83,_0x35b920);};exports[_0x98ca('0x28')]=function(_0x21a12a,_0x3b3e60,_0x1e7fcf,_0x11389a,_0x1bf154){return sendNotification(![],_0x21a12a,_0x3b3e60,_0x1e7fcf,_0x11389a,_0x1bf154);};exports[_0x98ca('0x29')]=writeLog;
\ No newline at end of file
+var _0xdb28=['error','[%s][QUEUE]\x20%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','user:save','split','\x20interaction','name','account','notificationShake','body','queue','getMustacheRender','msg','I\x20can\x27t\x20render\x20your\x20template'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0xdb28,0x106));var _0x8db2=function(_0x188e9d,_0x510d50){_0x188e9d=_0x188e9d-0x0;var _0x4eac18=_0xdb28[_0x188e9d];return _0x4eac18;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var utils=require(_0x8db2('0x2'));var Mustache=require(_0x8db2('0x3'));var Redis=require('ioredis');var config=require(_0x8db2('0x4'));var logger=require(_0x8db2('0x5'))(_0x8db2('0x6'));config[_0x8db2('0x7')]=_[_0x8db2('0x8')](config['redis'],{'host':_0x8db2('0x9'),'port':0x18eb});var io=require(_0x8db2('0xa'))(new Redis(config['redis']));function emit(_0x494b40,_0x477f50,_0x46932f){io['to'](_0x494b40)[_0x8db2('0xb')](_0x477f50,_0x46932f);}function sendNotification(_0x29f698,_0x2f3f2f,_0x1ff362,_0x126c78,_0x4ba340,_0x30dc90){io['to'](util[_0x8db2('0xc')](_0x8db2('0xd'),_0x126c78['name']))[_0x8db2('0xb')](_0x8db2('0xe'),_0x126c78);var _0x576475=_0x30dc90||{};var _0x41beda=_0x1ff362[_0x8db2('0xf')]('.');var _0x1349f6={'uniqueid':_0x2f3f2f,'channel':_0x41beda[0x0],'id':_0x41beda[0x1],'title':_0x41beda[0x0]+_0x8db2('0x10'),'interactionId':_0x41beda[0x2],'queue':_0x4ba340?_0x4ba340[_0x8db2('0x11')]:null,'sound':_0x576475['account']['notificationSound'],'shake':_0x576475[_0x8db2('0x12')][_0x8db2('0x13')]};try{if(!_0x576475[_0x8db2('0x14')]){_0x576475[_0x8db2('0x14')]={};}if(_0x4ba340){_0x576475[_0x8db2('0x14')][_0x8db2('0x15')]=_0x4ba340;}else if(_0x576475[_0x8db2('0x14')][_0x8db2('0x15')]){delete _0x576475[_0x8db2('0x14')][_0x8db2('0x15')];}_0x1349f6['msg']=utils[_0x8db2('0x16')](_0x576475[_0x8db2('0x12')]['notificationTemplate'],_0x576475);}catch(_0x2b3f73){_0x1349f6[_0x8db2('0x17')]=_0x8db2('0x18');logger[_0x8db2('0x19')](util[_0x8db2('0xc')](_0x8db2('0x1a'),_0x2f3f2f,_0x2b3f73['message']));}io['to'](util['format'](_0x8db2('0xd'),_0x126c78[_0x8db2('0x11')]))[_0x8db2('0xb')](util[_0x8db2('0xc')]('notification:%s',_0x29f698?_0x8db2('0x1b'):_0x8db2('0x1c')),_0x1349f6);}function writeLog(_0x260940,_0x297ba3,_0x3dbe8e){return logger['info'](util[_0x8db2('0xc')](_0x8db2('0x1d'),_0x260940,_0x297ba3[_0x8db2('0x11')],_0x3dbe8e));}exports[_0x8db2('0x1e')]=function(_0x2260d8,_0x21704c,_0x796ec1,_0x5c6614){if(_0x21704c[_0x8db2('0x1f')]){writeLog(_0x2260d8,_0x21704c,'BUSY');return![];}if(!_0x21704c['online']){writeLog(_0x2260d8,_0x21704c,'OFFLINE');return![];}if(_0x21704c[_0x796ec1+'Pause']){writeLog(_0x2260d8,_0x21704c,_0x8db2('0x20'));return![];}if(_0x5c6614&&_0x21704c[_0x8db2('0x21')](_0x796ec1+_0x8db2('0x22'))&&_0x21704c[_0x8db2('0x21')](_0x796ec1+_0x8db2('0x23'))){if(_0x21704c[_0x796ec1+_0x8db2('0x22')]>0x0&&_0x21704c[_0x796ec1+'CurrentCapacity']>=_0x21704c[_0x796ec1+_0x8db2('0x22')]){writeLog(_0x2260d8,_0x21704c,_0x796ec1[_0x8db2('0x24')]()+_0x8db2('0x25'));return![];}}return!![];};exports[_0x8db2('0x26')]=function(_0x483aee,_0x2e0691,_0x11f398,_0x241baf,_0x1687ed){return sendNotification(!![],_0x483aee,_0x2e0691,_0x11f398,_0x241baf,_0x1687ed);};exports[_0x8db2('0x27')]=function(_0x21bae5,_0xa54ea3,_0x3124d5,_0xbc5366,_0x493cab){return sendNotification(![],_0x21bae5,_0xa54ea3,_0x3124d5,_0xbc5366,_0x493cab);};exports[_0x8db2('0x28')]=writeLog;
\ No newline at end of file
index 98bef30..16aff07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x397c=['[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','next','validate','shelljs','lodash','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isEmpty','[%s][SYSTEM]\x20no\x20variable','body'];(function(_0x50c82f,_0x2a7e4a){var _0x538578=function(_0x6a65ca){while(--_0x6a65ca){_0x50c82f['push'](_0x50c82f['shift']());}};_0x538578(++_0x2a7e4a);}(_0x397c,0xc1));var _0xc397=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x397c[_0x199572];return _0x13cfa3;};'use strict';var schema=require(_0xc397('0x0'));var sh=require(_0xc397('0x1'));var _=require(_0xc397('0x2'));var utils=require('./utils');var logger=require(_0xc397('0x3'))('routing');var system=schema({'command':{'type':_0xc397('0x4'),'required':!![],'message':_0xc397('0x5')}});exports[_0xc397('0x6')]=function(_0x194ade,_0x8be32e){return function(_0x4e3a35){try{var _0x1d39b9={'command':_0x8be32e[0x0]};var _0x187c41=system['validate'](_0x1d39b9,{'typecast':!![]});if(_0x187c41[_0xc397('0x7')]){logger[_0xc397('0x8')](_0xc397('0x9'),_0x194ade,_[_0xc397('0xa')](_0x187c41,_0xc397('0xb'))[_0xc397('0xc')](',\x20'));logger[_0xc397('0xd')](_0xc397('0xe'),_0x194ade);_0x4e3a35['next']();}else{var _0x27764d=this;var _0x130ea2=utils[_0xc397('0xf')](_0x8be32e[0x0],this);logger[_0xc397('0xd')](_0xc397('0x10'),_0x194ade,_0x130ea2);sh[_0xc397('0x11')](_[_0xc397('0x12')](_0x130ea2),function(_0x72f263,_0x1fc78f){logger[_0xc397('0xd')](_0xc397('0x13'),_0x194ade,_0x72f263);if(_0x72f263==0x0){var _0x4fe541=_0x1fc78f['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x8be32e[0x1])||_[_0xc397('0x14')](_0x8be32e[0x1])){logger[_0xc397('0xd')](_0xc397('0x15'),_0x194ade);_0x27764d[_0xc397('0x16')][_0x8be32e[0x1]]=_0x4fe541;}else{logger[_0xc397('0xd')](_0xc397('0x17'),_0x194ade,_0x8be32e[0x1],_0x4fe541);_0x27764d[_0xc397('0x16')][_0x8be32e[0x1]]=_0x4fe541;}}_0x4e3a35['next']();});}}catch(_0x5c0995){logger['error'](_0xc397('0x9'),_0x194ade,_[_0xc397('0x18')](_0x5c0995)?JSON[_0xc397('0x19')](_0x5c0995):_0x5c0995);logger['info'](_0xc397('0xe'),_0x194ade);_0x4e3a35[_0xc397('0x1a')]();}};};
\ No newline at end of file
+var _0x51d7=['routing','string','consequence','[%s][SYSTEM]\x20%s','message','join','next','getMustacheRender','info','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','isObject','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','../../../../config/logger'];(function(_0x598aa9,_0x36ce33){var _0x4ccbc3=function(_0x3be91a){while(--_0x3be91a){_0x598aa9['push'](_0x598aa9['shift']());}};_0x4ccbc3(++_0x36ce33);}(_0x51d7,0x1e1));var _0x751d=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x51d7[_0x199572];return _0x13cfa3;};'use strict';var schema=require(_0x751d('0x0'));var sh=require(_0x751d('0x1'));var _=require('lodash');var utils=require('./utils');var logger=require(_0x751d('0x2'))(_0x751d('0x3'));var system=schema({'command':{'type':_0x751d('0x4'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x751d('0x5')]=function(_0x550271,_0x3cc21c){return function(_0x3b7123){try{var _0x39836e={'command':_0x3cc21c[0x0]};var _0x39a0e8=system[_0x751d('0x0')](_0x39836e,{'typecast':!![]});if(_0x39a0e8['length']){logger['error'](_0x751d('0x6'),_0x550271,_['map'](_0x39a0e8,_0x751d('0x7'))[_0x751d('0x8')](',\x20'));logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x550271);_0x3b7123[_0x751d('0x9')]();}else{var _0x279091=this;var _0x79a676=utils[_0x751d('0xa')](_0x3cc21c[0x0],this);logger[_0x751d('0xb')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x550271,_0x79a676);sh[_0x751d('0xc')](_['trim'](_0x79a676),function(_0x478fa9,_0x55ceeb){logger['info'](_0x751d('0xd'),_0x550271,_0x478fa9);if(_0x478fa9==0x0){var _0x671597=_0x55ceeb[_0x751d('0xe')](/(\r\n|\n|\r)/gm,'');if(_[_0x751d('0xf')](_0x3cc21c[0x1])||_[_0x751d('0x10')](_0x3cc21c[0x1])){logger[_0x751d('0xb')](_0x751d('0x11'),_0x550271);_0x279091[_0x751d('0x12')][_0x3cc21c[0x1]]=_0x671597;}else{logger[_0x751d('0xb')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x550271,_0x3cc21c[0x1],_0x671597);_0x279091[_0x751d('0x12')][_0x3cc21c[0x1]]=_0x671597;}}_0x3b7123[_0x751d('0x9')]();});}}catch(_0x8e60a8){logger['error'](_0x751d('0x6'),_0x550271,_[_0x751d('0x13')](_0x8e60a8)?JSON[_0x751d('0x14')](_0x8e60a8):_0x8e60a8);logger[_0x751d('0xb')](_0x751d('0x15'),_0x550271);_0x3b7123['next']();}};};
\ No newline at end of file
index 5824532..d814ee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaad=['error','[%s][TAG]\x20%s','map','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','catch','stringify','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','consequence','length'];(function(_0x520470,_0x484dc0){var _0x31674e=function(_0x40f899){while(--_0x40f899){_0x520470['push'](_0x520470['shift']());}};_0x31674e(++_0x484dc0);}(_0xbaad,0xe7));var _0xdbaa=function(_0x479f03,_0x12dda4){_0x479f03=_0x479f03-0x0;var _0x2e75a8=_0xbaad[_0x479f03];return _0x2e75a8;};'use strict';var schema=require(_0xdbaa('0x0'));var _=require(_0xdbaa('0x1'));var rpc={'chatInteraction':require(_0xdbaa('0x2')),'openchannelInteraction':require(_0xdbaa('0x3')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xdbaa('0x4')),'faxInteraction':require(_0xdbaa('0x5')),'whatsappInteraction':require(_0xdbaa('0x6'))};var logger=require(_0xdbaa('0x7'))(_0xdbaa('0x8'));var tag=schema({'tag':{'type':_0xdbaa('0x9'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xdbaa('0xa')]=function(_0x172c77,_0xeea893,_0x22502a,_0x56133a){return function(_0x11caa9){try{var _0xa39110={'tag':_0xeea893[0x0]};var _0x1ea557=tag[_0xdbaa('0x0')](_0xa39110,{'typecast':!![]});if(_0x1ea557[_0xdbaa('0xb')]){logger[_0xdbaa('0xc')](_0xdbaa('0xd'),_0x172c77,_[_0xdbaa('0xe')](_0x1ea557,'message')[_0xdbaa('0xf')](',\x20'));logger[_0xdbaa('0x10')](_0xdbaa('0x11'),_0x172c77);_0x11caa9[_0xdbaa('0x12')]();}else{var _0x2cb94f={'ids':[_0xeea893[0x0]]};if(rpc[_0x56133a[_0xdbaa('0x13')]+_0xdbaa('0x14')]){rpc[_0x56133a[_0xdbaa('0x13')]+_0xdbaa('0x14')][_0xdbaa('0x15')](_0x56133a[_0xdbaa('0x16')]['id'],_0x2cb94f)[_0xdbaa('0x17')](function(_0x45d6cc){logger[_0xdbaa('0x10')]('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x172c77,_0xeea893[0x1],_0x56133a[_0xdbaa('0x13')],_0x56133a['interaction']['id']);})[_0xdbaa('0x18')](function(_0x5355e6){logger['error']('[%s][TAG]\x20%s',_0x172c77,JSON[_0xdbaa('0x19')](_0x5355e6));logger['info'](_0xdbaa('0x11'),_0x172c77);})['finally'](function(){_0x11caa9[_0xdbaa('0x12')]();});}}}catch(_0x46f9de){logger[_0xdbaa('0xc')](_0xdbaa('0xd'),_0x172c77,_[_0xdbaa('0x1a')](_0x46f9de)?JSON[_0xdbaa('0x19')](_0x46f9de):_0x46f9de);logger[_0xdbaa('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x172c77);_0x11caa9[_0xdbaa('0x12')]();}};};
\ No newline at end of file
+var _0xd85f=['next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','error','[%s][TAG]\x20%s','isObject','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','map','message','join','info'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd85f,0x1ce));var _0xfd85=function(_0x5cae32,_0x428341){_0x5cae32=_0x5cae32-0x0;var _0x1d3161=_0xd85f[_0x5cae32];return _0x1d3161;};'use strict';var schema=require(_0xfd85('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0xfd85('0x1')),'openchannelInteraction':require(_0xfd85('0x2')),'smsInteraction':require(_0xfd85('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xfd85('0x4'))};var logger=require('../../../../config/logger')(_0xfd85('0x5'));var tag=schema({'tag':{'type':_0xfd85('0x6'),'required':!![],'message':_0xfd85('0x7')}});exports[_0xfd85('0x8')]=function(_0x364a0e,_0x12a6ce,_0x14cbc2,_0x293753){return function(_0x5b2d77){try{var _0x2e5f9f={'tag':_0x12a6ce[0x0]};var _0x5bc07b=tag[_0xfd85('0x0')](_0x2e5f9f,{'typecast':!![]});if(_0x5bc07b[_0xfd85('0x9')]){logger['error']('[%s][TAG]\x20%s',_0x364a0e,_[_0xfd85('0xa')](_0x5bc07b,_0xfd85('0xb'))[_0xfd85('0xc')](',\x20'));logger[_0xfd85('0xd')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x364a0e);_0x5b2d77[_0xfd85('0xe')]();}else{var _0x15e7e0={'ids':[_0x12a6ce[0x0]]};if(rpc[_0x293753[_0xfd85('0xf')]+_0xfd85('0x10')]){rpc[_0x293753[_0xfd85('0xf')]+_0xfd85('0x10')][_0xfd85('0x11')](_0x293753[_0xfd85('0x12')]['id'],_0x15e7e0)[_0xfd85('0x13')](function(_0xfc9111){logger[_0xfd85('0xd')](_0xfd85('0x14'),_0x364a0e,_0x12a6ce[0x1],_0x293753[_0xfd85('0xf')],_0x293753[_0xfd85('0x12')]['id']);})[_0xfd85('0x15')](function(_0x634e77){logger['error']('[%s][TAG]\x20%s',_0x364a0e,JSON[_0xfd85('0x16')](_0x634e77));logger[_0xfd85('0xd')](_0xfd85('0x17'),_0x364a0e);})[_0xfd85('0x18')](function(){_0x5b2d77[_0xfd85('0xe')]();});}}}catch(_0x532a84){logger[_0xfd85('0x19')](_0xfd85('0x1a'),_0x364a0e,_[_0xfd85('0x1b')](_0x532a84)?JSON[_0xfd85('0x16')](_0x532a84):_0x532a84);logger[_0xfd85('0xd')](_0xfd85('0x17'),_0x364a0e);_0x5b2d77[_0xfd85('0xe')]();}};};
\ No newline at end of file
index efc6be1..cd408c2 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(_0x3f8ac2,_0x11f197){var _0x1cea46=function(_0x3126f8){while(--_0x3126f8){_0x3f8ac2['push'](_0x3f8ac2['shift']());}};_0x1cea46(++_0x11f197);}(_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 _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x16295c,_0x423552){var _0xf9efd1=function(_0x56c2eb){while(--_0x56c2eb){_0x16295c['push'](_0x16295c['shift']());}};_0xf9efd1(++_0x423552);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index 87eef3b..7ebe3f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3369=['slice','dialogflow','dialogflowv2','tag','TagId','./interval','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','matchPath','emit','complete','stack','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','isNil','IntervalId','Intervals','interval','rules','message','interaction','isArray','applications','length','existsSync','join','app','.js','autoreply','appdata','split','channel','push'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x3369,0x157));var _0x9336=function(_0x157991,_0x81cb66){_0x157991=_0x157991-0x0;var _0x8fe4c2=_0x3369[_0x157991];return _0x8fe4c2;};'use strict';var _=require(_0x9336('0x0'));var util=require(_0x9336('0x1'));var path=require(_0x9336('0x2'));var fs=require('fs');var jayson=require(_0x9336('0x3'));var BPromise=require(_0x9336('0x4'));var uuid=require(_0x9336('0x5'));var config=require(_0x9336('0x6'));var logger=require(_0x9336('0x7'))(_0x9336('0x8'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x9336('0x9')),'chatQueueReport':require(_0x9336('0xa')),'smsQueueReport':require(_0x9336('0xb')),'faxQueueReport':require(_0x9336('0xc')),'whatsappQueueReport':require(_0x9336('0xd'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x2c0f68,_0x4ec6d1,_0x3d6ddf){return util['format']('%s.%s.%s',_0x2c0f68,_0x4ec6d1||0x0,_0x3d6ddf||0x0);}function getIntervals(_0x5540b7,_0x44b585){var _0x3a0200=[];if(!_[_0x9336('0xe')](_0x44b585['IntervalId'])&&!_[_0x9336('0xe')](_0x5540b7[_0x44b585[_0x9336('0xf')]])&&!_[_0x9336('0xe')](_0x5540b7[_0x44b585[_0x9336('0xf')]][_0x9336('0x10')])){_0x3a0200=_['map'](_0x5540b7[_0x44b585['IntervalId']]['Intervals'],_0x9336('0x11'));}else if(!_[_0x9336('0xe')](_0x44b585['interval'])){_0x3a0200=[_0x44b585[_0x9336('0x11')]];}return _0x3a0200;}exports['listen']=function(_0x518ba0){_0x518ba0[_0x9336('0x12')]={};return new BPromise(function(_0x41a50d,_0xb75ac8){var _0x5cb858={'Start':function(_0xa18682){var _0x1a2437=this;return new Promise(function(_0x2b916a,_0xfd95e6){if(_0xa18682){try{var _0x187a6e=[];var _0x54a087=getId(_0xa18682['channel'],_0xa18682[_0x9336('0x13')]?_0xa18682[_0x9336('0x13')]['id']:0x0,_0xa18682[_0x9336('0x14')]?_0xa18682['interaction']['id']:0x0);if(_0xa18682['applications']&&_[_0x9336('0x15')](_0xa18682[_0x9336('0x16')])&&_0xa18682[_0x9336('0x16')]['length']){for(var _0x3b1cca=0x0;_0x3b1cca<_0xa18682['applications'][_0x9336('0x17')];_0x3b1cca+=0x1){var _0xbc3acf=_0xa18682['applications'][_0x3b1cca];if(fs[_0x9336('0x18')](path[_0x9336('0x19')](__dirname,_0x9336('0x16'),_0xbc3acf[_0x9336('0x1a')]+_0x9336('0x1b')))){var _0x1af649=[];switch(_0xbc3acf[_0x9336('0x1a')]['toLowerCase']()){case _0x9336('0x1c'):var _0x212651=_0xbc3acf[_0x9336('0x1d')][_0x9336('0x1e')](',');if(_0xa18682[_0x9336('0x1f')]==='mail'){_0x1af649[_0x9336('0x20')](_0x212651[0x0]);_0x1af649['push'](_0x212651[0x1]);_0x1af649[_0x9336('0x20')](_0x212651[_0x9336('0x21')](0x2,_0x212651[_0x9336('0x17')])['join'](','));}else{_0x1af649[_0x9336('0x20')](_0x212651[0x0]);_0x1af649[_0x9336('0x20')](_0x212651['slice'](0x1,_0x212651[_0x9336('0x17')])[_0x9336('0x19')](','));}break;case _0x9336('0x22'):var _0x41da2c=_0xbc3acf[_0x9336('0x1d')][_0x9336('0x1e')](',');_0x1af649[_0x9336('0x20')](_0x41da2c[0x0]);_0x1af649['push'](_0x41da2c[0x1]);_0x1af649[_0x9336('0x20')](_0x41da2c[_0x9336('0x21')](0x2,_0x41da2c[_0x9336('0x17')])['join'](','));break;case _0x9336('0x23'):var _0x2d103f=_0xbc3acf[_0x9336('0x1d')][_0x9336('0x1e')](',');_0x1af649[_0x9336('0x20')](_0x2d103f[0x0]);_0x1af649[_0x9336('0x20')](_0x2d103f[0x1]);_0x1af649[_0x9336('0x20')](_0x2d103f[0x2]);_0x1af649[_0x9336('0x20')](_0x2d103f[0x3]);_0x1af649[_0x9336('0x20')](_0x2d103f[_0x9336('0x21')](0x4,_0x2d103f['length'])['join'](','));break;case'amazonlex':var _0x2f7ae8=_0xbc3acf[_0x9336('0x1d')][_0x9336('0x1e')](',');_0x1af649[_0x9336('0x20')](_0x2f7ae8[0x0]);_0x1af649[_0x9336('0x20')](_0x2f7ae8[0x1]);_0x1af649[_0x9336('0x20')](_0x2f7ae8[0x2]);_0x1af649[_0x9336('0x20')](_0x2f7ae8[0x3]);_0x1af649['push'](_0x2f7ae8[_0x9336('0x21')](0x4,_0x2f7ae8[_0x9336('0x17')])['join'](','));break;case _0x9336('0x13'):_0x1af649[_0x9336('0x20')](_0xbc3acf[_0x9336('0x1d')]);break;case _0x9336('0x24'):_0x1af649[_0x9336('0x20')](_0xbc3acf[_0x9336('0x25')]);_0x1af649[_0x9336('0x20')](_0xbc3acf[_0x9336('0x1d')]);break;default:_0x1af649=_[_0x9336('0xe')](_0xbc3acf[_0x9336('0x1d')])?[]:_0xbc3acf[_0x9336('0x1d')][_0x9336('0x1e')](',');}var _0x1aa8f7={'id':util['format']('%s:%s:%s',_0x54a087,_0xbc3acf['id'],_0xbc3acf[_0x9336('0x1a')]),'condition':require(_0x9336('0x26'))['condition'](_0x54a087,getIntervals(_0x518ba0[_0x9336('0x27')],_0xbc3acf),_0x518ba0),'consequence':require(_0x9336('0x28')+_0xbc3acf[_0x9336('0x1a')])[_0x9336('0x29')](_0x54a087,_0x1af649,_0x518ba0,_0xa18682),'p':_0xbc3acf[_0x9336('0x2a')]||0x0};logger[_0x9336('0x2b')](_0x9336('0x2c'),_0x1aa8f7['id'],_0x9336('0x2d'),getIntervals(_0x518ba0['intervals'],_0xbc3acf)[_0x9336('0x19')](_0x9336('0x2e')));_0x187a6e['push'](_0x1aa8f7);}else{logger[_0x9336('0x2f')](_0x9336('0x30'),path[_0x9336('0x19')](__dirname,_0x9336('0x16'),_0xbc3acf[_0x9336('0x1a')]+_0x9336('0x1b')));}}_0x518ba0[_0x9336('0x12')][_0x54a087]=new RuleEngine(_0x187a6e);_0x518ba0[_0x9336('0x12')][_0x54a087][_0x9336('0x31')](_0xa18682,function(_0xc6de76){logger['info'](_0x9336('0x32'),JSON['stringify'](_0xc6de76[_0x9336('0x33')]));if(_0x518ba0['rules'][_0x54a087]){_0x518ba0['rules'][_0x54a087][_0x9336('0x34')](_0x9336('0x35'));}});return _0x2b916a({'code':0xc8,'message':_0xa18682});}else{logger[_0x9336('0x2b')]('No\x20applications\x20to\x20execute');return _0x2b916a({'code':0xc8,'message':_0xa18682});}}catch(_0x3a3b27){logger[_0x9336('0x2f')](_0x3a3b27[_0x9336('0x36')]);return _0xfd95e6(_0x1a2437[_0x9336('0x2f')](0x1f4,_0x3a3b27));}}return _0xfd95e6(_0x9336('0x37'));});},'AcceptMessage':function(_0x369c8e){var _0x3ff33c=this;return new Promise(function(_0x293435,_0x31999f){if(_0x369c8e[_0x9336('0x38')]&&_0x369c8e[_0x9336('0x38')]['id']){if(_0x518ba0['agents'][_0x369c8e[_0x9336('0x38')]['id']]){_0x518ba0[_0x9336('0x39')][_0x369c8e[_0x9336('0x38')]['id']][_0x9336('0x3a')]=![];_0x518ba0[_0x9336('0x39')][_0x369c8e[_0x9336('0x38')]['id']]['busyQueue']=undefined;}}if(_0x369c8e[_0x9336('0x13')]&&_0x369c8e['message']['id']){try{var _0x5b88a5=getId(_0x369c8e[_0x9336('0x1f')],_0x369c8e[_0x9336('0x13')]?_0x369c8e[_0x9336('0x13')]['id']:0x0,_0x369c8e[_0x9336('0x14')]?_0x369c8e[_0x9336('0x14')]['id']:0x0);if(_0x518ba0[_0x9336('0x12')][_0x5b88a5]){_0x518ba0['rules'][_0x5b88a5][_0x9336('0x34')](_0x9336('0x3b'));if(rpc[_0x369c8e[_0x9336('0x1f')]+_0x9336('0x3c')]){rpc[_0x369c8e['channel']+'QueueReport'][_0x9336('0x3d')](_0x5b88a5,{'UserId':_0x369c8e[_0x9336('0x13')][_0x9336('0x3e')]})[_0x9336('0x3f')](function(_0x55d4f7){logger[_0x9336('0x2f')](_0x9336('0x40'));});}}return _0x293435({'code':0xc8,'message':_0x369c8e});}catch(_0xc1dd3b){logger[_0x9336('0x2f')](_0xc1dd3b[_0x9336('0x36')]);return _0x31999f(_0x3ff33c[_0x9336('0x2f')](0x1f4,_0xc1dd3b));}}logger[_0x9336('0x2f')](_0x9336('0x41'));return _0x31999f(_0x3ff33c[_0x9336('0x2f')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x1fc51f){var _0x383fef=this;return new Promise(function(_0x3baa90,_0x1ca0ea){if(_0x1fc51f['agent']&&_0x1fc51f[_0x9336('0x38')]['id']){try{if(_0x518ba0[_0x9336('0x39')][_0x1fc51f[_0x9336('0x38')]['id']]){_0x518ba0[_0x9336('0x39')][_0x1fc51f['agent']['id']][_0x9336('0x3a')]=![];_0x518ba0['agents'][_0x1fc51f[_0x9336('0x38')]['id']]['busyQueue']=undefined;}return _0x3baa90({'code':0xc8,'message':_0x1fc51f});}catch(_0x77326c){logger['error'](_0x77326c[_0x9336('0x36')]);return _0x1ca0ea(_0x383fef[_0x9336('0x2f')](0x1f4,_0x77326c));}}logger[_0x9336('0x2f')]('message\x20is\x20empty');return _0x1ca0ea(_0x383fef[_0x9336('0x2f')](0x1f4,_0x9336('0x41')));});},'AbandonInteraction':function(_0x8752b9){var _0x703a02=this;return new Promise(function(_0x2adef2,_0x331136){if(_0x8752b9[_0x9336('0x1f')]&&_0x8752b9[_0x9336('0x14')]&&_0x8752b9[_0x9336('0x14')]['id']){try{var _0x41ccd6=getId(_0x8752b9[_0x9336('0x1f')],_0x8752b9[_0x9336('0x13')]?_0x8752b9[_0x9336('0x13')]['id']:0x0,_0x8752b9['interaction']?_0x8752b9['interaction']['id']:0x0);if(_0x518ba0[_0x9336('0x12')][_0x41ccd6]){_0x518ba0[_0x9336('0x12')][_0x41ccd6][_0x9336('0x34')]('end');}return _0x2adef2({'code':0xc8,'message':_0x8752b9});}catch(_0x50c365){logger['error'](_0x50c365['stack']);return _0x331136(_0x703a02[_0x9336('0x2f')](0x1f4,_0x50c365));}}logger[_0x9336('0x2f')](_0x9336('0x41'));return _0x331136(_0x703a02[_0x9336('0x2f')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x3e2a1f){var _0x2d61f3=this;return new Promise(function(_0x1df369,_0x521ae2){if(_0x518ba0[_0x9336('0x39')][_0x9336('0x42')](_0x3e2a1f['id'])){for(var _0x20363e in _0x3e2a1f['capacity']){if(_0x3e2a1f[_0x9336('0x43')]['hasOwnProperty'](_0x20363e)){if(_0x518ba0[_0x9336('0x39')][_0x3e2a1f['id']][_0x9336('0x42')](_0x20363e+_0x9336('0x44'))){_0x518ba0[_0x9336('0x39')][_0x3e2a1f['id']][_0x20363e+_0x9336('0x44')]=parseInt(_0x3e2a1f[_0x9336('0x43')][_0x20363e],0xa);}}}_0x518ba0[_0x9336('0x39')][_0x3e2a1f['id']][_0x9336('0x45')]();return _0x1df369({'code':0xc8,'message':_0x518ba0['agents'][_0x3e2a1f['id']]});}else{return _0x521ae2(_0x2d61f3[_0x9336('0x2f')](0x1f4,_0x9336('0x46')));}});},'Agents':function(_0x5abdbe){return new Promise(function(_0x413438,_0x706db9){var _0x5ad4d7=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x39')]);_0x413438({'count':_0x5ad4d7[_0x9336('0x17')],'rows':_0x5ad4d7});});},'ChatQueues':function(_0xe22916){return new Promise(function(_0x5600cb,_0x649c61){var _0x562edc=[];for(var _0x2daf94 in _0x518ba0[_0x9336('0x48')]){if(_0x518ba0['chatQueues'][_0x9336('0x42')](_0x2daf94)){var _0x14a5e4=_0x518ba0[_0x9336('0x48')][_0x2daf94];var _0x2042f3={'id':_0x14a5e4['id'],'available':_0x14a5e4['available'],'loggedIn':_0x14a5e4[_0x9336('0x49')],'name':_0x14a5e4['name'],'paused':_0x14a5e4[_0x9336('0x4a')],'waiting':_0x14a5e4[_0x9336('0x4b')]};_0x562edc[_0x9336('0x20')](_0x2042f3);}}_0x5600cb({'count':_0x562edc['length'],'rows':_0x562edc});});},'MailQueues':function(_0x2476c4){return new Promise(function(_0x3c3b6e,_0x3203b5){var _0x141e90=[];for(var _0x5a8892 in _0x518ba0[_0x9336('0x4c')]){if(_0x518ba0[_0x9336('0x4c')][_0x9336('0x42')](_0x5a8892)){var _0x31a51a=_0x518ba0[_0x9336('0x4c')][_0x5a8892];var _0x7579fd={'id':_0x31a51a['id'],'available':_0x31a51a['available'],'loggedIn':_0x31a51a[_0x9336('0x49')],'name':_0x31a51a[_0x9336('0x4d')],'paused':_0x31a51a['paused'],'waiting':_0x31a51a[_0x9336('0x4b')]};_0x141e90[_0x9336('0x20')](_0x7579fd);}}_0x3c3b6e({'count':_0x141e90[_0x9336('0x17')],'rows':_0x141e90});});},'OpenchannelQueues':function(_0x48b6e4){return new Promise(function(_0x59ce75,_0x2a5eec){var _0xbd22fb=[];for(var _0x17eb91 in _0x518ba0['openchannelQueues']){if(_0x518ba0[_0x9336('0x4e')][_0x9336('0x42')](_0x17eb91)){var _0x3f6412=_0x518ba0[_0x9336('0x4e')][_0x17eb91];var _0x3f2973={'id':_0x3f6412['id'],'available':_0x3f6412[_0x9336('0x4f')],'loggedIn':_0x3f6412[_0x9336('0x49')],'name':_0x3f6412[_0x9336('0x4d')],'paused':_0x3f6412[_0x9336('0x4a')],'waiting':_0x3f6412[_0x9336('0x4b')]};_0xbd22fb[_0x9336('0x20')](_0x3f2973);}}_0x59ce75({'count':_0xbd22fb[_0x9336('0x17')],'rows':_0xbd22fb});});},'SmsQueues':function(_0x495736){return new Promise(function(_0x3e83e0,_0x1e2513){var _0x89c7f7=[];for(var _0x132d11 in _0x518ba0[_0x9336('0x50')]){if(_0x518ba0[_0x9336('0x50')]['hasOwnProperty'](_0x132d11)){var _0x18874c=_0x518ba0['smsQueues'][_0x132d11];var _0x2c9ba3={'id':_0x18874c['id'],'available':_0x18874c['available'],'loggedIn':_0x18874c['loggedIn'],'name':_0x18874c[_0x9336('0x4d')],'paused':_0x18874c[_0x9336('0x4a')],'waiting':_0x18874c[_0x9336('0x4b')]};_0x89c7f7[_0x9336('0x20')](_0x2c9ba3);}}_0x3e83e0({'count':_0x89c7f7[_0x9336('0x17')],'rows':_0x89c7f7});});},'FaxQueues':function(_0x29e644){return new Promise(function(_0x23b0ee,_0x552b6b){var _0x2ba0f6=[];for(var _0x34fc4d in _0x518ba0[_0x9336('0x51')]){if(_0x518ba0[_0x9336('0x51')][_0x9336('0x42')](_0x34fc4d)){var _0x2a1e91=_0x518ba0[_0x9336('0x51')][_0x34fc4d];var _0x85c799={'id':_0x2a1e91['id'],'available':_0x2a1e91['available'],'loggedIn':_0x2a1e91[_0x9336('0x49')],'name':_0x2a1e91[_0x9336('0x4d')],'paused':_0x2a1e91[_0x9336('0x4a')],'waiting':_0x2a1e91['waiting']};_0x2ba0f6[_0x9336('0x20')](_0x85c799);}}_0x23b0ee({'count':_0x2ba0f6[_0x9336('0x17')],'rows':_0x2ba0f6});});},'WhatsappQueues':function(_0x96d41f){return new Promise(function(_0xe18461,_0x527395){var _0x175ad1=[];for(var _0x38913f in _0x518ba0[_0x9336('0x52')]){if(_0x518ba0['whatsappQueues'][_0x9336('0x42')](_0x38913f)){var _0x3230b3=_0x518ba0['whatsappQueues'][_0x38913f];var _0x325fd9={'id':_0x3230b3['id'],'available':_0x3230b3['available'],'loggedIn':_0x3230b3[_0x9336('0x49')],'name':_0x3230b3[_0x9336('0x4d')],'paused':_0x3230b3[_0x9336('0x4a')],'waiting':_0x3230b3[_0x9336('0x4b')]};_0x175ad1['push'](_0x325fd9);}}_0xe18461({'count':_0x175ad1[_0x9336('0x17')],'rows':_0x175ad1});});},'ChatQueuesWaitingInteractions':function(_0x5a3f3e){return new Promise(function(_0x21d3f5,_0x59e5bb){var _0xabdcb1=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x53')]);_0x21d3f5({'count':_0xabdcb1[_0x9336('0x17')],'rows':_0xabdcb1});});},'MailQueuesWaitingInteractions':function(_0x54cc56){return new Promise(function(_0x581003,_0x419c44){var _0x98a55c=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x54')]);_0x581003({'count':_0x98a55c['length'],'rows':_0x98a55c});});},'OpenchannelQueuesWaitingInteractions':function(_0x5c4109){return new Promise(function(_0x3a4913,_0x66cee5){var _0x123b02=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x55')]);_0x3a4913({'count':_0x123b02['length'],'rows':_0x123b02});});},'SmsQueuesWaitingInteractions':function(_0x4059a0){return new Promise(function(_0x395f57,_0x8829){var _0x4f5da4=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x56')]);_0x395f57({'count':_0x4f5da4[_0x9336('0x17')],'rows':_0x4f5da4});});},'FaxQueuesWaitingInteractions':function(_0x5e2661){return new Promise(function(_0x520323,_0x4c6a05){var _0x4c621d=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x57')]);_0x520323({'count':_0x4c621d['length'],'rows':_0x4c621d});});},'WhatsappQueuesWaitingInteractions':function(_0xf23d5f){return new Promise(function(_0x3a78cb,_0x52e047){var _0x408d62=_[_0x9336('0x47')](_0x518ba0[_0x9336('0x58')]);_0x3a78cb({'count':_0x408d62['length'],'rows':_0x408d62});});}};var _0x1f8c26=jayson[_0x9336('0x59')](_0x5cb858)[_0x9336('0x5a')]();_0x1f8c26['on']('error',function(_0x55cb7f){logger[_0x9336('0x2f')](JSON[_0x9336('0x5b')](_0x55cb7f));return _0xb75ac8(_0x55cb7f);});_0x1f8c26['listen'](0x232c,_0x9336('0x5c'),function(){console[_0x9336('0x5d')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x41a50d('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x543c=['info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','routing\x20is\x20empty','agent','agents','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','chatQueues','available','name','paused','mailQueues','loggedIn','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','values','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','path','jayson/promise','uuid','../../../config/environment','../../../config/logger','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','channel','message','interaction','applications','isArray','existsSync','.js','app','toLowerCase','autoreply','appdata','split','push','slice','length','join','dialogflow','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority'];(function(_0xfbdff6,_0x2af690){var _0x4cb9be=function(_0x4022d8){while(--_0x4022d8){_0xfbdff6['push'](_0xfbdff6['shift']());}};_0x4cb9be(++_0x2af690);}(_0x543c,0xf8));var _0xc543=function(_0x57cbfb,_0x2de760){_0x57cbfb=_0x57cbfb-0x0;var _0x4cb933=_0x543c[_0x57cbfb];return _0x4cb933;};'use strict';var _=require(_0xc543('0x0'));var util=require('util');var path=require(_0xc543('0x1'));var fs=require('fs');var jayson=require(_0xc543('0x2'));var BPromise=require('bluebird');var uuid=require(_0xc543('0x3'));var config=require(_0xc543('0x4'));var logger=require(_0xc543('0x5'))('routing');var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xc543('0x6')),'chatQueueReport':require(_0xc543('0x7')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0xc543('0x8')),'whatsappQueueReport':require(_0xc543('0x9'))};var RuleEngine=require('../lib/rule-engine');function getId(_0xa84773,_0x22a2aa,_0x136d5f){return util[_0xc543('0xa')](_0xc543('0xb'),_0xa84773,_0x22a2aa||0x0,_0x136d5f||0x0);}function getIntervals(_0x10fd26,_0x26b380){var _0x3d3774=[];if(!_[_0xc543('0xc')](_0x26b380['IntervalId'])&&!_['isNil'](_0x10fd26[_0x26b380[_0xc543('0xd')]])&&!_[_0xc543('0xc')](_0x10fd26[_0x26b380[_0xc543('0xd')]][_0xc543('0xe')])){_0x3d3774=_[_0xc543('0xf')](_0x10fd26[_0x26b380[_0xc543('0xd')]]['Intervals'],_0xc543('0x10'));}else if(!_[_0xc543('0xc')](_0x26b380['interval'])){_0x3d3774=[_0x26b380[_0xc543('0x10')]];}return _0x3d3774;}exports[_0xc543('0x11')]=function(_0x805840){_0x805840['rules']={};return new BPromise(function(_0x2636ca,_0x3ac1d3){var _0x50d85b={'Start':function(_0x1103d1){var _0x1c41b9=this;return new Promise(function(_0x4ddb09,_0xb856a6){if(_0x1103d1){try{var _0x22b1c7=[];var _0x3332a9=getId(_0x1103d1[_0xc543('0x12')],_0x1103d1[_0xc543('0x13')]?_0x1103d1[_0xc543('0x13')]['id']:0x0,_0x1103d1[_0xc543('0x14')]?_0x1103d1[_0xc543('0x14')]['id']:0x0);if(_0x1103d1[_0xc543('0x15')]&&_[_0xc543('0x16')](_0x1103d1[_0xc543('0x15')])&&_0x1103d1[_0xc543('0x15')]['length']){for(var _0x552b5d=0x0;_0x552b5d<_0x1103d1[_0xc543('0x15')]['length'];_0x552b5d+=0x1){var _0x24cfd6=_0x1103d1[_0xc543('0x15')][_0x552b5d];if(fs[_0xc543('0x17')](path['join'](__dirname,'applications',_0x24cfd6['app']+_0xc543('0x18')))){var _0x2883cf=[];switch(_0x24cfd6[_0xc543('0x19')][_0xc543('0x1a')]()){case _0xc543('0x1b'):var _0x16a741=_0x24cfd6[_0xc543('0x1c')][_0xc543('0x1d')](',');if(_0x1103d1[_0xc543('0x12')]==='mail'){_0x2883cf[_0xc543('0x1e')](_0x16a741[0x0]);_0x2883cf[_0xc543('0x1e')](_0x16a741[0x1]);_0x2883cf[_0xc543('0x1e')](_0x16a741[_0xc543('0x1f')](0x2,_0x16a741[_0xc543('0x20')])[_0xc543('0x21')](','));}else{_0x2883cf['push'](_0x16a741[0x0]);_0x2883cf[_0xc543('0x1e')](_0x16a741[_0xc543('0x1f')](0x1,_0x16a741[_0xc543('0x20')])[_0xc543('0x21')](','));}break;case _0xc543('0x22'):var _0x4277a1=_0x24cfd6['appdata'][_0xc543('0x1d')](',');_0x2883cf['push'](_0x4277a1[0x0]);_0x2883cf[_0xc543('0x1e')](_0x4277a1[0x1]);_0x2883cf[_0xc543('0x1e')](_0x4277a1[_0xc543('0x1f')](0x2,_0x4277a1['length'])[_0xc543('0x21')](','));break;case _0xc543('0x23'):var _0x8842e7=_0x24cfd6[_0xc543('0x1c')][_0xc543('0x1d')](',');_0x2883cf[_0xc543('0x1e')](_0x8842e7[0x0]);_0x2883cf['push'](_0x8842e7[0x1]);_0x2883cf[_0xc543('0x1e')](_0x8842e7[0x2]);_0x2883cf[_0xc543('0x1e')](_0x8842e7[0x3]);_0x2883cf[_0xc543('0x1e')](_0x8842e7[_0xc543('0x1f')](0x4,_0x8842e7[_0xc543('0x20')])[_0xc543('0x21')](','));break;case _0xc543('0x24'):var _0x24e5c9=_0x24cfd6[_0xc543('0x1c')][_0xc543('0x1d')](',');_0x2883cf[_0xc543('0x1e')](_0x24e5c9[0x0]);_0x2883cf[_0xc543('0x1e')](_0x24e5c9[0x1]);_0x2883cf[_0xc543('0x1e')](_0x24e5c9[0x2]);_0x2883cf['push'](_0x24e5c9[0x3]);_0x2883cf[_0xc543('0x1e')](_0x24e5c9[_0xc543('0x1f')](0x4,_0x24e5c9['length'])[_0xc543('0x21')](','));break;case'message':_0x2883cf[_0xc543('0x1e')](_0x24cfd6['appdata']);break;case _0xc543('0x25'):_0x2883cf[_0xc543('0x1e')](_0x24cfd6[_0xc543('0x26')]);_0x2883cf[_0xc543('0x1e')](_0x24cfd6[_0xc543('0x1c')]);break;default:_0x2883cf=_[_0xc543('0xc')](_0x24cfd6[_0xc543('0x1c')])?[]:_0x24cfd6[_0xc543('0x1c')]['split'](',');}var _0x3d0d28={'id':util[_0xc543('0xa')](_0xc543('0x27'),_0x3332a9,_0x24cfd6['id'],_0x24cfd6[_0xc543('0x19')]),'condition':require(_0xc543('0x28'))[_0xc543('0x29')](_0x3332a9,getIntervals(_0x805840[_0xc543('0x2a')],_0x24cfd6),_0x805840),'consequence':require(_0xc543('0x2b')+_0x24cfd6['app'])[_0xc543('0x2c')](_0x3332a9,_0x2883cf,_0x805840,_0x1103d1),'p':_0x24cfd6[_0xc543('0x2d')]||0x0};logger[_0xc543('0x2e')]('Push\x20new\x20rule',_0x3d0d28['id'],_0xc543('0x2f'),getIntervals(_0x805840[_0xc543('0x2a')],_0x24cfd6)[_0xc543('0x21')](_0xc543('0x30')));_0x22b1c7[_0xc543('0x1e')](_0x3d0d28);}else{logger[_0xc543('0x31')](_0xc543('0x32'),path[_0xc543('0x21')](__dirname,'applications',_0x24cfd6[_0xc543('0x19')]+_0xc543('0x18')));}}_0x805840[_0xc543('0x33')][_0x3332a9]=new RuleEngine(_0x22b1c7);_0x805840['rules'][_0x3332a9][_0xc543('0x34')](_0x1103d1,function(_0xddb1ad){logger[_0xc543('0x2e')](_0xc543('0x35'),JSON[_0xc543('0x36')](_0xddb1ad[_0xc543('0x37')]));if(_0x805840[_0xc543('0x33')][_0x3332a9]){_0x805840[_0xc543('0x33')][_0x3332a9][_0xc543('0x38')](_0xc543('0x39'));}});return _0x4ddb09({'code':0xc8,'message':_0x1103d1});}else{logger[_0xc543('0x2e')](_0xc543('0x3a'));return _0x4ddb09({'code':0xc8,'message':_0x1103d1});}}catch(_0x928cdb){logger[_0xc543('0x31')](_0x928cdb['stack']);return _0xb856a6(_0x1c41b9[_0xc543('0x31')](0x1f4,_0x928cdb));}}return _0xb856a6(_0xc543('0x3b'));});},'AcceptMessage':function(_0x17b75e){var _0x3b0a8a=this;return new Promise(function(_0x436068,_0x22ebba){if(_0x17b75e[_0xc543('0x3c')]&&_0x17b75e['agent']['id']){if(_0x805840[_0xc543('0x3d')][_0x17b75e[_0xc543('0x3c')]['id']]){_0x805840[_0xc543('0x3d')][_0x17b75e[_0xc543('0x3c')]['id']]['busy']=![];_0x805840['agents'][_0x17b75e[_0xc543('0x3c')]['id']]['busyQueue']=undefined;}}if(_0x17b75e['message']&&_0x17b75e['message']['id']){try{var _0x3ac5de=getId(_0x17b75e[_0xc543('0x12')],_0x17b75e[_0xc543('0x13')]?_0x17b75e[_0xc543('0x13')]['id']:0x0,_0x17b75e[_0xc543('0x14')]?_0x17b75e[_0xc543('0x14')]['id']:0x0);if(_0x805840[_0xc543('0x33')][_0x3ac5de]){_0x805840['rules'][_0x3ac5de]['emit'](_0xc543('0x3e'));if(rpc[_0x17b75e[_0xc543('0x12')]+_0xc543('0x3f')]){rpc[_0x17b75e[_0xc543('0x12')]+'QueueReport'][_0xc543('0x40')](_0x3ac5de,{'UserId':_0x17b75e[_0xc543('0x13')][_0xc543('0x41')]})[_0xc543('0x42')](function(_0x96a07d){logger[_0xc543('0x31')](_0xc543('0x43'));});}}return _0x436068({'code':0xc8,'message':_0x17b75e});}catch(_0x44d9f6){logger[_0xc543('0x31')](_0x44d9f6[_0xc543('0x44')]);return _0x22ebba(_0x3b0a8a[_0xc543('0x31')](0x1f4,_0x44d9f6));}}logger[_0xc543('0x31')](_0xc543('0x45'));return _0x22ebba(_0x3b0a8a[_0xc543('0x31')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x5e3f4a){var _0x54413f=this;return new Promise(function(_0xb9a8ea,_0x55d720){if(_0x5e3f4a[_0xc543('0x3c')]&&_0x5e3f4a[_0xc543('0x3c')]['id']){try{if(_0x805840[_0xc543('0x3d')][_0x5e3f4a['agent']['id']]){_0x805840['agents'][_0x5e3f4a['agent']['id']][_0xc543('0x46')]=![];_0x805840[_0xc543('0x3d')][_0x5e3f4a[_0xc543('0x3c')]['id']][_0xc543('0x47')]=undefined;}return _0xb9a8ea({'code':0xc8,'message':_0x5e3f4a});}catch(_0x3bbe3c){logger[_0xc543('0x31')](_0x3bbe3c['stack']);return _0x55d720(_0x54413f[_0xc543('0x31')](0x1f4,_0x3bbe3c));}}logger['error']('message\x20is\x20empty');return _0x55d720(_0x54413f[_0xc543('0x31')](0x1f4,_0xc543('0x45')));});},'AbandonInteraction':function(_0x5bb717){var _0x3cf627=this;return new Promise(function(_0x43ecd5,_0x2760b2){if(_0x5bb717[_0xc543('0x12')]&&_0x5bb717[_0xc543('0x14')]&&_0x5bb717[_0xc543('0x14')]['id']){try{var _0x512e55=getId(_0x5bb717[_0xc543('0x12')],_0x5bb717[_0xc543('0x13')]?_0x5bb717[_0xc543('0x13')]['id']:0x0,_0x5bb717['interaction']?_0x5bb717[_0xc543('0x14')]['id']:0x0);if(_0x805840[_0xc543('0x33')][_0x512e55]){_0x805840['rules'][_0x512e55][_0xc543('0x38')]('end');}return _0x43ecd5({'code':0xc8,'message':_0x5bb717});}catch(_0x4d02d8){logger['error'](_0x4d02d8[_0xc543('0x44')]);return _0x2760b2(_0x3cf627['error'](0x1f4,_0x4d02d8));}}logger[_0xc543('0x31')](_0xc543('0x45'));return _0x2760b2(_0x3cf627[_0xc543('0x31')](0x1f4,_0xc543('0x45')));});},'AgentCapacity':function(_0x5bb489){var _0xfef221=this;return new Promise(function(_0x25f879,_0x4fea3d){if(_0x805840[_0xc543('0x3d')][_0xc543('0x48')](_0x5bb489['id'])){for(var _0x8f0064 in _0x5bb489['capacity']){if(_0x5bb489[_0xc543('0x49')][_0xc543('0x48')](_0x8f0064)){if(_0x805840[_0xc543('0x3d')][_0x5bb489['id']][_0xc543('0x48')](_0x8f0064+_0xc543('0x4a'))){_0x805840[_0xc543('0x3d')][_0x5bb489['id']][_0x8f0064+'CurrentCapacity']=parseInt(_0x5bb489['capacity'][_0x8f0064],0xa);}}}_0x805840[_0xc543('0x3d')][_0x5bb489['id']]['updateRealtime']();return _0x25f879({'code':0xc8,'message':_0x805840[_0xc543('0x3d')][_0x5bb489['id']]});}else{return _0x4fea3d(_0xfef221[_0xc543('0x31')](0x1f4,_0xc543('0x4b')));}});},'Agents':function(_0x2595fa){return new Promise(function(_0x44ee7a,_0x585eec){var _0xf0adb4=_['values'](_0x805840['agents']);_0x44ee7a({'count':_0xf0adb4[_0xc543('0x20')],'rows':_0xf0adb4});});},'ChatQueues':function(_0x18f871){return new Promise(function(_0x234425,_0x50b2ff){var _0x46270b=[];for(var _0x1ef556 in _0x805840[_0xc543('0x4c')]){if(_0x805840[_0xc543('0x4c')][_0xc543('0x48')](_0x1ef556)){var _0x1cbdf6=_0x805840[_0xc543('0x4c')][_0x1ef556];var _0x489cbb={'id':_0x1cbdf6['id'],'available':_0x1cbdf6[_0xc543('0x4d')],'loggedIn':_0x1cbdf6['loggedIn'],'name':_0x1cbdf6[_0xc543('0x4e')],'paused':_0x1cbdf6[_0xc543('0x4f')],'waiting':_0x1cbdf6['waiting']};_0x46270b[_0xc543('0x1e')](_0x489cbb);}}_0x234425({'count':_0x46270b[_0xc543('0x20')],'rows':_0x46270b});});},'MailQueues':function(_0x547ddd){return new Promise(function(_0x417c0b,_0x4746d3){var _0x212a13=[];for(var _0x35b706 in _0x805840['mailQueues']){if(_0x805840['mailQueues']['hasOwnProperty'](_0x35b706)){var _0x112f63=_0x805840[_0xc543('0x50')][_0x35b706];var _0x56f202={'id':_0x112f63['id'],'available':_0x112f63['available'],'loggedIn':_0x112f63[_0xc543('0x51')],'name':_0x112f63[_0xc543('0x4e')],'paused':_0x112f63[_0xc543('0x4f')],'waiting':_0x112f63[_0xc543('0x52')]};_0x212a13[_0xc543('0x1e')](_0x56f202);}}_0x417c0b({'count':_0x212a13['length'],'rows':_0x212a13});});},'OpenchannelQueues':function(_0x3b37fa){return new Promise(function(_0x558161,_0x400b06){var _0x336af8=[];for(var _0x1c5b92 in _0x805840['openchannelQueues']){if(_0x805840[_0xc543('0x53')]['hasOwnProperty'](_0x1c5b92)){var _0x785bf7=_0x805840[_0xc543('0x53')][_0x1c5b92];var _0x3958a5={'id':_0x785bf7['id'],'available':_0x785bf7[_0xc543('0x4d')],'loggedIn':_0x785bf7['loggedIn'],'name':_0x785bf7[_0xc543('0x4e')],'paused':_0x785bf7[_0xc543('0x4f')],'waiting':_0x785bf7['waiting']};_0x336af8[_0xc543('0x1e')](_0x3958a5);}}_0x558161({'count':_0x336af8[_0xc543('0x20')],'rows':_0x336af8});});},'SmsQueues':function(_0x149a94){return new Promise(function(_0x45e9bb,_0x498f96){var _0x575ebe=[];for(var _0x228a8c in _0x805840[_0xc543('0x54')]){if(_0x805840[_0xc543('0x54')]['hasOwnProperty'](_0x228a8c)){var _0x1a0665=_0x805840[_0xc543('0x54')][_0x228a8c];var _0x4797c3={'id':_0x1a0665['id'],'available':_0x1a0665['available'],'loggedIn':_0x1a0665[_0xc543('0x51')],'name':_0x1a0665['name'],'paused':_0x1a0665[_0xc543('0x4f')],'waiting':_0x1a0665['waiting']};_0x575ebe['push'](_0x4797c3);}}_0x45e9bb({'count':_0x575ebe[_0xc543('0x20')],'rows':_0x575ebe});});},'FaxQueues':function(_0x4840f2){return new Promise(function(_0x482966,_0x218b1e){var _0x445b12=[];for(var _0x478777 in _0x805840[_0xc543('0x55')]){if(_0x805840[_0xc543('0x55')][_0xc543('0x48')](_0x478777)){var _0x13156e=_0x805840[_0xc543('0x55')][_0x478777];var _0x7777e9={'id':_0x13156e['id'],'available':_0x13156e[_0xc543('0x4d')],'loggedIn':_0x13156e['loggedIn'],'name':_0x13156e[_0xc543('0x4e')],'paused':_0x13156e[_0xc543('0x4f')],'waiting':_0x13156e['waiting']};_0x445b12[_0xc543('0x1e')](_0x7777e9);}}_0x482966({'count':_0x445b12[_0xc543('0x20')],'rows':_0x445b12});});},'WhatsappQueues':function(_0x2057f1){return new Promise(function(_0x1e44d0,_0x1d7b5f){var _0x207d74=[];for(var _0x252d52 in _0x805840[_0xc543('0x56')]){if(_0x805840[_0xc543('0x56')][_0xc543('0x48')](_0x252d52)){var _0x13fd40=_0x805840[_0xc543('0x56')][_0x252d52];var _0x3a8436={'id':_0x13fd40['id'],'available':_0x13fd40[_0xc543('0x4d')],'loggedIn':_0x13fd40[_0xc543('0x51')],'name':_0x13fd40[_0xc543('0x4e')],'paused':_0x13fd40[_0xc543('0x4f')],'waiting':_0x13fd40['waiting']};_0x207d74[_0xc543('0x1e')](_0x3a8436);}}_0x1e44d0({'count':_0x207d74['length'],'rows':_0x207d74});});},'ChatQueuesWaitingInteractions':function(_0xdeffdf){return new Promise(function(_0x51bbe9,_0x25f2f7){var _0x259c45=_['values'](_0x805840[_0xc543('0x57')]);_0x51bbe9({'count':_0x259c45[_0xc543('0x20')],'rows':_0x259c45});});},'MailQueuesWaitingInteractions':function(_0x8e2966){return new Promise(function(_0x4dd5fb,_0x16fb6e){var _0x209294=_[_0xc543('0x58')](_0x805840[_0xc543('0x59')]);_0x4dd5fb({'count':_0x209294['length'],'rows':_0x209294});});},'OpenchannelQueuesWaitingInteractions':function(_0x5923f1){return new Promise(function(_0x3bfce7,_0x21dbef){var _0x298fdd=_['values'](_0x805840[_0xc543('0x5a')]);_0x3bfce7({'count':_0x298fdd['length'],'rows':_0x298fdd});});},'SmsQueuesWaitingInteractions':function(_0x5727c7){return new Promise(function(_0x3cc9e8,_0x2bdb4c){var _0xb2a0ef=_[_0xc543('0x58')](_0x805840[_0xc543('0x5b')]);_0x3cc9e8({'count':_0xb2a0ef[_0xc543('0x20')],'rows':_0xb2a0ef});});},'FaxQueuesWaitingInteractions':function(_0x2794c4){return new Promise(function(_0x2a58fd,_0x20f76e){var _0x39a028=_['values'](_0x805840[_0xc543('0x5c')]);_0x2a58fd({'count':_0x39a028['length'],'rows':_0x39a028});});},'WhatsappQueuesWaitingInteractions':function(_0x2bd82d){return new Promise(function(_0x2e76ed,_0x4aa526){var _0x27e543=_[_0xc543('0x58')](_0x805840[_0xc543('0x5d')]);_0x2e76ed({'count':_0x27e543['length'],'rows':_0x27e543});});}};var _0x38f580=jayson[_0xc543('0x5e')](_0x50d85b)[_0xc543('0x5f')]();_0x38f580['on']('error',function(_0x2bc256){logger['error'](JSON[_0xc543('0x36')](_0x2bc256));return _0x3ac1d3(_0x2bc256);});_0x38f580['listen'](0x232c,'127.0.0.1',function(){console['log'](_0xc543('0x60'),0x232c);return _0x2636ca(_0xc543('0x61')+0x232c);});});};
\ No newline at end of file
index d599573..b3f5b8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c34=['all','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','bluebird','jayson/promise','lodash','../../../config/logger','client','request','then','error','message','result','catch','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s'];(function(_0x41b6d9,_0x5998e7){var _0xce0a04=function(_0x4454b9){while(--_0x4454b9){_0x41b6d9['push'](_0x41b6d9['shift']());}};_0xce0a04(++_0x5998e7);}(_0x1c34,0x129));var _0x41c3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1c34[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var BPromise=require(_0x41c3('0x0'));var jayson=require(_0x41c3('0x1'));var _=require(_0x41c3('0x2'));var logger=require(_0x41c3('0x3'))('routing');var client=jayson[_0x41c3('0x4')]['http']({'port':0x232a});function request(_0xd9a930,_0x4733b4){return new BPromise(function(_0x501d5c,_0x5b184b){return client[_0x41c3('0x5')](_0xd9a930,_0x4733b4)[_0x41c3('0x6')](function(_0x534f46){if(_0x534f46[_0x41c3('0x7')]){return _0x5b184b(_0x534f46[_0x41c3('0x7')][_0x41c3('0x8')]);}else{return _0x501d5c(_0x534f46[_0x41c3('0x9')]);}})[_0x41c3('0xa')](function(_0x310ee9){return _0x5b184b(_0x310ee9);});});}exports[_0x41c3('0xb')]=function(_0x14fec1,_0x5c08e9,_0x1ae64e){return function(_0x4ab2e2){if(_0x1ae64e[_0x41c3('0xc')]&&!_0x1ae64e[_0x41c3('0xc')][_0x14fec1]){logger['info'](_0x41c3('0xd'),_0x14fec1);return _0x4ab2e2[_0x41c3('0xe')]();}var _0x10b5e1=[];for(var _0x5b9286=0x0;_0x5b9286<_0x5c08e9[_0x41c3('0xf')];_0x5b9286+=0x1){_0x10b5e1['push'](request(_0x41c3('0x10'),{'command':util[_0x41c3('0x11')](_0x41c3('0x12'),_0x5c08e9[_0x5b9286])})['then'](function(_0x5ec892){return _0x5ec892&&_0x5ec892[_0x41c3('0x8')]&&_0x5ec892['message'][_0x41c3('0x13')](_0x41c3('0x14'))>=0x0?!![]:![];})[_0x41c3('0xa')](function(_0x3921be){logger[_0x41c3('0x7')](_0x41c3('0x15'),_0x14fec1,_0x5c08e9[_0x5b9286]);}));}BPromise[_0x41c3('0x16')](_0x10b5e1)[_0x41c3('0x6')](function(_0x2175b7){var _0x3a443e=_['some'](_0x2175b7);logger['info'](_0x41c3('0x17'),_0x14fec1,_0x5c08e9[_0x41c3('0x18')](_0x41c3('0x19')),_0x3a443e);_0x4ab2e2[_0x41c3('0x1a')](_0x3a443e);})[_0x41c3('0xa')](function(_0x58b819){console[_0x41c3('0x1b')](_0x58b819);logger[_0x41c3('0x7')]('[%s][INTERVAL]\x20%s\x20%s',_0x14fec1,_0x5c08e9[_0x41c3('0x18')]('\x20|\x20'),_0x58b819[_0x41c3('0x1c')]);_0x4ab2e2[_0x41c3('0xe')]();});};};
\ No newline at end of file
+var _0x8f1d=['join','stack','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','result','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','indexOf','true','all','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when','catch','log'];(function(_0x121d99,_0x5bbec1){var _0x4a218f=function(_0x888eba){while(--_0x888eba){_0x121d99['push'](_0x121d99['shift']());}};_0x4a218f(++_0x5bbec1);}(_0x8f1d,0xdb));var _0xd8f1=function(_0x5bf18d,_0x264c55){_0x5bf18d=_0x5bf18d-0x0;var _0x1d6cc0=_0x8f1d[_0x5bf18d];return _0x1d6cc0;};'use strict';var util=require('util');var BPromise=require(_0xd8f1('0x0'));var jayson=require(_0xd8f1('0x1'));var _=require(_0xd8f1('0x2'));var logger=require(_0xd8f1('0x3'))(_0xd8f1('0x4'));var client=jayson[_0xd8f1('0x5')][_0xd8f1('0x6')]({'port':0x232a});function request(_0x16c468,_0x57c45e){return new BPromise(function(_0x190f3f,_0x188dd8){return client[_0xd8f1('0x7')](_0x16c468,_0x57c45e)[_0xd8f1('0x8')](function(_0x405085){if(_0x405085[_0xd8f1('0x9')]){return _0x188dd8(_0x405085[_0xd8f1('0x9')][_0xd8f1('0xa')]);}else{return _0x190f3f(_0x405085[_0xd8f1('0xb')]);}})['catch'](function(_0xf49054){return _0x188dd8(_0xf49054);});});}exports[_0xd8f1('0xc')]=function(_0xf1a90a,_0x4c522a,_0x3113f6){return function(_0x20120d){if(_0x3113f6[_0xd8f1('0xd')]&&!_0x3113f6['rules'][_0xf1a90a]){logger[_0xd8f1('0xe')](_0xd8f1('0xf'),_0xf1a90a);return _0x20120d[_0xd8f1('0x10')]();}var _0x45c9f1=[];for(var _0x3bdeb2=0x0;_0x3bdeb2<_0x4c522a[_0xd8f1('0x11')];_0x3bdeb2+=0x1){_0x45c9f1[_0xd8f1('0x12')](request(_0xd8f1('0x13'),{'command':util[_0xd8f1('0x14')]('iftime\x20%s',_0x4c522a[_0x3bdeb2])})[_0xd8f1('0x8')](function(_0x2e30e4){return _0x2e30e4&&_0x2e30e4[_0xd8f1('0xa')]&&_0x2e30e4[_0xd8f1('0xa')][_0xd8f1('0x15')](_0xd8f1('0x16'))>=0x0?!![]:![];})['catch'](function(_0x292363){logger['error']('[%s][INTERVAL]\x20%s',_0xf1a90a,_0x4c522a[_0x3bdeb2]);}));}BPromise[_0xd8f1('0x17')](_0x45c9f1)[_0xd8f1('0x8')](function(_0x175f52){var _0x3bc7dd=_['some'](_0x175f52);logger[_0xd8f1('0xe')](_0xd8f1('0x18'),_0xf1a90a,_0x4c522a['join'](_0xd8f1('0x19')),_0x3bc7dd);_0x20120d[_0xd8f1('0x1a')](_0x3bc7dd);})[_0xd8f1('0x1b')](function(_0x356097){console[_0xd8f1('0x1c')](_0x356097);logger['error'](_0xd8f1('0x18'),_0xf1a90a,_0x4c522a[_0xd8f1('0x1d')](_0xd8f1('0x19')),_0x356097[_0xd8f1('0x1e')]);_0x20120d['stop']();});};};
\ No newline at end of file
index 28e6f76..e2268f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9d=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','diffTime','agent','lodash','util','./utils','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','getVoiceQueueByName','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','debug','format','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','lastevent','called','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','timeout','reason','ringtime','push','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','forIn','talktime','answered_elsewhere','answeredelsewheremembername','isNil','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','ATTENDED','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected'];(function(_0x4565a8,_0x9157d5){var _0x4f862e=function(_0x4159c3){while(--_0x4159c3){_0x4565a8['push'](_0x4565a8['shift']());}};_0x4f862e(++_0x9157d5);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x14707c,_0x4b9e57){_0x14707c=_0x14707c-0x0;var _0x269f18=_0xbc9d[_0x14707c];return _0x269f18;};'use strict';var _=require(_0xdbc9('0x0'));var util=require(_0xdbc9('0x1'));var utils=require(_0xdbc9('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x434f6e,_0x35f89c){utils['info'](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x434f6e[_0xdbc9('0x3')],_0x434f6e[_0xdbc9('0x4')],_0x434f6e[_0xdbc9('0x5')],_0x434f6e[_0xdbc9('0x6')],_0x434f6e[_0xdbc9('0x7')],_0x434f6e[_0xdbc9('0x8')],_0x434f6e[_0xdbc9('0x9')],_0x434f6e['lastevent']));if(_0x434f6e[_0xdbc9('0x5')]){utils[_0xdbc9('0xa')](_0x434f6e[_0xdbc9('0x5')])['then'](function(_0x2c7ba5){if(_0x2c7ba5){_0x434f6e['type']=_0x2c7ba5['type'];_0x434f6e[_0xdbc9('0xb')]=_0x434f6e[_0xdbc9('0xc')]?_0x2c7ba5[_0xdbc9('0xd')]:![];_0x434f6e[_0xdbc9('0xe')]=_0x434f6e['agentacw']?_0x2c7ba5[_0xdbc9('0xf')]:0x0;}utils[_0xdbc9('0x10')](_0xdbc9('0x11'),_0x434f6e);});}else{utils[_0xdbc9('0x10')](_0xdbc9('0x11'),_0x434f6e);}if(_0x35f89c){delete transfers[_0x434f6e[_0xdbc9('0x3')]];}else{delete agents[_0x434f6e['destuniqueid']];}}exports['agentcalled']=function(_0x3d0fdd){try{utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x14'),_0x3d0fdd[_0xdbc9('0x3')]),_0x3d0fdd);agents[_0x3d0fdd['destuniqueid']]=_0x3d0fdd;agents[_0x3d0fdd[_0xdbc9('0x15')]][_0xdbc9('0x16')]=utils[_0xdbc9('0x17')]();agents[_0x3d0fdd['destuniqueid']][_0xdbc9('0x18')]=_0xdbc9('0x19');agents[_0x3d0fdd['destuniqueid']][_0xdbc9('0x9')]=null;agents[_0x3d0fdd[_0xdbc9('0x15')]][_0xdbc9('0x1a')]=null;utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x1c'),_0x3d0fdd[_0xdbc9('0x3')],agents[_0x3d0fdd[_0xdbc9('0x15')]][_0xdbc9('0x6')],_0x3d0fdd[_0xdbc9('0x15')]));}catch(_0x57a546){utils[_0xdbc9('0x1d')](util['format'](_0xdbc9('0x14'),_0x3d0fdd[_0xdbc9('0x3')]),_0x57a546);}};exports['agentringnoanswer']=function(_0x4408e9){try{if(!_['isNil'](agents[_0x4408e9['destuniqueid']])){utils['debug'](util['format'](_0xdbc9('0x1e'),_0x4408e9[_0xdbc9('0x3')]),_0x4408e9);utils['info'](util[_0xdbc9('0x13')](_0xdbc9('0x1f'),_0x4408e9['uniqueid'],agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x6')],_0x4408e9[_0xdbc9('0x15')]));agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x20')]=!![];agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x21')]=utils[_0xdbc9('0x17')]();agents[_0x4408e9[_0xdbc9('0x15')]]['lastevent']=_0xdbc9('0x22');agents[_0x4408e9[_0xdbc9('0x15')]][_0xdbc9('0x23')]=_0xdbc9('0x22');agents[_0x4408e9[_0xdbc9('0x15')]]['holdtime']=_0x4408e9[_0xdbc9('0x24')]?parseInt(_0x4408e9[_0xdbc9('0x24')])/0x3e8:0x0;agents[_0x4408e9['destuniqueid']]['talktime']=0x0;unanswered[_0xdbc9('0x25')](_0x4408e9[_0xdbc9('0x15')]);}}catch(_0x473430){utils['error'](util[_0xdbc9('0x13')]('[%s][agents][agentringnoanswer]',_0x4408e9['uniqueid']),_0x473430);}};exports[_0xdbc9('0x26')]=function(_0x49da36){try{_['forIn'](agents,function(_0x417b17,_0x20eb4f){if(_0x417b17[_0xdbc9('0x3')]==_0x49da36['uniqueid']&&!_[_0xdbc9('0x27')](unanswered,_0x417b17[_0xdbc9('0x15')])){utils['debug'](util['format'](_0xdbc9('0x28'),_0x49da36[_0xdbc9('0x3')]),_0x49da36);utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x29'),_0x49da36[_0xdbc9('0x3')],_0x417b17[_0xdbc9('0x6')],_0x417b17['destuniqueid']));_0x417b17[_0xdbc9('0x20')]=!![];_0x417b17[_0xdbc9('0x21')]=utils[_0xdbc9('0x17')]();_0x417b17[_0xdbc9('0x18')]=_0xdbc9('0x2a');_0x417b17[_0xdbc9('0x23')]='abandoned';_0x417b17[_0xdbc9('0x2b')]=_0x49da36['holdtime'];_0x417b17['talktime']=0x0;writeDB(_0x417b17);}});}catch(_0x495c0e){utils['error'](util['format'](_0xdbc9('0x28'),_0x49da36[_0xdbc9('0x3')]),_0x495c0e);}};exports[_0xdbc9('0x2c')]=function(_0x5527fc){try{if(agents[_0x5527fc[_0xdbc9('0x15')]]){utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x2d'),_0x5527fc[_0xdbc9('0x3')]),_0x5527fc);utils[_0xdbc9('0x1b')](util['format'](_0xdbc9('0x2e'),_0x5527fc[_0xdbc9('0x3')],agents[_0x5527fc[_0xdbc9('0x15')]]['membername'],_0x5527fc[_0xdbc9('0x15')]));agents[_0x5527fc[_0xdbc9('0x15')]][_0xdbc9('0x2f')]=utils[_0xdbc9('0x17')]();agents[_0x5527fc['destuniqueid']]['connectedlinenum']=_0x5527fc[_0xdbc9('0x9')];agents[_0x5527fc[_0xdbc9('0x15')]][_0xdbc9('0x1a')]=_0x5527fc[_0xdbc9('0x1a')];agents[_0x5527fc['destuniqueid']][_0xdbc9('0x2b')]=_0x5527fc[_0xdbc9('0x24')];agents[_0x5527fc[_0xdbc9('0x15')]]['lastevent']=_0xdbc9('0x30');_[_0xdbc9('0x31')](agents,function(_0x444219,_0x523c79){if(_0x444219[_0xdbc9('0x15')]!=_0x5527fc[_0xdbc9('0x15')]&&_0x444219['uniqueid']==_0x5527fc['uniqueid']){_0x444219[_0xdbc9('0x32')]=0x0;_0x444219[_0xdbc9('0x2b')]=_0x5527fc[_0xdbc9('0x24')];_0x444219[_0xdbc9('0x20')]=!![];_0x444219['agentringnoanswerAt']=utils[_0xdbc9('0x17')]();_0x444219[_0xdbc9('0x18')]='answered_elsewhere';_0x444219[_0xdbc9('0x23')]=_0xdbc9('0x33');_0x444219['answeredelsewheredestinationuniqueid']=_0x5527fc[_0xdbc9('0x15')];_0x444219[_0xdbc9('0x34')]=_0x5527fc[_0xdbc9('0x6')];writeDB(_0x444219);}});}}catch(_0x3415c3){utils[_0xdbc9('0x1d')](util[_0xdbc9('0x13')](_0xdbc9('0x2d'),_0x5527fc['uniqueid']),_0x3415c3);}};exports['agentcomplete']=function(_0x768856){try{if(!_[_0xdbc9('0x35')](agents[_0x768856[_0xdbc9('0x15')]])){utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x36'),_0x768856[_0xdbc9('0x3')]),_0x768856);utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x37'),_0x768856[_0xdbc9('0x3')],agents[_0x768856['destuniqueid']]['membername'],_0x768856[_0xdbc9('0x15')]));agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0xc')]=!![];agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x38')]=utils[_0xdbc9('0x17')]();agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x32')]=utils['diffTime'](agents[_0x768856['destuniqueid']][_0xdbc9('0x38')],agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x2f')]);agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x23')]=_0x768856[_0xdbc9('0x23')];agents[_0x768856[_0xdbc9('0x15')]][_0xdbc9('0x18')]=_0xdbc9('0x39');writeDB(agents[_0x768856['destuniqueid']]);}}catch(_0x2c24a9){utils[_0xdbc9('0x1d')](util['format']('[%s][agents][agentcomplete]',_0x768856[_0xdbc9('0x3')]),_0x2c24a9);}};exports[_0xdbc9('0x3a')]=function(_0x133a13){try{if(!_['isNil'](agents[_0x133a13[_0xdbc9('0x3b')]])){utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x3c'),_0x133a13['uniqueid']),_0x133a13);utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')](_0xdbc9('0x3d'),_0x133a13[_0xdbc9('0x3')],agents[_0x133a13['transfereruniqueid']][_0xdbc9('0x6')],agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x3')]));agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x3e')]=!![];agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x3f')]=_0xdbc9('0x40');agents[_0x133a13['transfereruniqueid']][_0xdbc9('0x41')]=_0x133a13['extension'];agents[_0x133a13[_0xdbc9('0x3b')]][_0xdbc9('0x42')]=agents[_0x133a13['transfereruniqueid']]['uniqueid'];}}catch(_0xc7335d){utils['error'](util[_0xdbc9('0x13')](_0xdbc9('0x3c'),_0x133a13[_0xdbc9('0x3')]),_0xc7335d);}};exports['attendedtransfer']=function(_0x32b38d){try{utils[_0xdbc9('0x12')](util[_0xdbc9('0x13')](_0xdbc9('0x43'),_0x32b38d[_0xdbc9('0x44')]),_0x32b38d);if(_0x32b38d[_0xdbc9('0x44')]==_0x32b38d[_0xdbc9('0x45')]){if(!_[_0xdbc9('0x35')](agents[_0x32b38d['secondtransfereruniqueid']])){utils['info'](util['format'](_0xdbc9('0x46'),_0x32b38d[_0xdbc9('0x44')],agents[_0x32b38d[_0xdbc9('0x47')]]['membername']));agents[_0x32b38d['secondtransfereruniqueid']][_0xdbc9('0x3e')]=!![];agents[_0x32b38d[_0xdbc9('0x47')]]['transfertype']='ATTENDED';agents[_0x32b38d[_0xdbc9('0x47')]][_0xdbc9('0x41')]=_0x32b38d[_0xdbc9('0x48')];agents[_0x32b38d[_0xdbc9('0x47')]][_0xdbc9('0x42')]=_0x32b38d[_0xdbc9('0x44')];}if(_0x32b38d['transfereeuniqueid']&&agents[_0x32b38d[_0xdbc9('0x49')]]){agents[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x4a')]=0x1;transfers[_0x32b38d['transfereeuniqueid']]=_[_0xdbc9('0x4b')](agents[_0x32b38d[_0xdbc9('0x49')]]);transfers[_0x32b38d[_0xdbc9('0x49')]]['calleridnum']=agents[_0x32b38d[_0xdbc9('0x47')]]['calleridnum'];transfers[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x4c')]=agents[_0x32b38d[_0xdbc9('0x47')]][_0xdbc9('0x4c')];transfers[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x16')]=utils['now']();transfers[_0x32b38d[_0xdbc9('0x49')]]['agentconnectAt']=utils[_0xdbc9('0x17')]();transfers[_0x32b38d[_0xdbc9('0x49')]]['holdtime']=0x0;transfers[_0x32b38d[_0xdbc9('0x49')]][_0xdbc9('0x4a')]=0x2;}}else if(_0x32b38d['secondtransfereruniqueid']==_0x32b38d['secondtransfererlinkedid']){if(!_[_0xdbc9('0x35')](agents[_0x32b38d[_0xdbc9('0x44')]])){utils[_0xdbc9('0x1b')](util['format'](_0xdbc9('0x46'),_0x32b38d[_0xdbc9('0x44')],agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x6')]));agents[_0x32b38d[_0xdbc9('0x44')]]['transfer']=!![];agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x3f')]=_0xdbc9('0x4d');agents[_0x32b38d[_0xdbc9('0x44')]][_0xdbc9('0x41')]=_0x32b38d[_0xdbc9('0x4e')];agents[_0x32b38d[_0xdbc9('0x44')]][_0xdbc9('0x42')]=_0x32b38d[_0xdbc9('0x47')];}if(_0x32b38d['transfertargetuniqueid']&&agents[_0x32b38d[_0xdbc9('0x4f')]]){agents[_0x32b38d[_0xdbc9('0x4f')]][_0xdbc9('0x4a')]=0x1;transfers[_0x32b38d[_0xdbc9('0x4f')]]=_[_0xdbc9('0x4b')](agents[_0x32b38d[_0xdbc9('0x4f')]]);transfers[_0x32b38d[_0xdbc9('0x4f')]][_0xdbc9('0x8')]=agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x8')];transfers[_0x32b38d['transfertargetuniqueid']][_0xdbc9('0x4c')]=agents[_0x32b38d['origtransfereruniqueid']][_0xdbc9('0x4c')];transfers[_0x32b38d[_0xdbc9('0x4f')]]['agentcalledAt']=utils['now']();transfers[_0x32b38d['transfertargetuniqueid']][_0xdbc9('0x2f')]=utils[_0xdbc9('0x17')]();transfers[_0x32b38d[_0xdbc9('0x4f')]]['holdtime']=0x0;transfers[_0x32b38d[_0xdbc9('0x4f')]][_0xdbc9('0x4a')]=0x2;}}}catch(_0x53843c){utils[_0xdbc9('0x1d')](util[_0xdbc9('0x13')](_0xdbc9('0x43'),_0x32b38d[_0xdbc9('0x44')]),_0x53843c);}};exports[_0xdbc9('0x50')]=function(_0xfdfb20){try{utils['debug'](util[_0xdbc9('0x13')](_0xdbc9('0x51'),_0xfdfb20['uniqueid']),_0xfdfb20);if(agents[_0xfdfb20['uniqueid']]&&agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')]===_0xdbc9('0x22')){if(_0xfdfb20[_0xdbc9('0x52')]==='21'){agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')]=_0xdbc9('0x53');agents[_0xfdfb20['uniqueid']][_0xdbc9('0x18')]=_0xdbc9('0x53');}utils[_0xdbc9('0x1b')](util['format'](_0xdbc9('0x54'),_0xfdfb20[_0xdbc9('0x3')],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x6')],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]));writeDB(agents[_0xfdfb20[_0xdbc9('0x3')]]);var _0x1afbcd=unanswered[_0xdbc9('0x55')](_0xfdfb20[_0xdbc9('0x3')]);if(_0x1afbcd>-0x1){unanswered['splice'](_0x1afbcd,0x1);}}if(transfers[_0xfdfb20['uniqueid']]){transfers[_0xfdfb20[_0xdbc9('0x3')]]['agentcomplete']=!![];transfers[_0xfdfb20['uniqueid']][_0xdbc9('0x38')]=utils[_0xdbc9('0x17')]();transfers[_0xfdfb20[_0xdbc9('0x3')]]['talktime']=utils[_0xdbc9('0x56')](transfers[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x38')],transfers[_0xfdfb20['uniqueid']][_0xdbc9('0x2f')]);transfers[_0xfdfb20[_0xdbc9('0x3')]]['reason']=_0xdbc9('0x57');transfers[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]=_0xdbc9('0x39');utils[_0xdbc9('0x1b')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xfdfb20[_0xdbc9('0x3')],transfers[_0xfdfb20[_0xdbc9('0x3')]]['membername'],transfers[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x23')],transfers[_0xfdfb20[_0xdbc9('0x3')]]['lastevent']));writeDB(transfers[_0xfdfb20[_0xdbc9('0x3')]],!![]);}if(agents[_0xfdfb20[_0xdbc9('0x3')]]&&agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x2f')]){agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0xc')]=!![];agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x38')]=utils['now']();agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x32')]=utils[_0xdbc9('0x56')](agents[_0xfdfb20[_0xdbc9('0x3')]]['agentcompleteAt'],agents[_0xfdfb20[_0xdbc9('0x3')]]['agentconnectAt']);agents[_0xfdfb20['uniqueid']][_0xdbc9('0x23')]=agents[_0xfdfb20[_0xdbc9('0x3')]]['transfer']?_0xdbc9('0x3e'):_0xdbc9('0x57');agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]=_0xdbc9('0x39');utils[_0xdbc9('0x1b')](util[_0xdbc9('0x13')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xfdfb20['uniqueid'],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x6')],agents[_0xfdfb20[_0xdbc9('0x3')]]['reason'],agents[_0xfdfb20[_0xdbc9('0x3')]][_0xdbc9('0x18')]));writeDB(agents[_0xfdfb20[_0xdbc9('0x3')]]);}}catch(_0x1839e4){utils[_0xdbc9('0x1d')](util[_0xdbc9('0x13')](_0xdbc9('0x51'),_0xfdfb20[_0xdbc9('0x3')]),_0x1839e4);}};
\ No newline at end of file
+var _0x9c00=['acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','format','[%s][agents][agentcalled]','agentcalledAt','now','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfererlinkedid','secondtransfereruniqueid','origtransfereruniqueid','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','calleridnum','calleridname','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agent','[%s][agents][hangup]','lodash','util','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','connectedlinenum','lastevent','getVoiceQueueByName','type','agentacw','agentcomplete'];(function(_0x2183ca,_0x3778a9){var _0x21d00e=function(_0x2fb048){while(--_0x2fb048){_0x2183ca['push'](_0x2183ca['shift']());}};_0x21d00e(++_0x3778a9);}(_0x9c00,0x1a0));var _0x09c0=function(_0x5a14d2,_0x22b89a){_0x5a14d2=_0x5a14d2-0x0;var _0xb08187=_0x9c00[_0x5a14d2];return _0xb08187;};'use strict';var _=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x5e32e7,_0xe0d293){utils[_0x09c0('0x2')](util['format'](_0x09c0('0x3'),_0x5e32e7[_0x09c0('0x4')],_0x5e32e7[_0x09c0('0x5')],_0x5e32e7[_0x09c0('0x6')],_0x5e32e7[_0x09c0('0x7')],_0x5e32e7['interface'],_0x5e32e7['calleridnum'],_0x5e32e7[_0x09c0('0x8')],_0x5e32e7[_0x09c0('0x9')]));if(_0x5e32e7[_0x09c0('0x6')]){utils[_0x09c0('0xa')](_0x5e32e7[_0x09c0('0x6')])['then'](function(_0x6558ca){if(_0x6558ca){_0x5e32e7[_0x09c0('0xb')]=_0x6558ca[_0x09c0('0xb')];_0x5e32e7[_0x09c0('0xc')]=_0x5e32e7[_0x09c0('0xd')]?_0x6558ca[_0x09c0('0xe')]:![];_0x5e32e7[_0x09c0('0xf')]=_0x5e32e7[_0x09c0('0xc')]?_0x6558ca[_0x09c0('0x10')]:0x0;}utils[_0x09c0('0x11')](_0x09c0('0x12'),_0x5e32e7);});}else{utils[_0x09c0('0x11')](_0x09c0('0x12'),_0x5e32e7);}if(_0xe0d293){delete transfers[_0x5e32e7[_0x09c0('0x4')]];}else{delete agents[_0x5e32e7[_0x09c0('0x13')]];}}exports[_0x09c0('0x14')]=function(_0x6149a8){try{utils[_0x09c0('0x15')](util[_0x09c0('0x16')](_0x09c0('0x17'),_0x6149a8[_0x09c0('0x4')]),_0x6149a8);agents[_0x6149a8[_0x09c0('0x13')]]=_0x6149a8;agents[_0x6149a8[_0x09c0('0x13')]][_0x09c0('0x18')]=utils[_0x09c0('0x19')]();agents[_0x6149a8[_0x09c0('0x13')]]['lastevent']='called';agents[_0x6149a8['destuniqueid']][_0x09c0('0x8')]=null;agents[_0x6149a8[_0x09c0('0x13')]][_0x09c0('0x1a')]=null;utils[_0x09c0('0x2')](util['format'](_0x09c0('0x1b'),_0x6149a8['uniqueid'],agents[_0x6149a8['destuniqueid']][_0x09c0('0x7')],_0x6149a8['destuniqueid']));}catch(_0x2cda5e){utils[_0x09c0('0x1c')](util[_0x09c0('0x16')]('[%s][agents][agentcalled]',_0x6149a8[_0x09c0('0x4')]),_0x2cda5e);}};exports[_0x09c0('0x1d')]=function(_0x8ad645){try{if(!_[_0x09c0('0x1e')](agents[_0x8ad645[_0x09c0('0x13')]])){utils[_0x09c0('0x15')](util[_0x09c0('0x16')]('[%s][agents][agentringnoanswer]',_0x8ad645[_0x09c0('0x4')]),_0x8ad645);utils[_0x09c0('0x2')](util[_0x09c0('0x16')](_0x09c0('0x1f'),_0x8ad645['uniqueid'],agents[_0x8ad645['destuniqueid']][_0x09c0('0x7')],_0x8ad645[_0x09c0('0x13')]));agents[_0x8ad645[_0x09c0('0x13')]][_0x09c0('0x1d')]=!![];agents[_0x8ad645['destuniqueid']][_0x09c0('0x20')]=utils[_0x09c0('0x19')]();agents[_0x8ad645['destuniqueid']][_0x09c0('0x9')]=_0x09c0('0x21');agents[_0x8ad645[_0x09c0('0x13')]][_0x09c0('0x22')]=_0x09c0('0x21');agents[_0x8ad645[_0x09c0('0x13')]][_0x09c0('0x23')]=_0x8ad645[_0x09c0('0x24')]?parseInt(_0x8ad645[_0x09c0('0x24')])/0x3e8:0x0;agents[_0x8ad645[_0x09c0('0x13')]][_0x09c0('0x25')]=0x0;unanswered['push'](_0x8ad645[_0x09c0('0x13')]);}}catch(_0x1bdde9){utils['error'](util[_0x09c0('0x16')]('[%s][agents][agentringnoanswer]',_0x8ad645[_0x09c0('0x4')]),_0x1bdde9);}};exports['queuecallerabandon']=function(_0x3ac8e4){try{_[_0x09c0('0x26')](agents,function(_0x108409,_0x4159bc){if(_0x108409['uniqueid']==_0x3ac8e4['uniqueid']&&!_[_0x09c0('0x27')](unanswered,_0x108409[_0x09c0('0x13')])){utils[_0x09c0('0x15')](util['format'](_0x09c0('0x28'),_0x3ac8e4['uniqueid']),_0x3ac8e4);utils[_0x09c0('0x2')](util[_0x09c0('0x16')](_0x09c0('0x29'),_0x3ac8e4['uniqueid'],_0x108409[_0x09c0('0x7')],_0x108409[_0x09c0('0x13')]));_0x108409[_0x09c0('0x1d')]=!![];_0x108409[_0x09c0('0x20')]=utils[_0x09c0('0x19')]();_0x108409[_0x09c0('0x9')]=_0x09c0('0x2a');_0x108409['reason']=_0x09c0('0x2a');_0x108409[_0x09c0('0x23')]=_0x3ac8e4[_0x09c0('0x23')];_0x108409[_0x09c0('0x25')]=0x0;writeDB(_0x108409);}});}catch(_0x2c1ad3){utils['error'](util[_0x09c0('0x16')](_0x09c0('0x28'),_0x3ac8e4[_0x09c0('0x4')]),_0x2c1ad3);}};exports[_0x09c0('0x2b')]=function(_0x353454){try{if(agents[_0x353454['destuniqueid']]){utils[_0x09c0('0x15')](util[_0x09c0('0x16')](_0x09c0('0x2c'),_0x353454[_0x09c0('0x4')]),_0x353454);utils[_0x09c0('0x2')](util[_0x09c0('0x16')](_0x09c0('0x2d'),_0x353454['uniqueid'],agents[_0x353454[_0x09c0('0x13')]][_0x09c0('0x7')],_0x353454[_0x09c0('0x13')]));agents[_0x353454[_0x09c0('0x13')]][_0x09c0('0x2e')]=utils['now']();agents[_0x353454['destuniqueid']]['connectedlinenum']=_0x353454['connectedlinenum'];agents[_0x353454[_0x09c0('0x13')]][_0x09c0('0x1a')]=_0x353454[_0x09c0('0x1a')];agents[_0x353454[_0x09c0('0x13')]][_0x09c0('0x23')]=_0x353454['ringtime'];agents[_0x353454[_0x09c0('0x13')]][_0x09c0('0x9')]='connect';_[_0x09c0('0x26')](agents,function(_0x5d50b9,_0x3ee063){if(_0x5d50b9['destuniqueid']!=_0x353454[_0x09c0('0x13')]&&_0x5d50b9[_0x09c0('0x4')]==_0x353454['uniqueid']){_0x5d50b9[_0x09c0('0x25')]=0x0;_0x5d50b9[_0x09c0('0x23')]=_0x353454['ringtime'];_0x5d50b9[_0x09c0('0x1d')]=!![];_0x5d50b9[_0x09c0('0x20')]=utils[_0x09c0('0x19')]();_0x5d50b9[_0x09c0('0x9')]=_0x09c0('0x2f');_0x5d50b9[_0x09c0('0x22')]='answered_elsewhere';_0x5d50b9[_0x09c0('0x30')]=_0x353454[_0x09c0('0x13')];_0x5d50b9[_0x09c0('0x31')]=_0x353454['membername'];writeDB(_0x5d50b9);}});}}catch(_0x193ed2){utils[_0x09c0('0x1c')](util[_0x09c0('0x16')]('[%s][agents][agentconnect]',_0x353454[_0x09c0('0x4')]),_0x193ed2);}};exports[_0x09c0('0xd')]=function(_0x52cd5c){try{if(!_['isNil'](agents[_0x52cd5c[_0x09c0('0x13')]])){utils[_0x09c0('0x15')](util['format'](_0x09c0('0x32'),_0x52cd5c[_0x09c0('0x4')]),_0x52cd5c);utils['info'](util[_0x09c0('0x16')](_0x09c0('0x33'),_0x52cd5c[_0x09c0('0x4')],agents[_0x52cd5c[_0x09c0('0x13')]][_0x09c0('0x7')],_0x52cd5c['destuniqueid']));agents[_0x52cd5c[_0x09c0('0x13')]]['agentcomplete']=!![];agents[_0x52cd5c['destuniqueid']][_0x09c0('0x34')]=utils[_0x09c0('0x19')]();agents[_0x52cd5c[_0x09c0('0x13')]][_0x09c0('0x25')]=utils[_0x09c0('0x35')](agents[_0x52cd5c[_0x09c0('0x13')]]['agentcompleteAt'],agents[_0x52cd5c['destuniqueid']]['agentconnectAt']);agents[_0x52cd5c[_0x09c0('0x13')]][_0x09c0('0x22')]=_0x52cd5c[_0x09c0('0x22')];agents[_0x52cd5c['destuniqueid']][_0x09c0('0x9')]=_0x09c0('0x36');writeDB(agents[_0x52cd5c[_0x09c0('0x13')]]);}}catch(_0x198517){utils[_0x09c0('0x1c')](util[_0x09c0('0x16')](_0x09c0('0x32'),_0x52cd5c[_0x09c0('0x4')]),_0x198517);}};exports[_0x09c0('0x37')]=function(_0x38085c){try{if(!_[_0x09c0('0x1e')](agents[_0x38085c[_0x09c0('0x38')]])){utils[_0x09c0('0x15')](util[_0x09c0('0x16')](_0x09c0('0x39'),_0x38085c[_0x09c0('0x4')]),_0x38085c);utils[_0x09c0('0x2')](util[_0x09c0('0x16')](_0x09c0('0x3a'),_0x38085c[_0x09c0('0x4')],agents[_0x38085c['transfereruniqueid']][_0x09c0('0x7')],agents[_0x38085c[_0x09c0('0x38')]][_0x09c0('0x4')]));agents[_0x38085c[_0x09c0('0x38')]][_0x09c0('0x3b')]=!![];agents[_0x38085c['transfereruniqueid']][_0x09c0('0x3c')]=_0x09c0('0x3d');agents[_0x38085c[_0x09c0('0x38')]]['transferexten']=_0x38085c[_0x09c0('0x3e')];agents[_0x38085c[_0x09c0('0x38')]][_0x09c0('0x3f')]=agents[_0x38085c[_0x09c0('0x38')]][_0x09c0('0x4')];}}catch(_0xebfd6d){utils[_0x09c0('0x1c')](util['format'](_0x09c0('0x39'),_0x38085c[_0x09c0('0x4')]),_0xebfd6d);}};exports[_0x09c0('0x40')]=function(_0x428f9a){try{utils[_0x09c0('0x15')](util[_0x09c0('0x16')](_0x09c0('0x41'),_0x428f9a['origtransfereruniqueid']),_0x428f9a);if(_0x428f9a['origtransfereruniqueid']==_0x428f9a[_0x09c0('0x42')]){if(!_[_0x09c0('0x1e')](agents[_0x428f9a[_0x09c0('0x43')]])){utils['info'](util[_0x09c0('0x16')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x428f9a[_0x09c0('0x44')],agents[_0x428f9a[_0x09c0('0x43')]][_0x09c0('0x7')]));agents[_0x428f9a[_0x09c0('0x43')]][_0x09c0('0x3b')]=!![];agents[_0x428f9a[_0x09c0('0x43')]][_0x09c0('0x3c')]='ATTENDED';agents[_0x428f9a[_0x09c0('0x43')]][_0x09c0('0x45')]=_0x428f9a[_0x09c0('0x46')];agents[_0x428f9a[_0x09c0('0x43')]][_0x09c0('0x3f')]=_0x428f9a[_0x09c0('0x44')];}if(_0x428f9a[_0x09c0('0x47')]&&agents[_0x428f9a[_0x09c0('0x47')]]){agents[_0x428f9a[_0x09c0('0x47')]][_0x09c0('0x48')]=0x1;transfers[_0x428f9a[_0x09c0('0x47')]]=_['clone'](agents[_0x428f9a[_0x09c0('0x47')]]);transfers[_0x428f9a[_0x09c0('0x47')]][_0x09c0('0x49')]=agents[_0x428f9a[_0x09c0('0x43')]]['calleridnum'];transfers[_0x428f9a[_0x09c0('0x47')]]['calleridname']=agents[_0x428f9a[_0x09c0('0x43')]][_0x09c0('0x4a')];transfers[_0x428f9a[_0x09c0('0x47')]]['agentcalledAt']=utils['now']();transfers[_0x428f9a[_0x09c0('0x47')]][_0x09c0('0x2e')]=utils[_0x09c0('0x19')]();transfers[_0x428f9a[_0x09c0('0x47')]]['holdtime']=0x0;transfers[_0x428f9a[_0x09c0('0x47')]][_0x09c0('0x48')]=0x2;}}else if(_0x428f9a['secondtransfereruniqueid']==_0x428f9a[_0x09c0('0x4b')]){if(!_[_0x09c0('0x1e')](agents[_0x428f9a[_0x09c0('0x44')]])){utils[_0x09c0('0x2')](util['format'](_0x09c0('0x4c'),_0x428f9a[_0x09c0('0x44')],agents[_0x428f9a[_0x09c0('0x44')]][_0x09c0('0x7')]));agents[_0x428f9a[_0x09c0('0x44')]][_0x09c0('0x3b')]=!![];agents[_0x428f9a[_0x09c0('0x44')]][_0x09c0('0x3c')]=_0x09c0('0x4d');agents[_0x428f9a[_0x09c0('0x44')]][_0x09c0('0x45')]=_0x428f9a[_0x09c0('0x4e')];agents[_0x428f9a[_0x09c0('0x44')]]['transferuniqueid']=_0x428f9a[_0x09c0('0x43')];}if(_0x428f9a[_0x09c0('0x4f')]&&agents[_0x428f9a[_0x09c0('0x4f')]]){agents[_0x428f9a[_0x09c0('0x4f')]][_0x09c0('0x48')]=0x1;transfers[_0x428f9a['transfertargetuniqueid']]=_[_0x09c0('0x50')](agents[_0x428f9a[_0x09c0('0x4f')]]);transfers[_0x428f9a[_0x09c0('0x4f')]][_0x09c0('0x49')]=agents[_0x428f9a['origtransfereruniqueid']][_0x09c0('0x49')];transfers[_0x428f9a[_0x09c0('0x4f')]]['calleridname']=agents[_0x428f9a[_0x09c0('0x44')]][_0x09c0('0x4a')];transfers[_0x428f9a[_0x09c0('0x4f')]][_0x09c0('0x18')]=utils[_0x09c0('0x19')]();transfers[_0x428f9a['transfertargetuniqueid']][_0x09c0('0x2e')]=utils[_0x09c0('0x19')]();transfers[_0x428f9a[_0x09c0('0x4f')]][_0x09c0('0x23')]=0x0;transfers[_0x428f9a[_0x09c0('0x4f')]]['agententerreason']=0x2;}}}catch(_0x422046){utils[_0x09c0('0x1c')](util[_0x09c0('0x16')](_0x09c0('0x41'),_0x428f9a[_0x09c0('0x44')]),_0x422046);}};exports[_0x09c0('0x51')]=function(_0x59c57a){try{utils['debug'](util['format']('[%s][agents][hangup]',_0x59c57a[_0x09c0('0x4')]),_0x59c57a);if(agents[_0x59c57a[_0x09c0('0x4')]]&&agents[_0x59c57a[_0x09c0('0x4')]]['reason']===_0x09c0('0x21')){if(_0x59c57a['cause']==='21'){agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x22')]='rejected';agents[_0x59c57a[_0x09c0('0x4')]]['lastevent']='rejected';}utils[_0x09c0('0x2')](util[_0x09c0('0x16')](_0x09c0('0x52'),_0x59c57a[_0x09c0('0x4')],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x7')],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x22')],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x9')]));writeDB(agents[_0x59c57a['uniqueid']]);var _0x188af2=unanswered[_0x09c0('0x53')](_0x59c57a['uniqueid']);if(_0x188af2>-0x1){unanswered['splice'](_0x188af2,0x1);}}if(transfers[_0x59c57a[_0x09c0('0x4')]]){transfers[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0xd')]=!![];transfers[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x34')]=utils[_0x09c0('0x19')]();transfers[_0x59c57a[_0x09c0('0x4')]]['talktime']=utils[_0x09c0('0x35')](transfers[_0x59c57a['uniqueid']][_0x09c0('0x34')],transfers[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x2e')]);transfers[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x22')]='agent';transfers[_0x59c57a[_0x09c0('0x4')]]['lastevent']=_0x09c0('0x36');utils['info'](util[_0x09c0('0x16')](_0x09c0('0x52'),_0x59c57a[_0x09c0('0x4')],transfers[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x7')],transfers[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x22')],transfers[_0x59c57a['uniqueid']]['lastevent']));writeDB(transfers[_0x59c57a[_0x09c0('0x4')]],!![]);}if(agents[_0x59c57a[_0x09c0('0x4')]]&&agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x2e')]){agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0xd')]=!![];agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x34')]=utils[_0x09c0('0x19')]();agents[_0x59c57a[_0x09c0('0x4')]]['talktime']=utils['diffTime'](agents[_0x59c57a['uniqueid']][_0x09c0('0x34')],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x2e')]);agents[_0x59c57a['uniqueid']]['reason']=agents[_0x59c57a[_0x09c0('0x4')]]['transfer']?_0x09c0('0x3b'):_0x09c0('0x54');agents[_0x59c57a['uniqueid']][_0x09c0('0x9')]='complete';utils[_0x09c0('0x2')](util[_0x09c0('0x16')](_0x09c0('0x52'),_0x59c57a['uniqueid'],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x7')],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x22')],agents[_0x59c57a[_0x09c0('0x4')]][_0x09c0('0x9')]));writeDB(agents[_0x59c57a[_0x09c0('0x4')]]);}}catch(_0x4345a8){utils[_0x09c0('0x1c')](util[_0x09c0('0x16')](_0x09c0('0x55'),_0x59c57a[_0x09c0('0x4')]),_0x4345a8);}};
\ No newline at end of file
index 27cb91f..855224e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa311=['exten','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','transfer','linkedid','destinationchannel','answertime','disposition','channelstate','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','cdr','appdata','split','substring','lastIndexOf','noop','set','gotoif','lodash','util','./utils','./transfers.controller','FAILED','NO\x20ANSWER','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','calleridnum','lastevent','accountcode','getUserByInternal','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context'];(function(_0x12d951,_0x249808){var _0x44de17=function(_0x182fd9){while(--_0x182fd9){_0x12d951['push'](_0x12d951['shift']());}};_0x44de17(++_0x249808);}(_0xa311,0xbb));var _0x1a31=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa311[_0x3c2a69];return _0x596bc8;};'use strict';var _=require(_0x1a31('0x0'));var util=require(_0x1a31('0x1'));var utils=require(_0x1a31('0x2'));var transfers=require(_0x1a31('0x3'));var dispositions=['NO\x20ANSWER',_0x1a31('0x4'),_0x1a31('0x4'),_0x1a31('0x5'),_0x1a31('0x5'),_0x1a31('0x5'),_0x1a31('0x6'),_0x1a31('0x7'),_0x1a31('0x4'),_0x1a31('0x4'),'FAILED'];var channels={};function writeDB(_0x2a2bab){var _0x14f81b;if(transfers[_0x1a31('0x8')][_0x2a2bab['uniqueid']]){_0x14f81b=_0x2a2bab[_0x1a31('0x9')];_0x2a2bab['uniqueid']=transfers['blinds'][_0x2a2bab['uniqueid']][_0x1a31('0xa')];}utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0xd'),_0x2a2bab[_0x1a31('0x9')],_0x2a2bab['channel'],_0x2a2bab[_0x1a31('0xe')],_0x2a2bab['membername'],_0x2a2bab['interface'],_0x2a2bab[_0x1a31('0xf')],_0x2a2bab['connectedlinenum'],_0x2a2bab[_0x1a31('0x10')]));if(_0x2a2bab[_0x1a31('0x11')]){utils[_0x1a31('0x12')](_0x2a2bab['accountcode'])['then'](function(_0x5c586e){if(_0x5c586e){_0x2a2bab['UserId']=_0x5c586e['id'];}utils['request']('CreateVoiceCallReport',_0x2a2bab);});}else{utils['request'](_0x1a31('0x13'),_0x2a2bab);}if(channels[_0x2a2bab[_0x1a31('0x9')]]){delete channels[_0x2a2bab[_0x1a31('0x9')]];}else if(_0x14f81b&&channels[_0x14f81b]){delete transfers[_0x1a31('0x8')][_0x14f81b];delete channels[_0x14f81b];}}exports[_0x1a31('0x14')]=function(_0x30aa5d){try{utils[_0x1a31('0x15')](util[_0x1a31('0xc')](_0x1a31('0x16'),_0x30aa5d[_0x1a31('0x9')]),_0x30aa5d);if(_0x30aa5d['uniqueid']==_0x30aa5d['linkedid']&&_0x30aa5d[_0x1a31('0x17')]!=_0x1a31('0x18')){utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0x19'),_0x30aa5d[_0x1a31('0x9')],_0x30aa5d[_0x1a31('0x1a')],_0x30aa5d['exten']));channels[_0x30aa5d[_0x1a31('0x9')]]={'uniqueid':_0x30aa5d[_0x1a31('0x9')],'accountcode':_0x30aa5d['accountcode'],'source':_0x30aa5d[_0x1a31('0xf')],'destination':_0x30aa5d[_0x1a31('0x1b')],'destinationcontext':_0x30aa5d[_0x1a31('0x1a')],'channel':_0x30aa5d[_0x1a31('0x17')],'starttime':utils[_0x1a31('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0x1a31('0x1d')};}}catch(_0x447c8d){utils[_0x1a31('0x1e')](util[_0x1a31('0xc')](_0x1a31('0x16'),_0x30aa5d[_0x1a31('0x9')]),_0x447c8d);}};exports[_0x1a31('0x1f')]=function(_0xf20fd3){try{utils['debug'](util['format'](_0x1a31('0x20'),_0xf20fd3[_0x1a31('0x9')]),_0xf20fd3);if(!_['isNil'](channels[_0xf20fd3[_0x1a31('0x9')]])&&_0xf20fd3['channelstate']==0x6){utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0x21'),_0xf20fd3[_0x1a31('0x9')],_0xf20fd3[_0x1a31('0x1a')],_0xf20fd3['channel']));if(_[_0x1a31('0x22')](channels[_0xf20fd3[_0x1a31('0x9')]][_0x1a31('0x23')])){channels[_0xf20fd3[_0x1a31('0x9')]][_0x1a31('0x23')]=utils[_0x1a31('0x1c')]();}}else if(!_[_0x1a31('0x22')](channels[_0xf20fd3['linkedid']])&&_0xf20fd3['channelstate']==0x6&&_0xf20fd3[_0x1a31('0x1a')]!=_0x1a31('0x24')){utils['info'](util['format']('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0xf20fd3[_0x1a31('0x9')],_0xf20fd3[_0x1a31('0x25')],_0xf20fd3[_0x1a31('0x1a')],_0xf20fd3[_0x1a31('0x17')]));channels[_0xf20fd3[_0x1a31('0x25')]][_0x1a31('0x11')]=_0xf20fd3[_0x1a31('0x11')];channels[_0xf20fd3['linkedid']][_0x1a31('0x26')]=_0xf20fd3[_0x1a31('0x17')];if(_[_0x1a31('0x22')](channels[_0xf20fd3[_0x1a31('0x25')]][_0x1a31('0x27')])){channels[_0xf20fd3[_0x1a31('0x25')]]['answertime']=utils[_0x1a31('0x1c')]();}channels[_0xf20fd3[_0x1a31('0x25')]][_0x1a31('0x28')]=dispositions[_['toNumber'](_0xf20fd3[_0x1a31('0x29')])]||_0x1a31('0x6');}}catch(_0x341511){utils[_0x1a31('0x1e')](util['format'](_0x1a31('0x20'),_0xf20fd3['uniqueid']),_0x341511);}};exports[_0x1a31('0x2a')]=function(_0x562f23){try{if(!_['isNil'](channels[_0x562f23[_0x1a31('0x9')]])){utils['debug'](util[_0x1a31('0xc')](_0x1a31('0x2b'),_0x562f23[_0x1a31('0x9')]),_0x562f23);if(_[_0x1a31('0x22')](channels[_0x562f23[_0x1a31('0x9')]][_0x1a31('0x2c')])){channels[_0x562f23[_0x1a31('0x9')]]['callerid']=_0x562f23[_0x1a31('0x2d')]+'\x20<'+_0x562f23[_0x1a31('0xf')]+'>';}utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0x2e'),_0x562f23['uniqueid'],channels[_0x562f23['uniqueid']][_0x1a31('0x2c')],_0x562f23[_0x1a31('0x2f')]));channels[_0x562f23['uniqueid']][_0x1a31('0x30')]=utils[_0x1a31('0x1c')]();channels[_0x562f23[_0x1a31('0x9')]][_0x1a31('0x31')]=utils[_0x1a31('0x32')](channels[_0x562f23[_0x1a31('0x9')]][_0x1a31('0x30')],channels[_0x562f23[_0x1a31('0x9')]][_0x1a31('0x33')]);channels[_0x562f23[_0x1a31('0x9')]]['billableseconds']=channels[_0x562f23[_0x1a31('0x9')]][_0x1a31('0x27')]?utils['diffTime'](channels[_0x562f23[_0x1a31('0x9')]]['endtime'],channels[_0x562f23[_0x1a31('0x9')]][_0x1a31('0x27')]):0x0;writeDB(channels[_0x562f23[_0x1a31('0x9')]]);}}catch(_0x1505a7){utils[_0x1a31('0x1e')](util[_0x1a31('0xc')](_0x1a31('0x2b'),_0x562f23[_0x1a31('0x9')]),_0x1505a7);}};exports[_0x1a31('0x34')]=function(_0x4125a4){try{if(!_['isNil'](channels[_0x4125a4[_0x1a31('0x35')]])){utils[_0x1a31('0x15')](util[_0x1a31('0xc')](_0x1a31('0x36'),_0x4125a4[_0x1a31('0x37')]),_0x4125a4);if(channels[_0x4125a4[_0x1a31('0x35')]][_0x1a31('0x17')]==_0x4125a4[_0x1a31('0x38')]){utils['info'](util[_0x1a31('0xc')](_0x1a31('0x39'),_0x4125a4[_0x1a31('0x37')],_0x4125a4[_0x1a31('0x35')],_0x4125a4[_0x1a31('0x3a')]));channels[_0x4125a4[_0x1a31('0x35')]]['destinationchannel']=_0x4125a4[_0x1a31('0x3a')];channels[_0x4125a4['localtwolinkedid']][_0x1a31('0x3b')]=_0x1a31('0x3c');}else if(channels[_0x4125a4[_0x1a31('0x35')]][_0x1a31('0x17')]=_0x4125a4[_0x1a31('0x3d')]){utils['info'](util[_0x1a31('0xc')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4125a4['origtransfereruniqueid'],_0x4125a4[_0x1a31('0x35')],_0x4125a4[_0x1a31('0x3e')]));channels[_0x4125a4[_0x1a31('0x35')]][_0x1a31('0x26')]=_0x4125a4[_0x1a31('0x3e')];channels[_0x4125a4[_0x1a31('0x35')]]['userfield']=_0x1a31('0x3c');}}}catch(_0x2cb1d5){utils[_0x1a31('0x1e')](util['format'](_0x1a31('0x36'),_0x4125a4['origtransfereruniqueid']),_0x2cb1d5);}};exports[_0x1a31('0x3f')]=function(_0x55d098){try{if(!_[_0x1a31('0x22')](channels[_0x55d098[_0x1a31('0x9')]])){utils[_0x1a31('0x15')](util['format'](_0x1a31('0x40'),_0x55d098['uniqueid']),_0x55d098);channels[_0x55d098[_0x1a31('0x9')]][_0x1a31('0x41')]=utils[_0x1a31('0x1c')]();utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0x42'),_0x55d098[_0x1a31('0x9')],channels[_0x55d098[_0x1a31('0x9')]]['musiconholdstartAt']));}}catch(_0x2b8a4c){utils[_0x1a31('0x1e')](util['format'](_0x1a31('0x40'),_0x55d098[_0x1a31('0x9')]),_0x2b8a4c);}};exports[_0x1a31('0x43')]=function(_0x44aeeb){try{if(!_[_0x1a31('0x22')](channels[_0x44aeeb['uniqueid']])){utils[_0x1a31('0x15')](util[_0x1a31('0xc')](_0x1a31('0x44'),_0x44aeeb[_0x1a31('0x9')]),_0x44aeeb);if(!_['isNil'](channels[_0x44aeeb[_0x1a31('0x9')]][_0x1a31('0x41')])){channels[_0x44aeeb['uniqueid']]['mohtime']+=utils[_0x1a31('0x32')](utils[_0x1a31('0x1c')](),channels[_0x44aeeb[_0x1a31('0x9')]]['musiconholdstartAt']);utils[_0x1a31('0xb')](util['format'](_0x1a31('0x45'),_0x44aeeb[_0x1a31('0x9')],channels[_0x44aeeb['uniqueid']][_0x1a31('0x46')]));delete channels[_0x44aeeb[_0x1a31('0x9')]]['musiconholdstartAt'];}}}catch(_0x38bf5a){utils[_0x1a31('0x1e')](util[_0x1a31('0xc')](_0x1a31('0x44'),_0x44aeeb[_0x1a31('0x9')]),_0x38bf5a);}};exports[_0x1a31('0x47')]=function(_0x5a2532){try{if(!_[_0x1a31('0x22')](channels[_0x5a2532['uniqueid']])){utils[_0x1a31('0x15')](util[_0x1a31('0xc')](_0x1a31('0x48'),_0x5a2532[_0x1a31('0x9')]),_0x5a2532);if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x4a')])){utils['info'](util['format'](_0x1a31('0x4b'),_0x5a2532[_0x1a31('0x9')],_0x5a2532[_0x1a31('0x4c')]));channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0x4d')]=_0x5a2532['value'];}if(!_[_0x1a31('0x22')](_0x5a2532['variable'][_0x1a31('0x4e')])){utils[_0x1a31('0xb')](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x5a2532['uniqueid'],_0x5a2532['value']));channels[_0x5a2532[_0x1a31('0x9')]]['destination']=_0x5a2532['value'];channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0x2c')]='\x22'+_0x5a2532[_0x1a31('0x4c')]+_0x1a31('0x4f')+_0x5a2532['value']+'>';}if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x50')])||!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x51')])){utils[_0x1a31('0xb')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5a2532[_0x1a31('0x9')],!_['isNil'](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x50')])?_0x1a31('0x50'):_0x1a31('0x51'),_0x5a2532[_0x1a31('0x4c')]));channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0x2c')]=_0x5a2532[_0x1a31('0x4c')];}if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x52')])||!_['isNil'](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x53')])){utils[_0x1a31('0xb')](util['format'](_0x1a31('0x54'),_0x5a2532[_0x1a31('0x9')],!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x52')])?_0x1a31('0x52'):_0x1a31('0x53'),_0x5a2532[_0x1a31('0x4c')]));channels[_0x5a2532[_0x1a31('0x9')]]['lastapplication']='Queue';channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0x55')]=_0x5a2532[_0x1a31('0x4c')];channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0xe')]=!![];}if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x56')])){utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0x57'),_0x5a2532[_0x1a31('0x9')],_0x5a2532['value']));channels[_0x5a2532[_0x1a31('0x9')]]['ContactId']=_0x5a2532[_0x1a31('0x4c')];}if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x58')])){utils[_0x1a31('0xb')](util[_0x1a31('0xc')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x5a2532[_0x1a31('0x9')],_0x5a2532[_0x1a31('0x4c')]));channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0x59')]=_0x5a2532['value'];}if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x5a')])){utils['info'](util[_0x1a31('0xc')](_0x1a31('0x5b'),_0x5a2532['uniqueid'],_0x5a2532[_0x1a31('0x4c')]));channels[_0x5a2532[_0x1a31('0x9')]]['routeid']=_0x5a2532[_0x1a31('0x4c')];}if(!_[_0x1a31('0x22')](_0x5a2532[_0x1a31('0x49')][_0x1a31('0x5c')])){utils['info'](util[_0x1a31('0xc')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x5a2532['uniqueid'],_0x5a2532['value']));channels[_0x5a2532[_0x1a31('0x9')]][_0x1a31('0x5c')]=_0x5a2532['value'];}}}catch(_0x5df582){utils[_0x1a31('0x1e')](util[_0x1a31('0xc')](_0x1a31('0x48'),_0x5a2532[_0x1a31('0x9')]),_0x5df582);}};exports[_0x1a31('0x5d')]=function(_0x3685c1){try{if(!_['isNil'](channels[_0x3685c1[_0x1a31('0x9')]])){utils[_0x1a31('0x15')](util[_0x1a31('0xc')](_0x1a31('0x5e'),_0x3685c1[_0x1a31('0x9')]),_0x3685c1);utils[_0x1a31('0xb')](util[_0x1a31('0xc')](_0x1a31('0x5f'),_0x3685c1[_0x1a31('0x9')],_0x3685c1['application'],_0x3685c1['appdata']));if(_0x3685c1[_0x1a31('0x60')][_0x1a31('0x61')]()=='set'&&_[_0x1a31('0x62')](_0x3685c1['appdata'][_0x1a31('0x61')](),_0x1a31('0x63'))){var _0x528fc3=_0x3685c1[_0x1a31('0x64')][_0x1a31('0x65')]('=');var _0x5112e9=_0x528fc3[0x0][_0x1a31('0x66')](_0x528fc3[0x0][_0x1a31('0x67')]('(')+0x1,_0x528fc3[0x0][_0x1a31('0x67')](')'));var _0x2b2a35=_0x528fc3[0x1];channels[_0x3685c1[_0x1a31('0x9')]][_0x5112e9]=_0x2b2a35;}if(!_['includes'](['hangup',_0x1a31('0x68'),'execif',_0x1a31('0x69'),_0x1a31('0x6a')],_0x3685c1['application'][_0x1a31('0x61')]())){channels[_0x3685c1[_0x1a31('0x9')]]['lastapplication']=_0x3685c1[_0x1a31('0x60')];channels[_0x3685c1[_0x1a31('0x9')]]['lastdata']=_0x3685c1[_0x1a31('0x64')];}}}catch(_0x1ec7f5){utils[_0x1a31('0x1e')](util[_0x1a31('0xc')](_0x1a31('0x5e'),_0x3685c1[_0x1a31('0x9')]),_0x1ec7f5);}};
\ No newline at end of file
+var _0xee4d=['xmd-phone','destination','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%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','sipcallid','newexten','[%s][calls][newexten]','application','appdata','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','includes','noop','execif','set','gotoif','util','./utils','./transfers.controller','FAILED','NO\x20ANSWER','ANSWERED','blinds','uniqueid','info','format','queue','membername','interface','calleridnum','connectedlinenum','getUserByInternal','accountcode','UserId','request','CreateVoiceCallReport','newchannel','debug','linkedid','channel','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','answertime','disposition','[%s][calls][hangup]','calleridname','callerid','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','destinationchannel','_attended','transfertargetchannel','origtransfererchannel','userfield','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xee4d,0x163));var _0xdee4=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xee4d[_0x3511d3];return _0x5d6321;};'use strict';var _=require('lodash');var util=require(_0xdee4('0x0'));var utils=require(_0xdee4('0x1'));var transfers=require(_0xdee4('0x2'));var dispositions=['NO\x20ANSWER',_0xdee4('0x3'),_0xdee4('0x3'),_0xdee4('0x4'),_0xdee4('0x4'),_0xdee4('0x4'),_0xdee4('0x5'),'BUSY',_0xdee4('0x3'),_0xdee4('0x3'),_0xdee4('0x3')];var channels={};function writeDB(_0x19aede){var _0x1c37d6;if(transfers[_0xdee4('0x6')][_0x19aede[_0xdee4('0x7')]]){_0x1c37d6=_0x19aede[_0xdee4('0x7')];_0x19aede[_0xdee4('0x7')]=transfers[_0xdee4('0x6')][_0x19aede[_0xdee4('0x7')]]['transfereeuniqueid'];}utils[_0xdee4('0x8')](util[_0xdee4('0x9')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x19aede[_0xdee4('0x7')],_0x19aede['channel'],_0x19aede[_0xdee4('0xa')],_0x19aede[_0xdee4('0xb')],_0x19aede[_0xdee4('0xc')],_0x19aede[_0xdee4('0xd')],_0x19aede[_0xdee4('0xe')],_0x19aede['lastevent']));if(_0x19aede['accountcode']){utils[_0xdee4('0xf')](_0x19aede[_0xdee4('0x10')])['then'](function(_0x2378d0){if(_0x2378d0){_0x19aede[_0xdee4('0x11')]=_0x2378d0['id'];}utils[_0xdee4('0x12')](_0xdee4('0x13'),_0x19aede);});}else{utils['request'](_0xdee4('0x13'),_0x19aede);}if(channels[_0x19aede[_0xdee4('0x7')]]){delete channels[_0x19aede[_0xdee4('0x7')]];}else if(_0x1c37d6&&channels[_0x1c37d6]){delete transfers['blinds'][_0x1c37d6];delete channels[_0x1c37d6];}}exports[_0xdee4('0x14')]=function(_0x3414dd){try{utils[_0xdee4('0x15')](util['format']('[%s][calls][newchannel]',_0x3414dd[_0xdee4('0x7')]),_0x3414dd);if(_0x3414dd[_0xdee4('0x7')]==_0x3414dd[_0xdee4('0x16')]&&_0x3414dd[_0xdee4('0x17')]!='OutgoingSpoolFailed'){utils['info'](util[_0xdee4('0x9')](_0xdee4('0x18'),_0x3414dd[_0xdee4('0x7')],_0x3414dd[_0xdee4('0x19')],_0x3414dd[_0xdee4('0x1a')]));channels[_0x3414dd[_0xdee4('0x7')]]={'uniqueid':_0x3414dd[_0xdee4('0x7')],'accountcode':_0x3414dd[_0xdee4('0x10')],'source':_0x3414dd[_0xdee4('0xd')],'destination':_0x3414dd[_0xdee4('0x1a')],'destinationcontext':_0x3414dd[_0xdee4('0x19')],'channel':_0x3414dd[_0xdee4('0x17')],'starttime':utils[_0xdee4('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xdee4('0x4'),'amaflags':_0xdee4('0x1c')};}}catch(_0x38b01d){utils[_0xdee4('0x1d')](util['format'](_0xdee4('0x1e'),_0x3414dd[_0xdee4('0x7')]),_0x38b01d);}};exports[_0xdee4('0x1f')]=function(_0x19adc8){try{utils['debug'](util[_0xdee4('0x9')](_0xdee4('0x20'),_0x19adc8['uniqueid']),_0x19adc8);if(!_[_0xdee4('0x21')](channels[_0x19adc8['uniqueid']])&&_0x19adc8[_0xdee4('0x22')]==0x6){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x23'),_0x19adc8[_0xdee4('0x7')],_0x19adc8[_0xdee4('0x19')],_0x19adc8['channel']));if(_[_0xdee4('0x21')](channels[_0x19adc8[_0xdee4('0x7')]][_0xdee4('0x24')])){channels[_0x19adc8['uniqueid']][_0xdee4('0x24')]=utils['now']();}}else if(!_[_0xdee4('0x21')](channels[_0x19adc8[_0xdee4('0x16')]])&&_0x19adc8[_0xdee4('0x22')]==0x6&&_0x19adc8[_0xdee4('0x19')]!=_0xdee4('0x25')){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x26'),_0x19adc8[_0xdee4('0x7')],_0x19adc8[_0xdee4('0x16')],_0x19adc8[_0xdee4('0x19')],_0x19adc8[_0xdee4('0x17')]));channels[_0x19adc8[_0xdee4('0x16')]][_0xdee4('0x10')]=_0x19adc8[_0xdee4('0x10')];channels[_0x19adc8[_0xdee4('0x16')]]['destinationchannel']=_0x19adc8[_0xdee4('0x17')];if(_[_0xdee4('0x21')](channels[_0x19adc8[_0xdee4('0x16')]][_0xdee4('0x27')])){channels[_0x19adc8[_0xdee4('0x16')]][_0xdee4('0x27')]=utils[_0xdee4('0x1b')]();}channels[_0x19adc8['linkedid']][_0xdee4('0x28')]=dispositions[_['toNumber'](_0x19adc8[_0xdee4('0x22')])]||_0xdee4('0x5');}}catch(_0x10ae90){utils[_0xdee4('0x1d')](util[_0xdee4('0x9')](_0xdee4('0x20'),_0x19adc8[_0xdee4('0x7')]),_0x10ae90);}};exports['hangup']=function(_0x25be3e){try{if(!_[_0xdee4('0x21')](channels[_0x25be3e[_0xdee4('0x7')]])){utils[_0xdee4('0x15')](util['format'](_0xdee4('0x29'),_0x25be3e['uniqueid']),_0x25be3e);if(_[_0xdee4('0x21')](channels[_0x25be3e[_0xdee4('0x7')]]['callerid'])){channels[_0x25be3e[_0xdee4('0x7')]]['callerid']=_0x25be3e[_0xdee4('0x2a')]+'\x20<'+_0x25be3e[_0xdee4('0xd')]+'>';}utils[_0xdee4('0x8')](util[_0xdee4('0x9')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x25be3e[_0xdee4('0x7')],channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x2b')],_0x25be3e['cause-txt']));channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x2c')]=utils[_0xdee4('0x1b')]();channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x2d')]=utils[_0xdee4('0x2e')](channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x2c')],channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x2f')]);channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x30')]=channels[_0x25be3e[_0xdee4('0x7')]]['answertime']?utils[_0xdee4('0x2e')](channels[_0x25be3e[_0xdee4('0x7')]][_0xdee4('0x2c')],channels[_0x25be3e[_0xdee4('0x7')]]['answertime']):0x0;writeDB(channels[_0x25be3e[_0xdee4('0x7')]]);}}catch(_0xe569c2){utils[_0xdee4('0x1d')](util[_0xdee4('0x9')]('[%s][calls][hangup]',_0x25be3e[_0xdee4('0x7')]),_0xe569c2);}};exports[_0xdee4('0x31')]=function(_0xac0e46){try{if(!_[_0xdee4('0x21')](channels[_0xac0e46[_0xdee4('0x32')]])){utils[_0xdee4('0x15')](util[_0xdee4('0x9')](_0xdee4('0x33'),_0xac0e46[_0xdee4('0x34')]),_0xac0e46);if(channels[_0xac0e46['localtwolinkedid']][_0xdee4('0x17')]==_0xac0e46['transfereechannel']){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x35'),_0xac0e46[_0xdee4('0x34')],_0xac0e46['localtwolinkedid'],_0xac0e46[_0xdee4('0x36')]));channels[_0xac0e46['localtwolinkedid']][_0xdee4('0x37')]=_0xac0e46[_0xdee4('0x36')];channels[_0xac0e46[_0xdee4('0x32')]]['userfield']=_0xdee4('0x38');}else if(channels[_0xac0e46['localtwolinkedid']]['channel']=_0xac0e46[_0xdee4('0x39')]){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x35'),_0xac0e46[_0xdee4('0x34')],_0xac0e46['localtwolinkedid'],_0xac0e46[_0xdee4('0x3a')]));channels[_0xac0e46[_0xdee4('0x32')]]['destinationchannel']=_0xac0e46['origtransfererchannel'];channels[_0xac0e46['localtwolinkedid']][_0xdee4('0x3b')]='_attended';}}}catch(_0x478b86){utils[_0xdee4('0x1d')](util[_0xdee4('0x9')]('[%s][calls][attendedtransfer]',_0xac0e46[_0xdee4('0x34')]),_0x478b86);}};exports['musiconholdstart']=function(_0x505ac8){try{if(!_[_0xdee4('0x21')](channels[_0x505ac8[_0xdee4('0x7')]])){utils[_0xdee4('0x15')](util['format'](_0xdee4('0x3c'),_0x505ac8[_0xdee4('0x7')]),_0x505ac8);channels[_0x505ac8[_0xdee4('0x7')]][_0xdee4('0x3d')]=utils[_0xdee4('0x1b')]();utils['info'](util[_0xdee4('0x9')](_0xdee4('0x3e'),_0x505ac8[_0xdee4('0x7')],channels[_0x505ac8['uniqueid']][_0xdee4('0x3d')]));}}catch(_0x10dcac){utils[_0xdee4('0x1d')](util[_0xdee4('0x9')]('[%s][calls][musiconholdstart]',_0x505ac8['uniqueid']),_0x10dcac);}};exports[_0xdee4('0x3f')]=function(_0x5c09d0){try{if(!_['isNil'](channels[_0x5c09d0[_0xdee4('0x7')]])){utils[_0xdee4('0x15')](util[_0xdee4('0x9')](_0xdee4('0x40'),_0x5c09d0[_0xdee4('0x7')]),_0x5c09d0);if(!_[_0xdee4('0x21')](channels[_0x5c09d0[_0xdee4('0x7')]][_0xdee4('0x3d')])){channels[_0x5c09d0['uniqueid']]['mohtime']+=utils[_0xdee4('0x2e')](utils['now'](),channels[_0x5c09d0[_0xdee4('0x7')]][_0xdee4('0x3d')]);utils['info'](util[_0xdee4('0x9')](_0xdee4('0x41'),_0x5c09d0[_0xdee4('0x7')],channels[_0x5c09d0[_0xdee4('0x7')]][_0xdee4('0x42')]));delete channels[_0x5c09d0['uniqueid']]['musiconholdstartAt'];}}}catch(_0x419e82){utils['error'](util[_0xdee4('0x9')](_0xdee4('0x40'),_0x5c09d0[_0xdee4('0x7')]),_0x419e82);}};exports['varset']=function(_0x2926b4){try{if(!_[_0xdee4('0x21')](channels[_0x2926b4[_0xdee4('0x7')]])){utils[_0xdee4('0x15')](util[_0xdee4('0x9')](_0xdee4('0x43'),_0x2926b4[_0xdee4('0x7')]),_0x2926b4);if(!_['isNil'](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x45')])){utils['info'](util[_0xdee4('0x9')](_0xdee4('0x46'),_0x2926b4[_0xdee4('0x7')],_0x2926b4[_0xdee4('0x47')]));channels[_0x2926b4[_0xdee4('0x7')]][_0xdee4('0x48')]=_0x2926b4[_0xdee4('0x47')];}if(!_['isNil'](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x49')])){utils['info'](util[_0xdee4('0x9')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x2926b4[_0xdee4('0x7')],_0x2926b4['value']));channels[_0x2926b4['uniqueid']][_0xdee4('0x4a')]=_0x2926b4['value'];channels[_0x2926b4[_0xdee4('0x7')]][_0xdee4('0x2b')]='\x22'+_0x2926b4['value']+_0xdee4('0x4b')+_0x2926b4[_0xdee4('0x47')]+'>';}if(!_[_0xdee4('0x21')](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x4c')])||!_[_0xdee4('0x21')](_0x2926b4['variable']['xmd-callerid'])){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x4d'),_0x2926b4['uniqueid'],!_[_0xdee4('0x21')](_0x2926b4['variable'][_0xdee4('0x4c')])?'xmd-callerid-preview':'xmd-callerid',_0x2926b4[_0xdee4('0x47')]));channels[_0x2926b4['uniqueid']][_0xdee4('0x2b')]=_0x2926b4['value'];}if(!_[_0xdee4('0x21')](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x4e')])||!_[_0xdee4('0x21')](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x4f')])){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x4d'),_0x2926b4[_0xdee4('0x7')],!_[_0xdee4('0x21')](_0x2926b4[_0xdee4('0x44')]['xmd-queue'])?_0xdee4('0x4e'):'xmcs-queue',_0x2926b4[_0xdee4('0x47')]));channels[_0x2926b4[_0xdee4('0x7')]][_0xdee4('0x50')]=_0xdee4('0x51');channels[_0x2926b4['uniqueid']][_0xdee4('0x52')]=_0x2926b4[_0xdee4('0x47')];channels[_0x2926b4[_0xdee4('0x7')]][_0xdee4('0xa')]=!![];}if(!_[_0xdee4('0x21')](_0x2926b4['variable'][_0xdee4('0x53')])){utils[_0xdee4('0x8')](util['format'](_0xdee4('0x54'),_0x2926b4[_0xdee4('0x7')],_0x2926b4[_0xdee4('0x47')]));channels[_0x2926b4['uniqueid']][_0xdee4('0x55')]=_0x2926b4['value'];}if(!_['isNil'](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x56')])){utils[_0xdee4('0x8')](util[_0xdee4('0x9')](_0xdee4('0x57'),_0x2926b4[_0xdee4('0x7')],_0x2926b4['value']));channels[_0x2926b4['uniqueid']][_0xdee4('0x58')]=_0x2926b4[_0xdee4('0x47')];}if(!_[_0xdee4('0x21')](_0x2926b4[_0xdee4('0x44')][_0xdee4('0x59')])){utils[_0xdee4('0x8')](util['format'](_0xdee4('0x5a'),_0x2926b4[_0xdee4('0x7')],_0x2926b4[_0xdee4('0x47')]));channels[_0x2926b4['uniqueid']]['routeid']=_0x2926b4['value'];}if(!_[_0xdee4('0x21')](_0x2926b4['variable']['sipcallid'])){utils[_0xdee4('0x8')](util['format']('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x2926b4[_0xdee4('0x7')],_0x2926b4[_0xdee4('0x47')]));channels[_0x2926b4['uniqueid']][_0xdee4('0x5b')]=_0x2926b4[_0xdee4('0x47')];}}}catch(_0x4c57d5){utils[_0xdee4('0x1d')](util[_0xdee4('0x9')]('[%s][calls][varset]',_0x2926b4[_0xdee4('0x7')]),_0x4c57d5);}};exports[_0xdee4('0x5c')]=function(_0xb7b830){try{if(!_[_0xdee4('0x21')](channels[_0xb7b830[_0xdee4('0x7')]])){utils[_0xdee4('0x15')](util[_0xdee4('0x9')](_0xdee4('0x5d'),_0xb7b830[_0xdee4('0x7')]),_0xb7b830);utils[_0xdee4('0x8')](util[_0xdee4('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0xb7b830[_0xdee4('0x7')],_0xb7b830[_0xdee4('0x5e')],_0xb7b830[_0xdee4('0x5f')]));if(_0xb7b830[_0xdee4('0x5e')]['toLowerCase']()=='set'&&_[_0xdee4('0x60')](_0xb7b830['appdata'][_0xdee4('0x61')](),_0xdee4('0x62'))){var _0x5461a9=_0xb7b830[_0xdee4('0x5f')][_0xdee4('0x63')]('=');var _0x1f7048=_0x5461a9[0x0][_0xdee4('0x64')](_0x5461a9[0x0][_0xdee4('0x65')]('(')+0x1,_0x5461a9[0x0]['lastIndexOf'](')'));var _0x4d2ae7=_0x5461a9[0x1];channels[_0xb7b830['uniqueid']][_0x1f7048]=_0x4d2ae7;}if(!_[_0xdee4('0x66')](['hangup',_0xdee4('0x67'),_0xdee4('0x68'),_0xdee4('0x69'),_0xdee4('0x6a')],_0xb7b830[_0xdee4('0x5e')][_0xdee4('0x61')]())){channels[_0xb7b830[_0xdee4('0x7')]]['lastapplication']=_0xb7b830[_0xdee4('0x5e')];channels[_0xb7b830[_0xdee4('0x7')]]['lastdata']=_0xb7b830['appdata'];}}}catch(_0x4edb68){utils[_0xdee4('0x1d')](util[_0xdee4('0x9')](_0xdee4('0x5d'),_0xb7b830[_0xdee4('0x7')]),_0x4edb68);}};
\ No newline at end of file
index a1e20d4..7a0410a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf934=['managerevent','./utils','info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close'];(function(_0x2c7841,_0x125ed5){var _0x512a96=function(_0x1ec9e0){while(--_0x1ec9e0){_0x2c7841['push'](_0x2c7841['shift']());}};_0x512a96(++_0x125ed5);}(_0xf934,0x198));var _0x4f93=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xf934[_0x25e7cb];return _0x375d92;};'use strict';var utils=require(_0x4f93('0x0'));exports['connect']=function(){utils[_0x4f93('0x1')]('[core]\x20connected');};exports[_0x4f93('0x2')]=function(){utils[_0x4f93('0x1')](_0x4f93('0x3'));};exports[_0x4f93('0x4')]=function(){utils[_0x4f93('0x1')](_0x4f93('0x5'));};exports['error']=function(_0x1453d1){utils[_0x4f93('0x6')](_0x4f93('0x7'),_0x1453d1);};exports[_0x4f93('0x8')]=function(){utils['info'](_0x4f93('0x9'));};exports[_0x4f93('0xa')]=function(_0x3addf5){};
\ No newline at end of file
+var _0x4325=['[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','connect','[core]\x20connected','shutdown','info','[core]\x20shutdown'];(function(_0xcf434a,_0x440645){var _0x58e202=function(_0x3ba1a9){while(--_0x3ba1a9){_0xcf434a['push'](_0xcf434a['shift']());}};_0x58e202(++_0x440645);}(_0x4325,0x159));var _0x5432=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4325[_0x3b380d];return _0x54502b;};'use strict';var utils=require('./utils');exports[_0x5432('0x0')]=function(){utils['info'](_0x5432('0x1'));};exports[_0x5432('0x2')]=function(){utils[_0x5432('0x3')](_0x5432('0x4'));};exports['fullybooted']=function(){utils['info'](_0x5432('0x5'));};exports[_0x5432('0x6')]=function(_0xc6b51){utils[_0x5432('0x6')](_0x5432('0x7'),_0xc6b51);};exports[_0x5432('0x8')]=function(){utils['info'](_0x5432('0x9'));};exports['managerevent']=function(_0x16618a){};
\ No newline at end of file
index 0c403b0..6198682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd66a=['starttime','now','called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','cause-txt','complete','duration','diffTime','endtime','holdtime','lodash','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','connectedlinenum','dialstatus','request','CreateVoiceDialReport','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','cdr(routeid)','appdata','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','value','error','dialbegin','assign'];(function(_0x503306,_0x356f2f){var _0x44a99d=function(_0x1a6ec4){while(--_0x1a6ec4){_0x503306['push'](_0x503306['shift']());}};_0x44a99d(++_0x356f2f);}(_0xd66a,0x1bb));var _0xad66=function(_0x595b9b,_0xa58ff){_0x595b9b=_0x595b9b-0x0;var _0x3be4c6=_0xd66a[_0x595b9b];return _0x3be4c6;};'use strict';var _=require(_0xad66('0x0'));var util=require('util');var utils=require('./utils');var dials={};function writeDB(_0x2832dd){utils[_0xad66('0x1')](util[_0xad66('0x2')](_0xad66('0x3'),_0x2832dd[_0xad66('0x4')],_0x2832dd[_0xad66('0x5')],_0x2832dd[_0xad66('0x6')],_0x2832dd['calleridnum'],_0x2832dd[_0xad66('0x7')],_0x2832dd[_0xad66('0x8')]));utils[_0xad66('0x9')](_0xad66('0xa'),_0x2832dd);delete dials[_0x2832dd[_0xad66('0x4')]];}exports['newexten']=function(_0x94422f){try{utils[_0xad66('0xb')](util[_0xad66('0x2')](_0xad66('0xc'),_0x94422f[_0xad66('0x4')]),_0x94422f);utils[_0xad66('0x1')](util['format'](_0xad66('0xd'),_0x94422f['uniqueid'],_0x94422f[_0xad66('0xe')],_0x94422f['appdata']));if(_0x94422f[_0xad66('0xe')][_0xad66('0xf')]()=='set'&&_['startsWith'](_0x94422f['appdata']['toLowerCase'](),_0xad66('0x10'))){var _0x515ec7=_0x94422f[_0xad66('0x11')]['split']('=');dials[_0x94422f[_0xad66('0x4')]]={'routeId':_0x515ec7[0x1]};}}catch(_0x532b53){utils['error'](util[_0xad66('0x2')]('[%s][dials][newexten]',_0x94422f['uniqueid']),_0x532b53);}};exports[_0xad66('0x12')]=function(_0x49d64e){try{utils['debug'](util[_0xad66('0x2')](_0xad66('0x13'),_0x49d64e[_0xad66('0x4')]),_0x49d64e);if(!_[_0xad66('0x14')](_0x49d64e[_0xad66('0x15')][_0xad66('0x16')])){utils[_0xad66('0x1')](util['format']('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x49d64e[_0xad66('0x4')],_0x49d64e[_0xad66('0x17')]));dials[_0x49d64e[_0xad66('0x4')]]={'routeId':_0x49d64e['value']};}}catch(_0x144a93){utils[_0xad66('0x18')](util[_0xad66('0x2')](_0xad66('0x13'),_0x49d64e[_0xad66('0x4')]),_0x144a93);}};exports[_0xad66('0x19')]=function(_0x391a14){try{if(!_[_0xad66('0x14')](dials[_0x391a14[_0xad66('0x4')]])){utils[_0xad66('0xb')](util[_0xad66('0x2')]('[%s][dials][dialbegin]',_0x391a14[_0xad66('0x4')]),_0x391a14);dials[_0x391a14['uniqueid']]=_[_0xad66('0x1a')](dials[_0x391a14['uniqueid']],_0x391a14);dials[_0x391a14['uniqueid']][_0xad66('0x1b')]=utils[_0xad66('0x1c')]();dials[_0x391a14['uniqueid']]['lastevent']=_0xad66('0x1d');utils[_0xad66('0x1')](util['format']('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x391a14['uniqueid'],dials[_0x391a14[_0xad66('0x4')]][_0xad66('0x1b')]));}}catch(_0x1f6795){utils['error'](util[_0xad66('0x2')](_0xad66('0x1e'),_0x391a14[_0xad66('0x4')]),_0x1f6795);}};exports[_0xad66('0x1f')]=function(_0x2f9d41){try{if(!_[_0xad66('0x14')](dials[_0x2f9d41[_0xad66('0x4')]])){utils[_0xad66('0xb')](util['format'](_0xad66('0x20'),_0x2f9d41[_0xad66('0x4')]),_0x2f9d41);dials[_0x2f9d41[_0xad66('0x4')]][_0xad66('0x8')]=_0x2f9d41['dialstatus'];if(_0x2f9d41[_0xad66('0x8')]==_0xad66('0x21')){dials[_0x2f9d41[_0xad66('0x4')]]=_[_0xad66('0x1a')](dials[_0x2f9d41[_0xad66('0x4')]],_0x2f9d41);dials[_0x2f9d41[_0xad66('0x4')]]['answertime']=utils[_0xad66('0x1c')]();dials[_0x2f9d41['uniqueid']]['lastevent']=_0xad66('0x22');utils[_0xad66('0x1')](util[_0xad66('0x2')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x2f9d41[_0xad66('0x4')],_0x2f9d41['dialstatus'],dials[_0x2f9d41['uniqueid']][_0xad66('0x23')]));}else{utils[_0xad66('0x1')](util[_0xad66('0x2')](_0xad66('0x24'),_0x2f9d41[_0xad66('0x4')],_0x2f9d41[_0xad66('0x8')]));}}}catch(_0x101ab9){utils[_0xad66('0x18')](util['format']('[%s][dials][dialend]',_0x2f9d41[_0xad66('0x4')]),_0x101ab9);}};exports[_0xad66('0x25')]=function(_0x30ea40){try{if(!_[_0xad66('0x14')](dials[_0x30ea40['uniqueid']])){utils['debug'](util['format'](_0xad66('0x26'),_0x30ea40[_0xad66('0x4')]),_0x30ea40);utils[_0xad66('0x1')](util['format'](_0xad66('0x27'),_0x30ea40[_0xad66('0x4')],_0x30ea40[_0xad66('0x28')],_0x30ea40['calleridname'],_0x30ea40[_0xad66('0x29')]));dials[_0x30ea40[_0xad66('0x4')]]=_[_0xad66('0x1a')](dials[_0x30ea40[_0xad66('0x4')]],{'endtime':utils[_0xad66('0x1c')](),'lastevent':_0xad66('0x2a')});dials[_0x30ea40[_0xad66('0x4')]][_0xad66('0x2b')]=utils[_0xad66('0x2c')](dials[_0x30ea40[_0xad66('0x4')]][_0xad66('0x2d')],dials[_0x30ea40[_0xad66('0x4')]][_0xad66('0x1b')]);dials[_0x30ea40[_0xad66('0x4')]][_0xad66('0x2e')]=utils[_0xad66('0x2c')](dials[_0x30ea40[_0xad66('0x4')]][_0xad66('0x23')]||dials[_0x30ea40[_0xad66('0x4')]]['endtime'],dials[_0x30ea40['uniqueid']][_0xad66('0x1b')]);dials[_0x30ea40[_0xad66('0x4')]]['billableseconds']=dials[_0x30ea40[_0xad66('0x4')]][_0xad66('0x23')]?utils[_0xad66('0x2c')](dials[_0x30ea40[_0xad66('0x4')]]['endtime'],dials[_0x30ea40[_0xad66('0x4')]]['answertime']):0x0;writeDB(dials[_0x30ea40[_0xad66('0x4')]]);}}catch(_0x210db2){utils[_0xad66('0x18')](util[_0xad66('0x2')]('[%s][dials][hangup]',_0x30ea40[_0xad66('0x4')]),_0x210db2);}};
\ No newline at end of file
+var _0x2e27=['outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','now','lastevent','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','hangup','[%s][dials][hangup]','cause-txt','complete','endtime','holdtime','diffTime','billableseconds','lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','newexten','format','[%s][dials][newexten]','application','appdata','set','startsWith','toLowerCase','cdr(routeid)','split','error','varset','debug','[%s][dials][varset]','isNil','variable'];(function(_0x1fc122,_0x5e2c17){var _0xa2cb13=function(_0x263b13){while(--_0x263b13){_0x1fc122['push'](_0x1fc122['shift']());}};_0xa2cb13(++_0x5e2c17);}(_0x2e27,0x122));var _0x72e2=function(_0x2ce6d5,_0x333e0c){_0x2ce6d5=_0x2ce6d5-0x0;var _0x32d272=_0x2e27[_0x2ce6d5];return _0x32d272;};'use strict';var _=require(_0x72e2('0x0'));var util=require(_0x72e2('0x1'));var utils=require(_0x72e2('0x2'));var dials={};function writeDB(_0x56d500){utils[_0x72e2('0x3')](util['format'](_0x72e2('0x4'),_0x56d500[_0x72e2('0x5')],_0x56d500[_0x72e2('0x6')],_0x56d500[_0x72e2('0x7')],_0x56d500[_0x72e2('0x8')],_0x56d500[_0x72e2('0x9')],_0x56d500[_0x72e2('0xa')]));utils[_0x72e2('0xb')]('CreateVoiceDialReport',_0x56d500);delete dials[_0x56d500[_0x72e2('0x5')]];}exports[_0x72e2('0xc')]=function(_0x12538f){try{utils['debug'](util[_0x72e2('0xd')](_0x72e2('0xe'),_0x12538f[_0x72e2('0x5')]),_0x12538f);utils['info'](util[_0x72e2('0xd')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x12538f[_0x72e2('0x5')],_0x12538f[_0x72e2('0xf')],_0x12538f[_0x72e2('0x10')]));if(_0x12538f[_0x72e2('0xf')]['toLowerCase']()==_0x72e2('0x11')&&_[_0x72e2('0x12')](_0x12538f[_0x72e2('0x10')][_0x72e2('0x13')](),_0x72e2('0x14'))){var _0x319ef2=_0x12538f[_0x72e2('0x10')][_0x72e2('0x15')]('=');dials[_0x12538f[_0x72e2('0x5')]]={'routeId':_0x319ef2[0x1]};}}catch(_0x3053b3){utils[_0x72e2('0x16')](util[_0x72e2('0xd')](_0x72e2('0xe'),_0x12538f[_0x72e2('0x5')]),_0x3053b3);}};exports[_0x72e2('0x17')]=function(_0x4cfdab){try{utils[_0x72e2('0x18')](util[_0x72e2('0xd')](_0x72e2('0x19'),_0x4cfdab[_0x72e2('0x5')]),_0x4cfdab);if(!_[_0x72e2('0x1a')](_0x4cfdab[_0x72e2('0x1b')][_0x72e2('0x1c')])){utils[_0x72e2('0x3')](util['format'](_0x72e2('0x1d'),_0x4cfdab[_0x72e2('0x5')],_0x4cfdab[_0x72e2('0x1e')]));dials[_0x4cfdab[_0x72e2('0x5')]]={'routeId':_0x4cfdab[_0x72e2('0x1e')]};}}catch(_0x13880){utils[_0x72e2('0x16')](util[_0x72e2('0xd')](_0x72e2('0x19'),_0x4cfdab[_0x72e2('0x5')]),_0x13880);}};exports[_0x72e2('0x1f')]=function(_0x2f5edb){try{if(!_[_0x72e2('0x1a')](dials[_0x2f5edb['uniqueid']])){utils['debug'](util[_0x72e2('0xd')](_0x72e2('0x20'),_0x2f5edb[_0x72e2('0x5')]),_0x2f5edb);dials[_0x2f5edb[_0x72e2('0x5')]]=_[_0x72e2('0x21')](dials[_0x2f5edb[_0x72e2('0x5')]],_0x2f5edb);dials[_0x2f5edb[_0x72e2('0x5')]][_0x72e2('0x22')]=utils['now']();dials[_0x2f5edb[_0x72e2('0x5')]]['lastevent']=_0x72e2('0x23');utils[_0x72e2('0x3')](util[_0x72e2('0xd')](_0x72e2('0x24'),_0x2f5edb[_0x72e2('0x5')],dials[_0x2f5edb[_0x72e2('0x5')]]['starttime']));}}catch(_0x3e0ad7){utils[_0x72e2('0x16')](util[_0x72e2('0xd')]('[%s][dials][dialbegin]',_0x2f5edb[_0x72e2('0x5')]),_0x3e0ad7);}};exports[_0x72e2('0x25')]=function(_0x3c9d2d){try{if(!_[_0x72e2('0x1a')](dials[_0x3c9d2d['uniqueid']])){utils['debug'](util[_0x72e2('0xd')](_0x72e2('0x26'),_0x3c9d2d[_0x72e2('0x5')]),_0x3c9d2d);dials[_0x3c9d2d[_0x72e2('0x5')]][_0x72e2('0xa')]=_0x3c9d2d[_0x72e2('0xa')];if(_0x3c9d2d[_0x72e2('0xa')]==_0x72e2('0x27')){dials[_0x3c9d2d[_0x72e2('0x5')]]=_['assign'](dials[_0x3c9d2d[_0x72e2('0x5')]],_0x3c9d2d);dials[_0x3c9d2d[_0x72e2('0x5')]][_0x72e2('0x28')]=utils[_0x72e2('0x29')]();dials[_0x3c9d2d[_0x72e2('0x5')]][_0x72e2('0x2a')]=_0x72e2('0x2b');utils[_0x72e2('0x3')](util['format'](_0x72e2('0x2c'),_0x3c9d2d[_0x72e2('0x5')],_0x3c9d2d['dialstatus'],dials[_0x3c9d2d[_0x72e2('0x5')]][_0x72e2('0x28')]));}else{utils['info'](util[_0x72e2('0xd')]('[%s][dials][dialend]\x20dialstatus:%s',_0x3c9d2d[_0x72e2('0x5')],_0x3c9d2d[_0x72e2('0xa')]));}}}catch(_0x52fce5){utils['error'](util[_0x72e2('0xd')](_0x72e2('0x26'),_0x3c9d2d[_0x72e2('0x5')]),_0x52fce5);}};exports[_0x72e2('0x2d')]=function(_0x592dac){try{if(!_[_0x72e2('0x1a')](dials[_0x592dac[_0x72e2('0x5')]])){utils[_0x72e2('0x18')](util[_0x72e2('0xd')](_0x72e2('0x2e'),_0x592dac[_0x72e2('0x5')]),_0x592dac);utils['info'](util[_0x72e2('0xd')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x592dac['uniqueid'],_0x592dac[_0x72e2('0x8')],_0x592dac['calleridname'],_0x592dac[_0x72e2('0x2f')]));dials[_0x592dac[_0x72e2('0x5')]]=_[_0x72e2('0x21')](dials[_0x592dac[_0x72e2('0x5')]],{'endtime':utils[_0x72e2('0x29')](),'lastevent':_0x72e2('0x30')});dials[_0x592dac['uniqueid']]['duration']=utils['diffTime'](dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x31')],dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x22')]);dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x32')]=utils[_0x72e2('0x33')](dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x28')]||dials[_0x592dac[_0x72e2('0x5')]]['endtime'],dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x22')]);dials[_0x592dac['uniqueid']][_0x72e2('0x34')]=dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x28')]?utils[_0x72e2('0x33')](dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x31')],dials[_0x592dac[_0x72e2('0x5')]][_0x72e2('0x28')]):0x0;writeDB(dials[_0x592dac[_0x72e2('0x5')]]);}}catch(_0x16158c){utils['error'](util['format'](_0x72e2('0x2e'),_0x592dac[_0x72e2('0x5')]),_0x16158c);}};
\ No newline at end of file
index a3d3b94..166b5cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f26=['[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s][index][dialend]','dialend','asterisk-manager','../../config/environment','./utils','util','asterisk','port','username','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./members.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','[%s][index][devicestatechange]','device','devicestatechange','format','agentcalled','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','uniqueid','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel'];(function(_0x46bc20,_0x45389a){var _0x35211f=function(_0x4d3e1a){while(--_0x4d3e1a){_0x46bc20['push'](_0x46bc20['shift']());}};_0x35211f(++_0x45389a);}(_0x2f26,0xcb));var _0x62f2=function(_0x4ef937,_0x1db218){_0x4ef937=_0x4ef937-0x0;var _0x2c7496=_0x2f26[_0x4ef937];return _0x2c7496;};var AsteriskManager=require(_0x62f2('0x0'));var config=require(_0x62f2('0x1'));var utils=require(_0x62f2('0x2'));var util=require(_0x62f2('0x3'));var ami=new AsteriskManager(config[_0x62f2('0x4')][_0x62f2('0x5')],config[_0x62f2('0x4')]['ip'],config[_0x62f2('0x4')][_0x62f2('0x6')],config[_0x62f2('0x4')]['password'],!![]);ami[_0x62f2('0x7')]();if(config[_0x62f2('0x8')]&&config[_0x62f2('0x8')][_0x62f2('0x9')]){utils[_0x62f2('0xa')](_0x62f2('0xb'));}else{var agents=require(_0x62f2('0xc'));var calls=require(_0x62f2('0xd'));var queues=require(_0x62f2('0xe'));var recordings=require('./recordings.controller');var members=require(_0x62f2('0xf'));var dials=require('./dials.controller');var transfers=require('./transfers.controller');var core=require('./core.controller');ami['on']('connect',core[_0x62f2('0x10')]);ami['on']('shutdown',core[_0x62f2('0x11')]);ami['on'](_0x62f2('0x12'),core[_0x62f2('0x12')]);ami['on'](_0x62f2('0x13'),core['error']);ami['on'](_0x62f2('0x14'),core[_0x62f2('0x14')]);ami['on'](_0x62f2('0x15'),core[_0x62f2('0x15')]);ami['on']('devicestatechange',function(_0x6d50e7){try{utils[_0x62f2('0x16')](util['format'](_0x62f2('0x17'),_0x6d50e7[_0x62f2('0x18')]),_0x6d50e7);members[_0x62f2('0x19')](_0x6d50e7);}catch(_0x240c50){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x17'),_0x6d50e7[_0x62f2('0x18')]),_0x240c50);}});ami['on'](_0x62f2('0x1b'),function(_0x483ca8){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')]('[%s][index][agentcalled]',_0x483ca8['uniqueid']),_0x483ca8);agents[_0x62f2('0x1b')](_0x483ca8);}catch(_0x2425d2){utils['error'](util[_0x62f2('0x1a')](_0x62f2('0x1c'),_0x483ca8['uniqueid']),_0x2425d2);}});ami['on'](_0x62f2('0x1d'),function(_0x1f1110){try{utils[_0x62f2('0x16')](util['format'](_0x62f2('0x1e'),_0x1f1110['uniqueid']),_0x1f1110);agents[_0x62f2('0x1d')](_0x1f1110);}catch(_0x6c2c26){utils[_0x62f2('0x13')](util['format'](_0x62f2('0x1e'),_0x1f1110[_0x62f2('0x1f')]),_0x6c2c26);}});ami['on'](_0x62f2('0x20'),function(_0x3527ad){try{utils['debug'](util['format']('[%s][index][agentconnect]',_0x3527ad[_0x62f2('0x1f')]),_0x3527ad);agents[_0x62f2('0x20')](_0x3527ad);queues[_0x62f2('0x20')](_0x3527ad);}catch(_0x156e8c){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x21'),_0x3527ad['uniqueid']),_0x156e8c);}});ami['on']('agentcomplete',function(_0x42fd90){try{utils['debug'](util[_0x62f2('0x1a')](_0x62f2('0x22'),_0x42fd90[_0x62f2('0x1f')]),_0x42fd90);agents['agentcomplete'](_0x42fd90);queues['agentcomplete'](_0x42fd90);members[_0x62f2('0x23')](_0x42fd90);}catch(_0x23f205){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x22'),_0x42fd90[_0x62f2('0x1f')]),_0x23f205);}});ami['on'](_0x62f2('0x24'),function(_0x422080){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x25'),_0x422080['uniqueid']),_0x422080);agents['queuecallerabandon'](_0x422080);queues[_0x62f2('0x24')](_0x422080);}catch(_0x23b191){utils[_0x62f2('0x13')](util['format']('[%s][index][queuecallerabandon]',_0x422080[_0x62f2('0x1f')]),_0x23b191);}});ami['on'](_0x62f2('0x26'),function(_0x2a7a97){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x27'),_0x2a7a97[_0x62f2('0x1f')]),_0x2a7a97);queues['queuecallerjoin'](_0x2a7a97);recordings[_0x62f2('0x26')](_0x2a7a97);}catch(_0x39bb68){utils['error'](util[_0x62f2('0x1a')]('[%s][index][queuecallerjoin]',_0x2a7a97['uniqueid']),_0x39bb68);}});ami['on'](_0x62f2('0x28'),function(_0x1ecc28){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x29'),_0x1ecc28['uniqueid']),_0x1ecc28);queues['queuecallerleave'](_0x1ecc28);}catch(_0x13efd1){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x29'),_0x1ecc28['uniqueid']),_0x13efd1);}});ami['on'](_0x62f2('0x2a'),function(_0x32c962){try{utils[_0x62f2('0x16')](util['format'](_0x62f2('0x2b'),_0x32c962[_0x62f2('0x1f')]),_0x32c962);queues[_0x62f2('0x2a')](_0x32c962);calls['musiconholdstart'](_0x32c962);}catch(_0x593d41){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x2b'),_0x32c962['uniqueid']),_0x593d41);}});ami['on'](_0x62f2('0x2c'),function(_0x4de7c0){try{utils['debug'](util[_0x62f2('0x1a')](_0x62f2('0x2d'),_0x4de7c0[_0x62f2('0x1f')]),_0x4de7c0);queues['musiconholdstop'](_0x4de7c0);calls[_0x62f2('0x2c')](_0x4de7c0);}catch(_0x43c33a){utils['error'](util[_0x62f2('0x1a')](_0x62f2('0x2d'),_0x4de7c0[_0x62f2('0x1f')]),_0x43c33a);}});ami['on'](_0x62f2('0x2e'),function(_0x23551f){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x2f'),_0x23551f[_0x62f2('0x1f')]),_0x23551f);calls[_0x62f2('0x2e')](_0x23551f);recordings[_0x62f2('0x2e')](_0x23551f);}catch(_0x329cd4){utils[_0x62f2('0x13')](util['format']('[%s][index][newstate]',_0x23551f[_0x62f2('0x1f')]),_0x329cd4);}});ami['on'](_0x62f2('0x30'),function(_0xb3ef48){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x31'),_0xb3ef48['uniqueid']),_0xb3ef48);calls['hangup'](_0xb3ef48);recordings[_0x62f2('0x30')](_0xb3ef48);dials['hangup'](_0xb3ef48);agents['hangup'](_0xb3ef48);queues[_0x62f2('0x30')](_0xb3ef48);}catch(_0x2e773a){utils[_0x62f2('0x13')](util['format'](_0x62f2('0x31'),_0xb3ef48[_0x62f2('0x1f')]),_0x2e773a);}});ami['on'](_0x62f2('0x32'),function(_0x40b67a){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x33'),_0x40b67a[_0x62f2('0x1f')]),_0x40b67a);members[_0x62f2('0x32')](_0x40b67a);}catch(_0x36d19b){utils[_0x62f2('0x13')](util['format']('[%s][index][cdr]',_0x40b67a[_0x62f2('0x1f')]),_0x36d19b);}});ami['on'](_0x62f2('0x34'),function(_0x4519f1){try{utils['debug'](util['format'](_0x62f2('0x35'),_0x4519f1[_0x62f2('0x1f')]),_0x4519f1);queues[_0x62f2('0x34')](_0x4519f1);agents['blindtransfer'](_0x4519f1);transfers['blindtransfer'](_0x4519f1);}catch(_0x10617f){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x35'),_0x4519f1[_0x62f2('0x1f')]),_0x10617f);}});ami['on'](_0x62f2('0x36'),function(_0xea10e0){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')]('[%s][index][attendedtransfer]',_0xea10e0[_0x62f2('0x37')]),_0xea10e0);queues[_0x62f2('0x36')](_0xea10e0);transfers[_0x62f2('0x36')](_0xea10e0);agents[_0x62f2('0x36')](_0xea10e0);calls[_0x62f2('0x36')](_0xea10e0);}catch(_0x13adc2){utils['error'](util[_0x62f2('0x1a')]('[%s][index][attendedtransfer]',_0xea10e0[_0x62f2('0x37')]),_0x13adc2);}});ami['on']('varset',function(_0x59c1a8){try{utils[_0x62f2('0x16')](util['format'](_0x62f2('0x38'),_0x59c1a8[_0x62f2('0x1f')]),_0x59c1a8);queues['varset'](_0x59c1a8);recordings[_0x62f2('0x39')](_0x59c1a8);calls[_0x62f2('0x39')](_0x59c1a8);dials[_0x62f2('0x39')](_0x59c1a8);}catch(_0x80c264){utils['error'](util['format'](_0x62f2('0x38'),_0x59c1a8[_0x62f2('0x1f')]),_0x80c264);}});ami['on'](_0x62f2('0x3a'),function(_0x7e2521){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x3b'),_0x7e2521[_0x62f2('0x1f')]),_0x7e2521);calls[_0x62f2('0x3a')](_0x7e2521);recordings[_0x62f2('0x3a')](_0x7e2521);dials[_0x62f2('0x3a')](_0x7e2521);}catch(_0x18d282){utils['error'](util[_0x62f2('0x1a')](_0x62f2('0x3b'),_0x7e2521[_0x62f2('0x1f')]),_0x18d282);}});ami['on'](_0x62f2('0x3c'),function(_0x95a986){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x3d'),_0x95a986[_0x62f2('0x1f')]),_0x95a986);calls[_0x62f2('0x3c')](_0x95a986);recordings['newchannel'](_0x95a986);}catch(_0x277cdf){utils[_0x62f2('0x13')](util[_0x62f2('0x1a')](_0x62f2('0x3d'),_0x95a986[_0x62f2('0x1f')]),_0x277cdf);}});ami['on'](_0x62f2('0x3e'),function(_0x22c106){try{utils[_0x62f2('0x16')](util[_0x62f2('0x1a')](_0x62f2('0x3f'),_0x22c106[_0x62f2('0x1f')]),_0x22c106);dials[_0x62f2('0x3e')](_0x22c106);}catch(_0x233f03){utils['error'](util[_0x62f2('0x1a')]('[%s]dialbegin',_0x22c106['uniqueid']),_0x233f03);}});ami['on']('dialend',function(_0x4231be){try{utils['debug'](util['format'](_0x62f2('0x40'),_0x4231be[_0x62f2('0x1f')]),_0x4231be);dials[_0x62f2('0x41')](_0x4231be);}catch(_0x22f9d9){utils['error'](util[_0x62f2('0x1a')](_0x62f2('0x40'),_0x4231be[_0x62f2('0x1f')]),_0x22f9d9);}});}
\ No newline at end of file
+var _0xcc2a=['newexten','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','[%s][index][dialend]','dialend','asterisk-manager','../../config/environment','./utils','util','asterisk','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','format','[%s][index][devicestatechange]','device','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','[%s][index][newexten]'];(function(_0xe9763,_0x17b50a){var _0xdd7297=function(_0xda0d78){while(--_0xda0d78){_0xe9763['push'](_0xe9763['shift']());}};_0xdd7297(++_0x17b50a);}(_0xcc2a,0x1a0));var _0xacc2=function(_0x19737b,_0x3397bd){_0x19737b=_0x19737b-0x0;var _0x353801=_0xcc2a[_0x19737b];return _0x353801;};var AsteriskManager=require(_0xacc2('0x0'));var config=require(_0xacc2('0x1'));var utils=require(_0xacc2('0x2'));var util=require(_0xacc2('0x3'));var ami=new AsteriskManager(config['asterisk']['port'],config[_0xacc2('0x4')]['ip'],config[_0xacc2('0x4')]['username'],config['asterisk'][_0xacc2('0x5')],!![]);ami[_0xacc2('0x6')]();if(config[_0xacc2('0x7')]&&config['xdr'][_0xacc2('0x8')]){utils[_0xacc2('0x9')](_0xacc2('0xa'));}else{var agents=require(_0xacc2('0xb'));var calls=require(_0xacc2('0xc'));var queues=require(_0xacc2('0xd'));var recordings=require(_0xacc2('0xe'));var members=require(_0xacc2('0xf'));var dials=require(_0xacc2('0x10'));var transfers=require(_0xacc2('0x11'));var core=require(_0xacc2('0x12'));ami['on'](_0xacc2('0x13'),core['connect']);ami['on'](_0xacc2('0x14'),core[_0xacc2('0x14')]);ami['on'](_0xacc2('0x15'),core[_0xacc2('0x15')]);ami['on'](_0xacc2('0x16'),core[_0xacc2('0x16')]);ami['on'](_0xacc2('0x17'),core[_0xacc2('0x17')]);ami['on'](_0xacc2('0x18'),core[_0xacc2('0x18')]);ami['on']('devicestatechange',function(_0x16f659){try{utils['debug'](util[_0xacc2('0x19')](_0xacc2('0x1a'),_0x16f659[_0xacc2('0x1b')]),_0x16f659);members['devicestatechange'](_0x16f659);}catch(_0x107178){utils['error'](util['format'](_0xacc2('0x1a'),_0x16f659[_0xacc2('0x1b')]),_0x107178);}});ami['on']('agentcalled',function(_0x1f0f30){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x1d'),_0x1f0f30[_0xacc2('0x1e')]),_0x1f0f30);agents['agentcalled'](_0x1f0f30);}catch(_0x41e87f){utils[_0xacc2('0x16')](util['format'](_0xacc2('0x1d'),_0x1f0f30[_0xacc2('0x1e')]),_0x41e87f);}});ami['on'](_0xacc2('0x1f'),function(_0x1b8071){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x20'),_0x1b8071[_0xacc2('0x1e')]),_0x1b8071);agents[_0xacc2('0x1f')](_0x1b8071);}catch(_0x5c2a8b){utils[_0xacc2('0x16')](util[_0xacc2('0x19')]('[%s][index][agentringnoanswer]',_0x1b8071[_0xacc2('0x1e')]),_0x5c2a8b);}});ami['on']('agentconnect',function(_0x671968){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')]('[%s][index][agentconnect]',_0x671968[_0xacc2('0x1e')]),_0x671968);agents['agentconnect'](_0x671968);queues[_0xacc2('0x21')](_0x671968);}catch(_0x53611e){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x22'),_0x671968[_0xacc2('0x1e')]),_0x53611e);}});ami['on'](_0xacc2('0x23'),function(_0x5e1523){try{utils['debug'](util[_0xacc2('0x19')](_0xacc2('0x24'),_0x5e1523[_0xacc2('0x1e')]),_0x5e1523);agents[_0xacc2('0x23')](_0x5e1523);queues[_0xacc2('0x23')](_0x5e1523);members['agentcomplete'](_0x5e1523);}catch(_0x16c780){utils['error'](util['format'](_0xacc2('0x24'),_0x5e1523['uniqueid']),_0x16c780);}});ami['on'](_0xacc2('0x25'),function(_0x4454e2){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x26'),_0x4454e2[_0xacc2('0x1e')]),_0x4454e2);agents[_0xacc2('0x25')](_0x4454e2);queues['queuecallerabandon'](_0x4454e2);}catch(_0x337cac){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x26'),_0x4454e2[_0xacc2('0x1e')]),_0x337cac);}});ami['on']('queuecallerjoin',function(_0x2ee317){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x27'),_0x2ee317['uniqueid']),_0x2ee317);queues[_0xacc2('0x28')](_0x2ee317);recordings[_0xacc2('0x28')](_0x2ee317);}catch(_0xd802fb){utils['error'](util[_0xacc2('0x19')](_0xacc2('0x27'),_0x2ee317['uniqueid']),_0xd802fb);}});ami['on'](_0xacc2('0x29'),function(_0x2e0d0c){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x2a'),_0x2e0d0c['uniqueid']),_0x2e0d0c);queues[_0xacc2('0x29')](_0x2e0d0c);}catch(_0x1d8911){utils['error'](util[_0xacc2('0x19')](_0xacc2('0x2a'),_0x2e0d0c[_0xacc2('0x1e')]),_0x1d8911);}});ami['on'](_0xacc2('0x2b'),function(_0x403bf5){try{utils[_0xacc2('0x1c')](util['format'](_0xacc2('0x2c'),_0x403bf5['uniqueid']),_0x403bf5);queues[_0xacc2('0x2b')](_0x403bf5);calls[_0xacc2('0x2b')](_0x403bf5);}catch(_0x5c34de){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x2c'),_0x403bf5[_0xacc2('0x1e')]),_0x5c34de);}});ami['on'](_0xacc2('0x2d'),function(_0x4e5dea){try{utils['debug'](util[_0xacc2('0x19')](_0xacc2('0x2e'),_0x4e5dea[_0xacc2('0x1e')]),_0x4e5dea);queues['musiconholdstop'](_0x4e5dea);calls[_0xacc2('0x2d')](_0x4e5dea);}catch(_0x4f7598){utils['error'](util[_0xacc2('0x19')](_0xacc2('0x2e'),_0x4e5dea[_0xacc2('0x1e')]),_0x4f7598);}});ami['on']('newstate',function(_0x59a3bd){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x2f'),_0x59a3bd[_0xacc2('0x1e')]),_0x59a3bd);calls['newstate'](_0x59a3bd);recordings[_0xacc2('0x30')](_0x59a3bd);}catch(_0x21cf8e){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x2f'),_0x59a3bd[_0xacc2('0x1e')]),_0x21cf8e);}});ami['on']('hangup',function(_0x3bc380){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x31'),_0x3bc380[_0xacc2('0x1e')]),_0x3bc380);calls[_0xacc2('0x32')](_0x3bc380);recordings['hangup'](_0x3bc380);dials[_0xacc2('0x32')](_0x3bc380);agents[_0xacc2('0x32')](_0x3bc380);queues[_0xacc2('0x32')](_0x3bc380);}catch(_0x503ee7){utils[_0xacc2('0x16')](util['format'](_0xacc2('0x31'),_0x3bc380[_0xacc2('0x1e')]),_0x503ee7);}});ami['on'](_0xacc2('0x33'),function(_0x4150d4){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')]('[%s][index][cdr]',_0x4150d4[_0xacc2('0x1e')]),_0x4150d4);members[_0xacc2('0x33')](_0x4150d4);}catch(_0x4a3b0d){utils['error'](util[_0xacc2('0x19')](_0xacc2('0x34'),_0x4150d4[_0xacc2('0x1e')]),_0x4a3b0d);}});ami['on']('blindtransfer',function(_0x2c2ba5){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')]('[%s][index][blindtransfer]',_0x2c2ba5[_0xacc2('0x1e')]),_0x2c2ba5);queues[_0xacc2('0x35')](_0x2c2ba5);agents['blindtransfer'](_0x2c2ba5);transfers[_0xacc2('0x35')](_0x2c2ba5);}catch(_0x1fc822){utils['error'](util[_0xacc2('0x19')]('[%s][index][blindtransfer]',_0x2c2ba5[_0xacc2('0x1e')]),_0x1fc822);}});ami['on'](_0xacc2('0x36'),function(_0x49ab33){try{utils['debug'](util[_0xacc2('0x19')](_0xacc2('0x37'),_0x49ab33[_0xacc2('0x38')]),_0x49ab33);queues[_0xacc2('0x36')](_0x49ab33);transfers[_0xacc2('0x36')](_0x49ab33);agents[_0xacc2('0x36')](_0x49ab33);calls[_0xacc2('0x36')](_0x49ab33);}catch(_0xd1a64f){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x37'),_0x49ab33[_0xacc2('0x38')]),_0xd1a64f);}});ami['on'](_0xacc2('0x39'),function(_0xb8fed6){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x3a'),_0xb8fed6['uniqueid']),_0xb8fed6);queues[_0xacc2('0x39')](_0xb8fed6);recordings['varset'](_0xb8fed6);calls[_0xacc2('0x39')](_0xb8fed6);dials[_0xacc2('0x39')](_0xb8fed6);}catch(_0x585962){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x3a'),_0xb8fed6['uniqueid']),_0x585962);}});ami['on']('newexten',function(_0x2a531b){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x3b'),_0x2a531b[_0xacc2('0x1e')]),_0x2a531b);calls[_0xacc2('0x3c')](_0x2a531b);recordings[_0xacc2('0x3c')](_0x2a531b);dials[_0xacc2('0x3c')](_0x2a531b);}catch(_0x4fdd3){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x3b'),_0x2a531b[_0xacc2('0x1e')]),_0x4fdd3);}});ami['on'](_0xacc2('0x3d'),function(_0x16367b){try{utils[_0xacc2('0x1c')](util['format']('[%s][index][newchannel]',_0x16367b[_0xacc2('0x1e')]),_0x16367b);calls[_0xacc2('0x3d')](_0x16367b);recordings[_0xacc2('0x3d')](_0x16367b);}catch(_0x22ec7c){utils['error'](util['format'](_0xacc2('0x3e'),_0x16367b[_0xacc2('0x1e')]),_0x22ec7c);}});ami['on'](_0xacc2('0x3f'),function(_0x337910){try{utils[_0xacc2('0x1c')](util[_0xacc2('0x19')](_0xacc2('0x40'),_0x337910[_0xacc2('0x1e')]),_0x337910);dials[_0xacc2('0x3f')](_0x337910);}catch(_0x241036){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x41'),_0x337910[_0xacc2('0x1e')]),_0x241036);}});ami['on']('dialend',function(_0x50f9be){try{utils['debug'](util[_0xacc2('0x19')](_0xacc2('0x42'),_0x50f9be[_0xacc2('0x1e')]),_0x50f9be);dials[_0xacc2('0x43')](_0x50f9be);}catch(_0x5a4518){utils[_0xacc2('0x16')](util[_0xacc2('0x19')](_0xacc2('0x42'),_0x50f9be['uniqueid']),_0x5a4518);}});}
\ No newline at end of file
index d5691b7..06c4a05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6684=['Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','membername','type','interface','getUserByInterface','then','name','internal','request','CreateMemberReport','getUserByName','catch','error','[%s][members][writeDB]','startsWith','devicestatechange','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','now','agent','NOT_INUSE','exitAt','duration','[%s][members][devicestatechange]','agentcomplete','isNil','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','data2','source','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','split','data1','data3','[%s][members][cdr]','lodash','Local/_attended@transfer'];(function(_0x45ba45,_0x1a1afe){var _0x2bfb80=function(_0x325dce){while(--_0x325dce){_0x45ba45['push'](_0x45ba45['shift']());}};_0x2bfb80(++_0x1a1afe);}(_0x6684,0x196));var _0x4668=function(_0x36bf88,_0x15c459){_0x36bf88=_0x36bf88-0x0;var _0x332914=_0x6684[_0x36bf88];return _0x332914;};'use strict';var _=require(_0x4668('0x0'));var util=require('util');var utils=require('./utils');var members={};var exclude=[_0x4668('0x1'),_0x4668('0x2')];function writeDB(_0x520629){utils[_0x4668('0x3')](util[_0x4668('0x4')](_0x4668('0x5'),_0x520629[_0x4668('0x6')],_0x520629['interface'],_0x520629[_0x4668('0x7')],_0x520629['data2'],_0x520629[_0x4668('0x8')],_0x520629[_0x4668('0x9')]));if(_0x520629[_0x4668('0xa')]){utils[_0x4668('0xb')](_0x520629[_0x4668('0xa')])[_0x4668('0xc')](function(_0x3a6bfe){if(_0x3a6bfe){_0x520629['membername']=_0x3a6bfe[_0x4668('0xd')];_0x520629[_0x4668('0xe')]=_0x3a6bfe[_0x4668('0xe')];utils[_0x4668('0xf')](_0x4668('0x10'),_0x520629);}else{utils[_0x4668('0x11')](_0x520629['interface']['split']('/')[0x1])[_0x4668('0xc')](function(_0x4c2eb7){if(_0x4c2eb7){_0x520629[_0x4668('0x8')]=_0x4c2eb7['name'];_0x520629[_0x4668('0xe')]=_0x4c2eb7[_0x4668('0xe')];utils[_0x4668('0xf')](_0x4668('0x10'),_0x520629);}});}})[_0x4668('0x12')](function(_0x1223b2){utils[_0x4668('0x13')](util['format'](_0x4668('0x14'),_0x520629[_0x4668('0x6')]),_0x1223b2);});}delete members[_0x520629[_0x4668('0xa')]];}function startsWith(_0x4f20a9,_0x420410){return _['some'](_0x4f20a9,function(_0x216b90){return _[_0x4668('0x15')](_0x420410,_0x216b90);});}exports[_0x4668('0x16')]=function(_0x546409){try{utils[_0x4668('0x17')](util[_0x4668('0x4')]('[%s][members][devicestatechange]',members[_0x546409[_0x4668('0x18')]]?members[_0x546409[_0x4668('0x18')]]['uniqueid']:_0x546409[_0x4668('0x18')]),_0x546409);utils[_0x4668('0x3')](util['format'](_0x4668('0x19'),members[_0x546409[_0x4668('0x18')]]?members[_0x546409[_0x4668('0x18')]][_0x4668('0x6')]:_0x546409[_0x4668('0x18')],_0x546409[_0x4668('0x1a')],_0x546409[_0x4668('0x18')]));switch(_0x546409[_0x4668('0x1a')]){case'INUSE':case _0x4668('0x1b'):if(!startsWith(exclude,_0x546409[_0x4668('0x18')])){members[_0x546409[_0x4668('0x18')]]={'channel':_0x4668('0x1c'),'interface':_0x546409[_0x4668('0x18')],'type':_0x4668('0x1d'),'enterAt':utils[_0x4668('0x1e')](),'role':_0x4668('0x1f')};}break;case _0x4668('0x20'):if(!_['isNil'](members[_0x546409['device']])){members[_0x546409[_0x4668('0x18')]][_0x4668('0x21')]=utils['now']();members[_0x546409[_0x4668('0x18')]][_0x4668('0x22')]=utils['diffTime'](members[_0x546409['device']][_0x4668('0x21')],members[_0x546409[_0x4668('0x18')]]['enterAt']);if(members[_0x546409[_0x4668('0x18')]][_0x4668('0x6')]){writeDB(members[_0x546409[_0x4668('0x18')]]);}}break;default:break;}}catch(_0x3f6657){utils[_0x4668('0x13')](util[_0x4668('0x4')](_0x4668('0x23'),members[_0x546409[_0x4668('0x18')]]?members[_0x546409['device']][_0x4668('0x6')]:_0x546409['device']),_0x3f6657);}};exports[_0x4668('0x24')]=function(_0x587256){try{if(!_[_0x4668('0x25')](members[_0x587256[_0x4668('0xa')]])){utils[_0x4668('0x17')](util[_0x4668('0x4')](_0x4668('0x26'),_0x587256['uniqueid']),_0x587256);utils['info'](util[_0x4668('0x4')](_0x4668('0x27'),_0x587256[_0x4668('0x6')],_0x587256['interface'],_0x587256[_0x4668('0x28')]));members[_0x587256[_0x4668('0xa')]]=_[_0x4668('0x29')](members[_0x587256['interface']],{'data4':_0x587256['queue'],'uniqueid':_0x587256[_0x4668('0x6')]});}}catch(_0x5a7b17){utils[_0x4668('0x13')](util[_0x4668('0x4')](_0x4668('0x26'),_0x587256[_0x4668('0x6')]),_0x5a7b17);}};exports[_0x4668('0x2a')]=function(_0xb4f6f9){try{utils[_0x4668('0x17')](util[_0x4668('0x4')]('[%s][members][cdr]',_0xb4f6f9[_0x4668('0x6')]),_0xb4f6f9);if(_0xb4f6f9['channel']){var _0x290e23=_0xb4f6f9['channel']['split']('-')[0x0];if(!_[_0x4668('0x25')](members[_0x290e23])){members[_0x290e23]=_[_0x4668('0x29')](members[_0x290e23],{'data1':members[_0x290e23]['data1']||_0xb4f6f9['type'],'data2':members[_0x290e23][_0x4668('0x2b')]||_0xb4f6f9[_0x4668('0x2c')],'data3':members[_0x290e23]['data3']||_0xb4f6f9[_0x4668('0x2d')],'uniqueid':members[_0x290e23][_0x4668('0x6')]||_0xb4f6f9['uniqueid']});utils[_0x4668('0x3')](util[_0x4668('0x4')](_0x4668('0x2e'),_0xb4f6f9[_0x4668('0x6')],members[_0x290e23]['data1'],members[_0x290e23][_0x4668('0x2b')],members[_0x290e23]['data3']));if(members[_0x290e23]['exitAt']){writeDB(members[_0x290e23]);}}}if(_0xb4f6f9['destinationchannel']){var _0x572e2e=_0xb4f6f9['destinationchannel'][_0x4668('0x2f')]('-')[0x0];if(!_[_0x4668('0x25')](members[_0x572e2e])){members[_0x572e2e]=_[_0x4668('0x29')](members[_0x572e2e],{'data1':members[_0x572e2e][_0x4668('0x30')]||_0xb4f6f9[_0x4668('0x9')],'data2':members[_0x572e2e][_0x4668('0x2b')]||_0xb4f6f9[_0x4668('0x2c')],'data3':members[_0x572e2e][_0x4668('0x31')]||_0xb4f6f9[_0x4668('0x2d')],'uniqueid':members[_0x572e2e]['uniqueid']||_0xb4f6f9[_0x4668('0x6')]});utils[_0x4668('0x3')](util[_0x4668('0x4')](_0x4668('0x2e'),_0xb4f6f9['uniqueid'],members[_0x572e2e][_0x4668('0x30')],members[_0x572e2e]['data2'],members[_0x572e2e][_0x4668('0x31')]));if(members[_0x572e2e][_0x4668('0x21')]){writeDB(members[_0x572e2e]);}}}}catch(_0x5a5a0a){utils[_0x4668('0x13')](util[_0x4668('0x4')](_0x4668('0x32'),_0xb4f6f9[_0x4668('0x6')]),_0x5a5a0a);}};
\ No newline at end of file
+var _0x0fec=['diffTime','exitAt','enterAt','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','channel','data1','type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','[%s][members][cdr]','lodash','util','./utils','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','data2','membername','then','internal','CreateMemberReport','split','name','request','error','[%s][members][writeDB]','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','uniqueid','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','agent','NOT_INUSE','isNil','now'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x0fec,0x1ca));var _0xc0fe=function(_0x1bf355,_0x293a1c){_0x1bf355=_0x1bf355-0x0;var _0x485bb5=_0x0fec[_0x1bf355];return _0x485bb5;};'use strict';var _=require(_0xc0fe('0x0'));var util=require(_0xc0fe('0x1'));var utils=require(_0xc0fe('0x2'));var members={};var exclude=['Local/_attended@transfer','Queue:'];function writeDB(_0x36377d){utils['info'](util[_0xc0fe('0x3')](_0xc0fe('0x4'),_0x36377d['uniqueid'],_0x36377d[_0xc0fe('0x5')],_0x36377d['channel'],_0x36377d[_0xc0fe('0x6')],_0x36377d[_0xc0fe('0x7')],_0x36377d['type']));if(_0x36377d['interface']){utils['getUserByInterface'](_0x36377d[_0xc0fe('0x5')])[_0xc0fe('0x8')](function(_0x1e5dd3){if(_0x1e5dd3){_0x36377d['membername']=_0x1e5dd3['name'];_0x36377d['internal']=_0x1e5dd3[_0xc0fe('0x9')];utils['request'](_0xc0fe('0xa'),_0x36377d);}else{utils['getUserByName'](_0x36377d[_0xc0fe('0x5')][_0xc0fe('0xb')]('/')[0x1])[_0xc0fe('0x8')](function(_0x6931c2){if(_0x6931c2){_0x36377d[_0xc0fe('0x7')]=_0x6931c2[_0xc0fe('0xc')];_0x36377d['internal']=_0x6931c2[_0xc0fe('0x9')];utils[_0xc0fe('0xd')]('CreateMemberReport',_0x36377d);}});}})['catch'](function(_0x512541){utils[_0xc0fe('0xe')](util[_0xc0fe('0x3')](_0xc0fe('0xf'),_0x36377d['uniqueid']),_0x512541);});}delete members[_0x36377d[_0xc0fe('0x5')]];}function startsWith(_0x46f20f,_0x5ae053){return _['some'](_0x46f20f,function(_0x1c7b1c){return _[_0xc0fe('0x10')](_0x5ae053,_0x1c7b1c);});}exports[_0xc0fe('0x11')]=function(_0x1dd571){try{utils[_0xc0fe('0x12')](util[_0xc0fe('0x3')](_0xc0fe('0x13'),members[_0x1dd571[_0xc0fe('0x14')]]?members[_0x1dd571['device']][_0xc0fe('0x15')]:_0x1dd571[_0xc0fe('0x14')]),_0x1dd571);utils[_0xc0fe('0x16')](util[_0xc0fe('0x3')](_0xc0fe('0x17'),members[_0x1dd571[_0xc0fe('0x14')]]?members[_0x1dd571[_0xc0fe('0x14')]][_0xc0fe('0x15')]:_0x1dd571['device'],_0x1dd571[_0xc0fe('0x18')],_0x1dd571[_0xc0fe('0x14')]));switch(_0x1dd571[_0xc0fe('0x18')]){case _0xc0fe('0x19'):case _0xc0fe('0x1a'):if(!startsWith(exclude,_0x1dd571[_0xc0fe('0x14')])){members[_0x1dd571[_0xc0fe('0x14')]]={'channel':_0xc0fe('0x1b'),'interface':_0x1dd571[_0xc0fe('0x14')],'type':'TALKING','enterAt':utils['now'](),'role':_0xc0fe('0x1c')};}break;case _0xc0fe('0x1d'):if(!_[_0xc0fe('0x1e')](members[_0x1dd571['device']])){members[_0x1dd571[_0xc0fe('0x14')]]['exitAt']=utils[_0xc0fe('0x1f')]();members[_0x1dd571[_0xc0fe('0x14')]]['duration']=utils[_0xc0fe('0x20')](members[_0x1dd571['device']][_0xc0fe('0x21')],members[_0x1dd571[_0xc0fe('0x14')]][_0xc0fe('0x22')]);if(members[_0x1dd571['device']][_0xc0fe('0x15')]){writeDB(members[_0x1dd571['device']]);}}break;default:break;}}catch(_0x408272){utils[_0xc0fe('0xe')](util[_0xc0fe('0x3')](_0xc0fe('0x13'),members[_0x1dd571['device']]?members[_0x1dd571[_0xc0fe('0x14')]][_0xc0fe('0x15')]:_0x1dd571[_0xc0fe('0x14')]),_0x408272);}};exports['agentcomplete']=function(_0x5c23cd){try{if(!_['isNil'](members[_0x5c23cd[_0xc0fe('0x5')]])){utils['debug'](util[_0xc0fe('0x3')](_0xc0fe('0x23'),_0x5c23cd['uniqueid']),_0x5c23cd);utils[_0xc0fe('0x16')](util['format'](_0xc0fe('0x24'),_0x5c23cd[_0xc0fe('0x15')],_0x5c23cd['interface'],_0x5c23cd[_0xc0fe('0x25')]));members[_0x5c23cd[_0xc0fe('0x5')]]=_[_0xc0fe('0x26')](members[_0x5c23cd[_0xc0fe('0x5')]],{'data4':_0x5c23cd[_0xc0fe('0x25')],'uniqueid':_0x5c23cd[_0xc0fe('0x15')]});}}catch(_0x57ee59){utils['error'](util[_0xc0fe('0x3')](_0xc0fe('0x23'),_0x5c23cd[_0xc0fe('0x15')]),_0x57ee59);}};exports[_0xc0fe('0x27')]=function(_0x249da6){try{utils[_0xc0fe('0x12')](util['format']('[%s][members][cdr]',_0x249da6[_0xc0fe('0x15')]),_0x249da6);if(_0x249da6[_0xc0fe('0x28')]){var _0x5db240=_0x249da6[_0xc0fe('0x28')][_0xc0fe('0xb')]('-')[0x0];if(!_['isNil'](members[_0x5db240])){members[_0x5db240]=_[_0xc0fe('0x26')](members[_0x5db240],{'data1':members[_0x5db240][_0xc0fe('0x29')]||_0x249da6[_0xc0fe('0x2a')],'data2':members[_0x5db240][_0xc0fe('0x6')]||_0x249da6[_0xc0fe('0x2b')],'data3':members[_0x5db240][_0xc0fe('0x2c')]||_0x249da6[_0xc0fe('0x2d')],'uniqueid':members[_0x5db240][_0xc0fe('0x15')]||_0x249da6[_0xc0fe('0x15')]});utils[_0xc0fe('0x16')](util[_0xc0fe('0x3')](_0xc0fe('0x2e'),_0x249da6[_0xc0fe('0x15')],members[_0x5db240]['data1'],members[_0x5db240][_0xc0fe('0x6')],members[_0x5db240][_0xc0fe('0x2c')]));if(members[_0x5db240][_0xc0fe('0x21')]){writeDB(members[_0x5db240]);}}}if(_0x249da6['destinationchannel']){var _0x1ce699=_0x249da6[_0xc0fe('0x2f')][_0xc0fe('0xb')]('-')[0x0];if(!_[_0xc0fe('0x1e')](members[_0x1ce699])){members[_0x1ce699]=_[_0xc0fe('0x26')](members[_0x1ce699],{'data1':members[_0x1ce699][_0xc0fe('0x29')]||_0x249da6[_0xc0fe('0x2a')],'data2':members[_0x1ce699][_0xc0fe('0x6')]||_0x249da6[_0xc0fe('0x2b')],'data3':members[_0x1ce699][_0xc0fe('0x2c')]||_0x249da6[_0xc0fe('0x2d')],'uniqueid':members[_0x1ce699][_0xc0fe('0x15')]||_0x249da6[_0xc0fe('0x15')]});utils['info'](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x249da6['uniqueid'],members[_0x1ce699]['data1'],members[_0x1ce699][_0xc0fe('0x6')],members[_0x1ce699][_0xc0fe('0x2c')]));if(members[_0x1ce699][_0xc0fe('0x21')]){writeDB(members[_0x1ce699]);}}}}catch(_0x5be64a){utils[_0xc0fe('0xe')](util[_0xc0fe('0x3')](_0xc0fe('0x30'),_0x249da6[_0xc0fe('0x15')]),_0x5be64a);}};
\ No newline at end of file
index 07da83e..22b7bb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f3d=['lastAssignedTo','accountcode','getVoiceQueueByName','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','now','error','[%s][queues][queuecallerjoin]','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','queuecallerexitreason','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','variable','queuestatus','value','toUpperCase','CONTINUE','isNil','queuecallerabandonAt','queuecallerexitAt','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','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','queuecallerleave','holdtime','diffTime','queuecallerjoinAt','count','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','queuecallercomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','clone','transfertargetuniqueid','calleridnum','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','info','uniqueid','queue'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x4f3d,0xcb));var _0xd4f3=function(_0x5aaa99,_0x334f7c){_0x5aaa99=_0x5aaa99-0x0;var _0x653985=_0x4f3d[_0x5aaa99];return _0x653985;};'use strict';var _=require('lodash');var util=require('util');var utils=require('./utils');var queues={};function writeDB(_0x39715c){utils[_0xd4f3('0x0')](util['format']('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x39715c[_0xd4f3('0x1')],_0x39715c['channel'],_0x39715c[_0xd4f3('0x2')],_0x39715c[_0xd4f3('0x3')],_0x39715c['calleridnum'],_0x39715c[_0xd4f3('0x4')],_0x39715c['queuecallerexitreason']));if(_0x39715c[_0xd4f3('0x2')]){utils[_0xd4f3('0x5')](_0x39715c[_0xd4f3('0x2')])['then'](function(_0x161570){if(_0x161570){_0x39715c[_0xd4f3('0x6')]=_0x161570[_0xd4f3('0x6')];}utils[_0xd4f3('0x7')](_0xd4f3('0x8'),_0x39715c);});}else{utils[_0xd4f3('0x7')](_0xd4f3('0x8'),_0x39715c);}if(_0x39715c[_0xd4f3('0x9')]){delete queues[_0x39715c[_0xd4f3('0x9')]];}else{delete queues[_0x39715c['uniqueid']];}}exports[_0xd4f3('0xa')]=function(_0x4d0f92){try{utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')]('[%s][queues][queuecallerjoin]',_0x4d0f92[_0xd4f3('0x1')]),_0x4d0f92);utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0xd'),_0x4d0f92[_0xd4f3('0x1')],_0x4d0f92[_0xd4f3('0x2')],_0x4d0f92[_0xd4f3('0xe')]));queues[_0x4d0f92[_0xd4f3('0x1')]]=_['assign'](_0x4d0f92,{'originalposition':_0x4d0f92[_0xd4f3('0xe')],'queuecallerjoinAt':utils[_0xd4f3('0xf')](),'mohtime':0x0});}catch(_0x1223da){utils[_0xd4f3('0x10')](util['format'](_0xd4f3('0x11'),_0x4d0f92[_0xd4f3('0x1')]),_0x1223da);}};exports[_0xd4f3('0x12')]=function(_0x487ea1){try{if(!_['isNil'](queues[_0x487ea1[_0xd4f3('0x1')]])){utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')](_0xd4f3('0x13'),_0x487ea1[_0xd4f3('0x1')]),_0x487ea1);if(queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x14')]){if(!queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x15')]&&!queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x16')]){queues[_0x487ea1[_0xd4f3('0x1')]]['queuecallercomplete']=!![];queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x17')]=utils[_0xd4f3('0xf')]();queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x18')]='COMPLETEDBYAGENT';}utils['info'](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x487ea1[_0xd4f3('0x1')],queues[_0x487ea1[_0xd4f3('0x1')]]['name'],queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x18')]));writeDB(queues[_0x487ea1[_0xd4f3('0x1')]]);}else if(queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x9')]){utils['info'](util[_0xd4f3('0xc')](_0xd4f3('0x19'),_0x487ea1[_0xd4f3('0x1')],queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x1a')],queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x9')]));queues[queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x9')]]=queues[_0x487ea1[_0xd4f3('0x1')]];queues[queues[_0x487ea1[_0xd4f3('0x1')]][_0xd4f3('0x9')]][_0xd4f3('0x1b')]=0x2;delete queues[_0x487ea1[_0xd4f3('0x1')]];}}}catch(_0x1eabc5){utils[_0xd4f3('0x10')](util[_0xd4f3('0xc')]('[%s][queues][hangup]',_0x487ea1[_0xd4f3('0x1')]),_0x1eabc5);}};exports['varset']=function(_0xc476e5){try{utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')]('[%s][queues][varset]',_0xc476e5[_0xd4f3('0x1')]),_0xc476e5);if(!_['isNil'](_0xc476e5[_0xd4f3('0x1c')][_0xd4f3('0x1d')])&&_0xc476e5[_0xd4f3('0x1e')][_0xd4f3('0x1f')]()!==_0xd4f3('0x20')){if(!_[_0xd4f3('0x21')](queues[_0xc476e5[_0xd4f3('0x1')]])){queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x15')]=![];queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x22')]=null;queues[_0xc476e5['uniqueid']][_0xd4f3('0x16')]=!![];queues[_0xc476e5[_0xd4f3('0x1')]]['queuecallerexitAt']=utils[_0xd4f3('0xf')]();queues[_0xc476e5[_0xd4f3('0x1')]]['queuecallerexitreason']=_0xc476e5[_0xd4f3('0x1e')][_0xd4f3('0x1f')]();utils['info'](util[_0xd4f3('0xc')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0xc476e5[_0xd4f3('0x1')],queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x1a')],_0xc476e5[_0xd4f3('0x1e')],queues[_0xc476e5['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0xc476e5[_0xd4f3('0x1')]]);}}else if(!_[_0xd4f3('0x21')](_0xc476e5[_0xd4f3('0x1c')]['queueposition'])){if(!_[_0xd4f3('0x21')](queues[_0xc476e5['uniqueid']])&&!queues[_0xc476e5[_0xd4f3('0x1')]]['queuecallerabandon']){queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x15')]=![];queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x22')]=null;queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x16')]=!![];queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x23')]=utils[_0xd4f3('0xf')]();queues[_0xc476e5['uniqueid']][_0xd4f3('0x18')]=_0xd4f3('0x24');utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x25'),_0xc476e5[_0xd4f3('0x1')],queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x1a')],_0xc476e5['value'],queues[_0xc476e5[_0xd4f3('0x1')]][_0xd4f3('0x18')]));}}}catch(_0x4b31ec){utils[_0xd4f3('0x10')](util[_0xd4f3('0xc')](_0xd4f3('0x26'),_0xc476e5[_0xd4f3('0x1')]),_0x4b31ec);}};exports[_0xd4f3('0x15')]=function(_0x4f3a58){try{if(!_['isNil'](queues[_0x4f3a58[_0xd4f3('0x1')]])){utils['debug'](util[_0xd4f3('0xc')](_0xd4f3('0x27'),_0x4f3a58[_0xd4f3('0x1')]),_0x4f3a58);queues[_0x4f3a58['uniqueid']][_0xd4f3('0x16')]=![];queues[_0x4f3a58[_0xd4f3('0x1')]]['queuecallerexitAt']=null;queues[_0x4f3a58[_0xd4f3('0x1')]][_0xd4f3('0x15')]=!![];queues[_0x4f3a58['uniqueid']]['queuecallerabandonAt']=utils[_0xd4f3('0xf')]();queues[_0x4f3a58['uniqueid']][_0xd4f3('0x18')]=_0xd4f3('0x28');utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x29'),_0x4f3a58[_0xd4f3('0x1')],queues[_0x4f3a58[_0xd4f3('0x1')]]['name'],queues[_0x4f3a58[_0xd4f3('0x1')]][_0xd4f3('0x18')]));}}catch(_0x41e4d3){utils[_0xd4f3('0x10')](util[_0xd4f3('0xc')](_0xd4f3('0x27'),_0x4f3a58['uniqueid']),_0x41e4d3);}};exports['queuecallerleave']=function(_0xaa8f86){try{if(!_[_0xd4f3('0x21')](queues[_0xaa8f86[_0xd4f3('0x1')]])){utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')]('[%s][queues][queuecallerleave]',_0xaa8f86[_0xd4f3('0x1')]),_0xaa8f86);utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x2a'),_0xaa8f86[_0xd4f3('0x1')],queues[_0xaa8f86[_0xd4f3('0x1')]]['name'],_0xaa8f86[_0xd4f3('0x2b')],_0xaa8f86[_0xd4f3('0x2c')]));queues[_0xaa8f86[_0xd4f3('0x1')]][_0xd4f3('0x2d')]=!![];queues[_0xaa8f86[_0xd4f3('0x1')]][_0xd4f3('0x14')]=utils[_0xd4f3('0xf')]();queues[_0xaa8f86[_0xd4f3('0x1')]][_0xd4f3('0x2e')]=utils[_0xd4f3('0x2f')](queues[_0xaa8f86['uniqueid']][_0xd4f3('0x14')],queues[_0xaa8f86['uniqueid']][_0xd4f3('0x30')]);queues[_0xaa8f86['uniqueid']][_0xd4f3('0xe')]=_0xaa8f86[_0xd4f3('0xe')];queues[_0xaa8f86['uniqueid']][_0xd4f3('0x31')]=_0xaa8f86[_0xd4f3('0x31')];queues[_0xaa8f86[_0xd4f3('0x1')]]['connectedlinenum']=_0xaa8f86[_0xd4f3('0x2b')];queues[_0xaa8f86[_0xd4f3('0x1')]][_0xd4f3('0x2c')]=_0xaa8f86['connectedlinename'];}}catch(_0x38c74d){utils['error'](util[_0xd4f3('0xc')](_0xd4f3('0x32'),_0xaa8f86[_0xd4f3('0x1')]),_0x38c74d);}};exports[_0xd4f3('0x33')]=function(_0x3dfb6e){try{if(!_['isNil'](queues[_0x3dfb6e[_0xd4f3('0x1')]])){utils[_0xd4f3('0xb')](util['format'](_0xd4f3('0x34'),_0x3dfb6e['uniqueid']),_0x3dfb6e);utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x35'),_0x3dfb6e['uniqueid'],queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x1a')],_0x3dfb6e[_0xd4f3('0x36')],_0x3dfb6e[_0xd4f3('0x37')]));queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x15')]=![];queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x15')]=![];queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x22')]=null;queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x16')]=![];queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x18')]=null;queues[_0x3dfb6e['uniqueid']]['queuecallerexitAt']=null;queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x38')]=!![];queues[_0x3dfb6e[_0xd4f3('0x1')]]['accountcode']=_0x3dfb6e[_0xd4f3('0x37')];queues[_0x3dfb6e[_0xd4f3('0x1')]][_0xd4f3('0x3')]=_0x3dfb6e[_0xd4f3('0x36')];}}catch(_0x1fda53){utils['error'](util['format'](_0xd4f3('0x34'),_0x3dfb6e[_0xd4f3('0x1')]),_0x1fda53);}};exports[_0xd4f3('0x39')]=function(_0x1c988a){try{if(!_[_0xd4f3('0x21')](queues[_0x1c988a[_0xd4f3('0x1')]])){if(queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x14')]){utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')](_0xd4f3('0x3a'),_0x1c988a[_0xd4f3('0x1')]),_0x1c988a);queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x15')]=![];queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x15')]=![];queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x22')]=null;queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x16')]=![];queues[_0x1c988a['uniqueid']][_0xd4f3('0x23')]=null;queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x38')]=!![];queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x3')]=_0x1c988a[_0xd4f3('0x36')];queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x3b')]=!![];queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x17')]=utils[_0xd4f3('0xf')]();if(_0x1c988a[_0xd4f3('0x3c')]==_0xd4f3('0x3d')){if(!queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x3d')]){queues[_0x1c988a['uniqueid']]['queuecallerexitreason']=_0xd4f3('0x3e');}}else{queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x18')]=_0xd4f3('0x3f')+_0x1c988a[_0xd4f3('0x3c')][_0xd4f3('0x1f')]();}utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x40'),_0x1c988a[_0xd4f3('0x1')],queues[_0x1c988a[_0xd4f3('0x1')]][_0xd4f3('0x1a')],_0x1c988a[_0xd4f3('0x36')],queues[_0x1c988a['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x1c988a[_0xd4f3('0x1')]]);}}}catch(_0x2b105c){utils['error'](util[_0xd4f3('0xc')](_0xd4f3('0x3a'),_0x1c988a['uniqueid']),_0x2b105c);}};exports[_0xd4f3('0x41')]=function(_0x3c329f){try{if(!_[_0xd4f3('0x21')](queues[_0x3c329f[_0xd4f3('0x42')]])){utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')](_0xd4f3('0x43'),_0x3c329f[_0xd4f3('0x1')]),_0x3c329f);queues[_0x3c329f['transfereeuniqueid']][_0xd4f3('0x3d')]=!![];queues[_0x3c329f[_0xd4f3('0x42')]][_0xd4f3('0x44')]=_0xd4f3('0x45');queues[_0x3c329f['transfereeuniqueid']][_0xd4f3('0x46')]=_0x3c329f[_0xd4f3('0x47')];queues[_0x3c329f['transfereeuniqueid']][_0xd4f3('0x48')]=_0x3c329f[_0xd4f3('0x42')];queues[_0x3c329f[_0xd4f3('0x42')]]['queuecallerexitreason']=_0xd4f3('0x49');utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x4a'),_0x3c329f[_0xd4f3('0x1')],queues[_0x3c329f[_0xd4f3('0x42')]]['name'],_0x3c329f[_0xd4f3('0x42')],_0x3c329f['extension']));}}catch(_0x1d7149){utils[_0xd4f3('0x10')](util['format'](_0xd4f3('0x43'),_0x3c329f['uniqueid']),_0x1d7149);}};exports[_0xd4f3('0x4b')]=function(_0x59fb2e){try{utils[_0xd4f3('0xb')](util['format']('[%s][queues][attendedtransfer]',_0x59fb2e[_0xd4f3('0x4c')]),_0x59fb2e);if(_0x59fb2e['origtransfereruniqueid']==_0x59fb2e['origtransfererlinkedid']){if(!_[_0xd4f3('0x21')](queues[_0x59fb2e[_0xd4f3('0x4d')]])){utils['info'](util[_0xd4f3('0xc')](_0xd4f3('0x4e'),_0x59fb2e['origtransfereruniqueid'],queues[_0x59fb2e['secondtransfererlinkedid']]['name'],_0x59fb2e[_0xd4f3('0x4f')]));queues[_0x59fb2e[_0xd4f3('0x4d')]][_0xd4f3('0x3d')]=!![];queues[_0x59fb2e['secondtransfererlinkedid']]['transfertype']=_0xd4f3('0x50');queues[_0x59fb2e[_0xd4f3('0x4d')]][_0xd4f3('0x46')]=_0x59fb2e[_0xd4f3('0x4f')];queues[_0x59fb2e[_0xd4f3('0x4d')]][_0xd4f3('0x48')]=_0x59fb2e[_0xd4f3('0x4c')];queues[_0x59fb2e['secondtransfererlinkedid']][_0xd4f3('0x18')]=_0xd4f3('0x51');}if(!_[_0xd4f3('0x21')](queues[_0x59fb2e[_0xd4f3('0x52')]])){if(_0x59fb2e['transfereelinkedid']&&queues[_0x59fb2e['transfereelinkedid']]){queues[_0x59fb2e[_0xd4f3('0x53')]][_0xd4f3('0x1b')]=0x1;queues[_0x59fb2e[_0xd4f3('0x42')]]=_[_0xd4f3('0x54')](queues[_0x59fb2e[_0xd4f3('0x53')]]);queues[_0x59fb2e[_0xd4f3('0x42')]]['transfereduniqueid']=_0x59fb2e[_0xd4f3('0x55')];queues[_0x59fb2e['transfereeuniqueid']]['queuecallerenterreason']=0x2;queues[_0x59fb2e[_0xd4f3('0x42')]][_0xd4f3('0x56')]=queues[_0x59fb2e[_0xd4f3('0x4d')]]['calleridnum'];queues[_0x59fb2e[_0xd4f3('0x42')]][_0xd4f3('0x57')]=queues[_0x59fb2e[_0xd4f3('0x4d')]][_0xd4f3('0x57')];queues[_0x59fb2e[_0xd4f3('0x42')]][_0xd4f3('0x30')]=utils[_0xd4f3('0xf')]();queues[_0x59fb2e[_0xd4f3('0x42')]][_0xd4f3('0x14')]=utils['now']();queues[_0x59fb2e['transfereeuniqueid']]['holdtime']=0x0;queues[_0x59fb2e['transfereeuniqueid']]['mohtime']=0x0;utils['info'](util[_0xd4f3('0xc')](_0xd4f3('0x58'),_0x59fb2e['origtransfereruniqueid'],queues[_0x59fb2e['transfereeuniqueid']][_0xd4f3('0x1a')],queues[_0x59fb2e[_0xd4f3('0x42')]]['calleridnum'],queues[_0x59fb2e['transfereeuniqueid']][_0xd4f3('0x57')]));}else{utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x59'),_0x59fb2e[_0xd4f3('0x4c')],queues[_0x59fb2e[_0xd4f3('0x52')]][_0xd4f3('0x1a')],_0x59fb2e[_0xd4f3('0x4d')]));queues[_0x59fb2e[_0xd4f3('0x52')]]['transfereduniqueid']=_0x59fb2e['secondtransfererlinkedid'];}}}else if(_0x59fb2e['secondtransfereruniqueid']==_0x59fb2e[_0xd4f3('0x4d')]){if(!_[_0xd4f3('0x21')](queues[_0x59fb2e[_0xd4f3('0x52')]])){utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x5a'),_0x59fb2e['origtransfereruniqueid'],queues[_0x59fb2e[_0xd4f3('0x52')]][_0xd4f3('0x1a')],_0x59fb2e[_0xd4f3('0x5b')],_0x59fb2e[_0xd4f3('0x5c')]));queues[_0x59fb2e['origtransfererlinkedid']][_0xd4f3('0x3d')]=!![];queues[_0x59fb2e[_0xd4f3('0x52')]]['transfertype']=_0xd4f3('0x50');queues[_0x59fb2e[_0xd4f3('0x52')]][_0xd4f3('0x46')]=_0x59fb2e[_0xd4f3('0x5c')];queues[_0x59fb2e['origtransfererlinkedid']][_0xd4f3('0x48')]=_0x59fb2e[_0xd4f3('0x5b')];queues[_0x59fb2e[_0xd4f3('0x52')]][_0xd4f3('0x18')]=_0xd4f3('0x51');}if(!_[_0xd4f3('0x21')](queues[_0x59fb2e[_0xd4f3('0x4d')]])){if(_0x59fb2e[_0xd4f3('0x5d')]&&queues[_0x59fb2e[_0xd4f3('0x5d')]]){queues[_0x59fb2e[_0xd4f3('0x5d')]][_0xd4f3('0x1b')]=0x1;queues[_0x59fb2e[_0xd4f3('0x55')]]=_['clone'](queues[_0x59fb2e[_0xd4f3('0x5d')]]);queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x9')]=_0x59fb2e[_0xd4f3('0x55')];queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x1b')]=0x2;queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x56')]=queues[_0x59fb2e['origtransfererlinkedid']]['calleridnum'];queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x57')]=queues[_0x59fb2e[_0xd4f3('0x52')]][_0xd4f3('0x57')];queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x30')]=utils['now']();queues[_0x59fb2e[_0xd4f3('0x55')]]['queuecallerleaveAt']=utils[_0xd4f3('0xf')]();queues[_0x59fb2e['transfertargetuniqueid']][_0xd4f3('0x2e')]=0x0;queues[_0x59fb2e['transfertargetuniqueid']][_0xd4f3('0x5e')]=0x0;utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')](_0xd4f3('0x5f'),_0x59fb2e[_0xd4f3('0x4c')],queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x1a')],queues[_0x59fb2e[_0xd4f3('0x55')]]['transfereduniqueid'],queues[_0x59fb2e[_0xd4f3('0x55')]]['calleridnum'],queues[_0x59fb2e[_0xd4f3('0x55')]][_0xd4f3('0x57')]));}else{utils[_0xd4f3('0x0')](util[_0xd4f3('0xc')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x59fb2e[_0xd4f3('0x4c')],queues[_0x59fb2e[_0xd4f3('0x4d')]][_0xd4f3('0x1a')],_0x59fb2e[_0xd4f3('0x52')]));queues[_0x59fb2e[_0xd4f3('0x4d')]][_0xd4f3('0x9')]=_0x59fb2e[_0xd4f3('0x52')];}}}}catch(_0x378860){utils[_0xd4f3('0x10')](util[_0xd4f3('0xc')](_0xd4f3('0x60'),_0x59fb2e[_0xd4f3('0x4c')]),_0x378860);}};exports[_0xd4f3('0x61')]=function(_0x58344b){try{if(!_['isNil'](queues[_0x58344b[_0xd4f3('0x1')]])){utils['debug'](util['format'](_0xd4f3('0x62'),_0x58344b[_0xd4f3('0x1')]),_0x58344b);queues[_0x58344b['uniqueid']][_0xd4f3('0x63')]=utils['now']();utils['info'](util[_0xd4f3('0xc')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x58344b[_0xd4f3('0x1')],queues[_0x58344b[_0xd4f3('0x1')]][_0xd4f3('0x1a')],queues[_0x58344b[_0xd4f3('0x1')]]['musiconholdstartAt']));}}catch(_0x3af4ba){utils[_0xd4f3('0x10')](util[_0xd4f3('0xc')]('[%s][queues][musiconholdstart]',_0x58344b[_0xd4f3('0x1')]),_0x3af4ba);}};exports[_0xd4f3('0x64')]=function(_0xd5555d){try{if(!_[_0xd4f3('0x21')](queues[_0xd5555d[_0xd4f3('0x1')]])){if(!_[_0xd4f3('0x21')](queues[_0xd5555d[_0xd4f3('0x1')]][_0xd4f3('0x63')])){utils[_0xd4f3('0xb')](util[_0xd4f3('0xc')]('[%s][queues][musiconholdstop]',_0xd5555d[_0xd4f3('0x1')]),_0xd5555d);queues[_0xd5555d[_0xd4f3('0x1')]]['mohtime']+=utils['diffTime'](utils[_0xd4f3('0xf')](),queues[_0xd5555d[_0xd4f3('0x1')]]['musiconholdstartAt']);utils['info'](util[_0xd4f3('0xc')](_0xd4f3('0x65'),_0xd5555d[_0xd4f3('0x1')],queues[_0xd5555d['uniqueid']][_0xd4f3('0x1a')],queues[_0xd5555d[_0xd4f3('0x1')]]['mohtime']));delete queues[_0xd5555d[_0xd4f3('0x1')]][_0xd4f3('0x63')];}}}catch(_0x118c9e){utils[_0xd4f3('0x10')](util[_0xd4f3('0xc')](_0xd4f3('0x66'),_0xd5555d[_0xd4f3('0x1')]),_0x118c9e);}};
\ No newline at end of file
+var _0x2b05=['ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','transfertargetuniqueid','calleridname','queuecallerjoinAt','mohtime','[%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','ATTENDED','secondtransfererexten','transfertargetlinkedid','clone','musiconholdstartAt','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','lastAssignedTo','calleridnum','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','format','[%s][queues][queuecallerjoin]','position','assign','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','queuecallerabandonAt','queuecallerexitAt','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','queuecallerleaveAt','holdtime','count','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','accountcode','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','transferuniqueid'];(function(_0x4206f5,_0x21f338){var _0xa29cf3=function(_0x2d35d7){while(--_0x2d35d7){_0x4206f5['push'](_0x4206f5['shift']());}};_0xa29cf3(++_0x21f338);}(_0x2b05,0x76));var _0x52b0=function(_0x50e46f,_0x14b625){_0x50e46f=_0x50e46f-0x0;var _0x32d918=_0x2b05[_0x50e46f];return _0x32d918;};'use strict';var _=require('lodash');var util=require('util');var utils=require('./utils');var queues={};function writeDB(_0x4d7e5){utils[_0x52b0('0x0')](util['format'](_0x52b0('0x1'),_0x4d7e5['uniqueid'],_0x4d7e5[_0x52b0('0x2')],_0x4d7e5['queue'],_0x4d7e5[_0x52b0('0x3')],_0x4d7e5[_0x52b0('0x4')],_0x4d7e5['accountcode'],_0x4d7e5[_0x52b0('0x5')]));if(_0x4d7e5[_0x52b0('0x6')]){utils[_0x52b0('0x7')](_0x4d7e5['queue'])[_0x52b0('0x8')](function(_0x11fd76){if(_0x11fd76){_0x4d7e5[_0x52b0('0x9')]=_0x11fd76[_0x52b0('0x9')];}utils[_0x52b0('0xa')](_0x52b0('0xb'),_0x4d7e5);});}else{utils['request'](_0x52b0('0xb'),_0x4d7e5);}if(_0x4d7e5[_0x52b0('0xc')]){delete queues[_0x4d7e5[_0x52b0('0xc')]];}else{delete queues[_0x4d7e5[_0x52b0('0xd')]];}}exports[_0x52b0('0xe')]=function(_0x576347){try{utils['debug'](util[_0x52b0('0xf')](_0x52b0('0x10'),_0x576347['uniqueid']),_0x576347);utils[_0x52b0('0x0')](util[_0x52b0('0xf')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x576347[_0x52b0('0xd')],_0x576347[_0x52b0('0x6')],_0x576347[_0x52b0('0x11')]));queues[_0x576347['uniqueid']]=_[_0x52b0('0x12')](_0x576347,{'originalposition':_0x576347[_0x52b0('0x11')],'queuecallerjoinAt':utils[_0x52b0('0x13')](),'mohtime':0x0});}catch(_0xe275b4){utils[_0x52b0('0x14')](util[_0x52b0('0xf')]('[%s][queues][queuecallerjoin]',_0x576347[_0x52b0('0xd')]),_0xe275b4);}};exports[_0x52b0('0x15')]=function(_0x5e2754){try{if(!_[_0x52b0('0x16')](queues[_0x5e2754[_0x52b0('0xd')]])){utils[_0x52b0('0x17')](util[_0x52b0('0xf')](_0x52b0('0x18'),_0x5e2754[_0x52b0('0xd')]),_0x5e2754);if(queues[_0x5e2754['uniqueid']]['queuecallerleaveAt']){if(!queues[_0x5e2754[_0x52b0('0xd')]][_0x52b0('0x19')]&&!queues[_0x5e2754['uniqueid']][_0x52b0('0x1a')]){queues[_0x5e2754[_0x52b0('0xd')]][_0x52b0('0x1b')]=!![];queues[_0x5e2754[_0x52b0('0xd')]][_0x52b0('0x1c')]=utils[_0x52b0('0x13')]();queues[_0x5e2754['uniqueid']][_0x52b0('0x5')]='COMPLETEDBYAGENT';}utils[_0x52b0('0x0')](util[_0x52b0('0xf')](_0x52b0('0x1d'),_0x5e2754[_0x52b0('0xd')],queues[_0x5e2754[_0x52b0('0xd')]]['name'],queues[_0x5e2754[_0x52b0('0xd')]]['queuecallerexitreason']));writeDB(queues[_0x5e2754['uniqueid']]);}else if(queues[_0x5e2754['uniqueid']][_0x52b0('0xc')]){utils[_0x52b0('0x0')](util[_0x52b0('0xf')](_0x52b0('0x1e'),_0x5e2754['uniqueid'],queues[_0x5e2754[_0x52b0('0xd')]][_0x52b0('0x1f')],queues[_0x5e2754[_0x52b0('0xd')]]['transfereduniqueid']));queues[queues[_0x5e2754[_0x52b0('0xd')]][_0x52b0('0xc')]]=queues[_0x5e2754[_0x52b0('0xd')]];queues[queues[_0x5e2754['uniqueid']][_0x52b0('0xc')]]['queuecallerenterreason']=0x2;delete queues[_0x5e2754['uniqueid']];}}}catch(_0x506fc9){utils[_0x52b0('0x14')](util[_0x52b0('0xf')]('[%s][queues][hangup]',_0x5e2754['uniqueid']),_0x506fc9);}};exports['varset']=function(_0x23a63a){try{utils[_0x52b0('0x17')](util[_0x52b0('0xf')](_0x52b0('0x20'),_0x23a63a[_0x52b0('0xd')]),_0x23a63a);if(!_[_0x52b0('0x16')](_0x23a63a[_0x52b0('0x21')][_0x52b0('0x22')])&&_0x23a63a[_0x52b0('0x23')][_0x52b0('0x24')]()!=='CONTINUE'){if(!_[_0x52b0('0x16')](queues[_0x23a63a[_0x52b0('0xd')]])){queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x19')]=![];queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x25')]=null;queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x1a')]=!![];queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x26')]=utils['now']();queues[_0x23a63a[_0x52b0('0xd')]]['queuecallerexitreason']=_0x23a63a[_0x52b0('0x23')][_0x52b0('0x24')]();utils[_0x52b0('0x0')](util[_0x52b0('0xf')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x23a63a[_0x52b0('0xd')],queues[_0x23a63a[_0x52b0('0xd')]]['name'],_0x23a63a['value'],queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x5')]));writeDB(queues[_0x23a63a[_0x52b0('0xd')]]);}}else if(!_[_0x52b0('0x16')](_0x23a63a['variable'][_0x52b0('0x27')])){if(!_['isNil'](queues[_0x23a63a[_0x52b0('0xd')]])&&!queues[_0x23a63a['uniqueid']][_0x52b0('0x19')]){queues[_0x23a63a[_0x52b0('0xd')]]['queuecallerabandon']=![];queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x25')]=null;queues[_0x23a63a[_0x52b0('0xd')]]['queuecallerexit']=!![];queues[_0x23a63a[_0x52b0('0xd')]]['queuecallerexitAt']=utils[_0x52b0('0x13')]();queues[_0x23a63a[_0x52b0('0xd')]]['queuecallerexitreason']='EXITWITHKEY';utils['info'](util[_0x52b0('0xf')](_0x52b0('0x28'),_0x23a63a[_0x52b0('0xd')],queues[_0x23a63a[_0x52b0('0xd')]]['name'],_0x23a63a[_0x52b0('0x23')],queues[_0x23a63a[_0x52b0('0xd')]][_0x52b0('0x5')]));}}}catch(_0x446f25){utils[_0x52b0('0x14')](util[_0x52b0('0xf')]('[%s][queues][varset]',_0x23a63a[_0x52b0('0xd')]),_0x446f25);}};exports['queuecallerabandon']=function(_0x1c7643){try{if(!_[_0x52b0('0x16')](queues[_0x1c7643[_0x52b0('0xd')]])){utils['debug'](util[_0x52b0('0xf')](_0x52b0('0x29'),_0x1c7643[_0x52b0('0xd')]),_0x1c7643);queues[_0x1c7643[_0x52b0('0xd')]][_0x52b0('0x1a')]=![];queues[_0x1c7643[_0x52b0('0xd')]][_0x52b0('0x26')]=null;queues[_0x1c7643[_0x52b0('0xd')]]['queuecallerabandon']=!![];queues[_0x1c7643[_0x52b0('0xd')]][_0x52b0('0x25')]=utils[_0x52b0('0x13')]();queues[_0x1c7643[_0x52b0('0xd')]]['queuecallerexitreason']=_0x52b0('0x2a');utils['info'](util[_0x52b0('0xf')](_0x52b0('0x2b'),_0x1c7643[_0x52b0('0xd')],queues[_0x1c7643[_0x52b0('0xd')]][_0x52b0('0x1f')],queues[_0x1c7643[_0x52b0('0xd')]][_0x52b0('0x5')]));}}catch(_0x47367c){utils['error'](util[_0x52b0('0xf')](_0x52b0('0x29'),_0x1c7643[_0x52b0('0xd')]),_0x47367c);}};exports[_0x52b0('0x2c')]=function(_0x1592d6){try{if(!_['isNil'](queues[_0x1592d6['uniqueid']])){utils['debug'](util[_0x52b0('0xf')](_0x52b0('0x2d'),_0x1592d6['uniqueid']),_0x1592d6);utils[_0x52b0('0x0')](util[_0x52b0('0xf')](_0x52b0('0x2e'),_0x1592d6[_0x52b0('0xd')],queues[_0x1592d6['uniqueid']]['name'],_0x1592d6[_0x52b0('0x2f')],_0x1592d6[_0x52b0('0x30')]));queues[_0x1592d6[_0x52b0('0xd')]][_0x52b0('0x2c')]=!![];queues[_0x1592d6[_0x52b0('0xd')]][_0x52b0('0x31')]=utils[_0x52b0('0x13')]();queues[_0x1592d6['uniqueid']][_0x52b0('0x32')]=utils['diffTime'](queues[_0x1592d6['uniqueid']][_0x52b0('0x31')],queues[_0x1592d6[_0x52b0('0xd')]]['queuecallerjoinAt']);queues[_0x1592d6['uniqueid']][_0x52b0('0x11')]=_0x1592d6[_0x52b0('0x11')];queues[_0x1592d6[_0x52b0('0xd')]][_0x52b0('0x33')]=_0x1592d6[_0x52b0('0x33')];queues[_0x1592d6['uniqueid']][_0x52b0('0x2f')]=_0x1592d6[_0x52b0('0x2f')];queues[_0x1592d6[_0x52b0('0xd')]]['connectedlinename']=_0x1592d6[_0x52b0('0x30')];}}catch(_0x4fb43d){utils[_0x52b0('0x14')](util[_0x52b0('0xf')](_0x52b0('0x2d'),_0x1592d6[_0x52b0('0xd')]),_0x4fb43d);}};exports[_0x52b0('0x34')]=function(_0x13b2d6){try{if(!_[_0x52b0('0x16')](queues[_0x13b2d6[_0x52b0('0xd')]])){utils['debug'](util['format']('[%s][queues][agentconnect]',_0x13b2d6[_0x52b0('0xd')]),_0x13b2d6);utils[_0x52b0('0x0')](util[_0x52b0('0xf')](_0x52b0('0x35'),_0x13b2d6[_0x52b0('0xd')],queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x1f')],_0x13b2d6[_0x52b0('0x36')],_0x13b2d6[_0x52b0('0x37')]));queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x19')]=![];queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x19')]=![];queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x25')]=null;queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x1a')]=![];queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x5')]=null;queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x26')]=null;queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x38')]=!![];queues[_0x13b2d6['uniqueid']][_0x52b0('0x39')]=_0x13b2d6[_0x52b0('0x37')];queues[_0x13b2d6[_0x52b0('0xd')]][_0x52b0('0x3')]=_0x13b2d6[_0x52b0('0x36')];}}catch(_0x3e828f){utils[_0x52b0('0x14')](util['format'](_0x52b0('0x3a'),_0x13b2d6[_0x52b0('0xd')]),_0x3e828f);}};exports['agentcomplete']=function(_0x1a554b){try{if(!_[_0x52b0('0x16')](queues[_0x1a554b['uniqueid']])){if(queues[_0x1a554b[_0x52b0('0xd')]]['queuecallerleaveAt']){utils[_0x52b0('0x17')](util[_0x52b0('0xf')](_0x52b0('0x3b'),_0x1a554b['uniqueid']),_0x1a554b);queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x19')]=![];queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x19')]=![];queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x25')]=null;queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x1a')]=![];queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x26')]=null;queues[_0x1a554b[_0x52b0('0xd')]]['assigned']=!![];queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x3')]=_0x1a554b[_0x52b0('0x36')];queues[_0x1a554b['uniqueid']][_0x52b0('0x1b')]=!![];queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x1c')]=utils[_0x52b0('0x13')]();if(_0x1a554b[_0x52b0('0x3c')]==_0x52b0('0x3d')){if(!queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x3d')]){queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x5')]=_0x52b0('0x3e');}}else{queues[_0x1a554b[_0x52b0('0xd')]]['queuecallerexitreason']=_0x52b0('0x3f')+_0x1a554b[_0x52b0('0x3c')]['toUpperCase']();}utils[_0x52b0('0x0')](util[_0x52b0('0xf')](_0x52b0('0x40'),_0x1a554b['uniqueid'],queues[_0x1a554b[_0x52b0('0xd')]]['name'],_0x1a554b[_0x52b0('0x36')],queues[_0x1a554b[_0x52b0('0xd')]][_0x52b0('0x5')]));writeDB(queues[_0x1a554b['uniqueid']]);}}}catch(_0x450a40){utils[_0x52b0('0x14')](util['format']('[%s][queues][agentcomplete]',_0x1a554b[_0x52b0('0xd')]),_0x450a40);}};exports[_0x52b0('0x41')]=function(_0x300cec){try{if(!_[_0x52b0('0x16')](queues[_0x300cec['transfereeuniqueid']])){utils[_0x52b0('0x17')](util['format'](_0x52b0('0x42'),_0x300cec['uniqueid']),_0x300cec);queues[_0x300cec['transfereeuniqueid']][_0x52b0('0x3d')]=!![];queues[_0x300cec[_0x52b0('0x43')]][_0x52b0('0x44')]=_0x52b0('0x45');queues[_0x300cec[_0x52b0('0x43')]][_0x52b0('0x46')]=_0x300cec['extension'];queues[_0x300cec[_0x52b0('0x43')]]['transferuniqueid']=_0x300cec[_0x52b0('0x43')];queues[_0x300cec[_0x52b0('0x43')]]['queuecallerexitreason']=_0x52b0('0x47');utils[_0x52b0('0x0')](util['format'](_0x52b0('0x48'),_0x300cec[_0x52b0('0xd')],queues[_0x300cec[_0x52b0('0x43')]][_0x52b0('0x1f')],_0x300cec[_0x52b0('0x43')],_0x300cec[_0x52b0('0x49')]));}}catch(_0x479ea2){utils[_0x52b0('0x14')](util[_0x52b0('0xf')](_0x52b0('0x42'),_0x300cec[_0x52b0('0xd')]),_0x479ea2);}};exports[_0x52b0('0x4a')]=function(_0x11b16e){try{utils[_0x52b0('0x17')](util[_0x52b0('0xf')]('[%s][queues][attendedtransfer]',_0x11b16e[_0x52b0('0x4b')]),_0x11b16e);if(_0x11b16e[_0x52b0('0x4b')]==_0x11b16e[_0x52b0('0x4c')]){if(!_['isNil'](queues[_0x11b16e[_0x52b0('0x4d')]])){utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x11b16e[_0x52b0('0x4b')],queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x1f')],_0x11b16e['origtransfererexten']));queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x3d')]=!![];queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x44')]='ATTENDED';queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x46')]=_0x11b16e[_0x52b0('0x4e')];queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x4f')]=_0x11b16e[_0x52b0('0x4b')];queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x5')]=_0x52b0('0x50');}if(!_[_0x52b0('0x16')](queues[_0x11b16e[_0x52b0('0x4c')]])){if(_0x11b16e[_0x52b0('0x51')]&&queues[_0x11b16e[_0x52b0('0x51')]]){queues[_0x11b16e[_0x52b0('0x51')]][_0x52b0('0x52')]=0x1;queues[_0x11b16e[_0x52b0('0x43')]]=_['clone'](queues[_0x11b16e['transfereelinkedid']]);queues[_0x11b16e[_0x52b0('0x43')]][_0x52b0('0xc')]=_0x11b16e[_0x52b0('0x53')];queues[_0x11b16e[_0x52b0('0x43')]]['queuecallerenterreason']=0x2;queues[_0x11b16e[_0x52b0('0x43')]][_0x52b0('0x4')]=queues[_0x11b16e['secondtransfererlinkedid']]['calleridnum'];queues[_0x11b16e['transfereeuniqueid']]['calleridname']=queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x54')];queues[_0x11b16e['transfereeuniqueid']][_0x52b0('0x55')]=utils[_0x52b0('0x13')]();queues[_0x11b16e[_0x52b0('0x43')]]['queuecallerleaveAt']=utils[_0x52b0('0x13')]();queues[_0x11b16e[_0x52b0('0x43')]][_0x52b0('0x32')]=0x0;queues[_0x11b16e['transfereeuniqueid']][_0x52b0('0x56')]=0x0;utils['info'](util['format'](_0x52b0('0x57'),_0x11b16e['origtransfereruniqueid'],queues[_0x11b16e['transfereeuniqueid']]['name'],queues[_0x11b16e['transfereeuniqueid']][_0x52b0('0x4')],queues[_0x11b16e['transfereeuniqueid']]['calleridname']));}else{utils[_0x52b0('0x0')](util['format'](_0x52b0('0x58'),_0x11b16e[_0x52b0('0x4b')],queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0x1f')],_0x11b16e[_0x52b0('0x4d')]));queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0xc')]=_0x11b16e[_0x52b0('0x4d')];}}}else if(_0x11b16e[_0x52b0('0x59')]==_0x11b16e[_0x52b0('0x4d')]){if(!_[_0x52b0('0x16')](queues[_0x11b16e[_0x52b0('0x4c')]])){utils[_0x52b0('0x0')](util['format'](_0x52b0('0x5a'),_0x11b16e[_0x52b0('0x4b')],queues[_0x11b16e[_0x52b0('0x4c')]]['name'],_0x11b16e[_0x52b0('0x59')],_0x11b16e['secondtransfererexten']));queues[_0x11b16e[_0x52b0('0x4c')]]['transfer']=!![];queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0x44')]=_0x52b0('0x5b');queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0x46')]=_0x11b16e[_0x52b0('0x5c')];queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0x4f')]=_0x11b16e[_0x52b0('0x59')];queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0x5')]='ATTENDEDTRANSFER';}if(!_[_0x52b0('0x16')](queues[_0x11b16e[_0x52b0('0x4d')]])){if(_0x11b16e[_0x52b0('0x5d')]&&queues[_0x11b16e[_0x52b0('0x5d')]]){queues[_0x11b16e['transfertargetlinkedid']][_0x52b0('0x52')]=0x1;queues[_0x11b16e[_0x52b0('0x53')]]=_[_0x52b0('0x5e')](queues[_0x11b16e[_0x52b0('0x5d')]]);queues[_0x11b16e[_0x52b0('0x53')]][_0x52b0('0xc')]=_0x11b16e['transfertargetuniqueid'];queues[_0x11b16e[_0x52b0('0x53')]][_0x52b0('0x52')]=0x2;queues[_0x11b16e[_0x52b0('0x53')]]['calleridnum']=queues[_0x11b16e[_0x52b0('0x4c')]][_0x52b0('0x4')];queues[_0x11b16e['transfertargetuniqueid']][_0x52b0('0x54')]=queues[_0x11b16e[_0x52b0('0x4c')]]['calleridname'];queues[_0x11b16e[_0x52b0('0x53')]][_0x52b0('0x55')]=utils[_0x52b0('0x13')]();queues[_0x11b16e[_0x52b0('0x53')]][_0x52b0('0x31')]=utils[_0x52b0('0x13')]();queues[_0x11b16e['transfertargetuniqueid']][_0x52b0('0x32')]=0x0;queues[_0x11b16e[_0x52b0('0x53')]][_0x52b0('0x56')]=0x0;utils['info'](util[_0x52b0('0xf')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x11b16e[_0x52b0('0x4b')],queues[_0x11b16e[_0x52b0('0x53')]]['name'],queues[_0x11b16e['transfertargetuniqueid']][_0x52b0('0xc')],queues[_0x11b16e['transfertargetuniqueid']]['calleridnum'],queues[_0x11b16e[_0x52b0('0x53')]]['calleridname']));}else{utils[_0x52b0('0x0')](util['format'](_0x52b0('0x58'),_0x11b16e[_0x52b0('0x4b')],queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0x1f')],_0x11b16e['origtransfererlinkedid']));queues[_0x11b16e[_0x52b0('0x4d')]][_0x52b0('0xc')]=_0x11b16e['origtransfererlinkedid'];}}}}catch(_0x37a93b){utils[_0x52b0('0x14')](util[_0x52b0('0xf')]('[%s][queues][attendedtransfer]',_0x11b16e[_0x52b0('0x4b')]),_0x37a93b);}};exports['musiconholdstart']=function(_0x3479a0){try{if(!_['isNil'](queues[_0x3479a0[_0x52b0('0xd')]])){utils[_0x52b0('0x17')](util[_0x52b0('0xf')]('[%s][queues][musiconholdstart]',_0x3479a0[_0x52b0('0xd')]),_0x3479a0);queues[_0x3479a0['uniqueid']][_0x52b0('0x5f')]=utils[_0x52b0('0x13')]();utils['info'](util[_0x52b0('0xf')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x3479a0[_0x52b0('0xd')],queues[_0x3479a0['uniqueid']]['name'],queues[_0x3479a0[_0x52b0('0xd')]][_0x52b0('0x5f')]));}}catch(_0x39ad5c){utils[_0x52b0('0x14')](util['format']('[%s][queues][musiconholdstart]',_0x3479a0['uniqueid']),_0x39ad5c);}};exports['musiconholdstop']=function(_0x3f341f){try{if(!_[_0x52b0('0x16')](queues[_0x3f341f[_0x52b0('0xd')]])){if(!_[_0x52b0('0x16')](queues[_0x3f341f[_0x52b0('0xd')]][_0x52b0('0x5f')])){utils[_0x52b0('0x17')](util[_0x52b0('0xf')](_0x52b0('0x60'),_0x3f341f[_0x52b0('0xd')]),_0x3f341f);queues[_0x3f341f['uniqueid']][_0x52b0('0x56')]+=utils[_0x52b0('0x61')](utils['now'](),queues[_0x3f341f['uniqueid']][_0x52b0('0x5f')]);utils[_0x52b0('0x0')](util[_0x52b0('0xf')](_0x52b0('0x62'),_0x3f341f[_0x52b0('0xd')],queues[_0x3f341f[_0x52b0('0xd')]][_0x52b0('0x1f')],queues[_0x3f341f[_0x52b0('0xd')]][_0x52b0('0x56')]));delete queues[_0x3f341f['uniqueid']]['musiconholdstartAt'];}}}catch(_0x1550cd){utils[_0x52b0('0x14')](util['format'](_0x52b0('0x60'),_0x3f341f[_0x52b0('0xd')]),_0x1550cd);}};
\ No newline at end of file
index 5df49c2..1c21c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x209a=['[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','replace','.wav49','.WAV','monitors','push','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','queue','lodash','./utils','info','format','[%s][recordings][writeDB]','accountcode','getUserByInternal','then','membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','uniqueid','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','error','newstate','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channel','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][newstate]','varset','variable','mixmonitor_filename'];(function(_0x2891d1,_0x2ddd3e){var _0x486948=function(_0x13fa0f){while(--_0x13fa0f){_0x2891d1['push'](_0x2891d1['shift']());}};_0x486948(++_0x2ddd3e);}(_0x209a,0x9f));var _0xa209=function(_0x37a2fd,_0x57d902){_0x37a2fd=_0x37a2fd-0x0;var _0x6f7ca9=_0x209a[_0x37a2fd];return _0x6f7ca9;};'use strict';var _=require(_0xa209('0x0'));var util=require('util');var utils=require(_0xa209('0x1'));var recordings={};function writeDB(_0x249357){utils[_0xa209('0x2')](util[_0xa209('0x3')](_0xa209('0x4'),_0x249357['uniqueid']));if(_0x249357[_0xa209('0x5')]){utils[_0xa209('0x6')](_0x249357[_0xa209('0x5')])[_0xa209('0x7')](function(_0x15ee3f){if(_0x15ee3f){_0x249357[_0xa209('0x8')]=_0x15ee3f[_0xa209('0x9')];_0x249357[_0xa209('0xa')]=_0x15ee3f['id'];}utils['request'](_0xa209('0xb'),_0x249357);});}else{utils[_0xa209('0xc')](_0xa209('0xb'),_0x249357);}}exports[_0xa209('0xd')]=function(_0x18031f){try{utils[_0xa209('0xe')](util[_0xa209('0x3')](_0xa209('0xf'),_0x18031f['uniqueid']),_0x18031f);if(_0x18031f[_0xa209('0x10')]==_0x18031f[_0xa209('0x11')]){utils[_0xa209('0x2')](util[_0xa209('0x3')](_0xa209('0x12'),_0x18031f['uniqueid'],_0x18031f[_0xa209('0x13')],_0x18031f[_0xa209('0x14')]));recordings[_0x18031f['uniqueid']]={'uniqueid':_0x18031f[_0xa209('0x10')],'accountcode':_0x18031f['accountcode'],'exten':_0x18031f['exten'],'context':_0x18031f[_0xa209('0x13')],'channel':_0x18031f['channel'],'monitors':[]};}}catch(_0x9c6321){utils[_0xa209('0x15')](util['format']('[%s][recordings][newchannel]',_0x18031f[_0xa209('0x10')]),_0x9c6321);}};exports[_0xa209('0x16')]=function(_0x4a05be){try{utils['debug'](util['format']('[%s][recordings][newstate]',_0x4a05be[_0xa209('0x10')]),_0x4a05be);if(!_[_0xa209('0x17')](recordings[_0x4a05be[_0xa209('0x10')]])&&_0x4a05be[_0xa209('0x18')]==0x6){utils[_0xa209('0x2')](util['format'](_0xa209('0x19'),_0x4a05be[_0xa209('0x10')],_0x4a05be[_0xa209('0x13')],_0x4a05be[_0xa209('0x1a')]));}else if(!_[_0xa209('0x17')](recordings[_0x4a05be['linkedid']])&&_0x4a05be['channelstate']==0x6&&_0x4a05be[_0xa209('0x13')]!=_0xa209('0x1b')){utils[_0xa209('0x2')](util['format'](_0xa209('0x1c'),_0x4a05be[_0xa209('0x10')],_0x4a05be[_0xa209('0x11')],_0x4a05be[_0xa209('0x13')],_0x4a05be[_0xa209('0x1a')]));recordings[_0x4a05be[_0xa209('0x11')]][_0xa209('0x5')]=_0x4a05be[_0xa209('0x5')];}}catch(_0x4b0df7){utils[_0xa209('0x15')](util['format'](_0xa209('0x1d'),_0x4a05be[_0xa209('0x10')]),_0x4b0df7);}};exports[_0xa209('0x1e')]=function(_0x176938){try{if(!_['isNil'](_0x176938['variable'])&&!_[_0xa209('0x17')](_0x176938[_0xa209('0x1f')][_0xa209('0x20')])){utils[_0xa209('0xe')](util['format'](_0xa209('0x21'),_0x176938[_0xa209('0x10')]),_0x176938);utils[_0xa209('0x2')](util[_0xa209('0x3')](_0xa209('0x22'),_0x176938[_0xa209('0x10')],_0x176938['variable'],_0x176938['value']));if(_[_0xa209('0x23')](_0x176938['value'],'.wav49')){_0x176938[_0xa209('0x24')]=_0x176938[_0xa209('0x24')][_0xa209('0x25')](_0xa209('0x26'),_0xa209('0x27'));}if(recordings[_0x176938[_0xa209('0x11')]]){var _0x40b497=_['find'](recordings[_0x176938[_0xa209('0x11')]][_0xa209('0x28')],{'value':_0x176938['value']});if(_['isNil'](_0x40b497)){recordings[_0x176938['linkedid']][_0xa209('0x28')][_0xa209('0x29')]({'value':_0x176938[_0xa209('0x24')]});}}}}catch(_0x1c1f30){utils[_0xa209('0x15')](util[_0xa209('0x3')](_0xa209('0x21'),_0x176938['uniqueid']),_0x1c1f30);}};exports['hangup']=function(_0xe40e7b){try{if(!_['isNil'](recordings[_0xe40e7b[_0xa209('0x10')]])){utils[_0xa209('0xe')](util[_0xa209('0x3')]('[%s][recordings][hangup]',_0xe40e7b[_0xa209('0x10')]),_0xe40e7b);utils[_0xa209('0x2')](util[_0xa209('0x3')](_0xa209('0x2a'),_0xe40e7b[_0xa209('0x10')],_0xe40e7b[_0xa209('0x2b')],_0xe40e7b[_0xa209('0x2c')],_0xe40e7b[_0xa209('0x2d')]));recordings[_0xe40e7b['uniqueid']][_0xa209('0x2b')]=_0xe40e7b[_0xa209('0x2b')];recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x2c')]=_0xe40e7b['calleridname'];recordings[_0xe40e7b['uniqueid']]['connectedlinenum']=_0xe40e7b[_0xa209('0x2e')];recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x2f')]=_0xe40e7b[_0xa209('0x2f')];if(recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x30')]==_0xa209('0x31')&&recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x5')]){recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x2e')]=recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x5')];recordings[_0xe40e7b[_0xa209('0x10')]][_0xa209('0x2f')]='';}recordings[_0xe40e7b['uniqueid']][_0xa209('0x28')]['forEach'](function(_0x23bf7b){var _0x25cc26=_['clone'](recordings[_0xe40e7b[_0xa209('0x10')]]);_0x25cc26[_0xa209('0x24')]=_0x23bf7b[_0xa209('0x24')];writeDB(_0x25cc26);});delete recordings[_0xe40e7b['uniqueid']];}}catch(_0x15e098){utils[_0xa209('0x15')](util[_0xa209('0x3')](_0xa209('0x32'),_0xe40e7b[_0xa209('0x10')]),_0x15e098);}};exports[_0xa209('0x33')]=function(_0x5acd56){try{if(!_['isNil'](recordings[_0x5acd56[_0xa209('0x10')]])){utils[_0xa209('0xe')](util[_0xa209('0x3')](_0xa209('0x34'),_0x5acd56[_0xa209('0x10')]),_0x5acd56);utils[_0xa209('0x2')](util[_0xa209('0x3')](_0xa209('0x35'),_0x5acd56['uniqueid'],_0x5acd56['application'],_0x5acd56['appdata']));if(_0x5acd56[_0xa209('0x36')][_0xa209('0x37')]()==_0xa209('0x38')&&_[_0xa209('0x39')](_0x5acd56['appdata'][_0xa209('0x37')](),_0xa209('0x3a'))){var _0x3abcb4=_0x5acd56['appdata'][_0xa209('0x3b')]('=');var _0x4089f2=_0x3abcb4[0x0][_0xa209('0x3c')](_0x3abcb4[0x0][_0xa209('0x3d')]('(')+0x1,_0x3abcb4[0x0][_0xa209('0x3d')](')'));var _0x240235=_0x3abcb4[0x1];recordings[_0x5acd56['uniqueid']][_0x4089f2]=_0x240235;}}}catch(_0x202e33){utils[_0xa209('0x15')](util[_0xa209('0x3')](_0xa209('0x34'),_0x5acd56[_0xa209('0x10')]),_0x202e33);}};exports['queuecallerjoin']=function(_0x36b17b){try{if(!_['isNil'](recordings[_0x36b17b[_0xa209('0x10')]])){utils[_0xa209('0xe')](util[_0xa209('0x3')](_0xa209('0x3e'),_0x36b17b['uniqueid']),_0x36b17b);utils[_0xa209('0x2')](util[_0xa209('0x3')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x36b17b['uniqueid'],_0x36b17b[_0xa209('0x3f')]));recordings[_0x36b17b['uniqueid']][_0xa209('0x3f')]=_0x36b17b[_0xa209('0x3f')];}}catch(_0x252ee3){utils[_0xa209('0x15')](util[_0xa209('0x3')](_0xa209('0x3e'),_0x36b17b[_0xa209('0x10')]),_0x252ee3);}};
\ No newline at end of file
+var _0x36e9=['[%s][recordings][varset]','value','.wav49','replace','.WAV','find','monitors','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','outbound','clone','newexten','[%s][recordings][newexten]','application','toLowerCase','startsWith','appdata','cdr','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','debug','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channelstate','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename'];(function(_0x46cfaf,_0x153e5b){var _0x3e18f7=function(_0x370ab7){while(--_0x370ab7){_0x46cfaf['push'](_0x46cfaf['shift']());}};_0x3e18f7(++_0x153e5b);}(_0x36e9,0x106));var _0x936e=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x36e9[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require('lodash');var util=require(_0x936e('0x0'));var utils=require(_0x936e('0x1'));var recordings={};function writeDB(_0x5f283a){utils[_0x936e('0x2')](util[_0x936e('0x3')](_0x936e('0x4'),_0x5f283a[_0x936e('0x5')]));if(_0x5f283a[_0x936e('0x6')]){utils[_0x936e('0x7')](_0x5f283a[_0x936e('0x6')])[_0x936e('0x8')](function(_0x323b0c){if(_0x323b0c){_0x5f283a[_0x936e('0x9')]=_0x323b0c['name'];_0x5f283a[_0x936e('0xa')]=_0x323b0c['id'];}utils[_0x936e('0xb')](_0x936e('0xc'),_0x5f283a);});}else{utils['request']('CreateVoiceRecording',_0x5f283a);}}exports['newchannel']=function(_0x1364d6){try{utils[_0x936e('0xd')](util[_0x936e('0x3')]('[%s][recordings][newchannel]',_0x1364d6[_0x936e('0x5')]),_0x1364d6);if(_0x1364d6[_0x936e('0x5')]==_0x1364d6[_0x936e('0xe')]){utils[_0x936e('0x2')](util[_0x936e('0x3')](_0x936e('0xf'),_0x1364d6[_0x936e('0x5')],_0x1364d6['context'],_0x1364d6[_0x936e('0x10')]));recordings[_0x1364d6['uniqueid']]={'uniqueid':_0x1364d6[_0x936e('0x5')],'accountcode':_0x1364d6['accountcode'],'exten':_0x1364d6[_0x936e('0x10')],'context':_0x1364d6[_0x936e('0x11')],'channel':_0x1364d6[_0x936e('0x12')],'monitors':[]};}}catch(_0x5b82f1){utils[_0x936e('0x13')](util[_0x936e('0x3')]('[%s][recordings][newchannel]',_0x1364d6[_0x936e('0x5')]),_0x5b82f1);}};exports['newstate']=function(_0x40c0a8){try{utils['debug'](util[_0x936e('0x3')](_0x936e('0x14'),_0x40c0a8[_0x936e('0x5')]),_0x40c0a8);if(!_[_0x936e('0x15')](recordings[_0x40c0a8[_0x936e('0x5')]])&&_0x40c0a8['channelstate']==0x6){utils['info'](util[_0x936e('0x3')](_0x936e('0x16'),_0x40c0a8[_0x936e('0x5')],_0x40c0a8[_0x936e('0x11')],_0x40c0a8['channel']));}else if(!_[_0x936e('0x15')](recordings[_0x40c0a8[_0x936e('0xe')]])&&_0x40c0a8[_0x936e('0x17')]==0x6&&_0x40c0a8[_0x936e('0x11')]!='transfer'){utils[_0x936e('0x2')](util['format'](_0x936e('0x18'),_0x40c0a8[_0x936e('0x5')],_0x40c0a8[_0x936e('0xe')],_0x40c0a8[_0x936e('0x11')],_0x40c0a8[_0x936e('0x12')]));recordings[_0x40c0a8[_0x936e('0xe')]][_0x936e('0x6')]=_0x40c0a8[_0x936e('0x6')];}}catch(_0x3289a9){utils[_0x936e('0x13')](util[_0x936e('0x3')](_0x936e('0x14'),_0x40c0a8[_0x936e('0x5')]),_0x3289a9);}};exports[_0x936e('0x19')]=function(_0x3d0169){try{if(!_[_0x936e('0x15')](_0x3d0169[_0x936e('0x1a')])&&!_[_0x936e('0x15')](_0x3d0169['variable'][_0x936e('0x1b')])){utils[_0x936e('0xd')](util[_0x936e('0x3')](_0x936e('0x1c'),_0x3d0169[_0x936e('0x5')]),_0x3d0169);utils[_0x936e('0x2')](util[_0x936e('0x3')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x3d0169[_0x936e('0x5')],_0x3d0169[_0x936e('0x1a')],_0x3d0169[_0x936e('0x1d')]));if(_['endsWith'](_0x3d0169[_0x936e('0x1d')],_0x936e('0x1e'))){_0x3d0169[_0x936e('0x1d')]=_0x3d0169['value'][_0x936e('0x1f')](_0x936e('0x1e'),_0x936e('0x20'));}if(recordings[_0x3d0169['linkedid']]){var _0x1d2739=_[_0x936e('0x21')](recordings[_0x3d0169[_0x936e('0xe')]][_0x936e('0x22')],{'value':_0x3d0169[_0x936e('0x1d')]});if(_[_0x936e('0x15')](_0x1d2739)){recordings[_0x3d0169['linkedid']][_0x936e('0x22')]['push']({'value':_0x3d0169[_0x936e('0x1d')]});}}}}catch(_0xfd4640){utils[_0x936e('0x13')](util[_0x936e('0x3')](_0x936e('0x1c'),_0x3d0169[_0x936e('0x5')]),_0xfd4640);}};exports[_0x936e('0x23')]=function(_0x13a208){try{if(!_[_0x936e('0x15')](recordings[_0x13a208[_0x936e('0x5')]])){utils[_0x936e('0xd')](util[_0x936e('0x3')](_0x936e('0x24'),_0x13a208[_0x936e('0x5')]),_0x13a208);utils[_0x936e('0x2')](util[_0x936e('0x3')](_0x936e('0x25'),_0x13a208['uniqueid'],_0x13a208[_0x936e('0x26')],_0x13a208[_0x936e('0x27')],_0x13a208[_0x936e('0x28')]));recordings[_0x13a208[_0x936e('0x5')]][_0x936e('0x26')]=_0x13a208[_0x936e('0x26')];recordings[_0x13a208['uniqueid']][_0x936e('0x27')]=_0x13a208['calleridname'];recordings[_0x13a208[_0x936e('0x5')]][_0x936e('0x29')]=_0x13a208[_0x936e('0x29')];recordings[_0x13a208[_0x936e('0x5')]][_0x936e('0x2a')]=_0x13a208[_0x936e('0x2a')];if(recordings[_0x13a208[_0x936e('0x5')]]['type']==_0x936e('0x2b')&&recordings[_0x13a208[_0x936e('0x5')]][_0x936e('0x6')]){recordings[_0x13a208[_0x936e('0x5')]][_0x936e('0x29')]=recordings[_0x13a208[_0x936e('0x5')]]['accountcode'];recordings[_0x13a208[_0x936e('0x5')]]['connectedlinename']='';}recordings[_0x13a208[_0x936e('0x5')]][_0x936e('0x22')]['forEach'](function(_0xe92d80){var _0x5380aa=_[_0x936e('0x2c')](recordings[_0x13a208['uniqueid']]);_0x5380aa[_0x936e('0x1d')]=_0xe92d80[_0x936e('0x1d')];writeDB(_0x5380aa);});delete recordings[_0x13a208['uniqueid']];}}catch(_0x4e609b){utils[_0x936e('0x13')](util[_0x936e('0x3')](_0x936e('0x24'),_0x13a208[_0x936e('0x5')]),_0x4e609b);}};exports[_0x936e('0x2d')]=function(_0x5ef400){try{if(!_[_0x936e('0x15')](recordings[_0x5ef400['uniqueid']])){utils['debug'](util[_0x936e('0x3')](_0x936e('0x2e'),_0x5ef400[_0x936e('0x5')]),_0x5ef400);utils[_0x936e('0x2')](util[_0x936e('0x3')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x5ef400[_0x936e('0x5')],_0x5ef400[_0x936e('0x2f')],_0x5ef400['appdata']));if(_0x5ef400[_0x936e('0x2f')][_0x936e('0x30')]()=='set'&&_[_0x936e('0x31')](_0x5ef400[_0x936e('0x32')][_0x936e('0x30')](),_0x936e('0x33'))){var _0x3d9b1c=_0x5ef400[_0x936e('0x32')]['split']('=');var _0x22a633=_0x3d9b1c[0x0][_0x936e('0x34')](_0x3d9b1c[0x0][_0x936e('0x35')]('(')+0x1,_0x3d9b1c[0x0]['lastIndexOf'](')'));var _0x44bbc1=_0x3d9b1c[0x1];recordings[_0x5ef400[_0x936e('0x5')]][_0x22a633]=_0x44bbc1;}}}catch(_0xfb1b98){utils[_0x936e('0x13')](util[_0x936e('0x3')](_0x936e('0x2e'),_0x5ef400['uniqueid']),_0xfb1b98);}};exports[_0x936e('0x36')]=function(_0x27df65){try{if(!_[_0x936e('0x15')](recordings[_0x27df65[_0x936e('0x5')]])){utils[_0x936e('0xd')](util[_0x936e('0x3')](_0x936e('0x37'),_0x27df65[_0x936e('0x5')]),_0x27df65);utils['info'](util[_0x936e('0x3')](_0x936e('0x38'),_0x27df65[_0x936e('0x5')],_0x27df65['queue']));recordings[_0x27df65[_0x936e('0x5')]][_0x936e('0x39')]=_0x27df65['queue'];}}catch(_0x439b39){utils[_0x936e('0x13')](util['format']('[%s][recordings][queuecallerjoin]',_0x27df65[_0x936e('0x5')]),_0x439b39);}};
\ No newline at end of file
index 62b648e..d780b88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9de0=['isNil','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','info','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','request','CreateVoiceTransferReport','blindtransfer','debug','format','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransfererexten','origtransferercontext','origtransfererexten'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x9de0,0x7c));var _0x09de=function(_0x4105f4,_0x5c172d){_0x4105f4=_0x4105f4-0x0;var _0x427718=_0x9de0[_0x4105f4];return _0x427718;};'use strict';var _=require(_0x09de('0x0'));var util=require('util');var utils=require('./utils');function writeDB(_0xbe5b99){utils[_0x09de('0x1')](util['format'](_0x09de('0x2'),_0xbe5b99[_0x09de('0x3')]===_0x09de('0x4')?_0xbe5b99[_0x09de('0x5')]:_0xbe5b99['uniqueid'],_0xbe5b99[_0x09de('0x3')]));utils[_0x09de('0x6')](_0x09de('0x7'),_0xbe5b99);}exports['blinds']={};exports[_0x09de('0x8')]=function(_0x463961){try{utils[_0x09de('0x9')](util[_0x09de('0xa')](_0x09de('0xb'),_0x463961[_0x09de('0xc')]),_0x463961);utils[_0x09de('0x1')](util['format'](_0x09de('0xd'),_0x463961[_0x09de('0xc')],_0x463961[_0x09de('0xe')],_0x463961['transferercalleridname'],_0x463961[_0x09de('0xf')],_0x463961['transfereecalleridname']));_0x463961[_0x09de('0x3')]=_0x09de('0x10');exports['blinds'][_0x463961[_0x09de('0x11')]]=_0x463961;writeDB(_0x463961);}catch(_0x10dcaf){utils[_0x09de('0x12')](util[_0x09de('0xa')](_0x09de('0xb'),_0x463961['uniqueid']),_0x10dcaf);}};exports[_0x09de('0x13')]=function(_0x37c47c){try{utils[_0x09de('0x9')](util['format'](_0x09de('0x14'),_0x37c47c[_0x09de('0x5')]),_0x37c47c);utils[_0x09de('0x1')](util[_0x09de('0xa')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x37c47c[_0x09de('0x5')],_0x37c47c[_0x09de('0x15')],_0x37c47c[_0x09de('0x16')],_0x37c47c[_0x09de('0x17')],_0x37c47c[_0x09de('0x18')]));_0x37c47c=_[_0x09de('0x19')](_0x37c47c,{'transfererchannel':_0x37c47c[_0x09de('0x1a')],'transferercalleridnum':_0x37c47c[_0x09de('0x15')],'transferercalleridname':_0x37c47c[_0x09de('0x16')],'transfererconnectedlinenum':_0x37c47c[_0x09de('0x1b')],'transfererconnectedlinename':_0x37c47c['secondtransfererconnectedlinename'],'transfereraccountcode':_0x37c47c[_0x09de('0x1c')],'transferercontext':_0x37c47c['secondtransferercontext'],'transfererexten':_0x37c47c[_0x09de('0x1d')],'transfererlinkedid':_0x37c47c['origtransfererlinkedid'],'context':_0x37c47c[_0x09de('0x1e')],'extension':_0x37c47c[_0x09de('0x1f')],'type':_0x09de('0x4')});if(_[_0x09de('0x20')](_0x37c47c['transfereechannel'])){_0x37c47c=_[_0x09de('0x19')](_0x37c47c,{'transfereechannel':_0x37c47c[_0x09de('0x21')],'transfereecalleridnum':_0x37c47c[_0x09de('0x17')],'transfereecalleridname':_0x37c47c[_0x09de('0x18')],'transfereeconnectedlinenum':_0x37c47c['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x37c47c[_0x09de('0x22')],'transfereeaccountcode':_0x37c47c[_0x09de('0x23')],'transfereecontext':_0x37c47c[_0x09de('0x24')],'transfereeexten':_0x37c47c[_0x09de('0x25')],'transfereelinkedid':_0x37c47c[_0x09de('0x26')]});}writeDB(_0x37c47c);}catch(_0x574854){utils['error'](util[_0x09de('0xa')]('[%s][transfers][attendedtransfer]',_0x37c47c[_0x09de('0x5')]),_0x574854);}};
\ No newline at end of file
+var _0xe997=['transfereecalleridname','blind','transfereruniqueid','error','[%s][transfers][attendedtransfer]','origtransfereruniqueid','info','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetcontext','transfertargetexten','transfertargetlinkedid','util','format','type','attended','CreateVoiceTransferReport','blinds','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum'];(function(_0x2300f2,_0x315c5f){var _0x6bd508=function(_0x2fa0f6){while(--_0x2fa0f6){_0x2300f2['push'](_0x2300f2['shift']());}};_0x6bd508(++_0x315c5f);}(_0xe997,0x112));var _0x7e99=function(_0x354b43,_0x15f77b){_0x354b43=_0x354b43-0x0;var _0x282303=_0xe997[_0x354b43];return _0x282303;};'use strict';var _=require('lodash');var util=require(_0x7e99('0x0'));var utils=require('./utils');function writeDB(_0x1db162){utils['info'](util[_0x7e99('0x1')]('[%s][transfers][writeDB]\x20type:%s',_0x1db162[_0x7e99('0x2')]===_0x7e99('0x3')?_0x1db162['origtransfereruniqueid']:_0x1db162['uniqueid'],_0x1db162[_0x7e99('0x2')]));utils['request'](_0x7e99('0x4'),_0x1db162);}exports[_0x7e99('0x5')]={};exports['blindtransfer']=function(_0x1eedd6){try{utils[_0x7e99('0x6')](util['format'](_0x7e99('0x7'),_0x1eedd6[_0x7e99('0x8')]),_0x1eedd6);utils['info'](util['format'](_0x7e99('0x9'),_0x1eedd6[_0x7e99('0x8')],_0x1eedd6[_0x7e99('0xa')],_0x1eedd6[_0x7e99('0xb')],_0x1eedd6[_0x7e99('0xc')],_0x1eedd6[_0x7e99('0xd')]));_0x1eedd6['type']=_0x7e99('0xe');exports[_0x7e99('0x5')][_0x1eedd6[_0x7e99('0xf')]]=_0x1eedd6;writeDB(_0x1eedd6);}catch(_0x173ae8){utils[_0x7e99('0x10')](util[_0x7e99('0x1')](_0x7e99('0x7'),_0x1eedd6[_0x7e99('0x8')]),_0x173ae8);}};exports['attendedtransfer']=function(_0x249d06){try{utils['debug'](util[_0x7e99('0x1')](_0x7e99('0x11'),_0x249d06[_0x7e99('0x12')]),_0x249d06);utils[_0x7e99('0x13')](util[_0x7e99('0x1')](_0x7e99('0x14'),_0x249d06[_0x7e99('0x12')],_0x249d06['origtransferercalleridnum'],_0x249d06[_0x7e99('0x15')],_0x249d06[_0x7e99('0x16')],_0x249d06[_0x7e99('0x17')]));_0x249d06=_[_0x7e99('0x18')](_0x249d06,{'transfererchannel':_0x249d06[_0x7e99('0x19')],'transferercalleridnum':_0x249d06[_0x7e99('0x1a')],'transferercalleridname':_0x249d06[_0x7e99('0x15')],'transfererconnectedlinenum':_0x249d06[_0x7e99('0x1b')],'transfererconnectedlinename':_0x249d06[_0x7e99('0x1c')],'transfereraccountcode':_0x249d06['origtransfereraccountcode'],'transferercontext':_0x249d06[_0x7e99('0x1d')],'transfererexten':_0x249d06[_0x7e99('0x1e')],'transfererlinkedid':_0x249d06[_0x7e99('0x1f')],'context':_0x249d06[_0x7e99('0x20')],'extension':_0x249d06[_0x7e99('0x21')],'type':_0x7e99('0x3')});if(_[_0x7e99('0x22')](_0x249d06[_0x7e99('0x23')])){_0x249d06=_['assign'](_0x249d06,{'transfereechannel':_0x249d06[_0x7e99('0x24')],'transfereecalleridnum':_0x249d06['transfertargetcalleridnum'],'transfereecalleridname':_0x249d06[_0x7e99('0x17')],'transfereeconnectedlinenum':_0x249d06[_0x7e99('0x25')],'transfereeconnectedlinename':_0x249d06['transfertargetconnectedlinename'],'transfereeaccountcode':_0x249d06['transfertargetaccountcode'],'transfereecontext':_0x249d06[_0x7e99('0x26')],'transfereeexten':_0x249d06[_0x7e99('0x27')],'transfereelinkedid':_0x249d06[_0x7e99('0x28')]});}writeDB(_0x249d06);}catch(_0xddf5dd){utils[_0x7e99('0x10')](util[_0x7e99('0x1')](_0x7e99('0x11'),_0x249d06[_0x7e99('0x12')]),_0xddf5dd);}};
\ No newline at end of file
index 1638c7e..0478c4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f88=['[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','length','[utils][getVoiceQueueByName]','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','client','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','name','interface','[utils][getUser]\x20where:%s','result','getUserByInternal','found','notfound'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x4f88,0x9a));var _0x84f8=function(_0x5eef05,_0x1be989){_0x5eef05=_0x5eef05-0x0;var _0x56d4b8=_0x4f88[_0x5eef05];return _0x56d4b8;};'use strict';var BPromise=require(_0x84f8('0x0'));var jayson=require(_0x84f8('0x1'));var moment=require(_0x84f8('0x2'));var util=require('util');var client=jayson[_0x84f8('0x3')][_0x84f8('0x4')]({'port':0x2329});var logger=require('../../config/logger')(_0x84f8('0x5'));exports[_0x84f8('0x6')]=function(_0x1b35aa,_0x5a230d){logger[_0x84f8('0x6')](_0x1b35aa,_0x5a230d?util[_0x84f8('0x7')](_0x5a230d,{'showHidden':![],'depth':null}):'');};exports[_0x84f8('0x8')]=function(_0x47e5ce,_0x1f1b26){logger[_0x84f8('0x8')](_0x47e5ce,_0x1f1b26?util['inspect'](_0x1f1b26,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x5ca776,_0x211666){logger[_0x84f8('0x9')](_0x5ca776,_0x211666?util['inspect'](_0x211666,{'showHidden':![],'depth':null}):'');};exports[_0x84f8('0xa')]=function(_0x333142,_0x1d9a5e){return client['request'](_0x333142,{'body':_0x1d9a5e})[_0x84f8('0xb')](function(_0x29a1ab){logger['debug'](_0x84f8('0xc'),_0x333142,_0x29a1ab?util[_0x84f8('0x7')](_0x29a1ab,{'showHidden':![],'depth':null}):'');})[_0x84f8('0xd')](function(_0x1ad371){logger[_0x84f8('0x9')](_0x84f8('0xc'),_0x333142,_0x1ad371?util[_0x84f8('0x7')](_0x1ad371,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2904b4){return client[_0x84f8('0xa')](_0x84f8('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0x84f8('0xf'),_0x84f8('0x10')],'where':_0x2904b4,'limit':0x1}})[_0x84f8('0xb')](function(_0x4cb142){logger['debug'](_0x84f8('0x11'),JSON['stringify'](_0x2904b4),_0x4cb142?util[_0x84f8('0x7')](_0x4cb142,{'showHidden':![],'depth':null}):'');return _0x4cb142['result']['length']?_0x4cb142[_0x84f8('0x12')][0x0]:null;});}exports[_0x84f8('0x13')]=function(_0x547077){return new BPromise(function(_0x4eb874,_0x2704b5){if(_0x547077){return getUser({'internal':_0x547077})[_0x84f8('0xb')](function(_0x3c8dba){logger['info']('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x547077,_0x3c8dba?_0x84f8('0x14'):_0x84f8('0x15'));return _0x4eb874(_0x3c8dba);})['catch'](function(_0x591557){logger[_0x84f8('0x9')](_0x84f8('0x16'),_0x591557?util[_0x84f8('0x7')](_0x591557,{'showHidden':![],'depth':null}):'');return _0x4eb874(null);});}return _0x4eb874(null);});};exports[_0x84f8('0x17')]=function(_0x3f7c23){return new BPromise(function(_0x5f9f43,_0x4ec4a3){if(_0x3f7c23){return getUser({'interface':_0x3f7c23})[_0x84f8('0xb')](function(_0xd9cc7){logger[_0x84f8('0x6')](_0x84f8('0x18'),_0x3f7c23,_0xd9cc7?_0x84f8('0x14'):'notfound');return _0x5f9f43(_0xd9cc7);})[_0x84f8('0xd')](function(_0x57da04){logger['error']('[utils][getUserByInterface]',_0x57da04?util[_0x84f8('0x7')](_0x57da04,{'showHidden':![],'depth':null}):'');return _0x5f9f43(null);});}return _0x5f9f43(null);});};exports['getUserByName']=function(_0x2bb33a){return new BPromise(function(_0x2d44ee,_0x1b94e9){if(_0x2bb33a){return getUser({'name':_0x2bb33a})['then'](function(_0x590897){logger['info']('[utils][getUserByName]\x20name:%s\x20%s',_0x2bb33a,_0x590897?'found':'notfound');return _0x2d44ee(_0x590897);})[_0x84f8('0xd')](function(_0x3154ce){logger[_0x84f8('0x9')](_0x84f8('0x19'),_0x3154ce?util[_0x84f8('0x7')](_0x3154ce,{'showHidden':![],'depth':null}):'');return _0x2d44ee(null);});}return _0x2d44ee(null);});};exports[_0x84f8('0x1a')]=function(_0x422f0c){return new BPromise(function(_0x1a5c59,_0x35f0ca){if(_0x422f0c){return client[_0x84f8('0xa')](_0x84f8('0x1b'),{'options':{'raw':!![],'attributes':['id','name',_0x84f8('0x1c'),_0x84f8('0x1d'),_0x84f8('0x1e')],'where':{'name':_0x422f0c},'limit':0x1}})['then'](function(_0x29ae1d){logger[_0x84f8('0x8')]('[utils][getVoiceQueueByName]\x20name:%s',_0x422f0c,_0x29ae1d?util[_0x84f8('0x7')](_0x29ae1d,{'showHidden':![],'depth':null}):'');logger['info']('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x422f0c,_0x29ae1d?'found':_0x84f8('0x15'));return _0x1a5c59(_0x29ae1d[_0x84f8('0x12')][_0x84f8('0x1f')]?_0x29ae1d[_0x84f8('0x12')][0x0]:null);})[_0x84f8('0xd')](function(_0x68b579){logger[_0x84f8('0x9')](_0x84f8('0x20'),_0x68b579?util[_0x84f8('0x7')](_0x68b579,{'showHidden':![],'depth':null}):'');return _0x1a5c59(null);});}return _0x1a5c59(null);});};exports['addTime']=function(_0x564345,_0x4a28c4){return moment(_0x564345)['add'](_0x4a28c4,_0x84f8('0x21'))[_0x84f8('0x22')](_0x84f8('0x23'));};exports[_0x84f8('0x24')]=function(_0x4aa496,_0x17f45f){return moment(_0x4aa496)[_0x84f8('0x25')](_0x17f45f,_0x84f8('0x21'))[_0x84f8('0x22')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x84f8('0x26')]=function(_0xf4785c,_0x40e463){return moment(_0xf4785c)[_0x84f8('0x27')](moment(_0x40e463),_0x84f8('0x21'));};exports[_0x84f8('0x28')]=function(_0x555835,_0x14b964){return parseInt(_0x555835,0xa)+parseInt(_0x14b964,0xa);};exports[_0x84f8('0x29')]=function(){return moment()[_0x84f8('0x22')](_0x84f8('0x23'));};exports['isAfter']=function(_0x5e2523,_0x34aa41){if(_0x34aa41){return moment(_0x5e2523)[_0x84f8('0x2a')](_0x34aa41);}return!![];};exports['isBefore']=function(_0x38ecfb,_0x4e8a21){if(_0x4e8a21){return moment(_0x38ecfb)[_0x84f8('0x2b')](_0x4e8a21);}else if(_0x38ecfb){return!![];}return![];};
\ No newline at end of file
+var _0x4233=['acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','addTime','seconds','format','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','sumTime','isAfter','isBefore','jayson/promise','moment','util','http','../../config/logger','xdr','info','inspect','error','request','debug','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','then','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','getUserByInterface','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue'];(function(_0x49a0ae,_0x396e0b){var _0x5a4a9c=function(_0xcb627){while(--_0xcb627){_0x49a0ae['push'](_0x49a0ae['shift']());}};_0x5a4a9c(++_0x396e0b);}(_0x4233,0x199));var _0x3423=function(_0x28130b,_0x149c07){_0x28130b=_0x28130b-0x0;var _0x29f3fe=_0x4233[_0x28130b];return _0x29f3fe;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x3423('0x0'));var moment=require(_0x3423('0x1'));var util=require(_0x3423('0x2'));var client=jayson['client'][_0x3423('0x3')]({'port':0x2329});var logger=require(_0x3423('0x4'))(_0x3423('0x5'));exports[_0x3423('0x6')]=function(_0x5195d0,_0x480840){logger[_0x3423('0x6')](_0x5195d0,_0x480840?util[_0x3423('0x7')](_0x480840,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x5341ce,_0x2d2256){logger['debug'](_0x5341ce,_0x2d2256?util['inspect'](_0x2d2256,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x8c477a,_0xec82e0){logger[_0x3423('0x8')](_0x8c477a,_0xec82e0?util[_0x3423('0x7')](_0xec82e0,{'showHidden':![],'depth':null}):'');};exports[_0x3423('0x9')]=function(_0x2050c,_0x37cbb2){return client['request'](_0x2050c,{'body':_0x37cbb2})['then'](function(_0x580d44){logger[_0x3423('0xa')](_0x3423('0xb'),_0x2050c,_0x580d44?util[_0x3423('0x7')](_0x580d44,{'showHidden':![],'depth':null}):'');})[_0x3423('0xc')](function(_0x395ae9){logger[_0x3423('0x8')](_0x3423('0xb'),_0x2050c,_0x395ae9?util[_0x3423('0x7')](_0x395ae9,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5bd5cd){return client[_0x3423('0x9')](_0x3423('0xd'),{'options':{'raw':!![],'attributes':['id',_0x3423('0xe'),_0x3423('0xf'),_0x3423('0x10')],'where':_0x5bd5cd,'limit':0x1}})[_0x3423('0x11')](function(_0x24848b){logger[_0x3423('0xa')](_0x3423('0x12'),JSON[_0x3423('0x13')](_0x5bd5cd),_0x24848b?util['inspect'](_0x24848b,{'showHidden':![],'depth':null}):'');return _0x24848b[_0x3423('0x14')][_0x3423('0x15')]?_0x24848b[_0x3423('0x14')][0x0]:null;});}exports[_0x3423('0x16')]=function(_0x28a67e){return new BPromise(function(_0x4c8f41,_0xd8f8c3){if(_0x28a67e){return getUser({'internal':_0x28a67e})[_0x3423('0x11')](function(_0x1be493){logger[_0x3423('0x6')](_0x3423('0x17'),_0x28a67e,_0x1be493?_0x3423('0x18'):_0x3423('0x19'));return _0x4c8f41(_0x1be493);})[_0x3423('0xc')](function(_0x100325){logger[_0x3423('0x8')]('[utils][getUserByInternal]',_0x100325?util[_0x3423('0x7')](_0x100325,{'showHidden':![],'depth':null}):'');return _0x4c8f41(null);});}return _0x4c8f41(null);});};exports[_0x3423('0x1a')]=function(_0x588434){return new BPromise(function(_0xe74972,_0x659908){if(_0x588434){return getUser({'interface':_0x588434})[_0x3423('0x11')](function(_0x3fe1e1){logger[_0x3423('0x6')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x588434,_0x3fe1e1?'found':_0x3423('0x19'));return _0xe74972(_0x3fe1e1);})[_0x3423('0xc')](function(_0x711eb1){logger[_0x3423('0x8')](_0x3423('0x1b'),_0x711eb1?util[_0x3423('0x7')](_0x711eb1,{'showHidden':![],'depth':null}):'');return _0xe74972(null);});}return _0xe74972(null);});};exports['getUserByName']=function(_0x227327){return new BPromise(function(_0x2b40cd,_0x7f0c83){if(_0x227327){return getUser({'name':_0x227327})['then'](function(_0xadd535){logger[_0x3423('0x6')](_0x3423('0x1c'),_0x227327,_0xadd535?'found':_0x3423('0x19'));return _0x2b40cd(_0xadd535);})['catch'](function(_0x4bfe31){logger[_0x3423('0x8')]('[utils][getUserByName]',_0x4bfe31?util[_0x3423('0x7')](_0x4bfe31,{'showHidden':![],'depth':null}):'');return _0x2b40cd(null);});}return _0x2b40cd(null);});};exports[_0x3423('0x1d')]=function(_0x1e1482){return new BPromise(function(_0x5059d6,_0x44ae04){if(_0x1e1482){return client[_0x3423('0x9')](_0x3423('0x1e'),{'options':{'raw':!![],'attributes':['id',_0x3423('0xf'),'type',_0x3423('0x1f'),_0x3423('0x20')],'where':{'name':_0x1e1482},'limit':0x1}})[_0x3423('0x11')](function(_0x4ce3fd){logger[_0x3423('0xa')](_0x3423('0x21'),_0x1e1482,_0x4ce3fd?util[_0x3423('0x7')](_0x4ce3fd,{'showHidden':![],'depth':null}):'');logger['info'](_0x3423('0x22'),_0x1e1482,_0x4ce3fd?_0x3423('0x18'):'notfound');return _0x5059d6(_0x4ce3fd['result']['length']?_0x4ce3fd[_0x3423('0x14')][0x0]:null);})['catch'](function(_0x45a9cc){logger['error']('[utils][getVoiceQueueByName]',_0x45a9cc?util[_0x3423('0x7')](_0x45a9cc,{'showHidden':![],'depth':null}):'');return _0x5059d6(null);});}return _0x5059d6(null);});};exports[_0x3423('0x23')]=function(_0x5cd118,_0x197a6e){return moment(_0x5cd118)['add'](_0x197a6e,'seconds')['format']('YYYY-MM-DD\x20HH:mm:ss');};exports['subtractTime']=function(_0x16dfc1,_0xf4f482){return moment(_0x16dfc1)['subtract'](_0xf4f482,_0x3423('0x24'))[_0x3423('0x25')](_0x3423('0x26'));};exports[_0x3423('0x27')]=function(_0x22380b,_0x44e910){return moment(_0x22380b)[_0x3423('0x28')](moment(_0x44e910),_0x3423('0x24'));};exports[_0x3423('0x29')]=function(_0x29a971,_0x20fd13){return parseInt(_0x29a971,0xa)+parseInt(_0x20fd13,0xa);};exports['now']=function(){return moment()['format'](_0x3423('0x26'));};exports[_0x3423('0x2a')]=function(_0x5d9157,_0xc58bbd){if(_0xc58bbd){return moment(_0x5d9157)[_0x3423('0x2a')](_0xc58bbd);}return!![];};exports[_0x3423('0x2b')]=function(_0x199cd6,_0x45b550){if(_0x45b550){return moment(_0x199cd6)[_0x3423('0x2b')](_0x45b550);}else if(_0x199cd6){return!![];}return![];};
\ No newline at end of file